diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-23 13:53:51 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-23 13:53:51 -0500 |
commit | 89d938ea9e10a637563a5b4d0d19ddb4535bcf8e (patch) | |
tree | 9b2db5be6716ab491751012809a7d6a48a6f03c2 | |
parent | 1e4f12e6fa9e3b22d4f1a60ca69313b5dec0ca38 (diff) |
Finish decompiling coins
-rw-r--r-- | asm/coins.s | 74 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/coins.c | 21 |
3 files changed, 16 insertions, 80 deletions
diff --git a/asm/coins.s b/asm/coins.s deleted file mode 100644 index d2b6cbb47..000000000 --- a/asm/coins.s +++ /dev/null @@ -1,74 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start GiveCoins -@ bool8 GiveCoins(u16 toAdd) -GiveCoins: @ 8145C80 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl GetCoins - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =0x0000270e - cmp r1, r0 - bls _08145C9C - movs r0, 0 - b _08145CC0 - .pool -_08145C9C: - adds r0, r1, r4 - cmp r1, r0 - ble _08145CAC - ldr r0, =0x0000270f - b _08145CBA - .pool -_08145CAC: - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =0x0000270f - cmp r1, r0 - bls _08145CB8 - adds r1, r0, 0 -_08145CB8: - adds r0, r1, 0 -_08145CBA: - bl SetCoins - movs r0, 0x1 -_08145CC0: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end GiveCoins - - thumb_func_start TakeCoins -@ bool8 TakeCoins(u16 toSub) -TakeCoins: @ 8145CCC - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcs _08145CE2 - movs r0, 0 - b _08145CEE -_08145CE2: - subs r0, r4 - lsls r0, 16 - lsrs r0, 16 - bl SetCoins - movs r0, 0x1 -_08145CEE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end TakeCoins - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index e9c810adc..5292183c3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -186,7 +186,6 @@ SECTIONS { asm/roulette.o(.text); asm/pokedex_cry_screen.o(.text); src/coins.o(.text); - asm/coins.o(.text); asm/landmark.o(.text); asm/fldeff_strength.o(.text); asm/battle_transition.o(.text); diff --git a/src/coins.c b/src/coins.c index e1694b29c..e313a4221 100644 --- a/src/coins.c +++ b/src/coins.c @@ -53,7 +53,6 @@ void SetCoins(u16 coinAmount) gSaveBlock1Ptr->coins = coinAmount ^ gSaveBlock2Ptr->encryptionKey; } -/* Can't match it lol bool8 GiveCoins(u16 toAdd) { u16 newAmount; @@ -67,10 +66,22 @@ bool8 GiveCoins(u16 toAdd) } else { - newAmount = ownedCoins + toAdd; - if (newAmount > MAX_COINS) - newAmount = MAX_COINS; + ownedCoins += toAdd; + if (ownedCoins > MAX_COINS) + ownedCoins = MAX_COINS; + newAmount = ownedCoins; } SetCoins(newAmount); return TRUE; -}*/ +} + +bool8 TakeCoins(u16 toSub) +{ + u16 ownedCoins = GetCoins(); + if (ownedCoins >= toSub) + { + SetCoins(ownedCoins - toSub); + return TRUE; + } + return FALSE; +} |