Prev: 37003 Up: Map Next: 37116
37026: Routine at 90A2
Used by the routine at Initialise_SubGame.
37026 LD IX,25152 IX=25152.
37030 LD HL,(39364) HL=*ActiveSubGameData.
37033 LD A,(HL) A=*HL.
37034 CP 0 Jump to 37066 if *A is equal to 0.
37036 JR Z,37066
37038 LD B,A Split *HL in half, the upper four bits into A and the lower four bits into B.
37039 SRL B
37041 SRL B
37043 SRL B
37045 SRL B
37047 AND %00001111
37049 RLCA
37050 RLCA
37051 RLCA
37052 PUSH HL Stash HL, BC and AF on the stack.
37053 PUSH BC
37054 PUSH AF
37055 CALL 37096 Call 37096.
37058 POP AF Restore AF and BC from the stack.
37059 POP BC
37060 DJNZ 37053 Decrease counter by one and loop back to 37053 until counter is zero.
37062 POP HL Restore HL from the stack.
37063 INC HL Increment HL by one.
37064 JR 37033 Jump to 37033.
37066 LD IX,30720 IX=30720.
37070 LD HL,24576 HL=ShadowBuffer.
37073 LD BC,768 BC=0768.
37076 LD DE,6 Set an increment count in DE for below.
37079 LD (IX+1),L Write L to *IX+1.
37082 LD (IX+0),H Write H to *IX+0.
37085 INC IX Increment IX by two.
37087 INC IX
37089 ADD HL,DE HL+=0006.
37090 DEC BC Decrease BC by one.
37091 LD A,C Jump back to 37079 until BC is zero.
37092 OR B
37093 JR NZ,37079
37095 RET Return.
37096 LD DE,(39366) DE=*39366.
37100 ADD A,E A+=E.
37101 JR NC,37104 Jump to 37104 if BC is higher.
37103 INC D Increment D by one.
37104 LD (IX+2),A Write A to *IX+2.
37107 LD (IX+3),D Write D to *IX+3.
37110 LD DE,6 IX+=0006.
37113 ADD IX,DE
37115 RET Return.
Prev: 37003 Up: Map Next: 37116