![]() |
Routines |
Prev: 25026 | Up: Map |
Used by the routine at 28160.
|
|||||||
25080 | LD B,8 | 8 columns will be scrolled on | |||||
25082 | PUSH BC | Save the column counter | |||||
25083 | LD HL,23198 | First shift the attributes one place to the right | |||||
25086 | LD DE,23199 | ||||||
25089 | LD BC,671 | ||||||
25092 | LDDR | ||||||
25094 | CALL 63561 | Scroll the display file one character square to the right | |||||
25097 | DEC A | Adjust the leftmost column of the play area now on screen (held at 32767) | |||||
25098 | LD (32767),A | ||||||
25101 | LD HL,5120 | H=20 (bottom row of the screen), L=0 (column at the far left) | |||||
25104 | PUSH HL | ||||||
25105 | CALL 24684 | Print the play area character square at row H, column L=0 | |||||
25108 | POP HL | ||||||
25109 | DEC H | Next row up | |||||
25110 | JP P,25104 | Jump back until all 21 squares in the column have been printed | |||||
25113 | POP BC | Restore the column counter to B | |||||
25114 | DJNZ 25082 | Jump back until 8 columns have been scrolled on | |||||
The screen has been scrolled right 8 columns. Check whether any of the minor characters may be teleported without us noticing.
|
|||||||
25116 | LD A,(32767) | A=leftmost column of the play area now on screen | |||||
25119 | LD B,4 | 4 little girls, starting with 186=little girl no. 4 | |||||
25121 | LD H,186 | ||||||
25123 | CP 112 | Was the skool gate in the middle of the screen before scrolling? | |||||
25125 | JR Z,25134 | Jump if so (to consider teleporting little girls 4-7) | |||||
25127 | CP 72 | Was the boys' skool door in the middle of the screen before scrolling? | |||||
25129 | RET NZ | Return if not | |||||
25130 | LD H,183 | 183=little girl no. 1 | |||||
The next section of code moves certain off-screen minor characters straight to their destination. Sneaky! This entry point is used by the routine at 25026 with H=190 (little boy no. 1).
|
|||||||
25132 | LD B,3 | ||||||
25134 | LD L,29 | Bit 3 of byte 29 is set if the character should be moved immediately to the next destination in his command list | |||||
25136 | BIT 3,(HL) | ||||||
25138 | JR Z,25182 | Jump if this character should not be 'teleported' | |||||
25140 | RES 3,(HL) | Reset bit 3 now, so that this character is not considered for teleportation again during this lesson | |||||
25142 | DEC L | L=28 | |||||
25143 | LD D,(HL) | Collect the address reached in the command list into DE | |||||
25144 | DEC L | ||||||
25145 | LD E,(HL) | ||||||
25146 | LD A,(DE) | A=LSB of this address | |||||
25147 | SUB 100 | Is this the address of the routine at 25700? | |||||
25149 | JR NZ,25182 | Jump if not | |||||
25151 | DEC L | L=26 | |||||
25152 | INC DE | Point DE at the location coordinates (the parameters of 25700 in the command list) | |||||
25153 | INC DE | ||||||
25154 | LD (HL),D | Store this address in bytes 25 and 26 of the character's buffer | |||||
25155 | DEC L | ||||||
25156 | LD (HL),E | ||||||
25157 | DEC L | L=24 | |||||
25158 | LD (HL),A | Fill bytes 1-24 of the character's buffer with zeroes | |||||
25159 | DEC L | ||||||
25160 | JR NZ,25158 | ||||||
25162 | LD A,(HL) | Set the character's animatory state to its base value (cancelling any midstride or knockout) | |||||
25163 | AND 248 | ||||||
25165 | LD (HL),A | ||||||
25166 | INC L | L=1 | |||||
25167 | CALL 25188 | Bring the location coordinates from the command list into bytes 1 and 2 of the buffer, effecting the teleportation | |||||
25170 | LD E,(HL) | Collect the character's new coordinates into DE | |||||
25171 | INC L | ||||||
25172 | LD D,(HL) | ||||||
25173 | LD L,5 | Copy these coordinates into bytes 5 and 6 of the buffer, which normally hold the character's destination; this is to let the routine at 25700 know it has nothing left to do | |||||
25175 | LD (HL),E | ||||||
25176 | INC L | ||||||
25177 | LD (HL),D | ||||||
25178 | LD L,29 | Reset bit 0 of byte 29, cancelling any pending request to restart the command list | |||||
25180 | RES 0,(HL) | ||||||
25182 | INC H | Next character | |||||
25183 | DJNZ 25134 | Jump back until all characters have been done | |||||
25185 | RET |
Prev: 25026 | Up: Map |