A2D8: Set a ball's velocity from its heading code
| set_ball_velocity |
A2D8 |
LD A,(active_ball) |
|
A2DB |
OR A |
|
A2DC |
JR NZ,set_ball_velocity_0 |
|
A2DE |
LD IY,ball_a_x_accum |
|
A2E2 |
JR set_ball_velocity_1 |
| set_ball_velocity_0 |
A2E4 |
LD IY,ball_b_x_accum |
| set_ball_velocity_1 |
A2E8 |
LD E,A |
|
A2E9 |
LD D,$00 |
|
A2EB |
LD HL,ball_a_heading |
|
A2EE |
ADD HL,DE |
|
A2EF |
LD A,(HL) |
|
A2F0 |
CP $48 |
|
A2F2 |
JR C,set_ball_velocity_2 |
|
A2F4 |
CP $90 |
|
A2F6 |
JR C,set_ball_velocity_3 |
| set_ball_velocity_2 |
A2F8 |
LD A,$57 |
|
A2FA |
LD (HL),A |
|
A2FB |
JR set_ball_velocity_5 |
| set_ball_velocity_3 |
A2FD |
CP $48 |
|
A2FF |
JR Z,set_ball_velocity_4 |
|
A301 |
CP $5A |
|
A303 |
JR Z,set_ball_velocity_4 |
|
A305 |
CP $6C |
|
A307 |
JR Z,set_ball_velocity_4 |
|
A309 |
CP $7E |
|
A30B |
JR NZ,set_ball_velocity_5 |
| set_ball_velocity_4 |
A30D |
ADD A,$06 |
|
A30F |
LD (HL),A |
| set_ball_velocity_5 |
A310 |
SUB $48 |
|
A312 |
LD C,A |
|
A313 |
ADD A,A |
|
A314 |
ADD A,C |
|
A315 |
LD HL,velocity_table |
|
A318 |
LD E,A |
|
A319 |
LD D,$00 |
|
A31B |
ADD HL,DE |
|
A31C |
LD A,(HL) |
|
A31D |
LD (IY+$02),A |
|
A320 |
INC HL |
|
A321 |
LD A,(HL) |
|
A322 |
LD (IY+$03),A |
|
A325 |
INC HL |
|
A326 |
LD A,(HL) |
|
A327 |
AND $10 |
|
A329 |
RRCA |
|
A32A |
RRCA |
|
A32B |
RRCA |
|
A32C |
RRCA |
|
A32D |
LD (IY+$04),A |
|
A330 |
LD A,(HL) |
|
A331 |
AND $01 |
|
A333 |
LD (IY+$05),A |
|
A336 |
XOR A |
|
A337 |
LD (IY+$0B),A |
|
A33A |
LD (IY+$00),A |
|
A33D |
LD (IY+$01),A |
|
A340 |
RET |
Fork me on GitHub