Merge branch 'master' of github.com:pret/pokeheartgold into pikalax_work

This commit is contained in:
PikalaxALT 2021-10-22 14:57:19 -04:00
commit 96e4e56214
9 changed files with 71 additions and 93 deletions

View File

@ -1,71 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start sub_0202C948
sub_0202C948: ; 0x0202C948
mov r1, #0
strh r1, [r0]
bx lr
.balign 4, 0
thumb_func_end sub_0202C948
thumb_func_start sub_0202C950
sub_0202C950: ; 0x0202C950
ldrh r0, [r0]
bx lr
thumb_func_end sub_0202C950
thumb_func_start sub_0202C954
sub_0202C954: ; 0x0202C954
ldrh r3, [r0]
ldr r2, _0202C970 ; =0x0000C350
cmp r3, r2
blo _0202C960
mov r0, #0
bx lr
_0202C960:
add r1, r3, r1
strh r1, [r0]
ldrh r1, [r0]
cmp r1, r2
bls _0202C96C
strh r2, [r0]
_0202C96C:
mov r0, #1
bx lr
.balign 4, 0
_0202C970: .word 0x0000C350
thumb_func_end sub_0202C954
thumb_func_start sub_0202C974
sub_0202C974: ; 0x0202C974
ldrh r0, [r0]
add r1, r1, r0
ldr r0, _0202C988 ; =0x0000C350
cmp r1, r0
bhi _0202C982
mov r0, #1
bx lr
_0202C982:
mov r0, #0
bx lr
nop
_0202C988: .word 0x0000C350
thumb_func_end sub_0202C974
thumb_func_start sub_0202C98C
sub_0202C98C: ; 0x0202C98C
ldrh r2, [r0]
cmp r2, r1
bhs _0202C996
mov r0, #0
bx lr
_0202C996:
sub r1, r2, r1
strh r1, [r0]
mov r0, #1
bx lr
.balign 4, 0
thumb_func_end sub_0202C98C

View File

@ -19356,7 +19356,7 @@ _021EECBA:
add r4, r0, #0
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
bl sub_0202C950
bl CheckCoins
add r2, r0, #0
b _021EED04
_021EECD2:

View File

