diff --git a/config/GMPE01_00/config.yml b/config/GMPE01_00/config.yml index 2865ba88..4d4d8936 100644 --- a/config/GMPE01_00/config.yml +++ b/config/GMPE01_00/config.yml @@ -17,6 +17,10 @@ modules: symbols: config/GMPE01_00/rels/bootDll/symbols.txt splits: config/GMPE01_00/rels/bootDll/splits.txt links: [] + extract: + - symbol: logoNintendoData + binary: logoNintendoData.bin + header: logoNintendoData.inc - object: orig/GMPE01_00/files/dll/instDll.rel hash: f09399fee83c63abfe2adb25341152adad959a93 symbols: config/GMPE01_00/rels/instDll/symbols.txt @@ -502,3 +506,44 @@ modules: symbols: config/GMPE01_00/rels/m401Dll/symbols.txt splits: config/GMPE01_00/rels/m401Dll/splits.txt links: [_minigameDll] + +extract: +- symbol: ank8x8_4b + binary: ank8x8_4b.bin + header: ank8x8_4b.inc +- symbol: refMapData0 + binary: refMapData0.anm + header: refMapData0.inc +- symbol: refMapData1 + binary: refMapData1.anm + header: refMapData1.inc +- symbol: refMapData2 + binary: refMapData2.anm + header: refMapData2.inc +- symbol: refMapData3 + binary: refMapData3.anm + header: refMapData3.inc +- symbol: refMapData4 + binary: refMapData4.anm + header: refMapData4.inc +- symbol: toonMapData + binary: toonMapData.anm + header: toonMapData.inc +- symbol: toonMapData2 + binary: toonMapData2.anm + header: toonMapData2.inc +- symbol: hiliteData + binary: hiliteData.anm + header: hiliteData.inc +- symbol: hiliteData2 + binary: hiliteData2.anm + header: hiliteData2.inc +- symbol: hiliteData3 + binary: hiliteData3.anm + header: hiliteData3.inc +- symbol: hiliteData4 + binary: hiliteData4.anm + header: hiliteData4.inc +- symbol: Ascii8x8_1bpp + binary: Ascii8x8_1bpp.bin + header: Ascii8x8_1bpp.inc diff --git a/config/GMPE01_00/rels/bootDll/splits.txt b/config/GMPE01_00/rels/bootDll/splits.txt index bc4e958f..1cdd17c0 100644 --- a/config/GMPE01_00/rels/bootDll/splits.txt +++ b/config/GMPE01_00/rels/bootDll/splits.txt @@ -5,3 +5,16 @@ Sections: .rodata type:rodata align:8 .data type:data align:32 .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/bootDll/bootDll.c: + .text start:0x000000A0 end:0x00002944 + .rodata start:0x00000000 end:0x000000DC + .data start:0x00000000 end:0x000000A0 + .bss start:0x00000000 end:0x0000005C + +REL/bootDll/nintendo_data.c: + .text start:0x00002944 end:0x000029C8 + .data start:0x000000A0 end:0x0000311D diff --git a/config/GMPE01_00/rels/bootDll/symbols.txt b/config/GMPE01_00/rels/bootDll/symbols.txt index a27cc9e1..df4fbfb9 100644 --- a/config/GMPE01_00/rels/bootDll/symbols.txt +++ b/config/GMPE01_00/rels/bootDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x1CC +ModuleProlog = .text:0x000000A0; // type:function size:0x1CC fn_1_26C = .text:0x0000026C; // type:function size:0x78C fn_1_9F8 = .text:0x000009F8; // type:function size:0xC8 fn_1_AC0 = .text:0x00000AC0; // type:function size:0x6B8 @@ -8,7 +8,7 @@ fn_1_1178 = .text:0x00001178; // type:function size:0x3B4 fn_1_152C = .text:0x0000152C; // type:function size:0xBD4 fn_1_2100 = .text:0x00002100; // type:function size:0x374 fn_1_2474 = .text:0x00002474; // type:function size:0x4D0 -fn_1_2944 = .text:0x00002944; // type:function size:0x84 +logoReadNintendo = .text:0x00002944; // type:function size:0x84 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float @@ -56,7 +56,7 @@ lbl_1_data_58 = .data:0x00000058; // type:object size:0x4 lbl_1_data_5C = .data:0x0000005C; // type:object size:0x1A data:string lbl_1_data_76 = .data:0x00000076; // type:object size:0x13 data:string lbl_1_data_89 = .data:0x00000089; // type:object size:0x17 -lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x307D +logoNintendoData = .data:0x000000A0; // type:object size:0x307D align:32 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x6 lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x6 data:2byte diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 7be80bd4..f852caa0 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -47,6 +47,14 @@ game/decode.c: game/font.c: .data start:0x8011FE00 end:0x80121E00 +game/init.c: + .text start:0x80009AFC end:0x8000A464 + .data start:0x80121E00 end:0x80121F50 + .bss start:0x80145A40 end:0x80145A80 + .sdata start:0x801D3448 end:0x801D3460 + .sbss start:0x801D3AF8 end:0x801D3B28 + .sdata2 start:0x801D4968 end:0x801D4978 + game/jmp.c: .text start:0x8000A464 end:0x8000A558 @@ -89,6 +97,74 @@ game/sprput.c: .sbss start:0x801D3B50 end:0x801D3B58 .sdata2 start:0x801D49F0 end:0x801D4A28 +game/hsfload.c: + .text start:0x80010B30 end:0x80014018 + .data start:0x80122320 end:0x80122390 + .bss start:0x8015C6C0 end:0x8015CC80 + .sbss start:0x801D3B58 end:0x801D3B90 + +game/hsfdraw.c: + .text start:0x80014018 end:0x8001F9AC + .rodata start:0x8011DD20 end:0x8011DD30 + .data start:0x80122390 end:0x801225A0 + .bss start:0x8015CC80 end:0x801677C0 + .sdata start:0x801D3470 end:0x801D3488 + .sbss start:0x801D3B90 end:0x801D3C30 + .sdata2 start:0x801D4A28 end:0x801D4AB0 + +game/hsfman.c: + .text start:0x8001F9AC end:0x800250E8 + .data start:0x801225A0 end:0x8012D658 + .bss start:0x801677C0 end:0x8018D3D0 + .sbss start:0x801D3C30 end:0x801D3C60 + .sdata2 start:0x801D4AB0 end:0x801D4B10 + .sbss2 start:0x801D6BE0 end:0x801D6BE8 + +game/objmain.c: + .text start:0x8002EBD8 end:0x8002FF4C + .data start:0x8012D918 end:0x8012DCC8 + .bss start:0x8018FB38 end:0x8018FBF8 + .sdata start:0x801D3498 end:0x801D34A0 + .sbss start:0x801D3CC0 end:0x801D3CF0 + .sdata2 start:0x801D4C78 end:0x801D4CA0 + +game/fault.c: + .text start:0x8002FF4C end:0x800308B8 + .data start:0x8012DCC8 end:0x8012E4F0 + .bss start:0x8018FBF8 end:0x8018FC10 + .sdata start:0x801D34A0 end:0x801D34B0 + .sbss start:0x801D3CF0 end:0x801D3D00 + +game/ovllist.c: + .data start:0x8012F790 end:0x80130100 + +game/frand.c: + .text start:0x800325F4 end:0x80032830 + .sbss start:0x801D3D10 end:0x801D3D18 + .sdata2 start:0x801D4CB0 end:0x801D4CC0 + +game/window.c: + .text start:0x8004207C end:0x800483A0 + .data start:0x80130140 end:0x80130688 + .bss start:0x801923C0 end:0x801967E0 + .sdata start:0x801D35E8 end:0x801D35F0 + .sbss start:0x801D3DB0 end:0x801D3DF8 + .sdata2 start:0x801D4F08 end:0x801D4F98 + +game/messdata.c: + .text start:0x800483A0 end:0x80048488 + +game/card.c: + .text start:0x80048488 end:0x80048A84 + .data start:0x80130688 end:0x801306D8 + .sbss start:0x801D3DF8 end:0x801D3E00 + +game/armem.c: + .text start:0x80048A84 end:0x800498F0 + .data start:0x801306D8 end:0x801307C8 + .bss start:0x801967E0 end:0x80196EC0 + .sbss start:0x801D3E00 end:0x801D3E10 + Runtime.PPCEABI.H/global_destructor_chain.c: .text start:0x800E2008 end:0x800E2068 .dtors start:0x8011DCE8 end:0x8011DCEC diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index e33b7341..8fc54a14 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -91,14 +91,14 @@ HuDecodeSlide = .text:0x80009400; // type:function size:0x200 scope:local HuDecodeFslide = .text:0x80009600; // type:function size:0x1D8 scope:local HuDecodeData = .text:0x800097D8; // type:function size:0x324 HuSysInit = .text:0x80009AFC; // type:function size:0x138 -fn_80009C34 = .text:0x80009C34; // type:function size:0xD0 -fn_80009D04 = .text:0x80009D04; // type:function size:0x164 -fn_80009E68 = .text:0x80009E68; // type:function size:0x13C -fn_80009FA4 = .text:0x80009FA4; // type:function size:0x54 -fn_80009FF8 = .text:0x80009FF8; // type:function size:0xE4 -fn_8000A0DC = .text:0x8000A0DC; // type:function size:0xC8 -fn_8000A1A4 = .text:0x8000A1A4; // type:function size:0x6C -fn_8000A210 = .text:0x8000A210; // type:function size:0x254 +InitRenderMode = .text:0x80009C34; // type:function size:0xD0 scope:local +InitGX = .text:0x80009D04; // type:function size:0x164 scope:local +InitMem = .text:0x80009E68; // type:function size:0x13C scope:local +InitVI = .text:0x80009FA4; // type:function size:0x54 scope:local +HuSysBeforeRender = .text:0x80009FF8; // type:function size:0xE4 +HuSysDoneRender = .text:0x8000A0DC; // type:function size:0xC8 +SwapBuffers = .text:0x8000A1A4; // type:function size:0x6C scope:local +LoadMemInfo = .text:0x8000A210; // type:function size:0x254 scope:local gcsetjmp = .text:0x8000A464; // type:function size:0x74 gclongjmp = .text:0x8000A4D8; // type:function size:0x80 HuMemInitAll = .text:0x8000A558; // type:function size:0x12C @@ -200,197 +200,197 @@ HuSprDisp = .text:0x8000F7F8; // type:function size:0xECC HuSprTexLoad = .text:0x800106C4; // type:function size:0x29C HuSprExecLayerSet = .text:0x80010960; // type:function size:0x58 HuSprLayerHook = .text:0x800109B8; // type:function size:0x178 -fn_80010B30 = .text:0x80010B30; // type:function size:0xB0 -fn_80010BE0 = .text:0x80010BE0; // type:function size:0xA0 -fn_80010C80 = .text:0x80010C80; // type:function size:0xC8 -fn_80010D48 = .text:0x80010D48; // type:function size:0x284 -fn_80010FCC = .text:0x80010FCC; // type:function size:0x38 -fn_80011004 = .text:0x80011004; // type:function size:0x210 -fn_80011214 = .text:0x80011214; // type:function size:0xF8 -fn_8001130C = .text:0x8001130C; // type:function size:0x80 -fn_8001138C = .text:0x8001138C; // type:function size:0x130 -fn_800114BC = .text:0x800114BC; // type:function size:0x1C0 -fn_8001167C = .text:0x8001167C; // type:function size:0x128 -fn_800117A4 = .text:0x800117A4; // type:function size:0x1A8 -fn_8001194C = .text:0x8001194C; // type:function size:0x190 -fn_80011ADC = .text:0x80011ADC; // type:function size:0x7A8 -fn_80012284 = .text:0x80012284; // type:function size:0x15C -fn_800123E0 = .text:0x800123E0; // type:function size:0x464 -fn_80012844 = .text:0x80012844; // type:function size:0x198 -fn_800129DC = .text:0x800129DC; // type:function size:0x12C -fn_80012B08 = .text:0x80012B08; // type:function size:0x1E8 -fn_80012CF0 = .text:0x80012CF0; // type:function size:0x168 -fn_80012E58 = .text:0x80012E58; // type:function size:0xD0 -fn_80012F28 = .text:0x80012F28; // type:function size:0x174 -fn_8001309C = .text:0x8001309C; // type:function size:0x16C -fn_80013208 = .text:0x80013208; // type:function size:0xE8 -fn_800132F0 = .text:0x800132F0; // type:function size:0x38 -fn_80013328 = .text:0x80013328; // type:function size:0x938 -fn_80013C60 = .text:0x80013C60; // type:function size:0x80 -fn_80013CE0 = .text:0x80013CE0; // type:function size:0x94 -fn_80013D74 = .text:0x80013D74; // type:function size:0x44 -fn_80013DB8 = .text:0x80013DB8; // type:function size:0x44 -fn_80013DFC = .text:0x80013DFC; // type:function size:0x44 -fn_80013E40 = .text:0x80013E40; // type:function size:0x44 -fn_80013E84 = .text:0x80013E84; // type:function size:0x44 -fn_80013EC8 = .text:0x80013EC8; // type:function size:0x44 -fn_80013F0C = .text:0x80013F0C; // type:function size:0x44 -fn_80013F50 = .text:0x80013F50; // type:function size:0x3C -fn_80013F8C = .text:0x80013F8C; // type:function size:0x44 -fn_80013FD0 = .text:0x80013FD0; // type:function size:0x24 -fn_80013FF4 = .text:0x80013FF4; // type:function size:0x24 -fn_80014018 = .text:0x80014018; // type:function size:0xC -fn_80014024 = .text:0x80014024; // type:function size:0x1A0 -fn_800141C4 = .text:0x800141C4; // type:function size:0xEC -fn_800142B0 = .text:0x800142B0; // type:function size:0x86C -fn_80014B1C = .text:0x80014B1C; // type:function size:0x4C0 -fn_80014FDC = .text:0x80014FDC; // type:function size:0x10DC -fn_800160B8 = .text:0x800160B8; // type:function size:0x8E8 -fn_800169A0 = .text:0x800169A0; // type:function size:0x2588 -fn_80018F28 = .text:0x80018F28; // type:function size:0x164 -fn_8001908C = .text:0x8001908C; // type:function size:0x180 -fn_8001920C = .text:0x8001920C; // type:function size:0xB0 -fn_800192BC = .text:0x800192BC; // type:function size:0x280 -fn_8001953C = .text:0x8001953C; // type:function size:0x29C -fn_800197D8 = .text:0x800197D8; // type:function size:0x8C -fn_80019864 = .text:0x80019864; // type:function size:0xCC -fn_80019930 = .text:0x80019930; // type:function size:0x5E4 -fn_80019F14 = .text:0x80019F14; // type:function size:0x75C -fn_8001A670 = .text:0x8001A670; // type:function size:0x248 -fn_8001A8B8 = .text:0x8001A8B8; // type:function size:0x198 -fn_8001AA50 = .text:0x8001AA50; // type:function size:0x248 -fn_8001AC98 = .text:0x8001AC98; // type:function size:0x17C -fn_8001AE14 = .text:0x8001AE14; // type:function size:0x1B4 -fn_8001AFC8 = .text:0x8001AFC8; // type:function size:0xB00 -fn_8001BAC8 = .text:0x8001BAC8; // type:function size:0x6D0 -fn_8001C198 = .text:0x8001C198; // type:function size:0xBC -fn_8001C254 = .text:0x8001C254; // type:function size:0x438 -fn_8001C68C = .text:0x8001C68C; // type:function size:0x2A8 -fn_8001C934 = .text:0x8001C934; // type:function size:0x68 -fn_8001C99C = .text:0x8001C99C; // type:function size:0xD08 -fn_8001D6A4 = .text:0x8001D6A4; // type:function size:0x3A8 -fn_8001DA4C = .text:0x8001DA4C; // type:function size:0x2C4 -fn_8001DD10 = .text:0x8001DD10; // type:function size:0x2C8 -fn_8001DFD8 = .text:0x8001DFD8; // type:function size:0x4C -fn_8001E024 = .text:0x8001E024; // type:function size:0xF4 -fn_8001E118 = .text:0x8001E118; // type:function size:0xF0 -fn_8001E208 = .text:0x8001E208; // type:function size:0x70 -fn_8001E278 = .text:0x8001E278; // type:function size:0x1E0 -fn_8001E458 = .text:0x8001E458; // type:function size:0x190 -fn_8001E5E8 = .text:0x8001E5E8; // type:function size:0x90 -fn_8001E678 = .text:0x8001E678; // type:function size:0x318 -fn_8001E990 = .text:0x8001E990; // type:function size:0x80 -fn_8001EA10 = .text:0x8001EA10; // type:function size:0x7B0 -fn_8001F1C0 = .text:0x8001F1C0; // type:function size:0x574 -fn_8001F734 = .text:0x8001F734; // type:function size:0x158 -fn_8001F88C = .text:0x8001F88C; // type:function size:0x90 -fn_8001F91C = .text:0x8001F91C; // type:function size:0x90 +LoadHSF = .text:0x80010B30; // type:function size:0xB0 +ClusterAdjustObject = .text:0x80010BE0; // type:function size:0xA0 +FileLoad = .text:0x80010C80; // type:function size:0xC8 scope:local +SetHsfModel = .text:0x80010D48; // type:function size:0x284 scope:local +SetName = .text:0x80010FCC; // type:function size:0x38 +MaterialLoad = .text:0x80011004; // type:function size:0x210 scope:local +AttributeLoad = .text:0x80011214; // type:function size:0xF8 scope:local +SceneLoad = .text:0x8001130C; // type:function size:0x80 scope:local +ColorLoad = .text:0x8001138C; // type:function size:0x130 scope:local +VertexLoad = .text:0x800114BC; // type:function size:0x1C0 scope:local +NormalLoad = .text:0x8001167C; // type:function size:0x128 scope:local +STLoad = .text:0x800117A4; // type:function size:0x1A8 scope:local +FaceLoad = .text:0x8001194C; // type:function size:0x190 scope:local +DispObject = .text:0x80011ADC; // type:function size:0x7A8 scope:local +ObjectLoad = .text:0x80012284; // type:function size:0x15C scope:local +CenvLoad = .text:0x800123E0; // type:function size:0x464 scope:local +SkeletonLoad = .text:0x80012844; // type:function size:0x198 scope:local +PartLoad = .text:0x800129DC; // type:function size:0x12C scope:local +ClusterLoad = .text:0x80012B08; // type:function size:0x1E8 scope:local +ShapeLoad = .text:0x80012CF0; // type:function size:0x168 scope:local +MapAttrLoad = .text:0x80012E58; // type:function size:0xD0 scope:local +BitmapLoad = .text:0x80012F28; // type:function size:0x174 scope:local +PaletteLoad = .text:0x8001309C; // type:function size:0x16C scope:local +MakeObjectName = .text:0x80013208; // type:function size:0xE8 +CmpObjectName = .text:0x800132F0; // type:function size:0x38 +MotionLoad = .text:0x80013328; // type:function size:0x938 scope:local +MatrixLoad = .text:0x80013C60; // type:function size:0x80 scope:local +SearchObjectSetName = .text:0x80013CE0; // type:function size:0x94 scope:local +SearchVertexPtr = .text:0x80013D74; // type:function size:0x44 scope:local +SearchNormalPtr = .text:0x80013DB8; // type:function size:0x44 scope:local +SearchStPtr = .text:0x80013DFC; // type:function size:0x44 scope:local +SearchColorPtr = .text:0x80013E40; // type:function size:0x44 scope:local +SearchFacePtr = .text:0x80013E84; // type:function size:0x44 scope:local +SearchCenvPtr = .text:0x80013EC8; // type:function size:0x44 scope:local +SearchPartPtr = .text:0x80013F0C; // type:function size:0x44 scope:local +SearchPalettePtr = .text:0x80013F50; // type:function size:0x3C scope:local +SearchBitmapPtr = .text:0x80013F8C; // type:function size:0x44 scope:local +GetString = .text:0x80013FD0; // type:function size:0x24 scope:local +GetMotionString = .text:0x80013FF4; // type:function size:0x24 scope:local +Hu3DDrawPreInit = .text:0x80014018; // type:function size:0xC +Hu3DDraw = .text:0x80014024; // type:function size:0x1A0 +objCall = .text:0x800141C4; // type:function size:0xEC scope:local +objMesh = .text:0x800142B0; // type:function size:0x86C scope:local +ObjCullCheck = .text:0x80014B1C; // type:function size:0x4C0 +FaceDraw = .text:0x80014FDC; // type:function size:0x10DC scope:local +SetTevStageNoTex = .text:0x800160B8; // type:function size:0x8E8 scope:local +SetTevStageTex = .text:0x800169A0; // type:function size:0x2588 scope:local +SetKColor = .text:0x80018F28; // type:function size:0x164 scope:local +SetKColorRGB = .text:0x8001908C; // type:function size:0x180 scope:local +FlushKColor = .text:0x8001920C; // type:function size:0xB0 scope:local +SetReflect = .text:0x800192BC; // type:function size:0x280 scope:local +SetProjection = .text:0x8001953C; // type:function size:0x29C scope:local +SetShadowTex = .text:0x800197D8; // type:function size:0x8C scope:local +SetShadow = .text:0x80019864; // type:function size:0xCC scope:local +FaceDrawShadow = .text:0x80019930; // type:function size:0x5E4 scope:local +LoadTexture = .text:0x80019F14; // type:function size:0x75C scope:local +objNull = .text:0x8001A670; // type:function size:0x248 scope:local +objRoot = .text:0x8001A8B8; // type:function size:0x198 scope:local +objJoint = .text:0x8001AA50; // type:function size:0x248 scope:local +objMap = .text:0x8001AC98; // type:function size:0x17C scope:local +objReplica = .text:0x8001AE14; // type:function size:0x1B4 scope:local +Hu3DDrawPost = .text:0x8001AFC8; // type:function size:0xB00 +ObjDraw = .text:0x8001BAC8; // type:function size:0x6D0 scope:local +MakeDisplayList = .text:0x8001C198; // type:function size:0xBC +MDObjCall = .text:0x8001C254; // type:function size:0x438 scope:local +MDObjMesh = .text:0x8001C68C; // type:function size:0x2A8 scope:local +ObjConstantMake = .text:0x8001C934; // type:function size:0x68 +MDFaceDraw = .text:0x8001C99C; // type:function size:0xD08 scope:local +MakeCalcNBT = .text:0x8001D6A4; // type:function size:0x3A8 scope:local +MakeNBT = .text:0x8001DA4C; // type:function size:0x2C4 scope:local +MDFaceCnt = .text:0x8001DD10; // type:function size:0x2C8 scope:local +mtxTransCat = .text:0x8001DFD8; // type:function size:0x4C +mtxRotCat = .text:0x8001E024; // type:function size:0xF4 +mtxRot = .text:0x8001E118; // type:function size:0xF0 +mtxScaleCat = .text:0x8001E208; // type:function size:0x70 +HmfInverseMtxF3X3 = .text:0x8001E278; // type:function size:0x1E0 +SetDefLight = .text:0x8001E458; // type:function size:0x190 +Hu3DModelObjPosGet = .text:0x8001E5E8; // type:function size:0x90 +Hu3DModelObjMtxGet = .text:0x8001E678; // type:function size:0x318 +PGObjCall = .text:0x8001E990; // type:function size:0x80 +PGObjCalc = .text:0x8001EA10; // type:function size:0x7B0 +PGObjReplica = .text:0x8001F1C0; // type:function size:0x574 +Hu3DObjDuplicate = .text:0x8001F734; // type:function size:0x158 +Hu3DModelObjDrawInit = .text:0x8001F88C; // type:function size:0x90 +Hu3DModelObjDraw = .text:0x8001F91C; // type:function size:0x90 Hu3DInit = .text:0x8001F9AC; // type:function size:0x220 -fn_8001FBCC = .text:0x8001FBCC; // type:function size:0xD8 -fn_8001FCA4 = .text:0x8001FCA4; // type:function size:0x688 -fn_8002032C = .text:0x8002032C; // type:function size:0x158 +Hu3DPreProc = .text:0x8001FBCC; // type:function size:0xD8 +Hu3DExec = .text:0x8001FCA4; // type:function size:0x688 +Hu3DAllKill = .text:0x8002032C; // type:function size:0x158 Hu3DBGColorSet = .text:0x80020484; // type:function size:0x18 -fn_8002049C = .text:0x8002049C; // type:function size:0x1C -fn_800204B8 = .text:0x800204B8; // type:function size:0xC -fn_800204C4 = .text:0x800204C4; // type:function size:0xC -fn_800204D0 = .text:0x800204D0; // type:function size:0x330 -fn_80020800 = .text:0x80020800; // type:function size:0x2E8 -fn_80020AE8 = .text:0x80020AE8; // type:function size:0x1C8 -fn_80020CB0 = .text:0x80020CB0; // type:function size:0x34C -fn_80020FFC = .text:0x80020FFC; // type:function size:0xD0 -fn_800210CC = .text:0x800210CC; // type:function size:0x34 -fn_80021100 = .text:0x80021100; // type:function size:0x40 -fn_80021140 = .text:0x80021140; // type:function size:0x34 -fn_80021174 = .text:0x80021174; // type:function size:0x40 -fn_800211B4 = .text:0x800211B4; // type:function size:0x34 -fn_800211E8 = .text:0x800211E8; // type:function size:0x40 -fn_80021228 = .text:0x80021228; // type:function size:0x54 -fn_8002127C = .text:0x8002127C; // type:function size:0x50 -fn_800212CC = .text:0x800212CC; // type:function size:0x2C -fn_800212F8 = .text:0x800212F8; // type:function size:0x2C -fn_80021324 = .text:0x80021324; // type:function size:0x44 -fn_80021368 = .text:0x80021368; // type:function size:0x44 -fn_800213AC = .text:0x800213AC; // type:function size:0x2C -fn_800213D8 = .text:0x800213D8; // type:function size:0x6C -fn_80021444 = .text:0x80021444; // type:function size:0xD8 -fn_8002151C = .text:0x8002151C; // type:function size:0xF8 -fn_80021614 = .text:0x80021614; // type:function size:0x98 -fn_800216AC = .text:0x800216AC; // type:function size:0xB0 -fn_8002175C = .text:0x8002175C; // type:function size:0xA0 -fn_800217FC = .text:0x800217FC; // type:function size:0x34 -fn_80021830 = .text:0x80021830; // type:function size:0x34 -fn_80021864 = .text:0x80021864; // type:function size:0x88 -fn_800218EC = .text:0x800218EC; // type:function size:0xBC -fn_800219A8 = .text:0x800219A8; // type:function size:0x34 -fn_800219DC = .text:0x800219DC; // type:function size:0xEC -fn_80021AC8 = .text:0x80021AC8; // type:function size:0xB4 -fn_80021B7C = .text:0x80021B7C; // type:function size:0xF0 -fn_80021C6C = .text:0x80021C6C; // type:function size:0x44 -fn_80021CB0 = .text:0x80021CB0; // type:function size:0x44 -fn_80021CF4 = .text:0x80021CF4; // type:function size:0xBC -fn_80021DB0 = .text:0x80021DB0; // type:function size:0x30 +Hu3DLayerHookSet = .text:0x8002049C; // type:function size:0x1C +Hu3DPauseSet = .text:0x800204B8; // type:function size:0xC +Hu3DNoSyncSet = .text:0x800204C4; // type:function size:0xC +Hu3DModelCreate = .text:0x800204D0; // type:function size:0x330 +Hu3DModelLink = .text:0x80020800; // type:function size:0x2E8 +Hu3DHookFuncCreate = .text:0x80020AE8; // type:function size:0x1C8 +Hu3DModelKill = .text:0x80020CB0; // type:function size:0x34C +Hu3DModelAllKill = .text:0x80020FFC; // type:function size:0xD0 +Hu3DModelPosSet = .text:0x800210CC; // type:function size:0x34 +Hu3DModelPosSetV = .text:0x80021100; // type:function size:0x40 +Hu3DModelRotSet = .text:0x80021140; // type:function size:0x34 +Hu3DModelRotSetV = .text:0x80021174; // type:function size:0x40 +Hu3DModelScaleSet = .text:0x800211B4; // type:function size:0x34 +Hu3DModelScaleSetV = .text:0x800211E8; // type:function size:0x40 +Hu3DModelAttrSet = .text:0x80021228; // type:function size:0x54 +Hu3DModelAttrReset = .text:0x8002127C; // type:function size:0x50 +Hu3DModelAttrGet = .text:0x800212CC; // type:function size:0x2C +Hu3DModelMotionAttrGet = .text:0x800212F8; // type:function size:0x2C +Hu3DModelClusterAttrSet = .text:0x80021324; // type:function size:0x44 +Hu3DModelClusterAttrReset = .text:0x80021368; // type:function size:0x44 +Hu3DModelCameraSet = .text:0x800213AC; // type:function size:0x2C +Hu3DModelLayerSet = .text:0x800213D8; // type:function size:0x6C +Hu3DModelObjPtrGet = .text:0x80021444; // type:function size:0xD8 +Hu3DModelTPLvlSet = .text:0x8002151C; // type:function size:0xF8 +Hu3DModelHiliteMapSet = .text:0x80021614; // type:function size:0x98 +Hu3DModelShadowSet = .text:0x800216AC; // type:function size:0xB0 +Hu3DModelShadowReset = .text:0x8002175C; // type:function size:0xA0 +Hu3DModelShadowDispOn = .text:0x800217FC; // type:function size:0x34 +Hu3DModelShadowDispOff = .text:0x80021830; // type:function size:0x34 +Hu3DModelShadowMapSet = .text:0x80021864; // type:function size:0x88 +Hu3DModelShadowMapObjSet = .text:0x800218EC; // type:function size:0xBC +Hu3DModelAmbSet = .text:0x800219A8; // type:function size:0x34 +Hu3DModelHookSet = .text:0x800219DC; // type:function size:0xEC +Hu3DModelHookReset = .text:0x80021AC8; // type:function size:0xB4 +Hu3DModelHookObjReset = .text:0x80021B7C; // type:function size:0xF0 +Hu3DModelProjectionSet = .text:0x80021C6C; // type:function size:0x44 +Hu3DModelProjectionReset = .text:0x80021CB0; // type:function size:0x44 +Hu3DModelHiliteTypeSet = .text:0x80021CF4; // type:function size:0xBC +Hu3DModelReflectTypeSet = .text:0x80021DB0; // type:function size:0x30 Hu3DCameraCreate = .text:0x80021DE0; // type:function size:0x134 Hu3DCameraPerspectiveSet = .text:0x80021F14; // type:function size:0x80 Hu3DCameraViewportSet = .text:0x80021F94; // type:function size:0x88 -fn_8002201C = .text:0x8002201C; // type:function size:0x90 -fn_800220AC = .text:0x800220AC; // type:function size:0x98 -fn_80022144 = .text:0x80022144; // type:function size:0xB8 -fn_800221FC = .text:0x800221FC; // type:function size:0x78 -fn_80022274 = .text:0x80022274; // type:function size:0xD0 -fn_80022344 = .text:0x80022344; // type:function size:0xDC -fn_80022420 = .text:0x80022420; // type:function size:0x3C0 -fn_800227E0 = .text:0x800227E0; // type:function size:0x88 -fn_80022868 = .text:0x80022868; // type:function size:0x58 -fn_800228C0 = .text:0x800228C0; // type:function size:0xD4 -fn_80022994 = .text:0x80022994; // type:function size:0x34 -fn_800229C8 = .text:0x800229C8; // type:function size:0x74 -fn_80022A3C = .text:0x80022A3C; // type:function size:0xA0 -fn_80022ADC = .text:0x80022ADC; // type:function size:0x104 -fn_80022BE0 = .text:0x80022BE0; // type:function size:0xA8 -fn_80022C88 = .text:0x80022C88; // type:function size:0x17C -fn_80022E04 = .text:0x80022E04; // type:function size:0x44 -fn_80022E48 = .text:0x80022E48; // type:function size:0x6C -fn_80022EB4 = .text:0x80022EB4; // type:function size:0x48 -fn_80022EFC = .text:0x80022EFC; // type:function size:0x70 -fn_80022F6C = .text:0x80022F6C; // type:function size:0x58 -fn_80022FC4 = .text:0x80022FC4; // type:function size:0x80 -fn_80023044 = .text:0x80023044; // type:function size:0x20 -fn_80023064 = .text:0x80023064; // type:function size:0xBC -fn_80023120 = .text:0x80023120; // type:function size:0x68 -fn_80023188 = .text:0x80023188; // type:function size:0x38 -fn_800231C0 = .text:0x800231C0; // type:function size:0x60 -fn_80023220 = .text:0x80023220; // type:function size:0x70 -fn_80023290 = .text:0x80023290; // type:function size:0x9C -fn_8002332C = .text:0x8002332C; // type:function size:0x90 -fn_800233BC = .text:0x800233BC; // type:function size:0xBC -fn_80023478 = .text:0x80023478; // type:function size:0x80 -fn_800234F8 = .text:0x800234F8; // type:function size:0xAC -fn_800235A4 = .text:0x800235A4; // type:function size:0xC4 -fn_80023668 = .text:0x80023668; // type:function size:0xF0 -fn_80023758 = .text:0x80023758; // type:function size:0x54 -fn_800237AC = .text:0x800237AC; // type:function size:0x7C -fn_80023828 = .text:0x80023828; // type:function size:0x4D0 -fn_80023CF8 = .text:0x80023CF8; // type:function size:0x130 -fn_80023E28 = .text:0x80023E28; // type:function size:0x254 -fn_8002407C = .text:0x8002407C; // type:function size:0x68 -fn_800240E4 = .text:0x800240E4; // type:function size:0x8 -fn_800240EC = .text:0x800240EC; // type:function size:0x60 -fn_8002414C = .text:0x8002414C; // type:function size:0x74 -fn_800241C0 = .text:0x800241C0; // type:function size:0x188 -fn_80024348 = .text:0x80024348; // type:function size:0x64 -fn_800243AC = .text:0x800243AC; // type:function size:0x2C -fn_800243D8 = .text:0x800243D8; // type:function size:0x78 -fn_80024450 = .text:0x80024450; // type:function size:0x860 -fn_80024CB0 = .text:0x80024CB0; // type:function size:0x130 -fn_80024DE0 = .text:0x80024DE0; // type:function size:0x60 -fn_80024E40 = .text:0x80024E40; // type:function size:0x88 -fn_80024EC8 = .text:0x80024EC8; // type:function size:0x38 -fn_80024F00 = .text:0x80024F00; // type:function size:0x1E8 -fn_800250E8 = .text:0x800250E8; // type:function size:0x48 +Hu3DCameraScissorSet = .text:0x8002201C; // type:function size:0x90 +Hu3DCameraPosSet = .text:0x800220AC; // type:function size:0x98 +Hu3DCameraPosSetV = .text:0x80022144; // type:function size:0xB8 +Hu3DCameraKill = .text:0x800221FC; // type:function size:0x78 +Hu3DCameraAllKill = .text:0x80022274; // type:function size:0xD0 +Hu3DCameraSet = .text:0x80022344; // type:function size:0xDC +Hu3DModelCameraInfoSet = .text:0x80022420; // type:function size:0x3C0 +Hu3DModelCameraCreate = .text:0x800227E0; // type:function size:0x88 +Hu3DCameraMotionOn = .text:0x80022868; // type:function size:0x58 +Hu3DCameraMotionStart = .text:0x800228C0; // type:function size:0xD4 +Hu3DCameraMotionOff = .text:0x80022994; // type:function size:0x34 +Hu3DLighInit = .text:0x800229C8; // type:function size:0x74 +Hu3DGLightCreate = .text:0x80022A3C; // type:function size:0xA0 +Hu3DGLightCreateV = .text:0x80022ADC; // type:function size:0x104 +Hu3DLLightCreate = .text:0x80022BE0; // type:function size:0xA8 +Hu3DLLightCreateV = .text:0x80022C88; // type:function size:0x17C +Hu3DGLightSpotSet = .text:0x80022E04; // type:function size:0x44 +Hu3DLLightSpotSet = .text:0x80022E48; // type:function size:0x6C +Hu3DGLightInfinitytSet = .text:0x80022EB4; // type:function size:0x48 +Hu3DLLightInfinitytSet = .text:0x80022EFC; // type:function size:0x70 +Hu3DGLightPointSet = .text:0x80022F6C; // type:function size:0x58 +Hu3DLLightPointSet = .text:0x80022FC4; // type:function size:0x80 +Hu3DGLightKill = .text:0x80023044; // type:function size:0x20 +Hu3DLLightKill = .text:0x80023064; // type:function size:0xBC +Hu3DLightAllKill = .text:0x80023120; // type:function size:0x68 +Hu3DGLightColorSet = .text:0x80023188; // type:function size:0x38 +Hu3DLLightColorSet = .text:0x800231C0; // type:function size:0x60 +Hu3DGLightPosSetV = .text:0x80023220; // type:function size:0x70 +Hu3DLLightPosSetV = .text:0x80023290; // type:function size:0x9C +Hu3DGLightPosSet = .text:0x8002332C; // type:function size:0x90 +Hu3DLLightPosSet = .text:0x800233BC; // type:function size:0xBC +Hu3DGLightPosAimSetV = .text:0x80023478; // type:function size:0x80 +Hu3DLLightPosAimSetV = .text:0x800234F8; // type:function size:0xAC +Hu3DGLightPosAimSet = .text:0x800235A4; // type:function size:0xC4 +Hu3DLLightPosAimSet = .text:0x80023668; // type:function size:0xF0 +Hu3DGLightStaticSet = .text:0x80023758; // type:function size:0x54 +Hu3DLLightStaticSet = .text:0x800237AC; // type:function size:0x7C +Hu3DModelLightInfoSet = .text:0x80023828; // type:function size:0x4D0 +Hu3DLightSet = .text:0x80023CF8; // type:function size:0x130 +lightSet = .text:0x80023E28; // type:function size:0x254 scope:local +Hu3DReflectMapSet = .text:0x8002407C; // type:function size:0x68 +Hu3DReflectNoSet = .text:0x800240E4; // type:function size:0x8 +Hu3DFogSet = .text:0x800240EC; // type:function size:0x60 +Hu3DFogClear = .text:0x8002414C; // type:function size:0x74 +Hu3DShadowCreate = .text:0x800241C0; // type:function size:0x188 +Hu3DShadowPosSet = .text:0x80024348; // type:function size:0x64 +Hu3DShadowTPLvlSet = .text:0x800243AC; // type:function size:0x2C +Hu3DShadowSizeSet = .text:0x800243D8; // type:function size:0x78 +Hu3DShadowExec = .text:0x80024450; // type:function size:0x860 +Hu3DProjectionCreate = .text:0x80024CB0; // type:function size:0x130 +Hu3DProjectionKill = .text:0x80024DE0; // type:function size:0x60 +Hu3DProjectionPosSet = .text:0x80024E40; // type:function size:0x88 +Hu3DProjectionTPLvlSet = .text:0x80024EC8; // type:function size:0x38 +Hu3DMipMapSet = .text:0x80024F00; // type:function size:0x1E8 +Hu3DMotionInit = .text:0x800250E8; // type:function size:0x48 fn_80025130 = .text:0x80025130; // type:function size:0xA4 -fn_800251D4 = .text:0x800251D4; // type:function size:0xC4 -fn_80025298 = .text:0x80025298; // type:function size:0x114 -fn_800253AC = .text:0x800253AC; // type:function size:0x11C +Hu3DMotionModelCreate = .text:0x800251D4; // type:function size:0xC4 +Hu3DMotionKill = .text:0x80025298; // type:function size:0x114 +Hu3DMotionAllKill = .text:0x800253AC; // type:function size:0x11C fn_800254C8 = .text:0x800254C8; // type:function size:0xBC fn_80025584 = .text:0x80025584; // type:function size:0x54 fn_800255D8 = .text:0x800255D8; // type:function size:0x20 @@ -398,36 +398,36 @@ fn_800255F8 = .text:0x800255F8; // type:function size:0x1C fn_80025614 = .text:0x80025614; // type:function size:0x1C fn_80025630 = .text:0x80025630; // type:function size:0x1C fn_8002564C = .text:0x8002564C; // type:function size:0x1F4 -fn_80025840 = .text:0x80025840; // type:function size:0xBC +Hu3DMotionShapeSet = .text:0x80025840; // type:function size:0xBC fn_800258FC = .text:0x800258FC; // type:function size:0x1C fn_80025918 = .text:0x80025918; // type:function size:0x2C fn_80025944 = .text:0x80025944; // type:function size:0x1C fn_80025960 = .text:0x80025960; // type:function size:0x44 fn_800259A4 = .text:0x800259A4; // type:function size:0x30 -fn_800259D4 = .text:0x800259D4; // type:function size:0x114 +Hu3DMotionClusterSet = .text:0x800259D4; // type:function size:0x114 fn_80025AE8 = .text:0x80025AE8; // type:function size:0xD0 fn_80025BB8 = .text:0x80025BB8; // type:function size:0x20 fn_80025BD8 = .text:0x80025BD8; // type:function size:0xC8 fn_80025CA0 = .text:0x80025CA0; // type:function size:0x2C fn_80025CCC = .text:0x80025CCC; // type:function size:0x2C -fn_80025CF8 = .text:0x80025CF8; // type:function size:0xF4 -fn_80025DEC = .text:0x80025DEC; // type:function size:0x2C -fn_80025E18 = .text:0x80025E18; // type:function size:0x2C -fn_80025E44 = .text:0x80025E44; // type:function size:0xA8 -fn_80025EEC = .text:0x80025EEC; // type:function size:0xA8 -fn_80025F94 = .text:0x80025F94; // type:function size:0x30 -fn_80025FC4 = .text:0x80025FC4; // type:function size:0x8C -fn_80026050 = .text:0x80026050; // type:function size:0x30 -fn_80026080 = .text:0x80026080; // type:function size:0x170 +Hu3DMotionTimeSet = .text:0x80025CF8; // type:function size:0xF4 +Hu3DMotionTimeGet = .text:0x80025DEC; // type:function size:0x2C +Hu3DMotionShiftTimeGet = .text:0x80025E18; // type:function size:0x2C +Hu3DMotionMaxTimeGet = .text:0x80025E44; // type:function size:0xA8 +Hu3DMotionShiftMaxTimeGet = .text:0x80025EEC; // type:function size:0xA8 +Hu3DMotionShiftStartEndSet = .text:0x80025F94; // type:function size:0x30 +Hu3DMotionMotionMaxTimeGet = .text:0x80025FC4; // type:function size:0x8C +Hu3DMotionStartEndSet = .text:0x80026050; // type:function size:0x30 +Hu3DMotionEndCheck = .text:0x80026080; // type:function size:0x170 fn_800261F0 = .text:0x800261F0; // type:function size:0x2C fn_8002621C = .text:0x8002621C; // type:function size:0x2C fn_80026248 = .text:0x80026248; // type:function size:0x114 fn_8002635C = .text:0x8002635C; // type:function size:0x5C fn_800263B8 = .text:0x800263B8; // type:function size:0x108 -fn_800264C0 = .text:0x800264C0; // type:function size:0x798 -fn_80026C58 = .text:0x80026C58; // type:function size:0x534 -fn_8002718C = .text:0x8002718C; // type:function size:0xC0 -fn_8002724C = .text:0x8002724C; // type:function size:0x2A8 +Hu3DMotionNext = .text:0x800264C0; // type:function size:0x798 +Hu3DMotionExec = .text:0x80026C58; // type:function size:0x534 +Hu3DCameraMotionExec = .text:0x8002718C; // type:function size:0xC0 +Hu3DSubMotionExec = .text:0x8002724C; // type:function size:0x2A8 fn_800274F4 = .text:0x800274F4; // type:function size:0x14C fn_80027640 = .text:0x80027640; // type:function size:0x208 fn_80027848 = .text:0x80027848; // type:function size:0x218 @@ -443,19 +443,19 @@ fn_80028718 = .text:0x80028718; // type:function size:0x124 fn_8002883C = .text:0x8002883C; // type:function size:0x19C fn_800289D8 = .text:0x800289D8; // type:function size:0x90 fn_80028A68 = .text:0x80028A68; // type:function size:0x9C -fn_80028B04 = .text:0x80028B04; // type:function size:0x7C +Hu3DAnimInit = .text:0x80028B04; // type:function size:0x7C fn_80028B80 = .text:0x80028B80; // type:function size:0x1D0 fn_80028D50 = .text:0x80028D50; // type:function size:0x1C4 fn_80028F14 = .text:0x80028F14; // type:function size:0x104 -fn_80029018 = .text:0x80029018; // type:function size:0x13C -fn_80029154 = .text:0x80029154; // type:function size:0x134 +Hu3DAnimModelKill = .text:0x80029018; // type:function size:0x13C +Hu3DAnimAllKill = .text:0x80029154; // type:function size:0x134 fn_80029288 = .text:0x80029288; // type:function size:0x34 fn_800292BC = .text:0x800292BC; // type:function size:0x38 fn_800292F4 = .text:0x800292F4; // type:function size:0x2C fn_80029320 = .text:0x80029320; // type:function size:0x48 fn_80029368 = .text:0x80029368; // type:function size:0x38 -fn_800293A0 = .text:0x800293A0; // type:function size:0x240 -fn_800295E0 = .text:0x800295E0; // type:function size:0x474 +Hu3DAnimSet = .text:0x800293A0; // type:function size:0x240 +Hu3DAnimExec = .text:0x800295E0; // type:function size:0x474 fn_80029A54 = .text:0x80029A54; // type:function size:0x1AC fn_80029C00 = .text:0x80029C00; // type:function size:0xE0 fn_80029CE0 = .text:0x80029CE0; // type:function size:0x10C @@ -476,11 +476,11 @@ fn_8002A584 = .text:0x8002A584; // type:function size:0x44 fn_8002A5C8 = .text:0x8002A5C8; // type:function size:0x3C fn_8002A604 = .text:0x8002A604; // type:function size:0x60 fn_8002A664 = .text:0x8002A664; // type:function size:0xAD4 -fn_8002B138 = .text:0x8002B138; // type:function size:0x48 +Hu3DParManInit = .text:0x8002B138; // type:function size:0x48 fn_8002B180 = .text:0x8002B180; // type:function size:0x1D4 fn_8002B354 = .text:0x8002B354; // type:function size:0x17C fn_8002B4D0 = .text:0x8002B4D0; // type:function size:0x190 -fn_8002B660 = .text:0x8002B660; // type:function size:0x1C4 +Hu3DParManAllKill = .text:0x8002B660; // type:function size:0x1C4 fn_8002B824 = .text:0x8002B824; // type:function size:0x20 fn_8002B844 = .text:0x8002B844; // type:function size:0x3C fn_8002B880 = .text:0x8002B880; // type:function size:0x3C @@ -497,52 +497,52 @@ fn_8002CB74 = .text:0x8002CB74; // type:function size:0xAC fn_8002CC20 = .text:0x8002CC20; // type:function size:0xA14 fn_8002D634 = .text:0x8002D634; // type:function size:0x244 fn_8002D878 = .text:0x8002D878; // type:function size:0x40C -fn_8002DC84 = .text:0x8002DC84; // type:function size:0x1D4 +Hu3D2Dto3D = .text:0x8002DC84; // type:function size:0x1D4 fn_8002DE58 = .text:0x8002DE58; // type:function size:0x1D0 fn_8002E028 = .text:0x8002E028; // type:function size:0x1C fn_8002E044 = .text:0x8002E044; // type:function size:0x540 fn_8002E584 = .text:0x8002E584; // type:function size:0x1C8 -fn_8002E74C = .text:0x8002E74C; // type:function size:0x94 -fn_8002E7E0 = .text:0x8002E7E0; // type:function size:0x130 -fn_8002E910 = .text:0x8002E910; // type:function size:0x40 -fn_8002E950 = .text:0x8002E950; // type:function size:0x7C -fn_8002E9CC = .text:0x8002E9CC; // type:function size:0xA0 -fn_8002EA6C = .text:0x8002EA6C; // type:function size:0x16C -fn_8002EBD8 = .text:0x8002EBD8; // type:function size:0x90 -fn_8002EC68 = .text:0x8002EC68; // type:function size:0x170 -fn_8002EDD8 = .text:0x8002EDD8; // type:function size:0xE8 +HuPerfInit = .text:0x8002E74C; // type:function size:0x94 +HuPerfCreate = .text:0x8002E7E0; // type:function size:0x130 +HuPerfZero = .text:0x8002E910; // type:function size:0x40 +HuPerfBegin = .text:0x8002E950; // type:function size:0x7C +HuPerfEnd = .text:0x8002E9CC; // type:function size:0xA0 +DSCallbackFunc = .text:0x8002EA6C; // type:function size:0x16C scope:local +omMasterInit = .text:0x8002EBD8; // type:function size:0x90 +omWatchOverlayProc = .text:0x8002EC68; // type:function size:0x170 scope:local +omOvlCallEx = .text:0x8002EDD8; // type:function size:0xE8 omOvlGotoEx = .text:0x8002EEC0; // type:function size:0x60 omOvlReturnEx = .text:0x8002EF20; // type:function size:0xF4 -fn_8002F014 = .text:0x8002F014; // type:function size:0xB8 +omOvlKill = .text:0x8002F014; // type:function size:0xB8 omOvlHisChg = .text:0x8002F0CC; // type:function size:0xA0 omOvlHisGet = .text:0x8002F16C; // type:function size:0x78 omInitObjMan = .text:0x8002F1E4; // type:function size:0x220 -fn_8002F404 = .text:0x8002F404; // type:function size:0x50 -fn_8002F454 = .text:0x8002F454; // type:function size:0x1DC -fn_8002F630 = .text:0x8002F630; // type:function size:0xF8 -fn_8002F728 = .text:0x8002F728; // type:function size:0x84 -fn_8002F7AC = .text:0x8002F7AC; // type:function size:0x190 -fn_8002F93C = .text:0x8002F93C; // type:function size:0x88 -fn_8002F9C4 = .text:0x8002F9C4; // type:function size:0xFC -fn_8002FAC0 = .text:0x8002FAC0; // type:function size:0x2C -fn_8002FAEC = .text:0x8002FAEC; // type:function size:0x10 -fn_8002FAFC = .text:0x8002FAFC; // type:function size:0x14 -fn_8002FB10 = .text:0x8002FB10; // type:function size:0x10 -fn_8002FB20 = .text:0x8002FB20; // type:function size:0x10 -fn_8002FB30 = .text:0x8002FB30; // type:function size:0x10 -fn_8002FB40 = .text:0x8002FB40; // type:function size:0x2F8 -fn_8002FE38 = .text:0x8002FE38; // type:function size:0xE0 -fn_8002FF18 = .text:0x8002FF18; // type:function size:0x2C -fn_8002FF44 = .text:0x8002FF44; // type:function size:0x8 -fn_8002FF4C = .text:0x8002FF4C; // type:function size:0x150 -fn_8003009C = .text:0x8003009C; // type:function size:0x118 -fn_800301B4 = .text:0x800301B4; // type:function size:0x34 -fn_800301E8 = .text:0x800301E8; // type:function size:0x98 -fn_80030280 = .text:0x80030280; // type:function size:0x50 -fn_800302D0 = .text:0x800302D0; // type:function size:0xF4 -fn_800303C4 = .text:0x800303C4; // type:function size:0x150 -fn_80030514 = .text:0x80030514; // type:function size:0x1F0 -fn_80030704 = .text:0x80030704; // type:function size:0x1B4 +omDestroyObjMan = .text:0x8002F404; // type:function size:0x50 +omAddObjEx = .text:0x8002F454; // type:function size:0x1DC +omInsertObj = .text:0x8002F630; // type:function size:0xF8 +omAddMember = .text:0x8002F728; // type:function size:0x84 +omDelObjEx = .text:0x8002F7AC; // type:function size:0x190 +omDelMember = .text:0x8002F93C; // type:function size:0x88 +omMakeGroupEx = .text:0x8002F9C4; // type:function size:0xFC +omGetGroupMemberListEx = .text:0x8002FAC0; // type:function size:0x2C +omSetStatBit = .text:0x8002FAEC; // type:function size:0x10 +omResetStatBit = .text:0x8002FAFC; // type:function size:0x14 +omSetTra = .text:0x8002FB10; // type:function size:0x10 +omSetRot = .text:0x8002FB20; // type:function size:0x10 +omSetSca = .text:0x8002FB30; // type:function size:0x10 +omMain = .text:0x8002FB40; // type:function size:0x2F8 +omAllPause = .text:0x8002FE38; // type:function size:0xE0 +omPauseChk = .text:0x8002FF18; // type:function size:0x2C +omCurrentOvlGet = .text:0x8002FF44; // type:function size:0x8 +OSPanic = .text:0x8002FF4C; // type:function size:0x150 +HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118 +HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34 +XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 +XFB_CR = .text:0x80030280; // type:function size:0x50 +XFB_puts = .text:0x800302D0; // type:function size:0xF4 +XFB_putcS = .text:0x800303C4; // type:function size:0x150 +XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 +XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 fn_800308B8 = .text:0x800308B8; // type:function size:0x14C fn_80030A04 = .text:0x80030A04; // type:function size:0x318 fn_80030D1C = .text:0x80030D1C; // type:function size:0x4C @@ -573,26 +573,26 @@ fn_8003150C = .text:0x8003150C; // type:function size:0x18 fn_80031524 = .text:0x80031524; // type:function size:0x34 fn_80031558 = .text:0x80031558; // type:function size:0x54 fn_800315AC = .text:0x800315AC; // type:function size:0x10 -fn_800315BC = .text:0x800315BC; // type:function size:0x238 -fn_800317F4 = .text:0x800317F4; // type:function size:0x2C4 -fn_80031AB8 = .text:0x80031AB8; // type:function size:0x74 -fn_80031B2C = .text:0x80031B2C; // type:function size:0x230 -fn_80031D5C = .text:0x80031D5C; // type:function size:0x8 -fn_80031D64 = .text:0x80031D64; // type:function size:0x50 -fn_80031DB4 = .text:0x80031DB4; // type:function size:0x2C -fn_80031DE0 = .text:0x80031DE0; // type:function size:0x6C -fn_80031E4C = .text:0x80031E4C; // type:function size:0x154 -fn_80031FA0 = .text:0x80031FA0; // type:function size:0xB4 -fn_80032054 = .text:0x80032054; // type:function size:0x13C -fn_80032190 = .text:0x80032190; // type:function size:0x138 -fn_800322C8 = .text:0x800322C8; // type:function size:0xB4 -fn_8003237C = .text:0x8003237C; // type:function size:0xC8 -fn_80032444 = .text:0x80032444; // type:function size:0xD0 -fn_80032514 = .text:0x80032514; // type:function size:0xE0 -fn_800325F4 = .text:0x800325F4; // type:function size:0xAC -fn_800326A0 = .text:0x800326A0; // type:function size:0xD8 -fn_80032778 = .text:0x80032778; // type:function size:0xB8 -fn_80032830 = .text:0x80032830; // type:function size:0x170 +omOutView = .text:0x800315BC; // type:function size:0x238 +omOutViewMulti = .text:0x800317F4; // type:function size:0x2C4 +omSystemKeyCheckSetup = .text:0x80031AB8; // type:function size:0x74 +omSystemKeyCheck = .text:0x80031B2C; // type:function size:0x230 +omSysPauseEnable = .text:0x80031D5C; // type:function size:0x8 +omSysPauseCtrl = .text:0x80031D64; // type:function size:0x50 +omDLLDBGOut = .text:0x80031DB4; // type:function size:0x2C +omDLLInit = .text:0x80031DE0; // type:function size:0x6C +omDLLStart = .text:0x80031E4C; // type:function size:0x154 +omDLLNumEnd = .text:0x80031FA0; // type:function size:0xB4 +omDLLEnd = .text:0x80032054; // type:function size:0x13C +omDLLLink = .text:0x80032190; // type:function size:0x138 +omDLLUnlink = .text:0x800322C8; // type:function size:0xB4 +omDLLSearch = .text:0x8003237C; // type:function size:0xC8 +omDLLInfoDump = .text:0x80032444; // type:function size:0xD0 +omDLLHeaderDump = .text:0x80032514; // type:function size:0xE0 +frand = .text:0x800325F4; // type:function size:0xAC +frandf = .text:0x800326A0; // type:function size:0xD8 +frandmod = .text:0x80032778; // type:function size:0xB8 +HuAudInit = .text:0x80032830; // type:function size:0x170 fn_800329A0 = .text:0x800329A0; // type:function size:0x8 fn_800329A8 = .text:0x800329A8; // type:function size:0x3C fn_800329E4 = .text:0x800329E4; // type:function size:0x24 @@ -600,9 +600,9 @@ fn_80032A08 = .text:0x80032A08; // type:function size:0x24 fn_80032A2C = .text:0x80032A2C; // type:function size:0x4 fn_80032A30 = .text:0x80032A30; // type:function size:0x28 fn_80032A58 = .text:0x80032A58; // type:function size:0x3C -fn_80032A94 = .text:0x80032A94; // type:function size:0x80 -fn_80032B14 = .text:0x80032B14; // type:function size:0x48 -fn_80032B5C = .text:0x80032B5C; // type:function size:0x68 +HuAudFXPlay = .text:0x80032A94; // type:function size:0x80 +HuAudFXPlayVol = .text:0x80032B14; // type:function size:0x48 +HuAudFXPlayVolPan = .text:0x80032B5C; // type:function size:0x68 fn_80032BC4 = .text:0x80032BC4; // type:function size:0x2C fn_80032BF0 = .text:0x80032BF0; // type:function size:0x28 fn_80032C18 = .text:0x80032C18; // type:function size:0x30 @@ -612,7 +612,7 @@ fn_80032D3C = .text:0x80032D3C; // type:function size:0x134 fn_80032E70 = .text:0x80032E70; // type:function size:0x3C fn_80032EAC = .text:0x80032EAC; // type:function size:0x6C fn_80032F18 = .text:0x80032F18; // type:function size:0x64 -fn_80032F7C = .text:0x80032F7C; // type:function size:0x20 +HuAudFXListnerKill = .text:0x80032F7C; // type:function size:0x20 fn_80032F9C = .text:0x80032F9C; // type:function size:0x2C fn_80032FC8 = .text:0x80032FC8; // type:function size:0x28 fn_80032FF0 = .text:0x80032FF0; // type:function size:0x54 @@ -631,12 +631,12 @@ fn_8003337C = .text:0x8003337C; // type:function size:0x3C fn_800333B8 = .text:0x800333B8; // type:function size:0x28 fn_800333E0 = .text:0x800333E0; // type:function size:0x24 fn_80033404 = .text:0x80033404; // type:function size:0x28 -fn_8003342C = .text:0x8003342C; // type:function size:0x104 -fn_80033530 = .text:0x80033530; // type:function size:0x1A4 -fn_800336D4 = .text:0x800336D4; // type:function size:0x60 -fn_80033734 = .text:0x80033734; // type:function size:0x154 -fn_80033888 = .text:0x80033888; // type:function size:0x58 -fn_800338E0 = .text:0x800338E0; // type:function size:0xC +HuAudDllSndGrpSet = .text:0x8003342C; // type:function size:0x104 +HuAudSndGrpSetSet = .text:0x80033530; // type:function size:0x1A4 +HuAudSndGrpSet = .text:0x800336D4; // type:function size:0x60 +HuAudSndCommonGrpSet = .text:0x80033734; // type:function size:0x154 +HuAudAUXSet = .text:0x80033888; // type:function size:0x58 +HuAudAUXVolSet = .text:0x800338E0; // type:function size:0xC fn_800338EC = .text:0x800338EC; // type:function size:0x294 fn_80033B80 = .text:0x80033B80; // type:function size:0x50 fn_80033BD0 = .text:0x80033BD0; // type:function size:0x58 @@ -644,16 +644,16 @@ fn_80033C28 = .text:0x80033C28; // type:function size:0x50 fn_80033C78 = .text:0x80033C78; // type:function size:0xAC fn_80033D24 = .text:0x80033D24; // type:function size:0xD0 fn_80033DF4 = .text:0x80033DF4; // type:function size:0x90 -fn_80033E84 = .text:0x80033E84; // type:function size:0x68 -fn_80033EEC = .text:0x80033EEC; // type:function size:0x1A4 -fn_80034090 = .text:0x80034090; // type:function size:0x23C -fn_800342CC = .text:0x800342CC; // type:function size:0x80 -fn_8003434C = .text:0x8003434C; // type:function size:0x50 -fn_8003439C = .text:0x8003439C; // type:function size:0x158 -fn_800344F4 = .text:0x800344F4; // type:function size:0x9F0 -fn_80034EE4 = .text:0x80034EE4; // type:function size:0x334 -fn_80035218 = .text:0x80035218; // type:function size:0x11C -fn_80035334 = .text:0x80035334; // type:function size:0x78 +HuSePlay = .text:0x80033E84; // type:function size:0x68 scope:local +InitEnvelope = .text:0x80033EEC; // type:function size:0x1A4 +SetEnvelopMtx = .text:0x80034090; // type:function size:0x23C scope:local +EnvelopeProc = .text:0x800342CC; // type:function size:0x80 +InitVtxParm = .text:0x8003434C; // type:function size:0x50 +SetEnvelopMain = .text:0x8003439C; // type:function size:0x158 scope:local +SetEnvelop = .text:0x800344F4; // type:function size:0x9F0 scope:local +SetMtx = .text:0x80034EE4; // type:function size:0x334 scope:local +SetRevMtx = .text:0x80035218; // type:function size:0x11C scope:local +SearchSklenton = .text:0x80035334; // type:function size:0x78 scope:local fn_800353AC = .text:0x800353AC; // type:function size:0xBC fn_80035468 = .text:0x80035468; // type:function size:0x188 fn_800355F0 = .text:0x800355F0; // type:function size:0x1A4 @@ -697,35 +697,35 @@ fn_8003F3AC = .text:0x8003F3AC; // type:function size:0xDC fn_8003F488 = .text:0x8003F488; // type:function size:0x234 fn_8003F6BC = .text:0x8003F6BC; // type:function size:0xD4 fn_8003F790 = .text:0x8003F790; // type:function size:0x128 -fn_8003F8B8 = .text:0x8003F8B8; // type:function size:0xA0 -fn_8003F958 = .text:0x8003F958; // type:function size:0x1B0 -fn_8003FB08 = .text:0x8003FB08; // type:function size:0x98 -fn_8003FBA0 = .text:0x8003FBA0; // type:function size:0x8 -fn_8003FBA8 = .text:0x8003FBA8; // type:function size:0x44 -fn_8003FBEC = .text:0x8003FBEC; // type:function size:0x44 -fn_8003FC30 = .text:0x8003FC30; // type:function size:0x48 -fn_8003FC78 = .text:0x8003FC78; // type:function size:0x48 -fn_8003FCC0 = .text:0x8003FCC0; // type:function size:0x50 -fn_8003FD10 = .text:0x8003FD10; // type:function size:0x50 -fn_8003FD60 = .text:0x8003FD60; // type:function size:0x48 -fn_8003FDA8 = .text:0x8003FDA8; // type:function size:0x48 -fn_8003FDF0 = .text:0x8003FDF0; // type:function size:0x58 -fn_8003FE48 = .text:0x8003FE48; // type:function size:0x48 -fn_8003FE90 = .text:0x8003FE90; // type:function size:0x48 -fn_8003FED8 = .text:0x8003FED8; // type:function size:0x48 -fn_8003FF20 = .text:0x8003FF20; // type:function size:0x48 +espInit = .text:0x8003F8B8; // type:function size:0xA0 +espEntry = .text:0x8003F958; // type:function size:0x1B0 +espKill = .text:0x8003FB08; // type:function size:0x98 +espGrpIDGet = .text:0x8003FBA0; // type:function size:0x8 +espDispOn = .text:0x8003FBA8; // type:function size:0x44 +espDispOff = .text:0x8003FBEC; // type:function size:0x44 +espAttrSet = .text:0x8003FC30; // type:function size:0x48 +espAttrReset = .text:0x8003FC78; // type:function size:0x48 +espPosSet = .text:0x8003FCC0; // type:function size:0x50 +espScaleSet = .text:0x8003FD10; // type:function size:0x50 +espZRotSet = .text:0x8003FD60; // type:function size:0x48 +espTPLvlSet = .text:0x8003FDA8; // type:function size:0x48 +espColorSet = .text:0x8003FDF0; // type:function size:0x58 +espSpeedSet = .text:0x8003FE48; // type:function size:0x48 +espBankSet = .text:0x8003FE90; // type:function size:0x48 +espDrawNoSet = .text:0x8003FED8; // type:function size:0x48 +espPriSet = .text:0x8003FF20; // type:function size:0x48 fn_8003FF68 = .text:0x8003FF68; // type:function size:0x268 fn_800401D0 = .text:0x800401D0; // type:function size:0x12C fn_800402FC = .text:0x800402FC; // type:function size:0x78 fn_80040374 = .text:0x80040374; // type:function size:0x98 fn_8004040C = .text:0x8004040C; // type:function size:0xF4 -fn_80040500 = .text:0x80040500; // type:function size:0xA8 -fn_800405A8 = .text:0x800405A8; // type:function size:0xA8 -fn_80040650 = .text:0x80040650; // type:function size:0x3A0 -fn_800409F0 = .text:0x800409F0; // type:function size:0x160 -fn_80040B50 = .text:0x80040B50; // type:function size:0x210 -fn_80040D60 = .text:0x80040D60; // type:function size:0x36C -fn_800410CC = .text:0x800410CC; // type:function size:0xA4 +GetClusterCurve = .text:0x80040500; // type:function size:0xA8 +GetClusterWeightCurve = .text:0x800405A8; // type:function size:0xA8 +SetClusterMain = .text:0x80040650; // type:function size:0x3A0 +ClusterProc = .text:0x800409F0; // type:function size:0x160 +ClusterMotionExec = .text:0x80040B50; // type:function size:0x210 +SetShapeMain = .text:0x80040D60; // type:function size:0x36C scope:local +ShapeProc = .text:0x800410CC; // type:function size:0xA4 fn_80041170 = .text:0x80041170; // type:function size:0xB4 fn_80041224 = .text:0x80041224; // type:function size:0x288 WipeCreate = .text:0x800414AC; // type:function size:0x12C @@ -736,109 +736,109 @@ fn_80041618 = .text:0x80041618; // type:function size:0xFC fn_80041714 = .text:0x80041714; // type:function size:0x31C fn_80041A30 = .text:0x80041A30; // type:function size:0x184 fn_80041BB4 = .text:0x80041BB4; // type:function size:0x4C8 -fn_8004207C = .text:0x8004207C; // type:function size:0x74 -fn_800420F0 = .text:0x800420F0; // type:function size:0x214 -fn_80042304 = .text:0x80042304; // type:function size:0x544 -fn_80042848 = .text:0x80042848; // type:function size:0xA4 -fn_800428EC = .text:0x800428EC; // type:function size:0x1AC -fn_80042A98 = .text:0x80042A98; // type:function size:0x7C4 -fn_8004325C = .text:0x8004325C; // type:function size:0x480 -fn_800436DC = .text:0x800436DC; // type:function size:0xF4 -fn_800437D0 = .text:0x800437D0; // type:function size:0x106C -fn_8004483C = .text:0x8004483C; // type:function size:0x54 -fn_80044890 = .text:0x80044890; // type:function size:0x90 -HuWinKill = .text:0x80044920; // type:function size:0xA4 -fn_800449C4 = .text:0x800449C4; // type:function size:0x88 -fn_80044A4C = .text:0x80044A4C; // type:function size:0x10C -fn_80044B58 = .text:0x80044B58; // type:function size:0x1A4 -fn_80044CFC = .text:0x80044CFC; // type:function size:0x80 -fn_80044D7C = .text:0x80044D7C; // type:function size:0xA9C -fn_80045818 = .text:0x80045818; // type:function size:0x68 -fn_80045880 = .text:0x80045880; // type:function size:0xE8 -fn_80045968 = .text:0x80045968; // type:function size:0x6C -fn_800459D4 = .text:0x800459D4; // type:function size:0x6C -fn_80045A40 = .text:0x80045A40; // type:function size:0x58 -fn_80045A98 = .text:0x80045A98; // type:function size:0xAC -fn_80045B44 = .text:0x80045B44; // type:function size:0x4C -fn_80045B90 = .text:0x80045B90; // type:function size:0x64 -fn_80045BF4 = .text:0x80045BF4; // type:function size:0xB8 -fn_80045CAC = .text:0x80045CAC; // type:function size:0x34 -fn_80045CE0 = .text:0x80045CE0; // type:function size:0x34 -fn_80045D14 = .text:0x80045D14; // type:function size:0x2C -fn_80045D40 = .text:0x80045D40; // type:function size:0x3C -fn_80045D7C = .text:0x80045D7C; // type:function size:0x58 -fn_80045DD4 = .text:0x80045DD4; // type:function size:0x50 -fn_80045E24 = .text:0x80045E24; // type:function size:0x60 -fn_80045E84 = .text:0x80045E84; // type:function size:0x2C -fn_80045EB0 = .text:0x80045EB0; // type:function size:0xC4 +HuWindowInit = .text:0x8004207C; // type:function size:0x74 +HuWinInit = .text:0x800420F0; // type:function size:0x214 +HuWinCreate = .text:0x80042304; // type:function size:0x544 +HuWinKill = .text:0x80042848; // type:function size:0xA4 +HuWinAllKill = .text:0x800428EC; // type:function size:0x1AC +MesDispFunc = .text:0x80042A98; // type:function size:0x7C4 scope:local +winBGMake = .text:0x8004325C; // type:function size:0x480 scope:local +HuWinProc = .text:0x800436DC; // type:function size:0xF4 scope:local +HuWinDrawMes = .text:0x800437D0; // type:function size:0x106C scope:local +HuWinCR = .text:0x8004483C; // type:function size:0x54 scope:local +_HuWinHomeClear = .text:0x80044890; // type:function size:0x90 scope:local +HuWinHomeClear = .text:0x80044920; // type:function size:0xA4 +HuWinKeyWaitEntry = .text:0x800449C4; // type:function size:0x88 +HuWinKeyWait = .text:0x80044A4C; // type:function size:0x10C scope:local +HuWinSpcFontEntry = .text:0x80044B58; // type:function size:0x1A4 scope:local +HuWinSpcFontClear = .text:0x80044CFC; // type:function size:0x80 scope:local +HuWinChoice = .text:0x80044D7C; // type:function size:0xA9C scope:local +HuWinActivePadGet = .text:0x80045818; // type:function size:0x68 +HuWinActiveKeyGetX = .text:0x80045880; // type:function size:0xE8 +HuWinPosSet = .text:0x80045968; // type:function size:0x6C +HuWinScaleSet = .text:0x800459D4; // type:function size:0x6C +HuWinZRotSet = .text:0x80045A40; // type:function size:0x58 +HuWinCenterPosSet = .text:0x80045A98; // type:function size:0xAC +HuWinDrawNoSet = .text:0x80045B44; // type:function size:0x4C +HuWinScissorSet = .text:0x80045B90; // type:function size:0x64 +HuWinPriSet = .text:0x80045BF4; // type:function size:0xB8 +HuWinAttrSet = .text:0x80045CAC; // type:function size:0x34 +HuWinAttrReset = .text:0x80045CE0; // type:function size:0x34 +HuWinStatGet = .text:0x80045D14; // type:function size:0x2C +HuWinMesColSet = .text:0x80045D40; // type:function size:0x3C +HuWinMesPalSet = .text:0x80045D7C; // type:function size:0x58 +HuWinBGTPLvlSet = .text:0x80045DD4; // type:function size:0x50 +HuWinBGColSet = .text:0x80045E24; // type:function size:0x60 +HuWinMesSpeedSet = .text:0x80045E84; // type:function size:0x2C +HuWinMesRead = .text:0x80045EB0; // type:function size:0xC4 HuWinMesSet = .text:0x80045F74; // type:function size:0x398 -fn_8004630C = .text:0x8004630C; // type:function size:0xD8 -fn_800463E4 = .text:0x800463E4; // type:function size:0x27C -fn_80046660 = .text:0x80046660; // type:function size:0x2C -fn_8004668C = .text:0x8004668C; // type:function size:0x38 -fn_800466C4 = .text:0x800466C4; // type:function size:0x40 -fn_80046704 = .text:0x80046704; // type:function size:0x50 -fn_80046754 = .text:0x80046754; // type:function size:0x8C -fn_800467E0 = .text:0x800467E0; // type:function size:0xF0 -fn_800468D0 = .text:0x800468D0; // type:function size:0x88 -fn_80046958 = .text:0x80046958; // type:function size:0x6C -fn_800469C4 = .text:0x800469C4; // type:function size:0x38 -fn_800469FC = .text:0x800469FC; // type:function size:0x68 -fn_80046A64 = .text:0x80046A64; // type:function size:0x90 -fn_80046AF4 = .text:0x80046AF4; // type:function size:0x90 -fn_80046B84 = .text:0x80046B84; // type:function size:0xC0 -fn_80046C44 = .text:0x80046C44; // type:function size:0x44 -fn_80046C88 = .text:0x80046C88; // type:function size:0x98 -fn_80046D20 = .text:0x80046D20; // type:function size:0x1D4 -fn_80046EF4 = .text:0x80046EF4; // type:function size:0x10 -fn_80046F04 = .text:0x80046F04; // type:function size:0x170 -fn_80047074 = .text:0x80047074; // type:function size:0x54 -fn_800470C8 = .text:0x800470C8; // type:function size:0x8 -fn_800470D0 = .text:0x800470D0; // type:function size:0x114 -fn_800471E4 = .text:0x800471E4; // type:function size:0x2A0 -fn_80047484 = .text:0x80047484; // type:function size:0x1CC -fn_80047650 = .text:0x80047650; // type:function size:0x88 -fn_800476D8 = .text:0x800476D8; // type:function size:0x2C -fn_80047704 = .text:0x80047704; // type:function size:0x34 -fn_80047738 = .text:0x80047738; // type:function size:0x38 -fn_80047770 = .text:0x80047770; // type:function size:0x4C -fn_800477BC = .text:0x800477BC; // type:function size:0x228 -fn_800479E4 = .text:0x800479E4; // type:function size:0x3B0 -fn_80047D94 = .text:0x80047D94; // type:function size:0x304 -fn_80048098 = .text:0x80048098; // type:function size:0xA4 -fn_8004813C = .text:0x8004813C; // type:function size:0x264 -fn_800483A0 = .text:0x800483A0; // type:function size:0xE8 -fn_80048488 = .text:0x80048488; // type:function size:0x34 -fn_800484BC = .text:0x800484BC; // type:function size:0xC4 -fn_80048580 = .text:0x80048580; // type:function size:0x58 -fn_800485D8 = .text:0x800485D8; // type:function size:0xEC -fn_800486C4 = .text:0x800486C4; // type:function size:0x28 -fn_800486EC = .text:0x800486EC; // type:function size:0x50 -fn_8004873C = .text:0x8004873C; // type:function size:0x14 -fn_80048750 = .text:0x80048750; // type:function size:0x70 -fn_800487C0 = .text:0x800487C0; // type:function size:0x68 -fn_80048828 = .text:0x80048828; // type:function size:0x100 -fn_80048928 = .text:0x80048928; // type:function size:0x38 -fn_80048960 = .text:0x80048960; // type:function size:0x50 -fn_800489B0 = .text:0x800489B0; // type:function size:0x40 -fn_800489F0 = .text:0x800489F0; // type:function size:0x4C -fn_80048A3C = .text:0x80048A3C; // type:function size:0x48 -fn_80048A84 = .text:0x80048A84; // type:function size:0x148 -fn_80048BCC = .text:0x80048BCC; // type:function size:0x16C -fn_80048D38 = .text:0x80048D38; // type:function size:0x16C -fn_80048EA4 = .text:0x80048EA4; // type:function size:0xA8 -fn_80048F4C = .text:0x80048F4C; // type:function size:0x160 -fn_800490AC = .text:0x800490AC; // type:function size:0x10 -fn_800490BC = .text:0x800490BC; // type:function size:0x2C -fn_800490E8 = .text:0x800490E8; // type:function size:0x140 -fn_80049228 = .text:0x80049228; // type:function size:0x2C -fn_80049254 = .text:0x80049254; // type:function size:0x1F0 -fn_80049444 = .text:0x80049444; // type:function size:0x44 -fn_80049488 = .text:0x80049488; // type:function size:0x8 -fn_80049490 = .text:0x80049490; // type:function size:0x58 -fn_800494E8 = .text:0x800494E8; // type:function size:0x68 -fn_80049550 = .text:0x80049550; // type:function size:0x390 -fn_800498E0 = .text:0x800498E0; // type:function size:0x10 +HuWinInsertMesSet = .text:0x8004630C; // type:function size:0xD8 +HuWinChoiceGet = .text:0x800463E4; // type:function size:0x27C +HuWinChoiceNumGet = .text:0x80046660; // type:function size:0x2C +HuWinChoiceDisable = .text:0x8004668C; // type:function size:0x38 +HuWinChoiceNowGet = .text:0x800466C4; // type:function size:0x40 +HuWinMesWait = .text:0x80046704; // type:function size:0x50 +HuWinAnimSet = .text:0x80046754; // type:function size:0x8C +HuWinSprSet = .text:0x800467E0; // type:function size:0xF0 +HuWinSprPosSet = .text:0x800468D0; // type:function size:0x88 +HuWinSprPriSet = .text:0x80046958; // type:function size:0x6C +HuWinSprIDGet = .text:0x800469C4; // type:function size:0x38 +HuWinSprKill = .text:0x800469FC; // type:function size:0x68 +HuWinDispOff = .text:0x80046A64; // type:function size:0x90 +HuWinDispOn = .text:0x80046AF4; // type:function size:0x90 +HuWinComKeyWait = .text:0x80046B84; // type:function size:0xC0 +HuWinComKeySet = .text:0x80046C44; // type:function size:0x44 +_HuWinComKeySet = .text:0x80046C88; // type:function size:0x98 +HuWinComKeyGet = .text:0x80046D20; // type:function size:0x1D4 +HuWinComKeyReset = .text:0x80046EF4; // type:function size:0x10 +HuWinMesMaxSizeGet = .text:0x80046F04; // type:function size:0x170 +HuWinInsertMesSizeGet = .text:0x80047074; // type:function size:0x54 +HuWinMesSizeCancelCRSet = .text:0x800470C8; // type:function size:0x8 +HuWinMesMaxSizeBetGet = .text:0x800470D0; // type:function size:0x114 +GetMesMaxSizeSub = .text:0x800471E4; // type:function size:0x2A0 +GetMesMaxSizeSub2 = .text:0x80047484; // type:function size:0x1CC +HuWinKeyWaitNumGet = .text:0x80047650; // type:function size:0x88 +HuWinPushKeySet = .text:0x800476D8; // type:function size:0x2C +HuWinDisablePlayerSet = .text:0x80047704; // type:function size:0x34 +HuWinDisablePlayerReset = .text:0x80047738; // type:function size:0x38 +HuWinExCreate = .text:0x80047770; // type:function size:0x4C +HuWinExCreateStyled = .text:0x800477BC; // type:function size:0x228 +HuWinExAnimIn = .text:0x800479E4; // type:function size:0x3B0 +HuWinExAnimOut = .text:0x80047D94; // type:function size:0x304 +HuWinExCleanup = .text:0x80048098; // type:function size:0xA4 +HuWinExAnimPopIn = .text:0x8004813C; // type:function size:0x264 +MessData_MesPtrGet = .text:0x800483A0; // type:function size:0xE8 +HuCardInit = .text:0x80048488; // type:function size:0x34 +HuCardCheck = .text:0x800484BC; // type:function size:0xC4 +HuCardSlotCheck = .text:0x80048580; // type:function size:0x58 +HuCardMount = .text:0x800485D8; // type:function size:0xEC +HuCardUnMount = .text:0x800486C4; // type:function size:0x28 +HuCardFormat = .text:0x800486EC; // type:function size:0x50 +MountCallBack = .text:0x8004873C; // type:function size:0x14 scope:local +HuCardOpen = .text:0x80048750; // type:function size:0x70 +HuCardRead = .text:0x800487C0; // type:function size:0x68 +HuCardCreate = .text:0x80048828; // type:function size:0x100 +HuCardClose = .text:0x80048928; // type:function size:0x38 +HuCardWrite = .text:0x80048960; // type:function size:0x50 +HuCardDelete = .text:0x800489B0; // type:function size:0x40 +HuCardSectorSizeGet = .text:0x800489F0; // type:function size:0x4C +HuCardFreeSpaceGet = .text:0x80048A3C; // type:function size:0x48 +HuARInit = .text:0x80048A84; // type:function size:0x148 +HuARMalloc = .text:0x80048BCC; // type:function size:0x16C +HuARFree = .text:0x80048D38; // type:function size:0x16C +HuAMemDump = .text:0x80048EA4; // type:function size:0xA8 +HuAR_DVDtoARAM = .text:0x80048F4C; // type:function size:0x160 +ArqCallBack = .text:0x800490AC; // type:function size:0x10 scope:local +HuAR_MRAMtoARAM = .text:0x800490BC; // type:function size:0x2C +HuAR_MRAMtoARAM2 = .text:0x800490E8; // type:function size:0x140 +HuAR_ARAMtoMRAM = .text:0x80049228; // type:function size:0x2C +HuAR_ARAMtoMRAMNum = .text:0x80049254; // type:function size:0x1F0 +ArqCallBackAM = .text:0x80049444; // type:function size:0x44 scope:local +HuARDMACheck = .text:0x80049488; // type:function size:0x8 +HuARDirCheck = .text:0x80049490; // type:function size:0x58 +HuARDirFree = .text:0x800494E8; // type:function size:0x68 +HuAR_ARAMtoMRAMFileRead = .text:0x80049550; // type:function size:0x390 +ArqCallBackAMFileRead = .text:0x800498E0; // type:function size:0x10 scope:local fn_800498F0 = .text:0x800498F0; // type:function size:0x134 fn_80049A24 = .text:0x80049A24; // type:function size:0x1C fn_80049A40 = .text:0x80049A40; // type:function size:0x98 @@ -955,10 +955,10 @@ fn_80057DD8 = .text:0x80057DD8; // type:function size:0x4C fn_80057E24 = .text:0x80057E24; // type:function size:0x5C fn_80057E80 = .text:0x80057E80; // type:function size:0xF4 fn_80057F74 = .text:0x80057F74; // type:function size:0x9C -fn_80058010 = .text:0x80058010; // type:function size:0xA0 -fn_800580B0 = .text:0x800580B0; // type:function size:0xA4 -fn_80058154 = .text:0x80058154; // type:function size:0xA4 -fn_800581F8 = .text:0x800581F8; // type:function size:0x30 +_CheckFlag = .text:0x80058010; // type:function size:0xA0 +_SetFlag = .text:0x800580B0; // type:function size:0xA4 +_ClearFlag = .text:0x80058154; // type:function size:0xA4 +_InitFlag = .text:0x800581F8; // type:function size:0x30 fn_80058228 = .text:0x80058228; // type:function size:0x140 fn_80058368 = .text:0x80058368; // type:function size:0x2B0 fn_80058618 = .text:0x80058618; // type:function size:0x11C @@ -991,7 +991,7 @@ fn_80059D54 = .text:0x80059D54; // type:function size:0x5A8 fn_8005A2FC = .text:0x8005A2FC; // type:function size:0x3FC fn_8005A6F8 = .text:0x8005A6F8; // type:function size:0x50 fn_8005A748 = .text:0x8005A748; // type:function size:0x28 -fn_8005A770 = .text:0x8005A770; // type:function size:0x1F4 +HuDvdErrDispInit = .text:0x8005A770; // type:function size:0x1F4 fn_8005A964 = .text:0x8005A964; // type:function size:0xD8 fn_8005AA3C = .text:0x8005AA3C; // type:function size:0x128 fn_8005AB64 = .text:0x8005AB64; // type:function size:0x2D0 @@ -1294,13 +1294,13 @@ fn_8006FDA0 = .text:0x8006FDA0; // type:function size:0x34 fn_8006FDD4 = .text:0x8006FDD4; // type:function size:0x24 fn_8006FDF8 = .text:0x8006FDF8; // type:function size:0x6C fn_8006FE64 = .text:0x8006FE64; // type:function size:0x514 -GetPromptChosenIndex = .text:0x80070378; // type:function size:0xC +BoardMessChoiceGet = .text:0x80070378; // type:function size:0xC fn_80070384 = .text:0x80070384; // type:function size:0xC fn_80070390 = .text:0x80070390; // type:function size:0x1A0 -ShowMessage = .text:0x80070530; // type:function size:0x1A0 +BoardMessCreate = .text:0x80070530; // type:function size:0x1A0 fn_800706D0 = .text:0x800706D0; // type:function size:0x18 -fn_800706E8 = .text:0x800706E8; // type:function size:0x50 -CloseMessage = .text:0x80070738; // type:function size:0x38 +BoardMessWait = .text:0x800706E8; // type:function size:0x50 +BoardMessKill = .text:0x80070738; // type:function size:0x38 fn_80070770 = .text:0x80070770; // type:function size:0x48 fn_800707B8 = .text:0x800707B8; // type:function size:0x48 fn_80070800 = .text:0x80070800; // type:function size:0x1C @@ -2013,15 +2013,15 @@ fn_800B42C4 = .text:0x800B42C4; // type:function size:0x30 PPCMfmsr = .text:0x800B42F4; // type:function size:0x8 scope:global PPCMtmsr = .text:0x800B42FC; // type:function size:0x8 scope:global PPCMfhid0 = .text:0x800B4304; // type:function size:0x8 scope:global -fn_800B430C = .text:0x800B430C; // type:function size:0x8 +PPCMthid0 = .text:0x800B430C; // type:function size:0x8 PPCMfl2cr = .text:0x800B4314; // type:function size:0x8 scope:global PPCMtl2cr = .text:0x800B431C; // type:function size:0x8 scope:global PPCMtdec = .text:0x800B4324; // type:function size:0x8 scope:weak -fn_800B432C = .text:0x800B432C; // type:function size:0x8 +PPCSync = .text:0x800B432C; // type:function size:0x8 PPCHalt = .text:0x800B4334; // type:function size:0x14 scope:weak PPCMfhid2 = .text:0x800B4348; // type:function size:0x8 scope:global PPCMthid2 = .text:0x800B4350; // type:function size:0x8 scope:global -fn_800B4358 = .text:0x800B4358; // type:function size:0xC +PPCMfwpar = .text:0x800B4358; // type:function size:0xC PPCMtwpar = .text:0x800B4364; // type:function size:0x8 scope:global PPCDisableSpeculation = .text:0x800B436C; // type:function size:0x28 scope:global PPCSetFpNonIEEEMode = .text:0x800B4394; // type:function size:0x8 scope:global @@ -2054,13 +2054,13 @@ DecrementerExceptionCallback = .text:0x800B5124; // type:function size:0x230 sco DecrementerExceptionHandler = .text:0x800B5354; // type:function size:0x50 scope:local fn_800B53A4 = .text:0x800B53A4; // type:function size:0xAC OSAllocFromHeap = .text:0x800B5450; // type:function size:0xFC -fn_800B554C = .text:0x800B554C; // type:function size:0x284 -fn_800B57D0 = .text:0x800B57D0; // type:function size:0x7C +OSAllocFixed = .text:0x800B554C; // type:function size:0x284 +OSFreeToHeap = .text:0x800B57D0; // type:function size:0x7C OSSetCurrentHeap = .text:0x800B584C; // type:function size:0x10 OSInitAlloc = .text:0x800B585C; // type:function size:0x70 OSCreateHeap = .text:0x800B58CC; // type:function size:0x6C OSCheckHeap = .text:0x800B5938; // type:function size:0x360 -fn_800B5C98 = .text:0x800B5C98; // type:function size:0x104 +OSDumpHeap = .text:0x800B5C98; // type:function size:0x104 OSGetArenaHi = .text:0x800B5D9C; // type:function size:0x8 scope:global OSGetArenaLo = .text:0x800B5DA4; // type:function size:0x8 scope:global OSSetArenaHi = .text:0x800B5DAC; // type:function size:0x8 scope:global @@ -2070,19 +2070,19 @@ __OSStopAudioSystem = .text:0x800B5F78; // type:function size:0xD8 scope:global DCEnable = .text:0x800B6050; // type:function size:0x14 scope:global DCInvalidateRange = .text:0x800B6064; // type:function size:0x30 scope:global DCFlushRange = .text:0x800B6094; // type:function size:0x34 scope:global -fn_800B60C8 = .text:0x800B60C8; // type:function size:0x34 +DCStoreRange = .text:0x800B60C8; // type:function size:0x34 DCFlushRangeNoSync = .text:0x800B60FC; // type:function size:0x30 scope:global -fn_800B612C = .text:0x800B612C; // type:function size:0x30 -fn_800B615C = .text:0x800B615C; // type:function size:0x30 +DCStoreRangeNoSync = .text:0x800B612C; // type:function size:0x30 +DCZeroRange = .text:0x800B615C; // type:function size:0x30 ICInvalidateRange = .text:0x800B618C; // type:function size:0x38 scope:global ICFlashInvalidate = .text:0x800B61C4; // type:function size:0x10 scope:global ICEnable = .text:0x800B61D4; // type:function size:0x14 scope:global -fn_800B61E8 = .text:0x800B61E8; // type:function size:0xCC -fn_800B62B4 = .text:0x800B62B4; // type:function size:0x38 +__LCEnable = .text:0x800B61E8; // type:function size:0xCC scope:local +LCEnable = .text:0x800B62B4; // type:function size:0x38 LCDisable = .text:0x800B62EC; // type:function size:0x28 scope:global -fn_800B6314 = .text:0x800B6314; // type:function size:0x24 -fn_800B6338 = .text:0x800B6338; // type:function size:0xAC -fn_800B63E4 = .text:0x800B63E4; // type:function size:0x18 +LCStoreBlocks = .text:0x800B6314; // type:function size:0x24 +LCStoreData = .text:0x800B6338; // type:function size:0xAC +LCQueueWait = .text:0x800B63E4; // type:function size:0x18 L2GlobalInvalidate = .text:0x800B63FC; // type:function size:0x98 scope:global DMAErrorHandler = .text:0x800B6494; // type:function size:0x160 scope:global __OSCacheInit = .text:0x800B65F4; // type:function size:0xF4 scope:global @@ -2120,8 +2120,8 @@ fn_800B7F74 = .text:0x800B7F74; // type:function size:0x20C fn_800B8180 = .text:0x800B8180; // type:function size:0x94 __OSModuleInit = .text:0x800B8214; // type:function size:0x18 scope:global fn_800B822C = .text:0x800B822C; // type:function size:0x60 -fn_800B828C = .text:0x800B828C; // type:function size:0xC -fn_800B8298 = .text:0x800B8298; // type:function size:0xC +OSGetPhysicalMemSize = .text:0x800B828C; // type:function size:0xC +OSGetConsoleSimulatedMemSize = .text:0x800B8298; // type:function size:0xC fn_800B82A4 = .text:0x800B82A4; // type:function size:0x3C MEMIntrruptHandler = .text:0x800B82E0; // type:function size:0x6C scope:local Config24MB = .text:0x800B834C; // type:function size:0x80 scope:local @@ -2149,18 +2149,18 @@ fn_800B92D4 = .text:0x800B92D4; // type:function size:0x308 __OSUnlockSram = .text:0x800B95DC; // type:function size:0x24 scope:global __OSUnlockSramEx = .text:0x800B9600; // type:function size:0x24 scope:global __OSSyncSram = .text:0x800B9624; // type:function size:0x10 scope:global -fn_800B9634 = .text:0x800B9634; // type:function size:0x80 -fn_800B96B4 = .text:0x800B96B4; // type:function size:0xA4 -fn_800B9758 = .text:0x800B9758; // type:function size:0x70 -fn_800B97C8 = .text:0x800B97C8; // type:function size:0xA4 -fn_800B986C = .text:0x800B986C; // type:function size:0x84 -fn_800B98F0 = .text:0x800B98F0; // type:function size:0xAC -fn_800B999C = .text:0x800B999C; // type:function size:0x2C -fn_800B99C8 = .text:0x800B99C8; // type:function size:0x3C -fn_800B9A04 = .text:0x800B9A04; // type:function size:0xCC -fn_800B9AD0 = .text:0x800B9AD0; // type:function size:0x70 -fn_800B9B40 = .text:0x800B9B40; // type:function size:0x28 -fn_800B9B68 = .text:0x800B9B68; // type:function size:0x1A4 +OSGetSoundMode = .text:0x800B9634; // type:function size:0x80 +OSSetSoundMode = .text:0x800B96B4; // type:function size:0xA4 +OSGetProgressiveMode = .text:0x800B9758; // type:function size:0x70 +OSSetProgressiveMode = .text:0x800B97C8; // type:function size:0xA4 +OSGetWirelessID = .text:0x800B986C; // type:function size:0x84 +OSSetWirelessID = .text:0x800B98F0; // type:function size:0xAC +OSInitStopwatch = .text:0x800B999C; // type:function size:0x2C +OSStartStopwatch = .text:0x800B99C8; // type:function size:0x3C +OSStopStopwatch = .text:0x800B9A04; // type:function size:0xCC +OSCheckStopwatch = .text:0x800B9AD0; // type:function size:0x70 +OSResetStopwatch = .text:0x800B9B40; // type:function size:0x28 +OSDumpStopwatch = .text:0x800B9B68; // type:function size:0x1A4 __OSSystemCallVectorStart = .text:0x800B9D0C; // type:label scope:global fn_800B9D0C = .text:0x800B9D0C; // type:function size:0x20 __OSSystemCallVectorEnd = .text:0x800B9D28; // type:label scope:global @@ -2197,47 +2197,47 @@ fn_800BB33C = .text:0x800BB33C; // type:function size:0x48 __DBExceptionDestination = .text:0x800BB384; // type:function size:0x10 scope:global __DBIsExceptionMarked = .text:0x800BB394; // type:function size:0x1C scope:global DBPrintf = .text:0x800BB3B0; // type:function size:0x50 scope:global -fn_800BB400 = .text:0x800BB400; // type:function size:0x2C -fn_800BB42C = .text:0x800BB42C; // type:function size:0x34 -fn_800BB460 = .text:0x800BB460; // type:function size:0xCC -fn_800BB52C = .text:0x800BB52C; // type:function size:0x50 -fn_800BB57C = .text:0x800BB57C; // type:function size:0xF8 -fn_800BB674 = .text:0x800BB674; // type:function size:0xC8 -fn_800BB73C = .text:0x800BB73C; // type:function size:0x70 -fn_800BB7AC = .text:0x800BB7AC; // type:function size:0xA8 -fn_800BB854 = .text:0x800BB854; // type:function size:0x104 -fn_800BB958 = .text:0x800BB958; // type:function size:0x34 -fn_800BB98C = .text:0x800BB98C; // type:function size:0x28 -fn_800BB9B4 = .text:0x800BB9B4; // type:function size:0xA4 -fn_800BBA58 = .text:0x800BBA58; // type:function size:0x18C -fn_800BBBE4 = .text:0x800BBBE4; // type:function size:0xCC -fn_800BBCB0 = .text:0x800BBCB0; // type:function size:0x54 -fn_800BBD04 = .text:0x800BBD04; // type:function size:0x8C -fn_800BBD90 = .text:0x800BBD90; // type:function size:0x54 -fn_800BBDE4 = .text:0x800BBDE4; // type:function size:0xD0 -fn_800BBEB4 = .text:0x800BBEB4; // type:function size:0x98 -fn_800BBF4C = .text:0x800BBF4C; // type:function size:0x24 +PSMTXIdentity = .text:0x800BB400; // type:function size:0x2C +PSMTXCopy = .text:0x800BB42C; // type:function size:0x34 +PSMTXConcat = .text:0x800BB460; // type:function size:0xCC +PSMTXTranspose = .text:0x800BB52C; // type:function size:0x50 +PSMTXInverse = .text:0x800BB57C; // type:function size:0xF8 +PSMTXInvXpose = .text:0x800BB674; // type:function size:0xC8 +PSMTXRotRad = .text:0x800BB73C; // type:function size:0x70 +PSMTXRotTrig = .text:0x800BB7AC; // type:function size:0xA8 +PSMTXRotAxisRad = .text:0x800BB854; // type:function size:0x104 +PSMTXTrans = .text:0x800BB958; // type:function size:0x34 +PSMTXScale = .text:0x800BB98C; // type:function size:0x28 +PSMTXQuat = .text:0x800BB9B4; // type:function size:0xA4 +C_MTXLookAt = .text:0x800BBA58; // type:function size:0x18C +C_MTXLightPerspective = .text:0x800BBBE4; // type:function size:0xCC +PSMTXMultVec = .text:0x800BBCB0; // type:function size:0x54 +PSMTXMultVecArray = .text:0x800BBD04; // type:function size:0x8C +PSMTXMultVecSR = .text:0x800BBD90; // type:function size:0x54 +C_MTXPerspective = .text:0x800BBDE4; // type:function size:0xD0 +C_MTXOrtho = .text:0x800BBEB4; // type:function size:0x98 +PSVECAdd = .text:0x800BBF4C; // type:function size:0x24 PSVECSubtract = .text:0x800BBF70; // type:function size:0x24 -fn_800BBF94 = .text:0x800BBF94; // type:function size:0x1C -fn_800BBFB0 = .text:0x800BBFB0; // type:function size:0x44 -fn_800BBFF4 = .text:0x800BBFF4; // type:function size:0x18 -fn_800BC00C = .text:0x800BC00C; // type:function size:0x3C +PSVECScale = .text:0x800BBF94; // type:function size:0x1C +PSVECNormalize = .text:0x800BBFB0; // type:function size:0x44 +PSVECSquareMag = .text:0x800BBFF4; // type:function size:0x18 +PSVECMag = .text:0x800BC00C; // type:function size:0x3C PSVECDotProduct = .text:0x800BC048; // type:function size:0x20 -fn_800BC068 = .text:0x800BC068; // type:function size:0x3C -fn_800BC0A4 = .text:0x800BC0A4; // type:function size:0xD8 -fn_800BC17C = .text:0x800BC17C; // type:function size:0xD4 +PSVECCrossProduct = .text:0x800BC068; // type:function size:0x3C +C_VECHalfAngle = .text:0x800BC0A4; // type:function size:0xD8 +C_VECReflect = .text:0x800BC17C; // type:function size:0xD4 PSVECSquareDistance = .text:0x800BC250; // type:function size:0x28 PSVECDistance = .text:0x800BC278; // type:function size:0x4C -fn_800BC2C4 = .text:0x800BC2C4; // type:function size:0x44 -fn_800BC308 = .text:0x800BC308; // type:function size:0x24 -fn_800BC32C = .text:0x800BC32C; // type:function size:0x5C -fn_800BC388 = .text:0x800BC388; // type:function size:0x54 -fn_800BC3DC = .text:0x800BC3DC; // type:function size:0x50 -fn_800BC42C = .text:0x800BC42C; // type:function size:0x8C -fn_800BC4B8 = .text:0x800BC4B8; // type:function size:0x258 -fn_800BC710 = .text:0x800BC710; // type:function size:0x174 -fn_800BC884 = .text:0x800BC884; // type:function size:0x4C -fn_800BC8D0 = .text:0x800BC8D0; // type:function size:0x118 +C_QUATAdd = .text:0x800BC2C4; // type:function size:0x44 +PSQUATAdd = .text:0x800BC308; // type:function size:0x24 +PSQUATMultiply = .text:0x800BC32C; // type:function size:0x5C +PSQUATNormalize = .text:0x800BC388; // type:function size:0x54 +PSQUATInverse = .text:0x800BC3DC; // type:function size:0x50 +C_QUATRotAxisRad = .text:0x800BC42C; // type:function size:0x8C +C_QUATMtx = .text:0x800BC4B8; // type:function size:0x258 +C_QUATSlerp = .text:0x800BC710; // type:function size:0x174 +PSMTXReorder = .text:0x800BC884; // type:function size:0x4C +PSMTXROMultVecArray = .text:0x800BC8D0; // type:function size:0x118 __DVDInitWA = .text:0x800BC9E8; // type:function size:0x40 scope:global __DVDInterruptHandler = .text:0x800BCA28; // type:function size:0x2F4 scope:global fn_800BCD1C = .text:0x800BCD1C; // type:function size:0x84 @@ -2259,16 +2259,16 @@ fn_800BD7CC = .text:0x800BD7CC; // type:function size:0x14 fn_800BD7E0 = .text:0x800BD7E0; // type:function size:0x18 __DVDLowSetWAType = .text:0x800BD7F8; // type:function size:0x44 scope:global __DVDFSInit = .text:0x800BD83C; // type:function size:0x38 scope:global -fn_800BD874 = .text:0x800BD874; // type:function size:0x2F4 -fn_800BDB68 = .text:0x800BDB68; // type:function size:0x74 -fn_800BDBDC = .text:0x800BDBDC; // type:function size:0xC8 -fn_800BDCA4 = .text:0x800BDCA4; // type:function size:0x24 +DVDConvertPathToEntrynum = .text:0x800BD874; // type:function size:0x2F4 +DVDFastOpen = .text:0x800BDB68; // type:function size:0x74 +DVDOpen = .text:0x800BDBDC; // type:function size:0xC8 +DVDClose = .text:0x800BDCA4; // type:function size:0x24 fn_800BDCC8 = .text:0x800BDCC8; // type:function size:0x160 fn_800BDE28 = .text:0x800BDE28; // type:function size:0xC4 -fn_800BDEEC = .text:0x800BDEEC; // type:function size:0xC0 -fn_800BDFAC = .text:0x800BDFAC; // type:function size:0x30 -fn_800BDFDC = .text:0x800BDFDC; // type:function size:0x118 -fn_800BE0F4 = .text:0x800BE0F4; // type:function size:0x24 +DVDReadAsyncPrio = .text:0x800BDEEC; // type:function size:0xC0 +cbForReadAsync = .text:0x800BDFAC; // type:function size:0x30 scope:local +DVDReadPrio = .text:0x800BDFDC; // type:function size:0x118 +cbForReadSync = .text:0x800BE0F4; // type:function size:0x24 scope:local DVDInit = .text:0x800BE118; // type:function size:0xFC scope:global fn_800BE214 = .text:0x800BE214; // type:function size:0x54 fn_800BE268 = .text:0x800BE268; // type:function size:0x80 @@ -2301,7 +2301,7 @@ fn_800BFC94 = .text:0x800BFC94; // type:function size:0xD0 DVDReadDiskID = .text:0x800BFD64; // type:function size:0xD4 scope:global DVDInquiryAsync = .text:0x800BFE38; // type:function size:0xD0 scope:global DVDReset = .text:0x800BFF08; // type:function size:0x44 scope:global -fn_800BFF4C = .text:0x800BFF4C; // type:function size:0x4C +DVDGetCommandBlockStatus = .text:0x800BFF4C; // type:function size:0x4C DVDGetDriveStatus = .text:0x800BFF98; // type:function size:0xAC scope:global fn_800C0044 = .text:0x800C0044; // type:function size:0x10 fn_800C0054 = .text:0x800C0054; // type:function size:0x270 @@ -2326,28 +2326,28 @@ getTiming = .text:0x800C0E1C; // type:function size:0x90 __VIInit = .text:0x800C0EAC; // type:function size:0x1F8 VIInit = .text:0x800C10A4; // type:function size:0x478 VIWaitForRetrace = .text:0x800C151C; // type:function size:0x54 -setFbbRegs = .text:0x800C1570; // type:function size:0x2D4 -setVerticalRegs = .text:0x800C1844; // type:function size:0x1A0 +setFbbRegs = .text:0x800C1570; // type:function size:0x2D4 scope:local +setVerticalRegs = .text:0x800C1844; // type:function size:0x1A0 scope:local VIConfigure = .text:0x800C19E4; // type:function size:0x79C -fn_800C2180 = .text:0x800C2180; // type:function size:0x394 -fn_800C2514 = .text:0x800C2514; // type:function size:0x11C -fn_800C2630 = .text:0x800C2630; // type:function size:0x6C -fn_800C269C = .text:0x800C269C; // type:function size:0x7C -fn_800C2718 = .text:0x800C2718; // type:function size:0x8 -fn_800C2720 = .text:0x800C2720; // type:function size:0x68 -fn_800C2788 = .text:0x800C2788; // type:function size:0xA8 +VIConfigurePan = .text:0x800C2180; // type:function size:0x394 +VIFlush = .text:0x800C2514; // type:function size:0x11C +VISetNextFrameBuffer = .text:0x800C2630; // type:function size:0x6C +VISetBlack = .text:0x800C269C; // type:function size:0x7C +VIGetRetraceCount = .text:0x800C2718; // type:function size:0x8 +getCurrentFieldEvenOdd = .text:0x800C2720; // type:function size:0x68 scope:local +VIGetNextField = .text:0x800C2788; // type:function size:0xA8 VIGetCurrentLine = .text:0x800C2830; // type:function size:0x98 VIGetTvFormat = .text:0x800C28C8; // type:function size:0x7C scope:global VIGetDTVStatus = .text:0x800C2944; // type:function size:0x3C -fn_800C2980 = .text:0x800C2980; // type:function size:0x8 -fn_800C2988 = .text:0x800C2988; // type:function size:0x228 -fn_800C2BB0 = .text:0x800C2BB0; // type:function size:0x310 -fn_800C2EC0 = .text:0x800C2EC0; // type:function size:0xC4 -fn_800C2F84 = .text:0x800C2F84; // type:function size:0x394 -fn_800C3318 = .text:0x800C3318; // type:function size:0x58 -fn_800C3370 = .text:0x800C3370; // type:function size:0x96C -fn_800C3CDC = .text:0x800C3CDC; // type:function size:0x130 -fn_800C3E0C = .text:0x800C3E0C; // type:function size:0x108 +DEMOGetRenderModeObj = .text:0x800C2980; // type:function size:0x8 +DEMOInitCaption = .text:0x800C2988; // type:function size:0x228 +DEMOPuts = .text:0x800C2BB0; // type:function size:0x310 +DEMOPrintf = .text:0x800C2EC0; // type:function size:0xC4 +DEMOWriteStats = .text:0x800C2F84; // type:function size:0x394 +DEMOUpdateStats = .text:0x800C3318; // type:function size:0x58 +DEMOPrintStats = .text:0x800C3370; // type:function size:0x96C +ClampStick = .text:0x800C3CDC; // type:function size:0x130 scope:local +PADClamp = .text:0x800C3E0C; // type:function size:0x108 fn_800C3F14 = .text:0x800C3F14; // type:function size:0x1A4 fn_800C40B8 = .text:0x800C40B8; // type:function size:0xC4 fn_800C417C = .text:0x800C417C; // type:function size:0xC0 @@ -2392,18 +2392,18 @@ fn_800C62FC = .text:0x800C62FC; // type:function size:0x3C fn_800C6338 = .text:0x800C6338; // type:function size:0xF0 fn_800C6428 = .text:0x800C6428; // type:function size:0x68 fn_800C6490 = .text:0x800C6490; // type:function size:0x74 -fn_800C6504 = .text:0x800C6504; // type:function size:0x8 -fn_800C650C = .text:0x800C650C; // type:function size:0xBC -fn_800C65C8 = .text:0x800C65C8; // type:function size:0x4 -fn_800C65CC = .text:0x800C65CC; // type:function size:0x8 -fn_800C65D4 = .text:0x800C65D4; // type:function size:0x8 -fn_800C65DC = .text:0x800C65DC; // type:function size:0x78 -fn_800C6654 = .text:0x800C6654; // type:function size:0x914 -fn_800C6F68 = .text:0x800C6F68; // type:function size:0x100 -fn_800C7068 = .text:0x800C7068; // type:function size:0x4 -fn_800C706C = .text:0x800C706C; // type:function size:0xCC -fn_800C7138 = .text:0x800C7138; // type:function size:0x68 -fn_800C71A0 = .text:0x800C71A0; // type:function size:0x15C +ARCheckInit = .text:0x800C6504; // type:function size:0x8 +ARInit = .text:0x800C650C; // type:function size:0xBC +ARSetSize = .text:0x800C65C8; // type:function size:0x4 +ARGetBaseAddress = .text:0x800C65CC; // type:function size:0x8 +ARGetSize = .text:0x800C65D4; // type:function size:0x8 +__ARHandler = .text:0x800C65DC; // type:function size:0x78 scope:local +__ARChecksize = .text:0x800C6654; // type:function size:0x914 scope:local +__ARQServiceQueueLo = .text:0x800C6F68; // type:function size:0x100 +__ARQCallbackHack = .text:0x800C7068; // type:function size:0x4 +__ARQInterruptServiceRoutine = .text:0x800C706C; // type:function size:0xCC +ARQInit = .text:0x800C7138; // type:function size:0x68 +ARQPostRequest = .text:0x800C71A0; // type:function size:0x15C fn_800C72FC = .text:0x800C72FC; // type:function size:0x10 fn_800C730C = .text:0x800C730C; // type:function size:0x10 fn_800C731C = .text:0x800C731C; // type:function size:0x18 @@ -2441,24 +2441,24 @@ fn_800C95E8 = .text:0x800C95E8; // type:function size:0xFC fn_800C96E4 = .text:0x800C96E4; // type:function size:0x8 fn_800C96EC = .text:0x800C96EC; // type:function size:0x8 fn_800C96F4 = .text:0x800C96F4; // type:function size:0x158 -fn_800C984C = .text:0x800C984C; // type:function size:0x360 +GXSetVtxDesc = .text:0x800C984C; // type:function size:0x360 fn_800C9BAC = .text:0x800C9BAC; // type:function size:0x54 fn_800C9C00 = .text:0x800C9C00; // type:function size:0x124 -fn_800C9D24 = .text:0x800C9D24; // type:function size:0x4C -fn_800C9D70 = .text:0x800C9D70; // type:function size:0x35C -fn_800CA0CC = .text:0x800CA0CC; // type:function size:0x9C -fn_800CA168 = .text:0x800CA168; // type:function size:0x8C -fn_800CA1F4 = .text:0x800CA1F4; // type:function size:0x10 -fn_800CA204 = .text:0x800CA204; // type:function size:0x2D0 -fn_800CA4D4 = .text:0x800CA4D4; // type:function size:0x48 +GXClearVtxDesc = .text:0x800C9D24; // type:function size:0x4C +GXSetVtxAttrFmt = .text:0x800C9D70; // type:function size:0x35C +__GXSetVAT = .text:0x800CA0CC; // type:function size:0x9C +GXSetArray = .text:0x800CA168; // type:function size:0x8C +GXInvalidateVtxCache = .text:0x800CA1F4; // type:function size:0x10 +GXSetTexCoordGen2 = .text:0x800CA204; // type:function size:0x2D0 +GXSetNumTexGens = .text:0x800CA4D4; // type:function size:0x48 GXSetMisc = .text:0x800CA51C; // type:function size:0x78 scope:global -fn_800CA594 = .text:0x800CA594; // type:function size:0x5C -fn_800CA5F0 = .text:0x800CA5F0; // type:function size:0x34 -fn_800CA624 = .text:0x800CA624; // type:function size:0xCC -fn_800CA6F0 = .text:0x800CA6F0; // type:function size:0xB8 -fn_800CA7A8 = .text:0x800CA7A8; // type:function size:0x98 -fn_800CA840 = .text:0x800CA840; // type:function size:0x4C -fn_800CA88C = .text:0x800CA88C; // type:function size:0x80 +GXFlush = .text:0x800CA594; // type:function size:0x5C +GXResetWriteGatherPipe = .text:0x800CA5F0; // type:function size:0x34 +__GXAbortWaitPECopyDone = .text:0x800CA624; // type:function size:0xCC +GXSetDrawSync = .text:0x800CA6F0; // type:function size:0xB8 +GXSetDrawDone = .text:0x800CA7A8; // type:function size:0x98 +GXWaitDrawDone = .text:0x800CA840; // type:function size:0x4C +GXDrawDone = .text:0x800CA88C; // type:function size:0x80 fn_800CA90C = .text:0x800CA90C; // type:function size:0x24 fn_800CA930 = .text:0x800CA930; // type:function size:0x14 fn_800CA944 = .text:0x800CA944; // type:function size:0x14 @@ -2472,55 +2472,55 @@ fn_800CAA70 = .text:0x800CAA70; // type:function size:0x44 fn_800CAAB4 = .text:0x800CAAB4; // type:function size:0x88 fn_800CAB3C = .text:0x800CAB3C; // type:function size:0x84 __GXPEInit = .text:0x800CABC0; // type:function size:0x80 scope:global -fn_800CAC40 = .text:0x800CAC40; // type:function size:0xA0 -fn_800CACE0 = .text:0x800CACE0; // type:function size:0xF0 -fn_800CADD0 = .text:0x800CADD0; // type:function size:0x88 -fn_800CAE58 = .text:0x800CAE58; // type:function size:0x58 -fn_800CAEB0 = .text:0x800CAEB0; // type:function size:0x54 -fn_800CAF04 = .text:0x800CAF04; // type:function size:0x64 -fn_800CAF68 = .text:0x800CAF68; // type:function size:0x50 -fn_800CAFB8 = .text:0x800CAFB8; // type:function size:0x44 -fn_800CAFFC = .text:0x800CAFFC; // type:function size:0x24 -fn_800CB020 = .text:0x800CB020; // type:function size:0x120 -fn_800CB140 = .text:0x800CB140; // type:function size:0xC0 -fn_800CB200 = .text:0x800CB200; // type:function size:0xC0 -fn_800CB2C0 = .text:0x800CB2C0; // type:function size:0x44 -fn_800CB304 = .text:0x800CB304; // type:function size:0x170 -fn_800CB474 = .text:0x800CB474; // type:function size:0x2C -fn_800CB4A0 = .text:0x800CB4A0; // type:function size:0x7C -fn_800CB51C = .text:0x800CB51C; // type:function size:0xD4 -fn_800CB5F0 = .text:0x800CB5F0; // type:function size:0x68 -fn_800CB658 = .text:0x800CB658; // type:function size:0x228 -fn_800CB880 = .text:0x800CB880; // type:function size:0x1C -fn_800CB89C = .text:0x800CB89C; // type:function size:0x170 -fn_800CBA0C = .text:0x800CBA0C; // type:function size:0x190 -fn_800CBB9C = .text:0x800CBB9C; // type:function size:0x38 -fn_800CBBD4 = .text:0x800CBBD4; // type:function size:0x1C -fn_800CBBF0 = .text:0x800CBBF0; // type:function size:0x10 -fn_800CBC00 = .text:0x800CBC00; // type:function size:0x180 -fn_800CBD80 = .text:0x800CBD80; // type:function size:0xD0 -fn_800CBE50 = .text:0x800CBE50; // type:function size:0x10 -fn_800CBE60 = .text:0x800CBE60; // type:function size:0x1C -fn_800CBE7C = .text:0x800CBE7C; // type:function size:0xD4 -fn_800CBF50 = .text:0x800CBF50; // type:function size:0x28 -fn_800CBF78 = .text:0x800CBF78; // type:function size:0x148 -fn_800CC0C0 = .text:0x800CC0C0; // type:function size:0x168 -fn_800CC228 = .text:0x800CC228; // type:function size:0x168 -fn_800CC390 = .text:0x800CC390; // type:function size:0x4C -fn_800CC3DC = .text:0x800CC3DC; // type:function size:0x1E4 -fn_800CC5C0 = .text:0x800CC5C0; // type:function size:0x15C -fn_800CC71C = .text:0x800CC71C; // type:function size:0xC8 -fn_800CC7E4 = .text:0x800CC7E4; // type:function size:0x274 -fn_800CCA58 = .text:0x800CCA58; // type:function size:0x48 -fn_800CCAA0 = .text:0x800CCAA0; // type:function size:0x194 -fn_800CCC34 = .text:0x800CCC34; // type:function size:0x8 -fn_800CCC3C = .text:0x800CCC3C; // type:function size:0x1A8 -fn_800CCDE4 = .text:0x800CCDE4; // type:function size:0x54 -fn_800CCE38 = .text:0x800CCE38; // type:function size:0x48 -fn_800CCE80 = .text:0x800CCE80; // type:function size:0x9C +__GXSetDirtyState = .text:0x800CAC40; // type:function size:0xA0 +GXBegin = .text:0x800CACE0; // type:function size:0xF0 +__GXSendFlushPrim = .text:0x800CADD0; // type:function size:0x88 +GXSetLineWidth = .text:0x800CAE58; // type:function size:0x58 +GXSetPointSize = .text:0x800CAEB0; // type:function size:0x54 +GXEnableTexOffsets = .text:0x800CAF04; // type:function size:0x64 +GXSetCullMode = .text:0x800CAF68; // type:function size:0x50 +GXSetCoPlanar = .text:0x800CAFB8; // type:function size:0x44 +__GXSetGenMode = .text:0x800CAFFC; // type:function size:0x24 +GXAdjustForOverscan = .text:0x800CB020; // type:function size:0x120 +GXSetDispCopySrc = .text:0x800CB140; // type:function size:0xC0 +GXSetTexCopySrc = .text:0x800CB200; // type:function size:0xC0 +GXSetDispCopyDst = .text:0x800CB2C0; // type:function size:0x44 +GXSetTexCopyDst = .text:0x800CB304; // type:function size:0x170 +GXSetDispCopyFrame2Field = .text:0x800CB474; // type:function size:0x2C +GXSetCopyClamp = .text:0x800CB4A0; // type:function size:0x7C +GXSetDispCopyYScale = .text:0x800CB51C; // type:function size:0xD4 +GXSetCopyClear = .text:0x800CB5F0; // type:function size:0x68 +GXSetCopyFilter = .text:0x800CB658; // type:function size:0x228 +GXSetDispCopyGamma = .text:0x800CB880; // type:function size:0x1C +GXCopyDisp = .text:0x800CB89C; // type:function size:0x170 +GXCopyTex = .text:0x800CBA0C; // type:function size:0x190 +GXClearBoundingBox = .text:0x800CBB9C; // type:function size:0x38 +GXInitLightAttn = .text:0x800CBBD4; // type:function size:0x1C +GXInitLightAttnK = .text:0x800CBBF0; // type:function size:0x10 +GXInitLightSpot = .text:0x800CBC00; // type:function size:0x180 +GXInitLightDistAttn = .text:0x800CBD80; // type:function size:0xD0 +GXInitLightPos = .text:0x800CBE50; // type:function size:0x10 +GXInitLightDir = .text:0x800CBE60; // type:function size:0x1C +GXInitSpecularDir = .text:0x800CBE7C; // type:function size:0xD4 +GXInitLightColor = .text:0x800CBF50; // type:function size:0x28 +GXLoadLightObjImm = .text:0x800CBF78; // type:function size:0x148 +GXSetChanAmbColor = .text:0x800CC0C0; // type:function size:0x168 +GXSetChanMatColor = .text:0x800CC228; // type:function size:0x168 +GXSetNumChans = .text:0x800CC390; // type:function size:0x4C +GXSetChanCtrl = .text:0x800CC3DC; // type:function size:0x1E4 +GXGetTexBufferSize = .text:0x800CC5C0; // type:function size:0x15C +__GetImageTileCount = .text:0x800CC71C; // type:function size:0xC8 +GXInitTexObj = .text:0x800CC7E4; // type:function size:0x274 +GXInitTexObjCI = .text:0x800CCA58; // type:function size:0x48 +GXInitTexObjLOD = .text:0x800CCAA0; // type:function size:0x194 +GXGetTexObjFmt = .text:0x800CCC34; // type:function size:0x8 +GXLoadTexObjPreLoaded = .text:0x800CCC3C; // type:function size:0x1A8 +GXLoadTexObj = .text:0x800CCDE4; // type:function size:0x54 +GXInitTlutObj = .text:0x800CCE38; // type:function size:0x48 +GXLoadTlut = .text:0x800CCE80; // type:function size:0x9C GXInitTexCacheRegion = .text:0x800CCF1C; // type:function size:0x120 scope:global GXInitTlutRegion = .text:0x800CD03C; // type:function size:0x48 scope:global -fn_800CD084 = .text:0x800CD084; // type:function size:0x48 +GXInvalidateTexAll = .text:0x800CD084; // type:function size:0x48 fn_800CD0CC = .text:0x800CD0CC; // type:function size:0x14 fn_800CD0E0 = .text:0x800CD0E0; // type:function size:0x14 fn_800CD0F4 = .text:0x800CD0F4; // type:function size:0x9C @@ -2537,55 +2537,55 @@ fn_800CDB94 = .text:0x800CDB94; // type:function size:0x64 fn_800CDBF8 = .text:0x800CDBF8; // type:function size:0x1AC fn_800CDDA4 = .text:0x800CDDA4; // type:function size:0xCC __GXFlushTextureState = .text:0x800CDE70; // type:function size:0x24 scope:global -fn_800CDE94 = .text:0x800CDE94; // type:function size:0x1A4 -fn_800CE038 = .text:0x800CE038; // type:function size:0x80 -fn_800CE0B8 = .text:0x800CE0B8; // type:function size:0x84 -fn_800CE13C = .text:0x800CE13C; // type:function size:0xC0 -fn_800CE1FC = .text:0x800CE1FC; // type:function size:0xC0 -fn_800CE2BC = .text:0x800CE2BC; // type:function size:0x74 -fn_800CE330 = .text:0x800CE330; // type:function size:0x74 -fn_800CE3A4 = .text:0x800CE3A4; // type:function size:0x74 -fn_800CE418 = .text:0x800CE418; // type:function size:0x6C -fn_800CE484 = .text:0x800CE484; // type:function size:0x6C -fn_800CE4F0 = .text:0x800CE4F0; // type:function size:0x58 -fn_800CE548 = .text:0x800CE548; // type:function size:0xA0 -fn_800CE5E8 = .text:0x800CE5E8; // type:function size:0x50 -fn_800CE638 = .text:0x800CE638; // type:function size:0x84 -fn_800CE6BC = .text:0x800CE6BC; // type:function size:0x1DC -fn_800CE898 = .text:0x800CE898; // type:function size:0x34 -fn_800CE8CC = .text:0x800CE8CC; // type:function size:0x1B0 -fn_800CEA7C = .text:0x800CEA7C; // type:function size:0x100 -fn_800CEB7C = .text:0x800CEB7C; // type:function size:0x104 -fn_800CEC80 = .text:0x800CEC80; // type:function size:0x40 -fn_800CECC0 = .text:0x800CECC0; // type:function size:0x40 -fn_800CED00 = .text:0x800CED00; // type:function size:0x78 -fn_800CED78 = .text:0x800CED78; // type:function size:0x40 -fn_800CEDB8 = .text:0x800CEDB8; // type:function size:0x110 -fn_800CEEC8 = .text:0x800CEEC8; // type:function size:0x40 -fn_800CEF08 = .text:0x800CEF08; // type:function size:0x54 -fn_800CEF5C = .text:0x800CEF5C; // type:function size:0x38 -fn_800CEF94 = .text:0x800CEF94; // type:function size:0x80 +GXSetTevOp = .text:0x800CDE94; // type:function size:0x1A4 +GXSetTevColorIn = .text:0x800CE038; // type:function size:0x80 +GXSetTevAlphaIn = .text:0x800CE0B8; // type:function size:0x84 +GXSetTevColorOp = .text:0x800CE13C; // type:function size:0xC0 +GXSetTevAlphaOp = .text:0x800CE1FC; // type:function size:0xC0 +GXSetTevColor = .text:0x800CE2BC; // type:function size:0x74 +GXSetTevColorS10 = .text:0x800CE330; // type:function size:0x74 +GXSetTevKColor = .text:0x800CE3A4; // type:function size:0x74 +GXSetTevKColorSel = .text:0x800CE418; // type:function size:0x6C +GXSetTevKAlphaSel = .text:0x800CE484; // type:function size:0x6C +GXSetTevSwapMode = .text:0x800CE4F0; // type:function size:0x58 +GXSetTevSwapModeTable = .text:0x800CE548; // type:function size:0xA0 +GXSetAlphaCompare = .text:0x800CE5E8; // type:function size:0x50 +GXSetZTexture = .text:0x800CE638; // type:function size:0x84 +GXSetTevOrder = .text:0x800CE6BC; // type:function size:0x1DC +GXSetNumTevStages = .text:0x800CE898; // type:function size:0x34 +GXSetFog = .text:0x800CE8CC; // type:function size:0x1B0 +GXSetFogRangeAdj = .text:0x800CEA7C; // type:function size:0x100 +GXSetBlendMode = .text:0x800CEB7C; // type:function size:0x104 +GXSetColorUpdate = .text:0x800CEC80; // type:function size:0x40 +GXSetAlphaUpdate = .text:0x800CECC0; // type:function size:0x40 +GXSetZMode = .text:0x800CED00; // type:function size:0x78 +GXSetZCompLoc = .text:0x800CED78; // type:function size:0x40 +GXSetPixelFmt = .text:0x800CEDB8; // type:function size:0x110 +GXSetDither = .text:0x800CEEC8; // type:function size:0x40 +GXSetDstAlpha = .text:0x800CEF08; // type:function size:0x54 +GXSetFieldMask = .text:0x800CEF5C; // type:function size:0x38 +GXSetFieldMode = .text:0x800CEF94; // type:function size:0x80 fn_800CF014 = .text:0x800CF014; // type:function size:0x4 -fn_800CF018 = .text:0x800CF018; // type:function size:0xC8 -fn_800CF0E0 = .text:0x800CF0E0; // type:function size:0xD4 -fn_800CF1B4 = .text:0x800CF1B4; // type:function size:0x70 -fn_800CF224 = .text:0x800CF224; // type:function size:0x174 -fn_800CF398 = .text:0x800CF398; // type:function size:0xD4 -fn_800CF46C = .text:0x800CF46C; // type:function size:0x78 -fn_800CF4E4 = .text:0x800CF4E4; // type:function size:0x34 -fn_800CF518 = .text:0x800CF518; // type:function size:0x34 -fn_800CF54C = .text:0x800CF54C; // type:function size:0x24 -fn_800CF570 = .text:0x800CF570; // type:function size:0x3C -fn_800CF5AC = .text:0x800CF5AC; // type:function size:0x40 -fn_800CF5EC = .text:0x800CF5EC; // type:function size:0x3C -fn_800CF628 = .text:0x800CF628; // type:function size:0x84 -fn_800CF6AC = .text:0x800CF6AC; // type:function size:0x11C -fn_800CF7C8 = .text:0x800CF7C8; // type:function size:0x24 -fn_800CF7EC = .text:0x800CF7EC; // type:function size:0x4C -fn_800CF838 = .text:0x800CF838; // type:function size:0xB0 -fn_800CF8E8 = .text:0x800CF8E8; // type:function size:0x44 -fn_800CF92C = .text:0x800CF92C; // type:function size:0x28 -fn_800CF954 = .text:0x800CF954; // type:function size:0x84 +GXBeginDisplayList = .text:0x800CF018; // type:function size:0xC8 +GXEndDisplayList = .text:0x800CF0E0; // type:function size:0xD4 +GXCallDisplayList = .text:0x800CF1B4; // type:function size:0x70 +GXProject = .text:0x800CF224; // type:function size:0x174 +GXSetProjection = .text:0x800CF398; // type:function size:0xD4 +GXSetProjectionv = .text:0x800CF46C; // type:function size:0x78 +WriteMTXPS4x3 = .text:0x800CF4E4; // type:function size:0x34 +WriteMTXPS3x3from3x4 = .text:0x800CF518; // type:function size:0x34 +WriteMTXPS4x2 = .text:0x800CF54C; // type:function size:0x24 +GXLoadPosMtxImm = .text:0x800CF570; // type:function size:0x3C +GXLoadNrmMtxImm = .text:0x800CF5AC; // type:function size:0x40 +GXSetCurrentMtx = .text:0x800CF5EC; // type:function size:0x3C +GXLoadTexMtxImm = .text:0x800CF628; // type:function size:0x84 +GXSetViewportJitter = .text:0x800CF6AC; // type:function size:0x11C +GXSetViewport = .text:0x800CF7C8; // type:function size:0x24 +GXGetViewportv = .text:0x800CF7EC; // type:function size:0x4C +GXSetScissor = .text:0x800CF838; // type:function size:0xB0 +GXSetScissorBoxOffset = .text:0x800CF8E8; // type:function size:0x44 +GXSetClipMode = .text:0x800CF92C; // type:function size:0x28 +__GXSetMatrixIndex = .text:0x800CF954; // type:function size:0x84 fn_800CF9D8 = .text:0x800CF9D8; // type:function size:0x898 fn_800D0270 = .text:0x800D0270; // type:function size:0x1A8 fn_800D0418 = .text:0x800D0418; // type:function size:0x10 @@ -2614,12 +2614,12 @@ fn_800D1334 = .text:0x800D1334; // type:function size:0x1B4 fn_800D14E8 = .text:0x800D14E8; // type:function size:0x134 fn_800D161C = .text:0x800D161C; // type:function size:0x11C fn_800D1738 = .text:0x800D1738; // type:function size:0xE0 -fn_800D1818 = .text:0x800D1818; // type:function size:0x9C -fn_800D18B4 = .text:0x800D18B4; // type:function size:0x38 -fn_800D18EC = .text:0x800D18EC; // type:function size:0xB8 -fn_800D19A4 = .text:0x800D19A4; // type:function size:0x64 -fn_800D1A08 = .text:0x800D1A08; // type:function size:0x150 -fn_800D1B58 = .text:0x800D1B58; // type:function size:0x84 +CARDInit = .text:0x800D1818; // type:function size:0x9C +__CARDSetDiskID = .text:0x800D18B4; // type:function size:0x38 +__CARDGetControlBlock = .text:0x800D18EC; // type:function size:0xB8 +__CARDPutControlBlock = .text:0x800D19A4; // type:function size:0x64 +CARDFreeBlocks = .text:0x800D1A08; // type:function size:0x150 +CARDGetSectorSize = .text:0x800D1B58; // type:function size:0x84 fn_800D1BDC = .text:0x800D1BDC; // type:function size:0x98 fn_800D1C74 = .text:0x800D1C74; // type:function size:0x50 fn_800D1CC4 = .text:0x800D1CC4; // type:function size:0x16C @@ -2642,53 +2642,53 @@ fn_800D35A8 = .text:0x800D35A8; // type:function size:0x8 fn_800D35B0 = .text:0x800D35B0; // type:function size:0xD0 fn_800D3680 = .text:0x800D3680; // type:function size:0xC8 fn_800D3748 = .text:0x800D3748; // type:function size:0xC4 -fn_800D380C = .text:0x800D380C; // type:function size:0x1B0 -fn_800D39BC = .text:0x800D39BC; // type:function size:0x284 -fn_800D3C40 = .text:0x800D3C40; // type:function size:0x240 -fn_800D3E80 = .text:0x800D3E80; // type:function size:0x284 -fn_800D4104 = .text:0x800D4104; // type:function size:0x8C -fn_800D4190 = .text:0x800D4190; // type:function size:0x590 -fn_800D4720 = .text:0x800D4720; // type:function size:0x54 -fn_800D4774 = .text:0x800D4774; // type:function size:0xCC -fn_800D4840 = .text:0x800D4840; // type:function size:0x17C -fn_800D49BC = .text:0x800D49BC; // type:function size:0x410 -fn_800D4DCC = .text:0x800D4DCC; // type:function size:0x138 -fn_800D4F04 = .text:0x800D4F04; // type:function size:0x1A0 -fn_800D50A4 = .text:0x800D50A4; // type:function size:0x48 -fn_800D50EC = .text:0x800D50EC; // type:function size:0x9C -fn_800D5188 = .text:0x800D5188; // type:function size:0xAC -fn_800D5234 = .text:0x800D5234; // type:function size:0x144 -fn_800D5378 = .text:0x800D5378; // type:function size:0x658 -fn_800D59D0 = .text:0x800D59D0; // type:function size:0x54 +__CARDCheckSum = .text:0x800D380C; // type:function size:0x1B0 +VerifyID = .text:0x800D39BC; // type:function size:0x284 scope:local +VerifyDir = .text:0x800D3C40; // type:function size:0x240 scope:local +VerifyFAT = .text:0x800D3E80; // type:function size:0x284 scope:local +__CARDVerify = .text:0x800D4104; // type:function size:0x8C +CARDCheckExAsync = .text:0x800D4190; // type:function size:0x590 +CARDCheck = .text:0x800D4720; // type:function size:0x54 +IsCard = .text:0x800D4774; // type:function size:0xCC scope:local +CARDProbeEx = .text:0x800D4840; // type:function size:0x17C +DoMount = .text:0x800D49BC; // type:function size:0x410 scope:local +__CARDMountCallback = .text:0x800D4DCC; // type:function size:0x138 +CARDMountAsync = .text:0x800D4F04; // type:function size:0x1A0 +CARDMount = .text:0x800D50A4; // type:function size:0x48 +DoUnmount = .text:0x800D50EC; // type:function size:0x9C scope:local +CARDUnmount = .text:0x800D5188; // type:function size:0xAC +FormatCallback = .text:0x800D5234; // type:function size:0x144 scope:local +__CARDFormatRegionAsync = .text:0x800D5378; // type:function size:0x658 +CARDFormat = .text:0x800D59D0; // type:function size:0x54 fn_800D5A24 = .text:0x800D5A24; // type:function size:0x68 fn_800D5A8C = .text:0x800D5A8C; // type:function size:0x98 fn_800D5B24 = .text:0x800D5B24; // type:function size:0x30 fn_800D5B54 = .text:0x800D5B54; // type:function size:0x150 -fn_800D5CA4 = .text:0x800D5CA4; // type:function size:0x178 -fn_800D5E1C = .text:0x800D5E1C; // type:function size:0x54 -fn_800D5E70 = .text:0x800D5E70; // type:function size:0x8 -fn_800D5E78 = .text:0x800D5E78; // type:function size:0x130 -fn_800D5FA8 = .text:0x800D5FA8; // type:function size:0x220 -fn_800D61C8 = .text:0x800D61C8; // type:function size:0x48 -fn_800D6210 = .text:0x800D6210; // type:function size:0x1B8 -fn_800D63C8 = .text:0x800D63C8; // type:function size:0x130 -fn_800D64F8 = .text:0x800D64F8; // type:function size:0x148 -fn_800D6640 = .text:0x800D6640; // type:function size:0x48 -fn_800D6688 = .text:0x800D6688; // type:function size:0x170 -fn_800D67F8 = .text:0x800D67F8; // type:function size:0xB0 -fn_800D68A8 = .text:0x800D68A8; // type:function size:0x114 -fn_800D69BC = .text:0x800D69BC; // type:function size:0x48 -fn_800D6A04 = .text:0x800D6A04; // type:function size:0xA4 -fn_800D6AA8 = .text:0x800D6AA8; // type:function size:0x110 -fn_800D6BB8 = .text:0x800D6BB8; // type:function size:0x48 -fn_800D6C00 = .text:0x800D6C00; // type:function size:0x1F8 -fn_800D6DF8 = .text:0x800D6DF8; // type:function size:0x12C -fn_800D6F24 = .text:0x800D6F24; // type:function size:0x174 -fn_800D7098 = .text:0x800D7098; // type:function size:0x48 -fn_800D70E0 = .text:0x800D70E0; // type:function size:0xC4 -fn_800D71A4 = .text:0x800D71A4; // type:function size:0xF4 +CARDOpen = .text:0x800D5CA4; // type:function size:0x178 +CARDClose = .text:0x800D5E1C; // type:function size:0x54 +__CARDIsOpened = .text:0x800D5E70; // type:function size:0x8 +CreateCallbackFat = .text:0x800D5E78; // type:function size:0x130 scope:local +CARDCreateAsync = .text:0x800D5FA8; // type:function size:0x220 +CARDCreate = .text:0x800D61C8; // type:function size:0x48 +__CARDSeek = .text:0x800D6210; // type:function size:0x1B8 +ReadCallback = .text:0x800D63C8; // type:function size:0x130 scope:local +CARDReadAsync = .text:0x800D64F8; // type:function size:0x148 +CARDRead = .text:0x800D6640; // type:function size:0x48 +WriteCallback = .text:0x800D6688; // type:function size:0x170 scope:local +EraseCallback = .text:0x800D67F8; // type:function size:0xB0 scope:local +CARDWriteAsync = .text:0x800D68A8; // type:function size:0x114 +CARDWrite = .text:0x800D69BC; // type:function size:0x48 +DeleteCallback = .text:0x800D6A04; // type:function size:0xA4 scope:local +CARDDeleteAsync = .text:0x800D6AA8; // type:function size:0x110 +CARDDelete = .text:0x800D6BB8; // type:function size:0x48 +UpdateIconOffsets = .text:0x800D6C00; // type:function size:0x1F8 scope:local +CARDGetStatus = .text:0x800D6DF8; // type:function size:0x12C +CARDSetStatusAsync = .text:0x800D6F24; // type:function size:0x174 +CARDSetStatus = .text:0x800D7098; // type:function size:0x48 +CARDGetSerialNo = .text:0x800D70E0; // type:function size:0xC4 +SetExiInterruptMask = .text:0x800D71A4; // type:function size:0xF4 scope:local EXIImm = .text:0x800D7298; // type:function size:0x25C scope:global -fn_800D74F4 = .text:0x800D74F4; // type:function size:0xA0 +EXIImmEx = .text:0x800D74F4; // type:function size:0xA0 EXIDma = .text:0x800D7594; // type:function size:0xEC scope:global EXISync = .text:0x800D7680; // type:function size:0x238 scope:global fn_800D78B8 = .text:0x800D78B8; // type:function size:0x48 @@ -2888,8 +2888,8 @@ fn_800E5380 = .text:0x800E5380; // type:function size:0x70 fn_800E53F0 = .text:0x800E53F0; // type:function size:0x10 __flush_buffer = .text:0x800E5400; // type:function size:0xC4 scope:global __prep_buffer = .text:0x800E54C4; // type:function size:0x34 scope:global -fn_800E54F8 = .text:0x800E54F8; // type:function size:0x24 -fn_800E551C = .text:0x800E551C; // type:function size:0x18 +tolower = .text:0x800E54F8; // type:function size:0x24 +isalpha = .text:0x800E551C; // type:function size:0x18 __fwrite = .text:0x800E5534; // type:function size:0x30C scope:global fwrite = .text:0x800E5840; // type:function size:0x20 scope:global fn_800E5860 = .text:0x800E5860; // type:function size:0x138 @@ -2922,11 +2922,11 @@ double2hex = .text:0x800E762C; // type:function size:0x338 scope:local longlong2str = .text:0x800E7964; // type:function size:0x2DC scope:local long2str = .text:0x800E7C40; // type:function size:0x220 scope:local parse_format = .text:0x800E7E60; // type:function size:0x504 scope:local -fn_800E8364 = .text:0x800E8364; // type:function size:0xB0 +raise = .text:0x800E8364; // type:function size:0xB0 strchr = .text:0x800E8414; // type:function size:0x30 scope:global -fn_800E8444 = .text:0x800E8444; // type:function size:0x40 -fn_800E8484 = .text:0x800E8484; // type:function size:0x128 -fn_800E85AC = .text:0x800E85AC; // type:function size:0x44 +strncmp = .text:0x800E8444; // type:function size:0x40 +strcmp = .text:0x800E8484; // type:function size:0x128 +strcat = .text:0x800E85AC; // type:function size:0x44 strcpy = .text:0x800E85F0; // type:function size:0xB8 strlen = .text:0x800E86A8; // type:function size:0x1C scope:global __close_console = .text:0x800E86C4; // type:function size:0x8 @@ -2944,23 +2944,23 @@ fn_800EAECC = .text:0x800EAECC; // type:function size:0xA0 fn_800EAF6C = .text:0x800EAF6C; // type:function size:0x214 fn_800EB180 = .text:0x800EB180; // type:function size:0x200 fn_800EB380 = .text:0x800EB380; // type:function size:0x28 -fn_800EB3A8 = .text:0x800EB3A8; // type:function size:0xD4 -fn_800EB47C = .text:0x800EB47C; // type:function size:0x148 -fn_800EB5C4 = .text:0x800EB5C4; // type:function size:0x8C -fn_800EB650 = .text:0x800EB650; // type:function size:0x1C4 -fn_800EB814 = .text:0x800EB814; // type:function size:0xFC -fn_800EB910 = .text:0x800EB910; // type:function size:0xD8 -fn_800EB9E8 = .text:0x800EB9E8; // type:function size:0x78 -fn_800EBA60 = .text:0x800EBA60; // type:function size:0x20 -fn_800EBA80 = .text:0x800EBA80; // type:function size:0x20 -fn_800EBAA0 = .text:0x800EBAA0; // type:function size:0x20 -fn_800EBAC0 = .text:0x800EBAC0; // type:function size:0x20 -fn_800EBAE0 = .text:0x800EBAE0; // type:function size:0x20 -fn_800EBB00 = .text:0x800EBB00; // type:function size:0x24 -fn_800EBB24 = .text:0x800EBB24; // type:function size:0x24 -fn_800EBB48 = .text:0x800EBB48; // type:function size:0x24 -fn_800EBB6C = .text:0x800EBB6C; // type:function size:0x24 -fn_800EBB90 = .text:0x800EBB90; // type:function size:0x24 +cos = .text:0x800EB3A8; // type:function size:0xD4 +floor = .text:0x800EB47C; // type:function size:0x148 +frexp = .text:0x800EB5C4; // type:function size:0x8C +ldexp = .text:0x800EB650; // type:function size:0x1C4 +modf = .text:0x800EB814; // type:function size:0xFC +sin = .text:0x800EB910; // type:function size:0xD8 +tan = .text:0x800EB9E8; // type:function size:0x78 +acos = .text:0x800EBA60; // type:function size:0x20 +asin = .text:0x800EBA80; // type:function size:0x20 +atan2 = .text:0x800EBAA0; // type:function size:0x20 +fmod = .text:0x800EBAC0; // type:function size:0x20 +log = .text:0x800EBAE0; // type:function size:0x20 +tanf = .text:0x800EBB00; // type:function size:0x24 +sinf = .text:0x800EBB24; // type:function size:0x24 +cosf = .text:0x800EBB48; // type:function size:0x24 +atan2f = .text:0x800EBB6C; // type:function size:0x24 +acosf = .text:0x800EBB90; // type:function size:0x24 TRKNubMainLoop = .text:0x800EBBB4; // type:function size:0xF8 scope:global TRKDestructEvent = .text:0x800EBCAC; // type:function size:0x24 scope:global TRKConstructEvent = .text:0x800EBCD0; // type:function size:0x18 @@ -3492,8 +3492,8 @@ EXI2_Reserve = .text:0x8011544C; // type:function size:0x4 scope:global EXI2_Unreserve = .text:0x80115450; // type:function size:0x4 scope:global AMC_IsStub = .text:0x80115454; // type:function size:0x8 scope:global Hu_IsStub = .text:0x8011545C; // type:function size:0x8 scope:weak -fn_80115464 = .text:0x80115464; // type:function size:0x10 -fn_80115474 = .text:0x80115474; // type:function size:0x34 +HuSetVecF = .text:0x80115464; // type:function size:0x10 +HuSubVecF = .text:0x80115474; // type:function size:0x34 fn_801154A8 = .text:0x801154A8; // type:function size:0x6C fn_80115514 = .text:0x80115514; // type:function size:0x27C fn_80115790 = .text:0x80115790; // type:function size:0x15C @@ -4834,7 +4834,8 @@ lbl_8011F7B4 = .data:0x8011F7B4; // type:object size:0x10 DataDirStat = .data:0x8011F7C4; // type:object size:0x468 scope:local data:4byte lbl_8011FC2C = .data:0x8011FC2C; // type:object size:0x1D data:string lbl_8011FC49 = .data:0x8011FC49; // type:object size:0x1F data:string -lbl_8011FC68 = .data:0x8011FC68; // type:object size:0x3C +lbl_8011FC68 = .data:0x8011FC68; // type:object size:0x1D data:string +lbl_8011FC85 = .data:0x8011FC85; // type:object size:0x1F data:string lbl_8011FCA4 = .data:0x8011FCA4; // type:object size:0x1A data:string lbl_8011FCBE = .data:0x8011FCBE; // type:object size:0x122 lbl_8011FDE0 = .data:0x8011FDE0; // type:object size:0x20 @@ -4843,7 +4844,7 @@ lbl_80121E00 = .data:0x80121E00; // type:object size:0x150 HeapSizeTbl = .data:0x80121F50; // type:object size:0x78 scope:local lbl_80121FC8 = .data:0x80121FC8; // type:object size:0x50 lbl_80122018 = .data:0x80122018; // type:object size:0x128 -fcoltbl = .data:0x80122140; // type:object size:0x40 align:32 +fcoltbl = .data:0x80122140; // type:object size:0x40 scope:local align:32 lbl_80122180 = .data:0x80122180; // type:object size:0x1F data:string lbl_8012219F = .data:0x8012219F; // type:object size:0x31 lbl_801221D0 = .data:0x801221D0; // type:object size:0x12 @@ -4852,13 +4853,16 @@ jumptable_801222F0 = .data:0x801222F0; // type:object size:0x2C scope:local jumptable_80122320 = .data:0x80122320; // type:object size:0x28 scope:local jumptable_80122348 = .data:0x80122348; // type:object size:0x2C scope:local lbl_80122374 = .data:0x80122374; // type:object size:0x1C -lbl_80122390 = .data:0x80122390; // type:object size:0xC data:byte +texMtxTbl = .data:0x80122390; // type:object size:0xC data:byte jumptable_8012239C = .data:0x8012239C; // type:object size:0x28 scope:local lbl_801223C4 = .data:0x801223C4; // type:object size:0x18 data:string jumptable_801223DC = .data:0x801223DC; // type:object size:0x28 scope:local jumptable_80122404 = .data:0x80122404; // type:object size:0x28 scope:local -lbl_8012242C = .data:0x8012242C; // type:object size:0x60 -lbl_8012248C = .data:0x8012248C; // type:object size:0x30 +refMtx = .data:0x8012242C; // type:object size:0x30 scope:local +kColorSelTbl = .data:0x8012245C; // type:object size:0x30 scope:local +kColorTbl = .data:0x8012248C; // type:object size:0x10 scope:local +kColorSelTbl2 = .data:0x8012249C; // type:object size:0x10 scope:local +kColorSelATbl = .data:0x801224AC; // type:object size:0x10 scope:local lbl_801224BC = .data:0x801224BC; // type:object size:0x14 jumptable_801224D0 = .data:0x801224D0; // type:object size:0x30 scope:local jumptable_80122500 = .data:0x80122500; // type:object size:0x28 scope:local @@ -4866,12 +4870,22 @@ jumptable_80122528 = .data:0x80122528; // type:object size:0x28 scope:local lbl_80122550 = .data:0x80122550; // type:object size:0x19 data:string lbl_80122569 = .data:0x80122569; // type:object size:0xA data:string lbl_80122573 = .data:0x80122573; // type:object size:0x2D -refMapData0 = .data:0x801225A0; // type:object size:0xAFC0 +refMapData0 = .data:0x801225A0; // type:object size:0x1240 align:32 noreloc +refMapData1 = .data:0x801237E0; // type:object size:0x1100 align:32 noreloc +refMapData2 = .data:0x801248E0; // type:object size:0x2080 align:32 noreloc +refMapData3 = .data:0x80126960; // type:object size:0x2080 align:32 noreloc +refMapData4 = .data:0x801289E0; // type:object size:0x2080 align:32 noreloc +toonMapData = .data:0x8012AA60; // type:object size:0x880 align:32 noreloc +toonMapData2 = .data:0x8012B2E0; // type:object size:0x1080 align:32 noreloc +hiliteData = .data:0x8012C360; // type:object size:0x480 align:32 noreloc +hiliteData2 = .data:0x8012C7E0; // type:object size:0x480 align:32 noreloc +hiliteData3 = .data:0x8012CC60; // type:object size:0x480 align:32 noreloc +hiliteData4 = .data:0x8012D0E0; // type:object size:0x480 align:32 noreloc lbl_8012D560 = .data:0x8012D560; // type:object size:0x1B data:string lbl_8012D57B = .data:0x8012D57B; // type:object size:0x16 data:string lbl_8012D591 = .data:0x8012D591; // type:object size:0x21 data:string lbl_8012D5B2 = .data:0x8012D5B2; // type:object size:0x26 -lbl_8012D5D8 = .data:0x8012D5D8; // type:object size:0x58 data:4byte +defCamera = .data:0x8012D5D8; // type:object size:0x58 data:4byte lbl_8012D630 = .data:0x8012D630; // type:object size:0x28 lbl_8012D658 = .data:0x8012D658; // type:object size:0x1C data:string lbl_8012D674 = .data:0x8012D674; // type:object size:0x1C @@ -4897,8 +4911,8 @@ lbl_8012DAA0 = .data:0x8012DAA0; // type:object size:0x45 lbl_8012DAE5 = .data:0x8012DAE5; // type:object size:0x19 data:string lbl_8012DAFE = .data:0x8012DAFE; // type:object size:0x17 data:string lbl_8012DB15 = .data:0x8012DB15; // type:object size:0x1B3 -lbl_8012DCC8 = .data:0x8012DCC8; // type:object size:0xF data:byte -lbl_8012DCD7 = .data:0x8012DCD7; // type:object size:0x800 +XFB_Colors = .data:0x8012DCC8; // type:object size:0xF scope:local data:byte +Ascii8x8_1bpp = .data:0x8012DCD7; // type:object size:0x800 scope:local lbl_8012E4D7 = .data:0x8012E4D7; // type:object size:0x19 lbl_8012E4F0 = .data:0x8012E4F0; // type:object size:0x21A lbl_8012E70A = .data:0x8012E70A; // type:object size:0xB data:string @@ -5020,24 +5034,24 @@ lbl_8012FDA1 = .data:0x8012FDA1; // type:object size:0xF data:string lbl_8012FDB0 = .data:0x8012FDB0; // type:object size:0xF data:string lbl_8012FDBF = .data:0x8012FDBF; // type:object size:0xF data:string lbl_8012FDCE = .data:0x8012FDCE; // type:object size:0x12 -lbl_8012FDE0 = .data:0x8012FDE0; // type:object size:0x320 +_ovltbl = .data:0x8012FDE0; // type:object size:0x320 lbl_80130100 = .data:0x80130100; // type:object size:0x20 lbl_80130120 = .data:0x80130120; // type:object size:0xC lbl_8013012C = .data:0x8013012C; // type:object size:0x14 -lbl_80130140 = .data:0x80130140; // type:object size:0x170 -lbl_801302B0 = .data:0x801302B0; // type:object size:0x130 -lbl_801303E0 = .data:0x801303E0; // type:object size:0x140 -lbl_80130520 = .data:0x80130520; // type:object size:0x3C -charColPal = .data:0x8013055C; // type:object size:0x10 +spcFontTbl = .data:0x80130140; // type:object size:0x170 scope:local +charWETbl = .data:0x801302B0; // type:object size:0x130 +charWJTbl = .data:0x801303E0; // type:object size:0x140 +charColPal = .data:0x80130520; // type:object size:0x3C scope:local align:32 +frameFileTbl = .data:0x8013055C; // type:object size:0x10 scope:local lbl_8013056C = .data:0x8013056C; // type:object size:0xE data:string lbl_8013057A = .data:0x8013057A; // type:object size:0xF data:string lbl_80130589 = .data:0x80130589; // type:object size:0x10 data:string lbl_80130599 = .data:0x80130599; // type:object size:0x13 -lbl_801305AC = .data:0x801305AC; // type:object size:0x10 -lbl_801305BC = .data:0x801305BC; // type:object size:0x54 +mesDataTbl = .data:0x801305AC; // type:object size:0x10 scope:local +winVoiceTbl = .data:0x801305BC; // type:object size:0x54 scope:local lbl_80130610 = .data:0x80130610; // type:object size:0x13 data:string lbl_80130623 = .data:0x80130623; // type:object size:0x19 -lbl_8013063C = .data:0x8013063C; // type:object size:0x4C +winPortraitTbl = .data:0x8013063C; // type:object size:0x4C scope:local lbl_80130688 = .data:0x80130688; // type:object size:0x26 data:string lbl_801306AE = .data:0x801306AE; // type:object size:0x2A lbl_801306D8 = .data:0x801306D8; // type:object size:0x19 data:string @@ -5283,11 +5297,11 @@ jumptable_8013D8C0 = .data:0x8013D8C0; // type:object size:0x68 scope:local jumptable_8013D928 = .data:0x8013D928; // type:object size:0x44 scope:local jumptable_8013D96C = .data:0x8013D96C; // type:object size:0x1C scope:local jumptable_8013D988 = .data:0x8013D988; // type:object size:0x54 scope:local -lbl_8013D9E0 = .data:0x8013D9E0; // type:object size:0x3C -lbl_8013DA1C = .data:0x8013DA1C; // type:object size:0x3C -lbl_8013DA58 = .data:0x8013DA58; // type:object size:0x3C -lbl_8013DA94 = .data:0x8013DA94; // type:object size:0x3C -lbl_8013DAD0 = .data:0x8013DAD0; // type:object size:0x40 +GXNtsc480IntDf = .data:0x8013D9E0; // type:object size:0x3C +GXNtsc480Prog = .data:0x8013DA1C; // type:object size:0x3C +GXMpal480IntDf = .data:0x8013DA58; // type:object size:0x3C +GXPal528IntDf = .data:0x8013DA94; // type:object size:0x3C +GXEurgb60Hz480IntDf = .data:0x8013DAD0; // type:object size:0x40 jumptable_8013DB10 = .data:0x8013DB10; // type:object size:0x1C scope:local jumptable_8013DB30 = .data:0x8013DB30; // type:object size:0xF4 scope:local jumptable_8013DC24 = .data:0x8013DC24; // type:object size:0xF4 scope:local @@ -5353,9 +5367,9 @@ lbl_80141FD0 = .data:0x80141FD0; // type:object size:0x20 lbl_80141FF0 = .data:0x80141FF0; // type:object size:0x800 padStatErrOld = .bss:0x80142800; // type:object size:0x10 rumbleData = .bss:0x80142810; // type:object size:0x30 -ReadDataStat = .bss:0x80142840; // type:object size:0x2E00 align:32 data:4byte +ReadDataStat = .bss:0x80142840; // type:object size:0x2E00 scope:local align:32 data:4byte TextBuffer = .bss:0x80145640; // type:object size:0x400 -lbl_80145A40 = .bss:0x80145A40; // type:object size:0x40 +rmodeobj = .bss:0x80145A40; // type:object size:0x40 scope:local HeapTbl = .bss:0x80145A80; // type:object size:0x14 scope:local strline = .bss:0x80145A98; // type:object size:0x6800 scope:local pfStrBuf = .bss:0x8014C298; // type:object size:0x100 scope:local data:byte @@ -5365,41 +5379,41 @@ HuSprGrpData = .bss:0x80155A90; // type:object size:0x5400 data:2byte HuSprOrder = .bss:0x8015AE90; // type:object size:0x1800 bmpNoCC = .bss:0x8015C690; // type:object size:0x20 HuSprLayerDrawNo = .bss:0x8015C6B0; // type:object size:0x10 -lbl_8015C6C0 = .bss:0x8015C6C0; // type:object size:0x80 -lbl_8015C740 = .bss:0x8015C740; // type:object size:0x240 -lbl_8015C980 = .bss:0x8015C980; // type:object size:0x300 data:byte -lbl_8015CC80 = .bss:0x8015CC80; // type:object size:0x9000 -lbl_80165C80 = .bss:0x80165C80; // type:object size:0x20 data:4byte -lbl_80165CA0 = .bss:0x80165CA0; // type:object size:0x1200 -lbl_80166EA0 = .bss:0x80166EA0; // type:object size:0x480 data:4byte -lbl_80167320 = .bss:0x80167320; // type:object size:0x40 data:byte -lbl_80167360 = .bss:0x80167360; // type:object size:0x30 -lbl_80167390 = .bss:0x80167390; // type:object size:0x400 -lbl_80167790 = .bss:0x80167790; // type:object size:0xC data:float -lbl_8016779C = .bss:0x8016779C; // type:object size:0xC data:float -lbl_801677A8 = .bss:0x801677A8; // type:object size:0xC data:float -lbl_801677B4 = .bss:0x801677B4; // type:object size:0xC data:float -lbl_801677C0 = .bss:0x801677C0; // type:object size:0x24800 data:byte -lbl_8018BFC0 = .bss:0x8018BFC0; // type:object size:0x580 data:float -lbl_8018C540 = .bss:0x8018C540; // type:object size:0x10 data:2byte -lbl_8018C550 = .bss:0x8018C550; // type:object size:0x20 -lbl_8018C570 = .bss:0x8018C570; // type:object size:0x14 data:4byte -lbl_8018C584 = .bss:0x8018C584; // type:object size:0x10 data:4byte -lbl_8018C594 = .bss:0x8018C594; // type:object size:0x260 data:byte -lbl_8018C7F4 = .bss:0x8018C7F4; // type:object size:0x98 data:byte -lbl_8018C88C = .bss:0x8018C88C; // type:object size:0x10 data:4byte -lbl_8018C89C = .bss:0x8018C89C; // type:object size:0x30 -lbl_8018C8CC = .bss:0x8018C8CC; // type:object size:0x30 -lbl_8018C8FC = .bss:0x8018C8FC; // type:object size:0x220 data:2byte -lbl_8018CB1C = .bss:0x8018CB1C; // type:object size:0x8B4 data:2byte +Model = .bss:0x8015C6C0; // type:object size:0x80 +head = .bss:0x8015C740; // type:object size:0x240 +lbl_8015C980 = .bss:0x8015C980; // type:object size:0x300 scope:local data:byte +DrawObjData = .bss:0x8015CC80; // type:object size:0x9000 scope:local +BmpPtrBak = .bss:0x80165C80; // type:object size:0x20 scope:local data:4byte +MTXBuf = .bss:0x80165CA0; // type:object size:0x1200 scope:local +scaleBuf = .bss:0x80166EA0; // type:object size:0x480 scope:local data:4byte +texCol = .bss:0x80167320; // type:object size:0x40 scope:local data:byte +hiliteMtx = .bss:0x80167360; // type:object size:0x30 scope:local +DrawObjNum = .bss:0x80167390; // type:object size:0x400 scope:local +NBTB = .bss:0x80167790; // type:object size:0xC scope:local data:float +NBTT = .bss:0x8016779C; // type:object size:0xC scope:local data:float +PGMaxPos = .bss:0x801677A8; // type:object size:0xC data:float +PGMinPos = .bss:0x801677B4; // type:object size:0xC data:float +Hu3DData = .bss:0x801677C0; // type:object size:0x24800 data:byte +Hu3DCamera = .bss:0x8018BFC0; // type:object size:0x580 data:float +layerNum = .bss:0x8018C540; // type:object size:0x10 scope:local data:2byte +layerHook = .bss:0x8018C550; // type:object size:0x20 scope:local +reflectAnim = .bss:0x8018C570; // type:object size:0x14 data:4byte +hiliteAnim = .bss:0x8018C584; // type:object size:0x10 data:4byte +Hu3DProjection = .bss:0x8018C594; // type:object size:0x260 data:byte +Hu3DShadowData = .bss:0x8018C7F4; // type:object size:0x98 data:byte +FogData = .bss:0x8018C88C; // type:object size:0x10 data:4byte +Hu3DCameraMtx = .bss:0x8018C89C; // type:object size:0x30 +Hu3DCameraMtxXPose = .bss:0x8018C8CC; // type:object size:0x30 +Hu3DGlobalLight = .bss:0x8018C8FC; // type:object size:0x220 data:2byte +Hu3DLocalLight = .bss:0x8018CB1C; // type:object size:0x8B4 data:2byte lbl_8018D3D0 = .bss:0x8018D3D0; // type:object size:0x800 data:2byte lbl_8018DBD0 = .bss:0x8018DBD0; // type:object size:0x1400 data:2byte lbl_8018EFD0 = .bss:0x8018EFD0; // type:object size:0x6C0 data:2byte lbl_8018F690 = .bss:0x8018F690; // type:object size:0x100 lbl_8018F790 = .bss:0x8018F790; // type:object size:0x370 lbl_8018FB00 = .bss:0x8018FB00; // type:object size:0x38 -lbl_8018FB38 = .bss:0x8018FB38; // type:object size:0xC0 -lbl_8018FBF8 = .bss:0x8018FBF8; // type:object size:0x18 +omovlhis = .bss:0x8018FB38; // type:object size:0xC0 scope:local +XFB_Geometry = .bss:0x8018FBF8; // type:object size:0x18 scope:local gPlayerConfig = .bss:0x8018FC10; // type:object size:0x28 gPlayerData = .bss:0x8018FC38; // type:object size:0xC0 data:byte lbl_8018FCF8 = .bss:0x8018FCF8; // type:object size:0xE0 data:byte @@ -5421,11 +5435,12 @@ lbl_80192160 = .bss:0x80192160; // type:object size:0x100 lbl_80192260 = .bss:0x80192260; // type:object size:0x100 wipeData = .bss:0x80192360; // type:object size:0x60 data:4byte winData = .bss:0x801923C0; // type:object size:0x3000 align:32 data:byte -lbl_801953C0 = .bss:0x801953C0; // type:object size:0x10 -lbl_801953D0 = .bss:0x801953D0; // type:object size:0x1410 -lbl_801967E0 = .bss:0x801967E0; // type:object size:0x400 data:byte -lbl_80196BE0 = .bss:0x80196BE0; // type:object size:0x20 -lbl_80196C00 = .bss:0x80196C00; // type:object size:0x2C0 +winKey = .bss:0x801953C0; // type:object size:0x10 +winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400 +ARInfo = .bss:0x801967E0; // type:object size:0x400 data:byte +arqReq = .bss:0x80196BE0; // type:object size:0x20 scope:local +ARQueBuf = .bss:0x80196C00; // type:object size:0x280 scope:local +preLoadBuf = .bss:0x80196E80; // type:object size:0x40 scope:local align:32 lbl_80196EC0 = .bss:0x80196EC0; // type:object size:0x640 lbl_80197500 = .bss:0x80197500; // type:object size:0x10 data:2byte lbl_80197510 = .bss:0x80197510; // type:object size:0x20 @@ -5619,19 +5634,19 @@ lbl_801D3430 = .sdata:0x801D3430; // type:object size:0x6 data:string lbl_801D3436 = .sdata:0x801D3436; // type:object size:0x2 data:string lbl_801D3438 = .sdata:0x801D3438; // type:object size:0x7 data:string lbl_801D343F = .sdata:0x801D343F; // type:object size:0x9 -lbl_801D3448 = .sdata:0x801D3448; // type:object size:0x4 data:4byte +FirstFrame = .sdata:0x801D3448; // type:object size:0x4 scope:local data:4byte lbl_801D344C = .sdata:0x801D344C; // type:object size:0x7 data:string lbl_801D3453 = .sdata:0x801D3453; // type:object size:0xD lbl_801D3460 = .sdata:0x801D3460; // type:object size:0x2 data:string lbl_801D3462 = .sdata:0x801D3462; // type:object size:0xE -lbl_801D3470 = .sdata:0x801D3470; // type:object size:0x2 data:2byte -lbl_801D3472 = .sdata:0x801D3472; // type:object size:0x4 -lbl_801D3476 = .sdata:0x801D3476; // type:object size:0x4 +oneceF = .sdata:0x801D3470; // type:object size:0x2 scope:local data:2byte +firstTev = .sdata:0x801D3472; // type:object size:0x4 scope:local +secondTev = .sdata:0x801D3476; // type:object size:0x4 scope:local lbl_801D347A = .sdata:0x801D347A; // type:object size:0xE lbl_801D3488 = .sdata:0x801D3488; // type:object size:0x4 data:string lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC -lbl_801D3498 = .sdata:0x801D3498; // type:object size:0x1 data:byte -lbl_801D349C = .sdata:0x801D349C; // type:object size:0x4 data:4byte +omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte +omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte lbl_801D34A0 = .sdata:0x801D34A0; // type:object size:0x4 data:4byte lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1 @@ -5693,7 +5708,7 @@ lbl_801D35E4 = .sdata:0x801D35E4; // type:object size:0x1 data:byte lbl_801D35E5 = .sdata:0x801D35E5; // type:object size:0x1 data:byte lbl_801D35E6 = .sdata:0x801D35E6; // type:object size:0x1 data:byte lbl_801D35E7 = .sdata:0x801D35E7; // type:object size:0x1 data:byte -lbl_801D35E8 = .sdata:0x801D35E8; // type:object size:0x8 data:2byte +winPrio = .sdata:0x801D35E8; // type:object size:0x8 data:2byte lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8 lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8 lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8 @@ -5942,18 +5957,18 @@ beforeDvdStatus = .sbss:0x801D3AE0; // type:object size:0x4 scope:local data:4by CallBackStatus = .sbss:0x801D3AE4; // type:object size:0x4 scope:local data:4byte shortAccessSleep = .sbss:0x801D3AE8; // type:object size:0x4 scope:local data:4byte DataDirMax = .sbss:0x801D3AEC; // type:object size:0x4 scope:local data:4byte -DirDataSize = .sbss:0x801D3AF0; // type:object size:0x8 scope:local data:4byte -lbl_801D3AF8 = .sbss:0x801D3AF8; // type:object size:0x4 data:4byte -lbl_801D3AFC = .sbss:0x801D3AFC; // type:object size:0x4 data:4byte -lbl_801D3B00 = .sbss:0x801D3B00; // type:object size:0x4 data:float -lbl_801D3B04 = .sbss:0x801D3B04; // type:object size:0x4 data:4byte -lbl_801D3B08 = .sbss:0x801D3B08; // type:object size:0x4 data:4byte -lbl_801D3B0C = .sbss:0x801D3B0C; // type:object size:0x4 data:4byte -lbl_801D3B10 = .sbss:0x801D3B10; // type:object size:0x4 data:4byte -lbl_801D3B14 = .sbss:0x801D3B14; // type:object size:0x4 data:4byte -lbl_801D3B18 = .sbss:0x801D3B18; // type:object size:0x4 data:4byte +DirDataSize = .sbss:0x801D3AF0; // type:object size:0x8 data:4byte +DemoStatEnable = .sbss:0x801D3AF8; // type:object size:0x4 scope:local data:4byte +worstVcount = .sbss:0x801D3AFC; // type:object size:0x4 data:4byte +minimumVcountf = .sbss:0x801D3B00; // type:object size:0x4 data:float +minimumVcount = .sbss:0x801D3B04; // type:object size:0x4 data:4byte +DemoCurrentBuffer = .sbss:0x801D3B08; // type:object size:0x4 data:4byte +DemoFrameBuffer2 = .sbss:0x801D3B0C; // type:object size:0x4 data:4byte +DemoFrameBuffer1 = .sbss:0x801D3B10; // type:object size:0x4 data:4byte +DefaultFifoObj = .sbss:0x801D3B14; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x801D3B18; // type:object size:0x4 scope:local data:4byte currentHeapHandle = .sbss:0x801D3B1C; // type:object size:0x4 data:4byte -lbl_801D3B20 = .sbss:0x801D3B20; // type:object size:0x8 data:4byte +RenderMode = .sbss:0x801D3B20; // type:object size:0x8 data:4byte saftyFrameF = .sbss:0x801D3B28; // type:object size:0x4 data:4byte strlinecnt = .sbss:0x801D3B2C; // type:object size:0x2 data:2byte empstrline = .sbss:0x801D3B2E; // type:object size:0x2 data:2byte @@ -5966,85 +5981,79 @@ HuSprPauseF = .sbss:0x801D3B48; // type:object size:0x4 data:4byte HuSprOrderNo = .sbss:0x801D3B4C; // type:object size:0x2 data:2byte HuSprOrderNum = .sbss:0x801D3B4E; // type:object size:0x2 data:2byte bmpCCIdx = .sbss:0x801D3B50; // type:object size:0x8 data:2byte -lbl_801D3B58 = .sbss:0x801D3B58; // type:object size:0x4 data:4byte -lbl_801D3B5C = .sbss:0x801D3B5C; // type:object size:0x4 data:4byte -lbl_801D3B60 = .sbss:0x801D3B60; // type:object size:0x4 data:4byte -lbl_801D3B64 = .sbss:0x801D3B64; // type:object size:0x4 data:4byte -lbl_801D3B68 = .sbss:0x801D3B68; // type:object size:0x4 data:4byte -lbl_801D3B6C = .sbss:0x801D3B6C; // type:object size:0x4 data:4byte -lbl_801D3B70 = .sbss:0x801D3B70; // type:object size:0x4 data:4byte -lbl_801D3B74 = .sbss:0x801D3B74; // type:object size:0x4 data:4byte -lbl_801D3B78 = .sbss:0x801D3B78; // type:object size:0x4 data:4byte -lbl_801D3B7C = .sbss:0x801D3B7C; // type:object size:0x4 data:4byte -lbl_801D3B80 = .sbss:0x801D3B80; // type:object size:0x4 data:4byte -lbl_801D3B84 = .sbss:0x801D3B84; // type:object size:0x4 data:4byte -lbl_801D3B88 = .sbss:0x801D3B88; // type:object size:0x8 data:4byte -lbl_801D3B90 = .sbss:0x801D3B90; // type:object size:0x4 data:4byte -lbl_801D3B94 = .sbss:0x801D3B94; // type:object size:0x4 data:4byte -lbl_801D3B98 = .sbss:0x801D3B98; // type:object size:0x4 data:4byte -lbl_801D3B9C = .sbss:0x801D3B9C; // type:object size:0x4 data:4byte -lbl_801D3BA0 = .sbss:0x801D3BA0; // type:object size:0x2 data:2byte -lbl_801D3BA4 = .sbss:0x801D3BA4; // type:object size:0x4 data:4byte -lbl_801D3BA8 = .sbss:0x801D3BA8; // type:object size:0x4 data:4byte -lbl_801D3BAC = .sbss:0x801D3BAC; // type:object size:0x4 data:4byte -lbl_801D3BB0 = .sbss:0x801D3BB0; // type:object size:0x4 data:4byte -lbl_801D3BB4 = .sbss:0x801D3BB4; // type:object size:0x4 data:4byte -lbl_801D3BB8 = .sbss:0x801D3BB8; // type:object size:0x2 data:2byte -lbl_801D3BBA = .sbss:0x801D3BBA; // type:object size:0x2 data:2byte -lbl_801D3BBC = .sbss:0x801D3BBC; // type:object size:0x2 data:2byte -lbl_801D3BBE = .sbss:0x801D3BBE; // type:object size:0x2 data:2byte -lbl_801D3BC0 = .sbss:0x801D3BC0; // type:object size:0x4 data:4byte -lbl_801D3BC4 = .sbss:0x801D3BC4; // type:object size:0x2 data:2byte -lbl_801D3BC6 = .sbss:0x801D3BC6; // type:object size:0x2 data:2byte -lbl_801D3BC8 = .sbss:0x801D3BC8; // type:object size:0x4 data:4byte -lbl_801D3BCC = .sbss:0x801D3BCC; // type:object size:0x4 data:4byte -lbl_801D3BD0 = .sbss:0x801D3BD0; // type:object size:0x4 data:4byte -lbl_801D3BD4 = .sbss:0x801D3BD4; // type:object size:0x4 data:4byte -lbl_801D3BD8 = .sbss:0x801D3BD8; // type:object size:0x4 data:4byte -lbl_801D3BDC = .sbss:0x801D3BDC; // type:object size:0x4 data:4byte -lbl_801D3BE0 = .sbss:0x801D3BE0; // type:object size:0x4 data:4byte -lbl_801D3BE4 = .sbss:0x801D3BE4; // type:object size:0x4 data:4byte -lbl_801D3BE8 = .sbss:0x801D3BE8; // type:object size:0x2 data:2byte -lbl_801D3BEC = .sbss:0x801D3BEC; // type:object size:0x4 data:4byte -lbl_801D3BF0 = .sbss:0x801D3BF0; // type:object size:0x1 data:byte -lbl_801D3BF1 = .sbss:0x801D3BF1; // type:object size:0x1 data:byte -lbl_801D3BF2 = .sbss:0x801D3BF2; // type:object size:0x1 data:byte -lbl_801D3BF3 = .sbss:0x801D3BF3; // type:object size:0x1 data:byte -lbl_801D3BF4 = .sbss:0x801D3BF4; // type:object size:0x2 data:2byte -lbl_801D3BF6 = .sbss:0x801D3BF6; // type:object size:0x2 data:2byte -lbl_801D3BF8 = .sbss:0x801D3BF8; // type:object size:0x2 data:2byte -lbl_801D3BFC = .sbss:0x801D3BFC; // type:object size:0x4 data:4byte -lbl_801D3C00 = .sbss:0x801D3C00; // type:object size:0x2 data:2byte -lbl_801D3C02 = .sbss:0x801D3C02; // type:object size:0x2 data:2byte -lbl_801D3C04 = .sbss:0x801D3C04; // type:object size:0x2 data:2byte -lbl_801D3C08 = .sbss:0x801D3C08; // type:object size:0x4 data:4byte -lbl_801D3C0C = .sbss:0x801D3C0C; // type:object size:0x2 data:2byte -lbl_801D3C0E = .sbss:0x801D3C0E; // type:object size:0x2 data:2byte -lbl_801D3C10 = .sbss:0x801D3C10; // type:object size:0x4 data:4byte -lbl_801D3C14 = .sbss:0x801D3C14; // type:object size:0x4 data:4byte -lbl_801D3C18 = .sbss:0x801D3C18; // type:object size:0x4 data:4byte -lbl_801D3C1C = .sbss:0x801D3C1C; // type:object size:0x4 data:4byte -lbl_801D3C20 = .sbss:0x801D3C20; // type:object size:0x4 data:4byte -lbl_801D3C24 = .sbss:0x801D3C24; // type:object size:0x1 data:byte -lbl_801D3C28 = .sbss:0x801D3C28; // type:object size:0x4 data:4byte -lbl_801D3C2C = .sbss:0x801D3C2C; // type:object size:0x2 data:2byte -lbl_801D3C30 = .sbss:0x801D3C30; // type:object size:0x4 data:4byte -lbl_801D3C34 = .sbss:0x801D3C34; // type:object size:0x2 data:2byte -lbl_801D3C36 = .sbss:0x801D3C36; // type:object size:0x2 data:2byte -lbl_801D3C38 = .sbss:0x801D3C38; // type:object size:0x2 data:2byte -lbl_801D3C3C = .sbss:0x801D3C3C; // type:object size:0x4 data:4byte -lbl_801D3C40 = .sbss:0x801D3C40; // type:object size:0x2 data:2byte -lbl_801D3C42 = .sbss:0x801D3C42; // type:object size:0x2 data:2byte -lbl_801D3C44 = .sbss:0x801D3C44; // type:object size:0x2 data:2byte -lbl_801D3C48 = .sbss:0x801D3C48; // type:object size:0x4 data:4byte -lbl_801D3C4C = .sbss:0x801D3C4C; // type:object size:0x4 data:4byte -lbl_801D3C50 = .sbss:0x801D3C50; // type:object size:0x2 data:2byte -lbl_801D3C54 = .sbss:0x801D3C54; // type:object size:0x4 data:4byte -lbl_801D3C58 = .sbss:0x801D3C58; // type:object size:0x2 data:2byte -lbl_801D3C5A = .sbss:0x801D3C5A; // type:object size:0x1 data:byte -lbl_801D3C5B = .sbss:0x801D3C5B; // type:object size:0x1 data:byte -lbl_801D3C5C = .sbss:0x801D3C5C; // type:object size:0x1 data:byte -lbl_801D3C5D = .sbss:0x801D3C5D; // type:object size:0x1 data:byte +MaterialTop = .sbss:0x801D3B58; // type:object size:0x4 data:4byte +AttributeTop = .sbss:0x801D3B5C; // type:object size:0x4 data:4byte +ClusterTop = .sbss:0x801D3B60; // type:object size:0x4 data:4byte +vtxtop = .sbss:0x801D3B64; // type:object size:0x4 data:4byte +objtop = .sbss:0x801D3B68; // type:object size:0x4 data:4byte +NSymIndex = .sbss:0x801D3B6C; // type:object size:0x4 data:4byte +DicStringTable = .sbss:0x801D3B70; // type:object size:0x4 data:4byte +StringTable = .sbss:0x801D3B74; // type:object size:0x4 data:4byte +fileptr = .sbss:0x801D3B78; // type:object size:0x4 data:4byte +NormalDataTop = .sbss:0x801D3B7C; // type:object size:0x4 scope:local data:4byte +VertexDataTop = .sbss:0x801D3B80; // type:object size:0x4 scope:local data:4byte +MotionModel = .sbss:0x801D3B84; // type:object size:0x4 scope:local data:4byte +MotionOnly = .sbss:0x801D3B88; // type:object size:0x8 scope:local data:4byte +CancelTRXF = .sbss:0x801D3B90; // type:object size:0x4 scope:local data:4byte +TL32F = .sbss:0x801D3B94; // type:object size:0x4 scope:local data:4byte +PGName = .sbss:0x801D3B98; // type:object size:0x4 scope:local data:4byte +PGFinishF = .sbss:0x801D3B9C; // type:object size:0x4 scope:local data:4byte +polySize = .sbss:0x801D3BA0; // type:object size:0x2 scope:local data:2byte +curModelID = .sbss:0x801D3BA4; // type:object size:0x4 scope:local data:4byte +mallocNo = .sbss:0x801D3BA8; // type:object size:0x4 scope:local data:4byte +totalSize = .sbss:0x801D3BAC; // type:object size:0x4 scope:local data:4byte +DLTotalNum = .sbss:0x801D3BB0; // type:object size:0x4 scope:local data:4byte +faceNumBuf = .sbss:0x801D3BB4; // type:object size:0x4 scope:local data:4byte +faceCnt = .sbss:0x801D3BB8; // type:object size:0x2 scope:local data:2byte +quadCnt = .sbss:0x801D3BBA; // type:object size:0x2 scope:local data:2byte +triCnt = .sbss:0x801D3BBC; // type:object size:0x2 scope:local data:2byte +matChgCnt = .sbss:0x801D3BBE; // type:object size:0x2 scope:local data:2byte +DLFirstF = .sbss:0x801D3BC0; // type:object size:0x4 scope:local data:4byte +modelObjNum = .sbss:0x801D3BC4; // type:object size:0x2 data:2byte +modelMeshNum = .sbss:0x801D3BC6; // type:object size:0x2 data:2byte +totalTexCacheCnted = .sbss:0x801D3BC8; // type:object size:0x4 scope:local data:4byte +totalTexCacheCnt = .sbss:0x801D3BCC; // type:object size:0x4 scope:local data:4byte +totalTexCnted = .sbss:0x801D3BD0; // type:object size:0x4 scope:local data:4byte +totalTexCnt = .sbss:0x801D3BD4; // type:object size:0x4 scope:local data:4byte +totalMatCnted = .sbss:0x801D3BD8; // type:object size:0x4 scope:local data:4byte +totalMatCnt = .sbss:0x801D3BDC; // type:object size:0x4 scope:local data:4byte +totalPolyCnted = .sbss:0x801D3BE0; // type:object size:0x4 data:4byte +totalPolyCnt = .sbss:0x801D3BE4; // type:object size:0x4 scope:local data:4byte +hookIdx = .sbss:0x801D3BE8; // type:object size:0x2 scope:local data:2byte +kColorIdx = .sbss:0x801D3BEC; // type:object size:0x4 scope:local data:4byte +kColor = .sbss:0x801D3BF0; // type:object size:0x4 scope:local data:byte +projectionMapNo = .sbss:0x801D3BF4; // type:object size:0x2 scope:local data:2byte +toonMapNo = .sbss:0x801D3BF6; // type:object size:0x2 scope:local data:2byte +shadowMapNo = .sbss:0x801D3BF8; // type:object size:0x2 scope:local data:2byte +attachMotionF = .sbss:0x801D3BFC; // type:object size:0x4 scope:local data:4byte +vtxModeBak = .sbss:0x801D3C00; // type:object size:0x2 scope:local data:2byte +hiliteMapNo = .sbss:0x801D3C02; // type:object size:0x2 scope:local data:2byte +reflectionMapNo = .sbss:0x801D3C04; // type:object size:0x2 scope:local data:2byte +Hu3DObjInfoP = .sbss:0x801D3C08; // type:object size:0x4 scope:local data:4byte +DrawObjIdx = .sbss:0x801D3C0C; // type:object size:0x2 scope:local data:2byte +lightBit = .sbss:0x801D3C0E; // type:object size:0x2 scope:local data:2byte +drawCnt = .sbss:0x801D3C10; // type:object size:0x4 scope:local data:4byte +DrawData = .sbss:0x801D3C14; // type:object size:0x4 scope:local data:4byte +DLBufStartP = .sbss:0x801D3C18; // type:object size:0x4 scope:local data:4byte +DLBufP = .sbss:0x801D3C1C; // type:object size:0x4 scope:local data:4byte +shadingBak = .sbss:0x801D3C20; // type:object size:0x4 scope:local data:4byte +polyTypeBak = .sbss:0x801D3C24; // type:object size:0x1 scope:local data:byte +materialBak = .sbss:0x801D3C28; // type:object size:0x4 scope:local data:4byte +MTXIdx = .sbss:0x801D3C2C; // type:object size:0x2 data:2byte +modelKillAllF = .sbss:0x801D3C30; // type:object size:0x4 data:4byte +NoSyncF = .sbss:0x801D3C34; // type:object size:0x2 scope:local data:2byte +Hu3DCameraExistF = .sbss:0x801D3C36; // type:object size:0x2 data:2byte +Hu3DPauseF = .sbss:0x801D3C38; // type:object size:0x2 data:2byte +Hu3DMallocNo = .sbss:0x801D3C3C; // type:object size:0x4 data:4byte +Hu3DCameraBit = .sbss:0x801D3C40; // type:object size:0x2 data:2byte +Hu3DCameraNo = .sbss:0x801D3C42; // type:object size:0x2 data:2byte +Hu3DProjectionNum = .sbss:0x801D3C44; // type:object size:0x2 data:2byte +shadowModelDrawF = .sbss:0x801D3C48; // type:object size:0x4 data:4byte +Hu3DShadowF = .sbss:0x801D3C4C; // type:object size:0x4 data:4byte +Hu3DShadowCamBit = .sbss:0x801D3C50; // type:object size:0x2 data:2byte +toonAnim = .sbss:0x801D3C54; // type:object size:0x4 data:4byte +reflectMapNo = .sbss:0x801D3C58; // type:object size:0x2 data:2byte +BGColor = .sbss:0x801D3C5A; // type:object size:0x4 data:byte lbl_801D3C60 = .sbss:0x801D3C60; // type:object size:0x8 data:4byte lbl_801D3C68 = .sbss:0x801D3C68; // type:object size:0x1 data:byte lbl_801D3C6A = .sbss:0x801D3C6A; // type:object size:0x2 data:2byte @@ -6069,30 +6078,28 @@ lbl_801D3CB0 = .sbss:0x801D3CB0; // type:object size:0x4 lbl_801D3CB4 = .sbss:0x801D3CB4; // type:object size:0x4 lbl_801D3CB8 = .sbss:0x801D3CB8; // type:object size:0x4 lbl_801D3CBC = .sbss:0x801D3CBC; // type:object size:0x4 -drawDebugBoxBool = .sbss:0x801D3CC0; // type:object size:0x2 data:2byte -lbl_801D3CC2 = .sbss:0x801D3CC2; // type:object size:0x2 data:2byte -lbl_801D3CC4 = .sbss:0x801D3CC4; // type:object size:0x1 data:byte -lbl_801D3CC8 = .sbss:0x801D3CC8; // type:object size:0x4 data:4byte -lbl_801D3CCC = .sbss:0x801D3CCC; // type:object size:0x4 data:4byte -lbl_801D3CD0 = .sbss:0x801D3CD0; // type:object size:0x4 data:4byte -lbl_801D3CD4 = .sbss:0x801D3CD4; // type:object size:0x4 data:4byte -lbl_801D3CD8 = .sbss:0x801D3CD8; // type:object size:0x4 data:4byte -lbl_801D3CDC = .sbss:0x801D3CDC; // type:object size:0x4 data:4byte -lbl_801D3CE0 = .sbss:0x801D3CE0; // type:object size:0x4 data:4byte -lbl_801D3CE4 = .sbss:0x801D3CE4; // type:object size:0x4 data:4byte -lbl_801D3CE8 = .sbss:0x801D3CE8; // type:object size:0x4 data:4byte -lbl_801D3CEC = .sbss:0x801D3CEC; // type:object size:0x4 data:4byte -lbl_801D3CF0 = .sbss:0x801D3CF0; // type:object size:0x4 data:4byte -lbl_801D3CF4 = .sbss:0x801D3CF4; // type:object size:0x4 data:4byte -lbl_801D3CF8 = .sbss:0x801D3CF8; // type:object size:0x1 data:byte -lbl_801D3CF9 = .sbss:0x801D3CF9; // type:object size:0x1 data:byte -lbl_801D3CFA = .sbss:0x801D3CFA; // type:object size:0x1 data:byte -lbl_801D3CFC = .sbss:0x801D3CFC; // type:object size:0x4 data:4byte +omdispinfo = .sbss:0x801D3CC0; // type:object size:0x2 data:2byte +omSysExitReq = .sbss:0x801D3CC2; // type:object size:0x2 data:2byte +omUPauseFlag = .sbss:0x801D3CC4; // type:object size:0x1 data:byte +omnextovlstat = .sbss:0x801D3CC8; // type:object size:0x4 scope:local data:4byte +omovlstat = .sbss:0x801D3CCC; // type:object size:0x4 data:4byte +omnextovlevtno = .sbss:0x801D3CD0; // type:object size:0x4 scope:local data:4byte +omovlevtno = .sbss:0x801D3CD4; // type:object size:0x4 data:4byte +omovlhisidx = .sbss:0x801D3CD8; // type:object size:0x4 data:4byte +omcurdll = .sbss:0x801D3CDC; // type:object size:0x4 data:4byte +omcurovl = .sbss:0x801D3CE0; // type:object size:0x4 data:4byte +omnextovl = .sbss:0x801D3CE4; // type:object size:0x4 data:4byte +omwatchproc = .sbss:0x801D3CE8; // type:object size:0x4 data:4byte +omDBGSysKeyObj = .sbss:0x801D3CEC; // type:object size:0x4 data:4byte +y_start = .sbss:0x801D3CF0; // type:object size:0x4 scope:local data:4byte +x_start = .sbss:0x801D3CF4; // type:object size:0x4 scope:local data:4byte +Draw_Color = .sbss:0x801D3CF8; // type:object size:0x3 scope:local data:byte +XFB_putc = .sbss:0x801D3CFC; // type:object size:0x4 scope:local data:4byte lbl_801D3D00 = .sbss:0x801D3D00; // type:object size:0x4 lbl_801D3D04 = .sbss:0x801D3D04; // type:object size:0x4 data:float lbl_801D3D08 = .sbss:0x801D3D08; // type:object size:0x8 data:4byte -lbl_801D3D10 = .sbss:0x801D3D10; // type:object size:0x8 data:4byte -lbl_801D3D18 = .sbss:0x801D3D18; // type:object size:0x1 data:byte +frand_seed = .sbss:0x801D3D10; // type:object size:0x8 scope:local data:4byte +fadeStat = .sbss:0x801D3D18; // type:object size:0x1 data:byte lbl_801D3D1C = .sbss:0x801D3D1C; // type:object size:0x4 data:4byte lbl_801D3D20 = .sbss:0x801D3D20; // type:object size:0x4 data:float lbl_801D3D24 = .sbss:0x801D3D24; // type:object size:0x4 data:float @@ -6130,31 +6137,31 @@ lbl_801D3D96 = .sbss:0x801D3D96; // type:object size:0x2 data:2byte lbl_801D3D98 = .sbss:0x801D3D98; // type:object size:0x8 data:2byte lbl_801D3DA0 = .sbss:0x801D3DA0; // type:object size:0x8 lbl_801D3DA8 = .sbss:0x801D3DA8; // type:object size:0x8 data:4byte -lbl_801D3DB0 = .sbss:0x801D3DB0; // type:object size:0x4 data:4byte -lbl_801D3DB4 = .sbss:0x801D3DB4; // type:object size:0x1 data:byte -lbl_801D3DB6 = .sbss:0x801D3DB6; // type:object size:0x2 data:2byte -lbl_801D3DB8 = .sbss:0x801D3DB8; // type:object size:0x2 data:2byte -lbl_801D3DBA = .sbss:0x801D3DBA; // type:object size:0x2 data:2byte -lbl_801D3DBC = .sbss:0x801D3DBC; // type:object size:0x4 data:4byte -lbl_801D3DC0 = .sbss:0x801D3DC0; // type:object size:0x4 data:4byte -lbl_801D3DC4 = .sbss:0x801D3DC4; // type:object size:0x4 data:4byte -lbl_801D3DC8 = .sbss:0x801D3DC8; // type:object size:0x1 data:byte -lbl_801D3DC9 = .sbss:0x801D3DC9; // type:object size:0x1 data:byte -lbl_801D3DCA = .sbss:0x801D3DCA; // type:object size:0x8 -lbl_801D3DD2 = .sbss:0x801D3DD2; // type:object size:0x2 data:2byte -lbl_801D3DD4 = .sbss:0x801D3DD4; // type:object size:0x2 data:2byte -lbl_801D3DD8 = .sbss:0x801D3DD8; // type:object size:0x4 data:4byte -lbl_801D3DDC = .sbss:0x801D3DDC; // type:object size:0x4 data:4byte -lbl_801D3DE0 = .sbss:0x801D3DE0; // type:object size:0x4 data:4byte -lbl_801D3DE4 = .sbss:0x801D3DE4; // type:object size:0x4 data:4byte -lbl_801D3DE8 = .sbss:0x801D3DE8; // type:object size:0x4 data:4byte -lbl_801D3DEC = .sbss:0x801D3DEC; // type:object size:0x4 data:4byte -lbl_801D3DF0 = .sbss:0x801D3DF0; // type:object size:0x8 data:4byte -lbl_801D3DF8 = .sbss:0x801D3DF8; // type:object size:0x1 data:byte -lbl_801D3DFC = .sbss:0x801D3DFC; // type:object size:0x4 data:4byte -lbl_801D3E00 = .sbss:0x801D3E00; // type:object size:0x2 data:2byte -lbl_801D3E04 = .sbss:0x801D3E04; // type:object size:0x4 data:4byte -lbl_801D3E08 = .sbss:0x801D3E08; // type:object size:0x8 data:4byte +fontAnim = .sbss:0x801D3DB0; // type:object size:0x4 data:4byte +LanguageNo = .sbss:0x801D3DB4; // type:object size:0x1 scope:local data:byte +comKeyIdx = .sbss:0x801D3DB6; // type:object size:0x2 scope:local data:2byte +comKeyIdxNow = .sbss:0x801D3DB8; // type:object size:0x2 scope:local data:2byte +mesCharCnt = .sbss:0x801D3DBA; // type:object size:0x2 scope:local data:2byte +cancelCRF = .sbss:0x801D3DBC; // type:object size:0x4 scope:local data:4byte +fontWidthP = .sbss:0x801D3DC0; // type:object size:0x4 scope:local data:4byte +winAMemP = .sbss:0x801D3DC4; // type:object size:0x4 scope:local data:4byte +winInsertF = .sbss:0x801D3DC8; // type:object size:0x1 scope:local data:byte +winTabSize = .sbss:0x801D3DC9; // type:object size:0x1 scope:local data:byte +mesWInsert = .sbss:0x801D3DCA; // type:object size:0x8 scope:local +winMaxHeight = .sbss:0x801D3DD2; // type:object size:0x2 scope:local data:2byte +winMaxWidth = .sbss:0x801D3DD4; // type:object size:0x2 scope:local data:2byte +messDataNo = .sbss:0x801D3DD8; // type:object size:0x4 data:4byte +messDataPtr = .sbss:0x801D3DDC; // type:object size:0x4 data:4byte +winProc = .sbss:0x801D3DE0; // type:object size:0x4 data:4byte +cardAnimB = .sbss:0x801D3DE4; // type:object size:0x4 data:4byte +cardAnimA = .sbss:0x801D3DE8; // type:object size:0x4 data:4byte +cursorAnim = .sbss:0x801D3DEC; // type:object size:0x4 data:4byte +iconAnim = .sbss:0x801D3DF0; // type:object size:0x8 data:4byte +UnMountCnt = .sbss:0x801D3DF8; // type:object size:0x1 data:byte +cardWork = .sbss:0x801D3DFC; // type:object size:0x4 scope:local data:4byte +arqIdx = .sbss:0x801D3E00; // type:object size:0x2 scope:local data:2byte +arqCnt = .sbss:0x801D3E04; // type:object size:0x4 scope:local data:4byte +ARBase = .sbss:0x801D3E08; // type:object size:0x8 scope:local data:4byte lbl_801D3E10 = .sbss:0x801D3E10; // type:object size:0x4 data:4byte lbl_801D3E14 = .sbss:0x801D3E14; // type:object size:0x4 data:4byte lbl_801D3E18 = .sbss:0x801D3E18; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 658075f8..a636ef6f 100755 --- a/configure.py +++ b/configure.py @@ -118,7 +118,7 @@ if not is_windows(): # Tool versions config.compilers_tag = "20231018" -config.dtk_tag = "v0.6.0" +config.dtk_tag = "v0.6.3" config.sjiswrap_tag = "v1.1.1" config.wibo_tag = "0.6.3" @@ -150,6 +150,7 @@ cflags_base = [ "-fp_contract on", "-str reuse", "-i include", + f"-i build/{config.version}/include", "-multibyte", f"-DVERSION={version_num}", ] @@ -172,8 +173,10 @@ cflags_runtime = [ # REL flags cflags_rel = [ *cflags_base, - "-O0,s", + "-O0,p", + "-enum int", "-char unsigned", + "-fp_contract off", "-sdata 0", "-sdata2 0", "-pool off", @@ -183,7 +186,9 @@ cflags_rel = [ cflags_game = [ *cflags_base, "-O0,p", + "-enum int", "-char unsigned", + "-fp_contract off", ] config.linker_version = "GC/2.6" @@ -227,17 +232,29 @@ config.libs = [ "objects": [ Object(NonMatching, "game/main.c"), Object(NonMatching, "game/pad.c"), - Object(NonMatching, "game/dvd.c"), + Object(Matching, "game/dvd.c"), Object(NonMatching, "game/data.c"), Object(Matching, "game/decode.c"), - Object(NonMatching, "game/font.c"), + Object(Matching, "game/font.c"), + Object(Matching, "game/init.c"), Object(NonMatching, "game/jmp.c"), Object(Matching, "game/malloc.c"), Object(Matching, "game/memory.c"), - Object(NonMatching, "game/printfunc.c"), + Object(Matching, "game/printfunc.c"), Object(Matching, "game/process.c"), Object(NonMatching, "game/sprman.c"), Object(NonMatching, "game/sprput.c"), + Object(NonMatching, "game/hsfload.c"), + Object(NonMatching, "game/hsfdraw.c"), + Object(NonMatching, "game/hsfman.c"), + Object(Matching, "game/objmain.c"), + Object(NonMatching, "game/fault.c"), + Object(NonMatching, "game/frand.c"), + Object(Matching, "game/ovllist.c"), + Object(NonMatching, "game/window.c"), + Object(NonMatching, "game/messdata.c"), + Object(NonMatching, "game/card.c"), + Object(NonMatching, "game/armem.c"), ], }, { @@ -270,6 +287,17 @@ config.libs = [ Object(Matching, "REL/_minigameDLL/_minigameDLL.c"), ], }, + { + "lib": "bootDll", + "mw_version": config.linker_version, + "cflags": cflags_rel, + "host": False, + "objects": [ + Object(Matching, "REL/executor.c"), + Object(NonMatching, "REL/bootDll/bootDll.c"), + Object(Matching, "REL/bootDll/nintendo_data.c"), + ], + }, { "lib": "subchrselDll", "mw_version": config.linker_version, diff --git a/get_rel_function_names.py b/get_rel_function_names.py new file mode 100755 index 00000000..910afaa0 --- /dev/null +++ b/get_rel_function_names.py @@ -0,0 +1,25 @@ +import os +import sys + +if len(sys.argv) != 2: + print("Usage: python script.py ") + sys.exit(1) + +file_path = sys.argv[1] +lines_starting_with_fn = "" + +with open(file_path, 'r') as file: + for line in file: + # Remove leading and trailing whitespaces + line = line.strip() + + if line.startswith(".fn fn_"): + # Remove ".fn " from the beginning of the line + line = line[len(".fn "):] + + # Remove ", global" from the end of the line + line = line.rstrip(', global') + + lines_starting_with_fn += "// " + line + '\n\n' + +print(lines_starting_with_fn) diff --git a/include/common.h b/include/common.h index 4875c13a..9dbd46bf 100644 --- a/include/common.h +++ b/include/common.h @@ -3,7 +3,9 @@ #include "types.h" #include "common_structs.h" +#include "common_enums.h" #include "functions.h" #include "variables.h" +#include "dolphin/mtx/GeoTypes.h" #endif \ No newline at end of file diff --git a/include/common_enums.h b/include/common_enums.h new file mode 100644 index 00000000..120538db --- /dev/null +++ b/include/common_enums.h @@ -0,0 +1,35 @@ +#ifndef _COMMON_ENUMS_H +#define _COMMON_ENUMS_H + +#include "types.h" + +#define OVL_DEFINE(name, path) name, + +typedef enum { + OVL_INVALID = -1, + #include "ovl_table.h" + OVL_COUNT +} OverlayID; + +#undef OVL_DEFINE + +#define DATADIR_DEFINE(name, path) name, + +typedef enum { + #include "datadir_table.h" + DATADIR_COUNT +} DataDirID; + +#undef DATADIR_DEFINE + + +typedef enum { + HEAP_SYSTEM, + HEAP_MUSIC, + HEAP_DATA, + HEAP_DVD, + HEAP_MISC, + HEAP_MAX +} HeapID; + +#endif \ No newline at end of file diff --git a/include/common_structs.h b/include/common_structs.h index c17271d7..e13c91a7 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -2,12 +2,14 @@ #define _COMMON_STRUCTS_H #include "types.h" +#include "common_enums.h" +#include "dolphin/dvd.h" -typedef struct UnkOvl { - s32 unk0; - char unk4[4]; - s32 unk8; -} UnkOvl; +typedef struct om_ovl_his_data { + OverlayID overlay; + int event; + int stat; +} omOvlHisData; typedef struct Vec3f { f32 x; @@ -57,4 +59,97 @@ typedef struct wipe_state { u8 unk2[20]; } WipeState; +typedef struct file_list_entry { + char *name; + s32 file_id; +} FileListEntry; + +typedef struct data_read_stat { + s32 dir_id; + void *dir; + void *file; + u32 raw_len; + u32 comp_type; + BOOL used; + s32 num; + u32 status; + DVDFileInfo file_info; +} DataReadStat; + +typedef struct BoardStateSubStruct { +/* 0x00 */ s32 unk0; +/* 0x04 */ s16 unk4; +/* 0x06 */ s16 unk6; +/* 0x08 */ s16 unk8; +} BoardStateSubStruct; + +typedef struct BoardState { +/* 0x00 */ char unk00[0x04]; +/* 0x04 */ s8 curTurnCount; +/* 0x05 */ s8 maxTurnCount; +/* 0x06 */ char unk06[0x02]; +/* 0x08 */ u8 unk08; +/* 0x09 */ s8 doubleCoinsOnSpaceBool; +/* 0x0A */ s8 curPlayerIndex; +/* 0x0C */ char unk0C[4]; +/* 0x10 */ BoardStateSubStruct unk10; +/* 0x1A */ char unk1A[0xC6]; +} BoardState; //8018fcf8, sizeof 0xE0 + +typedef struct { + u8 unk0 : 2; +} PlayerFlags; + +typedef struct Player { +/* 0x00 */ s8 characterID; +/* 0x01 */ s8 unk01; +/* 0x02 */ s8 unk02; +/* 0x03 */ s8 unk03; +/* 0x04 */ s8 controllerPort; +/* 0x05 */ s8 items[3]; +/* 0x08 */ PlayerFlags flags; //0x02 mini mushroom, 0x04 mega mushroom +/* 0x09 */ s8 placement; //0x80 1st, 0x20 2nd, 0x40 3rd, 0x60 4th +/* 0x0A */ u8 spacesLeftToMove; +/* 0x0B */ char unk_0B[5]; +/* 0x10 */ s16 nextABSSpaceIndex; +/* 0x12 */ char unk_12[2]; +/* 0x14 */ s8 blueSpacesLanded; +/* 0x15 */ s8 redSpacesLanded; +/* 0x16 */ s8 happeningSpacesLanded; +/* 0x17 */ s8 chanceSpacesLanded; +/* 0x18 */ char unk_18; +/* 0x19 */ s8 battleSpacesLanded; +/* 0x1A */ s8 itemSpacesLanded; +/* 0x1B */ s8 springSpacesLanded; +/* 0x1C */ s16 coins; +/* 0x1E */ char unk_1E[2]; +/* 0x20 */ s16 totalCoinsCollected; +/* 0x22 */ s16 coinPeak; +/* 0x24 */ char unk_24[6]; +/* 0x2A */ s16 stars; +/* 0x2C */ char unk_2C[4]; +} Player; //size of 0x30 + +typedef struct om_obj_data { + u16 stat; + s16 next_idx_alloc; + s16 prio; + s16 prev; + s16 next; + s16 next_idx; + s16 group; + u16 group_idx; + int unk10; + void (*func)(struct om_obj_data *); + Vec3f trans; + Vec3f rot; + Vec3f scale; + u16 mdlcnt; + s16 *model; + u16 mtncnt; + s16 *motion; + int work[4]; + void *data; +} omObjData; + #endif diff --git a/include/datadir_table.h b/include/datadir_table.h new file mode 100644 index 00000000..b2cb103a --- /dev/null +++ b/include/datadir_table.h @@ -0,0 +1,140 @@ +DATADIR_DEFINE(DATADIR_E3SETUP, "data/E3setup.bin") +DATADIR_DEFINE(DATADIR_BBATTLE, "data/bbattle.bin") +DATADIR_DEFINE(DATADIR_BGUEST, "data/bguest.bin") +DATADIR_DEFINE(DATADIR_BKOOPA, "data/bkoopa.bin") +DATADIR_DEFINE(DATADIR_BKOOPASUIT, "data/bkoopasuit.bin") +DATADIR_DEFINE(DATADIR_BKUJIYA, "data/bkujiya.bin") +DATADIR_DEFINE(DATADIR_BLAST5, "data/blast5.bin") +DATADIR_DEFINE(DATADIR_BOARD, "data/board.bin") +DATADIR_DEFINE(DATADIR_BPAUSE, "data/bpause.bin") +DATADIR_DEFINE(DATADIR_BYOKODORI, "data/byokodori.bin") +DATADIR_DEFINE(DATADIR_DAISY, "data/daisy.bin") +DATADIR_DEFINE(DATADIR_DAISYMDL0, "data/daisymdl0.bin") +DATADIR_DEFINE(DATADIR_DAISYMDL1, "data/daisymdl1.bin") +DATADIR_DEFINE(DATADIR_DAISYMOT, "data/daisymot.bin") +DATADIR_DEFINE(DATADIR_DONKEY, "data/donkey.bin") +DATADIR_DEFINE(DATADIR_DONKEYMDL0, "data/donkeymdl0.bin") +DATADIR_DEFINE(DATADIR_DONKEYMDL1, "data/donkeymdl1.bin") +DATADIR_DEFINE(DATADIR_DONKEYMOT, "data/donkeymot.bin") +DATADIR_DEFINE(DATADIR_EFFECT, "data/effect.bin") +DATADIR_DEFINE(DATADIR_GAMEMES, "data/gamemes.bin") +DATADIR_DEFINE(DATADIR_INST, "data/inst.bin") +DATADIR_DEFINE(DATADIR_INSTFONT, "data/instfont.bin") +DATADIR_DEFINE(DATADIR_INSTPIC, "data/instpic.bin") +DATADIR_DEFINE(DATADIR_LUIGI, "data/luigi.bin") +DATADIR_DEFINE(DATADIR_LUIGIMDL0, "data/luigimdl0.bin") +DATADIR_DEFINE(DATADIR_LUIGIMDL1, "data/luigimdl1.bin") +DATADIR_DEFINE(DATADIR_LUIGIMOT, "data/luigimot.bin") +DATADIR_DEFINE(DATADIR_M300, "data/m300.bin") +DATADIR_DEFINE(DATADIR_M302, "data/m302.bin") +DATADIR_DEFINE(DATADIR_M303, "data/m303.bin") +DATADIR_DEFINE(DATADIR_M330, "data/m330.bin") +DATADIR_DEFINE(DATADIR_M333, "data/m333.bin") +DATADIR_DEFINE(DATADIR_M401, "data/m401.bin") +DATADIR_DEFINE(DATADIR_M402, "data/m402.bin") +DATADIR_DEFINE(DATADIR_M403, "data/m403.bin") +DATADIR_DEFINE(DATADIR_M404, "data/m404.bin") +DATADIR_DEFINE(DATADIR_M405, "data/m405.bin") +DATADIR_DEFINE(DATADIR_M406, "data/m406.bin") +DATADIR_DEFINE(DATADIR_M407, "data/m407.bin") +DATADIR_DEFINE(DATADIR_M408, "data/m408.bin") +DATADIR_DEFINE(DATADIR_M409, "data/m409.bin") +DATADIR_DEFINE(DATADIR_M410, "data/m410.bin") +DATADIR_DEFINE(DATADIR_M411, "data/m411.bin") +DATADIR_DEFINE(DATADIR_M412, "data/m412.bin") +DATADIR_DEFINE(DATADIR_M413, "data/m413.bin") +DATADIR_DEFINE(DATADIR_M414, "data/m414.bin") +DATADIR_DEFINE(DATADIR_M415, "data/m415.bin") +DATADIR_DEFINE(DATADIR_M416, "data/m416.bin") +DATADIR_DEFINE(DATADIR_M417, "data/m417.bin") +DATADIR_DEFINE(DATADIR_M418, "data/m418.bin") +DATADIR_DEFINE(DATADIR_M419, "data/m419.bin") +DATADIR_DEFINE(DATADIR_M420, "data/m420.bin") +DATADIR_DEFINE(DATADIR_M421, "data/m421.bin") +DATADIR_DEFINE(DATADIR_M422, "data/m422.bin") +DATADIR_DEFINE(DATADIR_M423, "data/m423.bin") +DATADIR_DEFINE(DATADIR_M424, "data/m424.bin") +DATADIR_DEFINE(DATADIR_M425, "data/m425.bin") +DATADIR_DEFINE(DATADIR_M426, "data/m426.bin") +DATADIR_DEFINE(DATADIR_M427, "data/m427.bin") +DATADIR_DEFINE(DATADIR_M428, "data/m428.bin") +DATADIR_DEFINE(DATADIR_M429, "data/m429.bin") +DATADIR_DEFINE(DATADIR_M430, "data/m430.bin") +DATADIR_DEFINE(DATADIR_M431, "data/m431.bin") +DATADIR_DEFINE(DATADIR_M432, "data/m432.bin") +DATADIR_DEFINE(DATADIR_M433, "data/m433.bin") +DATADIR_DEFINE(DATADIR_M434, "data/m434.bin") +DATADIR_DEFINE(DATADIR_M435, "data/m435.bin") +DATADIR_DEFINE(DATADIR_M436, "data/m436.bin") +DATADIR_DEFINE(DATADIR_M437, "data/m437.bin") +DATADIR_DEFINE(DATADIR_M438, "data/m438.bin") +DATADIR_DEFINE(DATADIR_M439, "data/m439.bin") +DATADIR_DEFINE(DATADIR_M440, "data/m440.bin") +DATADIR_DEFINE(DATADIR_M441, "data/m441.bin") +DATADIR_DEFINE(DATADIR_M442, "data/m442.bin") +DATADIR_DEFINE(DATADIR_M443, "data/m443.bin") +DATADIR_DEFINE(DATADIR_M444, "data/m444.bin") +DATADIR_DEFINE(DATADIR_M445, "data/m445.bin") +DATADIR_DEFINE(DATADIR_M446, "data/m446.bin") +DATADIR_DEFINE(DATADIR_M447, "data/m447.bin") +DATADIR_DEFINE(DATADIR_M448, "data/m448.bin") +DATADIR_DEFINE(DATADIR_M449, "data/m449.bin") +DATADIR_DEFINE(DATADIR_M450, "data/m450.bin") +DATADIR_DEFINE(DATADIR_M451, "data/m451.bin") +DATADIR_DEFINE(DATADIR_M453, "data/m453.bin") +DATADIR_DEFINE(DATADIR_M455, "data/m455.bin") +DATADIR_DEFINE(DATADIR_M456, "data/m456.bin") +DATADIR_DEFINE(DATADIR_M457, "data/m457.bin") +DATADIR_DEFINE(DATADIR_M458, "data/m458.bin") +DATADIR_DEFINE(DATADIR_M459, "data/m459.bin") +DATADIR_DEFINE(DATADIR_M460, "data/m460.bin") +DATADIR_DEFINE(DATADIR_M461, "data/m461.bin") +DATADIR_DEFINE(DATADIR_M462, "data/m462.bin") +DATADIR_DEFINE(DATADIR_MARIO, "data/mario.bin") +DATADIR_DEFINE(DATADIR_MARIOMDL0, "data/mariomdl0.bin") +DATADIR_DEFINE(DATADIR_MARIOMDL1, "data/mariomdl1.bin") +DATADIR_DEFINE(DATADIR_MARIOMOT, "data/mariomot.bin") +DATADIR_DEFINE(DATADIR_MENT, "data/ment.bin") +DATADIR_DEFINE(DATADIR_MGCONST, "data/mgconst.bin") +DATADIR_DEFINE(DATADIR_MGMODE, "data/mgmode.bin") +DATADIR_DEFINE(DATADIR_MODESEL, "data/modesel.bin") +DATADIR_DEFINE(DATADIR_MPEX, "data/mpex.bin") +DATADIR_DEFINE(DATADIR_MSTORY, "data/mstory.bin") +DATADIR_DEFINE(DATADIR_MSTORY2, "data/mstory2.bin") +DATADIR_DEFINE(DATADIR_MSTORY3, "data/mstory3.bin") +DATADIR_DEFINE(DATADIR_MSTORY4, "data/mstory4.bin") +DATADIR_DEFINE(DATADIR_OPTION, "data/option.bin") +DATADIR_DEFINE(DATADIR_PEACH, "data/peach.bin") +DATADIR_DEFINE(DATADIR_PEACHMDL0, "data/peachmdl0.bin") +DATADIR_DEFINE(DATADIR_PEACHMDL1, "data/peachmdl1.bin") +DATADIR_DEFINE(DATADIR_PEACHMOT, "data/peachmot.bin") +DATADIR_DEFINE(DATADIR_PRESENT, "data/present.bin") +DATADIR_DEFINE(DATADIR_RESULT, "data/result.bin") +DATADIR_DEFINE(DATADIR_SAF, "data/saf.bin") +DATADIR_DEFINE(DATADIR_SELMENU, "data/selmenu.bin") +DATADIR_DEFINE(DATADIR_SETUP, "data/setup.bin") +DATADIR_DEFINE(DATADIR_STAFF, "data/staff.bin") +DATADIR_DEFINE(DATADIR_TITLE, "data/title.bin") +DATADIR_DEFINE(DATADIR_W01, "data/w01.bin") +DATADIR_DEFINE(DATADIR_W02, "data/w02.bin") +DATADIR_DEFINE(DATADIR_W03, "data/w03.bin") +DATADIR_DEFINE(DATADIR_W04, "data/w04.bin") +DATADIR_DEFINE(DATADIR_W05, "data/w05.bin") +DATADIR_DEFINE(DATADIR_W06, "data/w06.bin") +DATADIR_DEFINE(DATADIR_W10, "data/w10.bin") +DATADIR_DEFINE(DATADIR_W20, "data/w20.bin") +DATADIR_DEFINE(DATADIR_W21, "data/w21.bin") +DATADIR_DEFINE(DATADIR_WALUIGI, "data/waluigi.bin") +DATADIR_DEFINE(DATADIR_WALUIGIMDL0, "data/waluigimdl0.bin") +DATADIR_DEFINE(DATADIR_WALUIGIMDL1, "data/waluigimdl1.bin") +DATADIR_DEFINE(DATADIR_WALUIGIMOT, "data/waluigimot.bin") +DATADIR_DEFINE(DATADIR_WARIO, "data/wario.bin") +DATADIR_DEFINE(DATADIR_WARIOMDL0, "data/wariomdl0.bin") +DATADIR_DEFINE(DATADIR_WARIOMDL1, "data/wariomdl1.bin") +DATADIR_DEFINE(DATADIR_WARIOMOT, "data/wariomot.bin") +DATADIR_DEFINE(DATADIR_WIN, "data/win.bin") +DATADIR_DEFINE(DATADIR_YOSHI, "data/yoshi.bin") +DATADIR_DEFINE(DATADIR_YOSHIMDL0, "data/yoshimdl0.bin") +DATADIR_DEFINE(DATADIR_YOSHIMDL1, "data/yoshimdl1.bin") +DATADIR_DEFINE(DATADIR_YOSHIMOT, "data/yoshimot.bin") +DATADIR_DEFINE(DATADIR_ZTAR, "data/ztar.bin") \ No newline at end of file diff --git a/include/dolphin/dvd.h b/include/dolphin/dvd.h index ad4a8a7d..38c62254 100644 --- a/include/dolphin/dvd.h +++ b/include/dolphin/dvd.h @@ -121,6 +121,9 @@ BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, #define DVDReadAsync(fileInfo, addr, length, offset, callback) \ DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) +#define DVDRead(fileInfo, addr, length, offset) \ + DVDReadPrio((fileInfo), (addr), (length), (offset), 2) + #define DVDSeekAsync(fileInfo, offset, callback) \ DVDSeekAsyncPrio((fileInfo), (offset), (callback), 2) diff --git a/include/dolphin/gx/GXFrameBuffer.h b/include/dolphin/gx/GXFrameBuffer.h index 55b97bc5..ebd81e78 100644 --- a/include/dolphin/gx/GXFrameBuffer.h +++ b/include/dolphin/gx/GXFrameBuffer.h @@ -8,37 +8,36 @@ extern "C" { #endif -// extern GXRenderModeObj GXNtsc240Ds; -// extern GXRenderModeObj GXNtsc240DsAa; -// extern GXRenderModeObj GXNtsc240Int; -// extern GXRenderModeObj GXNtsc240IntAa; +extern GXRenderModeObj GXNtsc240Ds; +extern GXRenderModeObj GXNtsc240DsAa; +extern GXRenderModeObj GXNtsc240Int; +extern GXRenderModeObj GXNtsc240IntAa; extern GXRenderModeObj GXNtsc480IntDf; -// extern GXRenderModeObj GXNtsc480Int; -// extern GXRenderModeObj GXNtsc480IntAa; -// extern GXRenderModeObj GXNtsc480Prog; -// extern GXRenderModeObj GXNtsc480ProgSoft; -// extern GXRenderModeObj GXNtsc480ProgAa; -// extern GXRenderModeObj GXMpal240Ds; -// extern GXRenderModeObj GXMpal240DsAa; -// extern GXRenderModeObj GXMpal240Int; -// extern GXRenderModeObj GXMpal240IntAa; +extern GXRenderModeObj GXNtsc480Int; +extern GXRenderModeObj GXNtsc480IntAa; +extern GXRenderModeObj GXNtsc480Prog; +extern GXRenderModeObj GXNtsc480ProgAa; +extern GXRenderModeObj GXMpal240Ds; +extern GXRenderModeObj GXMpal240DsAa; +extern GXRenderModeObj GXMpal240Int; +extern GXRenderModeObj GXMpal240IntAa; extern GXRenderModeObj GXMpal480IntDf; -// extern GXRenderModeObj GXMpal480Int; -// extern GXRenderModeObj GXMpal480IntAa; -// extern GXRenderModeObj GXPal264Ds; -// extern GXRenderModeObj GXPal264DsAa; -// extern GXRenderModeObj GXPal264Int; -// extern GXRenderModeObj GXPal264IntAa; +extern GXRenderModeObj GXMpal480Int; +extern GXRenderModeObj GXMpal480IntAa; +extern GXRenderModeObj GXPal264Ds; +extern GXRenderModeObj GXPal264DsAa; +extern GXRenderModeObj GXPal264Int; +extern GXRenderModeObj GXPal264IntAa; extern GXRenderModeObj GXPal528IntDf; -// extern GXRenderModeObj GXPal528Int; -// extern GXRenderModeObj GXPal524IntAa; -// extern GXRenderModeObj GXEurgb60Hz240Ds; -// extern GXRenderModeObj GXEurgb60Hz240DsAa; -// extern GXRenderModeObj GXEurgb60Hz240Int; -// extern GXRenderModeObj GXEurgb60Hz240IntAa; +extern GXRenderModeObj GXPal528Int; +extern GXRenderModeObj GXPal524IntAa; +extern GXRenderModeObj GXEurgb60Hz240Ds; +extern GXRenderModeObj GXEurgb60Hz240DsAa; +extern GXRenderModeObj GXEurgb60Hz240Int; +extern GXRenderModeObj GXEurgb60Hz240IntAa; extern GXRenderModeObj GXEurgb60Hz480IntDf; -// extern GXRenderModeObj GXEurgb60Hz480Int; -// extern GXRenderModeObj GXEurgb60Hz480IntAa; +extern GXRenderModeObj GXEurgb60Hz480Int; +extern GXRenderModeObj GXEurgb60Hz480IntAa; #define GX_MAX_Z24 0x00FFFFFF diff --git a/include/dolphin/gx/GXVert.h b/include/dolphin/gx/GXVert.h index af0eec30..91edb229 100644 --- a/include/dolphin/gx/GXVert.h +++ b/include/dolphin/gx/GXVert.h @@ -86,6 +86,11 @@ static inline void GXPosition2f32(const f32 x, const f32 y) { GXWGFifo.f32 = y; } +static inline void GXPosition2s16(const s16 x, const s16 y) { + GXWGFifo.s16 = x; + GXWGFifo.s16 = y; +} + static inline void GXPosition3s16(const s16 x, const s16 y, const s16 z) { GXWGFifo.s16 = x; GXWGFifo.s16 = y; @@ -108,6 +113,12 @@ static inline void GXColor1u32(const u32 v) { GXWGFifo.u32 = v; } +static inline void GXColor3u8(const u8 r, const u8 g, const u8 b) { + GXWGFifo.u8 = r; + GXWGFifo.u8 = g; + GXWGFifo.u8 = b; +} + static inline void GXColor4u8(const u8 r, const u8 g, const u8 b, const u8 a) { GXWGFifo.u8 = r; GXWGFifo.u8 = g; @@ -125,11 +136,14 @@ static inline void GXTexCoord2f32(const f32 u, const f32 v) { GXWGFifo.f32 = v; } - static inline void GXPosition1x8(u8 index) { GXWGFifo.u8 = index; } +static inline void GXColor1x8(u8 index) { + GXWGFifo.u8 = index; +} + static inline void GXEnd(void) {} #endif diff --git a/include/dolphin/os.h b/include/dolphin/os.h index f7d61d97..e9d30f4b 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -58,6 +58,7 @@ u32 OSUncachedToCached(void* ucaddr); #define OSDiffTick(tick1, tick0) ((s32)(tick1) - (s32)(tick0)) #define OSRoundUp32B(v) (((u32)(v + 31) & ~31)) +#define OSRoundDown32B(x) (((u32)(x)) & ~31) void* OSGetArenaHi(void); void* OSGetArenaLo(void); @@ -218,6 +219,9 @@ void OSReport(const char* msg, ...); void OSPanic(const char* file, int line, const char* msg, ...); void OSFatal(GXColor fg, GXColor bg, const char* msg); +u32 OSGetPhysicalMemSize(void); +u32 OSGetConsoleSimulatedMemSize(void); + #ifdef __cplusplus } #endif diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index afa1d9be..bbd90491 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -18,6 +18,7 @@ void* OSAllocFixed(void** rstart, void** rend); void OSFreeToHeap(OSHeapHandle heap, void* ptr); long OSCheckHeap(OSHeapHandle heap); void OSDumpHeap(OSHeapHandle heap); +void *OSAllocFixed(void **rstart, void **rend); u32 OSReferentSize(void* ptr); void OSVisitAllocated(OSAllocVisitor visitor); extern volatile OSHeapHandle __OSCurrHeap; diff --git a/include/functions.h b/include/functions.h index 7b77c81d..5c7d4404 100644 --- a/include/functions.h +++ b/include/functions.h @@ -3,14 +3,14 @@ #include "types.h" #include "common_structs.h" +#include "common_enums.h" + +#include "dolphin/gx/GXStruct.h" void Hu3DBGColorSet(u8, u8, u8); void Hu3DCameraCreate(s16); void Hu3DCameraPerspectiveSet(s16, f32, f32, f32, f32); void Hu3DCameraViewportSet(s16, f32, f32, f32, f32, f32, f32); -void omOvlHisChg(s32, s32, s32, s32); -UnkOvl* omOvlHisGet(s32); -void* omInitObjMan(s32, s32); void fn_80044920(s16); void fn_80045F74(s16, s32); s32 fn_800578E4(void); @@ -18,18 +18,19 @@ void fn_80032A58(int arg0); void fn_80035A0C(void); void HuDecodeData(void *src, void *dst, u32 size, int decode_type); + void HuMemInitAll(void); void *HuMemInit(void *ptr, s32 size); void HuMemDCFlushAll(); -void HuMemDCFlush(int heap); -void *HuMemDirectMalloc(int heap, s32 size); -void *HuMemDirectMallocNum(int heap, s32 size, u32 num); +void HuMemDCFlush(HeapID heap); +void *HuMemDirectMalloc(HeapID heap, s32 size); +void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num); void HuMemDirectFree(void *ptr); -void HuMemDirectFreeNum(int heap, u32 num); -s32 HuMemUsedMallocSizeGet(int heap); -s32 HuMemUsedMallocBlockGet(int heap); -u32 HuMemHeapSizeGet(int heap); -void *HuMemHeapPtrGet(int heap); +void HuMemDirectFreeNum(HeapID heap, u32 num); +s32 HuMemUsedMallocSizeGet(HeapID heap); +s32 HuMemUsedMallocBlockGet(HeapID heap); +u32 HuMemHeapSizeGet(HeapID heap); +void *HuMemHeapPtrGet(HeapID heap); void *HuMemHeapInit(void *ptr, s32 size); void *HuMemMemoryAlloc(void *heap_ptr, s32 size, u32 retaddr); @@ -42,6 +43,7 @@ s32 HuMemMemoryAllocSizeGet(s32 size); void HuMemHeapDump(void *heap_ptr, s16 status); void HuPrcInit(void); +void HuPrcEnd(void); Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size); void HuPrcChildLink(Process *parent, Process *child); void HuPrcChildUnlink(Process *process); @@ -63,10 +65,110 @@ void HuPrcResetStat(Process *process, u16 value); void HuPrcAllPause(int flag); void HuPrcAllUPause(int flag); -void omOvlGotoEx(int id, s16 end_mode, int stat, int event); -void omOvlReturnEx(int level, s16 end_mode); +void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl); +void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat); +void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat); +void omOvlReturnEx(s16 level, s16 arg2); +void omOvlKill(s16 arg); +void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat); +omOvlHisData *omOvlHisGet(s32 level); +Process *omInitObjMan(s16 max_objs, int prio); +void omDestroyObjMan(void); +omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *)); +void omAddMember(Process *objman_process, u16 group, omObjData *object); +void omDelObjEx(Process *objman_process, omObjData *object); +void omDelMember(Process *objman_process, omObjData *object); +void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs); +omObjData **omGetGroupMemberListEx(Process *objman_process, s16 group); +void omSetStatBit(omObjData *obj, u16 stat); +void omResetStatBit(omObjData *obj, u16 stat); +void omSetTra(omObjData *obj, float x, float y, float z); +void omSetRot(omObjData *obj, float x, float y, float z); +void omSetSca(omObjData *obj, float x, float y, float z); +void omMain(void); +void omAllPause(BOOL pause); +char omPauseChk(void); +OverlayID omCurrentOvlGet(void); + + +void omDLLDBGOut(void); +void omDLLInit(FileListEntry *ovl_list); +int omDLLStart(s16 ovl, s16 dll); +void omDLLNumEnd(s16 ovl, s16 arg2); + +void omSysPauseEnable(BOOL flag); + + void WipeCreate(char dir, char type, short duration); -u16 print8(s16 x, s16 y, float scale, char *str, ...); +void pfInit(void); +void pfClsScr(void); +s16 print8(s16 x, s16 y, float scale, char *str, ...); +s16 printWin(s16 x, s16 y, s16 w, s16 h, GXColor *color); +void pfDrawFonts(void); + +void *HuDvdDataRead(char *path); +void **HuDvdDataReadMulti(char **paths); +void *HuDvdDataReadDirect(char *path, HeapID heap); +void *HuDvdDataFastRead(s32 entrynum); +void *HuDvdDataFastReadNum(s32 entrynum, s32 num); +void *HuDvdDataFastReadAsync(s32 entrynum, DataReadStat *stat); +void HuDvdDataClose(void *ptr); +void HuDvdErrorWatch(); + +void HuDataInit(void); +int HuDataReadChk(s32 data_num); +DataReadStat *HuDataGetStatus(void *dir_ptr); +void *HuDataGetDirPtr(s32 data_num); +DataReadStat *HuDataDirRead(s32 data_num); +DataReadStat *HuDataDirReadNum(s32 data_num, s32 num); +DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num); +void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo); +s32 HuDataDirReadAsync(s32 data_num); +s32 HuDataDirReadNumAsync(s32 data_num, s32 num); +BOOL HuDataGetAsyncStat(s32 status); +void *HuDataRead(s32 data_num); +void *HuDataReadNum(s32 data_num, s32 num); +void *HuDataSelHeapRead(s32 data_num, HeapID heap); +void *HuDataSelHeapReadNum(s32 data_num, s32 num, HeapID heap); +void **HuDataReadMulti(s32 *data_ids); +s32 HuDataGetSize(s32 data_num); +void HuDataClose(void *ptr); +void HuDataCloseMulti(void **ptrs); +void HuDataDirClose(s32 data_id); +void HuDataDirCloseNum(s32 num); +void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap); + +void *HuARDirCheck(s32 dir); +void HuAR_ARAMtoMRAM(void *dst); +void HuAR_ARAMtoMRAMNum(void *dst, s32 num); +BOOL HuARDMACheck(); + +void Hu3DModelPosSet(s16 index, float x, float y, float z); +void Hu3DModelRotSet(s16 index, float x, float y, float z); +void Hu3DModelScaleSet(s16 index, float x, float y, float z); + +void espInit(void); + +void HuSprClose(void); + +void HuWinAllKill(void); + +void HuPadRumbleAllStop(void); + +void HuAudFXListnerKill(void); +void HuAudDllSndGrpSet(u16 ovl); +void fn_800338EC(s16 ovl); + +void fn_80035A0C(void); + +void fn_8003F3AC(void); +void fn_8004D6F4(s16 arg); + +s32 _CheckFlag(u32 flag); + +void BoardMessCreate(s16, s32, s32); +void BoardMessKill(void); +void BoardMessWait(void); #endif diff --git a/include/ovl_table.h b/include/ovl_table.h new file mode 100644 index 00000000..4f66a2d2 --- /dev/null +++ b/include/ovl_table.h @@ -0,0 +1,99 @@ +OVL_DEFINE(OVL__MINI, "dll/_minigameDLL.rel") +OVL_DEFINE(OVL_BOOT, "dll/bootdll.rel") +OVL_DEFINE(OVL_E3SETUP, "dll/e3setupDLL.rel") +OVL_DEFINE(OVL_INST, "dll/instdll.rel") +OVL_DEFINE(OVL_M300, "dll/m300dll.rel") +OVL_DEFINE(OVL_M302, "dll/m302dll.rel") +OVL_DEFINE(OVL_M303, "dll/m303dll.rel") +OVL_DEFINE(OVL_M330, "dll/m330dll.rel") +OVL_DEFINE(OVL_M333, "dll/m333dll.rel") +OVL_DEFINE(OVL_M401, "dll/m401dll.rel") +OVL_DEFINE(OVL_M402, "dll/m402dll.rel") +OVL_DEFINE(OVL_M403, "dll/m403dll.rel") +OVL_DEFINE(OVL_M404, "dll/m404dll.rel") +OVL_DEFINE(OVL_M405, "dll/m405dll.rel") +OVL_DEFINE(OVL_M406, "dll/m406dll.rel") +OVL_DEFINE(OVL_M407, "dll/m407dll.rel") +OVL_DEFINE(OVL_M408, "dll/m408dll.rel") +OVL_DEFINE(OVL_M409, "dll/m409dll.rel") +OVL_DEFINE(OVL_M410, "dll/m410dll.rel") +OVL_DEFINE(OVL_M411, "dll/m411dll.rel") +OVL_DEFINE(OVL_M412, "dll/m412dll.rel") +OVL_DEFINE(OVL_M413, "dll/m413dll.rel") +OVL_DEFINE(OVL_M414, "dll/m414dll.rel") +OVL_DEFINE(OVL_M415, "dll/m415dll.rel") +OVL_DEFINE(OVL_M416, "dll/m416dll.rel") +OVL_DEFINE(OVL_M417, "dll/m417dll.rel") +OVL_DEFINE(OVL_M418, "dll/m418dll.rel") +OVL_DEFINE(OVL_M419, "dll/m419dll.rel") +OVL_DEFINE(OVL_M420, "dll/m420dll.rel") +OVL_DEFINE(OVL_M421, "dll/m421dll.rel") +OVL_DEFINE(OVL_M422, "dll/m422dll.rel") +OVL_DEFINE(OVL_M423, "dll/m423dll.rel") +OVL_DEFINE(OVL_M424, "dll/m424dll.rel") +OVL_DEFINE(OVL_M425, "dll/m425dll.rel") +OVL_DEFINE(OVL_M426, "dll/m426dll.rel") +OVL_DEFINE(OVL_M427, "dll/m427dll.rel") +OVL_DEFINE(OVL_M428, "dll/m428dll.rel") +OVL_DEFINE(OVL_M429, "dll/m429dll.rel") +OVL_DEFINE(OVL_M430, "dll/m430dll.rel") +OVL_DEFINE(OVL_M431, "dll/m431dll.rel") +OVL_DEFINE(OVL_M432, "dll/m432dll.rel") +OVL_DEFINE(OVL_M433, "dll/m433dll.rel") +OVL_DEFINE(OVL_M434, "dll/m434dll.rel") +OVL_DEFINE(OVL_M435, "dll/m435dll.rel") +OVL_DEFINE(OVL_M436, "dll/m436dll.rel") +OVL_DEFINE(OVL_M437, "dll/m437dll.rel") +OVL_DEFINE(OVL_M438, "dll/m438dll.rel") +OVL_DEFINE(OVL_M439, "dll/m439dll.rel") +OVL_DEFINE(OVL_M440, "dll/m440dll.rel") +OVL_DEFINE(OVL_M441, "dll/m441dll.rel") +OVL_DEFINE(OVL_M442, "dll/m442dll.rel") +OVL_DEFINE(OVL_M443, "dll/m443dll.rel") +OVL_DEFINE(OVL_M444, "dll/m444dll.rel") +OVL_DEFINE(OVL_M445, "dll/m445dll.rel") +OVL_DEFINE(OVL_M446, "dll/m446dll.rel") +OVL_DEFINE(OVL_M447, "dll/m447dll.rel") +OVL_DEFINE(OVL_M448, "dll/m448dll.rel") +OVL_DEFINE(OVL_M449, "dll/m449dll.rel") +OVL_DEFINE(OVL_M450, "dll/m450dll.rel") +OVL_DEFINE(OVL_M451, "dll/m451dll.rel") +OVL_DEFINE(OVL_M453, "dll/m453dll.rel") +OVL_DEFINE(OVL_M455, "dll/m455dll.rel") +OVL_DEFINE(OVL_M456, "dll/m456dll.rel") +OVL_DEFINE(OVL_M457, "dll/m457dll.rel") +OVL_DEFINE(OVL_M458, "dll/m458dll.rel") +OVL_DEFINE(OVL_M459, "dll/m459dll.rel") +OVL_DEFINE(OVL_M460, "dll/m460dll.rel") +OVL_DEFINE(OVL_M461, "dll/m461dll.rel") +OVL_DEFINE(OVL_M462, "dll/m462dll.rel") +OVL_DEFINE(OVL_M463, "dll/m463dll.rel") +OVL_DEFINE(OVL_MENT, "dll/mentdll.rel") +OVL_DEFINE(OVL_MESS, "dll/messdll.rel") +OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") +OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") +OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") +OVL_DEFINE(OVL_MPEX, "dll/mpexdll.rel") +OVL_DEFINE(OVL_MSETUP, "dll/msetupdll.rel") +OVL_DEFINE(OVL_MSTORY2, "dll/mstory2dll.rel") +OVL_DEFINE(OVL_MSTORY3, "dll/mstory3dll.rel") +OVL_DEFINE(OVL_MSTORY4, "dll/mstory4dll.rel") +OVL_DEFINE(OVL_MSTORY, "dll/mstorydll.rel") +OVL_DEFINE(OVL_NIS, "dll/nisdll.rel") +OVL_DEFINE(OVL_OPTION, "dll/option.rel") +OVL_DEFINE(OVL_PRESENT, "dll/present.rel") +OVL_DEFINE(OVL_RESULT, "dll/resultdll.rel") +OVL_DEFINE(OVL_SAF, "dll/safdll.rel") +OVL_DEFINE(OVL_SELMENU, "dll/selmenuDLL.rel") +OVL_DEFINE(OVL_STAFF, "dll/staffdll.rel") +OVL_DEFINE(OVL_SUBCHRSEL, "dll/subchrseldll.rel") +OVL_DEFINE(OVL_W01, "dll/w01dll.rel") +OVL_DEFINE(OVL_W02, "dll/w02dll.rel") +OVL_DEFINE(OVL_W03, "dll/w03dll.rel") +OVL_DEFINE(OVL_W04, "dll/w04dll.rel") +OVL_DEFINE(OVL_W05, "dll/w05dll.rel") +OVL_DEFINE(OVL_W06, "dll/w06dll.rel") +OVL_DEFINE(OVL_W10, "dll/w10dll.rel") +OVL_DEFINE(OVL_W20, "dll/w20dll.rel") +OVL_DEFINE(OVL_W21, "dll/w21dll.rel") +OVL_DEFINE(OVL_ZTAR, "dll/ztardll.rel") \ No newline at end of file diff --git a/include/stdarg.h b/include/stdarg.h new file mode 100644 index 00000000..1ca0f853 --- /dev/null +++ b/include/stdarg.h @@ -0,0 +1,19 @@ +#ifndef STDARG_H +#define STDARG_H + +typedef struct { + char gpr; + char fpr; + char reserved[2]; + char* input_arg_area; + char* reg_save_area; +} __va_list[1]; +typedef __va_list va_list; + +void* __va_arg(va_list v_list, unsigned char type); + +#define va_start(ap, fmt) ((void) fmt, __builtin_va_info(&ap)) +#define va_arg(ap, t) (*((t*) __va_arg(ap, _var_arg_typeof(t)))) +#define va_end(ap) (void) 0 + +#endif \ No newline at end of file diff --git a/include/stdio.h b/include/stdio.h new file mode 100644 index 00000000..a8dc7701 --- /dev/null +++ b/include/stdio.h @@ -0,0 +1,12 @@ +#ifndef _STDIO_H_ +#define _STDIO_H_ + +#include "stdarg.h" + +int puts(const char* s); +int printf(const char*, ...); +int sprintf(char* s, const char* format, ...); +int vprintf(const char* format, va_list arg); +int vsprintf(char* s, const char* format, va_list arg); + +#endif \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index 8ed35427..e667599b 100644 --- a/include/variables.h +++ b/include/variables.h @@ -4,11 +4,13 @@ #include "types.h" #include "common_structs.h" #include "dolphin/os.h" +#include "dolphin/gx/GXStruct.h" extern u16 HuPadBtnDown[4]; extern u8 HuPadDStk[4]; extern OSHeapHandle currentHeapHandle; +extern GXRenderModeObj *RenderMode; extern BOOL saftyFrameF; extern u16 strlinecnt; @@ -20,4 +22,26 @@ extern WipeState wipeData; extern PlayerConfig gPlayerConfig[4]; +extern FileListEntry _ovltbl[]; + +extern u32 DirDataSize; + +extern u32 totalPolyCnted; +extern char fadeStat; + +extern omObjData *omDBGSysKeyObj; +extern Process *omwatchproc; +extern OverlayID omnextovl; +extern OverlayID omcurovl; +extern int omcurdll; +extern int omovlhisidx; +extern int omovlevtno; +extern int omnextovlevtno; +extern int omovlstat; +extern char omUPauseFlag; +extern s16 omSysExitReq; +extern s16 omdispinfo; +extern char omSysPauseEnableFlag; +extern OverlayID omprevovl; + #endif diff --git a/src/REL/bootDll/nintendo_data.c b/src/REL/bootDll/nintendo_data.c new file mode 100644 index 00000000..9dd15f2c --- /dev/null +++ b/src/REL/bootDll/nintendo_data.c @@ -0,0 +1,15 @@ +#include "common.h" + +#include "logoNintendoData.inc" + +void *logoReadNintendo(void) +{ + u32 *src = (u32 *)logoNintendoData; + u32 size = *src++; + void *dst = HuMemDirectMalloc(HEAP_DATA, size); + int decode_type = *src++; + if(dst) { + HuDecodeData(src, dst, size, decode_type); + } + return dst; +} \ No newline at end of file diff --git a/src/REL/safDll/safDll.c b/src/REL/safDll/safDll.c new file mode 100644 index 00000000..860ad928 --- /dev/null +++ b/src/REL/safDll/safDll.c @@ -0,0 +1,12 @@ +#include "common.h" +#include "REL/executor.h" + +void fn_1_0(void) { + +} + +//fn_1_4 +// https://decomp.me/scratch/Ii0sV + +// fn_1_288 +// https://decomp.me/scratch/VQ3CT \ No newline at end of file diff --git a/src/REL/subchrselDll/subchrselDll.c b/src/REL/subchrselDll/subchrselDll.c index 20b9801f..32bdc533 100644 --- a/src/REL/subchrselDll/subchrselDll.c +++ b/src/REL/subchrselDll/subchrselDll.c @@ -97,7 +97,7 @@ static void SubchrMain() WipeCreate(2, 0, -1); HuPrcSleep(wipeData.duration+1.0f); fn_80035A0C(); - omOvlGotoEx(41, 1, 0, 0); + omOvlGotoEx(OVL_M433, 1, 0, 0); do { HuPrcVSleep(); } while(1); diff --git a/src/REL/w10Dll/w10Dll.c b/src/REL/w10Dll/w10Dll.c new file mode 100644 index 00000000..d4455036 --- /dev/null +++ b/src/REL/w10Dll/w10Dll.c @@ -0,0 +1,746 @@ +#include "common.h" +#include "REL/executor.h" + +s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame); + +typedef struct unkw10Dll { + char unk0[0x0C]; + Vec3f unk0C; + Vec3f unk18; + s32 unk24; +} unkw10Dll; //sizeof 0x28 + +typedef struct w10DllUnk01 { + u8 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; +} w10DllUnk01; //sizeof ? + +typedef struct w10DllUnk02 { + char unk00[0x5C]; + w10DllUnk01* unk5C; +} w10DllUnk02; //sizeof ? + +//this belongs to m456Dll +w10DllUnk02** fn_8002FAC0(Process*, s32); +void fn_8003FD10(s16, f32, f32); +extern s16 lbl_1_bss_20; +extern f32 lbl_1_rodata_5C; +extern f32 lbl_1_rodata_60; +s16 fn_8003F958(s32, s32, s32); +void fn_8003FBEC(s16); +void fn_8008853C(s32); +extern s32 lbl_801A52E8; +void fn_800B42B4(s32); +void fn_80082AAC(s32); +void fn_800B4264(s32, s32, s32); +void fn_1_1FB0(void); +void fn_1_1E3C(s32, s32, s32); +void fn_8007500C(s32); +void fn_1_BA0(s32); +void fn_8006F0D4(s32, f32); +f32 fn_8006F128(s32); +f64 fmod(f32, f64); +void fn_1_C20(void); +void fn_8006F61C(s16, s32); +void fn_800B42BC(s16); +void fn_80023828(s32, s32); +s32 fn_8006DBD4(s16); +void fn_8005B150(void*, void*); +void fn_1_6D8(void); +void fn_1_E0(void); +void fn_8006F2E8(s32, Vec3f*); +void HuWinMesSet(s16, s32); +void fn_1_1D68(void); +void fn_1_1DEC(void); +void fn_1_AEC(void); +void fn_80042848(s16); +void fn_80045BF4(s16, s32); +void fn_80045D7C(s16, s32, s32, s32, s32); +void fn_80045E84(s16, s32); +void fn_80046F04(s32, f32*, ...); +void fn_8005D10C(void*, void*); +s16 fn_8006D9A4(s32, void*, s32); +void fn_8006DB90(s16); +void fn_8006DDE8(s16, f32); +void fn_8006E2B8(s16, s32, s32); +void fn_8006E878(s16, f32); +void fn_8006F158(s16, void*); +void fn_8006F1A8(s16, f32, f32, f32); +s32 fn_8006F220(s16 arg0, Vec3f* arg1); +void fn_8006F50C(s16, s32); +void fn_80073FF4(void*); +void fn_80073FFC(void*); +void fn_80074004(void*); +s32 fn_800745F0(s32, s32); +void fn_800772EC(s32); +void fn_80077A3C(void); +void fn_80077AAC(s16); +void fn_8007A83C(s16); +void fn_80083EDC(s16); +void fn_800A4F6C(s16); +void fn_800B3FD8(void*); +void fn_800B4274(s32, s32); +void fn_1_1AAC(void); +void fn_1_8C0(void); +void fn_1_904(void); +void fn_1_908(void); +s32 fn_1_90C(void); +void fn_1_91C(void); +void Hu3D2Dto3D(Vec3f*, s32, Vec3f*); +void fn_8005D5C0(Vec3f*); +void fn_8006F338(s16, f32, f32, f32); +s32 fn_8005B6A8(void); +void fn_8006EFBC(s16, Mtx); +void fn_8006F270(s16, f32, f32, f32); +void fn_8003FB08(s16); +extern Vec3f lbl_1_data_80[]; +extern f32 lbl_1_rodata_38; +extern f32 lbl_1_rodata_3C; +extern f32 lbl_1_rodata_40; +extern Process* lbl_1_bss_18; +extern s16 lbl_1_bss_1C; +extern s16 lbl_1_bss_1E; +extern s32 lbl_1_data_78; //no idea on the type of this +extern f64 lbl_1_rodata_28; +extern f32 lbl_1_rodata_30; +extern f32 lbl_1_rodata_34; +extern BoardStateSubStruct* lbl_1_bss_0; +extern s16 lbl_1_bss_10[12]; //could be incorrect size +extern void* lbl_1_bss_8; //unknown type +extern s16 lbl_1_bss_C; +extern s16 lbl_1_bss_E; +extern unkw10Dll lbl_1_data_0[1]; +extern s16 lbl_1_bss_22[11]; +extern s32 lbl_1_data_2A8[11]; +extern s16 lbl_1_data_28; +extern s16 lbl_1_data_2A; +extern s16 lbl_1_data_2C; +extern s16 lbl_1_data_2E; +extern s16 lbl_1_data_30; +extern s16 lbl_1_data_32; +extern s32 lbl_1_data_54; //unknown type +extern s32 lbl_1_data_5C; //unknown type +extern s32 lbl_1_data_64; //unknown type +extern s32 lbl_1_data_6C; //unknown type +extern f32 lbl_1_rodata_10; +extern f32 lbl_1_rodata_14; +extern f32 lbl_1_rodata_18; +extern f32 lbl_1_rodata_1C; +extern BoardState lbl_8018FCF8; + +/* +void fn_1_0(void) { + fn_8005B150(&fn_1_E0, &fn_1_6D8); +} +*/ + +// function is probably global. only inlined in rels? +/* +inline s32 get_current_board(void) { + return lbl_8018FCF8.unk08 & 0x1F; +} +*/ + +/* +void fn_1_E0(void) { + f32 sp10; + f32 spC; + s32 sp8; + + s32 i; + unkw10Dll* temp_r30; + s32 temp; + s32 temp2; + + temp2 = get_current_board(); + lbl_1_bss_0 = &lbl_8018FCF8.unk10; + lbl_1_bss_0->unk0 = 0; + lbl_1_bss_0->unk4 = 0; + lbl_1_bss_0->unk6 = 0; + fn_800B3FD8(&fn_1_1AAC); + fn_1_AEC(); + fn_1_1D68(); + lbl_1_bss_C = 0; + fn_800772EC(0x7B0000); + temp = fn_800745F0(0, 1); + fn_800B4274(temp, 1); + lbl_1_data_28 = fn_8006D9A4(0x7B0001, NULL, 0); + fn_8006DDE8(lbl_1_data_28, lbl_1_rodata_10); + fn_8006F1A8(lbl_1_data_28, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + fn_8006E2B8(lbl_1_data_28, 0, 0x40000001); + fn_8006E878(lbl_1_data_28, lbl_1_rodata_18); + lbl_1_data_2A = fn_8006D9A4(0x7B0002, NULL, 0); + fn_8006DDE8(lbl_1_data_2A, lbl_1_rodata_10); + fn_8006F1A8(lbl_1_data_2A, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + fn_8006E2B8(lbl_1_data_2A, 0, 0x40000001); + lbl_1_data_2C = fn_8006D9A4(0x7B0011, &lbl_1_data_54, 0); + fn_8006F1A8(lbl_1_data_2C, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + fn_8006E2B8(lbl_1_data_2C, 1, 0x40000001); + lbl_1_data_2E = fn_8006D9A4(0x20005, &lbl_1_data_5C, 0); + fn_8006E2B8(lbl_1_data_2E, 1, 0x40000001); + lbl_1_data_32 = fn_8006D9A4(0x20012, &lbl_1_data_64, 0); + fn_8006E2B8(lbl_1_data_32, 1, 0x40000001); + lbl_1_data_30 = fn_8006D9A4(0x2000D, &lbl_1_data_6C, 0); + fn_8006E2B8(lbl_1_data_30, 1, 0x40000001); + fn_8005D10C(&fn_1_8C0, &fn_1_904); + for (i = 0; i < 1; i++) { + temp_r30 = &lbl_1_data_0[i]; + if (temp_r30->unk24 != -1) { + lbl_1_bss_8 = NULL; + lbl_1_bss_10[i] = fn_8006D9A4(temp_r30->unk24, lbl_1_bss_8, 0); + fn_8006F158(lbl_1_bss_10[i], temp_r30); + fn_8006F220(lbl_1_bss_10[i], &temp_r30->unk0C); + fn_8006F2E8(lbl_1_bss_10[i], &temp_r30->unk18); + fn_8006F50C(lbl_1_bss_10[i], 1); + if (lbl_1_bss_8 != NULL) { + fn_8006E2B8(lbl_1_bss_10[i], 0, 0x40000001); + } + } + } + fn_8006F50C(lbl_1_bss_10[0], 0); + lbl_1_bss_0->unk8 = fn_8006D9A4(0x7000A, NULL, 0); + fn_8006F50C(lbl_1_bss_0->unk8, 0); + fn_80073FF4(&fn_1_90C); + fn_80073FFC(&fn_1_91C); + fn_80074004(&fn_1_908); + fn_80083EDC(lbl_1_data_2C); + fn_800A4F6C(lbl_1_data_32); + fn_80077AAC(lbl_1_data_2E); + fn_8007A83C(lbl_1_data_30); + fn_80046F04(1, &spC, 0x2E003A); + lbl_1_bss_E = HuWinCreate(lbl_1_rodata_1C, lbl_1_rodata_20, spC, sp10, 1); + HuWinMesSet(lbl_1_bss_E, 0x2E003A); + fn_80045E84(lbl_1_bss_E, 0); + fn_80045BF4(lbl_1_bss_E, 1); + fn_80045D7C(lbl_1_bss_E, 7, 0, 0, 0); +} +*/ + +/* +void fn_1_6D8(void) { + s32 i; + for (i = 0; i < 1; i++) { + if (lbl_1_bss_10[i] != 0) { + fn_8006DB90(lbl_1_bss_10[i]); + lbl_1_bss_10[i] = 0; + } + } + if (lbl_1_data_32 != -1) { + fn_8006DB90(lbl_1_data_32); + lbl_1_data_32 = -1; + } + if (lbl_1_data_2E != -1) { + fn_8006DB90(lbl_1_data_2E); + lbl_1_data_2E = -1; + } + if (lbl_1_data_30 != -1) { + fn_8006DB90(lbl_1_data_30); + lbl_1_data_30 = -1; + } + if (lbl_1_data_2C != -1) { + fn_8006DB90(lbl_1_data_2C); + lbl_1_data_2C = -1; + } + if (lbl_1_data_28 != -1) { + fn_8006DB90(lbl_1_data_28); + lbl_1_data_28 = -1; + } + if (lbl_1_data_2A != -1) { + fn_8006DB90(lbl_1_data_2A); + lbl_1_data_2A = -1; + } + fn_8006DB90(lbl_1_bss_0->unk8); + fn_1_1DEC(); + fn_80042848(lbl_1_bss_E); + fn_80077A3C(); +} +*/ + +/* +void fn_1_8C0(void) { + s32 temp = fn_8006DBD4(lbl_1_data_28); + fn_80023828(temp, 1); +} +*/ + +/* +void fn_1_904(void) { +} +*/ + +/* +void fn_1_908(void) { +} +*/ + +/* +s32 fn_1_90C(void) { + return 0; +} +*/ + +/* +void fn_1_914(void) { +} +*/ + +/* +void fn_1_918(void) { +} +*/ + +/* +void fn_1_91C(void) { +} +*/ + +/* +s32 fn_1_920(s32 arg0, f32 arg8, f32 arg9) { + s32 var_r31; + f32 var_f29; + f32 var_f31; + + var_r31 = 0; + var_f31 = fn_8006F128(arg0); + arg8 = fmod(arg8, lbl_1_rodata_28); + if (var_f31 < lbl_1_rodata_14) { + var_f31 += lbl_1_rodata_30; + } + if (arg8 < lbl_1_rodata_14) { + arg8 += lbl_1_rodata_30; + } + if (var_f31 != arg8) { + var_f29 = arg8 - var_f31; + if (var_f29 < lbl_1_rodata_14) { + var_f29 += lbl_1_rodata_30; + } + if (var_f29 < lbl_1_rodata_34) { + if (var_f29 > arg9) { + var_f31 = var_f31 + arg9; + } else { + var_f31 = arg8; + } + } else if ((lbl_1_rodata_30 - var_f29) > arg9) { + var_f31 = var_f31 - arg9; + } else { + var_f31 = arg8; + } + if (var_f31 < lbl_1_rodata_14) { + var_f31 += lbl_1_rodata_30; + } + if (var_f31 >= lbl_1_rodata_30) { + var_f31 -= lbl_1_rodata_30; + } + fn_8006F0D4(arg0, var_f31); + } else { + var_r31 = 1; + } + return var_r31; +} +*/ + +/* +void fn_1_AEC(void) { + lbl_1_bss_1C = 0; + lbl_1_bss_1E = fn_8006D9A4(0x7B000F, &lbl_1_data_78, 0); + fn_8006E2B8(lbl_1_bss_1E, 1, 0x40000001); + fn_800B42BC(lbl_1_bss_1E); + fn_8006F61C(lbl_1_bss_1E, 6); + lbl_1_bss_18 = HuPrcCreate(fn_1_C20, 0x1FFF, 0x1800, 0); +} +*/ + +/* +void fn_1_BA0(s32 arg0) { + s32 var_r31; + + switch (lbl_1_bss_1C) { + case 0: + var_r31 = 5; + break; + case 1: + var_r31 = 6; + break; + } + BoardMessCreate(var_r31, arg0, -1); + BoardMessWait(); + BoardMessKill(); +} +*/ + +/* +void fn_1_C10(void) { + HuPrcEnd(); +} +*/ + +/* +void fn_1_C20(void) { + Mtx sp20; + Vec3f sp14; + Vec3f sp8; + + while (1) { + if (fn_8005B6A8() != 0) { + fn_8006DB90(lbl_1_bss_1E); + fn_800B42BC(-1); + HuPrcEnd(); + } + Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14); + fn_8006F158(lbl_1_bss_1E, &sp14); + fn_8005D5C0(&sp8); + PSMTXRotRad(sp20, 'y', lbl_1_rodata_38); + fn_8006EFBC(lbl_1_bss_1E, sp20); + fn_8006F270(lbl_1_bss_1E, sp8.x, lbl_1_rodata_3C, lbl_1_rodata_3C); + fn_8006F338(lbl_1_bss_1E, lbl_1_rodata_40, lbl_1_rodata_40, lbl_1_rodata_40); + HuPrcVSleep(); + } +} +*/ + +/* +void fn_1_D2C(void) { + fn_1_BA0(0x2E0001); +} +*/ + +/* +void fn_1_D54(void) { + fn_1_BA0(0x2E0002); +} +*/ + +/* +void fn_1_D7C(void) { + fn_1_BA0(0x2E0003); +} +*/ + +/* +void fn_1_DA4(void) { + fn_1_BA0(0x2E0004); +} +*/ + +/* +void fn_1_DCC(void) { + fn_1_BA0(0x2E0005); +} +*/ + +/* +void fn_1_DF4(void) { + fn_1_BA0(0x2E0006); +} +*/ + +/* +void fn_1_E1C(void) { + fn_1_BA0(0x2E0007); +} +*/ + +/* +void fn_1_E44(void) { + fn_1_BA0(0x2E0008); + fn_1_BA0(0x2E0009); + fn_8007500C(0); + fn_8006F50C(lbl_1_data_2C, 1); +} +*/ + +/* +void fn_1_E94(void) { + fn_1_BA0(0x2E000A); +} +*/ + +/* +void fn_1_EBC(void) { + fn_1_BA0(0x2E000B); +} +*/ + +/* +void fn_1_EE4(void) { + +} +*/ + +/* +void fn_1_EE8(void) { + fn_1_1E3C(0, 0x122, 0x8C); + fn_1_BA0(0x2E000C); + fn_1_BA0(0x2E000D); + fn_1_1FB0(); +} +*/ + +/* +void fn_1_F30(void) { + fn_1_1E3C(1, 0x122, 0x8C); + fn_1_BA0(0x2E000E); + fn_1_1FB0(); +} +*/ + +/* +void fn_1_F6C(void) { + fn_1_1E3C(2, 0x122, 0x8C); + fn_1_BA0(0x2E000F); + fn_1_1FB0(); + fn_800B4264(0, 0x50, 1); +} +*/ + +/* +void fn_1_FB8(void) { + fn_1_1E3C(3, 0x122, 0x8C); + fn_1_BA0(0x2E0010); + fn_1_1FB0(); + fn_1_BA0(0x2E0011); + fn_800B4264(-0x50, 0, 1); +} +*/ + +/* +void fn_1_1010(void) { + fn_1_1E3C(4, 0x122, 0x8C); + fn_1_BA0(0x2E0012); + fn_1_1FB0(); + fn_800B4264(0, 0x50, 1); +} +*/ + +/* +void fn_1_105C(void) { + fn_1_1E3C(5, 0x122, 0x8C); + fn_1_BA0(0x2E0013); + fn_1_1FB0(); +} +*/ + +/* +void fn_1_1098(void) { + fn_1_BA0(0x2E0014); +} +*/ + +/* +void fn_1_10C0(void) { + fn_1_BA0(0x2E0015); + fn_800B4264(-0x50, 0, 1); +} +*/ + +/* +void fn_1_10F8(void) { + fn_1_1E3C(6, 0x122, 0x8C); + fn_1_BA0(0x2E0016); + fn_1_1FB0(); +} +*/ + +/* +void fn_1_1134(void) { + fn_1_1E3C(7, 0x122, 0x8C); + fn_1_BA0(0x2E0017); + fn_1_1FB0(); + fn_80082AAC(1); +} +*/ + +/* +void fn_1_1178(void) { + fn_1_BA0(0x2E0018); +} +*/ + +/* +void fn_1_11A0(void) { + s32 temp; + + fn_1_BA0(0x2E0019); + temp = fn_800745F0(0, 1); + fn_800B4274(temp, 0); +} +*/ + +/* +void fn_1_11EC(void) { + s32 temp; + + fn_1_BA0(0x2E001A); + temp = fn_800745F0(0, 1); + fn_800B4274(temp, 0); + fn_800B42B4(0); +} +*/ + +/* +void fn_1_1240(void) { + fn_1_BA0(0x2E001B); + fn_800B4264(0x50, 0, 1); +} +*/ + +/* +void fn_1_1278(void) { + fn_1_BA0(0x2E001C); +} +*/ + +/* +void fn_1_12A0(void) { + fn_1_BA0(0x2E001D); + fn_80062B74(2, 1); + fn_800B42B4(1); +} +*/ + +/* +void fn_1_12DC(void) { + fn_1_BA0(0x2E001E); +} +*/ + +/* +void fn_1_1304(void) { + fn_1_BA0(0x2E001F); +} +*/ + +/* +void fn_1_132C(void) { + fn_1_BA0(0x2E0020); +} +*/ + +/* +void fn_1_1354(void) { + fn_1_BA0(0x2E0021); +} +*/ + +/* +void fn_1_137C(void) { + fn_1_BA0(0x2E0022); +} +*/ + +// fn_1_13A4 + +/* +void fn_1_176C(void) { + fn_1_C10(1); + fn_1_BA0(0x2E0024); +} +*/ + +/* +void fn_1_179C(void) { + fn_1_BA0(0x2E0025); + gPlayerData[1].flags.unk0 = 2; + gPlayerData[3].flags.unk0 = 2; +} +*/ + +/* +void fn_1_17F4(void) { + fn_1_BA0(0x2E0026); + gPlayerData[0].flags.unk0 = 2; +} +*/ + +/* +void fn_1_1834(void) { + fn_1_BA0(0x2E0027); + gPlayerData[0].flags.unk0 = 1; + gPlayerData[1].flags.unk0 = 1; + gPlayerData[2].flags.unk0 = 1; + gPlayerData[3].flags.unk0 = 2; +} +*/ + +/* +void fn_1_18BC(void) { + fn_1_BA0(0x2E0028); + fn_1_BA0(0x2E0029); + lbl_801A52E8 = 0; + fn_8008853C(0); +} +*/ + +/* +void fn_1_1908(void) { + fn_1_BA0(0x2E002D); +} +*/ + +/* +void fn_1_1930(void) { + fn_1_BA0(0x2E002F); +} +*/ + +/* +void fn_1_1958(void) { + fn_1_BA0(0x2E0031); +} +*/ + +/* +void fn_1_1980(void) { + +} +*/ + +// fn_1_1984 + +// fn_1_1AAC + +/* +void fn_1_1D68(void) { + s32 temp_r4; + s32 temp_r5; + s32 i; + + for (i = 0; i < 11; i++) { + lbl_1_bss_22[i] = fn_8003F958(lbl_1_data_2A8[i], 0, 0); + fn_8003FBEC(lbl_1_bss_22[i]); + } +} +*/ + +/* +void fn_1_1DEC(void) { + s32 i; + + for (i = 0; i < 11; i++) { + fn_8003FB08(lbl_1_bss_22[i]); + } +} +*/ + +// fn_1_1E3C + +/* +void fn_1_1FB0(void) { + f32 var_f31; + f32 var_f30; + u32 i; + + var_f31 = lbl_1_rodata_60; + var_f30 = lbl_1_rodata_60; + for (i = 0; i < 15; i++) { + var_f31 -= lbl_1_rodata_5C; + var_f30 -= lbl_1_rodata_5C; + fn_8003FD10(lbl_1_bss_20, var_f31, var_f30); + HuPrcVSleep(); + } + fn_8003FBEC(lbl_1_bss_20); +} +*/ \ No newline at end of file diff --git a/src/game/data.c b/src/game/data.c new file mode 100644 index 00000000..877a8be7 --- /dev/null +++ b/src/game/data.c @@ -0,0 +1,552 @@ +#include "common.h" +#include "dolphin/dvd.h" + +#define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset))) +#define DATA_EFF_SIZE(size) (((size)+1) & ~0x1) + +static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num); + +#define DATA_MAX_READSTAT 128 + +#define DATADIR_DEFINE(name, path) { path, -1 }, + +static FileListEntry DataDirStat[DATADIR_COUNT+1] = { + #include "datadir_table.h" + { NULL, -1 } +}; + +#undef DATADIR_DEFINE + +u32 DirDataSize; +static u32 DataDirMax; +static s32 shortAccessSleep; +static DataReadStat ReadDataStat[DATA_MAX_READSTAT]; + +void HuDataInit(void) +{ + int i = 0; + FileListEntry *dir_stat = DataDirStat; + DataReadStat *read_stat; + while(dir_stat->name) { + if((dir_stat->file_id = DVDConvertPathToEntrynum(dir_stat->name)) == -1) { + OSReport("data.c: Data File Error(%s)\n", dir_stat->name); + OSPanic("data.c", 65, "\n"); + } + i++; + dir_stat++; + } + DataDirMax = i; + for(i=0, read_stat = ReadDataStat; idir_id = -1; + read_stat->used = FALSE; + read_stat->status = 0; + } +} + +static int HuDataReadStatusGet(void) +{ + int i; + for(i=0; i= DATA_MAX_READSTAT) { + i = -1; + } + return i; +} + +int HuDataReadChk(s32 data_num) +{ + int i; + data_num >>= 16; + for(i=0; i= DATA_MAX_READSTAT) { + i = -1; + } + return i; +} + +DataReadStat *HuDataGetStatus(void *dir_ptr) +{ + int i; + for(i=0; i DATA_MAX_READSTAT) { + return NULL; + } + return &ReadDataStat[i]; +} + +void *HuDataGetDirPtr(s32 data_num) +{ + int status = HuDataReadChk(data_num); + if(status < 0) { + return NULL; + } + return ReadDataStat[status].dir; +} + +DataReadStat *HuDataDirRead(s32 data_num) +{ + DataReadStat *read_stat; + int status; + s32 dir_id; + dir_id = data_num >> 16; + if(DataDirMax <= dir_id) { + OSReport("data.c: Data Number Error(%d)\n", data_num); + return NULL; + } + + if((status = HuDataReadChk(data_num)) < 0) { + void *dir_aram; + if(dir_aram = HuARDirCheck(data_num)) { + HuAR_ARAMtoMRAM(dir_aram); + while(HuARDMACheck()); + status = HuDataReadChk(data_num); + read_stat = &ReadDataStat[status]; + } else { + status = HuDataReadStatusGet(); + if(status == -1) { + OSReport("data.c: Data Work Max Error\n"); + return NULL; + } + read_stat = &ReadDataStat[status]; + read_stat->dir = HuDvdDataFastRead(DataDirStat[dir_id].file_id); + if(read_stat->dir) { + read_stat->dir_id = dir_id; + } + } + } else { + read_stat = &ReadDataStat[status]; + } + return read_stat; +} + +DataReadStat *HuDataDirReadNum(s32 data_num, s32 num) +{ + DataReadStat *read_stat; + int status; + s32 dir_id; + dir_id = data_num >> 16; + if(DataDirMax <= dir_id) { + OSReport("data.c: Data Number Error(%d)\n", data_num); + return NULL; + } + + if((status = HuDataReadChk(data_num)) < 0) { + void *dir_aram; + if((dir_aram = HuARDirCheck(data_num))) { + OSReport("ARAM data num %x\n", data_num); + HuAR_ARAMtoMRAMNum(dir_aram, num); + while(HuARDMACheck()); + status = HuDataReadChk(data_num); + read_stat = &ReadDataStat[status]; + read_stat->used = TRUE; + read_stat->num = num; + } else { + OSReport("data num %x\n", data_num); + status = HuDataReadStatusGet(); + if(status == -1) { + OSReport("data.c: Data Work Max Error\n"); + return NULL; + } + read_stat = &ReadDataStat[status]; + read_stat->dir = HuDvdDataFastReadNum(DataDirStat[dir_id].file_id, num); + if(read_stat->dir) { + read_stat->dir_id = dir_id; + read_stat->used = TRUE; + read_stat->num = num; + } + } + } else { + read_stat = &ReadDataStat[status]; + } + return read_stat; +} + +DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num) +{ + DataReadStat *read_stat = HuDataGetStatus(dir_ptr); + int status; + if((status = HuDataReadChk(read_stat->dir_id << 16)) >= 0) { + HuDataDirClose(data_num); + } + if((status = HuDataReadStatusGet()) == -1) { + OSReport("data.c: Data Work Max Error\n"); + return NULL; + } else { + read_stat = &ReadDataStat[status]; + read_stat->dir = dir_ptr; + read_stat->dir_id = data_num >>16; + return read_stat; + } +} + +void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo) +{ + DataReadStat *read_stat; + int i; + for(i=0; istartAddr) { + break; + } + } + if(i >= DATA_MAX_READSTAT) { + OSPanic("data.c", 358, "dvd.c AsyncCallBack Error"); + } + read_stat = &ReadDataStat[i]; + read_stat->status = 0; + DVDClose(&read_stat->file_info); +} + +s32 HuDataDirReadAsync(s32 data_num) +{ + DataReadStat *read_stat; + int status; + s32 dir_id; + dir_id = data_num >> 16; + if(DataDirMax <= dir_id) { + OSReport("data.c: Data Number Error(%d)\n", data_num); + return -1; + } + if((status = HuDataReadChk(data_num)) < 0) { + void *dir_aram; + if(dir_aram = HuARDirCheck(data_num)) { + OSReport("ARAM data num %x\n", data_num); + HuAR_ARAMtoMRAM(dir_aram); + status = 0x10000; + } else { + status = HuDataReadStatusGet(); + if(status == -1) { + OSReport("data.c: Data Work Max Error\n"); + return -1; + } + read_stat = &ReadDataStat[status]; + read_stat->status = 1; + read_stat->dir_id = dir_id; + read_stat->dir = HuDvdDataFastReadAsync(DataDirStat[dir_id].file_id, read_stat); + } + } else { + status = -1; + } + return status; +} + +s32 HuDataDirReadNumAsync(s32 data_num, s32 num) +{ + DataReadStat *read_stat; + int status; + s32 dir_id; + dir_id = data_num >> 16; + if(DataDirMax <= dir_id) { + OSReport("data.c: Data Number Error(%d)\n", data_num); + return -1; + } + if((status = HuDataReadChk(data_num)) < 0) { + if((status = HuDataReadStatusGet()) == -1) { + OSReport("data.c: Data Work Max Error\n"); + return -1; + } + ReadDataStat[status].status = TRUE; + ReadDataStat[status].dir_id = dir_id; + read_stat = &ReadDataStat[status]; + read_stat->used = TRUE; + read_stat->num = num; + read_stat->dir = HuDvdDataFastReadAsync(DataDirStat[dir_id].file_id, read_stat); + } else { + status = -1; + } + return status; +} + +BOOL HuDataGetAsyncStat(s32 status) +{ + if(status == 0x10000) { + return HuARDMACheck() == 0; + } else { + return ReadDataStat[status].status == 0; + } +} + +static void GetFileInfo(DataReadStat *read_stat, s32 file_num) +{ + u32 *temp_ptr; + temp_ptr = (u32 *)PTR_OFFSET(read_stat->dir, (file_num * 4))+1; + read_stat->file = PTR_OFFSET(read_stat->dir, *temp_ptr); + temp_ptr = read_stat->file; + read_stat->raw_len = *temp_ptr++; + read_stat->comp_type = *temp_ptr++; + read_stat->file = temp_ptr; +} + +void *HuDataRead(s32 data_num) +{ + DataReadStat *read_stat; + int status; + void *buf; + if(!HuDataDirRead(data_num)) { + (void)data_num; + return NULL; + } + if((status = HuDataReadChk(data_num)) == -1) { + return NULL; + } + read_stat = &ReadDataStat[status]; + GetFileInfo(read_stat, data_num & 0xFFFF); + buf = HuMemDirectMalloc(0, DATA_EFF_SIZE(read_stat->raw_len)); + if(buf) { + HuDecodeData(read_stat->file, buf, read_stat->raw_len, read_stat->comp_type); + } + return buf; +} + +void *HuDataReadNum(s32 data_num, s32 num) +{ + DataReadStat *read_stat; + int status; + void *buf; + if(!HuDataDirReadNum(data_num, num)) { + return NULL; + } + if((status = HuDataReadChk(data_num)) == -1) { + return NULL; + } + read_stat = &ReadDataStat[status]; + GetFileInfo(read_stat, data_num & 0xFFFF); + buf = HuMemDirectMallocNum(0, DATA_EFF_SIZE(read_stat->raw_len), num); + if(buf) { + HuDecodeData(read_stat->file, buf, read_stat->raw_len, read_stat->comp_type); + } + return buf; +} + +void *HuDataSelHeapRead(s32 data_num, HeapID heap) +{ + DataReadStat *read_stat; + int status; + void *buf; + if(!HuDataDirRead(data_num)) { + return NULL; + } + if((status = HuDataReadChk(data_num)) == -1) { + return NULL; + } + read_stat = &ReadDataStat[status]; + GetFileInfo(read_stat, data_num & 0xFFFF); + switch(heap) { + case HEAP_MUSIC: + buf = HuMemDirectMalloc(HEAP_MUSIC, DATA_EFF_SIZE(read_stat->raw_len)); + break; + + case HEAP_DATA: + buf = HuMemDirectMalloc(HEAP_DATA, DATA_EFF_SIZE(read_stat->raw_len)); + break; + + case HEAP_DVD: + buf = HuMemDirectMalloc(HEAP_DVD, DATA_EFF_SIZE(read_stat->raw_len)); + break; + + default: + buf = HuMemDirectMalloc(HEAP_SYSTEM, DATA_EFF_SIZE(read_stat->raw_len)); + break; + } + if(buf) { + HuDecodeData(read_stat->file, buf, read_stat->raw_len, read_stat->comp_type); + } + return buf; +} + +void *HuDataSelHeapReadNum(s32 data_num, s32 num, HeapID heap) +{ + DataReadStat *read_stat; + int status; + void *buf; + if(!HuDataDirReadNum(data_num, num)) { + return NULL; + } + if((status = HuDataReadChk(data_num)) == -1) { + return NULL; + } + read_stat = &ReadDataStat[status]; + GetFileInfo(read_stat, data_num & 0xFFFF); + switch(heap) { + case HEAP_MUSIC: + buf = HuMemDirectMalloc(HEAP_MUSIC, DATA_EFF_SIZE(read_stat->raw_len)); + break; + + case HEAP_DATA: + buf = HuMemDirectMallocNum(HEAP_DATA, DATA_EFF_SIZE(read_stat->raw_len), num); + break; + + case HEAP_DVD: + buf = HuMemDirectMallocNum(HEAP_DVD, DATA_EFF_SIZE(read_stat->raw_len), num); + break; + + default: + buf = HuMemDirectMallocNum(HEAP_SYSTEM, DATA_EFF_SIZE(read_stat->raw_len), num); + break; + } + if(buf) { + HuDecodeData(read_stat->file, buf, read_stat->raw_len, read_stat->comp_type); + } + return buf; +} + +void **HuDataReadMulti(s32 *data_ids) +{ + return HuDataReadMultiSub(data_ids, FALSE, 0); +} + +static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) +{ + s32 *dir_ids; + char **paths; + void **dir_ptrs; + void **out_ptrs; + int i, count, total_files; + u32 dir_id; + for(i=0, count=0; data_ids[i] != -1; i++) { + dir_id = data_ids[i] >> 16; + if(DataDirMax <= dir_id) { + OSReport("data.c: Data Number Error(%d)\n", data_ids[i]); + return NULL; + } + if(HuDataReadChk(data_ids[i]) < 0) { + count++; + } + } + total_files = i; + dir_ids = HuMemDirectMalloc(HEAP_SYSTEM, (count+1)*sizeof(s32)); + for(i=0; i> 16; + if(HuDataReadChk(data_ids[i]) < 0) { + int j; + for(j=0; dir_ids[j] != -1; j++) { + if(dir_ids[j] == dir_id){ + break; + } + } + if(dir_ids[j] == -1) { + dir_ids[j] = dir_id; + paths[count++] = DataDirStat[dir_id].name; + } + } + } + dir_ptrs = HuDvdDataReadMulti(paths); + for(i=0; dir_ids[i] != -1; i++) { + s32 status; + if((status = HuDataReadStatusGet()) == -1) { + OSReport("data.c: Data Work Max Error\n"); + (void)count; //HACK to match HuDataReadMultiSub + HuMemDirectFree(dir_ids); + HuMemDirectFree(paths); + return NULL; + } else { + ReadDataStat[status].dir = dir_ptrs[i]; + ReadDataStat[status].dir_id = dir_ids[i]; + } + } + HuMemDirectFree(dir_ids); + HuMemDirectFree(paths); + HuMemDirectFree(dir_ptrs); + if(use_num) { + out_ptrs = HuMemDirectMallocNum(HEAP_SYSTEM, (total_files+1)*sizeof(void *), num); + } else { + out_ptrs = HuMemDirectMalloc(HEAP_SYSTEM, (total_files+1)*sizeof(void *)); + } + for(i=0; data_ids[i] != -1; i++) { + if(use_num) { + out_ptrs[i] = HuDataReadNum(data_ids[i], num); + } else { + out_ptrs[i] = HuDataRead(data_ids[i]); + } + } + out_ptrs[i] = NULL; + return out_ptrs; +} + +s32 HuDataGetSize(s32 data_num) +{ + DataReadStat *read_stat; + int status; + if((status = HuDataReadChk(data_num)) == -1) { + return -1; + } + read_stat = &ReadDataStat[status]; + GetFileInfo(read_stat, data_num & 0xFFFF); + return DATA_EFF_SIZE(read_stat->raw_len); +} + +void HuDataClose(void *ptr) +{ + if(ptr) { + HuMemDirectFree(ptr); + } +} + +void HuDataCloseMulti(void **ptrs) +{ + int i; + for(i=0; ptrs[i]; i++) { + void *ptr = ptrs[i]; + if(ptr) { + HuMemDirectFree(ptr); + } + } + if(ptrs) { + HuMemDirectFree(ptrs); + } +} + +void HuDataDirClose(s32 data_id) +{ + DataReadStat *read_stat; + int i; + s32 dir_id = data_id >> 16; + for(i=0; i= DATA_MAX_READSTAT) { + return; + } + read_stat = &ReadDataStat[i]; + if(read_stat->status == 1) { + OSPanic("data.c", 812, "data.c: Async Close Error\n"); + } + read_stat->dir_id = -1; + HuDvdDataClose(read_stat->dir); + read_stat->dir = NULL; + read_stat->used = FALSE; + read_stat->status = 0; +} + +void HuDataDirCloseNum(s32 num) +{ + int i; + for(i=0; ilength; + DirDataSize = len; + if(mode == 1) { + buf = HuMemDirectMallocNum(heap, OSRoundUp32B(len), num); + } else { + buf = HuMemDirectMalloc(heap, OSRoundUp32B(len)); + } + if(!buf) { + OSReport("dvd.c: Memory Allocation Error (Length %x) (mode %d)\n", len, mode); + OSReport("Rest Memory %x\n", HuMemHeapSizeGet(3)-HuMemUsedMallocSizeGet(3)); + OSPanic("dvd.c", 75, "\n"); + return NULL; + } + + DCInvalidateRange(buf, OSRoundUp32B(len)); + OSReport("Rest Memory %x\n", HuMemHeapSizeGet(3)-HuMemUsedMallocSizeGet(3)); + CallBackStatus = 0; + DVDReadAsync(file, buf, OSRoundUp32B(len), 0, cb); + if(!skip_wait) { + while(!CallBackStatus) { + HuDvdErrorWatch(); + } + HuDvdErrorWatch(); + } + + return buf; +} + +void *HuDvdDataRead(char *path) +{ + DVDFileInfo file; + void *data = NULL; + if(!DVDOpen(path, &file)) { + OSPanic("dvd.c", 146, "dvd.c: File Open Error"); + } else { + data = HuDvdDataReadWait(&file, HEAP_DVD, 0, 0, HuDVDReadAsyncCallBack, FALSE); + DVDClose(&file); + } + return data; +} + +void **HuDvdDataReadMulti(char **paths) +{ + DVDFileInfo file; + int i; + u32 count; + void **file_ptrs; + count = 0; + while(paths[count]) { + count++; + } + file_ptrs = HuMemDirectMalloc(0, count*sizeof(void *)); + for(i=0; ifile_info)) { + OSPanic("dvd.c", 274, "dvd.c: File Open Error"); + } else { + data = HuDvdDataReadWait(&stat->file_info, HEAP_DVD, 0, 0, HuDataDirReadAsyncCallBack, TRUE); + } + return data; +} + +void HuDvdDataClose(void *ptr) +{ + if(ptr) { + HuMemDirectFree(ptr); + } +} + +void HuDvdErrorWatch() +{ + int status = DVDGetDriveStatus(); + if(status == beforeDvdStatus) { + return; + } + beforeDvdStatus = status; + switch(status+1) { + case 0: + OSReport("DVD ERROR:Fatal error occurred\n***HALT***"); + while(1); + break; + + case 5: + OSReport("DVD ERROR:No disk\n"); + break; + + case 6: + OSReport("DVD ERROR:Cover open\n"); + break; + + case 7: + OSReport("DVD ERROR:Wrong disk\n"); + break; + + case 12: + OSReport("DVD ERROR:Please retry\n"); + break; + + default: + break; + } +} \ No newline at end of file diff --git a/src/game/font.c b/src/game/font.c new file mode 100644 index 00000000..4bed64f4 --- /dev/null +++ b/src/game/font.c @@ -0,0 +1 @@ +#include "ank8x8_4b.inc" \ No newline at end of file diff --git a/src/game/init.c b/src/game/init.c new file mode 100644 index 00000000..2c54b1ef --- /dev/null +++ b/src/game/init.c @@ -0,0 +1,274 @@ +#include "common.h" +#include "dolphin/os.h" +#include "dolphin/gx.h" +#include "dolphin/dvd.h" +#include "dolphin/vi.h" +#include "dolphin/pad.h" + +struct memory_info { + void *start; + void *end; +}; + +extern void HuAudInit(); +extern void HuCardInit(); +extern void HuARInit(); +extern u32 frand(); +extern void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode); +extern void HuFaultSetXfbAddress(int fb, void *addr); + +static GXRenderModeObj rmodeobj; + +static BOOL FirstFrame = TRUE; +GXRenderModeObj *RenderMode; +OSHeapHandle currentHeapHandle; +static void *DefaultFifo; +static GXFifoObj *DefaultFifoObj; +void *DemoFrameBuffer1; +void *DemoFrameBuffer2; +void *DemoCurrentBuffer; +u32 minimumVcount; +float minimumVcountf; +u32 worstVcount; +static BOOL DemoStatEnable; + + +static void InitRenderMode(GXRenderModeObj *mode); +static void InitMem(); +static void InitGX(); +static void InitVI(); +static void SwapBuffers(); +static void LoadMemInfo(); + +void HuSysInit(GXRenderModeObj *mode) +{ + u32 rnd_temp; + OSInit(); + DVDInit(); + VIInit(); + PADInit(); + if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { + mode = &GXNtsc480Prog; + } + InitRenderMode(mode); + InitMem(); + VIConfigure(RenderMode); + VIConfigurePan(0, 0, 640, 480); + DefaultFifo = OSAlloc(0x100000); + DefaultFifoObj = GXInit(DefaultFifo, 0x100000); + InitGX(); + InitVI(); + HuFaultInitXfbDirectDraw(RenderMode); + HuFaultSetXfbAddress(0, DemoFrameBuffer1); + HuFaultSetXfbAddress(1, DemoFrameBuffer2); + HuDvdErrDispInit(RenderMode, DemoFrameBuffer1, DemoFrameBuffer2); + rnd_temp = frand(); + HuMemInitAll(); + HuAudInit(); + HuARInit(); + minimumVcount = minimumVcountf = 1.0f; + worstVcount = 0; + OSInitFastCast(); + HuCardInit(); +} + +static void InitRenderMode(GXRenderModeObj *mode) +{ + if(mode != NULL) { + RenderMode = mode; + return; + } + switch(VIGetTvFormat()) { + case 0: + RenderMode = &GXNtsc480IntDf; + break; + + case 1: + RenderMode = &GXPal528IntDf; + break; + + case 2: + RenderMode = &GXMpal480IntDf; + break; + + default: + OSPanic("init.c", 169, "DEMOInit: invalid TV format\n"); + break; + } + GXAdjustForOverscan(RenderMode, &rmodeobj, 0, 16); + RenderMode = &rmodeobj; +} + +static void InitGX() +{ + GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); + GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + GXSetDispCopySrc(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + GXSetDispCopyDst(RenderMode->fbWidth, RenderMode->xfbHeight); + GXSetDispCopyYScale((float)RenderMode->xfbHeight/(float)RenderMode->efbHeight); + GXSetCopyFilter(RenderMode->aa, RenderMode->sample_pattern, GX_TRUE, RenderMode->vfilter); + if(RenderMode->aa) { + GXSetPixelFmt(GX_PF_RGB565_Z16, GX_ZC_LINEAR); + } else { + GXSetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR); + } + GXCopyDisp(DemoCurrentBuffer, GX_TRUE); + GXSetDispCopyGamma(GX_GM_1_0); +} + +static void InitMem() +{ + void *arena_lo = OSGetArenaLo(); + void *arena_hi = OSGetArenaHi(); + u32 fb_size = (u16)(((u16)RenderMode->fbWidth+15) & ~15)*RenderMode->xfbHeight*2; + DemoFrameBuffer1 = (void *)OSRoundUp32B((u32)arena_lo); + DemoFrameBuffer2 = (void *)OSRoundUp32B((u32)DemoFrameBuffer1+fb_size); + DemoCurrentBuffer = DemoFrameBuffer2; + arena_lo = (void *)OSRoundUp32B((u32)DemoFrameBuffer2+fb_size); + OSSetArenaLo(arena_lo); + if(OSGetConsoleType() == OS_CONSOLE_DEVHW1 && OSGetPhysicalMemSize() != 0x400000 && OSGetConsoleSimulatedMemSize() < 0x1800000) { + LoadMemInfo(); + } else { + arena_lo = OSGetArenaLo(); + arena_hi = OSGetArenaHi(); + arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); + OSSetArenaLo(arena_lo); + arena_lo = (void *)OSRoundUp32B((u32)arena_lo); + arena_hi = (void *)OSRoundDown32B((u32)arena_hi); + OSSetCurrentHeap(currentHeapHandle = OSCreateHeap(arena_lo, arena_hi)); + arena_lo = arena_hi; + OSSetArenaLo(arena_lo); + } +} + +static void InitVI() +{ + u32 interlace; + VISetNextFrameBuffer(DemoFrameBuffer1); + DemoCurrentBuffer = DemoFrameBuffer2; + VIFlush(); + VIWaitForRetrace(); + interlace = RenderMode->viTVmode & 0x1; + if(interlace) { + VIWaitForRetrace(); + } +} + +void HuSysBeforeRender() +{ + if(RenderMode->field_rendering) { + GXSetViewportJitter(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1, VIGetNextField()); + } else { + GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); + } + GXInvalidateVtxCache(); + GXInvalidateTexAll(); +} + +void HuSysDoneRender(s32 retrace_count) +{ + int retrace_dist; + if(DemoStatEnable) { + GXDrawDone(); + DEMOUpdateStats(1); + DEMOPrintStats(); + GXDrawDone(); + DEMOUpdateStats(0); + } + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetColorUpdate(GX_TRUE); + GXDrawDone(); + GXCopyDisp(DemoCurrentBuffer, GX_TRUE); + if(minimumVcount != 0) { + retrace_dist = VIGetRetraceCount()-retrace_count; + if(worstVcount < retrace_dist) { + worstVcount = retrace_dist; + } + while(VIGetRetraceCount()-retrace_count < minimumVcount-1) { + VIWaitForRetrace(); + } + } + SwapBuffers(); +} + +static void SwapBuffers() +{ + VISetNextFrameBuffer(DemoCurrentBuffer); + if(FirstFrame) { + VISetBlack(GX_FALSE); + FirstFrame = FALSE; + } + VIFlush(); + VIWaitForRetrace(); + if(DemoCurrentBuffer == DemoFrameBuffer1) { + DemoCurrentBuffer = DemoFrameBuffer2; + } else { + DemoCurrentBuffer = DemoFrameBuffer1; + } +} + +static void LoadMemInfo() +{ + u32 size; + u32 copy_size; + u32 offset; + u32 entries; + u32 i; + void *arena_lo; + void *arena_hi; + void *alloc_max; + void *alloc_min; + + struct memory_info *buf_ptr; + DVDFileInfo file; + char buf[240]; + + OSReport("\nNow, try to find memory info file...\n\n"); + if(!DVDOpen("/meminfo.bin", &file)) { + OSReport("\nCan't find memory info file. Use /XXX toolname/ to maximize available\n"); + OSReport("memory space. For now, we only use the first %dMB.\n", (OSGetConsoleSimulatedMemSize()/1024)/1024); + arena_lo = OSGetArenaLo(); + arena_hi = OSGetArenaHi(); + arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); + OSSetArenaLo(arena_lo); + arena_lo = (void *)OSRoundUp32B((u32)arena_lo); + arena_hi = (void *)OSRoundDown32B((u32)arena_hi); + OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); + arena_lo = arena_hi; + OSSetArenaLo(arena_lo); + } else { + buf_ptr = (struct memory_info *)OSRoundUp32B((u32)buf); + alloc_max = OSGetArenaHi(); + alloc_min = (void *)(OSGetConsoleSimulatedMemSize()+0x80000000); + OSSetArenaHi((void *)(OSGetPhysicalMemSize()+0x80000000)); + arena_lo = OSGetArenaLo(); + arena_hi = OSGetArenaHi(); + arena_lo = OSInitAlloc(arena_lo, arena_hi, 1); + OSSetArenaLo(arena_lo); + arena_lo = (void *)OSRoundUp32B((u32)arena_lo); + arena_hi = (void *)OSRoundDown32B((u32)arena_hi); + OSSetCurrentHeap(OSCreateHeap(arena_lo, arena_hi)); + arena_lo = arena_hi; + OSSetArenaLo(arena_lo); + OSAllocFixed(&alloc_max, &alloc_min); + size = file.length; + offset = 0; + while(size) { + OSReport("loop\n"); + copy_size = (size < 32) ? size : 32; + if(DVDRead(&file, buf_ptr, OSRoundUp32B(copy_size), offset) < 0) { + OSPanic("init.c", 576, "An error occurred when issuing read to /meminfo.bin\n"); + } + entries = copy_size/sizeof(struct memory_info); + for(i=0; i Failed OSAlloc Size:%d\n", HeapSizeTbl[i]); return; @@ -19,7 +19,7 @@ void HuMemInitAll(void) } free_size = OSCheckHeap(currentHeapHandle); OSReport("HuMem> left memory space %dKB(%d)\n", free_size/1024, free_size); - ptr = OSAllocFromHeap(__OSCurrHeap, free_size); + ptr = OSAlloc(free_size); if(ptr == NULL) { OSReport("HuMem> Failed OSAlloc left space\n"); return; @@ -39,12 +39,12 @@ void HuMemDCFlushAll() HuMemDCFlush(0); } -void HuMemDCFlush(int heap) +void HuMemDCFlush(HeapID heap) { DCFlushRangeNoSync(HeapTbl[heap], HeapSizeTbl[heap]); } -void *HuMemDirectMalloc(int heap, s32 size) +void *HuMemDirectMalloc(HeapID heap, s32 size) { register u32 retaddr; asm { @@ -54,7 +54,7 @@ void *HuMemDirectMalloc(int heap, s32 size) return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr); } -void *HuMemDirectMallocNum(int heap, s32 size, u32 num) +void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num) { register u32 retaddr; asm { @@ -73,7 +73,7 @@ void HuMemDirectFree(void *ptr) HuMemMemoryFree(ptr, retaddr); } -void HuMemDirectFreeNum(int heap, u32 num) +void HuMemDirectFreeNum(HeapID heap, u32 num) { register u32 retaddr; asm { @@ -82,22 +82,22 @@ void HuMemDirectFreeNum(int heap, u32 num) HuMemMemoryFreeNum(HeapTbl[heap], num, retaddr); } -s32 HuMemUsedMallocSizeGet(int heap) +s32 HuMemUsedMallocSizeGet(HeapID heap) { return HuMemUsedMemorySizeGet(HeapTbl[heap]); } -s32 HuMemUsedMallocBlockGet(int heap) +s32 HuMemUsedMallocBlockGet(HeapID heap) { return HuMemUsedMemoryBlockGet(HeapTbl[heap]); } -u32 HuMemHeapSizeGet(int heap) +u32 HuMemHeapSizeGet(HeapID heap) { return HeapSizeTbl[heap]; } -void *HuMemHeapPtrGet(int heap) +void *HuMemHeapPtrGet(HeapID heap) { return HeapTbl[heap]; } \ No newline at end of file diff --git a/src/game/objmain.c b/src/game/objmain.c new file mode 100644 index 00000000..418f45cb --- /dev/null +++ b/src/game/objmain.c @@ -0,0 +1,563 @@ +#include "common.h" + +#define OM_OVL_HIS_MAX 16 +#define OM_MAX_GROUPS 10 + +typedef struct om_obj_group { + u16 next_idx; + u16 max_objs; + u16 num_objs; + u16 *next; + omObjData **obj; +} omObjGroup; + +typedef struct om_obj_man { + s16 max_objs; + s16 num_objs; + s16 next_idx; + s16 obj_last; + s16 obj_first; + s16 unkA; + omObjData *obj; + omObjGroup *group; +} omObjMan; + +omObjData *omDBGSysKeyObj; +Process *omwatchproc; +OverlayID omnextovl; +OverlayID omcurovl; +int omcurdll; +int omovlhisidx; +int omovlevtno; +int omnextovlevtno; +int omovlstat; +static int omnextovlstat; +char omUPauseFlag; +s16 omSysExitReq; +s16 omdispinfo; + +static omOvlHisData omovlhis[OM_OVL_HIS_MAX]; + +char omSysPauseEnableFlag = TRUE; +OverlayID omprevovl = OVL_INVALID; + +static void omWatchOverlayProc(void); +static void omInsertObj(Process *objman_process, omObjData *object); + +void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl) +{ + omDLLInit(ovl_list); + omwatchproc = HuPrcCreate(omWatchOverlayProc, prio, 8192, 0); + HuPrcSetStat(omwatchproc, 12); + omcurovl = OVL_INVALID; + omovlhisidx = -1; + omOvlCallEx(start_ovl, 1, 0, 0); + omDBGSysKeyObj = NULL; + omSysPauseEnable(TRUE); +} + +static void omWatchOverlayProc(void) +{ + while(1) { + if(omcurovl == OVL_INVALID) { + if(omnextovl >= 0 && fadeStat == 0) { + HuPrcSleep(0); + OSReport("++++++++++++++++++++ Start New OVL %d (EVT:%d STAT:0x%08x) ++++++++++++++++++\n", omnextovl, omnextovlevtno, omnextovlstat); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); + OSReport("objman>Used Memory Size:%08x\n", HuMemUsedMallocSizeGet(HEAP_SYSTEM)); + OSReport("objman>Used Memory Cnt:%d\n", HuMemUsedMallocBlockGet(HEAP_SYSTEM)); + OSReport("objman>Init esp\n"); + espInit(); + OSReport("objman>Call objectsetup\n"); + fn_800338EC(omnextovl); + HuAudDllSndGrpSet(omnextovl); + omcurovl = omnextovl; + omovlevtno = omnextovlevtno; + omovlstat = omnextovlstat; + omnextovl = OVL_INVALID; + if(_CheckFlag(0x1000C)) { + fn_8003F3AC(); + } + omSysPauseEnable(TRUE); + omcurdll = omDLLStart(omcurovl, 0); + OSReport("objman>ObjectSetup end\n"); + if(omcurovl != OVL_INVALID) { + goto watch_child; + } else { + continue; + } + } else { + HuPrcVSleep(); + } + } else { + watch_child: + HuPrcChildWatch(); + } + } +} + +void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat) +{ + OSReport("objman>Call New Ovl %d(%d)\n", overlay, arg2); + if(omovlhisidx >= OM_OVL_HIS_MAX) { + OSReport("objman>OVL Call over error\n"); + return; + } + omovlhis[++omovlhisidx].overlay = overlay; + omovlhis[omovlhisidx].event = event; + omovlhis[omovlhisidx].stat = stat; + omOvlGotoEx(overlay, arg2, event, stat); +} + +void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat) +{ + omprevovl = omcurovl; + if(omcurovl >= 0) { + omOvlKill(arg2); + } + omnextovl = overlay; + omnextovlevtno = event; + omnextovlstat = stat; +} + +void omOvlReturnEx(s16 level, s16 arg2) +{ + omovlhisidx -= level; + OSReport("objman>Ovl Return %d=%d(%d)\n", level, omovlhisidx, arg2); + if(omovlhisidx < 0) { + OSReport("objman>OVL under error\n"); + omovlhisidx = 0; + } + omOvlGotoEx(omovlhis[omovlhisidx].overlay, arg2, omovlhis[omovlhisidx].event, omovlhis[omovlhisidx].stat); +} + +void omOvlKill(s16 arg) +{ + fn_8004D6F4(-1); + fn_80035A0C(); + Hu3DAllKill(); + HuWinAllKill(); + HuSprClose(); + HuPrcChildKill(omwatchproc); + HuMemDirectFreeNum(HEAP_SYSTEM, 0x10000000); + HuDataDirCloseNum(0x10000000); + HuMemDirectFreeNum(HEAP_DVD, 0x10000000); + HuMemDirectFreeNum(HEAP_DATA, 0x10000000); + HuPadRumbleAllStop(); + HuAudFXListnerKill(); + OSReport("OvlKill %d\n", arg); + omSysExitReq = FALSE; + omDLLNumEnd(omcurovl, arg); + omcurovl = OVL_INVALID; + omDBGSysKeyObj = NULL; +} + +void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat) +{ + omOvlHisData *history; + if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + OSReport("objman> omOvlHisChg: overlay 実行履歴の範囲外を変更しようとしました\n"); + return; + } + history = &omovlhis[omovlhisidx-level]; + history->overlay = overlay; + history->event = event; + history->stat = stat; +} + +omOvlHisData *omOvlHisGet(s32 level) +{ + if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { + OSReport("objman> omOvlHisGet: overlay 実行履歴の範囲外を参照しようとしました\n"); + return NULL; + } + return &omovlhis[omovlhisidx-level]; +} + +Process *omInitObjMan(s16 max_objs, int prio) +{ + omObjGroup *group_all; + omObjData *obj_all; + omObjData *obj; + int i; + omObjMan *objman; + Process *process; + OSReport("objman>InitObjMan start\n"); + max_objs += 2; + omSysExitReq = FALSE; + process = HuPrcChildCreate(omMain, prio, 16384, 0, omwatchproc); + HuPrcSetStat(process, 12); + objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), 0x10000000); + objman->max_objs = max_objs; + process->user_data = objman; + process->dtor = omDestroyObjMan; + objman->num_objs = 0; + objman->next_idx = 0; + objman->obj_last = -1; + objman->obj_first = -1; + obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), 0x10000000); + objman->obj = obj_all; + group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), 0x10000000); + objman->group = group_all; + for(i=0; istat = 1; + obj->prio = obj->prev =obj->next = -1; + obj->unk10 = 0; + obj->trans.x = obj->trans.y = obj->trans.z = obj->rot.x = obj->rot.y = obj->rot.z = 0.0f; + obj->scale.x = obj->scale.y = obj->scale.z = 1.0f; + obj->model = obj->motion = NULL; + obj->func = obj->data = NULL; + obj->next_idx = i+1; + obj->mtncnt = 0; + obj->motion = NULL; + } + for(i=0; iInitObjMan end\n"); + omUPauseFlag = FALSE; + HuPrcAllUPause(0); + return process; +} + +void omDestroyObjMan(void) +{ + Process *process = HuPrcCurrentGet(); + omObjMan *objman = process->user_data; + objman->obj_last = -1; + OSReport("objman>Destory ObjMan\n"); +} + +omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *)) +{ + int i; + omObjData *object; + s16 next_idx; + omObjMan *objman = objman_process->user_data; + omObjData *obj_base = objman->obj; + if(objman->num_objs == objman->max_objs) { + return NULL; + } + next_idx = objman->next_idx; + object = &obj_base[next_idx]; + object->next_idx_alloc = next_idx; + object->prio = prio; + omInsertObj(objman_process, object); + if(mdlcnt) { + object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), 0x10000000); + object->mdlcnt = mdlcnt; + for(i=0; imodel[i] = -1; + } + } else { + object->model = NULL; + object->mdlcnt = 0; + } + if(mtncnt) { + object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), 0x10000000); + object->mtncnt = mtncnt; + } else { + object->motion = NULL; + object->mtncnt = 0; + } + if(group >= 0) { + omAddMember(objman_process, group, object); + } else { + object->group = group; + object->group_idx = 0; + } + object->stat = 4; + object->unk10 = 0; + object->func = func; + object->work[0] = object->work[1] = object->work[2] = object->work[3] = 0; + objman->next_idx = object->next_idx; + objman->num_objs++; + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + omSetSca(object, 1.0f, 1.0f, 1.0f); + return object; +} + +static void omInsertObj(Process *objman_process, omObjData *object) +{ + omObjData *obj_new; + omObjMan *objman = objman_process->user_data; + omObjData *obj_all = objman->obj; + s16 next_idx_alloc = object->next_idx_alloc; + s16 prio = object->prio; + s16 obj_idx; + s16 prev_idx; + if(objman->obj_first == -1) { + object->prev = -1; + object->next = -1; + objman->obj_first = next_idx_alloc; + objman->obj_last = next_idx_alloc; + (void)objman; //HACK for matching + return; + } + for(obj_idx = objman->obj_first; obj_idx != -1; obj_idx = obj_new->next) { + obj_new = &obj_all[obj_idx]; + if(obj_new->prio <= prio) { + break; + } + prev_idx = obj_idx; + } + if(obj_idx != -1) { + object->prev = obj_new->prev; + object->next = obj_idx; + if(obj_new->prev != -1) { + obj_all[obj_new->prev].next = next_idx_alloc; + } else { + objman->obj_first = next_idx_alloc; + } + obj_new->prev = next_idx_alloc; + } else { + object->next = -1; + object->prev = prev_idx; + obj_new->next = next_idx_alloc; + objman->obj_last = next_idx_alloc; + } +} + +void omAddMember(Process *objman_process, u16 group, omObjData *object) +{ + omObjMan *objman = objman_process->user_data; + omObjGroup *group_ptr = &objman->group[group]; + if(group_ptr->num_objs != group_ptr->max_objs) { + object->group = group; + object->group_idx = group_ptr->next_idx; + group_ptr->obj[group_ptr->next_idx] = object; + group_ptr->next_idx = group_ptr->next[group_ptr->next_idx]; + group_ptr->num_objs++; + } +} + +void omDelObjEx(Process *objman_process, omObjData *object) +{ + omObjMan *objman = objman_process->user_data; + omObjData *obj_all = objman->obj; + s16 next_idx_alloc = object->next_idx_alloc; + if(objman->num_objs == 0 || object->stat == 1) { + return; + } + objman->num_objs--; + if(object->group >= 0) { + omDelMember(objman_process, object); + } + if(object->motion != NULL) { + HuMemDirectFree(object->motion); + object->motion = NULL; + } + if(object->model != NULL) { + HuMemDirectFree(object->model); + object->model = NULL; + } + if(object->data != NULL) { + HuMemDirectFree(object->data); + object->data = NULL; + } + object->stat = 1; + if(object->next >= 0) { + obj_all[object->next].prev = object->prev; + } + if(object->prev >= 0) { + obj_all[object->prev].next = object->next; + } + if(objman->num_objs != 0) { + if(object->prev < 0) { + objman->obj_first = obj_all[object->next].next_idx_alloc; + } + if(object->next < 0) { + objman->obj_last = obj_all[object->prev].next_idx_alloc; + } + } else { + objman->obj_first = objman->obj_last = -1; + } + object->next_idx = objman->next_idx; + objman->next_idx = next_idx_alloc; +} + +void omDelMember(Process *objman_process, omObjData *object) +{ + if(object->group != -1) { + omObjMan *objman = objman_process->user_data; + omObjData *obj_all = objman->obj; + omObjGroup *group = &objman->group[object->group]; + group->obj[object->group_idx] = NULL; + group->next[object->group_idx] = group->next_idx; + group->next_idx = object->group_idx; + object->group = -1; + group->num_objs--; + } +} + +void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs) +{ + int i; + omObjMan *objman = objman_process->user_data; + omObjGroup *group_ptr = &objman->group[group]; + if(group_ptr->obj != NULL) { + HuMemDirectFree(group_ptr->obj); + } + if(group_ptr->next != NULL) { + HuMemDirectFree(group_ptr->next); + } + group_ptr->next_idx = 0; + group_ptr->max_objs = max_objs; + group_ptr->num_objs = 0; + group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), 0x10000000); + group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), 0x10000000); + for(i=0; iobj[i] = NULL; + group_ptr->next[i] = i+1; + } +} + +omObjData **omGetGroupMemberListEx(Process *objman_process, s16 group) +{ + omObjMan *objman = objman_process->user_data; + return objman->group[group].obj; +} + +void omSetStatBit(omObjData *obj, u16 stat) +{ + obj->stat |= stat; +} + +void omResetStatBit(omObjData *obj, u16 stat) +{ + obj->stat &= ~stat; +} + +void omSetTra(omObjData *obj, float x, float y, float z) +{ + obj->trans.x = x; + obj->trans.y = y; + obj->trans.z = z; +} + +void omSetRot(omObjData *obj, float x, float y, float z) +{ + obj->rot.x = x; + obj->rot.y = y; + obj->rot.z = z; +} + +void omSetSca(omObjData *obj, float x, float y, float z) +{ + obj->scale.x = x; + obj->scale.y = y; + obj->scale.z = z; +} + +void omMain(void) +{ + Process *process = HuPrcCurrentGet(); + omObjMan *objman = process->user_data; + omObjData *obj_all = objman->obj; + omObjData *object; + s16 obj_index; + omDLLDBGOut(); + while(1) { + if(omdispinfo) { + float scale = 1.5f; + GXColor color; + color.a = 96; + color.r = 0; + color.g = 0; + color.b = 255; + printWin(7, 23, 128*scale, 40*scale, &color); + fontcolor = 14; + print8(8, 24, scale, "\xFD\x01H:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemUsedMallocBlockGet(HEAP_SYSTEM)); + print8(8, 24+(8*scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA)); + print8(8, 24+(16*scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs); + print8(8, 24+(24*scale), scale, "\xFD\x01OVL:%ld(%ld<%ld)", omovlhisidx, omcurovl, omprevovl); + print8(8, 24+(32*scale), scale, "\xFD\x01POL:%ld", totalPolyCnted); + } + obj_index = objman->obj_last; + while(obj_index != -1) { + object = &obj_all[obj_index]; + obj_index = object->prev; + if((object->stat & 0x3) == 0) { + if(object->func != NULL && (object->stat & 0x58) == 0) { + object->func(object); + } + if(omcurovl == -1 || objman->obj_last == -1) { + break; + } + if((object->stat & 0x3) == 0) { + if((obj_all[obj_index].stat & 0x3) != 0) { + obj_index = object->prev; + } + if(object->model != NULL && object->model[0] != -1 && !(object->stat & 0x100)) { + Hu3DModelPosSet(object->model[0], object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[0], object->rot.x, object->rot.y, object->rot.z); + Hu3DModelScaleSet(object->model[0], object->scale.x, object->scale.y, object->scale.z); + } + } + } + } + HuPrcVSleep(); + } +} + +//Dummy function to force string literals in binary +static void omDumpObj(Process *objman_process) +{ + omObjMan *objman = objman_process->user_data; + omObjData *obj_all = objman->obj; + int i; + OSReport("=================== 現在登録されている OBJECT ==================\n"); + OSReport("STAT PRI GRPN MEMN PROG (TRA) (ROT) (SCA) mdlcnt mtncnt work[0] work[1] work[2] work[3] *data\n"); + for(i=0; imax_objs; i++) { + omObjData *object = &obj_all[i]; + OSReport("%04d:%04X %04X %d %d %08X (%.2f %.2f %.2f) (%.2f %.2f %.2f) (%.2f %.2f %.2f) %d %d %08X %08X %08X %08X %08X\n", + object->stat, object->stat, object->prio, object->group, object->unk10, object->func, + object->trans.x, object->trans.y, object->trans.z, + object->rot.x, object->rot.y, object->rot.z, + object->scale.x, object->scale.y, object->scale.z, + object->mdlcnt, object->mtncnt, object->work[0], object->work[1], object->work[2], object->work[3], object->data); + } + OSReport("================================================================\n"); +} + +void omAllPause(BOOL pause) +{ + Process *objman_process = HuPrcCurrentGet(); + omObjMan *objman = objman_process->user_data; + int i; + if(pause) { + for(i=0; imax_objs; i++) { + if((objman->obj[i].stat & 0x21) == 0) { + omSetStatBit(&objman->obj[i], 0x10); + } + } + } else { + for(i=0; imax_objs; i++) { + if((objman->obj[i].stat & 0x21) == 0) { + omResetStatBit(&objman->obj[i], 0x10); + } + } + } +} + +char omPauseChk(void) +{ + if(omDBGSysKeyObj == NULL) { + return 0; + } else { + return omDBGSysKeyObj->work[0] & 0x1; + } +} + +OverlayID omCurrentOvlGet(void) +{ + return omcurovl; +} \ No newline at end of file diff --git a/src/game/ovllist.c b/src/game/ovllist.c new file mode 100644 index 00000000..a4538483 --- /dev/null +++ b/src/game/ovllist.c @@ -0,0 +1,11 @@ +#include "common.h" + + +#define OVL_DEFINE(name, path) { path, 0 }, + +FileListEntry _ovltbl[OVL_COUNT+1] = { + #include "ovl_table.h" + { NULL, -1 } +}; + +#undef OVL_DEFINE \ No newline at end of file diff --git a/src/game/printfunc.c b/src/game/printfunc.c index 82adf6c2..a976be7e 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -1,28 +1,53 @@ #include "common.h" +#include "dolphin/mtx.h" #include "dolphin/gx.h" +#include "dolphin/vi.h" +#include "stdio.h" +#include "stdarg.h" + +extern u8 ank8x8_4b[]; struct strline_data { u16 type; - u16 last_idx; + u16 color; s16 x; s16 y; s16 w; s16 h; - s16 empty_line; + s16 empstrline_next; float scale; char str[80]; - GXColor color; + GXColor win_color; }; static struct strline_data strline[256]; static char pfStrBuf[256]; -BOOL saftyFrameF; -u16 strlinecnt; -u16 empstrline; int fontcolor; +u16 empstrline; +u16 strlinecnt; +BOOL saftyFrameF; -void pfClsScr(void); +static void WireDraw(void); + +static GXColor ATTRIBUTE_ALIGN(32) fcoltbl[16] = { + { 0, 0, 0, 255 }, + { 0, 0, 128, 255 }, + { 128, 0, 0, 255 }, + { 128, 0, 128, 255 }, + { 0, 128, 0, 255 }, + { 0, 128, 128, 255 }, + { 128, 128, 0, 255 }, + { 128, 128, 128, 255 }, + { 128, 128, 128, 128 }, + { 0, 0, 255, 255 }, + { 255, 0, 0, 255 }, + { 255, 0, 255, 255 }, + { 0, 255, 0, 255 }, + { 0, 255, 255, 255 }, + { 255, 255, 0, 255 }, + { 255, 255, 255, 255 } +}; void pfInit(void) { @@ -42,10 +67,286 @@ void pfClsScr(void) empstrline = 0; strlinecnt = 0; for (i = 0; i < 256; i++) { - strline[i].empty_line = i+1; + strline[i].empstrline_next = i+1; strline[i].type = 0; if (strline[i].str[0] != 0) { strline[i].str[0] = 0; } } -} \ No newline at end of file +} + +s16 print8(s16 x, s16 y, float scale, char *str, ...) +{ + struct strline_data *strline_curr; + char *src = pfStrBuf; + char *dst; + s16 ret; + va_list list; + strline_curr = &strline[empstrline]; + if(strlinecnt >= 256) { + return -1; + } + va_start(list, str); + vsprintf(pfStrBuf, str, list); + strlinecnt++; + ret = empstrline; + empstrline = strline_curr->empstrline_next; + strline_curr->type = 0; + strline_curr->color = fontcolor; + strline_curr->x = x; + strline_curr->y = y; + strline_curr->scale = scale; + dst = strline_curr->str; + while(*src) { + *dst++ = *src++; + } + *dst = 0; + va_end(list); + return ret; +} + +s16 printWin(s16 x, s16 y, s16 w, s16 h, GXColor *color) +{ + struct strline_data *strline_curr; + s16 ret; + char *src = pfStrBuf; + strline_curr = &strline[empstrline]; + if(strlinecnt >= 256) { + return -1; + } + strlinecnt++; + ret = empstrline; + empstrline = strline_curr->empstrline_next; + strline_curr->type = 1; + strline_curr->win_color.r = color->r; + strline_curr->win_color.g = color->g; + strline_curr->win_color.b = color->b; + strline_curr->win_color.a = color->a; + strline_curr->x = x; + strline_curr->y = y; + strline_curr->w = w; + strline_curr->h = h; + return ret; +} + +void pfDrawFonts(void) +{ + GXTexObj font_tex; + Mtx44 proj; + Mtx modelview; + int i; + s16 x, y, w, h; + + u16 strline_count = strlinecnt; + if(saftyFrameF) { + WireDraw(); + } + MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->efbHeight, 0, 1); + GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_CLR0, fcoltbl, sizeof(GXColor)); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GXInvalidateTexAll(); + GXInitTexObj(&font_tex, ank8x8_4b, 128, 128, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&font_tex, GX_NEAR, GX_NEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&font_tex, GX_TEXMAP0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_SPOT); + GXSetZCompLoc(GX_FALSE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetAlphaUpdate(GX_TRUE); + for(i=0; i<256; i++) { + x = strline[i].x; + y = strline[i].y; + if(strline[i].type == 1) { + w = strline[i].w; + h = strline[i].h; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_S16, 0); + GXSetTevColor(GX_TEVREG0, strline[i].win_color); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2s16(x, y); + GXPosition2s16(x+w, y); + GXPosition2s16(x+w, y+h); + GXPosition2s16(x, y+h); + GXEnd(); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_CLR0, fcoltbl, sizeof(GXColor)); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); + } else { + if(strline[i].str[0] != '\0') { + float shadow_ofs_x, shadow_ofs_y; + float char_w; + float char_h; + float texcoord_x, texcoord_y; + char *str; + u16 color; + s16 shadow_color; + float scale; + char_w = char_h = 8.0f*strline[i].scale; + str = strline[i].str; + color = strline[i].color; + shadow_color = -1; + scale = 1.0f; + while(*str) { + char c = *str++; + switch(c) { + case 255: + c = *str++; + scale = c/16.0f; + char_w = 8.0f*strline[i].scale*scale; + char_h = 8.0f*strline[i].scale*scale; + break; + + case 254: + color = (*str++)-1; + break; + + case 253: + shadow_color = (*str++)-1; + shadow_ofs_x = 1.3333333f*strline[i].scale*scale; + shadow_ofs_y = 1.3333333f*strline[i].scale*scale; + break; + + default: + texcoord_x = (c%16)/16.0f; + texcoord_y = ((c/16)/16.0f)+(1/128.0f); + if(shadow_color < 0) { + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3s16(x, y, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x, texcoord_y); + GXPosition3s16(x+char_w, y, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); + GXPosition3s16(x+char_w, y+char_h, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); + GXPosition3s16(x, y+char_h, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXEnd(); + } else { + GXBegin(GX_QUADS, GX_VTXFMT0, 8); + GXPosition3s16(x+shadow_ofs_x, y+shadow_ofs_y, 0); + GXColor1x8(shadow_color); + GXTexCoord2f32(texcoord_x, texcoord_y); + GXPosition3s16(x+char_w+shadow_ofs_x, y+shadow_ofs_y, 0); + GXColor1x8(shadow_color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); + GXPosition3s16(x+char_w+shadow_ofs_x, y+char_h+shadow_ofs_y, 0); + GXColor1x8(shadow_color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); + GXPosition3s16(x+shadow_ofs_x, y+char_h+shadow_ofs_y, 0); + GXColor1x8(shadow_color); + GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXPosition3s16(x, y, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x, texcoord_y); + GXPosition3s16(x+char_w, y, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y); + GXPosition3s16(x+char_w, y+char_h, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x+(1/16.0f), texcoord_y+(1/16.0f)); + GXPosition3s16(x, y+char_h, 0); + GXColor1x8(color); + GXTexCoord2f32(texcoord_x, texcoord_y+(1/16.0f)); + GXEnd(); + } + x += char_w; + if(x > 640) { + x = 0; + y += char_h; + } + break; + } + } + } + } + } +} + +static void WireDraw(void) +{ + Mtx44 proj; + Mtx modelview; + MTXOrtho(proj, 0, 480, 0, 576, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + if(RenderMode->field_rendering) { + GXSetViewportJitter(0, 0, 640, 480, 0, 1, VIGetNextField()); + } else { + GXSetViewport(0, 0, 640, 480, 0, 1); + } + GXSetScissor(0, 0, 640, 480); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXBegin(GX_LINES, 0, 8); + GXPosition2f32(16, 40); + GXColor3u8(255, 0, 0); + GXPosition2f32(16, 440); + GXColor3u8(255, 0, 0); + GXPosition2f32(16, 40); + GXColor3u8(255, 0, 0); + GXPosition2f32(560, 40); + GXColor3u8(255, 0, 0); + GXPosition2f32(560, 440); + GXColor3u8(255, 0, 0); + GXPosition2f32(560, 40); + GXColor3u8(255, 0, 0); + GXPosition2f32(560, 440); + GXColor3u8(255, 0, 0); + GXPosition2f32(16, 440); + GXColor3u8(255, 0, 0); + GXEnd(); +} diff --git a/src/game/process.c b/src/game/process.c index 36e062ba..7e84081d 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -70,7 +70,7 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) +HuMemMemoryAllocSizeGet(stack_size) +HuMemMemoryAllocSizeGet(extra_size); - if(!(heap = HuMemDirectMalloc(0, alloc_size))) { + if(!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { OSReport("process> malloc error size %d\n", alloc_size); return NULL; } diff --git a/tools/m2ctx.py b/tools/m2ctx.py old mode 100644 new mode 100755