Prev: DAB1 Up: Map Next: DB2E
DABF: Routine at DABF
Used by the routines at D352 and Handler_Bombs.
DABF LD A,($E75D) A=*Tile_Horizontal_Position.
DAC2 DEC A Decrease A by one.
DAC3 LD ($E75F),A Write A to *Tile_Horizontal_Coordinate.
DAC6 LD A,($E75E) A=*Tile_Vertical_Position.
DAC9 DEC A Decrease A by one.
DACA LD ($E760),A Write A to *Tile_Vertical_Coordinate.
DACD LD B,$04 B=04.
DACF HALT Halt operation (suspend CPU until the next interrupt).
DAD0 PUSH BC Stash BC on the stack.
DAD1 LD A,($E75F) B=*Tile_Horizontal_Coordinate.
DAD4 LD B,A
DAD5 LD A,($E760) C=*Tile_Vertical_Coordinate.
DAD8 LD C,A
DAD9 CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
DADC PUSH HL Stash HL on the stack.
DADD LD A,$00 A=00.
DADF LD B,$08 B=08.
DAE1 PUSH BC Stash BC and HL on the stack.
DAE2 PUSH HL
DAE3 LD B,$04 B=04.
DAE5 LD (HL),A Write A to *HL.
DAE6 INC HL Increment HL by one.
DAE7 DJNZ $DAE5 Decrease counter by one and loop back to DAE5 until counter is zero.
DAE9 POP HL Restore HL and BC from the stack.
DAEA POP BC
DAEB INC H Increment H by one.
DAEC DJNZ $DAE1 Decrease counter by one and loop back to DAE1 until counter is zero.
DAEE POP HL Restore HL from the stack.
DAEF CALL Calculate_AttributeAddress Call Calculate_AttributeAddress.
DAF2 LD A,$47 A=47.
DAF4 LD B,$04 B=04.
DAF6 LD (DE),A Write A to *DE.
DAF7 INC DE Increment DE by one.
DAF8 DJNZ $DAF6 Decrease counter by one and loop back to DAF6 until counter is zero.
DAFA POP BC Restore BC from the stack.
DAFB LD HL,$E75F HL=Tile_Horizontal_Coordinate.
DAFE INC (HL) Increment *HL by one.
DAFF DJNZ $DAD0 Decrease counter by one and loop back to DAD0 until counter is zero.
DB01 LD A,($D833) Return if *D833 is equal to 00.
DB04 CP $00
DB06 RET Z
DB07 LD B,$03 B=03.
DB09 PUSH BC Stash BC on the stack.
DB0A LD A,$05 A=05.
DB0C LD C,$1E C=1E.
DB0E LD B,$28 B=28.
DB10 SLA B Shift B left (with carry).
DB12 DJNZ $DB12 Decrease counter by one and loop back to DB12 until counter is zero.
DB14 XOR %00010000 Flip bit 4.
DB16 OUT ($FE),A Set border to the colour held by A.
DB18 DEC C Decrease C by one.
DB19 JR NZ,$DB0E Jump to DB0E if C is not zero.
DB1B LD C,$14 C=14.
DB1D LD B,$3C B=3C.
DB1F SLA B Shift B left (with carry).
DB21 DJNZ $DB21 Decrease counter by one and loop back to DB21 until counter is zero.
DB23 XOR %00010000 Flip bit 4.
DB25 OUT ($FE),A Set border to the colour held by A.
DB27 DEC C Decrease C by one.
DB28 JR NZ,$DB1D Jump to DB1D if C is not zero.
DB2A POP BC Restore BC from the stack.
DB2B DJNZ $DB09 Decrease counter by one and loop back to DB09 until counter is zero.
DB2D RET Return.
Prev: DAB1 Up: Map Next: DB2E