@ -29,7 +29,7 @@ ov122_021E5900: ; 0x021E5900
bl ov122_021E8770
add r6, r0, #0
ldr r0, [r5, #8]
bl sub_0202C950
bl CheckCoins
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@ -348,7 +348,7 @@ ov122_021E5BA8: ; 0x021E5BA8
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #8]
bl sub_0202C950
bl CheckCoins
ldr r1, _021E5BDC ; =0x0000C350
cmp r0, r1
blo _021E5BCE
@ -1631,7 +1631,7 @@ ov122_021E6594: ; 0x021E6594
bl ov122_021E8770
add r6, r0, #0
ldr r0, [r5, #8]
bl sub_0202C950
bl CheckCoins
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@ -2236,7 +2236,7 @@ ov122_021E6A64: ; 0x021E6A64
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #8]
bl sub_0202C950
bl CheckCoins
lsl r0, r0, #0x10
lsr r6, r0, #0x10
mov r0, #0x91
@ -2263,7 +2263,7 @@ _021E6A94:
bl ov122_021E8610
ldr r0, [r5, #8]
add r1, r4, #0
bl sub_0202C954
bl GiveCoins
ldr r0, _021E6B2C ; =0x0000C350
add r7, r6, r4
cmp r7, r0
@ -2292,7 +2292,7 @@ _021E6ADA:
beq _021E6B18
ldr r0, [r5, #8]
mov r1, #1
bl sub_0202C954
bl GiveCoins
sub r2, r4, #1
lsl r2, r2, #0x10
add r0, r5, #0
@ -5191,7 +5191,7 @@ _021E80A4:
add r0, r4, #0
bl ov122_021E6B38
ldr r0, [r4, #8]
bl sub_0202C950
bl CheckCoins
lsl r0, r0, #0x10
lsr r2, r0, #0x10
add r0, r4, #0

View File

@ -100,7 +100,7 @@ ov22_02259960: ; 0x02259960
ldr r0, [r5]
ldr r0, [r0, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
bl sub_0202C950
bl CheckCoins
strh r0, [r4]
mov r0, #0
pop {r3, r4, r5, pc}
@ -123,7 +123,7 @@ ov22_0225998C: ; 0x0225998C
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
add r1, r5, #0
bl sub_0202C954
bl GiveCoins
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
@ -145,7 +145,7 @@ ov22_022599B8: ; 0x022599B8
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
add r1, r5, #0
bl sub_0202C98C
bl TakeCoins
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
@ -167,7 +167,7 @@ ov22_022599E4: ; 0x022599E4
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
ldrh r1, [r5]
bl sub_0202C98C
bl TakeCoins
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
@ -192,7 +192,7 @@ ov22_02259A10: ; 0x02259A10
add r6, r0, #0
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
bl sub_0202C950
bl CheckCoins
cmp r0, r6
bhs _02259A46
mov r0, #0
@ -229,7 +229,7 @@ ov22_02259A50: ; 0x02259A50
add r5, r0, #0
ldr r0, [r6, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
bl sub_0202C950
bl CheckCoins
ldrh r1, [r5]
cmp r0, r1
bhs _02259A92
@ -268,7 +268,7 @@ ov22_02259A9C: ; 0x02259A9C
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetCoinsAddr
add r1, r5, #0
bl sub_0202C974
bl CanGiveCoins
strh r0, [r6]
mov r0, #0
pop {r4, r5, r6, pc}

View File

@ -23,7 +23,7 @@ Sav2_PlayerData_init: ; 0x02028E70
bl PlayerProfile_init
add r0, r4, #0
add r0, #0x24
bl sub_0202C948
bl InitCoins
add r4, #0x26
add r0, r4, #0
bl InitIGT

View File

@ -6201,7 +6201,7 @@ sub_0207791C: ; 0x0207791C
sub_02077924: ; 0x02077924
push {r3, lr}
bl Sav2_PlayerData_GetCoinsAddr
bl sub_0202C950
bl CheckCoins
pop {r3, pc}
thumb_func_end sub_02077924

View File

@ -26277,11 +26277,11 @@
.public sub_0202C88C
.public sub_0202C8C4
.public sub_0202C8E4
.public sub_0202C948
.public sub_0202C950
.public sub_0202C954
.public sub_0202C974
.public sub_0202C98C
.public InitCoins
.public CheckCoins
.public GiveCoins
.public CanGiveCoins
.public TakeCoins
.public sub_0202C9A0
.public sub_0202C9A8
.public sub_0202C9D8

12
include/coins.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef POKEHEARTGOLD_COINS_H
#define POKEHEARTGOLD_COINS_H
#define MAX_COINS 50000
void InitCoins(u16* coins);
u16 CheckCoins(u16* coins);
BOOL GiveCoins(u16* coins, u16 amount);
BOOL CanGiveCoins(u16* coins, u16 amount);
BOOL TakeCoins(u16* coins, u16 amount);
#endif

37
src/coins.c Normal file
View File

@ -0,0 +1,37 @@
#include "global.h"
#include "coins.h"
void InitCoins(u16* coins) {
*coins = 0;
}
u16 CheckCoins(u16* coins) {
return *coins;
}
BOOL GiveCoins(u16* coins, u16 amount) {
if (*coins >= MAX_COINS) {
return FALSE;
}
*coins += amount;
if (*coins > MAX_COINS) {
*coins = MAX_COINS;
}
return TRUE;
}
BOOL CanGiveCoins(u16* coins, u16 amount) {
return (u32)(amount + *coins) <= MAX_COINS;
}
BOOL TakeCoins(u16* coins, u16 amount) {
if (*coins < amount) {
return FALSE;
}
*coins -= amount;
return TRUE;
}