![]() |
Routines |
| Prev: 6F8E | Up: Map |
|
||||||||||
| 6F99 | LD L,$62 | Byte 0x62 of the puncher's buffer holds his x-coordinate | ||||||||
| 6F9B | LD A,(HL) | Pick this up in A | ||||||||
| 6F9C | DEC L | L=0x61 | ||||||||
| 6F9D | LD D,(HL) | Pick up the puncher's y-coordinate in D | ||||||||
| 6F9E | DEC L | L=0x60 | ||||||||
| 6F9F | LD C,(HL) | Pick up the puncher's animatory state in C | ||||||||
| 6FA0 | SUB $02 | A=x-coordinate of the location two spaces in front of the puncher | ||||||||
| 6FA2 | BIT 7,(HL) | |||||||||
| 6FA4 | JR Z,$6FA8 | |||||||||
| 6FA6 | ADD A,$04 | |||||||||
| 6FA8 | LD E,A | Store the potential victim's x-coordinate in E | ||||||||
| 6FA9 | LD A,($7FFB) | Collect ERIC's status flags from 7FFB | ||||||||
| 6FAC | AND A | Is ERIC doing the punching? | ||||||||
| 6FAD | JR NZ,$6FBE | Jump if so | ||||||||
| 6FAF | LD H,$AC | 0xAC=ERIC | ||||||||
| 6FB1 | CALL $6F00 | Was ERIC punched? | ||||||||
| 6FB4 | JR NC,$6FBE | Jump if not | ||||||||
| 6FB6 | LD DE,$7FFB | 7FFB holds ERIC's status flags | ||||||||
| 6FB9 | EX DE,HL | |||||||||
| 6FBA | SET 4,(HL) | Signal: ERIC was hit | ||||||||
| 6FBC | EX DE,HL | |||||||||
| 6FBD | RET | |||||||||
|
Now we check whether anyone was punched. We start with the three main kids.
|
||||||||||
| 6FBE | LD B,$03 | There are three main kids | ||||||||
| 6FC0 | LD H,$A9 | 0xA9=EINSTEIN | ||||||||
| 6FC2 | CALL $6F00 | Was this main kid punched? | ||||||||
| 6FC5 | JR NC,$6FD2 | Jump if not | ||||||||
| 6FC7 | LD L,$6F | Place the address of the uninterruptible subcommand routine at 6A46 into bytes 0x6F and 0x70 of the victim's character buffer | ||||||||
| 6FC9 | LD (HL),$46 | |||||||||
| 6FCB | INC L | |||||||||
| 6FCC | LD (HL),$6A | |||||||||
| 6FCE | INC L | Initialise the parameter determining how long the character will stay down (in byte 0x71) | ||||||||
| 6FCF | LD (HL),$14 | |||||||||
| 6FD1 | RET | |||||||||
| 6FD2 | DEC H | Next main kid | ||||||||
| 6FD3 | DJNZ $6FC2 | Jump back until three main kids have been considered | ||||||||
|
None of the main kids was hit. What about the little boys?
|
||||||||||
| 6FD5 | LD H,$98 | 0x98=character number of little boy no. 1 | ||||||||
| 6FD7 | LD B,$0B | There are 11 little boys | ||||||||
| 6FD9 | CALL $6F00 | Was this little boy hit? | ||||||||
| 6FDC | JR C,$6FC7 | Knock him over if so | ||||||||
| 6FDE | INC H | Next little boy | ||||||||
| 6FDF | DJNZ $6FD9 | Jump back until all 11 little boys have been considered | ||||||||
| 6FE1 | RET | |||||||||
| Prev: 6F8E | Up: Map |