Prev: B67C Up: Map Next: B6D6
B69E: This entry point is used by the routine at animate_hero_car.
Used by the routine at animate_hero_car.
Input
A Index of thing to draw - indexes unknown_cfb2
draw_crash B69E LD E,$80 E = 128 -- horz position/offset?
B6A0 LD B,$00 Turn index into offset into unknown_cfb2 (BC = A * 3)
B6A2 LD C,A
B6A3 RLCA
B6A4 ADD A,C
B6A5 LD C,A
B6A6 LD HL,$CFB2 HL = unknown_cfb2 + BC -> unknown_cfb2[index] -- Point HL at element
B6A9 ADD HL,BC
B6AA LD A,(HL) D = *HL++ + 121 -- presumably the vertical position/offset
B6AB INC HL
B6AC ADD A,$79
B6AE LD D,A
B6AF LD A,(HL) E += *HL++ -- add to horz position/offset
B6B0 INC HL
B6B1 ADD A,E
B6B2 LD E,A
B6B3 LD C,(HL) Load offset into car_adornments
B6B4 LD HL,$D027 Point HL at (car_adornments + BC)
B6B7 ADD HL,BC
B6B8 LD B,(HL) Read row height & advance
B6B9 INC HL
B6BA LD C,(HL) Read byte width & advance
B6BB INC HL
B6BC LD A,(HL) Read masked bitmap data pointer & advance
B6BD INC HL
B6BE LD H,(HL)
B6BF LD L,A
B6C0 LD A,C Get byte width in A
B6C1 EXX Bank byte width in E'
B6C2 LD E,A
B6C3 EXX
B6C4 LD A,($B5AB) Read car jump offset from 'SUB x' @ B5AA
B6C7 NEG D -= A -- vert pos/offset - car jump offset
B6C9 ADD A,D
B6CA LD D,A
B6CB LD A,($B5B0) Read self modified value in draw_car that sets the car's pitch (0/3/6)
B6CE SRL A 0 -> 0, 3 -> 1, 6 -> 3
B6D0 JR Z,draw_part Jump to draw_part if zero
Otherwise pitch was 3/6.
B6D2 SUB $02 D += A - 2 -- make v.shift -1/1
B6D4 ADD A,D
B6D5 LD D,A
FALL THROUGH
Prev: B67C Up: Map Next: B6D6