Prev: 76AF Up: Map Next: 7727
76DA: Handle balloon terrain collision.
Reverses balloon direction when it collides with terrain. Also handles rendering.
Input
BC Position
D Object definition
reverse_balloon_direction 76DA LD ($8B0A),BC Save position. If Y >= 128 (off visible area), return early.
76DE LD A,B
76DF SUB $80
76E1 RET P
76E2 LD BC,($8B0A) Reload position, get object definition from viewport.
76E6 POP HL
76E7 LD HL,($5F60)
76EA DEC HL
76EB LD D,(HL)
76EC LD HL,$8972 Calculate sprite frame offset from X position bits 1-2.
76EF LD BC,($8B0A)
76F3 LD A,C
76F4 AND $06
76F6 LD BC,$0020
76F9 SRL A
76FB INC A
reverse_balloon_frame_loop 76FC OR A Loop to select correct frame in sprite data.
76FD SBC HL,BC
reverse_balloon_direction_0 76FF ADD HL,BC
7700 DEC A
7701 JR NZ,reverse_balloon_direction_0
7703 LD ($8B0E),HL Store sprite pointer and render position.
7706 LD BC,($8B0A)
770A LD ($8B0C),BC
770E LD A,D Flip orientation bit and update in viewport array.
770F XOR $40
7711 LD HL,($5F60)
7714 DEC HL
7715 LD (HL),A
7716 LD HL,$8972 Load sprite parameters, render balloon with new orientation, return to main loop.
7719 LD DE,$100D
771C LD A,$02
771E LD BC,$0020
7721 CALL render_object
7724 JP operate_viewport_slots
Prev: 76AF Up: Map Next: 7727