![]() |
Routines |
| Prev: 25026 | Up: Map | Next: 25186 |
|
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 | Next: 25186 |