Port sbc.c progress from PH (#53)

* move nitro headers to libs/nitro/include and setup sbc.c

Co-authored-by: enzofc708 <47937189+enzofc708@users.noreply.github.com>

* sbc.c 95%

* move sbc in the right folder (and fix a warning)

* revert formating changes

---------

Co-authored-by: enzofc708 <47937189+enzofc708@users.noreply.github.com>
This commit is contained in:
Yanis
2026-04-17 00:56:47 +02:00
committed by GitHub
parent 34ef65d030
commit 66ad81ba15
84 changed files with 1400 additions and 187 deletions
+3
View File
@@ -10,6 +10,9 @@
src/Main/Main.cpp:
.text start:0x02000800 end:0x02000bdc
libs/nns/src/g3d/sbc.c:
.text start:0x0200c8cc end:0x0200e2ec
src/Main/System/SysNew.cpp:
.text start:0x02011e10 end:0x0201200c
+7 -7
View File
@@ -7,12 +7,12 @@ data_027e0018 kind:data(any) addr:0x027e0018
data_027e001c kind:data(any) addr:0x027e001c
data_027e0020 kind:data(any) addr:0x027e0020
data_027e0021 kind:data(any) addr:0x027e0021
data_027e0024 kind:data(any) addr:0x027e0024
data_027e0030 kind:data(any) addr:0x027e0030
data_027e003c kind:data(any) addr:0x027e003c
G3d_gSRTTransformHandlers kind:data(any) addr:0x027e0024
G3d_gScaleHandlers kind:data(any) addr:0x027e0030
G3d_gTextureHandlers kind:data(any) addr:0x027e003c
data_027e004c kind:data(any) addr:0x027e004c
data_027e005c kind:data(any) addr:0x027e005c
data_027e006c kind:data(any) addr:0x027e006c
G3d_FuncSbcTable kind:data(any) addr:0x027e006c
data_027e00ec kind:data(any) addr:0x027e00ec
data_027e00f0 kind:data(any) addr:0x027e00f0
data_027e00fc kind:data(any) addr:0x027e00fc
@@ -32,14 +32,14 @@ data_027e0210 kind:bss addr:0x027e0210
data_027e0254 kind:bss addr:0x027e0254
data_027e0288 kind:bss addr:0x027e0288
data_027e02b0 kind:bss addr:0x027e02b0
data_027e02c4 kind:bss addr:0x027e02c4
data_027e02e8 kind:bss addr:0x027e02e8
gGeomMatrix kind:bss addr:0x027e02c4
gGeomTranslation kind:bss addr:0x027e02e8
data_027e02f4 kind:bss addr:0x027e02f4
data_027e0308 kind:bss addr:0x027e0308
data_027e0338 kind:bss addr:0x027e0338
data_027e0368 kind:bss addr:0x027e0368
data_027e0408 kind:bss addr:0x027e0408
data_027e046c kind:bss addr:0x027e046c
G3d_gRenderState kind:bss addr:0x027e046c
data_027e0470 kind:bss addr:0x027e0470
data_027e0474 kind:bss addr:0x027e0474
data_027e0478 kind:bss addr:0x027e0478
+2 -2
View File
@@ -181,7 +181,7 @@ from:0x01ffc574 kind:load to:0x027e02c4 module:dtcm
from:0x01ffc578 kind:load to:0x027e02f4 module:dtcm
from:0x01ffc584 kind:arm_call to:0x0200cb10 module:main
from:0x01ffc594 kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffc59c kind:load to:0x027e0254 module:dtcm
from:0x01ffc59c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x01ffc600 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
from:0x01ffc630 kind:load to:0x0203e964 module:main
from:0x01ffc6a0 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
@@ -191,7 +191,7 @@ from:0x01ffc740 kind:load to:0x0203e964 module:main
from:0x01ffc818 kind:arm_call to:0x0200e260 module:main
from:0x01ffc848 kind:arm_call to:0x01ffaf74 module:itcm
from:0x01ffc854 kind:load to:0x027e0964 module:dtcm
from:0x01ffc8dc kind:load to:0x027e0254 module:dtcm
from:0x01ffc8dc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x01ffc91c kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffca08 kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffcb4c kind:arm_call to:0x01ff8dac module:itcm
+4 -4
View File
@@ -5,10 +5,10 @@ func_01ff86b8 kind:function(arm,size=0xb0) addr:0x01ff86b8
func_01ff8768 kind:function(arm,size=0xd4) addr:0x01ff8768
func_01ff883c kind:function(arm,size=0xa0) addr:0x01ff883c
func_01ff88dc kind:function(arm,size=0x45c) addr:0x01ff88dc
func_01ff8d38 kind:function(arm,size=0x5c) addr:0x01ff8d38
FlushGfxQueue kind:function(arm,size=0x5c) addr:0x01ff8d38
func_01ff8d94 kind:function(arm,size=0x18) addr:0x01ff8d94
func_01ff8dac kind:function(arm,size=0xac) addr:0x01ff8dac
func_01ff8e58 kind:function(arm,size=0xe8) addr:0x01ff8e58
PushGeometryCommand kind:function(arm,size=0xe8) addr:0x01ff8e58
func_01ff8f40 kind:function(arm,size=0x68) addr:0x01ff8f40
_ZN22UnkStruct_PlayerGet_5013func_01ff8fa8Ev kind:function(arm,size=0x40) addr:0x01ff8fa8
func_01ff8fe8 kind:function(arm,size=0x128) addr:0x01ff8fe8
@@ -81,7 +81,7 @@ func_01ffad5c kind:function(arm,size=0x218) addr:0x01ffad5c
func_01ffaf74 kind:function(arm,size=0x98) addr:0x01ffaf74
Mat4p_InitIdentity kind:function(arm,size=0x2c) addr:0x01ffb00c
Mat4p_CopyToMat4x3p kind:function(arm,size=0x34) addr:0x01ffb038
func_01ffb06c kind:function(arm,size=0x3bc) addr:0x01ffb06c
Mat4p_Multiply kind:function(arm,size=0x3bc) addr:0x01ffb06c
func_01ffb428 kind:function(arm,size=0x10) addr:0x01ffb428
func_01ffb438 kind:function(arm,size=0x2c) addr:0x01ffb438
func_01ffb464 kind:function(arm,size=0x10) addr:0x01ffb464
@@ -101,7 +101,7 @@ Vec3p_Add kind:function(arm,size=0x30) addr:0x01ffb6e4
func_01ffb714 kind:function(arm,size=0x30) addr:0x01ffb714
Vec3p_Dot kind:function(arm,size=0x3c) addr:0x01ffb744
func_01ffb780 kind:function(arm,size=0x80) addr:0x01ffb780
func_01ffb800 kind:function(arm,size=0x60) addr:0x01ffb800
Vec3p_Length kind:function(arm,size=0x60) addr:0x01ffb800
Vec3p_Normalize kind:function(arm,size=0x114) addr:0x01ffb860
func_01ffb974 kind:function(arm,size=0x58) addr:0x01ffb974
func_01ffb9cc kind:function(arm,size=0x7c) addr:0x01ffb9cc
+6 -6
View File
@@ -379,7 +379,7 @@ from:0x020584a8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020584bc kind:arm_call to:0x01ff8e58 module:itcm
from:0x020584cc kind:arm_call to:0x01ff8e58 module:itcm
from:0x020584e0 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020584f4 kind:load to:0x027e0254 module:dtcm
from:0x020584f4 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0205851c kind:arm_call to:0x0200b578 module:main
from:0x02058528 kind:arm_call to:0x01ffc57c module:itcm
from:0x02058530 kind:arm_call to:0x0200b58c module:main
@@ -740,7 +740,7 @@ from:0x0205ace4 kind:arm_call to:0x0200e260 module:main
from:0x0205acf8 kind:arm_call to:0x01ffb860 module:itcm
from:0x0205ad14 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0205ad2c kind:arm_call to:0x01ffa328 module:itcm
from:0x0205ad54 kind:load to:0x027e0254 module:dtcm
from:0x0205ad54 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0205ad58 kind:load to:0x027e0964 module:dtcm
from:0x0205ad5c kind:load to:0x027e0208 module:dtcm
from:0x0205ad60 kind:load to:0x027e0988 module:dtcm
@@ -844,7 +844,7 @@ from:0x0205bf88 kind:arm_call to:0x02028cdc module:main
from:0x0205bfa0 kind:arm_call to:0x01ffa81c module:itcm
from:0x0205bfb8 kind:load to:0x027e0210 module:dtcm
from:0x0205bfbc kind:load to:0x027e0208 module:dtcm
from:0x0205bfc0 kind:load to:0x027e0254 module:dtcm
from:0x0205bfc0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0205bff4 kind:arm_call to:0x01ffc744 module:itcm
from:0x0205c018 kind:arm_call to:0x01ffc768 module:itcm
from:0x0205c034 kind:load to:0x020b4ec4 module:overlay(0)
@@ -3551,7 +3551,7 @@ from:0x0207678c kind:arm_call to:0x02024a30 module:main
from:0x02076794 kind:arm_call to:0x0205ad20 module:overlay(0)
from:0x020767a0 kind:load to:0x027e0208 module:dtcm
from:0x020767a8 kind:load to:0x027e0210 module:dtcm
from:0x020767ac kind:load to:0x027e0254 module:dtcm
from:0x020767ac kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0207683c kind:arm_call to:0x01ffb428 module:itcm
from:0x02076858 kind:arm_call to:0x01ffb428 module:itcm
from:0x02076898 kind:arm_call to:0x01ffb744 module:itcm
@@ -5386,12 +5386,12 @@ from:0x0208c6c4 kind:arm_call to:0x02011ff4 module:main
from:0x0208c6f0 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208c6f4 kind:arm_call to:0x0205accc module:overlay(0)
from:0x0208c714 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208c720 kind:load to:0x027e0254 module:dtcm
from:0x0208c720 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0208c744 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208c748 kind:arm_call to:0x0205accc module:overlay(0)
from:0x0208c75c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208c77c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208c788 kind:load to:0x027e0254 module:dtcm
from:0x0208c788 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0208c792 kind:thumb_call_arm to:0x020590e4 module:overlay(0)
from:0x0208c7ac kind:load to:0x020b2b9c module:overlay(0)
from:0x0208c7d4 kind:arm_call to:0x02058fc4 module:overlay(0)
+2 -2
View File
@@ -2270,7 +2270,7 @@ from:0x020fdac4 kind:load to:0x027e09ac module:dtcm
from:0x020fdac8 kind:load to:0x020b4ec4 module:overlay(0)
from:0x020fdacc kind:load to:0x02108cc4 module:overlay(21)
from:0x020fdad4 kind:load to:0x027e0208 module:dtcm
from:0x020fdad8 kind:load to:0x027e0254 module:dtcm
from:0x020fdad8 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020fdadc kind:load to:0x0203ea64 module:main
from:0x020fdae0 kind:load to:0x027e0210 module:dtcm
from:0x020fdae8 kind:load to:0x0204999c module:main
@@ -2319,7 +2319,7 @@ from:0x020fdd74 kind:arm_call to:0x020c2ad8 module:overlay(17)
from:0x020fdd84 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020fdd8c kind:load to:0x027e09ac module:dtcm
from:0x020fdd94 kind:load to:0x027e0210 module:dtcm
from:0x020fdd98 kind:load to:0x027e0254 module:dtcm
from:0x020fdd98 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020fdee4 kind:arm_call to:0x020fb844 module:overlay(21)
from:0x020fdf00 kind:load to:0x021098d8 module:overlay(21)
from:0x020fdf3c kind:arm_call to:0x020fb828 module:overlay(21)
+3 -3
View File
@@ -59,7 +59,7 @@ from:0x020e9d74 kind:arm_call to:0x02018374 module:main
from:0x020e9d80 kind:arm_call_thumb to:0x02014994 module:main
from:0x020e9d88 kind:arm_call to:0x020bba78 module:overlay(17)
from:0x020e9d94 kind:load to:0x027e0208 module:dtcm
from:0x020e9d98 kind:load to:0x027e0254 module:dtcm
from:0x020e9d98 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020e9d9c kind:load to:0x0203ea64 module:main
from:0x020e9da0 kind:load to:0x027e0210 module:dtcm
from:0x020e9da8 kind:load to:0x020b4eec module:overlay(0)
@@ -89,7 +89,7 @@ from:0x020e9f68 kind:arm_call to:0x02024a30 module:main
from:0x020e9f78 kind:arm_call to:0x0207269c module:overlay(0)
from:0x020e9f80 kind:load to:0x027e09ac module:dtcm
from:0x020e9f88 kind:load to:0x027e0210 module:dtcm
from:0x020e9f8c kind:load to:0x027e0254 module:dtcm
from:0x020e9f8c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020e9fe8 kind:load to:0x020f1d94 module:overlay(23)
from:0x020e9fec kind:load to:0x020b62a8 module:overlay(0)
from:0x020ea000 kind:arm_call to:0x020ef5fc module:overlay(23)
@@ -118,7 +118,7 @@ from:0x020ea1ec kind:arm_call to:0x020aa224 module:overlay(0)
from:0x020ea230 kind:arm_call to:0x02015820 module:main
from:0x020ea290 kind:arm_call to:0x020228a8 module:main
from:0x020ea2a8 kind:load to:0x027e0208 module:dtcm
from:0x020ea2ac kind:load to:0x027e0254 module:dtcm
from:0x020ea2ac kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020ea2c8 kind:arm_call to:0x020ea334 module:overlay(23)
from:0x020ea2d0 kind:arm_call to:0x02011ff4 module:main
from:0x020ea2d8 kind:load to:0x027e095c module:dtcm
+1 -1
View File
@@ -509,7 +509,7 @@ from:0x020dd2f4 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020dd314 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020dd320 kind:load to:0x02041964 module:main
from:0x020dd324 kind:load to:0x020aa394 module:overlay(0)
from:0x020dd328 kind:load to:0x027e0254 module:dtcm
from:0x020dd328 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020dd338 kind:arm_call to:0x0207b6c0 module:overlay(0)
from:0x020dd340 kind:arm_call_thumb to:0x02057ed4 module:overlay(0)
from:0x020dd348 kind:arm_call_thumb to:0x0208c6d0 module:overlay(0)
+1 -1
View File
@@ -392,7 +392,7 @@ from:0x0211cc58 kind:arm_call to:0x01ffad5c module:itcm
from:0x0211cc68 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0211cc7c kind:load to:0x027e0964 module:dtcm
from:0x0211cc80 kind:load to:0x0203e964 module:main
from:0x0211cc84 kind:load to:0x027e0254 module:dtcm
from:0x0211cc84 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0211ccc8 kind:arm_call to:0x01ff9638 module:itcm
from:0x0211ccd8 kind:arm_call to:0x01ffb6e4 module:itcm
from:0x0211ccf0 kind:arm_call to:0x02057c98 module:overlay(0)
+1 -1
View File
@@ -685,7 +685,7 @@ from:0x021290a4 kind:thumb_call_arm to:0x01ff8e58 module:itcm
from:0x021290ac kind:load to:0x020b4ec4 module:overlay(0)
from:0x021290b0 kind:load to:0x0212ddcc module:overlay(43)
from:0x021290b4 kind:load to:0x027e0964 module:dtcm
from:0x021290bc kind:load to:0x027e0254 module:dtcm
from:0x021290bc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02129142 kind:thumb_call_arm to:0x01ffc3b4 module:itcm
from:0x02129162 kind:thumb_call_arm to:0x02015080 module:main
from:0x0212917e kind:thumb_call_arm to:0x02015080 module:main
+1 -1
View File
@@ -686,7 +686,7 @@ from:0x021296d4 kind:arm_call to:0x0212971c module:overlay(46)
from:0x02129700 kind:arm_call to:0x0212971c module:overlay(46)
from:0x02129710 kind:load to:0x027e09ac module:dtcm
from:0x021297c8 kind:arm_call to:0x02024a30 module:main
from:0x02129a1c kind:load to:0x027e0254 module:dtcm
from:0x02129a1c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02129cf0 kind:arm_call to:0x021234f0 module:overlay(46)
from:0x02129d00 kind:arm_call to:0x0203ce74 module:main
from:0x02129d40 kind:load to:0x0212a700 module:overlay(46)
+1 -1
View File
@@ -526,7 +526,7 @@ from:0x02155508 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0215551c kind:arm_call to:0x01ff8e58 module:itcm
from:0x02155534 kind:load to:0x0203e964 module:main
from:0x02155538 kind:load to:0x027e0964 module:dtcm
from:0x0215553c kind:load to:0x027e0254 module:dtcm
from:0x0215553c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0215564c kind:load to:0x02162a14 module:overlay(74)
from:0x02155660 kind:arm_call to:0x02057c98 module:overlay(0)
from:0x0215566c kind:arm_call to:0x02057c98 module:overlay(0)
+1 -1
View File
@@ -76,7 +76,7 @@ from:0x02153b8c kind:arm_call_thumb to:0x01ffa1bc module:itcm
from:0x02153b9c kind:arm_call to:0x01ffa60c module:itcm
from:0x02153ba8 kind:load to:0x027e0964 module:dtcm
from:0x02153bac kind:load to:0x0203e964 module:main
from:0x02153bb0 kind:load to:0x027e0254 module:dtcm
from:0x02153bb0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02153bf0 kind:arm_call to:0x020a0334 module:overlay(0)
from:0x02153c18 kind:arm_call to:0x0215a96c module:overlay(78)
from:0x02153c34 kind:arm_call to:0x02097bec module:overlay(0)
+2 -2
View File
@@ -1152,7 +1152,7 @@ from:0x0216edac kind:load to:0x027e09ac module:dtcm
from:0x0216edd4 kind:arm_call to:0x01ffad5c module:itcm
from:0x0216ee24 kind:arm_call to:0x02024a30 module:main
from:0x0216ee58 kind:arm_call to:0x02024a30 module:main
from:0x0216eff0 kind:load to:0x027e0254 module:dtcm
from:0x0216eff0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0216eff4 kind:load to:0x02174438 module:overlay(88)
from:0x0216eff8 kind:load to:0x02174428 module:overlay(88)
from:0x0216effc kind:load to:0x02174418 module:overlay(88)
@@ -1195,7 +1195,7 @@ from:0x0216f264 kind:arm_call to:0x01ffad5c module:itcm
from:0x0216f27c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0216f280 kind:arm_call to:0x0205accc module:overlay(0)
from:0x0216f2a0 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0216f2ac kind:load to:0x027e0254 module:dtcm
from:0x0216f2ac kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0216f2b8 kind:arm_call to:0x0216f584 module:overlay(88)
from:0x0216f2e0 kind:arm_call to:0x0216f2f4 module:overlay(88)
from:0x0216f2e8 kind:arm_call to:0x0216f594 module:overlay(88)
+1 -1
View File
@@ -1043,7 +1043,7 @@ from:0x0216f1b4 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0216f1c4 kind:arm_call to:0x0200e750 module:main
from:0x0216f1d4 kind:load to:0x0203e964 module:main
from:0x0216f1d8 kind:load to:0x027e0130 module:dtcm
from:0x0216f1dc kind:load to:0x027e0254 module:dtcm
from:0x0216f1dc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0216f2a0 kind:arm_call_thumb to:0x01ffa184 module:itcm
from:0x0216f2b0 kind:arm_call to:0x01ffa60c module:itcm
from:0x0216f344 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
+2 -2
View File
@@ -898,14 +898,14 @@ from:0x02180c60 kind:arm_call to:0x0200e260 module:main
from:0x02180c70 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02180c80 kind:arm_call to:0x01ffad5c module:itcm
from:0x02180cac kind:arm_call to:0x02058fc4 module:overlay(0)
from:0x02180cb8 kind:load to:0x027e0254 module:dtcm
from:0x02180cb8 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02180cbc kind:load to:0x027e0964 module:dtcm
from:0x02180cc0 kind:load to:0x027e0958 module:dtcm
from:0x02180ccc kind:arm_call to:0x02180b70 module:overlay(95)
from:0x02180ce4 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02180ce8 kind:arm_call to:0x0205accc module:overlay(0)
from:0x02180d08 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02180d10 kind:load to:0x027e0254 module:dtcm
from:0x02180d10 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02180da8 kind:load to:0x0217a220 module:overlay(95)
from:0x02180dcc kind:load to:0x02179e20 module:overlay(95)
from:0x02180dd0 kind:load to:0x0217a280 module:overlay(95)
+16 -16
View File
@@ -1102,7 +1102,7 @@ from:0x0200c046 kind:thumb_call_arm to:0x01ffb00c module:itcm
from:0x0200c080 kind:thumb_call_arm to:0x01ffa06c module:itcm
from:0x0200c0ac kind:load to:0x027e0208 module:dtcm
from:0x0200c0b4 kind:load to:0x027e0288 module:dtcm
from:0x0200c0c4 kind:load to:0x027e0254 module:dtcm
from:0x0200c0c4 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c0c8 kind:load to:0x027e0210 module:dtcm
from:0x0200c0f8 kind:load to:0x027e02c4 module:dtcm
from:0x0200c0fc kind:load to:0x027e0408 module:dtcm
@@ -1114,14 +1114,14 @@ from:0x0200c170 kind:load to:0x027e02b0 module:dtcm
from:0x0200c194 kind:load to:0x027e0208 module:dtcm
from:0x0200c1b4 kind:arm_call to:0x01ffa9e8 module:itcm
from:0x0200c1cc kind:load to:0x027e0208 module:dtcm
from:0x0200c1d0 kind:load to:0x027e0254 module:dtcm
from:0x0200c1d0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c1d4 kind:load to:0x027e0308 module:dtcm
from:0x0200c1f0 kind:arm_call to:0x01ffad5c module:itcm
from:0x0200c210 kind:arm_call to:0x01ffa93c module:itcm
from:0x0200c21c kind:arm_call to:0x01ffa9e8 module:itcm
from:0x0200c228 kind:load to:0x027e0338 module:dtcm
from:0x0200c22c kind:load to:0x027e02c4 module:dtcm
from:0x0200c230 kind:load to:0x027e0254 module:dtcm
from:0x0200c230 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c234 kind:load to:0x027e0208 module:dtcm
from:0x0200c238 kind:load to:0x027e0368 module:dtcm
from:0x0200c250 kind:arm_call to:0x0200c1d8 module:main
@@ -1180,12 +1180,12 @@ from:0x0200ce60 kind:arm_call to:0x02028c78 module:main
from:0x0200ce64 kind:arm_call to:0x0200c198 module:main
from:0x0200ce78 kind:arm_call to:0x02028c78 module:main
from:0x0200cee8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200cf00 kind:load to:0x02043470 module:main
from:0x0200cf04 kind:load to:0x0204347c module:main
from:0x0200cf00 kind:load to:0x02043440 add:0x30 module:main
from:0x0200cf04 kind:load to:0x02043440 add:0x3c module:main
from:0x0200cf10 kind:load to:0x027e0208 module:dtcm
from:0x0200cf14 kind:load to:0x027e0254 module:dtcm
from:0x0200cf1c kind:load to:0x02043444 module:main
from:0x0200cf24 kind:load to:0x0204344c module:main
from:0x0200cf14 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200cf1c kind:load to:0x02043440 add:0x4 module:main
from:0x0200cf24 kind:load to:0x02043440 add:0xc module:main
from:0x0200cf28 kind:load to:0x02043440 module:main
from:0x0200cfc8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200d02c kind:arm_call to:0x01ff8d38 module:itcm
@@ -1207,12 +1207,12 @@ from:0x0200d1b4 kind:arm_call to:0x02028c78 module:main
from:0x0200d1b8 kind:arm_call to:0x0200c198 module:main
from:0x0200d1cc kind:arm_call to:0x02028c78 module:main
from:0x0200d23c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200d254 kind:load to:0x020434b8 module:main
from:0x0200d258 kind:load to:0x020434c4 module:main
from:0x0200d25c kind:load to:0x02043494 module:main
from:0x0200d254 kind:load to:0x02043488 add:0x30 module:main
from:0x0200d258 kind:load to:0x02043488 add:0x3c module:main
from:0x0200d25c kind:load to:0x02043488 add:0xc module:main
from:0x0200d268 kind:load to:0x027e0208 module:dtcm
from:0x0200d26c kind:load to:0x027e0254 module:dtcm
from:0x0200d274 kind:load to:0x0204348c module:main
from:0x0200d26c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200d274 kind:load to:0x02043488 add:0x4 module:main
from:0x0200d27c kind:load to:0x02043488 module:main
from:0x0200d2c4 kind:arm_call to:0x02028c90 module:main
from:0x0200d2c8 kind:arm_call to:0x01ff8d38 module:itcm
@@ -1222,8 +1222,8 @@ from:0x0200d5c4 kind:arm_call to:0x02024a84 module:main
from:0x0200d744 kind:arm_call to:0x02024d94 module:main
from:0x0200d958 kind:arm_call to:0x02024a30 module:main
from:0x0200d96c kind:arm_call to:0x02024a30 module:main
from:0x0200d9c0 kind:load to:0x02048080 module:main
from:0x0200d9c8 kind:load to:0x020480c0 module:main
from:0x0200d9c0 kind:load to:0x02046c80 add:0x1400 module:main
from:0x0200d9c8 kind:load to:0x02046c80 add:0x1440 module:main
from:0x0200da74 kind:arm_call to:0x01ff8dac module:itcm
from:0x0200daf8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200db7c kind:arm_call to:0x01ff8e58 module:itcm
@@ -1242,7 +1242,7 @@ from:0x0200de34 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200de4c kind:load to:0x020433f0 module:main
from:0x0200de50 kind:load to:0x020433fc module:main
from:0x0200de54 kind:load to:0x027e0208 module:dtcm
from:0x0200de58 kind:load to:0x027e0254 module:dtcm
from:0x0200de58 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200de5c kind:load to:0x027e02c4 module:dtcm
from:0x0200de8c kind:arm_call to:0x0200e260 module:main
from:0x0200dea8 kind:arm_call to:0x01ff8e58 module:itcm
+17 -27
View File
@@ -503,23 +503,23 @@ func_0200c2a4 kind:function(arm,size=0x6c) addr:0x0200c2a4
func_0200c310 kind:function(arm,size=0x70) addr:0x0200c310
func_0200c380 kind:function(arm,size=0x4c4) addr:0x0200c380
func_0200c844 kind:function(arm,size=0x88) addr:0x0200c844
func_0200c8cc kind:function(arm,size=0x48) addr:0x0200c8cc
func_0200c914 kind:function(arm,size=0x198) addr:0x0200c914
func_0200caac kind:function(arm,size=0x64) addr:0x0200caac
func_0200cb10 kind:function(arm,size=0xe0) addr:0x0200cb10
func_0200cbf0 kind:function(arm,size=0x28) addr:0x0200cbf0
func_0200cc18 kind:function(arm,size=0x28) addr:0x0200cc18
func_0200cc40 kind:function(arm,size=0x2ec) addr:0x0200cc40
func_0200cf2c kind:function(arm,size=0x354) addr:0x0200cf2c
func_0200d280 kind:function(arm,size=0x74c) addr:0x0200d280
func_0200d9cc kind:function(arm,size=0xdc) addr:0x0200d9cc
func_0200daa8 kind:function(arm,size=0x68) addr:0x0200daa8
func_0200db10 kind:function(arm,size=0x350) addr:0x0200db10
func_0200de60 kind:function(arm,size=0x3b4) addr:0x0200de60
G3d_RenderSBCCommands kind:function(arm,size=0x48) addr:0x0200c8cc
G3d_InitRenderState kind:function(arm,size=0x198) addr:0x0200c914
G3d_SetRenderObjAnimationMap kind:function(arm,size=0x64) addr:0x0200caac
G3d_Render kind:function(arm,size=0xe0) addr:0x0200cb10
G3d_SBCRender_NOP kind:function(arm,size=0x28) addr:0x0200cbf0
G3d_SBCRender_END kind:function(arm,size=0x28) addr:0x0200cc18
G3d_SBCRender_007 kind:function(arm,size=0x2ec) addr:0x0200cc40
G3d_SBCRender_008 kind:function(arm,size=0x354) addr:0x0200cf2c
G3d_SBCRender_SKN kind:function(arm,size=0x74c) addr:0x0200d280
G3d_SBCRender_00A kind:function(arm,size=0xdc) addr:0x0200d9cc
G3d_SBCRender_SCL kind:function(arm,size=0x68) addr:0x0200daa8
G3d_SBCRender_00C kind:function(arm,size=0x350) addr:0x0200db10
G3d_SBCRender_00D kind:function(arm,size=0x3b4) addr:0x0200de60
func_0200e214 kind:function(arm,size=0x20) addr:0x0200e214
func_0200e234 kind:function(arm,size=0x20) addr:0x0200e234
func_0200e254 kind:function(arm,size=0xc) addr:0x0200e254
func_0200e260 kind:function(arm,size=0x8c) addr:0x0200e260
G3d_GetCurrentMtx kind:function(arm,size=0x8c) addr:0x0200e260
func_0200e2ec kind:function(thumb,size=0x24) addr:0x0200e2ec
func_0200e310 kind:function(arm,size=0x40) addr:0x0200e310
func_0200e350 kind:function(arm,size=0x48) addr:0x0200e350
@@ -2334,20 +2334,12 @@ data_02043398 kind:data(any) addr:0x02043398
data_0204339c kind:data(any) addr:0x0204339c
data_020433a0 kind:data(any) addr:0x020433a0
data_020433a4 kind:data(any) addr:0x020433a4
data_020433f0 kind:data(any) addr:0x020433f0
_ZZ17G3d_SBCRender_00CP16G3d_RenderState_jE8funcArgs kind:data(any) addr:0x020433f0
data_020433f4 kind:data(any) addr:0x020433f4
data_020433fc kind:data(any) addr:0x020433fc
data_02043400 kind:data(any) addr:0x02043400
data_02043440 kind:data(any) addr:0x02043440
data_02043444 kind:data(any) addr:0x02043444
data_0204344c kind:data(any) addr:0x0204344c
data_02043470 kind:data(any) addr:0x02043470
data_0204347c kind:data(any) addr:0x0204347c
data_02043488 kind:data(any) addr:0x02043488
data_0204348c kind:data(any) addr:0x0204348c
data_02043494 kind:data(any) addr:0x02043494
data_020434b8 kind:data(any) addr:0x020434b8
data_020434c4 kind:data(any) addr:0x020434c4
_ZZ17G3d_SBCRender_007P16G3d_RenderState_jE8funcArgs kind:data(any) addr:0x02043440
_ZZ17G3d_SBCRender_008P16G3d_RenderState_jE8funcArgs kind:data(any) addr:0x02043488
data_020434d0 kind:data(any) addr:0x020434d0
data_020434f0 kind:data(any) addr:0x020434f0
data_020434fc kind:data(any) addr:0x020434fc
@@ -2716,8 +2708,6 @@ data_02046c80 kind:bss addr:0x02046c80
data_02047a8c kind:bss addr:0x02047a8c
data_02047a90 kind:bss addr:0x02047a90
data_02047a94 kind:bss addr:0x02047a94
data_02048080 kind:bss addr:0x02048080
data_020480c0 kind:bss addr:0x020480c0
data_02049980 kind:bss addr:0x02049980
data_02049984 kind:bss addr:0x02049984
data_0204998c kind:bss addr:0x0204998c
+3
View File
@@ -10,6 +10,9 @@
src/Main/Main.cpp:
.text start:0x02000800 end:0x02000bdc
libs/nns/src/g3d/sbc.c:
.text start:0x0200c8cc end:0x0200e2ec
src/Main/System/SysNew.cpp:
.text start:0x02011e10 end:0x0201200c
+7 -7
View File
@@ -7,12 +7,12 @@ data_027e0018 kind:data(any) addr:0x027e0018
data_027e001c kind:data(any) addr:0x027e001c
data_027e0020 kind:data(any) addr:0x027e0020
data_027e0021 kind:data(any) addr:0x027e0021
data_027e0024 kind:data(any) addr:0x027e0024
data_027e0030 kind:data(any) addr:0x027e0030
data_027e003c kind:data(any) addr:0x027e003c
G3d_gSRTTransformHandlers kind:data(any) addr:0x027e0024
G3d_gScaleHandlers kind:data(any) addr:0x027e0030
G3d_gTextureHandlers kind:data(any) addr:0x027e003c
data_027e004c kind:data(any) addr:0x027e004c
data_027e005c kind:data(any) addr:0x027e005c
data_027e006c kind:data(any) addr:0x027e006c
G3d_FuncSbcTable kind:data(any) addr:0x027e006c
data_027e00ec kind:data(any) addr:0x027e00ec
data_027e00f0 kind:data(any) addr:0x027e00f0
data_027e00fc kind:data(any) addr:0x027e00fc
@@ -32,14 +32,14 @@ data_027e0210 kind:bss addr:0x027e0210
data_027e0254 kind:bss addr:0x027e0254
data_027e0288 kind:bss addr:0x027e0288
data_027e02b0 kind:bss addr:0x027e02b0
data_027e02c4 kind:bss addr:0x027e02c4
data_027e02e8 kind:bss addr:0x027e02e8
gGeomMatrix kind:bss addr:0x027e02c4
gGeomTranslation kind:bss addr:0x027e02e8
data_027e02f4 kind:bss addr:0x027e02f4
data_027e0308 kind:bss addr:0x027e0308
data_027e0338 kind:bss addr:0x027e0338
data_027e0368 kind:bss addr:0x027e0368
data_027e0408 kind:bss addr:0x027e0408
data_027e046c kind:bss addr:0x027e046c
G3d_gRenderState kind:bss addr:0x027e046c
data_027e0470 kind:bss addr:0x027e0470
data_027e0474 kind:bss addr:0x027e0474
data_027e0478 kind:bss addr:0x027e0478
+2 -2
View File
@@ -181,7 +181,7 @@ from:0x01ffc574 kind:load to:0x027e02c4 module:dtcm
from:0x01ffc578 kind:load to:0x027e02f4 module:dtcm
from:0x01ffc584 kind:arm_call to:0x0200cb10 module:main
from:0x01ffc594 kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffc59c kind:load to:0x027e0254 module:dtcm
from:0x01ffc59c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x01ffc600 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
from:0x01ffc630 kind:load to:0x0203feb0 module:main
from:0x01ffc6a0 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
@@ -191,7 +191,7 @@ from:0x01ffc740 kind:load to:0x0203feb0 module:main
from:0x01ffc818 kind:arm_call to:0x0200e260 module:main
from:0x01ffc848 kind:arm_call to:0x01ffaf74 module:itcm
from:0x01ffc854 kind:load to:0x027e0964 module:dtcm
from:0x01ffc8dc kind:load to:0x027e0254 module:dtcm
from:0x01ffc8dc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x01ffc91c kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffca08 kind:arm_call to:0x01ff8e58 module:itcm
from:0x01ffcb4c kind:arm_call to:0x01ff8dac module:itcm
+4 -4
View File
@@ -5,10 +5,10 @@ func_01ff86b8 kind:function(arm,size=0xb0) addr:0x01ff86b8
func_01ff8768 kind:function(arm,size=0xd4) addr:0x01ff8768
func_01ff883c kind:function(arm,size=0xa0) addr:0x01ff883c
func_01ff88dc kind:function(arm,size=0x45c) addr:0x01ff88dc
func_01ff8d38 kind:function(arm,size=0x5c) addr:0x01ff8d38
FlushGfxQueue kind:function(arm,size=0x5c) addr:0x01ff8d38
func_01ff8d94 kind:function(arm,size=0x18) addr:0x01ff8d94
func_01ff8dac kind:function(arm,size=0xac) addr:0x01ff8dac
func_01ff8e58 kind:function(arm,size=0xe8) addr:0x01ff8e58
PushGeometryCommand kind:function(arm,size=0xe8) addr:0x01ff8e58
func_01ff8f40 kind:function(arm,size=0x68) addr:0x01ff8f40
_ZN22UnkStruct_PlayerGet_5013func_01ff8fa8Ev kind:function(arm,size=0x40) addr:0x01ff8fa8
func_01ff8fe8 kind:function(arm,size=0x128) addr:0x01ff8fe8
@@ -81,7 +81,7 @@ func_01ffad5c kind:function(arm,size=0x218) addr:0x01ffad5c
func_01ffaf74 kind:function(arm,size=0x98) addr:0x01ffaf74
Mat4p_InitIdentity kind:function(arm,size=0x2c) addr:0x01ffb00c
Mat4p_CopyToMat4x3p kind:function(arm,size=0x34) addr:0x01ffb038
func_01ffb06c kind:function(arm,size=0x3bc) addr:0x01ffb06c
Mat4p_Multiply kind:function(arm,size=0x3bc) addr:0x01ffb06c
func_01ffb428 kind:function(arm,size=0x10) addr:0x01ffb428
func_01ffb438 kind:function(arm,size=0x2c) addr:0x01ffb438
func_01ffb464 kind:function(arm,size=0x10) addr:0x01ffb464
@@ -101,7 +101,7 @@ Vec3p_Add kind:function(arm,size=0x30) addr:0x01ffb6e4
func_01ffb714 kind:function(arm,size=0x30) addr:0x01ffb714
Vec3p_Dot kind:function(arm,size=0x3c) addr:0x01ffb744
func_01ffb780 kind:function(arm,size=0x80) addr:0x01ffb780
func_01ffb800 kind:function(arm,size=0x60) addr:0x01ffb800
Vec3p_Length kind:function(arm,size=0x60) addr:0x01ffb800
Vec3p_Normalize kind:function(arm,size=0x114) addr:0x01ffb860
func_01ffb974 kind:function(arm,size=0x58) addr:0x01ffb974
func_01ffb9cc kind:function(arm,size=0x7c) addr:0x01ffb9cc
+6 -6
View File
@@ -379,7 +379,7 @@ from:0x02059a28 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02059a3c kind:arm_call to:0x01ff8e58 module:itcm
from:0x02059a4c kind:arm_call to:0x01ff8e58 module:itcm
from:0x02059a60 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02059a74 kind:load to:0x027e0254 module:dtcm
from:0x02059a74 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02059a9c kind:arm_call to:0x0200b578 module:main
from:0x02059aa8 kind:arm_call to:0x01ffc57c module:itcm
from:0x02059ab0 kind:arm_call to:0x0200b58c module:main
@@ -740,7 +740,7 @@ from:0x0205c26c kind:arm_call to:0x0200e260 module:main
from:0x0205c280 kind:arm_call to:0x01ffb860 module:itcm
from:0x0205c29c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0205c2b4 kind:arm_call to:0x01ffa328 module:itcm
from:0x0205c2dc kind:load to:0x027e0254 module:dtcm
from:0x0205c2dc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0205c2e0 kind:load to:0x027e0964 module:dtcm
from:0x0205c2e4 kind:load to:0x027e0208 module:dtcm
from:0x0205c2e8 kind:load to:0x027e0988 module:dtcm
@@ -844,7 +844,7 @@ from:0x0205d510 kind:arm_call to:0x0202a20c module:main
from:0x0205d528 kind:arm_call to:0x01ffa81c module:itcm
from:0x0205d540 kind:load to:0x027e0210 module:dtcm
from:0x0205d544 kind:load to:0x027e0208 module:dtcm
from:0x0205d548 kind:load to:0x027e0254 module:dtcm
from:0x0205d548 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0205d57c kind:arm_call to:0x01ffc744 module:itcm
from:0x0205d5a0 kind:arm_call to:0x01ffc768 module:itcm
from:0x0205d5bc kind:load to:0x020b66c4 module:overlay(0)
@@ -3551,7 +3551,7 @@ from:0x02077e44 kind:arm_call to:0x02025f60 module:main
from:0x02077e4c kind:arm_call to:0x0205c2a8 module:overlay(0)
from:0x02077e58 kind:load to:0x027e0208 module:dtcm
from:0x02077e60 kind:load to:0x027e0210 module:dtcm
from:0x02077e64 kind:load to:0x027e0254 module:dtcm
from:0x02077e64 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02077ef4 kind:arm_call to:0x01ffb428 module:itcm
from:0x02077f10 kind:arm_call to:0x01ffb428 module:itcm
from:0x02077f50 kind:arm_call to:0x01ffb744 module:itcm
@@ -5387,12 +5387,12 @@ from:0x0208dd9c kind:arm_call to:0x02011ff4 module:main
from:0x0208ddc8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208ddcc kind:arm_call to:0x0205c254 module:overlay(0)
from:0x0208ddec kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208ddf8 kind:load to:0x027e0254 module:dtcm
from:0x0208ddf8 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0208de1c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208de20 kind:arm_call to:0x0205c254 module:overlay(0)
from:0x0208de34 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208de54 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0208de60 kind:load to:0x027e0254 module:dtcm
from:0x0208de60 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0208de6a kind:thumb_call_arm to:0x0205a664 module:overlay(0)
from:0x0208de84 kind:load to:0x020b439c module:overlay(0)
from:0x0208deac kind:arm_call to:0x0205a544 module:overlay(0)
+2 -2
View File
@@ -2273,7 +2273,7 @@ from:0x020ff4cc kind:load to:0x027e09ac module:dtcm
from:0x020ff4d0 kind:load to:0x020b66c4 module:overlay(0)
from:0x020ff4d4 kind:load to:0x0210a8a4 module:overlay(21)
from:0x020ff4dc kind:load to:0x027e0208 module:dtcm
from:0x020ff4e0 kind:load to:0x027e0254 module:dtcm
from:0x020ff4e0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020ff4e4 kind:load to:0x0203ffb0 module:main
from:0x020ff4e8 kind:load to:0x027e0210 module:dtcm
from:0x020ff4f0 kind:load to:0x0204af1c module:main
@@ -2322,7 +2322,7 @@ from:0x020ff77c kind:arm_call to:0x020c4304 module:overlay(17)
from:0x020ff78c kind:arm_call to:0x01ff8e58 module:itcm
from:0x020ff794 kind:load to:0x027e09ac module:dtcm
from:0x020ff79c kind:load to:0x027e0210 module:dtcm
from:0x020ff7a0 kind:load to:0x027e0254 module:dtcm
from:0x020ff7a0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020ff8ec kind:arm_call to:0x020fd24c module:overlay(21)
from:0x020ff908 kind:load to:0x0210b4b8 module:overlay(21)
from:0x020ff944 kind:arm_call to:0x020fd230 module:overlay(21)
+3 -3
View File
@@ -59,7 +59,7 @@ from:0x020eb5f4 kind:arm_call to:0x0201830c module:main
from:0x020eb600 kind:arm_call_thumb to:0x02014998 module:main
from:0x020eb608 kind:arm_call to:0x020bd298 module:overlay(17)
from:0x020eb614 kind:load to:0x027e0208 module:dtcm
from:0x020eb618 kind:load to:0x027e0254 module:dtcm
from:0x020eb618 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020eb61c kind:load to:0x0203ffb0 module:main
from:0x020eb620 kind:load to:0x027e0210 module:dtcm
from:0x020eb628 kind:load to:0x020b66ec module:overlay(0)
@@ -89,7 +89,7 @@ from:0x020eb7e8 kind:arm_call to:0x02025f60 module:main
from:0x020eb7f8 kind:arm_call to:0x02073d54 module:overlay(0)
from:0x020eb800 kind:load to:0x027e09ac module:dtcm
from:0x020eb808 kind:load to:0x027e0210 module:dtcm
from:0x020eb80c kind:load to:0x027e0254 module:dtcm
from:0x020eb80c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020eb868 kind:load to:0x020f3614 module:overlay(23)
from:0x020eb86c kind:load to:0x020b7ab8 module:overlay(0)
from:0x020eb880 kind:arm_call to:0x020f0e7c module:overlay(23)
@@ -118,7 +118,7 @@ from:0x020eba6c kind:arm_call to:0x020aba24 module:overlay(0)
from:0x020ebab0 kind:arm_call to:0x020157b8 module:main
from:0x020ebb10 kind:arm_call to:0x02023dd8 module:main
from:0x020ebb28 kind:load to:0x027e0208 module:dtcm
from:0x020ebb2c kind:load to:0x027e0254 module:dtcm
from:0x020ebb2c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020ebb48 kind:arm_call to:0x020ebbb4 module:overlay(23)
from:0x020ebb50 kind:arm_call to:0x02011ff4 module:main
from:0x020ebb58 kind:load to:0x027e095c module:dtcm
+1 -1
View File
@@ -509,7 +509,7 @@ from:0x020dec94 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020decb4 kind:arm_call to:0x01ff8e58 module:itcm
from:0x020decc0 kind:load to:0x02042eb0 module:main
from:0x020decc4 kind:load to:0x020abb94 module:overlay(0)
from:0x020decc8 kind:load to:0x027e0254 module:dtcm
from:0x020decc8 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x020decd8 kind:arm_call to:0x0207cd78 module:overlay(0)
from:0x020dece0 kind:arm_call_thumb to:0x02059454 module:overlay(0)
from:0x020dece8 kind:arm_call_thumb to:0x0208dda8 module:overlay(0)
+1 -1
View File
@@ -392,7 +392,7 @@ from:0x0211e9f8 kind:arm_call to:0x01ffad5c module:itcm
from:0x0211ea08 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0211ea1c kind:load to:0x027e0964 module:dtcm
from:0x0211ea20 kind:load to:0x0203feb0 module:main
from:0x0211ea24 kind:load to:0x027e0254 module:dtcm
from:0x0211ea24 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0211ea68 kind:arm_call to:0x01ff9638 module:itcm
from:0x0211ea78 kind:arm_call to:0x01ffb6e4 module:itcm
from:0x0211ea90 kind:arm_call to:0x02059218 module:overlay(0)
+1 -1
View File
@@ -685,7 +685,7 @@ from:0x0212ae64 kind:thumb_call_arm to:0x01ff8e58 module:itcm
from:0x0212ae6c kind:load to:0x020b66c4 module:overlay(0)
from:0x0212ae70 kind:load to:0x0212fbac module:overlay(43)
from:0x0212ae74 kind:load to:0x027e0964 module:dtcm
from:0x0212ae7c kind:load to:0x027e0254 module:dtcm
from:0x0212ae7c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0212af02 kind:thumb_call_arm to:0x01ffc3b4 module:itcm
from:0x0212af22 kind:thumb_call_arm to:0x02015018 module:main
from:0x0212af3e kind:thumb_call_arm to:0x02015018 module:main
+1 -1
View File
@@ -686,7 +686,7 @@ from:0x0212b4e4 kind:arm_call to:0x0212b52c module:overlay(46)
from:0x0212b510 kind:arm_call to:0x0212b52c module:overlay(46)
from:0x0212b520 kind:load to:0x027e09ac module:dtcm
from:0x0212b5d8 kind:arm_call to:0x02025f60 module:main
from:0x0212b82c kind:load to:0x027e0254 module:dtcm
from:0x0212b82c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0212bb00 kind:arm_call to:0x021252b0 module:overlay(46)
from:0x0212bb10 kind:arm_call to:0x0203e3a4 module:main
from:0x0212bb50 kind:load to:0x0212c520 module:overlay(46)
+1 -1
View File
@@ -526,7 +526,7 @@ from:0x02157528 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0215753c kind:arm_call to:0x01ff8e58 module:itcm
from:0x02157554 kind:load to:0x0203feb0 module:main
from:0x02157558 kind:load to:0x027e0964 module:dtcm
from:0x0215755c kind:load to:0x027e0254 module:dtcm
from:0x0215755c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0215766c kind:load to:0x02164c74 module:overlay(74)
from:0x02157680 kind:arm_call to:0x02059218 module:overlay(0)
from:0x0215768c kind:arm_call to:0x02059218 module:overlay(0)
+1 -1
View File
@@ -76,7 +76,7 @@ from:0x02155bac kind:arm_call_thumb to:0x01ffa1bc module:itcm
from:0x02155bbc kind:arm_call to:0x01ffa60c module:itcm
from:0x02155bc8 kind:load to:0x027e0964 module:dtcm
from:0x02155bcc kind:load to:0x0203feb0 module:main
from:0x02155bd0 kind:load to:0x027e0254 module:dtcm
from:0x02155bd0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02155c10 kind:arm_call to:0x020a1b0c module:overlay(0)
from:0x02155c38 kind:arm_call to:0x0215c98c module:overlay(78)
from:0x02155c54 kind:arm_call to:0x02099394 module:overlay(0)
+2 -2
View File
@@ -1152,7 +1152,7 @@ from:0x0217100c kind:load to:0x027e09ac module:dtcm
from:0x02171034 kind:arm_call to:0x01ffad5c module:itcm
from:0x02171084 kind:arm_call to:0x02025f60 module:main
from:0x021710b8 kind:arm_call to:0x02025f60 module:main
from:0x02171250 kind:load to:0x027e0254 module:dtcm
from:0x02171250 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02171254 kind:load to:0x021766a8 module:overlay(88)
from:0x02171258 kind:load to:0x02176698 module:overlay(88)
from:0x0217125c kind:load to:0x02176688 module:overlay(88)
@@ -1195,7 +1195,7 @@ from:0x021714c4 kind:arm_call to:0x01ffad5c module:itcm
from:0x021714dc kind:arm_call to:0x01ff8e58 module:itcm
from:0x021714e0 kind:arm_call to:0x0205c254 module:overlay(0)
from:0x02171500 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0217150c kind:load to:0x027e0254 module:dtcm
from:0x0217150c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02171518 kind:arm_call to:0x021717e4 module:overlay(88)
from:0x02171540 kind:arm_call to:0x02171554 module:overlay(88)
from:0x02171548 kind:arm_call to:0x021717f4 module:overlay(88)
+1 -1
View File
@@ -1043,7 +1043,7 @@ from:0x02171418 kind:arm_call to:0x01ff8e58 module:itcm
from:0x02171428 kind:arm_call to:0x0200e750 module:main
from:0x02171438 kind:load to:0x0203feb0 module:main
from:0x0217143c kind:load to:0x027e0130 module:dtcm
from:0x02171440 kind:load to:0x027e0254 module:dtcm
from:0x02171440 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02171504 kind:arm_call_thumb to:0x01ffa184 module:itcm
from:0x02171514 kind:arm_call to:0x01ffa60c module:itcm
from:0x021715a8 kind:arm_call_thumb to:0x01ffa1a0 module:itcm
+2 -2
View File
@@ -850,14 +850,14 @@ from:0x0218281c kind:arm_call to:0x0200e260 module:main
from:0x0218282c kind:arm_call to:0x01ff8e58 module:itcm
from:0x0218283c kind:arm_call to:0x01ffad5c module:itcm
from:0x02182868 kind:arm_call to:0x0205a544 module:overlay(0)
from:0x02182874 kind:load to:0x027e0254 module:dtcm
from:0x02182874 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02182878 kind:load to:0x027e0964 module:dtcm
from:0x0218287c kind:load to:0x027e0958 module:dtcm
from:0x02182888 kind:arm_call to:0x0218272c module:overlay(95)
from:0x021828a0 kind:arm_call to:0x01ff8e58 module:itcm
from:0x021828a4 kind:arm_call to:0x0205c254 module:overlay(0)
from:0x021828c4 kind:arm_call to:0x01ff8e58 module:itcm
from:0x021828cc kind:load to:0x027e0254 module:dtcm
from:0x021828cc kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x02182968 kind:load to:0x0217c4e0 module:overlay(95)
from:0x0218298c kind:load to:0x0217c0e0 module:overlay(95)
from:0x02182990 kind:load to:0x0217c540 module:overlay(95)
+6 -6
View File
@@ -1102,7 +1102,7 @@ from:0x0200c046 kind:thumb_call_arm to:0x01ffb00c module:itcm
from:0x0200c080 kind:thumb_call_arm to:0x01ffa06c module:itcm
from:0x0200c0ac kind:load to:0x027e0208 module:dtcm
from:0x0200c0b4 kind:load to:0x027e0288 module:dtcm
from:0x0200c0c4 kind:load to:0x027e0254 module:dtcm
from:0x0200c0c4 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c0c8 kind:load to:0x027e0210 module:dtcm
from:0x0200c0f8 kind:load to:0x027e02c4 module:dtcm
from:0x0200c0fc kind:load to:0x027e0408 module:dtcm
@@ -1114,14 +1114,14 @@ from:0x0200c170 kind:load to:0x027e02b0 module:dtcm
from:0x0200c194 kind:load to:0x027e0208 module:dtcm
from:0x0200c1b4 kind:arm_call to:0x01ffa9e8 module:itcm
from:0x0200c1cc kind:load to:0x027e0208 module:dtcm
from:0x0200c1d0 kind:load to:0x027e0254 module:dtcm
from:0x0200c1d0 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c1d4 kind:load to:0x027e0308 module:dtcm
from:0x0200c1f0 kind:arm_call to:0x01ffad5c module:itcm
from:0x0200c210 kind:arm_call to:0x01ffa93c module:itcm
from:0x0200c21c kind:arm_call to:0x01ffa9e8 module:itcm
from:0x0200c228 kind:load to:0x027e0338 module:dtcm
from:0x0200c22c kind:load to:0x027e02c4 module:dtcm
from:0x0200c230 kind:load to:0x027e0254 module:dtcm
from:0x0200c230 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200c234 kind:load to:0x027e0208 module:dtcm
from:0x0200c238 kind:load to:0x027e0368 module:dtcm
from:0x0200c250 kind:arm_call to:0x0200c1d8 module:main
@@ -1183,7 +1183,7 @@ from:0x0200cee8 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200cf00 kind:load to:0x020449d0 module:main
from:0x0200cf04 kind:load to:0x020449dc module:main
from:0x0200cf10 kind:load to:0x027e0208 module:dtcm
from:0x0200cf14 kind:load to:0x027e0254 module:dtcm
from:0x0200cf14 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200cf1c kind:load to:0x020449a4 module:main
from:0x0200cf24 kind:load to:0x020449ac module:main
from:0x0200cf28 kind:load to:0x020449a0 module:main
@@ -1211,7 +1211,7 @@ from:0x0200d254 kind:load to:0x02044a18 module:main
from:0x0200d258 kind:load to:0x02044a24 module:main
from:0x0200d25c kind:load to:0x020449f4 module:main
from:0x0200d268 kind:load to:0x027e0208 module:dtcm
from:0x0200d26c kind:load to:0x027e0254 module:dtcm
from:0x0200d26c kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200d274 kind:load to:0x020449ec module:main
from:0x0200d27c kind:load to:0x020449e8 module:main
from:0x0200d2c4 kind:arm_call to:0x0202a1c0 module:main
@@ -1242,7 +1242,7 @@ from:0x0200de34 kind:arm_call to:0x01ff8e58 module:itcm
from:0x0200de4c kind:load to:0x02044950 module:main
from:0x0200de50 kind:load to:0x0204495c module:main
from:0x0200de54 kind:load to:0x027e0208 module:dtcm
from:0x0200de58 kind:load to:0x027e0254 module:dtcm
from:0x0200de58 kind:load to:0x027e0208 add:0x4c module:dtcm
from:0x0200de5c kind:load to:0x027e02c4 module:dtcm
from:0x0200de8c kind:arm_call to:0x0200e260 module:main
from:0x0200dea8 kind:arm_call to:0x01ff8e58 module:itcm
+14 -14
View File
@@ -503,23 +503,23 @@ func_0200c2a4 kind:function(arm,size=0x6c) addr:0x0200c2a4
func_0200c310 kind:function(arm,size=0x70) addr:0x0200c310
func_0200c380 kind:function(arm,size=0x4c4) addr:0x0200c380
func_0200c844 kind:function(arm,size=0x88) addr:0x0200c844
func_0200c8cc kind:function(arm,size=0x48) addr:0x0200c8cc
func_0200c914 kind:function(arm,size=0x198) addr:0x0200c914
func_0200caac kind:function(arm,size=0x64) addr:0x0200caac
func_0200cb10 kind:function(arm,size=0xe0) addr:0x0200cb10
func_0200cbf0 kind:function(arm,size=0x28) addr:0x0200cbf0
func_0200cc18 kind:function(arm,size=0x28) addr:0x0200cc18
func_0200cc40 kind:function(arm,size=0x2ec) addr:0x0200cc40
func_0200cf2c kind:function(arm,size=0x354) addr:0x0200cf2c
func_0200d280 kind:function(arm,size=0x74c) addr:0x0200d280
func_0200d9cc kind:function(arm,size=0xdc) addr:0x0200d9cc
func_0200daa8 kind:function(arm,size=0x68) addr:0x0200daa8
func_0200db10 kind:function(arm,size=0x350) addr:0x0200db10
func_0200de60 kind:function(arm,size=0x3b4) addr:0x0200de60
G3d_RenderSBCCommands kind:function(arm,size=0x48) addr:0x0200c8cc
G3d_InitRenderState kind:function(arm,size=0x198) addr:0x0200c914
G3d_SetRenderObjAnimationMap kind:function(arm,size=0x64) addr:0x0200caac
G3d_Render kind:function(arm,size=0xe0) addr:0x0200cb10
G3d_SBCRender_NOP kind:function(arm,size=0x28) addr:0x0200cbf0
G3d_SBCRender_END kind:function(arm,size=0x28) addr:0x0200cc18
G3d_SBCRender_007 kind:function(arm,size=0x2ec) addr:0x0200cc40
G3d_SBCRender_008 kind:function(arm,size=0x354) addr:0x0200cf2c
G3d_SBCRender_SKN kind:function(arm,size=0x74c) addr:0x0200d280
G3d_SBCRender_00A kind:function(arm,size=0xdc) addr:0x0200d9cc
G3d_SBCRender_SCL kind:function(arm,size=0x68) addr:0x0200daa8
G3d_SBCRender_00C kind:function(arm,size=0x350) addr:0x0200db10
G3d_SBCRender_00D kind:function(arm,size=0x3b4) addr:0x0200de60
func_0200e214 kind:function(arm,size=0x20) addr:0x0200e214
func_0200e234 kind:function(arm,size=0x20) addr:0x0200e234
func_0200e254 kind:function(arm,size=0xc) addr:0x0200e254
func_0200e260 kind:function(arm,size=0x8c) addr:0x0200e260
G3d_GetCurrentMtx kind:function(arm,size=0x8c) addr:0x0200e260
func_0200e2ec kind:function(thumb,size=0x24) addr:0x0200e2ec
func_0200e310 kind:function(arm,size=0x40) addr:0x0200e310
func_0200e350 kind:function(arm,size=0x48) addr:0x0200e350
+1 -1
View File
@@ -7,9 +7,9 @@
#include "System/SysNew.hpp"
#include "flags.h"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include "versions.h"
#include <nitro/math.h>
// some functions use thumb mode on the japanese version (only in overlay 40?)
#if IS_JP
+1 -1
View File
@@ -7,9 +7,9 @@
#include "Unknown/UnkSystem1.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "regs.h"
#include "types.h"
#include <nitro/math.h>
extern const unk16 data_ov019_020d1bb0[];
extern "C" void func_ov001_020bd6a8();
+1 -1
View File
@@ -6,8 +6,8 @@
#include "Unknown/UnkSystem1.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
typedef Iterator<UnkSubStruct9, MAX_SAVE_SLOTS> FileSlotIterator;
+1 -1
View File
@@ -3,8 +3,8 @@
#include "Game/GameModeManager.hpp"
#include "Unknown/Common.hpp"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
#define MAX_MIC_LEVELS 4
#define MIC_LEVEL_1 0 // green bar
@@ -3,8 +3,8 @@
#include "System/SysNew.hpp"
#include "Unknown/Common.hpp"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
class FileSelectOptions;
class FileSelectMicTest;
+1 -1
View File
@@ -4,8 +4,8 @@
#include "System/SysNew.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
// file tab manager?
class UnkSubStruct9 : public SysObject {
+3 -3
View File
@@ -4,10 +4,10 @@
#include "Player/TouchControl.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_02049b18.hpp"
#include "nitro/button.h"
#include "nitro/math.h"
#include "nitro/touch.h"
#include "types.h"
#include <nitro/button.h>
#include <nitro/math.h>
#include <nitro/touch.h>
class GameModeManagerBase;
class GameModeManagerBase_104;
+1 -1
View File
@@ -7,8 +7,8 @@
#include "System/SysNew.hpp"
#include "flags.h"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
class MapObjectProfile;
+1 -1
View File
@@ -2,7 +2,7 @@
#include "types.h"
#include "nitro/math.h"
#include <nitro/math.h>
struct Cylinder {
Vec3p pos;
+1 -1
View File
@@ -1,7 +1,7 @@
#pragma once
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
// incomplete
class PlayerActor {
+1 -1
View File
@@ -7,7 +7,7 @@
#include "Unknown/Common.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_ov000_0208f820.hpp"
#include "nitro/math.h"
#include <nitro/math.h>
struct UnkStruct_ov110_02185dc8 {
u16 mItemId;
+1 -1
View File
@@ -6,7 +6,7 @@
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkStruct_ov000_0208f820.hpp"
#include "nitro/math.h"
#include <nitro/math.h>
class PlayerSceneChange : public UnkStruct_ov000_0208f820 {
public:
+2 -2
View File
@@ -1,8 +1,8 @@
#pragma once
#include "nitro/math.h"
#include "nitro/touch.h"
#include "types.h"
#include <nitro/math.h>
#include <nitro/touch.h>
typedef u16 TouchFlags;
enum TouchFlag_ {
+1 -1
View File
@@ -1,8 +1,8 @@
#pragma once
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
struct Random {
/* 00 */ u16 mRandomValue[4];
+2 -2
View File
@@ -4,9 +4,9 @@
#include "System/SysNew.hpp"
#include "Unknown/UnkFileSystem.hpp"
#include "global.h"
#include "nitro/math.h"
#include "nns/text.h"
#include "types.h"
#include <nitro/math.h>
#include <nns/text.h>
extern "C" void func_0201e8d4(void *param1, void *param2);
+4
View File
@@ -4,7 +4,9 @@
//! TODO: temporary place until this is documented properly
#ifdef __cplusplus
extern "C" {
#endif
void MI_CpuFill16(int value, void *dst, size_t size);
void MI_CpuCopy16(void *src, void *dest, size_t size);
void MI_CpuFill32(int value, void *dest, size_t size);
@@ -20,4 +22,6 @@ void MI_CpuFill8(void *dst, int value, size_t size);
// Copy
// Zero288
// Swap32
#ifdef __cplusplus
}
#endif
+1 -1
View File
@@ -2,8 +2,8 @@
#include "Player/TouchControl.hpp"
#include "global.h"
#include "nitro/button.h"
#include "types.h"
#include <nitro/button.h>
class UnkStruct_02049b18_06 {
public:
+1 -1
View File
@@ -2,8 +2,8 @@
#include "Unknown/UnkStruct_02049b18.hpp"
#include "global.h"
#include "nitro/button.h"
#include "types.h"
#include <nitro/button.h>
class UnkStruct_0204e64c_00 {
public:
+1 -1
View File
@@ -4,7 +4,7 @@
#include "Player/Player.hpp"
#include "Player/TouchControl.hpp"
#include "global.h"
#include "nitro/button.h"
#include <nitro/button.h>
// incomplete
class UnkStruct_027e0478 {
+1 -1
View File
@@ -1,8 +1,8 @@
#pragma once
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
class UnkStruct_027e0998 {
public:
+1 -1
View File
@@ -1,7 +1,7 @@
#pragma once
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
class UnkStruct_027e09a8 {
public:
+1 -1
View File
@@ -1,8 +1,8 @@
#pragma once
#include "files.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
#include "Unknown/UnkStruct_027e09a4.hpp"
+1 -1
View File
@@ -1,8 +1,8 @@
#pragma once
#include "Player/PlayerGet.hpp"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
class UnkStruct_027e0cec {
public:
+1 -1
View File
@@ -6,8 +6,8 @@
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_02049b18.hpp"
#include "global.h"
#include "nitro/button.h"
#include "types.h"
#include <nitro/button.h>
class UnkStruct_ov000_02067bc4_Sub1 {
public:
+1 -1
View File
@@ -5,7 +5,7 @@
#include "Item/ItemManager.hpp"
#include "System/SysNew.hpp"
#include "nitro/math.h"
#include <nitro/math.h>
class UnkStruct_ov000_0208f820_14 {
public:
+1 -1
View File
@@ -2,8 +2,8 @@
#include "System/SysNew.hpp"
#include "Unknown/UnkFileSystem.hpp"
#include "nns/font.h"
#include "types.h"
#include <nns/font.h>
enum {
FontIndex_DSZ2_msg = 0,
+12
View File
@@ -138,6 +138,18 @@ extern u32 _DTCM_BASE; // TODO: Provide address via LCF
#define REG_OAM_A (*(((u32 *) (0x07000000))))
#define REG_OAM_B (*(((u32 *) (0x07000400))))
#define REG_GFX_FIFO (*(vu32 *) 0x04000400)
#define GFX_FIFO_MTX_MODE (*(vu32 *) 0x04000440)
#define GFX_FIFO_MTX_PUSH (*(vu32 *) 0x04000444)
#define GFX_FIFO_MTX_POP (*(vu32 *) 0x04000448)
#define GFX_FIFO_MTX_STORE (*(vu32 *) 0x0400044c)
#define GFX_FIFO_MTX_RESTORE (*(vu32 *) 0x04000450)
#define GFX_FIFO_MTX_IDENTITY (*(vu32 *) 0x04000454)
#define GFX_FIFO_SWAP_BUFFERS (*(vu32 *) 0x04000540)
#define GFX_FIFO_VIEWPORT (*(vu32 *) 0x04000580)
#define REG_GFX_RAM_COUNT (*(vu16 *) 0x04000604)
#define REG_GFX_RAM_COUNT_2 (*(vu16 *) 0x04000606)
#ifdef __cplusplus
} // extern "C"
#endif
-8
View File
@@ -8,14 +8,6 @@ extern "C" {
#define FLOATDECIMAL ((char) (0))
#define FIXEDDECIMAL ((char) (1))
#define DBL_MIN 0x1.0000000000000P-1022
#define DBL_EPSILON 0x1.0000000000000P-52
#define DBL_MAX 0x1.fffffffffffffP1023
#define LDBL_MIN 0x1.0000000000000P-1022L
#define LDBL_EPSILON 0x1.0000000000000P-52L
#define LDBL_MAX 0x1.fffffffffffffP1023L
typedef struct decimal {
unsigned char sgn;
char unused;
+5 -3
View File
@@ -9,7 +9,9 @@ extern "C" {
#define FLT_EPSILON 1.192092896e-07f
#define FLT_MIN 1.175494351e-38f
#define DBL_EPSILON 1.1920929e-07
#define DBL_MIN 0x1.0000000000000P-1022
#define DBL_EPSILON 0x1.0000000000000P-52
#define DBL_MAX 0x1.fffffffffffffP1023
#define LDBL_MANT_DIG 53
#define LDBL_DIG 15
@@ -18,9 +20,9 @@ extern "C" {
#define LDBL_MAX_EXP 1024
#define LDBL_MAX_10_EXP 308
#define LDBL_MAX 0x1.fffffffffffffP1023L
#define LDBL_EPSILON 0x1.0000000000000P-52L
#define LDBL_MIN 0x1.0000000000000P-1022L
#define LDBL_EPSILON 0x1.0000000000000P-52L
#define LDBL_MAX 0x1.fffffffffffffP1023L
#ifdef __cplusplus
}
@@ -216,8 +216,8 @@ struct Mat4p {
wColumn = W;
}
};
#else
extern "C" {
#else
typedef struct Vec2b {
/* 0 */ u8 x;
/* 1 */ u8 y;
@@ -279,10 +279,10 @@ typedef struct Mat4p {
/* 30 */ Vec4p wColumn;
/* 40 */
} Mat4p;
}
#endif
#ifdef __cplusplus
}
extern "C" {
#endif
@@ -1,8 +1,8 @@
#pragma once
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#include <nitro/math.h>
#ifdef __cplusplus
extern "C" {
+165
View File
@@ -0,0 +1,165 @@
#include <nitro/math.h>
struct G3d_RenderState_;
typedef void (*G3d_CallbackFunction)(struct G3d_RenderState_ *);
typedef struct G3d_NameList_ {
/* 00 */ u8 dummy;
/* 01 */ u8 numElmnts; // number of elements
/* 02 */ u16 size; // size of this NameList in bytes
/* 04 */ u16 dummy2;
/* 06 */ u16 ofsHeader; // offset to the G3d_NameList_Header
/* 08 */ void *entry[1]; // variable size
/* 0c */
} G3d_NameList;
typedef struct G3d_NameList_Header_ {
/* 00 */ u16 element_size;
/* 02 */ u16 data_section_size;
/* 04 */ u8 data[4];
/* 08 */
} G3d_NameList_Header;
typedef struct G3d_InvBindMtx_ {
/* 00 */ Mat4x3p mtx;
/* 30 */ Mat3p unkMtx;
/* 54 */
} G3d_InvBindMtx;
typedef struct G3d_BoneMtxStruct_ {
/* 00 */ u32 flag;
/* 04 */ u8 mUnk_04[0x24];
/* 28 */ Mat3p rot;
/* 58 */ u8 mUnk_58[0xc];
/* 64 */
} G3d_BoneMtxStruct;
typedef enum {
G3D_ANIMBIND_UNK = 0xff,
G3D_ANIMBIND_EXISTS = 0x100,
G3D_ANIMBIND_OFF = 0x200
} G3d_AnimationBinds;
typedef struct G3d_Animation_ {
/* 00 */ u8 mUnk_00[0x10];
/* 10 */ struct G3d_Animation_ *next; // next animation in the list
/* 14 */ u8 mUnk_14[0x5];
/* 19 */ u8 numElmnts; // number of elements in the elementBinds array
/* 1a */ u16 elementBinds[1]; // each bit corresponds to a bone/material and determines whether an animation exists for it
/* 1c */
} G3d_Animation;
// Structure representing the NSBMD model file
typedef struct G3d_Model_ {
/* 00 */ u32 size; // size of the model in bytes
/* 04 */ u32 offSbc; // offset of the SBC commands list
/* 08 */ u32 offMat; // offset of the material list
/* 0c */ u32 offMesh; // offset of the mesh list
/* 10 */ u32 offInvBMtx; // offset of the InvBindMatrix list
/* 14 */ u8 dummy1;
/* 15 */ u8 scalingHandler; // Determines which of the G3d_gScaleHandlers to use for this model
/* 16 */ u8 textureHandler; // Determines which of the G3d_gTextureHandlers to use for this model
/* 17 */ u8 numBones; // number of nodes
/* 18 */ u8 numMat; // number of materials
/* 19 */ u8 numMesh; // number of meshes
/* 1a */ u8 dummy2[2];
/* 1c */ q20 upScale;
/* 20 */ q20 downScale;
/* 24 */ u16 numVertex; // number of vertices
/* 26 */ u16 numPolygon; // number of polygons
/* 28 */ u16 numTriangle; // number of triangles
/* 2a */ u16 numQuad; // number of quads
/* 2c */ q4 boundingBoxMin[3]; // bounding box lower vertex
/* 32 */ q4 boundingBoxMax[3]; // bounding box upper vertex
/* 38 */ u8 dummy3[8];
/* 40 */ G3d_NameList boneList; // bone list
/* 4c */
} G3d_Model;
static inline G3d_NameList *G3d_GetBoneList(const G3d_Model *mdl) {
return mdl != NULL ? (G3d_NameList *) &mdl->boneList : NULL;
}
static inline void *G3d_GetMat(const G3d_Model *mdl) {
return mdl != NULL && mdl->offMat != 0 ? (void *) ((u8 *) mdl + mdl->offMat) : NULL;
}
static inline G3d_NameList *G3d_GetMesh(const G3d_Model *mdl) {
return mdl != NULL && mdl->offMesh != 0 ? (G3d_NameList *) ((u8 *) mdl + mdl->offMesh) : NULL;
}
typedef enum {
G3D_RENDEROBJ_FLAG_STORE = 0x1, // stores results in local cache
G3D_RENDEROBJ_FLAG_SKIP_CMD = 0x2, // skips pushing geometry commands to the FIFO
G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAW = 0x4, // skips the execution of rendering commands
G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALC = 0x8, // skips the execution of matrix calculation commands
G3D_RENDEROBJ_FLAG_ANIMMAP_OUTDATED = 0x10 // set when the animation map arrays in the render object are outdated
} G3d_RenderObjFlag;
// Structure that handles the parameters for drawing a model
typedef struct G3d_RenderObject_ {
/* 00 */ u32 flag; // G3d_RenderObjFlag
/* 04 */ G3d_Model *model;
/* 08 */ G3d_Animation *matAnim; // material animation
/* 0c */ void *mUnk_0c;
/* 10 */ G3d_Animation *jntAnim; // joint animation
/* 14 */ void *mUnk_14;
/* 18 */ G3d_Animation *mUnk_18;
/* 1c */ void *mUnk_1c;
/* 20 */ G3d_CallbackFunction callbackFunction;
/* 24 */ u8 callbackIdx; // index of the callbackFunction in the callback array of G3d_RenderState
/* 25 */ u8 mUnk_25; // related to callback
/* 26 */ u16 dummy_;
/* 28 */ G3d_CallbackFunction callbackInitFunc; // initializes the G3d_RenderState callback array
/* 2c */ void *modelRender; // pointer to the ModelRender that is rendering this model
/* 30 */ u8 *unkCommandsList; // if not null, this command list is used instead of the one in the model
/* 34 */ G3d_BoneMtxStruct *cacheJntAnm;
/* 38 */ void *cacheMatAnm;
/* 3c */ u32 matAnimBindMap[2];
/* 44 */ u32 jntAnimBindMap[2];
/* 4c */ u32 unkAnimBindMap[2];
/* 54 */
} G3d_RenderObject;
typedef struct G3d_Material_List_ {
/* 00 */ u16 texture_pairings_off;
/* 02 */ u16 palette_pairings_off;
/* 04 */ G3d_NameList materials;
/* 10 */
} G3d_Material_List;
typedef struct G3d_Material_ {
/* 00 */ u32 mUnk_00;
/* 04 */ u32 dif_amb;
/* 08 */ u32 spe_emi;
/* 0c */ u32 polygon_attr;
/* 10 */ u32 mUnk_10;
/* 14 */ u32 teximage_params;
/* 18 */ u32 mUnk_18;
/* 1c */ u16 pltt_base;
/* 1e */ u16 flag;
/* 20 */ u16 width;
/* 22 */ u16 height;
/* 24 */ u8 mUnk_24[0x8];
/* 2c */
} G3d_Material;
typedef struct G3d_MaterialAnimation_ {
/* 00 */ u32 flag;
/* 04 */ u32 dif_amb;
/* 08 */ u32 spe_emi;
/* 0c */ u32 polygon_attr;
/* 10 */ u32 teximage_params;
/* 14 */ u32 pltt_base;
/* 18 */ u8 mUnk_18[0x14];
/* 2c */ u16 width;
/* 2e */ u16 height;
/* 30 */ u8 mUnk_30[0x8];
/* 38 */
} G3d_MaterialAnimation;
#define G3D_TEXIMAGE_PARM_TEX_COORD_MODE 0xc0000000
extern void *G3d_gScaleHandlers[3];
extern void *G3d_gSRTTransformHandlers[3];
extern void *G3d_gTextureHandlers[4];
+111
View File
@@ -0,0 +1,111 @@
#pragma once
#include "g3d.h"
extern void PushGeometryCommand(u32 command, void *data, s32 length);
typedef enum {
G3D_SBC_CMD_NOP = 0x0,
G3D_SBC_CMD_END = 0x1,
G3D_SBC_CMD_VIS = 0x2,
G3D_SBC_CMD_007 = 0x7,
G3D_SBC_CMD_008 = 0x8,
G3D_SBC_CMD_SKN = 0x9,
G3D_SBC_CMD_00A = 0xa,
G3D_SBC_CMD_SCL = 0xb,
G3D_SBC_CMD_00C = 0xc,
G3D_SBC_CMD_00D = 0xd
} G3d_SBC_Commands;
typedef enum {
G3D_RENDERST_FLAG_BONE_VISIBLE = 0x1,
G3D_RENDERST_FLAG_MAT_TRANSPARENT = 0x2,
G3D_RENDERST_FLAG_VALID_NODE = 0x4,
G3D_RENDERST_FLAG_VALID_MAT = 0x8,
G3D_RENDERST_FLAG_VALID_BONEMTX = 0x10,
G3D_RENDERST_FLAG_END = 0x20, // set when the end of the SBC command list is reached
G3D_RENDERST_FLAG_SKIP_CALLBACK = 0x40, // skip callback
G3D_RENDERST_FLAG_STORE = 0x80, // stores results in G3d_RenderObject local cache
G3D_RENDERST_FLAG_SKIP_CMD = 0x100, // skips pushing geometry commands to the FIFO
G3D_RENDERST_FLAG_SKIP_SBC_RENDER = 0x200, // skips the execution of rendering commands
G3D_RENDERST_FLAG_SKIP_SBC_MTXCALC = 0x400 // skips the execution of matrix calculation commands
} G3d_RenderStateFlag;
typedef struct G3d_RenderState_ {
/* 00 */ u8 *currentCmd; // current command being processed
/* 04 */ G3d_RenderObject *renderObj; // current render object being processed
/* 08 */ u32 flag; // G3d_RenderStateFlag
/* 0c */ G3d_CallbackFunction callbackFuncs[32]; // callback function for each SBC command
/* 8c */ u8 callbackSegment[32]; // determines at which segment of the SBC command to invoke the callback
/* ac */ u8 currentBoneId;
/* ad */ u8 currentMaterialId;
/* ae */ u8 currentBoneMtxId;
/* af */ u8 dummy;
/* b0 */ G3d_MaterialAnimation *matAnim;
/* b4 */ void *mUnk_19;
/* b8 */ u8 *visibilityPtr; // points to isVisible (0x187)
/* bc */ u32 mUnk_bc[2];
/* c4 */ u32 mUnk_c4[2];
/* cc */ u32 mUnk_cc[2];
/* d4 */ G3d_NameList *boneList;
/* d8 */ const G3d_Material_List *materialList;
/* dc */ G3d_NameList *meshList;
/* e0 */ q20 upScale;
/* e4 */ q20 downScale;
/* e8 */ void *jntScalingHandler; // scaling handler
/* ec */ void *jntSRTHandler; // SRT transform handler
/* f0 */ void *textureHandler; // texture matrix handler
/* f4 */ u8 mUnk_f4[0x93];
/* 187 */ u8 isVisible;
/* 188 */
} G3d_RenderState;
typedef struct UnkStruct_0205ae08_ {
/* 00 */ u8 mUnk_00[0x1400];
/* 1400 */ struct {
Mat4p mtx1;
Mat3p mtx2;
} mUnk_1400[64];
} UnkStruct_0205ae08;
typedef void (*G3d_FuncSbc)(G3d_RenderState *, u32);
extern G3d_FuncSbc G3d_FuncSbcTable[32];
extern G3d_RenderState *G3d_gRenderState;
extern UnkStruct_0205ae08 data_0205ae08;
void G3d_Render(G3d_RenderObject *renderObj);
static inline u32 G3d_FindInBitArray(const u32 *arr, u32 idx) {
return (u32) (arr[idx >> 5] & (1 << (idx & 31)));
}
static inline void G3d_SetBitArray(u32 *arr, u32 idx) {
arr[idx >> 5] |= 1 << (idx & 31);
}
static inline void G3d_SetMtxMode_inline(u32 mode) {
PushGeometryCommand(0x10, &mode, 1);
}
static inline void G3d_RestoreMtx_inline(u32 idx) {
PushGeometryCommand(0x14, &idx, 1);
}
static inline void G3d_MtxMult33_inline(const Mat3p *m) {
PushGeometryCommand(0x1a, (u32 *) m, 9);
}
static inline void G3d_MtxMult43_inline(const Mat4x3p *m) {
PushGeometryCommand(0x19, (u32 *) m, 12);
}
static inline void G3d_MtxMult44_inline(const Mat4p *m) {
PushGeometryCommand(0x18, (u32 *) m, 0x10);
}
static inline void G3d_Scale_inline(q20 x, q20 y, q20 z) {
Vec3p vec;
vec.x = x;
vec.y = y;
vec.z = z;
PushGeometryCommand(0x1b, (u32 *) &vec, 3);
}
+913
View File
@@ -0,0 +1,913 @@
#include "nns/g3d/sbc.h"
typedef struct UnkStruct_027e037c_ {
/* 000 */ unk32 mUnk_000;
/* 004 */ unk32 mUnk_004;
/* 008 */ Mat4p mUnk_008;
/* 048 */ unk32 mUnk_048;
/* 04c */ Mat4x3p mUnk_04c;
/* 07c */ unk32 mUnk_07c;
/* 080 */ unk32 mUnk_080;
/* 084 */ unk32 mUnk_084;
/* 088 */ unk32 mUnk_088;
/* 08c */ unk32 mUnk_08c;
/* 090 */ unk32 mUnk_090;
/* 094 */ unk32 mUnk_094;
/* 098 */ unk32 mUnk_098;
/* 09c */ unk32 mUnk_09c;
/* 0a0 */ unk32 mUnk_0a0;
/* 0a4 */ unk32 mUnk_0a4;
/* 0a8 */ unk32 mUnk_0a8;
/* 0ac */ unk32 mUnk_0ac;
/* 0b0 */ unk32 mUnk_0b0;
/* 0b4 */ unk32 mUnk_0b4;
/* 0b8 */ unk32 mUnk_0b8;
/* 0bc */ Mat3p rotation;
/* 0e0 */ Vec3p translation;
/* 0ec */ Vec3p scale;
/* 0f8 */ unk32 mUnk_0f8;
/* 0fc */ u32 flags;
/* 100 */ Mat4x3p mUnk_100;
/* 130 */ Mat4x3p mUnk_130;
/* 160 */ Mat4x3p mUnk_160;
/* 190 */ Mat4x3p mUnk_190;
/* 1c0 */
} UnkStruct_027e037c;
extern UnkStruct_027e037c data_027e0208;
#include "Unknown/UnkMemFuncs.h"
#include "regs.h"
#define G3D_SBC_CMD_MASK 0x1f
#define G3D_SBC_FLG_MASK 0xe0
#define GX_ST(s, t) ((u32) ((u16) (s16) (s >> 8) | ((u16) (s16) (t >> 8) << 16)))
#define GX_PACK_TEXCOORD_PARAM(s, t) (GX_ST((s), (t)))
extern void FlushGfxQueue();
extern s32 func_02024d64(Mat4p *matrix);
extern Mat4x3p *func_0200c198();
extern Mat4x3p *func_0200c23c();
extern Mat4x3p *func_0200c270();
extern s32 func_02024d94(Mat3p *matrix);
extern void func_02024a68(unk32 param1);
extern void func_02024a30(Mat4x3p *matrix);
extern void func_01ff8dac(const void *param1, u32 param2);
extern void func_02024a84(Mat3p *param1);
extern Mat3p gGeomMatrix;
extern Vec3p gGeomTranslation;
extern void G3d_GetCurrentMtx(Mat4x3p *mtx1, Mat3p *mtx2);
UnkStruct_0205ae08 data_02046c80;
// Renders all SBC commands until the end of the list
void G3d_RenderSBCCommands(G3d_RenderState *renderState) {
do {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*G3d_FuncSbcTable[(*renderState->currentCmd) & G3D_SBC_CMD_MASK])(renderState, (*renderState->currentCmd) &
(u32) G3D_SBC_FLG_MASK);
} while (!(renderState->flag & G3D_RENDERST_FLAG_END));
}
// Initializes the render state and starts rendering the SBC command list
void G3d_InitRenderState(G3d_RenderState *renderState, G3d_RenderObject *renderObj) {
_MI_CpuFill(0, (short *) renderState, sizeof(*renderState));
renderState->mUnk_c4[0] = 1;
renderState->flag = G3D_RENDERST_FLAG_BONE_VISIBLE;
if (renderObj->unkCommandsList) {
renderState->currentCmd = renderObj->unkCommandsList;
} else {
renderState->currentCmd = (u8 *) renderObj->model + renderObj->model->offSbc;
}
renderState->renderObj = renderObj;
renderState->boneList = G3d_GetBoneList(renderObj->model);
renderState->materialList = G3d_GetMat(renderObj->model);
renderState->meshList = G3d_GetMesh(renderObj->model);
renderState->jntScalingHandler = G3d_gScaleHandlers[renderObj->model->scalingHandler];
renderState->jntSRTHandler = G3d_gSRTTransformHandlers[renderObj->model->scalingHandler];
renderState->textureHandler = G3d_gTextureHandlers[renderObj->model->textureHandler];
renderState->upScale = renderObj->model->upScale;
renderState->downScale = renderObj->model->downScale;
if (renderObj->callbackFunction && renderObj->callbackIdx < 32) {
renderState->callbackFuncs[renderObj->callbackIdx] = renderObj->callbackFunction;
renderState->callbackSegment[renderObj->callbackIdx] = renderObj->mUnk_25;
}
if (renderObj->flag & G3D_RENDEROBJ_FLAG_STORE) {
renderState->flag |= G3D_RENDERST_FLAG_STORE;
}
if (renderObj->flag & G3D_RENDEROBJ_FLAG_SKIP_CMD) {
renderState->flag |= G3D_RENDERST_FLAG_SKIP_CMD;
}
if (renderObj->flag & G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAW) {
renderState->flag |= G3D_RENDERST_FLAG_SKIP_SBC_RENDER;
}
if (renderObj->flag & G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALC) {
renderState->flag |= G3D_RENDERST_FLAG_SKIP_SBC_MTXCALC;
}
if (renderObj->callbackInitFunc) {
(*renderObj->callbackInitFunc)(renderState);
}
G3d_RenderSBCCommands(renderState);
renderObj->flag &= ~G3D_RENDEROBJ_FLAG_STORE;
}
// Sets the bits in the anim array according to the map data of the animation
void G3d_SetRenderObjAnimationMap(u32 *arr, const G3d_Animation *anim) {
while (anim) {
int i;
for (i = 0; i < anim->numElmnts; i++) {
if (anim->elementBinds[i] & G3D_ANIMBIND_EXISTS) {
arr[i >> 5] |= 1 << (i & 31);
}
}
anim = anim->next;
}
}
// Renders a model by processing the SBC command list
void G3d_Render(G3d_RenderObject *renderObj) {
if ((renderObj->flag & G3D_RENDEROBJ_FLAG_ANIMMAP_OUTDATED) == G3D_RENDEROBJ_FLAG_ANIMMAP_OUTDATED) {
MI_CpuFill32(0, &renderObj->matAnimBindMap[0], 8);
MI_CpuFill32(0, &renderObj->jntAnimBindMap[0], 8);
MI_CpuFill32(0, &renderObj->unkAnimBindMap[0], 8);
if (renderObj->matAnim) {
G3d_SetRenderObjAnimationMap(&renderObj->matAnimBindMap[0], renderObj->matAnim);
}
if (renderObj->jntAnim) {
G3d_SetRenderObjAnimationMap(&renderObj->jntAnimBindMap[0], renderObj->jntAnim);
}
if (renderObj->mUnk_18) {
G3d_SetRenderObjAnimationMap(&renderObj->unkAnimBindMap[0], renderObj->mUnk_18);
}
renderObj->flag &= ~G3D_RENDEROBJ_FLAG_ANIMMAP_OUTDATED;
}
if (G3d_gRenderState) {
G3d_InitRenderState(G3d_gRenderState, renderObj);
} else {
G3d_RenderState rs;
G3d_gRenderState = &rs;
G3d_InitRenderState(&rs, renderObj);
G3d_gRenderState = NULL;
}
}
// Renders the NOP SBC command
void G3d_SBCRender_NOP(G3d_RenderState *renderState, u32) {
if (renderState->callbackFuncs[G3D_SBC_CMD_NOP]) {
(*renderState->callbackFuncs[G3D_SBC_CMD_NOP])(renderState);
}
renderState->currentCmd++;
}
// Renders the END SBC command
void G3d_SBCRender_END(G3d_RenderState *renderState, u32) {
if (renderState->callbackFuncs[G3D_SBC_CMD_END]) {
(*renderState->callbackFuncs[G3D_SBC_CMD_END])(renderState);
}
renderState->flag |= G3D_RENDERST_FLAG_END;
}
// Renders the SBC command 0x7 (unknown)
void G3d_SBCRender_007(G3d_RenderState *renderState, u32 opCode) {
u32 totalArgs = 2;
// clang-format off
static u32 funcArgs[] = {
0x1b171012, // MTX_POP | MTX_MODE | MTX_LOAD_4x3 | MTX_SCALE
1, // MTX_MODE = Position
2, 0x1000, 0, 0, // Identity MTX
0, 0x1000, 0, 0,
0, 0x1000, 0, 0,
0, 0, 0, 0,
};
// clang-format on
Vec3p *translationVec = (Vec3p *) &funcArgs[12];
Vec3p *scaleVec = (Vec3p *) &funcArgs[15];
Mat4p currentMtx;
u8 callbackSkip;
u32 callbackSegment;
if (renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER) {
if (opCode == 0x40 || opCode == 0x60) {
totalArgs++;
}
if (opCode == 0x20 || opCode == 0x60) {
totalArgs++;
}
renderState->currentCmd += totalArgs;
return;
}
if (opCode == 0x40 || opCode == 0x60) {
totalArgs++;
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD)) {
u32 matrixIndex;
if (opCode == 0x40) {
matrixIndex = *(renderState->currentCmd + 2);
} else {
matrixIndex = *(renderState->currentCmd + 3);
}
PushGeometryCommand(0x14, &matrixIndex, 1); // MTX_RESTORE
}
}
if (renderState->callbackFuncs[G3D_SBC_CMD_007]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_007];
} else {
callbackSegment = 0;
}
if (callbackSegment == 1) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_007])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_007]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_007];
} else {
callbackSegment = 0;
}
callbackSkip = (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD) && !callbackSkip) {
FlushGfxQueue();
REG_GFX_FIFO = 0x151110; // MTX_MODE | MTX_PUSH | MTX_IDENTITY
REG_GFX_FIFO = 0; // MTX_MODE = Projection
REG_GFX_FIFO = 0;
while (func_02024d64(&currentMtx))
;
if (data_027e0208.flags & 1) {
const Mat4x3p *mtx1 = func_0200c23c();
Mat4p mtx2;
Mat4x3p_CopyToMat4p(mtx1, &mtx2);
Mat4p_Multiply(&currentMtx, &mtx2, &currentMtx);
} else if (data_027e0208.flags & 2) {
const Mat4x3p *mtx1 = &data_027e0208.mUnk_04c;
Mat4p mtx2;
Mat4x3p_CopyToMat4p(mtx1, &mtx2);
Mat4p_Multiply(&currentMtx, &mtx2, &currentMtx);
}
translationVec->x = currentMtx.wColumn.x;
translationVec->y = currentMtx.wColumn.y;
translationVec->z = currentMtx.wColumn.z;
scaleVec->x = Vec3p_Length((Vec3p *) &currentMtx.xColumn);
scaleVec->y = Vec3p_Length((Vec3p *) &currentMtx.yColumn);
scaleVec->z = Vec3p_Length((Vec3p *) &currentMtx.zColumn);
if (data_027e0208.flags & 1) {
REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3
Stream32(&funcArgs[1], &REG_GFX_FIFO, 8); // MTX_MODE = Position
Stream32(func_0200c270(), &REG_GFX_FIFO, 0x30);
REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE
Stream32(&funcArgs[3], &REG_GFX_FIFO, 0x3c); // Identity MTX
} else if (data_027e0208.flags & 2) {
REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3
Stream32(&funcArgs[1], &REG_GFX_FIFO, 8); // MTX_MODE = Position
Stream32(func_0200c198(), &REG_GFX_FIFO, 0x30);
REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE
Stream32(&funcArgs[3], &REG_GFX_FIFO, 0x3c); // Identity MTX
} else {
Stream32(&funcArgs, &REG_GFX_FIFO, 0x48); // MTX_POP | MTX_MODE | MTX_LOAD_4x3 | MTX_SCALE
}
}
if (callbackSegment == 3) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_007])(renderState);
callbackSkip = renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK;
} else {
callbackSkip = 0;
}
if (opCode == 0x20 || opCode == 0x60) {
totalArgs++;
if (!callbackSkip) {
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD)) {
u32 matrixIndex = *(renderState->currentCmd + 2);
PushGeometryCommand(0x13, &matrixIndex, 1); // MTX_STORE
}
}
}
renderState->currentCmd += totalArgs;
}
// Renders the SBC command 0x8 (unknown)
void G3d_SBCRender_008(G3d_RenderState *renderState, u32 opCode) {
u32 totalArgs = 2;
Mat4p currentMtx;
// clang-format off
static u32 funcArgs[] = {
0x1b171012, // MTX_POP | MTX_MODE | MTX_LOAD_4x3 | MTX_SCALE
1, // MTX_MODE = Position
2, 0x1000, 0, 0, // Identity MTX
0, 0x1000, 0, 0,
0, 0x1000, 0, 0,
0, 0, 0, 0,
};
// clang-format on
Vec3p *translationVec = (Vec3p *) &funcArgs[12];
Vec3p *scaleVec = (Vec3p *) &funcArgs[15];
Mat4x3p *mtx = (Mat4x3p *) &funcArgs[3];
u8 callbackSkip;
u32 callbackSegment;
if (renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER) {
if (opCode == 0x40 || opCode == 0x60) {
totalArgs++;
}
if (opCode == 0x20 || opCode == 0x60) {
totalArgs++;
}
renderState->currentCmd += totalArgs;
return;
}
if (opCode == 0x40 || opCode == 0x60) {
totalArgs++;
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD)) {
u32 matrixIndex;
if (opCode == 0x40) {
matrixIndex = *(renderState->currentCmd + 2);
} else {
matrixIndex = *(renderState->currentCmd + 3);
}
PushGeometryCommand(0x14, &matrixIndex, 1);
}
}
if (renderState->callbackFuncs[G3D_SBC_CMD_008]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_008];
} else {
callbackSegment = 0;
}
if (callbackSegment == 1) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_008])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_008]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_008];
} else {
callbackSegment = 0;
}
callbackSkip = (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD) && !callbackSkip) {
FlushGfxQueue();
REG_GFX_FIFO = 0x151110; // MTX_MODE | MTX_PUSH | MTX_IDENTITY
REG_GFX_FIFO = 0; // MTX_MODE = Projection
REG_GFX_FIFO = 0;
while (func_02024d64(&currentMtx))
;
if (data_027e0208.flags & 1) {
const Mat4x3p *mtx1 = func_0200c23c();
Mat4p mtx2;
Mat4x3p_CopyToMat4p(mtx1, &mtx2);
Mat4p_Multiply(&currentMtx, &mtx2, &currentMtx);
} else if (data_027e0208.flags & 2) {
const Mat4x3p *mtx1 = &data_027e0208.mUnk_04c;
Mat4p mtx2;
Mat4x3p_CopyToMat4p(mtx1, &mtx2);
Mat4p_Multiply(&currentMtx, &mtx2, &currentMtx);
}
translationVec->x = currentMtx.wColumn.x;
translationVec->y = currentMtx.wColumn.y;
translationVec->z = currentMtx.wColumn.z;
scaleVec->x = Vec3p_Length((Vec3p *) &currentMtx.xColumn);
scaleVec->y = Vec3p_Length((Vec3p *) &currentMtx.yColumn);
scaleVec->z = Vec3p_Length((Vec3p *) &currentMtx.zColumn);
if (currentMtx.yColumn.y != 0 || currentMtx.yColumn.z != 0) {
Vec3p_Normalize((Vec3p *) &currentMtx.yColumn, (Vec3p *) &mtx->yColumn);
mtx->zColumn.y = -mtx->yColumn.z;
mtx->zColumn.z = mtx->yColumn.y;
} else {
Vec3p_Normalize((Vec3p *) &currentMtx.zColumn, (Vec3p *) &mtx->zColumn);
mtx->yColumn.z = -mtx->zColumn.y;
mtx->yColumn.y = mtx->zColumn.z;
}
if (data_027e0208.flags & 1) {
REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3
Stream32(&funcArgs[1], &REG_GFX_FIFO, 8); // MTX_MODE = Position
Stream32(func_0200c270(), &REG_GFX_FIFO, 0x30);
REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE
Stream32(&funcArgs[3], &REG_GFX_FIFO, 0x3c); // Identity MTX
} else if (data_027e0208.flags & 2) {
REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3
Stream32(&funcArgs[1], &REG_GFX_FIFO, 8); // MTX_MODE = Position
Stream32(func_0200c198(), &REG_GFX_FIFO, 0x30);
REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE
Stream32(&funcArgs[3], &REG_GFX_FIFO, 0x3c); // Identity MTX
} else {
Stream32(&funcArgs, &REG_GFX_FIFO, 0x48); // MTX_POP | MTX_MODE | MTX_LOAD_4x3 | MTX_SCALE
}
}
if (callbackSegment == 3) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_008])(renderState);
callbackSkip = renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK;
} else {
callbackSkip = 0;
}
if (opCode == 0x20 || opCode == 0x60) {
totalArgs++;
if (!callbackSkip) {
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD)) {
u32 matrixIndex = *(renderState->currentCmd + 2);
PushGeometryCommand(0x13, &matrixIndex, 1); // MTX_STORE
}
}
}
renderState->currentCmd += totalArgs;
}
// Renders the Skinning Equation SBC command
void G3d_SBCRender_SKN(G3d_RenderState *renderState, u32) {
G3d_InvBindMtx *invBMtx =
(G3d_InvBindMtx *) ((u8 *) renderState->renderObj->model + renderState->renderObj->model->offInvBMtx);
u32 numTerms = *(renderState->currentCmd + 2);
s64 weight = 0;
u8 *termPtr = renderState->currentCmd + 3;
u32 i;
struct {
Mat4x3p mtx1;
Mat3p mtx2;
} mtxStruct;
Mat4p *mat4x;
Mat3p *mat3x;
_MI_CpuFill(0, (unk16 *) &mtxStruct, sizeof(mtxStruct));
FlushGfxQueue();
GFX_FIFO_MTX_MODE = 0; // Projection
GFX_FIFO_MTX_STORE = 1;
GFX_FIFO_MTX_IDENTITY = 0;
GFX_FIFO_MTX_MODE = 2; // Position + Vector
for (i = 0; i < numTerms; i++) {
u32 jntIndex = *(termPtr + 1);
u32 unk = G3d_FindInBitArray(&renderState->mUnk_cc[0], jntIndex);
mat4x = &data_02046c80.mUnk_1400[jntIndex].mtx1;
if (!unk) {
G3d_SetBitArray(&renderState->mUnk_cc[0], jntIndex);
GFX_FIFO_MTX_RESTORE = (*termPtr);
GFX_FIFO_MTX_MODE = 1; // Position
func_02024a68(&invBMtx[jntIndex].mtx);
}
if (i != 0) {
mtxStruct.mtx2.xColumn.x += (weight * mat3x->xColumn.x) >> 0xc;
mtxStruct.mtx2.xColumn.y += (weight * mat3x->xColumn.y) >> 0xc;
mtxStruct.mtx2.xColumn.z += (weight * mat3x->xColumn.z) >> 0xc;
mtxStruct.mtx2.yColumn.x += (weight * mat3x->yColumn.x) >> 0xc;
mtxStruct.mtx2.yColumn.y += (weight * mat3x->yColumn.y) >> 0xc;
mtxStruct.mtx2.yColumn.z += (weight * mat3x->yColumn.z) >> 0xc;
mtxStruct.mtx2.zColumn.x += (weight * mat3x->zColumn.x) >> 0xc;
mtxStruct.mtx2.zColumn.y += (weight * mat3x->zColumn.y) >> 0xc;
mtxStruct.mtx2.zColumn.z += (weight * mat3x->zColumn.z) >> 0xc;
}
if (!unk) {
while (func_02024d64(mat4x))
;
GFX_FIFO_MTX_MODE = 2; // Position + Vector
func_02024a84(&invBMtx[jntIndex].unkMtx);
}
weight = *(termPtr + 2) << 4;
mtxStruct.mtx1.xColumn.x += (weight * mat4x->xColumn.x) >> 0xc;
mtxStruct.mtx1.xColumn.y += (weight * mat4x->xColumn.y) >> 0xc;
mtxStruct.mtx1.xColumn.z += (weight * mat4x->xColumn.z) >> 0xc;
mtxStruct.mtx1.yColumn.x += (weight * mat4x->yColumn.x) >> 0xc;
mtxStruct.mtx1.yColumn.y += (weight * mat4x->yColumn.y) >> 0xc;
mtxStruct.mtx1.yColumn.z += (weight * mat4x->yColumn.z) >> 0xc;
mtxStruct.mtx1.zColumn.x += (weight * mat4x->zColumn.x) >> 0xc;
mtxStruct.mtx1.zColumn.y += (weight * mat4x->zColumn.y) >> 0xc;
mtxStruct.mtx1.zColumn.z += (weight * mat4x->zColumn.z) >> 0xc;
mtxStruct.mtx1.wColumn.x += (weight * mat4x->wColumn.x) >> 0xc;
mtxStruct.mtx1.wColumn.y += (weight * mat4x->wColumn.y) >> 0xc;
mtxStruct.mtx1.wColumn.z += (weight * mat4x->wColumn.z) >> 0xc;
termPtr += 3;
mat3x = &data_02046c80.mUnk_1400[jntIndex].mtx2;
if (!unk) {
while (func_02024d94(mat3x))
;
}
}
mtxStruct.mtx2.xColumn.x += (weight * mat3x->xColumn.x) >> 0xc;
mtxStruct.mtx2.xColumn.y += (weight * mat3x->xColumn.y) >> 0xc;
mtxStruct.mtx2.xColumn.z += (weight * mat3x->xColumn.z) >> 0xc;
mtxStruct.mtx2.yColumn.x += (weight * mat3x->yColumn.x) >> 0xc;
mtxStruct.mtx2.yColumn.y += (weight * mat3x->yColumn.y) >> 0xc;
mtxStruct.mtx2.yColumn.z += (weight * mat3x->yColumn.z) >> 0xc;
mtxStruct.mtx2.zColumn.x += (weight * mat3x->zColumn.x) >> 0xc;
mtxStruct.mtx2.zColumn.y += (weight * mat3x->zColumn.y) >> 0xc;
mtxStruct.mtx2.zColumn.z += (weight * mat3x->zColumn.z) >> 0xc;
func_02024a30((const Mat4x3p *) &mtxStruct.mtx2);
GFX_FIFO_MTX_MODE = 1; // Position
func_02024a30(&mtxStruct.mtx1);
GFX_FIFO_MTX_MODE = 0; // Projection
GFX_FIFO_MTX_RESTORE = 1;
GFX_FIFO_MTX_MODE = 2; // Position + Vector
GFX_FIFO_MTX_STORE = (*(renderState->currentCmd + 1));
renderState->currentCmd += 3 + *(renderState->currentCmd + 2) * 3;
}
// Renders the SBC command 0xA (unknown)
void G3d_SBCRender_00A(G3d_RenderState *renderState, u32) {
u32 callbackSkip;
u32 callbackSegment;
if (renderState->callbackFuncs[G3D_SBC_CMD_00A]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00A];
} else {
callbackSegment = 0;
}
if (callbackSegment == 1) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00A])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_00A]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00A];
} else {
callbackSegment = 0;
}
callbackSkip = (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD) && !callbackSkip) {
u32 int1;
u32 int2;
int1 = (u32) ((*(renderState->currentCmd + 1)) | (*(renderState->currentCmd + 2) << 8) |
(*(renderState->currentCmd + 3) << 16) | (*(renderState->currentCmd + 4) << 24));
int2 = (u32) ((*(renderState->currentCmd + 5) << 0) | (*(renderState->currentCmd + 6) << 8) |
(*(renderState->currentCmd + 7) << 16) | (*(renderState->currentCmd + 8) << 24));
func_01ff8dac(renderState->currentCmd + int1, int2);
}
if (callbackSegment == 3) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00A])(renderState);
callbackSkip = renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK;
} else {
callbackSkip = 0;
}
renderState->currentCmd += 1 + sizeof(u32) + sizeof(u32);
}
// Renders the Scale SBC command
void G3d_SBCRender_SCL(G3d_RenderState *renderState, u32 opCode) {
Vec3p scaleVector;
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_CMD) && !(renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER)) {
if (opCode == 0) {
scaleVector.x = scaleVector.y = scaleVector.z = renderState->upScale;
} else {
scaleVector.x = scaleVector.y = scaleVector.z = renderState->downScale;
}
PushGeometryCommand(0x1b, &scaleVector.x, 3); // MTX_SCALE
}
renderState->currentCmd += 1;
}
// Renders the SBC command 0xC (unknown)
void G3d_SBCRender_00C(G3d_RenderState *renderState, u32) {
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER) && (renderState->flag & G3D_RENDERST_FLAG_BONE_VISIBLE)) {
u32 callbackSkip;
u32 callbackSegment;
u32 mtxModeTex;
if ((renderState->matAnim->teximage_params & G3D_TEXIMAGE_PARM_TEX_COORD_MODE) != 0x80000000) { // Normal source
static u32 funcArgs[] = {0x2a, 0};
renderState->matAnim->teximage_params &= ~G3D_TEXIMAGE_PARM_TEX_COORD_MODE;
renderState->matAnim->teximage_params |= 0x80000000; // Normal source
funcArgs[1] = renderState->matAnim->teximage_params;
PushGeometryCommand(funcArgs[0], &funcArgs[3], 1);
}
mtxModeTex = 3;
PushGeometryCommand(0x10, &mtxModeTex, 1);
if (renderState->callbackFuncs[G3D_SBC_CMD_00C]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00C];
} else {
callbackSegment = 0;
}
if (callbackSegment == 1) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00C])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_00C]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00C];
} else {
callbackSegment = 0;
}
callbackSkip = (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
s32 width = renderState->matAnim->width;
s32 height = renderState->matAnim->height;
Vec3p vec;
u32 tmp;
G3d_Scale_inline(width << 15, -height << 15, INT_TO_Q20(1) << 4);
tmp = GX_PACK_TEXCOORD_PARAM(width << 11, height << 11);
PushGeometryCommand(0x22, (u32 *) &tmp, 1); // TEXCOORD
}
if (callbackSegment == 2) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00C])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_00C]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00C];
} else {
callbackSegment = 0;
}
callbackSkip = (u32) (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
u32 matIndex = *(renderState->currentCmd + 1);
G3d_Material_List *materialList = renderState->materialList;
if (materialList != NULL) {
G3d_NameList_Header *h = (G3d_NameList_Header *) ((u8 *) &materialList->materials);
if (h != NULL) {
int numMaterials = *((u8 *) &materialList->materials + 1);
if (numMaterials < matIndex) {
u32 *materialOffset = (u32 *) (&h->data[0] + h->element_size * matIndex);
const G3d_Material *mat = (G3d_Material *) ((u8 *) materialList + *materialOffset);
if (mat->flag & 0x2000) {
const u8 *p = (const u8 *) mat + sizeof(G3d_Material);
if (!(mat->flag & 2)) {
p += 8;
}
if (!(mat->flag & 4)) {
p += 4;
}
if (!(mat->flag & 8)) {
p += 8;
}
G3d_MtxMult44_inline((const Mat4p *) p); // MTX_MULT_4x4
}
}
}
}
}
if (callbackSegment == 3) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00C])(renderState);
callbackSkip = renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK;
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
Mat3p m;
G3d_SetMtxMode_inline(2); // MTX_MODE = Position + Vector
G3d_GetCurrentMtx(0, &m);
G3d_SetMtxMode_inline(3); // MTX_MODE = Texture
if (data_027e0208.flags & 1) {
G3d_MtxMult33_inline((const Mat3p *) &data_027e0208.mUnk_04c); // MTX_MULT_3x3
G3d_MtxMult33_inline(&gGeomMatrix); // MTX_MULT_3x3
G3d_MtxMult33_inline(&m); // MTX_MULT_3x3
} else if (data_027e0208.flags & 2) {
G3d_MtxMult33_inline((const Mat3p *) &data_027e0208.mUnk_04c); // MTX_MULT_3x3
G3d_MtxMult33_inline(&m); // MTX_MULT_3x3
} else {
G3d_MtxMult33_inline(&m); // MTX_MULT_3x3
}
}
G3d_SetMtxMode_inline(2); // MTX_MODE = Position + Vector
}
renderState->currentCmd += 3;
}
// Renders the SBC command 0xD (unknown)
void G3d_SBCRender_00D(G3d_RenderState *renderState, u32) {
if (!(renderState->flag & G3D_RENDERST_FLAG_SKIP_SBC_RENDER) && (renderState->flag & G3D_RENDERST_FLAG_BONE_VISIBLE)) {
u32 callbackSkip;
u32 callbackSegment;
u32 num;
Mat4x3p m;
G3d_GetCurrentMtx(&m, 0);
num = 30;
PushGeometryCommand(0x13, &num, 1); // MTX_STORE
if ((renderState->matAnim->teximage_params & 0xc0000000) != (3 << 30)) {
static u32 cmd[] = {0x2a, 0};
renderState->matAnim->teximage_params &= ~0xc0000000;
renderState->matAnim->teximage_params |= 3 << 30;
cmd[1] = renderState->matAnim->teximage_params;
PushGeometryCommand(cmd[0], &cmd[1], 1);
}
if (renderState->callbackFuncs[G3D_SBC_CMD_00D]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00D];
} else {
callbackSegment = 0;
}
if (callbackSegment == 1) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00D])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_00D]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00D];
} else {
callbackSegment = 0;
}
callbackSkip = (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
s32 w, h;
w = (s32) renderState->matAnim->width;
h = (s32) renderState->matAnim->height;
{
static Mat4p mtx = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10000, 0, 0, 0, 0, 0x10000};
mtx.xColumn.x = w << 15;
mtx.yColumn.y = -h << 15;
mtx.wColumn.x = w << 15;
mtx.wColumn.y = h << 15;
PushGeometryCommand(0x16, &mtx, 0x10);
}
}
if (callbackSegment == 2) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00D])(renderState);
if (renderState->callbackFuncs[G3D_SBC_CMD_00D]) {
callbackSegment = renderState->callbackSegment[G3D_SBC_CMD_00D];
} else {
callbackSegment = 0;
}
callbackSkip = (u32) (renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK);
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
u32 idxMat = *(renderState->currentCmd + 1);
u32 matIndex = *(renderState->currentCmd + 1);
G3d_NameList_Header *h = (G3d_NameList_Header *) ((u8 *) &renderState->materialList->materials +
renderState->materialList->materials.ofsHeader);
u32 *materialOffset = (u32 *) (&h->data[0] + h->element_size * matIndex);
const G3d_Material *mat = (G3d_Material *) ((u8 *) renderState->materialList + *materialOffset);
if (mat->flag & 0x2000) {
const Mat4p *effect_mtx;
const u8 *p = (const u8 *) mat + sizeof(G3d_Material);
if (!(mat->flag & 2)) {
p += 8;
}
if (!(mat->flag & 4)) {
p += 4;
}
if (!(mat->flag & 8)) {
p += 8;
}
G3d_MtxMult44_inline((const Mat4p *) p); // MTX_MULT_4x4
}
}
if (callbackSegment == 3) {
renderState->flag &= ~G3D_RENDERST_FLAG_SKIP_CALLBACK;
(*renderState->callbackFuncs[G3D_SBC_CMD_00D])(renderState);
callbackSkip = renderState->flag & G3D_RENDERST_FLAG_SKIP_CALLBACK;
} else {
callbackSkip = 0;
}
if (!callbackSkip) {
Mat4p mtx;
u32 tmp;
if (data_027e0208.flags & 1) {
PushGeometryCommand(0x1c, &gGeomTranslation, 3); // MTX_TRANS
G3d_MtxMult33_inline(&gGeomMatrix); // MTX_MULT_3x3
G3d_MtxMult43_inline(&m); // MTX_MULT_4x3
} else if (data_027e0208.flags & 2) {
G3d_MtxMult43_inline(&m);
} else {
G3d_MtxMult43_inline(func_0200c198());
G3d_MtxMult43_inline(&m);
}
{
FlushGfxQueue();
GFX_FIFO_MTX_MODE = 0; // Projection
GFX_FIFO_MTX_PUSH = 0;
GFX_FIFO_MTX_IDENTITY = 0;
while (func_02024d64(&mtx))
;
GFX_FIFO_MTX_POP = 1;
GFX_FIFO_MTX_MODE = 3; // Texture
}
PushGeometryCommand(0x16, &mtx, 0x10);
tmp = GX_PACK_TEXCOORD_PARAM((q20) (mtx.wColumn.x >> 4), (q20) (mtx.wColumn.y >> 4));
PushGeometryCommand(0x22, (u32 *) &tmp, 1); // TEXCOORD
}
G3d_SetMtxMode_inline(2); // MTX_MODE = Position + Vector
G3d_RestoreMtx_inline(30);
}
renderState->currentCmd += 3;
}
+1 -1
View File
@@ -6,9 +6,9 @@
#include "Unknown/UnkStruct_0204af1c.hpp"
#include "Unknown/UnkStruct_027e0954.hpp"
#include "Unknown/UnkStruct_ov000_020b5214.hpp"
#include "nitro/button.h"
#include "regs.h"
#include "versions.h"
#include <nitro/button.h>
#include <string.h>
+1 -1
View File
@@ -16,8 +16,8 @@
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
#include "Unknown/UnkStruct_ov000_020b51c0.hpp"
#include "nitro/math.h"
#include "versions.h"
#include <nitro/math.h>
struct UnkStruct_02186240 {
/* 0000 */ unk8 mUnk_0000[0x3F68];
@@ -70,7 +70,6 @@ extern q4 data_0203f964[];
extern q4 data_0203feb0[];
extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *);
extern "C" void func_01ff9638(void *, s16);
extern "C" q20 func_01ffb800(void *);
extern "C" void func_01ff9770(void *);
extern "C" void func_ov000_02072fd0(void *);
extern unk32 data_ov000_020b3000;
@@ -219,7 +218,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1
this->mUnk_9C.z = 0;
func_01ff9638(&this->mUnk_9C, temp_r8_2);
q20 temp_r0_11 = func_01ffb800(&this->mUnk_9C);
q20 temp_r0_11 = Vec3p_Length(&this->mUnk_9C);
if (temp_r0_11 > 0x800) {
if ((((temp_r0_11 - 0x800) / 10) + ((temp_r0_11 - 0x800) >> 0x1F)) <= 0) {
this->mUnk_9C.x = 0;
+4 -4
View File
@@ -13,7 +13,7 @@
extern "C" void func_020196fc();
extern "C" unk32 CARD_func_0033();
extern "C" void CARD_func_0034();
extern "C" void func_01ff8d38();
extern "C" void FlushGfxQueue();
extern "C" void func_020132c8();
extern "C" void func_020132dc();
extern "C" void func_02013354();
@@ -105,7 +105,7 @@ ARM void Game::Run() {
Mat3p_InitIdentity(&data_027e02c4);
data_027e0208.mUnk_0FC = 0;
func_01ff8d38();
FlushGfxQueue();
this->mpCurrentGameMode->vfunc_18();
data_0204a110.func_020194dc();
@@ -114,7 +114,7 @@ ARM void Game::Run() {
}
#if IS_JP
func_01ff8d38();
FlushGfxQueue();
#endif
if (data_0204e64c.mUnk_00.mUnk_0B == 0) {
@@ -122,7 +122,7 @@ ARM void Game::Run() {
}
this->mpCurrentGameMode->vfunc_1C();
func_01ff8d38();
FlushGfxQueue();
data_0204a110.func_02019454();
this->mpCurrentGameMode->vfunc_20();
+1 -1
View File
@@ -1,6 +1,6 @@
#include "System/OverlayManager.hpp"
#include "global.h"
#include "nitro/Overlay.h"
#include <nitro/Overlay.h>
struct UnkStruct_020ee698 {
/* 00 */ unk8 mUnk_00[0x2C];
+19 -2
View File
@@ -79,7 +79,18 @@ def NitroLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]:
"lib": lib_name,
"mw_version": "dsi/1.2p1",
"src_dir": "libs/nitro/src",
"cflags": config.cflags_base,
"cflags": [*config.cflags_base, "-lang c"],
"objects": objects,
}
# Helper function for NNS libraries
def NNSLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]:
return {
"lib": lib_name,
"mw_version": "dsi/1.2p1",
"src_dir": "libs/nns/src",
"cflags": [*config.cflags_base, "-lang c"],
"objects": objects,
}
@@ -1337,9 +1348,15 @@ config.libs = [
LibCPP(
"libcpp",
[
Object("__register_global_object.c")
Object("__register_global_object.c"),
]
),
NNSLib(
"nns/g3d",
[
Object("g3d/sbc.c"),
]
)
]
+2
View File
@@ -24,6 +24,8 @@ CXX_FLAGS = [
'-Ilibs/c/include',
'-Ilibs/cpp/include',
'-Ilibs/runtime/include',
'-Ilibs/nitro/include',
'-Ilibs/nns/include',
f'-DVERSION={args.version}',
'-D__MWERKS__',
]