Some progress

This commit is contained in:
SwareJonge 2024-05-04 17:12:16 +02:00
parent f5a5a13de0
commit e292a41243
198 changed files with 12019 additions and 587 deletions

View File

@ -1,6 +1,7 @@
# mkdd
WIP 1:1 Decompilation of Mario Kart Double Dash!!
## Building
NOTE: Currently the debug version is hitting the character limit for PowerShell so for the time being, compile on Linux or use WSL!
### Requirements
- [devkitPro](https://devkitpro.org/wiki/Getting_Started)
- [Ninja](https://github.com/ninja-build/ninja/releases/tag/v1.11.1)

View File

@ -1,3 +0,0 @@
python ./configure.py
ninja
SymbolChecker

View File

@ -324,6 +324,7 @@ GCC_INCLUDES = ' '.join(f"-I {d}" for d in INCDIRS)
#rework
DEFINES = [
"DEBUG",
"HIO_SCREENSHOT",
"REGION_US",
"MATCHING"
]

View File

@ -966,6 +966,18 @@ src/Inagaki/GameAudioArcLoader.cpp:
.data: [0x803942a8, 0x803942e8]
.bss: [0x803c9750, 0x803c9778]
src/Kameda/Task.cpp:
.text: [0x801323cc, 0x80132758]
src/Kameda/WipeManager.cpp:
.text: [0x80138720, 0x8013b318]
.ctors: [0x803161e4, 0x803161e8]
.rodata: [0x8036d978, 0x8036da18]
.data: [0x80394598, 0x80394b70]
.bss: [0x803ca098, 0x803ca0c8]
.sbss: [0x804162c0, 0x804162d8]
.sdata2: [0x80418e20, 0x80418e48]
src/Kameda/Scene.cpp:
.text: [0x8013c1e8, 0x8013c2b8]
.rodata: [0x8036da48, 0x8036da58]
@ -1092,10 +1104,30 @@ src/Kaneshige/SimpleDrawer.cpp:
src/Kaneshige/JugemPoint.cpp:
.text: [0x801ba2a4, 0x801ba2b4]
src/Kaneshige/RaceBGMPlayer.cpp:
.text: [0x801c6da0, 0x801c752c]
.ctors: [0x803162e4, 0x803162e8]
.bss: [0x803cad18, 0x803cad48]
.sdata: [0x804146f0, 0x804146f8]
src/Kaneshige/BlurScreen.cpp:
.text: [0x801ccf74, 0x801cd50c]
.sdata2: [0x8041a458, 0x8041a468]
src/Kaneshige/KartMtx.cpp:
.text: [0x801cebdc, 0x801cec88]
.sdata2: [0x8041a4b0, 0x8041a4b8]
src/Kaneshige/GhostScreen.cpp:
.text: [0x801d2b40, 0x801d2ff8]
src/Kaneshige/ShimmerScreen.cpp:
.text: [0x801d2ff8, 0x801d39e8]
.rodata: [0x80379898, 0x803798d0]
.sdata: [0x804147a0, 0x804147a8]
.sbss: [0x80416570, 0x80416580]
.sdata2: [0x8041a560, 0x8041a588]
src/Kaneshige/Movie/MoviePlayer.cpp:
.text: [0x801d8178, 0x801d85dc]
.rodata: [0x80379b18, 0x80379b70]
@ -1111,6 +1143,11 @@ src/Kaneshige/Movie/THPDraw.c:
src/Kaneshige/RaceTime.cpp:
.text: [0x801d9e4c, 0x801d9ea0]
src/Kaneshige/MaskScreen.cpp:
.text: [0x801d9ea0, 0x801da760]
.rodata: [0x80379b70, 0x80379b90]
.sdata2: [0x8041a678, 0x8041a690]
src/Kaneshige/THP/THPPlayer.c:
.text: [0x801da760, 0x801dbf80]
.ctors: [0x80316328, 0x8031632c]
@ -1136,6 +1173,11 @@ src/Kaneshige/THP/THPAudioDecode.c:
.bss: [0x803cea08, 0x803cfd90]
.sbss: [0x80416878, 0x80416880]
src/Kawano/SceneTitleLine.cpp:
.text: [0x801f5788, 0x801f5b40]
.rodata: [0x8037b370, 0x8037b3c0]
.sdata2: [0x8041a988, 0x8041a9b0]
src/Osako/clock.cpp:
.text: [0x801f6e04, 0x801f6e9c]
.sbss: [0x804168c8, 0x804168d8]
@ -1147,6 +1189,14 @@ src/Osako/testApp.cpp:
.sbss: [0x804168d8, 0x804168e0]
.sdata2: [0x8041aee0, 0x8041aef0]
src/Osako/shadowModel.cpp:
.text: [0x801f7154, 0x801f74dc]
.ctors: [0x80316360, 0x80316364]
.rodata: [0x8037cc40, 0x8037cc50]
.data: [0x8039c418, 0x8039c460]
.bss: [0x803cffe0, 0x803d0010]
.sdata2: [0x8041aef0, 0x8041af18]
src/Osako/GameApp.cpp:
.text: [0x801f74dc, 0x801f75f4]
.data: [0x8039c460, 0x8039c478]
@ -1154,6 +1204,15 @@ src/Osako/GameApp.cpp:
src/Osako/main.cpp:
.text: [0x801f75f4, 0x801f7618]
src/Osako/RaceApp.cpp:
.text: [0x801fae68, 0x801fc5dc]
.ctors: [0x80316370, 0x80316374]
.rodata: [0x8037cff8, 0x8037d0e8]
.data: [0x8039c710, 0x8039c778]
.bss: [0x803d0860, 0x803d0890]
.sbss: [0x80416918, 0x80416920]
.sdata2: [0x8041b358, 0x8041b370]
src/Osako/ResMgr.cpp:
.text: [0x801fc5dc, 0x801fe074]
.ctors: [0x80316374, 0x80316378]
@ -1257,6 +1316,13 @@ src/Osako/SequenceApp.cpp:
.sbss: [0x80416a18, 0x80416a20]
.sdata2: [0x8041b7a0, 0x8041b7b0]
src/Osako/TestViewApp.cpp:
.text: [0x80209c9c, 0x8020a324]
.rodata: [0x8037dc18, 0x8037dfb0]
.data: [0x8039cea0, 0x8039cfd8]
.sbss: [0x80416a28, 0x80416a30]
.sdata2: [0x8041b7c0, 0x8041b808]
src/Osako/shadowScr.cpp:
.text: [0x8020af10, 0x8020b458]
.sdata2: [0x8041b818, 0x8041b820]
@ -1299,6 +1365,11 @@ src/Osako/PadRecorder.cpp:
.rodata: [0x8037e0c8, 0x8037e0f8]
.sdata2: [0x8041b868, 0x8041b870]
src/Osako/ForceEffectMgr.cpp:
.text: [0x8020d390, 0x8020d550]
.data: [0x8039d198, 0x8039d1a8]
.sbss: [0x80416a58, 0x80416a60]
src/Osako/AwardApp.cpp:
.text: [0x8020e15c, 0x8020e3ac]
.ctors: [0x803163b0, 0x803163b4]
@ -1364,6 +1435,79 @@ src/Sato/stMath.cpp:
.sbss: [0x80416ac8, 0x80416ad0]
.sdata2: [0x8041bb60, 0x8041bbb8]
src/Shiraiwa/WipeSlide.cpp:
.text: [0x802b7d5c, 0x802b8760]
.ctors: [0x80316544, 0x80316548]
.data: [0x803a7a78, 0x803a7aa8]
.bss: [0x803ee838, 0x803ee868]
.sdata: [0x80415320, 0x80415328]
.sdata2: [0x8041ce80, 0x8041cea0]
.sbss2: [0x8041e240, 0x8041e248]
src/Shiraiwa/WipeBase.cpp:
.text: [0x802b8760, 0x802b91e0]
.ctors: [0x80316548, 0x8031654c]
.rodata: [0x80384498, 0x80384528]
.data: [0x803a7aa8, 0x803a7af0]
.bss: [0x803ee868, 0x803ee898]
.sdata2: [0x8041cea0, 0x8041cec0]
src/Shiraiwa/WipeCircle.cpp:
.text: [0x802b91e0, 0x802b9a40]
.ctors: [0x8031654c, 0x80316550]
.rodata: [0x80384528, 0x80384558]
.data: [0x803a7af0, 0x803a7b20]
.bss: [0x803ee898, 0x803ee8c8]
.sdata: [0x80415328, 0x80415330]
.sbss: [0x80416ff0, 0x80416ff8]
.sdata2: [0x8041cec0, 0x8041cee8]
.sbss2: [0x8041e248, 0x8041e250]
src/Shiraiwa/WipeCheck.cpp:
.text: [0x802d28a4, 0x802d2e9c]
.ctors: [0x803165ac, 0x803165b0]
.data: [0x803aa9a8, 0x803aa9d8]
.bss: [0x803eed88, 0x803eedb8]
.sdata: [0x80415500, 0x80415508]
.sdata2: [0x8041d470, 0x8041d488]
src/Shiraiwa/WipeShut.cpp:
.text: [0x802d2e9c, 0x802d37f4]
.ctors: [0x803165b0, 0x803165b4]
.data: [0x803aa9d8, 0x803aaa08]
.bss: [0x803eedb8, 0x803eede8]
.sdata: [0x80415508, 0x80415518]
.sbss: [0x80417150, 0x80417158]
.sdata2: [0x8041d488, 0x8041d4b0]
src/Shiraiwa/WipeLine.cpp:
.text: [0x802d37f4, 0x802d4100]
.ctors: [0x803165b4, 0x803165b8]
.data: [0x803aaa08, 0x803aaa68]
.bss: [0x803eede8, 0x803eee18]
.sdata: [0x80415518, 0x80415528]
.sbss: [0x80417158, 0x80417160]
.sdata2: [0x8041d4b0, 0x8041d4d0]
src/Shiraiwa/WipeWave.cpp:
.text: [0x802d4100, 0x802d48e8]
.ctors: [0x803165b8, 0x803165bc]
.data: [0x803aaa68, 0x803aaaa0]
.bss: [0x803eee18, 0x803eee48]
.sdata: [0x80415528, 0x80415538]
.sbss: [0x80417160, 0x80417168]
.sdata2: [0x8041d4d0, 0x8041d4e8]
src/Shiraiwa/WipeCurtain.cpp:
.text: [0x802d81bc, 0x802d8b44]
.ctors: [0x803165c8, 0x803165cc]
.data: [0x803ab0c8, 0x803ab0f8]
.bss: [0x803eeed8, 0x803eef08]
.sdata: [0x80415568, 0x80415570]
.sbss: [0x80417188, 0x80417190]
.sdata2: [0x8041d5a0, 0x8041d5c0]
.sbss2: [0x8041e250, 0x8041e254]
src/Sato/stEfctWeed.cpp:
.text: [0x80254ba8, 0x80254ec4]
.ctors: [0x80316418, 0x8031641c]
@ -1373,6 +1517,28 @@ src/Sato/stEfctWeed.cpp:
.sbss: [0x80416bc8, 0x80416bd0]
.sdata2: [0x8041bf90, 0x8041bf98]
src/Sato/RivalKart.cpp:
.text: [0x80270f9c, 0x802714b0]
.ctors: [0x80316458, 0x8031645c]
.data: [0x803a1ca0, 0x803a1cb8]
.bss: [0x803edc40, 0x803edc70]
src/Yamamoto/kartCamera.cpp:
.text: [0x802e0248, 0x802e17b8]
.ctors: [0x803165d8, 0x803165dc]
.rodata: [0x803867d0, 0x80386870]
.data: [0x803ab3d0, 0x803ab6e0]
.bss: [0x803eef90, 0x803eefc0]
.sdata2: [0x8041d740, 0x8041d760]
src/Yamamoto/kartCtrl.cpp:
.text: [0x802e17b8, 0x802e39e4]
.ctors: [0x803165dc, 0x803165e0]
.rodata: [0x80386870, 0x80386908]
.bss: [0x803eefc0, 0x803eeff0]
.sbss: [0x804171a0, 0x804171c0]
.sdata2: [0x8041d760, 0x8041d780]
src/Yamamoto/kartvec.cpp:
.text: [0x802e5210, 0x802e64e8]
.ctors: [0x803165e4, 0x803165e8]
@ -1385,6 +1551,19 @@ src/Yamamoto/kartLine.cpp:
.bss: [0x803ef0e0, 0x803ef110]
.sdata2: [0x8041db50, 0x8041db58]
src/Yamamoto/KartSound.cpp:
.text: [0x802fec88, 0x80300308]
.ctors: [0x80316608, 0x8031660c]
.rodata: [0x80386b18, 0x80386b70]
.bss: [0x803ef1d0, 0x803ef200]
.sdata2: [0x8041dda0, 0x8041ddc0]
src/Yamamoto/KartTaeget.cpp:
.text: [0x80300308, 0x80300878]
.ctors: [0x8031660c, 0x80316610]
.bss: [0x803ef200, 0x803ef230]
.sdata2: [0x8041ddc0, 0x8041ddc8]
src/Yamamoto/KartStar.cpp:
.text: [0x80307c44, 0x80307eb8]
.ctors: [0x80316628, 0x8031662c]
@ -1395,15 +1574,42 @@ src/Yamamoto/KartTire.cpp:
.ctors: [0x8031662c, 0x80316630]
.bss: [0x803ef380, 0x803ef3b0]
# This file causes ninja to go over the 16bit character limit for the linking command
#src/Yamamoto/KartDisp.cpp:
#.text: [0x803101d8, 0x80311ae8]
#.ctors: [0x80316640, 0x80316644]
#.rodata: [0x80386e58, 0x803879c0]
#.bss: [0x803ef470, 0x803ef4a0]
#.sdata2: [0x8041e0f0, 0x8041e160]
src/Yamamoto/KartHandle.cpp:
.text: [0x80311ae8, 0x80312154]
.ctors: [0x80316644, 0x80316648]
.data: [0x803ae2e8, 0x803ae348]
.bss: [0x803ef4a0, 0x803ef4d0]
.sdata2: [0x8041e160, 0x8041e168]
src/Yamamoto/KartApeendix.cpp:
.text: [0x80312154, 0x8031228c]
.ctors: [0x80316648, 0x8031664c]
.bss: [0x803ef4d0, 0x803ef500]
# BUG: mwld aligns .ctors by 8 under certain conditions, ppcdis should take care of this normally but it doesn't use the trimmed length
# use an empty .s as workaround to get the correct en offset
src/ctorhack.s:
.ctors: [0x8031665c, 0x80316660]
src/Yamamoto/KartPipe.cpp:
.text: [0x8031228c, 0x80312ca8]
.ctors: [0x8031664c, 0x80316650]
.bss: [0x803ef500, 0x803ef530]
src/Yamamoto/KartAnt.cpp:
.text: [0x80312ca8, 0x80313348]
.ctors: [0x80316650, 0x80316654]
.bss: [0x803ef530, 0x803ef560]
.sdata2: [0x8041e180, 0x8041e190]
src/Yamamoto/KartPerCam.cpp:
.text: [0x80315160, 0x803160a0]
.ctors: [0x80316658, 0x80316660]
.bss: [0x803ef590, 0x803ef5c0]
.sdata2: [0x8041e1a0, 0x8041e1e0]
# not required yet, but for __start it generates some data in the .init section which can't be added to the start section itself
#src/starthack.s:

View File

@ -18226,6 +18226,8 @@ global:
0x80416d24: sCommonFlgs__13RivalBodyCtrl
0x80416d28: sCheckTopDistRatio__13RivalBodyCtrl
0x80416d30: sStartRankPtr__14RivalSpeedCtrl
0x80416d34: sConfusedFightModeFlg__14RivalSpeedCtrl
0x80416d35: sComWeakPointSwapFlg__14RivalSpeedCtrl
0x80416d38: sTexSRTKey__14J3DEfctIceRock
0x80416d40: JPTraceHPCB
0x80416d48: sDossunBckAnmTrans__13TMapObjDossun

View File

@ -937,6 +937,18 @@ src/Inagaki/GameAudioArcLoader.cpp:
.data: [0x803540d8, 0x80354118]
.bss: [0x80389290, 0x803892b8]
src/Kameda/Task.cpp:
.text: [0x80124a58, 0x80124de4]
src/Kameda/WipeManager.cpp:
.text: [0x80129f18, 0x8012c188]
.ctors: [0x802d85e8, 0x802d85ec]
.rodata: [0x80335188, 0x80335198]
.data: [0x803543c8, 0x803549a0]
.bss: [0x80389bd8, 0x80389c08]
.sbss: [0x803d5540, 0x803d5558]
.sdata2: [0x803d7a08, 0x803d7a20]
src/Kameda/Scene.cpp:
.text: [0x8012cfbc, 0x8012d020]
.data: [0x803549a0, 0x803549b8]
@ -1042,10 +1054,29 @@ src/Kaneshige/SimpleDrawer.cpp:
src/Kaneshige/JugemPoint.cpp:
.text: [0x80190324, 0x80190334]
src/Kaneshige/RaceBGMPlayer.cpp:
.text: [0x8019dd54, 0x8019e3cc]
.ctors: [0x802d86e4, 0x802d86e8]
.bss: [0x8038a830, 0x8038a860]
.sdata: [0x803d3990, 0x803d3998]
src/Kaneshige/BlurScreen.cpp:
.text: [0x801a3f84, 0x801a451c]
.sdata2: [0x803d8cd8, 0x803d8ce8]
src/Kaneshige/KartMtx.cpp:
.text: [0x801a6678, 0x801a6728]
.sdata2: [0x803d8d38, 0x803d8d40]
src/Kaneshige/GhostScreen.cpp:
.text: [0x801ab0a0, 0x801ab4ec]
src/Kaneshige/ShimmerScreen.cpp:
.text: [0x801ab4ec, 0x801abd70]
.sdata: [0x803d3a40, 0x803d3a48]
.sbss: [0x803d57d8, 0x803d57e8]
.sdata2: [0x803d8da0, 0x803d8dc0]
src/Kaneshige/Movie/MoviePlayer.cpp:
.text: [0x801b0084, 0x801b0458]
.rodata: [0x8033dd98, 0x8033ddc0]
@ -1060,6 +1091,10 @@ src/Kaneshige/Movie/THPDraw.c:
src/Kaneshige/RaceTime.cpp:
.text: [0x801b1d9c, 0x801b1df0]
src/Kaneshige/MaskScreen.cpp:
.text: [0x801b1df0, 0x801b2558]
.sdata2: [0x803d8e90, 0x803d8ea0]
src/Kaneshige/THP/THPPlayer.c:
.text: [0x801b2558, 0x801b3c88]
.ctors: [0x802d8728, 0x802d872c]
@ -1083,6 +1118,11 @@ src/Kaneshige/THP/THPAudioDecode.c:
.bss: [0x8038e508, 0x8038F890]
.sbss: [0x803d5ae0, 0x803d5ae8]
src/Kawano/SceneTitleLine.cpp:
.text: [0x801c9760, 0x801c9b18]
.rodata: [0x8033ee78, 0x8033eec8]
.sdata2: [0x803d9118, 0x803d9140]
src/Osako/clock.cpp:
.text: [0x801cbe60, 0x801cbef8]
.sbss: [0x803d5b30, 0x803d5b40]
@ -1094,6 +1134,14 @@ src/Osako/testApp.cpp:
.sbss: [0x803d5b40, 0x803d5b48]
.sdata2: [0x803d9690, 0x803d9698]
src/Osako/shadowModel.cpp:
.text: [0x801cc11c, 0x801cc4a4]
.ctors: [0x802d8764, 0x802d8768]
.rodata: [0x803407b8, 0x803407c8]
.data: [0x8035c1a8, 0x8035c1f0]
.bss: [0x8038fb08, 0x8038fb38]
.sdata2: [0x803d9698, 0x803d96c0]
src/Osako/GameApp.cpp:
.text: [0x801cc4a4, 0x801cc5bc]
.data: [0x8035c1f0, 0x8035c208]
@ -1101,6 +1149,15 @@ src/Osako/GameApp.cpp:
src/Osako/main.cpp:
.text: [0x801cc5bc, 0x801cc5e0]
src/Osako/RaceApp.cpp:
.text: [0x801ccda4, 0x801ce300]
.ctors: [0x802d8774, 0x802d8778]
.data: [0x8035c250, 0x8035c2b8]
.rodata: [0x80340880, 0x803408d8]
.bss: [0x8038fbc8, 0x8038fbf8]
.sbss: [0x803d5b60, 0x803d5b68]
.sdata2: [0x803d96d0, 0x803d96e0]
src/Osako/ResMgr.cpp:
.text: [0x801ce300, 0x801cf8c4]
.ctors: [0x802d8778, 0x802d877c]
@ -1200,6 +1257,12 @@ src/Osako/SequenceApp.cpp:
.sdata: [0x803d3b08, 0x803d3b10]
.sbss: [0x803d5c60, 0x803d5c68]
src/Osako/TestViewApp.cpp:
.text: [0x801da324, 0x801da460]
.rodata: [0x80340f78, 0x80340f88]
.data: [0x8035c9e0, 0x8035c9f8]
.sbss: [0x803d5c70, 0x803d5c78]
src/Osako/shadowScr.cpp:
.text: [0x801daf04, 0x801db44c]
.sdata2: [0x803d9ad0, 0x803d9ad8]
@ -1232,6 +1295,11 @@ src/Osako/PadMgr.cpp:
src/Osako/PadRecorder.cpp:
.text: [0x801dc588, 0x801dcdf4]
src/Osako/ForceEffectMgr.cpp:
.text: [0x801dcdf4, 0x801dcf90]
.data: [0x8035cbb8, 0x8035cbc8]
.sbss: [0x803d5ca0, 0x803d5ca8]
src/Osako/AwardApp.cpp:
.text: [0x801ddb68, 0x801dddb8]
.ctors: [0x802d87b4, 0x802d87b8]
@ -1283,6 +1351,78 @@ src/Osako/password.cpp:
.text: [0x801e76a8, 0x801e7a8c]
.rodata: [0x80341938, 0x803419a0]
src/Shiraiwa/WipeSlide.cpp:
.text: [0x80276fa8, 0x802779ac]
.ctors: [0x802d8948, 0x802d894c]
.data: [0x80367498, 0x803674c8]
.bss: [0x803adb98, 0x803adbc8]
.sdata: [0x803d45b8, 0x803d45c0]
.sdata2: [0x803dade0, 0x803dae00]
.sbss2: [0x803dc120, 0x803dc128]
src/Shiraiwa/WipeBase.cpp:
.text: [0x802779ac, 0x8027837c]
.ctors: [0x802d894c, 0x802d8950]
.rodata: [0x80344518, 0x80344560]
.data: [0x803674c8, 0x80367510]
.bss: [0x803adbc8, 0x803adbf8]
.sdata2: [0x803dae00, 0x803dae18]
src/Shiraiwa/WipeCircle.cpp:
.text: [0x8027837c, 0x80278b90]
.ctors: [0x802d8950, 0x802d8954]
.data: [0x80367510, 0x80367540]
.bss: [0x803adbf8, 0x803adc28]
.sdata: [0x803d45c0, 0x803d45c8]
.sbss: [0x803d6218, 0x803d6220]
.sdata2: [0x803dae18, 0x803dae38]
.sbss2: [0x803dc128, 0x803dc130]
src/Shiraiwa/WipeCheck.cpp:
.text: [0x80290320, 0x80290918]
.ctors: [0x802d89b0, 0x802d89b4]
.data: [0x8036a3c8, 0x8036a3f8]
.bss: [0x803ae0e8, 0x803ae118]
.sdata: [0x803d4798, 0x803d47a0]
.sdata2: [0x803db2f0, 0x803db308]
src/Shiraiwa/WipeShut.cpp:
.text: [0x80290918, 0x80291270]
.ctors: [0x802d89b4, 0x802d89b8]
.data: [0x8036a3f8, 0x8036a428]
.bss: [0x803ae118, 0x803ae148]
.sdata: [0x803d47a0, 0x803d47b0]
.sbss: [0x803d6378, 0x803d6380]
.sdata2: [0x803db308, 0x803db330]
src/Shiraiwa/WipeLine.cpp:
.text: [0x80291270, 0x80291b7c]
.ctors: [0x802d89b8, 0x802d89bc]
.data: [0x8036a428, 0x8036a488]
.bss: [0x803ae148, 0x803ae178]
.sdata: [0x803d47b0, 0x803d47c0]
.sbss: [0x803d6380, 0x803d6388]
.sdata2: [0x803db330, 0x803db350]
src/Shiraiwa/WipeWave.cpp:
.text: [0x80291b7c, 0x80292364]
.ctors: [0x802d89bc, 0x802d89c0]
.data: [0x8036a488, 0x8036a4c0]
.bss: [0x803ae178, 0x803ae1a8]
.sdata: [0x803d47c0, 0x803d47d0]
.sbss: [0x803d6388, 0x803d6390]
.sdata2: [0x803db350, 0x803db368]
src/Shiraiwa/WipeCurtain.cpp:
.text: [0x8029582c, 0x802961b4]
.ctors: [0x802d89cc, 0x802d89d0]
.data: [0x8036aae8, 0x8036ab18]
.bss: [0x803ae238, 0x803ae268]
.sdata: [0x803d4800, 0x803d4808]
.sbss: [0x803d63b0, 0x803d63b8]
.sdata2: [0x803db408, 0x803db428]
.sbss2: [0x803dc130, 0x803dc134]
src/Sato/stMath.cpp:
.text: [0x801ebb10, 0x801ed470]
.data: [0x8035d110, 0x8035d128]
@ -1299,6 +1439,26 @@ src/Sato/stEfctWeed.cpp:
.sbss: [0x803d5df0, 0x803d5df8]
.sdata2: [0x803da100, 0x803da108]
src/Sato/RivalKart.cpp:
.text: [0x8023586c, 0x80235d80]
.ctors: [0x802d885c, 0x802d8860]
.data: [0x803616c0, 0x803616d8]
.bss: [0x803acfa0, 0x803acfd0]
src/Yamamoto/kartCamera.cpp:
.text: [0x8029dffc, 0x8029f4b8]
.ctors: [0x802d89dc, 0x802d89e0]
.data: [0x8036adf0, 0x8036b140]
.bss: [0x803ae2f0, 0x803ae320]
.sdata2: [0x803db590, 0x803db5a8]
src/Yamamoto/kartCtrl.cpp:
.text: [0x8029f4b8, 0x802a0a60]
.ctors: [0x802d89e0, 0x802d89e4]
.bss: [0x803ae320, 0x803ae350]
.sbss: [0x803d63c8, 0x803d63e0]
.sdata2: [0x803db5a8, 0x803db5c0]
src/Yamamoto/kartvec.cpp:
.text: [0x802a20cc, 0x802a320c]
.ctors: [0x802d89e8, 0x802d89ec]
@ -1311,6 +1471,19 @@ src/Yamamoto/kartLine.cpp:
.bss: [0x803ae440, 0x803ae470]
.sdata2: [0x803db998, 0x803db9a0]
src/Yamamoto/KartSound.cpp:
.text: [0x802bcf8c, 0x802be490]
.ctors: [0x802d8a0c, 0x802d8a10]
.rodata: [0x80345e60, 0x80345eb8]
.bss: [0x803ae530, 0x803ae560]
.sdata2: [0x803dbbe8, 0x803dbc08]
src/Yamamoto/KartTaeget.cpp:
.text: [0x802be490, 0x802be9e4]
.ctors: [0x802d8a10, 0x802d8a14]
.bss: [0x803ae560, 0x803ae590]
.sdata2: [0x803dbc08, 0x803dbc10]
src/Yamamoto/KartStar.cpp:
.text: [0x802c796c, 0x802c7c68]
.ctors: [0x802d8a2c, 0x802d8a30]
@ -1321,7 +1494,38 @@ src/Yamamoto/KartTire.cpp:
.ctors: [0x802d8a30, 0x802d8a34]
.bss: [0x803ae6e0, 0x803ae710]
src/Yamamoto/KartDisp.cpp:
.text: [0x802d21c0, 0x802d3fb4]
.ctors: [0x802d8a44, 0x802d8a48]
.rodata: [0x80346170, 0x80346c20]
.bss: [0x803ae7d0, 0x803ae800]
.sdata2: [0x803dbf88, 0x803dbff8]
src/Yamamoto/KartHandle.cpp:
.text: [0x802d3fb4, 0x802d45bc]
.ctors: [0x802d8a48, 0x802d8a4c]
.data: [0x8036dd48, 0x8036dda8]
.bss: [0x803ae800, 0x803ae830]
.sdata2: [0x803dbff8, 0x803dc000]
src/Yamamoto/KartApeendix.cpp:
.text: [0x802d45bc, 0x802d46f0]
.ctors: [0x802d8a4c, 0x802d8a50]
.bss: [0x803ae830, 0x803ae860]
.bss: [0x803ae830, 0x803ae860]
src/Yamamoto/KartPipe.cpp:
.text: [0x802d46f0, 0x802d5248]
.ctors: [0x802d8a50, 0x802d8a54]
.bss: [0x803ae860, 0x803ae890]
src/Yamamoto/KartAnt.cpp:
.text: [0x802d5248, 0x802d5a44]
.ctors: [0x802d8a54, 0x802d8a58]
.bss: [0x803ae890, 0x803ae8c0]
.sdata2: [0x803dc030, 0x803dc050]
src/Yamamoto/KartPerCam.cpp:
.text: [0x802d7670, 0x802d84a0]
.ctors: [0x802d8a5c, 0x802d8a80]
.bss: [0x803ae8f0, 0x803ae920]
.sdata2: [0x803dc068, 0x803dc0c0]

View File

@ -47,6 +47,8 @@ global:
0x800557cc: __dt__13J3DDrawBufferFv
0x8005582c: frameInit__13J3DDrawBufferFv
0x80055d78: draw__13J3DDrawBufferCFv
# J3DModel.cpp
0x80056918: setDeformData__8J3DModelFP13J3DDeformDataUl
# J3DShape.cpp
0x80050ed0: loadPreDrawSetting__8J3DShapeCFv
0x803d4bd0: sOldVcdVatCmd__8J3DShape
@ -54,7 +56,11 @@ global:
0x80057184: init__12J3DFrameCtrlFs
0x800571b4: update__12J3DFrameCtrlFv
# J3DUClipper.cpp
0x8000a24c: init__11J3DUClipperFv
0x8000a260: calcViewFrustum__11J3DUClipperFv
0x8000a3c8: clip__11J3DUClipperCFPA4_Cf3Vecf
0x8000a4f0: __dt__11J3DUClipperFv
0x80347ab8: __vt__11J3DUClipper
# JKernel
# JKRAram.cpp
0x8000a540: create__7JKRAramFUlUllll
@ -794,6 +800,12 @@ global:
0x80024c80: IsConnected__8LGWheelsFl
0x80024de0: PlayAutoCalibAndSpringForce__8LGWheelsFl
0x80024f1c: PlaySpringForce__8LGWheelsFlScUcs
0x80025858: PlayBumpyRoadEffect__8LGWheelsFlUc
0x80025a94: StopBumpyRoadEffect__8LGWheelsFl
0x80025ad8: PlaySlipperyRoadEffect__8LGWheelsFls
0x80025d88: StopSlipperyRoadEffect__8LGWheelsFl
0x80026168: PlayCarAirborne__8LGWheelsFl
0x80026370: StopCarAirborne__8LGWheelsFl
# JMath
# JMath.cpp
@ -827,6 +839,9 @@ global:
0x800275e8: getGrafType__13J2DOrthoGraphCFv
0x800275f0: place__14J2DGrafContextFffff
0x80348510: __vt__13J2DOrthoGraph
# J2DPerspGraph.cpp
0x80348538: __vt__13J2DPerspGraph
# J2DGrafContext.cpp
0x8002790c: __ct__14J2DGrafContextFffff
@ -845,9 +860,15 @@ global:
0x80348560: __vt__14J2DGrafContext
# J2DPane.cpp
0x8002a57c: animationTransform__7J2DPaneFv
0x8002a9b0: getTransform__15J2DAnmTransformCFUsP16J3DTransformInfo
0x8002a9b4: getTypeID__7J2DPaneCFv
# J2DPicture.cpp
0x8002b374: __ct__10J2DPictureFP10JUTTexture
0x8002bc98: __dt__10J2DPictureFv
0x8002c97c: draw__10J2DPictureFffffbbb
# J2DPrint.cpp
0x8002e484: __ct__8J2DPrintFP7JUTFontf
0x8002e5f4: initiate__8J2DPrintFv
@ -968,6 +989,9 @@ global:
# J3DTevs.cpp
0x80054c4c: calc__9J3DTexMtxFPA4_Cf
0x803b9c14: j3dZModeTable
# J3DCluster.cpp
0x8005b428: setAnm__13J3DDeformDataFP13J3DAnmCluster
# JFramework
# JFWSystem.cpp
@ -2409,6 +2433,10 @@ global:
0x8011226c: getEngineType__11EngineSoundF7EKartID
# Inagaki
# CharacterSoundMgr.cpp
0x80112524: setVoice__Q29GameAudio17CharacterSoundMgrFUc
# GameAudioCamera.cpp
0x801134d4: setCameraInfo__Q29GameAudio9CameraMgrFUl3VecPA4_fP7CrsArea
# GameAudioCommon.cpp
0x80113900: panDeform__Q29GameAudio6CommonFff
0x80113944: setMultiPlayModePan__Q29GameAudio6CommonFUc
@ -2416,6 +2444,7 @@ global:
0x80113a08: setSeed__Q29GameAudio6RandomFUl
0x80113a14: getRandomU32__Q29GameAudio6RandomFv
0x80113a70: getSignalEngineRandomU32__Q29GameAudio6RandomFv
0x801158cc: stopStreamBgm__Q29GameAudio4MainFUl
# GameAudioHostIO.cpp
0x803d7658: GA_MULTI_CAMERA_VOL_DOWN_DISTANCE__9GameAudio
0x803d765c: GA_MULTI_CAMERA_VOL_DOWN_RATE__9GameAudio
@ -2426,6 +2455,10 @@ global:
0x8011479c: initRaceSound__Q29GameAudio4MainFv
0x801148a8: frameWork__Q29GameAudio4MainFv
0x80114ad8: isWaveLoaded__Q29GameAudio4MainFQ39GameAudio4Main5WS_ID
0x80115140: startSequenceBgm__Q29GameAudio4MainFUl
0x801154e4: prepareStreamBgm__Q29GameAudio4MainFUl
0x80115688: startStreamBgm__Q29GameAudio4MainFUl
0x801158f8: getPlayingStreamID__Q29GameAudio4MainFv
0x80115ea4: startSystemSe__Q29GameAudio4MainFUl
0x80115f58: startRaceSystemSe__Q29GameAudio4MainFUl
0x801167b0: setMasterVolume__Q29GameAudio4MainFSc
@ -2436,9 +2469,39 @@ global:
0x80116c70: resumeAudio__Q29GameAudio4MainFv
0x803d5498: msBasic__Q29GameAudio4Main
0x803d549c: mLastBaaPointer__9GameAudio
0x803d7660: GoalFanfareDelayFrame__9GameAudio
# GameAudioParam.cpp
0x80118e64: setPlayerMode__Q29GameAudio10ParametersFUc
0x80119094: setRaceMode__Q29GameAudio10ParametersFUc
0x80119294: setDemoMode__Q29GameAudio10ParametersFUc
0x801195c0: getDemoMode__Q29GameAudio10ParametersFv
0x801195c0: getDemoMode__Q29GameAudio10ParametersFv
0x80119390: setRaceCourse__Q29GameAudio10ParametersF9ECourseID
0x80119420: setKartType__Q29GameAudio10ParametersFUc11EKartWeight
0x80119430: setNetworkMode__Q29GameAudio10ParametersFUcUc
0x8011943c: setChrType__Q29GameAudio10ParametersFUc7EKartID
# KartSoundMgr.cpp
0x801198b8: __ct__Q29GameAudio12KartSoundMgrFP3VecP7JKRHeapUcUc
0x80119ed0: changeDriver__Q29GameAudio12KartSoundMgrFb
0x80119ed4: frameWork__Q29GameAudio12KartSoundMgrFUc
0x8011a1e0: setWaterDepth__Q29GameAudio12KartSoundMgrFUcf
0x8011a1f0: setSlip__Q29GameAudio12KartSoundMgrFUcUcUcf
0x8011a6b0: setConductStatus__Q29GameAudio12KartSoundMgrFffbbbUcP7CrsArea
0x8011c42c: setCrushSe__Q29GameAudio12KartSoundMgrFQ29CrsGround4EMatf
0x8011c568: setCrushSe__Q29GameAudio12KartSoundMgrFUlf
0x8011c668: setBrakeSe__Q29GameAudio12KartSoundMgrFUl
0x8011c774: setDashSe__Q29GameAudio12KartSoundMgrFUl
0x8011c81c: setMiniturboSe__Q29GameAudio12KartSoundMgrFUl
0x8011c8a8: setJumpUpSe__Q29GameAudio12KartSoundMgrFUl
0x8011c914: setBoundSe__Q29GameAudio12KartSoundMgrFf
0x8011ca10: setWheelSpinSe__Q29GameAudio12KartSoundMgrFv
0x8011cae0: setSpinSe__Q29GameAudio12KartSoundMgrFv
0x8011cba8: setSpinTurnSe__Q29GameAudio12KartSoundMgrFv
0x8011cc78: setSe__Q29GameAudio12KartSoundMgrFUl
0x8011cdd4: setChibiPitch__Q29GameAudio12KartSoundMgrFP14JAISoundHandle
0x8011d6bc: setInvincibleBgm__Q29GameAudio12KartSoundMgrFUc
0x8011d7dc: clearInvincibleBgm__Q29GameAudio12KartSoundMgrFUc
0x8011d974: setChibiFlag__Q29GameAudio12KartSoundMgrFbb
# GameSoundTable.cpp
0x8011fb74: getBgmSeqResourceID__Q29GameAudio16CustomSoundTableCF10JAISoundID
0x8011fbf0: getSoundType__Q29GameAudio16CustomSoundTableCF10JAISoundID
@ -2485,16 +2548,70 @@ global:
0x8012415c: reset__10J2DManagerFv
0x80124424: calc__10J2DManagerFv
0x801245a0: calcParticle__10J2DManagerFv
0x801245f8: getKart2Status__10J2DManagerFi
0x8012460c: getStatus2Kart__10J2DManagerFi
0x80124620: setStatus2Kart__10J2DManagerFii
0x80124850: isAlarm__10J2DManagerFi
0x80124874: startLANNumAnm__10J2DManagerFv
0x803d5508: mThis__10J2DManager
0x803d550c: mNetFlag__10J2DManager
# Task.cpp
0x80124a58: __ct__4TaskFi
0x80124ab4: init__4TaskFv
0x80124c04: make__4TaskFPFv_vUs
0x80124ca4: run__4TaskFv
0x80124d48: change__4TaskFPFv_vPQ24Task3TCB
0x80124d90: kill__4TaskFPQ24Task3TCB
0x80124ddc: head__4TaskFv
0x80124de0: tail__4TaskFv
# PauseManager.cpp
0x8012717c: tstPause__12PauseManagerFv
0x801263b8: __ct__12PauseManagerFP7JKRHeap
0x8012652c: reset__12PauseManagerFv
0x803d5518: mThis__12PauseManager
# Pause2D.cpp
0x80127ee4: __ct__Q29JGeometry8TVec2<f>Fv
# WipeManager.cpp
0x80129f18: __ct__11WipeManagerFP7JKRHeap
0x8012a230: __dt__9WipeParamFv
#0x8012a278: unnamed class ctor
0x8012a284: __dt__11WipeHioNodeFv
0x8012a2f4: reset__11WipeManagerFv
0x8012a37c: draw__11WipeManagerFv
0x8012a4fc: drawIn__11WipeManagerFiii
0x8012aa60: drawOut__11WipeManagerFiii
0x8012afb0: calc__11WipeManagerFv
0x8012b0a8: calcIn__11WipeManagerFiii
0x8012b5b0: calcOut__11WipeManagerFiii
0x8012baa4: getWipeState__11WipeManagerFi
0x8012bab4: setWipe__11WipeManagerFiisssQ28JUtility6TColor
0x8012bc54: initPre__11WipeManagerFv
0x8012bcec: preWipe__11WipeManagerFv
0x8012bdb4: initMain__11WipeManagerFv
0x8012be4c: mainWipe__11WipeManagerFv
0x8012bf14: initAfter__11WipeManagerFv
0x8012bfac: afterWipe__11WipeManagerFv
0x80354984: __vt__11WipeHioNode
0x80354990: __vt__9WipeParam
0x803d5540: mThis__11WipeManager
0x803d5544: mTask__11WipeManager
0x803d5548: mMoveFlag__11WipeManager
0x803d5550: mKillFlag__11WipeManager
# Fade.cpp
0x8012c188: __ct__4FadeFP7JKRHeap
0x8012c5a0: init__4FadeFv
0x8012c5a4: draw__4FadeFifQ28JUtility6TColor
# Mario.cpp
0x80154aa8: __ct__5MarioFP7JKRHeap
0x80155068: init__5MarioFv
0x8015506c: draw__5MarioFfQ28JUtility6TColor
# Scene.cpp
0x8012cfbc: __ct__5SceneFP10JKRArchiveP7JKRHeap
0x8012cfd8: __dt__5SceneFv
@ -2702,20 +2819,38 @@ global:
0x8017c578: patchCamDataForStaffRoll__7CrsDataF8Language9VideoMode
0x8017c734: getAmbientColor__7CrsDataCFPQ28JUtility6TColor
0x8017c780: getShadowColor__7CrsDataCFPQ28JUtility6TColor
0x8017e790: getCameraData__7CrsDataCFi
0x8017e7c4: getFrontDirection__Q27CrsData6CameraCFPQ29JGeometry8TVec3<f>
0x8017e848: getPathData__7CrsDataCFUs
0x8017e874: getPointData__7CrsDataCFUsUs
0x8017c8b4: getStartPoint__7CrsDataCFUc
# CrsGround.cpp
0x8017ea48: __ct__9CrsGroundFP6Course
0x8017ea84: reset__9CrsGroundFv
0x80180370: getHeight__9CrsGroundCFv
0x801806b8: getPipePoint__9CrsGroundFv
0x80180748: getWaterHeight__9CrsGroundFv
# ExModel.cpp
0x80181008: __ct__7ExModelFUs
0x801810dc: __dt__7ExModelFv
0x80180f38: __ct__12ExMdlDataMgrFb
0x80181008: __ct__7ExModelFUs
0x801810dc: __dt__7ExModelFv
0x80181184: patchModelData__7ExModelFP12J3DModelData
0x80181228: setLODBias__7ExModelFf
0x80181334: setFogInfo__7ExModelFP12J3DModelDataUcffffPQ28JUtility6TColor
0x8018113c: setModelData__7ExModelFP12J3DModelData
0x80181604: createModel__7ExModelFP12JKRSolidHeapUlUl
0x8018173c: createDifferedModel__7ExModelFP12JKRSolidHeapUlUlb
0x80181ad0: calc__7ExModelFv
0x80181b00: calc__7ExModelFUs
0x80181c18: update__7ExModelFUs
0x80181e48: setCurrentViewNo__7ExModelFUl
0x80182194: simpleDraw__7ExModelFUlPA4_fUl
0x80182aac: setBaseTRMtx__7ExModelFPA4_f
0x80182cfc: viewCalc__7ExModelFUl
0x80355990: __vt__7ExModel
0x803559b4: __vt__12ExMdlDataMgr
0x803d5618: sMtxCombinationOn__7ExModel
0x803d86d8: sExModelInvalidLODBias__7ExModel
@ -2724,6 +2859,9 @@ global:
0x80183048: reset__10KartLoaderFv
0x80183098: load__10KartLoaderFv
0x80183cf4: createModel__10KartLoaderFP12JKRSolidHeapUl
0x80183d80: isCommonWheelModelData__10KartLoaderFv
0x80183da8: viewCalc__13ViewCtrlModelFUl
0x803559d0: __vt__13ViewCtrlModel
# HioMgr.cpp
0x80182d00: __ct__7HioNodeFPCcP13JORReflexibleUlUl
0x80182d74: __dt__7HioNodeFv
@ -2947,6 +3085,7 @@ global:
0x8018ebc4: __ct__10KartDrawerFv
0x8018f1f4: setAnimation__10KartDrawerFv
0x8018f704: setShadowInfo__10KartDrawerFRC7CrsArea
0x8018fad0: update__10KartDrawerFv
0x8018fdac: playTevAnm__10KartDrawerFi
0x8018fdcc: stopTevAnm__10KartDrawerFv
@ -2978,7 +3117,10 @@ global:
# RaceBGMPlayer.cpp
0x8019dd54: __ct__13RaceBGMPlayerFv
0x8019dd84: reset__13RaceBGMPlayerFv
0x8019de0c: getCrsDemoBGMLabel__13RaceBGMPlayerFv
0x8019de54: calc__13RaceBGMPlayerFv
0x8019e170: getGoalBGMLabel__13RaceBGMPlayerFv
0x803d3990: sCrsBGMDelayTime__13RaceBGMPlayer
# RaceDirector.cpp
0x8019e3cc: __ct__12RaceDirectorFbP14DemoTimeKeeperi
@ -3004,6 +3146,12 @@ global:
0x803d5720: sSupervisorCreateNum__13GeoRabbitMark
0x803d5724: sSupervisor__13GeoRabbitMark
# Blurscreen.cpp
0x801a3f84: __ct__10BlurScreenFv
0x801a402c: draw__10BlurScreenFRCQ28JUtility6TColorUcUcff
0x801a448c: captureScene__10BlurScreenFv
0x801a44cc: captureBlur__10BlurScreenFv
# KartMtx.cpp
0x801a6678: KartMtxPerspective__FPA4_fffffb
@ -3011,8 +3159,38 @@ global:
0x801a681c: __ct__19AwardDemoTimeKeeperFv
0x801a6f94: __ct__19StaffRollTimeKeeperFv
# GhostScreen.cpp
0x801ab0a0: __ct__11GhostScreenFv
0x801ab13c: reset__11GhostScreenFv
0x801ab148: captureScene__11GhostScreenFv
0x801ab1bc: captureGhost__11GhostScreenFv
0x801ab208: draw__11GhostScreenFv
# ShimmerScreen.cpp
0x801ab4ec: __ct__13ShimmerScreenFP7ResTIMG
0x801ab65c: calc__13ShimmerScreenFv
0x801ab6c0: draw__13ShimmerScreenFv
0x801ab770: drawInit__13ShimmerScreenFv
0x801ab8bc: drawEnd__13ShimmerScreenFv
0x801ab8f8: levelDraw__13ShimmerScreenFi
0x803d3a40: sIndSinedOfs__13ShimmerScreen
0x803d3a42: sIndScaleExp__13ShimmerScreen
0x803d57d8: sIndTexScaleS__13ShimmerScreen
0x803d57dc: sIndTexScaleT__13ShimmerScreen
0x803d57e0: sIndReplace__13ShimmerScreen
# RaceTime.cpp
0x801b1d9c: get__8RaceTimeCFPiPiPi
# MaskScreen.cpp
0x801b1df0: draw__14MaskScreenNodeFv
0x801b2060: __ct__10MaskScreenFv
0x801b2150: reset__10MaskScreenFv
0x801b2190: resetAllMask__10MaskScreenFv
0x801b21d0: requestMask__10MaskScreenFffb
0x801b2298: capture__10MaskScreenFv
0x801b2314: draw__10MaskScreenFv
# MovieApp.cpp
0x801af940: create__8MovieAppFv
0x801af9f4: call__8MovieAppFv
@ -3103,9 +3281,22 @@ global:
0x801b4878: PushDecodedAudioBuffer
# Kawano
# driverData.cpp
0x801b48a8: __ct__15DriverDataChildFv
0x801b48f4: create__10DriverDataFv
0x801b49ec: __dt__10DriverDataFv
0x801b4a4c: __dt__15DriverDataChildFv
# accessory.cpp
0x801c86c8: ptr__12AccessoryMgrFv
0x801c88f4: update__12AccessoryMgrFv
# SceneTitleLine.cpp
0x801c9760: __ct__14SceneTitleLineFP10JKRArchiveP7JKRHeapPc
0x801c98d0: __dt__14SceneTitleLineFv
0x801c9934: init_titleline__14SceneTitleLineFi
0x801c9994: drawTitleLine__14SceneTitleLineFP13J2DOrthoGraph
0x801c99e8: calcAnmTitleLine__14SceneTitleLineFi
0x801c9ab0: calcMatAnmTitleLine__14SceneTitleLineFv
0x8033ee78: mTag_Titleline__14SceneTitleLine
# StaffRoll2D.cpp
0x801cab9c: __ct__11StaffRoll2DFP7JKRHeap8Language9VideoModei
0x801cb6f0: reset__11StaffRoll2DFv
@ -3134,6 +3325,12 @@ global:
0x801cc118: calc__7TestAppFv
0x8035c190: __vt__7TestApp
0x803d5b40: mspTestApp__7TestApp
# shadowModel.cpp
0x801cc11c: createModel__11ShadowModelFP12JKRSolidHeapUlUl
0x801cc198: calc__15KartShadowModelFv
0x801cc2f4: createModel__15KartShadowModelFP12JKRSolidHeapUlUl
0x8035c1a8: __vt__15KartShadowModel
0x8035c1cc: __vt__11ShadowModel
# GameApp.cpp
0x801cc4a4: __ct__7GameAppFUlPCcPv
0x801cc548: __dt__7GameAppFv
@ -3475,6 +3672,8 @@ global:
0x801d8a18: adjustFrame__10NetGameMgrFv
0x801d8c10: progressReadData__10NetGameMgrFv
0x801d8d70: fetchPadData__10NetGameMgrFv
0x801d8e30: sleep__10NetGameMgrFv
0x801d8e48: awake__10NetGameMgrFv
0x803d5c58: mspNetGameMgr__10NetGameMgr
# SequenceApp.cpp
@ -3496,15 +3695,29 @@ global:
0x803d5c60: mspSequenceApp__11SequenceApp
# NetGateApp.cpp
0x801d9aec: create__10NetGateAppFv
0x801d9b3c: call__10NetGateAppFb
0x803d5c68: mspNetGateApp__10NetGateApp
0x803d5c6c: msSkip__10NetGateApp
# TestViewApp.cpp
0x801da324: create__11TestViewAppFv
0x801da374: __ct__11TestViewAppFv
0x801da3d4: __dt__11TestViewAppFv
0x801da434: reset__11TestViewAppFv
0x801da458: draw__11TestViewAppFv
0x801da45c: calc__11TestViewAppFv
0x8035c9e0: __vt__11TestViewApp
0x803d5c70: mspTestViewApp__11TestViewApp
# shadowMgr.cpp
0x801da460: __ct__13ShadowManagerFv
0x801da544: getShadowModelList__13ShadowManagerFQ211ShadowModel10ShadowKind
0x801da594: regist__13ShadowManagerFP11ShadowModel
0x801da664: draw__13ShadowManagerFUlRQ27JGadget60TList
0x801da988: calc__13ShadowManagerFv
0x801daaa0: viewCalc__13ShadowManagerFUl
0x801dab90: setDstAlpha__13ShadowManagerFv
0x801dabec: __dt__13ShadowManagerFv
0x8035c9f8: __vt__13ShadowManager
0x803d5c78: mspShadowManager__13ShadowManager
0x801da988: calc__13ShadowManagerFv
# shadowScr.cpp
@ -3563,6 +3776,13 @@ global:
0x801dc900: line__11PadRecorderFUcP11KartPadData
0x801dcacc: framework__11PadRecorderFv
0x801dcc2c: nextFrame__11PadRecorderFv
# ForceEffectMgr.cpp
0x801dcdf4: __ct__14ForceEffectMgrFv
0x801dce40: __dt__14ForceEffectMgrFv
0x801dcea8: start__14ForceEffectMgrFv
0x801dcf1c: end__14ForceEffectMgrFv
0x8035cbb8: __vt__14ForceEffectMgr
0x803d5ca0: mspForceEffectMgr__14ForceEffectMgr
# BBAMgr.cpp
0x801dd058: create__6BBAMgrFP7JKRHeap
# AwardApp.cpp
@ -3739,6 +3959,7 @@ global:
0x803d5e1c: sJ3DKartAnmMgr__17J3DEfctKartAnmMgr
# ObjUtility.cpp
0x802255b8: getPtrCourseArc__10ObjUtilityFPc
0x8022581c: getKartPos__10ObjUtilityFiPQ29JGeometry8TVec3<f>
# JPEffectPerformer.cpp
0x8022c340: setEffect__17JPEffectPerformerFQ217JPEffectPerformer10EffectTypeiRCQ29JGeometry8TVec3<f>Uc
0x802307d8: initFrameCtrl__13J3DAnmObjBaseFP10J3DAnmBase
@ -3751,29 +3972,262 @@ global:
0x80231ec4: calc__15EffectScreenMgrFv
0x803d5ec0: ThisMgr__15EffectScreenMgr
# RivalKart.cpp
0x8023586c: __ct__9RivalKartFP8KartBody
0x80235a4c: __dt__9RivalKartFv
0x80235ab0: Init__9RivalKartFv
0x80235af8: StartInit__9RivalKartFv
0x80235b20: Reset__9RivalKartFv
0x80235b44: ResetInit__9RivalKartFv
0x80235b8c: setRankAry__9RivalKartFv
0x80235bb0: getMaxSpeed__9RivalKartCFv
0x80235bbc: getOffsetMaxSpeed__9RivalKartCFv
0x80235bc8: setMaxSpeed__9RivalKartFRCf
0x80235bd8: ContempLate__9RivalKartFv
0x80235c68: ActiveCtrl__9RivalKartFv
0x803616c0: __vt__9RivalKart
# StateObserver.cpp
0x80235e54: setState__13StateObserverFUs
# NeckCtrl.cpp
0x8023a3a0: __ct__14CharIKParamMgrFv
0x803d5ee8: mMgr__14CharIKParamMgr
# RivalItemCtrl.cpp
0x80241868: __ct__13RivalItemCtrlFP9RivalKart
0x80241974: init__13RivalItemCtrlFv
0x80241994: reset__13RivalItemCtrlFv
0x802419d0: doItemCtrl__13RivalItemCtrlFv
# RivalBodyCtrl.cpp
0x80243288: __ct__13RivalBodyCtrlFP9RivalKart
0x80243378: init__13RivalBodyCtrlFv
0x80243454: reset__13RivalBodyCtrlFv
0x80243530: setRankArray__13RivalBodyCtrlFv
0x80243710: chkPlayerKartCondition__13RivalBodyCtrlFv
0x8024378c: chkBodyCondition__13RivalBodyCtrlFv
0x80245190: doColWallCtrl__13RivalBodyCtrlFv
0x80245548: comebackRescure__13RivalBodyCtrlFP7CLPointb
0x8024630c: __ct__18RivalAwardBodyCtrlFP9RivalKart
0x80246560: __ct__21RivalAward2ndBodyCtrlFP9RivalKart
# RivalSpeedCtrl.cpp
0x80246ab4: __ct__14RivalSpeedCtrlFP9RivalKart
0x80246dbc: StartInit__14RivalSpeedCtrlFv
0x80246ef8: ResetInit__14RivalSpeedCtrlFv
0x80246f54: LoadCrsLevelParam__14RivalSpeedCtrlFv
0x802472e0: init__14RivalSpeedCtrlFv
0x80247e4c: __ct__23RivalAwardDemoSpeedCtrlFP9RivalKart
0x8024808c: __ct__26RivalAwardDemo2ndSpeedCtrlFP9RivalKart
0x80248390: __ct__27RivalStaffRollDemoSpeedCtrlFP9RivalKart
0x803d5f58: sStartRankPtr__14RivalSpeedCtrl
0x803d5f5c: sConfusedFightModeFlg__14RivalSpeedCtrl
0x803d5f5d: sComWeakPointSwapFlg__14RivalSpeedCtrl
# Shiraiwa
# JugemMain.cpp
0x802505e4: isAbleStart__6TJugemFv
0x80253468: getSignalState__6TJugemFv
# SiUtil.cpp
0x80266f14: checkPassFrame__6SiUtilFfff
0x80266f78: getViewport__6SiUtilFPQ29JGeometry8TBox2<f>UcUc
0x80267088: getViewport__6SiUtilFPQ29JGeometry8TBox2<f>Uc
0x8026712c: getScreenPosCheckMirror__6SiUtilFiRCQ29JGeometry8TVec3<f>PQ29JGeometry8TVec2<f>
0x80267168: getScreenPos__6SiUtilFiRCQ29JGeometry8TVec3<f>PQ29JGeometry8TVec2<f>b
0x802672a8: setItemReaction__6SiUtilFPCvP12GeographyObj
0x80267438: clampVec__6SiUtilFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>
0x802674c0: getNormalRange__6SiUtilFfff
0x802674ec: getConsoleNum__6SiUtilFv
0x80267500: getDrawConsoleNum__6SiUtilFv
0x80267528: getCourseHeight__6SiUtilFRQ29JGeometry8TVec3<f>
0x80267574: searchNearKartBall__6SiUtilFRCQ29JGeometry8TVec3<f>f
0x80267650: searchNearKartCircle__6SiUtilFRCQ29JGeometry8TVec3<f>f
0x8026778c: setRandomStartFrame__6SiUtilFP12J3DFrameCtrlP8stRandom
# WipeSlide.cpp
0x80276fa8: __ct__10TWipeSlideFP7JKRHeap
0x80276ff8: __dt__10TWipeSlideFv
0x80277050: init__10TWipeSlideFv
0x80277088: calcMain__10TWipeSlideFifQ28JUtility6TColor
0x802771b8: drawMain__10TWipeSlideFifQ28JUtility6TColor
0x8027759c: drawQuad__10TWipeSlideFffffRCQ28JUtility6TColor
0x802775c8: drawImage__10TWipeSlideFP10JUTTexturebffff
0x802776cc: initGXForTex__10TWipeSlideFQ28JUtility6TColor
0x8027789c: drawPreOut__9TWipeBaseFiQ28JUtility6TColor
0x80367498: __vt__10TWipeSlide
0x803d45b8: sWipePatternMask__10TWipeSlide
# WipeBase.cpp
0x802779ac: __ct__9TWipeBaseFP7JKRHeap
0x80277dec: getTexture__9TWipeBaseFUl
0x80277e00: __dt__9TWipeBaseFv
0x80277e9c: createBuffer__9TWipeBaseFiP7JKRHeap
0x80277f60: init__9TWipeBaseFv
0x80277f8c: reset__9TWipeBaseFv
0x80277fb0: calc__9TWipeBaseFifQ28JUtility6TColor
0x80278080: changeState__9TWipeBaseFii
0x80278084: draw__9TWipeBaseFifQ28JUtility6TColor
0x80278168: drawPreIn__9TWipeBaseFiQ28JUtility6TColor
0x803674c8: scTextureName__9TWipeBase
0x803674d4: sTexture__9TWipeBase
0x803674e0: __vt__9TWipeBase
# WipeCircle.cpp
0x8027837c: __ct__11TWipeCircleFP7JKRHeap
0x802783e8: __dt__11TWipeCircleFv
0x80278440: init__11TWipeCircleFv
0x802784c0: calcMain__11TWipeCircleFifQ28JUtility6TColor
0x8027866c: drawMain__11TWipeCircleFifQ28JUtility6TColor
0x802787e8: initGX__11TWipeCircleFv
0x80278918: drawBufferImage__11TWipeCircleFP10JUTTextureRQ29JGeometry8TBox2
0x80367510: __vt__11TWipeCircle
0x803d45c0: sAlphaMaxRate__11TWipeCircle
0x803d6218: sAlphaMinRate__11TWipeCircle
# Balloon.cpp
0x8027e158: robRivalOfBalloon__15TBalloonManagerFUl
0x803da818: scSignalInterval__15TJugemRodSignal
0x803d62a4: sSupervisor__14TBalloonString
# MapObjAntLion.cpp
0x8028c4a0: getZDir__14TMapObjAntLionFPQ29JGeometry8TVec3<f>
# WipeCheck.cpp
0x80290320: __ct__10TWipeCheckFP7JKRHeap
0x80290380: __dt__10TWipeCheckFv
0x802903d8: init__10TWipeCheckFv
0x802903fc: calcMain__10TWipeCheckFifQ28JUtility6TColor
0x80290494: drawPreIn__10TWipeCheckFiQ28JUtility6TColor
0x80290594: drawMain__10TWipeCheckFifQ28JUtility6TColor
0x802907e0: drawQuad__10TWipeCheckFffffRCQ28JUtility6TColor
0x8036a3c8: __vt__10TWipeCheck
0x803d4798: sWipeHeightOrg__10TWipeCheck
0x803d479a: sWipeWidthOrg__10TWipeCheck
0x803d479c: sAlphaDiffRate__10TWipeCheck
# WipeShut.cpp
0x80290918: __ct__9TWipeShutFP7JKRHeap
0x80290968: __dt__9TWipeShutFv
0x802909c0: init__9TWipeShutFv
0x802909e4: calcMain__9TWipeShutFifQ28JUtility6TColor
0x80290b6c: drawMain__9TWipeShutFifQ28JUtility6TColor
0x80290e44: initGX__9TWipeShutFv
0x80290f98: drawQuad__9TWipeShutFffffRCQ28JUtility6TColor
0x802910a8: drawTriangle__9TWipeShutFPQ29JGeometry8TVec2<f>RCQ28JUtility6TColor
0x8036a3f8: __vt__9TWipeShut
0x803d47a0: scWipeHeadHeight__9TWipeShut
0x803d47a2: scWipeHeadWidth__9TWipeShut
0x803d47a4: sChangeRate__9TWipeShut
0x803d47a8: sSecondWidthOrg__9TWipeShut
0x803d47ac: sAlphaMaxRate__9TWipeShut
0x803d6378: sAlphaMinRate__9TWipeShut
# WipeLine.cpp
0x80291270: __ct__10TWipeLineAFP7JKRHeap
0x802912c0: __dt__10TWipeLineAFv
0x80291318: init__10TWipeLineAFv
0x8029133c: calcMain__10TWipeLineAFifQ28JUtility6TColor
0x80291434: drawMain__10TWipeLineAFifQ28JUtility6TColor
0x80291638: drawQuad__10TWipeLineAFffffRCQ28JUtility6TColor
0x80291670: __ct__10TWipeLineBFP7JKRHeap
0x802916c0: __dt__10TWipeLineBFv
0x80291718: init__10TWipeLineBFv
0x8029173c: calcMain__10TWipeLineBFifQ28JUtility6TColor
0x80291834: drawMain__10TWipeLineBFifQ28JUtility6TColor
0x80291a38: drawQuad__10TWipeLineBFffffRCQ28JUtility6TColor
0x8036a428: __vt__10TWipeLineA
0x8036a458: __vt__10TWipeLineB
0x803d47b0: sWipeLineWidth__10TWipeLineA
0x803d47b2: sWipeProgressLines__10TWipeLineA
0x803d47b4: sAlphaMaxRate__10TWipeLineA
0x803d47b8: sWipeLineHeight__10TWipeLineB
0x803d47ba: sWipeProgressLines__10TWipeLineB
0x803d47bc: sAlphaMaxRate__10TWipeLineB
0x803d6380: sAlphaMinRate__10TWipeLineA
0x803d6384: sAlphaMinRate__10TWipeLineB
# WipeWave.cpp
0x80291b7c: __ct__10TWipeWaveAFP7JKRHeap
0x80291bcc: __dt__10TWipeWaveAFv
0x80291c24: init__10TWipeWaveAFv
0x80291c48: calcMain__10TWipeWaveAFifQ28JUtility6TColor
0x80291d60: drawMain__10TWipeWaveAFifQ28JUtility6TColor
0x80291f30: drawQuad__10TWipeWaveAFffffRCQ28JUtility6TColor
0x80291f5c: initGX__10TWipeWaveAFRCQ28JUtility6TColor
0x8029215c: drawTex__10TWipeWaveAFffffff
0x8036a488: __vt__10TWipeWaveA
0x803d47c0: sWipeMoveRateMax__10TWipeWaveA
0x803d47c4: sWipeHeadWidth__10TWipeWaveA
0x803d47c8: sWipeHeadHeight__10TWipeWaveA
0x803d47cc: sAlphaMaxRate__10TWipeWaveA
0x803d6388: sWipeStartPos__10TWipeWaveA
0x803d638c: sAlphaMinRate__10TWipeWaveA
# WipeCurtain.cpp
0x8029582c: __ct__12TWipeCurtainFP7JKRHeap
0x8029587c: __dt__12TWipeCurtainFv
0x802958d4: init__12TWipeCurtainFv
0x802958f8: calcMain__12TWipeCurtainFifQ28JUtility6TColor
0x802959cc: drawPreIn__12TWipeCurtainFiQ28JUtility6TColor
0x80295adc: drawMain__12TWipeCurtainFifQ28JUtility6TColor
0x80295e00: drawQuad__12TWipeCurtainFffffRCQ28JUtility6TColor
0x80295e2c: drawImage__12TWipeCurtainFP10JUTTextureffff
0x80295f08: initGXForTex__12TWipeCurtainFQ28JUtility6TColor
0x8036aae8: __vt__12TWipeCurtain
0x803d4800: sLineWidth__12TWipeCurtain
0x803d4804: sAlphaMaxRate__12TWipeCurtain
0x803d63b0: sAlphaMinRate__12TWipeCurtain
# Yamamoto
# kartBody.cpp
0x80298648: DegubBody__8KartBodyFUl
0x802987ec: SetUpRigidBodyStartGridPose__8KartBodyFv
0x80298ce0: DoGForce__8KartBodyFv
0x8029918c: DoPose__8KartBodyFv
0x8029b1dc: CheckObjectReflection__8KartBodyFv
0x8029bbf0: CheckRoofReflection__8KartBodyFv
0x8029bcbc: WallReflection__8KartBodyFPQ29JGeometry8TVec3<f>fff
0x8029be8c: CheckVertexReflection__8KartBodyFv
0x8029c528: CheckBodyHit__8KartBodyFP8KartBodyP8KartBody
0x8029d6b0: Init__8KartBodyFi
# kartCamera.cpp
0x8029dffc: __ct__7KartCamFP8KartBodyP8KartCtrlUcUc
0x8029e080: DegubCamera__7KartCamFPcUl
0x8029e084: DoPort__7KartCamFi
0x8029eb08: Init__7KartCamFb
0x8029ef4c: DoInit__7KartCamFv
0x8029efb8: DoResetInit__7KartCamFv
0x8029efdc: DoRaceCtrl__7KartCamFv
0x8029f190: DoCameraMode__7KartCamFv
0x8029f254: DoCamera__7KartCamFv
0x8036adf0: viewdata
0x8036af30: balloonMinidata
0x8036af60: turtleMinidata
0x8036af90: bombMinidata
0x8036afc0: devilMinidata
0x8036aff0: balloonPakkunMinidata
0x8036b020: bombPakkunMinidata
0x8036b050: devilPakkunMinidata
# kartCtrl.cpp
0x8029f4b8: Init__8KartCtrlFP8KartBodyPP7KartSusPP12KartAppendixP9KartSoundP10KartTargetP8KartDispi
0x8029f614: makeKartCtrl__8KartCtrlFv
0x8029f63c: DynamicsInit__8KartCtrlFb
0x8029fb60: DynamicsReset__8KartCtrlFv
0x8029fd1c: DynamicsStage1__8KartCtrlFv
0x802a01b4: DynamicsStage2__8KartCtrlFv
0x802a02b4: DrawKartInit__8KartCtrlFi
0x802a03cc: __dt__8GrafPortFv
0x802a0438: SetGrafPort__8KartCtrlFv
0x802a05dc: DrwaBody__8KartCtrlFiUlPA4_f
0x802a0668: DrwaParts__8KartCtrlFiUlPA4_f
0x803d63c8: mCtrl__8KartCtrl
# Kartsus.cpp
0x802a10f0: Init__7KartSusFi
0x802a1270: NormalInit__7KartSusFi
0x802a12d4: ResetInit__7KartSusFi
0x802a12f4: DoSusAction__7KartSusFi
0x802a197c: DoTireAction__7KartSusFv
# kartvec.cpp
0x802a20cc: SetVector__7KartVecFP3Vecfff
0x802a20dc: AddVector__7KartVecFP3Vecfff
@ -3807,21 +4261,190 @@ global:
0x802a2e38: AddMatrix__7KartMatFPA4_fPA4_f
0x802a2ecc: NormalizeMatrix__7KartMatFPA4_f
0x802a30a4: OmegaMatrix__7KartMatFPA4_fP3Vecf
# kartCtrlStrat.cpp
0x802ad274: MakeClear__8KartGameFv
0x802ae8f0: DoElementForce__8KartGameFv
0x802afcb0: DoStatus__8KartGameFv
# kartLine.cpp
0x802b075c: getBezierPoint__6SplineFPQ29JGeometry8TVec3<f>f
# kartCtrlInfo.cpp
0x802b09ac: PadAllClear__8KartCtrlFi
0x802b0a18: DoContCtl__8KartCtrlFi
0x802b0c20: DoContCopy__8KartCtrlFi
0x802b0cdc: DoContPaste__8KartCtrlFi
0x802b0d98: GetItemStickY__8KartCtrlFi
0x802b0dac: GetItemStickX__8KartCtrlFi
0x802b0dd4: GetItemButton__8KartCtrlFi
0x802b0e04: DoLod__8KartCtrlFv
0x802b12ec: GetLeftFTirePos__8KartCtrlFiP3Vec
0x802b1314: GetRightFTirePos__8KartCtrlFiP3Vec
0x802b1430: GetCarSpeed__8KartCtrlFi
0x802b1460: GetCarRpm__8KartCtrlFi
0x802b148c: GetKartRpm__8KartCtrlFi
0x802b14a0: GetDriveCont__8KartCtrlFi
0x802b1520: GetCoDriveCont__8KartCtrlFi
0x802b15a0: GetCarStatus__8KartCtrlFi
0x802b1cd8: CheckTandemItmGet__8KartCtrlFi
0x802b1d58: CheckTandemItmRollingGet__8KartCtrlFi
0x802b15b8: GetGameStatus__8KartCtrlFi
0x802b16b0: CheckCamera__8KartCtrlFi
0x802b16d0: GetCameraNum__8KartCtrlFi
0x802b1ad4: GetKartSoundMgr__8KartCtrlFi
0x802b1ae8: GetKartBodyOffset__8KartCtrlFi
0x802b1284: GetBodyPos__8KartCtrlFiPQ29JGeometry8TVec3<f>
0x802b214c: EnemyInit__8KartCtrlFi
0x802b2178: EnemyResetInit__8KartCtrlFi
0x802b1f24: IsMiniGame__8KartCtrlFv
0x802b2128: getKartEnemy__8KartCtrlFi
0x802b3134: SetTargetNum__7KartCamFUc
0x802b2534: DoSterr__9KartStratFv
0x802b2a2c: DoAccel__9KartStratFv
0x802b2f3c: HaveRabbit__8KartCtrlFv
# kartParams.cpp
0x8036b98c: BodyFullHeightData
0x8036b9e0: BodyFullBumpData
0x8036ba34: SusPowerData
0x8036ba88: ThunderOffet
0x8036bb30: SusDushDive
0x8036bb84: SetEngineClassData
0x8036bb90: SusParamsData
0x8036bbe4: TireParamsData
0x8036bc38: BodyParamsData
# kartBodyStrat.cpp
0x802a3318: Init__9KartStratFi
0x802a3330: GetBodySpeed__9KartStratFv
0x802a3368: GetBodyRoll__9KartStratFv
0x802a3538: GetRoadBodyRoll__9KartStratFv
0x802a38ec: GetBodyNorm__9KartStratFv
0x802a8aac: DoMotor__9KartStratFQ212MotorManager9MotorType
# kartCamStrat.cpp
0x802b3134: SetTargetNum__7KartCamFUc
0x802b3154: SetClipper__7KartCamFv
0x802b31c4: CheckClipper__7KartCamFv
0x802b3260: __ct__8GrafPortFiiiifff
0x802b3314: setPort__8GrafPortFv
0x802b3370: SetParam__8GrafPortFfff
0x802b3380: MakeShaker__7KartCamFf
0x802b33c8: SetPtr__7KartCamFv
0x802b34f8: GetCameraPos__7KartCamFv
0x802b3500: GetCameraLookPos__7KartCamFv
0x802b3508: SetFovyData__7KartCamFv
0x802b36f0: First4ScreenPort__7KartCamFUc
0x802b3cb0: Second4ScreenPort__7KartCamFUc
0x802b4270: Third4ScreenPort__7KartCamFUc
0x802b4830: Fourth4ScreenPort__7KartCamFUc
0x802b4df0: SetVictoryScreenPort__7KartCamFUc
0x802b5348: DoMoveCamera__7KartCamFPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>
0x802b5628: DoSea__7KartCamFPQ29JGeometry8TVec3<f>P9CrsGround
0x802b5b68: DoGround__7KartCamFPQ29JGeometry8TVec3<f>P9CrsGround
0x802b60a0: InitOutView__7KartCamFv
0x802b6240: DoLookChase__7KartCamFv
0x802b6324: DoXRotation__7KartCamFv
0x802b6874: DoCamPos__7KartCamFfPQ29JGeometry8TVec3<f>
0x802b6b98: OutView__7KartCamFv
0x802b7490: InitRaceBackView__7KartCamFv
0x802b7580: ParallelView__7KartCamFv
0x802b7714: InitBackView__7KartCamFv
0x802b789c: BackView__7KartCamFv
0x802b78c4: HangRescueView__7KartCamFv
0x802b7a90: InitDropRescueView__7KartCamFv
0x802b7bf8: DropRescueView__7KartCamFv
0x802b7e94: LaunchView__7KartCamFv
0x802b8064: LandView__7KartCamFv
0x802b8234: InitPipeView__7KartCamFv
0x802b83c4: PipeView__7KartCamFv
0x8036be10: __vt__8GrafPort
# KartAnime.cpp
0x802b862c: IsAppeal__9KartAnimeFi
0x802b86ec: IsDamage__9KartAnimeFi
0x802b8ba8: IsBurnAnime__9KartAnimeFi
0x802b8e4c: Init__9KartAnimeFv
# KartItemStrat.cpp
0x802baf94: CheckHitItem__8KartItemFv
0x802bb880: ReleseWanWan__8KartItemFv
# KartSound.cpp
0x802bcf8c: Init__9KartSoundFi
0x802bd088: DoInfo__9KartSoundFi
0x802bd2cc: DoFinishSound__9KartSoundFi
0x802bd31c: DoSlipSound__9KartSoundFi
0x802bd454: DoWallHitSound__9KartSoundFfQ29CrsGround4EMat
0x802bd478: DoHorn__9KartSoundFv
0x802bd5bc: DoKartHitSound__9KartSoundFf
0x802bd5e8: DoMashDashSound__9KartSoundFv
0x802bd614: DoDashSound__9KartSoundFv
0x802bd640: DoRollCrashStartSound__9KartSoundFv
0x802bd678: DoRollCrashSound__9KartSoundFv
0x802bd6b0: DoRollCrashEndSound__9KartSoundFv
0x802bd6e8: DoBrakeSound__9KartSoundFv
0x802bd714: DoStrikeSound__9KartSoundFv
0x802bd74c: DoStarStartSound__9KartSoundFv
0x802bd774: DoStarStopSound__9KartSoundFv
0x802bd79c: DoWanWanStartSound__9KartSoundFv
0x802bd7c4: DoWanWanStopSound__9KartSoundFv
0x802bd804: DoChangeStarSound__9KartSoundFv
0x802bd82c: DoChibiSound__9KartSoundFb
0x802bd854: DoGoalSound__9KartSoundFv
0x802bd88c: DoLapSound__9KartSoundFv
0x802bd8c4: DoThunderSound__9KartSoundFv
0x802bd8f0: DoShootSound__9KartSoundFv
0x802bd91c: DoFireBall__9KartSoundFv
0x802bd954: DoHitFireBall__9KartSoundFv
0x802bd98c: DoKartDiveSound__9KartSoundFv
0x802bd9c4: DoKartMiniTuroboSound__9KartSoundFv
0x802bd9f0: DoKartsetSeSound__9KartSoundFUl
0x802bda20: DoLandingSound__9KartSoundFf
0x802bda44: DoWheelSpin__9KartSoundFv
0x802bda68: DoShineStartBGM__9KartSoundFv
0x802bda94: DoShineStopBGM__9KartSoundFv
0x802bdacc: DoWallObjectSound__9KartSoundFUl
0x802bdb40: DoItemAlarm__9KartSoundFv
0x802bdbbc: DoSpinSound__9KartSoundFv
0x802bdbe0: DoSpinTurnSound__9KartSoundFv
0x802bdc04: DoStrikeVoice__9KartSoundFv
0x802bdc34: DoStaggerVoice__9KartSoundFv
0x802bdc64: DoCannonVoice__9KartSoundFv
0x802bdc94: DoDragVoice__9KartSoundFv
0x802bdcc4: DoGoalVoice__9KartSoundFv
0x802bde78: DoDriverGoalVoice__9KartSoundFv
0x802be02c: DoSpinVoice__9KartSoundFv
0x802be05c: DoFallVoice__9KartSoundFv
0x802be0a4: DoDashVoice__9KartSoundFv
0x802be0d4: DoGoldenDashVoice__9KartSoundFv
0x802be104: DoThrowVoice__9KartSoundFv
0x802be134: DoPutVoice__9KartSoundFv
0x802be164: DoChangeVoice__9KartSoundFv
0x802be194: DoWanwanVoice__9KartSoundFv
0x802be1c4: DoItmHitVoice__9KartSoundFv
0x802be1f4: DoPathVoice__9KartSoundFv
0x802be224: DoShootVoice__9KartSoundFv
0x802be26c: DoRollCrashVoice__9KartSoundFv
0x802be2b4: DoHeartVoice__9KartSoundFv
0x802be2e4: DoTandemVoice__9KartSoundFUc
0x802be310: DoDriverVoice__9KartSoundFUc
0x802be33c: DoAllVoice__9KartSoundFUc
# KartTarget.cpp
0x802be490: Init__10KartTargetFv
0x802be4dc: DoSearchTarget__10KartTargetFi
0x802be898: DoSearchRescueTarget__10KartTargetFP7CLPoint
# KartChecker.cpp
0x802c6368: CheckOnlyTandemPartsClearKey__9KartCheckFi
0x802c6504: CheckPlayer__9KartCheckFv
0x802c6564: CheckDraw__9KartCheckFUli
0x802c65b0: CheckIndication__9KartCheckFv
# KartDamage.cpp
0x802c66f8: ClrAllDamage__10KartDamageFv
0x802c6798: SetDriverEndDamageAnime__10KartDamageFv
# KartStar.cpp
0x802c796c: Init__8KartStarFi
@ -3832,5 +4455,94 @@ global:
# KartTire.cpp
0x802c7c68: Init__8KartTireFi
# KartDemoCam.cpp
0x802ca1c4: Init__11KartDemoCamFP7KartCam
0x802ca204: DoCol__11KartDemoCamFv
0x802ca338: InitFixChaseCam__11KartDemoCamFv
0x802ca5bc: DoFixChaseCam__11KartDemoCamFv
0x802ca870: InitChaseCam__11KartDemoCamFv
0x802caa94: DoChaseCam__11KartDemoCamFv
0x802cae20: DoFixPathCam__11KartDemoCamFv
0x802cb0f4: DoChasePathCam__11KartDemoCamFv
0x802cb4c4: DoFixSplCam__11KartDemoCamFv
0x802cb6f4: DoChaseSplCam__11KartDemoCamFv
0x802cba30: InitFixPalaCam__11KartDemoCamFv
0x802cbdac: DoFixPalaCam__11KartDemoCamFv
0x802cc218: DoDemoPathCam__11KartDemoCamFv
0x802cc5bc: InitDemoGoalView__11KartDemoCamFv
0x802cca14: DemoGoalView__11KartDemoCamFv
0x802cce7c: MapView__11KartDemoCamFv
0x802cd298: ObjectView__11KartDemoCamFv
0x802cd55c: DemoInitID__11KartDemoCamFv
0x802cde58: InitID__11KartDemoCamFv
0x802ce140: DoDemoView__11KartDemoCamFv
0x802ce51c: DemoView__11KartDemoCamFv
0x802ce8e8: DoStartFixPathCam__11KartDemoCamFv
0x802cec2c: DoStartPathCam__11KartDemoCamFv
0x802cf098: DoStartLookPathCam__11KartDemoCamFv
0x802cf3c4: DoStartOnlyPathCam__11KartDemoCamFv
0x802cf758: DoStartFixCam__11KartDemoCamFv
0x802cf97c: DoStartChasePathCam__11KartDemoCamFv
0x802cfe58: VsLastCam__11KartDemoCamFv
0x802d0044: InitLastCam__11KartDemoCamFv
0x802d0404: LastCam__11KartDemoCamFv
0x802d0aa4: InitStartDemoCam__11KartDemoCamFv
0x802d0ea4: StartDemoCam__11KartDemoCamFv
0x802d0f98: SetLastDemo__11KartDemoCamFv
0x802d0ff4: SetNextID__11KartDemoCamFv
0x802d1078: DoExecution__11KartDemoCamFv
0x802d110c: GetStartID__11KartDemoCamFv
0x802d1170: InitStartID__11KartDemoCamFb
0x802d11a8: StartDemoView__11KartDemoCamFv
0x802d11c8: InitStartMapCam__11KartDemoCamFv
0x802d15c8: StartMapCam__11KartDemoCamFv
0x802d16a4: SetMapNextID__11KartDemoCamFv
0x802d170c: SetUpMapID__11KartDemoCamFv
0x802d1768: InitStaffView__11KartDemoCamFv
0x802d1d74: StaffView__11KartDemoCamFv
0x802d1f00: SetStaffNextID__11KartDemoCamFv
0x802d1f60: SetUpStaffID__11KartDemoCamFv
# KartFitParam.cpp
0x8036cb50: TireOpData
0x8036cf24: ArmOpData
0x8036d388: DumpOpData
0x8036d514: BodyOpData
# KartDisp.cpp
0x802d21c0: Init__8KartDispFi
0x802d21d8: DoShake__8KartDispFv
0x802d2490: MakeDispBodyPos__8KartDispFv
0x802d2760: MakeSusMatrix__8KartDispFi
0x802d3160: MatrixScale__8KartDispFPA4_ff
0x802d31d0: MakeTireDispMatrix__8KartDispFv
0x802d3624: MakeScaleMatrix__8KartDispFv
0x802d3c24: MakeKartDisp__8KartDispFv
# KartHandle.cpp
0x802d3fb4: Init__10KartHandleFi
0x802d3fdc: DoMotor__10KartHandleFQ212MotorManager9MotorType
0x802d410c: DoPowerMotor__10KartHandleFfUcUc
0x802d4250: StopMotor__10KartHandleFv
0x802d42bc: WatchFrontalCollisionForce__10KartHandleFv
# KartApeendix.cpp
0x802d45bc: Init__12KartAppendixFi
0x802d45bc: Init__12KartAppendixFi
# KartPipe.cpp
0x802d46f0: Init__8KartPipeFi
0x802d4714: MakePipe__8KartPipeFv
0x802d4894: SetPose__8KartPipeFv
0x802d4d44: DoPipeCrl__8KartPipeFv
0x802d50c4: DoAfterPipeCrl__8KartPipeFv
# KartAnt.cpp
0x802d5248: Init__7KartAntFi
0x802d526c: SetPose__7KartAntFv
0x802d5600: DoAntCrl__7KartAntFv
0x802d5828: DoAfterAntCrl__7KartAntFv
# KartPerCam.cpp
0x802d7670: Init__10KartPerCamFi
0x802d76e8: InitFixPalaCam__10KartPerCamFv
0x802d79c4: InitID__10KartPerCamFv

View File

@ -0,0 +1,30 @@
#ifndef CHARACTERSOUNDMGR_H
#define CHARACTERSOUNDMGR_H
#include "types.h"
#include "kartEnums.h"
#include "Inagaki/SoundMgr.h"
namespace GameAudio
{
class CharacterSoundMgr : public SoundMgr<CharacterSoundMgr>
{ // Autogenerated
public:
CharacterSoundMgr(Vec *, JKRHeap *, unsigned char, ECharID); // 0x80118d1c
void init(); // 0x80118e50
void loop(); // 0x80118ea8
void frameWork(float, float); // 0x80118f48
void setVoice(unsigned char); // 0x80118fb0
void setSe(unsigned long); // 0x801195e0
void isSpeak(); // 0x80119774
void setVoicePitch(bool); // 0x80119800
void getKartSound(); // 0x80119980
void checkEcho(); // 0x801199d8
// Inline/Unused
// void JASGlobalInstance<JAWSpeAna>::sInstance;
// void JASGlobalInstance<JAWSeqEdit>::sInstance;
// Inline
virtual ~CharacterSoundMgr(); // 0x80118df0
}; // class CharacterSoundMgr
}
#endif

View File

@ -4,14 +4,20 @@
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JAudio/JAUSectionHeap.h>
#include "kartEnums.h"
#include "Inagaki/GameAudioFxConfig.h"
#include "Inagaki/GameSoundTable.h"
#include "types.h"
class CrsArea;
namespace GameAudio
{
class CustomMgr;
class CameraMgr;
class CameraMgr {
public:
void setCameraInfo(u32, Vec, Mtx, CrsArea *);
};
class Main
{
@ -45,7 +51,7 @@ namespace GameAudio
void prepareStreamBgm(u32);
void startStreamBgm(u32);
void stopStreamBgm(u32);
void getPlayingStreamID();
u32 getPlayingStreamID();
void setInvincibleBgm(u8, u8);
void clearInvincibleBgm(u8, u8);
void startInvincibleBgm(u8, bool);
@ -86,6 +92,13 @@ namespace GameAudio
// void setSeVolume(f32);
// void checkReset();
CameraMgr *getCamera() {
#line 157
JUT_ASSERT_MSG(mCamera, "GameAudioMain : カメラが初期化されていません。\n");
return mCamera;
}
// static sJAudio; // TODO: type
static Main *getAudio() { return msBasic; };
@ -109,10 +122,41 @@ namespace GameAudio
namespace Parameters
{
extern u8 getDemoMode();
extern void setDemoMode(u8);
void setPlayerMode(u8);
void setRaceMode(u8);
void setDemoMode(u8);
void setKillSwAllObject(bool);
void setRaceCourse(ECourseID);
void setKartType(u8, EKartWeight);
void setNetworkMode(u8, u8);
void setChrType(u8, EKartID);
void setChibiFlag(u8, bool);
void setMirrorSwitch(bool);
ERaceMode getRaceMode();
u8 getPlayerMode();
int getEngineType(u8);
int getCharacterType(u8);
int getRaceCourse();
int getChibiPitch(u32);
int getNetworkCubes();
int getChibiFlag(u8);
u8 getDemoMode();
int getMirrorSwitch();
extern f32 sChibiPitch[4];
extern u8 sDemoMode;
extern u8 sMirrorSwitch;
extern u8 sKartType[8];
extern u8 sChrType[8];
extern u8 sEngType[8];
extern u8 sKartChibiFlag[8];
extern u8 sPlayerMode;
extern u8 sRaceMode;
extern u8 sNetworkCubes;
extern u8 sNetworkNumber;
extern ECourseID sRaceCourse;
}
extern int GoalFanfareDelayFrame;
extern int ParadeBgmMuteFrame;
extern f32 ParadeBgmMuteVolume;
}

View File

@ -3,17 +3,58 @@
#include "types.h"
#include "Inagaki/SoundMgr.h"
#include "Kaneshige/Course/CrsGround.h"
#include "Kaneshige/Course/CrsArea.h"
namespace GameAudio
{
class KartSoundMgr : SoundMgr<KartSoundMgr>
class KartSoundMgr : public SoundMgr<KartSoundMgr>
{
public:
KartSoundMgr();
virtual void dispose();
virtual ~KartSoundMgr();
virtual void init();
virtual void setSe(u32 id);
KartSoundMgr(Vec *, JKRHeap *, u8, u8); // 0x80123118
void startSoundHandleNumber(u8, u32, u32); // 0x801233fc
virtual void dispose(); // 0x801236d0
virtual void init(); // 0x80123708
void changeDriver(bool); // 0x80123ad4
void frameWork(u8 rank); // 0x80123ad8
void checkAfterGoalVolume(); // 0x80123c50
void setWaterDepth(u8, f32); // 0x80123ee4
void setSlip(u8, u8, u8, f32); // 0x80123ef4
void setConductStatus(f32, f32, bool, bool, bool, u8, CrsArea *); // 0x80124400
void setWaterCutoffPort(unsigned short); // 0x8012485c
void countGoalKart(); // 0x80124930
void setConductLocomotiveAccel(); // 0x8012495c
void setConductLocomotiveSpeed(bool); // 0x80124d9c
void setConductPressed(); // 0x80125194
void setConductSignal(); // 0x80125490
void setConductOutOfCourse(u8); // 0x80125b04
void setConductTrouble(f32, u8); // 0x80125f60
void setConductRace(bool); // 0x801263cc
void setConductAfterGoal(bool); // 0x80127188
void setCrushSe(CrsGround::EMat, f32); // 0x801271a8
void setCrushSe(u32, f32); // 0x801272e4
void setBrakeSe(u32); // 0x80127474
void setDashSe(u32); // 0x8012763c
void setMiniturboSe(u32); // 0x801276e4
void setJumpUpSe(u32); // 0x80127770
void setBoundSe(f32); // 0x801277dc
void setWheelSpinSe(); // 0x8012798c
void setSpinSe(); // 0x80127aa4
void setSpinTurnSe(); // 0x80127bb4
virtual void setSe(u32); // 0x80127ccc
void setChibiPitch(JAISoundHandle *); // 0x80127ec8
void adjustEngine(); // 0x80127fb8
void crushRenzokuTaisaku(); // 0x80128140
void slipParamSet(); // 0x8012816c
void checkEcho(); // 0x801288f8
void setInvincibleBgm(u8); // 0x80128aac
void clearInvincibleBgm(u8); // 0x80128c30
void setChibiFlag(bool, bool); // 0x80128e98
virtual ~KartSoundMgr() {}
private:
u8 _30[0x134 - 0x30]; // TODO: place in correct struct
};
}

View File

@ -11,8 +11,9 @@
namespace GameAudio
{
template <typename T>
class SoundMgr : JAUDopplerSoundObject, JKRDisposer
class SoundMgr : public JAUDopplerSoundObject, public JKRDisposer
{
public:
SoundMgr(Vec *, JKRHeap *, u8);
virtual ~SoundMgr();
virtual void init();

View File

@ -53,6 +53,13 @@ struct J2DGrafContext
// inlined
void line(JGeometry::TVec2f, JGeometry::TVec2f);
void scissor(f32 x, f32 y, f32 w, f32 h) {
JGeometry::TBox2f box(x, y, x + w, y + h);
scissor(box);
}
JGeometry::TBox2f &getBounds() { return mBounds; }
// _00 VTBL
JGeometry::TBox2f mBounds; // _04
JGeometry::TBox2f mScissorBounds; // _14
@ -71,6 +78,8 @@ struct J2DGrafContext
struct J2DPerspGraph : public J2DGrafContext
{
J2DPerspGraph(f32 x, f32 y, f32 w, f32 h, f32 fovY, f32 near, f32 far);
J2DPerspGraph();
virtual ~J2DPerspGraph() {} // _08 (weak)
@ -85,15 +94,15 @@ struct J2DPerspGraph : public J2DGrafContext
// _00 = VTBL
// _00-_BC = J2DGrafContext
f32 mFovY; // _BC
f32 _C0; // _C0
f32 _C4; // _C4
f32 mNear; // _C0
f32 mFar; // _C4
f32 _C8; // _C8
};
struct J2DOrthoGraph : public J2DGrafContext
{
J2DOrthoGraph();
J2DOrthoGraph(f32, f32, f32, f32, f32, f32);
J2DOrthoGraph(f32 l, f32 t, f32 r, f32 b, f32 n, f32 f);
virtual ~J2DOrthoGraph(){}; // _08 (weak)
virtual void setPort(); // _14
@ -106,12 +115,14 @@ struct J2DOrthoGraph : public J2DGrafContext
f32 getWidthPower() const { return mBounds.getWidth() / mOrtho.getWidth(); }
f32 getHeightPower() const { return mBounds.getHeight() / mOrtho.getHeight(); }
void setOrtho(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5)
void setOrtho(f32 l, f32 t, f32 w, f32 h, f32 n, f32 f)
{
JGeometry::TBox2<f32> ortho(param_0, param_1, param_0 + param_2, param_1 + param_3);
setOrtho(ortho, param_4, param_5);
JGeometry::TBox2<f32> ortho(l, t, l + w, t + h);
setOrtho(ortho, n, f);
}
const JGeometry::TBox2f &getOrtho() const { return mOrtho; }
// _00 = VTBL
// _00-_BC = J2DGrafContext
JGeometry::TBox2f mOrtho; // _BC

View File

@ -564,6 +564,16 @@ struct J2DPicture : public J2DPane
u8 getTlutID(const ResTIMG *, unsigned char);
void operator=(const J2DPicture &);
void setCornerColor(JUtility::TColor color) { setCornerColor(color, color, color, color); }
void setCornerColor(JUtility::TColor color0, JUtility::TColor color1, JUtility::TColor color2, JUtility::TColor color3)
{
mCornerColors.mColor0 = color0;
mCornerColors.mColor1 = color1;
mCornerColors.mColor2 = color2;
mCornerColors.mColor3 = color3;
}
inline void setCornerColor(TCornerColor colors)
{
mCornerColors.mColor0.set(colors.mColor0);

View File

@ -195,6 +195,7 @@ struct J3DModel
void calcBumpMtx();
void calcBBoardMtx();
void prepareShapePackets();
void setDeformData(J3DDeformData *, u32);
inline J3DModelData *getModelData() { return mModelData; }
@ -205,7 +206,7 @@ struct J3DModel
bool isCpuSkinningOn() const { return (mFlags & J3DMODEL_Unk3) && (mFlags & J3DMODEL_Unk4); }
Mtx &getBaseTRMtx() { return mPosMtx; }
void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mPosMtx); }
void setBaseTRMtx(Mtx m) { PSMTXCopy(m, mPosMtx); }
u32 getMtxCalcMode() const { return mFlags & J3DMODEL_Unk3; }
J3DVertexBuffer *getVertexBuffer() const { return (J3DVertexBuffer *)&mVertexBuffer; }
J3DMatPacket *getMatPacket(u16 idx) const { return &mMatPackets[idx]; }

View File

@ -5,28 +5,42 @@
#include "JSystem/J3D/J3DCluster.h"
struct J3DAnmCluster;
class J3DClusterVertex;
enum J3DSkinDeformFlags {
J3DSKIN_Unk1 = 0x1,
J3DSKIN_Unk2 = 0x2,
};
struct J3DDeformData {
class J3DDeformData
{
public:
J3DDeformData();
void offAllFlag(u32);
void deform(J3DVertexBuffer *);
void deform(J3DModel *);
void setAnm(J3DAnmCluster *);
u16 mClusterNum; // _00
u16 mClusterKeyNum; // _02
u16 _04; // _04
J3DCluster** mClusters; // _08
J3DClusterKey** mClusterKeys; // _0C
int _10; // _10
u16 _14; // _14
u16 _16; // _16
void* mVtxPos; // _18, check type
void* mVtxNorm; // _1C, check type
int _20; // _20
int _24; // _24
};
J3DCluster *getClusterPointer(u16 index) { return &mClusterPointer[index]; }
u16 getClusterNum() const { return mClusterNum; }
u16 getClusterKeyNum() const { return mClusterKeyNum; }
J3DClusterKey *getClusterKeyPointer(u16 i) { return &mClusterKeyPointer[i]; }
f32 *getVtxPos() { return mVtxPos; }
f32 *getVtxNrm() { return mVtxNrm; }
u16 mClusterNum; // 00
u16 mClusterKeyNum; // 02
u16 mClusterVertexNum; // 04
J3DCluster *mClusterPointer; // 08
J3DClusterKey *mClusterKeyPointer; // 0c
J3DClusterVertex *mClusterVertex; // 10
u16 mVtxPosNum; // 14
u16 mVtxNrmNum; // 16
f32 *mVtxPos; // 18
f32 *mVtxNrm; // 1C
JUTNameTab *mClusterName; // 20
JUTNameTab *mClusterKeyName; // 24
}; // Size: 0x28
struct J3DDeformer {
J3DDeformer(J3DDeformData*);
@ -44,7 +58,7 @@ struct J3DDeformer {
u32 mFlags; // _10
};
struct J3DSkinDeform {
/*struct J3DSkinDeform {
J3DSkinDeform();
virtual void deform(J3DVertexBuffer*, J3DMtxBuffer*); // _08
@ -58,10 +72,10 @@ struct J3DSkinDeform {
// _00 VTBL
void* mPosData; // _04
BitFlag<u32> _08; // _08 /* bitfield of some sort */
//BitFlag<u32> _08; // _08 // bitfield of some sort
unknown _0C; // _0C
unknown _10; // _10
BitFlag<u32> mFlags; // _14
};
};*/
#endif

View File

@ -7,6 +7,7 @@
struct JASGenericMemPool
{
JASGenericMemPool();
~JASGenericMemPool();
void free(void *, u32);
void *mRunner;
@ -19,7 +20,7 @@ template <typename T>
struct JASMemPool : public JASGenericMemPool
{
JASMemPool<T>() : JASGenericMemPool() {}
~JASMemPool<T>();
~JASMemPool<T>() {}
};
template <u32 ChunkSize, typename T>
@ -164,6 +165,7 @@ public:
template <typename T>
struct JASPoolAllocObject
{
~JASPoolAllocObject();
static void operator delete(void *mem, u32 n)
{
BOOL inter = OSDisableInterrupts();
@ -177,7 +179,7 @@ template <typename T>
struct JASMemPool_MultiThreaded : public JASGenericMemPool
{
JASMemPool_MultiThreaded<T>() : JASGenericMemPool() { }
~JASMemPool_MultiThreaded<T>();
~JASMemPool_MultiThreaded<T>() {}
};

View File

@ -87,11 +87,11 @@ public:
static JFWDisplay *getManager() { return sManager; }
u32 getEfbHeight() const {
int getEfbHeight() const {
return JUTVideo::getManager()->getEfbHeight();
}
u32 getEfbWidth() const {
int getEfbWidth() const {
return JUTVideo::getManager()->getFbWidth();
}
@ -124,6 +124,15 @@ public:
return mClearColor;
}
void setClearColor(u8 r, u8 g, u8 b, u8 a) {
mClearColor.set(r, g, b, a);
}
void setClearColor(JUtility::TColor color)
{
mClearColor.set(color);
}
void setFBAlpha(bool enable) {
mEnableAlpha = enable;
}
@ -133,6 +142,8 @@ public:
return mEnableAlpha;
}
bool isWaiting() { return mIsWaiting; }
static JFWDisplay *sManager; // 0x80415718
private:
@ -152,7 +163,7 @@ private:
/* 0x34 */ u32 _34;
/* 0x38 */ int _38;
/* 0x3C */ int _3C;
/* 0x40 */ bool _40;
/* 0x40 */ bool mIsWaiting;
/* 0x44 */ JFWDisplayUnkFunc _44;
/* 0x48 */ s16 _48;
/* 0x4A */ u8 _4a;

View File

@ -51,7 +51,7 @@ struct TBox2 : TBox<TVec2<T> > {
TBox2() {}
TBox2(const TVec2<f32>& i, const TVec2<f32> f) { set(i, f); }
TBox2(f32 x0, f32 y0, f32 x1, f32 y1) { set(x0, y0, x1, y1); }
TBox2(f32 x0, f32 y0, TVec2<f32>& f) { set(x0, y0, x0 + f.x, y0 + f.y); }
TBox2(f32 x0, f32 y0, const TVec2<f32>& f) { set(x0, y0, x0 + f.x, y0 + f.y); }
TBox2(f32 val)
{
f.y = val;
@ -81,8 +81,6 @@ struct TBox2 : TBox<TVec2<T> > {
};
// clang-format on
template <typename T>
struct TBox3
{

View File

@ -10,7 +10,7 @@ namespace JGeometry {
class TUtil
{
public:
static f32 abs(f32 x) { return __fabs(x); }
static f32 abs(f32 x) { return __fabsf(x); }
static f32 atan2(f32 y, f32 x) { return JMAAtan2Radian(y, x); }
static const f32 epsilon() { return 32.0f * FLT_EPSILON; }

View File

@ -263,12 +263,13 @@ namespace JGeometry {
f32 dotZX(const TVec3 &operand) const { return x * operand.x + z * operand.z; }
f32 length() const { return PSVECMag((Vec *)this); }
f32 angle(TVec3 vec2)
f32 angle(const TVec3 &vec2) const
{
TVec3 crossp;
crossp.cross(*this, vec2);
f32 ang = TUtilf::atan2(crossp.length(), dot(vec2));
f32 len = crossp.length();
f32 dp = dot(vec2);
f32 ang = TUtilf::atan2(len, dp);
return TUtilf::abs(ang);
}

View File

@ -1,8 +1,9 @@
#ifndef JOR_REFLEXIBLE_H
#define JOR_REFLEXIBLE_H
class JORReflexible {
class JORReflexible
{
};
#endif

View File

@ -11,7 +11,7 @@
struct JUTConsole;
struct JUTDirectPrint;
typedef void (*JUTErrorHandler)(OSError error, OSContext *context, u32 p3, u32 p4);
typedef void (*JUTErrorHandler)(OSError error, OSContext *context, u32 dsisr, u32 dar);
enum ExPrintFlags
{

View File

@ -40,6 +40,13 @@ struct JUTTexture : public GXTexObj
mFlags &= TEXFLAG_Unk2;
}
inline JUTTexture(const ResTIMG *timg, u8 lutid)
{
mEmbPalette = nullptr;
storeTIMG(timg, lutid);
setCaptureFlag(false);
}
~JUTTexture();
void attachPalette(JUTPalette *);
@ -54,22 +61,21 @@ struct JUTTexture : public GXTexObj
void storeTIMG(const ResTIMG *, JUTPalette *);
void storeTIMG(const ResTIMG *, JUTPalette *, _GXTlut);
/** @fabricated */
inline int getSizeX() const { return mTexInfo->mSizeX; }
/** @fabricated */
inline int getSizeY() const { return mTexInfo->mSizeY; }
const ResTIMG *getTexInfo() const { return mTexInfo; }
void setCaptureFlag(bool flag) { mFlags &= TEXFLAG_Unk2 | flag; }
ResTIMG *getTexInfo() const { return mTexInfo; }
void setCaptureFlag(bool flag) { mFlags = mFlags & TEXFLAG_Unk2 | flag; }
u8 getCaptureFlag() const { return mFlags & TEXFLAG_Unk1; }
int getEmbPaletteDelFlag() const { return (mFlags & TEXFLAG_Unk2) != 0; }
void setEmbPaletteDelFlag(bool del) {
mFlags &= 1 | del << 1;
mFlags &= TEXFLAG_Unk1 | del << 1;
}
u8 getTlutName() const { return mTlut; }
void setTlutName(u8 tlut) { mTlut = tlut; }
GXTexFmt getFormat() const {return (GXTexFmt)mTexInfo->mTextureFormat; }
int getWidth() const { return mTexInfo->mSizeX; }
int getHeight() const { return mTexInfo->mSizeY; }
ResTIMG *mTexInfo; // _20
void *mTexData; // _24
JUTPalette *mEmbPalette; // _28

View File

@ -20,9 +20,9 @@ namespace JUtility
TColor(GXColor color) { set(color); }
TColor &operator=(const TColor &other)
TColor &operator=(const TColor &other) // is this actually needed?
{
((GXColor *)this)->operator=(other);
*((GXColor *)&r) = (other);
return *this;
}
@ -69,8 +69,17 @@ namespace JUtility
a = other.a;
}
// fabricated. but helped solve regswaps in a function
void setRGBA(const TColor &RGB, u8 _a)
{
setRGB(RGB);
a = _a;
}
// _00 = GXColor (_00 = r, _01 = g, _02 = b, _03 = a)
};
} // namespace JUtility
typedef JUtility::TColor JUTColor;
#endif

28
include/Kameda/Demo2D.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef DEMO2D_H
#define DEMO2D_H
#include "Kaneshige/HioMgr.h"
class Demo2D
{ // Autogenerated
// Global
Demo2D(JKRHeap *); // 0x8018313c
void init(); // 0x8018325c
void draw(); // 0x801832d0
void calc(); // 0x80183344
class Demo2DParam : public JORReflexible
{
// Inline/Unused
Demo2DParam();
virtual ~Demo2DParam() {}
};
class Demo2DHioNode
{
};
// Inline/Unused
~Demo2D();
}; // class Demo2D
#endif // DEMO2D_H

24
include/Kameda/Fade.h Normal file
View File

@ -0,0 +1,24 @@
#ifndef _FADE_H
#define _FADE_H
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JUtility/TColor.h>
#include "types.h"
// Considering this is similar to Mario.h, the might be some sort of inheritance going on?
class Fade
{ // Autogenerated
public:
Fade(JKRHeap *); // 0x8013b318
void init(); // 0x8013b76c
void draw(int, f32, JUtility::TColor); // 0x8013b770
// Inline/Unused
~Fade();
private:
u8 _0[0x34];
}; // class Fade
#endif

View File

@ -2,33 +2,89 @@
#define J2DMANAGER_H
#include "JSystem/JKernel/JKRHeap.h"
#include "Kameda/Demo2D.h"
#include "Kameda/Race2D.h"
#include "Kameda/WipeManager.h"
#include "types.h"
// TODO: implement these
class PreRace2D;
class Go3212D;
class Go2D;
class Goal2D;
class LANNum2D;
class LANResult2D;
class J2DManager
{
public:
J2DManager(JKRHeap *);
void calc();
void calcParticle();
void reset();
void startLANNumAnm();
J2DManager(JKRHeap *); // 0x8013156c
void reset(); // 0x801317cc
void draw(); // 0x801319bc
void calc(); // 0x80131a94
void calcParticle(); // 0x80131c10
static int getKart2Status(int); // 0x80131c68
static int getStatus2Kart(int); // 0x80131d00
void setStatus2Kart(int, int); // 0x80131d98
void setUsisi(int, ECharID); // 0x80131f40
void startPreRace(); // 0x80132034
void getPreRaceStatus(); // 0x80132058
int getPreRaceWipeType(); // 0x80132064
void setRace2DDrawFlag(bool); // 0x80132070
void hideRace2D(); // 0x80132084
void getHideFrameRace2D(); // 0x80132094
bool isHideRace2D(); // 0x801320a0
bool isRaceEnd(); // 0x801320c0
bool isGoalAnmEnd(int); // 0x80132120
void getGoalAnmFrame(int); // 0x801321b0
bool isAlarm(int); // 0x801321c4
void startLANNumAnm(); // 0x801321e8
void startLANNumResultAnm(); // 0x8013220c
void startLANResultAnm(int); // 0x80132230
void startBombDemo(); // 0x80132254
void endBombDemo(); // 0x80132278
bool isLANDemo(); // 0x80132288
bool isStartGo321(); // 0x801322b4
void setStatus2Kart(int, int);
// Inline/Unused
~J2DManager();
bool isMiniGameAnmEnd(int);
void setDrawFlag(bool flag)
{
mDrawFlag = flag;
}
static J2DManager *getManager()
{
return mThis;
}
void startWinnerAnm(int idx) { mWinnerAnmFlag[idx] = true; }
void startLoserAnm(int idx) { mLoserAnmFlag[idx] = true; }
void setDrawFlag(bool flag) { mDrawFlag = flag; }
static J2DManager *mThis;
JKRArchive *getArchive() const { return mArchive; }
u8 _00[0x8];
static J2DManager *getManager() { return mThis; }
static const char *mKartNumberName[8]; // 0x80394378
static int mKart2Status[8]; // 0x803fb9a0
static int mStatus2Kart[8]; // 0x803fba10
static J2DManager *mThis; // 0x80416288
static bool mNetFlag; // 0x8041628c
JKRArchive *mArchive;
J2DOrthoGraph *mOrtho;
bool mDrawFlag;
u8 _0A[0x48 - 0x9];
bool mInit;
int mAnmFrame;
bool mWinnerAnmFlag[8];
bool mLoserAnmFlag[8];
int mDuration;
Demo2D *mDemo2D;
PreRace2D *mPreRace;
Go3212D *mGo321;
Go2D *mGo;
Race2D *mRace;
Goal2D *mGoal;
LANNum2D *mLANNumAnm;
LANResult2D *mLANResultAnm;
WipeManager *mWipeMgr;
}; // Size 0x48;
inline J2DManager *GETJ2DManager() { return J2DManager::getManager(); }
#endif

23
include/Kameda/Mario.h Normal file
View File

@ -0,0 +1,23 @@
#ifndef _MARIO_H
#define _MARIO_H
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JUtility/TColor.h>
#include "types.h"
class Mario
{ // Autogenerated
public:
Mario(JKRHeap *heap); // 0x8016eed0
void init(); // 0x8016f4cc
void draw(f32, JUtility::TColor color); // 0x8016f4d0
// Inline/Unused
~Mario();
void draw(int, f32, JUtility::TColor color);
private:
u8 _0[0x30];
}; // class Mario
#endif

View File

@ -11,7 +11,29 @@ public:
// Global
enum MotorType
{
// TODO
MotorType_0,
MotorType_1,
MotorType_2,
MotorType_3,
MotorType_4,
MotorType_5,
MotorType_6,
MotorType_7,
MotorType_8,
MotorType_9,
MotorType_10,
MotorType_11,
MotorType_12,
MotorType_13,
MotorType_14,
MotorType_15,
MotorType_16,
MotorType_17,
MotorType_18,
MotorType_19,
MotorType_20,
MotorType_21,
MotorType_22
};
MotorManager(JKRHeap *); // 0x80130e58

View File

@ -6,7 +6,8 @@
class PauseManager {
public:
PauseManager(JKRHeap *);
PauseManager(JKRHeap *);
static bool tstPause(); // 0x80135288;
void setExecFlag(bool flag) {
mExecFlag = flag;
}

113
include/Kameda/SceneMenu.h Normal file
View File

@ -0,0 +1,113 @@
#ifndef SCENEMENU_H
#define SCENEMENU_H
#include "Kameda/Scene.h"
class SceneMenu : public Scene
{
public:
struct BckData
{
};
struct BrkData
{
};
enum Cursor
{
};
SceneMenu(JKRArchive *, JKRHeap *); // 0x8016f78c
void reset(); // 0x801725b8
void init(); // 0x80172e6c
~SceneMenu(); // 0x80173908
void draw(); // 0x80173960
void calc(); // 0x80173f08
void calcModeAnm(); // 0x801750b0
void caleEngine(BckData *); // 0x801751ac
void calcEngineMoji(BckData *); // 0x801751ec
void calcEnginePic(BckData *); // 0x801752f0
void calcEngineBrkAnm(BrkData *); // 0x801753f4
void calcModeOrder(); // 0x80175434
void entry_init(); // 0x801755b4
void entry(); // 0x80175970
void entry_end(); // 0x80176268
void vs_init(); // 0x801762ec
void vs(); // 0x80176c5c
void vs_end(); // 0x801780bc
void mode_init(); // 0x8017836c
void mode(); // 0x801797d0
void mode_end(); // 0x8017b78c
void battle_init(); // 0x8017c834
void battle(); // 0x8017cd14
void battle_end(); // 0x8017d39c
void character_init(); // 0x8017d4a0
void character(); // 0x8017e3b8
void character_end(); // 0x8017e86c
void nextScene(); // 0x8017ebf4
void selectA(int); // 0x8017ece8
void selectB(int); // 0x8017eefc
void selectUp(int); // 0x8017f17c
void selectDown(int); // 0x8017f28c
void selectLeft(int); // 0x8017f39c
void selectRight(int); // 0x8017f4a0
void selectZ(int); // 0x8017f5a4
void isSelectAnm(int); // 0x8017f6f0
void moveCursor(int, Cursor); // 0x8017f754
void isRndRoulette(); // 0x8017fb78
void rndRoulette(); // 0x8017fc50
void rndSelect(); // 0x8017fce0
void setCharacterFlag(); // 0x8017fe00
void getKart(int, int); // 0x8017ff04
void changeKart(int, int, int, int); // 0x80180060
void characterAnm(); // 0x8018029c
void characterOkWaitAnm(); // 0x80180ef8
void setChar1Plus(); // 0x80181450
void setRaceData(); // 0x801817f0
void setCharSelFlag(); // 0x801828f8
void useCharSel(int, int); // 0x80182954
void getCharSel(int &, int &); // 0x8018296c
void getRndCharSel(int &, int &); // 0x80182d14
void changeText(); // 0x80182e8c
private:
static int mCharVoice; // 0x80371338
static int mCharGoVoice; // 0x80371388
static int mCharIndex; // 0x803713d8
static int mKartIndex; // 0x803715d4
static int mKartPerf; // 0x80371628
static int mLevelID; // 0x80371668
static int mPlayerIconBckTag; // 0x80371678
static int mHowManyDriversBckTag; // 0x803717b0
static int mHowManyDriversBrkTag; // 0x80371818
static int mSingleTagSelectBckTag; // 0x803718c8
static int mSingleTagSelectBtkTag; // 0x80371a20
static int mSingleTagSelectBrkTag; // 0x80371ae0
static int mSingleTagSelectBpkTag; // 0x80371d50
static int mModeBckTag; // 0x80371d88
static int mModeBtkTag; // 0x80371fe0
static int mModeBrkTag; // 0x803720b0
static int mModeBpkTag; // 0x803721a0
static int mBattleBckTag; // 0x803722a0
static int mBattleBrkTag; // 0x80372318
static int mCharCCBckTag; // 0x80372330
static int mCharCCBrkTag; // 0x80372340
static int mCharCCBpkTag; // 0x80372360
static int mChar1BckTag; // 0x803723f0
static int mChar1PlusBckTag; // 0x80372438
static int mChar1PlusBrkTag; // 0x803724d0
static int mChar2BckTag; // 0x803724e0
static int mChar2BrkTag; // 0x80372580
static int mChar3BckTag; // 0x803725a8
static int mChar3BrkTag; // 0x80372680
static int mChar4BckTag; // 0x803726c0
static int mCharName; // 0x80395648
static int mPlayerIconPlayerName; // 0x80395698
static int mPowerMojiName; // 0x803956a8
static int mPowerPicName; // 0x803956b8
static int mBattleName; // 0x803956c8
static int mCharCCName; // 0x803956d4
}; // Size: 0x22c0
#endif

View File

@ -4,14 +4,16 @@
#include "Kaneshige/KartInfo.h"
#include "types.h"
struct DemoKart { // most likely a placeholder struct
struct DemoKart
{ // most likely a placeholder struct
ECharID char1;
ECharID char2;
EKartID kart;
};
class SequenceInfo {
public:
class SequenceInfo
{
public:
void rndDemo(u32);
void getDemoKart(int no, ECharID &charID1, ECharID &charID2, EKartID &kartID)
{
@ -23,8 +25,12 @@ class SequenceInfo {
kartID = mDemoKart[no].kart;
}
private:
u8 _0[0x36c];
void setGhostFlag(u8 flags) { mGhostFlags = flags; }
private:
u8 _0[0x34];
u8 mGhostFlags;
u8 _35[0x36c - 0x35];
DemoKart mDemoKart[8];
u8 _0x390[0x44c - 0x390];
};

47
include/Kameda/Task.h Normal file
View File

@ -0,0 +1,47 @@
#ifndef TASK_H
#define TASK_H
#include "types.h"
class Task {
public:
typedef void (*TaskFunc)();
struct TCB
{
TaskFunc mFunc;
TCB *mPrev;
TCB *mNext;
u32 _c;
u32 _10;
u32 _14;
u16 mStackSize;
bool mRequestKill;
int mExecIdx; // The amount of times a function has to be executed before it gets killed?
int _20;
s16 _24; // pre
s16 _26; // main
s16 _28; // after
u8 _2a[0x3c - 0x2a]; // unknown
}; // Size: 0x3c
Task(int cnt);
~Task();
void init();
TCB *make(TaskFunc func, u16 stackSize);
void run();
void change(TaskFunc func, TCB *cb);
void kill(TCB *cb);
static void head();
static void tail();
int mTaskCnt;
TCB *mCBs;
TCB **mCBArr;
int mTaskIdx;
int mKillCnt;
TCB *mCurCB;
};
#endif

View File

@ -0,0 +1,138 @@
#ifndef WIPEMANAGER_H
#define WIPEMANAGER_H
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JUtility/TColor.h>
#include "Kameda/Fade.h"
#include "Kameda/Mario.h"
#include "Kameda/Task.h"
#include "Kaneshige/HioMgr.h"
#include "Shiraiwa/Wipe.h"
// Not sure if this is correct
class WipeParam : public JORReflexible
{
public:
// Inline/Unused
WipeParam();
virtual ~WipeParam() {}
// fabricated
bool isDrawEnabled() const { return mDrawFlag & 1; }
u8 _4;
u8 mDrawFlag;
u8 _6;
u8 _7;
u8 _8;
u8 _9;
u16 _a;
u16 _c;
u16 _e;
u16 _10;
};
class WipeHioNode : public HioNode
{
public:
virtual ~WipeHioNode() {}
// no idea if the \\ is a workaround
WipeHioNode() : HioNode("ƒ<EFBFBD>ƒCƒv•\\\Ž¦", &mParam, 0, 0) {}
WipeParam mParam;
};
class WipeManager
{
public:
WipeManager(JKRHeap *); // 0x80138720
void reset(); // 0x80138b38
void draw(); // 0x80138bc0
void drawIn(int kart, int status, int); // 0x80138e34
void drawOut(int kart, int status, int); // 0x80139534
void calc(); // 0x80139c28
void calcIn(int kart, int status, int); // 0x80139d5c
void calcOut(int kart, int status, int); // 0x8013a400
int getWipeState(int kart); // 0x8013aa98
void setWipe(int kart, int, short, short, short, JUtility::TColor); // 0x8013ab30
// The tasks
static void initPre(); // 0x8013ad30
static void preWipe(); // 0x8013ae04
static void initMain(); // 0x8013aecc
static void mainWipe(); // 0x8013afa0
static void initAfter(); // 0x8013b068
static void afterWipe(); // 0x8013b13c
// Unused
~WipeManager();
void killWipe(int idx) { mKillFlag[idx] = true; }
void startWipe(int idx) { mMoveFlag[idx] = true; }
void stopWipe(int idx) { mMoveFlag[idx] = false; }
static WipeManager *getManager() { return mThis; }
private:
static WipeManager *mThis; // 0x804162c0
static Task *mTask; // 0x804162c4
static bool mMoveFlag[8]; // 0x804162c8
static bool mKillFlag[8]; // 0x804162d0
class
{
public:
void reset()
{
mWipeType = 0;
mWipeState = 6;
_8 = 0;
_a = 0;
_c = 0;
_e = 0;
mColor.set(0, 0, 0, 0);
}
// fabricated inlines, only setColor should be needed?(fixed something in setWipe)
void setWipeType(int type) { mWipeType = type; }
void setColor(JUtility::TColor color)
{
mColor.r = color.r;
mColor.g = color.g;
mColor.b = color.b;
mColor.a = color.a;
}
void setPreMainAfter(s16 pre, s16 main, s16 after)
{
_a = pre;
_c = main;
_e = after;
}
int mWipeType;
int mWipeState;
s16 _8;
s16 _a; // pre
s16 _c; // main
s16 _e; // after
JUtility::TColor mColor;
} _0[8];
int mScrnCount;
WipeHioNode *mNode;
Fade *mFade;
Mario *mMario;
TWipeSlide *mWipeSlide;
TWipeCheck *mWipeCheck;
TWipeShut *mWipeShut;
TWipeLineA *mWipeLineA;
TWipeLineB *mWipeLineB;
TWipeWaveA *mWipeWaveA;
TWipeCircle *mWipeCircle;
TWipeCurtain *mWipeCurtain;
int mKartNum;
}; // class WipeManager
inline WipeManager *GETWipeManager() { return WipeManager::getManager(); }
#endif // WIPEMANAGER_H

View File

@ -0,0 +1,25 @@
#ifndef BLURSCREEN_H
#define BLURSCREEN_H
#include <JSystem/JUtility/JUTTexture.h>
#include "types.h"
class BlurScreen
{
public:
BlurScreen(); // 0x801ccf74
void draw(const JUtility::TColor &color, u8, u8, f32, f32); // 0x801cd030
void captureScene(); // 0x801cd46c
void captureBlur(); // 0x801cd4b8
private:
u16 mStartX;
u16 mStartY;
u16 mEndX;
u16 mEndY;
bool mFlush;
bool mFlushBlur;
JUTTexture mBlurTex;
JUTTexture mSceneTex;
};
#endif // BLURSCREEN_H

View File

@ -161,6 +161,40 @@ public:
s16 next[4]; // The indices of up to 4 group links to follow after this one. Unneeded slots are set to value -1.
};
class Camera
{
public:
void getFrontDirection(JGeometry::TVec3f *out) const;
void getPosition(JGeometry::TVec3f *out) const { out->set(mPos); }
void getTargetPos(JGeometry::TVec3f *out) const { out->set(mTargetPos); }
void getTargetPos2(JGeometry::TVec3f *out) const { out->set(mTargetPos2); }
f32 getFovy() const { return mFovY; }
f32 getFovy2() const { return mFovY2; }
u32 getKind() const { return mKind; }
s16 getPathSpeed() const { return mPathSpeed; }
s16 getPathID() const { return mPathID; }
private:
JGeometry::TVec3f mPos;
JGeometry::TVec3f mDir;
JGeometry::TVec3f mTargetPos2;
JGeometry::TVec3f mTargetPos;
u16 mKind;
u16 mFovY; // start
s16 mTime;
s16 mID;
s16 mShimmerZ0;
s16 mShimmerZ1;
s16 mPathID;
s16 mPathSpeed;
u16 mFovY2; // end
s16 mNextID;
char mName[4];
}; // 48
class Ground
{
public:
@ -251,6 +285,7 @@ public:
u8 getShadowDepth() const { return mObjectData->shadowDepth; }
u8 getShaking() const { return mObjectData->shaking; }
int getAreaNumber() const { return mObjectData->areaNum; }
int getCameraNumber() const { return mObjectData->cameraNum; }
int getCheckPathNumber() const { return mObjectData->checkPathNum; }
int getCLPointNumber() const { return mObjectData->clPointNum; }
int getJugemPointNumber() const { return mObjectData->jugemPointNum; }
@ -269,13 +304,13 @@ public:
// Read from file offset
/*Camera *getCameraData(int camIdx) const
{
Camera *getCameraData(int camIdx) const;
/*{
Camera *camData = nullptr;
if (camIdx >= 0 && camIdx < getCameraNumber())
{
camData = reinterpret_cast<Camera *>(reinterpret_cast<char *>(mObjectData) + mObjectData->mCameraOffset) + camIdx;
camData = reinterpret_cast<Camera *>(reinterpret_cast<char *>(mObjectData) + mObjectData->cameraOffset) + camIdx;
}
return camData;
}*/

View File

@ -24,7 +24,7 @@ public:
void checkPolygonCoverMain(const JGeometry::TVec3f &, const CrsData::SColInfoSphere &, u32, f32, f32, f32, const CrsData::Ground *); // 0x801a2d20
void isInsideGrid(const JGeometry::TVec3f &, f32, f32, f32, f32); // 0x801a2ec0
void searchGridIndex(int *, int *, Course *, const JGeometry::TVec3f &, f32, f32, f32, f32, int, int); // 0x801a3004
void getHeight() const; // 0x801a3168
f32 getHeight() const; // 0x801a3168
void getNormal(JGeometry::TVec3f *) const; // 0x801a3170
u8 getCameraCode() const; // 0x801a319c
void isItemInvalGround() const; // 0x801a3204
@ -36,9 +36,9 @@ public:
void getSplashID(); // 0x801a3520
void getJugemPoint(); // 0x801a35ec
void getCannonPoint(); // 0x801a36d4
void getPipePoint(); // 0x801a3728
JugemPoint *getPipePoint(); // 0x801a3728
void getGeoCannon(); // 0x801a377c
void getWaterHeight(); // 0x801a37e8
f32 getWaterHeight(); // 0x801a37e8
void isShaking() const; // 0x801a3848
void isAttributeCollision(); // 0x801a38a8
void getWallNormal(JGeometry::TVec3f *, JGeometry::TVec3f *); // 0x801a38f4

View File

@ -45,7 +45,7 @@ private:
u16 mDrawFlag; // 0x6
J3DDrawBuffer *mOpaBuf; // 0x8
J3DDrawBuffer *mXluBuf; // 0xc
}; // Size 0x10
}; // Size 0x10
#endif

View File

@ -41,17 +41,17 @@ public:
void clipAll(u32, bool); // 0x801a5fc8
void clipBySphere(u32, J3DUClipper *, const Mtx44, f32); // 0x801a6040
void clipJoint(u32, s16, bool); // 0x801a6254
void setBaseTRMtx(Mtx44); // 0x801a63c8
void setBaseTRMtx(Mtx); // 0x801a63c8
void setBaseScale(JGeometry::TVec3f &); // 0x801a6474
void tstDiffTexMtxMode(); // 0x801a6550
void setEffectMtx(Mtx44, u32); // 0x801a65a4
// Vtable
virtual void createModel(JKRSolidHeap *, u32, u32); // 0x801a4c70
virtual bool createModel(JKRSolidHeap *, u32, u32); // 0x801a4c70
virtual void createDifferedModel(JKRSolidHeap *, u32, u32, bool); // 0x801a4e6c
virtual void calc(); // 0x801a5288
virtual void calc(s16); // 0x801a52b8
virtual void update(s16); // 0x801a5434
virtual void calc(u16); // 0x801a52b8
virtual void update(u16); // 0x801a5434
virtual void viewCalc(u32) {} // 0x801a6824
virtual void setCurrentViewNo(u32); // 0x801a5614
@ -76,7 +76,7 @@ public:
static bool sDrawingOnlyUpdZMat; // 0x80416399
static f32 sExModelInvalidLODBias; // 0x80419d90
private:
protected:
// Vtable 0x0
u16 mLevelCnt;
J3DModelData **mModelData;

View File

@ -0,0 +1,26 @@
#ifndef GHOSTSCREEN_H
#define GHOSTSCREEN_H
#include <JSystem/JUtility/JUTTexture.h>
#include "types.h"
class GhostScreen
{
public:
GhostScreen(); // 0x801d2b40
void reset(); // 0x801d2bf0
void captureScene(); // 0x801d2bfc
void captureGhost(); // 0x801d2c78
void draw(); // 0x801d2cc4
private:
u16 mStartX;
u16 mStartY;
u16 mEndX;
u16 mEndY;
bool mFlush;
bool mIsHide;
JUTTexture mSceneTex;
JUTTexture mGhostTex;
};
#endif // GHOSTSCREEN_H

View File

@ -15,7 +15,10 @@ public:
bool isSameCPointID(u16 id) const { return mPointData->cPointID == id; }
bool isSameJPointID(u16 id) const { return mPointData->id == id; }
CLPoint *getCLPoint() { return mCLPoint; }
u16 getID() const { return mPointData->id; }
int getCameraID() const { return mPointData->cameraID; }
void getPosition(JGeometry::TVec3f *pos)
{

View File

@ -61,6 +61,13 @@ public:
JUTReport(x, (y + 16) + (i * 16), "[%d]:%08X", i, mPassedSectors[i]);
}
const RaceTime &getLapSplit(int lap)
{
#line 199
JUT_MINMAX_ASSERT(0, lap, mMaxLap);
return mLapSplits[lap];
}
const RaceTime &getLapTime(int no)
{
#line 206
@ -108,6 +115,7 @@ public:
void setDemoRank() { mRaceFlags |= 16; }
void setDead() { mBattleFlags |= 4; }
void setRank(int rank) { mRank = rank; }
void stillRabbitTimer() { mBattleFlags |= 1; }
inline bool setPass(int index); // ??? function is weak yet in cpp file itself
void clrRank() { mRank = 0; }
void resumeRabbitTimer() { mBattleFlags &= 0xfffe; }
@ -170,6 +178,23 @@ public:
void setBombEvent(EBombEvent, ItemObj *);
void beginWarp(JugemPoint *point)
{
if (mWarpState == 0)
{
mWarpState = 1;
mJugemPoint = point;
}
}
void endWarp()
{
if (mWarpState == 2)
{
mWarpState = 3;
}
}
static int sPlayerKartColorTable[];
static short sBalForbiddenTime;

View File

@ -10,17 +10,6 @@
#include "kartEnums.h"
extern "C" {
#include <ppcdis.h>
}
enum EKartWeight
{
LIGHT = 0,
NORMAL = 1,
HEAVY = 2
};
class KartInfo
{
public:
@ -68,14 +57,10 @@ public:
}
ECharID getCharID() const
{
if (mCharDB != nullptr)
return (ECharID)mCharDB->id;
return cCharIDNone;
return (mCharDB) ? (ECharID)mCharDB->id : cCharIDNone;
}
ECharID getPartnerID() const {
if (mCharDB != nullptr)
return (ECharID)mCharDB->defaultPartnerID;
return cCharIDNone;
return (mCharDB) ? (ECharID)mCharDB->defaultPartnerID : cCharIDNone;
}
bool isAvailable() const;
static int convPlayerKind(KartGamePad *);
@ -104,7 +89,11 @@ public:
static EKartID getPartnerKartID(ECharID);
bool isDefaultCharCombi();
KartGamePad * getYoungestPad();
void setGhostKind(EGhostKind kind) { mGhostKind = kind; }
EGhostKind getGhostKind() { return mGhostKind; }
// TODO: not important but move to "correct" location
// Comment 05-03-2024(DD-MM-YYYY): did i already do this?
bool isComDriver(int driverNo) const {
#line 113
JUT_MINMAX_ASSERT(0, driverNo, 2);
@ -117,7 +106,7 @@ public:
return mKartCharacters[driverNo].getPlayerKind();
}
KartGamePad* getPad(int driverNo) {
KartGamePad *getPad(int driverNo) {
#line 126
JUT_MINMAX_ASSERT(0, driverNo, 2);
return mKartCharacters[driverNo].getPad();
@ -129,6 +118,16 @@ public:
return mKartCharacters[driverNo].getCharID();
}
EKartID getKartID() const
{
return (mKartDB) ? mKartDB->id : cKartIDNone;
}
EKartWeight getKartWeight() const
{
return mKartDB ? mKartDB->weight : UNK_3;
}
bool isComKart() const {
return isComDriver(0);
}

View File

@ -20,7 +20,7 @@ public:
void entryTevRegAnimator(int); // 0x801a7a10
void removeTevRegAnimator(int); // 0x801a83b8
void createModel(JKRSolidHeap *, u32); // 0x801a8598
void isCommonWheelModelData(); // 0x801a8624
bool isCommonWheelModelData(); // 0x801a8624
// Inline/Unused
// void KartShadowModel::~KartShadowModel();
@ -29,7 +29,7 @@ public:
// ~KartLoader();
// Inline
void setDemoBodyBmd(void *ptr) { mDemoBmd = ptr; }
bool isShockExist() const; /* { return mShockModels[0].getModelData() != 0; } */ // 0x801a7720
bool isShockExist() const { return mShockModels[0].getModelData() != 0; } // 0x801a7720
bool isKartTevAnmEnable(int wheel); // 0x801a8094
bool isDriverTevAnmEnable(int); // 0x801a8378
ExModel *getExModelDriver(int driver) // 0x801a81e8

View File

@ -3,10 +3,13 @@
#include <dolphin/mtx.h>
#include "types.h"
extern void KartMtxPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f, bool flip);
// Unused class
class KartOrthoGraph {
class KartOrthoGraph
{
public:
KartOrthoGraph(f32, f32, f32, f32, f32, f32, bool);
~KartOrthoGraph();

View File

@ -31,7 +31,7 @@ private:
class LtObjAmbient : public LightObj {
public:
LtObjAmbient(JUtility::TColor color) : LightObj("アンビエント", 0xffffffff)
LtObjAmbient(JUtility::TColor color) : LightObj("アンビエント", 0xffffffff)
{
GXColor gxColor = color;
mColor.set(gxColor);

View File

@ -0,0 +1,50 @@
#ifndef MASKSCREEN_H
#define MASKSCREEN_H
#include <JSystem/JUtility/JUTTexture.h>
#include "types.h"
#define NUM_NODES 20
class MaskScreenNode
{
public:
MaskScreenNode();
void reset();
void set(f32, f32, bool);
void capture();
void draw();
bool isActive() const { return mActive; }
private:
bool _0;
s16 mStartX;
s16 mStartY;
s16 mEndX;
s16 mEndY;
bool mFlush;
bool mActive;
JUTTexture *mTex;
};
class MaskScreen
{
public:
MaskScreen();
void reset();
void set(f32, f32, bool);
void resetAllMask();
void requestMask(f32, f32, bool);
void capture();
void draw();
private:
u16 mStartX;
u16 mStartY;
u16 mEndX;
u16 mEndY;
MaskScreenNode *mNodes[NUM_NODES];
};
#endif

View File

@ -5,44 +5,48 @@
class RaceBGMPlayer
{ // Autogenerated
// Global
public:
RaceBGMPlayer(); // 0x801c6da0
void reset(); // 0x801c6dd0
int getCrsDemoBGMLabel(); // 0x801c6e64
int getRaceStartBGMLabel(); // 0x801c6eac
void calc(); // 0x801c6f84
int getGoalBGMLabel(); // 0x801c72e0
static short sCrsBGMDelayTime; // 0x804146f0
// Global
public:
RaceBGMPlayer(); // 0x801c6da0
void reset(); // 0x801c6dd0
u32 getCrsDemoBGMLabel(); // 0x801c6e64
u32 getRaceStartBGMLabel(); // 0x801c6eac
void calc(); // 0x801c6f84
u32 getGoalBGMLabel(); // 0x801c72e0
static s16 sCrsBGMDelayTime; // 0x804146f0
// Inline/Unused
// void stop();
// Inline
void stopCrsDemo(); // 0x801c6e54
bool isMiniGameEnd() const; // 0x801c7288
bool isLastTime() const; // 0x801c7294
bool isExecPrepare() const; // 0x801c72a0
bool isPlay() const; // 0x801c72ac
void execPrepare(); // 0x801c72b8
bool isPrepare() const; // 0x801c72c8
bool isCrsDemoEnd() const; // 0x801c72d4
void stopCrsDemo() { mFlags |= 4; } // 0x801c6e54
bool isMiniGameEnd() const { return mFlags & 16; } // 0x801c7288
bool isLastTime() const { return mFlags & 8; } // 0x801c7294
bool isExecPrepare() const { return mFlags & 32; } // 0x801c72a0
bool isPlay() const { return mFlags & 2; } // 0x801c72ac
void execPrepare() { mFlags |= 32; } // 0x801c72b8
bool isPrepare() const { return mFlags & 1; }; // 0x801c72c8
bool isCrsDemoEnd() const { return mFlags & 4; } // 0x801c72d4
void setLowestKartNo(int kartNo) {
void setLowestKartNo(int kartNo)
{
if (mLowestKartNo < 0)
mLowestKartNo = kartNo;
mLowestKartNo = kartNo;
};
void setGoalKartNo(int kartNo) {
void setGoalKartNo(int kartNo)
{
if (mGoalKartNo < 0)
mGoalKartNo = kartNo;
mGoalKartNo = kartNo;
};
void setFinalLapKartNo(int kartNo) { mFinalLapKartNo = kartNo; };
private:
u8 _0[0x8];
u32 mState;
u16 mFlags;
s16 mDelay;
s16 mFinalLapKartNo;
s16 mGoalKartNo;
s16 mLowestKartNo;
s16 _pad;
}; // class RaceBGMPlayer
bool _e;
}; // class RaceBGMPlayer
// void RaceMgr::isRaceModeVs() const // RaceMgr.h; // 0x801c6f2c
// void RaceMgr::isRaceModeTA() const // RaceMgr.h; // 0x801c6f58
#endif // RACEBGMPLAYER_H

View File

@ -41,6 +41,7 @@ public:
int getLANLapNumber() const { return mLapNumLAN; }
int getVSLapNumber() const { return mVsLapNum; }
int getKartNumber() const { return mKartNum; }
int getPlayerKartNumber() const { return mPlayerNum; }
int getConsoleNumber() const { return mConsoleNum; }
int getStatusNumber() const { return mStatusNum; }
ERaceMode getRaceMode() const { return mRaceMode; }
@ -79,7 +80,7 @@ public:
KartInfo *getKartInfo(int kartNo) {
#line 173
JUT_MINMAX_ASSERT(0, kartNo, 8);
return &mKartInfo[kartNo];
return mKartInfo + kartNo;
}
//private:

View File

@ -4,7 +4,7 @@
#include "kartEnums.h"
#include "JSystem/JKernel/JKRDisposer.h"
#include "JSystem/JUtility/JUTDbg.h"
#include "Kawano/StaffRoll2D.h"
#include "Kameda/PauseManager.h"
#include "Kaneshige/Course/Course.h"
#include "Kaneshige/RaceBGMPlayer.h"
#include "Kaneshige/RaceDirector.h"
@ -14,6 +14,7 @@
#include "Kaneshige/KartLoader.h"
#include "Kaneshige/RaceDrawer.h"
#include "Kaneshige/SysDebug.h"
#include "Kawano/StaffRoll2D.h"
#include "Osako/Award2D.h"
#include "Yamamoto/kartCtrl.h"
#include "types.h"
@ -133,9 +134,17 @@ public:
int getKartNumber() const { return mRaceInfo->getKartNumber(); }
int getAwardKartNo() const { return mRaceInfo->getAwardKartNo(); }
int getConsoleNumber() const { return mRaceInfo->getConsoleNumber(); }
int getStatusNumber() const { return mRaceInfo->getStatusNumber(); }
// why did this not use a getter?
ERaceMode getRaceMode() const { return mRaceInfo->mRaceMode; }
bool isDemoCamera(int camNo) const
{
#line 162
JUT_MINMAX_ASSERT(0, camNo, 4)
return mRaceInfo->mIsDemoKart[camNo];
}
KartInfo *getKartInfo(int index)
{
#line 170
@ -164,9 +173,12 @@ public:
bool isRaceModeVs() const { return getRaceMode() == VERSUS_RACE; }
bool isStaffRoll() { return getRaceMode() == STAFF_ROLL; } // pls don't tell me it's stored as local variable
bool isAwardDemoMode() { return getRaceMode() == AWARD_DEMO; }
bool isReplayMode() const { return mReplayMode & 1; }
bool isActiveAreaLight() const { return mAreaLight & 1; }
void activeAreaLight() { mAreaLight |= 1; }
bool isSubScrExist() const { return false; }
KartLoader *getKartLoader(int index) const
{
#line 257
@ -184,6 +196,13 @@ public:
return mKartChecker[index];
}
int getTargetKartNo(u32 viewNo) const
{
#line 283
JUT_MINMAX_ASSERT(0, viewNo, 4);
return mRaceInfo->mTargetKarts[viewNo];
}
const RaceTime &getBestTotalTime(int recID)
{
#line 328
@ -228,4 +247,6 @@ inline KartCam *RCMGetCamera(int index) { return RaceMgr::getManager()->getCamer
inline KartChecker *RCMGetKartChecker(int index) { return RaceMgr::getManager()->getKartChecker(index); }
inline KartLoader *RCMGetKartLoader(int index) { return RaceMgr::getManager()->getKartLoader(index); }
inline bool RCMIsPause() { return PauseManager::tstPause(); }
#endif // RACEMGR_H

View File

@ -23,6 +23,9 @@ public:
void reset() { mTime = MAX_TIME; }
// fabricated
void round() { mTime = mTime / 1000 * 1000; }
void set(int frame)
{
mTime = frame; // no idea why framecount is used here,

View File

@ -0,0 +1,72 @@
#ifndef SHIMMERSCREEN_H
#define SHIMMERSCREEN_H
#include <JSystem/JUtility/JUTTexture.h>
#include <JSystem/JUtility/JUTAssert.h>
#include "types.h"
#define NUM_LEVELS 2
class ShimmerScreen
{
public:
// Global
ShimmerScreen(ResTIMG *timg); // 0x801d2ff8
void calc(); // 0x801d31e0
void capture(); // 0x801d3244
void draw(); // 0x801d32cc
void drawInit(); // 0x801d3324
void drawEnd(); // 0x801d34a4
void levelDraw(int); // 0x801d34e0
static u8 sIndSinedOfs; // 0x804147a0
static s16 sIndScaleExp; // 0x804147a2
static GXIndTexScale sIndTexScaleS; // 0x80416570
static GXIndTexScale sIndTexScaleT; // 0x80416574
static u8 sIndReplace; // 0x80416578
// Inline/Unused
// void drawForDebug();
// void sTestR;
// void sTestG;
// void sTestB;
// void sTestA;
// void sIsDrawDebug;
// Inline
bool isIndActive() const { return mIndImg != nullptr; } // 0x801d3494
void setOffsetZ(int level, s32 z)
{
#line 47
JUT_MINMAX_ASSERT(0, level, NUM_LEVELS)
JUT_MINMAX_ASSERT(0, z, 0x1000)
if (!_0)
mOffsetZ - z;
}
void setBlendRate(int level, u8 blendRate)
{
#line 56
JUT_MINMAX_ASSERT(0, level, NUM_LEVELS)
mBlendRate[level] = blendRate;
}
private:
bool _0;
s32 mOffsetZ[2];
u8 mBlendRate[2];
ResTIMG *mIndImg;
JUTTexture mTex1;
JUTTexture mTex2;
JUTTexture mTex3;
u16 mStartX;
u16 mStartY;
u16 mEndX;
u16 mEndY;
bool mFlush;
f32 _e0[2][3];
Mtx mIndMtx;
s16 _128;
s16 _12a;
}; // class ShimmerScreen
#endif // SHIMMERSCREEN_H

View File

@ -0,0 +1,34 @@
#ifndef SCENETITLELINE_H
#define SCENETITLELINE_H
#include <JSystem/J2D/J2DPane.h>
#include <JSystem/J2D/J2DGrafContext.h>
#include <JSystem/JKernel/JKRArchive.h>
#define NUM_TAGS 10
class SceneTitleLine
{
public:
// Global
SceneTitleLine(JKRArchive *arc, JKRHeap *heap, char *name); // 0x801f5788
~SceneTitleLine(); // 0x801f58f8
void init_titleline(int); // 0x801f595c
void drawTitleLine(J2DOrthoGraph *ortho); // 0x801f59bc
void calcAnmTitleLine(int); // 0x801f5a10
void calcMatAnmTitleLine(); // 0x801f5ad8
// Inline/Unused
SceneTitleLine(JKRHeap *);
private:
J2DScreen *mScreen; // 0
J2DPane *mPane[NUM_TAGS]; // 4;
J2DAnmTransform *mTransform; // 2c
J2DAnmTextureSRTKey *mTexSRTKey; // 30
int mAnmFrame; // 34
int mMatAnmFrame; // 38
static const u64 mTag_Titleline[NUM_TAGS]; // 0x8037b370
}; // Size: unk
#endif // SCENETITLELINE_H

View File

@ -1,6 +1,8 @@
#ifndef DRIVER_H
#define DRIVER_H
#include "Inagaki/CharacterSoundMgr.h"
#include "Kaneshige/ExModel.h"
#include "Kaneshige/KartInfo.h"
#include "Kaneshige/KartLoader.h"
@ -8,6 +10,32 @@
class J3DAnmTransform; // TODO: JSystem
class DriverDataChild
{
static int mInitCounter;
static f32 mDriverDataDefault[91][14];
f32 data[91][14];
public:
DriverDataChild();
virtual ~DriverDataChild();
}; // Size: 0x180
class DriverData : public JKRDisposer
{
u8 _18[0x7c - 0x18];
public:
DriverData(); // Auto Inlined
virtual ~DriverData();
static DriverData *create();
static DriverDataChild msDriverData[14];
static DriverData *mspDriverData;
}; // Size: 0x7c
class DriversAnimator // TODO
{
public:
@ -94,8 +122,13 @@ public:
void setLODLevel(int);
void IsARAMDMAFinished();
//void msAnmSabunList;
};
GameAudio::CharacterSoundMgr* getGameAudioCharacterSoundMgr() { return mCharSoundMgr; }
private:
u8 _8c[0x6c0 - 0x8c];
GameAudio::CharacterSoundMgr *mCharSoundMgr; // _6C0
u8 _6C4[0x7a8 - 0x6c0];
}; // Size: 0x7a8
#endif DRIVER_H

View File

@ -12,6 +12,15 @@ public:
_10 = 0;
}
class OKButton {
int _0;
s16 _4;
s16 _6;
f32 _8;
f32 _c;
f32 _10;
};
u8 _00[0x10];
u32 _10;
u8 _14[0x58 - 0x14];

View File

@ -17,6 +17,7 @@ public:
// Inline Functions
static AwardApp *ptr() { return mspAwardApp; }
static void destroy() { delete mspAwardApp; }
private:
static AwardApp *mspAwardApp; // 0x80416a68

View File

@ -24,6 +24,7 @@ public:
ERROR_LA_CONNECTION, // check lan cable connection and settings
ERROR_LA_DISCONNECT,
ERROR_LA_DISCONNECT_LINK,
ERROR_MAX
};
static ErrorViewApp *create(); // 0x802011cc
@ -34,9 +35,13 @@ public:
virtual void calc(); // 0x80201408, override
virtual void reset(); // 0x802015a8, override
PrintDvdError *getPrintDvdError() { return mDvdError; }
static ErrorViewApp *ptr() { return mspErrorViewApp; };
static ErrorViewApp *mspErrorViewApp; // 0x804169c0
static ErrorId msErrorId; // 0x804169c4
int mErrorState;
JUTFader::EStatus mFadeStatus;
s16 _14;

View File

@ -0,0 +1,32 @@
#ifndef FORCEEFFECTMGR_H
#define FORCEEFFECTMGR_H
#include <JSystem/JKernel/JKRDisposer.h>
#include "types.h"
class ForceEffectMgr : JKRDisposer
{
public:
ForceEffectMgr(); // 0x8020d390
virtual ~ForceEffectMgr(); // 0x8020d3dc
void start(); // 0x8020d444
void end(); // 0x8020d4b8
static void create()
{
if (!mspForceEffectMgr)
mspForceEffectMgr = new ForceEffectMgr();
}
static void destroy() { delete mspForceEffectMgr; }
static ForceEffectMgr *ptr() { return mspForceEffectMgr; }
private:
static ForceEffectMgr *mspForceEffectMgr; // 0x80416a58
u8 _18;
s16 _1a;
}; // 1c
#endif // FORCEEFFECTMGR_H

View File

@ -18,7 +18,7 @@ union UUData
u32 bit3 : 6;
u32 bit4 : 6;
} s;
u8 arr[0x3];
u8 arr[4];
};
class GhostFile : public SaveFile

View File

@ -14,6 +14,7 @@ class KartPadRecord : public TARecord
{
public:
KartPadRecord() : mFrame(0) {}
KartPadRecord(u8 charId1, u8 charId2, u8 kartId, u8 courseId) : TARecord(charId1, charId2, kartId, courseId), mFrame(0) {}
void reset() { mFrame = 0; }
// fabricated
@ -50,11 +51,11 @@ public:
bool isFrameValid() const { return mFrame > 0 && mFrame < MAX_INPUT_FRAME_COUNT; }
const RaceTime &getLapSlit(int lap)
const RaceTime &setLapSlit(int lap, const RaceTime &other)
{
#line 102
JUT_MINMAX_ASSERT(0, lap, NUM_LAP_SPLITS)
return mLapSplits[lap];
mLapSplits[lap] = other;
}
void calcLapTime(int lap, RaceTime nextSplit)

View File

@ -62,6 +62,8 @@ public:
void setLoading(bool loading) { mIsLoadingMovie = loading; }
bool isLoading() { return mIsLoadingMovie; }
PRINTAPP_TYPE *getPrintApp() { return mPrintApp; }
private:
static LogoApp *mspLogoApp; // 0x80416960
PRINTAPP_TYPE *mPrintApp; // 0xc

View File

@ -94,8 +94,10 @@ public:
static NetGameMgr *ptr() { return mspNetGameMgr; }
void setState(int state) { mState = state; }
int getState() { return mState; }
int getNetworkNum() { return mNetworkNum; }
int getNetworkCubes() { return mNetworkCubes; }
// Fabricated
u8 getPadConvNum(u8 idx)
@ -110,12 +112,20 @@ public:
return (temp % 4);
}
u8 get12ee() { return _12EE; }
void set12ee(int val) { _12EE = val; }
private:
u8 _0[0x96c]; //
int mState; // 6C
int mState; // 96C
u8 _970[0xC58 - 0x970]; //
u8 mNetworkNum; // C58
u8 _C59[0x12f4 - 0xC59]; //
u8 _C59[0x12e8 - 0xC59]; //
u8 mNetworkCubes; // 12e8
u8 _12e9[0x12ee - 0x12e9]; //
u8 _12EE; //
u8 _12EF[0x12f4 - 0x12EF]; //
u8 mPadConvData[16]; // this might be a double sided array and a union?
u8 _1304[0x1308 - 0x1304]; //

View File

@ -18,7 +18,11 @@ namespace PadMgr
void getPadData(unsigned char, KartPadInput, KartPadData *); // 0x8020c588
void setKartPadInput(KartPadInput); // 0x8020c74c
void resetPort(); // 0x8020c77c
extern KartPadInput msKartPadInput; // 0x80416a50
extern PadRecorder *mspRecorder; // 0x80416a54
inline void destroy() { mspRecorder = nullptr; }
}; // namespace PadMgr
#endif // PADMGR_H

View File

@ -41,7 +41,9 @@ public:
void playGhost();
// Inline
u32 getFrame() { return mFrame; };
void setFrame(u32 frame) { mFrame = frame; }
static PadRecorder *mspRecorder;
private:
u32 mFrame;
PadState mState;

View File

@ -1,19 +1,32 @@
#ifndef RACEAPP_H
#define RACEAPP_H
#include "Kaneshige/RaceMgr.h"
#include "Kameda/Scene.h"
#include "Osako/GhostFile.h"
#include "Osako/GameApp.h"
#include "Osako/PadRecorder.h"
#include "Osako/ResMgr.h"
#include "Osako/SystemRecord.h"
#include "types.h"
#include "Kaneshige/RaceMgr.h"
class RaceApp : public GameApp
{
public:
static RaceApp *create();
static void call();
void ctrlRace(); // 0x801fbcc0
void ctrlRecorder(); // 0x801fbfb8
void setAudioRaceMode(); // 0x801fc444
static RaceApp *ptr() { return mspRaceApp; };
PadRecorder *getPadRecorder() { return mPadRecorder; }
PadRecorder *getPadRecorder() { return mRecorder; }
// TODO: unlocked, or loaded?
bool isStaffGhostLoaded() { return msStaffGhostFlag & 1 << SystemRecord::convCourseID(ResMgr::msCourseID); }
RaceApp();
virtual ~RaceApp(); // override
@ -21,16 +34,22 @@ public:
virtual void calc(); // override
static RaceApp *mspRaceApp;
static PadRecorder *mspRecorder;
static volatile u16 msStaffGhostFlag;
private:
RaceMgr *mRaceMgr;
u32 mState;
u32 mDrawFlags;
u8 _18[0x28 - 0x18];
PadRecorder *mPadRecorder;
u32 _18;
u32 _1C;
u8 _20;
Scene::SceneType mNextScene;
PadRecorder *mRecorder;
KartPadRecord *mPadRecord[4];
KartPadRecord *mGhostRecord;
KartPadRecord *mStaffGhostRecord;
KartGamePad *_44[3];
u8 _50;
}; // Size: 0x54
#endif
#endif

View File

@ -31,6 +31,7 @@ struct SystemRecord
void setDefaultName(const char *name);
bool isRumble() { return !(mOptions & 4); }
/*union
{
struct

View File

@ -16,14 +16,14 @@ public:
mTime.reset();
}
TARecord(u8, u8, u8, u8);
void setName(const char *);
void setStatus(u8, u8, u8, u8);
void setRaceTime(RaceTime);
bool less(const TARecord &);
TARecord(u8 charId1, u8 charId2, u8 kartId, u8 courseId);
void setName(const char *name);
void setStatus(u8 charId1, u8 charId2, u8 kartId, u8 courseId);
void setRaceTime(RaceTime time);
bool less(const TARecord &rec);
// probably Inlined(auto)
void set(u8, u8, u8, u8, const char *, RaceTime);
void set(u8 charId1, u8 charId2, u8 kartId, u8 courseId, const char *name, RaceTime time);
// Inline
bool isValid() { return ((mKartID < 0x15) &&
@ -31,6 +31,8 @@ public:
((mCharIDs[1] != 0) && mCharIDs[1] < 0x15)); }
RaceTime getRaceTime() const { return mTime; }
ECourseID getCourseID() const { return (ECourseID)mCourseID; }
EKartID getKartID() const { return (EKartID)mKartID; }
ECharID getCharID(int no) const { return (ECharID)mCharIDs[no]; }
private:
u8 mCharIDs[2]; // 00

View File

@ -7,7 +7,7 @@ class TestViewApp : public GameApp
{ // Autogenerated
public:
static TestViewApp *create(); // 0x80209c9c
static void call(); // 0x80209cec
static bool call(); // 0x80209cec
TestViewApp(); // 0x80209d10
virtual ~TestViewApp(); // 0x80209d70, overide
virtual void reset(); // 0x80209dd0, overide
@ -18,5 +18,13 @@ public:
private:
static TestViewApp *mspTestViewApp; // 0x80416a28
};
int mMenuIndex;
BOOL mJ2DInitialized; // 10
int mMenuOption; // 14
int mDvdError; // 18
int mPrintOption; // 1c
int mMemoryCardOption; // 20
}; // 24;
#endif // TESTVIEWAPP_H

View File

@ -31,6 +31,18 @@ public:
void setShadowDepth(u8 depth) {
mDepth[1] = depth;
}
void setDepthMode(u8 depth)
{
mDepthMode = depth;
}
int getDstAlpha() {
if (mDepthMode == 1) {
return 0xff - (mDepth[1] & 0xfc);
}
return 0xff;
}
static ShadowManager* mspShadowManager;
//private:

View File

@ -3,6 +3,7 @@
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/J3D/J3DAnmCluster.h"
#include "JSystem/J3D/J3DSkinDeform.h"
#include "Kaneshige/ViewCtrlModel.h"
class ShadowModel : public ViewCtrlModel
@ -16,8 +17,14 @@ public:
cShadowKind_SkyShip // based of TMapObjSkyShip::getShadowKind() const
};
ShadowModel(u8, ShadowModel::ShadowKind, u8); // 0x801a6e6c
virtual void createModel(JKRSolidHeap *, u32, u32); // 0x801f7154, override
ShadowModel(u8 flags, ShadowKind kind, u8 p3) : ViewCtrlModel(flags)
{
mKind = kind;
_94 = p3;
_95 = 0;
}
virtual bool createModel(JKRSolidHeap *, u32, u32); // 0x801f7154, override
private:
ShadowKind mKind;
u8 _94;
@ -34,12 +41,21 @@ public:
}
virtual void calc(); // 0x801f71d0
virtual void createModel(JKRSolidHeap *, u32, u32); // 0x801f732c, override
virtual bool createModel(JKRSolidHeap *, u32, u32); // 0x801f732c, override
void setScale(f32 x, f32 y)
{
mScaleX = x;
mScaleY = y;
}
void setRoll(f32 roll) { mRoll = roll; }
void setPosY(f32 y) { mPosY = y; }
// Inline Functions
void setAnmCluster(J3DAnmCluster *anmCluster) { mAnmCluster = anmCluster; }; // 0x801a738c
void setDeformData(J3DDeformData *deformData) { mDeformData = deformData; }; // 0x801a7394
private:
protected:
J3DDeformData *mDeformData; // 0x98
J3DAnmCluster *mAnmCluster; // 0x9c
f32 mRoll; // 0xa0

View File

@ -71,7 +71,7 @@ namespace System
u32 get2DScisY();
u32 get2DScisW();
u32 get2DScisH();
u32 get3DScisX();
u32 get3DScisX(); // TODO: return types might be int for get3DScisX and get3DScisY
u32 get3DScisY();
u32 get3DScisW();
u32 get3DScisH();
@ -122,7 +122,6 @@ namespace System
inline JKRTask *getAramTask() { return mspAramTask; }
};
#ifndef REGION_EU
#define SYSTEM_ChangeVideoMode() \
System::changeProgressive()

View File

@ -1,8 +1,10 @@
#ifndef GEOGRAPHYOBJ_H
#define GEOGRAPHYOBJ_H
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/J3D/J3DModel.h>
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JGeometry/Vec.h>
#include "Kaneshige/Course/CrsData.h"
#include "Kaneshige/Course/CrsGround.h"
#include "Osako/shadowModel.h"
@ -49,7 +51,7 @@ public:
bool tstUserFlg1(int kart_index) const; // 0x8022a0ec
void clrUserFlg1(int); // 0x8022a190
void setUserFlg1(int); // 0x8022a230
void getHitSoundDegree(); // 0x8022a2d0
void getHitSoundDegree(); // 0x8022a2d0
void createMultiBoundsPtrAll(u8); // 0x8022a314
void calcBoundsGlPos(); // 0x8022a420
void createBoundsSphere(f32, f32); // 0x8022a57c
@ -82,6 +84,8 @@ public:
void setLODBias();
void getColRadius();
void getPosition(JGeometry::TVec3f *pos) const { *pos = mPos; }
// Vtable
virtual ~GeographyObj() {} // 0x801b48cc, TODO?
virtual void loadmodel(J3DModelData *modelData); // 0x801b4c28, TODO
@ -99,8 +103,8 @@ public:
virtual void setCurrentViewNo(u32); // 0x80229700
virtual u32 getMotorType() const { return 1; } // 0x801b4cf0, probably an Enum
virtual u32 getSoundID() const; // 0x8022a308, probably a define
virtual char *getBmdFileName() { return nullptr; } // 0x801c59a8
virtual char *getShadowBmdFileName() { return nullptr; } // 0x801b4cf8
virtual const char *getBmdFileName() { return nullptr; } // 0x801c59a8
virtual const char *getShadowBmdFileName() { return nullptr; } // 0x801b4cf8
virtual u32 getJ3DModelDataTevStageNum() const { return 0x20000; } // 0x801b4d00
virtual void createColModel(J3DModelData *); // 0x8022ab5c
virtual void createBoundsSphere(J3DModelData *); // 0x8022a498
@ -114,7 +118,10 @@ public:
virtual void initClassCreateNum(); // 0x801b4d5c
virtual void setModelMatrixAndScale(); // 0x802297e0
private:
JGeometry::TVec3f mPos; // 04
u8 _10[0x13c];
// TODO
}; // class GeographyObj
}; // Size: 0x14c
#endif

View File

@ -9,21 +9,26 @@
class GeographyObjManager : JKRDisposer
{
public:
GeographyObjManager(const CrsData & );
static void createMgr(const CrsData & crsData) {
gMgr = new GeographyObjManager(crsData);
}
GeographyObjManager(const CrsData &);
void calc();
void createModel(JKRSolidHeap *, u32);
void reset(const CrsData&);
static GeographyObjManager *getGeographyObjManager() { return gMgr; }
void reset(const CrsData &);
TJugem *getJugem(int camera_index) const;
TBalloonManager* getBalloonMgr(int kart_index) const;
static GeographyObjManager * gMgr;
TBalloonManager *getBalloonMgr(int kart_index) const;
u8 _18[0x3FC - 0x18];
TJugem * mJugem[4]; // 0x3FC
u8 _40C[0x4A4 - 0x40C];
f32 getKartHitDepthNormalObj(int kart_index) const { return mHitDepth[kart_index]; }
static void createMgr(const CrsData &crsData) { gMgr = new GeographyObjManager(crsData); }
static GeographyObjManager *getGeographyObjManager() { return gMgr; }
static GeographyObjManager *gMgr;
u8 _18[0x2A8 - 0x18]; //
f32 mHitDepth[8]; // 2A8
u8 _328[0x3FC - 0x2C8]; //
TJugem *mJugem[4]; // 3FC
u8 _40C[0x4A4 - 0x40C]; //
}; // size 0x4A4

View File

@ -4,7 +4,8 @@
#include "JSystem/JKernel/JKRHeap.h"
#include "types.h"
class ItemObjMgr {
class ItemObjMgr
{
public:
ItemObjMgr();
virtual ~ItemObjMgr();
@ -23,40 +24,47 @@ public:
static ItemObjMgr *getItemObjMgr() { return gItemMgr; }
static ItemObjMgr * gItemMgr;
static ItemObjMgr *gItemMgr;
static bool sTempSlotUseItem[18];
static int sTempSpecialRatio[9];
private:
unsigned char _0x4[0x828 - 0x4];
};
inline ItemObjMgr *GetItemObjMgr() {
inline ItemObjMgr *GetItemObjMgr()
{
return ItemObjMgr::getItemObjMgr();
}
class ItemShuffleMgr {
class ItemShuffleMgr
{
public:
struct SlotTable {
struct SlotTable
{
u8 chance[27];
u8 total; // i don't know wheter or not this is used but 1 byte is not always enough to store this
};
class KartSlotList {
class KartSlotList
{
public:
KartSlotList();
SlotTable * slotTable[2];
SlotTable *slotTable[2];
};
struct KartSlotData {
struct KartSlotData
{
u8 kartCount;
u8 useableSlots;
u8 totalSlots;
KartSlotList* mList;
KartSlotList *mList;
};
struct KartSlotRankDataSet {
KartSlotData* data;
struct KartSlotRankDataSet
{
KartSlotData *data;
u32 specialItemIndex;
u32 specialItemChance;
int kart_rank;
@ -66,16 +74,17 @@ public:
static KartSlotData mSlotList;
static KartSlotData mSlotListEnemy;
static u8 sSlotNormalItemNum; // 9
static u8 sSlotNormalItemNum; // 9
static u8 sSlotSpecialItemNum; // 9
static u32 *sSlotKindIndexArray;
ItemShuffleMgr() {
ItemShuffleMgr()
{
_0x4 = 0;
_0x5 = 0;
}
int calcSlot(KartSlotRankDataSet & slotRankData, int p2, int p3, bool p4);
int calcSlot(KartSlotRankDataSet &slotRankData, int p2, int p3, bool p4);
virtual ~ItemShuffleMgr();
virtual void calcRaceUseNormalItem(u32 *, KartSlotRankDataSet *, int);
@ -90,7 +99,8 @@ private:
int idx;
};
class ItemRndSpecialShuffleMgr : public ItemShuffleMgr {
class ItemRndSpecialShuffleMgr : public ItemShuffleMgr
{
public:
virtual ~ItemRndSpecialShuffleMgr();
virtual void calcRaceUseNormalItem(u32 *, KartSlotRankDataSet *, int);

View File

@ -1,9 +1,31 @@
#ifndef OBJUTILITY_H
#define OBJUTILITY_H
#include <JSystem/JGeometry.h>
#include "types.h"
namespace ObjUtility
{
extern void *getPtrCourseArc(char *);
void getPtrMainArc(char *); // 0x8025dc08
void *getPtrCourseArc(char *); // 0x8025dc30
void getPtrMainLocaleArc(char *); // 0x8025dc58
void setRMtx(Mtx, const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x8025dc80
void executeShakeCamera(const JGeometry::TVec3f &, f32, f32, f32); // 0x8025dcf4
void getKartBodyMtx(int); // 0x8025de7c
void getKartPos(int, JGeometry::TVec3f *); // 0x8025df6c
void getKartXdir(int, JGeometry::TVec3f *); // 0x8025e0cc
void getKartYdir(int, JGeometry::TVec3f *); // 0x8025e234
void getKartZdir(int, JGeometry::TVec3f *); // 0x8025e39c
void getKartVel(int, JGeometry::TVec3f *); // 0x8025e504
void getKartEfctVel(int, JGeometry::TVec3f *); // 0x8025e5a0
void findNearKart(const JGeometry::TVec3f &, f32, int); // 0x8025e63c
void findNearKartAngle(const JGeometry::TVec3f &, const JGeometry::TVec3f &, f32, f32); // 0x8025e868
void getCamDependLightMtx(u32, const JGeometry::TVec3f &, Mtx); // 0x8025ec6c
bool isPlayerDriver(const int &); // 0x8025edb0
void getReflectVec(JGeometry::TVec3f, JGeometry::TVec3f, JGeometry::TVec3f *, bool); // 0x8025eeb4
void chkAvailableEnemyByDistande(bool *, f32); // 0x8025f118
void concatSimpleFileName(char *, u8); // 0x8025f514
}
#endif

View File

@ -0,0 +1,116 @@
#ifndef RIVALBODYCTRL_H
#define RIVALBODYCTRL_H
#include <JSystem/JKernel/JKRDisposer.h>
#include "Kaneshige/Course/CrsGround.h"
#include "Sato/RivalCtrlBase.h"
class RivalBodyCtrl : public RivalCtrlBase, JKRDisposer
{
public:
RivalBodyCtrl(RivalKart *); // 0x802804f4
void init(); // 0x802805e4
static void reset(); // 0x80280724
static void setRankArray(); // 0x80280864
static void chkPlayerKartCondition(); // 0x80280aec
void chkBodyCondition(); // 0x80280bec
void getKartIndexByRank(int); // 0x80280ca0
void calcTargetPosDrift(); // 0x80280ea4
void calcTargetPosNormal(float); // 0x80280ea8
void getFwPointPos(JGeometry::TVec3f *); // 0x80281068
void getPointRSideDir(JGeometry::TVec3f *); // 0x802810ac
void getLengthFCenter(); // 0x802811b4
void isNeighborhoodCenter(float); // 0x8028135c
void getDriftTargetDir(JGeometry::TVec3f *); // 0x802813d0
void getTargetCurveLR(float *, short); // 0x80281558
void chkDriftPoint(); // 0x802818a8
void chkArrivePoint(CLPoint *); // 0x80281a54
void initDrift(bool, CLPoint *); // 0x80281b24
void reviseAfterDriftVtTargetPos(); // 0x80282364
void doColWallCtrl(); // 0x80282888
void calcMaxChangeWaitCnt(); // 0x80282cb4
void comebackRescure(CLPoint *, bool); // 0x80282cf8
void resetBodyData(); // 0x80283054
void isOneUpperLowerPlayer(bool); // 0x802830e4
void getLowestPlayerDist(float *); // 0x802831f4
void findMyRankOnlyCom(); // 0x802832cc
int getTopComKartIndex(RivalBodyCtrl *); // 0x80283324
void getMyFowardComKartIndex(); // 0x802833e0
void getMyBackwardComKartIndex(unsigned char); // 0x802834e0
void setDriftInfo(); // 0x802835f4
void doRotPose(JGeometry::TVec3f, float); // 0x80283858
// Vtable
virtual ~RivalBodyCtrl(); // 0x8028056c, 14
virtual void doSterrCtrl(); // 0x8028251c, 18
virtual void doDriftCtrl(); // 0x80282070, 1c
virtual void doStateFlgCtrl(); // 0x80282cf4, 20
virtual void doChangeDriverCtrl(); // 0x80282aa8, 24
virtual void doRotPosSterr(const JGeometry::TVec3f &); // 0x80282650, 28
virtual void doNextPoint(bool); // 0x80280d5c, 2c
virtual void resetPointData(); // 0x80282dd4, 30
// void sKartRankArray; // 0x804138d4
// void sComKartRankArray; // 0x80413994
// void sKartTotalDist; // 0x804139b4
// void sPlayerRank; // 0x804139d4
// void sTopPlayerIndex; // 0x8041503c
// void sLowestPlayerKartIndex; // 0x80415040
// void sLowestComKartIndex; // 0x80415044
// void sCrsStdDistRatio; // 0x80415048
// void sEngineBParamPtr; // 0x80416d20
// void sCommonFlgs; // 0x80416d24
// void sCheckTopDistRatio; // 0x80416d28
// void getNthCLPoint(CLPoint *, short);
// void getVtLengthFCenter();
// void calcDriftTargetDir();
// void getPointDir(const CLPoint *, JGeometry::TVec3f *);
// void getLRKartTargetDir();
// void getAngleKartZdirTargetDir();
// void doDriftStageCount();
// void setDriftStageWaitFrame();
// void doRotTurnAndChangeState(RivalCtrlBase::RivalMoveState);
// void isRank1st();
// void isLowerPlayer(const float &);
// void isLowestRankOfCom();
// void getFowardPlayerDist();
// void getBackwardPlayerDist();
// void getTopPlayerDist();
// void findRivalDistanceFrontAngle(float, float);
// void findRivalDistanceRearAngle(float, float);
u8 _20[0xc8 - 0x20];
}; // Size: 0xc8
class CLPointControllerRivalKart
{
public:
CLPointControllerRivalKart(RivalBodyCtrl *);
virtual int findNextPointNo(CLPoint *);
};
class RivalAwardBodyCtrl : public RivalBodyCtrl
{
public:
RivalAwardBodyCtrl(RivalKart *);
virtual void doNextPoint(bool);
virtual void doRotPosSterr(const JGeometry::TVec3f &);
virtual ~RivalAwardBodyCtrl() {} // 0x8028416c
virtual void doDriftCtrl(); // 0x80284438
virtual void doChangeDriverCtrl(); // 0x8028443c
};
class RivalAward2ndBodyCtrl : public RivalBodyCtrl
{
public:
RivalAward2ndBodyCtrl(RivalKart *);
virtual void doSterrCtrl();
void calcVtTargetPos();
void doNextPoint(bool);
virtual ~RivalAward2ndBodyCtrl() {} // 0x80284440
};
#endif // RIVALBODYCTRL_H

View File

@ -0,0 +1,36 @@
#ifndef RIVALCTRLBASE_H
#define RIVALCTRLBASE_H
#include "types.h"
class RivalKart;
class RivalCtrlBase
{
public:
class RankParam
{
public:
RankParam(int);
void reset();
};
RivalCtrlBase(RivalKart *);
void getMyID();
void getBodyCtrl();
void getBody();
void getRandom();
void getRankParamID();
void tstEndRace();
void isRival() const;
void getMyRank();
// Inline/Unused
// void getSpeedCtrl();
// void getItemCtrl();
virtual ~RivalCtrlBase() {} // 0x8027ea9c
RivalKart *mRival;
};
#endif

View File

@ -0,0 +1,71 @@
#ifndef RIVALITEMCTRL_H
#define RIVALITEMCTRL_H
#include <JSystem/JKernel/JKRDisposer.h>
#include "Sato/RivalCtrlBase.h"
#include "Sato/ItemObj.h"
#include "types.h"
class RivalKart;
class RivalItemCtrl : RivalCtrlBase, JKRDisposer
{
public:
RivalItemCtrl(RivalKart *); // 0x8027ea50
void init(); // 0x8027eb5c
void reset(); // 0x8027eb7c
void doItemCtrl(); // 0x8027ebb8
void startItem(ItemObj *); // 0x8027ed9c
void execute_endItemParam(); // 0x8027ee0c
void set_endItemParam(); // 0x8027ee44
void setThrowFlg(bool); // 0x8027ee74
void initItem_GTurtle(); // 0x8027efb0
void useItem_GTurtle_Normal(); // 0x8027f00c
void initItem_GTurtleSuc(); // 0x8027f0a0
void useItem_GTurtleSuc_Normal(); // 0x8027f150
void initItem_RTurtle(); // 0x8027f3a8
void useItem_RTurtle_Normal(); // 0x8027f404
void initItem_Bomb(); // 0x8027f498
void initItem_YoshiEgg(); // 0x8027f4f4
void useItem_YoshiEgg_Normal(); // 0x8027f550
void useItem_Bomb_Normal(); // 0x8027f630
void initItem_Banana(); // 0x8027f710
void useItem_Banana_Normal(); // 0x8027f764
void initItem_Kinoko(); // 0x8027f840
void useItem_Kinoko_Normal(); // 0x8027f89c
void initItem_KinokoSuc(); // 0x8027f9bc
void useItem_KinokoSuc_Normal(); // 0x8027fa6c
void initItem_GoldenKinoko(); // 0x8027fb24
void useItem_GoldenKinoko(); // 0x8027fb80
void initItem_Star(); // 0x8027fcd4
void useItem_Star_Normal(); // 0x8027fd30
void initItem_Thunder(); // 0x8027fde8
void useItem_Thunder_Normal(); // 0x8027fe44
void initItem_WanWan(); // 0x8027fe74
void useItem_WanWan_Normal(); // 0x8027fed0
void triggerButton(); // 0x8027ff00
void triggerButtonStickFront(float); // 0x8027fff4
void triggerButtonStickBack(float); // 0x802800f8
// Inline/Unused
// void resetSucItem(ItemObj *);
// void endItem();
// void setRndCount(unsigned long, unsigned long);
// void setRndFlgItemFront(float);
// void chkEnableThrowBack();
// void initItem_RTurtleSuc();
// void useItem_RTurtleSuc_Normal();
// void doSpReleaseGTurtle();
// void releaseBombFront(const float &, const float &);
// void doUseKinoko();
// void pressButton();
// void releaseButton();
// void releaseButtonStickFront(float);
// void releaseButtonStickBack(float);
// Inline
virtual ~RivalItemCtrl(); // 0x8027eae4
u8 _20[0x44 - 0x20];
}; // Size: 0x44
#endif // RIVALITEMCTRL_H

View File

@ -4,29 +4,51 @@
#include <JSystem/JKernel/JKRDisposer.h>
class KartBody;
class KartSus;
class RivalBodyCtrl;
class RivalItemCtrl;
class RivalSpeedCtrl;
class RivalKart
class RivalKartBase
{ // fabricated
u32 _0;
};
class RivalKart : RivalKartBase, JKRDisposer
{ // Autogenerated
public:
// Global
RivalKart(KartBody *); // 0x80270f9c
virtual ~RivalKart(); // 0x8027117c(inline)
void Init(); // 0x802711e0
void StartInit(); // 0x80271228
static void Reset(); // 0x80271250
void ResetInit(); // 0x80271274
void setRankAry(); // 0x802712bc
void getMaxSpeed() const; // 0x802712e0
void getOffsetMaxSpeed() const; // 0x802712ec
void setMaxSpeed(const float &); // 0x802712f8
void ContempLate(); // 0x80271308
void ActiveCtrl(); // 0x80271398
RivalKart(KartBody *body); // 0x80270f9c
virtual ~RivalKart(); // 1c
void Init(); // 0x802711e0
static void StartInit(); // 0x80271228
static void Reset(); // 0x80271250
void ResetInit(); // 0x80271274
static void setRankAry(); // 0x802712bc
f32 getMaxSpeed() const; // 0x802712e0
f32 getOffsetMaxSpeed() const; // 0x802712ec
void setMaxSpeed(const f32 &); // 0x802712f8
void ContempLate(); // 0x80271308
void ActiveCtrl(); // 0x80271398
// Inline/Unused
// void InitParam();
// void getTargetPos(JGeometry::TVec3<float> *);
// void getVtTargetPos(JGeometry::TVec3<float> *);
// void getTargetPos(JGeometry::TVec3f *);
// void getVtTargetPos(JGeometry::TVec3f *);
// void getRoadWidth();
// void DoSearchTarget();
}; // class RivalKart
#endif // RIVALKART_H
RivalBodyCtrl *getBodyCtrl() { return mBodyCtrl; }
KartBody *mBody; // 20
KartSus *mSus[4]; // 24
int _34; // 34
int mNo; // 38
RivalBodyCtrl *mBodyCtrl; // 3c
RivalItemCtrl *mItemCtrl; // 40
RivalSpeedCtrl *mSpeedCtrl; // 44
}; // 0x48
#endif // RIVALKART_H

View File

@ -0,0 +1,109 @@
#ifndef RIVALSPEEDCTRL_H
#define RIVALSPEEDCTRL_H
#include <JSystem/JKernel/JKRDisposer.h>
#include "Sato/RivalCtrlBase.h"
#include "Sato/RivalKart.h"
class RivalSpeedCtrl : RivalCtrlBase, JKRDisposer
{ // Autogenerated
public:
RivalSpeedCtrl(RivalKart *); // 0x8028460c
static void StartInit(); // 0x80284b84
static void ResetInit(); // 0x80284d24
static void LoadCrsLevelParam(); // 0x80284de0
void InitRndStartRank(); // 0x80284ed8
void getNowCrsIndex(); // 0x802850d0
void init(); // 0x80285210
void doPlayerDistSpeedCtrl(); // 0x802857a8
void doCurveDegSpdCtrl(); // 0x80285944
void doRankSpdCtrl(); // 0x80285abc
void resetRaceStrengthening(); // 0x80285fc4
void clampMaxSpeed(); // 0x8028603c
static f32 sCrsLevelParam; // 0x803a2794
static f32 sStartRankList; // 0x804139f4
static f32 *sEngineParamPtr; // 0x80415090
static int sComStrengthState; // 0x80415094
static int sRivalGPPoint; // 0x80415098
static void *sStartRankPtr; // 0x80416d30, some JSUList, too lazy to implement properly now
static u8 sConfusedFightModeFlg; // 0x80416d34
static u8 sComWeakPointSwapFlg; // 0x80416d35
// Inline/Unused
// void JSULink<RivalStartRankParam>::~JSULink();
// void initCalc();
// void calcOffsetMaxSpd();
// void doAccident();
// void doUsually();
// void calcDriftSpdRatio();
// Vtable
virtual ~RivalSpeedCtrl() {} // 0x80284b04, 14
virtual void reset(); // 0x802851a4, 18
virtual void doSpeedCtrl(); // 0x80285494, 1c
virtual void stop(); // 0x802868b4, 20
virtual void stop_immediately() {} // 0x801cf6b8, 24
virtual void set_speeddown() {} // 0x801cf228, 28
virtual void doAccelCtrl(); // 0x80285884, 2c
virtual void initStartDash(); // 0x802852e4, 30
f32 getMaxSpeed() const { return mMaxSpeed; }
f32 getOffsetMaxSpeed() const { return mOffsetMaxSpeed; }
void setMaxSpeed(const float &max) { mMaxSpeed = max; }
u8 _20[0x34 - 0x20];
f32 mMaxSpeed; // 34
u8 _38[0x3c - 0x38];
f32 mOffsetMaxSpeed;
u8 _40[0x4c - 0x40];
}; // Size: 0x4c
class RivalAwardDemoSpeedCtrl : public RivalSpeedCtrl
{
public:
RivalAwardDemoSpeedCtrl(RivalKart *);
void reset();
virtual void initStartDash();
virtual void doAccelCtrl();
void doAccelMaxSpdCtrl();
void doSpeedCtrl();
void stop(); // 0x80286730
void stop_immediately(); // 0x802867f8
u8 _4c[0x4];
};
class RivalAwardDemo2ndSpeedCtrl : public RivalAwardDemoSpeedCtrl
{
public:
RivalAwardDemo2ndSpeedCtrl(RivalKart *);
void reset();
void doAccelMaxSpdCtrl();
void doAccelCtrl();
virtual void set_speeddown(); // 0x802867ec
virtual ~RivalAwardDemo2ndSpeedCtrl(); // 0x80286804
u8 _50[0x8];
};
class RivalStaffRollDemoSpeedCtrl : public RivalAwardDemoSpeedCtrl
{
public:
RivalStaffRollDemoSpeedCtrl(RivalKart *);
void reset();
void doSpeedCtrl();
void stop_immediately(); // 0x80286724
virtual ~RivalStaffRollDemoSpeedCtrl(); // 0x8028673c
u8 _50[0x4];
};
// Inline function in TU
// void RivalBodyCtrl::getKartTotalDist(int); // 0x80285fb0
// virtual JSUList<RivalStartRankParam>::~JSUList() // 0x802869e8
#endif // RIVALSPEEDCTRL_H

View File

@ -9,14 +9,16 @@ public:
void setState(u16);
u16 getState() const { return mState; }
// Vtable
/*virtual ~StateObserver();
virtual ~StateObserver();
virtual void MoveExec() = 0;
virtual void InitExec() = 0;*/
virtual void InitExec() = 0;
private:
u16 _4;
u16 _6;
u16 mState;
u32 _8;
};

View File

@ -1,28 +1,36 @@
#ifndef JUGEMMAIN_H
#define JUGEMMAIN_H
#include "Sato/GeographyObj.h"
#include "Sato/StateObserver.h"
#include "Shiraiwa/JugemRodSignal.h"
// perhaps this could go in it's own file
// Inherited from GeographyObj, StateObserver and TAnmPlayer?
struct TJugem {
void signalGo() {
// Todo: GeographyObj -> TMapObjHioNode
class TJugem : GeographyObj, StateObserver
{
public:
TJugem();
void signalGo()
{
_0x250 = true;
mObserver.setState(0);
setState(0);
};
bool isAbleStart();/* {
return true;
}*/
bool isCallThree() {
bool isAbleStart(); /* {
return true;
}*/
bool isCallThree()
{
return !mJugemRod ? false : mJugemRod->isCallThree();
}
u8 _0[0x14c];
StateObserver mObserver; // Temporary
u8 _0x154[0x250 - 0x154];
int getSignalState();
u8 _0x158[0x250 - 0x158];
bool _0x250;
u8 _0x251[0x26c - 0x251];
TJugemRodSignal * mJugemRod;
TJugemRodSignal *mJugemRod;
};
#endif

View File

@ -0,0 +1,56 @@
#ifndef MAPOBJANTLION_H
#define MAPOBJANTLION_H
#include <JSystem/J3D.h>
#include <JSystem/JKernel/JKRHeap.h>
#include "Kaneshige/Course/CrsData.h"
#include "Sato/GeographyObj.h"
#include "Sato/StateObserver.h"
#include "types.h"
class TMapObjHioNode : public GeographyObj
{
public:
virtual ~TMapObjHioNode();
};
class TMapObjAntLion : public TMapObjHioNode, StateObserver
{
public:
// Global
TMapObjAntLion(const CrsData::SObject &); // 0x802cdf80
virtual const char *getBmdFileName(); // 0x802ce0d8
void createColModel(J3DModelData *); // 0x802ce100
void loadAnimation(); // 0x802ce184
void createModel(JKRSolidHeap *, unsigned long); // 0x802ce1d0
void reset(); // 0x802ce3dc
void calc(); // 0x802ce440
void initFunc_Start(); // 0x802ce494
void doFunc_Start(); // 0x802ce4d4
void initFunc_Wait(); // 0x802ce4fc
void doFunc_Wait(); // 0x802ce5a4
void initFunc_Eat(); // 0x802ce5a8
void doFunc_Eat(); // 0x802ce748
void getZDir(JGeometry::TVec3f *); // 0x802ce7e4
void doKartColCallBack(int); // 0x802ce884
void eat() {
if(getState() != 2) {
setState(2);
}
}
// void sTable; // 0x803aa258
// void scJointName; // 0x804154b8
// void sAntLionBckAnmTrans; // 0x80417118
// void sAntLionBckMtxCalc; // 0x8041711c
// void sJointNo; // 0x80417120
// Inline
virtual ~TMapObjAntLion(); // 0x802ce010
void InitExec(); // 0x802ce304
void MoveExec(); // 0x802ce370
};
#endif // MAPOBJANTLION_H

35
include/Shiraiwa/SiUtil.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef SIUTIL_H
#define SIUTIL_H
#include <JSystem/JGeometry.h>
#include "Sato/GeographyObj.h"
#include "types.h"
namespace SiUtil
{ // Autogenerated
// Global
void checkPassFrame(f32, f32, f32); // 0x802a7038
void getViewport(JGeometry::TBox2f *, u8, u8); // 0x802a709c
void getViewport(JGeometry::TBox2f *, u8); // 0x802a71ec
void getScreenPosCheckMirror(int, const JGeometry::TVec3f &, JGeometry::TVec2f *); // 0x802a7290
void getScreenPos(int, const JGeometry::TVec3f &, JGeometry::TVec2f *, bool); // 0x802a72cc
void setItemReaction(const void *, GeographyObj *); // 0x802a7474
void clampVec(const JGeometry::TVec3f &, JGeometry::TVec3f &, const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x802a7644
f32 getNormalRange(f32, f32, f32); // 0x802a76cc
int getConsoleNum(); // 0x802a76f8
int getDrawConsoleNum(); // 0x802a7790
void getCourseHeight(JGeometry::TVec3f &); // 0x802a7828
void searchNearKartBall(const JGeometry::TVec3f &, f32); // 0x802a7874
void searchNearKartCircle(const JGeometry::TVec3f &, f32); // 0x802a7950
void setRandomStartFrame(J3DFrameCtrl *, stRandom *rand); // 0x802a7a30
// Inline/Unused
// void getMultiple(u16, u16, bool);
// void getBufferImage(u8 *, u16, u16, u16, u16, bool);
// void drawBufferImage(_GXTexObj *, short, short, u16, u16);
// void initGX(JUtility::TColor);
// void getWaterHeight(JGeometry::TVec3f &);
// void searchNearKartCylinder(const JGeometry::TVec3f &, f32, f32);
}; // namespace SiUtil
#endif // SIUTIL_H

237
include/Shiraiwa/Wipe.h Normal file
View File

@ -0,0 +1,237 @@
#ifndef WIPE_H
#define WIPE_H
#include <JSystem/J2D/J2DGrafContext.h>
#include <JSystem/JKernel/JKRHeap.h>
#include <JSystem/JUtility/JUTTexture.h>
#include "types.h"
// TODO: static member variables, possible errors
class TWipeBase
{
public:
TWipeBase(JKRHeap *heap);
JUTTexture *getTexture(u32 id);
static void createBuffer(int, JKRHeap *heap);
virtual ~TWipeBase(); // 08
virtual void init(); // 0C
virtual void draw(int, f32, JUTColor); // 10
virtual void calc(int, f32, JUTColor); // 14
virtual void reset(); // 18
virtual void calcMain(int, f32, JUTColor) = 0; // 1C
virtual void changeState(int, int); // 20
virtual void drawPreIn(int, JUTColor); // 24
virtual void drawPreOut(int, JUTColor) {} // 28
virtual void drawMain(int, f32, JUTColor) = 0; // 2C
// Unused
static void loadTexture(JKRHeap *heap);
void deleteBuffer();
private:
static const char *scTextureName[3];
static JUTTexture *sTexture[3];
// Unused/Deadstripped
static u8 sBuffer[0x10];
static const u8 scBufSize;
static const int scPortMax;
protected:
J2DOrthoGraph **mGraph;
u8 mConsoleNum;
int mWipeState[4];
};
class TWipeCheck : public TWipeBase
{
public:
TWipeCheck(JKRHeap *heap);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
virtual ~TWipeCheck();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawPreIn(int, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static s16 sWipeHeightOrg;
static s16 sWipeWidthOrg;
static f32 sAlphaDiffRate;
u8 mAlpha[4];
u8 mAlphaDiff[4];
JGeometry::TBox2f mVp;
};
class TWipeCircle : public TWipeBase
{
public:
TWipeCircle(JKRHeap *heap);
void initGX();
void drawBufferImage(JUTTexture *, JGeometry::TBox2f &, JGeometry::TBox2f &);
virtual ~TWipeCircle();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
u32 _1c;
u32 _20[4];
JGeometry::TVec2f mPos[4];
u8 _50[0x64 - 0x50];
f32 _64[4];
};
class TWipeCurtain : public TWipeBase
{
public:
TWipeCurtain(JKRHeap *heap);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
void drawImage(JUTTexture *, f32, f32, f32, f32);
void initGXForTex(JUTColor);
virtual ~TWipeCurtain();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
virtual void drawPreIn(int, JUTColor);
private:
static f32 sLineWidth;
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
f32 mHeight[4];
};
class TWipeLineA : public TWipeBase
{
public:
TWipeLineA(JKRHeap *);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
virtual ~TWipeLineA();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static s16 sWipeLineWidth;
static s16 sWipeProgressLines;
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
f32 mOffset[4];
};
class TWipeLineB : public TWipeBase
{
public:
TWipeLineB(JKRHeap *heap);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
virtual ~TWipeLineB();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static s16 sWipeLineHeight;
static s16 sWipeProgressLines;
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
f32 mOffset[4];
};
class TWipeShut : public TWipeBase
{
public:
TWipeShut(JKRHeap *heap);
void initGX();
void drawQuad(f32, f32, f32, f32, const JUTColor &);
void drawTriangle(JGeometry::TVec2f *, const JUTColor &);
virtual ~TWipeShut();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static s16 scWipeHeadHeight;
static s16 scWipeHeadWidth;
static f32 sChangeRate;
static f32 sSecondWidthOrg;
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
f32 mWidth[4];
};
class TWipeSlide : public TWipeBase
{
public:
TWipeSlide(JKRHeap *heap);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
void drawImage(JUTTexture *, bool, f32, f32, f32, f32);
void initGXForTex(JUTColor);
virtual ~TWipeSlide();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
private:
static u8 sWipePatternMask;
s16 _1c[4];
f32 _24[4];
u8 _34[4];
u8 mPattern;
// u8 _0x2c[0x10];
};
class TWipeWaveA : public TWipeBase
{
public:
TWipeWaveA(JKRHeap *heap);
void drawQuad(f32, f32, f32, f32, const JUTColor &);
void initGX(const JUTColor &);
virtual ~TWipeWaveA();
virtual void init();
virtual void calcMain(int, f32, JUTColor);
virtual void drawMain(int, f32, JUTColor);
virtual void drawTex(f32, f32, f32, f32, f32, f32);
private:
static f32 sWipeMoveRateMax;
static f32 sWipeStartPos;
static f32 sWipeHeadWidth;
static f32 sWipeHeadHeight;
static f32 sAlphaMinRate;
static f32 sAlphaMaxRate;
f32 mOffsetY[4];
u32 _2c; // unused?
};
#endif

View File

@ -1,41 +1,44 @@
#ifndef KARTANIME_H
#define KARTANIME_H
#include "types.h"
class KartAnime
{ // Autogenerated
public:
KartAnime() {}
public:
void IsAppeal(int); // 0x802f9a5c
void IsThrow(int); // 0x802f9aa4
void IsMove(int); // 0x802f9aec
void IsSuspend(int); // 0x802f9b34
void IsDamage(int); // 0x802f9bf8
void IsDamageL(int); // 0x802f9c40
void IsDamageS(int); // 0x802f9c88
void IsRide(int); // 0x802f9cd0
void IsNormalStart(int); // 0x802f9d18
void IsBackStart(int); // 0x802f9d60
void IsRun(int); // 0x802f9da8
void IsDrift(int); // 0x802f9df0
void IsDriftStart(int); // 0x802f9e38
void IsDriftLeft(int); // 0x802f9e80
void IsDriftRight(int); // 0x802f9ec8
void IsChange(int); // 0x802f9f10
void IsRocket(int); // 0x802f9f58
void IsJump(int); // 0x802f9fa0
void IsSit(int); // 0x802f9fe8
void IsBackAnime(int); // 0x802fa030
void IsFloatAnime(int); // 0x802fa078
void IsDangerAnime(int); // 0x802fa0c0
void IsDangerLoopAnime(int); // 0x802fa108
void IsDangerPlusAnime(int); // 0x802fa17c
void IsGetItemAnime(int); // 0x802fa1c4
void IsBurnAnime(int); // 0x802fa208
void IsDrive(int); // 0x802fa250
void IsBack(int); // 0x802fa298
void IsGaol(int); // 0x802fa2fc
void IsAttack(int); // 0x802fa344
bool IsAppeal(int); // 0x802f9a5c
bool IsThrow(int); // 0x802f9aa4
bool IsMove(int); // 0x802f9aec
bool IsSuspend(int); // 0x802f9b34
bool IsDamage(int); // 0x802f9bf8
bool IsDamageL(int); // 0x802f9c40
bool IsDamageS(int); // 0x802f9c88
bool IsRide(int); // 0x802f9cd0
bool IsNormalStart(int); // 0x802f9d18
bool IsBackStart(int); // 0x802f9d60
bool IsRun(int); // 0x802f9da8
bool IsDrift(int); // 0x802f9df0
bool IsDriftStart(int); // 0x802f9e38
bool IsDriftLeft(int); // 0x802f9e80
bool IsDriftRight(int); // 0x802f9ec8
bool IsChange(int); // 0x802f9f10
bool IsRocket(int); // 0x802f9f58
bool IsJump(int); // 0x802f9fa0
bool IsSit(int); // 0x802f9fe8
bool IsBackAnime(int); // 0x802fa030
bool IsFloatAnime(int); // 0x802fa078
bool IsDangerAnime(int); // 0x802fa0c0
bool IsDangerLoopAnime(int); // 0x802fa108
bool IsDangerPlusAnime(int); // 0x802fa17c
bool IsGetItemAnime(int); // 0x802fa1c4
bool IsBurnAnime(int); // 0x802fa208
bool IsDrive(int); // 0x802fa250
bool IsBack(int); // 0x802fa298
bool IsGaol(int); // 0x802fa2fc
bool IsAttack(int); // 0x802fa344
void IsProhibition(int); // 0x802fa38c
void MakeThrowAnime(int, int, int); // 0x802fa408
void MakeBackAnime(int); // 0x802fa424
@ -97,9 +100,14 @@ public:
// void MakeGetAnime(ItemObj *, int);
// Inline
void IsChangeStart(); // 0x802f9bc4
private:
// TODO
};
u8 _0[0x10]; //
u64 mFlags; // 0x10, 0x14
u8 mType; // 0x17
u8 _19[0x48 - 0x19]; //
}; // Size: 0x48
// Outside class Inlines
// void DriverModel::TurnBack();
// void ItemObj::clrTransferPartner() // ItemObj.h; // 0x802fa7a8
@ -110,4 +118,5 @@ private:
// void DriverModel::StartRocketStartFailure() // DriverModel.h; // 0x802fb304
// void DriverModel::SetFreeze() // DriverModel.h; // 0x802fbe58
// void DriverModel::ResetFreeze() // DriverModel.h; // 0x802fbeac
#endif // KARTANIME_H
#endif // KARTANIME_H

View File

@ -1,6 +1,14 @@
#ifndef KARTANT_H
#define KARTANT_H
#include <JSystem/JGeometry/Vec.h>
#include "Shiraiwa/MapObjAntLion.h"
#include "types.h"
class KartBody;
class KartAnt
{ // Autogenerated
public:
@ -17,6 +25,15 @@ public:
// Inline/Unused
// void MakeAnt(GeographyObj *);
private:
// TODO
u8 _0;
KartBody *mBody;
TMapObjAntLion *mAntLion;
u8 mFlags;
u8 mState;
u8 mTimer;
u8 _f[0x20 - 0xf];
JGeometry::TVec3f _20;
JGeometry::TVec3f _2c;
JGeometry::TVec3f _38;
};
#endif // KARTANT_H

View File

@ -1,6 +1,10 @@
#ifndef KARTCANNON_H
#define KARTCANNON_H
#include <JSystem/JGeometry/Vec.h>
#include "types.h"
class KartCannon
{
public:
@ -25,6 +29,9 @@ public:
void DoRainbowCannonCrl(); // 0x80303b80
void DoAfterCannonCrl(); // 0x80303dd4
private:
// TODO
u8 _0[0x1c]; //
JGeometry::TVec3f _1c; //
JGeometry::TVec3f _28; //
JGeometry::TVec3f _34; //
};
#endif // KARTCANNON_H

View File

@ -17,13 +17,14 @@ public:
void CheckAllClearKey();
void CheckAllClearKeyT();
void CheckPartsClearKey(int);
void CheckOnlyTandemPartsClearKey(int);
void CheckPlayer();
void CheckDraw(u32, int);
void CheckIndication();
bool CheckOnlyTandemPartsClearKey(int);
bool CheckPlayer();
bool CheckDraw(u32, int);
bool CheckIndication();
private:
// TODO
};
u8 _0[0x8];
}; // 0x8
#endif

View File

@ -38,6 +38,8 @@ public:
// Inline/Unused
// void MakeRollCrash();
private:
// TODO
};
u8 _0[0x14];
}; // 0x14
#endif // KARTCRASH_H

View File

@ -27,6 +27,7 @@ public:
// void SetThunderDamageAnime();
// void DoAfterDamageCrl();
private:
// TODO
};
u8 _0[0xc];
}; // 0xc
#endif // KARTDAMAGE_H

View File

@ -0,0 +1,102 @@
#ifndef KARTDEMOCAM_H
#define KARTDEMOCAM_H
#include "Kaneshige/Course/CrsData.h"
#include "Yamamoto/kartCtrl.h"
class KartCam;
class KartDemoCam
{ // Autogenerated
public:
KartDemoCam() {}
void Init(KartCam *); // 0x8030a1e8
void ChaseFovy(const CrsData::Camera *); // 0x8030a24c
void DoInitCol(); // 0x8030a338
void DoCol(); // 0x8030a380
void InitFixCam(); // 0x8030a4bc
void DoFixCam(); // 0x8030a61c
void InitFixSearchCam(); // 0x8030a6b8
void DoFixSearchCam(); // 0x8030a794
void InitFixChaseCam(); // 0x8030a8b0
void DoFixChaseCam(); // 0x8030aa60
void InitChaseCam(); // 0x8030abd8
void DoChaseCam(); // 0x8030ad20
void InitFixPathCam(); // 0x8030ae98
void DoFixPathCam(); // 0x8030affc
void InitChasePathCam(); // 0x8030b1d8
void DoChasePathCam(); // 0x8030b2fc
void InitFixSplCam(); // 0x8030b508
void DoFixSplCam(); // 0x8030b6c4
void InitChaseSplCam(); // 0x8030b894
void DoChaseSplCam(); // 0x8030ba24
void InitFixPalaCam(); // 0x8030bc28
void DoFixPalaCam(); // 0x8030bff4
void InitDemoPathCam(); // 0x8030c31c
void DoDemoPathCam(); // 0x8030c414
void InitDemoParallelView(); // 0x8030c5b8
void DemoParallelView(); // 0x8030c6a8
void InitDemoGoalView(); // 0x8030c798
void DemoGoalView(); // 0x8030cb4c
void MapView(); // 0x8030cec4
void ObjectView(); // 0x8030d36c
void DemoInitID(); // 0x8030d650
void InitID(); // 0x8030d7b8
void DoDemoView(); // 0x8030d93c
void LiveViewChange(); // 0x8030da9c
void DemoView(); // 0x8030db6c
void DoPathEnd(JGeometry::TVec3f *, f32 *); // 0x8030dd34
void InitStartFixPathCam(); // 0x8030de9c
void DoStartFixPathCam(); // 0x8030df74
void InitStartPathCam(); // 0x8030e07c
void DoStartPathCam(); // 0x8030e15c
void InitStartLookPathCam(); // 0x8030e2bc
void DoStartLookPathCam(); // 0x8030e364
void InitStartOnlyPathCam(); // 0x8030e450
void DoStartOnlyPathCam(); // 0x8030e574
void InitStartFixCam(); // 0x8030e6d0
void DoStartFixCam(); // 0x8030e7f8
void InitStartChasePathCam(); // 0x8030e8c0
void DoStartChasePathCam(); // 0x8030e9c4
void InitVsLastCam(); // 0x8030ebc0
void VsLastCam(); // 0x8030ecb0
void InitLastCam(); // 0x8030eeb4
void LastCam(); // 0x8030f160
void InitStartDemoCam(); // 0x8030f5c4
void StartDemoCam(); // 0x8030f6ac
void SetLastDemo(); // 0x8030f7a0
void SetRaceCam(); // 0x8030f7fc
void SetNextID(); // 0x8030f85c
void DoExecution(); // 0x8030f8ec
u8 GetStartID(); // 0x8030f94c
void InitStartID(bool); // 0x8030f9b0
void StartDemoView(); // 0x8030f9e8
void InitStartMapCam(); // 0x8030fa08
void StartMapCam(); // 0x8030faf0
void SetMapNextID(); // 0x8030fbcc
void SetUpMapID(); // 0x8030fc40
void InitStaffView(); // 0x8030fc9c
void StaffView(); // 0x8030fdbc
void SetStaffNextID(); // 0x8030ff40
void SetUpStaffID(); // 0x8030ffb8
// Inline/Unused
// void GetPerView();
// void KartBody::getPerCam();
KartCam *mCam;
KartBody *mBody;
Mtx mPosMtx;
u16 _38;
u8 _3a[0x70 - 0x3a];
f32 mCamKartDiffLength;
JGeometry::TVec3f _74;
JGeometry::TVec3f _80;
JGeometry::TVec3f _8c;
JGeometry::TVec3f mCamKartDiff;
JGeometry::TVec3f _a4;
u8 _b0[0x110 - 0xb0];
}; // 110
#endif // KARTDEMOCAM_H

View File

@ -4,25 +4,27 @@
#include <JSystem/JGeometry.h>
#include "types.h"
class KartBody;
class KartDisp
{
public:
KartDisp() {}
void Init(int); // 0x803101d8
void Init(int i); // 0x803101d8
void DoShake(); // 0x80310214
void MakeDispBodyPose(); // 0x803104d4
void MakeDispBodyPos(); // 0x8031069c
void MakeSusMatrix(int); // 0x803109d4
void MatrixScale(Mtx44, f32); // 0x80311138
void MakeSusMatrix(int i); // 0x803109d4
void MatrixScale(Mtx, f32); // 0x80311138
void MakeTireDispMatrix(); // 0x803111a8
void MakeBodyDispMatrix(); // 0x803116d0
void MakeScaleMatrix(); // 0x80311820
void MakeKartDisp(); // 0x80311980
// Inline/Unused
// void DomFalgDisp();
// void DoDispDebug();
void DomFalgDisp();
void DoDispDebug();
private:
// TODO
KartBody *mBody;
};
#endif // KARTDISP_H

View File

@ -4,6 +4,8 @@
#include "Sato/GeographyObj.h"
#include "types.h"
class KartBody;
class KartDossin
{ // Autogenerated
public:
@ -21,7 +23,18 @@ public:
void DoCheckEnd(); // 0x80304694
void DoDossinCrl(); // 0x803046f8
void DoAfterDossinCrl(); // 0x803048b8
private:
// TODO
};
#endif // KARTDOSSIN_H
KartBody *mBody;
u8 _4[0x4];
JGeometry::TVec3f _8;
u8 _14;
u8 _15;
u16 _16;
u16 _18;
f32 _1c;
f32 _20;
u8 _24[0x2c - 0x24];
}; // 2c
#endif // KARTDOSSIN_H

View File

@ -5,6 +5,8 @@
#include "Yamamoto/kartSus.h"
#include "types.h"
class KartBody;
class KartGame
{
public:
@ -69,8 +71,13 @@ public:
// void FrameWorkL(f32, f32, KartSus *);
// void DoTurboPower();
// void CheckBalloonPlayer();
private:
// TODO
KartBody *mBody;
u8 _4[0x12 - 004];
u16 mCountDownDuration;
u8 _14[0x20 - 0x14];
JGeometry::TVec3f _20;
JGeometry::TVec3f _2C;
JGeometry::TVec3f _34;
};
#endif KARTGAME_H

View File

@ -12,15 +12,15 @@ class KartHandle
public:
KartHandle() {}
void Init(int); // 0x80311ae8
void DoMotor(MotorManager::MotorType); // 0x80311b34
void DoPowerMotor(float, unsigned char, unsigned char); // 0x80311cac
void StopMotor(); // 0x80311df8
void WatchFrontalCollisionForce(); // 0x80311e64
void Init(int); // 0x80311ae8
bool DoMotor(MotorManager::MotorType); // 0x80311b34
bool DoPowerMotor(f32, u8, u8); // 0x80311cac
void StopMotor(); // 0x80311df8
void WatchFrontalCollisionForce(); // 0x80311e64
private:
KartBody *mBody;
u32 _04;
u8 _08;
u8 _09;
u32 mRumbleTimer;
u8 mRumbleStrength;
u8 _9;
};
#endif // KARTHANDLE_H

View File

@ -4,7 +4,8 @@
#include "types.h"
class KartItem
{ // Autogenerated
{
public:
KartItem() {}
void Init(int);
void DoRabbit();
@ -42,7 +43,8 @@ class KartItem
// void DoDriverItemAnime();
// void DoDriverItemRelease();
private:
// TODO
};
u8 _0[0xc]; //
}; // 0xc
#endif // KARTITEMSTRAT_H

View File

@ -1,8 +1,15 @@
#ifndef KARTPERCAM_H
#define KARTPERCAM_H
#include <JSystem/JGeometry/Vec.h>
#include "Kaneshige/Course/CrsArea.h"
#include "Yamamoto/kartLine.h"
#include "types.h"
class KartBody;
class KartPerCam
{ // Autogenerated
{
public:
KartPerCam() {}
@ -20,22 +27,46 @@ public:
void InitDemoParallelView(); // 0x80315dbc
void InitID(); // 0x80315e3c
// Inline/Unused
// void ChaseFovy();
// void DoFixCam();
// void DoFixSearchCam();
// void DoFixChaseCam();
// void DoChaseCam();
// void DoFixPathCam();
// void DoChasePathCam();
// void DoFixSplCam();
// void DoChaseSplCam();
// void DoFixPalaCam();
// void DoDemoPathCam();
// void DemoParallelView();
// void InitDemoGoalView();
// void DemoGoalView();
// void DemoView();
void ChaseFovy();
void DoFixCam();
void DoFixSearchCam();
void DoFixChaseCam();
void DoChaseCam();
void DoFixPathCam();
void DoChasePathCam();
void DoFixSplCam();
void DoChaseSplCam();
void DoFixPalaCam();
void DoDemoPathCam();
void DemoParallelView();
void InitDemoGoalView();
void DemoGoalView();
void DemoView();
private:
// TODO
KartBody *mBody; //
Mtx mPalaCamMtx; //
Spline *_34; //
CrsArea mArea; // 14
u16 _4c; //
u8 _4e; //
u8 _4f; //
u8 _50; //
u8 _51[0x52 - 0x51]; //
u16 _52; //
u16 _54; //
u8 _56[0x58 - 0x56]; //
int mCamId; // 58
f32 mFovY; // 5c
u8 _60[0x88 - 0x60]; //
f32 _88; // length of vector b8
f32 _8c; //
u8 _90[0x94 - 0x90]; //
JGeometry::TVec3f _94; //
JGeometry::TVec3f _a0; //
JGeometry::TVec3f mPos; // ac
JGeometry::TVec3f _b8; //
JGeometry::TVec3f _c4; //
JGeometry::TVec3f _d0[4]; //
u8 _100[0x160 - 0x100]; //
};
#endif // KARTPERCAM_H

View File

@ -1,6 +1,12 @@
#ifndef KARTPIPE_H
#define KARTPIPE_H
#include "Kaneshige/JugemPoint.h"
#include "types.h"
class KartBody;
class KartPipe
{ // Autogenerated
public:
@ -17,6 +23,19 @@ public:
void DoPipeCrl(); // 0x803129a4
void DoAfterPipeCrl(); // 0x80312b8c
private:
// TODO
};
JugemPoint *mPoint; // 00
KartBody *mBody; // 04
u8 mFlags; // 08
u8 mState; // 09
u8 mTimer; // 0a
u16 _c; //
int mCameraID; // 10
u8 _14[4]; //
f32 mSpeed; // 18
u8 _1c[4]; //
JGeometry::TVec3f _20; //
JGeometry::TVec3f _2c; //
JGeometry::TVec3f _38; //
}; // 44
#endif // KARTPIPE_H

View File

@ -1,8 +1,12 @@
#ifndef KARTRESCUE_H
#define KARTRESCUE_H
#include <JSystem/JGeometry/Vec.h>
#include "Sato/GeographyObj.h"
#include "types.h"
class KartBody;
class KartRescue
@ -28,6 +32,17 @@ public:
// Inline/Unused
// void DoHang();
private:
// TODO
};
u8 _0[0xc]; //
CrsGround mGround; // c
u8 _6c[0x8c - 0x6c]; //
JGeometry::TVec3f _8c; //
JGeometry::TVec3f _98; //
JGeometry::TVec3f _a4; //
JGeometry::TVec3f _b0; //
JGeometry::TVec3f _bc; //
JGeometry::TVec3f _c8; //
u8 _d4[0x104 - 0xd4]; //
}; // 0x104
#endif // KARTRESCUE_H

Some files were not shown because too many files have changed in this diff Show More