Prev: B4F0 Up: Map Next: B58E
B549: Draws the debris
Used by the routine at animate_hero_car.
draw_debris B549 LD A,$00 A = <self modified>
B54B AND A Set flags
B54C RET Z Return if zero -- no debris?
B54D DEC A Decrement
B54E LD ($B54A),A Self modify 'LD A' above
B551 RLCA DE = A * 2 -- builds an offset
B552 LD E,A
B553 LD D,$00
B555 LD ($B571),DE Self modify 'LD HL' below
B559 LD B,$03 3 iterations
B55B LD HL,$0000 HL = <self modified> by B503 -- an entry in debris_table_ce33
dd_loop B55E PUSH BC Preserve BC
B55F LD E,(HL) Load an address
B560 INC HL
B561 LD D,(HL)
B562 INC HL
B563 PUSH HL Preserve HL
B564 LD A,(DE) A = (*DE + 1) & 3
B565 INC A
B566 AND $03
B568 LD (DE),A *DE = A -- writes back into table
B569 RLCA C = A * 12
B56A RLCA
B56B LD C,A
B56C RLCA
B56D ADD A,C
B56E LD C,A
B56F INC DE DE++ -- advance to next byte in table
B570 LD HL,$0000 HL = <self modified> above
B573 LD B,H B = H -- H is zero so BC = C
B574 ADD HL,DE HL += DE -- DE is ptr to table, HL is offset
B575 LD D,(HL) DE = wordat(HL)
B576 INC HL
B577 LD E,(HL)
B578 LD HL,$CEAA Address of bitmap_debris_1/2/3/4
B57B ADD HL,BC
B57C LD BC,$0601 B = height, C = ?
B57F EXX Bank
B580 LD BC,$0000 B = 0
B583 LD E,$01 E = 1
B585 EXX Unbank
B586 CALL draw_part_entry2 Presumably plotting the debris
B589 POP HL Restore HL
B58A POP BC Restore BC
B58B DJNZ dd_loop Loop to dd_loop
B58D RET Return
Prev: B4F0 Up: Map Next: B58E