From e8f2ab5bb57ad384ff545a808a1ee9e212d227d4 Mon Sep 17 00:00:00 2001 From: Rainchus Date: Sun, 30 Jun 2024 15:40:01 -0500 Subject: [PATCH] imported all code from master branch --- include/functions.us.h | 1 + include/variables.us.h | 2 - marioparty.yaml | 34 +- .../dkJungleAdventure.h | 1 - .../ovl_40_ResultsScene/ResultsScene.h | 2 - .../2721F0.c | 131 ++- .../2721F0.h | 23 + src/overlays/ovl_46_BowserSpaceEvent/282820.c | 984 +++++++++++++++++- src/overlays/ovl_46_BowserSpaceEvent/282820.h | 31 + src/overlays/ovl_47/285230.c | 82 +- src/overlays/ovl_47/285230.h | 16 + .../ovl_48_BowserVisitDKBoard/285B70.c | 235 ++++- .../ovl_48_BowserVisitDKBoard/285B70.h | 31 + .../ovl_49_BowserVisitPeachBoard/286700.c | 224 +++- .../ovl_49_BowserVisitPeachBoard/286700.h | 18 + .../ovl_50_LoadCannonWarioBoard/28E030.c | 127 ++- .../ovl_50_LoadCannonWarioBoard/28E030.h | 14 + .../28E630.c | 133 ++- src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.c | 67 +- src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.h | 15 + .../ovl_53_BowserVisitWarioBoard/2908F0.h | 10 + .../ovl_55_MoveDoorsLuigiBoard/292020.c | 153 ++- .../ovl_55_MoveDoorsLuigiBoard/292020.h | 27 + .../293260.c | 185 +++- .../293260.h | 21 + src/overlays/ovl_60/29AB30.c | 197 +++- src/overlays/ovl_60/29AB30.h | 20 + src/overlays/ovl_61_OpeningScene/29B410.c | 106 +- src/overlays/ovl_61_OpeningScene/29B410.h | 24 + src/overlays/ovl_62_BoardIntro/2A2500.c | 112 ++ src/overlays/ovl_62_BoardIntro/2A2500.h | 22 + src/overlays/ovl_62_BoardIntro/2A51E0.c | 5 + src/overlays/ovl_62_BoardIntro/2A5420.c | 5 + src/overlays/ovl_62_BoardIntro/2A5840.c | 5 + src/overlays/ovl_62_BoardIntro/2A5E50.c | 15 + src/overlays/ovl_62_BoardIntro/2A6500.c | 27 + src/overlays/ovl_62_BoardIntro/2A6EA0.c | 11 + src/overlays/ovl_62_BoardIntro/2A74F0.c | 5 + src/overlays/ovl_62_BoardIntro/2A76E0.c | 25 + src/overlays/ovl_62_board_intro/2A2500.c | 61 -- src/overlays/ovl_62_board_intro/2A51E0.c | 5 - src/overlays/ovl_62_board_intro/2A5420.c | 5 - src/overlays/ovl_62_board_intro/2A5840.c | 5 - src/overlays/ovl_62_board_intro/2A5E50.c | 15 - src/overlays/ovl_62_board_intro/2A6500.c | 27 - src/overlays/ovl_62_board_intro/2A6EA0.c | 11 - src/overlays/ovl_62_board_intro/2A74F0.c | 5 - src/overlays/ovl_62_board_intro/2A76E0.c | 25 - .../ovl_65_UnknownBooStealScene/2B74A0.c | 48 +- .../ovl_65_UnknownBooStealScene/2B74A0.h | 11 + .../ovl_67_LogosSequenceCopy/2BA9E0.c | 13 +- .../ovl_67_LogosSequenceCopy/2BAA10.c | 79 +- src/overlays/ovl_67_LogosSequenceCopy/logos.h | 40 + .../ovl_68_SaveDataCorrupted/2BB390.c | 11 +- .../ovl_68_SaveDataCorrupted/2BB390.h | 3 + .../ovl_68_SaveDataCorrupted/2BB3C0.c | 55 +- .../ovl_69_GameModeOverworld/2BB5C0.c | 11 +- .../ovl_69_GameModeOverworld/2BB5C0.h | 30 + .../ovl_69_GameModeOverworld/2BB5F0.c | 235 ++++- src/overlays/ovl_70_TestingRoom/2F40C0.c | 296 +++++- src/overlays/ovl_70_TestingRoom/2F40C0.h | 35 + .../ovl_71_MinigameIslandOverworld/2F6FB0.c | 14 +- .../ovl_71_MinigameIslandOverworld/2F6FE0.c | 16 +- src/overlays/ovl_74/2F96E0.c | 15 +- src/overlays/ovl_74/2F9710.c | 141 ++- src/overlays/ovl_75/2FA120.c | 15 +- src/overlays/ovl_75/2FA150.c | 208 +++- src/overlays/ovl_76/2FA8A0.c | 15 +- src/overlays/ovl_76/2FA8D0.c | 130 ++- src/overlays/ovl_79/3005B0.c | 24 +- src/overlays/ovl_79/3005B0.h | 6 + .../ovl_82_MiniGameStadiumStartCopy/316440.c | 26 +- .../ovl_82_MiniGameStadiumStartCopy/316440.h | 6 + .../ovl_83_DebugMinigameMenu/317980.c | 44 +- .../ovl_83_DebugMinigameMenu/317980.h | 7 + symbol_addrs.txt | 4 +- 76 files changed, 4445 insertions(+), 398 deletions(-) create mode 100644 src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.h create mode 100644 src/overlays/ovl_46_BowserSpaceEvent/282820.h create mode 100644 src/overlays/ovl_47/285230.h create mode 100644 src/overlays/ovl_48_BowserVisitDKBoard/285B70.h create mode 100644 src/overlays/ovl_49_BowserVisitPeachBoard/286700.h create mode 100644 src/overlays/ovl_50_LoadCannonWarioBoard/28E030.h create mode 100644 src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.h create mode 100644 src/overlays/ovl_53_BowserVisitWarioBoard/2908F0.h create mode 100644 src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.h create mode 100644 src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.h create mode 100644 src/overlays/ovl_60/29AB30.h create mode 100644 src/overlays/ovl_61_OpeningScene/29B410.h create mode 100644 src/overlays/ovl_62_BoardIntro/2A2500.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A2500.h create mode 100644 src/overlays/ovl_62_BoardIntro/2A51E0.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A5420.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A5840.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A5E50.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A6500.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A6EA0.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A74F0.c create mode 100644 src/overlays/ovl_62_BoardIntro/2A76E0.c delete mode 100644 src/overlays/ovl_62_board_intro/2A2500.c delete mode 100644 src/overlays/ovl_62_board_intro/2A51E0.c delete mode 100644 src/overlays/ovl_62_board_intro/2A5420.c delete mode 100644 src/overlays/ovl_62_board_intro/2A5840.c delete mode 100644 src/overlays/ovl_62_board_intro/2A5E50.c delete mode 100644 src/overlays/ovl_62_board_intro/2A6500.c delete mode 100644 src/overlays/ovl_62_board_intro/2A6EA0.c delete mode 100644 src/overlays/ovl_62_board_intro/2A74F0.c delete mode 100644 src/overlays/ovl_62_board_intro/2A76E0.c create mode 100644 src/overlays/ovl_65_UnknownBooStealScene/2B74A0.h create mode 100644 src/overlays/ovl_67_LogosSequenceCopy/logos.h create mode 100644 src/overlays/ovl_68_SaveDataCorrupted/2BB390.h create mode 100644 src/overlays/ovl_69_GameModeOverworld/2BB5C0.h create mode 100644 src/overlays/ovl_70_TestingRoom/2F40C0.h create mode 100644 src/overlays/ovl_79/3005B0.h create mode 100644 src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.h create mode 100644 src/overlays/ovl_83_DebugMinigameMenu/317980.h diff --git a/include/functions.us.h b/include/functions.us.h index fbe42dd..7f093eb 100644 --- a/include/functions.us.h +++ b/include/functions.us.h @@ -8,6 +8,7 @@ #include "engine/siman.h" typedef s32 func_ptr(void); +void HuPrcSleep(s32); f32 sinf(f32); void func_8006EEB8(s16, u8, u8, s16, s16); void func_8006F3BC(s16, s16, s16, s32, s32); diff --git a/include/variables.us.h b/include/variables.us.h index 844f0e9..472495c 100644 --- a/include/variables.us.h +++ b/include/variables.us.h @@ -32,8 +32,6 @@ extern camera* D_800F32A0; //pointer to camera struct extern u16 D_800F2BC0; extern omObjData* D_800F3FB0[]; extern unk_Struct00* D_800C3110; -extern u8 D_800F6F20; -extern s16 D_800F6EE2; extern s32 D_800EDEC0; extern u8 D_800F37F0; extern s16 D_800F3FA8; diff --git a/marioparty.yaml b/marioparty.yaml index 2f0adac..734f551 100644 --- a/marioparty.yaml +++ b/marioparty.yaml @@ -1781,7 +1781,7 @@ segments: bss_size: 0x10 subsegments: - [0x282820, c] - - [0x285110, data, 282820] #800F8ED0 + - [0x285110, .data, 282820] #800F8ED0 - [0x285210, .rodata, 282820] - {0x285230, type: bss, vram: 0x800F8FF0, name: ovl_46_bss} - type: code @@ -1808,7 +1808,7 @@ segments: bss_size: 0x20 subsegments: - [0x285B70, c] - - [0x286650, data, 285B70] + - [0x286650, .data, 285B70] - [0x2866F0, .rodata, 285B70] - {0x286700, type: bss, vram: 0x800F7170, name: ovl_48_bss} - type: code @@ -1822,7 +1822,7 @@ segments: bss_size: 0x20 subsegments: - [0x286700, c] - - [0x2871F0, data, 286700] #800F70D0 + - [0x2871F0, .data, 286700] #800F70D0 - [0x287290, .rodata, 286700] - {0x2872A0, type: bss, vram: 0x800F7180, name: ovl_49_bss} - type: code @@ -1919,7 +1919,7 @@ segments: bss_size: 0x10 subsegments: - [0x28E030, c] - - [0x28E570, data, 28E030] + - [0x28E570, .data, 28E030] - {0x28E630, type: bss, vram: 0x800F6BE0, name: ovl_50_bss} - type: code start: 0x28E630 @@ -1998,7 +1998,7 @@ segments: bss_size: 0x10 subsegments: - [0x293260, c] - - [0x293A30, data, 293260] + - [0x293A30, .data, 293260] - [0x293A60, .rodata, 293260] - {0x293A70, type: bss, vram: 0x800F6DF0, name: ovl_56_bss} - type: code @@ -2119,7 +2119,7 @@ segments: bss_size: 0x10 subsegments: - [0x29AB30, c] - - [0x29B280, data, 29AB30] + - [0x29B280, .data, 29AB30] - [0x29B3E0, .rodata, 29AB30] - {0x29B410, type: bss, vram: 0x800F6EC0, name: ovl_60_bss} - type: code @@ -2139,7 +2139,7 @@ segments: - type: code start: 0x2A2500 vram: 0x800F65E0 - dir: overlays/ovl_62_board_intro + dir: overlays/ovl_62_BoardIntro name: BoardIntro overlay: True exclusive_ram_id: minigame @@ -2237,8 +2237,8 @@ segments: subsegments: - [0x2BA9E0, c] - [0x2BAA10, c] - - [0x2BB350, data, 2BA9E0] - - [0x2BB370, data, 2BAA10] + - [0x2BB350, .data, 2BA9E0] + - [0x2BB370, .data, 2BAA10] - [0x2BB380, .rodata, 2BAA10] - {0x2BB390, type: bss, vram: 0x800F6F90, name: ovl_67_bss} - type: code @@ -2252,7 +2252,7 @@ segments: subsegments: - [0x2BB390, c] - [0x2BB3C0, c] - - [0x2BB5B0, data, 2BB390] + - [0x2BB5B0, .data, 2BB390] - type: code start: 0x2BB5C0 vram: 0x800F65E0 @@ -2265,7 +2265,7 @@ segments: subsegments: - [0x2BB5C0, c] - [0x2BB5F0, c] - - [0x2BE910, data, 2BB5C0] + - [0x2BE910, .data, 2BB5C0] - [0x2BE920, data, 2BB5F0] - [0x2BF150, .rodata, 2BB5F0] - {0x2BF1A0, type: bss, vram: 0x800FA1C0, name: ovl_69_bss} @@ -2388,7 +2388,7 @@ segments: subsegments: - [0x2F6FB0, c] - [0x2F6FE0, c] - - [0x2F7060, data, 2F6FB0] + - [0x2F7060, .data, 2F6FB0] - type: code start: 0x2F7080 vram: 0x800F65E0 @@ -2431,7 +2431,8 @@ segments: subsegments: - [0x2F96E0, c] - [0x2F9710, c] - - [0x2F9FE0, data, 2F96E0] + - [0x2F9FE0, .data, 2F96E0] + - [0x2FA000, data, 2F9710] - {0x2FA120, type: bss, vram: 0x800F7020, name: ovl_74_bss} - type: code start: 0x2FA120 @@ -2441,10 +2442,12 @@ segments: overlay: True exclusive_ram_id: minigame symbol_name_format: $VRAM_$SEG + bss_size: 0x10 subsegments: - [0x2FA120, c] - [0x2FA150, c] - - [0x2FA760, data, 2FA120] + - [0x2FA760, .data, 2FA120] + - [0x2FA780, data, 2FA150] - {0x2FA8A0, type: bss, vram: 0x800F6D60, name: ovl_75_bss} - type: code start: 0x2FA8A0 @@ -2457,7 +2460,8 @@ segments: subsegments: - [0x2FA8A0, c] - [0x2FA8D0, c] - - [0x2FAC80, data, 2FA8A0] + - [0x2FAC80, .data, 2FA8A0] + - [0x2FACA0, data, 2FA8D0] - type: code start: 0x2FADB0 vram: 0x800F65E0 diff --git a/src/overlays/ovl_36_DKsJungleAdventure/dkJungleAdventure.h b/src/overlays/ovl_36_DKsJungleAdventure/dkJungleAdventure.h index a1de499..4a5b7b4 100644 --- a/src/overlays/ovl_36_DKsJungleAdventure/dkJungleAdventure.h +++ b/src/overlays/ovl_36_DKsJungleAdventure/dkJungleAdventure.h @@ -50,7 +50,6 @@ extern struct D_800F9948_tuple D_800F9948_DKsJungleAdventure[]; // { -2, 0 }, // { -3, 0 }, -extern s16 D_800ED154[]; extern s16 D_800ED172; extern EventTableEntry main_event_table[]; //800FA0CC diff --git a/src/overlays/ovl_40_ResultsScene/ResultsScene.h b/src/overlays/ovl_40_ResultsScene/ResultsScene.h index 05bf06a..626fc18 100644 --- a/src/overlays/ovl_40_ResultsScene/ResultsScene.h +++ b/src/overlays/ovl_40_ResultsScene/ResultsScene.h @@ -5,8 +5,6 @@ void func_8004F548(void); void func_800532E0(void); void func_800F7F1C_ResultsScene(void); void func_800FB054_ResultsScene(void); -extern s16 D_800ED154[]; -extern s16 D_800ED168[]; extern s32 D_800FC430_ResultsScene[4]; extern s32 D_800FC440_ResultsScene; extern s32 D_800FC448_ResultsScene; diff --git a/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.c b/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.c index 11d320f..608b09f 100644 --- a/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.c +++ b/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.c @@ -1,10 +1,43 @@ -#include "common.h" +#include "2721F0.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80108B60_YoshisTropicalIslandEndingScene); +void func_80108B60_YoshisTropicalIslandEndingScene(omObjData* arg0) { + if ((gPlayers[arg0->work[0]].playerObj->unk_34 <= 0.0f) && (gPlayers[arg0->work[0]].playerObj->unk_30 <= 0.0f)) { + gPlayers[arg0->work[0]].playerObj->unk_30 = 0.0f; + return; + } + + gPlayers[arg0->work[0]].playerObj->unk_38 = -4.0f; + gPlayers[arg0->work[0]].playerObj->unk_34 += gPlayers[arg0->work[0]].playerObj->unk_38; + gPlayers[arg0->work[0]].playerObj->unk_30 += gPlayers[arg0->work[0]].playerObj->unk_34; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80108CB8_YoshisTropicalIslandEndingScene); + if (gPlayers[arg0->work[0]].playerObj->unk_30 < 0.0f) { + gPlayers[arg0->work[0]].playerObj->unk_30 = 0.0f; + } + func_800A0D00(&gPlayers[arg0->work[0]].playerObj->coords, gPlayers[arg0->work[0]].playerObj->coords.x, gPlayers[arg0->work[0]].playerObj->unk_30, gPlayers[arg0->work[0]].playerObj->coords.z); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80108D40_YoshisTropicalIslandEndingScene); +void func_80108CB8_YoshisTropicalIslandEndingScene(omObjData* arg0) { + gPlayers[arg0->work[0]].playerObj->unk_30 = 0; + gPlayers[arg0->work[0]].playerObj->unk_34 = 15.0f; + gPlayers[arg0->work[0]].playerObj->unk_38 = -4.0f; + arg0->func_ptr = &func_80108B60_YoshisTropicalIslandEndingScene; +} + +void func_80108D40_YoshisTropicalIslandEndingScene(omObjData* arg0) { + Vec3f sp10; + Vec3f sp20; + Vec3f* temp_s0; + + temp_s0 = &D_80110340_YoshisTropicalIslandEndingScene[arg0->work[1]]; + func_800A0D00(&sp10, arg0->scale.x, arg0->scale.y, arg0->scale.z); + func_800A0D00(&sp20, arg0->rot.x, arg0->rot.y, arg0->rot.z); + arg0->trans.x = sp10.x * temp_s0->z + sp20.x; + arg0->trans.z = sp10.z * temp_s0->z + sp20.z; + arg0->trans.y = (((temp_s0->y * temp_s0->z) + sp10.y) * temp_s0->z) + sp20.y; + if (arg0->trans.y < temp_s0->x) { + arg0->work[0]++; + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80108E20_YoshisTropicalIslandEndingScene); @@ -12,32 +45,104 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/27 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010903C_YoshisTropicalIslandEndingScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80109110_YoshisTropicalIslandEndingScene); +void func_80109110_YoshisTropicalIslandEndingScene(omObjData *arg0) { + s32 temp_s1 = arg0->work[0]; + f32 var_f20 = arg0->rot.x; + f32 new_var; + + var_f20 = var_f20 + 5.0f; + if (var_f20 < 360.0f) { + var_f20 -= 360.0f; + } + + new_var = (-func_800AEAC0(var_f20)) + D_80110448_YoshisTropicalIslandEndingScene[temp_s1]->unk_10; + D_80110448_YoshisTropicalIslandEndingScene[temp_s1]->unk_10 = new_var; + arg0->rot.x = var_f20; +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_801091A4_YoshisTropicalIslandEndingScene); +omObjData* func_801091A4_YoshisTropicalIslandEndingScene(u8 arg0) { + omObjData* temp_v0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010920C_YoshisTropicalIslandEndingScene); + temp_v0 = omAddObj(0x600, 0, 0, -1, &func_80109110_YoshisTropicalIslandEndingScene); + temp_v0->work[0] = arg0; + omSetRot(temp_v0, 0.0f, 0.0f, 0.0f); + return temp_v0; +} + +void func_8010920C_YoshisTropicalIslandEndingScene(Gfx** arg0) { + gDPSetDepthImage(D_800F37DC++, 0x003D0800); + gDPSetColorImage(D_800F37DC++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 0x003D0800); + gSPDisplayList((*arg0)++, &D_8010ECB0_YoshisTropicalIslandEndingScene); + gDPSetColorImage(D_800F37DC++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 0x02000000); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_80109294_YoshisTropicalIslandEndingScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010A740_YoshisTropicalIslandEndingScene); +void func_8010A740_YoshisTropicalIslandEndingScene(omObjData* arg0) { + omObjData* temp_s0; + + arg0->rot.x = arg0->rot.x + 5.0f; + + if (arg0->rot.x >= 360.0f) { + arg0->rot.x -= 360.0f; + } + + D_80110448_YoshisTropicalIslandEndingScene[0]->unk_18 = (sinf((f32) (arg0->rot.x * D_8010F758_YoshisTropicalIslandEndingScene)) * 0.2f); + D_80110448_YoshisTropicalIslandEndingScene[0]->unk_20 = 1.0f; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010A7EC_YoshisTropicalIslandEndingScene); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AA38_YoshisTropicalIslandEndingScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AC24_YoshisTropicalIslandEndingScene); +void func_8010AC24_YoshisTropicalIslandEndingScene(omObjData* arg0) { + arg0->func_ptr = &func_8010AA38_YoshisTropicalIslandEndingScene; + arg0->trans.x = arg0->trans.y = arg0->trans.z = arg0->rot.x = + arg0->rot.y = arg0->rot.z = 0.0f; + + arg0->work[0] = 1; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AC5C_YoshisTropicalIslandEndingScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AE08_YoshisTropicalIslandEndingScene); +void func_8010AE08_YoshisTropicalIslandEndingScene(omObjData* arg0) { + arg0->func_ptr = &func_8010AC5C_YoshisTropicalIslandEndingScene; + arg0->trans.x = arg0->trans.y = arg0->trans.z = arg0->rot.x = arg0->rot.y = arg0->rot.z = 0.0f; + arg0->work[0] = 1; +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AE40_YoshisTropicalIslandEndingScene); +void func_8010AE40_YoshisTropicalIslandEndingScene(omObjData* arg0) { + D_800C34A4 = arg0->rot.x; + + if (arg0->rot.y > 1.0f) { + func_800258EC(*D_80110480_YoshisTropicalIslandEndingScene->unk_3C->unk_40, 4, 4); + return; + } + + func_80026B8C(*D_80110480_YoshisTropicalIslandEndingScene->unk_3C->unk_40, arg0->rot.y, arg0->rot.z, 2); + arg0->rot.x += 39.0f; + + if (arg0->rot.x > 360.0f) { + arg0->rot.x -= 360.0f; + } + arg0->rot.y += 0.05f; + arg0->rot.z = (10.0f - arg0->rot.z) / 30.0f + arg0->rot.z; +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AF58_YoshisTropicalIslandEndingScene); +void func_8010AF58_YoshisTropicalIslandEndingScene(omObjData* arg0) { + arg0->func_ptr = &func_8010AE40_YoshisTropicalIslandEndingScene; + func_80025930(*D_80110480_YoshisTropicalIslandEndingScene->unk_3C->unk_40, 0x22000, 0x20000); + func_80025AD4(*D_80110480_YoshisTropicalIslandEndingScene->unk_3C->unk_40); + func_80026040(*D_80110480_YoshisTropicalIslandEndingScene->unk_3C->unk_40); + arg0->rot.x = arg0->rot.y = 0.0f; + arg0->rot.z = 1.0f; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010AFF8_YoshisTropicalIslandEndingScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010B0C0_YoshisTropicalIslandEndingScene); +void func_8010B0C0_YoshisTropicalIslandEndingScene(omObjData* arg0) { + arg0->func_ptr = &func_8010AFF8_YoshisTropicalIslandEndingScene; + arg0->rot.x = arg0->rot.y = arg0->rot.z = 0.0f; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0", func_8010B0E4_YoshisTropicalIslandEndingScene); diff --git a/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.h b/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.h new file mode 100644 index 0000000..bc49162 --- /dev/null +++ b/src/overlays/ovl_41_YoshisTropicalIslandEndingScene/2721F0.h @@ -0,0 +1,23 @@ +#include "common.h" + +typedef struct unkStruct6 { + char unk_00[0x10]; + f32 unk_10; + char unk_14[4]; + f32 unk_18; + char unk_1C[4]; + f32 unk_20; +} unkStruct6; + +extern unkStruct6* D_80110448_YoshisTropicalIslandEndingScene[]; + +extern Gfx* D_800F37DC; +extern Gfx* D_8010ECB0_YoshisTropicalIslandEndingScene; +extern Vec3f D_80110340_YoshisTropicalIslandEndingScene[]; +void func_8010AA38_YoshisTropicalIslandEndingScene(omObjData*); +void func_80108B60_YoshisTropicalIslandEndingScene(omObjData*); +extern f64 D_8010F758_YoshisTropicalIslandEndingScene; +void func_8010AC5C_YoshisTropicalIslandEndingScene(omObjData*); +extern Object* D_80110480_YoshisTropicalIslandEndingScene; +void func_8010AE40_YoshisTropicalIslandEndingScene(omObjData*); +void func_8010AFF8_YoshisTropicalIslandEndingScene(omObjData*); diff --git a/src/overlays/ovl_46_BowserSpaceEvent/282820.c b/src/overlays/ovl_46_BowserSpaceEvent/282820.c index f581e18..f0aac79 100644 --- a/src/overlays/ovl_46_BowserSpaceEvent/282820.c +++ b/src/overlays/ovl_46_BowserSpaceEvent/282820.c @@ -1,37 +1,983 @@ -#include "common.h" +#include "engine/process.h" +#include "282820.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F65E0_BowserSpaceEvent); +void func_800F677C_BowserSpaceEvent(void); +void func_800F69F0_BowserSpaceEvent(void); +void func_800F6AF8_BowserSpaceEvent(void); +void func_800F7044_BowserSpaceEvent(void); +void func_800F7410_BowserSpaceEvent(void); +void func_800F7BFC_BowserSpaceEvent(void); +void func_800F80EC_BowserSpaceEvent(void); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F66FC_BowserSpaceEvent); +s32 D_800F8ED0_BowserSpaceEvent = 0; +s32 D_800F8ED4_BowserSpaceEvent[] = {0x00000002, 0x0000000C, 0x00000014, 0x00000020, 0x0000029, 0x00000031, 0x0000003A, 0x00000047}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F6744_BowserSpaceEvent); +Vec3f D_800F8EF4_BowserSpaceEvent = {-115.0f, 0.0f, 1120.0f}; +Vec3f D_800F8F00_BowserSpaceEvent = {115.0f, 0.0f, 1520.0f}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F677C_BowserSpaceEvent); +s32 D_800F8F0C_BowserSpaceEvent[] = {0x00000005, 0x000A0068, 0x000A006A, 0x000A006C, 0x000A006D, 0x000A006B}; +s32 D_800F8F24_BowserSpaceEvent[] = {0x00000004, 0x0001003E, 0x0001003D, 0x00010095, 0x00010039}; +s32 D_800F8F38_BowserSpaceEvent[] = {0x00000004, 0x0002003E, 0x0002003D, 0x00020095, 0x00020039}; +s32 D_800F8F4C_BowserSpaceEvent[] = {0x00000004, 0x0006003E, 0x0006003D, 0x00060095, 0x00060039}; +s32 D_800F8F60_BowserSpaceEvent[] = {0x00000004, 0x0003003E, 0x0003003D, 0x00030095, 0x00030039,}; +s32 D_800F8F74_BowserSpaceEvent[] = {0x00000004, 0x0004003E, 0x0004003D, 0x00040095, 0x00040039,}; +s32 D_800F8F88_BowserSpaceEvent[] = {0x00000004, 0x0005003E, 0x0005003D, 0x00050095, 0x00050039,}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F69F0_BowserSpaceEvent); +void* D_800F8F9C_BowserSpaceEvent[] = { + D_800F8F24_BowserSpaceEvent, D_800F8F38_BowserSpaceEvent, D_800F8F4C_BowserSpaceEvent, + D_800F8F60_BowserSpaceEvent, D_800F8F74_BowserSpaceEvent, D_800F8F88_BowserSpaceEvent, +}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F6AF8_BowserSpaceEvent); +void (*D_800F8FB4_BowserSpaceEvent[7])() = { + &func_800F677C_BowserSpaceEvent, &func_800F69F0_BowserSpaceEvent, &func_800F6AF8_BowserSpaceEvent, &func_800F7044_BowserSpaceEvent, &func_800F7410_BowserSpaceEvent, &func_800F7BFC_BowserSpaceEvent, &func_800F80EC_BowserSpaceEvent +}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F7044_BowserSpaceEvent); +//bss +extern u8 D_800F8FF0_BowserSpaceEvent; +extern u8 D_800F8FF1_BowserSpaceEvent; +extern u8 D_800F8FF2_BowserSpaceEvent; +extern u8 D_800F8FF3_BowserSpaceEvent; +extern Object* D_800F8FF4_BowserSpaceEvent; +extern Object* D_800F8FF8_BowserSpaceEvent; +extern u8 D_800F8FFC_BowserSpaceEvent[4]; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F7410_BowserSpaceEvent); +void func_800F65E0_BowserSpaceEvent(void) { + D_800F8FF0_BowserSpaceEvent = D_800ED5C2[0]; + D_800F8FF1_BowserSpaceEvent = D_800ED5DC; + omInitObjMan(50, 10); + func_800F8DF4_BowserSpaceEvent(); + func_800F8C6C_BowserSpaceEvent(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + HidePlayerHUDVisibility(0, 1); + HidePlayerHUDVisibility(1, 1); + HidePlayerHUDVisibility(2, 1); + HidePlayerHUDVisibility(3, 1); + func_8006CEA0(); + omAddPrcObj(func_800F8608_BowserSpaceEvent, 0x300, 0x2000, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F8C20_BowserSpaceEvent); + func_80060128(18); + SetFadeInTypeAndTime(3, 16); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F7BFC_BowserSpaceEvent); +s32 func_800F66FC_BowserSpaceEvent(void) { + s32 currentTurn = D_800ED5C0.currentTurn; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F80EC_BowserSpaceEvent); + if (currentTurn <= 5) { + return 10; + } else if (currentTurn <= 15) { + return 20; + } else if (currentTurn <= 30) { + return 30; + } else if (currentTurn <= 45) { + return 40; + } else { + return 50; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8608_BowserSpaceEvent); +void func_800F6744_BowserSpaceEvent(void) { + func_80055A34(D_800F8FF1_BowserSpaceEvent); + func_80054868(24); + func_80055A34(-1); + HuPrcSleep(20); +} -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", D_800F8FD0_BowserSpaceEvent); +void func_800F677C_BowserSpaceEvent(void) { + char sp10; + s32 windowID; + s32 var_s0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8B1C_BowserSpaceEvent); + if (func_800F66FC_BowserSpaceEvent() > gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount ) { + windowID = CreateTextWindow(40, 60, 18, 3); + LoadStringIntoWindow(windowID, (void*)0xCD, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(145); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + var_s0 = gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount; + } else { + windowID = CreateTextWindow(40, 60, 19, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(windowID, &sp10, 0); + LoadStringIntoWindow(windowID, (void*)0xCC, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(145); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + var_s0 = func_800F66FC_BowserSpaceEvent(); + } + func_800F6744_BowserSpaceEvent(); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + func_80060468(0x44A, gPlayers[D_800F8FF1_BowserSpaceEvent].characterID); + func_80055960(D_800F8FF1_BowserSpaceEvent, -var_s0); + func_800503B0(D_800F8FF1_BowserSpaceEvent, 5); + func_8004F504(D_800F8FF4_BowserSpaceEvent); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + windowID = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(windowID, (void*)0xCE, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(76); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8C20_BowserSpaceEvent); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8C6C_BowserSpaceEvent); +void func_800F69F0_BowserSpaceEvent(void) { + s32 windowID; + s32 i; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8DC0_BowserSpaceEvent); + windowID = CreateTextWindow(40, 60, 19, 3); + LoadStringIntoWindow(windowID, (void*)0xCF, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x91); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8DF4_BowserSpaceEvent); + for (i = 0; i < 4; i++) { + if (i == D_800F8FF1_BowserSpaceEvent) { + gPlayers[i].unk_00 = 0; + } else { + gPlayers[i].unk_00 = 1; + } + } + D_800F8ED0_BowserSpaceEvent = 1; + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 2, 0); + HuPrcSleep(30); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_46_BowserSpaceEvent/282820", func_800F8EA8_BowserSpaceEvent); +void func_800F6AF8_BowserSpaceEvent(void) { + s32 windowID; + s32 temp_s4; + s32 temp_s2; + s32 var_a0; + s32 var_s0; + s32 i; + s32 var_s3; + s32 var_v1; + + var_s3 = 0; + windowID = CreateTextWindow(40, 60, 19, 4); + LoadStringIntoWindow(windowID, (void*)0xD4, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(145); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + func_80054868(0); + HuPrcSleep(20); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 2, 0); + func_8004F40C(D_800F8FF4_BowserSpaceEvent, 0, 2); + PlaySound(0x56); + func_8005546C(0); + func_8005546C(1); + func_8005546C(2); + func_8005546C(3); + + for (i = 0; i < 60; i++) { + func_800546B4(0, i % 5); + func_800546B4(1, i % 5); + func_800546B4(2, i % 5); + func_800546B4(3, i % 5); + HuPrcVSleep(); + } + + temp_s2 = 0; + + for (i = 0; i < 4; i++) { + temp_s2 += gPlayers[i].coinAmount; + } + + if (temp_s2 >= 0) { + var_s0 = temp_s2; + } else { + var_s0 = temp_s2 + 3; + } + + temp_s2 = var_s0 >> 2; + + if (gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount < temp_s2) { + var_s3 = 1; + } else if (temp_s2 < gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount) { + var_s3 = 2; + } + + var_a0 = -1; + var_v1 = 0; + + for (i = 0; i < 4; i++) { + if (var_v1 < (temp_s2 - gPlayers[i].coinAmount)) { + if (var_a0 != -1) { + D_800F8FFC_BowserSpaceEvent[var_a0] = 0; + } + D_800F8FFC_BowserSpaceEvent[i] = 1; + var_a0 = i; + var_v1 = temp_s2 - gPlayers[i].coinAmount; + } else { + D_800F8FFC_BowserSpaceEvent[i] = 0; + } + } + + temp_s4 = gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount; + + for (i = 0; i < 4; i++) { + func_80055810(i, temp_s2 - gPlayers[i].coinAmount, D_800F8FFC_BowserSpaceEvent[i]); + if ((temp_s2 - gPlayers[i].coinAmount) < 0) { + func_800503B0(i, 5); + } + } + + for (i = 0; i < 30; i++) { + func_800546B4(0, i % 5); + func_800546B4(1, i % 5); + func_800546B4(2, i % 5); + func_800546B4(3, i % 5); + HuPrcVSleep(); + } + + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_80055544(0); + func_80055544(1); + func_80055544(2); + func_80055544(3); + windowID = CreateTextWindow(80, 60, 14, 4); + LoadStringIntoWindow(windowID, (void*)0xD5, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4C); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 2); + switch (var_s3) { + case 1: + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 3, 0); + if (temp_s4 + 10 <= gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount) { + func_80060468(0x451, gPlayers[D_800F8FF1_BowserSpaceEvent].characterID); + HuPrcSleep(10); + } + break; + case 2: + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + if (temp_s4 - 10 >= gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount) { + func_80060468(0x44A, gPlayers[D_800F8FF1_BowserSpaceEvent].characterID); + HuPrcSleep(10); + } + break; + } + HuPrcSleep(30); +} + +void func_800F7044_BowserSpaceEvent(void) { + char sp10; + s32 windowID; + s32 var_a2; + s32 var_s0_2; + s32 i; + + if (D_800C597A == 0) { + windowID = CreateTextWindow(60, 60, 16, 3); + LoadStringIntoWindow(windowID, (void*)0xD6, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x91); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + + for (i = 0; i < 4; i++) { + if (i == D_800F8FF1_BowserSpaceEvent) + gPlayers[i].unk_00 = 0; + else { + gPlayers[i].unk_00 = 1; + } + + } + + D_800F8ED0_BowserSpaceEvent = 2; + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 2, 0); + HuPrcSleep(0x1E); + return; + } + + if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins == 0) { + windowID = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(windowID, (void*)0xD9, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4D); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + var_s0_2 = 0xF; + } else { + windowID = CreateTextWindow(60, 60, 16, 3); + var_a2 = gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins; + + if (var_a2 < 0) { + var_a2 = -var_a2; + } + + sprintf(&sp10, "%d", var_a2); + func_8006DA5C(windowID, &sp10, 1); + LoadStringIntoWindow(windowID, (void*)0xD7, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4D); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + var_s0_2 = -gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins; + } + + func_800F6744_BowserSpaceEvent(); + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + if (var_s0_2 >= 10) { + func_80060468(0x44A, gPlayers[D_800F8FF1_BowserSpaceEvent].characterID); + } + + func_80055960(D_800F8FF1_BowserSpaceEvent, -var_s0_2); + func_800503B0(D_800F8FF1_BowserSpaceEvent, 5); + + for (i = 0; i < 4; i++) { + if (i != D_800F8FF1_BowserSpaceEvent) { + func_80055810(i, gPlayers[i].miniGameCoins, 0); + } + } + + func_8004F504(D_800F8FF4_BowserSpaceEvent); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + windowID = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(windowID, (void*)0xD8, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4C); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); +} + +void func_800F7410_BowserSpaceEvent(void) { + char sp10; + s32 var_a1_2; + s32 var_s2; + s32 var_s1; + s32 var_s4; + s32 i; + s32 tempVar; + + var_s2 = 0; + if (D_800C597A == 0) { + var_s1 = CreateTextWindow(40, 60, 19, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + LoadStringIntoWindow(var_s1, (void*)0xDA, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x91); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + + for (i = 0; i < 4; i++) { + gPlayers[i].unk_00 = i; + } + + D_800F8ED0_BowserSpaceEvent = 3; + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 2, 0); + HuPrcSleep(0x1E); + return; + } + + var_s4 = 0; + + for (i = 0; i < 4; i++) { + switch (gPlayers[i].miniGameCoins) { + case 0: + var_s4++; + } + } + + switch (var_s4) { + case 4: + var_s1 = CreateTextWindow(60, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + LoadStringIntoWindow(var_s1, (void*)0xDB, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4D); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + break; + case 3: + var_s1 = CreateTextWindow(60, 60, 16, 4); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + for (i = 0, var_s2 = 1; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_8006DA5C(var_s1, D_800C5218[gPlayers[i].characterID], var_s2++); + } + } + LoadStringIntoWindow(var_s1, (void*)0xDC, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4D); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + break; + case 2: + var_s1 = CreateTextWindow(60, 60, 16, 4); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + for (i = 0, var_s2 = 1; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_8006DA5C(var_s1, D_800C5218[gPlayers[i].characterID], var_s2++); + } + } + LoadStringIntoWindow(var_s1, (void*)0xDD, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4D); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + break; + case 1: + var_s1 = CreateTextWindow(80, 60, 14, 4); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + i = 0; + var_s2 = 1; + for (; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_8006DA5C(var_s1, D_800C5218[gPlayers[i].characterID], var_s2++); + } + } + LoadStringIntoWindow(var_s1, (void*)0xDE, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4D); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + break; + default: + var_s1 = CreateTextWindow(60, 60, 16, 4); + if (gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount < func_800F66FC_BowserSpaceEvent()) { + var_s2 = gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount; + } else { + var_s2 = func_800F66FC_BowserSpaceEvent(); + } + sprintf(&sp10, "%d", var_s2); + func_8006DA5C(var_s1, &sp10, 0); + LoadStringIntoWindow(var_s1, (void*)0xDF, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4D); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + } + + if (var_s4 == 0) { + func_800F6744_BowserSpaceEvent(); + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + func_80055960(D_800F8FF1_BowserSpaceEvent, -var_s2); + if (gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount != 0) { + func_800503B0(D_800F8FF1_BowserSpaceEvent, 5); + } + } else { + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_80054868(i + 10); + } + } + + HuPrcSleep(0x14); + + if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins == 0) { + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + } + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0U); + + tempVar = -1; + var_a1_2 = 0; //a0 + + + for (i = 0; i < 4; i++) { + if ((gPlayers[i].miniGameCoins == 0) && (var_a1_2 < gPlayers[i].coinAmount)) { + if (tempVar != -1) { + D_800F8FFC_BowserSpaceEvent[tempVar] = 0; + } + D_800F8FFC_BowserSpaceEvent[i] = 1; + var_a1_2 = gPlayers[i].coinAmount; + tempVar = i; + } else { + D_800F8FFC_BowserSpaceEvent[i] = 0; + } + + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_80055810(i, -func_800F66FC_BowserSpaceEvent(), D_800F8FFC_BowserSpaceEvent[i]); + if (gPlayers[i].coinAmount != 0) { + func_800503B0(i, 5); + } + } + } + } + + func_8004F504(D_800F8FF4_BowserSpaceEvent); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + var_s1 = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(var_s1, (void*)0xE0, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(76); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); +} + +void func_800F7BFC_BowserSpaceEvent(void) { + char sp10; + s32 var_a1_2; + s32 temp_s1; + s32 tempVar; + s32 i; + + if (D_800C597A == 0) { + temp_s1 = CreateTextWindow(40, 60, 17, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(temp_s1, &sp10, 0); + LoadStringIntoWindow(temp_s1, (void*)0xE1, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(145); + func_8004DBD4(temp_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(temp_s1); + for (i = 0; i < 4; i++) { + if (i == D_800F8FF1_BowserSpaceEvent) { + gPlayers[i].unk_00 = 0; + } else { + gPlayers[i].unk_00 = 1; + } + } + D_800F8ED0_BowserSpaceEvent = 4; + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 2, 0); + HuPrcSleep(0x1E); + return; + } + if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins < 0) { + temp_s1 = CreateTextWindow(60, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(temp_s1, &sp10, 0); + LoadStringIntoWindow(temp_s1, (void*)0xE2, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x4D); + func_8004DBD4(temp_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(temp_s1); + } else if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins > 0) { + temp_s1 = CreateTextWindow(60, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(temp_s1, &sp10, 0); + LoadStringIntoWindow(temp_s1, (void*)0xE3, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x4D); + func_8004DBD4(temp_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(temp_s1); + } else { + temp_s1 = CreateTextWindow(60, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(temp_s1, &sp10, 0); + LoadStringIntoWindow(temp_s1, (void*)0xE4, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x4D); + func_8004DBD4(temp_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(temp_s1); + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins <= 0) { + func_80054868(i + 10); + } + } + + HuPrcSleep(20); + + if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins <= 0) { + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + } + + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + + tempVar = -1; + var_a1_2 = 0; //a0 + + + for (i = 0; i < 4; i++) { + if ((gPlayers[i].miniGameCoins <= 0) && (var_a1_2 < gPlayers[i].coinAmount)) { + if (tempVar != -1) { + D_800F8FFC_BowserSpaceEvent[tempVar] = 0; + } + D_800F8FFC_BowserSpaceEvent[i] = 1; + var_a1_2 = gPlayers[i].coinAmount; + tempVar = i; + } else { + D_800F8FFC_BowserSpaceEvent[i] = 0; + } + + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins > 0) { + continue; + } else { + func_80055810(i, -(func_800F66FC_BowserSpaceEvent()), D_800F8FFC_BowserSpaceEvent[i]); + if (gPlayers[i].coinAmount) { + func_800503B0(i, 5); + } + } + } + + func_8004F504(D_800F8FF4_BowserSpaceEvent); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + temp_s1 = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(temp_s1, (void*)0xE5, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x4C); + func_8004DBD4(temp_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(temp_s1); +} + +void func_800F80EC_BowserSpaceEvent(void) { + char sp10; + s32 var_a1_2; + s32 var_s1; + s32 var_s2; + s32 i; + s32 tempVar; + + if (D_800C597A == 0) { + var_s1 = CreateTextWindow(40, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + LoadStringIntoWindow(var_s1, (void*)0xE6, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x91); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + + for (i = 0; i < 4; i++) { + if (i == D_800F8FF1_BowserSpaceEvent) { + gPlayers[i].unk_00 = 0; + } else { + gPlayers[i].unk_00 = 1; + } + } + + D_800F8ED0_BowserSpaceEvent = 5; + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 2, 0); + HuPrcSleep(0x1E); + return; + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins != 0) { + break; + } + } + + if (i != 4) { + var_s1 = CreateTextWindow(60, 60, 16, 4); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + + for (i = 0, var_s2 = 1; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_8006DA5C(var_s1, D_800C5218[gPlayers[i].characterID], var_s2++); + } + } + + LoadStringIntoWindow(var_s1, (void*)0xE7, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(77); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + } else { + var_s1 = CreateTextWindow(60, 60, 16, 3); + sprintf(&sp10, "%d", func_800F66FC_BowserSpaceEvent()); + func_8006DA5C(var_s1, &sp10, 0); + LoadStringIntoWindow(var_s1, (void*)0xE8, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(77); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_80054868(i + 10); + } + } + + HuPrcSleep(20); + if (gPlayers[D_800F8FF1_BowserSpaceEvent].miniGameCoins == 0) { + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 0, 0); + } + + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + + tempVar = -1; + var_a1_2 = 0; + + for (i = 0; i < 4; i++) { + if ((gPlayers[i].miniGameCoins == 0) && (var_a1_2 < gPlayers[i].coinAmount)) { + if (tempVar != -1) { + D_800F8FFC_BowserSpaceEvent[tempVar] = 0; + } + + D_800F8FFC_BowserSpaceEvent[i] = 1; + var_a1_2 = gPlayers[i].coinAmount; + tempVar = i; + } else { + D_800F8FFC_BowserSpaceEvent[i] = 0; + } + } + + for (i = 0; i < 4; i++) { + if (gPlayers[i].miniGameCoins == 0) { + func_80055810(i, -func_800F66FC_BowserSpaceEvent(), D_800F8FFC_BowserSpaceEvent[i]); + if (gPlayers[i].coinAmount != 0) { + func_800503B0(i, 5); + } + } + } + + func_8004F504(D_800F8FF4_BowserSpaceEvent); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + var_s1 = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(var_s1, (void*)0xE9, -1, -1); + func_8006E070(var_s1, 0); + ShowTextWindow(var_s1); + PlaySound(0x4C); + func_8004DBD4(var_s1, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(var_s1); +} + +void func_800F8608_BowserSpaceEvent(void) { + s32 windowID; + s32 var_s0_2; + s32 var_s2; + s32 i; + u8 new_var2; + + var_s2 = 0; + if (D_800C597A == 0) { + func_8004935C(); + func_800499CC(D_800F8FF1_BowserSpaceEvent); + HuPrcSleep(0x1A); + if (gPlayers[D_800F8FF1_BowserSpaceEvent].coinAmount == 0) { + if (gPlayers[D_800F8FF1_BowserSpaceEvent].starAmount == 0) { + windowID = CreateTextWindow(80, 60, 14, 4); + LoadStringIntoWindow(windowID, (void*)0xCA, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(77); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + func_800F6744_BowserSpaceEvent(); + func_8004F4D4(D_800F8FF8_BowserSpaceEvent, 2, 0); + func_80055960(D_800F8FF1_BowserSpaceEvent, 20); + HuPrcSleep(30); + windowID = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(windowID, (void*)0xCB, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(76); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + } else { + windowID = CreateTextWindow(80, 60, 14, 4); + LoadStringIntoWindow(windowID, (void*)0xC8, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4D); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + func_800F6744_BowserSpaceEvent(); + func_8003E81C(D_800F8FF4_BowserSpaceEvent, 1, 0); + func_8004F40C(D_800F8FF4_BowserSpaceEvent, 0, 2); + func_8003E81C(D_800F8FF8_BowserSpaceEvent, 1, 0); + func_80055994(D_800F8FF1_BowserSpaceEvent, 2); + new_var2 = D_800F8FF1_BowserSpaceEvent; //? + gPlayers[new_var2].starAmount--; + func_80060618(0x44A, D_800F8FF1_BowserSpaceEvent); + func_80055960(D_800F8FF1_BowserSpaceEvent, 10); + func_800503B0(D_800F8FF1_BowserSpaceEvent, 6); + HuPrcSleep(0x1E); + windowID = CreateTextWindow(80, 60, 14, 3); + LoadStringIntoWindow(windowID, (void*)0xC9, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(0x4C); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + } + } else { + windowID = CreateTextWindow(80, 60, 13, 4); + LoadStringIntoWindow(windowID, (void*)0xC6, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + PlaySound(77); + func_8004DBD4(windowID, D_800F8FF1_BowserSpaceEvent); + HideTextWindow(windowID); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 3, 0); + HuPrcSleep(0x20); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + func_8004EE14(0, D_800F32A0, 15, D_800F8FF4_BowserSpaceEvent); + var_s0_2 = 0; + func_80049E60(); + + while (func_80049328() == -1) { + if (func_80049340() == 2) { + if (var_s0_2 == 0) { + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 1, 0); + var_s0_2 = 1; + } else if (++var_s0_2 == 40) { + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 4, 6); + } + } + + if ((func_80049340() == 4) && (var_s2 == 0)) { + func_8004EE14(0, &D_800F8F00_BowserSpaceEvent.x, 15, D_800F8FF4_BowserSpaceEvent); + var_s2 = 1; + } + + HuPrcVSleep(); + + } + + func_80049478(); + func_8004F4D4(D_800F8FF4_BowserSpaceEvent, 0, 2); + + if (D_800C597A == 0) { + D_800F8FB4_BowserSpaceEvent[func_80049328()](); + } else { + HuPrcSleep(26); + D_800F8FB4_BowserSpaceEvent[func_80049334()](); //function ptr array + } + } + } else { + HuPrcSleep(26); + D_800F8FB4_BowserSpaceEvent[func_80049334()](); //function ptr array + } + + for (i = 0; i < 4; i++) { + gPlayers[i].miniGameCoins = 0; + } + + D_800F5144 = 1; + + while (1) { + HuPrcVSleep(); + } +} + +void func_800F8B1C_BowserSpaceEvent(void) { + if ( func_80072718() == 0 ) { + func_800F8EA8_BowserSpaceEvent(); + func_800F8DC0_BowserSpaceEvent(); + func_80054654(); + func_80070ED4(); + switch (D_800F8ED0_BowserSpaceEvent) { + case 0: + omOvlReturnEx(1); + break; + case 1: + SetBoardFeatureFlag(69); + omOvlGotoEx(1, 0, 146); + break; + case 2: + SetBoardFeatureFlag(69); + func_80059348(16); + omOvlCallEx(111, 0, 148); + omOvlHisChg(1, 70, 1, 146); + break; + case 3: + SetBoardFeatureFlag(69); + func_80059348(14); + omOvlCallEx(111, 0, 148); + omOvlHisChg(1, 70, 1, 146); + break; + case 4: + SetBoardFeatureFlag(69); + func_80059348(51); + omOvlCallEx(111, 0, 148); + omOvlHisChg(1, 70, 1, 146); + break; + case 5: + SetBoardFeatureFlag(69); + func_80059348(19); + omOvlCallEx(111, 0, 148); + omOvlHisChg(1, 70, 1, 146); + break; + } + } +} + +void func_800F8C20_BowserSpaceEvent(omObjData* arg0) { + if (D_800F5144 != 0) { + func_800726AC(3, 16); + func_800601D4(32); + arg0->func_ptr = &func_800F8B1C_BowserSpaceEvent; + } +} + +void func_800F8C6C_BowserSpaceEvent(void) { + func_8003DAA8(); + func_8004F2AC(); + D_800F8FF4_BowserSpaceEvent = CreateObject(6, &D_800F8F0C_BowserSpaceEvent); + D_800F8FF4_BowserSpaceEvent->coords.x = D_800F8EF4_BowserSpaceEvent.x; + D_800F8FF4_BowserSpaceEvent->coords.y = D_800F8EF4_BowserSpaceEvent.y; + D_800F8FF4_BowserSpaceEvent->coords.z = D_800F8EF4_BowserSpaceEvent.z; + D_800F8FF4_BowserSpaceEvent->xScale = D_800F8FF4_BowserSpaceEvent->yScale = D_800F8FF4_BowserSpaceEvent->zScale = 1.5f; + D_800F8FF8_BowserSpaceEvent = CreateObject(func_80052F04(D_800F8FF1_BowserSpaceEvent), D_800F8F9C_BowserSpaceEvent[gPlayers[D_800F8FF1_BowserSpaceEvent].characterID]); + D_800F8FF8_BowserSpaceEvent->coords.x = D_800F8F00_BowserSpaceEvent.x; + D_800F8FF8_BowserSpaceEvent->coords.y = D_800F8F00_BowserSpaceEvent.y; + D_800F8FF8_BowserSpaceEvent->coords.z = D_800F8F00_BowserSpaceEvent.z; + func_80021B14(*D_800F8FF8_BowserSpaceEvent->unk_3C->unk_40, gPlayers[D_800F8FF1_BowserSpaceEvent].characterID, 0x80); + func_8004CCD0(&D_800F8FF8_BowserSpaceEvent->coords, &D_800F8FF4_BowserSpaceEvent->coords, &D_800F8FF8_BowserSpaceEvent->unk_18); + func_8004CCD0(&D_800F8FF4_BowserSpaceEvent->coords, &D_800F8FF8_BowserSpaceEvent->coords, &D_800F8FF4_BowserSpaceEvent->unk_18); +} + +void func_800F8DC0_BowserSpaceEvent(void) { + DestroyObject(D_800F8FF8_BowserSpaceEvent); + DestroyObject(D_800F8FF4_BowserSpaceEvent); + func_8004F2EC(); +} + +void func_800F8DF4_BowserSpaceEvent(void) { + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(D_800F8ED4_BowserSpaceEvent[D_800F8FF0_BowserSpaceEvent]); +} + +void func_800F8EA8_BowserSpaceEvent(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_46_BowserSpaceEvent/282820.h b/src/overlays/ovl_46_BowserSpaceEvent/282820.h new file mode 100644 index 0000000..a620793 --- /dev/null +++ b/src/overlays/ovl_46_BowserSpaceEvent/282820.h @@ -0,0 +1,31 @@ +#include "common.h" + + +s32 func_80049328(void); +s32 func_80049334(void); +s32 func_80049340(void); +void func_8004935C(void); +void func_80049478(void); +void func_800499CC(u8); +void func_80049E60(void); +void func_80055994(u8, s32); +void func_80060618(s32, u8); + +extern char* D_800C5218[]; + +void func_8005546C(s32); +void func_80055544(s32); +void func_80055810(s32, s32, u8); +void func_800F8EA8_BowserSpaceEvent(void); +void func_800F8DC0_BowserSpaceEvent(void); + +s32 func_800F66FC_BowserSpaceEvent(void); +void func_800F6744_BowserSpaceEvent(void); +void HidePlayerHUDVisibility(s32 playerIndex, s32 hideHUDBool); +void func_800F8608_BowserSpaceEvent(void); +void func_800F8C6C_BowserSpaceEvent(void); +void func_800F8DF4_BowserSpaceEvent(void); +void func_800F8C20_BowserSpaceEvent(omObjData*); +void func_8004DBD4(s32, u8); +void func_800F8B1C_BowserSpaceEvent(void); + diff --git a/src/overlays/ovl_47/285230.c b/src/overlays/ovl_47/285230.c index b6a9195..2c3e69e 100644 --- a/src/overlays/ovl_47/285230.c +++ b/src/overlays/ovl_47/285230.c @@ -1,19 +1,87 @@ #include "common.h" +#include "285230.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F65E0_name_47); +extern u8 D_800F6F20_name_47; +extern s16 D_800F6EE2_name_47; + +void func_800F65E0_name_47(void) { + D_800F6F20_name_47 = D_800ED5DC; + omInitObjMan(50, 10); + func_800F6E14_name_47(); + func_800F6D1C_name_47(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(&func_800F6924_name_47, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6CBC_name_47); + if (D_800C597A != 0) { + SetFadeInTypeAndTime(6, 8); + } else { + SetFadeInTypeAndTime(1, 16); + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F66D0_name_47); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6924_name_47); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6C40_name_47); +void func_800F6C40_name_47(omObjData* obj) { + if (func_80072718() == 0) { + func_800F6EB4_name_47(); + func_800F6DE8_name_47(); + func_80054654(); + func_80070ED4(); + if (D_800F6EE0_name_47 == 0) { + omOvlReturnEx(1); + return; + } + func_8004F284(); + func_8004F28C(0x47, D_800F6EE2_name_47); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6CBC_name_47); +void func_800F6CBC_name_47(omObjData* obj) { + if (D_800F5144 != 0) { + if (D_800F6EE0_name_47 != 0) { + func_800726AC(6, 8); + } else { + func_800726AC (1, 16); + } + obj->func_ptr = &func_800F6C40_name_47; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6D1C_name_47); +void func_800F6D1C_name_47(void) { + func_8003DAA8(); + D_800F6F24_name_47 = CreateObject(10, &D_800F6F08_name_47); + D_800F6F24_name_47->coords.x = D_800F6EE4_name_47.x; + D_800F6F24_name_47->coords.y = D_800F6EE4_name_47.y; + D_800F6F24_name_47->coords.z = D_800F6EE4_name_47.z; + D_800F6F28_name_47 = CreateObject(func_80052F04(D_800F6F20_name_47), NULL); + D_800F6F28_name_47->coords.x = D_800F6EFC_name_47.x; + D_800F6F28_name_47->coords.y = D_800F6EFC_name_47.y; + D_800F6F28_name_47->coords.z = D_800F6EFC_name_47.z; + func_8004CCD0(&D_800F6F28_name_47->coords, &D_800F6F24_name_47->coords, &D_800F6F28_name_47->unk_18); + func_8004CCD0(&D_800F6F24_name_47->coords, &D_800F6F28_name_47->coords, &D_800F6F24_name_47->unk_18); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6DE8_name_47); +void func_800F6DE8_name_47(void) { + DestroyObject(D_800F6F28_name_47); + DestroyObject(D_800F6F24_name_47); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6E14_name_47); +void func_800F6E14_name_47(void) { + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(2); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_47/285230", func_800F6EB4_name_47); +void func_800F6EB4_name_47(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_47/285230.h b/src/overlays/ovl_47/285230.h new file mode 100644 index 0000000..1c09b4a --- /dev/null +++ b/src/overlays/ovl_47/285230.h @@ -0,0 +1,16 @@ +#include "common.h" + +void func_800F6D1C_name_47(void); +void func_800F6E14_name_47(void); +void func_800F6924_name_47(void); +void func_800F6CBC_name_47(omObjData* obj); +void func_800F6DE8_name_47(void); +void func_800F6EB4_name_47(void); +void func_800F6C40_name_47(omObjData* obj); +extern Vec3f D_800F6EE4_name_47; +extern Vec3f D_800F6EFC_name_47; +extern Vec3f D_800F6F08_name_47; +extern Object* D_800F6F24_name_47; +extern Object* D_800F6F28_name_47; +extern s32 D_800F6EE0_name_47; + diff --git a/src/overlays/ovl_48_BowserVisitDKBoard/285B70.c b/src/overlays/ovl_48_BowserVisitDKBoard/285B70.c index 9620f14..6ba214f 100644 --- a/src/overlays/ovl_48_BowserVisitDKBoard/285B70.c +++ b/src/overlays/ovl_48_BowserVisitDKBoard/285B70.c @@ -1,19 +1,234 @@ -#include "common.h" +#include "engine/process.h" +#include "285B70.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F65E0_BowserVisitDKBoard); +Vec3f D_800F70C0_BowserVisitDKBoard = {-115.0f, 0.0f, 1120.0f}; +Vec3f D_800F70CC_BowserVisitDKBoard[] = {{30.0f, 350.0f, 1475.0f},{30.0f, 65.0f, 1475.0f}}; +Vec3f D_800F70E4_BowserVisitDKBoard = {115.0f, 0.0f, 1520.0f}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F66BC_BowserVisitDKBoard); +s32 D_800F70F0_BowserVisitDKBoard[] = { 0x00000003, 0x000A0068, 0x000A006A, 0x000A006C }; +s32 D_800F7100_BowserVisitDKBoard[] = { 0x00000002, 0x0001003C, 0x0001003E }; +s32 D_800F710C_BowserVisitDKBoard[] = { 0x00000002, 0x0002003C, 0x0002003E }; +s32 D_800F7118_BowserVisitDKBoard[] = { 0x00000002, 0x0006003C, 0x0006003E }; +s32 D_800F7124_BowserVisitDKBoard[] = { 0x00000002, 0x0003003C, 0x0003003E }; +s32 D_800F7130_BowserVisitDKBoard[] = { 0x00000002, 0x0004003C, 0x0004003E }; +s32 D_800F713C_BowserVisitDKBoard[] = { 0x00000002, 0x0005003C, 0x0005003E }; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6C14_BowserVisitDKBoard); +s32* D_800F7148_BowserVisitDKBoard[] = {D_800F7100_BowserVisitDKBoard, D_800F710C_BowserVisitDKBoard, D_800F7118_BowserVisitDKBoard, D_800F7124_BowserVisitDKBoard, D_800F7130_BowserVisitDKBoard, D_800F713C_BowserVisitDKBoard}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6D84_BowserVisitDKBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6DD0_BowserVisitDKBoard); +//f64 D_800F7160_BowserVisitDKBoard = 0.017453292519943295; +//f64 D_800F7160_BowserVisitDKBoard = 0.017453292519943295; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6E1C_BowserVisitDKBoard); +//bss +extern u8 D_800F7170_ovl48; +extern Object* D_800F7174_ovl48; +extern Object* D_800F7178_ovl48; +extern Object* D_800F717C_ovl48; +extern omObjData* D_800F7180_ovl48; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6FAC_BowserVisitDKBoard); +void func_800F65E0_BowserVisitDKBoard(void) { + D_800F7170_ovl48 = D_800ED5DC; + omInitObjMan(50, 10); + func_800F6FF8_BowserVisitDKBoard(); + func_800F6E1C_BowserVisitDKBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F66BC_BowserVisitDKBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6DD0_BowserVisitDKBoard); + func_80060128(0x12); + SetFadeInTypeAndTime(3, 0x10); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F6FF8_BowserVisitDKBoard); +void func_800F66BC_BowserVisitDKBoard(void) { + f32 var_f20; + s32 temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_48_BowserVisitDKBoard/285B70", func_800F7098_BowserVisitDKBoard); + HuPrcSleep(0x10); + PlaySound(0x46A); + HuPrcSleep(0xA); + if (gPlayers[D_800F7170_ovl48].coinAmount == 0) { + temp_s1 = CreateTextWindow(0x28, 0x28, 0x10, 2); + LoadStringIntoWindow(temp_s1, (void* )0x192, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + temp_s1 = CreateTextWindow(0x28, 0x28, 0x13, 3); + LoadStringIntoWindow(temp_s1, (void* )0x193, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x46A); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + } else if (!(gPlayers[D_800F7170_ovl48].coinAmount >= 0xA)) { + temp_s1 = CreateTextWindow(0x28, 0x28, 0x10, 2); + LoadStringIntoWindow(temp_s1, (void* )0x18F, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + temp_s1 = CreateTextWindow(0x28, 0x28, 0x12, 3); + LoadStringIntoWindow(temp_s1, (void* )0x190, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow( temp_s1); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + func_8003E81C(D_800F7174_ovl48, 1, 0); + func_8004F40C(D_800F7174_ovl48, 0, 2); + func_8003E81C(D_800F717C_ovl48, 1, 0); + func_80055960(D_800F7170_ovl48, -gPlayers[D_800F7170_ovl48].coinAmount); + func_800503B0(D_800F7170_ovl48, 5); + func_80060618(0x44A, D_800F7170_ovl48); + HuPrcSleep(0x1E); + temp_s1 = CreateTextWindow(0x28, 0x28, 0x10, 2); + LoadStringIntoWindow(temp_s1, (void* )0x191, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x469); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + } else { + temp_s1 = CreateTextWindow(0x37, 0x28, 0x10, 2); + LoadStringIntoWindow(temp_s1, (void* )0x18C, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + func_8004F4D4(D_800F7174_ovl48, 2, 0); + func_8004F40C(D_800F7174_ovl48, 0, 2); + HuPrcSleep(0x14); + var_f20 = D_800F70CC_BowserVisitDKBoard[0].y; + + while (D_800F70CC_BowserVisitDKBoard[1].y <= var_f20) { + D_800F7178_ovl48->unk_30 = var_f20; + HuPrcVSleep(); + var_f20 -= 2.0f; + } + + D_800F7178_ovl48->unk_30 = D_800F70CC_BowserVisitDKBoard[1].y; + D_800F7180_ovl48->work[0] = 1; + HuPrcVSleep(); + func_8003E81C(D_800F7174_ovl48, 1, 0); + func_8004F40C(D_800F7174_ovl48, 0, 2); + HuPrcSleep(0x28); + temp_s1 = CreateTextWindow(0x28, 0x28, 0x12, 3); + LoadStringIntoWindow(temp_s1, (void* )0x18D, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + func_8003E81C(D_800F7174_ovl48, 1, 0); + func_8004F40C(D_800F7174_ovl48, 0, 2); + func_8003E81C(D_800F717C_ovl48, 0, 0); + func_80055960(D_800F7170_ovl48, -0xA); + func_800503B0(D_800F7170_ovl48, 5); + func_80060618(0x44A, D_800F7170_ovl48); + HuPrcSleep(0x1E); + temp_s1 = CreateTextWindow(0x50, 0x28, 0xF, 3); + LoadStringIntoWindow(temp_s1, (void* )0x18E, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x469); + func_8004DBD4(temp_s1, D_800F7170_ovl48); + HideTextWindow(temp_s1); + } + + D_800F5144 = 1; + while (1) { + HuPrcVSleep(); + } +} + +void func_800F6C14_BowserVisitDKBoard(omObjData* arg0) { + Object* temp_s0; + Object* temp_s0_2; + Object* temp_s0_3; + + temp_s0 = D_800F7178_ovl48; + temp_s0->unk_18.x = sinf(arg0->rot.x * 0.017453292519943295); + temp_s0_2 = D_800F7178_ovl48; + temp_s0_2->unk_18.z = cosf(arg0->rot.x * 0.017453292519943295); + if ((arg0->work[0] == 0) || !(arg0->rot.x < -310.0f)) { + arg0->rot.x = arg0->rot.x - 5.0f; + if (arg0->rot.x <= -360.0f) { + arg0->rot.x = arg0->rot.x + 360.0f; + } + } else { + temp_s0_3 = D_800F7178_ovl48; + temp_s0_3->unk_30 = ((sinf(arg0->rot.y * 0.017453292519943295)) * 4.0f) + D_800F70CC_BowserVisitDKBoard[1].y; + arg0->rot.y = arg0->rot.y + 5.0f; + if (arg0->rot.y >= 360.0f) { + arg0->rot.y -= 360.0f; + } + } +} + +void func_800F6D84_BowserVisitDKBoard(void) { + if (func_80072718() == 0) { + func_800F7098_BowserVisitDKBoard(); + func_800F6FAC_BowserVisitDKBoard(); + func_80054654(); + func_80070ED4(); + omOvlReturnEx(1); + } +} + +void func_800F6DD0_BowserVisitDKBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + func_800726AC(3, 0x10); + func_800601D4(0x20); + arg0->func_ptr = &func_800F6D84_BowserVisitDKBoard; + } +} + +void func_800F6E1C_BowserVisitDKBoard(void) { + func_8003DAA8(); + func_8004F2AC(); + D_800F7174_ovl48 = CreateObject(6, D_800F70F0_BowserVisitDKBoard); + D_800F7174_ovl48->coords.x = D_800F70C0_BowserVisitDKBoard.x; + D_800F7174_ovl48->coords.y = D_800F70C0_BowserVisitDKBoard.y; + D_800F7174_ovl48->coords.z = D_800F70C0_BowserVisitDKBoard.z; + D_800F7174_ovl48->zScale = 1.5f; + D_800F7174_ovl48->yScale = 1.5f; + D_800F7174_ovl48->xScale = 1.5f; + D_800F7178_ovl48 = CreateObject(0x28, NULL); + D_800F7178_ovl48->coords.x = D_800F70CC_BowserVisitDKBoard[0].x; + D_800F7178_ovl48->coords.y = 0.0f; + D_800F7178_ovl48->unk_30 = D_800F70CC_BowserVisitDKBoard[0].y; + D_800F7178_ovl48->coords.z = D_800F70CC_BowserVisitDKBoard[0].z; + D_800F7180_ovl48 = omAddObj(0x1000, 0, 0, -1, &func_800F6C14_BowserVisitDKBoard); + D_800F7180_ovl48->rot.x = -12.0f; + D_800F7180_ovl48->rot.y = 0.0f; + D_800F7180_ovl48->work[0] = 0; + D_800F717C_ovl48 = CreateObject(func_80052F04(D_800F7170_ovl48), D_800F7148_BowserVisitDKBoard[gPlayers[D_800F7170_ovl48].characterID]); + D_800F717C_ovl48->coords.x = D_800F70E4_BowserVisitDKBoard.x; + D_800F717C_ovl48->coords.y = D_800F70E4_BowserVisitDKBoard.y; + D_800F717C_ovl48->coords.z = D_800F70E4_BowserVisitDKBoard.z; + func_8004CCD0(&D_800F717C_ovl48->coords, &D_800F7174_ovl48->coords, &D_800F717C_ovl48->unk_18); + func_8004CCD0(&D_800F7174_ovl48->coords, &D_800F717C_ovl48->coords, &D_800F7174_ovl48->unk_18); +} + +void func_800F6FAC_BowserVisitDKBoard(void) { + omDelObj(D_800F7180_ovl48); + DestroyObject(D_800F717C_ovl48); + DestroyObject(D_800F7174_ovl48); + DestroyObject(D_800F7178_ovl48); + func_8004F2EC(); +} + +void func_800F6FF8_BowserVisitDKBoard(void) { + func_800178A0(1); + func_80017660(0U, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0U, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(2); +} + +void func_800F7098_BowserVisitDKBoard(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_48_BowserVisitDKBoard/285B70.h b/src/overlays/ovl_48_BowserVisitDKBoard/285B70.h new file mode 100644 index 0000000..4712043 --- /dev/null +++ b/src/overlays/ovl_48_BowserVisitDKBoard/285B70.h @@ -0,0 +1,31 @@ +#include "common.h" + +void func_800F66BC_BowserVisitDKBoard(void); +void func_800F6E1C_BowserVisitDKBoard(void); +void func_800F6FF8_BowserVisitDKBoard(void); +void func_800F6DD0_BowserVisitDKBoard(omObjData*); +void func_800F6FAC_BowserVisitDKBoard(void); +void func_800F7098_BowserVisitDKBoard(void); +void func_800F6D84_BowserVisitDKBoard(void); +void func_800F6C14_BowserVisitDKBoard(omObjData*); + +void func_8004DBD4(s32, u8); + +// extern Object* D_800F7178_BowserVisitDKBoard; +// extern Vec3f D_800F70C0_BowserVisitDKBoard; +// extern Vec3f D_800F70CC_BowserVisitDKBoard; +// extern Vec3f D_800F70E4_BowserVisitDKBoard; +// extern Object* D_800F7148_BowserVisitDKBoard[]; +// extern u8 D_800F7170_BowserVisitDKBoard; +// extern Object* D_800F7174_BowserVisitDKBoard; +// extern Object* D_800F7178_BowserVisitDKBoard; +// extern Object* D_800F717C_BowserVisitDKBoard; +// extern omObjData* D_800F7180_BowserVisitDKBoard; +// extern Vec4f D_800F70D0_BowserVisitDKBoard; +// extern f32 D_800F70DC_BowserVisitDKBoard; +// extern u8 D_800F7170_BowserVisitDKBoard; +// extern Object* D_800F7174_BowserVisitDKBoard; +// extern Object* D_800F7178_BowserVisitDKBoard; +// extern Object* D_800F717C_BowserVisitDKBoard; +// extern omObjData* D_800F7180_BowserVisitDKBoard; +// extern u8 D_800F7170_BowserVisitDKBoard; \ No newline at end of file diff --git a/src/overlays/ovl_49_BowserVisitPeachBoard/286700.c b/src/overlays/ovl_49_BowserVisitPeachBoard/286700.c index 40e99f4..d58adef 100644 --- a/src/overlays/ovl_49_BowserVisitPeachBoard/286700.c +++ b/src/overlays/ovl_49_BowserVisitPeachBoard/286700.c @@ -1,19 +1,223 @@ -#include "common.h" +#include "engine/process.h" +#include "286700.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F65E0_BowserVisitPeachBoard); +Vec3f D_800F70D0_BowserVisitPeachBoard = {-115.0f, 0.0f, 1120.0f}; +Vec3f D_800F70DC_BowserVisitPeachBoard[2] = {{30.0f, 350.0f, 1475.0f}, {30.0f, 120.0f, 1475.0f}}; +Vec3f D_800F70F4_BowserVisitPeachBoard = {115.0f, 0.0f, 1520.0f}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F66BC_BowserVisitPeachBoard); +s32 D_800F7100_BowserVisitPeachBoard[] = {0x00000003, 0x000A0068, 0x000A006A, 0x000A006C}; +s32 D_800F7110_BowserVisitPeachBoard[] = {0x00000002, 0x0001003C, 0x0001003E}; +s32 D_800F711C_BowserVisitPeachBoard[] = {0x00000002, 0x0002003C, 0x0002003E}; +s32 D_800F7128_BowserVisitPeachBoard[] = {0x00000002, 0x0006003C, 0x0006003E}; +s32 D_800F7134_BowserVisitPeachBoard[] = {0x00000002, 0x0003003C, 0x0003003E}; +s32 D_800F7140_BowserVisitPeachBoard[] = {0x00000002, 0x0004003C, 0x0004003E}; +s32 D_800F714C_BowserVisitPeachBoard[] = {0x00000002, 0x00050010, 0x00050010}; +s32* D_800F7158_BowserVisitPeachBoard[] = {D_800F7110_BowserVisitPeachBoard, D_800F711C_BowserVisitPeachBoard, D_800F7128_BowserVisitPeachBoard, D_800F7134_BowserVisitPeachBoard, D_800F7140_BowserVisitPeachBoard, D_800F714C_BowserVisitPeachBoard}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F6C10_BowserVisitPeachBoard); +void func_800F65E0_BowserVisitPeachBoard(void) { + D_800F7180_BowserVisitPeachBoard = D_800ED5DC; + omInitObjMan(50, 10); + func_800F7008_BowserVisitPeachBoard(); + func_800F6E18_BowserVisitPeachBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F66BC_BowserVisitPeachBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6DCC_BowserVisitPeachBoard); + func_80060128(18); + SetFadeInTypeAndTime(3, 16); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F6D80_BowserVisitPeachBoard); +void func_800F66BC_BowserVisitPeachBoard(void) { + f32 var_f20; + s32 temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F6DCC_BowserVisitPeachBoard); + HuPrcSleep(0x10); + PlaySound(0x46A); + HuPrcSleep(0xA); + if (gPlayers[D_800F7180_BowserVisitPeachBoard].coinAmount == 0) { + temp_s1 = CreateTextWindow(0x3C, 0x28, 0x10, 3); + LoadStringIntoWindow(temp_s1, (void* )0x1A0, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + temp_s1 = CreateTextWindow(0x3C, 0x28, 0x0F, 3); + LoadStringIntoWindow(temp_s1, (void* )0x1A1, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x46A); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + } else if (!(gPlayers[D_800F7180_BowserVisitPeachBoard].coinAmount >= 20)) { + temp_s1 = CreateTextWindow(0x37, 0x28, 0x10, 3); + LoadStringIntoWindow(temp_s1, (void* )0x19D, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + temp_s1 = CreateTextWindow(0x37, 0x28, 0x10, 3); + LoadStringIntoWindow(temp_s1, (void* )0x19E, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow( temp_s1); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + func_8003E81C(D_800F7184_BowserVisitPeachBoard, 1, 0); + func_8004F40C(D_800F7184_BowserVisitPeachBoard, 0, 2); + func_8003E81C(D_800F718C_BowserVisitPeachBoard, 1, 0); + func_80055960(D_800F7180_BowserVisitPeachBoard, -gPlayers[D_800F7180_BowserVisitPeachBoard].coinAmount); + func_800503B0(D_800F7180_BowserVisitPeachBoard, 5); + func_80060618(0x44A, D_800F7180_BowserVisitPeachBoard); + HuPrcSleep(0x1E); + temp_s1 = CreateTextWindow(0x64, 0x28, 0x0B, 2); + LoadStringIntoWindow(temp_s1, (void* )0x19F, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x469); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + } else { + temp_s1 = CreateTextWindow(0x37, 0x28, 0x10, 3); + LoadStringIntoWindow(temp_s1, (void* )0x19A, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + func_8004F4D4(D_800F7184_BowserVisitPeachBoard, 2, 0); + func_8004F40C(D_800F7184_BowserVisitPeachBoard, 0, 2); + HuPrcSleep(0x14); + var_f20 = D_800F70DC_BowserVisitPeachBoard[0].y; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F6E18_BowserVisitPeachBoard); + while (D_800F70DC_BowserVisitPeachBoard[1].y <= var_f20) { + D_800F7188_BowserVisitPeachBoard->unk_30 = var_f20; + HuPrcVSleep(); + var_f20 -= 2.0f; + } -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F6FBC_BowserVisitPeachBoard); + D_800F7188_BowserVisitPeachBoard->unk_30 = D_800F70DC_BowserVisitPeachBoard[1].y; + D_800F7190_BowserVisitPeachBoard->work[0] = 1; + HuPrcVSleep(); + func_8003E81C(D_800F7184_BowserVisitPeachBoard, 1, 0); + func_8004F40C(D_800F7184_BowserVisitPeachBoard, 0, 2); + HuPrcSleep(0x28); + temp_s1 = CreateTextWindow(0x37, 0x28, 0x11, 3); + LoadStringIntoWindow(temp_s1, (void* )0x19B, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + func_8003E81C(D_800F7184_BowserVisitPeachBoard, 1, 0); + func_8004F40C(D_800F7184_BowserVisitPeachBoard, 0, 2); + func_8003E81C(D_800F718C_BowserVisitPeachBoard, 0, 0); + func_80055960(D_800F7180_BowserVisitPeachBoard, -20); + func_800503B0(D_800F7180_BowserVisitPeachBoard, 5); + func_80060618(0x44A, D_800F7180_BowserVisitPeachBoard); + HuPrcSleep(0x1E); + temp_s1 = CreateTextWindow(0x46, 0x28, 0x10, 3); + LoadStringIntoWindow(temp_s1, (void* )0x19C, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + PlaySound(0x469); + func_8004DBD4(temp_s1, D_800F7180_BowserVisitPeachBoard); + HideTextWindow(temp_s1); + } -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F7008_BowserVisitPeachBoard); + D_800F5144 = 1; + while (1) { + HuPrcVSleep(); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_49_BowserVisitPeachBoard/286700", func_800F70A8_BowserVisitPeachBoard); +void func_800F6C10_BowserVisitPeachBoard(omObjData* arg0) { + Object* temp_s0; + Object* temp_s0_2; + Object* temp_s0_3; + + temp_s0 = D_800F7188_BowserVisitPeachBoard; + temp_s0->unk_18.x = sinf(arg0->rot.x * 0.017453292519943295); + temp_s0_2 = D_800F7188_BowserVisitPeachBoard; + temp_s0_2->unk_18.z = cosf(arg0->rot.x * 0.017453292519943295); + if ((arg0->work[0] == 0) || !(arg0->rot.x < -310.0f)) { + arg0->rot.x = arg0->rot.x - 5.0f; + if (arg0->rot.x <= -360.0f) { + arg0->rot.x = arg0->rot.x + 360.0f; + } + } else { + temp_s0_3 = D_800F7188_BowserVisitPeachBoard; + temp_s0_3->unk_30 = ((sinf(arg0->rot.y * 0.017453292519943295)) * 4.0f) + D_800F70DC_BowserVisitPeachBoard[1].y; + arg0->rot.y = arg0->rot.y + 5.0f; + if (arg0->rot.y >= 360.0f) { + arg0->rot.y -= 360.0f; + } + } +} + +void func_800F6D80_BowserVisitPeachBoard(void) { + if (func_80072718() == 0) { + func_800F70A8_BowserVisitPeachBoard(); + func_800F6FBC_BowserVisitPeachBoard(); + func_80054654(); + func_80070ED4(); + omOvlReturnEx(1); + } +} + +void func_800F6DCC_BowserVisitPeachBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + func_800726AC(3, 16); + func_800601D4(32); + arg0->func_ptr = &func_800F6D80_BowserVisitPeachBoard; + } +} + +void func_800F6E18_BowserVisitPeachBoard(void) { + func_8003DAA8(); + func_8004F2AC(); + D_800F7184_BowserVisitPeachBoard = CreateObject(6, &D_800F7100_BowserVisitPeachBoard); + D_800F7184_BowserVisitPeachBoard->coords.x = D_800F70D0_BowserVisitPeachBoard.x; + D_800F7184_BowserVisitPeachBoard->coords.y = D_800F70D0_BowserVisitPeachBoard.y; + D_800F7184_BowserVisitPeachBoard->coords.z = D_800F70D0_BowserVisitPeachBoard.z; + D_800F7184_BowserVisitPeachBoard->zScale = 1.5f; + D_800F7184_BowserVisitPeachBoard->yScale = 1.5f; + D_800F7184_BowserVisitPeachBoard->xScale = 1.5f; + D_800F7188_BowserVisitPeachBoard = CreateObject(0x80, NULL); + D_800F7188_BowserVisitPeachBoard->coords.x = D_800F70DC_BowserVisitPeachBoard[0].x; + D_800F7188_BowserVisitPeachBoard->coords.y = 0.0f; + D_800F7188_BowserVisitPeachBoard->unk_30 = D_800F70DC_BowserVisitPeachBoard[0].y; + D_800F7188_BowserVisitPeachBoard->coords.z = D_800F70DC_BowserVisitPeachBoard[0].z; + D_800F7190_BowserVisitPeachBoard = omAddObj(0x1000, 0, 0, -1, &func_800F6C10_BowserVisitPeachBoard); + D_800F7190_BowserVisitPeachBoard->rot.x = -12.0f; + D_800F7190_BowserVisitPeachBoard->rot.y = 0.0f; + D_800F7190_BowserVisitPeachBoard->work[0] = 0; + D_800F7188_BowserVisitPeachBoard->unk_0A |= 1; + D_800F718C_BowserVisitPeachBoard = CreateObject(func_80052F04(D_800F7180_BowserVisitPeachBoard), D_800F7158_BowserVisitPeachBoard[gPlayers[D_800F7180_BowserVisitPeachBoard].characterID]); + D_800F718C_BowserVisitPeachBoard->coords.x = D_800F70F4_BowserVisitPeachBoard.x; + D_800F718C_BowserVisitPeachBoard->coords.y = D_800F70F4_BowserVisitPeachBoard.y; + D_800F718C_BowserVisitPeachBoard->coords.z = D_800F70F4_BowserVisitPeachBoard.z; + func_8004CCD0(&D_800F718C_BowserVisitPeachBoard->coords, &D_800F7184_BowserVisitPeachBoard->coords, &D_800F718C_BowserVisitPeachBoard->unk_18); + func_8004CCD0(&D_800F7184_BowserVisitPeachBoard->coords, &D_800F718C_BowserVisitPeachBoard->coords, &D_800F7184_BowserVisitPeachBoard->unk_18); +} + +void func_800F6FBC_BowserVisitPeachBoard(void) { + omDelObj(D_800F7190_BowserVisitPeachBoard); + DestroyObject(D_800F718C_BowserVisitPeachBoard); + DestroyObject(D_800F7184_BowserVisitPeachBoard); + DestroyObject(D_800F7188_BowserVisitPeachBoard); + func_8004F2EC(); +} + +void func_800F7008_BowserVisitPeachBoard(void) { + func_800178A0(1); + func_80017660(0U, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0U, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(10); +} + +void func_800F70A8_BowserVisitPeachBoard(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_49_BowserVisitPeachBoard/286700.h b/src/overlays/ovl_49_BowserVisitPeachBoard/286700.h new file mode 100644 index 0000000..62c6833 --- /dev/null +++ b/src/overlays/ovl_49_BowserVisitPeachBoard/286700.h @@ -0,0 +1,18 @@ +#include "common.h" + +void func_800F66BC_BowserVisitPeachBoard(void); +void func_800F6E18_BowserVisitPeachBoard(void); +void func_800F7008_BowserVisitPeachBoard(void); +void func_800F6DCC_BowserVisitPeachBoard(omObjData*); +void func_800F6FBC_BowserVisitPeachBoard(void); +void func_800F70A8_BowserVisitPeachBoard(void); +void func_800F6D80_BowserVisitPeachBoard(void); +void func_800F6C10_BowserVisitPeachBoard(omObjData*); +s32 func_8004DBD4(s32, u8); + +//bss +extern u8 D_800F7180_BowserVisitPeachBoard; +extern Object* D_800F7184_BowserVisitPeachBoard; +extern Object* D_800F7188_BowserVisitPeachBoard; +extern Object* D_800F718C_BowserVisitPeachBoard; +extern omObjData* D_800F7190_BowserVisitPeachBoard; diff --git a/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.c b/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.c index 622f127..90308ce 100644 --- a/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.c +++ b/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.c @@ -1,17 +1,126 @@ -#include "common.h" +#include "engine/process.h" +#include "28E030.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F65E0_LoadCannonWarioBoard); +Vec3f D_800F6B20_LoadCannonWarioBoard = {-80.0f, 0.0f, 1310.0f}; +Vec3f D_800F6B2C_LoadCannonWarioBoard = {80.0f, 0.0f, 1520.0f}; +Vec3f D_800F6B38_LoadCannonWarioBoard = {35.0f, 0.0f, 1450.0f}; +Vec3f D_800F6B44_LoadCannonWarioBoard = {120.0f, 0.0f, 1575.0f}; +Vec3f D_800F6B50_LoadCannonWarioBoard = {55.0f, 0.0f, 1475.0f}; +Vec3f D_800F6B5C_LoadCannonWarioBoard = {100.0f, 0.0f, 1555.0f}; +Vec3f D_800F6B68_LoadCannonWarioBoard = {400.0f, 0.0f, 1940.0f}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F66B4_LoadCannonWarioBoard); +s32 D_800F6B74_LoadCannonWarioBoard[] = {0x00000002, 0x00010000, 0x00010063}; +s32 D_800F6B80_LoadCannonWarioBoard[] = {0x00000002, 0x00020000, 0x00020063}; +s32 D_800F6B8C_LoadCannonWarioBoard[] = {0x00000002, 0x00060000, 0x00060063}; +s32 D_800F6B98_LoadCannonWarioBoard[] = {0x00000002, 0x00030000, 0x00030063}; +s32 D_800F6BA4_LoadCannonWarioBoard[] = {0x00000002, 0x00040000, 0x00040063}; +s32 D_800F6BB0_LoadCannonWarioBoard[] = {0x00000002, 0x00050000, 0x00050063}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F68A8_LoadCannonWarioBoard); +s32* D_800F6BBC_LoadCannonWarioBoard[] = {D_800F6B74_LoadCannonWarioBoard, D_800F6B80_LoadCannonWarioBoard, D_800F6B8C_LoadCannonWarioBoard, D_800F6B98_LoadCannonWarioBoard, D_800F6BA4_LoadCannonWarioBoard, D_800F6BB0_LoadCannonWarioBoard}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F68F4_LoadCannonWarioBoard); +void func_800F65E0_LoadCannonWarioBoard(void) { + D_800F6BE0_LoadCannonWarioBoard = D_800ED5DC; + omInitObjMan(0x32, 0xA); + func_800F6A54_LoadCannonWarioBoard(); + func_800F6918_LoadCannonWarioBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(&func_800F66B4_LoadCannonWarioBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F68F4_LoadCannonWarioBoard); + SetFadeInTypeAndTime(1, 16); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F6918_LoadCannonWarioBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F6A28_LoadCannonWarioBoard); +void func_800F66B4_LoadCannonWarioBoard(void) { + s32 temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F6A54_LoadCannonWarioBoard); + func_800421E0(); + HuPrcSleep(16); + PlaySound(0xBF); + HuPrcSleep(10); + temp_s1 = CreateTextWindow(100, 80, 10, 4); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_50_LoadCannonWarioBoard/28E030", func_800F6AF4_LoadCannonWarioBoard); + LoadStringIntoWindow(temp_s1, (void* )0x1CC, -1, -1); + func_8006E070(temp_s1, 0); + ShowTextWindow(temp_s1); + func_8004DBD4(temp_s1, D_800F6BE0_LoadCannonWarioBoard); + HideTextWindow(temp_s1); + func_8004E3E0(0, &D_800F6B38_LoadCannonWarioBoard, 20, D_800F6BE4_LoadCannonWarioBoard); + HuPrcSleep(20); + PlaySound(0xC2); + PlaySound(0x145); + func_800503B0(D_800F6BE0_LoadCannonWarioBoard, 1); + func_8004F4D4(D_800F6BE8_LoadCannonWarioBoard, 1, 2); + func_8004E3E0(0, &D_800F6B44_LoadCannonWarioBoard, 5, D_800F6BE8_LoadCannonWarioBoard); + HuPrcSleep(20); + func_8004E3E0(0, &D_800F6B50_LoadCannonWarioBoard, 5, D_800F6BE4_LoadCannonWarioBoard); + func_8004E3E0(0, &D_800F6B5C_LoadCannonWarioBoard, 5, D_800F6BE8_LoadCannonWarioBoard); + HuPrcSleep(4); + PlaySound(0xC2); + PlaySound(0x145); + func_800503B0(D_800F6BE0_LoadCannonWarioBoard, 1); + func_8004E3E0(0, &D_800F6B68_LoadCannonWarioBoard, 20, D_800F6BE8_LoadCannonWarioBoard); + HuPrcSleep(5); + func_8004E3E0(0, &D_800F6B5C_LoadCannonWarioBoard, 20, D_800F6BE4_LoadCannonWarioBoard); + HuPrcSleep(5); + func_800726AC(1, 8); + HuPrcSleep(20); + D_800F5144 = 1; + while (1) { + HuPrcVSleep(); + } +} + +void func_800F68A8_LoadCannonWarioBoard(void) { + if (func_80072718() == 0) { + func_800F6AF4_LoadCannonWarioBoard(); + func_800F6A28_LoadCannonWarioBoard(); + func_80054654(); + func_80070ED4(); + omOvlReturnEx(1); + } +} + +void func_800F68F4_LoadCannonWarioBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + arg0->func_ptr = &func_800F68A8_LoadCannonWarioBoard; + } +} + +void func_800F6918_LoadCannonWarioBoard(void) { + s32 sp18[2] = { 0xE, 0xF }; + + func_8003DAA8(); + D_800F6BE4_LoadCannonWarioBoard = CreateObject(sp18[D_800ED100.boardRam[0]], NULL); + D_800F6BE4_LoadCannonWarioBoard->coords.x = D_800F6B20_LoadCannonWarioBoard.x; + D_800F6BE4_LoadCannonWarioBoard->coords.y = D_800F6B20_LoadCannonWarioBoard.y; + D_800F6BE4_LoadCannonWarioBoard->coords.z = D_800F6B20_LoadCannonWarioBoard.z; + D_800F6BE8_LoadCannonWarioBoard = CreateObject(func_80052F04(D_800F6BE0_LoadCannonWarioBoard), D_800F6BBC_LoadCannonWarioBoard[gPlayers[D_800F6BE0_LoadCannonWarioBoard].characterID]); + D_800F6BE8_LoadCannonWarioBoard->coords.x = D_800F6B2C_LoadCannonWarioBoard.x; + D_800F6BE8_LoadCannonWarioBoard->coords.y = D_800F6B2C_LoadCannonWarioBoard.y; + D_800F6BE8_LoadCannonWarioBoard->coords.z = D_800F6B2C_LoadCannonWarioBoard.z; + func_8004CCD0(&D_800F6BE8_LoadCannonWarioBoard->coords, &D_800F6BE4_LoadCannonWarioBoard->coords, &D_800F6BE8_LoadCannonWarioBoard->unk_18); + func_8004CCD0(&D_800F6BE4_LoadCannonWarioBoard->coords, &D_800F6BE8_LoadCannonWarioBoard->coords, &D_800F6BE4_LoadCannonWarioBoard->unk_18); +} + +void func_800F6A28_LoadCannonWarioBoard(void) { + DestroyObject(D_800F6BE8_LoadCannonWarioBoard); + DestroyObject(D_800F6BE4_LoadCannonWarioBoard); +} + +void func_800F6A54_LoadCannonWarioBoard(void) { + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(29); +} + +void func_800F6AF4_LoadCannonWarioBoard(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.h b/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.h new file mode 100644 index 0000000..f5f43c4 --- /dev/null +++ b/src/overlays/ovl_50_LoadCannonWarioBoard/28E030.h @@ -0,0 +1,14 @@ +#include "common.h" + +void func_800F66B4_LoadCannonWarioBoard(void); +void func_800F6918_LoadCannonWarioBoard(void); +void func_800F6A54_LoadCannonWarioBoard(void); +void func_8004DBD4(s32, u8); +void func_800F68F4_LoadCannonWarioBoard(omObjData*); +void func_800F6A28_LoadCannonWarioBoard(void); +void func_800F6AF4_LoadCannonWarioBoard(void); + +extern s16 D_800ED154; +extern u8 D_800F6BE0_LoadCannonWarioBoard; +extern Object* D_800F6BE4_LoadCannonWarioBoard; +extern Object* D_800F6BE8_LoadCannonWarioBoard; diff --git a/src/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630.c b/src/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630.c index a1c7ca1..e263155 100644 --- a/src/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630.c +++ b/src/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630.c @@ -1,17 +1,134 @@ #include "common.h" +#include "engine/process.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F65E0_ChangeCannonTargetWarioBoard); +void func_800F66B4_ChangeCannonTargetWarioBoard(void); +void func_800F69D8_ChangeCannonTargetWarioBoard(s32); +void func_800F6B30_ChangeCannonTargetWarioBoard(void); +void func_800F6994_ChangeCannonTargetWarioBoard(omObjData*); +void func_800F6B04_ChangeCannonTargetWarioBoard(void); +void func_800F6BD0_ChangeCannonTargetWarioBoard(void); +void func_800F69D8_ChangeCannonTargetWarioBoard(s32); +void func_800F6B04_ChangeCannonTargetWarioBoard(void); +void func_8004DBD4(s32, u8); +void func_800F6948_ChangeCannonTargetWarioBoard(void); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F66B4_ChangeCannonTargetWarioBoard); +extern u8 D_800F6C50_ChangeCannonTargetWarioBoard; +extern Vec3f D_800F6C24_ChangeCannonTargetWarioBoard[]; +extern s32 D_800F6C3C_ChangeCannonTargetWarioBoard[]; +extern s32 D_800F6C44_ChangeCannonTargetWarioBoard[]; +extern u8 D_800F6C50_ChangeCannonTargetWarioBoard; +extern void* D_800F6C54_ChangeCannonTargetWarioBoard; +extern void* D_800F6C58_ChangeCannonTargetWarioBoard; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F6948_ChangeCannonTargetWarioBoard); +void func_800F65E0_ChangeCannonTargetWarioBoard(void) { + D_800F6C50_ChangeCannonTargetWarioBoard = D_800ED5DC; + omInitObjMan(50, 10); + func_800F6B30_ChangeCannonTargetWarioBoard(); + func_800F69D8_ChangeCannonTargetWarioBoard(1); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F66B4_ChangeCannonTargetWarioBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6994_ChangeCannonTargetWarioBoard); + SetFadeInTypeAndTime(4, 16); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F6994_ChangeCannonTargetWarioBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F69D8_ChangeCannonTargetWarioBoard); +void func_800F66B4_ChangeCannonTargetWarioBoard(void) { + s32 windowID; + s32 i; + s32 j; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F6B04_ChangeCannonTargetWarioBoard); + func_800421E0(); + HuPrcSleep(16); + PlaySound(0xBF); + HuPrcSleep(0xA); + windowID = CreateTextWindow(100, 80, 13, 3); + LoadStringIntoWindow(windowID, (void* )0x1C4, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + func_8004DBD4(windowID, D_800F6C50_ChangeCannonTargetWarioBoard); + HideTextWindow(windowID); + PlaySound(0xC4); + func_8004EE14(0, &D_800F6C24_ChangeCannonTargetWarioBoard[D_800F6C44_ChangeCannonTargetWarioBoard[D_800ED100.boardRam[15]]], 0x1E, D_800F6C58_ChangeCannonTargetWarioBoard); + + for (i = 0; i < 3; i++) { + for (j = 0; j < 4; j++) { + func_800503B0(j, 1); + } + HuPrcSleep(9); + } + + PlaySound(0xC5); + HuPrcSleep(30); + func_800726AC(0, 4); + HuPrcSleep(6); + func_800F6B04_ChangeCannonTargetWarioBoard(); + func_8004A140(); + LoadBackgroundIndex(0x20); + func_800F69D8_ChangeCannonTargetWarioBoard(0); + SetFadeInTypeAndTime(0, 4); + HuPrcSleep(4); + windowID = CreateTextWindow(0x64, 0x50, 0xC, 3); + LoadStringIntoWindow(windowID, (void* )0x1C5, -1, -1); + func_8006E070(windowID, 0); + ShowTextWindow(windowID); + func_8004DBD4(windowID, D_800F6C50_ChangeCannonTargetWarioBoard); + HideTextWindow(windowID); + PlaySound(0xC4); + func_8004EE14(0, &D_800F6C24_ChangeCannonTargetWarioBoard[D_800F6C3C_ChangeCannonTargetWarioBoard[D_800ED100.boardRam[15]]], 30, D_800F6C58_ChangeCannonTargetWarioBoard); + + for (i = 0; i < 3; i++) { + for (j = 0; j < 4; j++) { + func_800503B0(j, 1); + } + HuPrcSleep(9); + } + + PlaySound(0xC5); + HuPrcSleep(30); + D_800F5144 = 1; + while(1) { + HuPrcVSleep(); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F6B30_ChangeCannonTargetWarioBoard); +void func_800F6948_ChangeCannonTargetWarioBoard(void) { + if (func_80072718() == 0) { + func_800F6BD0_ChangeCannonTargetWarioBoard(); + func_800F6B04_ChangeCannonTargetWarioBoard(); + func_80054654(); + func_80070ED4(); + omOvlReturnEx(1); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F6BD0_ChangeCannonTargetWarioBoard); +void func_800F6994_ChangeCannonTargetWarioBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + func_800726AC(4, 16); + arg0->func_ptr = &func_800F6948_ChangeCannonTargetWarioBoard; + } +} + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_51_ChangeCannonTargetWarioBoard/28E630", func_800F69D8_ChangeCannonTargetWarioBoard); //https://decomp.me/scratch/XixHe + +void func_800F6B04_ChangeCannonTargetWarioBoard(void) { + DestroyObject(D_800F6C54_ChangeCannonTargetWarioBoard); + DestroyObject(D_800F6C58_ChangeCannonTargetWarioBoard); +} + +void func_800F6B30_ChangeCannonTargetWarioBoard(void) { + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(0x1D); +} + +void func_800F6BD0_ChangeCannonTargetWarioBoard(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.c b/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.c index b35e61b..c2a9d5a 100644 --- a/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.c +++ b/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.c @@ -1,6 +1,25 @@ #include "common.h" +#include "28ECA0.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F65E0_FlyGuyWarioBoard); +void func_800F65E0_FlyGuyWarioBoard(void) { + D_800F8230_FlyGuyWarioBoard = D_800ED5DC; + omInitObjMan(50, 10); + func_800F7FA4_FlyGuyWarioBoard(); + func_800F7DF0_FlyGuyWarioBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F742C_FlyGuyWarioBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F7D90_FlyGuyWarioBoard); + if (D_800C597A != 0) { + SetFadeInTypeAndTime(6, 8); + } else { + SetFadeInTypeAndTime(1, 16); + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F66D0_FlyGuyWarioBoard); @@ -18,9 +37,25 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800 INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", D_800F820C_FlyGuyWarioBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F72DC_FlyGuyWarioBoard); +void func_800F72DC_FlyGuyWarioBoard(omObjData* arg0) { + Object* temp_s0 = D_800F8234_FlyGuyWarioBoard; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F7384_FlyGuyWarioBoard); + temp_s0->unk_30 = ((sinf((arg0->rot.y * 0.0174532925199432955)) * arg0->work[0]) + arg0->trans.y); + arg0->rot.y += 10.0f; + if (arg0->rot.y >= 360.0f) { + arg0->rot.y -= 360.0f; + } +} + +void func_800F7384_FlyGuyWarioBoard(omObjData* arg0) { + Object* temp_s0 = D_800F8070_FlyGuyWarioBoard; + + temp_s0->unk_30 = ((sinf((arg0->rot.y * 0.0174532925199432955)) * arg0->work[0]) + arg0->trans.y); + arg0->rot.y += 10.0f; + if (arg0->rot.y >= 360.0f) { + arg0->rot.y -= 360.0f; + } +} INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", D_800F8220_FlyGuyWarioBoard); @@ -28,9 +63,31 @@ INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", D_800 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F742C_FlyGuyWarioBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F7D14_FlyGuyWarioBoard); +void func_800F7D14_FlyGuyWarioBoard(void) { + if (func_80072718() == 0) { + func_800F8044_FlyGuyWarioBoard(); + func_800F7F30_FlyGuyWarioBoard(); + func_80054654(); + func_80070ED4(); + if (D_800F807C_FlyGuyWarioBoard == 0) { + omOvlReturnEx(1); + return; + } + func_8004F284(); + func_8004F28C(0x52, D_800F807E_FlyGuyWarioBoard); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F7D90_FlyGuyWarioBoard); +void func_800F7D90_FlyGuyWarioBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + if (D_800F807C_FlyGuyWarioBoard != 0) { + func_800726AC(6, 8); + } else { + func_800726AC(1, 16); + } + arg0->func_ptr = &func_800F7D14_FlyGuyWarioBoard; + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_52_FlyGuyWarioBoard/28ECA0", func_800F7DF0_FlyGuyWarioBoard); diff --git a/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.h b/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.h new file mode 100644 index 0000000..4a9659d --- /dev/null +++ b/src/overlays/ovl_52_FlyGuyWarioBoard/28ECA0.h @@ -0,0 +1,15 @@ +#include "common.h" + +void func_800F742C_FlyGuyWarioBoard(void); +void func_800F7DF0_FlyGuyWarioBoard(void); +void func_800F7FA4_FlyGuyWarioBoard(void); +void func_800F7D90_FlyGuyWarioBoard(omObjData*); +void func_800F7F30_FlyGuyWarioBoard(void); +void func_800F8044_FlyGuyWarioBoard(void); +void func_800F7D14_FlyGuyWarioBoard(void); +extern s32 D_800F807C_FlyGuyWarioBoard; +extern s16 D_800F807E_FlyGuyWarioBoard; +extern s32 D_800F807C_FlyGuyWarioBoard; +extern u8 D_800F8230_FlyGuyWarioBoard; +extern Object* D_800F8234_FlyGuyWarioBoard; +extern Object* D_800F8070_FlyGuyWarioBoard; diff --git a/src/overlays/ovl_53_BowserVisitWarioBoard/2908F0.h b/src/overlays/ovl_53_BowserVisitWarioBoard/2908F0.h new file mode 100644 index 0000000..a27425d --- /dev/null +++ b/src/overlays/ovl_53_BowserVisitWarioBoard/2908F0.h @@ -0,0 +1,10 @@ +#include "common.h" + +void func_800F66BC_BowserVisitWarioBoard(void); +void func_800F6CE8_BowserVisitWarioBoard(void); +void func_800F6EA0_BowserVisitWarioBoard(void); +void func_800F6E6C_BowserVisitWarioBoard(void); +void func_800F6F40_BowserVisitWarioBoard(void); +void func_800F6C9C_BowserVisitWarioBoard(omObjData*); +void func_800F6C50_BowserVisitWarioBoard(void); +s32 func_8004DBD4(s32, u8); diff --git a/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.c b/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.c index 792d1db..d015add 100644 --- a/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.c +++ b/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.c @@ -1,21 +1,156 @@ -#include "common.h" +#include "engine/process.h" +#include "292020.h" + +void func_800F65E0_MoveDoorsLuigiBoard(void) { + D_800F7820_MoveDoorsLuigiBoard = D_800ED5DC; + omInitObjMan(50, 10); + func_800F765C_MoveDoorsLuigiBoard(); + func_800F7528_MoveDoorsLuigiBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F7198_MoveDoorsLuigiBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F74C8_MoveDoorsLuigiBoard); + + if (D_800C597A != 0) { + SetFadeInTypeAndTime(6, 8); + } else { + SetFadeInTypeAndTime(1, 16); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F65E0_MoveDoorsLuigiBoard); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F66D0_MoveDoorsLuigiBoard); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F6F14_MoveDoorsLuigiBoard); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F7198_MoveDoorsLuigiBoard); +void func_800F7198_MoveDoorsLuigiBoard(void) { + s8 sp10[3]; + s32 temp_v0; + s32 temp_s0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F744C_MoveDoorsLuigiBoard); + if (D_800C597A == 0) { + func_800421E0(); + HuPrcSleep(0x10); + PlaySound(0xDA); + HuPrcSleep(10); + } else { + HuPrcSleep(8); + } + + temp_v0 = CreateTextWindow(0x3C, 0x28, 0x11, 7); + + if (gPlayers[D_800F7820_MoveDoorsLuigiBoard].coinAmount < 0x14) { + func_8006DA5C(temp_v0, &D_800F7810_MoveDoorsLuigiBoard, 0); + sp10[0] = 0; + } else { + func_8006DA5C(temp_v0, &D_800F7814_MoveDoorsLuigiBoard, 0); + sp10[0] = 1; + } + sp10[2] = 1; + sp10[1] = 1; + LoadStringIntoWindow(temp_v0, (void* )0x1D5, -1, -1); + func_8006E070(temp_v0, 0); + ShowTextWindow(temp_v0); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F74C8_MoveDoorsLuigiBoard); + while (func_8006FCC0(temp_v0) != 0) { + HuPrcVSleep(); + } + + temp_s0 = func_800F6F14_MoveDoorsLuigiBoard(temp_v0, sp10); + + HideTextWindow(temp_v0); + if (temp_s0 == 2) { + D_800F7720_MoveDoorsLuigiBoard = 1; + } else if (temp_s0 == 1) { + temp_v0 = CreateTextWindow(80, 60, 15, 3); + LoadStringIntoWindow(temp_v0, (void* )0x1D7, -1, -1); + func_8006E070(temp_v0, 0); + ShowTextWindow(temp_v0); + func_8004DBD4(temp_v0, D_800F7820_MoveDoorsLuigiBoard); + HideTextWindow(temp_v0); + D_800ED100.boardRam[1] = 0; + } else { + func_80055960(D_800F7820_MoveDoorsLuigiBoard, -0x14); + HuPrcSleep(30); + D_800ED100.boardRam[1] = 1; + temp_v0 = CreateTextWindow(0x50, 0x3C, 0xD, 3); + LoadStringIntoWindow(temp_v0, (void* )0x1D6, -1, -1); + func_8006E070(temp_v0, 0); + ShowTextWindow(temp_v0); + func_8004DBD4(temp_v0, D_800F7820_MoveDoorsLuigiBoard); + HideTextWindow(temp_v0); + func_8004F4D4(D_800F7824_MoveDoorsLuigiBoard, 0, 0); + func_800503B0(D_800F7820_MoveDoorsLuigiBoard, 1); + PlaySound(0xE1); + HuPrcSleep(15); + } + + D_800F5144 = 1; + + while (1) { + HuPrcVSleep(); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F7528_MoveDoorsLuigiBoard); +void func_800F744C_MoveDoorsLuigiBoard(void) { + if (func_80072718() == 0) { + func_800F76FC_MoveDoorsLuigiBoard(); + func_800F7630_MoveDoorsLuigiBoard(); + func_80054654(); + func_80070ED4(); + if (D_800F7720_MoveDoorsLuigiBoard == 0) { + omOvlReturnEx(1); + return; + } + func_8004F284(); + func_8004F28C(85, D_800F7720_MoveDoorsLuigiBoard); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F7630_MoveDoorsLuigiBoard); +void func_800F74C8_MoveDoorsLuigiBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + if (D_800F7720_MoveDoorsLuigiBoard != 0) { + func_800726AC(6, 8); + } else { + func_800726AC(1, 16); + } + arg0->func_ptr = &func_800F744C_MoveDoorsLuigiBoard; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F765C_MoveDoorsLuigiBoard); +void func_800F7528_MoveDoorsLuigiBoard(void) { + func_8003DAA8(); + D_800F7824_MoveDoorsLuigiBoard = CreateObject(0x11, D_800F773C_MoveDoorsLuigiBoard); + D_800F7824_MoveDoorsLuigiBoard->coords.x = D_800F7724_MoveDoorsLuigiBoard.x; + D_800F7824_MoveDoorsLuigiBoard->coords.y = D_800F7724_MoveDoorsLuigiBoard.y; + D_800F7824_MoveDoorsLuigiBoard->coords.z = D_800F7724_MoveDoorsLuigiBoard.z; + func_8003E81C(D_800F7824_MoveDoorsLuigiBoard, 1, 2); + D_800F7828_MoveDoorsLuigiBoard = CreateObject(func_80052F04(D_800F7820_MoveDoorsLuigiBoard), D_800C5490[gPlayers[D_800F7820_MoveDoorsLuigiBoard].characterID]); + D_800F7828_MoveDoorsLuigiBoard->coords.x = D_800F7730_MoveDoorsLuigiBoard.x; + D_800F7828_MoveDoorsLuigiBoard->coords.y = D_800F7730_MoveDoorsLuigiBoard.y; + D_800F7828_MoveDoorsLuigiBoard->coords.z = D_800F7730_MoveDoorsLuigiBoard.z; + func_8004CCD0(&D_800F7828_MoveDoorsLuigiBoard->coords, &D_800F7824_MoveDoorsLuigiBoard->coords, &D_800F7828_MoveDoorsLuigiBoard->unk_18); + func_8004CCD0(&D_800F7824_MoveDoorsLuigiBoard->coords, &D_800F7828_MoveDoorsLuigiBoard->coords, &D_800F7824_MoveDoorsLuigiBoard->unk_18); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_55_MoveDoorsLuigiBoard/292020", func_800F76FC_MoveDoorsLuigiBoard); +void func_800F7630_MoveDoorsLuigiBoard(void) { + DestroyObject(D_800F7828_MoveDoorsLuigiBoard); + DestroyObject(D_800F7824_MoveDoorsLuigiBoard); +} + +void func_800F765C_MoveDoorsLuigiBoard(void) { + func_800178A0(1); + func_80017660(0U, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0U, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(41); +} + +void func_800F76FC_MoveDoorsLuigiBoard(void) { + func_8004A140(); + func_80049F0C(); +} diff --git a/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.h b/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.h new file mode 100644 index 0000000..ae01c3a --- /dev/null +++ b/src/overlays/ovl_55_MoveDoorsLuigiBoard/292020.h @@ -0,0 +1,27 @@ +#include "common.h" + +s32 func_800F6F14_MoveDoorsLuigiBoard(s32, s8*); +void func_8004DBD4(s32, u8); +void func_800F7198_MoveDoorsLuigiBoard(void); +void func_800F7528_MoveDoorsLuigiBoard(void); +void func_800F765C_MoveDoorsLuigiBoard(void); +void func_800F74C8_MoveDoorsLuigiBoard(omObjData*); +void func_800F7630_MoveDoorsLuigiBoard(void); +void func_800F76FC_MoveDoorsLuigiBoard(void); +void func_800F744C_MoveDoorsLuigiBoard(void); +extern u8 D_800F7820_MoveDoorsLuigiBoard; +extern s16 D_800ED156; +extern s32 D_800F7720_MoveDoorsLuigiBoard; +extern char D_800F7810_MoveDoorsLuigiBoard; +extern char D_800F7814_MoveDoorsLuigiBoard; +extern u8 D_800F7820_MoveDoorsLuigiBoard; +extern s32 D_800F7720_MoveDoorsLuigiBoard; +extern s32 D_800F7720_MoveDoorsLuigiBoard; +extern omObjData* D_800C5490[]; +extern Vec3f D_800F7724_MoveDoorsLuigiBoard; +extern Vec3f D_800F7730_MoveDoorsLuigiBoard; +extern s32 D_800F773C_MoveDoorsLuigiBoard[]; +extern u8 D_800F7820_MoveDoorsLuigiBoard; +extern Object* D_800F7824_MoveDoorsLuigiBoard; +extern Object* D_800F7828_MoveDoorsLuigiBoard; + diff --git a/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.c b/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.c index 2fe5fae..72cd9cb 100644 --- a/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.c +++ b/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.c @@ -1,19 +1,184 @@ -#include "common.h" +#include "engine/process.h" +#include "293260.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F65E0_BowserToadSwapPlacesMarioBoard); +Vec3f D_800F6DB0_BowserToadSwapPlacesMarioBoard = {0.0f, -190.0f, -500.0f}; +Vec3f D_800F6DBC_BowserToadSwapPlacesMarioBoard = {0.0f, -190.0f, -500.0f}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F66AC_BowserToadSwapPlacesMarioBoard); +s32 D_800F6DC8_BowserToadSwapPlacesMarioBoard[] = {0x00000001, 0x000A006A}; +s32 D_800F6DD0_BowserToadSwapPlacesMarioBoard[] = {0x00000001, 0x00070004}; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F692C_BowserToadSwapPlacesMarioBoard); +void func_800F65E0_BowserToadSwapPlacesMarioBoard(void) { + D_800F6DF0_BowserToadSwapPlacesMarioBoard = D_800ED5DC; + omInitObjMan(50, 10); + func_800F6CE8_BowserToadSwapPlacesMarioBoard(); + func_800F6B1C_BowserToadSwapPlacesMarioBoard(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + omAddPrcObj(func_800F692C_BowserToadSwapPlacesMarioBoard, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6AC8_BowserToadSwapPlacesMarioBoard); + SetFadeInTypeAndTime(4, 16); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6A84_BowserToadSwapPlacesMarioBoard); +//very odd need for temps? +void func_800F66AC_BowserToadSwapPlacesMarioBoard(f32 arg0) { + Object* temp_s0; + Object* var_s0; + Vec3f* temp; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6AC8_BowserToadSwapPlacesMarioBoard); + if (D_800ED100.boardRam[0] != 0) { + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp = &D_800F6DBC_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.x = temp->x + (sinf(arg0 * 0.017453292519943295) * 200.0f); + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.z = (cosf(arg0 * 0.017453292519943295) * 200.0f) + D_800F6DBC_BowserToadSwapPlacesMarioBoard.z; + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = sinf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.z = cosf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DFC_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = sinf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DFC_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.z = cosf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.x = temp->x - (sinf(arg0 * 0.017453292519943295) * 200.0f); + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.z = temp->z - (cosf(arg0 * 0.017453292519943295) * 200.0f); + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = -sinf(arg0 * 0.017453292519943295); + var_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + var_s0->unk_18.z = -cosf(arg0 * 0.017453292519943295); + } else { + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp = &D_800F6DBC_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.x = (sinf(arg0 * 0.017453292519943295) * 200.0f) + temp->x; + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.z = (cosf(arg0 * 0.017453292519943295) * 200.0f) + D_800F6DBC_BowserToadSwapPlacesMarioBoard.z; + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = sinf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DF8_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.z = cosf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DFC_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = sinf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DFC_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.z = cosf(arg0 * 0.017453292519943295); + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.x = temp->x - (sinf(arg0 * 0.017453292519943295) * 200.0f); + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->coords.z = D_800F6DBC_BowserToadSwapPlacesMarioBoard.z - (cosf(arg0 * 0.017453292519943295) * 200.0f); + temp_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + temp_s0->unk_18.x = -sinf(arg0 * 0.017453292519943295); + var_s0 = D_800F6DF4_BowserToadSwapPlacesMarioBoard; + var_s0->unk_18.z = -cosf(arg0 * 0.017453292519943295); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6B1C_BowserToadSwapPlacesMarioBoard); +void func_800F692C_BowserToadSwapPlacesMarioBoard(void) { + s32 i; + f32 var_f20; + + HuPrcSleep(26); + PlaySound(226); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6CB0_BowserToadSwapPlacesMarioBoard); + if (D_800ED100.boardRam[0] != 0) { + PlaySound(1131); + } else { + PlaySound(1127); + } + + for (var_f20 = 0.0f; var_f20 >= -180.0f; var_f20 -= 5.0f) { + func_800F66AC_BowserToadSwapPlacesMarioBoard(var_f20); + HuPrcVSleep(); + } -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6CE8_BowserToadSwapPlacesMarioBoard); + PlaySound(228); + + D_800ED100.boardRam[0] = (D_800ED100.boardRam[0] + 1) & 1; + + if (D_800ED100.boardRam[0] == 0) { + PlaySound(1126); + func_8003E81C(D_800F6DF8_BowserToadSwapPlacesMarioBoard, 0, 2); + + for (i = 0; i < 2; i++) { + func_8004F00C(D_800F6DF8_BowserToadSwapPlacesMarioBoard, 40.0f, -5.0f); + func_8004F044(D_800F6DF8_BowserToadSwapPlacesMarioBoard); + } + + } else { + PlaySound(1130); + func_8003E81C(D_800F6DF4_BowserToadSwapPlacesMarioBoard, 0, 2); + HuPrcSleep(40); + } + + D_800F5144 = 1; + + while(1) { + HuPrcVSleep(); + } + +} + +void func_800F6A84_BowserToadSwapPlacesMarioBoard(void) { + if (func_80072718() == 0) { + func_800F6D88_BowserToadSwapPlacesMarioBoard(); + func_800F6CB0_BowserToadSwapPlacesMarioBoard(); + func_80054654(); + omOvlReturnEx(1); + } +} + +void func_800F6AC8_BowserToadSwapPlacesMarioBoard(omObjData* arg0) { + if (D_800F5144 != 0) { + if (D_800ED100.boardRam[0] != 0) { + func_800726AC(3, 16); + } else { + func_800726AC(2, 16); + } + arg0->func_ptr = &func_800F6A84_BowserToadSwapPlacesMarioBoard; + } +} + +void func_800F6B1C_BowserToadSwapPlacesMarioBoard(void) { + func_8003DAA8(); + D_800F6DFC_BowserToadSwapPlacesMarioBoard = CreateObject(20, NULL); + VEC3F_COPY_TO_OBJ(D_800F6DFC_BowserToadSwapPlacesMarioBoard, D_800F6DB0_BowserToadSwapPlacesMarioBoard); + D_800F6DFC_BowserToadSwapPlacesMarioBoard->xScale = D_800F6DFC_BowserToadSwapPlacesMarioBoard->yScale = D_800F6DFC_BowserToadSwapPlacesMarioBoard->zScale = 1.5f; + func_80025F60(*D_800F6DFC_BowserToadSwapPlacesMarioBoard->unk_3C->unk_40, 0); + D_800F6DF4_BowserToadSwapPlacesMarioBoard = CreateObject(108, D_800F6DC8_BowserToadSwapPlacesMarioBoard); + D_800F6DF4_BowserToadSwapPlacesMarioBoard->coords.x = D_800F6DBC_BowserToadSwapPlacesMarioBoard.x; + D_800F6DF4_BowserToadSwapPlacesMarioBoard->coords.y = D_800F6DBC_BowserToadSwapPlacesMarioBoard.y; + D_800F6DF4_BowserToadSwapPlacesMarioBoard->coords.z = D_800F6DBC_BowserToadSwapPlacesMarioBoard.z + 200.0f; + D_800F6DF4_BowserToadSwapPlacesMarioBoard->xScale = D_800F6DF4_BowserToadSwapPlacesMarioBoard->yScale = D_800F6DF4_BowserToadSwapPlacesMarioBoard->zScale = 1.5f; + D_800F6DF8_BowserToadSwapPlacesMarioBoard = CreateObject(7, D_800F6DD0_BowserToadSwapPlacesMarioBoard); + D_800F6DF8_BowserToadSwapPlacesMarioBoard->coords.x = D_800F6DBC_BowserToadSwapPlacesMarioBoard.x; + D_800F6DF8_BowserToadSwapPlacesMarioBoard->coords.y = D_800F6DBC_BowserToadSwapPlacesMarioBoard.y; + D_800F6DF8_BowserToadSwapPlacesMarioBoard->coords.z = D_800F6DBC_BowserToadSwapPlacesMarioBoard.z + 200.0f; + func_800258EC(*D_800F6DF4_BowserToadSwapPlacesMarioBoard->unk_40->unk_40, 0x180, 0x80); + func_800258EC(*D_800F6DF8_BowserToadSwapPlacesMarioBoard->unk_40->unk_40, 0x180, 0x80); + func_80025AD4(*D_800F6DF4_BowserToadSwapPlacesMarioBoard->unk_40->unk_40); + func_80025AD4(*D_800F6DF8_BowserToadSwapPlacesMarioBoard->unk_40->unk_40); + func_800F66AC_BowserToadSwapPlacesMarioBoard(0); +} + +void func_800F6CB0_BowserToadSwapPlacesMarioBoard(void) { + DestroyObject(D_800F6DF4_BowserToadSwapPlacesMarioBoard); + DestroyObject(D_800F6DF8_BowserToadSwapPlacesMarioBoard); + DestroyObject(D_800F6DFC_BowserToadSwapPlacesMarioBoard); +} + + +void func_800F6CE8_BowserToadSwapPlacesMarioBoard(void) { + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + LoadBackgroundIndex(51); +} + +void func_800F6D88_BowserToadSwapPlacesMarioBoard(void) { + func_8004A140(); + func_80049F0C(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260", func_800F6D88_BowserToadSwapPlacesMarioBoard); diff --git a/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.h b/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.h new file mode 100644 index 0000000..01026e4 --- /dev/null +++ b/src/overlays/ovl_56_BowserToadSwapPlacesMarioBoard/293260.h @@ -0,0 +1,21 @@ +#include "common.h" + +void func_800F6CB0_BowserToadSwapPlacesMarioBoard(void); +void func_800F6D88_BowserToadSwapPlacesMarioBoard(void); +void func_800F66AC_BowserToadSwapPlacesMarioBoard(f32); +void func_800F6A84_BowserToadSwapPlacesMarioBoard(void); +void func_800F692C_BowserToadSwapPlacesMarioBoard(void); +void func_800F6B1C_BowserToadSwapPlacesMarioBoard(void); +void func_800F6CE8_BowserToadSwapPlacesMarioBoard(void); +void func_800F6AC8_BowserToadSwapPlacesMarioBoard(omObjData*); + +extern GameStatus D_800ED154; +extern Vec3f D_800F6DB0_BowserToadSwapPlacesMarioBoard; +extern Vec3f D_800F6DBC_BowserToadSwapPlacesMarioBoard; +extern s32 D_800F6DC8_BowserToadSwapPlacesMarioBoard[]; +extern s32 D_800F6DD0_BowserToadSwapPlacesMarioBoard[]; +extern u8 D_800F6DF0_BowserToadSwapPlacesMarioBoard; +extern Object* D_800F6DF4_BowserToadSwapPlacesMarioBoard; +extern Object* D_800F6DF8_BowserToadSwapPlacesMarioBoard; +extern Object* D_800F6DFC_BowserToadSwapPlacesMarioBoard; + diff --git a/src/overlays/ovl_60/29AB30.c b/src/overlays/ovl_60/29AB30.c index e0af09f..f4699af 100644 --- a/src/overlays/ovl_60/29AB30.c +++ b/src/overlays/ovl_60/29AB30.c @@ -1,17 +1,196 @@ -#include "common.h" +#include "engine/process.h" +#include "29AB30.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F65E0_name_60); +extern s32 D_800F6E7C_name_60[]; +extern s32 D_800F6D30_name_60[]; +extern Vec3f D_800F6D50_name_60[]; +extern Vec3f D_800F6DB0_name_60[]; +extern s32* D_800F6E64_name_60[]; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F66C4_name_60); +void func_8004DBD4(s32, u8); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F692C_name_60); +void func_800F65E0_name_60(void) { + D_800F6EC0_name_60 = D_800ED5C2[0]; + D_800F6EC1_name_60 = D_800ED5DC; + omInitObjMan(0x32, 0xA); + func_800F6B8C_name_60(); + func_800F69BC_name_60(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(&func_800F66C4_name_60, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F6978_name_60); + SetFadeInTypeAndTime(1, 0x10); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F6978_name_60); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F69BC_name_60); +void func_800F66C4_name_60(void) { + s16 textWindowID; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F6B58_name_60); + func_800421E0(); + HuPrcSleep(26); + func_8004F00C(D_800F6EC4_name_60, 0, -3.0f); + func_8004F044(D_800F6EC4_name_60); + PlaySound(117); + HuPrcSleep(10); + textWindowID = CreateTextWindow(80, 60, 12, 3); + LoadStringIntoWindow(textWindowID, (void*)382, -1, -1); + func_8006E070(textWindowID, 0); + ShowTextWindow(textWindowID); + PlaySound(0x432); + func_8004DBD4(textWindowID, D_800F6EC1_name_60); + HideTextWindow(textWindowID); + func_8004CCD0(&D_800F6EC8_name_60->coords , &D_800F32A0->coords, &D_800F6EC8_name_60->unk_18 ); + func_8004F4D4(D_800F6EC8_name_60, 0, 0); + func_80060468(0x451, gPlayers[D_800F6EC1_name_60].characterID); + func_80055960(D_800F6EC1_name_60, 20); + HuPrcSleep(40); + func_8003E81C(D_800F6EC8_name_60, 1, 2); + func_8004EE14(0, &D_800F6EC4_name_60->coords, 10, D_800F6EC8_name_60); + HuPrcSleep(10); + func_8004F4D4(D_800F6EC8_name_60, -1, 2); + textWindowID = CreateTextWindow(100, 60, 14, 3); + LoadStringIntoWindow(textWindowID, (void*)383, -1, -1); + func_8006E070(textWindowID, 0); + ShowTextWindow(textWindowID); + PlaySound(0x432); + func_8004DBD4(textWindowID, D_800F6EC1_name_60); + HideTextWindow(textWindowID); + func_8004F4D4(D_800F6EC4_name_60, 2, 2); + func_8004EE14(0, &D_800F6E10_name_60, 10, D_800F6EC4_name_60); + PlaySound(85); + HuPrcSleep(10); + func_8004E3E0(0, &D_800F6E10_name_60, 20, D_800F6EC4_name_60); + PlaySound(85); + HuPrcSleep(20); + D_800F5144 = 1; + while (1) { + HuPrcVSleep(); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F6B8C_name_60); +void func_800F692C_name_60(void) { + if (func_80072718() == 0) { + func_800F6D04_name_60(); + func_800F6B58_name_60(); + func_80054654(); + func_80070ED4(); + omOvlReturnEx(1); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_60/29AB30", func_800F6D04_name_60); +void func_800F6978_name_60(omObjData* arg0) { + if (D_800F5144 != 0) { + func_800726AC(1, 16); + arg0->func_ptr = &func_800F692C_name_60; + } +} + +void func_800F69BC_name_60(void) { + func_8003DAA8(); + D_800F6EC4_name_60 = CreateObject(8, &D_800F6E7C_name_60); + D_800F6EC4_name_60->coords.x = D_800F6D50_name_60[D_800F6EC0_name_60].x; + D_800F6EC4_name_60->coords.y = D_800F6D50_name_60[D_800F6EC0_name_60].y; + D_800F6EC4_name_60->coords.z = D_800F6D50_name_60[D_800F6EC0_name_60].z; + D_800F6EC4_name_60->unk_30 = 1000.0f; + func_8004F140(*D_800F6EC4_name_60->unk_3C->unk_40); + D_800F6EC8_name_60 = CreateObject(func_80052F04(D_800F6EC1_name_60), D_800F6E64_name_60[gPlayers[D_800F6EC1_name_60].characterID]); + D_800F6EC8_name_60->coords.x = D_800F6DB0_name_60[D_800F6EC0_name_60].x; + D_800F6EC8_name_60->coords.y = D_800F6DB0_name_60[D_800F6EC0_name_60].y; + D_800F6EC8_name_60->coords.z = D_800F6DB0_name_60[D_800F6EC0_name_60].z; + func_80021B14(*D_800F6EC8_name_60->unk_3C->unk_40, gPlayers[D_800F6EC1_name_60].characterID, 0x80); + func_8004CCD0(&D_800F6EC4_name_60->coords, &D_800F6EC8_name_60->coords, &D_800F6EC4_name_60->unk_18); + func_8004CCD0(&D_800F6EC8_name_60->coords, &D_800F6EC4_name_60->coords, &D_800F6EC8_name_60->unk_18); +} + +void func_800F6B58_name_60(void) { + DestroyObject((Object*) D_800F6EC4_name_60); + DestroyObject((Object*) D_800F6EC8_name_60); + func_8004F1D0(); +} + +void func_800F6B8C_name_60(void) { + s32 var_a0; + + func_800178A0(1); + func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + LoadBackgroundData(&D_FE2310); + switch (D_800F6EC0_name_60) { + case 1: + if (gPlayers[D_800F6EC1_name_60].curChainIndex == 2) { + var_a0 = 12; + } else { + var_a0 = 9; + } + break; + case 3: + switch (gPlayers[D_800F6EC1_name_60].curChainIndex) { + case 2: + var_a0 = 29; + break; + case 3: + var_a0 = 33; + break; + case 8: + var_a0 = 31; + break; + case 1: + var_a0 = 32; + break; + case 0: + default: + var_a0 = 30; + break; + } + break; + default: + var_a0 = D_800F6D30_name_60[D_800F6EC0_name_60]; + } + LoadBackgroundIndex(var_a0); +} + +void func_800F6D04_name_60(void) { + func_8004A140(); + func_80049F0C(); +} + +s32 D_800F6D30_name_60[] = {0x00000002, 0x00000009, 0x00000014, 0x0000001D, 0x00000029, 0x00000031, 0x0000003A, 0x00000047}; + +Vec3f D_800F6D50_name_60[] = { + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f}, + {-80.0f, 0.0f, 1310.0f} +}; + +Vec3f D_800F6DB0_name_60[] = { + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, + {80.0f, 0.0f, 1520.0f}, +}; + +Vec3f D_800F6E10_name_60 = {-500.0f, 0.0f, 1310.0f}; + +s32 D_800F6E1C_name_60[] = { 0x00000002, 0x00010039, 0x00010001 }; +s32 D_800F6E28_name_60[] = { 0x00000002, 0x00020039, 0x00020001 }; +s32 D_800F6E34_name_60[] = { 0x00000002, 0x00060039, 0x00060001 }; +s32 D_800F6E40_name_60[] = { 0x00000002, 0x00030039, 0x00030001 }; +s32 D_800F6E4C_name_60[] = { 0x00000002, 0x00040039, 0x00040001 }; +s32 D_800F6E58_name_60[] = { 0x00000002, 0x00050039, 0x00050001 }; + +s32* D_800F6E64_name_60[] = { D_800F6E1C_name_60, D_800F6E28_name_60, D_800F6E34_name_60, D_800F6E40_name_60, D_800F6E4C_name_60, D_800F6E58_name_60 }; + +s32 D_800F6E7C_name_60[] = { 0x00000003, 0x000A0072, 0x000A0073, 0x000A0074, 0x00000000 }; \ No newline at end of file diff --git a/src/overlays/ovl_60/29AB30.h b/src/overlays/ovl_60/29AB30.h new file mode 100644 index 0000000..d53adfd --- /dev/null +++ b/src/overlays/ovl_60/29AB30.h @@ -0,0 +1,20 @@ +#include "common.h" + +void func_800F692C_name_60(void); +void func_800F6B58_name_60(void); +void func_800F6D04_name_60(void); +void func_800F69BC_name_60(void); +void func_800F6B8C_name_60(void); +void func_800F66C4_name_60(void); +void func_800F6978_name_60(omObjData*); + +extern u8 D_800F6EC0_name_60; +extern u8 D_800F6EC1_name_60; +extern Vec3f D_800F6E10_name_60; +extern Object* D_800F6EC4_name_60; +extern Object* D_800F6EC8_name_60; +extern s32 D_800F6ECC_name_60; +extern s32 D_800F6ED0_name_60; +extern s32 D_800F6ED4_name_60; +extern s32 D_800F6ED8_name_60; +extern s32 D_800F6EDC_name_60; diff --git a/src/overlays/ovl_61_OpeningScene/29B410.c b/src/overlays/ovl_61_OpeningScene/29B410.c index c892ee9..8dce8b1 100644 --- a/src/overlays/ovl_61_OpeningScene/29B410.c +++ b/src/overlays/ovl_61_OpeningScene/29B410.c @@ -1,11 +1,79 @@ #include "common.h" +#include "29B410.h" +#include "engine/process.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800F65E0_OpeningScene); +void func_800F65E0_OpeningScene(void) { + Vec3s sp18; + Vec3s sp28; + omObjData* temp_s0; + + func_80062450(); + D_800C5972 = 0; + D_800C59A6 = -1; + D_800F64F2 = 1; + InitCameras(1); + func_80029090(1); + func_8001DE70(25); + omInitObjMan(50, 20); + func_80060088(); + func_8006CEA0(); + func_8005AD18(); + + sp18 = D_800FD4A0_OpeningScene; + sp28 = D_800FD4AC_OpeningScene; + + func_800FB670_OpeningScene(&sp18, &sp28, 1200.0f); + func_800FB7F8_OpeningScene(20.0f, 80.0f, 8000.0f); + temp_s0 = omAddObj(0x7FDA, 0, 0, -1, func_800FB810_OpeningScene); + omSetStatBit(temp_s0, 0xA0); + func_800FB810_OpeningScene(temp_s0); + func_80023448(3); + func_800234B8(0, 0x78, 0x78, 0x78); + func_800234B8(1, 0x40, 0x40, 0x60); + func_80023504(1, 50.0f, 50.0f, 100.0f); + func_800234B8(2, 0, 0, 0); + func_800234B8(3, 0, 0, 0); + D_800FD730_OpeningScene[1] = omAddPrcObj(&func_800FB86C_OpeningScene, 0x300, 0x2000, 0); +} + +//what section are the D_80110450 ish addresses? INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800F6788_OpeningScene); +// void func_800F6788_OpeningScene(omObjData* arg0) { +// s32 pad[2]; //required to match stack alignment + +// if (arg0->work[1] != 0) { +// arg0->work[1]--; +// return; +// } + +// arg0->work[0]++; + +// if (arg0->work[0] >= 7) { +// arg0->work[0] = 0; +// } + +// arg0->work[1] = 0x50; + +// func_800FBD48_OpeningScene(D_80110460_OpeningScene, D_80110448_OpeningScene[arg0->work[0]] + 12, 40.0f); +// } + INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800F6804_OpeningScene); +// omObjData* func_800F6804_OpeningScene(unkGlobalStruct_00* arg0) { +// omObjData* temp_s0; + +// temp_s0 = omAddObj(0x1000, 0, 0, -1, &func_800F6788_OpeningScene); +// omSetRot(temp_s0, 0, 0, 0); +// omSetSca(temp_s0, arg0->unk_18 + arg0->unk_0C, arg0->unk_1C + arg0->unk_10, arg0->unk_20.floatingPoint + arg0->unk_14); +// omSetTra(temp_s0, D_80110450_OpeningScene->unk_0C, D_80110450_OpeningScene->unk_10, D_80110450_OpeningScene->unk_14); +// temp_s0->work[0] = 2; +// temp_s0->work[1] = 48; +// temp_s0->unk_50 = arg0; +// return temp_s0; +// } + INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800F68D4_OpeningScene); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800F69F0_OpeningScene); @@ -96,7 +164,11 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB67 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB79C_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB7F8_OpeningScene); +void func_800FB7F8_OpeningScene(f32 x, f32 y, f32 z) { + D_800FD6F4_OpeningScene.x = x; + D_800FD6F4_OpeningScene.y = y; + D_800FD6F4_OpeningScene.z = z; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB810_OpeningScene); @@ -109,7 +181,13 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB91 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FB97C_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBAC0_OpeningScene); +s32 func_800FBAC0_OpeningScene(void) { + func_800178A0(1); + func_800FC394_OpeningScene(0); + LoadBackgroundData(&D_FE2310); + func_8004B1B8(); + return 1; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBAFC_OpeningScene); @@ -117,13 +195,22 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBB9 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBC9C_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBCC0_OpeningScene); +Object* func_800FBCC0_OpeningScene(s32 arg0, void* arg1) { + Object* temp_v0; + + temp_v0 = CreateObject(arg0, arg1); + func_80025F60(*temp_v0->unk_3C->unk_40, 0x800); + func_80025F60(*temp_v0->unk_40->unk_40, 0x400); + return temp_v0; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBD14_OpeningScene); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBD48_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBD7C_OpeningScene); +void func_800FBD7C_OpeningScene(void) { + func_8004E184(); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FBD98_OpeningScene); @@ -163,7 +250,10 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FC6B INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FC724_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FC758_OpeningScene); +void func_800FC758_OpeningScene(void) { + func_800FC724_OpeningScene(); + HuPrcSleep(2); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FC77C_OpeningScene); @@ -183,4 +273,6 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FCE9 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FCECC_OpeningScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_61_OpeningScene/29B410", func_800FCEE8_OpeningScene); +void func_800FCEE8_OpeningScene(f32 arg0) { + D_800FD794_OpeningScene = arg0; +} diff --git a/src/overlays/ovl_61_OpeningScene/29B410.h b/src/overlays/ovl_61_OpeningScene/29B410.h new file mode 100644 index 0000000..f16da99 --- /dev/null +++ b/src/overlays/ovl_61_OpeningScene/29B410.h @@ -0,0 +1,24 @@ +#include "common.h" + +void func_800FB670_OpeningScene(Vec3s*, Vec3s*, f32); +void func_800FB7F8_OpeningScene(f32, f32, f32); +void func_800FB810_OpeningScene(omObjData*); +extern s16 D_800C5972; +extern s16 D_800C59A6; +extern s8 D_800F64F2; +extern Vec3s D_800FD4A0_OpeningScene; +extern Vec3s D_800FD4AC_OpeningScene; +extern Process* D_800FD730_OpeningScene[]; +void func_800FB86C_OpeningScene(void); +void func_800FBD48_OpeningScene(s32, s32, f32); +extern s32 D_80110448_OpeningScene[]; +extern s32 D_80110460_OpeningScene; +extern unkGlobalStruct_00* D_80110450_OpeningScene; +void func_800F6788_OpeningScene(omObjData*); +s32 func_800FC394_OpeningScene(s32); +void func_8004B1B8(void); +s32 func_8004E184(void); +s32 func_800FC724_OpeningScene(void); + +extern Vec3f D_800FD6F4_OpeningScene; +extern f32 D_800FD794_OpeningScene; \ No newline at end of file diff --git a/src/overlays/ovl_62_BoardIntro/2A2500.c b/src/overlays/ovl_62_BoardIntro/2A2500.c new file mode 100644 index 0000000..821b1e1 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A2500.c @@ -0,0 +1,112 @@ +#include "common.h" +#include "2A2500.h" + +//what memory region does D_801102B0_BoardIntro belong to? + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F65E0_BoardIntro); + +// void func_800F65E0_BoardIntro(void) { +// D_801102B0_BoardIntro = D_800ED5C2; +// omInitObjMan(50, 10); +// func_800F9200_BoardIntro(); +// func_800F906C_BoardIntro(); +// func_8006CEA0(); +// omAddPrcObj(func_800F8DC8_BoardIntro, 0x300, 0x2000, 0); +// omAddObj(0x1000, 0, 0, -1, &func_800F8FEC_BoardIntro); +// } + +void func_800F6660_BoardIntro(s32 arg0, s32 arg1) { + playerMain* temp_s1; + playerMain* temp_s2; + playerMain* temp_v0; + + temp_s1 = GetPlayerStruct(arg0); + temp_s2 = GetPlayerStruct(arg1); + temp_v0 = HuMemDirectMalloc(sizeof(playerMain)); + bcopy(temp_s1, temp_v0, sizeof(playerMain)); + bcopy(temp_s2, temp_s1, sizeof(playerMain)); + bcopy(temp_v0, temp_s2, sizeof(playerMain)); + HuMemDirectFree(temp_v0); +} + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F66E8_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F677C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F67F8_BoardIntro); + +//D_801102B0_BoardIntro symbol again +// s32 func_800F67F8_BoardIntro(s32 arg0) { +// return func_8004F628(D_800FD59C_ovl62[(D_801102B0_BoardIntro * 2) + arg0], 0xA, D_800FD554_BoardIntro[(D_801102B0_BoardIntro * 2) + arg0].unk0, D_800FD554_BoardIntro[(D_801102B0_BoardIntro * 2) + arg0].unk2); +// } + +s32 func_800F684C_BoardIntro(void) { + return 0; +} + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F6854_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F69F8_BoardIntro); + +void func_800F6B18_BoardIntro(void) { + s32 sp10[2]; + f32 var_f20; + + func_80060128(57); + HuPrcSleep(10); + sp10[0] = func_800F67F8_BoardIntro(0); + + for (var_f20 = 0.0f; var_f20 <= 1.0f; var_f20 += 0.1f) { + func_8004F7C0(sp10[0], 1.0f, var_f20); + HuPrcVSleep(); + } + + func_8004F7C0(sp10[0], 1.0f, 1.0f); + HuPrcSleep(34); + sp10[1] = func_800F67F8_BoardIntro(1); + HuPrcSleep(42); + func_800F684C_BoardIntro(); + HuPrcSleep(60); +} + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F6BE4_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F6DAC_BoardIntro); + +INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", D_800FD9C0_BoardIntro); + +INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", D_800FD9C4_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7054_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7330_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F73FC_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7538_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7858_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7988_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F7B5C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F8090_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F8334_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F8DC8_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F8F38_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F8FEC_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F906C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F9098_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F9200_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", func_800F9298_BoardIntro); + +INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A2500", D_800FD9E8_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A2500.h b/src/overlays/ovl_62_BoardIntro/2A2500.h new file mode 100644 index 0000000..2778d12 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A2500.h @@ -0,0 +1,22 @@ +#include "common.h" + +void func_800F8DC8_BoardIntro(void); +void func_800F906C_BoardIntro(void); +void func_800F9200_BoardIntro(void); +void func_8004F7C0(s32, f32, f32); +s32 func_800F67F8_BoardIntro(s32); +s32 func_800F684C_BoardIntro(void); +void func_800F8FEC_BoardIntro(void); +extern u8 D_801102B0_BoardIntro; +extern s32 D_800FCD2C_BoardIntro[]; +extern s16 D_800FDA60_ovl62[]; + +typedef struct testing { + s16 unk0; + s16 unk2; +} testing; + +s32 func_8004F628(s32, s32, s16, s16); +extern testing D_800FD554_BoardIntro[]; +extern s32 D_800FD59C_ovl62[2]; +extern u8 D_801102B0_BoardIntro; diff --git a/src/overlays/ovl_62_BoardIntro/2A51E0.c b/src/overlays/ovl_62_BoardIntro/2A51E0.c new file mode 100644 index 0000000..21e216b --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A51E0.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A51E0", func_800F92C0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A51E0", func_800F93AC_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A5420.c b/src/overlays/ovl_62_BoardIntro/2A5420.c new file mode 100644 index 0000000..5ee7da8 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A5420.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5420", func_800F9500_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5420", func_800F959C_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A5840.c b/src/overlays/ovl_62_BoardIntro/2A5840.c new file mode 100644 index 0000000..d82a09c --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A5840.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5840", func_800F9920_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5840", func_800F9BCC_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A5E50.c b/src/overlays/ovl_62_BoardIntro/2A5E50.c new file mode 100644 index 0000000..0513906 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A5E50.c @@ -0,0 +1,15 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800F9F30_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800F9F6C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800F9F98_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800FA0C0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800FA104_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800FA168_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A5E50", func_800FA214_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A6500.c b/src/overlays/ovl_62_BoardIntro/2A6500.c new file mode 100644 index 0000000..8736264 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A6500.c @@ -0,0 +1,27 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA5E0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA62C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA660_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA72C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA770_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA7D4_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA908_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA970_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FA9D4_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FACAC_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FACF0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FAD50_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6500", func_800FADFC_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A6EA0.c b/src/overlays/ovl_62_BoardIntro/2A6EA0.c new file mode 100644 index 0000000..e7015f7 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A6EA0.c @@ -0,0 +1,11 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6EA0", func_800FAF80_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6EA0", func_800FB030_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6EA0", func_800FB20C_BoardIntro); + +INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6EA0", D_800FDA20_BoardIntro); + +INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A6EA0", D_800FDA2C_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A74F0.c b/src/overlays/ovl_62_BoardIntro/2A74F0.c new file mode 100644 index 0000000..bae296c --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A74F0.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A74F0", func_800FB5D0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A74F0", func_800FB66C_BoardIntro); diff --git a/src/overlays/ovl_62_BoardIntro/2A76E0.c b/src/overlays/ovl_62_BoardIntro/2A76E0.c new file mode 100644 index 0000000..49e4a78 --- /dev/null +++ b/src/overlays/ovl_62_BoardIntro/2A76E0.c @@ -0,0 +1,25 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FB7C0_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FB9CC_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FBAA8_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FBBB8_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC018_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC1CC_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC460_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC620_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC64C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC67C_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FC768_BoardIntro); + +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_BoardIntro/2A76E0", func_800FCD2C_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A2500.c b/src/overlays/ovl_62_board_intro/2A2500.c deleted file mode 100644 index 37532e4..0000000 --- a/src/overlays/ovl_62_board_intro/2A2500.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F65E0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F6660_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F66E8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F677C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F67F8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F684C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F6854_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F69F8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F6B18_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F6BE4_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F6DAC_BoardIntro); - -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", D_800FD9C0_BoardIntro); - -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", D_800FD9C4_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7054_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7330_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F73FC_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7538_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7858_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7988_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F7B5C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F8090_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F8334_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F8DC8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F8F38_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F8FEC_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F906C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F9098_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F9200_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", func_800F9298_BoardIntro); - -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_board_intro/2A2500", D_800FD9E8_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A51E0.c b/src/overlays/ovl_62_board_intro/2A51E0.c deleted file mode 100644 index 86dcdc1..0000000 --- a/src/overlays/ovl_62_board_intro/2A51E0.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A51E0", func_800F92C0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A51E0", func_800F93AC_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A5420.c b/src/overlays/ovl_62_board_intro/2A5420.c deleted file mode 100644 index 8322111..0000000 --- a/src/overlays/ovl_62_board_intro/2A5420.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5420", func_800F9500_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5420", func_800F959C_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A5840.c b/src/overlays/ovl_62_board_intro/2A5840.c deleted file mode 100644 index 5a96fa1..0000000 --- a/src/overlays/ovl_62_board_intro/2A5840.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5840", func_800F9920_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5840", func_800F9BCC_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A5E50.c b/src/overlays/ovl_62_board_intro/2A5E50.c deleted file mode 100644 index e06e308..0000000 --- a/src/overlays/ovl_62_board_intro/2A5E50.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800F9F30_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800F9F6C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800F9F98_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800FA0C0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800FA104_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800FA168_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A5E50", func_800FA214_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A6500.c b/src/overlays/ovl_62_board_intro/2A6500.c deleted file mode 100644 index 2247943..0000000 --- a/src/overlays/ovl_62_board_intro/2A6500.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA5E0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA62C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA660_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA72C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA770_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA7D4_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA908_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA970_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FA9D4_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FACAC_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FACF0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FAD50_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6500", func_800FADFC_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A6EA0.c b/src/overlays/ovl_62_board_intro/2A6EA0.c deleted file mode 100644 index ac3ec69..0000000 --- a/src/overlays/ovl_62_board_intro/2A6EA0.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6EA0", func_800FAF80_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6EA0", func_800FB030_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A6EA0", func_800FB20C_BoardIntro); - -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_board_intro/2A6EA0", D_800FDA20_BoardIntro); - -INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_62_board_intro/2A6EA0", D_800FDA2C_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A74F0.c b/src/overlays/ovl_62_board_intro/2A74F0.c deleted file mode 100644 index cb11b22..0000000 --- a/src/overlays/ovl_62_board_intro/2A74F0.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A74F0", func_800FB5D0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A74F0", func_800FB66C_BoardIntro); diff --git a/src/overlays/ovl_62_board_intro/2A76E0.c b/src/overlays/ovl_62_board_intro/2A76E0.c deleted file mode 100644 index de0edaa..0000000 --- a/src/overlays/ovl_62_board_intro/2A76E0.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "common.h" - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FB7C0_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FB9CC_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FBAA8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FBBB8_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC018_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC1CC_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC460_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC620_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC64C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC67C_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FC768_BoardIntro); - -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_62_board_intro/2A76E0", func_800FCD2C_BoardIntro); diff --git a/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.c b/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.c index 2ddd41d..c35bcf0 100644 --- a/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.c +++ b/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.c @@ -1,8 +1,41 @@ #include "common.h" +#include "2B74A0.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", func_800F65E0_UnknownBooStealScene); +void func_800F65E0_UnknownBooStealScene(void) { + D_800F9600_UnknownBooStealScene = D_800ED5C0.unk_02; + D_800F9601_UnknownBooStealScene = D_800ED5C0.unk_1C; + + if (D_800ED5C0.currentTurn < 10) { + D_800F9602_UnknownBooStealScene = 0; + } else if (D_800ED5C0.currentTurn < 20) { + D_800F9602_UnknownBooStealScene = 1; + } else if (D_800ED5C0.currentTurn < 40) { + D_800F9602_UnknownBooStealScene = 2; + } else { + D_800F9602_UnknownBooStealScene = 3; + } + + omInitObjMan(0x32, 0x32); + func_800F922C_UnknownBooStealScene(); + func_800F9024_UnknownBooStealScene(); + func_800544E4(); + func_800546B4(0, gPlayers[0].turn_status); + func_800546B4(1, gPlayers[1].turn_status); + func_800546B4(2, gPlayers[2].turn_status); + func_800546B4(3, gPlayers[3].turn_status); + func_8006CEA0(); + omAddPrcObj(func_800F884C_UnknownBooStealScene, 0x300, 0, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F8F18_UnknownBooStealScene); + if (D_800C597A != 0) { + SetFadeInTypeAndTime(6, 8); + } else { + SetFadeInTypeAndTime(1, 0x10); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", func_800F6734_UnknownBooStealScene); +s32 func_800F6734_UnknownBooStealScene(void) { + return rand8() / 256.0f * 100.0f; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", func_800F6788_UnknownBooStealScene); @@ -30,7 +63,16 @@ INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", D INCLUDE_RODATA("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", D_800F95C4_UnknownBooStealScene); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", func_800F8F78_UnknownBooStealScene); +void func_800F8F78_UnknownBooStealScene(omObjData* arg0) { + Object* temp_s0; + + temp_s0 = D_800F9604_UnknownBooStealScene; + temp_s0->unk_30 = sinf(arg0->rot.y * 0.0174532925199432955)* 20.0f + 150.0f; + arg0->rot.y += 2.0f; + if (arg0->rot.y >= 360.0f) { + arg0->rot.y -= 360.0f; + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_65_UnknownBooStealScene/2B74A0", func_800F9024_UnknownBooStealScene); diff --git a/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.h b/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.h new file mode 100644 index 0000000..ad1b99c --- /dev/null +++ b/src/overlays/ovl_65_UnknownBooStealScene/2B74A0.h @@ -0,0 +1,11 @@ +#include "common.h" + +extern u8 D_800F9600_UnknownBooStealScene; +extern u8 D_800F9601_UnknownBooStealScene; +extern s8 D_800F9602_UnknownBooStealScene; +extern Object* D_800F9604_UnknownBooStealScene; + +void func_800F884C_UnknownBooStealScene(void); +void func_800F9024_UnknownBooStealScene(void); +void func_800F922C_UnknownBooStealScene(void); +void func_800F8F18_UnknownBooStealScene(void); diff --git a/src/overlays/ovl_67_LogosSequenceCopy/2BA9E0.c b/src/overlays/ovl_67_LogosSequenceCopy/2BA9E0.c index ae66fcf..8a3192d 100644 --- a/src/overlays/ovl_67_LogosSequenceCopy/2BA9E0.c +++ b/src/overlays/ovl_67_LogosSequenceCopy/2BA9E0.c @@ -1,3 +1,14 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BA9E0", func_800F65E0_LogosSequenceCopy); +void func_800F6AD4_LogosSequenceCopy(void); +void func_800F6E10_LogosSequenceCopy(void); + +board_overlay_entrypoint D_800F6F50_LogosSequenceCopy[] = { + {0, func_800F6AD4_LogosSequenceCopy}, + {1, func_800F6E10_LogosSequenceCopy}, + {-1, 0}, +}; + +void func_800F65E0_LogosSequenceCopy(void) { + ExecBoardScene(D_800F6F50_LogosSequenceCopy, D_800C597A); +} diff --git a/src/overlays/ovl_67_LogosSequenceCopy/2BAA10.c b/src/overlays/ovl_67_LogosSequenceCopy/2BAA10.c index 2666e83..a90566d 100644 --- a/src/overlays/ovl_67_LogosSequenceCopy/2BAA10.c +++ b/src/overlays/ovl_67_LogosSequenceCopy/2BAA10.c @@ -1,18 +1,83 @@ -#include "common.h" +#include "logos.h" + +s32 D_800F6F70_LogosSequenceCopy = 0; +s32 D_800F6F74_LogosSequenceCopy[] = {0x00110000, 0x00110001, 0x00110002}; + +void func_800F6610_LogosSequenceCopy(unkLogoStruct* arg0, s16 arg1, s16 arg2, s16 arg3, u16 arg4) { + void* temp_s6; + s32 i; + u8 temp_s0; + + temp_s6 = ReadMainFS(0x110005); + sprintf(D_800F5038, "%02d", arg2); + + for (i = 0; i < 2; i++) { + temp_s0 = D_800F5038[i]; + arg0->unkC[arg1] = func_800678A4(temp_s6); + func_80067208(arg0->unkA, arg1, arg0->unkC[arg1], temp_s0 - 48); + func_80067384(arg0->unkA, arg1, 0xA); + func_800674BC(arg0->unkA, arg1, 0x1000); + func_80066DC4(arg0->unkA, arg1, arg3, arg4); + func_80067558(arg0->unkA, arg1, 255, 255, 255, 255); + arg1 += 1; + arg3 += 0x10; + } + + FreeMainFS(temp_s6); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6610_LogosSequenceCopy); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6778_LogosSequenceCopy); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6AD4_LogosSequenceCopy); +void func_800F6AD4_LogosSequenceCopy(void) { + s32 var_s0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6BA0_LogosSequenceCopy); + var_s0 = 1; + omInitObjMan(0xA, 0xA); + LeoDriveExistBool = func_800827C0() == 1; + if (LeoDriveExistBool != 0) { + D_800F6F70_LogosSequenceCopy = LeoDriveExist(0x95, 0x96, &D_800ECDE8, 8); + if (D_800F6F70_LogosSequenceCopy != 0) { + LeoDriveExistBool = 0; + } else if (osGetMemSize() < 0x800000) { //if memsize is less than 8MB + omAddPrcObj(func_800F6778_LogosSequenceCopy, 0x5000, 0, 0); + D_800F6F70_LogosSequenceCopy = 0x2C; + var_s0 = 0; + } + } + if (var_s0 != 0) { + omOvlGotoEx(0x66, 0, 0x91); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6C1C_LogosSequenceCopy); +void func_800F6BA0_LogosSequenceCopy(void) { + unkLogoStruct sp10; //could be incorrect + s32 mesg; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6C6C_LogosSequenceCopy); + osCreateMesgQueue(&D_800F7980_LogosSequenceCopy, &D_800F7998_LogosSequenceCopy, 1); + func_800639F8(&sp10, &D_800F7980_LogosSequenceCopy, 2); + osRecvMesg(&D_800F7980_LogosSequenceCopy, (OSMesg) &mesg, 1); + if (mesg == 2) { + func_8007FEA4(); + } + func_80063A5C(&sp10); + osDestroyThread(NULL); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6C94_LogosSequenceCopy); +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6C1C_LogosSequenceCopy); //https://decomp.me/scratch/rZb4x + +void func_800F6C6C_LogosSequenceCopy(void) { + osSendMesg(&D_800F7980_LogosSequenceCopy, 0, 1); +} + +s32 func_800F6C94_LogosSequenceCopy(s32 arg0, s32 arg1, s32 arg2) { + someStruct sp18; + s32 sp38; + + func_800819F0(&sp18, 0, arg1, arg0, arg2, &D_800F6F90_LogosSequenceCopy); + osRecvMesg(&D_800F6F90_LogosSequenceCopy, (OSMesg) &sp38, 1); + return sp38; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_67_LogosSequenceCopy/2BAA10", func_800F6CEC_LogosSequenceCopy); diff --git a/src/overlays/ovl_67_LogosSequenceCopy/logos.h b/src/overlays/ovl_67_LogosSequenceCopy/logos.h new file mode 100644 index 0000000..0fbdb82 --- /dev/null +++ b/src/overlays/ovl_67_LogosSequenceCopy/logos.h @@ -0,0 +1,40 @@ +#include "PR/os.h" +#include "common.h" + +//typing issues all over 2BAA10.c where this header file is included +//global functions defined in this file are not typed correctly, fix later (before removing definitions from this file) + +extern board_overlay_entrypoint D_800F6F50_LogosSequenceCopy[]; + +typedef struct unkLogoStruct { +s16 unk0; +s16 unk2; +s32 unk4; +s16 unk8; +s16 unkA; +s16* unkC; +} unkLogoStruct; + +typedef struct someStruct { +char unk_00[0x20]; +} someStruct; + +void func_800F6AD4_LogosSequenceCopy(void); +void func_800F6E10_LogosSequenceCopy(void); +void func_800819F0(someStruct*, s32, s32, s32, s32, OSMesgQueue*); + +s32 LeoDriveExist(s32, s32, s32*, s32); +s32 func_800827C0(void); +void func_800F6778_LogosSequenceCopy(void); +extern s32 LeoDriveExistBool; +extern s32 D_800ECDE8; +extern s32 D_800F6F70_LogosSequenceCopy; +void func_80063A5C(void*); +void func_8007FEA4(void); + + +extern char D_800F5038[]; +extern const char D_800F6F80_LogosSequenceCopy[]; +extern OSMesgQueue D_800F7980_LogosSequenceCopy; +extern OSMesgQueue D_800F6F90_LogosSequenceCopy; +extern OSMesg D_800F7998_LogosSequenceCopy; \ No newline at end of file diff --git a/src/overlays/ovl_68_SaveDataCorrupted/2BB390.c b/src/overlays/ovl_68_SaveDataCorrupted/2BB390.c index f971840..7f3f215 100644 --- a/src/overlays/ovl_68_SaveDataCorrupted/2BB390.c +++ b/src/overlays/ovl_68_SaveDataCorrupted/2BB390.c @@ -1,3 +1,12 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_68_SaveDataCorrupted/2BB390", func_800F65E0_SaveDataCorrupted); +void func_800F67C0_SaveDataCorrupted(void); + +board_overlay_entrypoint D_800F6800_SaveDataCorrupted[] = { + {0, &func_800F67C0_SaveDataCorrupted}, + {-1, 0}, +}; + +void func_800F65E0_SaveDataCorrupted(void) { + ExecBoardScene(D_800F6800_SaveDataCorrupted, D_800C597A); +} diff --git a/src/overlays/ovl_68_SaveDataCorrupted/2BB390.h b/src/overlays/ovl_68_SaveDataCorrupted/2BB390.h new file mode 100644 index 0000000..cf055ed --- /dev/null +++ b/src/overlays/ovl_68_SaveDataCorrupted/2BB390.h @@ -0,0 +1,3 @@ +#include "common.h" + +void func_800F67C0_SaveDataCorrupted(void); diff --git a/src/overlays/ovl_68_SaveDataCorrupted/2BB3C0.c b/src/overlays/ovl_68_SaveDataCorrupted/2BB3C0.c index a58650c..65ad6ee 100644 --- a/src/overlays/ovl_68_SaveDataCorrupted/2BB3C0.c +++ b/src/overlays/ovl_68_SaveDataCorrupted/2BB3C0.c @@ -1,5 +1,56 @@ #include "common.h" +#include "2BB390.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_68_SaveDataCorrupted/2BB3C0", func_800F6610_SaveDataCorrupted); +typedef struct unk_800F5460 { +/* 0x00 */ s16 unk_00; +/* 0x00 */ s16 unk_02; +/* 0x00 */ s16 unk_04; +/* 0x00 */ s16 unk_06; +} unk_800F5460; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_68_SaveDataCorrupted/2BB3C0", func_800F67C0_SaveDataCorrupted); +extern u16 D_800F5460[]; + +void func_800F6610_SaveDataCorrupted(void) { + s16 temp_s2; + s16 new_var; + + func_8006CEA0(); + temp_s2 = func_8006D010(0x34, 0x41, 0xD9, 0x22, 0, 0); + func_8006E154(temp_s2, 0xFF); + func_800717C0(temp_s2); + LoadStringIntoWindow(temp_s2, (void*)0x38, -1, -1); + func_8006E070(temp_s2, 0); + new_var = func_8006D010(0x3E, 0x8C, 0xC3, 0x14, 0, 0); + func_8006E154(new_var, 0xFF); + func_800717C0(new_var); + LoadStringIntoWindow(new_var, (void*)0x39, -1, -1); + func_8006E070(new_var, 0); + SetFadeInTypeAndTime(0xFF, 8); + + while (func_80072718() != 0) { + HuPrcVSleep(); + } + + do { + HuPrcVSleep(); + } while (((((D_800F5460[0] | D_800F5460[1]) | D_800F5460[2]) | D_800F5460[3]) & 0xF00F) == 0); + + func_800726AC(0xFF, 8); + + while (func_80072718() != 0) { + HuPrcVSleep(); + } + + func_80070D90(temp_s2); + func_80070D90(new_var); + func_80070ED4(); + omOvlGotoEx(0x67, 0, 0x91); + omOvlKill(); + HuPrcVSleep(); +} + +void func_800F67C0_SaveDataCorrupted(void) { + omInitObjMan(0xA, 0xA); + func_80060088(); + omAddPrcObj(&func_800F6610_SaveDataCorrupted, 0x1005, 0, 0); +} diff --git a/src/overlays/ovl_69_GameModeOverworld/2BB5C0.c b/src/overlays/ovl_69_GameModeOverworld/2BB5C0.c index fe4a2d1..a762fc0 100644 --- a/src/overlays/ovl_69_GameModeOverworld/2BB5C0.c +++ b/src/overlays/ovl_69_GameModeOverworld/2BB5C0.c @@ -1,3 +1,12 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5C0", func_800F65E0_GameModeOverworld); +void func_800F6610_GameModeOverworld(void); + +board_overlay_entrypoint D_800F9930_GameModeOverworld[] = { + {0, &func_800F6610_GameModeOverworld}, + {-1, NULL}, +}; + +void func_800F65E0_GameModeOverworld(void) { + ExecBoardScene(D_800F9930_GameModeOverworld, D_800C597A); +} \ No newline at end of file diff --git a/src/overlays/ovl_69_GameModeOverworld/2BB5C0.h b/src/overlays/ovl_69_GameModeOverworld/2BB5C0.h new file mode 100644 index 0000000..f890327 --- /dev/null +++ b/src/overlays/ovl_69_GameModeOverworld/2BB5C0.h @@ -0,0 +1,30 @@ +#include "common.h" + +extern s32 D_800FA1FC_GameModeOverworld; +extern u8 D_800FA202_GameModeOverworld; +extern s16 D_800FA1C0_GameModeOverworld; +extern s16 D_800FA1C2_GameModeOverworld; +extern u8 D_800FA204_GameModeOverworld; +extern f32 D_800FA1D8_GameModeOverworld; +extern s8 D_800F3843[]; +extern s16 D_800EDEB4[]; +extern s8 D_800ECC22; +extern s16 D_800ED144; +extern s8 D_800F64F2; +extern s16 D_800FA1C0_GameModeOverworld; +extern s16 D_800FA1C2_GameModeOverworld; +extern Vec3f D_800FA1C4_GameModeOverworld; +extern Vec3f D_800FA1D0_GameModeOverworld; +extern f32 D_800FA1DC_ovl_69; +extern s16 D_800FA1E2_GameModeOverworld; +extern s32 D_800FA1FC_GameModeOverworld; +extern s8 D_800FA200_GameModeOverworld; +extern u8 D_800FA202_GameModeOverworld; +extern s8 D_800FA203_GameModeOverworld; +extern u8 D_800FA204_GameModeOverworld; +extern s8 D_800FA205_GameModeOverworld; + +void func_800F8AB8_GameModeOverworld(omObjData*); +void func_800F6968_GameModeOverworld(void); +void func_800F884C_GameModeOverworld(omObjData*); +void func_800F8B38_GameModeOverworld(void); diff --git a/src/overlays/ovl_69_GameModeOverworld/2BB5F0.c b/src/overlays/ovl_69_GameModeOverworld/2BB5F0.c index 8b628d2..55fb9f2 100644 --- a/src/overlays/ovl_69_GameModeOverworld/2BB5F0.c +++ b/src/overlays/ovl_69_GameModeOverworld/2BB5F0.c @@ -1,36 +1,249 @@ -#include "common.h" +#include "engine/process.h" +#include "2BB5C0.h" + +void func_80025F10(s16, s32); +Object* func_80026A0C(s16, void*); +void func_800F731C_GameModeOverworld(void); +void func_800F86EC_GameModeOverworld(void); +extern char D_800FA180_GameModeOverworld[]; INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F6610_GameModeOverworld); +// void func_800F6610_GameModeOverworld(void) { //matches, needs rodata support +// omObjData* temp_s1; + +// InitCameras(1); +// func_80029090(1); +// func_8001DE70(0x19); +// omInitObjMan(0x32, 0x14); +// func_80060088(); +// func_8006CEA0(); +// temp_s1 = omAddObj(0x7FDA, 0, 0, -1, func_800F884C_GameModeOverworld); +// omSetStatBit(temp_s1, 0xA0); +// D_800F64F2 = 1; +// omAddObj(0x2710, 0, 0, -1, &func_800F8AB8_GameModeOverworld); +// D_800EE98C = 7120.0f; +// D_800F6524.x = 54.9103f; +// D_800F6524.y = 59.226612f; +// D_800F6524.z = 61.478203f; +// D_800F33EC.y = 341.0f; +// D_800F33EC.x = 28.0f; +// D_800F33EC.z = 0.0f; +// func_8001D494(0, 20.0f, 80.0f, 13000.0f); +// D_800FA1D0_GameModeOverworld.x = D_800FA1D0_GameModeOverworld.y = D_800FA1D0_GameModeOverworld.z = 0.0f; +// D_800FA1DC_ovl_69 = 2000.0f; +// D_800FA1C4_GameModeOverworld.x = D_800FA1C4_GameModeOverworld.y = D_800FA1C4_GameModeOverworld.z = 0.0f; +// func_8001D494(1, 10.0f, 80.0f, 8000.0f); +// func_800F884C_GameModeOverworld(temp_s1); +// D_800ECC22 = 1; +// func_8005AF60(); +// func_80023448(3); +// func_800234B8(0U, 0x78U, 0x78U, 0x78U); +// func_800234B8(1U, 0x40U, 0x40U, 0x60U); +// func_80023504(1, -100.0f, 100.0f, 100.0f); +// func_80023504(2, -100.0f, 100.0f, 100.0f); +// func_800234B8(2U, 0U, 0U, 0U); +// func_800234B8(3U, 0U, 0U, 0U); +// omAddPrcObj(func_800F6968_GameModeOverworld, 0x3F00U, 0x1000, 0); +// D_800FA1C0_GameModeOverworld = 0; +// D_800FA1C2_GameModeOverworld = 0; +// D_800FA1E2_GameModeOverworld = 0; +// D_800FA1FC_GameModeOverworld = -1; +// D_800FA202_GameModeOverworld = 0; +// D_800FA200_GameModeOverworld = 0; +// if ((D_800ED144 >= 0x64) && (IsFlagSet(3) == 0) && (IsFlagSet(0x17) != 0)) { +// SetBoardFeatureFlag(3); +// SetBoardFeatureFlag(4); +// } +// D_800FA203_GameModeOverworld = IsFlagSet(3); +// D_800FA204_GameModeOverworld = IsFlagSet(4); +// D_800FA205_GameModeOverworld = IsFlagSet(0x18); +// if (D_800FA204_GameModeOverworld != 0) { +// D_800FA1E2_GameModeOverworld = 1; +// } +// ClearBoardFeatureFlag(0); +// ClearBoardFeatureFlag(0x29); +// ClearBoardFeatureFlag(0x2B); +// ClearBoardFeatureFlag(0x2C); +// if (IsFlagSet(0x36) != 0) { +// ClearBoardFeatureFlag(0x36); +// func_80070ED4(); +// omOvlReturnEx(1); +// } +// } INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F6968_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F6F14_GameModeOverworld); +void func_800F6F14_GameModeOverworld(void) { + f32 var_f20, var_f24; + u16 temp_s1; + + temp_s1 = LoadFormFile(0x9001A, 0x299); + func_80026040(temp_s1); + func_80025F10(temp_s1, 1); + var_f20 = 0.0f; + var_f24 = var_f20; + while (1) { + HuPrcVSleep(); + func_80027C1C(temp_s1, var_f24, var_f20, 0x20, 0x20); + var_f20 += 0.5f; + } + +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F6FC8_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F7214_GameModeOverworld); +void func_800F7214_GameModeOverworld(void) { + s32 temp_s0; + Vec3f pad; + + temp_s0 = LoadFormFile(0x7000A, 0x202B9); + func_80025EB4(temp_s0, 2, 2); + func_80025F10(temp_s0, 1); + + pad.x = 291.0f; + pad.y = 0.0f; + pad.z = 2234.0f; + + func_80025798(temp_s0, pad.x, pad.y, pad.z); + func_80025830(temp_s0, 3.0f, 3.0f, 3.0f); + func_800257E4(temp_s0, 0.0f, 45.0f, 0.0f); + omAddPrcObj(func_800F731C_GameModeOverworld, 0x3F00, 0x1000, 0); + func_80026A0C(temp_s0, "c100_1-atama")->unk_44 = -20.0f; + while (1) { + HuPrcVSleep(); + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F731C_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F7DB8_GameModeOverworld); +void func_800F7DB8_GameModeOverworld(s16 arg0) { + func_80071E80(arg0, 1); + func_80072080(arg0); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F7DF0_GameModeOverworld); +void func_800F7DF0_GameModeOverworld(void) { + HuPrcSleep(0x37); + PlaySound(0); + while (1) { + HuPrcVSleep(); + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F7E24_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F86A8_GameModeOverworld); +void func_800F86A8_GameModeOverworld(omObjData* arg0) { + arg0->model[0] = -1; + SetFadeInTypeAndTime(0xFF, 0x10); + arg0->func_ptr = &func_800F86EC_GameModeOverworld; +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F86EC_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F8758_GameModeOverworld); +void func_800F86EC_GameModeOverworld(void) { + if (D_800FA1C0_GameModeOverworld == 4) { + func_80070ED4(); + if (D_800FA1FC_GameModeOverworld == -1) { + omOvlReturnEx(1); + return; + } + omOvlCallEx(D_800FA1FC_GameModeOverworld, D_800FA202_GameModeOverworld, 0x11); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F87D0_GameModeOverworld); +s32 func_800F8758_GameModeOverworld(u8 arg0) { + if ((D_800EDEB4[arg0] & 0x300) == 0) { + return D_800ECE14[arg0]; + } + + if ((D_800EDEB4[arg0] & 0x200) != 0) { + return -0x50; + } else { + return -((D_800EDEB4[arg0] & 0x100) != 0) & 0x50; + } +} + +s32 func_800F87D0_GameModeOverworld(u8 arg0) { + if ((D_800EDEB4[arg0] & 0xC00) == 0) { + return D_800F3843[arg0]; + } + + if ((D_800EDEB4[arg0] & 0x800) != 0) { + return 0x50; + } else { + return -((D_800EDEB4[arg0] & 0x400) != 0) & -0x50; + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F884C_GameModeOverworld); +// void func_800F884C_GameModeOverworld(omObjData* arg0) { //cleanup later, matches needs rodata support +// Vec3f sp10; +// Vec3f sp20; +// Vec3f sp30; +// f32 temp_f20; +// f32 temp_f20_2; +// f32 temp_f20_3; +// f32 temp_f20_4; +// f32 temp_f20_5; +// f32 temp_f20_6; +// f32 temp_f22; +// f32 temp_f22_2; +// f32 temp_f24; +// f32 temp_f24_2; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F8AB8_GameModeOverworld); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F8B38_GameModeOverworld); +// temp_f22 = D_800F33EC.y; +// temp_f24 = D_800F33EC.x; +// temp_f20 = func_800AEAC0(temp_f24); +// sp10.x = D_800F6524.x + (temp_f20 * func_800AEFD0(temp_f22) * D_800EE98C); +// sp10.y = (-func_800AEAC0(temp_f22) * D_800EE98C) + D_800F6524.y; +// temp_f20_2 = func_800AEFD0(temp_f24); +// sp10.z = (temp_f20_2 * func_800AEFD0(temp_f22) * D_800EE98C) + D_800F6524.z; +// sp20.x = D_800F6524.x; +// sp20.y = D_800F6524.y; +// sp20.z = D_800F6524.z; +// temp_f20_3 = func_800AEAC0(temp_f24); +// sp30.x = temp_f20_3 * func_800AEAC0(temp_f22); +// sp30.y = func_800AEFD0(temp_f22); +// temp_f20_4 = func_800AEFD0(temp_f24); +// sp30.z = temp_f20_4 * func_800AEAC0(temp_f22); +// func_8001D420(0, &sp10, &sp20, &sp30); +// func_8001D57C(0); +// temp_f22_2 = D_800FA1D0_GameModeOverworld.x; +// temp_f24_2 = D_800FA1D0_GameModeOverworld.y; +// temp_f20_5 = func_800AEAC0(temp_f24_2); +// sp10.x = D_800FA1C4_GameModeOverworld.x + (temp_f20_5 * func_800AEFD0(temp_f22_2) * D_800FA1DC_ovl_69); +// sp10.y = (-func_800AEAC0(temp_f22_2) * D_800FA1DC_ovl_69) + D_800FA1C4_GameModeOverworld.y; +// temp_f20_6 = func_800AEFD0(temp_f24_2); +// sp10.z = D_800FA1C4_GameModeOverworld.z + (temp_f20_6 * func_800AEFD0(temp_f22_2) * D_800FA1DC_ovl_69); +// sp20.x = D_800FA1C4_GameModeOverworld.x; +// sp20.y = D_800FA1C4_GameModeOverworld.y; +// sp20.z = D_800FA1C4_GameModeOverworld.z; +// sp30.x = func_800AEAC0(temp_f24_2) * func_800AEAC0(temp_f22_2); +// sp30.y = func_800AEFD0(temp_f22_2); +// sp30.z = func_800AEFD0(temp_f24_2) * func_800AEAC0(temp_f22_2); +// func_8001D420(1, &sp10, &sp20, &sp30); +// func_8001D57C(1); +// } + +void func_800F8AB8_GameModeOverworld(omObjData* arg0) { + if ((D_800FA1C0_GameModeOverworld == 4) || (D_800FA1C2_GameModeOverworld != 0) || (D_800F5144 != 0)) { + func_800726AC(0, 0x14); + arg0->func_ptr = &func_800F8B38_GameModeOverworld; + if (D_800FA204_GameModeOverworld == 0) { + func_800601D4(0x28); + } + } +} + +void func_800F8B38_GameModeOverworld(void) { + if (func_80072718() == 0) { + func_80070ED4(); + if (D_800FA1FC_GameModeOverworld == -1) { + omOvlReturnEx(1); + return; + } + omOvlCallEx(D_800FA1FC_GameModeOverworld, D_800FA202_GameModeOverworld, 0x11); + } +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_69_GameModeOverworld/2BB5F0", func_800F8BA0_GameModeOverworld); diff --git a/src/overlays/ovl_70_TestingRoom/2F40C0.c b/src/overlays/ovl_70_TestingRoom/2F40C0.c index 45353ae..23f4e5b 100644 --- a/src/overlays/ovl_70_TestingRoom/2F40C0.c +++ b/src/overlays/ovl_70_TestingRoom/2F40C0.c @@ -1,24 +1,300 @@ #include "common.h" +#include "2F40C0.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F65E0_TestingRoom); +void func_800F65E0_TestingRoom(void) { + u8 temp_s0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F6A44_TestingRoom); + func_80029090(0x32); + func_8002ADF0(&D_800EDEC0, 0x40); + func_8001DE70(0x20); + omInitObjMan(0x32, 0); + func_80060088(); + func_8000942C(); + func_800178A0(1); + temp_s0 = func_800178E8(); + func_80017660(temp_s0, 0.0f, 0.0f, 320.0f, 240.0f); + func_800176C4(temp_s0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f); + func_8001D494(0, 30.0f, 80.0f, 8000.0f); + D_800EE984 = 0; + D_800F2BC0 = 0; + D_800ED440 = 0; + func_80009500(); + D_800B899C = 0; + func_80009618(1); + D_800B8955 = 0; + func_800090B8(D_800ED440); + + D_800F2AF8[D_800ED440++] = omAddObj(1, 1, 0, -1, &func_800F6BD8_TestingRoom); + D_800F2AF8[D_800ED440++] = omAddObj(1, 2, 0, -1, &func_800F6D04_TestingRoom); + D_800F2AF8[D_800ED440++] = omAddObj(1, 1, 0, -1, &func_800F6E38_TestingRoom); + D_800F2AF8[D_800ED440++] = omAddObj(1, 1, 0, -1, &func_800F6F1C_TestingRoom); + D_800F2AF8[D_800ED440++] = omAddObj(1, 1, 0, -1, &func_800F7010_TestingRoom); + + D_800F3FB0[D_800F2BC0++] = omAddObj(2, 0xA, 0x3C, -1, &func_800F7970_TestingRoom); + D_800F3FB0[D_800F2BC0++] = omAddObj(2, 9, 0x3C, -1, &func_800F7A44_TestingRoom); + D_800F3FB0[D_800F2BC0++] = omAddObj(2, 9, 0x3C, -1, &func_800F7AFC_TestingRoom); + D_800F3FB0[D_800F2BC0++] = omAddObj(2, 9, 0x3C, -1, &func_800F7B78_TestingRoom); + + D_800EDE70[D_800EE984++] = omAddObj(3, 5, 0, -1, &func_800F7C38_TestingRoom); + D_800EDE70[D_800EE984++] = omAddObj(3, 1, 0, -1, &func_800F7BF4_TestingRoom); + + omSetStatBit(omAddObj(0x7FDA, 0, 0, -1, func_8005EB1C), 0xA0); + D_800B895C = 10.0f; + SetFadeInTypeAndTime(0, 0x10); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F6BD8_TestingRoom); +void func_800F6A44_TestingRoom(void) { + s32 i; + f32* tempVar; + f32* anotherTemp; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F6D04_TestingRoom); + func_80009468(); + switch (D_800ED430) { + case 0: + if (D_800F9494_TestingRoom >= 0x1F) { + func_80009458(); + } + D_800F9494_TestingRoom += 2; + break; + case 1: + D_800F9498_TestingRoom -= 2; + if ((D_800EDEB4[0] & 0x30) == 0x30) { //D_800EDEB4 maybe not an array + omOvlReturnEx(1); + } + break; + case 2: + if (D_800F949C_TestingRoom == 0) { + func_8000C250(0xB4); + } + + if (D_800F949C_TestingRoom > 0xB4) { + func_80009448(); + } + + D_800F949C_TestingRoom += 2; + break; + case 3: + if (D_800F94A0_TestingRoom == 0) { + func_8000C250(0xB4); + } + D_800F94A0_TestingRoom += 2; + break; + } -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F6E38_TestingRoom); + for (i = 0; i < D_800F2BC0; i++) { + anotherTemp = &((unkGlobalStruct_00*) D_800F3FB0[i]->unk_50)->unk_60; + tempVar = &D_800F33F0; + *anotherTemp = *tempVar; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F6F1C_TestingRoom); +void func_800F6BD8_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7010_TestingRoom); + arg0->model[0] = func_800174C0(0x380004, 0x99); + arg0->trans.x = arg0->trans.y = arg0->trans.z = 0.0f; + func_80025798(arg0->model[0], 0.0f, arg0->trans.y, arg0->trans.z); + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = &func_800F6A44_TestingRoom; + temp_s1->unk_04 = 1; + D_800F6524.x = 8.0f; + D_800F6524.y = 110.0f; + D_800F6524.z = -86.0f; + D_800F33EC.y = 312.7f; + D_800EE98C = 2616.0f; + func_800090A4(arg0); + func_80008FB8(arg0, 0.6f); + func_80008FC4(arg0, 25.0f); + temp_s1->unk_05 = 0; +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7108_TestingRoom); +void func_800F6D04_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F71F4_TestingRoom); + arg0->model[0] = func_800174C0(0x380008, 0x899); + arg0->trans.x = -1500.0f; + arg0->trans.y = 75.0f; + arg0->trans.z = 1200.0f; + func_80025798(arg0->model[0], arg0->trans.x, arg0->trans.y, arg0->trans.z); + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = &func_800F7EDC_TestingRoom; + temp_s1->unk_04 = 1; + func_80009058(arg0, 160.0f, 160.0f, -100.0f, -100.0f, 100.0f, 100.0f); + func_80008FB8(arg0, 0.3f); + func_8000941C(arg0, 1.0f, 1.0f, 1.0f); + temp_s1->unk_05 = 1; +} +void func_800F6E38_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; + + arg0->model[0] = func_800174C0(0x380000, 0x899); + arg0->trans.x = 0.0f; + arg0->trans.y = 0.0f; + arg0->trans.z = 0.0f; + func_80025798(arg0->model[0], arg0->trans.x, arg0->trans.y, arg0->trans.z); + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = &func_800F9400_TestingRoom; + temp_s1->unk_04 = 1; + func_80009000(arg0, 4, 0.0f); + func_800090A4(arg0); + func_80008FB8(arg0, 0.5f); + func_8000941C(arg0, 1.0f, 1.0f, 1.0f); + func_80008FC4(arg0, 20.0f); + temp_s1->unk_05 = 2; +} + +void func_800F6F1C_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; + + arg0->model[0] = func_800174C0(0x380006, 0x899); + arg0->trans.x = 0.0f; + arg0->trans.y = 125.0f; + arg0->trans.z = 1700.0f; + func_80025798(arg0->model[0], arg0->trans.x, arg0->trans.y, 1700.0f); + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = &func_800F7F50_TestingRoom; + temp_s1->unk_04 = 1; + func_80009000(arg0, 4, 0.0f); + func_80008FB8(arg0, 0.5f); + func_8000941C(arg0, 1.0f, 1.0f, 1.0f); + temp_s1->unk_05 = 3; +} + +void func_800F7010_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; + + arg0->model[0] = func_800174C0(0x380006, 0x899); + arg0->trans.z = 1000.0f; + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = NULL; + temp_s1->unk_04 = 1; + func_80009090(arg0); + func_80009058(arg0, 250.0f, 250.0f, -250.0f, -250.0f, 250.0f, 250.0f); + func_80008FB8(arg0, 0.5f); + func_80008FC4(arg0, 15.0f); + func_8000941C(arg0, 2.0f, 2.0f, 2.0f); + temp_s1->unk_05 = 4; +} + +void func_800F7108_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; + + arg0->model[0] = func_800174C0(0x380006, 0x899); + arg0->trans.x = 0.0f; + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = NULL; + temp_s1->unk_04 = 1; + func_80009090(arg0); + func_80009058(arg0, 250.0f, 250.0f, -250.0f, -250.0f, 250.0f, 250.0f); + func_80008FB8(arg0, 0.5f); + func_80008FC4(arg0, 15.0f); + func_8000941C(arg0, 2.0f, 2.0f, 2.0f); + temp_s1->unk_05 = 4; +} + +void func_800F71F4_TestingRoom(omObjData* arg0) { + unkGlobalStruct_02* temp_s1; + + arg0->model[0] = func_800174C0(0x38000C, 0x899); + arg0->trans.x = -1600.0f; + arg0->trans.y = 0.0f; + arg0->trans.z = 2000.0f; + func_80025798(arg0->model[0], arg0->trans.x, arg0->trans.y, 2000.0f); + temp_s1 = func_80023684(sizeof(unkGlobalStruct_02), 0x7918); + arg0->unk_50 = temp_s1; + func_8009B770(temp_s1, 0, sizeof(unkGlobalStruct_02)); + arg0->func_ptr = NULL; + temp_s1->unk_04 = 1; + func_80009000(arg0, 4, 0.0f); + func_80008FB8(arg0, 0.5f); + func_8000941C(arg0, 1.0f, 1.0f, 1.0f); + temp_s1->unk_05 = 5; +} + +#ifdef NON_MATCHING //matches but tons of warnings +typedef struct struct2 { +/* 0x00 */ union { + u16 unsigned16[2]; + s16 signed16[2]; + s32 signed32; + } unk_00; +s16 unk_04; +s16 unk_06; +s16 unk_08; +s16 unk_0A; +s16 unk_0C; +s16 unk_0E; +s16 unk_10; +} struct2; + +typedef struct struct1 { + char unk_00[0x18]; + f32 unk_18; + f32 unk_1C; + f32 unk_20; + char unk_24[0x1C]; + struct2* unk_40; +} struct1; + +void func_800F72DC_TestingRoom(struct1* arg0, s32 arg1, s32 arg2, s32 arg3, f32 arg4, f32 arg5, f32 arg6) { + func_8000979C(arg0, arg1, arg2, arg3 & 0xFFFF, 0xA99, 0xA99); + arg0->unk_40->unk_06 = LoadFormFile(0x19, 0xA8D); + arg0->unk_40->unk_08.unsigned16[0] = LoadFormFile(0x1A, 0xA8D); + arg0->unk_40->unk_0C = LoadFormFile(0x1B, 0xA8D); + arg0->unk_40->unk_0A = LoadFormFile(0x1C, 0xA8D); + arg0->unk_40->unk_0E = LoadFormFile(0x1E, 0xA8D); + arg0->unk_40->unk_10 = LoadFormFile(0x1D, 0xA8D); + func_800187D0(arg0, 0, arg1, 1, 0); + func_800187D0(arg0, 1, arg1 | 1, 1, 0); + func_800187D0(arg0, 2, arg1 | 3, 1, 0); + func_800187D0(arg0, 5, arg1 | 4, 0, 0); + func_800187D0(arg0, 6, arg1 | 5, 1, 0x13); + func_800187D0(arg0, 7, arg1 | 6, 1, 0x22); + func_800187D0(arg0, 8, arg1 | 9, 1, 0x1B); + func_800187D0(arg0, 9, arg1 | 0xA, 1, 0x27); + func_800187D0(arg0, 0x10, arg1 | 0x17, 1, 0); + func_800187D0(arg0, 0x11, arg1 | 0x18, 0, 0); + func_800187D0(arg0, 0x12, arg1 | 0x1C, 2, 0); + func_800187D0(arg0, 0x13, arg1 | 0x1D, 2, 0); + func_800187D0(arg0, 0xA, arg1 | 0x1E, 1, 0x27); + func_800187D0(arg0, 0x16, arg1 | 0x24, 1, 0); + func_8001874C(arg0, 0x15, arg1 | 0x62, 0, 0); + func_8001874C(arg0, 0x14, arg1 | 0x5F, 2, 0); + func_8001874C(arg0, 3, arg1 | 0x60, 1, 0); + func_8001874C(arg0, 4, arg1 | 0x61, 1, 0); + func_8001874C(arg0, 0x1E, arg1 | 0x63, 2, 0); + func_8001874C(arg0, 0x1F, arg1 | 0x64, 2, 0); + func_8001874C(arg0, 0x20, arg1 | 0x67, 0, 0); + func_8001874C(arg0, 0x21, arg1 | 0x68, 2, 0); + func_8001874C(arg0, 0x22, arg1 | 0x69, 2, 0); + arg0->unk_18 = arg4; + arg0->unk_1C = 10.0f; + arg0->unk_20 = arg6; + func_80025798(arg0->model[0], arg0->unk_18, arg0->unk_1C, arg6); + func_800090C4(arg0, 0, 2); + func_800090C4(arg0, 1, 2); + func_800090C4(arg0, 2, 2); + func_800090C4(arg0, 3, 2); + func_800090C4(arg0, 4, 2); + func_800090C4(arg0, 5, 2); + func_800090C4(arg0, 6, 2); +} +#else INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F72DC_TestingRoom); +#endif INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7690_TestingRoom); @@ -26,7 +302,7 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F77BC INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7970_TestingRoom); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7A44_TestingRoom); +INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7A44_TestingRoom); //https://decomp.me/scratch/LIhcP INCLUDE_ASM("asm/nonmatchings/overlays/ovl_70_TestingRoom/2F40C0", func_800F7AFC_TestingRoom); diff --git a/src/overlays/ovl_70_TestingRoom/2F40C0.h b/src/overlays/ovl_70_TestingRoom/2F40C0.h new file mode 100644 index 0000000..5d22f12 --- /dev/null +++ b/src/overlays/ovl_70_TestingRoom/2F40C0.h @@ -0,0 +1,35 @@ +#include "common.h" + +extern s8 D_800B8955; +extern f32 D_800B895C; +extern s32 D_800B899C; +extern omObjData* D_800EDE70[]; +extern u16 D_800EE984; +extern omObjData* D_800F2AF8[]; +extern omObjData* D_800F3FB0[]; +extern f32 D_800F33F0; +extern u32 D_800F9494_TestingRoom; +extern s32 D_800F9498_TestingRoom; +extern u32 D_800F949C_TestingRoom; +extern s32 D_800F94A0_TestingRoom; +extern s16 D_800EDEB4[]; + +void func_800F72DC_TestingRoom(void*, s32, s32, s32, f32, f32, f32); +extern unkStructSize14 D_800C59AC[]; +extern u8 D_800F32E4; + +void func_800F9400_TestingRoom(void); +void func_800F7EDC_TestingRoom(void); +void func_800F6A44_TestingRoom(void); +void func_800F6BD8_TestingRoom(omObjData*); +void func_800F6D04_TestingRoom(omObjData*); +void func_800F6E38_TestingRoom(omObjData*); +void func_800F6F1C_TestingRoom(omObjData*); +void func_800F7010_TestingRoom(omObjData*); +void func_800F7970_TestingRoom(void); +void func_800F7A44_TestingRoom(omObjData*); +void func_800F7AFC_TestingRoom(void); +void func_800F7B78_TestingRoom(void); +void func_800F7BF4_TestingRoom(void); +void func_800F7C38_TestingRoom(void); +void func_800F7F50_TestingRoom(void); \ No newline at end of file diff --git a/src/overlays/ovl_71_MinigameIslandOverworld/2F6FB0.c b/src/overlays/ovl_71_MinigameIslandOverworld/2F6FB0.c index bd1c4af..d2bc883 100644 --- a/src/overlays/ovl_71_MinigameIslandOverworld/2F6FB0.c +++ b/src/overlays/ovl_71_MinigameIslandOverworld/2F6FB0.c @@ -1,3 +1,15 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_71_MinigameIslandOverworld/2F6FB0", func_800F65E0_MinigameIslandOverworld); +void func_800F6610_MinigameIslandOverworld(void); +void func_800F6668_MinigameIslandOverworld(void); + +board_overlay_entrypoint D_800F6690_MinigameIslandOverworld[] = { + {0, func_800F6610_MinigameIslandOverworld}, + {1, func_800F6668_MinigameIslandOverworld}, + {-1, 0}, +}; + +void func_800F65E0_MinigameIslandOverworld(void) { + ExecBoardScene(&D_800F6690_MinigameIslandOverworld, D_800C597A); +} + diff --git a/src/overlays/ovl_71_MinigameIslandOverworld/2F6FE0.c b/src/overlays/ovl_71_MinigameIslandOverworld/2F6FE0.c index 79c0205..e5d6b84 100644 --- a/src/overlays/ovl_71_MinigameIslandOverworld/2F6FE0.c +++ b/src/overlays/ovl_71_MinigameIslandOverworld/2F6FE0.c @@ -1,5 +1,17 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_71_MinigameIslandOverworld/2F6FE0", func_800F6610_MinigameIslandOverworld); +void func_8005C208(void); +void func_8005C2B0(void); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_71_MinigameIslandOverworld/2F6FE0", func_800F6668_MinigameIslandOverworld); +void func_800F6610_MinigameIslandOverworld(void) { + D_800ED5C2[0] = 0xA; + omInitObjMan(0xA, 0); + func_8005C208(); + omOvlGotoEx(0x71, 1, 0x92); + omOvlHisChg(0, 0x71, 1, 0x92); +} + +void func_800F6668_MinigameIslandOverworld(void) { + omInitObjMan(0xA, 0); + func_8005C2B0(); +} \ No newline at end of file diff --git a/src/overlays/ovl_74/2F96E0.c b/src/overlays/ovl_74/2F96E0.c index 2c22f0d..34c83f2 100644 --- a/src/overlays/ovl_74/2F96E0.c +++ b/src/overlays/ovl_74/2F96E0.c @@ -1,3 +1,16 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F96E0", func_800F65E0_name_74); +void func_800F6758_name_74(void); +void func_800F6774_name_74(void); +void func_800F67A0_name_74(void); + +board_overlay_entrypoint D_800F6EE0_name_74[] = { + {2, func_800F6758_name_74}, + {5, func_800F6774_name_74}, + {6, func_800F67A0_name_74}, + {-1, 0} +}; + +void func_800F65E0_name_74(void) { + ExecBoardScene(D_800F6EE0_name_74, D_800C597A); +} \ No newline at end of file diff --git a/src/overlays/ovl_74/2F9710.c b/src/overlays/ovl_74/2F9710.c index 27984f4..83b9e76 100644 --- a/src/overlays/ovl_74/2F9710.c +++ b/src/overlays/ovl_74/2F9710.c @@ -1,24 +1,131 @@ #include "common.h" +#include "spaces.h" +#include "engine/process.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6610_name_74); +typedef struct testStruct2 { +s16 unk_00; +u16 unk_02; +} testStruct2; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F666C_name_74); +typedef struct unkUserData { +char unk_00[0x0C]; +Vec3f vec1; +Vec3f vec2; +} unkUserData; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6758_name_74); +void func_8005B860(s32); +extern testStruct2 D_800F6F00_name_74[]; +void func_8005C3FC(s32, s32); +void func_8005CC3C(void); +void func_800F6610_name_74(void); +void func_800F68E8_name_74(void); +void func_800F6988_name_74(void); +void func_800F6C88_name_74(void); +extern EventTableEntry D_800F6FD0_name_74; +void func_800F666C_name_74(void); +void func_800F683C_name_74(void); +void func_800F67CC_name_74(void); +extern Object* D_800F7020_name_74; +extern Object* D_800F7024_name_74; +void func_800F6908_name_74(void); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6774_name_74); +void func_800F6610_name_74(void) { + testStruct2* temp = D_800F6F00_name_74; + for (; temp->unk_00 >= 0; temp++) { + if (func_8005CE48(temp->unk_02) != 0) { + SetSpaceType(temp->unk_00, 1); + } + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F67A0_name_74); +void func_800F666C_name_74(void) { + Object* temp_v1; + playerMain* player; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F67CC_name_74); + omInitObjMan(0x50, 0x28); + func_80060088(); + InitCameras(2); + func_80023448(1); + func_800234B8(0, 0x78, 0x78, 0x78); + func_800234B8(1, 0x40, 0x40, 0x60); + func_80023504(1, -100.0f, 100.0f, 300.0f); + func_8005C3FC(0x51, 0x50); + func_80052E84(0); + player = GetPlayerStruct(0); + func_8003E174(player->playerObj); + player->playerObj->unk_0A |= 2; + func_800F68E8_name_74(); + func_800F6988_name_74(); + func_800F6C88_name_74(); + EventTableHydrate(&D_800F6FD0_name_74); + func_800F6610_name_74(); + func_8005CC3C(); + func_80060128(0x46); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F683C_name_74); +void func_800F6758_name_74(void) { + func_800F666C_name_74(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F68E8_name_74); +void func_800F6774_name_74(void) { + SetPlayerOntoChain(0, 0, 0); + func_800F666C_name_74(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6908_name_74); +void func_800F67A0_name_74(void) { + SetPlayerOntoChain(0, 0, 7); + func_800F666C_name_74(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6988_name_74); +void func_800F67CC_name_74(void) { + unkUserData* temp_s1 = HuPrcCurrentGet()->user_data; + playerMain* temp_s2 = GetPlayerStruct(-1); + Vec3f* vec = &temp_s1->vec2; + + while (1) { + HuPrcVSleep(); + func_800A0E80(vec, &temp_s2->playerObj->coords, &temp_s1->vec1); + func_8003D408(vec); + } +} + +void func_800F683C_name_74(void) { + Object* obj; + + if (D_800F7020_name_74 == NULL) { + obj = CreateObject(0x6AU, NULL); + func_8003E174(obj); + D_800F7020_name_74 = obj; + obj->unk_0A |= 2; + func_800A0D00(&obj->xScale, 0.6f, 0.6f, 0.6f); + obj->unk_30 = 100.0f; + func_800A0D50(&obj->coords, &GetSpaceData(0)->coords); + omAddPrcObj(func_800F67CC_name_74, 0x4800, 0, 0)->user_data = obj; + } +} + +void func_800F68E8_name_74(void) { + D_800F7020_name_74 = 0; + func_800F683C_name_74(); +} + +void func_800F6908_name_74(void) { + Object* temp_v0; + + if (D_800F7024_name_74 == NULL) { + temp_v0 = CreateObject(0xEU, NULL); + func_8003E174(temp_v0); + D_800F7024_name_74 = temp_v0; + temp_v0->unk_0A |= 2; + func_800A0D00(&temp_v0->xScale, 1.4f, 1.4f, 1.4f); + func_800A0D50(&temp_v0->coords, &GetSpaceData(1)->coords); + } +} + +void func_800F6988_name_74(void) { + D_800F7024_name_74 = 0; + func_800F6908_name_74(); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F69A8_name_74); @@ -32,11 +139,19 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6D0C_name_74); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6D84_name_74); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6DA0_name_74); +void func_800F6DA0_name_74(void) { + func_8005B860(0x1B); + PlaySound(0x94); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6DC4_name_74); +void func_800F6DC4_name_74(void) { + func_8005B860(0x1C); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6DE0_name_74); +void func_800F6DE0_name_74(void) { + func_8005B860(0x1D); + PlaySound(0xBF); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_74/2F9710", func_800F6E04_name_74); diff --git a/src/overlays/ovl_75/2FA120.c b/src/overlays/ovl_75/2FA120.c index 48ba8aa..b219fe3 100644 --- a/src/overlays/ovl_75/2FA120.c +++ b/src/overlays/ovl_75/2FA120.c @@ -1,3 +1,16 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA120", func_800F65E0_name_75); +void func_800F6748_name_75(void); +void func_800F6764_name_75(void); +void func_800F6790_name_75(void); + +board_overlay_entrypoint D_800F6C20_name_75[] = { + {2, func_800F6748_name_75}, + {5, func_800F6764_name_75}, + {6, func_800F6790_name_75}, + {-1, 0} +}; + +void func_800F65E0_name_75(void) { + ExecBoardScene(D_800F6C20_name_75, D_800C597A); +} \ No newline at end of file diff --git a/src/overlays/ovl_75/2FA150.c b/src/overlays/ovl_75/2FA150.c index 73e581d..4ec3dac 100644 --- a/src/overlays/ovl_75/2FA150.c +++ b/src/overlays/ovl_75/2FA150.c @@ -1,41 +1,209 @@ #include "common.h" +#include "spaces.h" +#include "engine/process.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6610_name_75); +typedef struct testStruct2 { +s16 unk_00; +u16 unk_02; +} testStruct2; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F666C_name_75); +typedef struct unkUserData { +char unk_00[0x0C]; +Vec3f vec1; +Vec3f vec2; +} unkUserData; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6748_name_75); +void func_8005CC3C(void); +void func_8005C3FC(s32, s32); +void func_8005B860(s32); +void func_800F67BC_name_75(void); +void func_800F682C_name_75(void); +extern s32 D_800F6C5C_name_75; +extern Object* D_800F6D60_name_75; +extern testStruct2 D_800F6C40_name_75; +extern EventTableEntry D_800F6D04_name_75; +void func_800F6934_name_75(void); +void func_800F69F4_name_75(void); +s32 func_8005B984(s32); +s32 func_8005BAB0(s32); +void func_8005CD7C(s32, s32, s32, s32); +void func_8005BD10(s32); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6764_name_75); +void func_800F6610_name_75(void) { + testStruct2* temp = &D_800F6C40_name_75; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6790_name_75); + for (; temp->unk_00 >= 0; temp++) { + if (func_8005CE48(temp->unk_02) != 0) { + SetSpaceType(temp->unk_00, 1); + } + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F67BC_name_75); +void func_800F666C_name_75(void) { + Object* temp_v1; + playerMain* player; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F682C_name_75); + omInitObjMan(0x50, 0x28); + func_80060088(); + InitCameras(2); + func_80023448(1); + func_800234B8(0, 0x78, 0x78, 0x78); + func_800234B8(1, 0x40, 0x40, 0x60); + func_80023504(1, -100.0f, 100.0f, 300.0f); + func_8005C3FC(0x52, 0x51); + func_80052E84(0); + player = GetPlayerStruct(0); + func_8003E174(player->playerObj); + player->playerObj->unk_0A |= 2; + func_800F69F4_name_75(); + EventTableHydrate(&D_800F6D04_name_75); + func_800F6610_name_75(); + func_8005CC3C(); + func_80060128(0x46); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6934_name_75); +void func_800F6748_name_75(void) { + func_800F666C_name_75(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F69F4_name_75); +void func_800F6764_name_75(void) { + SetPlayerOntoChain(0, 0, 0); + func_800F666C_name_75(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6A14_name_75); +void func_800F6790_name_75(void) { + SetPlayerOntoChain(0, 0, 8); + func_800F666C_name_75(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6A38_name_75); +void func_800F67BC_name_75(void) { + unkUserData* temp_s1 = HuPrcCurrentGet()->user_data; + playerMain* temp_s2 = GetPlayerStruct(-1); + Vec3f* vec = &temp_s1->vec2; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6AB0_name_75); + while (1) { + HuPrcVSleep(); + func_800A0E80(vec, &temp_s2->playerObj->coords, &temp_s1->vec1); + func_8003D408(vec); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6AD8_name_75); +void func_800F682C_name_75(void) { + Object* temp_s0; + playerMain* temp_s1; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6AF4_name_75); + temp_s0 = HuPrcCurrentGet()->user_data; + temp_s1 = GetPlayerStruct(-1); + HuPrcSleep(0x28); + + while (1) { + HuPrcVSleep(); + if (GetAbsSpaceIndexFromChainSpaceIndex(temp_s1->curChainIndex, temp_s1->curSpaceIndex) != 6) { + continue; + } + + func_8003E8B8(temp_s0, 0, 0, 6, 0); + HuPrcSleep(0xC); + PlaySound(0x9D); + HuPrcSleep(0xC); + PlaySound(0x9D); + HuPrcSleep(0x12); + PlaySound(0x9D); + + while (!(func_8003E940(temp_s0) & 1)) { + HuPrcVSleep(); + } + + func_8003E8B8(temp_s0, -1, 0, 6, 2); + HuPrcSleep(0xA); + continue; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6B10_name_75); +void func_800F6934_name_75(void) { + Object* temp_v0; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6B2C_name_75); + if (D_800F6D60_name_75 == NULL) { + temp_v0 = CreateObject(0xC, &D_800F6C5C_name_75); + func_8003E174(temp_v0); + D_800F6D60_name_75 = temp_v0; + temp_v0->unk_0A |= 2; + func_800A0D00(&temp_v0->xScale, 1.2f, 1.2f, 1.2f); + func_800A0D50(&temp_v0->coords, &GetSpaceData(0)->coords); + omAddPrcObj(func_800F67BC_name_75, 0x4800, 0, 0)->user_data = temp_v0; + omAddPrcObj(func_800F682C_name_75, 0x4800, 0, 0)->user_data = temp_v0; + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6B48_name_75); +void func_800F69F4_name_75(void) { + D_800F6D60_name_75 = 0; + func_800F6934_name_75(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6B64_name_75); +void func_8005B860(s32); +void func_8005BD1C(s32); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6B80_name_75); +void func_800F6A14_name_75(void) { + func_8005B860(-1); + func_8005BD1C(0); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_75/2FA150", func_800F6BA4_name_75); +void func_800F6A38_name_75(void) { + s32 temp_s0 = func_8005BAB0(0x4B5); + s16 temp_s1 = func_8005B984(0); + + func_80070D90(temp_s0); + if (temp_s1 == 0) { + func_8005CD7C(2, 6, 1, 0); + func_80058910(-1, 0); + } + EndProcess(NULL); +} + +void func_800F6AB0_name_75(void) { + D_800ED100.boardRam[0] = 6; + func_8005B860(-2); +} + +void func_800F6AD8_name_75(void) { + func_8005B860(0x20); +} + +void func_800F6AF4_name_75(void) { + func_8005B860(0x21); +} + +void func_800F6B10_name_75(void) { + func_8005B860(0x22); +} + +void func_800F6B2C_name_75(void) { + func_8005B860(0x23); +} + +void func_800F6B48_name_75(void) { + func_8005B860(0x24); +} + +void func_800F6B64_name_75(void) { + func_8005B860(0x25); +} + +void func_800F6B80_name_75(void) { + func_8005B860(-1); + func_8005BD10(0); +} + +void func_800F6BA4_name_75(void) { + s16 temp_s0 = func_8005BAB0(0x4B6); + s16 temp_s1 = func_8005B984(0); + + func_80070D90(temp_s0); + + if (temp_s1 == 0) { + func_8005CD7C(4, 5, 1, 1); + func_80058910(-1, 0); + } + + EndProcess(NULL); +} diff --git a/src/overlays/ovl_76/2FA8A0.c b/src/overlays/ovl_76/2FA8A0.c index 4c6a0ec..4c21337 100644 --- a/src/overlays/ovl_76/2FA8A0.c +++ b/src/overlays/ovl_76/2FA8A0.c @@ -1,3 +1,16 @@ #include "common.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8A0", func_800F65E0_name_76); +void func_800F6744_name_76(void); +void func_800F6760_name_76(void); +void func_800F678C_name_76(void); + +board_overlay_entrypoint D_800F69C0_name_76[] = { + {2, func_800F6744_name_76}, + {5, func_800F6760_name_76}, + {6, func_800F678C_name_76}, + {-1, 0}, +}; + +void func_800F65E0_name_76(void) { + ExecBoardScene(&D_800F69C0_name_76, D_800C597A); +} \ No newline at end of file diff --git a/src/overlays/ovl_76/2FA8D0.c b/src/overlays/ovl_76/2FA8D0.c index 19636db..7a0ea88 100644 --- a/src/overlays/ovl_76/2FA8D0.c +++ b/src/overlays/ovl_76/2FA8D0.c @@ -1,33 +1,131 @@ #include "common.h" +#include "spaces.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6610_name_76); +typedef struct testStruct2 { +s16 unk_00; +u16 unk_02; +} testStruct2; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F666C_name_76); +s32 func_8005B984(s32); +s32 func_8005BAB0(s32); +void func_8005CD7C(s32, s32, s32, s32); +void func_8005B860(s32); +void func_8005C3FC(s32, s32); +void func_8005CC3C(void); +void func_800F6610_name_76(void); +void func_8005B860(s32); +void func_8005BD1C(s32); +void func_8005B860(s32); +void func_8005BD10(s32); +void func_8005B860(s32); +void func_8005B860(s32); +extern EventTableEntry D_800F6A9C_name_76; +extern testStruct2 D_800F69E0_name_76[]; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6744_name_76); +void func_800F6610_name_76(void) { + testStruct2* temp = D_800F69E0_name_76; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6760_name_76); + for (; temp->unk_00 >= 0; temp++) { + if (func_8005CE48(temp->unk_02) != 0) { + SetSpaceType(temp->unk_00, 1); + } + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F678C_name_76); +void func_800F666C_name_76(void) { + playerMain* player; -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F67B8_name_76); + omInitObjMan(0x50, 0x28); + func_80060088(); + InitCameras(2); + func_80023448(1); + func_800234B8(0U, 0x78U, 0x78U, 0x78U); + func_800234B8(1U, 0x40U, 0x40U, 0x60U); + func_80023504(1, -100.0f, 100.0f, 300.0f); + func_8005C3FC(0x53, 0x52); + func_80052E84(0); + player = GetPlayerStruct(0); + func_8003E174(player->playerObj); + player->playerObj->unk_0A |= 2; + EventTableHydrate(&D_800F6A9C_name_76); + func_800F6610_name_76(); + func_8005CC3C(); + func_80060128(0x47); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F67DC_name_76); +void func_800F6744_name_76(void) { + func_800F666C_name_76(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6854_name_76); +void func_800F6760_name_76(void) { + SetPlayerOntoChain(0, 0, 0); + func_800F666C_name_76(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F687C_name_76); +void func_800F678C_name_76(void) { + SetPlayerOntoChain(0, 0, 8); + func_800F666C_name_76(); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6898_name_76); +void func_800F67B8_name_76(void) { + func_8005B860(-1); + func_8005BD1C(0); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F68B4_name_76); +void func_800F67DC_name_76(void) { + s32 temp_s0 = func_8005BAB0(0x4B7); + s16 temp_s1 = func_8005B984(0); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F68D0_name_76); + func_80070D90(temp_s0); + if (temp_s1 == 0) { + func_8005CD7C(3, 6, 1, 1); + func_80058910(-1, 0); + } + EndProcess(NULL); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F68EC_name_76); +void func_800F6854_name_76(void) { + D_800ED100.boardRam[0] = 7; + func_8005B860(-2); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6908_name_76); +void func_800F687C_name_76(void) { + func_8005B860(0x26); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6924_name_76); +void func_800F6898_name_76(void) { + func_8005B860(0x27); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_76/2FA8D0", func_800F6948_name_76); +void func_800F68B4_name_76(void) { + func_8005B860(0x28); +} + +void func_800F68D0_name_76(void) { + func_8005B860(0x29); +} + +void func_800F68EC_name_76(void) { + func_8005B860(0x2A); +} + +void func_800F6908_name_76(void) { + func_8005B860(0x2B); +} + +void func_800F6924_name_76(void) { + func_8005B860(-1); + func_8005BD10(0); +} + +void func_800F6948_name_76(void) { + s32 temp_s0 = func_8005BAB0(0x4B8); + s16 temp_s1 = func_8005B984(0x4A9); + + func_80070D90(temp_s0); + if (temp_s1 == 0) { + func_8005CD7C(0, 8, 1, 1); + func_80058910(-1, 0); + } + EndProcess(NULL); +} diff --git a/src/overlays/ovl_79/3005B0.c b/src/overlays/ovl_79/3005B0.c index 23c277e..11008eb 100644 --- a/src/overlays/ovl_79/3005B0.c +++ b/src/overlays/ovl_79/3005B0.c @@ -1,4 +1,5 @@ #include "common.h" +#include "3005B0.h" INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F65E0_name_79); @@ -6,13 +7,30 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6800_name_79); INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6844_name_79); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6A7C_name_79); +void func_800F6A7C_name_79(void) { + if (D_800F74D0_name_79 != 0) { + func_80042B10(D_800F74D0_name_79); + func_80070D90(D_800F74CE_name_79); + } +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6AB4_name_79); +s32 func_800F6AB4_name_79(void) { + s32 i; + s32 var_s1 = 0; + + for (i = 7; i < 57; i++) { + var_s1 += func_8005CE48(i) != 0; + } + + return var_s1; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6B00_name_79); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6D18_name_79); +void func_800F6D18_name_79(s16 arg0) { + s16 thing = 1 << gPlayers[0].flags; + func_8007155C(arg0, thing); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_79/3005B0", func_800F6D4C_name_79); diff --git a/src/overlays/ovl_79/3005B0.h b/src/overlays/ovl_79/3005B0.h new file mode 100644 index 0000000..261e682 --- /dev/null +++ b/src/overlays/ovl_79/3005B0.h @@ -0,0 +1,6 @@ +#include "common.h" + +void func_80042B10(s32); +void func_80070D90(s16); +extern s16 D_800F74CE_name_79; +extern s32 D_800F74D0_name_79; diff --git a/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.c b/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.c index 627c139..485a472 100644 --- a/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.c +++ b/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.c @@ -1,8 +1,28 @@ -#include "common.h" +#include "PR/os.h" +#include "316440.h" -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_82_MiniGameStadiumStartCopy/316440", func_800F65E0_MiniGameStadiumStartCopy); +void func_800F65E0_MiniGameStadiumStartCopy(void) { + omInitObjMan(50, 10); + func_800F7880_MiniGameStadiumStartCopy(); + func_800F77E0_MiniGameStadiumStartCopy(); + func_8006CEA0(); + omAddPrcObj(&func_800F76E0_MiniGameStadiumStartCopy, 0x300, 0x2000, 0); + omAddObj(0x1000, 0, 0, -1, &func_800F7794_MiniGameStadiumStartCopy); +} -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_82_MiniGameStadiumStartCopy/316440", func_800F6650_MiniGameStadiumStartCopy); +void func_800F6650_MiniGameStadiumStartCopy(s32 arg0, s32 arg1) { + playerMain* temp_s0; + playerMain* temp_s1; + void* temp_s2; + + temp_s1 = GetPlayerStruct(arg0); + temp_s2 = GetPlayerStruct(arg1); + temp_s0 = HuMemDirectMalloc(sizeof(playerMain)); + bcopy(temp_s1, temp_s0, sizeof(playerMain)); + bcopy(temp_s2, temp_s1, sizeof(playerMain)); + bcopy(temp_s0, temp_s2, sizeof(playerMain)); + HuMemDirectFree(temp_s0); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_82_MiniGameStadiumStartCopy/316440", func_800F66D8_MiniGameStadiumStartCopy); diff --git a/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.h b/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.h new file mode 100644 index 0000000..2c02054 --- /dev/null +++ b/src/overlays/ovl_82_MiniGameStadiumStartCopy/316440.h @@ -0,0 +1,6 @@ +#include "common.h" + +void func_800F77E0_MiniGameStadiumStartCopy(void); +void func_800F7880_MiniGameStadiumStartCopy(void); +void func_800F76E0_MiniGameStadiumStartCopy(void); +void func_800F7794_MiniGameStadiumStartCopy(void); diff --git a/src/overlays/ovl_83_DebugMinigameMenu/317980.c b/src/overlays/ovl_83_DebugMinigameMenu/317980.c index 427c31f..a9f3b38 100644 --- a/src/overlays/ovl_83_DebugMinigameMenu/317980.c +++ b/src/overlays/ovl_83_DebugMinigameMenu/317980.c @@ -1,8 +1,18 @@ #include "common.h" +#include "317980.h" INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F65E0_DebugMinigameMenu); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F6B14_DebugMinigameMenu); +void func_800F6B14_DebugMinigameMenu(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + func_800178A0(1); + D_800EE98C = arg0; + D_800F33EC.y = arg1; + D_800F33EC.x = arg2; + D_800F33EC.z = arg3; + D_800F6524.x = arg4; + D_800F6524.y = arg5; + D_800F6524.z = arg6; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F6BAC_DebugMinigameMenu); @@ -238,7 +248,9 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_80 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F855C_DebugMinigameMenu); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F8A24_DebugMinigameMenu); +void func_800F8A24_DebugMinigameMenu(omObjData* arg0) { + arg0->func_ptr = &func_800F8A34_DebugMinigameMenu; +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F8A34_DebugMinigameMenu); @@ -248,7 +260,12 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_80 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F94C8_DebugMinigameMenu); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F95F8_DebugMinigameMenu); +void func_800F95F8_DebugMinigameMenu(u16 arg0, u16 arg1, s32 arg2, u16 arg3, u16 arg4) { + D_800ECB24 = arg4; + func_800622BC(arg0 + 1, arg1 + 1, arg2); + D_800ECB24 = arg3; + func_800622BC(arg0, arg1, arg2); +} INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F9678_DebugMinigameMenu); @@ -256,4 +273,23 @@ INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_80 INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F9744_DebugMinigameMenu); -INCLUDE_ASM("asm/nonmatchings/overlays/ovl_83_DebugMinigameMenu/317980", func_800F9810_DebugMinigameMenu); +void func_800F9810_DebugMinigameMenu(void) { + u8 sp10[4]; + s32 randByte; + s32 i; + + for (i = 0; i < 4; i++) { + sp10[i] = 0; + } + + for (i = 0; i < 4; i++) { + while (1) { + randByte = rand8() & 3; + if (!(sp10[randByte] == 1)) { + break; + } + } + sp10[randByte] = 1; + D_800FAC60_DebugMinigameMenu[i].flags = randByte; + } +} diff --git a/src/overlays/ovl_83_DebugMinigameMenu/317980.h b/src/overlays/ovl_83_DebugMinigameMenu/317980.h new file mode 100644 index 0000000..6956541 --- /dev/null +++ b/src/overlays/ovl_83_DebugMinigameMenu/317980.h @@ -0,0 +1,7 @@ +#include "common.h" + +void func_800F8A34_DebugMinigameMenu(void); +void func_800622BC(u16, u16, s32); +extern s32 D_800ECB24; +extern playerMain D_800FAC60_DebugMinigameMenu[4]; //struct of size 0x30? + diff --git a/symbol_addrs.txt b/symbol_addrs.txt index 54f652a..59b1a0a 100644 --- a/symbol_addrs.txt +++ b/symbol_addrs.txt @@ -484,7 +484,6 @@ D_80100318 = 0x80100318; //rom:0x222248 type:f64 force_migration:True D_80100920 = 0x80100920; //rom:0x22C660 type:f64 force_migration:True D_800F7600 = 0x800F7600; //rom:0x28E010 type:f64 force_migration:True D_800F8D54 = 0x800F8D54; //rom:0x2D6FA4 type:char* force_migration:True -D_800F6F70 = 0x800F6F70; //rom:0x2BB370 type:s32 D_800F7DB8_DebugRandomPlay = 0x800F7DB8; //rom:0x302C98 type:s32 D_800F9240 = 0x800F9240; //rom:0x30F1A0 type:char* force_migration:True D_800CC728 = 0x800CC728; //rom:0xCD328 type:char* force_migration:True @@ -495,7 +494,7 @@ D_800CB3D0 = 0x800CB3D0; //rom:0xCBFD0 type:char* force_migration:True D_800F370C = 0x800F370C; //type:u16 D_800F370E = 0x800F370E; //type:s16 D_800ED100 = 0x800ED100; //size:0x94 - +D_800ECDE8 = 0x800ECDE8; D_800FC500_FaceLift = 0x800FC500; //rom:0x131B40 segment:FaceLift @@ -509,6 +508,7 @@ D_800FEE28_ShellGame = 0x800FEE28; // segment:ShellGame force_migration:True D_800F9A00_PipeMaze = 0x800F9A00; // rom:0x1171E0 segment:PipeMaze force_migration:True D_800FD5CC_ShyGuySays = 0x800FD5CC; // segment:ShyGuySays D_800FD5CE_ShyGuySays = 0x800FD5CE; // segment:ShyGuySays +D_800F6F70_LogosSequenceCopy = 0x800F6F70; // segment:LogosSequenceCopy type:s32 __MotorDataBuf = 0x800EA1D0; piAccessBuf = 0x800EA1C0;