Match sub_080A5F48

This commit is contained in:
Tal Hayon 2022-04-09 10:44:45 +03:00
parent ca8869391e
commit 2bdde94eda
2 changed files with 46 additions and 95 deletions

View File

@ -1,94 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
cmp r4, #0x1f
bhi _080A5F5C
cmp r4, #0x1c
blo _080A5F5C
ldr r0, _080A5F9C @ =gSave
adds r0, r0, r4
adds r0, #0x9a
ldrb r4, [r0]
_080A5F5C:
lsls r0, r1, #5
ldr r1, _080A5FA0 @ =0x06010000
adds r5, r0, r1
ldr r1, _080A5FA4 @ =gSpriteAnimations_322
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
ldrb r1, [r0]
ldr r3, _080A5FA8 @ =gMoreSpritePtrs
lsls r1, r1, #2
ldr r0, [r3, #4]
adds r0, r0, r1
ldr r2, _080A5FAC @ =0x040000D4
ldrh r1, [r0, #2]
lsls r1, r1, #5
ldr r0, [r3, #8]
adds r0, r0, r1
str r0, [r2]
str r5, [r2, #4]
ldr r0, _080A5FB0 @ =0x84000040
str r0, [r2, #8]
ldr r0, [r2, #8]
movs r0, #1
rsbs r0, r0, #0
cmp r4, #7
blo _080A5FBE
cmp r4, #8
bhi _080A5FB4
ldr r0, _080A5F9C @ =gSave
adds r0, #0xac
b _080A5FBC
.align 2, 0
_080A5F9C: .4byte gSave
_080A5FA0: .4byte 0x06010000
_080A5FA4: .4byte gSpriteAnimations_322
_080A5FA8: .4byte gMoreSpritePtrs
_080A5FAC: .4byte 0x040000D4
_080A5FB0: .4byte 0x84000040
_080A5FB4:
cmp r4, #0xa
bhi _080A5FBE
ldr r0, _080A5FF8 @ =gSave
adds r0, #0xad
_080A5FBC:
ldrb r0, [r0]
_080A5FBE:
cmp r0, #0
blt _080A5FF6
movs r1, #0xa
bl Div
adds r4, r1, #0
cmp r0, #9
ble _080A5FD0
movs r0, #9
_080A5FD0:
ldr r1, _080A5FFC @ =0x040000D4
lsls r0, r0, #5
ldr r2, _080A6000 @ =gUnk_085C4620
adds r0, r0, r2
str r0, [r1]
str r5, [r1, #4]
ldr r3, _080A6004 @ =0x84000008
str r3, [r1, #8]
ldr r0, [r1, #8]
adds r0, r4, #0
adds r0, #0xa
lsls r0, r0, #5
adds r0, r0, r2
str r0, [r1]
adds r0, r5, #0
adds r0, #0x20
str r0, [r1, #4]
str r3, [r1, #8]
ldr r0, [r1, #8]
_080A5FF6:
pop {r4, r5, pc}
.align 2, 0
_080A5FF8: .4byte gSave
_080A5FFC: .4byte 0x040000D4
_080A6000: .4byte gUnk_085C4620
_080A6004: .4byte 0x84000008
.syntax divided

View File

@ -27,6 +27,9 @@ extern u16 gUnk_02017830[];
extern u8 gUnk_080C9C6C[];
extern u8 gUnk_020350F0[];
extern u8 gUnk_08128C00[];
extern Frame* gSpriteAnimations_322[];
extern u32 gUnk_085C4620[];
extern u16* gMoreSpritePtrs[];
void sub_080A5CFC(u32, void*, u32);
void sub_080A6FB4(u32, u32);
@ -452,7 +455,49 @@ bool32 sub_080A5F24(void) {
return result;
}
ASM_FUNC("asm/non_matching/subtask2/sub_080A5F48.inc", void sub_080A5F48(u32 param_1, u32 param_2))
void sub_080A5F48(u32 param_1, u32 param_2) {
extern u32 gSprite_082E68F4[];
u32 ammoCount;
u32 tensDigit;
u8* puVar2;
u32 temp1;
u16* temp2;
u32 temp3;
register u32 rem asm("r1");
switch (param_1) {
case 0x1c ... 0x1f:
param_1 = (u32)gSave.saved_status.field_0x24[param_1 - 6];
break;
}
temp1 = param_2 * 0x20 + 0x6010000;
temp3 = gSpriteAnimations_322[param_1]->index;
temp2 = &gMoreSpritePtrs[1][temp3 * 2];
DmaSet(3, &gMoreSpritePtrs[2][temp2[1] * 0x10], temp1, 0x84000040);
ammoCount = -1;
switch (param_1) {
case 7:
case 8:
ammoCount = gSave.stats.bombCount;
break;
case 9:
case 10:
ammoCount = gSave.stats.arrowCount;
break;
}
if (-1 < (int)ammoCount) {
tensDigit = Div(ammoCount, 10);
param_1 = rem;
if ((int)tensDigit >= 10) {
tensDigit = 9;
}
DmaSet(3, gUnk_085C4620 + tensDigit * 0x8, temp1, 0x84000008);
DmaSet(3, gUnk_085C4620 + (param_1 + 10) * 0x8, temp1 + 0x20, 0x84000008);
}
}
void sub_080A6008(void) {
gUnk_08128D58[gMenu.menuType]();