Routines |
Prev: CA65 | Up: Map | Next: CAB4 |
Used by the routine at C8DC.
|
||||
Door opening/closing has been triggered. Jump from C8EF if bit 5 (32) of item properties byte (EB4E) is set, after Maroc has bumped into a door handle. Check made using collision check routine at DFCD.
Can be triggered by:
|
||||
CA8E | LD HL,($EB51) | Door graphic address pointer in table at 97C3 | ||
CA91 | LD E,(HL) | |||
CA92 | INC HL | |||
CA93 | LD D,(HL) | Address pointer to actual door graphics, e.g. 9D38 | ||
CA94 | EX DE,HL | Swap into HL register pair | ||
CA95 | INC HL | |||
CA96 | LD B,(HL) | Get X co-ordinate pixel offset for graphic tile | ||
CA97 | LD A,($EAD3) | Get graphic's X co-ordinate pixel position on screen | ||
CA9A | ADD A,B | Add the pixel offset for the graphic tile | ||
CA9B | LD D,A | Store in D register | ||
CA9C | LD A,($EAD2) | Get vertical (Y) pixel co-ordinate | ||
CA9F | SUB $10 | The vertical co-ordinate starts at the bottom of the door, move up a bit to get to the door handle area | ||
CAA1 | LD E,A | Store in E register | ||
CAA2 | LD C,$01 | Collision/event type to check (1 = Door being opened/closed) | ||
CAA4 | CALL $DFCD | Run a collision check (item/Maroc vs door handle) | ||
CAA7 | CP $00 | Was there a collision? | ||
CAA9 | JR NZ,$CAF6 | If not, jump out of this routine | ||
A door handle has been touched so initialize door opening/closing
|
||||
CAAB | LD A,($EB4E) | Door properties byte | ||
CAAE | AND $0F | Keep bits 0-3 | ||
CAB0 | OR $40 | Set bit 6 (indicates door is now opening or closing) | ||
CAB2 | JR $CAF3 |
Prev: CA65 | Up: Map | Next: CAB4 |