D27E: Starburst behavior handler
| knockback_table |
D27E |
DEFB $02 |
|
D27F |
DEFB $02 |
|
D280 |
DEFB $02 |
|
D281 |
DEFB $02 |
|
D282 |
DEFB $02 |
|
D283 |
DEFB $02 |
|
D284 |
DEFB $01 |
|
D285 |
DEFB $01 |
|
D286 |
DEFB $01 |
|
D287 |
DEFB $01 |
|
D288 |
DEFB $01 |
|
D289 |
DEFB $01 |
|
D28A |
DEFB $01 |
|
D28B |
DEFB $00 |
|
D28C |
DEFB $00 |
|
D28D |
DEFB $00 |
|
D28E |
DEFB $00 |
|
D28F |
DEFB $00 |
|
D290 |
DEFB $00 |
|
D291 |
DEFB $00 |
|
D292 |
DEFB $00 |
|
D293 |
DEFB $00 |
|
D294 |
DEFB $00 |
|
D295 |
DEFB $00 |
|
D296 |
DEFB $07 |
|
D297 |
DEFB $07 |
|
D298 |
DEFB $07 |
|
D299 |
DEFB $07 |
|
D29A |
DEFB $07 |
|
D29B |
DEFB $07 |
|
D29C |
DEFB $07 |
|
D29D |
DEFB $06 |
|
D29E |
DEFB $06 |
|
D29F |
DEFB $06 |
|
D2A0 |
DEFB $06 |
|
D2A1 |
DEFB $06 |
|
D2A2 |
DEFB $06 |
|
D2A3 |
DEFB $06 |
|
D2A4 |
DEFB $06 |
|
D2A5 |
DEFB $06 |
|
D2A6 |
DEFB $06 |
|
D2A7 |
DEFB $06 |
|
D2A8 |
DEFB $05 |
|
D2A9 |
DEFB $05 |
|
D2AA |
DEFB $05 |
|
D2AB |
DEFB $05 |
|
D2AC |
DEFB $05 |
|
D2AD |
DEFB $05 |
|
D2AE |
DEFB $05 |
|
D2AF |
DEFB $04 |
|
D2B0 |
DEFB $04 |
|
D2B1 |
DEFB $04 |
|
D2B2 |
DEFB $04 |
|
D2B3 |
DEFB $04 |
|
D2B4 |
DEFB $04 |
|
D2B5 |
DEFB $04 |
|
D2B6 |
DEFB $04 |
|
D2B7 |
DEFB $04 |
|
D2B8 |
DEFB $04 |
|
D2B9 |
DEFB $04 |
|
D2BA |
DEFB $03 |
|
D2BB |
DEFB $03 |
|
D2BC |
DEFB $03 |
|
D2BD |
DEFB $03 |
|
D2BE |
DEFB $03 |
|
D2BF |
DEFB $03 |
|
D2C0 |
DEFB $03 |
|
D2C1 |
DEFB $02 |
|
D2C2 |
DEFB $02 |
|
D2C3 |
DEFB $02 |
|
D2C4 |
DEFB $02 |
|
D2C5 |
DEFB $02 |
| update_starburst |
D2C6 |
CALL inhabitant_react_state |
|
D2C9 |
RET C |
|
D2CA |
LD A,(IY+$0C) |
|
D2CD |
CP $03 |
|
D2CF |
JR NZ,starburst_wander |
|
D2D1 |
LD HL,anim_starburst |
|
D2D4 |
CALL advance_anim |
|
D2D7 |
LD A,(IY+$0B) |
|
D2DA |
CP $03 |
|
D2DC |
JR C,starburst_knock_edge |
|
D2DE |
LD (IY+$0B),$00 |
| starburst_knock_edge |
D2E2 |
CALL test_step_collision |
|
D2E5 |
LD A,(step_hit_wall) |
|
D2E8 |
OR A |
|
D2E9 |
JR Z,starburst_knock_step |
|
D2EB |
LD (IY+$0B),$00 |
|
D2EF |
LD (IY+$0C),$02 |
|
D2F3 |
RET |
| starburst_knock_step |
D2F4 |
CALL move_object |
|
D2F7 |
CALL inhabitant_offscreen |
|
D2FA |
RET C |
|
D2FB |
LD A,(IY+$09) |
|
D2FE |
CP $04 |
|
D300 |
JR Z,starburst_knock_kill |
|
D302 |
INC (IY+$09) |
|
D305 |
RET |
| starburst_knock_kill |
D306 |
LD B,$0A |
|
D308 |
CALL ball_kill |
|
D30B |
RET |
| starburst_wander |
D30C |
LD HL,anim_starburst |
|
D30F |
CALL advance_anim |
|
D312 |
LD A,(IY+$0B) |
|
D315 |
CP $03 |
|
D317 |
JR C,starburst_wander_move |
|
D319 |
LD (IY+$0B),$00 |
| starburst_wander_move |
D31D |
XOR A |
|
D31E |
CALL pick_wander_heading |
|
D321 |
CALL object_avoid_walls |
|
D324 |
CALL move_object |
|
D327 |
CALL inhabitant_offscreen |
|
D32A |
RET C |
|
D32B |
LD A,C |
|
D32C |
LD (overlap_slot_1),A |
|
D32F |
LD A,$01 |
|
D331 |
LD (overlap_slot_2),A |
|
D334 |
CALL overlap_pair |
|
D337 |
OR A |
|
D338 |
JR NZ,starburst_catch_ball1 |
| starburst_test_ball2 |
D33A |
PUSH IX |
|
D33C |
LD IX,obj2_object |
|
D340 |
LD L,(IX+$06) |
|
D343 |
LD H,(IX+$07) |
|
D346 |
POP IX |
|
D348 |
LD DE,slot_ball |
|
D34B |
XOR A |
|
D34C |
SBC HL,DE |
|
D34E |
JR NZ,starburst_sweep |
|
D350 |
LD A,C |
|
D351 |
LD (overlap_slot_1),A |
|
D354 |
LD A,$02 |
|
D356 |
LD (overlap_slot_2),A |
|
D359 |
CALL overlap_pair |
|
D35C |
OR A |
|
D35D |
JR NZ,starburst_catch_ball2 |
| starburst_sweep |
D35F |
CALL overlap_sweep |
|
D362 |
OR A |
|
D363 |
RET Z |
|
D364 |
LD (IY+$0B),$00 |
|
D368 |
LD (IY+$0C),$02 |
|
D36C |
RET |
| starburst_catch_ball1 |
D36D |
LD A,(ball_a_heading) |
|
D370 |
JR starburst_catch_apply |
| starburst_catch_ball2 |
D372 |
LD A,(ball_b_heading) |
| starburst_catch_apply |
D375 |
LD (IY+$0B),$00 |
|
D379 |
LD (IY+$0C),$03 |
|
D37D |
LD (IY+$01),$05 |
|
D381 |
LD (IY+$09),$00 |
|
D385 |
SUB $48 |
|
D387 |
LD E,A |
|
D388 |
LD D,$00 |
|
D38A |
LD HL,knockback_table |
|
D38D |
ADD HL,DE |
|
D38E |
LD A,(HL) |
|
D38F |
LD (IY+$00),A |
|
D392 |
LD A,$0A |
|
D394 |
LD (pending_score),A |
|
D397 |
RET |
Fork me on GitHub