sub_32DF8
Some checks failed
CI / build (push) Has been cancelled

This commit is contained in:
Marcus Huderle 2025-02-23 08:45:06 -06:00
parent 34c29d5e7d
commit 371dcc4411
4 changed files with 58 additions and 169 deletions

Binary file not shown.

View File

@ -575,7 +575,6 @@ extern void sub_329B0();
extern void sub_329F4();
extern void sub_32B74();
extern void sub_32BE4();
extern void sub_32DF8();
//extern ? sub_32F3C();
//extern ? sub_33130();
//extern ? sub_3342C();

View File

@ -175,7 +175,8 @@ struct PinballGame
/*0x1BC*/ u8 filler1BC[0x4];
/*0x1C0*/ u16 unk1C0;
/*0x1C2*/ s8 unk1C2;
/*0x1C3*/ u8 filler1C3[0x3];
/*0x1C3*/ u8 filler1C3[0x1];
/*0x1C4*/ u16 unk1C4;
/*0x1C6*/ u16 unk1C6;
/*0x1C8*/ u16 unk1C8;
/*0x1CA*/ u16 unk1CA;
@ -311,9 +312,20 @@ struct PinballGame
/*0x600*/ u16 unk600;
/*0x602*/ u8 filler602[0x12];
/*0x614*/ u16 unk614;
/*0x616*/ u8 filler616[0xAE];
/*0x616*/ u8 filler616[0x6];
/*0x61C*/ s8 unk61C;
/*0x61D*/ u8 filler61D[0xA7];
/*0x6C4*/ u8 unk6C4;
/*0x6C5*/ u8 filler6C5[0x63];
/*0x6C5*/ u8 filler6C5[0x4B];
/*0x710*/ s8 unk710;
/*0x711*/ s8 unk711;
/*0x712*/ s8 unk712;
/*0x713*/ s8 unk713;
/*0x714*/ u8 filler714[0x4];
/*0x718*/ s8 unk718;
/*0x719*/ s8 unk719;
/*0x71A*/ s8 unk71A;
/*0x71B*/ u8 filler71B[0xD];
/*0x728*/ u8 unk728; // TODO: unknown type
/*0x729*/ u8 filler729[0x5];
/*0x72E*/ s8 unk72E;

View File

