diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 2b6aaec9..91fea830 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -738,6 +738,107 @@ dolphin/demo/DEMOStats.c: .sbss start:0x801D4488 end:0x801D44E8 .sdata2 start:0x801D63D8 end:0x801D63E8 +dolphin/pad/Padclamp.c: + .text start:0x800C3CDC end:0x800C3F14 + .sdata start:0x801D3910 end:0x801D3918 + +dolphin/pad/Pad.c: + .text start:0x800C3F14 end:0x800C59DC + .bss start:0x801A61B0 end:0x801A6200 + .sdata start:0x801D3918 end:0x801D3938 + .sbss start:0x801D44E8 end:0x801D4510 + +dolphin/ai.c: + .text start:0x800C59DC end:0x800C62B8 + .sbss start:0x801D4510 end:0x801D4550 + +dolphin/ar/ar.c: + .text start:0x800C62B8 end:0x800C6F68 + .sbss start:0x801D4550 end:0x801D4570 + +dolphin/ar/arq.c: + .text start:0x800C6F68 end:0x800C72FC + .sbss start:0x801D4570 end:0x801D4598 + +dolphin/dsp/dsp.c: + .text start:0x800C72FC end:0x800C7508 + .data start:0x8013D748 end:0x8013D780 + .sbss start:0x801D4598 end:0x801D45A0 + +dolphin/dsp/dsp_debug.c: + .text start:0x800C7508 end:0x800C7558 + +dolphin/dsp/dsp_task.c: + .text start:0x800C7558 end:0x800C7DDC + .data start:0x8013D780 end:0x8013D8C0 + .sbss start:0x801D45A0 end:0x801D45B8 + +dolphin/gx/GXInit.c: + .text start:0x800C7DDC end:0x800C8ECC + .bss start:0x801A6200 end:0x801A6778 + .sdata start:0x801D3938 end:0x801D3940 + .sbss start:0x801D45B8 end:0x801D45C8 + .sdata2 start:0x801D63E8 end:0x801D6408 + +dolphin/gx/GXFifo.c: + .text start:0x800C8ECC end:0x800C96F4 + .sbss start:0x801D45C8 end:0x801D45E8 + +dolphin/gx/GXAttr.c: + .text start:0x800C96F4 end:0x800CA51C + .data start:0x8013D8C0 end:0x8013D9E0 + .sdata start:0x801D3940 end:0x801D3950 + +dolphin/gx/GXMisc.c: + .text start:0x800CA51C end:0x800CAC40 + .sbss start:0x801D45E8 end:0x801D4600 + +dolphin/gx/GXGeometry.c: + .text start:0x800CAC40 end:0x800CB020 + +dolphin/gx/GXFrameBuf.c: + .text start:0x800CB020 end:0x800CBBD4 + .data start:0x8013D9E0 end:0x8013DB10 + .sdata2 start:0x801D6408 end:0x801D6410 + +dolphin/gx/GXLight.c: + .text start:0x800CBBD4 end:0x800CC5C0 + .data start:0x8013DB10 end:0x8013DB30 + .sdata2 start:0x801D6410 end:0x801D6460 + +dolphin/gx/GXTexture.c: + .text start:0x800CC5C0 end:0x800CD618 + .data start:0x8013DB30 end:0x8013DD58 + .sdata start:0x801D3950 end:0x801D3958 + .sdata2 start:0x801D6460 end:0x801D6488 + +dolphin/gx/GXBump.c: + .text start:0x800CD618 end:0x800CDE94 + .sdata2 start:0x801D6488 end:0x801D64A0 + +dolphin/gx/GXTev.c: + .text start:0x800CDE94 end:0x800CE8CC + .data start:0x8013DD58 end:0x8013DD80 + +dolphin/gx/GXPixel.c: + .text start:0x800CE8CC end:0x800CF014 + .data start:0x8013DD80 end:0x8013DDA0 + .sdata2 start:0x801D64A0 end:0x801D64D0 + +dolphin/gx/GXStubs.c: + .text start:0x800CF014 end:0x800CF018 + +dolphin/gx/GXDisplayList.c: + .text start:0x800CF018 end:0x800CF224 + +dolphin/gx/GXTransform.c: + .text start:0x800CF224 end:0x800CF9D8 + .sdata2 start:0x801D64D0 end:0x801D64F8 + +dolphin/gx/GXPerf.c: + .text start:0x800CF9D8 end:0x800D09A4 + .data start:0x8013DDA0 end:0x8013DEE8 + 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 b38ae2cf..81ce66bb 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -2571,9 +2571,9 @@ 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 +WriteMTXPS4x3 = .text:0x800CF4E4; // type:function size:0x34 scope:local +WriteMTXPS3x3from3x4 = .text:0x800CF518; // type:function size:0x34 scope:local +WriteMTXPS4x2 = .text:0x800CF54C; // type:function size:0x24 scope:local GXLoadPosMtxImm = .text:0x800CF570; // type:function size:0x3C GXLoadNrmMtxImm = .text:0x800CF5AC; // type:function size:0x40 GXSetCurrentMtx = .text:0x800CF5EC; // type:function size:0x3C @@ -5320,13 +5320,13 @@ 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 +GXEurgb60Hz480IntDf = .data:0x8013DAD0; // type:object size:0x3C 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 jumptable_8013DD18 = .data:0x8013DD18; // type:object size:0x3C scope:local -lbl_8013DD58 = .data:0x8013DD58; // type:object size:0x28 -lbl_8013DD80 = .data:0x8013DD80; // type:object size:0x20 +c2r$364 = .data:0x8013DD58; // type:object size:0x24 scope:local +p2f$194 = .data:0x8013DD80; // type:object size:0x20 scope:local jumptable_8013DDA0 = .data:0x8013DDA0; // type:object size:0x5C scope:local jumptable_8013DDFC = .data:0x8013DDFC; // type:object size:0x90 scope:local jumptable_8013DE8C = .data:0x8013DE8C; // type:object size:0x5C scope:local @@ -5564,9 +5564,11 @@ regs = .bss:0x801A6048; // type:object size:0x78 scope:local data:2byte shdwRegs = .bss:0x801A60C0; // type:object size:0x78 scope:local HorVer = .bss:0x801A6138; // type:object size:0x58 scope:local data:2byte fontTexObj = .bss:0x801A6190; // type:object size:0x20 scope:local -lbl_801A61B0 = .bss:0x801A61B0; // type:object size:0x10 -lbl_801A61C0 = .bss:0x801A61C0; // type:object size:0x40 +Type = .bss:0x801A61B0; // type:object size:0x10 scope:local +Origin = .bss:0x801A61C0; // type:object size:0x1E scope:local +CmdProbeDevice = .bss:0x801A61F0; // type:object size:0x10 scope:local gxData = .bss:0x801A6200; // type:object size:0x4F8 scope:local +FifoObj = .bss:0x801A66F8; // type:object size:0x80 lbl_801A6778 = .bss:0x801A6778; // type:object size:0x520 data:4byte lbl_801A6C98 = .bss:0x801A6C98; // type:object size:0x220 data:4byte lbl_801A6EB8 = .bss:0x801A6EB8; // type:object size:0x20 @@ -5898,19 +5900,19 @@ autoInvalidation = .sdata:0x801D38F0; // type:object size:0x4 scope:local data:4 @40 = .sdata:0x801D38FC; // type:object size:0x4 scope:local data:string @41 = .sdata:0x801D3900; // type:object size:0x3 scope:local data:string lbl_801D3908 = .sdata:0x801D3908; // type:object size:0x8 data:string -lbl_801D3910 = .sdata:0x801D3910; // type:object size:0x8 data:byte -lbl_801D3918 = .sdata:0x801D3918; // type:object size:0x4 data:4byte -lbl_801D391C = .sdata:0x801D391C; // type:object size:0x4 data:4byte -lbl_801D3920 = .sdata:0x801D3920; // type:object size:0x4 data:4byte -lbl_801D3924 = .sdata:0x801D3924; // type:object size:0x4 data:4byte -lbl_801D3928 = .sdata:0x801D3928; // type:object size:0x4 data:4byte -lbl_801D392C = .sdata:0x801D392C; // type:object size:0x4 -lbl_801D3930 = .sdata:0x801D3930; // type:object size:0x8 +ClampRegion = .sdata:0x801D3910; // type:object size:0x8 scope:local data:byte +ResettingChan = .sdata:0x801D3918; // type:object size:0x4 scope:local data:4byte +XPatchBits = .sdata:0x801D391C; // type:object size:0x4 scope:local data:4byte +AnalogMode = .sdata:0x801D3920; // type:object size:0x4 scope:local data:4byte +Spec = .sdata:0x801D3924; // type:object size:0x4 scope:local data:4byte +MakeStatus = .sdata:0x801D3928; // type:object size:0x4 scope:local data:4byte +CmdReadOrigin = .sdata:0x801D392C; // type:object size:0x4 scope:local +CmdCalibrate = .sdata:0x801D3930; // type:object size:0x4 scope:local gx = .sdata:0x801D3938; // type:object size:0x4 scope:global data:4byte -lbl_801D3940 = .sdata:0x801D3940; // type:object size:0x4 -lbl_801D3944 = .sdata:0x801D3944; // type:object size:0x4 -lbl_801D3948 = .sdata:0x801D3948; // type:object size:0x8 -lbl_801D3950 = .sdata:0x801D3950; // type:object size:0x8 +tbl1$215 = .sdata:0x801D3940; // type:object size:0x4 scope:local +tbl2$216 = .sdata:0x801D3944; // type:object size:0x4 scope:local +tbl3$217 = .sdata:0x801D3948; // type:object size:0x4 scope:local +GX2HWFiltConv = .sdata:0x801D3950; // type:object size:0x6 lbl_801D3958 = .sdata:0x801D3958; // type:object size:0x8 lbl_801D3960 = .sdata:0x801D3960; // type:object size:0x8 lbl_801D3968 = .sdata:0x801D3968; // type:object size:0x8 @@ -6632,71 +6634,66 @@ viReq = .sbss:0x801D44D8; // type:object size:0x4 scope:local data:4byte peReq = .sbss:0x801D44DC; // type:object size:0x4 scope:local data:4byte rfReq = .sbss:0x801D44E0; // type:object size:0x4 scope:local data:4byte fiReq = .sbss:0x801D44E4; // type:object size:0x4 scope:local data:4byte -lbl_801D44E8 = .sbss:0x801D44E8; // type:object size:0x4 data:4byte -lbl_801D44EC = .sbss:0x801D44EC; // type:object size:0x4 data:4byte -lbl_801D44F0 = .sbss:0x801D44F0; // type:object size:0x4 data:4byte -lbl_801D44F4 = .sbss:0x801D44F4; // type:object size:0x4 data:4byte -lbl_801D44F8 = .sbss:0x801D44F8; // type:object size:0x4 data:4byte -lbl_801D44FC = .sbss:0x801D44FC; // type:object size:0x4 data:4byte -lbl_801D4500 = .sbss:0x801D4500; // type:object size:0x4 data:4byte -lbl_801D4504 = .sbss:0x801D4504; // type:object size:0x4 data:4byte -lbl_801D4508 = .sbss:0x801D4508; // type:object size:0x4 data:4byte +Initialized = .sbss:0x801D44E8; // type:object size:0x4 scope:local data:4byte +EnabledBits = .sbss:0x801D44EC; // type:object size:0x4 scope:local data:4byte +ResettingBits = .sbss:0x801D44F0; // type:object size:0x4 scope:local data:4byte +RecalibrateBits = .sbss:0x801D44F4; // type:object size:0x4 scope:local data:4byte +WaitingBits = .sbss:0x801D44F8; // type:object size:0x4 scope:local data:4byte +CheckingBits = .sbss:0x801D44FC; // type:object size:0x4 scope:local data:4byte +PendingBits = .sbss:0x801D4500; // type:object size:0x4 scope:local data:4byte +SamplingCallback = .sbss:0x801D4504; // type:object size:0x4 scope:local data:4byte +recalibrated$397 = .sbss:0x801D4508; // type:object size:0x4 scope:local data:4byte __PADSpec = .sbss:0x801D450C; // type:object size:0x4 scope:global data:4byte -lbl_801D4510 = .sbss:0x801D4510; // type:object size:0x4 data:4byte -lbl_801D4514 = .sbss:0x801D4514; // type:object size:0x4 data:4byte -lbl_801D4518 = .sbss:0x801D4518; // type:object size:0x4 data:4byte -lbl_801D451C = .sbss:0x801D451C; // type:object size:0x4 data:4byte -lbl_801D4520 = .sbss:0x801D4520; // type:object size:0x8 data:4byte -lbl_801D4528 = .sbss:0x801D4528; // type:object size:0x4 data:4byte -lbl_801D452C = .sbss:0x801D452C; // type:object size:0x4 data:4byte -lbl_801D4530 = .sbss:0x801D4530; // type:object size:0x4 data:4byte -lbl_801D4534 = .sbss:0x801D4534; // type:object size:0x4 data:4byte -lbl_801D4538 = .sbss:0x801D4538; // type:object size:0x4 data:4byte -lbl_801D453C = .sbss:0x801D453C; // type:object size:0x4 data:4byte -lbl_801D4540 = .sbss:0x801D4540; // type:object size:0x4 data:4byte -lbl_801D4544 = .sbss:0x801D4544; // type:object size:0x4 data:4byte -lbl_801D4548 = .sbss:0x801D4548; // type:object size:0x4 data:4byte -lbl_801D454C = .sbss:0x801D454C; // type:object size:0x4 data:4byte -lbl_801D4550 = .sbss:0x801D4550; // type:object size:0x4 data:4byte -lbl_801D4554 = .sbss:0x801D4554; // type:object size:0x4 data:4byte -lbl_801D4558 = .sbss:0x801D4558; // type:object size:0x4 data:4byte -lbl_801D455C = .sbss:0x801D455C; // type:object size:0x4 data:4byte -lbl_801D4560 = .sbss:0x801D4560; // type:object size:0x4 data:4byte -lbl_801D4564 = .sbss:0x801D4564; // type:object size:0x4 data:4byte -lbl_801D4568 = .sbss:0x801D4568; // type:object size:0x4 data:4byte -lbl_801D456C = .sbss:0x801D456C; // type:object size:0x4 data:4byte -lbl_801D4570 = .sbss:0x801D4570; // type:object size:0x4 data:4byte -lbl_801D4574 = .sbss:0x801D4574; // type:object size:0x4 data:4byte -lbl_801D4578 = .sbss:0x801D4578; // type:object size:0x4 data:4byte -lbl_801D457C = .sbss:0x801D457C; // type:object size:0x4 data:4byte -lbl_801D4580 = .sbss:0x801D4580; // type:object size:0x4 data:4byte -lbl_801D4584 = .sbss:0x801D4584; // type:object size:0x4 data:4byte -lbl_801D4588 = .sbss:0x801D4588; // type:object size:0x4 data:4byte -lbl_801D458C = .sbss:0x801D458C; // type:object size:0x4 data:4byte -lbl_801D4590 = .sbss:0x801D4590; // type:object size:0x4 data:4byte -lbl_801D4594 = .sbss:0x801D4594; // type:object size:0x4 data:4byte -lbl_801D4598 = .sbss:0x801D4598; // type:object size:0x8 data:4byte -lbl_801D45A0 = .sbss:0x801D45A0; // type:object size:0x4 data:4byte -lbl_801D45A4 = .sbss:0x801D45A4; // type:object size:0x4 data:4byte -lbl_801D45A8 = .sbss:0x801D45A8; // type:object size:0x4 data:4byte -lbl_801D45AC = .sbss:0x801D45AC; // type:object size:0x4 data:4byte -lbl_801D45B0 = .sbss:0x801D45B0; // type:object size:0x4 data:4byte -lbl_801D45B4 = .sbss:0x801D45B4; // type:object size:0x4 data:4byte +__AIS_Callback = .sbss:0x801D4510; // type:object size:0x4 scope:local data:4byte +__AID_Callback = .sbss:0x801D4514; // type:object size:0x4 scope:local data:4byte +__CallbackStack = .sbss:0x801D4518; // type:object size:0x4 scope:local data:4byte +__OldStack = .sbss:0x801D451C; // type:object size:0x4 scope:local data:4byte +__AI_init_flag = .sbss:0x801D4520; // type:object size:0x4 scope:local data:4byte +bound_32KHz = .sbss:0x801D4528; // type:object size:0x8 scope:local align:8 data:4byte +bound_48KHz = .sbss:0x801D4530; // type:object size:0x8 scope:local align:8 data:4byte +min_wait = .sbss:0x801D4538; // type:object size:0x8 scope:local align:8 data:4byte +max_wait = .sbss:0x801D4540; // type:object size:0x8 scope:local align:8 data:4byte +buffer = .sbss:0x801D4548; // type:object size:0x8 scope:local align:8 data:4byte +__AR_Callback = .sbss:0x801D4550; // type:object size:0x4 scope:local data:4byte +__AR_Size = .sbss:0x801D4554; // type:object size:0x4 scope:local data:4byte +__AR_InternalSize = .sbss:0x801D4558; // type:object size:0x4 scope:local data:4byte +__AR_ExpansionSize = .sbss:0x801D455C; // type:object size:0x4 scope:local data:4byte +__AR_StackPointer = .sbss:0x801D4560; // type:object size:0x4 scope:local data:4byte +__AR_FreeBlocks = .sbss:0x801D4564; // type:object size:0x4 scope:local data:4byte +__AR_BlockLength = .sbss:0x801D4568; // type:object size:0x4 scope:local data:4byte +__AR_init_flag = .sbss:0x801D456C; // type:object size:0x4 scope:local data:4byte +__ARQRequestQueueHi = .sbss:0x801D4570; // type:object size:0x4 scope:local data:4byte +__ARQRequestTailHi = .sbss:0x801D4574; // type:object size:0x4 scope:local data:4byte +__ARQRequestQueueLo = .sbss:0x801D4578; // type:object size:0x4 scope:local data:4byte +__ARQRequestTailLo = .sbss:0x801D457C; // type:object size:0x4 scope:local data:4byte +__ARQRequestPendingHi = .sbss:0x801D4580; // type:object size:0x4 scope:local data:4byte +__ARQRequestPendingLo = .sbss:0x801D4584; // type:object size:0x4 scope:local data:4byte +__ARQCallbackHi = .sbss:0x801D4588; // type:object size:0x4 scope:local data:4byte +__ARQCallbackLo = .sbss:0x801D458C; // type:object size:0x4 scope:local data:4byte +__ARQChunkSize = .sbss:0x801D4590; // type:object size:0x4 scope:local data:4byte +__ARQ_init_flag = .sbss:0x801D4594; // type:object size:0x4 scope:local data:4byte +__DSP_init_flag = .sbss:0x801D4598; // type:object size:0x8 scope:local data:4byte +__DSP_rude_task_pending = .sbss:0x801D45A0; // type:object size:0x4 data:4byte +__DSP_rude_task = .sbss:0x801D45A4; // type:object size:0x4 data:4byte +__DSP_tmp_task = .sbss:0x801D45A8; // type:object size:0x4 data:4byte +__DSP_last_task = .sbss:0x801D45AC; // type:object size:0x4 data:4byte +__DSP_first_task = .sbss:0x801D45B0; // type:object size:0x4 data:4byte +__DSP_curr_task = .sbss:0x801D45B4; // type:object size:0x4 data:4byte __piReg = .sbss:0x801D45B8; // type:object size:0x4 scope:global data:4byte __cpReg = .sbss:0x801D45BC; // type:object size:0x4 scope:global data:4byte __peReg = .sbss:0x801D45C0; // type:object size:0x4 scope:global data:4byte __memReg = .sbss:0x801D45C4; // type:object size:0x4 scope:global data:4byte -lbl_801D45C8 = .sbss:0x801D45C8; // type:object size:0x4 data:4byte -lbl_801D45CC = .sbss:0x801D45CC; // type:object size:0x4 data:4byte -lbl_801D45D0 = .sbss:0x801D45D0; // type:object size:0x4 data:4byte -lbl_801D45D4 = .sbss:0x801D45D4; // type:object size:0x1 data:byte -lbl_801D45D8 = .sbss:0x801D45D8; // type:object size:0x4 data:4byte -lbl_801D45DC = .sbss:0x801D45DC; // type:object size:0x4 data:4byte -lbl_801D45E0 = .sbss:0x801D45E0; // type:object size:0x8 data:4byte -lbl_801D45E8 = .sbss:0x801D45E8; // type:object size:0x4 data:4byte -lbl_801D45EC = .sbss:0x801D45EC; // type:object size:0x4 data:4byte -lbl_801D45F0 = .sbss:0x801D45F0; // type:object size:0x1 data:byte -lbl_801D45F4 = .sbss:0x801D45F4; // type:object size:0xC +CPUFifo = .sbss:0x801D45C8; // type:object size:0x4 scope:local data:4byte +GPFifo = .sbss:0x801D45CC; // type:object size:0x4 scope:local data:4byte +__GXCurrentThread = .sbss:0x801D45D0; // type:object size:0x4 scope:local data:4byte +CPGPLinked = .sbss:0x801D45D4; // type:object size:0x1 scope:local data:byte +GXOverflowSuspendInProgress = .sbss:0x801D45D8; // type:object size:0x4 scope:local data:4byte +BreakPointCB = .sbss:0x801D45DC; // type:object size:0x4 scope:local data:4byte +__GXOverflowCount = .sbss:0x801D45E0; // type:object size:0x4 scope:local data:4byte +TokenCB = .sbss:0x801D45E8; // type:object size:0x4 scope:local data:4byte +DrawDoneCB = .sbss:0x801D45EC; // type:object size:0x4 scope:local data:4byte +DrawDone = .sbss:0x801D45F0; // type:object size:0x1 scope:local data:byte +FinishQueue = .sbss:0x801D45F4; // type:object size:0x8 scope:local lbl_801D4600 = .sbss:0x801D4600; // type:object size:0x8 data:4byte lbl_801D4608 = .sbss:0x801D4608; // type:object size:0x4 data:4byte lbl_801D460C = .sbss:0x801D460C; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 2d59534d..55289681 100644 --- a/configure.py +++ b/configure.py @@ -388,6 +388,54 @@ config.libs = [ Object(NonMatching, "dolphin/demo/DEMOStats.c"), ], ), + DolphinLib( + "pad", + [ + Object(NonMatching, "dolphin/pad/Padclamp.c"), + Object(NonMatching, "dolphin/pad/Pad.c"), + ], + ), + DolphinLib( + "ai", + [ + Object(NonMatching, "dolphin/ai.c"), + ], + ), + DolphinLib( + "ar", + [ + Object(NonMatching, "dolphin/ar/ar.c"), + Object(NonMatching, "dolphin/ar/arq.c"), + ], + ), + DolphinLib( + "dsp", + [ + Object(NonMatching, "dolphin/dsp/dsp.c"), + Object(NonMatching, "dolphin/dsp/dsp_debug.c"), + Object(NonMatching, "dolphin/dsp/dsp_task.c"), + ], + ), + DolphinLib( + "gx", + [ + Object(NonMatching, "dolphin/gx/GXInit.c"), + Object(NonMatching, "dolphin/gx/GXFifo.c"), + Object(NonMatching, "dolphin/gx/GXAttr.c"), + Object(NonMatching, "dolphin/gx/GXMisc.c"), + Object(NonMatching, "dolphin/gx/GXGeometry.c"), + Object(NonMatching, "dolphin/gx/GXFrameBuf.c"), + Object(NonMatching, "dolphin/gx/GXLight.c"), + Object(NonMatching, "dolphin/gx/GXTexture.c"), + Object(NonMatching, "dolphin/gx/GXBump.c"), + Object(NonMatching, "dolphin/gx/GXTev.c"), + Object(NonMatching, "dolphin/gx/GXPixel.c"), + Object(NonMatching, "dolphin/gx/GXStubs.c"), + Object(NonMatching, "dolphin/gx/GXDisplayList.c"), + Object(NonMatching, "dolphin/gx/GXTransform.c"), + Object(NonMatching, "dolphin/gx/GXPerf.c"), + ], + ), { "lib": "Runtime.PPCEABI.H", "mw_version": config.linker_version, diff --git a/include/dolphin/gx/GXManage.h b/include/dolphin/gx/GXManage.h index ab3a72c8..f027d4ad 100644 --- a/include/dolphin/gx/GXManage.h +++ b/include/dolphin/gx/GXManage.h @@ -8,9 +8,13 @@ extern "C" { #endif typedef void (*GXDrawDoneCallback)(void); +typedef void (*GXDrawSyncCallback)(u16 token); GXFifoObj* GXInit(void* base, u32 size); GXDrawDoneCallback GXSetDrawDoneCallback(GXDrawDoneCallback cb); +void GXSetDrawSync(u16 token); +GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback callback); + void GXDrawDone(void); void GXSetDrawDone(void); void GXFlush(void); diff --git a/include/dolphin/gx/GXPerf.h b/include/dolphin/gx/GXPerf.h index c3850dc3..7f232fa6 100644 --- a/include/dolphin/gx/GXPerf.h +++ b/include/dolphin/gx/GXPerf.h @@ -2,12 +2,31 @@ #define _DOLPHIN_GXPERF #include +#include #ifdef __cplusplus extern "C" { #endif -void GXReadXfRasMetric(u32* xf_wait_in, u32* xf_wait_out, u32* ras_busy, u32* clocks); +extern void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1); +extern void GXClearGPMetric(); +extern void GXReadXfRasMetric(u32* xfWaitIn, u32* xfWaitOut, u32* rasBusy, u32* clocks); + +// Unused/inlined in P2. +extern void GXReadGPMetric(u32* count0, u32* count1); +extern u32 GXReadGP0Metric(); +extern u32 GXReadGP1Metric(); +extern void GXReadMemMetric(u32* cpReq, u32* tcReq, u32* cpuReadReq, u32* cpuWriteReq, u32* dspReq, u32* ioReq, u32* viReq, u32* peReq, + u32* rfReq, u32* fiReq); +extern void GXClearMemMetric(); +extern void GXReadPixMetric(u32* topIn, u32* topOut, u32* bottomIn, u32* bottomOut, u32* clearIn, u32* copyClocks); +extern void GXClearPixMetric(); +extern void GXSetVCacheMetric(GXVCachePerf attr); +extern void GXReadVCacheMetric(u32* check, u32* miss, u32* stall); +extern void GXClearVCacheMetric(); +extern void GXInitXfRasMetric(); +extern u32 GXReadClksPerVtx(); + #ifdef __cplusplus } diff --git a/src/game/perf.c b/src/game/perf.c index a10efa7a..39918db8 100644 --- a/src/game/perf.c +++ b/src/game/perf.c @@ -21,41 +21,31 @@ void OSStartStopwatch(void*); u64 OSCheckStopwatch(void*); void OSResetStopwatch(void*); void OSStopStopwatch(void*); -void GXSetDrawSync(s32); -void GXSetDrawSyncCallback(void*); -void GXReadGPMetric(s32*, s32*); -void GXReadMemMetric(s32*, s32*, s32*, s32*, s32*, s32*, s32*, s32*, s32*, s32*); -void GXReadPixMetric(s32*, s32*, s32*, s32*, s32*, s32*); -void GXReadVCacheMetric(s32*, s32*, s32*); -void GXClearGPMetric(void); -void GXClearMemMetric(void); -void GXClearPixMetric(void); -void GXClearVCacheMetric(void); static u8 Ssw[56]; static UnknownPerfStruct perf[10]; -static s32 met0; -static s32 met1; -static s32 vcheck; -static s32 vmiss; -static s32 vstall; -static s32 cp_req; -static s32 tc_req; -static s32 cpu_rd_req; -static s32 cpu_wr_req; -static s32 dsp_req; -static s32 io_req; -static s32 vi_req; -static s32 pe_req; -static s32 rf_req; -static s32 fi_req; -static s32 top_pixels_in; -static s32 top_pixels_out; -static s32 bot_pixels_in; -static s32 bot_pixels_out; -static s32 clr_pixels_in; -static s32 total_copy_clks; +static u32 met0; +static u32 met1; +static u32 vcheck; +static u32 vmiss; +static u32 vstall; +static u32 cp_req; +static u32 tc_req; +static u32 cpu_rd_req; +static u32 cpu_wr_req; +static u32 dsp_req; +static u32 io_req; +static u32 vi_req; +static u32 pe_req; +static u32 rf_req; +static u32 fi_req; +static u32 top_pixels_in; +static u32 top_pixels_out; +static u32 bot_pixels_in; +static u32 bot_pixels_out; +static u32 clr_pixels_in; +static u32 total_copy_clks; static s16 tokenEndF; static u8 metf;