Prev: 31148 Up: Map Next: 31252
31150: Make any female characters near a mouse start or continue jumping
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 or 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.
Input
H Mouse's character number (198, 199, 206-208, 212)
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 Next: 31252