Prev: B69E Up: Map Next: B716
B6D6: This entry point is used by the routines at draw_car and draw_smoke.
Used by the routines at draw_car, draw_smoke and draw_crash.
Input
B height (in rows)
C = 0/bytewidth-1
D v.shift (always -1/0/1 ?) -- seems to be in D' but inconsistent!
E byte width? can't be right
HL address of bitmap data
draw_part B6D6 LD A,($A22A) D -= car_y -- add additional car_y to v.shift
B6D9 NEG
B6DB ADD A,D
B6DC LD D,A
This entry point is used by the routines at draw_everything_else and draw_debris.
draw_part_entry2 B6DD LD A,E Divide E by 8
B6DE AND $F8
B6E0 RRCA
B6E1 RRCA
B6E2 RRCA
B6E3 LD E,A
B6E4 LD A,D A' = D
B6E5 EX AF,AF'
B6E6 LD A,D D = (D & $0F) + $F0
B6E7 AND $0F
B6E9 ADD A,$F0
B6EB LD D,A
B6EC EX AF,AF' Preserve A & save carry flag?
B6ED AND $70 E += (A & $70) * 2
B6EF ADD A,A
B6F0 ADD A,E
B6F1 LD E,A
B6F2 PUSH DE
B6F3 LD E,C E = C -- byte width
B6F4 SLA E E <<= 1
B6F6 EXX
B6F7 POP HL
B6F8 LD A,E A = E
B6F9 SRL B B >>= 1
B6FB EX AF,AF' Is this EX'ing AF to get the carry flag?
B6FC ADD HL,BC HL += BC
B6FD EX AF,AF'
B6FE JP C,plot_masked_sprite_flipped_entry2
This entry point is used by the routine at draw_object_right.
draw_part_entry3 B701 LD IX,$B729 Point IX at pms_jumptable
B705 CPL A = ~A + 9 == (8 - A)
B706 ADD A,$09
B708 RLCA This multiplies by six - the length of each load-mask-store step in the plotter core.
B709 LD C,A
B70A RLCA
B70B ADD A,C
B70C LD C,A Add that to IX
B70D LD B,$00
B70F ADD IX,BC
B711 LD B,$0F B' = 15 -- Set mask used by scanline calculation in plot_masked_sprite
B713 EXX
B714 LD D,$00 D = 0 -- Clear top byte of source data stride; fall through into plot_masked_sprite
FALL THROUGH
Prev: B69E Up: Map Next: B716