diff --git a/asm/rom_4CEA8.s b/asm/rom_4CEA8.s index 49b6979..9c744e2 100644 --- a/asm/rom_4CEA8.s +++ b/asm/rom_4CEA8.s @@ -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 diff --git a/expected_objs/sub_4D960.o b/expected_objs/sub_4D960.o deleted file mode 100644 index 698f519..0000000 Binary files a/expected_objs/sub_4D960.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index 384ac91..7c83738 100644 --- a/include/functions.h +++ b/include/functions.h @@ -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); diff --git a/src/rom_4E598.c b/src/rom_4E598.c index 622b685..e24852e 100644 --- a/src/rom_4E598.c +++ b/src/rom_4E598.c @@ -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;