![]() |
Routines |
Prev: 9AE1 | Up: Map | Next: 9B4D |
Used by the routine at 99E3.
|
||||
9AE5 | PUSH DE | Save DE | ||
9AE6 | LD A,($A248) | Set A to the x-position of explosion | ||
9AE9 | AND $07 | Set A to the bit position of the explosion (bits2-0) { | ||
9AEB | LD E,A | Set HL to the address pointer of offset for sprite movement | ||
9AEC | LD D,$00 | |||
9AEE | ADD HL,DE | |||
9AEF | LD E,(HL) | Set DE to the corresponding offset based on the position of the sprite | ||
9AF0 | LD D,$00 | |||
9AF2 | POP HL | Recover HL (graphics data of the sprite) | ||
9AF3 | ADD HL,DE | Set HL to the address of the corresponding sprite based on the offset | ||
9AF4 | LD A,($A248) | Computes at HL the address into room graphic data buffer for the entity | ||
9AF7 | SRL A | |||
9AF9 | SRL A | |||
9AFB | SRL A | |||
9AFD | LD ($A248),A | |||
9B00 | PUSH HL | |||
9B01 | LD A,($A249) | |||
9B04 | LD L,A | |||
9B05 | LD H,$00 | |||
9B07 | ADD HL,HL | |||
9B08 | ADD HL,HL | |||
9B09 | ADD HL,HL | |||
9B0A | ADD HL,HL | |||
9B0B | ADD HL,HL | |||
9B0C | LD DE,$E8FF | |||
9B0F | ADD HL,DE | |||
9B10 | LD A,($A248) | |||
9B13 | LD E,A | |||
9B14 | LD D,$00 | |||
9B16 | ADD HL,DE | |||
9B17 | EX DE,HL | Exchange DE and HL | ||
9B18 | POP HL | Recover HL (the address of the corresponding sprite based on the offset) | ||
9B19 | PUSH DE | Save DE | ||
9B1A | LD A,($A24A) | Set A to the width of the sprite (in bytes) | ||
9B1D | LD ($9B3D),A | Configure LD opcode at 9B3C to set B register to the width of the sprite | ||
9B20 | LD A,($A24B) | Set A to the height of the sprite (in pixels) | ||
9B23 | LD ($9B39),A | Configure LD opcode at 9B38 to set B register to the height of the sprite | ||
9B26 | EX DE,HL | Exchange DE and HL | ||
9B27 | LD A,($A1CC) | Check bit for Graphic Data Select | ||
9B2A | BIT 7,A | |||
9B2C | JP Z,$9B33 | Jump if graphic data is based in animation offsets | ||
9B2F | LD DE,($A1CD) | Set DE to the graphic data for static (non animated) sprite | ||
Draw the sprite
|
||||
9B33 | LD ($A25E),DE | |||
9B37 | POP HL | Restore HL | ||
9B38 | LD B,$00 | Set B to the width of the sprite | ||
9B3A | PUSH BC | Save BC and HL | ||
9B3B | PUSH HL | |||
9B3C | LD B,$00 | Set B to the height of the sprite | ||
9B3E | LD A,(DE) | Set A to the graphic data to copy | ||
9B3F | LD (HL),A | Copy graphics data to the room buffer | ||
9B40 | INC DE | Increment sprite graphic data and room graphic data destination | ||
9B41 | INC HL | |||
9B42 | DJNZ $9B3E | Jump back if the are more sprite rows o draw | ||
9B44 | POP HL | Restore HL | ||
9B45 | LD BC,$0020 | Increment one row for the room graphic data | ||
9B48 | ADD HL,BC | |||
9B49 | POP BC | Restore BC | ||
9B4A | DJNZ $9B3A | Jump back until all rows drawn | ||
9B4C | RET |
Prev: 9AE1 | Up: Map | Next: 9B4D |