Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .align 2
- @Hardware offset
- .long 0x08000000
- @AS routine is at 0x08028B76
- @----------
- @ Hook
- @----------
- BDH_HOOK:
- .align 2
- @.org 0x08029440
- .set BDH_HOOK_SIZE, BDH_HOOK_END - BDH_HOOK_ST
- .set BDH_HOOK_ORG, 0x08029440
- .long BDH_HOOK_ORG
- .long 0x00000002
- .long BDH_HOOK_SIZE
- .thumb
- .short 0x00
- BDH_HOOK_ST:
- @Preparations
- push {r9,lr}
- ldr r0, BDH_HOOK_TARG
- bl r0
- mov lr, r2
- lsl r0, #0x0 @Padding
- @Right after this is the rest of the original function.
- BDH_HOOK_TARG:
- .align 2
- .long BDH_HACK_ORG + 1
- BDH_HOOK_END:
- @----------
- @ Hack
- @----------
- .align 2
- @.org 0x8D3___
- BDH_HACK:
- .set BDH_HACK_SIZE, BDH_HACK_END - BDH_HACK_ST
- .set BDH_HACK_ORG, 0x08D3___
- .long BDH_HACK_ORG
- .long 0x00000000
- .long BDH_HACK_SIZE
- .thumb
- BDH_HACK_ST:
- ldrh r2, [r7, r2] @Load enemy HP: Missing
- mov r3, #0x4 @Ready R3: Missing
- ldsh r0, [r1, r3] @Load damage: missing
- cmp r0, r2 @Is damage less than enemy HP?: missing
- ble RETURN
- mov r9, #0x3 @Prepare R9
- cmp r2, r9 @
- beq NEGATE_ATT @If equal, negate attack
- strh r2, [r1, #0x4] @Otherwise, set enemy HP as damage: missing
- b RETURN
- NEGATE_ATT: @The actual hack bit
- mov r9, #0x1 @R9 is useless, so use it as scratch
- strh r9, [r1, #0x4] @Store 1 as damage.
- @Cleanup.
- RETURN:
- pop {r9, r2} @R2 is safe, it gets clobbered immediately after return.
- bx lr @Return to main function
Advertisement
Add Comment
Please, Sign In to add comment