![]() |
Routines |
Prev: 31148 | Up: Map |
Used by the routine at 31254. Does nothing if the mouse is off-screen. Otherwise, for each female character that is facing the mouse and within five spaces to the left of right of it, either (a) makes her stand on a chair or start jumping if she isn't already, or (b) makes her stay on the chair or keep jumping for a little longer.
|
|||||||||
31150 | LD A,(32767) | A=leftmost column of the play area on screen | |||||||
31153 | LD B,A | Copy this to B | |||||||
31154 | LD L,1 | Point HL at byte 1 of the mouse's buffer | |||||||
31156 | LD A,(HL) | A=mouse's x-coordinate | |||||||
31157 | LD E,A | Copy this to E | |||||||
31158 | SUB B | ||||||||
31159 | INC A | ||||||||
31160 | CP 32 | Is this mouse off-screen? | |||||||
31162 | RET NC | Return if so | |||||||
31163 | INC L | L=2 | |||||||
31164 | LD D,(HL) | D=mouse's y-coordinate | |||||||
31165 | LD H,183 | 183=little girl no. 1 | |||||||
31167 | LD B,7 | There are 7 little girls to check | |||||||
31169 | CALL 31181 | Make them start jumping if necessary | |||||||
31172 | LD H,204 | 204=MISS TAKE | |||||||
31174 | INC B | B=1 | |||||||
31175 | CALL 31181 | Make MISS TAKE start jumping if necessary | |||||||
31178 | LD H,209 | 209=HAYLEY | |||||||
31180 | INC B | B=1 | |||||||
At this point H holds the number of the first female character to check, and B the number of characters to check (for proximity to a mouse).
|
|||||||||
31181 | LD L,2 | Point HL at byte 2 of the female character's buffer | |||||||
31183 | LD A,D | A=mouse's y-coordinate | |||||||
31184 | SUB (HL) | Subtract that of the female character under consideration | |||||||
31185 | JR Z,31197 | Jump if the female character is standing on the same floor as the mouse | |||||||
31187 | DEC A | Is the female character one level above the mouse? | |||||||
31188 | JR NZ,31248 | Jump ahead to consider the next character if not | |||||||
31190 | LD L,18 | Pick up the MSB of any uninterruptible subcommand routine address in bytes 17 and 18 of the character's buffer | |||||||
31192 | LD A,(HL) | ||||||||
31193 | CP 121 | Is this character jumping (121=MSB of 31078 or 31092)? | |||||||
31195 | JR NZ,31248 | Jump ahead to consider the next character if not | |||||||
31197 | LD L,1 | Point HL at byte 1 of the character's buffer | |||||||
31199 | LD A,(HL) | A=female character's x-coordinate | |||||||
31200 | SUB E | Subtract that of the mouse | |||||||
31201 | LD L,0 | Point HL at byte 0 of the character's buffer | |||||||
31203 | JR Z,31225 | Jump if the girl is standing right where the mouse is | |||||||
31205 | JR NC,31217 | Jump if the girl is standing to the right of the mouse | |||||||
31207 | CP 251 | Is the girl within 5 spaces to the left of the mouse? | |||||||
31209 | JR C,31248 | Jump ahead to consider the next character if not | |||||||
31211 | BIT 7,(HL) | Is the female character facing left? | |||||||
31213 | JR Z,31248 | Jump ahead to consider the next character if so | |||||||
31215 | JR 31225 | ||||||||
31217 | CP 6 | Is the girl within 5 spaces to the right of the mouse? | |||||||
31219 | JR NC,31248 | Jump ahead to consider the next character if not | |||||||
31221 | BIT 7,(HL) | Is the female character facing right? | |||||||
31223 | JR NZ,31248 | Jump ahead to consider the next character if so | |||||||
The female character is located within 5 spaces of the mouse, and is facing it. Figure out whether she's already jumping, or can start jumping.
|
|||||||||
31225 | LD L,18 | Pick up the MSB of any uninterruptible subcommand routine address in bytes 17 and 18 of the female character's buffer | |||||||
31227 | LD A,(HL) | ||||||||
31228 | CP 121 | Set the zero flag if the routine address is 31078 or 31092 (i.e. the character is already jumping) | |||||||
31230 | INC HL | Point HL at byte 19 of the character's buffer | |||||||
31231 | JR NZ,31237 | Jump if the character is not jumping | |||||||
31233 | SET 4,(HL) | Otherwise ensure this character continues jumping for a little longer by setting the counter in byte 19 to at least 16 | |||||||
31235 | JR 31248 | Jump ahead to consider the next character | |||||||
31237 | AND A | Is there an uninterruptible subcommand routine address other than 31078 or 31092 in bytes 17 and 18 of the character's buffer (meaning she is otherwise occupied)? | |||||||
31238 | JR NZ,31248 | Jump ahead to consider the next character if so | |||||||
The female character is not jumping at the moment. Make her start.
|
|||||||||
31240 | LD (HL),21 | Set the delay parameter at byte 19 determining how long the female character will jump up and down | |||||||
31242 | DEC L | ||||||||
31243 | LD (HL),121 | Place the address of the uninterruptible subcommand routine at 31092 into bytes 17 and 18 of the female character's buffer | |||||||
31245 | DEC L | ||||||||
31246 | LD (HL),116 | ||||||||
31248 | INC H | Next female character | |||||||
31249 | DJNZ 31181 | Jump back until all the characters have been checked | |||||||
31251 | RET |
Prev: 31148 | Up: Map |