AllBoardProcess_2A_4D6C4

This commit is contained in:
Marcus Huderle 2025-08-15 08:52:41 -05:00
parent 10fe2eefda
commit 604696a8a3
4 changed files with 86 additions and 319 deletions

View File

@ -972,321 +972,3 @@ _0804D6B4: .4byte 0x00000199
_0804D6B8: .4byte 0x040000D4
_0804D6BC: .4byte 0x060022C0
_0804D6C0: .4byte 0x80000040
thumb_func_start AllBoardProcess_2A_4D6C4
AllBoardProcess_2A_4D6C4: @ 0x0804D6C4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
movs r0, #0
mov ip, r0
ldr r0, _0804D7B0 @ =gMain
ldrb r2, [r0, #4]
movs r3, #0
adds r7, r0, #0
cmp r2, #0
beq _0804D6E6
ldr r3, _0804D7B4 @ =0x0000FFE8
cmp r2, #1
beq _0804D6E6
movs r3, #0
movs r1, #8
mov ip, r1
_0804D6E6:
ldrb r0, [r7, #4]
cmp r0, #1
bls _0804D6EE
b _0804D810
_0804D6EE:
ldr r6, _0804D7B8 @ =gCurrentPinballGame
ldr r1, [r6]
lsls r0, r3, #0x10
asrs r0, r0, #0x10
subs r0, #0xf4
ldr r4, _0804D7BC @ =0x000005FC
adds r2, r1, r4
movs r5, #0
movs r3, #0
strh r0, [r2]
ldr r2, _0804D7C0 @ =0x000005FE
adds r0, r1, r2
strh r3, [r0]
ldr r0, _0804D7C4 @ =0x000005FB
adds r1, r1, r0
strb r5, [r1]
ldr r6, [r6]
ldr r0, _0804D7C8 @ =gUnknown_02031520
ldrh r1, [r0, #0x14]
adds r3, r6, #0
adds r3, #0x4c
strh r1, [r3]
ldrh r1, [r0, #0x16]
adds r5, r6, #0
adds r5, #0x4e
strh r1, [r5]
movs r1, #0x16
ldrsh r0, [r0, r1]
lsls r0, r0, #8
str r0, [r6, #0x54]
ldrh r1, [r3]
adds r0, r6, #0
adds r0, #0x58
strh r1, [r0]
adds r4, r6, r4
ldrh r0, [r4]
ldrh r2, [r5]
adds r0, r0, r2
adds r1, r6, #0
adds r1, #0x5a
strh r0, [r1]
ldrh r1, [r3]
mov r0, ip
lsls r2, r0, #0x10
asrs r2, r2, #0x10
adds r1, r2, r1
mov ip, r1
movs r1, #0xbc
lsls r1, r1, #2
adds r0, r7, r1
mov r1, ip
strh r1, [r0]
ldrh r0, [r4]
ldrh r1, [r5]
adds r0, r0, r1
ldr r1, _0804D7CC @ =0x000002F2
strh r0, [r1, r7]
ldrh r0, [r3]
adds r0, r2, r0
adds r1, #2
strh r0, [r1, r7]
ldrh r0, [r4]
ldrh r1, [r5]
adds r0, r0, r1
ldr r1, _0804D7D0 @ =0x000002F6
strh r0, [r1, r7]
ldrh r0, [r3]
adds r2, r2, r0
subs r1, #0xa
adds r0, r7, r1
strh r2, [r0]
ldrh r0, [r4]
ldrh r5, [r5]
adds r0, r0, r5
ldr r2, _0804D7D4 @ =0x000002EE
adds r1, r7, r2
strh r0, [r1]
ldrb r0, [r7, #4]
cmp r0, #0
bne _0804D7E4
ldr r5, _0804D7D8 @ =0x00000283
adds r0, r6, r5
ldrb r0, [r0]
movs r1, #5
bl __udivsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0804D7DC
movs r0, MUS_FIELD_RUBY
bl m4aSongNumStart
b _0804D90E
.align 2, 0
_0804D7B0: .4byte gMain
_0804D7B4: .4byte 0x0000FFE8
_0804D7B8: .4byte gCurrentPinballGame
_0804D7BC: .4byte 0x000005FC
_0804D7C0: .4byte 0x000005FE
_0804D7C4: .4byte 0x000005FB
_0804D7C8: .4byte gUnknown_02031520
_0804D7CC: .4byte 0x000002F2
_0804D7D0: .4byte 0x000002F6
_0804D7D4: .4byte 0x000002EE
_0804D7D8: .4byte 0x00000283
_0804D7DC:
movs r0, MUS_FIELD_RUBY2
bl m4aSongNumStart
b _0804D90E
_0804D7E4:
ldr r7, _0804D804 @ =0x00000283
adds r0, r6, r7
ldrb r0, [r0]
movs r1, #5
bl __udivsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0804D808
movs r0, MUS_FIELD_SAPPHIRE
bl m4aSongNumStart
b _0804D90E
.align 2, 0
_0804D804: .4byte 0x00000283
_0804D808:
movs r0, MUS_FIELD_SAPPHIRE2
bl m4aSongNumStart
b _0804D90E
_0804D810:
ldr r3, _0804D838 @ =gCurrentPinballGame
ldr r1, [r3]
ldr r2, _0804D83C @ =0x000005FC
adds r0, r1, r2
movs r4, #0
movs r2, #0
strh r2, [r0]
ldr r5, _0804D840 @ =0x000005FE
adds r0, r1, r5
strh r2, [r0]
ldr r0, _0804D844 @ =0x000005FB
adds r1, r1, r0
strb r4, [r1]
ldrb r0, [r7, #4]
cmp r0, #3
bhi _0804D84C
ldr r0, [r3]
adds r0, #0xe6
ldr r1, _0804D848 @ =0x0000FFE8
b _0804D862
.align 2, 0
_0804D838: .4byte gCurrentPinballGame
_0804D83C: .4byte 0x000005FC
_0804D840: .4byte 0x000005FE
_0804D844: .4byte 0x000005FB
_0804D848: .4byte 0x0000FFE8
_0804D84C:
cmp r0, #6
bne _0804D85C
ldr r0, [r3]
adds r0, #0xe6
ldr r1, _0804D858 @ =0x0000FFA8
b _0804D862
.align 2, 0
_0804D858: .4byte 0x0000FFA8
_0804D85C:
ldr r0, [r3]
adds r0, #0xe6
ldr r1, _0804D93C @ =0x0000FFC0
_0804D862:
strh r1, [r0]
ldr r0, _0804D940 @ =gCurrentPinballGame
ldr r5, [r0]
ldr r1, _0804D944 @ =gUnknown_02031520
ldrh r0, [r1, #0x14]
adds r4, r5, #0
adds r4, #0x4c
strh r0, [r4]
adds r0, r5, #0
adds r0, #0xe6
ldrh r0, [r0]
ldrh r2, [r1, #0x16]
adds r0, r0, r2
adds r6, r5, #0
adds r6, #0x4e
strh r0, [r6]
movs r7, #0x16
ldrsh r0, [r1, r7]
lsls r0, r0, #8
str r0, [r5, #0x54]
ldrh r1, [r4]
adds r0, r5, #0
adds r0, #0x58
strh r1, [r0]
ldr r1, _0804D948 @ =0x000005FC
adds r0, r5, r1
ldrh r0, [r0]
ldrh r2, [r6]
adds r0, r0, r2
adds r1, r5, #0
adds r1, #0x5a
strh r0, [r1]
ldr r3, _0804D94C @ =gMain
ldrh r0, [r4]
mov r7, ip
lsls r1, r7, #0x10
asrs r1, r1, #0x10
adds r0, r1, r0
mov r8, r0
movs r2, #0xbc
lsls r2, r2, #2
adds r0, r3, r2
mov r7, r8
strh r7, [r0]
ldrh r2, [r6]
ldr r7, _0804D950 @ =0x000002F2
adds r0, r3, r7
strh r2, [r0]
ldrh r0, [r4]
adds r0, r1, r0
movs r2, #0xbd
lsls r2, r2, #2
adds r2, r2, r3
mov ip, r2
strh r0, [r2]
ldrh r2, [r6]
adds r7, #4
adds r0, r3, r7
strh r2, [r0]
ldrh r0, [r4]
adds r1, r1, r0
movs r2, #0xbb
lsls r2, r2, #2
adds r0, r3, r2
strh r1, [r0]
movs r7, #0
ldrsh r0, [r6, r7]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
adds r2, #2
adds r1, r3, r2
strh r0, [r1]
ldrb r0, [r3, #4]
cmp r0, #3
bne _0804D90E
movs r7, #0xa4
lsls r7, r7, #2
adds r0, r5, r7
ldr r0, [r0]
ldr r1, _0804D954 @ =0x000007FF
ands r0, r1
lsrs r0, r0, #3
add r0, r8
mov r1, ip
strh r0, [r1]
_0804D90E:
ldr r1, _0804D94C @ =gMain
ldr r5, _0804D958 @ =0x000002EA
adds r2, r1, r5
movs r0, #0x50
strh r0, [r2]
ldr r0, _0804D940 @ =gCurrentPinballGame
ldr r2, [r0]
ldr r7, _0804D95C @ =0x000002F6
adds r1, r1, r7
ldrh r1, [r1]
adds r0, r2, #0
adds r0, #0xcc
strh r1, [r0]
subs r0, #2
strh r1, [r0]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r2, #0x2c]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804D93C: .4byte 0x0000FFC0
_0804D940: .4byte gCurrentPinballGame
_0804D944: .4byte gUnknown_02031520
_0804D948: .4byte 0x000005FC
_0804D94C: .4byte gMain
_0804D950: .4byte 0x000002F2
_0804D954: .4byte 0x000007FF
_0804D958: .4byte 0x000002EA
_0804D95C: .4byte 0x000002F6

Binary file not shown.

View File

@ -722,7 +722,8 @@ struct Unk02031520_unk14
/* These field offsets are intentionally kept as relative to
struct Unk02031520 to make decompiling easier. This struct
is basically always accessed relative to struct Unk02031520. */
/*0x14*/ u8 filler14[0x4];
/*0x14*/ s16 unk14;
/*0x16*/ s16 unk16;
/*0x18*/ s16 unk18;
/*0x1A*/ s16 unk1A;
/*0x1C*/ u16 unk1C;

View File

@ -4,6 +4,90 @@
#include "constants/bg_music.h"
void AllBoardProcess_2A_4D6C4(void)
{
s16 var0;
s16 var1;
var0 = 0;
if (gMain.selectedField == FIELD_RUBY)
{
var1 = 0;
}
else if (gMain.selectedField == FIELD_SAPPHIRE)
{
var1 = -24;
}
else
{
var1 = 0;
var0 = 8;
}
if (gMain.selectedField < MAIN_FIELD_COUNT)
{
gCurrentPinballGame->unk5FC = var1 - 244;
gCurrentPinballGame->unk5FE = 0;
gCurrentPinballGame->unk5FB = 0;
gCurrentPinballGame->unk4C = gUnknown_02031520.unk14.unk14;
gCurrentPinballGame->unk4E = gUnknown_02031520.unk14.unk16;
gCurrentPinballGame->unk54 = gUnknown_02031520.unk14.unk16 << 8;
gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C;
gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC;
gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC;
gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[3].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC;
gMain.bgOffsets[1].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC;
if (gMain.selectedField == FIELD_RUBY)
{
if ((gCurrentPinballGame->numCompletedBonusStages / 5) % 2 == 0)
m4aSongNumStart(MUS_FIELD_RUBY);
else
m4aSongNumStart(MUS_FIELD_RUBY2);
}
else
{
if ((gCurrentPinballGame->numCompletedBonusStages / 5) % 2 == 0)
m4aSongNumStart(MUS_FIELD_SAPPHIRE);
else
m4aSongNumStart(MUS_FIELD_SAPPHIRE2);
}
}
else
{
gCurrentPinballGame->unk5FC = 0;
gCurrentPinballGame->unk5FE = 0;
gCurrentPinballGame->unk5FB = 0;
if (gMain.selectedField <= FIELD_KECLEON)
gCurrentPinballGame->unkE6 = -24;
else if (gMain.selectedField == FIELD_RAYQUAZA)
gCurrentPinballGame->unkE6 = -88;
else
gCurrentPinballGame->unkE6 = -64;
gCurrentPinballGame->unk4C = gUnknown_02031520.unk14.unk14;
gCurrentPinballGame->unk4E = gUnknown_02031520.unk14.unk16 + gCurrentPinballGame->unkE6;
gCurrentPinballGame->unk54 = gUnknown_02031520.unk14.unk16 << 8;
gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C;
gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC;
gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unk4E;
gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[3].yOffset = gCurrentPinballGame->unk4E;
gMain.bgOffsets[1].xOffset = gCurrentPinballGame->unk4C + var0;
gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unk4E / 2;
if (gMain.selectedField == FIELD_KECLEON)
gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset + (gCurrentPinballGame->unk290 & 0x7FF) / 8;
}
gMain.bgOffsets[0].yOffset = 80;
gCurrentPinballGame->unkCC = gMain.bgOffsets[3].yOffset;
gCurrentPinballGame->unkCA = gCurrentPinballGame->unkCC;
gCurrentPinballGame->unk2C = 0x1000;
}
void MainBoardProcess_2B_4D960(void)
{
int var0;