Routines |
Prev: 29153 | Up: Map | Next: 29278 |
Continues from 29148.
|
||||||||||||
29160 | LD L,105 | Replace the address of the interruptible subcommand routine at 29148 in bytes 105 and 106 of the teacher's buffer with 29175 (below) | ||||||||||
29162 | LD (HL),247 | |||||||||||
29164 | LD L,107 | Wiping a blackboard requires 32 distinct actions (in 8 groups of 4: two paces forward, arm up, arm down) | ||||||||||
29166 | LD (HL),32 | |||||||||||
29168 | INC L | Store the x-coordinate of the rightmost column of the blackboard (which will be wiped first) in byte 108 of the teacher's buffer | ||||||||||
29169 | LD A,E | |||||||||||
29170 | ADD A,7 | |||||||||||
29172 | LD (HL),A | |||||||||||
29173 | INC L | Store the y-coordinate of the top row of the blackboard in byte 109 of the teacher's buffer | ||||||||||
29174 | LD (HL),D | |||||||||||
After the initial call to this routine, each subsequent call enters here.
|
||||||||||||
29175 | LD L,107 | Decrement the number of board-wiping actions remaining | ||||||||||
29177 | DEC (HL) | |||||||||||
29178 | BIT 7,(HL) | Has the teacher finished wiping the board? | ||||||||||
29180 | JR NZ,29264 | Jump if so | ||||||||||
29182 | CALL 25108 | Update the SRB for the teacher's current location | ||||||||||
29185 | LD L,107 | Is the teacher midstride or is his arm raised? | ||||||||||
29187 | BIT 0,(HL) | |||||||||||
29189 | JR Z,29248 | Jump if so | ||||||||||
29191 | BIT 1,(HL) | Is the teacher ready to raise his arm (and wipe)? | ||||||||||
29193 | JR Z,29199 | Jump if so | ||||||||||
29195 | INC A | A=animatory state of the teacher midstride | ||||||||||
29196 | JP 25008 | Update the teacher's animatory state and update the SRB | ||||||||||
The teacher is ready to raise his arm and wipe a column of the board.
|
||||||||||||
29199 | ADD A,5 | A=animatory state of the teacher with his arm raised | ||||||||||
29201 | CP 72 | Are we actually dealing with a teacher? | ||||||||||
29203 | JR NC,29207 | Jump if so | ||||||||||
29205 | ADD A,8 | If ANGELFACE or BOY WANDER were wiping the board, A would now hold the animatory state of the boy with his arm raised | ||||||||||
29207 | CALL 25008 | Update the teacher's animatory state and update the SRB | ||||||||||
29210 | LD L,108 | E=x-coordinate of the blackboard column to wipe | ||||||||||
29212 | LD E,(HL) | |||||||||||
29213 | DEC (HL) | Decrement the blackboard column x-coordinate | ||||||||||
29214 | INC L | D=y-coordinate of the top row of the blackboard column to wipe | ||||||||||
29215 | LD D,(HL) | |||||||||||
29216 | CALL 28807 | Update the SRB for the upper and lower character squares of the blackboard column that will be wiped | ||||||||||
29219 | INC D | |||||||||||
29220 | CALL 28807 | |||||||||||
29223 | LD A,(DE) | L=skool UDG reference for the lower character square of the blackboard column | ||||||||||
29224 | LD L,A | |||||||||||
29225 | ADD A,8 | E=skool UDG reference for the upper character square of the blackboard column | ||||||||||
29227 | LD E,A | |||||||||||
29228 | LD H,128 | Point HL at the base address of the UDG data for the lower character square of the blackboard column, and DE at the base address of the UDG data for the upper character square of the blackboard column | ||||||||||
29230 | CP 233 | |||||||||||
29232 | JR NC,29236 | |||||||||||
29234 | LD H,136 | |||||||||||
29236 | LD D,H | |||||||||||
29237 | LD B,8 | There are 8 bytes in a UDG | ||||||||||
29239 | LD A,255 | All bits set means clean (no chalk) | ||||||||||
29241 | LD (HL),A | Wipe the blackboard column clean by altering the skool UDG data directly | ||||||||||
29242 | LD (DE),A | |||||||||||
29243 | INC H | |||||||||||
29244 | INC D | |||||||||||
29245 | DJNZ 29241 | |||||||||||
29247 | RET | |||||||||||
The teacher is midstride or his arm is raised.
|
||||||||||||
29248 | AND 248 | A=base animatory state of the teacher | ||||||||||
29250 | CP 72 | Are we actually dealing with a teacher? | ||||||||||
29252 | JR NC,29256 | Jump if so | ||||||||||
29254 | AND 240 | If ANGELFACE or BOY WANDER were wiping the board, A would now hold the base animatory state of the boy | ||||||||||
29256 | BIT 1,(HL) | Is the teacher's arm raised? | ||||||||||
29258 | JR Z,29261 | Jump if so | ||||||||||
29260 | DEC E | The teacher was midstride, so move him forward to the next blackboard column | ||||||||||
29261 | JP 25008 | Update the teacher's animatory state and location and update the SRB | ||||||||||
The teacher has finished wiping the board.
|
||||||||||||
29264 | CALL 28968 | A=identifier of the blackboard the teacher is next to | ||||||||||
29267 | LD L,A | HL=32748 (Reading Room blackboard), 32750 (White Room blackboard), or 32752 (Exam Room blackboard) | ||||||||||
29268 | LD H,127 | |||||||||||
29270 | LD (HL),1 | The first clean pixel column is now column no. 1 | ||||||||||
29272 | INC L | Signal: no one has written on this blackboard | ||||||||||
29273 | LD (HL),0 | |||||||||||
29275 | JP 25252 | Terminate this interruptible subcommand |
Prev: 29153 | Up: Map | Next: 29278 |