Routines |
Prev: F846 | Up: Map | Next: F8AE |
Used by the routine at F8AE. Initialises the animatory states, locations and command list addresses for characters 0xDE-0xE6 for the next game mode.
|
||||||||
F87E | LD C,A | Point HL at the last byte in the set of initialisation parameters for the current game mode for character 0xDE (see DE20) | ||||||
F87F | ADD A,A | |||||||
F880 | ADD A,C | |||||||
F881 | ADD A,A | |||||||
F882 | ADD A,$25 | |||||||
F884 | LD L,A | |||||||
F885 | LD H,$DE | |||||||
F887 | LD D,H | Point DE at byte 0x1F of the character's buffer | ||||||
F888 | LD E,$1F | |||||||
F88A | LD A,(HL) | Pick up the last byte in the set of initialisation parameters (the MSB of a command list address, or 1 if we're dealing with Sam) | ||||||
F88B | AND A | Is there a command list address (or 1) here? | ||||||
F88C | JR Z,$F8A7 | Jump if not | ||||||
F88E | XOR A | Prepare A for filling parts of the character's buffer with zeroes | ||||||
F88F | PUSH HL | Save the pointer to the initialisation parameters | ||||||
F890 | LD BC,$0702 | B=7, C=2 | ||||||
F893 | LD (DE),A | Fill bytes 0x19-0x1F of the character's buffer with zeroes | ||||||
F894 | DEC E | |||||||
F895 | DJNZ $F893 | |||||||
F897 | LDDR | Copy the command list address (or message number and 1 if dealing with Sam) into bytes 0x17 and 0x18 of the character's buffer | ||||||
F899 | LD BC,$1204 | B=18, C=4 | ||||||
F89C | LD (DE),A | Fill bytes 0x05-0x16 of the character's buffer with zeroes | ||||||
F89D | DEC E | |||||||
F89E | DJNZ $F89C | |||||||
F8A0 | LDD | Copy the z-coordinate (or y-coordinate of the topmost row of the play area on screen if dealing with Sam) into byte 0x04 of the character's buffer | ||||||
F8A2 | LD (DE),A | Reset all flags in byte 0x03 of the character's buffer | ||||||
F8A3 | DEC E | Point DE at byte 0x02 of the character's buffer | ||||||
F8A4 | LDDR | Copy the x- and y-coordinates and animatory state (or, if dealing with Sam, the x-coordinate of the leftmost column of the play area on screen, 32 or 34, and 0) into bytes 0x00-0x02 of the character's buffer | ||||||
F8A6 | POP HL | Restore the pointer to the initialisation parameters to HL | ||||||
F8A7 | INC H | Next character | ||||||
F8A8 | LD A,H | Have we initialised all the character buffers yet? | ||||||
F8A9 | CP $E7 | |||||||
F8AB | JR NZ,$F887 | Jump back if not | ||||||
F8AD | RET |
Prev: F846 | Up: Map | Next: F8AE |