mirror of
https://github.com/zeldaret/st
synced 2026-07-10 06:56:59 -04:00
Port sbc.c progress from PH (#53)
* move nitro headers to libs/nitro/include and setup sbc.c Co-authored-by: enzofc708 <47937189+enzofc708@users.noreply.github.com> * sbc.c 95% * move sbc in the right folder (and fix a warning) * revert formating changes --------- Co-authored-by: enzofc708 <47937189+enzofc708@users.noreply.github.com>
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
src/Main/Main.cpp:
|
||||
.text start:0x02000800 end:0x02000bdc
|
||||
|
||||
libs/nns/src/g3d/sbc.c:
|
||||
.text start:0x0200c8cc end:0x0200e2ec
|
||||
|
||||
src/Main/System/SysNew.cpp:
|
||||
.text start:0x02011e10 end:0x0201200c
|
||||
|
||||
|
||||
@@ -7,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -898,14 +898,14 @@ from:0x02180c60 kind:arm_call to:0x0200e260 module:main
|
||||
from:0x02180c70 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x02180c80 kind:arm_call to:0x01ffad5c module:itcm
|
||||
from:0x02180cac kind:arm_call to:0x02058fc4 module:overlay(0)
|
||||
from:0x02180cb8 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x02180cb8 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x02180cbc kind:load to:0x027e0964 module:dtcm
|
||||
from:0x02180cc0 kind:load to:0x027e0958 module:dtcm
|
||||
from:0x02180ccc kind:arm_call to:0x02180b70 module:overlay(95)
|
||||
from:0x02180ce4 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x02180ce8 kind:arm_call to:0x0205accc module:overlay(0)
|
||||
from:0x02180d08 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x02180d10 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x02180d10 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x02180da8 kind:load to:0x0217a220 module:overlay(95)
|
||||
from:0x02180dcc kind:load to:0x02179e20 module:overlay(95)
|
||||
from:0x02180dd0 kind:load to:0x0217a280 module:overlay(95)
|
||||
|
||||
+16
-16
@@ -1102,7 +1102,7 @@ from:0x0200c046 kind:thumb_call_arm to:0x01ffb00c module:itcm
|
||||
from:0x0200c080 kind:thumb_call_arm to:0x01ffa06c module:itcm
|
||||
from:0x0200c0ac kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c0b4 kind:load to:0x027e0288 module:dtcm
|
||||
from:0x0200c0c4 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c0c4 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c0c8 kind:load to:0x027e0210 module:dtcm
|
||||
from:0x0200c0f8 kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200c0fc kind:load to:0x027e0408 module:dtcm
|
||||
@@ -1114,14 +1114,14 @@ from:0x0200c170 kind:load to:0x027e02b0 module:dtcm
|
||||
from:0x0200c194 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c1b4 kind:arm_call to:0x01ffa9e8 module:itcm
|
||||
from:0x0200c1cc kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c1d0 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c1d0 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c1d4 kind:load to:0x027e0308 module:dtcm
|
||||
from:0x0200c1f0 kind:arm_call to:0x01ffad5c module:itcm
|
||||
from:0x0200c210 kind:arm_call to:0x01ffa93c module:itcm
|
||||
from:0x0200c21c kind:arm_call to:0x01ffa9e8 module:itcm
|
||||
from:0x0200c228 kind:load to:0x027e0338 module:dtcm
|
||||
from:0x0200c22c kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200c230 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c230 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c234 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c238 kind:load to:0x027e0368 module:dtcm
|
||||
from:0x0200c250 kind:arm_call to:0x0200c1d8 module:main
|
||||
@@ -1180,12 +1180,12 @@ from:0x0200ce60 kind:arm_call to:0x02028c78 module:main
|
||||
from:0x0200ce64 kind:arm_call to:0x0200c198 module:main
|
||||
from:0x0200ce78 kind:arm_call to:0x02028c78 module:main
|
||||
from:0x0200cee8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200cf00 kind:load to:0x02043470 module:main
|
||||
from:0x0200cf04 kind:load to:0x0204347c module:main
|
||||
from:0x0200cf00 kind:load to:0x02043440 add:0x30 module:main
|
||||
from:0x0200cf04 kind:load to:0x02043440 add:0x3c module:main
|
||||
from:0x0200cf10 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200cf14 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200cf1c kind:load to:0x02043444 module:main
|
||||
from:0x0200cf24 kind:load to:0x0204344c module:main
|
||||
from:0x0200cf14 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200cf1c kind:load to:0x02043440 add:0x4 module:main
|
||||
from:0x0200cf24 kind:load to:0x02043440 add:0xc module:main
|
||||
from:0x0200cf28 kind:load to:0x02043440 module:main
|
||||
from:0x0200cfc8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200d02c kind:arm_call to:0x01ff8d38 module:itcm
|
||||
@@ -1207,12 +1207,12 @@ from:0x0200d1b4 kind:arm_call to:0x02028c78 module:main
|
||||
from:0x0200d1b8 kind:arm_call to:0x0200c198 module:main
|
||||
from:0x0200d1cc kind:arm_call to:0x02028c78 module:main
|
||||
from:0x0200d23c kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200d254 kind:load to:0x020434b8 module:main
|
||||
from:0x0200d258 kind:load to:0x020434c4 module:main
|
||||
from:0x0200d25c kind:load to:0x02043494 module:main
|
||||
from:0x0200d254 kind:load to:0x02043488 add:0x30 module:main
|
||||
from:0x0200d258 kind:load to:0x02043488 add:0x3c module:main
|
||||
from:0x0200d25c kind:load to:0x02043488 add:0xc module:main
|
||||
from:0x0200d268 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200d26c kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200d274 kind:load to:0x0204348c module:main
|
||||
from:0x0200d26c kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200d274 kind:load to:0x02043488 add:0x4 module:main
|
||||
from:0x0200d27c kind:load to:0x02043488 module:main
|
||||
from:0x0200d2c4 kind:arm_call to:0x02028c90 module:main
|
||||
from:0x0200d2c8 kind:arm_call to:0x01ff8d38 module:itcm
|
||||
@@ -1222,8 +1222,8 @@ from:0x0200d5c4 kind:arm_call to:0x02024a84 module:main
|
||||
from:0x0200d744 kind:arm_call to:0x02024d94 module:main
|
||||
from:0x0200d958 kind:arm_call to:0x02024a30 module:main
|
||||
from:0x0200d96c kind:arm_call to:0x02024a30 module:main
|
||||
from:0x0200d9c0 kind:load to:0x02048080 module:main
|
||||
from:0x0200d9c8 kind:load to:0x020480c0 module:main
|
||||
from:0x0200d9c0 kind:load to:0x02046c80 add:0x1400 module:main
|
||||
from:0x0200d9c8 kind:load to:0x02046c80 add:0x1440 module:main
|
||||
from:0x0200da74 kind:arm_call to:0x01ff8dac module:itcm
|
||||
from:0x0200daf8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200db7c kind:arm_call to:0x01ff8e58 module:itcm
|
||||
@@ -1242,7 +1242,7 @@ from:0x0200de34 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200de4c kind:load to:0x020433f0 module:main
|
||||
from:0x0200de50 kind:load to:0x020433fc module:main
|
||||
from:0x0200de54 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200de58 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200de58 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200de5c kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200de8c kind:arm_call to:0x0200e260 module:main
|
||||
from:0x0200dea8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
|
||||
+17
-27
@@ -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
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
src/Main/Main.cpp:
|
||||
.text start:0x02000800 end:0x02000bdc
|
||||
|
||||
libs/nns/src/g3d/sbc.c:
|
||||
.text start:0x0200c8cc end:0x0200e2ec
|
||||
|
||||
src/Main/System/SysNew.cpp:
|
||||
.text start:0x02011e10 end:0x0201200c
|
||||
|
||||
|
||||
@@ -7,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1102,7 +1102,7 @@ from:0x0200c046 kind:thumb_call_arm to:0x01ffb00c module:itcm
|
||||
from:0x0200c080 kind:thumb_call_arm to:0x01ffa06c module:itcm
|
||||
from:0x0200c0ac kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c0b4 kind:load to:0x027e0288 module:dtcm
|
||||
from:0x0200c0c4 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c0c4 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c0c8 kind:load to:0x027e0210 module:dtcm
|
||||
from:0x0200c0f8 kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200c0fc kind:load to:0x027e0408 module:dtcm
|
||||
@@ -1114,14 +1114,14 @@ from:0x0200c170 kind:load to:0x027e02b0 module:dtcm
|
||||
from:0x0200c194 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c1b4 kind:arm_call to:0x01ffa9e8 module:itcm
|
||||
from:0x0200c1cc kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c1d0 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c1d0 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c1d4 kind:load to:0x027e0308 module:dtcm
|
||||
from:0x0200c1f0 kind:arm_call to:0x01ffad5c module:itcm
|
||||
from:0x0200c210 kind:arm_call to:0x01ffa93c module:itcm
|
||||
from:0x0200c21c kind:arm_call to:0x01ffa9e8 module:itcm
|
||||
from:0x0200c228 kind:load to:0x027e0338 module:dtcm
|
||||
from:0x0200c22c kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200c230 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200c230 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200c234 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200c238 kind:load to:0x027e0368 module:dtcm
|
||||
from:0x0200c250 kind:arm_call to:0x0200c1d8 module:main
|
||||
@@ -1183,7 +1183,7 @@ from:0x0200cee8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200cf00 kind:load to:0x020449d0 module:main
|
||||
from:0x0200cf04 kind:load to:0x020449dc module:main
|
||||
from:0x0200cf10 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200cf14 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200cf14 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200cf1c kind:load to:0x020449a4 module:main
|
||||
from:0x0200cf24 kind:load to:0x020449ac module:main
|
||||
from:0x0200cf28 kind:load to:0x020449a0 module:main
|
||||
@@ -1211,7 +1211,7 @@ from:0x0200d254 kind:load to:0x02044a18 module:main
|
||||
from:0x0200d258 kind:load to:0x02044a24 module:main
|
||||
from:0x0200d25c kind:load to:0x020449f4 module:main
|
||||
from:0x0200d268 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200d26c kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200d26c kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200d274 kind:load to:0x020449ec module:main
|
||||
from:0x0200d27c kind:load to:0x020449e8 module:main
|
||||
from:0x0200d2c4 kind:arm_call to:0x0202a1c0 module:main
|
||||
@@ -1242,7 +1242,7 @@ from:0x0200de34 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
from:0x0200de4c kind:load to:0x02044950 module:main
|
||||
from:0x0200de50 kind:load to:0x0204495c module:main
|
||||
from:0x0200de54 kind:load to:0x027e0208 module:dtcm
|
||||
from:0x0200de58 kind:load to:0x027e0254 module:dtcm
|
||||
from:0x0200de58 kind:load to:0x027e0208 add:0x4c module:dtcm
|
||||
from:0x0200de5c kind:load to:0x027e02c4 module:dtcm
|
||||
from:0x0200de8c kind:arm_call to:0x0200e260 module:main
|
||||
from:0x0200dea8 kind:arm_call to:0x01ff8e58 module:itcm
|
||||
|
||||
+14
-14
@@ -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
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "flags.h"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include "versions.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
// some functions use thumb mode on the japanese version (only in overlay 40?)
|
||||
#if IS_JP
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#include "Unknown/UnkSystem1.hpp"
|
||||
#include "global.h"
|
||||
#include "iterator.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "regs.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
extern const unk16 data_ov019_020d1bb0[];
|
||||
extern "C" void func_ov001_020bd6a8();
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
#include "Unknown/UnkSystem1.hpp"
|
||||
#include "global.h"
|
||||
#include "iterator.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
typedef Iterator<UnkSubStruct9, MAX_SAVE_SLOTS> FileSlotIterator;
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
#define MAX_MIC_LEVELS 4
|
||||
#define MIC_LEVEL_1 0 // green bar
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class FileSelectOptions;
|
||||
class FileSelectMicTest;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "global.h"
|
||||
#include "iterator.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
// file tab manager?
|
||||
class UnkSubStruct9 : public SysObject {
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_02049b18.hpp"
|
||||
#include "nitro/button.h"
|
||||
#include "nitro/math.h"
|
||||
#include "nitro/touch.h"
|
||||
#include "types.h"
|
||||
#include <nitro/button.h>
|
||||
#include <nitro/math.h>
|
||||
#include <nitro/touch.h>
|
||||
|
||||
class GameModeManagerBase;
|
||||
class GameModeManagerBase_104;
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "flags.h"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class MapObjectProfile;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "nitro/math.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
struct Cylinder {
|
||||
Vec3p pos;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
// incomplete
|
||||
class PlayerActor {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce0.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_0208f820.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
struct UnkStruct_ov110_02185dc8 {
|
||||
u16 mItemId;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_0208f820.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class PlayerSceneChange : public UnkStruct_ov000_0208f820 {
|
||||
public:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "nitro/math.h"
|
||||
#include "nitro/touch.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
#include <nitro/touch.h>
|
||||
|
||||
typedef u16 TouchFlags;
|
||||
enum TouchFlag_ {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
struct Random {
|
||||
/* 00 */ u16 mRandomValue[4];
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkFileSystem.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "nns/text.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
#include <nns/text.h>
|
||||
|
||||
extern "C" void func_0201e8d4(void *param1, void *param2);
|
||||
|
||||
|
||||
@@ -4,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
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/button.h"
|
||||
#include "types.h"
|
||||
#include <nitro/button.h>
|
||||
|
||||
class UnkStruct_02049b18_06 {
|
||||
public:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
#include "Unknown/UnkStruct_02049b18.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/button.h"
|
||||
#include "types.h"
|
||||
#include <nitro/button.h>
|
||||
|
||||
class UnkStruct_0204e64c_00 {
|
||||
public:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "Player/Player.hpp"
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/button.h"
|
||||
#include <nitro/button.h>
|
||||
|
||||
// incomplete
|
||||
class UnkStruct_027e0478 {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class UnkStruct_027e0998 {
|
||||
public:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class UnkStruct_027e09a8 {
|
||||
public:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "files.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "Player/PlayerGet.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class UnkStruct_027e0cec {
|
||||
public:
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_02049b18.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/button.h"
|
||||
#include "types.h"
|
||||
#include <nitro/button.h>
|
||||
|
||||
class UnkStruct_ov000_02067bc4_Sub1 {
|
||||
public:
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include "Item/ItemManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
class UnkStruct_ov000_0208f820_14 {
|
||||
public:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkFileSystem.hpp"
|
||||
#include "nns/font.h"
|
||||
#include "types.h"
|
||||
#include <nns/font.h>
|
||||
|
||||
enum {
|
||||
FontIndex_DSZ2_msg = 0,
|
||||
|
||||
@@ -138,6 +138,18 @@ extern u32 _DTCM_BASE; // TODO: Provide address via LCF
|
||||
#define REG_OAM_A (*(((u32 *) (0x07000000))))
|
||||
#define REG_OAM_B (*(((u32 *) (0x07000400))))
|
||||
|
||||
#define REG_GFX_FIFO (*(vu32 *) 0x04000400)
|
||||
#define GFX_FIFO_MTX_MODE (*(vu32 *) 0x04000440)
|
||||
#define GFX_FIFO_MTX_PUSH (*(vu32 *) 0x04000444)
|
||||
#define GFX_FIFO_MTX_POP (*(vu32 *) 0x04000448)
|
||||
#define GFX_FIFO_MTX_STORE (*(vu32 *) 0x0400044c)
|
||||
#define GFX_FIFO_MTX_RESTORE (*(vu32 *) 0x04000450)
|
||||
#define GFX_FIFO_MTX_IDENTITY (*(vu32 *) 0x04000454)
|
||||
#define GFX_FIFO_SWAP_BUFFERS (*(vu32 *) 0x04000540)
|
||||
#define GFX_FIFO_VIEWPORT (*(vu32 *) 0x04000580)
|
||||
#define REG_GFX_RAM_COUNT (*(vu16 *) 0x04000604)
|
||||
#define REG_GFX_RAM_COUNT_2 (*(vu16 *) 0x04000606)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
@@ -8,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;
|
||||
|
||||
@@ -9,7 +9,9 @@ extern "C" {
|
||||
#define FLT_EPSILON 1.192092896e-07f
|
||||
#define FLT_MIN 1.175494351e-38f
|
||||
|
||||
#define DBL_EPSILON 1.1920929e-07
|
||||
#define DBL_MIN 0x1.0000000000000P-1022
|
||||
#define DBL_EPSILON 0x1.0000000000000P-52
|
||||
#define DBL_MAX 0x1.fffffffffffffP1023
|
||||
|
||||
#define LDBL_MANT_DIG 53
|
||||
#define LDBL_DIG 15
|
||||
@@ -18,9 +20,9 @@ extern "C" {
|
||||
#define LDBL_MAX_EXP 1024
|
||||
#define LDBL_MAX_10_EXP 308
|
||||
|
||||
#define LDBL_MAX 0x1.fffffffffffffP1023L
|
||||
#define LDBL_EPSILON 0x1.0000000000000P-52L
|
||||
#define LDBL_MIN 0x1.0000000000000P-1022L
|
||||
#define LDBL_EPSILON 0x1.0000000000000P-52L
|
||||
#define LDBL_MAX 0x1.fffffffffffffP1023L
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -216,8 +216,8 @@ struct Mat4p {
|
||||
wColumn = W;
|
||||
}
|
||||
};
|
||||
#else
|
||||
extern "C" {
|
||||
#else
|
||||
typedef struct Vec2b {
|
||||
/* 0 */ u8 x;
|
||||
/* 1 */ u8 y;
|
||||
@@ -279,10 +279,10 @@ typedef struct Mat4p {
|
||||
/* 30 */ Vec4p wColumn;
|
||||
/* 40 */
|
||||
} Mat4p;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -0,0 +1,165 @@
|
||||
#include <nitro/math.h>
|
||||
|
||||
struct G3d_RenderState_;
|
||||
typedef void (*G3d_CallbackFunction)(struct G3d_RenderState_ *);
|
||||
|
||||
typedef struct G3d_NameList_ {
|
||||
/* 00 */ u8 dummy;
|
||||
/* 01 */ u8 numElmnts; // number of elements
|
||||
/* 02 */ u16 size; // size of this NameList in bytes
|
||||
/* 04 */ u16 dummy2;
|
||||
/* 06 */ u16 ofsHeader; // offset to the G3d_NameList_Header
|
||||
/* 08 */ void *entry[1]; // variable size
|
||||
/* 0c */
|
||||
} G3d_NameList;
|
||||
|
||||
typedef struct G3d_NameList_Header_ {
|
||||
/* 00 */ u16 element_size;
|
||||
/* 02 */ u16 data_section_size;
|
||||
/* 04 */ u8 data[4];
|
||||
/* 08 */
|
||||
} G3d_NameList_Header;
|
||||
|
||||
typedef struct G3d_InvBindMtx_ {
|
||||
/* 00 */ Mat4x3p mtx;
|
||||
/* 30 */ Mat3p unkMtx;
|
||||
/* 54 */
|
||||
} G3d_InvBindMtx;
|
||||
|
||||
typedef struct G3d_BoneMtxStruct_ {
|
||||
/* 00 */ u32 flag;
|
||||
/* 04 */ u8 mUnk_04[0x24];
|
||||
/* 28 */ Mat3p rot;
|
||||
/* 58 */ u8 mUnk_58[0xc];
|
||||
/* 64 */
|
||||
} G3d_BoneMtxStruct;
|
||||
|
||||
typedef enum {
|
||||
G3D_ANIMBIND_UNK = 0xff,
|
||||
G3D_ANIMBIND_EXISTS = 0x100,
|
||||
G3D_ANIMBIND_OFF = 0x200
|
||||
} G3d_AnimationBinds;
|
||||
|
||||
typedef struct G3d_Animation_ {
|
||||
/* 00 */ u8 mUnk_00[0x10];
|
||||
/* 10 */ struct G3d_Animation_ *next; // next animation in the list
|
||||
/* 14 */ u8 mUnk_14[0x5];
|
||||
/* 19 */ u8 numElmnts; // number of elements in the elementBinds array
|
||||
/* 1a */ u16 elementBinds[1]; // each bit corresponds to a bone/material and determines whether an animation exists for it
|
||||
/* 1c */
|
||||
} G3d_Animation;
|
||||
|
||||
// Structure representing the NSBMD model file
|
||||
typedef struct G3d_Model_ {
|
||||
/* 00 */ u32 size; // size of the model in bytes
|
||||
/* 04 */ u32 offSbc; // offset of the SBC commands list
|
||||
/* 08 */ u32 offMat; // offset of the material list
|
||||
/* 0c */ u32 offMesh; // offset of the mesh list
|
||||
/* 10 */ u32 offInvBMtx; // offset of the InvBindMatrix list
|
||||
/* 14 */ u8 dummy1;
|
||||
/* 15 */ u8 scalingHandler; // Determines which of the G3d_gScaleHandlers to use for this model
|
||||
/* 16 */ u8 textureHandler; // Determines which of the G3d_gTextureHandlers to use for this model
|
||||
/* 17 */ u8 numBones; // number of nodes
|
||||
/* 18 */ u8 numMat; // number of materials
|
||||
/* 19 */ u8 numMesh; // number of meshes
|
||||
/* 1a */ u8 dummy2[2];
|
||||
/* 1c */ q20 upScale;
|
||||
/* 20 */ q20 downScale;
|
||||
/* 24 */ u16 numVertex; // number of vertices
|
||||
/* 26 */ u16 numPolygon; // number of polygons
|
||||
/* 28 */ u16 numTriangle; // number of triangles
|
||||
/* 2a */ u16 numQuad; // number of quads
|
||||
/* 2c */ q4 boundingBoxMin[3]; // bounding box lower vertex
|
||||
/* 32 */ q4 boundingBoxMax[3]; // bounding box upper vertex
|
||||
/* 38 */ u8 dummy3[8];
|
||||
/* 40 */ G3d_NameList boneList; // bone list
|
||||
/* 4c */
|
||||
} G3d_Model;
|
||||
|
||||
static inline G3d_NameList *G3d_GetBoneList(const G3d_Model *mdl) {
|
||||
return mdl != NULL ? (G3d_NameList *) &mdl->boneList : NULL;
|
||||
}
|
||||
|
||||
static inline void *G3d_GetMat(const G3d_Model *mdl) {
|
||||
return mdl != NULL && mdl->offMat != 0 ? (void *) ((u8 *) mdl + mdl->offMat) : NULL;
|
||||
}
|
||||
|
||||
static inline G3d_NameList *G3d_GetMesh(const G3d_Model *mdl) {
|
||||
return mdl != NULL && mdl->offMesh != 0 ? (G3d_NameList *) ((u8 *) mdl + mdl->offMesh) : NULL;
|
||||
}
|
||||
|
||||
typedef enum {
|
||||
G3D_RENDEROBJ_FLAG_STORE = 0x1, // stores results in local cache
|
||||
G3D_RENDEROBJ_FLAG_SKIP_CMD = 0x2, // skips pushing geometry commands to the FIFO
|
||||
G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAW = 0x4, // skips the execution of rendering commands
|
||||
G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALC = 0x8, // skips the execution of matrix calculation commands
|
||||
G3D_RENDEROBJ_FLAG_ANIMMAP_OUTDATED = 0x10 // set when the animation map arrays in the render object are outdated
|
||||
} G3d_RenderObjFlag;
|
||||
|
||||
// Structure that handles the parameters for drawing a model
|
||||
typedef struct G3d_RenderObject_ {
|
||||
/* 00 */ u32 flag; // G3d_RenderObjFlag
|
||||
/* 04 */ G3d_Model *model;
|
||||
/* 08 */ G3d_Animation *matAnim; // material animation
|
||||
/* 0c */ void *mUnk_0c;
|
||||
/* 10 */ G3d_Animation *jntAnim; // joint animation
|
||||
/* 14 */ void *mUnk_14;
|
||||
/* 18 */ G3d_Animation *mUnk_18;
|
||||
/* 1c */ void *mUnk_1c;
|
||||
/* 20 */ G3d_CallbackFunction callbackFunction;
|
||||
/* 24 */ u8 callbackIdx; // index of the callbackFunction in the callback array of G3d_RenderState
|
||||
/* 25 */ u8 mUnk_25; // related to callback
|
||||
/* 26 */ u16 dummy_;
|
||||
/* 28 */ G3d_CallbackFunction callbackInitFunc; // initializes the G3d_RenderState callback array
|
||||
/* 2c */ void *modelRender; // pointer to the ModelRender that is rendering this model
|
||||
/* 30 */ u8 *unkCommandsList; // if not null, this command list is used instead of the one in the model
|
||||
/* 34 */ G3d_BoneMtxStruct *cacheJntAnm;
|
||||
/* 38 */ void *cacheMatAnm;
|
||||
/* 3c */ u32 matAnimBindMap[2];
|
||||
/* 44 */ u32 jntAnimBindMap[2];
|
||||
/* 4c */ u32 unkAnimBindMap[2];
|
||||
/* 54 */
|
||||
} G3d_RenderObject;
|
||||
|
||||
typedef struct G3d_Material_List_ {
|
||||
/* 00 */ u16 texture_pairings_off;
|
||||
/* 02 */ u16 palette_pairings_off;
|
||||
/* 04 */ G3d_NameList materials;
|
||||
/* 10 */
|
||||
} G3d_Material_List;
|
||||
|
||||
typedef struct G3d_Material_ {
|
||||
/* 00 */ u32 mUnk_00;
|
||||
/* 04 */ u32 dif_amb;
|
||||
/* 08 */ u32 spe_emi;
|
||||
/* 0c */ u32 polygon_attr;
|
||||
/* 10 */ u32 mUnk_10;
|
||||
/* 14 */ u32 teximage_params;
|
||||
/* 18 */ u32 mUnk_18;
|
||||
/* 1c */ u16 pltt_base;
|
||||
/* 1e */ u16 flag;
|
||||
/* 20 */ u16 width;
|
||||
/* 22 */ u16 height;
|
||||
/* 24 */ u8 mUnk_24[0x8];
|
||||
/* 2c */
|
||||
} G3d_Material;
|
||||
|
||||
typedef struct G3d_MaterialAnimation_ {
|
||||
/* 00 */ u32 flag;
|
||||
/* 04 */ u32 dif_amb;
|
||||
/* 08 */ u32 spe_emi;
|
||||
/* 0c */ u32 polygon_attr;
|
||||
/* 10 */ u32 teximage_params;
|
||||
/* 14 */ u32 pltt_base;
|
||||
/* 18 */ u8 mUnk_18[0x14];
|
||||
/* 2c */ u16 width;
|
||||
/* 2e */ u16 height;
|
||||
/* 30 */ u8 mUnk_30[0x8];
|
||||
/* 38 */
|
||||
} G3d_MaterialAnimation;
|
||||
|
||||
#define G3D_TEXIMAGE_PARM_TEX_COORD_MODE 0xc0000000
|
||||
|
||||
extern void *G3d_gScaleHandlers[3];
|
||||
extern void *G3d_gSRTTransformHandlers[3];
|
||||
extern void *G3d_gTextureHandlers[4];
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -6,9 +6,9 @@
|
||||
#include "Unknown/UnkStruct_0204af1c.hpp"
|
||||
#include "Unknown/UnkStruct_027e0954.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b5214.hpp"
|
||||
#include "nitro/button.h"
|
||||
#include "regs.h"
|
||||
#include "versions.h"
|
||||
#include <nitro/button.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b51c0.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "versions.h"
|
||||
#include <nitro/math.h>
|
||||
|
||||
struct UnkStruct_02186240 {
|
||||
/* 0000 */ unk8 mUnk_0000[0x3F68];
|
||||
|
||||
@@ -70,7 +70,6 @@ extern q4 data_0203f964[];
|
||||
extern q4 data_0203feb0[];
|
||||
extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *);
|
||||
extern "C" void func_01ff9638(void *, s16);
|
||||
extern "C" q20 func_01ffb800(void *);
|
||||
extern "C" void func_01ff9770(void *);
|
||||
extern "C" void func_ov000_02072fd0(void *);
|
||||
extern unk32 data_ov000_020b3000;
|
||||
@@ -219,7 +218,7 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1
|
||||
this->mUnk_9C.z = 0;
|
||||
func_01ff9638(&this->mUnk_9C, temp_r8_2);
|
||||
|
||||
q20 temp_r0_11 = func_01ffb800(&this->mUnk_9C);
|
||||
q20 temp_r0_11 = Vec3p_Length(&this->mUnk_9C);
|
||||
if (temp_r0_11 > 0x800) {
|
||||
if ((((temp_r0_11 - 0x800) / 10) + ((temp_r0_11 - 0x800) >> 0x1F)) <= 0) {
|
||||
this->mUnk_9C.x = 0;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
extern "C" void func_020196fc();
|
||||
extern "C" unk32 CARD_func_0033();
|
||||
extern "C" void CARD_func_0034();
|
||||
extern "C" void func_01ff8d38();
|
||||
extern "C" void FlushGfxQueue();
|
||||
extern "C" void func_020132c8();
|
||||
extern "C" void func_020132dc();
|
||||
extern "C" void func_02013354();
|
||||
@@ -105,7 +105,7 @@ ARM void Game::Run() {
|
||||
|
||||
Mat3p_InitIdentity(&data_027e02c4);
|
||||
data_027e0208.mUnk_0FC = 0;
|
||||
func_01ff8d38();
|
||||
FlushGfxQueue();
|
||||
this->mpCurrentGameMode->vfunc_18();
|
||||
data_0204a110.func_020194dc();
|
||||
|
||||
@@ -114,7 +114,7 @@ ARM void Game::Run() {
|
||||
}
|
||||
|
||||
#if IS_JP
|
||||
func_01ff8d38();
|
||||
FlushGfxQueue();
|
||||
#endif
|
||||
|
||||
if (data_0204e64c.mUnk_00.mUnk_0B == 0) {
|
||||
@@ -122,7 +122,7 @@ ARM void Game::Run() {
|
||||
}
|
||||
|
||||
this->mpCurrentGameMode->vfunc_1C();
|
||||
func_01ff8d38();
|
||||
FlushGfxQueue();
|
||||
data_0204a110.func_02019454();
|
||||
this->mpCurrentGameMode->vfunc_20();
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/Overlay.h"
|
||||
#include <nitro/Overlay.h>
|
||||
|
||||
struct UnkStruct_020ee698 {
|
||||
/* 00 */ unk8 mUnk_00[0x2C];
|
||||
|
||||
+19
-2
@@ -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"),
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -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__',
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user