From 69ef244371505ad9f2fe6ee6693233a282087c3d Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Mon, 25 May 2026 02:55:16 +0200 Subject: [PATCH] Merge headers from nitro decomp (#69) * merge headers from nitro decomp * cleanup: use inlines from g2.h and gx.h when changing registers * cleanup: remove externs declarations in source files --- config/eur/arm9/itcm/symbols.txt | 12 +- config/eur/arm9/overlays/ov000/symbols.txt | 34 +- config/eur/arm9/overlays/ov024/symbols.txt | 4 +- config/eur/arm9/overlays/ov031/symbols.txt | 8 +- config/eur/arm9/overlays/ov112/symbols.txt | 2 +- config/eur/arm9/symbols.txt | 18 +- config/jp/arm9/itcm/symbols.txt | 12 +- config/jp/arm9/overlays/ov000/symbols.txt | 34 +- config/jp/arm9/overlays/ov024/symbols.txt | 4 +- config/jp/arm9/overlays/ov031/symbols.txt | 8 +- config/jp/arm9/overlays/ov112/symbols.txt | 2 +- config/jp/arm9/symbols.txt | 16 +- include/Actor/Actor.hpp | 16 +- include/Actor/ActorRupee.hpp | 2 +- include/Actor/ActorUnk_ov000_020a8bb0.hpp | 14 +- include/Actor/Course/ActorSCCN.hpp | 12 +- include/FileSelect/FileSelect.hpp | 2 +- include/Game/GameModeManager.hpp | 4 +- include/MapObject/MapObject.hpp | 22 +- include/MapObject/MapObjectDoorBase.hpp | 6 +- .../MapObject/MapObjectDoorDangerSpawn.hpp | 4 +- include/MapObject/MapObjectDoorSwitch.hpp | 4 +- include/MapObject/MapObjectManager.hpp | 2 +- include/Physics/Cylinder.hpp | 10 +- include/Player/Player.hpp | 8 +- include/Player/PlayerGet.hpp | 4 +- include/Player/PlayerSceneChange.hpp | 12 +- include/Player/TouchControl.hpp | 17 +- include/Save/SaveManager.hpp | 2 +- include/System/OverlayManager.hpp | 2 +- include/TitleScreen/TitleScreen.hpp | 9 +- include/Unknown/Common.hpp | 20 +- include/Unknown/UnkMemFuncs.h | 27 -- include/Unknown/UnkStruct_02049b18.hpp | 2 +- include/Unknown/UnkStruct_0204a110.hpp | 10 +- include/Unknown/UnkStruct_0204e64c.hpp | 2 +- include/Unknown/UnkStruct_027e0478.hpp | 2 +- include/Unknown/UnkStruct_027e0998.hpp | 6 +- include/Unknown/UnkStruct_027e09a4.hpp | 2 +- include/Unknown/UnkStruct_027e09a8.hpp | 4 +- include/Unknown/UnkStruct_027e09ac.hpp | 2 +- include/Unknown/UnkStruct_027e09bc.hpp | 4 +- include/Unknown/UnkStruct_027e0cd8.hpp | 10 +- include/Unknown/UnkStruct_027e0ce0.hpp | 6 +- include/Unknown/UnkStruct_027e0cec.hpp | 6 +- include/Unknown/UnkStruct_ov000_02067bc4.hpp | 2 +- include/Unknown/UnkStruct_ov000_0208f820.hpp | 14 +- include/Unknown/UnkStruct_ov000_020b5d34.hpp | 2 +- include/Unknown/UnkStruct_ov024_020d8694.hpp | 2 +- include/global.h | 3 - include/input.hpp | 19 + include/math.hpp | 16 +- include/types.h | 32 +- libs/c/include/stdbool.h | 11 + libs/c/include/stddef.h | 3 - libs/c/src/string.c | 1 + libs/c/src/wprintf.c | 1 + libs/nitro/include/nitro.h | 21 + libs/nitro/include/nitro/Overlay.h | 43 -- libs/nitro/include/nitro/button.h | 30 -- libs/nitro/include/nitro/card.h | 71 +++ libs/nitro/include/nitro/dc.h | 25 ++ libs/nitro/include/nitro/fs.h | 178 ++++++++ libs/nitro/include/nitro/fx.h | 46 ++ libs/nitro/include/nitro/g2.h | 343 ++++++++++++++ libs/nitro/include/nitro/g3.h | 122 +++++ libs/nitro/include/nitro/gx.h | 423 ++++++++++++++++++ libs/nitro/include/nitro/hw.h | 39 ++ libs/nitro/include/nitro/math.h | 144 +++--- libs/nitro/include/nitro/mb.h | 64 +++ libs/nitro/include/nitro/mi.h | 45 ++ libs/nitro/include/nitro/os.h | 238 ++++++++++ libs/nitro/include/nitro/os/context.h | 6 +- libs/nitro/include/nitro/os/thread.h | 7 +- libs/nitro/include/nitro/pad.h | 44 ++ libs/nitro/include/nitro/pm.h | 23 + .../regs.h => libs/nitro/include/nitro/reg.h | 81 ++-- libs/nitro/include/nitro/rtc.h | 32 ++ libs/nitro/include/nitro/snd.h | 70 +++ libs/nitro/include/nitro/std.h | 17 + libs/nitro/include/nitro/svc.h | 14 + libs/nitro/include/nitro/touch.h | 40 -- libs/nitro/include/nitro/tp.h | 70 +++ libs/nitro/include/nitro/types.h | 48 ++ libs/nitro/include/nitro/wm.h | 209 +++++++++ libs/nitro/include/twl.h | 3 + libs/nns/include/nns/g3d/g3d.h | 16 +- libs/nns/include/nns/g3d/sbc.h | 8 +- libs/nns/src/g3d/sbc.c | 122 ++--- src/000_Second/Actor/Actor.cpp | 14 +- src/000_Second/Actor/ActorUnkEFIK.cpp | 2 +- src/000_Second/Actor/ActorUnkSWOB.cpp | 20 +- .../Actor/ActorUnk_ov000_020a8bb0.cpp | 12 +- src/000_Second/Item/TreasureManager.cpp | 4 +- src/000_Second/MapObject/MapObject.cpp | 42 +- .../MapObject/MapObjectMiniBlocks.cpp | 4 +- src/000_Second/MapObject/MapObjectProfile.cpp | 2 +- .../MapObject/MapObjectSwitchStep.cpp | 2 +- src/001_SceneInit/Actor/ActorManager_001.cpp | 2 +- .../Game/AdventureModeManager_001.cpp | 2 - src/018_StartUp/GameModeStartUp.cpp | 37 +- src/018_StartUp/StartUpInitializers.cpp | 36 +- src/019_MainSelect/019_SaveManager.cpp | 41 +- src/019_MainSelect/FileSelectMain.cpp | 14 +- src/019_MainSelect/FileSelectManager.cpp | 2 +- src/019_MainSelect/FileSelectManager_160.cpp | 9 +- src/019_MainSelect/FileSelectSubScreen.cpp | 17 +- .../Game/AdventureModeManager_024.cpp | 49 +- .../AdventureModeManager_15C_20_00_024.cpp | 3 +- .../Game/AdventureModeManager_160_024.cpp | 6 +- .../Game/AdventureModeManager_170_024.cpp | 7 +- .../Game/AdventureModeManager_18C_024.cpp | 9 +- .../Game/AdventureModeManager_190_024.cpp | 7 +- .../AdventureModeManager_1B8_Base_024.cpp | 32 +- .../Game/UnkStruct_027e0998_024.cpp | 6 +- .../Game/UnkStruct_ov000_020d8660_024.cpp | 5 +- src/024_MainGame/MiscAdvManager.cpp | 4 +- src/024_MainGame/UnkTitleCardSystem1_024.cpp | 10 +- src/025_Title/TitleScreen.cpp | 10 +- src/025_Title/TitleScreenManager.cpp | 7 +- src/031_Land/Actor/ActorRupee.cpp | 46 +- src/031_Land/Actor/ActorUnkNORE.cpp | 2 +- src/031_Land/MapObject/MapObjectChestBase.cpp | 26 +- src/031_Land/MapObject/MapObjectDoorBase.cpp | 40 +- src/031_Land/MapObject/MapObjectDoorClick.cpp | 36 +- .../MapObject/MapObjectDoorDangerSpawn.cpp | 58 +-- src/031_Land/MapObject/MapObjectDoorKey.cpp | 28 +- .../MapObject/MapObjectDoorSwitch.cpp | 20 +- src/110_PlayerGet/PlayerGet.cpp | 16 +- .../PlayerSceneChange.cpp | 104 ++--- .../PlayerSceneChange2.cpp | 16 +- src/Main/Game/Game.cpp | 13 +- src/Main/Main.cpp | 14 +- src/Main/Player/TouchControl.cpp | 34 +- src/Main/System/OverlayManager.cpp | 3 +- src/Main/System/SysFault.cpp | 27 +- src/Main/func_020196fc.cpp | 84 ++-- tools/g2_unpack.py | 39 ++ 138 files changed, 3084 insertions(+), 1096 deletions(-) delete mode 100644 include/Unknown/UnkMemFuncs.h create mode 100644 include/input.hpp create mode 100644 libs/c/include/stdbool.h create mode 100644 libs/nitro/include/nitro.h delete mode 100644 libs/nitro/include/nitro/Overlay.h delete mode 100644 libs/nitro/include/nitro/button.h create mode 100644 libs/nitro/include/nitro/card.h create mode 100644 libs/nitro/include/nitro/dc.h create mode 100644 libs/nitro/include/nitro/fs.h create mode 100644 libs/nitro/include/nitro/fx.h create mode 100644 libs/nitro/include/nitro/g2.h create mode 100644 libs/nitro/include/nitro/g3.h create mode 100644 libs/nitro/include/nitro/gx.h create mode 100644 libs/nitro/include/nitro/hw.h create mode 100644 libs/nitro/include/nitro/mb.h create mode 100644 libs/nitro/include/nitro/mi.h create mode 100644 libs/nitro/include/nitro/os.h create mode 100644 libs/nitro/include/nitro/pad.h create mode 100644 libs/nitro/include/nitro/pm.h rename include/regs.h => libs/nitro/include/nitro/reg.h (69%) create mode 100644 libs/nitro/include/nitro/rtc.h create mode 100644 libs/nitro/include/nitro/snd.h create mode 100644 libs/nitro/include/nitro/std.h create mode 100644 libs/nitro/include/nitro/svc.h delete mode 100644 libs/nitro/include/nitro/touch.h create mode 100644 libs/nitro/include/nitro/tp.h create mode 100644 libs/nitro/include/nitro/types.h create mode 100644 libs/nitro/include/nitro/wm.h create mode 100644 libs/nitro/include/twl.h create mode 100755 tools/g2_unpack.py diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 04ae295c..8c310e7c 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -22,7 +22,7 @@ func_01ff92a8 kind:function(arm,size=0x64) addr:0x01ff92a8 func_01ff930c kind:function(arm,size=0xc) addr:0x01ff930c func_01ff9318 kind:function(arm,size=0x4c) addr:0x01ff9318 func_01ff9364 kind:function(arm,size=0x28) addr:0x01ff9364 -Vec3p_TryNormalize kind:function(arm,size=0x34) addr:0x01ff938c +VecFx32_TryNormalize kind:function(arm,size=0x34) addr:0x01ff938c func_01ff93c0 kind:function(arm,size=0x5c) addr:0x01ff93c0 func_01ff941c kind:function(arm,size=0x60) addr:0x01ff941c func_01ff947c kind:function(arm,size=0x50) addr:0x01ff947c @@ -97,12 +97,12 @@ func_01ffb618 kind:function(arm,size=0x2c) addr:0x01ffb618 func_01ffb644 kind:function(arm,size=0x28) addr:0x01ffb644 func_01ffb66c kind:function(arm,size=0x3c) addr:0x01ffb66c func_01ffb6a8 kind:function(arm,size=0x3c) addr:0x01ffb6a8 -Vec3p_Add kind:function(arm,size=0x30) addr:0x01ffb6e4 +VecFx32_Add kind:function(arm,size=0x30) addr:0x01ffb6e4 func_01ffb714 kind:function(arm,size=0x30) addr:0x01ffb714 -Vec3p_Dot kind:function(arm,size=0x3c) addr:0x01ffb744 +VecFx32_Dot kind:function(arm,size=0x3c) addr:0x01ffb744 func_01ffb780 kind:function(arm,size=0x80) addr:0x01ffb780 -Vec3p_Length kind:function(arm,size=0x60) addr:0x01ffb800 -Vec3p_Normalize kind:function(arm,size=0x114) addr:0x01ffb860 +VecFx32_Length kind:function(arm,size=0x60) addr:0x01ffb800 +VecFx32_Normalize kind:function(arm,size=0x114) addr:0x01ffb860 func_01ffb974 kind:function(arm,size=0x58) addr:0x01ffb974 func_01ffb9cc kind:function(arm,size=0x7c) addr:0x01ffb9cc func_01ffba48 kind:function(arm,size=0x198) addr:0x01ffba48 @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 27bfcfaf..f8bdba65 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -12,7 +12,7 @@ func_ov000_02052a14 kind:function(arm,size=0xec) addr:0x02052a14 func_ov000_02052b00 kind:function(arm,size=0xcc) addr:0x02052b00 func_ov000_02052bcc kind:function(arm,size=0x60) addr:0x02052bcc func_ov000_02052c2c kind:function(arm,size=0x1c) addr:0x02052c2c -_ZN23UnkSystem7_UnkStruct_0019func_ov000_02052c48EP5Vec3pS1_ kind:function(arm,size=0xf0) addr:0x02052c48 +_ZN23UnkSystem7_UnkStruct_0019func_ov000_02052c48EP7VecFx32S1_ kind:function(arm,size=0xf0) addr:0x02052c48 func_ov000_02052d38 kind:function(arm,size=0x38) addr:0x02052d38 func_ov000_02052d70 kind:function(arm,size=0xb4) addr:0x02052d70 func_ov000_02052e24 kind:function(arm,size=0x78) addr:0x02052e24 @@ -486,7 +486,7 @@ _ZN23UnkStruct_027e0998_Base19func_ov000_02061768Ev kind:function(arm,size=0x4) func_ov000_0206176c kind:function(thumb,size=0xbc) addr:0x0206176c func_ov000_02061828 kind:function(thumb,size=0x28) addr:0x02061828 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02061850 -_ZN23UnkStruct_027e0998_Base8vfunc_00EP5Vec3pP5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02061868 +_ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02061868 func_ov000_02061a48 kind:function(arm,size=0x28) addr:0x02061a48 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02061a70 func_ov000_02061a7c kind:function(arm,size=0x10) addr:0x02061a7c @@ -1061,11 +1061,11 @@ func_ov000_02071934 kind:function(arm,size=0x60) addr:0x02071934 func_ov000_02071994 kind:function(arm,size=0x1c) addr:0x02071994 func_ov000_020719b0 kind:function(arm,size=0xc4) addr:0x020719b0 func_ov000_02071a74 kind:function(arm,size=0xbc) addr:0x02071a74 -_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP5Vec3pi kind:function(arm,size=0xa4) addr:0x02071b30 +_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP7VecFx32i kind:function(arm,size=0xa4) addr:0x02071b30 func_ov000_02071bd4 kind:function(arm,size=0x90) addr:0x02071bd4 func_ov000_02071c64 kind:function(arm,size=0x2c) addr:0x02071c64 func_ov000_02071c90 kind:function(arm,size=0xa4) addr:0x02071c90 -_ZN18UnkStruct_027e09a819func_ov000_02071d34EPviP5Vec3pi kind:function(arm,size=0xb0) addr:0x02071d34 +_ZN18UnkStruct_027e09a819func_ov000_02071d34EPviP7VecFx32i kind:function(arm,size=0xb0) addr:0x02071d34 func_ov000_02071de4 kind:function(arm,size=0xa0) addr:0x02071de4 func_ov000_02071e84 kind:function(arm,size=0x14) addr:0x02071e84 func_ov000_02071e98 kind:function(arm,size=0x14) addr:0x02071e98 @@ -1253,7 +1253,7 @@ func_ov000_020781d4 kind:function(arm,size=0x14) addr:0x020781d4 func_ov000_020781e8 kind:function(arm,size=0x48) addr:0x020781e8 _ZN21UnkStruct_027e09bc_0c19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x02078230 func_ov000_02078314 kind:function(arm,size=0x38) addr:0x02078314 -_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP5Vec3pii kind:function(arm,size=0x40) addr:0x0207834c +_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x0207834c func_ov000_0207838c kind:function(arm,size=0x70) addr:0x0207838c func_ov000_020783fc kind:function(arm,size=0x88) addr:0x020783fc func_ov000_02078484 kind:function(arm,size=0x40) addr:0x02078484 @@ -1270,7 +1270,7 @@ func_ov000_020786dc kind:function(arm,size=0x2c) addr:0x020786dc func_ov000_02078708 kind:function(arm,size=0x24) addr:0x02078708 func_ov000_0207872c kind:function(arm,size=0x1c) addr:0x0207872c func_ov000_02078748 kind:function(arm,size=0x1c) addr:0x02078748 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP5Vec3pPvi kind:function(arm,size=0x54) addr:0x02078764 +_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02078764 func_ov000_020787b8 kind:function(arm,size=0x7c) addr:0x020787b8 func_ov000_02078834 kind:function(arm,size=0x9c) addr:0x02078834 func_ov000_020788d0 kind:function(arm,size=0x68) addr:0x020788d0 @@ -1560,7 +1560,7 @@ func_ov000_02080190 kind:function(arm,size=0x20) addr:0x02080190 _ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x020801b0 func_ov000_02080210 kind:function(arm,size=0x78) addr:0x02080210 func_ov000_02080288 kind:function(arm,size=0x64) addr:0x02080288 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP5Vec3p kind:function(arm,size=0x78) addr:0x020802ec +_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020802ec func_ov000_02080364 kind:function(arm,size=0x88) addr:0x02080364 _ZN21UnkStruct_027e0cd8_0c19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x020803ec _ZN21UnkStruct_027e0cd8_0c19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x0208053c @@ -2096,7 +2096,7 @@ func_ov000_02090750 kind:function(arm,size=0x3c) addr:0x02090750 func_ov000_0209078c kind:function(arm,size=0x30) addr:0x0209078c _ZN24UnkStruct_ov000_0208f8208vfunc_14Ev kind:function(arm,size=0x4) addr:0x020907bc _ZN24UnkStruct_ov000_0208f8208vfunc_18Eiii kind:function(arm,size=0x4) addr:0x020907c0 -_ZN24UnkStruct_ov000_0208f8208vfunc_1cEP5Vec3p kind:function(arm,size=0x54) addr:0x020907c4 +_ZN24UnkStruct_ov000_0208f8208vfunc_1cEP7VecFx32 kind:function(arm,size=0x54) addr:0x020907c4 func_ov000_02090818 kind:function(arm,size=0x38) addr:0x02090818 func_ov000_02090850 kind:function(arm,size=0x90) addr:0x02090850 func_ov000_020908e0 kind:function(arm,size=0x104) addr:0x020908e0 @@ -2326,13 +2326,13 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x4) addr:0x020984c4 _ZN5Actor8vfunc_34Ev kind:function(arm,size=0x8) addr:0x020984c8 _ZN5Actor19func_ov000_020984d0Ev kind:function(arm,size=0x20) addr:0x020984d0 _ZN5Actor19func_ov000_020984f0Ev kind:function(arm,size=0x28) addr:0x020984f0 -_ZN5Actor8vfunc_00EP5Vec3p kind:function(arm,size=0x24) addr:0x02098518 +_ZN5Actor8vfunc_00EP7VecFx32 kind:function(arm,size=0x24) addr:0x02098518 _ZN5Actor19func_ov000_0209853cEi kind:function(arm,size=0x18) addr:0x0209853c _ZN5Actor8vfunc_04Ev kind:function(arm,size=0x18) addr:0x02098554 _ZN5Actor8vfunc_08Ev kind:function(arm,size=0xc) addr:0x0209856c _ZN5Actor8vfunc_0cEv kind:function(arm,size=0xc) addr:0x02098578 _ZN5Actor8vfunc_38Ei kind:function(arm,size=0x6c) addr:0x02098584 -_ZN5Actor8vfunc_3cEiP5Vec3p kind:function(arm,size=0x3c) addr:0x020985f0 +_ZN5Actor8vfunc_3cEiP7VecFx32 kind:function(arm,size=0x3c) addr:0x020985f0 _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x0209862c func_ov000_02098654 kind:function(arm,size=0x28) addr:0x02098654 func_ov000_0209867c kind:function(arm,size=0x38) addr:0x0209867c @@ -2561,7 +2561,7 @@ _ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209d1cc _ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209d1d4 _ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209d1d8 _ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209d1e4 -_ZN9MapObject8vfunc_2CEP5Vec3p kind:function(arm,size=0x40) addr:0x0209d1ec +_ZN9MapObject8vfunc_2CEP7VecFx32 kind:function(arm,size=0x40) addr:0x0209d1ec _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209d22c _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209d274 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209d29c @@ -2570,11 +2570,11 @@ _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209d3b4 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209d434 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209d518 -_ZN9MapObject19func_ov000_0209d54cEPvPS_iP5Vec3pii kind:function(arm,size=0x7c) addr:0x0209d54c +_ZN9MapObject19func_ov000_0209d54cEPvPS_iP7VecFx32ii kind:function(arm,size=0x7c) addr:0x0209d54c _ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209d5c8 _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209d614 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209d668 -_ZN9MapObject19func_ov000_0209d6acEP5Vec3p kind:function(arm,size=0x54) addr:0x0209d6ac +_ZN9MapObject19func_ov000_0209d6acEP7VecFx32 kind:function(arm,size=0x54) addr:0x0209d6ac func_ov000_0209d700 kind:function(arm,size=0x50) addr:0x0209d700 _ZN19func_ov000_0209d750D0Ev kind:function(arm,size=0x1c) addr:0x0209d750 _ZN19func_ov000_0209d76cD2Ev kind:function(arm,size=0x14) addr:0x0209d76c @@ -2669,10 +2669,10 @@ func_ov000_0209fe54 kind:function(arm,size=0x18) addr:0x0209fe54 func_ov000_0209fe6c kind:function(arm,size=0x18) addr:0x0209fe6c func_ov000_0209fe84 kind:function(arm,size=0x1c) addr:0x0209fe84 func_ov000_0209fea0 kind:function(arm,size=0xc) addr:0x0209fea0 -_ZN18UnkStruct_027e0cec19func_ov000_0209feacEiP5Vec3piii kind:function(arm,size=0x78) addr:0x0209feac +_ZN18UnkStruct_027e0cec19func_ov000_0209feacEiP7VecFx32iii kind:function(arm,size=0x78) addr:0x0209feac func_ov000_0209ff24 kind:function(arm,size=0x28) addr:0x0209ff24 func_ov000_0209ff4c kind:function(arm,size=0x40) addr:0x0209ff4c -_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP5Vec3pi kind:function(arm,size=0x74) addr:0x0209ff8c +_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP7VecFx32i kind:function(arm,size=0x74) addr:0x0209ff8c func_ov000_020a0000 kind:function(arm,size=0xa0) addr:0x020a0000 func_ov000_020a00a0 kind:function(arm,size=0x34) addr:0x020a00a0 func_ov000_020a00d4 kind:function(arm,size=0x3c) addr:0x020a00d4 @@ -3035,7 +3035,7 @@ _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8db0Ev kind:function(arm,size=0x20) _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020a8dd0 _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020a8df0 _ZN23ActorUnk_ov000_020a8bb08vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020a8e84 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP5Vec3p kind:function(arm,size=0x24) addr:0x020a8e9c +_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020a8e9c _ZN23ActorUnk_ov000_020a8bb08vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020a8ec0 _ZN23ActorUnk_ov000_020a8bb08vfunc_88Ev kind:function(arm,size=0x8) addr:0x020a8f54 _ZN23ActorUnk_ov000_020a8bb08vfunc_8cEv kind:function(arm,size=0x8) addr:0x020a8f5c @@ -3049,7 +3049,7 @@ _ZN23ActorUnk_ov000_020a8bb08vfunc_68Ev kind:function(arm,size=0x50) addr:0x020a _ZN23ActorUnk_ov000_020a8bb08vfunc_7cEv kind:function(arm,size=0x8) addr:0x020a91a0 _ZN23ActorUnk_ov000_020a8bb08vfunc_80Ev kind:function(arm,size=0x8) addr:0x020a91a8 _ZN23ActorUnk_ov000_020a8bb08vfunc_84Ev kind:function(arm,size=0x8) addr:0x020a91b0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP5Vec3pi kind:function(arm,size=0x48) addr:0x020a91b8 +_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020a91b8 _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020a9200 _ZN23ActorUnk_ov000_020a8bb08vfunc_70Ev kind:function(arm,size=0x24) addr:0x020a921c _ZN23ActorUnk_ov000_020a8bb08vfunc_74Ev kind:function(arm,size=0x4) addr:0x020a9240 diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index a2f29bdc..cd575b30 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -109,9 +109,9 @@ _ZN18UnkStruct_027e09987DestroyEv kind:function(arm,size=0x2c) addr:0x020c6f08 _ZN18UnkStruct_027e0998D1Ev kind:function(arm,size=0x14) addr:0x020c6f34 _ZN18UnkStruct_027e0998C1Ev kind:function(arm,size=0x20) addr:0x020c6f48 _ZN18UnkStruct_027e09986CreateEv kind:function(arm,size=0x24) addr:0x020c6f68 -_ZN18UnkStruct_027e09988vfunc_00EP5Vec3pP5Vec2sPt kind:function(arm,size=0x1e0) addr:0x020c6f8c +_ZN18UnkStruct_027e09988vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x020c6f8c _ZN18UnkStruct_027e099819func_ov024_020c716cEv kind:function(arm,size=0xa8) addr:0x020c716c -_ZN18UnkStruct_027e099819func_ov024_020c7214EP5Vec3pP5Vec2sPt kind:function(arm,size=0x68) addr:0x020c7214 +_ZN18UnkStruct_027e099819func_ov024_020c7214EP7VecFx32P5Vec2sPt kind:function(arm,size=0x68) addr:0x020c7214 _ZN18UnkStruct_027e099819func_ov024_020c727cEP5Vec2sPt kind:function(arm,size=0x84) addr:0x020c727c _ZN18UnkStruct_027e099819func_ov024_020c7300Ei kind:function(arm,size=0x54) addr:0x020c7300 _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr:0x020c7354 diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 74a4f999..dfb3a6a1 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -559,7 +559,7 @@ _ZN19ActorProfileUnkROCKD1Ev kind:function(arm,size=0x14) addr:0x020e8ca4 _ZN17ActorProfileRupee10GetProfileEv kind:function(arm,size=0xc) addr:0x020e8cb8 _ZN17ActorProfileRupee6CreateEv kind:function(arm,size=0x24) addr:0x020e8cc4 _ZN17ActorProfileRupeeC1Ev kind:function(arm,size=0x44) addr:0x020e8ce8 -_ZN10ActorRupee19func_ov031_020e8d2cEP5Vec3phii kind:function(arm,size=0x7c) addr:0x020e8d2c +_ZN10ActorRupee19func_ov031_020e8d2cEP7VecFx32hii kind:function(arm,size=0x7c) addr:0x020e8d2c _ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020e8da8 _ZN10ActorRupee8vfunc_18Ei kind:function(arm,size=0x1d0) addr:0x020e8e1c _ZN10ActorRupee19func_ov031_020e8fecEv kind:function(arm,size=0x7c) addr:0x020e8fec @@ -1298,7 +1298,7 @@ _ZN17MapObjectDoorBase19func_ov031_020fcd40Ev kind:function(arm,size=0x28) addr: _ZN17MapObjectDoorBase8vfunc_70Ev kind:function(arm,size=0x80) addr:0x020fcd68 _ZN17MapObjectDoorBase8vfunc_44Ev kind:function(arm,size=0x4) addr:0x020fcde8 _ZN17MapObjectDoorBase8vfunc_4CEv kind:function(arm,size=0x4) addr:0x020fcdec -_ZN17MapObjectDoorBase8vfunc_84EiP5Vec3pPs kind:function(arm,size=0x11c) addr:0x020fcdf0 +_ZN17MapObjectDoorBase8vfunc_84EiP7VecFx32Ps kind:function(arm,size=0x11c) addr:0x020fcdf0 _ZN17MapObjectDoorBase19func_ov031_020fcf0cEi kind:function(arm,size=0x24) addr:0x020fcf0c _ZN17MapObjectDoorBase19func_ov031_020fcf30Ev kind:function(arm,size=0x44) addr:0x020fcf30 _ZN17MapObjectDoorBase9vfunc2_04Ev kind:function(arm,size=0x4) addr:0x020fcf74 @@ -1338,8 +1338,8 @@ _ZN24MapObjectDoorDangerSpawn8vfunc_48Ev kind:function(arm,size=0x2c) addr:0x020 _ZN24MapObjectDoorDangerSpawn8vfunc_4CEv kind:function(arm,size=0x44) addr:0x020fe2e8 _ZN24MapObjectDoorDangerSpawn8vfunc_88Ev kind:function(arm,size=0x24) addr:0x020fe32c _ZN24MapObjectDoorDangerSpawn8vfunc_8CEv kind:function(arm,size=0x38) addr:0x020fe350 -_ZN24MapObjectDoorDangerSpawn8vfunc_84EiP5Vec3pPs kind:function(arm,size=0x274) addr:0x020fe388 -_ZN24MapObjectDoorDangerSpawn19func_ov031_020fe5fcEP5Vec3pPS_ kind:function(arm,size=0x9c) addr:0x020fe5fc +_ZN24MapObjectDoorDangerSpawn8vfunc_84EiP7VecFx32Ps kind:function(arm,size=0x274) addr:0x020fe388 +_ZN24MapObjectDoorDangerSpawn19func_ov031_020fe5fcEP7VecFx32PS_ kind:function(arm,size=0x9c) addr:0x020fe5fc _ZN24MapObjectDoorDangerSpawnD1Ev kind:function(arm,size=0x30) addr:0x020fe698 _ZN24MapObjectDoorDangerSpawnD0Ev kind:function(arm,size=0x38) addr:0x020fe6c8 _ZN31MapObjectProfileDoorDangerSpawnD1Ev kind:function(arm,size=0x14) addr:0x020fe700 diff --git a/config/eur/arm9/overlays/ov112/symbols.txt b/config/eur/arm9/overlays/ov112/symbols.txt index e49cd2a9..c98d728d 100644 --- a/config/eur/arm9/overlays/ov112/symbols.txt +++ b/config/eur/arm9/overlays/ov112/symbols.txt @@ -4,7 +4,7 @@ _ZN17PlayerSceneChangeD0Ev kind:function(arm,size=0x60) addr:0x02184b5c _ZN17PlayerSceneChange19func_ov112_02184bbcEs kind:function(arm,size=0x58) addr:0x02184bbc _ZN17PlayerSceneChange8vfunc_0cEP35UnkStruct_PlayerGet_vfunc_0c_param1 kind:function(arm,size=0xb68) addr:0x02184c14 _ZN17PlayerSceneChange8vfunc_10Eii kind:function(arm,size=0x80c) addr:0x0218577c -_ZN17PlayerSceneChange8vfunc_1cEP5Vec3p kind:function(arm,size=0x84) addr:0x02185f88 +_ZN17PlayerSceneChange8vfunc_1cEP7VecFx32 kind:function(arm,size=0x84) addr:0x02185f88 _ZN18PlayerSceneChange2C1Ev kind:function(arm,size=0x40) addr:0x0218600c _ZN18PlayerSceneChange28vfunc_0cEP35UnkStruct_PlayerGet_vfunc_0c_param1 kind:function(arm,size=0x25c) addr:0x0218604c _ZN18PlayerSceneChange28vfunc_10Eii kind:function(arm,size=0x208) addr:0x021862a8 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index f53d6155..9fef0953 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -685,11 +685,11 @@ _ZN18UnkStruct_02049b8013func_02013ee8Eii kind:function(arm,size=0x98) addr:0x02 func_02013f80 kind:function(arm,size=0x6c) addr:0x02013f80 func_02013fec kind:function(arm,size=0xc) addr:0x02013fec func_02013ff8 kind:function(arm,size=0x12c) addr:0x02013ff8 -_ZN12TouchControl11UpdateStateEP10TouchStatePK15TouchStateFlags kind:function(arm,size=0xb8) addr:0x02014124 +_ZN12TouchControl11UpdateStateEP10TouchStatePK6TPData kind:function(arm,size=0xb8) addr:0x02014124 _ZN12TouchControlC1Ev kind:function(thumb,size=0x3c) addr:0x020141dc _ZN12TouchControl13IncreaseSpeedEt kind:function(arm,size=0x18) addr:0x02014218 _ZN12TouchControl11UpdateFlagsEt kind:function(arm,size=0x12c) addr:0x02014230 -_ZN12TouchControl20UpdateWithStateFlagsEP15TouchStateFlagst kind:function(arm,size=0x44) addr:0x0201435c +_ZN12TouchControl20UpdateWithStateFlagsEP6TPDatat kind:function(arm,size=0x44) addr:0x0201435c _ZN12TouchControl6UpdateEPK10TouchStatet kind:function(arm,size=0x50) addr:0x020143a0 _ZN12TouchControl13func_020143f0Ev kind:function(arm,size=0x24) addr:0x020143f0 _ZN12TouchControl13func_02014414Etb kind:function(arm,size=0x64) addr:0x02014414 @@ -1775,15 +1775,15 @@ FS_func_0034 kind:function(arm,size=0x8) addr:0x0202d4d8 FS_AddRomVolume kind:function(arm,size=0x144) addr:0x0202d4e0 func_0202d624 kind:function(arm,size=0x20) addr:0x0202d624 func_0202d644 kind:function(arm,size=0x30) addr:0x0202d644 -func_0202d674 kind:function(arm,size=0x1c) addr:0x0202d674 -func_0202d690 kind:function(arm,size=0x3c) addr:0x0202d690 -func_0202d6cc kind:function(arm,size=0x28) addr:0x0202d6cc -func_0202d6f4 kind:function(arm,size=0xfc) addr:0x0202d6f4 +FS_GetOverlaySize kind:function(arm,size=0x1c) addr:0x0202d674 +FS_ClearOverlayCacheAndBss kind:function(arm,size=0x3c) addr:0x0202d690 +FS_Overlay_0202d6cc kind:function(arm,size=0x28) addr:0x0202d6cc +FS_Overlay_0202d6f4 kind:function(arm,size=0xfc) addr:0x0202d6f4 FS_LoadOverlayInfo kind:function(arm,size=0x100) addr:0x0202d7f0 FS_LoadOverlayFile kind:function(arm,size=0x94) addr:0x0202d8f0 -func_0202d984 kind:function(arm,size=0x90) addr:0x0202d984 +FS_Overlay_0202d984 kind:function(arm,size=0x90) addr:0x0202d984 FS_StartOverlay kind:function(arm,size=0xf4) addr:0x0202da14 -Overlay_CleanupResources kind:function(arm,size=0xf0) addr:0x0202db08 +FS_CleanupOverlayResources kind:function(arm,size=0xf0) addr:0x0202db08 FS_StopOverlay kind:function(arm,size=0x10) addr:0x0202dbf8 FS_LoadOverlay kind:function(arm,size=0x58) addr:0x0202dc08 FS_UnloadOverlay kind:function(arm,size=0x50) addr:0x0202dc60 @@ -1801,7 +1801,7 @@ TP_GetUserInfo kind:function(arm,size=0x94) addr:0x0202e864 TP_SetCalibrateParam kind:function(arm,size=0xf0) addr:0x0202e8f8 TP_func_0002 kind:function(arm,size=0x9c) addr:0x0202e9e8 TP_func_0003 kind:function(arm,size=0x4c) addr:0x0202ea84 -TP_GetTouchStateFlags kind:function(arm,size=0x1c) addr:0x0202ead0 +TP_GetData kind:function(arm,size=0x1c) addr:0x0202ead0 TP_func_0004 kind:function(arm,size=0x1ec) addr:0x0202eaec TP_GetCalibratedPoint kind:function(arm,size=0x11c) addr:0x0202ecd8 TP_func_0005 kind:function(arm,size=0x18) addr:0x0202edf4 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 04ae295c..8c310e7c 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -22,7 +22,7 @@ func_01ff92a8 kind:function(arm,size=0x64) addr:0x01ff92a8 func_01ff930c kind:function(arm,size=0xc) addr:0x01ff930c func_01ff9318 kind:function(arm,size=0x4c) addr:0x01ff9318 func_01ff9364 kind:function(arm,size=0x28) addr:0x01ff9364 -Vec3p_TryNormalize kind:function(arm,size=0x34) addr:0x01ff938c +VecFx32_TryNormalize kind:function(arm,size=0x34) addr:0x01ff938c func_01ff93c0 kind:function(arm,size=0x5c) addr:0x01ff93c0 func_01ff941c kind:function(arm,size=0x60) addr:0x01ff941c func_01ff947c kind:function(arm,size=0x50) addr:0x01ff947c @@ -97,12 +97,12 @@ func_01ffb618 kind:function(arm,size=0x2c) addr:0x01ffb618 func_01ffb644 kind:function(arm,size=0x28) addr:0x01ffb644 func_01ffb66c kind:function(arm,size=0x3c) addr:0x01ffb66c func_01ffb6a8 kind:function(arm,size=0x3c) addr:0x01ffb6a8 -Vec3p_Add kind:function(arm,size=0x30) addr:0x01ffb6e4 +VecFx32_Add kind:function(arm,size=0x30) addr:0x01ffb6e4 func_01ffb714 kind:function(arm,size=0x30) addr:0x01ffb714 -Vec3p_Dot kind:function(arm,size=0x3c) addr:0x01ffb744 +VecFx32_Dot kind:function(arm,size=0x3c) addr:0x01ffb744 func_01ffb780 kind:function(arm,size=0x80) addr:0x01ffb780 -Vec3p_Length kind:function(arm,size=0x60) addr:0x01ffb800 -Vec3p_Normalize kind:function(arm,size=0x114) addr:0x01ffb860 +VecFx32_Length kind:function(arm,size=0x60) addr:0x01ffb800 +VecFx32_Normalize kind:function(arm,size=0x114) addr:0x01ffb860 func_01ffb974 kind:function(arm,size=0x58) addr:0x01ffb974 func_01ffb9cc kind:function(arm,size=0x7c) addr:0x01ffb9cc func_01ffba48 kind:function(arm,size=0x198) addr:0x01ffba48 @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 6b0fb171..dce4d6e6 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -12,7 +12,7 @@ func_ov000_02053f94 kind:function(arm,size=0xec) addr:0x02053f94 func_ov000_02054080 kind:function(arm,size=0xcc) addr:0x02054080 func_ov000_0205414c kind:function(arm,size=0x60) addr:0x0205414c func_ov000_020541ac kind:function(arm,size=0x1c) addr:0x020541ac -_ZN23UnkSystem7_UnkStruct_0019func_ov000_02052c48EP5Vec3pS1_ kind:function(arm,size=0xf0) addr:0x020541c8 +_ZN23UnkSystem7_UnkStruct_0019func_ov000_02052c48EP7VecFx32S1_ kind:function(arm,size=0xf0) addr:0x020541c8 func_ov000_020542b8 kind:function(arm,size=0x38) addr:0x020542b8 func_ov000_020542f0 kind:function(arm,size=0xb4) addr:0x020542f0 func_ov000_020543a4 kind:function(arm,size=0x78) addr:0x020543a4 @@ -486,7 +486,7 @@ _ZN23UnkStruct_027e0998_Base19func_ov000_02061768Ev kind:function(arm,size=0x4) func_ov000_02062cf4 kind:function(thumb,size=0xbc) addr:0x02062cf4 func_ov000_02062db0 kind:function(thumb,size=0x28) addr:0x02062db0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02062dd8 -_ZN23UnkStruct_027e0998_Base8vfunc_00EP5Vec3pP5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02062df0 +_ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02062df0 func_ov000_02062fd0 kind:function(arm,size=0x28) addr:0x02062fd0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02062ff8 func_ov000_02063004 kind:function(arm,size=0x10) addr:0x02063004 @@ -1062,11 +1062,11 @@ func_ov000_02072fec kind:function(arm,size=0x60) addr:0x02072fec func_ov000_0207304c kind:function(arm,size=0x1c) addr:0x0207304c func_ov000_02073068 kind:function(arm,size=0xc4) addr:0x02073068 func_ov000_0207312c kind:function(arm,size=0xbc) addr:0x0207312c -_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP5Vec3pi kind:function(arm,size=0xa4) addr:0x020731e8 +_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP7VecFx32i kind:function(arm,size=0xa4) addr:0x020731e8 func_ov000_0207328c kind:function(arm,size=0x90) addr:0x0207328c func_ov000_0207331c kind:function(arm,size=0x2c) addr:0x0207331c func_ov000_02073348 kind:function(arm,size=0xa4) addr:0x02073348 -_ZN18UnkStruct_027e09a819func_ov000_02071d34EPviP5Vec3pi kind:function(arm,size=0xb0) addr:0x020733ec +_ZN18UnkStruct_027e09a819func_ov000_02071d34EPviP7VecFx32i kind:function(arm,size=0xb0) addr:0x020733ec func_ov000_0207349c kind:function(arm,size=0xa0) addr:0x0207349c func_ov000_0207353c kind:function(arm,size=0x14) addr:0x0207353c func_ov000_02073550 kind:function(arm,size=0x14) addr:0x02073550 @@ -1251,7 +1251,7 @@ func_ov000_0207988c kind:function(arm,size=0x14) addr:0x0207988c func_ov000_020798a0 kind:function(arm,size=0x48) addr:0x020798a0 _ZN21UnkStruct_027e09bc_0c19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x020798e8 func_ov000_020799cc kind:function(arm,size=0x38) addr:0x020799cc -_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP5Vec3pii kind:function(arm,size=0x40) addr:0x02079a04 +_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x02079a04 func_ov000_02079a44 kind:function(arm,size=0x70) addr:0x02079a44 func_ov000_02079ab4 kind:function(arm,size=0x88) addr:0x02079ab4 func_ov000_02079b3c kind:function(arm,size=0x40) addr:0x02079b3c @@ -1268,7 +1268,7 @@ func_ov000_02079d94 kind:function(arm,size=0x2c) addr:0x02079d94 func_ov000_02079dc0 kind:function(arm,size=0x24) addr:0x02079dc0 func_ov000_02079de4 kind:function(arm,size=0x1c) addr:0x02079de4 func_ov000_02079e00 kind:function(arm,size=0x1c) addr:0x02079e00 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP5Vec3pPvi kind:function(arm,size=0x54) addr:0x02079e1c +_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02079e1c func_ov000_02079e70 kind:function(arm,size=0x7c) addr:0x02079e70 func_ov000_02079eec kind:function(arm,size=0x9c) addr:0x02079eec func_ov000_02079f88 kind:function(arm,size=0x68) addr:0x02079f88 @@ -1558,7 +1558,7 @@ func_ov000_02081848 kind:function(arm,size=0x20) addr:0x02081848 _ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x02081868 func_ov000_020818c8 kind:function(arm,size=0x78) addr:0x020818c8 func_ov000_02081940 kind:function(arm,size=0x64) addr:0x02081940 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP5Vec3p kind:function(arm,size=0x78) addr:0x020819a4 +_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020819a4 func_ov000_02081a1c kind:function(arm,size=0x88) addr:0x02081a1c _ZN21UnkStruct_027e0cd8_0c19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x02081aa4 _ZN21UnkStruct_027e0cd8_0c19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x02081bf4 @@ -2094,7 +2094,7 @@ func_ov000_02091e2c kind:function(arm,size=0x3c) addr:0x02091e2c func_ov000_02091e68 kind:function(arm,size=0x30) addr:0x02091e68 _ZN24UnkStruct_ov000_0208f8208vfunc_14Ev kind:function(arm,size=0x4) addr:0x02091e98 _ZN24UnkStruct_ov000_0208f8208vfunc_18Eiii kind:function(arm,size=0x4) addr:0x02091e9c -_ZN24UnkStruct_ov000_0208f8208vfunc_1cEP5Vec3p kind:function(arm,size=0x54) addr:0x02091ea0 +_ZN24UnkStruct_ov000_0208f8208vfunc_1cEP7VecFx32 kind:function(arm,size=0x54) addr:0x02091ea0 func_ov000_02091ef4 kind:function(arm,size=0x38) addr:0x02091ef4 func_ov000_02091f2c kind:function(arm,size=0x90) addr:0x02091f2c func_ov000_02091fbc kind:function(arm,size=0x104) addr:0x02091fbc @@ -2323,13 +2323,13 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x4) addr:0x02099c6c _ZN5Actor8vfunc_34Ev kind:function(arm,size=0x8) addr:0x02099c70 _ZN5Actor19func_ov000_020984d0Ev kind:function(arm,size=0x20) addr:0x02099c78 _ZN5Actor19func_ov000_020984f0Ev kind:function(arm,size=0x28) addr:0x02099c98 -_ZN5Actor8vfunc_00EP5Vec3p kind:function(arm,size=0x24) addr:0x02099cc0 +_ZN5Actor8vfunc_00EP7VecFx32 kind:function(arm,size=0x24) addr:0x02099cc0 _ZN5Actor19func_ov000_0209853cEi kind:function(arm,size=0x18) addr:0x02099ce4 _ZN5Actor8vfunc_04Ev kind:function(arm,size=0x18) addr:0x02099cfc _ZN5Actor8vfunc_08Ev kind:function(arm,size=0xc) addr:0x02099d14 _ZN5Actor8vfunc_0cEv kind:function(arm,size=0xc) addr:0x02099d20 _ZN5Actor8vfunc_38Ei kind:function(arm,size=0x6c) addr:0x02099d2c -_ZN5Actor8vfunc_3cEiP5Vec3p kind:function(arm,size=0x3c) addr:0x02099d98 +_ZN5Actor8vfunc_3cEiP7VecFx32 kind:function(arm,size=0x3c) addr:0x02099d98 _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x02099dd4 func_ov000_02099dfc kind:function(arm,size=0x28) addr:0x02099dfc func_ov000_02099e24 kind:function(arm,size=0x38) addr:0x02099e24 @@ -2557,7 +2557,7 @@ _ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209e990 _ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209e998 _ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209e99c _ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209e9a8 -_ZN9MapObject8vfunc_2CEP5Vec3p kind:function(arm,size=0x40) addr:0x0209e9b0 +_ZN9MapObject8vfunc_2CEP7VecFx32 kind:function(arm,size=0x40) addr:0x0209e9b0 _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209e9f0 _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209ea38 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209ea60 @@ -2566,11 +2566,11 @@ _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209eb78 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209ebf8 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209ecdc -_ZN9MapObject19func_ov000_0209d54cEPvPS_iP5Vec3pii kind:function(arm,size=0x7c) addr:0x0209ed10 +_ZN9MapObject19func_ov000_0209d54cEPvPS_iP7VecFx32ii kind:function(arm,size=0x7c) addr:0x0209ed10 _ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209ed8c _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209edd8 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209ee2c -_ZN9MapObject19func_ov000_0209d6acEP5Vec3p kind:function(arm,size=0x54) addr:0x0209ee70 +_ZN9MapObject19func_ov000_0209d6acEP7VecFx32 kind:function(arm,size=0x54) addr:0x0209ee70 func_ov000_0209eec4 kind:function(arm,size=0x50) addr:0x0209eec4 _ZN19func_ov000_0209ef14D0Ev kind:function(arm,size=0x1c) addr:0x0209ef14 _ZN19func_ov000_0209ef30D2Ev kind:function(arm,size=0x14) addr:0x0209ef30 @@ -2667,10 +2667,10 @@ func_ov000_020a162c kind:function(arm,size=0x18) addr:0x020a162c func_ov000_020a1644 kind:function(arm,size=0x18) addr:0x020a1644 func_ov000_020a165c kind:function(arm,size=0x1c) addr:0x020a165c func_ov000_020a1678 kind:function(arm,size=0xc) addr:0x020a1678 -_ZN18UnkStruct_027e0cec19func_ov000_0209feacEiP5Vec3piii kind:function(arm,size=0x78) addr:0x020a1684 +_ZN18UnkStruct_027e0cec19func_ov000_0209feacEiP7VecFx32iii kind:function(arm,size=0x78) addr:0x020a1684 func_ov000_020a16fc kind:function(arm,size=0x28) addr:0x020a16fc func_ov000_020a1724 kind:function(arm,size=0x40) addr:0x020a1724 -_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP5Vec3pi kind:function(arm,size=0x74) addr:0x020a1764 +_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP7VecFx32i kind:function(arm,size=0x74) addr:0x020a1764 func_ov000_020a17d8 kind:function(arm,size=0xa0) addr:0x020a17d8 func_ov000_020a1878 kind:function(arm,size=0x34) addr:0x020a1878 func_ov000_020a18ac kind:function(arm,size=0x3c) addr:0x020a18ac @@ -3034,7 +3034,7 @@ _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8db0Ev kind:function(arm,size=0x20) _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020aa5d0 _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020aa5f0 _ZN23ActorUnk_ov000_020a8bb08vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020aa684 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP5Vec3p kind:function(arm,size=0x24) addr:0x020aa69c +_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020aa69c _ZN23ActorUnk_ov000_020a8bb08vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020aa6c0 _ZN23ActorUnk_ov000_020a8bb08vfunc_88Ev kind:function(arm,size=0x8) addr:0x020aa754 _ZN23ActorUnk_ov000_020a8bb08vfunc_8cEv kind:function(arm,size=0x8) addr:0x020aa75c @@ -3048,7 +3048,7 @@ _ZN23ActorUnk_ov000_020a8bb08vfunc_68Ev kind:function(arm,size=0x50) addr:0x020a _ZN23ActorUnk_ov000_020a8bb08vfunc_7cEv kind:function(arm,size=0x8) addr:0x020aa9a0 _ZN23ActorUnk_ov000_020a8bb08vfunc_80Ev kind:function(arm,size=0x8) addr:0x020aa9a8 _ZN23ActorUnk_ov000_020a8bb08vfunc_84Ev kind:function(arm,size=0x8) addr:0x020aa9b0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP5Vec3pi kind:function(arm,size=0x48) addr:0x020aa9b8 +_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020aa9b8 _ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020aaa00 _ZN23ActorUnk_ov000_020a8bb08vfunc_70Ev kind:function(arm,size=0x24) addr:0x020aaa1c _ZN23ActorUnk_ov000_020a8bb08vfunc_74Ev kind:function(arm,size=0x4) addr:0x020aaa40 diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index 9b36715d..b954ccad 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -109,9 +109,9 @@ _ZN18UnkStruct_027e09987DestroyEv kind:function(arm,size=0x2c) addr:0x020c8758 _ZN18UnkStruct_027e0998D1Ev kind:function(arm,size=0x14) addr:0x020c8784 _ZN18UnkStruct_027e0998C1Ev kind:function(arm,size=0x20) addr:0x020c8798 _ZN18UnkStruct_027e09986CreateEv kind:function(arm,size=0x24) addr:0x020c87b8 -_ZN18UnkStruct_027e09988vfunc_00EP5Vec3pP5Vec2sPt kind:function(arm,size=0x1e0) addr:0x020c87dc +_ZN18UnkStruct_027e09988vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x020c87dc _ZN18UnkStruct_027e099819func_ov024_020c716cEv kind:function(arm,size=0xa8) addr:0x020c89bc -_ZN18UnkStruct_027e099819func_ov024_020c7214EP5Vec3pP5Vec2sPt kind:function(arm,size=0x68) addr:0x020c8a64 +_ZN18UnkStruct_027e099819func_ov024_020c7214EP7VecFx32P5Vec2sPt kind:function(arm,size=0x68) addr:0x020c8a64 _ZN18UnkStruct_027e099819func_ov024_020c727cEP5Vec2sPt kind:function(arm,size=0x84) addr:0x020c8acc _ZN18UnkStruct_027e099819func_ov024_020c7300Ei kind:function(arm,size=0x54) addr:0x020c8b50 _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr:0x020c8ba4 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 46ee5efd..e4186dc1 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -559,7 +559,7 @@ _ZN19ActorProfileUnkROCKD1Ev kind:function(arm,size=0x14) addr:0x020ea690 _ZN17ActorProfileRupee10GetProfileEv kind:function(arm,size=0xc) addr:0x020ea6a4 _ZN17ActorProfileRupee6CreateEv kind:function(arm,size=0x24) addr:0x020ea6b0 _ZN17ActorProfileRupeeC1Ev kind:function(arm,size=0x44) addr:0x020ea6d4 -_ZN10ActorRupee19func_ov031_020e8d2cEP5Vec3phii kind:function(arm,size=0x7c) addr:0x020ea718 +_ZN10ActorRupee19func_ov031_020e8d2cEP7VecFx32hii kind:function(arm,size=0x7c) addr:0x020ea718 _ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020ea794 _ZN10ActorRupee8vfunc_18Ei kind:function(arm,size=0x1d0) addr:0x020ea808 _ZN10ActorRupee19func_ov031_020e8fecEv kind:function(arm,size=0x7c) addr:0x020ea9d8 @@ -1297,7 +1297,7 @@ _ZN17MapObjectDoorBase19func_ov031_020fcd40Ev kind:function(arm,size=0x28) addr: _ZN17MapObjectDoorBase8vfunc_70Ev kind:function(arm,size=0x80) addr:0x020fe7b0 _ZN17MapObjectDoorBase8vfunc_44Ev kind:function(arm,size=0x4) addr:0x020fe830 _ZN17MapObjectDoorBase8vfunc_4CEv kind:function(arm,size=0x4) addr:0x020fe834 -_ZN17MapObjectDoorBase8vfunc_84EiP5Vec3pPs kind:function(arm,size=0x11c) addr:0x020fe838 +_ZN17MapObjectDoorBase8vfunc_84EiP7VecFx32Ps kind:function(arm,size=0x11c) addr:0x020fe838 _ZN17MapObjectDoorBase19func_ov031_020fcf0cEi kind:function(arm,size=0x24) addr:0x020fe954 _ZN17MapObjectDoorBase19func_ov031_020fcf30Ev kind:function(arm,size=0x44) addr:0x020fe978 _ZN17MapObjectDoorBase9vfunc2_04Ev kind:function(arm,size=0x4) addr:0x020fe9bc @@ -1337,8 +1337,8 @@ _ZN24MapObjectDoorDangerSpawn8vfunc_48Ev kind:function(arm,size=0x2c) addr:0x020 _ZN24MapObjectDoorDangerSpawn8vfunc_4CEv kind:function(arm,size=0x44) addr:0x020ffd90 _ZN24MapObjectDoorDangerSpawn8vfunc_88Ev kind:function(arm,size=0x24) addr:0x020ffdd4 _ZN24MapObjectDoorDangerSpawn8vfunc_8CEv kind:function(arm,size=0x38) addr:0x020ffdf8 -_ZN24MapObjectDoorDangerSpawn8vfunc_84EiP5Vec3pPs kind:function(arm,size=0x274) addr:0x020ffe30 -_ZN24MapObjectDoorDangerSpawn19func_ov031_020fe5fcEP5Vec3pPS_ kind:function(arm,size=0x9c) addr:0x021000a4 +_ZN24MapObjectDoorDangerSpawn8vfunc_84EiP7VecFx32Ps kind:function(arm,size=0x274) addr:0x020ffe30 +_ZN24MapObjectDoorDangerSpawn19func_ov031_020fe5fcEP7VecFx32PS_ kind:function(arm,size=0x9c) addr:0x021000a4 _ZN24MapObjectDoorDangerSpawnD1Ev kind:function(arm,size=0x30) addr:0x02100140 _ZN24MapObjectDoorDangerSpawnD0Ev kind:function(arm,size=0x38) addr:0x02100170 _ZN31MapObjectProfileDoorDangerSpawnD1Ev kind:function(arm,size=0x14) addr:0x021001a8 diff --git a/config/jp/arm9/overlays/ov112/symbols.txt b/config/jp/arm9/overlays/ov112/symbols.txt index 29194b29..939232b6 100644 --- a/config/jp/arm9/overlays/ov112/symbols.txt +++ b/config/jp/arm9/overlays/ov112/symbols.txt @@ -4,7 +4,7 @@ _ZN17PlayerSceneChangeD0Ev kind:function(arm,size=0x60) addr:0x021866dc _ZN17PlayerSceneChange19func_ov112_02184bbcEs kind:function(arm,size=0x58) addr:0x0218673c _ZN17PlayerSceneChange8vfunc_0cEP35UnkStruct_PlayerGet_vfunc_0c_param1 kind:function(arm,size=0xb68) addr:0x02186794 _ZN17PlayerSceneChange8vfunc_10Eii kind:function(arm,size=0x80c) addr:0x021872fc -_ZN17PlayerSceneChange8vfunc_1cEP5Vec3p kind:function(arm,size=0x84) addr:0x02187b08 +_ZN17PlayerSceneChange8vfunc_1cEP7VecFx32 kind:function(arm,size=0x84) addr:0x02187b08 _ZN18PlayerSceneChange2C1Ev kind:function(arm,size=0x40) addr:0x02187b8c _ZN18PlayerSceneChange28vfunc_0cEP35UnkStruct_PlayerGet_vfunc_0c_param1 kind:function(arm,size=0x25c) addr:0x02187bcc _ZN18PlayerSceneChange28vfunc_10Eii kind:function(arm,size=0x208) addr:0x02187e28 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index eee7c0d4..ae87845e 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -685,11 +685,11 @@ _ZN18UnkStruct_02049b8013func_02013ee8Eii kind:function(arm,size=0x98) addr:0x02 func_02013f84 kind:function(arm,size=0x6c) addr:0x02013f84 func_02013ff0 kind:function(arm,size=0xc) addr:0x02013ff0 func_02013ffc kind:function(arm,size=0x12c) addr:0x02013ffc -_ZN12TouchControl11UpdateStateEP10TouchStatePK15TouchStateFlags kind:function(arm,size=0xb8) addr:0x02014128 +_ZN12TouchControl11UpdateStateEP10TouchStatePK6TPData kind:function(arm,size=0xb8) addr:0x02014128 _ZN12TouchControlC1Ev kind:function(thumb,size=0x3c) addr:0x020141e0 _ZN12TouchControl13IncreaseSpeedEt kind:function(arm,size=0x18) addr:0x0201421c _ZN12TouchControl11UpdateFlagsEt kind:function(arm,size=0x12c) addr:0x02014234 -_ZN12TouchControl20UpdateWithStateFlagsEP15TouchStateFlagst kind:function(arm,size=0x44) addr:0x02014360 +_ZN12TouchControl20UpdateWithStateFlagsEP6TPDatat kind:function(arm,size=0x44) addr:0x02014360 _ZN12TouchControl6UpdateEPK10TouchStatet kind:function(arm,size=0x50) addr:0x020143a4 _ZN12TouchControl13func_020143f0Ev kind:function(arm,size=0x24) addr:0x020143f4 _ZN12TouchControl13func_02014414Etb kind:function(arm,size=0x64) addr:0x02014418 @@ -1796,15 +1796,15 @@ FS_func_0034 kind:function(arm,size=0x8) addr:0x0202ea08 FS_AddRomVolume kind:function(arm,size=0x144) addr:0x0202ea10 func_0202d624 kind:function(arm,size=0x20) addr:0x0202eb54 func_0202eb74 kind:function(arm,size=0x30) addr:0x0202eb74 -func_0202eba4 kind:function(arm,size=0x1c) addr:0x0202eba4 -func_0202ebc0 kind:function(arm,size=0x3c) addr:0x0202ebc0 -func_0202ebfc kind:function(arm,size=0x28) addr:0x0202ebfc -func_0202ec24 kind:function(arm,size=0xfc) addr:0x0202ec24 +FS_GetOverlaySize kind:function(arm,size=0x1c) addr:0x0202eba4 +FS_ClearOverlayCacheAndBss kind:function(arm,size=0x3c) addr:0x0202ebc0 +FS_Overlay_0202d6cc kind:function(arm,size=0x28) addr:0x0202ebfc +FS_Overlay_0202d6f4 kind:function(arm,size=0xfc) addr:0x0202ec24 FS_LoadOverlayInfo kind:function(arm,size=0x100) addr:0x0202ed20 FS_LoadOverlayFile kind:function(arm,size=0x94) addr:0x0202ee20 -func_0202eeb4 kind:function(arm,size=0x90) addr:0x0202eeb4 +FS_Overlay_0202d984 kind:function(arm,size=0x90) addr:0x0202eeb4 FS_StartOverlay kind:function(arm,size=0xf4) addr:0x0202ef44 -Overlay_CleanupResources kind:function(arm,size=0xf0) addr:0x0202f038 +FS_CleanupOverlayResources kind:function(arm,size=0xf0) addr:0x0202f038 FS_StopOverlay kind:function(arm,size=0x10) addr:0x0202f128 FS_LoadOverlay kind:function(arm,size=0x58) addr:0x0202f138 FS_UnloadOverlay kind:function(arm,size=0x50) addr:0x0202f190 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 093e6b29..711c6752 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -20,7 +20,7 @@ class ActorParams { public: - /* 00 */ Vec3p mInitialPos; + /* 00 */ VecFx32 mInitialPos; /* 0C */ s16 mInitialAngle; /* 0E */ s8 mUnk_0E; /* 0F */ bool mUnk_0F; @@ -102,9 +102,9 @@ class Actor_c4; class Actor : public SysObject { public: /* 00 (vtable) */ - /* 04 */ Vec3p mPos; - /* 10 */ Vec3p mPrevPos; - /* 1C */ Vec3p mVel; + /* 04 */ VecFx32 mPos; + /* 10 */ VecFx32 mPrevPos; + /* 1C */ VecFx32 mVel; /* 28 */ s16 mAngle; /* 2A */ unk16 mUnk_2A; /* 2C */ unk32 mUnk_2C; // gravity? @@ -129,7 +129,7 @@ public: /* 90 */ ActorProfile *mpProfile; /* 94 */ - /* 00 */ virtual void vfunc_00(Vec3p *param1); + /* 00 */ virtual void vfunc_00(VecFx32 *param1); /* 04 */ virtual bool vfunc_04(); /* 08 */ virtual unk16 vfunc_08(); /* 0C */ virtual unk8 vfunc_0c(); @@ -144,7 +144,7 @@ public: /* 30 */ virtual void vfunc_30(); /* 34 */ virtual unk32 vfunc_34(); /* 38 */ virtual unk32 vfunc_38(unk32 param1); - /* 3C */ virtual bool vfunc_3c(unk32 param2, Vec3p *param3); + /* 3C */ virtual bool vfunc_3c(unk32 param2, VecFx32 *param3); /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); @@ -178,7 +178,7 @@ public: unk32 func_ov000_02098910(unk32 param1, unk32 param2); s32 func_ov000_02098518(unk32 *param1); - Vec3p *func_ov000_0209853c(unk32 param1); + VecFx32 *func_ov000_0209853c(unk32 param1); s32 func_ov000_02098554(); s16 func_ov000_0209856c(); s8 func_ov000_02098578(); @@ -194,7 +194,7 @@ public: bool func_ov000_02098a60(unk32 param1); void func_ov000_02098a88(unk32 param1, unk32 param2); - void func_ov017_020bf5c4(Vec3p *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + void func_ov017_020bf5c4(VecFx32 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); }; struct Actor_c4_stack { diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index 7153d483..87a74101 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -78,7 +78,7 @@ public: void func_ov017_020bf9c8(Actor *param1); - void func_ov031_020e8d2c(Vec3p *param1, u8 param2, unk32 param3, unk32 param4); + void func_ov031_020e8d2c(VecFx32 *param1, u8 param2, unk32 param3, unk32 param4); void func_ov031_020e8fec(); void func_ov031_020e9068(); void func_ov031_020e9108(); diff --git a/include/Actor/ActorUnk_ov000_020a8bb0.hpp b/include/Actor/ActorUnk_ov000_020a8bb0.hpp index 14800d89..3288d69d 100644 --- a/include/Actor/ActorUnk_ov000_020a8bb0.hpp +++ b/include/Actor/ActorUnk_ov000_020a8bb0.hpp @@ -24,8 +24,8 @@ public: /* 2C */ unk32 mUnk_2C; /* 30 */ unk16 mUnk_30; /* 32 */ unk16 mUnk_32; - /* 34 */ Vec3p mUnk_34; - /* 40 */ Vec3p mUnk_40; + /* 34 */ VecFx32 mUnk_34; + /* 40 */ VecFx32 mUnk_40; /* 4C */ ActorUnk_vfunc_b0(); @@ -51,7 +51,7 @@ public: /* 0A */ unk32 mUnk_08; /* 0C */ - void func_01ffc6d4(u16 param1, Vec3p *pos); + void func_01ffc6d4(u16 param1, VecFx32 *pos); ActorUnk_ov000_020a8bb0_a4() {} ~ActorUnk_ov000_020a8bb0_a4() {} @@ -71,7 +71,7 @@ public: /* 0B4 */ unk32 mUnk_0B4; /* 0B8 */ unk32 mUnk_0B8; /* 0BC */ ActorRef mUnk_0BC; - /* 0C0 */ Vec3p mUnk_0C0; + /* 0C0 */ VecFx32 mUnk_0C0; /* 0CC */ unk16 mUnk_0CC; /* 0CC */ unk16 mUnk_0CE; /* 0D0 */ unk32 mUnk_0D0; @@ -134,14 +134,14 @@ public: /* B8 */ virtual void vfunc_b8(); /* BC */ - void func_ov000_020a8ae0(q20 param1); + void func_ov000_020a8ae0(fx32 param1); ActorUnk_ov000_020a8bb0(UnkSystem4 *param1, unk32 param2); bool func_ov000_020a8db0(); bool func_ov000_020a8dd0(); void func_ov000_020a8df0(ActorRef param1, unk32 param2); - void func_ov000_020a8e9c(Vec3p *param1); + void func_ov000_020a8e9c(VecFx32 *param1); void func_ov000_020a8ff4(); - void func_ov000_020a91b8(Vec3p *param1, unk32 param2); + void func_ov000_020a91b8(VecFx32 *param1, unk32 param2); void func_ov000_020a9200(); void func_ov000_020a9248(); void func_ov000_020a94b0(); diff --git a/include/Actor/Course/ActorSCCN.hpp b/include/Actor/Course/ActorSCCN.hpp index 47d417d3..a2c259cb 100644 --- a/include/Actor/Course/ActorSCCN.hpp +++ b/include/Actor/Course/ActorSCCN.hpp @@ -49,12 +49,12 @@ public: /* 9A */ unk8 mUnk_9A; /* 9B */ SCCNType mUnk_9B : 8; /* 9C */ unk32 mUnk_9C; - /* A0 */ q20 mUnk_A0; - /* A4 */ q20 mUnk_A4; - /* A8 */ q20 mUnk_A8; - /* AC */ q20 mUnk_AC; - /* B0 */ q20 mUnk_B0; - /* B4 */ q20 mUnk_B4; + /* A0 */ fx32 mUnk_A0; + /* A4 */ fx32 mUnk_A4; + /* A8 */ fx32 mUnk_A8; + /* AC */ fx32 mUnk_AC; + /* B0 */ fx32 mUnk_B0; + /* B4 */ fx32 mUnk_B4; /* B8 */ unk32 mUnk_B8; /* BC */ unk32 mUnk_BC; /* C0 */ unk32 mUnk_C0; diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 6408a674..9a0d9ccb 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -8,8 +8,8 @@ #include "global.h" #include "iterator.hpp" #include "math.hpp" -#include "regs.h" #include "types.h" +#include extern const unk16 data_ov019_020d1bb0[]; extern "C" void func_ov001_020bd6a8(); diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index 7e8f9a72..4185a781 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -5,11 +5,11 @@ #include "Player/TouchControl.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_02049b18.hpp" +#include "input.hpp" #include "math.hpp" #include "types.h" -#include -#include +#include class GameModeManagerBase; class GameModeManagerBase_104; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 2473c1d3..fbf34634 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -67,16 +67,16 @@ public: /* 0C */ virtual void vfunc_0C() = 0; /* 10 */ virtual void vfunc_10(Cylinder *param1) = 0; /* 14 */ virtual void vfunc_14() = 0; - /* 18 */ virtual void vfunc_18(Vec3p *param1) = 0; - /* 1C */ virtual void vfunc_1C(Vec3p *param1) = 0; + /* 18 */ virtual void vfunc_18(VecFx32 *param1) = 0; + /* 1C */ virtual void vfunc_1C(VecFx32 *param1) = 0; /* 20 */ }; class MapObject_10 : public MapObject_10_Base { public: /* 00 (vtable) */ - /* 0C */ Vec3p mUnk_0C; - /* 18 */ Vec3p mUnk_18; + /* 0C */ VecFx32 mUnk_0C; + /* 18 */ VecFx32 mUnk_18; /* 24 */ MapObject_10() {} @@ -88,8 +88,8 @@ public: /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(Cylinder *param1); /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual void vfunc_18(Vec3p *param1); - /* 1C */ virtual void vfunc_1C(Vec3p *param1); + /* 18 */ virtual void vfunc_18(VecFx32 *param1); + /* 1C */ virtual void vfunc_1C(VecFx32 *param1); /* 20 */ }; @@ -116,7 +116,7 @@ public: class MapObject : public SysObject { public: /* 00 (vtable) */ - /* 04 */ Vec3p mPos; + /* 04 */ VecFx32 mPos; /* 10 */ MapObject_10 *mUnk_10; /* 14 */ s16 mUnk_14; /* 16 */ s16 mUnk_16; @@ -144,7 +144,7 @@ public: /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual unk32 vfunc_28(); - /* 2C */ virtual bool vfunc_2C(Vec3p *param1); + /* 2C */ virtual bool vfunc_2C(VecFx32 *param1); /* 30 */ virtual ~MapObject(); /* 38 */ @@ -175,15 +175,15 @@ public: bool func_ov000_0209d29c(unk32 param1); void func_ov000_0209d2c4(unk32 param1, unk32 param2); void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3); - void func_ov000_0209d3b4(unk32 param1, q20 size); + void func_ov000_0209d3b4(unk32 param1, fx32 size); void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3); void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4); void func_ov000_0209d5c8(ActorRef ref); void func_ov000_0209d614(unk32 param1); bool func_ov000_0209d668(); - void func_ov000_0209d6ac(Vec3p *param1); + void func_ov000_0209d6ac(VecFx32 *param1); static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx); static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2); - static void func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, Vec3p *param3, unk32 param4, unk32 param5); + static void func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, VecFx32 *param3, unk32 param4, unk32 param5); }; diff --git a/include/MapObject/MapObjectDoorBase.hpp b/include/MapObject/MapObjectDoorBase.hpp index d675e028..2557f575 100644 --- a/include/MapObject/MapObjectDoorBase.hpp +++ b/include/MapObject/MapObjectDoorBase.hpp @@ -9,7 +9,7 @@ public: /* 04 */ unk32 mUnk_44; /* 08 */ unk16 mUnk_48; /* 0A */ s16 mUnk_4A; - /* 0C */ Vec3p mUnk_4C; + /* 0C */ VecFx32 mUnk_4C; /* 18 */ MapObject_UnkStruct1(); // func_ov000_02073194 & func_ov000_020731c4 @@ -27,7 +27,7 @@ public: /* 18 */ bool mUnk_58; /* 19 */ unk8 mUnk_59; /* 1A */ s16 mUnk_5A; - /* 1C */ Vec3p mUnk_5C; + /* 1C */ VecFx32 mUnk_5C; /* 28 */ MapObject_UnkStruct1_Derived1(); // func_ov000_02073234 @@ -112,7 +112,7 @@ public: /* 78 */ virtual void vfunc_78(); /* 7C */ virtual void vfunc_7C(); /* 80 */ virtual void vfunc_80(); - /* 84 */ virtual void vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3); + /* 84 */ virtual void vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3); /* 88 */ virtual bool vfunc_88(); /* 8C */ virtual unk32 vfunc_8C(); /* 90 */ diff --git a/include/MapObject/MapObjectDoorDangerSpawn.hpp b/include/MapObject/MapObjectDoorDangerSpawn.hpp index 18135aec..ede99ebd 100644 --- a/include/MapObject/MapObjectDoorDangerSpawn.hpp +++ b/include/MapObject/MapObjectDoorDangerSpawn.hpp @@ -63,7 +63,7 @@ public: /* 6C */ virtual bool vfunc_6C() override; /* 74 */ virtual void vfunc_74() override; /* 7C */ virtual void vfunc_7C() override; - /* 84 */ virtual void vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) override; + /* 84 */ virtual void vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3) override; /* 88 */ virtual bool vfunc_88() override; /* 8C */ virtual unk32 vfunc_8C() override; @@ -72,5 +72,5 @@ public: bool func_ov031_020fdec8(void); - static void func_ov031_020fe5fc(Vec3p *param1, MapObjectDoorDangerSpawn *thisx); + static void func_ov031_020fe5fc(VecFx32 *param1, MapObjectDoorDangerSpawn *thisx); }; diff --git a/include/MapObject/MapObjectDoorSwitch.hpp b/include/MapObject/MapObjectDoorSwitch.hpp index d96d356d..baae4c13 100644 --- a/include/MapObject/MapObjectDoorSwitch.hpp +++ b/include/MapObject/MapObjectDoorSwitch.hpp @@ -14,14 +14,14 @@ public: /* 0F4 */ MapObject_10 mUnk_0F4; #if IS_JP /* 118 */ MapObject_10 mUnk_118; - /* 13C */ q20 mUnkPos; + /* 13C */ fx32 mUnkPos; /* 140 */ bool mUnk_140; /* 141 */ bool mUnk_141; /* 142 */ unk8 mUnk_142; // pad /* 143 */ unk8 mUnk_143; // pad /* 144 */ #else - /* 118 */ q20 mUnkPos; + /* 118 */ fx32 mUnkPos; /* 11C */ #endif diff --git a/include/MapObject/MapObjectManager.hpp b/include/MapObject/MapObjectManager.hpp index 5ffb3946..a7f8fa58 100644 --- a/include/MapObject/MapObjectManager.hpp +++ b/include/MapObject/MapObjectManager.hpp @@ -29,7 +29,7 @@ public: MapObject *func_01fff498(Vec2b param1); void func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2); MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2); - void func_01fff6d0(Vec3p *param1, s32 *param2, s32 *param3); + void func_01fff6d0(VecFx32 *param1, s32 *param2, s32 *param3); MapObjectId func_ov000_0209c3a8(Vec2b *param1); void func_ov000_0209c3e8(); diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp index 3d421a24..f3c23bfc 100644 --- a/include/Physics/Cylinder.hpp +++ b/include/Physics/Cylinder.hpp @@ -5,15 +5,15 @@ #include "math.hpp" struct Cylinder { - Vec3p pos; - q20 size; // height and radius + VecFx32 pos; + fx32 size; // height and radius Cylinder() {} - Cylinder(q20 size) { + Cylinder(fx32 size) { this->Init(size); } - void Init(q20 size) { + void Init(fx32 size) { pos.x = 0; pos.y = size; pos.z = 0; @@ -22,7 +22,7 @@ struct Cylinder { } void MakeEmpty() { - pos = gVec3p_ZERO; + pos = gVecFx32_ZERO; size = -1; } }; diff --git a/include/Player/Player.hpp b/include/Player/Player.hpp index d50cdf9a..eee135c3 100644 --- a/include/Player/Player.hpp +++ b/include/Player/Player.hpp @@ -6,10 +6,10 @@ // incomplete class PlayerActor { public: - /* 00 */ Vec3p mPos; - /* 0C */ Vec3p mPrevPos; - /* 18 */ Vec3p mVel; - /* 24 */ Vec3p mAccel; + /* 00 */ VecFx32 mPos; + /* 0C */ VecFx32 mPrevPos; + /* 18 */ VecFx32 mVel; + /* 24 */ VecFx32 mAccel; /* 30 */ u16 mAngle; /* 32 */ u8 mInvincibilityTimer; /* 33 */ u8 mInvincibilityIconTimer; // the blinking icon on top-screen diff --git a/include/Player/PlayerGet.hpp b/include/Player/PlayerGet.hpp index 6aabb7e3..f106ba92 100644 --- a/include/Player/PlayerGet.hpp +++ b/include/Player/PlayerGet.hpp @@ -90,10 +90,10 @@ struct UnkStruct_ov110_02185dc8 { class UnkStruct_ov110_021861ec { public: - /* 00 */ Vec3p mUnk_00; + /* 00 */ VecFx32 mUnk_00; /* 0C */ - ARM UnkStruct_ov110_021861ec(q20 x, q20 y, q20 z) { + ARM UnkStruct_ov110_021861ec(fx32 x, fx32 y, fx32 z) { this->mUnk_00.x = x; this->mUnk_00.y = y; this->mUnk_00.z = z; diff --git a/include/Player/PlayerSceneChange.hpp b/include/Player/PlayerSceneChange.hpp index 816b8fcc..7205af26 100644 --- a/include/Player/PlayerSceneChange.hpp +++ b/include/Player/PlayerSceneChange.hpp @@ -17,14 +17,14 @@ public: /* 54 */ UnkStruct_SceneChange1 mUnk_54; /* 68 */ unk32 mUnk_68; /* 6C */ s32 mUnk_6C; - /* 70 */ volatile Vec3p mUnk_70; + /* 70 */ volatile VecFx32 mUnk_70; /* 7C */ unk32 mUnk_7C; - /* 80 */ volatile Vec3p mUnk_80; + /* 80 */ volatile VecFx32 mUnk_80; /* 8C */ unk32 mUnk_8C; /* 90 */ volatile u32 mUnk_90; /* 94 */ u16 mUnk_94[2]; /* 98 */ unk32 mUnk_98; - /* 9C */ Vec3p mUnk_9C; + /* 9C */ VecFx32 mUnk_9C; /* A8 */ unk16 mUnk_A8; /* AA */ unk16 mUnk_AA; /* AC */ bool mUnk_AC; @@ -38,7 +38,7 @@ public: /* 04 */ virtual ~PlayerSceneChange() override; /* 0C */ virtual void vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) override; /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2) override; - /* 1C */ virtual bool vfunc_1c(Vec3p *param1) override; + /* 1C */ virtual bool vfunc_1c(VecFx32 *param1) override; }; class PlayerSceneChange2 : public UnkStruct_ov000_0208f820 { @@ -47,8 +47,8 @@ public: /* 48 */ unk32 mUnk_48; /* 4C */ unk32 mUnk_4C; /* 50 */ unk32 mUnk_50; - /* 54 */ Vec3p mUnk_54; - /* 54 */ Vec3p mUnk_60; + /* 54 */ VecFx32 mUnk_54; + /* 54 */ VecFx32 mUnk_60; PlayerSceneChange2(); diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp index 10dfd585..0e436d26 100644 --- a/include/Player/TouchControl.hpp +++ b/include/Player/TouchControl.hpp @@ -2,7 +2,8 @@ #include "math.hpp" #include "types.h" -#include + +#include typedef u16 TouchFlags; enum TouchFlag_ { @@ -14,6 +15,14 @@ enum TouchFlag_ { #define CHECK_TOUCH_FLAGS(pTC, flags) ((pTC)->mFlags & (flags)) +struct TouchState { + /* 00 */ bool touch; + /* 01 */ bool unk_01; + /* 02 */ struct { + s16 x, y; + } touchPos; +}; // size = 0x06 + class TouchControl { public: /* 00 */ u16 mSpeed; @@ -34,11 +43,13 @@ public: TouchControl(); void IncreaseSpeed(u16 increase); void UpdateFlags(u16 speed); - void UpdateWithStateFlags(TouchStateFlags *state, u16 speed); + void UpdateWithStateFlags(TPData *state, u16 speed); void Update(const TouchState *state, u16 speed); void func_02014414(u16 speedIncrease, bool shouldIncrease); void func_02014478(TouchState *state, u16 speed); static bool func_020143f0(); - static void UpdateState(TouchState *state, const TouchStateFlags *stateFlags); + static void UpdateState(TouchState *state, const TPData *stateFlags); }; + +extern TouchState data_02049b4c; diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index 934c32db..8a30f0c6 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -4,10 +4,10 @@ #include "MainGame/MiscAdvManager.hpp" #include "Save/AdventureFlags.hpp" #include "System/SysNew.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "global.h" #include "types.h" +#include //! TODO: kinda draft state for now diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp index f3efcffb..dddf4578 100644 --- a/include/System/OverlayManager.hpp +++ b/include/System/OverlayManager.hpp @@ -3,7 +3,7 @@ #include "System/SysFault.hpp" #include "types.h" -#include +#include typedef u32 ItemFlag; diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp index fcda6eb6..aa5f6859 100644 --- a/include/TitleScreen/TitleScreen.hpp +++ b/include/TitleScreen/TitleScreen.hpp @@ -3,13 +3,10 @@ #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" #include "Unknown/Common.hpp" -#include "regs.h" #include "types.h" -extern "C" { -void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); -void GXS_SetGraphicsMode(unk32 param1); -} +#include +#include DECL_PTMF(TitleScreenPTMF, Input *pButtons, TouchControl *pTouchControl); @@ -124,7 +121,7 @@ public: this->mpGameMode = NULL; GX_SetGraphicsMode(1, 0, 1); GXS_SetGraphicsMode(5); - REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x0043) | 0x4E14; + G2S_SetBG3Control(1, 0, 14, 5, 0); } void func_ov025_020c4c20(); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index b0ff7e71..2f7245d2 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -3,11 +3,11 @@ #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkFileSystem.hpp" -#include "Unknown/UnkMemFuncs.h" #include "global.h" #include "math.hpp" #include "profile.hpp" #include "types.h" +#include #include @@ -1006,7 +1006,7 @@ public: /* 08 */ virtual void vfunc_08(void *param1); // resource thing? (GetUnkPointer1_Impl as param1) /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(Mat3p *param1, Vec3p *param2); + /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2); /* 18 */ virtual void vfunc_18(); /* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1); /* 20 */ virtual void vfunc_20(); @@ -1093,10 +1093,10 @@ public: // data_ov000_020b1a98 /* 00 */ virtual ~UnkSystem6(); /* 08 */ virtual void vfunc_08(void *param1); // resource thing like UnkSystem4? - /* 0C */ virtual void vfunc_0C() = 0; - /* 10 */ virtual void vfunc_10() = 0; - /* 14 */ virtual void vfunc_14(Mat3p *param1, Vec3p *param2) = 0; - /* 18 */ virtual void vfunc_18() = 0; + /* 0C */ virtual void vfunc_0C() = 0; + /* 10 */ virtual void vfunc_10() = 0; + /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) = 0; + /* 18 */ virtual void vfunc_18() = 0; /* 1C */ }; @@ -1111,7 +1111,7 @@ public: // data_ov000_020b1a48 /* 00 */ virtual ~UnkSystem6_Derived1() override {} /* 10 */ virtual void vfunc_10() override; - /* 14 */ virtual void vfunc_14(Mat3p *param1, Vec3p *param2) override; + /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) override; /* 18 */ virtual void vfunc_18() override; }; @@ -1140,13 +1140,13 @@ struct UnkStackStruct1 { /* 03 */ unk8 mUnk_03; /* 04 */ void *mUnk_04; /* 08 */ unk32 mUnk_08; - /* 0C */ Vec3p mUnk_0C; + /* 0C */ VecFx32 mUnk_0C; /* 18 */ unk16 mUnk_18; /* 1A */ unk16 mUnk_1A; /* 1C */ unk16 mUnk_1C; /* 1E */ unk16 mUnk_1E; /* 20 */ unk32 mUnk_20; - /* 24 */ Vec3p mUnk_24; + /* 24 */ VecFx32 mUnk_24; /* 30 */ unk16 mUnk_30; /* 32 */ unk16 mUnk_32; /* 34 */ unk16 mUnk_34; @@ -1165,7 +1165,7 @@ struct UnkSystem7_UnkStruct_00 { /* 28 */ STRUCT_PAD(0x28, 0xA4); /* A4 */ unk16 mUnk_A4; - void func_ov000_02052c48(Vec3p *param1, Vec3p *param2); + void func_ov000_02052c48(VecFx32 *param1, VecFx32 *param2); }; class UnkSystem7 { diff --git a/include/Unknown/UnkMemFuncs.h b/include/Unknown/UnkMemFuncs.h deleted file mode 100644 index aac42431..00000000 --- a/include/Unknown/UnkMemFuncs.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "types.h" - -//! TODO: temporary place until this is documented properly - -#ifdef __cplusplus -extern "C" { -#endif -void MI_CpuFill16(int value, void *dst, size_t size); -void MI_CpuCopy16(void *src, void *dest, size_t size); -void MI_CpuFill32(int value, void *dest, size_t size); -// MI_CpuCopy32 -// Stream32 -void _MI_CpuFill(int value, void *dst, size_t size); -void _MI_CpuCopy(void *src, void *dest, size_t size); -// CopySingle256 -// CopySingle288 -// CopySingle384 -// CopySingle512 -void MI_CpuFill8(void *dst, int value, size_t size); -// Copy -// Zero288 -// Swap32 -#ifdef __cplusplus -} -#endif diff --git a/include/Unknown/UnkStruct_02049b18.hpp b/include/Unknown/UnkStruct_02049b18.hpp index 8396cfc0..c8acca0d 100644 --- a/include/Unknown/UnkStruct_02049b18.hpp +++ b/include/Unknown/UnkStruct_02049b18.hpp @@ -2,8 +2,8 @@ #include "Player/TouchControl.hpp" #include "global.h" +#include "input.hpp" #include "types.h" -#include class UnkStruct_02049b18_06 { public: diff --git a/include/Unknown/UnkStruct_0204a110.hpp b/include/Unknown/UnkStruct_0204a110.hpp index 358b708e..31e138ee 100644 --- a/include/Unknown/UnkStruct_0204a110.hpp +++ b/include/Unknown/UnkStruct_0204a110.hpp @@ -2,10 +2,11 @@ #include "System/SysNew.hpp" #include "Unknown/Common.hpp" -#include "Unknown/UnkMemFuncs.h" #include "global.h" #include "types.h" +#include + class GameModeManagerBase; struct UnkStruct_0204a110_Sub2_000_158 { @@ -69,7 +70,7 @@ public: /* 200 */ UnkStruct_0204a110_Sub3_00() { - MI_CpuFill16(0, (u16 *) this->mUnk_000, sizeof(this->mUnk_000)); + MI_CpuFill16(0, this->mUnk_000, sizeof(this->mUnk_000)); } }; @@ -159,8 +160,7 @@ public: UnkSubStruct1_Methods; }; -//! TODO: actually a matrix -extern Vec4p data_027e0120; +extern MtxFx22 data_027e0120; class UnkStruct_0204a110_Sub7 { public: @@ -170,7 +170,7 @@ public: /* 03 */ unk8 mUnk_03; /* 04 */ UnkSystem2_UnkSubSystem9 *mUnk_04; /* 08 */ UnkStruct_0204a110_Sub7_08 *mUnk_08; - /* 0C */ Vec4p mUnk_0C; // same type as data_027e0120? + /* 0C */ MtxFx22 mUnk_0C; /* 1C */ UnkStruct_0204a110_Sub7(); diff --git a/include/Unknown/UnkStruct_0204e64c.hpp b/include/Unknown/UnkStruct_0204e64c.hpp index 138b40d0..f669b8aa 100644 --- a/include/Unknown/UnkStruct_0204e64c.hpp +++ b/include/Unknown/UnkStruct_0204e64c.hpp @@ -3,7 +3,7 @@ #include "Unknown/UnkStruct_02049b18.hpp" #include "global.h" #include "types.h" -#include +#include class UnkStruct_0204e64c_00 { public: diff --git a/include/Unknown/UnkStruct_027e0478.hpp b/include/Unknown/UnkStruct_027e0478.hpp index f64f39e7..79e7f747 100644 --- a/include/Unknown/UnkStruct_027e0478.hpp +++ b/include/Unknown/UnkStruct_027e0478.hpp @@ -4,7 +4,7 @@ #include "Player/Player.hpp" #include "Player/TouchControl.hpp" #include "global.h" -#include +#include // incomplete class UnkStruct_027e0478 { diff --git a/include/Unknown/UnkStruct_027e0998.hpp b/include/Unknown/UnkStruct_027e0998.hpp index 7dcf8a8a..1e51e678 100644 --- a/include/Unknown/UnkStruct_027e0998.hpp +++ b/include/Unknown/UnkStruct_027e0998.hpp @@ -18,7 +18,7 @@ public: UnkStruct_027e0998_Base(); // data_ov000_020b1e08 - /* 00 */ virtual bool vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3); + /* 00 */ virtual bool vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3); /* 04 */ void func_ov000_02061760(); @@ -38,11 +38,11 @@ public: ~UnkStruct_027e0998(); // ClearInstance // data_ov024_020d7c98 - /* 00 */ virtual bool vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3) override; + /* 00 */ virtual bool vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) override; /* 04 */ bool func_ov024_020c716c(); - bool func_ov024_020c7214(Vec3p *pPos, Vec2s *param2, u16 *param3); + bool func_ov024_020c7214(VecFx32 *pPos, Vec2s *param2, u16 *param3); bool func_ov024_020c727c(Vec2s *param1, u16 *param2); bool func_ov024_020c7300(unk32 param1); bool func_ov024_020c7354(); diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index b74e9fb8..bd464a38 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -227,7 +227,7 @@ public: /* 28 */ unk32 mUnk_28; /* 2C */ s16 mUnk_2C; /* 2C */ unk16 mUnk_2E; - /* 30 */ Vec3p mUnk_30; + /* 30 */ VecFx32 mUnk_30; /* 3C */ STRUCT_PAD(0x3C, 0x54); /* 54 */ void *mUnk_54; // vtable /* 58 */ UnkStruct_WarpUnk1 *mpWarpUnk1; diff --git a/include/Unknown/UnkStruct_027e09a8.hpp b/include/Unknown/UnkStruct_027e09a8.hpp index 67d426b0..545f9965 100644 --- a/include/Unknown/UnkStruct_027e09a8.hpp +++ b/include/Unknown/UnkStruct_027e09a8.hpp @@ -5,8 +5,8 @@ class UnkStruct_027e09a8 { public: - void func_ov000_02071b30(unk32 param1, Vec3p *pPos, unk32 param3); - void func_ov000_02071d34(void *param1, unk32 param2, Vec3p *pPos, unk32 param4); + void func_ov000_02071b30(unk32 param1, VecFx32 *pPos, unk32 param3); + void func_ov000_02071d34(void *param1, unk32 param2, VecFx32 *pPos, unk32 param4); }; extern UnkStruct_027e09a8 *data_027e09a8; diff --git a/include/Unknown/UnkStruct_027e09ac.hpp b/include/Unknown/UnkStruct_027e09ac.hpp index da9ef588..59332ee3 100644 --- a/include/Unknown/UnkStruct_027e09ac.hpp +++ b/include/Unknown/UnkStruct_027e09ac.hpp @@ -1,8 +1,8 @@ #pragma once -#include "Unknown/UnkMemFuncs.h" #include "global.h" #include "types.h" +#include #include "math.hpp" diff --git a/include/Unknown/UnkStruct_027e09bc.hpp b/include/Unknown/UnkStruct_027e09bc.hpp index d781255b..00e56d5c 100644 --- a/include/Unknown/UnkStruct_027e09bc.hpp +++ b/include/Unknown/UnkStruct_027e09bc.hpp @@ -5,8 +5,8 @@ class UnkStruct_027e09bc_0c { public: void func_ov000_02078230(unk32 param1); - bool func_ov000_0207834c(Vec3p *param1, unk32 param2, unk32 param3); - bool func_ov000_02078764(Vec3p *param1, void *param2, unk32 param3); + bool func_ov000_0207834c(VecFx32 *param1, unk32 param2, unk32 param3); + bool func_ov000_02078764(VecFx32 *param1, void *param2, unk32 param3); }; class UnkStruct_027e09bc { diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index 34f53e3a..d835d135 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -90,10 +90,10 @@ public: /* 1C */ virtual void vfunc_1c(); /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); - /* 28 */ virtual q20 vfunc_28(Vec3p *param1, unk32 param2, unk32 param3); + /* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3); /* 2C */ virtual void vfunc_2c(); - q20 func_01ffedf4(Vec2b *pPos); + fx32 func_01ffedf4(Vec2b *pPos); unk32 func_ov000_02080180(void *param1); bool func_ov000_02080658(unk32 param1, UnkStruct_SceneChange1 *param2); @@ -102,9 +102,9 @@ public: void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3); void func_ov000_0208053c(u16 param1); void func_ov000_020803ec(u16 param1); - unk32 func_ov000_020802ec(u16 param1, Vec3p *param2); + unk32 func_ov000_020802ec(u16 param1, VecFx32 *param2); - Vec3p *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); + VecFx32 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); }; class UnkStruct_027e0cd8_04_0C { @@ -138,7 +138,7 @@ public: /* 0C */ UnkStruct_027e0cd8_0c *mUnk_0C; // related to train? /* 10 */ MapObjectManager *mUnk_10; /* 14 */ STRUCT_PAD(0x14, 0x24); - /* 24 */ Vec3p mUnk_24; + /* 24 */ VecFx32 mUnk_24; /* 34 */ STRUCT_PAD(0x34, 0x4C); /* 4C */ diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index bbdd66ef..e1145d9b 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -76,14 +76,14 @@ public: /* 40 */ unk32 *mUnk_40; // pointer to data_027e0478 when not on the train /* 44 */ - Vec3p *func_01fff148(unk32 param1); + VecFx32 *func_01fff148(unk32 param1); bool func_01fff1a4(); // overlay 0 void func_ov000_0208a318(unk32 param1, unk32 param2, unk32 param3); - void func_ov000_0208bbd4(unk32 param1, Vec3p *param2, u16 param3); + void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, u16 param3); - void func_ov000_0208bbd4(unk32 param1, Vec3p *param2, void *param3); + void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, void *param3); static UnkStruct_027e0ce0_34 *func_ov000_0205c904(); diff --git a/include/Unknown/UnkStruct_027e0cec.hpp b/include/Unknown/UnkStruct_027e0cec.hpp index 7ace678e..073890f5 100644 --- a/include/Unknown/UnkStruct_027e0cec.hpp +++ b/include/Unknown/UnkStruct_027e0cec.hpp @@ -6,9 +6,9 @@ class UnkStruct_027e0cec { public: - void func_ov000_0209feac(unk32 param1, Vec3p *param2, unk32 param3, unk32 param4, unk32 param5); - void func_ov000_0209ff8c(UnkStruct_PlayerGet_ec *param1, unk32 param2, Vec3p *param3, unk32 param4); - void func_ov000_020a0000(UnkStruct_PlayerGet_ec *param1, void *param2, unk32 *param3, Vec3p *param4, unk32 param5); + void func_ov000_0209feac(unk32 param1, VecFx32 *param2, unk32 param3, unk32 param4, unk32 param5); + void func_ov000_0209ff8c(UnkStruct_PlayerGet_ec *param1, unk32 param2, VecFx32 *param3, unk32 param4); + void func_ov000_020a0000(UnkStruct_PlayerGet_ec *param1, void *param2, unk32 *param3, VecFx32 *param4, unk32 param5); void func_ov000_020a0110(UnkStruct_PlayerGet_ec *param1); void func_ov000_020a0220(void *param1, void *param2); }; diff --git a/include/Unknown/UnkStruct_ov000_02067bc4.hpp b/include/Unknown/UnkStruct_ov000_02067bc4.hpp index 94e06b46..239a99c2 100644 --- a/include/Unknown/UnkStruct_ov000_02067bc4.hpp +++ b/include/Unknown/UnkStruct_ov000_02067bc4.hpp @@ -7,7 +7,7 @@ #include "Unknown/UnkStruct_02049b18.hpp" #include "global.h" #include "types.h" -#include +#include class UnkStruct_ov000_02067bc4_Sub1 { public: diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index 3fc7dfcd..f7235e78 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -55,7 +55,7 @@ public: // /* 3C */ unk32 mUnk_3C; // /* 40 */ u16 mUnk_40; - void func_ov093_0216f76c(Vec3p *param1, unk32 param2); + void func_ov093_0216f76c(VecFx32 *param1, unk32 param2); }; class UnkStruct_ov000_0208f820_28 { @@ -136,7 +136,7 @@ public: /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk32 mUnk_0C; - /* 10 */ Vec3p mUnk_10; + /* 10 */ VecFx32 mUnk_10; /* 1C */ ItemId mUnk_1C; }; @@ -204,9 +204,9 @@ public: /* 28 */ UnkStruct_ov000_0208f820_28 *mUnk_28; /* 2C */ UnkStruct_ov000_0208f820_2c *mUnk_2C; /* 30 */ UnkStruct_ov000_0208f820_30 *mUnk_30; - /* 34 */ Vec3p *mUnk_34; - /* 38 */ Vec3p *mUnk_38; - /* 3C */ Vec3p *mUnk_3C; + /* 34 */ VecFx32 *mUnk_34; + /* 38 */ VecFx32 *mUnk_38; + /* 3C */ VecFx32 *mUnk_3C; /* 40 */ UnkStruct_ov000_0208f820_40 *mUnk_40; /* 44 */ UnkStruct_ov000_0208f820_44 *mUnk_44; /* 48 */ @@ -217,11 +217,11 @@ public: /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2) = 0; /* 14 */ virtual void vfunc_14(); /* 18 */ virtual void vfunc_18(unk32 param1, unk32 param2, unk32 param3); - /* 1C */ virtual bool vfunc_1c(Vec3p *param1); + /* 1C */ virtual bool vfunc_1c(VecFx32 *param1); /* 20 */ UnkStruct_ov000_0208f820(); - bool func_ov000_020914b0(unk32 param1, Vec3p *param2, unk32 param3); + bool func_ov000_020914b0(unk32 param1, VecFx32 *param2, unk32 param3); bool func_ov000_02091e68(unk32 param1); }; diff --git a/include/Unknown/UnkStruct_ov000_020b5d34.hpp b/include/Unknown/UnkStruct_ov000_020b5d34.hpp index 27bdc686..05d472a2 100644 --- a/include/Unknown/UnkStruct_ov000_020b5d34.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5d34.hpp @@ -10,7 +10,7 @@ class UnkStruct_ov000_020b5d34_00 { public: /* 00 */ unk32 *mUnk_00; /* 04 */ MapObject_20 *mUnk_04; - /* 08 */ Vec3p *mUnk_08; + /* 08 */ VecFx32 *mUnk_08; /* 0C */ s16 *mUnk_0C; /* 10 */ }; diff --git a/include/Unknown/UnkStruct_ov024_020d8694.hpp b/include/Unknown/UnkStruct_ov024_020d8694.hpp index 56552a58..b4b0a279 100644 --- a/include/Unknown/UnkStruct_ov024_020d8694.hpp +++ b/include/Unknown/UnkStruct_ov024_020d8694.hpp @@ -7,7 +7,7 @@ #include "global.h" #include "types.h" -#include +#include // Title Card Scene Message Index (see sBMGSceneMap) typedef s32 TC_SceneMsgIdx; diff --git a/include/global.h b/include/global.h index fa63a807..9c5d8bc1 100644 --- a/include/global.h +++ b/include/global.h @@ -1,9 +1,6 @@ #ifndef GLOBAL_H #define GLOBAL_H -#define ARRAY_LEN_U(arr) (u32)((sizeof(arr) / sizeof(*arr))) -#define ARRAY_LEN(arr) (s32)((sizeof(arr) / sizeof(*arr))) - // Prevent the IDE from reporting errors that the compiler/linker won't report #ifdef __INTELLISENSE__ #endif diff --git a/include/input.hpp b/include/input.hpp new file mode 100644 index 00000000..c97f0b63 --- /dev/null +++ b/include/input.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "types.h" + +#include + +#define CHECK_BUTTON_COMBO(value, btn) ((value) & (btn)) + +struct Input { + /* 00 */ u16 cur; + /* 02 */ volatile u16 press; + /* 04 */ u16 release; + /* 06 */ + + Input(); + unk32 func_02013c08(u16 param1); + unk32 func_02013b24(unk32 param1); + unk32 func_02013bbc(); +}; diff --git a/include/math.hpp b/include/math.hpp index 7e022cc1..6be3023c 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -231,11 +231,11 @@ static inline void Vec2b_Copy(const Vec2b *a, Vec2b *dst) { union Vec2pCpp { struct { - /* 0 */ q20 x; - /* 4 */ q20 y; + /* 0 */ fx32 x; + /* 4 */ fx32 y; /* 8 */ }; - q20 coords[2]; + fx32 coords[2]; void operator=(const Vec2pCpp &from) { this->x = from.x; @@ -243,7 +243,7 @@ union Vec2pCpp { } Vec2pCpp() {} - Vec2pCpp(q20 X, q20 Y) { + Vec2pCpp(fx32 X, fx32 Y) { x = X; y = Y; } @@ -267,16 +267,16 @@ static inline void Vec2pCpp_Clear(Vec2pCpp *dst) { } static inline void Vec2pCpp_Add(const Vec2pCpp *a, const Vec2pCpp *b, Vec2pCpp *dst) { - q20 x = a->x + b->x; - q20 y = a->y + b->y; + fx32 x = a->x + b->x; + fx32 y = a->y + b->y; dst->x = x; dst->y = y; } static inline void Vec2pCpp_Sub(const Vec2pCpp *a, const Vec2pCpp *b, Vec2pCpp *dst) { - q20 x = a->x - b->x; - q20 y = a->y - b->y; + fx32 x = a->x - b->x; + fx32 y = a->y - b->y; dst->x = x; dst->y = y; diff --git a/include/types.h b/include/types.h index e8457207..83427353 100644 --- a/include/types.h +++ b/include/types.h @@ -1,37 +1,7 @@ #ifndef TYPES_H #define TYPES_H -#include - -typedef unsigned long long u64; -typedef unsigned int u32; -typedef unsigned short u16; -typedef unsigned char u8; - -typedef long long s64; -typedef int s32; -typedef short s16; -typedef char s8; - -typedef float f32; -typedef double f64; - -typedef volatile u64 vu64; -typedef volatile u32 vu32; -typedef volatile u16 vu16; -typedef volatile u8 vu8; - -typedef volatile s64 vs64; -typedef volatile s32 vs32; -typedef volatile s16 vs16; -typedef volatile s8 vs8; - -typedef volatile f32 vf32; -typedef volatile f64 vf64; - -typedef u32 BOOL; - -#define ATTRIBUTE_ALIGN(x) __attribute__((aligned(x))) +#include typedef s8 unk8; typedef s16 unk16; diff --git a/libs/c/include/stdbool.h b/libs/c/include/stdbool.h new file mode 100644 index 00000000..1e8f80c4 --- /dev/null +++ b/libs/c/include/stdbool.h @@ -0,0 +1,11 @@ +#ifndef _C_STDBOOL_H +#define _C_STDBOOL_H + +#ifndef __cplusplus + #define bool int + #define true 1 + #define false 0 + #define __bool_true_false_are_defined 1 +#endif + +#endif diff --git a/libs/c/include/stddef.h b/libs/c/include/stddef.h index 873592ca..626a8d73 100644 --- a/libs/c/include/stddef.h +++ b/libs/c/include/stddef.h @@ -28,10 +28,7 @@ typedef unsigned int size_t; #endif #ifndef __cplusplus -typedef int bool; typedef unsigned short wchar_t; - #define true 1 - #define false 0 #endif #ifdef __cplusplus diff --git a/libs/c/src/string.c b/libs/c/src/string.c index 0578e706..1bad65cb 100644 --- a/libs/c/src/string.c +++ b/libs/c/src/string.c @@ -1,3 +1,4 @@ +#include #include #include diff --git a/libs/c/src/wprintf.c b/libs/c/src/wprintf.c index dcf4e83e..bc08986f 100644 --- a/libs/c/src/wprintf.c +++ b/libs/c/src/wprintf.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include diff --git a/libs/nitro/include/nitro.h b/libs/nitro/include/nitro.h new file mode 100644 index 00000000..05ff09d3 --- /dev/null +++ b/libs/nitro/include/nitro.h @@ -0,0 +1,21 @@ +#include +#include + +#include "nitro/card.h" +#include "nitro/dc.h" +#include "nitro/fs.h" +#include "nitro/fx.h" +#include "nitro/g2.h" +#include "nitro/gx.h" +#include "nitro/hw.h" +#include "nitro/mi.h" +#include "nitro/os.h" +#include "nitro/pad.h" +#include "nitro/pm.h" +#include "nitro/reg.h" +#include "nitro/rtc.h" +#include "nitro/snd.h" +#include "nitro/std.h" +#include "nitro/svc.h" +#include "nitro/tp.h" +#include "nitro/types.h" diff --git a/libs/nitro/include/nitro/Overlay.h b/libs/nitro/include/nitro/Overlay.h deleted file mode 100644 index 362ea09f..00000000 --- a/libs/nitro/include/nitro/Overlay.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef _NITRO_OVERLAY_H -#define _NITRO_OVERLAY_H - -#include "types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define EXTERN_OVERLAY_ID(name_or_index) extern u32 OVERLAY_##name_or_index##_ID; -#define OVERLAY_ID(name_or_index) ((u32) & OVERLAY_##name_or_index##_ID) - -typedef struct Overlay { - /* 00 */ unk32 mId; - /* 04 */ void *mBaseAddress; - /* 08 */ u32 mTextSize; - /* 0C */ s32 mBssSize; - /* 10 */ unk32 mCtorStart; - /* 14 */ unk32 mCtorEnd; - /* 18 */ unk32 mFileId; - /* 1C */ u32 mFileSize; - /* 20 */ -} Overlay; - -u32 Overlay_FileSize(Overlay *overlay); -void Overlay_ClearCacheAndBss(Overlay *overlay); -void Overlay_func_02042238(unk32 *param1, Overlay *overlay); -bool Overlay_func_02042250(Overlay *param1, Overlay *param2, s32 param3, unk32 param4, s32 param5, u32 param6, s32 param7, - u32 param8); -bool Overlay_func_020422ec(Overlay *param1, Overlay *param2, s32 param3); -bool Overlay_func_0204238c(Overlay *overlay); -bool Overlay_func_020423e8(s32 param1, unk32 param2, unk32 param3); -void Overlay_Init(Overlay *overlay); -void Overlay_RunGlobalDestructors(Overlay *overlay); -bool Overlay_Destroy(Overlay *overlay); -bool FS_LoadOverlay(Overlay *overlay, unk32 param2); -bool FS_UnloadOverlay(Overlay *overlay, unk32 param2); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libs/nitro/include/nitro/button.h b/libs/nitro/include/nitro/button.h deleted file mode 100644 index 392a20f2..00000000 --- a/libs/nitro/include/nitro/button.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include "types.h" - -#define BTN_A (1 << 0) // 0x0001 -#define BTN_B (1 << 1) // 0x0002 -#define BTN_SELECT (1 << 2) // 0x0004 -#define BTN_START (1 << 3) // 0x0008 -#define BTN_DRIGHT (1 << 4) // 0x0010 -#define BTN_DLEFT (1 << 5) // 0x0020 -#define BTN_DUP (1 << 6) // 0x0040 -#define BTN_DDOWN (1 << 7) // 0x0080 -#define BTN_R (1 << 8) // 0x0100 -#define BTN_L (1 << 9) // 0x0200 -#define BTN_X (1 << 10) // 0x0400 -#define BTN_Y (1 << 11) // 0x0800 - -#define CHECK_BUTTON_COMBO(value, btn) ((value) & (btn)) - -struct Input { - /* 00 */ u16 cur; - /* 02 */ volatile u16 press; - /* 04 */ u16 release; - /* 06 */ - - Input(); - unk32 func_02013c08(u16 param1); - unk32 func_02013b24(unk32 param1); - unk32 func_02013bbc(); -}; diff --git a/libs/nitro/include/nitro/card.h b/libs/nitro/include/nitro/card.h new file mode 100644 index 00000000..56e2657e --- /dev/null +++ b/libs/nitro/include/nitro/card.h @@ -0,0 +1,71 @@ +#ifndef _NITRO_CARD_H +#define _NITRO_CARD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/types.h" + +#define CARD_BACKUP_TYPE_EEPROM 1 +#define CARD_BACKUP_TYPE_FLASH 2 +#define CARD_BACKUP_TYPE_FRAM 3 + +#define CARD_BACKUP_TYPE_EEPROM_4KBITS (0x900 | CARD_BACKUP_TYPE_EEPROM) +#define CARD_BACKUP_TYPE_EEPROM_64KBITS (0xd00 | CARD_BACKUP_TYPE_EEPROM) +#define CARD_BACKUP_TYPE_EEPROM_512KBITS (0x1000 | CARD_BACKUP_TYPE_EEPROM) +#define CARD_BACKUP_TYPE_FLASH_2MBITS (0x1200 | CARD_BACKUP_TYPE_FLASH) +#define CARD_BACKUP_TYPE_FLASH_4MBITS (0x1300 | CARD_BACKUP_TYPE_FLASH) +#define CARD_BACKUP_TYPE_FLASH_8MBITS (0x1400 | CARD_BACKUP_TYPE_FLASH) +#define CARD_BACKUP_TYPE_FRAM_256KBITS (0xf00 | CARD_BACKUP_TYPE_FRAM) + +// TODO: Find values for these +#define CARD_RESULT_SUCCESS 0 +#define CARD_RESULT_FAILURE +#define CARD_RESULT_INVALID_PARAM +#define CARD_RESULT_UNSUPPORTED +#define CARD_RESULT_TIMEOUT +#define CARD_RESULT_CANCELED +#define CARD_RESULT_NO_RESPONSE +#define CARD_RESULT_ERROR + +typedef u32 CARDBackupType; +typedef u32 CARDResult; + +void CARD_LockBackup(u16 cardId); +void CARD_UnlockBackup(u16 cardId); +BOOL CARD_IdentifyBackup(CARDBackupType type); +CARDBackupType CARD_GetBackupType(); +#define CARD_IsBackupEeprom() (CARD_GetBackupType() & 0xff) == CARD_BACKUP_TYPE_EEPROM +#define CARD_IsBackupFlash() (CARD_GetBackupType() & 0xff) == CARD_BACKUP_TYPE_FLASH +#define CARD_IsBackupFram() (CARD_GetBackupType() & 0xff) == CARD_BACKUP_TYPE_FRAM +BOOL CARD_ReadWriteBackupAsync(u32 offset, void *buf, u32 size, void *, void *, u32, u32, u32, u32); +void CARD_WaitBackupAsync(void); +CARDResult CARD_GetResultCode(void); +BOOL CARD_func_0033(); +void CARD_func_0034(); + +inline BOOL CARD_ReadEepromAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 1, 6, 1, 0); +} +inline BOOL CARD_ReadFlashAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 0, 6, 1, 0); +} +inline BOOL CARD_ReadFramAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 1, 6, 1, 0); +} +inline BOOL CARD_WriteAndVerifyEepromAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 1, 8, 10, 2); +} +inline BOOL CARD_WriteAndVerifyFlashAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 0, 7, 10, 2); +} +inline BOOL CARD_WriteAndVerifyFramAsync(u32 offset, void *buf, u32 size, void *param4, void *param5) { + return CARD_ReadWriteBackupAsync(offset, buf, size, param4, param5, 1, 8, 10, 2); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/dc.h b/libs/nitro/include/nitro/dc.h new file mode 100644 index 00000000..008c7aae --- /dev/null +++ b/libs/nitro/include/nitro/dc.h @@ -0,0 +1,25 @@ +#ifndef _NITRO_DC_H +#define _NITRO_DC_H + +#include "nitro/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void DC_StoreAll(void); +void DC_StoreRange(void *ptr, u32 size); + +void DC_FlushAll(void); +void DC_FlushRange(void *ptr, u32 size); + +void DC_InvalidateRange(void *ptr, u32 size); + +void DC_func_0004(void *, int); +void DC_func_0002(); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/fs.h b/libs/nitro/include/nitro/fs.h new file mode 100644 index 00000000..4bb29d3b --- /dev/null +++ b/libs/nitro/include/nitro/fs.h @@ -0,0 +1,178 @@ +#ifndef _NITRO_FS_H +#define _NITRO_FS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/os.h" +#include "nitro/types.h" + +#define FS_SEEK_SET 0 +#define FS_SEEK_CUR 1 +#define FS_SEEK_END 2 + +#define FS_FILE_FLAG_FILE 0x10 + +#define FS_FILEMODE_R 0x1 + +struct FSVolume; +typedef struct FSUnkStruct2 { + /* 00 */ struct FSVolume *unk_00; + /* 04 */ s16 unk_04; + /* 06 */ u16 unk_06; + /* 08 */ +} FSUnkStruct2; + +typedef struct FSUnkStruct5 { + /* 00 */ struct FSVolume *volume; + /* 04 */ struct FSVolume *next; + /* 08 */ struct FSVolume *prev; + /* 0c */ +} FSUnkStruct5; + +struct FSFile; +typedef struct FSVolume { + /* 00 */ u32 volumeName; + /* 04 */ struct FSVolume *next; + /* 08 */ struct FSVolume *prev; + /* 0c */ u32 unk_0c; + /* 10 */ u32 unk_10; + /* 14 */ u32 unk_14; + /* 18 */ u32 unk_18; + /* 1c */ vu32 flags; + /* 20 */ u32 unk_20; + /* 24 */ struct FSVolume *unk_24; + /* 28 */ u32 unk_28; + /* 2c */ u32 *fat; + /* 30 */ u32 fatSize; + /* 34 */ u8 *fnt; + /* 38 */ u32 fntSize; + /* 3c */ u32 fatRomOffset; + /* 40 */ u32 fntRomOffset; + /* 44 */ u32 *unk_44; + /* 48 */ BOOL (*unk_48)(struct FSVolume *, u32, u32, u32); + /* 4c */ BOOL (*unk_4c)(struct FSVolume *, u32, u32, u32); + /* 50 */ BOOL (*unk_50)(struct FSVolume *, u32, u32, u32); + /* 54 */ u32 (*unk_54)(struct FSFile *, u32); + /* 58 */ u32 unk_58; + /* 5c */ +} FSVolume; + +typedef struct FSUnkStruct3 { + /* 00 */ u32 volumeName; + /* 04 */ u32 unk_04; + /* 08 */ u32 unk_08; + /* 0c */ u32 unk_0c; + /* 10 */ u32 unk_10; + /* 14 */ u8 unk_14[0x94 - 0x14]; + /* 94 */ +} FSUnkStruct3; + +typedef struct FSUnkStruct7 { + /* 00 */ u32 unk_00; + /* 04 */ u32 unk_04; + /* 08 */ u32 unk_08; + /* 0c */ +} FSUnkStruct7; + +typedef struct FSFile { + /* 00 */ u32 unk_00; + /* 04 */ s32 *unk_04; + /* 08 */ FSVolume *volume; + /* 0c */ vu32 flags; + /* 10 */ u32 unk_10; + /* 14 */ u32 unk_14; + /* 18 */ OSLinkedList unk_18; + /* 20 */ u32 unk_20; + /* 24 */ u32 startRomOffset; + /* 28 */ u32 endRomOffset; + /* 2c */ u32 cursor; + /* 30 */ u32 buf; + union { + /* 34 */ u32 unk_34; + struct { + /* 34 */ u16 unk_34_s; + /* 36 */ u16 unk_36_s; + }; + }; + /* 38 */ u16 unk_38; + /* 3c */ u32 unk_3c; + /* 40 */ u32 unk_40; + /* 44 */ u32 unk_44; + /* 48 */ +} FSFile; + +typedef struct FSFntDirectory { + /* 00 */ u32 subtableOffset; + /* 04 */ u16 firstFileId; + /* 06 */ u16 parentId; + /* 08 */ +} FSFntDirectory; + +typedef struct FSDirEntry { + /* 00 */ u32 unk_00; + /* 04 */ union { + u32 unk_04_u32; + struct { + u16 unk_04_u16; + u16 unk_06; + }; + }; + /* 08 */ u32 unk_08; + /* 0c */ u32 unk_0c; + /* 10 */ u32 unk_10; + /* 14 */ char name[0x80]; + /* 94 */ +} FSDirEntry; + +typedef struct FSOverlay { + /* 00 */ s32 id; + /* 04 */ void *addr; + /* 08 */ u32 textSize; + /* 0C */ s32 bssSize; + /* 10 */ s32 ctorStart; + /* 14 */ s32 ctorEnd; + /* 18 */ s32 fileId; + /* 1C */ u32 fileSize; + /* 20 */ +} FSOverlay; + +void FS_Init(u32 dmaCount); +void FS_InitFile(FSFile *file); +BOOL FS_OpenFile(FSFile *file, const char *path); +BOOL FS_OpenFileEx(FSFile *file, const char *path, u32 flags); +BOOL FS_SeekFile(FSFile *file, s32 pos, u32 mode); +u32 FS_GetLength(FSFile *file); +u32 FS_ReadFile(FSFile *file, void *buf, u32 size); +BOOL FS_CloseFile(FSFile *file); +inline BOOL FS_IsFile(FSFile *file) { + return !!(file->flags & FS_FILE_FLAG_FILE); +} + +BOOL FS_FindDir(FSFile *file, const char *path); +BOOL FS_ReadDir(FSFile *file, FSDirEntry *dir); +void FS_CloseDirectory(FSFile *file); + +#define EXTERN_OVERLAY_ID(name_or_index) extern u32 OVERLAY_##name_or_index##_ID; +#define OVERLAY_ID(name_or_index) ((u32) & OVERLAY_##name_or_index##_ID) + +u32 FS_GetOverlaySize(FSOverlay *overlay); +void FS_ClearOverlayCacheAndBss(FSOverlay *overlay); +void FS_Overlay_0202d6cc(void **param1, FSOverlay *overlay); // param1 is the address of gArchiveList +BOOL FS_Overlay_0202d6f4(FSOverlay *param1, FSOverlay *param2, s32 param3, s32 param4, s32 param5, u32 param6, s32 param7, + u32 param8); +BOOL FS_LoadOverlayInfo(FSOverlay *overlay, s32 param2, s32 param3); +BOOL FS_LoadOverlayFile(FSOverlay *overlay); +BOOL FS_Overlay_0202d984(FSOverlay *param1, s32 param2, s32 param3); +BOOL FS_StartOverlay(FSOverlay *overlay); +BOOL FS_CleanupOverlayResources(FSOverlay *overlay); +BOOL FS_StopOverlay(FSOverlay *overlay); +BOOL FS_LoadOverlay(FSOverlay *overlay, s32 param2); +BOOL FS_UnloadOverlay(FSOverlay *overlay, s32 param2); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/fx.h b/libs/nitro/include/nitro/fx.h new file mode 100644 index 00000000..c6852037 --- /dev/null +++ b/libs/nitro/include/nitro/fx.h @@ -0,0 +1,46 @@ +#ifndef _NITRO_FX_H +#define _NITRO_FX_H + +#include "nitro/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FX32_SHIFT 12 +#define FX16_SHIFT 12 + +#define FX32_ONE (fx32)(1 << FX32_SHIFT) +#define FX16_ONE (fx16)(1 << FX16_SHIFT) + +typedef s32 fx32; +typedef s16 fx16; + +typedef union VecFx32 { + struct { + /* 00 */ fx32 x; + /* 04 */ fx32 y; + /* 08 */ fx32 z; + /* 0c */ + }; + fx32 coords[3]; +} VecFx32; + +typedef union MtxFx22 { + struct { + /* 00 */ fx32 x; + /* 04 */ fx32 y; + /* 08 */ fx32 z; + /* 0c */ fx32 w; + /* 10 */ + }; + fx32 coords[4]; +} MtxFx22; + +void FX_Init(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/g2.h b/libs/nitro/include/nitro/g2.h new file mode 100644 index 00000000..3c5d2ec0 --- /dev/null +++ b/libs/nitro/include/nitro/g2.h @@ -0,0 +1,343 @@ +#ifndef _NITRO_G2_H +#define _NITRO_G2_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/fx.h" +#include "nitro/gx.h" +#include "nitro/reg.h" +#include "nitro/types.h" + +void G2_SetBGAffine(u32 *reg, MtxFx22 *mtx, s32 x0, s32 y0, s32 x1, s32 y1); + +void _G2_SetBlend(u32 *reg, u32 srcPlane, u32 dstPlane, u32 srcAlpha, u32 dstAlpha); + +void *G2_GetBG2ScrPtr(void); +void *G2_GetBG3ScrPtr(void); +void *G2S_func_0001(); + +inline void G2_SetBG0Priority(u32 value) { + REG_BG0CNT = (REG_BG0CNT & ~0x3) | (value); +} + +inline void G2_SetBG1Priority(u32 value) { + REG_BG1CNT = (REG_BG1CNT & ~0x3) | (value); +} + +inline void G2_SetBG2Priority(u32 value) { + REG_BG2CNT = (REG_BG2CNT & ~0x3) | (value); +} + +inline void G2_SetBG3Priority(u32 value) { + REG_BG3CNT = (REG_BG3CNT & ~0x3) | (value); +} + +inline void G2S_SetBG0Priority(u32 value) { + REG_BG0CNT_SUB = (REG_BG0CNT_SUB & ~0x3) | (value); +} + +inline void G2S_SetBG1Priority(u32 value) { + REG_BG1CNT_SUB = (REG_BG1CNT_SUB & ~0x3) | (value); +} + +inline void G2S_SetBG2Priority(u32 value) { + REG_BG2CNT_SUB = (REG_BG2CNT_SUB & ~0x3) | (value); +} + +inline void G2S_SetBG3Priority(u32 value) { + REG_BG3CNT_SUB = (REG_BG3CNT_SUB & ~0x3) | (value); +} + +inline void G2_SetBG0Offset(u32 x, u32 y) { + REG_BG0OFS = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2_SetBG1Offset(u32 x, u32 y) { + REG_BG1OFS = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2_SetBG2Offset(u32 x, u32 y) { + REG_BG2OFS = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2_SetBG3Offset(u32 x, u32 y) { + REG_BG3OFS = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2S_SetBG0Offset(u32 x, u32 y) { + REG_BG0OFS_SUB = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2S_SetBG1Offset(u32 x, u32 y) { + REG_BG1OFS_SUB = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2S_SetBG2Offset(u32 x, u32 y) { + REG_BG2OFS_SUB = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2S_SetBG3Offset(u32 x, u32 y) { + REG_BG3OFS_SUB = (x & 0x1ff) | ((y << 16) & 0x1ff0000); +} + +inline void G2_SetBG0Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, u32) { + REG_BG0CNT = (REG_BG0CNT & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2_SetBG1Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, u32) { + REG_BG1CNT = (REG_BG1CNT & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2_SetBG2Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, u32) { + REG_BG2CNT = (REG_BG2CNT & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2_SetBG3Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, u32) { + REG_BG3CNT = (REG_BG3CNT & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2S_SetBG0Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, + u32) { + REG_BG0CNT_SUB = (REG_BG0CNT_SUB & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2S_SetBG1Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, + u32) { + REG_BG1CNT_SUB = (REG_BG1CNT_SUB & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2S_SetBG2Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, + u32) { + REG_BG2CNT_SUB = (REG_BG2CNT_SUB & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2S_SetBG3Control(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase, + u32) { + REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x43) | (scrSize << 0xe) | (colMode << 0x7) | (scrBase << 0x8) | (charBase << 0x2); +} + +inline void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG2CNT = (REG_BG2CNT & 0x43) | (scrSize << 0xe) | 0x80 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG3CNT = (REG_BG3CNT & 0x43) | (scrSize << 0xe) | 0x80 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG2CNT_SUB = (REG_BG2CNT_SUB & 0x43) | (scrSize << 0xe) | 0x80 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x43) | (scrSize << 0xe) | 0x80 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG2CNT = (REG_BG2CNT & 0x43) | (scrSize << 0xe) | 0x84 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG3CNT = (REG_BG3CNT & 0x43) | (scrSize << 0xe) | 0x84 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG2CNT_SUB = (REG_BG2CNT_SUB & 0x43) | (scrSize << 0xe) | 0x84 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp scrSize, GXBGAreaOver areaOver, GXBGBmpScrBase scrBase) { + REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x43) | (scrSize << 0xe) | 0x84 | (scrBase << 0x8) | (areaOver << 0xd); +} + +inline void G2_SetBG2ControlText(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase) { + G2_SetBG2Control(scrSize, colMode, scrBase, charBase, 0); +} + +inline void G2_SetBG3ControlText(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase) { + G2_SetBG3Control(scrSize, colMode, scrBase, charBase, 0); +} + +inline void G2S_SetBG2ControlText(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase) { + G2S_SetBG2Control(scrSize, colMode, scrBase, charBase, 0); +} + +inline void G2S_SetBG3ControlText(GXBGScrSizeText scrSize, GXBGColorMode colMode, GXBGScrBase scrBase, GXBGCharBase charBase) { + G2S_SetBG3Control(scrSize, colMode, scrBase, charBase, 0); +} + +inline void G2_SetBG2Affine(MtxFx22 *mtx, u32 param2, u32 param3, u32 param4, u32 param5) { + G2_SetBGAffine((u32 *) ®_BG2PA, mtx, param2, param3, param4, param5); +} + +inline void G2_SetBG3Affine(MtxFx22 *mtx, u32 param2, u32 param3, u32 param4, u32 param5) { + G2_SetBGAffine((u32 *) ®_BG3PA, mtx, param2, param3, param4, param5); +} + +inline void G2S_SetBG2Affine(MtxFx22 *mtx, u32 param2, u32 param3, u32 param4, u32 param5) { + G2_SetBGAffine((u32 *) ®_BG2PA_SUB, mtx, param2, param3, param4, param5); +} + +inline void G2S_SetBG3Affine(MtxFx22 *mtx, u32 param2, u32 param3, u32 param4, u32 param5) { + G2_SetBGAffine((u32 *) ®_BG3PA_SUB, mtx, param2, param3, param4, param5); +} + +inline void G2_ChangeBlendAlpha(u32 param1, u32 param2) { + REG_BLDALPHA = param1 | (param2 << 8); +} + +inline void G2S_ChangeBlendAlpha(u32 param1, u32 param2) { + REG_BLDALPHA_SUB = param1 | (param2 << 8); +} + +inline void G2_BG0Mosaic(BOOL flag) { + if (flag) { + REG_BG0CNT |= 0x40; + } else { + REG_BG0CNT &= ~0x40; + } +} + +inline void G2_BG1Mosaic(BOOL flag) { + if (flag) { + REG_BG1CNT |= 0x40; + } else { + REG_BG1CNT &= ~0x40; + } +} + +inline void G2_BG2Mosaic(BOOL flag) { + if (flag) { + REG_BG2CNT |= 0x40; + } else { + REG_BG2CNT &= ~0x40; + } +} + +inline void G2_BG3Mosaic(BOOL flag) { + if (flag) { + REG_BG3CNT |= 0x40; + } else { + REG_BG3CNT &= ~0x40; + } +} + +inline void G2S_BG0Mosaic(BOOL flag) { + if (flag) { + REG_BG0CNT_SUB |= 0x40; + } else { + REG_BG0CNT_SUB &= ~0x40; + } +} + +inline void G2S_BG1Mosaic(BOOL flag) { + if (flag) { + REG_BG1CNT_SUB |= 0x40; + } else { + REG_BG1CNT_SUB &= ~0x40; + } +} + +inline void G2S_BG2Mosaic(BOOL flag) { + if (flag) { + REG_BG2CNT_SUB |= 0x40; + } else { + REG_BG2CNT_SUB &= ~0x40; + } +} + +inline void G2S_BG3Mosaic(BOOL flag) { + if (flag) { + REG_BG3CNT_SUB |= 0x40; + } else { + REG_BG3CNT_SUB &= ~0x40; + } +} + +inline void G2_SetBGMosaicSize(u32 width, u32 height) { + REG_MOSAIC = width | (height << 4); +} + +inline void G2S_SetBGMosaicSize(u32 width, u32 height) { + REG_MOSAIC_SUB = width | (height << 4); +} + +inline void G2_SetOBJMosaicSize(u32 width, u32 height) { + REG_OBJMOSAIC = width | (height << 4); +} + +inline void G2S_SetOBJMosaicSize(u32 width, u32 height) { + REG_OBJMOSAIC_SUB = width | (height << 4); +} + +inline void G2_BlendNone() { + REG_BLDCNT = 0; +} + +inline void G2S_BlendNone() { + REG_BLDCNT_SUB = 0; +} + +inline void G2_SetBlendAlpha(u32 srcPlane, u32 dstPlane, u32 srcAlpha, u32 dstAlpha) { + _G2_SetBlend((u32 *) ®_BLDCNT, srcPlane, dstPlane, srcAlpha, dstAlpha); +} + +inline void G2S_SetBlendAlpha(u32 srcPlane, u32 dstPlane, u32 srcAlpha, u32 dstAlpha) { + _G2_SetBlend((u32 *) ®_BLDCNT_SUB, srcPlane, dstPlane, srcAlpha, dstAlpha); +} + +inline void G2_GetOBJPosition(GXOamAttr *oam, u32 *x, u32 *y) { + *x = (oam->attr01 & 0x1ff0000) >> 16; + *y = oam->attr01 & 0xff; +} + +inline void G2_SetOBJPosition(GXOamAttr *oam, u32 x, u32 y) { + oam->attr01 = (oam->attr01 & 0xfe00ff00) | (y & 0xff) | (x << 0x17 >> 0x7); +} + +inline u32 G2_GetOBJCharName(GXOamAttr *oam) { + return oam->attr2 & 0x3ff; +} + +inline void G2_SetOBJCharName(volatile GXOamAttr *oam, u32 name) { + oam->attr2 = (oam->attr2 & -0x400) | (name); +} + +inline u32 G2_GetOBJColorParam(GXOamAttr *oam) { + return (oam->attr2 & 0xf000) >> 0xc; +} + +// Defined as macro as sometimes `oam` is volatile and other times not +#define G2_GetOBJMode(oam) (GXOamMode)(((oam)->attr01 & 0xc00) >> 0xa) +// inline GXOamMode G2_GetOBJMode(volatile GXOamAttr *oam) { +// return ((oam)->attr01 & 0xc00) >> 0xa; +// } + +inline void G2_SetOBJMode(GXOamAttr *oam, GXOamMode mode, u32 color) { + oam->attr01 = (oam->attr01 & ~0xc00) | (mode << 0xa); + oam->attr2 = (oam->attr2 & ~0xf000) | (color << 0xc); +} + +inline void G2_SetOBJPriority(GXOamAttr *oam, u32 prio) { + // no implementation found +} + +inline void G2_SetOBJAttr(GXOamAttr *oam, u32 x, u32 y, u32 param4, GXOamMode mode, BOOL param6, u32 effect, u32 shape, + u32 color, u32 param10, u32 param11, u32 param12) { + // Unused: param4, param6, effect, param11, param12 + + // c1ff0cff + // 3 bits at 0x8 + // 4 bits at 0xc + // 5 bits at 0x19 + oam->attr01 = (y & 0xff) | (mode << 0xa) | (shape << 0x1e) | ((x << 0x17) >> 0x7); + // f3ff + // 2 bits at 0xa + oam->attr2 = param10 | (color << 0xc); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/g3.h b/libs/nitro/include/nitro/g3.h new file mode 100644 index 00000000..87d814ce --- /dev/null +++ b/libs/nitro/include/nitro/g3.h @@ -0,0 +1,122 @@ +#ifndef _NITRO_G3_H +#define _NITRO_G3_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/fx.h" +#include "nitro/gx.h" +#include "nitro/types.h" + +#define G3OP_TEXCOORD 0x1 // guess + +void G3X_Init(void); +void G3X_InitTable(void); +void G3X_InitMtxStack(void); +void G3X_Reset(void); +void G3X_SetClearColor(u32 rgb, u32 a, u32 param3, u32 param4, BOOL param5); + +inline void G3_TexImageParam(GXTexFmt fmt, u32 gen, GXTexSizeS sizeS, GXTexSizeT sizeT, u32 repeat, u32 flip, + GXTexPlttColor0 color0, u32 addr) { + // Unclear where repeat and flip should go + // GGCFFFTT_TSSSxAAA_AAAAAAAA_AAAAAxxx + // G: gen + // C: color0 + // F: fmt + // T: sizeT + // S: sizeS + // A: addr + REG_GFX_FIFO_TEXTURE_PARAM = + (fmt << 0x1a) | (addr << 0x3) | (gen << 0x1e) | (sizeS << 0x14) | (sizeT << 0x17) | (color0 << 0x1d); +} +inline void G3_TexPlttBase(u32 addr, GXTexFmt fmt) { + REG_GFX_FIFO_TEXTURE_PALETTE = addr >> (4 - (fmt == 2)); +} + +inline void G3_PolygonAttr(u32 lightMask, u32 polygonMode, u32 cull, u32 id, u32 alpha, u32 param6) { + // Unclear where lightMask, cull and param6 should go + // xxIIIIII_xxxAAAAA_xxxxxxxx_PPxxxxxx + // I: id + // A: alpha + // P: polygonMode + REG_GFX_FIFO_POLYGON_ATTR = (id << 0x18) | (polygonMode << 0x6) | (alpha << 0x10); +} + +inline void G3_PushMtx(void) { + REG_GFX_FIFO_MATRIX_PUSH = 0; +} +inline void G3_Translate(fx32 x, fx32 y, fx32 z) { + REG_GFX_FIFO_MATRIX_TRANSLATE = x; + REG_GFX_FIFO_MATRIX_TRANSLATE = y; + REG_GFX_FIFO_MATRIX_TRANSLATE = z; +} +inline void G3_ViewPort(u32 left, u32 top, u32 right, u32 bottom) { + // Unclear how to combine the arguments + // left = 0, top = 0, right = 255, bottom = 191 => 0x8000 + REG_GFX_FIFO_VIEWPORT = 0xbfff0000; +} +void _G3_Ortho(fx32 top, fx32 bottom, fx32 left, fx32 right, fx32 near, fx32 far, fx32 param7, BOOL param8, void *param9); +inline void G3_Ortho(fx32 top, fx32 bottom, fx32 left, fx32 right, fx32 near, fx32 far, void *param7) { + _G3_Ortho(top, bottom, left, right, near, far, FX32_ONE, TRUE, param7); +} +inline void G3_StoreMtx(u32 param1) { + REG_GFX_FIFO_MATRIX_STORE = param1; +} +void _G3_LookAt(VecFx32 *camera, VecFx32 *up, VecFx32 *lookAt, BOOL param4, void *param5); +inline void G3_LookAt(VecFx32 *camera, VecFx32 *up, VecFx32 *lookAt, void *param4) { + _G3_LookAt(camera, up, lookAt, true, param4); +} +inline void G3_MtxMode(u32 mode) { + REG_GFX_FIFO_MATRIX_MODE = mode; +} +inline void G3_Identity(void) { + REG_GFX_FIFO_MATRIX_IDENTITY = 0; +} +inline void G3_PopMtx(u32 param1) { + REG_GFX_FIFO_MATRIX_POP = param1; +} + +inline void G3_Begin(u32 shape) { + REG_GFX_FIFO_POLYGONS_BEGIN = shape; +} +inline void G3_Color(u16 color) { + REG_GFX_FIFO_VERTEX_COLOR = color; +} +inline void G3_Direct1(u32 op, GXSt texCoord) { + switch (op) { + case G3OP_TEXCOORD: + REG_GFX_FIFO_VERTEX_TEXCOORD = texCoord; + break; + } +} +inline void G3_Vtx(u16 x, u16 y, u16 z) { + REG_GFX_FIFO_VERTEX_16 = x | (y << 0x10); + REG_GFX_FIFO_VERTEX_16 = z; +} +inline void G3_End(void) { + REG_GFX_FIFO_POLYGONS_END = 0; +} + +inline void G3_SwapBuffers(u32 sortMode, u32 bufferMode) { + // Unclear what values these macros have and how they are meant to be combined + // GX_SORTMODE_MANUAL | GX_BUFFERMODE_Z == 0x1 + REG_GFX_FIFO_SWAP_BUFFERS = 0x1; +} + +inline BOOL G3X_IsGeometryBusy(void) { + return REG_GFX_STATUS & 0x8000000; +} + +inline void G3X_AntiAlias(BOOL param1) { + REG_DISP3DCNT = REG_DISP3DCNT & ~0x3000 | (param1 << 0x4); +} +inline void G3X_AlphaBlend(BOOL param1) { + REG_DISP3DCNT = REG_DISP3DCNT & ~0x3000 | (param1 << 0x3); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/gx.h b/libs/nitro/include/nitro/gx.h new file mode 100644 index 00000000..1b203c9e --- /dev/null +++ b/libs/nitro/include/nitro/gx.h @@ -0,0 +1,423 @@ +#ifndef _NITRO_GX_H +#define _NITRO_GX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/reg.h" +#include "nitro/types.h" + +#define GX_POWER_ALL 0x20e + +#define GX_DISP_SELECT_MAIN_SUB 0x8000 +#define GX_DISP_SELECT_SUB_MAIN 0 +#define GX_DISPMODE_GRAPHICS 1 +#define GX_DISPMODE_VRAM_C 0xa +#define GX_DISPMODE_VRAM_D 0xe + +#define GX_VRAM_LCDC_ALL 0x1ff +#define GX_VRAM_LCDC_C 0x4 +#define GX_VRAM_LCDC_D 0x8 + +#define GX_VRAM_BG_NONE ((GXVRamBG) 0) +#define GX_VRAM_BG_128_A ((GXVRamBG) 0x1) +#define GX_VRAM_BG_128_B ((GXVRamBG) 0x2) +#define GX_VRAM_BG_128_C ((GXVRamBG) 0x4) +#define GX_VRAM_BG_128_D ((GXVRamBG) 0x8) +#define GX_VRAM_BG_256_AB ((GXVRamBG) 0x3) +#define GX_VRAM_BG_384_ABC ((GXVRamBG) 0x7) +#define GX_VRAM_BG_384_ABD ((GXVRamBG) 0xb) +#define GX_VRAM_BG_512_ABCD ((GXVRamBG) 0xf) + +#define GX_VRAM_SUB_BG_NONE ((GXVRamBG) 0) +#define GX_VRAM_SUB_BG_32_H ((GXVRamBG) 0x80) +#define GX_VRAM_SUB_BG_48_HI ((GXVRamBG) 0x180) +#define GX_VRAM_SUB_BG_128_C ((GXVRamBG) 0x4) + +#define GX_VRAM_OBJ_NONE ((GXVRamOBJ) 0) +#define GX_VRAM_OBJ_128_A ((GXVRamOBJ) 0x1) +#define GX_VRAM_OBJ_128_B ((GXVRamOBJ) 0x2) +#define GX_VRAM_OBJ_128_C ((GXVRamOBJ) 0x4) +#define GX_VRAM_OBJ_128_D ((GXVRamOBJ) 0x8) +#define GX_VRAM_OBJ_64_E ((GXVRamOBJ) 0x10) +#define GX_VRAM_OBJ_16_F ((GXVRamOBJ) 0x20) +#define GX_VRAM_OBJ_16_G ((GXVRamOBJ) 0x40) + +#define GX_VRAM_SUB_OBJ_NONE ((GXVRamOBJ) 0) +#define GX_VRAM_SUB_OBJ_16_I ((GXVRamOBJ) 0x100) +#define GX_VRAM_SUB_OBJ_128_D ((GXVRamOBJ) 0x8) + +#define GX_VRAM_BGEXTPLTT_01_F 0x20 +#define GX_VRAM_BGEXTPLTT_0123_FG 0x60 +#define GX_VRAM_SUB_BGEXTPLTT_0123_H 0x80 +#define GX_VRAM_SUB_OBJEXTPLTT_0_I 0x100 +#define GX_VRAM_OBJEXTPLTT_0_F 0x20 +#define GX_VRAM_OBJEXTPLTT_0_G 0x40 + +#define GX_VRAM_TEX_01_AB 0x3 + +#define GX_VRAM_TEXPLTT_0123_E 0x10 + +#define GX_PLANEMASK_NONE 0 +#define GX_PLANEMASK_BG0 0x1 +#define GX_PLANEMASK_BG1 0x2 +#define GX_PLANEMASK_BG2 0x4 +#define GX_PLANEMASK_BG3 0x8 +#define GX_PLANEMASK_OBJ 0x10 + +#define GX_BGCHAROFFSET_0x00000 0 +#define GX_BGSCROFFSET_0x00000 0 +#define GX_BGMODE_0 0 +#define GX_BGMODE_3 3 +#define GX_BGMODE_5 5 +#define GX_BG0_AS_2D 0 +#define GX_BG_SCRSIZE_TEXT_256x256 0 +#define GX_BG_SCRSIZE_256BMP_128x128 ((GXBGScrSize256Bmp) 0) +#define GX_BG_SCRSIZE_256BMP_256x256 ((GXBGScrSize256Bmp) 1) +#define GX_BG_SCRSIZE_256BMP_512x256 ((GXBGScrSize256Bmp) 2) +#define GX_BG_SCRSIZE_256BMP_512x512 ((GXBGScrSize256Bmp) 3) +#define GX_BG_SCRSIZE_DCBMP_128x128 ((GXBGScrSizeDcBmp) 0) +#define GX_BG_SCRSIZE_DCBMP_256x256 ((GXBGScrSizeDcBmp) 1) +#define GX_BG_SCRSIZE_DCBMP_512x256 ((GXBGScrSizeDcBmp) 2) +#define GX_BG_SCRSIZE_DCBMP_512x512 ((GXBGScrSizeDcBmp) 3) +#define GX_BG_AREAOVER_XLU ((GXBGAreaOver) 0) +#define GX_BG_AREAOVER_REPEAT ((GXBGAreaOver) 1) +#define GX_BG_BMPSCRBASE_0x00000 ((GXBGBmpScrBase) 0) +#define GX_BG_BMPSCRBASE_0x04000 ((GXBGBmpScrBase) 1) +#define GX_BG_BMPSCRBASE_0x08000 ((GXBGBmpScrBase) 2) +#define GX_BG_BMPSCRBASE_0x0c000 ((GXBGBmpScrBase) 3) +#define GX_BG_BMPSCRBASE_0x10000 ((GXBGBmpScrBase) 4) +#define GX_BG_BMPSCRBASE_0x14000 ((GXBGBmpScrBase) 5) +#define GX_BG_BMPSCRBASE_0x18000 ((GXBGBmpScrBase) 6) +#define GX_BG_BMPSCRBASE_0x1c000 ((GXBGBmpScrBase) 7) +#define GX_BG_BMPSCRBASE_0x20000 ((GXBGBmpScrBase) 8) +#define GX_BG_BMPSCRBASE_0x24000 ((GXBGBmpScrBase) 9) +#define GX_BG_BMPSCRBASE_0x28000 ((GXBGBmpScrBase) 10) +#define GX_BG_BMPSCRBASE_0x2c000 ((GXBGBmpScrBase) 11) +#define GX_BG_BMPSCRBASE_0x30000 ((GXBGBmpScrBase) 12) +#define GX_BG_BMPSCRBASE_0x34000 ((GXBGBmpScrBase) 13) +#define GX_BG_BMPSCRBASE_0x38000 ((GXBGBmpScrBase) 14) +#define GX_BG_BMPSCRBASE_0x3c000 ((GXBGBmpScrBase) 15) +#define GX_BG_BMPSCRBASE_0x40000 ((GXBGBmpScrBase) 16) +#define GX_BG_BMPSCRBASE_0x44000 ((GXBGBmpScrBase) 17) +#define GX_BG_BMPSCRBASE_0x48000 ((GXBGBmpScrBase) 18) +#define GX_BG_BMPSCRBASE_0x4c000 ((GXBGBmpScrBase) 19) +#define GX_BG_BMPSCRBASE_0x50000 ((GXBGBmpScrBase) 20) +#define GX_BG_BMPSCRBASE_0x54000 ((GXBGBmpScrBase) 21) +#define GX_BG_BMPSCRBASE_0x58000 ((GXBGBmpScrBase) 22) +#define GX_BG_BMPSCRBASE_0x5c000 ((GXBGBmpScrBase) 23) +#define GX_BG_BMPSCRBASE_0x60000 ((GXBGBmpScrBase) 24) +#define GX_BG_BMPSCRBASE_0x64000 ((GXBGBmpScrBase) 25) +#define GX_BG_BMPSCRBASE_0x68000 ((GXBGBmpScrBase) 26) +#define GX_BG_BMPSCRBASE_0x6c000 ((GXBGBmpScrBase) 27) +#define GX_BG_BMPSCRBASE_0x70000 ((GXBGBmpScrBase) 28) +#define GX_BG_BMPSCRBASE_0x74000 ((GXBGBmpScrBase) 29) +#define GX_BG_BMPSCRBASE_0x78000 ((GXBGBmpScrBase) 30) +#define GX_BG_BMPSCRBASE_0x7c000 ((GXBGBmpScrBase) 31) +#define GX_BG_COLORMODE_16 0 +#define GX_BG_CHARBASE_0x00000 0 +#define GX_BG_SCRBASE_0x0000 0 +#define GX_BG_EXTPLTT_01 1 + +#define GX_OBJVRAMMODE_CHAR_1D_32K 0x10 +#define GX_OBJVRAMMODE_CHAR_1D_64K 0x100010 +#define GX_OBJVRAMMODE_CHAR_1D_128K 0x200010 +#define GX_OBJVRAMMODE_CHAR_1D_256K 0x300010 + +#define GX_BLEND_PLANEMASK_NONE 0 +#define GX_BLEND_PLANEMASK_BG0 0x1 +#define GX_BLEND_PLANEMASK_BG1 0x2 +#define GX_BLEND_PLANEMASK_BG2 0x4 +#define GX_BLEND_PLANEMASK_BG3 0x8 +#define GX_BLEND_PLANEMASK_OBJ 0x10 +#define GX_BLEND_PLANEMASK_BD 0x20 + +#define GX_OAM_MODE_XLU 1 +#define GX_OAM_MODE_BITMAPOBJ 3 + +#define GX_OAM_EFFECT_NONE 0 + +#define GX_OAM_SHAPE_64x64 0x3 + +#define GX_OAM_COLOR_16 0xf + +#define GX_TEXSIZE_S8 0 +#define GX_TEXSIZE_S16 0x1 +#define GX_TEXSIZE_S32 0x2 +#define GX_TEXSIZE_S64 0x3 +#define GX_TEXSIZE_S128 0x4 +#define GX_TEXSIZE_S256 0x5 +#define GX_TEXSIZE_S512 0x6 +#define GX_TEXSIZE_S1024 0x7 +#define GX_TEXSIZE_T8 0 +#define GX_TEXSIZE_T16 0x1 +#define GX_TEXSIZE_T32 0x2 +#define GX_TEXSIZE_T64 0x3 +#define GX_TEXSIZE_T128 0x4 +#define GX_TEXSIZE_T256 0x5 +#define GX_TEXSIZE_T512 0x6 +#define GX_TEXSIZE_T1024 0x7 + +#define GX_TEXFMT_NONE 0 +#define GX_TEXFMT_PLTT4 0x2 +#define GX_TEXFMT_PLTT16 0x3 +#define GX_TEXFMT_PLTT256 0x4 +#define GX_TEXFMT_DIRECT 0x7 + +#define GX_TEXPLTTCOLOR0_USE 0 +#define GX_TEXPLTTCOLOR0_TRNS 0x1 + +#define GX_TEXGEN_NONE 0 +#define GX_TEXGEN_TEXCOORD 0x1 + +#define GX_TEXREPEAT_NONE 0 + +#define GX_TEXFLIP_NONE 0 + +#define GX_LIGHTMASK_NONE 0 + +#define GX_POLYGONMODE_MODULATE 0x3 + +#define GX_CULL_NONE 0 + +#define GX_BEGIN_QUADS 0x1 + +#define GX_RGB(r, g, b) ((r) | ((g) << 0x5) | ((b) << 0xa)) + +#define GX_CAPTURE_SIZE_256x192 -1 // unknown value +#define GX_CAPTURE_MODE_A -1 // unknown value +#define GX_CAPTURE_SRCA_2D3D -1 // unknown value +#define GX_CAPTURE_DEST_VRAM_C_0x00000 0x2 +#define GX_CAPTURE_DEST_VRAM_D_0x00000 0x3 + +#define GX_SORTMODE_MANUAL -1 // unknown value + +#define GX_BUFFERMODE_Z -1 // unknown value + +#define GX_MTXMODE_POSITION_VECTOR 0x2 +#define GX_MTXMODE_TEXTURE 0x3 + +typedef u32 GXVRamBG; +typedef u32 GXVRamOBJ; + +typedef struct { + u32 attr01; + union { + u16 attr2; + u32 attr23; + }; +} GXOamAttr; + +typedef u32 GXOamMode; + +typedef u32 GXBGScrSize256Bmp; +typedef u32 GXBGScrSizeDcBmp; +typedef u32 GXBGAreaOver; +typedef u32 GXBGBmpScrBase; +typedef u32 GXBGScrSizeText; +typedef u32 GXBGColorMode; +typedef u32 GXBGScrBase; +typedef u32 GXBGCharBase; + +typedef u32 GXOBJVRamModeChar; + +typedef u32 GXTexFmt; +typedef s32 GXTexSizeS; +typedef s32 GXTexSizeT; +typedef u32 GXSt; + +inline GXSt GX_ST(GXTexSizeS sizeS, GXTexSizeT sizeT) { + u16 t = sizeT << 8 >> 16; + u16 s = sizeS << 8 >> 16; + return s | (t << 16); +} + +typedef u32 GXTexPlttColor0; + +typedef u32 GXCaptureSrcB; + +typedef struct GX_UnkStruct2 { + /* 00 */ u16 unk_00; + /* 02 */ u16 unk_02; + /* 04 */ u16 unk_04; + /* 06 */ u16 unk_06; + /* 08 */ u16 unk_08; + /* 0a */ u16 unk_0a; + /* 0c */ u16 unk_0c; + /* 0e */ u16 unk_0e; + /* 10 */ u16 unk_10; + /* 12 */ u16 unk_12; + /* 14 */ u16 unk_14; + /* 16 */ u16 unk_16; + /* 18 */ u16 unk_18; + /* 1a */ +} GX_UnkStruct2; + +void GX_Init(void); +void GX_DispOff(void); +void GX_DispOn(void); + +u16 GX_VBlankIntr(BOOL); +u16 GX_HBlankIntr(BOOL); + +void GX_SetBankForLCDC(s32); +void GX_DisableBankForLCDC(void); +void GX_SetBankForBG(s32); +void GX_SetBankForOBJ(s32); +void GX_SetBankForSubBG(s32); +void GX_SetBankForSubOBJ(s32); +void GX_SetBankForTex(u32); +void GX_SetBankForTexPltt(u32); +void GX_SetGraphicsMode(u32, u32, u32); +void GXS_SetGraphicsMode(u32); + +void GX_LoadOAM(GXOamAttr *oam, u32 offset, u32 size); +void GXS_LoadOAM(GXOamAttr *oam, u32 offset, u32 size); + +void GX_LoadBG0Char(void *ptr, u32 offset, u32 size); +void GX_LoadBG0Scr(void *ptr, u32 offset, u32 size); +void GX_LoadBG1Char(void *ptr, u32 offset, u32 size); +void GX_LoadBG1Scr(void *ptr, u32 offset, u32 size); +void GX_LoadBG2Bmp(void *ptr, u32 offset, u32 size); +void GX_LoadBG2Char(void *ptr, u32 offset, u32 size); +void GX_LoadBG2Scr(void *ptr, u32 offset, u32 size); +void GX_LoadBG3Bmp(void *ptr, u32 offset, u32 size); +void GX_LoadBG3Char(void *ptr, u32 offset, u32 size); +void GX_LoadBG3Scr(void *ptr, u32 offset, u32 size); + +void GXS_LoadBG0Char(void *ptr, u32 offset, u32 size); +void GXS_LoadBG0Scr(void *ptr, u32 offset, u32 size); +void GXS_LoadBG1Char(void *ptr, u32 offset, u32 size); +void GXS_LoadBG1Scr(void *ptr, u32 offset, u32 size); +void GXS_LoadBG2Bmp(void *ptr, u32 offset, u32 size); +void GXS_LoadBG2Char(void *ptr, u32 offset, u32 size); +void GXS_LoadBG2Scr(void *ptr, u32 offset, u32 size); +void GXS_LoadBG3Bmp(void *ptr, u32 offset, u32 size); +void GXS_LoadBG3Char(void *ptr, u32 offset, u32 size); +void GXS_LoadBG3Scr(void *ptr, u32 offset, u32 size); + +void GX_LoadBGPltt(void *ptr, u32 offset, u32 size); +void GX_LoadOBJPltt(void *ptr, u32 offset, u32 size); +void GXS_LoadBGPltt(void *ptr, u32 offset, u32 size); +void GXS_LoadOBJPltt(void *ptr, u32 offset, u32 size); + +void GX_LoadOBJ(void *ptr, u32 offset, u32 size); +void GXS_LoadOBJ(void *ptr, u32 offset, u32 size); + +BOOL GX_TrySetBankForBGExtPltt(s32); +BOOL GX_TrySetBankForSubBGExtPltt(s32); +BOOL GX_TrySetBankForOBJExtPltt(s32); +BOOL GX_TrySetBankForSubOBJExtPltt(s32); +u16 GX_ResetBankForBGExtPltt(void); +u16 GX_ResetBankForSubBGExtPltt(void); +u16 GX_ResetBankForOBJExtPltt(void); +u16 GX_ResetBankForSubOBJExtPltt(void); + +void GX_BeginLoadBGExtPltt(void); +void GX_LoadBGExtPltt(void *ptr, u32 offset, u32 size); +void GX_EndLoadBGExtPltt(void); + +void GXS_BeginLoadBGExtPltt(void); +void GXS_LoadBGExtPltt(void *ptr, u32 offset, u32 size); +void GXS_EndLoadBGExtPltt(void); + +void GX_BeginLoadOBJExtPltt(void); +void GX_LoadOBJExtPltt(void *ptr, u32 offset, u32 size); +void GX_EndLoadOBJExtPltt(void); + +void GXS_BeginLoadOBJExtPltt(void); +void GXS_LoadOBJExtPltt(void *ptr, u32 offset, u32 size); +void GXS_EndLoadOBJExtPltt(void); + +void GX_BeginLoadTexPltt(void); +void GX_LoadTexPltt(void *ptr, u32 offset, u32 size); +void GX_EndLoadTexPltt(void); + +void GX_BeginLoadTex(void); +void GX_LoadTex(void *ptr, u32 offset, u32 size); +void GX_EndLoadTex(void); + +void GX_func_0008(void *, s32, s32); + +extern u16 data_020a7088; +extern u32 data_020a708c; + +extern u16 data_0216a0dc; +extern u16 data_0216a0de; +extern GX_UnkStruct2 data_0216a0e0; + +inline void GXS_DispOff(void) { + REG_DISPCNT_SUB &= ~0x10000; +} + +inline void GXS_DispOn(void) { + REG_DISPCNT_SUB |= 0x10000; +} + +inline void GX_SetPower(u32 value) { + REG_POWER_CNT = (REG_POWER_CNT & 0xFFFFFDF1) | (value); +} + +inline void GX_SetDispSelect(u32 value) { + REG_POWER_CNT = (REG_POWER_CNT & ~0x8000) | value; +} + +inline void GX_SetOBJVRamModeChar(u32 value) { + REG_DISPCNT = (REG_DISPCNT & 0xFFCFFFEF) | (value); +} + +inline void GXS_SetOBJVRamModeChar(u32 value) { + REG_DISPCNT_SUB = (REG_DISPCNT_SUB & 0xFFCFFFEF) | (value); +} + +inline u16 GX_GetVCount(void) { + return REG_VCOUNT; +} + +inline void GX_SetVisiblePlane(s32 plane) { + REG_DISPCNT = (REG_DISPCNT & ~0x1f00) | (plane << 8); +} + +inline void GXS_SetVisiblePlane(s32 plane) { + REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x1f00) | (plane << 8); +} + +inline void GX_SetBGCharOffset(u32 offset) { + REG_DISPCNT = (REG_DISPCNT & ~0x7000000) | offset; +} + +inline void GX_SetBGScrOffset(u32 offset) { + REG_DISPCNT = (REG_DISPCNT & ~0x38000000) | offset; +} + +inline void GX_SetCapture(u32 size, u32 mode, u32 srcA, GXCaptureSrcB srcB, u32 dest, u32 param6, u32 param7) { + // Unclear how to combine the arguments + // size = GX_CAPTURE_SIZE_256x192, + // mode = GX_CAPTURE_MODE_A, + // srcA = GX_CAPTURE_SRCA_2D3D, + // srcB = 0, + // dest = GX_CAPTURE_DEST_VRAM_C_0x00000, + // param6 = 16, + // param7 = 0, + // => 0x80320010 + REG_DISPCAPCNT = 0x80300010 | (dest << 0x10); +} + +inline void GXS_SetOBJVRamModeBmp(u32 mode) { + REG_DISPCNT_SUB = REG_DISPCNT_SUB & ~0x60 | ((mode & 0x3) << 5); +} + +inline void GX_SetVisibleWindows(s32 windows) { + REG_DISPCNT = (REG_DISPCNT & ~0xE000) | (windows << 13); +} + +inline void GXS_SetVisibleWindows(s32 windows) { + REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0xE000) | (windows << 13); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/hw.h b/libs/nitro/include/nitro/hw.h new file mode 100644 index 00000000..d2348103 --- /dev/null +++ b/libs/nitro/include/nitro/hw.h @@ -0,0 +1,39 @@ +#ifndef _NITRO_HW_H +#define _NITRO_HW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define HW_PLTT ((void *) 0x05000000) +#define HW_PLTT_SIZE 0x400 + +#define HW_DB_PLTT ((void *) 0x05000400) +#define HW_DB_PLTT_SIZE 0x400 + +#define HW_BG_VRAM ((void *) 0x06000000) +#define HW_BG_VRAM_SIZE // TODO + +#define HW_DB_BG_VRAM ((void *) 0x06200000) +#define HW_DB_BG_VRAM_SIZE // TODO + +#define HW_OBJ_VRAM ((void *) 0x06400000) +#define HW_OBJ_VRAM_SIZE // TODO + +#define HW_DB_OBJ_VRAM ((void *) 0x06600000) +#define HW_DB_OBJ_VRAM_SIZE // TODO + +#define HW_LCDC_VRAM ((void *) 0x06800000) +#define HW_LCDC_VRAM_SIZE 0xA4000 + +#define HW_OAM ((void *) 0x07000000) +#define HW_OAM_SIZE 0x400 + +#define HW_DB_OAM ((void *) 0x07000400) +#define HW_DB_OAM_SIZE 0x400 + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index 88c8be39..5bc42aba 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -4,6 +4,8 @@ #include "global.h" #include "types.h" +#include + #if __MWERKS__ #define Vec2_Set(a, dst) \ { \ @@ -45,18 +47,13 @@ extern "C" { #define CLAMP(x, min, max) ((x) > (max) ? (max) : (x) < (min) ? (min) : (x)) #define CLAMP2(x, min, max) ((x) > (max) ? (max) : (x) >= (min) ? (x) : (min)) -// Q20.12 fixed point number -typedef s32 q20; -// Q4.12 fixed point number -typedef s16 q4; - -#define INT_TO_Q20(n) ((s32) ((n) << 12)) +#define INT_TO_Q20(n) ((s32) ((n) << FX32_SHIFT)) #define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4)) #define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2)) #define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1))) -#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12) -#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12) -#define DIV_Q20(a, b) (((a) << 12) / (b)) +#define ROUND_Q20(n) (((s32) (n) + 0x800) >> FX32_SHIFT) +#define MUL_Q20(a, b) (fx32)((((s64) (a)) * ((s64) (b)) + 0x800) >> FX32_SHIFT) +#define DIV_Q20(a, b) (((a) << FX32_SHIFT) / (b)) #define DEG_TO_ANG(n) ((n) * 0x10000 / 360) #define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) @@ -67,38 +64,17 @@ typedef s16 q4; typedef union Vec2p { struct { - /* 0 */ q20 x; - /* 4 */ q20 y; + /* 0 */ fx32 x; + /* 4 */ fx32 y; /* 8 */ }; - q20 coords[2]; + fx32 coords[2]; } Vec2p; #define Vec2p_Add(a, b, dst) Vec2_Add(Vec2p, a, b, dst) #define Vec2p_Sub(a, b, dst) Vec2_Sub(Vec2p, a, b, dst) #define Vec2p_Set(a, dst) Vec2_Set(Vec2p, a, dst) -#define Vec2p_Clear(dst) Vec2_Clear(q20, dst) - -typedef union Vec3p { - struct { - /* 0 */ q20 x; - /* 4 */ q20 y; - /* 8 */ q20 z; - /* C */ - }; - q20 coords[3]; -} Vec3p; - -typedef union Vec4p { - struct { - /* 00 */ q20 x; - /* 04 */ q20 y; - /* 08 */ q20 z; - /* 0C */ q20 w; - /* 10 */ - }; - q20 coords[4]; -} Vec4p; +#define Vec2p_Clear(dst) Vec2_Clear(fx32, dst) typedef struct Mat2p { /* 00 */ Vec2p xColumn; @@ -107,25 +83,25 @@ typedef struct Mat2p { } Mat2p; typedef struct Mat3p { - /* 00 */ Vec3p xColumn; - /* 0C */ Vec3p yColumn; - /* 18 */ Vec3p zColumn; + /* 00 */ VecFx32 xColumn; + /* 0C */ VecFx32 yColumn; + /* 18 */ VecFx32 zColumn; /* 24 */ } Mat3p; typedef struct Mat4x3p { - /* 00 */ Vec3p xColumn; - /* 0C */ Vec3p yColumn; - /* 18 */ Vec3p zColumn; - /* 24 */ Vec3p wColumn; + /* 00 */ VecFx32 xColumn; + /* 0C */ VecFx32 yColumn; + /* 18 */ VecFx32 zColumn; + /* 24 */ VecFx32 wColumn; /* 30 */ } Mat4x3p; typedef struct Mat4p { - /* 00 */ Vec4p xColumn; - /* 10 */ Vec4p yColumn; - /* 20 */ Vec4p zColumn; - /* 30 */ Vec4p wColumn; + /* 00 */ MtxFx22 xColumn; + /* 10 */ MtxFx22 yColumn; + /* 20 */ MtxFx22 zColumn; + /* 30 */ MtxFx22 wColumn; /* 40 */ } Mat4p; @@ -148,85 +124,85 @@ void StartDivision64By32(u32 a, u32 b); u32 CoDivide32(u32 a, u32 b); u32 CoRemainder(u32 a, u32 b); -bool Approach(unk32 *src, unk32 dest, unk32 step); -bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); -extern q4 gSinCosTable[]; +bool Approach(s32 *src, s32 dest, s32 step); +bool Approach_thunk(s32 *src, s32 dest, s32 step); +extern fx16 gSinCosTable[]; -extern const Vec3p gVec3p_ZERO; +extern const VecFx32 gVecFx32_ZERO; -void Vec3p_Add(Vec3p *a, const Vec3p *b, Vec3p *out); -void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); -q20 Vec3p_Dot(Vec3p *a, Vec3p *b); -void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); -q20 Vec3p_Length(Vec3p *a); -void Vec3p_Normalize(Vec3p *vec, Vec3p *out); -void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); -q20 Vec3p_Distance(Vec3p *a, Vec3p *b); -bool Vec3p_TryNormalize(Vec3p *vec); -q20 Vec3p_DistanceSquared(Vec3p *a, Vec3p *b); -void Vec3p_Scale(Vec3p *vec, q20 scale); -bool Vec3p_CalculateNormal(Vec3p *vec, Vec3p *a, Vec3p *b, Vec3p *c); +void VecFx32_Add(VecFx32 *a, const VecFx32 *b, VecFx32 *out); +void VecFx32_Sub(VecFx32 *a, VecFx32 *b, VecFx32 *out); +fx32 VecFx32_Dot(VecFx32 *a, VecFx32 *b); +void VecFx32_Cross(VecFx32 *a, VecFx32 *b, VecFx32 *out); +fx32 VecFx32_Length(VecFx32 *a); +void VecFx32_Normalize(VecFx32 *vec, VecFx32 *out); +void VecFx32_Axpy(fx32 a, VecFx32 *x, VecFx32 *y, VecFx32 *out); +fx32 VecFx32_Distance(VecFx32 *a, VecFx32 *b); +bool VecFx32_TryNormalize(VecFx32 *vec); +fx32 VecFx32_DistanceSquared(VecFx32 *a, VecFx32 *b); +void VecFx32_Scale(VecFx32 *vec, fx32 scale); +bool VecFx32_CalculateNormal(VecFx32 *vec, VecFx32 *a, VecFx32 *b, VecFx32 *c); -static inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) { +static inline void VecFx32_Rotate(VecFx32 *vec, fx32 sin, fx32 cos, VecFx32 *out) { out->x += MUL_Q20(vec->z, sin); out->z += MUL_Q20(vec->z, cos); out->x += MUL_Q20(vec->x, cos); out->z += MUL_Q20(vec->x, -sin); } -static inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) { - q20 z = vec->z; - q20 x = vec->x; +static inline void VecFx32_CopyXZ(VecFx32 *vec, VecFx32 *out) { + fx32 z = vec->z; + fx32 x = vec->x; out->x = x; out->y = 0; out->z = z; } -static inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) { +static inline void VecFx32_Copy(VecFx32 *vec, VecFx32 *out) { out->x = vec->x; out->y = vec->y; out->z = vec->z; } -static inline void Vec3p_Init(q20 x, q20 y, q20 z, Vec3p *dst) { +static inline void VecFx32_Init(fx32 x, fx32 y, fx32 z, VecFx32 *dst) { dst->x = x; dst->y = y; dst->z = z; } void Mat2p_InitIdentity(Mat2p *m); -void Mat2p_InitRotation(Mat2p *m, q20 sin, q20 cos); +void Mat2p_InitRotation(Mat2p *m, fx32 sin, fx32 cos); void Mat2p_Multiply(Mat2p *a, Mat2p *b, Mat2p *out); void Mat3p_InitIdentity(Mat3p *m); void Mat3p_CopyToMat4x3p(Mat3p *m, Mat4x3p *out); -void Mat3p_InitScale(Mat3p *m, q20 x, q20 y, q20 z); -void Mat3p_ScaleColumns(Mat3p *m, Mat3p *out, q20 x, q20 y, q20 z); -void Mat3p_InitXRotation(Mat3p *m, q20 sin, q20 cos); -void Mat3p_InitYRotation(Mat3p *m, q20 sin, q20 cos); -void Mat3p_InitZRotation(Mat3p *m, q20 sin, q20 cos); -void Mat3p_func_01ff8248(Mat3p *m, Vec3p *v, q20 scale, q20 offset); +void Mat3p_InitScale(Mat3p *m, fx32 x, fx32 y, fx32 z); +void Mat3p_ScaleColumns(Mat3p *m, Mat3p *out, fx32 x, fx32 y, fx32 z); +void Mat3p_InitXRotation(Mat3p *m, fx32 sin, fx32 cos); +void Mat3p_InitYRotation(Mat3p *m, fx32 sin, fx32 cos); +void Mat3p_InitZRotation(Mat3p *m, fx32 sin, fx32 cos); +void Mat3p_func_01ff8248(Mat3p *m, VecFx32 *v, fx32 scale, fx32 offset); void Mat3p_func_01ff83a0(Mat3p *a, Mat3p *b); void Mat3p_Multiply(Mat3p *a, Mat3p *b, Mat3p *out); -void Mat3p_MultiplyVec(Vec3p *v, Mat3p *m, Vec3p *out); +void Mat3p_MultiplyVec(VecFx32 *v, Mat3p *m, VecFx32 *out); void Mat4x3p_InitIdentity(Mat4x3p *m); void Mat4x3p_CopyToMat4p(Mat4x3p *m, Mat4p *out); -void Mat4x3p_func_01ff8988(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z); -void Mat4x3p_InitScale(Mat4x3p *m, q20 x, q20 y, q20 z); -void Mat4x3p_ScaleColumns(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z); -void Mat4x3p_InitXRotation(Mat4x3p *m, q20 sin, q20 cos); -void Mat4x3p_InitYRotation(Mat4x3p *m, q20 sin, q20 cos); -void Mat4x3p_InitZRotation(Mat4x3p *m, q20 sin, q20 cos); -void Mat4x3p_func_01ff8ad8(Mat4x3p *m, Vec3p *v, q20 scale, q20 offset); +void Mat4x3p_func_01ff8988(Mat4x3p *m, Mat4x3p *out, fx32 x, fx32 y, fx32 z); +void Mat4x3p_InitScale(Mat4x3p *m, fx32 x, fx32 y, fx32 z); +void Mat4x3p_ScaleColumns(Mat4x3p *m, Mat4x3p *out, fx32 x, fx32 y, fx32 z); +void Mat4x3p_InitXRotation(Mat4x3p *m, fx32 sin, fx32 cos); +void Mat4x3p_InitYRotation(Mat4x3p *m, fx32 sin, fx32 cos); +void Mat4x3p_InitZRotation(Mat4x3p *m, fx32 sin, fx32 cos); +void Mat4x3p_func_01ff8ad8(Mat4x3p *m, VecFx32 *v, fx32 scale, fx32 offset); void Mat4x3p_func_01ff8af8(Mat4x3p *a, Mat4x3p *b); void Mat4x3p_Multiply(Mat4x3p *a, Mat4x3p *b, Mat4x3p *out); -void Mat4x3p_MultiplyVec(Vec3p *v, Mat4x3p *m, Vec3p *out); +void Mat4x3p_MultiplyVec(VecFx32 *v, Mat4x3p *m, VecFx32 *out); void Mat4p_InitIdentity(Mat4p *m); void Mat4p_CopyToMat4x3p(Mat4p *m, Mat4x3p *out); -void Mat4p_InitZRotation(Mat4p *m, q20 sin, q20 cos); +void Mat4p_InitZRotation(Mat4p *m, fx32 sin, fx32 cos); void Mat4p_Multiply(Mat4p *a, Mat4p *b, Mat4p *out); #ifdef __cplusplus diff --git a/libs/nitro/include/nitro/mb.h b/libs/nitro/include/nitro/mb.h new file mode 100644 index 00000000..66628dbe --- /dev/null +++ b/libs/nitro/include/nitro/mb.h @@ -0,0 +1,64 @@ +#ifndef _NITRO_MB_H +#define _NITRO_MB_H + +#include "nitro/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define MB_USER_NAME_LENGTH 0 // nocheckin + +typedef struct { + u16 length; + u16 rssi; + u16 bssid[3]; + u16 ssidLength; + u8 ssid[32]; + u16 capaInfo; + struct { + u16 basic; + u16 support; + } rateSet; + u16 beaconPeriod; + u16 dtimPeriod; + u16 channel; + u16 cfpPeriod; + u16 cfpMaxDuration; +} MBParentBssDesc; + +typedef struct MBGameRegistry { + /* 00 */ const char *programPathName; + /* 04 */ const u16 *title; + /* 08 */ const u16 *description; + /* 0c */ const char *iconCharacterDataFile; + /* 10 */ const char *iconPaletteFile; + /* 14 */ u32 ggid; + /* 18 */ u8 numPlayers; + /* 19 */ u8 unk_19[0x3c - 0x19]; + /* 3c */ +} MBGameRegistry; + +typedef struct MBUserInfo { + // nocheckin + u16 nameLength; + char name[1]; +} MBUserInfo; + +inline BOOL MB_IsMultiBootChild(void) { + return REG_027FFC40 == 0x2; +} +inline const MBParentBssDesc *MB_GetMultiBootParentBssDesc(void) { + BOOL b = REG_027FFC40 == 2; + if (b) { + return (const MBParentBssDesc *) ®_027FFC42; + } else { + return NULL; + } +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/mi.h b/libs/nitro/include/nitro/mi.h new file mode 100644 index 00000000..652e0685 --- /dev/null +++ b/libs/nitro/include/nitro/mi.h @@ -0,0 +1,45 @@ +#ifndef _NITRO_MI_H +#define _NITRO_MI_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/types.h" + +#define MI_DMA_MAX_NUM 3 + +void MI_DmaFill32(u32, void *ptr, u8 value, u32 size); +void MI_DmaCopy16(u32, void *src, void *dst, u32 size); +void MI_DmaCopy32(u32, void *src, void *dst, u32 size); +void MI_func_0206d87c(u32, void *src, void *dst, u32 size, u32, u32); +void MI_func_0206d934(u32); +BOOL MI_IsDmaBusy(u32); + +void _MI_CpuCopy(void *src, void *dest, u32 size); +void _MI_CpuFill(u32 value, void *ptr, u32 size); +void MI_CpuFill8(void *ptr, u8 value, u32 size); +void MI_CpuCopy8(void *src, void *dst, u32 size); +void MI_CpuCopy16(void *src, void *dst, u32 size); +void MI_CpuCopy32(void *src, void *dst, u32 size); +void MI_CpuFill16(int value, void *dst, size_t size); +void MI_CpuFill32(u32 value, void *ptr, u32 size); +void MI_Swap(u32 *a, u32 *b); + +inline void MI_CpuClearFast(void *ptr, u32 size) { + _MI_CpuFill(0, ptr, size); +} + +inline void MI_CpuFillFast(void *ptr, u8 value, u32 size) { + _MI_CpuFill(value, ptr, size); +} + +inline void MI_CpuCopyFast(void *src, void *dest, u32 size) { + _MI_CpuCopy(src, dest, size); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/os.h b/libs/nitro/include/nitro/os.h new file mode 100644 index 00000000..b3c0d35b --- /dev/null +++ b/libs/nitro/include/nitro/os.h @@ -0,0 +1,238 @@ +#ifndef _NITRO_OS_H +#define _NITRO_OS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "nitro/os/context.h" +#include "nitro/os/mutex.h" +#include "nitro/os/thread.h" +#include "nitro/reg.h" + +#define OS_IE_V_BLANK 1 +#define OS_IE_H_BLANK 2 + +#define OS_ARENA_MAIN 0 +#define OS_ARENA_ITCM 3 +#define OS_ARENA_DTCM 4 +#define OS_CURRENT_HEAP_HANDLE -1 + +#define OS_MESSAGE_NOBLOCK 0 +#define OS_MESSAGE_BLOCK 1 + +#define OS_CONSOLE_ISDEBUGGER 0x40000000 +#define OS_CONSOLE_NITRO 0x80000000 + +#define OS_LOCK_ID_ERROR -3 + +#define OS_THREAD_LAUNCHER_PRIORITY 0x10 + +typedef struct OSLinkedList { + /* 00 */ void *head; + /* 04 */ void *tail; + /* 08 */ +} OSLinkedList; + +typedef struct OSMessageQueue { + /* 00 */ OSLinkedList unk_00; + /* 08 */ u32 unk_08; + /* 0c */ u32 unk_0c; + /* 10 */ u32 unk_10; + /* 14 */ u32 unk_14; + /* 18 */ u32 unk_18; + /* 1c */ u32 unk_1c; + /* 20 */ +} OSMessageQueue; + +// TODO: Maybe align is wrong? g_msgBuf in PM4 is aligned by 8 with 4 bytes of padding before it +typedef void *OSMessage ATTRIBUTE_ALIGN(8); + +typedef struct OSAlarm { + /* 00 */ u32 unk_00; + /* 04 */ u32 unk_04; + /* 08 */ u32 unk_08; + /* 0c */ u32 unk_0c; + /* 10 */ u32 unk_10; + /* 14 */ void *unk_14; + /* 18 */ void *unk_18; + /* 1c */ u32 unk_1c; + /* 20 */ u32 unk_20; + /* 24 */ u32 unk_24; + /* 28 */ u32 unk_28; + /* 2c */ +} OSAlarm; + +typedef struct OSDma { + /* 00 */ vu32 src; + /* 04 */ vu32 dst; + /* 08 */ vu32 cnt; + /* 0c */ +} OSDma; + +typedef u32 OSHeapHandle; +typedef u64 OSTime; + +typedef u32 OSIntrMode; + +void OS_Init(void); +void OS_InitThread(void); +void OS_InitTick(void); +void OS_InitAlarm(void); +void OS_Terminate(void); +void OS_SetIrqFunction(u32 type, void (*function)()); + +void OS_EnableIrqMask(u32 mask); + +void OS_WaitVBlankIntr(void); +void _OS_SpinWait(u32 param1); +inline void OS_SpinWait(u32 param1) { + _OS_SpinWait(param1 / 2); +} + +void _OS_Panic(); + +#ifdef DEBUG +void OS_TPrintf(const char *format, ...) {} +void OS_Printf(const char *format, ...) {} +void OS_TVPrintf(const char *format, va_list args) {} +void OS_TPanic(const char *message) {} +void OS_Panic(const char *message) {} +#else + #define OS_TPrintf(...) + #define OS_Printf(...) + #define OS_TVPrintf(...) + #define OS_TPanic(...) _OS_Panic() + #define OS_Panic(...) _OS_Panic() +#endif + +void OS_ResetSystem(u32); + +void *OS_InitAlloc(u32 arena, u32 addrLo, u32 addrHi, u32); +u32 OS_GetArenaLo(u32 arena); +u32 OS_GetArenaHi(u32 arena); + +void OS_SetArenaLo(u32 arena, void *addr); +void *OS_AllocFromArenaLo(u32 arena, u32 size, u32 num); + +OSHeapHandle OS_CreateHeap(u32 arena, void *addrLo, void *addrHi); +void OS_SetCurrentHeap(u32 arena, OSHeapHandle heap); +void OS_DumpHeap(u32 arena, OSHeapHandle heap); +void *OS_AllocFromHeap(u32 arena, OSHeapHandle heap, u32 size); +void OS_FreeFromHeap(u32 arena, OSHeapHandle heap, void *ptr); +u32 OS_CheckHeap(u32 arena, OSHeapHandle heap); + +void OS_Sleep(u32 time); + +#ifdef DEBUG +void OS_CheckStack(OSThread *thread); +#else + #define OS_CheckStack(thread) +#endif +void OS_func_0044(void); +s32 OS_func_0039(OSMutexQueue *param1); + +void OS_InitMessageQueue(OSMessageQueue *queue, OSMessage *buf, u32 bufLength); +void OS_ReceiveMessage(OSMessageQueue *queue, OSMessage *message, u32 block); +void OS_SendMessage(OSMessageQueue *queue, OSMessage message, u32 block); + +void OS_CreateAlarm(OSAlarm *alarm); +void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTime, OSTime, void (*callback)(void *arg), void *arg); +void OS_CancelAlarm(OSAlarm *alarm); + +OSTime OS_GetTick(void); + +u32 OS_GetConsoleType(void); + +u32 OS_GetLockID(void); + +OSIntrMode OS_DisableInterrupts(void); +u32 OS_DisableInterrupts_Irq(void); +void OS_RestoreInterrupts(u32); +void OS_EnableInterrupts(void); + +BOOL OS_func_0206d5ac(u16, u32); +void OS_func_0206d66c(u16, u32); +u32 OS_func_0206d3cc(void); + +void OS_func_0013(s32, void (*)(u32), u32); + +void OS_func_0167(void); +void OS_func_0169(u32, void (*)(u32, u32, u32)); +BOOL OS_func_0170(u32, u32); +s32 OS_func_0171(u32, u32, u32); +s32 OS_func_0174(void); +BOOL OS_func_0065(void); + +inline void OS_SetIrqCheckFlag(void) { + REG_IRQ |= 1; +} + +inline u16 OS_EnableIrq(void) { + u16 oldVal = REG_IME; + REG_IME = 1; + return oldVal; +} + +inline u32 OS_GetMainArenaLo() { + return OS_GetArenaLo(OS_ARENA_MAIN); +} +inline u32 OS_GetMainArenaHi(void) { + return OS_GetArenaHi(OS_ARENA_MAIN); +} +inline u32 OS_GetITCMArenaLo() { + return OS_GetArenaLo(OS_ARENA_ITCM); +} +inline u32 OS_GetITCMArenaHi() { + return OS_GetArenaHi(OS_ARENA_ITCM); +} +inline u32 OS_GetDTCMArenaLo() { + return OS_GetArenaLo(OS_ARENA_DTCM); +} +inline u32 OS_GetDTCMArenaHi() { + return OS_GetArenaHi(OS_ARENA_DTCM); +} + +inline void OS_SetMainArenaLo(void *addr) { + OS_SetArenaLo(OS_ARENA_MAIN, addr); +} + +inline void *OS_AllocFromMainArenaLo(u32 size, u32 num) { + return OS_AllocFromArenaLo(OS_ARENA_MAIN, size, num); +} + +inline void *OS_Alloc(u32 size) { + return OS_AllocFromHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size); +} + +inline void OS_Free(void *ptr) { + OS_FreeFromHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, ptr); +} + +inline OSTime OS_MilliSecondsToTicks(OSTime ms) { + return (ms * 33514) / 64; +} + +inline OSTime OS_MicroSecondsToTicks(OSTime us) { + return OS_MilliSecondsToTicks(us) / 1000; +} + +inline OSTime OS_TicksToMilliSeconds(OSTime ticks) { + return (ticks * 64) / 33514; +} + +inline BOOL OS_IsRunOnTwl(void) { +#ifndef IS_TWL + return false; +#else + // Probably checks some reg here +#endif +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/os/context.h b/libs/nitro/include/nitro/os/context.h index 58baad28..ef194ae5 100644 --- a/libs/nitro/include/nitro/os/context.h +++ b/libs/nitro/include/nitro/os/context.h @@ -1,5 +1,5 @@ -#ifndef NITROSDK_OS_CONTEXT_H -#define NITROSDK_OS_CONTEXT_H +#ifndef _NITRO_CONTEXT_H +#define _NITRO_CONTEXT_H #include @@ -12,4 +12,4 @@ typedef struct OSContext { /* 0x44 */ char unk_40[0x20]; } OSContext; // Size: 0x64 -#endif // NITROSDK_OS_CONTEXT_H +#endif // _NITRO_CONTEXT_H diff --git a/libs/nitro/include/nitro/os/thread.h b/libs/nitro/include/nitro/os/thread.h index e8c1d1fa..8adae05a 100644 --- a/libs/nitro/include/nitro/os/thread.h +++ b/libs/nitro/include/nitro/os/thread.h @@ -1,5 +1,5 @@ -#ifndef NITROSDK_OS_THREAD_H -#define NITROSDK_OS_THREAD_H +#ifndef _NITRO_THREAD_H +#define _NITRO_THREAD_H #include @@ -71,6 +71,7 @@ OSMutex *OS_RemoveMutexFromQueue(OSMutexQueue *queue); OSThread *OS_SelectThread(void); void OS_CreateThread(OSThread *thread, void (*func)(void *), void *arg, void *stack, u32 stackSize, u32 priority); void OS_ExitThread(void); +void OS_WakeupThreadDirect(void *param1); /// MARK: Inlines @@ -95,4 +96,4 @@ static inline u32 OS_GetThreadId(OSThread *thread) { return thread->id; } -#endif // NITROSDK_OS_THREAD_H +#endif // _NITRO_THREAD_H diff --git a/libs/nitro/include/nitro/pad.h b/libs/nitro/include/nitro/pad.h new file mode 100644 index 00000000..fbf9de75 --- /dev/null +++ b/libs/nitro/include/nitro/pad.h @@ -0,0 +1,44 @@ +#ifndef _NITRO_PAD_H +#define _NITRO_PAD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/reg.h" +#include "nitro/types.h" + +#define PAD_BUTTON_A (1 << 0) // 0x0001 +#define PAD_BUTTON_B (1 << 1) // 0x0002 +#define PAD_BUTTON_SELECT (1 << 2) // 0x0004 +#define PAD_BUTTON_START (1 << 3) // 0x0008 +#define PAD_KEY_RIGHT (1 << 4) // 0x0010 +#define PAD_KEY_LEFT (1 << 5) // 0x0020 +#define PAD_KEY_UP (1 << 6) // 0x0040 +#define PAD_KEY_DOWN (1 << 7) // 0x0080 +#define PAD_BUTTON_R (1 << 8) // 0x0100 +#define PAD_BUTTON_L (1 << 9) // 0x0200 +#define PAD_BUTTON_X (1 << 10) // 0x0400 +#define PAD_BUTTON_Y (1 << 11) // 0x0800 + +#define PAD_BUTTON_ALL \ + (PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_SELECT | PAD_BUTTON_START | PAD_BUTTON_R | PAD_BUTTON_L | PAD_BUTTON_X | \ + PAD_BUTTON_Y) + +#define PAD_KEY_ALL (PAD_KEY_RIGHT | PAD_KEY_LEFT | PAD_KEY_UP | PAD_KEY_DOWN) + +#define PAD_ALL (PAD_BUTTON_ALL | PAD_KEY_ALL) + +inline BOOL PAD_DetectFold(void) { + return (REG_PAD & 0x8000) >> 0xf; +} + +inline u16 PAD_Read(void) { + return ((REG_KEYINPUT | REG_PAD) ^ 0x2fff) & 0x2fff; +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/pm.h b/libs/nitro/include/nitro/pm.h new file mode 100644 index 00000000..f2b1a4c7 --- /dev/null +++ b/libs/nitro/include/nitro/pm.h @@ -0,0 +1,23 @@ +#ifndef _NITRO_PM_H +#define _NITRO_PM_H + +#ifdef __cplusplus +extern "C" { +#endif + +// TODO: These two may swap values +#define PM_TRIGGER_COVER_OPEN 4 +#define PM_TRIGGER_CARD 8 + +#define PM_LCD_POWER_OFF 0 +#define PM_LCD_POWER_ON 0x1 + +void PM_GoSleepMode(u32, u32, u32); + +BOOL PM_SetLCDPower(u32 power); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/include/regs.h b/libs/nitro/include/nitro/reg.h similarity index 69% rename from include/regs.h rename to libs/nitro/include/nitro/reg.h index 4ca275af..eb3a0c8f 100644 --- a/include/regs.h +++ b/libs/nitro/include/nitro/reg.h @@ -5,13 +5,21 @@ extern "C" { #endif -#include "types.h" +#include "nitro/types.h" #define REG_POWER_CNT (*(vu16 *) 0x04000304) #define REG_IME (*(vu16 *) 0x04000208) #define REG_DISPSTAT (*(vu16 *) 0x4000004) #define REG_VCOUNT (*(vu16 *) 0x04000006) +#define REG_DISP3DCNT (*(vu16 *) 0x04000060) +#define REG_DISPCAPCNT (*(vu32 *) 0x04000064) +#define REG_GFX_STATUS (*(vu32 *) 0x04000600) + +#define REG_DMA ((OSDma *) 0x040000b0) +#define REG_DMA0SAD (*(vu32 *) 0x040000b0) +#define REG_DMA0DAD (*(vu32 *) 0x040000b4) +#define REG_DMA0CNT (*(vu32 *) 0x040000b8) #define REG_VRAM_CNT_ABCD (*(vu32 *) 0x04000240) #define REG_VRAM_CNT_A (*(vu8 *) 0x04000240) @@ -26,19 +34,50 @@ extern "C" { #define REG_VRAM_CNT_H (*(vu8 *) 0x04000248) #define REG_VRAM_CNT_I (*(vu8 *) 0x04000249) -#define REG_PAD (*(u16 *) 0x027FFFA8) +#if NITRO_VERSION >= 0x05057533 + #define _BIOS_REG_BASE 0x02FFF000 +#else + #define _BIOS_REG_BASE 0x027FF000 +#endif + +#define REG_PAD (*(u16 *) (_BIOS_REG_BASE | 0xFA8)) #define REG_KEYINPUT (*(u16 *) 0x04000130) -#define REG_FRAME_COUNTER (*(u32 *) 0x027FFC3C) -#define REG_027FFC40 (*(u16 *) 0x027FFC40) -#define REG_FNT_ROM_OFFSET (*(u32 *) 0x027FFE40) -#define REG_FNT_SIZE (*(u32 *) 0x027FFE44) -#define REG_FAT_ROM_OFFSET (*(u32 *) 0x027FFE48) -#define REG_FAT_SIZE (*(u32 *) 0x027FFE4C) +#define REG_FRAME_COUNTER (*(u32 *) (_BIOS_REG_BASE | 0xC3C)) +#define REG_027FFC40 (*(u16 *) (_BIOS_REG_BASE | 0xC40)) +#define REG_027FFC42 (*(u16 *) (_BIOS_REG_BASE | 0xC42)) +#define REG_027FFDE8 (*(u32 *) (_BIOS_REG_BASE | 0xDE8)) +#define REG_027FFDEA (*(u16 *) (_BIOS_REG_BASE | 0xDEA)) +#define REG_027FFDEC (*(u32 *) (_BIOS_REG_BASE | 0xDEC)) +#define REG_FNT_ROM_OFFSET (*(u32 *) (_BIOS_REG_BASE | 0xE40)) +#define REG_FNT_SIZE (*(u32 *) (_BIOS_REG_BASE | 0xE44)) +#define REG_FAT_ROM_OFFSET (*(u32 *) (_BIOS_REG_BASE | 0xE48)) +#define REG_FAT_SIZE (*(u32 *) (_BIOS_REG_BASE | 0xE4C)) +#define REG_027FFF9C (*(u32 *) (_BIOS_REG_BASE | 0xF9C)) +#define REG_027FFFA0 (*(u32 *) (_BIOS_REG_BASE | 0xFA0)) -extern u32 _DTCM_BASE; // TODO: Provide address via LCF -#define DTCM_BASE ((u8 *) &_DTCM_BASE) -#define REG_IRQ (*(u32 *) (DTCM_BASE + 0x3FF8)) +#define REG_GFX_FIFO (*(vu32 *) 0x04000400) +#define REG_GFX_FIFO_MATRIX_MODE (*(vu32 *) 0x04000440) +#define REG_GFX_FIFO_MATRIX_PUSH (*(vu32 *) 0x04000444) +#define REG_GFX_FIFO_MATRIX_POP (*(vu32 *) 0x04000448) +#define REG_GFX_FIFO_MATRIX_STORE (*(vu32 *) 0x0400044c) +#define REG_GFX_FIFO_MATRIX_RESTORE (*(vu32 *) 0x04000450) +#define REG_GFX_FIFO_MATRIX_IDENTITY (*(vu32 *) 0x04000454) +#define REG_GFX_FIFO_MATRIX_TRANSLATE (*(vu32 *) 0x04000470) +#define REG_GFX_FIFO_VERTEX_COLOR (*(vu32 *) 0x04000480) +#define REG_GFX_FIFO_VERTEX_TEXCOORD (*(vu32 *) 0x04000488) +#define REG_GFX_FIFO_VERTEX_16 (*(vu32 *) 0x0400048c) +#define REG_GFX_FIFO_POLYGON_ATTR (*(vu32 *) 0x040004a4) +#define REG_GFX_FIFO_TEXTURE_PARAM (*(vu32 *) 0x040004a8) +#define REG_GFX_FIFO_TEXTURE_PALETTE (*(vu32 *) 0x040004ac) +#define REG_GFX_FIFO_POLYGONS_BEGIN (*(vu32 *) 0x04000500) +#define REG_GFX_FIFO_POLYGONS_END (*(vu32 *) 0x04000504) +#define REG_GFX_FIFO_SWAP_BUFFERS (*(vu32 *) 0x04000540) +#define REG_GFX_FIFO_VIEWPORT (*(vu32 *) 0x04000580) + +extern u32 __DTCM_LO; +#define DTCM_LO ((u8 *) &__DTCM_LO) +#define REG_IRQ (*(u32 *) (DTCM_LO + 0x3FF8)) #define _MAIN_REG_BASE 0x04000000 #define _SUB_REG_BASE 0x04001000 @@ -130,25 +169,7 @@ extern u32 _DTCM_BASE; // TODO: Provide address via LCF #define REG_BLDALPHA_SUB _REG_BLDALPHA(_SUB_REG_BASE) #define REG_MASTER_BRIGHT_SUB _REG_MASTER_BRIGHT(_SUB_REG_BASE) -#define REG_SWAP_BUFFERS (*(((u32 *) (_MAIN_REG_BASE | 0x00000540)))) - -#define REG_VRAM (*(((u32 *) (0x06800000)))) -#define REG_PALETTE_A (*(((u32 *) (0x05000000)))) -#define REG_PALETTE_B (*(((u32 *) (0x05000400)))) -#define REG_OAM_A (*(((u32 *) (0x07000000)))) -#define REG_OAM_B (*(((u32 *) (0x07000400)))) - -#define REG_GFX_FIFO (*(vu32 *) 0x04000400) -#define GFX_FIFO_MTX_MODE (*(vu32 *) 0x04000440) -#define GFX_FIFO_MTX_PUSH (*(vu32 *) 0x04000444) -#define GFX_FIFO_MTX_POP (*(vu32 *) 0x04000448) -#define GFX_FIFO_MTX_STORE (*(vu32 *) 0x0400044c) -#define GFX_FIFO_MTX_RESTORE (*(vu32 *) 0x04000450) -#define GFX_FIFO_MTX_IDENTITY (*(vu32 *) 0x04000454) -#define GFX_FIFO_SWAP_BUFFERS (*(vu32 *) 0x04000540) -#define GFX_FIFO_VIEWPORT (*(vu32 *) 0x04000580) -#define REG_GFX_RAM_COUNT (*(vu16 *) 0x04000604) -#define REG_GFX_RAM_COUNT_2 (*(vu16 *) 0x04000606) +#define REG_04FFF200 (*(vu32 *) 0x04fff200) #ifdef __cplusplus } // extern "C" diff --git a/libs/nitro/include/nitro/rtc.h b/libs/nitro/include/nitro/rtc.h new file mode 100644 index 00000000..b9c0dfe5 --- /dev/null +++ b/libs/nitro/include/nitro/rtc.h @@ -0,0 +1,32 @@ +#ifndef _NITRO_RTC_H +#define _NITRO_RTC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/types.h" + +typedef struct RTCDate { + u32 year; + u32 month; + u32 day; + u32 unk; +} RTCDate; + +typedef struct RTCTime { + u32 hour; + u32 minute; + u32 second; +} RTCTime; + +void RTC_Init(void); +s32 RTC_GetDate(RTCDate *date); +s32 RTC_GetTime(RTCTime *time); +u64 RTC_ConvertDateTimeToSecond(const RTCDate *date, const RTCTime *time); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/snd.h b/libs/nitro/include/nitro/snd.h new file mode 100644 index 00000000..9b9e3152 --- /dev/null +++ b/libs/nitro/include/nitro/snd.h @@ -0,0 +1,70 @@ +#ifndef _NITRO_SND_H +#define _NITRO_SND_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/types.h" + +#define SND_COMMAND_NOBLOCK 0 +#define SND_COMMAND_BLOCK 1 + +#define SND_TIMER_CLOCK 0xffb0ff + +#define SND_WAVE_FORMAT_PCM16 1 + +#define SND_CHANNEL_LOOP_REPEAT 1 + +#define SND_CHANNEL_DATASHIFT_NONE 0 + +typedef void (*SNDAlarmCallback)(void *arg); + +typedef u32 SNDCommandType; +enum SNDCommandType_ { + SNDCommandType_StartTimer = 0xc, + SNDCommandType_SetupChannelPcm = 0xe, + SNDCommandType_SetupAlarm = 0x12, + SNDCommandType_SetChannelVolume = 0x14, + SNDCommandType_SetChannelPan = 0x15, + SNDCommandType_LockChannel = 0x1a, + SNDCommandType_Unk_1d = 0x1d, +}; + +typedef struct SNDCommand { + /* 00 */ struct SNDCommand *next; + /* 04 */ SNDCommandType type; + // Usage differs based on command type + // For channels and alarms, each bit is a channel/alarm to apply to + // It can also be a pointer to memory + /* 08 */ u32 target; + /* 0c */ u32 param0; + /* 10 */ u32 param1; + /* 14 */ u32 param2; + /* 18 */ +} SNDCommand; + +void SND_Init(void); +SNDCommand *SND_RecvCommandReply(u32); +BOOL SND_FlushCommand(u32); + +void SND_StopTimer(u32 channel, u32, u32 alarm, u32); +void SND_UnlockChannel(u32 channel, u32); +void SND_LockChannel(u32 channel, u32); +void SND_SetChannelVolume(u32 channel, u32 volume, u32 datashift); +void SND_SetChannelPan(u32 channel, u32 pan); + +void SND_SetupChannelPcm(u32 channel, u32 format, void *buf, u32 loop, u32, u32 numSamples, u32 volume, u32 datashift, u32, + u32); + +void SND_SetupAlarm(u32 num, u32, u32, SNDAlarmCallback callback, void *arg); +void SND_StartTimer(u32 channel, u32, u32 num, u32); + +u32 SND_GetCurrentCommandTag(void); +void SND_WaitForCommandProc(u32 tag); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/std.h b/libs/nitro/include/nitro/std.h new file mode 100644 index 00000000..3c4f8454 --- /dev/null +++ b/libs/nitro/include/nitro/std.h @@ -0,0 +1,17 @@ +#ifndef _NITRO_STD_H +#define _NITRO_STD_H + +#ifdef __cplusplus +extern "C" { +#endif + +s32 STD_CompareNString(const char *src, const char *dst, s32 size); +s32 STD_CompareString(const char *src, const char *dst); +char *STD_CopyString(char *dst, const char *src); +char *STD_SearchString(const char *src, const char *dst); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/svc.h b/libs/nitro/include/nitro/svc.h new file mode 100644 index 00000000..5d6d6e63 --- /dev/null +++ b/libs/nitro/include/nitro/svc.h @@ -0,0 +1,14 @@ +#ifndef _NITRO_SVC_H +#define _NITRO_SVC_H + +#ifdef __cplusplus +extern "C" { +#endif + +void SVC_WaitVBlankIntr(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/touch.h b/libs/nitro/include/nitro/touch.h deleted file mode 100644 index bb511da3..00000000 --- a/libs/nitro/include/nitro/touch.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include "global.h" -#include "types.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct TouchStateFlags { - /* 00 */ struct { - u16 x, y; - } touchPos; - /* 04 */ u16 touch; - /* 06 */ u16 flags; -} TouchStateFlags; // size = 0x08 - -typedef struct TouchState { - /* 00 */ bool touch; - /* 01 */ bool unk_01; - /* 02 */ struct { - s16 x, y; - } touchPos; -} TouchState; // size = 0x06 - -void WaitForTouchUpdate(u16 param1); -bool TP_GetTouchStateFlags(TouchStateFlags *pState); - -static inline void TP_CopyState(TouchState *from, TouchState *to) { - to->touch = from->touch; - to->unk_01 = from->unk_01; - to->touchPos = from->touchPos; -} - -extern TouchState data_02049b4c; - -#ifdef __cplusplus -} -#endif diff --git a/libs/nitro/include/nitro/tp.h b/libs/nitro/include/nitro/tp.h new file mode 100644 index 00000000..983eda1d --- /dev/null +++ b/libs/nitro/include/nitro/tp.h @@ -0,0 +1,70 @@ +#ifndef _NITRO_TP_H +#define _NITRO_TP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "nitro/types.h" + +#define TP_VALIDITY_VALID 0 +#define TP_VALIDITY_INVALID_X 1 +#define TP_VALIDITY_INVALID_Y 2 +#define TP_VALIDITY_INVALID_XY 3 + +#define TP_REQUEST_COMMAND_AUTO_SAMPLING 0x10 + +#define TP_RESULT_SUCCESS 0x0 + +#define TP_TOUCH_ON 0x1 + +typedef struct TPCalibrateParam { + /* 00 */ s16 unk_00; + /* 02 */ s16 unk_02; + /* 04 */ s16 unk_04; + /* 06 */ s16 unk_06; + /* 08 */ +} TPCalibrateParam; + +typedef struct TPData { + u16 x; + u16 y; + u16 touch; + u16 validity; +} TPData; + +typedef u32 TPRequestCommand; +typedef u32 TPRequestResult; + +void TP_Init(void); +void TP_SetCallback(void (*callback)(TPRequestCommand command, TPRequestResult result, u16 index)); +BOOL TP_GetUserInfo(TPCalibrateParam *calibrate); +void TP_SetCalibrateParam(const TPCalibrateParam *calibrate); + +void func_020711c0(void); +BOOL func_02071254(TPData *data); +BOOL TP_GetData(TPData *data); + +void TP_GetCalibratedPoint(TPData *, TPData *); + +void _TP_RequestAutoSamplingStart(u32 param1, u32 param2, TPData *sampleBuf, u32 sampleBufSize); +void TP_func_02032704(u32 param1); +void TP_func_0203271c(u32 param1); +void TP_GetLatestCalibratedPointInAuto(TPData *data); + +inline BOOL TP_RequestRawSampling(TPData *data) { + func_020711c0(); + return func_02071254(data); +} + +inline void TP_RequestAutoSamplingStart(u32 param1, u32 param2, TPData *sampleBuf, u32 sampleBufSize) { + _TP_RequestAutoSamplingStart(param1, param2, sampleBuf, sampleBufSize); + TP_func_02032704(2); + TP_func_0203271c(2); +} + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/types.h b/libs/nitro/include/nitro/types.h new file mode 100644 index 00000000..450e2391 --- /dev/null +++ b/libs/nitro/include/nitro/types.h @@ -0,0 +1,48 @@ +#ifndef _NITRO_TYPES_H +#define _NITRO_TYPES_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned long long u64; +typedef unsigned int u32; +typedef unsigned short u16; +typedef unsigned char u8; + +typedef long long s64; +typedef int s32; +typedef short s16; +typedef char s8; + +typedef float f32; +typedef double f64; + +typedef volatile u64 vu64; +typedef volatile u32 vu32; +typedef volatile u16 vu16; +typedef volatile u8 vu8; + +typedef volatile s64 vs64; +typedef volatile s32 vs32; +typedef volatile s16 vs16; +typedef volatile s8 vs8; + +typedef volatile f32 vf32; +typedef volatile f64 vf64; + +typedef u32 BOOL; + +#define ATTRIBUTE_ALIGN(x) __attribute__((aligned(x))) + +#define ARRAY_LEN(arr) (s32)((sizeof(arr) / sizeof(*arr))) +#define ARRAY_LEN_U(arr) (u32)((sizeof(arr) / sizeof(*arr))) + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/nitro/wm.h b/libs/nitro/include/nitro/wm.h new file mode 100644 index 00000000..564f65d2 --- /dev/null +++ b/libs/nitro/include/nitro/wm.h @@ -0,0 +1,209 @@ +#ifndef _NITRO_WM_H +#define _NITRO_WM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define WM_SYSTEM_BUF_SIZE 0xf00 + +#define WM_ERRCODE_SUCCESS 0 +#define WM_ERRCODE_FAILED 0x1 +#define WM_ERRCODE_ILLEGAL_STATE 0x3 +#define WM_ERRCODE_OPERATING 0x2 +#define WM_ERRCODE_TIMEOUT 0x9 +#define WM_ERRCODE_NO_ENTRY 0xb // may swap value with WM_ERRCODE_OVER_MAX_ENTRY +#define WM_ERRCODE_OVER_MAX_ENTRY 0xc +#define WM_ERRCODE_SEND_FAILED 0xf + +#define WM_STATECODE_PARENT_START 0x0 +#define WM_STATECODE_PARENT_FOUND 0x5 +#define WM_STATECODE_MP_START 0xa +#define WM_STATECODE_CONNECTED 0x7 +#define WM_STATECODE_BEACON_LOST 0x8 +#define WM_STATECODE_DISCONNECTED 0x9 +#define WM_STATECODE_PORT_RECV 0x15 + +#define WM_SIZE_BSSID 6 +#define WM_SIZE_SSID 32 + +#define WM_ATTR_FLAG_ENTRY 0x1 +#define WM_ATTR_FLAG_MB 0x2 + +#define WM_STATE_PARENT 0x7 // may swap value with WM_STATE_CHILD +#define WM_STATE_CHILD 0x8 + +typedef u16 WMErrCode; +typedef u16 WMStateCode; + +typedef struct WMParentParam { + /* 00 */ void *userGameInfo; + /* 04 */ u16 userGameInfoLength; + /* 08 */ u32 ggid; + /* 0c */ u16 tgid; + /* 0e */ u16 entryFlag; + /* 10 */ u16 maxEntry; + /* 12 */ u16 multiBootFlag; + /* 14 */ u16 KS_Flag; + /* 16 */ u16 CS_Flag; + /* 18 */ u16 beaconPeriod; + /* 1a */ u8 unk_1a[0x32 - 0x1a]; + /* 32 */ u16 channel; + /* 34 */ u16 parentMaxSize; + /* 36 */ u16 childMaxSize; + /* 38 */ +} WMParentParam; + +typedef struct WMScanParam { + /* 00 */ void *scanBuf; + /* 04 */ u16 channel; + /* 06 */ u16 maxChannelTime; + /* 08 */ u8 bssid[WM_SIZE_BSSID]; + /* 0e */ u8 unk_0e[0x20 - 0x0e]; + /* 20 */ +} WMScanParam; + +typedef struct WMGameInfo { + /* 00 */ u32 ggid; + /* 04 */ u8 unk_04[0x07 - 0x04]; + /* 07 */ u8 attribute; + /* 08 */ u8 unk_08[0x78]; + /* 80 */ +} WMGameInfo; + +typedef struct WMBssDesc { + u16 length; + u16 rssi; + u8 bssid[WM_SIZE_BSSID]; + u16 ssidLength; + u8 ssid[WM_SIZE_SSID]; + u16 capaInfo; + struct { + u16 basic; + u16 support; + } rateSet; + u16 beaconPeriod; + u16 dtimPeriod; + u16 channel; + u16 cfpPeriod; + u16 cfpMaxDuration; + u16 gameInfoLength; + u16 rsv; + WMGameInfo gameInfo; +} WMBssDesc; + +typedef struct WMCallback { + u8 unk_00[0x02 - 0x00]; + WMErrCode errcode; +} WMCallback; + +typedef struct WMPortRecvCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ WMStateCode state; + /* 08 */ u8 unk_08[0x0c - 0x08]; + /* 0c */ void *data; + /* 10 */ u16 length; + /* 14 */ +} WMPortRecvCallback; + +typedef struct WMStartMPCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ WMStateCode state; +} WMStartMPCallback; + +typedef struct WMStartParentCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ u8 unk_04[0x08 - 0x04]; + /* 08 */ WMStateCode state; + /* 0a */ u8 unk_0a[0x10 - 0x0a]; + /* 10 */ u16 aid; +} WMStartParentCallback; + +typedef struct WMStartConnectCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ u8 unk_04[0x08 - 0x04]; + /* 08 */ WMStateCode state; +} WMStartConnectCallback; + +typedef struct WMStartScanCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ u8 unk_04[0x08 - 0x04]; + /* 08 */ WMStateCode state; + /* 0a */ u8 unk_0a[0x3c - 0x0a]; + /* 3c */ WMGameInfo gameInfo; +} WMStartScanCallback; + +typedef struct WMPortSendCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ u8 unk_04[0x0c - 0x04]; + /* 0c */ u16 destBitmap; + /* 0e */ u8 unk_0e[0x10 - 0x0e]; + /* 10 */ u16 sentBitmap; + /* 12 */ u8 unk_12[0x14 - 0x12]; + /* 14 */ void *data; + /* 18 */ u16 length; +} WMPortSendCallback; + +typedef struct WMMeasureChannelCallback { + /* 00 */ u8 unk_00[0x02 - 0x00]; + /* 02 */ WMErrCode errcode; + /* 04 */ u8 unk_04[0x08 - 0x04]; + /* 08 */ u16 channel; + /* 0a */ u16 ccaBusyRatio; +} WMMeasureChannelCallback; + +typedef struct WMStatus { + WMStateCode state; + u8 unk[0x7cc]; +} WMStatus; + +WMErrCode WM_Initialize(void *buf, void (*callback)(void *arg), u32 param3); + +WMErrCode WM_SetPortCallback(u16 port, void (*callback)(void *arg), void *param3); +void WM_SetEntry(void (*callback)(void *arg), u32 param2); +WMErrCode WM_SetParentParameter(void (*callback)(void *arg), WMParentParam *parentParam); +WMErrCode _WM_SetMPDataToPort(void (*callback)(void *arg), u32 param2, u16 *data, u32 length, u32 recvBitmap, u16 port, + u32 param7); +inline WMErrCode WM_SetMPDataToPort(void (*callback)(void *arg), u16 *data, u32 length, u32 recvBitmap, u16 port, u32 param6) { + return _WM_SetMPDataToPort(callback, 0, data, length, recvBitmap, port, param6); +} + +u32 WM_GetMPSendBufferSize(void); +u32 WM_GetMPReceiveBufferSize(void); +u32 WM_GetDispersionBeaconPeriod(void); +u32 WM_GetDispersionScanPeriod(void); +u32 WM_GetAllowedChannel(void); +u32 WM_GetLinkLevel(void); +u16 WM_GetNextTgid(void); + +WMErrCode WM_StartParent(void (*callback)(void *arg)); +WMErrCode _WM_StartConnect(void (*callback)(void *arg), WMBssDesc *bssDesc, void *param3, u32 param4, u32 param5); +inline WMErrCode WM_StartConnect(void (*callback)(void *arg), WMBssDesc *bssDesc, void *param3) { + return _WM_StartConnect(callback, bssDesc, param3, 1, 0); +} +void WM_Disconnect(void (*callback)(void *arg), u16 aid); +WMErrCode WM_Reset(void (*callback)(void *arg)); +WMErrCode WM_End(void (*callback)(void *arg)); + +WMErrCode WM_StartMP(void (*callback)(void *arg), u16 *recvBuf, u32 recvBufSize, u16 *sendBuf, u32 sendBufSize, + u32 commsPerFrame); +void WM_EndMP(void (*callback)(void *arg)); + +WMErrCode WM_StartScan(void (*callback)(void *arg), WMScanParam *scanParam); +WMErrCode WM_EndScan(void (*callback)(void *arg)); + +WMErrCode WM_MeasureChannel(void (*callback)(void *arg), u32 param2, u32 param3, u16 channel, u32 param5); + +void WM_ReadStatus(WMStatus *status); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/libs/nitro/include/twl.h b/libs/nitro/include/twl.h new file mode 100644 index 00000000..6837b0dc --- /dev/null +++ b/libs/nitro/include/twl.h @@ -0,0 +1,3 @@ +#define IS_TWL + +#include "nitro.h" diff --git a/libs/nns/include/nns/g3d/g3d.h b/libs/nns/include/nns/g3d/g3d.h index 2a945197..02cd9755 100644 --- a/libs/nns/include/nns/g3d/g3d.h +++ b/libs/nns/include/nns/g3d/g3d.h @@ -63,14 +63,14 @@ typedef struct G3d_Model_ { /* 18 */ u8 numMat; // number of materials /* 19 */ u8 numMesh; // number of meshes /* 1A */ u8 dummy2[2]; - /* 1C */ q20 upScale; - /* 20 */ q20 downScale; - /* 24 */ u16 numVertex; // number of vertices - /* 26 */ u16 numPolygon; // number of polygons - /* 28 */ u16 numTriangle; // number of triangles - /* 2A */ u16 numQuad; // number of quads - /* 2C */ q4 boundingBoxMin[3]; // bounding box lower vertex - /* 32 */ q4 boundingBoxMax[3]; // bounding box upper vertex + /* 1C */ fx32 upScale; + /* 20 */ fx32 downScale; + /* 24 */ u16 numVertex; // number of vertices + /* 26 */ u16 numPolygon; // number of polygons + /* 28 */ u16 numTriangle; // number of triangles + /* 2A */ u16 numQuad; // number of quads + /* 2C */ fx16 boundingBoxMin[3]; // bounding box lower vertex + /* 32 */ fx16 boundingBoxMax[3]; // bounding box upper vertex /* 38 */ u8 dummy3[8]; /* 40 */ G3d_NameList boneList; // bone list /* 4C */ diff --git a/libs/nns/include/nns/g3d/sbc.h b/libs/nns/include/nns/g3d/sbc.h index 1b12ab0d..5b7d2e31 100644 --- a/libs/nns/include/nns/g3d/sbc.h +++ b/libs/nns/include/nns/g3d/sbc.h @@ -50,8 +50,8 @@ typedef struct G3d_RenderState_ { /* D4 */ G3d_NameList *boneList; /* D8 */ const G3d_Material_List *materialList; /* DC */ G3d_NameList *meshList; - /* E0 */ q20 upScale; - /* E4 */ q20 downScale; + /* E0 */ fx32 upScale; + /* E4 */ fx32 downScale; /* E8 */ void *jntScalingHandler; // scaling handler /* EC */ void *jntSRTHandler; // SRT transform handler /* F0 */ void *textureHandler; // texture matrix handler @@ -102,8 +102,8 @@ static inline void G3d_MtxMult44_inline(const Mat4p *m) { PushGeometryCommand(0x18, (u32 *) m, 0x10); } -static inline void G3d_Scale_inline(q20 x, q20 y, q20 z) { - Vec3p vec; +static inline void G3d_Scale_inline(fx32 x, fx32 y, fx32 z) { + VecFx32 vec; vec.x = x; vec.y = y; vec.z = z; diff --git a/libs/nns/src/g3d/sbc.c b/libs/nns/src/g3d/sbc.c index f6002613..b406c70f 100644 --- a/libs/nns/src/g3d/sbc.c +++ b/libs/nns/src/g3d/sbc.c @@ -1,30 +1,30 @@ #include "nns/g3d/sbc.h" typedef struct UnkStruct_027e037c_ { - /* 000 */ unk32 mUnk_000; - /* 004 */ unk32 mUnk_004; + /* 000 */ s32 mUnk_000; + /* 004 */ s32 mUnk_004; /* 008 */ Mat4p mUnk_008; - /* 048 */ unk32 mUnk_048; + /* 048 */ s32 mUnk_048; /* 04C */ Mat4x3p mUnk_04C; - /* 07C */ unk32 mUnk_07C; - /* 080 */ unk32 mUnk_080; - /* 084 */ unk32 mUnk_084; - /* 088 */ unk32 mUnk_088; - /* 08C */ unk32 mUnk_08C; - /* 090 */ unk32 mUnk_090; - /* 094 */ unk32 mUnk_094; - /* 098 */ unk32 mUnk_098; - /* 09C */ unk32 mUnk_09C; - /* 0A0 */ unk32 mUnk_0A0; - /* 0A4 */ unk32 mUnk_0A4; - /* 0A8 */ unk32 mUnk_0A8; - /* 0AC */ unk32 mUnk_0AC; - /* 0B0 */ unk32 mUnk_0B0; - /* 0B4 */ unk32 mUnk_0B4; - /* 0B8 */ unk32 mUnk_0B8; + /* 07C */ s32 mUnk_07C; + /* 080 */ s32 mUnk_080; + /* 084 */ s32 mUnk_084; + /* 088 */ s32 mUnk_088; + /* 08C */ s32 mUnk_08C; + /* 090 */ s32 mUnk_090; + /* 094 */ s32 mUnk_094; + /* 098 */ s32 mUnk_098; + /* 09C */ s32 mUnk_09C; + /* 0A0 */ s32 mUnk_0A0; + /* 0A4 */ s32 mUnk_0A4; + /* 0A8 */ s32 mUnk_0A8; + /* 0AC */ s32 mUnk_0AC; + /* 0B0 */ s32 mUnk_0B0; + /* 0B4 */ s32 mUnk_0B4; + /* 0B8 */ s32 mUnk_0B8; /* 0BC */ Mat3p rotation; - /* 0E0 */ Vec3p translation; - /* 0EC */ Vec3p scale; - /* 0F8 */ unk32 mUnk_0F8; + /* 0E0 */ VecFx32 translation; + /* 0EC */ VecFx32 scale; + /* 0F8 */ s32 mUnk_0F8; /* 0FC */ u32 flags; /* 100 */ Mat4x3p mUnk_100; /* 130 */ Mat4x3p mUnk_130; @@ -34,8 +34,8 @@ typedef struct UnkStruct_027e037c_ { } UnkStruct_027e037c; extern UnkStruct_027e037c data_027e0208; -#include "Unknown/UnkMemFuncs.h" -#include "regs.h" +#include +#include #define G3D_SBC_CMD_MASK 0x1f #define G3D_SBC_FLG_MASK 0xe0 @@ -48,12 +48,12 @@ extern Mat4x3p *func_0200c198(); extern Mat4x3p *func_0200c23c(); extern Mat4x3p *func_0200c270(); extern s32 func_02024d94(Mat3p *matrix); -extern void func_02024a68(unk32 param1); +extern void func_02024a68(s32 param1); extern void func_02024a30(Mat4x3p *matrix); extern void func_01ff8dac(const void *param1, u32 param2); extern void func_02024a84(Mat3p *param1); extern Mat3p gGeomMatrix; -extern Vec3p gGeomTranslation; +extern VecFx32 gGeomTranslation; extern void G3d_GetCurrentMtx(Mat4x3p *mtx1, Mat3p *mtx2); UnkStruct_0205ae08 data_02046c80; @@ -69,7 +69,7 @@ void G3d_RenderSBCCommands(G3d_RenderState *renderState) { // Initializes the render state and starts rendering the SBC command list void G3d_InitRenderState(G3d_RenderState *renderState, G3d_RenderObject *renderObj) { - _MI_CpuFill(0, (short *) renderState, sizeof(*renderState)); + MI_CpuClearFast(renderState, sizeof(*renderState)); renderState->mUnk_C4[0] = 1; renderState->flag = G3D_RENDERST_FLAG_BONE_VISIBLE; @@ -194,8 +194,8 @@ void G3d_SBCRender_007(G3d_RenderState *renderState, u32 opCode) { }; // clang-format on - Vec3p *translationVec = (Vec3p *) &funcArgs[12]; - Vec3p *scaleVec = (Vec3p *) &funcArgs[15]; + VecFx32 *translationVec = (VecFx32 *) &funcArgs[12]; + VecFx32 *scaleVec = (VecFx32 *) &funcArgs[15]; Mat4p currentMtx; u8 callbackSkip; u32 callbackSegment; @@ -273,9 +273,9 @@ void G3d_SBCRender_007(G3d_RenderState *renderState, u32 opCode) { translationVec->y = currentMtx.wColumn.y; translationVec->z = currentMtx.wColumn.z; - scaleVec->x = Vec3p_Length((Vec3p *) ¤tMtx.xColumn); - scaleVec->y = Vec3p_Length((Vec3p *) ¤tMtx.yColumn); - scaleVec->z = Vec3p_Length((Vec3p *) ¤tMtx.zColumn); + scaleVec->x = VecFx32_Length((VecFx32 *) ¤tMtx.xColumn); + scaleVec->y = VecFx32_Length((VecFx32 *) ¤tMtx.yColumn); + scaleVec->z = VecFx32_Length((VecFx32 *) ¤tMtx.zColumn); if (data_027e0208.flags & 1) { REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3 @@ -333,9 +333,9 @@ void G3d_SBCRender_008(G3d_RenderState *renderState, u32 opCode) { }; // clang-format on - Vec3p *translationVec = (Vec3p *) &funcArgs[12]; - Vec3p *scaleVec = (Vec3p *) &funcArgs[15]; - Mat4x3p *mtx = (Mat4x3p *) &funcArgs[3]; + VecFx32 *translationVec = (VecFx32 *) &funcArgs[12]; + VecFx32 *scaleVec = (VecFx32 *) &funcArgs[15]; + Mat4x3p *mtx = (Mat4x3p *) &funcArgs[3]; u8 callbackSkip; u32 callbackSegment; @@ -411,17 +411,17 @@ void G3d_SBCRender_008(G3d_RenderState *renderState, u32 opCode) { translationVec->y = currentMtx.wColumn.y; translationVec->z = currentMtx.wColumn.z; - scaleVec->x = Vec3p_Length((Vec3p *) ¤tMtx.xColumn); - scaleVec->y = Vec3p_Length((Vec3p *) ¤tMtx.yColumn); - scaleVec->z = Vec3p_Length((Vec3p *) ¤tMtx.zColumn); + scaleVec->x = VecFx32_Length((VecFx32 *) ¤tMtx.xColumn); + scaleVec->y = VecFx32_Length((VecFx32 *) ¤tMtx.yColumn); + scaleVec->z = VecFx32_Length((VecFx32 *) ¤tMtx.zColumn); if (currentMtx.yColumn.y != 0 || currentMtx.yColumn.z != 0) { - Vec3p_Normalize((Vec3p *) ¤tMtx.yColumn, (Vec3p *) &mtx->yColumn); + VecFx32_Normalize((VecFx32 *) ¤tMtx.yColumn, (VecFx32 *) &mtx->yColumn); mtx->zColumn.y = -mtx->yColumn.z; mtx->zColumn.z = mtx->yColumn.y; } else { - Vec3p_Normalize((Vec3p *) ¤tMtx.zColumn, (Vec3p *) &mtx->zColumn); + VecFx32_Normalize((VecFx32 *) ¤tMtx.zColumn, (VecFx32 *) &mtx->zColumn); mtx->yColumn.z = -mtx->zColumn.y; mtx->yColumn.y = mtx->zColumn.z; @@ -483,13 +483,13 @@ void G3d_SBCRender_SKN(G3d_RenderState *renderState, u32) { Mat4p *mat4x; Mat3p *mat3x; - _MI_CpuFill(0, (unk16 *) &mtxStruct, sizeof(mtxStruct)); + MI_CpuClearFast(&mtxStruct, sizeof(mtxStruct)); FlushGfxQueue(); - GFX_FIFO_MTX_MODE = 0; // Projection - GFX_FIFO_MTX_STORE = 1; - GFX_FIFO_MTX_IDENTITY = 0; - GFX_FIFO_MTX_MODE = 2; // Position + Vector + REG_GFX_FIFO_MATRIX_MODE = 0; // Projection + REG_GFX_FIFO_MATRIX_STORE = 1; + REG_GFX_FIFO_MATRIX_IDENTITY = 0; + REG_GFX_FIFO_MATRIX_MODE = 2; // Position + Vector for (i = 0; i < numTerms; i++) { u32 jntIndex = *(termPtr + 1); @@ -499,8 +499,8 @@ void G3d_SBCRender_SKN(G3d_RenderState *renderState, u32) { if (!unk) { G3d_SetBitArray(&renderState->mUnk_CC[0], jntIndex); - GFX_FIFO_MTX_RESTORE = (*termPtr); - GFX_FIFO_MTX_MODE = 1; // Position + REG_GFX_FIFO_MATRIX_RESTORE = (*termPtr); + REG_GFX_FIFO_MATRIX_MODE = 1; // Position func_02024a68(&invBMtx[jntIndex].mtx); } @@ -521,7 +521,7 @@ void G3d_SBCRender_SKN(G3d_RenderState *renderState, u32) { if (!unk) { while (func_02024d64(mat4x)) ; - GFX_FIFO_MTX_MODE = 2; // Position + Vector + REG_GFX_FIFO_MATRIX_MODE = 2; // Position + Vector func_02024a84(&invBMtx[jntIndex].unkMtx); } @@ -564,12 +564,12 @@ void G3d_SBCRender_SKN(G3d_RenderState *renderState, u32) { mtxStruct.mtx2.zColumn.z += (weight * mat3x->zColumn.z) >> 0xc; func_02024a30((const Mat4x3p *) &mtxStruct.mtx2); - GFX_FIFO_MTX_MODE = 1; // Position + REG_GFX_FIFO_MATRIX_MODE = 1; // Position func_02024a30(&mtxStruct.mtx1); - GFX_FIFO_MTX_MODE = 0; // Projection - GFX_FIFO_MTX_RESTORE = 1; - GFX_FIFO_MTX_MODE = 2; // Position + Vector - GFX_FIFO_MTX_STORE = (*(renderState->currentCmd + 1)); + REG_GFX_FIFO_MATRIX_MODE = 0; // Projection + REG_GFX_FIFO_MATRIX_RESTORE = 1; + REG_GFX_FIFO_MATRIX_MODE = 2; // Position + Vector + REG_GFX_FIFO_MATRIX_STORE = (*(renderState->currentCmd + 1)); renderState->currentCmd += 3 + *(renderState->currentCmd + 2) * 3; } @@ -622,7 +622,7 @@ void G3d_SBCRender_00A(G3d_RenderState *renderState, u32) { // Renders the Scale SBC command void G3d_SBCRender_SCL(G3d_RenderState *renderState, u32 opCode) { - Vec3p scaleVector; + VecFx32 scaleVector; if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD) && !(renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER)) { if (opCode == 0) { @@ -676,7 +676,7 @@ void G3d_SBCRender_00C(G3d_RenderState *renderState, u32) { if (!callbackSkip) { s32 width = renderState->matAnim->width; s32 height = renderState->matAnim->height; - Vec3p vec; + VecFx32 vec; u32 tmp; G3d_Scale_inline(width << 15, -height << 15, INT_TO_Q20(1) << 4); @@ -890,19 +890,19 @@ void G3d_SBCRender_00D(G3d_RenderState *renderState, u32) { { FlushGfxQueue(); - GFX_FIFO_MTX_MODE = 0; // Projection - GFX_FIFO_MTX_PUSH = 0; - GFX_FIFO_MTX_IDENTITY = 0; + REG_GFX_FIFO_MATRIX_MODE = 0; // Projection + REG_GFX_FIFO_MATRIX_PUSH = 0; + REG_GFX_FIFO_MATRIX_IDENTITY = 0; while (func_02024d64(&mtx)) ; - GFX_FIFO_MTX_POP = 1; - GFX_FIFO_MTX_MODE = 3; // Texture + REG_GFX_FIFO_MATRIX_POP = 1; + REG_GFX_FIFO_MATRIX_MODE = 3; // Texture } PushGeometryCommand(0x16, &mtx, 0x10); - tmp = GX_PACK_TEXCOORD_PARAM((q20) (mtx.wColumn.x >> 4), (q20) (mtx.wColumn.y >> 4)); + tmp = GX_PACK_TEXCOORD_PARAM((fx32) (mtx.wColumn.x >> 4), (fx32) (mtx.wColumn.y >> 4)); PushGeometryCommand(0x22, (u32 *) &tmp, 1); // TEXCOORD } diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index af46a932..32768b5b 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -1,7 +1,7 @@ #include "Actor/Actor.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" +#include ARM Actor::Actor() { this->mVel.x = 0; @@ -21,9 +21,9 @@ ARM Actor::Actor() { this->mUnk_5C.func_ov000_020975f8(); this->mRef.Reset(); this->mpProfile = NULL; - _MI_CpuCopy(&data_ov000_020b539c_eur.mUnk_00, &this->mUnk_5C, sizeof(ActorParams)); - Vec3p_Copy(&this->mUnk_5C.mInitialPos, &this->mPos); - Vec3p_Copy(&this->mUnk_5C.mInitialPos, &this->mPrevPos); + MI_CpuCopyFast(&data_ov000_020b539c_eur.mUnk_00, &this->mUnk_5C, sizeof(ActorParams)); + VecFx32_Copy(&this->mUnk_5C.mInitialPos, &this->mPos); + VecFx32_Copy(&this->mUnk_5C.mInitialPos, &this->mPrevPos); this->mAngle = this->mUnk_5C.mInitialAngle; SET_FLAGS(this->mFlags, ActorFlag_Alive, ActorFlag_Visible, ActorFlag_Active, ActorFlag_14); this->mUnk_44 = 0xFF; @@ -82,7 +82,7 @@ ARM void Actor::func_ov000_020984f0() { } // non-matching -ARM void Actor::vfunc_00(Vec3p *param1) { +ARM void Actor::vfunc_00(VecFx32 *param1) { *param1 = mPos; param1->y += mUnk_4E; // short sVar1; @@ -94,7 +94,7 @@ ARM void Actor::vfunc_00(Vec3p *param1) { // param1->z = this->mPos.z; } -ARM Vec3p *Actor::func_ov000_0209853c(unk32 param1) { +ARM VecFx32 *Actor::func_ov000_0209853c(unk32 param1) { return data_027e0ce0->func_01fff148(param1); } @@ -142,7 +142,7 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { } // non-matching -ARM bool Actor::vfunc_3c(unk32 param2, Vec3p *param3) { +ARM bool Actor::vfunc_3c(unk32 param2, VecFx32 *param3) { if (!GET_FLAG(this->mFlags, ActorFlag_Grabbed)) { return false; } diff --git a/src/000_Second/Actor/ActorUnkEFIK.cpp b/src/000_Second/Actor/ActorUnkEFIK.cpp index 23b7ff8f..75cf5318 100644 --- a/src/000_Second/Actor/ActorUnkEFIK.cpp +++ b/src/000_Second/Actor/ActorUnkEFIK.cpp @@ -70,7 +70,7 @@ ARM void ActorUnkEFIK::vfunc_20() { u16 random = gRandom.Next32(0, 6); if (random == 0) { - Vec3p vec; + VecFx32 vec; pUVar5->func_ov000_020808f4(&vec, bStack_40, 0); data_027e0cec->func_ov000_020a0220(&this->mUnk_98, &vec); } diff --git a/src/000_Second/Actor/ActorUnkSWOB.cpp b/src/000_Second/Actor/ActorUnkSWOB.cpp index 9d3afd40..257d726b 100644 --- a/src/000_Second/Actor/ActorUnkSWOB.cpp +++ b/src/000_Second/Actor/ActorUnkSWOB.cpp @@ -6,8 +6,8 @@ #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" -extern "C" void func_01ffedac(u16 *, Vec3p *); -extern "C" void func_01ffb9cc(void *, Vec3p *); +extern "C" void func_01ffedac(u16 *, VecFx32 *); +extern "C" void func_01ffb9cc(void *, VecFx32 *); ARM DECL_PROFILE(ActorProfileUnkSWOB); @@ -79,19 +79,19 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { } break; case 2: { - Vec3p temp; - Vec3p vec2; - Vec3p vec; + VecFx32 temp; + VecFx32 vec2; + VecFx32 vec; ActorParams AStack_7c; u16 auStack_80[2]; int j; u32 i; data_ov000_020b5214.func_ov000_0206db44(0xA3); - temp.coords = data_027e0ce0->func_01fff148(0)->coords; - vec2.x = temp.x; - vec2.y = temp.y + FLOAT_TO_Q20(3.0f); - vec2.z = temp.z; + temp = *data_027e0ce0->func_01fff148(0); + vec2.x = temp.x; + vec2.y = temp.y + FLOAT_TO_Q20(3.0f); + vec2.z = temp.z; AStack_7c.mUnk_28 = 0; AStack_7c.func_ov000_020975f8(); @@ -104,7 +104,7 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { vec.y = 0; vec.z = INT_TO_Q20(gRandom.Next32(0, 11) - 5); - Vec3p_Add(&vec, &vec2, &vec); + VecFx32_Add(&vec, &vec2, &vec); if (j < 10) { func_01ffedac(auStack_80, &vec); diff --git a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp index 211a4a61..f406a24b 100644 --- a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp +++ b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp @@ -4,7 +4,7 @@ #include "flags.h" #include "global.h" -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(q20 param1) { +ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(fx32 param1) { u32 posY = this->mVel.y; if (posY <= param1) { @@ -110,10 +110,10 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_b4() { } // non-matching -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8e9c(Vec3p *param1) { - q20 z = param1->x; - q20 y = param1->y; - q20 x = param1->z; +ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8e9c(VecFx32 *param1) { + fx32 z = param1->x; + fx32 y = param1->y; + fx32 x = param1->z; this->mUnk_0C0.x = x; this->mUnk_0C0.y = y; @@ -192,7 +192,7 @@ ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_84() { return 1; } -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a91b8(Vec3p *param1, unk32 param2) { +ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a91b8(VecFx32 *param1, unk32 param2) { this->func_ov000_020a8e9c(param1); if (param2 != 0) { diff --git a/src/000_Second/Item/TreasureManager.cpp b/src/000_Second/Item/TreasureManager.cpp index bd2bd178..1d7adf2e 100644 --- a/src/000_Second/Item/TreasureManager.cpp +++ b/src/000_Second/Item/TreasureManager.cpp @@ -1,8 +1,8 @@ #include "Item/ItemManager.hpp" #include "Save/SaveManager.hpp" #include "System/Random.hpp" -#include "Unknown/UnkMemFuncs.h" #include "global.h" +#include static const unk32 data_ov000_020afda8[] = { 0x0015007E, 0x0015007F, 0x00150080, 0x00150081, 0x00150082, 0x00150083, 0x00150084, 0x00150085, @@ -86,7 +86,7 @@ extern u16 data_ov000_020afe90; extern u16 data_ov000_020afe94; ARM void TreasureManager::func_ov000_020a9b10(void *param1) { - _MI_CpuCopy(param1, this, sizeof(TreasureManager)); + MI_CpuCopyFast(param1, this, sizeof(TreasureManager)); } ARM unk32 TreasureManager::func_ov000_020a9b2c(unk32 param1) { diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 53ecc5c7..eaaedb10 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -2,17 +2,17 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" #include "Physics/Cylinder.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_027e0998.hpp" #include "Unknown/UnkStruct_027e09b4.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_ov000_020b5d34.hpp" +#include -extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *); -extern "C" void func_01ffb9cc(Vec3p *, Vec3p *); -extern "C" u16 func_01ffbbe0(q20 x, q20 z); +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *); +extern "C" void func_01ffb9cc(VecFx32 *, VecFx32 *); +extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2); extern "C" bool func_01ffd768(unk32, void *, void *, unk8); @@ -32,13 +32,13 @@ ARM MapObject::MapObject() { *(u32 *) &this->mUnk_38 = *ptr2->mUnk_00; - Vec3p *ptr = ptr2->mUnk_08; + VecFx32 *ptr = ptr2->mUnk_08; this->mPos.x = ptr->x; this->mPos.y = ptr->y; this->mPos.z = ptr->z; this->mUnk_14 = *ptr2->mUnk_0C; - _MI_CpuCopy(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20)); + MI_CpuCopyFast(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20)); for (int i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { this->mUnk_18[i] = 0; @@ -56,12 +56,12 @@ ARM bool MapObject::vfunc_00() { ARM void MapObject::vfunc_04() {} ARM void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) { - Vec3p pos; + VecFx32 pos; Vec2p out; MapObjectManager *t = data_027e0cd8->mUnk_10; - pos.coords = thisx->mPos.coords; - t->func_01fff6d0(&pos, (q20 *) &out.y, (q20 *) &out.x); + pos = thisx->mPos; + t->func_01fff6d0(&pos, (fx32 *) &out.y, (fx32 *) &out.x); Vec2p temp; temp.y = out.x; @@ -91,7 +91,7 @@ ARM bool MapObject::func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param stack[1] = 0; stack[2] = 0; - this->vfunc_2C((Vec3p *) &stack); + this->vfunc_2C((VecFx32 *) &stack); unk8 value = this->mpProfile->mUnk_04[param2]; Vec2s stack2; @@ -118,10 +118,10 @@ ARM unk32 MapObject::vfunc_28() { return 0; } -ARM bool MapObject::vfunc_2C(Vec3p *param1) { +ARM bool MapObject::vfunc_2C(VecFx32 *param1) { if (this->mUnk_10 != NULL) { this->mUnk_10->vfunc_18(param1); - Vec3p_Add(param1, &this->mPos, param1); + VecFx32_Add(param1, &this->mPos, param1); return true; } @@ -129,7 +129,7 @@ ARM bool MapObject::vfunc_2C(Vec3p *param1) { } ARM void MapObject::func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2) { - Vec3p local_18; + VecFx32 local_18; func_01ffb714(data_027e0ce0->func_01fff148(param2), &thisx->mPos, &local_18); *param1 = func_01ffbbe0(local_18.x, local_18.z); } @@ -171,7 +171,7 @@ ARM void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param } } -ARM void MapObject::func_ov000_0209d3b4(unk32 param1, q20 size) { +ARM void MapObject::func_ov000_0209d3b4(unk32 param1, fx32 size) { Cylinder spC; if (this->mUnk_10 != NULL) { @@ -180,7 +180,7 @@ ARM void MapObject::func_ov000_0209d3b4(unk32 param1, q20 size) { spC.Init(FLOAT_TO_Q20(0.5f)); } - Vec3p_Add(&spC.pos, &this->mPos, &spC.pos); + VecFx32_Add(&spC.pos, &this->mPos, &spC.pos); spC.size += size; func_01ffecdc(param1, &spC); @@ -229,7 +229,7 @@ ARM void MapObject::func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3 } struct TempStruct { - Vec3p pos; + VecFx32 pos; u16 param_r2; s16 extra_s16; u16 extra_u16; @@ -239,7 +239,7 @@ struct TempStruct { }; // non-matching -ARM void MapObject::func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, Vec3p *param3, unk32 param4, +ARM void MapObject::func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, VecFx32 *param3, unk32 param4, unk32 param5) { TempStruct local_4c; local_4c.mUnk_28 = 0; @@ -287,10 +287,10 @@ ARM bool MapObject::func_ov000_0209d668() { return pUVar1->func_ov000_02081f3c(this->mUnk_20.mUnk_14, uVar2); } -ARM void MapObject::func_ov000_0209d6ac(Vec3p *param1) { +ARM void MapObject::func_ov000_0209d6ac(VecFx32 *param1) { if (this->mUnk_10 == NULL) { - volatile Vec3p *tempPos = &this->mPos; - Vec3p pos; + volatile VecFx32 *tempPos = &this->mPos; + VecFx32 pos; pos.x = tempPos->x; pos.y = tempPos->y; @@ -303,5 +303,5 @@ ARM void MapObject::func_ov000_0209d6ac(Vec3p *param1) { } this->mUnk_10->vfunc_1C(param1); - Vec3p_Add(param1, &this->mPos, param1); + VecFx32_Add(param1, &this->mPos, param1); } diff --git a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp index 8d3d3db0..b870a6c1 100644 --- a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp +++ b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp @@ -44,7 +44,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) { this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec); } - Vec3p vec; + VecFx32 vec; vec.x = FLOAT_TO_Q20(0.0f); vec.y = FLOAT_TO_Q20(0.0f); vec.z = FLOAT_TO_Q20(0.0f); @@ -125,7 +125,7 @@ next: } func_01ff9638(&vec, -this->mUnk_14); - Vec3p_Add(&this->mPos, &vec, &this->mPos); + VecFx32_Add(&this->mPos, &vec, &this->mPos); return true; } diff --git a/src/000_Second/MapObject/MapObjectProfile.cpp b/src/000_Second/MapObject/MapObjectProfile.cpp index ba9c4806..96a9b742 100644 --- a/src/000_Second/MapObject/MapObjectProfile.cpp +++ b/src/000_Second/MapObject/MapObjectProfile.cpp @@ -2,8 +2,8 @@ #include "Actor/Actor.hpp" #include "MapObject/MapObject.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_ov000_020b5d34.hpp" +#include extern unk8 data_ov000_020af4d4[]; diff --git a/src/000_Second/MapObject/MapObjectSwitchStep.cpp b/src/000_Second/MapObject/MapObjectSwitchStep.cpp index 572c7729..340e17f5 100644 --- a/src/000_Second/MapObject/MapObjectSwitchStep.cpp +++ b/src/000_Second/MapObject/MapObjectSwitchStep.cpp @@ -1,11 +1,11 @@ #include "MapObject/MapObjectSwitchStep.hpp" #include "System/SysNew.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_027e0998.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09a8.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" +#include extern "C" unk32 func_0200f218(unk32, const char *); diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 2369e077..6be12ef5 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -1,6 +1,5 @@ #include "Actor/ActorManager.hpp" #include "System/OverlayManager.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_027e09a0.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" @@ -9,6 +8,7 @@ #include "Unknown/UnkStruct_027e0d70.hpp" #include "flags.h" #include "global.h" +#include extern "C" { void func_ov000_020977e4(); diff --git a/src/001_SceneInit/Game/AdventureModeManager_001.cpp b/src/001_SceneInit/Game/AdventureModeManager_001.cpp index 808593b1..12f08078 100644 --- a/src/001_SceneInit/Game/AdventureModeManager_001.cpp +++ b/src/001_SceneInit/Game/AdventureModeManager_001.cpp @@ -18,8 +18,6 @@ extern "C" { void *func_ov024_020d1658(); void *func_ov000_02066294(); -void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); -void GXS_SetGraphicsMode(unk32 param1); } extern int data_ov001_020c27a8; diff --git a/src/018_StartUp/GameModeStartUp.cpp b/src/018_StartUp/GameModeStartUp.cpp index 98cc5347..82961af4 100644 --- a/src/018_StartUp/GameModeStartUp.cpp +++ b/src/018_StartUp/GameModeStartUp.cpp @@ -9,33 +9,26 @@ #include "Unknown/UnkStruct_0204e64c.hpp" #include "Unknown/UnkStruct_ov000_020b4ec4.hpp" #include "Unknown/UnkStruct_ov000_020b50c0.hpp" -#include "regs.h" + +#include +#include +#include +#include +#include extern "C" { -void OS_SetIrqFunction(unk32 param1, void *param2); void func_0201245c(); void func_02027a28(void *param1, unk32 param2); -void DC_FlushAll(); void func_02013184(); void func_020131b0(); -void OS_EnableIrqMask(unk32 param1); -void GX_VBlankIntr(unk32 param1); void func_02031e48(void *param1); -void OS_WakeupThreadDirect(void *param1); -unk32 OS_GetArenaLo(unk32 param1); -unk32 OS_GetArenaHi(unk32 param1); + UnkStruct_02011e10_Sub1 *func_020012e0(unk32 param1, unk32 param2, unk32 param3); unk32 func_0202d624(void *param1, unk32 param2); void *func_02001fd4(void *param1, size_t param2); void func_020013ac(void *param1); UnkStruct_02011e10_Sub1 *func_02001098(unk32 param1, unk32 param2, unk32 param3); unk32 func_020011f4(); -void OS_SetArenaLo(unk32 param1, unk32 param2); -void TP_Init(); -unk32 OS_func_0065(); -unk32 TP_GetUserInfo(void *param1); -void TP_SetCalibrateParam(void *param1); - void func_0200a7b0(unk32 param1, void *param2, void *param3, void *param4, unk32 param5, unk32 param6, unk32 param7, unk32 param8); } @@ -83,8 +76,8 @@ ARM UnkStruct_02049b18::UnkStruct_02049b18() { } ARM void UnkStruct_02011e10::func_ov018_020c4980() { - unk32 arenaLo = OS_GetArenaLo(0); - unk32 arenaHi = OS_GetArenaHi(0); + unk32 arenaLo = OS_GetMainArenaLo(); + unk32 arenaHi = OS_GetMainArenaHi(); for (int i = 0; i < HeapIndex_Max; i++) { this->mUnk_00[i] = NULL; @@ -126,10 +119,10 @@ ARM void UnkStruct_02011e10::func_ov018_020c4a5c() { temp_r7 = OS_GetArenaLo(0); temp_r7 += temp_r5; - temp_r0 = OS_GetArenaHi(0); + temp_r0 = OS_GetMainArenaHi(); this->mUnk_00[1] = func_02001098(temp_r7, temp_r0 - temp_r7, 2); this->mUnk_5C = func_020011f4(); - OS_SetArenaLo(0, temp_r0); + OS_SetMainArenaLo((void *) temp_r0); this->mUnk_74 = 1; } @@ -145,14 +138,14 @@ ARM UnkStruct_02049b80::UnkStruct_02049b80() { } ARM UnkStruct_02049b18_06::UnkStruct_02049b18_06() { - unk8 auStack_18[8]; + TPCalibrateParam params; TP_Init(); - if (OS_func_0065() != 0) { + if (OS_func_0065()) { TP_SetCalibrateParam(NULL); - } else if (TP_GetUserInfo(auStack_18) != 0) { - TP_SetCalibrateParam(auStack_18); + } else if (TP_GetUserInfo(¶ms)) { + TP_SetCalibrateParam(¶ms); } } diff --git a/src/018_StartUp/StartUpInitializers.cpp b/src/018_StartUp/StartUpInitializers.cpp index 6838a06b..3c64d5a1 100644 --- a/src/018_StartUp/StartUpInitializers.cpp +++ b/src/018_StartUp/StartUpInitializers.cpp @@ -2,7 +2,6 @@ #include "System/Random.hpp" #include "System/SysFault.hpp" #include "System/SysNew.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_02049f04.hpp" #include "Unknown/UnkStruct_0204a060.hpp" #include "Unknown/UnkStruct_0204a090.hpp" @@ -17,22 +16,18 @@ #include "Unknown/UnkStruct_ov000_020b52b4.hpp" #include "Unknown/UnkStruct_ov000_020b52e8.hpp" #include "Unknown/UnkStruct_ov000_020b5340.hpp" -#include "regs.h" #include "versions.h" +#include + +#include +#include +#include +#include extern "C" { unk32 func_02014fe0(); -unk16 OS_GetLockID(); -void GX_DispOn(); void func_020327c8(void *param1, unk32 param2); -void CARD_LockBackup(u16 param1); -void CARD_UnlockBackup(u16 param1); -unk32 CARD_IdentifyBackup(unk32 param1); -unk32 CARD_ReadWriteBackupAsync(void *param1, void *param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6, - unk32 param7, unk32 param8, unk32 param9); -unk32 CARD_GetResultCode(); void func_0201bdd0(); -void OS_SetIrqFunction(unk32 param1, void *param2); void NNS_SndInit(); void NNS_SndArcInit(void *param1, const char *soundDataPath, unk32 param2, unk32 param3); void NNS_SndArcPlayerSetup(unk32 param1); @@ -46,7 +41,6 @@ void func_0202f958(unk32 param1); void func_02005030(void *param1); void NNS_SndHandleInit(void *param1); void NNS_SndPlayerStopSeq(void *param1, unk32 param2); -void RTC_Init(); } ARM void func_ov018_020c4e8c(void) { @@ -133,11 +127,11 @@ ARM SaveManager::SaveManager() { int uVar8 = 1; CARD_LockBackup(this->mUnk_204); - if (CARD_IdentifyBackup(0x1402) != 0) { + if (CARD_IdentifyBackup(CARD_BACKUP_TYPE_FLASH_8MBITS)) { stack_struct stack[MAX_SAVE_SLOTS]; int cVar1; - if (CARD_ReadWriteBackupAsync((void *) 0xF4E00, &stack[0], 0x40, 0, 0, 0, 6, 1, 0) == 1) { + if (CARD_ReadFlashAsync(0xF4E00, &stack[0], 0x40, NULL, NULL) == true) { if (!stack[0].UnkCheck() && !stack[1].UnkCheck()) { cVar1 = 1; } else { @@ -159,7 +153,7 @@ ARM SaveManager::SaveManager() { MI_CpuFill16(0, (u16 *) stack[1].mUnk_06, 0x16); uVar8 = 2; - CARD_ReadWriteBackupAsync(stack, (void *) 0xF4E00, 0x40, 0, 0, 0, 7, 10, 2); + CARD_WriteAndVerifyFlashAsync((u32) stack, (void *) 0xF4E00, 0x40, NULL, NULL); } } } @@ -195,7 +189,7 @@ ARM void UnkStruct_0204a110::func_ov018_020c5300() { func_02018c90(2); this->mUnk_010.func_0201c890(0x0004800, 0x00016800, 1, 1, 0); GX_DispOn(); - REG_DISPCNT_SUB |= 0x00010000; + GXS_DispOn(); } ARM UnkStruct_0204e640::UnkStruct_0204e640() { @@ -273,11 +267,11 @@ ARM UnkStruct_0204a110_Sub6::UnkStruct_0204a110_Sub6() { } ARM UnkStruct_0204a110_Sub7::UnkStruct_0204a110_Sub7() { - this->mUnk_00 = 0; - this->mUnk_01 = 0; - this->mUnk_0C.coords = data_027e0120.coords; - this->mUnk_04 = new(HeapIndex_Main) UnkSystem2_UnkSubSystem9(); - this->mUnk_08 = new(HeapIndex_Main) UnkStruct_0204a110_Sub7_08(); + this->mUnk_00 = 0; + this->mUnk_01 = 0; + this->mUnk_0C = data_027e0120; + this->mUnk_04 = new(HeapIndex_Main) UnkSystem2_UnkSubSystem9(); + this->mUnk_08 = new(HeapIndex_Main) UnkStruct_0204a110_Sub7_08(); } ARM UnkStruct_0204a110_Sub8::UnkStruct_0204a110_Sub8() { diff --git a/src/019_MainSelect/019_SaveManager.cpp b/src/019_MainSelect/019_SaveManager.cpp index 8d511dd9..bcf753b2 100644 --- a/src/019_MainSelect/019_SaveManager.cpp +++ b/src/019_MainSelect/019_SaveManager.cpp @@ -3,16 +3,11 @@ #include "Unknown/UnkStruct_02049b80.hpp" #include "Unknown/UnkStruct_02049bd4.hpp" +#include #include extern "C" { unk32 func_020328c8(void *, void *, size_t); -unk32 CARD_GetResultCode(); -void CARD_LockBackup(u16 param1); -void CARD_UnlockBackup(u16 param1); -unk32 CARD_ReadWriteBackupAsync(void *src, uintptr_t dest, unk32 param3, unk32 param4, unk32 param5, unk32 param6, - unk32 param7, unk32 param8, unk32 param9); - bool func_ov000_020a0a90(size_t param1, void *param2, size_t param3); void func_ov000_020a0b58(); }; @@ -199,7 +194,7 @@ ARM void SaveFile::func_ov019_020d0d50() { stack[1].mUnk_04 = 0x1A; MI_CpuFill16(0, &stack[1].mUnk_06, 0x16); - CARD_ReadWriteBackupAsync(stack, SAVE_DATA_SIZE * 2, sizeof(stack_struct) * 2, 0, 0, 0, 7, 10, 2); + CARD_WriteAndVerifyFlashAsync((u32) stack, (void *) (SAVE_DATA_SIZE * 2), sizeof(stack_struct) * 2, NULL, NULL); } // https://decomp.me/scratch/gJJbb @@ -242,7 +237,7 @@ ARM void SaveFile::func_ov019_020d13b8() { ARM void SaveSub7::func_ov019_020d1400() { this->mUnk_00[0].mUnk_7E = func_020328c8(&gSaveManager.mUnk_004, &this->mUnk_00, sizeof(SaveSub17) - sizeof(u16)); - _MI_CpuCopy(&this->mUnk_00[0], &this->mUnk_00[1], sizeof(SaveSub17)); + MI_CpuCopyFast(&this->mUnk_00[0], &this->mUnk_00[1], sizeof(SaveSub17)); } // non-matching @@ -265,13 +260,13 @@ ARM void SaveFile::func_ov019_020d1434() { } ARM void SaveSub5::func_ov019_020d14c0() { this->mUnk_000[0].mUnk_3FE = func_020328c8(&gSaveManager.mUnk_004, &this->mUnk_000, offsetof(SaveSub15, mUnk_3FE)); - _MI_CpuCopy(&this->mUnk_000[0], &this->mUnk_000[1], sizeof(SaveSub15)); + MI_CpuCopyFast(&this->mUnk_000[0], &this->mUnk_000[1], sizeof(SaveSub15)); } ARM void SaveInfo::func_ov019_020d14fc() { this->mSaveInfoData[0].mUnk_DFE = func_020328c8(&gSaveManager.mUnk_004, &this->mSaveInfoData[0].mUnk_000, offsetof(SaveInfoData, mUnk_DFE)); - _MI_CpuCopy(&this->mSaveInfoData[0], &this->mSaveInfoData[1], sizeof(SaveInfoData)); + MI_CpuCopyFast(&this->mSaveInfoData[0], &this->mSaveInfoData[1], sizeof(SaveInfoData)); } //! TODO: weird sizeof @@ -296,13 +291,13 @@ ARM void SaveFile::func_ov019_020d1538() { ARM void SaveSub6::func_ov019_020d15cc() { this->mUnk_00[0].mUnk_7E = func_020328c8(&gSaveManager.mUnk_004, &this->mUnk_00, offsetof(SaveSub16, mUnk_7E)); - _MI_CpuCopy(&this->mUnk_00[0], &this->mUnk_00[1], sizeof(SaveSub16)); + MI_CpuCopyFast(&this->mUnk_00[0], &this->mUnk_00[1], sizeof(SaveSub16)); } ARM void SaveTreasures::func_ov019_020d1600() { this->mTreasureData[0].mUnk_7E = func_020328c8(&gSaveManager.mUnk_004, &this->mTreasureData, offsetof(TreasureData, mUnk_7E)); - _MI_CpuCopy(&this->mTreasureData[0], &this->mTreasureData[1], sizeof(TreasureData)); + MI_CpuCopyFast(&this->mTreasureData[0], &this->mTreasureData[1], sizeof(TreasureData)); } // https://decomp.me/scratch/ibnQS @@ -325,15 +320,15 @@ ARM void SaveFile::func_ov019_020d16d0() { SaveSlot *pSub2 = &this->mSlots[this->mSaveSlotIndex]; SaveSlot *pSub3 = &this->mSlots[saveSlotIndex]; - _MI_CpuCopy(&pSub2->mSaveInfo, &pSub3->mSaveInfo, sizeof(SaveInfo)); - _MI_CpuCopy(&pSub2->mTreasures, &pSub3->mTreasures, sizeof(SaveTreasures)); - _MI_CpuCopy(&pSub2->mUnk_2600, &pSub3->mUnk_2600, sizeof(SaveSub7)); + MI_CpuCopyFast(&pSub2->mSaveInfo, &pSub3->mSaveInfo, sizeof(SaveInfo)); + MI_CpuCopyFast(&pSub2->mTreasures, &pSub3->mTreasures, sizeof(SaveTreasures)); + MI_CpuCopyFast(&pSub2->mUnk_2600, &pSub3->mUnk_2600, sizeof(SaveSub7)); pSub3->mUnk_1D00.func_ov000_020a12a0(); - _MI_CpuCopy(&pSub2->mUnk_1D00, &pSub3->mUnk_1D00, sizeof(SaveSub5)); + MI_CpuCopyFast(&pSub2->mUnk_1D00, &pSub3->mUnk_1D00, sizeof(SaveSub5)); - _MI_CpuFill(0, &pSub3->mUnk_2500, sizeof(SaveSub6)); - _MI_CpuCopy(&pSub2->mUnk_2500, &pSub3->mUnk_2500, sizeof(SaveSub6)); + MI_CpuClearFast(&pSub3->mUnk_2500, sizeof(SaveSub6)); + MI_CpuCopyFast(&pSub2->mUnk_2500, &pSub3->mUnk_2500, sizeof(SaveSub6)); this->mSaveSlotIndex = saveSlotIndex; this->func_ov019_020d1538(); @@ -362,7 +357,7 @@ ARM void SaveFile::func_ov019_020d1808(unk32 param1) { SaveSlot *pSub2 = &this->mSlots[param1]; stack_struct2 stack1[5]; - if (CARD_ReadWriteBackupAsync(pSub2, param1 * SAVE_DATA_SIZE, sizeof(SaveSlot), 0, 0, 0, 6, 1, 0) == 0) { + if (CARD_ReadFlashAsync((u32) pSub2, (void *) (param1 * SAVE_DATA_SIZE), sizeof(SaveSlot), NULL, NULL) == 0) { return; } @@ -398,7 +393,7 @@ ARM void SaveFile::func_ov019_020d1808(unk32 param1) { if (stack1[i].mUnk_00 != 0) { if (stack1[i].mUnk_04 == 0 || stack1[i].mUnk_00 != stack1[i * 2].mUnk_04) { - _MI_CpuCopy(puVar5, puVar5 + data_ov019_020d1bd4[i], data_ov019_020d1bd4[i]); + MI_CpuCopyFast(puVar5, puVar5 + data_ov019_020d1bd4[i], data_ov019_020d1bd4[i]); this->mUnk_04E00[param1][1].mUnk_00 |= 1 << (i & 0xFF); } } else { @@ -407,7 +402,7 @@ ARM void SaveFile::func_ov019_020d1808(unk32 param1) { if (stack1[i * 2].mUnk_04 == 0) { this->mUnk_04E00[param1][1].mUnk_00 |= 1 << (i & 0xFF); } else { - _MI_CpuCopy(puVar5 + data_ov019_020d1bd4[i], puVar5, data_ov019_020d1bd4[i]); + MI_CpuCopyFast(puVar5 + data_ov019_020d1bd4[i], puVar5, data_ov019_020d1bd4[i]); } } } @@ -432,7 +427,7 @@ ARM void SaveFile::func_ov019_020d1b14(unk32 param1) { pSVar3->mSaveInfo.func_ov000_020a1028(); pSVar3->mSaveInfo.func_ov019_020d14fc(); - _MI_CpuFill(0, &pSVar3->mTreasures, sizeof(SaveTreasures)); + MI_CpuClearFast(&pSVar3->mTreasures, sizeof(SaveTreasures)); for (int i = 0; i < TreasureType_Max; i++) { pSVar3->mTreasures.mTreasureData[0].mUnk_3C[i] = TreasureType_None; } @@ -441,7 +436,7 @@ ARM void SaveFile::func_ov019_020d1b14(unk32 param1) { this->mSlots[param1].mUnk_1D00.func_ov000_020a12a0(); this->mSlots[param1].mUnk_1D00.func_ov019_020d14c0(); - _MI_CpuFill(0, &this->mSlots[param1].mUnk_2500, 0x80); + MI_CpuClearFast(&this->mSlots[param1].mUnk_2500, 0x80); this->mSlots[param1].mUnk_2500.func_ov019_020d15cc(); this->mSlots[param1].mUnk_2600.func_ov000_020a10f4(); diff --git a/src/019_MainSelect/FileSelectMain.cpp b/src/019_MainSelect/FileSelectMain.cpp index 53973097..c913f9be 100644 --- a/src/019_MainSelect/FileSelectMain.cpp +++ b/src/019_MainSelect/FileSelectMain.cpp @@ -7,10 +7,10 @@ #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_ov000_020b50c0.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" -#include "regs.h" + +#include extern "C" { -void _G2_SetBlend(void *pReg, unk32 param1, unk32 param2, unk32 param3, unk32 param4); void func_ov000_02062e44(void *param1, void *param2); }; @@ -185,9 +185,9 @@ ARM FileSelectMain::FileSelectMain() : data_0204a110.func_020195a0("MSB:SelectBG.nclr", 0, 6, 0); // Test1 aauStack_94[6]; // Test2 aauStack_48; - REG_DISPCNT &= 0xFFFFE0FF; - REG_DISPCNT |= 0x00001C00; - _G2_SetBlend(®_BLDCNT, 4, 8, 0, 0x10); + + GX_SetVisiblePlane(28); + G2_SetBlendAlpha(4, 8, 0, 16); this->mUnk_0C.Append(&this->mUnk_005C); this->func_ov019_020c63dc(); this->func_ov019_020c6d10(); @@ -766,7 +766,7 @@ ARM void FileSelectMain::func_ov019_020c7878() { this->mUnk_15D4.mUnk_2A = true; this->mUnk_18EC.mUnk_2A = true; this->mUnk_005C.mUnk_2A = true; - REG_BLDALPHA = 0x1010; + G2_ChangeBlendAlpha(16, 16); } ARM void FileSelectMain::func_ov019_020c78ac() { @@ -1135,7 +1135,7 @@ ARM void FileSelectMain::vfunc_08(Input *pButtons, TouchControl *pTouchControl) CALL_PTMF(PTMF, data_ov019_020d1f94[this->mState]); this->mUnk_002C.UpdateLogic(); - REG_BLDALPHA = this->mUnk_002C.func_0201eaa0() | 0x1000; + G2_ChangeBlendAlpha(this->mUnk_002C.func_0201eaa0(), 16); } ARM void FileSelectMain::func_ov019_020c8290() { diff --git a/src/019_MainSelect/FileSelectManager.cpp b/src/019_MainSelect/FileSelectManager.cpp index 4d2bbc28..dc9165ca 100644 --- a/src/019_MainSelect/FileSelectManager.cpp +++ b/src/019_MainSelect/FileSelectManager.cpp @@ -3,7 +3,7 @@ #include "Unknown/UnkStruct_0204a110.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" #include "Unknown/UnkStruct_ov003_020ba740.hpp" -#include "regs.h" +#include const unk16 data_ov019_020d1bb0[] = {0x01, 0x37, 0x38, 0x39, 0x3C, 0x00}; diff --git a/src/019_MainSelect/FileSelectManager_160.cpp b/src/019_MainSelect/FileSelectManager_160.cpp index fcdec712..cf272924 100644 --- a/src/019_MainSelect/FileSelectManager_160.cpp +++ b/src/019_MainSelect/FileSelectManager_160.cpp @@ -1,7 +1,8 @@ #include "FileSelect/FileSelect.hpp" #include "Unknown/UnkStruct_0204a088.hpp" #include "Unknown/UnkStruct_0204a110.hpp" -#include "regs.h" + +#include extern "C" GameModeManagerBase_104 *func_ov003_020b6520(void *param1, void *param2); @@ -51,8 +52,7 @@ ARM void FileSelectManager_160::vfunc_10(unk32 param1, unk32 param2) { this->mUnk_10->Detach(); this->mUnk_10->func_ov019_020cb664(); this->mUnk_14 = func_ov003_020b6520(&this->mUnk_18, this->mUnk_1C); - REG_DISPCNT &= 0xFFFFE0FF; - REG_DISPCNT |= 0x1F00; + GX_SetVisiblePlane(31); data_0204999c.func_02013070(); } @@ -94,8 +94,7 @@ ARM void FileSelectManager_160::vfunc_20(unk32 param1, unk32 param2) { this->mUnk_10->func_ov019_020cb5dc(); this->mUnk_10->func_ov019_020cb718(); - REG_DISPCNT &= 0xFFFFE0FF; - REG_DISPCNT |= 0x1C00; + GX_SetVisiblePlane(28); data_0204999c.func_02013070(); } diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index 39b2f215..842453cb 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -3,13 +3,13 @@ #include "System/Random.hpp" #include "Unknown/UnkStruct_0204af1c.hpp" #include "global.h" -#include "regs.h" + +#include +#include extern "C" { void func_0200a7b0(unk32 param1, void *param2, void *param3, void *param4, unk32 param5, unk32 param6, unk32 param7, unk32 param8); -void _G2_SetBlend(void *pReg, unk32 param1, unk32 param2, unk32 param3, unk32 param4); -void DC_FlushAll(); }; FileSelectOptionsManager *gpFSOptionsManager = NULL; @@ -47,9 +47,8 @@ ARM FileSelectSubScreen::FileSelectSubScreen() : this->mUnk_0FA8.func_02017520("TPD:Tape_d", "TPD:Tape_d", NULL); this->mUnk_0FE4.func_02017520("TPE:Tape_e", "TPE:Tape_e", NULL); - REG_DISPCNT_SUB &= ~0x00001F00; - REG_DISPCNT_SUB |= 0x00001F00; - _G2_SetBlend(®_BLDCNT_SUB, 0x01, 0x1E, 0x08, 0x0A); + GXS_SetVisiblePlane(31); + G2S_SetBlendAlpha(1, 30, 8, 10); { UnkStruct2 stack_narc("Screen/Bg/Cover.bin", 1); @@ -75,9 +74,9 @@ ARM void FileSelectSubScreen::vfunc_08(Input *pButtons, TouchControl *pTouchCont this->mUnk_0024 = this->mUnk_0020; this->mUnk_0020 += 0x800; - REG_BG1OFS_SUB = ROUND_Q20(this->mUnk_0020) & 0x1FF; - REG_BG2OFS_SUB = (ROUND_Q20(this->mUnk_0020) + 0x100) & 0x1FF; - REG_BG3OFS_SUB = (ROUND_Q20(this->mUnk_0020) / 2) & 0x1FF; + G2S_SetBG1Offset(ROUND_Q20(this->mUnk_0020), 0); + G2S_SetBG2Offset(ROUND_Q20(this->mUnk_0020) + 0x100, 0); + G2S_SetBG3Offset(ROUND_Q20(this->mUnk_0020) / 2, 0); if (!(ROUND_Q20(this->mUnk_0020) % 256) && (ROUND_Q20(this->mUnk_0024) % 256)) { switch (this->mUnk_001C) { diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index a551ad03..be2f67c5 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -25,13 +25,12 @@ #include "Unknown/UnkStruct_ov026_0213f578.hpp" #include "Unknown/UnkStruct_ov026_0213f590.hpp" #include "Unknown/UnkStruct_ov031_02118fa4.hpp" -#include "regs.h" #include "versions.h" +#include +#include + extern "C" { -void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); -void GXS_SetGraphicsMode(unk32 param1); -void DC_FlushAll(); void func_02019b3c(); void func_02019c4c(); void func_02019a74(); @@ -56,13 +55,11 @@ AdventureModeManager::~AdventureModeManager() { } void AdventureModeManager::func_ov024_020c5288() { - REG_DISPCNT &= ~0x1F00; - REG_DISPCNT |= 0x1100; + GX_SetVisiblePlane(17); } void AdventureModeManager::func_ov024_020c52a0() { - REG_DISPCNT &= ~0x1F00; - REG_DISPCNT |= 0x1100; + GX_SetVisiblePlane(17); } void AdventureModeManager::func_ov024_020c52b8() { @@ -81,8 +78,8 @@ void AdventureModeManager::func_ov024_020c52f4() { void AdventureModeManager::func_ov024_020c530c() { GXS_SetGraphicsMode(5); - REG_BG2CNT_SUB = (REG_BG2CNT_SUB & 0x43) | 0x4d08; - REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x43) | 0x4e14; + G2S_SetBG2Control(1, 0, 13, 2, 0); + G2S_SetBG3Control(1, 0, 14, 5, 0); this->func_ov024_020c6db8(0x1C); } @@ -93,11 +90,11 @@ void AdventureModeManager::func_ov024_020c5364() { void AdventureModeManager::func_ov024_020c537c() { GXS_SetGraphicsMode(3); - REG_BG0CNT_SUB = (REG_BG0CNT_SUB & 0x43) | 0x1800; + G2S_SetBG0Control(0, 0, 24, 0, 0); this->func_ov024_020c6d2c(1); - REG_BG2CNT_SUB = (REG_BG2CNT_SUB & 0x43) | 0x1a0c; - REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x43) | 0x5b14; - this->func_ov024_020c6db8(0x1f); + G2S_SetBG2Control(0, 0, 26, 3, 0); + G2S_SetBG3Control(1, 0, 27, 5, 0); + this->func_ov024_020c6db8(0x1F); } void AdventureModeManager::func_ov024_020c53e8() { @@ -126,8 +123,7 @@ void AdventureModeManager::func_ov024_020c53e8() { data_0204a110.mUnk_D9C.func_0201c494(0); if (data_0204a110.mUnk_008 == 5) { - REG_DISPCNT &= ~0x1F00; - REG_DISPCNT |= 0x0200; + GX_SetVisiblePlane(2); } break; case 4: @@ -142,8 +138,7 @@ void AdventureModeManager::func_ov024_020c53e8() { data_0204a110.mUnk_D9C.func_0201c494(1); if (data_0204a110.mUnk_008 == 5) { - REG_DISPCNT &= ~0x1F00; - REG_DISPCNT |= 0x0200; + GX_SetVisiblePlane(2); } break; case 5: @@ -180,7 +175,7 @@ void AdventureModeManager::vfunc_24() { this->func_ov024_020c5cec(); } - if (CHECK_BUTTON_COMBO(this->mButtons.press, BTN_START) && this->mUnk_15C->mUnk_47) { + if (CHECK_BUTTON_COMBO(this->mButtons.press, PAD_BUTTON_START) && this->mUnk_15C->mUnk_47) { this->mUnk_15C->func_ov017_020c3c64(); } @@ -216,7 +211,7 @@ void AdventureModeManager::vfunc_24() { } bool var_r0; - if (CHECK_BUTTON_COMBO(this->mButtons.press, BTN_START) && data_027e09a4->IsNotCutscene()) { + if (CHECK_BUTTON_COMBO(this->mButtons.press, PAD_BUTTON_START) && data_027e09a4->IsNotCutscene()) { if (!data_027e09b8->func_ov000_020732dc(0) && !data_027e09b8->func_ov000_020732dc(1)) { if (!data_027e09b8->func_ov000_020732dc(2) && data_0204e5f8.mUnk_3A == 0 && data_0204e5f8.mUnk_3E == 0 && !data_0204e5f8.mUnk_18) { @@ -307,7 +302,7 @@ void AdventureModeManager::vfunc_24() { if (data_0204e5f8.mUnk_3A == 0 && data_0204e5f8.mUnk_3E == 0 && !data_0204e5f8.mUnk_18) { // should we open the menu press = this->mButtons.press; - if (CHECK_BUTTON_COMBO(press, BTN_DRIGHT) || CHECK_BUTTON_COMBO(press, BTN_Y)) { + if (CHECK_BUTTON_COMBO(press, PAD_KEY_RIGHT) || CHECK_BUTTON_COMBO(press, PAD_BUTTON_Y)) { if (this->func_ov024_020c5dac() != 0) { if (data_0204a088->mUnk_00 != 1) { return; @@ -327,7 +322,7 @@ void AdventureModeManager::vfunc_24() { // should we switch to the map screen press = this->mButtons.press; - if (CHECK_BUTTON_COMBO(press, BTN_DDOWN) || CHECK_BUTTON_COMBO(press, BTN_B)) { + if (CHECK_BUTTON_COMBO(press, PAD_KEY_DOWN) || CHECK_BUTTON_COMBO(press, PAD_BUTTON_B)) { if (this->func_ov024_020c5f70() != 0) { switch (data_0204a088->mUnk_00) { case 1: @@ -370,7 +365,7 @@ void AdventureModeManager::vfunc_24() { } // should we open the collection - if (CHECK_BUTTON_COMBO(this->mButtons.press, BTN_SELECT)) { + if (CHECK_BUTTON_COMBO(this->mButtons.press, PAD_BUTTON_SELECT)) { if (this->func_ov024_020c60f4()) { switch (data_0204a088->mUnk_00) { case 1: @@ -406,8 +401,8 @@ void AdventureModeManager::vfunc_24() { // should we open the rail map press = this->mButtons.press; - if (!CHECK_BUTTON_COMBO(press, BTN_DLEFT)) { - if (!CHECK_BUTTON_COMBO(press, BTN_A)) { + if (!CHECK_BUTTON_COMBO(press, PAD_KEY_LEFT)) { + if (!CHECK_BUTTON_COMBO(press, PAD_BUTTON_A)) { return; } @@ -914,9 +909,9 @@ void AdventureModeManager::func_ov024_020c6d20(unk32 param1) { void AdventureModeManager::func_ov024_020c6d2c(unk32 param1) { if (param1) { - REG_BG1CNT_SUB = (REG_BG1CNT_SUB & 0x43) | 0x1904; + G2S_SetBG1Control(0, 0, 25, 1, 0); } else { - REG_BG1CNT_SUB = (REG_BG1CNT_SUB & 0x43) | 0x0C00; + G2S_SetBG1Control(0, 0, 12, 0, 0); } } diff --git a/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp b/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp index 26996f2a..18627454 100644 --- a/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp @@ -6,10 +6,9 @@ #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" #include "Unknown/UnkStruct_ov024_020d8660.hpp" -#include "regs.h" #include "versions.h" -extern "C" void GX_func_0008(void *, unk32, unk32); +#include AdventureModeManager_15C_20_00::AdventureModeManager_15C_20_00(bool param1) : mUnk_778(false), diff --git a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp index a69b39c4..207f036c 100644 --- a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp @@ -7,7 +7,9 @@ #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "Unknown/UnkStruct_ov000_020b51b8.hpp" #include "Unknown/UnkStruct_ov024_020d86a0.hpp" -#include "regs.h" + +#include +#include extern "C" void func_02019b3c(); extern "C" AdventureModeManager_160_18 *func_ov006_020b6ab0(void *, void *); @@ -165,7 +167,7 @@ void AdventureModeManager_160::func_ov024_020c7d4c(unk32 param1) { } } - REG_BG2CNT_SUB = (REG_BG2CNT_SUB & ~0x03) | 0x01; + G2S_SetBG2Priority(1); } void AdventureModeManager_160::vfunc_18(unk32 param1) { diff --git a/src/024_MainGame/Game/AdventureModeManager_170_024.cpp b/src/024_MainGame/Game/AdventureModeManager_170_024.cpp index 3131fa32..6cab36a4 100644 --- a/src/024_MainGame/Game/AdventureModeManager_170_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_170_024.cpp @@ -6,7 +6,8 @@ #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "Unknown/UnkStruct_ov000_020b4f70.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" -#include "regs.h" + +#include extern "C" GameModeManagerBase_104 *func_ov008_020b6520(void *); @@ -43,8 +44,8 @@ void AdventureModeManager_170::vfunc_0C(unk32 param1) { this->mUnk_38--; if (this->mUnk_38 == 0) { - REG_DISPCNT = (REG_DISPCNT & ~0x1F00) | 0x1000; - REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x1F00) | 0x1000; + GX_SetVisiblePlane(16); + GXS_SetVisiblePlane(16); } } } diff --git a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp index e11b9409..ff634cc9 100644 --- a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp @@ -8,7 +8,8 @@ #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" -#include "regs.h" + +#include extern "C" AdventureModeManager_18C_10 *func_ov011_020b6520(void *, int); extern "C" void func_ov011_020b84f0(s16 *param1, void *, unk32 param2); @@ -199,9 +200,9 @@ void AdventureModeManager_18C::func_ov024_020c9c6c() { this->mUnk_10 = func_ov011_020b6520(&this->mUnk_0C, var_r4); } - REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x1F00) | 0x1C00; - REG_BG2CNT_SUB = (REG_BG2CNT_SUB & ~0x03) | 0x03; - REG_BG3CNT_SUB = (REG_BG3CNT_SUB & ~0x03) | 0x02; + GXS_SetVisiblePlane(28); + G2S_SetBG2Priority(3); + G2S_SetBG3Priority(2); } void AdventureModeManager_18C::vfunc_14(unk32 param1) { diff --git a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp index 221b9a70..ca08dce5 100644 --- a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp @@ -2,7 +2,8 @@ #include "Unknown/UnkStruct_0204a088.hpp" #include "Unknown/UnkStruct_0204e5f8.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" -#include "regs.h" + +#include extern "C" AdventureModeManager_190_10 *func_ov011_020b8e54(void *, int); @@ -39,8 +40,8 @@ void AdventureModeManager_190::vfunc_0C(unk32 param1) { void AdventureModeManager_190::vfunc_10(unk32 param1, unk32 param2) { if (param1 == 1) { data_0204a088->func_ov000_02061248(); - this->mUnk_10 = func_ov011_020b8e54(&this->mUnk_0C, this->mUnk_60); - REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x1F00) | 0x1800; + this->mUnk_10 = func_ov011_020b8e54(&this->mUnk_0C, this->mUnk_60); + GXS_SetVisiblePlane(24); } } diff --git a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp index 97f92fe1..13248d3c 100644 --- a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp @@ -1,33 +1,19 @@ #include "MainGame/AdventureMode.hpp" #include "Save/SaveManager.hpp" #include "System/SysNew.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_0204a110.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_ov000_020b52b4.hpp" #include "Unknown/UnkStruct_ov017_020c3f70.hpp" +#include + +#include +#include extern "C" { -void GX_LoadBG0Char(void *ptr, u32 offset, u32 size); -void GX_LoadBG1Char(void *ptr, u32 offset, u32 size); -void GX_LoadBG2Char(void *ptr, u32 offset, u32 size); -void GX_LoadBG3Char(void *ptr, u32 offset, u32 size); - -void GXS_LoadBG0Char(void *ptr, u32 offset, u32 size); -void GXS_LoadBG1Char(void *ptr, u32 offset, u32 size); -void GXS_LoadBG2Char(void *ptr, u32 offset, u32 size); -void GXS_LoadBG3Char(void *ptr, u32 offset, u32 size); - -void GXS_BeginLoadBGExtPltt(void); -void GXS_LoadBGExtPltt(void *ptr, u32 offset, u32 size); -void GXS_EndLoadBGExtPltt(void); - -void DC_func_0004(void *, int); -void DC_func_0002(); - void func_ov000_0205a950(u8 bgType, bool isTopScreen, bool); void func_ov000_0205a944(u8 bgType, bool isTopScreen, bool); -void func_01ffb644(q20 x, q20 y); +void func_01ffb644(fx32 x, fx32 y); unk32 func_01ffb558(); void func_02029058(void *, void *); @@ -64,7 +50,7 @@ AdventureModeManager_1B8_Base::~AdventureModeManager_1B8_Base() { } void AdventureModeManager_1B8_Base::func_ov024_020d0698() { - _MI_CpuFill(0, this->mUnk_18, this->mUnk_14); + MI_CpuClearFast(this->mUnk_18, this->mUnk_14); this->mUnk_0A = true; this->mUnk_0D = true; this->mUnk_00 = ADVMGR_UNK; @@ -272,7 +258,7 @@ void AdventureModeManager_1B8_Base::func_ov024_020d0a64() { if (var_r6 != 0) { UnkDataStruct2 sp4(var_r6); - _MI_CpuFill(0, sp4.unk_00, var_r6); + MI_CpuClearFast(sp4.unk_00, var_r6); this->TryLoadBGChar(sp4.unk_00, GetUnkValue2(), var_r6); } @@ -281,7 +267,7 @@ void AdventureModeManager_1B8_Base::func_ov024_020d0a64() { if (var_r7 != 0) { UnkDataStruct2 sp0(var_r7); - _MI_CpuFill(0, sp0.unk_00, var_r7); + MI_CpuClearFast(sp0.unk_00, var_r7); this->TryLoadBGChar(sp0.unk_00, GetUnkValue2() + GetUnkValue(var_r6), var_r7); } } @@ -656,7 +642,7 @@ void AdventureModeManager_1B8::func_ov024_020d1564(const AdventureModeManager_1B void AdventureModeManager_1B8::func_ov024_020d1614(void *param1) { this->mUnk_28 = param1; - _MI_CpuFill(0, this->mUnk_28, 0x1000); + MI_CpuClearFast(this->mUnk_28, 0x1000); data_ov017_020c3f70.func_ov017_020bba78(); } diff --git a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp b/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp index 23d0c50f..b8008a98 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp @@ -27,7 +27,7 @@ UnkStruct_027e0998 *UnkStruct_027e0998::Create() { return new(HeapIndex_1) UnkStruct_027e0998(); } -bool UnkStruct_027e0998::vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3) { +bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) { if (data_027e09a4->IsCutscene()) { CutsceneParamsEntry *pEntry = Cutscene_GetParamEntry(data_027e09a4->CurrentCSIndex()); @@ -83,7 +83,7 @@ bool UnkStruct_027e0998::vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3) { return false; } - Vec3p pos; + VecFx32 pos; pos.x = data_027e0cd8->mUnk_24.x; pos.y = data_027e0cd8->mUnk_24.y; pos.z = data_027e0cd8->mUnk_24.z; @@ -103,7 +103,7 @@ bool UnkStruct_027e0998::func_ov024_020c716c() { return false; } -bool UnkStruct_027e0998::func_ov024_020c7214(Vec3p *pPos, Vec2s *param2, u16 *param3) { +bool UnkStruct_027e0998::func_ov024_020c7214(VecFx32 *pPos, Vec2s *param2, u16 *param3) { bool temp_r4 = this->UnkStruct_027e0998_Base::vfunc_00(pPos, param2, param3); if (data_027e09a4->func_01ffd3d8()) { diff --git a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp b/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp index aab210c4..c06ac3b8 100644 --- a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp @@ -6,12 +6,9 @@ #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_ov000_020b51b8.hpp" #include "Unknown/UnkStruct_ov024_020d8660.hpp" -#include "regs.h" #include "versions.h" -extern "C" { -void GX_func_0008(void *, unk32, unk32); -} +#include extern unk32 data_ov000_020b3000; diff --git a/src/024_MainGame/MiscAdvManager.cpp b/src/024_MainGame/MiscAdvManager.cpp index dbc7808b..595d406b 100644 --- a/src/024_MainGame/MiscAdvManager.cpp +++ b/src/024_MainGame/MiscAdvManager.cpp @@ -1,8 +1,8 @@ #include "MainGame/MiscAdvManager.hpp" #include "Item/ItemManager.hpp" #include "System/SysNew.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_02049bac.hpp" +#include extern "C" u8 func_ov000_020a9a50(); @@ -21,7 +21,7 @@ MiscAdvManager::~MiscAdvManager() {} void MiscAdvManager::func_ov024_020d6310(MiscAdvManager *pSrc) { u16 local_10; - _MI_CpuCopy(pSrc, this, sizeof(MiscAdvManager)); + MI_CpuCopyFast(pSrc, this, sizeof(MiscAdvManager)); data_02049bac.func_02014a34(&local_10); if (local_10 == this->mUnk_28) { diff --git a/src/024_MainGame/UnkTitleCardSystem1_024.cpp b/src/024_MainGame/UnkTitleCardSystem1_024.cpp index b981e77f..261433f3 100644 --- a/src/024_MainGame/UnkTitleCardSystem1_024.cpp +++ b/src/024_MainGame/UnkTitleCardSystem1_024.cpp @@ -1,6 +1,5 @@ #include "Game/GameModeManager.hpp" #include "System/OverlayManager.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_02049be0.hpp" #include "Unknown/UnkStruct_0204a088.hpp" #include "Unknown/UnkStruct_0204a110.hpp" @@ -11,9 +10,10 @@ #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "Unknown/UnkStruct_ov000_020b4f84.hpp" #include "Unknown/UnkStruct_ov024_020d8694.hpp" +#include extern "C" unk32 func_02014fe0(); -extern "C" q20 func_01ffb428(unk32, unk32); +extern "C" fx32 func_01ffb428(unk32, unk32); UnkTitleCardSystem1::UnkTitleCardSystem1(GameModeManagerBase_004 *param1) : mUnk_004(4), @@ -556,9 +556,9 @@ void UnkStruct_ov024_020d8694_188::vfunc_00() { } void UnkStruct_ov024_020d8694_188::vfunc_04(unk8 *param1) { - Vec4p local; - local.coords = data_027e0120.coords; - local.w = func_01ffb428(0x1000, this->mUnk_144.func_0201ec30()); + MtxFx22 local; + local = data_027e0120; + local.w = func_01ffb428(0x1000, this->mUnk_144.func_0201ec30()); UnkDataStruct1 local_30(&local, 0x40); this->func_ov024_020cb654(param1, &local_30); diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp index 67800757..a73edf59 100644 --- a/src/025_Title/TitleScreen.cpp +++ b/src/025_Title/TitleScreen.cpp @@ -6,9 +6,8 @@ #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_027e0954.hpp" #include "Unknown/UnkStruct_ov000_020b5214.hpp" -#include "regs.h" #include "versions.h" -#include +#include #include @@ -255,7 +254,7 @@ void TitleScreen::func_ov025_020c53d0(Input *pButtons, TouchControl *pTouchContr } void TitleScreen::func_ov025_020c55a4(Input *pButtons, TouchControl *pTouchControl) { - if (CHECK_TOUCH_FLAGS(pTouchControl, TouchFlag_UntouchedNow) || CHECK_BUTTON_COMBO(pButtons->press, BTN_START)) { + if (CHECK_TOUCH_FLAGS(pTouchControl, TouchFlag_UntouchedNow) || CHECK_BUTTON_COMBO(pButtons->press, PAD_BUTTON_START)) { data_ov000_020b5214.func_ov000_0206db44(0x0B); this->func_ov025_020c4ea0(TitleScreenState_ToFileSelect); } @@ -349,15 +348,14 @@ void TitleScreen::vfunc_0C(unk32 param1) { } void TitleScreen::func_ov025_020c592c() { - REG_DISPCNT &= ~0xE000; - REG_DISPCNT |= 0x8000; + GX_SetVisibleWindows(4); REG_WINOUT = (REG_WINOUT & ~0x3F00) | 0x1900; REG_WINOUT = (REG_WINOUT & ~0x3F) | 0x09; } void TitleScreen::func_ov025_020c5964() { - REG_DISPCNT &= ~0xE000; + GX_SetVisibleWindows(0); REG_WINOUT = (REG_WINOUT & ~0x3F) | 0x30; } diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp index d56b2ed7..63f53072 100644 --- a/src/025_Title/TitleScreenManager.cpp +++ b/src/025_Title/TitleScreenManager.cpp @@ -1,13 +1,8 @@ #include "TitleScreen/TitleScreen.hpp" -#include "regs.h" +#include const unk16 data_ov025_020c5a0c[] = {0x0016, 0x003C}; -extern "C" { -void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); -void GXS_SetGraphicsMode(unk32 param1); -} - ARM TitleScreenManager *TitleScreenManager::Create(unk32 param1) { return new(HeapIndex_1) TitleScreenManager(param1); } diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index 0a4e99a3..6dbe7efc 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -7,8 +7,8 @@ #include "Unknown/UnkStruct_027e0cec.hpp" #include "Unknown/UnkStruct_027e0d34.hpp" -extern "C" void func_01ffedac(u16 *, Vec3p *); -extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, Vec3p *); +extern "C" void func_01ffedac(u16 *, VecFx32 *); +extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *); extern "C" unk32 func_02017158(); extern "C" void func_ov000_02098838(); extern "C" void func_ov017_020bf99c(); @@ -33,7 +33,7 @@ ARM ActorProfileRupee::ActorProfileRupee() : } struct stack_struct { - Vec3p sp4; // 4 8 c + VecFx32 sp4; // 4 8 c unk32 pad1; unk16 sp14; u8 pad2[0x16]; @@ -44,7 +44,7 @@ struct stack_struct { }; // non-matching -ARM void ActorRupee::func_ov031_020e8d2c(Vec3p *param1, u8 param2, unk32 param3, unk32 param4) { +ARM void ActorRupee::func_ov031_020e8d2c(VecFx32 *param1, u8 param2, unk32 param3, unk32 param4) { stack_struct stack; stack.sp2C = 0; stack.func_ov000_020975f8(); @@ -99,7 +99,7 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mUnk_96 = 0x1E0; this->mUnk_94 = 0; { - Vec3p vel; + VecFx32 vel; vel.x = 0; vel.y = 0; vel.z = 0; @@ -114,16 +114,16 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mUnk_96 = 0x1E0; this->mUnk_94 = 0; { - Vec3p vel; + VecFx32 vel; - q20 vx = gRandom.Next32(0, 0x223) - 0x111; - vel.x = vx; + fx32 vx = gRandom.Next32(0, 0x223) - 0x111; + vel.x = vx; - q20 vy = gRandom.Next32(0, 0x333) + 0x555; - vel.y = vy; + fx32 vy = gRandom.Next32(0, 0x333) + 0x555; + vel.y = vy; - q20 vz = gRandom.Next32(0, 0x223) - 0x111; - vel.z = vz; + fx32 vz = gRandom.Next32(0, 0x223) - 0x111; + vel.z = vz; this->mVel.x = vel.x; this->mVel.y = vel.y; @@ -136,7 +136,7 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mUnk_96 = 0x1E0; this->mUnk_94 = 0; { - Vec3p vel; + VecFx32 vel; vel.x = 0; vel.y = 0x800; vel.z = 0; @@ -207,7 +207,7 @@ ARM void ActorRupee::func_ov031_020e9068() { } ARM void ActorRupee::func_ov031_020e9108() { - Vec3p vel; + VecFx32 vel; vel.x = gRandom.Next32(0, 0x19B); vel.y = gRandom.Next32(0, 0x19A); @@ -343,8 +343,8 @@ ARM void ActorRupee::func_ov031_020e9438() { ARM void ActorRupee::func_ov031_020e9450() { this->func_ov017_020bf9c8(gpActorManager->func_01fff3b4(this->mUnk_BC)); - Vec3p_Copy(&this->mPos, &this->mPrevPos); - Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); if (!GET_FLAG(this->mFlags, ActorFlag_5)) { return; @@ -560,7 +560,7 @@ ARM void ActorRupee::func_ov031_020e9904(unk32 param1) { extern "C" void func_01fff17c(unk16 *, UnkStruct_027e0ce0 *, unk32); extern "C" void func_02018114(unk16 *, unk32); -typedef void (*UnkCallback_vfunc_20)(Vec3p *); +typedef void (*UnkCallback_vfunc_20)(VecFx32 *); struct UnkStruct_ov031_02113588 { /* 00 */ UnkCallback_vfunc_20 callback; @@ -585,7 +585,7 @@ ARM void ActorRupee::vfunc_20() { short sStack_1c; u16 uStack_1e; u16 uStack_20; - Vec3p test; + VecFx32 test; uStack_1a = 0; uVar2 = 0x666; @@ -686,7 +686,7 @@ ARM void ActorRupee::vfunc_20() { ARM void ActorRupee::func_ov031_020e9b88() { func_ov000_02098838(); - Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); if (this->mUnk_5C.mInitialPos.y < this->mPos.y + this->mVel.y) { this->mUnk_44 = 0x9C; @@ -702,7 +702,7 @@ ARM void ActorRupee::func_ov031_020e9b88() { ARM void ActorRupee::func_ov031_020e9be8() { func_ov000_02098838(); - Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); if (this->mVel.y < 0) { this->mUnk_44 = 3; @@ -713,12 +713,12 @@ ARM void ActorRupee::func_ov031_020e9be8() { extern "C" void func_ov000_0205c1f0(unk32 *, unk16); extern unk32 data_ov031_02110aa0[]; extern unk32 data_ov031_02113468[]; -extern "C" void func_ov000_0205c204(unk32 *, Vec3p *, unk32, unk32, unk32); +extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32); // non-matching ARM void ActorRupee::vfunc_2c(unk32 param1) { - Vec3p iStack_18; - Vec3p iStack_28; + VecFx32 iStack_18; + VecFx32 iStack_28; unk32 auStack_30[4]; s32 uVar2; diff --git a/src/031_Land/Actor/ActorUnkNORE.cpp b/src/031_Land/Actor/ActorUnkNORE.cpp index 432fd24f..4f94b82b 100644 --- a/src/031_Land/Actor/ActorUnkNORE.cpp +++ b/src/031_Land/Actor/ActorUnkNORE.cpp @@ -3,7 +3,7 @@ #include "Unknown/UnkStruct_027e0cd8.hpp" -extern "C" void func_01ffedac(Vec2b *, Vec3p *); +extern "C" void func_01ffedac(Vec2b *, VecFx32 *); ARM DECL_PROFILE(ActorProfileUnkNORE); diff --git a/src/031_Land/MapObject/MapObjectChestBase.cpp b/src/031_Land/MapObject/MapObjectChestBase.cpp index b78e33a2..1dbf99ae 100644 --- a/src/031_Land/MapObject/MapObjectChestBase.cpp +++ b/src/031_Land/MapObject/MapObjectChestBase.cpp @@ -8,8 +8,8 @@ extern "C" unk32 func_0200f218(unk32, const char *); extern "C" void func_0200b58c(void *); -extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *); -extern "C" void func_01ffcfcc(Vec3p *, Vec3p *, Vec3p *); +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *); +extern "C" void func_01ffcfcc(VecFx32 *, VecFx32 *, VecFx32 *); struct UnkStruct_ov031_02117c84 { u16 mUnk_00; @@ -90,14 +90,14 @@ ARM bool MapObjectChestBase::vfunc_00() { // non-matching ARM void MapObjectChestBase::vfunc_04() { - q20 iVar2; + fx32 iVar2; UnkStruct_027e0cd8_0c *pUVar5; - Vec3p sp48; - Vec3p sp3C; - Vec3p local_38; - Vec3p local_44; - Vec3p sp18; - Vec3p spC; + VecFx32 sp48; + VecFx32 sp3C; + VecFx32 local_38; + VecFx32 local_44; + VecFx32 sp18; + VecFx32 spC; Vec2b local_5e; Vec2b local_62; Vec2b local_64; @@ -125,7 +125,7 @@ ARM void MapObjectChestBase::vfunc_04() { spC.y = FLOAT_TO_Q20(1.0f); spC.z = FLOAT_TO_Q20(0.5f); - Vec3p_Add((Vec3p *) &sp3C, &spC, (Vec3p *) &sp3C); + VecFx32_Add((VecFx32 *) &sp3C, &spC, (VecFx32 *) &sp3C); local_68.x = this->mUnk_3A.x; local_68.y = this->mUnk_3A.y; @@ -180,7 +180,7 @@ ARM void MapObjectChestBase::vfunc_04() { } } - func_01ffcfcc(&local_44, &sp48, (Vec3p *) &sp3C); + func_01ffcfcc(&local_44, &sp48, (VecFx32 *) &sp3C); this->mUnk_050.mUnk_0C.x = local_44.x; this->mUnk_050.mUnk_0C.y = local_44.y; @@ -251,8 +251,8 @@ ARM bool MapObjectChestBase::vfunc_44() { } ARM void MapObjectChestBase::func_ov031_02103f48() { - Vec3p local_10; - Vec3p_Init(this->mPos.x, this->mPos.y + 0x800, this->mPos.z, &local_10); + VecFx32 local_10; + VecFx32_Init(this->mPos.x, this->mPos.y + 0x800, this->mPos.z, &local_10); data_027e0cec->func_ov000_0209feac(0x81f, &local_10, 4, 0, 0); } diff --git a/src/031_Land/MapObject/MapObjectDoorBase.cpp b/src/031_Land/MapObject/MapObjectDoorBase.cpp index 616a2f15..a4e38e47 100644 --- a/src/031_Land/MapObject/MapObjectDoorBase.cpp +++ b/src/031_Land/MapObject/MapObjectDoorBase.cpp @@ -1,10 +1,10 @@ #define DOORBASE_DTOR_NOINLINE #include "MapObject/MapObjectDoorBase.hpp" #include "Unknown/Common.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_027e0998.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" +#include extern "C" unk32 func_01ffb464(unk32 param1); extern "C" void func_01ff9218(void *, unk32, unk32); @@ -310,7 +310,7 @@ struct UnkStackStruct { s16 mUnk_04; s16 mUnk_06; unk32 mUnk_08; - Vec3p mUnk_0C; + VecFx32 mUnk_0C; u16 mUnk_18; u16 mUnk_1A; u16 mUnk_1C; @@ -367,13 +367,13 @@ ARM void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) { auStack_5c.mUnk_3B = 0; } - UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(3); - auStack_5c.mUnk_18 = puVar5->mUnk_00; - auStack_5c.mUnk_1A = puVar5->mUnk_02; - auStack_5c.mUnk_1C = puVar5->mUnk_04; - auStack_5c.mUnk_1E = puVar5->mUnk_06; - auStack_5c.mUnk_20 = puVar5->mUnk_08; - auStack_5c.mUnk_24.coords = puVar5->mUnk_0C.coords; + UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(3); + auStack_5c.mUnk_18 = puVar5->mUnk_00; + auStack_5c.mUnk_1A = puVar5->mUnk_02; + auStack_5c.mUnk_1C = puVar5->mUnk_04; + auStack_5c.mUnk_1E = puVar5->mUnk_06; + auStack_5c.mUnk_20 = puVar5->mUnk_08; + auStack_5c.mUnk_24 = puVar5->mUnk_0C; u16 unk_18 = puVar5->mUnk_18; u16 unk_1A = puVar5->mUnk_1A; @@ -455,13 +455,13 @@ ARM void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) { auStack_9c.mUnk_38 |= 0x200; - UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(2); - auStack_9c.mUnk_18 = puVar5->mUnk_00; - auStack_9c.mUnk_1A = puVar5->mUnk_02; - auStack_9c.mUnk_1C = puVar5->mUnk_04; - auStack_9c.mUnk_1E = puVar5->mUnk_06; - auStack_9c.mUnk_20 = puVar5->mUnk_08; - auStack_9c.mUnk_24.coords = puVar5->mUnk_0C.coords; + UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(2); + auStack_9c.mUnk_18 = puVar5->mUnk_00; + auStack_9c.mUnk_1A = puVar5->mUnk_02; + auStack_9c.mUnk_1C = puVar5->mUnk_04; + auStack_9c.mUnk_1E = puVar5->mUnk_06; + auStack_9c.mUnk_20 = puVar5->mUnk_08; + auStack_9c.mUnk_24 = puVar5->mUnk_0C; u16 unk_18 = puVar5->mUnk_18; u16 unk_1A = puVar5->mUnk_1A; @@ -552,7 +552,7 @@ struct stack_struct { }; extern "C" void func_01ff9fbc(Mat2p *, unk32, Mat2p *); -extern q4 data_0203f964[]; +extern fx16 data_0203f964[]; ARM void MapObjectDoorBase::func_ov031_020fcb78(s8 *param1, s8 param2) { Vec2s sp10; @@ -653,8 +653,8 @@ ARM void MapObjectDoorBase::vfunc_44() {} ARM void MapObjectDoorBase::vfunc_4C() {} -ARM void MapObjectDoorBase::vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) { - Vec3p local_20; +ARM void MapObjectDoorBase::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3) { + VecFx32 local_20; *param3 = this->mUnk_14; if (param1 != 0) { @@ -669,7 +669,7 @@ ARM void MapObjectDoorBase::vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) *param3 += -DEG_TO_ANG(180); } - Vec3p_Add(&this->mPos, &local_20, param2); + VecFx32_Add(&this->mPos, &local_20, param2); } ARM void MapObjectDoorBase::func_ov031_020fcf0c(unk32 param1) { diff --git a/src/031_Land/MapObject/MapObjectDoorClick.cpp b/src/031_Land/MapObject/MapObjectDoorClick.cpp index 9dde642d..9a6a1215 100644 --- a/src/031_Land/MapObject/MapObjectDoorClick.cpp +++ b/src/031_Land/MapObject/MapObjectDoorClick.cpp @@ -5,8 +5,8 @@ #include "Unknown/UnkStruct_027e0cec.hpp" extern "C" f32 func_02039f04(unk32); -extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *); -extern "C" void func_01ffcfcc(Vec3p *, Vec3p *, Vec3p *); +extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *); +extern "C" void func_01ffcfcc(VecFx32 *, VecFx32 *, VecFx32 *); extern "C" unk32 func_01ffb428(unk32, unk32); extern "C" unk32 func_01ffb464(unk32 param1); extern "C" void func_01ff9218(void *, unk32, unk32); @@ -49,9 +49,9 @@ ARM u16 MapObjectDoorClick::vfunc2_1C(unk32 param1) { // https://decomp.me/scratch/zmw3b ARM bool MapObjectDoorClick::vfunc_00(void) { - Vec3p local_1c; - Vec3p local_28; - Vec3p local_40[2]; + VecFx32 local_1c; + VecFx32 local_28; + VecFx32 local_40[2]; this->func_ov031_020fbf10(true, false); this->mUnk_8B = true; @@ -223,8 +223,8 @@ ARM void MapObjectDoorClick::vfunc_14(void) { u16 angle = (u16) sVar2; Mat3p m; - Vec3p local_48; - Vec3p temp; + VecFx32 local_48; + VecFx32 temp; Mat3p_InitYRotation(&m, SIN(angle), COS(angle)); temp.x = this->mPos.x - FLOAT_TO_Q20(1.0f) + this->mUnk_70; @@ -350,15 +350,15 @@ ARM void MapObjectDoorClick::vfunc_7C(void) { } ARM void MapObjectDoorClick::vfunc_78(void) { - Vec3p local_24; - Vec3p local_30; - Vec3p VStack_3c; - Vec3p VStack_48; + VecFx32 local_24; + VecFx32 local_30; + VecFx32 VStack_3c; + VecFx32 VStack_48; Mat4x3p m; - Vec3p local_84; - Vec3p local_90; + VecFx32 local_84; + VecFx32 local_90; - Vec3p temp; + VecFx32 temp; temp.x = this->mPos.x; temp.z = this->mPos.z; temp.y = this->mPos.y; @@ -387,13 +387,13 @@ ARM void MapObjectDoorClick::vfunc_78(void) { func_01ffaf74(&local_90, &m, &local_90); func_01ffaf74(&local_84, &m, &local_84); - Vec3p_Add(&local_24, &local_90, &local_24); - Vec3p_Add(&local_24, &local_84, &VStack_3c); + VecFx32_Add(&local_24, &local_90, &local_24); + VecFx32_Add(&local_24, &local_84, &VStack_3c); local_90.x = -local_90.x; local_84.x = -local_84.x; - Vec3p_Add(&local_30, &local_90, &local_30); - Vec3p_Add(&local_30, &local_84, &VStack_48); + VecFx32_Add(&local_30, &local_90, &local_30); + VecFx32_Add(&local_30, &local_84, &VStack_48); if (this->mUnk_68.mUnk_00 != NULL) { this->mUnk_68.mUnk_00->func_ov000_02052c48(&VStack_3c, &local_24); diff --git a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp index ab2eff8a..aef2c3c0 100644 --- a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp +++ b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp @@ -16,8 +16,8 @@ extern "C" void *func_ov000_02077590(unk32); extern "C" unk32 func_01ffb428(unk32, unk32); -extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *); -extern "C" void func_01ff93c0(Vec3p *, q20); +extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *); +extern "C" void func_01ff93c0(VecFx32 *, fx32); extern unk32 data_ov031_02110c00[]; extern UnkStruct_ov000_020b34c4_Callback data_ov000_020b4cc4; @@ -62,7 +62,7 @@ ARM bool MapObjectDoorDangerSpawn::vfunc_00(void) { ARM void MapObjectDoorDangerSpawn::vfunc_04(void) { UnkStruct_027e0cd8_0c *ptr; - Vec3p auStack_20; + VecFx32 auStack_20; if (this->mUnk_20.mUnk_00[1] == 2) { this->mUnk_6C = 0; @@ -159,8 +159,8 @@ struct UnkStruct_Copy { ARM void MapObjectDoorDangerSpawn::vfunc_08(void) { UnkStruct_Copy sp3C; UnkStruct_Copy sp1C; - Vec3p sp10; - Vec3p sp4; + VecFx32 sp10; + VecFx32 sp4; if (this->mUnk_AC < this->mUnk_AE) { this->mUnk_AC++; @@ -521,7 +521,7 @@ ARM bool MapObjectDoorDangerSpawn::vfunc_6C(void) { ARM bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { UnkStruct_027e0cd8_0c *pUVar4; - Vec3p *uVar3; + VecFx32 *uVar3; int iVar1; switch (this->mUnk_20.mUnk_00[1]) { @@ -570,7 +570,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_14(void) { Mat3p m; Mat3p_InitYRotation(&m, SIN((u16) this->mUnk_14), COS((u16) this->mUnk_14)); - Vec3p pos(this->mPos); + VecFx32 pos(this->mPos); pos.y += -(this->mUnk_6C * 2); this->mUnk_94.vfunc_14(&m, &pos); @@ -602,13 +602,13 @@ ARM void MapObjectDoorDangerSpawn::vfunc2_10(void) { // https://decomp.me/scratch/DEJfq ARM void MapObjectDoorDangerSpawn::vfunc_74(void) { - Vec3p local_28; - Vec3p local_34; - Vec3p local_40; - Vec3p local_4c; + VecFx32 local_28; + VecFx32 local_34; + VecFx32 local_40; + VecFx32 local_4c; Mat4x3p m; - q20 b33 = 0xB33; + fx32 b33 = 0xB33; local_34.x = this->mPos.x; local_34.y = this->mPos.y; @@ -637,8 +637,8 @@ ARM void MapObjectDoorDangerSpawn::vfunc_74(void) { func_01ffaf74(&local_40, &m, &local_40); func_01ffaf74(&local_4c, &m, &local_4c); - Vec3p_Add(&local_28, &local_40, &local_28); - Vec3p_Add(&local_34, &local_4c, &local_34); + VecFx32_Add(&local_28, &local_40, &local_28); + VecFx32_Add(&local_34, &local_4c, &local_34); data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_28, 4); data_027e0cec->func_ov000_0209ff8c(&this->mUnk_A8, 0x8CF, &local_34, 4); @@ -694,7 +694,7 @@ ARM unk32 MapObjectDoorDangerSpawn::vfunc_8C(void) { return 0; } -ARM void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) { +ARM void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3) { s16 iVar1; if (!this->mUnk_58) { @@ -702,7 +702,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, Vec3p *param2, unk16 * return; } - Vec3p local_24; + VecFx32 local_24; *param3 = this->mUnk_14; iVar1 = this->mUnk_14 + DEG_TO_ANG(30); if (param1 != 0) { @@ -716,9 +716,9 @@ ARM void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, Vec3p *param2, unk16 * *param3 += DEG_TO_ANG(180); } - Vec3p_Add(&this->mPos, &local_24, param2); + VecFx32_Add(&this->mPos, &local_24, param2); - Vec3p local_30; + VecFx32 local_30; this->mUnk_5A = this->mUnk_14; iVar1 = this->mUnk_14 - DEG_TO_ANG(30); if (param1 != 0) { @@ -731,25 +731,25 @@ ARM void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, Vec3p *param2, unk16 * local_30.y = 0; this->mUnk_5A += DEG_TO_ANG(180); } - Vec3p_Add(&this->mPos, &local_30, &this->mUnk_5C); + VecFx32_Add(&this->mPos, &local_30, &this->mUnk_5C); } -ARM void MapObjectDoorDangerSpawn::func_ov031_020fe5fc(Vec3p *param1, MapObjectDoorDangerSpawn *thisx) { +ARM void MapObjectDoorDangerSpawn::func_ov031_020fe5fc(VecFx32 *param1, MapObjectDoorDangerSpawn *thisx) { if (data_027e0ce0->func_01fff1a4()) { - Vec3p *piVar2 = data_027e0ce0->func_01fff148(1); - Vec3p *piVar3 = data_027e0ce0->func_01fff148(0); + VecFx32 *piVar2 = data_027e0ce0->func_01fff148(1); + VecFx32 *piVar3 = data_027e0ce0->func_01fff148(0); - Vec3p temp; - Vec3p_Init(piVar3->x, piVar3->y, piVar3->z, &temp); + VecFx32 temp; + VecFx32_Init(piVar3->x, piVar3->y, piVar3->z, &temp); - Vec3p pos; - Vec3p_Init(temp.x + piVar2->x, temp.y + piVar2->y, temp.z + piVar2->z, &pos); + VecFx32 pos; + VecFx32_Init(temp.x + piVar2->x, temp.y + piVar2->y, temp.z + piVar2->z, &pos); func_01ff93c0(&pos, FLOAT_TO_Q20(0.5f)); - param1->coords = pos.coords; + *param1 = pos; } else { - Vec3p *piVar4 = data_027e0ce0->func_01fff148(0); - param1->coords = piVar4->coords; + VecFx32 *piVar4 = data_027e0ce0->func_01fff148(0); + *param1 = *piVar4; } } diff --git a/src/031_Land/MapObject/MapObjectDoorKey.cpp b/src/031_Land/MapObject/MapObjectDoorKey.cpp index f4478ad2..f6cd2b64 100644 --- a/src/031_Land/MapObject/MapObjectDoorKey.cpp +++ b/src/031_Land/MapObject/MapObjectDoorKey.cpp @@ -5,7 +5,7 @@ #include "Unknown/UnkStruct_027e0cec.hpp" extern "C" f32 func_02039f04(unk32); -extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *); +extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *); const UnkStruct_ov031_021150b0 data_ov031_02115184(0x1E66); @@ -68,8 +68,8 @@ ARM void MapObjectDoorKey::vfunc_14(void) { u16 angle = (u16) sVar2; Mat3p m; - Vec3p local_48; - Vec3p temp; + VecFx32 local_48; + VecFx32 temp; Mat3p_InitYRotation(&m, SIN(angle), COS(angle)); temp.x = this->mPos.x - FLOAT_TO_Q20(1.0f) + this->mUnk_70; @@ -175,15 +175,15 @@ ARM void MapObjectDoorKey::vfunc_7C(void) { } ARM void MapObjectDoorKey::vfunc_78(void) { - Vec3p local_24; - Vec3p local_30; - Vec3p VStack_3c; - Vec3p VStack_48; + VecFx32 local_24; + VecFx32 local_30; + VecFx32 VStack_3c; + VecFx32 VStack_48; Mat4x3p m; - Vec3p local_84; - Vec3p local_90; + VecFx32 local_84; + VecFx32 local_90; - Vec3p temp; + VecFx32 temp; temp.x = this->mPos.x; temp.z = this->mPos.z; temp.y = this->mPos.y; @@ -212,13 +212,13 @@ ARM void MapObjectDoorKey::vfunc_78(void) { func_01ffaf74(&local_90, &m, &local_90); func_01ffaf74(&local_84, &m, &local_84); - Vec3p_Add(&local_24, &local_90, &local_24); - Vec3p_Add(&local_24, &local_84, &VStack_3c); + VecFx32_Add(&local_24, &local_90, &local_24); + VecFx32_Add(&local_24, &local_84, &VStack_3c); local_90.x = -local_90.x; local_84.x = -local_84.x; - Vec3p_Add(&local_30, &local_90, &local_30); - Vec3p_Add(&local_30, &local_84, &VStack_48); + VecFx32_Add(&local_30, &local_90, &local_30); + VecFx32_Add(&local_30, &local_84, &VStack_48); if (this->mUnk_68.mUnk_00 != NULL) { this->mUnk_68.mUnk_00->func_ov000_02052c48(&VStack_3c, &local_24); diff --git a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp index 1c1b93d8..24215774 100644 --- a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp +++ b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp @@ -5,9 +5,9 @@ #include "Unknown/UnkStruct_027e0cec.hpp" #include "versions.h" -extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *); -extern "C" q20 func_01ffb464(q20); -extern "C" void func_01ff9218(q20 *, q20, q20); +extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *); +extern "C" fx32 func_01ffb464(fx32); +extern "C" void func_01ff9218(fx32 *, fx32, fx32); const UnkStruct_ov031_021150b0 data_ov031_02115254(0x1E66); @@ -118,7 +118,7 @@ ARM void MapObjectDoorSwitch::vfunc_14(void) { Mat3p_InitYRotation(&m, SIN(angle), COS(angle)); - Vec3p local_40(this->mPos); + VecFx32 local_40(this->mPos); local_40.y -= this->mUnk_6C * 2; this->mUnk_094.vfunc_14(&m, &local_40); } @@ -128,16 +128,16 @@ ARM void MapObjectDoorSwitch::vfunc_18(s8 *param1, s8 param2) { } ARM void MapObjectDoorSwitch::vfunc_74(void) { - Vec3p local_20 = this->mPos; - Vec3p local_2c; - Vec3p_Init(0, 0, 0x666, &local_2c); + VecFx32 local_20 = this->mPos; + VecFx32 local_2c; + VecFx32_Init(0, 0, 0x666, &local_2c); Mat4x3p m; u16 angle = this->mUnk_14; Mat4x3p_InitYRotation(&m, SIN(angle), COS(angle)); func_01ffaf74(&local_2c, &m, &local_2c); - Vec3p_Add(&local_20, &local_2c, &local_20); + VecFx32_Add(&local_20, &local_2c, &local_20); data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_20, 4); @@ -224,7 +224,7 @@ ARM void MapObjectDoorSwitch::vfunc_54(void) { func_01ff9218(&this->mUnkPos, -FLOAT_TO_Q20(1.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80))); } - q20 temp_118 = this->mUnkPos; + fx32 temp_118 = this->mUnkPos; this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f); this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f); this->mUnk_0F4.mUnk_0C.z = temp_118; @@ -271,7 +271,7 @@ ARM void MapObjectDoorSwitch::vfunc_54(void) { func_01ff9218(&this->mUnkPos, -FLOAT_TO_Q20(1.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80))); } - q20 temp_118 = this->mUnkPos; + fx32 temp_118 = this->mUnkPos; this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f); this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f); this->mUnk_0F4.mUnk_0C.z = temp_118; diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 403d3b96..d343f994 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -38,7 +38,7 @@ extern "C" void func_01ffb6e4(unk32, const void *, void *); extern "C" void func_01ffc5a0(UnkSystem4 *, unk32, u16, void *, unk32); extern "C" void func_ov000_0208f820(); extern "C" unk32 func_ov024_020d5354(unk32 *, u16 *); -extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, Vec3p *); +extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, VecFx32 *); extern unk32 *data_027e0958; extern "C" void func_ov000_0208ba10(void *, void *, unk32); extern "C" void func_02015ea8(unk32, void *); @@ -501,12 +501,12 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { ItemId itemId; ItemManager *pItemManager; Actor *iVar10; - Vec3p *pUnk_38; - Vec3p *pUnk_3c; + VecFx32 *pUnk_38; + VecFx32 *pUnk_3c; switch (param1->mUnk_04) { case 0x39: - Vec3p temp; + VecFx32 temp; itemId = param1->mUnk_1C; temp.x = param1->mUnk_10.x; temp.y = param1->mUnk_10.y; @@ -703,9 +703,9 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { if (this->mUnk_54.mItemId != ItemId_Nothing) { unk32 uStack_f0[4]; - Vec3p VStack_fc; + VecFx32 VStack_fc; - Vec3p_Add(this->mUnk_34, &data_ov110_021861ec.mUnk_00, &VStack_fc); + VecFx32_Add(this->mUnk_34, &data_ov110_021861ec.mUnk_00, &VStack_fc); data_027e0cec->func_ov000_0209feac(0x874, &VStack_fc, 1, 0, 0); uStack_f0[0] = 0x870; uStack_f0[1] = 0x871; @@ -1002,7 +1002,7 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { } ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) { - Vec3p auStack_18; + VecFx32 auStack_18; switch (param2) { case 0x39: @@ -1010,7 +1010,7 @@ ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) { break; case 0x3B: if (param3 != 0 && this->mUnk_54.mItemId != ItemId_Nothing && this->mUnk_8C.mUnk_04 != 0) { - Vec3p_Add(this->mUnk_34, (Vec3p *) &data_ov110_021861ec.mUnk_00, &auStack_18); + VecFx32_Add(this->mUnk_34, (VecFx32 *) &data_ov110_021861ec.mUnk_00, &auStack_18); func_ov000_02058fc4(data_027e0958, &this->mUnk_74, &auStack_18); } break; diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index 0498cb0e..516f1c89 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -10,7 +10,7 @@ #include "math.hpp" extern "C" void func_ov000_0205ca74(unk32); -extern "C" void func_ov000_0205d65c(void *, Vec3p *, Vec3p *, u32); +extern "C" void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, u32); ARM PlayerSceneChange::PlayerSceneChange() { this->mUnk_68 = this->mUnk_2C->mUnk_14C; @@ -63,21 +63,21 @@ ARM s16 PlayerSceneChange::func_ov112_02184bbc(s16 param1) { extern "C" bool func_ov096_02179c14(); extern "C" void func_ov034_02121de4(void *); -extern q4 data_02040964[]; -extern q4 data_0203e964[]; -extern q4 data_02041964[]; -extern q4 data_0203f964[]; -extern q4 data_0203feb0[]; -extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *); +extern fx16 data_02040964[]; +extern fx16 data_0203e964[]; +extern fx16 data_02041964[]; +extern fx16 data_0203f964[]; +extern fx16 data_0203feb0[]; +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *); extern "C" void func_01ff9638(void *, s16); extern "C" void func_01ff9770(void *); extern unk32 data_ov000_020b3000; -extern "C" bool func_ov000_02080998(Vec3p *); +extern "C" bool func_ov000_02080998(VecFx32 *); extern "C" void func_01ff930c(UnkStruct_ov000_0208f820_40 *, unk16, unk32); // https://decomp.me/scratch/c7PhN ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { - q4 *pSinCosTable = gSinCosTable; + fx16 *pSinCosTable = gSinCosTable; Vec2b stack4; s16 stack3; Vec2b stack2; @@ -119,10 +119,10 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 break; } - Vec3p *temp_r8 = this->mUnk_34; - this->mUnk_70.x = temp_r8->x; - this->mUnk_70.y = temp_r8->y; - this->mUnk_70.z = temp_r8->z; + VecFx32 *temp_r8 = this->mUnk_34; + this->mUnk_70.x = temp_r8->x; + this->mUnk_70.y = temp_r8->y; + this->mUnk_70.z = temp_r8->z; this->mUnk_A8 = -0x8000; this->mUnk_AA = -0x8000; @@ -153,7 +153,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 MapObjectUnkDRTY *pDRTY = (MapObjectUnkDRTY *) gpMapObjManager->func_01fff498(stack2); if (pDRTY != NULL) { - pDRTY->func_ov000_0209d6ac((Vec3p *) &this->mUnk_70); + pDRTY->func_ov000_0209d6ac((VecFx32 *) &this->mUnk_70); if (this->mUnk_68 == 0x19) { pDRTY->func_ov034_02121d84(); @@ -195,7 +195,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 break; } - func_ov000_0205d65c(&stack3, this->mUnk_34, (Vec3p *) &this->mUnk_70, this->mUnk_40->mUnk_00); + func_ov000_0205d65c(&stack3, this->mUnk_34, (VecFx32 *) &this->mUnk_70, this->mUnk_40->mUnk_00); this->mUnk_40->mUnk_00 = stack3; switch (this->mUnk_68) { @@ -215,14 +215,14 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 unk32 sp78; unk16 temp_r8_2 = this->mUnk_A8 - 0x8000; - func_01ffb714(this->mUnk_34, (Vec3p *) &this->mUnk_70, &sp78); + func_01ffb714(this->mUnk_34, (VecFx32 *) &this->mUnk_70, &sp78); func_01ff9638(&sp78, -temp_r8_2); this->mUnk_9C.x = -sp78; this->mUnk_9C.y = 0; this->mUnk_9C.z = 0; func_01ff9638(&this->mUnk_9C, temp_r8_2); - q20 temp_r0_11 = Vec3p_Length(&this->mUnk_9C); + fx32 temp_r0_11 = VecFx32_Length(&this->mUnk_9C); if (temp_r0_11 > 0x800) { if ((((temp_r0_11 - 0x800) / 10) + ((temp_r0_11 - 0x800) >> 0x1F)) <= 0) { this->mUnk_9C.x = 0; @@ -230,7 +230,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 this->mUnk_9C.z = 0; } else { func_01ff9770(&this->mUnk_9C); - Vec3p_Add(this->mUnk_3C, &this->mUnk_9C, this->mUnk_3C); + VecFx32_Add(this->mUnk_3C, &this->mUnk_9C, this->mUnk_3C); } } else { this->mUnk_9C.x = 0; @@ -264,16 +264,16 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 } if (this->mUnk_28->mUnk_98 != NULL) { - this->mUnk_28->mUnk_98->func_ov093_0216f76c((Vec3p *) &this->mUnk_70, this->mUnk_68); + this->mUnk_28->mUnk_98->func_ov093_0216f76c((VecFx32 *) &this->mUnk_70, this->mUnk_68); } break; } case 0x3D: { - Vec3p *pVec = this->mUnk_38; - pVec->x = 0; - pVec->y = 0; - pVec->z = 0; + VecFx32 *pVec = this->mUnk_38; + pVec->x = 0; + pVec->y = 0; + pVec->z = 0; break; } case 0x3E: { @@ -343,7 +343,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 this->mUnk_6C = -1; - Vec3p *pVec = this->mUnk_34; + VecFx32 *pVec = this->mUnk_34; this->mUnk_70.x = pVec->x; this->mUnk_70.y = pVec->y; this->mUnk_70.z = pVec->z; @@ -424,14 +424,14 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 case 0x11: case 0x13: case 0x24: { - q20 posY = ptr->vfunc_28(this->mUnk_34, 0, 0); + fx32 posY = ptr->vfunc_28(this->mUnk_34, 0, 0); if (this->mUnk_34->y >= posY) { this->mUnk_34->y = posY; } break; } default: { - q20 posY = ptr->vfunc_28(this->mUnk_34, 0, 0); + fx32 posY = ptr->vfunc_28(this->mUnk_34, 0, 0); if (this->mUnk_34->y <= posY) { this->mUnk_34->y = posY; } @@ -463,14 +463,14 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { switch (param1) { case 0x3C: if (this->mUnk_68 == 0x19) { - if (this->func_ov000_020914b0(0x3C, (Vec3p *) &this->mUnk_70, this->mUnk_7C)) { + if (this->func_ov000_020914b0(0x3C, (VecFx32 *) &this->mUnk_70, this->mUnk_7C)) { this->mUnk_30->func_ov000_020921e4(0x3D); } - Vec3p *temp_r1 = this->mUnk_34; - this->mUnk_80.x = temp_r1->x; - this->mUnk_80.y = temp_r1->y; - this->mUnk_80.z = temp_r1->z; + VecFx32 *temp_r1 = this->mUnk_34; + this->mUnk_80.x = temp_r1->x; + this->mUnk_80.y = temp_r1->y; + this->mUnk_80.z = temp_r1->z; } else { if (this->mUnk_6C > 0) { this->mUnk_6C--; @@ -490,7 +490,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { break; } - if (this->func_ov000_020914b0(0x3C, (Vec3p *) &this->mUnk_70, this->mUnk_7C)) { + if (this->func_ov000_020914b0(0x3C, (VecFx32 *) &this->mUnk_70, this->mUnk_7C)) { s16 var_r1_2 = this->mUnk_40->mUnk_00; bool var_r3 = true; @@ -544,9 +544,9 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { } // s16 iVar3 = var_r1_2 >> 4; - // q20 uVar6 = gSinCosTable[iVar3 * 2] * 0x2000; - // q20 uVar5 = gSinCosTable[iVar3 * 2 + 1] * 0x2000; - // q20 iVar2 = (gSinCosTable[iVar3 * 2 + 1] >> 0x13) + (0xfffff7ff < uVar5); + // fx32 uVar6 = gSinCosTable[iVar3 * 2] * 0x2000; + // fx32 uVar5 = gSinCosTable[iVar3 * 2 + 1] * 0x2000; + // fx32 iVar2 = (gSinCosTable[iVar3 * 2 + 1] >> 0x13) + (0xfffff7ff < uVar5); // this->mUnk_70.x += // (((uVar6 + 0x800) >> 0xc) | (gSinCosTable[iVar3 * 2] >> 0x13) + (0xfffff7ff < uVar6)) * 0x100000; @@ -564,8 +564,8 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { case 0x21: case 0x25: { s16 value = this->func_ov112_02184bbc(0); - q4 sin = SIN2(data_0203feb0, value); - q4 cos = COS2(data_0203feb0, value); + fx16 sin = SIN2(data_0203feb0, value); + fx16 cos = COS2(data_0203feb0, value); this->mUnk_70.x += MUL_Q20(sin, 0x19A); this->mUnk_70.z += MUL_Q20(cos, 0x19A); @@ -584,13 +584,13 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { if (!this->mUnk_AC) { func_01ff930c(this->mUnk_40, this->mUnk_AA, 0x200); - Vec3p *temp_r2_4 = this->mUnk_34; - this->mUnk_70.x = temp_r2_4->x; - this->mUnk_70.y = temp_r2_4->y; - this->mUnk_70.z = temp_r2_4->z; + VecFx32 *temp_r2_4 = this->mUnk_34; + this->mUnk_70.x = temp_r2_4->x; + this->mUnk_70.y = temp_r2_4->y; + this->mUnk_70.z = temp_r2_4->z; - q4 sin = SIN2(data_0203feb0, this->mUnk_40->mUnk_00); - q4 cos = COS2(data_0203feb0, this->mUnk_40->mUnk_00); + fx16 sin = SIN2(data_0203feb0, this->mUnk_40->mUnk_00); + fx16 cos = COS2(data_0203feb0, this->mUnk_40->mUnk_00); this->mUnk_70.x += MUL_Q20(sin, 0x19A); this->mUnk_70.z += MUL_Q20(cos, 0x19A); } @@ -605,7 +605,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { case 0x13: case 0x14: if (this->mUnk_30->mUnk_70 < 0x0A) { - Vec3p_Add(this->mUnk_3C, &this->mUnk_9C, this->mUnk_3C); + VecFx32_Add(this->mUnk_3C, &this->mUnk_9C, this->mUnk_3C); } break; default: @@ -630,7 +630,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { break; case 0x3D: { func_01ff930c(this->mUnk_40, 0, 0xE39); - Vec3p *temp_r2_8 = this->mUnk_34; + VecFx32 *temp_r2_8 = this->mUnk_34; this->mUnk_80.x = temp_r2_8->x; this->mUnk_80.y = temp_r2_8->y; @@ -676,7 +676,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { break; } - bool temp_r5_2 = this->func_ov000_020914b0(0x3F, (Vec3p *) &this->mUnk_70, this->mUnk_7C); + bool temp_r5_2 = this->func_ov000_020914b0(0x3F, (VecFx32 *) &this->mUnk_70, this->mUnk_7C); switch (this->mUnk_68) { case 0x0F: @@ -684,8 +684,8 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { case 0x13: case 0x24: { UnkStruct_027e0cd8_0c *temp_r0_13 = data_027e0cd8->mUnk_0C; - q20 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0); - Vec3p *temp_r2_9 = this->mUnk_34; + fx32 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0); + VecFx32 *temp_r2_9 = this->mUnk_34; if (temp_r2_9->y < temp_r0_14) { temp_r2_9->y = temp_r0_14; @@ -706,8 +706,8 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { if (!this->func_ov000_02091e68(param2) && data_02049b18.mUnk_06.mTouchControl.mState.touch) { func_ov000_0205ca74(this->mUnk_98); this->mUnk_98 = -1; - q4 sin = SIN2(data_0203feb0, this->mUnk_40->mUnk_00); - q4 cos = COS2(data_0203feb0, this->mUnk_40->mUnk_00); + fx16 sin = SIN2(data_0203feb0, this->mUnk_40->mUnk_00); + fx16 cos = COS2(data_0203feb0, this->mUnk_40->mUnk_00); this->mUnk_70.x += MUL_Q20(sin, FLOAT_TO_Q20(2.0f)); this->mUnk_70.z += MUL_Q20(cos, FLOAT_TO_Q20(2.0f)); this->mUnk_AD = true; @@ -724,14 +724,14 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { } } -ARM bool PlayerSceneChange::vfunc_1c(Vec3p *param1) { +ARM bool PlayerSceneChange::vfunc_1c(VecFx32 *param1) { if (data_027e0cdc->func_ov000_02082a28(1) == 0) { switch (this->mUnk_30->mUnk_68) { case 0x3C: case 0x3D: case 0x3E: case 0x3F: { - Vec3p unk_80; + VecFx32 unk_80; unk_80.x = this->mUnk_80.x; unk_80.y = this->mUnk_80.y; diff --git a/src/112_PlayerSceneChange/PlayerSceneChange2.cpp b/src/112_PlayerSceneChange/PlayerSceneChange2.cpp index eaf1b5a6..f22c791c 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange2.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange2.cpp @@ -4,8 +4,8 @@ extern "C" void func_ov000_0208ba10(void *, void *, unk32); extern "C" void func_ov000_02087ee8(); -extern "C" void func_ov000_0205d65c(void *, Vec3p *, Vec3p *, u32); -extern "C" void func_ov000_0208cac8(UnkStruct_ov000_0208f820_28 *, Vec3p *, unk32); +extern "C" void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, u32); +extern "C" void func_ov000_0208cac8(UnkStruct_ov000_0208f820_28 *, VecFx32 *, unk32); extern "C" unk32 func_ov000_0208dc98(unk32); extern "C" void func_ov000_020830a4(unk32, unk32, unk32, unk32, unk32, unk32); extern "C" unk32 func_ov000_02093718(UnkStruct_ov000_0208f820_30 *); @@ -22,10 +22,10 @@ ARM void PlayerSceneChange2::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param s16 auStack_18[12]; s16 auStack_2c; - Vec3p *pVVar1 = this->mUnk_38; - pVVar1->x = 0; - pVVar1->y = 0; - pVVar1->z = 0; + VecFx32 *pVVar1 = this->mUnk_38; + pVVar1->x = 0; + pVVar1->y = 0; + pVVar1->z = 0; this->mUnk_2C->mUnk_58 = 0; @@ -62,7 +62,7 @@ ARM void PlayerSceneChange2::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param this->mUnk_54.z = this->mUnk_34->z; this->mUnk_60 = param1->mUnk_10; - func_ov000_0205d65c(&auStack_2c, &this->mUnk_60, (Vec3p *) &this->mUnk_54, this->mUnk_40->mUnk_00); + func_ov000_0205d65c(&auStack_2c, &this->mUnk_60, (VecFx32 *) &this->mUnk_54, this->mUnk_40->mUnk_00); this->mUnk_40->mUnk_00 = auStack_2c; func_ov000_0208cac8(this->mUnk_28, &this->mUnk_60, 0); @@ -73,7 +73,7 @@ ARM void PlayerSceneChange2::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param case 0x44: func_ov000_0208cac8(this->mUnk_28, &this->mUnk_60, 0); - func_ov000_0205d65c(&auStack_2c, this->mUnk_34, (Vec3p *) &this->mUnk_54, this->mUnk_40->mUnk_00); + func_ov000_0205d65c(&auStack_2c, this->mUnk_34, (VecFx32 *) &this->mUnk_54, this->mUnk_40->mUnk_00); this->mUnk_40->mUnk_00 = auStack_2c; this->mUnk_2C->mUnk_26 = 0; diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index 4f7155a3..ca5d2de0 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -7,19 +7,18 @@ #include "Unknown/UnkStruct_0204e64c.hpp" #include "Unknown/UnkStruct_027e0208.hpp" #include "Unknown/UnkStruct_ov000_020b50c0.hpp" -#include "regs.h" #include "versions.h" +#include +#include +#include + extern "C" void func_020196fc(); -extern "C" unk32 CARD_func_0033(); -extern "C" void CARD_func_0034(); extern "C" void FlushGfxQueue(); extern "C" void func_020132c8(); extern "C" void func_020132dc(); extern "C" void func_02013354(); extern "C" void func_0201328c(); -extern "C" int OS_DisableInterrupts_Irq(); -extern "C" void OS_RestoreInterrupts(int enabled); extern Mat3p gGeomMatrix; ARM void Game::func_02013370(unk32 param1) { @@ -63,7 +62,7 @@ ARM void Game::Run() { this->mUnk_08 = NULL; } - if (CARD_func_0033() != 0) { + if (CARD_func_0033()) { CARD_func_0034(); } @@ -136,7 +135,7 @@ ARM void Game::Run() { { int enabled = OS_DisableInterrupts_Irq(); this->mUnk_1C.func_02013e18(func_020132dc, 0); - REG_SWAP_BUFFERS = 3; + REG_GFX_FIFO_SWAP_BUFFERS = 3; OS_RestoreInterrupts(enabled); } diff --git a/src/Main/Main.cpp b/src/Main/Main.cpp index 9815e758..dabbe03c 100644 --- a/src/Main/Main.cpp +++ b/src/Main/Main.cpp @@ -1,8 +1,10 @@ #include "Game/Game.hpp" #include "global.h" -#include "regs.h" #include "types.h" +#include +#include + void func_0203b920(void); void func_02011da0(void); void CallStaticInitializers(void); @@ -15,8 +17,6 @@ void func_01ffbd70(void); void main(); -#define UNK_027FFF9C (*(u32 *) 0x027FFF9C) - typedef void (*UnkStruct_027e0000_Callback)(void); struct UnkStruct_027e0000 { unk8 mUnk_00[0x3FFC]; @@ -54,12 +54,12 @@ extern "C" ARM void Entry(void) { REG_IME = 0x04000000; do { - } while (REG_VCOUNT != 0x0); + } while (GX_GetVCount() != 0x0); func_02000a78(); func_0200093c(0, (u32 *) data_027e0000, 0x4000); - func_0200093c(0, ®_PALETTE_A, 0x400); - func_0200093c(0x200, ®_OAM_A, 0x400); + func_0200093c(0, (u32 *) HW_PLTT, 0x400); + func_0200093c(0x200, (u32 *) HW_OAM, 0x400); func_02000950(BuildInfo.mUnk_14); func_020009fc(); puVar4 = BuildInfo.mUnk_10; @@ -79,7 +79,7 @@ extern "C" ARM void Entry(void) { uVar3 = uVar3 + 0x20; } while ((int) uVar3 < (int) puVar4); - UNK_027FFF9C = 0x0; + REG_027FFF9C = 0x0; data_027e0000->mUnk_3FFC = func_01ffbd70; func_0203b920(); diff --git a/src/Main/Player/TouchControl.cpp b/src/Main/Player/TouchControl.cpp index db7c32bb..73f66f77 100644 --- a/src/Main/Player/TouchControl.cpp +++ b/src/Main/Player/TouchControl.cpp @@ -1,23 +1,25 @@ #include "Player/TouchControl.hpp" -#include "Unknown/UnkMemFuncs.h" +#include + +#include // non-matching -ARM void TouchControl::UpdateState(TouchState *state, const TouchStateFlags *stateFlags) { - if (stateFlags->touch == 1) { - if (stateFlags->flags == 0) { +ARM void TouchControl::UpdateState(TouchState *state, const TPData *data) { + if (data->touch == 1) { + if (data->validity == TP_VALIDITY_VALID) { state->touch = true; - u16 x = stateFlags->touchPos.x; - u16 y = stateFlags->touchPos.y; + u16 x = data->x; + u16 y = data->y; state->touchPos.x = x; state->touchPos.y = y; } else { - if ((stateFlags->flags & 1) == 0) { - state->touchPos.x = stateFlags->touchPos.x; + if ((data->validity & TP_VALIDITY_INVALID_X) == 0) { + state->touchPos.x = data->x; } - if ((stateFlags->flags & 2) == 0) { - state->touchPos.y = stateFlags->touchPos.y; + if ((data->validity & TP_VALIDITY_INVALID_Y) == 0) { + state->touchPos.y = data->y; } if (state->touchPos.x >= 0 && state->touchPos.x < 0x100 && state->touchPos.y >= 0 && state->touchPos.y < 0xC0) { @@ -123,7 +125,7 @@ ARM void TouchControl::UpdateFlags(u16 speed) { } } -ARM void TouchControl::UpdateWithStateFlags(TouchStateFlags *state, u16 speed) { +ARM void TouchControl::UpdateWithStateFlags(TPData *state, u16 speed) { this->mPrevState = this->mState; this->UpdateState(&this->mState, state); this->UpdateFlags(speed); @@ -136,11 +138,11 @@ ARM void TouchControl::Update(const TouchState *state, u16 speed) { } ARM bool TouchControl::func_020143f0() { - return ((*((u16 *) 0x027FFFA8) & 0x8000) >> 15) == 1; + return PAD_DetectFold() == 1; } ARM void TouchControl::func_02014414(u16 speedIncrease, bool shouldIncrease) { - TouchStateFlags touchState; + TPData data; if (shouldIncrease) { this->IncreaseSpeed(speedIncrease); @@ -148,12 +150,12 @@ ARM void TouchControl::func_02014414(u16 speedIncrease, bool shouldIncrease) { } if (TouchControl::func_020143f0()) { - MI_CpuFill16(0, (u16 *) &touchState, sizeof(TouchStateFlags)); + MI_CpuFill16(0, (u16 *) &data, sizeof(TPData)); } else { - TP_GetTouchStateFlags(&touchState); + TP_GetData(&data); } - this->UpdateWithStateFlags(&touchState, speedIncrease); + this->UpdateWithStateFlags(&data, speedIncrease); } ARM void TouchControl::func_02014478(TouchState *state, u16 speed) { diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 8559a178..1731fc01 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -1,6 +1,7 @@ #include "System/OverlayManager.hpp" #include "global.h" -#include + +#include struct UnkStruct_020ee698 { /* 00 */ unk8 mUnk_00[0x2C]; diff --git a/src/Main/System/SysFault.cpp b/src/Main/System/SysFault.cpp index d631d66f..01c8d275 100644 --- a/src/Main/System/SysFault.cpp +++ b/src/Main/System/SysFault.cpp @@ -1,31 +1,26 @@ #include "System/SysFault.hpp" #include "System/OverlayManager.hpp" #include "Unknown/Common.hpp" -#include "Unknown/UnkMemFuncs.h" #include "Unknown/UnkStruct_02049b18.hpp" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "Unknown/UnkStruct_ov000_020b4f84.hpp" #include "Unknown/UnkStruct_ov000_020b50c0.hpp" #include "global.h" -#include "regs.h" +#include + +#include +#include +#include -extern "C" void _OS_Panic(); extern "C" void func_020131ec(); extern "C" void func_02013214(); extern "C" void func_ov020_020c86d8(void *); extern "C" void func_02014d38(void *, int); extern "C" void func_020196fc(); -extern "C" void GX_SetBankForBG(int); -extern "C" void GX_SetBankForSubBG(int); -extern "C" void GX_SetBankForLCDC(int); -extern "C" void GX_SetGraphicsMode(int, int, int); -extern "C" void GXS_SetGraphicsMode(int); extern "C" unk32 func_ov000_02068504(int); extern "C" unk32 func_020147a8(); -extern "C" void *G2S_func_0001(); extern "C" void func_0201b278(bool, bool); extern "C" void func_0201b180(bool, bool); -extern "C" void GXS_LoadBGPltt(void *, int, int); extern "C" void SetBrightColor(void *, int); extern int data_02049bd4; @@ -59,12 +54,10 @@ THUMB void SysFault::func_020127f0(unk32 param1) { GX_SetBankForLCDC(0x100); GX_SetGraphicsMode(1, 0, 0); GXS_SetGraphicsMode(0); - - REG_DISPCNT = ((REG_DISPCNT & ~0x1F00) | 0x100); - REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x1F00) | 0x100; - - REG_BG0CNT = (REG_BG0CNT & 0x43) | 4; - REG_BG0CNT_SUB = (REG_BG0CNT_SUB & 0x43) | 4; + GX_SetVisiblePlane(1); + GXS_SetVisiblePlane(1); + G2_SetBG0Control(0, 0, 0, 1, 0); + G2S_SetBG0Control(0, 0, 0, 1, 0); if (this->mUnk_05 < 0xFF) { this->mUnk_05 = 0xFF; @@ -199,6 +192,6 @@ THUMB void SysFault::func_020127f0(unk32 param1) { } this->mUnk_05 = 0; - _OS_Panic(); + OS_Panic(); } } diff --git a/src/Main/func_020196fc.cpp b/src/Main/func_020196fc.cpp index 0105cbb6..2d4e4aca 100644 --- a/src/Main/func_020196fc.cpp +++ b/src/Main/func_020196fc.cpp @@ -1,57 +1,51 @@ -#include "Unknown/UnkMemFuncs.h" -#include "regs.h" +#include "Unknown/UnkStruct_0204a110.hpp" #include "types.h" +#include + +#include +#include +#include -extern "C" void GX_SetGraphicsMode(int, int, int); -extern "C" void GXS_SetGraphicsMode(int); -extern "C" void G2_SetBGAffine(void *, void *, int, int, int, int); extern "C" void func_020242a0(); extern "C" void func_020241f4(); -extern "C" void GX_ResetBankForBGExtPltt(); extern "C" void func_0202428c(); extern "C" void func_02024208(); -extern "C" void GX_ResetBankForOBJExtPltt(); extern "C" void func_020242b4(); -extern "C" void GX_ResetBankForSubBGExtPltt(); extern "C" void func_020242c8(); -extern "C" void GX_ResetBankForSubOBJExtPltt(); extern "C" void func_02024264(); extern "C" void func_02024278(); -extern "C" void GX_SetBankForLCDC(int); -extern "C" void GX_DisableBankForLCDC(); -extern int data_027e0120; extern "C" void func_020196fc() { GX_SetGraphicsMode(1, 0, 0); GXS_SetGraphicsMode(0); - REG_BG0OFS = 0; - REG_BG1OFS = 0; - REG_BG2OFS = 0; - REG_BG3OFS = 0; - REG_BG0OFS_SUB = 0; - REG_BG1OFS_SUB = 0; - REG_BG2OFS_SUB = 0; - REG_BG3OFS_SUB = 0; - G2_SetBGAffine(®_BG2PA, &data_027e0120, 0x80, 0x60, 0, 0); - G2_SetBGAffine(®_BG3PA, &data_027e0120, 0x80, 0x60, 0, 0); - G2_SetBGAffine(®_BG2PA_SUB, &data_027e0120, 0x80, 0x60, 0, 0); - G2_SetBGAffine(®_BG3PA_SUB, &data_027e0120, 0x80, 0x60, 0, 0); - REG_BG0CNT = REG_BG0CNT & 0xffbf; - REG_BG1CNT = REG_BG1CNT & 0xffbf; - REG_BG2CNT = REG_BG2CNT & 0xffbf; - REG_BG3CNT = REG_BG3CNT & 0xffbf; - REG_BG0CNT_SUB = REG_BG0CNT_SUB & 0xffbf; - REG_BG1CNT_SUB = REG_BG1CNT_SUB & 0xffbf; - REG_BG2CNT_SUB = REG_BG2CNT_SUB & 0xffbf; - REG_BG3CNT_SUB = REG_BG3CNT_SUB & 0xffbf; - REG_MOSAIC = 0; - REG_MOSAIC_SUB = 0; - REG_OBJMOSAIC = 0; - REG_OBJMOSAIC_SUB = 0; - REG_BLDCNT = 0; - REG_BLDCNT_SUB = 0; - REG_DISPCNT &= 0xffff1fff; - REG_DISPCNT_SUB &= 0xffff1fff; + G2_SetBG0Offset(0, 0); + G2_SetBG1Offset(0, 0); + G2_SetBG2Offset(0, 0); + G2_SetBG3Offset(0, 0); + G2S_SetBG0Offset(0, 0); + G2S_SetBG1Offset(0, 0); + G2S_SetBG2Offset(0, 0); + G2S_SetBG3Offset(0, 0); + G2_SetBG2Affine(&data_027e0120, 0x80, 0x60, 0, 0); + G2_SetBG3Affine(&data_027e0120, 0x80, 0x60, 0, 0); + G2S_SetBG2Affine(&data_027e0120, 0x80, 0x60, 0, 0); + G2S_SetBG3Affine(&data_027e0120, 0x80, 0x60, 0, 0); + G2_BG0Mosaic(false); + G2_BG1Mosaic(false); + G2_BG2Mosaic(false); + G2_BG3Mosaic(false); + G2S_BG0Mosaic(false); + G2S_BG1Mosaic(false); + G2S_BG2Mosaic(false); + G2S_BG3Mosaic(false); + G2_SetBGMosaicSize(0, 0); + G2S_SetBGMosaicSize(0, 0); + G2_SetOBJMosaicSize(0, 0); + G2S_SetOBJMosaicSize(0, 0); + G2_BlendNone(); + G2S_BlendNone(); + GX_SetVisibleWindows(0); + GXS_SetVisibleWindows(0); func_020242a0(); func_020241f4(); GX_ResetBankForBGExtPltt(); @@ -66,12 +60,12 @@ extern "C" void func_020196fc() { func_02024278(); GX_SetBankForLCDC(0x1ff); - _MI_CpuFill(0, ®_VRAM, 0xa4000); + MI_CpuClearFast(HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); GX_DisableBankForLCDC(); - _MI_CpuFill(0xc0, ®_OAM_A, 0x400); - _MI_CpuFill(0, ®_PALETTE_A, 0x400); + MI_CpuFillFast(HW_OAM, 0xC0, HW_OAM_SIZE); + MI_CpuClearFast(HW_PLTT, HW_PLTT_SIZE); - _MI_CpuFill(0xc0, ®_OAM_B, 0x400); - _MI_CpuFill(0, ®_PALETTE_B, 0x400); + MI_CpuFillFast(HW_DB_OAM, 0xC0, HW_DB_OAM_SIZE); + MI_CpuClearFast(HW_DB_PLTT, HW_DB_PLTT_SIZE); } diff --git a/tools/g2_unpack.py b/tools/g2_unpack.py new file mode 100755 index 00000000..48ffb0b1 --- /dev/null +++ b/tools/g2_unpack.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import argparse + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="unpack packed g2 values to use in inlines") + parser.add_argument('packed_value') + args = parser.parse_args() + + if isinstance(args.packed_value, str): + value = int(args.packed_value, 0) + elif isinstance(args.packed_value, int): + value = args.packed_value + else: + raise NotImplementedError("ERROR: unknown arg type") + + # masked are guessed based on shift values + mask_map = { + 0xC000: 0x0E, # (<< 0x0E) - 1100 0000 0000 0000; mask = 0xC000 + 0x0080: 0x07, # (<< 0x07) - 0011 1111 0000 0000; mask = 0x3F00 + 0x3F00: 0x08, # (<< 0x08) - 0000 0000 1000 0000; mask = 0x0080 + 0x007C: 0x02, # (<< 0x02) - 0000 0000 0111 1100; mask = 0x007C + } + + shift_map = { + 0x0E: "scrSize ", + 0x08: "scrBase ", + 0x07: "colMode ", + 0x02: "charBase", + } + + print("Parameters:") + for mask, shift in mask_map.items(): + if value & mask: + v = (value & mask) >> shift + print(f" - {shift_map[shift]} = {v:3} (0x{v:02X})") + else: + print(f" - {shift_map[shift]} = {0:3}")