MainBoardProcess_2B_4D960

This commit is contained in:
Marcus Huderle 2025-08-15 08:13:17 -05:00
parent 9dacf710bb
commit 10fe2eefda
4 changed files with 90 additions and 335 deletions

View File

@ -1290,337 +1290,3 @@ _0804D950: .4byte 0x000002F2
_0804D954: .4byte 0x000007FF
_0804D958: .4byte 0x000002EA
_0804D95C: .4byte 0x000002F6
thumb_func_start MainBoardProcess_2B_4D960
MainBoardProcess_2B_4D960: @ 0x0804D960
push {r4, r5, r6, r7, lr}
movs r7, #0x80
lsls r7, r7, #5
ldr r0, _0804D9A4 @ =gMain
ldrb r0, [r0, #0xf]
cmp r0, #0
bne _0804D972
bl sub_4E2F8
_0804D972:
ldr r1, _0804D9A8 @ =gCurrentPinballGame
ldr r2, [r1]
ldr r0, _0804D9AC @ =0x000005FB
adds r4, r2, r0
movs r0, #0
ldrsb r0, [r4, r0]
adds r6, r1, #0
cmp r0, #0
beq _0804D9C2
ldr r3, _0804D9B0 @ =0x000005FC
adds r1, r2, r3
ldr r5, _0804D9B4 @ =0x000005FE
adds r0, r2, r5
ldrh r3, [r1]
movs r5, #0
ldrsh r2, [r1, r5]
movs r5, #0
ldrsh r0, [r0, r5]
cmp r2, r0
beq _0804D9BE
cmp r2, r0
ble _0804D9B8
subs r0, r3, #1
strh r0, [r1]
b _0804D9C2
.align 2, 0
_0804D9A4: .4byte gMain
_0804D9A8: .4byte gCurrentPinballGame
_0804D9AC: .4byte 0x000005FB
_0804D9B0: .4byte 0x000005FC
_0804D9B4: .4byte 0x000005FE
_0804D9B8:
adds r0, r3, #1
strh r0, [r1]
b _0804D9C2
_0804D9BE:
movs r0, #0
strb r0, [r4]
_0804D9C2:
ldr r5, [r6]
ldrb r0, [r5, #0x1f]
cmp r0, #0
bne _0804D9E0
ldr r1, _0804DA2C @ =0x00001330
adds r0, r5, r1
ldr r0, [r0]
movs r2, #0x32
ldrsh r1, [r0, r2]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
movs r3, #0x80
lsls r3, r3, #5
adds r7, r0, r3
_0804D9E0:
ldr r4, [r5, #0x2c]
subs r0, r7, r4
movs r1, #0xa
bl __divsi3
adds r4, r4, r0
str r4, [r5, #0x2c]
ldr r1, _0804DA2C @ =0x00001330
adds r0, r5, r1
ldr r0, [r0]
ldr r0, [r0, #0x38]
adds r1, r0, r4
ldr r2, _0804DA30 @ =gUnknown_02031520
movs r3, #0x18
ldrsh r0, [r2, r3]
lsls r0, r0, #8
cmp r1, r0
bgt _0804DA0E
movs r4, #0x1a
ldrsh r0, [r2, r4]
lsls r0, r0, #8
cmp r1, r0
bge _0804DA10
_0804DA0E:
adds r1, r0, #0
_0804DA10:
ldr r5, _0804DA34 @ =0xFFFFB000
adds r1, r1, r5
ldr r0, [r6]
ldr r4, [r0, #0x54]
subs r0, r1, r4
movs r1, #0xc
bl __divsi3
adds r1, r0, #0
cmp r1, #0
ble _0804DA38
cmp r1, #0x4f
bgt _0804DA42
b _0804DA40
.align 2, 0
_0804DA2C: .4byte 0x00001330
_0804DA30: .4byte gUnknown_02031520
_0804DA34: .4byte 0xFFFFB000
_0804DA38:
movs r0, #0x50
rsbs r0, r0, #0
cmp r1, r0
ble _0804DA42
_0804DA40:
movs r1, #0
_0804DA42:
adds r4, r4, r1
ldr r1, [r6]
ldr r2, _0804DA7C @ =0x000005FA
adds r0, r1, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bne _0804DAAC
str r4, [r1, #0x54]
adds r0, r4, #0
cmp r0, #0
bge _0804DA5E
adds r0, #0xff
_0804DA5E:
asrs r0, r0, #8
adds r2, r1, #0
adds r2, #0x4e
strh r0, [r2]
ldr r3, _0804DA80 @ =0x00001330
adds r0, r1, r3
ldr r0, [r0]
movs r4, #0x10
ldrsh r0, [r0, r4]
cmp r0, #0xe5
ble _0804DA84
adds r1, #0x4c
ldrh r0, [r1]
adds r0, #1
b _0804DA8A
.align 2, 0
_0804DA7C: .4byte 0x000005FA
_0804DA80: .4byte 0x00001330
_0804DA84:
adds r1, #0x4c
ldrh r0, [r1]
subs r0, #1
_0804DA8A:
strh r0, [r1]
ldr r0, _0804DAA0 @ =gCurrentPinballGame
ldr r0, [r0]
adds r1, r0, #0
adds r1, #0x4c
movs r5, #0
ldrsh r0, [r1, r5]
cmp r0, #0x10
ble _0804DAA4
movs r0, #0x10
b _0804DAAA
.align 2, 0
_0804DAA0: .4byte gCurrentPinballGame
_0804DAA4:
cmp r0, #0
bge _0804DAAC
movs r0, #0
_0804DAAA:
strh r0, [r1]
_0804DAAC:
bl sub_4DFA0
ldr r3, _0804DB14 @ =gMain
ldr r0, _0804DB18 @ =gCurrentPinballGame
ldr r4, [r0]
adds r2, r4, #0
adds r2, #0x4c
movs r1, #0x90
lsls r1, r1, #1
adds r0, r4, r1
movs r1, #0
ldrsb r1, [r0, r1]
ldrh r2, [r2]
adds r1, r1, r2
ldr r2, _0804DB1C @ =0x000002AA
adds r0, r4, r2
ldrh r0, [r0]
adds r0, r0, r1
movs r5, #0xbd
lsls r5, r5, #2
adds r1, r3, r5
strh r0, [r1]
adds r1, r4, #0
adds r1, #0x4e
ldr r2, _0804DB20 @ =0x00000121
adds r0, r4, r2
movs r2, #0
ldrsb r2, [r0, r2]
ldrh r1, [r1]
adds r2, r2, r1
ldr r5, _0804DB24 @ =0x000005FC
adds r0, r4, r5
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0xe6
adds r1, r1, r2
ldrh r0, [r0]
adds r1, r1, r0
adds r0, r4, #0
adds r0, #0xcc
strh r1, [r0]
ldr r0, _0804DB28 @ =0x000002F6
adds r3, r3, r0
ldrh r0, [r3]
subs r0, r0, r1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
asrs r1, r0, #0x10
cmp r1, #8
ble _0804DB2C
movs r2, #8
b _0804DB36
.align 2, 0
_0804DB14: .4byte gMain
_0804DB18: .4byte gCurrentPinballGame
_0804DB1C: .4byte 0x000002AA
_0804DB20: .4byte 0x00000121
_0804DB24: .4byte 0x000005FC
_0804DB28: .4byte 0x000002F6
_0804DB2C:
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
bge _0804DB36
ldr r2, _0804DBE0 @ =0x0000FFF8
_0804DB36:
ldr r3, _0804DBE4 @ =gMain
cmp r2, #0
beq _0804DB46
ldr r4, _0804DBE8 @ =0x000002F6
adds r1, r3, r4
ldrh r0, [r1]
subs r0, r0, r2
strh r0, [r1]
_0804DB46:
movs r5, #0xbd
lsls r5, r5, #2
adds r0, r3, r5
ldrh r2, [r0]
movs r1, #0xbc
lsls r1, r1, #2
adds r0, r3, r1
strh r2, [r0]
ldr r4, _0804DBE8 @ =0x000002F6
adds r0, r3, r4
ldrh r1, [r0]
subs r5, #2
adds r0, r3, r5
strh r1, [r0]
subs r4, #0xa
adds r0, r3, r4
strh r2, [r0]
subs r5, #4
adds r0, r3, r5
strh r1, [r0]
ldr r0, _0804DBEC @ =gCurrentPinballGame
ldr r4, [r0]
adds r2, r4, #0
adds r2, #0x4c
movs r1, #0x90
lsls r1, r1, #1
adds r0, r4, r1
movs r1, #0
ldrsb r1, [r0, r1]
ldrh r2, [r2]
adds r1, r1, r2
ldr r2, _0804DBF0 @ =0x000002AA
adds r0, r4, r2
ldrh r0, [r0]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x58
strh r0, [r1]
adds r6, r4, #0
adds r6, #0x4e
ldr r3, _0804DBF4 @ =0x00000121
adds r3, r3, r4
mov ip, r3
movs r1, #0
ldrsb r1, [r3, r1]
ldrh r5, [r6]
adds r1, r1, r5
ldr r0, _0804DBF8 @ =0x000005FC
adds r3, r4, r0
ldrh r0, [r3]
adds r5, r4, #0
adds r5, #0xe6
adds r0, r0, r1
ldrh r1, [r5]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x5a
strh r0, [r1]
adds r2, r4, #0
adds r2, #0x68
ldrh r1, [r2]
adds r0, r4, #0
adds r0, #0x6a
strh r1, [r0]
mov r4, ip
movs r1, #0
ldrsb r1, [r4, r1]
ldrh r6, [r6]
adds r1, r1, r6
ldrh r0, [r3]
adds r0, r0, r1
ldrh r5, [r5]
adds r0, r0, r5
strh r0, [r2]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804DBE0: .4byte 0x0000FFF8
_0804DBE4: .4byte gMain
_0804DBE8: .4byte 0x000002F6
_0804DBEC: .4byte gCurrentPinballGame
_0804DBF0: .4byte 0x000002AA
_0804DBF4: .4byte 0x00000121
_0804DBF8: .4byte 0x000005FC

Binary file not shown.

View File

@ -653,7 +653,7 @@ extern void PinballGame_State0_49ED4(void);
//extern ? MainBoardProcess_2B_4D960();
//extern ? BonusBoardProcess_2B_4DBFC();
extern void sub_4DFA0(void);
//extern ? sub_4E2F8();
extern void sub_4E2F8(void);
extern void sub_4E468(void);
extern void sub_4E598(void);
extern void sub_4E814(void);

View File

@ -4,6 +4,95 @@
#include "constants/bg_music.h"
void MainBoardProcess_2B_4D960(void)
{
int var0;
int var1;
int var2;
s16 var3;
int var4;
var0 = 0x1000;
if (gMain.unkF == 0)
sub_4E2F8();
if (gCurrentPinballGame->unk5FB)
{
if (gCurrentPinballGame->unk5FC != gCurrentPinballGame->unk5FE)
{
if (gCurrentPinballGame->unk5FC > gCurrentPinballGame->unk5FE)
gCurrentPinballGame->unk5FC--;
else
gCurrentPinballGame->unk5FC++;
}
else
{
gCurrentPinballGame->unk5FB = 0;
}
}
if (gCurrentPinballGame->unk1F == 0)
var0 = (gCurrentPinballGame->unk1330->velocity.y * 40) + 0x1000;
gCurrentPinballGame->unk2C += (var0 - gCurrentPinballGame->unk2C) / 10;
var1 = gCurrentPinballGame->unk1330->positionQ8.y + gCurrentPinballGame->unk2C;
if (var1 > gUnknown_02031520.unk14.unk18 << 8)
var1 = gUnknown_02031520.unk14.unk18 << 8;
else if (var1 < gUnknown_02031520.unk14.unk1A << 8)
var1 = gUnknown_02031520.unk14.unk1A << 8;
var1 -= 0x5000;
var4 = gCurrentPinballGame->unk54;
var2 = (var1 - var4) / 12;
if (var2 > 0)
{
if (var2 < 80)
var2 = 0;
}
else
{
if (var2 > -80)
var2 = 0;
}
var4 += var2;
if (gCurrentPinballGame->unk5FA == 0)
{
gCurrentPinballGame->unk54 = var4;
gCurrentPinballGame->unk4E = var4 / 0x100;
if (gCurrentPinballGame->unk1330->positionQ0.x >= 230)
gCurrentPinballGame->unk4C++;
else
gCurrentPinballGame->unk4C--;
if (gCurrentPinballGame->unk4C > 16)
gCurrentPinballGame->unk4C = 16;
else if (gCurrentPinballGame->unk4C < 0)
gCurrentPinballGame->unk4C = 0;
}
sub_4DFA0();
gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + gCurrentPinballGame->unk2AA;
gCurrentPinballGame->unkCC = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6;
var3 = gMain.bgOffsets[3].yOffset - gCurrentPinballGame->unkCC;
if (var3 > 8)
var3 = 8;
else if (var3 < -8)
var3 = -8;
if (var3)
gMain.bgOffsets[3].yOffset -= var3;
gMain.bgOffsets[2].xOffset = gMain.bgOffsets[3].xOffset;
gMain.bgOffsets[2].yOffset = gMain.bgOffsets[3].yOffset;
gMain.bgOffsets[1].xOffset = gMain.bgOffsets[3].xOffset;
gMain.bgOffsets[1].yOffset = gMain.bgOffsets[3].yOffset;
gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + gCurrentPinballGame->unk2AA;
gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6;
gCurrentPinballGame->unk6A = gCurrentPinballGame->unk68;
gCurrentPinballGame->unk68 = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6;
}
void BonusBoardProcess_2B_4DBFC(void)
{
int var0;