![]() |
Routines |
| Prev: DE4C | Up: Map | Next: DEB7 |
|
||||||||
|
The fifth byte of an object's data set (held in the object buffer at EB89) holds its state, which can change. For example a chest can be closed (state = 1) and be moved to state 2 (open).
This routine identifies the state of the object and copies the 4 bytes for this state into the additional buffer at EB8D.
|
||||||||
| DE7F | LD ($EB82),HL | Store address pointer (data at 736F) | ||||||
| DE82 | LD DE,$EB85 | Copy the first 8 bytes of this object's data into buffer at EB85 | ||||||
| DE85 | LD BC,$0008 | |||||||
| DE88 | LDIR | |||||||
| DE8A | LD A,($EB89) | State number of this object. All standard object 'sets' start at 1 | ||||||
| DE8D | LD C,A | |||||||
| DE8E | CP $00 | |||||||
| DE90 | JR Z,$DEA9 | |||||||
| DE92 | DEC A | Decrement state number | ||||||
| DE93 | CP $00 | Is this the object's current state? | ||||||
| DE95 | JR Z,$DE9E | |||||||
| DE97 | LD DE,$0004 | If so, skip 4 bytes for each state the object has advanced to | ||||||
| DE9A | LD B,A | |||||||
| DE9B | ADD HL,DE | |||||||
| DE9C | DJNZ $DE9B | |||||||
|
Current object state found:
|
||||||||
| DE9E | LD B,$04 | Copy the 4 data bytes for this object state into the additional buffer at EB8D | ||||||
| DEA0 | LD DE,$EB8D | |||||||
| DEA3 | LD A,(HL) | |||||||
| DEA4 | LD (DE),A | |||||||
| DEA5 | INC HL | |||||||
| DEA6 | INC DE | |||||||
| DEA7 | DJNZ $DEA3 | |||||||
|
Skip over any additional data sets for this object
|
||||||||
| DEA9 | LD A,($EB8C) | Get the count of additional 4 byte data sets for this object | ||||||
| DEAC | SUB C | Subtract the current state number, whose data has already been copied over to the buffer | ||||||
| DEAD | JR Z,$DEB6 | If zero, there's no more data for this set - jump straight to RET | ||||||
| DEAF | LD DE,$0004 | ...Otherwise, skip over the remaining object states | ||||||
| DEB2 | LD B,A | |||||||
| DEB3 | ADD HL,DE | |||||||
| DEB4 | DJNZ $DEB3 | |||||||
|
This entry point is used by the routine at DE4C.
|
||||||||
| DEB6 | RET | Object set now dealt with | ||||||
| Prev: DE4C | Up: Map | Next: DEB7 |