@ -7,6 +7,8 @@
#include "m4a.h"
#include "main.h"
void sub_32DF8(void);
extern const u16 gWildMonLocations[][2][8];
extern const u16 gEggLocations[2][26];
@ -659,173 +661,49 @@ void sub_32BE4(void)
}
}
NAKED
void sub_32DF8(void)
{
asm_unified("\n\
push {r4, r5, lr}\n\
ldr r0, _08032F28 @ =gCurrentPinballGame\n\
ldr r2, [r0]\n\
ldrb r1, [r2, #4]\n\
adds r5, r0, #0\n\
cmp r1, #0\n\
beq _08032E90\n\
movs r1, #0xe2\n\
lsls r1, r1, #1\n\
adds r0, r2, r1\n\
ldrh r0, [r0]\n\
cmp r0, #0\n\
bne _08032E3A\n\
movs r3, #0xf1\n\
lsls r3, r3, #1\n\
adds r1, r2, r3\n\
movs r0, #0\n\
ldrsb r0, [r1, r0]\n\
cmp r0, #2\n\
beq _08032E3A\n\
subs r3, #0x22\n\
adds r0, r2, r3\n\
ldrh r0, [r0]\n\
cmp r0, #0\n\
bne _08032E3A\n\
ldr r3, _08032F2C @ =0x0000061C\n\
adds r0, r2, r3\n\
ldrb r0, [r0]\n\
lsls r0, r0, #0x18\n\
asrs r0, r0, #0x18\n\
cmp r0, #0\n\
bne _08032E3A\n\
strb r0, [r1]\n\
_08032E3A:\n\
ldr r0, [r5]\n\
movs r2, #0xe2\n\
lsls r2, r2, #3\n\
adds r1, r0, r2\n\
movs r4, #0\n\
ldrsb r4, [r1, r4]\n\
adds r2, #1\n\
adds r0, r0, r2\n\
ldrb r0, [r0]\n\
strb r0, [r1]\n\
ldr r0, [r5]\n\
ldr r3, _08032F30 @ =0x00000712\n\
adds r1, r0, r3\n\
ldrb r1, [r1]\n\
adds r0, r0, r2\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
adds r2, #2\n\
adds r1, r0, r2\n\
ldrb r1, [r1]\n\
adds r0, r0, r3\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
adds r0, r0, r2\n\
strb r4, [r0]\n\
ldr r0, [r5]\n\
adds r3, #6\n\
adds r1, r0, r3\n\
movs r4, #0\n\
ldrsb r4, [r1, r4]\n\
adds r3, #1\n\
adds r0, r0, r3\n\
ldrb r0, [r0]\n\
strb r0, [r1]\n\
ldr r0, [r5]\n\
adds r2, #7\n\
adds r1, r0, r2\n\
ldrb r1, [r1]\n\
adds r0, r0, r3\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
adds r0, r0, r2\n\
strb r4, [r0]\n\
_08032E90:\n\
ldr r1, [r5]\n\
ldrb r0, [r1, #5]\n\
cmp r0, #0\n\
beq _08032F22\n\
movs r2, #0xe2\n\
lsls r2, r2, #1\n\
adds r0, r1, r2\n\
ldrh r0, [r0]\n\
cmp r0, #0\n\
bne _08032ECE\n\
movs r3, #0xf1\n\
lsls r3, r3, #1\n\
adds r2, r1, r3\n\
movs r0, #0\n\
ldrsb r0, [r2, r0]\n\
cmp r0, #2\n\
beq _08032ECE\n\
subs r3, #0x22\n\
adds r0, r1, r3\n\
ldrh r0, [r0]\n\
cmp r0, #0\n\
bne _08032ECE\n\
ldr r3, _08032F2C @ =0x0000061C\n\
adds r0, r1, r3\n\
ldrb r0, [r0]\n\
lsls r0, r0, #0x18\n\
asrs r0, r0, #0x18\n\
cmp r0, #0\n\
bne _08032ECE\n\
movs r0, #1\n\
strb r0, [r2]\n\
_08032ECE:\n\
ldr r0, [r5]\n\
ldr r2, _08032F34 @ =0x00000713\n\
adds r1, r0, r2\n\
movs r4, #0\n\
ldrsb r4, [r1, r4]\n\
subs r2, #1\n\
adds r0, r0, r2\n\
ldrb r0, [r0]\n\
strb r0, [r1]\n\
ldr r0, [r5]\n\
ldr r3, _08032F38 @ =0x00000711\n\
adds r1, r0, r3\n\
ldrb r1, [r1]\n\
adds r0, r0, r2\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
subs r2, #2\n\
adds r1, r0, r2\n\
ldrb r1, [r1]\n\
adds r0, r0, r3\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
adds r0, r0, r2\n\
strb r4, [r0]\n\
ldr r0, [r5]\n\
adds r3, #9\n\
adds r1, r0, r3\n\
movs r4, #0\n\
ldrsb r4, [r1, r4]\n\
subs r3, #1\n\
adds r0, r0, r3\n\
ldrb r0, [r0]\n\
strb r0, [r1]\n\
ldr r0, [r5]\n\
adds r2, #8\n\
adds r1, r0, r2\n\
ldrb r1, [r1]\n\
adds r0, r0, r3\n\
strb r1, [r0]\n\
ldr r0, [r5]\n\
adds r0, r0, r2\n\
strb r4, [r0]\n\
_08032F22:\n\
pop {r4, r5}\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
_08032F28: .4byte gCurrentPinballGame\n\
_08032F2C: .4byte 0x0000061C\n\
_08032F30: .4byte 0x00000712\n\
_08032F34: .4byte 0x00000713\n\
_08032F38: .4byte 0x00000711\n\
");
int tmp;
if (gCurrentPinballGame->newButtonActions[0])
{
if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->unk1E2 != 2 &&
gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0)
{
gCurrentPinballGame->unk1E2 = 0;
}
tmp = gCurrentPinballGame->unk710;
gCurrentPinballGame->unk710 = gCurrentPinballGame->unk711;
gCurrentPinballGame->unk711 = gCurrentPinballGame->unk712;
gCurrentPinballGame->unk712 = gCurrentPinballGame->unk713;
gCurrentPinballGame->unk713 = tmp;
tmp = gCurrentPinballGame->unk718;
gCurrentPinballGame->unk718 = gCurrentPinballGame->unk719;
gCurrentPinballGame->unk719 = gCurrentPinballGame->unk71A;
gCurrentPinballGame->unk71A = tmp;
}
if (gCurrentPinballGame->newButtonActions[1])
{
if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->unk1E2 != 2 &&
gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0)
{
gCurrentPinballGame->unk1E2 = 1;
}
tmp = gCurrentPinballGame->unk713;
gCurrentPinballGame->unk713 = gCurrentPinballGame->unk712;
gCurrentPinballGame->unk712 = gCurrentPinballGame->unk711;
gCurrentPinballGame->unk711 = gCurrentPinballGame->unk710;
gCurrentPinballGame->unk710 = tmp;
tmp = gCurrentPinballGame->unk71A;
gCurrentPinballGame->unk71A = gCurrentPinballGame->unk719;
gCurrentPinballGame->unk719 = gCurrentPinballGame->unk718;
gCurrentPinballGame->unk718 = tmp;
}
}
void sub_32F3C(void)