Untitled
unknown
plain_text
2 years ago
2.0 kB
11
Indexable
.global p2RemainingJumpsDecrease
p2RemainingJumpsDecrease:
@ Save registers, if necessary
@ For example, push registers to the stack
@ Set player2_jumping to true (1)
ldr r0, =player2_jumping
mov r1, #1
str r1, [r0]
@ Set player2_velocity_y to -20
ldr r0, =player2_velocity_y
mov r1, #-20
str r1, [r0]
@ Decrement player2_remaining_jumps
ldr r0, =player2_remaining_jumps
ldr r1, [r0]
sub r1, r1, #1
str r1, [r0]
@ Restore registers, if necessary
@ For example, pop registers from the stack
@ Return
bx lr
.global handlePlayer2Jump
handlePlayer2Jump:
@ Save registers that will be modified
push {r4, r5, lr}
@ Load player2_y into r4 and player2_velocity_y into r5
ldr r4, =player2_y @ Load player2_y (assuming it's at address r0)
ldr r5, =player2_velocity_y @ Load player2_velocity_y (assuming it's at address r1)
@ Add player2_velocity_y to player2_y
add r4, r4, r5
@ Increment player2_velocity_y by 1
add r5, r5, #1
@ Ensure player2_y stays above the invisible floor
ldr r6, =INVISIBLE_FLOOR @ Load floor into r6 (assuming it's at address r2)
ldr r7, =PLAYER_HEIGHT @ Load height into r7 (assuming it's at address r3)
sub r8, r6, r7 @ Calculate floor - height
cmp r4, r8 @ Compare player2_y with floor - height
bge no_jump @ Branch if greater than or equal (no jump)
@ Store the updated player2_y and player2_velocity_y values back to memory
str r4, [r0]
str r5, [r1]
@ Restore saved registers and return
pop {r4, r5, pc}
no_jump:
@ If player2_y is below floor - height, set player2_y to floor - height
mov r4, r8
@ Reset player2_jumping to false
mov r9, #0 @ Assuming player2_jumping is in r9
ldr r0, =player2_jumping
str r9, [r0]
@ Reset player2_remaining_jumps to 2
mov r10, #2 @ Assuming player2_remaining_jumps is in r10
ldr r0, =player2_remaining_jumps
str r10, [r0]
Editor is loading...