Routines

63801: Deal with MR WACKER's journey to a window


This is a continuation of the routine at 63586

H 200 (MR WACKER)

63801 2E15 LD L,21
63803 7E LD A,(HL) A=x-coordinate of window to be opened (93 or 91)
63804 2E01 LD L,1
63806 BE CP (HL) Has MR WACKER reached the window yet?
63807 C22064 JP NZ,25632 Jump if not
63810 CDB461 CALL 25012 Update SRB for MR WACKER's current animatory state and location
63813 F607 OR 7 A=animatory state of MR WACKER with arm up
63815 CD4677 CALL 30534 Put address 63818 in buffer and update SRB
63818 2E11 LD L,17 Place address 63830 into bytes 17 and 18 of MR WACKER's buffer
63820 3656 LD (HL),86
63822 0601 LD B,1 B=1 (open window)
63824 2E16 LD L,22
63826 7E LD A,(HL) Pick up the window identifier (64/128) in A
63827 C3BF70 JP 28863 Open window, put WACKER's arm down
63830 CDB461 CALL 25012 Update SRB for MR WACKER's current animatory state and location
63833 EE80 XOR 128 Turn WACKER round
63835 CD4677 CALL 30534 Put address 63838 in buffer, update SRB
63838 2E00 LD L,0
63840 CB46 BIT 0,(HL) Is MR WACKER midstride?
63842 C2FD63 JP NZ,25597 Jump if so
63845 2E13 LD L,19
63847 7E LD A,(HL) A=MR WACKER's x-coordinate before he went off to the window
63848 2E01 LD L,1
63850 BE CP (HL) Is WACKER at his pre-window-opening position?
63851 C22064 JP NZ,25632 Jump if not
63854 2E12 LD L,18 Zero out the address of the controlling routine in bytes 17 and 18 of MR WACKER's buffer
63856 3600 LD (HL),0
63858 C3A075 JP 30112 Restore WACKER's original animatory state and update SRB