sub_47344

This commit is contained in:
Marcus Huderle 2025-07-21 14:06:11 -05:00
parent 8687824e48
commit 1e5f7b9cc0
5 changed files with 71 additions and 210 deletions

View File

@ -31934,207 +31934,3 @@ _08047338:
bx r0
.align 2, 0
_08047340: .4byte gCurrentPinballGame
thumb_func_start sub_47344
sub_47344: @ 0x08047344
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x44
ldr r1, _08047448 @ =gUnknown_08137DBE
mov r0, sp
movs r2, #0x2a
bl memcpy
add r4, sp, #0x2c
ldr r1, _0804744C @ =gUnknown_08137DE8
adds r0, r4, #0
movs r2, #0x18
bl memcpy
mov sb, r4
mov r1, sp
adds r1, #0x2d
mov r6, sp
adds r6, #0x31
mov r7, sp
adds r7, #0x39
add r0, sp, #0x38
mov r8, r0
ldr r0, _08047450 @ =gUnknown_03005C00
movs r3, #0
movs r2, #0xd0
lsls r2, r2, #3
adds r0, r0, r2
movs r2, #0x40
_08047382:
strh r3, [r0]
adds r0, #2
subs r2, #1
cmp r2, #0
bne _08047382
ldr r5, _08047454 @ =gCurrentPinballGame
ldr r0, [r5]
ldr r4, _08047458 @ =0x0000132C
adds r0, r0, r4
ldr r0, [r0]
movs r2, #0x10
ldrsh r0, [r0, r2]
movs r2, #3
movs r3, #1
bl sub_06CC
ldr r0, [r5]
adds r0, r0, r4
ldr r0, [r0]
movs r1, #0x12
ldrsh r0, [r0, r1]
adds r1, r6, #0
movs r2, #3
movs r3, #1
bl sub_06CC
mov r0, sb
movs r1, #0x1a
movs r2, #9
bl sub_0678
ldr r0, [r5]
adds r0, #0x68
movs r2, #0
ldrsh r0, [r0, r2]
adds r1, r7, #0
movs r2, #3
movs r3, #1
bl sub_06CC
mov r0, r8
movs r1, #0x1a
movs r2, #0x12
bl sub_0678
mov r0, sp
movs r1, #0x1a
movs r2, #0
bl sub_0678
ldr r4, _0804745C @ =gMain
ldrh r1, [r4, #0x1c]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08047464
ldr r0, [r4, #0x4c]
movs r1, #8
ands r0, r1
cmp r0, #0
beq _08047408
ldr r0, _08047460 @ =gUnknown_08137E00
ldrb r1, [r4, #0x10]
adds r1, #0x1a
movs r2, #0
bl sub_0678
_08047408:
ldrh r1, [r4, #0x18]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0804741C
ldrb r0, [r4, #0x10]
cmp r0, #0
beq _0804741C
subs r0, #1
strb r0, [r4, #0x10]
_0804741C:
ldr r2, _0804745C @ =gMain
ldrh r1, [r2, #0x18]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08047432
ldrb r0, [r2, #0x10]
cmp r0, #0
bne _08047432
adds r0, #1
strb r0, [r2, #0x10]
_08047432:
ldr r0, _08047454 @ =gCurrentPinballGame
ldr r0, [r0]
movs r6, #0xe8
lsls r6, r6, #3
adds r0, r0, r6
ldrb r0, [r0]
cmp r0, #2
bne _08047490
bl sub_48124
b _08047490
.align 2, 0
_08047448: .4byte gUnknown_08137DBE
_0804744C: .4byte gUnknown_08137DE8
_08047450: .4byte gUnknown_03005C00
_08047454: .4byte gCurrentPinballGame
_08047458: .4byte 0x0000132C
_0804745C: .4byte gMain
_08047460: .4byte gUnknown_08137E00
_08047464:
ldr r0, [r5]
movs r1, #0xe8
lsls r1, r1, #3
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #1
beq _08047478
cmp r0, #2
beq _0804747E
b _08047482
_08047478:
bl sub_47FF8
b _08047482
_0804747E:
bl sub_48124
_08047482:
ldr r0, _080474DC @ =gUnknown_08137E00
ldr r1, _080474E0 @ =gMain
ldrb r1, [r1, #0x10]
adds r1, #0x1a
movs r2, #0
bl sub_0678
_08047490:
ldr r4, _080474E4 @ =gUnknown_03005C00
ldr r5, _080474E0 @ =gMain
movs r2, #0xc1
lsls r2, r2, #8
adds r3, r2, #0
movs r6, #0xd0
lsls r6, r6, #3
adds r1, r4, r6
movs r2, #0x40
_080474A2:
ldrh r6, [r1]
adds r0, r3, r6
strh r0, [r1]
adds r1, #2
subs r2, #1
cmp r2, #0
bne _080474A2
ldr r1, _080474E8 @ =0x040000D4
str r4, [r1]
ldr r0, _080474EC @ =0x06002000
str r0, [r1, #4]
ldr r0, _080474F0 @ =0x80000400
str r0, [r1, #8]
ldr r0, [r1, #8]
ldrh r1, [r5, #0x1c]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080474CC
bl sub_47FBC
_080474CC:
add sp, #0x44
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080474DC: .4byte gUnknown_08137E00
_080474E0: .4byte gMain
_080474E4: .4byte gUnknown_03005C00
_080474E8: .4byte 0x040000D4
_080474EC: .4byte 0x06002000
_080474F0: .4byte 0x80000400

View File

@ -1251,10 +1251,13 @@ gUnknown_08137DA4:: @ 0x08137DA4
.incbin "baserom.gba", 0x137DA4, 0x1A
gUnknown_08137DBE:: @ 0x08137DBE
.incbin "baserom.gba", 0x137DBE, 0x2A
.byte ' ','B','A','L','L','-','M','V',':',0,0,0,0,0
.byte ' ','B','A','L','L','-','S','P','D',':',0,0,0,0
.byte ' ',' ','D','E','B','U','G','1',':',0,0,0,0,0
gUnknown_08137DE8:: @ 0x08137DE8
.incbin "baserom.gba", 0x137DE8, 0x18
.byte '(','0','0','0',' ','0','0','0',')',0,0,0
.byte '(','0','0','0',')',' ',' ',' ',' ',0,0,0
gUnknown_08137E00:: @ 0x08137E00
.incbin "baserom.gba", 0x137E00, 0x4

View File

@ -77,6 +77,7 @@ void ClearGraphicsMemory(void);
void sub_0518(void);
void ClearSprites(void);
void sub_0678(u8 *arg0, s16 arg1, s16 arg2);
u8 *sub_06CC(int arg0, u8 *arg1, int arg2, s16 arg3);
void SetMatrixScale(s16 xScale, s16 yScale, s16 matrixNum);
// src/bonus_field_select.s
@ -633,8 +634,8 @@ extern void sub_472E4();
//extern ? sub_47670();
//extern ? sub_478D8();
extern void sub_47FBC(void);
//extern ? sub_47FF8();
//extern ? sub_48124();
extern void sub_47FF8(void);
extern void sub_48124(void);
extern void sub_48190(void);
//extern ? sub_495A0();
//extern ? sub_497BC();

View File

@ -507,7 +507,9 @@ struct PinballGame
/*0x732*/ u8 filler732[0xA];
/*0x73C*/ u8 unk73C; // TODO: unknown type
/*0x73D*/ s8 catchModeArrows; // Affects which encounter table is used per area
/*0x73E*/ u8 filler73E[0x8];
/*0x73E*/ u8 filler73E[0x2];
/*0x740*/ u8 unk740;
/*0x741*/ u8 filler741[0x5];
/*0x746*/ u8 unk746;
/*0x747*/ u8 filler747[0x2];
/*0x749*/ u8 unk749;

View File

@ -18,11 +18,70 @@ extern const u8 gUnknown_08521FAC[];
extern const u8 gUnknown_08521FCC[];
extern const u8 gUnknown_0850398C[];
extern const u8 gUnknown_08509F4C[];
extern const u8 gUnknown_08137DBE[];
extern const u8 gUnknown_08137DE8[];
extern u8 gUnknown_08137E00[];
extern s16 gUnknown_02030750[];
extern s16 gUnknown_02031500[];
extern s16 gUnknown_020306C0[];
void sub_47344(void)
{
int i;
u8 str0[42];
u8 str1[24];
memcpy(str0, gUnknown_08137DBE, 42);
memcpy(str1, gUnknown_08137DE8, 24);
for (i = 0x340; i < 0x380; i++)
gUnknown_03005C00[i] = 0;
sub_06CC(gCurrentPinballGame->ball->positionQ0.x, &str1[1], 3, 1);
sub_06CC(gCurrentPinballGame->ball->positionQ0.y, &str1[5], 3, 1);
sub_0678(&str1[0], 26, 9);
sub_06CC(gCurrentPinballGame->unk68, &str1[13], 3, 1);
sub_0678(&str1[12], 26, 18);
sub_0678(str0, 26, 0);
if (JOY_HELD(B_BUTTON))
{
if (gMain.systemFrameCount & 0x8)
sub_0678(gUnknown_08137E00, gMain.unk10 + 26, 0);
if (JOY_NEW(DPAD_UP) && gMain.unk10 != 0)
gMain.unk10--;
if (JOY_NEW(DPAD_DOWN) && gMain.unk10 == 0)
gMain.unk10++;
if (gCurrentPinballGame->unk740 == 2)
sub_48124();
}
else
{
switch (gCurrentPinballGame->unk740)
{
case 1:
sub_47FF8();
break;
case 2:
sub_48124();
break;
}
sub_0678(gUnknown_08137E00, gMain.unk10 + 26, 0);
}
for (i = 0x340; i < 0x380; i++)
gUnknown_03005C00[i] += 0xC100;
DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800);
if (JOY_HELD(A_BUTTON))
sub_47FBC();
}
void sub_474F4(void)
{
int i;
@ -403,7 +462,7 @@ void sub_478D8(void)
void sub_47FBC(void)
{
int i;
for (i = 0x340; i < 0x340 + 0x40; i++)
for (i = 0x340; i < 0x380; i++)
gUnknown_03005C00[i] = 0x1FF;
DmaCopy16(3, gUnknown_03005C00, (void *)0x6002000, 0x800);