diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 2176ff50..c9bb79df 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -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 diff --git a/config/eur/arm9/dtcm/symbols.txt b/config/eur/arm9/dtcm/symbols.txt index 1e2a81cd..ee71e261 100644 --- a/config/eur/arm9/dtcm/symbols.txt +++ b/config/eur/arm9/dtcm/symbols.txt @@ -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 diff --git a/config/eur/arm9/itcm/relocs.txt b/config/eur/arm9/itcm/relocs.txt index a18b1ac9..b0885908 100644 --- a/config/eur/arm9/itcm/relocs.txt +++ b/config/eur/arm9/itcm/relocs.txt @@ -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 diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 86f66af6..8db02547 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -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 diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 22e0dfaf..646ff1ac 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov021/relocs.txt b/config/eur/arm9/overlays/ov021/relocs.txt index e647237f..bd836212 100644 --- a/config/eur/arm9/overlays/ov021/relocs.txt +++ b/config/eur/arm9/overlays/ov021/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov023/relocs.txt b/config/eur/arm9/overlays/ov023/relocs.txt index e508539c..08128be0 100644 --- a/config/eur/arm9/overlays/ov023/relocs.txt +++ b/config/eur/arm9/overlays/ov023/relocs.txt @@ -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 diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 4f4059e3..7c34877c 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov038/relocs.txt b/config/eur/arm9/overlays/ov038/relocs.txt index bd95a21f..9cfbc7a3 100644 --- a/config/eur/arm9/overlays/ov038/relocs.txt +++ b/config/eur/arm9/overlays/ov038/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov043/relocs.txt b/config/eur/arm9/overlays/ov043/relocs.txt index 77d5670f..4a9a518f 100644 --- a/config/eur/arm9/overlays/ov043/relocs.txt +++ b/config/eur/arm9/overlays/ov043/relocs.txt @@ -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 diff --git a/config/eur/arm9/overlays/ov046/relocs.txt b/config/eur/arm9/overlays/ov046/relocs.txt index 519a1f3f..601ab6e7 100644 --- a/config/eur/arm9/overlays/ov046/relocs.txt +++ b/config/eur/arm9/overlays/ov046/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov074/relocs.txt b/config/eur/arm9/overlays/ov074/relocs.txt index c961a7c8..62a07933 100644 --- a/config/eur/arm9/overlays/ov074/relocs.txt +++ b/config/eur/arm9/overlays/ov074/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov078/relocs.txt b/config/eur/arm9/overlays/ov078/relocs.txt index 9b3cfd2b..d92e215e 100644 --- a/config/eur/arm9/overlays/ov078/relocs.txt +++ b/config/eur/arm9/overlays/ov078/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov088/relocs.txt b/config/eur/arm9/overlays/ov088/relocs.txt index 2fc4f280..eb9edce3 100644 --- a/config/eur/arm9/overlays/ov088/relocs.txt +++ b/config/eur/arm9/overlays/ov088/relocs.txt @@ -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) diff --git a/config/eur/arm9/overlays/ov090/relocs.txt b/config/eur/arm9/overlays/ov090/relocs.txt index bbb1934c..5627b90d 100644 --- a/config/eur/arm9/overlays/ov090/relocs.txt +++ b/config/eur/arm9/overlays/ov090/relocs.txt @@ -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 diff --git a/config/eur/arm9/overlays/ov095/relocs.txt b/config/eur/arm9/overlays/ov095/relocs.txt index 89584e7d..61955733 100644 --- a/config/eur/arm9/overlays/ov095/relocs.txt +++ b/config/eur/arm9/overlays/ov095/relocs.txt @@ -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) diff --git a/config/eur/arm9/relocs.txt b/config/eur/arm9/relocs.txt index 47e5fd5c..d8504c5d 100644 --- a/config/eur/arm9/relocs.txt +++ b/config/eur/arm9/relocs.txt @@ -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 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index e07d87d1..7d7c2f00 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -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 diff --git a/config/jp/arm9/delinks.txt b/config/jp/arm9/delinks.txt index 5840f124..53f95b86 100644 --- a/config/jp/arm9/delinks.txt +++ b/config/jp/arm9/delinks.txt @@ -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 diff --git a/config/jp/arm9/dtcm/symbols.txt b/config/jp/arm9/dtcm/symbols.txt index 1e2a81cd..ee71e261 100644 --- a/config/jp/arm9/dtcm/symbols.txt +++ b/config/jp/arm9/dtcm/symbols.txt @@ -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 diff --git a/config/jp/arm9/itcm/relocs.txt b/config/jp/arm9/itcm/relocs.txt index d08c6bec..1bca6bfd 100644 --- a/config/jp/arm9/itcm/relocs.txt +++ b/config/jp/arm9/itcm/relocs.txt @@ -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 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 86f66af6..8db02547 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -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 diff --git a/config/jp/arm9/overlays/ov000/relocs.txt b/config/jp/arm9/overlays/ov000/relocs.txt index 4da99c6b..03d26ad8 100644 --- a/config/jp/arm9/overlays/ov000/relocs.txt +++ b/config/jp/arm9/overlays/ov000/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov021/relocs.txt b/config/jp/arm9/overlays/ov021/relocs.txt index 06e697cc..de37534a 100644 --- a/config/jp/arm9/overlays/ov021/relocs.txt +++ b/config/jp/arm9/overlays/ov021/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov023/relocs.txt b/config/jp/arm9/overlays/ov023/relocs.txt index e6c29e65..e929f635 100644 --- a/config/jp/arm9/overlays/ov023/relocs.txt +++ b/config/jp/arm9/overlays/ov023/relocs.txt @@ -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 diff --git a/config/jp/arm9/overlays/ov031/relocs.txt b/config/jp/arm9/overlays/ov031/relocs.txt index 4115ab02..84dc1cde 100644 --- a/config/jp/arm9/overlays/ov031/relocs.txt +++ b/config/jp/arm9/overlays/ov031/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov038/relocs.txt b/config/jp/arm9/overlays/ov038/relocs.txt index 0389ffb0..50f62742 100644 --- a/config/jp/arm9/overlays/ov038/relocs.txt +++ b/config/jp/arm9/overlays/ov038/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov043/relocs.txt b/config/jp/arm9/overlays/ov043/relocs.txt index 9050f40d..294c9457 100644 --- a/config/jp/arm9/overlays/ov043/relocs.txt +++ b/config/jp/arm9/overlays/ov043/relocs.txt @@ -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 diff --git a/config/jp/arm9/overlays/ov046/relocs.txt b/config/jp/arm9/overlays/ov046/relocs.txt index c8cba406..a49a7c9c 100644 --- a/config/jp/arm9/overlays/ov046/relocs.txt +++ b/config/jp/arm9/overlays/ov046/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov074/relocs.txt b/config/jp/arm9/overlays/ov074/relocs.txt index 9a97f19a..f99c8638 100644 --- a/config/jp/arm9/overlays/ov074/relocs.txt +++ b/config/jp/arm9/overlays/ov074/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov078/relocs.txt b/config/jp/arm9/overlays/ov078/relocs.txt index 02c44bc3..06c49e89 100644 --- a/config/jp/arm9/overlays/ov078/relocs.txt +++ b/config/jp/arm9/overlays/ov078/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov088/relocs.txt b/config/jp/arm9/overlays/ov088/relocs.txt index 7c7627d4..a6a0ed52 100644 --- a/config/jp/arm9/overlays/ov088/relocs.txt +++ b/config/jp/arm9/overlays/ov088/relocs.txt @@ -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) diff --git a/config/jp/arm9/overlays/ov090/relocs.txt b/config/jp/arm9/overlays/ov090/relocs.txt index cfd66a6b..2aba5cd6 100644 --- a/config/jp/arm9/overlays/ov090/relocs.txt +++ b/config/jp/arm9/overlays/ov090/relocs.txt @@ -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 diff --git a/config/jp/arm9/overlays/ov095/relocs.txt b/config/jp/arm9/overlays/ov095/relocs.txt index 2fef5c05..2e940bd1 100644 --- a/config/jp/arm9/overlays/ov095/relocs.txt +++ b/config/jp/arm9/overlays/ov095/relocs.txt @@ -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) diff --git a/config/jp/arm9/relocs.txt b/config/jp/arm9/relocs.txt index 2480b335..43cd5d4b 100644 --- a/config/jp/arm9/relocs.txt +++ b/config/jp/arm9/relocs.txt @@ -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 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 325b9dfd..8ab68965 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -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 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 05e5b3d8..5ac5e4c0 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -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 // some functions use thumb mode on the japanese version (only in overlay 40?) #if IS_JP diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 4c633df8..16d96c46 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -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 extern const unk16 data_ov019_020d1bb0[]; extern "C" void func_ov001_020bd6a8(); diff --git a/include/FileSelect/FileSelectMain.hpp b/include/FileSelect/FileSelectMain.hpp index ac760da8..a2129359 100644 --- a/include/FileSelect/FileSelectMain.hpp +++ b/include/FileSelect/FileSelectMain.hpp @@ -6,8 +6,8 @@ #include "Unknown/UnkSystem1.hpp" #include "global.h" #include "iterator.hpp" -#include "nitro/math.h" #include "types.h" +#include typedef Iterator FileSlotIterator; diff --git a/include/FileSelect/FileSelectMicTest.hpp b/include/FileSelect/FileSelectMicTest.hpp index 9d1d3252..2bc06f4b 100644 --- a/include/FileSelect/FileSelectMicTest.hpp +++ b/include/FileSelect/FileSelectMicTest.hpp @@ -3,8 +3,8 @@ #include "Game/GameModeManager.hpp" #include "Unknown/Common.hpp" #include "global.h" -#include "nitro/math.h" #include "types.h" +#include #define MAX_MIC_LEVELS 4 #define MIC_LEVEL_1 0 // green bar diff --git a/include/FileSelect/FileSelectOptionsManager.hpp b/include/FileSelect/FileSelectOptionsManager.hpp index ce481a87..f112ff74 100644 --- a/include/FileSelect/FileSelectOptionsManager.hpp +++ b/include/FileSelect/FileSelectOptionsManager.hpp @@ -3,8 +3,8 @@ #include "System/SysNew.hpp" #include "Unknown/Common.hpp" #include "global.h" -#include "nitro/math.h" #include "types.h" +#include class FileSelectOptions; class FileSelectMicTest; diff --git a/include/FileSelect/UnkSubStruct9.hpp b/include/FileSelect/UnkSubStruct9.hpp index 5ebb9685..26cbab52 100644 --- a/include/FileSelect/UnkSubStruct9.hpp +++ b/include/FileSelect/UnkSubStruct9.hpp @@ -4,8 +4,8 @@ #include "System/SysNew.hpp" #include "global.h" #include "iterator.hpp" -#include "nitro/math.h" #include "types.h" +#include // file tab manager? class UnkSubStruct9 : public SysObject { diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index abccc8a8..55710d5c 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -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 +#include +#include class GameModeManagerBase; class GameModeManagerBase_104; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 2189686a..142d090b 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -7,8 +7,8 @@ #include "System/SysNew.hpp" #include "flags.h" #include "global.h" -#include "nitro/math.h" #include "types.h" +#include class MapObjectProfile; diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp index 56f9c25d..5b9c4d08 100644 --- a/include/Physics/Cylinder.hpp +++ b/include/Physics/Cylinder.hpp @@ -2,7 +2,7 @@ #include "types.h" -#include "nitro/math.h" +#include struct Cylinder { Vec3p pos; diff --git a/include/Player/Player.hpp b/include/Player/Player.hpp index b8982a17..c2be7f72 100644 --- a/include/Player/Player.hpp +++ b/include/Player/Player.hpp @@ -1,7 +1,7 @@ #pragma once -#include "nitro/math.h" #include "types.h" +#include // incomplete class PlayerActor { diff --git a/include/Player/PlayerGet.hpp b/include/Player/PlayerGet.hpp index 0b534ff8..cf11155d 100644 --- a/include/Player/PlayerGet.hpp +++ b/include/Player/PlayerGet.hpp @@ -7,7 +7,7 @@ #include "Unknown/Common.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_ov000_0208f820.hpp" -#include "nitro/math.h" +#include struct UnkStruct_ov110_02185dc8 { u16 mItemId; diff --git a/include/Player/PlayerSceneChange.hpp b/include/Player/PlayerSceneChange.hpp index af3b2f67..1b183df7 100644 --- a/include/Player/PlayerSceneChange.hpp +++ b/include/Player/PlayerSceneChange.hpp @@ -6,7 +6,7 @@ #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_ov000_0208f820.hpp" -#include "nitro/math.h" +#include class PlayerSceneChange : public UnkStruct_ov000_0208f820 { public: diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp index d31c0f28..ae92adc5 100644 --- a/include/Player/TouchControl.hpp +++ b/include/Player/TouchControl.hpp @@ -1,8 +1,8 @@ #pragma once -#include "nitro/math.h" -#include "nitro/touch.h" #include "types.h" +#include +#include typedef u16 TouchFlags; enum TouchFlag_ { diff --git a/include/System/Random.hpp b/include/System/Random.hpp index 029d66a9..ddc74a50 100644 --- a/include/System/Random.hpp +++ b/include/System/Random.hpp @@ -1,8 +1,8 @@ #pragma once #include "global.h" -#include "nitro/math.h" #include "types.h" +#include struct Random { /* 00 */ u16 mRandomValue[4]; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 244064bb..a88a71be 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -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 +#include extern "C" void func_0201e8d4(void *param1, void *param2); diff --git a/include/Unknown/UnkMemFuncs.h b/include/Unknown/UnkMemFuncs.h index 1515ba77..aac42431 100644 --- a/include/Unknown/UnkMemFuncs.h +++ b/include/Unknown/UnkMemFuncs.h @@ -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 diff --git a/include/Unknown/UnkStruct_02049b18.hpp b/include/Unknown/UnkStruct_02049b18.hpp index 52e67de6..8396cfc0 100644 --- a/include/Unknown/UnkStruct_02049b18.hpp +++ b/include/Unknown/UnkStruct_02049b18.hpp @@ -2,8 +2,8 @@ #include "Player/TouchControl.hpp" #include "global.h" -#include "nitro/button.h" #include "types.h" +#include class UnkStruct_02049b18_06 { public: diff --git a/include/Unknown/UnkStruct_0204e64c.hpp b/include/Unknown/UnkStruct_0204e64c.hpp index 83c8362d..138b40d0 100644 --- a/include/Unknown/UnkStruct_0204e64c.hpp +++ b/include/Unknown/UnkStruct_0204e64c.hpp @@ -2,8 +2,8 @@ #include "Unknown/UnkStruct_02049b18.hpp" #include "global.h" -#include "nitro/button.h" #include "types.h" +#include class UnkStruct_0204e64c_00 { public: diff --git a/include/Unknown/UnkStruct_027e0478.hpp b/include/Unknown/UnkStruct_027e0478.hpp index 2d0812f8..f64f39e7 100644 --- a/include/Unknown/UnkStruct_027e0478.hpp +++ b/include/Unknown/UnkStruct_027e0478.hpp @@ -4,7 +4,7 @@ #include "Player/Player.hpp" #include "Player/TouchControl.hpp" #include "global.h" -#include "nitro/button.h" +#include // incomplete class UnkStruct_027e0478 { diff --git a/include/Unknown/UnkStruct_027e0998.hpp b/include/Unknown/UnkStruct_027e0998.hpp index 6f123ffd..b09c7c05 100644 --- a/include/Unknown/UnkStruct_027e0998.hpp +++ b/include/Unknown/UnkStruct_027e0998.hpp @@ -1,8 +1,8 @@ #pragma once #include "global.h" -#include "nitro/math.h" #include "types.h" +#include class UnkStruct_027e0998 { public: diff --git a/include/Unknown/UnkStruct_027e09a8.hpp b/include/Unknown/UnkStruct_027e09a8.hpp index b236ac45..bfe95f17 100644 --- a/include/Unknown/UnkStruct_027e09a8.hpp +++ b/include/Unknown/UnkStruct_027e09a8.hpp @@ -1,7 +1,7 @@ #pragma once -#include "nitro/math.h" #include "types.h" +#include class UnkStruct_027e09a8 { public: diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index 941d07ef..a595f9ac 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -1,8 +1,8 @@ #pragma once #include "files.h" -#include "nitro/math.h" #include "types.h" +#include #include "Unknown/UnkStruct_027e09a4.hpp" diff --git a/include/Unknown/UnkStruct_027e0cec.hpp b/include/Unknown/UnkStruct_027e0cec.hpp index 02fbf70d..6d110cf8 100644 --- a/include/Unknown/UnkStruct_027e0cec.hpp +++ b/include/Unknown/UnkStruct_027e0cec.hpp @@ -1,8 +1,8 @@ #pragma once #include "Player/PlayerGet.hpp" -#include "nitro/math.h" #include "types.h" +#include class UnkStruct_027e0cec { public: diff --git a/include/Unknown/UnkStruct_ov000_02067bc4.hpp b/include/Unknown/UnkStruct_ov000_02067bc4.hpp index 03abb73f..87acc840 100644 --- a/include/Unknown/UnkStruct_ov000_02067bc4.hpp +++ b/include/Unknown/UnkStruct_ov000_02067bc4.hpp @@ -6,8 +6,8 @@ #include "System/SysNew.hpp" #include "Unknown/UnkStruct_02049b18.hpp" #include "global.h" -#include "nitro/button.h" #include "types.h" +#include class UnkStruct_ov000_02067bc4_Sub1 { public: diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index 5b5978d4..508b0e3d 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -5,7 +5,7 @@ #include "Item/ItemManager.hpp" #include "System/SysNew.hpp" -#include "nitro/math.h" +#include class UnkStruct_ov000_0208f820_14 { public: diff --git a/include/Unknown/UnkStruct_ov000_020b4f84.hpp b/include/Unknown/UnkStruct_ov000_020b4f84.hpp index 8e692abd..211c1480 100644 --- a/include/Unknown/UnkStruct_ov000_020b4f84.hpp +++ b/include/Unknown/UnkStruct_ov000_020b4f84.hpp @@ -2,8 +2,8 @@ #include "System/SysNew.hpp" #include "Unknown/UnkFileSystem.hpp" -#include "nns/font.h" #include "types.h" +#include enum { FontIndex_DSZ2_msg = 0, diff --git a/include/regs.h b/include/regs.h index d2533525..4ca275af 100644 --- a/include/regs.h +++ b/include/regs.h @@ -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 diff --git a/libs/c/include/ansi_fp.h b/libs/c/include/ansi_fp.h index ac69a93d..b0e6bb16 100644 --- a/libs/c/include/ansi_fp.h +++ b/libs/c/include/ansi_fp.h @@ -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; diff --git a/libs/c/include/float.h b/libs/c/include/float.h index e79c21dd..0662fba5 100644 --- a/libs/c/include/float.h +++ b/libs/c/include/float.h @@ -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 } diff --git a/include/nitro/Overlay.h b/libs/nitro/include/nitro/Overlay.h similarity index 100% rename from include/nitro/Overlay.h rename to libs/nitro/include/nitro/Overlay.h diff --git a/include/nitro/button.h b/libs/nitro/include/nitro/button.h similarity index 100% rename from include/nitro/button.h rename to libs/nitro/include/nitro/button.h diff --git a/include/nitro/math.h b/libs/nitro/include/nitro/math.h similarity index 100% rename from include/nitro/math.h rename to libs/nitro/include/nitro/math.h index a3b1caf0..4d1233ef 100644 --- a/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -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 diff --git a/include/nitro/os/context.h b/libs/nitro/include/nitro/os/context.h similarity index 100% rename from include/nitro/os/context.h rename to libs/nitro/include/nitro/os/context.h diff --git a/include/nitro/os/mutex.h b/libs/nitro/include/nitro/os/mutex.h similarity index 100% rename from include/nitro/os/mutex.h rename to libs/nitro/include/nitro/os/mutex.h diff --git a/include/nitro/os/thread.h b/libs/nitro/include/nitro/os/thread.h similarity index 100% rename from include/nitro/os/thread.h rename to libs/nitro/include/nitro/os/thread.h diff --git a/include/nitro/touch.h b/libs/nitro/include/nitro/touch.h similarity index 97% rename from include/nitro/touch.h rename to libs/nitro/include/nitro/touch.h index 20afc331..4f508c19 100644 --- a/include/nitro/touch.h +++ b/libs/nitro/include/nitro/touch.h @@ -1,8 +1,8 @@ #pragma once #include "global.h" -#include "nitro/math.h" #include "types.h" +#include #ifdef __cplusplus extern "C" { diff --git a/include/nns/font.h b/libs/nns/include/nns/font.h similarity index 100% rename from include/nns/font.h rename to libs/nns/include/nns/font.h diff --git a/libs/nns/include/nns/g3d/g3d.h b/libs/nns/include/nns/g3d/g3d.h new file mode 100644 index 00000000..f933c229 --- /dev/null +++ b/libs/nns/include/nns/g3d/g3d.h @@ -0,0 +1,165 @@ +#include + +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]; diff --git a/libs/nns/include/nns/g3d/sbc.h b/libs/nns/include/nns/g3d/sbc.h new file mode 100644 index 00000000..d1259a92 --- /dev/null +++ b/libs/nns/include/nns/g3d/sbc.h @@ -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); +} diff --git a/include/nns/text.h b/libs/nns/include/nns/text.h similarity index 100% rename from include/nns/text.h rename to libs/nns/include/nns/text.h diff --git a/libs/nns/src/g3d/sbc.c b/libs/nns/src/g3d/sbc.c new file mode 100644 index 00000000..f52b4bcb --- /dev/null +++ b/libs/nns/src/g3d/sbc.c @@ -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(¤tMtx)) + ; + + if (data_027e0208.flags & 1) { + const Mat4x3p *mtx1 = func_0200c23c(); + Mat4p mtx2; + + Mat4x3p_CopyToMat4p(mtx1, &mtx2); + Mat4p_Multiply(¤tMtx, &mtx2, ¤tMtx); + } else if (data_027e0208.flags & 2) { + const Mat4x3p *mtx1 = &data_027e0208.mUnk_04c; + Mat4p mtx2; + + Mat4x3p_CopyToMat4p(mtx1, &mtx2); + Mat4p_Multiply(¤tMtx, &mtx2, ¤tMtx); + } + + translationVec->x = currentMtx.wColumn.x; + translationVec->y = currentMtx.wColumn.y; + translationVec->z = currentMtx.wColumn.z; + + scaleVec->x = Vec3p_Length((Vec3p *) ¤tMtx.xColumn); + scaleVec->y = Vec3p_Length((Vec3p *) ¤tMtx.yColumn); + scaleVec->z = Vec3p_Length((Vec3p *) ¤tMtx.zColumn); + + if (data_027e0208.flags & 1) { + REG_GFX_FIFO = 0x171012; // MTX_POP | MTX_MODE | MTX_LOAD_4x3 + Stream32(&funcArgs[1], ®_GFX_FIFO, 8); // MTX_MODE = Position + Stream32(func_0200c270(), ®_GFX_FIFO, 0x30); + + REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE + Stream32(&funcArgs[3], ®_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], ®_GFX_FIFO, 8); // MTX_MODE = Position + Stream32(func_0200c198(), ®_GFX_FIFO, 0x30); + + REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE + Stream32(&funcArgs[3], ®_GFX_FIFO, 0x3c); // Identity MTX + } else { + Stream32(&funcArgs, ®_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(¤tMtx)) + ; + + if (data_027e0208.flags & 1) { + const Mat4x3p *mtx1 = func_0200c23c(); + Mat4p mtx2; + + Mat4x3p_CopyToMat4p(mtx1, &mtx2); + Mat4p_Multiply(¤tMtx, &mtx2, ¤tMtx); + } else if (data_027e0208.flags & 2) { + const Mat4x3p *mtx1 = &data_027e0208.mUnk_04c; + Mat4p mtx2; + + Mat4x3p_CopyToMat4p(mtx1, &mtx2); + Mat4p_Multiply(¤tMtx, &mtx2, ¤tMtx); + } + + translationVec->x = currentMtx.wColumn.x; + translationVec->y = currentMtx.wColumn.y; + translationVec->z = currentMtx.wColumn.z; + + scaleVec->x = Vec3p_Length((Vec3p *) ¤tMtx.xColumn); + scaleVec->y = Vec3p_Length((Vec3p *) ¤tMtx.yColumn); + scaleVec->z = Vec3p_Length((Vec3p *) ¤tMtx.zColumn); + + if (currentMtx.yColumn.y != 0 || currentMtx.yColumn.z != 0) { + Vec3p_Normalize((Vec3p *) ¤tMtx.yColumn, (Vec3p *) &mtx->yColumn); + + mtx->zColumn.y = -mtx->yColumn.z; + mtx->zColumn.z = mtx->yColumn.y; + } else { + Vec3p_Normalize((Vec3p *) ¤tMtx.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], ®_GFX_FIFO, 8); // MTX_MODE = Position + Stream32(func_0200c270(), ®_GFX_FIFO, 0x30); + + REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE + Stream32(&funcArgs[3], ®_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], ®_GFX_FIFO, 8); // MTX_MODE = Position + Stream32(func_0200c198(), ®_GFX_FIFO, 0x30); + + REG_GFX_FIFO = 0x1b19; // MTX_MULT_4x3 | MTX_SCALE + Stream32(&funcArgs[3], ®_GFX_FIFO, 0x3c); // Identity MTX + } else { + Stream32(&funcArgs, ®_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; +} diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp index 65e3ade5..d05f500f 100644 --- a/src/025_Title/TitleScreen.cpp +++ b/src/025_Title/TitleScreen.cpp @@ -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 #include diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 4f02343b..b1c8904e 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -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 struct UnkStruct_02186240 { /* 0000 */ unk8 mUnk_0000[0x3F68]; diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index 5fb3d93f..ba8aba63 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -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; diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index 28ef4b8a..80038d17 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -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(); diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 7aed58c9..758f180d 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -1,6 +1,6 @@ #include "System/OverlayManager.hpp" #include "global.h" -#include "nitro/Overlay.h" +#include struct UnkStruct_020ee698 { /* 00 */ unk8 mUnk_00[0x2C]; diff --git a/tools/configure.py b/tools/configure.py index e58e9344..041000d5 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -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"), + ] + ) ] diff --git a/tools/m2ctx.py b/tools/m2ctx.py index b5650f11..cce376ec 100755 --- a/tools/m2ctx.py +++ b/tools/m2ctx.py @@ -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__', ]