From 981cfe7283c0a39b8d1845d8ba59f3bb1e192932 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Fri, 19 Jan 2024 16:22:19 -0800 Subject: [PATCH] almost all of dolphin matched (#2036) * TRK full match * remove trk asm * ar done * cleanup some dolphin headers * more dolphin cleanup * cleanup / GD fully matched * almost all of GX fully matched * GX / Mtx full matched * most of OS done * pad done * most of VI * remove asm * forgot couple vec funcs * couple JUtility matches --- .../Portable/msgbuf/TRKAppendBuffer.s | 47 - .../Portable/msgbuf/TRKAppendBuffer1_ui64.s | 69 - .../Portable/msgbuf/TRKAppendBuffer_ui32.s | 72 - .../Portable/msgbuf/TRKAppendBuffer_ui8.s | 32 - .../MetroTRK/Portable/msgbuf/TRKGetBuffer.s | 13 - .../Portable/msgbuf/TRKGetFreeBuffer.s | 56 - .../msgbuf/TRKInitializeMessageBuffers.s | 31 - .../MetroTRK/Portable/msgbuf/TRKReadBuffer.s | 39 - .../Portable/msgbuf/TRKReadBuffer1_ui64.s | 63 - .../Portable/msgbuf/TRKReadBuffer_ui32.s | 68 - .../Portable/msgbuf/TRKReadBuffer_ui8.s | 43 - .../Portable/msgbuf/TRKReleaseBuffer.s | 27 - .../MetroTRK/Portable/msgbuf/TRKResetBuffer.s | 18 - .../Portable/msgbuf/TRKSetBufferPosition.s | 15 - .../Os/dolphin/dolphin_trk/InitMetroTRK.s | 40 - .../Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s | 39 - .../Os/dolphin/dolphin_trk/TRK__read_aram.s | 85 - .../Os/dolphin/dolphin_trk/TRK__write_aram.s | 136 -- .../dolphin/dolphin_trk/__TRK_copy_vectors.s | 83 - .../dolphin_trk_glue/InitMetroTRKCommTable.s | 161 -- .../dolphin/dolphin_trk_glue/TRKLoadContext.s | 37 - .../dolphin_trk_glue/TRK_board_display.s | 13 - .../ppc/Generic/targimpl/ReadFPSCR.s | 10 - .../Generic/targimpl/TRKExceptionHandler.s | 42 - .../Generic/targimpl/TRKInterruptHandler.s | 104 - .../TRKInterruptHandlerEnableInterrupts.s | 22 - .../Generic/targimpl/TRKPostInterruptEvent.s | 50 - .../ppc/Generic/targimpl/TRKSwapAndGo.s | 51 - .../Generic/targimpl/TRKTargetAccessARAM.s | 53 - .../Generic/targimpl/TRKTargetAccessDefault.s | 67 - .../targimpl/TRKTargetAccessExtended1.s | 100 - .../targimpl/TRKTargetAccessExtended2.s | 281 --- .../ppc/Generic/targimpl/TRKTargetAccessFP.s | 350 ---- .../Generic/targimpl/TRKTargetAccessMemory.s | 88 - .../targimpl/TRKTargetAddExceptionInfo.s | 34 - .../Generic/targimpl/TRKTargetAddStopInfo.s | 36 - .../ppc/Generic/targimpl/TRKTargetInterrupt.s | 110 -- .../targimpl/TRKTargetReadInstruction.s | 21 - .../Generic/targimpl/TRKTargetSingleStep.s | 48 - .../targimpl/TRKTargetStepOutOfRange.s | 51 - .../targimpl/TRKTargetSupportRequest.s | 139 -- .../ppc/Generic/targimpl/TRKValidMemory32.s | 189 -- .../ppc/Generic/targimpl/TRK_ppc_memcpy.s | 18 - .../ppc/Generic/targimpl/WriteFPSCR.s | 10 - asm/dolphin/ar/ar/__ARChecksize.s | 1575 --------------- asm/dolphin/gd/GDGeometry/GDSetArray.s | 140 -- asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s | 139 -- asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s | 397 ---- asm/dolphin/gx/GXAttr/GXSetVtxDescv.s | 171 -- asm/dolphin/gx/GXAttr/__GXSetVCD.s | 51 - asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s | 96 - asm/dolphin/gx/GXFrameBuf/GXCopyTex.s | 107 - asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s | 41 - asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s | 159 -- asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s | 135 -- .../gx/GXFrameBuf/GXSetDispCopyYScale.s | 56 - asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s | 81 - asm/dolphin/gx/GXInit/GXInit.s | 401 ---- asm/dolphin/gx/GXInit/__GXInitGX.s | 612 ------ asm/dolphin/gx/GXLight/GXSetChanAmbColor.s | 67 - asm/dolphin/gx/GXLight/GXSetChanCtrl.s | 48 - asm/dolphin/gx/GXLight/GXSetChanMatColor.s | 67 - asm/dolphin/gx/GXLight/GXSetNumChans.s | 16 - asm/dolphin/gx/GXMisc/GXAbortFrame.s | 124 -- .../gx/GXMisc/GXFinishInterruptHandler.s | 34 - asm/dolphin/gx/GXMisc/GXPokeBlendMode.s | 27 - .../gx/GXMisc/GXTokenInterruptHandler.s | 36 - asm/dolphin/gx/GXMisc/__GXAbort.s | 99 - asm/dolphin/gx/GXPixel/GXSetFog.s | 146 -- asm/dolphin/gx/GXPixel/GXSetPixelFmt.s | 58 - asm/dolphin/gx/GXTev/GXSetTevColor.s | 25 - asm/dolphin/gx/GXTev/GXSetTevColorS10.s | 26 - asm/dolphin/gx/GXTev/GXSetTevKColor.s | 26 - asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s | 101 - .../gx/GXTexture/GXInitTexCacheRegion.s | 73 - asm/dolphin/gx/GXTexture/GXInitTexObj.s | 156 -- asm/dolphin/gx/GXTexture/GXInitTexObjCI.s | 19 - asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s | 100 - asm/dolphin/gx/GXTexture/GXInitTlutObj.s | 15 - asm/dolphin/gx/GXTexture/GXInitTlutRegion.s | 15 - asm/dolphin/gx/GXTexture/GXLoadTexObj.s | 22 - .../gx/GXTexture/GXLoadTexObjPreLoaded.s | 97 - asm/dolphin/gx/GXTexture/GXLoadTlut.s | 39 - asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s | 111 -- asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s | 218 --- .../gx/GXTexture/__GetImageTileCount.s | 58 - asm/dolphin/gx/GXTexture/__SetSURegs.s | 41 - asm/dolphin/gx/GXTransform/GXGetProjectionv.s | 21 - asm/dolphin/gx/GXTransform/GXGetScissor.s | 19 - asm/dolphin/gx/GXTransform/GXProject.s | 96 - asm/dolphin/gx/GXTransform/GXSetProjectionv.s | 38 - asm/dolphin/gx/GXTransform/__GXSetViewport.s | 37 - asm/dolphin/mtx/mtx/C_MTXLightOrtho.s | 35 - asm/dolphin/mtx/mtx/C_MTXLightPerspective.s | 52 - asm/dolphin/mtx/mtx/C_MTXLookAt.s | 100 - asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s | 29 - asm/dolphin/mtx/mtx/PSMTXRotRad.s | 29 - asm/dolphin/mtx/vec/C_VECHalfAngle.s | 57 - asm/dolphin/mtx/vec/C_VECReflect.s | 54 - asm/dolphin/mtx/vec/PSVECAdd.s | 10 - asm/dolphin/mtx/vec/PSVECCrossProduct.s | 16 - asm/dolphin/mtx/vec/PSVECDistance.s | 23 - asm/dolphin/mtx/vec/PSVECDotProduct.s | 9 - asm/dolphin/mtx/vec/PSVECMag.s | 19 - asm/dolphin/mtx/vec/PSVECNormalize.s | 18 - asm/dolphin/mtx/vec/PSVECScale.s | 8 - asm/dolphin/mtx/vec/PSVECSquareDistance.s | 11 - asm/dolphin/mtx/vec/PSVECSquareMag.s | 7 - asm/dolphin/mtx/vec/PSVECSubtract.s | 10 - asm/dolphin/os/OSAlarm/OnReset.s | 51 - .../os/OSError/__OSUnhandledException.s | 196 -- asm/dolphin/os/OSMemory/OnReset.s | 17 - asm/dolphin/os/OSMessage/OSJamMessage.s | 58 - asm/dolphin/pad/Pad/SPEC2_MakeStatus.s | 305 --- asm/dolphin/pad/Padclamp/ClampCircle.s | 116 -- asm/dolphin/vi/vi/GetCurrentDisplayPosition.s | 17 - asm/dolphin/vi/vi/VIConfigure.s | 68 +- asm/dolphin/vi/vi/VIFlush.s | 81 - asm/dolphin/vi/vi/VIGetCurrentLine.s | 41 - asm/dolphin/vi/vi/VIGetNextField.s | 42 - asm/dolphin/vi/vi/VIGetTvFormat.s | 28 - asm/dolphin/vi/vi/VIInit.s | 323 ---- asm/dolphin/vi/vi/__VIDisplayPositionToXY.s | 152 -- asm/dolphin/vi/vi/__VIGetCurrentPosition.s | 26 - asm/dolphin/vi/vi/__VIRetraceHandler.s | 176 -- asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s | 29 - asm/dolphin/vi/vi/getTiming.s | 44 - asm/dolphin/vi/vi/setFbbRegs.s | 193 -- asm/dolphin/vi/vi/setVerticalRegs.s | 110 -- .../OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s | 179 -- .../OdemuExi2Lib/DebuggerDriver/DBGHandler.s | 18 - .../Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s | 60 - .../DebuggerDriver/DBGReadMailbox.s | 46 - .../DebuggerDriver/DBGReadStatus.s | 46 - .../OdemuExi2Lib/DebuggerDriver/DBGWrite.s | 60 - .../OdemuExi2Lib/DebuggerDriver/DBInitComm.s | 31 - .../DebuggerDriver/DBInitInterrupts.s | 22 - .../OdemuExi2Lib/DebuggerDriver/DBQueryData.s | 42 - .../Src/OdemuExi2Lib/DebuggerDriver/DBRead.s | 38 - .../Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s | 167 -- .../OdemuExi2Lib/DebuggerDriver/MWCallback.s | 17 - .../d_a_movie_player/THPInit.s | 2 +- .../daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss.s | 18 +- include/JSystem/J2DGraph/J2DGrafContext.h | 2 +- include/JSystem/J2DGraph/J2DPane.h | 2 +- include/JSystem/J2DGraph/J2DTevs.h | 2 +- include/JSystem/J3DGraphAnimator/J3DModel.h | 2 +- include/JSystem/J3DGraphBase/J3DGD.h | 22 +- include/JSystem/J3DGraphBase/J3DShape.h | 18 +- include/JSystem/J3DGraphBase/J3DShapeMtx.h | 2 +- include/JSystem/J3DGraphBase/J3DStruct.h | 2 +- include/JSystem/J3DGraphBase/J3DSys.h | 2 +- include/JSystem/J3DGraphBase/J3DTexture.h | 2 +- include/JSystem/J3DGraphBase/J3DTransform.h | 2 +- .../JSystem/J3DGraphLoader/J3DModelLoader.h | 2 +- include/JSystem/J3DU/J3DUClipper.h | 2 +- include/JSystem/JAudio2/dspproc.h | 2 +- include/JSystem/JAudio2/osdsp_task.h | 12 +- include/JSystem/JGadget/linklist.h | 3 + include/JSystem/JKernel/JKRAramPiece.h | 2 +- include/JSystem/JKernel/JKRDvdFile.h | 2 +- include/JSystem/JKernel/JKRFileFinder.h | 2 +- include/JSystem/JMath/JMath.h | 2 +- include/JSystem/JParticle/JPADrawInfo.h | 2 +- include/JSystem/JParticle/JPAMath.h | 2 +- include/JSystem/JStage/JSGObject.h | 2 +- .../JSystem/JStudio/JStudio/jstudio-control.h | 2 +- .../JSystem/JStudio/JStudio/jstudio-math.h | 2 +- include/JSystem/JUtility/JUTAssert.h | 2 +- include/JSystem/JUtility/JUTConsole.h | 2 +- include/JSystem/JUtility/JUTDirectFile.h | 2 +- include/JSystem/JUtility/JUTGamePad.h | 6 +- include/JSystem/JUtility/JUTGraphFifo.h | 2 +- include/JSystem/JUtility/JUTVideo.h | 2 +- include/JSystem/TPosition3.hh | 2 +- include/SSystem/SComponent/c_lib.h | 2 +- .../MetroTRK/Portable/main_TRK.h | 11 + .../MetroTRK/Portable/msgbuf.h | 26 +- .../TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h | 26 + .../Os/dolphin/GDEV_Stubs.h | 26 + .../TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h | 20 +- .../Os/dolphin/dolphin_trk_glue.h | 19 +- .../TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h | 22 +- include/Z2AudioLib/Z2Audience.h | 2 +- include/d/bg/d_bg_w.h | 2 +- include/d/kankyo/d_kankyo_rain.h | 2 +- include/d/menu/d_menu_window.h | 10 +- include/dol2asm.h | 3 - include/dolphin/{ai => }/ai.h | 0 include/dolphin/amcstubs/AmcExi2Stubs.h | 4 +- include/dolphin/{ar => }/ar.h | 1 + include/dolphin/{ar => }/arq.h | 0 include/dolphin/{card => }/card.h | 0 include/dolphin/card/CARDPriv.h | 1 + include/dolphin/{db => }/db.h | 0 include/dolphin/{dsp => }/dsp.h | 41 +- include/dolphin/dsp/dsp_task.h | 2 +- include/dolphin/{dvd => }/dvd.h | 2 + include/dolphin/gd.h | 7 + include/dolphin/gd/GDBase.h | 37 +- include/dolphin/gd/GDGeometry.h | 2 +- include/dolphin/gf/GFGeometry.h | 2 +- include/dolphin/gx.h | 224 +++ include/dolphin/gx/GX.h | 213 -- include/dolphin/gx/GXEnum.h | 1722 +++++++++-------- include/dolphin/gx/GXFrameBuf.h | 4 +- include/dolphin/gx/GXInit.h | 209 +- include/dolphin/gx/GXMisc.h | 2 +- include/dolphin/gx/GXStruct.h | 17 +- include/dolphin/gx/GXTexture.h | 12 +- include/dolphin/gx/GXTransform.h | 8 +- include/dolphin/{mtx => }/mtx.h | 39 +- include/dolphin/mtx/mtxvec.h | 38 - include/dolphin/mtx/quat.h | 2 + include/dolphin/odenotstub/odenotstub.h | 5 - include/dolphin/{os/OS.h => os.h} | 15 +- include/dolphin/os/OSInterrupt.h | 37 +- include/dolphin/os/OSMemory.h | 2 +- include/dolphin/os/OSMessage.h | 4 + include/dolphin/os/OSReset.h | 2 +- include/dolphin/os/OSThread.h | 2 +- include/dolphin/os/__ppc_eabi_init.h | 5 - include/dolphin/{pad/Pad.h => pad.h} | 15 +- include/dolphin/pad/Padclamp.h | 1 + include/dolphin/si/SIBios.h | 6 +- include/dolphin/types.h | 2 + include/dolphin/vi.h | 147 ++ include/dolphin/vi/vi.h | 63 - include/f_op/f_op_view.h | 2 +- include/m_Do/m_Do_graphic.h | 2 +- include/m_Do/m_Do_machine_exception.h | 2 +- include/m_Do/m_Do_mtx.h | 4 +- libs/JSystem/J2DGraph/J2DAnimation.cpp | 2 +- libs/JSystem/J2DGraph/J2DGrafContext.cpp | 8 +- libs/JSystem/J2DGraph/J2DMatBlock.cpp | 2 +- libs/JSystem/J2DGraph/J2DOrthoGraph.cpp | 2 +- libs/JSystem/J2DGraph/J2DPane.cpp | 2 +- libs/JSystem/J2DGraph/J2DPicture.cpp | 4 +- libs/JSystem/J2DGraph/J2DPictureEx.cpp | 2 +- libs/JSystem/J2DGraph/J2DScreen.cpp | 2 +- libs/JSystem/J2DGraph/J2DTevs.cpp | 2 +- libs/JSystem/J2DGraph/J2DWindow.cpp | 14 +- libs/JSystem/J3DGraphAnimator/J3DModel.cpp | 2 +- .../JSystem/J3DGraphAnimator/J3DModelData.cpp | 2 +- .../J3DGraphAnimator/J3DSkinDeform.cpp | 2 +- libs/JSystem/J3DGraphBase/J3DGD.cpp | 2 +- libs/JSystem/J3DGraphBase/J3DMatBlock.cpp | 2 +- libs/JSystem/J3DGraphBase/J3DShape.cpp | 8 +- libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp | 2 +- libs/JSystem/J3DGraphBase/J3DSys.cpp | 4 +- libs/JSystem/J3DGraphBase/J3DTexture.cpp | 2 +- .../J3DGraphLoader/J3DClusterLoader.cpp | 2 +- .../JSystem/J3DGraphLoader/J3DModelLoader.cpp | 2 +- .../J3DGraphLoader/J3DShapeFactory.cpp | 2 +- libs/JSystem/JAudio2/JASAiCtrl.cpp | 2 +- libs/JSystem/JAudio2/JASAudioThread.cpp | 6 +- libs/JSystem/JAudio2/JASCmdStack.cpp | 2 +- libs/JSystem/JAudio2/JASDSPInterface.cpp | 2 +- libs/JSystem/JAudio2/JASProbe.cpp | 2 +- libs/JSystem/JAudio2/JASTaskThread.cpp | 4 +- libs/JSystem/JAudio2/JASWaveArcLoader.cpp | 2 +- libs/JSystem/JAudio2/JAUSectionHeap.cpp | 2 +- libs/JSystem/JAudio2/JAUStreamFileTable.cpp | 2 +- libs/JSystem/JAudio2/dsptask.cpp | 4 +- libs/JSystem/JAudio2/osdsp.cpp | 2 +- libs/JSystem/JAudio2/osdsp_task.cpp | 2 +- libs/JSystem/JFramework/JFWDisplay.cpp | 8 +- libs/JSystem/JFramework/JFWSystem.cpp | 1 - libs/JSystem/JKernel/JKRAram.cpp | 2 +- libs/JSystem/JKernel/JKRAramPiece.cpp | 2 +- libs/JSystem/JKernel/JKRDvdAramRipper.cpp | 2 +- libs/JSystem/JKernel/JKRDvdArchive.cpp | 2 +- libs/JSystem/JKernel/JKRDvdRipper.cpp | 2 +- libs/JSystem/JKernel/JKRFile.cpp | 2 +- libs/JSystem/JKernel/JKRHeap.cpp | 2 +- libs/JSystem/JParticle/JPABaseShape.cpp | 10 +- libs/JSystem/JParticle/JPAChildShape.cpp | 4 +- libs/JSystem/JParticle/JPAEmitter.cpp | 2 +- libs/JSystem/JParticle/JPAEmitterManager.cpp | 2 +- libs/JSystem/JParticle/JPAExTexShape.cpp | 2 +- libs/JSystem/JParticle/JPAExtraShape.cpp | 4 +- libs/JSystem/JParticle/JPAParticle.cpp | 2 +- libs/JSystem/JParticle/JPAResource.cpp | 4 +- libs/JSystem/JUtility/JUTAssert.cpp | 2 +- libs/JSystem/JUtility/JUTCacheFont.cpp | 2 +- libs/JSystem/JUtility/JUTConsole.cpp | 86 +- libs/JSystem/JUtility/JUTException.cpp | 4 +- libs/JSystem/JUtility/JUTGamePad.cpp | 18 +- libs/JSystem/JUtility/JUTPalette.cpp | 4 +- libs/JSystem/JUtility/JUTProcBar.cpp | 285 +-- libs/JSystem/JUtility/JUTResFont.cpp | 10 +- libs/JSystem/JUtility/JUTResource.cpp | 35 +- libs/JSystem/JUtility/JUTTexture.cpp | 19 +- libs/JSystem/JUtility/JUTVideo.cpp | 2 +- libs/JSystem/JUtility/JUTXfb.cpp | 2 +- .../MSL_C/PPC_EABI/Src/uart_console_io_gcn.c | 2 +- libs/PowerPC_EABI_Support/MetroTRK/trk.h | 156 +- .../Runtime/Src/GCN_Mem_Alloc.c | 2 +- libs/SSystem/SComponent/c_lib.cpp | 2 +- .../GCN/EXI2_DDH_GCN/main.c | 32 +- .../GCN/EXI2_GDEV_GCN/main.c | 34 +- libs/TRK_MINNOW_DOLPHIN/Makefile | 5 +- .../MetroTRK/Export/mslsupp.c | 6 +- .../MetroTRK/Portable/main_TRK.c | 1 - .../MetroTRK/Portable/msgbuf.c | 499 +++-- .../MetroTRK/Portable/msghndlr.c | 4 +- .../MetroTRK/Portable/nubinit.c | 2 +- .../MetroTRK/Portable/support.c | 1 + .../TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c | 3 +- .../Os/dolphin/dolphin_trk.c | 417 +++- .../Os/dolphin/dolphin_trk_glue.c | 388 ++-- libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c | 2 +- .../TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c | 1475 ++++++++++---- libs/Z2AudioLib/Z2AudioMgr.cpp | 2 +- libs/Z2AudioLib/Z2LinkMgr.cpp | 2 +- libs/Z2AudioLib/Z2SoundInfo.cpp | 2 +- libs/Z2AudioLib/Z2WolfHowlMgr.cpp | 2 +- libs/dolphin/ai/ai.c | 31 +- libs/dolphin/ar/Makefile | 1 + libs/dolphin/ar/ar.c | 362 ++-- libs/dolphin/ar/arq.c | 29 +- libs/dolphin/base/PPCArch.c | 2 +- libs/dolphin/card/CARDBios.c | 240 ++- libs/dolphin/card/CARDBlock.c | 80 +- libs/dolphin/card/CARDCheck.c | 253 ++- libs/dolphin/card/CARDCreate.c | 15 +- libs/dolphin/card/CARDDir.c | 14 +- libs/dolphin/card/CARDFormat.c | 172 +- libs/dolphin/card/CARDMount.c | 23 +- libs/dolphin/card/CARDNet.c | 10 +- libs/dolphin/card/CARDOpen.c | 132 +- libs/dolphin/card/CARDRdwr.c | 67 +- libs/dolphin/card/CARDRead.c | 24 +- libs/dolphin/card/CARDStat.c | 24 +- libs/dolphin/card/CARDUnlock.c | 193 +- libs/dolphin/card/CARDWrite.c | 26 +- libs/dolphin/db/db.c | 10 +- libs/dolphin/dsp/dsp.c | 11 +- libs/dolphin/dsp/dsp_task.c | 37 +- libs/dolphin/dvd/dvd.c | 52 +- libs/dolphin/dvd/dvdFatal.c | 28 +- libs/dolphin/dvd/dvderror.c | 19 - libs/dolphin/dvd/dvdfs.c | 53 +- libs/dolphin/dvd/dvdidutils.c | 2 +- libs/dolphin/dvd/dvdlow.c | 59 +- libs/dolphin/dvd/dvdqueue.c | 22 +- libs/dolphin/dvd/fstload.c | 21 +- libs/dolphin/exi/EXIBios.c | 144 +- libs/dolphin/exi/EXIUart.c | 21 +- libs/dolphin/gd/GDBase.c | 10 +- libs/dolphin/gd/GDGeometry.c | 205 +- libs/dolphin/gd/Makefile | 1 + libs/dolphin/gf/GFLight.cpp | 23 +- libs/dolphin/gf/GFPixel.cpp | 29 +- libs/dolphin/gf/GFTev.cpp | 27 +- libs/dolphin/gx/GXAttr.c | 933 +++++---- libs/dolphin/gx/GXBump.c | 72 +- libs/dolphin/gx/GXDisplayList.c | 10 +- libs/dolphin/gx/GXDraw.c | 8 +- libs/dolphin/gx/GXFifo.c | 394 ++-- libs/dolphin/gx/GXFrameBuf.c | 1043 +++++----- libs/dolphin/gx/GXGeometry.c | 50 +- libs/dolphin/gx/GXInit.c | 814 ++++---- libs/dolphin/gx/GXLight.c | 337 ++-- libs/dolphin/gx/GXMisc.c | 314 ++- libs/dolphin/gx/GXPerf.c | 718 ++++--- libs/dolphin/gx/GXPixel.c | 434 ++--- libs/dolphin/gx/GXTev.c | 544 +++--- libs/dolphin/gx/GXTexture.c | 910 +++++---- libs/dolphin/gx/GXTransform.c | 432 ++--- libs/dolphin/gx/Makefile | 12 +- libs/dolphin/mtx/mtx.c | 1022 +++++----- libs/dolphin/mtx/mtx44.c | 159 +- libs/dolphin/mtx/mtxvec.c | 112 +- libs/dolphin/mtx/quat.c | 13 +- libs/dolphin/mtx/vec.c | 360 ++-- libs/dolphin/odemuexi2/Makefile | 20 +- .../Src/OdemuExi2Lib/DebuggerDriver.c | 322 +++ .../Src/OdemuExi2Lib/DebuggerDriver.cpp | 194 -- libs/dolphin/odenotstub/odenotstub.cpp | 20 - libs/dolphin/os/Makefile | 13 +- libs/dolphin/os/OS.c | 100 +- libs/dolphin/os/OSAlarm.c | 50 +- libs/dolphin/os/OSAlloc.c | 4 - libs/dolphin/os/OSArena.c | 6 - libs/dolphin/os/OSAudioSystem.c | 20 +- libs/dolphin/os/OSCache.c | 24 +- libs/dolphin/os/OSContext.c | 4 +- libs/dolphin/os/OSError.c | 214 +- libs/dolphin/os/OSExec.c | 6 +- libs/dolphin/os/OSFont.c | 9 +- libs/dolphin/os/OSInterrupt.c | 39 +- libs/dolphin/os/OSMemory.c | 35 +- libs/dolphin/os/OSMessage.c | 40 +- libs/dolphin/os/OSMutex.c | 7 +- libs/dolphin/os/OSReboot.c | 7 - libs/dolphin/os/OSReset.c | 47 +- libs/dolphin/os/OSResetSW.c | 22 +- libs/dolphin/os/OSRtc.c | 28 +- libs/dolphin/os/OSSync.c | 2 +- libs/dolphin/os/OSThread.c | 225 ++- libs/dolphin/os/OSTime.c | 22 +- ...{__ppc_eabi_init.c => __ppc_eabi_init.cpp} | 22 +- libs/dolphin/pad/Pad.c | 190 +- libs/dolphin/pad/Padclamp.c | 84 +- libs/dolphin/si/SIBios.c | 138 +- libs/dolphin/si/SISamplingRate.c | 17 +- libs/dolphin/vi/vi.c | 1362 +++++++++---- obj_files.mk | 1 + rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp | 2 +- rel/d/a/d_a_mirror/d_a_mirror.cpp | 2 +- rel/d/a/d_a_movie_player/d_a_movie_player.cpp | 20 +- rel/d/a/d_a_swc00/d_a_swc00.cpp | 2 +- rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp | 2 +- src/DynamicLink.cpp | 2 +- src/d/a/d_a_alink.cpp | 2 +- src/d/bg/d_bg_s.cpp | 2 +- src/d/com/d_com_inf_game.cpp | 2 +- src/d/d_camera.cpp | 2 +- src/d/d_demo.cpp | 2 +- src/d/d_drawlist.cpp | 86 +- src/d/d_error_msg.cpp | 2 +- src/d/d_eye_hl.cpp | 2 +- src/d/d_gameover.cpp | 2 +- src/d/d_resorce.cpp | 4 +- src/d/d_select_cursor.cpp | 4 +- src/d/d_stage.cpp | 2 +- src/d/d_timer.cpp | 2 +- src/d/file/d_file_select.cpp | 2 +- src/d/kankyo/d_kankyo_rain.cpp | 4 +- src/d/map/d_map_path.cpp | 10 +- src/d/map/d_map_path_dmap.cpp | 10 +- src/d/menu/d_menu_collect.cpp | 4 +- src/d/menu/d_menu_window.cpp | 2 +- src/d/meter/d_meter2_draw.cpp | 4 +- src/d/meter/d_meter_haihai.cpp | 2 +- src/d/meter/d_meter_string.cpp | 2 +- src/d/msg/d_msg_class.cpp | 2 +- src/d/msg/d_msg_object.cpp | 2 +- src/d/ovlp/d_ovlp_fade2.cpp | 4 +- src/d/ovlp/d_ovlp_fade3.cpp | 4 +- src/d/particle/d_particle.cpp | 2 +- src/d/s/d_s_logo.cpp | 2 +- src/d/s/d_s_room.cpp | 2 +- src/d/save/d_save.cpp | 2 +- src/f_op/f_op_actor_mng.cpp | 2 +- src/m_Do/m_Do_DVDError.cpp | 2 +- src/m_Do/m_Do_MemCard.cpp | 2 +- src/m_Do/m_Do_MemCardRWmng.cpp | 2 +- src/m_Do/m_Do_Reset.cpp | 4 +- src/m_Do/m_Do_audio.cpp | 2 +- src/m_Do/m_Do_controller_pad.cpp | 3 +- src/m_Do/m_Do_dvd_thread.cpp | 2 +- src/m_Do/m_Do_ext.cpp | 6 +- src/m_Do/m_Do_graphic.cpp | 34 +- src/m_Do/m_Do_machine.cpp | 14 +- src/m_Do/m_Do_main.cpp | 2 +- src/m_Do/m_Do_printf.cpp | 4 +- src/msg/scrn/d_msg_scrn_arrow.cpp | 4 +- src/msg/scrn/d_msg_scrn_explain.cpp | 2 +- src/msg/scrn/d_msg_scrn_tree.cpp | 4 +- 461 files changed, 11574 insertions(+), 22635 deletions(-) delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer1_ui64.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui32.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui8.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetFreeBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKInitializeMessageBuffers.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer1_ui64.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui32.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui8.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReleaseBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKResetBuffer.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__read_aram.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__write_aram.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/__TRK_copy_vectors.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/InitMetroTRKCommTable.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKLoadContext.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRK_board_display.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/ReadFPSCR.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKExceptionHandler.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandler.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandlerEnableInterrupts.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKPostInterruptEvent.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKSwapAndGo.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessARAM.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessDefault.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended1.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended2.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessFP.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessMemory.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddExceptionInfo.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddStopInfo.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetInterrupt.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetReadInstruction.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSingleStep.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetStepOutOfRange.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSupportRequest.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKValidMemory32.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRK_ppc_memcpy.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/WriteFPSCR.s delete mode 100644 asm/dolphin/ar/ar/__ARChecksize.s delete mode 100644 asm/dolphin/gd/GDGeometry/GDSetArray.s delete mode 100644 asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s delete mode 100644 asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s delete mode 100644 asm/dolphin/gx/GXAttr/GXSetVtxDescv.s delete mode 100644 asm/dolphin/gx/GXAttr/__GXSetVCD.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXCopyTex.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s delete mode 100644 asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s delete mode 100644 asm/dolphin/gx/GXInit/GXInit.s delete mode 100644 asm/dolphin/gx/GXInit/__GXInitGX.s delete mode 100644 asm/dolphin/gx/GXLight/GXSetChanAmbColor.s delete mode 100644 asm/dolphin/gx/GXLight/GXSetChanCtrl.s delete mode 100644 asm/dolphin/gx/GXLight/GXSetChanMatColor.s delete mode 100644 asm/dolphin/gx/GXLight/GXSetNumChans.s delete mode 100644 asm/dolphin/gx/GXMisc/GXAbortFrame.s delete mode 100644 asm/dolphin/gx/GXMisc/GXFinishInterruptHandler.s delete mode 100644 asm/dolphin/gx/GXMisc/GXPokeBlendMode.s delete mode 100644 asm/dolphin/gx/GXMisc/GXTokenInterruptHandler.s delete mode 100644 asm/dolphin/gx/GXMisc/__GXAbort.s delete mode 100644 asm/dolphin/gx/GXPixel/GXSetFog.s delete mode 100644 asm/dolphin/gx/GXPixel/GXSetPixelFmt.s delete mode 100644 asm/dolphin/gx/GXTev/GXSetTevColor.s delete mode 100644 asm/dolphin/gx/GXTev/GXSetTevColorS10.s delete mode 100644 asm/dolphin/gx/GXTev/GXSetTevKColor.s delete mode 100644 asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTexObj.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTexObjCI.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTlutObj.s delete mode 100644 asm/dolphin/gx/GXTexture/GXInitTlutRegion.s delete mode 100644 asm/dolphin/gx/GXTexture/GXLoadTexObj.s delete mode 100644 asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s delete mode 100644 asm/dolphin/gx/GXTexture/GXLoadTlut.s delete mode 100644 asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s delete mode 100644 asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s delete mode 100644 asm/dolphin/gx/GXTexture/__GetImageTileCount.s delete mode 100644 asm/dolphin/gx/GXTexture/__SetSURegs.s delete mode 100644 asm/dolphin/gx/GXTransform/GXGetProjectionv.s delete mode 100644 asm/dolphin/gx/GXTransform/GXGetScissor.s delete mode 100644 asm/dolphin/gx/GXTransform/GXProject.s delete mode 100644 asm/dolphin/gx/GXTransform/GXSetProjectionv.s delete mode 100644 asm/dolphin/gx/GXTransform/__GXSetViewport.s delete mode 100644 asm/dolphin/mtx/mtx/C_MTXLightOrtho.s delete mode 100644 asm/dolphin/mtx/mtx/C_MTXLightPerspective.s delete mode 100644 asm/dolphin/mtx/mtx/C_MTXLookAt.s delete mode 100644 asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s delete mode 100644 asm/dolphin/mtx/mtx/PSMTXRotRad.s delete mode 100644 asm/dolphin/mtx/vec/C_VECHalfAngle.s delete mode 100644 asm/dolphin/mtx/vec/C_VECReflect.s delete mode 100644 asm/dolphin/mtx/vec/PSVECAdd.s delete mode 100644 asm/dolphin/mtx/vec/PSVECCrossProduct.s delete mode 100644 asm/dolphin/mtx/vec/PSVECDistance.s delete mode 100644 asm/dolphin/mtx/vec/PSVECDotProduct.s delete mode 100644 asm/dolphin/mtx/vec/PSVECMag.s delete mode 100644 asm/dolphin/mtx/vec/PSVECNormalize.s delete mode 100644 asm/dolphin/mtx/vec/PSVECScale.s delete mode 100644 asm/dolphin/mtx/vec/PSVECSquareDistance.s delete mode 100644 asm/dolphin/mtx/vec/PSVECSquareMag.s delete mode 100644 asm/dolphin/mtx/vec/PSVECSubtract.s delete mode 100644 asm/dolphin/os/OSAlarm/OnReset.s delete mode 100644 asm/dolphin/os/OSError/__OSUnhandledException.s delete mode 100644 asm/dolphin/os/OSMemory/OnReset.s delete mode 100644 asm/dolphin/os/OSMessage/OSJamMessage.s delete mode 100644 asm/dolphin/pad/Pad/SPEC2_MakeStatus.s delete mode 100644 asm/dolphin/pad/Padclamp/ClampCircle.s delete mode 100644 asm/dolphin/vi/vi/GetCurrentDisplayPosition.s delete mode 100644 asm/dolphin/vi/vi/VIFlush.s delete mode 100644 asm/dolphin/vi/vi/VIGetCurrentLine.s delete mode 100644 asm/dolphin/vi/vi/VIGetNextField.s delete mode 100644 asm/dolphin/vi/vi/VIGetTvFormat.s delete mode 100644 asm/dolphin/vi/vi/VIInit.s delete mode 100644 asm/dolphin/vi/vi/__VIDisplayPositionToXY.s delete mode 100644 asm/dolphin/vi/vi/__VIGetCurrentPosition.s delete mode 100644 asm/dolphin/vi/vi/__VIRetraceHandler.s delete mode 100644 asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s delete mode 100644 asm/dolphin/vi/vi/getTiming.s delete mode 100644 asm/dolphin/vi/vi/setFbbRegs.s delete mode 100644 asm/dolphin/vi/vi/setVerticalRegs.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGHandler.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadMailbox.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadStatus.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGWrite.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitComm.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitInterrupts.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBQueryData.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBRead.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s delete mode 100644 asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/MWCallback.s create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/GDEV_Stubs.h rename include/dolphin/{ai => }/ai.h (100%) rename include/dolphin/{ar => }/ar.h (93%) rename include/dolphin/{ar => }/arq.h (100%) rename include/dolphin/{card => }/card.h (100%) rename include/dolphin/{db => }/db.h (100%) rename include/dolphin/{dsp => }/dsp.h (67%) rename include/dolphin/{dvd => }/dvd.h (98%) create mode 100644 include/dolphin/gd.h create mode 100644 include/dolphin/gx.h delete mode 100644 include/dolphin/gx/GX.h rename include/dolphin/{mtx => }/mtx.h (68%) delete mode 100644 include/dolphin/mtx/mtxvec.h delete mode 100644 include/dolphin/odenotstub/odenotstub.h rename include/dolphin/{os/OS.h => os.h} (96%) delete mode 100644 include/dolphin/os/__ppc_eabi_init.h rename include/dolphin/{pad/Pad.h => pad.h} (75%) create mode 100644 include/dolphin/vi.h delete mode 100644 include/dolphin/vi/vi.h create mode 100644 libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.c delete mode 100644 libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.cpp rename libs/dolphin/os/{__ppc_eabi_init.c => __ppc_eabi_init.cpp} (69%) diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer.s deleted file mode 100644 index 822c1bff03..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_8036D578: -/* 8036D578 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036D57C 7C 08 02 A6 */ mflr r0 -/* 8036D580 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036D584 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8036D588 3B E0 00 00 */ li r31, 0 -/* 8036D58C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8036D590 7C BE 2B 79 */ or. r30, r5, r5 -/* 8036D594 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8036D598 7C 7D 1B 78 */ mr r29, r3 -/* 8036D59C 40 82 00 0C */ bne lbl_8036D5A8 -/* 8036D5A0 38 60 00 00 */ li r3, 0 -/* 8036D5A4 48 00 00 5C */ b lbl_8036D600 -lbl_8036D5A8: -/* 8036D5A8 80 7D 00 0C */ lwz r3, 0xc(r29) -/* 8036D5AC 20 03 08 80 */ subfic r0, r3, 0x880 -/* 8036D5B0 7C 00 F0 40 */ cmplw r0, r30 -/* 8036D5B4 40 80 00 0C */ bge lbl_8036D5C0 -/* 8036D5B8 3B E0 03 01 */ li r31, 0x301 -/* 8036D5BC 7C 1E 03 78 */ mr r30, r0 -lbl_8036D5C0: -/* 8036D5C0 28 1E 00 01 */ cmplwi r30, 1 -/* 8036D5C4 40 82 00 14 */ bne lbl_8036D5D8 -/* 8036D5C8 88 04 00 00 */ lbz r0, 0(r4) -/* 8036D5CC 7C 7D 1A 14 */ add r3, r29, r3 -/* 8036D5D0 98 03 00 10 */ stb r0, 0x10(r3) -/* 8036D5D4 48 00 00 14 */ b lbl_8036D5E8 -lbl_8036D5D8: -/* 8036D5D8 38 63 00 10 */ addi r3, r3, 0x10 -/* 8036D5DC 7F C5 F3 78 */ mr r5, r30 -/* 8036D5E0 7C 7D 1A 14 */ add r3, r29, r3 -/* 8036D5E4 4B C9 5F DD */ bl TRK_memcpy -lbl_8036D5E8: -/* 8036D5E8 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 8036D5EC 7F E3 FB 78 */ mr r3, r31 -/* 8036D5F0 7C 00 F2 14 */ add r0, r0, r30 -/* 8036D5F4 90 1D 00 0C */ stw r0, 0xc(r29) -/* 8036D5F8 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 8036D5FC 90 1D 00 08 */ stw r0, 8(r29) -lbl_8036D600: -/* 8036D600 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036D604 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8036D608 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8036D60C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8036D610 7C 08 03 A6 */ mtlr r0 -/* 8036D614 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036D618 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer1_ui64.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer1_ui64.s deleted file mode 100644 index f6c62c1e6f..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer1_ui64.s +++ /dev/null @@ -1,69 +0,0 @@ -lbl_8036D3F0: -/* 8036D3F0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036D3F4 7C 08 02 A6 */ mflr r0 -/* 8036D3F8 3C 80 80 45 */ lis r4, gTRKBigEndian@ha /* 0x8044D8B8@ha */ -/* 8036D3FC 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036D400 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8036D404 7C 7F 1B 78 */ mr r31, r3 -/* 8036D408 93 C1 00 28 */ stw r30, 0x28(r1) -/* 8036D40C 93 A1 00 24 */ stw r29, 0x24(r1) -/* 8036D410 80 04 D8 B8 */ lwz r0, gTRKBigEndian@l(r4) /* 0x8044D8B8@l */ -/* 8036D414 90 A1 00 08 */ stw r5, 8(r1) -/* 8036D418 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D41C 90 C1 00 0C */ stw r6, 0xc(r1) -/* 8036D420 41 82 00 0C */ beq lbl_8036D42C -/* 8036D424 38 81 00 08 */ addi r4, r1, 8 -/* 8036D428 48 00 00 48 */ b lbl_8036D470 -lbl_8036D42C: -/* 8036D42C 89 41 00 0F */ lbz r10, 0xf(r1) -/* 8036D430 38 81 00 10 */ addi r4, r1, 0x10 -/* 8036D434 89 21 00 0E */ lbz r9, 0xe(r1) -/* 8036D438 89 01 00 0D */ lbz r8, 0xd(r1) -/* 8036D43C 88 E1 00 0C */ lbz r7, 0xc(r1) -/* 8036D440 88 C1 00 0B */ lbz r6, 0xb(r1) -/* 8036D444 88 A1 00 0A */ lbz r5, 0xa(r1) -/* 8036D448 88 61 00 09 */ lbz r3, 9(r1) -/* 8036D44C 88 01 00 08 */ lbz r0, 8(r1) -/* 8036D450 99 41 00 10 */ stb r10, 0x10(r1) -/* 8036D454 99 21 00 11 */ stb r9, 0x11(r1) -/* 8036D458 99 01 00 12 */ stb r8, 0x12(r1) -/* 8036D45C 98 E1 00 13 */ stb r7, 0x13(r1) -/* 8036D460 98 C1 00 14 */ stb r6, 0x14(r1) -/* 8036D464 98 A1 00 15 */ stb r5, 0x15(r1) -/* 8036D468 98 61 00 16 */ stb r3, 0x16(r1) -/* 8036D46C 98 01 00 17 */ stb r0, 0x17(r1) -lbl_8036D470: -/* 8036D470 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 8036D474 3B A0 00 08 */ li r29, 8 -/* 8036D478 3B C0 00 00 */ li r30, 0 -/* 8036D47C 20 03 08 80 */ subfic r0, r3, 0x880 -/* 8036D480 28 00 00 08 */ cmplwi r0, 8 -/* 8036D484 40 80 00 0C */ bge lbl_8036D490 -/* 8036D488 3B C0 03 01 */ li r30, 0x301 -/* 8036D48C 7C 1D 03 78 */ mr r29, r0 -lbl_8036D490: -/* 8036D490 28 1D 00 01 */ cmplwi r29, 1 -/* 8036D494 40 82 00 14 */ bne lbl_8036D4A8 -/* 8036D498 88 04 00 00 */ lbz r0, 0(r4) -/* 8036D49C 7C 7F 1A 14 */ add r3, r31, r3 -/* 8036D4A0 98 03 00 10 */ stb r0, 0x10(r3) -/* 8036D4A4 48 00 00 14 */ b lbl_8036D4B8 -lbl_8036D4A8: -/* 8036D4A8 38 63 00 10 */ addi r3, r3, 0x10 -/* 8036D4AC 7F A5 EB 78 */ mr r5, r29 -/* 8036D4B0 7C 7F 1A 14 */ add r3, r31, r3 -/* 8036D4B4 4B C9 61 0D */ bl TRK_memcpy -lbl_8036D4B8: -/* 8036D4B8 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 8036D4BC 7F C3 F3 78 */ mr r3, r30 -/* 8036D4C0 7C 00 EA 14 */ add r0, r0, r29 -/* 8036D4C4 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8036D4C8 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 8036D4CC 90 1F 00 08 */ stw r0, 8(r31) -/* 8036D4D0 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8036D4D4 83 C1 00 28 */ lwz r30, 0x28(r1) -/* 8036D4D8 83 A1 00 24 */ lwz r29, 0x24(r1) -/* 8036D4DC 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8036D4E0 7C 08 03 A6 */ mtlr r0 -/* 8036D4E4 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036D4E8 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui32.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui32.s deleted file mode 100644 index 05c7cda128..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui32.s +++ /dev/null @@ -1,72 +0,0 @@ -lbl_8036D28C: -/* 8036D28C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036D290 7C 08 02 A6 */ mflr r0 -/* 8036D294 3C C0 80 45 */ lis r6, gTRKBigEndian@ha /* 0x8044D8B8@ha */ -/* 8036D298 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036D29C BF 21 00 14 */ stmw r25, 0x14(r1) -/* 8036D2A0 7C 7B 1B 78 */ mr r27, r3 -/* 8036D2A4 7C BC 2B 78 */ mr r28, r5 -/* 8036D2A8 7C 9E 23 78 */ mr r30, r4 -/* 8036D2AC 3B E6 D8 B8 */ addi r31, r6, gTRKBigEndian@l /* 0x8044D8B8@l */ -/* 8036D2B0 3B A0 00 00 */ li r29, 0 -/* 8036D2B4 38 60 00 00 */ li r3, 0 -/* 8036D2B8 48 00 00 AC */ b lbl_8036D364 -lbl_8036D2BC: -/* 8036D2BC 80 1F 00 00 */ lwz r0, 0(r31) -/* 8036D2C0 80 7E 00 00 */ lwz r3, 0(r30) -/* 8036D2C4 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D2C8 90 61 00 08 */ stw r3, 8(r1) -/* 8036D2CC 41 82 00 0C */ beq lbl_8036D2D8 -/* 8036D2D0 38 81 00 08 */ addi r4, r1, 8 -/* 8036D2D4 48 00 00 28 */ b lbl_8036D2FC -lbl_8036D2D8: -/* 8036D2D8 88 C1 00 0B */ lbz r6, 0xb(r1) -/* 8036D2DC 38 81 00 0C */ addi r4, r1, 0xc -/* 8036D2E0 88 A1 00 0A */ lbz r5, 0xa(r1) -/* 8036D2E4 88 61 00 09 */ lbz r3, 9(r1) -/* 8036D2E8 88 01 00 08 */ lbz r0, 8(r1) -/* 8036D2EC 98 C1 00 0C */ stb r6, 0xc(r1) -/* 8036D2F0 98 A1 00 0D */ stb r5, 0xd(r1) -/* 8036D2F4 98 61 00 0E */ stb r3, 0xe(r1) -/* 8036D2F8 98 01 00 0F */ stb r0, 0xf(r1) -lbl_8036D2FC: -/* 8036D2FC 80 BB 00 0C */ lwz r5, 0xc(r27) -/* 8036D300 3B 20 00 04 */ li r25, 4 -/* 8036D304 3B 40 00 00 */ li r26, 0 -/* 8036D308 20 05 08 80 */ subfic r0, r5, 0x880 -/* 8036D30C 28 00 00 04 */ cmplwi r0, 4 -/* 8036D310 40 80 00 0C */ bge lbl_8036D31C -/* 8036D314 3B 40 03 01 */ li r26, 0x301 -/* 8036D318 7C 19 03 78 */ mr r25, r0 -lbl_8036D31C: -/* 8036D31C 28 19 00 01 */ cmplwi r25, 1 -/* 8036D320 40 82 00 14 */ bne lbl_8036D334 -/* 8036D324 88 64 00 00 */ lbz r3, 0(r4) -/* 8036D328 38 05 00 10 */ addi r0, r5, 0x10 -/* 8036D32C 7C 7B 01 AE */ stbx r3, r27, r0 -/* 8036D330 48 00 00 14 */ b lbl_8036D344 -lbl_8036D334: -/* 8036D334 38 65 00 10 */ addi r3, r5, 0x10 -/* 8036D338 7F 25 CB 78 */ mr r5, r25 -/* 8036D33C 7C 7B 1A 14 */ add r3, r27, r3 -/* 8036D340 4B C9 62 81 */ bl TRK_memcpy -lbl_8036D344: -/* 8036D344 80 1B 00 0C */ lwz r0, 0xc(r27) -/* 8036D348 7F 43 D3 78 */ mr r3, r26 -/* 8036D34C 3B DE 00 04 */ addi r30, r30, 4 -/* 8036D350 3B BD 00 01 */ addi r29, r29, 1 -/* 8036D354 7C 00 CA 14 */ add r0, r0, r25 -/* 8036D358 90 1B 00 0C */ stw r0, 0xc(r27) -/* 8036D35C 80 1B 00 0C */ lwz r0, 0xc(r27) -/* 8036D360 90 1B 00 08 */ stw r0, 8(r27) -lbl_8036D364: -/* 8036D364 2C 03 00 00 */ cmpwi r3, 0 -/* 8036D368 40 82 00 0C */ bne lbl_8036D374 -/* 8036D36C 7C 1D E0 00 */ cmpw r29, r28 -/* 8036D370 41 80 FF 4C */ blt lbl_8036D2BC -lbl_8036D374: -/* 8036D374 BB 21 00 14 */ lmw r25, 0x14(r1) -/* 8036D378 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8036D37C 7C 08 03 A6 */ mtlr r0 -/* 8036D380 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036D384 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui8.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui8.s deleted file mode 100644 index fb2a9f0b39..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui8.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8036D388: -/* 8036D388 39 20 00 00 */ li r9, 0 -/* 8036D38C 38 00 00 00 */ li r0, 0 -/* 8036D390 48 00 00 48 */ b lbl_8036D3D8 -lbl_8036D394: -/* 8036D394 80 E3 00 0C */ lwz r7, 0xc(r3) -/* 8036D398 89 04 00 00 */ lbz r8, 0(r4) -/* 8036D39C 28 07 08 80 */ cmplwi r7, 0x880 -/* 8036D3A0 41 80 00 0C */ blt lbl_8036D3AC -/* 8036D3A4 38 E0 03 01 */ li r7, 0x301 -/* 8036D3A8 48 00 00 24 */ b lbl_8036D3CC -lbl_8036D3AC: -/* 8036D3AC 38 C7 00 01 */ addi r6, r7, 1 -/* 8036D3B0 38 07 00 10 */ addi r0, r7, 0x10 -/* 8036D3B4 90 C3 00 0C */ stw r6, 0xc(r3) -/* 8036D3B8 38 E0 00 00 */ li r7, 0 -/* 8036D3BC 7D 03 01 AE */ stbx r8, r3, r0 -/* 8036D3C0 80 C3 00 08 */ lwz r6, 8(r3) -/* 8036D3C4 38 06 00 01 */ addi r0, r6, 1 -/* 8036D3C8 90 03 00 08 */ stw r0, 8(r3) -lbl_8036D3CC: -/* 8036D3CC 7C E0 3B 78 */ mr r0, r7 -/* 8036D3D0 39 29 00 01 */ addi r9, r9, 1 -/* 8036D3D4 38 84 00 01 */ addi r4, r4, 1 -lbl_8036D3D8: -/* 8036D3D8 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D3DC 40 82 00 0C */ bne lbl_8036D3E8 -/* 8036D3E0 7C 09 28 00 */ cmpw r9, r5 -/* 8036D3E4 41 80 FF B0 */ blt lbl_8036D394 -lbl_8036D3E8: -/* 8036D3E8 7C 03 03 78 */ mr r3, r0 -/* 8036D3EC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetBuffer.s deleted file mode 100644 index 0ee70b6995..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetBuffer.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8036D6F0: -/* 8036D6F0 2C 03 00 00 */ cmpwi r3, 0 -/* 8036D6F4 38 00 00 00 */ li r0, 0 -/* 8036D6F8 41 80 00 1C */ blt lbl_8036D714 -/* 8036D6FC 2C 03 00 03 */ cmpwi r3, 3 -/* 8036D700 40 80 00 14 */ bge lbl_8036D714 -/* 8036D704 1C 83 08 90 */ mulli r4, r3, 0x890 -/* 8036D708 3C 60 80 45 */ lis r3, gTRKMsgBufs@ha /* 0x8044D8C0@ha */ -/* 8036D70C 38 03 D8 C0 */ addi r0, r3, gTRKMsgBufs@l /* 0x8044D8C0@l */ -/* 8036D710 7C 00 22 14 */ add r0, r0, r4 -lbl_8036D714: -/* 8036D714 7C 03 03 78 */ mr r3, r0 -/* 8036D718 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetFreeBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetFreeBuffer.s deleted file mode 100644 index 978219e7fb..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetFreeBuffer.s +++ /dev/null @@ -1,56 +0,0 @@ -lbl_8036D71C: -/* 8036D71C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036D720 7C 08 02 A6 */ mflr r0 -/* 8036D724 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036D728 38 00 00 00 */ li r0, 0 -/* 8036D72C BF 61 00 0C */ stmw r27, 0xc(r1) -/* 8036D730 7C 9C 23 78 */ mr r28, r4 -/* 8036D734 7C 7B 1B 78 */ mr r27, r3 -/* 8036D738 3B C0 03 00 */ li r30, 0x300 -/* 8036D73C 3B A0 00 00 */ li r29, 0 -/* 8036D740 90 04 00 00 */ stw r0, 0(r4) -/* 8036D744 48 00 00 6C */ b lbl_8036D7B0 -lbl_8036D748: -/* 8036D748 2C 1D 00 00 */ cmpwi r29, 0 -/* 8036D74C 3B E0 00 00 */ li r31, 0 -/* 8036D750 41 80 00 1C */ blt lbl_8036D76C -/* 8036D754 2C 1D 00 03 */ cmpwi r29, 3 -/* 8036D758 40 80 00 14 */ bge lbl_8036D76C -/* 8036D75C 1C 9D 08 90 */ mulli r4, r29, 0x890 -/* 8036D760 3C 60 80 45 */ lis r3, gTRKMsgBufs@ha /* 0x8044D8C0@ha */ -/* 8036D764 38 03 D8 C0 */ addi r0, r3, gTRKMsgBufs@l /* 0x8044D8C0@l */ -/* 8036D768 7F E0 22 14 */ add r31, r0, r4 -lbl_8036D76C: -/* 8036D76C 7F E3 FB 78 */ mr r3, r31 -/* 8036D770 48 00 1D 31 */ bl TRKAcquireMutex -/* 8036D774 80 1F 00 04 */ lwz r0, 4(r31) -/* 8036D778 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D77C 40 82 00 28 */ bne lbl_8036D7A4 -/* 8036D780 38 60 00 00 */ li r3, 0 -/* 8036D784 38 00 00 01 */ li r0, 1 -/* 8036D788 90 7F 00 08 */ stw r3, 8(r31) -/* 8036D78C 3B C0 00 00 */ li r30, 0 -/* 8036D790 90 7F 00 0C */ stw r3, 0xc(r31) -/* 8036D794 90 1F 00 04 */ stw r0, 4(r31) -/* 8036D798 93 FC 00 00 */ stw r31, 0(r28) -/* 8036D79C 93 BB 00 00 */ stw r29, 0(r27) -/* 8036D7A0 3B A0 00 03 */ li r29, 3 -lbl_8036D7A4: -/* 8036D7A4 7F E3 FB 78 */ mr r3, r31 -/* 8036D7A8 48 00 1C F1 */ bl TRKReleaseMutex -/* 8036D7AC 3B BD 00 01 */ addi r29, r29, 1 -lbl_8036D7B0: -/* 8036D7B0 2C 1D 00 03 */ cmpwi r29, 3 -/* 8036D7B4 41 80 FF 94 */ blt lbl_8036D748 -/* 8036D7B8 2C 1E 03 00 */ cmpwi r30, 0x300 -/* 8036D7BC 40 82 00 10 */ bne lbl_8036D7CC -/* 8036D7C0 3C 60 80 3A */ lis r3, lit_618@ha /* 0x803A26E0@ha */ -/* 8036D7C4 38 63 26 E0 */ addi r3, r3, lit_618@l /* 0x803A26E0@l */ -/* 8036D7C8 48 00 03 4D */ bl usr_puts_serial -lbl_8036D7CC: -/* 8036D7CC 7F C3 F3 78 */ mr r3, r30 -/* 8036D7D0 BB 61 00 0C */ lmw r27, 0xc(r1) -/* 8036D7D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036D7D8 7C 08 03 A6 */ mtlr r0 -/* 8036D7DC 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036D7E0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKInitializeMessageBuffers.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKInitializeMessageBuffers.s deleted file mode 100644 index 95d49095f9..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKInitializeMessageBuffers.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_8036D7E4: -/* 8036D7E4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036D7E8 7C 08 02 A6 */ mflr r0 -/* 8036D7EC 3C 60 80 45 */ lis r3, gTRKMsgBufs@ha /* 0x8044D8C0@ha */ -/* 8036D7F0 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036D7F4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8036D7F8 3B E0 00 00 */ li r31, 0 -/* 8036D7FC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8036D800 3B C3 D8 C0 */ addi r30, r3, gTRKMsgBufs@l /* 0x8044D8C0@l */ -/* 8036D804 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8036D808 3B A0 00 00 */ li r29, 0 -lbl_8036D80C: -/* 8036D80C 7F C3 F3 78 */ mr r3, r30 -/* 8036D810 48 00 1C 99 */ bl TRKInitializeMutex -/* 8036D814 7F C3 F3 78 */ mr r3, r30 -/* 8036D818 48 00 1C 89 */ bl TRKAcquireMutex -/* 8036D81C 93 FE 00 04 */ stw r31, 4(r30) -/* 8036D820 7F C3 F3 78 */ mr r3, r30 -/* 8036D824 48 00 1C 75 */ bl TRKReleaseMutex -/* 8036D828 3B BD 00 01 */ addi r29, r29, 1 -/* 8036D82C 3B DE 08 90 */ addi r30, r30, 0x890 -/* 8036D830 2C 1D 00 03 */ cmpwi r29, 3 -/* 8036D834 41 80 FF D8 */ blt lbl_8036D80C -/* 8036D838 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036D83C 38 60 00 00 */ li r3, 0 -/* 8036D840 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8036D844 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8036D848 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8036D84C 7C 08 03 A6 */ mtlr r0 -/* 8036D850 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036D854 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer.s deleted file mode 100644 index 2300edd88f..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8036D4EC: -/* 8036D4EC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036D4F0 7C 08 02 A6 */ mflr r0 -/* 8036D4F4 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036D4F8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8036D4FC 3B E0 00 00 */ li r31, 0 -/* 8036D500 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8036D504 7C BE 2B 79 */ or. r30, r5, r5 -/* 8036D508 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8036D50C 7C 7D 1B 78 */ mr r29, r3 -/* 8036D510 7C 83 23 78 */ mr r3, r4 -/* 8036D514 40 82 00 0C */ bne lbl_8036D520 -/* 8036D518 38 60 00 00 */ li r3, 0 -/* 8036D51C 48 00 00 40 */ b lbl_8036D55C -lbl_8036D520: -/* 8036D520 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 8036D524 80 1D 00 08 */ lwz r0, 8(r29) -/* 8036D528 7C 04 00 50 */ subf r0, r4, r0 -/* 8036D52C 7C 1E 00 40 */ cmplw r30, r0 -/* 8036D530 40 81 00 0C */ ble lbl_8036D53C -/* 8036D534 3B E0 03 02 */ li r31, 0x302 -/* 8036D538 7C 1E 03 78 */ mr r30, r0 -lbl_8036D53C: -/* 8036D53C 38 84 00 10 */ addi r4, r4, 0x10 -/* 8036D540 7F C5 F3 78 */ mr r5, r30 -/* 8036D544 7C 9D 22 14 */ add r4, r29, r4 -/* 8036D548 4B C9 60 79 */ bl TRK_memcpy -/* 8036D54C 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 8036D550 7F E3 FB 78 */ mr r3, r31 -/* 8036D554 7C 00 F2 14 */ add r0, r0, r30 -/* 8036D558 90 1D 00 0C */ stw r0, 0xc(r29) -lbl_8036D55C: -/* 8036D55C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036D560 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8036D564 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8036D568 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8036D56C 7C 08 03 A6 */ mtlr r0 -/* 8036D570 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036D574 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer1_ui64.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer1_ui64.s deleted file mode 100644 index 3f3750de91..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer1_ui64.s +++ /dev/null @@ -1,63 +0,0 @@ -lbl_8036D1A4: -/* 8036D1A4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036D1A8 7C 08 02 A6 */ mflr r0 -/* 8036D1AC 3C A0 80 45 */ lis r5, gTRKBigEndian@ha /* 0x8044D8B8@ha */ -/* 8036D1B0 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036D1B4 BF 61 00 1C */ stmw r27, 0x1c(r1) -/* 8036D1B8 7C 7B 1B 78 */ mr r27, r3 -/* 8036D1BC 7C 9E 23 78 */ mr r30, r4 -/* 8036D1C0 80 05 D8 B8 */ lwz r0, gTRKBigEndian@l(r5) /* 0x8044D8B8@l */ -/* 8036D1C4 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D1C8 41 82 00 0C */ beq lbl_8036D1D4 -/* 8036D1CC 7F DF F3 78 */ mr r31, r30 -/* 8036D1D0 48 00 00 08 */ b lbl_8036D1D8 -lbl_8036D1D4: -/* 8036D1D4 3B E1 00 08 */ addi r31, r1, 8 -lbl_8036D1D8: -/* 8036D1D8 80 7B 00 0C */ lwz r3, 0xc(r27) -/* 8036D1DC 3B 80 00 08 */ li r28, 8 -/* 8036D1E0 80 1B 00 08 */ lwz r0, 8(r27) -/* 8036D1E4 3B A0 00 00 */ li r29, 0 -/* 8036D1E8 7C 03 00 50 */ subf r0, r3, r0 -/* 8036D1EC 7C 1C 00 40 */ cmplw r28, r0 -/* 8036D1F0 40 81 00 0C */ ble lbl_8036D1FC -/* 8036D1F4 3B A0 03 02 */ li r29, 0x302 -/* 8036D1F8 7C 1C 03 78 */ mr r28, r0 -lbl_8036D1FC: -/* 8036D1FC 38 83 00 10 */ addi r4, r3, 0x10 -/* 8036D200 7F E3 FB 78 */ mr r3, r31 -/* 8036D204 7F 85 E3 78 */ mr r5, r28 -/* 8036D208 7C 9B 22 14 */ add r4, r27, r4 -/* 8036D20C 4B C9 63 B5 */ bl TRK_memcpy -/* 8036D210 80 1B 00 0C */ lwz r0, 0xc(r27) -/* 8036D214 3C 60 80 45 */ lis r3, gTRKBigEndian@ha /* 0x8044D8B8@ha */ -/* 8036D218 7C 00 E2 14 */ add r0, r0, r28 -/* 8036D21C 90 1B 00 0C */ stw r0, 0xc(r27) -/* 8036D220 80 03 D8 B8 */ lwz r0, gTRKBigEndian@l(r3) /* 0x8044D8B8@l */ -/* 8036D224 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D228 40 82 00 4C */ bne lbl_8036D274 -/* 8036D22C 2C 1D 00 00 */ cmpwi r29, 0 -/* 8036D230 40 82 00 44 */ bne lbl_8036D274 -/* 8036D234 88 1F 00 07 */ lbz r0, 7(r31) -/* 8036D238 98 1E 00 00 */ stb r0, 0(r30) -/* 8036D23C 88 1F 00 06 */ lbz r0, 6(r31) -/* 8036D240 98 1E 00 01 */ stb r0, 1(r30) -/* 8036D244 88 1F 00 05 */ lbz r0, 5(r31) -/* 8036D248 98 1E 00 02 */ stb r0, 2(r30) -/* 8036D24C 88 1F 00 04 */ lbz r0, 4(r31) -/* 8036D250 98 1E 00 03 */ stb r0, 3(r30) -/* 8036D254 88 1F 00 03 */ lbz r0, 3(r31) -/* 8036D258 98 1E 00 04 */ stb r0, 4(r30) -/* 8036D25C 88 1F 00 02 */ lbz r0, 2(r31) -/* 8036D260 98 1E 00 05 */ stb r0, 5(r30) -/* 8036D264 88 1F 00 01 */ lbz r0, 1(r31) -/* 8036D268 98 1E 00 06 */ stb r0, 6(r30) -/* 8036D26C 88 1F 00 00 */ lbz r0, 0(r31) -/* 8036D270 98 1E 00 07 */ stb r0, 7(r30) -lbl_8036D274: -/* 8036D274 7F A3 EB 78 */ mr r3, r29 -/* 8036D278 BB 61 00 1C */ lmw r27, 0x1c(r1) -/* 8036D27C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8036D280 7C 08 03 A6 */ mtlr r0 -/* 8036D284 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036D288 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui32.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui32.s deleted file mode 100644 index f0f4de34ad..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui32.s +++ /dev/null @@ -1,68 +0,0 @@ -lbl_8036D01C: -/* 8036D01C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036D020 7C 08 02 A6 */ mflr r0 -/* 8036D024 3C C0 80 45 */ lis r6, gTRKBigEndian@ha /* 0x8044D8B8@ha */ -/* 8036D028 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036D02C BF 01 00 10 */ stmw r24, 0x10(r1) -/* 8036D030 7C 7C 1B 78 */ mr r28, r3 -/* 8036D034 7C BD 2B 78 */ mr r29, r5 -/* 8036D038 7C 9F 23 78 */ mr r31, r4 -/* 8036D03C 3B 66 D8 B8 */ addi r27, r6, gTRKBigEndian@l /* 0x8044D8B8@l */ -/* 8036D040 3B C0 00 00 */ li r30, 0 -/* 8036D044 38 60 00 00 */ li r3, 0 -/* 8036D048 48 00 00 A0 */ b lbl_8036D0E8 -lbl_8036D04C: -/* 8036D04C 80 1B 00 00 */ lwz r0, 0(r27) -/* 8036D050 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D054 41 82 00 0C */ beq lbl_8036D060 -/* 8036D058 7F F9 FB 78 */ mr r25, r31 -/* 8036D05C 48 00 00 08 */ b lbl_8036D064 -lbl_8036D060: -/* 8036D060 3B 21 00 08 */ addi r25, r1, 8 -lbl_8036D064: -/* 8036D064 80 7C 00 0C */ lwz r3, 0xc(r28) -/* 8036D068 3B 00 00 04 */ li r24, 4 -/* 8036D06C 80 1C 00 08 */ lwz r0, 8(r28) -/* 8036D070 3B 40 00 00 */ li r26, 0 -/* 8036D074 7C 03 00 50 */ subf r0, r3, r0 -/* 8036D078 7C 18 00 40 */ cmplw r24, r0 -/* 8036D07C 40 81 00 0C */ ble lbl_8036D088 -/* 8036D080 3B 40 03 02 */ li r26, 0x302 -/* 8036D084 7C 18 03 78 */ mr r24, r0 -lbl_8036D088: -/* 8036D088 38 83 00 10 */ addi r4, r3, 0x10 -/* 8036D08C 7F 23 CB 78 */ mr r3, r25 -/* 8036D090 7F 05 C3 78 */ mr r5, r24 -/* 8036D094 7C 9C 22 14 */ add r4, r28, r4 -/* 8036D098 4B C9 65 29 */ bl TRK_memcpy -/* 8036D09C 80 1C 00 0C */ lwz r0, 0xc(r28) -/* 8036D0A0 7C 00 C2 14 */ add r0, r0, r24 -/* 8036D0A4 90 1C 00 0C */ stw r0, 0xc(r28) -/* 8036D0A8 80 1B 00 00 */ lwz r0, 0(r27) -/* 8036D0AC 2C 00 00 00 */ cmpwi r0, 0 -/* 8036D0B0 40 82 00 2C */ bne lbl_8036D0DC -/* 8036D0B4 2C 1A 00 00 */ cmpwi r26, 0 -/* 8036D0B8 40 82 00 24 */ bne lbl_8036D0DC -/* 8036D0BC 88 19 00 03 */ lbz r0, 3(r25) -/* 8036D0C0 98 1F 00 00 */ stb r0, 0(r31) -/* 8036D0C4 88 19 00 02 */ lbz r0, 2(r25) -/* 8036D0C8 98 1F 00 01 */ stb r0, 1(r31) -/* 8036D0CC 88 19 00 01 */ lbz r0, 1(r25) -/* 8036D0D0 98 1F 00 02 */ stb r0, 2(r31) -/* 8036D0D4 88 19 00 00 */ lbz r0, 0(r25) -/* 8036D0D8 98 1F 00 03 */ stb r0, 3(r31) -lbl_8036D0DC: -/* 8036D0DC 7F 43 D3 78 */ mr r3, r26 -/* 8036D0E0 3B FF 00 04 */ addi r31, r31, 4 -/* 8036D0E4 3B DE 00 01 */ addi r30, r30, 1 -lbl_8036D0E8: -/* 8036D0E8 2C 03 00 00 */ cmpwi r3, 0 -/* 8036D0EC 40 82 00 0C */ bne lbl_8036D0F8 -/* 8036D0F0 7C 1E E8 00 */ cmpw r30, r29 -/* 8036D0F4 41 80 FF 58 */ blt lbl_8036D04C -lbl_8036D0F8: -/* 8036D0F8 BB 01 00 10 */ lmw r24, 0x10(r1) -/* 8036D0FC 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8036D100 7C 08 03 A6 */ mtlr r0 -/* 8036D104 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036D108 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui8.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui8.s deleted file mode 100644 index 7130a4917d..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui8.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_8036D10C: -/* 8036D10C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036D110 7C 08 02 A6 */ mflr r0 -/* 8036D114 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036D118 BF 41 00 08 */ stmw r26, 8(r1) -/* 8036D11C 7C 7A 1B 78 */ mr r26, r3 -/* 8036D120 7C 9B 23 78 */ mr r27, r4 -/* 8036D124 7C BC 2B 78 */ mr r28, r5 -/* 8036D128 3B A0 00 00 */ li r29, 0 -/* 8036D12C 38 60 00 00 */ li r3, 0 -/* 8036D130 48 00 00 50 */ b lbl_8036D180 -lbl_8036D134: -/* 8036D134 80 7A 00 0C */ lwz r3, 0xc(r26) -/* 8036D138 3B C0 00 01 */ li r30, 1 -/* 8036D13C 80 1A 00 08 */ lwz r0, 8(r26) -/* 8036D140 3B E0 00 00 */ li r31, 0 -/* 8036D144 7C 03 00 50 */ subf r0, r3, r0 -/* 8036D148 7C 1E 00 40 */ cmplw r30, r0 -/* 8036D14C 40 81 00 0C */ ble lbl_8036D158 -/* 8036D150 3B E0 03 02 */ li r31, 0x302 -/* 8036D154 7C 1E 03 78 */ mr r30, r0 -lbl_8036D158: -/* 8036D158 38 83 00 10 */ addi r4, r3, 0x10 -/* 8036D15C 7F C5 F3 78 */ mr r5, r30 -/* 8036D160 7C 7B EA 14 */ add r3, r27, r29 -/* 8036D164 7C 9A 22 14 */ add r4, r26, r4 -/* 8036D168 4B C9 64 59 */ bl TRK_memcpy -/* 8036D16C 80 1A 00 0C */ lwz r0, 0xc(r26) -/* 8036D170 7F E3 FB 78 */ mr r3, r31 -/* 8036D174 3B BD 00 01 */ addi r29, r29, 1 -/* 8036D178 7C 00 F2 14 */ add r0, r0, r30 -/* 8036D17C 90 1A 00 0C */ stw r0, 0xc(r26) -lbl_8036D180: -/* 8036D180 2C 03 00 00 */ cmpwi r3, 0 -/* 8036D184 40 82 00 0C */ bne lbl_8036D190 -/* 8036D188 7C 1D E0 00 */ cmpw r29, r28 -/* 8036D18C 41 80 FF A8 */ blt lbl_8036D134 -lbl_8036D190: -/* 8036D190 BB 41 00 08 */ lmw r26, 8(r1) -/* 8036D194 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036D198 7C 08 03 A6 */ mtlr r0 -/* 8036D19C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036D1A0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReleaseBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReleaseBuffer.s deleted file mode 100644 index 9e78089932..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReleaseBuffer.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_8036D68C: -/* 8036D68C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036D690 7C 08 02 A6 */ mflr r0 -/* 8036D694 2C 03 FF FF */ cmpwi r3, -1 -/* 8036D698 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036D69C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8036D6A0 41 82 00 3C */ beq lbl_8036D6DC -/* 8036D6A4 2C 03 00 00 */ cmpwi r3, 0 -/* 8036D6A8 41 80 00 34 */ blt lbl_8036D6DC -/* 8036D6AC 2C 03 00 03 */ cmpwi r3, 3 -/* 8036D6B0 40 80 00 2C */ bge lbl_8036D6DC -/* 8036D6B4 1C 83 08 90 */ mulli r4, r3, 0x890 -/* 8036D6B8 3C 60 80 45 */ lis r3, gTRKMsgBufs@ha /* 0x8044D8C0@ha */ -/* 8036D6BC 38 03 D8 C0 */ addi r0, r3, gTRKMsgBufs@l /* 0x8044D8C0@l */ -/* 8036D6C0 7F E0 22 14 */ add r31, r0, r4 -/* 8036D6C4 7F E3 FB 78 */ mr r3, r31 -/* 8036D6C8 48 00 1D D9 */ bl TRKAcquireMutex -/* 8036D6CC 38 00 00 00 */ li r0, 0 -/* 8036D6D0 7F E3 FB 78 */ mr r3, r31 -/* 8036D6D4 90 1F 00 04 */ stw r0, 4(r31) -/* 8036D6D8 48 00 1D C1 */ bl TRKReleaseMutex -lbl_8036D6DC: -/* 8036D6DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036D6E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8036D6E4 7C 08 03 A6 */ mtlr r0 -/* 8036D6E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036D6EC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKResetBuffer.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKResetBuffer.s deleted file mode 100644 index 51894cae95..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKResetBuffer.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8036D64C: -/* 8036D64C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036D650 7C 08 02 A6 */ mflr r0 -/* 8036D654 2C 04 00 00 */ cmpwi r4, 0 -/* 8036D658 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036D65C 38 00 00 00 */ li r0, 0 -/* 8036D660 90 03 00 08 */ stw r0, 8(r3) -/* 8036D664 90 03 00 0C */ stw r0, 0xc(r3) -/* 8036D668 40 82 00 14 */ bne lbl_8036D67C -/* 8036D66C 38 63 00 10 */ addi r3, r3, 0x10 -/* 8036D670 38 80 00 00 */ li r4, 0 -/* 8036D674 38 A0 08 80 */ li r5, 0x880 -/* 8036D678 4B C9 5F 19 */ bl TRK_memset -lbl_8036D67C: -/* 8036D67C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036D680 7C 08 03 A6 */ mtlr r0 -/* 8036D684 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036D688 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s deleted file mode 100644 index b8d5c74f50..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8036D61C: -/* 8036D61C 28 04 08 80 */ cmplwi r4, 0x880 -/* 8036D620 38 A0 00 00 */ li r5, 0 -/* 8036D624 40 81 00 0C */ ble lbl_8036D630 -/* 8036D628 38 A0 03 01 */ li r5, 0x301 -/* 8036D62C 48 00 00 18 */ b lbl_8036D644 -lbl_8036D630: -/* 8036D630 90 83 00 0C */ stw r4, 0xc(r3) -/* 8036D634 80 03 00 08 */ lwz r0, 8(r3) -/* 8036D638 7C 04 00 40 */ cmplw r4, r0 -/* 8036D63C 40 81 00 08 */ ble lbl_8036D644 -/* 8036D640 90 83 00 08 */ stw r4, 8(r3) -lbl_8036D644: -/* 8036D644 7C A3 2B 78 */ mr r3, r5 -/* 8036D648 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK.s deleted file mode 100644 index 0747ee56fe..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_80371560: -/* 80371560 38 21 FF FC */ addi r1, r1, -4 -/* 80371564 90 61 00 00 */ stw r3, 0(r1) -/* 80371568 3C 60 80 44 */ lis r3, gTRKCPUState@h /* 0x8044F338@h */ -/* 8037156C 60 63 F3 38 */ ori r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 80371570 BC 03 00 00 */ stmw r0, 0(r3) -/* 80371574 80 81 00 00 */ lwz r4, 0(r1) -/* 80371578 38 21 00 04 */ addi r1, r1, 4 -/* 8037157C 90 23 00 04 */ stw r1, 4(r3) -/* 80371580 90 83 00 0C */ stw r4, 0xc(r3) -/* 80371584 7C 88 02 A6 */ mflr r4 -/* 80371588 90 83 00 84 */ stw r4, 0x84(r3) -/* 8037158C 90 83 00 80 */ stw r4, 0x80(r3) -/* 80371590 7C 80 00 26 */ mfcr r4 -/* 80371594 90 83 00 88 */ stw r4, 0x88(r3) -/* 80371598 7C 80 00 A6 */ mfmsr r4 -/* 8037159C 60 83 80 00 */ ori r3, r4, 0x8000 -/* 803715A0 68 63 80 00 */ xori r3, r3, 0x8000 -/* 803715A4 7C 60 01 24 */ mtmsr r3 -/* 803715A8 7C 9B 03 A6 */ mtspr 0x1b, r4 -/* 803715AC 4B FF FC 45 */ bl TRKSaveExtended1Block -/* 803715B0 3C 60 80 44 */ lis r3, gTRKCPUState@h /* 0x8044F338@h */ -/* 803715B4 60 63 F3 38 */ ori r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 803715B8 B8 03 00 00 */ lmw r0, 0(r3) -/* 803715BC 38 00 00 00 */ li r0, 0 -/* 803715C0 7C 12 FB A6 */ mtspr 0x3f2, r0 -/* 803715C4 7C 15 FB A6 */ mtspr 0x3f5, r0 -/* 803715C8 3C 20 80 45 */ lis r1, 0x8045 /* 0x80459BC8@h */ -/* 803715CC 60 21 9B C8 */ ori r1, r1, 0x9BC8 /* 0x80459BC8@l */ -/* 803715D0 7C A3 2B 78 */ mr r3, r5 -/* 803715D4 48 00 08 D5 */ bl InitMetroTRKCommTable -/* 803715D8 2C 03 00 01 */ cmpwi r3, 1 -/* 803715DC 40 82 00 14 */ bne lbl_803715F0 -/* 803715E0 80 83 00 84 */ lwz r4, 0x84(r3) -/* 803715E4 7C 88 03 A6 */ mtlr r4 -/* 803715E8 B8 03 00 00 */ lmw r0, 0(r3) -/* 803715EC 4E 80 00 20 */ blr -lbl_803715F0: -/* 803715F0 48 00 05 AC */ b TRK_main -/* 803715F4 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s deleted file mode 100644 index 8356e60e62..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_803715F8: -/* 803715F8 38 21 FF FC */ addi r1, r1, -4 -/* 803715FC 90 61 00 00 */ stw r3, 0(r1) -/* 80371600 3C 60 80 44 */ lis r3, gTRKCPUState@h /* 0x8044F338@h */ -/* 80371604 60 63 F3 38 */ ori r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 80371608 BC 03 00 00 */ stmw r0, 0(r3) -/* 8037160C 80 81 00 00 */ lwz r4, 0(r1) -/* 80371610 38 21 00 04 */ addi r1, r1, 4 -/* 80371614 90 23 00 04 */ stw r1, 4(r3) -/* 80371618 90 83 00 0C */ stw r4, 0xc(r3) -/* 8037161C 7C 88 02 A6 */ mflr r4 -/* 80371620 90 83 00 84 */ stw r4, 0x84(r3) -/* 80371624 90 83 00 80 */ stw r4, 0x80(r3) -/* 80371628 7C 80 00 26 */ mfcr r4 -/* 8037162C 90 83 00 88 */ stw r4, 0x88(r3) -/* 80371630 7C 80 00 A6 */ mfmsr r4 -/* 80371634 60 83 80 00 */ ori r3, r4, 0x8000 -/* 80371638 7C 60 01 24 */ mtmsr r3 -/* 8037163C 7C 9B 03 A6 */ mtspr 0x1b, r4 -/* 80371640 4B FF FB B1 */ bl TRKSaveExtended1Block -/* 80371644 3C 60 80 44 */ lis r3, gTRKCPUState@h /* 0x8044F338@h */ -/* 80371648 60 63 F3 38 */ ori r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8037164C B8 03 00 00 */ lmw r0, 0(r3) -/* 80371650 38 00 00 00 */ li r0, 0 -/* 80371654 7C 12 FB A6 */ mtspr 0x3f2, r0 -/* 80371658 7C 15 FB A6 */ mtspr 0x3f5, r0 -/* 8037165C 3C 20 80 45 */ lis r1, 0x8045 /* 0x80459BC8@h */ -/* 80371660 60 21 9B C8 */ ori r1, r1, 0x9BC8 /* 0x80459BC8@l */ -/* 80371664 38 60 00 02 */ li r3, 2 -/* 80371668 48 00 08 41 */ bl InitMetroTRKCommTable -/* 8037166C 2C 03 00 01 */ cmpwi r3, 1 -/* 80371670 40 82 00 14 */ bne lbl_80371684 -/* 80371674 80 83 00 84 */ lwz r4, 0x84(r3) -/* 80371678 7C 88 03 A6 */ mtlr r4 -/* 8037167C B8 03 00 00 */ lmw r0, 0(r3) -/* 80371680 4E 80 00 20 */ blr -lbl_80371684: -/* 80371684 48 00 05 18 */ b TRK_main -/* 80371688 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__read_aram.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__read_aram.s deleted file mode 100644 index bc306ae858..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__read_aram.s +++ /dev/null @@ -1,85 +0,0 @@ -lbl_80371878: -/* 80371878 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8037187C 7C 08 02 A6 */ mflr r0 -/* 80371880 28 04 40 00 */ cmplwi r4, 0x4000 -/* 80371884 90 01 00 24 */ stw r0, 0x24(r1) -/* 80371888 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8037188C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80371890 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80371894 93 81 00 10 */ stw r28, 0x10(r1) -/* 80371898 7C 7C 1B 78 */ mr r28, r3 -/* 8037189C 41 80 00 F0 */ blt lbl_8037198C -/* 803718A0 80 A5 00 00 */ lwz r5, 0(r5) -/* 803718A4 3C 00 08 00 */ lis r0, 0x800 -/* 803718A8 7C 64 2A 14 */ add r3, r4, r5 -/* 803718AC 7C 03 00 40 */ cmplw r3, r0 -/* 803718B0 40 81 00 08 */ ble lbl_803718B8 -/* 803718B4 48 00 00 D8 */ b lbl_8037198C -lbl_803718B8: -/* 803718B8 54 80 06 FE */ clrlwi r0, r4, 0x1b -/* 803718BC 54 9E 00 34 */ rlwinm r30, r4, 0, 0, 0x1a -/* 803718C0 7F A5 02 14 */ add r29, r5, r0 -/* 803718C4 38 80 00 00 */ li r4, 0 -/* 803718C8 38 1D 00 1F */ addi r0, r29, 0x1f -/* 803718CC 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a -/* 803718D0 28 1D 00 00 */ cmplwi r29, 0 -/* 803718D4 38 7D 00 1F */ addi r3, r29, 0x1f -/* 803718D8 54 63 D9 7E */ srwi r3, r3, 5 -/* 803718DC 40 81 00 6C */ ble lbl_80371948 -/* 803718E0 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 803718E4 7C 09 03 A6 */ mtctr r0 -/* 803718E8 41 82 00 50 */ beq lbl_80371938 -lbl_803718EC: -/* 803718EC 7C 04 E3 AC */ dcbi r4, r28 -/* 803718F0 38 84 00 20 */ addi r4, r4, 0x20 -/* 803718F4 7C 04 E3 AC */ dcbi r4, r28 -/* 803718F8 38 84 00 20 */ addi r4, r4, 0x20 -/* 803718FC 7C 04 E3 AC */ dcbi r4, r28 -/* 80371900 38 84 00 20 */ addi r4, r4, 0x20 -/* 80371904 7C 04 E3 AC */ dcbi r4, r28 -/* 80371908 38 84 00 20 */ addi r4, r4, 0x20 -/* 8037190C 7C 04 E3 AC */ dcbi r4, r28 -/* 80371910 38 84 00 20 */ addi r4, r4, 0x20 -/* 80371914 7C 04 E3 AC */ dcbi r4, r28 -/* 80371918 38 84 00 20 */ addi r4, r4, 0x20 -/* 8037191C 7C 04 E3 AC */ dcbi r4, r28 -/* 80371920 38 84 00 20 */ addi r4, r4, 0x20 -/* 80371924 7C 04 E3 AC */ dcbi r4, r28 -/* 80371928 38 84 00 20 */ addi r4, r4, 0x20 -/* 8037192C 42 00 FF C0 */ bdnz lbl_803718EC -/* 80371930 70 63 00 07 */ andi. r3, r3, 7 -/* 80371934 41 82 00 14 */ beq lbl_80371948 -lbl_80371938: -/* 80371938 7C 69 03 A6 */ mtctr r3 -lbl_8037193C: -/* 8037193C 7C 04 E3 AC */ dcbi r4, r28 -/* 80371940 38 84 00 20 */ addi r4, r4, 0x20 -/* 80371944 42 00 FF F8 */ bdnz lbl_8037193C -lbl_80371948: -/* 80371948 4B FD EC 51 */ bl ARGetDMAStatus -/* 8037194C 28 03 00 00 */ cmplwi r3, 0 -/* 80371950 40 82 FF F8 */ bne lbl_80371948 -/* 80371954 4B FD EF 3D */ bl __ARGetInterruptStatus -/* 80371958 7C 7F 1B 78 */ mr r31, r3 -/* 8037195C 4B FD EF 15 */ bl __ARClearInterrupt -/* 80371960 7F 84 E3 78 */ mr r4, r28 -/* 80371964 7F C5 F3 78 */ mr r5, r30 -/* 80371968 7F A6 EB 78 */ mr r6, r29 -/* 8037196C 38 60 00 01 */ li r3, 1 -/* 80371970 4B FD EC 65 */ bl ARStartDMA -lbl_80371974: -/* 80371974 4B FD EF 1D */ bl __ARGetInterruptStatus -/* 80371978 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 8037197C 41 82 FF F8 */ beq lbl_80371974 -/* 80371980 57 E0 04 3F */ clrlwi. r0, r31, 0x10 -/* 80371984 40 82 00 08 */ bne lbl_8037198C -/* 80371988 4B FD EE E9 */ bl __ARClearInterrupt -lbl_8037198C: -/* 8037198C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80371990 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80371994 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80371998 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8037199C 83 81 00 10 */ lwz r28, 0x10(r1) -/* 803719A0 7C 08 03 A6 */ mtlr r0 -/* 803719A4 38 21 00 20 */ addi r1, r1, 0x20 -/* 803719A8 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__write_aram.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__write_aram.s deleted file mode 100644 index 548da9c234..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__write_aram.s +++ /dev/null @@ -1,136 +0,0 @@ -lbl_8037168C: -/* 8037168C 54 2B 06 FE */ clrlwi r11, r1, 0x1b -/* 80371690 7C 2C 0B 78 */ mr r12, r1 -/* 80371694 21 6B FF 80 */ subfic r11, r11, -128 -/* 80371698 7C 21 59 6E */ stwux r1, r1, r11 -/* 8037169C 7C 08 02 A6 */ mflr r0 -/* 803716A0 90 0C 00 04 */ stw r0, 4(r12) -/* 803716A4 BE EC FF DC */ stmw r23, -0x24(r12) -/* 803716A8 7C 9F 23 78 */ mr r31, r4 -/* 803716AC 28 1F 40 00 */ cmplwi r31, 0x4000 -/* 803716B0 7C 7E 1B 78 */ mr r30, r3 -/* 803716B4 7C B7 2B 78 */ mr r23, r5 -/* 803716B8 41 80 01 A8 */ blt lbl_80371860 -/* 803716BC 80 97 00 00 */ lwz r4, 0(r23) -/* 803716C0 3C 00 08 00 */ lis r0, 0x800 -/* 803716C4 7C 7F 22 14 */ add r3, r31, r4 -/* 803716C8 7C 03 00 40 */ cmplw r3, r0 -/* 803716CC 40 81 00 08 */ ble lbl_803716D4 -/* 803716D0 48 00 01 90 */ b lbl_80371860 -lbl_803716D4: -/* 803716D4 57 E0 06 FE */ clrlwi r0, r31, 0x1b -/* 803716D8 57 FB 00 34 */ rlwinm r27, r31, 0, 0, 0x1a -/* 803716DC 7F 44 02 14 */ add r26, r4, r0 -/* 803716E0 3B 00 00 00 */ li r24, 0 -/* 803716E4 38 1A 00 1F */ addi r0, r26, 0x1f -/* 803716E8 54 1A 00 34 */ rlwinm r26, r0, 0, 0, 0x1a -/* 803716EC 28 1A 00 00 */ cmplwi r26, 0 -/* 803716F0 38 7A 00 1F */ addi r3, r26, 0x1f -/* 803716F4 54 63 D9 7E */ srwi r3, r3, 5 -/* 803716F8 40 81 00 6C */ ble lbl_80371764 -/* 803716FC 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 80371700 7C 09 03 A6 */ mtctr r0 -/* 80371704 41 82 00 50 */ beq lbl_80371754 -lbl_80371708: -/* 80371708 7C 18 F0 AC */ dcbf r24, r30 -/* 8037170C 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371710 7C 18 F0 AC */ dcbf r24, r30 -/* 80371714 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371718 7C 18 F0 AC */ dcbf r24, r30 -/* 8037171C 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371720 7C 18 F0 AC */ dcbf r24, r30 -/* 80371724 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371728 7C 18 F0 AC */ dcbf r24, r30 -/* 8037172C 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371730 7C 18 F0 AC */ dcbf r24, r30 -/* 80371734 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371738 7C 18 F0 AC */ dcbf r24, r30 -/* 8037173C 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371740 7C 18 F0 AC */ dcbf r24, r30 -/* 80371744 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371748 42 00 FF C0 */ bdnz lbl_80371708 -/* 8037174C 70 63 00 07 */ andi. r3, r3, 7 -/* 80371750 41 82 00 14 */ beq lbl_80371764 -lbl_80371754: -/* 80371754 7C 69 03 A6 */ mtctr r3 -lbl_80371758: -/* 80371758 7C 18 F0 AC */ dcbf r24, r30 -/* 8037175C 3B 18 00 20 */ addi r24, r24, 0x20 -/* 80371760 42 00 FF F8 */ bdnz lbl_80371758 -lbl_80371764: -/* 80371764 4B FD EE 35 */ bl ARGetDMAStatus -/* 80371768 28 03 00 00 */ cmplwi r3, 0 -/* 8037176C 40 82 FF F8 */ bne lbl_80371764 -/* 80371770 4B FD F1 21 */ bl __ARGetInterruptStatus -/* 80371774 57 F8 06 FF */ clrlwi. r24, r31, 0x1b -/* 80371778 7C 7D 1B 78 */ mr r29, r3 -/* 8037177C 3F 20 08 00 */ lis r25, 0x800 -/* 80371780 41 82 00 48 */ beq lbl_803717C8 -/* 80371784 3B 81 00 20 */ addi r28, r1, 0x20 -/* 80371788 7F 79 DB 78 */ mr r25, r27 -/* 8037178C 7C 00 E3 AC */ dcbi 0, r28 -/* 80371790 4B FD F0 E1 */ bl __ARClearInterrupt -/* 80371794 7F 84 E3 78 */ mr r4, r28 -/* 80371798 7F 65 DB 78 */ mr r5, r27 -/* 8037179C 38 60 00 01 */ li r3, 1 -/* 803717A0 38 C0 00 20 */ li r6, 0x20 -/* 803717A4 4B FD EE 31 */ bl ARStartDMA -lbl_803717A8: -/* 803717A8 4B FD F0 E9 */ bl __ARGetInterruptStatus -/* 803717AC 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 803717B0 41 82 FF F8 */ beq lbl_803717A8 -/* 803717B4 7F C3 F3 78 */ mr r3, r30 -/* 803717B8 7F 05 C3 78 */ mr r5, r24 -/* 803717BC 38 81 00 20 */ addi r4, r1, 0x20 -/* 803717C0 4B C9 1E 01 */ bl TRK_memcpy -/* 803717C4 7C 00 F0 AC */ dcbf 0, r30 -lbl_803717C8: -/* 803717C8 80 17 00 00 */ lwz r0, 0(r23) -/* 803717CC 7F FF 02 14 */ add r31, r31, r0 -/* 803717D0 57 F8 06 FF */ clrlwi. r24, r31, 0x1b -/* 803717D4 41 82 00 58 */ beq lbl_8037182C -/* 803717D8 57 F7 00 34 */ rlwinm r23, r31, 0, 0, 0x1a -/* 803717DC 7C 17 C8 40 */ cmplw r23, r25 -/* 803717E0 41 82 00 30 */ beq lbl_80371810 -/* 803717E4 3B 81 00 20 */ addi r28, r1, 0x20 -/* 803717E8 7C 00 E3 AC */ dcbi 0, r28 -/* 803717EC 4B FD F0 85 */ bl __ARClearInterrupt -/* 803717F0 7F 84 E3 78 */ mr r4, r28 -/* 803717F4 7E E5 BB 78 */ mr r5, r23 -/* 803717F8 38 60 00 01 */ li r3, 1 -/* 803717FC 38 C0 00 20 */ li r6, 0x20 -/* 80371800 4B FD ED D5 */ bl ARStartDMA -lbl_80371804: -/* 80371804 4B FD F0 8D */ bl __ARGetInterruptStatus -/* 80371808 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 8037180C 41 82 FF F8 */ beq lbl_80371804 -lbl_80371810: -/* 80371810 7F 3E FA 14 */ add r25, r30, r31 -/* 80371814 38 81 00 20 */ addi r4, r1, 0x20 -/* 80371818 7F 23 CB 78 */ mr r3, r25 -/* 8037181C 20 B8 00 20 */ subfic r5, r24, 0x20 -/* 80371820 7C 84 C2 14 */ add r4, r4, r24 -/* 80371824 4B C9 1D 9D */ bl TRK_memcpy -/* 80371828 7C 00 C8 AC */ dcbf 0, r25 -lbl_8037182C: -/* 8037182C 7C 00 04 AC */ sync -/* 80371830 4B FD F0 41 */ bl __ARClearInterrupt -/* 80371834 7F C4 F3 78 */ mr r4, r30 -/* 80371838 7F 65 DB 78 */ mr r5, r27 -/* 8037183C 7F 46 D3 78 */ mr r6, r26 -/* 80371840 38 60 00 00 */ li r3, 0 -/* 80371844 4B FD ED 91 */ bl ARStartDMA -/* 80371848 57 A0 04 3F */ clrlwi. r0, r29, 0x10 -/* 8037184C 40 82 00 14 */ bne lbl_80371860 -lbl_80371850: -/* 80371850 4B FD F0 41 */ bl __ARGetInterruptStatus -/* 80371854 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 80371858 41 82 FF F8 */ beq lbl_80371850 -/* 8037185C 4B FD F0 15 */ bl __ARClearInterrupt -lbl_80371860: -/* 80371860 81 41 00 00 */ lwz r10, 0(r1) -/* 80371864 BA EA FF DC */ lmw r23, -0x24(r10) -/* 80371868 80 0A 00 04 */ lwz r0, 4(r10) -/* 8037186C 7C 08 03 A6 */ mtlr r0 -/* 80371870 7D 41 53 78 */ mr r1, r10 -/* 80371874 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/__TRK_copy_vectors.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/__TRK_copy_vectors.s deleted file mode 100644 index 14ebb87cfd..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/__TRK_copy_vectors.s +++ /dev/null @@ -1,83 +0,0 @@ -lbl_803719F8: -/* 803719F8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803719FC 7C 08 02 A6 */ mflr r0 -/* 80371A00 3C 60 80 45 */ lis r3, lc_base@ha /* 0x8044F810@ha */ -/* 80371A04 90 01 00 24 */ stw r0, 0x24(r1) -/* 80371A08 38 63 F8 10 */ addi r3, r3, lc_base@l /* 0x8044F810@l */ -/* 80371A0C BF 61 00 0C */ stmw r27, 0xc(r1) -/* 80371A10 80 63 00 00 */ lwz r3, 0(r3) -/* 80371A14 28 03 00 44 */ cmplwi r3, 0x44 -/* 80371A18 41 81 00 2C */ bgt lbl_80371A44 -/* 80371A1C 38 03 40 00 */ addi r0, r3, 0x4000 -/* 80371A20 28 00 00 44 */ cmplwi r0, 0x44 -/* 80371A24 40 81 00 20 */ ble lbl_80371A44 -/* 80371A28 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80371A2C 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 80371A30 80 03 02 38 */ lwz r0, 0x238(r3) -/* 80371A34 54 00 07 BF */ clrlwi. r0, r0, 0x1e -/* 80371A38 41 82 00 0C */ beq lbl_80371A44 -/* 80371A3C 38 A0 00 44 */ li r5, 0x44 -/* 80371A40 48 00 00 0C */ b lbl_80371A4C -lbl_80371A44: -/* 80371A44 3C 60 80 00 */ lis r3, 0x8000 /* 0x80000044@ha */ -/* 80371A48 38 A3 00 44 */ addi r5, r3, 0x0044 /* 0x80000044@l */ -lbl_80371A4C: -/* 80371A4C 3C 80 80 3D */ lis r4, TRK_ISR_OFFSETS@ha /* 0x803D3268@ha */ -/* 80371A50 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80371A54 83 A5 00 00 */ lwz r29, 0(r5) -/* 80371A58 3B E4 32 68 */ addi r31, r4, TRK_ISR_OFFSETS@l /* 0x803D3268@l */ -/* 80371A5C 3B 83 F3 38 */ addi r28, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 80371A60 3B C0 00 00 */ li r30, 0 -lbl_80371A64: -/* 80371A64 38 00 00 01 */ li r0, 1 -/* 80371A68 7C 00 F0 30 */ slw r0, r0, r30 -/* 80371A6C 7F A0 00 39 */ and. r0, r29, r0 -/* 80371A70 41 82 00 90 */ beq lbl_80371B00 -/* 80371A74 2C 1E 00 04 */ cmpwi r30, 4 -/* 80371A78 41 82 00 88 */ beq lbl_80371B00 -/* 80371A7C 3C 60 80 45 */ lis r3, lc_base@ha /* 0x8044F810@ha */ -/* 80371A80 80 DF 00 00 */ lwz r6, 0(r31) -/* 80371A84 38 63 F8 10 */ addi r3, r3, lc_base@l /* 0x8044F810@l */ -/* 80371A88 80 63 00 00 */ lwz r3, 0(r3) -/* 80371A8C 7C 06 18 40 */ cmplw r6, r3 -/* 80371A90 41 80 00 24 */ blt lbl_80371AB4 -/* 80371A94 38 03 40 00 */ addi r0, r3, 0x4000 -/* 80371A98 7C 06 00 40 */ cmplw r6, r0 -/* 80371A9C 40 80 00 18 */ bge lbl_80371AB4 -/* 80371AA0 80 1C 02 38 */ lwz r0, 0x238(r28) -/* 80371AA4 54 00 07 BF */ clrlwi. r0, r0, 0x1e -/* 80371AA8 41 82 00 0C */ beq lbl_80371AB4 -/* 80371AAC 7C DB 33 78 */ mr r27, r6 -/* 80371AB0 48 00 00 2C */ b lbl_80371ADC -lbl_80371AB4: -/* 80371AB4 3C 00 7E 00 */ lis r0, 0x7e00 -/* 80371AB8 7C 06 00 40 */ cmplw r6, r0 -/* 80371ABC 41 80 00 18 */ blt lbl_80371AD4 -/* 80371AC0 3C 00 80 00 */ lis r0, 0x8000 -/* 80371AC4 7C 06 00 40 */ cmplw r6, r0 -/* 80371AC8 41 81 00 0C */ bgt lbl_80371AD4 -/* 80371ACC 7C DB 33 78 */ mr r27, r6 -/* 80371AD0 48 00 00 0C */ b lbl_80371ADC -lbl_80371AD4: -/* 80371AD4 54 C0 00 BE */ clrlwi r0, r6, 2 -/* 80371AD8 64 1B 80 00 */ oris r27, r0, 0x8000 -lbl_80371ADC: -/* 80371ADC 3C 80 80 00 */ lis r4, __TRK_unknown_data@ha /* 0x800035E4@ha */ -/* 80371AE0 7F 63 DB 78 */ mr r3, r27 -/* 80371AE4 38 04 35 E4 */ addi r0, r4, __TRK_unknown_data@l /* 0x800035E4@l */ -/* 80371AE8 38 A0 01 00 */ li r5, 0x100 -/* 80371AEC 7C 80 32 14 */ add r4, r0, r6 -/* 80371AF0 4B C9 1A D1 */ bl TRK_memcpy -/* 80371AF4 7F 63 DB 78 */ mr r3, r27 -/* 80371AF8 38 80 01 00 */ li r4, 0x100 -/* 80371AFC 4B FF DA 4D */ bl TRK_flush_cache -lbl_80371B00: -/* 80371B00 3B DE 00 01 */ addi r30, r30, 1 -/* 80371B04 3B FF 00 04 */ addi r31, r31, 4 -/* 80371B08 2C 1E 00 0E */ cmpwi r30, 0xe -/* 80371B0C 40 81 FF 58 */ ble lbl_80371A64 -/* 80371B10 BB 61 00 0C */ lmw r27, 0xc(r1) -/* 80371B14 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80371B18 7C 08 03 A6 */ mtlr r0 -/* 80371B1C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80371B20 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/InitMetroTRKCommTable.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/InitMetroTRKCommTable.s deleted file mode 100644 index cd39144f02..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/InitMetroTRKCommTable.s +++ /dev/null @@ -1,161 +0,0 @@ -lbl_80371EA8: -/* 80371EA8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80371EAC 7C 08 02 A6 */ mflr r0 -/* 80371EB0 3C 80 80 3A */ lis r4, EndofProgramInstruction@ha /* 0x803A2C08@ha */ -/* 80371EB4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80371EB8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80371EBC 3B E0 00 01 */ li r31, 1 -/* 80371EC0 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80371EC4 7C 7E 1B 78 */ mr r30, r3 -/* 80371EC8 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80371ECC 3B A4 2C 08 */ addi r29, r4, EndofProgramInstruction@l /* 0x803A2C08@l */ -/* 80371ED0 7F C4 F3 78 */ mr r4, r30 -/* 80371ED4 38 7D 00 08 */ addi r3, r29, 8 -/* 80371ED8 4C C6 31 82 */ crclr 6 -/* 80371EDC 4B C9 4B E1 */ bl OSReport -/* 80371EE0 3C 60 80 45 */ lis r3, data_8044F820@ha /* 0x8044F820@ha */ -/* 80371EE4 38 00 00 00 */ li r0, 0 -/* 80371EE8 2C 1E 00 02 */ cmpwi r30, 2 -/* 80371EEC 98 03 F8 20 */ stb r0, data_8044F820@l(r3) /* 0x8044F820@l */ -/* 80371EF0 40 82 00 A4 */ bne lbl_80371F94 -/* 80371EF4 38 7D 00 20 */ addi r3, r29, 0x20 -/* 80371EF8 4C C6 31 82 */ crclr 6 -/* 80371EFC 4B C9 4B C1 */ bl OSReport -/* 80371F00 3F C0 80 45 */ lis r30, data_8044F820@ha /* 0x8044F820@ha */ -/* 80371F04 3D 80 80 37 */ lis r12, udp_cc_initialize@ha /* 0x80372354@ha */ -/* 80371F08 3D 60 80 3D */ lis r11, gDBCommTable@ha /* 0x803D32A8@ha */ -/* 80371F0C 3D 40 80 37 */ lis r10, udp_cc_open@ha /* 0x80372344@ha */ -/* 80371F10 3D 20 80 37 */ lis r9, udp_cc_close@ha /* 0x8037233C@ha */ -/* 80371F14 3D 00 80 37 */ lis r8, udp_cc_read@ha /* 0x80372334@ha */ -/* 80371F18 3C E0 80 37 */ lis r7, udp_cc_write@ha /* 0x8037232C@ha */ -/* 80371F1C 3C C0 80 37 */ lis r6, udp_cc_shutdown@ha /* 0x8037234C@ha */ -/* 80371F20 3C A0 80 37 */ lis r5, udp_cc_peek@ha /* 0x80372324@ha */ -/* 80371F24 3C 80 80 37 */ lis r4, udp_cc_pre_continue@ha /* 0x8037231C@ha */ -/* 80371F28 3C 60 80 37 */ lis r3, udp_cc_post_stop@ha /* 0x80372314@ha */ -/* 80371F2C 3B FE F8 20 */ addi r31, r30, data_8044F820@l /* 0x8044F820@l */ -/* 80371F30 3B A0 00 01 */ li r29, 1 -/* 80371F34 3B CC 23 54 */ addi r30, r12, udp_cc_initialize@l /* 0x80372354@l */ -/* 80371F38 39 8B 32 A8 */ addi r12, r11, gDBCommTable@l /* 0x803D32A8@l */ -/* 80371F3C 39 6A 23 44 */ addi r11, r10, udp_cc_open@l /* 0x80372344@l */ -/* 80371F40 39 49 23 3C */ addi r10, r9, udp_cc_close@l /* 0x8037233C@l */ -/* 80371F44 39 28 23 34 */ addi r9, r8, udp_cc_read@l /* 0x80372334@l */ -/* 80371F48 39 07 23 2C */ addi r8, r7, udp_cc_write@l /* 0x8037232C@l */ -/* 80371F4C 38 E6 23 4C */ addi r7, r6, udp_cc_shutdown@l /* 0x8037234C@l */ -/* 80371F50 38 C5 23 24 */ addi r6, r5, udp_cc_peek@l /* 0x80372324@l */ -/* 80371F54 38 A4 23 1C */ addi r5, r4, udp_cc_pre_continue@l /* 0x8037231C@l */ -/* 80371F58 38 83 23 14 */ addi r4, r3, udp_cc_post_stop@l /* 0x80372314@l */ -/* 80371F5C 38 00 00 00 */ li r0, 0 -/* 80371F60 9B BF 00 00 */ stb r29, 0(r31) -/* 80371F64 38 60 00 00 */ li r3, 0 -/* 80371F68 93 CC 00 00 */ stw r30, 0(r12) -/* 80371F6C 91 6C 00 18 */ stw r11, 0x18(r12) -/* 80371F70 91 4C 00 1C */ stw r10, 0x1c(r12) -/* 80371F74 91 2C 00 10 */ stw r9, 0x10(r12) -/* 80371F78 91 0C 00 14 */ stw r8, 0x14(r12) -/* 80371F7C 90 EC 00 08 */ stw r7, 8(r12) -/* 80371F80 90 CC 00 0C */ stw r6, 0xc(r12) -/* 80371F84 90 AC 00 20 */ stw r5, 0x20(r12) -/* 80371F88 90 8C 00 24 */ stw r4, 0x24(r12) -/* 80371F8C 90 0C 00 04 */ stw r0, 4(r12) -/* 80371F90 48 00 01 68 */ b lbl_803720F8 -lbl_80371F94: -/* 80371F94 2C 1E 00 01 */ cmpwi r30, 1 -/* 80371F98 40 82 00 98 */ bne lbl_80372030 -/* 80371F9C 38 7D 00 38 */ addi r3, r29, 0x38 -/* 80371FA0 4C C6 31 82 */ crclr 6 -/* 80371FA4 4B C9 4B 19 */ bl OSReport -/* 80371FA8 48 00 18 05 */ bl Hu_IsStub -/* 80371FAC 3F E0 80 37 */ lis r31, gdev_cc_initialize@ha /* 0x80372BCC@ha */ -/* 80371FB0 3D 80 80 37 */ lis r12, gdev_cc_open@ha /* 0x80372BA0@ha */ -/* 80371FB4 3B FF 2B CC */ addi r31, r31, gdev_cc_initialize@l /* 0x80372BCC@l */ -/* 80371FB8 3F C0 80 3D */ lis r30, gDBCommTable@ha /* 0x803D32A8@ha */ -/* 80371FBC 3D 60 80 37 */ lis r11, gdev_cc_close@ha /* 0x80372B98@ha */ -/* 80371FC0 3D 40 80 37 */ lis r10, gdev_cc_read@ha /* 0x80372AA4@ha */ -/* 80371FC4 3D 20 80 37 */ lis r9, gdev_cc_write@ha /* 0x803729E4@ha */ -/* 80371FC8 3D 00 80 37 */ lis r8, gdev_cc_shutdown@ha /* 0x80372BC4@ha */ -/* 80371FCC 3C E0 80 37 */ lis r7, gdev_cc_peek@ha /* 0x8037292C@ha */ -/* 80371FD0 3C C0 80 37 */ lis r6, gdev_cc_pre_continue@ha /* 0x803729C0@ha */ -/* 80371FD4 3C A0 80 37 */ lis r5, gdev_cc_post_stop@ha /* 0x8037299C@ha */ -/* 80371FD8 3C 80 80 37 */ lis r4, gdev_cc_initinterrupts@ha /* 0x80372908@ha */ -/* 80371FDC 97 FE 32 A8 */ stwu r31, gDBCommTable@l(r30) /* 0x803D32A8@l */ -/* 80371FE0 39 8C 2B A0 */ addi r12, r12, gdev_cc_open@l /* 0x80372BA0@l */ -/* 80371FE4 39 6B 2B 98 */ addi r11, r11, gdev_cc_close@l /* 0x80372B98@l */ -/* 80371FE8 39 4A 2A A4 */ addi r10, r10, gdev_cc_read@l /* 0x80372AA4@l */ -/* 80371FEC 39 29 29 E4 */ addi r9, r9, gdev_cc_write@l /* 0x803729E4@l */ -/* 80371FF0 39 08 2B C4 */ addi r8, r8, gdev_cc_shutdown@l /* 0x80372BC4@l */ -/* 80371FF4 38 E7 29 2C */ addi r7, r7, gdev_cc_peek@l /* 0x8037292C@l */ -/* 80371FF8 38 C6 29 C0 */ addi r6, r6, gdev_cc_pre_continue@l /* 0x803729C0@l */ -/* 80371FFC 38 A5 29 9C */ addi r5, r5, gdev_cc_post_stop@l /* 0x8037299C@l */ -/* 80372000 38 04 29 08 */ addi r0, r4, gdev_cc_initinterrupts@l /* 0x80372908@l */ -/* 80372004 91 9E 00 18 */ stw r12, 0x18(r30) -/* 80372008 7C 7F 1B 78 */ mr r31, r3 -/* 8037200C 91 7E 00 1C */ stw r11, 0x1c(r30) -/* 80372010 91 5E 00 10 */ stw r10, 0x10(r30) -/* 80372014 91 3E 00 14 */ stw r9, 0x14(r30) -/* 80372018 91 1E 00 08 */ stw r8, 8(r30) -/* 8037201C 90 FE 00 0C */ stw r7, 0xc(r30) -/* 80372020 90 DE 00 20 */ stw r6, 0x20(r30) -/* 80372024 90 BE 00 24 */ stw r5, 0x24(r30) -/* 80372028 90 1E 00 04 */ stw r0, 4(r30) -/* 8037202C 48 00 00 C8 */ b lbl_803720F4 -lbl_80372030: -/* 80372030 2C 1E 00 00 */ cmpwi r30, 0 -/* 80372034 40 82 00 98 */ bne lbl_803720CC -/* 80372038 38 7D 00 5C */ addi r3, r29, 0x5c -/* 8037203C 4C C6 31 82 */ crclr 6 -/* 80372040 4B C9 4A 7D */ bl OSReport -/* 80372044 48 00 0C E1 */ bl AMC_IsStub -/* 80372048 3F E0 80 37 */ lis r31, ddh_cc_initialize@ha /* 0x80372618@ha */ -/* 8037204C 3D 80 80 37 */ lis r12, ddh_cc_open@ha /* 0x803725EC@ha */ -/* 80372050 3B FF 26 18 */ addi r31, r31, ddh_cc_initialize@l /* 0x80372618@l */ -/* 80372054 3F C0 80 3D */ lis r30, gDBCommTable@ha /* 0x803D32A8@ha */ -/* 80372058 3D 60 80 37 */ lis r11, ddh_cc_close@ha /* 0x803725E4@ha */ -/* 8037205C 3D 40 80 37 */ lis r10, ddh_cc_read@ha /* 0x803724F8@ha */ -/* 80372060 3D 20 80 37 */ lis r9, ddh_cc_write@ha /* 0x80372438@ha */ -/* 80372064 3D 00 80 37 */ lis r8, ddh_cc_shutdown@ha /* 0x80372610@ha */ -/* 80372068 3C E0 80 37 */ lis r7, ddh_cc_peek@ha /* 0x80372380@ha */ -/* 8037206C 3C C0 80 37 */ lis r6, ddh_cc_pre_continue@ha /* 0x80372414@ha */ -/* 80372070 3C A0 80 37 */ lis r5, ddh_cc_post_stop@ha /* 0x803723F0@ha */ -/* 80372074 3C 80 80 37 */ lis r4, ddh_cc_initinterrupts@ha /* 0x8037235C@ha */ -/* 80372078 97 FE 32 A8 */ stwu r31, gDBCommTable@l(r30) /* 0x803D32A8@l */ -/* 8037207C 39 8C 25 EC */ addi r12, r12, ddh_cc_open@l /* 0x803725EC@l */ -/* 80372080 39 6B 25 E4 */ addi r11, r11, ddh_cc_close@l /* 0x803725E4@l */ -/* 80372084 39 4A 24 F8 */ addi r10, r10, ddh_cc_read@l /* 0x803724F8@l */ -/* 80372088 39 29 24 38 */ addi r9, r9, ddh_cc_write@l /* 0x80372438@l */ -/* 8037208C 39 08 26 10 */ addi r8, r8, ddh_cc_shutdown@l /* 0x80372610@l */ -/* 80372090 38 E7 23 80 */ addi r7, r7, ddh_cc_peek@l /* 0x80372380@l */ -/* 80372094 38 C6 24 14 */ addi r6, r6, ddh_cc_pre_continue@l /* 0x80372414@l */ -/* 80372098 38 A5 23 F0 */ addi r5, r5, ddh_cc_post_stop@l /* 0x803723F0@l */ -/* 8037209C 38 04 23 5C */ addi r0, r4, ddh_cc_initinterrupts@l /* 0x8037235C@l */ -/* 803720A0 91 9E 00 18 */ stw r12, 0x18(r30) -/* 803720A4 7C 7F 1B 78 */ mr r31, r3 -/* 803720A8 91 7E 00 1C */ stw r11, 0x1c(r30) -/* 803720AC 91 5E 00 10 */ stw r10, 0x10(r30) -/* 803720B0 91 3E 00 14 */ stw r9, 0x14(r30) -/* 803720B4 91 1E 00 08 */ stw r8, 8(r30) -/* 803720B8 90 FE 00 0C */ stw r7, 0xc(r30) -/* 803720BC 90 DE 00 20 */ stw r6, 0x20(r30) -/* 803720C0 90 BE 00 24 */ stw r5, 0x24(r30) -/* 803720C4 90 1E 00 04 */ stw r0, 4(r30) -/* 803720C8 48 00 00 2C */ b lbl_803720F4 -lbl_803720CC: -/* 803720CC 7F C4 F3 78 */ mr r4, r30 -/* 803720D0 38 7D 00 80 */ addi r3, r29, 0x80 -/* 803720D4 4C C6 31 82 */ crclr 6 -/* 803720D8 4B C9 49 E5 */ bl OSReport -/* 803720DC 38 7D 00 AC */ addi r3, r29, 0xac -/* 803720E0 4C C6 31 82 */ crclr 6 -/* 803720E4 4B C9 49 D9 */ bl OSReport -/* 803720E8 38 7D 00 DC */ addi r3, r29, 0xdc -/* 803720EC 4C C6 31 82 */ crclr 6 -/* 803720F0 4B C9 49 CD */ bl OSReport -lbl_803720F4: -/* 803720F4 7F E3 FB 78 */ mr r3, r31 -lbl_803720F8: -/* 803720F8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803720FC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80372100 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80372104 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80372108 7C 08 03 A6 */ mtlr r0 -/* 8037210C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80372110 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKLoadContext.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKLoadContext.s deleted file mode 100644 index d7a03dd402..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKLoadContext.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80371BF4: -/* 80371BF4 80 03 00 00 */ lwz r0, 0(r3) -/* 80371BF8 80 23 00 04 */ lwz r1, 4(r3) -/* 80371BFC 80 43 00 08 */ lwz r2, 8(r3) -/* 80371C00 A0 A3 01 A2 */ lhz r5, 0x1a2(r3) -/* 80371C04 54 A6 07 BD */ rlwinm. r6, r5, 0, 0x1e, 0x1e -/* 80371C08 41 82 00 14 */ beq lbl_80371C1C -/* 80371C0C 54 A5 07 FA */ rlwinm r5, r5, 0, 0x1f, 0x1d -/* 80371C10 B0 A3 01 A2 */ sth r5, 0x1a2(r3) -/* 80371C14 B8 A3 00 14 */ lmw r5, 0x14(r3) -/* 80371C18 48 00 00 08 */ b lbl_80371C20 -lbl_80371C1C: -/* 80371C1C B9 A3 00 34 */ lmw r13, 0x34(r3) -lbl_80371C20: -/* 80371C20 7C 7F 1B 78 */ mr r31, r3 -/* 80371C24 7C 83 23 78 */ mr r3, r4 -/* 80371C28 80 9F 00 80 */ lwz r4, 0x80(r31) -/* 80371C2C 7C 8F F1 20 */ mtcrf 0xff, r4 -/* 80371C30 80 9F 00 84 */ lwz r4, 0x84(r31) -/* 80371C34 7C 88 03 A6 */ mtlr r4 -/* 80371C38 80 9F 00 88 */ lwz r4, 0x88(r31) -/* 80371C3C 7C 89 03 A6 */ mtctr r4 -/* 80371C40 80 9F 00 8C */ lwz r4, 0x8c(r31) -/* 80371C44 7C 81 03 A6 */ mtxer r4 -/* 80371C48 7C 80 00 A6 */ mfmsr r4 -/* 80371C4C 54 84 04 5E */ rlwinm r4, r4, 0, 0x11, 0xf -/* 80371C50 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d -/* 80371C54 7C 80 01 24 */ mtmsr r4 -/* 80371C58 7C 51 43 A6 */ mtspr 0x111, r2 -/* 80371C5C 80 9F 00 0C */ lwz r4, 0xc(r31) -/* 80371C60 7C 92 43 A6 */ mtspr 0x112, r4 -/* 80371C64 80 9F 00 10 */ lwz r4, 0x10(r31) -/* 80371C68 7C 93 43 A6 */ mtspr 0x113, r4 -/* 80371C6C 80 5F 01 98 */ lwz r2, 0x198(r31) -/* 80371C70 80 9F 01 9C */ lwz r4, 0x19c(r31) -/* 80371C74 83 FF 00 7C */ lwz r31, 0x7c(r31) -/* 80371C78 4B FF DA 0C */ b TRKInterruptHandler diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRK_board_display.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRK_board_display.s deleted file mode 100644 index 131fdc9305..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRK_board_display.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80371CD8: -/* 80371CD8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80371CDC 7C 08 02 A6 */ mflr r0 -/* 80371CE0 3C A0 80 3A */ lis r5, lit_165@ha /* 0x803A2C0C@ha */ -/* 80371CE4 7C 64 1B 78 */ mr r4, r3 -/* 80371CE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80371CEC 38 65 2C 0C */ addi r3, r5, lit_165@l /* 0x803A2C0C@l */ -/* 80371CF0 4C C6 31 82 */ crclr 6 -/* 80371CF4 4B C9 4D C9 */ bl OSReport -/* 80371CF8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80371CFC 7C 08 03 A6 */ mtlr r0 -/* 80371D00 38 21 00 10 */ addi r1, r1, 0x10 -/* 80371D04 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/ReadFPSCR.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/ReadFPSCR.s deleted file mode 100644 index 1c9aa2c723..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/ReadFPSCR.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8036F9CC: -/* 8036F9CC 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8036F9D0 DB E1 00 10 */ stfd f31, 0x10(r1) -/* 8036F9D4 F3 E1 00 20 */ psq_st f31, 32(r1), 0, 0 /* qr0 */ -/* 8036F9D8 FF E0 04 8E */ mffs f31 -/* 8036F9DC DB E3 00 00 */ stfd f31, 0(r3) -/* 8036F9E0 E3 E1 00 20 */ psq_l f31, 32(r1), 0, 0 /* qr0 */ -/* 8036F9E4 CB E1 00 10 */ lfd f31, 0x10(r1) -/* 8036F9E8 38 21 00 40 */ addi r1, r1, 0x40 -/* 8036F9EC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKExceptionHandler.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKExceptionHandler.s deleted file mode 100644 index e7cee120e6..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKExceptionHandler.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_8036F818: -/* 8036F818 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F81C 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F820 B0 62 00 08 */ sth r3, 8(r2) -/* 8036F824 7C 7A 02 A6 */ mfspr r3, 0x1a -/* 8036F828 90 62 00 00 */ stw r3, 0(r2) -/* 8036F82C A0 62 00 08 */ lhz r3, 8(r2) -/* 8036F830 2C 03 02 00 */ cmpwi r3, 0x200 -/* 8036F834 41 82 00 50 */ beq lbl_8036F884 -/* 8036F838 2C 03 03 00 */ cmpwi r3, 0x300 -/* 8036F83C 41 82 00 48 */ beq lbl_8036F884 -/* 8036F840 2C 03 04 00 */ cmpwi r3, 0x400 -/* 8036F844 41 82 00 40 */ beq lbl_8036F884 -/* 8036F848 2C 03 06 00 */ cmpwi r3, 0x600 -/* 8036F84C 41 82 00 38 */ beq lbl_8036F884 -/* 8036F850 2C 03 07 00 */ cmpwi r3, 0x700 -/* 8036F854 41 82 00 30 */ beq lbl_8036F884 -/* 8036F858 2C 03 08 00 */ cmpwi r3, 0x800 -/* 8036F85C 41 82 00 28 */ beq lbl_8036F884 -/* 8036F860 2C 03 10 00 */ cmpwi r3, 0x1000 -/* 8036F864 41 82 00 20 */ beq lbl_8036F884 -/* 8036F868 2C 03 11 00 */ cmpwi r3, 0x1100 -/* 8036F86C 41 82 00 18 */ beq lbl_8036F884 -/* 8036F870 2C 03 12 00 */ cmpwi r3, 0x1200 -/* 8036F874 41 82 00 10 */ beq lbl_8036F884 -/* 8036F878 2C 03 13 00 */ cmpwi r3, 0x1300 -/* 8036F87C 41 82 00 08 */ beq lbl_8036F884 -/* 8036F880 48 00 00 10 */ b lbl_8036F890 -lbl_8036F884: -/* 8036F884 7C 7A 02 A6 */ mfspr r3, 0x1a -/* 8036F888 38 63 00 04 */ addi r3, r3, 4 -/* 8036F88C 7C 7A 03 A6 */ mtspr 0x1a, r3 -lbl_8036F890: -/* 8036F890 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F894 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F898 38 60 00 01 */ li r3, 1 -/* 8036F89C 98 62 00 0D */ stb r3, 0xd(r2) -/* 8036F8A0 7C 73 42 A6 */ mfspr r3, 0x113 -/* 8036F8A4 7C 6F F1 20 */ mtcrf 0xff, r3 -/* 8036F8A8 7C 51 42 A6 */ mfspr r2, 0x111 -/* 8036F8AC 7C 72 42 A6 */ mfspr r3, 0x112 -/* 8036F8B0 4C 00 00 64 */ rfi diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandler.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandler.s deleted file mode 100644 index e31e6fc17b..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandler.s +++ /dev/null @@ -1,104 +0,0 @@ -lbl_8036F684: -/* 8036F684 7C 5A 03 A6 */ mtspr 0x1a, r2 -/* 8036F688 7C 9B 03 A6 */ mtspr 0x1b, r4 -/* 8036F68C 7C 93 42 A6 */ mfspr r4, 0x113 -/* 8036F690 7C 40 00 26 */ mfcr r2 -/* 8036F694 7C 53 43 A6 */ mtspr 0x113, r2 -/* 8036F698 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F69C 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F6A0 80 42 00 8C */ lwz r2, 0x8c(r2) -/* 8036F6A4 60 42 80 02 */ ori r2, r2, 0x8002 -/* 8036F6A8 68 42 80 02 */ xori r2, r2, 0x8002 -/* 8036F6AC 7C 00 04 AC */ sync -/* 8036F6B0 7C 40 01 24 */ mtmsr r2 -/* 8036F6B4 7C 00 04 AC */ sync -/* 8036F6B8 3C 40 80 44 */ lis r2, TRK_saved_exceptionID@h /* 0x8044F290@h */ -/* 8036F6BC 60 42 F2 90 */ ori r2, r2, TRK_saved_exceptionID@l /* 0x8044F290@l */ -/* 8036F6C0 B0 62 00 00 */ sth r3, 0(r2) -/* 8036F6C4 2C 03 05 00 */ cmpwi r3, 0x500 -/* 8036F6C8 40 82 00 84 */ bne lbl_8036F74C -/* 8036F6CC 3C 40 80 44 */ lis r2, gTRKCPUState@h /* 0x8044F338@h */ -/* 8036F6D0 60 42 F3 38 */ ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036F6D4 7C 68 02 A6 */ mflr r3 -/* 8036F6D8 90 62 04 2C */ stw r3, 0x42c(r2) -/* 8036F6DC 48 00 25 A1 */ bl TRKUARTInterruptHandler -/* 8036F6E0 3C 40 80 44 */ lis r2, gTRKCPUState@h /* 0x8044F338@h */ -/* 8036F6E4 60 42 F3 38 */ ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036F6E8 80 62 04 2C */ lwz r3, 0x42c(r2) -/* 8036F6EC 7C 68 03 A6 */ mtlr r3 -/* 8036F6F0 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F6F4 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F6F8 80 42 00 A0 */ lwz r2, 0xa0(r2) -/* 8036F6FC 88 42 00 00 */ lbz r2, 0(r2) -/* 8036F700 2C 02 00 00 */ cmpwi r2, 0 -/* 8036F704 41 82 00 2C */ beq lbl_8036F730 -/* 8036F708 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F70C 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F710 88 42 00 0C */ lbz r2, 0xc(r2) -/* 8036F714 2C 02 00 01 */ cmpwi r2, 1 -/* 8036F718 41 82 00 18 */ beq lbl_8036F730 -/* 8036F71C 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F720 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F724 38 60 00 01 */ li r3, 1 -/* 8036F728 98 62 00 9C */ stb r3, 0x9c(r2) -/* 8036F72C 48 00 00 20 */ b lbl_8036F74C -lbl_8036F730: -/* 8036F730 3C 40 80 44 */ lis r2, gTRKSaveState@h /* 0x8044F768@h */ -/* 8036F734 60 42 F7 68 */ ori r2, r2, gTRKSaveState@l /* 0x8044F768@l */ -/* 8036F738 80 62 00 88 */ lwz r3, 0x88(r2) -/* 8036F73C 7C 6F F1 20 */ mtcrf 0xff, r3 -/* 8036F740 80 62 00 0C */ lwz r3, 0xc(r2) -/* 8036F744 80 42 00 08 */ lwz r2, 8(r2) -/* 8036F748 4C 00 00 64 */ rfi -lbl_8036F74C: -/* 8036F74C 3C 40 80 44 */ lis r2, TRK_saved_exceptionID@h /* 0x8044F290@h */ -/* 8036F750 60 42 F2 90 */ ori r2, r2, TRK_saved_exceptionID@l /* 0x8044F290@l */ -/* 8036F754 A0 62 00 00 */ lhz r3, 0(r2) -/* 8036F758 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F75C 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F760 88 42 00 0C */ lbz r2, 0xc(r2) -/* 8036F764 2C 02 00 00 */ cmpwi r2, 0 -/* 8036F768 40 82 00 B0 */ bne TRKExceptionHandler -/* 8036F76C 3C 40 80 44 */ lis r2, gTRKCPUState@h /* 0x8044F338@h */ -/* 8036F770 60 42 F3 38 */ ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036F774 90 02 00 00 */ stw r0, 0(r2) -/* 8036F778 90 22 00 04 */ stw r1, 4(r2) -/* 8036F77C 7C 11 42 A6 */ mfspr r0, 0x111 -/* 8036F780 90 02 00 08 */ stw r0, 8(r2) -/* 8036F784 B0 62 02 F8 */ sth r3, 0x2f8(r2) -/* 8036F788 B0 62 02 FA */ sth r3, 0x2fa(r2) -/* 8036F78C 7C 12 42 A6 */ mfspr r0, 0x112 -/* 8036F790 90 02 00 0C */ stw r0, 0xc(r2) -/* 8036F794 BC 82 00 10 */ stmw r4, 0x10(r2) -/* 8036F798 7F 7A 02 A6 */ mfspr r27, 0x1a -/* 8036F79C 7F 88 02 A6 */ mflr r28 -/* 8036F7A0 7F B3 42 A6 */ mfspr r29, 0x113 -/* 8036F7A4 7F C9 02 A6 */ mfctr r30 -/* 8036F7A8 7F E1 02 A6 */ mfxer r31 -/* 8036F7AC BF 62 00 80 */ stmw r27, 0x80(r2) -/* 8036F7B0 48 00 1A 41 */ bl TRKSaveExtended1Block -/* 8036F7B4 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F7B8 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F7BC 38 60 00 01 */ li r3, 1 -/* 8036F7C0 98 62 00 0C */ stb r3, 0xc(r2) -/* 8036F7C4 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F7C8 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F7CC 80 02 00 8C */ lwz r0, 0x8c(r2) -/* 8036F7D0 7C 00 04 AC */ sync -/* 8036F7D4 7C 00 01 24 */ mtmsr r0 -/* 8036F7D8 7C 00 04 AC */ sync -/* 8036F7DC 80 02 00 80 */ lwz r0, 0x80(r2) -/* 8036F7E0 7C 08 03 A6 */ mtlr r0 -/* 8036F7E4 80 02 00 84 */ lwz r0, 0x84(r2) -/* 8036F7E8 7C 09 03 A6 */ mtctr r0 -/* 8036F7EC 80 02 00 88 */ lwz r0, 0x88(r2) -/* 8036F7F0 7C 01 03 A6 */ mtxer r0 -/* 8036F7F4 80 02 00 94 */ lwz r0, 0x94(r2) -/* 8036F7F8 7C 12 03 A6 */ mtdsisr r0 -/* 8036F7FC 80 02 00 90 */ lwz r0, 0x90(r2) -/* 8036F800 7C 13 03 A6 */ mtdar r0 -/* 8036F804 B8 62 00 0C */ lmw r3, 0xc(r2) -/* 8036F808 80 02 00 00 */ lwz r0, 0(r2) -/* 8036F80C 80 22 00 04 */ lwz r1, 4(r2) -/* 8036F810 80 42 00 08 */ lwz r2, 8(r2) -/* 8036F814 48 00 09 20 */ b TRKPostInterruptEvent diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandlerEnableInterrupts.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandlerEnableInterrupts.s deleted file mode 100644 index b205453bc3..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandlerEnableInterrupts.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8036F978: -/* 8036F978 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F97C 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F980 80 02 00 8C */ lwz r0, 0x8c(r2) -/* 8036F984 7C 00 04 AC */ sync -/* 8036F988 7C 00 01 24 */ mtmsr r0 -/* 8036F98C 7C 00 04 AC */ sync -/* 8036F990 80 02 00 80 */ lwz r0, 0x80(r2) -/* 8036F994 7C 08 03 A6 */ mtlr r0 -/* 8036F998 80 02 00 84 */ lwz r0, 0x84(r2) -/* 8036F99C 7C 09 03 A6 */ mtctr r0 -/* 8036F9A0 80 02 00 88 */ lwz r0, 0x88(r2) -/* 8036F9A4 7C 01 03 A6 */ mtxer r0 -/* 8036F9A8 80 02 00 94 */ lwz r0, 0x94(r2) -/* 8036F9AC 7C 12 03 A6 */ mtdsisr r0 -/* 8036F9B0 80 02 00 90 */ lwz r0, 0x90(r2) -/* 8036F9B4 7C 13 03 A6 */ mtdar r0 -/* 8036F9B8 B8 62 00 0C */ lmw r3, 0xc(r2) -/* 8036F9BC 80 02 00 00 */ lwz r0, 0(r2) -/* 8036F9C0 80 22 00 04 */ lwz r1, 4(r2) -/* 8036F9C4 80 42 00 08 */ lwz r2, 8(r2) -/* 8036F9C8 48 00 07 6C */ b TRKPostInterruptEvent diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKPostInterruptEvent.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKPostInterruptEvent.s deleted file mode 100644 index 9cfeb24b59..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKPostInterruptEvent.s +++ /dev/null @@ -1,50 +0,0 @@ -lbl_80370134: -/* 80370134 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80370138 7C 08 02 A6 */ mflr r0 -/* 8037013C 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 80370140 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370144 38 63 F2 94 */ addi r3, r3, gTRKState@l /* 0x8044F294@l */ -/* 80370148 80 03 00 9C */ lwz r0, 0x9c(r3) -/* 8037014C 2C 00 00 00 */ cmpwi r0, 0 -/* 80370150 41 82 00 10 */ beq lbl_80370160 -/* 80370154 38 00 00 00 */ li r0, 0 -/* 80370158 90 03 00 9C */ stw r0, 0x9c(r3) -/* 8037015C 48 00 00 74 */ b lbl_803701D0 -lbl_80370160: -/* 80370160 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80370164 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 80370168 80 03 02 F8 */ lwz r0, 0x2f8(r3) -/* 8037016C 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80370170 2C 00 0D 00 */ cmpwi r0, 0xd00 -/* 80370174 41 82 00 14 */ beq lbl_80370188 -/* 80370178 40 80 00 44 */ bge lbl_803701BC -/* 8037017C 2C 00 07 00 */ cmpwi r0, 0x700 -/* 80370180 41 82 00 08 */ beq lbl_80370188 -/* 80370184 48 00 00 38 */ b lbl_803701BC -lbl_80370188: -/* 80370188 3C 80 80 45 */ lis r4, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8037018C 38 61 00 08 */ addi r3, r1, 8 -/* 80370190 38 84 F3 38 */ addi r4, r4, gTRKCPUState@l /* 0x8044F338@l */ -/* 80370194 80 84 00 80 */ lwz r4, 0x80(r4) -/* 80370198 48 00 0B F1 */ bl TRKTargetReadInstruction -/* 8037019C 80 61 00 08 */ lwz r3, 8(r1) -/* 803701A0 3C 03 F0 20 */ addis r0, r3, 0xf020 -/* 803701A4 28 00 00 00 */ cmplwi r0, 0 -/* 803701A8 40 82 00 0C */ bne lbl_803701B4 -/* 803701AC 38 80 00 05 */ li r4, 5 -/* 803701B0 48 00 00 10 */ b lbl_803701C0 -lbl_803701B4: -/* 803701B4 38 80 00 03 */ li r4, 3 -/* 803701B8 48 00 00 08 */ b lbl_803701C0 -lbl_803701BC: -/* 803701BC 38 80 00 04 */ li r4, 4 -lbl_803701C0: -/* 803701C0 38 61 00 0C */ addi r3, r1, 0xc -/* 803701C4 4B FF CA 79 */ bl TRKConstructEvent -/* 803701C8 38 61 00 0C */ addi r3, r1, 0xc -/* 803701CC 4B FF CA 89 */ bl TRKPostEvent -lbl_803701D0: -/* 803701D0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803701D4 7C 08 03 A6 */ mtlr r0 -/* 803701D8 38 21 00 20 */ addi r1, r1, 0x20 -/* 803701DC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKSwapAndGo.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKSwapAndGo.s deleted file mode 100644 index 3114b79be1..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKSwapAndGo.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_8036F8B4: -/* 8036F8B4 3C 60 80 44 */ lis r3, gTRKState@h /* 0x8044F294@h */ -/* 8036F8B8 60 63 F2 94 */ ori r3, r3, gTRKState@l /* 0x8044F294@l */ -/* 8036F8BC BC 03 00 00 */ stmw r0, 0(r3) -/* 8036F8C0 7C 00 00 A6 */ mfmsr r0 -/* 8036F8C4 90 03 00 8C */ stw r0, 0x8c(r3) -/* 8036F8C8 7C 08 02 A6 */ mflr r0 -/* 8036F8CC 90 03 00 80 */ stw r0, 0x80(r3) -/* 8036F8D0 7C 09 02 A6 */ mfctr r0 -/* 8036F8D4 90 03 00 84 */ stw r0, 0x84(r3) -/* 8036F8D8 7C 01 02 A6 */ mfxer r0 -/* 8036F8DC 90 03 00 88 */ stw r0, 0x88(r3) -/* 8036F8E0 7C 12 02 A6 */ mfdsisr r0 -/* 8036F8E4 90 03 00 94 */ stw r0, 0x94(r3) -/* 8036F8E8 7C 13 02 A6 */ mfdar r0 -/* 8036F8EC 90 03 00 90 */ stw r0, 0x90(r3) -/* 8036F8F0 38 20 80 02 */ li r1, -32766 -/* 8036F8F4 7C 21 08 F8 */ nor r1, r1, r1 -/* 8036F8F8 7C 60 00 A6 */ mfmsr r3 -/* 8036F8FC 7C 63 08 38 */ and r3, r3, r1 -/* 8036F900 7C 60 01 24 */ mtmsr r3 -/* 8036F904 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F908 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F90C 80 42 00 A0 */ lwz r2, 0xa0(r2) -/* 8036F910 88 42 00 00 */ lbz r2, 0(r2) -/* 8036F914 2C 02 00 00 */ cmpwi r2, 0 -/* 8036F918 41 82 00 18 */ beq lbl_8036F930 -/* 8036F91C 3C 40 80 44 */ lis r2, gTRKState@h /* 0x8044F294@h */ -/* 8036F920 60 42 F2 94 */ ori r2, r2, gTRKState@l /* 0x8044F294@l */ -/* 8036F924 38 60 00 01 */ li r3, 1 -/* 8036F928 98 62 00 9C */ stb r3, 0x9c(r2) -/* 8036F92C 48 00 00 4C */ b TRKInterruptHandlerEnableInterrupts -lbl_8036F930: -/* 8036F930 3C 40 80 3D */ lis r2, gTRKExceptionStatus@h /* 0x803D3244@h */ -/* 8036F934 60 42 32 44 */ ori r2, r2, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036F938 38 60 00 00 */ li r3, 0 -/* 8036F93C 98 62 00 0C */ stb r3, 0xc(r2) -/* 8036F940 48 00 1A 69 */ bl TRKRestoreExtended1Block -/* 8036F944 3C 40 80 44 */ lis r2, gTRKCPUState@h /* 0x8044F338@h */ -/* 8036F948 60 42 F3 38 */ ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036F94C BB 62 00 80 */ lmw r27, 0x80(r2) -/* 8036F950 7F 7A 03 A6 */ mtspr 0x1a, r27 -/* 8036F954 7F 88 03 A6 */ mtlr r28 -/* 8036F958 7F AF F1 20 */ mtcrf 0xff, r29 -/* 8036F95C 7F C9 03 A6 */ mtctr r30 -/* 8036F960 7F E1 03 A6 */ mtxer r31 -/* 8036F964 B8 62 00 0C */ lmw r3, 0xc(r2) -/* 8036F968 80 02 00 00 */ lwz r0, 0(r2) -/* 8036F96C 80 22 00 04 */ lwz r1, 4(r2) -/* 8036F970 80 42 00 08 */ lwz r2, 8(r2) -/* 8036F974 4C 00 00 64 */ rfi diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessARAM.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessARAM.s deleted file mode 100644 index 1b9613386c..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessARAM.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_8036FA14: -/* 8036FA14 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036FA18 7C 08 02 A6 */ mflr r0 -/* 8036FA1C 3C E0 80 3D */ lis r7, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8036FA20 2C 06 00 00 */ cmpwi r6, 0 -/* 8036FA24 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036FA28 38 00 00 00 */ li r0, 0 -/* 8036FA2C 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8036FA30 3B E7 32 44 */ addi r31, r7, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036FA34 93 C1 00 28 */ stw r30, 0x28(r1) -/* 8036FA38 3B C0 00 00 */ li r30, 0 -/* 8036FA3C 93 A1 00 24 */ stw r29, 0x24(r1) -/* 8036FA40 7C BD 2B 78 */ mr r29, r5 -/* 8036FA44 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 8036FA48 81 3F 00 00 */ lwz r9, 0(r31) -/* 8036FA4C 81 1F 00 04 */ lwz r8, 4(r31) -/* 8036FA50 80 FF 00 08 */ lwz r7, 8(r31) -/* 8036FA54 91 21 00 08 */ stw r9, 8(r1) -/* 8036FA58 91 01 00 0C */ stw r8, 0xc(r1) -/* 8036FA5C 90 E1 00 10 */ stw r7, 0x10(r1) -/* 8036FA60 90 C1 00 14 */ stw r6, 0x14(r1) -/* 8036FA64 98 1F 00 0D */ stb r0, 0xd(r31) -/* 8036FA68 41 82 00 0C */ beq lbl_8036FA74 -/* 8036FA6C 48 00 1E 0D */ bl TRK__read_aram -/* 8036FA70 48 00 00 08 */ b lbl_8036FA78 -lbl_8036FA74: -/* 8036FA74 48 00 1C 19 */ bl TRK__write_aram -lbl_8036FA78: -/* 8036FA78 88 1F 00 0D */ lbz r0, 0xd(r31) -/* 8036FA7C 28 00 00 00 */ cmplwi r0, 0 -/* 8036FA80 41 82 00 10 */ beq lbl_8036FA90 -/* 8036FA84 38 00 00 00 */ li r0, 0 -/* 8036FA88 3B C0 07 02 */ li r30, 0x702 -/* 8036FA8C 90 1D 00 00 */ stw r0, 0(r29) -lbl_8036FA90: -/* 8036FA90 3C 60 80 3D */ lis r3, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8036FA94 80 C1 00 08 */ lwz r6, 8(r1) -/* 8036FA98 38 E3 32 44 */ addi r7, r3, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036FA9C 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 8036FAA0 80 81 00 10 */ lwz r4, 0x10(r1) -/* 8036FAA4 7F C3 F3 78 */ mr r3, r30 -/* 8036FAA8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036FAAC 90 C7 00 00 */ stw r6, 0(r7) -/* 8036FAB0 90 A7 00 04 */ stw r5, 4(r7) -/* 8036FAB4 90 87 00 08 */ stw r4, 8(r7) -/* 8036FAB8 90 07 00 0C */ stw r0, 0xc(r7) -/* 8036FABC 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8036FAC0 83 C1 00 28 */ lwz r30, 0x28(r1) -/* 8036FAC4 83 A1 00 24 */ lwz r29, 0x24(r1) -/* 8036FAC8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8036FACC 7C 08 03 A6 */ mtlr r0 -/* 8036FAD0 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036FAD4 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessDefault.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessDefault.s deleted file mode 100644 index 8d974da3df..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessDefault.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_80370C94: -/* 80370C94 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80370C98 7C 08 02 A6 */ mflr r0 -/* 80370C9C 28 04 00 24 */ cmplwi r4, 0x24 -/* 80370CA0 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370CA4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80370CA8 7C DF 33 78 */ mr r31, r6 -/* 80370CAC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80370CB0 40 81 00 0C */ ble lbl_80370CBC -/* 80370CB4 38 60 07 01 */ li r3, 0x701 -/* 80370CB8 48 00 00 B8 */ b lbl_80370D70 -lbl_80370CBC: -/* 80370CBC 3C C0 80 3D */ lis r6, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370CC0 7C 83 20 50 */ subf r4, r3, r4 -/* 80370CC4 3B C6 32 44 */ addi r30, r6, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370CC8 3C C0 80 45 */ lis r6, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80370CCC 81 3E 00 0C */ lwz r9, 0xc(r30) -/* 80370CD0 39 00 00 00 */ li r8, 0 -/* 80370CD4 39 84 00 01 */ addi r12, r4, 1 -/* 80370CD8 81 7E 00 00 */ lwz r11, 0(r30) -/* 80370CDC 81 5E 00 04 */ lwz r10, 4(r30) -/* 80370CE0 2C 07 00 00 */ cmpwi r7, 0 -/* 80370CE4 80 FE 00 08 */ lwz r7, 8(r30) -/* 80370CE8 55 80 10 3A */ slwi r0, r12, 2 -/* 80370CEC 99 1E 00 0D */ stb r8, 0xd(r30) -/* 80370CF0 54 64 10 3A */ slwi r4, r3, 2 -/* 80370CF4 38 66 F3 38 */ addi r3, r6, gTRKCPUState@l /* 0x8044F338@l */ -/* 80370CF8 91 61 00 08 */ stw r11, 8(r1) -/* 80370CFC 7C 83 22 14 */ add r4, r3, r4 -/* 80370D00 91 41 00 0C */ stw r10, 0xc(r1) -/* 80370D04 90 E1 00 10 */ stw r7, 0x10(r1) -/* 80370D08 91 21 00 14 */ stw r9, 0x14(r1) -/* 80370D0C 90 1F 00 00 */ stw r0, 0(r31) -/* 80370D10 41 82 00 14 */ beq lbl_80370D24 -/* 80370D14 7C A3 2B 78 */ mr r3, r5 -/* 80370D18 7D 85 63 78 */ mr r5, r12 -/* 80370D1C 4B FF C5 71 */ bl TRKAppendBuffer_ui32 -/* 80370D20 48 00 00 10 */ b lbl_80370D30 -lbl_80370D24: -/* 80370D24 7C A3 2B 78 */ mr r3, r5 -/* 80370D28 7D 85 63 78 */ mr r5, r12 -/* 80370D2C 4B FF C2 F1 */ bl TRKReadBuffer_ui32 -lbl_80370D30: -/* 80370D30 88 1E 00 0D */ lbz r0, 0xd(r30) -/* 80370D34 28 00 00 00 */ cmplwi r0, 0 -/* 80370D38 41 82 00 10 */ beq lbl_80370D48 -/* 80370D3C 38 00 00 00 */ li r0, 0 -/* 80370D40 38 60 07 02 */ li r3, 0x702 -/* 80370D44 90 1F 00 00 */ stw r0, 0(r31) -lbl_80370D48: -/* 80370D48 3C 80 80 3D */ lis r4, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370D4C 80 C1 00 08 */ lwz r6, 8(r1) -/* 80370D50 38 E4 32 44 */ addi r7, r4, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370D54 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 80370D58 80 81 00 10 */ lwz r4, 0x10(r1) -/* 80370D5C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80370D60 90 C7 00 00 */ stw r6, 0(r7) -/* 80370D64 90 A7 00 04 */ stw r5, 4(r7) -/* 80370D68 90 87 00 08 */ stw r4, 8(r7) -/* 80370D6C 90 07 00 0C */ stw r0, 0xc(r7) -lbl_80370D70: -/* 80370D70 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80370D74 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80370D78 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80370D7C 7C 08 03 A6 */ mtlr r0 -/* 80370D80 38 21 00 20 */ addi r1, r1, 0x20 -/* 80370D84 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended1.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended1.s deleted file mode 100644 index 457517b993..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended1.s +++ /dev/null @@ -1,100 +0,0 @@ -lbl_80370618: -/* 80370618 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8037061C 7C 08 02 A6 */ mflr r0 -/* 80370620 28 04 00 60 */ cmplwi r4, 0x60 -/* 80370624 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370628 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8037062C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80370630 7C DE 33 78 */ mr r30, r6 -/* 80370634 40 81 00 0C */ ble lbl_80370640 -/* 80370638 38 60 07 01 */ li r3, 0x701 -/* 8037063C 48 00 01 34 */ b lbl_80370770 -lbl_80370640: -/* 80370640 3C C0 80 3D */ lis r6, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370644 38 00 00 00 */ li r0, 0 -/* 80370648 3B E6 32 44 */ addi r31, r6, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8037064C 7C 03 20 40 */ cmplw r3, r4 -/* 80370650 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 80370654 81 5F 00 00 */ lwz r10, 0(r31) -/* 80370658 81 3F 00 04 */ lwz r9, 4(r31) -/* 8037065C 81 1F 00 08 */ lwz r8, 8(r31) -/* 80370660 98 1F 00 0D */ stb r0, 0xd(r31) -/* 80370664 91 41 00 08 */ stw r10, 8(r1) -/* 80370668 91 21 00 0C */ stw r9, 0xc(r1) -/* 8037066C 91 01 00 10 */ stw r8, 0x10(r1) -/* 80370670 90 C1 00 14 */ stw r6, 0x14(r1) -/* 80370674 90 1E 00 00 */ stw r0, 0(r30) -/* 80370678 41 81 00 B8 */ bgt lbl_80370730 -/* 8037067C 7C 83 20 50 */ subf r4, r3, r4 -/* 80370680 3D 00 80 45 */ lis r8, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80370684 38 04 00 01 */ addi r0, r4, 1 -/* 80370688 80 9E 00 00 */ lwz r4, 0(r30) -/* 8037068C 54 06 10 3A */ slwi r6, r0, 2 -/* 80370690 2C 07 00 00 */ cmpwi r7, 0 -/* 80370694 7C 84 32 14 */ add r4, r4, r6 -/* 80370698 38 E8 F3 38 */ addi r7, r8, gTRKCPUState@l /* 0x8044F338@l */ -/* 8037069C 54 63 10 3A */ slwi r3, r3, 2 -/* 803706A0 90 9E 00 00 */ stw r4, 0(r30) -/* 803706A4 7C 87 1A 14 */ add r4, r7, r3 -/* 803706A8 38 84 01 A8 */ addi r4, r4, 0x1a8 -/* 803706AC 41 82 00 14 */ beq lbl_803706C0 -/* 803706B0 7C A3 2B 78 */ mr r3, r5 -/* 803706B4 7C 05 03 78 */ mr r5, r0 -/* 803706B8 4B FF CB D5 */ bl TRKAppendBuffer_ui32 -/* 803706BC 48 00 00 74 */ b lbl_80370730 -lbl_803706C0: -/* 803706C0 38 67 01 EC */ addi r3, r7, 0x1ec -/* 803706C4 7C 04 18 40 */ cmplw r4, r3 -/* 803706C8 41 81 00 24 */ bgt lbl_803706EC -/* 803706CC 38 C6 FF FC */ addi r6, r6, -4 -/* 803706D0 38 67 01 E8 */ addi r3, r7, 0x1e8 -/* 803706D4 7C C4 32 14 */ add r6, r4, r6 -/* 803706D8 7C 06 18 40 */ cmplw r6, r3 -/* 803706DC 41 80 00 10 */ blt lbl_803706EC -/* 803706E0 3C 60 80 3D */ lis r3, gTRKRestoreFlags@ha /* 0x803D3238@ha */ -/* 803706E4 38 C0 00 01 */ li r6, 1 -/* 803706E8 98 C3 32 38 */ stb r6, gTRKRestoreFlags@l(r3) /* 0x803D3238@l */ -lbl_803706EC: -/* 803706EC 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 803706F0 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 803706F4 38 C3 02 78 */ addi r6, r3, 0x278 -/* 803706F8 7C 04 30 40 */ cmplw r4, r6 -/* 803706FC 41 81 00 28 */ bgt lbl_80370724 -/* 80370700 54 03 10 3A */ slwi r3, r0, 2 -/* 80370704 38 63 FF FC */ addi r3, r3, -4 -/* 80370708 7C 64 1A 14 */ add r3, r4, r3 -/* 8037070C 7C 03 30 40 */ cmplw r3, r6 -/* 80370710 41 80 00 14 */ blt lbl_80370724 -/* 80370714 3C 60 80 3D */ lis r3, gTRKRestoreFlags@ha /* 0x803D3238@ha */ -/* 80370718 38 C0 00 01 */ li r6, 1 -/* 8037071C 38 63 32 38 */ addi r3, r3, gTRKRestoreFlags@l /* 0x803D3238@l */ -/* 80370720 98 C3 00 01 */ stb r6, 1(r3) -lbl_80370724: -/* 80370724 7C A3 2B 78 */ mr r3, r5 -/* 80370728 7C 05 03 78 */ mr r5, r0 -/* 8037072C 4B FF C8 F1 */ bl TRKReadBuffer_ui32 -lbl_80370730: -/* 80370730 88 1F 00 0D */ lbz r0, 0xd(r31) -/* 80370734 28 00 00 00 */ cmplwi r0, 0 -/* 80370738 41 82 00 10 */ beq lbl_80370748 -/* 8037073C 38 00 00 00 */ li r0, 0 -/* 80370740 38 60 07 02 */ li r3, 0x702 -/* 80370744 90 1E 00 00 */ stw r0, 0(r30) -lbl_80370748: -/* 80370748 3C 80 80 3D */ lis r4, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8037074C 80 C1 00 08 */ lwz r6, 8(r1) -/* 80370750 38 E4 32 44 */ addi r7, r4, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370754 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 80370758 80 81 00 10 */ lwz r4, 0x10(r1) -/* 8037075C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80370760 90 C7 00 00 */ stw r6, 0(r7) -/* 80370764 90 A7 00 04 */ stw r5, 4(r7) -/* 80370768 90 87 00 08 */ stw r4, 8(r7) -/* 8037076C 90 07 00 0C */ stw r0, 0xc(r7) -lbl_80370770: -/* 80370770 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80370774 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80370778 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8037077C 7C 08 03 A6 */ mtlr r0 -/* 80370780 38 21 00 20 */ addi r1, r1, 0x20 -/* 80370784 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended2.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended2.s deleted file mode 100644 index 951cf3f18d..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended2.s +++ /dev/null @@ -1,281 +0,0 @@ -lbl_803701E0: -/* 803701E0 94 21 FE D0 */ stwu r1, -0x130(r1) -/* 803701E4 7C 08 02 A6 */ mflr r0 -/* 803701E8 90 01 01 34 */ stw r0, 0x134(r1) -/* 803701EC BE 61 00 FC */ stmw r19, 0xfc(r1) -/* 803701F0 7C 97 23 78 */ mr r23, r4 -/* 803701F4 28 17 00 1F */ cmplwi r23, 0x1f -/* 803701F8 7C 7B 1B 78 */ mr r27, r3 -/* 803701FC 7C B8 2B 78 */ mr r24, r5 -/* 80370200 7C D9 33 78 */ mr r25, r6 -/* 80370204 7C FA 3B 78 */ mr r26, r7 -/* 80370208 40 81 00 0C */ ble lbl_80370214 -/* 8037020C 38 60 07 01 */ li r3, 0x701 -/* 80370210 48 00 03 F4 */ b lbl_80370604 -lbl_80370214: -/* 80370214 3C 60 80 3A */ lis r3, lit_276@ha /* 0x803A2B70@ha */ -/* 80370218 3C A0 80 3D */ lis r5, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8037021C 3B A3 2B 70 */ addi r29, r3, lit_276@l /* 0x803A2B70@l */ -/* 80370220 3C 80 7C 99 */ lis r4, 0x7C99 /* 0x7C98E2A6@ha */ -/* 80370224 80 1D 00 00 */ lwz r0, 0(r29) -/* 80370228 3B E5 32 44 */ addi r31, r5, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8037022C 81 1D 00 04 */ lwz r8, 4(r29) -/* 80370230 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 80370234 80 FD 00 24 */ lwz r7, 0x24(r29) -/* 80370238 38 C4 E2 A6 */ addi r6, r4, 0xE2A6 /* 0x7C98E2A6@l */ -/* 8037023C 90 01 00 C4 */ stw r0, 0xc4(r1) -/* 80370240 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 80370244 82 7F 00 00 */ lwz r19, 0(r31) -/* 80370248 3B C0 00 00 */ li r30, 0 -/* 8037024C 82 DF 00 0C */ lwz r22, 0xc(r31) -/* 80370250 3C A0 90 83 */ lis r5, 0x9083 -/* 80370254 91 01 00 C8 */ stw r8, 0xc8(r1) -/* 80370258 38 61 00 C4 */ addi r3, r1, 0xc4 -/* 8037025C 82 9F 00 04 */ lwz r20, 4(r31) -/* 80370260 38 80 00 28 */ li r4, 0x28 -/* 80370264 90 E1 00 E8 */ stw r7, 0xe8(r1) -/* 80370268 82 BF 00 08 */ lwz r21, 8(r31) -/* 8037026C 83 9D 00 08 */ lwz r28, 8(r29) -/* 80370270 81 9D 00 0C */ lwz r12, 0xc(r29) -/* 80370274 81 7D 00 10 */ lwz r11, 0x10(r29) -/* 80370278 81 5D 00 14 */ lwz r10, 0x14(r29) -/* 8037027C 81 3D 00 18 */ lwz r9, 0x18(r29) -/* 80370280 81 1D 00 1C */ lwz r8, 0x1c(r29) -/* 80370284 80 FD 00 20 */ lwz r7, 0x20(r29) -/* 80370288 92 61 00 14 */ stw r19, 0x14(r1) -/* 8037028C 92 81 00 18 */ stw r20, 0x18(r1) -/* 80370290 92 A1 00 1C */ stw r21, 0x1c(r1) -/* 80370294 92 C1 00 20 */ stw r22, 0x20(r1) -/* 80370298 9B DF 00 0D */ stb r30, 0xd(r31) -/* 8037029C 93 81 00 CC */ stw r28, 0xcc(r1) -/* 803702A0 91 81 00 D0 */ stw r12, 0xd0(r1) -/* 803702A4 91 61 00 D4 */ stw r11, 0xd4(r1) -/* 803702A8 91 41 00 D8 */ stw r10, 0xd8(r1) -/* 803702AC 91 21 00 DC */ stw r9, 0xdc(r1) -/* 803702B0 91 01 00 E0 */ stw r8, 0xe0(r1) -/* 803702B4 90 E1 00 E4 */ stw r7, 0xe4(r1) -/* 803702B8 90 C1 00 C4 */ stw r6, 0xc4(r1) -/* 803702BC 90 A1 00 C8 */ stw r5, 0xc8(r1) -/* 803702C0 90 01 00 E8 */ stw r0, 0xe8(r1) -/* 803702C4 4B FF F2 85 */ bl TRK_flush_cache -/* 803702C8 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 803702CC 39 81 00 C4 */ addi r12, r1, 0xc4 -/* 803702D0 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 803702D4 38 61 00 08 */ addi r3, r1, 8 -/* 803702D8 7D 89 03 A6 */ mtctr r12 -/* 803702DC 4E 80 04 21 */ bctrl -/* 803702E0 3C 60 80 3A */ lis r3, lit_276@ha /* 0x803A2B70@ha */ -/* 803702E4 80 A1 00 08 */ lwz r5, 8(r1) -/* 803702E8 3B A3 2B 70 */ addi r29, r3, lit_276@l /* 0x803A2B70@l */ -/* 803702EC 3C 80 7C 99 */ lis r4, 0x7C99 /* 0x7C98E3A6@ha */ -/* 803702F0 81 1D 00 00 */ lwz r8, 0(r29) -/* 803702F4 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 803702F8 80 1D 00 04 */ lwz r0, 4(r29) -/* 803702FC 64 BE A0 00 */ oris r30, r5, 0xa000 -/* 80370300 80 FD 00 24 */ lwz r7, 0x24(r29) -/* 80370304 38 A4 E3 A6 */ addi r5, r4, 0xE3A6 /* 0x7C98E3A6@l */ -/* 80370308 90 01 00 A0 */ stw r0, 0xa0(r1) -/* 8037030C 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 80370310 83 9D 00 08 */ lwz r28, 8(r29) -/* 80370314 3C C0 80 83 */ lis r6, 0x8083 -/* 80370318 91 01 00 9C */ stw r8, 0x9c(r1) -/* 8037031C 38 61 00 9C */ addi r3, r1, 0x9c -/* 80370320 81 9D 00 0C */ lwz r12, 0xc(r29) -/* 80370324 38 80 00 28 */ li r4, 0x28 -/* 80370328 90 E1 00 C0 */ stw r7, 0xc0(r1) -/* 8037032C 81 7D 00 10 */ lwz r11, 0x10(r29) -/* 80370330 81 5D 00 14 */ lwz r10, 0x14(r29) -/* 80370334 81 3D 00 18 */ lwz r9, 0x18(r29) -/* 80370338 81 1D 00 1C */ lwz r8, 0x1c(r29) -/* 8037033C 80 FD 00 20 */ lwz r7, 0x20(r29) -/* 80370340 93 C1 00 08 */ stw r30, 8(r1) -/* 80370344 93 81 00 A4 */ stw r28, 0xa4(r1) -/* 80370348 91 81 00 A8 */ stw r12, 0xa8(r1) -/* 8037034C 91 61 00 AC */ stw r11, 0xac(r1) -/* 80370350 91 41 00 B0 */ stw r10, 0xb0(r1) -/* 80370354 91 21 00 B4 */ stw r9, 0xb4(r1) -/* 80370358 91 01 00 B8 */ stw r8, 0xb8(r1) -/* 8037035C 90 E1 00 BC */ stw r7, 0xbc(r1) -/* 80370360 90 C1 00 9C */ stw r6, 0x9c(r1) -/* 80370364 90 A1 00 A0 */ stw r5, 0xa0(r1) -/* 80370368 90 01 00 C0 */ stw r0, 0xc0(r1) -/* 8037036C 4B FF F1 DD */ bl TRK_flush_cache -/* 80370370 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 80370374 39 81 00 9C */ addi r12, r1, 0x9c -/* 80370378 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 8037037C 38 61 00 08 */ addi r3, r1, 8 -/* 80370380 7D 89 03 A6 */ mtctr r12 -/* 80370384 4E 80 04 21 */ bctrl -/* 80370388 3C 60 80 3A */ lis r3, lit_276@ha /* 0x803A2B70@ha */ -/* 8037038C 3C 80 7C 91 */ lis r4, 0x7C91 /* 0x7C90E3A6@ha */ -/* 80370390 3B A3 2B 70 */ addi r29, r3, lit_276@l /* 0x803A2B70@l */ -/* 80370394 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 80370398 81 1D 00 00 */ lwz r8, 0(r29) -/* 8037039C 3B C0 00 00 */ li r30, 0 -/* 803703A0 80 DD 00 04 */ lwz r6, 4(r29) -/* 803703A4 38 A4 E3 A6 */ addi r5, r4, 0xE3A6 /* 0x7C90E3A6@l */ -/* 803703A8 80 FD 00 24 */ lwz r7, 0x24(r29) -/* 803703AC 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 803703B0 90 C1 00 78 */ stw r6, 0x78(r1) -/* 803703B4 3C C0 80 83 */ lis r6, 0x8083 -/* 803703B8 83 9D 00 08 */ lwz r28, 8(r29) -/* 803703BC 38 61 00 74 */ addi r3, r1, 0x74 -/* 803703C0 91 01 00 74 */ stw r8, 0x74(r1) -/* 803703C4 38 80 00 28 */ li r4, 0x28 -/* 803703C8 81 9D 00 0C */ lwz r12, 0xc(r29) -/* 803703CC 90 E1 00 98 */ stw r7, 0x98(r1) -/* 803703D0 81 7D 00 10 */ lwz r11, 0x10(r29) -/* 803703D4 81 5D 00 14 */ lwz r10, 0x14(r29) -/* 803703D8 81 3D 00 18 */ lwz r9, 0x18(r29) -/* 803703DC 81 1D 00 1C */ lwz r8, 0x1c(r29) -/* 803703E0 80 FD 00 20 */ lwz r7, 0x20(r29) -/* 803703E4 93 C1 00 08 */ stw r30, 8(r1) -/* 803703E8 93 81 00 7C */ stw r28, 0x7c(r1) -/* 803703EC 91 81 00 80 */ stw r12, 0x80(r1) -/* 803703F0 91 61 00 84 */ stw r11, 0x84(r1) -/* 803703F4 91 41 00 88 */ stw r10, 0x88(r1) -/* 803703F8 91 21 00 8C */ stw r9, 0x8c(r1) -/* 803703FC 91 01 00 90 */ stw r8, 0x90(r1) -/* 80370400 90 E1 00 94 */ stw r7, 0x94(r1) -/* 80370404 90 C1 00 74 */ stw r6, 0x74(r1) -/* 80370408 90 A1 00 78 */ stw r5, 0x78(r1) -/* 8037040C 90 01 00 98 */ stw r0, 0x98(r1) -/* 80370410 4B FF F1 39 */ bl TRK_flush_cache -/* 80370414 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 80370418 39 81 00 74 */ addi r12, r1, 0x74 -/* 8037041C 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 80370420 38 61 00 08 */ addi r3, r1, 8 -/* 80370424 7D 89 03 A6 */ mtctr r12 -/* 80370428 4E 80 04 21 */ bctrl -/* 8037042C 38 00 00 00 */ li r0, 0 -/* 80370430 57 7E A8 14 */ slwi r30, r27, 0x15 -/* 80370434 90 19 00 00 */ stw r0, 0(r25) -/* 80370438 3B A1 00 4C */ addi r29, r1, 0x4c -/* 8037043C 3B 81 00 24 */ addi r28, r1, 0x24 -/* 80370440 38 60 00 00 */ li r3, 0 -/* 80370444 48 00 01 70 */ b lbl_803705B4 -lbl_80370448: -/* 80370448 2C 1A 00 00 */ cmpwi r26, 0 -/* 8037044C 41 82 00 AC */ beq lbl_803704F8 -/* 80370450 3C 60 80 3A */ lis r3, lit_283@ha /* 0x803A2B98@ha */ -/* 80370454 85 83 2B 98 */ lwzu r12, lit_283@l(r3) /* 0x803A2B98@l */ -/* 80370458 67 C0 E0 03 */ oris r0, r30, 0xe003 -/* 8037045C 81 63 00 04 */ lwz r11, 4(r3) -/* 80370460 81 43 00 08 */ lwz r10, 8(r3) -/* 80370464 81 23 00 0C */ lwz r9, 0xc(r3) -/* 80370468 81 03 00 10 */ lwz r8, 0x10(r3) -/* 8037046C 80 E3 00 14 */ lwz r7, 0x14(r3) -/* 80370470 80 C3 00 18 */ lwz r6, 0x18(r3) -/* 80370474 80 A3 00 1C */ lwz r5, 0x1c(r3) -/* 80370478 80 83 00 20 */ lwz r4, 0x20(r3) -/* 8037047C 80 63 00 24 */ lwz r3, 0x24(r3) -/* 80370480 91 81 00 4C */ stw r12, 0x4c(r1) -/* 80370484 91 61 00 50 */ stw r11, 0x50(r1) -/* 80370488 91 41 00 54 */ stw r10, 0x54(r1) -/* 8037048C 91 21 00 58 */ stw r9, 0x58(r1) -/* 80370490 91 01 00 5C */ stw r8, 0x5c(r1) -/* 80370494 90 E1 00 60 */ stw r7, 0x60(r1) -/* 80370498 90 C1 00 64 */ stw r6, 0x64(r1) -/* 8037049C 90 A1 00 68 */ stw r5, 0x68(r1) -/* 803704A0 90 81 00 6C */ stw r4, 0x6c(r1) -/* 803704A4 90 61 00 70 */ stw r3, 0x70(r1) -/* 803704A8 41 82 00 08 */ beq lbl_803704B0 -/* 803704AC 67 C0 F0 03 */ oris r0, r30, 0xf003 -lbl_803704B0: -/* 803704B0 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 803704B4 90 01 00 4C */ stw r0, 0x4c(r1) -/* 803704B8 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 803704BC 7F A3 EB 78 */ mr r3, r29 -/* 803704C0 90 01 00 70 */ stw r0, 0x70(r1) -/* 803704C4 38 80 00 28 */ li r4, 0x28 -/* 803704C8 4B FF F0 81 */ bl TRK_flush_cache -/* 803704CC 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 803704D0 39 81 00 4C */ addi r12, r1, 0x4c -/* 803704D4 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 803704D8 38 61 00 0C */ addi r3, r1, 0xc -/* 803704DC 7D 89 03 A6 */ mtctr r12 -/* 803704E0 4E 80 04 21 */ bctrl -/* 803704E4 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 803704E8 7F 03 C3 78 */ mr r3, r24 -/* 803704EC 80 C1 00 10 */ lwz r6, 0x10(r1) -/* 803704F0 4B FF CF 01 */ bl TRKAppendBuffer1_ui64 -/* 803704F4 48 00 00 AC */ b lbl_803705A0 -lbl_803704F8: -/* 803704F8 7F 03 C3 78 */ mr r3, r24 -/* 803704FC 38 81 00 0C */ addi r4, r1, 0xc -/* 80370500 4B FF CC A5 */ bl TRKReadBuffer1_ui64 -/* 80370504 3C 60 80 3A */ lis r3, lit_283@ha /* 0x803A2B98@ha */ -/* 80370508 85 83 2B 98 */ lwzu r12, lit_283@l(r3) /* 0x803A2B98@l */ -/* 8037050C 2C 1A 00 00 */ cmpwi r26, 0 -/* 80370510 67 C0 E0 03 */ oris r0, r30, 0xe003 -/* 80370514 81 63 00 04 */ lwz r11, 4(r3) -/* 80370518 81 43 00 08 */ lwz r10, 8(r3) -/* 8037051C 81 23 00 0C */ lwz r9, 0xc(r3) -/* 80370520 81 03 00 10 */ lwz r8, 0x10(r3) -/* 80370524 80 E3 00 14 */ lwz r7, 0x14(r3) -/* 80370528 80 C3 00 18 */ lwz r6, 0x18(r3) -/* 8037052C 80 A3 00 1C */ lwz r5, 0x1c(r3) -/* 80370530 80 83 00 20 */ lwz r4, 0x20(r3) -/* 80370534 80 63 00 24 */ lwz r3, 0x24(r3) -/* 80370538 91 81 00 24 */ stw r12, 0x24(r1) -/* 8037053C 91 61 00 28 */ stw r11, 0x28(r1) -/* 80370540 91 41 00 2C */ stw r10, 0x2c(r1) -/* 80370544 91 21 00 30 */ stw r9, 0x30(r1) -/* 80370548 91 01 00 34 */ stw r8, 0x34(r1) -/* 8037054C 90 E1 00 38 */ stw r7, 0x38(r1) -/* 80370550 90 C1 00 3C */ stw r6, 0x3c(r1) -/* 80370554 90 A1 00 40 */ stw r5, 0x40(r1) -/* 80370558 90 81 00 44 */ stw r4, 0x44(r1) -/* 8037055C 90 61 00 48 */ stw r3, 0x48(r1) -/* 80370560 41 82 00 08 */ beq lbl_80370568 -/* 80370564 67 C0 F0 03 */ oris r0, r30, 0xf003 -lbl_80370568: -/* 80370568 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 8037056C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370570 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 80370574 7F 83 E3 78 */ mr r3, r28 -/* 80370578 90 01 00 48 */ stw r0, 0x48(r1) -/* 8037057C 38 80 00 28 */ li r4, 0x28 -/* 80370580 4B FF EF C9 */ bl TRK_flush_cache -/* 80370584 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 80370588 39 81 00 24 */ addi r12, r1, 0x24 -/* 8037058C 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 80370590 38 61 00 0C */ addi r3, r1, 0xc -/* 80370594 7D 89 03 A6 */ mtctr r12 -/* 80370598 4E 80 04 21 */ bctrl -/* 8037059C 38 60 00 00 */ li r3, 0 -lbl_803705A0: -/* 803705A0 80 99 00 00 */ lwz r4, 0(r25) -/* 803705A4 3F DE 00 20 */ addis r30, r30, 0x20 -/* 803705A8 3B 7B 00 01 */ addi r27, r27, 1 -/* 803705AC 38 04 00 08 */ addi r0, r4, 8 -/* 803705B0 90 19 00 00 */ stw r0, 0(r25) -lbl_803705B4: -/* 803705B4 7C 1B B8 40 */ cmplw r27, r23 -/* 803705B8 41 81 00 0C */ bgt lbl_803705C4 -/* 803705BC 2C 03 00 00 */ cmpwi r3, 0 -/* 803705C0 41 82 FE 88 */ beq lbl_80370448 -lbl_803705C4: -/* 803705C4 88 1F 00 0D */ lbz r0, 0xd(r31) -/* 803705C8 28 00 00 00 */ cmplwi r0, 0 -/* 803705CC 41 82 00 10 */ beq lbl_803705DC -/* 803705D0 38 00 00 00 */ li r0, 0 -/* 803705D4 38 60 07 02 */ li r3, 0x702 -/* 803705D8 90 19 00 00 */ stw r0, 0(r25) -lbl_803705DC: -/* 803705DC 3C 80 80 3D */ lis r4, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 803705E0 80 C1 00 14 */ lwz r6, 0x14(r1) -/* 803705E4 38 E4 32 44 */ addi r7, r4, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 803705E8 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 803705EC 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 803705F0 80 01 00 20 */ lwz r0, 0x20(r1) -/* 803705F4 90 C7 00 00 */ stw r6, 0(r7) -/* 803705F8 90 A7 00 04 */ stw r5, 4(r7) -/* 803705FC 90 87 00 08 */ stw r4, 8(r7) -/* 80370600 90 07 00 0C */ stw r0, 0xc(r7) -lbl_80370604: -/* 80370604 BA 61 00 FC */ lmw r19, 0xfc(r1) -/* 80370608 80 01 01 34 */ lwz r0, 0x134(r1) -/* 8037060C 7C 08 03 A6 */ mtlr r0 -/* 80370610 38 21 01 30 */ addi r1, r1, 0x130 -/* 80370614 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessFP.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessFP.s deleted file mode 100644 index 299ac2e989..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessFP.s +++ /dev/null @@ -1,350 +0,0 @@ -lbl_80370788: -/* 80370788 94 21 FF 10 */ stwu r1, -0xf0(r1) -/* 8037078C 7C 08 02 A6 */ mflr r0 -/* 80370790 90 01 00 F4 */ stw r0, 0xf4(r1) -/* 80370794 BE 81 00 C0 */ stmw r20, 0xc0(r1) -/* 80370798 7C 9C 23 78 */ mr r28, r4 -/* 8037079C 28 1C 00 21 */ cmplwi r28, 0x21 -/* 803707A0 7C 74 1B 78 */ mr r20, r3 -/* 803707A4 7C BD 2B 78 */ mr r29, r5 -/* 803707A8 7C DE 33 78 */ mr r30, r6 -/* 803707AC 7C FF 3B 78 */ mr r31, r7 -/* 803707B0 40 81 00 0C */ ble lbl_803707BC -/* 803707B4 38 60 07 01 */ li r3, 0x701 -/* 803707B8 48 00 04 C8 */ b lbl_80370C80 -lbl_803707BC: -/* 803707BC 3C 60 80 3D */ lis r3, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 803707C0 38 00 00 00 */ li r0, 0 -/* 803707C4 3B 63 32 44 */ addi r27, r3, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 803707C8 80 7B 00 0C */ lwz r3, 0xc(r27) -/* 803707CC 80 DB 00 00 */ lwz r6, 0(r27) -/* 803707D0 80 BB 00 04 */ lwz r5, 4(r27) -/* 803707D4 80 9B 00 08 */ lwz r4, 8(r27) -/* 803707D8 90 C1 00 10 */ stw r6, 0x10(r1) -/* 803707DC 90 A1 00 14 */ stw r5, 0x14(r1) -/* 803707E0 90 81 00 18 */ stw r4, 0x18(r1) -/* 803707E4 90 61 00 1C */ stw r3, 0x1c(r1) -/* 803707E8 98 1B 00 0D */ stb r0, 0xd(r27) -/* 803707EC 4B FF EE 4D */ bl __TRK_get_MSR -/* 803707F0 60 63 20 00 */ ori r3, r3, 0x2000 -/* 803707F4 4B FF EE 4D */ bl __TRK_set_MSR -/* 803707F8 38 00 00 00 */ li r0, 0 -/* 803707FC 7E 95 A3 78 */ mr r21, r20 -/* 80370800 90 1E 00 00 */ stw r0, 0(r30) -/* 80370804 56 9A A8 14 */ slwi r26, r20, 0x15 -/* 80370808 3B 21 00 98 */ addi r25, r1, 0x98 -/* 8037080C 3B 01 00 48 */ addi r24, r1, 0x48 -/* 80370810 3A E1 00 70 */ addi r23, r1, 0x70 -/* 80370814 3A C1 00 20 */ addi r22, r1, 0x20 -/* 80370818 38 60 00 00 */ li r3, 0 -/* 8037081C 48 00 04 14 */ b lbl_80370C30 -lbl_80370820: -/* 80370820 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370824 41 82 01 FC */ beq lbl_80370A20 -/* 80370828 3C 60 80 3A */ lis r3, lit_290@ha /* 0x803A2BC0@ha */ -/* 8037082C 28 15 00 20 */ cmplwi r21, 0x20 -/* 80370830 39 83 2B C0 */ addi r12, r3, lit_290@l /* 0x803A2BC0@l */ -/* 80370834 81 6C 00 00 */ lwz r11, 0(r12) -/* 80370838 81 4C 00 04 */ lwz r10, 4(r12) -/* 8037083C 81 2C 00 08 */ lwz r9, 8(r12) -/* 80370840 81 0C 00 0C */ lwz r8, 0xc(r12) -/* 80370844 80 EC 00 10 */ lwz r7, 0x10(r12) -/* 80370848 80 CC 00 14 */ lwz r6, 0x14(r12) -/* 8037084C 80 AC 00 18 */ lwz r5, 0x18(r12) -/* 80370850 80 8C 00 1C */ lwz r4, 0x1c(r12) -/* 80370854 80 6C 00 20 */ lwz r3, 0x20(r12) -/* 80370858 80 0C 00 24 */ lwz r0, 0x24(r12) -/* 8037085C 91 61 00 98 */ stw r11, 0x98(r1) -/* 80370860 91 41 00 9C */ stw r10, 0x9c(r1) -/* 80370864 91 21 00 A0 */ stw r9, 0xa0(r1) -/* 80370868 91 01 00 A4 */ stw r8, 0xa4(r1) -/* 8037086C 90 E1 00 A8 */ stw r7, 0xa8(r1) -/* 80370870 90 C1 00 AC */ stw r6, 0xac(r1) -/* 80370874 90 A1 00 B0 */ stw r5, 0xb0(r1) -/* 80370878 90 81 00 B4 */ stw r4, 0xb4(r1) -/* 8037087C 90 61 00 B8 */ stw r3, 0xb8(r1) -/* 80370880 90 01 00 BC */ stw r0, 0xbc(r1) -/* 80370884 40 80 00 4C */ bge lbl_803708D0 -/* 80370888 2C 1F 00 00 */ cmpwi r31, 0 -/* 8037088C 67 40 C8 03 */ oris r0, r26, 0xc803 -/* 80370890 41 82 00 08 */ beq lbl_80370898 -/* 80370894 67 40 D8 03 */ oris r0, r26, 0xd803 -lbl_80370898: -/* 80370898 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 8037089C 90 01 00 98 */ stw r0, 0x98(r1) -/* 803708A0 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 803708A4 7F 23 CB 78 */ mr r3, r25 -/* 803708A8 90 01 00 BC */ stw r0, 0xbc(r1) -/* 803708AC 38 80 00 28 */ li r4, 0x28 -/* 803708B0 4B FF EC 99 */ bl TRK_flush_cache -/* 803708B4 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 803708B8 39 81 00 98 */ addi r12, r1, 0x98 -/* 803708BC 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 803708C0 38 61 00 08 */ addi r3, r1, 8 -/* 803708C4 7D 89 03 A6 */ mtctr r12 -/* 803708C8 4E 80 04 21 */ bctrl -/* 803708CC 48 00 01 40 */ b lbl_80370A0C -lbl_803708D0: -/* 803708D0 40 82 00 44 */ bne lbl_80370914 -/* 803708D4 2C 1F 00 00 */ cmpwi r31, 0 -/* 803708D8 41 82 00 10 */ beq lbl_803708E8 -/* 803708DC 38 61 00 08 */ addi r3, r1, 8 -/* 803708E0 4B FF F0 ED */ bl ReadFPSCR -/* 803708E4 48 00 00 0C */ b lbl_803708F0 -lbl_803708E8: -/* 803708E8 38 61 00 08 */ addi r3, r1, 8 -/* 803708EC 4B FF F1 05 */ bl WriteFPSCR -lbl_803708F0: -/* 803708F0 80 81 00 08 */ lwz r4, 8(r1) -/* 803708F4 38 00 00 00 */ li r0, 0 -/* 803708F8 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 803708FC 38 60 FF FF */ li r3, -1 -/* 80370900 7C 80 00 38 */ and r0, r4, r0 -/* 80370904 7C A3 18 38 */ and r3, r5, r3 -/* 80370908 90 01 00 08 */ stw r0, 8(r1) -/* 8037090C 90 61 00 0C */ stw r3, 0xc(r1) -/* 80370910 48 00 00 FC */ b lbl_80370A0C -lbl_80370914: -/* 80370914 28 15 00 21 */ cmplwi r21, 0x21 -/* 80370918 40 82 00 F4 */ bne lbl_80370A0C -/* 8037091C 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370920 40 82 00 0C */ bne lbl_8037092C -/* 80370924 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80370928 90 01 00 08 */ stw r0, 8(r1) -lbl_8037092C: -/* 8037092C 3C 60 80 3A */ lis r3, lit_276@ha /* 0x803A2B70@ha */ -/* 80370930 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370934 39 83 2B 70 */ addi r12, r3, lit_276@l /* 0x803A2B70@l */ -/* 80370938 81 6C 00 00 */ lwz r11, 0(r12) -/* 8037093C 81 4C 00 04 */ lwz r10, 4(r12) -/* 80370940 81 2C 00 08 */ lwz r9, 8(r12) -/* 80370944 81 0C 00 0C */ lwz r8, 0xc(r12) -/* 80370948 80 EC 00 10 */ lwz r7, 0x10(r12) -/* 8037094C 80 CC 00 14 */ lwz r6, 0x14(r12) -/* 80370950 80 AC 00 18 */ lwz r5, 0x18(r12) -/* 80370954 80 8C 00 1C */ lwz r4, 0x1c(r12) -/* 80370958 80 6C 00 20 */ lwz r3, 0x20(r12) -/* 8037095C 80 0C 00 24 */ lwz r0, 0x24(r12) -/* 80370960 91 61 00 48 */ stw r11, 0x48(r1) -/* 80370964 91 41 00 4C */ stw r10, 0x4c(r1) -/* 80370968 91 21 00 50 */ stw r9, 0x50(r1) -/* 8037096C 91 01 00 54 */ stw r8, 0x54(r1) -/* 80370970 90 E1 00 58 */ stw r7, 0x58(r1) -/* 80370974 90 C1 00 5C */ stw r6, 0x5c(r1) -/* 80370978 90 A1 00 60 */ stw r5, 0x60(r1) -/* 8037097C 90 81 00 64 */ stw r4, 0x64(r1) -/* 80370980 90 61 00 68 */ stw r3, 0x68(r1) -/* 80370984 90 01 00 6C */ stw r0, 0x6c(r1) -/* 80370988 41 82 00 1C */ beq lbl_803709A4 -/* 8037098C 3C 60 7C 9F */ lis r3, 0x7C9F /* 0x7C9EFAA6@ha */ -/* 80370990 3C 00 90 83 */ lis r0, 0x9083 -/* 80370994 38 63 FA A6 */ addi r3, r3, 0xFAA6 /* 0x7C9EFAA6@l */ -/* 80370998 90 01 00 4C */ stw r0, 0x4c(r1) -/* 8037099C 90 61 00 48 */ stw r3, 0x48(r1) -/* 803709A0 48 00 00 18 */ b lbl_803709B8 -lbl_803709A4: -/* 803709A4 3C 60 7C 9F */ lis r3, 0x7C9F /* 0x7C9EFBA6@ha */ -/* 803709A8 3C 80 80 83 */ lis r4, 0x8083 -/* 803709AC 38 03 FB A6 */ addi r0, r3, 0xFBA6 /* 0x7C9EFBA6@l */ -/* 803709B0 90 81 00 48 */ stw r4, 0x48(r1) -/* 803709B4 90 01 00 4C */ stw r0, 0x4c(r1) -lbl_803709B8: -/* 803709B8 3C 80 4E 80 */ lis r4, 0x4E80 /* 0x4E800020@ha */ -/* 803709BC 7F 03 C3 78 */ mr r3, r24 -/* 803709C0 38 04 00 20 */ addi r0, r4, 0x0020 /* 0x4E800020@l */ -/* 803709C4 38 80 00 28 */ li r4, 0x28 -/* 803709C8 90 01 00 6C */ stw r0, 0x6c(r1) -/* 803709CC 4B FF EB 7D */ bl TRK_flush_cache -/* 803709D0 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 803709D4 39 81 00 48 */ addi r12, r1, 0x48 -/* 803709D8 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 803709DC 38 61 00 08 */ addi r3, r1, 8 -/* 803709E0 7D 89 03 A6 */ mtctr r12 -/* 803709E4 4E 80 04 21 */ bctrl -/* 803709E8 2C 1F 00 00 */ cmpwi r31, 0 -/* 803709EC 41 82 00 20 */ beq lbl_80370A0C -/* 803709F0 80 61 00 08 */ lwz r3, 8(r1) -/* 803709F4 38 80 00 00 */ li r4, 0 -/* 803709F8 38 00 FF FF */ li r0, -1 -/* 803709FC 7C 63 00 38 */ and r3, r3, r0 -/* 80370A00 7C 80 20 38 */ and r0, r4, r4 -/* 80370A04 90 61 00 0C */ stw r3, 0xc(r1) -/* 80370A08 90 01 00 08 */ stw r0, 8(r1) -lbl_80370A0C: -/* 80370A0C 80 A1 00 08 */ lwz r5, 8(r1) -/* 80370A10 7F A3 EB 78 */ mr r3, r29 -/* 80370A14 80 C1 00 0C */ lwz r6, 0xc(r1) -/* 80370A18 4B FF C9 D9 */ bl TRKAppendBuffer1_ui64 -/* 80370A1C 48 00 02 00 */ b lbl_80370C1C -lbl_80370A20: -/* 80370A20 7F A3 EB 78 */ mr r3, r29 -/* 80370A24 38 81 00 08 */ addi r4, r1, 8 -/* 80370A28 4B FF C7 7D */ bl TRKReadBuffer1_ui64 -/* 80370A2C 3C 60 80 3A */ lis r3, lit_290@ha /* 0x803A2BC0@ha */ -/* 80370A30 28 15 00 20 */ cmplwi r21, 0x20 -/* 80370A34 39 83 2B C0 */ addi r12, r3, lit_290@l /* 0x803A2BC0@l */ -/* 80370A38 3A 80 00 00 */ li r20, 0 -/* 80370A3C 81 6C 00 00 */ lwz r11, 0(r12) -/* 80370A40 81 4C 00 04 */ lwz r10, 4(r12) -/* 80370A44 81 2C 00 08 */ lwz r9, 8(r12) -/* 80370A48 81 0C 00 0C */ lwz r8, 0xc(r12) -/* 80370A4C 80 EC 00 10 */ lwz r7, 0x10(r12) -/* 80370A50 80 CC 00 14 */ lwz r6, 0x14(r12) -/* 80370A54 80 AC 00 18 */ lwz r5, 0x18(r12) -/* 80370A58 80 8C 00 1C */ lwz r4, 0x1c(r12) -/* 80370A5C 80 6C 00 20 */ lwz r3, 0x20(r12) -/* 80370A60 80 0C 00 24 */ lwz r0, 0x24(r12) -/* 80370A64 91 61 00 70 */ stw r11, 0x70(r1) -/* 80370A68 91 41 00 74 */ stw r10, 0x74(r1) -/* 80370A6C 91 21 00 78 */ stw r9, 0x78(r1) -/* 80370A70 91 01 00 7C */ stw r8, 0x7c(r1) -/* 80370A74 90 E1 00 80 */ stw r7, 0x80(r1) -/* 80370A78 90 C1 00 84 */ stw r6, 0x84(r1) -/* 80370A7C 90 A1 00 88 */ stw r5, 0x88(r1) -/* 80370A80 90 81 00 8C */ stw r4, 0x8c(r1) -/* 80370A84 90 61 00 90 */ stw r3, 0x90(r1) -/* 80370A88 90 01 00 94 */ stw r0, 0x94(r1) -/* 80370A8C 40 80 00 50 */ bge lbl_80370ADC -/* 80370A90 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370A94 67 40 C8 03 */ oris r0, r26, 0xc803 -/* 80370A98 41 82 00 08 */ beq lbl_80370AA0 -/* 80370A9C 67 40 D8 03 */ oris r0, r26, 0xd803 -lbl_80370AA0: -/* 80370AA0 3C 60 4E 80 */ lis r3, 0x4E80 /* 0x4E800020@ha */ -/* 80370AA4 90 01 00 70 */ stw r0, 0x70(r1) -/* 80370AA8 38 03 00 20 */ addi r0, r3, 0x0020 /* 0x4E800020@l */ -/* 80370AAC 7E E3 BB 78 */ mr r3, r23 -/* 80370AB0 90 01 00 94 */ stw r0, 0x94(r1) -/* 80370AB4 38 80 00 28 */ li r4, 0x28 -/* 80370AB8 4B FF EA 91 */ bl TRK_flush_cache -/* 80370ABC 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 80370AC0 39 81 00 70 */ addi r12, r1, 0x70 -/* 80370AC4 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 80370AC8 38 61 00 08 */ addi r3, r1, 8 -/* 80370ACC 7D 89 03 A6 */ mtctr r12 -/* 80370AD0 4E 80 04 21 */ bctrl -/* 80370AD4 3A 80 00 00 */ li r20, 0 -/* 80370AD8 48 00 01 40 */ b lbl_80370C18 -lbl_80370ADC: -/* 80370ADC 40 82 00 44 */ bne lbl_80370B20 -/* 80370AE0 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370AE4 41 82 00 10 */ beq lbl_80370AF4 -/* 80370AE8 38 61 00 08 */ addi r3, r1, 8 -/* 80370AEC 4B FF EE E1 */ bl ReadFPSCR -/* 80370AF0 48 00 00 0C */ b lbl_80370AFC -lbl_80370AF4: -/* 80370AF4 38 61 00 08 */ addi r3, r1, 8 -/* 80370AF8 4B FF EE F9 */ bl WriteFPSCR -lbl_80370AFC: -/* 80370AFC 80 81 00 08 */ lwz r4, 8(r1) -/* 80370B00 38 00 00 00 */ li r0, 0 -/* 80370B04 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 80370B08 38 60 FF FF */ li r3, -1 -/* 80370B0C 7C 80 00 38 */ and r0, r4, r0 -/* 80370B10 7C A3 18 38 */ and r3, r5, r3 -/* 80370B14 90 01 00 08 */ stw r0, 8(r1) -/* 80370B18 90 61 00 0C */ stw r3, 0xc(r1) -/* 80370B1C 48 00 00 FC */ b lbl_80370C18 -lbl_80370B20: -/* 80370B20 28 15 00 21 */ cmplwi r21, 0x21 -/* 80370B24 40 82 00 F4 */ bne lbl_80370C18 -/* 80370B28 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370B2C 40 82 00 0C */ bne lbl_80370B38 -/* 80370B30 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80370B34 90 01 00 08 */ stw r0, 8(r1) -lbl_80370B38: -/* 80370B38 3C 60 80 3A */ lis r3, lit_276@ha /* 0x803A2B70@ha */ -/* 80370B3C 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370B40 39 83 2B 70 */ addi r12, r3, lit_276@l /* 0x803A2B70@l */ -/* 80370B44 81 6C 00 00 */ lwz r11, 0(r12) -/* 80370B48 81 4C 00 04 */ lwz r10, 4(r12) -/* 80370B4C 81 2C 00 08 */ lwz r9, 8(r12) -/* 80370B50 81 0C 00 0C */ lwz r8, 0xc(r12) -/* 80370B54 80 EC 00 10 */ lwz r7, 0x10(r12) -/* 80370B58 80 CC 00 14 */ lwz r6, 0x14(r12) -/* 80370B5C 80 AC 00 18 */ lwz r5, 0x18(r12) -/* 80370B60 80 8C 00 1C */ lwz r4, 0x1c(r12) -/* 80370B64 80 6C 00 20 */ lwz r3, 0x20(r12) -/* 80370B68 80 0C 00 24 */ lwz r0, 0x24(r12) -/* 80370B6C 91 61 00 20 */ stw r11, 0x20(r1) -/* 80370B70 91 41 00 24 */ stw r10, 0x24(r1) -/* 80370B74 91 21 00 28 */ stw r9, 0x28(r1) -/* 80370B78 91 01 00 2C */ stw r8, 0x2c(r1) -/* 80370B7C 90 E1 00 30 */ stw r7, 0x30(r1) -/* 80370B80 90 C1 00 34 */ stw r6, 0x34(r1) -/* 80370B84 90 A1 00 38 */ stw r5, 0x38(r1) -/* 80370B88 90 81 00 3C */ stw r4, 0x3c(r1) -/* 80370B8C 90 61 00 40 */ stw r3, 0x40(r1) -/* 80370B90 90 01 00 44 */ stw r0, 0x44(r1) -/* 80370B94 41 82 00 1C */ beq lbl_80370BB0 -/* 80370B98 3C 60 7C 9F */ lis r3, 0x7C9F /* 0x7C9EFAA6@ha */ -/* 80370B9C 3C 00 90 83 */ lis r0, 0x9083 -/* 80370BA0 38 63 FA A6 */ addi r3, r3, 0xFAA6 /* 0x7C9EFAA6@l */ -/* 80370BA4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370BA8 90 61 00 20 */ stw r3, 0x20(r1) -/* 80370BAC 48 00 00 18 */ b lbl_80370BC4 -lbl_80370BB0: -/* 80370BB0 3C 60 7C 9F */ lis r3, 0x7C9F /* 0x7C9EFBA6@ha */ -/* 80370BB4 3C 80 80 83 */ lis r4, 0x8083 -/* 80370BB8 38 03 FB A6 */ addi r0, r3, 0xFBA6 /* 0x7C9EFBA6@l */ -/* 80370BBC 90 81 00 20 */ stw r4, 0x20(r1) -/* 80370BC0 90 01 00 24 */ stw r0, 0x24(r1) -lbl_80370BC4: -/* 80370BC4 3C 80 4E 80 */ lis r4, 0x4E80 /* 0x4E800020@ha */ -/* 80370BC8 7E C3 B3 78 */ mr r3, r22 -/* 80370BCC 38 04 00 20 */ addi r0, r4, 0x0020 /* 0x4E800020@l */ -/* 80370BD0 38 80 00 28 */ li r4, 0x28 -/* 80370BD4 90 01 00 44 */ stw r0, 0x44(r1) -/* 80370BD8 4B FF E9 71 */ bl TRK_flush_cache -/* 80370BDC 3C 60 80 45 */ lis r3, TRKvalue128_temp@ha /* 0x8044F7FC@ha */ -/* 80370BE0 39 81 00 20 */ addi r12, r1, 0x20 -/* 80370BE4 38 83 F7 FC */ addi r4, r3, TRKvalue128_temp@l /* 0x8044F7FC@l */ -/* 80370BE8 38 61 00 08 */ addi r3, r1, 8 -/* 80370BEC 7D 89 03 A6 */ mtctr r12 -/* 80370BF0 4E 80 04 21 */ bctrl -/* 80370BF4 2C 1F 00 00 */ cmpwi r31, 0 -/* 80370BF8 3A 80 00 00 */ li r20, 0 -/* 80370BFC 41 82 00 1C */ beq lbl_80370C18 -/* 80370C00 80 81 00 08 */ lwz r4, 8(r1) -/* 80370C04 38 60 FF FF */ li r3, -1 -/* 80370C08 7E 80 A0 38 */ and r0, r20, r20 -/* 80370C0C 7C 83 18 38 */ and r3, r4, r3 -/* 80370C10 90 01 00 08 */ stw r0, 8(r1) -/* 80370C14 90 61 00 0C */ stw r3, 0xc(r1) -lbl_80370C18: -/* 80370C18 7E 83 A3 78 */ mr r3, r20 -lbl_80370C1C: -/* 80370C1C 80 9E 00 00 */ lwz r4, 0(r30) -/* 80370C20 3F 5A 00 20 */ addis r26, r26, 0x20 -/* 80370C24 3A B5 00 01 */ addi r21, r21, 1 -/* 80370C28 38 04 00 08 */ addi r0, r4, 8 -/* 80370C2C 90 1E 00 00 */ stw r0, 0(r30) -lbl_80370C30: -/* 80370C30 7C 15 E0 40 */ cmplw r21, r28 -/* 80370C34 41 81 00 0C */ bgt lbl_80370C40 -/* 80370C38 2C 03 00 00 */ cmpwi r3, 0 -/* 80370C3C 41 82 FB E4 */ beq lbl_80370820 -lbl_80370C40: -/* 80370C40 88 1B 00 0D */ lbz r0, 0xd(r27) -/* 80370C44 28 00 00 00 */ cmplwi r0, 0 -/* 80370C48 41 82 00 10 */ beq lbl_80370C58 -/* 80370C4C 38 00 00 00 */ li r0, 0 -/* 80370C50 38 60 07 02 */ li r3, 0x702 -/* 80370C54 90 1E 00 00 */ stw r0, 0(r30) -lbl_80370C58: -/* 80370C58 3C 80 80 3D */ lis r4, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370C5C 80 C1 00 10 */ lwz r6, 0x10(r1) -/* 80370C60 38 E4 32 44 */ addi r7, r4, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370C64 80 A1 00 14 */ lwz r5, 0x14(r1) -/* 80370C68 80 81 00 18 */ lwz r4, 0x18(r1) -/* 80370C6C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80370C70 90 C7 00 00 */ stw r6, 0(r7) -/* 80370C74 90 A7 00 04 */ stw r5, 4(r7) -/* 80370C78 90 87 00 08 */ stw r4, 8(r7) -/* 80370C7C 90 07 00 0C */ stw r0, 0xc(r7) -lbl_80370C80: -/* 80370C80 BA 81 00 C0 */ lmw r20, 0xc0(r1) -/* 80370C84 80 01 00 F4 */ lwz r0, 0xf4(r1) -/* 80370C88 7C 08 03 A6 */ mtlr r0 -/* 80370C8C 38 21 00 F0 */ addi r1, r1, 0xf0 -/* 80370C90 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessMemory.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessMemory.s deleted file mode 100644 index 45ee6ff326..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessMemory.s +++ /dev/null @@ -1,88 +0,0 @@ -lbl_80370DD4: -/* 80370DD4 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80370DD8 7C 08 02 A6 */ mflr r0 -/* 80370DDC 3C C0 80 3D */ lis r6, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370DE0 90 01 00 44 */ stw r0, 0x44(r1) -/* 80370DE4 38 00 00 00 */ li r0, 0 -/* 80370DE8 BF 21 00 24 */ stmw r25, 0x24(r1) -/* 80370DEC 3B E6 32 44 */ addi r31, r6, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370DF0 7C 9B 23 78 */ mr r27, r4 -/* 80370DF4 7C BC 2B 78 */ mr r28, r5 -/* 80370DF8 7C 7A 1B 78 */ mr r26, r3 -/* 80370DFC 7C FD 3B 78 */ mr r29, r7 -/* 80370E00 7F 63 DB 78 */ mr r3, r27 -/* 80370E04 80 9F 00 0C */ lwz r4, 0xc(r31) -/* 80370E08 81 1F 00 00 */ lwz r8, 0(r31) -/* 80370E0C 80 DF 00 04 */ lwz r6, 4(r31) -/* 80370E10 80 BF 00 08 */ lwz r5, 8(r31) -/* 80370E14 91 01 00 08 */ stw r8, 8(r1) -/* 80370E18 90 C1 00 0C */ stw r6, 0xc(r1) -/* 80370E1C 90 A1 00 10 */ stw r5, 0x10(r1) -/* 80370E20 90 81 00 14 */ stw r4, 0x14(r1) -/* 80370E24 98 1F 00 0D */ stb r0, 0xd(r31) -/* 80370E28 48 00 0C FD */ bl TRKTargetTranslate -/* 80370E2C 7F A0 00 34 */ cntlzw r0, r29 -/* 80370E30 80 9C 00 00 */ lwz r4, 0(r28) -/* 80370E34 7C 79 1B 78 */ mr r25, r3 -/* 80370E38 54 05 D9 7E */ srwi r5, r0, 5 -/* 80370E3C 48 00 00 E5 */ bl TRKValidMemory32 -/* 80370E40 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80370E44 41 82 00 10 */ beq lbl_80370E54 -/* 80370E48 38 00 00 00 */ li r0, 0 -/* 80370E4C 90 1C 00 00 */ stw r0, 0(r28) -/* 80370E50 48 00 00 78 */ b lbl_80370EC8 -lbl_80370E54: -/* 80370E54 4B FF E7 E5 */ bl __TRK_get_MSR -/* 80370E58 3C 80 80 45 */ lis r4, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80370E5C 2C 1D 00 00 */ cmpwi r29, 0 -/* 80370E60 38 84 F3 38 */ addi r4, r4, gTRKCPUState@l /* 0x8044F338@l */ -/* 80370E64 7C 68 1B 78 */ mr r8, r3 -/* 80370E68 80 04 01 F8 */ lwz r0, 0x1f8(r4) -/* 80370E6C 54 00 06 F6 */ rlwinm r0, r0, 0, 0x1b, 0x1b -/* 80370E70 7D 07 03 78 */ or r7, r8, r0 -/* 80370E74 41 82 00 1C */ beq lbl_80370E90 -/* 80370E78 80 BC 00 00 */ lwz r5, 0(r28) -/* 80370E7C 7F 43 D3 78 */ mr r3, r26 -/* 80370E80 7F 24 CB 78 */ mr r4, r25 -/* 80370E84 7D 06 43 78 */ mr r6, r8 -/* 80370E88 4B FF E7 C1 */ bl TRK_ppc_memcpy -/* 80370E8C 48 00 00 3C */ b lbl_80370EC8 -lbl_80370E90: -/* 80370E90 80 BC 00 00 */ lwz r5, 0(r28) -/* 80370E94 7F 23 CB 78 */ mr r3, r25 -/* 80370E98 7F 44 D3 78 */ mr r4, r26 -/* 80370E9C 7C E6 3B 78 */ mr r6, r7 -/* 80370EA0 7D 07 43 78 */ mr r7, r8 -/* 80370EA4 4B FF E7 A5 */ bl TRK_ppc_memcpy -/* 80370EA8 80 9C 00 00 */ lwz r4, 0(r28) -/* 80370EAC 7F 23 CB 78 */ mr r3, r25 -/* 80370EB0 4B FF E6 99 */ bl TRK_flush_cache -/* 80370EB4 7C 1B C8 40 */ cmplw r27, r25 -/* 80370EB8 41 82 00 10 */ beq lbl_80370EC8 -/* 80370EBC 80 9C 00 00 */ lwz r4, 0(r28) -/* 80370EC0 7F 63 DB 78 */ mr r3, r27 -/* 80370EC4 4B FF E6 85 */ bl TRK_flush_cache -lbl_80370EC8: -/* 80370EC8 88 1F 00 0D */ lbz r0, 0xd(r31) -/* 80370ECC 28 00 00 00 */ cmplwi r0, 0 -/* 80370ED0 41 82 00 10 */ beq lbl_80370EE0 -/* 80370ED4 38 00 00 00 */ li r0, 0 -/* 80370ED8 3B C0 07 02 */ li r30, 0x702 -/* 80370EDC 90 1C 00 00 */ stw r0, 0(r28) -lbl_80370EE0: -/* 80370EE0 3C 60 80 3D */ lis r3, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 80370EE4 80 C1 00 08 */ lwz r6, 8(r1) -/* 80370EE8 38 E3 32 44 */ addi r7, r3, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 80370EEC 80 A1 00 0C */ lwz r5, 0xc(r1) -/* 80370EF0 80 81 00 10 */ lwz r4, 0x10(r1) -/* 80370EF4 7F C3 F3 78 */ mr r3, r30 -/* 80370EF8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80370EFC 90 C7 00 00 */ stw r6, 0(r7) -/* 80370F00 90 A7 00 04 */ stw r5, 4(r7) -/* 80370F04 90 87 00 08 */ stw r4, 8(r7) -/* 80370F08 90 07 00 0C */ stw r0, 0xc(r7) -/* 80370F0C BB 21 00 24 */ lmw r25, 0x24(r1) -/* 80370F10 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80370F14 7C 08 03 A6 */ mtlr r0 -/* 80370F18 38 21 00 40 */ addi r1, r1, 0x40 -/* 80370F1C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddExceptionInfo.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddExceptionInfo.s deleted file mode 100644 index bae5c00a75..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddExceptionInfo.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_8036FE94: -/* 8036FE94 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8036FE98 7C 08 02 A6 */ mflr r0 -/* 8036FE9C 38 80 00 00 */ li r4, 0 -/* 8036FEA0 38 A0 00 40 */ li r5, 0x40 -/* 8036FEA4 90 01 00 64 */ stw r0, 0x64(r1) -/* 8036FEA8 93 E1 00 5C */ stw r31, 0x5c(r1) -/* 8036FEAC 7C 7F 1B 78 */ mr r31, r3 -/* 8036FEB0 38 61 00 0C */ addi r3, r1, 0xc -/* 8036FEB4 4B C9 35 A5 */ bl memset -/* 8036FEB8 3C 60 80 3D */ lis r3, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8036FEBC 38 A0 00 40 */ li r5, 0x40 -/* 8036FEC0 80 83 32 44 */ lwz r4, gTRKExceptionStatus@l(r3) /* 0x803D3244@l */ -/* 8036FEC4 38 00 00 91 */ li r0, 0x91 -/* 8036FEC8 90 A1 00 0C */ stw r5, 0xc(r1) -/* 8036FECC 38 61 00 08 */ addi r3, r1, 8 -/* 8036FED0 98 01 00 10 */ stb r0, 0x10(r1) -/* 8036FED4 90 81 00 14 */ stw r4, 0x14(r1) -/* 8036FED8 48 00 0E B1 */ bl TRKTargetReadInstruction -/* 8036FEDC 3C 60 80 3D */ lis r3, gTRKExceptionStatus@ha /* 0x803D3244@ha */ -/* 8036FEE0 80 A1 00 08 */ lwz r5, 8(r1) -/* 8036FEE4 38 83 32 44 */ addi r4, r3, gTRKExceptionStatus@l /* 0x803D3244@l */ -/* 8036FEE8 7F E3 FB 78 */ mr r3, r31 -/* 8036FEEC A0 04 00 08 */ lhz r0, 8(r4) -/* 8036FEF0 38 81 00 0C */ addi r4, r1, 0xc -/* 8036FEF4 90 A1 00 18 */ stw r5, 0x18(r1) -/* 8036FEF8 38 A0 00 40 */ li r5, 0x40 -/* 8036FEFC 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8036FF00 4B FF D4 89 */ bl TRKAppendBuffer_ui8 -/* 8036FF04 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8036FF08 83 E1 00 5C */ lwz r31, 0x5c(r1) -/* 8036FF0C 7C 08 03 A6 */ mtlr r0 -/* 8036FF10 38 21 00 60 */ addi r1, r1, 0x60 -/* 8036FF14 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddStopInfo.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddStopInfo.s deleted file mode 100644 index 5e0e45cbd4..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddStopInfo.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_8036FF18: -/* 8036FF18 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8036FF1C 7C 08 02 A6 */ mflr r0 -/* 8036FF20 38 80 00 00 */ li r4, 0 -/* 8036FF24 38 A0 00 40 */ li r5, 0x40 -/* 8036FF28 90 01 00 64 */ stw r0, 0x64(r1) -/* 8036FF2C 93 E1 00 5C */ stw r31, 0x5c(r1) -/* 8036FF30 7C 7F 1B 78 */ mr r31, r3 -/* 8036FF34 38 61 00 0C */ addi r3, r1, 0xc -/* 8036FF38 4B C9 35 21 */ bl memset -/* 8036FF3C 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FF40 38 A0 00 40 */ li r5, 0x40 -/* 8036FF44 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FF48 38 00 00 90 */ li r0, 0x90 -/* 8036FF4C 80 83 00 80 */ lwz r4, 0x80(r3) -/* 8036FF50 38 61 00 08 */ addi r3, r1, 8 -/* 8036FF54 90 A1 00 0C */ stw r5, 0xc(r1) -/* 8036FF58 98 01 00 10 */ stb r0, 0x10(r1) -/* 8036FF5C 90 81 00 14 */ stw r4, 0x14(r1) -/* 8036FF60 48 00 0E 29 */ bl TRKTargetReadInstruction -/* 8036FF64 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FF68 80 A1 00 08 */ lwz r5, 8(r1) -/* 8036FF6C 38 83 F3 38 */ addi r4, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FF70 7F E3 FB 78 */ mr r3, r31 -/* 8036FF74 80 04 02 F8 */ lwz r0, 0x2f8(r4) -/* 8036FF78 38 81 00 0C */ addi r4, r1, 0xc -/* 8036FF7C 90 A1 00 18 */ stw r5, 0x18(r1) -/* 8036FF80 38 A0 00 40 */ li r5, 0x40 -/* 8036FF84 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 8036FF88 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8036FF8C 4B FF D3 FD */ bl TRKAppendBuffer_ui8 -/* 8036FF90 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8036FF94 83 E1 00 5C */ lwz r31, 0x5c(r1) -/* 8036FF98 7C 08 03 A6 */ mtlr r0 -/* 8036FF9C 38 21 00 60 */ addi r1, r1, 0x60 -/* 8036FFA0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetInterrupt.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetInterrupt.s deleted file mode 100644 index 280e7fb80a..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetInterrupt.s +++ /dev/null @@ -1,110 +0,0 @@ -lbl_8036FFA4: -/* 8036FFA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036FFA8 7C 08 02 A6 */ mflr r0 -/* 8036FFAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036FFB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8036FFB4 93 C1 00 08 */ stw r30, 8(r1) -/* 8036FFB8 3B C0 00 00 */ li r30, 0 -/* 8036FFBC 80 03 00 00 */ lwz r0, 0(r3) -/* 8036FFC0 2C 00 00 05 */ cmpwi r0, 5 -/* 8036FFC4 40 80 01 54 */ bge lbl_80370118 -/* 8036FFC8 2C 00 00 03 */ cmpwi r0, 3 -/* 8036FFCC 40 80 00 08 */ bge lbl_8036FFD4 -/* 8036FFD0 48 00 01 48 */ b lbl_80370118 -lbl_8036FFD4: -/* 8036FFD4 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 8036FFD8 38 83 32 54 */ addi r4, r3, gTRKStepStatus@l /* 0x803D3254@l */ -/* 8036FFDC 80 04 00 00 */ lwz r0, 0(r4) -/* 8036FFE0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036FFE4 41 82 01 08 */ beq lbl_803700EC -/* 8036FFE8 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FFEC 38 A0 00 01 */ li r5, 1 -/* 8036FFF0 3B E3 F3 38 */ addi r31, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FFF4 80 1F 01 F8 */ lwz r0, 0x1f8(r31) -/* 8036FFF8 54 00 05 A8 */ rlwinm r0, r0, 0, 0x16, 0x14 -/* 8036FFFC 90 1F 01 F8 */ stw r0, 0x1f8(r31) -/* 80370000 41 82 00 64 */ beq lbl_80370064 -/* 80370004 80 1F 02 F8 */ lwz r0, 0x2f8(r31) -/* 80370008 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 8037000C 28 00 0D 00 */ cmplwi r0, 0xd00 -/* 80370010 40 82 00 54 */ bne lbl_80370064 -/* 80370014 80 04 00 04 */ lwz r0, 4(r4) -/* 80370018 2C 00 00 01 */ cmpwi r0, 1 -/* 8037001C 41 82 00 28 */ beq lbl_80370044 -/* 80370020 40 80 00 44 */ bge lbl_80370064 -/* 80370024 2C 00 00 00 */ cmpwi r0, 0 -/* 80370028 40 80 00 08 */ bge lbl_80370030 -/* 8037002C 48 00 00 38 */ b lbl_80370064 -lbl_80370030: -/* 80370030 80 04 00 08 */ lwz r0, 8(r4) -/* 80370034 28 00 00 00 */ cmplwi r0, 0 -/* 80370038 41 82 00 2C */ beq lbl_80370064 -/* 8037003C 38 A0 00 00 */ li r5, 0 -/* 80370040 48 00 00 24 */ b lbl_80370064 -lbl_80370044: -/* 80370044 80 7F 00 80 */ lwz r3, 0x80(r31) -/* 80370048 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8037004C 7C 03 00 40 */ cmplw r3, r0 -/* 80370050 41 80 00 14 */ blt lbl_80370064 -/* 80370054 80 04 00 10 */ lwz r0, 0x10(r4) -/* 80370058 7C 03 00 40 */ cmplw r3, r0 -/* 8037005C 41 81 00 08 */ bgt lbl_80370064 -/* 80370060 38 A0 00 00 */ li r5, 0 -lbl_80370064: -/* 80370064 2C 05 00 00 */ cmpwi r5, 0 -/* 80370068 41 82 00 14 */ beq lbl_8037007C -/* 8037006C 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 80370070 38 00 00 00 */ li r0, 0 -/* 80370074 90 03 32 54 */ stw r0, gTRKStepStatus@l(r3) /* 0x803D3254@l */ -/* 80370078 48 00 00 74 */ b lbl_803700EC -lbl_8037007C: -/* 8037007C 3C 80 80 3D */ lis r4, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 80370080 38 00 00 01 */ li r0, 1 -/* 80370084 38 A4 32 54 */ addi r5, r4, gTRKStepStatus@l /* 0x803D3254@l */ -/* 80370088 3C 60 80 3A */ lis r3, lit_422@ha /* 0x803A2BE8@ha */ -/* 8037008C 90 05 00 00 */ stw r0, 0(r5) -/* 80370090 38 83 2B E8 */ addi r4, r3, lit_422@l /* 0x803A2BE8@l */ -/* 80370094 38 60 00 01 */ li r3, 1 -/* 80370098 4C C6 31 82 */ crclr 6 -/* 8037009C 48 00 2B B9 */ bl MWTRACE -/* 803700A0 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 803700A4 80 1F 01 F8 */ lwz r0, 0x1f8(r31) -/* 803700A8 38 63 32 54 */ addi r3, r3, gTRKStepStatus@l /* 0x803D3254@l */ -/* 803700AC 80 63 00 04 */ lwz r3, 4(r3) -/* 803700B0 60 00 04 00 */ ori r0, r0, 0x400 -/* 803700B4 90 1F 01 F8 */ stw r0, 0x1f8(r31) -/* 803700B8 2C 03 00 00 */ cmpwi r3, 0 -/* 803700BC 41 82 00 0C */ beq lbl_803700C8 -/* 803700C0 2C 03 00 10 */ cmpwi r3, 0x10 -/* 803700C4 40 82 00 18 */ bne lbl_803700DC -lbl_803700C8: -/* 803700C8 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 803700CC 38 83 32 54 */ addi r4, r3, gTRKStepStatus@l /* 0x803D3254@l */ -/* 803700D0 80 64 00 08 */ lwz r3, 8(r4) -/* 803700D4 38 03 FF FF */ addi r0, r3, -1 -/* 803700D8 90 04 00 08 */ stw r0, 8(r4) -lbl_803700DC: -/* 803700DC 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 803700E0 38 00 00 00 */ li r0, 0 -/* 803700E4 38 63 F2 94 */ addi r3, r3, gTRKState@l /* 0x8044F294@l */ -/* 803700E8 90 03 00 98 */ stw r0, 0x98(r3) -lbl_803700EC: -/* 803700EC 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 803700F0 80 03 32 54 */ lwz r0, gTRKStepStatus@l(r3) /* 0x803D3254@l */ -/* 803700F4 2C 00 00 00 */ cmpwi r0, 0 -/* 803700F8 40 82 00 20 */ bne lbl_80370118 -/* 803700FC 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 80370100 38 00 00 01 */ li r0, 1 -/* 80370104 38 83 F2 94 */ addi r4, r3, gTRKState@l /* 0x8044F294@l */ -/* 80370108 38 60 00 90 */ li r3, 0x90 -/* 8037010C 90 04 00 98 */ stw r0, 0x98(r4) -/* 80370110 4B FF F3 A1 */ bl TRKDoNotifyStopped -/* 80370114 7C 7E 1B 78 */ mr r30, r3 -lbl_80370118: -/* 80370118 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8037011C 7F C3 F3 78 */ mr r3, r30 -/* 80370120 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80370124 83 C1 00 08 */ lwz r30, 8(r1) -/* 80370128 7C 08 03 A6 */ mtlr r0 -/* 8037012C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80370130 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetReadInstruction.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetReadInstruction.s deleted file mode 100644 index 21b8d91f73..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetReadInstruction.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80370D88: -/* 80370D88 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80370D8C 7C 08 02 A6 */ mflr r0 -/* 80370D90 38 C0 00 00 */ li r6, 0 -/* 80370D94 38 E0 00 01 */ li r7, 1 -/* 80370D98 90 01 00 14 */ stw r0, 0x14(r1) -/* 80370D9C 38 00 00 04 */ li r0, 4 -/* 80370DA0 38 A1 00 08 */ addi r5, r1, 8 -/* 80370DA4 90 01 00 08 */ stw r0, 8(r1) -/* 80370DA8 48 00 00 2D */ bl TRKTargetAccessMemory -/* 80370DAC 2C 03 00 00 */ cmpwi r3, 0 -/* 80370DB0 40 82 00 14 */ bne lbl_80370DC4 -/* 80370DB4 80 01 00 08 */ lwz r0, 8(r1) -/* 80370DB8 28 00 00 04 */ cmplwi r0, 4 -/* 80370DBC 41 82 00 08 */ beq lbl_80370DC4 -/* 80370DC0 38 60 07 00 */ li r3, 0x700 -lbl_80370DC4: -/* 80370DC4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80370DC8 7C 08 03 A6 */ mtlr r0 -/* 80370DCC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80370DD0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSingleStep.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSingleStep.s deleted file mode 100644 index 3fc7eff65a..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSingleStep.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_8036FDE8: -/* 8036FDE8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036FDEC 7C 08 02 A6 */ mflr r0 -/* 8036FDF0 2C 04 00 00 */ cmpwi r4, 0 -/* 8036FDF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036FDF8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8036FDFC 41 82 00 0C */ beq lbl_8036FE08 -/* 8036FE00 38 60 07 03 */ li r3, 0x703 -/* 8036FE04 48 00 00 7C */ b lbl_8036FE80 -lbl_8036FE08: -/* 8036FE08 3C A0 80 3D */ lis r5, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 8036FE0C 3C 80 80 3A */ lis r4, lit_422@ha /* 0x803A2BE8@ha */ -/* 8036FE10 3B E5 32 54 */ addi r31, r5, gTRKStepStatus@l /* 0x803D3254@l */ -/* 8036FE14 38 00 00 01 */ li r0, 1 -/* 8036FE18 38 A0 00 00 */ li r5, 0 -/* 8036FE1C 90 7F 00 08 */ stw r3, 8(r31) -/* 8036FE20 38 84 2B E8 */ addi r4, r4, lit_422@l /* 0x803A2BE8@l */ -/* 8036FE24 38 60 00 01 */ li r3, 1 -/* 8036FE28 90 BF 00 04 */ stw r5, 4(r31) -/* 8036FE2C 90 1F 00 00 */ stw r0, 0(r31) -/* 8036FE30 4C C6 31 82 */ crclr 6 -/* 8036FE34 48 00 2E 21 */ bl MWTRACE -/* 8036FE38 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FE3C 80 9F 00 04 */ lwz r4, 4(r31) -/* 8036FE40 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FE44 80 03 01 F8 */ lwz r0, 0x1f8(r3) -/* 8036FE48 2C 04 00 00 */ cmpwi r4, 0 -/* 8036FE4C 60 00 04 00 */ ori r0, r0, 0x400 -/* 8036FE50 90 03 01 F8 */ stw r0, 0x1f8(r3) -/* 8036FE54 41 82 00 0C */ beq lbl_8036FE60 -/* 8036FE58 2C 04 00 10 */ cmpwi r4, 0x10 -/* 8036FE5C 40 82 00 10 */ bne lbl_8036FE6C -lbl_8036FE60: -/* 8036FE60 80 7F 00 08 */ lwz r3, 8(r31) -/* 8036FE64 38 03 FF FF */ addi r0, r3, -1 -/* 8036FE68 90 1F 00 08 */ stw r0, 8(r31) -lbl_8036FE6C: -/* 8036FE6C 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 8036FE70 38 00 00 00 */ li r0, 0 -/* 8036FE74 38 83 F2 94 */ addi r4, r3, gTRKState@l /* 0x8044F294@l */ -/* 8036FE78 38 60 00 00 */ li r3, 0 -/* 8036FE7C 90 04 00 98 */ stw r0, 0x98(r4) -lbl_8036FE80: -/* 8036FE80 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036FE84 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8036FE88 7C 08 03 A6 */ mtlr r0 -/* 8036FE8C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036FE90 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetStepOutOfRange.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetStepOutOfRange.s deleted file mode 100644 index 8dc3493adb..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetStepOutOfRange.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_8036FD30: -/* 8036FD30 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036FD34 7C 08 02 A6 */ mflr r0 -/* 8036FD38 2C 05 00 00 */ cmpwi r5, 0 -/* 8036FD3C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036FD40 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8036FD44 41 82 00 0C */ beq lbl_8036FD50 -/* 8036FD48 38 60 07 03 */ li r3, 0x703 -/* 8036FD4C 48 00 00 88 */ b lbl_8036FDD4 -lbl_8036FD50: -/* 8036FD50 3C C0 80 3D */ lis r6, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 8036FD54 3C A0 80 3A */ lis r5, lit_422@ha /* 0x803A2BE8@ha */ -/* 8036FD58 3B E6 32 54 */ addi r31, r6, gTRKStepStatus@l /* 0x803D3254@l */ -/* 8036FD5C 38 C0 00 01 */ li r6, 1 -/* 8036FD60 90 7F 00 0C */ stw r3, 0xc(r31) -/* 8036FD64 38 05 2B E8 */ addi r0, r5, lit_422@l /* 0x803A2BE8@l */ -/* 8036FD68 38 60 00 01 */ li r3, 1 -/* 8036FD6C 90 9F 00 10 */ stw r4, 0x10(r31) -/* 8036FD70 7C 04 03 78 */ mr r4, r0 -/* 8036FD74 90 DF 00 04 */ stw r6, 4(r31) -/* 8036FD78 90 DF 00 00 */ stw r6, 0(r31) -/* 8036FD7C 4C C6 31 82 */ crclr 6 -/* 8036FD80 48 00 2E D5 */ bl MWTRACE -/* 8036FD84 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FD88 80 9F 00 04 */ lwz r4, 4(r31) -/* 8036FD8C 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FD90 80 03 01 F8 */ lwz r0, 0x1f8(r3) -/* 8036FD94 2C 04 00 00 */ cmpwi r4, 0 -/* 8036FD98 60 00 04 00 */ ori r0, r0, 0x400 -/* 8036FD9C 90 03 01 F8 */ stw r0, 0x1f8(r3) -/* 8036FDA0 41 82 00 0C */ beq lbl_8036FDAC -/* 8036FDA4 2C 04 00 10 */ cmpwi r4, 0x10 -/* 8036FDA8 40 82 00 18 */ bne lbl_8036FDC0 -lbl_8036FDAC: -/* 8036FDAC 3C 60 80 3D */ lis r3, gTRKStepStatus@ha /* 0x803D3254@ha */ -/* 8036FDB0 38 83 32 54 */ addi r4, r3, gTRKStepStatus@l /* 0x803D3254@l */ -/* 8036FDB4 80 64 00 08 */ lwz r3, 8(r4) -/* 8036FDB8 38 03 FF FF */ addi r0, r3, -1 -/* 8036FDBC 90 04 00 08 */ stw r0, 8(r4) -lbl_8036FDC0: -/* 8036FDC0 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 8036FDC4 38 00 00 00 */ li r0, 0 -/* 8036FDC8 38 83 F2 94 */ addi r4, r3, gTRKState@l /* 0x8044F294@l */ -/* 8036FDCC 38 60 00 00 */ li r3, 0 -/* 8036FDD0 90 04 00 98 */ stw r0, 0x98(r4) -lbl_8036FDD4: -/* 8036FDD4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036FDD8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8036FDDC 7C 08 03 A6 */ mtlr r0 -/* 8036FDE0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036FDE4 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSupportRequest.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSupportRequest.s deleted file mode 100644 index 4e0bed30d2..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSupportRequest.s +++ /dev/null @@ -1,139 +0,0 @@ -lbl_8036FB20: -/* 8036FB20 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8036FB24 7C 08 02 A6 */ mflr r0 -/* 8036FB28 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FB2C 90 01 00 44 */ stw r0, 0x44(r1) -/* 8036FB30 BF 61 00 2C */ stmw r27, 0x2c(r1) -/* 8036FB34 3B E3 F3 38 */ addi r31, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FB38 83 7F 00 0C */ lwz r27, 0xc(r31) -/* 8036FB3C 2C 1B 00 D1 */ cmpwi r27, 0xd1 -/* 8036FB40 41 82 00 40 */ beq lbl_8036FB80 -/* 8036FB44 2C 1B 00 D0 */ cmpwi r27, 0xd0 -/* 8036FB48 41 82 00 38 */ beq lbl_8036FB80 -/* 8036FB4C 2C 1B 00 D2 */ cmpwi r27, 0xd2 -/* 8036FB50 41 82 00 30 */ beq lbl_8036FB80 -/* 8036FB54 2C 1B 00 D3 */ cmpwi r27, 0xd3 -/* 8036FB58 41 82 00 28 */ beq lbl_8036FB80 -/* 8036FB5C 2C 1B 00 D4 */ cmpwi r27, 0xd4 -/* 8036FB60 41 82 00 20 */ beq lbl_8036FB80 -/* 8036FB64 38 61 00 10 */ addi r3, r1, 0x10 -/* 8036FB68 38 80 00 04 */ li r4, 4 -/* 8036FB6C 4B FF D0 D1 */ bl TRKConstructEvent -/* 8036FB70 38 61 00 10 */ addi r3, r1, 0x10 -/* 8036FB74 4B FF D0 E1 */ bl TRKPostEvent -/* 8036FB78 38 60 00 00 */ li r3, 0 -/* 8036FB7C 48 00 01 90 */ b lbl_8036FD0C -lbl_8036FB80: -/* 8036FB80 2C 1B 00 D2 */ cmpwi r27, 0xd2 -/* 8036FB84 40 82 00 50 */ bne lbl_8036FBD4 -/* 8036FB88 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FB8C 38 C1 00 0C */ addi r6, r1, 0xc -/* 8036FB90 38 83 F3 38 */ addi r4, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FB94 80 04 00 14 */ lwz r0, 0x14(r4) -/* 8036FB98 80 64 00 10 */ lwz r3, 0x10(r4) -/* 8036FB9C 80 A4 00 18 */ lwz r5, 0x18(r4) -/* 8036FBA0 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 8036FBA4 4B FF F3 D9 */ bl HandleOpenFileSupportRequest -/* 8036FBA8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FBAC 7C 7E 1B 78 */ mr r30, r3 -/* 8036FBB0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036FBB4 40 82 00 14 */ bne lbl_8036FBC8 -/* 8036FBB8 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036FBBC 41 82 00 0C */ beq lbl_8036FBC8 -/* 8036FBC0 38 00 00 01 */ li r0, 1 -/* 8036FBC4 90 01 00 0C */ stw r0, 0xc(r1) -lbl_8036FBC8: -/* 8036FBC8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FBCC 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8036FBD0 48 00 01 24 */ b lbl_8036FCF4 -lbl_8036FBD4: -/* 8036FBD4 2C 1B 00 D3 */ cmpwi r27, 0xd3 -/* 8036FBD8 40 82 00 44 */ bne lbl_8036FC1C -/* 8036FBDC 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FBE0 38 81 00 0C */ addi r4, r1, 0xc -/* 8036FBE4 38 63 F3 38 */ addi r3, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FBE8 80 63 00 10 */ lwz r3, 0x10(r3) -/* 8036FBEC 4B FF F2 A9 */ bl HandleCloseFileSupportRequest -/* 8036FBF0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FBF4 7C 7E 1B 78 */ mr r30, r3 -/* 8036FBF8 2C 00 00 00 */ cmpwi r0, 0 -/* 8036FBFC 40 82 00 14 */ bne lbl_8036FC10 -/* 8036FC00 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036FC04 41 82 00 0C */ beq lbl_8036FC10 -/* 8036FC08 38 00 00 01 */ li r0, 1 -/* 8036FC0C 90 01 00 0C */ stw r0, 0xc(r1) -lbl_8036FC10: -/* 8036FC10 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FC14 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8036FC18 48 00 00 DC */ b lbl_8036FCF4 -lbl_8036FC1C: -/* 8036FC1C 2C 1B 00 D4 */ cmpwi r27, 0xd4 -/* 8036FC20 40 82 00 68 */ bne lbl_8036FC88 -/* 8036FC24 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FC28 38 81 00 08 */ addi r4, r1, 8 -/* 8036FC2C 3B A3 F3 38 */ addi r29, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FC30 38 C1 00 0C */ addi r6, r1, 0xc -/* 8036FC34 80 7D 00 14 */ lwz r3, 0x14(r29) -/* 8036FC38 80 1D 00 18 */ lwz r0, 0x18(r29) -/* 8036FC3C 80 E3 00 00 */ lwz r7, 0(r3) -/* 8036FC40 80 7D 00 10 */ lwz r3, 0x10(r29) -/* 8036FC44 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 8036FC48 90 E1 00 08 */ stw r7, 8(r1) -/* 8036FC4C 4B FF F1 39 */ bl HandlePositionFileSupportRequest -/* 8036FC50 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FC54 7C 7E 1B 78 */ mr r30, r3 -/* 8036FC58 2C 00 00 00 */ cmpwi r0, 0 -/* 8036FC5C 40 82 00 14 */ bne lbl_8036FC70 -/* 8036FC60 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036FC64 41 82 00 0C */ beq lbl_8036FC70 -/* 8036FC68 38 00 00 01 */ li r0, 1 -/* 8036FC6C 90 01 00 0C */ stw r0, 0xc(r1) -lbl_8036FC70: -/* 8036FC70 80 61 00 0C */ lwz r3, 0xc(r1) -/* 8036FC74 80 01 00 08 */ lwz r0, 8(r1) -/* 8036FC78 90 7F 00 0C */ stw r3, 0xc(r31) -/* 8036FC7C 80 7D 00 14 */ lwz r3, 0x14(r29) -/* 8036FC80 90 03 00 00 */ stw r0, 0(r3) -/* 8036FC84 48 00 00 70 */ b lbl_8036FCF4 -lbl_8036FC88: -/* 8036FC88 3C 60 80 45 */ lis r3, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FC8C 20 1B 00 D1 */ subfic r0, r27, 0xd1 -/* 8036FC90 3B A3 F3 38 */ addi r29, r3, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FC94 38 C1 00 0C */ addi r6, r1, 0xc -/* 8036FC98 83 9D 00 14 */ lwz r28, 0x14(r29) -/* 8036FC9C 7C 00 00 34 */ cntlzw r0, r0 -/* 8036FCA0 80 7D 00 10 */ lwz r3, 0x10(r29) -/* 8036FCA4 54 08 D9 7E */ srwi r8, r0, 5 -/* 8036FCA8 80 9D 00 18 */ lwz r4, 0x18(r29) -/* 8036FCAC 7F 85 E3 78 */ mr r5, r28 -/* 8036FCB0 38 E0 00 01 */ li r7, 1 -/* 8036FCB4 4B FF F5 C5 */ bl TRKSuppAccessFile -/* 8036FCB8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FCBC 7C 7E 1B 78 */ mr r30, r3 -/* 8036FCC0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036FCC4 40 82 00 14 */ bne lbl_8036FCD8 -/* 8036FCC8 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036FCCC 41 82 00 0C */ beq lbl_8036FCD8 -/* 8036FCD0 38 00 00 01 */ li r0, 1 -/* 8036FCD4 90 01 00 0C */ stw r0, 0xc(r1) -lbl_8036FCD8: -/* 8036FCD8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036FCDC 2C 1B 00 D1 */ cmpwi r27, 0xd1 -/* 8036FCE0 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8036FCE4 40 82 00 10 */ bne lbl_8036FCF4 -/* 8036FCE8 80 7D 00 18 */ lwz r3, 0x18(r29) -/* 8036FCEC 80 9C 00 00 */ lwz r4, 0(r28) -/* 8036FCF0 4B FF F8 59 */ bl TRK_flush_cache -lbl_8036FCF4: -/* 8036FCF4 3C 80 80 45 */ lis r4, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 8036FCF8 7F C3 F3 78 */ mr r3, r30 -/* 8036FCFC 38 A4 F3 38 */ addi r5, r4, gTRKCPUState@l /* 0x8044F338@l */ -/* 8036FD00 80 85 00 80 */ lwz r4, 0x80(r5) -/* 8036FD04 38 04 00 04 */ addi r0, r4, 4 -/* 8036FD08 90 05 00 80 */ stw r0, 0x80(r5) -lbl_8036FD0C: -/* 8036FD0C BB 61 00 2C */ lmw r27, 0x2c(r1) -/* 8036FD10 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8036FD14 7C 08 03 A6 */ mtlr r0 -/* 8036FD18 38 21 00 40 */ addi r1, r1, 0x40 -/* 8036FD1C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKValidMemory32.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKValidMemory32.s deleted file mode 100644 index d19954686c..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKValidMemory32.s +++ /dev/null @@ -1,189 +0,0 @@ -lbl_80370F20: -/* 80370F20 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80370F24 7C 08 02 A6 */ mflr r0 -/* 80370F28 90 01 00 24 */ stw r0, 0x24(r1) -/* 80370F2C BF 41 00 08 */ stmw r26, 8(r1) -/* 80370F30 7F 64 1A 14 */ add r27, r4, r3 -/* 80370F34 3B 7B FF FF */ addi r27, r27, -1 -/* 80370F38 7C BA 2B 78 */ mr r26, r5 -/* 80370F3C 7C 1B 18 40 */ cmplw r27, r3 -/* 80370F40 38 A0 07 00 */ li r5, 0x700 -/* 80370F44 40 80 00 0C */ bge lbl_80370F50 -/* 80370F48 38 60 07 00 */ li r3, 0x700 -/* 80370F4C 48 00 02 64 */ b lbl_803711B0 -lbl_80370F50: -/* 80370F50 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80370F54 38 C0 00 00 */ li r6, 0 -/* 80370F58 3B E4 2B 60 */ addi r31, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80370F5C 80 1F 00 04 */ lwz r0, 4(r31) -/* 80370F60 7C 03 00 40 */ cmplw r3, r0 -/* 80370F64 41 81 02 48 */ bgt lbl_803711AC -/* 80370F68 80 1F 00 00 */ lwz r0, 0(r31) -/* 80370F6C 7C 1B 00 40 */ cmplw r27, r0 -/* 80370F70 41 80 02 3C */ blt lbl_803711AC -/* 80370F74 2C 1A 00 00 */ cmpwi r26, 0 -/* 80370F78 40 82 00 18 */ bne lbl_80370F90 -/* 80370F7C 54 C0 20 36 */ slwi r0, r6, 4 -/* 80370F80 7C 9F 02 14 */ add r4, r31, r0 -/* 80370F84 80 04 00 08 */ lwz r0, 8(r4) -/* 80370F88 2C 00 00 00 */ cmpwi r0, 0 -/* 80370F8C 41 82 00 28 */ beq lbl_80370FB4 -lbl_80370F90: -/* 80370F90 2C 1A 00 01 */ cmpwi r26, 1 -/* 80370F94 40 82 00 28 */ bne lbl_80370FBC -/* 80370F98 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80370F9C 54 C0 20 36 */ slwi r0, r6, 4 -/* 80370FA0 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80370FA4 7C 84 02 14 */ add r4, r4, r0 -/* 80370FA8 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80370FAC 2C 00 00 00 */ cmpwi r0, 0 -/* 80370FB0 40 82 00 0C */ bne lbl_80370FBC -lbl_80370FB4: -/* 80370FB4 38 A0 07 00 */ li r5, 0x700 -/* 80370FB8 48 00 01 F4 */ b lbl_803711AC -lbl_80370FBC: -/* 80370FBC 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80370FC0 54 DD 20 36 */ slwi r29, r6, 4 -/* 80370FC4 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80370FC8 38 A0 00 00 */ li r5, 0 -/* 80370FCC 7C 04 E8 2E */ lwzx r0, r4, r29 -/* 80370FD0 7C 03 00 40 */ cmplw r3, r0 -/* 80370FD4 40 80 00 E4 */ bge lbl_803710B8 -/* 80370FD8 7C 03 00 50 */ subf r0, r3, r0 -/* 80370FDC 38 C0 07 00 */ li r6, 0x700 -/* 80370FE0 7F C0 1A 14 */ add r30, r0, r3 -/* 80370FE4 3B DE FF FF */ addi r30, r30, -1 -/* 80370FE8 7C 1E 18 40 */ cmplw r30, r3 -/* 80370FEC 40 80 00 08 */ bge lbl_80370FF4 -/* 80370FF0 48 00 00 C4 */ b lbl_803710B4 -lbl_80370FF4: -/* 80370FF4 80 1F 00 04 */ lwz r0, 4(r31) -/* 80370FF8 38 A0 00 00 */ li r5, 0 -/* 80370FFC 7C 03 00 40 */ cmplw r3, r0 -/* 80371000 41 81 00 B4 */ bgt lbl_803710B4 -/* 80371004 80 1F 00 00 */ lwz r0, 0(r31) -/* 80371008 7C 1E 00 40 */ cmplw r30, r0 -/* 8037100C 41 80 00 A8 */ blt lbl_803710B4 -/* 80371010 2C 1A 00 00 */ cmpwi r26, 0 -/* 80371014 40 82 00 18 */ bne lbl_8037102C -/* 80371018 54 A0 20 36 */ slwi r0, r5, 4 -/* 8037101C 7C 84 02 14 */ add r4, r4, r0 -/* 80371020 80 04 00 08 */ lwz r0, 8(r4) -/* 80371024 2C 00 00 00 */ cmpwi r0, 0 -/* 80371028 41 82 00 28 */ beq lbl_80371050 -lbl_8037102C: -/* 8037102C 2C 1A 00 01 */ cmpwi r26, 1 -/* 80371030 40 82 00 28 */ bne lbl_80371058 -/* 80371034 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80371038 54 A0 20 36 */ slwi r0, r5, 4 -/* 8037103C 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80371040 7C 84 02 14 */ add r4, r4, r0 -/* 80371044 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80371048 2C 00 00 00 */ cmpwi r0, 0 -/* 8037104C 40 82 00 0C */ bne lbl_80371058 -lbl_80371050: -/* 80371050 38 C0 07 00 */ li r6, 0x700 -/* 80371054 48 00 00 60 */ b lbl_803710B4 -lbl_80371058: -/* 80371058 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 8037105C 54 BC 20 36 */ slwi r28, r5, 4 -/* 80371060 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80371064 38 C0 00 00 */ li r6, 0 -/* 80371068 7C 04 E0 2E */ lwzx r0, r4, r28 -/* 8037106C 7C 03 00 40 */ cmplw r3, r0 -/* 80371070 40 80 00 14 */ bge lbl_80371084 -/* 80371074 7F 45 D3 78 */ mr r5, r26 -/* 80371078 7C 83 00 50 */ subf r4, r3, r0 -/* 8037107C 4B FF FE A5 */ bl TRKValidMemory32 -/* 80371080 7C 66 1B 78 */ mr r6, r3 -lbl_80371084: -/* 80371084 2C 06 00 00 */ cmpwi r6, 0 -/* 80371088 40 82 00 2C */ bne lbl_803710B4 -/* 8037108C 3C 60 80 3A */ lis r3, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80371090 38 03 2B 60 */ addi r0, r3, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80371094 7C 60 E2 14 */ add r3, r0, r28 -/* 80371098 80 63 00 04 */ lwz r3, 4(r3) -/* 8037109C 7C 1E 18 40 */ cmplw r30, r3 -/* 803710A0 40 81 00 14 */ ble lbl_803710B4 -/* 803710A4 7F 45 D3 78 */ mr r5, r26 -/* 803710A8 7C 83 F0 50 */ subf r4, r3, r30 -/* 803710AC 4B FF FE 75 */ bl TRKValidMemory32 -/* 803710B0 7C 66 1B 78 */ mr r6, r3 -lbl_803710B4: -/* 803710B4 7C C5 33 78 */ mr r5, r6 -lbl_803710B8: -/* 803710B8 2C 05 00 00 */ cmpwi r5, 0 -/* 803710BC 40 82 00 F0 */ bne lbl_803711AC -/* 803710C0 3C 60 80 3A */ lis r3, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 803710C4 38 83 2B 60 */ addi r4, r3, gTRKMemMap@l /* 0x803A2B60@l */ -/* 803710C8 3B 84 00 04 */ addi r28, r4, 4 -/* 803710CC 7C 7C E8 2E */ lwzx r3, r28, r29 -/* 803710D0 7C 1B 18 40 */ cmplw r27, r3 -/* 803710D4 40 81 00 D8 */ ble lbl_803711AC -/* 803710D8 7C 03 D8 50 */ subf r0, r3, r27 -/* 803710DC 38 C0 07 00 */ li r6, 0x700 -/* 803710E0 7F C0 1A 14 */ add r30, r0, r3 -/* 803710E4 3B DE FF FF */ addi r30, r30, -1 -/* 803710E8 7C 1E 18 40 */ cmplw r30, r3 -/* 803710EC 40 80 00 08 */ bge lbl_803710F4 -/* 803710F0 48 00 00 B8 */ b lbl_803711A8 -lbl_803710F4: -/* 803710F4 80 1F 00 04 */ lwz r0, 4(r31) -/* 803710F8 38 A0 00 00 */ li r5, 0 -/* 803710FC 7C 03 00 40 */ cmplw r3, r0 -/* 80371100 41 81 00 A8 */ bgt lbl_803711A8 -/* 80371104 80 1F 00 00 */ lwz r0, 0(r31) -/* 80371108 7C 1E 00 40 */ cmplw r30, r0 -/* 8037110C 41 80 00 9C */ blt lbl_803711A8 -/* 80371110 2C 1A 00 00 */ cmpwi r26, 0 -/* 80371114 40 82 00 18 */ bne lbl_8037112C -/* 80371118 54 A0 20 36 */ slwi r0, r5, 4 -/* 8037111C 7C 84 02 14 */ add r4, r4, r0 -/* 80371120 80 04 00 08 */ lwz r0, 8(r4) -/* 80371124 2C 00 00 00 */ cmpwi r0, 0 -/* 80371128 41 82 00 28 */ beq lbl_80371150 -lbl_8037112C: -/* 8037112C 2C 1A 00 01 */ cmpwi r26, 1 -/* 80371130 40 82 00 28 */ bne lbl_80371158 -/* 80371134 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 80371138 54 A0 20 36 */ slwi r0, r5, 4 -/* 8037113C 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80371140 7C 84 02 14 */ add r4, r4, r0 -/* 80371144 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80371148 2C 00 00 00 */ cmpwi r0, 0 -/* 8037114C 40 82 00 0C */ bne lbl_80371158 -lbl_80371150: -/* 80371150 38 C0 07 00 */ li r6, 0x700 -/* 80371154 48 00 00 54 */ b lbl_803711A8 -lbl_80371158: -/* 80371158 3C 80 80 3A */ lis r4, gTRKMemMap@ha /* 0x803A2B60@ha */ -/* 8037115C 54 BB 20 36 */ slwi r27, r5, 4 -/* 80371160 38 84 2B 60 */ addi r4, r4, gTRKMemMap@l /* 0x803A2B60@l */ -/* 80371164 38 C0 00 00 */ li r6, 0 -/* 80371168 7C 04 D8 2E */ lwzx r0, r4, r27 -/* 8037116C 7C 03 00 40 */ cmplw r3, r0 -/* 80371170 40 80 00 14 */ bge lbl_80371184 -/* 80371174 7F 45 D3 78 */ mr r5, r26 -/* 80371178 7C 83 00 50 */ subf r4, r3, r0 -/* 8037117C 4B FF FD A5 */ bl TRKValidMemory32 -/* 80371180 7C 66 1B 78 */ mr r6, r3 -lbl_80371184: -/* 80371184 2C 06 00 00 */ cmpwi r6, 0 -/* 80371188 40 82 00 20 */ bne lbl_803711A8 -/* 8037118C 7C 7C D8 2E */ lwzx r3, r28, r27 -/* 80371190 7C 1E 18 40 */ cmplw r30, r3 -/* 80371194 40 81 00 14 */ ble lbl_803711A8 -/* 80371198 7F 45 D3 78 */ mr r5, r26 -/* 8037119C 7C 83 F0 50 */ subf r4, r3, r30 -/* 803711A0 4B FF FD 81 */ bl TRKValidMemory32 -/* 803711A4 7C 66 1B 78 */ mr r6, r3 -lbl_803711A8: -/* 803711A8 7C C5 33 78 */ mr r5, r6 -lbl_803711AC: -/* 803711AC 7C A3 2B 78 */ mr r3, r5 -lbl_803711B0: -/* 803711B0 BB 41 00 08 */ lmw r26, 8(r1) -/* 803711B4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803711B8 7C 08 03 A6 */ mtlr r0 -/* 803711BC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803711C0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRK_ppc_memcpy.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRK_ppc_memcpy.s deleted file mode 100644 index 3436e3862a..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRK_ppc_memcpy.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8036F648: -/* 8036F648 7D 00 00 A6 */ mfmsr r8 -/* 8036F64C 39 40 00 00 */ li r10, 0 -lbl_8036F650: -/* 8036F650 7C 0A 28 00 */ cmpw r10, r5 -/* 8036F654 41 82 00 24 */ beq lbl_8036F678 -/* 8036F658 7C E0 01 24 */ mtmsr r7 -/* 8036F65C 7C 00 04 AC */ sync -/* 8036F660 7D 2A 20 AE */ lbzx r9, r10, r4 -/* 8036F664 7C C0 01 24 */ mtmsr r6 -/* 8036F668 7C 00 04 AC */ sync -/* 8036F66C 7D 2A 19 AE */ stbx r9, r10, r3 -/* 8036F670 39 4A 00 01 */ addi r10, r10, 1 -/* 8036F674 4B FF FF DC */ b lbl_8036F650 -lbl_8036F678: -/* 8036F678 7D 00 01 24 */ mtmsr r8 -/* 8036F67C 7C 00 04 AC */ sync -/* 8036F680 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/WriteFPSCR.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/WriteFPSCR.s deleted file mode 100644 index 1e0b084249..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/WriteFPSCR.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8036F9F0: -/* 8036F9F0 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8036F9F4 DB E1 00 10 */ stfd f31, 0x10(r1) -/* 8036F9F8 F3 E1 00 20 */ psq_st f31, 32(r1), 0, 0 /* qr0 */ -/* 8036F9FC CB E3 00 00 */ lfd f31, 0(r3) -/* 8036FA00 FD FE FD 8E */ mtfsf 0xff, f31 -/* 8036FA04 E3 E1 00 20 */ psq_l f31, 32(r1), 0, 0 /* qr0 */ -/* 8036FA08 CB E1 00 10 */ lfd f31, 0x10(r1) -/* 8036FA0C 38 21 00 40 */ addi r1, r1, 0x40 -/* 8036FA10 4E 80 00 20 */ blr diff --git a/asm/dolphin/ar/ar/__ARChecksize.s b/asm/dolphin/ar/ar/__ARChecksize.s deleted file mode 100644 index 58d0250897..0000000000 --- a/asm/dolphin/ar/ar/__ARChecksize.s +++ /dev/null @@ -1,1575 +0,0 @@ -lbl_803508A0: -/* 803508A0 7C 08 02 A6 */ mflr r0 -/* 803508A4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 803508A8 90 01 00 04 */ stw r0, 4(r1) -/* 803508AC 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 803508B0 94 21 FD 40 */ stwu r1, -0x2c0(r1) -/* 803508B4 BD C1 02 78 */ stmw r14, 0x278(r1) -lbl_803508B8: -/* 803508B8 A0 03 00 16 */ lhz r0, 0x16(r3) -/* 803508BC 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803508C0 41 82 FF F8 */ beq lbl_803508B8 -/* 803508C4 3E E0 CC 00 */ lis r23, 0xCC00 /* 0xCC005000@ha */ -/* 803508C8 38 17 50 00 */ addi r0, r23, 0x5000 /* 0xCC005000@l */ -/* 803508CC 90 01 02 48 */ stw r0, 0x248(r1) -/* 803508D0 3C 60 01 00 */ lis r3, 0x0100 /* 0x01000000@ha */ -/* 803508D4 38 01 01 F3 */ addi r0, r1, 0x1f3 -/* 803508D8 90 6D 93 40 */ stw r3, __AR_InternalSize(r13) -/* 803508DC 3C A0 DE AE */ lis r5, 0xDEAE /* 0xDEADBEEF@ha */ -/* 803508E0 80 81 02 48 */ lwz r4, 0x248(r1) -/* 803508E4 54 16 00 34 */ rlwinm r22, r0, 0, 0, 0x1a -/* 803508E8 38 01 01 B3 */ addi r0, r1, 0x1b3 -/* 803508EC A0 84 00 12 */ lhz r4, 0x12(r4) -/* 803508F0 38 E1 00 B3 */ addi r7, r1, 0xb3 -/* 803508F4 54 E7 00 34 */ rlwinm r7, r7, 0, 0, 0x1a -/* 803508F8 54 84 00 32 */ rlwinm r4, r4, 0, 0, 0x19 -/* 803508FC 90 E1 02 1C */ stw r7, 0x21c(r1) -/* 80350900 60 86 00 23 */ ori r6, r4, 0x23 -/* 80350904 80 81 02 48 */ lwz r4, 0x248(r1) -/* 80350908 39 41 01 73 */ addi r10, r1, 0x173 -/* 8035090C B0 C4 00 12 */ sth r6, 0x12(r4) -/* 80350910 38 A5 BE EF */ addi r5, r5, 0xBEEF /* 0xDEADBEEF@l */ -/* 80350914 3C 80 BA D1 */ lis r4, 0xBAD1 /* 0xBAD0BAD0@ha */ -/* 80350918 54 15 00 34 */ rlwinm r21, r0, 0, 0, 0x1a -/* 8035091C 90 B6 00 00 */ stw r5, 0(r22) -/* 80350920 38 04 BA D0 */ addi r0, r4, 0xBAD0 /* 0xBAD0BAD0@l */ -/* 80350924 90 15 00 00 */ stw r0, 0(r21) -/* 80350928 38 81 00 33 */ addi r4, r1, 0x33 -/* 8035092C 38 C1 00 73 */ addi r6, r1, 0x73 -/* 80350930 90 B6 00 04 */ stw r5, 4(r22) -/* 80350934 54 84 00 34 */ rlwinm r4, r4, 0, 0, 0x1a -/* 80350938 54 C6 00 34 */ rlwinm r6, r6, 0, 0, 0x1a -/* 8035093C 90 15 00 04 */ stw r0, 4(r21) -/* 80350940 39 21 01 33 */ addi r9, r1, 0x133 -/* 80350944 39 01 00 F3 */ addi r8, r1, 0xf3 -/* 80350948 90 B6 00 08 */ stw r5, 8(r22) -/* 8035094C 3A 63 00 00 */ addi r19, r3, 0x0000 /* 0x01000000@l */ -/* 80350950 38 76 00 00 */ addi r3, r22, 0 -/* 80350954 90 15 00 08 */ stw r0, 8(r21) -/* 80350958 55 58 00 34 */ rlwinm r24, r10, 0, 0, 0x1a -/* 8035095C 55 3C 00 34 */ rlwinm r28, r9, 0, 0, 0x1a -/* 80350960 90 B6 00 0C */ stw r5, 0xc(r22) -/* 80350964 55 14 00 34 */ rlwinm r20, r8, 0, 0, 0x1a -/* 80350968 90 15 00 0C */ stw r0, 0xc(r21) -/* 8035096C 90 B6 00 10 */ stw r5, 0x10(r22) -/* 80350970 90 15 00 10 */ stw r0, 0x10(r21) -/* 80350974 90 B6 00 14 */ stw r5, 0x14(r22) -/* 80350978 90 15 00 14 */ stw r0, 0x14(r21) -/* 8035097C 90 B6 00 18 */ stw r5, 0x18(r22) -/* 80350980 90 15 00 18 */ stw r0, 0x18(r21) -/* 80350984 90 B6 00 1C */ stw r5, 0x1c(r22) -/* 80350988 80 A1 02 48 */ lwz r5, 0x248(r1) -/* 8035098C 90 81 02 14 */ stw r4, 0x214(r1) -/* 80350990 38 80 00 03 */ li r4, 3 -/* 80350994 38 A5 00 12 */ addi r5, r5, 0x12 -/* 80350998 B0 81 02 70 */ sth r4, 0x270(r1) -/* 8035099C 38 80 00 20 */ li r4, 0x20 -/* 803509A0 90 C1 02 18 */ stw r6, 0x218(r1) -/* 803509A4 90 15 00 1C */ stw r0, 0x1c(r21) -/* 803509A8 90 A1 02 48 */ stw r5, 0x248(r1) -/* 803509AC 4B FE AC 01 */ bl DCFlushRange -/* 803509B0 38 75 00 00 */ addi r3, r21, 0 -/* 803509B4 38 80 00 20 */ li r4, 0x20 -/* 803509B8 4B FE AB F5 */ bl DCFlushRange -/* 803509BC 38 00 00 00 */ li r0, 0 -/* 803509C0 90 0D 93 44 */ stw r0, __AR_ExpansionSize(r13) -/* 803509C4 38 7C 00 00 */ addi r3, r28, 0 -/* 803509C8 38 80 00 20 */ li r4, 0x20 -/* 803509CC 4B FE AB B5 */ bl DCInvalidateRange -/* 803509D0 57 83 84 3E */ srwi r3, r28, 0x10 -/* 803509D4 A0 17 50 20 */ lhz r0, 0x5020(r23) -/* 803509D8 90 61 02 3C */ stw r3, 0x23c(r1) -/* 803509DC 3B 37 50 00 */ addi r25, r23, 0x5000 -/* 803509E0 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803509E4 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 803509E8 3B 57 50 00 */ addi r26, r23, 0x5000 -/* 803509EC 56 71 84 3E */ srwi r17, r19, 0x10 -/* 803509F0 7C 60 03 78 */ or r0, r3, r0 -/* 803509F4 B4 19 00 20 */ sthu r0, 0x20(r25) -/* 803509F8 57 83 04 3E */ clrlwi r3, r28, 0x10 -/* 803509FC 3B 77 50 00 */ addi r27, r23, 0x5000 -/* 80350A00 A0 17 50 22 */ lhz r0, 0x5022(r23) -/* 80350A04 56 72 04 3E */ clrlwi r18, r19, 0x10 -/* 80350A08 90 61 02 4C */ stw r3, 0x24c(r1) -/* 80350A0C 3B 97 50 00 */ addi r28, r23, 0x5000 -/* 80350A10 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350A14 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 80350A18 3B D7 50 00 */ addi r30, r23, 0x5000 -/* 80350A1C 3B B7 50 00 */ addi r29, r23, 0x5000 -/* 80350A20 7C 60 03 78 */ or r0, r3, r0 -/* 80350A24 B4 1A 00 22 */ sthu r0, 0x22(r26) -/* 80350A28 A0 17 50 24 */ lhz r0, 0x5024(r23) -/* 80350A2C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350A30 7C 00 8B 78 */ or r0, r0, r17 -/* 80350A34 B4 1B 00 24 */ sthu r0, 0x24(r27) -/* 80350A38 A0 17 50 26 */ lhz r0, 0x5026(r23) -/* 80350A3C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350A40 7C 00 93 78 */ or r0, r0, r18 -/* 80350A44 B4 1C 00 26 */ sthu r0, 0x26(r28) -/* 80350A48 A0 17 50 28 */ lhz r0, 0x5028(r23) -/* 80350A4C 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350A50 B0 17 50 28 */ sth r0, 0x5028(r23) -/* 80350A54 A0 17 50 28 */ lhz r0, 0x5028(r23) -/* 80350A58 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350A5C 60 00 00 00 */ nop -/* 80350A60 B4 1E 00 28 */ sthu r0, 0x28(r30) -/* 80350A64 A0 17 50 2A */ lhz r0, 0x502a(r23) -/* 80350A68 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350A6C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350A70 B4 1D 00 2A */ sthu r0, 0x2a(r29) -lbl_80350A74: -/* 80350A74 3B F7 50 00 */ addi r31, r23, 0x5000 -/* 80350A78 A4 1F 00 0A */ lhzu r0, 0xa(r31) -/* 80350A7C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350A80 40 82 FF F4 */ bne lbl_80350A74 -/* 80350A84 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350A88 38 00 FF 77 */ li r0, -137 -/* 80350A8C 7C 60 00 38 */ and r0, r3, r0 -/* 80350A90 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350A94 B0 1F 00 00 */ sth r0, 0(r31) -/* 80350A98 4B FE 92 61 */ bl PPCSync -/* 80350A9C 56 C0 84 3E */ srwi r0, r22, 0x10 -/* 80350AA0 A0 79 00 00 */ lhz r3, 0(r25) -/* 80350AA4 90 01 02 44 */ stw r0, 0x244(r1) -/* 80350AA8 54 63 00 2A */ rlwinm r3, r3, 0, 0, 0x15 -/* 80350AAC 80 01 02 44 */ lwz r0, 0x244(r1) -/* 80350AB0 7C 60 03 78 */ or r0, r3, r0 -/* 80350AB4 B0 19 00 00 */ sth r0, 0(r25) -/* 80350AB8 56 C0 04 3E */ clrlwi r0, r22, 0x10 -/* 80350ABC 90 01 02 50 */ stw r0, 0x250(r1) -/* 80350AC0 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350AC4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350AC8 80 01 02 50 */ lwz r0, 0x250(r1) -/* 80350ACC 7C 60 03 78 */ or r0, r3, r0 -/* 80350AD0 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350AD4 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350AD8 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350ADC 7C 00 8B 78 */ or r0, r0, r17 -/* 80350AE0 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350AE4 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350AE8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350AEC 7C 00 93 78 */ or r0, r0, r18 -/* 80350AF0 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350AF4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350AF8 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80350AFC B0 1E 00 00 */ sth r0, 0(r30) -/* 80350B00 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350B04 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350B08 60 00 00 00 */ nop -/* 80350B0C B0 1E 00 00 */ sth r0, 0(r30) -/* 80350B10 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350B14 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350B18 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350B1C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350B20: -/* 80350B20 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350B24 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350B28 40 82 FF F8 */ bne lbl_80350B20 -/* 80350B2C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350B30 38 80 FF 77 */ li r4, -137 -/* 80350B34 38 78 00 00 */ addi r3, r24, 0 -/* 80350B38 7C 00 20 38 */ and r0, r0, r4 -/* 80350B3C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350B40 B0 1F 00 00 */ sth r0, 0(r31) -/* 80350B44 38 80 00 00 */ li r4, 0 -/* 80350B48 38 A0 00 20 */ li r5, 0x20 -/* 80350B4C 4B CB 29 0D */ bl memset -/* 80350B50 38 78 00 00 */ addi r3, r24, 0 -/* 80350B54 38 80 00 20 */ li r4, 0x20 -/* 80350B58 4B FE AA 55 */ bl DCFlushRange -/* 80350B5C 57 00 84 3E */ srwi r0, r24, 0x10 -/* 80350B60 A0 79 00 00 */ lhz r3, 0(r25) -/* 80350B64 90 01 02 40 */ stw r0, 0x240(r1) -/* 80350B68 54 63 00 2A */ rlwinm r3, r3, 0, 0, 0x15 -/* 80350B6C 80 01 02 40 */ lwz r0, 0x240(r1) -/* 80350B70 7C 60 03 78 */ or r0, r3, r0 -/* 80350B74 B0 19 00 00 */ sth r0, 0(r25) -/* 80350B78 57 00 04 3E */ clrlwi r0, r24, 0x10 -/* 80350B7C 90 01 02 54 */ stw r0, 0x254(r1) -/* 80350B80 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350B84 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350B88 80 01 02 54 */ lwz r0, 0x254(r1) -/* 80350B8C 7C 60 03 78 */ or r0, r3, r0 -/* 80350B90 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350B94 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350B98 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350B9C 7C 00 8B 78 */ or r0, r0, r17 -/* 80350BA0 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350BA4 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350BA8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350BAC 7C 00 93 78 */ or r0, r0, r18 -/* 80350BB0 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350BB4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350BB8 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350BBC B0 1E 00 00 */ sth r0, 0(r30) -/* 80350BC0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350BC4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350BC8 60 00 00 00 */ nop -/* 80350BCC B0 1E 00 00 */ sth r0, 0(r30) -/* 80350BD0 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350BD4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350BD8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350BDC B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350BE0: -/* 80350BE0 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350BE4 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350BE8 40 82 FF F8 */ bne lbl_80350BE0 -/* 80350BEC A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350BF0 38 00 FF 77 */ li r0, -137 -/* 80350BF4 7C 60 00 38 */ and r0, r3, r0 -/* 80350BF8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350BFC B0 1F 00 00 */ sth r0, 0(r31) -/* 80350C00 4B FE 90 F9 */ bl PPCSync -/* 80350C04 80 78 00 00 */ lwz r3, 0(r24) -/* 80350C08 80 16 00 00 */ lwz r0, 0(r22) -/* 80350C0C 7C 03 00 40 */ cmplw r3, r0 -/* 80350C10 40 82 14 64 */ bne lbl_80352074 -/* 80350C14 38 74 00 00 */ addi r3, r20, 0 -/* 80350C18 38 80 00 20 */ li r4, 0x20 -/* 80350C1C 4B FE A9 65 */ bl DCInvalidateRange -/* 80350C20 56 80 84 3E */ srwi r0, r20, 0x10 -/* 80350C24 A0 99 00 00 */ lhz r4, 0(r25) -/* 80350C28 90 01 02 34 */ stw r0, 0x234(r1) -/* 80350C2C 3C 73 00 20 */ addis r3, r19, 0x20 -/* 80350C30 54 84 00 2A */ rlwinm r4, r4, 0, 0, 0x15 -/* 80350C34 80 01 02 34 */ lwz r0, 0x234(r1) -/* 80350C38 54 70 84 3E */ srwi r16, r3, 0x10 -/* 80350C3C 54 77 04 3E */ clrlwi r23, r3, 0x10 -/* 80350C40 7C 80 03 78 */ or r0, r4, r0 -/* 80350C44 B0 19 00 00 */ sth r0, 0(r25) -/* 80350C48 56 80 04 3E */ clrlwi r0, r20, 0x10 -/* 80350C4C 90 01 02 58 */ stw r0, 0x258(r1) -/* 80350C50 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350C54 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350C58 80 01 02 58 */ lwz r0, 0x258(r1) -/* 80350C5C 7C 60 03 78 */ or r0, r3, r0 -/* 80350C60 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350C64 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350C68 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350C6C 7C 00 83 78 */ or r0, r0, r16 -/* 80350C70 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350C74 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350C78 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350C7C 7C 00 BB 78 */ or r0, r0, r23 -/* 80350C80 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350C84 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350C88 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350C8C B0 1E 00 00 */ sth r0, 0(r30) -/* 80350C90 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350C94 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350C98 60 00 00 00 */ nop -/* 80350C9C B0 1E 00 00 */ sth r0, 0(r30) -/* 80350CA0 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350CA4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350CA8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350CAC B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350CB0: -/* 80350CB0 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350CB4 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350CB8 40 82 FF F8 */ bne lbl_80350CB0 -/* 80350CBC A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350CC0 38 00 FF 77 */ li r0, -137 -/* 80350CC4 7C 60 00 38 */ and r0, r3, r0 -/* 80350CC8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350CCC B0 1F 00 00 */ sth r0, 0(r31) -/* 80350CD0 4B FE 90 29 */ bl PPCSync -/* 80350CD4 80 61 02 1C */ lwz r3, 0x21c(r1) -/* 80350CD8 38 80 00 20 */ li r4, 0x20 -/* 80350CDC 4B FE A8 A5 */ bl DCInvalidateRange -/* 80350CE0 80 01 02 1C */ lwz r0, 0x21c(r1) -/* 80350CE4 3C 73 01 00 */ addis r3, r19, 0x100 -/* 80350CE8 A0 99 00 00 */ lhz r4, 0(r25) -/* 80350CEC 54 6E 84 3E */ srwi r14, r3, 0x10 -/* 80350CF0 54 00 84 3E */ srwi r0, r0, 0x10 -/* 80350CF4 90 01 02 2C */ stw r0, 0x22c(r1) -/* 80350CF8 54 84 00 2A */ rlwinm r4, r4, 0, 0, 0x15 -/* 80350CFC 54 6F 04 3E */ clrlwi r15, r3, 0x10 -/* 80350D00 80 01 02 2C */ lwz r0, 0x22c(r1) -/* 80350D04 7C 80 03 78 */ or r0, r4, r0 -/* 80350D08 B0 19 00 00 */ sth r0, 0(r25) -/* 80350D0C 80 01 02 1C */ lwz r0, 0x21c(r1) -/* 80350D10 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80350D14 90 01 02 5C */ stw r0, 0x25c(r1) -/* 80350D18 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350D1C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350D20 80 01 02 5C */ lwz r0, 0x25c(r1) -/* 80350D24 7C 60 03 78 */ or r0, r3, r0 -/* 80350D28 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350D2C A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350D30 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350D34 7C 00 73 78 */ or r0, r0, r14 -/* 80350D38 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350D3C A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350D40 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350D44 7C 00 7B 78 */ or r0, r0, r15 -/* 80350D48 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350D4C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350D50 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350D54 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350D58 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350D5C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350D60 60 00 00 00 */ nop -/* 80350D64 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350D68 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350D6C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350D70 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350D74 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350D78: -/* 80350D78 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350D7C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350D80 40 82 FF F8 */ bne lbl_80350D78 -/* 80350D84 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350D88 38 00 FF 77 */ li r0, -137 -/* 80350D8C 7C 60 00 38 */ and r0, r3, r0 -/* 80350D90 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350D94 B0 1F 00 00 */ sth r0, 0(r31) -/* 80350D98 4B FE 8F 61 */ bl PPCSync -/* 80350D9C 80 61 02 18 */ lwz r3, 0x218(r1) -/* 80350DA0 38 80 00 20 */ li r4, 0x20 -/* 80350DA4 4B FE A7 DD */ bl DCInvalidateRange -/* 80350DA8 80 01 02 18 */ lwz r0, 0x218(r1) -/* 80350DAC 38 73 02 00 */ addi r3, r19, 0x200 -/* 80350DB0 A0 99 00 00 */ lhz r4, 0(r25) -/* 80350DB4 54 00 84 3E */ srwi r0, r0, 0x10 -/* 80350DB8 90 01 02 24 */ stw r0, 0x224(r1) -/* 80350DBC 54 84 00 2A */ rlwinm r4, r4, 0, 0, 0x15 -/* 80350DC0 80 01 02 24 */ lwz r0, 0x224(r1) -/* 80350DC4 7C 80 03 78 */ or r0, r4, r0 -/* 80350DC8 B0 19 00 00 */ sth r0, 0(r25) -/* 80350DCC 54 60 84 3E */ srwi r0, r3, 0x10 -/* 80350DD0 54 63 04 3E */ clrlwi r3, r3, 0x10 -/* 80350DD4 90 01 02 30 */ stw r0, 0x230(r1) -/* 80350DD8 80 01 02 18 */ lwz r0, 0x218(r1) -/* 80350DDC 90 61 02 64 */ stw r3, 0x264(r1) -/* 80350DE0 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80350DE4 90 01 02 60 */ stw r0, 0x260(r1) -/* 80350DE8 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350DEC 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350DF0 80 01 02 60 */ lwz r0, 0x260(r1) -/* 80350DF4 7C 60 03 78 */ or r0, r3, r0 -/* 80350DF8 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350DFC A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350E00 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80350E04 80 01 02 30 */ lwz r0, 0x230(r1) -/* 80350E08 7C 60 03 78 */ or r0, r3, r0 -/* 80350E0C B0 1B 00 00 */ sth r0, 0(r27) -/* 80350E10 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350E14 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350E18 80 01 02 64 */ lwz r0, 0x264(r1) -/* 80350E1C 7C 60 03 78 */ or r0, r3, r0 -/* 80350E20 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350E24 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350E28 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350E2C B0 1E 00 00 */ sth r0, 0(r30) -/* 80350E30 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350E34 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350E38 60 00 00 00 */ nop -/* 80350E3C B0 1E 00 00 */ sth r0, 0(r30) -/* 80350E40 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350E44 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350E48 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350E4C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350E50: -/* 80350E50 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350E54 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350E58 40 82 FF F8 */ bne lbl_80350E50 -/* 80350E5C A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350E60 38 00 FF 77 */ li r0, -137 -/* 80350E64 7C 60 00 38 */ and r0, r3, r0 -/* 80350E68 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350E6C B0 1F 00 00 */ sth r0, 0(r31) -/* 80350E70 4B FE 8E 89 */ bl PPCSync -/* 80350E74 80 61 02 14 */ lwz r3, 0x214(r1) -/* 80350E78 38 80 00 20 */ li r4, 0x20 -/* 80350E7C 4B FE A7 05 */ bl DCInvalidateRange -/* 80350E80 80 01 02 14 */ lwz r0, 0x214(r1) -/* 80350E84 3C 73 00 40 */ addis r3, r19, 0x40 -/* 80350E88 A0 99 00 00 */ lhz r4, 0(r25) -/* 80350E8C 54 00 84 3E */ srwi r0, r0, 0x10 -/* 80350E90 90 01 02 20 */ stw r0, 0x220(r1) -/* 80350E94 54 84 00 2A */ rlwinm r4, r4, 0, 0, 0x15 -/* 80350E98 80 01 02 20 */ lwz r0, 0x220(r1) -/* 80350E9C 7C 80 03 78 */ or r0, r4, r0 -/* 80350EA0 B0 19 00 00 */ sth r0, 0(r25) -/* 80350EA4 54 60 84 3E */ srwi r0, r3, 0x10 -/* 80350EA8 54 63 04 3E */ clrlwi r3, r3, 0x10 -/* 80350EAC 90 01 02 28 */ stw r0, 0x228(r1) -/* 80350EB0 80 01 02 14 */ lwz r0, 0x214(r1) -/* 80350EB4 90 61 02 6C */ stw r3, 0x26c(r1) -/* 80350EB8 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80350EBC 90 01 02 68 */ stw r0, 0x268(r1) -/* 80350EC0 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350EC4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350EC8 80 01 02 68 */ lwz r0, 0x268(r1) -/* 80350ECC 7C 60 03 78 */ or r0, r3, r0 -/* 80350ED0 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350ED4 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350ED8 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80350EDC 80 01 02 28 */ lwz r0, 0x228(r1) -/* 80350EE0 7C 60 03 78 */ or r0, r3, r0 -/* 80350EE4 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350EE8 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350EEC 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80350EF0 80 01 02 6C */ lwz r0, 0x26c(r1) -/* 80350EF4 7C 60 03 78 */ or r0, r3, r0 -/* 80350EF8 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350EFC A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350F00 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80350F04 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350F08 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350F0C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350F10 60 00 00 00 */ nop -/* 80350F14 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350F18 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350F1C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350F20 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350F24 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350F28: -/* 80350F28 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350F2C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350F30 40 82 FF F8 */ bne lbl_80350F28 -/* 80350F34 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350F38 38 00 FF 77 */ li r0, -137 -/* 80350F3C 7C 60 00 38 */ and r0, r3, r0 -/* 80350F40 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350F44 B0 1F 00 00 */ sth r0, 0(r31) -/* 80350F48 4B FE 8D B1 */ bl PPCSync -/* 80350F4C 56 A0 84 3E */ srwi r0, r21, 0x10 -/* 80350F50 A0 79 00 00 */ lhz r3, 0(r25) -/* 80350F54 90 01 02 38 */ stw r0, 0x238(r1) -/* 80350F58 56 B4 04 3E */ clrlwi r20, r21, 0x10 -/* 80350F5C 54 63 00 2A */ rlwinm r3, r3, 0, 0, 0x15 -/* 80350F60 80 01 02 38 */ lwz r0, 0x238(r1) -/* 80350F64 7C 60 03 78 */ or r0, r3, r0 -/* 80350F68 B0 19 00 00 */ sth r0, 0(r25) -/* 80350F6C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80350F70 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350F74 7C 00 A3 78 */ or r0, r0, r20 -/* 80350F78 B0 1A 00 00 */ sth r0, 0(r26) -/* 80350F7C A0 1B 00 00 */ lhz r0, 0(r27) -/* 80350F80 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350F84 7C 00 83 78 */ or r0, r0, r16 -/* 80350F88 B0 1B 00 00 */ sth r0, 0(r27) -/* 80350F8C A0 1C 00 00 */ lhz r0, 0(r28) -/* 80350F90 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350F94 7C 00 BB 78 */ or r0, r0, r23 -/* 80350F98 B0 1C 00 00 */ sth r0, 0(r28) -/* 80350F9C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350FA0 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80350FA4 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350FA8 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80350FAC 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80350FB0 60 00 00 00 */ nop -/* 80350FB4 B0 1E 00 00 */ sth r0, 0(r30) -/* 80350FB8 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80350FBC 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80350FC0 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350FC4 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80350FC8: -/* 80350FC8 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80350FCC 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80350FD0 40 82 FF F8 */ bne lbl_80350FC8 -/* 80350FD4 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80350FD8 38 00 FF 77 */ li r0, -137 -/* 80350FDC 7C 60 00 38 */ and r0, r3, r0 -/* 80350FE0 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350FE4 B0 1F 00 00 */ sth r0, 0(r31) -/* 80350FE8 A0 19 00 00 */ lhz r0, 0(r25) -/* 80350FEC 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80350FF0 80 01 02 44 */ lwz r0, 0x244(r1) -/* 80350FF4 7C 60 03 78 */ or r0, r3, r0 -/* 80350FF8 B0 19 00 00 */ sth r0, 0(r25) -/* 80350FFC A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351000 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351004 80 01 02 50 */ lwz r0, 0x250(r1) -/* 80351008 7C 60 03 78 */ or r0, r3, r0 -/* 8035100C B0 1A 00 00 */ sth r0, 0(r26) -/* 80351010 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351014 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351018 7C 00 8B 78 */ or r0, r0, r17 -/* 8035101C B0 1B 00 00 */ sth r0, 0(r27) -/* 80351020 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351024 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351028 7C 00 93 78 */ or r0, r0, r18 -/* 8035102C B0 1C 00 00 */ sth r0, 0(r28) -/* 80351030 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351034 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351038 B0 1E 00 00 */ sth r0, 0(r30) -/* 8035103C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351040 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351044 60 00 00 00 */ nop -/* 80351048 B0 1E 00 00 */ sth r0, 0(r30) -/* 8035104C A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351050 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351054 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351058 B0 1D 00 00 */ sth r0, 0(r29) -lbl_8035105C: -/* 8035105C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351060 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351064 40 82 FF F8 */ bne lbl_8035105C -/* 80351068 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8035106C 38 80 FF 77 */ li r4, -137 -/* 80351070 38 78 00 00 */ addi r3, r24, 0 -/* 80351074 7C 00 20 38 */ and r0, r0, r4 -/* 80351078 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035107C B0 1F 00 00 */ sth r0, 0(r31) -/* 80351080 38 80 00 00 */ li r4, 0 -/* 80351084 38 A0 00 20 */ li r5, 0x20 -/* 80351088 4B CB 23 D1 */ bl memset -/* 8035108C 38 78 00 00 */ addi r3, r24, 0 -/* 80351090 38 80 00 20 */ li r4, 0x20 -/* 80351094 4B FE A5 19 */ bl DCFlushRange -/* 80351098 A0 19 00 00 */ lhz r0, 0(r25) -/* 8035109C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803510A0 80 01 02 40 */ lwz r0, 0x240(r1) -/* 803510A4 7C 60 03 78 */ or r0, r3, r0 -/* 803510A8 B0 19 00 00 */ sth r0, 0(r25) -/* 803510AC A0 1A 00 00 */ lhz r0, 0(r26) -/* 803510B0 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 803510B4 80 01 02 54 */ lwz r0, 0x254(r1) -/* 803510B8 7C 60 03 78 */ or r0, r3, r0 -/* 803510BC B0 1A 00 00 */ sth r0, 0(r26) -/* 803510C0 A0 1B 00 00 */ lhz r0, 0(r27) -/* 803510C4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803510C8 7C 00 83 78 */ or r0, r0, r16 -/* 803510CC B0 1B 00 00 */ sth r0, 0(r27) -/* 803510D0 A0 1C 00 00 */ lhz r0, 0(r28) -/* 803510D4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803510D8 7C 00 BB 78 */ or r0, r0, r23 -/* 803510DC B0 1C 00 00 */ sth r0, 0(r28) -/* 803510E0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803510E4 60 00 80 00 */ ori r0, r0, 0x8000 -/* 803510E8 B0 1E 00 00 */ sth r0, 0(r30) -/* 803510EC A0 1E 00 00 */ lhz r0, 0(r30) -/* 803510F0 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803510F4 60 00 00 00 */ nop -/* 803510F8 B0 1E 00 00 */ sth r0, 0(r30) -/* 803510FC A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351100 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351104 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351108 B0 1D 00 00 */ sth r0, 0(r29) -lbl_8035110C: -/* 8035110C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351110 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351114 40 82 FF F8 */ bne lbl_8035110C -/* 80351118 A0 7F 00 00 */ lhz r3, 0(r31) -/* 8035111C 38 00 FF 77 */ li r0, -137 -/* 80351120 7C 60 00 38 */ and r0, r3, r0 -/* 80351124 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351128 B0 1F 00 00 */ sth r0, 0(r31) -/* 8035112C 4B FE 8B CD */ bl PPCSync -/* 80351130 80 78 00 00 */ lwz r3, 0(r24) -/* 80351134 80 16 00 00 */ lwz r0, 0(r22) -/* 80351138 7C 03 00 40 */ cmplw r3, r0 -/* 8035113C 40 82 00 A8 */ bne lbl_803511E4 -/* 80351140 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351144 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351148 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 8035114C 7C 60 03 78 */ or r0, r3, r0 -/* 80351150 B0 19 00 00 */ sth r0, 0(r25) -/* 80351154 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351158 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 8035115C 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 80351160 7C 60 03 78 */ or r0, r3, r0 -/* 80351164 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351168 A0 1B 00 00 */ lhz r0, 0(r27) -/* 8035116C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351170 7C 00 8B 78 */ or r0, r0, r17 -/* 80351174 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351178 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035117C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351180 7C 00 93 78 */ or r0, r0, r18 -/* 80351184 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351188 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035118C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351190 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351194 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351198 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 8035119C 60 00 00 00 */ nop -/* 803511A0 B0 1E 00 00 */ sth r0, 0(r30) -/* 803511A4 A0 1D 00 00 */ lhz r0, 0(r29) -/* 803511A8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803511AC 60 00 00 20 */ ori r0, r0, 0x20 -/* 803511B0 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803511B4: -/* 803511B4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803511B8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803511BC 40 82 FF F8 */ bne lbl_803511B4 -/* 803511C0 A0 9F 00 00 */ lhz r4, 0(r31) -/* 803511C4 38 60 FF 77 */ li r3, -137 -/* 803511C8 3C 00 00 20 */ lis r0, 0x20 -/* 803511CC 7C 83 18 38 */ and r3, r4, r3 -/* 803511D0 60 63 00 20 */ ori r3, r3, 0x20 -/* 803511D4 B0 7F 00 00 */ sth r3, 0(r31) -/* 803511D8 3E 73 00 20 */ addis r19, r19, 0x20 -/* 803511DC 90 0D 93 44 */ stw r0, __AR_ExpansionSize(r13) -/* 803511E0 48 00 0E 78 */ b lbl_80352058 -lbl_803511E4: -/* 803511E4 A0 19 00 00 */ lhz r0, 0(r25) -/* 803511E8 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803511EC 80 01 02 38 */ lwz r0, 0x238(r1) -/* 803511F0 7C 60 03 78 */ or r0, r3, r0 -/* 803511F4 B0 19 00 00 */ sth r0, 0(r25) -/* 803511F8 A0 1A 00 00 */ lhz r0, 0(r26) -/* 803511FC 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351200 7C 00 A3 78 */ or r0, r0, r20 -/* 80351204 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351208 A0 1B 00 00 */ lhz r0, 0(r27) -/* 8035120C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351210 7C 00 73 78 */ or r0, r0, r14 -/* 80351214 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351218 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035121C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351220 7C 00 7B 78 */ or r0, r0, r15 -/* 80351224 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351228 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035122C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351230 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351234 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351238 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 8035123C 60 00 00 00 */ nop -/* 80351240 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351244 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351248 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 8035124C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351250 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351254: -/* 80351254 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351258 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 8035125C 40 82 FF F8 */ bne lbl_80351254 -/* 80351260 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351264 38 00 FF 77 */ li r0, -137 -/* 80351268 7C 60 00 38 */ and r0, r3, r0 -/* 8035126C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351270 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351274 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351278 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 8035127C 80 01 02 44 */ lwz r0, 0x244(r1) -/* 80351280 7C 60 03 78 */ or r0, r3, r0 -/* 80351284 B0 19 00 00 */ sth r0, 0(r25) -/* 80351288 A0 1A 00 00 */ lhz r0, 0(r26) -/* 8035128C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351290 80 01 02 50 */ lwz r0, 0x250(r1) -/* 80351294 7C 60 03 78 */ or r0, r3, r0 -/* 80351298 B0 1A 00 00 */ sth r0, 0(r26) -/* 8035129C A0 1B 00 00 */ lhz r0, 0(r27) -/* 803512A0 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803512A4 7C 00 8B 78 */ or r0, r0, r17 -/* 803512A8 B0 1B 00 00 */ sth r0, 0(r27) -/* 803512AC A0 1C 00 00 */ lhz r0, 0(r28) -/* 803512B0 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803512B4 7C 00 93 78 */ or r0, r0, r18 -/* 803512B8 B0 1C 00 00 */ sth r0, 0(r28) -/* 803512BC A0 1E 00 00 */ lhz r0, 0(r30) -/* 803512C0 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 803512C4 B0 1E 00 00 */ sth r0, 0(r30) -/* 803512C8 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803512CC 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803512D0 60 00 00 00 */ nop -/* 803512D4 B0 1E 00 00 */ sth r0, 0(r30) -/* 803512D8 A0 1D 00 00 */ lhz r0, 0(r29) -/* 803512DC 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803512E0 60 00 00 20 */ ori r0, r0, 0x20 -/* 803512E4 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803512E8: -/* 803512E8 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803512EC 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803512F0 40 82 FF F8 */ bne lbl_803512E8 -/* 803512F4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803512F8 38 80 FF 77 */ li r4, -137 -/* 803512FC 38 78 00 00 */ addi r3, r24, 0 -/* 80351300 7C 00 20 38 */ and r0, r0, r4 -/* 80351304 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351308 B0 1F 00 00 */ sth r0, 0(r31) -/* 8035130C 38 80 00 00 */ li r4, 0 -/* 80351310 38 A0 00 20 */ li r5, 0x20 -/* 80351314 4B CB 21 45 */ bl memset -/* 80351318 38 78 00 00 */ addi r3, r24, 0 -/* 8035131C 38 80 00 20 */ li r4, 0x20 -/* 80351320 4B FE A2 8D */ bl DCFlushRange -/* 80351324 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351328 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 8035132C 80 01 02 40 */ lwz r0, 0x240(r1) -/* 80351330 7C 60 03 78 */ or r0, r3, r0 -/* 80351334 B0 19 00 00 */ sth r0, 0(r25) -/* 80351338 A0 1A 00 00 */ lhz r0, 0(r26) -/* 8035133C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351340 80 01 02 54 */ lwz r0, 0x254(r1) -/* 80351344 7C 60 03 78 */ or r0, r3, r0 -/* 80351348 B0 1A 00 00 */ sth r0, 0(r26) -/* 8035134C A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351350 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351354 7C 00 73 78 */ or r0, r0, r14 -/* 80351358 B0 1B 00 00 */ sth r0, 0(r27) -/* 8035135C A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351360 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351364 7C 00 7B 78 */ or r0, r0, r15 -/* 80351368 B0 1C 00 00 */ sth r0, 0(r28) -/* 8035136C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351370 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80351374 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351378 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035137C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351380 60 00 00 00 */ nop -/* 80351384 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351388 A0 1D 00 00 */ lhz r0, 0(r29) -/* 8035138C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351390 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351394 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351398: -/* 80351398 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8035139C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803513A0 40 82 FF F8 */ bne lbl_80351398 -/* 803513A4 A0 7F 00 00 */ lhz r3, 0(r31) -/* 803513A8 38 00 FF 77 */ li r0, -137 -/* 803513AC 7C 60 00 38 */ and r0, r3, r0 -/* 803513B0 60 00 00 20 */ ori r0, r0, 0x20 -/* 803513B4 B0 1F 00 00 */ sth r0, 0(r31) -/* 803513B8 4B FE 89 41 */ bl PPCSync -/* 803513BC 80 78 00 00 */ lwz r3, 0(r24) -/* 803513C0 80 16 00 00 */ lwz r0, 0(r22) -/* 803513C4 7C 03 00 40 */ cmplw r3, r0 -/* 803513C8 40 82 01 48 */ bne lbl_80351510 -/* 803513CC A0 19 00 00 */ lhz r0, 0(r25) -/* 803513D0 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803513D4 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 803513D8 7C 60 03 78 */ or r0, r3, r0 -/* 803513DC B0 19 00 00 */ sth r0, 0(r25) -/* 803513E0 A0 1A 00 00 */ lhz r0, 0(r26) -/* 803513E4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 803513E8 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 803513EC 7C 60 03 78 */ or r0, r3, r0 -/* 803513F0 B0 1A 00 00 */ sth r0, 0(r26) -/* 803513F4 A0 1B 00 00 */ lhz r0, 0(r27) -/* 803513F8 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803513FC 7C 00 8B 78 */ or r0, r0, r17 -/* 80351400 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351404 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351408 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 8035140C 7C 00 93 78 */ or r0, r0, r18 -/* 80351410 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351414 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351418 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 8035141C B0 1E 00 00 */ sth r0, 0(r30) -/* 80351420 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351424 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351428 60 00 00 00 */ nop -/* 8035142C B0 1E 00 00 */ sth r0, 0(r30) -/* 80351430 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351434 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351438 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035143C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351440: -/* 80351440 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351444 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351448 40 82 FF F8 */ bne lbl_80351440 -/* 8035144C A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351450 38 00 FF 77 */ li r0, -137 -/* 80351454 7C 60 00 38 */ and r0, r3, r0 -/* 80351458 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035145C B0 1F 00 00 */ sth r0, 0(r31) -/* 80351460 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351464 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351468 80 01 02 34 */ lwz r0, 0x234(r1) -/* 8035146C 7C 60 03 78 */ or r0, r3, r0 -/* 80351470 B0 19 00 00 */ sth r0, 0(r25) -/* 80351474 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351478 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 8035147C 80 01 02 58 */ lwz r0, 0x258(r1) -/* 80351480 7C 60 03 78 */ or r0, r3, r0 -/* 80351484 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351488 A0 1B 00 00 */ lhz r0, 0(r27) -/* 8035148C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351490 7C 00 83 78 */ or r0, r0, r16 -/* 80351494 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351498 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035149C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803514A0 7C 00 BB 78 */ or r0, r0, r23 -/* 803514A4 B0 1C 00 00 */ sth r0, 0(r28) -/* 803514A8 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803514AC 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 803514B0 B0 1E 00 00 */ sth r0, 0(r30) -/* 803514B4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803514B8 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803514BC 60 00 00 00 */ nop -/* 803514C0 B0 1E 00 00 */ sth r0, 0(r30) -/* 803514C4 A0 1D 00 00 */ lhz r0, 0(r29) -/* 803514C8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803514CC 60 00 00 20 */ ori r0, r0, 0x20 -/* 803514D0 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803514D4: -/* 803514D4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803514D8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803514DC 40 82 FF F8 */ bne lbl_803514D4 -/* 803514E0 A0 9F 00 00 */ lhz r4, 0(r31) -/* 803514E4 38 00 FF 77 */ li r0, -137 -/* 803514E8 3C 60 00 40 */ lis r3, 0x40 -/* 803514EC 7C 80 00 38 */ and r0, r4, r0 -/* 803514F0 60 00 00 20 */ ori r0, r0, 0x20 -/* 803514F4 B0 1F 00 00 */ sth r0, 0(r31) -/* 803514F8 3E 73 00 40 */ addis r19, r19, 0x40 -/* 803514FC A0 01 02 70 */ lhz r0, 0x270(r1) -/* 80351500 90 6D 93 44 */ stw r3, __AR_ExpansionSize(r13) -/* 80351504 60 00 00 08 */ ori r0, r0, 8 -/* 80351508 B0 01 02 70 */ sth r0, 0x270(r1) -/* 8035150C 48 00 0B 4C */ b lbl_80352058 -lbl_80351510: -/* 80351510 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351514 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351518 80 01 02 38 */ lwz r0, 0x238(r1) -/* 8035151C 7C 60 03 78 */ or r0, r3, r0 -/* 80351520 B0 19 00 00 */ sth r0, 0(r25) -/* 80351524 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351528 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 8035152C 7C 00 A3 78 */ or r0, r0, r20 -/* 80351530 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351534 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351538 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 8035153C 80 01 02 30 */ lwz r0, 0x230(r1) -/* 80351540 7C 60 03 78 */ or r0, r3, r0 -/* 80351544 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351548 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035154C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351550 80 01 02 64 */ lwz r0, 0x264(r1) -/* 80351554 7C 60 03 78 */ or r0, r3, r0 -/* 80351558 B0 1C 00 00 */ sth r0, 0(r28) -/* 8035155C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351560 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351564 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351568 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035156C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351570 60 00 00 00 */ nop -/* 80351574 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351578 A0 1D 00 00 */ lhz r0, 0(r29) -/* 8035157C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351580 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351584 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351588: -/* 80351588 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8035158C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351590 40 82 FF F8 */ bne lbl_80351588 -/* 80351594 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351598 38 00 FF 77 */ li r0, -137 -/* 8035159C 7C 60 00 38 */ and r0, r3, r0 -/* 803515A0 60 00 00 20 */ ori r0, r0, 0x20 -/* 803515A4 B0 1F 00 00 */ sth r0, 0(r31) -/* 803515A8 A0 19 00 00 */ lhz r0, 0(r25) -/* 803515AC 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803515B0 80 01 02 44 */ lwz r0, 0x244(r1) -/* 803515B4 7C 60 03 78 */ or r0, r3, r0 -/* 803515B8 B0 19 00 00 */ sth r0, 0(r25) -/* 803515BC A0 1A 00 00 */ lhz r0, 0(r26) -/* 803515C0 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 803515C4 80 01 02 50 */ lwz r0, 0x250(r1) -/* 803515C8 7C 60 03 78 */ or r0, r3, r0 -/* 803515CC B0 1A 00 00 */ sth r0, 0(r26) -/* 803515D0 A0 1B 00 00 */ lhz r0, 0(r27) -/* 803515D4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803515D8 7C 00 8B 78 */ or r0, r0, r17 -/* 803515DC B0 1B 00 00 */ sth r0, 0(r27) -/* 803515E0 A0 1C 00 00 */ lhz r0, 0(r28) -/* 803515E4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803515E8 7C 00 93 78 */ or r0, r0, r18 -/* 803515EC B0 1C 00 00 */ sth r0, 0(r28) -/* 803515F0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803515F4 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 803515F8 B0 1E 00 00 */ sth r0, 0(r30) -/* 803515FC A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351600 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351604 60 00 00 00 */ nop -/* 80351608 B0 1E 00 00 */ sth r0, 0(r30) -/* 8035160C A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351610 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351614 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351618 B0 1D 00 00 */ sth r0, 0(r29) -lbl_8035161C: -/* 8035161C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351620 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351624 40 82 FF F8 */ bne lbl_8035161C -/* 80351628 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8035162C 38 80 FF 77 */ li r4, -137 -/* 80351630 38 78 00 00 */ addi r3, r24, 0 -/* 80351634 7C 00 20 38 */ and r0, r0, r4 -/* 80351638 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035163C B0 1F 00 00 */ sth r0, 0(r31) -/* 80351640 38 80 00 00 */ li r4, 0 -/* 80351644 38 A0 00 20 */ li r5, 0x20 -/* 80351648 4B CB 1E 11 */ bl memset -/* 8035164C 38 78 00 00 */ addi r3, r24, 0 -/* 80351650 38 80 00 20 */ li r4, 0x20 -/* 80351654 4B FE 9F 59 */ bl DCFlushRange -/* 80351658 A0 19 00 00 */ lhz r0, 0(r25) -/* 8035165C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351660 80 01 02 40 */ lwz r0, 0x240(r1) -/* 80351664 7C 60 03 78 */ or r0, r3, r0 -/* 80351668 B0 19 00 00 */ sth r0, 0(r25) -/* 8035166C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351670 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351674 80 01 02 54 */ lwz r0, 0x254(r1) -/* 80351678 7C 60 03 78 */ or r0, r3, r0 -/* 8035167C B0 1A 00 00 */ sth r0, 0(r26) -/* 80351680 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351684 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351688 80 01 02 30 */ lwz r0, 0x230(r1) -/* 8035168C 7C 60 03 78 */ or r0, r3, r0 -/* 80351690 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351694 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351698 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 8035169C 80 01 02 64 */ lwz r0, 0x264(r1) -/* 803516A0 7C 60 03 78 */ or r0, r3, r0 -/* 803516A4 B0 1C 00 00 */ sth r0, 0(r28) -/* 803516A8 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803516AC 60 00 80 00 */ ori r0, r0, 0x8000 -/* 803516B0 B0 1E 00 00 */ sth r0, 0(r30) -/* 803516B4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803516B8 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803516BC 60 00 00 00 */ nop -/* 803516C0 B0 1E 00 00 */ sth r0, 0(r30) -/* 803516C4 A0 1D 00 00 */ lhz r0, 0(r29) -/* 803516C8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803516CC 60 00 00 20 */ ori r0, r0, 0x20 -/* 803516D0 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803516D4: -/* 803516D4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803516D8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803516DC 40 82 FF F8 */ bne lbl_803516D4 -/* 803516E0 A0 7F 00 00 */ lhz r3, 0(r31) -/* 803516E4 38 00 FF 77 */ li r0, -137 -/* 803516E8 7C 60 00 38 */ and r0, r3, r0 -/* 803516EC 60 00 00 20 */ ori r0, r0, 0x20 -/* 803516F0 B0 1F 00 00 */ sth r0, 0(r31) -/* 803516F4 4B FE 86 05 */ bl PPCSync -/* 803516F8 80 78 00 00 */ lwz r3, 0(r24) -/* 803516FC 80 16 00 00 */ lwz r0, 0(r22) -/* 80351700 7C 03 00 40 */ cmplw r3, r0 -/* 80351704 40 82 01 DC */ bne lbl_803518E0 -/* 80351708 A0 19 00 00 */ lhz r0, 0(r25) -/* 8035170C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351710 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 80351714 7C 60 03 78 */ or r0, r3, r0 -/* 80351718 B0 19 00 00 */ sth r0, 0(r25) -/* 8035171C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351720 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351724 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 80351728 7C 60 03 78 */ or r0, r3, r0 -/* 8035172C B0 1A 00 00 */ sth r0, 0(r26) -/* 80351730 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351734 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351738 7C 00 8B 78 */ or r0, r0, r17 -/* 8035173C B0 1B 00 00 */ sth r0, 0(r27) -/* 80351740 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351744 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351748 7C 00 93 78 */ or r0, r0, r18 -/* 8035174C B0 1C 00 00 */ sth r0, 0(r28) -/* 80351750 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351754 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351758 B0 1E 00 00 */ sth r0, 0(r30) -/* 8035175C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351760 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351764 60 00 00 00 */ nop -/* 80351768 B0 1E 00 00 */ sth r0, 0(r30) -/* 8035176C A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351770 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351774 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351778 B0 1D 00 00 */ sth r0, 0(r29) -lbl_8035177C: -/* 8035177C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351780 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351784 40 82 FF F8 */ bne lbl_8035177C -/* 80351788 A0 7F 00 00 */ lhz r3, 0(r31) -/* 8035178C 38 00 FF 77 */ li r0, -137 -/* 80351790 7C 60 00 38 */ and r0, r3, r0 -/* 80351794 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351798 B0 1F 00 00 */ sth r0, 0(r31) -/* 8035179C A0 19 00 00 */ lhz r0, 0(r25) -/* 803517A0 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803517A4 80 01 02 34 */ lwz r0, 0x234(r1) -/* 803517A8 7C 60 03 78 */ or r0, r3, r0 -/* 803517AC B0 19 00 00 */ sth r0, 0(r25) -/* 803517B0 A0 1A 00 00 */ lhz r0, 0(r26) -/* 803517B4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 803517B8 80 01 02 58 */ lwz r0, 0x258(r1) -/* 803517BC 7C 60 03 78 */ or r0, r3, r0 -/* 803517C0 B0 1A 00 00 */ sth r0, 0(r26) -/* 803517C4 A0 1B 00 00 */ lhz r0, 0(r27) -/* 803517C8 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803517CC 7C 00 83 78 */ or r0, r0, r16 -/* 803517D0 B0 1B 00 00 */ sth r0, 0(r27) -/* 803517D4 A0 1C 00 00 */ lhz r0, 0(r28) -/* 803517D8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803517DC 7C 00 BB 78 */ or r0, r0, r23 -/* 803517E0 B0 1C 00 00 */ sth r0, 0(r28) -/* 803517E4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803517E8 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 803517EC B0 1E 00 00 */ sth r0, 0(r30) -/* 803517F0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803517F4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803517F8 60 00 00 00 */ nop -/* 803517FC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351800 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351804 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351808 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035180C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351810: -/* 80351810 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351814 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351818 40 82 FF F8 */ bne lbl_80351810 -/* 8035181C A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351820 38 00 FF 77 */ li r0, -137 -/* 80351824 7C 60 00 38 */ and r0, r3, r0 -/* 80351828 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035182C B0 1F 00 00 */ sth r0, 0(r31) -/* 80351830 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351834 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351838 80 01 02 2C */ lwz r0, 0x22c(r1) -/* 8035183C 7C 60 03 78 */ or r0, r3, r0 -/* 80351840 B0 19 00 00 */ sth r0, 0(r25) -/* 80351844 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351848 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 8035184C 80 01 02 5C */ lwz r0, 0x25c(r1) -/* 80351850 7C 60 03 78 */ or r0, r3, r0 -/* 80351854 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351858 A0 1B 00 00 */ lhz r0, 0(r27) -/* 8035185C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351860 7C 00 73 78 */ or r0, r0, r14 -/* 80351864 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351868 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035186C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351870 7C 00 7B 78 */ or r0, r0, r15 -/* 80351874 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351878 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035187C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351880 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351884 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351888 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 8035188C 60 00 00 00 */ nop -/* 80351890 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351894 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351898 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 8035189C 60 00 00 20 */ ori r0, r0, 0x20 -/* 803518A0 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803518A4: -/* 803518A4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803518A8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803518AC 40 82 FF F8 */ bne lbl_803518A4 -/* 803518B0 A0 9F 00 00 */ lhz r4, 0(r31) -/* 803518B4 38 00 FF 77 */ li r0, -137 -/* 803518B8 3C 60 00 80 */ lis r3, 0x80 -/* 803518BC 7C 80 00 38 */ and r0, r4, r0 -/* 803518C0 60 00 00 20 */ ori r0, r0, 0x20 -/* 803518C4 B0 1F 00 00 */ sth r0, 0(r31) -/* 803518C8 3E 73 00 80 */ addis r19, r19, 0x80 -/* 803518CC A0 01 02 70 */ lhz r0, 0x270(r1) -/* 803518D0 90 6D 93 44 */ stw r3, __AR_ExpansionSize(r13) -/* 803518D4 60 00 00 10 */ ori r0, r0, 0x10 -/* 803518D8 B0 01 02 70 */ sth r0, 0x270(r1) -/* 803518DC 48 00 07 7C */ b lbl_80352058 -lbl_803518E0: -/* 803518E0 A0 19 00 00 */ lhz r0, 0(r25) -/* 803518E4 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 803518E8 80 01 02 38 */ lwz r0, 0x238(r1) -/* 803518EC 7C 60 03 78 */ or r0, r3, r0 -/* 803518F0 B0 19 00 00 */ sth r0, 0(r25) -/* 803518F4 A0 1A 00 00 */ lhz r0, 0(r26) -/* 803518F8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803518FC 7C 00 A3 78 */ or r0, r0, r20 -/* 80351900 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351904 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351908 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 8035190C 80 01 02 28 */ lwz r0, 0x228(r1) -/* 80351910 7C 60 03 78 */ or r0, r3, r0 -/* 80351914 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351918 A0 1C 00 00 */ lhz r0, 0(r28) -/* 8035191C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351920 80 01 02 6C */ lwz r0, 0x26c(r1) -/* 80351924 7C 60 03 78 */ or r0, r3, r0 -/* 80351928 B0 1C 00 00 */ sth r0, 0(r28) -/* 8035192C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351930 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351934 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351938 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8035193C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351940 60 00 00 00 */ nop -/* 80351944 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351948 A0 1D 00 00 */ lhz r0, 0(r29) -/* 8035194C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351950 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351954 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351958: -/* 80351958 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8035195C 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351960 40 82 FF F8 */ bne lbl_80351958 -/* 80351964 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351968 38 00 FF 77 */ li r0, -137 -/* 8035196C 7C 60 00 38 */ and r0, r3, r0 -/* 80351970 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351974 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351978 A0 19 00 00 */ lhz r0, 0(r25) -/* 8035197C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351980 80 01 02 44 */ lwz r0, 0x244(r1) -/* 80351984 7C 60 03 78 */ or r0, r3, r0 -/* 80351988 B0 19 00 00 */ sth r0, 0(r25) -/* 8035198C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351990 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351994 80 01 02 50 */ lwz r0, 0x250(r1) -/* 80351998 7C 60 03 78 */ or r0, r3, r0 -/* 8035199C B0 1A 00 00 */ sth r0, 0(r26) -/* 803519A0 A0 1B 00 00 */ lhz r0, 0(r27) -/* 803519A4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803519A8 7C 00 8B 78 */ or r0, r0, r17 -/* 803519AC B0 1B 00 00 */ sth r0, 0(r27) -/* 803519B0 A0 1C 00 00 */ lhz r0, 0(r28) -/* 803519B4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803519B8 7C 00 93 78 */ or r0, r0, r18 -/* 803519BC B0 1C 00 00 */ sth r0, 0(r28) -/* 803519C0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 803519C4 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 803519C8 B0 1E 00 00 */ sth r0, 0(r30) -/* 803519CC A0 1E 00 00 */ lhz r0, 0(r30) -/* 803519D0 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 803519D4 60 00 00 00 */ nop -/* 803519D8 B0 1E 00 00 */ sth r0, 0(r30) -/* 803519DC A0 1D 00 00 */ lhz r0, 0(r29) -/* 803519E0 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 803519E4 60 00 00 20 */ ori r0, r0, 0x20 -/* 803519E8 B0 1D 00 00 */ sth r0, 0(r29) -lbl_803519EC: -/* 803519EC A0 1F 00 00 */ lhz r0, 0(r31) -/* 803519F0 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803519F4 40 82 FF F8 */ bne lbl_803519EC -/* 803519F8 A0 1F 00 00 */ lhz r0, 0(r31) -/* 803519FC 38 80 FF 77 */ li r4, -137 -/* 80351A00 38 78 00 00 */ addi r3, r24, 0 -/* 80351A04 7C 00 20 38 */ and r0, r0, r4 -/* 80351A08 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351A0C B0 1F 00 00 */ sth r0, 0(r31) -/* 80351A10 38 80 00 00 */ li r4, 0 -/* 80351A14 38 A0 00 20 */ li r5, 0x20 -/* 80351A18 4B CB 1A 41 */ bl memset -/* 80351A1C 38 78 00 00 */ addi r3, r24, 0 -/* 80351A20 38 80 00 20 */ li r4, 0x20 -/* 80351A24 4B FE 9B 89 */ bl DCFlushRange -/* 80351A28 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351A2C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351A30 80 01 02 40 */ lwz r0, 0x240(r1) -/* 80351A34 7C 60 03 78 */ or r0, r3, r0 -/* 80351A38 B0 19 00 00 */ sth r0, 0(r25) -/* 80351A3C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351A40 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351A44 80 01 02 54 */ lwz r0, 0x254(r1) -/* 80351A48 7C 60 03 78 */ or r0, r3, r0 -/* 80351A4C B0 1A 00 00 */ sth r0, 0(r26) -/* 80351A50 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351A54 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351A58 80 01 02 28 */ lwz r0, 0x228(r1) -/* 80351A5C 7C 60 03 78 */ or r0, r3, r0 -/* 80351A60 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351A64 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351A68 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351A6C 80 01 02 6C */ lwz r0, 0x26c(r1) -/* 80351A70 7C 60 03 78 */ or r0, r3, r0 -/* 80351A74 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351A78 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351A7C 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80351A80 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351A84 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351A88 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351A8C 60 00 00 00 */ nop -/* 80351A90 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351A94 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351A98 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351A9C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351AA0 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351AA4: -/* 80351AA4 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351AA8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351AAC 40 82 FF F8 */ bne lbl_80351AA4 -/* 80351AB0 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351AB4 38 00 FF 77 */ li r0, -137 -/* 80351AB8 7C 60 00 38 */ and r0, r3, r0 -/* 80351ABC 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351AC0 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351AC4 4B FE 82 35 */ bl PPCSync -/* 80351AC8 80 18 00 00 */ lwz r0, 0(r24) -/* 80351ACC 80 76 00 00 */ lwz r3, 0(r22) -/* 80351AD0 7C 00 18 40 */ cmplw r0, r3 -/* 80351AD4 40 82 02 78 */ bne lbl_80351D4C -/* 80351AD8 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351ADC 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351AE0 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 80351AE4 7C 60 03 78 */ or r0, r3, r0 -/* 80351AE8 B0 19 00 00 */ sth r0, 0(r25) -/* 80351AEC A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351AF0 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351AF4 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 80351AF8 7C 60 03 78 */ or r0, r3, r0 -/* 80351AFC B0 1A 00 00 */ sth r0, 0(r26) -/* 80351B00 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351B04 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351B08 7C 00 8B 78 */ or r0, r0, r17 -/* 80351B0C B0 1B 00 00 */ sth r0, 0(r27) -/* 80351B10 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351B14 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351B18 7C 00 93 78 */ or r0, r0, r18 -/* 80351B1C B0 1C 00 00 */ sth r0, 0(r28) -/* 80351B20 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351B24 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351B28 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351B2C A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351B30 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351B34 60 00 00 00 */ nop -/* 80351B38 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351B3C A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351B40 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351B44 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351B48 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351B4C: -/* 80351B4C A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351B50 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351B54 40 82 FF F8 */ bne lbl_80351B4C -/* 80351B58 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351B5C 38 00 FF 77 */ li r0, -137 -/* 80351B60 7C 60 00 38 */ and r0, r3, r0 -/* 80351B64 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351B68 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351B6C A0 19 00 00 */ lhz r0, 0(r25) -/* 80351B70 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351B74 80 01 02 34 */ lwz r0, 0x234(r1) -/* 80351B78 7C 60 03 78 */ or r0, r3, r0 -/* 80351B7C B0 19 00 00 */ sth r0, 0(r25) -/* 80351B80 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351B84 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351B88 80 01 02 58 */ lwz r0, 0x258(r1) -/* 80351B8C 7C 60 03 78 */ or r0, r3, r0 -/* 80351B90 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351B94 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351B98 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351B9C 7C 00 83 78 */ or r0, r0, r16 -/* 80351BA0 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351BA4 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351BA8 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351BAC 7C 00 BB 78 */ or r0, r0, r23 -/* 80351BB0 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351BB4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351BB8 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351BBC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351BC0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351BC4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351BC8 60 00 00 00 */ nop -/* 80351BCC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351BD0 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351BD4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351BD8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351BDC B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351BE0: -/* 80351BE0 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351BE4 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351BE8 40 82 FF F8 */ bne lbl_80351BE0 -/* 80351BEC A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351BF0 38 00 FF 77 */ li r0, -137 -/* 80351BF4 7C 60 00 38 */ and r0, r3, r0 -/* 80351BF8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351BFC B0 1F 00 00 */ sth r0, 0(r31) -/* 80351C00 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351C04 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351C08 80 01 02 2C */ lwz r0, 0x22c(r1) -/* 80351C0C 7C 60 03 78 */ or r0, r3, r0 -/* 80351C10 B0 19 00 00 */ sth r0, 0(r25) -/* 80351C14 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351C18 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351C1C 80 01 02 5C */ lwz r0, 0x25c(r1) -/* 80351C20 7C 60 03 78 */ or r0, r3, r0 -/* 80351C24 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351C28 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351C2C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351C30 7C 00 73 78 */ or r0, r0, r14 -/* 80351C34 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351C38 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351C3C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351C40 7C 00 7B 78 */ or r0, r0, r15 -/* 80351C44 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351C48 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351C4C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351C50 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351C54 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351C58 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351C5C 60 00 00 00 */ nop -/* 80351C60 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351C64 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351C68 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351C6C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351C70 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351C74: -/* 80351C74 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351C78 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351C7C 40 82 FF F8 */ bne lbl_80351C74 -/* 80351C80 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351C84 38 00 FF 77 */ li r0, -137 -/* 80351C88 7C 60 00 38 */ and r0, r3, r0 -/* 80351C8C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351C90 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351C94 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351C98 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351C9C 80 01 02 24 */ lwz r0, 0x224(r1) -/* 80351CA0 7C 60 03 78 */ or r0, r3, r0 -/* 80351CA4 B0 19 00 00 */ sth r0, 0(r25) -/* 80351CA8 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351CAC 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351CB0 80 01 02 60 */ lwz r0, 0x260(r1) -/* 80351CB4 7C 60 03 78 */ or r0, r3, r0 -/* 80351CB8 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351CBC A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351CC0 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351CC4 80 01 02 30 */ lwz r0, 0x230(r1) -/* 80351CC8 7C 60 03 78 */ or r0, r3, r0 -/* 80351CCC B0 1B 00 00 */ sth r0, 0(r27) -/* 80351CD0 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351CD4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351CD8 80 01 02 64 */ lwz r0, 0x264(r1) -/* 80351CDC 7C 60 03 78 */ or r0, r3, r0 -/* 80351CE0 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351CE4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351CE8 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351CEC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351CF0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351CF4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351CF8 60 00 00 00 */ nop -/* 80351CFC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351D00 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351D04 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351D08 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351D0C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351D10: -/* 80351D10 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351D14 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351D18 40 82 FF F8 */ bne lbl_80351D10 -/* 80351D1C A0 9F 00 00 */ lhz r4, 0(r31) -/* 80351D20 38 00 FF 77 */ li r0, -137 -/* 80351D24 3C 60 01 00 */ lis r3, 0x100 -/* 80351D28 7C 80 00 38 */ and r0, r4, r0 -/* 80351D2C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351D30 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351D34 3E 73 01 00 */ addis r19, r19, 0x100 -/* 80351D38 A0 01 02 70 */ lhz r0, 0x270(r1) -/* 80351D3C 90 6D 93 44 */ stw r3, __AR_ExpansionSize(r13) -/* 80351D40 60 00 00 18 */ ori r0, r0, 0x18 -/* 80351D44 B0 01 02 70 */ sth r0, 0x270(r1) -/* 80351D48 48 00 03 10 */ b lbl_80352058 -lbl_80351D4C: -/* 80351D4C A0 19 00 00 */ lhz r0, 0(r25) -/* 80351D50 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351D54 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 80351D58 7C 60 03 78 */ or r0, r3, r0 -/* 80351D5C B0 19 00 00 */ sth r0, 0(r25) -/* 80351D60 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351D64 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351D68 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 80351D6C 7C 60 03 78 */ or r0, r3, r0 -/* 80351D70 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351D74 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351D78 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351D7C 7C 00 8B 78 */ or r0, r0, r17 -/* 80351D80 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351D84 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351D88 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351D8C 7C 00 93 78 */ or r0, r0, r18 -/* 80351D90 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351D94 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351D98 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351D9C B0 1E 00 00 */ sth r0, 0(r30) -/* 80351DA0 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351DA4 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351DA8 60 00 00 00 */ nop -/* 80351DAC B0 1E 00 00 */ sth r0, 0(r30) -/* 80351DB0 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351DB4 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351DB8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351DBC B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351DC0: -/* 80351DC0 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351DC4 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351DC8 40 82 FF F8 */ bne lbl_80351DC0 -/* 80351DCC A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351DD0 38 00 FF 77 */ li r0, -137 -/* 80351DD4 7C 60 00 38 */ and r0, r3, r0 -/* 80351DD8 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351DDC B0 1F 00 00 */ sth r0, 0(r31) -/* 80351DE0 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351DE4 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351DE8 80 01 02 34 */ lwz r0, 0x234(r1) -/* 80351DEC 7C 60 03 78 */ or r0, r3, r0 -/* 80351DF0 B0 19 00 00 */ sth r0, 0(r25) -/* 80351DF4 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351DF8 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351DFC 80 01 02 58 */ lwz r0, 0x258(r1) -/* 80351E00 7C 60 03 78 */ or r0, r3, r0 -/* 80351E04 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351E08 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351E0C 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351E10 7C 00 83 78 */ or r0, r0, r16 -/* 80351E14 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351E18 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351E1C 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351E20 7C 00 BB 78 */ or r0, r0, r23 -/* 80351E24 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351E28 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351E2C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351E30 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351E34 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351E38 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351E3C 60 00 00 00 */ nop -/* 80351E40 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351E44 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351E48 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351E4C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351E50 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351E54: -/* 80351E54 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351E58 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351E5C 40 82 FF F8 */ bne lbl_80351E54 -/* 80351E60 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351E64 38 00 FF 77 */ li r0, -137 -/* 80351E68 7C 60 00 38 */ and r0, r3, r0 -/* 80351E6C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351E70 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351E74 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351E78 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351E7C 80 01 02 2C */ lwz r0, 0x22c(r1) -/* 80351E80 7C 60 03 78 */ or r0, r3, r0 -/* 80351E84 B0 19 00 00 */ sth r0, 0(r25) -/* 80351E88 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351E8C 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351E90 80 01 02 5C */ lwz r0, 0x25c(r1) -/* 80351E94 7C 60 03 78 */ or r0, r3, r0 -/* 80351E98 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351E9C A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351EA0 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351EA4 7C 00 73 78 */ or r0, r0, r14 -/* 80351EA8 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351EAC A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351EB0 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351EB4 7C 00 7B 78 */ or r0, r0, r15 -/* 80351EB8 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351EBC A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351EC0 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351EC4 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351EC8 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351ECC 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351ED0 60 00 00 00 */ nop -/* 80351ED4 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351ED8 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351EDC 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351EE0 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351EE4 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351EE8: -/* 80351EE8 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351EEC 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351EF0 40 82 FF F8 */ bne lbl_80351EE8 -/* 80351EF4 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351EF8 38 00 FF 77 */ li r0, -137 -/* 80351EFC 7C 60 00 38 */ and r0, r3, r0 -/* 80351F00 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351F04 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351F08 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351F0C 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351F10 80 01 02 24 */ lwz r0, 0x224(r1) -/* 80351F14 7C 60 03 78 */ or r0, r3, r0 -/* 80351F18 B0 19 00 00 */ sth r0, 0(r25) -/* 80351F1C A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351F20 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351F24 80 01 02 60 */ lwz r0, 0x260(r1) -/* 80351F28 7C 60 03 78 */ or r0, r3, r0 -/* 80351F2C B0 1A 00 00 */ sth r0, 0(r26) -/* 80351F30 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351F34 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351F38 80 01 02 30 */ lwz r0, 0x230(r1) -/* 80351F3C 7C 60 03 78 */ or r0, r3, r0 -/* 80351F40 B0 1B 00 00 */ sth r0, 0(r27) -/* 80351F44 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351F48 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351F4C 80 01 02 64 */ lwz r0, 0x264(r1) -/* 80351F50 7C 60 03 78 */ or r0, r3, r0 -/* 80351F54 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351F58 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351F5C 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351F60 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351F64 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351F68 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80351F6C 60 00 00 00 */ nop -/* 80351F70 B0 1E 00 00 */ sth r0, 0(r30) -/* 80351F74 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80351F78 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80351F7C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351F80 B0 1D 00 00 */ sth r0, 0(r29) -lbl_80351F84: -/* 80351F84 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80351F88 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80351F8C 40 82 FF F8 */ bne lbl_80351F84 -/* 80351F90 A0 7F 00 00 */ lhz r3, 0(r31) -/* 80351F94 38 00 FF 77 */ li r0, -137 -/* 80351F98 7C 60 00 38 */ and r0, r3, r0 -/* 80351F9C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80351FA0 B0 1F 00 00 */ sth r0, 0(r31) -/* 80351FA4 A0 19 00 00 */ lhz r0, 0(r25) -/* 80351FA8 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351FAC 80 01 02 20 */ lwz r0, 0x220(r1) -/* 80351FB0 7C 60 03 78 */ or r0, r3, r0 -/* 80351FB4 B0 19 00 00 */ sth r0, 0(r25) -/* 80351FB8 A0 1A 00 00 */ lhz r0, 0(r26) -/* 80351FBC 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351FC0 80 01 02 68 */ lwz r0, 0x268(r1) -/* 80351FC4 7C 60 03 78 */ or r0, r3, r0 -/* 80351FC8 B0 1A 00 00 */ sth r0, 0(r26) -/* 80351FCC A0 1B 00 00 */ lhz r0, 0(r27) -/* 80351FD0 54 03 00 2A */ rlwinm r3, r0, 0, 0, 0x15 -/* 80351FD4 80 01 02 28 */ lwz r0, 0x228(r1) -/* 80351FD8 7C 60 03 78 */ or r0, r3, r0 -/* 80351FDC B0 1B 00 00 */ sth r0, 0(r27) -/* 80351FE0 A0 1C 00 00 */ lhz r0, 0(r28) -/* 80351FE4 54 03 06 DE */ rlwinm r3, r0, 0, 0x1b, 0xf -/* 80351FE8 80 01 02 6C */ lwz r0, 0x26c(r1) -/* 80351FEC 7C 60 03 78 */ or r0, r3, r0 -/* 80351FF0 B0 1C 00 00 */ sth r0, 0(r28) -/* 80351FF4 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80351FF8 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 80351FFC B0 1E 00 00 */ sth r0, 0(r30) -/* 80352000 A0 1E 00 00 */ lhz r0, 0(r30) -/* 80352004 54 00 00 2A */ rlwinm r0, r0, 0, 0, 0x15 -/* 80352008 60 00 00 00 */ nop -/* 8035200C B0 1E 00 00 */ sth r0, 0(r30) -/* 80352010 A0 1D 00 00 */ lhz r0, 0(r29) -/* 80352014 54 00 06 DE */ rlwinm r0, r0, 0, 0x1b, 0xf -/* 80352018 60 00 00 20 */ ori r0, r0, 0x20 -/* 8035201C B0 1D 00 00 */ sth r0, 0(r29) -lbl_80352020: -/* 80352020 A0 1F 00 00 */ lhz r0, 0(r31) -/* 80352024 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 80352028 40 82 FF F8 */ bne lbl_80352020 -/* 8035202C A0 9F 00 00 */ lhz r4, 0(r31) -/* 80352030 38 00 FF 77 */ li r0, -137 -/* 80352034 3C 60 02 00 */ lis r3, 0x200 -/* 80352038 7C 80 00 38 */ and r0, r4, r0 -/* 8035203C 60 00 00 20 */ ori r0, r0, 0x20 -/* 80352040 B0 1F 00 00 */ sth r0, 0(r31) -/* 80352044 3E 73 02 00 */ addis r19, r19, 0x200 -/* 80352048 A0 01 02 70 */ lhz r0, 0x270(r1) -/* 8035204C 90 6D 93 44 */ stw r3, __AR_ExpansionSize(r13) -/* 80352050 60 00 00 20 */ ori r0, r0, 0x20 -/* 80352054 B0 01 02 70 */ sth r0, 0x270(r1) -lbl_80352058: -/* 80352058 80 61 02 48 */ lwz r3, 0x248(r1) -/* 8035205C A0 03 00 00 */ lhz r0, 0(r3) -/* 80352060 54 03 00 32 */ rlwinm r3, r0, 0, 0, 0x19 -/* 80352064 A0 01 02 70 */ lhz r0, 0x270(r1) -/* 80352068 7C 60 03 78 */ or r0, r3, r0 -/* 8035206C 80 61 02 48 */ lwz r3, 0x248(r1) -/* 80352070 B0 03 00 00 */ sth r0, 0(r3) -lbl_80352074: -/* 80352074 3C 60 C0 00 */ lis r3, 0xC000 /* 0xC00000D0@ha */ -/* 80352078 92 63 00 D0 */ stw r19, 0x00D0(r3) /* 0xC00000D0@l */ -/* 8035207C 92 6D 93 3C */ stw r19, __AR_Size(r13) -/* 80352080 80 01 02 C4 */ lwz r0, 0x2c4(r1) -/* 80352084 B9 C1 02 78 */ lmw r14, 0x278(r1) -/* 80352088 38 21 02 C0 */ addi r1, r1, 0x2c0 -/* 8035208C 7C 08 03 A6 */ mtlr r0 -/* 80352090 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDGeometry/GDSetArray.s b/asm/dolphin/gd/GDGeometry/GDSetArray.s deleted file mode 100644 index ee100b51fe..0000000000 --- a/asm/dolphin/gd/GDGeometry/GDSetArray.s +++ /dev/null @@ -1,140 +0,0 @@ -lbl_80361700: -/* 80361700 7C 08 02 A6 */ mflr r0 -/* 80361704 2C 03 00 19 */ cmpwi r3, 0x19 -/* 80361708 90 01 00 04 */ stw r0, 4(r1) -/* 8036170C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80361710 93 E1 00 24 */ stw r31, 0x24(r1) -/* 80361714 93 C1 00 20 */ stw r30, 0x20(r1) -/* 80361718 3B C5 00 00 */ addi r30, r5, 0 -/* 8036171C 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 80361720 3B A4 00 00 */ addi r29, r4, 0 -/* 80361724 40 82 00 0C */ bne lbl_80361730 -/* 80361728 3B E0 00 01 */ li r31, 1 -/* 8036172C 48 00 00 08 */ b lbl_80361734 -lbl_80361730: -/* 80361730 3B E3 FF F7 */ addi r31, r3, -9 -lbl_80361734: -/* 80361734 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361738 80 64 00 08 */ lwz r3, 8(r4) -/* 8036173C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361740 38 63 00 01 */ addi r3, r3, 1 -/* 80361744 7C 03 00 40 */ cmplw r3, r0 -/* 80361748 40 81 00 08 */ ble lbl_80361750 -/* 8036174C 4B FF F9 89 */ bl GDOverflowed -lbl_80361750: -/* 80361750 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361754 38 A0 00 08 */ li r5, 8 -/* 80361758 80 64 00 08 */ lwz r3, 8(r4) -/* 8036175C 38 03 00 01 */ addi r0, r3, 1 -/* 80361760 90 04 00 08 */ stw r0, 8(r4) -/* 80361764 98 A3 00 00 */ stb r5, 0(r3) -/* 80361768 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036176C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361770 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361774 38 63 00 01 */ addi r3, r3, 1 -/* 80361778 7C 03 00 40 */ cmplw r3, r0 -/* 8036177C 40 81 00 08 */ ble lbl_80361784 -/* 80361780 4B FF F9 55 */ bl GDOverflowed -lbl_80361784: -/* 80361784 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361788 38 BF 00 A0 */ addi r5, r31, 0xa0 -/* 8036178C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361790 38 03 00 01 */ addi r0, r3, 1 -/* 80361794 90 04 00 08 */ stw r0, 8(r4) -/* 80361798 98 A3 00 00 */ stb r5, 0(r3) -/* 8036179C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803617A0 80 64 00 08 */ lwz r3, 8(r4) -/* 803617A4 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803617A8 38 63 00 04 */ addi r3, r3, 4 -/* 803617AC 7C 03 00 40 */ cmplw r3, r0 -/* 803617B0 40 81 00 08 */ ble lbl_803617B8 -/* 803617B4 4B FF F9 21 */ bl GDOverflowed -lbl_803617B8: -/* 803617B8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803617BC 3D 1D 80 00 */ addis r8, r29, 0x8000 -/* 803617C0 55 07 46 3E */ srwi r7, r8, 0x18 -/* 803617C4 80 64 00 08 */ lwz r3, 8(r4) -/* 803617C8 55 06 86 3E */ rlwinm r6, r8, 0x10, 0x18, 0x1f -/* 803617CC 55 05 C6 3E */ rlwinm r5, r8, 0x18, 0x18, 0x1f -/* 803617D0 38 03 00 01 */ addi r0, r3, 1 -/* 803617D4 90 04 00 08 */ stw r0, 8(r4) -/* 803617D8 98 E3 00 00 */ stb r7, 0(r3) -/* 803617DC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803617E0 80 64 00 08 */ lwz r3, 8(r4) -/* 803617E4 38 03 00 01 */ addi r0, r3, 1 -/* 803617E8 90 04 00 08 */ stw r0, 8(r4) -/* 803617EC 98 C3 00 00 */ stb r6, 0(r3) -/* 803617F0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803617F4 80 64 00 08 */ lwz r3, 8(r4) -/* 803617F8 38 03 00 01 */ addi r0, r3, 1 -/* 803617FC 90 04 00 08 */ stw r0, 8(r4) -/* 80361800 98 A3 00 00 */ stb r5, 0(r3) -/* 80361804 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361808 80 64 00 08 */ lwz r3, 8(r4) -/* 8036180C 38 03 00 01 */ addi r0, r3, 1 -/* 80361810 90 04 00 08 */ stw r0, 8(r4) -/* 80361814 99 03 00 00 */ stb r8, 0(r3) -/* 80361818 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036181C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361820 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361824 38 63 00 01 */ addi r3, r3, 1 -/* 80361828 7C 03 00 40 */ cmplw r3, r0 -/* 8036182C 40 81 00 08 */ ble lbl_80361834 -/* 80361830 4B FF F8 A5 */ bl GDOverflowed -lbl_80361834: -/* 80361834 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361838 38 A0 00 08 */ li r5, 8 -/* 8036183C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361840 38 03 00 01 */ addi r0, r3, 1 -/* 80361844 90 04 00 08 */ stw r0, 8(r4) -/* 80361848 98 A3 00 00 */ stb r5, 0(r3) -/* 8036184C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361850 80 64 00 08 */ lwz r3, 8(r4) -/* 80361854 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361858 38 63 00 01 */ addi r3, r3, 1 -/* 8036185C 7C 03 00 40 */ cmplw r3, r0 -/* 80361860 40 81 00 08 */ ble lbl_80361868 -/* 80361864 4B FF F8 71 */ bl GDOverflowed -lbl_80361868: -/* 80361868 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036186C 38 BF 00 B0 */ addi r5, r31, 0xb0 -/* 80361870 80 64 00 08 */ lwz r3, 8(r4) -/* 80361874 38 03 00 01 */ addi r0, r3, 1 -/* 80361878 90 04 00 08 */ stw r0, 8(r4) -/* 8036187C 98 A3 00 00 */ stb r5, 0(r3) -/* 80361880 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361884 80 64 00 08 */ lwz r3, 8(r4) -/* 80361888 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8036188C 38 63 00 04 */ addi r3, r3, 4 -/* 80361890 7C 03 00 40 */ cmplw r3, r0 -/* 80361894 40 81 00 08 */ ble lbl_8036189C -/* 80361898 4B FF F8 3D */ bl GDOverflowed -lbl_8036189C: -/* 8036189C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803618A0 38 A0 00 00 */ li r5, 0 -/* 803618A4 80 64 00 08 */ lwz r3, 8(r4) -/* 803618A8 38 03 00 01 */ addi r0, r3, 1 -/* 803618AC 90 04 00 08 */ stw r0, 8(r4) -/* 803618B0 98 A3 00 00 */ stb r5, 0(r3) -/* 803618B4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803618B8 80 64 00 08 */ lwz r3, 8(r4) -/* 803618BC 38 03 00 01 */ addi r0, r3, 1 -/* 803618C0 90 04 00 08 */ stw r0, 8(r4) -/* 803618C4 98 A3 00 00 */ stb r5, 0(r3) -/* 803618C8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803618CC 80 64 00 08 */ lwz r3, 8(r4) -/* 803618D0 38 03 00 01 */ addi r0, r3, 1 -/* 803618D4 90 04 00 08 */ stw r0, 8(r4) -/* 803618D8 98 A3 00 00 */ stb r5, 0(r3) -/* 803618DC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803618E0 80 64 00 08 */ lwz r3, 8(r4) -/* 803618E4 38 03 00 01 */ addi r0, r3, 1 -/* 803618E8 90 04 00 08 */ stw r0, 8(r4) -/* 803618EC 9B C3 00 00 */ stb r30, 0(r3) -/* 803618F0 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 803618F4 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 803618F8 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 803618FC 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 80361900 38 21 00 28 */ addi r1, r1, 0x28 -/* 80361904 7C 08 03 A6 */ mtlr r0 -/* 80361908 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s b/asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s deleted file mode 100644 index 87bef19341..0000000000 --- a/asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s +++ /dev/null @@ -1,139 +0,0 @@ -lbl_8036190C: -/* 8036190C 7C 08 02 A6 */ mflr r0 -/* 80361910 2C 03 00 19 */ cmpwi r3, 0x19 -/* 80361914 90 01 00 04 */ stw r0, 4(r1) -/* 80361918 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8036191C 93 E1 00 24 */ stw r31, 0x24(r1) -/* 80361920 93 C1 00 20 */ stw r30, 0x20(r1) -/* 80361924 3B C5 00 00 */ addi r30, r5, 0 -/* 80361928 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8036192C 3B A4 00 00 */ addi r29, r4, 0 -/* 80361930 40 82 00 0C */ bne lbl_8036193C -/* 80361934 3B E0 00 01 */ li r31, 1 -/* 80361938 48 00 00 08 */ b lbl_80361940 -lbl_8036193C: -/* 8036193C 3B E3 FF F7 */ addi r31, r3, -9 -lbl_80361940: -/* 80361940 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361944 80 64 00 08 */ lwz r3, 8(r4) -/* 80361948 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8036194C 38 63 00 01 */ addi r3, r3, 1 -/* 80361950 7C 03 00 40 */ cmplw r3, r0 -/* 80361954 40 81 00 08 */ ble lbl_8036195C -/* 80361958 4B FF F7 7D */ bl GDOverflowed -lbl_8036195C: -/* 8036195C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361960 38 A0 00 08 */ li r5, 8 -/* 80361964 80 64 00 08 */ lwz r3, 8(r4) -/* 80361968 38 03 00 01 */ addi r0, r3, 1 -/* 8036196C 90 04 00 08 */ stw r0, 8(r4) -/* 80361970 98 A3 00 00 */ stb r5, 0(r3) -/* 80361974 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361978 80 64 00 08 */ lwz r3, 8(r4) -/* 8036197C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361980 38 63 00 01 */ addi r3, r3, 1 -/* 80361984 7C 03 00 40 */ cmplw r3, r0 -/* 80361988 40 81 00 08 */ ble lbl_80361990 -/* 8036198C 4B FF F7 49 */ bl GDOverflowed -lbl_80361990: -/* 80361990 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361994 38 BF 00 A0 */ addi r5, r31, 0xa0 -/* 80361998 80 64 00 08 */ lwz r3, 8(r4) -/* 8036199C 38 03 00 01 */ addi r0, r3, 1 -/* 803619A0 90 04 00 08 */ stw r0, 8(r4) -/* 803619A4 98 A3 00 00 */ stb r5, 0(r3) -/* 803619A8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803619AC 80 64 00 08 */ lwz r3, 8(r4) -/* 803619B0 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803619B4 38 63 00 04 */ addi r3, r3, 4 -/* 803619B8 7C 03 00 40 */ cmplw r3, r0 -/* 803619BC 40 81 00 08 */ ble lbl_803619C4 -/* 803619C0 4B FF F7 15 */ bl GDOverflowed -lbl_803619C4: -/* 803619C4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803619C8 57 A7 46 3E */ srwi r7, r29, 0x18 -/* 803619CC 57 A6 86 3E */ rlwinm r6, r29, 0x10, 0x18, 0x1f -/* 803619D0 80 64 00 08 */ lwz r3, 8(r4) -/* 803619D4 57 A5 C6 3E */ rlwinm r5, r29, 0x18, 0x18, 0x1f -/* 803619D8 38 03 00 01 */ addi r0, r3, 1 -/* 803619DC 90 04 00 08 */ stw r0, 8(r4) -/* 803619E0 98 E3 00 00 */ stb r7, 0(r3) -/* 803619E4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803619E8 80 64 00 08 */ lwz r3, 8(r4) -/* 803619EC 38 03 00 01 */ addi r0, r3, 1 -/* 803619F0 90 04 00 08 */ stw r0, 8(r4) -/* 803619F4 98 C3 00 00 */ stb r6, 0(r3) -/* 803619F8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803619FC 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A00 38 03 00 01 */ addi r0, r3, 1 -/* 80361A04 90 04 00 08 */ stw r0, 8(r4) -/* 80361A08 98 A3 00 00 */ stb r5, 0(r3) -/* 80361A0C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A10 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A14 38 03 00 01 */ addi r0, r3, 1 -/* 80361A18 90 04 00 08 */ stw r0, 8(r4) -/* 80361A1C 9B A3 00 00 */ stb r29, 0(r3) -/* 80361A20 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A24 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A28 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361A2C 38 63 00 01 */ addi r3, r3, 1 -/* 80361A30 7C 03 00 40 */ cmplw r3, r0 -/* 80361A34 40 81 00 08 */ ble lbl_80361A3C -/* 80361A38 4B FF F6 9D */ bl GDOverflowed -lbl_80361A3C: -/* 80361A3C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A40 38 A0 00 08 */ li r5, 8 -/* 80361A44 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A48 38 03 00 01 */ addi r0, r3, 1 -/* 80361A4C 90 04 00 08 */ stw r0, 8(r4) -/* 80361A50 98 A3 00 00 */ stb r5, 0(r3) -/* 80361A54 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A58 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A5C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361A60 38 63 00 01 */ addi r3, r3, 1 -/* 80361A64 7C 03 00 40 */ cmplw r3, r0 -/* 80361A68 40 81 00 08 */ ble lbl_80361A70 -/* 80361A6C 4B FF F6 69 */ bl GDOverflowed -lbl_80361A70: -/* 80361A70 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A74 38 BF 00 B0 */ addi r5, r31, 0xb0 -/* 80361A78 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A7C 38 03 00 01 */ addi r0, r3, 1 -/* 80361A80 90 04 00 08 */ stw r0, 8(r4) -/* 80361A84 98 A3 00 00 */ stb r5, 0(r3) -/* 80361A88 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361A8C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361A90 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361A94 38 63 00 04 */ addi r3, r3, 4 -/* 80361A98 7C 03 00 40 */ cmplw r3, r0 -/* 80361A9C 40 81 00 08 */ ble lbl_80361AA4 -/* 80361AA0 4B FF F6 35 */ bl GDOverflowed -lbl_80361AA4: -/* 80361AA4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361AA8 38 A0 00 00 */ li r5, 0 -/* 80361AAC 80 64 00 08 */ lwz r3, 8(r4) -/* 80361AB0 38 03 00 01 */ addi r0, r3, 1 -/* 80361AB4 90 04 00 08 */ stw r0, 8(r4) -/* 80361AB8 98 A3 00 00 */ stb r5, 0(r3) -/* 80361ABC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361AC0 80 64 00 08 */ lwz r3, 8(r4) -/* 80361AC4 38 03 00 01 */ addi r0, r3, 1 -/* 80361AC8 90 04 00 08 */ stw r0, 8(r4) -/* 80361ACC 98 A3 00 00 */ stb r5, 0(r3) -/* 80361AD0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361AD4 80 64 00 08 */ lwz r3, 8(r4) -/* 80361AD8 38 03 00 01 */ addi r0, r3, 1 -/* 80361ADC 90 04 00 08 */ stw r0, 8(r4) -/* 80361AE0 98 A3 00 00 */ stb r5, 0(r3) -/* 80361AE4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361AE8 80 64 00 08 */ lwz r3, 8(r4) -/* 80361AEC 38 03 00 01 */ addi r0, r3, 1 -/* 80361AF0 90 04 00 08 */ stw r0, 8(r4) -/* 80361AF4 9B C3 00 00 */ stb r30, 0(r3) -/* 80361AF8 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80361AFC 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 80361B00 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 80361B04 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 80361B08 38 21 00 28 */ addi r1, r1, 0x28 -/* 80361B0C 7C 08 03 A6 */ mtlr r0 -/* 80361B10 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s b/asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s deleted file mode 100644 index 80eaa6a586..0000000000 --- a/asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s +++ /dev/null @@ -1,397 +0,0 @@ -lbl_80361104: -/* 80361104 7C 08 02 A6 */ mflr r0 -/* 80361108 3C 80 80 3D */ lis r4, lit_121@ha /* 0x803D2948@ha */ -/* 8036110C 90 01 00 04 */ stw r0, 4(r1) -/* 80361110 38 84 29 48 */ addi r4, r4, lit_121@l /* 0x803D2948@l */ -/* 80361114 94 21 FF A8 */ stwu r1, -0x58(r1) -/* 80361118 BD E1 00 14 */ stmw r15, 0x14(r1) -/* 8036111C 3B E0 00 00 */ li r31, 0 -/* 80361120 3B C0 00 00 */ li r30, 0 -/* 80361124 3B A0 00 00 */ li r29, 0 -/* 80361128 3B 80 00 00 */ li r28, 0 -/* 8036112C 3B 60 00 00 */ li r27, 0 -/* 80361130 3B 40 00 01 */ li r26, 1 -/* 80361134 3B 20 00 00 */ li r25, 0 -/* 80361138 3B 00 00 00 */ li r24, 0 -/* 8036113C 3A E0 00 00 */ li r23, 0 -/* 80361140 3A C0 00 00 */ li r22, 0 -/* 80361144 3A A0 00 00 */ li r21, 0 -/* 80361148 3A 80 00 00 */ li r20, 0 -/* 8036114C 3A 60 00 00 */ li r19, 0 -/* 80361150 3A 40 00 00 */ li r18, 0 -/* 80361154 3A 20 00 00 */ li r17, 0 -/* 80361158 3A 00 00 00 */ li r16, 0 -/* 8036115C 39 E0 00 00 */ li r15, 0 -/* 80361160 48 00 02 10 */ b lbl_80361370 -lbl_80361164: -/* 80361164 28 00 00 19 */ cmplwi r0, 0x19 -/* 80361168 41 81 02 04 */ bgt lbl_8036136C -/* 8036116C 54 00 10 3A */ slwi r0, r0, 2 -/* 80361170 7C 04 00 2E */ lwzx r0, r4, r0 -/* 80361174 7C 09 03 A6 */ mtctr r0 -/* 80361178 4E 80 04 20 */ bctr -/* 8036117C 83 83 00 04 */ lwz r28, 4(r3) -/* 80361180 48 00 01 EC */ b lbl_8036136C -/* 80361184 80 03 00 04 */ lwz r0, 4(r3) -/* 80361188 57 65 00 3C */ rlwinm r5, r27, 0, 0, 0x1e -/* 8036118C 7C BB 03 78 */ or r27, r5, r0 -/* 80361190 48 00 01 DC */ b lbl_8036136C -/* 80361194 80 03 00 04 */ lwz r0, 4(r3) -/* 80361198 57 65 07 FA */ rlwinm r5, r27, 0, 0x1f, 0x1d -/* 8036119C 54 00 08 3C */ slwi r0, r0, 1 -/* 803611A0 7C BB 03 78 */ or r27, r5, r0 -/* 803611A4 48 00 01 C8 */ b lbl_8036136C -/* 803611A8 80 03 00 04 */ lwz r0, 4(r3) -/* 803611AC 57 65 07 B8 */ rlwinm r5, r27, 0, 0x1e, 0x1c -/* 803611B0 54 00 10 3A */ slwi r0, r0, 2 -/* 803611B4 7C BB 03 78 */ or r27, r5, r0 -/* 803611B8 48 00 01 B4 */ b lbl_8036136C -/* 803611BC 80 03 00 04 */ lwz r0, 4(r3) -/* 803611C0 57 65 07 76 */ rlwinm r5, r27, 0, 0x1d, 0x1b -/* 803611C4 54 00 18 38 */ slwi r0, r0, 3 -/* 803611C8 7C BB 03 78 */ or r27, r5, r0 -/* 803611CC 48 00 01 A0 */ b lbl_8036136C -/* 803611D0 80 03 00 04 */ lwz r0, 4(r3) -/* 803611D4 57 65 07 34 */ rlwinm r5, r27, 0, 0x1c, 0x1a -/* 803611D8 54 00 20 36 */ slwi r0, r0, 4 -/* 803611DC 7C BB 03 78 */ or r27, r5, r0 -/* 803611E0 48 00 01 8C */ b lbl_8036136C -/* 803611E4 80 03 00 04 */ lwz r0, 4(r3) -/* 803611E8 57 65 06 F2 */ rlwinm r5, r27, 0, 0x1b, 0x19 -/* 803611EC 54 00 28 34 */ slwi r0, r0, 5 -/* 803611F0 7C BB 03 78 */ or r27, r5, r0 -/* 803611F4 48 00 01 78 */ b lbl_8036136C -/* 803611F8 80 03 00 04 */ lwz r0, 4(r3) -/* 803611FC 57 65 06 B0 */ rlwinm r5, r27, 0, 0x1a, 0x18 -/* 80361200 54 00 30 32 */ slwi r0, r0, 6 -/* 80361204 7C BB 03 78 */ or r27, r5, r0 -/* 80361208 48 00 01 64 */ b lbl_8036136C -/* 8036120C 80 03 00 04 */ lwz r0, 4(r3) -/* 80361210 57 65 06 6E */ rlwinm r5, r27, 0, 0x19, 0x17 -/* 80361214 54 00 38 30 */ slwi r0, r0, 7 -/* 80361218 7C BB 03 78 */ or r27, r5, r0 -/* 8036121C 48 00 01 50 */ b lbl_8036136C -/* 80361220 83 43 00 04 */ lwz r26, 4(r3) -/* 80361224 48 00 01 48 */ b lbl_8036136C -/* 80361228 80 03 00 04 */ lwz r0, 4(r3) -/* 8036122C 2C 00 00 00 */ cmpwi r0, 0 -/* 80361230 41 82 01 3C */ beq lbl_8036136C -/* 80361234 7C 19 03 78 */ mr r25, r0 -/* 80361238 3B E0 00 01 */ li r31, 1 -/* 8036123C 48 00 01 30 */ b lbl_8036136C -/* 80361240 80 03 00 04 */ lwz r0, 4(r3) -/* 80361244 2C 00 00 00 */ cmpwi r0, 0 -/* 80361248 41 82 01 24 */ beq lbl_8036136C -/* 8036124C 7C 19 03 78 */ mr r25, r0 -/* 80361250 3B E0 00 02 */ li r31, 2 -/* 80361254 48 00 01 18 */ b lbl_8036136C -/* 80361258 80 C3 00 04 */ lwz r6, 4(r3) -/* 8036125C 7C A6 00 D0 */ neg r5, r6 -/* 80361260 30 05 FF FF */ addic r0, r5, -1 -/* 80361264 7C 00 29 10 */ subfe r0, r0, r5 -/* 80361268 3B 06 00 00 */ addi r24, r6, 0 -/* 8036126C 7F DE 02 14 */ add r30, r30, r0 -/* 80361270 48 00 00 FC */ b lbl_8036136C -/* 80361274 80 C3 00 04 */ lwz r6, 4(r3) -/* 80361278 7C A6 00 D0 */ neg r5, r6 -/* 8036127C 30 05 FF FF */ addic r0, r5, -1 -/* 80361280 7C 00 29 10 */ subfe r0, r0, r5 -/* 80361284 3A E6 00 00 */ addi r23, r6, 0 -/* 80361288 7F DE 02 14 */ add r30, r30, r0 -/* 8036128C 48 00 00 E0 */ b lbl_8036136C -/* 80361290 80 C3 00 04 */ lwz r6, 4(r3) -/* 80361294 7C A6 00 D0 */ neg r5, r6 -/* 80361298 30 05 FF FF */ addic r0, r5, -1 -/* 8036129C 7C 00 29 10 */ subfe r0, r0, r5 -/* 803612A0 3A C6 00 00 */ addi r22, r6, 0 -/* 803612A4 7F BD 02 14 */ add r29, r29, r0 -/* 803612A8 48 00 00 C4 */ b lbl_8036136C -/* 803612AC 80 C3 00 04 */ lwz r6, 4(r3) -/* 803612B0 7C A6 00 D0 */ neg r5, r6 -/* 803612B4 30 05 FF FF */ addic r0, r5, -1 -/* 803612B8 7C 00 29 10 */ subfe r0, r0, r5 -/* 803612BC 3A A6 00 00 */ addi r21, r6, 0 -/* 803612C0 7F BD 02 14 */ add r29, r29, r0 -/* 803612C4 48 00 00 A8 */ b lbl_8036136C -/* 803612C8 80 C3 00 04 */ lwz r6, 4(r3) -/* 803612CC 7C A6 00 D0 */ neg r5, r6 -/* 803612D0 30 05 FF FF */ addic r0, r5, -1 -/* 803612D4 7C 00 29 10 */ subfe r0, r0, r5 -/* 803612D8 3A 86 00 00 */ addi r20, r6, 0 -/* 803612DC 7F BD 02 14 */ add r29, r29, r0 -/* 803612E0 48 00 00 8C */ b lbl_8036136C -/* 803612E4 80 C3 00 04 */ lwz r6, 4(r3) -/* 803612E8 7C A6 00 D0 */ neg r5, r6 -/* 803612EC 30 05 FF FF */ addic r0, r5, -1 -/* 803612F0 7C 00 29 10 */ subfe r0, r0, r5 -/* 803612F4 3A 66 00 00 */ addi r19, r6, 0 -/* 803612F8 7F BD 02 14 */ add r29, r29, r0 -/* 803612FC 48 00 00 70 */ b lbl_8036136C -/* 80361300 80 C3 00 04 */ lwz r6, 4(r3) -/* 80361304 7C A6 00 D0 */ neg r5, r6 -/* 80361308 30 05 FF FF */ addic r0, r5, -1 -/* 8036130C 7C 00 29 10 */ subfe r0, r0, r5 -/* 80361310 3A 46 00 00 */ addi r18, r6, 0 -/* 80361314 7F BD 02 14 */ add r29, r29, r0 -/* 80361318 48 00 00 54 */ b lbl_8036136C -/* 8036131C 80 C3 00 04 */ lwz r6, 4(r3) -/* 80361320 7C A6 00 D0 */ neg r5, r6 -/* 80361324 30 05 FF FF */ addic r0, r5, -1 -/* 80361328 7C 00 29 10 */ subfe r0, r0, r5 -/* 8036132C 3A 26 00 00 */ addi r17, r6, 0 -/* 80361330 7F BD 02 14 */ add r29, r29, r0 -/* 80361334 48 00 00 38 */ b lbl_8036136C -/* 80361338 80 C3 00 04 */ lwz r6, 4(r3) -/* 8036133C 7C A6 00 D0 */ neg r5, r6 -/* 80361340 30 05 FF FF */ addic r0, r5, -1 -/* 80361344 7C 00 29 10 */ subfe r0, r0, r5 -/* 80361348 3A 06 00 00 */ addi r16, r6, 0 -/* 8036134C 7F BD 02 14 */ add r29, r29, r0 -/* 80361350 48 00 00 1C */ b lbl_8036136C -/* 80361354 80 C3 00 04 */ lwz r6, 4(r3) -/* 80361358 7C A6 00 D0 */ neg r5, r6 -/* 8036135C 30 05 FF FF */ addic r0, r5, -1 -/* 80361360 7C 00 29 10 */ subfe r0, r0, r5 -/* 80361364 39 E6 00 00 */ addi r15, r6, 0 -/* 80361368 7F BD 02 14 */ add r29, r29, r0 -lbl_8036136C: -/* 8036136C 38 63 00 08 */ addi r3, r3, 8 -lbl_80361370: -/* 80361370 80 03 00 00 */ lwz r0, 0(r3) -/* 80361374 2C 00 00 FF */ cmpwi r0, 0xff -/* 80361378 40 82 FD EC */ bne lbl_80361164 -/* 8036137C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361380 80 64 00 08 */ lwz r3, 8(r4) -/* 80361384 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361388 38 63 00 01 */ addi r3, r3, 1 -/* 8036138C 7C 03 00 40 */ cmplw r3, r0 -/* 80361390 40 81 00 08 */ ble lbl_80361398 -/* 80361394 4B FF FD 41 */ bl GDOverflowed -lbl_80361398: -/* 80361398 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036139C 38 A0 00 08 */ li r5, 8 -/* 803613A0 80 64 00 08 */ lwz r3, 8(r4) -/* 803613A4 38 03 00 01 */ addi r0, r3, 1 -/* 803613A8 90 04 00 08 */ stw r0, 8(r4) -/* 803613AC 98 A3 00 00 */ stb r5, 0(r3) -/* 803613B0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803613B4 80 64 00 08 */ lwz r3, 8(r4) -/* 803613B8 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803613BC 38 63 00 01 */ addi r3, r3, 1 -/* 803613C0 7C 03 00 40 */ cmplw r3, r0 -/* 803613C4 40 81 00 08 */ ble lbl_803613CC -/* 803613C8 4B FF FD 0D */ bl GDOverflowed -lbl_803613CC: -/* 803613CC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803613D0 38 A0 00 50 */ li r5, 0x50 -/* 803613D4 80 64 00 08 */ lwz r3, 8(r4) -/* 803613D8 38 03 00 01 */ addi r0, r3, 1 -/* 803613DC 90 04 00 08 */ stw r0, 8(r4) -/* 803613E0 98 A3 00 00 */ stb r5, 0(r3) -/* 803613E4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803613E8 80 64 00 08 */ lwz r3, 8(r4) -/* 803613EC 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803613F0 38 63 00 04 */ addi r3, r3, 4 -/* 803613F4 7C 03 00 40 */ cmplw r3, r0 -/* 803613F8 40 81 00 08 */ ble lbl_80361400 -/* 803613FC 4B FF FC D9 */ bl GDOverflowed -lbl_80361400: -/* 80361400 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361404 57 60 08 3C */ slwi r0, r27, 1 -/* 80361408 57 45 48 2C */ slwi r5, r26, 9 -/* 8036140C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361410 7F 80 03 78 */ or r0, r28, r0 -/* 80361414 7C A5 03 78 */ or r5, r5, r0 -/* 80361418 38 03 00 01 */ addi r0, r3, 1 -/* 8036141C 90 04 00 08 */ stw r0, 8(r4) -/* 80361420 57 26 58 28 */ slwi r6, r25, 0xb -/* 80361424 57 07 68 24 */ slwi r7, r24, 0xd -/* 80361428 7C C0 2B 78 */ or r0, r6, r5 -/* 8036142C 56 E4 78 20 */ slwi r4, r23, 0xf -/* 80361430 7C E0 03 78 */ or r0, r7, r0 -/* 80361434 7C 87 03 78 */ or r7, r4, r0 -/* 80361438 54 E0 46 3E */ srwi r0, r7, 0x18 -/* 8036143C 98 03 00 00 */ stb r0, 0(r3) -/* 80361440 54 E6 86 3E */ rlwinm r6, r7, 0x10, 0x18, 0x1f -/* 80361444 54 E5 C6 3E */ rlwinm r5, r7, 0x18, 0x18, 0x1f -/* 80361448 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036144C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361450 38 03 00 01 */ addi r0, r3, 1 -/* 80361454 90 04 00 08 */ stw r0, 8(r4) -/* 80361458 98 C3 00 00 */ stb r6, 0(r3) -/* 8036145C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361460 80 64 00 08 */ lwz r3, 8(r4) -/* 80361464 38 03 00 01 */ addi r0, r3, 1 -/* 80361468 90 04 00 08 */ stw r0, 8(r4) -/* 8036146C 98 A3 00 00 */ stb r5, 0(r3) -/* 80361470 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361474 80 64 00 08 */ lwz r3, 8(r4) -/* 80361478 38 03 00 01 */ addi r0, r3, 1 -/* 8036147C 90 04 00 08 */ stw r0, 8(r4) -/* 80361480 98 E3 00 00 */ stb r7, 0(r3) -/* 80361484 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361488 80 64 00 08 */ lwz r3, 8(r4) -/* 8036148C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361490 38 63 00 01 */ addi r3, r3, 1 -/* 80361494 7C 03 00 40 */ cmplw r3, r0 -/* 80361498 40 81 00 08 */ ble lbl_803614A0 -/* 8036149C 4B FF FC 39 */ bl GDOverflowed -lbl_803614A0: -/* 803614A0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803614A4 38 A0 00 08 */ li r5, 8 -/* 803614A8 80 64 00 08 */ lwz r3, 8(r4) -/* 803614AC 38 03 00 01 */ addi r0, r3, 1 -/* 803614B0 90 04 00 08 */ stw r0, 8(r4) -/* 803614B4 98 A3 00 00 */ stb r5, 0(r3) -/* 803614B8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803614BC 80 64 00 08 */ lwz r3, 8(r4) -/* 803614C0 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803614C4 38 63 00 01 */ addi r3, r3, 1 -/* 803614C8 7C 03 00 40 */ cmplw r3, r0 -/* 803614CC 40 81 00 08 */ ble lbl_803614D4 -/* 803614D0 4B FF FC 05 */ bl GDOverflowed -lbl_803614D4: -/* 803614D4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803614D8 38 A0 00 60 */ li r5, 0x60 -/* 803614DC 80 64 00 08 */ lwz r3, 8(r4) -/* 803614E0 38 03 00 01 */ addi r0, r3, 1 -/* 803614E4 90 04 00 08 */ stw r0, 8(r4) -/* 803614E8 98 A3 00 00 */ stb r5, 0(r3) -/* 803614EC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803614F0 80 64 00 08 */ lwz r3, 8(r4) -/* 803614F4 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803614F8 38 63 00 04 */ addi r3, r3, 4 -/* 803614FC 7C 03 00 40 */ cmplw r3, r0 -/* 80361500 40 81 00 08 */ ble lbl_80361508 -/* 80361504 4B FF FB D1 */ bl GDOverflowed -lbl_80361508: -/* 80361508 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036150C 56 A0 10 3A */ slwi r0, r21, 2 -/* 80361510 56 85 20 36 */ slwi r5, r20, 4 -/* 80361514 7E C0 03 78 */ or r0, r22, r0 -/* 80361518 80 64 00 08 */ lwz r3, 8(r4) -/* 8036151C 56 66 30 32 */ slwi r6, r19, 6 -/* 80361520 7C A0 03 78 */ or r0, r5, r0 -/* 80361524 7C C5 03 78 */ or r5, r6, r0 -/* 80361528 38 03 00 01 */ addi r0, r3, 1 -/* 8036152C 90 04 00 08 */ stw r0, 8(r4) -/* 80361530 56 47 40 2E */ slwi r7, r18, 8 -/* 80361534 7C E0 2B 78 */ or r0, r7, r5 -/* 80361538 56 26 50 2A */ slwi r6, r17, 0xa -/* 8036153C 56 04 60 26 */ slwi r4, r16, 0xc -/* 80361540 7C C0 03 78 */ or r0, r6, r0 -/* 80361544 55 E5 70 22 */ slwi r5, r15, 0xe -/* 80361548 7C 80 03 78 */ or r0, r4, r0 -/* 8036154C 7C A7 03 78 */ or r7, r5, r0 -/* 80361550 54 E0 46 3E */ srwi r0, r7, 0x18 -/* 80361554 98 03 00 00 */ stb r0, 0(r3) -/* 80361558 54 E6 86 3E */ rlwinm r6, r7, 0x10, 0x18, 0x1f -/* 8036155C 54 E5 C6 3E */ rlwinm r5, r7, 0x18, 0x18, 0x1f -/* 80361560 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361564 80 64 00 08 */ lwz r3, 8(r4) -/* 80361568 38 03 00 01 */ addi r0, r3, 1 -/* 8036156C 90 04 00 08 */ stw r0, 8(r4) -/* 80361570 98 C3 00 00 */ stb r6, 0(r3) -/* 80361574 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361578 80 64 00 08 */ lwz r3, 8(r4) -/* 8036157C 38 03 00 01 */ addi r0, r3, 1 -/* 80361580 90 04 00 08 */ stw r0, 8(r4) -/* 80361584 98 A3 00 00 */ stb r5, 0(r3) -/* 80361588 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036158C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361590 38 03 00 01 */ addi r0, r3, 1 -/* 80361594 90 04 00 08 */ stw r0, 8(r4) -/* 80361598 98 E3 00 00 */ stb r7, 0(r3) -/* 8036159C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803615A0 80 64 00 08 */ lwz r3, 8(r4) -/* 803615A4 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803615A8 38 63 00 01 */ addi r3, r3, 1 -/* 803615AC 7C 03 00 40 */ cmplw r3, r0 -/* 803615B0 40 81 00 08 */ ble lbl_803615B8 -/* 803615B4 4B FF FB 21 */ bl GDOverflowed -lbl_803615B8: -/* 803615B8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803615BC 38 A0 00 10 */ li r5, 0x10 -/* 803615C0 80 64 00 08 */ lwz r3, 8(r4) -/* 803615C4 38 03 00 01 */ addi r0, r3, 1 -/* 803615C8 90 04 00 08 */ stw r0, 8(r4) -/* 803615CC 98 A3 00 00 */ stb r5, 0(r3) -/* 803615D0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803615D4 80 64 00 08 */ lwz r3, 8(r4) -/* 803615D8 80 04 00 0C */ lwz r0, 0xc(r4) -/* 803615DC 38 63 00 02 */ addi r3, r3, 2 -/* 803615E0 7C 03 00 40 */ cmplw r3, r0 -/* 803615E4 40 81 00 08 */ ble lbl_803615EC -/* 803615E8 4B FF FA ED */ bl GDOverflowed -lbl_803615EC: -/* 803615EC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803615F0 38 A0 00 00 */ li r5, 0 -/* 803615F4 80 64 00 08 */ lwz r3, 8(r4) -/* 803615F8 38 03 00 01 */ addi r0, r3, 1 -/* 803615FC 90 04 00 08 */ stw r0, 8(r4) -/* 80361600 98 A3 00 00 */ stb r5, 0(r3) -/* 80361604 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361608 80 64 00 08 */ lwz r3, 8(r4) -/* 8036160C 38 03 00 01 */ addi r0, r3, 1 -/* 80361610 90 04 00 08 */ stw r0, 8(r4) -/* 80361614 98 A3 00 00 */ stb r5, 0(r3) -/* 80361618 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 8036161C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361620 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361624 38 63 00 02 */ addi r3, r3, 2 -/* 80361628 7C 03 00 40 */ cmplw r3, r0 -/* 8036162C 40 81 00 08 */ ble lbl_80361634 -/* 80361630 4B FF FA A5 */ bl GDOverflowed -lbl_80361634: -/* 80361634 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361638 38 C0 00 10 */ li r6, 0x10 -/* 8036163C 38 A0 00 08 */ li r5, 8 -/* 80361640 80 64 00 08 */ lwz r3, 8(r4) -/* 80361644 38 03 00 01 */ addi r0, r3, 1 -/* 80361648 90 04 00 08 */ stw r0, 8(r4) -/* 8036164C 98 C3 00 00 */ stb r6, 0(r3) -/* 80361650 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361654 80 64 00 08 */ lwz r3, 8(r4) -/* 80361658 38 03 00 01 */ addi r0, r3, 1 -/* 8036165C 90 04 00 08 */ stw r0, 8(r4) -/* 80361660 98 A3 00 00 */ stb r5, 0(r3) -/* 80361664 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361668 80 64 00 08 */ lwz r3, 8(r4) -/* 8036166C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80361670 38 63 00 04 */ addi r3, r3, 4 -/* 80361674 7C 03 00 40 */ cmplw r3, r0 -/* 80361678 40 81 00 08 */ ble lbl_80361680 -/* 8036167C 4B FF FA 59 */ bl GDOverflowed -lbl_80361680: -/* 80361680 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80361684 57 E0 10 3A */ slwi r0, r31, 2 -/* 80361688 57 A5 20 36 */ slwi r5, r29, 4 -/* 8036168C 80 64 00 08 */ lwz r3, 8(r4) -/* 80361690 7F C0 03 78 */ or r0, r30, r0 -/* 80361694 7C A7 03 78 */ or r7, r5, r0 -/* 80361698 38 03 00 01 */ addi r0, r3, 1 -/* 8036169C 90 04 00 08 */ stw r0, 8(r4) -/* 803616A0 54 E0 46 3E */ srwi r0, r7, 0x18 -/* 803616A4 54 E6 86 3E */ rlwinm r6, r7, 0x10, 0x18, 0x1f -/* 803616A8 98 03 00 00 */ stb r0, 0(r3) -/* 803616AC 54 E5 C6 3E */ rlwinm r5, r7, 0x18, 0x18, 0x1f -/* 803616B0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803616B4 80 64 00 08 */ lwz r3, 8(r4) -/* 803616B8 38 03 00 01 */ addi r0, r3, 1 -/* 803616BC 90 04 00 08 */ stw r0, 8(r4) -/* 803616C0 98 C3 00 00 */ stb r6, 0(r3) -/* 803616C4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803616C8 80 64 00 08 */ lwz r3, 8(r4) -/* 803616CC 38 03 00 01 */ addi r0, r3, 1 -/* 803616D0 90 04 00 08 */ stw r0, 8(r4) -/* 803616D4 98 A3 00 00 */ stb r5, 0(r3) -/* 803616D8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 803616DC 80 64 00 08 */ lwz r3, 8(r4) -/* 803616E0 38 03 00 01 */ addi r0, r3, 1 -/* 803616E4 90 04 00 08 */ stw r0, 8(r4) -/* 803616E8 98 E3 00 00 */ stb r7, 0(r3) -/* 803616EC B9 E1 00 14 */ lmw r15, 0x14(r1) -/* 803616F0 80 01 00 5C */ lwz r0, 0x5c(r1) -/* 803616F4 38 21 00 58 */ addi r1, r1, 0x58 -/* 803616F8 7C 08 03 A6 */ mtlr r0 -/* 803616FC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXAttr/GXSetVtxDescv.s b/asm/dolphin/gx/GXAttr/GXSetVtxDescv.s deleted file mode 100644 index fa15f2a06f..0000000000 --- a/asm/dolphin/gx/GXAttr/GXSetVtxDescv.s +++ /dev/null @@ -1,171 +0,0 @@ -lbl_8035B124: -/* 8035B124 3C 80 80 3D */ lis r4, lit_223@ha /* 0x803D22E8@ha */ -/* 8035B128 38 84 22 E8 */ addi r4, r4, lit_223@l /* 0x803D22E8@l */ -/* 8035B12C 48 00 02 1C */ b lbl_8035B348 -lbl_8035B130: -/* 8035B130 80 A3 00 00 */ lwz r5, 0(r3) -/* 8035B134 80 03 00 04 */ lwz r0, 4(r3) -/* 8035B138 28 05 00 19 */ cmplwi r5, 0x19 -/* 8035B13C 41 81 02 08 */ bgt lbl_8035B344 -/* 8035B140 54 A5 10 3A */ slwi r5, r5, 2 -/* 8035B144 7C A4 28 2E */ lwzx r5, r4, r5 -/* 8035B148 7C A9 03 A6 */ mtctr r5 -/* 8035B14C 4E 80 04 20 */ bctr -/* 8035B150 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B154 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B158 50 05 07 FE */ rlwimi r5, r0, 0, 0x1f, 0x1f -/* 8035B15C 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B160 48 00 01 E4 */ b lbl_8035B344 -/* 8035B164 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B168 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B16C 50 05 0F BC */ rlwimi r5, r0, 1, 0x1e, 0x1e -/* 8035B170 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B174 48 00 01 D0 */ b lbl_8035B344 -/* 8035B178 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B17C 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B180 50 05 17 7A */ rlwimi r5, r0, 2, 0x1d, 0x1d -/* 8035B184 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B188 48 00 01 BC */ b lbl_8035B344 -/* 8035B18C 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B190 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B194 50 05 1F 38 */ rlwimi r5, r0, 3, 0x1c, 0x1c -/* 8035B198 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B19C 48 00 01 A8 */ b lbl_8035B344 -/* 8035B1A0 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B1A4 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B1A8 50 05 26 F6 */ rlwimi r5, r0, 4, 0x1b, 0x1b -/* 8035B1AC 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B1B0 48 00 01 94 */ b lbl_8035B344 -/* 8035B1B4 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B1B8 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B1BC 50 05 2E B4 */ rlwimi r5, r0, 5, 0x1a, 0x1a -/* 8035B1C0 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B1C4 48 00 01 80 */ b lbl_8035B344 -/* 8035B1C8 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B1CC 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B1D0 50 05 36 72 */ rlwimi r5, r0, 6, 0x19, 0x19 -/* 8035B1D4 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B1D8 48 00 01 6C */ b lbl_8035B344 -/* 8035B1DC 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B1E0 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B1E4 50 05 3E 30 */ rlwimi r5, r0, 7, 0x18, 0x18 -/* 8035B1E8 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B1EC 48 00 01 58 */ b lbl_8035B344 -/* 8035B1F0 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B1F4 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B1F8 50 05 45 EE */ rlwimi r5, r0, 8, 0x17, 0x17 -/* 8035B1FC 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B200 48 00 01 44 */ b lbl_8035B344 -/* 8035B204 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B208 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B20C 50 05 4D 6C */ rlwimi r5, r0, 9, 0x15, 0x16 -/* 8035B210 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B214 48 00 01 30 */ b lbl_8035B344 -/* 8035B218 2C 00 00 00 */ cmpwi r0, 0 -/* 8035B21C 41 82 00 20 */ beq lbl_8035B23C -/* 8035B220 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B224 38 E0 00 01 */ li r7, 1 -/* 8035B228 38 A0 00 00 */ li r5, 0 -/* 8035B22C 98 E6 04 D4 */ stb r7, 0x4d4(r6) -/* 8035B230 98 A6 04 D5 */ stb r5, 0x4d5(r6) -/* 8035B234 90 06 04 D0 */ stw r0, 0x4d0(r6) -/* 8035B238 48 00 01 0C */ b lbl_8035B344 -lbl_8035B23C: -/* 8035B23C 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035B240 38 00 00 00 */ li r0, 0 -/* 8035B244 98 05 04 D4 */ stb r0, 0x4d4(r5) -/* 8035B248 48 00 00 FC */ b lbl_8035B344 -/* 8035B24C 2C 00 00 00 */ cmpwi r0, 0 -/* 8035B250 41 82 00 20 */ beq lbl_8035B270 -/* 8035B254 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B258 38 E0 00 01 */ li r7, 1 -/* 8035B25C 38 A0 00 00 */ li r5, 0 -/* 8035B260 98 E6 04 D5 */ stb r7, 0x4d5(r6) -/* 8035B264 98 A6 04 D4 */ stb r5, 0x4d4(r6) -/* 8035B268 90 06 04 D0 */ stw r0, 0x4d0(r6) -/* 8035B26C 48 00 00 D8 */ b lbl_8035B344 -lbl_8035B270: -/* 8035B270 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035B274 38 00 00 00 */ li r0, 0 -/* 8035B278 98 05 04 D5 */ stb r0, 0x4d5(r5) -/* 8035B27C 48 00 00 C8 */ b lbl_8035B344 -/* 8035B280 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B284 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B288 50 05 6C 64 */ rlwimi r5, r0, 0xd, 0x11, 0x12 -/* 8035B28C 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B290 48 00 00 B4 */ b lbl_8035B344 -/* 8035B294 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B298 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 8035B29C 50 05 7B E0 */ rlwimi r5, r0, 0xf, 0xf, 0x10 -/* 8035B2A0 90 A6 00 14 */ stw r5, 0x14(r6) -/* 8035B2A4 48 00 00 A0 */ b lbl_8035B344 -/* 8035B2A8 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B2AC 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B2B0 50 05 07 BE */ rlwimi r5, r0, 0, 0x1e, 0x1f -/* 8035B2B4 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B2B8 48 00 00 8C */ b lbl_8035B344 -/* 8035B2BC 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B2C0 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B2C4 50 05 17 3A */ rlwimi r5, r0, 2, 0x1c, 0x1d -/* 8035B2C8 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B2CC 48 00 00 78 */ b lbl_8035B344 -/* 8035B2D0 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B2D4 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B2D8 50 05 26 B6 */ rlwimi r5, r0, 4, 0x1a, 0x1b -/* 8035B2DC 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B2E0 48 00 00 64 */ b lbl_8035B344 -/* 8035B2E4 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B2E8 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B2EC 50 05 36 32 */ rlwimi r5, r0, 6, 0x18, 0x19 -/* 8035B2F0 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B2F4 48 00 00 50 */ b lbl_8035B344 -/* 8035B2F8 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B2FC 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B300 50 05 45 AE */ rlwimi r5, r0, 8, 0x16, 0x17 -/* 8035B304 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B308 48 00 00 3C */ b lbl_8035B344 -/* 8035B30C 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B310 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B314 50 05 55 2A */ rlwimi r5, r0, 0xa, 0x14, 0x15 -/* 8035B318 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B31C 48 00 00 28 */ b lbl_8035B344 -/* 8035B320 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B324 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B328 50 05 64 A6 */ rlwimi r5, r0, 0xc, 0x12, 0x13 -/* 8035B32C 90 A6 00 18 */ stw r5, 0x18(r6) -/* 8035B330 48 00 00 14 */ b lbl_8035B344 -/* 8035B334 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035B338 80 A6 00 18 */ lwz r5, 0x18(r6) -/* 8035B33C 50 05 74 22 */ rlwimi r5, r0, 0xe, 0x10, 0x11 -/* 8035B340 90 A6 00 18 */ stw r5, 0x18(r6) -lbl_8035B344: -/* 8035B344 38 63 00 08 */ addi r3, r3, 8 -lbl_8035B348: -/* 8035B348 80 03 00 00 */ lwz r0, 0(r3) -/* 8035B34C 2C 00 00 FF */ cmpwi r0, 0xff -/* 8035B350 40 82 FD E0 */ bne lbl_8035B130 -/* 8035B354 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035B358 88 04 04 D4 */ lbz r0, 0x4d4(r4) -/* 8035B35C 28 00 00 00 */ cmplwi r0, 0 -/* 8035B360 40 82 00 10 */ bne lbl_8035B370 -/* 8035B364 88 04 04 D5 */ lbz r0, 0x4d5(r4) -/* 8035B368 28 00 00 00 */ cmplwi r0, 0 -/* 8035B36C 41 82 00 1C */ beq lbl_8035B388 -lbl_8035B370: -/* 8035B370 80 04 04 D0 */ lwz r0, 0x4d0(r4) -/* 8035B374 80 84 00 14 */ lwz r4, 0x14(r4) -/* 8035B378 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035B37C 50 04 5C E8 */ rlwimi r4, r0, 0xb, 0x13, 0x14 -/* 8035B380 90 83 00 14 */ stw r4, 0x14(r3) -/* 8035B384 48 00 00 14 */ b lbl_8035B398 -lbl_8035B388: -/* 8035B388 80 64 00 14 */ lwz r3, 0x14(r4) -/* 8035B38C 38 00 00 00 */ li r0, 0 -/* 8035B390 50 03 5C E8 */ rlwimi r3, r0, 0xb, 0x13, 0x14 -/* 8035B394 90 64 00 14 */ stw r3, 0x14(r4) -lbl_8035B398: -/* 8035B398 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035B39C 80 03 05 AC */ lwz r0, 0x5ac(r3) -/* 8035B3A0 60 00 00 08 */ ori r0, r0, 8 -/* 8035B3A4 90 03 05 AC */ stw r0, 0x5ac(r3) -/* 8035B3A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXAttr/__GXSetVCD.s b/asm/dolphin/gx/GXAttr/__GXSetVCD.s deleted file mode 100644 index 77b14cb619..0000000000 --- a/asm/dolphin/gx/GXAttr/__GXSetVCD.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_8035B3AC: -/* 8035B3AC 38 C0 00 08 */ li r6, 8 -/* 8035B3B0 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035B3B4 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035B3B8 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035B3BC 38 60 00 50 */ li r3, 0x50 -/* 8035B3C0 38 00 00 60 */ li r0, 0x60 -/* 8035B3C4 98 65 80 00 */ stb r3, -0x8000(r5) -/* 8035B3C8 80 64 00 14 */ lwz r3, 0x14(r4) -/* 8035B3CC 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035B3D0 98 C5 80 00 */ stb r6, -0x8000(r5) -/* 8035B3D4 98 05 80 00 */ stb r0, -0x8000(r5) -/* 8035B3D8 80 04 00 18 */ lwz r0, 0x18(r4) -/* 8035B3DC 90 05 80 00 */ stw r0, -0x8000(r5) -/* 8035B3E0 88 04 04 D5 */ lbz r0, 0x4d5(r4) -/* 8035B3E4 28 00 00 00 */ cmplwi r0, 0 -/* 8035B3E8 41 82 00 0C */ beq lbl_8035B3F4 -/* 8035B3EC 38 E0 00 02 */ li r7, 2 -/* 8035B3F0 48 00 00 1C */ b lbl_8035B40C -lbl_8035B3F4: -/* 8035B3F4 88 04 04 D4 */ lbz r0, 0x4d4(r4) -/* 8035B3F8 28 00 00 00 */ cmplwi r0, 0 -/* 8035B3FC 41 82 00 0C */ beq lbl_8035B408 -/* 8035B400 38 E0 00 01 */ li r7, 1 -/* 8035B404 48 00 00 08 */ b lbl_8035B40C -lbl_8035B408: -/* 8035B408 38 E0 00 00 */ li r7, 0 -lbl_8035B40C: -/* 8035B40C 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035B410 38 00 00 10 */ li r0, 0x10 -/* 8035B414 80 C4 00 14 */ lwz r6, 0x14(r4) -/* 8035B418 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035B41C 80 65 00 18 */ lwz r3, 0x18(r5) -/* 8035B420 54 C6 9F 3E */ rlwinm r6, r6, 0x13, 0x1c, 0x1f -/* 8035B424 7C C6 00 34 */ cntlzw r6, r6 -/* 8035B428 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035B42C 54 63 04 3E */ clrlwi r3, r3, 0x10 -/* 8035B430 20 C6 00 21 */ subfic r6, r6, 0x21 -/* 8035B434 7C 60 00 34 */ cntlzw r0, r3 -/* 8035B438 20 60 00 21 */ subfic r3, r0, 0x21 -/* 8035B43C 38 00 10 08 */ li r0, 0x1008 -/* 8035B440 90 04 80 00 */ stw r0, -0x8000(r4) -/* 8035B444 54 C6 F8 7E */ srwi r6, r6, 1 -/* 8035B448 54 E0 10 3A */ slwi r0, r7, 2 -/* 8035B44C 54 63 18 36 */ rlwinm r3, r3, 3, 0, 0x1b -/* 8035B450 7C C0 03 78 */ or r0, r6, r0 -/* 8035B454 7C 60 03 78 */ or r0, r3, r0 -/* 8035B458 90 04 80 00 */ stw r0, -0x8000(r4) -/* 8035B45C 38 00 00 01 */ li r0, 1 -/* 8035B460 B0 05 00 02 */ sth r0, 2(r5) -/* 8035B464 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s b/asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s deleted file mode 100644 index d4577e32e4..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s +++ /dev/null @@ -1,96 +0,0 @@ -lbl_8035D304: -/* 8035D304 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 8035D308 41 82 00 44 */ beq lbl_8035D34C -/* 8035D30C 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035D310 38 00 00 01 */ li r0, 1 -/* 8035D314 38 C0 00 61 */ li r6, 0x61 -/* 8035D318 81 07 01 D8 */ lwz r8, 0x1d8(r7) -/* 8035D31C 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D320 50 08 07 FE */ rlwimi r8, r0, 0, 0x1f, 0x1f -/* 8035D324 38 00 00 07 */ li r0, 7 -/* 8035D328 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D32C 50 08 0F 3C */ rlwimi r8, r0, 1, 0x1c, 0x1e -/* 8035D330 91 05 80 00 */ stw r8, -0x8000(r5) -/* 8035D334 38 00 00 00 */ li r0, 0 -/* 8035D338 80 E7 01 D0 */ lwz r7, 0x1d0(r7) -/* 8035D33C 50 07 07 FE */ rlwimi r7, r0, 0, 0x1f, 0x1f -/* 8035D340 50 07 0F BC */ rlwimi r7, r0, 1, 0x1e, 0x1e -/* 8035D344 98 C5 80 00 */ stb r6, -0x8000(r5) -/* 8035D348 90 E5 80 00 */ stw r7, -0x8000(r5) -lbl_8035D34C: -/* 8035D34C 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 8035D350 39 40 00 00 */ li r10, 0 -/* 8035D354 40 82 00 18 */ bne lbl_8035D36C -/* 8035D358 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035D35C 80 05 01 DC */ lwz r0, 0x1dc(r5) -/* 8035D360 54 00 07 7E */ clrlwi r0, r0, 0x1d -/* 8035D364 28 00 00 03 */ cmplwi r0, 3 -/* 8035D368 40 82 00 34 */ bne lbl_8035D39C -lbl_8035D36C: -/* 8035D36C 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035D370 80 C5 01 DC */ lwz r6, 0x1dc(r5) -/* 8035D374 54 C0 D7 FE */ rlwinm r0, r6, 0x1a, 0x1f, 0x1f -/* 8035D378 28 00 00 01 */ cmplwi r0, 1 -/* 8035D37C 40 82 00 20 */ bne lbl_8035D39C -/* 8035D380 38 00 00 61 */ li r0, 0x61 -/* 8035D384 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D388 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D38C 38 00 00 00 */ li r0, 0 -/* 8035D390 50 06 36 72 */ rlwimi r6, r0, 6, 0x19, 0x19 -/* 8035D394 90 C5 80 00 */ stw r6, -0x8000(r5) -/* 8035D398 39 40 00 01 */ li r10, 1 -lbl_8035D39C: -/* 8035D39C 39 00 00 61 */ li r8, 0x61 -/* 8035D3A0 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035D3A4 3C E0 CC 01 */ lis r7, 0xCC01 /* 0xCC008000@ha */ -/* 8035D3A8 99 07 80 00 */ stb r8, 0x8000(r7) /* 0xCC008000@l */ -/* 8035D3AC 39 20 00 00 */ li r9, 0 -/* 8035D3B0 50 69 DA FE */ rlwimi r9, r3, 0x1b, 0xb, 0x1f -/* 8035D3B4 80 A6 01 E0 */ lwz r5, 0x1e0(r6) -/* 8035D3B8 38 00 00 4B */ li r0, 0x4b -/* 8035D3BC 50 09 C0 0E */ rlwimi r9, r0, 0x18, 0, 7 -/* 8035D3C0 90 A7 80 00 */ stw r5, -0x8000(r7) -/* 8035D3C4 54 84 06 3F */ clrlwi. r4, r4, 0x18 -/* 8035D3C8 38 60 00 01 */ li r3, 1 -/* 8035D3CC 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D3D0 38 00 00 52 */ li r0, 0x52 -/* 8035D3D4 80 A6 01 E4 */ lwz r5, 0x1e4(r6) -/* 8035D3D8 90 A7 80 00 */ stw r5, -0x8000(r7) -/* 8035D3DC 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D3E0 80 A6 01 E8 */ lwz r5, 0x1e8(r6) -/* 8035D3E4 90 A7 80 00 */ stw r5, -0x8000(r7) -/* 8035D3E8 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D3EC 91 27 80 00 */ stw r9, -0x8000(r7) -/* 8035D3F0 80 A6 01 EC */ lwz r5, 0x1ec(r6) -/* 8035D3F4 50 85 5D 28 */ rlwimi r5, r4, 0xb, 0x14, 0x14 -/* 8035D3F8 90 A6 01 EC */ stw r5, 0x1ec(r6) -/* 8035D3FC 80 86 01 EC */ lwz r4, 0x1ec(r6) -/* 8035D400 50 64 74 62 */ rlwimi r4, r3, 0xe, 0x11, 0x11 -/* 8035D404 90 86 01 EC */ stw r4, 0x1ec(r6) -/* 8035D408 80 66 01 EC */ lwz r3, 0x1ec(r6) -/* 8035D40C 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035D410 90 66 01 EC */ stw r3, 0x1ec(r6) -/* 8035D414 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D418 80 06 01 EC */ lwz r0, 0x1ec(r6) -/* 8035D41C 90 07 80 00 */ stw r0, -0x8000(r7) -/* 8035D420 41 82 00 1C */ beq lbl_8035D43C -/* 8035D424 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D428 80 06 01 D8 */ lwz r0, 0x1d8(r6) -/* 8035D42C 90 07 80 00 */ stw r0, -0x8000(r7) -/* 8035D430 99 07 80 00 */ stb r8, -0x8000(r7) -/* 8035D434 80 06 01 D0 */ lwz r0, 0x1d0(r6) -/* 8035D438 90 07 80 00 */ stw r0, -0x8000(r7) -lbl_8035D43C: -/* 8035D43C 55 40 06 3F */ clrlwi. r0, r10, 0x18 -/* 8035D440 41 82 00 1C */ beq lbl_8035D45C -/* 8035D444 38 00 00 61 */ li r0, 0x61 -/* 8035D448 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D44C 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035D450 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035D454 80 03 01 DC */ lwz r0, 0x1dc(r3) -/* 8035D458 90 04 80 00 */ stw r0, -0x8000(r4) -lbl_8035D45C: -/* 8035D45C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D460 38 00 00 00 */ li r0, 0 -/* 8035D464 B0 03 00 02 */ sth r0, 2(r3) -/* 8035D468 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXCopyTex.s b/asm/dolphin/gx/GXFrameBuf/GXCopyTex.s deleted file mode 100644 index da32dc487e..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXCopyTex.s +++ /dev/null @@ -1,107 +0,0 @@ -lbl_8035D46C: -/* 8035D46C 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 8035D470 41 82 00 44 */ beq lbl_8035D4B4 -/* 8035D474 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035D478 38 00 00 01 */ li r0, 1 -/* 8035D47C 38 C0 00 61 */ li r6, 0x61 -/* 8035D480 81 07 01 D8 */ lwz r8, 0x1d8(r7) -/* 8035D484 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D488 50 08 07 FE */ rlwimi r8, r0, 0, 0x1f, 0x1f -/* 8035D48C 38 00 00 07 */ li r0, 7 -/* 8035D490 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D494 50 08 0F 3C */ rlwimi r8, r0, 1, 0x1c, 0x1e -/* 8035D498 91 05 80 00 */ stw r8, -0x8000(r5) -/* 8035D49C 38 00 00 00 */ li r0, 0 -/* 8035D4A0 80 E7 01 D0 */ lwz r7, 0x1d0(r7) -/* 8035D4A4 50 07 07 FE */ rlwimi r7, r0, 0, 0x1f, 0x1f -/* 8035D4A8 50 07 0F BC */ rlwimi r7, r0, 1, 0x1e, 0x1e -/* 8035D4AC 98 C5 80 00 */ stb r6, -0x8000(r5) -/* 8035D4B0 90 E5 80 00 */ stw r7, -0x8000(r5) -lbl_8035D4B4: -/* 8035D4B4 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035D4B8 38 00 00 00 */ li r0, 0 -/* 8035D4BC 88 A6 02 00 */ lbz r5, 0x200(r6) -/* 8035D4C0 80 E6 01 DC */ lwz r7, 0x1dc(r6) -/* 8035D4C4 28 05 00 00 */ cmplwi r5, 0 -/* 8035D4C8 41 82 00 1C */ beq lbl_8035D4E4 -/* 8035D4CC 54 E5 07 7E */ clrlwi r5, r7, 0x1d -/* 8035D4D0 28 05 00 03 */ cmplwi r5, 3 -/* 8035D4D4 41 82 00 10 */ beq lbl_8035D4E4 -/* 8035D4D8 38 00 00 03 */ li r0, 3 -/* 8035D4DC 50 07 07 7E */ rlwimi r7, r0, 0, 0x1d, 0x1f -/* 8035D4E0 38 00 00 01 */ li r0, 1 -lbl_8035D4E4: -/* 8035D4E4 54 85 06 3F */ clrlwi. r5, r4, 0x18 -/* 8035D4E8 40 82 00 10 */ bne lbl_8035D4F8 -/* 8035D4EC 54 E5 07 7E */ clrlwi r5, r7, 0x1d -/* 8035D4F0 28 05 00 03 */ cmplwi r5, 3 -/* 8035D4F4 40 82 00 1C */ bne lbl_8035D510 -lbl_8035D4F8: -/* 8035D4F8 54 E5 D7 FE */ rlwinm r5, r7, 0x1a, 0x1f, 0x1f -/* 8035D4FC 28 05 00 01 */ cmplwi r5, 1 -/* 8035D500 40 82 00 10 */ bne lbl_8035D510 -/* 8035D504 38 00 00 00 */ li r0, 0 -/* 8035D508 50 07 36 72 */ rlwimi r7, r0, 6, 0x19, 0x19 -/* 8035D50C 38 00 00 01 */ li r0, 1 -lbl_8035D510: -/* 8035D510 54 05 06 3F */ clrlwi. r5, r0, 0x18 -/* 8035D514 41 82 00 14 */ beq lbl_8035D528 -/* 8035D518 38 C0 00 61 */ li r6, 0x61 -/* 8035D51C 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D520 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D524 90 E5 80 00 */ stw r7, -0x8000(r5) -lbl_8035D528: -/* 8035D528 39 20 00 61 */ li r9, 0x61 -/* 8035D52C 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035D530 3D 00 CC 01 */ lis r8, 0xCC01 /* 0xCC008000@ha */ -/* 8035D534 99 28 80 00 */ stb r9, 0x8000(r8) /* 0xCC008000@l */ -/* 8035D538 54 85 06 3F */ clrlwi. r5, r4, 0x18 -/* 8035D53C 39 40 00 00 */ li r10, 0 -/* 8035D540 80 87 01 F0 */ lwz r4, 0x1f0(r7) -/* 8035D544 50 6A DA FE */ rlwimi r10, r3, 0x1b, 0xb, 0x1f -/* 8035D548 38 60 00 4B */ li r3, 0x4b -/* 8035D54C 90 88 80 00 */ stw r4, -0x8000(r8) -/* 8035D550 50 6A C0 0E */ rlwimi r10, r3, 0x18, 0, 7 -/* 8035D554 38 80 00 00 */ li r4, 0 -/* 8035D558 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D55C 38 60 00 52 */ li r3, 0x52 -/* 8035D560 80 C7 01 F4 */ lwz r6, 0x1f4(r7) -/* 8035D564 90 C8 80 00 */ stw r6, -0x8000(r8) -/* 8035D568 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D56C 80 C7 01 F8 */ lwz r6, 0x1f8(r7) -/* 8035D570 90 C8 80 00 */ stw r6, -0x8000(r8) -/* 8035D574 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D578 91 48 80 00 */ stw r10, -0x8000(r8) -/* 8035D57C 80 C7 01 FC */ lwz r6, 0x1fc(r7) -/* 8035D580 50 A6 5D 28 */ rlwimi r6, r5, 0xb, 0x14, 0x14 -/* 8035D584 90 C7 01 FC */ stw r6, 0x1fc(r7) -/* 8035D588 80 A7 01 FC */ lwz r5, 0x1fc(r7) -/* 8035D58C 50 85 74 62 */ rlwimi r5, r4, 0xe, 0x11, 0x11 -/* 8035D590 90 A7 01 FC */ stw r5, 0x1fc(r7) -/* 8035D594 80 87 01 FC */ lwz r4, 0x1fc(r7) -/* 8035D598 50 64 C0 0E */ rlwimi r4, r3, 0x18, 0, 7 -/* 8035D59C 90 87 01 FC */ stw r4, 0x1fc(r7) -/* 8035D5A0 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D5A4 80 67 01 FC */ lwz r3, 0x1fc(r7) -/* 8035D5A8 90 68 80 00 */ stw r3, -0x8000(r8) -/* 8035D5AC 41 82 00 1C */ beq lbl_8035D5C8 -/* 8035D5B0 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D5B4 80 67 01 D8 */ lwz r3, 0x1d8(r7) -/* 8035D5B8 90 68 80 00 */ stw r3, -0x8000(r8) -/* 8035D5BC 99 28 80 00 */ stb r9, -0x8000(r8) -/* 8035D5C0 80 67 01 D0 */ lwz r3, 0x1d0(r7) -/* 8035D5C4 90 68 80 00 */ stw r3, -0x8000(r8) -lbl_8035D5C8: -/* 8035D5C8 54 00 06 3F */ clrlwi. r0, r0, 0x18 -/* 8035D5CC 41 82 00 1C */ beq lbl_8035D5E8 -/* 8035D5D0 38 00 00 61 */ li r0, 0x61 -/* 8035D5D4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D5D8 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035D5DC 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035D5E0 80 03 01 DC */ lwz r0, 0x1dc(r3) -/* 8035D5E4 90 04 80 00 */ stw r0, -0x8000(r4) -lbl_8035D5E8: -/* 8035D5E8 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D5EC 38 00 00 00 */ li r0, 0 -/* 8035D5F0 B0 03 00 02 */ sth r0, 2(r3) -/* 8035D5F4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s b/asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s deleted file mode 100644 index 09adbc8b0a..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8035CCDC: -/* 8035CCDC 7C 08 02 A6 */ mflr r0 -/* 8035CCE0 90 01 00 04 */ stw r0, 4(r1) -/* 8035CCE4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8035CCE8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035CCEC 7C 7F 1B 78 */ mr r31, r3 -/* 8035CCF0 C0 02 CB A8 */ lfs f0, lit_179(r2) -/* 8035CCF4 EC 20 08 24 */ fdivs f1, f0, f1 -/* 8035CCF8 48 00 53 B5 */ bl __cvt_fp2unsigned -/* 8035CCFC 57 E5 04 3E */ clrlwi r5, r31, 0x10 -/* 8035CD00 38 05 FF FF */ addi r0, r5, -1 -/* 8035CD04 54 64 05 FE */ clrlwi r4, r3, 0x17 -/* 8035CD08 54 00 40 2E */ slwi r0, r0, 8 -/* 8035CD0C 7C 60 23 96 */ divwu r3, r0, r4 -/* 8035CD10 28 04 00 80 */ cmplwi r4, 0x80 -/* 8035CD14 38 63 00 01 */ addi r3, r3, 1 -/* 8035CD18 40 81 00 30 */ ble lbl_8035CD48 -/* 8035CD1C 28 04 01 00 */ cmplwi r4, 0x100 -/* 8035CD20 40 80 00 28 */ bge lbl_8035CD48 -/* 8035CD24 48 00 00 08 */ b lbl_8035CD2C -lbl_8035CD28: -/* 8035CD28 54 84 F8 7E */ srwi r4, r4, 1 -lbl_8035CD2C: -/* 8035CD2C 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 8035CD30 41 82 FF F8 */ beq lbl_8035CD28 -/* 8035CD34 7C 05 23 96 */ divwu r0, r5, r4 -/* 8035CD38 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8035CD3C 7C 00 28 51 */ subf. r0, r0, r5 -/* 8035CD40 40 82 00 08 */ bne lbl_8035CD48 -/* 8035CD44 38 63 00 01 */ addi r3, r3, 1 -lbl_8035CD48: -/* 8035CD48 28 03 04 00 */ cmplwi r3, 0x400 -/* 8035CD4C 40 81 00 08 */ ble lbl_8035CD54 -/* 8035CD50 38 60 04 00 */ li r3, 0x400 -lbl_8035CD54: -/* 8035CD54 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035CD58 54 63 04 3E */ clrlwi r3, r3, 0x10 -/* 8035CD5C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8035CD60 38 21 00 20 */ addi r1, r1, 0x20 -/* 8035CD64 7C 08 03 A6 */ mtlr r0 -/* 8035CD68 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s b/asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s deleted file mode 100644 index 4c03c72c2a..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s +++ /dev/null @@ -1,159 +0,0 @@ -lbl_8035CD6C: -/* 8035CD6C 7C 08 02 A6 */ mflr r0 -/* 8035CD70 90 01 00 04 */ stw r0, 4(r1) -/* 8035CD74 3C 00 43 30 */ lis r0, 0x4330 -/* 8035CD78 94 21 FF 88 */ stwu r1, -0x78(r1) -/* 8035CD7C DB E1 00 70 */ stfd f31, 0x70(r1) -/* 8035CD80 DB C1 00 68 */ stfd f30, 0x68(r1) -/* 8035CD84 DB A1 00 60 */ stfd f29, 0x60(r1) -/* 8035CD88 DB 81 00 58 */ stfd f28, 0x58(r1) -/* 8035CD8C BF 21 00 3C */ stmw r25, 0x3c(r1) -/* 8035CD90 54 9C 04 3E */ clrlwi r28, r4, 0x10 -/* 8035CD94 54 7F 04 3E */ clrlwi r31, r3, 0x10 -/* 8035CD98 93 81 00 34 */ stw r28, 0x34(r1) -/* 8035CD9C 7C 7B 1B 78 */ mr r27, r3 -/* 8035CDA0 7C 99 23 78 */ mr r25, r4 -/* 8035CDA4 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8035CDA8 90 01 00 30 */ stw r0, 0x30(r1) -/* 8035CDAC 90 01 00 28 */ stw r0, 0x28(r1) -/* 8035CDB0 C8 62 CB B0 */ lfd f3, lit_234(r2) -/* 8035CDB4 C8 41 00 30 */ lfd f2, 0x30(r1) -/* 8035CDB8 C8 21 00 28 */ lfd f1, 0x28(r1) -/* 8035CDBC EC 42 18 28 */ fsubs f2, f2, f3 -/* 8035CDC0 C0 02 CB A8 */ lfs f0, lit_179(r2) -/* 8035CDC4 EC 21 18 28 */ fsubs f1, f1, f3 -/* 8035CDC8 EC 42 08 24 */ fdivs f2, f2, f1 -/* 8035CDCC EC 20 10 24 */ fdivs f1, f0, f2 -/* 8035CDD0 FF 80 10 90 */ fmr f28, f2 -/* 8035CDD4 48 00 52 D9 */ bl __cvt_fp2unsigned -/* 8035CDD8 38 1F FF FF */ addi r0, r31, -1 -/* 8035CDDC 54 64 05 FE */ clrlwi r4, r3, 0x17 -/* 8035CDE0 54 1E 40 2E */ slwi r30, r0, 8 -/* 8035CDE4 7C 7E 23 96 */ divwu r3, r30, r4 -/* 8035CDE8 28 04 00 80 */ cmplwi r4, 0x80 -/* 8035CDEC 38 63 00 01 */ addi r3, r3, 1 -/* 8035CDF0 40 81 00 30 */ ble lbl_8035CE20 -/* 8035CDF4 28 04 01 00 */ cmplwi r4, 0x100 -/* 8035CDF8 40 80 00 28 */ bge lbl_8035CE20 -/* 8035CDFC 48 00 00 08 */ b lbl_8035CE04 -lbl_8035CE00: -/* 8035CE00 54 84 F8 7E */ srwi r4, r4, 1 -lbl_8035CE04: -/* 8035CE04 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 8035CE08 41 82 FF F8 */ beq lbl_8035CE00 -/* 8035CE0C 7C 1F 23 96 */ divwu r0, r31, r4 -/* 8035CE10 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8035CE14 7C 00 F8 51 */ subf. r0, r0, r31 -/* 8035CE18 40 82 00 08 */ bne lbl_8035CE20 -/* 8035CE1C 38 63 00 01 */ addi r3, r3, 1 -lbl_8035CE20: -/* 8035CE20 28 03 04 00 */ cmplwi r3, 0x400 -/* 8035CE24 40 81 00 08 */ ble lbl_8035CE2C -/* 8035CE28 38 60 04 00 */ li r3, 0x400 -lbl_8035CE2C: -/* 8035CE2C CB E2 CB B0 */ lfd f31, lit_234(r2) -/* 8035CE30 7C 60 1B 78 */ mr r0, r3 -/* 8035CE34 C3 C2 CB A8 */ lfs f30, lit_179(r2) -/* 8035CE38 57 3D 04 3E */ clrlwi r29, r25, 0x10 -/* 8035CE3C 57 7A 04 3E */ clrlwi r26, r27, 0x10 -/* 8035CE40 3F 20 43 30 */ lis r25, 0x4330 -/* 8035CE44 48 00 00 88 */ b lbl_8035CECC -lbl_8035CE48: -/* 8035CE48 3B 9C FF FF */ addi r28, r28, -1 -/* 8035CE4C 93 41 00 34 */ stw r26, 0x34(r1) -/* 8035CE50 93 81 00 2C */ stw r28, 0x2c(r1) -/* 8035CE54 93 21 00 28 */ stw r25, 0x28(r1) -/* 8035CE58 93 21 00 30 */ stw r25, 0x30(r1) -/* 8035CE5C C8 21 00 28 */ lfd f1, 0x28(r1) -/* 8035CE60 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8035CE64 EC 21 F8 28 */ fsubs f1, f1, f31 -/* 8035CE68 EC 00 F8 28 */ fsubs f0, f0, f31 -/* 8035CE6C EC 01 00 24 */ fdivs f0, f1, f0 -/* 8035CE70 EC 3E 00 24 */ fdivs f1, f30, f0 -/* 8035CE74 FF 80 00 90 */ fmr f28, f0 -/* 8035CE78 48 00 52 35 */ bl __cvt_fp2unsigned -/* 8035CE7C 54 64 05 FE */ clrlwi r4, r3, 0x17 -/* 8035CE80 7C 7E 23 96 */ divwu r3, r30, r4 -/* 8035CE84 28 04 00 80 */ cmplwi r4, 0x80 -/* 8035CE88 38 63 00 01 */ addi r3, r3, 1 -/* 8035CE8C 40 81 00 30 */ ble lbl_8035CEBC -/* 8035CE90 28 04 01 00 */ cmplwi r4, 0x100 -/* 8035CE94 40 80 00 28 */ bge lbl_8035CEBC -/* 8035CE98 48 00 00 08 */ b lbl_8035CEA0 -lbl_8035CE9C: -/* 8035CE9C 54 84 F8 7E */ srwi r4, r4, 1 -lbl_8035CEA0: -/* 8035CEA0 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 8035CEA4 41 82 FF F8 */ beq lbl_8035CE9C -/* 8035CEA8 7C 1F 23 96 */ divwu r0, r31, r4 -/* 8035CEAC 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8035CEB0 7C 00 F8 51 */ subf. r0, r0, r31 -/* 8035CEB4 40 82 00 08 */ bne lbl_8035CEBC -/* 8035CEB8 38 63 00 01 */ addi r3, r3, 1 -lbl_8035CEBC: -/* 8035CEBC 28 03 04 00 */ cmplwi r3, 0x400 -/* 8035CEC0 40 81 00 08 */ ble lbl_8035CEC8 -/* 8035CEC4 38 60 04 00 */ li r3, 0x400 -lbl_8035CEC8: -/* 8035CEC8 7C 60 1B 78 */ mr r0, r3 -lbl_8035CECC: -/* 8035CECC 7C 00 E8 40 */ cmplw r0, r29 -/* 8035CED0 41 81 FF 78 */ bgt lbl_8035CE48 -/* 8035CED4 FF A0 E0 90 */ fmr f29, f28 -/* 8035CED8 CB C2 CB B0 */ lfd f30, lit_234(r2) -/* 8035CEDC C3 E2 CB A8 */ lfs f31, lit_179(r2) -/* 8035CEE0 57 7B 04 3E */ clrlwi r27, r27, 0x10 -/* 8035CEE4 3F 40 43 30 */ lis r26, 0x4330 -/* 8035CEE8 48 00 00 8C */ b lbl_8035CF74 -lbl_8035CEEC: -/* 8035CEEC 3B 9C 00 01 */ addi r28, r28, 1 -/* 8035CEF0 93 61 00 34 */ stw r27, 0x34(r1) -/* 8035CEF4 FF A0 E0 90 */ fmr f29, f28 -/* 8035CEF8 93 81 00 2C */ stw r28, 0x2c(r1) -/* 8035CEFC 93 41 00 28 */ stw r26, 0x28(r1) -/* 8035CF00 93 41 00 30 */ stw r26, 0x30(r1) -/* 8035CF04 C8 21 00 28 */ lfd f1, 0x28(r1) -/* 8035CF08 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8035CF0C EC 21 F0 28 */ fsubs f1, f1, f30 -/* 8035CF10 EC 00 F0 28 */ fsubs f0, f0, f30 -/* 8035CF14 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8035CF18 EC 3F 00 24 */ fdivs f1, f31, f0 -/* 8035CF1C FF 80 00 90 */ fmr f28, f0 -/* 8035CF20 48 00 51 8D */ bl __cvt_fp2unsigned -/* 8035CF24 54 64 05 FE */ clrlwi r4, r3, 0x17 -/* 8035CF28 7C 7E 23 96 */ divwu r3, r30, r4 -/* 8035CF2C 28 04 00 80 */ cmplwi r4, 0x80 -/* 8035CF30 38 63 00 01 */ addi r3, r3, 1 -/* 8035CF34 40 81 00 30 */ ble lbl_8035CF64 -/* 8035CF38 28 04 01 00 */ cmplwi r4, 0x100 -/* 8035CF3C 40 80 00 28 */ bge lbl_8035CF64 -/* 8035CF40 48 00 00 08 */ b lbl_8035CF48 -lbl_8035CF44: -/* 8035CF44 54 84 F8 7E */ srwi r4, r4, 1 -lbl_8035CF48: -/* 8035CF48 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 8035CF4C 41 82 FF F8 */ beq lbl_8035CF44 -/* 8035CF50 7C 1F 23 96 */ divwu r0, r31, r4 -/* 8035CF54 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8035CF58 7C 00 F8 51 */ subf. r0, r0, r31 -/* 8035CF5C 40 82 00 08 */ bne lbl_8035CF64 -/* 8035CF60 38 63 00 01 */ addi r3, r3, 1 -lbl_8035CF64: -/* 8035CF64 28 03 04 00 */ cmplwi r3, 0x400 -/* 8035CF68 40 81 00 08 */ ble lbl_8035CF70 -/* 8035CF6C 38 60 04 00 */ li r3, 0x400 -lbl_8035CF70: -/* 8035CF70 7C 60 1B 78 */ mr r0, r3 -lbl_8035CF74: -/* 8035CF74 7C 00 E8 40 */ cmplw r0, r29 -/* 8035CF78 41 80 FF 74 */ blt lbl_8035CEEC -/* 8035CF7C BB 21 00 3C */ lmw r25, 0x3c(r1) -/* 8035CF80 FC 20 E8 90 */ fmr f1, f29 -/* 8035CF84 80 01 00 7C */ lwz r0, 0x7c(r1) -/* 8035CF88 CB E1 00 70 */ lfd f31, 0x70(r1) -/* 8035CF8C CB C1 00 68 */ lfd f30, 0x68(r1) -/* 8035CF90 CB A1 00 60 */ lfd f29, 0x60(r1) -/* 8035CF94 CB 81 00 58 */ lfd f28, 0x58(r1) -/* 8035CF98 38 21 00 78 */ addi r1, r1, 0x78 -/* 8035CF9C 7C 08 03 A6 */ mtlr r0 -/* 8035CFA0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s b/asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s deleted file mode 100644 index bd4c4c158f..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s +++ /dev/null @@ -1,135 +0,0 @@ -lbl_8035D0E8: -/* 8035D0E8 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 8035D0EC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8035D0F0 BF 01 00 28 */ stmw r24, 0x28(r1) -/* 8035D0F4 41 82 00 F8 */ beq lbl_8035D1EC -/* 8035D0F8 88 04 00 06 */ lbz r0, 6(r4) -/* 8035D0FC 38 E0 00 00 */ li r7, 0 -/* 8035D100 89 04 00 00 */ lbz r8, 0(r4) -/* 8035D104 38 60 00 00 */ li r3, 0 -/* 8035D108 50 07 07 3E */ rlwimi r7, r0, 0, 0x1c, 0x1f -/* 8035D10C 89 24 00 0C */ lbz r9, 0xc(r4) -/* 8035D110 51 03 07 3E */ rlwimi r3, r8, 0, 0x1c, 0x1f -/* 8035D114 39 00 00 00 */ li r8, 0 -/* 8035D118 88 04 00 12 */ lbz r0, 0x12(r4) -/* 8035D11C 51 28 07 3E */ rlwimi r8, r9, 0, 0x1c, 0x1f -/* 8035D120 39 20 00 00 */ li r9, 0 -/* 8035D124 89 44 00 01 */ lbz r10, 1(r4) -/* 8035D128 50 09 07 3E */ rlwimi r9, r0, 0, 0x1c, 0x1f -/* 8035D12C 88 04 00 13 */ lbz r0, 0x13(r4) -/* 8035D130 89 64 00 0D */ lbz r11, 0xd(r4) -/* 8035D134 51 43 26 36 */ rlwimi r3, r10, 4, 0x18, 0x1b -/* 8035D138 8B 64 00 02 */ lbz r27, 2(r4) -/* 8035D13C 50 09 26 36 */ rlwimi r9, r0, 4, 0x18, 0x1b -/* 8035D140 8B 24 00 07 */ lbz r25, 7(r4) -/* 8035D144 89 44 00 14 */ lbz r10, 0x14(r4) -/* 8035D148 51 68 26 36 */ rlwimi r8, r11, 4, 0x18, 0x1b -/* 8035D14C 89 84 00 0E */ lbz r12, 0xe(r4) -/* 8035D150 53 63 45 2E */ rlwimi r3, r27, 8, 0x14, 0x17 -/* 8035D154 8B 84 00 03 */ lbz r28, 3(r4) -/* 8035D158 51 88 45 2E */ rlwimi r8, r12, 8, 0x14, 0x17 -/* 8035D15C 8B A4 00 04 */ lbz r29, 4(r4) -/* 8035D160 53 83 64 26 */ rlwimi r3, r28, 0xc, 0x10, 0x13 -/* 8035D164 88 04 00 05 */ lbz r0, 5(r4) -/* 8035D168 53 A3 83 1E */ rlwimi r3, r29, 0x10, 0xc, 0xf -/* 8035D16C 8B 04 00 08 */ lbz r24, 8(r4) -/* 8035D170 53 27 26 36 */ rlwimi r7, r25, 4, 0x18, 0x1b -/* 8035D174 8B 24 00 0F */ lbz r25, 0xf(r4) -/* 8035D178 50 03 A2 16 */ rlwimi r3, r0, 0x14, 8, 0xb -/* 8035D17C 8B C4 00 09 */ lbz r30, 9(r4) -/* 8035D180 38 00 00 01 */ li r0, 1 -/* 8035D184 8B E4 00 0A */ lbz r31, 0xa(r4) -/* 8035D188 51 49 45 2E */ rlwimi r9, r10, 8, 0x14, 0x17 -/* 8035D18C 8B 44 00 15 */ lbz r26, 0x15(r4) -/* 8035D190 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035D194 89 84 00 0B */ lbz r12, 0xb(r4) -/* 8035D198 53 07 45 2E */ rlwimi r7, r24, 8, 0x14, 0x17 -/* 8035D19C 89 64 00 10 */ lbz r11, 0x10(r4) -/* 8035D1A0 53 C7 64 26 */ rlwimi r7, r30, 0xc, 0x10, 0x13 -/* 8035D1A4 89 44 00 11 */ lbz r10, 0x11(r4) -/* 8035D1A8 8B 64 00 16 */ lbz r27, 0x16(r4) -/* 8035D1AC 53 E7 83 1E */ rlwimi r7, r31, 0x10, 0xc, 0xf -/* 8035D1B0 53 28 64 26 */ rlwimi r8, r25, 0xc, 0x10, 0x13 -/* 8035D1B4 88 84 00 17 */ lbz r4, 0x17(r4) -/* 8035D1B8 51 68 83 1E */ rlwimi r8, r11, 0x10, 0xc, 0xf -/* 8035D1BC 53 49 64 26 */ rlwimi r9, r26, 0xc, 0x10, 0x13 -/* 8035D1C0 53 69 83 1E */ rlwimi r9, r27, 0x10, 0xc, 0xf -/* 8035D1C4 38 00 00 02 */ li r0, 2 -/* 8035D1C8 51 87 A2 16 */ rlwimi r7, r12, 0x14, 8, 0xb -/* 8035D1CC 50 07 C0 0E */ rlwimi r7, r0, 0x18, 0, 7 -/* 8035D1D0 38 00 00 03 */ li r0, 3 -/* 8035D1D4 51 48 A2 16 */ rlwimi r8, r10, 0x14, 8, 0xb -/* 8035D1D8 50 08 C0 0E */ rlwimi r8, r0, 0x18, 0, 7 -/* 8035D1DC 38 00 00 04 */ li r0, 4 -/* 8035D1E0 50 89 A2 16 */ rlwimi r9, r4, 0x14, 8, 0xb -/* 8035D1E4 50 09 C0 0E */ rlwimi r9, r0, 0x18, 0, 7 -/* 8035D1E8 48 00 00 24 */ b lbl_8035D20C -lbl_8035D1EC: -/* 8035D1EC 3C 60 01 66 */ lis r3, 0x0166 /* 0x01666666@ha */ -/* 8035D1F0 3C E0 02 66 */ lis r7, 0x0266 /* 0x02666666@ha */ -/* 8035D1F4 3D 00 03 66 */ lis r8, 0x0366 /* 0x03666666@ha */ -/* 8035D1F8 3C 80 04 66 */ lis r4, 0x0466 /* 0x04666666@ha */ -/* 8035D1FC 38 63 66 66 */ addi r3, r3, 0x6666 /* 0x01666666@l */ -/* 8035D200 38 E7 66 66 */ addi r7, r7, 0x6666 /* 0x02666666@l */ -/* 8035D204 39 08 66 66 */ addi r8, r8, 0x6666 /* 0x03666666@l */ -/* 8035D208 39 24 66 66 */ addi r9, r4, 0x6666 /* 0x04666666@l */ -lbl_8035D20C: -/* 8035D20C 39 40 00 61 */ li r10, 0x61 -/* 8035D210 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035D214 99 44 80 00 */ stb r10, 0x8000(r4) /* 0xCC008000@l */ -/* 8035D218 54 A0 06 3F */ clrlwi. r0, r5, 0x18 -/* 8035D21C 38 00 00 53 */ li r0, 0x53 -/* 8035D220 90 64 80 00 */ stw r3, -0x8000(r4) -/* 8035D224 38 60 00 00 */ li r3, 0 -/* 8035D228 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035D22C 99 44 80 00 */ stb r10, -0x8000(r4) -/* 8035D230 38 00 00 54 */ li r0, 0x54 -/* 8035D234 38 A0 00 00 */ li r5, 0 -/* 8035D238 90 E4 80 00 */ stw r7, -0x8000(r4) -/* 8035D23C 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7 -/* 8035D240 39 63 00 00 */ addi r11, r3, 0 -/* 8035D244 99 44 80 00 */ stb r10, -0x8000(r4) -/* 8035D248 38 05 00 00 */ addi r0, r5, 0 -/* 8035D24C 91 04 80 00 */ stw r8, -0x8000(r4) -/* 8035D250 99 44 80 00 */ stb r10, -0x8000(r4) -/* 8035D254 91 24 80 00 */ stw r9, -0x8000(r4) -/* 8035D258 41 82 00 40 */ beq lbl_8035D298 -/* 8035D25C 88 86 00 00 */ lbz r4, 0(r6) -/* 8035D260 88 66 00 04 */ lbz r3, 4(r6) -/* 8035D264 50 8B 06 BE */ rlwimi r11, r4, 0, 0x1a, 0x1f -/* 8035D268 88 86 00 01 */ lbz r4, 1(r6) -/* 8035D26C 50 60 06 BE */ rlwimi r0, r3, 0, 0x1a, 0x1f -/* 8035D270 88 E6 00 02 */ lbz r7, 2(r6) -/* 8035D274 50 8B 35 32 */ rlwimi r11, r4, 6, 0x14, 0x19 -/* 8035D278 88 86 00 05 */ lbz r4, 5(r6) -/* 8035D27C 88 A6 00 03 */ lbz r5, 3(r6) -/* 8035D280 50 EB 63 A6 */ rlwimi r11, r7, 0xc, 0xe, 0x13 -/* 8035D284 88 66 00 06 */ lbz r3, 6(r6) -/* 8035D288 50 80 35 32 */ rlwimi r0, r4, 6, 0x14, 0x19 -/* 8035D28C 50 AB 92 1A */ rlwimi r11, r5, 0x12, 8, 0xd -/* 8035D290 50 60 63 A6 */ rlwimi r0, r3, 0xc, 0xe, 0x13 -/* 8035D294 48 00 00 2C */ b lbl_8035D2C0 -lbl_8035D298: -/* 8035D298 38 80 00 00 */ li r4, 0 -/* 8035D29C 38 60 00 15 */ li r3, 0x15 -/* 8035D2A0 50 8B 06 BE */ rlwimi r11, r4, 0, 0x1a, 0x1f -/* 8035D2A4 50 8B 35 32 */ rlwimi r11, r4, 6, 0x14, 0x19 -/* 8035D2A8 50 60 06 BE */ rlwimi r0, r3, 0, 0x1a, 0x1f -/* 8035D2AC 50 6B 63 A6 */ rlwimi r11, r3, 0xc, 0xe, 0x13 -/* 8035D2B0 38 60 00 16 */ li r3, 0x16 -/* 8035D2B4 50 80 35 32 */ rlwimi r0, r4, 6, 0x14, 0x19 -/* 8035D2B8 50 80 63 A6 */ rlwimi r0, r4, 0xc, 0xe, 0x13 -/* 8035D2BC 50 6B 92 1A */ rlwimi r11, r3, 0x12, 8, 0xd -lbl_8035D2C0: -/* 8035D2C0 38 C0 00 61 */ li r6, 0x61 -/* 8035D2C4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D2C8 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035D2CC 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */ -/* 8035D2D0 38 80 00 00 */ li r4, 0 -/* 8035D2D4 91 65 80 00 */ stw r11, -0x8000(r5) -/* 8035D2D8 98 C5 80 00 */ stb r6, -0x8000(r5) -/* 8035D2DC 90 05 80 00 */ stw r0, -0x8000(r5) -/* 8035D2E0 B0 83 00 02 */ sth r4, 2(r3) -/* 8035D2E4 BB 01 00 28 */ lmw r24, 0x28(r1) -/* 8035D2E8 38 21 00 48 */ addi r1, r1, 0x48 -/* 8035D2EC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s b/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s deleted file mode 100644 index 9d6dca809f..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s +++ /dev/null @@ -1,56 +0,0 @@ -lbl_8035CFA4: -/* 8035CFA4 7C 08 02 A6 */ mflr r0 -/* 8035CFA8 90 01 00 04 */ stw r0, 4(r1) -/* 8035CFAC 94 21 FF F8 */ stwu r1, -8(r1) -/* 8035CFB0 C0 02 CB A8 */ lfs f0, lit_179(r2) -/* 8035CFB4 EC 20 08 24 */ fdivs f1, f0, f1 -/* 8035CFB8 48 00 50 F5 */ bl __cvt_fp2unsigned -/* 8035CFBC 54 67 05 FE */ clrlwi r7, r3, 0x17 -/* 8035CFC0 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035CFC4 38 00 00 61 */ li r0, 0x61 -/* 8035CFC8 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035CFCC 20 A7 01 00 */ subfic r5, r7, 0x100 -/* 8035CFD0 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035CFD4 30 05 FF FF */ addic r0, r5, -1 -/* 8035CFD8 7C A0 29 10 */ subfe r5, r0, r5 -/* 8035CFDC 38 C0 00 00 */ li r6, 0 -/* 8035CFE0 38 00 00 4E */ li r0, 0x4e -/* 8035CFE4 50 E6 05 FE */ rlwimi r6, r7, 0, 0x17, 0x1f -/* 8035CFE8 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7 -/* 8035CFEC 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035CFF0 38 00 00 00 */ li r0, 0 -/* 8035CFF4 28 07 00 80 */ cmplwi r7, 0x80 -/* 8035CFF8 B0 03 00 02 */ sth r0, 2(r3) -/* 8035CFFC 38 87 00 00 */ addi r4, r7, 0 -/* 8035D000 80 03 01 EC */ lwz r0, 0x1ec(r3) -/* 8035D004 50 A0 55 6A */ rlwimi r0, r5, 0xa, 0x15, 0x15 -/* 8035D008 90 03 01 EC */ stw r0, 0x1ec(r3) -/* 8035D00C 80 03 01 E4 */ lwz r0, 0x1e4(r3) -/* 8035D010 54 05 B5 BE */ rlwinm r5, r0, 0x16, 0x16, 0x1f -/* 8035D014 54 00 F3 AE */ rlwinm r0, r0, 0x1e, 0xe, 0x17 -/* 8035D018 7C 60 3B 96 */ divwu r3, r0, r7 -/* 8035D01C 38 A5 00 01 */ addi r5, r5, 1 -/* 8035D020 38 63 00 01 */ addi r3, r3, 1 -/* 8035D024 40 81 00 30 */ ble lbl_8035D054 -/* 8035D028 28 07 01 00 */ cmplwi r7, 0x100 -/* 8035D02C 40 80 00 28 */ bge lbl_8035D054 -/* 8035D030 48 00 00 08 */ b lbl_8035D038 -lbl_8035D034: -/* 8035D034 54 84 F8 7E */ srwi r4, r4, 1 -lbl_8035D038: -/* 8035D038 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 8035D03C 41 82 FF F8 */ beq lbl_8035D034 -/* 8035D040 7C 05 23 96 */ divwu r0, r5, r4 -/* 8035D044 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8035D048 7C 00 28 51 */ subf. r0, r0, r5 -/* 8035D04C 40 82 00 08 */ bne lbl_8035D054 -/* 8035D050 38 63 00 01 */ addi r3, r3, 1 -lbl_8035D054: -/* 8035D054 28 03 04 00 */ cmplwi r3, 0x400 -/* 8035D058 40 81 00 08 */ ble lbl_8035D060 -/* 8035D05C 38 60 04 00 */ li r3, 0x400 -lbl_8035D060: -/* 8035D060 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8035D064 38 21 00 08 */ addi r1, r1, 8 -/* 8035D068 7C 08 03 A6 */ mtlr r0 -/* 8035D06C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s b/asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s deleted file mode 100644 index a7646fd7c0..0000000000 --- a/asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s +++ /dev/null @@ -1,81 +0,0 @@ -lbl_8035CB30: -/* 8035CB30 7C 08 02 A6 */ mflr r0 -/* 8035CB34 2C 05 00 13 */ cmpwi r5, 0x13 -/* 8035CB38 90 01 00 04 */ stw r0, 4(r1) -/* 8035CB3C 38 00 00 00 */ li r0, 0 -/* 8035CB40 39 03 00 00 */ addi r8, r3, 0 -/* 8035CB44 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035CB48 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8035CB4C 54 BF 07 3E */ clrlwi r31, r5, 0x1c -/* 8035CB50 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8035CB54 3B C6 00 00 */ addi r30, r6, 0 -/* 8035CB58 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035CB5C 98 07 02 00 */ stb r0, 0x200(r7) -/* 8035CB60 38 E4 00 00 */ addi r7, r4, 0 -/* 8035CB64 40 82 00 08 */ bne lbl_8035CB6C -/* 8035CB68 3B E0 00 0B */ li r31, 0xb -lbl_8035CB6C: -/* 8035CB6C 2C 05 00 26 */ cmpwi r5, 0x26 -/* 8035CB70 41 82 00 1C */ beq lbl_8035CB8C -/* 8035CB74 40 80 00 30 */ bge lbl_8035CBA4 -/* 8035CB78 2C 05 00 04 */ cmpwi r5, 4 -/* 8035CB7C 40 80 00 28 */ bge lbl_8035CBA4 -/* 8035CB80 2C 05 00 00 */ cmpwi r5, 0 -/* 8035CB84 40 80 00 08 */ bge lbl_8035CB8C -/* 8035CB88 48 00 00 1C */ b lbl_8035CBA4 -lbl_8035CB8C: -/* 8035CB8C 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035CB90 38 00 00 03 */ li r0, 3 -/* 8035CB94 80 64 01 FC */ lwz r3, 0x1fc(r4) -/* 8035CB98 50 03 7B E0 */ rlwimi r3, r0, 0xf, 0xf, 0x10 -/* 8035CB9C 90 64 01 FC */ stw r3, 0x1fc(r4) -/* 8035CBA0 48 00 00 18 */ b lbl_8035CBB8 -lbl_8035CBA4: -/* 8035CBA4 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035CBA8 38 00 00 02 */ li r0, 2 -/* 8035CBAC 80 64 01 FC */ lwz r3, 0x1fc(r4) -/* 8035CBB0 50 03 7B E0 */ rlwimi r3, r0, 0xf, 0xf, 0x10 -/* 8035CBB4 90 64 01 FC */ stw r3, 0x1fc(r4) -lbl_8035CBB8: -/* 8035CBB8 54 A3 06 F6 */ rlwinm r3, r5, 0, 0x1b, 0x1b -/* 8035CBBC 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035CBC0 38 03 FF F0 */ addi r0, r3, -16 -/* 8035CBC4 7C 00 00 34 */ cntlzw r0, r0 -/* 8035CBC8 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f -/* 8035CBCC 98 04 02 00 */ stb r0, 0x200(r4) -/* 8035CBD0 38 65 00 00 */ addi r3, r5, 0 -/* 8035CBD4 38 A7 00 00 */ addi r5, r7, 0 -/* 8035CBD8 80 04 01 FC */ lwz r0, 0x1fc(r4) -/* 8035CBDC 53 E0 07 38 */ rlwimi r0, r31, 0, 0x1c, 0x1c -/* 8035CBE0 57 FF 07 7E */ clrlwi r31, r31, 0x1d -/* 8035CBE4 90 04 01 FC */ stw r0, 0x1fc(r4) -/* 8035CBE8 38 88 00 00 */ addi r4, r8, 0 -/* 8035CBEC 38 C1 00 1C */ addi r6, r1, 0x1c -/* 8035CBF0 38 E1 00 18 */ addi r7, r1, 0x18 -/* 8035CBF4 39 01 00 14 */ addi r8, r1, 0x14 -/* 8035CBF8 48 00 11 81 */ bl __GetImageTileCount -/* 8035CBFC 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035CC00 38 00 00 00 */ li r0, 0 -/* 8035CC04 38 60 00 4D */ li r3, 0x4d -/* 8035CC08 90 07 01 F8 */ stw r0, 0x1f8(r7) -/* 8035CC0C 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 8035CC10 80 81 00 14 */ lwz r4, 0x14(r1) -/* 8035CC14 80 C7 01 F8 */ lwz r6, 0x1f8(r7) -/* 8035CC18 7C 85 21 D6 */ mullw r4, r5, r4 -/* 8035CC1C 50 86 05 BE */ rlwimi r6, r4, 0, 0x16, 0x1f -/* 8035CC20 90 C7 01 F8 */ stw r6, 0x1f8(r7) -/* 8035CC24 80 87 01 F8 */ lwz r4, 0x1f8(r7) -/* 8035CC28 50 64 C0 0E */ rlwimi r4, r3, 0x18, 0, 7 -/* 8035CC2C 90 87 01 F8 */ stw r4, 0x1f8(r7) -/* 8035CC30 80 67 01 FC */ lwz r3, 0x1fc(r7) -/* 8035CC34 53 C3 4D AC */ rlwimi r3, r30, 9, 0x16, 0x16 -/* 8035CC38 90 67 01 FC */ stw r3, 0x1fc(r7) -/* 8035CC3C 80 07 01 FC */ lwz r0, 0x1fc(r7) -/* 8035CC40 53 E0 26 76 */ rlwimi r0, r31, 4, 0x19, 0x1b -/* 8035CC44 90 07 01 FC */ stw r0, 0x1fc(r7) -/* 8035CC48 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035CC4C 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8035CC50 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8035CC54 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035CC58 7C 08 03 A6 */ mtlr r0 -/* 8035CC5C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXInit/GXInit.s b/asm/dolphin/gx/GXInit/GXInit.s deleted file mode 100644 index 8245269a8a..0000000000 --- a/asm/dolphin/gx/GXInit/GXInit.s +++ /dev/null @@ -1,401 +0,0 @@ -lbl_80359670: -/* 80359670 7C 08 02 A6 */ mflr r0 -/* 80359674 90 01 00 04 */ stw r0, 4(r1) -/* 80359678 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 8035967C BF 21 00 1C */ stmw r25, 0x1c(r1) -/* 80359680 7C 7A 1B 78 */ mr r26, r3 -/* 80359684 7C 99 23 78 */ mr r25, r4 -/* 80359688 3C 80 80 45 */ lis r4, FifoObj@ha /* 0x8044CE00@ha */ -/* 8035968C 80 6D 84 F8 */ lwz r3, __GXVersion(r13) -/* 80359690 3B E4 CE 00 */ addi r31, r4, FifoObj@l /* 0x8044CE00@l */ -/* 80359694 4B FE 11 E1 */ bl OSRegisterVersion -/* 80359698 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035969C 38 00 00 00 */ li r0, 0 -/* 803596A0 3B 80 00 01 */ li r28, 1 -/* 803596A4 98 05 05 A8 */ stb r0, 0x5a8(r5) -/* 803596A8 38 60 00 01 */ li r3, 1 -/* 803596AC 38 80 00 00 */ li r4, 0 -/* 803596B0 9B 85 05 A9 */ stb r28, 0x5a9(r5) -/* 803596B4 9B 85 05 AA */ stb r28, 0x5aa(r5) -/* 803596B8 90 05 05 94 */ stw r0, 0x594(r5) -/* 803596BC 90 05 05 98 */ stw r0, 0x598(r5) -/* 803596C0 48 00 27 79 */ bl GXSetMisc -/* 803596C4 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC003000@ha */ -/* 803596C8 38 A4 30 00 */ addi r5, r4, 0x3000 /* 0xCC003000@l */ -/* 803596CC 90 8D 93 A4 */ stw r4, __cpReg(r13) -/* 803596D0 38 64 10 00 */ addi r3, r4, 0x1000 -/* 803596D4 38 04 40 00 */ addi r0, r4, 0x4000 -/* 803596D8 90 AD 93 A0 */ stw r5, __piReg(r13) -/* 803596DC 90 6D 93 A8 */ stw r3, __peReg(r13) -/* 803596E0 90 0D 93 AC */ stw r0, __memReg(r13) -/* 803596E4 48 00 15 49 */ bl __GXFifoInit -/* 803596E8 7F E3 FB 78 */ mr r3, r31 -/* 803596EC 7F 44 D3 78 */ mr r4, r26 -/* 803596F0 7F 25 CB 78 */ mr r5, r25 -/* 803596F4 48 00 0F E9 */ bl GXInitFifoBase -/* 803596F8 7F E3 FB 78 */ mr r3, r31 -/* 803596FC 48 00 10 C9 */ bl GXSetCPUFifo -/* 80359700 7F E3 FB 78 */ mr r3, r31 -/* 80359704 48 00 11 E9 */ bl GXSetGPFifo -/* 80359708 80 0D 93 C4 */ lwz r0, resetFuncRegistered(r13) -/* 8035970C 28 00 00 00 */ cmplwi r0, 0 -/* 80359710 40 82 00 14 */ bne lbl_80359724 -/* 80359714 3C 60 80 3D */ lis r3, GXResetFuncInfo@ha /* 0x803D226C@ha */ -/* 80359718 38 63 22 6C */ addi r3, r3, GXResetFuncInfo@l /* 0x803D226C@l */ -/* 8035971C 4B FE 5F 45 */ bl OSRegisterResetFunction -/* 80359720 93 8D 93 C4 */ stw r28, resetFuncRegistered(r13) -lbl_80359724: -/* 80359724 48 00 2F 4D */ bl __GXPEInit -/* 80359728 4B FE 06 65 */ bl PPCMfhid2 -/* 8035972C 3C 80 0C 01 */ lis r4, 0x0C01 /* 0x0C008000@ha */ -/* 80359730 7C 7C 1B 78 */ mr r28, r3 -/* 80359734 38 64 80 00 */ addi r3, r4, 0x8000 /* 0x0C008000@l */ -/* 80359738 4B FE 06 65 */ bl PPCMtwpar -/* 8035973C 67 83 40 00 */ oris r3, r28, 0x4000 -/* 80359740 4B FE 06 55 */ bl PPCMthid2 -/* 80359744 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 80359748 3B A0 00 00 */ li r29, 0 -/* 8035974C 38 60 00 00 */ li r3, 0 -/* 80359750 93 A6 02 04 */ stw r29, 0x204(r6) -/* 80359754 54 67 08 3C */ slwi r7, r3, 1 -/* 80359758 38 A0 00 FF */ li r5, 0xff -/* 8035975C 80 06 02 04 */ lwz r0, 0x204(r6) -/* 80359760 53 A0 C0 0E */ rlwimi r0, r29, 0x18, 0, 7 -/* 80359764 38 80 00 0F */ li r4, 0xf -/* 80359768 90 06 02 04 */ stw r0, 0x204(r6) -/* 8035976C 38 00 00 22 */ li r0, 0x22 -/* 80359770 3B C7 00 C0 */ addi r30, r7, 0xc0 -/* 80359774 90 A6 01 24 */ stw r5, 0x124(r6) -/* 80359778 3B 67 00 C1 */ addi r27, r7, 0xc1 -/* 8035977C 80 A6 01 24 */ lwz r5, 0x124(r6) -/* 80359780 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7 -/* 80359784 90 A6 01 24 */ stw r5, 0x124(r6) -/* 80359788 93 A6 00 7C */ stw r29, 0x7c(r6) -/* 8035978C 80 86 00 7C */ lwz r4, 0x7c(r6) -/* 80359790 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 80359794 90 86 00 7C */ stw r4, 0x7c(r6) -/* 80359798 48 00 00 04 */ b lbl_8035979C -lbl_8035979C: -/* 8035979C 38 00 00 08 */ li r0, 8 -/* 803597A0 7C 09 03 A6 */ mtctr r0 -/* 803597A4 48 00 00 04 */ b lbl_803597A8 -lbl_803597A8: -/* 803597A8 48 00 00 04 */ b lbl_803597AC -lbl_803597AC: -/* 803597AC 81 82 CB 80 */ lwz r12, __GXData(r2) -/* 803597B0 54 7A F8 7E */ srwi r26, r3, 1 -/* 803597B4 39 7D 01 30 */ addi r11, r29, 0x130 -/* 803597B8 3B 80 00 00 */ li r28, 0 -/* 803597BC 7F 8C 59 2E */ stwx r28, r12, r11 -/* 803597C0 39 5D 01 70 */ addi r10, r29, 0x170 -/* 803597C4 57 59 10 3A */ slwi r25, r26, 2 -/* 803597C8 7F 8C 51 2E */ stwx r28, r12, r10 -/* 803597CC 39 39 01 00 */ addi r9, r25, 0x100 -/* 803597D0 38 FD 05 54 */ addi r7, r29, 0x554 -/* 803597D4 7F 8C 49 2E */ stwx r28, r12, r9 -/* 803597D8 39 00 00 FF */ li r8, 0xff -/* 803597DC 38 D9 01 B0 */ addi r6, r25, 0x1b0 -/* 803597E0 7D 0C 39 2E */ stwx r8, r12, r7 -/* 803597E4 3B BD 00 04 */ addi r29, r29, 4 -/* 803597E8 38 9A 00 F6 */ addi r4, r26, 0xf6 -/* 803597EC 7C AC 58 2E */ lwzx r5, r12, r11 -/* 803597F0 53 C5 C0 0E */ rlwimi r5, r30, 0x18, 0, 7 -/* 803597F4 38 1A 00 28 */ addi r0, r26, 0x28 -/* 803597F8 7C AC 59 2E */ stwx r5, r12, r11 -/* 803597FC 38 63 00 01 */ addi r3, r3, 1 -/* 80359800 54 7A F8 7E */ srwi r26, r3, 1 -/* 80359804 7C AC 50 2E */ lwzx r5, r12, r10 -/* 80359808 53 65 C0 0E */ rlwimi r5, r27, 0x18, 0, 7 -/* 8035980C 39 7D 01 30 */ addi r11, r29, 0x130 -/* 80359810 7C AC 51 2E */ stwx r5, r12, r10 -/* 80359814 39 5D 01 70 */ addi r10, r29, 0x170 -/* 80359818 38 FD 05 54 */ addi r7, r29, 0x554 -/* 8035981C 7C AC 30 2E */ lwzx r5, r12, r6 -/* 80359820 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7 -/* 80359824 57 59 10 3A */ slwi r25, r26, 2 -/* 80359828 7C AC 31 2E */ stwx r5, r12, r6 -/* 8035982C 3B DE 00 02 */ addi r30, r30, 2 -/* 80359830 3B 7B 00 02 */ addi r27, r27, 2 -/* 80359834 7C 8C 48 2E */ lwzx r4, r12, r9 -/* 80359838 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 8035983C 38 D9 01 B0 */ addi r6, r25, 0x1b0 -/* 80359840 7C 8C 49 2E */ stwx r4, r12, r9 -/* 80359844 39 39 01 00 */ addi r9, r25, 0x100 -/* 80359848 38 9A 00 F6 */ addi r4, r26, 0xf6 -/* 8035984C 7F 8C 59 2E */ stwx r28, r12, r11 -/* 80359850 38 1A 00 28 */ addi r0, r26, 0x28 -/* 80359854 3B BD 00 04 */ addi r29, r29, 4 -/* 80359858 7F 8C 51 2E */ stwx r28, r12, r10 -/* 8035985C 38 63 00 01 */ addi r3, r3, 1 -/* 80359860 7F 8C 49 2E */ stwx r28, r12, r9 -/* 80359864 7D 0C 39 2E */ stwx r8, r12, r7 -/* 80359868 7C AC 58 2E */ lwzx r5, r12, r11 -/* 8035986C 53 C5 C0 0E */ rlwimi r5, r30, 0x18, 0, 7 -/* 80359870 3B DE 00 02 */ addi r30, r30, 2 -/* 80359874 7C AC 59 2E */ stwx r5, r12, r11 -/* 80359878 7C AC 50 2E */ lwzx r5, r12, r10 -/* 8035987C 53 65 C0 0E */ rlwimi r5, r27, 0x18, 0, 7 -/* 80359880 3B 7B 00 02 */ addi r27, r27, 2 -/* 80359884 7C AC 51 2E */ stwx r5, r12, r10 -/* 80359888 7C AC 30 2E */ lwzx r5, r12, r6 -/* 8035988C 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7 -/* 80359890 7C AC 31 2E */ stwx r5, r12, r6 -/* 80359894 7C 8C 48 2E */ lwzx r4, r12, r9 -/* 80359898 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 8035989C 7C 8C 49 2E */ stwx r4, r12, r9 -/* 803598A0 42 00 FF 0C */ bdnz lbl_803597AC -/* 803598A4 93 8C 01 20 */ stw r28, 0x120(r12) -/* 803598A8 57 84 08 3C */ slwi r4, r28, 1 -/* 803598AC 38 00 00 27 */ li r0, 0x27 -/* 803598B0 80 6C 01 20 */ lwz r3, 0x120(r12) -/* 803598B4 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 803598B8 7F 85 E3 78 */ mr r5, r28 -/* 803598BC 90 6C 01 20 */ stw r3, 0x120(r12) -/* 803598C0 38 C4 00 30 */ addi r6, r4, 0x30 -/* 803598C4 38 E4 00 31 */ addi r7, r4, 0x31 -/* 803598C8 48 00 00 04 */ b lbl_803598CC -lbl_803598CC: -/* 803598CC 38 00 00 02 */ li r0, 2 -/* 803598D0 7C 09 03 A6 */ mtctr r0 -/* 803598D4 48 00 00 04 */ b lbl_803598D8 -lbl_803598D8: -/* 803598D8 48 00 00 04 */ b lbl_803598DC -lbl_803598DC: -/* 803598DC 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 803598E0 38 85 00 B8 */ addi r4, r5, 0xb8 -/* 803598E4 38 65 00 D8 */ addi r3, r5, 0xd8 -/* 803598E8 7F 88 21 2E */ stwx r28, r8, r4 -/* 803598EC 38 A5 00 04 */ addi r5, r5, 4 -/* 803598F0 7F 88 19 2E */ stwx r28, r8, r3 -/* 803598F4 7C 08 20 2E */ lwzx r0, r8, r4 -/* 803598F8 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7 -/* 803598FC 38 C6 00 02 */ addi r6, r6, 2 -/* 80359900 7C 08 21 2E */ stwx r0, r8, r4 -/* 80359904 38 85 00 B8 */ addi r4, r5, 0xb8 -/* 80359908 7C 08 18 2E */ lwzx r0, r8, r3 -/* 8035990C 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7 -/* 80359910 38 E7 00 02 */ addi r7, r7, 2 -/* 80359914 7C 08 19 2E */ stwx r0, r8, r3 -/* 80359918 38 65 00 D8 */ addi r3, r5, 0xd8 -/* 8035991C 38 A5 00 04 */ addi r5, r5, 4 -/* 80359920 7F 88 21 2E */ stwx r28, r8, r4 -/* 80359924 7F 88 19 2E */ stwx r28, r8, r3 -/* 80359928 7C 08 20 2E */ lwzx r0, r8, r4 -/* 8035992C 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7 -/* 80359930 38 C6 00 02 */ addi r6, r6, 2 -/* 80359934 7C 08 21 2E */ stwx r0, r8, r4 -/* 80359938 38 85 00 B8 */ addi r4, r5, 0xb8 -/* 8035993C 7C 08 18 2E */ lwzx r0, r8, r3 -/* 80359940 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7 -/* 80359944 38 E7 00 02 */ addi r7, r7, 2 -/* 80359948 7C 08 19 2E */ stwx r0, r8, r3 -/* 8035994C 38 65 00 D8 */ addi r3, r5, 0xd8 -/* 80359950 38 A5 00 04 */ addi r5, r5, 4 -/* 80359954 7F 88 21 2E */ stwx r28, r8, r4 -/* 80359958 7F 88 19 2E */ stwx r28, r8, r3 -/* 8035995C 7C 08 20 2E */ lwzx r0, r8, r4 -/* 80359960 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7 -/* 80359964 38 C6 00 02 */ addi r6, r6, 2 -/* 80359968 7C 08 21 2E */ stwx r0, r8, r4 -/* 8035996C 38 85 00 B8 */ addi r4, r5, 0xb8 -/* 80359970 7C 08 18 2E */ lwzx r0, r8, r3 -/* 80359974 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7 -/* 80359978 38 E7 00 02 */ addi r7, r7, 2 -/* 8035997C 7C 08 19 2E */ stwx r0, r8, r3 -/* 80359980 38 65 00 D8 */ addi r3, r5, 0xd8 -/* 80359984 38 A5 00 04 */ addi r5, r5, 4 -/* 80359988 7F 88 21 2E */ stwx r28, r8, r4 -/* 8035998C 7F 88 19 2E */ stwx r28, r8, r3 -/* 80359990 7C 08 20 2E */ lwzx r0, r8, r4 -/* 80359994 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7 -/* 80359998 38 C6 00 02 */ addi r6, r6, 2 -/* 8035999C 7C 08 21 2E */ stwx r0, r8, r4 -/* 803599A0 7C 08 18 2E */ lwzx r0, r8, r3 -/* 803599A4 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7 -/* 803599A8 38 E7 00 02 */ addi r7, r7, 2 -/* 803599AC 7C 08 19 2E */ stwx r0, r8, r3 -/* 803599B0 42 00 FF 2C */ bdnz lbl_803598DC -/* 803599B4 80 68 00 F8 */ lwz r3, 0xf8(r8) -/* 803599B8 38 00 00 20 */ li r0, 0x20 -/* 803599BC 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 803599C0 90 68 00 F8 */ stw r3, 0xf8(r8) -/* 803599C4 3C 60 10 62 */ lis r3, 0x1062 /* 0x10624DD3@ha */ -/* 803599C8 38 00 00 21 */ li r0, 0x21 -/* 803599CC 80 88 00 FC */ lwz r4, 0xfc(r8) -/* 803599D0 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 803599D4 38 00 00 41 */ li r0, 0x41 -/* 803599D8 90 88 00 FC */ stw r4, 0xfc(r8) -/* 803599DC 38 C0 00 42 */ li r6, 0x42 -/* 803599E0 38 A0 00 40 */ li r5, 0x40 -/* 803599E4 80 88 01 D0 */ lwz r4, 0x1d0(r8) -/* 803599E8 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 803599EC 38 00 00 43 */ li r0, 0x43 -/* 803599F0 90 88 01 D0 */ stw r4, 0x1d0(r8) -/* 803599F4 3B C0 00 00 */ li r30, 0 -/* 803599F8 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000F8@ha */ -/* 803599FC 80 E8 01 D4 */ lwz r7, 0x1d4(r8) -/* 80359A00 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7 -/* 80359A04 38 63 4D D3 */ addi r3, r3, 0x4DD3 /* 0x10624DD3@l */ -/* 80359A08 90 E8 01 D4 */ stw r7, 0x1d4(r8) -/* 80359A0C 80 C8 01 D8 */ lwz r6, 0x1d8(r8) -/* 80359A10 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7 -/* 80359A14 90 C8 01 D8 */ stw r6, 0x1d8(r8) -/* 80359A18 80 A8 01 DC */ lwz r5, 0x1dc(r8) -/* 80359A1C 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7 -/* 80359A20 90 A8 01 DC */ stw r5, 0x1dc(r8) -/* 80359A24 80 08 01 FC */ lwz r0, 0x1fc(r8) -/* 80359A28 53 C0 3D F0 */ rlwimi r0, r30, 7, 0x17, 0x18 -/* 80359A2C 90 08 01 FC */ stw r0, 0x1fc(r8) -/* 80359A30 C0 02 CB 84 */ lfs f0, lit_267(r2) -/* 80359A34 D0 08 05 10 */ stfs f0, 0x510(r8) -/* 80359A38 C0 02 CB 88 */ lfs f0, lit_268(r2) -/* 80359A3C D0 08 05 0C */ stfs f0, 0x50c(r8) -/* 80359A40 93 C8 05 AC */ stw r30, 0x5ac(r8) -/* 80359A44 9B C8 05 AB */ stb r30, 0x5ab(r8) -/* 80359A48 80 04 00 F8 */ lwz r0, 0x00F8(r4) /* 0x800000F8@l */ -/* 80359A4C 7C 03 00 16 */ mulhwu r0, r3, r0 -/* 80359A50 54 19 D9 7E */ srwi r25, r0, 5 -/* 80359A54 48 00 57 21 */ bl __GXFlushTextureState -/* 80359A58 57 20 AA FE */ srwi r0, r25, 0xb -/* 80359A5C 64 00 69 00 */ oris r0, r0, 0x6900 -/* 80359A60 3B 80 00 61 */ li r28, 0x61 -/* 80359A64 3F A0 CC 01 */ lis r29, 0xCC01 /* 0xCC008000@ha */ -/* 80359A68 9B 9D 80 00 */ stb r28, 0x8000(r29) /* 0xCC008000@l */ -/* 80359A6C 60 00 04 00 */ ori r0, r0, 0x400 -/* 80359A70 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 80359A74 48 00 57 01 */ bl __GXFlushTextureState -/* 80359A78 3C 60 3E 10 */ lis r3, 0x3E10 /* 0x3E0F83E1@ha */ -/* 80359A7C 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 80359A80 38 03 83 E1 */ addi r0, r3, 0x83E1 /* 0x3E0F83E1@l */ -/* 80359A84 7C 00 C8 16 */ mulhwu r0, r0, r25 -/* 80359A88 54 00 B2 BE */ srwi r0, r0, 0xa -/* 80359A8C 64 00 46 00 */ oris r0, r0, 0x4600 -/* 80359A90 60 00 02 00 */ ori r0, r0, 0x200 -/* 80359A94 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 80359A98 4B FF FA 35 */ bl __GXInitRevisionBits -/* 80359A9C 3C 60 80 3D */ lis r3, GXTexRegionAddrTable@ha /* 0x803D21AC@ha */ -/* 80359AA0 57 C4 10 3A */ slwi r4, r30, 2 -/* 80359AA4 38 03 21 AC */ addi r0, r3, GXTexRegionAddrTable@l /* 0x803D21AC@l */ -/* 80359AA8 7F 60 22 14 */ add r27, r0, r4 -/* 80359AAC 57 DC 20 36 */ slwi r28, r30, 4 -/* 80359AB0 48 00 00 04 */ b lbl_80359AB4 -lbl_80359AB4: -/* 80359AB4 48 00 00 04 */ b lbl_80359AB8 -lbl_80359AB8: -/* 80359AB8 48 00 00 04 */ b lbl_80359ABC -lbl_80359ABC: -/* 80359ABC 80 02 CB 80 */ lwz r0, __GXData(r2) -/* 80359AC0 38 7C 02 08 */ addi r3, r28, 0x208 -/* 80359AC4 80 BB 00 00 */ lwz r5, 0(r27) -/* 80359AC8 38 80 00 00 */ li r4, 0 -/* 80359ACC 80 FB 00 20 */ lwz r7, 0x20(r27) -/* 80359AD0 7C 60 1A 14 */ add r3, r0, r3 -/* 80359AD4 38 C0 00 00 */ li r6, 0 -/* 80359AD8 39 00 00 00 */ li r8, 0 -/* 80359ADC 48 00 4A 5D */ bl GXInitTexCacheRegion -/* 80359AE0 80 02 CB 80 */ lwz r0, __GXData(r2) -/* 80359AE4 38 7C 02 88 */ addi r3, r28, 0x288 -/* 80359AE8 80 BB 00 40 */ lwz r5, 0x40(r27) -/* 80359AEC 38 80 00 00 */ li r4, 0 -/* 80359AF0 80 FB 00 60 */ lwz r7, 0x60(r27) -/* 80359AF4 7C 60 1A 14 */ add r3, r0, r3 -/* 80359AF8 38 C0 00 00 */ li r6, 0 -/* 80359AFC 39 00 00 00 */ li r8, 0 -/* 80359B00 48 00 4A 39 */ bl GXInitTexCacheRegion -/* 80359B04 80 02 CB 80 */ lwz r0, __GXData(r2) -/* 80359B08 38 7C 03 08 */ addi r3, r28, 0x308 -/* 80359B0C 80 BB 00 80 */ lwz r5, 0x80(r27) -/* 80359B10 38 80 00 01 */ li r4, 1 -/* 80359B14 80 FB 00 A0 */ lwz r7, 0xa0(r27) -/* 80359B18 7C 60 1A 14 */ add r3, r0, r3 -/* 80359B1C 38 C0 00 00 */ li r6, 0 -/* 80359B20 39 00 00 00 */ li r8, 0 -/* 80359B24 48 00 4A 15 */ bl GXInitTexCacheRegion -/* 80359B28 3B 7B 00 04 */ addi r27, r27, 4 -/* 80359B2C 3B 9C 00 10 */ addi r28, r28, 0x10 -/* 80359B30 3B DE 00 01 */ addi r30, r30, 1 -/* 80359B34 28 1E 00 08 */ cmplwi r30, 8 -/* 80359B38 41 80 FF 84 */ blt lbl_80359ABC -/* 80359B3C 3B 20 00 00 */ li r25, 0 -/* 80359B40 57 23 68 24 */ slwi r3, r25, 0xd -/* 80359B44 3F 63 00 0C */ addis r27, r3, 0xc -/* 80359B48 57 3C 20 36 */ slwi r28, r25, 4 -/* 80359B4C 48 00 00 04 */ b lbl_80359B50 -lbl_80359B50: -/* 80359B50 48 00 00 04 */ b lbl_80359B54 -lbl_80359B54: -/* 80359B54 48 00 00 04 */ b lbl_80359B58 -lbl_80359B58: -/* 80359B58 80 02 CB 80 */ lwz r0, __GXData(r2) -/* 80359B5C 38 7C 03 88 */ addi r3, r28, 0x388 -/* 80359B60 7F 64 DB 78 */ mr r4, r27 -/* 80359B64 7C 60 1A 14 */ add r3, r0, r3 -/* 80359B68 38 A0 00 10 */ li r5, 0x10 -/* 80359B6C 48 00 4A C1 */ bl GXInitTlutRegion -/* 80359B70 3B 7B 20 00 */ addi r27, r27, 0x2000 -/* 80359B74 3B 9C 00 10 */ addi r28, r28, 0x10 -/* 80359B78 3B 39 00 01 */ addi r25, r25, 1 -/* 80359B7C 28 19 00 10 */ cmplwi r25, 0x10 -/* 80359B80 41 80 FF D8 */ blt lbl_80359B58 -/* 80359B84 3B 20 00 00 */ li r25, 0 -/* 80359B88 57 23 78 20 */ slwi r3, r25, 0xf -/* 80359B8C 3F 63 00 0E */ addis r27, r3, 0xe -/* 80359B90 48 00 00 04 */ b lbl_80359B94 -lbl_80359B94: -/* 80359B94 48 00 00 04 */ b lbl_80359B98 -lbl_80359B98: -/* 80359B98 48 00 00 04 */ b lbl_80359B9C -lbl_80359B9C: -/* 80359B9C 38 19 00 10 */ addi r0, r25, 0x10 -/* 80359BA0 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 80359BA4 54 03 20 36 */ slwi r3, r0, 4 -/* 80359BA8 38 63 03 88 */ addi r3, r3, 0x388 -/* 80359BAC 7F 64 DB 78 */ mr r4, r27 -/* 80359BB0 7C 65 1A 14 */ add r3, r5, r3 -/* 80359BB4 38 A0 00 40 */ li r5, 0x40 -/* 80359BB8 48 00 4A 75 */ bl GXInitTlutRegion -/* 80359BBC 3F 7B 00 01 */ addis r27, r27, 1 -/* 80359BC0 3B 7B 80 00 */ addi r27, r27, -32768 -/* 80359BC4 3B 39 00 01 */ addi r25, r25, 1 -/* 80359BC8 28 19 00 04 */ cmplwi r25, 4 -/* 80359BCC 41 80 FF D0 */ blt lbl_80359B9C -/* 80359BD0 80 6D 93 A4 */ lwz r3, __cpReg(r13) -/* 80359BD4 39 80 00 00 */ li r12, 0 -/* 80359BD8 38 00 00 08 */ li r0, 8 -/* 80359BDC B1 83 00 06 */ sth r12, 6(r3) -/* 80359BE0 3D 40 CC 01 */ lis r10, 0xCC01 /* 0xCC008000@ha */ -/* 80359BE4 39 20 00 20 */ li r9, 0x20 -/* 80359BE8 81 62 CB 80 */ lwz r11, __GXData(r2) -/* 80359BEC 39 00 00 10 */ li r8, 0x10 -/* 80359BF0 38 E0 10 06 */ li r7, 0x1006 -/* 80359BF4 80 6B 05 A4 */ lwz r3, 0x5a4(r11) -/* 80359BF8 51 83 26 36 */ rlwimi r3, r12, 4, 0x18, 0x1b -/* 80359BFC 38 C0 00 61 */ li r6, 0x61 -/* 80359C00 90 6B 05 A4 */ stw r3, 0x5a4(r11) -/* 80359C04 3C A0 23 00 */ lis r5, 0x2300 -/* 80359C08 3C 80 24 00 */ lis r4, 0x2400 -/* 80359C0C 98 0A 80 00 */ stb r0, 0x8000(r10) /* 0xCC008000@l */ -/* 80359C10 3C 00 67 00 */ lis r0, 0x6700 -/* 80359C14 38 60 00 00 */ li r3, 0 -/* 80359C18 99 2A 80 00 */ stb r9, -0x8000(r10) -/* 80359C1C 81 2B 05 A4 */ lwz r9, 0x5a4(r11) -/* 80359C20 91 2A 80 00 */ stw r9, -0x8000(r10) -/* 80359C24 99 0A 80 00 */ stb r8, -0x8000(r10) -/* 80359C28 90 EA 80 00 */ stw r7, -0x8000(r10) -/* 80359C2C 91 8A 80 00 */ stw r12, -0x8000(r10) -/* 80359C30 98 CA 80 00 */ stb r6, -0x8000(r10) -/* 80359C34 90 AA 80 00 */ stw r5, -0x8000(r10) -/* 80359C38 98 CA 80 00 */ stb r6, -0x8000(r10) -/* 80359C3C 90 8A 80 00 */ stw r4, -0x8000(r10) -/* 80359C40 98 CA 80 00 */ stb r6, -0x8000(r10) -/* 80359C44 90 0A 80 00 */ stw r0, -0x8000(r10) -/* 80359C48 48 00 54 FD */ bl __GXSetIndirectMask -/* 80359C4C 38 60 00 02 */ li r3, 2 -/* 80359C50 48 00 4D 1D */ bl __GXSetTmemConfig -/* 80359C54 48 00 00 1D */ bl __GXInitGX -/* 80359C58 7F E3 FB 78 */ mr r3, r31 -/* 80359C5C BB 21 00 1C */ lmw r25, 0x1c(r1) -/* 80359C60 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 80359C64 38 21 00 38 */ addi r1, r1, 0x38 -/* 80359C68 7C 08 03 A6 */ mtlr r0 -/* 80359C6C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXInit/__GXInitGX.s b/asm/dolphin/gx/GXInit/__GXInitGX.s deleted file mode 100644 index 188f9fbf15..0000000000 --- a/asm/dolphin/gx/GXInit/__GXInitGX.s +++ /dev/null @@ -1,612 +0,0 @@ -lbl_80359C70: -/* 80359C70 7C 08 02 A6 */ mflr r0 -/* 80359C74 90 01 00 04 */ stw r0, 4(r1) -/* 80359C78 94 21 FF 60 */ stwu r1, -0xa0(r1) -/* 80359C7C 93 E1 00 9C */ stw r31, 0x9c(r1) -/* 80359C80 93 C1 00 98 */ stw r30, 0x98(r1) -/* 80359C84 93 A1 00 94 */ stw r29, 0x94(r1) -/* 80359C88 80 82 CB 8C */ lwz r4, lit_269(r2) -/* 80359C8C 3C A0 80 3D */ lis r5, lit_1@ha /* 0x803D2040@ha */ -/* 80359C90 80 62 CB 90 */ lwz r3, lit_270(r2) -/* 80359C94 3B E5 20 40 */ addi r31, r5, lit_1@l /* 0x803D2040@l */ -/* 80359C98 80 02 CB 94 */ lwz r0, lit_271(r2) -/* 80359C9C 90 81 00 28 */ stw r4, 0x28(r1) -/* 80359CA0 90 61 00 24 */ stw r3, 0x24(r1) -/* 80359CA4 90 01 00 20 */ stw r0, 0x20(r1) -/* 80359CA8 4B FF 3D F5 */ bl VIGetTvFormat -/* 80359CAC 2C 03 00 02 */ cmpwi r3, 2 -/* 80359CB0 41 82 00 54 */ beq lbl_80359D04 -/* 80359CB4 40 80 00 14 */ bge lbl_80359CC8 -/* 80359CB8 2C 03 00 00 */ cmpwi r3, 0 -/* 80359CBC 41 82 00 18 */ beq lbl_80359CD4 -/* 80359CC0 40 80 00 24 */ bge lbl_80359CE4 -/* 80359CC4 48 00 00 50 */ b lbl_80359D14 -lbl_80359CC8: -/* 80359CC8 2C 03 00 05 */ cmpwi r3, 5 -/* 80359CCC 41 82 00 28 */ beq lbl_80359CF4 -/* 80359CD0 48 00 00 44 */ b lbl_80359D14 -lbl_80359CD4: -/* 80359CD4 3C 60 80 3D */ lis r3, GXNtsc480IntDf@ha /* 0x803D2448@ha */ -/* 80359CD8 38 03 24 48 */ addi r0, r3, GXNtsc480IntDf@l /* 0x803D2448@l */ -/* 80359CDC 7C 1E 03 78 */ mr r30, r0 -/* 80359CE0 48 00 00 40 */ b lbl_80359D20 -lbl_80359CE4: -/* 80359CE4 3C 60 80 3D */ lis r3, GXPal528IntDf@ha /* 0x803D24FC@ha */ -/* 80359CE8 38 03 24 FC */ addi r0, r3, GXPal528IntDf@l /* 0x803D24FC@l */ -/* 80359CEC 7C 1E 03 78 */ mr r30, r0 -/* 80359CF0 48 00 00 30 */ b lbl_80359D20 -lbl_80359CF4: -/* 80359CF4 3C 60 80 3D */ lis r3, GXEurgb60Hz480IntDf@ha /* 0x803D2538@ha */ -/* 80359CF8 38 03 25 38 */ addi r0, r3, GXEurgb60Hz480IntDf@l /* 0x803D2538@l */ -/* 80359CFC 7C 1E 03 78 */ mr r30, r0 -/* 80359D00 48 00 00 20 */ b lbl_80359D20 -lbl_80359D04: -/* 80359D04 3C 60 80 3D */ lis r3, GXMpal480IntDf@ha /* 0x803D24C0@ha */ -/* 80359D08 38 03 24 C0 */ addi r0, r3, GXMpal480IntDf@l /* 0x803D24C0@l */ -/* 80359D0C 7C 1E 03 78 */ mr r30, r0 -/* 80359D10 48 00 00 10 */ b lbl_80359D20 -lbl_80359D14: -/* 80359D14 3C 60 80 3D */ lis r3, GXNtsc480IntDf@ha /* 0x803D2448@ha */ -/* 80359D18 38 03 24 48 */ addi r0, r3, GXNtsc480IntDf@l /* 0x803D2448@l */ -/* 80359D1C 7C 1E 03 78 */ mr r30, r0 -lbl_80359D20: -/* 80359D20 80 01 00 28 */ lwz r0, 0x28(r1) -/* 80359D24 3C 80 01 00 */ lis r4, 0x0100 /* 0x00FFFFFF@ha */ -/* 80359D28 38 61 00 1C */ addi r3, r1, 0x1c -/* 80359D2C 90 01 00 1C */ stw r0, 0x1c(r1) -/* 80359D30 38 84 FF FF */ addi r4, r4, 0xFFFF /* 0x00FFFFFF@l */ -/* 80359D34 48 00 33 3D */ bl GXSetCopyClear -/* 80359D38 38 60 00 00 */ li r3, 0 -/* 80359D3C 38 80 00 01 */ li r4, 1 -/* 80359D40 38 A0 00 04 */ li r5, 4 -/* 80359D44 38 C0 00 3C */ li r6, 0x3c -/* 80359D48 38 E0 00 00 */ li r7, 0 -/* 80359D4C 39 00 00 7D */ li r8, 0x7d -/* 80359D50 48 00 1E 2D */ bl GXSetTexCoordGen2 -/* 80359D54 38 60 00 01 */ li r3, 1 -/* 80359D58 38 80 00 01 */ li r4, 1 -/* 80359D5C 38 A0 00 05 */ li r5, 5 -/* 80359D60 38 C0 00 3C */ li r6, 0x3c -/* 80359D64 38 E0 00 00 */ li r7, 0 -/* 80359D68 39 00 00 7D */ li r8, 0x7d -/* 80359D6C 48 00 1E 11 */ bl GXSetTexCoordGen2 -/* 80359D70 38 60 00 02 */ li r3, 2 -/* 80359D74 38 80 00 01 */ li r4, 1 -/* 80359D78 38 A0 00 06 */ li r5, 6 -/* 80359D7C 38 C0 00 3C */ li r6, 0x3c -/* 80359D80 38 E0 00 00 */ li r7, 0 -/* 80359D84 39 00 00 7D */ li r8, 0x7d -/* 80359D88 48 00 1D F5 */ bl GXSetTexCoordGen2 -/* 80359D8C 38 60 00 03 */ li r3, 3 -/* 80359D90 38 80 00 01 */ li r4, 1 -/* 80359D94 38 A0 00 07 */ li r5, 7 -/* 80359D98 38 C0 00 3C */ li r6, 0x3c -/* 80359D9C 38 E0 00 00 */ li r7, 0 -/* 80359DA0 39 00 00 7D */ li r8, 0x7d -/* 80359DA4 48 00 1D D9 */ bl GXSetTexCoordGen2 -/* 80359DA8 38 60 00 04 */ li r3, 4 -/* 80359DAC 38 80 00 01 */ li r4, 1 -/* 80359DB0 38 A0 00 08 */ li r5, 8 -/* 80359DB4 38 C0 00 3C */ li r6, 0x3c -/* 80359DB8 38 E0 00 00 */ li r7, 0 -/* 80359DBC 39 00 00 7D */ li r8, 0x7d -/* 80359DC0 48 00 1D BD */ bl GXSetTexCoordGen2 -/* 80359DC4 38 60 00 05 */ li r3, 5 -/* 80359DC8 38 80 00 01 */ li r4, 1 -/* 80359DCC 38 A0 00 09 */ li r5, 9 -/* 80359DD0 38 C0 00 3C */ li r6, 0x3c -/* 80359DD4 38 E0 00 00 */ li r7, 0 -/* 80359DD8 39 00 00 7D */ li r8, 0x7d -/* 80359DDC 48 00 1D A1 */ bl GXSetTexCoordGen2 -/* 80359DE0 38 60 00 06 */ li r3, 6 -/* 80359DE4 38 80 00 01 */ li r4, 1 -/* 80359DE8 38 A0 00 0A */ li r5, 0xa -/* 80359DEC 38 C0 00 3C */ li r6, 0x3c -/* 80359DF0 38 E0 00 00 */ li r7, 0 -/* 80359DF4 39 00 00 7D */ li r8, 0x7d -/* 80359DF8 48 00 1D 85 */ bl GXSetTexCoordGen2 -/* 80359DFC 38 60 00 07 */ li r3, 7 -/* 80359E00 38 80 00 01 */ li r4, 1 -/* 80359E04 38 A0 00 0B */ li r5, 0xb -/* 80359E08 38 C0 00 3C */ li r6, 0x3c -/* 80359E0C 38 E0 00 00 */ li r7, 0 -/* 80359E10 39 00 00 7D */ li r8, 0x7d -/* 80359E14 48 00 1D 69 */ bl GXSetTexCoordGen2 -/* 80359E18 38 60 00 01 */ li r3, 1 -/* 80359E1C 48 00 1F E1 */ bl GXSetNumTexGens -/* 80359E20 48 00 17 6D */ bl GXClearVtxDesc -/* 80359E24 48 00 1D 49 */ bl GXInvalidateVtxCache -/* 80359E28 3B A0 00 09 */ li r29, 9 -/* 80359E2C 48 00 00 04 */ b lbl_80359E30 -lbl_80359E30: -/* 80359E30 48 00 00 04 */ b lbl_80359E34 -lbl_80359E34: -/* 80359E34 48 00 00 04 */ b lbl_80359E38 -lbl_80359E38: -/* 80359E38 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 80359E3C 7F A3 EB 78 */ mr r3, r29 -/* 80359E40 38 A0 00 00 */ li r5, 0 -/* 80359E44 48 00 1C E5 */ bl GXSetArray -/* 80359E48 3B BD 00 01 */ addi r29, r29, 1 -/* 80359E4C 28 1D 00 18 */ cmplwi r29, 0x18 -/* 80359E50 40 81 FF E8 */ ble lbl_80359E38 -/* 80359E54 3B A0 00 00 */ li r29, 0 -/* 80359E58 48 00 00 04 */ b lbl_80359E5C -lbl_80359E5C: -/* 80359E5C 48 00 00 04 */ b lbl_80359E60 -lbl_80359E60: -/* 80359E60 48 00 00 04 */ b lbl_80359E64 -lbl_80359E64: -/* 80359E64 7F A3 EB 78 */ mr r3, r29 -/* 80359E68 38 9F 00 80 */ addi r4, r31, 0x80 -/* 80359E6C 48 00 19 B5 */ bl GXSetVtxAttrFmtv -/* 80359E70 3B BD 00 01 */ addi r29, r29, 1 -/* 80359E74 28 1D 00 08 */ cmplwi r29, 8 -/* 80359E78 41 80 FF EC */ blt lbl_80359E64 -/* 80359E7C 38 60 00 06 */ li r3, 6 -/* 80359E80 38 80 00 00 */ li r4, 0 -/* 80359E84 48 00 2A 39 */ bl GXSetLineWidth -/* 80359E88 38 60 00 06 */ li r3, 6 -/* 80359E8C 38 80 00 00 */ li r4, 0 -/* 80359E90 48 00 2A 6D */ bl GXSetPointSize -/* 80359E94 38 60 00 00 */ li r3, 0 -/* 80359E98 38 80 00 00 */ li r4, 0 -/* 80359E9C 38 A0 00 00 */ li r5, 0 -/* 80359EA0 48 00 2A 9D */ bl GXEnableTexOffsets -/* 80359EA4 38 60 00 01 */ li r3, 1 -/* 80359EA8 38 80 00 00 */ li r4, 0 -/* 80359EAC 38 A0 00 00 */ li r5, 0 -/* 80359EB0 48 00 2A 8D */ bl GXEnableTexOffsets -/* 80359EB4 38 60 00 02 */ li r3, 2 -/* 80359EB8 38 80 00 00 */ li r4, 0 -/* 80359EBC 38 A0 00 00 */ li r5, 0 -/* 80359EC0 48 00 2A 7D */ bl GXEnableTexOffsets -/* 80359EC4 38 60 00 03 */ li r3, 3 -/* 80359EC8 38 80 00 00 */ li r4, 0 -/* 80359ECC 38 A0 00 00 */ li r5, 0 -/* 80359ED0 48 00 2A 6D */ bl GXEnableTexOffsets -/* 80359ED4 38 60 00 04 */ li r3, 4 -/* 80359ED8 38 80 00 00 */ li r4, 0 -/* 80359EDC 38 A0 00 00 */ li r5, 0 -/* 80359EE0 48 00 2A 5D */ bl GXEnableTexOffsets -/* 80359EE4 38 60 00 05 */ li r3, 5 -/* 80359EE8 38 80 00 00 */ li r4, 0 -/* 80359EEC 38 A0 00 00 */ li r5, 0 -/* 80359EF0 48 00 2A 4D */ bl GXEnableTexOffsets -/* 80359EF4 38 60 00 06 */ li r3, 6 -/* 80359EF8 38 80 00 00 */ li r4, 0 -/* 80359EFC 38 A0 00 00 */ li r5, 0 -/* 80359F00 48 00 2A 3D */ bl GXEnableTexOffsets -/* 80359F04 38 60 00 07 */ li r3, 7 -/* 80359F08 38 80 00 00 */ li r4, 0 -/* 80359F0C 38 A0 00 00 */ li r5, 0 -/* 80359F10 48 00 2A 2D */ bl GXEnableTexOffsets -/* 80359F14 C0 22 CB 98 */ lfs f1, lit_331(r2) -/* 80359F18 38 61 00 2C */ addi r3, r1, 0x2c -/* 80359F1C C0 02 CB 88 */ lfs f0, lit_268(r2) -/* 80359F20 38 80 00 00 */ li r4, 0 -/* 80359F24 D0 21 00 2C */ stfs f1, 0x2c(r1) -/* 80359F28 D0 01 00 30 */ stfs f0, 0x30(r1) -/* 80359F2C D0 01 00 34 */ stfs f0, 0x34(r1) -/* 80359F30 D0 01 00 38 */ stfs f0, 0x38(r1) -/* 80359F34 D0 01 00 3C */ stfs f0, 0x3c(r1) -/* 80359F38 D0 21 00 40 */ stfs f1, 0x40(r1) -/* 80359F3C D0 01 00 44 */ stfs f0, 0x44(r1) -/* 80359F40 D0 01 00 48 */ stfs f0, 0x48(r1) -/* 80359F44 D0 01 00 4C */ stfs f0, 0x4c(r1) -/* 80359F48 D0 01 00 50 */ stfs f0, 0x50(r1) -/* 80359F4C D0 21 00 54 */ stfs f1, 0x54(r1) -/* 80359F50 D0 01 00 58 */ stfs f0, 0x58(r1) -/* 80359F54 48 00 62 F9 */ bl GXLoadPosMtxImm -/* 80359F58 38 61 00 2C */ addi r3, r1, 0x2c -/* 80359F5C 38 80 00 00 */ li r4, 0 -/* 80359F60 48 00 63 3D */ bl GXLoadNrmMtxImm -/* 80359F64 38 60 00 00 */ li r3, 0 -/* 80359F68 48 00 63 85 */ bl GXSetCurrentMtx -/* 80359F6C 38 61 00 2C */ addi r3, r1, 0x2c -/* 80359F70 38 80 00 3C */ li r4, 0x3c -/* 80359F74 38 A0 00 00 */ li r5, 0 -/* 80359F78 48 00 63 A9 */ bl GXLoadTexMtxImm -/* 80359F7C 38 61 00 2C */ addi r3, r1, 0x2c -/* 80359F80 38 80 00 7D */ li r4, 0x7d -/* 80359F84 38 A0 00 00 */ li r5, 0 -/* 80359F88 48 00 63 99 */ bl GXLoadTexMtxImm -/* 80359F8C A0 9E 00 04 */ lhz r4, 4(r30) -/* 80359F90 3C 60 43 30 */ lis r3, 0x4330 -/* 80359F94 A0 1E 00 08 */ lhz r0, 8(r30) -/* 80359F98 90 81 00 8C */ stw r4, 0x8c(r1) -/* 80359F9C C0 22 CB 88 */ lfs f1, lit_268(r2) -/* 80359FA0 90 01 00 84 */ stw r0, 0x84(r1) -/* 80359FA4 C8 82 CB A0 */ lfd f4, lit_334(r2) -/* 80359FA8 FC 40 08 90 */ fmr f2, f1 -/* 80359FAC 90 61 00 88 */ stw r3, 0x88(r1) -/* 80359FB0 FC A0 08 90 */ fmr f5, f1 -/* 80359FB4 C0 C2 CB 98 */ lfs f6, lit_331(r2) -/* 80359FB8 90 61 00 80 */ stw r3, 0x80(r1) -/* 80359FBC C8 61 00 88 */ lfd f3, 0x88(r1) -/* 80359FC0 C8 01 00 80 */ lfd f0, 0x80(r1) -/* 80359FC4 EC 63 20 28 */ fsubs f3, f3, f4 -/* 80359FC8 EC 80 20 28 */ fsubs f4, f0, f4 -/* 80359FCC 48 00 64 99 */ bl GXSetViewport -/* 80359FD0 38 7F 01 50 */ addi r3, r31, 0x150 -/* 80359FD4 48 00 61 A5 */ bl GXSetProjectionv -/* 80359FD8 38 60 00 00 */ li r3, 0 -/* 80359FDC 48 00 29 D1 */ bl GXSetCoPlanar -/* 80359FE0 38 60 00 02 */ li r3, 2 -/* 80359FE4 48 00 29 A1 */ bl GXSetCullMode -/* 80359FE8 38 60 00 00 */ li r3, 0 -/* 80359FEC 48 00 65 E5 */ bl GXSetClipMode -/* 80359FF0 A0 BE 00 04 */ lhz r5, 4(r30) -/* 80359FF4 38 60 00 00 */ li r3, 0 -/* 80359FF8 A0 DE 00 06 */ lhz r6, 6(r30) -/* 80359FFC 38 80 00 00 */ li r4, 0 -/* 8035A000 48 00 64 D1 */ bl GXSetScissor -/* 8035A004 38 60 00 00 */ li r3, 0 -/* 8035A008 38 80 00 00 */ li r4, 0 -/* 8035A00C 48 00 65 85 */ bl GXSetScissorBoxOffset -/* 8035A010 38 60 00 00 */ li r3, 0 -/* 8035A014 48 00 3B 1D */ bl GXSetNumChans -/* 8035A018 38 60 00 04 */ li r3, 4 -/* 8035A01C 38 80 00 00 */ li r4, 0 -/* 8035A020 38 A0 00 00 */ li r5, 0 -/* 8035A024 38 C0 00 01 */ li r6, 1 -/* 8035A028 38 E0 00 00 */ li r7, 0 -/* 8035A02C 39 00 00 00 */ li r8, 0 -/* 8035A030 39 20 00 02 */ li r9, 2 -/* 8035A034 48 00 3B 39 */ bl GXSetChanCtrl -/* 8035A038 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035A03C 38 81 00 18 */ addi r4, r1, 0x18 -/* 8035A040 38 60 00 04 */ li r3, 4 -/* 8035A044 90 01 00 18 */ stw r0, 0x18(r1) -/* 8035A048 48 00 39 19 */ bl GXSetChanAmbColor -/* 8035A04C 80 01 00 20 */ lwz r0, 0x20(r1) -/* 8035A050 38 81 00 14 */ addi r4, r1, 0x14 -/* 8035A054 38 60 00 04 */ li r3, 4 -/* 8035A058 90 01 00 14 */ stw r0, 0x14(r1) -/* 8035A05C 48 00 39 ED */ bl GXSetChanMatColor -/* 8035A060 38 60 00 05 */ li r3, 5 -/* 8035A064 38 80 00 00 */ li r4, 0 -/* 8035A068 38 A0 00 00 */ li r5, 0 -/* 8035A06C 38 C0 00 01 */ li r6, 1 -/* 8035A070 38 E0 00 00 */ li r7, 0 -/* 8035A074 39 00 00 00 */ li r8, 0 -/* 8035A078 39 20 00 02 */ li r9, 2 -/* 8035A07C 48 00 3A F1 */ bl GXSetChanCtrl -/* 8035A080 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035A084 38 81 00 10 */ addi r4, r1, 0x10 -/* 8035A088 38 60 00 05 */ li r3, 5 -/* 8035A08C 90 01 00 10 */ stw r0, 0x10(r1) -/* 8035A090 48 00 38 D1 */ bl GXSetChanAmbColor -/* 8035A094 80 01 00 20 */ lwz r0, 0x20(r1) -/* 8035A098 38 81 00 0C */ addi r4, r1, 0xc -/* 8035A09C 38 60 00 05 */ li r3, 5 -/* 8035A0A0 90 01 00 0C */ stw r0, 0xc(r1) -/* 8035A0A4 48 00 39 A5 */ bl GXSetChanMatColor -/* 8035A0A8 48 00 45 BD */ bl GXInvalidateTexAll -/* 8035A0AC 3C 60 80 36 */ lis r3, __GXDefaultTexRegionCallback@ha /* 0x8035921C@ha */ -/* 8035A0B0 38 63 92 1C */ addi r3, r3, __GXDefaultTexRegionCallback@l /* 0x8035921C@l */ -/* 8035A0B4 48 00 45 F9 */ bl GXSetTexRegionCallback -/* 8035A0B8 3C 60 80 36 */ lis r3, __GXDefaultTlutRegionCallback@ha /* 0x80359318@ha */ -/* 8035A0BC 38 63 93 18 */ addi r3, r3, __GXDefaultTlutRegionCallback@l /* 0x80359318@l */ -/* 8035A0C0 48 00 46 01 */ bl GXSetTlutRegionCallback -/* 8035A0C4 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A0C8 38 9F 00 60 */ addi r4, r31, 0x60 -/* 8035A0CC 38 A0 00 04 */ li r5, 4 -/* 8035A0D0 38 C0 00 04 */ li r6, 4 -/* 8035A0D4 38 E0 00 03 */ li r7, 3 -/* 8035A0D8 39 00 00 00 */ li r8, 0 -/* 8035A0DC 39 20 00 00 */ li r9, 0 -/* 8035A0E0 39 40 00 00 */ li r10, 0 -/* 8035A0E4 48 00 3D 5D */ bl GXInitTexObj -/* 8035A0E8 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A0EC 38 80 00 00 */ li r4, 0 -/* 8035A0F0 48 00 43 25 */ bl GXLoadTexObj -/* 8035A0F4 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A0F8 38 80 00 01 */ li r4, 1 -/* 8035A0FC 48 00 43 19 */ bl GXLoadTexObj -/* 8035A100 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A104 38 80 00 02 */ li r4, 2 -/* 8035A108 48 00 43 0D */ bl GXLoadTexObj -/* 8035A10C 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A110 38 80 00 03 */ li r4, 3 -/* 8035A114 48 00 43 01 */ bl GXLoadTexObj -/* 8035A118 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A11C 38 80 00 04 */ li r4, 4 -/* 8035A120 48 00 42 F5 */ bl GXLoadTexObj -/* 8035A124 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A128 38 80 00 05 */ li r4, 5 -/* 8035A12C 48 00 42 E9 */ bl GXLoadTexObj -/* 8035A130 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A134 38 80 00 06 */ li r4, 6 -/* 8035A138 48 00 42 DD */ bl GXLoadTexObj -/* 8035A13C 38 61 00 5C */ addi r3, r1, 0x5c -/* 8035A140 38 80 00 07 */ li r4, 7 -/* 8035A144 48 00 42 D1 */ bl GXLoadTexObj -/* 8035A148 38 60 00 00 */ li r3, 0 -/* 8035A14C 38 80 00 00 */ li r4, 0 -/* 8035A150 38 A0 00 00 */ li r5, 0 -/* 8035A154 38 C0 00 04 */ li r6, 4 -/* 8035A158 48 00 55 9D */ bl GXSetTevOrder -/* 8035A15C 38 60 00 01 */ li r3, 1 -/* 8035A160 38 80 00 01 */ li r4, 1 -/* 8035A164 38 A0 00 01 */ li r5, 1 -/* 8035A168 38 C0 00 04 */ li r6, 4 -/* 8035A16C 48 00 55 89 */ bl GXSetTevOrder -/* 8035A170 38 60 00 02 */ li r3, 2 -/* 8035A174 38 80 00 02 */ li r4, 2 -/* 8035A178 38 A0 00 02 */ li r5, 2 -/* 8035A17C 38 C0 00 04 */ li r6, 4 -/* 8035A180 48 00 55 75 */ bl GXSetTevOrder -/* 8035A184 38 60 00 03 */ li r3, 3 -/* 8035A188 38 80 00 03 */ li r4, 3 -/* 8035A18C 38 A0 00 03 */ li r5, 3 -/* 8035A190 38 C0 00 04 */ li r6, 4 -/* 8035A194 48 00 55 61 */ bl GXSetTevOrder -/* 8035A198 38 60 00 04 */ li r3, 4 -/* 8035A19C 38 80 00 04 */ li r4, 4 -/* 8035A1A0 38 A0 00 04 */ li r5, 4 -/* 8035A1A4 38 C0 00 04 */ li r6, 4 -/* 8035A1A8 48 00 55 4D */ bl GXSetTevOrder -/* 8035A1AC 38 60 00 05 */ li r3, 5 -/* 8035A1B0 38 80 00 05 */ li r4, 5 -/* 8035A1B4 38 A0 00 05 */ li r5, 5 -/* 8035A1B8 38 C0 00 04 */ li r6, 4 -/* 8035A1BC 48 00 55 39 */ bl GXSetTevOrder -/* 8035A1C0 38 60 00 06 */ li r3, 6 -/* 8035A1C4 38 80 00 06 */ li r4, 6 -/* 8035A1C8 38 A0 00 06 */ li r5, 6 -/* 8035A1CC 38 C0 00 04 */ li r6, 4 -/* 8035A1D0 48 00 55 25 */ bl GXSetTevOrder -/* 8035A1D4 38 60 00 07 */ li r3, 7 -/* 8035A1D8 38 80 00 07 */ li r4, 7 -/* 8035A1DC 38 A0 00 07 */ li r5, 7 -/* 8035A1E0 38 C0 00 04 */ li r6, 4 -/* 8035A1E4 48 00 55 11 */ bl GXSetTevOrder -/* 8035A1E8 38 60 00 08 */ li r3, 8 -/* 8035A1EC 38 80 00 FF */ li r4, 0xff -/* 8035A1F0 38 A0 00 FF */ li r5, 0xff -/* 8035A1F4 38 C0 00 FF */ li r6, 0xff -/* 8035A1F8 48 00 54 FD */ bl GXSetTevOrder -/* 8035A1FC 38 60 00 09 */ li r3, 9 -/* 8035A200 38 80 00 FF */ li r4, 0xff -/* 8035A204 38 A0 00 FF */ li r5, 0xff -/* 8035A208 38 C0 00 FF */ li r6, 0xff -/* 8035A20C 48 00 54 E9 */ bl GXSetTevOrder -/* 8035A210 38 60 00 0A */ li r3, 0xa -/* 8035A214 38 80 00 FF */ li r4, 0xff -/* 8035A218 38 A0 00 FF */ li r5, 0xff -/* 8035A21C 38 C0 00 FF */ li r6, 0xff -/* 8035A220 48 00 54 D5 */ bl GXSetTevOrder -/* 8035A224 38 60 00 0B */ li r3, 0xb -/* 8035A228 38 80 00 FF */ li r4, 0xff -/* 8035A22C 38 A0 00 FF */ li r5, 0xff -/* 8035A230 38 C0 00 FF */ li r6, 0xff -/* 8035A234 48 00 54 C1 */ bl GXSetTevOrder -/* 8035A238 38 60 00 0C */ li r3, 0xc -/* 8035A23C 38 80 00 FF */ li r4, 0xff -/* 8035A240 38 A0 00 FF */ li r5, 0xff -/* 8035A244 38 C0 00 FF */ li r6, 0xff -/* 8035A248 48 00 54 AD */ bl GXSetTevOrder -/* 8035A24C 38 60 00 0D */ li r3, 0xd -/* 8035A250 38 80 00 FF */ li r4, 0xff -/* 8035A254 38 A0 00 FF */ li r5, 0xff -/* 8035A258 38 C0 00 FF */ li r6, 0xff -/* 8035A25C 48 00 54 99 */ bl GXSetTevOrder -/* 8035A260 38 60 00 0E */ li r3, 0xe -/* 8035A264 38 80 00 FF */ li r4, 0xff -/* 8035A268 38 A0 00 FF */ li r5, 0xff -/* 8035A26C 38 C0 00 FF */ li r6, 0xff -/* 8035A270 48 00 54 85 */ bl GXSetTevOrder -/* 8035A274 38 60 00 0F */ li r3, 0xf -/* 8035A278 38 80 00 FF */ li r4, 0xff -/* 8035A27C 38 A0 00 FF */ li r5, 0xff -/* 8035A280 38 C0 00 FF */ li r6, 0xff -/* 8035A284 48 00 54 71 */ bl GXSetTevOrder -/* 8035A288 38 60 00 01 */ li r3, 1 -/* 8035A28C 48 00 56 05 */ bl GXSetNumTevStages -/* 8035A290 38 60 00 00 */ li r3, 0 -/* 8035A294 38 80 00 03 */ li r4, 3 -/* 8035A298 48 00 4F 01 */ bl GXSetTevOp -/* 8035A29C 38 60 00 07 */ li r3, 7 -/* 8035A2A0 38 80 00 00 */ li r4, 0 -/* 8035A2A4 38 A0 00 00 */ li r5, 0 -/* 8035A2A8 38 C0 00 07 */ li r6, 7 -/* 8035A2AC 38 E0 00 00 */ li r7, 0 -/* 8035A2B0 48 00 53 75 */ bl GXSetAlphaCompare -/* 8035A2B4 38 60 00 00 */ li r3, 0 -/* 8035A2B8 38 80 00 11 */ li r4, 0x11 -/* 8035A2BC 38 A0 00 00 */ li r5, 0 -/* 8035A2C0 48 00 53 A9 */ bl GXSetZTexture -/* 8035A2C4 3B E0 00 00 */ li r31, 0 -/* 8035A2C8 48 00 00 04 */ b lbl_8035A2CC -lbl_8035A2CC: -/* 8035A2CC 48 00 00 04 */ b lbl_8035A2D0 -lbl_8035A2D0: -/* 8035A2D0 48 00 00 04 */ b lbl_8035A2D4 -lbl_8035A2D4: -/* 8035A2D4 7F E3 FB 78 */ mr r3, r31 -/* 8035A2D8 38 80 00 06 */ li r4, 6 -/* 8035A2DC 48 00 51 C9 */ bl GXSetTevKColorSel -/* 8035A2E0 7F E3 FB 78 */ mr r3, r31 -/* 8035A2E4 38 80 00 00 */ li r4, 0 -/* 8035A2E8 48 00 52 19 */ bl GXSetTevKAlphaSel -/* 8035A2EC 7F E3 FB 78 */ mr r3, r31 -/* 8035A2F0 38 80 00 00 */ li r4, 0 -/* 8035A2F4 38 A0 00 00 */ li r5, 0 -/* 8035A2F8 48 00 52 65 */ bl GXSetTevSwapMode -/* 8035A2FC 3B FF 00 01 */ addi r31, r31, 1 -/* 8035A300 28 1F 00 10 */ cmplwi r31, 0x10 -/* 8035A304 41 80 FF D0 */ blt lbl_8035A2D4 -/* 8035A308 38 60 00 00 */ li r3, 0 -/* 8035A30C 38 80 00 00 */ li r4, 0 -/* 8035A310 38 A0 00 01 */ li r5, 1 -/* 8035A314 38 C0 00 02 */ li r6, 2 -/* 8035A318 38 E0 00 03 */ li r7, 3 -/* 8035A31C 48 00 52 89 */ bl GXSetTevSwapModeTable -/* 8035A320 38 60 00 01 */ li r3, 1 -/* 8035A324 38 80 00 00 */ li r4, 0 -/* 8035A328 38 A0 00 00 */ li r5, 0 -/* 8035A32C 38 C0 00 00 */ li r6, 0 -/* 8035A330 38 E0 00 03 */ li r7, 3 -/* 8035A334 48 00 52 71 */ bl GXSetTevSwapModeTable -/* 8035A338 38 60 00 02 */ li r3, 2 -/* 8035A33C 38 80 00 01 */ li r4, 1 -/* 8035A340 38 A0 00 01 */ li r5, 1 -/* 8035A344 38 C0 00 01 */ li r6, 1 -/* 8035A348 38 E0 00 03 */ li r7, 3 -/* 8035A34C 48 00 52 59 */ bl GXSetTevSwapModeTable -/* 8035A350 38 60 00 03 */ li r3, 3 -/* 8035A354 38 80 00 02 */ li r4, 2 -/* 8035A358 38 A0 00 02 */ li r5, 2 -/* 8035A35C 38 C0 00 02 */ li r6, 2 -/* 8035A360 38 E0 00 03 */ li r7, 3 -/* 8035A364 48 00 52 41 */ bl GXSetTevSwapModeTable -/* 8035A368 3B E0 00 00 */ li r31, 0 -/* 8035A36C 48 00 00 04 */ b lbl_8035A370 -lbl_8035A370: -/* 8035A370 48 00 00 04 */ b lbl_8035A374 -lbl_8035A374: -/* 8035A374 48 00 00 04 */ b lbl_8035A378 -lbl_8035A378: -/* 8035A378 7F E3 FB 78 */ mr r3, r31 -/* 8035A37C 48 00 4D 7D */ bl GXSetTevDirect -/* 8035A380 3B FF 00 01 */ addi r31, r31, 1 -/* 8035A384 28 1F 00 10 */ cmplwi r31, 0x10 -/* 8035A388 41 80 FF F0 */ blt lbl_8035A378 -/* 8035A38C 38 60 00 00 */ li r3, 0 -/* 8035A390 48 00 4D 45 */ bl GXSetNumIndStages -/* 8035A394 38 60 00 00 */ li r3, 0 -/* 8035A398 38 80 00 00 */ li r4, 0 -/* 8035A39C 38 A0 00 00 */ li r5, 0 -/* 8035A3A0 48 00 4B 05 */ bl GXSetIndTexCoordScale -/* 8035A3A4 38 60 00 01 */ li r3, 1 -/* 8035A3A8 38 80 00 00 */ li r4, 0 -/* 8035A3AC 38 A0 00 00 */ li r5, 0 -/* 8035A3B0 48 00 4A F5 */ bl GXSetIndTexCoordScale -/* 8035A3B4 38 60 00 02 */ li r3, 2 -/* 8035A3B8 38 80 00 00 */ li r4, 0 -/* 8035A3BC 38 A0 00 00 */ li r5, 0 -/* 8035A3C0 48 00 4A E5 */ bl GXSetIndTexCoordScale -/* 8035A3C4 38 60 00 03 */ li r3, 3 -/* 8035A3C8 38 80 00 00 */ li r4, 0 -/* 8035A3CC 38 A0 00 00 */ li r5, 0 -/* 8035A3D0 48 00 4A D5 */ bl GXSetIndTexCoordScale -/* 8035A3D4 C0 42 CB 98 */ lfs f2, lit_331(r2) -/* 8035A3D8 38 81 00 08 */ addi r4, r1, 8 -/* 8035A3DC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035A3E0 38 60 00 00 */ li r3, 0 -/* 8035A3E4 FC 80 10 90 */ fmr f4, f2 -/* 8035A3E8 90 01 00 08 */ stw r0, 8(r1) -/* 8035A3EC C0 22 CB 88 */ lfs f1, lit_268(r2) -/* 8035A3F0 C0 62 CB 9C */ lfs f3, lit_332(r2) -/* 8035A3F4 48 00 54 C5 */ bl GXSetFog -/* 8035A3F8 38 60 00 00 */ li r3, 0 -/* 8035A3FC 38 80 00 00 */ li r4, 0 -/* 8035A400 38 A0 00 00 */ li r5, 0 -/* 8035A404 48 00 56 C9 */ bl GXSetFogRangeAdj -/* 8035A408 38 60 00 00 */ li r3, 0 -/* 8035A40C 38 80 00 04 */ li r4, 4 -/* 8035A410 38 A0 00 05 */ li r5, 5 -/* 8035A414 38 C0 00 00 */ li r6, 0 -/* 8035A418 48 00 57 D9 */ bl GXSetBlendMode -/* 8035A41C 38 60 00 01 */ li r3, 1 -/* 8035A420 48 00 58 25 */ bl GXSetColorUpdate -/* 8035A424 38 60 00 01 */ li r3, 1 -/* 8035A428 48 00 58 49 */ bl GXSetAlphaUpdate -/* 8035A42C 38 60 00 01 */ li r3, 1 -/* 8035A430 38 80 00 03 */ li r4, 3 -/* 8035A434 38 A0 00 01 */ li r5, 1 -/* 8035A438 48 00 58 65 */ bl GXSetZMode -/* 8035A43C 38 60 00 01 */ li r3, 1 -/* 8035A440 48 00 58 91 */ bl GXSetZCompLoc -/* 8035A444 38 60 00 01 */ li r3, 1 -/* 8035A448 48 00 59 91 */ bl GXSetDither -/* 8035A44C 38 60 00 00 */ li r3, 0 -/* 8035A450 38 80 00 00 */ li r4, 0 -/* 8035A454 48 00 59 B1 */ bl GXSetDstAlpha -/* 8035A458 38 60 00 00 */ li r3, 0 -/* 8035A45C 38 80 00 00 */ li r4, 0 -/* 8035A460 48 00 58 A5 */ bl GXSetPixelFmt -/* 8035A464 38 60 00 01 */ li r3, 1 -/* 8035A468 38 80 00 01 */ li r4, 1 -/* 8035A46C 48 00 59 D5 */ bl GXSetFieldMask -/* 8035A470 A0 1E 00 08 */ lhz r0, 8(r30) -/* 8035A474 A0 7E 00 10 */ lhz r3, 0x10(r30) -/* 8035A478 54 00 08 3C */ slwi r0, r0, 1 -/* 8035A47C 7C 03 00 00 */ cmpw r3, r0 -/* 8035A480 40 82 00 0C */ bne lbl_8035A48C -/* 8035A484 38 80 00 01 */ li r4, 1 -/* 8035A488 48 00 00 08 */ b lbl_8035A490 -lbl_8035A48C: -/* 8035A48C 38 80 00 00 */ li r4, 0 -lbl_8035A490: -/* 8035A490 88 7E 00 18 */ lbz r3, 0x18(r30) -/* 8035A494 48 00 59 E5 */ bl GXSetFieldMode -/* 8035A498 A0 BE 00 04 */ lhz r5, 4(r30) -/* 8035A49C 38 60 00 00 */ li r3, 0 -/* 8035A4A0 A0 DE 00 06 */ lhz r6, 6(r30) -/* 8035A4A4 38 80 00 00 */ li r4, 0 -/* 8035A4A8 48 00 25 5D */ bl GXSetDispCopySrc -/* 8035A4AC A0 7E 00 04 */ lhz r3, 4(r30) -/* 8035A4B0 A0 9E 00 06 */ lhz r4, 6(r30) -/* 8035A4B4 48 00 26 49 */ bl GXSetDispCopyDst -/* 8035A4B8 A0 9E 00 08 */ lhz r4, 8(r30) -/* 8035A4BC 3C 60 43 30 */ lis r3, 0x4330 -/* 8035A4C0 A0 1E 00 06 */ lhz r0, 6(r30) -/* 8035A4C4 90 81 00 84 */ stw r4, 0x84(r1) -/* 8035A4C8 C8 42 CB A0 */ lfd f2, lit_334(r2) -/* 8035A4CC 90 01 00 8C */ stw r0, 0x8c(r1) -/* 8035A4D0 90 61 00 80 */ stw r3, 0x80(r1) -/* 8035A4D4 90 61 00 88 */ stw r3, 0x88(r1) -/* 8035A4D8 C8 21 00 80 */ lfd f1, 0x80(r1) -/* 8035A4DC C8 01 00 88 */ lfd f0, 0x88(r1) -/* 8035A4E0 EC 21 10 28 */ fsubs f1, f1, f2 -/* 8035A4E4 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8035A4E8 EC 21 00 24 */ fdivs f1, f1, f0 -/* 8035A4EC 48 00 2A B9 */ bl GXSetDispCopyYScale -/* 8035A4F0 38 60 00 03 */ li r3, 3 -/* 8035A4F4 48 00 27 91 */ bl GXSetCopyClamp -/* 8035A4F8 88 7E 00 19 */ lbz r3, 0x19(r30) -/* 8035A4FC 38 9E 00 1A */ addi r4, r30, 0x1a -/* 8035A500 38 DE 00 32 */ addi r6, r30, 0x32 -/* 8035A504 38 A0 00 01 */ li r5, 1 -/* 8035A508 48 00 2B E1 */ bl GXSetCopyFilter -/* 8035A50C 38 60 00 00 */ li r3, 0 -/* 8035A510 48 00 2D E1 */ bl GXSetDispCopyGamma -/* 8035A514 38 60 00 00 */ li r3, 0 -/* 8035A518 48 00 27 49 */ bl GXSetDispCopyFrame2Field -/* 8035A51C 48 00 30 DD */ bl GXClearBoundingBox -/* 8035A520 38 60 00 01 */ li r3, 1 -/* 8035A524 48 00 1F 25 */ bl GXPokeColorUpdate -/* 8035A528 38 60 00 01 */ li r3, 1 -/* 8035A52C 48 00 1E A1 */ bl GXPokeAlphaUpdate -/* 8035A530 38 60 00 00 */ li r3, 0 -/* 8035A534 48 00 1F 51 */ bl GXPokeDither -/* 8035A538 38 60 00 00 */ li r3, 0 -/* 8035A53C 38 80 00 00 */ li r4, 0 -/* 8035A540 38 A0 00 01 */ li r5, 1 -/* 8035A544 38 C0 00 0F */ li r6, 0xf -/* 8035A548 48 00 1E 9D */ bl GXPokeBlendMode -/* 8035A54C 38 60 00 07 */ li r3, 7 -/* 8035A550 38 80 00 00 */ li r4, 0 -/* 8035A554 48 00 1E 45 */ bl GXPokeAlphaMode -/* 8035A558 38 60 00 01 */ li r3, 1 -/* 8035A55C 48 00 1E 51 */ bl GXPokeAlphaRead -/* 8035A560 38 60 00 00 */ li r3, 0 -/* 8035A564 38 80 00 00 */ li r4, 0 -/* 8035A568 48 00 1E F9 */ bl GXPokeDstAlpha -/* 8035A56C 38 60 00 01 */ li r3, 1 -/* 8035A570 38 80 00 07 */ li r4, 7 -/* 8035A574 38 A0 00 01 */ li r5, 1 -/* 8035A578 48 00 1F 25 */ bl GXPokeZMode -/* 8035A57C 38 60 00 23 */ li r3, 0x23 -/* 8035A580 38 80 00 16 */ li r4, 0x16 -/* 8035A584 48 00 60 F9 */ bl GXSetGPMetric -/* 8035A588 48 00 69 3D */ bl GXClearGPMetric -/* 8035A58C 80 01 00 A4 */ lwz r0, 0xa4(r1) -/* 8035A590 83 E1 00 9C */ lwz r31, 0x9c(r1) -/* 8035A594 83 C1 00 98 */ lwz r30, 0x98(r1) -/* 8035A598 83 A1 00 94 */ lwz r29, 0x94(r1) -/* 8035A59C 38 21 00 A0 */ addi r1, r1, 0xa0 -/* 8035A5A0 7C 08 03 A6 */ mtlr r0 -/* 8035A5A4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXSetChanAmbColor.s b/asm/dolphin/gx/GXLight/GXSetChanAmbColor.s deleted file mode 100644 index bf9f5ae40c..0000000000 --- a/asm/dolphin/gx/GXLight/GXSetChanAmbColor.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_8035D960: -/* 8035D960 2C 03 00 03 */ cmpwi r3, 3 -/* 8035D964 41 82 00 7C */ beq lbl_8035D9E0 -/* 8035D968 40 80 00 1C */ bge lbl_8035D984 -/* 8035D96C 2C 03 00 01 */ cmpwi r3, 1 -/* 8035D970 41 82 00 40 */ beq lbl_8035D9B0 -/* 8035D974 40 80 00 54 */ bge lbl_8035D9C8 -/* 8035D978 2C 03 00 00 */ cmpwi r3, 0 -/* 8035D97C 40 80 00 18 */ bge lbl_8035D994 -/* 8035D980 4E 80 00 20 */ blr -lbl_8035D984: -/* 8035D984 2C 03 00 05 */ cmpwi r3, 5 -/* 8035D988 41 82 00 7C */ beq lbl_8035DA04 -/* 8035D98C 4C 80 00 20 */ bgelr -/* 8035D990 48 00 00 68 */ b lbl_8035D9F8 -lbl_8035D994: -/* 8035D994 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D998 38 A0 00 00 */ li r5, 0 -/* 8035D99C 80 04 00 00 */ lwz r0, 0(r4) -/* 8035D9A0 80 63 00 A8 */ lwz r3, 0xa8(r3) -/* 8035D9A4 50 03 00 2E */ rlwimi r3, r0, 0, 0, 0x17 -/* 8035D9A8 38 E3 00 00 */ addi r7, r3, 0 -/* 8035D9AC 48 00 00 68 */ b lbl_8035DA14 -lbl_8035D9B0: -/* 8035D9B0 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D9B4 38 A0 00 01 */ li r5, 1 -/* 8035D9B8 80 04 00 00 */ lwz r0, 0(r4) -/* 8035D9BC 80 E3 00 AC */ lwz r7, 0xac(r3) -/* 8035D9C0 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17 -/* 8035D9C4 48 00 00 50 */ b lbl_8035DA14 -lbl_8035D9C8: -/* 8035D9C8 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D9CC 38 A0 00 00 */ li r5, 0 -/* 8035D9D0 88 04 00 03 */ lbz r0, 3(r4) -/* 8035D9D4 80 E3 00 A8 */ lwz r7, 0xa8(r3) -/* 8035D9D8 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f -/* 8035D9DC 48 00 00 38 */ b lbl_8035DA14 -lbl_8035D9E0: -/* 8035D9E0 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D9E4 38 A0 00 01 */ li r5, 1 -/* 8035D9E8 88 04 00 03 */ lbz r0, 3(r4) -/* 8035D9EC 80 E3 00 AC */ lwz r7, 0xac(r3) -/* 8035D9F0 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f -/* 8035D9F4 48 00 00 20 */ b lbl_8035DA14 -lbl_8035D9F8: -/* 8035D9F8 80 E4 00 00 */ lwz r7, 0(r4) -/* 8035D9FC 38 A0 00 00 */ li r5, 0 -/* 8035DA00 48 00 00 14 */ b lbl_8035DA14 -lbl_8035DA04: -/* 8035DA04 80 E4 00 00 */ lwz r7, 0(r4) -/* 8035DA08 38 A0 00 01 */ li r5, 1 -/* 8035DA0C 48 00 00 08 */ b lbl_8035DA14 -/* 8035DA10 4E 80 00 20 */ blr -lbl_8035DA14: -/* 8035DA14 38 00 00 10 */ li r0, 0x10 -/* 8035DA18 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035DA1C 3C C0 CC 01 */ lis r6, 0xCC01 /* 0xCC008000@ha */ -/* 8035DA20 98 06 80 00 */ stb r0, 0x8000(r6) /* 0xCC008000@l */ -/* 8035DA24 38 65 10 0A */ addi r3, r5, 0x100a -/* 8035DA28 54 A0 10 3A */ slwi r0, r5, 2 -/* 8035DA2C 90 66 80 00 */ stw r3, -0x8000(r6) -/* 8035DA30 38 A0 00 01 */ li r5, 1 -/* 8035DA34 7C 64 02 14 */ add r3, r4, r0 -/* 8035DA38 90 E6 80 00 */ stw r7, -0x8000(r6) -/* 8035DA3C B0 A4 00 02 */ sth r5, 2(r4) -/* 8035DA40 90 E3 00 A8 */ stw r7, 0xa8(r3) -/* 8035DA44 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXSetChanCtrl.s b/asm/dolphin/gx/GXLight/GXSetChanCtrl.s deleted file mode 100644 index 64aff77781..0000000000 --- a/asm/dolphin/gx/GXLight/GXSetChanCtrl.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_8035DB6C: -/* 8035DB6C 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 8035DB70 38 80 00 00 */ li r4, 0 -/* 8035DB74 50 04 0F BC */ rlwimi r4, r0, 1, 0x1e, 0x1e -/* 8035DB78 39 44 00 00 */ addi r10, r4, 0 -/* 8035DB7C 50 CA 07 FE */ rlwimi r10, r6, 0, 0x1f, 0x1f -/* 8035DB80 2C 09 00 00 */ cmpwi r9, 0 -/* 8035DB84 50 AA 36 72 */ rlwimi r10, r5, 6, 0x19, 0x19 -/* 8035DB88 54 6B 07 BE */ clrlwi r11, r3, 0x1e -/* 8035DB8C 40 82 00 08 */ bne lbl_8035DB94 -/* 8035DB90 39 00 00 00 */ li r8, 0 -lbl_8035DB94: -/* 8035DB94 20 89 00 02 */ subfic r4, r9, 2 -/* 8035DB98 30 04 FF FF */ addic r0, r4, -1 -/* 8035DB9C 7C 00 21 10 */ subfe r0, r0, r4 -/* 8035DBA0 7D 29 00 D0 */ neg r9, r9 -/* 8035DBA4 51 0A 3D F0 */ rlwimi r10, r8, 7, 0x17, 0x18 -/* 8035DBA8 30 C9 FF FF */ addic r6, r9, -1 -/* 8035DBAC 50 0A 4D AC */ rlwimi r10, r0, 9, 0x16, 0x16 -/* 8035DBB0 7C C6 49 10 */ subfe r6, r6, r9 -/* 8035DBB4 50 CA 55 6A */ rlwimi r10, r6, 0xa, 0x15, 0x15 -/* 8035DBB8 50 EA 16 BA */ rlwimi r10, r7, 2, 0x1a, 0x1d -/* 8035DBBC 38 A0 00 10 */ li r5, 0x10 -/* 8035DBC0 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035DBC4 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8035DBC8 38 0B 10 0E */ addi r0, r11, 0x100e -/* 8035DBCC 50 EA 3C 68 */ rlwimi r10, r7, 7, 0x11, 0x14 -/* 8035DBD0 90 04 80 00 */ stw r0, -0x8000(r4) -/* 8035DBD4 2C 03 00 04 */ cmpwi r3, 4 -/* 8035DBD8 91 44 80 00 */ stw r10, -0x8000(r4) -/* 8035DBDC 40 82 00 18 */ bne lbl_8035DBF4 -/* 8035DBE0 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035DBE4 38 00 10 10 */ li r0, 0x1010 -/* 8035DBE8 90 04 80 00 */ stw r0, -0x8000(r4) -/* 8035DBEC 91 44 80 00 */ stw r10, -0x8000(r4) -/* 8035DBF0 48 00 00 1C */ b lbl_8035DC0C -lbl_8035DBF4: -/* 8035DBF4 2C 03 00 05 */ cmpwi r3, 5 -/* 8035DBF8 40 82 00 14 */ bne lbl_8035DC0C -/* 8035DBFC 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035DC00 38 00 10 11 */ li r0, 0x1011 -/* 8035DC04 90 04 80 00 */ stw r0, -0x8000(r4) -/* 8035DC08 91 44 80 00 */ stw r10, -0x8000(r4) -lbl_8035DC0C: -/* 8035DC0C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035DC10 38 00 00 01 */ li r0, 1 -/* 8035DC14 B0 03 00 02 */ sth r0, 2(r3) -/* 8035DC18 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXSetChanMatColor.s b/asm/dolphin/gx/GXLight/GXSetChanMatColor.s deleted file mode 100644 index 20a42633b7..0000000000 --- a/asm/dolphin/gx/GXLight/GXSetChanMatColor.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_8035DA48: -/* 8035DA48 2C 03 00 03 */ cmpwi r3, 3 -/* 8035DA4C 41 82 00 7C */ beq lbl_8035DAC8 -/* 8035DA50 40 80 00 1C */ bge lbl_8035DA6C -/* 8035DA54 2C 03 00 01 */ cmpwi r3, 1 -/* 8035DA58 41 82 00 40 */ beq lbl_8035DA98 -/* 8035DA5C 40 80 00 54 */ bge lbl_8035DAB0 -/* 8035DA60 2C 03 00 00 */ cmpwi r3, 0 -/* 8035DA64 40 80 00 18 */ bge lbl_8035DA7C -/* 8035DA68 4E 80 00 20 */ blr -lbl_8035DA6C: -/* 8035DA6C 2C 03 00 05 */ cmpwi r3, 5 -/* 8035DA70 41 82 00 7C */ beq lbl_8035DAEC -/* 8035DA74 4C 80 00 20 */ bgelr -/* 8035DA78 48 00 00 68 */ b lbl_8035DAE0 -lbl_8035DA7C: -/* 8035DA7C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035DA80 38 A0 00 00 */ li r5, 0 -/* 8035DA84 80 04 00 00 */ lwz r0, 0(r4) -/* 8035DA88 80 63 00 B0 */ lwz r3, 0xb0(r3) -/* 8035DA8C 50 03 00 2E */ rlwimi r3, r0, 0, 0, 0x17 -/* 8035DA90 38 E3 00 00 */ addi r7, r3, 0 -/* 8035DA94 48 00 00 68 */ b lbl_8035DAFC -lbl_8035DA98: -/* 8035DA98 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035DA9C 38 A0 00 01 */ li r5, 1 -/* 8035DAA0 80 04 00 00 */ lwz r0, 0(r4) -/* 8035DAA4 80 E3 00 B4 */ lwz r7, 0xb4(r3) -/* 8035DAA8 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17 -/* 8035DAAC 48 00 00 50 */ b lbl_8035DAFC -lbl_8035DAB0: -/* 8035DAB0 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035DAB4 38 A0 00 00 */ li r5, 0 -/* 8035DAB8 88 04 00 03 */ lbz r0, 3(r4) -/* 8035DABC 80 E3 00 B0 */ lwz r7, 0xb0(r3) -/* 8035DAC0 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f -/* 8035DAC4 48 00 00 38 */ b lbl_8035DAFC -lbl_8035DAC8: -/* 8035DAC8 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035DACC 38 A0 00 01 */ li r5, 1 -/* 8035DAD0 88 04 00 03 */ lbz r0, 3(r4) -/* 8035DAD4 80 E3 00 B4 */ lwz r7, 0xb4(r3) -/* 8035DAD8 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f -/* 8035DADC 48 00 00 20 */ b lbl_8035DAFC -lbl_8035DAE0: -/* 8035DAE0 80 E4 00 00 */ lwz r7, 0(r4) -/* 8035DAE4 38 A0 00 00 */ li r5, 0 -/* 8035DAE8 48 00 00 14 */ b lbl_8035DAFC -lbl_8035DAEC: -/* 8035DAEC 80 E4 00 00 */ lwz r7, 0(r4) -/* 8035DAF0 38 A0 00 01 */ li r5, 1 -/* 8035DAF4 48 00 00 08 */ b lbl_8035DAFC -/* 8035DAF8 4E 80 00 20 */ blr -lbl_8035DAFC: -/* 8035DAFC 38 00 00 10 */ li r0, 0x10 -/* 8035DB00 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035DB04 3C C0 CC 01 */ lis r6, 0xCC01 /* 0xCC008000@ha */ -/* 8035DB08 98 06 80 00 */ stb r0, 0x8000(r6) /* 0xCC008000@l */ -/* 8035DB0C 38 65 10 0C */ addi r3, r5, 0x100c -/* 8035DB10 54 A0 10 3A */ slwi r0, r5, 2 -/* 8035DB14 90 66 80 00 */ stw r3, -0x8000(r6) -/* 8035DB18 38 A0 00 01 */ li r5, 1 -/* 8035DB1C 7C 64 02 14 */ add r3, r4, r0 -/* 8035DB20 90 E6 80 00 */ stw r7, -0x8000(r6) -/* 8035DB24 B0 A4 00 02 */ sth r5, 2(r4) -/* 8035DB28 90 E3 00 B0 */ stw r7, 0xb0(r3) -/* 8035DB2C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXSetNumChans.s b/asm/dolphin/gx/GXLight/GXSetNumChans.s deleted file mode 100644 index 10545d1428..0000000000 --- a/asm/dolphin/gx/GXLight/GXSetNumChans.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8035DB30: -/* 8035DB30 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035DB34 54 65 06 3E */ clrlwi r5, r3, 0x18 -/* 8035DB38 38 80 00 10 */ li r4, 0x10 -/* 8035DB3C 80 06 02 04 */ lwz r0, 0x204(r6) -/* 8035DB40 50 60 26 76 */ rlwimi r0, r3, 4, 0x19, 0x1b -/* 8035DB44 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035DB48 90 06 02 04 */ stw r0, 0x204(r6) -/* 8035DB4C 38 00 10 09 */ li r0, 0x1009 -/* 8035DB50 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */ -/* 8035DB54 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035DB58 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035DB5C 80 06 05 AC */ lwz r0, 0x5ac(r6) -/* 8035DB60 60 00 00 04 */ ori r0, r0, 4 -/* 8035DB64 90 06 05 AC */ stw r0, 0x5ac(r6) -/* 8035DB68 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXMisc/GXAbortFrame.s b/asm/dolphin/gx/GXMisc/GXAbortFrame.s deleted file mode 100644 index ce88ff4125..0000000000 --- a/asm/dolphin/gx/GXMisc/GXAbortFrame.s +++ /dev/null @@ -1,124 +0,0 @@ -lbl_8035C094: -/* 8035C094 7C 08 02 A6 */ mflr r0 -/* 8035C098 90 01 00 04 */ stw r0, 4(r1) -/* 8035C09C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035C0A0 BF 61 00 14 */ stmw r27, 0x14(r1) -/* 8035C0A4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C0A8 88 03 05 AA */ lbz r0, 0x5aa(r3) -/* 8035C0AC 28 00 00 00 */ cmplwi r0, 0 -/* 8035C0B0 41 82 00 B0 */ beq lbl_8035C160 -/* 8035C0B4 4B FF ED FD */ bl GXGetGPFifo -/* 8035C0B8 28 03 00 00 */ cmplwi r3, 0 -/* 8035C0BC 41 82 00 A4 */ beq lbl_8035C160 -/* 8035C0C0 80 6D 93 AC */ lwz r3, __memReg(r13) -/* 8035C0C4 38 C3 00 4E */ addi r6, r3, 0x4e -/* 8035C0C8 A0 83 00 4E */ lhz r4, 0x4e(r3) -/* 8035C0CC 38 A3 00 50 */ addi r5, r3, 0x50 -lbl_8035C0D0: -/* 8035C0D0 7C 80 23 78 */ mr r0, r4 -/* 8035C0D4 A0 86 00 00 */ lhz r4, 0(r6) -/* 8035C0D8 A0 65 00 00 */ lhz r3, 0(r5) -/* 8035C0DC 7C 04 00 40 */ cmplw r4, r0 -/* 8035C0E0 40 82 FF F0 */ bne lbl_8035C0D0 -/* 8035C0E4 54 80 80 1E */ slwi r0, r4, 0x10 -/* 8035C0E8 7C 1B 1B 78 */ or r27, r0, r3 -lbl_8035C0EC: -/* 8035C0EC 4B FE 66 11 */ bl OSGetTime -/* 8035C0F0 38 00 00 00 */ li r0, 0 -/* 8035C0F4 3B E4 00 00 */ addi r31, r4, 0 -/* 8035C0F8 3B C3 00 00 */ addi r30, r3, 0 -/* 8035C0FC 6C 1C 80 00 */ xoris r28, r0, 0x8000 -/* 8035C100 3B A0 00 08 */ li r29, 8 -lbl_8035C104: -/* 8035C104 4B FE 65 F9 */ bl OSGetTime -/* 8035C108 7C 9F 20 10 */ subfc r4, r31, r4 -/* 8035C10C 7C 1E 19 10 */ subfe r0, r30, r3 -/* 8035C110 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035C114 7C 04 E8 10 */ subfc r0, r4, r29 -/* 8035C118 7C 63 E1 10 */ subfe r3, r3, r28 -/* 8035C11C 7C 7C E1 10 */ subfe r3, r28, r28 -/* 8035C120 7C 63 00 D1 */ neg. r3, r3 -/* 8035C124 41 82 FF E0 */ beq lbl_8035C104 -/* 8035C128 80 6D 93 AC */ lwz r3, __memReg(r13) -/* 8035C12C 38 C3 00 4E */ addi r6, r3, 0x4e -/* 8035C130 A0 83 00 4E */ lhz r4, 0x4e(r3) -/* 8035C134 38 A3 00 50 */ addi r5, r3, 0x50 -lbl_8035C138: -/* 8035C138 7C 80 23 78 */ mr r0, r4 -/* 8035C13C A0 86 00 00 */ lhz r4, 0(r6) -/* 8035C140 A0 65 00 00 */ lhz r3, 0(r5) -/* 8035C144 7C 04 00 40 */ cmplw r4, r0 -/* 8035C148 40 82 FF F0 */ bne lbl_8035C138 -/* 8035C14C 54 80 80 1E */ slwi r0, r4, 0x10 -/* 8035C150 7C 00 1B 78 */ or r0, r0, r3 -/* 8035C154 7C 00 D8 40 */ cmplw r0, r27 -/* 8035C158 7C 1B 03 78 */ mr r27, r0 -/* 8035C15C 40 82 FF 90 */ bne lbl_8035C0EC -lbl_8035C160: -/* 8035C160 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC003000@ha */ -/* 8035C164 38 00 00 01 */ li r0, 1 -/* 8035C168 3B 63 30 00 */ addi r27, r3, 0x3000 /* 0xCC003000@l */ -/* 8035C16C 94 1B 00 18 */ stwu r0, 0x18(r27) -/* 8035C170 4B FE 65 8D */ bl OSGetTime -/* 8035C174 38 00 00 00 */ li r0, 0 -/* 8035C178 3B E4 00 00 */ addi r31, r4, 0 -/* 8035C17C 3B C3 00 00 */ addi r30, r3, 0 -/* 8035C180 6C 1C 80 00 */ xoris r28, r0, 0x8000 -/* 8035C184 3B A0 00 32 */ li r29, 0x32 -lbl_8035C188: -/* 8035C188 4B FE 65 75 */ bl OSGetTime -/* 8035C18C 7C 9F 20 10 */ subfc r4, r31, r4 -/* 8035C190 7C 1E 19 10 */ subfe r0, r30, r3 -/* 8035C194 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035C198 7C 04 E8 10 */ subfc r0, r4, r29 -/* 8035C19C 7C 63 E1 10 */ subfe r3, r3, r28 -/* 8035C1A0 7C 7C E1 10 */ subfe r3, r28, r28 -/* 8035C1A4 7C 63 00 D1 */ neg. r3, r3 -/* 8035C1A8 41 82 FF E0 */ beq lbl_8035C188 -/* 8035C1AC 3B C0 00 00 */ li r30, 0 -/* 8035C1B0 93 DB 00 00 */ stw r30, 0(r27) -/* 8035C1B4 4B FE 65 49 */ bl OSGetTime -/* 8035C1B8 3B 84 00 00 */ addi r28, r4, 0 -/* 8035C1BC 3B A3 00 00 */ addi r29, r3, 0 -/* 8035C1C0 6F DF 80 00 */ xoris r31, r30, 0x8000 -/* 8035C1C4 3B C0 00 05 */ li r30, 5 -lbl_8035C1C8: -/* 8035C1C8 4B FE 65 35 */ bl OSGetTime -/* 8035C1CC 7C 9C 20 10 */ subfc r4, r28, r4 -/* 8035C1D0 7C 1D 19 10 */ subfe r0, r29, r3 -/* 8035C1D4 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035C1D8 7C 04 F0 10 */ subfc r0, r4, r30 -/* 8035C1DC 7C 63 F9 10 */ subfe r3, r3, r31 -/* 8035C1E0 7C 7F F9 10 */ subfe r3, r31, r31 -/* 8035C1E4 7C 63 00 D1 */ neg. r3, r3 -/* 8035C1E8 41 82 FF E0 */ beq lbl_8035C1C8 -/* 8035C1EC 4B FF EC C5 */ bl GXGetGPFifo -/* 8035C1F0 28 03 00 00 */ cmplwi r3, 0 -/* 8035C1F4 41 82 00 54 */ beq lbl_8035C248 -/* 8035C1F8 4B FF EB 5D */ bl __GXCleanGPFifo -/* 8035C1FC 4B FF D2 D1 */ bl __GXInitRevisionBits -/* 8035C200 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C204 38 00 00 00 */ li r0, 0 -/* 8035C208 90 03 05 AC */ stw r0, 0x5ac(r3) -/* 8035C20C 80 03 05 AC */ lwz r0, 0x5ac(r3) -/* 8035C210 28 00 00 00 */ cmplwi r0, 0 -/* 8035C214 41 82 00 08 */ beq lbl_8035C21C -/* 8035C218 48 00 04 CD */ bl __GXSetDirtyState -lbl_8035C21C: -/* 8035C21C 38 00 00 00 */ li r0, 0 -/* 8035C220 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035C224 90 03 80 00 */ stw r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035C228 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C22C 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C230 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C234 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C238 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C23C 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C240 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C244 4B FD DA B5 */ bl PPCSync -lbl_8035C248: -/* 8035C248 BB 61 00 14 */ lmw r27, 0x14(r1) -/* 8035C24C 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035C250 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035C254 7C 08 03 A6 */ mtlr r0 -/* 8035C258 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXMisc/GXFinishInterruptHandler.s b/asm/dolphin/gx/GXMisc/GXFinishInterruptHandler.s deleted file mode 100644 index bcaeefde75..0000000000 --- a/asm/dolphin/gx/GXMisc/GXFinishInterruptHandler.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_8035C5F0: -/* 8035C5F0 7C 08 02 A6 */ mflr r0 -/* 8035C5F4 38 60 00 01 */ li r3, 1 -/* 8035C5F8 90 01 00 04 */ stw r0, 4(r1) -/* 8035C5FC 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 8035C600 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 8035C604 3B E4 00 00 */ addi r31, r4, 0 -/* 8035C608 80 AD 93 A8 */ lwz r5, __peReg(r13) -/* 8035C60C A0 05 00 0A */ lhz r0, 0xa(r5) -/* 8035C610 50 60 1F 38 */ rlwimi r0, r3, 3, 0x1c, 0x1c -/* 8035C614 B0 05 00 0A */ sth r0, 0xa(r5) -/* 8035C618 80 0D 93 EC */ lwz r0, DrawDoneCB(r13) -/* 8035C61C 98 6D 93 F0 */ stb r3, data_80451970(r13) -/* 8035C620 28 00 00 00 */ cmplwi r0, 0 -/* 8035C624 41 82 00 30 */ beq lbl_8035C654 -/* 8035C628 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C62C 4B FD F9 D5 */ bl OSClearContext -/* 8035C630 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C634 4B FD F8 05 */ bl OSSetCurrentContext -/* 8035C638 81 8D 93 EC */ lwz r12, DrawDoneCB(r13) -/* 8035C63C 7D 88 03 A6 */ mtlr r12 -/* 8035C640 4E 80 00 21 */ blrl -/* 8035C644 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C648 4B FD F9 B9 */ bl OSClearContext -/* 8035C64C 7F E3 FB 78 */ mr r3, r31 -/* 8035C650 4B FD F7 E9 */ bl OSSetCurrentContext -lbl_8035C654: -/* 8035C654 38 6D 93 F4 */ la r3, FinishQueue(r13) /* 80451974-_SDA_BASE_ */ -/* 8035C658 4B FE 56 41 */ bl OSWakeupThread -/* 8035C65C 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 8035C660 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 8035C664 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 8035C668 7C 08 03 A6 */ mtlr r0 -/* 8035C66C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXMisc/GXPokeBlendMode.s b/asm/dolphin/gx/GXMisc/GXPokeBlendMode.s deleted file mode 100644 index 951e8c8e0f..0000000000 --- a/asm/dolphin/gx/GXMisc/GXPokeBlendMode.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_8035C3E4: -/* 8035C3E4 80 ED 93 A8 */ lwz r7, __peReg(r13) -/* 8035C3E8 2C 03 00 01 */ cmpwi r3, 1 -/* 8035C3EC 39 20 00 01 */ li r9, 1 -/* 8035C3F0 A1 47 00 02 */ lhz r10, 2(r7) -/* 8035C3F4 41 82 00 10 */ beq lbl_8035C404 -/* 8035C3F8 2C 03 00 03 */ cmpwi r3, 3 -/* 8035C3FC 41 82 00 08 */ beq lbl_8035C404 -/* 8035C400 39 20 00 00 */ li r9, 0 -lbl_8035C404: -/* 8035C404 20 03 00 03 */ subfic r0, r3, 3 -/* 8035C408 80 ED 93 A8 */ lwz r7, __peReg(r13) -/* 8035C40C 7C 08 00 34 */ cntlzw r8, r0 -/* 8035C410 20 03 00 02 */ subfic r0, r3, 2 -/* 8035C414 51 2A 07 FE */ rlwimi r10, r9, 0, 0x1f, 0x1f -/* 8035C418 55 03 D9 7E */ srwi r3, r8, 5 -/* 8035C41C 39 0A 00 00 */ addi r8, r10, 0 -/* 8035C420 7C 00 00 34 */ cntlzw r0, r0 -/* 8035C424 50 68 5D 28 */ rlwimi r8, r3, 0xb, 0x14, 0x14 -/* 8035C428 50 08 E7 BC */ rlwimi r8, r0, 0x1c, 0x1e, 0x1e -/* 8035C42C 50 C8 64 26 */ rlwimi r8, r6, 0xc, 0x10, 0x13 -/* 8035C430 50 88 45 6E */ rlwimi r8, r4, 8, 0x15, 0x17 -/* 8035C434 38 00 00 41 */ li r0, 0x41 -/* 8035C438 50 A8 2E 34 */ rlwimi r8, r5, 5, 0x18, 0x1a -/* 8035C43C 50 08 C0 0E */ rlwimi r8, r0, 0x18, 0, 7 -/* 8035C440 B1 07 00 02 */ sth r8, 2(r7) -/* 8035C444 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXMisc/GXTokenInterruptHandler.s b/asm/dolphin/gx/GXMisc/GXTokenInterruptHandler.s deleted file mode 100644 index b3417d3090..0000000000 --- a/asm/dolphin/gx/GXMisc/GXTokenInterruptHandler.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_8035C524: -/* 8035C524 7C 08 02 A6 */ mflr r0 -/* 8035C528 90 01 00 04 */ stw r0, 4(r1) -/* 8035C52C 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 8035C530 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 8035C534 93 C1 02 D8 */ stw r30, 0x2d8(r1) -/* 8035C538 7C 9E 23 78 */ mr r30, r4 -/* 8035C53C 80 0D 93 E8 */ lwz r0, TokenCB(r13) -/* 8035C540 80 6D 93 A8 */ lwz r3, __peReg(r13) -/* 8035C544 28 00 00 00 */ cmplwi r0, 0 -/* 8035C548 A3 E3 00 0E */ lhz r31, 0xe(r3) -/* 8035C54C 41 82 00 34 */ beq lbl_8035C580 -/* 8035C550 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C554 4B FD FA AD */ bl OSClearContext -/* 8035C558 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C55C 4B FD F8 DD */ bl OSSetCurrentContext -/* 8035C560 81 8D 93 E8 */ lwz r12, TokenCB(r13) -/* 8035C564 38 7F 00 00 */ addi r3, r31, 0 -/* 8035C568 7D 88 03 A6 */ mtlr r12 -/* 8035C56C 4E 80 00 21 */ blrl -/* 8035C570 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035C574 4B FD FA 8D */ bl OSClearContext -/* 8035C578 7F C3 F3 78 */ mr r3, r30 -/* 8035C57C 4B FD F8 BD */ bl OSSetCurrentContext -lbl_8035C580: -/* 8035C580 80 6D 93 A8 */ lwz r3, __peReg(r13) -/* 8035C584 38 00 00 01 */ li r0, 1 -/* 8035C588 A0 83 00 0A */ lhz r4, 0xa(r3) -/* 8035C58C 50 04 17 7A */ rlwimi r4, r0, 2, 0x1d, 0x1d -/* 8035C590 B0 83 00 0A */ sth r4, 0xa(r3) -/* 8035C594 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 8035C598 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 8035C59C 83 C1 02 D8 */ lwz r30, 0x2d8(r1) -/* 8035C5A0 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 8035C5A4 7C 08 03 A6 */ mtlr r0 -/* 8035C5A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXMisc/__GXAbort.s b/asm/dolphin/gx/GXMisc/__GXAbort.s deleted file mode 100644 index fa73789e6a..0000000000 --- a/asm/dolphin/gx/GXMisc/__GXAbort.s +++ /dev/null @@ -1,99 +0,0 @@ -lbl_8035BF28: -/* 8035BF28 7C 08 02 A6 */ mflr r0 -/* 8035BF2C 90 01 00 04 */ stw r0, 4(r1) -/* 8035BF30 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035BF34 BF 61 00 14 */ stmw r27, 0x14(r1) -/* 8035BF38 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035BF3C 88 03 05 AA */ lbz r0, 0x5aa(r3) -/* 8035BF40 28 00 00 00 */ cmplwi r0, 0 -/* 8035BF44 41 82 00 B0 */ beq lbl_8035BFF4 -/* 8035BF48 4B FF EF 69 */ bl GXGetGPFifo -/* 8035BF4C 28 03 00 00 */ cmplwi r3, 0 -/* 8035BF50 41 82 00 A4 */ beq lbl_8035BFF4 -/* 8035BF54 80 6D 93 AC */ lwz r3, __memReg(r13) -/* 8035BF58 38 C3 00 4E */ addi r6, r3, 0x4e -/* 8035BF5C A0 83 00 4E */ lhz r4, 0x4e(r3) -/* 8035BF60 38 A3 00 50 */ addi r5, r3, 0x50 -lbl_8035BF64: -/* 8035BF64 7C 80 23 78 */ mr r0, r4 -/* 8035BF68 A0 86 00 00 */ lhz r4, 0(r6) -/* 8035BF6C A0 65 00 00 */ lhz r3, 0(r5) -/* 8035BF70 7C 04 00 40 */ cmplw r4, r0 -/* 8035BF74 40 82 FF F0 */ bne lbl_8035BF64 -/* 8035BF78 54 80 80 1E */ slwi r0, r4, 0x10 -/* 8035BF7C 7C 1B 1B 78 */ or r27, r0, r3 -lbl_8035BF80: -/* 8035BF80 4B FE 67 7D */ bl OSGetTime -/* 8035BF84 38 00 00 00 */ li r0, 0 -/* 8035BF88 3B E4 00 00 */ addi r31, r4, 0 -/* 8035BF8C 3B C3 00 00 */ addi r30, r3, 0 -/* 8035BF90 6C 1C 80 00 */ xoris r28, r0, 0x8000 -/* 8035BF94 3B A0 00 08 */ li r29, 8 -lbl_8035BF98: -/* 8035BF98 4B FE 67 65 */ bl OSGetTime -/* 8035BF9C 7C 9F 20 10 */ subfc r4, r31, r4 -/* 8035BFA0 7C 1E 19 10 */ subfe r0, r30, r3 -/* 8035BFA4 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035BFA8 7C 04 E8 10 */ subfc r0, r4, r29 -/* 8035BFAC 7C 63 E1 10 */ subfe r3, r3, r28 -/* 8035BFB0 7C 7C E1 10 */ subfe r3, r28, r28 -/* 8035BFB4 7C 63 00 D1 */ neg. r3, r3 -/* 8035BFB8 41 82 FF E0 */ beq lbl_8035BF98 -/* 8035BFBC 80 6D 93 AC */ lwz r3, __memReg(r13) -/* 8035BFC0 38 C3 00 4E */ addi r6, r3, 0x4e -/* 8035BFC4 A0 83 00 4E */ lhz r4, 0x4e(r3) -/* 8035BFC8 38 A3 00 50 */ addi r5, r3, 0x50 -lbl_8035BFCC: -/* 8035BFCC 7C 80 23 78 */ mr r0, r4 -/* 8035BFD0 A0 86 00 00 */ lhz r4, 0(r6) -/* 8035BFD4 A0 65 00 00 */ lhz r3, 0(r5) -/* 8035BFD8 7C 04 00 40 */ cmplw r4, r0 -/* 8035BFDC 40 82 FF F0 */ bne lbl_8035BFCC -/* 8035BFE0 54 80 80 1E */ slwi r0, r4, 0x10 -/* 8035BFE4 7C 00 1B 78 */ or r0, r0, r3 -/* 8035BFE8 7C 00 D8 40 */ cmplw r0, r27 -/* 8035BFEC 7C 1B 03 78 */ mr r27, r0 -/* 8035BFF0 40 82 FF 90 */ bne lbl_8035BF80 -lbl_8035BFF4: -/* 8035BFF4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC003000@ha */ -/* 8035BFF8 38 00 00 01 */ li r0, 1 -/* 8035BFFC 3B 63 30 00 */ addi r27, r3, 0x3000 /* 0xCC003000@l */ -/* 8035C000 94 1B 00 18 */ stwu r0, 0x18(r27) -/* 8035C004 4B FE 66 F9 */ bl OSGetTime -/* 8035C008 38 00 00 00 */ li r0, 0 -/* 8035C00C 3B E4 00 00 */ addi r31, r4, 0 -/* 8035C010 3B C3 00 00 */ addi r30, r3, 0 -/* 8035C014 6C 1C 80 00 */ xoris r28, r0, 0x8000 -/* 8035C018 3B A0 00 32 */ li r29, 0x32 -lbl_8035C01C: -/* 8035C01C 4B FE 66 E1 */ bl OSGetTime -/* 8035C020 7C 9F 20 10 */ subfc r4, r31, r4 -/* 8035C024 7C 1E 19 10 */ subfe r0, r30, r3 -/* 8035C028 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035C02C 7C 04 E8 10 */ subfc r0, r4, r29 -/* 8035C030 7C 63 E1 10 */ subfe r3, r3, r28 -/* 8035C034 7C 7C E1 10 */ subfe r3, r28, r28 -/* 8035C038 7C 63 00 D1 */ neg. r3, r3 -/* 8035C03C 41 82 FF E0 */ beq lbl_8035C01C -/* 8035C040 3B C0 00 00 */ li r30, 0 -/* 8035C044 93 DB 00 00 */ stw r30, 0(r27) -/* 8035C048 4B FE 66 B5 */ bl OSGetTime -/* 8035C04C 3B 84 00 00 */ addi r28, r4, 0 -/* 8035C050 3B A3 00 00 */ addi r29, r3, 0 -/* 8035C054 6F DF 80 00 */ xoris r31, r30, 0x8000 -/* 8035C058 3B C0 00 05 */ li r30, 5 -lbl_8035C05C: -/* 8035C05C 4B FE 66 A1 */ bl OSGetTime -/* 8035C060 7C 9C 20 10 */ subfc r4, r28, r4 -/* 8035C064 7C 1D 19 10 */ subfe r0, r29, r3 -/* 8035C068 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8035C06C 7C 04 F0 10 */ subfc r0, r4, r30 -/* 8035C070 7C 63 F9 10 */ subfe r3, r3, r31 -/* 8035C074 7C 7F F9 10 */ subfe r3, r31, r31 -/* 8035C078 7C 63 00 D1 */ neg. r3, r3 -/* 8035C07C 41 82 FF E0 */ beq lbl_8035C05C -/* 8035C080 BB 61 00 14 */ lmw r27, 0x14(r1) -/* 8035C084 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035C088 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035C08C 7C 08 03 A6 */ mtlr r0 -/* 8035C090 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXPixel/GXSetFog.s b/asm/dolphin/gx/GXPixel/GXSetFog.s deleted file mode 100644 index 4ca35d3858..0000000000 --- a/asm/dolphin/gx/GXPixel/GXSetFog.s +++ /dev/null @@ -1,146 +0,0 @@ -lbl_8035F8B8: -/* 8035F8B8 7C 08 02 A6 */ mflr r0 -/* 8035F8BC 90 01 00 04 */ stw r0, 4(r1) -/* 8035F8C0 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8035F8C4 DB E1 00 58 */ stfd f31, 0x58(r1) -/* 8035F8C8 BE E1 00 34 */ stmw r23, 0x34(r1) -/* 8035F8CC 3B C0 00 00 */ li r30, 0 -/* 8035F8D0 54 7F EF FF */ rlwinm. r31, r3, 0x1d, 0x1f, 0x1f -/* 8035F8D4 3B 04 00 00 */ addi r24, r4, 0 -/* 8035F8D8 3B BE 00 00 */ addi r29, r30, 0 -/* 8035F8DC 54 79 07 7E */ clrlwi r25, r3, 0x1d -/* 8035F8E0 3B 80 00 00 */ li r28, 0 -/* 8035F8E4 3B 60 00 00 */ li r27, 0 -/* 8035F8E8 3B 40 00 00 */ li r26, 0 -/* 8035F8EC 41 82 00 4C */ beq lbl_8035F938 -/* 8035F8F0 FC 04 18 00 */ fcmpu cr0, f4, f3 -/* 8035F8F4 41 82 00 0C */ beq lbl_8035F900 -/* 8035F8F8 FC 02 08 00 */ fcmpu cr0, f2, f1 -/* 8035F8FC 40 82 00 14 */ bne lbl_8035F910 -lbl_8035F900: -/* 8035F900 C0 02 CC 18 */ lfs f0, lit_211(r2) -/* 8035F904 D0 01 00 24 */ stfs f0, 0x24(r1) -/* 8035F908 D0 01 00 20 */ stfs f0, 0x20(r1) -/* 8035F90C 48 00 01 18 */ b lbl_8035FA24 -lbl_8035F910: -/* 8035F910 EC A2 08 28 */ fsubs f5, f2, f1 -/* 8035F914 C0 C2 CC 1C */ lfs f6, lit_212(r2) -/* 8035F918 EC 44 18 28 */ fsubs f2, f4, f3 -/* 8035F91C EC 01 18 28 */ fsubs f0, f1, f3 -/* 8035F920 EC 66 28 24 */ fdivs f3, f6, f5 -/* 8035F924 EC 23 00 B2 */ fmuls f1, f3, f2 -/* 8035F928 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8035F92C D0 21 00 24 */ stfs f1, 0x24(r1) -/* 8035F930 D0 01 00 20 */ stfs f0, 0x20(r1) -/* 8035F934 48 00 00 F0 */ b lbl_8035FA24 -lbl_8035F938: -/* 8035F938 FC 04 18 00 */ fcmpu cr0, f4, f3 -/* 8035F93C 41 82 00 0C */ beq lbl_8035F948 -/* 8035F940 FC 02 08 00 */ fcmpu cr0, f2, f1 -/* 8035F944 40 82 00 14 */ bne lbl_8035F958 -lbl_8035F948: -/* 8035F948 C0 62 CC 18 */ lfs f3, lit_211(r2) -/* 8035F94C C0 82 CC 20 */ lfs f4, lit_213(r2) -/* 8035F950 FF E0 18 90 */ fmr f31, f3 -/* 8035F954 48 00 00 20 */ b lbl_8035F974 -lbl_8035F958: -/* 8035F958 EC 04 18 28 */ fsubs f0, f4, f3 -/* 8035F95C EC A2 08 28 */ fsubs f5, f2, f1 -/* 8035F960 EC 44 00 F2 */ fmuls f2, f4, f3 -/* 8035F964 EC 84 00 24 */ fdivs f4, f4, f0 -/* 8035F968 EC 00 01 72 */ fmuls f0, f0, f5 -/* 8035F96C EF E1 28 24 */ fdivs f31, f1, f5 -/* 8035F970 EC 62 00 24 */ fdivs f3, f2, f0 -lbl_8035F974: -/* 8035F974 C0 22 CC 20 */ lfs f1, lit_213(r2) -/* 8035F978 38 60 00 00 */ li r3, 0 -/* 8035F97C C8 02 CC 28 */ lfd f0, lit_214(r2) -/* 8035F980 48 00 00 0C */ b lbl_8035F98C -lbl_8035F984: -/* 8035F984 EC 84 00 72 */ fmuls f4, f4, f1 -/* 8035F988 38 63 00 01 */ addi r3, r3, 1 -lbl_8035F98C: -/* 8035F98C FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8035F990 41 81 FF F4 */ bgt lbl_8035F984 -/* 8035F994 C8 02 CC 38 */ lfd f0, lit_216(r2) -/* 8035F998 C0 42 CC 30 */ lfs f2, lit_215(r2) -/* 8035F99C C0 22 CC 18 */ lfs f1, lit_211(r2) -/* 8035F9A0 48 00 00 0C */ b lbl_8035F9AC -lbl_8035F9A4: -/* 8035F9A4 EC 84 00 B2 */ fmuls f4, f4, f2 -/* 8035F9A8 38 63 FF FF */ addi r3, r3, -1 -lbl_8035F9AC: -/* 8035F9AC FC 04 08 40 */ fcmpo cr0, f4, f1 -/* 8035F9B0 40 81 00 0C */ ble lbl_8035F9BC -/* 8035F9B4 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8035F9B8 41 80 FF EC */ blt lbl_8035F9A4 -lbl_8035F9BC: -/* 8035F9BC 3A E3 00 01 */ addi r23, r3, 1 -/* 8035F9C0 C0 02 CC 40 */ lfs f0, lit_217(r2) -/* 8035F9C4 38 00 00 01 */ li r0, 1 -/* 8035F9C8 C8 42 CC 48 */ lfd f2, lit_219(r2) -/* 8035F9CC 7C 00 B8 30 */ slw r0, r0, r23 -/* 8035F9D0 EC 20 01 32 */ fmuls f1, f0, f4 -/* 8035F9D4 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8035F9D8 90 01 00 2C */ stw r0, 0x2c(r1) -/* 8035F9DC 3C 00 43 30 */ lis r0, 0x4330 -/* 8035F9E0 90 01 00 28 */ stw r0, 0x28(r1) -/* 8035F9E4 C8 01 00 28 */ lfd f0, 0x28(r1) -/* 8035F9E8 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8035F9EC EC 03 00 24 */ fdivs f0, f3, f0 -/* 8035F9F0 D0 01 00 24 */ stfs f0, 0x24(r1) -/* 8035F9F4 48 00 26 B9 */ bl __cvt_fp2unsigned -/* 8035F9F8 50 7E 02 3E */ rlwimi r30, r3, 0, 8, 0x1f -/* 8035F9FC D3 E1 00 20 */ stfs f31, 0x20(r1) -/* 8035FA00 52 FD 06 FE */ rlwimi r29, r23, 0, 0x1b, 0x1f -/* 8035FA04 38 00 00 EF */ li r0, 0xef -/* 8035FA08 38 7E 00 00 */ addi r3, r30, 0 -/* 8035FA0C 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035FA10 38 00 00 F0 */ li r0, 0xf0 -/* 8035FA14 38 9D 00 00 */ addi r4, r29, 0 -/* 8035FA18 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 8035FA1C 3B C3 00 00 */ addi r30, r3, 0 -/* 8035FA20 3B A4 00 00 */ addi r29, r4, 0 -lbl_8035FA24: -/* 8035FA24 80 E1 00 24 */ lwz r7, 0x24(r1) -/* 8035FA28 38 00 00 61 */ li r0, 0x61 -/* 8035FA2C 81 38 00 00 */ lwz r9, 0(r24) -/* 8035FA30 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035FA34 50 FB A5 7E */ rlwimi r27, r7, 0x14, 0x15, 0x1f -/* 8035FA38 38 DB 00 00 */ addi r6, r27, 0 -/* 8035FA3C 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035FA40 50 E6 A3 68 */ rlwimi r6, r7, 0x14, 0xd, 0x14 -/* 8035FA44 81 01 00 20 */ lwz r8, 0x20(r1) -/* 8035FA48 38 A0 00 EE */ li r5, 0xee -/* 8035FA4C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035FA50 50 E6 A3 18 */ rlwimi r6, r7, 0x14, 0xc, 0xc -/* 8035FA54 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7 -/* 8035FA58 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035FA5C 51 1A A5 7E */ rlwimi r26, r8, 0x14, 0x15, 0x1f -/* 8035FA60 7F 46 D3 78 */ mr r6, r26 -/* 8035FA64 98 04 80 00 */ stb r0, -0x8000(r4) -/* 8035FA68 51 06 A3 68 */ rlwimi r6, r8, 0x14, 0xd, 0x14 -/* 8035FA6C 51 06 A3 18 */ rlwimi r6, r8, 0x14, 0xc, 0xc -/* 8035FA70 93 C4 80 00 */ stw r30, -0x8000(r4) -/* 8035FA74 53 E6 A2 D6 */ rlwimi r6, r31, 0x14, 0xb, 0xb -/* 8035FA78 38 A0 00 F1 */ li r5, 0xf1 -/* 8035FA7C 98 04 80 00 */ stb r0, -0x8000(r4) -/* 8035FA80 53 26 AA 14 */ rlwimi r6, r25, 0x15, 8, 0xa -/* 8035FA84 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7 -/* 8035FA88 93 A4 80 00 */ stw r29, -0x8000(r4) -/* 8035FA8C 51 3C C2 3E */ rlwimi r28, r9, 0x18, 8, 0x1f -/* 8035FA90 38 A0 00 F2 */ li r5, 0xf2 -/* 8035FA94 98 04 80 00 */ stb r0, -0x8000(r4) -/* 8035FA98 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035FA9C 38 DC 00 00 */ addi r6, r28, 0 -/* 8035FAA0 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7 -/* 8035FAA4 98 04 80 00 */ stb r0, -0x8000(r4) -/* 8035FAA8 38 00 00 00 */ li r0, 0 -/* 8035FAAC 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035FAB0 B0 03 00 02 */ sth r0, 2(r3) -/* 8035FAB4 BA E1 00 34 */ lmw r23, 0x34(r1) -/* 8035FAB8 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8035FABC CB E1 00 58 */ lfd f31, 0x58(r1) -/* 8035FAC0 38 21 00 60 */ addi r1, r1, 0x60 -/* 8035FAC4 7C 08 03 A6 */ mtlr r0 -/* 8035FAC8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXPixel/GXSetPixelFmt.s b/asm/dolphin/gx/GXPixel/GXSetPixelFmt.s deleted file mode 100644 index 98d2e431bc..0000000000 --- a/asm/dolphin/gx/GXPixel/GXSetPixelFmt.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8035FD04: -/* 8035FD04 3C A0 80 3D */ lis r5, p2f@ha /* 0x803D2838@ha */ -/* 8035FD08 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035FD0C 54 66 10 3A */ slwi r6, r3, 2 -/* 8035FD10 38 05 28 38 */ addi r0, r5, p2f@l /* 0x803D2838@l */ -/* 8035FD14 80 A7 01 DC */ lwz r5, 0x1dc(r7) -/* 8035FD18 7C C0 32 14 */ add r6, r0, r6 -/* 8035FD1C 80 06 00 00 */ lwz r0, 0(r6) -/* 8035FD20 39 05 00 00 */ addi r8, r5, 0 -/* 8035FD24 50 05 07 7E */ rlwimi r5, r0, 0, 0x1d, 0x1f -/* 8035FD28 90 A7 01 DC */ stw r5, 0x1dc(r7) -/* 8035FD2C 80 07 01 DC */ lwz r0, 0x1dc(r7) -/* 8035FD30 50 80 1E B8 */ rlwimi r0, r4, 3, 0x1a, 0x1c -/* 8035FD34 90 07 01 DC */ stw r0, 0x1dc(r7) -/* 8035FD38 80 A7 01 DC */ lwz r5, 0x1dc(r7) -/* 8035FD3C 7C 08 28 40 */ cmplw r8, r5 -/* 8035FD40 41 82 00 44 */ beq lbl_8035FD84 -/* 8035FD44 38 00 00 61 */ li r0, 0x61 -/* 8035FD48 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035FD4C 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035FD50 2C 03 00 02 */ cmpwi r3, 2 -/* 8035FD54 90 A4 80 00 */ stw r5, -0x8000(r4) -/* 8035FD58 40 82 00 0C */ bne lbl_8035FD64 -/* 8035FD5C 38 00 00 01 */ li r0, 1 -/* 8035FD60 48 00 00 08 */ b lbl_8035FD68 -lbl_8035FD64: -/* 8035FD64 38 00 00 00 */ li r0, 0 -lbl_8035FD68: -/* 8035FD68 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035FD6C 80 85 02 04 */ lwz r4, 0x204(r5) -/* 8035FD70 50 04 4D AC */ rlwimi r4, r0, 9, 0x16, 0x16 -/* 8035FD74 90 85 02 04 */ stw r4, 0x204(r5) -/* 8035FD78 80 05 05 AC */ lwz r0, 0x5ac(r5) -/* 8035FD7C 60 00 00 04 */ ori r0, r0, 4 -/* 8035FD80 90 05 05 AC */ stw r0, 0x5ac(r5) -lbl_8035FD84: -/* 8035FD84 80 06 00 00 */ lwz r0, 0(r6) -/* 8035FD88 28 00 00 04 */ cmplwi r0, 4 -/* 8035FD8C 40 82 00 3C */ bne lbl_8035FDC8 -/* 8035FD90 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035FD94 38 03 FF FC */ addi r0, r3, -4 -/* 8035FD98 38 80 00 42 */ li r4, 0x42 -/* 8035FD9C 80 66 01 D4 */ lwz r3, 0x1d4(r6) -/* 8035FDA0 50 03 4D 6C */ rlwimi r3, r0, 9, 0x15, 0x16 -/* 8035FDA4 38 00 00 61 */ li r0, 0x61 -/* 8035FDA8 90 66 01 D4 */ stw r3, 0x1d4(r6) -/* 8035FDAC 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035FDB0 80 A6 01 D4 */ lwz r5, 0x1d4(r6) -/* 8035FDB4 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7 -/* 8035FDB8 90 A6 01 D4 */ stw r5, 0x1d4(r6) -/* 8035FDBC 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035FDC0 80 06 01 D4 */ lwz r0, 0x1d4(r6) -/* 8035FDC4 90 03 80 00 */ stw r0, -0x8000(r3) -lbl_8035FDC8: -/* 8035FDC8 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035FDCC 38 00 00 00 */ li r0, 0 -/* 8035FDD0 B0 03 00 02 */ sth r0, 2(r3) -/* 8035FDD4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTev/GXSetTevColor.s b/asm/dolphin/gx/GXTev/GXSetTevColor.s deleted file mode 100644 index 6458fdd9c9..0000000000 --- a/asm/dolphin/gx/GXTev/GXSetTevColor.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_8035F37C: -/* 8035F37C 54 66 08 3C */ slwi r6, r3, 1 -/* 8035F380 81 04 00 00 */ lwz r8, 0(r4) -/* 8035F384 38 86 00 E0 */ addi r4, r6, 0xe0 -/* 8035F388 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F38C 54 87 C0 0E */ slwi r7, r4, 0x18 -/* 8035F390 38 A0 00 61 */ li r5, 0x61 -/* 8035F394 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035F398 51 07 46 3E */ rlwimi r7, r8, 8, 0x18, 0x1f -/* 8035F39C 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8035F3A0 51 07 63 26 */ rlwimi r7, r8, 0xc, 0xc, 0x13 -/* 8035F3A4 90 E4 80 00 */ stw r7, -0x8000(r4) -/* 8035F3A8 38 C6 00 E1 */ addi r6, r6, 0xe1 -/* 8035F3AC 54 C6 C0 0E */ slwi r6, r6, 0x18 -/* 8035F3B0 51 06 C6 3E */ rlwimi r6, r8, 0x18, 0x18, 0x1f -/* 8035F3B4 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F3B8 51 06 E3 26 */ rlwimi r6, r8, 0x1c, 0xc, 0x13 -/* 8035F3BC 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F3C0 38 00 00 00 */ li r0, 0 -/* 8035F3C4 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F3C8 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F3CC 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F3D0 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F3D4 B0 03 00 02 */ sth r0, 2(r3) -/* 8035F3D8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTev/GXSetTevColorS10.s b/asm/dolphin/gx/GXTev/GXSetTevColorS10.s deleted file mode 100644 index b53692eee7..0000000000 --- a/asm/dolphin/gx/GXTev/GXSetTevColorS10.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8035F3DC: -/* 8035F3DC 81 04 00 00 */ lwz r8, 0(r4) -/* 8035F3E0 54 66 08 3C */ slwi r6, r3, 1 -/* 8035F3E4 81 24 00 04 */ lwz r9, 4(r4) -/* 8035F3E8 38 A0 00 61 */ li r5, 0x61 -/* 8035F3EC 38 66 00 E0 */ addi r3, r6, 0xe0 -/* 8035F3F0 54 67 C0 0E */ slwi r7, r3, 0x18 -/* 8035F3F4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F3F8 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035F3FC 51 07 85 7E */ rlwimi r7, r8, 0x10, 0x15, 0x1f -/* 8035F400 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8035F404 51 27 62 66 */ rlwimi r7, r9, 0xc, 9, 0x13 -/* 8035F408 90 E4 80 00 */ stw r7, -0x8000(r4) -/* 8035F40C 38 C6 00 E1 */ addi r6, r6, 0xe1 -/* 8035F410 54 C6 C0 0E */ slwi r6, r6, 0x18 -/* 8035F414 51 26 85 7E */ rlwimi r6, r9, 0x10, 0x15, 0x1f -/* 8035F418 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F41C 51 06 62 66 */ rlwimi r6, r8, 0xc, 9, 0x13 -/* 8035F420 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F424 38 00 00 00 */ li r0, 0 -/* 8035F428 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F42C 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F430 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035F434 90 C4 80 00 */ stw r6, -0x8000(r4) -/* 8035F438 B0 03 00 02 */ sth r0, 2(r3) -/* 8035F43C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTev/GXSetTevKColor.s b/asm/dolphin/gx/GXTev/GXSetTevKColor.s deleted file mode 100644 index 96dbb9a572..0000000000 --- a/asm/dolphin/gx/GXTev/GXSetTevKColor.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8035F440: -/* 8035F440 54 65 08 3C */ slwi r5, r3, 1 -/* 8035F444 81 24 00 00 */ lwz r9, 0(r4) -/* 8035F448 38 85 00 E0 */ addi r4, r5, 0xe0 -/* 8035F44C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F450 54 84 C0 0E */ slwi r4, r4, 0x18 -/* 8035F454 51 24 46 3E */ rlwimi r4, r9, 8, 0x18, 0x1f -/* 8035F458 39 04 00 00 */ addi r8, r4, 0 -/* 8035F45C 38 00 00 61 */ li r0, 0x61 -/* 8035F460 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035F464 38 C5 00 E1 */ addi r6, r5, 0xe1 -/* 8035F468 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035F46C 54 C6 C0 0E */ slwi r6, r6, 0x18 -/* 8035F470 51 26 C6 3E */ rlwimi r6, r9, 0x18, 0x18, 0x1f -/* 8035F474 38 A6 00 00 */ addi r5, r6, 0 -/* 8035F478 38 E0 00 08 */ li r7, 8 -/* 8035F47C 51 28 63 26 */ rlwimi r8, r9, 0xc, 0xc, 0x13 -/* 8035F480 50 E8 A2 16 */ rlwimi r8, r7, 0x14, 8, 0xb -/* 8035F484 91 04 80 00 */ stw r8, -0x8000(r4) -/* 8035F488 51 25 E3 26 */ rlwimi r5, r9, 0x1c, 0xc, 0x13 -/* 8035F48C 50 E5 A2 16 */ rlwimi r5, r7, 0x14, 8, 0xb -/* 8035F490 98 04 80 00 */ stb r0, -0x8000(r4) -/* 8035F494 38 00 00 00 */ li r0, 0 -/* 8035F498 90 A4 80 00 */ stw r5, -0x8000(r4) -/* 8035F49C B0 03 00 02 */ sth r0, 2(r3) -/* 8035F4A0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s b/asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s deleted file mode 100644 index f32ed80af2..0000000000 --- a/asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s +++ /dev/null @@ -1,101 +0,0 @@ -lbl_8035DC1C: -/* 8035DC1C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035DC20 28 05 00 3C */ cmplwi r5, 0x3c -/* 8035DC24 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8035DC28 41 81 00 40 */ bgt lbl_8035DC68 -/* 8035DC2C 3D 00 80 3D */ lis r8, lit_104@ha /* 0x803D2598@ha */ -/* 8035DC30 39 08 25 98 */ addi r8, r8, lit_104@l /* 0x803D2598@l */ -/* 8035DC34 54 A0 10 3A */ slwi r0, r5, 2 -/* 8035DC38 7C 08 00 2E */ lwzx r0, r8, r0 -/* 8035DC3C 7C 09 03 A6 */ mtctr r0 -/* 8035DC40 4E 80 04 20 */ bctr -/* 8035DC44 38 00 00 03 */ li r0, 3 -/* 8035DC48 39 00 00 03 */ li r8, 3 -/* 8035DC4C 48 00 00 24 */ b lbl_8035DC70 -/* 8035DC50 38 00 00 03 */ li r0, 3 -/* 8035DC54 39 00 00 02 */ li r8, 2 -/* 8035DC58 48 00 00 18 */ b lbl_8035DC70 -/* 8035DC5C 38 00 00 02 */ li r0, 2 -/* 8035DC60 39 00 00 02 */ li r8, 2 -/* 8035DC64 48 00 00 0C */ b lbl_8035DC70 -lbl_8035DC68: -/* 8035DC68 39 00 00 00 */ li r8, 0 -/* 8035DC6C 38 00 00 00 */ li r0, 0 -lbl_8035DC70: -/* 8035DC70 28 05 00 06 */ cmplwi r5, 6 -/* 8035DC74 41 82 00 0C */ beq lbl_8035DC80 -/* 8035DC78 28 05 00 16 */ cmplwi r5, 0x16 -/* 8035DC7C 40 82 00 0C */ bne lbl_8035DC88 -lbl_8035DC80: -/* 8035DC80 38 A0 00 40 */ li r5, 0x40 -/* 8035DC84 48 00 00 08 */ b lbl_8035DC8C -lbl_8035DC88: -/* 8035DC88 38 A0 00 20 */ li r5, 0x20 -lbl_8035DC8C: -/* 8035DC8C 54 C6 06 3E */ clrlwi r6, r6, 0x18 -/* 8035DC90 28 06 00 01 */ cmplwi r6, 1 -/* 8035DC94 40 82 00 A0 */ bne lbl_8035DD34 -/* 8035DC98 54 E9 06 3E */ clrlwi r9, r7, 0x18 -/* 8035DC9C 38 C0 00 01 */ li r6, 1 -/* 8035DCA0 7D 29 03 A6 */ mtctr r9 -/* 8035DCA4 7C C7 40 30 */ slw r7, r6, r8 -/* 8035DCA8 7C C6 00 30 */ slw r6, r6, r0 -/* 8035DCAC 28 09 00 00 */ cmplwi r9, 0 -/* 8035DCB0 39 46 FF FF */ addi r10, r6, -1 -/* 8035DCB4 38 E7 FF FF */ addi r7, r7, -1 -/* 8035DCB8 3B E0 00 00 */ li r31, 0 -/* 8035DCBC 40 81 00 AC */ ble lbl_8035DD68 -lbl_8035DCC0: -/* 8035DCC0 54 6B 04 3E */ clrlwi r11, r3, 0x10 -/* 8035DCC4 7C CB 52 14 */ add r6, r11, r10 -/* 8035DCC8 54 8C 04 3E */ clrlwi r12, r4, 0x10 -/* 8035DCCC 7C C9 06 30 */ sraw r9, r6, r0 -/* 8035DCD0 7C CC 3A 14 */ add r6, r12, r7 -/* 8035DCD4 7C C6 46 30 */ sraw r6, r6, r8 -/* 8035DCD8 7C C9 31 D6 */ mullw r6, r9, r6 -/* 8035DCDC 7C C5 31 D6 */ mullw r6, r5, r6 -/* 8035DCE0 28 0B 00 01 */ cmplwi r11, 1 -/* 8035DCE4 7F FF 32 14 */ add r31, r31, r6 -/* 8035DCE8 40 82 00 0C */ bne lbl_8035DCF4 -/* 8035DCEC 28 0C 00 01 */ cmplwi r12, 1 -/* 8035DCF0 41 82 00 78 */ beq lbl_8035DD68 -lbl_8035DCF4: -/* 8035DCF4 54 63 04 3E */ clrlwi r3, r3, 0x10 -/* 8035DCF8 28 03 00 01 */ cmplwi r3, 1 -/* 8035DCFC 40 81 00 0C */ ble lbl_8035DD08 -/* 8035DD00 7D 66 0E 70 */ srawi r6, r11, 1 -/* 8035DD04 48 00 00 08 */ b lbl_8035DD0C -lbl_8035DD08: -/* 8035DD08 38 C0 00 01 */ li r6, 1 -lbl_8035DD0C: -/* 8035DD0C 54 83 04 3E */ clrlwi r3, r4, 0x10 -/* 8035DD10 28 03 00 01 */ cmplwi r3, 1 -/* 8035DD14 54 C3 04 3E */ clrlwi r3, r6, 0x10 -/* 8035DD18 40 81 00 0C */ ble lbl_8035DD24 -/* 8035DD1C 7D 84 0E 70 */ srawi r4, r12, 1 -/* 8035DD20 48 00 00 08 */ b lbl_8035DD28 -lbl_8035DD24: -/* 8035DD24 38 80 00 01 */ li r4, 1 -lbl_8035DD28: -/* 8035DD28 54 84 04 3E */ clrlwi r4, r4, 0x10 -/* 8035DD2C 42 00 FF 94 */ bdnz lbl_8035DCC0 -/* 8035DD30 48 00 00 38 */ b lbl_8035DD68 -lbl_8035DD34: -/* 8035DD34 38 C0 00 01 */ li r6, 1 -/* 8035DD38 7C C7 00 30 */ slw r7, r6, r0 -/* 8035DD3C 7C C6 40 30 */ slw r6, r6, r8 -/* 8035DD40 54 69 04 3E */ clrlwi r9, r3, 0x10 -/* 8035DD44 38 67 FF FF */ addi r3, r7, -1 -/* 8035DD48 7C E9 1A 14 */ add r7, r9, r3 -/* 8035DD4C 54 84 04 3E */ clrlwi r4, r4, 0x10 -/* 8035DD50 38 66 FF FF */ addi r3, r6, -1 -/* 8035DD54 7C E6 06 30 */ sraw r6, r7, r0 -/* 8035DD58 7C 04 1A 14 */ add r0, r4, r3 -/* 8035DD5C 7C 00 46 30 */ sraw r0, r0, r8 -/* 8035DD60 7C 06 01 D6 */ mullw r0, r6, r0 -/* 8035DD64 7F E5 01 D6 */ mullw r31, r5, r0 -lbl_8035DD68: -/* 8035DD68 7F E3 FB 78 */ mr r3, r31 -/* 8035DD6C 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8035DD70 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035DD74 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s b/asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s deleted file mode 100644 index 2dc2adfd05..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_8035E538: -/* 8035E538 2C 06 00 01 */ cmpwi r6, 1 -/* 8035E53C 41 82 00 28 */ beq lbl_8035E564 -/* 8035E540 40 80 00 10 */ bge lbl_8035E550 -/* 8035E544 2C 06 00 00 */ cmpwi r6, 0 -/* 8035E548 40 80 00 14 */ bge lbl_8035E55C -/* 8035E54C 48 00 00 24 */ b lbl_8035E570 -lbl_8035E550: -/* 8035E550 2C 06 00 03 */ cmpwi r6, 3 -/* 8035E554 40 80 00 1C */ bge lbl_8035E570 -/* 8035E558 48 00 00 14 */ b lbl_8035E56C -lbl_8035E55C: -/* 8035E55C 39 20 00 03 */ li r9, 3 -/* 8035E560 48 00 00 10 */ b lbl_8035E570 -lbl_8035E564: -/* 8035E564 39 20 00 04 */ li r9, 4 -/* 8035E568 48 00 00 08 */ b lbl_8035E570 -lbl_8035E56C: -/* 8035E56C 39 20 00 05 */ li r9, 5 -lbl_8035E570: -/* 8035E570 38 C0 00 00 */ li r6, 0 -/* 8035E574 90 C3 00 00 */ stw r6, 0(r3) -/* 8035E578 54 A0 D9 7E */ srwi r0, r5, 5 -/* 8035E57C 2C 08 00 02 */ cmpwi r8, 2 -/* 8035E580 80 A3 00 00 */ lwz r5, 0(r3) -/* 8035E584 50 05 04 7E */ rlwimi r5, r0, 0, 0x11, 0x1f -/* 8035E588 90 A3 00 00 */ stw r5, 0(r3) -/* 8035E58C 80 03 00 00 */ lwz r0, 0(r3) -/* 8035E590 51 20 7B A0 */ rlwimi r0, r9, 0xf, 0xe, 0x10 -/* 8035E594 90 03 00 00 */ stw r0, 0(r3) -/* 8035E598 80 03 00 00 */ lwz r0, 0(r3) -/* 8035E59C 51 20 92 DA */ rlwimi r0, r9, 0x12, 0xb, 0xd -/* 8035E5A0 90 03 00 00 */ stw r0, 0(r3) -/* 8035E5A4 80 03 00 00 */ lwz r0, 0(r3) -/* 8035E5A8 50 C0 AA 94 */ rlwimi r0, r6, 0x15, 0xa, 0xa -/* 8035E5AC 90 03 00 00 */ stw r0, 0(r3) -/* 8035E5B0 41 82 00 34 */ beq lbl_8035E5E4 -/* 8035E5B4 40 80 00 14 */ bge lbl_8035E5C8 -/* 8035E5B8 2C 08 00 00 */ cmpwi r8, 0 -/* 8035E5BC 41 82 00 18 */ beq lbl_8035E5D4 -/* 8035E5C0 40 80 00 1C */ bge lbl_8035E5DC -/* 8035E5C4 48 00 00 2C */ b lbl_8035E5F0 -lbl_8035E5C8: -/* 8035E5C8 2C 08 00 04 */ cmpwi r8, 4 -/* 8035E5CC 40 80 00 24 */ bge lbl_8035E5F0 -/* 8035E5D0 48 00 00 1C */ b lbl_8035E5EC -lbl_8035E5D4: -/* 8035E5D4 39 20 00 03 */ li r9, 3 -/* 8035E5D8 48 00 00 18 */ b lbl_8035E5F0 -lbl_8035E5DC: -/* 8035E5DC 39 20 00 04 */ li r9, 4 -/* 8035E5E0 48 00 00 10 */ b lbl_8035E5F0 -lbl_8035E5E4: -/* 8035E5E4 39 20 00 05 */ li r9, 5 -/* 8035E5E8 48 00 00 08 */ b lbl_8035E5F0 -lbl_8035E5EC: -/* 8035E5EC 39 20 00 00 */ li r9, 0 -lbl_8035E5F0: -/* 8035E5F0 38 00 00 00 */ li r0, 0 -/* 8035E5F4 90 03 00 04 */ stw r0, 4(r3) -/* 8035E5F8 38 00 00 01 */ li r0, 1 -/* 8035E5FC 80 C3 00 04 */ lwz r6, 4(r3) -/* 8035E600 50 E6 DC 7E */ rlwimi r6, r7, 0x1b, 0x11, 0x1f -/* 8035E604 90 C3 00 04 */ stw r6, 4(r3) -/* 8035E608 80 A3 00 04 */ lwz r5, 4(r3) -/* 8035E60C 51 25 7B A0 */ rlwimi r5, r9, 0xf, 0xe, 0x10 -/* 8035E610 90 A3 00 04 */ stw r5, 4(r3) -/* 8035E614 80 A3 00 04 */ lwz r5, 4(r3) -/* 8035E618 51 25 92 DA */ rlwimi r5, r9, 0x12, 0xb, 0xd -/* 8035E61C 90 A3 00 04 */ stw r5, 4(r3) -/* 8035E620 98 83 00 0C */ stb r4, 0xc(r3) -/* 8035E624 98 03 00 0D */ stb r0, 0xd(r3) -/* 8035E628 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTexObj.s b/asm/dolphin/gx/GXTexture/GXInitTexObj.s deleted file mode 100644 index 1fda5c80cc..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTexObj.s +++ /dev/null @@ -1,156 +0,0 @@ -lbl_8035DE40: -/* 8035DE40 7C 08 02 A6 */ mflr r0 -/* 8035DE44 90 01 00 04 */ stw r0, 4(r1) -/* 8035DE48 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8035DE4C BF 01 00 40 */ stmw r24, 0x40(r1) -/* 8035DE50 3B 64 00 00 */ addi r27, r4, 0 -/* 8035DE54 3B 85 00 00 */ addi r28, r5, 0 -/* 8035DE58 3B E3 00 00 */ addi r31, r3, 0 -/* 8035DE5C 3B A6 00 00 */ addi r29, r6, 0 -/* 8035DE60 3B C7 00 00 */ addi r30, r7, 0 -/* 8035DE64 3B 08 00 00 */ addi r24, r8, 0 -/* 8035DE68 3B 29 00 00 */ addi r25, r9, 0 -/* 8035DE6C 3B 4A 00 00 */ addi r26, r10, 0 -/* 8035DE70 38 80 00 00 */ li r4, 0 -/* 8035DE74 38 A0 00 20 */ li r5, 0x20 -/* 8035DE78 4B CA 55 E1 */ bl memset -/* 8035DE7C 80 7F 00 00 */ lwz r3, 0(r31) -/* 8035DE80 53 03 07 BE */ rlwimi r3, r24, 0, 0x1e, 0x1f -/* 8035DE84 57 40 06 3F */ clrlwi. r0, r26, 0x18 -/* 8035DE88 90 7F 00 00 */ stw r3, 0(r31) -/* 8035DE8C 38 60 00 01 */ li r3, 1 -/* 8035DE90 80 1F 00 00 */ lwz r0, 0(r31) -/* 8035DE94 53 20 17 3A */ rlwimi r0, r25, 2, 0x1c, 0x1d -/* 8035DE98 90 1F 00 00 */ stw r0, 0(r31) -/* 8035DE9C 80 1F 00 00 */ lwz r0, 0(r31) -/* 8035DEA0 50 60 26 F6 */ rlwimi r0, r3, 4, 0x1b, 0x1b -/* 8035DEA4 90 1F 00 00 */ stw r0, 0(r31) -/* 8035DEA8 41 82 00 A0 */ beq lbl_8035DF48 -/* 8035DEAC 88 7F 00 1F */ lbz r3, 0x1f(r31) -/* 8035DEB0 38 1E FF F8 */ addi r0, r30, -8 -/* 8035DEB4 28 00 00 02 */ cmplwi r0, 2 -/* 8035DEB8 60 60 00 01 */ ori r0, r3, 1 -/* 8035DEBC 98 1F 00 1F */ stb r0, 0x1f(r31) -/* 8035DEC0 41 81 00 18 */ bgt lbl_8035DED8 -/* 8035DEC4 80 7F 00 00 */ lwz r3, 0(r31) -/* 8035DEC8 38 00 00 05 */ li r0, 5 -/* 8035DECC 50 03 2E 34 */ rlwimi r3, r0, 5, 0x18, 0x1a -/* 8035DED0 90 7F 00 00 */ stw r3, 0(r31) -/* 8035DED4 48 00 00 14 */ b lbl_8035DEE8 -lbl_8035DED8: -/* 8035DED8 80 7F 00 00 */ lwz r3, 0(r31) -/* 8035DEDC 38 00 00 06 */ li r0, 6 -/* 8035DEE0 50 03 2E 34 */ rlwimi r3, r0, 5, 0x18, 0x1a -/* 8035DEE4 90 7F 00 00 */ stw r3, 0(r31) -lbl_8035DEE8: -/* 8035DEE8 57 83 04 3E */ clrlwi r3, r28, 0x10 -/* 8035DEEC 57 A0 04 3E */ clrlwi r0, r29, 0x10 -/* 8035DEF0 7C 03 00 40 */ cmplw r3, r0 -/* 8035DEF4 40 81 00 10 */ ble lbl_8035DF04 -/* 8035DEF8 7C 60 00 34 */ cntlzw r0, r3 -/* 8035DEFC 20 00 00 1F */ subfic r0, r0, 0x1f -/* 8035DF00 48 00 00 0C */ b lbl_8035DF0C -lbl_8035DF04: -/* 8035DF04 7C 00 00 34 */ cntlzw r0, r0 -/* 8035DF08 20 00 00 1F */ subfic r0, r0, 0x1f -lbl_8035DF0C: -/* 8035DF0C 90 01 00 3C */ stw r0, 0x3c(r1) -/* 8035DF10 3C 00 43 30 */ lis r0, 0x4330 -/* 8035DF14 C8 22 CB F0 */ lfd f1, lit_222(r2) -/* 8035DF18 90 01 00 38 */ stw r0, 0x38(r1) -/* 8035DF1C C0 42 CB E8 */ lfs f2, lit_220(r2) -/* 8035DF20 C8 01 00 38 */ lfd f0, 0x38(r1) -/* 8035DF24 80 7F 00 04 */ lwz r3, 4(r31) -/* 8035DF28 EC 00 08 28 */ fsubs f0, f0, f1 -/* 8035DF2C EC 02 00 32 */ fmuls f0, f2, f0 -/* 8035DF30 FC 00 00 1E */ fctiwz f0, f0 -/* 8035DF34 D8 01 00 30 */ stfd f0, 0x30(r1) -/* 8035DF38 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8035DF3C 50 03 44 2E */ rlwimi r3, r0, 8, 0x10, 0x17 -/* 8035DF40 90 7F 00 04 */ stw r3, 4(r31) -/* 8035DF44 48 00 00 14 */ b lbl_8035DF58 -lbl_8035DF48: -/* 8035DF48 80 7F 00 00 */ lwz r3, 0(r31) -/* 8035DF4C 38 00 00 04 */ li r0, 4 -/* 8035DF50 50 03 2E 34 */ rlwimi r3, r0, 5, 0x18, 0x1a -/* 8035DF54 90 7F 00 00 */ stw r3, 0(r31) -lbl_8035DF58: -/* 8035DF58 93 DF 00 14 */ stw r30, 0x14(r31) -/* 8035DF5C 57 87 04 3E */ clrlwi r7, r28, 0x10 -/* 8035DF60 57 C4 07 3E */ clrlwi r4, r30, 0x1c -/* 8035DF64 38 07 FF FF */ addi r0, r7, -1 -/* 8035DF68 80 7F 00 08 */ lwz r3, 8(r31) -/* 8035DF6C 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f -/* 8035DF70 90 7F 00 08 */ stw r3, 8(r31) -/* 8035DF74 57 A5 04 3E */ clrlwi r5, r29, 0x10 -/* 8035DF78 38 05 FF FF */ addi r0, r5, -1 -/* 8035DF7C 80 7F 00 08 */ lwz r3, 8(r31) -/* 8035DF80 50 03 53 2A */ rlwimi r3, r0, 0xa, 0xc, 0x15 -/* 8035DF84 28 04 00 0E */ cmplwi r4, 0xe -/* 8035DF88 90 7F 00 08 */ stw r3, 8(r31) -/* 8035DF8C 80 1F 00 08 */ lwz r0, 8(r31) -/* 8035DF90 53 C0 A2 16 */ rlwimi r0, r30, 0x14, 8, 0xb -/* 8035DF94 90 1F 00 08 */ stw r0, 8(r31) -/* 8035DF98 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 8035DF9C 53 60 DA FE */ rlwimi r0, r27, 0x1b, 0xb, 0x1f -/* 8035DFA0 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8035DFA4 41 81 00 80 */ bgt lbl_8035E024 -/* 8035DFA8 3C 60 80 3D */ lis r3, lit_224@ha /* 0x803D2780@ha */ -/* 8035DFAC 38 63 27 80 */ addi r3, r3, lit_224@l /* 0x803D2780@l */ -/* 8035DFB0 54 80 10 3A */ slwi r0, r4, 2 -/* 8035DFB4 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8035DFB8 7C 09 03 A6 */ mtctr r0 -/* 8035DFBC 4E 80 04 20 */ bctr -/* 8035DFC0 38 00 00 01 */ li r0, 1 -/* 8035DFC4 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035DFC8 38 00 00 03 */ li r0, 3 -/* 8035DFCC 38 C0 00 03 */ li r6, 3 -/* 8035DFD0 48 00 00 64 */ b lbl_8035E034 -/* 8035DFD4 38 00 00 02 */ li r0, 2 -/* 8035DFD8 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035DFDC 38 00 00 03 */ li r0, 3 -/* 8035DFE0 38 C0 00 02 */ li r6, 2 -/* 8035DFE4 48 00 00 50 */ b lbl_8035E034 -/* 8035DFE8 38 00 00 02 */ li r0, 2 -/* 8035DFEC 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035DFF0 38 00 00 02 */ li r0, 2 -/* 8035DFF4 38 C0 00 02 */ li r6, 2 -/* 8035DFF8 48 00 00 3C */ b lbl_8035E034 -/* 8035DFFC 38 00 00 03 */ li r0, 3 -/* 8035E000 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035E004 38 00 00 02 */ li r0, 2 -/* 8035E008 38 C0 00 02 */ li r6, 2 -/* 8035E00C 48 00 00 28 */ b lbl_8035E034 -/* 8035E010 38 00 00 00 */ li r0, 0 -/* 8035E014 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035E018 38 00 00 03 */ li r0, 3 -/* 8035E01C 38 C0 00 03 */ li r6, 3 -/* 8035E020 48 00 00 14 */ b lbl_8035E034 -lbl_8035E024: -/* 8035E024 38 00 00 02 */ li r0, 2 -/* 8035E028 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 8035E02C 38 00 00 02 */ li r0, 2 -/* 8035E030 38 C0 00 02 */ li r6, 2 -lbl_8035E034: -/* 8035E034 54 08 04 3E */ clrlwi r8, r0, 0x10 -/* 8035E038 38 80 00 01 */ li r4, 1 -/* 8035E03C 7C 83 40 30 */ slw r3, r4, r8 -/* 8035E040 54 C6 04 3E */ clrlwi r6, r6, 0x10 -/* 8035E044 38 03 FF FF */ addi r0, r3, -1 -/* 8035E048 7C 83 30 30 */ slw r3, r4, r6 -/* 8035E04C 7C 87 02 14 */ add r4, r7, r0 -/* 8035E050 38 03 FF FF */ addi r0, r3, -1 -/* 8035E054 7C 83 46 30 */ sraw r3, r4, r8 -/* 8035E058 7C 05 02 14 */ add r0, r5, r0 -/* 8035E05C 7C 00 36 30 */ sraw r0, r0, r6 -/* 8035E060 7C 03 01 D6 */ mullw r0, r3, r0 -/* 8035E064 54 00 04 7E */ clrlwi r0, r0, 0x11 -/* 8035E068 B0 1F 00 1C */ sth r0, 0x1c(r31) -/* 8035E06C 88 1F 00 1F */ lbz r0, 0x1f(r31) -/* 8035E070 60 00 00 02 */ ori r0, r0, 2 -/* 8035E074 98 1F 00 1F */ stb r0, 0x1f(r31) -/* 8035E078 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8035E07C BB 01 00 40 */ lmw r24, 0x40(r1) -/* 8035E080 38 21 00 60 */ addi r1, r1, 0x60 -/* 8035E084 7C 08 03 A6 */ mtlr r0 -/* 8035E088 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTexObjCI.s b/asm/dolphin/gx/GXTexture/GXInitTexObjCI.s deleted file mode 100644 index 055e36f0ae..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTexObjCI.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8035E08C: -/* 8035E08C 7C 08 02 A6 */ mflr r0 -/* 8035E090 90 01 00 04 */ stw r0, 4(r1) -/* 8035E094 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8035E098 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8035E09C 83 E1 00 38 */ lwz r31, 0x38(r1) -/* 8035E0A0 93 C1 00 28 */ stw r30, 0x28(r1) -/* 8035E0A4 7C 7E 1B 78 */ mr r30, r3 -/* 8035E0A8 4B FF FD 99 */ bl GXInitTexObj -/* 8035E0AC 88 1E 00 1F */ lbz r0, 0x1f(r30) -/* 8035E0B0 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 8035E0B4 98 1E 00 1F */ stb r0, 0x1f(r30) -/* 8035E0B8 93 FE 00 18 */ stw r31, 0x18(r30) -/* 8035E0BC 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8035E0C0 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8035E0C4 83 C1 00 28 */ lwz r30, 0x28(r1) -/* 8035E0C8 38 21 00 30 */ addi r1, r1, 0x30 -/* 8035E0CC 7C 08 03 A6 */ mtlr r0 -/* 8035E0D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s b/asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s deleted file mode 100644 index 54a880e5e7..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s +++ /dev/null @@ -1,100 +0,0 @@ -lbl_8035E0D4: -/* 8035E0D4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8035E0D8 C0 02 CB F8 */ lfs f0, lit_288(r2) -/* 8035E0DC FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8035E0E0 40 80 00 0C */ bge lbl_8035E0EC -/* 8035E0E4 FC 60 00 90 */ fmr f3, f0 -/* 8035E0E8 48 00 00 18 */ b lbl_8035E100 -lbl_8035E0EC: -/* 8035E0EC C0 02 CB FC */ lfs f0, lit_289(r2) -/* 8035E0F0 FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8035E0F4 4C 41 13 82 */ cror 2, 1, 2 -/* 8035E0F8 40 82 00 08 */ bne lbl_8035E100 -/* 8035E0FC C0 62 CC 00 */ lfs f3, lit_290(r2) -lbl_8035E100: -/* 8035E100 C0 02 CC 04 */ lfs f0, lit_291(r2) -/* 8035E104 2C 05 00 01 */ cmpwi r5, 1 -/* 8035E108 80 A3 00 00 */ lwz r5, 0(r3) -/* 8035E10C EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8035E110 FC 00 00 1E */ fctiwz f0, f0 -/* 8035E114 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 8035E118 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035E11C 50 05 4B EC */ rlwimi r5, r0, 9, 0xf, 0x16 -/* 8035E120 90 A3 00 00 */ stw r5, 0(r3) -/* 8035E124 40 82 00 0C */ bne lbl_8035E130 -/* 8035E128 38 00 00 01 */ li r0, 1 -/* 8035E12C 48 00 00 08 */ b lbl_8035E134 -lbl_8035E130: -/* 8035E130 38 00 00 00 */ li r0, 0 -lbl_8035E134: -/* 8035E134 80 A3 00 00 */ lwz r5, 0(r3) -/* 8035E138 50 05 26 F6 */ rlwimi r5, r0, 4, 0x1b, 0x1b -/* 8035E13C 54 E0 06 3F */ clrlwi. r0, r7, 0x18 -/* 8035E140 90 A3 00 00 */ stw r5, 0(r3) -/* 8035E144 38 AD 85 48 */ la r5, GX2HWFiltConv(r13) /* 80450AC8-_SDA_BASE_ */ -/* 8035E148 7C 05 20 AE */ lbzx r0, r5, r4 -/* 8035E14C 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E150 50 04 2E 34 */ rlwimi r4, r0, 5, 0x18, 0x1a -/* 8035E154 90 83 00 00 */ stw r4, 0(r3) -/* 8035E158 41 82 00 0C */ beq lbl_8035E164 -/* 8035E15C 38 80 00 00 */ li r4, 0 -/* 8035E160 48 00 00 08 */ b lbl_8035E168 -lbl_8035E164: -/* 8035E164 38 80 00 01 */ li r4, 1 -lbl_8035E168: -/* 8035E168 80 03 00 00 */ lwz r0, 0(r3) -/* 8035E16C 50 80 45 EE */ rlwimi r0, r4, 8, 0x17, 0x17 -/* 8035E170 38 A0 00 00 */ li r5, 0 -/* 8035E174 90 03 00 00 */ stw r0, 0(r3) -/* 8035E178 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E17C 50 A4 8B 9C */ rlwimi r4, r5, 0x11, 0xe, 0xe -/* 8035E180 90 83 00 00 */ stw r4, 0(r3) -/* 8035E184 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E188 50 A4 93 5A */ rlwimi r4, r5, 0x12, 0xd, 0xd -/* 8035E18C 90 83 00 00 */ stw r4, 0(r3) -/* 8035E190 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E194 51 04 9A D8 */ rlwimi r4, r8, 0x13, 0xb, 0xc -/* 8035E198 90 83 00 00 */ stw r4, 0(r3) -/* 8035E19C 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E1A0 50 C4 AA 94 */ rlwimi r4, r6, 0x15, 0xa, 0xa -/* 8035E1A4 90 83 00 00 */ stw r4, 0(r3) -/* 8035E1A8 C0 02 CC 08 */ lfs f0, lit_292(r2) -/* 8035E1AC FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8035E1B0 40 80 00 0C */ bge lbl_8035E1BC -/* 8035E1B4 FC 20 00 90 */ fmr f1, f0 -/* 8035E1B8 48 00 00 14 */ b lbl_8035E1CC -lbl_8035E1BC: -/* 8035E1BC C0 02 CC 0C */ lfs f0, lit_293(r2) -/* 8035E1C0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8035E1C4 40 81 00 08 */ ble lbl_8035E1CC -/* 8035E1C8 FC 20 00 90 */ fmr f1, f0 -lbl_8035E1CC: -/* 8035E1CC C0 62 CB E8 */ lfs f3, lit_220(r2) -/* 8035E1D0 C0 02 CC 08 */ lfs f0, lit_292(r2) -/* 8035E1D4 EC 23 00 72 */ fmuls f1, f3, f1 -/* 8035E1D8 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8035E1DC FC 20 08 1E */ fctiwz f1, f1 -/* 8035E1E0 D8 21 00 28 */ stfd f1, 0x28(r1) -/* 8035E1E4 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035E1E8 40 80 00 0C */ bge lbl_8035E1F4 -/* 8035E1EC FC 40 00 90 */ fmr f2, f0 -/* 8035E1F0 48 00 00 14 */ b lbl_8035E204 -lbl_8035E1F4: -/* 8035E1F4 C0 02 CC 0C */ lfs f0, lit_293(r2) -/* 8035E1F8 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8035E1FC 40 81 00 08 */ ble lbl_8035E204 -/* 8035E200 FC 40 00 90 */ fmr f2, f0 -lbl_8035E204: -/* 8035E204 C0 02 CB E8 */ lfs f0, lit_220(r2) -/* 8035E208 80 83 00 04 */ lwz r4, 4(r3) -/* 8035E20C 50 04 06 3E */ rlwimi r4, r0, 0, 0x18, 0x1f -/* 8035E210 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8035E214 90 83 00 04 */ stw r4, 4(r3) -/* 8035E218 FC 00 00 1E */ fctiwz f0, f0 -/* 8035E21C 80 83 00 04 */ lwz r4, 4(r3) -/* 8035E220 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 8035E224 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035E228 50 04 44 2E */ rlwimi r4, r0, 8, 0x10, 0x17 -/* 8035E22C 90 83 00 04 */ stw r4, 4(r3) -/* 8035E230 38 21 00 30 */ addi r1, r1, 0x30 -/* 8035E234 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTlutObj.s b/asm/dolphin/gx/GXTexture/GXInitTlutObj.s deleted file mode 100644 index bea7316179..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTlutObj.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8035E468: -/* 8035E468 38 00 00 00 */ li r0, 0 -/* 8035E46C 90 03 00 00 */ stw r0, 0(r3) -/* 8035E470 38 00 00 64 */ li r0, 0x64 -/* 8035E474 80 E3 00 00 */ lwz r7, 0(r3) -/* 8035E478 50 A7 55 2A */ rlwimi r7, r5, 0xa, 0x14, 0x15 -/* 8035E47C 90 E3 00 00 */ stw r7, 0(r3) -/* 8035E480 80 A3 00 04 */ lwz r5, 4(r3) -/* 8035E484 50 85 DA FE */ rlwimi r5, r4, 0x1b, 0xb, 0x1f -/* 8035E488 90 A3 00 04 */ stw r5, 4(r3) -/* 8035E48C 80 83 00 04 */ lwz r4, 4(r3) -/* 8035E490 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 8035E494 90 83 00 04 */ stw r4, 4(r3) -/* 8035E498 B0 C3 00 08 */ sth r6, 8(r3) -/* 8035E49C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXInitTlutRegion.s b/asm/dolphin/gx/GXTexture/GXInitTlutRegion.s deleted file mode 100644 index 593a3cb90b..0000000000 --- a/asm/dolphin/gx/GXTexture/GXInitTlutRegion.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8035E62C: -/* 8035E62C 38 00 00 00 */ li r0, 0 -/* 8035E630 90 03 00 00 */ stw r0, 0(r3) -/* 8035E634 3C 04 FF F8 */ addis r0, r4, 0xfff8 -/* 8035E638 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E63C 50 04 BD BE */ rlwimi r4, r0, 0x17, 0x16, 0x1f -/* 8035E640 38 00 00 65 */ li r0, 0x65 -/* 8035E644 90 83 00 00 */ stw r4, 0(r3) -/* 8035E648 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E64C 50 A4 52 EA */ rlwimi r4, r5, 0xa, 0xb, 0x15 -/* 8035E650 90 83 00 00 */ stw r4, 0(r3) -/* 8035E654 80 83 00 00 */ lwz r4, 0(r3) -/* 8035E658 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7 -/* 8035E65C 90 83 00 00 */ stw r4, 0(r3) -/* 8035E660 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXLoadTexObj.s b/asm/dolphin/gx/GXTexture/GXLoadTexObj.s deleted file mode 100644 index d550d802e1..0000000000 --- a/asm/dolphin/gx/GXTexture/GXLoadTexObj.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8035E414: -/* 8035E414 7C 08 02 A6 */ mflr r0 -/* 8035E418 90 01 00 04 */ stw r0, 4(r1) -/* 8035E41C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8035E420 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035E424 3B E4 00 00 */ addi r31, r4, 0 -/* 8035E428 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8035E42C 3B C3 00 00 */ addi r30, r3, 0 -/* 8035E430 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035E434 81 85 04 C8 */ lwz r12, 0x4c8(r5) -/* 8035E438 7D 88 03 A6 */ mtlr r12 -/* 8035E43C 4E 80 00 21 */ blrl -/* 8035E440 38 83 00 00 */ addi r4, r3, 0 -/* 8035E444 38 7E 00 00 */ addi r3, r30, 0 -/* 8035E448 38 BF 00 00 */ addi r5, r31, 0 -/* 8035E44C 4B FF FE 4D */ bl GXLoadTexObjPreLoaded -/* 8035E450 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8035E454 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035E458 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8035E45C 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035E460 7C 08 03 A6 */ mtlr r0 -/* 8035E464 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s b/asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s deleted file mode 100644 index dda0b96b7f..0000000000 --- a/asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s +++ /dev/null @@ -1,97 +0,0 @@ -lbl_8035E298: -/* 8035E298 7C 08 02 A6 */ mflr r0 -/* 8035E29C 38 ED 85 20 */ la r7, GXTexImage0Ids(r13) /* 80450AA0-_SDA_BASE_ */ -/* 8035E2A0 90 01 00 04 */ stw r0, 4(r1) -/* 8035E2A4 38 CD 85 28 */ la r6, GXTexImage1Ids(r13) /* 80450AA8-_SDA_BASE_ */ -/* 8035E2A8 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8035E2AC 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 8035E2B0 3B E5 00 00 */ addi r31, r5, 0 -/* 8035E2B4 38 AD 85 10 */ la r5, GXTexMode0Ids(r13) /* 80450A90-_SDA_BASE_ */ -/* 8035E2B8 93 C1 00 38 */ stw r30, 0x38(r1) -/* 8035E2BC 3B C3 00 00 */ addi r30, r3, 0 -/* 8035E2C0 93 A1 00 34 */ stw r29, 0x34(r1) -/* 8035E2C4 3F A0 CC 01 */ lis r29, 0xCC01 /* 0xCC008000@ha */ -/* 8035E2C8 93 81 00 30 */ stw r28, 0x30(r1) -/* 8035E2CC 3B 80 00 61 */ li r28, 0x61 -/* 8035E2D0 7C 05 F8 AE */ lbzx r0, r5, r31 -/* 8035E2D4 80 A3 00 00 */ lwz r5, 0(r3) -/* 8035E2D8 38 6D 85 18 */ la r3, GXTexMode1Ids(r13) /* 80450A98-_SDA_BASE_ */ -/* 8035E2DC 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7 -/* 8035E2E0 90 BE 00 00 */ stw r5, 0(r30) -/* 8035E2E4 38 AD 85 30 */ la r5, GXTexImage2Ids(r13) /* 80450AB0-_SDA_BASE_ */ -/* 8035E2E8 7C 03 F8 AE */ lbzx r0, r3, r31 -/* 8035E2EC 38 6D 85 38 */ la r3, GXTexImage3Ids(r13) /* 80450AB8-_SDA_BASE_ */ -/* 8035E2F0 81 1E 00 04 */ lwz r8, 4(r30) -/* 8035E2F4 50 08 C0 0E */ rlwimi r8, r0, 0x18, 0, 7 -/* 8035E2F8 91 1E 00 04 */ stw r8, 4(r30) -/* 8035E2FC 7C 07 F8 AE */ lbzx r0, r7, r31 -/* 8035E300 80 FE 00 08 */ lwz r7, 8(r30) -/* 8035E304 50 07 C0 0E */ rlwimi r7, r0, 0x18, 0, 7 -/* 8035E308 90 FE 00 08 */ stw r7, 8(r30) -/* 8035E30C 7C 06 F8 AE */ lbzx r0, r6, r31 -/* 8035E310 80 C4 00 00 */ lwz r6, 0(r4) -/* 8035E314 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7 -/* 8035E318 90 C4 00 00 */ stw r6, 0(r4) -/* 8035E31C 7C 05 F8 AE */ lbzx r0, r5, r31 -/* 8035E320 80 A4 00 04 */ lwz r5, 4(r4) -/* 8035E324 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7 -/* 8035E328 90 A4 00 04 */ stw r5, 4(r4) -/* 8035E32C 7C 03 F8 AE */ lbzx r0, r3, r31 -/* 8035E330 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 8035E334 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7 -/* 8035E338 90 7E 00 0C */ stw r3, 0xc(r30) -/* 8035E33C 9B 9D 80 00 */ stb r28, 0x8000(r29) /* 0xCC008000@l */ -/* 8035E340 80 1E 00 00 */ lwz r0, 0(r30) -/* 8035E344 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E348 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E34C 80 1E 00 04 */ lwz r0, 4(r30) -/* 8035E350 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E354 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E358 80 1E 00 08 */ lwz r0, 8(r30) -/* 8035E35C 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E360 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E364 80 04 00 00 */ lwz r0, 0(r4) -/* 8035E368 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E36C 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E370 80 04 00 04 */ lwz r0, 4(r4) -/* 8035E374 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E378 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E37C 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 8035E380 90 1D 80 00 */ stw r0, -0x8000(r29) -/* 8035E384 88 1E 00 1F */ lbz r0, 0x1f(r30) -/* 8035E388 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 8035E38C 40 82 00 38 */ bne lbl_8035E3C4 -/* 8035E390 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035E394 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 8035E398 81 84 04 CC */ lwz r12, 0x4cc(r4) -/* 8035E39C 7D 88 03 A6 */ mtlr r12 -/* 8035E3A0 4E 80 00 21 */ blrl -/* 8035E3A4 38 8D 85 40 */ la r4, GXTexTlutIds(r13) /* 80450AC0-_SDA_BASE_ */ -/* 8035E3A8 80 A3 00 04 */ lwz r5, 4(r3) -/* 8035E3AC 7C 04 F8 AE */ lbzx r0, r4, r31 -/* 8035E3B0 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7 -/* 8035E3B4 90 A3 00 04 */ stw r5, 4(r3) -/* 8035E3B8 9B 9D 80 00 */ stb r28, -0x8000(r29) -/* 8035E3BC 80 03 00 04 */ lwz r0, 4(r3) -/* 8035E3C0 90 1D 80 00 */ stw r0, -0x8000(r29) -lbl_8035E3C4: -/* 8035E3C4 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035E3C8 57 E4 10 3A */ slwi r4, r31, 2 -/* 8035E3CC 80 7E 00 08 */ lwz r3, 8(r30) -/* 8035E3D0 38 00 00 00 */ li r0, 0 -/* 8035E3D4 7C 85 22 14 */ add r4, r5, r4 -/* 8035E3D8 90 64 05 14 */ stw r3, 0x514(r4) -/* 8035E3DC 80 7E 00 00 */ lwz r3, 0(r30) -/* 8035E3E0 90 64 05 34 */ stw r3, 0x534(r4) -/* 8035E3E4 80 65 05 AC */ lwz r3, 0x5ac(r5) -/* 8035E3E8 60 63 00 01 */ ori r3, r3, 1 -/* 8035E3EC 90 65 05 AC */ stw r3, 0x5ac(r5) -/* 8035E3F0 B0 05 00 02 */ sth r0, 2(r5) -/* 8035E3F4 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8035E3F8 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 8035E3FC 83 C1 00 38 */ lwz r30, 0x38(r1) -/* 8035E400 83 A1 00 34 */ lwz r29, 0x34(r1) -/* 8035E404 83 81 00 30 */ lwz r28, 0x30(r1) -/* 8035E408 38 21 00 40 */ addi r1, r1, 0x40 -/* 8035E40C 7C 08 03 A6 */ mtlr r0 -/* 8035E410 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/GXLoadTlut.s b/asm/dolphin/gx/GXTexture/GXLoadTlut.s deleted file mode 100644 index 3fedd0a06f..0000000000 --- a/asm/dolphin/gx/GXTexture/GXLoadTlut.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8035E4A0: -/* 8035E4A0 7C 08 02 A6 */ mflr r0 -/* 8035E4A4 90 01 00 04 */ stw r0, 4(r1) -/* 8035E4A8 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8035E4AC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035E4B0 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8035E4B4 7C 7E 1B 78 */ mr r30, r3 -/* 8035E4B8 38 64 00 00 */ addi r3, r4, 0 -/* 8035E4BC 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035E4C0 81 85 04 CC */ lwz r12, 0x4cc(r5) -/* 8035E4C4 7D 88 03 A6 */ mtlr r12 -/* 8035E4C8 4E 80 00 21 */ blrl -/* 8035E4CC 7C 7F 1B 78 */ mr r31, r3 -/* 8035E4D0 48 00 0C A5 */ bl __GXFlushTextureState -/* 8035E4D4 38 80 00 61 */ li r4, 0x61 -/* 8035E4D8 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035E4DC 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */ -/* 8035E4E0 80 1E 00 04 */ lwz r0, 4(r30) -/* 8035E4E4 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035E4E8 98 83 80 00 */ stb r4, -0x8000(r3) -/* 8035E4EC 80 1F 00 00 */ lwz r0, 0(r31) -/* 8035E4F0 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035E4F4 48 00 0C 81 */ bl __GXFlushTextureState -/* 8035E4F8 80 7F 00 00 */ lwz r3, 0(r31) -/* 8035E4FC 80 1E 00 00 */ lwz r0, 0(r30) -/* 8035E500 50 60 05 BE */ rlwimi r0, r3, 0, 0x16, 0x1f -/* 8035E504 90 1E 00 00 */ stw r0, 0(r30) -/* 8035E508 80 7E 00 00 */ lwz r3, 0(r30) -/* 8035E50C 80 1E 00 04 */ lwz r0, 4(r30) -/* 8035E510 90 7F 00 04 */ stw r3, 4(r31) -/* 8035E514 90 1F 00 08 */ stw r0, 8(r31) -/* 8035E518 80 1E 00 08 */ lwz r0, 8(r30) -/* 8035E51C 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8035E520 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8035E524 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035E528 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8035E52C 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035E530 7C 08 03 A6 */ mtlr r0 -/* 8035E534 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s b/asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s deleted file mode 100644 index 89589a9c12..0000000000 --- a/asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s +++ /dev/null @@ -1,111 +0,0 @@ -lbl_8035E7F0: -/* 8035E7F0 7C 08 02 A6 */ mflr r0 -/* 8035E7F4 90 01 00 04 */ stw r0, 4(r1) -/* 8035E7F8 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035E7FC BF 61 00 14 */ stmw r27, 0x14(r1) -/* 8035E800 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E804 80 03 05 94 */ lwz r0, 0x594(r3) -/* 8035E808 28 00 00 FF */ cmplwi r0, 0xff -/* 8035E80C 41 82 01 4C */ beq lbl_8035E958 -/* 8035E810 80 03 02 04 */ lwz r0, 0x204(r3) -/* 8035E814 3B E0 00 00 */ li r31, 0 -/* 8035E818 54 03 B7 3E */ rlwinm r3, r0, 0x16, 0x1c, 0x1f -/* 8035E81C 3B C3 00 01 */ addi r30, r3, 1 -/* 8035E820 54 1B 87 7E */ rlwinm r27, r0, 0x10, 0x1d, 0x1f -/* 8035E824 48 00 00 A0 */ b lbl_8035E8C4 -lbl_8035E828: -/* 8035E828 2C 1F 00 02 */ cmpwi r31, 2 -/* 8035E82C 41 82 00 4C */ beq lbl_8035E878 -/* 8035E830 40 80 00 14 */ bge lbl_8035E844 -/* 8035E834 2C 1F 00 00 */ cmpwi r31, 0 -/* 8035E838 41 82 00 18 */ beq lbl_8035E850 -/* 8035E83C 40 80 00 28 */ bge lbl_8035E864 -/* 8035E840 48 00 00 5C */ b lbl_8035E89C -lbl_8035E844: -/* 8035E844 2C 1F 00 04 */ cmpwi r31, 4 -/* 8035E848 40 80 00 54 */ bge lbl_8035E89C -/* 8035E84C 48 00 00 40 */ b lbl_8035E88C -lbl_8035E850: -/* 8035E850 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E854 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035E858 54 1D 07 7E */ clrlwi r29, r0, 0x1d -/* 8035E85C 54 1C EF 7E */ rlwinm r28, r0, 0x1d, 0x1d, 0x1f -/* 8035E860 48 00 00 3C */ b lbl_8035E89C -lbl_8035E864: -/* 8035E864 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E868 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035E86C 54 1D D7 7E */ rlwinm r29, r0, 0x1a, 0x1d, 0x1f -/* 8035E870 54 1C BF 7E */ rlwinm r28, r0, 0x17, 0x1d, 0x1f -/* 8035E874 48 00 00 28 */ b lbl_8035E89C -lbl_8035E878: -/* 8035E878 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E87C 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035E880 54 1D A7 7E */ rlwinm r29, r0, 0x14, 0x1d, 0x1f -/* 8035E884 54 1C 8F 7E */ rlwinm r28, r0, 0x11, 0x1d, 0x1f -/* 8035E888 48 00 00 14 */ b lbl_8035E89C -lbl_8035E88C: -/* 8035E88C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E890 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035E894 54 1D 77 7E */ rlwinm r29, r0, 0xe, 0x1d, 0x1f -/* 8035E898 54 1C 5F 7E */ rlwinm r28, r0, 0xb, 0x1d, 0x1f -lbl_8035E89C: -/* 8035E89C 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035E8A0 38 00 00 01 */ li r0, 1 -/* 8035E8A4 7C 00 E0 30 */ slw r0, r0, r28 -/* 8035E8A8 80 63 05 94 */ lwz r3, 0x594(r3) -/* 8035E8AC 7C 60 00 39 */ and. r0, r3, r0 -/* 8035E8B0 40 82 00 10 */ bne lbl_8035E8C0 -/* 8035E8B4 38 7D 00 00 */ addi r3, r29, 0 -/* 8035E8B8 38 9C 00 00 */ addi r4, r28, 0 -/* 8035E8BC 4B FF FE 95 */ bl __SetSURegs -lbl_8035E8C0: -/* 8035E8C0 3B FF 00 01 */ addi r31, r31, 1 -lbl_8035E8C4: -/* 8035E8C4 7C 1F D8 40 */ cmplw r31, r27 -/* 8035E8C8 41 80 FF 60 */ blt lbl_8035E828 -/* 8035E8CC 3B E0 00 00 */ li r31, 0 -/* 8035E8D0 3B 7F 00 00 */ addi r27, r31, 0 -/* 8035E8D4 48 00 00 7C */ b lbl_8035E950 -lbl_8035E8D8: -/* 8035E8D8 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 8035E8DC 38 7B 05 54 */ addi r3, r27, 0x554 -/* 8035E8E0 57 E4 08 3A */ rlwinm r4, r31, 1, 0, 0x1d -/* 8035E8E4 7C 65 18 2E */ lwzx r3, r5, r3 -/* 8035E8E8 57 E0 07 FF */ clrlwi. r0, r31, 0x1f -/* 8035E8EC 38 84 01 00 */ addi r4, r4, 0x100 -/* 8035E8F0 7C 85 22 14 */ add r4, r5, r4 -/* 8035E8F4 54 7D 06 2C */ rlwinm r29, r3, 0, 0x18, 0x16 -/* 8035E8F8 41 82 00 10 */ beq lbl_8035E908 -/* 8035E8FC 80 04 00 00 */ lwz r0, 0(r4) -/* 8035E900 54 1C 8F 7E */ rlwinm r28, r0, 0x11, 0x1d, 0x1f -/* 8035E904 48 00 00 0C */ b lbl_8035E910 -lbl_8035E908: -/* 8035E908 80 04 00 00 */ lwz r0, 0(r4) -/* 8035E90C 54 1C EF 7E */ rlwinm r28, r0, 0x1d, 0x1d, 0x1f -lbl_8035E910: -/* 8035E910 28 1D 00 FF */ cmplwi r29, 0xff -/* 8035E914 41 82 00 34 */ beq lbl_8035E948 -/* 8035E918 38 80 00 01 */ li r4, 1 -/* 8035E91C 80 65 05 94 */ lwz r3, 0x594(r5) -/* 8035E920 7C 80 E0 30 */ slw r0, r4, r28 -/* 8035E924 7C 60 00 39 */ and. r0, r3, r0 -/* 8035E928 40 82 00 20 */ bne lbl_8035E948 -/* 8035E92C 80 65 05 98 */ lwz r3, 0x598(r5) -/* 8035E930 7C 80 F8 30 */ slw r0, r4, r31 -/* 8035E934 7C 60 00 39 */ and. r0, r3, r0 -/* 8035E938 41 82 00 10 */ beq lbl_8035E948 -/* 8035E93C 38 7D 00 00 */ addi r3, r29, 0 -/* 8035E940 38 9C 00 00 */ addi r4, r28, 0 -/* 8035E944 4B FF FE 0D */ bl __SetSURegs -lbl_8035E948: -/* 8035E948 3B 7B 00 04 */ addi r27, r27, 4 -/* 8035E94C 3B FF 00 01 */ addi r31, r31, 1 -lbl_8035E950: -/* 8035E950 7C 1F F0 40 */ cmplw r31, r30 -/* 8035E954 41 80 FF 84 */ blt lbl_8035E8D8 -lbl_8035E958: -/* 8035E958 BB 61 00 14 */ lmw r27, 0x14(r1) -/* 8035E95C 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035E960 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035E964 7C 08 03 A6 */ mtlr r0 -/* 8035E968 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s b/asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s deleted file mode 100644 index c74bc1c274..0000000000 --- a/asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s +++ /dev/null @@ -1,218 +0,0 @@ -lbl_8035E96C: -/* 8035E96C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8035E970 2C 03 00 01 */ cmpwi r3, 1 -/* 8035E974 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035E978 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8035E97C 41 82 01 20 */ beq lbl_8035EA9C -/* 8035E980 40 80 00 08 */ bge lbl_8035E988 -/* 8035E984 48 00 02 24 */ b lbl_8035EBA8 -lbl_8035E988: -/* 8035E988 2C 03 00 03 */ cmpwi r3, 3 -/* 8035E98C 40 80 02 1C */ bge lbl_8035EBA8 -/* 8035E990 38 00 00 61 */ li r0, 0x61 -/* 8035E994 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035E998 3C 80 8C 0E */ lis r4, 0x8C0E /* 0x8C0D8000@ha */ -/* 8035E99C 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035E9A0 38 84 80 00 */ addi r4, r4, 0x8000 /* 0x8C0D8000@l */ -/* 8035E9A4 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035E9A8 3C 80 90 0E */ lis r4, 0x900E /* 0x900DC000@ha */ -/* 8035E9AC 3C E0 8D 0E */ lis r7, 0x8D0E /* 0x8D0D8800@ha */ -/* 8035E9B0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035E9B4 38 84 C0 00 */ addi r4, r4, 0xC000 /* 0x900DC000@l */ -/* 8035E9B8 3C C0 91 0E */ lis r6, 0x910E /* 0x910DC800@ha */ -/* 8035E9BC 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035E9C0 3C A0 8E 0E */ lis r5, 0x8E0E /* 0x8E0D9000@ha */ -/* 8035E9C4 3C 80 92 0E */ lis r4, 0x920E /* 0x920DD000@ha */ -/* 8035E9C8 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035E9CC 38 E7 88 00 */ addi r7, r7, 0x8800 /* 0x8D0D8800@l */ -/* 8035E9D0 3F C0 8F 0E */ lis r30, 0x8F0E /* 0x8F0D9800@ha */ -/* 8035E9D4 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035E9D8 3D 80 93 0E */ lis r12, 0x930E /* 0x930DD800@ha */ -/* 8035E9DC 3D 60 AC 0E */ lis r11, 0xAC0E /* 0xAC0DA000@ha */ -/* 8035E9E0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035E9E4 38 C6 C8 00 */ addi r6, r6, 0xC800 /* 0x910DC800@l */ -/* 8035E9E8 3D 40 B0 0E */ lis r10, 0xB00E /* 0xB00DC400@ha */ -/* 8035E9EC 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035E9F0 3D 20 AD 0E */ lis r9, 0xAD0E /* 0xAD0DA800@ha */ -/* 8035E9F4 3D 00 B1 0E */ lis r8, 0xB10E /* 0xB10DCC00@ha */ -/* 8035E9F8 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035E9FC 38 A5 90 00 */ addi r5, r5, 0x9000 /* 0x8E0D9000@l */ -/* 8035EA00 3C E0 AE 0E */ lis r7, 0xAE0E /* 0xAE0DB000@ha */ -/* 8035EA04 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035EA08 3C C0 B2 0E */ lis r6, 0xB20E /* 0xB20DD400@ha */ -/* 8035EA0C 3C A0 AF 0E */ lis r5, 0xAF0E /* 0xAF0DB800@ha */ -/* 8035EA10 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA14 3B E4 D0 00 */ addi r31, r4, 0xD000 /* 0x920DD000@l */ -/* 8035EA18 3C 80 B3 0E */ lis r4, 0xB30E /* 0xB30DDC00@ha */ -/* 8035EA1C 93 E3 80 00 */ stw r31, -0x8000(r3) -/* 8035EA20 3B DE 98 00 */ addi r30, r30, 0x9800 /* 0x8F0D9800@l */ -/* 8035EA24 39 8C D8 00 */ addi r12, r12, 0xD800 /* 0x930DD800@l */ -/* 8035EA28 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA2C 39 6B A0 00 */ addi r11, r11, 0xA000 /* 0xAC0DA000@l */ -/* 8035EA30 39 4A C4 00 */ addi r10, r10, 0xC400 /* 0xB00DC400@l */ -/* 8035EA34 93 C3 80 00 */ stw r30, -0x8000(r3) -/* 8035EA38 39 29 A8 00 */ addi r9, r9, 0xA800 /* 0xAD0DA800@l */ -/* 8035EA3C 39 08 CC 00 */ addi r8, r8, 0xCC00 /* 0xB10DCC00@l */ -/* 8035EA40 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA44 38 E7 B0 00 */ addi r7, r7, 0xB000 /* 0xAE0DB000@l */ -/* 8035EA48 38 C6 D4 00 */ addi r6, r6, 0xD400 /* 0xB20DD400@l */ -/* 8035EA4C 91 83 80 00 */ stw r12, -0x8000(r3) -/* 8035EA50 38 A5 B8 00 */ addi r5, r5, 0xB800 /* 0xAF0DB800@l */ -/* 8035EA54 38 84 DC 00 */ addi r4, r4, 0xDC00 /* 0xB30DDC00@l */ -/* 8035EA58 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA5C 91 63 80 00 */ stw r11, -0x8000(r3) -/* 8035EA60 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA64 91 43 80 00 */ stw r10, -0x8000(r3) -/* 8035EA68 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA6C 91 23 80 00 */ stw r9, -0x8000(r3) -/* 8035EA70 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA74 91 03 80 00 */ stw r8, -0x8000(r3) -/* 8035EA78 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA7C 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035EA80 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA84 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035EA88 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA8C 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035EA90 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EA94 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EA98 48 00 02 18 */ b lbl_8035ECB0 -lbl_8035EA9C: -/* 8035EA9C 38 00 00 61 */ li r0, 0x61 -/* 8035EAA0 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EAA4 3C 80 8C 0E */ lis r4, 0x8C0E /* 0x8C0D8000@ha */ -/* 8035EAA8 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EAAC 38 84 80 00 */ addi r4, r4, 0x8000 /* 0x8C0D8000@l */ -/* 8035EAB0 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EAB4 3C 80 90 0E */ lis r4, 0x900E /* 0x900DC000@ha */ -/* 8035EAB8 3C E0 8D 0E */ lis r7, 0x8D0E /* 0x8D0D8800@ha */ -/* 8035EABC 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EAC0 38 84 C0 00 */ addi r4, r4, 0xC000 /* 0x900DC000@l */ -/* 8035EAC4 3C C0 91 0E */ lis r6, 0x910E /* 0x910DC800@ha */ -/* 8035EAC8 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EACC 3C A0 8E 0E */ lis r5, 0x8E0E /* 0x8E0D9000@ha */ -/* 8035EAD0 3C 80 92 0E */ lis r4, 0x920E /* 0x920DD000@ha */ -/* 8035EAD4 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EAD8 38 E7 88 00 */ addi r7, r7, 0x8800 /* 0x8D0D8800@l */ -/* 8035EADC 3F C0 8F 0E */ lis r30, 0x8F0E /* 0x8F0D9800@ha */ -/* 8035EAE0 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035EAE4 3D 80 93 0E */ lis r12, 0x930E /* 0x930DD800@ha */ -/* 8035EAE8 3D 60 AC 0E */ lis r11, 0xAC0E /* 0xAC0DA000@ha */ -/* 8035EAEC 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EAF0 38 C6 C8 00 */ addi r6, r6, 0xC800 /* 0x910DC800@l */ -/* 8035EAF4 3D 40 B0 0E */ lis r10, 0xB00E /* 0xB00DE000@ha */ -/* 8035EAF8 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035EAFC 3D 20 AD 0E */ lis r9, 0xAD0E /* 0xAD0DA800@ha */ -/* 8035EB00 3D 00 B1 0E */ lis r8, 0xB10E /* 0xB10DE800@ha */ -/* 8035EB04 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB08 38 A5 90 00 */ addi r5, r5, 0x9000 /* 0x8E0D9000@l */ -/* 8035EB0C 3C E0 AE 0E */ lis r7, 0xAE0E /* 0xAE0DB000@ha */ -/* 8035EB10 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035EB14 3C C0 B2 0E */ lis r6, 0xB20E /* 0xB20DF000@ha */ -/* 8035EB18 3C A0 AF 0E */ lis r5, 0xAF0E /* 0xAF0DB800@ha */ -/* 8035EB1C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB20 3B E4 D0 00 */ addi r31, r4, 0xD000 /* 0x920DD000@l */ -/* 8035EB24 3C 80 B3 0E */ lis r4, 0xB30E /* 0xB30DF800@ha */ -/* 8035EB28 93 E3 80 00 */ stw r31, -0x8000(r3) -/* 8035EB2C 3B DE 98 00 */ addi r30, r30, 0x9800 /* 0x8F0D9800@l */ -/* 8035EB30 39 8C D8 00 */ addi r12, r12, 0xD800 /* 0x930DD800@l */ -/* 8035EB34 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB38 39 6B A0 00 */ addi r11, r11, 0xA000 /* 0xAC0DA000@l */ -/* 8035EB3C 39 4A E0 00 */ addi r10, r10, 0xE000 /* 0xB00DE000@l */ -/* 8035EB40 93 C3 80 00 */ stw r30, -0x8000(r3) -/* 8035EB44 39 29 A8 00 */ addi r9, r9, 0xA800 /* 0xAD0DA800@l */ -/* 8035EB48 39 08 E8 00 */ addi r8, r8, 0xE800 /* 0xB10DE800@l */ -/* 8035EB4C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB50 38 E7 B0 00 */ addi r7, r7, 0xB000 /* 0xAE0DB000@l */ -/* 8035EB54 38 C6 F0 00 */ addi r6, r6, 0xF000 /* 0xB20DF000@l */ -/* 8035EB58 91 83 80 00 */ stw r12, -0x8000(r3) -/* 8035EB5C 38 A5 B8 00 */ addi r5, r5, 0xB800 /* 0xAF0DB800@l */ -/* 8035EB60 38 84 F8 00 */ addi r4, r4, 0xF800 /* 0xB30DF800@l */ -/* 8035EB64 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB68 91 63 80 00 */ stw r11, -0x8000(r3) -/* 8035EB6C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB70 91 43 80 00 */ stw r10, -0x8000(r3) -/* 8035EB74 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB78 91 23 80 00 */ stw r9, -0x8000(r3) -/* 8035EB7C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB80 91 03 80 00 */ stw r8, -0x8000(r3) -/* 8035EB84 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB88 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035EB8C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB90 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035EB94 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EB98 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035EB9C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EBA0 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EBA4 48 00 01 0C */ b lbl_8035ECB0 -lbl_8035EBA8: -/* 8035EBA8 38 00 00 61 */ li r0, 0x61 -/* 8035EBAC 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EBB0 3C 80 8C 0E */ lis r4, 0x8C0E /* 0x8C0D8000@ha */ -/* 8035EBB4 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EBB8 38 84 80 00 */ addi r4, r4, 0x8000 /* 0x8C0D8000@l */ -/* 8035EBBC 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EBC0 3C 80 90 0E */ lis r4, 0x900E /* 0x900DC000@ha */ -/* 8035EBC4 3C E0 8D 0E */ lis r7, 0x8D0E /* 0x8D0D8400@ha */ -/* 8035EBC8 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EBCC 38 84 C0 00 */ addi r4, r4, 0xC000 /* 0x900DC000@l */ -/* 8035EBD0 3C C0 91 0E */ lis r6, 0x910E /* 0x910DC400@ha */ -/* 8035EBD4 90 83 80 00 */ stw r4, -0x8000(r3) -/* 8035EBD8 3C A0 8E 0E */ lis r5, 0x8E0E /* 0x8E0D8800@ha */ -/* 8035EBDC 3C 80 92 0E */ lis r4, 0x920E /* 0x920DC800@ha */ -/* 8035EBE0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EBE4 38 E7 84 00 */ addi r7, r7, 0x8400 /* 0x8D0D8400@l */ -/* 8035EBE8 3F E0 8F 0E */ lis r31, 0x8F0E /* 0x8F0D8C00@ha */ -/* 8035EBEC 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035EBF0 3D 80 93 0E */ lis r12, 0x930E /* 0x930DCC00@ha */ -/* 8035EBF4 3D 60 AC 0E */ lis r11, 0xAC0E /* 0xAC0D9000@ha */ -/* 8035EBF8 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EBFC 38 C6 C4 00 */ addi r6, r6, 0xC400 /* 0x910DC400@l */ -/* 8035EC00 3D 40 B0 0E */ lis r10, 0xB00E /* 0xB00DD000@ha */ -/* 8035EC04 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035EC08 3D 20 AD 0E */ lis r9, 0xAD0E /* 0xAD0D9400@ha */ -/* 8035EC0C 3D 00 B1 0E */ lis r8, 0xB10E /* 0xB10DD400@ha */ -/* 8035EC10 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC14 38 A5 88 00 */ addi r5, r5, 0x8800 /* 0x8E0D8800@l */ -/* 8035EC18 3C E0 AE 0E */ lis r7, 0xAE0E /* 0xAE0D9800@ha */ -/* 8035EC1C 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035EC20 3C C0 B2 0E */ lis r6, 0xB20E /* 0xB20DD800@ha */ -/* 8035EC24 3C A0 AF 0E */ lis r5, 0xAF0E /* 0xAF0D9C00@ha */ -/* 8035EC28 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC2C 3B C4 C8 00 */ addi r30, r4, 0xC800 /* 0x920DC800@l */ -/* 8035EC30 3C 80 B3 0E */ lis r4, 0xB30E /* 0xB30DDC00@ha */ -/* 8035EC34 93 C3 80 00 */ stw r30, -0x8000(r3) -/* 8035EC38 3B FF 8C 00 */ addi r31, r31, 0x8C00 /* 0x8F0D8C00@l */ -/* 8035EC3C 39 8C CC 00 */ addi r12, r12, 0xCC00 /* 0x930DCC00@l */ -/* 8035EC40 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC44 39 6B 90 00 */ addi r11, r11, 0x9000 /* 0xAC0D9000@l */ -/* 8035EC48 39 4A D0 00 */ addi r10, r10, 0xD000 /* 0xB00DD000@l */ -/* 8035EC4C 93 E3 80 00 */ stw r31, -0x8000(r3) -/* 8035EC50 39 29 94 00 */ addi r9, r9, 0x9400 /* 0xAD0D9400@l */ -/* 8035EC54 39 08 D4 00 */ addi r8, r8, 0xD400 /* 0xB10DD400@l */ -/* 8035EC58 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC5C 38 E7 98 00 */ addi r7, r7, 0x9800 /* 0xAE0D9800@l */ -/* 8035EC60 38 C6 D8 00 */ addi r6, r6, 0xD800 /* 0xB20DD800@l */ -/* 8035EC64 91 83 80 00 */ stw r12, -0x8000(r3) -/* 8035EC68 38 A5 9C 00 */ addi r5, r5, 0x9C00 /* 0xAF0D9C00@l */ -/* 8035EC6C 38 84 DC 00 */ addi r4, r4, 0xDC00 /* 0xB30DDC00@l */ -/* 8035EC70 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC74 91 63 80 00 */ stw r11, -0x8000(r3) -/* 8035EC78 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC7C 91 43 80 00 */ stw r10, -0x8000(r3) -/* 8035EC80 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC84 91 23 80 00 */ stw r9, -0x8000(r3) -/* 8035EC88 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC8C 91 03 80 00 */ stw r8, -0x8000(r3) -/* 8035EC90 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC94 90 E3 80 00 */ stw r7, -0x8000(r3) -/* 8035EC98 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035EC9C 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 8035ECA0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035ECA4 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 8035ECA8 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8035ECAC 90 83 80 00 */ stw r4, -0x8000(r3) -lbl_8035ECB0: -/* 8035ECB0 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035ECB4 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8035ECB8 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035ECBC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/__GetImageTileCount.s b/asm/dolphin/gx/GXTexture/__GetImageTileCount.s deleted file mode 100644 index 1465c41ecc..0000000000 --- a/asm/dolphin/gx/GXTexture/__GetImageTileCount.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8035DD78: -/* 8035DD78 28 03 00 3C */ cmplwi r3, 0x3c -/* 8035DD7C 41 81 00 40 */ bgt lbl_8035DDBC -/* 8035DD80 3D 20 80 3D */ lis r9, lit_145@ha /* 0x803D268C@ha */ -/* 8035DD84 39 29 26 8C */ addi r9, r9, lit_145@l /* 0x803D268C@l */ -/* 8035DD88 54 60 10 3A */ slwi r0, r3, 2 -/* 8035DD8C 7C 09 00 2E */ lwzx r0, r9, r0 -/* 8035DD90 7C 09 03 A6 */ mtctr r0 -/* 8035DD94 4E 80 04 20 */ bctr -/* 8035DD98 39 60 00 03 */ li r11, 3 -/* 8035DD9C 39 80 00 03 */ li r12, 3 -/* 8035DDA0 48 00 00 24 */ b lbl_8035DDC4 -/* 8035DDA4 39 60 00 03 */ li r11, 3 -/* 8035DDA8 39 80 00 02 */ li r12, 2 -/* 8035DDAC 48 00 00 18 */ b lbl_8035DDC4 -/* 8035DDB0 39 60 00 02 */ li r11, 2 -/* 8035DDB4 39 80 00 02 */ li r12, 2 -/* 8035DDB8 48 00 00 0C */ b lbl_8035DDC4 -lbl_8035DDBC: -/* 8035DDBC 39 80 00 00 */ li r12, 0 -/* 8035DDC0 39 60 00 00 */ li r11, 0 -lbl_8035DDC4: -/* 8035DDC4 54 80 04 3F */ clrlwi. r0, r4, 0x10 -/* 8035DDC8 40 82 00 08 */ bne lbl_8035DDD0 -/* 8035DDCC 38 80 00 01 */ li r4, 1 -lbl_8035DDD0: -/* 8035DDD0 54 A0 04 3F */ clrlwi. r0, r5, 0x10 -/* 8035DDD4 40 82 00 08 */ bne lbl_8035DDDC -/* 8035DDD8 38 A0 00 01 */ li r5, 1 -lbl_8035DDDC: -/* 8035DDDC 39 40 00 01 */ li r10, 1 -/* 8035DDE0 7D 49 58 30 */ slw r9, r10, r11 -/* 8035DDE4 54 84 04 3E */ clrlwi r4, r4, 0x10 -/* 8035DDE8 38 09 FF FF */ addi r0, r9, -1 -/* 8035DDEC 7C 04 02 14 */ add r0, r4, r0 -/* 8035DDF0 7C 00 5E 30 */ sraw r0, r0, r11 -/* 8035DDF4 7D 44 60 30 */ slw r4, r10, r12 -/* 8035DDF8 90 06 00 00 */ stw r0, 0(r6) -/* 8035DDFC 54 A5 04 3E */ clrlwi r5, r5, 0x10 -/* 8035DE00 38 04 FF FF */ addi r0, r4, -1 -/* 8035DE04 7C 05 02 14 */ add r0, r5, r0 -/* 8035DE08 7C 00 66 30 */ sraw r0, r0, r12 -/* 8035DE0C 2C 03 00 06 */ cmpwi r3, 6 -/* 8035DE10 90 07 00 00 */ stw r0, 0(r7) -/* 8035DE14 41 82 00 10 */ beq lbl_8035DE24 -/* 8035DE18 2C 03 00 16 */ cmpwi r3, 0x16 -/* 8035DE1C 41 82 00 08 */ beq lbl_8035DE24 -/* 8035DE20 39 40 00 00 */ li r10, 0 -lbl_8035DE24: -/* 8035DE24 2C 0A 00 00 */ cmpwi r10, 0 -/* 8035DE28 41 82 00 0C */ beq lbl_8035DE34 -/* 8035DE2C 38 00 00 02 */ li r0, 2 -/* 8035DE30 48 00 00 08 */ b lbl_8035DE38 -lbl_8035DE34: -/* 8035DE34 38 00 00 01 */ li r0, 1 -lbl_8035DE38: -/* 8035DE38 90 08 00 00 */ stw r0, 0(r8) -/* 8035DE3C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTexture/__SetSURegs.s b/asm/dolphin/gx/GXTexture/__SetSURegs.s deleted file mode 100644 index 21f43ed204..0000000000 --- a/asm/dolphin/gx/GXTexture/__SetSURegs.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8035E750: -/* 8035E750 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035E754 54 63 10 3A */ slwi r3, r3, 2 -/* 8035E758 54 80 10 3A */ slwi r0, r4, 2 -/* 8035E75C 7C 68 1A 14 */ add r3, r8, r3 -/* 8035E760 80 83 05 14 */ lwz r4, 0x514(r3) -/* 8035E764 7C E8 02 14 */ add r7, r8, r0 -/* 8035E768 80 07 00 B8 */ lwz r0, 0xb8(r7) -/* 8035E76C 38 A0 00 61 */ li r5, 0x61 -/* 8035E770 54 86 05 BE */ clrlwi r6, r4, 0x16 -/* 8035E774 50 C0 04 3E */ rlwimi r0, r6, 0, 0x10, 0x1f -/* 8035E778 90 07 00 B8 */ stw r0, 0xb8(r7) -/* 8035E77C 54 84 B5 BE */ rlwinm r4, r4, 0x16, 0x16, 0x1f -/* 8035E780 80 07 00 D8 */ lwz r0, 0xd8(r7) -/* 8035E784 50 80 04 3E */ rlwimi r0, r4, 0, 0x10, 0x1f -/* 8035E788 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035E78C 90 07 00 D8 */ stw r0, 0xd8(r7) -/* 8035E790 38 00 00 00 */ li r0, 0 -/* 8035E794 81 23 05 34 */ lwz r9, 0x534(r3) -/* 8035E798 80 67 00 B8 */ lwz r3, 0xb8(r7) -/* 8035E79C 55 26 07 BE */ clrlwi r6, r9, 0x1e -/* 8035E7A0 20 C6 00 01 */ subfic r6, r6, 1 -/* 8035E7A4 7C C6 00 34 */ cntlzw r6, r6 -/* 8035E7A8 54 CA DE 3E */ rlwinm r10, r6, 0x1b, 0x18, 0x1f -/* 8035E7AC 55 26 F7 BE */ rlwinm r6, r9, 0x1e, 0x1e, 0x1f -/* 8035E7B0 51 43 83 DE */ rlwimi r3, r10, 0x10, 0xf, 0xf -/* 8035E7B4 20 C6 00 01 */ subfic r6, r6, 1 -/* 8035E7B8 90 67 00 B8 */ stw r3, 0xb8(r7) -/* 8035E7BC 7C C3 00 34 */ cntlzw r3, r6 -/* 8035E7C0 54 66 DE 3E */ rlwinm r6, r3, 0x1b, 0x18, 0x1f -/* 8035E7C4 80 67 00 D8 */ lwz r3, 0xd8(r7) -/* 8035E7C8 50 C3 83 DE */ rlwimi r3, r6, 0x10, 0xf, 0xf -/* 8035E7CC 90 67 00 D8 */ stw r3, 0xd8(r7) -/* 8035E7D0 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8035E7D4 80 67 00 B8 */ lwz r3, 0xb8(r7) -/* 8035E7D8 90 64 80 00 */ stw r3, -0x8000(r4) -/* 8035E7DC 98 A4 80 00 */ stb r5, -0x8000(r4) -/* 8035E7E0 80 67 00 D8 */ lwz r3, 0xd8(r7) -/* 8035E7E4 90 64 80 00 */ stw r3, -0x8000(r4) -/* 8035E7E8 B0 08 00 02 */ sth r0, 2(r8) -/* 8035E7EC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTransform/GXGetProjectionv.s b/asm/dolphin/gx/GXTransform/GXGetProjectionv.s deleted file mode 100644 index eb3ae1e1f1..0000000000 --- a/asm/dolphin/gx/GXTransform/GXGetProjectionv.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80360204: -/* 80360204 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 80360208 80 04 04 D8 */ lwz r0, 0x4d8(r4) -/* 8036020C 28 00 00 00 */ cmplwi r0, 0 -/* 80360210 41 82 00 0C */ beq lbl_8036021C -/* 80360214 C0 02 CC 54 */ lfs f0, lit_27(r2) -/* 80360218 48 00 00 08 */ b lbl_80360220 -lbl_8036021C: -/* 8036021C C0 02 CC 50 */ lfs f0, lit_26(r2) -lbl_80360220: -/* 80360220 D0 03 00 00 */ stfs f0, 0(r3) -/* 80360224 38 83 00 04 */ addi r4, r3, 4 -/* 80360228 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8036022C 38 63 04 DC */ addi r3, r3, 0x4dc -/* 80360230 E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 80360234 E0 23 00 08 */ psq_l f1, 8(r3), 0, 0 /* qr0 */ -/* 80360238 E0 03 00 10 */ psq_l f0, 16(r3), 0, 0 /* qr0 */ -/* 8036023C F0 44 00 00 */ psq_st f2, 0(r4), 0, 0 /* qr0 */ -/* 80360240 F0 24 00 08 */ psq_st f1, 8(r4), 0, 0 /* qr0 */ -/* 80360244 F0 04 00 10 */ psq_st f0, 16(r4), 0, 0 /* qr0 */ -/* 80360248 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTransform/GXGetScissor.s b/asm/dolphin/gx/GXTransform/GXGetScissor.s deleted file mode 100644 index 540f8242f0..0000000000 --- a/asm/dolphin/gx/GXTransform/GXGetScissor.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80360548: -/* 80360548 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8036054C 80 E8 00 F8 */ lwz r7, 0xf8(r8) -/* 80360550 81 08 00 FC */ lwz r8, 0xfc(r8) -/* 80360554 54 E9 A5 7E */ rlwinm r9, r7, 0x14, 0x15, 0x1f -/* 80360558 38 09 FE AA */ addi r0, r9, -342 -/* 8036055C 90 03 00 00 */ stw r0, 0(r3) -/* 80360560 54 E7 05 7E */ clrlwi r7, r7, 0x15 -/* 80360564 38 67 FE AA */ addi r3, r7, -342 -/* 80360568 90 64 00 00 */ stw r3, 0(r4) -/* 8036056C 55 00 A5 7E */ rlwinm r0, r8, 0x14, 0x15, 0x1f -/* 80360570 7C 69 00 50 */ subf r3, r9, r0 -/* 80360574 38 03 00 01 */ addi r0, r3, 1 -/* 80360578 55 04 05 7E */ clrlwi r4, r8, 0x15 -/* 8036057C 90 05 00 00 */ stw r0, 0(r5) -/* 80360580 7C 67 20 50 */ subf r3, r7, r4 -/* 80360584 38 03 00 01 */ addi r0, r3, 1 -/* 80360588 90 06 00 00 */ stw r0, 0(r6) -/* 8036058C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTransform/GXProject.s b/asm/dolphin/gx/GXTransform/GXProject.s deleted file mode 100644 index 70fc803af8..0000000000 --- a/asm/dolphin/gx/GXTransform/GXProject.s +++ /dev/null @@ -1,96 +0,0 @@ -lbl_8035FF60: -/* 8035FF60 C0 83 00 00 */ lfs f4, 0(r3) -/* 8035FF64 C0 03 00 04 */ lfs f0, 4(r3) -/* 8035FF68 C0 C3 00 10 */ lfs f6, 0x10(r3) -/* 8035FF6C ED 44 00 72 */ fmuls f10, f4, f1 -/* 8035FF70 C0 A3 00 14 */ lfs f5, 0x14(r3) -/* 8035FF74 ED 20 00 B2 */ fmuls f9, f0, f2 -/* 8035FF78 C0 83 00 20 */ lfs f4, 0x20(r3) -/* 8035FF7C C0 03 00 24 */ lfs f0, 0x24(r3) -/* 8035FF80 C1 63 00 08 */ lfs f11, 8(r3) -/* 8035FF84 EC E6 00 72 */ fmuls f7, f6, f1 -/* 8035FF88 EC C5 00 B2 */ fmuls f6, f5, f2 -/* 8035FF8C C1 03 00 18 */ lfs f8, 0x18(r3) -/* 8035FF90 C0 A3 00 28 */ lfs f5, 0x28(r3) -/* 8035FF94 EC 84 00 72 */ fmuls f4, f4, f1 -/* 8035FF98 EC 40 00 B2 */ fmuls f2, f0, f2 -/* 8035FF9C ED 6B 00 F2 */ fmuls f11, f11, f3 -/* 8035FFA0 C0 22 CC 50 */ lfs f1, lit_26(r2) -/* 8035FFA4 ED 2A 48 2A */ fadds f9, f10, f9 -/* 8035FFA8 C0 04 00 00 */ lfs f0, 0(r4) -/* 8035FFAC ED 08 00 F2 */ fmuls f8, f8, f3 -/* 8035FFB0 EC C7 30 2A */ fadds f6, f7, f6 -/* 8035FFB4 C1 43 00 0C */ lfs f10, 0xc(r3) -/* 8035FFB8 ED 2B 48 2A */ fadds f9, f11, f9 -/* 8035FFBC C0 E3 00 1C */ lfs f7, 0x1c(r3) -/* 8035FFC0 EC C8 30 2A */ fadds f6, f8, f6 -/* 8035FFC4 EC 65 00 F2 */ fmuls f3, f5, f3 -/* 8035FFC8 C0 A3 00 2C */ lfs f5, 0x2c(r3) -/* 8035FFCC EC 44 10 2A */ fadds f2, f4, f2 -/* 8035FFD0 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8035FFD4 ED 0A 48 2A */ fadds f8, f10, f9 -/* 8035FFD8 EC 03 10 2A */ fadds f0, f3, f2 -/* 8035FFDC EC E7 30 2A */ fadds f7, f7, f6 -/* 8035FFE0 ED 25 00 2A */ fadds f9, f5, f0 -/* 8035FFE4 40 82 00 4C */ bne lbl_80360030 -/* 8035FFE8 FC 00 48 50 */ fneg f0, f9 -/* 8035FFEC C0 22 CC 54 */ lfs f1, lit_27(r2) -/* 8035FFF0 C0 C4 00 04 */ lfs f6, 4(r4) -/* 8035FFF4 C0 A4 00 08 */ lfs f5, 8(r4) -/* 8035FFF8 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8035FFFC C0 84 00 0C */ lfs f4, 0xc(r4) -/* 80360000 C0 64 00 10 */ lfs f3, 0x10(r4) -/* 80360004 C0 24 00 14 */ lfs f1, 0x14(r4) -/* 80360008 C0 44 00 18 */ lfs f2, 0x18(r4) -/* 8036000C EC 29 00 72 */ fmuls f1, f9, f1 -/* 80360010 EC C8 01 B2 */ fmuls f6, f8, f6 -/* 80360014 EC A9 01 72 */ fmuls f5, f9, f5 -/* 80360018 EC 87 01 32 */ fmuls f4, f7, f4 -/* 8036001C EC 69 00 F2 */ fmuls f3, f9, f3 -/* 80360020 EC C6 28 2A */ fadds f6, f6, f5 -/* 80360024 EC E2 08 2A */ fadds f7, f2, f1 -/* 80360028 EC 64 18 2A */ fadds f3, f4, f3 -/* 8036002C 48 00 00 38 */ b lbl_80360064 -lbl_80360030: -/* 80360030 C0 44 00 04 */ lfs f2, 4(r4) -/* 80360034 C0 24 00 0C */ lfs f1, 0xc(r4) -/* 80360038 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 8036003C EC A8 00 B2 */ fmuls f5, f8, f2 -/* 80360040 C0 C4 00 08 */ lfs f6, 8(r4) -/* 80360044 EC 67 00 72 */ fmuls f3, f7, f1 -/* 80360048 C0 84 00 10 */ lfs f4, 0x10(r4) -/* 8036004C EC 29 00 32 */ fmuls f1, f9, f0 -/* 80360050 C0 44 00 18 */ lfs f2, 0x18(r4) -/* 80360054 EC C6 28 2A */ fadds f6, f6, f5 -/* 80360058 EC 64 18 2A */ fadds f3, f4, f3 -/* 8036005C C0 02 CC 54 */ lfs f0, lit_27(r2) -/* 80360060 EC E2 08 2A */ fadds f7, f2, f1 -lbl_80360064: -/* 80360064 C0 85 00 08 */ lfs f4, 8(r5) -/* 80360068 FC 20 18 50 */ fneg f1, f3 -/* 8036006C C0 A2 CC 58 */ lfs f5, lit_28(r2) -/* 80360070 EC 46 01 32 */ fmuls f2, f6, f4 -/* 80360074 C0 65 00 00 */ lfs f3, 0(r5) -/* 80360078 EC 84 01 72 */ fmuls f4, f4, f5 -/* 8036007C EC 42 01 72 */ fmuls f2, f2, f5 -/* 80360080 EC 40 00 B2 */ fmuls f2, f0, f2 -/* 80360084 EC 43 10 2A */ fadds f2, f3, f2 -/* 80360088 EC 44 10 2A */ fadds f2, f4, f2 -/* 8036008C D0 46 00 00 */ stfs f2, 0(r6) -/* 80360090 C0 65 00 0C */ lfs f3, 0xc(r5) -/* 80360094 C0 45 00 04 */ lfs f2, 4(r5) -/* 80360098 EC 21 00 F2 */ fmuls f1, f1, f3 -/* 8036009C EC 63 01 72 */ fmuls f3, f3, f5 -/* 803600A0 EC 21 01 72 */ fmuls f1, f1, f5 -/* 803600A4 EC 20 00 72 */ fmuls f1, f0, f1 -/* 803600A8 EC 22 08 2A */ fadds f1, f2, f1 -/* 803600AC EC 23 08 2A */ fadds f1, f3, f1 -/* 803600B0 D0 27 00 00 */ stfs f1, 0(r7) -/* 803600B4 C0 45 00 14 */ lfs f2, 0x14(r5) -/* 803600B8 C0 25 00 10 */ lfs f1, 0x10(r5) -/* 803600BC EC 22 08 28 */ fsubs f1, f2, f1 -/* 803600C0 EC 27 00 72 */ fmuls f1, f7, f1 -/* 803600C4 EC 00 00 72 */ fmuls f0, f0, f1 -/* 803600C8 EC 02 00 2A */ fadds f0, f2, f0 -/* 803600CC D0 08 00 00 */ stfs f0, 0(r8) -/* 803600D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTransform/GXSetProjectionv.s b/asm/dolphin/gx/GXTransform/GXSetProjectionv.s deleted file mode 100644 index b7f3313382..0000000000 --- a/asm/dolphin/gx/GXTransform/GXSetProjectionv.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_80360178: -/* 80360178 C0 22 CC 50 */ lfs f1, lit_26(r2) -/* 8036017C C0 03 00 00 */ lfs f0, 0(r3) -/* 80360180 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 80360184 40 82 00 0C */ bne lbl_80360190 -/* 80360188 38 00 00 00 */ li r0, 0 -/* 8036018C 48 00 00 08 */ b lbl_80360194 -lbl_80360190: -/* 80360190 38 00 00 01 */ li r0, 1 -lbl_80360194: -/* 80360194 80 A2 CB 80 */ lwz r5, __GXData(r2) -/* 80360198 38 63 00 04 */ addi r3, r3, 4 -/* 8036019C 90 05 04 D8 */ stw r0, 0x4d8(r5) -/* 803601A0 38 C5 04 DC */ addi r6, r5, 0x4dc -/* 803601A4 E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 803601A8 E0 23 00 08 */ psq_l f1, 8(r3), 0, 0 /* qr0 */ -/* 803601AC E0 03 00 10 */ psq_l f0, 16(r3), 0, 0 /* qr0 */ -/* 803601B0 F0 46 00 00 */ psq_st f2, 0(r6), 0, 0 /* qr0 */ -/* 803601B4 F0 26 00 08 */ psq_st f1, 8(r6), 0, 0 /* qr0 */ -/* 803601B8 F0 06 00 10 */ psq_st f0, 16(r6), 0, 0 /* qr0 */ -/* 803601BC 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 803601C0 38 00 00 10 */ li r0, 0x10 -/* 803601C4 3C 60 00 06 */ lis r3, 0x0006 /* 0x00061020@ha */ -/* 803601C8 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 803601CC 38 03 10 20 */ addi r0, r3, 0x1020 /* 0x00061020@l */ -/* 803601D0 90 04 80 00 */ stw r0, -0x8000(r4) -/* 803601D4 38 64 80 00 */ addi r3, r4, -32768 -/* 803601D8 E0 46 00 00 */ psq_l f2, 0(r6), 0, 0 /* qr0 */ -/* 803601DC E0 26 00 08 */ psq_l f1, 8(r6), 0, 0 /* qr0 */ -/* 803601E0 E0 06 00 10 */ psq_l f0, 16(r6), 0, 0 /* qr0 */ -/* 803601E4 F0 43 00 00 */ psq_st f2, 0(r3), 0, 0 /* qr0 */ -/* 803601E8 F0 23 00 00 */ psq_st f1, 0(r3), 0, 0 /* qr0 */ -/* 803601EC F0 03 00 00 */ psq_st f0, 0(r3), 0, 0 /* qr0 */ -/* 803601F0 80 65 04 D8 */ lwz r3, 0x4d8(r5) -/* 803601F4 38 00 00 01 */ li r0, 1 -/* 803601F8 90 64 80 00 */ stw r3, -0x8000(r4) -/* 803601FC B0 05 00 02 */ sth r0, 2(r5) -/* 80360200 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXTransform/__GXSetViewport.s b/asm/dolphin/gx/GXTransform/__GXSetViewport.s deleted file mode 100644 index 1e389fcb58..0000000000 --- a/asm/dolphin/gx/GXTransform/__GXSetViewport.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_803603D4: -/* 803603D4 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 803603D8 3C 60 00 05 */ lis r3, 0x0005 /* 0x0005101A@ha */ -/* 803603DC C0 22 CC 58 */ lfs f1, lit_28(r2) -/* 803603E0 38 A0 00 10 */ li r5, 0x10 -/* 803603E4 C0 66 05 00 */ lfs f3, 0x500(r6) -/* 803603E8 C0 46 04 FC */ lfs f2, 0x4fc(r6) -/* 803603EC 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 803603F0 FC 00 18 50 */ fneg f0, f3 -/* 803603F4 C0 A6 04 F4 */ lfs f5, 0x4f4(r6) -/* 803603F8 EC E2 00 72 */ fmuls f7, f2, f1 -/* 803603FC C0 86 04 F8 */ lfs f4, 0x4f8(r6) -/* 80360400 38 03 10 1A */ addi r0, r3, 0x101A /* 0x0005101A@l */ -/* 80360404 EC 63 00 72 */ fmuls f3, f3, f1 -/* 80360408 C0 46 05 08 */ lfs f2, 0x508(r6) -/* 8036040C C0 C6 05 10 */ lfs f6, 0x510(r6) -/* 80360410 ED 00 00 72 */ fmuls f8, f0, f1 -/* 80360414 C0 26 05 04 */ lfs f1, 0x504(r6) -/* 80360418 C0 06 05 0C */ lfs f0, 0x50c(r6) -/* 8036041C ED 22 01 B2 */ fmuls f9, f2, f6 -/* 80360420 EC 21 01 B2 */ fmuls f1, f1, f6 -/* 80360424 C0 C2 CC 5C */ lfs f6, lit_201(r2) -/* 80360428 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8036042C EC A5 38 2A */ fadds f5, f5, f7 -/* 80360430 90 04 80 00 */ stw r0, -0x8000(r4) -/* 80360434 EC 44 18 2A */ fadds f2, f4, f3 -/* 80360438 D0 E4 80 00 */ stfs f7, -0x8000(r4) -/* 8036043C EC 29 08 28 */ fsubs f1, f9, f1 -/* 80360440 EC 66 28 2A */ fadds f3, f6, f5 -/* 80360444 D1 04 80 00 */ stfs f8, -0x8000(r4) -/* 80360448 EC 46 10 2A */ fadds f2, f6, f2 -/* 8036044C D0 24 80 00 */ stfs f1, -0x8000(r4) -/* 80360450 EC 09 00 2A */ fadds f0, f9, f0 -/* 80360454 D0 64 80 00 */ stfs f3, -0x8000(r4) -/* 80360458 D0 44 80 00 */ stfs f2, -0x8000(r4) -/* 8036045C D0 04 80 00 */ stfs f0, -0x8000(r4) -/* 80360460 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/C_MTXLightOrtho.s b/asm/dolphin/mtx/mtx/C_MTXLightOrtho.s deleted file mode 100644 index 4101370593..0000000000 --- a/asm/dolphin/mtx/mtx/C_MTXLightOrtho.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_80346CE4: -/* 80346CE4 ED 44 18 28 */ fsubs f10, f4, f3 -/* 80346CE8 C1 62 CB 08 */ lfs f11, lit_96(r2) -/* 80346CEC EC 01 10 28 */ fsubs f0, f1, f2 -/* 80346CF0 C1 22 CB 18 */ lfs f9, lit_206(r2) -/* 80346CF4 EC 64 18 2A */ fadds f3, f4, f3 -/* 80346CF8 ED 8B 50 24 */ fdivs f12, f11, f10 -/* 80346CFC ED 4B 00 24 */ fdivs f10, f11, f0 -/* 80346D00 EC 89 03 32 */ fmuls f4, f9, f12 -/* 80346D04 FC 60 18 50 */ fneg f3, f3 -/* 80346D08 EC 01 10 2A */ fadds f0, f1, f2 -/* 80346D0C EC 24 01 72 */ fmuls f1, f4, f5 -/* 80346D10 EC 4C 00 F2 */ fmuls f2, f12, f3 -/* 80346D14 FC 00 00 50 */ fneg f0, f0 -/* 80346D18 D0 23 00 00 */ stfs f1, 0(r3) -/* 80346D1C EC 29 02 B2 */ fmuls f1, f9, f10 -/* 80346D20 EC 45 00 B2 */ fmuls f2, f5, f2 -/* 80346D24 C0 62 CB 0C */ lfs f3, lit_97(r2) -/* 80346D28 EC 0A 00 32 */ fmuls f0, f10, f0 -/* 80346D2C D0 63 00 04 */ stfs f3, 4(r3) -/* 80346D30 EC 47 10 2A */ fadds f2, f7, f2 -/* 80346D34 EC 21 01 B2 */ fmuls f1, f1, f6 -/* 80346D38 D0 63 00 08 */ stfs f3, 8(r3) -/* 80346D3C EC 06 00 32 */ fmuls f0, f6, f0 -/* 80346D40 D0 43 00 0C */ stfs f2, 0xc(r3) -/* 80346D44 D0 63 00 10 */ stfs f3, 0x10(r3) -/* 80346D48 EC 08 00 2A */ fadds f0, f8, f0 -/* 80346D4C D0 23 00 14 */ stfs f1, 0x14(r3) -/* 80346D50 D0 63 00 18 */ stfs f3, 0x18(r3) -/* 80346D54 D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80346D58 D0 63 00 20 */ stfs f3, 0x20(r3) -/* 80346D5C D0 63 00 24 */ stfs f3, 0x24(r3) -/* 80346D60 D0 63 00 28 */ stfs f3, 0x28(r3) -/* 80346D64 D1 63 00 2C */ stfs f11, 0x2c(r3) -/* 80346D68 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/C_MTXLightPerspective.s b/asm/dolphin/mtx/mtx/C_MTXLightPerspective.s deleted file mode 100644 index 53b1d24c50..0000000000 --- a/asm/dolphin/mtx/mtx/C_MTXLightPerspective.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_80346C18: -/* 80346C18 7C 08 02 A6 */ mflr r0 -/* 80346C1C 90 01 00 04 */ stw r0, 4(r1) -/* 80346C20 94 21 FF A8 */ stwu r1, -0x58(r1) -/* 80346C24 DB E1 00 50 */ stfd f31, 0x50(r1) -/* 80346C28 DB C1 00 48 */ stfd f30, 0x48(r1) -/* 80346C2C DB A1 00 40 */ stfd f29, 0x40(r1) -/* 80346C30 DB 81 00 38 */ stfd f28, 0x38(r1) -/* 80346C34 DB 61 00 30 */ stfd f27, 0x30(r1) -/* 80346C38 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 80346C3C FF 60 10 90 */ fmr f27, f2 -/* 80346C40 7C 7F 1B 78 */ mr r31, r3 -/* 80346C44 FF 80 18 90 */ fmr f28, f3 -/* 80346C48 FF A0 20 90 */ fmr f29, f4 -/* 80346C4C FF C0 28 90 */ fmr f30, f5 -/* 80346C50 FF E0 30 90 */ fmr f31, f6 -/* 80346C54 C0 42 CB 10 */ lfs f2, lit_190(r2) -/* 80346C58 C0 02 CB 20 */ lfs f0, lit_230(r2) -/* 80346C5C EC 22 00 72 */ fmuls f1, f2, f1 -/* 80346C60 EC 20 00 72 */ fmuls f1, f0, f1 -/* 80346C64 48 02 5D 61 */ bl tanf -/* 80346C68 C0 62 CB 08 */ lfs f3, lit_96(r2) -/* 80346C6C FC 40 F0 50 */ fneg f2, f30 -/* 80346C70 FC 00 F8 50 */ fneg f0, f31 -/* 80346C74 EC 83 08 24 */ fdivs f4, f3, f1 -/* 80346C78 EC 24 D8 24 */ fdivs f1, f4, f27 -/* 80346C7C EC 7C 00 72 */ fmuls f3, f28, f1 -/* 80346C80 EC 24 07 72 */ fmuls f1, f4, f29 -/* 80346C84 D0 7F 00 00 */ stfs f3, 0(r31) -/* 80346C88 C0 62 CB 0C */ lfs f3, lit_97(r2) -/* 80346C8C D0 7F 00 04 */ stfs f3, 4(r31) -/* 80346C90 D0 5F 00 08 */ stfs f2, 8(r31) -/* 80346C94 D0 7F 00 0C */ stfs f3, 0xc(r31) -/* 80346C98 D0 7F 00 10 */ stfs f3, 0x10(r31) -/* 80346C9C D0 3F 00 14 */ stfs f1, 0x14(r31) -/* 80346CA0 D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 80346CA4 D0 7F 00 1C */ stfs f3, 0x1c(r31) -/* 80346CA8 D0 7F 00 20 */ stfs f3, 0x20(r31) -/* 80346CAC D0 7F 00 24 */ stfs f3, 0x24(r31) -/* 80346CB0 C0 02 CB 1C */ lfs f0, lit_227(r2) -/* 80346CB4 D0 1F 00 28 */ stfs f0, 0x28(r31) -/* 80346CB8 D0 7F 00 2C */ stfs f3, 0x2c(r31) -/* 80346CBC 80 01 00 5C */ lwz r0, 0x5c(r1) -/* 80346CC0 CB E1 00 50 */ lfd f31, 0x50(r1) -/* 80346CC4 CB C1 00 48 */ lfd f30, 0x48(r1) -/* 80346CC8 CB A1 00 40 */ lfd f29, 0x40(r1) -/* 80346CCC CB 81 00 38 */ lfd f28, 0x38(r1) -/* 80346CD0 CB 61 00 30 */ lfd f27, 0x30(r1) -/* 80346CD4 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 80346CD8 38 21 00 58 */ addi r1, r1, 0x58 -/* 80346CDC 7C 08 03 A6 */ mtlr r0 -/* 80346CE0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/C_MTXLookAt.s b/asm/dolphin/mtx/mtx/C_MTXLookAt.s deleted file mode 100644 index bd1fce6fcd..0000000000 --- a/asm/dolphin/mtx/mtx/C_MTXLookAt.s +++ /dev/null @@ -1,100 +0,0 @@ -lbl_80346A8C: -/* 80346A8C 7C 08 02 A6 */ mflr r0 -/* 80346A90 90 01 00 04 */ stw r0, 4(r1) -/* 80346A94 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 80346A98 93 E1 00 4C */ stw r31, 0x4c(r1) -/* 80346A9C 93 C1 00 48 */ stw r30, 0x48(r1) -/* 80346AA0 93 A1 00 44 */ stw r29, 0x44(r1) -/* 80346AA4 7C 7D 1B 78 */ mr r29, r3 -/* 80346AA8 7C 9E 23 78 */ mr r30, r4 -/* 80346AAC 7C BF 2B 78 */ mr r31, r5 -/* 80346AB0 C0 3E 00 00 */ lfs f1, 0(r30) -/* 80346AB4 38 61 00 30 */ addi r3, r1, 0x30 -/* 80346AB8 C0 06 00 00 */ lfs f0, 0(r6) -/* 80346ABC 7C 64 1B 78 */ mr r4, r3 -/* 80346AC0 EC 01 00 28 */ fsubs f0, f1, f0 -/* 80346AC4 D0 01 00 30 */ stfs f0, 0x30(r1) -/* 80346AC8 C0 3E 00 04 */ lfs f1, 4(r30) -/* 80346ACC C0 06 00 04 */ lfs f0, 4(r6) -/* 80346AD0 EC 01 00 28 */ fsubs f0, f1, f0 -/* 80346AD4 D0 01 00 34 */ stfs f0, 0x34(r1) -/* 80346AD8 C0 3E 00 08 */ lfs f1, 8(r30) -/* 80346ADC C0 06 00 08 */ lfs f0, 8(r6) -/* 80346AE0 EC 01 00 28 */ fsubs f0, f1, f0 -/* 80346AE4 D0 01 00 38 */ stfs f0, 0x38(r1) -/* 80346AE8 48 00 06 0D */ bl PSVECNormalize -/* 80346AEC 7F E3 FB 78 */ mr r3, r31 -/* 80346AF0 38 81 00 30 */ addi r4, r1, 0x30 -/* 80346AF4 38 A1 00 24 */ addi r5, r1, 0x24 -/* 80346AF8 48 00 06 BD */ bl PSVECCrossProduct -/* 80346AFC 38 61 00 24 */ addi r3, r1, 0x24 -/* 80346B00 7C 64 1B 78 */ mr r4, r3 -/* 80346B04 48 00 05 F1 */ bl PSVECNormalize -/* 80346B08 38 61 00 30 */ addi r3, r1, 0x30 -/* 80346B0C 38 81 00 24 */ addi r4, r1, 0x24 -/* 80346B10 38 A1 00 18 */ addi r5, r1, 0x18 -/* 80346B14 48 00 06 A1 */ bl PSVECCrossProduct -/* 80346B18 C0 01 00 24 */ lfs f0, 0x24(r1) -/* 80346B1C D0 1D 00 00 */ stfs f0, 0(r29) -/* 80346B20 C0 01 00 28 */ lfs f0, 0x28(r1) -/* 80346B24 D0 1D 00 04 */ stfs f0, 4(r29) -/* 80346B28 C0 01 00 2C */ lfs f0, 0x2c(r1) -/* 80346B2C D0 1D 00 08 */ stfs f0, 8(r29) -/* 80346B30 C0 7E 00 00 */ lfs f3, 0(r30) -/* 80346B34 C0 41 00 24 */ lfs f2, 0x24(r1) -/* 80346B38 C0 3E 00 04 */ lfs f1, 4(r30) -/* 80346B3C C0 01 00 28 */ lfs f0, 0x28(r1) -/* 80346B40 EC 43 00 B2 */ fmuls f2, f3, f2 -/* 80346B44 C0 7E 00 08 */ lfs f3, 8(r30) -/* 80346B48 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80346B4C C0 21 00 2C */ lfs f1, 0x2c(r1) -/* 80346B50 EC 23 00 72 */ fmuls f1, f3, f1 -/* 80346B54 EC 02 00 2A */ fadds f0, f2, f0 -/* 80346B58 EC 01 00 2A */ fadds f0, f1, f0 -/* 80346B5C FC 00 00 50 */ fneg f0, f0 -/* 80346B60 D0 1D 00 0C */ stfs f0, 0xc(r29) -/* 80346B64 C0 01 00 18 */ lfs f0, 0x18(r1) -/* 80346B68 D0 1D 00 10 */ stfs f0, 0x10(r29) -/* 80346B6C C0 01 00 1C */ lfs f0, 0x1c(r1) -/* 80346B70 D0 1D 00 14 */ stfs f0, 0x14(r29) -/* 80346B74 C0 01 00 20 */ lfs f0, 0x20(r1) -/* 80346B78 D0 1D 00 18 */ stfs f0, 0x18(r29) -/* 80346B7C C0 7E 00 00 */ lfs f3, 0(r30) -/* 80346B80 C0 41 00 18 */ lfs f2, 0x18(r1) -/* 80346B84 C0 3E 00 04 */ lfs f1, 4(r30) -/* 80346B88 C0 01 00 1C */ lfs f0, 0x1c(r1) -/* 80346B8C EC 43 00 B2 */ fmuls f2, f3, f2 -/* 80346B90 C0 7E 00 08 */ lfs f3, 8(r30) -/* 80346B94 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80346B98 C0 21 00 20 */ lfs f1, 0x20(r1) -/* 80346B9C EC 23 00 72 */ fmuls f1, f3, f1 -/* 80346BA0 EC 02 00 2A */ fadds f0, f2, f0 -/* 80346BA4 EC 01 00 2A */ fadds f0, f1, f0 -/* 80346BA8 FC 00 00 50 */ fneg f0, f0 -/* 80346BAC D0 1D 00 1C */ stfs f0, 0x1c(r29) -/* 80346BB0 C0 01 00 30 */ lfs f0, 0x30(r1) -/* 80346BB4 D0 1D 00 20 */ stfs f0, 0x20(r29) -/* 80346BB8 C0 01 00 34 */ lfs f0, 0x34(r1) -/* 80346BBC D0 1D 00 24 */ stfs f0, 0x24(r29) -/* 80346BC0 C0 01 00 38 */ lfs f0, 0x38(r1) -/* 80346BC4 D0 1D 00 28 */ stfs f0, 0x28(r29) -/* 80346BC8 C0 7E 00 00 */ lfs f3, 0(r30) -/* 80346BCC C0 41 00 30 */ lfs f2, 0x30(r1) -/* 80346BD0 C0 3E 00 04 */ lfs f1, 4(r30) -/* 80346BD4 C0 01 00 34 */ lfs f0, 0x34(r1) -/* 80346BD8 EC 43 00 B2 */ fmuls f2, f3, f2 -/* 80346BDC C0 7E 00 08 */ lfs f3, 8(r30) -/* 80346BE0 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80346BE4 C0 21 00 38 */ lfs f1, 0x38(r1) -/* 80346BE8 EC 23 00 72 */ fmuls f1, f3, f1 -/* 80346BEC EC 02 00 2A */ fadds f0, f2, f0 -/* 80346BF0 EC 01 00 2A */ fadds f0, f1, f0 -/* 80346BF4 FC 00 00 50 */ fneg f0, f0 -/* 80346BF8 D0 1D 00 2C */ stfs f0, 0x2c(r29) -/* 80346BFC 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80346C00 83 E1 00 4C */ lwz r31, 0x4c(r1) -/* 80346C04 83 C1 00 48 */ lwz r30, 0x48(r1) -/* 80346C08 83 A1 00 44 */ lwz r29, 0x44(r1) -/* 80346C0C 38 21 00 50 */ addi r1, r1, 0x50 -/* 80346C10 7C 08 03 A6 */ mtlr r0 -/* 80346C14 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s b/asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s deleted file mode 100644 index 3754b8a96a..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_80346878: -/* 80346878 7C 08 02 A6 */ mflr r0 -/* 8034687C 90 01 00 04 */ stw r0, 4(r1) -/* 80346880 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80346884 DB E1 00 20 */ stfd f31, 0x20(r1) -/* 80346888 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034688C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80346890 FF E0 08 90 */ fmr f31, f1 -/* 80346894 7C 7E 1B 78 */ mr r30, r3 -/* 80346898 7C 9F 23 78 */ mr r31, r4 -/* 8034689C FC 20 F8 90 */ fmr f1, f31 -/* 803468A0 48 02 61 49 */ bl sinf -/* 803468A4 FC 00 08 90 */ fmr f0, f1 -/* 803468A8 FC 20 F8 90 */ fmr f1, f31 -/* 803468AC FF E0 00 90 */ fmr f31, f0 -/* 803468B0 48 02 61 5D */ bl cosf -/* 803468B4 FC 00 08 90 */ fmr f0, f1 -/* 803468B8 7F C3 F3 78 */ mr r3, r30 -/* 803468BC FC 20 F8 90 */ fmr f1, f31 -/* 803468C0 7F E4 FB 78 */ mr r4, r31 -/* 803468C4 FC 40 00 90 */ fmr f2, f0 -/* 803468C8 4B FF FF 01 */ bl __PSMTXRotAxisRadInternal -/* 803468CC 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 803468D0 CB E1 00 20 */ lfd f31, 0x20(r1) -/* 803468D4 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803468D8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803468DC 38 21 00 28 */ addi r1, r1, 0x28 -/* 803468E0 7C 08 03 A6 */ mtlr r0 -/* 803468E4 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXRotRad.s b/asm/dolphin/mtx/mtx/PSMTXRotRad.s deleted file mode 100644 index 5a8308b90f..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXRotRad.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_803466A8: -/* 803466A8 7C 08 02 A6 */ mflr r0 -/* 803466AC 90 01 00 04 */ stw r0, 4(r1) -/* 803466B0 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 803466B4 DB E1 00 20 */ stfd f31, 0x20(r1) -/* 803466B8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803466BC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803466C0 FF E0 08 90 */ fmr f31, f1 -/* 803466C4 7C 7E 1B 78 */ mr r30, r3 -/* 803466C8 7C 9F 23 78 */ mr r31, r4 -/* 803466CC FC 20 F8 90 */ fmr f1, f31 -/* 803466D0 48 02 63 19 */ bl sinf -/* 803466D4 FC 00 08 90 */ fmr f0, f1 -/* 803466D8 FC 20 F8 90 */ fmr f1, f31 -/* 803466DC FF E0 00 90 */ fmr f31, f0 -/* 803466E0 48 02 63 2D */ bl cosf -/* 803466E4 FC 00 08 90 */ fmr f0, f1 -/* 803466E8 7F C3 F3 78 */ mr r3, r30 -/* 803466EC FC 20 F8 90 */ fmr f1, f31 -/* 803466F0 7F E4 FB 78 */ mr r4, r31 -/* 803466F4 FC 40 00 90 */ fmr f2, f0 -/* 803466F8 48 00 00 21 */ bl PSMTXRotTrig -/* 803466FC 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80346700 CB E1 00 20 */ lfd f31, 0x20(r1) -/* 80346704 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80346708 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034670C 38 21 00 28 */ addi r1, r1, 0x28 -/* 80346710 7C 08 03 A6 */ mtlr r0 -/* 80346714 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/C_VECHalfAngle.s b/asm/dolphin/mtx/vec/C_VECHalfAngle.s deleted file mode 100644 index f8ec7e4be4..0000000000 --- a/asm/dolphin/mtx/vec/C_VECHalfAngle.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_803471F0: -/* 803471F0 7C 08 02 A6 */ mflr r0 -/* 803471F4 90 01 00 04 */ stw r0, 4(r1) -/* 803471F8 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 803471FC 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 80347200 7C BF 2B 78 */ mr r31, r5 -/* 80347204 C0 03 00 00 */ lfs f0, 0(r3) -/* 80347208 FC 00 00 50 */ fneg f0, f0 -/* 8034720C D0 01 00 2C */ stfs f0, 0x2c(r1) -/* 80347210 C0 03 00 04 */ lfs f0, 4(r3) -/* 80347214 FC 00 00 50 */ fneg f0, f0 -/* 80347218 D0 01 00 30 */ stfs f0, 0x30(r1) -/* 8034721C C0 03 00 08 */ lfs f0, 8(r3) -/* 80347220 38 61 00 2C */ addi r3, r1, 0x2c -/* 80347224 FC 00 00 50 */ fneg f0, f0 -/* 80347228 D0 01 00 34 */ stfs f0, 0x34(r1) -/* 8034722C C0 04 00 00 */ lfs f0, 0(r4) -/* 80347230 FC 00 00 50 */ fneg f0, f0 -/* 80347234 D0 01 00 20 */ stfs f0, 0x20(r1) -/* 80347238 C0 04 00 04 */ lfs f0, 4(r4) -/* 8034723C FC 00 00 50 */ fneg f0, f0 -/* 80347240 D0 01 00 24 */ stfs f0, 0x24(r1) -/* 80347244 C0 04 00 08 */ lfs f0, 8(r4) -/* 80347248 7C 64 1B 78 */ mr r4, r3 -/* 8034724C FC 00 00 50 */ fneg f0, f0 -/* 80347250 D0 01 00 28 */ stfs f0, 0x28(r1) -/* 80347254 4B FF FE A1 */ bl PSVECNormalize -/* 80347258 38 61 00 20 */ addi r3, r1, 0x20 -/* 8034725C 7C 64 1B 78 */ mr r4, r3 -/* 80347260 4B FF FE 95 */ bl PSVECNormalize -/* 80347264 38 61 00 2C */ addi r3, r1, 0x2c -/* 80347268 38 81 00 20 */ addi r4, r1, 0x20 -/* 8034726C 38 A1 00 14 */ addi r5, r1, 0x14 -/* 80347270 4B FF FE 21 */ bl PSVECAdd -/* 80347274 38 61 00 14 */ addi r3, r1, 0x14 -/* 80347278 7C 64 1B 78 */ mr r4, r3 -/* 8034727C 4B FF FF 19 */ bl PSVECDotProduct -/* 80347280 C0 02 CB 40 */ lfs f0, lit_113(r2) -/* 80347284 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80347288 40 81 00 14 */ ble lbl_8034729C -/* 8034728C 38 61 00 14 */ addi r3, r1, 0x14 -/* 80347290 7F E4 FB 78 */ mr r4, r31 -/* 80347294 4B FF FE 61 */ bl PSVECNormalize -/* 80347298 48 00 00 1C */ b lbl_803472B4 -lbl_8034729C: -/* 8034729C 80 61 00 14 */ lwz r3, 0x14(r1) -/* 803472A0 80 01 00 18 */ lwz r0, 0x18(r1) -/* 803472A4 90 7F 00 00 */ stw r3, 0(r31) -/* 803472A8 90 1F 00 04 */ stw r0, 4(r31) -/* 803472AC 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803472B0 90 1F 00 08 */ stw r0, 8(r31) -lbl_803472B4: -/* 803472B4 80 01 00 44 */ lwz r0, 0x44(r1) -/* 803472B8 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 803472BC 38 21 00 40 */ addi r1, r1, 0x40 -/* 803472C0 7C 08 03 A6 */ mtlr r0 -/* 803472C4 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/C_VECReflect.s b/asm/dolphin/mtx/vec/C_VECReflect.s deleted file mode 100644 index f5b690e07e..0000000000 --- a/asm/dolphin/mtx/vec/C_VECReflect.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_803472C8: -/* 803472C8 7C 08 02 A6 */ mflr r0 -/* 803472CC 90 01 00 04 */ stw r0, 4(r1) -/* 803472D0 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 803472D4 93 E1 00 34 */ stw r31, 0x34(r1) -/* 803472D8 93 C1 00 30 */ stw r30, 0x30(r1) -/* 803472DC 7C 9E 23 78 */ mr r30, r4 -/* 803472E0 7C BF 2B 78 */ mr r31, r5 -/* 803472E4 C0 03 00 00 */ lfs f0, 0(r3) -/* 803472E8 FC 00 00 50 */ fneg f0, f0 -/* 803472EC D0 01 00 20 */ stfs f0, 0x20(r1) -/* 803472F0 C0 03 00 04 */ lfs f0, 4(r3) -/* 803472F4 FC 00 00 50 */ fneg f0, f0 -/* 803472F8 D0 01 00 24 */ stfs f0, 0x24(r1) -/* 803472FC C0 03 00 08 */ lfs f0, 8(r3) -/* 80347300 38 61 00 20 */ addi r3, r1, 0x20 -/* 80347304 7C 64 1B 78 */ mr r4, r3 -/* 80347308 FC 00 00 50 */ fneg f0, f0 -/* 8034730C D0 01 00 28 */ stfs f0, 0x28(r1) -/* 80347310 4B FF FD E5 */ bl PSVECNormalize -/* 80347314 7F C3 F3 78 */ mr r3, r30 -/* 80347318 38 81 00 14 */ addi r4, r1, 0x14 -/* 8034731C 4B FF FD D9 */ bl PSVECNormalize -/* 80347320 38 61 00 20 */ addi r3, r1, 0x20 -/* 80347324 38 81 00 14 */ addi r4, r1, 0x14 -/* 80347328 4B FF FE 6D */ bl PSVECDotProduct -/* 8034732C C0 62 CB 4C */ lfs f3, lit_161(r2) -/* 80347330 7F E3 FB 78 */ mr r3, r31 -/* 80347334 C0 41 00 14 */ lfs f2, 0x14(r1) -/* 80347338 7F E4 FB 78 */ mr r4, r31 -/* 8034733C C0 01 00 20 */ lfs f0, 0x20(r1) -/* 80347340 EC 43 00 B2 */ fmuls f2, f3, f2 -/* 80347344 EC 42 00 72 */ fmuls f2, f2, f1 -/* 80347348 EC 02 00 28 */ fsubs f0, f2, f0 -/* 8034734C D0 1F 00 00 */ stfs f0, 0(r31) -/* 80347350 C0 41 00 18 */ lfs f2, 0x18(r1) -/* 80347354 C0 01 00 24 */ lfs f0, 0x24(r1) -/* 80347358 EC 43 00 B2 */ fmuls f2, f3, f2 -/* 8034735C EC 42 00 72 */ fmuls f2, f2, f1 -/* 80347360 EC 02 00 28 */ fsubs f0, f2, f0 -/* 80347364 D0 1F 00 04 */ stfs f0, 4(r31) -/* 80347368 C0 41 00 1C */ lfs f2, 0x1c(r1) -/* 8034736C C0 01 00 28 */ lfs f0, 0x28(r1) -/* 80347370 EC 43 00 B2 */ fmuls f2, f3, f2 -/* 80347374 EC 22 00 72 */ fmuls f1, f2, f1 -/* 80347378 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8034737C D0 1F 00 08 */ stfs f0, 8(r31) -/* 80347380 4B FF FD 75 */ bl PSVECNormalize -/* 80347384 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 80347388 83 E1 00 34 */ lwz r31, 0x34(r1) -/* 8034738C 83 C1 00 30 */ lwz r30, 0x30(r1) -/* 80347390 38 21 00 38 */ addi r1, r1, 0x38 -/* 80347394 7C 08 03 A6 */ mtlr r0 -/* 80347398 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECAdd.s b/asm/dolphin/mtx/vec/PSVECAdd.s deleted file mode 100644 index 2a1f4e6d3f..0000000000 --- a/asm/dolphin/mtx/vec/PSVECAdd.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80347090: -/* 80347090 E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 80347094 E0 84 00 00 */ psq_l f4, 0(r4), 0, 0 /* qr0 */ -/* 80347098 10 C2 20 2A */ ps_add f6, f2, f4 -/* 8034709C F0 C5 00 00 */ psq_st f6, 0(r5), 0, 0 /* qr0 */ -/* 803470A0 E0 63 80 08 */ psq_l f3, 8(r3), 1, 0 /* qr0 */ -/* 803470A4 E0 A4 80 08 */ psq_l f5, 8(r4), 1, 0 /* qr0 */ -/* 803470A8 10 E3 28 2A */ ps_add f7, f3, f5 -/* 803470AC F0 E5 80 08 */ psq_st f7, 8(r5), 1, 0 /* qr0 */ -/* 803470B0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECCrossProduct.s b/asm/dolphin/mtx/vec/PSVECCrossProduct.s deleted file mode 100644 index 83856d78cd..0000000000 --- a/asm/dolphin/mtx/vec/PSVECCrossProduct.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_803471B4: -/* 803471B4 E0 24 00 00 */ psq_l f1, 0(r4), 0, 0 /* qr0 */ -/* 803471B8 C0 43 00 08 */ lfs f2, 8(r3) -/* 803471BC E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803471C0 10 C1 0C A0 */ ps_merge10 f6, f1, f1 -/* 803471C4 C0 64 00 08 */ lfs f3, 8(r4) -/* 803471C8 10 81 00 B2 */ ps_mul f4, f1, f2 -/* 803471CC 10 E1 00 18 */ ps_muls0 f7, f1, f0 -/* 803471D0 10 A0 20 F8 */ ps_msub f5, f0, f3, f4 -/* 803471D4 11 00 39 B8 */ ps_msub f8, f0, f6, f7 -/* 803471D8 11 25 2C E0 */ ps_merge11 f9, f5, f5 -/* 803471DC 11 45 44 60 */ ps_merge01 f10, f5, f8 -/* 803471E0 F1 25 80 00 */ psq_st f9, 0(r5), 1, 0 /* qr0 */ -/* 803471E4 11 40 50 50 */ ps_neg f10, f10 -/* 803471E8 F1 45 00 04 */ psq_st f10, 4(r5), 0, 0 /* qr0 */ -/* 803471EC 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECDistance.s b/asm/dolphin/mtx/vec/PSVECDistance.s deleted file mode 100644 index 677402ae5f..0000000000 --- a/asm/dolphin/mtx/vec/PSVECDistance.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_803473C4: -/* 803473C4 E0 03 00 04 */ psq_l f0, 4(r3), 0, 0 /* qr0 */ -/* 803473C8 E0 24 00 04 */ psq_l f1, 4(r4), 0, 0 /* qr0 */ -/* 803473CC 10 40 08 28 */ ps_sub f2, f0, f1 -/* 803473D0 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803473D4 E0 24 00 00 */ psq_l f1, 0(r4), 0, 0 /* qr0 */ -/* 803473D8 10 42 00 B2 */ ps_mul f2, f2, f2 -/* 803473DC 10 00 08 28 */ ps_sub f0, f0, f1 -/* 803473E0 C0 62 CB 44 */ lfs f3, lit_118(r2) -/* 803473E4 10 20 10 3A */ ps_madd f1, f0, f0, f2 -/* 803473E8 EC 03 18 28 */ fsubs f0, f3, f3 -/* 803473EC 10 21 10 94 */ ps_sum0 f1, f1, f2, f2 -/* 803473F0 FC 00 08 00 */ fcmpu cr0, f0, f1 -/* 803473F4 41 82 00 20 */ beq lbl_80347414 -/* 803473F8 C0 82 CB 48 */ lfs f4, lit_119(r2) -/* 803473FC FC 00 08 34 */ frsqrte f0, f1 -/* 80347400 EC 40 00 32 */ fmuls f2, f0, f0 -/* 80347404 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 80347408 EC 42 20 7C */ fnmsubs f2, f2, f1, f4 -/* 8034740C EC 02 00 32 */ fmuls f0, f2, f0 -/* 80347410 EC 21 00 32 */ fmuls f1, f1, f0 -lbl_80347414: -/* 80347414 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECDotProduct.s b/asm/dolphin/mtx/vec/PSVECDotProduct.s deleted file mode 100644 index 8794ede5ae..0000000000 --- a/asm/dolphin/mtx/vec/PSVECDotProduct.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80347194: -/* 80347194 E0 43 00 04 */ psq_l f2, 4(r3), 0, 0 /* qr0 */ -/* 80347198 E0 64 00 04 */ psq_l f3, 4(r4), 0, 0 /* qr0 */ -/* 8034719C 10 42 00 F2 */ ps_mul f2, f2, f3 -/* 803471A0 E0 A3 00 00 */ psq_l f5, 0(r3), 0, 0 /* qr0 */ -/* 803471A4 E0 84 00 00 */ psq_l f4, 0(r4), 0, 0 /* qr0 */ -/* 803471A8 10 65 11 3A */ ps_madd f3, f5, f4, f2 -/* 803471AC 10 23 10 94 */ ps_sum0 f1, f3, f2, f2 -/* 803471B0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECMag.s b/asm/dolphin/mtx/vec/PSVECMag.s deleted file mode 100644 index 0ad2af317a..0000000000 --- a/asm/dolphin/mtx/vec/PSVECMag.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80347150: -/* 80347150 C0 82 CB 44 */ lfs f4, lit_118(r2) -/* 80347154 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 80347158 10 00 00 32 */ ps_mul f0, f0, f0 -/* 8034715C C0 23 00 08 */ lfs f1, 8(r3) -/* 80347160 EC 44 20 28 */ fsubs f2, f4, f4 -/* 80347164 10 21 00 7A */ ps_madd f1, f1, f1, f0 -/* 80347168 10 21 00 14 */ ps_sum0 f1, f1, f0, f0 -/* 8034716C FC 01 10 00 */ fcmpu cr0, f1, f2 -/* 80347170 41 82 00 20 */ beq lbl_80347190 -/* 80347174 FC 00 08 34 */ frsqrte f0, f1 -/* 80347178 C0 62 CB 48 */ lfs f3, lit_119(r2) -/* 8034717C EC 40 00 32 */ fmuls f2, f0, f0 -/* 80347180 EC 00 01 32 */ fmuls f0, f0, f4 -/* 80347184 EC 42 18 7C */ fnmsubs f2, f2, f1, f3 -/* 80347188 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8034718C EC 21 00 32 */ fmuls f1, f1, f0 -lbl_80347190: -/* 80347190 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECNormalize.s b/asm/dolphin/mtx/vec/PSVECNormalize.s deleted file mode 100644 index aa59f08b5d..0000000000 --- a/asm/dolphin/mtx/vec/PSVECNormalize.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_803470F4: -/* 803470F4 C0 02 CB 44 */ lfs f0, lit_118(r2) -/* 803470F8 C0 22 CB 48 */ lfs f1, lit_119(r2) -/* 803470FC E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 80347100 10 A2 00 B2 */ ps_mul f5, f2, f2 -/* 80347104 E0 63 80 08 */ psq_l f3, 8(r3), 1, 0 /* qr0 */ -/* 80347108 10 83 28 FA */ ps_madd f4, f3, f3, f5 -/* 8034710C 10 84 28 D4 */ ps_sum0 f4, f4, f3, f5 -/* 80347110 FC A0 20 34 */ frsqrte f5, f4 -/* 80347114 EC C5 01 72 */ fmuls f6, f5, f5 -/* 80347118 EC 05 00 32 */ fmuls f0, f5, f0 -/* 8034711C EC C6 09 3C */ fnmsubs f6, f6, f4, f1 -/* 80347120 EC A6 00 32 */ fmuls f5, f6, f0 -/* 80347124 10 42 01 58 */ ps_muls0 f2, f2, f5 -/* 80347128 F0 44 00 00 */ psq_st f2, 0(r4), 0, 0 /* qr0 */ -/* 8034712C 10 63 01 58 */ ps_muls0 f3, f3, f5 -/* 80347130 F0 64 80 08 */ psq_st f3, 8(r4), 1, 0 /* qr0 */ -/* 80347134 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECScale.s b/asm/dolphin/mtx/vec/PSVECScale.s deleted file mode 100644 index 0f95a30f04..0000000000 --- a/asm/dolphin/mtx/vec/PSVECScale.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_803470D8: -/* 803470D8 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803470DC E0 43 80 08 */ psq_l f2, 8(r3), 1, 0 /* qr0 */ -/* 803470E0 10 00 00 58 */ ps_muls0 f0, f0, f1 -/* 803470E4 F0 04 00 00 */ psq_st f0, 0(r4), 0, 0 /* qr0 */ -/* 803470E8 10 02 00 58 */ ps_muls0 f0, f2, f1 -/* 803470EC F0 04 80 08 */ psq_st f0, 8(r4), 1, 0 /* qr0 */ -/* 803470F0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECSquareDistance.s b/asm/dolphin/mtx/vec/PSVECSquareDistance.s deleted file mode 100644 index 166b44dd40..0000000000 --- a/asm/dolphin/mtx/vec/PSVECSquareDistance.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8034739C: -/* 8034739C E0 03 00 04 */ psq_l f0, 4(r3), 0, 0 /* qr0 */ -/* 803473A0 E0 24 00 04 */ psq_l f1, 4(r4), 0, 0 /* qr0 */ -/* 803473A4 10 40 08 28 */ ps_sub f2, f0, f1 -/* 803473A8 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803473AC E0 24 00 00 */ psq_l f1, 0(r4), 0, 0 /* qr0 */ -/* 803473B0 10 42 00 B2 */ ps_mul f2, f2, f2 -/* 803473B4 10 00 08 28 */ ps_sub f0, f0, f1 -/* 803473B8 10 20 10 3A */ ps_madd f1, f0, f0, f2 -/* 803473BC 10 21 10 94 */ ps_sum0 f1, f1, f2, f2 -/* 803473C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECSquareMag.s b/asm/dolphin/mtx/vec/PSVECSquareMag.s deleted file mode 100644 index 05fd018cb0..0000000000 --- a/asm/dolphin/mtx/vec/PSVECSquareMag.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80347138: -/* 80347138 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 8034713C 10 00 00 32 */ ps_mul f0, f0, f0 -/* 80347140 C0 23 00 08 */ lfs f1, 8(r3) -/* 80347144 10 21 00 7A */ ps_madd f1, f1, f1, f0 -/* 80347148 10 21 00 14 */ ps_sum0 f1, f1, f0, f0 -/* 8034714C 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/vec/PSVECSubtract.s b/asm/dolphin/mtx/vec/PSVECSubtract.s deleted file mode 100644 index c7dfd40814..0000000000 --- a/asm/dolphin/mtx/vec/PSVECSubtract.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_803470B4: -/* 803470B4 E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 803470B8 E0 84 00 00 */ psq_l f4, 0(r4), 0, 0 /* qr0 */ -/* 803470BC 10 C2 20 28 */ ps_sub f6, f2, f4 -/* 803470C0 F0 C5 00 00 */ psq_st f6, 0(r5), 0, 0 /* qr0 */ -/* 803470C4 E0 63 80 08 */ psq_l f3, 8(r3), 1, 0 /* qr0 */ -/* 803470C8 E0 A4 80 08 */ psq_l f5, 8(r4), 1, 0 /* qr0 */ -/* 803470CC 10 E3 28 28 */ ps_sub f7, f3, f5 -/* 803470D0 F0 E5 80 08 */ psq_st f7, 8(r5), 1, 0 /* qr0 */ -/* 803470D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/OnReset.s b/asm/dolphin/os/OSAlarm/OnReset.s deleted file mode 100644 index e14cba4203..0000000000 --- a/asm/dolphin/os/OSAlarm/OnReset.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_8033AFD8: -/* 8033AFD8 7C 08 02 A6 */ mflr r0 -/* 8033AFDC 90 01 00 04 */ stw r0, 4(r1) -/* 8033AFE0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033AFE4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033AFE8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8033AFEC 2C 03 00 00 */ cmpwi r3, 0 -/* 8033AFF0 41 82 00 6C */ beq lbl_8033B05C -/* 8033AFF4 80 0D 90 B8 */ lwz r0, AlarmQueue(r13) -/* 8033AFF8 28 00 00 00 */ cmplwi r0, 0 -/* 8033AFFC 7C 1F 03 78 */ mr r31, r0 -/* 8033B000 41 82 00 0C */ beq lbl_8033B00C -/* 8033B004 80 1F 00 14 */ lwz r0, 0x14(r31) -/* 8033B008 48 00 00 08 */ b lbl_8033B010 -lbl_8033B00C: -/* 8033B00C 38 00 00 00 */ li r0, 0 -lbl_8033B010: -/* 8033B010 7C 1E 03 78 */ mr r30, r0 -/* 8033B014 48 00 00 04 */ b lbl_8033B018 -lbl_8033B018: -/* 8033B018 48 00 00 04 */ b lbl_8033B01C -lbl_8033B01C: -/* 8033B01C 48 00 00 38 */ b lbl_8033B054 -lbl_8033B020: -/* 8033B020 7F E3 FB 78 */ mr r3, r31 -/* 8033B024 48 01 08 19 */ bl __DVDTestAlarm -/* 8033B028 2C 03 00 00 */ cmpwi r3, 0 -/* 8033B02C 40 82 00 0C */ bne lbl_8033B038 -/* 8033B030 7F E3 FB 78 */ mr r3, r31 -/* 8033B034 4B FF FC 09 */ bl OSCancelAlarm -lbl_8033B038: -/* 8033B038 28 1E 00 00 */ cmplwi r30, 0 -/* 8033B03C 7F DF F3 78 */ mr r31, r30 -/* 8033B040 41 82 00 0C */ beq lbl_8033B04C -/* 8033B044 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 8033B048 48 00 00 08 */ b lbl_8033B050 -lbl_8033B04C: -/* 8033B04C 38 00 00 00 */ li r0, 0 -lbl_8033B050: -/* 8033B050 7C 1E 03 78 */ mr r30, r0 -lbl_8033B054: -/* 8033B054 28 1F 00 00 */ cmplwi r31, 0 -/* 8033B058 40 82 FF C8 */ bne lbl_8033B020 -lbl_8033B05C: -/* 8033B05C 38 60 00 01 */ li r3, 1 -/* 8033B060 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033B064 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033B068 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8033B06C 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033B070 7C 08 03 A6 */ mtlr r0 -/* 8033B074 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSError/__OSUnhandledException.s b/asm/dolphin/os/OSError/__OSUnhandledException.s deleted file mode 100644 index 82beede028..0000000000 --- a/asm/dolphin/os/OSError/__OSUnhandledException.s +++ /dev/null @@ -1,196 +0,0 @@ -lbl_8033C798: -/* 8033C798 7C 08 02 A6 */ mflr r0 -/* 8033C79C 3D 00 80 45 */ lis r8, __OSErrorTable@ha /* 0x8044BAD0@ha */ -/* 8033C7A0 90 01 00 04 */ stw r0, 4(r1) -/* 8033C7A4 3C E0 80 3D */ lis r7, lit_13@ha /* 0x803CF918@ha */ -/* 8033C7A8 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8033C7AC BE C1 00 18 */ stmw r22, 0x18(r1) -/* 8033C7B0 3B 03 00 00 */ addi r24, r3, 0 -/* 8033C7B4 3B 24 00 00 */ addi r25, r4, 0 -/* 8033C7B8 3B 45 00 00 */ addi r26, r5, 0 -/* 8033C7BC 3B 66 00 00 */ addi r27, r6, 0 -/* 8033C7C0 3B C8 BA D0 */ addi r30, r8, __OSErrorTable@l /* 0x8044BAD0@l */ -/* 8033C7C4 3B E7 F9 18 */ addi r31, r7, lit_13@l /* 0x803CF918@l */ -/* 8033C7C8 48 00 5F 35 */ bl OSGetTime -/* 8033C7CC 80 B9 01 9C */ lwz r5, 0x19c(r25) -/* 8033C7D0 3B 84 00 00 */ addi r28, r4, 0 -/* 8033C7D4 3B A3 00 00 */ addi r29, r3, 0 -/* 8033C7D8 54 A0 07 BD */ rlwinm. r0, r5, 0, 0x1e, 0x1e -/* 8033C7DC 40 82 00 18 */ bne lbl_8033C7F4 -/* 8033C7E0 38 7F 00 5C */ addi r3, r31, 0x5c -/* 8033C7E4 4C C6 31 82 */ crclr 6 -/* 8033C7E8 57 04 06 3E */ clrlwi r4, r24, 0x18 -/* 8033C7EC 4B CC A2 D1 */ bl OSReport -/* 8033C7F0 48 00 01 54 */ b lbl_8033C944 -lbl_8033C7F4: -/* 8033C7F4 57 00 06 3E */ clrlwi r0, r24, 0x18 -/* 8033C7F8 28 00 00 06 */ cmplwi r0, 6 -/* 8033C7FC 40 82 00 D8 */ bne lbl_8033C8D4 -/* 8033C800 54 A0 02 D7 */ rlwinm. r0, r5, 0, 0xb, 0xb -/* 8033C804 41 82 00 D0 */ beq lbl_8033C8D4 -/* 8033C808 80 1E 00 40 */ lwz r0, 0x40(r30) -/* 8033C80C 28 00 00 00 */ cmplwi r0, 0 -/* 8033C810 41 82 00 C4 */ beq lbl_8033C8D4 -/* 8033C814 3B 00 00 10 */ li r24, 0x10 -/* 8033C818 4B FF D4 A9 */ bl PPCMfmsr -/* 8033C81C 3A E3 00 00 */ addi r23, r3, 0 -/* 8033C820 62 E3 20 00 */ ori r3, r23, 0x2000 -/* 8033C824 4B FF D4 A5 */ bl PPCMtmsr -/* 8033C828 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000D8@ha */ -/* 8033C82C 80 63 00 D8 */ lwz r3, 0x00D8(r3) /* 0x800000D8@l */ -/* 8033C830 28 03 00 00 */ cmplwi r3, 0 -/* 8033C834 41 82 00 08 */ beq lbl_8033C83C -/* 8033C838 4B FF F5 F9 */ bl OSSaveFPUContext -lbl_8033C83C: -/* 8033C83C 4B FF D5 09 */ bl PPCMffpscr -/* 8033C840 3C 80 60 06 */ lis r4, 0x6006 /* 0x6005F8FF@ha */ -/* 8033C844 3A C4 F8 FF */ addi r22, r4, 0xF8FF /* 0x6005F8FF@l */ -/* 8033C848 7C 63 B0 38 */ and r3, r3, r22 -/* 8033C84C 4B FF D5 19 */ bl PPCMtfpscr -/* 8033C850 7E E3 BB 78 */ mr r3, r23 -/* 8033C854 4B FF D4 75 */ bl PPCMtmsr -/* 8033C858 3E E0 80 00 */ lis r23, 0x8000 /* 0x800000D8@ha */ -/* 8033C85C 80 17 00 D8 */ lwz r0, 0x00D8(r23) /* 0x800000D8@l */ -/* 8033C860 7C 00 C8 40 */ cmplw r0, r25 -/* 8033C864 40 82 00 54 */ bne lbl_8033C8B8 -/* 8033C868 48 00 44 5D */ bl OSDisableScheduler -/* 8033C86C 81 9E 00 40 */ lwz r12, 0x40(r30) -/* 8033C870 38 99 00 00 */ addi r4, r25, 0 -/* 8033C874 38 BA 00 00 */ addi r5, r26, 0 -/* 8033C878 4C C6 31 82 */ crclr 6 -/* 8033C87C 7D 88 03 A6 */ mtlr r12 -/* 8033C880 38 DB 00 00 */ addi r6, r27, 0 -/* 8033C884 38 60 00 10 */ li r3, 0x10 -/* 8033C888 4E 80 00 21 */ blrl -/* 8033C88C 80 79 01 9C */ lwz r3, 0x19c(r25) -/* 8033C890 38 00 00 00 */ li r0, 0 -/* 8033C894 54 63 04 E2 */ rlwinm r3, r3, 0, 0x13, 0x11 -/* 8033C898 90 79 01 9C */ stw r3, 0x19c(r25) -/* 8033C89C 90 17 00 D8 */ stw r0, 0xd8(r23) -/* 8033C8A0 80 19 01 94 */ lwz r0, 0x194(r25) -/* 8033C8A4 7C 00 B0 38 */ and r0, r0, r22 -/* 8033C8A8 90 19 01 94 */ stw r0, 0x194(r25) -/* 8033C8AC 48 00 44 59 */ bl OSEnableScheduler -/* 8033C8B0 48 00 49 71 */ bl __OSReschedule -/* 8033C8B4 48 00 00 18 */ b lbl_8033C8CC -lbl_8033C8B8: -/* 8033C8B8 80 79 01 9C */ lwz r3, 0x19c(r25) -/* 8033C8BC 38 00 00 00 */ li r0, 0 -/* 8033C8C0 54 63 04 E2 */ rlwinm r3, r3, 0, 0x13, 0x11 -/* 8033C8C4 90 79 01 9C */ stw r3, 0x19c(r25) -/* 8033C8C8 90 17 00 D8 */ stw r0, 0xd8(r23) -lbl_8033C8CC: -/* 8033C8CC 7F 23 CB 78 */ mr r3, r25 -/* 8033C8D0 4B FF F6 51 */ bl OSLoadContext -lbl_8033C8D4: -/* 8033C8D4 57 17 06 3E */ clrlwi r23, r24, 0x18 -/* 8033C8D8 57 00 15 BA */ rlwinm r0, r24, 2, 0x16, 0x1d -/* 8033C8DC 7E DE 02 14 */ add r22, r30, r0 -/* 8033C8E0 80 16 00 00 */ lwz r0, 0(r22) -/* 8033C8E4 28 00 00 00 */ cmplwi r0, 0 -/* 8033C8E8 41 82 00 38 */ beq lbl_8033C920 -/* 8033C8EC 48 00 43 D9 */ bl OSDisableScheduler -/* 8033C8F0 81 96 00 00 */ lwz r12, 0(r22) -/* 8033C8F4 38 77 00 00 */ addi r3, r23, 0 -/* 8033C8F8 38 99 00 00 */ addi r4, r25, 0 -/* 8033C8FC 4C C6 31 82 */ crclr 6 -/* 8033C900 7D 88 03 A6 */ mtlr r12 -/* 8033C904 38 BA 00 00 */ addi r5, r26, 0 -/* 8033C908 38 DB 00 00 */ addi r6, r27, 0 -/* 8033C90C 4E 80 00 21 */ blrl -/* 8033C910 48 00 43 F5 */ bl OSEnableScheduler -/* 8033C914 48 00 49 0D */ bl __OSReschedule -/* 8033C918 7F 23 CB 78 */ mr r3, r25 -/* 8033C91C 4B FF F6 05 */ bl OSLoadContext -lbl_8033C920: -/* 8033C920 57 00 06 3E */ clrlwi r0, r24, 0x18 -/* 8033C924 28 00 00 08 */ cmplwi r0, 8 -/* 8033C928 40 82 00 0C */ bne lbl_8033C934 -/* 8033C92C 7F 23 CB 78 */ mr r3, r25 -/* 8033C930 4B FF F5 F1 */ bl OSLoadContext -lbl_8033C934: -/* 8033C934 38 7F 00 7C */ addi r3, r31, 0x7c -/* 8033C938 4C C6 31 82 */ crclr 6 -/* 8033C93C 57 04 06 3E */ clrlwi r4, r24, 0x18 -/* 8033C940 4B CC A1 7D */ bl OSReport -lbl_8033C944: -/* 8033C944 38 6D 84 24 */ la r3, lit_76(r13) /* 804509A4-_SDA_BASE_ */ -/* 8033C948 4C C6 31 82 */ crclr 6 -/* 8033C94C 4B CC A1 71 */ bl OSReport -/* 8033C950 7F 23 CB 78 */ mr r3, r25 -/* 8033C954 4B FF F7 8D */ bl OSDumpContext -/* 8033C958 38 9A 00 00 */ addi r4, r26, 0 -/* 8033C95C 4C C6 31 82 */ crclr 6 -/* 8033C960 38 BB 00 00 */ addi r5, r27, 0 -/* 8033C964 38 7F 00 94 */ addi r3, r31, 0x94 -/* 8033C968 4B CC A1 55 */ bl OSReport -/* 8033C96C 38 DC 00 00 */ addi r6, r28, 0 -/* 8033C970 4C C6 31 82 */ crclr 6 -/* 8033C974 38 BD 00 00 */ addi r5, r29, 0 -/* 8033C978 38 7F 00 C8 */ addi r3, r31, 0xc8 -/* 8033C97C 4B CC A1 41 */ bl OSReport -/* 8033C980 57 00 06 3E */ clrlwi r0, r24, 0x18 -/* 8033C984 28 00 00 0F */ cmplwi r0, 0xf -/* 8033C988 41 81 00 C4 */ bgt lbl_8033CA4C -/* 8033C98C 3C 60 80 3D */ lis r3, lit_87@ha /* 0x803CFBF4@ha */ -/* 8033C990 38 63 FB F4 */ addi r3, r3, lit_87@l /* 0x803CFBF4@l */ -/* 8033C994 54 00 10 3A */ slwi r0, r0, 2 -/* 8033C998 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8033C99C 7C 09 03 A6 */ mtctr r0 -/* 8033C9A0 4E 80 04 20 */ bctr -/* 8033C9A4 80 99 01 98 */ lwz r4, 0x198(r25) -/* 8033C9A8 38 BB 00 00 */ addi r5, r27, 0 -/* 8033C9AC 38 7F 00 D8 */ addi r3, r31, 0xd8 -/* 8033C9B0 4C C6 31 82 */ crclr 6 -/* 8033C9B4 4B CC A1 09 */ bl OSReport -/* 8033C9B8 48 00 00 94 */ b lbl_8033CA4C -/* 8033C9BC 80 99 01 98 */ lwz r4, 0x198(r25) -/* 8033C9C0 38 7F 01 38 */ addi r3, r31, 0x138 -/* 8033C9C4 4C C6 31 82 */ crclr 6 -/* 8033C9C8 4B CC A0 F5 */ bl OSReport -/* 8033C9CC 48 00 00 80 */ b lbl_8033CA4C -/* 8033C9D0 80 99 01 98 */ lwz r4, 0x198(r25) -/* 8033C9D4 38 BB 00 00 */ addi r5, r27, 0 -/* 8033C9D8 38 7F 01 84 */ addi r3, r31, 0x184 -/* 8033C9DC 4C C6 31 82 */ crclr 6 -/* 8033C9E0 4B CC A0 DD */ bl OSReport -/* 8033C9E4 48 00 00 68 */ b lbl_8033CA4C -/* 8033C9E8 80 99 01 98 */ lwz r4, 0x198(r25) -/* 8033C9EC 38 BB 00 00 */ addi r5, r27, 0 -/* 8033C9F0 38 7F 01 E8 */ addi r3, r31, 0x1e8 -/* 8033C9F4 4C C6 31 82 */ crclr 6 -/* 8033C9F8 4B CC A0 C5 */ bl OSReport -/* 8033C9FC 48 00 00 50 */ b lbl_8033CA4C -/* 8033CA00 38 6D 84 24 */ la r3, lit_76(r13) /* 804509A4-_SDA_BASE_ */ -/* 8033CA04 4C C6 31 82 */ crclr 6 -/* 8033CA08 4B CC A0 B5 */ bl OSReport -/* 8033CA0C 3F 20 CC 00 */ lis r25, 0xCC00 /* 0xCC005000@ha */ -/* 8033CA10 4C C6 31 82 */ crclr 6 -/* 8033CA14 3B 19 50 00 */ addi r24, r25, 0x5000 /* 0xCC005000@l */ -/* 8033CA18 A0 99 50 30 */ lhz r4, 0x5030(r25) -/* 8033CA1C 38 7F 02 48 */ addi r3, r31, 0x248 -/* 8033CA20 A0 B9 50 32 */ lhz r5, 0x5032(r25) -/* 8033CA24 4B CC A0 99 */ bl OSReport -/* 8033CA28 A0 98 00 20 */ lhz r4, 0x20(r24) -/* 8033CA2C 38 7F 02 68 */ addi r3, r31, 0x268 -/* 8033CA30 A0 B8 00 22 */ lhz r5, 0x22(r24) -/* 8033CA34 4C C6 31 82 */ crclr 6 -/* 8033CA38 4B CC A0 85 */ bl OSReport -/* 8033CA3C 80 99 60 14 */ lwz r4, 0x6014(r25) -/* 8033CA40 4C C6 31 82 */ crclr 6 -/* 8033CA44 38 7F 02 88 */ addi r3, r31, 0x288 -/* 8033CA48 4B CC A0 75 */ bl OSReport -lbl_8033CA4C: -/* 8033CA4C A8 8D 90 F8 */ lha r4, __OSLastInterrupt(r13) -/* 8033CA50 38 7F 02 A4 */ addi r3, r31, 0x2a4 -/* 8033CA54 4C C6 31 82 */ crclr 6 -/* 8033CA58 80 AD 90 F4 */ lwz r5, __OSLastInterruptSrr0(r13) -/* 8033CA5C 80 ED 91 00 */ lwz r7, __OSLastInterruptTime(r13) -/* 8033CA60 81 0D 91 04 */ lwz r8, __OSLastInterruptTime+0x4(r13) -/* 8033CA64 4B CC A0 59 */ bl OSReport -/* 8033CA68 4B FF D2 99 */ bl PPCHalt -/* 8033CA6C BA C1 00 18 */ lmw r22, 0x18(r1) -/* 8033CA70 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8033CA74 38 21 00 40 */ addi r1, r1, 0x40 -/* 8033CA78 7C 08 03 A6 */ mtlr r0 -/* 8033CA7C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMemory/OnReset.s b/asm/dolphin/os/OSMemory/OnReset.s deleted file mode 100644 index 18ec77b573..0000000000 --- a/asm/dolphin/os/OSMemory/OnReset.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8033EC6C: -/* 8033EC6C 7C 08 02 A6 */ mflr r0 -/* 8033EC70 2C 03 00 00 */ cmpwi r3, 0 -/* 8033EC74 90 01 00 04 */ stw r0, 4(r1) -/* 8033EC78 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033EC7C 41 82 00 18 */ beq lbl_8033EC94 -/* 8033EC80 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC004010@ha */ -/* 8033EC84 38 00 00 FF */ li r0, 0xff -/* 8033EC88 B0 03 40 10 */ sth r0, 0x4010(r3) /* 0xCC004010@l */ -/* 8033EC8C 3C 60 F0 00 */ lis r3, 0xf000 -/* 8033EC90 4B FF EE 2D */ bl __OSMaskInterrupts -lbl_8033EC94: -/* 8033EC94 38 60 00 01 */ li r3, 1 -/* 8033EC98 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033EC9C 38 21 00 08 */ addi r1, r1, 8 -/* 8033ECA0 7C 08 03 A6 */ mtlr r0 -/* 8033ECA4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMessage/OSJamMessage.s b/asm/dolphin/os/OSMessage/OSJamMessage.s deleted file mode 100644 index 7ab93c84f2..0000000000 --- a/asm/dolphin/os/OSMessage/OSJamMessage.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8033EB98: -/* 8033EB98 7C 08 02 A6 */ mflr r0 -/* 8033EB9C 90 01 00 04 */ stw r0, 4(r1) -/* 8033EBA0 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033EBA4 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033EBA8 3B E3 00 00 */ addi r31, r3, 0 -/* 8033EBAC 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033EBB0 3B C5 00 00 */ addi r30, r5, 0 -/* 8033EBB4 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033EBB8 93 81 00 18 */ stw r28, 0x18(r1) -/* 8033EBBC 3B 84 00 00 */ addi r28, r4, 0 -/* 8033EBC0 4B FF EB 35 */ bl OSDisableInterrupts -/* 8033EBC4 3B A3 00 00 */ addi r29, r3, 0 -/* 8033EBC8 57 DE 07 FE */ clrlwi r30, r30, 0x1f -/* 8033EBCC 48 00 00 24 */ b lbl_8033EBF0 -lbl_8033EBD0: -/* 8033EBD0 2C 1E 00 00 */ cmpwi r30, 0 -/* 8033EBD4 40 82 00 14 */ bne lbl_8033EBE8 -/* 8033EBD8 7F A3 EB 78 */ mr r3, r29 -/* 8033EBDC 4B FF EB 41 */ bl OSRestoreInterrupts -/* 8033EBE0 38 60 00 00 */ li r3, 0 -/* 8033EBE4 48 00 00 68 */ b lbl_8033EC4C -lbl_8033EBE8: -/* 8033EBE8 7F E3 FB 78 */ mr r3, r31 -/* 8033EBEC 48 00 2F C1 */ bl OSSleepThread -lbl_8033EBF0: -/* 8033EBF0 80 BF 00 14 */ lwz r5, 0x14(r31) -/* 8033EBF4 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 8033EBF8 7C 05 00 00 */ cmpw r5, r0 -/* 8033EBFC 40 81 FF D4 */ ble lbl_8033EBD0 -/* 8033EC00 80 9F 00 18 */ lwz r4, 0x18(r31) -/* 8033EC04 38 05 FF FF */ addi r0, r5, -1 -/* 8033EC08 38 7F 00 08 */ addi r3, r31, 8 -/* 8033EC0C 7C 84 02 14 */ add r4, r4, r0 -/* 8033EC10 7C 04 2B D6 */ divw r0, r4, r5 -/* 8033EC14 7C 00 29 D6 */ mullw r0, r0, r5 -/* 8033EC18 7C 00 20 50 */ subf r0, r0, r4 -/* 8033EC1C 90 1F 00 18 */ stw r0, 0x18(r31) -/* 8033EC20 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 8033EC24 80 9F 00 10 */ lwz r4, 0x10(r31) -/* 8033EC28 54 00 10 3A */ slwi r0, r0, 2 -/* 8033EC2C 7F 84 01 2E */ stwx r28, r4, r0 -/* 8033EC30 80 9F 00 1C */ lwz r4, 0x1c(r31) -/* 8033EC34 38 04 00 01 */ addi r0, r4, 1 -/* 8033EC38 90 1F 00 1C */ stw r0, 0x1c(r31) -/* 8033EC3C 48 00 30 5D */ bl OSWakeupThread -/* 8033EC40 7F A3 EB 78 */ mr r3, r29 -/* 8033EC44 4B FF EA D9 */ bl OSRestoreInterrupts -/* 8033EC48 38 60 00 01 */ li r3, 1 -lbl_8033EC4C: -/* 8033EC4C 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033EC50 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033EC54 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033EC58 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033EC5C 83 81 00 18 */ lwz r28, 0x18(r1) -/* 8033EC60 38 21 00 28 */ addi r1, r1, 0x28 -/* 8033EC64 7C 08 03 A6 */ mtlr r0 -/* 8033EC68 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/SPEC2_MakeStatus.s b/asm/dolphin/pad/Pad/SPEC2_MakeStatus.s deleted file mode 100644 index 71945ed93b..0000000000 --- a/asm/dolphin/pad/Pad/SPEC2_MakeStatus.s +++ /dev/null @@ -1,305 +0,0 @@ -lbl_8034F5A0: -/* 8034F5A0 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F5A4 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f -/* 8034F5A8 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F5AC 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F5B0 54 00 C2 3E */ srwi r0, r0, 8 -/* 8034F5B4 7C 00 07 74 */ extsb r0, r0 -/* 8034F5B8 98 04 00 02 */ stb r0, 2(r4) -/* 8034F5BC 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F5C0 7C 00 07 74 */ extsb r0, r0 -/* 8034F5C4 98 04 00 03 */ stb r0, 3(r4) -/* 8034F5C8 80 0D 84 AC */ lwz r0, AnalogMode(r13) -/* 8034F5CC 54 00 05 6E */ rlwinm r0, r0, 0, 0x15, 0x17 -/* 8034F5D0 2C 00 04 00 */ cmpwi r0, 0x400 -/* 8034F5D4 41 82 01 98 */ beq lbl_8034F76C -/* 8034F5D8 40 80 00 34 */ bge lbl_8034F60C -/* 8034F5DC 2C 00 02 00 */ cmpwi r0, 0x200 -/* 8034F5E0 41 82 00 F8 */ beq lbl_8034F6D8 -/* 8034F5E4 40 80 00 1C */ bge lbl_8034F600 -/* 8034F5E8 2C 00 01 00 */ cmpwi r0, 0x100 -/* 8034F5EC 41 82 00 98 */ beq lbl_8034F684 -/* 8034F5F0 40 80 01 BC */ bge lbl_8034F7AC -/* 8034F5F4 2C 00 00 00 */ cmpwi r0, 0 -/* 8034F5F8 41 82 00 38 */ beq lbl_8034F630 -/* 8034F5FC 48 00 01 B0 */ b lbl_8034F7AC -lbl_8034F600: -/* 8034F600 2C 00 03 00 */ cmpwi r0, 0x300 -/* 8034F604 41 82 01 24 */ beq lbl_8034F728 -/* 8034F608 48 00 01 A4 */ b lbl_8034F7AC -lbl_8034F60C: -/* 8034F60C 2C 00 06 00 */ cmpwi r0, 0x600 -/* 8034F610 41 82 00 20 */ beq lbl_8034F630 -/* 8034F614 40 80 00 10 */ bge lbl_8034F624 -/* 8034F618 2C 00 05 00 */ cmpwi r0, 0x500 -/* 8034F61C 41 82 00 14 */ beq lbl_8034F630 -/* 8034F620 48 00 01 8C */ b lbl_8034F7AC -lbl_8034F624: -/* 8034F624 2C 00 07 00 */ cmpwi r0, 0x700 -/* 8034F628 41 82 00 08 */ beq lbl_8034F630 -/* 8034F62C 48 00 01 80 */ b lbl_8034F7AC -lbl_8034F630: -/* 8034F630 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F634 54 00 46 3E */ srwi r0, r0, 0x18 -/* 8034F638 7C 00 07 74 */ extsb r0, r0 -/* 8034F63C 98 04 00 04 */ stb r0, 4(r4) -/* 8034F640 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F644 54 00 84 3E */ srwi r0, r0, 0x10 -/* 8034F648 7C 00 07 74 */ extsb r0, r0 -/* 8034F64C 98 04 00 05 */ stb r0, 5(r4) -/* 8034F650 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F654 54 00 C6 36 */ rlwinm r0, r0, 0x18, 0x18, 0x1b -/* 8034F658 98 04 00 06 */ stb r0, 6(r4) -/* 8034F65C 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F660 54 00 E6 36 */ rlwinm r0, r0, 0x1c, 0x18, 0x1b -/* 8034F664 98 04 00 07 */ stb r0, 7(r4) -/* 8034F668 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F66C 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b -/* 8034F670 98 04 00 08 */ stb r0, 8(r4) -/* 8034F674 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F678 54 00 26 36 */ rlwinm r0, r0, 4, 0x18, 0x1b -/* 8034F67C 98 04 00 09 */ stb r0, 9(r4) -/* 8034F680 48 00 01 2C */ b lbl_8034F7AC -lbl_8034F684: -/* 8034F684 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F688 54 00 46 36 */ rlwinm r0, r0, 8, 0x18, 0x1b -/* 8034F68C 7C 00 07 74 */ extsb r0, r0 -/* 8034F690 98 04 00 04 */ stb r0, 4(r4) -/* 8034F694 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F698 54 00 66 36 */ rlwinm r0, r0, 0xc, 0x18, 0x1b -/* 8034F69C 7C 00 07 74 */ extsb r0, r0 -/* 8034F6A0 98 04 00 05 */ stb r0, 5(r4) -/* 8034F6A4 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6A8 54 00 86 3E */ rlwinm r0, r0, 0x10, 0x18, 0x1f -/* 8034F6AC 98 04 00 06 */ stb r0, 6(r4) -/* 8034F6B0 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6B4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8034F6B8 98 04 00 07 */ stb r0, 7(r4) -/* 8034F6BC 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6C0 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b -/* 8034F6C4 98 04 00 08 */ stb r0, 8(r4) -/* 8034F6C8 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6CC 54 00 26 36 */ rlwinm r0, r0, 4, 0x18, 0x1b -/* 8034F6D0 98 04 00 09 */ stb r0, 9(r4) -/* 8034F6D4 48 00 00 D8 */ b lbl_8034F7AC -lbl_8034F6D8: -/* 8034F6D8 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6DC 54 00 46 36 */ rlwinm r0, r0, 8, 0x18, 0x1b -/* 8034F6E0 7C 00 07 74 */ extsb r0, r0 -/* 8034F6E4 98 04 00 04 */ stb r0, 4(r4) -/* 8034F6E8 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6EC 54 00 66 36 */ rlwinm r0, r0, 0xc, 0x18, 0x1b -/* 8034F6F0 7C 00 07 74 */ extsb r0, r0 -/* 8034F6F4 98 04 00 05 */ stb r0, 5(r4) -/* 8034F6F8 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F6FC 54 00 86 36 */ rlwinm r0, r0, 0x10, 0x18, 0x1b -/* 8034F700 98 04 00 06 */ stb r0, 6(r4) -/* 8034F704 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F708 54 00 A6 36 */ rlwinm r0, r0, 0x14, 0x18, 0x1b -/* 8034F70C 98 04 00 07 */ stb r0, 7(r4) -/* 8034F710 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F714 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8034F718 98 04 00 08 */ stb r0, 8(r4) -/* 8034F71C 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F720 98 04 00 09 */ stb r0, 9(r4) -/* 8034F724 48 00 00 88 */ b lbl_8034F7AC -lbl_8034F728: -/* 8034F728 80 C5 00 04 */ lwz r6, 4(r5) -/* 8034F72C 38 00 00 00 */ li r0, 0 -/* 8034F730 54 C6 46 3E */ srwi r6, r6, 0x18 -/* 8034F734 7C C6 07 74 */ extsb r6, r6 -/* 8034F738 98 C4 00 04 */ stb r6, 4(r4) -/* 8034F73C 80 C5 00 04 */ lwz r6, 4(r5) -/* 8034F740 54 C6 84 3E */ srwi r6, r6, 0x10 -/* 8034F744 7C C6 07 74 */ extsb r6, r6 -/* 8034F748 98 C4 00 05 */ stb r6, 5(r4) -/* 8034F74C 80 C5 00 04 */ lwz r6, 4(r5) -/* 8034F750 54 C6 C6 3E */ rlwinm r6, r6, 0x18, 0x18, 0x1f -/* 8034F754 98 C4 00 06 */ stb r6, 6(r4) -/* 8034F758 80 A5 00 04 */ lwz r5, 4(r5) -/* 8034F75C 98 A4 00 07 */ stb r5, 7(r4) -/* 8034F760 98 04 00 08 */ stb r0, 8(r4) -/* 8034F764 98 04 00 09 */ stb r0, 9(r4) -/* 8034F768 48 00 00 44 */ b lbl_8034F7AC -lbl_8034F76C: -/* 8034F76C 80 C5 00 04 */ lwz r6, 4(r5) -/* 8034F770 38 00 00 00 */ li r0, 0 -/* 8034F774 54 C6 46 3E */ srwi r6, r6, 0x18 -/* 8034F778 7C C6 07 74 */ extsb r6, r6 -/* 8034F77C 98 C4 00 04 */ stb r6, 4(r4) -/* 8034F780 80 C5 00 04 */ lwz r6, 4(r5) -/* 8034F784 54 C6 84 3E */ srwi r6, r6, 0x10 -/* 8034F788 7C C6 07 74 */ extsb r6, r6 -/* 8034F78C 98 C4 00 05 */ stb r6, 5(r4) -/* 8034F790 98 04 00 06 */ stb r0, 6(r4) -/* 8034F794 98 04 00 07 */ stb r0, 7(r4) -/* 8034F798 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F79C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8034F7A0 98 04 00 08 */ stb r0, 8(r4) -/* 8034F7A4 80 05 00 04 */ lwz r0, 4(r5) -/* 8034F7A8 98 04 00 09 */ stb r0, 9(r4) -lbl_8034F7AC: -/* 8034F7AC 88 E4 00 02 */ lbz r7, 2(r4) -/* 8034F7B0 3C A0 80 45 */ lis r5, Type@ha /* 0x8044CB70@ha */ -/* 8034F7B4 54 66 10 3A */ slwi r6, r3, 2 -/* 8034F7B8 38 07 FF 80 */ addi r0, r7, -128 -/* 8034F7BC 98 04 00 02 */ stb r0, 2(r4) -/* 8034F7C0 38 05 CB 70 */ addi r0, r5, Type@l /* 0x8044CB70@l */ -/* 8034F7C4 7C A0 32 14 */ add r5, r0, r6 -/* 8034F7C8 88 C4 00 03 */ lbz r6, 3(r4) -/* 8034F7CC 38 06 FF 80 */ addi r0, r6, -128 -/* 8034F7D0 98 04 00 03 */ stb r0, 3(r4) -/* 8034F7D4 88 C4 00 04 */ lbz r6, 4(r4) -/* 8034F7D8 38 06 FF 80 */ addi r0, r6, -128 -/* 8034F7DC 98 04 00 04 */ stb r0, 4(r4) -/* 8034F7E0 88 C4 00 05 */ lbz r6, 5(r4) -/* 8034F7E4 38 06 FF 80 */ addi r0, r6, -128 -/* 8034F7E8 98 04 00 05 */ stb r0, 5(r4) -/* 8034F7EC 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F7F0 54 05 00 1E */ rlwinm r5, r0, 0, 0, 0xf -/* 8034F7F4 3C 05 F7 00 */ addis r0, r5, 0xf700 -/* 8034F7F8 28 00 00 00 */ cmplwi r0, 0 -/* 8034F7FC 40 82 00 44 */ bne lbl_8034F840 -/* 8034F800 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F804 54 00 06 30 */ rlwinm r0, r0, 0, 0x18, 0x18 -/* 8034F808 68 00 00 80 */ xori r0, r0, 0x80 -/* 8034F80C 2C 00 00 00 */ cmpwi r0, 0 -/* 8034F810 41 82 00 30 */ beq lbl_8034F840 -/* 8034F814 3C 00 80 00 */ lis r0, 0x8000 -/* 8034F818 80 AD 92 E4 */ lwz r5, BarrelBits(r13) -/* 8034F81C 7C 00 1C 30 */ srw r0, r0, r3 -/* 8034F820 7C A0 03 78 */ or r0, r5, r0 -/* 8034F824 90 0D 92 E4 */ stw r0, BarrelBits(r13) -/* 8034F828 38 00 00 00 */ li r0, 0 -/* 8034F82C 98 04 00 02 */ stb r0, 2(r4) -/* 8034F830 98 04 00 03 */ stb r0, 3(r4) -/* 8034F834 98 04 00 04 */ stb r0, 4(r4) -/* 8034F838 98 04 00 05 */ stb r0, 5(r4) -/* 8034F83C 4E 80 00 20 */ blr -lbl_8034F840: -/* 8034F840 3C 00 80 00 */ lis r0, 0x8000 -/* 8034F844 80 AD 92 E4 */ lwz r5, BarrelBits(r13) -/* 8034F848 7C 00 1C 30 */ srw r0, r0, r3 -/* 8034F84C 7C A0 00 78 */ andc r0, r5, r0 -/* 8034F850 90 0D 92 E4 */ stw r0, BarrelBits(r13) -/* 8034F854 3C A0 80 45 */ lis r5, Origin@ha /* 0x8044CB80@ha */ -/* 8034F858 1C 63 00 0C */ mulli r3, r3, 0xc -/* 8034F85C 88 C4 00 02 */ lbz r6, 2(r4) -/* 8034F860 38 05 CB 80 */ addi r0, r5, Origin@l /* 0x8044CB80@l */ -/* 8034F864 7C 60 1A 14 */ add r3, r0, r3 -/* 8034F868 88 E3 00 02 */ lbz r7, 2(r3) -/* 8034F86C 7C E0 07 75 */ extsb. r0, r7 -/* 8034F870 40 81 00 24 */ ble lbl_8034F894 -/* 8034F874 7C E5 07 74 */ extsb r5, r7 -/* 8034F878 38 05 FF 80 */ addi r0, r5, -128 -/* 8034F87C 7C 05 07 74 */ extsb r5, r0 -/* 8034F880 7C C0 07 74 */ extsb r0, r6 -/* 8034F884 7C 00 28 00 */ cmpw r0, r5 -/* 8034F888 40 80 00 30 */ bge lbl_8034F8B8 -/* 8034F88C 7C A6 2B 78 */ mr r6, r5 -/* 8034F890 48 00 00 28 */ b lbl_8034F8B8 -lbl_8034F894: -/* 8034F894 7C E0 07 75 */ extsb. r0, r7 -/* 8034F898 40 80 00 20 */ bge lbl_8034F8B8 -/* 8034F89C 7C E5 07 74 */ extsb r5, r7 -/* 8034F8A0 38 05 00 7F */ addi r0, r5, 0x7f -/* 8034F8A4 7C 05 07 74 */ extsb r5, r0 -/* 8034F8A8 7C C0 07 74 */ extsb r0, r6 -/* 8034F8AC 7C 05 00 00 */ cmpw r5, r0 -/* 8034F8B0 40 80 00 08 */ bge lbl_8034F8B8 -/* 8034F8B4 7C A6 2B 78 */ mr r6, r5 -lbl_8034F8B8: -/* 8034F8B8 7C C7 30 50 */ subf r6, r7, r6 -/* 8034F8BC 98 C4 00 02 */ stb r6, 2(r4) -/* 8034F8C0 88 E3 00 03 */ lbz r7, 3(r3) -/* 8034F8C4 88 C4 00 03 */ lbz r6, 3(r4) -/* 8034F8C8 7C E0 07 75 */ extsb. r0, r7 -/* 8034F8CC 40 81 00 24 */ ble lbl_8034F8F0 -/* 8034F8D0 7C E5 07 74 */ extsb r5, r7 -/* 8034F8D4 38 05 FF 80 */ addi r0, r5, -128 -/* 8034F8D8 7C 05 07 74 */ extsb r5, r0 -/* 8034F8DC 7C C0 07 74 */ extsb r0, r6 -/* 8034F8E0 7C 00 28 00 */ cmpw r0, r5 -/* 8034F8E4 40 80 00 30 */ bge lbl_8034F914 -/* 8034F8E8 7C A6 2B 78 */ mr r6, r5 -/* 8034F8EC 48 00 00 28 */ b lbl_8034F914 -lbl_8034F8F0: -/* 8034F8F0 7C E0 07 75 */ extsb. r0, r7 -/* 8034F8F4 40 80 00 20 */ bge lbl_8034F914 -/* 8034F8F8 7C E5 07 74 */ extsb r5, r7 -/* 8034F8FC 38 05 00 7F */ addi r0, r5, 0x7f -/* 8034F900 7C 05 07 74 */ extsb r5, r0 -/* 8034F904 7C C0 07 74 */ extsb r0, r6 -/* 8034F908 7C 05 00 00 */ cmpw r5, r0 -/* 8034F90C 40 80 00 08 */ bge lbl_8034F914 -/* 8034F910 7C A6 2B 78 */ mr r6, r5 -lbl_8034F914: -/* 8034F914 7C C7 30 50 */ subf r6, r7, r6 -/* 8034F918 98 C4 00 03 */ stb r6, 3(r4) -/* 8034F91C 88 E3 00 04 */ lbz r7, 4(r3) -/* 8034F920 88 C4 00 04 */ lbz r6, 4(r4) -/* 8034F924 7C E0 07 75 */ extsb. r0, r7 -/* 8034F928 40 81 00 24 */ ble lbl_8034F94C -/* 8034F92C 7C E5 07 74 */ extsb r5, r7 -/* 8034F930 38 05 FF 80 */ addi r0, r5, -128 -/* 8034F934 7C 05 07 74 */ extsb r5, r0 -/* 8034F938 7C C0 07 74 */ extsb r0, r6 -/* 8034F93C 7C 00 28 00 */ cmpw r0, r5 -/* 8034F940 40 80 00 30 */ bge lbl_8034F970 -/* 8034F944 7C A6 2B 78 */ mr r6, r5 -/* 8034F948 48 00 00 28 */ b lbl_8034F970 -lbl_8034F94C: -/* 8034F94C 7C E0 07 75 */ extsb. r0, r7 -/* 8034F950 40 80 00 20 */ bge lbl_8034F970 -/* 8034F954 7C E5 07 74 */ extsb r5, r7 -/* 8034F958 38 05 00 7F */ addi r0, r5, 0x7f -/* 8034F95C 7C 05 07 74 */ extsb r5, r0 -/* 8034F960 7C C0 07 74 */ extsb r0, r6 -/* 8034F964 7C 05 00 00 */ cmpw r5, r0 -/* 8034F968 40 80 00 08 */ bge lbl_8034F970 -/* 8034F96C 7C A6 2B 78 */ mr r6, r5 -lbl_8034F970: -/* 8034F970 7C C7 30 50 */ subf r6, r7, r6 -/* 8034F974 98 C4 00 04 */ stb r6, 4(r4) -/* 8034F978 88 E3 00 05 */ lbz r7, 5(r3) -/* 8034F97C 88 C4 00 05 */ lbz r6, 5(r4) -/* 8034F980 7C E0 07 75 */ extsb. r0, r7 -/* 8034F984 40 81 00 24 */ ble lbl_8034F9A8 -/* 8034F988 7C E5 07 74 */ extsb r5, r7 -/* 8034F98C 38 05 FF 80 */ addi r0, r5, -128 -/* 8034F990 7C 05 07 74 */ extsb r5, r0 -/* 8034F994 7C C0 07 74 */ extsb r0, r6 -/* 8034F998 7C 00 28 00 */ cmpw r0, r5 -/* 8034F99C 40 80 00 30 */ bge lbl_8034F9CC -/* 8034F9A0 7C A6 2B 78 */ mr r6, r5 -/* 8034F9A4 48 00 00 28 */ b lbl_8034F9CC -lbl_8034F9A8: -/* 8034F9A8 7C E0 07 75 */ extsb. r0, r7 -/* 8034F9AC 40 80 00 20 */ bge lbl_8034F9CC -/* 8034F9B0 7C E5 07 74 */ extsb r5, r7 -/* 8034F9B4 38 05 00 7F */ addi r0, r5, 0x7f -/* 8034F9B8 7C 05 07 74 */ extsb r5, r0 -/* 8034F9BC 7C C0 07 74 */ extsb r0, r6 -/* 8034F9C0 7C 05 00 00 */ cmpw r5, r0 -/* 8034F9C4 40 80 00 08 */ bge lbl_8034F9CC -/* 8034F9C8 7C A6 2B 78 */ mr r6, r5 -lbl_8034F9CC: -/* 8034F9CC 7C C7 30 50 */ subf r6, r7, r6 -/* 8034F9D0 98 C4 00 05 */ stb r6, 5(r4) -/* 8034F9D4 88 03 00 06 */ lbz r0, 6(r3) -/* 8034F9D8 88 A4 00 06 */ lbz r5, 6(r4) -/* 8034F9DC 7C 05 00 40 */ cmplw r5, r0 -/* 8034F9E0 40 80 00 08 */ bge lbl_8034F9E8 -/* 8034F9E4 7C 05 03 78 */ mr r5, r0 -lbl_8034F9E8: -/* 8034F9E8 7C A0 28 50 */ subf r5, r0, r5 -/* 8034F9EC 98 A4 00 06 */ stb r5, 6(r4) -/* 8034F9F0 88 03 00 07 */ lbz r0, 7(r3) -/* 8034F9F4 88 64 00 07 */ lbz r3, 7(r4) -/* 8034F9F8 7C 03 00 40 */ cmplw r3, r0 -/* 8034F9FC 40 80 00 08 */ bge lbl_8034FA04 -/* 8034FA00 7C 03 03 78 */ mr r3, r0 -lbl_8034FA04: -/* 8034FA04 7C 60 18 50 */ subf r3, r0, r3 -/* 8034FA08 98 64 00 07 */ stb r3, 7(r4) -/* 8034FA0C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Padclamp/ClampCircle.s b/asm/dolphin/pad/Padclamp/ClampCircle.s deleted file mode 100644 index 1fdf94021c..0000000000 --- a/asm/dolphin/pad/Padclamp/ClampCircle.s +++ /dev/null @@ -1,116 +0,0 @@ -lbl_8034DEEC: -/* 8034DEEC 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8034DEF0 7C C6 07 74 */ extsb r6, r6 -/* 8034DEF4 7C E6 00 D0 */ neg r7, r6 -/* 8034DEF8 88 03 00 00 */ lbz r0, 0(r3) -/* 8034DEFC 89 24 00 00 */ lbz r9, 0(r4) -/* 8034DF00 7C 00 07 74 */ extsb r0, r0 -/* 8034DF04 7C 07 00 00 */ cmpw r7, r0 -/* 8034DF08 7D 29 07 74 */ extsb r9, r9 -/* 8034DF0C 40 80 00 14 */ bge lbl_8034DF20 -/* 8034DF10 7C 00 30 00 */ cmpw r0, r6 -/* 8034DF14 40 80 00 0C */ bge lbl_8034DF20 -/* 8034DF18 39 00 00 00 */ li r8, 0 -/* 8034DF1C 48 00 00 18 */ b lbl_8034DF34 -lbl_8034DF20: -/* 8034DF20 2C 00 00 00 */ cmpwi r0, 0 -/* 8034DF24 40 81 00 0C */ ble lbl_8034DF30 -/* 8034DF28 7D 06 00 50 */ subf r8, r6, r0 -/* 8034DF2C 48 00 00 08 */ b lbl_8034DF34 -lbl_8034DF30: -/* 8034DF30 7D 00 32 14 */ add r8, r0, r6 -lbl_8034DF34: -/* 8034DF34 7C 07 48 00 */ cmpw r7, r9 -/* 8034DF38 40 80 00 14 */ bge lbl_8034DF4C -/* 8034DF3C 7C 09 30 00 */ cmpw r9, r6 -/* 8034DF40 40 80 00 0C */ bge lbl_8034DF4C -/* 8034DF44 39 20 00 00 */ li r9, 0 -/* 8034DF48 48 00 00 18 */ b lbl_8034DF60 -lbl_8034DF4C: -/* 8034DF4C 2C 09 00 00 */ cmpwi r9, 0 -/* 8034DF50 40 81 00 0C */ ble lbl_8034DF5C -/* 8034DF54 7D 26 48 50 */ subf r9, r6, r9 -/* 8034DF58 48 00 00 08 */ b lbl_8034DF60 -lbl_8034DF5C: -/* 8034DF5C 7D 29 32 14 */ add r9, r9, r6 -lbl_8034DF60: -/* 8034DF60 7C A7 07 74 */ extsb r7, r5 -/* 8034DF64 7C C8 41 D6 */ mullw r6, r8, r8 -/* 8034DF68 7C A9 49 D6 */ mullw r5, r9, r9 -/* 8034DF6C 7C 07 39 D6 */ mullw r0, r7, r7 -/* 8034DF70 7C A6 2A 14 */ add r5, r6, r5 -/* 8034DF74 7C 00 28 00 */ cmpw r0, r5 -/* 8034DF78 40 80 01 04 */ bge lbl_8034E07C -/* 8034DF7C 6C A5 80 00 */ xoris r5, r5, 0x8000 -/* 8034DF80 C8 E2 CB 78 */ lfd f7, lit_164(r2) -/* 8034DF84 90 A1 00 3C */ stw r5, 0x3c(r1) -/* 8034DF88 3C 00 43 30 */ lis r0, 0x4330 -/* 8034DF8C C0 02 CB 60 */ lfs f0, lit_160(r2) -/* 8034DF90 90 01 00 38 */ stw r0, 0x38(r1) -/* 8034DF94 C8 21 00 38 */ lfd f1, 0x38(r1) -/* 8034DF98 EC 21 38 28 */ fsubs f1, f1, f7 -/* 8034DF9C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8034DFA0 40 81 00 B0 */ ble lbl_8034E050 -/* 8034DFA4 90 A1 00 3C */ stw r5, 0x3c(r1) -/* 8034DFA8 C8 C2 CB 68 */ lfd f6, lit_161(r2) -/* 8034DFAC 90 01 00 38 */ stw r0, 0x38(r1) -/* 8034DFB0 C8 A2 CB 70 */ lfd f5, lit_162(r2) -/* 8034DFB4 C8 01 00 38 */ lfd f0, 0x38(r1) -/* 8034DFB8 90 A1 00 34 */ stw r5, 0x34(r1) -/* 8034DFBC EC 00 38 28 */ fsubs f0, f0, f7 -/* 8034DFC0 90 01 00 30 */ stw r0, 0x30(r1) -/* 8034DFC4 FC 60 00 34 */ frsqrte f3, f0 -/* 8034DFC8 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8034DFCC 90 A1 00 2C */ stw r5, 0x2c(r1) -/* 8034DFD0 EC 40 38 28 */ fsubs f2, f0, f7 -/* 8034DFD4 FC 23 00 F2 */ fmul f1, f3, f3 -/* 8034DFD8 90 01 00 28 */ stw r0, 0x28(r1) -/* 8034DFDC FC 86 00 F2 */ fmul f4, f6, f3 -/* 8034DFE0 C8 01 00 28 */ lfd f0, 0x28(r1) -/* 8034DFE4 FC 22 00 72 */ fmul f1, f2, f1 -/* 8034DFE8 90 A1 00 24 */ stw r5, 0x24(r1) -/* 8034DFEC EC 60 38 28 */ fsubs f3, f0, f7 -/* 8034DFF0 90 01 00 20 */ stw r0, 0x20(r1) -/* 8034DFF4 FC 25 08 28 */ fsub f1, f5, f1 -/* 8034DFF8 C8 01 00 20 */ lfd f0, 0x20(r1) -/* 8034DFFC 90 A1 00 1C */ stw r5, 0x1c(r1) -/* 8034E000 FC 84 00 72 */ fmul f4, f4, f1 -/* 8034E004 90 01 00 18 */ stw r0, 0x18(r1) -/* 8034E008 EC 40 38 28 */ fsubs f2, f0, f7 -/* 8034E00C C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8034E010 FC 24 01 32 */ fmul f1, f4, f4 -/* 8034E014 FC 86 01 32 */ fmul f4, f6, f4 -/* 8034E018 FC 23 00 72 */ fmul f1, f3, f1 -/* 8034E01C EC 00 38 28 */ fsubs f0, f0, f7 -/* 8034E020 FC 25 08 28 */ fsub f1, f5, f1 -/* 8034E024 FC 64 00 72 */ fmul f3, f4, f1 -/* 8034E028 FC 23 00 F2 */ fmul f1, f3, f3 -/* 8034E02C FC 66 00 F2 */ fmul f3, f6, f3 -/* 8034E030 FC 22 00 72 */ fmul f1, f2, f1 -/* 8034E034 FC 25 08 28 */ fsub f1, f5, f1 -/* 8034E038 FC 23 00 72 */ fmul f1, f3, f1 -/* 8034E03C FC 00 00 72 */ fmul f0, f0, f1 -/* 8034E040 FC 00 00 18 */ frsp f0, f0 -/* 8034E044 D0 01 00 14 */ stfs f0, 0x14(r1) -/* 8034E048 C0 01 00 14 */ lfs f0, 0x14(r1) -/* 8034E04C 48 00 00 14 */ b lbl_8034E060 -lbl_8034E050: -/* 8034E050 90 A1 00 1C */ stw r5, 0x1c(r1) -/* 8034E054 90 01 00 18 */ stw r0, 0x18(r1) -/* 8034E058 C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8034E05C EC 00 38 28 */ fsubs f0, f0, f7 -lbl_8034E060: -/* 8034E060 FC 00 00 1E */ fctiwz f0, f0 -/* 8034E064 7C A8 39 D6 */ mullw r5, r8, r7 -/* 8034E068 D8 01 00 18 */ stfd f0, 0x18(r1) -/* 8034E06C 80 C1 00 1C */ lwz r6, 0x1c(r1) -/* 8034E070 7C 09 39 D6 */ mullw r0, r9, r7 -/* 8034E074 7D 05 33 D6 */ divw r8, r5, r6 -/* 8034E078 7D 20 33 D6 */ divw r9, r0, r6 -lbl_8034E07C: -/* 8034E07C 7D 00 07 74 */ extsb r0, r8 -/* 8034E080 98 03 00 00 */ stb r0, 0(r3) -/* 8034E084 7D 20 07 74 */ extsb r0, r9 -/* 8034E088 98 04 00 00 */ stb r0, 0(r4) -/* 8034E08C 38 21 00 40 */ addi r1, r1, 0x40 -/* 8034E090 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/GetCurrentDisplayPosition.s b/asm/dolphin/vi/vi/GetCurrentDisplayPosition.s deleted file mode 100644 index 87beab3eaf..0000000000 --- a/asm/dolphin/vi/vi/GetCurrentDisplayPosition.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8034D8C4: -/* 8034D8C4 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC002000@ha */ -/* 8034D8C8 38 E5 20 00 */ addi r7, r5, 0x2000 /* 0xCC002000@l */ -/* 8034D8CC A4 07 00 2C */ lhzu r0, 0x2c(r7) -/* 8034D8D0 38 C5 20 00 */ addi r6, r5, 0x2000 -/* 8034D8D4 54 09 05 7E */ clrlwi r9, r0, 0x15 -lbl_8034D8D8: -/* 8034D8D8 A0 07 00 00 */ lhz r0, 0(r7) -/* 8034D8DC 7D 28 4B 78 */ mr r8, r9 -/* 8034D8E0 A0 A6 00 2E */ lhz r5, 0x2e(r6) -/* 8034D8E4 54 09 05 7E */ clrlwi r9, r0, 0x15 -/* 8034D8E8 7C 08 48 40 */ cmplw r8, r9 -/* 8034D8EC 54 A0 05 7E */ clrlwi r0, r5, 0x15 -/* 8034D8F0 40 82 FF E8 */ bne lbl_8034D8D8 -/* 8034D8F4 90 03 00 00 */ stw r0, 0(r3) -/* 8034D8F8 91 24 00 00 */ stw r9, 0(r4) -/* 8034D8FC 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIConfigure.s b/asm/dolphin/vi/vi/VIConfigure.s index a68bdcc3e8..89e361b90d 100644 --- a/asm/dolphin/vi/vi/VIConfigure.s +++ b/asm/dolphin/vi/vi/VIConfigure.s @@ -177,7 +177,7 @@ lbl_8034D0DC: /* 8034D100 93 FE 01 44 */ stw r31, 0x144(r30) /* 8034D104 A0 19 00 00 */ lhz r0, 0(r25) /* 8034D108 A8 9E 00 F0 */ lha r4, 0xf0(r30) -/* 8034D10C A8 6D 92 84 */ lha r3, struct_80451804+0x0(r13) +/* 8034D10C A8 6D 92 84 */ lha r3, displayOffsetH(r13) /* 8034D110 20 00 02 D0 */ subfic r0, r0, 0x2d0 /* 8034D114 A0 DF 00 02 */ lhz r6, 2(r31) /* 8034D118 7C 64 1A 14 */ add r3, r4, r3 @@ -202,7 +202,7 @@ lbl_8034D154: /* 8034D154 38 00 00 01 */ li r0, 1 lbl_8034D158: /* 8034D158 A0 98 00 00 */ lhz r4, 0(r24) -/* 8034D15C A8 AD 92 86 */ lha r5, struct_80451804+0x2(r13) +/* 8034D15C A8 AD 92 86 */ lha r5, displayOffsetV(r13) /* 8034D160 7C 87 07 34 */ extsh r7, r4 /* 8034D164 54 84 07 FE */ clrlwi r4, r4, 0x1f /* 8034D168 7C E7 2A 14 */ add r7, r7, r5 @@ -307,15 +307,15 @@ lbl_8034D2A8: /* 8034D2B8 80 CD 92 90 */ lwz r6, changed(r13) /* 8034D2BC 38 9E 00 02 */ addi r4, r30, 2 /* 8034D2C0 38 BE 00 6C */ addi r5, r30, 0x6c -/* 8034D2C4 80 ED 92 94 */ lwz r7, data_80451814(r13) +/* 8034D2C4 80 ED 92 94 */ lwz r7, changed+0x4(r13) /* 8034D2C8 60 C6 00 40 */ ori r6, r6, 0x40 -/* 8034D2CC 90 ED 92 94 */ stw r7, data_80451814(r13) +/* 8034D2CC 90 ED 92 94 */ stw r7, changed+0x4(r13) /* 8034D2D0 90 CD 92 90 */ stw r6, changed(r13) /* 8034D2D4 B0 1E 00 30 */ sth r0, 0x30(r30) /* 8034D2D8 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D2DC 80 CD 92 94 */ lwz r6, data_80451814(r13) +/* 8034D2DC 80 CD 92 94 */ lwz r6, changed+0x4(r13) /* 8034D2E0 60 00 00 80 */ ori r0, r0, 0x80 -/* 8034D2E4 90 CD 92 94 */ stw r6, data_80451814(r13) +/* 8034D2E4 90 CD 92 94 */ stw r6, changed+0x4(r13) /* 8034D2E8 90 0D 92 90 */ stw r0, changed(r13) /* 8034D2EC 80 1D 00 00 */ lwz r0, 0(r29) /* 8034D2F0 A0 DE 00 02 */ lhz r6, 2(r30) @@ -358,14 +358,14 @@ lbl_8034D364: /* 8034D36C 2C 08 00 00 */ cmpwi r8, 0 /* 8034D370 B1 25 00 00 */ sth r9, 0(r5) /* 8034D374 80 8D 92 90 */ lwz r4, changed(r13) -/* 8034D378 80 AD 92 94 */ lwz r5, data_80451814(r13) +/* 8034D378 80 AD 92 94 */ lwz r5, changed+0x4(r13) /* 8034D37C 7C 80 03 78 */ or r0, r4, r0 -/* 8034D380 90 AD 92 94 */ stw r5, data_80451814(r13) +/* 8034D380 90 AD 92 94 */ stw r5, changed+0x4(r13) /* 8034D384 90 0D 92 90 */ stw r0, changed(r13) /* 8034D388 80 8D 92 90 */ lwz r4, changed(r13) -/* 8034D38C 80 0D 92 94 */ lwz r0, data_80451814(r13) +/* 8034D38C 80 0D 92 94 */ lwz r0, changed+0x4(r13) /* 8034D390 60 00 02 00 */ ori r0, r0, 0x200 -/* 8034D394 90 0D 92 94 */ stw r0, data_80451814(r13) +/* 8034D394 90 0D 92 94 */ stw r0, changed+0x4(r13) /* 8034D398 90 8D 92 90 */ stw r4, changed(r13) /* 8034D39C A0 99 00 00 */ lhz r4, 0(r25) /* 8034D3A0 A0 B1 00 00 */ lhz r5, 0(r17) @@ -386,15 +386,15 @@ lbl_8034D3B4: /* 8034D3D4 B0 1E 00 4A */ sth r0, 0x4a(r30) /* 8034D3D8 3C 00 04 00 */ lis r0, 0x400 /* 8034D3DC 80 CD 92 90 */ lwz r6, changed(r13) -/* 8034D3E0 80 ED 92 94 */ lwz r7, data_80451814(r13) +/* 8034D3E0 80 ED 92 94 */ lwz r7, changed+0x4(r13) /* 8034D3E4 7C E0 03 78 */ or r0, r7, r0 -/* 8034D3E8 90 0D 92 94 */ stw r0, data_80451814(r13) +/* 8034D3E8 90 0D 92 94 */ stw r0, changed+0x4(r13) /* 8034D3EC 90 CD 92 90 */ stw r6, changed(r13) /* 8034D3F0 B1 1E 00 70 */ sth r8, 0x70(r30) /* 8034D3F4 80 CD 92 90 */ lwz r6, changed(r13) -/* 8034D3F8 80 0D 92 94 */ lwz r0, data_80451814(r13) +/* 8034D3F8 80 0D 92 94 */ lwz r0, changed+0x4(r13) /* 8034D3FC 60 00 00 80 */ ori r0, r0, 0x80 -/* 8034D400 90 0D 92 94 */ stw r0, data_80451814(r13) +/* 8034D400 90 0D 92 94 */ stw r0, changed+0x4(r13) /* 8034D404 90 CD 92 90 */ stw r6, changed(r13) /* 8034D408 48 00 00 24 */ b lbl_8034D42C lbl_8034D40C: @@ -402,9 +402,9 @@ lbl_8034D40C: /* 8034D410 B0 1E 00 4A */ sth r0, 0x4a(r30) /* 8034D414 3C 00 04 00 */ lis r0, 0x400 /* 8034D418 80 CD 92 90 */ lwz r6, changed(r13) -/* 8034D41C 80 ED 92 94 */ lwz r7, data_80451814(r13) +/* 8034D41C 80 ED 92 94 */ lwz r7, changed+0x4(r13) /* 8034D420 7C E0 03 78 */ or r0, r7, r0 -/* 8034D424 90 0D 92 94 */ stw r0, data_80451814(r13) +/* 8034D424 90 0D 92 94 */ stw r0, changed+0x4(r13) /* 8034D428 90 CD 92 90 */ stw r6, changed(r13) lbl_8034D42C: /* 8034D42C A0 03 00 00 */ lhz r0, 0(r3) @@ -418,19 +418,19 @@ lbl_8034D42C: /* 8034D44C 81 4D 92 90 */ lwz r10, changed(r13) /* 8034D450 3C C0 00 10 */ lis r6, 0x10 /* 8034D454 3C 80 00 20 */ lis r4, 0x20 -/* 8034D458 81 6D 92 94 */ lwz r11, data_80451814(r13) +/* 8034D458 81 6D 92 94 */ lwz r11, changed+0x4(r13) /* 8034D45C 7D 4A 1B 78 */ or r10, r10, r3 /* 8034D460 3C 60 00 04 */ lis r3, 4 -/* 8034D464 91 6D 92 94 */ stw r11, data_80451814(r13) +/* 8034D464 91 6D 92 94 */ stw r11, changed+0x4(r13) /* 8034D468 91 4D 92 90 */ stw r10, changed(r13) /* 8034D46C 89 5F 00 1D */ lbz r10, 0x1d(r31) /* 8034D470 89 7F 00 1E */ lbz r11, 0x1e(r31) /* 8034D474 51 4B 44 2E */ rlwimi r11, r10, 8, 0x10, 0x17 /* 8034D478 B1 7E 00 04 */ sth r11, 4(r30) /* 8034D47C 81 4D 92 90 */ lwz r10, changed(r13) -/* 8034D480 81 6D 92 94 */ lwz r11, data_80451814(r13) +/* 8034D480 81 6D 92 94 */ lwz r11, changed+0x4(r13) /* 8034D484 7D 48 43 78 */ or r8, r10, r8 -/* 8034D488 91 6D 92 94 */ stw r11, data_80451814(r13) +/* 8034D488 91 6D 92 94 */ stw r11, changed+0x4(r13) /* 8034D48C 91 0D 92 90 */ stw r8, changed(r13) /* 8034D490 89 1F 00 1F */ lbz r8, 0x1f(r31) /* 8034D494 89 5F 00 1C */ lbz r10, 0x1c(r31) @@ -445,17 +445,17 @@ lbl_8034D42C: /* 8034D4B8 81 4D 92 90 */ lwz r10, changed(r13) /* 8034D4BC 7C 0C 00 50 */ subf r0, r12, r0 /* 8034D4C0 56 28 BA 7E */ srwi r8, r17, 9 -/* 8034D4C4 81 6D 92 94 */ lwz r11, data_80451814(r13) +/* 8034D4C4 81 6D 92 94 */ lwz r11, changed+0x4(r13) /* 8034D4C8 54 00 08 3C */ slwi r0, r0, 1 /* 8034D4CC 7D 49 4B 78 */ or r9, r10, r9 -/* 8034D4D0 91 6D 92 94 */ stw r11, data_80451814(r13) +/* 8034D4D0 91 6D 92 94 */ stw r11, changed+0x4(r13) /* 8034D4D4 7D 00 03 78 */ or r0, r8, r0 /* 8034D4D8 91 2D 92 90 */ stw r9, changed(r13) /* 8034D4DC B0 1E 00 08 */ sth r0, 8(r30) /* 8034D4E0 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D4E4 81 0D 92 94 */ lwz r8, data_80451814(r13) +/* 8034D4E4 81 0D 92 94 */ lwz r8, changed+0x4(r13) /* 8034D4E8 7C 00 3B 78 */ or r0, r0, r7 -/* 8034D4EC 91 0D 92 94 */ stw r8, data_80451814(r13) +/* 8034D4EC 91 0D 92 94 */ stw r8, changed+0x4(r13) /* 8034D4F0 90 0D 92 90 */ stw r0, changed(r13) /* 8034D4F4 A0 1F 00 10 */ lhz r0, 0x10(r31) /* 8034D4F8 88 FF 00 0C */ lbz r7, 0xc(r31) @@ -463,9 +463,9 @@ lbl_8034D42C: /* 8034D500 7C E0 03 78 */ or r0, r7, r0 /* 8034D504 B0 1E 00 16 */ sth r0, 0x16(r30) /* 8034D508 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D50C 80 ED 92 94 */ lwz r7, data_80451814(r13) +/* 8034D50C 80 ED 92 94 */ lwz r7, changed+0x4(r13) /* 8034D510 7C 00 33 78 */ or r0, r0, r6 -/* 8034D514 90 ED 92 94 */ stw r7, data_80451814(r13) +/* 8034D514 90 ED 92 94 */ stw r7, changed+0x4(r13) /* 8034D518 90 0D 92 90 */ stw r0, changed(r13) /* 8034D51C A0 1F 00 14 */ lhz r0, 0x14(r31) /* 8034D520 88 DF 00 0E */ lbz r6, 0xe(r31) @@ -473,9 +473,9 @@ lbl_8034D42C: /* 8034D528 7C C0 03 78 */ or r0, r6, r0 /* 8034D52C B0 1E 00 14 */ sth r0, 0x14(r30) /* 8034D530 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D534 80 CD 92 94 */ lwz r6, data_80451814(r13) +/* 8034D534 80 CD 92 94 */ lwz r6, changed+0x4(r13) /* 8034D538 7C 00 23 78 */ or r0, r0, r4 -/* 8034D53C 90 CD 92 94 */ stw r6, data_80451814(r13) +/* 8034D53C 90 CD 92 94 */ stw r6, changed+0x4(r13) /* 8034D540 90 0D 92 90 */ stw r0, changed(r13) /* 8034D544 A0 1F 00 12 */ lhz r0, 0x12(r31) /* 8034D548 88 9F 00 0D */ lbz r4, 0xd(r31) @@ -483,9 +483,9 @@ lbl_8034D42C: /* 8034D550 7C 80 03 78 */ or r0, r4, r0 /* 8034D554 B0 1E 00 1A */ sth r0, 0x1a(r30) /* 8034D558 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D55C 80 8D 92 94 */ lwz r4, data_80451814(r13) +/* 8034D55C 80 8D 92 94 */ lwz r4, changed+0x4(r13) /* 8034D560 7C 00 1B 78 */ or r0, r0, r3 -/* 8034D564 90 8D 92 94 */ stw r4, data_80451814(r13) +/* 8034D564 90 8D 92 94 */ stw r4, changed+0x4(r13) /* 8034D568 90 0D 92 90 */ stw r0, changed(r13) /* 8034D56C A0 1F 00 16 */ lhz r0, 0x16(r31) /* 8034D570 88 7F 00 0F */ lbz r3, 0xf(r31) @@ -495,9 +495,9 @@ lbl_8034D42C: /* 8034D580 80 6D 92 90 */ lwz r3, changed(r13) /* 8034D584 3C 00 00 08 */ lis r0, 8 /* 8034D588 38 DE 01 1C */ addi r6, r30, 0x11c -/* 8034D58C 80 8D 92 94 */ lwz r4, data_80451814(r13) +/* 8034D58C 80 8D 92 94 */ lwz r4, changed+0x4(r13) /* 8034D590 7C 60 03 78 */ or r0, r3, r0 -/* 8034D594 90 8D 92 94 */ stw r4, data_80451814(r13) +/* 8034D594 90 8D 92 94 */ stw r4, changed+0x4(r13) /* 8034D598 90 0D 92 90 */ stw r0, changed(r13) /* 8034D59C A0 7C 00 00 */ lhz r3, 0(r28) /* 8034D5A0 80 9A 00 00 */ lwz r4, 0(r26) @@ -533,10 +533,10 @@ lbl_8034D5D0: /* 8034D610 B0 9E 00 48 */ sth r4, 0x48(r30) /* 8034D614 80 8D 92 90 */ lwz r4, changed(r13) /* 8034D618 80 0D 92 B8 */ lwz r0, FBSet(r13) -/* 8034D61C 80 AD 92 94 */ lwz r5, data_80451814(r13) +/* 8034D61C 80 AD 92 94 */ lwz r5, changed+0x4(r13) /* 8034D620 28 00 00 00 */ cmplwi r0, 0 /* 8034D624 7C A0 1B 78 */ or r0, r5, r3 -/* 8034D628 90 0D 92 94 */ stw r0, data_80451814(r13) +/* 8034D628 90 0D 92 94 */ stw r0, changed+0x4(r13) /* 8034D62C 90 8D 92 90 */ stw r4, changed(r13) /* 8034D630 41 82 00 1C */ beq lbl_8034D64C /* 8034D634 38 7E 00 F0 */ addi r3, r30, 0xf0 diff --git a/asm/dolphin/vi/vi/VIFlush.s b/asm/dolphin/vi/vi/VIFlush.s deleted file mode 100644 index 4fb0357a39..0000000000 --- a/asm/dolphin/vi/vi/VIFlush.s +++ /dev/null @@ -1,81 +0,0 @@ -lbl_8034D694: -/* 8034D694 7C 08 02 A6 */ mflr r0 -/* 8034D698 3C 60 80 45 */ lis r3, regs@ha /* 0x8044CA28@ha */ -/* 8034D69C 90 01 00 04 */ stw r0, 4(r1) -/* 8034D6A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034D6A4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034D6A8 3B E3 CA 28 */ addi r31, r3, regs@l /* 0x8044CA28@l */ -/* 8034D6AC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034D6B0 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8034D6B4 93 81 00 10 */ stw r28, 0x10(r1) -/* 8034D6B8 4B FF 00 3D */ bl OSDisableInterrupts -/* 8034D6BC 80 AD 92 98 */ lwz r5, shdwChangeMode(r13) -/* 8034D6C0 3B C3 00 00 */ addi r30, r3, 0 -/* 8034D6C4 38 00 00 00 */ li r0, 0 -/* 8034D6C8 80 8D 92 88 */ lwz r4, changeMode(r13) -/* 8034D6CC 7C A3 23 78 */ or r3, r5, r4 -/* 8034D6D0 90 6D 92 98 */ stw r3, shdwChangeMode(r13) -/* 8034D6D4 90 0D 92 88 */ stw r0, changeMode(r13) -/* 8034D6D8 80 8D 92 A0 */ lwz r4, shdwChanged(r13) -/* 8034D6DC 80 AD 92 A4 */ lwz r5, data_80451824(r13) -/* 8034D6E0 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D6E4 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034D6E8 7C 80 03 78 */ or r0, r4, r0 -/* 8034D6EC 7C A3 1B 78 */ or r3, r5, r3 -/* 8034D6F0 90 6D 92 A4 */ stw r3, data_80451824(r13) -/* 8034D6F4 90 0D 92 A0 */ stw r0, shdwChanged(r13) -/* 8034D6F8 48 00 00 78 */ b lbl_8034D770 -lbl_8034D6FC: -/* 8034D6FC 80 6D 92 90 */ lwz r3, changed(r13) -/* 8034D700 38 A0 00 20 */ li r5, 0x20 -/* 8034D704 83 8D 92 94 */ lwz r28, data_80451814(r13) -/* 8034D708 38 9C 00 00 */ addi r4, r28, 0 -/* 8034D70C 48 01 4F 65 */ bl __shr2u -/* 8034D710 7C 84 00 34 */ cntlzw r4, r4 -/* 8034D714 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034D718 38 00 FF FF */ li r0, -1 -/* 8034D71C 7F 80 00 38 */ and r0, r28, r0 -/* 8034D720 40 80 00 08 */ bge lbl_8034D728 -/* 8034D724 48 00 00 0C */ b lbl_8034D730 -lbl_8034D728: -/* 8034D728 7C 03 00 34 */ cntlzw r3, r0 -/* 8034D72C 38 83 00 20 */ addi r4, r3, 0x20 -lbl_8034D730: -/* 8034D730 54 83 08 3C */ slwi r3, r4, 1 -/* 8034D734 7C 1F 1A 2E */ lhzx r0, r31, r3 -/* 8034D738 7C 7F 1A 14 */ add r3, r31, r3 -/* 8034D73C 20 A4 00 3F */ subfic r5, r4, 0x3f -/* 8034D740 B0 03 00 78 */ sth r0, 0x78(r3) -/* 8034D744 38 60 00 00 */ li r3, 0 -/* 8034D748 38 80 00 01 */ li r4, 1 -/* 8034D74C 48 01 4F 01 */ bl __shl2i -/* 8034D750 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D754 7C 65 18 F8 */ nor r5, r3, r3 -/* 8034D758 7C 84 20 F8 */ nor r4, r4, r4 -/* 8034D75C 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034D760 7C 00 28 38 */ and r0, r0, r5 -/* 8034D764 7C 63 20 38 */ and r3, r3, r4 -/* 8034D768 90 6D 92 94 */ stw r3, data_80451814(r13) -/* 8034D76C 90 0D 92 90 */ stw r0, changed(r13) -lbl_8034D770: -/* 8034D770 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034D774 38 60 00 00 */ li r3, 0 -/* 8034D778 80 8D 92 94 */ lwz r4, data_80451814(r13) -/* 8034D77C 7C 00 1A 78 */ xor r0, r0, r3 -/* 8034D780 7C 83 1A 78 */ xor r3, r4, r3 -/* 8034D784 7C 60 03 79 */ or. r0, r3, r0 -/* 8034D788 40 82 FF 74 */ bne lbl_8034D6FC -/* 8034D78C 38 00 00 01 */ li r0, 1 -/* 8034D790 90 0D 92 68 */ stw r0, flushFlag(r13) -/* 8034D794 7F C3 F3 78 */ mr r3, r30 -/* 8034D798 80 1F 01 20 */ lwz r0, 0x120(r31) -/* 8034D79C 90 0D 92 B0 */ stw r0, NextBufAddr(r13) -/* 8034D7A0 4B FE FF 7D */ bl OSRestoreInterrupts -/* 8034D7A4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034D7A8 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034D7AC 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034D7B0 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8034D7B4 83 81 00 10 */ lwz r28, 0x10(r1) -/* 8034D7B8 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034D7BC 7C 08 03 A6 */ mtlr r0 -/* 8034D7C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIGetCurrentLine.s b/asm/dolphin/vi/vi/VIGetCurrentLine.s deleted file mode 100644 index 9b07a2ffe3..0000000000 --- a/asm/dolphin/vi/vi/VIGetCurrentLine.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8034DA04: -/* 8034DA04 7C 08 02 A6 */ mflr r0 -/* 8034DA08 90 01 00 04 */ stw r0, 4(r1) -/* 8034DA0C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034DA10 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034DA14 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034DA18 83 ED 92 A8 */ lwz r31, CurrTiming(r13) -/* 8034DA1C 4B FE FC D9 */ bl OSDisableInterrupts -/* 8034DA20 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC002000@ha */ -/* 8034DA24 39 04 20 00 */ addi r8, r4, 0x2000 /* 0xCC002000@l */ -/* 8034DA28 A4 08 00 2C */ lhzu r0, 0x2c(r8) -/* 8034DA2C 38 A4 20 00 */ addi r5, r4, 0x2000 -/* 8034DA30 54 06 05 7E */ clrlwi r6, r0, 0x15 -lbl_8034DA34: -/* 8034DA34 A0 08 00 00 */ lhz r0, 0(r8) -/* 8034DA38 7C C7 33 78 */ mr r7, r6 -/* 8034DA3C A0 85 00 2E */ lhz r4, 0x2e(r5) -/* 8034DA40 54 06 05 7E */ clrlwi r6, r0, 0x15 -/* 8034DA44 7C 07 30 40 */ cmplw r7, r6 -/* 8034DA48 54 87 05 7E */ clrlwi r7, r4, 0x15 -/* 8034DA4C 40 82 FF E8 */ bne lbl_8034DA34 -/* 8034DA50 80 8D 92 A8 */ lwz r4, CurrTiming(r13) -/* 8034DA54 38 A7 FF FF */ addi r5, r7, -1 -/* 8034DA58 38 C6 FF FF */ addi r6, r6, -1 -/* 8034DA5C A0 04 00 1A */ lhz r0, 0x1a(r4) -/* 8034DA60 54 C4 08 3C */ slwi r4, r6, 1 -/* 8034DA64 7C 05 03 96 */ divwu r0, r5, r0 -/* 8034DA68 7F C4 02 14 */ add r30, r4, r0 -/* 8034DA6C 4B FE FC B1 */ bl OSRestoreInterrupts -/* 8034DA70 A0 1F 00 18 */ lhz r0, 0x18(r31) -/* 8034DA74 7C 1E 00 40 */ cmplw r30, r0 -/* 8034DA78 41 80 00 08 */ blt lbl_8034DA80 -/* 8034DA7C 7F C0 F0 50 */ subf r30, r0, r30 -lbl_8034DA80: -/* 8034DA80 57 C3 F8 7E */ srwi r3, r30, 1 -/* 8034DA84 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034DA88 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034DA8C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034DA90 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034DA94 7C 08 03 A6 */ mtlr r0 -/* 8034DA98 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIGetNextField.s b/asm/dolphin/vi/vi/VIGetNextField.s deleted file mode 100644 index 30d428b867..0000000000 --- a/asm/dolphin/vi/vi/VIGetNextField.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_8034D968: -/* 8034D968 7C 08 02 A6 */ mflr r0 -/* 8034D96C 90 01 00 04 */ stw r0, 4(r1) -/* 8034D970 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8034D974 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8034D978 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8034D97C 4B FE FD 79 */ bl OSDisableInterrupts -/* 8034D980 3B C3 00 00 */ addi r30, r3, 0 -/* 8034D984 38 61 00 10 */ addi r3, r1, 0x10 -/* 8034D988 38 81 00 14 */ addi r4, r1, 0x14 -/* 8034D98C 4B FF FF 39 */ bl GetCurrentDisplayPosition -/* 8034D990 80 AD 92 A8 */ lwz r5, CurrTiming(r13) -/* 8034D994 80 61 00 10 */ lwz r3, 0x10(r1) -/* 8034D998 A0 05 00 1A */ lhz r0, 0x1a(r5) -/* 8034D99C 38 63 FF FF */ addi r3, r3, -1 -/* 8034D9A0 80 81 00 14 */ lwz r4, 0x14(r1) -/* 8034D9A4 7C 63 03 96 */ divwu r3, r3, r0 -/* 8034D9A8 A0 05 00 18 */ lhz r0, 0x18(r5) -/* 8034D9AC 38 84 FF FF */ addi r4, r4, -1 -/* 8034D9B0 54 84 08 3C */ slwi r4, r4, 1 -/* 8034D9B4 7C 64 1A 14 */ add r3, r4, r3 -/* 8034D9B8 7C 03 00 40 */ cmplw r3, r0 -/* 8034D9BC 40 80 00 0C */ bge lbl_8034D9C8 -/* 8034D9C0 3B E0 00 01 */ li r31, 1 -/* 8034D9C4 48 00 00 08 */ b lbl_8034D9CC -lbl_8034D9C8: -/* 8034D9C8 3B E0 00 00 */ li r31, 0 -lbl_8034D9CC: -/* 8034D9CC 7F C3 F3 78 */ mr r3, r30 -/* 8034D9D0 4B FE FD 4D */ bl OSRestoreInterrupts -/* 8034D9D4 3C 60 80 45 */ lis r3, HorVer@ha /* 0x8044CB18@ha */ -/* 8034D9D8 38 63 CB 18 */ addi r3, r3, HorVer@l /* 0x8044CB18@l */ -/* 8034D9DC A0 03 00 0A */ lhz r0, 0xa(r3) -/* 8034D9E0 6B E3 00 01 */ xori r3, r31, 1 -/* 8034D9E4 54 00 07 FE */ clrlwi r0, r0, 0x1f -/* 8034D9E8 7C 63 02 78 */ xor r3, r3, r0 -/* 8034D9EC 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8034D9F0 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8034D9F4 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8034D9F8 38 21 00 28 */ addi r1, r1, 0x28 -/* 8034D9FC 7C 08 03 A6 */ mtlr r0 -/* 8034DA00 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIGetTvFormat.s b/asm/dolphin/vi/vi/VIGetTvFormat.s deleted file mode 100644 index 3387c89604..0000000000 --- a/asm/dolphin/vi/vi/VIGetTvFormat.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8034DA9C: -/* 8034DA9C 7C 08 02 A6 */ mflr r0 -/* 8034DAA0 90 01 00 04 */ stw r0, 4(r1) -/* 8034DAA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8034DAA8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8034DAAC 4B FE FC 49 */ bl OSDisableInterrupts -/* 8034DAB0 80 AD 92 AC */ lwz r5, CurrTvMode(r13) -/* 8034DAB4 28 05 00 07 */ cmplwi r5, 7 -/* 8034DAB8 41 81 00 30 */ bgt lbl_8034DAE8 -/* 8034DABC 3C 80 80 3D */ lis r4, lit_740@ha /* 0x803D1B24@ha */ -/* 8034DAC0 38 84 1B 24 */ addi r4, r4, lit_740@l /* 0x803D1B24@l */ -/* 8034DAC4 54 A0 10 3A */ slwi r0, r5, 2 -/* 8034DAC8 7C 04 00 2E */ lwzx r0, r4, r0 -/* 8034DACC 7C 09 03 A6 */ mtctr r0 -/* 8034DAD0 4E 80 04 20 */ bctr -/* 8034DAD4 3B E0 00 00 */ li r31, 0 -/* 8034DAD8 48 00 00 10 */ b lbl_8034DAE8 -/* 8034DADC 3B E0 00 01 */ li r31, 1 -/* 8034DAE0 48 00 00 08 */ b lbl_8034DAE8 -/* 8034DAE4 7C BF 2B 78 */ mr r31, r5 -lbl_8034DAE8: -/* 8034DAE8 4B FE FC 35 */ bl OSRestoreInterrupts -/* 8034DAEC 7F E3 FB 78 */ mr r3, r31 -/* 8034DAF0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8034DAF4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8034DAF8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8034DAFC 7C 08 03 A6 */ mtlr r0 -/* 8034DB00 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/VIInit.s b/asm/dolphin/vi/vi/VIInit.s deleted file mode 100644 index 21985e3dfc..0000000000 --- a/asm/dolphin/vi/vi/VIInit.s +++ /dev/null @@ -1,323 +0,0 @@ -lbl_8034C514: -/* 8034C514 7C 08 02 A6 */ mflr r0 -/* 8034C518 3C 80 80 3D */ lis r4, lit_1@ha /* 0x803D1760@ha */ -/* 8034C51C 90 01 00 04 */ stw r0, 4(r1) -/* 8034C520 3C 60 80 45 */ lis r3, regs@ha /* 0x8044CA28@ha */ -/* 8034C524 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034C528 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034C52C 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034C530 3B C3 CA 28 */ addi r30, r3, regs@l /* 0x8044CA28@l */ -/* 8034C534 93 A1 00 0C */ stw r29, 0xc(r1) -/* 8034C538 3B A4 17 60 */ addi r29, r4, lit_1@l /* 0x803D1760@l */ -/* 8034C53C 93 81 00 08 */ stw r28, 8(r1) -/* 8034C540 80 0D 92 60 */ lwz r0, IsInitialized(r13) -/* 8034C544 2C 00 00 00 */ cmpwi r0, 0 -/* 8034C548 40 82 04 5C */ bne lbl_8034C9A4 -/* 8034C54C 80 6D 84 90 */ lwz r3, __VIVersion(r13) -/* 8034C550 4B FE E3 25 */ bl OSRegisterVersion -/* 8034C554 38 00 00 01 */ li r0, 1 -/* 8034C558 90 0D 92 60 */ stw r0, IsInitialized(r13) -/* 8034C55C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8034C560 3B 83 20 00 */ addi r28, r3, 0x2000 /* 0xCC002000@l */ -/* 8034C564 90 0D 92 80 */ stw r0, encoderType(r13) -/* 8034C568 A4 1C 00 02 */ lhzu r0, 2(r28) -/* 8034C56C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8034C570 40 82 00 0C */ bne lbl_8034C57C -/* 8034C574 38 60 00 00 */ li r3, 0 -/* 8034C578 4B FF FD 99 */ bl __VIInit -lbl_8034C57C: -/* 8034C57C 3B E0 00 00 */ li r31, 0 -/* 8034C580 93 ED 92 64 */ stw r31, retraceCount(r13) -/* 8034C584 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8034C588 38 63 20 00 */ addi r3, r3, 0x2000 /* 0xCC002000@l */ -/* 8034C58C 93 ED 92 94 */ stw r31, data_80451814(r13) -/* 8034C590 38 00 02 80 */ li r0, 0x280 -/* 8034C594 93 ED 92 90 */ stw r31, changed(r13) -/* 8034C598 93 ED 92 A4 */ stw r31, data_80451824(r13) -/* 8034C59C 93 ED 92 A0 */ stw r31, shdwChanged(r13) -/* 8034C5A0 93 ED 92 88 */ stw r31, changeMode(r13) -/* 8034C5A4 93 ED 92 98 */ stw r31, shdwChangeMode(r13) -/* 8034C5A8 93 ED 92 68 */ stw r31, flushFlag(r13) -/* 8034C5AC A0 BD 01 C2 */ lhz r5, 0x1c2(r29) -/* 8034C5B0 A0 DD 01 C0 */ lhz r6, 0x1c0(r29) -/* 8034C5B4 54 A5 54 2A */ rlwinm r5, r5, 0xa, 0x10, 0x15 -/* 8034C5B8 7C C5 2B 78 */ or r5, r6, r5 -/* 8034C5BC B0 A3 00 4E */ sth r5, 0x4e(r3) -/* 8034C5C0 A0 DD 01 C2 */ lhz r6, 0x1c2(r29) -/* 8034C5C4 A0 BD 01 C4 */ lhz r5, 0x1c4(r29) -/* 8034C5C8 7C C6 36 70 */ srawi r6, r6, 6 -/* 8034C5CC 54 A5 20 36 */ slwi r5, r5, 4 -/* 8034C5D0 7C C5 2B 78 */ or r5, r6, r5 -/* 8034C5D4 B0 A3 00 4C */ sth r5, 0x4c(r3) -/* 8034C5D8 A0 BD 01 C8 */ lhz r5, 0x1c8(r29) -/* 8034C5DC A0 DD 01 C6 */ lhz r6, 0x1c6(r29) -/* 8034C5E0 54 A5 54 2A */ rlwinm r5, r5, 0xa, 0x10, 0x15 -/* 8034C5E4 7C C5 2B 78 */ or r5, r6, r5 -/* 8034C5E8 B0 A3 00 52 */ sth r5, 0x52(r3) -/* 8034C5EC A0 DD 01 C8 */ lhz r6, 0x1c8(r29) -/* 8034C5F0 A0 BD 01 CA */ lhz r5, 0x1ca(r29) -/* 8034C5F4 7C C6 36 70 */ srawi r6, r6, 6 -/* 8034C5F8 54 A5 20 36 */ slwi r5, r5, 4 -/* 8034C5FC 7C C5 2B 78 */ or r5, r6, r5 -/* 8034C600 B0 A3 00 50 */ sth r5, 0x50(r3) -/* 8034C604 A0 BD 01 CE */ lhz r5, 0x1ce(r29) -/* 8034C608 A0 DD 01 CC */ lhz r6, 0x1cc(r29) -/* 8034C60C 54 A5 54 2A */ rlwinm r5, r5, 0xa, 0x10, 0x15 -/* 8034C610 7C C5 2B 78 */ or r5, r6, r5 -/* 8034C614 B0 A3 00 56 */ sth r5, 0x56(r3) -/* 8034C618 A0 BD 01 CE */ lhz r5, 0x1ce(r29) -/* 8034C61C A0 9D 01 D0 */ lhz r4, 0x1d0(r29) -/* 8034C620 7C A5 36 70 */ srawi r5, r5, 6 -/* 8034C624 54 84 20 36 */ slwi r4, r4, 4 -/* 8034C628 7C A4 23 78 */ or r4, r5, r4 -/* 8034C62C B0 83 00 54 */ sth r4, 0x54(r3) -/* 8034C630 A0 9D 01 D4 */ lhz r4, 0x1d4(r29) -/* 8034C634 A0 BD 01 D2 */ lhz r5, 0x1d2(r29) -/* 8034C638 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C63C 7C A4 23 78 */ or r4, r5, r4 -/* 8034C640 B0 83 00 5A */ sth r4, 0x5a(r3) -/* 8034C644 A0 9D 01 D8 */ lhz r4, 0x1d8(r29) -/* 8034C648 A0 BD 01 D6 */ lhz r5, 0x1d6(r29) -/* 8034C64C 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C650 7C A4 23 78 */ or r4, r5, r4 -/* 8034C654 B0 83 00 58 */ sth r4, 0x58(r3) -/* 8034C658 A0 9D 01 DC */ lhz r4, 0x1dc(r29) -/* 8034C65C A0 BD 01 DA */ lhz r5, 0x1da(r29) -/* 8034C660 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C664 7C A4 23 78 */ or r4, r5, r4 -/* 8034C668 B0 83 00 5E */ sth r4, 0x5e(r3) -/* 8034C66C A0 9D 01 E0 */ lhz r4, 0x1e0(r29) -/* 8034C670 A0 BD 01 DE */ lhz r5, 0x1de(r29) -/* 8034C674 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C678 7C A4 23 78 */ or r4, r5, r4 -/* 8034C67C B0 83 00 5C */ sth r4, 0x5c(r3) -/* 8034C680 A0 9D 01 E4 */ lhz r4, 0x1e4(r29) -/* 8034C684 A0 BD 01 E2 */ lhz r5, 0x1e2(r29) -/* 8034C688 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C68C 7C A4 23 78 */ or r4, r5, r4 -/* 8034C690 B0 83 00 62 */ sth r4, 0x62(r3) -/* 8034C694 A0 9D 01 E8 */ lhz r4, 0x1e8(r29) -/* 8034C698 A0 BD 01 E6 */ lhz r5, 0x1e6(r29) -/* 8034C69C 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C6A0 7C A4 23 78 */ or r4, r5, r4 -/* 8034C6A4 B0 83 00 60 */ sth r4, 0x60(r3) -/* 8034C6A8 A0 9D 01 EC */ lhz r4, 0x1ec(r29) -/* 8034C6AC A0 BD 01 EA */ lhz r5, 0x1ea(r29) -/* 8034C6B0 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C6B4 7C A4 23 78 */ or r4, r5, r4 -/* 8034C6B8 B0 83 00 66 */ sth r4, 0x66(r3) -/* 8034C6BC A0 9D 01 F0 */ lhz r4, 0x1f0(r29) -/* 8034C6C0 A0 BD 01 EE */ lhz r5, 0x1ee(r29) -/* 8034C6C4 54 84 40 2E */ slwi r4, r4, 8 -/* 8034C6C8 7C A4 23 78 */ or r4, r5, r4 -/* 8034C6CC B0 83 00 64 */ sth r4, 0x64(r3) -/* 8034C6D0 B0 03 00 70 */ sth r0, 0x70(r3) -/* 8034C6D4 4B FF 3A 71 */ bl __OSLockSram -/* 8034C6D8 88 03 00 10 */ lbz r0, 0x10(r3) -/* 8034C6DC 38 60 00 00 */ li r3, 0 -/* 8034C6E0 7C 00 07 74 */ extsb r0, r0 -/* 8034C6E4 B3 ED 92 86 */ sth r31, struct_80451804+0x2(r13) -/* 8034C6E8 B0 0D 92 84 */ sth r0, struct_80451804+0x0(r13) -/* 8034C6EC 4B FF 3E 4D */ bl __OSUnlockSram -/* 8034C6F0 A3 BC 00 00 */ lhz r29, 0(r28) -/* 8034C6F4 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000CC@ha */ -/* 8034C6F8 80 63 00 CC */ lwz r3, 0x00CC(r3) /* 0x800000CC@l */ -/* 8034C6FC 38 9E 01 14 */ addi r4, r30, 0x114 -/* 8034C700 57 A0 F7 FE */ rlwinm r0, r29, 0x1e, 0x1f, 0x1f -/* 8034C704 90 1E 01 14 */ stw r0, 0x114(r30) -/* 8034C708 57 A0 C7 BE */ rlwinm r0, r29, 0x18, 0x1e, 0x1f -/* 8034C70C 28 03 00 01 */ cmplwi r3, 1 -/* 8034C710 90 1E 01 18 */ stw r0, 0x118(r30) -/* 8034C714 3B 9E 01 18 */ addi r28, r30, 0x118 -/* 8034C718 40 82 00 18 */ bne lbl_8034C730 -/* 8034C71C 80 1C 00 00 */ lwz r0, 0(r28) -/* 8034C720 28 00 00 00 */ cmplwi r0, 0 -/* 8034C724 40 82 00 0C */ bne lbl_8034C730 -/* 8034C728 38 00 00 05 */ li r0, 5 -/* 8034C72C 90 1C 00 00 */ stw r0, 0(r28) -lbl_8034C730: -/* 8034C730 80 7C 00 00 */ lwz r3, 0(r28) -/* 8034C734 28 03 00 03 */ cmplwi r3, 3 -/* 8034C738 40 82 00 08 */ bne lbl_8034C740 -/* 8034C73C 38 60 00 00 */ li r3, 0 -lbl_8034C740: -/* 8034C740 80 04 00 00 */ lwz r0, 0(r4) -/* 8034C744 54 63 10 3A */ slwi r3, r3, 2 -/* 8034C748 7C 63 02 14 */ add r3, r3, r0 -/* 8034C74C 4B FF FB 1D */ bl getTiming -/* 8034C750 90 7E 01 44 */ stw r3, 0x144(r30) -/* 8034C754 38 9E 01 44 */ addi r4, r30, 0x144 -/* 8034C758 38 00 02 80 */ li r0, 0x280 -/* 8034C75C B3 BE 00 02 */ sth r29, 2(r30) -/* 8034C760 39 00 00 00 */ li r8, 0 -/* 8034C764 38 DE 00 F6 */ addi r6, r30, 0xf6 -/* 8034C768 80 84 00 00 */ lwz r4, 0(r4) -/* 8034C76C 38 7E 00 F2 */ addi r3, r30, 0xf2 -/* 8034C770 90 8D 92 A8 */ stw r4, CurrTiming(r13) -/* 8034C774 80 9C 00 00 */ lwz r4, 0(r28) -/* 8034C778 90 8D 92 AC */ stw r4, CurrTvMode(r13) -/* 8034C77C B0 1E 00 F4 */ sth r0, 0xf4(r30) -/* 8034C780 80 8D 92 A8 */ lwz r4, CurrTiming(r13) -/* 8034C784 A4 04 00 02 */ lhzu r0, 2(r4) -/* 8034C788 54 00 0C 3C */ rlwinm r0, r0, 1, 0x10, 0x1e -/* 8034C78C B0 1E 00 F6 */ sth r0, 0xf6(r30) -/* 8034C790 A0 1E 00 F4 */ lhz r0, 0xf4(r30) -/* 8034C794 20 00 02 D0 */ subfic r0, r0, 0x2d0 -/* 8034C798 7C 00 0E 70 */ srawi r0, r0, 1 -/* 8034C79C 7C 00 01 94 */ addze r0, r0 -/* 8034C7A0 B0 1E 00 F0 */ sth r0, 0xf0(r30) -/* 8034C7A4 B1 1E 00 F2 */ sth r8, 0xf2(r30) -/* 8034C7A8 A0 1E 00 F4 */ lhz r0, 0xf4(r30) -/* 8034C7AC A8 FE 00 F0 */ lha r7, 0xf0(r30) -/* 8034C7B0 A8 AD 92 84 */ lha r5, struct_80451804+0x0(r13) -/* 8034C7B4 20 00 02 D0 */ subfic r0, r0, 0x2d0 -/* 8034C7B8 A1 24 00 00 */ lhz r9, 0(r4) -/* 8034C7BC 7C A7 2A 14 */ add r5, r7, r5 -/* 8034C7C0 7C 05 00 00 */ cmpw r5, r0 -/* 8034C7C4 40 81 00 08 */ ble lbl_8034C7CC -/* 8034C7C8 48 00 00 18 */ b lbl_8034C7E0 -lbl_8034C7CC: -/* 8034C7CC 2C 05 00 00 */ cmpwi r5, 0 -/* 8034C7D0 40 80 00 08 */ bge lbl_8034C7D8 -/* 8034C7D4 48 00 00 08 */ b lbl_8034C7DC -lbl_8034C7D8: -/* 8034C7D8 7C A8 2B 78 */ mr r8, r5 -lbl_8034C7DC: -/* 8034C7DC 7D 00 43 78 */ mr r0, r8 -lbl_8034C7E0: -/* 8034C7E0 B0 1E 00 F8 */ sth r0, 0xf8(r30) -/* 8034C7E4 39 1E 01 10 */ addi r8, r30, 0x110 -/* 8034C7E8 80 1E 01 10 */ lwz r0, 0x110(r30) -/* 8034C7EC 2C 00 00 00 */ cmpwi r0, 0 -/* 8034C7F0 40 82 00 0C */ bne lbl_8034C7FC -/* 8034C7F4 39 60 00 02 */ li r11, 2 -/* 8034C7F8 48 00 00 08 */ b lbl_8034C800 -lbl_8034C7FC: -/* 8034C7FC 39 60 00 01 */ li r11, 1 -lbl_8034C800: -/* 8034C800 A0 03 00 00 */ lhz r0, 0(r3) -/* 8034C804 A8 AD 92 86 */ lha r5, struct_80451804+0x2(r13) -/* 8034C808 7C 07 07 34 */ extsh r7, r0 -/* 8034C80C 54 00 07 FE */ clrlwi r0, r0, 0x1f -/* 8034C810 7C E7 2A 14 */ add r7, r7, r5 -/* 8034C814 7C 07 00 00 */ cmpw r7, r0 -/* 8034C818 40 81 00 08 */ ble lbl_8034C820 -/* 8034C81C 48 00 00 08 */ b lbl_8034C824 -lbl_8034C820: -/* 8034C820 7C 07 03 78 */ mr r7, r0 -lbl_8034C824: -/* 8034C824 B0 FE 00 FA */ sth r7, 0xfa(r30) -/* 8034C828 7D 27 07 34 */ extsh r7, r9 -/* 8034C82C 54 E7 08 3C */ slwi r7, r7, 1 -/* 8034C830 A3 86 00 00 */ lhz r28, 0(r6) -/* 8034C834 7D 80 38 50 */ subf r12, r0, r7 -/* 8034C838 A9 43 00 00 */ lha r10, 0(r3) -/* 8034C83C 7F 87 07 34 */ extsh r7, r28 -/* 8034C840 7D 27 2A 14 */ add r9, r7, r5 -/* 8034C844 7D 2A 4A 14 */ add r9, r10, r9 -/* 8034C848 7C EC 48 51 */ subf. r7, r12, r9 -/* 8034C84C 40 81 00 0C */ ble lbl_8034C858 -/* 8034C850 7D 2C 48 50 */ subf r9, r12, r9 -/* 8034C854 48 00 00 08 */ b lbl_8034C85C -lbl_8034C858: -/* 8034C858 39 20 00 00 */ li r9, 0 -lbl_8034C85C: -/* 8034C85C 7D 4A 2A 14 */ add r10, r10, r5 -/* 8034C860 7C E0 50 51 */ subf. r7, r0, r10 -/* 8034C864 40 80 00 0C */ bge lbl_8034C870 -/* 8034C868 7C E0 50 50 */ subf r7, r0, r10 -/* 8034C86C 48 00 00 08 */ b lbl_8034C874 -lbl_8034C870: -/* 8034C870 38 E0 00 00 */ li r7, 0 -lbl_8034C874: -/* 8034C874 7C FC 3A 14 */ add r7, r28, r7 -/* 8034C878 7C E9 38 50 */ subf r7, r9, r7 -/* 8034C87C B0 FE 00 FC */ sth r7, 0xfc(r30) -/* 8034C880 A8 E3 00 00 */ lha r7, 0(r3) -/* 8034C884 7D 27 2A 14 */ add r9, r7, r5 -/* 8034C888 7C E0 48 51 */ subf. r7, r0, r9 -/* 8034C88C 40 80 00 0C */ bge lbl_8034C898 -/* 8034C890 7C E0 48 50 */ subf r7, r0, r9 -/* 8034C894 48 00 00 08 */ b lbl_8034C89C -lbl_8034C898: -/* 8034C898 38 E0 00 00 */ li r7, 0 -lbl_8034C89C: -/* 8034C89C 7D 47 5B D6 */ divw r10, r7, r11 -/* 8034C8A0 38 FE 01 08 */ addi r7, r30, 0x108 -/* 8034C8A4 A1 3E 01 08 */ lhz r9, 0x108(r30) -/* 8034C8A8 7D 2A 48 50 */ subf r9, r10, r9 -/* 8034C8AC B1 3E 00 FE */ sth r9, 0xfe(r30) -/* 8034C8B0 A8 C6 00 00 */ lha r6, 0(r6) -/* 8034C8B4 A9 23 00 00 */ lha r9, 0(r3) -/* 8034C8B8 7C C6 2A 14 */ add r6, r6, r5 -/* 8034C8BC 7C C9 32 14 */ add r6, r9, r6 -/* 8034C8C0 7C 6C 30 51 */ subf. r3, r12, r6 -/* 8034C8C4 40 81 00 0C */ ble lbl_8034C8D0 -/* 8034C8C8 7C CC 30 50 */ subf r6, r12, r6 -/* 8034C8CC 48 00 00 08 */ b lbl_8034C8D4 -lbl_8034C8D0: -/* 8034C8D0 38 C0 00 00 */ li r6, 0 -lbl_8034C8D4: -/* 8034C8D4 7C A9 2A 14 */ add r5, r9, r5 -/* 8034C8D8 7C 60 28 51 */ subf. r3, r0, r5 -/* 8034C8DC 40 80 00 0C */ bge lbl_8034C8E8 -/* 8034C8E0 7C 00 28 50 */ subf r0, r0, r5 -/* 8034C8E4 48 00 00 08 */ b lbl_8034C8EC -lbl_8034C8E8: -/* 8034C8E8 38 00 00 00 */ li r0, 0 -lbl_8034C8EC: -/* 8034C8EC 7C 00 5B D6 */ divw r0, r0, r11 -/* 8034C8F0 A0 7E 01 0C */ lhz r3, 0x10c(r30) -/* 8034C8F4 7C 03 02 14 */ add r0, r3, r0 -/* 8034C8F8 7C A6 5B D6 */ divw r5, r6, r11 -/* 8034C8FC 7C 05 00 50 */ subf r0, r5, r0 -/* 8034C900 B0 1E 01 00 */ sth r0, 0x100(r30) -/* 8034C904 39 20 02 80 */ li r9, 0x280 -/* 8034C908 3B 80 00 00 */ li r28, 0 -/* 8034C90C B1 3E 01 02 */ sth r9, 0x102(r30) -/* 8034C910 38 A0 00 28 */ li r5, 0x28 -/* 8034C914 38 00 00 01 */ li r0, 1 -/* 8034C918 A0 C4 00 00 */ lhz r6, 0(r4) -/* 8034C91C 38 6D 92 6C */ la r3, retraceQueue(r13) /* 804517EC-_SDA_BASE_ */ -/* 8034C920 54 C6 0C 3C */ rlwinm r6, r6, 1, 0x10, 0x1e -/* 8034C924 B0 DE 01 04 */ sth r6, 0x104(r30) -/* 8034C928 B3 9E 01 06 */ sth r28, 0x106(r30) -/* 8034C92C B3 87 00 00 */ sth r28, 0(r7) -/* 8034C930 B1 3E 01 0A */ sth r9, 0x10a(r30) -/* 8034C934 A0 84 00 00 */ lhz r4, 0(r4) -/* 8034C938 54 84 0C 3C */ rlwinm r4, r4, 1, 0x10, 0x1e -/* 8034C93C B0 9E 01 0C */ sth r4, 0x10c(r30) -/* 8034C940 93 88 00 00 */ stw r28, 0(r8) -/* 8034C944 98 BE 01 1C */ stb r5, 0x11c(r30) -/* 8034C948 98 BE 01 1D */ stb r5, 0x11d(r30) -/* 8034C94C 98 BE 01 1E */ stb r5, 0x11e(r30) -/* 8034C950 9B 9E 01 2C */ stb r28, 0x12c(r30) -/* 8034C954 90 1E 01 30 */ stw r0, 0x130(r30) -/* 8034C958 93 9E 01 34 */ stw r28, 0x134(r30) -/* 8034C95C 4B FF 43 19 */ bl OSInitThreadQueue -/* 8034C960 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002030@ha */ -/* 8034C964 A0 03 20 30 */ lhz r0, 0x2030(r3) /* 0xCC002030@l */ -/* 8034C968 38 83 20 00 */ addi r4, r3, 0x2000 -/* 8034C96C 38 A3 20 00 */ addi r5, r3, 0x2000 -/* 8034C970 54 00 04 7E */ clrlwi r0, r0, 0x11 -/* 8034C974 B0 04 00 30 */ sth r0, 0x30(r4) -/* 8034C978 3C 60 80 35 */ lis r3, __VIRetraceHandler@ha /* 0x8034BF6C@ha */ -/* 8034C97C 38 83 BF 6C */ addi r4, r3, __VIRetraceHandler@l /* 0x8034BF6C@l */ -/* 8034C980 A0 05 00 34 */ lhz r0, 0x34(r5) -/* 8034C984 38 60 00 18 */ li r3, 0x18 -/* 8034C988 54 00 04 7E */ clrlwi r0, r0, 0x11 -/* 8034C98C B0 05 00 34 */ sth r0, 0x34(r5) -/* 8034C990 93 8D 92 74 */ stw r28, PreCB(r13) -/* 8034C994 93 8D 92 78 */ stw r28, PostCB(r13) -/* 8034C998 4B FF 0D A9 */ bl __OSSetInterruptHandler -/* 8034C99C 38 60 00 80 */ li r3, 0x80 -/* 8034C9A0 4B FF 11 A5 */ bl __OSUnmaskInterrupts -lbl_8034C9A4: -/* 8034C9A4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034C9A8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034C9AC 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034C9B0 83 A1 00 0C */ lwz r29, 0xc(r1) -/* 8034C9B4 83 81 00 08 */ lwz r28, 8(r1) -/* 8034C9B8 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034C9BC 7C 08 03 A6 */ mtlr r0 -/* 8034C9C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/__VIDisplayPositionToXY.s b/asm/dolphin/vi/vi/__VIDisplayPositionToXY.s deleted file mode 100644 index 2f79f0b60c..0000000000 --- a/asm/dolphin/vi/vi/__VIDisplayPositionToXY.s +++ /dev/null @@ -1,152 +0,0 @@ -lbl_8034DB40: -/* 8034DB40 81 2D 92 A8 */ lwz r9, CurrTiming(r13) -/* 8034DB44 3C E0 80 45 */ lis r7, HorVer@ha /* 0x8044CB18@ha */ -/* 8034DB48 38 E7 CB 18 */ addi r7, r7, HorVer@l /* 0x8044CB18@l */ -/* 8034DB4C A0 09 00 1A */ lhz r0, 0x1a(r9) -/* 8034DB50 39 03 FF FF */ addi r8, r3, -1 -/* 8034DB54 80 E7 00 24 */ lwz r7, 0x24(r7) -/* 8034DB58 38 84 FF FF */ addi r4, r4, -1 -/* 8034DB5C 7C 08 03 96 */ divwu r0, r8, r0 -/* 8034DB60 54 84 08 3C */ slwi r4, r4, 1 -/* 8034DB64 28 07 00 00 */ cmplwi r7, 0 -/* 8034DB68 7C 04 02 14 */ add r0, r4, r0 -/* 8034DB6C 40 82 00 C0 */ bne lbl_8034DC2C -/* 8034DB70 A1 49 00 18 */ lhz r10, 0x18(r9) -/* 8034DB74 7C 00 50 40 */ cmplw r0, r10 -/* 8034DB78 40 80 00 58 */ bge lbl_8034DBD0 -/* 8034DB7C 88 89 00 00 */ lbz r4, 0(r9) -/* 8034DB80 A1 09 00 04 */ lhz r8, 4(r9) -/* 8034DB84 1C E4 00 03 */ mulli r7, r4, 3 -/* 8034DB88 7C 88 3A 14 */ add r4, r8, r7 -/* 8034DB8C 7C 00 20 40 */ cmplw r0, r4 -/* 8034DB90 40 80 00 10 */ bge lbl_8034DBA0 -/* 8034DB94 38 00 FF FF */ li r0, -1 -/* 8034DB98 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DB9C 48 00 01 B4 */ b lbl_8034DD50 -lbl_8034DBA0: -/* 8034DBA0 A0 89 00 08 */ lhz r4, 8(r9) -/* 8034DBA4 7C 84 50 50 */ subf r4, r4, r10 -/* 8034DBA8 7C 00 20 40 */ cmplw r0, r4 -/* 8034DBAC 41 80 00 10 */ blt lbl_8034DBBC -/* 8034DBB0 38 00 FF FF */ li r0, -1 -/* 8034DBB4 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DBB8 48 00 01 98 */ b lbl_8034DD50 -lbl_8034DBBC: -/* 8034DBBC 7C 07 00 50 */ subf r0, r7, r0 -/* 8034DBC0 7C 08 00 50 */ subf r0, r8, r0 -/* 8034DBC4 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034DBC8 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DBCC 48 00 01 84 */ b lbl_8034DD50 -lbl_8034DBD0: -/* 8034DBD0 88 89 00 00 */ lbz r4, 0(r9) -/* 8034DBD4 7C 0A 00 50 */ subf r0, r10, r0 -/* 8034DBD8 A1 09 00 06 */ lhz r8, 6(r9) -/* 8034DBDC 1C E4 00 03 */ mulli r7, r4, 3 -/* 8034DBE0 7C 88 3A 14 */ add r4, r8, r7 -/* 8034DBE4 7C 00 20 40 */ cmplw r0, r4 -/* 8034DBE8 40 80 00 10 */ bge lbl_8034DBF8 -/* 8034DBEC 38 00 FF FF */ li r0, -1 -/* 8034DBF0 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DBF4 48 00 01 5C */ b lbl_8034DD50 -lbl_8034DBF8: -/* 8034DBF8 A0 89 00 0A */ lhz r4, 0xa(r9) -/* 8034DBFC 7C 84 50 50 */ subf r4, r4, r10 -/* 8034DC00 7C 00 20 40 */ cmplw r0, r4 -/* 8034DC04 41 80 00 10 */ blt lbl_8034DC14 -/* 8034DC08 38 00 FF FF */ li r0, -1 -/* 8034DC0C B0 06 00 00 */ sth r0, 0(r6) -/* 8034DC10 48 00 01 40 */ b lbl_8034DD50 -lbl_8034DC14: -/* 8034DC14 7C 07 00 50 */ subf r0, r7, r0 -/* 8034DC18 7C 08 00 50 */ subf r0, r8, r0 -/* 8034DC1C 54 04 00 3C */ rlwinm r4, r0, 0, 0, 0x1e -/* 8034DC20 38 04 00 01 */ addi r0, r4, 1 -/* 8034DC24 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DC28 48 00 01 28 */ b lbl_8034DD50 -lbl_8034DC2C: -/* 8034DC2C 28 07 00 01 */ cmplwi r7, 1 -/* 8034DC30 40 82 00 68 */ bne lbl_8034DC98 -/* 8034DC34 A0 E9 00 18 */ lhz r7, 0x18(r9) -/* 8034DC38 7C 00 38 40 */ cmplw r0, r7 -/* 8034DC3C 41 80 00 08 */ blt lbl_8034DC44 -/* 8034DC40 7C 07 00 50 */ subf r0, r7, r0 -lbl_8034DC44: -/* 8034DC44 88 89 00 00 */ lbz r4, 0(r9) -/* 8034DC48 A1 49 00 04 */ lhz r10, 4(r9) -/* 8034DC4C 1D 04 00 03 */ mulli r8, r4, 3 -/* 8034DC50 7C 8A 42 14 */ add r4, r10, r8 -/* 8034DC54 7C 00 20 40 */ cmplw r0, r4 -/* 8034DC58 40 80 00 10 */ bge lbl_8034DC68 -/* 8034DC5C 38 00 FF FF */ li r0, -1 -/* 8034DC60 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DC64 48 00 00 EC */ b lbl_8034DD50 -lbl_8034DC68: -/* 8034DC68 A0 89 00 08 */ lhz r4, 8(r9) -/* 8034DC6C 7C 84 38 50 */ subf r4, r4, r7 -/* 8034DC70 7C 00 20 40 */ cmplw r0, r4 -/* 8034DC74 41 80 00 10 */ blt lbl_8034DC84 -/* 8034DC78 38 00 FF FF */ li r0, -1 -/* 8034DC7C B0 06 00 00 */ sth r0, 0(r6) -/* 8034DC80 48 00 00 D0 */ b lbl_8034DD50 -lbl_8034DC84: -/* 8034DC84 7C 08 00 50 */ subf r0, r8, r0 -/* 8034DC88 7C 0A 00 50 */ subf r0, r10, r0 -/* 8034DC8C 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034DC90 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DC94 48 00 00 BC */ b lbl_8034DD50 -lbl_8034DC98: -/* 8034DC98 28 07 00 02 */ cmplwi r7, 2 -/* 8034DC9C 40 82 00 B4 */ bne lbl_8034DD50 -/* 8034DCA0 A1 49 00 18 */ lhz r10, 0x18(r9) -/* 8034DCA4 7C 00 50 40 */ cmplw r0, r10 -/* 8034DCA8 40 80 00 54 */ bge lbl_8034DCFC -/* 8034DCAC 88 89 00 00 */ lbz r4, 0(r9) -/* 8034DCB0 A1 09 00 04 */ lhz r8, 4(r9) -/* 8034DCB4 1C E4 00 03 */ mulli r7, r4, 3 -/* 8034DCB8 7C 88 3A 14 */ add r4, r8, r7 -/* 8034DCBC 7C 00 20 40 */ cmplw r0, r4 -/* 8034DCC0 40 80 00 10 */ bge lbl_8034DCD0 -/* 8034DCC4 38 00 FF FF */ li r0, -1 -/* 8034DCC8 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DCCC 48 00 00 84 */ b lbl_8034DD50 -lbl_8034DCD0: -/* 8034DCD0 A0 89 00 08 */ lhz r4, 8(r9) -/* 8034DCD4 7C 84 50 50 */ subf r4, r4, r10 -/* 8034DCD8 7C 00 20 40 */ cmplw r0, r4 -/* 8034DCDC 41 80 00 10 */ blt lbl_8034DCEC -/* 8034DCE0 38 00 FF FF */ li r0, -1 -/* 8034DCE4 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DCE8 48 00 00 68 */ b lbl_8034DD50 -lbl_8034DCEC: -/* 8034DCEC 7C 07 00 50 */ subf r0, r7, r0 -/* 8034DCF0 7C 08 00 50 */ subf r0, r8, r0 -/* 8034DCF4 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DCF8 48 00 00 58 */ b lbl_8034DD50 -lbl_8034DCFC: -/* 8034DCFC 88 89 00 00 */ lbz r4, 0(r9) -/* 8034DD00 7C 0A 00 50 */ subf r0, r10, r0 -/* 8034DD04 A1 09 00 06 */ lhz r8, 6(r9) -/* 8034DD08 1C E4 00 03 */ mulli r7, r4, 3 -/* 8034DD0C 7C 88 3A 14 */ add r4, r8, r7 -/* 8034DD10 7C 00 20 40 */ cmplw r0, r4 -/* 8034DD14 40 80 00 10 */ bge lbl_8034DD24 -/* 8034DD18 38 00 FF FF */ li r0, -1 -/* 8034DD1C B0 06 00 00 */ sth r0, 0(r6) -/* 8034DD20 48 00 00 30 */ b lbl_8034DD50 -lbl_8034DD24: -/* 8034DD24 A0 89 00 0A */ lhz r4, 0xa(r9) -/* 8034DD28 7C 84 50 50 */ subf r4, r4, r10 -/* 8034DD2C 7C 00 20 40 */ cmplw r0, r4 -/* 8034DD30 41 80 00 10 */ blt lbl_8034DD40 -/* 8034DD34 38 00 FF FF */ li r0, -1 -/* 8034DD38 B0 06 00 00 */ sth r0, 0(r6) -/* 8034DD3C 48 00 00 14 */ b lbl_8034DD50 -lbl_8034DD40: -/* 8034DD40 7C 07 00 50 */ subf r0, r7, r0 -/* 8034DD44 7C 08 00 50 */ subf r0, r8, r0 -/* 8034DD48 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034DD4C B0 06 00 00 */ sth r0, 0(r6) -lbl_8034DD50: -/* 8034DD50 38 03 FF FF */ addi r0, r3, -1 -/* 8034DD54 B0 05 00 00 */ sth r0, 0(r5) -/* 8034DD58 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/__VIGetCurrentPosition.s b/asm/dolphin/vi/vi/__VIGetCurrentPosition.s deleted file mode 100644 index 46447e9bf8..0000000000 --- a/asm/dolphin/vi/vi/__VIGetCurrentPosition.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8034DD5C: -/* 8034DD5C 7C 08 02 A6 */ mflr r0 -/* 8034DD60 3C E0 CC 00 */ lis r7, 0xCC00 /* 0xCC002000@ha */ -/* 8034DD64 90 01 00 04 */ stw r0, 4(r1) -/* 8034DD68 38 C4 00 00 */ addi r6, r4, 0 -/* 8034DD6C 39 27 20 00 */ addi r9, r7, 0x2000 /* 0xCC002000@l */ -/* 8034DD70 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034DD74 38 A3 00 00 */ addi r5, r3, 0 -/* 8034DD78 38 87 20 00 */ addi r4, r7, 0x2000 -/* 8034DD7C A4 09 00 2C */ lhzu r0, 0x2c(r9) -/* 8034DD80 54 08 05 7E */ clrlwi r8, r0, 0x15 -lbl_8034DD84: -/* 8034DD84 A0 09 00 00 */ lhz r0, 0(r9) -/* 8034DD88 7D 07 43 78 */ mr r7, r8 -/* 8034DD8C A0 64 00 2E */ lhz r3, 0x2e(r4) -/* 8034DD90 54 08 05 7E */ clrlwi r8, r0, 0x15 -/* 8034DD94 7C 07 40 40 */ cmplw r7, r8 -/* 8034DD98 54 60 05 7E */ clrlwi r0, r3, 0x15 -/* 8034DD9C 40 82 FF E8 */ bne lbl_8034DD84 -/* 8034DDA0 7C 03 03 78 */ mr r3, r0 -/* 8034DDA4 38 88 00 00 */ addi r4, r8, 0 -/* 8034DDA8 4B FF FD 99 */ bl __VIDisplayPositionToXY -/* 8034DDAC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034DDB0 38 21 00 08 */ addi r1, r1, 8 -/* 8034DDB4 7C 08 03 A6 */ mtlr r0 -/* 8034DDB8 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/__VIRetraceHandler.s b/asm/dolphin/vi/vi/__VIRetraceHandler.s deleted file mode 100644 index 11007b8171..0000000000 --- a/asm/dolphin/vi/vi/__VIRetraceHandler.s +++ /dev/null @@ -1,176 +0,0 @@ -lbl_8034BF6C: -/* 8034BF6C 7C 08 02 A6 */ mflr r0 -/* 8034BF70 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8034BF74 90 01 00 04 */ stw r0, 4(r1) -/* 8034BF78 38 A3 20 00 */ addi r5, r3, 0x2000 /* 0xCC002000@l */ -/* 8034BF7C 3C 60 80 45 */ lis r3, regs@ha /* 0x8044CA28@ha */ -/* 8034BF80 94 21 FD 08 */ stwu r1, -0x2f8(r1) -/* 8034BF84 38 E0 00 00 */ li r7, 0 -/* 8034BF88 BF 61 02 E4 */ stmw r27, 0x2e4(r1) -/* 8034BF8C 3B C4 00 00 */ addi r30, r4, 0 -/* 8034BF90 3B E3 CA 28 */ addi r31, r3, regs@l /* 0x8044CA28@l */ -/* 8034BF94 A4 C5 00 30 */ lhzu r6, 0x30(r5) -/* 8034BF98 54 C0 04 21 */ rlwinm. r0, r6, 0, 0x10, 0x10 -/* 8034BF9C 41 82 00 10 */ beq lbl_8034BFAC -/* 8034BFA0 54 C0 04 5E */ rlwinm r0, r6, 0, 0x11, 0xf -/* 8034BFA4 B0 05 00 00 */ sth r0, 0(r5) -/* 8034BFA8 60 E7 00 01 */ ori r7, r7, 1 -lbl_8034BFAC: -/* 8034BFAC 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002034@ha */ -/* 8034BFB0 A4 83 20 34 */ lhzu r4, 0x2034(r3) /* 0xCC002034@l */ -/* 8034BFB4 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10 -/* 8034BFB8 41 82 00 10 */ beq lbl_8034BFC8 -/* 8034BFBC 54 80 04 5E */ rlwinm r0, r4, 0, 0x11, 0xf -/* 8034BFC0 B0 03 00 00 */ sth r0, 0(r3) -/* 8034BFC4 60 E7 00 02 */ ori r7, r7, 2 -lbl_8034BFC8: -/* 8034BFC8 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002038@ha */ -/* 8034BFCC A4 83 20 38 */ lhzu r4, 0x2038(r3) /* 0xCC002038@l */ -/* 8034BFD0 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10 -/* 8034BFD4 41 82 00 10 */ beq lbl_8034BFE4 -/* 8034BFD8 54 80 04 5E */ rlwinm r0, r4, 0, 0x11, 0xf -/* 8034BFDC B0 03 00 00 */ sth r0, 0(r3) -/* 8034BFE0 60 E7 00 04 */ ori r7, r7, 4 -lbl_8034BFE4: -/* 8034BFE4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC00203C@ha */ -/* 8034BFE8 A4 83 20 3C */ lhzu r4, 0x203C(r3) /* 0xCC00203C@l */ -/* 8034BFEC 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10 -/* 8034BFF0 41 82 00 10 */ beq lbl_8034C000 -/* 8034BFF4 54 80 04 5E */ rlwinm r0, r4, 0, 0x11, 0xf -/* 8034BFF8 B0 03 00 00 */ sth r0, 0(r3) -/* 8034BFFC 60 E7 00 08 */ ori r7, r7, 8 -lbl_8034C000: -/* 8034C000 54 E0 07 7B */ rlwinm. r0, r7, 0, 0x1d, 0x1d -/* 8034C004 40 82 00 0C */ bne lbl_8034C010 -/* 8034C008 54 E0 07 39 */ rlwinm. r0, r7, 0, 0x1c, 0x1c -/* 8034C00C 41 82 00 54 */ beq lbl_8034C060 -lbl_8034C010: -/* 8034C010 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C014 4B FE FF ED */ bl OSClearContext -/* 8034C018 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C01C 4B FE FE 1D */ bl OSSetCurrentContext -/* 8034C020 80 0D 92 7C */ lwz r0, PositionCallback(r13) -/* 8034C024 28 00 00 00 */ cmplwi r0, 0 -/* 8034C028 41 82 00 24 */ beq lbl_8034C04C -/* 8034C02C 38 61 00 16 */ addi r3, r1, 0x16 -/* 8034C030 38 81 00 14 */ addi r4, r1, 0x14 -/* 8034C034 48 00 1D 29 */ bl __VIGetCurrentPosition -/* 8034C038 81 8D 92 7C */ lwz r12, PositionCallback(r13) -/* 8034C03C A8 61 00 16 */ lha r3, 0x16(r1) -/* 8034C040 7D 88 03 A6 */ mtlr r12 -/* 8034C044 A8 81 00 14 */ lha r4, 0x14(r1) -/* 8034C048 4E 80 00 21 */ blrl -lbl_8034C04C: -/* 8034C04C 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C050 4B FE FF B1 */ bl OSClearContext -/* 8034C054 7F C3 F3 78 */ mr r3, r30 -/* 8034C058 4B FE FD E1 */ bl OSSetCurrentContext -/* 8034C05C 48 00 01 70 */ b lbl_8034C1CC -lbl_8034C060: -/* 8034C060 80 8D 92 64 */ lwz r4, retraceCount(r13) -/* 8034C064 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C068 38 04 00 01 */ addi r0, r4, 1 -/* 8034C06C 90 0D 92 64 */ stw r0, retraceCount(r13) -/* 8034C070 4B FE FF 91 */ bl OSClearContext -/* 8034C074 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C078 4B FE FD C1 */ bl OSSetCurrentContext -/* 8034C07C 81 8D 92 74 */ lwz r12, PreCB(r13) -/* 8034C080 28 0C 00 00 */ cmplwi r12, 0 -/* 8034C084 41 82 00 10 */ beq lbl_8034C094 -/* 8034C088 80 6D 92 64 */ lwz r3, retraceCount(r13) -/* 8034C08C 7D 88 03 A6 */ mtlr r12 -/* 8034C090 4E 80 00 21 */ blrl -lbl_8034C094: -/* 8034C094 80 0D 92 68 */ lwz r0, flushFlag(r13) -/* 8034C098 28 00 00 00 */ cmplwi r0, 0 -/* 8034C09C 41 82 00 F4 */ beq lbl_8034C190 -/* 8034C0A0 80 0D 92 98 */ lwz r0, shdwChangeMode(r13) -/* 8034C0A4 28 00 00 01 */ cmplwi r0, 1 -/* 8034C0A8 40 82 00 10 */ bne lbl_8034C0B8 -/* 8034C0AC 48 00 18 55 */ bl getCurrentFieldEvenOdd -/* 8034C0B0 28 03 00 00 */ cmplwi r3, 0 -/* 8034C0B4 41 82 00 C4 */ beq lbl_8034C178 -lbl_8034C0B8: -/* 8034C0B8 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8034C0BC 3B A3 20 00 */ addi r29, r3, 0x2000 /* 0xCC002000@l */ -/* 8034C0C0 48 00 00 78 */ b lbl_8034C138 -lbl_8034C0C4: -/* 8034C0C4 80 6D 92 A0 */ lwz r3, shdwChanged(r13) -/* 8034C0C8 38 A0 00 20 */ li r5, 0x20 -/* 8034C0CC 83 6D 92 A4 */ lwz r27, data_80451824(r13) -/* 8034C0D0 38 9B 00 00 */ addi r4, r27, 0 -/* 8034C0D4 48 01 65 9D */ bl __shr2u -/* 8034C0D8 7C 84 00 34 */ cntlzw r4, r4 -/* 8034C0DC 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034C0E0 38 00 FF FF */ li r0, -1 -/* 8034C0E4 7F 60 00 38 */ and r0, r27, r0 -/* 8034C0E8 40 80 00 08 */ bge lbl_8034C0F0 -/* 8034C0EC 48 00 00 0C */ b lbl_8034C0F8 -lbl_8034C0F0: -/* 8034C0F0 7C 03 00 34 */ cntlzw r3, r0 -/* 8034C0F4 38 83 00 20 */ addi r4, r3, 0x20 -lbl_8034C0F8: -/* 8034C0F8 54 86 08 3C */ slwi r6, r4, 1 -/* 8034C0FC 7C 7F 32 14 */ add r3, r31, r6 -/* 8034C100 A0 03 00 78 */ lhz r0, 0x78(r3) -/* 8034C104 20 A4 00 3F */ subfic r5, r4, 0x3f -/* 8034C108 38 60 00 00 */ li r3, 0 -/* 8034C10C 7C 1D 33 2E */ sthx r0, r29, r6 -/* 8034C110 38 80 00 01 */ li r4, 1 -/* 8034C114 48 01 65 39 */ bl __shl2i -/* 8034C118 80 0D 92 A0 */ lwz r0, shdwChanged(r13) -/* 8034C11C 7C 65 18 F8 */ nor r5, r3, r3 -/* 8034C120 7C 84 20 F8 */ nor r4, r4, r4 -/* 8034C124 80 6D 92 A4 */ lwz r3, data_80451824(r13) -/* 8034C128 7C 00 28 38 */ and r0, r0, r5 -/* 8034C12C 7C 63 20 38 */ and r3, r3, r4 -/* 8034C130 90 6D 92 A4 */ stw r3, data_80451824(r13) -/* 8034C134 90 0D 92 A0 */ stw r0, shdwChanged(r13) -lbl_8034C138: -/* 8034C138 80 0D 92 A0 */ lwz r0, shdwChanged(r13) -/* 8034C13C 38 80 00 00 */ li r4, 0 -/* 8034C140 80 6D 92 A4 */ lwz r3, data_80451824(r13) -/* 8034C144 7C 00 22 78 */ xor r0, r0, r4 -/* 8034C148 7C 63 22 78 */ xor r3, r3, r4 -/* 8034C14C 7C 60 03 79 */ or. r0, r3, r0 -/* 8034C150 40 82 FF 74 */ bne lbl_8034C0C4 -/* 8034C154 90 8D 92 98 */ stw r4, shdwChangeMode(r13) -/* 8034C158 38 80 00 01 */ li r4, 1 -/* 8034C15C 80 0D 92 B0 */ lwz r0, NextBufAddr(r13) -/* 8034C160 80 7F 01 44 */ lwz r3, 0x144(r31) -/* 8034C164 90 6D 92 A8 */ stw r3, CurrTiming(r13) -/* 8034C168 80 7F 01 18 */ lwz r3, 0x118(r31) -/* 8034C16C 90 6D 92 AC */ stw r3, CurrTvMode(r13) -/* 8034C170 90 0D 92 B4 */ stw r0, CurrBufAddr(r13) -/* 8034C174 48 00 00 08 */ b lbl_8034C17C -lbl_8034C178: -/* 8034C178 38 80 00 00 */ li r4, 0 -lbl_8034C17C: -/* 8034C17C 2C 04 00 00 */ cmpwi r4, 0 -/* 8034C180 41 82 00 10 */ beq lbl_8034C190 -/* 8034C184 38 00 00 00 */ li r0, 0 -/* 8034C188 90 0D 92 68 */ stw r0, flushFlag(r13) -/* 8034C18C 4B FF A1 E9 */ bl SIRefreshSamplingRate -lbl_8034C190: -/* 8034C190 80 0D 92 78 */ lwz r0, PostCB(r13) -/* 8034C194 28 00 00 00 */ cmplwi r0, 0 -/* 8034C198 41 82 00 1C */ beq lbl_8034C1B4 -/* 8034C19C 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C1A0 4B FE FE 61 */ bl OSClearContext -/* 8034C1A4 81 8D 92 78 */ lwz r12, PostCB(r13) -/* 8034C1A8 80 6D 92 64 */ lwz r3, retraceCount(r13) -/* 8034C1AC 7D 88 03 A6 */ mtlr r12 -/* 8034C1B0 4E 80 00 21 */ blrl -lbl_8034C1B4: -/* 8034C1B4 38 6D 92 6C */ la r3, retraceQueue(r13) /* 804517EC-_SDA_BASE_ */ -/* 8034C1B8 4B FF 5A E1 */ bl OSWakeupThread -/* 8034C1BC 38 61 00 18 */ addi r3, r1, 0x18 -/* 8034C1C0 4B FE FE 41 */ bl OSClearContext -/* 8034C1C4 7F C3 F3 78 */ mr r3, r30 -/* 8034C1C8 4B FE FC 71 */ bl OSSetCurrentContext -lbl_8034C1CC: -/* 8034C1CC BB 61 02 E4 */ lmw r27, 0x2e4(r1) -/* 8034C1D0 80 01 02 FC */ lwz r0, 0x2fc(r1) -/* 8034C1D4 38 21 02 F8 */ addi r1, r1, 0x2f8 -/* 8034C1D8 7C 08 03 A6 */ mtlr r0 -/* 8034C1DC 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s b/asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s deleted file mode 100644 index ee670d95a4..0000000000 --- a/asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_8034D900: -/* 8034D900 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8034D904 38 E3 20 00 */ addi r7, r3, 0x2000 /* 0xCC002000@l */ -/* 8034D908 A4 07 00 2C */ lhzu r0, 0x2c(r7) -/* 8034D90C 38 83 20 00 */ addi r4, r3, 0x2000 -/* 8034D910 54 05 05 7E */ clrlwi r5, r0, 0x15 -lbl_8034D914: -/* 8034D914 A0 07 00 00 */ lhz r0, 0(r7) -/* 8034D918 7C A6 2B 78 */ mr r6, r5 -/* 8034D91C A0 64 00 2E */ lhz r3, 0x2e(r4) -/* 8034D920 54 05 05 7E */ clrlwi r5, r0, 0x15 -/* 8034D924 7C 06 28 40 */ cmplw r6, r5 -/* 8034D928 54 63 05 7E */ clrlwi r3, r3, 0x15 -/* 8034D92C 40 82 FF E8 */ bne lbl_8034D914 -/* 8034D930 80 CD 92 A8 */ lwz r6, CurrTiming(r13) -/* 8034D934 38 05 FF FF */ addi r0, r5, -1 -/* 8034D938 38 83 FF FF */ addi r4, r3, -1 -/* 8034D93C A0 66 00 1A */ lhz r3, 0x1a(r6) -/* 8034D940 54 05 08 3C */ slwi r5, r0, 1 -/* 8034D944 A0 06 00 18 */ lhz r0, 0x18(r6) -/* 8034D948 7C 64 1B 96 */ divwu r3, r4, r3 -/* 8034D94C 7C 65 1A 14 */ add r3, r5, r3 -/* 8034D950 7C 03 00 40 */ cmplw r3, r0 -/* 8034D954 40 80 00 0C */ bge lbl_8034D960 -/* 8034D958 38 60 00 01 */ li r3, 1 -/* 8034D95C 4E 80 00 20 */ blr -lbl_8034D960: -/* 8034D960 38 60 00 00 */ li r3, 0 -/* 8034D964 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/getTiming.s b/asm/dolphin/vi/vi/getTiming.s deleted file mode 100644 index a8e986dcae..0000000000 --- a/asm/dolphin/vi/vi/getTiming.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_8034C268: -/* 8034C268 28 03 00 1E */ cmplwi r3, 0x1e -/* 8034C26C 3C 80 80 3D */ lis r4, lit_1@ha /* 0x803D1760@ha */ -/* 8034C270 38 A4 17 60 */ addi r5, r4, lit_1@l /* 0x803D1760@l */ -/* 8034C274 41 81 00 94 */ bgt lbl_8034C308 -/* 8034C278 3C 80 80 3D */ lis r4, lit_101@ha /* 0x803D1954@ha */ -/* 8034C27C 38 84 19 54 */ addi r4, r4, lit_101@l /* 0x803D1954@l */ -/* 8034C280 54 60 10 3A */ slwi r0, r3, 2 -/* 8034C284 7C 04 00 2E */ lwzx r0, r4, r0 -/* 8034C288 7C 09 03 A6 */ mtctr r0 -/* 8034C28C 4E 80 04 20 */ bctr -/* 8034C290 38 65 00 44 */ addi r3, r5, 0x44 -/* 8034C294 4E 80 00 20 */ blr -/* 8034C298 38 65 00 6A */ addi r3, r5, 0x6a -/* 8034C29C 4E 80 00 20 */ blr -/* 8034C2A0 38 65 00 90 */ addi r3, r5, 0x90 -/* 8034C2A4 4E 80 00 20 */ blr -/* 8034C2A8 38 65 00 B6 */ addi r3, r5, 0xb6 -/* 8034C2AC 4E 80 00 20 */ blr -/* 8034C2B0 38 65 00 44 */ addi r3, r5, 0x44 -/* 8034C2B4 4E 80 00 20 */ blr -/* 8034C2B8 38 65 00 6A */ addi r3, r5, 0x6a -/* 8034C2BC 4E 80 00 20 */ blr -/* 8034C2C0 38 65 00 DC */ addi r3, r5, 0xdc -/* 8034C2C4 4E 80 00 20 */ blr -/* 8034C2C8 38 65 01 02 */ addi r3, r5, 0x102 -/* 8034C2CC 4E 80 00 20 */ blr -/* 8034C2D0 38 65 01 28 */ addi r3, r5, 0x128 -/* 8034C2D4 4E 80 00 20 */ blr -/* 8034C2D8 38 65 01 4E */ addi r3, r5, 0x14e -/* 8034C2DC 4E 80 00 20 */ blr -/* 8034C2E0 38 65 00 90 */ addi r3, r5, 0x90 -/* 8034C2E4 4E 80 00 20 */ blr -/* 8034C2E8 38 65 00 B6 */ addi r3, r5, 0xb6 -/* 8034C2EC 4E 80 00 20 */ blr -/* 8034C2F0 38 65 01 74 */ addi r3, r5, 0x174 -/* 8034C2F4 4E 80 00 20 */ blr -/* 8034C2F8 38 65 01 9A */ addi r3, r5, 0x19a -/* 8034C2FC 4E 80 00 20 */ blr -/* 8034C300 80 6D 92 BC */ lwz r3, timingExtra(r13) -/* 8034C304 4E 80 00 20 */ blr -lbl_8034C308: -/* 8034C308 38 60 00 00 */ li r3, 0 -/* 8034C30C 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/setFbbRegs.s b/asm/dolphin/vi/vi/setFbbRegs.s deleted file mode 100644 index 30b867a819..0000000000 --- a/asm/dolphin/vi/vi/setFbbRegs.s +++ /dev/null @@ -1,193 +0,0 @@ -lbl_8034CA18: -/* 8034CA18 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 8034CA1C 3D 20 80 45 */ lis r9, regs@ha /* 0x8044CA28@ha */ -/* 8034CA20 39 29 CA 28 */ addi r9, r9, regs@l /* 0x8044CA28@l */ -/* 8034CA24 93 E1 00 44 */ stw r31, 0x44(r1) -/* 8034CA28 89 03 00 2C */ lbz r8, 0x2c(r3) -/* 8034CA2C A0 03 00 0E */ lhz r0, 0xe(r3) -/* 8034CA30 55 1F 28 34 */ slwi r31, r8, 5 -/* 8034CA34 A1 03 00 16 */ lhz r8, 0x16(r3) -/* 8034CA38 7C 1F 01 D6 */ mullw r0, r31, r0 -/* 8034CA3C 81 63 00 20 */ lwz r11, 0x20(r3) -/* 8034CA40 81 43 00 30 */ lwz r10, 0x30(r3) -/* 8034CA44 A1 83 00 0A */ lhz r12, 0xa(r3) -/* 8034CA48 55 08 08 34 */ rlwinm r8, r8, 1, 0, 0x1a -/* 8034CA4C 7C 08 02 14 */ add r0, r8, r0 -/* 8034CA50 7C 0A 02 14 */ add r0, r10, r0 -/* 8034CA54 2C 0B 00 00 */ cmpwi r11, 0 -/* 8034CA58 90 04 00 00 */ stw r0, 0(r4) -/* 8034CA5C 40 82 00 0C */ bne lbl_8034CA68 -/* 8034CA60 81 04 00 00 */ lwz r8, 0(r4) -/* 8034CA64 48 00 00 0C */ b lbl_8034CA70 -lbl_8034CA68: -/* 8034CA68 80 04 00 00 */ lwz r0, 0(r4) -/* 8034CA6C 7D 00 FA 14 */ add r8, r0, r31 -lbl_8034CA70: -/* 8034CA70 7D 80 0E 70 */ srawi r0, r12, 1 -/* 8034CA74 91 05 00 00 */ stw r8, 0(r5) -/* 8034CA78 7C 00 01 94 */ addze r0, r0 -/* 8034CA7C 54 00 08 3C */ slwi r0, r0, 1 -/* 8034CA80 7C 00 60 10 */ subfc r0, r0, r12 -/* 8034CA84 2C 00 00 01 */ cmpwi r0, 1 -/* 8034CA88 40 82 00 14 */ bne lbl_8034CA9C -/* 8034CA8C 81 04 00 00 */ lwz r8, 0(r4) -/* 8034CA90 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CA94 90 04 00 00 */ stw r0, 0(r4) -/* 8034CA98 91 05 00 00 */ stw r8, 0(r5) -lbl_8034CA9C: -/* 8034CA9C 80 04 00 00 */ lwz r0, 0(r4) -/* 8034CAA0 54 00 00 BE */ clrlwi r0, r0, 2 -/* 8034CAA4 90 04 00 00 */ stw r0, 0(r4) -/* 8034CAA8 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CAAC 54 00 00 BE */ clrlwi r0, r0, 2 -/* 8034CAB0 90 05 00 00 */ stw r0, 0(r5) -/* 8034CAB4 80 03 00 44 */ lwz r0, 0x44(r3) -/* 8034CAB8 2C 00 00 00 */ cmpwi r0, 0 -/* 8034CABC 41 82 00 90 */ beq lbl_8034CB4C -/* 8034CAC0 89 03 00 2C */ lbz r8, 0x2c(r3) -/* 8034CAC4 A0 03 00 0E */ lhz r0, 0xe(r3) -/* 8034CAC8 55 1F 28 34 */ slwi r31, r8, 5 -/* 8034CACC A1 03 00 16 */ lhz r8, 0x16(r3) -/* 8034CAD0 7C 1F 01 D6 */ mullw r0, r31, r0 -/* 8034CAD4 81 63 00 20 */ lwz r11, 0x20(r3) -/* 8034CAD8 81 43 00 48 */ lwz r10, 0x48(r3) -/* 8034CADC A1 83 00 0A */ lhz r12, 0xa(r3) -/* 8034CAE0 55 08 08 34 */ rlwinm r8, r8, 1, 0, 0x1a -/* 8034CAE4 7C 08 02 14 */ add r0, r8, r0 -/* 8034CAE8 7C 0A 02 14 */ add r0, r10, r0 -/* 8034CAEC 2C 0B 00 00 */ cmpwi r11, 0 -/* 8034CAF0 90 06 00 00 */ stw r0, 0(r6) -/* 8034CAF4 40 82 00 0C */ bne lbl_8034CB00 -/* 8034CAF8 81 06 00 00 */ lwz r8, 0(r6) -/* 8034CAFC 48 00 00 0C */ b lbl_8034CB08 -lbl_8034CB00: -/* 8034CB00 80 06 00 00 */ lwz r0, 0(r6) -/* 8034CB04 7D 00 FA 14 */ add r8, r0, r31 -lbl_8034CB08: -/* 8034CB08 7D 80 0E 70 */ srawi r0, r12, 1 -/* 8034CB0C 91 07 00 00 */ stw r8, 0(r7) -/* 8034CB10 7C 00 01 94 */ addze r0, r0 -/* 8034CB14 54 00 08 3C */ slwi r0, r0, 1 -/* 8034CB18 7C 00 60 10 */ subfc r0, r0, r12 -/* 8034CB1C 2C 00 00 01 */ cmpwi r0, 1 -/* 8034CB20 40 82 00 14 */ bne lbl_8034CB34 -/* 8034CB24 81 06 00 00 */ lwz r8, 0(r6) -/* 8034CB28 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CB2C 90 06 00 00 */ stw r0, 0(r6) -/* 8034CB30 91 07 00 00 */ stw r8, 0(r7) -lbl_8034CB34: -/* 8034CB34 80 06 00 00 */ lwz r0, 0(r6) -/* 8034CB38 54 00 00 BE */ clrlwi r0, r0, 2 -/* 8034CB3C 90 06 00 00 */ stw r0, 0(r6) -/* 8034CB40 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CB44 54 00 00 BE */ clrlwi r0, r0, 2 -/* 8034CB48 90 07 00 00 */ stw r0, 0(r7) -lbl_8034CB4C: -/* 8034CB4C 80 04 00 00 */ lwz r0, 0(r4) -/* 8034CB50 3D 00 01 00 */ lis r8, 0x100 -/* 8034CB54 7C 00 40 40 */ cmplw r0, r8 -/* 8034CB58 40 80 00 30 */ bge lbl_8034CB88 -/* 8034CB5C 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CB60 7C 00 40 40 */ cmplw r0, r8 -/* 8034CB64 40 80 00 24 */ bge lbl_8034CB88 -/* 8034CB68 80 06 00 00 */ lwz r0, 0(r6) -/* 8034CB6C 7C 00 40 40 */ cmplw r0, r8 -/* 8034CB70 40 80 00 18 */ bge lbl_8034CB88 -/* 8034CB74 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CB78 7C 00 40 40 */ cmplw r0, r8 -/* 8034CB7C 40 80 00 0C */ bge lbl_8034CB88 -/* 8034CB80 39 40 00 00 */ li r10, 0 -/* 8034CB84 48 00 00 08 */ b lbl_8034CB8C -lbl_8034CB88: -/* 8034CB88 39 40 00 01 */ li r10, 1 -lbl_8034CB8C: -/* 8034CB8C 28 0A 00 00 */ cmplwi r10, 0 -/* 8034CB90 41 82 00 34 */ beq lbl_8034CBC4 -/* 8034CB94 80 04 00 00 */ lwz r0, 0(r4) -/* 8034CB98 54 00 D9 7E */ srwi r0, r0, 5 -/* 8034CB9C 90 04 00 00 */ stw r0, 0(r4) -/* 8034CBA0 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CBA4 54 00 D9 7E */ srwi r0, r0, 5 -/* 8034CBA8 90 05 00 00 */ stw r0, 0(r5) -/* 8034CBAC 80 06 00 00 */ lwz r0, 0(r6) -/* 8034CBB0 54 00 D9 7E */ srwi r0, r0, 5 -/* 8034CBB4 90 06 00 00 */ stw r0, 0(r6) -/* 8034CBB8 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CBBC 54 00 D9 7E */ srwi r0, r0, 5 -/* 8034CBC0 90 07 00 00 */ stw r0, 0(r7) -lbl_8034CBC4: -/* 8034CBC4 80 04 00 00 */ lwz r0, 0(r4) -/* 8034CBC8 55 4B 60 26 */ slwi r11, r10, 0xc -/* 8034CBCC 3D 00 00 01 */ lis r8, 1 -/* 8034CBD0 B0 09 00 1E */ sth r0, 0x1e(r9) -/* 8034CBD4 3C 00 00 02 */ lis r0, 2 -/* 8034CBD8 81 4D 92 90 */ lwz r10, changed(r13) -/* 8034CBDC 81 8D 92 94 */ lwz r12, data_80451814(r13) -/* 8034CBE0 7D 4A 43 78 */ or r10, r10, r8 -/* 8034CBE4 91 8D 92 94 */ stw r12, data_80451814(r13) -/* 8034CBE8 91 4D 92 90 */ stw r10, changed(r13) -/* 8034CBEC 81 44 00 00 */ lwz r10, 0(r4) -/* 8034CBF0 88 83 00 3C */ lbz r4, 0x3c(r3) -/* 8034CBF4 55 4A 84 3E */ srwi r10, r10, 0x10 -/* 8034CBF8 54 84 40 2E */ slwi r4, r4, 8 -/* 8034CBFC 7D 44 23 78 */ or r4, r10, r4 -/* 8034CC00 7D 64 23 78 */ or r4, r11, r4 -/* 8034CC04 B0 89 00 1C */ sth r4, 0x1c(r9) -/* 8034CC08 80 8D 92 90 */ lwz r4, changed(r13) -/* 8034CC0C 81 4D 92 94 */ lwz r10, data_80451814(r13) -/* 8034CC10 7C 80 03 78 */ or r0, r4, r0 -/* 8034CC14 91 4D 92 94 */ stw r10, data_80451814(r13) -/* 8034CC18 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CC1C 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CC20 B0 09 00 26 */ sth r0, 0x26(r9) -/* 8034CC24 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CC28 80 8D 92 94 */ lwz r4, data_80451814(r13) -/* 8034CC2C 60 00 10 00 */ ori r0, r0, 0x1000 -/* 8034CC30 90 8D 92 94 */ stw r4, data_80451814(r13) -/* 8034CC34 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CC38 80 05 00 00 */ lwz r0, 0(r5) -/* 8034CC3C 54 00 84 3E */ srwi r0, r0, 0x10 -/* 8034CC40 B0 09 00 24 */ sth r0, 0x24(r9) -/* 8034CC44 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CC48 80 8D 92 94 */ lwz r4, data_80451814(r13) -/* 8034CC4C 60 00 20 00 */ ori r0, r0, 0x2000 -/* 8034CC50 90 8D 92 94 */ stw r4, data_80451814(r13) -/* 8034CC54 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CC58 80 03 00 44 */ lwz r0, 0x44(r3) -/* 8034CC5C 2C 00 00 00 */ cmpwi r0, 0 -/* 8034CC60 41 82 00 80 */ beq lbl_8034CCE0 -/* 8034CC64 80 66 00 00 */ lwz r3, 0(r6) -/* 8034CC68 38 08 80 00 */ addi r0, r8, -32768 -/* 8034CC6C B0 69 00 22 */ sth r3, 0x22(r9) -/* 8034CC70 80 6D 92 90 */ lwz r3, changed(r13) -/* 8034CC74 80 8D 92 94 */ lwz r4, data_80451814(r13) -/* 8034CC78 60 63 40 00 */ ori r3, r3, 0x4000 -/* 8034CC7C 90 8D 92 94 */ stw r4, data_80451814(r13) -/* 8034CC80 90 6D 92 90 */ stw r3, changed(r13) -/* 8034CC84 80 66 00 00 */ lwz r3, 0(r6) -/* 8034CC88 54 63 84 3E */ srwi r3, r3, 0x10 -/* 8034CC8C B0 69 00 20 */ sth r3, 0x20(r9) -/* 8034CC90 80 6D 92 90 */ lwz r3, changed(r13) -/* 8034CC94 80 8D 92 94 */ lwz r4, data_80451814(r13) -/* 8034CC98 7C 60 03 78 */ or r0, r3, r0 -/* 8034CC9C 90 8D 92 94 */ stw r4, data_80451814(r13) -/* 8034CCA0 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CCA4 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CCA8 B0 09 00 2A */ sth r0, 0x2a(r9) -/* 8034CCAC 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CCB0 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034CCB4 60 00 04 00 */ ori r0, r0, 0x400 -/* 8034CCB8 90 6D 92 94 */ stw r3, data_80451814(r13) -/* 8034CCBC 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CCC0 80 07 00 00 */ lwz r0, 0(r7) -/* 8034CCC4 54 00 84 3E */ srwi r0, r0, 0x10 -/* 8034CCC8 B0 09 00 28 */ sth r0, 0x28(r9) -/* 8034CCCC 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CCD0 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034CCD4 60 00 08 00 */ ori r0, r0, 0x800 -/* 8034CCD8 90 6D 92 94 */ stw r3, data_80451814(r13) -/* 8034CCDC 90 0D 92 90 */ stw r0, changed(r13) -lbl_8034CCE0: -/* 8034CCE0 83 E1 00 44 */ lwz r31, 0x44(r1) -/* 8034CCE4 38 21 00 48 */ addi r1, r1, 0x48 -/* 8034CCE8 4E 80 00 20 */ blr diff --git a/asm/dolphin/vi/vi/setVerticalRegs.s b/asm/dolphin/vi/vi/setVerticalRegs.s deleted file mode 100644 index 28c5ddc287..0000000000 --- a/asm/dolphin/vi/vi/setVerticalRegs.s +++ /dev/null @@ -1,110 +0,0 @@ -lbl_8034CCEC: -/* 8034CCEC 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8034CCF0 3D 60 80 45 */ lis r11, regs@ha /* 0x8044CA28@ha */ -/* 8034CCF4 39 6B CA 28 */ addi r11, r11, regs@l /* 0x8044CA28@l */ -/* 8034CCF8 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8034CCFC 83 E1 00 30 */ lwz r31, 0x30(r1) -/* 8034CD00 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8034CD04 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8034CD08 A0 0B 00 6C */ lhz r0, 0x6c(r11) -/* 8034CD0C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8034CD10 41 82 00 10 */ beq lbl_8034CD20 -/* 8034CD14 39 80 00 01 */ li r12, 1 -/* 8034CD18 3B A0 00 02 */ li r29, 2 -/* 8034CD1C 48 00 00 0C */ b lbl_8034CD28 -lbl_8034CD20: -/* 8034CD20 39 80 00 02 */ li r12, 2 -/* 8034CD24 3B A0 00 01 */ li r29, 1 -lbl_8034CD28: -/* 8034CD28 54 7E 04 3E */ clrlwi r30, r3, 0x10 -/* 8034CD2C 7F C0 0E 70 */ srawi r0, r30, 1 -/* 8034CD30 7C 00 01 94 */ addze r0, r0 -/* 8034CD34 54 00 08 3C */ slwi r0, r0, 1 -/* 8034CD38 7C 00 F0 11 */ subfc. r0, r0, r30 -/* 8034CD3C 40 82 00 3C */ bne lbl_8034CD78 -/* 8034CD40 55 83 04 3E */ clrlwi r3, r12, 0x10 -/* 8034CD44 54 C0 04 3E */ clrlwi r0, r6, 0x10 -/* 8034CD48 7C 03 01 D6 */ mullw r0, r3, r0 -/* 8034CD4C 54 83 04 3E */ clrlwi r3, r4, 0x10 -/* 8034CD50 7C 03 00 50 */ subf r0, r3, r0 -/* 8034CD54 57 A3 04 3E */ clrlwi r3, r29, 0x10 -/* 8034CD58 7F A3 F1 D6 */ mullw r29, r3, r30 -/* 8034CD5C 7C 1E 00 50 */ subf r0, r30, r0 -/* 8034CD60 7F C3 01 D6 */ mullw r30, r3, r0 -/* 8034CD64 7C 07 EA 14 */ add r0, r7, r29 -/* 8034CD68 7C C9 F2 14 */ add r6, r9, r30 -/* 8034CD6C 7C 68 EA 14 */ add r3, r8, r29 -/* 8034CD70 7C EA F2 14 */ add r7, r10, r30 -/* 8034CD74 48 00 00 38 */ b lbl_8034CDAC -lbl_8034CD78: -/* 8034CD78 55 83 04 3E */ clrlwi r3, r12, 0x10 -/* 8034CD7C 54 C0 04 3E */ clrlwi r0, r6, 0x10 -/* 8034CD80 7C 03 01 D6 */ mullw r0, r3, r0 -/* 8034CD84 54 83 04 3E */ clrlwi r3, r4, 0x10 -/* 8034CD88 7C 03 00 50 */ subf r0, r3, r0 -/* 8034CD8C 57 A3 04 3E */ clrlwi r3, r29, 0x10 -/* 8034CD90 7F A3 F1 D6 */ mullw r29, r3, r30 -/* 8034CD94 7C 1E 00 50 */ subf r0, r30, r0 -/* 8034CD98 7F C3 01 D6 */ mullw r30, r3, r0 -/* 8034CD9C 7C 08 EA 14 */ add r0, r8, r29 -/* 8034CDA0 7C CA F2 14 */ add r6, r10, r30 -/* 8034CDA4 7C 67 EA 14 */ add r3, r7, r29 -/* 8034CDA8 7C E9 F2 14 */ add r7, r9, r30 -lbl_8034CDAC: -/* 8034CDAC 54 88 04 3E */ clrlwi r8, r4, 0x10 -/* 8034CDB0 55 84 04 3E */ clrlwi r4, r12, 0x10 -/* 8034CDB4 7C 88 23 D6 */ divw r4, r8, r4 -/* 8034CDB8 2C 1F 00 00 */ cmpwi r31, 0 -/* 8034CDBC 54 84 04 3E */ clrlwi r4, r4, 0x10 -/* 8034CDC0 41 82 00 20 */ beq lbl_8034CDE0 -/* 8034CDC4 54 84 08 3C */ slwi r4, r4, 1 -/* 8034CDC8 38 84 FF FE */ addi r4, r4, -2 -/* 8034CDCC 7C 00 22 14 */ add r0, r0, r4 -/* 8034CDD0 7C 63 22 14 */ add r3, r3, r4 -/* 8034CDD4 38 80 00 00 */ li r4, 0 -/* 8034CDD8 38 C6 00 02 */ addi r6, r6, 2 -/* 8034CDDC 38 E7 00 02 */ addi r7, r7, 2 -lbl_8034CDE0: -/* 8034CDE0 54 A5 06 3E */ clrlwi r5, r5, 0x18 -/* 8034CDE4 54 84 23 36 */ rlwinm r4, r4, 4, 0xc, 0x1b -/* 8034CDE8 7C A4 23 78 */ or r4, r5, r4 -/* 8034CDEC B0 8B 00 00 */ sth r4, 0(r11) -/* 8034CDF0 3C 80 80 00 */ lis r4, 0x8000 -/* 8034CDF4 3D 20 01 00 */ lis r9, 0x100 -/* 8034CDF8 80 AD 92 90 */ lwz r5, changed(r13) -/* 8034CDFC 3D 00 02 00 */ lis r8, 0x200 -/* 8034CE00 81 4D 92 94 */ lwz r10, data_80451814(r13) -/* 8034CE04 7C A4 23 78 */ or r4, r5, r4 -/* 8034CE08 3C A0 00 40 */ lis r5, 0x40 -/* 8034CE0C 91 4D 92 94 */ stw r10, data_80451814(r13) -/* 8034CE10 90 8D 92 90 */ stw r4, changed(r13) -/* 8034CE14 3C 80 00 80 */ lis r4, 0x80 -/* 8034CE18 B0 0B 00 0E */ sth r0, 0xe(r11) -/* 8034CE1C 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CE20 81 4D 92 94 */ lwz r10, data_80451814(r13) -/* 8034CE24 7C 00 4B 78 */ or r0, r0, r9 -/* 8034CE28 91 4D 92 94 */ stw r10, data_80451814(r13) -/* 8034CE2C 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CE30 B0 CB 00 0C */ sth r6, 0xc(r11) -/* 8034CE34 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CE38 80 CD 92 94 */ lwz r6, data_80451814(r13) -/* 8034CE3C 7C 00 43 78 */ or r0, r0, r8 -/* 8034CE40 90 CD 92 94 */ stw r6, data_80451814(r13) -/* 8034CE44 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CE48 B0 6B 00 12 */ sth r3, 0x12(r11) -/* 8034CE4C 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CE50 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034CE54 7C 00 2B 78 */ or r0, r0, r5 -/* 8034CE58 90 6D 92 94 */ stw r3, data_80451814(r13) -/* 8034CE5C 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CE60 B0 EB 00 10 */ sth r7, 0x10(r11) -/* 8034CE64 80 0D 92 90 */ lwz r0, changed(r13) -/* 8034CE68 80 6D 92 94 */ lwz r3, data_80451814(r13) -/* 8034CE6C 7C 00 23 78 */ or r0, r0, r4 -/* 8034CE70 90 6D 92 94 */ stw r3, data_80451814(r13) -/* 8034CE74 90 0D 92 90 */ stw r0, changed(r13) -/* 8034CE78 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8034CE7C 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8034CE80 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8034CE84 38 21 00 28 */ addi r1, r1, 0x28 -/* 8034CE88 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s deleted file mode 100644 index 111b499384..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s +++ /dev/null @@ -1,179 +0,0 @@ -lbl_80373514: -/* 80373514 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 80373518 28 05 00 00 */ cmplwi r5, 0 -/* 8037351C BE C1 00 20 */ stmw r22, 0x20(r1) -/* 80373520 41 82 01 38 */ beq lbl_80373658 -/* 80373524 3B A0 00 00 */ li r29, 0 -/* 80373528 7C 1D 20 00 */ cmpw r29, r4 -/* 8037352C 3B C0 00 00 */ li r30, 0 -/* 80373530 40 80 01 20 */ bge lbl_80373650 -/* 80373534 2C 04 00 08 */ cmpwi r4, 8 -/* 80373538 38 C4 FF F8 */ addi r6, r4, -8 -/* 8037353C 40 81 02 5C */ ble lbl_80373798 -/* 80373540 38 06 00 07 */ addi r0, r6, 7 -/* 80373544 54 00 E8 FE */ srwi r0, r0, 3 -/* 80373548 2C 06 00 00 */ cmpwi r6, 0 -/* 8037354C 7C 09 03 A6 */ mtctr r0 -/* 80373550 3B E3 00 00 */ addi r31, r3, 0 -/* 80373554 40 81 02 44 */ ble lbl_80373798 -lbl_80373558: -/* 80373558 20 DD 00 03 */ subfic r6, r29, 3 -/* 8037355C 89 9F 00 00 */ lbz r12, 0(r31) -/* 80373560 38 1D 00 01 */ addi r0, r29, 1 -/* 80373564 89 7F 00 01 */ lbz r11, 1(r31) -/* 80373568 54 CA 18 38 */ slwi r10, r6, 3 -/* 8037356C 89 3F 00 02 */ lbz r9, 2(r31) -/* 80373570 21 00 00 03 */ subfic r8, r0, 3 -/* 80373574 88 FF 00 03 */ lbz r7, 3(r31) -/* 80373578 38 DD 00 02 */ addi r6, r29, 2 -/* 8037357C 88 1F 00 04 */ lbz r0, 4(r31) -/* 80373580 7D 8C 50 30 */ slw r12, r12, r10 -/* 80373584 8A FF 00 05 */ lbz r23, 5(r31) -/* 80373588 55 0A 18 38 */ slwi r10, r8, 3 -/* 8037358C 8B 3F 00 06 */ lbz r25, 6(r31) -/* 80373590 20 C6 00 03 */ subfic r6, r6, 3 -/* 80373594 8B 7F 00 07 */ lbz r27, 7(r31) -/* 80373598 54 C8 18 38 */ slwi r8, r6, 3 -/* 8037359C 7C DD 00 D0 */ neg r6, r29 -/* 803735A0 3A DD 00 04 */ addi r22, r29, 4 -/* 803735A4 54 C6 18 38 */ slwi r6, r6, 3 -/* 803735A8 22 D6 00 03 */ subfic r22, r22, 3 -/* 803735AC 3B 1D 00 05 */ addi r24, r29, 5 -/* 803735B0 56 D6 18 38 */ slwi r22, r22, 3 -/* 803735B4 23 18 00 03 */ subfic r24, r24, 3 -/* 803735B8 3B 5D 00 06 */ addi r26, r29, 6 -/* 803735BC 57 18 18 38 */ slwi r24, r24, 3 -/* 803735C0 23 5A 00 03 */ subfic r26, r26, 3 -/* 803735C4 3B 9D 00 07 */ addi r28, r29, 7 -/* 803735C8 57 5A 18 38 */ slwi r26, r26, 3 -/* 803735CC 23 9C 00 03 */ subfic r28, r28, 3 -/* 803735D0 57 9C 18 38 */ slwi r28, r28, 3 -/* 803735D4 7F DE 63 78 */ or r30, r30, r12 -/* 803735D8 7D 6A 50 30 */ slw r10, r11, r10 -/* 803735DC 7F DE 53 78 */ or r30, r30, r10 -/* 803735E0 7D 28 40 30 */ slw r8, r9, r8 -/* 803735E4 7F DE 43 78 */ or r30, r30, r8 -/* 803735E8 7C E6 30 30 */ slw r6, r7, r6 -/* 803735EC 7F DE 33 78 */ or r30, r30, r6 -/* 803735F0 7C 00 B0 30 */ slw r0, r0, r22 -/* 803735F4 7F DE 03 78 */ or r30, r30, r0 -/* 803735F8 7E E0 C0 30 */ slw r0, r23, r24 -/* 803735FC 7F DE 03 78 */ or r30, r30, r0 -/* 80373600 7F 20 D0 30 */ slw r0, r25, r26 -/* 80373604 7F DE 03 78 */ or r30, r30, r0 -/* 80373608 7F 60 E0 30 */ slw r0, r27, r28 -/* 8037360C 7F DE 03 78 */ or r30, r30, r0 -/* 80373610 3B FF 00 08 */ addi r31, r31, 8 -/* 80373614 3B BD 00 08 */ addi r29, r29, 8 -/* 80373618 42 00 FF 40 */ bdnz lbl_80373558 -/* 8037361C 48 00 01 7C */ b lbl_80373798 -lbl_80373620: -/* 80373620 7C 1D 20 50 */ subf r0, r29, r4 -/* 80373624 7C 1D 20 00 */ cmpw r29, r4 -/* 80373628 7C 09 03 A6 */ mtctr r0 -/* 8037362C 40 80 00 24 */ bge lbl_80373650 -lbl_80373630: -/* 80373630 20 1D 00 03 */ subfic r0, r29, 3 -/* 80373634 88 C7 00 00 */ lbz r6, 0(r7) -/* 80373638 54 00 18 38 */ slwi r0, r0, 3 -/* 8037363C 7C C0 00 30 */ slw r0, r6, r0 -/* 80373640 7F DE 03 78 */ or r30, r30, r0 -/* 80373644 38 E7 00 01 */ addi r7, r7, 1 -/* 80373648 3B BD 00 01 */ addi r29, r29, 1 -/* 8037364C 42 00 FF E4 */ bdnz lbl_80373630 -lbl_80373650: -/* 80373650 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006838@ha */ -/* 80373654 93 C6 68 38 */ stw r30, 0x6838(r6) /* 0xCC006838@l */ -lbl_80373658: -/* 80373658 38 04 FF FF */ addi r0, r4, -1 -/* 8037365C 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006800@ha */ -/* 80373660 54 A7 10 3A */ slwi r7, r5, 2 -/* 80373664 39 06 68 00 */ addi r8, r6, 0x6800 /* 0xCC006800@l */ -/* 80373668 60 E6 00 01 */ ori r6, r7, 1 -/* 8037366C 54 00 20 36 */ slwi r0, r0, 4 -/* 80373670 7C C0 03 78 */ or r0, r6, r0 -/* 80373674 94 08 00 34 */ stwu r0, 0x34(r8) -lbl_80373678: -/* 80373678 80 08 00 00 */ lwz r0, 0(r8) -/* 8037367C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80373680 40 82 FF F8 */ bne lbl_80373678 -/* 80373684 28 05 00 00 */ cmplwi r5, 0 -/* 80373688 40 82 01 08 */ bne lbl_80373790 -/* 8037368C 38 A0 00 00 */ li r5, 0 -/* 80373690 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006838@ha */ -/* 80373694 7C 05 20 00 */ cmpw r5, r4 -/* 80373698 80 06 68 38 */ lwz r0, 0x6838(r6) /* 0xCC006838@l */ -/* 8037369C 40 80 00 F4 */ bge lbl_80373790 -/* 803736A0 2C 04 00 08 */ cmpwi r4, 8 -/* 803736A4 38 E4 FF F8 */ addi r7, r4, -8 -/* 803736A8 40 81 00 BC */ ble lbl_80373764 -/* 803736AC 38 C7 00 07 */ addi r6, r7, 7 -/* 803736B0 54 C6 E8 FE */ srwi r6, r6, 3 -/* 803736B4 2C 07 00 00 */ cmpwi r7, 0 -/* 803736B8 7C C9 03 A6 */ mtctr r6 -/* 803736BC 40 81 00 A8 */ ble lbl_80373764 -lbl_803736C0: -/* 803736C0 20 C5 00 03 */ subfic r6, r5, 3 -/* 803736C4 54 C7 18 38 */ slwi r7, r6, 3 -/* 803736C8 38 C5 00 01 */ addi r6, r5, 1 -/* 803736CC 7C 08 3C 30 */ srw r8, r0, r7 -/* 803736D0 20 C6 00 03 */ subfic r6, r6, 3 -/* 803736D4 99 03 00 00 */ stb r8, 0(r3) -/* 803736D8 54 C7 18 38 */ slwi r7, r6, 3 -/* 803736DC 38 C5 00 02 */ addi r6, r5, 2 -/* 803736E0 7C 0C 3C 30 */ srw r12, r0, r7 -/* 803736E4 20 C6 00 03 */ subfic r6, r6, 3 -/* 803736E8 99 83 00 01 */ stb r12, 1(r3) -/* 803736EC 54 C6 18 38 */ slwi r6, r6, 3 -/* 803736F0 7C 0B 34 30 */ srw r11, r0, r6 -/* 803736F4 7C C5 00 D0 */ neg r6, r5 -/* 803736F8 99 63 00 02 */ stb r11, 2(r3) -/* 803736FC 54 C7 18 38 */ slwi r7, r6, 3 -/* 80373700 38 C5 00 04 */ addi r6, r5, 4 -/* 80373704 7C 0A 3C 30 */ srw r10, r0, r7 -/* 80373708 20 C6 00 03 */ subfic r6, r6, 3 -/* 8037370C 99 43 00 03 */ stb r10, 3(r3) -/* 80373710 54 C7 18 38 */ slwi r7, r6, 3 -/* 80373714 38 C5 00 05 */ addi r6, r5, 5 -/* 80373718 7C 09 3C 30 */ srw r9, r0, r7 -/* 8037371C 20 C6 00 03 */ subfic r6, r6, 3 -/* 80373720 99 23 00 04 */ stb r9, 4(r3) -/* 80373724 54 C7 18 38 */ slwi r7, r6, 3 -/* 80373728 7C 08 3C 30 */ srw r8, r0, r7 -/* 8037372C 38 C5 00 06 */ addi r6, r5, 6 -/* 80373730 99 03 00 05 */ stb r8, 5(r3) -/* 80373734 20 E6 00 03 */ subfic r7, r6, 3 -/* 80373738 38 C5 00 07 */ addi r6, r5, 7 -/* 8037373C 54 E7 18 38 */ slwi r7, r7, 3 -/* 80373740 7C 07 3C 30 */ srw r7, r0, r7 -/* 80373744 20 C6 00 03 */ subfic r6, r6, 3 -/* 80373748 98 E3 00 06 */ stb r7, 6(r3) -/* 8037374C 54 C6 18 38 */ slwi r6, r6, 3 -/* 80373750 7C 06 34 30 */ srw r6, r0, r6 -/* 80373754 98 C3 00 07 */ stb r6, 7(r3) -/* 80373758 38 63 00 08 */ addi r3, r3, 8 -/* 8037375C 38 A5 00 08 */ addi r5, r5, 8 -/* 80373760 42 00 FF 60 */ bdnz lbl_803736C0 -lbl_80373764: -/* 80373764 7C C5 20 50 */ subf r6, r5, r4 -/* 80373768 7C 05 20 00 */ cmpw r5, r4 -/* 8037376C 7C C9 03 A6 */ mtctr r6 -/* 80373770 40 80 00 20 */ bge lbl_80373790 -lbl_80373774: -/* 80373774 20 85 00 03 */ subfic r4, r5, 3 -/* 80373778 54 84 18 38 */ slwi r4, r4, 3 -/* 8037377C 7C 04 24 30 */ srw r4, r0, r4 -/* 80373780 98 83 00 00 */ stb r4, 0(r3) -/* 80373784 38 63 00 01 */ addi r3, r3, 1 -/* 80373788 38 A5 00 01 */ addi r5, r5, 1 -/* 8037378C 42 00 FF E8 */ bdnz lbl_80373774 -lbl_80373790: -/* 80373790 38 60 00 01 */ li r3, 1 -/* 80373794 48 00 00 0C */ b lbl_803737A0 -lbl_80373798: -/* 80373798 7C E3 EA 14 */ add r7, r3, r29 -/* 8037379C 4B FF FE 84 */ b lbl_80373620 -lbl_803737A0: -/* 803737A0 BA C1 00 20 */ lmw r22, 0x20(r1) -/* 803737A4 38 21 00 48 */ addi r1, r1, 0x48 -/* 803737A8 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGHandler.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGHandler.s deleted file mode 100644 index 973dd34674..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGHandler.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80373188: -/* 80373188 7C 08 02 A6 */ mflr r0 -/* 8037318C 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC003000@ha */ -/* 80373190 90 01 00 04 */ stw r0, 4(r1) -/* 80373194 38 00 10 00 */ li r0, 0x1000 -/* 80373198 94 21 FF F8 */ stwu r1, -8(r1) -/* 8037319C 81 8D 94 54 */ lwz r12, DBGCallback(r13) -/* 803731A0 90 05 30 00 */ stw r0, 0x3000(r5) /* 0xCC003000@l */ -/* 803731A4 28 0C 00 00 */ cmplwi r12, 0 -/* 803731A8 41 82 00 10 */ beq lbl_803731B8 -/* 803731AC 7D 88 03 A6 */ mtlr r12 -/* 803731B0 7C 63 07 34 */ extsh r3, r3 -/* 803731B4 4E 80 00 21 */ blrl -lbl_803731B8: -/* 803731B8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803731BC 38 21 00 08 */ addi r1, r1, 8 -/* 803731C0 7C 08 03 A6 */ mtlr r0 -/* 803731C4 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s deleted file mode 100644 index 5ef3ecec79..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s +++ /dev/null @@ -1,60 +0,0 @@ -lbl_8037338C: -/* 8037338C 7C 08 02 A6 */ mflr r0 -/* 80373390 90 01 00 04 */ stw r0, 4(r1) -/* 80373394 54 60 41 EA */ rlwinm r0, r3, 8, 7, 0x15 -/* 80373398 64 00 20 00 */ oris r0, r0, 0x2000 -/* 8037339C 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 803733A0 BF 41 00 28 */ stmw r26, 0x28(r1) -/* 803733A4 3F A0 CC 00 */ lis r29, 0xCC00 /* 0xCC006800@ha */ -/* 803733A8 3B C5 00 00 */ addi r30, r5, 0 -/* 803733AC 3B 44 00 00 */ addi r26, r4, 0 -/* 803733B0 3B FD 68 00 */ addi r31, r29, 0x6800 /* 0xCC006800@l */ -/* 803733B4 38 61 00 24 */ addi r3, r1, 0x24 -/* 803733B8 38 80 00 04 */ li r4, 4 -/* 803733BC 38 A0 00 01 */ li r5, 1 -/* 803733C0 80 DD 68 28 */ lwz r6, 0x6828(r29) -/* 803733C4 70 C6 04 05 */ andi. r6, r6, 0x405 -/* 803733C8 60 C6 00 C0 */ ori r6, r6, 0xc0 -/* 803733CC 94 DF 00 28 */ stwu r6, 0x28(r31) -/* 803733D0 90 01 00 24 */ stw r0, 0x24(r1) -/* 803733D4 48 00 01 41 */ bl DBGEXIImm -/* 803733D8 7C 60 00 34 */ cntlzw r0, r3 -/* 803733DC 54 00 D9 7E */ srwi r0, r0, 5 -/* 803733E0 7C 1B 03 78 */ mr r27, r0 -lbl_803733E4: -/* 803733E4 3B 9D 68 00 */ addi r28, r29, 0x6800 -/* 803733E8 84 1C 00 34 */ lwzu r0, 0x34(r28) -/* 803733EC 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803733F0 40 82 FF F4 */ bne lbl_803733E4 -/* 803733F4 48 00 00 44 */ b lbl_80373438 -lbl_803733F8: -/* 803733F8 38 61 00 20 */ addi r3, r1, 0x20 -/* 803733FC 38 80 00 04 */ li r4, 4 -/* 80373400 38 A0 00 00 */ li r5, 0 -/* 80373404 48 00 01 11 */ bl DBGEXIImm -/* 80373408 7C 60 00 34 */ cntlzw r0, r3 -/* 8037340C 54 00 D9 7E */ srwi r0, r0, 5 -/* 80373410 7F 7B 03 78 */ or r27, r27, r0 -lbl_80373414: -/* 80373414 80 1C 00 00 */ lwz r0, 0(r28) -/* 80373418 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8037341C 40 82 FF F8 */ bne lbl_80373414 -/* 80373420 80 01 00 20 */ lwz r0, 0x20(r1) -/* 80373424 37 DE FF FC */ addic. r30, r30, -4 -/* 80373428 90 1A 00 00 */ stw r0, 0(r26) -/* 8037342C 3B 5A 00 04 */ addi r26, r26, 4 -/* 80373430 40 80 00 08 */ bge lbl_80373438 -/* 80373434 3B C0 00 00 */ li r30, 0 -lbl_80373438: -/* 80373438 2C 1E 00 00 */ cmpwi r30, 0 -/* 8037343C 40 82 FF BC */ bne lbl_803733F8 -/* 80373440 80 9F 00 00 */ lwz r4, 0(r31) -/* 80373444 7F 60 00 34 */ cntlzw r0, r27 -/* 80373448 54 03 D9 7E */ srwi r3, r0, 5 -/* 8037344C 70 80 04 05 */ andi. r0, r4, 0x405 -/* 80373450 90 1F 00 00 */ stw r0, 0(r31) -/* 80373454 BB 41 00 28 */ lmw r26, 0x28(r1) -/* 80373458 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8037345C 38 21 00 40 */ addi r1, r1, 0x40 -/* 80373460 7C 08 03 A6 */ mtlr r0 -/* 80373464 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadMailbox.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadMailbox.s deleted file mode 100644 index aff10994eb..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadMailbox.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80373468: -/* 80373468 7C 08 02 A6 */ mflr r0 -/* 8037346C 38 80 00 02 */ li r4, 2 -/* 80373470 90 01 00 04 */ stw r0, 4(r1) -/* 80373474 3C 00 60 00 */ lis r0, 0x6000 -/* 80373478 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 8037347C BF 61 00 24 */ stmw r27, 0x24(r1) -/* 80373480 3F C0 CC 00 */ lis r30, 0xCC00 /* 0xCC006800@ha */ -/* 80373484 3B 63 00 00 */ addi r27, r3, 0 -/* 80373488 3B BE 68 00 */ addi r29, r30, 0x6800 /* 0xCC006800@l */ -/* 8037348C 38 61 00 18 */ addi r3, r1, 0x18 -/* 80373490 80 BE 68 28 */ lwz r5, 0x6828(r30) -/* 80373494 70 A5 04 05 */ andi. r5, r5, 0x405 -/* 80373498 60 A5 00 C0 */ ori r5, r5, 0xc0 -/* 8037349C 94 BD 00 28 */ stwu r5, 0x28(r29) -/* 803734A0 38 A0 00 01 */ li r5, 1 -/* 803734A4 90 01 00 18 */ stw r0, 0x18(r1) -/* 803734A8 48 00 00 6D */ bl DBGEXIImm -/* 803734AC 7C 60 00 34 */ cntlzw r0, r3 -/* 803734B0 54 1F D9 7E */ srwi r31, r0, 5 -lbl_803734B4: -/* 803734B4 3B 9E 68 00 */ addi r28, r30, 0x6800 -/* 803734B8 84 1C 00 34 */ lwzu r0, 0x34(r28) -/* 803734BC 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803734C0 40 82 FF F4 */ bne lbl_803734B4 -/* 803734C4 38 7B 00 00 */ addi r3, r27, 0 -/* 803734C8 38 80 00 04 */ li r4, 4 -/* 803734CC 38 A0 00 00 */ li r5, 0 -/* 803734D0 48 00 00 45 */ bl DBGEXIImm -/* 803734D4 7C 60 00 34 */ cntlzw r0, r3 -/* 803734D8 54 00 D9 7E */ srwi r0, r0, 5 -/* 803734DC 7F E3 03 78 */ or r3, r31, r0 -lbl_803734E0: -/* 803734E0 80 1C 00 00 */ lwz r0, 0(r28) -/* 803734E4 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803734E8 40 82 FF F8 */ bne lbl_803734E0 -/* 803734EC 80 9D 00 00 */ lwz r4, 0(r29) -/* 803734F0 7C 60 00 34 */ cntlzw r0, r3 -/* 803734F4 54 03 D9 7E */ srwi r3, r0, 5 -/* 803734F8 70 80 04 05 */ andi. r0, r4, 0x405 -/* 803734FC 90 1D 00 00 */ stw r0, 0(r29) -/* 80373500 BB 61 00 24 */ lmw r27, 0x24(r1) -/* 80373504 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 80373508 38 21 00 38 */ addi r1, r1, 0x38 -/* 8037350C 7C 08 03 A6 */ mtlr r0 -/* 80373510 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadStatus.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadStatus.s deleted file mode 100644 index 745cfec32f..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadStatus.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80373204: -/* 80373204 7C 08 02 A6 */ mflr r0 -/* 80373208 38 80 00 02 */ li r4, 2 -/* 8037320C 90 01 00 04 */ stw r0, 4(r1) -/* 80373210 3C 00 40 00 */ lis r0, 0x4000 -/* 80373214 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 80373218 BF 61 00 24 */ stmw r27, 0x24(r1) -/* 8037321C 3F C0 CC 00 */ lis r30, 0xCC00 /* 0xCC006800@ha */ -/* 80373220 3B 63 00 00 */ addi r27, r3, 0 -/* 80373224 3B BE 68 00 */ addi r29, r30, 0x6800 /* 0xCC006800@l */ -/* 80373228 38 61 00 18 */ addi r3, r1, 0x18 -/* 8037322C 80 BE 68 28 */ lwz r5, 0x6828(r30) -/* 80373230 70 A5 04 05 */ andi. r5, r5, 0x405 -/* 80373234 60 A5 00 C0 */ ori r5, r5, 0xc0 -/* 80373238 94 BD 00 28 */ stwu r5, 0x28(r29) -/* 8037323C 38 A0 00 01 */ li r5, 1 -/* 80373240 90 01 00 18 */ stw r0, 0x18(r1) -/* 80373244 48 00 02 D1 */ bl DBGEXIImm -/* 80373248 7C 60 00 34 */ cntlzw r0, r3 -/* 8037324C 54 1F D9 7E */ srwi r31, r0, 5 -lbl_80373250: -/* 80373250 3B 9E 68 00 */ addi r28, r30, 0x6800 -/* 80373254 84 1C 00 34 */ lwzu r0, 0x34(r28) -/* 80373258 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8037325C 40 82 FF F4 */ bne lbl_80373250 -/* 80373260 38 7B 00 00 */ addi r3, r27, 0 -/* 80373264 38 80 00 04 */ li r4, 4 -/* 80373268 38 A0 00 00 */ li r5, 0 -/* 8037326C 48 00 02 A9 */ bl DBGEXIImm -/* 80373270 7C 60 00 34 */ cntlzw r0, r3 -/* 80373274 54 00 D9 7E */ srwi r0, r0, 5 -/* 80373278 7F E3 03 78 */ or r3, r31, r0 -lbl_8037327C: -/* 8037327C 80 1C 00 00 */ lwz r0, 0(r28) -/* 80373280 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80373284 40 82 FF F8 */ bne lbl_8037327C -/* 80373288 80 9D 00 00 */ lwz r4, 0(r29) -/* 8037328C 7C 60 00 34 */ cntlzw r0, r3 -/* 80373290 54 03 D9 7E */ srwi r3, r0, 5 -/* 80373294 70 80 04 05 */ andi. r0, r4, 0x405 -/* 80373298 90 1D 00 00 */ stw r0, 0(r29) -/* 8037329C BB 61 00 24 */ lmw r27, 0x24(r1) -/* 803732A0 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 803732A4 38 21 00 38 */ addi r1, r1, 0x38 -/* 803732A8 7C 08 03 A6 */ mtlr r0 -/* 803732AC 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGWrite.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGWrite.s deleted file mode 100644 index ce250e1fd2..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGWrite.s +++ /dev/null @@ -1,60 +0,0 @@ -lbl_803732B0: -/* 803732B0 7C 08 02 A6 */ mflr r0 -/* 803732B4 90 01 00 04 */ stw r0, 4(r1) -/* 803732B8 54 60 41 EA */ rlwinm r0, r3, 8, 7, 0x15 -/* 803732BC 64 00 A0 00 */ oris r0, r0, 0xa000 -/* 803732C0 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 803732C4 BF 41 00 28 */ stmw r26, 0x28(r1) -/* 803732C8 3F A0 CC 00 */ lis r29, 0xCC00 /* 0xCC006800@ha */ -/* 803732CC 3B C5 00 00 */ addi r30, r5, 0 -/* 803732D0 3B 44 00 00 */ addi r26, r4, 0 -/* 803732D4 3B FD 68 00 */ addi r31, r29, 0x6800 /* 0xCC006800@l */ -/* 803732D8 38 61 00 24 */ addi r3, r1, 0x24 -/* 803732DC 38 80 00 04 */ li r4, 4 -/* 803732E0 38 A0 00 01 */ li r5, 1 -/* 803732E4 80 DD 68 28 */ lwz r6, 0x6828(r29) -/* 803732E8 70 C6 04 05 */ andi. r6, r6, 0x405 -/* 803732EC 60 C6 00 C0 */ ori r6, r6, 0xc0 -/* 803732F0 94 DF 00 28 */ stwu r6, 0x28(r31) -/* 803732F4 90 01 00 24 */ stw r0, 0x24(r1) -/* 803732F8 48 00 02 1D */ bl DBGEXIImm -/* 803732FC 7C 60 00 34 */ cntlzw r0, r3 -/* 80373300 54 00 D9 7E */ srwi r0, r0, 5 -/* 80373304 7C 1B 03 78 */ mr r27, r0 -lbl_80373308: -/* 80373308 3B 9D 68 00 */ addi r28, r29, 0x6800 -/* 8037330C 84 1C 00 34 */ lwzu r0, 0x34(r28) -/* 80373310 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80373314 40 82 FF F4 */ bne lbl_80373308 -/* 80373318 48 00 00 44 */ b lbl_8037335C -lbl_8037331C: -/* 8037331C 80 1A 00 00 */ lwz r0, 0(r26) -/* 80373320 38 61 00 20 */ addi r3, r1, 0x20 -/* 80373324 38 80 00 04 */ li r4, 4 -/* 80373328 90 01 00 20 */ stw r0, 0x20(r1) -/* 8037332C 38 A0 00 01 */ li r5, 1 -/* 80373330 3B 5A 00 04 */ addi r26, r26, 4 -/* 80373334 48 00 01 E1 */ bl DBGEXIImm -/* 80373338 7C 60 00 34 */ cntlzw r0, r3 -/* 8037333C 54 00 D9 7E */ srwi r0, r0, 5 -/* 80373340 7F 7B 03 78 */ or r27, r27, r0 -lbl_80373344: -/* 80373344 80 1C 00 00 */ lwz r0, 0(r28) -/* 80373348 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8037334C 40 82 FF F8 */ bne lbl_80373344 -/* 80373350 37 DE FF FC */ addic. r30, r30, -4 -/* 80373354 40 80 00 08 */ bge lbl_8037335C -/* 80373358 3B C0 00 00 */ li r30, 0 -lbl_8037335C: -/* 8037335C 2C 1E 00 00 */ cmpwi r30, 0 -/* 80373360 40 82 FF BC */ bne lbl_8037331C -/* 80373364 80 9F 00 00 */ lwz r4, 0(r31) -/* 80373368 7F 60 00 34 */ cntlzw r0, r27 -/* 8037336C 54 03 D9 7E */ srwi r3, r0, 5 -/* 80373370 70 80 04 05 */ andi. r0, r4, 0x405 -/* 80373374 90 1F 00 00 */ stw r0, 0(r31) -/* 80373378 BB 41 00 28 */ lmw r26, 0x28(r1) -/* 8037337C 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80373380 38 21 00 40 */ addi r1, r1, 0x40 -/* 80373384 7C 08 03 A6 */ mtlr r0 -/* 80373388 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitComm.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitComm.s deleted file mode 100644 index 9c85cdc73f..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitComm.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_80373110: -/* 80373110 7C 08 02 A6 */ mflr r0 -/* 80373114 90 01 00 04 */ stw r0, 4(r1) -/* 80373118 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8037311C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80373120 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80373124 3B C4 00 00 */ addi r30, r4, 0 -/* 80373128 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8037312C 3B A3 00 00 */ addi r29, r3, 0 -/* 80373130 4B FC A5 C5 */ bl OSDisableInterrupts -/* 80373134 38 0D 94 64 */ la r0, data_804519E4(r13) /* 804519E4-_SDA_BASE_ */ -/* 80373138 90 0D 94 60 */ stw r0, pEXIInputFlag(r13) -/* 8037313C 3C 80 00 02 */ lis r4, 0x0002 /* 0x00018000@ha */ -/* 80373140 3B E3 00 00 */ addi r31, r3, 0 -/* 80373144 80 0D 94 60 */ lwz r0, pEXIInputFlag(r13) -/* 80373148 38 64 80 00 */ addi r3, r4, 0x8000 /* 0x00018000@l */ -/* 8037314C 90 1D 00 00 */ stw r0, 0(r29) -/* 80373150 93 CD 94 50 */ stw r30, MTRCallback(r13) -/* 80373154 4B FC A9 69 */ bl __OSMaskInterrupts -/* 80373158 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006828@ha */ -/* 8037315C 38 00 00 00 */ li r0, 0 -/* 80373160 90 03 68 28 */ stw r0, 0x6828(r3) /* 0xCC006828@l */ -/* 80373164 7F E3 FB 78 */ mr r3, r31 -/* 80373168 4B FC A5 B5 */ bl OSRestoreInterrupts -/* 8037316C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80373170 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80373174 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80373178 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8037317C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80373180 7C 08 03 A6 */ mtlr r0 -/* 80373184 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitInterrupts.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitInterrupts.s deleted file mode 100644 index 20a12a8668..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitInterrupts.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_803730BC: -/* 803730BC 7C 08 02 A6 */ mflr r0 -/* 803730C0 3C 60 00 02 */ lis r3, 0x0002 /* 0x00018000@ha */ -/* 803730C4 90 01 00 04 */ stw r0, 4(r1) -/* 803730C8 38 63 80 00 */ addi r3, r3, 0x8000 /* 0x00018000@l */ -/* 803730CC 94 21 FF F8 */ stwu r1, -8(r1) -/* 803730D0 4B FC A9 ED */ bl __OSMaskInterrupts -/* 803730D4 38 60 00 40 */ li r3, 0x40 -/* 803730D8 4B FC A9 E5 */ bl __OSMaskInterrupts -/* 803730DC 3C 60 80 37 */ lis r3, MWCallback@ha /* 0x803731C8@ha */ -/* 803730E0 38 03 31 C8 */ addi r0, r3, MWCallback@l /* 0x803731C8@l */ -/* 803730E4 3C 60 80 37 */ lis r3, DBGHandler@ha /* 0x80373188@ha */ -/* 803730E8 90 0D 94 54 */ stw r0, DBGCallback(r13) -/* 803730EC 38 83 31 88 */ addi r4, r3, DBGHandler@l /* 0x80373188@l */ -/* 803730F0 38 60 00 19 */ li r3, 0x19 -/* 803730F4 4B FC A6 4D */ bl __OSSetInterruptHandler -/* 803730F8 38 60 00 40 */ li r3, 0x40 -/* 803730FC 4B FC AA 49 */ bl __OSUnmaskInterrupts -/* 80373100 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80373104 38 21 00 08 */ addi r1, r1, 8 -/* 80373108 7C 08 03 A6 */ mtlr r0 -/* 8037310C 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBQueryData.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBQueryData.s deleted file mode 100644 index 333f0d6a59..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBQueryData.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_80373020: -/* 80373020 7C 08 02 A6 */ mflr r0 -/* 80373024 38 60 00 00 */ li r3, 0 -/* 80373028 90 01 00 04 */ stw r0, 4(r1) -/* 8037302C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80373030 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80373034 80 0D 94 5C */ lwz r0, RecvDataLeng(r13) -/* 80373038 98 6D 94 64 */ stb r3, data_804519E4(r13) -/* 8037303C 2C 00 00 00 */ cmpwi r0, 0 -/* 80373040 40 82 00 64 */ bne lbl_803730A4 -/* 80373044 4B FC A6 B1 */ bl OSDisableInterrupts -/* 80373048 3B E3 00 00 */ addi r31, r3, 0 -/* 8037304C 38 61 00 08 */ addi r3, r1, 8 -/* 80373050 48 00 01 B5 */ bl DBGReadStatus -/* 80373054 80 01 00 08 */ lwz r0, 8(r1) -/* 80373058 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8037305C 41 82 00 40 */ beq lbl_8037309C -/* 80373060 38 61 00 08 */ addi r3, r1, 8 -/* 80373064 48 00 04 05 */ bl DBGReadMailbox -/* 80373068 80 01 00 08 */ lwz r0, 8(r1) -/* 8037306C 54 00 00 FE */ clrlwi r0, r0, 3 -/* 80373070 90 01 00 08 */ stw r0, 8(r1) -/* 80373074 80 81 00 08 */ lwz r4, 8(r1) -/* 80373078 54 83 00 CE */ rlwinm r3, r4, 0, 3, 7 -/* 8037307C 3C 03 E1 00 */ addis r0, r3, 0xe100 -/* 80373080 28 00 00 00 */ cmplwi r0, 0 -/* 80373084 40 82 00 18 */ bne lbl_8037309C -/* 80373088 54 83 04 7E */ clrlwi r3, r4, 0x11 -/* 8037308C 90 8D 94 58 */ stw r4, SendMailData(r13) -/* 80373090 38 00 00 01 */ li r0, 1 -/* 80373094 90 6D 94 5C */ stw r3, RecvDataLeng(r13) -/* 80373098 98 0D 94 64 */ stb r0, data_804519E4(r13) -lbl_8037309C: -/* 8037309C 7F E3 FB 78 */ mr r3, r31 -/* 803730A0 4B FC A6 7D */ bl OSRestoreInterrupts -lbl_803730A4: -/* 803730A4 80 6D 94 5C */ lwz r3, RecvDataLeng(r13) -/* 803730A8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803730AC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803730B0 38 21 00 18 */ addi r1, r1, 0x18 -/* 803730B4 7C 08 03 A6 */ mtlr r0 -/* 803730B8 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBRead.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBRead.s deleted file mode 100644 index 2827f4f162..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBRead.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_80372F94: -/* 80372F94 7C 08 02 A6 */ mflr r0 -/* 80372F98 90 01 00 04 */ stw r0, 4(r1) -/* 80372F9C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80372FA0 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80372FA4 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80372FA8 3B C4 00 00 */ addi r30, r4, 0 -/* 80372FAC 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80372FB0 3B A3 00 00 */ addi r29, r3, 0 -/* 80372FB4 4B FC A7 41 */ bl OSDisableInterrupts -/* 80372FB8 80 0D 94 58 */ lwz r0, SendMailData(r13) -/* 80372FBC 3B E3 00 00 */ addi r31, r3, 0 -/* 80372FC0 54 00 03 DF */ rlwinm. r0, r0, 0, 0xf, 0xf -/* 80372FC4 41 82 00 0C */ beq lbl_80372FD0 -/* 80372FC8 38 60 10 00 */ li r3, 0x1000 -/* 80372FCC 48 00 00 08 */ b lbl_80372FD4 -lbl_80372FD0: -/* 80372FD0 38 60 00 00 */ li r3, 0 -lbl_80372FD4: -/* 80372FD4 3C 63 00 02 */ addis r3, r3, 2 -/* 80372FD8 38 1E 00 03 */ addi r0, r30, 3 -/* 80372FDC 38 9D 00 00 */ addi r4, r29, 0 -/* 80372FE0 54 05 00 3A */ rlwinm r5, r0, 0, 0, 0x1d -/* 80372FE4 38 63 E0 00 */ addi r3, r3, -8192 -/* 80372FE8 48 00 03 A5 */ bl DBGRead -/* 80372FEC 38 00 00 00 */ li r0, 0 -/* 80372FF0 90 0D 94 5C */ stw r0, RecvDataLeng(r13) -/* 80372FF4 7F E3 FB 78 */ mr r3, r31 -/* 80372FF8 98 0D 94 64 */ stb r0, data_804519E4(r13) -/* 80372FFC 4B FC A7 21 */ bl OSRestoreInterrupts -/* 80373000 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80373004 38 60 00 00 */ li r3, 0 -/* 80373008 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8037300C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80373010 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80373014 38 21 00 20 */ addi r1, r1, 0x20 -/* 80373018 7C 08 03 A6 */ mtlr r0 -/* 8037301C 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s deleted file mode 100644 index 9c818badeb..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s +++ /dev/null @@ -1,167 +0,0 @@ -lbl_80372D34: -/* 80372D34 7C 08 02 A6 */ mflr r0 -/* 80372D38 90 01 00 04 */ stw r0, 4(r1) -/* 80372D3C 94 21 FF 88 */ stwu r1, -0x78(r1) -/* 80372D40 BF 01 00 58 */ stmw r24, 0x58(r1) -/* 80372D44 3B 43 00 00 */ addi r26, r3, 0 -/* 80372D48 3B 64 00 00 */ addi r27, r4, 0 -/* 80372D4C 4B FC A9 A9 */ bl OSDisableInterrupts -/* 80372D50 3B 83 00 00 */ addi r28, r3, 0 -/* 80372D54 3F 20 CC 00 */ lis r25, 0xCC00 /* 0xCC006828@ha */ -/* 80372D58 3F E0 40 00 */ lis r31, 0x4000 -lbl_80372D5C: -/* 80372D5C 80 19 68 28 */ lwz r0, 0x6828(r25) /* 0xCC006828@l */ -/* 80372D60 3B D9 68 00 */ addi r30, r25, 0x6800 -/* 80372D64 38 61 00 50 */ addi r3, r1, 0x50 -/* 80372D68 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372D6C 38 80 00 02 */ li r4, 2 -/* 80372D70 38 A0 00 01 */ li r5, 1 -/* 80372D74 60 00 00 C0 */ ori r0, r0, 0xc0 -/* 80372D78 94 1E 00 28 */ stwu r0, 0x28(r30) -/* 80372D7C 93 E1 00 50 */ stw r31, 0x50(r1) -/* 80372D80 48 00 07 95 */ bl DBGEXIImm -/* 80372D84 7C 60 00 34 */ cntlzw r0, r3 -/* 80372D88 54 18 D9 7E */ srwi r24, r0, 5 -lbl_80372D8C: -/* 80372D8C 3B B9 68 00 */ addi r29, r25, 0x6800 -/* 80372D90 84 1D 00 34 */ lwzu r0, 0x34(r29) -/* 80372D94 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372D98 40 82 FF F4 */ bne lbl_80372D8C -/* 80372D9C 38 61 00 54 */ addi r3, r1, 0x54 -/* 80372DA0 38 80 00 04 */ li r4, 4 -/* 80372DA4 38 A0 00 00 */ li r5, 0 -/* 80372DA8 48 00 07 6D */ bl DBGEXIImm -lbl_80372DAC: -/* 80372DAC 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372DB0 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372DB4 40 82 FF F8 */ bne lbl_80372DAC -/* 80372DB8 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372DBC 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372DC0 90 1E 00 00 */ stw r0, 0(r30) -/* 80372DC4 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80372DC8 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 80372DCC 40 82 FF 90 */ bne lbl_80372D5C -/* 80372DD0 88 6D 85 70 */ lbz r3, data_80450AF0(r13) -/* 80372DD4 38 03 00 01 */ addi r0, r3, 1 -/* 80372DD8 98 0D 85 70 */ stb r0, data_80450AF0(r13) -/* 80372DDC 88 0D 85 70 */ lbz r0, data_80450AF0(r13) -/* 80372DE0 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372DE4 41 82 00 0C */ beq lbl_80372DF0 -/* 80372DE8 38 60 10 00 */ li r3, 0x1000 -/* 80372DEC 48 00 00 08 */ b lbl_80372DF4 -lbl_80372DF0: -/* 80372DF0 38 60 00 00 */ li r3, 0 -lbl_80372DF4: -/* 80372DF4 38 1B 00 03 */ addi r0, r27, 3 -/* 80372DF8 64 79 00 01 */ oris r25, r3, 1 -/* 80372DFC 54 18 00 3A */ rlwinm r24, r0, 0, 0, 0x1d -/* 80372E00 63 39 C0 00 */ ori r25, r25, 0xc000 -lbl_80372E04: -/* 80372E04 38 79 00 00 */ addi r3, r25, 0 -/* 80372E08 38 9A 00 00 */ addi r4, r26, 0 -/* 80372E0C 38 B8 00 00 */ addi r5, r24, 0 -/* 80372E10 48 00 04 A1 */ bl DBGWrite -/* 80372E14 2C 03 00 00 */ cmpwi r3, 0 -/* 80372E18 41 82 FF EC */ beq lbl_80372E04 -/* 80372E1C 3F E0 40 00 */ lis r31, 0x4000 -lbl_80372E20: -/* 80372E20 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372E24 38 61 00 4C */ addi r3, r1, 0x4c -/* 80372E28 38 80 00 02 */ li r4, 2 -/* 80372E2C 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372E30 38 A0 00 01 */ li r5, 1 -/* 80372E34 60 00 00 C0 */ ori r0, r0, 0xc0 -/* 80372E38 90 1E 00 00 */ stw r0, 0(r30) -/* 80372E3C 93 E1 00 4C */ stw r31, 0x4c(r1) -/* 80372E40 48 00 06 D5 */ bl DBGEXIImm -/* 80372E44 7C 60 00 34 */ cntlzw r0, r3 -/* 80372E48 54 1A D9 7E */ srwi r26, r0, 5 -lbl_80372E4C: -/* 80372E4C 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372E50 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372E54 40 82 FF F8 */ bne lbl_80372E4C -/* 80372E58 38 61 00 54 */ addi r3, r1, 0x54 -/* 80372E5C 38 80 00 04 */ li r4, 4 -/* 80372E60 38 A0 00 00 */ li r5, 0 -/* 80372E64 48 00 06 B1 */ bl DBGEXIImm -lbl_80372E68: -/* 80372E68 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372E6C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372E70 40 82 FF F8 */ bne lbl_80372E68 -/* 80372E74 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372E78 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372E7C 90 1E 00 00 */ stw r0, 0(r30) -/* 80372E80 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80372E84 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 80372E88 40 82 FF 98 */ bne lbl_80372E20 -/* 80372E8C 88 0D 85 70 */ lbz r0, data_80450AF0(r13) -/* 80372E90 54 00 80 1E */ slwi r0, r0, 0x10 -/* 80372E94 64 00 1F 00 */ oris r0, r0, 0x1f00 -/* 80372E98 7C 00 DB 78 */ or r0, r0, r27 -/* 80372E9C 54 00 00 FE */ clrlwi r0, r0, 3 -/* 80372EA0 64 18 C0 00 */ oris r24, r0, 0xc000 -lbl_80372EA4: -/* 80372EA4 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372EA8 38 61 00 44 */ addi r3, r1, 0x44 -/* 80372EAC 38 80 00 04 */ li r4, 4 -/* 80372EB0 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372EB4 38 A0 00 01 */ li r5, 1 -/* 80372EB8 60 00 00 C0 */ ori r0, r0, 0xc0 -/* 80372EBC 90 1E 00 00 */ stw r0, 0(r30) -/* 80372EC0 93 01 00 44 */ stw r24, 0x44(r1) -/* 80372EC4 48 00 06 51 */ bl DBGEXIImm -/* 80372EC8 7C 60 00 34 */ cntlzw r0, r3 -/* 80372ECC 54 03 D9 7E */ srwi r3, r0, 5 -lbl_80372ED0: -/* 80372ED0 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372ED4 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372ED8 40 82 FF F8 */ bne lbl_80372ED0 -/* 80372EDC 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372EE0 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372EE4 2C 03 00 00 */ cmpwi r3, 0 -/* 80372EE8 90 1E 00 00 */ stw r0, 0(r30) -/* 80372EEC 40 82 FF B8 */ bne lbl_80372EA4 -/* 80372EF0 3F 60 40 00 */ lis r27, 0x4000 -lbl_80372EF4: -/* 80372EF4 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372EF8 38 61 00 3C */ addi r3, r1, 0x3c -/* 80372EFC 38 80 00 02 */ li r4, 2 -/* 80372F00 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372F04 38 A0 00 01 */ li r5, 1 -/* 80372F08 60 00 00 C0 */ ori r0, r0, 0xc0 -/* 80372F0C 90 1E 00 00 */ stw r0, 0(r30) -/* 80372F10 93 61 00 3C */ stw r27, 0x3c(r1) -/* 80372F14 48 00 06 01 */ bl DBGEXIImm -/* 80372F18 7C 60 00 34 */ cntlzw r0, r3 -/* 80372F1C 54 1A D9 7E */ srwi r26, r0, 5 -lbl_80372F20: -/* 80372F20 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372F24 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372F28 40 82 FF F8 */ bne lbl_80372F20 -/* 80372F2C 38 61 00 54 */ addi r3, r1, 0x54 -/* 80372F30 38 80 00 04 */ li r4, 4 -/* 80372F34 38 A0 00 00 */ li r5, 0 -/* 80372F38 48 00 05 DD */ bl DBGEXIImm -/* 80372F3C 7C 60 00 34 */ cntlzw r0, r3 -/* 80372F40 54 00 D9 7E */ srwi r0, r0, 5 -/* 80372F44 7F 43 03 78 */ or r3, r26, r0 -lbl_80372F48: -/* 80372F48 80 1D 00 00 */ lwz r0, 0(r29) -/* 80372F4C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80372F50 40 82 FF F8 */ bne lbl_80372F48 -/* 80372F54 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372F58 70 00 04 05 */ andi. r0, r0, 0x405 -/* 80372F5C 2C 03 00 00 */ cmpwi r3, 0 -/* 80372F60 90 1E 00 00 */ stw r0, 0(r30) -/* 80372F64 40 82 FF 90 */ bne lbl_80372EF4 -/* 80372F68 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80372F6C 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 80372F70 40 82 FF 84 */ bne lbl_80372EF4 -/* 80372F74 7F 83 E3 78 */ mr r3, r28 -/* 80372F78 4B FC A7 A5 */ bl OSRestoreInterrupts -/* 80372F7C BB 01 00 58 */ lmw r24, 0x58(r1) -/* 80372F80 38 60 00 00 */ li r3, 0 -/* 80372F84 80 01 00 7C */ lwz r0, 0x7c(r1) -/* 80372F88 38 21 00 78 */ addi r1, r1, 0x78 -/* 80372F8C 7C 08 03 A6 */ mtlr r0 -/* 80372F90 4E 80 00 20 */ blr diff --git a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/MWCallback.s b/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/MWCallback.s deleted file mode 100644 index fb387560fd..0000000000 --- a/asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/MWCallback.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_803731C8: -/* 803731C8 7C 08 02 A6 */ mflr r0 -/* 803731CC 90 01 00 04 */ stw r0, 4(r1) -/* 803731D0 38 00 00 01 */ li r0, 1 -/* 803731D4 94 21 FF F8 */ stwu r1, -8(r1) -/* 803731D8 81 8D 94 50 */ lwz r12, MTRCallback(r13) -/* 803731DC 98 0D 94 64 */ stb r0, data_804519E4(r13) -/* 803731E0 28 0C 00 00 */ cmplwi r12, 0 -/* 803731E4 41 82 00 10 */ beq lbl_803731F4 -/* 803731E8 7D 88 03 A6 */ mtlr r12 -/* 803731EC 38 60 00 00 */ li r3, 0 -/* 803731F0 4E 80 00 21 */ blrl -lbl_803731F4: -/* 803731F4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803731F8 38 21 00 08 */ addi r1, r1, 8 -/* 803731FC 7C 08 03 A6 */ mtlr r0 -/* 80373200 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_movie_player/d_a_movie_player/THPInit.s b/asm/rel/d/a/d_a_movie_player/d_a_movie_player/THPInit.s index 67f3b98d64..3ac8f9472a 100644 --- a/asm/rel/d/a/d_a_movie_player/d_a_movie_player/THPInit.s +++ b/asm/rel/d/a/d_a_movie_player/d_a_movie_player/THPInit.s @@ -17,7 +17,7 @@ lbl_808757E0: /* 8087581C 90 03 00 04 */ stw r0, 4(r3) /* 80875820 38 04 32 00 */ addi r0, r4, 0x3200 /* 80875824 90 03 00 08 */ stw r0, 8(r3) -/* 80875828 48 00 00 25 */ bl OSInitFastCast +/* 80875828 48 00 00 25 */ bl i_OSInitFastCast /* 8087582C 38 00 00 01 */ li r0, 1 /* 80875830 90 1F 06 28 */ stw r0, 0x628(r31) /* 80875834 38 60 00 01 */ li r3, 1 diff --git a/asm/rel/d/a/d_a_movie_player/d_a_movie_player/daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss.s b/asm/rel/d/a/d_a_movie_player/d_a_movie_player/daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss.s index 3cf0116136..8566fc9699 100644 --- a/asm/rel/d/a/d_a_movie_player/d_a_movie_player/daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss.s +++ b/asm/rel/d/a/d_a_movie_player/d_a_movie_player/daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss.s @@ -95,37 +95,37 @@ lbl_80876BD0: /* 80876D44 7F BA 07 34 */ extsh r26, r29 /* 80876D48 7F 44 D3 78 */ mr r4, r26 /* 80876D4C 38 A0 00 00 */ li r5, 0 -/* 80876D50 48 00 00 A9 */ bl GXPosition3s16 +/* 80876D50 48 00 00 A9 */ bl i_GXPosition3s16 /* 80876D54 38 60 00 00 */ li r3, 0 /* 80876D58 38 80 00 00 */ li r4, 0 -/* 80876D5C 48 00 00 8D */ bl GXTexCoord2u16 +/* 80876D5C 48 00 00 8D */ bl i_GXTexCoord2u16 /* 80876D60 7F 23 CB 78 */ mr r3, r25 /* 80876D64 7F C0 07 34 */ extsh r0, r30 /* 80876D68 7F 63 02 14 */ add r27, r3, r0 /* 80876D6C 7F 63 07 34 */ extsh r3, r27 /* 80876D70 7F 44 D3 78 */ mr r4, r26 /* 80876D74 38 A0 00 00 */ li r5, 0 -/* 80876D78 48 00 00 81 */ bl GXPosition3s16 +/* 80876D78 48 00 00 81 */ bl i_GXPosition3s16 /* 80876D7C 38 60 00 01 */ li r3, 1 /* 80876D80 38 80 00 00 */ li r4, 0 -/* 80876D84 48 00 00 65 */ bl GXTexCoord2u16 +/* 80876D84 48 00 00 65 */ bl i_GXTexCoord2u16 /* 80876D88 7F 63 07 34 */ extsh r3, r27 /* 80876D8C 7F 40 D3 78 */ mr r0, r26 /* 80876D90 7F 40 FA 14 */ add r26, r0, r31 /* 80876D94 7F 44 07 34 */ extsh r4, r26 /* 80876D98 38 A0 00 00 */ li r5, 0 -/* 80876D9C 48 00 00 5D */ bl GXPosition3s16 +/* 80876D9C 48 00 00 5D */ bl i_GXPosition3s16 /* 80876DA0 38 60 00 01 */ li r3, 1 /* 80876DA4 38 80 00 01 */ li r4, 1 -/* 80876DA8 48 00 00 41 */ bl GXTexCoord2u16 +/* 80876DA8 48 00 00 41 */ bl i_GXTexCoord2u16 /* 80876DAC 7F 23 CB 78 */ mr r3, r25 /* 80876DB0 7F 44 07 34 */ extsh r4, r26 /* 80876DB4 38 A0 00 00 */ li r5, 0 -/* 80876DB8 48 00 00 41 */ bl GXPosition3s16 +/* 80876DB8 48 00 00 41 */ bl i_GXPosition3s16 /* 80876DBC 38 60 00 00 */ li r3, 0 /* 80876DC0 38 80 00 01 */ li r4, 1 -/* 80876DC4 48 00 00 25 */ bl GXTexCoord2u16 -/* 80876DC8 48 00 00 1D */ bl GXEnd +/* 80876DC4 48 00 00 25 */ bl i_GXTexCoord2u16 +/* 80876DC8 48 00 00 1D */ bl i_GXEnd /* 80876DCC 39 61 00 90 */ addi r11, r1, 0x90 /* 80876DD0 4B AE B4 45 */ bl _restgpr_24 /* 80876DD4 80 01 00 94 */ lwz r0, 0x94(r1) diff --git a/include/JSystem/J2DGraph/J2DGrafContext.h b/include/JSystem/J2DGraph/J2DGrafContext.h index 1d41b50983..b2e49ced53 100644 --- a/include/JSystem/J2DGraph/J2DGrafContext.h +++ b/include/JSystem/J2DGraph/J2DGrafContext.h @@ -3,7 +3,7 @@ #include "JSystem/JGeometry.h" #include "JSystem/JUtility/TColor.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" class J2DGrafContext { diff --git a/include/JSystem/J2DGraph/J2DPane.h b/include/JSystem/J2DGraph/J2DPane.h index 26b6bb6c19..6e6a605bfa 100644 --- a/include/JSystem/J2DGraph/J2DPane.h +++ b/include/JSystem/J2DGraph/J2DPane.h @@ -4,7 +4,7 @@ #include "JSystem/JGeometry.h" #include "JSystem/JSupport/JSUList.h" #include "dolphin/gx/GXEnum.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" class J2DAnmBase; class J2DAnmColor; diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index 1244020b19..4de6ad07a7 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -3,7 +3,7 @@ #include "dolphin/gx/GXEnum.h" #include "dolphin/gx/GXStruct.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" struct J2DTextureSRTInfo { /* 0x00 */ f32 field_0x0; diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index a8048a1b2c..297d79fadc 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -4,7 +4,7 @@ #include "JSystem/J3DGraphAnimator/J3DSkinDeform.h" #include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphBase/J3DVertex.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" enum J3DMdlFlag { diff --git a/include/JSystem/J3DGraphBase/J3DGD.h b/include/JSystem/J3DGraphBase/J3DGD.h index 2ff7131106..1a10836999 100644 --- a/include/JSystem/J3DGraphBase/J3DGD.h +++ b/include/JSystem/J3DGraphBase/J3DGD.h @@ -2,7 +2,7 @@ #define J3DGD_H #include "dolphin/gd/GDBase.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" inline void J3DGDWrite_u8(u8 param) { __GDWrite(param); @@ -31,8 +31,8 @@ inline void J3DGDWriteBPCmd(u32 cmd) { } inline void J3DFifoLoadBPCmd(u32 cmd) { - GFX_FIFO(u8) = 0x61; - GFX_FIFO(u32) = cmd; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = cmd; } inline void J3DGDWriteXFCmd(u16 addr, u32 cmd) { @@ -49,17 +49,17 @@ inline void J3DGDWriteXFCmdHdr(u16 addr, u8 len) { } inline void J3DFifoWriteXFCmdHdr(u16 addr, u8 len) { - GFX_FIFO(u8) = 0x10; - GFX_FIFO(u16) = len - 1; - GFX_FIFO(u16) = addr; + GXWGFifo.u8 = 0x10; + GXWGFifo.u16 = len - 1; + GXWGFifo.u16 = addr; } inline void J3DGXCmd1f32ptr(f32* value) { - GFX_FIFO(u32) = *(u32*)value; + GXWGFifo.u32 = *(u32*)value; } inline void J3DGXCmd1f32(f32 value) { - GFX_FIFO(u32) = *(u32*)&value; + GXWGFifo.u32 = *(u32*)&value; } inline void J3DGDWriteCPCmd(u8 reg, u32 value) { @@ -104,9 +104,9 @@ void J3DFifoLoadNrmMtxToTexMtx3x3(f32 (*)[3], u32); void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize); static inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) { - GFX_FIFO(u8) = cmd; - GFX_FIFO(u16) = indx; - GFX_FIFO(u16) = addr; + GXWGFifo.u8 = cmd; + GXWGFifo.u16 = indx; + GXWGFifo.u16 = addr; } inline void J3DGDSetNumChans(u8 numChans) { diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index afa53214db..e045b31edc 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -3,7 +3,7 @@ #include "JSystem/J3DGraphBase/J3DShapeDraw.h" #include "JSystem/J3DGraphBase/J3DShapeMtx.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" class J3DCurrentMtxInfo { @@ -13,15 +13,15 @@ public: }; static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) { - GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG; - GFX_FIFO(u8) = cmd; - GFX_FIFO(u32) = param; + GXWGFifo.u8 = GX_CMD_LOAD_CP_REG; + GXWGFifo.u8 = cmd; + GXWGFifo.u32 = param; } static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) { - GFX_FIFO(u8) = GX_CMD_LOAD_XF_REG; - GFX_FIFO(u16) = (len - 1); - GFX_FIFO(u16) = cmd; + GXWGFifo.u8 = GX_CMD_LOAD_XF_REG; + GXWGFifo.u16 = (len - 1); + GXWGFifo.u16 = cmd; } class J3DCurrentMtx : public J3DCurrentMtxInfo { @@ -44,8 +44,8 @@ public: J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B J3DFifoWriteXFCmd(0x1018, 2); - GFX_FIFO(u32) = getMtxIdxRegA(); - GFX_FIFO(u32) = getMtxIdxRegB(); + GXWGFifo.u32 = getMtxIdxRegA(); + GXWGFifo.u32 = getMtxIdxRegB(); } void setCurrentTexMtx(u8 param_1, u8 param_2, u8 param_3, u8 param_4, diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 824ab06de0..222d35a0a1 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -1,7 +1,7 @@ #ifndef J3DSHAPEMTX_H #define J3DSHAPEMTX_H -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" class J3DTexMtx; class J3DTexGenBlock; diff --git a/include/JSystem/J3DGraphBase/J3DStruct.h b/include/JSystem/J3DGraphBase/J3DStruct.h index 1932113cb1..06fb45e5b0 100644 --- a/include/JSystem/J3DGraphBase/J3DStruct.h +++ b/include/JSystem/J3DGraphBase/J3DStruct.h @@ -2,7 +2,7 @@ #define J3DSTRUCT_H #include "dolphin/gx/GXStruct.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "dolphin/mtx/mtx44.h" #include "dolphin/mtx/vec.h" diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index a7a3469938..774f303fc1 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -1,7 +1,7 @@ #ifndef J3DSYS_H #define J3DSYS_H -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" // Perhaps move to a new J3DEnum.h? diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h index a37ceb8006..c0741a4d0a 100644 --- a/include/JSystem/J3DGraphBase/J3DTexture.h +++ b/include/JSystem/J3DGraphBase/J3DTexture.h @@ -3,7 +3,7 @@ #include "JSystem/J3DGraphBase/J3DStruct.h" #include "JSystem/JUtility/JUTTexture.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" class J3DTexture { diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index 5cd4601ef5..5ffe0a73d9 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -2,7 +2,7 @@ #define J3DTRANSFORM_H #include "JSystem/JGeometry.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" struct J3DTextureSRTInfo; diff --git a/include/JSystem/J3DGraphLoader/J3DModelLoader.h b/include/JSystem/J3DGraphLoader/J3DModelLoader.h index 1ebc2614bb..2770e348ba 100644 --- a/include/JSystem/J3DGraphLoader/J3DModelLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DModelLoader.h @@ -2,7 +2,7 @@ #define J3DMODELLOADER_H #include "dolphin/types.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" class J3DModelData; class J3DMaterialTable; diff --git a/include/JSystem/J3DU/J3DUClipper.h b/include/JSystem/J3DU/J3DUClipper.h index 8e41a7ae89..e5df65b192 100644 --- a/include/JSystem/J3DU/J3DUClipper.h +++ b/include/JSystem/J3DU/J3DUClipper.h @@ -1,7 +1,7 @@ #ifndef J3DUCLIPPER_H #define J3DUCLIPPER_H -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" class J3DUClipper { diff --git a/include/JSystem/JAudio2/dspproc.h b/include/JSystem/JAudio2/dspproc.h index 50b438de27..4330bc177d 100644 --- a/include/JSystem/JAudio2/dspproc.h +++ b/include/JSystem/JAudio2/dspproc.h @@ -1,7 +1,7 @@ #ifndef DSPPROC_H #define DSPPROC_H -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" void DsyncFrame2ch(u32 param_0, u32 param_1, u32 param_2); void DsyncFrame4ch(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4); diff --git a/include/JSystem/JAudio2/osdsp_task.h b/include/JSystem/JAudio2/osdsp_task.h index c27f585f0c..3252dadd65 100644 --- a/include/JSystem/JAudio2/osdsp_task.h +++ b/include/JSystem/JAudio2/osdsp_task.h @@ -1,22 +1,12 @@ #ifndef OSDSP_TASK_H #define OSDSP_TASK_H -#include "dolphin/os/OSInterrupt.h" +#include "dolphin/dsp.h" struct DSPTaskInfo; extern DSPTaskInfo* DSP_prior_task; -#ifdef __cplusplus -extern "C" { -#endif - -void __DSPHandler(OSInterrupt interrupt, OSContext* context); - -#ifdef __cplusplus -} -#endif - void DsyncFrame2(u32 param_0, u32 param_1, u32 param_2); #endif /* OSDSP_TASK_H */ diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index e7552610d1..5d18293601 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -104,6 +104,9 @@ struct TLinkList : public TNodeLinkList { TNodeLinkList::const_iterator::operator++(); return *this; } + + friend bool operator==(const_iterator a, const_iterator b) { return a == b; } + friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); } }; TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; } diff --git a/include/JSystem/JKernel/JKRAramPiece.h b/include/JSystem/JKernel/JKRAramPiece.h index e1d959b5ae..8cf3213d4e 100644 --- a/include/JSystem/JKernel/JKRAramPiece.h +++ b/include/JSystem/JKernel/JKRAramPiece.h @@ -2,7 +2,7 @@ #define JKRARAMPIECE_H #include "JSystem/JSupport/JSUList.h" -#include "dolphin/ar/arq.h" +#include "dolphin/arq.h" #include "dolphin/os/OSMessage.h" #include "dolphin/os/OSMutex.h" diff --git a/include/JSystem/JKernel/JKRDvdFile.h b/include/JSystem/JKernel/JKRDvdFile.h index 442ef026c6..9281ac3267 100644 --- a/include/JSystem/JKernel/JKRDvdFile.h +++ b/include/JSystem/JKernel/JKRDvdFile.h @@ -2,7 +2,7 @@ #define JKRDVDFILE_H #include "JSystem/JKernel/JKRFile.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "dolphin/os/OSMessage.h" #include "dolphin/os/OSMutex.h" diff --git a/include/JSystem/JKernel/JKRFileFinder.h b/include/JSystem/JKernel/JKRFileFinder.h index 7a8e8f41f0..24a88e6d24 100644 --- a/include/JSystem/JKernel/JKRFileFinder.h +++ b/include/JSystem/JKernel/JKRFileFinder.h @@ -1,7 +1,7 @@ #ifndef JKRFILEFINDER_H #define JKRFILEFINDER_H -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" class JKRFileFinder { public: diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index e305ccc744..2ce474db6a 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -1,7 +1,7 @@ #ifndef JMATH_H #define JMATH_H -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" void JMAMTXApplyScale(const Mtx, Mtx, f32, f32, f32); void JMAEulerToQuat(s16 param_0, s16 param_1, s16 param_2, Quaternion* param_3); diff --git a/include/JSystem/JParticle/JPADrawInfo.h b/include/JSystem/JParticle/JPADrawInfo.h index c0643214a4..f241d73a27 100644 --- a/include/JSystem/JParticle/JPADrawInfo.h +++ b/include/JSystem/JParticle/JPADrawInfo.h @@ -1,7 +1,7 @@ #ifndef JPADRAWINFO_H #define JPADRAWINFO_H -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" class JPADrawInfo { public: diff --git a/include/JSystem/JParticle/JPAMath.h b/include/JSystem/JParticle/JPAMath.h index 0451090843..68701359ce 100644 --- a/include/JSystem/JParticle/JPAMath.h +++ b/include/JSystem/JParticle/JPAMath.h @@ -1,7 +1,7 @@ #ifndef JPAMATH_H #define JPAMATH_H -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "JSystem/JGeometry.h" void JPAGetDirMtx(JGeometry::TVec3 const& param_0, f32 (*param_1)[4]); diff --git a/include/JSystem/JStage/JSGObject.h b/include/JSystem/JStage/JSGObject.h index 6d700ffd1b..742406b8b0 100644 --- a/include/JSystem/JStage/JSGObject.h +++ b/include/JSystem/JStage/JSGObject.h @@ -1,7 +1,7 @@ #ifndef JSGOBJECT_H #define JSGOBJECT_H -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" namespace JStage { struct TObject { diff --git a/include/JSystem/JStudio/JStudio/jstudio-control.h b/include/JSystem/JStudio/JStudio/jstudio-control.h index 91fcae46a6..26fb5f5d4e 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-control.h +++ b/include/JSystem/JStudio/JStudio/jstudio-control.h @@ -4,7 +4,7 @@ #include "JSystem/JStudio/JStudio/fvb.h" #include "JSystem/JStudio/JStudio/stb.h" #include "JSystem/JStudio/JStudio/ctb.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/mtx/vec.h" namespace JStudio { diff --git a/include/JSystem/JStudio/JStudio/jstudio-math.h b/include/JSystem/JStudio/JStudio/jstudio-math.h index 8281c5af32..d28aadf119 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-math.h +++ b/include/JSystem/JStudio/JStudio/jstudio-math.h @@ -1,7 +1,7 @@ #ifndef JSTUDIO_MATH_H #define JSTUDIO_MATH_H -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" namespace JStudio { namespace math { diff --git a/include/JSystem/JUtility/JUTAssert.h b/include/JSystem/JUtility/JUTAssert.h index 30a6f62b8b..f7e9c2a39c 100644 --- a/include/JSystem/JUtility/JUTAssert.h +++ b/include/JSystem/JUtility/JUTAssert.h @@ -2,7 +2,7 @@ #define JUTASSERT_H #include "dolphin/types.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #ifdef DEBUG #define JUT_ASSERT(LINE, COND) \ diff --git a/include/JSystem/JUtility/JUTConsole.h b/include/JSystem/JUtility/JUTConsole.h index bbf2829d34..e45bde9ddc 100644 --- a/include/JSystem/JUtility/JUTConsole.h +++ b/include/JSystem/JUtility/JUTConsole.h @@ -94,7 +94,7 @@ private: private: /* 0x20 */ u32 field_0x20; - /* 0x24 */ u32 mMaxLines; + /* 0x24 */ int mMaxLines; /* 0x28 */ u8* mBuf; /* 0x2C */ bool field_0x2c; /* 0x30 */ int field_0x30; diff --git a/include/JSystem/JUtility/JUTDirectFile.h b/include/JSystem/JUtility/JUTDirectFile.h index 583e7c88c7..f5f4ac2709 100644 --- a/include/JSystem/JUtility/JUTDirectFile.h +++ b/include/JSystem/JUtility/JUTDirectFile.h @@ -1,7 +1,7 @@ #ifndef JUTDIRECTFILE_H #define JUTDIRECTFILE_H -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #define JUTDF_BUFSIZE (0x800) diff --git a/include/JSystem/JUtility/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad.h index 5e326217da..568731bdb1 100644 --- a/include/JSystem/JUtility/JUTGamePad.h +++ b/include/JSystem/JUtility/JUTGamePad.h @@ -3,7 +3,7 @@ #include "JSystem/JKernel/JKRDisposer.h" #include "dolphin/os/OSTime.h" -#include "dolphin/pad/Pad.h" +#include "dolphin/pad.h" #include "dolphin/types.h" typedef void (*callbackFn)(int, void*); @@ -195,9 +195,9 @@ public: struct CRumble { CRumble(JUTGamePad* pad) { clear(pad); } - static PADMask sChannelMask[4]; + static u32 sChannelMask[4]; static bool mStatus[4]; - static PADMask mEnabled; + static u32 mEnabled; enum ERumble { VAL_0 = 0, diff --git a/include/JSystem/JUtility/JUTGraphFifo.h b/include/JSystem/JUtility/JUTGraphFifo.h index 6304ec0a5e..831a799432 100644 --- a/include/JSystem/JUtility/JUTGraphFifo.h +++ b/include/JSystem/JUtility/JUTGraphFifo.h @@ -1,7 +1,7 @@ #ifndef JUTGRAPHFIFO_H #define JUTGRAPHFIFO_H -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" class JUTGraphFifo { public: diff --git a/include/JSystem/JUtility/JUTVideo.h b/include/JSystem/JUtility/JUTVideo.h index 1cf622b515..1030b7f2b8 100644 --- a/include/JSystem/JUtility/JUTVideo.h +++ b/include/JSystem/JUtility/JUTVideo.h @@ -4,7 +4,7 @@ #include "dolphin/gx/GXStruct.h" #include "dolphin/os/OSMessage.h" #include "dolphin/os/OSTime.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" typedef u8 (*Pattern)[2]; diff --git a/include/JSystem/TPosition3.hh b/include/JSystem/TPosition3.hh index 3ff7bb5b23..6bde151d05 100644 --- a/include/JSystem/TPosition3.hh +++ b/include/JSystem/TPosition3.hh @@ -1,7 +1,7 @@ #ifndef TPOSITION3_H #define TPOSITION3_H -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "JSystem/JMath/JMath.h" namespace JGeometry { diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h index 7964ee2d56..ae65e692fe 100644 --- a/include/SSystem/SComponent/c_lib.h +++ b/include/SSystem/SComponent/c_lib.h @@ -2,7 +2,7 @@ #define C_LIB_H_ #include "SSystem/SComponent/c_xyz.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" inline bool cLib_IsZero(f32 value) { return fabsf(value) < 8e-11f; diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h index 1772dbbc30..88463dc2a3 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h @@ -1,5 +1,16 @@ #ifndef METROTRK_PORTABLE_MAIN_TRK_H #define METROTRK_PORTABLE_MAIN_TRK_H +#include "trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRK_main(void); + +#ifdef __cplusplus +} +#endif #endif /* METROTRK_PORTABLE_MAIN_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h index 7a6654e3c7..d06794c1e7 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h @@ -1,35 +1,15 @@ #ifndef METROTRK_PORTABLE_MSGBUF_H #define METROTRK_PORTABLE_MSGBUF_H -#include "dolphin/types.h" +#include "trk.h" #ifdef __cplusplus extern "C" { #endif -typedef int MessageBufferID; - -#define TRKMSGBUF_SIZE (0x800 + 0x80) - -typedef struct TRKBuffer { - /* 0x00 */ u32 _00; - /* 0x04 */ BOOL isInUse; - /* 0x08 */ u32 length; - /* 0x0C */ u32 position; - /* 0x10 */ u8 data[TRKMSGBUF_SIZE]; -} TRKBuffer; - -/* typedef struct TRKBuffer { - u32 _00; - u32 _04; - s32 _08; - u32 _0C; - u32 _10; - u8 m_buffer[0x87C]; -} TRKBuffer; */ - -s32 TRKSetBufferPosition(TRKBuffer*, u32); +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos); void* TRKGetBuffer(int); +void TRKResetBuffer(TRKBuffer* msg, BOOL keepData); #ifdef __cplusplus } diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h new file mode 100644 index 0000000000..2a75211bd8 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h @@ -0,0 +1,26 @@ +#ifndef OS_DOLPHIN_DDH_STUBS_H +#define OS_DOLPHIN_DDH_STUBS_H + +#include "dolphin/os.h" +#include "amcstubs/AmcExi2Stubs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int ddh_cc_initialize(void* inputPendingPtrRef, AmcEXICallback monitorCallback); +int ddh_cc_shutdown(); +int ddh_cc_open(); +int ddh_cc_close(); +int ddh_cc_read(u8* data, int size); +int ddh_cc_write(const u8* bytes, int length); +int ddh_cc_pre_continue(); +int ddh_cc_post_stop(); +int ddh_cc_peek(); +int ddh_cc_initinterrupts(); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_DDH_STUBS_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/GDEV_Stubs.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/GDEV_Stubs.h new file mode 100644 index 0000000000..2ed57f5fd1 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/GDEV_Stubs.h @@ -0,0 +1,26 @@ +#ifndef OS_DOLPHIN_GDEV_STUBS_H +#define OS_DOLPHIN_GDEV_STUBS_H + +#include "dolphin/os.h" +#include "amcstubs/AmcExi2Stubs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int gdev_cc_initialize(void* inputPendingPtrRef, AmcEXICallback monitorCallback); +int gdev_cc_shutdown(); +int gdev_cc_open(); +int gdev_cc_close(); +int gdev_cc_read(u8* data, int size); +int gdev_cc_write(const u8* bytes, int length); +int gdev_cc_pre_continue(); +int gdev_cc_post_stop(); +int gdev_cc_peek(); +int gdev_cc_initinterrupts(); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_GDEV_STUBS_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h index 4758310b93..8ac33304df 100644 --- a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h @@ -1,6 +1,24 @@ #ifndef OS_DOLPHIN_UDP_STUBS_H #define OS_DOLPHIN_UDP_STUBS_H -#include "dolphin/types.h" +#include "dolphin/os.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int udp_cc_initialize(void* flagOut, __OSInterruptHandler handler); +int udp_cc_shutdown(void); +int udp_cc_open(void); +int udp_cc_close(void); +int udp_cc_read(u8* dest, int size); +int udp_cc_write(const u8* src, int size); +int udp_cc_peek(void); +int udp_cc_pre_continue(void); +int udp_cc_post_stop(void); + +#ifdef __cplusplus +} +#endif #endif /* OS_DOLPHIN_UDP_STUBS_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h index c1021578fc..24f44107b0 100644 --- a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h @@ -1,17 +1,21 @@ #ifndef OS_DOLPHIN_DOLPHIN_TRK_GLUE_H #define OS_DOLPHIN_DOLPHIN_TRK_GLUE_H -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "trk.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef int (*DBCommFunc)(); -typedef int (*DBCommInitFunc)(void*, OSInterruptHandler); +typedef int (*DBCommInitFunc)(void*, __OSInterruptHandler); typedef int (*DBCommReadFunc)(u8*, int); typedef int (*DBCommWriteFunc)(const u8*, int); typedef struct DBCommTable { DBCommInitFunc initialize_func; - DBCommFunc initinterrupts_func; + DBCommFunc init_interrupts_func; DBCommFunc shutdown_func; DBCommFunc peek_func; DBCommReadFunc read_func; @@ -24,6 +28,13 @@ typedef struct DBCommTable { void UnreserveEXI2Port(); void ReserveEXI2Port(); -s32 TRKWriteUARTN(const void*, u32); +UARTError TRKWriteUARTN(const void*, u32); +void TRKLoadContext(OSContext* ctx, u32 r4); +int InitMetroTRKCommTable(int hwId); + +#ifdef __cplusplus +} +#endif + #endif /* OS_DOLPHIN_DOLPHIN_TRK_GLUE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h index 4b4a839640..a1f1b82dc6 100644 --- a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h @@ -9,7 +9,7 @@ extern "C" { #endif void TRKSwapAndGo(); -void TRKTargetSetStopped(s32); +void TRKTargetSetStopped(unsigned int); DSError TRKTargetInterrupt(TRKEvent*); DSError TRKTargetSupportRequest(); void TRKDestructEvent(TRKEvent*); @@ -124,16 +124,16 @@ typedef ProcessorState_PPC_6xx_7xx ProcessorState_PPC; extern ProcessorState_PPC gTRKCPUState; typedef struct TRKState { - /* 0x00 */ u32 GPR[32]; - /* 0x80 */ u32 LR; - /* 0x84 */ u32 CTR; - /* 0x88 */ u32 XER; - /* 0x8C */ u32 MSR; - /* 0x90 */ u32 DAR; - /* 0x94 */ u32 DSISR; - /* 0x98 */ u32 stopped; - /* 0x9C */ u32 inputActivated; - /* 0xA0 */ void* inputPendingPtr; + u32 gpr[32]; // _00 + u32 lr; // _80 + u32 ctr; // _84 + u32 xer; // _88 + u32 msr; // _8C + u32 dar; // _90 + u32 dsisr; // _94 + BOOL isStopped; // _98 + BOOL inputActivated; // _9C + void* inputPendingPtr; // _A0 } TRKState; extern TRKState gTRKState; diff --git a/include/Z2AudioLib/Z2Audience.h b/include/Z2AudioLib/Z2Audience.h index b79b09c133..5b6e0acd80 100644 --- a/include/Z2AudioLib/Z2Audience.h +++ b/include/Z2AudioLib/Z2Audience.h @@ -8,7 +8,7 @@ #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JAudio2/JAUAudibleParam.h" #include "JSystem/TPosition3.hh" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" struct Z2Audible; diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index e12b5b2c0a..0fd8779bd0 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -5,7 +5,7 @@ #include "SSystem/SComponent/c_xyz.h" #include "SSystem/SComponent/c_sxyz.h" #include "d/bg/d_bg_w_base.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" class cBgS_GrpPassChk; diff --git a/include/d/kankyo/d_kankyo_rain.h b/include/d/kankyo/d_kankyo_rain.h index 04a03c818a..8644fa695e 100644 --- a/include/d/kankyo/d_kankyo_rain.h +++ b/include/d/kankyo/d_kankyo_rain.h @@ -1,7 +1,7 @@ #ifndef D_KANKYO_D_KANKYO_RAIN_H #define D_KANKYO_D_KANKYO_RAIN_H -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" struct cXyz; struct _GXColor; diff --git a/include/d/menu/d_menu_window.h b/include/d/menu/d_menu_window.h index 394d3ddee8..6b9a6f0954 100644 --- a/include/d/menu/d_menu_window.h +++ b/include/d/menu/d_menu_window.h @@ -71,18 +71,18 @@ public: GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0); + GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0); GXTexCoord2s8(0, 0); - i_GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0); + GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0); GXTexCoord2s8(1, 0); - i_GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0); + GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0); GXTexCoord2s8(1, 1); - i_GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0); + GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0); GXTexCoord2s8(0, 1); - i_GXEnd(); + GXEnd(); } } */ /* 801FE2E8 */ virtual ~dDlst_MENU_CAPTURE_c(); diff --git a/include/dol2asm.h b/include/dol2asm.h index f6175859af..86665c181d 100644 --- a/include/dol2asm.h +++ b/include/dol2asm.h @@ -23,7 +23,6 @@ #define SECTION_DTORS10 __declspec(section ".dtors$10") #define SECTION_DTORS15 __declspec(section ".dtors$15") #define COMPILER_STRIP_GATE(NAME, VALUE) SECTION_DEAD void* const cg_##NAME = (void*)(VALUE) -#define ALIGN_DECL(ALIGNMENT) __attribute__((aligned(ALIGNMENT))) #define REGISTER_CTORS(ADDR, FUNCTION) SECTION_CTORS void* const _ctors_##ADDR = (void*)(FUNCTION); #else #define SECTION_INIT __declspec(section ".init") @@ -44,7 +43,6 @@ #define SECTION_DTORS10 __declspec(section ".dtors$10") #define SECTION_DTORS15 __declspec(section ".dtors$15") #define COMPILER_STRIP_GATE(NAME, VALUE) SECTION_DEAD void* const cg_##NAME = (void*)(VALUE) -#define ALIGN_DECL(ALIGNMENT) __attribute__((aligned(ALIGNMENT))) #define REGISTER_CTORS(ADDR, FUNCTION) SECTION_CTORS void* const _ctors_##ADDR = (void*)(FUNCTION); #endif @@ -67,7 +65,6 @@ #define SECTION_DTORS10 #define SECTION_DTORS15 #define COMPILER_STRIP_GATE(...) -#define ALIGN_DECL(...) #define REGISTER_CTORS(...) // vscode doesn't like asm and nofralloc very much diff --git a/include/dolphin/ai/ai.h b/include/dolphin/ai.h similarity index 100% rename from include/dolphin/ai/ai.h rename to include/dolphin/ai.h diff --git a/include/dolphin/amcstubs/AmcExi2Stubs.h b/include/dolphin/amcstubs/AmcExi2Stubs.h index 1bab902b90..eda84da6b0 100644 --- a/include/dolphin/amcstubs/AmcExi2Stubs.h +++ b/include/dolphin/amcstubs/AmcExi2Stubs.h @@ -1,14 +1,14 @@ #ifndef AMCEXI2STUBS_H #define AMCEXI2STUBS_H -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" #ifdef __cplusplus extern "C" { #endif -typedef OSInterruptHandler AmcEXICallback; +typedef __OSInterruptHandler AmcEXICallback; typedef enum { AMC_EXI_NO_ERROR = 0, diff --git a/include/dolphin/ar/ar.h b/include/dolphin/ar.h similarity index 93% rename from include/dolphin/ar/ar.h rename to include/dolphin/ar.h index c04e41f1de..6b707e678a 100644 --- a/include/dolphin/ar/ar.h +++ b/include/dolphin/ar.h @@ -15,6 +15,7 @@ void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length); u32 ARInit(u32* stack_index_addr, u32 num_entries); u32 ARAlloc(u32 length); u32 ARGetSize(void); +u16 __ARGetInterruptStatus(); #ifdef __cplusplus }; diff --git a/include/dolphin/ar/arq.h b/include/dolphin/arq.h similarity index 100% rename from include/dolphin/ar/arq.h rename to include/dolphin/arq.h diff --git a/include/dolphin/card/card.h b/include/dolphin/card.h similarity index 100% rename from include/dolphin/card/card.h rename to include/dolphin/card.h diff --git a/include/dolphin/card/CARDPriv.h b/include/dolphin/card/CARDPriv.h index 8af6a41797..86585faf87 100644 --- a/include/dolphin/card/CARDPriv.h +++ b/include/dolphin/card/CARDPriv.h @@ -3,6 +3,7 @@ #include "dolphin/os/OSAlarm.h" #include "dolphin/os/OSThread.h" +#include "dolphin/dsp.h" #ifdef __cplusplus extern "C" { diff --git a/include/dolphin/db/db.h b/include/dolphin/db.h similarity index 100% rename from include/dolphin/db/db.h rename to include/dolphin/db.h diff --git a/include/dolphin/dsp/dsp.h b/include/dolphin/dsp.h similarity index 67% rename from include/dolphin/dsp/dsp.h rename to include/dolphin/dsp.h index c6bf34943b..7e676489b1 100644 --- a/include/dolphin/dsp/dsp.h +++ b/include/dolphin/dsp.h @@ -2,14 +2,15 @@ #define DSP_H #include "dolphin/os/OSTime.h" - -volatile u16 __DSPRegs[32] : 0xCC005000; -volatile u32 __AIRegs[8] : 0xCC006C00; +#include "dolphin/os/OSInterrupt.h" #ifdef __cplusplus extern "C" { #endif +volatile u16 __DSPRegs[32] : 0xCC005000; +volatile u32 __AIRegs[8] : 0xCC006C00; + #define DSP_TASK_FLAG_CLEARALL 0x00000000 #define DSP_TASK_FLAG_ATTACHED 0x00000001 #define DSP_TASK_FLAG_CANCEL 0x00000002 @@ -19,6 +20,29 @@ extern "C" { #define DSP_TASK_STATE_YIELD 2 #define DSP_TASK_STATE_DONE 3 +#define DSP_MAILBOX_IN_HI (0) +#define DSP_MAILBOX_IN_LO (1) +#define DSP_MAILBOX_OUT_HI (2) +#define DSP_MAILBOX_OUT_LO (3) +#define DSP_CONTROL_STATUS (5) + +#define DSP_ARAM_SIZE (9) +#define DSP_ARAM_MODE (11) +#define DSP_ARAM_REFRESH (13) +#define DSP_ARAM_DMA_MM_HI (16) // Main mem address +#define DSP_ARAM_DMA_MM_LO (17) +#define DSP_ARAM_DMA_ARAM_HI (18) // ARAM address +#define DSP_ARAM_DMA_ARAM_LO (19) +#define DSP_ARAM_DMA_SIZE_HI (20) // DMA buffer size +#define DSP_ARAM_DMA_SIZE_LO (21) + +#define DSP_DMA_START_HI (24) // DMA start address +#define DSP_DMA_START_LO (25) +#define DSP_DMA_CONTROL_LEN (27) +#define DSP_DMA_BYTES_LEFT (29) + +#define DSP_DMA_START_FLAG (0x8000) // set to start DSP + typedef void (*DSPCallback)(void* task); typedef struct DSPTaskInfo DSPTaskInfo; @@ -56,15 +80,16 @@ u32 DSPReadMailFromDSP(void); void DSPSendMailToDSP(u32 mail); void DSPAssertInt(); void DSPInit(void); - -#ifdef __cplusplus -} -#endif - void DSPReleaseHalt2(u32 msg); u16 DSP_CreateMap2(u32 msg); int DSPSendCommands2(u32* msgs, u32 param_1, void (*param_2)(u16)); void DsetupTable(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4); void DsetMixerLevel(f32 level); +void __DSPHandler(__OSInterrupt interrupt, OSContext* context); + +#ifdef __cplusplus +} +#endif + #endif /* DSP_H */ diff --git a/include/dolphin/dsp/dsp_task.h b/include/dolphin/dsp/dsp_task.h index 0e7ff14ed6..a3a8b33dd1 100644 --- a/include/dolphin/dsp/dsp_task.h +++ b/include/dolphin/dsp/dsp_task.h @@ -1,7 +1,7 @@ #ifndef DSP_TASK_H #define DSP_TASK_H -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" extern DSPTaskInfo* __DSP_tmp_task; extern DSPTaskInfo* __DSP_last_task; diff --git a/include/dolphin/dvd/dvd.h b/include/dolphin/dvd.h similarity index 98% rename from include/dolphin/dvd/dvd.h rename to include/dolphin/dvd.h index 122cc2a445..53b3047552 100644 --- a/include/dolphin/dvd/dvd.h +++ b/include/dolphin/dvd.h @@ -139,6 +139,8 @@ s32 DVDCancel(DVDCommandBlock* block); void __DVDPrepareResetAsync(DVDCBCallback callbac); BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2); +DVDCommandBlock* __DVDPopWaitingQueue(void); + #ifdef __cplusplus }; #endif diff --git a/include/dolphin/gd.h b/include/dolphin/gd.h new file mode 100644 index 0000000000..246f0fdbb7 --- /dev/null +++ b/include/dolphin/gd.h @@ -0,0 +1,7 @@ +#ifndef GD_H +#define GD_H + +#include "dolphin/gd/GDBase.h" +#include "dolphin/gd/GDGeometry.h" + +#endif /* GD_H */ diff --git a/include/dolphin/gd/GDBase.h b/include/dolphin/gd/GDBase.h index 2c2346b2a6..5564dafad3 100644 --- a/include/dolphin/gd/GDBase.h +++ b/include/dolphin/gd/GDBase.h @@ -1,7 +1,7 @@ #ifndef GDBASE_H #define GDBASE_H -#include "dolphin/types.h" +#include "gx.h" #ifdef __cplusplus extern "C" { @@ -23,41 +23,41 @@ void GDFlushCurrToMem(); void GDPadCurr32(); void GDOverflowed(void); -inline void __GDWrite(u8 data) { +static inline void __GDWrite(u8 data) { *__GDCurrentDL->ptr++ = data; } -inline void GDSetCurrent(GDLObj* obj) { +static inline void GDSetCurrent(GDLObj* obj) { __GDCurrentDL = obj; } -inline u32 GDGetGDLObjOffset(GDLObj* obj) { +static inline u32 GDGetGDLObjOffset(GDLObj* obj) { return (u32)(obj->ptr - obj->start); } -inline u8* GDGetCurrPointer() { +static inline u8* GDGetCurrPointer() { return __GDCurrentDL->ptr; } -inline s32 GDGetCurrOffset() { +static inline s32 GDGetCurrOffset() { return __GDCurrentDL->ptr - __GDCurrentDL->start; } -inline void GDSetCurrOffset(s32 offs) { +static inline void GDSetCurrOffset(s32 offs) { __GDCurrentDL->ptr = __GDCurrentDL->start + offs; } -inline void GDAdvCurrOffset(s32 offs) { +static inline void GDAdvCurrOffset(s32 offs) { __GDCurrentDL->ptr += offs; } -inline void GDOverflowCheck(u32 len) { +static inline void GDOverflowCheck(u32 len) { if (__GDCurrentDL->ptr + len > __GDCurrentDL->end) { GDOverflowed(); } } -inline void GDWrite_u32(u32 v) { +static inline void GDWrite_u32(u32 v) { GDOverflowCheck(4); __GDWrite((v >> 24) & 0xff); __GDWrite((v >> 16) & 0xff); @@ -65,17 +65,30 @@ inline void GDWrite_u32(u32 v) { __GDWrite((v >> 0) & 0xff); } -inline void GDWrite_u16(u16 v) { +static inline void GDWrite_u16(u16 v) { GDOverflowCheck(2); __GDWrite(v >> 8); __GDWrite(v & 0xff); } -inline void GDWrite_u8(u8 v) { +static inline void GDWrite_u8(u8 v) { GDOverflowCheck(1); __GDWrite(v); } +static inline void GDWriteCPCmd(u8 addr, u32 v) { + GDWrite_u8(8); + GDWrite_u8(addr); + GDWrite_u32(v); +} + +static inline void GDWriteXFCmd(u16 addr, u32 v) { + GDWrite_u8(0x10); + GDWrite_u16(0); + GDWrite_u16(addr); + GDWrite_u32(v); +} + #ifdef __cplusplus }; #endif diff --git a/include/dolphin/gd/GDGeometry.h b/include/dolphin/gd/GDGeometry.h index 4df5072e2b..5dc439e6e9 100644 --- a/include/dolphin/gd/GDGeometry.h +++ b/include/dolphin/gd/GDGeometry.h @@ -1,7 +1,7 @@ #ifndef GDGEOMETRY_H #define GDGEOMETRY_H -#include "dolphin/types.h" +#include "gx.h" #ifdef __cplusplus extern "C" { diff --git a/include/dolphin/gf/GFGeometry.h b/include/dolphin/gf/GFGeometry.h index 0fba814368..44626de942 100644 --- a/include/dolphin/gf/GFGeometry.h +++ b/include/dolphin/gf/GFGeometry.h @@ -1,7 +1,7 @@ #ifndef GFGEOMETRY_H #define GFGEOMETRY_H -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" void GFSetGenMode2(u8 param_0, u8 param_1, u8 param_2, u8 param_3, _GXCullMode param_4); diff --git a/include/dolphin/gx.h b/include/dolphin/gx.h new file mode 100644 index 0000000000..c20c6e630f --- /dev/null +++ b/include/dolphin/gx.h @@ -0,0 +1,224 @@ +#ifndef GX_H_ +#define GX_H_ + +#include "dolphin/gx/GXAttr.h" +#include "dolphin/gx/GXBump.h" +#include "dolphin/gx/GXDisplayList.h" +#include "dolphin/gx/GXFifo.h" +#include "dolphin/gx/GXFrameBuf.h" +#include "dolphin/gx/GXGeometry.h" +#include "dolphin/gx/GXInit.h" +#include "dolphin/gx/GXLight.h" +#include "dolphin/gx/GXMisc.h" +#include "dolphin/gx/GXPerf.h" +#include "dolphin/gx/GXPixel.h" +#include "dolphin/gx/GXTev.h" +#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GXTransform.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Pack value into bitfield +// clang-format off +#define GX_BITFIELD_SET(field, pos, size, value) (field) = __rlwimi((field), (value), 31 - (pos) - (size) + 1, (pos), (pos) + (size)-1) +#define GX_BITFIELD_TRUNC(field, pos, size, value) (__rlwimi((field), (value), 0, (pos), (pos) + (size)-1)) + +#define GX_BITGET(field, pos, size) ((field) >> (31 - (pos) - (size) + 1) & ((1 << (size)) - 1)) +#define GX_GET_REG(reg, st, end) GX_BITGET(reg, st, (end - st + 1)) +#define GX_SET_REG(reg, x, st, end) GX_BITFIELD_SET(reg, st, (end - st + 1), x) +#define GX_SET_TRUNC(reg, x, st, end) GX_BITFIELD_TRUNC((reg), (st), ((end) - (st) + 1), (x)) + +#define GXCOLOR_AS_U32(color) (*((u32*)&(color))) + +#define INSERT_FIELD(reg, value, nbits, shift) \ + (reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \ + ((u32) (value) << (shift)); + +#define FAST_FLAG_SET(regOrg, newFlag, shift, size) \ + do { \ + (regOrg) = (u32)__rlwimi((int)(regOrg), (int)(newFlag), (shift), (32 - (shift) - (size)), (31 - (shift))); \ + } while (0); +// clang-format on + +#define GX_LOAD_BP_REG 0x61 +#define GX_NOP 0 + +typedef union { + u8 u8; + u16 u16; + u32 u32; + u64 u64; + s8 s8; + s16 s16; + s32 s32; + s64 s64; + f32 f32; + f64 f64; +} PPCWGPipe; + +#define GXFIFO_ADDR 0xCC008000 +volatile PPCWGPipe GXWGFifo : GXFIFO_ADDR; + +#define GX_WRITE_U8(data) GXWGFifo.u8 = data; +#define GX_WRITE_U32(data) GXWGFifo.u32 = data; +#define GX_WRITE_F32(val) (GXWGFifo.f32 = (f32)val) + +#define GX_CP_LOAD_REG(addr, data) \ + GXWGFifo.s8 = GX_FIFO_CMD_LOAD_CP_REG; \ + GXWGFifo.s8 = (addr); \ + GXWGFifo.s32 = (data); + +/** + * Header for an XF register load + */ +#define GX_XF_LOAD_REG_HDR(addr) \ + GXWGFifo.s8 = GX_FIFO_CMD_LOAD_XF_REG; \ + GXWGFifo.s32 = (addr); + +/** + * Load immediate value into XF register + */ +#define GX_XF_LOAD_REG(addr, data) \ + GX_XF_LOAD_REG_HDR(addr); \ + GXWGFifo.s32 = (data); + +/** + * Load immediate value into BP register + */ +#define GX_BP_LOAD_REG(data) \ + GXWGFifo.s8 = GX_FIFO_CMD_LOAD_BP_REG; \ + GXWGFifo.s32 = (data); + +/** + * Load immediate values into multiple XF registers + */ +#define GX_XF_LOAD_REGS(size, addr) \ + { \ + u32 cmd = (size) << 16 | addr; \ + GX_XF_LOAD_REG_HDR(cmd); \ + } + +static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z) { + GXWGFifo.f32 = x; + GXWGFifo.f32 = y; + GXWGFifo.f32 = z; +} + +static inline void GXNormal3f32(const f32 x, const f32 y, const f32 z) { + GXWGFifo.f32 = x; + GXWGFifo.f32 = y; + GXWGFifo.f32 = z; +} + +static inline void GXPosition2f32(const f32 x, const f32 z) { + GXWGFifo.f32 = x; + GXWGFifo.f32 = z; +} + +static inline void GXColor1u32(const u32 c) { + GXWGFifo.u32 = c; +} + +static inline void GXTexCoord2f32(const f32 s, const f32 t) { + GXWGFifo.f32 = s; + GXWGFifo.f32 = t; +} + +static inline void GXTexCoord2u8(const u8 s, const u8 t) { + GXWGFifo.u8 = s; + GXWGFifo.u8 = t; +} + +static inline void GXTexCoord1x8(const u8 s) { + GXWGFifo.u8 = s; +} + +static inline void GXPosition2u16(const u16 x, const u16 y) { + GXWGFifo.u16 = x; + GXWGFifo.u16 = y; +} + +static inline void GXPosition1x16(const u16 x) { + GXWGFifo.u16 = x; +} + +static inline void GXPosition1x8(const u8 x) { + GXWGFifo.u8 = x; +} + +static inline void GXPosition3s8(const s8 x, const s8 y, const s8 z) { + GXWGFifo.s8 = x; + GXWGFifo.s8 = y; + GXWGFifo.s8 = z; +} + +static inline void GXPosition2s8(const s8 x, const s8 y) { + GXWGFifo.s8 = x; + GXWGFifo.s8 = 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; + GXWGFifo.s16 = z; +} + +static inline void GXTexCoord2s8(const s8 x, const s8 y) { + GXWGFifo.s8 = x; + GXWGFifo.s8 = y; +} + +static inline void GXTexCoord2u16(const u16 x, const u16 y) { + GXWGFifo.u16 = x; + GXWGFifo.u16 = y; +} + +static inline void GXTexCoord2s16(const s16 u, const s16 v) { + GXWGFifo.s16 = u; + GXWGFifo.s16 = v; +} + +static inline void GFWriteBPCmd(u32 param_1) { + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = param_1; +} + +static inline u32 GXReadCPReg(u32 addrLo, u32 addrHi) { + u32 hiStart, hiNew, lo; + hiStart = GX_GET_CP_REG(addrHi); + do { + hiNew = hiStart; + lo = GX_GET_CP_REG(addrLo); + hiStart = GX_GET_CP_REG(addrHi); + } while (hiStart != hiNew); + + return ((hiStart << 16) | lo); +} + +inline void GFFill(u16 param_1, u32 param_2) { + GXWGFifo.u8 = 0x10; + GXWGFifo.u16 = 0; + GXWGFifo.u16 = param_1; + GXWGFifo.u32 = param_2; +} + +static inline void GXEnd(void) {} + +extern GXRenderModeObj GXNtsc480IntDf; +extern GXRenderModeObj GXNtsc480Int; +extern GXRenderModeObj GXMpal480IntDf; +extern GXRenderModeObj GXPal528IntDf; +extern GXRenderModeObj GXEurgb60Hz480IntDf; + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h deleted file mode 100644 index da9fb1c9d0..0000000000 --- a/include/dolphin/gx/GX.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifndef GX_H_ -#define GX_H_ - -#include "dolphin/gx/GXAttr.h" -#include "dolphin/gx/GXBump.h" -#include "dolphin/gx/GXDisplayList.h" -#include "dolphin/gx/GXFifo.h" -#include "dolphin/gx/GXFrameBuf.h" -#include "dolphin/gx/GXGeometry.h" -#include "dolphin/gx/GXLight.h" -#include "dolphin/gx/GXMisc.h" -#include "dolphin/gx/GXPerf.h" -#include "dolphin/gx/GXPixel.h" -#include "dolphin/gx/GXTev.h" -#include "dolphin/gx/GXTexture.h" -#include "dolphin/gx/GXTransform.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Pack value into bitfield -#define GX_BITFIELD_SET(field, pos, size, value) (field) = __rlwimi((field), (value), 31 - (pos) - (size) + 1, (pos), (pos) + (size)-1) - -#define GX_BITGET(field, pos, size) ((field) >> (31 - (pos) - (size) + 1) & ((1 << (size)) - 1)) -#define GX_GET_REG(reg, st, end) GX_BITGET(reg, st, (end - st + 1)) -#define GX_SET_REG(reg, x, st, end) GX_BITFIELD_SET(reg, st, (end - st + 1), x) - -#define INSERT_FIELD(reg, value, nbits, shift) \ - (reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \ - ((u32) (value) << (shift)); - -#define FAST_FLAG_SET(regOrg, newFlag, shift, size) \ - do { \ - (regOrg) = (u32)__rlwimi((int)(regOrg), (int)(newFlag), (shift), (32 - (shift) - (size)), (31 - (shift))); \ - } while (0); - -#define GX_LOAD_BP_REG 0x61 -#define GX_NOP 0 - -typedef union { - u8 u8; - u16 u16; - u32 u32; - u64 u64; - s8 s8; - s16 s16; - s32 s32; - s64 s64; - f32 f32; - f64 f64; -} PPCWGPipe; - -#define GXFIFO_ADDR 0xCC008000 -volatile PPCWGPipe GXFIFO : GXFIFO_ADDR; - -#define GFX_FIFO(T) (*(volatile T*)GXFIFO_ADDR) - -#define GX_WRITE_U8(data) GXFIFO.u8 = data; -#define GX_WRITE_U32(data) GXFIFO.u32 = data; -#define GX_WRITE_F32(val) (GXFIFO.f32 = (f32)val) - -#define GX_CP_LOAD_REG(addr, data) \ - GXFIFO.s8 = GX_FIFO_CMD_LOAD_CP_REG; \ - GXFIFO.s8 = (addr); \ - GXFIFO.s32 = (data); - -/** - * Header for an XF register load - */ -#define GX_XF_LOAD_REG_HDR(addr) \ - GXFIFO.s8 = GX_FIFO_CMD_LOAD_XF_REG; \ - GXFIFO.s32 = (addr); - -/** - * Load immediate value into XF register - */ -#define GX_XF_LOAD_REG(addr, data) \ - GX_XF_LOAD_REG_HDR(addr); \ - GXFIFO.s32 = (data); - -/** - * Load immediate value into BP register - */ -#define GX_BP_LOAD_REG(data) \ - GXFIFO.s8 = GX_FIFO_CMD_LOAD_BP_REG; \ - GXFIFO.s32 = (data); - -/** - * Load immediate values into multiple XF registers - */ -#define GX_XF_LOAD_REGS(size, addr) \ - { \ - u32 cmd = (size) << 16 | addr; \ - GX_XF_LOAD_REG_HDR(cmd); \ - } - -inline void GXPosition3f32(f32 x, f32 y, f32 z) { - GXFIFO.f32 = x; - GXFIFO.f32 = y; - GXFIFO.f32 = z; -} - -inline void GXNormal3f32(f32 x, f32 y, f32 z) { - GXFIFO.f32 = x; - GXFIFO.f32 = y; - GXFIFO.f32 = z; -} - -inline void GXPosition2f32(f32 x, f32 z) { - GXFIFO.f32 = x; - GXFIFO.f32 = z; -} - -inline void GXColor1u32(u32 c) { - GFX_FIFO(u32) = c; -} - -inline void GXTexCoord2f32(f32 s, f32 t) { - GFX_FIFO(f32) = s; - GFX_FIFO(f32) = t; -} - -inline void GXTexCoord2u8(u8 s, u8 t) { - GFX_FIFO(u8) = s; - GFX_FIFO(u8) = t; -} - -inline void GXTexCoord1x8(u8 s) { - GFX_FIFO(u8) = s; -} - -inline void GXPosition2u16(u16 x, u16 y) { - GFX_FIFO(u16) = x; - GFX_FIFO(u16) = y; -} - -inline void GXPosition1x16(u16 x) { - GFX_FIFO(u16) = x; -} - -inline void GXPosition1x8(u8 x) { - GFX_FIFO(u8) = x; -} - -inline void GXPosition3s8(s8 x, s8 y, s8 z) { - GFX_FIFO(s8) = x; - GFX_FIFO(s8) = y; - GFX_FIFO(s8) = z; -} - -inline void GXPosition2s8(s8 x, s8 y) { - GFX_FIFO(s8) = x; - GFX_FIFO(s8) = y; -} - -inline void GXPosition2s16(s16 x, s16 y) { - GFX_FIFO(s16) = x; - GFX_FIFO(s16) = y; -} - -inline void i_GXPosition3s16(s16 x, s16 y, s16 z) { - GFX_FIFO(s16) = x; - GFX_FIFO(s16) = y; - GFX_FIFO(s16) = z; -} - -inline void GXTexCoord2s8(s8 x, s8 y) { - GFX_FIFO(s8) = x; - GFX_FIFO(s8) = y; -} - -inline void i_GXTexCoord2u16(u16 x, u16 y) { - GFX_FIFO(u16) = x; - GFX_FIFO(u16) = y; -} - -inline void GXTexCoord2s16(const s16 u, const s16 v) { - GFX_FIFO(s16) = u; - GFX_FIFO(s16) = v; -} - -inline void GFWriteBPCmd(u32 param_1) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = param_1; -} - -static inline u32 GXReadCPReg(u32 addrLo, u32 addrHi) { - u32 hiStart, hiNew, lo; - hiStart = GX_GET_CP_REG(addrHi); - do { - hiNew = hiStart; - lo = GX_GET_CP_REG(addrLo); - hiStart = GX_GET_CP_REG(addrHi); - } while (hiStart != hiNew); - - return ((hiStart << 16) | lo); -} - -inline void GFFill(u16 param_1, u32 param_2) { - GXFIFO.u8 = 0x10; - GXFIFO.u16 = 0; - GXFIFO.u16 = param_1; - GXFIFO.u32 = param_2; -} - -inline void i_GXEnd() {} - -#ifdef __cplusplus -}; -#endif - -#endif diff --git a/include/dolphin/gx/GXEnum.h b/include/dolphin/gx/GXEnum.h index 20f233037e..718069cdaa 100644 --- a/include/dolphin/gx/GXEnum.h +++ b/include/dolphin/gx/GXEnum.h @@ -20,15 +20,13 @@ typedef enum _GXCullMode { /* 0x3 */ GX_CULL_ALL } GXCullMode; -typedef enum _GXBoolVal { - /* 0x0 */ GX_FALSE, - /* 0x1 */ GX_TRUE, - /* 0x0 */ GX_DISABLE = 0, - /* 0x1 */ GX_ENABLE -} GXBoolVal; - typedef u8 GXBool; +#define GX_TRUE ((GXBool)1) +#define GX_FALSE ((GXBool)0) +#define GX_ENABLE ((GXBool)1) +#define GX_DISABLE ((GXBool)0) + typedef enum _GXTexMapID { /* 0x000 */ GX_TEXMAP0, /* 0x001 */ GX_TEXMAP1, @@ -228,29 +226,38 @@ typedef enum _GXAttr { } GXAttr; typedef enum _GXCompCnt { - /* 0x0 */ GX_POS_XY = 0, - /* 0x1 */ GX_POS_XYZ = 1, - /* 0x0 */ GX_NRM_XYZ = 0, - /* 0x1 */ GX_NRM_NBT = 1, - /* 0x2 */ GX_NRM_NBT3 = 2, - /* 0x0 */ GX_CLR_RGB = 0, - /* 0x1 */ GX_CLR_RGBA = 1, - /* 0x0 */ GX_TEX_S = 0, - /* 0x1 */ GX_TEX_ST = 1, + GX_POS_XY = 0, // Position X, Y (two components). + GX_POS_XYZ = 1, // Position X, Y, Z (three components). + + GX_NRM_XYZ = 0, // Normal X, Y, Z (three components). + GX_NRM_NBT = 1, // Normal, binormal, tangent (three components). + GX_NRM_NBT3 = 2, // Normal, binormal, tangent (three components). Use when NBT + // normal is indexed independently. + + GX_CLR_RGB = 0, // RGB (three components). + GX_CLR_RGBA = 1, // RGBA (four components). + + GX_TEX_S = 0, // Texture coordinate S (one component). + GX_TEX_ST = 1, // Texture coordinates S, T (two components). + + GX_COMPCNT_NULL = 0, // Null count. } GXCompCnt; typedef enum _GXCompType { - /* 0x0 */ GX_U8, - /* 0x1 */ GX_S8, - /* 0x2 */ GX_U16, - /* 0x3 */ GX_S16, - /* 0x4 */ GX_F32, - /* 0x0 */ GX_RGB565 = 0, - /* 0x1 */ GX_RGB8, - /* 0x2 */ GX_RGBX8, - /* 0x3 */ GX_RGBA4, - /* 0x4 */ GX_RGBA6, - /* 0x5 */ GX_RGBA8, + GX_U8 = 0, // Unsigned 8-bit. + GX_S8 = 1, // Signed 8-bit. + GX_U16 = 2, // Unsigned 16-bit. + GX_S16 = 3, // Signed 16-bit. + GX_F32 = 4, // Floating-point 32-bit. + + GX_RGB565 = 0, // RGB565 16-bit. + GX_RGB8 = 1, // RGB888 24-bit. + GX_RGBX8 = 2, // RGB888x 32-bit. + GX_RGBA4 = 3, // RGBA4444 16-bit. + GX_RGBA6 = 4, // RGBA6666 24-bit. + GX_RGBA8 = 5, // RGBA8888 32-bit. + + GX_COMP_NULL = 0, // Null type. } GXCompType; typedef enum _GXAttrType { @@ -335,28 +342,50 @@ typedef enum _GXTevAlphaArg { /* 0x7 */ GX_CA_ZERO, } GXTevAlphaArg; +/** + * RGB, RGBA, Intensity, Intensity/Alpha, Compressed, and Z texture format + * types. See GXCITexFmt for information on color index formats. The CTF format + * is used only by the GXSetTexCopyDst function to specify how data is copied + * out of the EFB into a texture in main memory. In order to actually use that + * texture, you must specify a non-copy format of matching size. For example, if + * copying using GX_CTF_RG8, you would apply the resulting texture using + * GX_TF_IA8. + */ typedef enum _GXTexFmt { - /* 0x0 */ GX_TF_I4, - /* 0x1 */ GX_TF_I8, - /* 0x2 */ GX_TF_IA4, - /* 0x3 */ GX_TF_IA8, - /* 0x4 */ GX_TF_RGB565, - /* 0x5 */ GX_TF_TGB5A3, - /* 0x6 */ GX_TF_RGBA8, - /* 0x7 */ GX_TF_CI4, - /* 0x8 */ GX_TF_CI8, - /* 0x9 */ GX_TF_CI14, - /* 0xE */ GX_TF_CMPR = 14, - /* 0x10 */ _GX_TF_ZTF = 0x10, - /* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF), - /* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF), - /* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF), - /* 0x20 */ _GX_TF_CTF = 0x20, - /* 0x28 */ _GX_CTF_R8 = 0x28, - /* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF), - /* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF), - /* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF), - /* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF), + // Intensities (I) and RGB/RGBA. + GX_TF_I4 = 0x0, // 4-bit I + GX_TF_I8 = 0x1, // 8-bit I + GX_TF_IA4 = 0x2, // 8-bit I + alpha (4+4). + GX_TF_IA8 = 0x3, // 16-bit I + alpha (8+8). + GX_TF_RGB565 = 0x4, // 16-bit RGB. + GX_TF_RGB5A3 = 0x5, // MSB=1, RGB555 (opaque). MSB=0, RGBA4443 (transparent). + GX_TF_RGBA8 = 0x6, // 32-bit RGB. + GX_TF_CI14 = 0x9, + GX_TF_CMPR = 0xE, // Compressed 4-bit texel. + + // Z-texture format. + GX_TF_Z8 = 0x11, // Unsigned 8-bit Z. For texture copies, specify the upper 8 bits of Z. + GX_TF_Z16 = 0x13, // Unsigned 16-bit Z. For texture copies, specify the upper 16 bits of Z. + GX_TF_Z24X8 = 0x16, // Unsigned 24-bit (32-bit texture) Z. For texture copies, copy the 24-bit + // Z and 0xff. + + // Copy-texture format. + GX_CTF_R4 = 0x20, // 4-bit red. For copying 4 bits from red. + GX_CTF_RA4 = 0x22, // 4-bit red + 4-bit alpha. For copying 4 bits from red, 4 bits from alpha. + GX_CTF_RA8 = 0x23, // 8-bit red + 8-bit alpha. For copying 8 bits from red, 8 bits from alpha. + GX_CTF_YUVA8 = 0x26, // 8-bit YUV + alpha. For copying 8 bits from YUV, 8 bits from alpha. + GX_CTF_A8 = 0x26, // 8-bit alpha. For copying 8 bits from alpha. + GX_CTF_R8 = 0x27, // 8-bit red. For copying 8 bits from red. + GX_CTF_G8 = 0x28, // 8-bit green. For copying 8 bits from green. + GX_CTF_B8 = 0x29, // 8-bit blue. For copying 8 bits from blue. + GX_CTF_RG8 = 0x2A, // 8-bit red +8-bit green. For copying 8 bits from red, 8 bits from green. + GX_CTF_GB8 = 0x2B, // 8-bit green +8-bit blue. For copying 8 bits from green, 8 bits from blue. + + // Copy-Z-texture format. + GX_CTF_Z4 = 0x30, // 4-bit Z. For copying the 4 upper bits from Z. + GX_CTF_Z8M = 0x39, // 8-bit Z (median byte). For copying the middle 8 bits of Z. + GX_CTF_Z8L = 0x3A, // 8-bit Z (lower byte). For copying the lower 8 bits of Z. + GX_CTF_Z16L = 0x3C, // 16-bit Z (lower portion). For copying the lower 16 bits of Z. } GXTexFmt; typedef enum _GXGamma { @@ -394,21 +423,9 @@ typedef enum _GXTlut { /* 0x12 */ GX_BIGTLUT2, /* 0x13 */ GX_BIGTLUT3, /* 0x13 */ GX_MAX_BIGTLUT = 4, -} GXTlut; -/* 8-bit version of GXTexFmt for use in structures */ -typedef enum _GXTexFmt8 { - /* 0x20 */ GX_CTF_R4 = (0x0 | _GX_TF_CTF), - /* 0x22 */ GX_CTF_RA4 = (0x2 | _GX_TF_CTF), - /* 0x23 */ GX_CTF_RA8 = (0x3 | _GX_TF_CTF), - /* 0x26 */ GX_CTF_YUVA8 = (0x6 | _GX_TF_CTF), - /* 0x27 */ GX_CTF_A8 = (0x7 | _GX_TF_CTF), - /* 0x28 */ GX_CTF_R8 = (0x8 | _GX_TF_CTF), - /* 0x29 */ GX_CTF_G8 = (0x9 | _GX_TF_CTF), - /* 0x2A */ GX_CTF_B8 = (0xA | _GX_TF_CTF), - /* 0x2B */ GX_CTF_RG8 = (0xB | _GX_TF_CTF), - /* 0x2C */ GX_CTF_GB8 = (0xC | _GX_TF_CTF), -} GXTexFmt8; + GX_MAX_TLUT_ALL = GX_MAX_TLUT + GX_MAX_BIGTLUT, +} GXTlut; typedef enum _GXTexWrapMode { /* 0x0 */ GX_CLAMP, @@ -589,7 +606,7 @@ typedef enum _GXTexGenSrc { /* 0x11 */ GX_TG_TEXCOORD5, /* 0x12 */ GX_TG_TEXCOORD6, /* 0x13 */ GX_TG_COLOR0, - /* 0x14 */ GX_TG_COLOR1, + /* 0x14 */ GX_TG_COLOR1, } GXTexGenSrc; typedef enum _GXZTexOp { @@ -749,6 +766,7 @@ typedef enum _GXFBClamp { /* 0x0 */ GX_CLAMP_NONE, /* 0x1 */ GX_CLAMP_TOP, /* 0x2 */ GX_CLAMP_BOTTOM, + GX_CLAMP_BOTH = GX_CLAMP_TOP | GX_CLAMP_BOTTOM, } GXFBClamp; typedef enum _GXPixelFmt { @@ -827,1063 +845,1099 @@ typedef enum _GXDirtyFlag { GX_DIRTY_VLIM = GX_DIRTY_VCD | GX_DIRTY_VAT, - GX_AMB_MAT_MASK = GX_DIRTY_AMB_COLOR0 | GX_DIRTY_AMB_COLOR1 | - GX_DIRTY_MAT_COLOR0 | GX_DIRTY_MAT_COLOR1, + GX_AMB_MAT_MASK = + GX_DIRTY_AMB_COLOR0 | GX_DIRTY_AMB_COLOR1 | GX_DIRTY_MAT_COLOR0 | GX_DIRTY_MAT_COLOR1, GX_LIGHT_CHAN_MASK = 0x100F000, GX_TEX_GEN_MASK = 0x2FF0000, } GXDirtyFlag; // CP locator for vertex descriptor (lo). typedef enum _GXCPVCDLo { - // Position matrix idx [31] - GX_CP_VCD_LO_POSMTXIDX_ST = 31, - GX_CP_VCD_LO_POSMTXIDX_END = 31, + // Position matrix idx [31] + GX_CP_VCD_LO_POSMTXIDX_ST = 31, + GX_CP_VCD_LO_POSMTXIDX_END = 31, - // Tex 0 matrix idx [30] - GX_CP_VCD_LO_TEX0MTXIDX_ST = 30, - GX_CP_VCD_LO_TEX0MTXIDX_END = 30, + // Tex 0 matrix idx [30] + GX_CP_VCD_LO_TEX0MTXIDX_ST = 30, + GX_CP_VCD_LO_TEX0MTXIDX_END = 30, - // Tex 1 matrix idx [29] - GX_CP_VCD_LO_TEX1MTXIDX_ST = 29, - GX_CP_VCD_LO_TEX1MTXIDX_END = 29, + // Tex 1 matrix idx [29] + GX_CP_VCD_LO_TEX1MTXIDX_ST = 29, + GX_CP_VCD_LO_TEX1MTXIDX_END = 29, - // Tex 2 matrix idx [28] - GX_CP_VCD_LO_TEX2MTXIDX_ST = 28, - GX_CP_VCD_LO_TEX2MTXIDX_END = 28, + // Tex 2 matrix idx [28] + GX_CP_VCD_LO_TEX2MTXIDX_ST = 28, + GX_CP_VCD_LO_TEX2MTXIDX_END = 28, - // Tex 3 matrix idx [27] - GX_CP_VCD_LO_TEX3MTXIDX_ST = 27, - GX_CP_VCD_LO_TEX3MTXIDX_END = 27, + // Tex 3 matrix idx [27] + GX_CP_VCD_LO_TEX3MTXIDX_ST = 27, + GX_CP_VCD_LO_TEX3MTXIDX_END = 27, - // Tex 4 matrix idx [26] - GX_CP_VCD_LO_TEX4MTXIDX_ST = 26, - GX_CP_VCD_LO_TEX4MTXIDX_END = 26, + // Tex 4 matrix idx [26] + GX_CP_VCD_LO_TEX4MTXIDX_ST = 26, + GX_CP_VCD_LO_TEX4MTXIDX_END = 26, - // Tex 5 matrix idx [25] - GX_CP_VCD_LO_TEX5MTXIDX_ST = 25, - GX_CP_VCD_LO_TEX5MTXIDX_END = 25, + // Tex 5 matrix idx [25] + GX_CP_VCD_LO_TEX5MTXIDX_ST = 25, + GX_CP_VCD_LO_TEX5MTXIDX_END = 25, - // Tex 6 matrix idx [24] - GX_CP_VCD_LO_TEX6MTXIDX_ST = 24, - GX_CP_VCD_LO_TEX6MTXIDX_END = 24, + // Tex 6 matrix idx [24] + GX_CP_VCD_LO_TEX6MTXIDX_ST = 24, + GX_CP_VCD_LO_TEX6MTXIDX_END = 24, - // Tex 7 matrix idx [23] - GX_CP_VCD_LO_TEX7MTXIDX_ST = 23, - GX_CP_VCD_LO_TEX7MTXIDX_END = 23, + // Tex 7 matrix idx [23] + GX_CP_VCD_LO_TEX7MTXIDX_ST = 23, + GX_CP_VCD_LO_TEX7MTXIDX_END = 23, - // Position [21-22] - GX_CP_VCD_LO_POS_ST = 21, - GX_CP_VCD_LO_POS_END = 22, + // Position [21-22] + GX_CP_VCD_LO_POS_ST = 21, + GX_CP_VCD_LO_POS_END = 22, - // Normal [19-20] - GX_CP_VCD_LO_NRM_ST = 19, - GX_CP_VCD_LO_NRM_END = 20, + // Normal [19-20] + GX_CP_VCD_LO_NRM_ST = 19, + GX_CP_VCD_LO_NRM_END = 20, - // Color diffused [17-18] - GX_CP_VCD_LO_CLRDIF_ST = 17, - GX_CP_VCD_LO_CLRDIF_END = 18, + // Color diffused [17-18] + GX_CP_VCD_LO_CLRDIF_ST = 17, + GX_CP_VCD_LO_CLRDIF_END = 18, - // Color specular [15-16] - GX_CP_VCD_LO_CLRSPEC_ST = 15, - GX_CP_VCD_LO_CLRSPEC_END = 16, + // Color specular [15-16] + GX_CP_VCD_LO_CLRSPEC_ST = 15, + GX_CP_VCD_LO_CLRSPEC_END = 16, } GXCPVCDLo; // CP locators for vertex descriptor (hi). typedef enum _GXCPVCDHi { - // Tex0 coordinates [30-31] - GX_CP_VCD_HI_TEX0COORD_ST = 30, - GX_CP_VCD_HI_TEX0COORD_END = 31, + // Tex0 coordinates [30-31] + GX_CP_VCD_HI_TEX0COORD_ST = 30, + GX_CP_VCD_HI_TEX0COORD_END = 31, - // Tex1 coordinates [28-29] - GX_CP_VCD_HI_TEX1COORD_ST = 28, - GX_CP_VCD_HI_TEX1COORD_END = 29, + // Tex1 coordinates [28-29] + GX_CP_VCD_HI_TEX1COORD_ST = 28, + GX_CP_VCD_HI_TEX1COORD_END = 29, - // Tex2 coordinates [26-27] - GX_CP_VCD_HI_TEX2COORD_ST = 26, - GX_CP_VCD_HI_TEX2COORD_END = 27, + // Tex2 coordinates [26-27] + GX_CP_VCD_HI_TEX2COORD_ST = 26, + GX_CP_VCD_HI_TEX2COORD_END = 27, - // Tex3 coordinates [24-25] - GX_CP_VCD_HI_TEX3COORD_ST = 24, - GX_CP_VCD_HI_TEX3COORD_END = 25, + // Tex3 coordinates [24-25] + GX_CP_VCD_HI_TEX3COORD_ST = 24, + GX_CP_VCD_HI_TEX3COORD_END = 25, - // Tex4 coordinates [22-23] - GX_CP_VCD_HI_TEX4COORD_ST = 22, - GX_CP_VCD_HI_TEX4COORD_END = 23, + // Tex4 coordinates [22-23] + GX_CP_VCD_HI_TEX4COORD_ST = 22, + GX_CP_VCD_HI_TEX4COORD_END = 23, - // Tex5 coordinates [20-21] - GX_CP_VCD_HI_TEX5COORD_ST = 20, - GX_CP_VCD_HI_TEX5COORD_END = 21, + // Tex5 coordinates [20-21] + GX_CP_VCD_HI_TEX5COORD_ST = 20, + GX_CP_VCD_HI_TEX5COORD_END = 21, - // Tex6 coordinates [18-19] - GX_CP_VCD_HI_TEX6COORD_ST = 18, - GX_CP_VCD_HI_TEX6COORD_END = 19, + // Tex6 coordinates [18-19] + GX_CP_VCD_HI_TEX6COORD_ST = 18, + GX_CP_VCD_HI_TEX6COORD_END = 19, - // Tex7 coordinates [16-17] - GX_CP_VCD_HI_TEX7COORD_ST = 16, - GX_CP_VCD_HI_TEX7COORD_END = 17, + // Tex7 coordinates [16-17] + GX_CP_VCD_HI_TEX7COORD_ST = 16, + GX_CP_VCD_HI_TEX7COORD_END = 17, } GXCPVCDHi; // Command processor registers. typedef enum _GXCPRegs { - GX_CP_REG_MTXIDXA = 0x30, // Matrix index A - GX_CP_REG_MTXIDXB = 0x40, // Matrix index B - GX_CP_REG_VCD_LO = 0x50, // Vertex descriptor (lo) - GX_CP_REG_VCD_HI = 0x60, // Vertex descriptor (hi) - GX_CP_REG_VAT_GRP0 = 0x70, // Vertex attribute table (group 0) - GX_CP_REG_VAT_GRP1 = 0x80, // Vertex attribute table (group 1) - GX_CP_REG_VAT_GRP2 = 0x90, // Vertex attribute table (group 2) - GX_CP_REG_ARRAYBASE = 0xA0, // Vertex array start/base - GX_CP_REG_ARRAYSTRIDE = 0xB0, // Vertex array stride + GX_CP_REG_MTXIDXA = 0x30, // Matrix index A + GX_CP_REG_MTXIDXB = 0x40, // Matrix index B + GX_CP_REG_VCD_LO = 0x50, // Vertex descriptor (lo) + GX_CP_REG_VCD_HI = 0x60, // Vertex descriptor (hi) + GX_CP_REG_VAT_GRP0 = 0x70, // Vertex attribute table (group 0) + GX_CP_REG_VAT_GRP1 = 0x80, // Vertex attribute table (group 1) + GX_CP_REG_VAT_GRP2 = 0x90, // Vertex attribute table (group 2) + GX_CP_REG_ARRAYBASE = 0xA0, // Vertex array start/base + GX_CP_REG_ARRAYSTRIDE = 0xB0, // Vertex array stride } GXCPRegs; // Transform unit registers. typedef enum _GXXFRegs { - GX_XF_REG_ERROR = 0x1000, - GX_XF_REG_DIAGNOSTICS = 0x1001, - GX_XF_REG_STATE0 = 0x1002, - GX_XF_REG_STATE1 = 0x1003, - GX_XF_REG_CLOCK = 0x1004, - GX_XF_REG_CLIPDISABLE = 0x1005, - GX_XF_REG_PERF0 = 0x1006, - GX_XF_REG_PERF1 = 0x1007, - GX_XF_REG_INVERTEXSPEC = 0x1008, - GX_XF_REG_NUMCOLORS = 0x1009, - GX_XF_REG_AMBIENT0 = 0x100A, - GX_XF_REG_AMBIENT1 = 0x100B, - GX_XF_REG_MATERIAL0 = 0x100C, - GX_XF_REG_MATERIAL1 = 0x100D, - GX_XF_REG_COLOR0CNTRL = 0x100E, - GX_XF_REG_COLOR1CNTRL = 0x100F, - GX_XF_REG_ALPHA0CNTRL = 0x1010, - GX_XF_REG_ALPHA1CNTRL = 0x1011, - GX_XF_REG_DUALTEXTRAN = 0x1012, - GX_XF_REG_MATRIXINDEX0 = 0x1018, - GX_XF_REG_MATRIXINDEX1 = 0x1019, - GX_XF_REG_SCALEX = 0x101A, - GX_XF_REG_SCALEY = 0x101B, - GX_XF_REG_SCALEZ = 0x101C, - GX_XF_REG_OFFSETX = 0x101D, - GX_XF_REG_OFFSETY = 0x101E, - GX_XF_REG_OFFSETZ = 0x101F, - GX_XF_REG_PROJECTIONA = 0x1020, - GX_XF_REG_PROJECTIONB = 0x1021, - GX_XF_REG_PROJECTIONC = 0x1022, - GX_XF_REG_PROJECTIOND = 0x1023, - GX_XF_REG_PROJECTIONE = 0x1024, - GX_XF_REG_PROJECTIONF = 0x1025, - GX_XF_REG_PROJECTORTHO = 0x1026, - GX_XF_REG_NUMTEX = 0x103F, - GX_XF_REG_TEX0 = 0x1040, - GX_XF_REG_TEX1 = 0x1041, - GX_XF_REG_TEX2 = 0x1042, - GX_XF_REG_TEX3 = 0x1043, - GX_XF_REG_TEX4 = 0x1044, - GX_XF_REG_TEX5 = 0x1045, - GX_XF_REG_TEX6 = 0x1046, - GX_XF_REG_TEX7 = 0x1047, - GX_XF_REG_DUALTEX0 = 0x1050, - GX_XF_REG_DUALTEX1 = 0x1051, - GX_XF_REG_DUALTEX2 = 0x1052, - GX_XF_REG_DUALTEX3 = 0x1053, - GX_XF_REG_DUALTEX4 = 0x1054, - GX_XF_REG_DUALTEX5 = 0x1055, - GX_XF_REG_DUALTEX6 = 0x1056, - GX_XF_REG_DUALTEX7 = 0x1057, + GX_XF_REG_ERROR = 0x1000, + GX_XF_REG_DIAGNOSTICS = 0x1001, + GX_XF_REG_STATE0 = 0x1002, + GX_XF_REG_STATE1 = 0x1003, + GX_XF_REG_CLOCK = 0x1004, + GX_XF_REG_CLIPDISABLE = 0x1005, + GX_XF_REG_PERF0 = 0x1006, + GX_XF_REG_PERF1 = 0x1007, + GX_XF_REG_INVERTEXSPEC = 0x1008, + GX_XF_REG_NUMCOLORS = 0x1009, + GX_XF_REG_AMBIENT0 = 0x100A, + GX_XF_REG_AMBIENT1 = 0x100B, + GX_XF_REG_MATERIAL0 = 0x100C, + GX_XF_REG_MATERIAL1 = 0x100D, + GX_XF_REG_COLOR0CNTRL = 0x100E, + GX_XF_REG_COLOR1CNTRL = 0x100F, + GX_XF_REG_ALPHA0CNTRL = 0x1010, + GX_XF_REG_ALPHA1CNTRL = 0x1011, + GX_XF_REG_DUALTEXTRAN = 0x1012, + GX_XF_REG_MATRIXINDEX0 = 0x1018, + GX_XF_REG_MATRIXINDEX1 = 0x1019, + GX_XF_REG_SCALEX = 0x101A, + GX_XF_REG_SCALEY = 0x101B, + GX_XF_REG_SCALEZ = 0x101C, + GX_XF_REG_OFFSETX = 0x101D, + GX_XF_REG_OFFSETY = 0x101E, + GX_XF_REG_OFFSETZ = 0x101F, + GX_XF_REG_PROJECTIONA = 0x1020, + GX_XF_REG_PROJECTIONB = 0x1021, + GX_XF_REG_PROJECTIONC = 0x1022, + GX_XF_REG_PROJECTIOND = 0x1023, + GX_XF_REG_PROJECTIONE = 0x1024, + GX_XF_REG_PROJECTIONF = 0x1025, + GX_XF_REG_PROJECTORTHO = 0x1026, + GX_XF_REG_NUMTEX = 0x103F, + GX_XF_REG_TEX0 = 0x1040, + GX_XF_REG_TEX1 = 0x1041, + GX_XF_REG_TEX2 = 0x1042, + GX_XF_REG_TEX3 = 0x1043, + GX_XF_REG_TEX4 = 0x1044, + GX_XF_REG_TEX5 = 0x1045, + GX_XF_REG_TEX6 = 0x1046, + GX_XF_REG_TEX7 = 0x1047, + GX_XF_REG_DUALTEX0 = 0x1050, + GX_XF_REG_DUALTEX1 = 0x1051, + GX_XF_REG_DUALTEX2 = 0x1052, + GX_XF_REG_DUALTEX3 = 0x1053, + GX_XF_REG_DUALTEX4 = 0x1054, + GX_XF_REG_DUALTEX5 = 0x1055, + GX_XF_REG_DUALTEX6 = 0x1056, + GX_XF_REG_DUALTEX7 = 0x1057, } GXXFRegs; // Commands for interacting with the GXFifo pipe. typedef enum _GXFifoCmd { - GX_FIFO_CMD_NOOP = 0x00, // no operation + GX_FIFO_CMD_NOOP = 0x00, // no operation - GX_FIFO_CMD_LOAD_BP_REG = 0x61, // load blitting processor reg - GX_FIFO_CMD_LOAD_CP_REG = 0x08, // load command processor reg - GX_FIFO_CMD_LOAD_XF_REG = 0x10, // load transform unit reg + GX_FIFO_CMD_LOAD_BP_REG = 0x61, // load blitting processor reg + GX_FIFO_CMD_LOAD_CP_REG = 0x08, // load command processor reg + GX_FIFO_CMD_LOAD_XF_REG = 0x10, // load transform unit reg - GX_FIFO_CMD_LOAD_INDX_A = 0x20, // load index A - GX_FIFO_CMD_LOAD_INDX_B = 0x28, // load index B - GX_FIFO_CMD_LOAD_INDX_C = 0x30, // load index C - GX_FIFO_CMD_LOAD_INDX_D = 0x38, // load index D + GX_FIFO_CMD_LOAD_INDX_A = 0x20, // load index A + GX_FIFO_CMD_LOAD_INDX_B = 0x28, // load index B + GX_FIFO_CMD_LOAD_INDX_C = 0x30, // load index C + GX_FIFO_CMD_LOAD_INDX_D = 0x38, // load index D - GX_FIFO_CMD_CALL_DL = 0x40, // call displaylist - GX_FIFO_CMD_INVAL_VTX = 0x48, // invalid vertex + GX_FIFO_CMD_CALL_DL = 0x40, // call displaylist + GX_FIFO_CMD_INVAL_VTX = 0x48, // invalid vertex } GXFifoCmd; // CP locator for vertex attribute table (group 0). typedef enum _GXCPVATGrp0 { - // Position count [31-31] - GX_CP_VAT_GRP0_POS_CNT_ST = 31, - GX_CP_VAT_GRP0_POS_CNT_END = 31, + // Position count [31-31] + GX_CP_VAT_GRP0_POS_CNT_ST = 31, + GX_CP_VAT_GRP0_POS_CNT_END = 31, - // Position type [28-30] - GX_CP_VAT_GRP0_POS_TYPE_ST = 28, - GX_CP_VAT_GRP0_POS_TYPE_END = 30, + // Position type [28-30] + GX_CP_VAT_GRP0_POS_TYPE_ST = 28, + GX_CP_VAT_GRP0_POS_TYPE_END = 30, - // Position shift [23-27] - GX_CP_VAT_GRP0_POS_SHIFT_ST = 23, - GX_CP_VAT_GRP0_POS_SHIFT_END = 27, + // Position shift [23-27] + GX_CP_VAT_GRP0_POS_SHIFT_ST = 23, + GX_CP_VAT_GRP0_POS_SHIFT_END = 27, - // Normal count [22-22] - GX_CP_VAT_GRP0_NRM_CNT_ST = 22, - GX_CP_VAT_GRP0_NRM_CNT_END = 22, + // Normal count [22-22] + GX_CP_VAT_GRP0_NRM_CNT_ST = 22, + GX_CP_VAT_GRP0_NRM_CNT_END = 22, - // Normal type [19-21] - GX_CP_VAT_GRP0_NRM_TYPE_ST = 19, - GX_CP_VAT_GRP0_NRM_TYPE_END = 21, + // Normal type [19-21] + GX_CP_VAT_GRP0_NRM_TYPE_ST = 19, + GX_CP_VAT_GRP0_NRM_TYPE_END = 21, - // Color diffused count [18-18] - GX_CP_VAT_GRP0_CLRDIFF_CNT_ST = 18, - GX_CP_VAT_GRP0_CLRDIFF_CNT_END = 18, + // Color diffused count [18-18] + GX_CP_VAT_GRP0_CLRDIFF_CNT_ST = 18, + GX_CP_VAT_GRP0_CLRDIFF_CNT_END = 18, - // Color diffused type [15-17] - GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST = 15, - GX_CP_VAT_GRP0_CLRDIFF_TYPE_END = 17, + // Color diffused type [15-17] + GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST = 15, + GX_CP_VAT_GRP0_CLRDIFF_TYPE_END = 17, - // Color specular count [14-14] - GX_CP_VAT_GRP0_CLRSPEC_CNT_ST = 14, - GX_CP_VAT_GRP0_CLRSPEC_CNT_END = 14, + // Color specular count [14-14] + GX_CP_VAT_GRP0_CLRSPEC_CNT_ST = 14, + GX_CP_VAT_GRP0_CLRSPEC_CNT_END = 14, - // Color specular type [11-13] - GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST = 11, - GX_CP_VAT_GRP0_CLRSPEC_TYPE_END = 13, + // Color specular type [11-13] + GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST = 11, + GX_CP_VAT_GRP0_CLRSPEC_TYPE_END = 13, - // Tex0 coord count [10-10] - GX_CP_VAT_GRP0_TXC0_CNT_ST = 10, - GX_CP_VAT_GRP0_TXC0_CNT_END = 10, + // Tex0 coord count [10-10] + GX_CP_VAT_GRP0_TXC0_CNT_ST = 10, + GX_CP_VAT_GRP0_TXC0_CNT_END = 10, - // Tex0 coord type [7-9] - GX_CP_VAT_GRP0_TXC0_TYPE_ST = 7, - GX_CP_VAT_GRP0_TXC0_TYPE_END = 9, + // Tex0 coord type [7-9] + GX_CP_VAT_GRP0_TXC0_TYPE_ST = 7, + GX_CP_VAT_GRP0_TXC0_TYPE_END = 9, - // Tex0 coord shift [2-6] - GX_CP_VAT_GRP0_TXC0_SHIFT_ST = 2, - GX_CP_VAT_GRP0_TXC0_SHIFT_END = 6, + // Tex0 coord shift [2-6] + GX_CP_VAT_GRP0_TXC0_SHIFT_ST = 2, + GX_CP_VAT_GRP0_TXC0_SHIFT_END = 6, - // Byte dequantised [1-1] - GX_CP_VAT_GRP0_BYTEDEQ_ST = 1, - GX_CP_VAT_GRP0_BYTEDEQ_END = 1, + // Byte dequantised [1-1] + GX_CP_VAT_GRP0_BYTEDEQ_ST = 1, + GX_CP_VAT_GRP0_BYTEDEQ_END = 1, - // Normal index 3 [0-0] (Input will be treated as three staggered indices (one per triple biased by component size) into normal table)) - GX_CP_VAT_GRP0_NRMIDX3_ST = 0, - GX_CP_VAT_GRP0_NRMIDX3_END = 0, + // Normal index 3 [0-0] (Input will be treated as three staggered indices (one per triple biased + // by component size) into normal table)) + GX_CP_VAT_GRP0_NRMIDX3_ST = 0, + GX_CP_VAT_GRP0_NRMIDX3_END = 0, } GXCPVATGrp0; // CP locators for vertex attribute table (group 1). typedef enum _GXCPVATGrp1 { - // Tex1 coord count [31-31] - GX_CP_VAT_GRP1_TXC1_CNT_ST = 31, - GX_CP_VAT_GRP1_TXC1_CNT_END = 31, + // Tex1 coord count [31-31] + GX_CP_VAT_GRP1_TXC1_CNT_ST = 31, + GX_CP_VAT_GRP1_TXC1_CNT_END = 31, - // Tex1 coord type [28-30] - GX_CP_VAT_GRP1_TXC1_TYPE_ST = 28, - GX_CP_VAT_GRP1_TXC1_TYPE_END = 30, + // Tex1 coord type [28-30] + GX_CP_VAT_GRP1_TXC1_TYPE_ST = 28, + GX_CP_VAT_GRP1_TXC1_TYPE_END = 30, - // Tex1 coord shift [23-27] - GX_CP_VAT_GRP1_TXC1_SHIFT_ST = 23, - GX_CP_VAT_GRP1_TXC1_SHIFT_END = 27, + // Tex1 coord shift [23-27] + GX_CP_VAT_GRP1_TXC1_SHIFT_ST = 23, + GX_CP_VAT_GRP1_TXC1_SHIFT_END = 27, - // Tex2 coord count [22-22] - GX_CP_VAT_GRP1_TXC2_CNT_ST = 22, - GX_CP_VAT_GRP1_TXC2_CNT_END = 22, + // Tex2 coord count [22-22] + GX_CP_VAT_GRP1_TXC2_CNT_ST = 22, + GX_CP_VAT_GRP1_TXC2_CNT_END = 22, - // Tex2 coord type [19-21] - GX_CP_VAT_GRP1_TXC2_TYPE_ST = 19, - GX_CP_VAT_GRP1_TXC2_TYPE_END = 21, + // Tex2 coord type [19-21] + GX_CP_VAT_GRP1_TXC2_TYPE_ST = 19, + GX_CP_VAT_GRP1_TXC2_TYPE_END = 21, - // Tex2 coord shift [14-18] - GX_CP_VAT_GRP1_TXC2_SHIFT_ST = 14, - GX_CP_VAT_GRP1_TXC2_SHIFT_END = 18, + // Tex2 coord shift [14-18] + GX_CP_VAT_GRP1_TXC2_SHIFT_ST = 14, + GX_CP_VAT_GRP1_TXC2_SHIFT_END = 18, - // Tex3 coord count [13-13] - GX_CP_VAT_GRP1_TXC3_CNT_ST = 13, - GX_CP_VAT_GRP1_TXC3_CNT_END = 13, + // Tex3 coord count [13-13] + GX_CP_VAT_GRP1_TXC3_CNT_ST = 13, + GX_CP_VAT_GRP1_TXC3_CNT_END = 13, - // Tex3 coord type [10-12] - GX_CP_VAT_GRP1_TXC3_TYPE_ST = 10, - GX_CP_VAT_GRP1_TXC3_TYPE_END = 12, + // Tex3 coord type [10-12] + GX_CP_VAT_GRP1_TXC3_TYPE_ST = 10, + GX_CP_VAT_GRP1_TXC3_TYPE_END = 12, - // Tex3 coord shift [5-9] - GX_CP_VAT_GRP1_TXC3_SHIFT_ST = 5, - GX_CP_VAT_GRP1_TXC3_SHIFT_END = 9, + // Tex3 coord shift [5-9] + GX_CP_VAT_GRP1_TXC3_SHIFT_ST = 5, + GX_CP_VAT_GRP1_TXC3_SHIFT_END = 9, - // Tex4 coord count [4-4] - GX_CP_VAT_GRP1_TXC4_CNT_ST = 4, - GX_CP_VAT_GRP1_TXC4_CNT_END = 4, + // Tex4 coord count [4-4] + GX_CP_VAT_GRP1_TXC4_CNT_ST = 4, + GX_CP_VAT_GRP1_TXC4_CNT_END = 4, - // Tex4 coord type [1-3] - GX_CP_VAT_GRP1_TXC4_TYPE_ST = 1, - GX_CP_VAT_GRP1_TXC4_TYPE_END = 3, + // Tex4 coord type [1-3] + GX_CP_VAT_GRP1_TXC4_TYPE_ST = 1, + GX_CP_VAT_GRP1_TXC4_TYPE_END = 3, } GXCPVATGrp1; // CP locators for vertex attribute table (group 2). typedef enum _GXCPVATGrp2 { - // Tex4 coord shift [27-31] - GX_CP_VAT_GRP2_TXC4_SHIFT_ST = 27, - GX_CP_VAT_GRP2_TXC4_SHIFT_END = 31, + // Tex4 coord shift [27-31] + GX_CP_VAT_GRP2_TXC4_SHIFT_ST = 27, + GX_CP_VAT_GRP2_TXC4_SHIFT_END = 31, - // Tex5 coord count [26-26] - GX_CP_VAT_GRP2_TXC5_CNT_ST = 26, - GX_CP_VAT_GRP2_TXC5_CNT_END = 26, + // Tex5 coord count [26-26] + GX_CP_VAT_GRP2_TXC5_CNT_ST = 26, + GX_CP_VAT_GRP2_TXC5_CNT_END = 26, - // Tex5 coord type [23-25] - GX_CP_VAT_GRP2_TXC5_TYPE_ST = 23, - GX_CP_VAT_GRP2_TXC5_TYPE_END = 25, + // Tex5 coord type [23-25] + GX_CP_VAT_GRP2_TXC5_TYPE_ST = 23, + GX_CP_VAT_GRP2_TXC5_TYPE_END = 25, - // Tex5 coord shift [18-22] - GX_CP_VAT_GRP2_TXC5_SHIFT_ST = 18, - GX_CP_VAT_GRP2_TXC5_SHIFT_END = 22, + // Tex5 coord shift [18-22] + GX_CP_VAT_GRP2_TXC5_SHIFT_ST = 18, + GX_CP_VAT_GRP2_TXC5_SHIFT_END = 22, - // Tex6 coord count [17-17] - GX_CP_VAT_GRP2_TXC6_CNT_ST = 17, - GX_CP_VAT_GRP2_TXC6_CNT_END = 17, + // Tex6 coord count [17-17] + GX_CP_VAT_GRP2_TXC6_CNT_ST = 17, + GX_CP_VAT_GRP2_TXC6_CNT_END = 17, - // Tex6 coord type [14-16] - GX_CP_VAT_GRP2_TXC6_TYPE_ST = 14, - GX_CP_VAT_GRP2_TXC6_TYPE_END = 16, + // Tex6 coord type [14-16] + GX_CP_VAT_GRP2_TXC6_TYPE_ST = 14, + GX_CP_VAT_GRP2_TXC6_TYPE_END = 16, - // Tex6 coord shift [9-13] - GX_CP_VAT_GRP2_TXC6_SHIFT_ST = 9, - GX_CP_VAT_GRP2_TXC6_SHIFT_END = 13, + // Tex6 coord shift [9-13] + GX_CP_VAT_GRP2_TXC6_SHIFT_ST = 9, + GX_CP_VAT_GRP2_TXC6_SHIFT_END = 13, - // Tex7 coord count [8-8] - GX_CP_VAT_GRP2_TXC7_CNT_ST = 8, - GX_CP_VAT_GRP2_TXC7_CNT_END = 8, + // Tex7 coord count [8-8] + GX_CP_VAT_GRP2_TXC7_CNT_ST = 8, + GX_CP_VAT_GRP2_TXC7_CNT_END = 8, - // Tex7 coord type [5-7] - GX_CP_VAT_GRP2_TXC7_TYPE_ST = 5, - GX_CP_VAT_GRP2_TXC7_TYPE_END = 7, + // Tex7 coord type [5-7] + GX_CP_VAT_GRP2_TXC7_TYPE_ST = 5, + GX_CP_VAT_GRP2_TXC7_TYPE_END = 7, - // Tex7 coord shift [0-4] - GX_CP_VAT_GRP2_TXC7_SHIFT_ST = 0, - GX_CP_VAT_GRP2_TXC7_SHIFT_END = 4, + // Tex7 coord shift [0-4] + GX_CP_VAT_GRP2_TXC7_SHIFT_ST = 0, + GX_CP_VAT_GRP2_TXC7_SHIFT_END = 4, } GXCPVATGrp2; // BP GenMode locators. typedef enum _GXBPGenMode { - // Active texture counts [28-31] - GX_BP_GENMODE_NUMTEX_ST = 28, - GX_BP_GENMODE_NUMTEX_END = 31, + // Active texture counts [28-31] + GX_BP_GENMODE_NUMTEX_ST = 28, + GX_BP_GENMODE_NUMTEX_END = 31, - // Color/channel counts [25-27] - GX_BP_GENMODE_NUMCOLORS_ST = 25, - GX_BP_GENMODE_NUMCOLORS_END = 27, + // Color/channel counts [25-27] + GX_BP_GENMODE_NUMCOLORS_ST = 25, + GX_BP_GENMODE_NUMCOLORS_END = 27, - // Multisample mode [22-22] - GX_BP_GENMODE_MULTISAMPLE_ST = 22, - GX_BP_GENMODE_MULTISAMPLE_END = 22, + // Multisample mode [22-22] + GX_BP_GENMODE_MULTISAMPLE_ST = 22, + GX_BP_GENMODE_MULTISAMPLE_END = 22, - // Cull mode [16-17] - GX_BP_GENMODE_CULLMODE_ST = 16, - GX_BP_GENMODE_CULLMODE_END = 17, + // Cull mode [16-17] + GX_BP_GENMODE_CULLMODE_ST = 16, + GX_BP_GENMODE_CULLMODE_END = 17, - // Indirect stage counts [13-15] - GX_BP_GENMODE_NUMINDSTAGES_ST = 13, - GX_BP_GENMODE_NUMINDSTAGES_END = 15, + // Indirect stage counts [13-15] + GX_BP_GENMODE_NUMINDSTAGES_ST = 13, + GX_BP_GENMODE_NUMINDSTAGES_END = 15, - // Toggle co-planar/Z-freeze [12-12] - GX_BP_GENMODE_COPLANAR_ST = 12, - GX_BP_GENMODE_COPLANAR_END = 12, + // Toggle co-planar/Z-freeze [12-12] + GX_BP_GENMODE_COPLANAR_ST = 12, + GX_BP_GENMODE_COPLANAR_END = 12, } GXBPGenMode; // Texture register fields for XF (transform) unit. typedef enum _GXXfTexReg { - GX_XF_TEX_PROJ_ST = 0, // (s,t) (2x4) - GX_XF_TEX_PROJ_STQ = 1, // (s,t,q) (3x4) + GX_XF_TEX_PROJ_ST = 0, // (s,t) (2x4) + GX_XF_TEX_PROJ_STQ = 1, // (s,t,q) (3x4) - GX_XF_TEX_FORM_AB11 = 0, // (A, B, 1.0f, 1.0f), used for regular tex src - GX_XF_TEX_FORM_ABC1 = 1, // (A, B, C, 1.0f), used for geometry/normal src + GX_XF_TEX_FORM_AB11 = 0, // (A, B, 1.0f, 1.0f), used for regular tex src + GX_XF_TEX_FORM_ABC1 = 1, // (A, B, C, 1.0f), used for geometry/normal src } GXXfTexReg; // XF locators for textures. typedef enum _GXXFTex { - // Projection type [30-30] - GX_XF_TEX_PROJTYPE_ST = 30, - GX_XF_TEX_PROJTYPE_END = 30, + // Projection type [30-30] + GX_XF_TEX_PROJTYPE_ST = 30, + GX_XF_TEX_PROJTYPE_END = 30, - // Input format [29-29] - GX_XF_TEX_INPUTFORM_ST = 29, - GX_XF_TEX_INPUTFORM_END = 29, + // Input format [29-29] + GX_XF_TEX_INPUTFORM_ST = 29, + GX_XF_TEX_INPUTFORM_END = 29, - // Texture gen type [25-27] - GX_XF_TEX_TEXGENTYPE_ST = 25, - GX_XF_TEX_TEXGENTYPE_END = 27, + // Texture gen type [25-27] + GX_XF_TEX_TEXGENTYPE_ST = 25, + GX_XF_TEX_TEXGENTYPE_END = 27, - // Source row [20-24] - GX_XF_TEX_SRCROW_ST = 20, - GX_XF_TEX_SRCROW_END = 24, + // Source row [20-24] + GX_XF_TEX_SRCROW_ST = 20, + GX_XF_TEX_SRCROW_END = 24, - // Bump source texture [17-19] - GX_XF_TEX_BUMPSRCTEX_ST = 17, - GX_XF_TEX_BUMPSRCTEX_END = 19, + // Bump source texture [17-19] + GX_XF_TEX_BUMPSRCTEX_ST = 17, + GX_XF_TEX_BUMPSRCTEX_END = 19, - // Bump source light [14-16] - GX_XF_TEX_BUMPSRCLIGHT_ST = 14, - GX_XF_TEX_BUMPSRCLIGHT_END = 16, + // Bump source light [14-16] + GX_XF_TEX_BUMPSRCLIGHT_ST = 14, + GX_XF_TEX_BUMPSRCLIGHT_END = 16, } GXXFTex; // XF locators for dual textures. typedef enum _GXXFDualTex { - // Base row of the transform matrix [26-31] - GX_XF_DUALTEX_BASEROW_ST = 26, - GX_XF_DUALTEX_BASEROW_END = 31, + // Base row of the transform matrix [26-31] + GX_XF_DUALTEX_BASEROW_ST = 26, + GX_XF_DUALTEX_BASEROW_END = 31, - // Normalise texcoord before sending transform [23-23] - GX_XF_DUALTEX_NORMALISE_ST = 23, - GX_XF_DUALTEX_NORMALISE_END = 23, + // Normalise texcoord before sending transform [23-23] + GX_XF_DUALTEX_NORMALISE_ST = 23, + GX_XF_DUALTEX_NORMALISE_END = 23, } GXXFDualTex; // General texture commands. typedef enum _GXXfTexGen { - GX_XF_TG_REGULAR = 0, // Regular; transform incoming data. - GX_XF_TG_BUMP = 1, // Texgen bump mapping. - GX_XF_TG_CLR0 = 2, // Color texgen for color 0 (s,t) = (r, g:b) - GX_XF_TG_CLR1 = 3, // Color texgen for color 1 (s,t) = (r, g:b) + GX_XF_TG_REGULAR = 0, // Regular; transform incoming data. + GX_XF_TG_BUMP = 1, // Texgen bump mapping. + GX_XF_TG_CLR0 = 2, // Color texgen for color 0 (s,t) = (r, g:b) + GX_XF_TG_CLR1 = 3, // Color texgen for color 1 (s,t) = (r, g:b) } GXXfTexGen; // XF locators for matrix index 0. typedef enum _GXXFMtxIdx0 { - // Geometry [26-31] - GX_XF_MTXIDX0_GEOM_ST = 26, - GX_XF_MTXIDX0_GEOM_END = 31, + // Geometry [26-31] + GX_XF_MTXIDX0_GEOM_ST = 26, + GX_XF_MTXIDX0_GEOM_END = 31, - // Tex 0 [20-25] - GX_XF_MTXIDX0_TEX0_ST = 20, - GX_XF_MTXIDX0_TEX0_END = 25, + // Tex 0 [20-25] + GX_XF_MTXIDX0_TEX0_ST = 20, + GX_XF_MTXIDX0_TEX0_END = 25, - // Tex 1 [14-19] - GX_XF_MTXIDX0_TEX1_ST = 14, - GX_XF_MTXIDX0_TEX1_END = 19, + // Tex 1 [14-19] + GX_XF_MTXIDX0_TEX1_ST = 14, + GX_XF_MTXIDX0_TEX1_END = 19, - // Tex 2 [8-13] - GX_XF_MTXIDX0_TEX2_ST = 8, - GX_XF_MTXIDX0_TEX2_END = 13, + // Tex 2 [8-13] + GX_XF_MTXIDX0_TEX2_ST = 8, + GX_XF_MTXIDX0_TEX2_END = 13, - // Tex 3 [2-7] - GX_XF_MTXIDX0_TEX3_ST = 2, - GX_XF_MTXIDX0_TEX3_END = 7, + // Tex 3 [2-7] + GX_XF_MTXIDX0_TEX3_ST = 2, + GX_XF_MTXIDX0_TEX3_END = 7, } GXXFMtxIdx0; // XF locators for matrix index 1. typedef enum _GXXFMtxIdx1 { - // Tex 4 [26-31] - GX_XF_MTXIDX1_TEX4_ST = 26, - GX_XF_MTXIDX1_TEX4_END = 31, + // Tex 4 [26-31] + GX_XF_MTXIDX1_TEX4_ST = 26, + GX_XF_MTXIDX1_TEX4_END = 31, - // Tex 5 [20-25] - GX_XF_MTXIDX1_TEX5_ST = 20, - GX_XF_MTXIDX1_TEX5_END = 25, + // Tex 5 [20-25] + GX_XF_MTXIDX1_TEX5_ST = 20, + GX_XF_MTXIDX1_TEX5_END = 25, - // Tex 6 [14-19] - GX_XF_MTXIDX1_TEX6_ST = 14, - GX_XF_MTXIDX1_TEX6_END = 19, + // Tex 6 [14-19] + GX_XF_MTXIDX1_TEX6_ST = 14, + GX_XF_MTXIDX1_TEX6_END = 19, - // Tex 7 [8-13] - GX_XF_MTXIDX1_TEX7_ST = 8, - GX_XF_MTXIDX1_TEX7_END = 13, + // Tex 7 [8-13] + GX_XF_MTXIDX1_TEX7_ST = 8, + GX_XF_MTXIDX1_TEX7_END = 13, } GXXFMtxIdx1; // Blitting processor registers. typedef enum _GXBPRegs { - // gen mode - GX_BP_REG_GENMODE = 0x0, // gen mode + // gen mode + GX_BP_REG_GENMODE = 0x0, // gen mode - // display copy filters - GX_BP_REG_DISPCOPYFILTER0 = 0x1, // display copy filter 0 - GX_BP_REG_DISPCOPYFILTER1 = 0x2, // display copy filter 1 - GX_BP_REG_DISPCOPYFILTER2 = 0x3, // display copy filter 2 - GX_BP_REG_DISPCOPYFILTER3 = 0x4, // display copy filter 3 + // display copy filters + GX_BP_REG_DISPCOPYFILTER0 = 0x1, // display copy filter 0 + GX_BP_REG_DISPCOPYFILTER1 = 0x2, // display copy filter 1 + GX_BP_REG_DISPCOPYFILTER2 = 0x3, // display copy filter 2 + GX_BP_REG_DISPCOPYFILTER3 = 0x4, // display copy filter 3 - // indirect matrices - GX_BP_REG_INDMTX0A = 0x6, // indirect matrix 0A - GX_BP_REG_INDMTX0B = 0x7, // indirect matrix 0B - GX_BP_REG_INDMTX0C = 0x8, // indirect matrix 0C - GX_BP_REG_INDMTX1A = 0x9, // indirect matrix 1A - GX_BP_REG_INDMTX1B = 0xA, // indirect matrix 1B - GX_BP_REG_INDMTX1C = 0xB, // indirect matrix 1C - GX_BP_REG_INDMTX2A = 0xC, // indirect matrix 2A - GX_BP_REG_INDMTX2B = 0xD, // indirect matrix 2B - GX_BP_REG_INDMTX2C = 0xE, // indirect matrix 2C - GX_BP_REG_INDIMASK = 0xF, // indirect mask + // indirect matrices + GX_BP_REG_INDMTX0A = 0x6, // indirect matrix 0A + GX_BP_REG_INDMTX0B = 0x7, // indirect matrix 0B + GX_BP_REG_INDMTX0C = 0x8, // indirect matrix 0C + GX_BP_REG_INDMTX1A = 0x9, // indirect matrix 1A + GX_BP_REG_INDMTX1B = 0xA, // indirect matrix 1B + GX_BP_REG_INDMTX1C = 0xB, // indirect matrix 1C + GX_BP_REG_INDMTX2A = 0xC, // indirect matrix 2A + GX_BP_REG_INDMTX2B = 0xD, // indirect matrix 2B + GX_BP_REG_INDMTX2C = 0xE, // indirect matrix 2C + GX_BP_REG_INDIMASK = 0xF, // indirect mask - // indirect TEV stages - GX_BP_REG_INDTEVSTAGE0 = 0x10, // indirect TEV stage 0 - GX_BP_REG_INDTEVSTAGE1 = 0x11, // indirect TEV stage 1 - GX_BP_REG_INDTEVSTAGE2 = 0x12, // indirect TEV stage 2 - GX_BP_REG_INDTEVSTAGE3 = 0x13, // indirect TEV stage 3 - GX_BP_REG_INDTEVSTAGE4 = 0x14, // indirect TEV stage 4 - GX_BP_REG_INDTEVSTAGE5 = 0x15, // indirect TEV stage 5 - GX_BP_REG_INDTEVSTAGE6 = 0x16, // indirect TEV stage 6 - GX_BP_REG_INDTEVSTAGE7 = 0x17, // indirect TEV stage 7 - GX_BP_REG_INDTEVSTAGE8 = 0x18, // indirect TEV stage 8 - GX_BP_REG_INDTEVSTAGE9 = 0x19, // indirect TEV stage 9 - GX_BP_REG_INDTEVSTAGE10 = 0x1A, // indirect TEV stage 10 - GX_BP_REG_INDTEVSTAGE11 = 0x1B, // indirect TEV stage 11 - GX_BP_REG_INDTEVSTAGE12 = 0x1C, // indirect TEV stage 12 - GX_BP_REG_INDTEVSTAGE13 = 0x1D, // indirect TEV stage 13 - GX_BP_REG_INDTEVSTAGE14 = 0x1E, // indirect TEV stage 14 - GX_BP_REG_INDTEVSTAGE15 = 0x1F, // indirect TEV stage 15 + // indirect TEV stages + GX_BP_REG_INDTEVSTAGE0 = 0x10, // indirect TEV stage 0 + GX_BP_REG_INDTEVSTAGE1 = 0x11, // indirect TEV stage 1 + GX_BP_REG_INDTEVSTAGE2 = 0x12, // indirect TEV stage 2 + GX_BP_REG_INDTEVSTAGE3 = 0x13, // indirect TEV stage 3 + GX_BP_REG_INDTEVSTAGE4 = 0x14, // indirect TEV stage 4 + GX_BP_REG_INDTEVSTAGE5 = 0x15, // indirect TEV stage 5 + GX_BP_REG_INDTEVSTAGE6 = 0x16, // indirect TEV stage 6 + GX_BP_REG_INDTEVSTAGE7 = 0x17, // indirect TEV stage 7 + GX_BP_REG_INDTEVSTAGE8 = 0x18, // indirect TEV stage 8 + GX_BP_REG_INDTEVSTAGE9 = 0x19, // indirect TEV stage 9 + GX_BP_REG_INDTEVSTAGE10 = 0x1A, // indirect TEV stage 10 + GX_BP_REG_INDTEVSTAGE11 = 0x1B, // indirect TEV stage 11 + GX_BP_REG_INDTEVSTAGE12 = 0x1C, // indirect TEV stage 12 + GX_BP_REG_INDTEVSTAGE13 = 0x1D, // indirect TEV stage 13 + GX_BP_REG_INDTEVSTAGE14 = 0x1E, // indirect TEV stage 14 + GX_BP_REG_INDTEVSTAGE15 = 0x1F, // indirect TEV stage 15 - // performance manips - GX_BP_REG_SCISSORTL = 0x20, // scissor top left - GX_BP_REG_SCISSORBR = 0x21, // scissor bottom right - GX_BP_REG_LINEPTWIDTH = 0x22, // line point width - GX_BP_REG_PERF0TRI = 0x23, // performance 0 (triangle) - GX_BP_REG_PERF0QUAD = 0x24, // performance 0 (quad) + // performance manips + GX_BP_REG_SCISSORTL = 0x20, // scissor top left + GX_BP_REG_SCISSORBR = 0x21, // scissor bottom right + GX_BP_REG_LINEPTWIDTH = 0x22, // line point width + GX_BP_REG_PERF0TRI = 0x23, // performance 0 (triangle) + GX_BP_REG_PERF0QUAD = 0x24, // performance 0 (quad) - // rasters - GX_BP_REG_RAS1_SS0 = 0x25, - GX_BP_REG_RAS1_SS1 = 0x26, - GX_BP_REG_RAS1_IREF = 0x27, - GX_BP_REG_RAS1_TREF0 = 0x28, - GX_BP_REG_RAS1_TREF1 = 0x29, - GX_BP_REG_RAS1_TREF2 = 0x2A, - GX_BP_REG_RAS1_TREF3 = 0x2B, - GX_BP_REG_RAS1_TREF4 = 0x2C, - GX_BP_REG_RAS1_TREF5 = 0x2D, - GX_BP_REG_RAS1_TREF6 = 0x2E, - GX_BP_REG_RAS1_TREF7 = 0x2F, + // rasters + GX_BP_REG_RAS1_SS0 = 0x25, + GX_BP_REG_RAS1_SS1 = 0x26, + GX_BP_REG_RAS1_IREF = 0x27, + GX_BP_REG_RAS1_TREF0 = 0x28, + GX_BP_REG_RAS1_TREF1 = 0x29, + GX_BP_REG_RAS1_TREF2 = 0x2A, + GX_BP_REG_RAS1_TREF3 = 0x2B, + GX_BP_REG_RAS1_TREF4 = 0x2C, + GX_BP_REG_RAS1_TREF5 = 0x2D, + GX_BP_REG_RAS1_TREF6 = 0x2E, + GX_BP_REG_RAS1_TREF7 = 0x2F, - // setup sizes - GX_BP_REG_SU_SSIZE0 = 0x30, - GX_BP_REG_SU_TSIZE0 = 0x31, - GX_BP_REG_SU_SSIZE1 = 0x32, - GX_BP_REG_SU_TSIZE1 = 0x33, - GX_BP_REG_SU_SSIZE2 = 0x34, - GX_BP_REG_SU_TSIZE2 = 0x35, - GX_BP_REG_SU_SSIZE3 = 0x36, - GX_BP_REG_SU_TSIZE3 = 0x37, - GX_BP_REG_SU_SSIZE4 = 0x38, - GX_BP_REG_SU_TSIZE4 = 0x39, - GX_BP_REG_SU_SSIZE5 = 0x3A, - GX_BP_REG_SU_TSIZE5 = 0x3B, - GX_BP_REG_SU_SSIZE6 = 0x3C, - GX_BP_REG_SU_TSIZE6 = 0x3D, - GX_BP_REG_SU_SSIZE7 = 0x3E, - GX_BP_REG_SU_TSIZE7 = 0x3F, + // setup sizes + GX_BP_REG_SU_SSIZE0 = 0x30, + GX_BP_REG_SU_TSIZE0 = 0x31, + GX_BP_REG_SU_SSIZE1 = 0x32, + GX_BP_REG_SU_TSIZE1 = 0x33, + GX_BP_REG_SU_SSIZE2 = 0x34, + GX_BP_REG_SU_TSIZE2 = 0x35, + GX_BP_REG_SU_SSIZE3 = 0x36, + GX_BP_REG_SU_TSIZE3 = 0x37, + GX_BP_REG_SU_SSIZE4 = 0x38, + GX_BP_REG_SU_TSIZE4 = 0x39, + GX_BP_REG_SU_SSIZE5 = 0x3A, + GX_BP_REG_SU_TSIZE5 = 0x3B, + GX_BP_REG_SU_SSIZE6 = 0x3C, + GX_BP_REG_SU_TSIZE6 = 0x3D, + GX_BP_REG_SU_SSIZE7 = 0x3E, + GX_BP_REG_SU_TSIZE7 = 0x3F, - // Z and blend controls - GX_BP_REG_ZMODE = 0x40, - GX_BP_REG_BLENDMODE = 0x41, - GX_BP_REG_DSTALPHA = 0x42, - GX_BP_REG_ZCONTROL = 0x43, - GX_BP_REG_FIELDMASK = 0x44, - GX_BP_REG_DRAWDONE = 0x45, - GX_BP_REG_PETOKEN = 0x47, - GX_BP_REG_PETOKENINT = 0x48, + // Z and blend controls + GX_BP_REG_ZMODE = 0x40, + GX_BP_REG_BLENDMODE = 0x41, + GX_BP_REG_DSTALPHA = 0x42, + GX_BP_REG_ZCONTROL = 0x43, + GX_BP_REG_FIELDMASK = 0x44, + GX_BP_REG_DRAWDONE = 0x45, + GX_BP_REG_PETOKEN = 0x47, + GX_BP_REG_PETOKENINT = 0x48, - // copying - GX_BP_REG_TEXCOPYSRCXY = 0x49, - GX_BP_REG_TEXCOPYSRCWH = 0x4A, - GX_BP_REG_TEXCOPYDST = 0x4B, - GX_BP_REG_DISPCOPYSTRIDE = 0x4D, - GX_BP_REG_DISPCOPYSCALEY = 0x4E, - GX_BP_REG_COPYCLEARAR = 0x4F, - GX_BP_REG_COPYCLEARGB = 0x50, - GX_BP_REG_COPYCLEARZ = 0x51, - GX_BP_REG_COPYFILTER0 = 0x53, - GX_BP_REG_COPYFILTER1 = 0x54, + // copying + GX_BP_REG_TEXCOPYSRCXY = 0x49, + GX_BP_REG_TEXCOPYSRCWH = 0x4A, + GX_BP_REG_TEXCOPYDST = 0x4B, + GX_BP_REG_DISPCOPYSTRIDE = 0x4D, + GX_BP_REG_DISPCOPYSCALEY = 0x4E, + GX_BP_REG_COPYCLEARAR = 0x4F, + GX_BP_REG_COPYCLEARGB = 0x50, + GX_BP_REG_COPYCLEARZ = 0x51, + GX_BP_REG_COPYFILTER0 = 0x53, + GX_BP_REG_COPYFILTER1 = 0x54, - // - GX_BP_REG_BOUNDINGBOX0 = 0x55, - GX_BP_REG_BOUNDINGBOX1 = 0x56, + // + GX_BP_REG_BOUNDINGBOX0 = 0x55, + GX_BP_REG_BOUNDINGBOX1 = 0x56, - GX_BP_REG_SCISSOROFFSET = 0x59, + GX_BP_REG_SCISSOROFFSET = 0x59, - // texture memory - GX_BP_REG_TMEMPRELOADADDR = 0x60, - GX_BP_REG_TMEMPRELOADEVEN = 0x61, - GX_BP_REG_TMEMPRELOADODD = 0x62, - GX_BP_REG_TMEMPRELOADMODE = 0x63, - GX_BP_REG_TMEMTLUTSRC = 0x64, - GX_BP_REG_TMEMTLUTDST = 0x65, - GX_BP_REG_TMEMTEXINVALIDATE = 0x66, + // texture memory + GX_BP_REG_TMEMPRELOADADDR = 0x60, + GX_BP_REG_TMEMPRELOADEVEN = 0x61, + GX_BP_REG_TMEMPRELOADODD = 0x62, + GX_BP_REG_TMEMPRELOADMODE = 0x63, + GX_BP_REG_TMEMTLUTSRC = 0x64, + GX_BP_REG_TMEMTLUTDST = 0x65, + GX_BP_REG_TMEMTEXINVALIDATE = 0x66, - // performance 1 - GX_BP_REG_PERF1 = 0x67, - GX_BP_REG_FIELDMODE = 0x68, + // performance 1 + GX_BP_REG_PERF1 = 0x67, + GX_BP_REG_FIELDMODE = 0x68, - // set modes - GX_BP_REG_SETMODE0_TEX0 = 0x80, - GX_BP_REG_SETMODE0_TEX1 = 0x81, - GX_BP_REG_SETMODE0_TEX2 = 0x82, - GX_BP_REG_SETMODE0_TEX3 = 0x83, - GX_BP_REG_SETMODE1_TEX0 = 0x84, - GX_BP_REG_SETMODE1_TEX1 = 0x85, - GX_BP_REG_SETMODE1_TEX2 = 0x86, - GX_BP_REG_SETMODE1_TEX3 = 0x87, + // set modes + GX_BP_REG_SETMODE0_TEX0 = 0x80, + GX_BP_REG_SETMODE0_TEX1 = 0x81, + GX_BP_REG_SETMODE0_TEX2 = 0x82, + GX_BP_REG_SETMODE0_TEX3 = 0x83, + GX_BP_REG_SETMODE1_TEX0 = 0x84, + GX_BP_REG_SETMODE1_TEX1 = 0x85, + GX_BP_REG_SETMODE1_TEX2 = 0x86, + GX_BP_REG_SETMODE1_TEX3 = 0x87, - // set images - GX_BP_REG_SETIMAGE0_TEX0 = 0x88, - GX_BP_REG_SETIMAGE0_TEX1 = 0x89, - GX_BP_REG_SETIMAGE0_TEX2 = 0x8A, - GX_BP_REG_SETIMAGE0_TEX3 = 0x8B, - GX_BP_REG_SETIMAGE1_TEX0 = 0x8C, - GX_BP_REG_SETIMAGE1_TEX1 = 0x8D, - GX_BP_REG_SETIMAGE1_TEX2 = 0x8E, - GX_BP_REG_SETIMAGE1_TEX3 = 0x8F, - GX_BP_REG_SETIMAGE2_TEX0 = 0x90, - GX_BP_REG_SETIMAGE2_TEX1 = 0x91, - GX_BP_REG_SETIMAGE2_TEX2 = 0x92, - GX_BP_REG_SETIMAGE2_TEX3 = 0x93, - GX_BP_REG_SETIMAGE3_TEX0 = 0x94, - GX_BP_REG_SETIMAGE3_TEX1 = 0x95, - GX_BP_REG_SETIMAGE3_TEX2 = 0x96, - GX_BP_REG_SETIMAGE3_TEX3 = 0x97, + // set images + GX_BP_REG_SETIMAGE0_TEX0 = 0x88, + GX_BP_REG_SETIMAGE0_TEX1 = 0x89, + GX_BP_REG_SETIMAGE0_TEX2 = 0x8A, + GX_BP_REG_SETIMAGE0_TEX3 = 0x8B, + GX_BP_REG_SETIMAGE1_TEX0 = 0x8C, + GX_BP_REG_SETIMAGE1_TEX1 = 0x8D, + GX_BP_REG_SETIMAGE1_TEX2 = 0x8E, + GX_BP_REG_SETIMAGE1_TEX3 = 0x8F, + GX_BP_REG_SETIMAGE2_TEX0 = 0x90, + GX_BP_REG_SETIMAGE2_TEX1 = 0x91, + GX_BP_REG_SETIMAGE2_TEX2 = 0x92, + GX_BP_REG_SETIMAGE2_TEX3 = 0x93, + GX_BP_REG_SETIMAGE3_TEX0 = 0x94, + GX_BP_REG_SETIMAGE3_TEX1 = 0x95, + GX_BP_REG_SETIMAGE3_TEX2 = 0x96, + GX_BP_REG_SETIMAGE3_TEX3 = 0x97, - // set texture lookups - GX_BP_REG_SETTLUT_TEX0 = 0x98, - GX_BP_REG_SETTLUT_TEX1 = 0x99, - GX_BP_REG_SETTLUT_TEX2 = 0x9A, - GX_BP_REG_SETTLUT_TEX3 = 0x9B, + // set texture lookups + GX_BP_REG_SETTLUT_TEX0 = 0x98, + GX_BP_REG_SETTLUT_TEX1 = 0x99, + GX_BP_REG_SETTLUT_TEX2 = 0x9A, + GX_BP_REG_SETTLUT_TEX3 = 0x9B, - // set modes continued - GX_BP_REG_SETMODE0_TEX4 = 0xA0, - GX_BP_REG_SETMODE0_TEX5 = 0xA1, - GX_BP_REG_SETMODE0_TEX6 = 0xA2, - GX_BP_REG_SETMODE0_TEX7 = 0xA3, - GX_BP_REG_SETMODE1_TEX4 = 0xA4, - GX_BP_REG_SETMODE1_TEX5 = 0xA5, - GX_BP_REG_SETMODE1_TEX6 = 0xA6, - GX_BP_REG_SETMODE1_TEX7 = 0xA7, + // set modes continued + GX_BP_REG_SETMODE0_TEX4 = 0xA0, + GX_BP_REG_SETMODE0_TEX5 = 0xA1, + GX_BP_REG_SETMODE0_TEX6 = 0xA2, + GX_BP_REG_SETMODE0_TEX7 = 0xA3, + GX_BP_REG_SETMODE1_TEX4 = 0xA4, + GX_BP_REG_SETMODE1_TEX5 = 0xA5, + GX_BP_REG_SETMODE1_TEX6 = 0xA6, + GX_BP_REG_SETMODE1_TEX7 = 0xA7, - // set images continued - GX_BP_REG_SETIMAGE0_TEX4 = 0xA8, - GX_BP_REG_SETIMAGE0_TEX5 = 0xA9, - GX_BP_REG_SETIMAGE0_TEX6 = 0xAA, - GX_BP_REG_SETIMAGE0_TEX7 = 0xAB, - GX_BP_REG_SETIMAGE1_TEX4 = 0xAC, - GX_BP_REG_SETIMAGE1_TEX5 = 0xAD, - GX_BP_REG_SETIMAGE1_TEX6 = 0xAE, - GX_BP_REG_SETIMAGE1_TEX7 = 0xAF, - GX_BP_REG_SETIMAGE2_TEX4 = 0xB0, - GX_BP_REG_SETIMAGE2_TEX5 = 0xB1, - GX_BP_REG_SETIMAGE2_TEX6 = 0xB2, - GX_BP_REG_SETIMAGE2_TEX7 = 0xB3, - GX_BP_REG_SETIMAGE3_TEX4 = 0xB4, - GX_BP_REG_SETIMAGE3_TEX5 = 0xB5, - GX_BP_REG_SETIMAGE3_TEX6 = 0xB6, - GX_BP_REG_SETIMAGE3_TEX7 = 0xB7, + // set images continued + GX_BP_REG_SETIMAGE0_TEX4 = 0xA8, + GX_BP_REG_SETIMAGE0_TEX5 = 0xA9, + GX_BP_REG_SETIMAGE0_TEX6 = 0xAA, + GX_BP_REG_SETIMAGE0_TEX7 = 0xAB, + GX_BP_REG_SETIMAGE1_TEX4 = 0xAC, + GX_BP_REG_SETIMAGE1_TEX5 = 0xAD, + GX_BP_REG_SETIMAGE1_TEX6 = 0xAE, + GX_BP_REG_SETIMAGE1_TEX7 = 0xAF, + GX_BP_REG_SETIMAGE2_TEX4 = 0xB0, + GX_BP_REG_SETIMAGE2_TEX5 = 0xB1, + GX_BP_REG_SETIMAGE2_TEX6 = 0xB2, + GX_BP_REG_SETIMAGE2_TEX7 = 0xB3, + GX_BP_REG_SETIMAGE3_TEX4 = 0xB4, + GX_BP_REG_SETIMAGE3_TEX5 = 0xB5, + GX_BP_REG_SETIMAGE3_TEX6 = 0xB6, + GX_BP_REG_SETIMAGE3_TEX7 = 0xB7, - // set texture lookups continued - GX_BP_REG_SETTLUT_TEX4 = 0xB8, - GX_BP_REG_SETTLUT_TEX5 = 0xB9, - GX_BP_REG_SETTLUT_TEX6 = 0xBA, - GX_BP_REG_SETTLUT_TEX7 = 0xBB, + // set texture lookups continued + GX_BP_REG_SETTLUT_TEX4 = 0xB8, + GX_BP_REG_SETTLUT_TEX5 = 0xB9, + GX_BP_REG_SETTLUT_TEX6 = 0xBA, + GX_BP_REG_SETTLUT_TEX7 = 0xBB, - // TEV color manips - GX_BP_REG_TEVCOLORCOMBINER0 = 0xC0, - GX_BP_REG_TEVALPHACOMBINER0 = 0xC1, - GX_BP_REG_TEVCOLORCOMBINER1 = 0xC2, - GX_BP_REG_TEVALPHACOMBINER1 = 0xC3, - GX_BP_REG_TEVCOLORCOMBINER2 = 0xC4, - GX_BP_REG_TEVALPHACOMBINER2 = 0xC5, - GX_BP_REG_TEVCOLORCOMBINER3 = 0xC6, - GX_BP_REG_TEVALPHACOMBINER3 = 0xC7, - GX_BP_REG_TEVCOLORCOMBINER4 = 0xC8, - GX_BP_REG_TEVALPHACOMBINER4 = 0xC9, - GX_BP_REG_TEVCOLORCOMBINER5 = 0xCA, - GX_BP_REG_TEVALPHACOMBINER5 = 0xCB, - GX_BP_REG_TEVCOLORCOMBINER6 = 0xCC, - GX_BP_REG_TEVALPHACOMBINER6 = 0xCD, - GX_BP_REG_TEVCOLORCOMBINER7 = 0xCE, - GX_BP_REG_TEVALPHACOMBINER7 = 0xCF, - GX_BP_REG_TEVCOLORCOMBINER8 = 0xD0, - GX_BP_REG_TEVALPHACOMBINER8 = 0xD1, - GX_BP_REG_TEVCOLORCOMBINER9 = 0xD2, - GX_BP_REG_TEVALPHACOMBINER9 = 0xD3, - GX_BP_REG_TEVCOLORCOMBINER10 = 0xD4, - GX_BP_REG_TEVALPHACOMBINER10 = 0xD5, - GX_BP_REG_TEVCOLORCOMBINER11 = 0xD6, - GX_BP_REG_TEVALPHACOMBINER11 = 0xD7, - GX_BP_REG_TEVCOLORCOMBINER12 = 0xD8, - GX_BP_REG_TEVALPHACOMBINER12 = 0xD9, - GX_BP_REG_TEVCOLORCOMBINER13 = 0xDA, - GX_BP_REG_TEVALPHACOMBINER13 = 0xDB, - GX_BP_REG_TEVCOLORCOMBINER14 = 0xDC, - GX_BP_REG_TEVALPHACOMBINER14 = 0xDD, - GX_BP_REG_TEVCOLORCOMBINER15 = 0xDE, - GX_BP_REG_TEVALPHACOMBINER15 = 0xDF, + // TEV color manips + GX_BP_REG_TEVCOLORCOMBINER0 = 0xC0, + GX_BP_REG_TEVALPHACOMBINER0 = 0xC1, + GX_BP_REG_TEVCOLORCOMBINER1 = 0xC2, + GX_BP_REG_TEVALPHACOMBINER1 = 0xC3, + GX_BP_REG_TEVCOLORCOMBINER2 = 0xC4, + GX_BP_REG_TEVALPHACOMBINER2 = 0xC5, + GX_BP_REG_TEVCOLORCOMBINER3 = 0xC6, + GX_BP_REG_TEVALPHACOMBINER3 = 0xC7, + GX_BP_REG_TEVCOLORCOMBINER4 = 0xC8, + GX_BP_REG_TEVALPHACOMBINER4 = 0xC9, + GX_BP_REG_TEVCOLORCOMBINER5 = 0xCA, + GX_BP_REG_TEVALPHACOMBINER5 = 0xCB, + GX_BP_REG_TEVCOLORCOMBINER6 = 0xCC, + GX_BP_REG_TEVALPHACOMBINER6 = 0xCD, + GX_BP_REG_TEVCOLORCOMBINER7 = 0xCE, + GX_BP_REG_TEVALPHACOMBINER7 = 0xCF, + GX_BP_REG_TEVCOLORCOMBINER8 = 0xD0, + GX_BP_REG_TEVALPHACOMBINER8 = 0xD1, + GX_BP_REG_TEVCOLORCOMBINER9 = 0xD2, + GX_BP_REG_TEVALPHACOMBINER9 = 0xD3, + GX_BP_REG_TEVCOLORCOMBINER10 = 0xD4, + GX_BP_REG_TEVALPHACOMBINER10 = 0xD5, + GX_BP_REG_TEVCOLORCOMBINER11 = 0xD6, + GX_BP_REG_TEVALPHACOMBINER11 = 0xD7, + GX_BP_REG_TEVCOLORCOMBINER12 = 0xD8, + GX_BP_REG_TEVALPHACOMBINER12 = 0xD9, + GX_BP_REG_TEVCOLORCOMBINER13 = 0xDA, + GX_BP_REG_TEVALPHACOMBINER13 = 0xDB, + GX_BP_REG_TEVCOLORCOMBINER14 = 0xDC, + GX_BP_REG_TEVALPHACOMBINER14 = 0xDD, + GX_BP_REG_TEVCOLORCOMBINER15 = 0xDE, + GX_BP_REG_TEVALPHACOMBINER15 = 0xDF, - // TEV registers - GX_BP_REG_TEVREG0LO = 0xE0, - GX_BP_REG_TEVREG0HI = 0xE1, - GX_BP_REG_TEVREG1LO = 0xE2, - GX_BP_REG_TEVREG1HI = 0xE3, - GX_BP_REG_TEVREG2LO = 0xE4, - GX_BP_REG_TEVREG2HI = 0xE5, - GX_BP_REG_TEVREG3LO = 0xE6, - GX_BP_REG_TEVREG3HI = 0xE7, + // TEV registers + GX_BP_REG_TEVREG0LO = 0xE0, + GX_BP_REG_TEVREG0HI = 0xE1, + GX_BP_REG_TEVREG1LO = 0xE2, + GX_BP_REG_TEVREG1HI = 0xE3, + GX_BP_REG_TEVREG2LO = 0xE4, + GX_BP_REG_TEVREG2HI = 0xE5, + GX_BP_REG_TEVREG3LO = 0xE6, + GX_BP_REG_TEVREG3HI = 0xE7, - // fog registers - GX_BP_REG_FOGRANGE = 0xE8, - GX_BP_REG_FOGRANGEK0 = 0xE9, - GX_BP_REG_FOGRANGEK1 = 0xEA, - GX_BP_REG_FOGRANGEK2 = 0xEB, - GX_BP_REG_FOGRANGEK3 = 0xEC, - GX_BP_REG_FOGRANGEK4 = 0xED, - GX_BP_REG_FOGPARAM0 = 0xEE, - GX_BP_REG_FOGPARAM1 = 0xEF, - GX_BP_REG_FOGPARAM2 = 0xF0, - GX_BP_REG_FOGPARAM3 = 0xF1, - GX_BP_REG_FOGCOLOR = 0xF2, + // fog registers + GX_BP_REG_FOGRANGE = 0xE8, + GX_BP_REG_FOGRANGEK0 = 0xE9, + GX_BP_REG_FOGRANGEK1 = 0xEA, + GX_BP_REG_FOGRANGEK2 = 0xEB, + GX_BP_REG_FOGRANGEK3 = 0xEC, + GX_BP_REG_FOGRANGEK4 = 0xED, + GX_BP_REG_FOGPARAM0 = 0xEE, + GX_BP_REG_FOGPARAM1 = 0xEF, + GX_BP_REG_FOGPARAM2 = 0xF0, + GX_BP_REG_FOGPARAM3 = 0xF1, + GX_BP_REG_FOGCOLOR = 0xF2, - // performance manip registers - GX_BP_REG_ALPHACOMPARE = 0xF3, - GX_BP_REG_ZTEXTURE0 = 0xF4, - GX_BP_REG_ZTEXTURE1 = 0xF5, + // performance manip registers + GX_BP_REG_ALPHACOMPARE = 0xF3, + GX_BP_REG_ZTEXTURE0 = 0xF4, + GX_BP_REG_ZTEXTURE1 = 0xF5, - // TEV K selectors - GX_BP_REG_TEVKSEL0 = 0xF6, - GX_BP_REG_TEVKSEL1 = 0xF7, - GX_BP_REG_TEVKSEL2 = 0xF8, - GX_BP_REG_TEVKSEL3 = 0xF9, - GX_BP_REG_TEVKSEL4 = 0xFA, - GX_BP_REG_TEVKSEL5 = 0xFB, - GX_BP_REG_TEVKSEL6 = 0xFC, - GX_BP_REG_TEVKSEL7 = 0xFD, + // TEV K selectors + GX_BP_REG_TEVKSEL0 = 0xF6, + GX_BP_REG_TEVKSEL1 = 0xF7, + GX_BP_REG_TEVKSEL2 = 0xF8, + GX_BP_REG_TEVKSEL3 = 0xF9, + GX_BP_REG_TEVKSEL4 = 0xFA, + GX_BP_REG_TEVKSEL5 = 0xFB, + GX_BP_REG_TEVKSEL6 = 0xFC, + GX_BP_REG_TEVKSEL7 = 0xFD, - // SS mask - GX_BP_REG_SSMASK = 0xFE, + // SS mask + GX_BP_REG_SSMASK = 0xFE, } GXBPRegs; // BP locators for fog parameter 0. typedef enum _GXBPFogParam0 { - // A mantissa [21-31] - GX_BP_FOGPARAM0_A_MANT_ST = 21, - GX_BP_FOGPARAM0_A_MANT_END = 31, + // A mantissa [21-31] + GX_BP_FOGPARAM0_A_MANT_ST = 21, + GX_BP_FOGPARAM0_A_MANT_END = 31, - // A exponent [13-20] - GX_BP_FOGPARAM0_A_EXP_ST = 13, - GX_BP_FOGPARAM0_A_EXP_END = 20, + // A exponent [13-20] + GX_BP_FOGPARAM0_A_EXP_ST = 13, + GX_BP_FOGPARAM0_A_EXP_END = 20, - // A sign [12-12] - GX_BP_FOGPARAM0_A_SIGN_ST = 12, - GX_BP_FOGPARAM0_A_SIGN_END = 12, + // A sign [12-12] + GX_BP_FOGPARAM0_A_SIGN_ST = 12, + GX_BP_FOGPARAM0_A_SIGN_END = 12, } GXBPFogParam0; // BP locators for fog parameter 1. typedef enum _GXBPFogParam1 { - // B magnitude [8-31] - GX_BP_FOGPARAM1_B_MAG_ST = 8, - GX_BP_FOGPARAM1_B_MAG_END = 31, + // B magnitude [8-31] + GX_BP_FOGPARAM1_B_MAG_ST = 8, + GX_BP_FOGPARAM1_B_MAG_END = 31, } GXBPFogParam1; // BP locators for fog parameter 2. typedef enum _GXBPFogParam2 { - // B shift [27-31] - GX_BP_FOGPARAM2_B_SHIFT_ST = 27, - GX_BP_FOGPARAM2_B_SHIFT_END = 31, + // B shift [27-31] + GX_BP_FOGPARAM2_B_SHIFT_ST = 27, + GX_BP_FOGPARAM2_B_SHIFT_END = 31, } GXBPFogParam2; // BP locators for fog parameter 3. typedef enum _GXBPFogParam3 { - // C mantissa [21-31] - GX_BP_FOGPARAM3_C_MANT_ST = 21, - GX_BP_FOGPARAM3_C_MANT_END = 31, + // C mantissa [21-31] + GX_BP_FOGPARAM3_C_MANT_ST = 21, + GX_BP_FOGPARAM3_C_MANT_END = 31, - // C exponent [13-20] - GX_BP_FOGPARAM3_C_EXP_ST = 13, - GX_BP_FOGPARAM3_C_EXP_END = 20, + // C exponent [13-20] + GX_BP_FOGPARAM3_C_EXP_ST = 13, + GX_BP_FOGPARAM3_C_EXP_END = 20, - // C sign [12-12] - GX_BP_FOGPARAM3_C_SIGN_ST = 12, - GX_BP_FOGPARAM3_C_SIGN_END = 12, + // C sign [12-12] + GX_BP_FOGPARAM3_C_SIGN_ST = 12, + GX_BP_FOGPARAM3_C_SIGN_END = 12, - // Projection [11] - GX_BP_FOGPARAM3_PROJ_ST = 11, - GX_BP_FOGPARAM3_PROJ_END = 11, + // Projection [11] + GX_BP_FOGPARAM3_PROJ_ST = 11, + GX_BP_FOGPARAM3_PROJ_END = 11, - // F select [8-10] - GX_BP_FOGPARAM3_FSEL_ST = 8, - GX_BP_FOGPARAM3_FSEL_END = 10, + // F select [8-10] + GX_BP_FOGPARAM3_FSEL_ST = 8, + GX_BP_FOGPARAM3_FSEL_END = 10, } GXBPFogParam3; // BP locators for fog color. typedef enum _GXBPFogColor { - // RGB components of color [8-31] - GX_BP_FOGCOLOR_RGB_ST = 8, - GX_BP_FOGCOLOR_RGB_END = 31, + // RGB components of color [8-31] + GX_BP_FOGCOLOR_RGB_ST = 8, + GX_BP_FOGCOLOR_RGB_END = 31, } GXBPFogColor; // BP locators for fog range. typedef enum _GXBPFogRange { - // Center [22-31] - GX_BP_FOGRANGE_CENTER_ST = 22, - GX_BP_FOGRANGE_CENTER_END = 31, + // Center [22-31] + GX_BP_FOGRANGE_CENTER_ST = 22, + GX_BP_FOGRANGE_CENTER_END = 31, - // Enabled [21-21] - GX_BP_FOGRANGE_ENABLED_ST = 21, - GX_BP_FOGRANGE_ENABLED_END = 21, + // Enabled [21-21] + GX_BP_FOGRANGE_ENABLED_ST = 21, + GX_BP_FOGRANGE_ENABLED_END = 21, } GXBPFogRange; // BP locators for fog range K. typedef enum _GXBPFogRangeK { - // Hi [20-31] - GX_BP_FOGRANGEK_HI_ST = 20, - GX_BP_FOGRANGEK_HI_END = 31, + // Hi [20-31] + GX_BP_FOGRANGEK_HI_ST = 20, + GX_BP_FOGRANGEK_HI_END = 31, - // Lo [8-19] - GX_BP_FOGRANGEK_LO_ST = 8, - GX_BP_FOGRANGEK_LO_END = 19, + // Lo [8-19] + GX_BP_FOGRANGEK_LO_ST = 8, + GX_BP_FOGRANGEK_LO_END = 19, } GXBPFogRangeK; // BP locators for blend mode. typedef enum _GXBPBlendMode { - // Blend enable [31-31] - GX_BP_BLENDMODE_ENABLE_ST = 31, - GX_BP_BLENDMODE_ENABLE_END = 31, + // Blend enable [31-31] + GX_BP_BLENDMODE_ENABLE_ST = 31, + GX_BP_BLENDMODE_ENABLE_END = 31, - // Logic operation enable [30-30] - GX_BP_BLENDMODE_LOGIC_OP_ST = 30, - GX_BP_BLENDMODE_LOGIC_OP_END = 30, + // Logic operation enable [30-30] + GX_BP_BLENDMODE_LOGIC_OP_ST = 30, + GX_BP_BLENDMODE_LOGIC_OP_END = 30, - // Dither [29-29] - GX_BP_BLENDMODE_DITHER_ST = 29, - GX_BP_BLENDMODE_DITHER_END = 29, + // Dither [29-29] + GX_BP_BLENDMODE_DITHER_ST = 29, + GX_BP_BLENDMODE_DITHER_END = 29, - // Color update [28-28] - GX_BP_BLENDMODE_COLOR_UPDATE_ST = 28, - GX_BP_BLENDMODE_COLOR_UPDATE_END = 28, + // Color update [28-28] + GX_BP_BLENDMODE_COLOR_UPDATE_ST = 28, + GX_BP_BLENDMODE_COLOR_UPDATE_END = 28, - // Alpha update [27-27] - GX_BP_BLENDMODE_ALPHA_UPDATE_ST = 27, - GX_BP_BLENDMODE_ALPHA_UPDATE_END = 27, + // Alpha update [27-27] + GX_BP_BLENDMODE_ALPHA_UPDATE_ST = 27, + GX_BP_BLENDMODE_ALPHA_UPDATE_END = 27, - // Destination factor [24-26] - GX_BP_BLENDMODE_DSTFACTOR_ST = 24, - GX_BP_BLENDMODE_DSTFACTOR_END = 26, + // Destination factor [24-26] + GX_BP_BLENDMODE_DSTFACTOR_ST = 24, + GX_BP_BLENDMODE_DSTFACTOR_END = 26, - // Source factor [21-23] - GX_BP_BLENDMODE_SRCFACTOR_ST = 21, - GX_BP_BLENDMODE_SRCFACTOR_END = 23, + // Source factor [21-23] + GX_BP_BLENDMODE_SRCFACTOR_ST = 21, + GX_BP_BLENDMODE_SRCFACTOR_END = 23, - // Subtract [20-20] - GX_BP_BLENDMODE_SUBTRACT_ST = 20, - GX_BP_BLENDMODE_SUBTRACT_END = 20, + // Subtract [20-20] + GX_BP_BLENDMODE_SUBTRACT_ST = 20, + GX_BP_BLENDMODE_SUBTRACT_END = 20, - // Logic mode [16-19] - GX_BP_BLENDMODE_LOGICMODE_ST = 16, - GX_BP_BLENDMODE_LOGICMODE_END = 19, + // Logic mode [16-19] + GX_BP_BLENDMODE_LOGICMODE_ST = 16, + GX_BP_BLENDMODE_LOGICMODE_END = 19, } GXBPBlendMode; // BP locators for Z mode. typedef enum _GXBPZMode { - // Test enable [31-31] - GX_BP_ZMODE_TEST_ENABLE_ST = 31, - GX_BP_ZMODE_TEST_ENABLE_END = 31, + // Test enable [31-31] + GX_BP_ZMODE_TEST_ENABLE_ST = 31, + GX_BP_ZMODE_TEST_ENABLE_END = 31, - // Compare [28-30] - GX_BP_ZMODE_COMPARE_ST = 28, - GX_BP_ZMODE_COMPARE_END = 30, + // Compare [28-30] + GX_BP_ZMODE_COMPARE_ST = 28, + GX_BP_ZMODE_COMPARE_END = 30, - // Update enable [27-27] - GX_BP_ZMODE_UPDATE_ENABLE_ST = 27, - GX_BP_ZMODE_UPDATE_ENABLE_END = 27, + // Update enable [27-27] + GX_BP_ZMODE_UPDATE_ENABLE_ST = 27, + GX_BP_ZMODE_UPDATE_ENABLE_END = 27, } GXBPZMode; // BP locators for Z control. typedef enum _GXBPZControl { - // Pixel format [29-31] - GX_BP_ZCONTROL_PIXEL_FMT_ST = 29, - GX_BP_ZCONTROL_PIXEL_FMT_END = 31, + // Pixel format [29-31] + GX_BP_ZCONTROL_PIXEL_FMT_ST = 29, + GX_BP_ZCONTROL_PIXEL_FMT_END = 31, - // Z format [26-28] - GX_BP_ZCONTROL_Z_FMT_ST = 26, - GX_BP_ZCONTROL_Z_FMT_END = 28, + // Z format [26-28] + GX_BP_ZCONTROL_Z_FMT_ST = 26, + GX_BP_ZCONTROL_Z_FMT_END = 28, - // Whether to do Z-buffering before or after texturing [25-25] - GX_BP_ZCONTROL_BEFORE_TEX_ST = 25, - GX_BP_ZCONTROL_BEFORE_TEX_END = 25, + // Whether to do Z-buffering before or after texturing [25-25] + GX_BP_ZCONTROL_BEFORE_TEX_ST = 25, + GX_BP_ZCONTROL_BEFORE_TEX_END = 25, } GXBPZControl; // BP locators for destination alpha. typedef enum _GXBPDstAlpha { - // Alpha [24-31] - GX_BP_DSTALPHA_ALPHA_ST = 24, - GX_BP_DSTALPHA_ALPHA_END = 31, + // Alpha [24-31] + GX_BP_DSTALPHA_ALPHA_ST = 24, + GX_BP_DSTALPHA_ALPHA_END = 31, - // Enable [23-23] - GX_BP_DSTALPHA_ENABLE_ST = 23, - GX_BP_DSTALPHA_ENABLE_END = 23, + // Enable [23-23] + GX_BP_DSTALPHA_ENABLE_ST = 23, + GX_BP_DSTALPHA_ENABLE_END = 23, - // YUV format [21-22] - GX_BP_DSTALPHA_YUV_FMT_ST = 21, - GX_BP_DSTALPHA_YUV_FMT_END = 22, + // YUV format [21-22] + GX_BP_DSTALPHA_YUV_FMT_ST = 21, + GX_BP_DSTALPHA_YUV_FMT_END = 22, } GXBPDstAlpha; // BP locators for field mask. typedef enum _GXBPFieldMask { - // Whether to write odd fields to the EFB [31-31] - GX_BP_FIELDMASK_ODD_ST = 31, - GX_BP_FIELDMASK_ODD_END = 31, + // Whether to write odd fields to the EFB [31-31] + GX_BP_FIELDMASK_ODD_ST = 31, + GX_BP_FIELDMASK_ODD_END = 31, - // Whether to write even fields to the EFB [30-30] - GX_BP_FIELDMASK_EVEN_ST = 30, - GX_BP_FIELDMASK_EVEN_END = 30, + // Whether to write even fields to the EFB [30-30] + GX_BP_FIELDMASK_EVEN_ST = 30, + GX_BP_FIELDMASK_EVEN_END = 30, } GXBPFieldMask; // BP locators for line and point settings. typedef enum _GXBPLinePtWidth { - // Line size/width [24-31] - GX_BP_LINEPTWIDTH_LINESZ_ST = 24, - GX_BP_LINEPTWIDTH_LINESZ_END = 31, + // Line size/width [24-31] + GX_BP_LINEPTWIDTH_LINESZ_ST = 24, + GX_BP_LINEPTWIDTH_LINESZ_END = 31, - // Point size [16-23] - GX_BP_LINEPTWIDTH_POINTSZ_ST = 16, - GX_BP_LINEPTWIDTH_POINTSZ_END = 23, + // Point size [16-23] + GX_BP_LINEPTWIDTH_POINTSZ_ST = 16, + GX_BP_LINEPTWIDTH_POINTSZ_END = 23, - // Line offset [13-15] - GX_BP_LINEPTWIDTH_LINEOFS_ST = 13, - GX_BP_LINEPTWIDTH_LINEOFS_END = 15, + // Line offset [13-15] + GX_BP_LINEPTWIDTH_LINEOFS_ST = 13, + GX_BP_LINEPTWIDTH_LINEOFS_END = 15, - // Point offset [10-12] - GX_BP_LINEPTWIDTH_POINTOFS_ST = 10, - GX_BP_LINEPTWIDTH_POINTOFS_END = 12, + // Point offset [10-12] + GX_BP_LINEPTWIDTH_POINTOFS_ST = 10, + GX_BP_LINEPTWIDTH_POINTOFS_END = 12, - // Interlacing adjustment for aspect ratio [9-9] - GX_BP_LINEPTWIDTH_ADJUST_ST = 9, - GX_BP_LINEPTWIDTH_ADJUST_END = 9, + // Interlacing adjustment for aspect ratio [9-9] + GX_BP_LINEPTWIDTH_ADJUST_ST = 9, + GX_BP_LINEPTWIDTH_ADJUST_END = 9, } GXBPLinePtWidth; // Miscellaneous token types. typedef enum _GXMiscToken { - GX_MT_NULL = 0, - GX_MT_XF_FLUSH = 1, - GX_MT_DL_SAVE_CONTEXT = 2, - GX_MT_ABORT_WAIT_COPYOUT = 3, + GX_MT_NULL = 0, + GX_MT_XF_FLUSH = 1, + GX_MT_DL_SAVE_CONTEXT = 2, + GX_MT_ABORT_WAIT_COPYOUT = 3, } GXMiscToken; // Transform memory types. typedef enum _GXXfMem { - GX_XF_MEM_POSMTX = 0x000, // position coord matrix - GX_XF_MEM_NRMMTX = 0x400, // normal coord matrix - GX_XF_MEM_DUALTEXMTX = 0x500, // dual texture matrix - GX_XF_MEM_LIGHTOBJ = 0x600, // light object + GX_XF_MEM_POSMTX = 0x000, // position coord matrix + GX_XF_MEM_NRMMTX = 0x400, // normal coord matrix + GX_XF_MEM_DUALTEXMTX = 0x500, // dual texture matrix + GX_XF_MEM_LIGHTOBJ = 0x600, // light object } GXXfMem; // BP locators for top-left scissor. typedef enum _GXBPScissorTL { - // Top component [21-31] - GX_BP_SCISSORTL_TOP_ST = 21, - GX_BP_SCISSORTL_TOP_END = 31, + // Top component [21-31] + GX_BP_SCISSORTL_TOP_ST = 21, + GX_BP_SCISSORTL_TOP_END = 31, - // Left component [9-19] - GX_BP_SCISSORTL_LEFT_ST = 9, - GX_BP_SCISSORTL_LEFT_END = 19, + // Left component [9-19] + GX_BP_SCISSORTL_LEFT_ST = 9, + GX_BP_SCISSORTL_LEFT_END = 19, } GXBPScissorTL; // BP locators for bottom-right scissor. typedef enum _GXBPScissorBR { - // Bottom component [21-31] - GX_BP_SCISSORBR_BOT_ST = 21, - GX_BP_SCISSORBR_BOT_END = 31, + // Bottom component [21-31] + GX_BP_SCISSORBR_BOT_ST = 21, + GX_BP_SCISSORBR_BOT_END = 31, - // Right component [9-19] - GX_BP_SCISSORBR_RIGHT_ST = 9, - GX_BP_SCISSORBR_RIGHT_END = 19, + // Right component [9-19] + GX_BP_SCISSORBR_RIGHT_ST = 9, + GX_BP_SCISSORBR_RIGHT_END = 19, } GXBPScissorBR; // BP locators for scissor offset. typedef enum _GXBPScissorOffset { - // X offset [22-31] - GX_BP_SCISSOROFS_OX_ST = 22, - GX_BP_SCISSOROFS_OX_END = 31, + // X offset [22-31] + GX_BP_SCISSOROFS_OX_ST = 22, + GX_BP_SCISSOROFS_OX_END = 31, - // Y offset [12-21] - GX_BP_SCISSOROFS_OY_ST = 12, - GX_BP_SCISSOROFS_OY_END = 21, + // Y offset [12-21] + GX_BP_SCISSOROFS_OY_ST = 12, + GX_BP_SCISSOROFS_OY_END = 21, } GXBPScissorOffset; // Perf-0 types. typedef enum _GXPerf0 { - GX_PERF0_VERTICES = 0, - GX_PERF0_CLIP_VTX = 1, - GX_PERF0_CLIP_CLKS = 2, - GX_PERF0_XF_WAIT_IN = 3, - GX_PERF0_XF_WAIT_OUT = 4, - GX_PERF0_XF_XFRM_CLKS = 5, - GX_PERF0_XF_LIT_CLKS = 6, - GX_PERF0_XF_BOT_CLKS = 7, - GX_PERF0_XF_REGLD_CLKS = 8, - GX_PERF0_XF_REGRD_CLKS = 9, - GX_PERF0_CLIP_RATIO = 10, + GX_PERF0_VERTICES = 0, + GX_PERF0_CLIP_VTX = 1, + GX_PERF0_CLIP_CLKS = 2, + GX_PERF0_XF_WAIT_IN = 3, + GX_PERF0_XF_WAIT_OUT = 4, + GX_PERF0_XF_XFRM_CLKS = 5, + GX_PERF0_XF_LIT_CLKS = 6, + GX_PERF0_XF_BOT_CLKS = 7, + GX_PERF0_XF_REGLD_CLKS = 8, + GX_PERF0_XF_REGRD_CLKS = 9, + GX_PERF0_CLIP_RATIO = 10, - GX_PERF0_TRIANGLES = 11, - GX_PERF0_TRIANGLES_CULLED = 12, - GX_PERF0_TRIANGLES_PASSED = 13, - GX_PERF0_TRIANGLES_SCISSORED = 14, - GX_PERF0_TRIANGLES_0TEX = 15, - GX_PERF0_TRIANGLES_1TEX = 16, - GX_PERF0_TRIANGLES_2TEX = 17, - GX_PERF0_TRIANGLES_3TEX = 18, - GX_PERF0_TRIANGLES_4TEX = 19, - GX_PERF0_TRIANGLES_5TEX = 20, - GX_PERF0_TRIANGLES_6TEX = 21, - GX_PERF0_TRIANGLES_7TEX = 22, - GX_PERF0_TRIANGLES_8TEX = 23, - GX_PERF0_TRIANGLES_0CLR = 24, - GX_PERF0_TRIANGLES_1CLR = 25, - GX_PERF0_TRIANGLES_2CLR = 26, + GX_PERF0_TRIANGLES = 11, + GX_PERF0_TRIANGLES_CULLED = 12, + GX_PERF0_TRIANGLES_PASSED = 13, + GX_PERF0_TRIANGLES_SCISSORED = 14, + GX_PERF0_TRIANGLES_0TEX = 15, + GX_PERF0_TRIANGLES_1TEX = 16, + GX_PERF0_TRIANGLES_2TEX = 17, + GX_PERF0_TRIANGLES_3TEX = 18, + GX_PERF0_TRIANGLES_4TEX = 19, + GX_PERF0_TRIANGLES_5TEX = 20, + GX_PERF0_TRIANGLES_6TEX = 21, + GX_PERF0_TRIANGLES_7TEX = 22, + GX_PERF0_TRIANGLES_8TEX = 23, + GX_PERF0_TRIANGLES_0CLR = 24, + GX_PERF0_TRIANGLES_1CLR = 25, + GX_PERF0_TRIANGLES_2CLR = 26, - GX_PERF0_QUAD_0CVG = 27, - GX_PERF0_QUAD_NON0CVG = 28, - GX_PERF0_QUAD_1CVG = 29, - GX_PERF0_QUAD_2CVG = 30, - GX_PERF0_QUAD_3CVG = 31, - GX_PERF0_QUAD_4CVG = 32, - GX_PERF0_AVG_QUAD_CNT = 33, + GX_PERF0_QUAD_0CVG = 27, + GX_PERF0_QUAD_NON0CVG = 28, + GX_PERF0_QUAD_1CVG = 29, + GX_PERF0_QUAD_2CVG = 30, + GX_PERF0_QUAD_3CVG = 31, + GX_PERF0_QUAD_4CVG = 32, + GX_PERF0_AVG_QUAD_CNT = 33, - GX_PERF0_CLOCKS = 34, - GX_PERF0_NONE = 35, + GX_PERF0_CLOCKS = 34, + GX_PERF0_NONE = 35, } GXPerf0; // Perf-1 types. typedef enum _GXPerf1 { - GX_PERF1_TEXELS = 0, - GX_PERF1_TX_IDLE = 1, - GX_PERF1_TX_REGS = 2, - GX_PERF1_TX_MEMSTALL = 3, - GX_PERF1_TC_CHECK1_2 = 4, - GX_PERF1_TC_CHECK3_4 = 5, - GX_PERF1_TC_CHECK5_6 = 6, - GX_PERF1_TC_CHECK7_8 = 7, - GX_PERF1_TC_MISS = 8, + GX_PERF1_TEXELS = 0, + GX_PERF1_TX_IDLE = 1, + GX_PERF1_TX_REGS = 2, + GX_PERF1_TX_MEMSTALL = 3, + GX_PERF1_TC_CHECK1_2 = 4, + GX_PERF1_TC_CHECK3_4 = 5, + GX_PERF1_TC_CHECK5_6 = 6, + GX_PERF1_TC_CHECK7_8 = 7, + GX_PERF1_TC_MISS = 8, - GX_PERF1_VC_ELEMQ_FULL = 9, - GX_PERF1_VC_MISSQ_FULL = 10, - GX_PERF1_VC_MEMREQ_FULL = 11, - GX_PERF1_VC_STATUS7 = 12, - GX_PERF1_VC_MISSREP_FULL = 13, - GX_PERF1_VC_STREAMBUF_LOW = 14, - GX_PERF1_VC_ALL_STALLS = 15, - GX_PERF1_VERTICES = 16, + GX_PERF1_VC_ELEMQ_FULL = 9, + GX_PERF1_VC_MISSQ_FULL = 10, + GX_PERF1_VC_MEMREQ_FULL = 11, + GX_PERF1_VC_STATUS7 = 12, + GX_PERF1_VC_MISSREP_FULL = 13, + GX_PERF1_VC_STREAMBUF_LOW = 14, + GX_PERF1_VC_ALL_STALLS = 15, + GX_PERF1_VERTICES = 16, - GX_PERF1_FIFO_REQ = 17, - GX_PERF1_CALL_REQ = 18, - GX_PERF1_VC_MISS_REQ = 19, - GX_PERF1_CP_ALL_REQ = 20, + GX_PERF1_FIFO_REQ = 17, + GX_PERF1_CALL_REQ = 18, + GX_PERF1_VC_MISS_REQ = 19, + GX_PERF1_CP_ALL_REQ = 20, - GX_PERF1_CLOCKS = 21, - GX_PERF1_NONE = 22, + GX_PERF1_CLOCKS = 21, + GX_PERF1_NONE = 22, } GXPerf1; // Vertex cache perf types. typedef enum _GXVCachePerf { - GX_VC_POS = 0, - GX_VC_NRM = 1, - GX_VC_CLR0 = 2, - GX_VC_CLR1 = 3, - GX_VC_TEX0 = 4, - GX_VC_TEX1 = 5, - GX_VC_TEX2 = 6, - GX_VC_TEX3 = 7, - GX_VC_TEX4 = 8, - GX_VC_TEX5 = 9, - GX_VC_TEX6 = 10, - GX_VC_TEX7 = 11, + GX_VC_POS = 0, + GX_VC_NRM = 1, + GX_VC_CLR0 = 2, + GX_VC_CLR1 = 3, + GX_VC_TEX0 = 4, + GX_VC_TEX1 = 5, + GX_VC_TEX2 = 6, + GX_VC_TEX3 = 7, + GX_VC_TEX4 = 8, + GX_VC_TEX5 = 9, + GX_VC_TEX6 = 10, + GX_VC_TEX7 = 11, - GX_VC_ALL = 15 + GX_VC_ALL = 15 } GXVCachePerf; +// XF locators for Color 0 control. +typedef enum _GXXFClr0Ctrl { + // Matrix source [31-31] + GX_XF_CLR0CTRL_MTXSRC_ST = 31, + GX_XF_CLR0CTRL_MTXSRC_END = 31, + + // Light [30-30] + GX_XF_CLR0CTRL_LIGHT_ST = 30, + GX_XF_CLR0CTRL_LIGHT_END = 30, + + // Light mask (hi) [26-29] + GX_XF_CLR0CTRL_LMASKHI_ST = 26, + GX_XF_CLR0CTRL_LMASKHI_END = 29, + + // Ambient source [25-25] + GX_XF_CLR0CTRL_AMBSRC_ST = 25, + GX_XF_CLR0CTRL_AMBSRC_END = 25, + + // Diffuse attenuation [23-24] + GX_XF_CLR0CTRL_DIFATTN_ST = 23, + GX_XF_CLR0CTRL_DIFATTN_END = 24, + + // Enable attentuation [22-22] + GX_XF_CLR0CTRL_ATTNENABLE_ST = 22, + GX_XF_CLR0CTRL_ATTNENABLE_END = 22, + + // Select attentuation [21-21] + GX_XF_CLR0CTRL_ATTNSEL_ST = 21, + GX_XF_CLR0CTRL_ATTNSEL_END = 21, + + // Light mask (lo) [17-20] + GX_XF_CLR0CTRL_LMASKLO_ST = 17, + GX_XF_CLR0CTRL_LMASKLO_END = 20, +} GXXFClr0Ctrl; + #endif /* GXENUM_H */ \ No newline at end of file diff --git a/include/dolphin/gx/GXFrameBuf.h b/include/dolphin/gx/GXFrameBuf.h index 781a397f34..10dff9c0ca 100644 --- a/include/dolphin/gx/GXFrameBuf.h +++ b/include/dolphin/gx/GXFrameBuf.h @@ -11,10 +11,10 @@ extern "C" { void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height); void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height); void GXSetDispCopyDst(u16 arg0, u16 arg1); -void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap); +void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt format, GXBool useMIPmap); void GXSetDispCopyFrame2Field(GXCopyMode mode); void GXSetCopyClamp(GXFBClamp clamp); -u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale); +u16 GXGetNumXfbLines(const u16 efbHeight, f32 yScale); f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height); u32 GXSetDispCopyYScale(f32 y_scale); void GXSetCopyClear(GXColor color, u32 clear_z); diff --git a/include/dolphin/gx/GXInit.h b/include/dolphin/gx/GXInit.h index aea03d9619..af92a947c3 100644 --- a/include/dolphin/gx/GXInit.h +++ b/include/dolphin/gx/GXInit.h @@ -1,97 +1,124 @@ #ifndef GXINIT_H #define GXINIT_H -#include "dolphin/gx/GXEnum.h" -#include "dolphin/gx/GXStruct.h" -#include "dolphin/mtx/mtx.h" - -typedef GXTexRegion (*GXTexRegionCallback)(GXTexObj* obj); -typedef GXTlutRegion* (*GXTlutRegionCallback)(u32 name); +#include "dolphin/gx/GXTexture.h" +#include "dolphin/mtx.h" typedef struct _GXData { - /* 0x000 */ u16 field_0x0; - /* 0x002 */ u16 bpSentNot; - /* 0x004 */ u16 vNum; - /* 0x006 */ u16 vLim; - /* 0x008 */ u32 cpEnable; - /* 0x00C */ u32 cpStatus; - /* 0x010 */ u32 cpClr; - /* 0x014 */ u32 vcdLoReg; - /* 0x018 */ GXAttrType vcdHiReg; - /* 0x01C */ GXCompCnt vatA[8]; - /* 0x03C */ GXCompCnt vatB[8]; - /* 0x05C */ u32 vatC[8]; - /* 0x07C */ u32 lpSize; - /* 0x080 */ u32 matIdxA; - /* 0x084 */ u32 matIdxB; - /* 0x088 */ u8 field_0x88[0xA8 - 0x88]; - /* 0x0A8 */ GXColor ambColors[2]; - /* 0x0B0 */ GXColor matColors[2]; - /* 0x0B8 */ u32 suTs0[8]; // GX_MAX_TEXCOORD - /* 0x0D8 */ u32 suTs1[8]; // GX_MAX_TEXCOORD - /* 0x0F8 */ u32 suScis0; - /* 0x0FC */ u32 suScis1; - /* 0x100 */ u32 tref[GX_MAX_TEVSTAGE / 2]; - /* 0x120 */ u32 iref; - /* 0x124 */ u32 bpMask; - /* 0x128 */ u32 field_0x128; - /* 0x12C */ u32 field_0x12c; - /* 0x130 */ u32 tevc[GX_MAX_TEVSTAGE]; - /* 0x170 */ u32 teva[GX_MAX_TEVSTAGE]; - /* 0x1B0 */ u32 tevKsel[GX_MAX_TEVSTAGE / 2]; - /* 0x1D0 */ u32 cmode0; - /* 0x1D4 */ u32 cmode1; - /* 0x1D8 */ u32 zmode; - /* 0x1DC */ u32 peCtrl; - /* 0x1E0 */ u32 field_0x1e0; - /* 0x1E4 */ u32 field_0x1e4; - /* 0x1E8 */ u32 field_0x1e8; - /* 0x1EC */ u32 field_0x1ec; - /* 0x1F0 */ u32 field_0x1f0; - /* 0x1F4 */ u32 field_0x1f4; - /* 0x1F8 */ u32 field_0x1f8; - /* 0x1FC */ u32 cpTex; - /* 0x200 */ u8 field_0x200; - /* 0x204 */ u32 genMode; - /* 0x208 */ GXTexRegion TexRegions0[8]; - /* 0x288 */ GXTexRegion TexRegions1[8]; - /* 0x308 */ GXTexRegion TexRegions2[8]; - /* 0x388 */ GXTlutRegion TlutRegions[16]; - /* 0x488 */ GXTlutRegion field_0x488[4]; - /* 0x4C8 */ GXTexRegionCallback texRegionCB; - /* 0x4CC */ GXTlutRegionCallback tlutRegionCB; - /* 0x4D0 */ GXAttrType nrmDataType; - /* 0x4D4 */ GXBool hasNrm; - /* 0x4D5 */ GXBool hasBiNrm; - /* 0x4D8 */ GXProjectionType projectionType; - /* 0x4DC */ f32 field_0x4dc; - /* 0x4E0 */ f32 field_0x4e0; - /* 0x4E4 */ f32 field_0x4e4; - /* 0x4E8 */ f32 field_0x4e8; - /* 0x4EC */ f32 field_0x4ec; - /* 0x4F0 */ f32 field_0x4f0; - /* 0x4F4 */ f32 vpLeft; - /* 0x4F8 */ f32 vpTop; - /* 0x4FC */ f32 vpWd; - /* 0x500 */ f32 vpHt; - /* 0x504 */ f32 vpNearz; - /* 0x508 */ f32 vpFarz; - /* 0x50C */ f32 zOffset; - /* 0x510 */ f32 zScale; - /* 0x514 */ u32 field_0x514[8]; - /* 0x534 */ u32 field_0x534[8]; - /* 0x558 */ u32 texmapId[9]; - /* 0x578 */ u8 field_0x578[0x594 - 0x578]; - /* 0x594 */ u32 tcsManEnab; - /* 0x598 */ u32 tevTcEnab; - /* 0x59C */ u32 perf0; - /* 0x5A0 */ u32 perf1; - /* 0x5A4 */ u32 perfSel; - /* 0x5A8 */ u8 inDispList; - /* 0x5A9 */ u8 dlSaveContext; - /* 0x5AA */ u8 abtWaitPECopy; - /* 0x5AB */ u8 dirtyVAT; - /* 0x5AC */ u32 dirtyFlags; + // Bypass and vertex info + u16 vNumNot; // _000, !(# flush verts to send) + u16 bpSentNot; // _002, !(bypass reg sent last?) + u16 vNum; // _004, # flush verts to send + u16 vLim; // _006, max vert size + + // Command process (CP) regs + u32 cpEnable; // _008 + u32 cpStatus; // _00C + u32 cpClr; // _010 + u32 vcdLo; // _014 + u32 vcdHi; // _018 + u32 vatA[8]; // _01C + u32 vatB[8]; // _03C + u32 vatC[8]; // _05C + u32 lpSize; // _07C + u32 matIdxA; // _080 + u32 matIdxB; // _084 + + // Index loading base/stride regs (pos, nrm, tex, light) + u32 indexBase[4]; // _088 + u32 indexStride[4]; // _098 + + // Transform and lighting regs + u32 ambColor[2]; // _0A8 + u32 matColor[2]; // _0B0 + + // Setup regs + u32 suTs0[8]; // _0B8 + u32 suTs1[8]; // _0D8 + u32 suScis0; // _0F8 + u32 suScis1; // _0FC + + // Raster regs + u32 tref[8]; // _100 + u32 iref; // _120 + + // Bump/Indirect texture regs + u32 bpMask; // _124 + u32 IndTexScale0; // _128 + u32 IndTexScale1; // _12C + + // Tev regs + u32 tevc[16]; // _130 + u32 teva[16]; // _170 + u32 tevKsel[8]; // _1B0 + + // Performance regs + u32 cmode0; // _1D0 + u32 cmode1; // _1D4 + u32 zmode; // _1D8 + u32 peCtrl; // _1DC + + // Display copy regs + u32 cpDispSrc; // _1E0 + u32 cpDispSize; // _1E4 + u32 cpDispStride; // _1E8 + u32 cpDisp; // _1EC + + // Texture copy regs + u32 cpTexSrc; // _1F0 + u32 cpTexSize; // _1F4 + u32 cpTexStride; // _1F8 + u32 cpTex; // _1FC + GXBool cpTexZ; // _200 + + // General raster mode + u32 genMode; // _204 + + // Texture regions + GXTexRegion TexRegions0[GX_MAX_TEXMAP]; // _208 + GXTexRegion TexRegions1[GX_MAX_TEXMAP]; // _288 + GXTexRegion TexRegions2[GX_MAX_TEXMAP]; // _308 + + // Texture lookup table regions + GXTlutRegion TlutRegions[GX_MAX_TLUT_ALL]; // _388 + GXTexRegionCallback texRegionCallback; // _4C8 + GXTlutRegionCallback tlutRegionCallback; // _4CC + + // Command processor vars + GXAttrType nrmType; // _4D0 + GXBool hasNrms; // _4D4 + GXBool hasBiNrms; // _4D5 + u32 projType; // _4D8 + f32 projMtx[6]; // _4DC + + // Viewport parms + f32 vpLeft; // _4F4 + f32 vpTop; // _4F8 + f32 vpWd; // _4FC + f32 vpHt; // _500 + f32 vpNearz; // _504 + f32 vpFarz; // _508 + f32 zOffset; // _50C + f32 zScale; // _510 + + // Texture regs + u32 tImage0[8]; // _514 + u32 tMode0[8]; // _534 + u32 texmapId[16]; // _554 + u32 tcsManEnab; // _594 + u32 tevTcEnab; // _598 + + // Performance metrics + GXPerf0 perf0; // _59C + GXPerf1 perf1; // _5A0 + u32 perfSel; // _5A4 + + // Flags + GXBool inDispList; // _5A8 + GXBool dlSaveContext; // _5A9 + GXBool abtWaitPECopy; // _5AA + u8 dirtyVAT; // _5AB + u32 dirtyState; // _5AC } GXData; // Size: 0x5B0 STATIC_ASSERT(sizeof(GXData) == 0x5B0); @@ -121,7 +148,7 @@ extern vu16* __memReg; inline void GXSetWasteFlags() { GXData* data = __GXData; - data->dirtyFlags |= GX_DIRTY_SU_TEX | GX_DIRTY_BP_MASK; + data->dirtyState |= GX_DIRTY_SU_TEX | GX_DIRTY_BP_MASK; data->bpSentNot = 0; } @@ -147,7 +174,7 @@ static inline u32 GXReadMEMReg(u32 addrLo, u32 addrHi) return ((hiStart << 16) | lo); } -GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID mapID); +GXTexRegion* __GXDefaultTexRegionCallback(const GXTexObj* obj, GXTexMapID mapID); GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut); BOOL __GXShutdown(BOOL); void __GXInitRevisionBits(void); diff --git a/include/dolphin/gx/GXMisc.h b/include/dolphin/gx/GXMisc.h index 12e5a8a637..21b3aa0967 100644 --- a/include/dolphin/gx/GXMisc.h +++ b/include/dolphin/gx/GXMisc.h @@ -7,7 +7,7 @@ extern "C" { #endif -void GXSetMisc(u32 id, u32 value); +void GXSetMisc(GXMiscToken token, u32 val); void GXFlush(void); void __GXAbort(void); void GXAbortFrame(void); diff --git a/include/dolphin/gx/GXStruct.h b/include/dolphin/gx/GXStruct.h index 63608c2faa..9672145963 100644 --- a/include/dolphin/gx/GXStruct.h +++ b/include/dolphin/gx/GXStruct.h @@ -2,6 +2,8 @@ #define GXSTRUCT_H #include "global.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/vi.h" typedef struct _GXColor { /* 0x0 */ u8 r; @@ -18,7 +20,7 @@ typedef struct _GXColorS10 { } GXColorS10; typedef struct _GXRenderModeObj { - /* 0x00 */ s32 vi_tv_mode; + /* 0x00 */ VITVMode vi_tv_mode; /* 0x04 */ u16 fb_width; /* 0x06 */ u16 efb_height; /* 0x08 */ u16 xfb_height; @@ -26,7 +28,7 @@ typedef struct _GXRenderModeObj { /* 0x0C */ u16 vi_y_origin; /* 0x0E */ u16 vi_width; /* 0x10 */ u16 vi_height; - /* 0x14 */ s32 xfb_mode; + /* 0x14 */ VIXFBMode xfb_mode; /* 0x18 */ u8 field_rendering; /* 0x19 */ u8 antialiasing; /* 0x1A */ u8 sample_pattern[12][2]; @@ -51,7 +53,7 @@ typedef struct _GXTexObj { typedef struct _GXTlutObj { /* 0x0 */ u32 format; /* 0x4 */ u32 address; - /* 0x8 */ u32 numEntries; + /* 0x8 */ u16 numEntries; } GXTlutObj; typedef struct _GXLightObj { @@ -91,11 +93,16 @@ typedef struct _GXFifoObj { } GXFifoObj; // Size: 0x80 typedef struct _GXTexRegion { - /* 0x00 */ u8 dummy[0x10]; + u32 unk0; // _00 + u32 unk4; // _04 + u32 unk8; // _08 + u8 unkC; // _0C + u8 unkD; // _0D } GXTexRegion; // Size: 0x10 typedef struct _GXTlutRegion { - /* 0x00 */ u8 dummy[0x10]; + /* 0x00 */ u32 unk0; + /* 0x04 */ GXTlutObj tlutObj; } GXTlutRegion; // Size: 0x10 #endif /* GXSTRUCT_H */ diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index da2009d147..f1eaec7e96 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -1,14 +1,18 @@ #ifndef GXTEXTURE_H #define GXTEXTURE_H -#include "dolphin/gx/GXInit.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" #ifdef __cplusplus extern "C" { #endif +typedef GXTexRegion* (*GXTexRegionCallback)(const GXTexObj* t_obj, GXTexMapID id); +typedef GXTlutRegion* (*GXTlutRegionCallback)(u32 idx); + u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod); -void __GetImageTileCount(u32 arg0, u16 arg1, u16 arg2, s32* arg3, s32* arg4, s32* arg5); +void __GetImageTileCount(GXTexFmt format, u16 width, u16 height, u32* a, u32* b, u32* c); void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt, GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap); void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format, @@ -18,10 +22,10 @@ void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter min_filter, GXTexFilter max_filt GXAnisotropy aniso); u16 GXGetTexObjWidth(GXTexObj* obj); u16 GXGetTexObjHeight(GXTexObj* obj); -GXTexFmt GXGetTexObjFmt(GXTexObj* obj); +GXTexFmt GXGetTexObjFmt(const GXTexObj* obj); GXTexWrapMode GXGetTexObjWrapS(GXTexObj* obj); GXTexWrapMode GXGetTexObjWrapT(GXTexObj* obj); -GXBool GXGetTexObjMipMap(GXTexObj* obj); +GXBool GXGetTexObjMipMap(const GXTexObj* obj); u32 GXGetTexObjTlut(GXTexObj* obj); void GXLoadTexObj(GXTexObj* obj, GXTexMapID id); void GXInitTlutObj(GXTlutObj* obj, void* lut, GXTlutFmt fmt, u16 entry_num); diff --git a/include/dolphin/gx/GXTransform.h b/include/dolphin/gx/GXTransform.h index 3eaad4694f..d97a9468ee 100644 --- a/include/dolphin/gx/GXTransform.h +++ b/include/dolphin/gx/GXTransform.h @@ -2,7 +2,7 @@ #define GXTRANSFORM_H #include "dolphin/gx/GXEnum.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #ifdef __cplusplus extern "C" { @@ -10,18 +10,18 @@ extern "C" { void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, f32* viewpoint, f32* screen_x, f32* screen_y, f32* screen_z); -void GXSetProjection(Mtx44 mtx, GXProjectionType type); +void GXSetProjection(const Mtx44 proj, GXProjectionType type); void GXSetProjectionv(f32* p); void GXGetProjectionv(f32* p); void GXLoadPosMtxImm(Mtx mtx, u32 id); void GXLoadNrmMtxImm(Mtx mtx, u32 id); void GXSetCurrentMtx(u32 id); -void GXLoadTexMtxImm(Mtx mtx, u32 id, GXTexMtxType type); +void GXLoadTexMtxImm(const Mtx mtx, u32 id, GXTexMtxType type); void GXSetViewport(f32 x_orig, f32 y_orig, f32 width, f32 height, f32 near_z, f32 far_z); void GXGetViewportv(f32* p); void GXSetScissor(u32 left, u32 top, u32 width, u32 height); void GXGetScissor(u32* left, u32* top, u32* width, u32* height); -void GXSetScissorBoxOffset(u32 x_offset, u32 y_offset); +void GXSetScissorBoxOffset(s32 x_offset, s32 y_offset); void GXSetClipMode(GXClipMode mode); #ifdef __cplusplus diff --git a/include/dolphin/mtx/mtx.h b/include/dolphin/mtx.h similarity index 68% rename from include/dolphin/mtx/mtx.h rename to include/dolphin/mtx.h index ceb50e927a..fd32d818f2 100644 --- a/include/dolphin/mtx/mtx.h +++ b/include/dolphin/mtx.h @@ -3,12 +3,16 @@ #include "dolphin/mtx/mtx44.h" #include "dolphin/mtx/quat.h" -#include "dolphin/types.h" +#include "dolphin/mtx/vec.h" #ifdef __cplusplus extern "C" { #endif +// ====== MATRIX ====== // + +#define MTXDegToRad(a) ((a)*0.01745329252f) + typedef f32 Mtx[3][4]; typedef f32 Mtx33[3][3]; typedef f32 Mtx23[2][3]; @@ -20,15 +24,14 @@ void PSMTXIdentity(Mtx m); void PSMTXCopy(const Mtx src, Mtx dst); void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab); u32 PSMTXInverse(const Mtx src, Mtx inv); -void PSMTXRotRad(Mtx m, u8 axis, f32 rad); -void PSMTXRotTrig(Mtx m, u8 axis, f32 sin, f32 cos); -f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4); +void PSMTXRotRad(Mtx m, char axis, f32 rad); +void PSMTXRotTrig(Mtx m, char axis, f32 sin, f32 cos); void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad); void PSMTXTrans(Mtx m, f32 x, f32 y, f32 z); void PSMTXTransApply(const Mtx src, Mtx dst, f32 x, f32 y, f32 z); void PSMTXScale(Mtx m, f32 x, f32 y, f32 z); void PSMTXScaleApply(const Mtx src, Mtx dst, f32 x, f32 y, f32 z); -void PSMTXQuat(Mtx m, const Quaternion* q); +void PSMTXQuat(Mtx m, const PSQuaternion* q); void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target); void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s, @@ -83,6 +86,32 @@ inline void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { #define MTXQuat PSMTXQuat #endif +// ====== MATRIX VECTOR ====== // + +void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst); +void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst); +void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); +void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); + +/* When compiling in debug mode, use C implementations */ +#ifdef DEBUG +// TODO: Add debug rom C implementations +/* #define MTXMultVec C_MTXMultVec +#define MTXMultVecSR C_MTXMultVecSR +#define MTXMultVecArray C_MTXMultVecArray +#define MTXMultVecArraySR C_MTXMultVecArraySR */ + +#define MTXMultVec PSMTXMultVec +#define MTXMultVecSR PSMTXMultVecSR +#define MTXMultVecArray PSMTXMultVecArray +#define MTXMultVecArraySR PSMTXMultVecArraySR +#else +#define MTXMultVec PSMTXMultVec +#define MTXMultVecSR PSMTXMultVecSR +#define MTXMultVecArray PSMTXMultVecArray +#define MTXMultVecArraySR PSMTXMultVecArraySR +#endif + #ifdef __cplusplus }; #endif diff --git a/include/dolphin/mtx/mtxvec.h b/include/dolphin/mtx/mtxvec.h deleted file mode 100644 index 0a2a9cfe3f..0000000000 --- a/include/dolphin/mtx/mtxvec.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef MTXVEC_H -#define MTXVEC_H - -#include "dolphin/mtx/mtx.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); -void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); - -/* When compiling in debug mode, use C implementations */ -#ifdef DEBUG -// TODO: Add debug rom C implementations -/* #define MTXMultVec C_MTXMultVec -#define MTXMultVecSR C_MTXMultVecSR -#define MTXMultVecArray C_MTXMultVecArray -#define MTXMultVecArraySR C_MTXMultVecArraySR */ - -#define MTXMultVec PSMTXMultVec -#define MTXMultVecSR PSMTXMultVecSR -#define MTXMultVecArray PSMTXMultVecArray -#define MTXMultVecArraySR PSMTXMultVecArraySR -#else -#define MTXMultVec PSMTXMultVec -#define MTXMultVecSR PSMTXMultVecSR -#define MTXMultVecArray PSMTXMultVecArray -#define MTXMultVecArraySR PSMTXMultVecArraySR -#endif - -#ifdef __cplusplus -}; -#endif - -#endif /* MTXVEC_H */ diff --git a/include/dolphin/mtx/quat.h b/include/dolphin/mtx/quat.h index 96ddf8bd6b..f5ab841f5e 100644 --- a/include/dolphin/mtx/quat.h +++ b/include/dolphin/mtx/quat.h @@ -11,6 +11,8 @@ typedef struct Quaternion { f32 x, y, z, w; } Quaternion; +typedef f32 PSQuaternion[4]; + void PSQUATMultiply(const Quaternion* a, const Quaternion* b, Quaternion* ab); void C_QUATRotAxisRad(Quaternion* q, const Vec* axis, f32 rad); void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t); diff --git a/include/dolphin/odenotstub/odenotstub.h b/include/dolphin/odenotstub/odenotstub.h deleted file mode 100644 index f68e4682fb..0000000000 --- a/include/dolphin/odenotstub/odenotstub.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef ODENOTSTUB_H -#define ODENOTSTUB_H - - -#endif /* ODENOTSTUB_H */ diff --git a/include/dolphin/os/OS.h b/include/dolphin/os.h similarity index 96% rename from include/dolphin/os/OS.h rename to include/dolphin/os.h index 256ef588de..ff73f5dbc1 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os.h @@ -2,7 +2,7 @@ #define OS_H_ #include "__va_arg.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "dolphin/os/OSAlarm.h" #include "dolphin/os/OSAlloc.h" @@ -94,9 +94,13 @@ void OSVAttention(const char* fmt, va_list args); void OSReportInit(void); #ifdef DEBUG -#define OS_REPORT(...) OSReport(__VA_ARGS__); +#define OS_REPORT(...) OSReport(__VA_ARGS__) +#define OS_PANIC(msg) OSPanic(__FILE__, __LINE__, msg) +#define ASSERTMSG(exp, msg) (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg)), 0)) #else #define OS_REPORT(...) +#define OS_PANIC(...) +#define ASSERTMSG(exp, msg) ((void)0) #endif extern u8 __OSReport_disable; @@ -107,14 +111,14 @@ extern u8 __OSReport_enable; extern BOOL __OSIsGcam; -extern u32 BOOT_REGION_START : 0x812FDFF0; +extern u32 BOOT_REGION_START : 0x8044babc; extern u32 BOOT_REGION_END : 0x812FDFEC; void OSReportInit__Fv(void); // needed for inline asm u8* OSGetStackPointer(void); void __OSFPRInit(void); -static void InquiryCallback(u32 param_0, DVDCommandBlock* param_1); +static void InquiryCallback(s32 param_0, DVDCommandBlock* param_1); void OSInit(void); static void OSExceptionInit(void); void __OSDBIntegrator(void); @@ -169,7 +173,7 @@ inline void OSf32tou8(f32* f, u8* out) { *out = __OSf32tou8(*f); } -inline void i_OSInitFastCast(void) { +static inline void OSInitFastCast(void) { // clang-format off asm { li r3, 4 @@ -304,6 +308,7 @@ struct GLOBAL_MEMORY { #define OSUncachedToCached(ucaddr) ((void*)((u8*)(ucaddr) - (OS_BASE_UNCACHED - OS_BASE_CACHED))) extern OSTime __OSStartTime; +extern BOOL __OSInIPL; #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSInterrupt.h b/include/dolphin/os/OSInterrupt.h index 5726d44c6b..34b68a1eec 100644 --- a/include/dolphin/os/OSInterrupt.h +++ b/include/dolphin/os/OSInterrupt.h @@ -53,15 +53,18 @@ typedef enum { #define OS_INTERRUPTMASK_MEM_2 OS_INTERRUPTMASK(OS_INTR_MEM_2) #define OS_INTERRUPTMASK_MEM_3 OS_INTERRUPTMASK(OS_INTR_MEM_3) #define OS_INTERRUPTMASK_MEM_ADDRESS OS_INTERRUPTMASK(OS_INTR_MEM_ADDRESS) +#define OS_INTERRUPTMASK_MEM_RESET \ + (OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | \ + OS_INTERRUPTMASK_MEM_3) #define OS_INTERRUPTMASK_MEM \ - (OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | \ - OS_INTERRUPTMASK_MEM_3 | OS_INTERRUPTMASK_MEM_ADDRESS) + (OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | \ + OS_INTERRUPTMASK_MEM_3 | OS_INTERRUPTMASK_MEM_ADDRESS) #define OS_INTERRUPTMASK_DSP_AI OS_INTERRUPTMASK(OS_INTR_DSP_AI) #define OS_INTERRUPTMASK_DSP_ARAM OS_INTERRUPTMASK(OS_INTR_DSP_ARAM) #define OS_INTERRUPTMASK_DSP_DSP OS_INTERRUPTMASK(OS_INTR_DSP_DSP) #define OS_INTERRUPTMASK_DSP \ - (OS_INTERRUPTMASK_DSP_AI | OS_INTERRUPTMASK_DSP_ARAM | OS_INTERRUPTMASK_DSP_DSP) + (OS_INTERRUPTMASK_DSP_AI | OS_INTERRUPTMASK_DSP_ARAM | OS_INTERRUPTMASK_DSP_DSP) #define OS_INTERRUPTMASK_AI_AI OS_INTERRUPTMASK(OS_INTR_AI_AI) #define OS_INTERRUPTMASK_AI (OS_INTERRUPTMASK_AI_AI) @@ -70,21 +73,21 @@ typedef enum { #define OS_INTERRUPTMASK_EXI_0_TC OS_INTERRUPTMASK(OS_INTR_EXI_0_TC) #define OS_INTERRUPTMASK_EXI_0_EXT OS_INTERRUPTMASK(OS_INTR_EXI_0_EXT) #define OS_INTERRUPTMASK_EXI_0 \ - (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT) + (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT) #define OS_INTERRUPTMASK_EXI_1_EXI OS_INTERRUPTMASK(OS_INTR_EXI_1_EXI) #define OS_INTERRUPTMASK_EXI_1_TC OS_INTERRUPTMASK(OS_INTR_EXI_1_TC) #define OS_INTERRUPTMASK_EXI_1_EXT OS_INTERRUPTMASK(OS_INTR_EXI_1_EXT) #define OS_INTERRUPTMASK_EXI_1 \ - (OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT) + (OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT) #define OS_INTERRUPTMASK_EXI_2_EXI OS_INTERRUPTMASK(OS_INTR_EXI_2_EXI) #define OS_INTERRUPTMASK_EXI_2_TC OS_INTERRUPTMASK(OS_INTR_EXI_2_TC) #define OS_INTERRUPTMASK_EXI_2 (OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC) #define OS_INTERRUPTMASK_EXI \ - (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT | \ - OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT | \ - OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC) + (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT | \ + OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT | \ + OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC) #define OS_INTERRUPTMASK_PI_PE_TOKEN OS_INTERRUPTMASK(OS_INTR_PI_PE_TOKEN) #define OS_INTERRUPTMASK_PI_PE_FINISH OS_INTERRUPTMASK(OS_INTR_PI_PE_FINISH) @@ -99,27 +102,27 @@ typedef enum { #define OS_INTERRUPTMASK_PI_DEBUG OS_INTERRUPTMASK(OS_INTR_PI_DEBUG) #define OS_INTERRUPTMASK_PI_HSP OS_INTERRUPTMASK(OS_INTR_PI_HSP) #define OS_INTERRUPTMASK_PI \ - (OS_INTERRUPTMASK_PI_CP | OS_INTERRUPTMASK_PI_SI | OS_INTERRUPTMASK_PI_DI | \ - OS_INTERRUPTMASK_PI_RSW | OS_INTERRUPTMASK_PI_ERROR | OS_INTERRUPTMASK_PI_VI | \ - OS_INTERRUPTMASK_PI_PE_TOKEN | OS_INTERRUPTMASK_PI_PE_FINISH | OS_INTERRUPTMASK_PI_DEBUG | \ - OS_INTERRUPTMASK_PI_HSP) + (OS_INTERRUPTMASK_PI_CP | OS_INTERRUPTMASK_PI_SI | OS_INTERRUPTMASK_PI_DI | \ + OS_INTERRUPTMASK_PI_RSW | OS_INTERRUPTMASK_PI_ERROR | OS_INTERRUPTMASK_PI_VI | \ + OS_INTERRUPTMASK_PI_PE_TOKEN | OS_INTERRUPTMASK_PI_PE_FINISH | OS_INTERRUPTMASK_PI_DEBUG | \ + OS_INTERRUPTMASK_PI_HSP) -typedef s16 OSInterrupt; +typedef s16 __OSInterrupt; typedef u32 OSInterruptMask; -typedef void (*OSInterruptHandler)(OSInterrupt interrupt, OSContext* context); +typedef void (*__OSInterruptHandler)(__OSInterrupt interrupt, OSContext* context); BOOL OSDisableInterrupts(void); void __RAS_OSDisableInterrupts_end(void); BOOL OSEnableInterrupts(void); BOOL OSRestoreInterrupts(BOOL enable); -OSInterruptHandler __OSSetInterruptHandler(OSInterrupt interrupt, OSInterruptHandler handler); -OSInterruptHandler __OSGetInterruptHandler(s16 index); +__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt interrupt, __OSInterruptHandler handler); +__OSInterruptHandler __OSGetInterruptHandler(s16 index); void __OSInterruptInit(void); static OSInterruptMask SetInterruptMask(OSInterruptMask param_0, OSInterruptMask param_1); OSInterruptMask __OSMaskInterrupts(OSInterruptMask mask); OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask); void __OSDispatchInterrupt(u8 interrupt, OSContext* context); -static void ExternalInterruptHandler(OSInterrupt interrupt, OSContext* context); +static void ExternalInterruptHandler(__OSInterrupt interrupt, OSContext* context); void __RAS_OSDisableInterrupts_begin(void); void __RAS_OSDisableInterrupts_end(void); diff --git a/include/dolphin/os/OSMemory.h b/include/dolphin/os/OSMemory.h index bf05969177..6a904c65b2 100644 --- a/include/dolphin/os/OSMemory.h +++ b/include/dolphin/os/OSMemory.h @@ -17,7 +17,7 @@ extern "C" { #define OS_PROTECT_CONTROL_WRITE 0x02 #define OS_PROTECT_CONTROL_RDWR (OS_PROTECT_CONTROL_READ | OS_PROTECT_CONTROL_WRITE) -static void MEMIntrruptHandler(OSInterrupt interrupt, struct OSContext* context); +static void MEMIntrruptHandler(__OSInterrupt interrupt, struct OSContext* context); void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control); static void Config24MB(void); static void Config48MB(void); diff --git a/include/dolphin/os/OSMessage.h b/include/dolphin/os/OSMessage.h index a6447ec9ce..25f1536168 100644 --- a/include/dolphin/os/OSMessage.h +++ b/include/dolphin/os/OSMessage.h @@ -22,6 +22,10 @@ typedef struct OSMessageQueue { #define OS_MESSAGE_NOBLOCK 0 #define OS_MESSAGE_BLOCK 1 +typedef enum { + OS_MSG_PERSISTENT = (1 << 0), +} OSMessageFlags; + void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* msgArray, s32 msgCount); BOOL OSSendMessage(OSMessageQueue* queue, OSMessage msg, s32 flags); BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage* msg, s32 flags); diff --git a/include/dolphin/os/OSReset.h b/include/dolphin/os/OSReset.h index 5ecf9b7b21..54678e53d2 100644 --- a/include/dolphin/os/OSReset.h +++ b/include/dolphin/os/OSReset.h @@ -28,7 +28,7 @@ vu32 __PIRegs[12] : 0xCC003000; #define OS_RESET_PRIO_GX 127 #define OS_RESET_PRIO_ALARM 4294967295 -typedef s32 (*OSResetFunction)(s32); +typedef BOOL (*OSResetFunction)(BOOL final); typedef struct OSResetFunctionInfo { /* 0x0 */ OSResetFunction func; diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index 888e668d5d..a0882a452d 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -68,7 +68,7 @@ struct OSThread { OSMutexQueue owned_mutexes; OSThreadLink active_threads_link; u8* stack_base; - u8* stack_end; + u32* stack_end; u8* error_code; void* data[2]; }; diff --git a/include/dolphin/os/__ppc_eabi_init.h b/include/dolphin/os/__ppc_eabi_init.h deleted file mode 100644 index 5d116bc334..0000000000 --- a/include/dolphin/os/__ppc_eabi_init.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef __PPC_EABI_INIT_H -#define __PPC_EABI_INIT_H - - -#endif /* __PPC_EABI_INIT_H */ diff --git a/include/dolphin/pad/Pad.h b/include/dolphin/pad.h similarity index 75% rename from include/dolphin/pad/Pad.h rename to include/dolphin/pad.h index 229e6457d1..fd3a8fdd5f 100644 --- a/include/dolphin/pad/Pad.h +++ b/include/dolphin/pad.h @@ -9,12 +9,10 @@ extern "C" { typedef struct OSContext OSContext; -typedef enum PADMask { - PAD_CHAN3_BIT = (1 << 28), - PAD_CHAN2_BIT = (1 << 29), - PAD_CHAN1_BIT = (1 << 30), - PAD_CHAN0_BIT = (1 << 31), -} PADMask; +#define PAD_CHAN0_BIT 0x80000000 +#define PAD_CHAN1_BIT 0x40000000 +#define PAD_CHAN2_BIT 0x20000000 +#define PAD_CHAN3_BIT 0x10000000 #define PAD_SPEC_0 0 #define PAD_SPEC_1 1 @@ -70,11 +68,6 @@ void PADClamp(PADStatus* status); u32 PADRead(PADStatus* status); void PADControlMotor(s32 channel, u32 command); BOOL PADRecalibrate(u32 mask); -static void PADOriginCallback(s32 chan, u32 error, OSContext* context); -static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context); -static void PADProbeCallback(s32 chan, u32 error, OSContext* context); -static void PADTypeAndStatusCallback(s32 chan, u32 type); -static void PADReceiveCheckCallback(s32 chan, u32 type); #ifdef __cplusplus }; diff --git a/include/dolphin/pad/Padclamp.h b/include/dolphin/pad/Padclamp.h index 5047667ecc..a614ebc2c0 100644 --- a/include/dolphin/pad/Padclamp.h +++ b/include/dolphin/pad/Padclamp.h @@ -1,6 +1,7 @@ #ifndef PADCLAMP_H #define PADCLAMP_H +#include "dolphin/pad.h" #ifdef __cplusplus extern "C" { diff --git a/include/dolphin/si/SIBios.h b/include/dolphin/si/SIBios.h index af736a1431..1ea637b7fa 100644 --- a/include/dolphin/si/SIBios.h +++ b/include/dolphin/si/SIBios.h @@ -102,10 +102,10 @@ typedef union SIComm_u { BOOL SIBusy(void); BOOL SIIsChanBusy(s32 chan); -static void SIInterruptHandler(OSInterrupt interrupt, OSContext* context); +static void SIInterruptHandler(__OSInterrupt interrupt, OSContext* context); static BOOL SIEnablePollingInterrupt(BOOL enable); -BOOL SIRegisterPollingHandler(OSInterruptHandler handler); -BOOL SIUnregisterPollingHandler(OSInterruptHandler handler); +BOOL SIRegisterPollingHandler(__OSInterruptHandler handler); +BOOL SIUnregisterPollingHandler(__OSInterruptHandler handler); void SIInit(void); u32 SIGetStatus(s32 chan); void SISetCommand(s32 chan, u32 command); diff --git a/include/dolphin/types.h b/include/dolphin/types.h index 67f3c70916..b72532c118 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -32,6 +32,8 @@ typedef int BOOL; #define READU32_BE(ptr, offset) \ (((u32)ptr[offset] << 24) | ((u32)ptr[offset + 1] << 16) | ((u32)ptr[offset + 2] << 8) | (u32)ptr[offset + 3]); +#define ALIGN_DECL(ALIGNMENT) __attribute__((aligned(ALIGNMENT))) + #include "stddef.h" #define INT32_MAX (0x7fffffff) diff --git a/include/dolphin/vi.h b/include/dolphin/vi.h new file mode 100644 index 0000000000..c30e6f3a55 --- /dev/null +++ b/include/dolphin/vi.h @@ -0,0 +1,147 @@ +#ifndef VI_H +#define VI_H + +#include "dolphin/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _GXRenderModeObj GXRenderModeObj; + +#define VI_INTERLACE (0) +#define VI_NON_INTERLACE (1) +#define VI_PROGRESSIVE (2) +#define VI_3D (3) + +// Video output formats +#define VI_NTSC (0) +#define VI_PAL (1) +#define VI_MPAL (2) +#define VI_DEBUG (3) +#define VI_DEBUG_PAL (4) +#define VI_EURGB60 (5) +#define VI_GCA (6) + +// Conversion to TVMode used in enums +#define VI_TVMODE(FMT, INT) (((FMT) << 2) + (INT)) + +// TV Modes +typedef enum { + // NTSC + VI_TVMODE_NTSC_INT = VI_TVMODE(VI_NTSC, VI_INTERLACE), // 0 + VI_TVMODE_NTSC_DS = VI_TVMODE(VI_NTSC, VI_NON_INTERLACE), // 1 + VI_TVMODE_NTSC_PROG = VI_TVMODE(VI_NTSC, VI_PROGRESSIVE), // 2 + VI_TVMODE_NTSC_3D = VI_TVMODE(VI_NTSC, VI_3D), // 3 + + // PAL + VI_TVMODE_PAL_INT = VI_TVMODE(VI_PAL, VI_INTERLACE), // 4 + VI_TVMODE_PAL_DS = VI_TVMODE(VI_PAL, VI_NON_INTERLACE), // 5 + + // MPAL + VI_TVMODE_MPAL_INT = VI_TVMODE(VI_MPAL, VI_INTERLACE), // 8 + VI_TVMODE_MPAL_DS = VI_TVMODE(VI_MPAL, VI_NON_INTERLACE), // 9 + + // Debug + VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_DEBUG, VI_INTERLACE), // 12 + + // Debug PAL + VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE), // 16 + VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE), // 17 + + // EU RGB60 + VI_TVMODE_EURGB60_INT = VI_TVMODE(VI_EURGB60, VI_INTERLACE), // 20 + VI_TVMODE_EURGB60_DS = VI_TVMODE(VI_EURGB60, VI_NON_INTERLACE), // 21 + + // GCA + VI_TVMODE_GCA_INT = VI_TVMODE(VI_GCA, VI_INTERLACE), // 24 + VI_TVMODE_GCA_DS = VI_TVMODE(VI_GCA, VI_NON_INTERLACE), // 25 + VI_TVMODE_GCA_PROG = VI_TVMODE(VI_GCA, VI_PROGRESSIVE), // 26 +} VITVMode; + +typedef enum { VI_XFBMODE_SF = 0, VI_XFBMODE_DF } VIXFBMode; + +typedef void (*VIRetraceCallback)(u32); +typedef void (*VIPositionCallback)(s16 x, s16 y); + +typedef struct VITimingInfo { + u8 equ; // _00 + u16 acv; // _02 + u16 prbOdd; // _04 + u16 prbEven; // _06 + u16 psbOdd; // _08 + u16 psbEven; // _0A + u8 bs1; // _0C + u8 bs2; // _0D + u8 bs3; // _0E + u8 bs4; // _0F + u16 be1; // _10 + u16 be2; // _12 + u16 be3; // _14 + u16 be4; // _16 + u16 numHalfLines; // _18 + u16 hlw; // _1A + u8 hsy; // _1C + u8 hcs; // _1D + u8 hce; // _1E + u8 hbe640; // _1F + u16 hbs640; // _20 + u8 hbeCCIR656; // _24 + u16 hbsCCIR656; // _26 +} VITimingInfo; + +typedef struct VIPositionInfo { + u16 dispPosX; // _00 + u16 dispPosY; // _02 + u16 dispSizeX; // _04 + u16 dispSizeY; // _06 + u16 adjDispPosX; // _08 + u16 adjDispPosY; // _0A + u16 adjDispSizeY; // _0C + u16 adjPanPosY; // _0E + u16 adjPanSizeY; // _10 + u16 fbSizeX; // _12 + u16 fbSizeY; // _14 + u16 panPosX; // _16 + u16 panPosY; // _18 + u16 panSizeX; // _1A + u16 panSizeY; // _1C + VIXFBMode xfbMode; // _20 + u32 nonInter; // _24 + u32 tv; // _28 + u8 wordPerLine; // _2C + u8 std; // _2D + u8 wpl; // _2E + u32 bufAddr; // _30 + u32 tfbb; // _34 + u32 bfbb; // _38 + u8 xof; // _3C + BOOL isBlack; // _40 + BOOL is3D; // _44 + u32 rbufAddr; // _48 + u32 rtfbb; // _4C + u32 rbfbb; // _50 + VITimingInfo* timing; // _54 +} VIPositionInfo; + +void VIWaitForRetrace(void); +void VISetNextFrameBuffer(void*); +VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback); +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback); +void VIInit(); +void VIConfigure(const GXRenderModeObj*); +void VIFlush(); +void* VIGetNextFrameBuffer(); +void* VIGetCurrentFrameBuffer(); +void VISetBlack(BOOL); +u32 VIGetRetraceCount(); +u32 VIGetDTVStatus(); +u32 VIGetTvFormat(void); + +vu16 __VIRegs[59] : 0xCC002000; + +#ifdef __cplusplus +}; +#endif + +#endif /* VI_H */ diff --git a/include/dolphin/vi/vi.h b/include/dolphin/vi/vi.h deleted file mode 100644 index f233b30249..0000000000 --- a/include/dolphin/vi/vi.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef VI_H -#define VI_H - -#include "dolphin/types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _GXRenderModeObj GXRenderModeObj; - -#define VI_TVMODE(format, interlace) (((format) << 2) + (interlace)) - -#define VI_INTERLACE 0 -#define VI_NON_INTERLACE 1 -#define VI_PROGRESSIVE 2 - -#define VI_NTSC 0 -#define VI_PAL 1 -#define VI_MPAL 2 -#define VI_DEBUG 3 -#define VI_DEBUG_PAL 4 -#define VI_EURGB60 5 - -typedef enum { - VI_TVMODE_NTSC_INT = VI_TVMODE(VI_NTSC, VI_INTERLACE), - VI_TVMODE_NTSC_DS = VI_TVMODE(VI_NTSC, VI_NON_INTERLACE), - VI_TVMODE_NTSC_PROG = VI_TVMODE(VI_NTSC, VI_PROGRESSIVE), - VI_TVMODE_PAL_INT = VI_TVMODE(VI_PAL, VI_INTERLACE), - VI_TVMODE_PAL_DS = VI_TVMODE(VI_PAL, VI_NON_INTERLACE), - VI_TVMODE_EURGB60_INT = VI_TVMODE(VI_EURGB60, VI_INTERLACE), - VI_TVMODE_EURGB60_DS = VI_TVMODE(VI_EURGB60, VI_NON_INTERLACE), - VI_TVMODE_MPAL_INT = VI_TVMODE(VI_MPAL, VI_INTERLACE), - VI_TVMODE_MPAL_DS = VI_TVMODE(VI_MPAL, VI_NON_INTERLACE), - VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_DEBUG, VI_INTERLACE), - VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE), - VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE) -} VITVMode; - -typedef enum { VI_XFBMODE_SF = 0, VI_XFBMODE_DF } VIXFBMode; - -typedef void (*VIRetraceCallback)(u32); - -void VIWaitForRetrace(void); -void VISetNextFrameBuffer(void*); -VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback); -VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback); -void VIInit(); -void VIConfigure(GXRenderModeObj*); -void VIFlush(); -void* VIGetNextFrameBuffer(); -void* VIGetCurrentFrameBuffer(); -void VISetBlack(BOOL); -u32 VIGetRetraceCount(); -u32 VIGetDTVStatus(); - -vu16 __VIRegs[59] : 0xCC002000; - -#ifdef __cplusplus -}; -#endif - -#endif /* VI_H */ diff --git a/include/f_op/f_op_view.h b/include/f_op/f_op_view.h index c3866db4d5..ef51df76b2 100644 --- a/include/f_op/f_op_view.h +++ b/include/f_op/f_op_view.h @@ -2,7 +2,7 @@ #define F_F_OP_VIEW_H_ #include "SSystem/SComponent/c_xyz.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "f_pc/f_pc_leaf.h" struct view_process_profile_definition { diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h index 29afed5afb..e4ca3a0b47 100644 --- a/include/m_Do/m_Do_graphic.h +++ b/include/m_Do/m_Do_graphic.h @@ -2,7 +2,7 @@ #define M_DO_M_DO_GRAPHIC_H #include "JSystem/JFramework/JFWDisplay.h" -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" class JUTFader; diff --git a/include/m_Do/m_Do_machine_exception.h b/include/m_Do/m_Do_machine_exception.h index 0930a8b3fe..d03af12276 100644 --- a/include/m_Do/m_Do_machine_exception.h +++ b/include/m_Do/m_Do_machine_exception.h @@ -1,7 +1,7 @@ #ifndef M_DO_M_DO_MACHINE_EXCEPTION_H #define M_DO_M_DO_MACHINE_EXCEPTION_H -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" class JUTConsole; diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 1447e2172a..d86c74cf96 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -3,7 +3,7 @@ #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" void mDoMtx_XYZrotS(Mtx, s16, s16, s16); @@ -128,7 +128,7 @@ inline void mDoMtx_scale(Mtx m, f32 x, f32 y, f32 z) { } inline void mDoMtx_quat(Mtx m, const Quaternion* q) { - MTXQuat(m, q); + MTXQuat(m, (PSQuaternion*)q); } inline void cMtx_inverse(const Mtx a, Mtx b) { diff --git a/libs/JSystem/J2DGraph/J2DAnimation.cpp b/libs/JSystem/J2DGraph/J2DAnimation.cpp index 52217ecb73..2adce0ab50 100644 --- a/libs/JSystem/J2DGraph/J2DAnimation.cpp +++ b/libs/JSystem/J2DGraph/J2DAnimation.cpp @@ -3,7 +3,7 @@ #include "JSystem/J3DGraphBase/J3DTexture.h" #include "JSystem/JUtility/JUTPalette.h" #include "JSystem/JUtility/JUTResource.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" f32 J2DGetKeyFrameInterpolationf(f32 param_0, J3DAnmKeyTableBase* param_1, f32* param_2); f32 J2DGetKeyFrameInterpolations(f32 param_0, J3DAnmKeyTableBase* param_1, s16* param_2); diff --git a/libs/JSystem/J2DGraph/J2DGrafContext.cpp b/libs/JSystem/J2DGraph/J2DGrafContext.cpp index c0aec70bd5..06c6572062 100644 --- a/libs/JSystem/J2DGraph/J2DGrafContext.cpp +++ b/libs/JSystem/J2DGraph/J2DGrafContext.cpp @@ -1,5 +1,5 @@ #include "JSystem/J2DGraph/J2DGrafContext.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 802E8B08-802E8BB4 2E3448 00AC+00 0/0 2/2 0/0 .text __ct__14J2DGrafContextFffff */ J2DGrafContext::J2DGrafContext(f32 x, f32 y, f32 width, f32 height) @@ -159,7 +159,7 @@ void J2DGrafContext::fillBox(JGeometry::TBox2 const& box) { GXColor1u32(mColorBL); GXPosition3f32(box.i.x, box.f.y, 0); GXColor1u32(mColorBR); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); } @@ -181,7 +181,7 @@ void J2DGrafContext::drawFrame(JGeometry::TBox2 const& box) { GXColor1u32(mColorBR); GXPosition3f32(box.i.x, box.i.y, 0); GXColor1u32(mColorTL); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); } @@ -197,7 +197,7 @@ void J2DGrafContext::line(JGeometry::TVec2 start, JGeometry::TVec2 end GXColor1u32(mColorTL); GXPosition3f32(end.x, end.y, 0); GXColor1u32(mColorBR); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); } diff --git a/libs/JSystem/J2DGraph/J2DMatBlock.cpp b/libs/JSystem/J2DGraph/J2DMatBlock.cpp index 6706e140e8..a7224a9ab1 100644 --- a/libs/JSystem/J2DGraph/J2DMatBlock.cpp +++ b/libs/JSystem/J2DGraph/J2DMatBlock.cpp @@ -8,7 +8,7 @@ #include "JSystem/JUtility/JUTResFont.h" #include "JSystem/JUtility/JUTTexture.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" // // Forward References: diff --git a/libs/JSystem/J2DGraph/J2DOrthoGraph.cpp b/libs/JSystem/J2DGraph/J2DOrthoGraph.cpp index e5c5f39db2..3d0c3893c9 100644 --- a/libs/JSystem/J2DGraph/J2DOrthoGraph.cpp +++ b/libs/JSystem/J2DGraph/J2DOrthoGraph.cpp @@ -1,5 +1,5 @@ #include "JSystem/J2DGraph/J2DOrthoGraph.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 802E9670-802E96D0 2E3FB0 0060+00 3/3 1/1 0/0 .text __ct__13J2DOrthoGraphFv */ J2DOrthoGraph::J2DOrthoGraph() : J2DGrafContext(0, 0, 0, 0) { diff --git a/libs/JSystem/J2DGraph/J2DPane.cpp b/libs/JSystem/J2DGraph/J2DPane.cpp index 7ad78af654..530942ae8c 100644 --- a/libs/JSystem/J2DGraph/J2DPane.cpp +++ b/libs/JSystem/J2DGraph/J2DPane.cpp @@ -4,7 +4,7 @@ #include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/JSupport/JSURandomInputStream.h" #include "JSystem/JUtility/JUTResource.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 802F5BF8-802F5CB8 2F0538 00C0+00 0/0 10/10 0/0 .text __ct__7J2DPaneFv */ J2DPane::J2DPane() : mBounds(), mGlobalBounds(), mClipRect(), mPaneTree(this) { diff --git a/libs/JSystem/J2DGraph/J2DPicture.cpp b/libs/JSystem/J2DGraph/J2DPicture.cpp index 89d4eb9efe..171775c74a 100644 --- a/libs/JSystem/J2DGraph/J2DPicture.cpp +++ b/libs/JSystem/J2DGraph/J2DPicture.cpp @@ -7,7 +7,7 @@ #include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/JUtility/JUTTexture.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" // // Forward References: @@ -759,7 +759,7 @@ void J2DPicture::drawTexCoord(f32 param_0, f32 param_1, f32 param_2, f32 param_3 GXColor1u32(black[2]); GXTexCoord2s16(param_8,param_9); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_CLR_RGBA,GX_RGBX8,0xf); GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_RGBA4,0); diff --git a/libs/JSystem/J2DGraph/J2DPictureEx.cpp b/libs/JSystem/J2DGraph/J2DPictureEx.cpp index 561a4f7dd4..56c7b52cd8 100644 --- a/libs/JSystem/J2DGraph/J2DPictureEx.cpp +++ b/libs/JSystem/J2DGraph/J2DPictureEx.cpp @@ -440,7 +440,7 @@ void J2DPictureEx::drawTexCoord(f32 param_0, f32 param_1, f32 param_2, f32 param GXPosition3f32(param_0, dVar11, 0.0f); GXColor1u32(TStack_94); GXTexCoord2s16(param_8, param_9); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 0xf); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); } diff --git a/libs/JSystem/J2DGraph/J2DScreen.cpp b/libs/JSystem/J2DGraph/J2DScreen.cpp index 2ade1918a1..20430c62f6 100644 --- a/libs/JSystem/J2DGraph/J2DScreen.cpp +++ b/libs/JSystem/J2DGraph/J2DScreen.cpp @@ -558,7 +558,7 @@ void J2DScreen::drawSelf(f32 param_0, f32 param_1, Mtx* param_2) { GXColor1u32(color); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); - i_GXEnd(); + GXEnd(); } } #else diff --git a/libs/JSystem/J2DGraph/J2DTevs.cpp b/libs/JSystem/J2DGraph/J2DTevs.cpp index c0e0043c3f..686fbb27ed 100644 --- a/libs/JSystem/J2DGraph/J2DTevs.cpp +++ b/libs/JSystem/J2DGraph/J2DTevs.cpp @@ -6,7 +6,7 @@ #include "JSystem/J2DGraph/J2DMatBlock.h" #include "JSystem/JUtility/TColor.h" #include "math.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 802E9C90-802E9CC4 2E45D0 0034+00 0/0 1/1 0/0 .text load__9J2DTexMtxFUl */ void J2DTexMtx::load(u32 mtxIdx) { diff --git a/libs/JSystem/J2DGraph/J2DWindow.cpp b/libs/JSystem/J2DGraph/J2DWindow.cpp index 5e45091aa8..8b99716073 100644 --- a/libs/JSystem/J2DGraph/J2DWindow.cpp +++ b/libs/JSystem/J2DGraph/J2DWindow.cpp @@ -462,7 +462,7 @@ void J2DWindow::drawContents(JGeometry::TBox2 const& param_0) { GXColor1u32(color4); GXPosition3f32(param_0.i.x, param_0.f.y, 0.0f); GXColor1u32(color2); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } else { GXClearVtxDesc(); @@ -491,17 +491,17 @@ void J2DWindow::drawFrameTexture(JUTTexture* param_0, f32 param_1, f32 param_2, GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(param_1, param_2, 0.0f); GXColor1u32(stack_64); - i_GXTexCoord2u16(param_7, param_8); + GXTexCoord2u16(param_7, param_8); GXPosition3f32(f31, param_2, 0.0f); GXColor1u32(stack_64); - i_GXTexCoord2u16(param_5, param_8); + GXTexCoord2u16(param_5, param_8); GXPosition3f32(f31, f30, 0.0f); GXColor1u32(stack_64); - i_GXTexCoord2u16(param_5, param_6); + GXTexCoord2u16(param_5, param_6); GXPosition3f32(param_1, f30, 0.0f); GXColor1u32(stack_64); - i_GXTexCoord2u16(param_7, param_6); - i_GXEnd(); + GXTexCoord2u16(param_7, param_6); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } @@ -552,7 +552,7 @@ void J2DWindow::drawContentsTexture(f32 param_0, f32 param_1, f32 param_2, f32 p GXPosition3f32(param_0, f28, 0.0f); GXColor1u32(stack_f0.field_0x8); GXTexCoord2f32(f27, f24); - i_GXEnd(); + GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 0xf); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } diff --git a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp index bda6bfd186..1de91a4eae 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp @@ -7,7 +7,7 @@ #include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp b/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp index 3f9d66d36d..348519ac12 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp @@ -7,7 +7,7 @@ #include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Forward References: diff --git a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index 0971d44838..82c66f0902 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -6,7 +6,7 @@ #include "JSystem/J3DGraphAnimator/J3DSkinDeform.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "string.h" // diff --git a/libs/JSystem/J3DGraphBase/J3DGD.cpp b/libs/JSystem/J3DGraphBase/J3DGD.cpp index 5ee012dd24..927cd214c1 100644 --- a/libs/JSystem/J3DGraphBase/J3DGD.cpp +++ b/libs/JSystem/J3DGraphBase/J3DGD.cpp @@ -5,7 +5,7 @@ #include "JSystem/J3DGraphBase/J3DGD.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Forward References: diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index 0d17fa227d..8d6b960332 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -5,7 +5,7 @@ #include "JSystem/J3DGraphBase/J3DMatBlock.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Types: diff --git a/libs/JSystem/J3DGraphBase/J3DShape.cpp b/libs/JSystem/J3DGraphBase/J3DShape.cpp index 820f8dc0cd..ee1981e32e 100644 --- a/libs/JSystem/J3DGraphBase/J3DShape.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShape.cpp @@ -7,7 +7,7 @@ #include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphBase/J3DVertex.h" #include "dolphin/gd/GDGeometry.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // @@ -136,9 +136,9 @@ u32 J3DShape::countBumpMtxNum() const { /* 80314E98-80314EB0 30F7D8 0018+00 1/1 0/0 0/0 .text J3DLoadCPCmd__FUcUl */ void J3DLoadCPCmd(u8 cmd, u32 param) { - GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG; - GFX_FIFO(u8) = cmd; - GFX_FIFO(u32) = param; + GXWGFifo.u8 = GX_CMD_LOAD_CP_REG; + GXWGFifo.u8 = cmd; + GXWGFifo.u32 = param; } /* 80314EB0-80314EEC 30F7F0 003C+00 1/1 0/0 0/0 .text J3DLoadArrayBasePtr__F7_GXAttrPv */ diff --git a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp index aa726738bc..894f79dd85 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -5,7 +5,7 @@ #include "JSystem/J3DGraphBase/J3DShapeDraw.h" #include "string.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/os/OSCache.h" #include "dolphin/types.h" #include "global.h" diff --git a/libs/JSystem/J3DGraphBase/J3DSys.cpp b/libs/JSystem/J3DGraphBase/J3DSys.cpp index c6a7a07767..3e7acef507 100644 --- a/libs/JSystem/J3DGraphBase/J3DSys.cpp +++ b/libs/JSystem/J3DGraphBase/J3DSys.cpp @@ -7,7 +7,7 @@ #include "dol2asm.h" #include "dolphin/gx/GXPixel.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" #include "global.h" @@ -244,7 +244,7 @@ void J3DSys::drawInit() { GXSetTevIndirect((GXTevStageID)i, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF); - i_OSInitFastCast(); + OSInitFastCast(); setTexCacheRegion(GX_TEXCACHE_32K); } diff --git a/libs/JSystem/J3DGraphBase/J3DTexture.cpp b/libs/JSystem/J3DGraphBase/J3DTexture.cpp index e537239e69..67c2ca1a67 100644 --- a/libs/JSystem/J3DGraphBase/J3DTexture.cpp +++ b/libs/JSystem/J3DGraphBase/J3DTexture.cpp @@ -4,7 +4,7 @@ // #include "JSystem/J3DGraphBase/J3DTexture.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" /* 8031204C-803121A4 30C98C 0158+00 0/0 1/1 0/0 .text loadGX__10J3DTextureCFUs11_GXTexMapID */ diff --git a/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp index dc88bd2bab..2bff68389b 100644 --- a/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp @@ -5,7 +5,7 @@ #include "JSystem/J3DGraphLoader/J3DClusterLoader.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Types: diff --git a/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp index e3789d86c3..af9d4df70b 100644 --- a/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -15,7 +15,7 @@ #include "JSystem/JUtility/JUTNameTab.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JSupport/JSupport.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dol2asm.h" // diff --git a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp index ec1084949d..1a8c67ab36 100644 --- a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp @@ -7,7 +7,7 @@ #include "JSystem/J3DGraphBase/J3DShape.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JSupport/JSupport.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "global.h" // diff --git a/libs/JSystem/JAudio2/JASAiCtrl.cpp b/libs/JSystem/JAudio2/JASAiCtrl.cpp index 39e30631f9..cf125fbc95 100644 --- a/libs/JSystem/JAudio2/JASAiCtrl.cpp +++ b/libs/JSystem/JAudio2/JASAiCtrl.cpp @@ -14,7 +14,7 @@ #include "JSystem/JAudio2/JASReport.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "dol2asm.h" -#include "dolphin/ai/ai.h" +#include "dolphin/ai.h" #include "dolphin/os/OSCache.h" #include "dolphin/os/OSTime.h" diff --git a/libs/JSystem/JAudio2/JASAudioThread.cpp b/libs/JSystem/JAudio2/JASAudioThread.cpp index b2dbb172a6..109fd30273 100644 --- a/libs/JSystem/JAudio2/JASAudioThread.cpp +++ b/libs/JSystem/JAudio2/JASAudioThread.cpp @@ -8,8 +8,8 @@ #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" -#include "dolphin/dsp/dsp.h" +#include "dolphin/os.h" +#include "dolphin/dsp.h" // // Types: @@ -143,7 +143,7 @@ class JASChannel { // Maybe location of JASPoolAllocObject_MultiThreaded #ifdef NONMATCHING void* JASAudioThread::run() { - i_OSInitFastCast(); + OSInitFastCast(); JASDriver::initAI(DMACallback); JASDsp::boot(DSPCallback); JASDsp::initBuffer(); diff --git a/libs/JSystem/JAudio2/JASCmdStack.cpp b/libs/JSystem/JAudio2/JASCmdStack.cpp index 52669b0c31..6e4e85522b 100644 --- a/libs/JSystem/JAudio2/JASCmdStack.cpp +++ b/libs/JSystem/JAudio2/JASCmdStack.cpp @@ -3,7 +3,7 @@ // #include "JSystem/JAudio2/JASCmdStack.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" /* 80431684-80431690 05E3A4 000C+00 1/2 0/0 0/0 .bss sCommandListOnce__10JASPortCmd */ JASPortCmd::TPortHead JASPortCmd::sCommandListOnce; diff --git a/libs/JSystem/JAudio2/JASDSPInterface.cpp b/libs/JSystem/JAudio2/JASDSPInterface.cpp index 9e3844cfdf..87e4024e33 100644 --- a/libs/JSystem/JAudio2/JASDSPInterface.cpp +++ b/libs/JSystem/JAudio2/JASDSPInterface.cpp @@ -11,7 +11,7 @@ #include "JSystem/JAudio2/osdsp_task.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" #include "dolphin/os/OSCache.h" // diff --git a/libs/JSystem/JAudio2/JASProbe.cpp b/libs/JSystem/JAudio2/JASProbe.cpp index c6f8d7a490..6e3d3c35e4 100644 --- a/libs/JSystem/JAudio2/JASProbe.cpp +++ b/libs/JSystem/JAudio2/JASProbe.cpp @@ -4,7 +4,7 @@ // #include "JSystem/JAudio2/JASProbe.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Types: diff --git a/libs/JSystem/JAudio2/JASTaskThread.cpp b/libs/JSystem/JAudio2/JASTaskThread.cpp index f3fc426e6a..4020226837 100644 --- a/libs/JSystem/JAudio2/JASTaskThread.cpp +++ b/libs/JSystem/JAudio2/JASTaskThread.cpp @@ -9,7 +9,7 @@ #include "JSystem/JKernel/JKRSolidHeap.h" #include "dol2asm.h" #include "dolphin/os/OSInterrupt.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Forward References: @@ -156,7 +156,7 @@ int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { // Regalloc #ifdef NONMATCHING void JASTaskThread::run() { - i_OSInitFastCast(); + OSInitFastCast(); do { JASThreadCallStack* ppcVar1 = (JASThreadCallStack*)waitMessageBlock(); if (field_0x84) { diff --git a/libs/JSystem/JAudio2/JASWaveArcLoader.cpp b/libs/JSystem/JAudio2/JASWaveArcLoader.cpp index 7b0d9b99cf..3876ec44af 100644 --- a/libs/JSystem/JAudio2/JASWaveArcLoader.cpp +++ b/libs/JSystem/JAudio2/JASWaveArcLoader.cpp @@ -9,7 +9,7 @@ #include "JSystem/JAudio2/JASMutex.h" #include "JSystem/JKernel/JKRDvdAramRipper.h" #include "string.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "global.h" // diff --git a/libs/JSystem/JAudio2/JAUSectionHeap.cpp b/libs/JSystem/JAudio2/JAUSectionHeap.cpp index bfd5a75e61..cd54f15206 100644 --- a/libs/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/libs/JSystem/JAudio2/JAUSectionHeap.cpp @@ -19,7 +19,7 @@ #include "JSystem/JKernel/JKRSolidHeap.h" #include "stdlib.h" #include "dol2asm.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" // // Types: diff --git a/libs/JSystem/JAudio2/JAUStreamFileTable.cpp b/libs/JSystem/JAudio2/JAUStreamFileTable.cpp index a34b019cef..327dce227c 100644 --- a/libs/JSystem/JAudio2/JAUStreamFileTable.cpp +++ b/libs/JSystem/JAudio2/JAUStreamFileTable.cpp @@ -1,5 +1,5 @@ #include "JSystem/JAudio2/JAUStreamFileTable.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "global.h" /* 802A7420-802A742C 2A1D60 000C+00 0/0 1/1 0/0 .text __ct__18JAUStreamFileTableFv */ diff --git a/libs/JSystem/JAudio2/dsptask.cpp b/libs/JSystem/JAudio2/dsptask.cpp index 8faf4c7069..0aaa7015e7 100644 --- a/libs/JSystem/JAudio2/dsptask.cpp +++ b/libs/JSystem/JAudio2/dsptask.cpp @@ -6,8 +6,8 @@ #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp.h" #include "dol2asm.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OS.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" // // Types: diff --git a/libs/JSystem/JAudio2/osdsp.cpp b/libs/JSystem/JAudio2/osdsp.cpp index 1254fad5ab..1ff0a36025 100644 --- a/libs/JSystem/JAudio2/osdsp.cpp +++ b/libs/JSystem/JAudio2/osdsp.cpp @@ -5,7 +5,7 @@ #include "JSystem/JAudio2/osdsp.h" #include "JSystem/JAudio2/osdsp_task.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/dsp/dsp_task.h" // diff --git a/libs/JSystem/JAudio2/osdsp_task.cpp b/libs/JSystem/JAudio2/osdsp_task.cpp index cb0957c540..4ec5f43d47 100644 --- a/libs/JSystem/JAudio2/osdsp_task.cpp +++ b/libs/JSystem/JAudio2/osdsp_task.cpp @@ -36,7 +36,7 @@ static u8 struct_8045130b; DSPTaskInfo* DSP_prior_task; /* 8029EB20-8029EE24 299460 0304+00 0/0 1/1 0/0 .text __DSPHandler */ -void __DSPHandler(OSInterrupt interrupt, OSContext* context) { +void __DSPHandler(__OSInterrupt interrupt, OSContext* context) { OSContext funcContext; __DSPRegs[5] = ((u16)(__DSPRegs[5]) & ~0x28) | 0x80; OSClearContext(&funcContext); diff --git a/libs/JSystem/JFramework/JFWDisplay.cpp b/libs/JSystem/JFramework/JFWDisplay.cpp index 97f6dfa8b7..128571889e 100644 --- a/libs/JSystem/JFramework/JFWDisplay.cpp +++ b/libs/JSystem/JFramework/JFWDisplay.cpp @@ -10,8 +10,8 @@ #include "JSystem/JUtility/JUTDbPrint.h" #include "JSystem/JUtility/JUTProcBar.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" #include "dolphin/types.h" // @@ -585,8 +585,8 @@ static void JFWDrawDoneAlarm() { static void JFWGXAbortAlarmHandler(OSAlarm* param_0, OSContext* param_1) { diagnoseGpHang(); GXAbortFrame(); - GFX_FIFO(u8) = 0x61; - GFX_FIFO(u32) = 0x5800000F; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = 0x5800000F; GXFifoObj* fifo = GXGetCPUFifo(); if (fifo != NULL) { diff --git a/libs/JSystem/JFramework/JFWSystem.cpp b/libs/JSystem/JFramework/JFWSystem.cpp index b5b2026de2..30bfd60097 100644 --- a/libs/JSystem/JFramework/JFWSystem.cpp +++ b/libs/JSystem/JFramework/JFWSystem.cpp @@ -61,7 +61,6 @@ extern "C" void createManager__17JUTConsoleManagerFP7JKRHeap(); extern "C" void OSInit(); extern "C" void DVDInit(); extern "C" extern u8 const JUTResFONT_Ascfont_fix12[16736]; -extern "C" extern u8 GXNtsc480IntDf[60]; // // Declarations: diff --git a/libs/JSystem/JKernel/JKRAram.cpp b/libs/JSystem/JKernel/JKRAram.cpp index 2cb1edae51..4a8e1746a6 100644 --- a/libs/JSystem/JKernel/JKRAram.cpp +++ b/libs/JSystem/JKernel/JKRAram.cpp @@ -10,7 +10,7 @@ #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JUtility/JUTException.h" #include "string.h" -#include "dolphin/ar/ar.h" +#include "dolphin/ar.h" #include "dolphin/os/OSCache.h" #include "dolphin/os/OSInterrupt.h" #include "global.h" diff --git a/libs/JSystem/JKernel/JKRAramPiece.cpp b/libs/JSystem/JKernel/JKRAramPiece.cpp index 8e0929bc73..fcd86c9332 100644 --- a/libs/JSystem/JKernel/JKRAramPiece.cpp +++ b/libs/JSystem/JKernel/JKRAramPiece.cpp @@ -7,7 +7,7 @@ #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRDecomp.h" #include "JSystem/JUtility/JUTException.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" /* 802D3574-802D35F4 2CDEB4 0080+00 1/1 0/0 0/0 .text * prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v */ diff --git a/libs/JSystem/JKernel/JKRDvdAramRipper.cpp b/libs/JSystem/JKernel/JKRDvdAramRipper.cpp index 555c033fbb..4b67c84dfa 100644 --- a/libs/JSystem/JKernel/JKRDvdAramRipper.cpp +++ b/libs/JSystem/JKernel/JKRDvdAramRipper.cpp @@ -12,7 +12,7 @@ #include "dol2asm.h" #include "dolphin/os/OSCache.h" #include "dolphin/os/OSInterrupt.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" #include "global.h" // diff --git a/libs/JSystem/JKernel/JKRDvdArchive.cpp b/libs/JSystem/JKernel/JKRDvdArchive.cpp index 9227a4ba6b..0ea59d56f6 100644 --- a/libs/JSystem/JKernel/JKRDvdArchive.cpp +++ b/libs/JSystem/JKernel/JKRDvdArchive.cpp @@ -11,7 +11,7 @@ #include "JSystem/JUtility/JUTException.h" #include "math.h" #include "string.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "global.h" // diff --git a/libs/JSystem/JKernel/JKRDvdRipper.cpp b/libs/JSystem/JKernel/JKRDvdRipper.cpp index 19d587ce00..2740403592 100644 --- a/libs/JSystem/JKernel/JKRDvdRipper.cpp +++ b/libs/JSystem/JKernel/JKRDvdRipper.cpp @@ -12,7 +12,7 @@ #include "dol2asm.h" #include "dolphin/os/OSCache.h" #include "dolphin/os/OSInterrupt.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" // // Forward References: diff --git a/libs/JSystem/JKernel/JKRFile.cpp b/libs/JSystem/JKernel/JKRFile.cpp index 9d6c51dcc6..c9396d6a9c 100644 --- a/libs/JSystem/JKernel/JKRFile.cpp +++ b/libs/JSystem/JKernel/JKRFile.cpp @@ -4,7 +4,7 @@ // #include "JSystem/JKernel/JKRFile.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" /* 802D9518-802D9584 2D3E58 006C+00 0/0 2/2 0/0 .text read__7JKRFileFPvll */ s32 JKRFile::read(void* data, s32 size, s32 offset) { diff --git a/libs/JSystem/JKernel/JKRHeap.cpp b/libs/JSystem/JKernel/JKRHeap.cpp index c5ad70d973..b26b0ffe4d 100644 --- a/libs/JSystem/JKernel/JKRHeap.cpp +++ b/libs/JSystem/JKernel/JKRHeap.cpp @@ -6,7 +6,7 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTException.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Declarations: diff --git a/libs/JSystem/JParticle/JPABaseShape.cpp b/libs/JSystem/JParticle/JPABaseShape.cpp index 2ebee94352..dd4fbfc3c0 100644 --- a/libs/JSystem/JParticle/JPABaseShape.cpp +++ b/libs/JSystem/JParticle/JPABaseShape.cpp @@ -8,9 +8,9 @@ #include "JSystem/JParticle/JPAEmitter.h" #include "JSystem/JParticle/JPAResourceManager.h" #include "JSystem/JMath/JMATrigonometric.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" // @@ -1326,7 +1326,7 @@ void JPADrawPoint(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { GXBegin(GX_POINTS, GX_VTXFMT1, 1); GXPosition3f32(ptcl->mPosition.x, ptcl->mPosition.y, ptcl->mPosition.z); GXTexCoord2f32(0.0f, 0.0f); - i_GXEnd(); + GXEnd(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); } @@ -1361,7 +1361,7 @@ void JPADrawLine(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { GXTexCoord2f32(0.0f, 0.0f); GXPosition3f32(local_28.x, local_28.y, local_28.z); GXTexCoord2f32(0.0f, 1.0f); - i_GXEnd(); + GXEnd(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); } @@ -1482,7 +1482,7 @@ void JPADrawStripe(JPAEmitterWorkData* param_0) { GXTexCoord2f32(1.0f, dVar16); } - i_GXEnd(); + GXEnd(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); } diff --git a/libs/JSystem/JParticle/JPAChildShape.cpp b/libs/JSystem/JParticle/JPAChildShape.cpp index 2be24a0c1c..28ef7fbb9e 100644 --- a/libs/JSystem/JParticle/JPAChildShape.cpp +++ b/libs/JSystem/JParticle/JPAChildShape.cpp @@ -6,8 +6,8 @@ #include "JSystem/JParticle/JPAChildShape.h" #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAEmitter.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JParticle/JPAEmitter.cpp b/libs/JSystem/JParticle/JPAEmitter.cpp index 055cb4f58d..bfd8664e7b 100644 --- a/libs/JSystem/JParticle/JPAEmitter.cpp +++ b/libs/JSystem/JParticle/JPAEmitter.cpp @@ -8,7 +8,7 @@ #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAResourceManager.h" #include "JSystem/JParticle/JPABaseShape.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JParticle/JPAEmitterManager.cpp b/libs/JSystem/JParticle/JPAEmitterManager.cpp index 39427675e3..b44dfcfd4b 100644 --- a/libs/JSystem/JParticle/JPAEmitterManager.cpp +++ b/libs/JSystem/JParticle/JPAEmitterManager.cpp @@ -6,7 +6,7 @@ #include "JSystem/JParticle/JPAEmitterManager.h" #include "JSystem/JParticle/JPAEmitter.h" #include "JSystem/JParticle/JPAResourceManager.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JParticle/JPAExTexShape.cpp b/libs/JSystem/JParticle/JPAExTexShape.cpp index c1b5acaec6..c44448292e 100644 --- a/libs/JSystem/JParticle/JPAExTexShape.cpp +++ b/libs/JSystem/JParticle/JPAExTexShape.cpp @@ -6,7 +6,7 @@ #include "JSystem/JParticle/JPAExTexShape.h" #include "JSystem/JParticle/JPAResourceManager.h" #include "JSystem/JParticle/JPAEmitter.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/types.h" /* 8027B040-8027B13C 275980 00FC+00 0/0 1/1 0/0 .text JPALoadExTex__FP18JPAEmitterWorkData */ diff --git a/libs/JSystem/JParticle/JPAExtraShape.cpp b/libs/JSystem/JParticle/JPAExtraShape.cpp index e7f45b8ad7..0f1bcec7c9 100644 --- a/libs/JSystem/JParticle/JPAExtraShape.cpp +++ b/libs/JSystem/JParticle/JPAExtraShape.cpp @@ -7,8 +7,8 @@ #include "JSystem/JMath/JMATrigonometric.h" #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAEmitter.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JParticle/JPAParticle.cpp b/libs/JSystem/JParticle/JPAParticle.cpp index 1be9f4f55d..3f109791bf 100644 --- a/libs/JSystem/JParticle/JPAParticle.cpp +++ b/libs/JSystem/JParticle/JPAParticle.cpp @@ -6,7 +6,7 @@ #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAEmitter.h" #include "JSystem/JParticle/JPAEmitterManager.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "dol2asm.h" // diff --git a/libs/JSystem/JParticle/JPAResource.cpp b/libs/JSystem/JParticle/JPAResource.cpp index 37b350d81b..48f190e15f 100644 --- a/libs/JSystem/JParticle/JPAResource.cpp +++ b/libs/JSystem/JParticle/JPAResource.cpp @@ -7,8 +7,8 @@ #include "JSystem/JParticle/JPABaseShape.h" #include "JSystem/JParticle/JPAEmitter.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/gx.h" +#include "dolphin/mtx.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JUtility/JUTAssert.cpp b/libs/JSystem/JUtility/JUTAssert.cpp index 1496e03864..a721e64e09 100644 --- a/libs/JSystem/JUtility/JUTAssert.cpp +++ b/libs/JSystem/JUtility/JUTAssert.cpp @@ -8,7 +8,7 @@ #include "JSystem/JUtility/JUTDbPrint.h" #include "JSystem/JUtility/JUTDirectPrint.h" #include "stdio.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" namespace JUTAssertion { diff --git a/libs/JSystem/JUtility/JUTCacheFont.cpp b/libs/JSystem/JUtility/JUTCacheFont.cpp index 6c84823177..7e9694e9e5 100644 --- a/libs/JSystem/JUtility/JUTCacheFont.cpp +++ b/libs/JSystem/JUtility/JUTCacheFont.cpp @@ -8,7 +8,7 @@ #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTConsole.h" #include "JSystem/JKernel/JKRAram.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 802DD188-802DD208 2D7AC8 0080+00 0/0 1/1 0/0 .text __ct__12JUTCacheFontFPC7ResFONTUlP7JKRHeap */ diff --git a/libs/JSystem/JUtility/JUTConsole.cpp b/libs/JSystem/JUtility/JUTConsole.cpp index 1f67bcbc56..4cbf7c38ef 100644 --- a/libs/JSystem/JUtility/JUTConsole.cpp +++ b/libs/JSystem/JUtility/JUTConsole.cpp @@ -9,9 +9,9 @@ #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTDirectPrint.h" #include "JSystem/JUtility/JUTVideo.h" -#include "stdio.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" +#include "stdio.h" // // Forward References: @@ -262,18 +262,15 @@ void JUTConsole::print_f(char const* fmt, ...) { } /* 802E7C38-802E7F30 2E2578 02F8+00 2/2 10/10 0/0 .text print__10JUTConsoleFPCc */ -// signed/unsigned -#ifdef NONMATCHING -void JUTConsole::print(char const* param_0) { +void JUTConsole::print(char const* str) { if (mOutput & 2) { -#ifdef DEBUG - OSReport("%s", param_0); -#endif + OS_REPORT("%s", str); } + if (mOutput & 1) { - const u8* r29 = (const u8*)param_0; + const u8* r29 = (const u8*)str; u8* r28 = getLinePtr(field_0x38) + field_0x3c; - while (*r29 != 0) { + while (*r29) { if (field_0x6a && field_0x34 == nextIndex(field_0x38)) { break; } @@ -303,6 +300,7 @@ void JUTConsole::print(char const* param_0) { *(r28++) = *(r29++); field_0x3c++; } + if (field_0x3c < field_0x20) { continue; } @@ -322,6 +320,7 @@ void JUTConsole::print(char const* param_0) { if (field_0x38 == field_0x30) { field_0x30 = nextIndex(field_0x30); } + if (field_0x6b) { break; } @@ -329,16 +328,6 @@ void JUTConsole::print(char const* param_0) { *r28 = 0; } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTConsole::print(char const* param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTConsole/print__10JUTConsoleFPCc.s" -} -#pragma pop -#endif /* 802E7F30-802E7F7C 2E2870 004C+00 1/1 1/1 0/0 .text JUTConsole_print_f_va_ */ extern "C" void JUTConsole_print_f_va_(JUTConsole* console, const char* fmt, va_list args) { @@ -347,22 +336,13 @@ extern "C" void JUTConsole_print_f_va_(JUTConsole* console, const char* fmt, va_ console->print(buf); } -/* ############################################################################################## */ -/* 8039D9A8-8039D9A8 02A008 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039D9A8 = "[%03d] %s\n"; -SECTION_DEAD static char const* const stringBase_8039D9B3 = "%s\n"; -#pragma pop - /* 802E7F7C-802E80A8 2E28BC 012C+00 0/0 2/2 0/0 .text dumpToTerminal__10JUTConsoleFUi */ -// signed/unsigned, instruction order -#ifdef NONMATCHING void JUTConsole::dumpToTerminal(unsigned int param_0) { if (param_0 == 0) { return; } - u32 r29 = field_0x34; + + int r29 = field_0x34; if (param_0 != -1) { r29 = field_0x38; for (int i = 0; i != param_0; i++) { @@ -378,9 +358,8 @@ void JUTConsole::dumpToTerminal(unsigned int param_0) { } int r27 = 0; -#ifdef DEBUG - OSReport("\n:::dump of console[%x]--------------------------------\n",this); -#endif + OS_REPORT("\n:::dump of console[%x]--------------------------------\n", this); + do { u8* r28 = getLinePtr(r29); u8 r24 = r28[-1]; @@ -394,21 +373,10 @@ void JUTConsole::dumpToTerminal(unsigned int param_0) { } r29 = nextIndex(r29); r27++; - } while (r27 != field_0x34); -#ifdef DEBUG - OSReport(":::dump of console[%x] END----------------------------\n",this); -#endif + } while (r29 != field_0x34); + + OS_REPORT(":::dump of console[%x] END----------------------------\n", this); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTConsole::dumpToTerminal(unsigned int param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTConsole/dumpToTerminal__10JUTConsoleFUi.s" -} -#pragma pop -#endif /* 802E80A8-802E8184 2E29E8 00DC+00 0/0 3/3 0/0 .text scroll__10JUTConsoleFi */ void JUTConsole::scroll(int scrollAmnt) { @@ -436,7 +404,7 @@ void JUTConsole::scroll(int scrollAmnt) { field_0x30 += mMaxLines; } - if (field_0x30 >= mMaxLines) { + if (field_0x30 >= (u32)mMaxLines) { field_0x30 -= mMaxLines; } } @@ -502,6 +470,21 @@ asm void JUTConsoleManager::removeConsole(JUTConsole* param_0) { #pragma pop /* 802E8384-802E8450 2E2CC4 00CC+00 0/0 1/1 0/0 .text draw__17JUTConsoleManagerCFv */ +#ifdef NONMATCHING +void JUTConsoleManager::draw() const { + JGadget::TLinkList::const_iterator iter = mLinkList.begin(); + JGadget::TLinkList::const_iterator end = mLinkList.end(); + + for (; iter != end; ++iter) { + const JUTConsole* const console = &(*iter); + if (console != mActiveConsole) + console->doDraw(JUTConsole::CONSOLE_TYPE_1); + } + + if (mActiveConsole != NULL) + mActiveConsole->doDraw(JUTConsole::CONSOLE_TYPE_0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -510,6 +493,7 @@ asm void JUTConsoleManager::draw() const { #include "asm/JSystem/JUtility/JUTConsole/draw__17JUTConsoleManagerCFv.s" } #pragma pop +#endif /* 802E8450-802E84C4 2E2D90 0074+00 0/0 5/5 0/0 .text drawDirect__17JUTConsoleManagerCFb */ @@ -615,7 +599,9 @@ void JUTWarningConsole_f_va(const char* fmt, va_list args) { if (JUTGetWarningConsole() == NULL) { vsnprintf(buf, sizeof(buf), fmt, args); OSReport("%s", buf); - } else if (JUTGetWarningConsole()->getOutput() & (JUTConsole::OUTPUT_CONSOLE | JUTConsole::OUTPUT_OSREPORT)) { + } else if (JUTGetWarningConsole()->getOutput() & + (JUTConsole::OUTPUT_CONSOLE | JUTConsole::OUTPUT_OSREPORT)) + { vsnprintf(buf, sizeof(buf), fmt, args); JUTGetWarningConsole()->print(buf); } diff --git a/libs/JSystem/JUtility/JUTException.cpp b/libs/JSystem/JUtility/JUTException.cpp index a9c2ac6321..cefbac055a 100644 --- a/libs/JSystem/JUtility/JUTException.cpp +++ b/libs/JSystem/JUtility/JUTException.cpp @@ -11,8 +11,8 @@ #include "stdlib.h" #include "dol2asm.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/os/OS.h" -#include "dolphin/vi/vi.h" +#include "dolphin/os.h" +#include "dolphin/vi.h" #include "global.h" // diff --git a/libs/JSystem/JUtility/JUTGamePad.cpp b/libs/JSystem/JUtility/JUTGamePad.cpp index 9ec141f8d3..e5c74e6992 100644 --- a/libs/JSystem/JUtility/JUTGamePad.cpp +++ b/libs/JSystem/JUtility/JUTGamePad.cpp @@ -4,9 +4,9 @@ // #include "JSystem/JUtility/JUTGamePad.h" -#include "math.h" #include "dol2asm.h" #include "dolphin/os/OSResetSW.h" +#include "math.h" // // Forward References: @@ -104,7 +104,7 @@ extern "C" void _restgpr_29(); /* ############################################################################################## */ /* 803CC5F0-803CC600 029710 0010+00 3/3 0/0 0/0 .data sChannelMask__Q210JUTGamePad7CRumble */ -SECTION_DATA PADMask JUTGamePad::CRumble::sChannelMask[4] = { +SECTION_DATA u32 JUTGamePad::CRumble::sChannelMask[4] = { PAD_CHAN0_BIT, PAD_CHAN1_BIT, PAD_CHAN2_BIT, @@ -227,8 +227,8 @@ u32 JUTGamePad::read() { sStickMode, WS_MAIN_STICK, mPadButton[i].mButton) << 0x18; u32 s_stick = (mPadSStick[i].update(mPadStatus[i].substick_x, mPadStatus[i].substick_y, - sStickMode, WS_SUB_STICK, mPadButton[i].mButton) - << 0x10); + sStickMode, WS_SUB_STICK, mPadButton[i].mButton) + << 0x10); m_stick |= s_stick; mPadButton[i].update(&mPadStatus[i], m_stick); } else if (mPadStatus[i].error == -1) { @@ -275,7 +275,7 @@ u32 JUTGamePad::read() { } if (mask != 0) { - PADReset((PADMask)mask); + PADReset(mask); } checkResetSwitch(); @@ -310,7 +310,7 @@ void JUTGamePad::assign() { bool JUTGamePad::CRumble::mStatus[4]; /* 804514E8-804514EC 0009E8 0004+00 5/5 0/0 0/0 .sbss mEnabled__Q210JUTGamePad7CRumble */ -PADMask JUTGamePad::CRumble::mEnabled; +u32 JUTGamePad::CRumble::mEnabled; /* 804514EC-804514F0 0009EC 0004+00 2/2 4/4 0/0 .sbss sCallback__Q210JUTGamePad13C3ButtonReset */ callbackFn JUTGamePad::C3ButtonReset::sCallback; @@ -608,7 +608,7 @@ void JUTGamePad::CRumble::clear() { field_0x8 = 0; field_0xc = 0; field_0x10 = 0; - mEnabled = (PADMask)(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT); + mEnabled = (PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT); } /* 802E15D8-802E1634 2DBF18 005C+00 2/2 0/0 0/0 .text clear__Q210JUTGamePad7CRumbleFP10JUTGamePad @@ -758,7 +758,7 @@ void JUTGamePad::CRumble::setEnabled(u32 mask) { } } } - mEnabled = (PADMask)(mask & (PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); + mEnabled = (mask & (PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); } /* 802E1A7C-802E1A98 2DC3BC 001C+00 1/1 0/0 0/0 .text setRepeat__Q210JUTGamePad7CButtonFUlUlUl */ @@ -778,7 +778,7 @@ bool JUTGamePad::recalibrate(u32 mask) { } } - return PADRecalibrate((PADMask)mask); + return PADRecalibrate(mask); } /* 802E1AFC-802E1B60 2DC43C 0064+00 1/1 0/0 0/0 .text checkCallback__19JUTGamePadLongPressFiUl */ diff --git a/libs/JSystem/JUtility/JUTPalette.cpp b/libs/JSystem/JUtility/JUTPalette.cpp index a85b2149cc..eaf18b3f80 100644 --- a/libs/JSystem/JUtility/JUTPalette.cpp +++ b/libs/JSystem/JUtility/JUTPalette.cpp @@ -1,6 +1,6 @@ #include "JSystem/JUtility/JUTPalette.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" void JUTPalette::storeTLUT(_GXTlut param_0, ResTLUT* tlut) { if (tlut == NULL) { diff --git a/libs/JSystem/JUtility/JUTProcBar.cpp b/libs/JSystem/JUtility/JUTProcBar.cpp index 31e1b9e59d..01438118d4 100644 --- a/libs/JSystem/JUtility/JUTProcBar.cpp +++ b/libs/JSystem/JUtility/JUTProcBar.cpp @@ -1,18 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: JUTProcBar -// - #include "JSystem/JUtility/JUTProcBar.h" #include "JSystem/J2DGraph/J2DOrthoGraph.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTVideo.h" -#include "dol2asm.h" -#include "global.h" - -// -// Declarations: -// /* 802E5888-802E599C 2E01C8 0114+00 1/1 0/0 0/0 .text __ct__10JUTProcBarFv */ JUTProcBar::JUTProcBar() { @@ -102,8 +91,7 @@ void JUTProcBar::adjustMeterLength(u32 param_0, f32* param_1, f32 param_2, f32 p BOOL var2 = false; float var1 = *param_1; while (var1 > param_2) { - if (param_0 * var1 * 20.0f / 16666.0f <= - mParams.mWidth - 30.0f) + if (param_0 * var1 * 20.0f / 16666.0f <= mParams.mWidth - 30.0f) break; var1 -= (1.0f / 10.0f); @@ -119,8 +107,7 @@ void JUTProcBar::adjustMeterLength(u32 param_0, f32* param_1, f32 param_2, f32 p (*param_4)++; if (*param_4 < 0x1e) break; - if ((param_0 * var1 * 20.0f / 16666.0f) < - (mParams.mWidth - 60.0f)) + if ((param_0 * var1 * 20.0f / 16666.0f) < (mParams.mWidth - 60.0f)) var1 += (1.0f / 5.0f); break; } @@ -136,116 +123,142 @@ void JUTProcBar::draw() { /* 802E5E3C-802E6D3C 2E077C 0F00+00 1/1 0/0 0/0 .text drawProcessBar__10JUTProcBarFv */ void JUTProcBar::drawProcessBar() { if (mVisible) { - int frameDuration = 16666; // duration in miliseconds? for how long a frame takes, - if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->vi_tv_mode >> 2) & 0x0f) == 1) // possibly a define - frameDuration = 20000; // duration for PAL + int frameDuration = 16666; // duration in miliseconds? for how long a frame takes, + if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->vi_tv_mode >> 2) & + 0x0f) == 1) // possibly a define + frameDuration = 20000; // duration for PAL - static int cnt = 0; - adjustMeterLength(mWholeLoop.mCost, &oneFrameRate, 1.0f, 10.0f, &cnt); - int r28 = oneFrameRate * 20.0f; - int r27 = mParams.mBarWidth * 8; - int r26 = mParams.mBarWidth * 2; - int r25 = mParams.mBarWidth * 10; - int r24 = (mParams.mWidth - 4 + r28) / r28; + static int cnt = 0; + adjustMeterLength(mWholeLoop.mCost, &oneFrameRate, 1.0f, 10.0f, &cnt); + int r28 = oneFrameRate * 20.0f; + int r27 = mParams.mBarWidth * 8; + int r26 = mParams.mBarWidth * 2; + int r25 = mParams.mBarWidth * 10; + int r24 = (mParams.mWidth - 4 + r28) / r28; - mIdle.accumePeek(); - mGp.accumePeek(); - mCpu.accumePeek(); + mIdle.accumePeek(); + mGp.accumePeek(); + mCpu.accumePeek(); - u32 totalTime = (mGp.mCost - mGpWait.mCost) - mCpu.mCost; // unsure of types - u32 gpuTime = (mGp.mCost - mGpWait.mCost); - J2DFillBox(mParams.mPosX, mParams.mPosY, mParams.mWidth, r27, JUtility::TColor(0, 0, 50, 200)); - J2DDrawFrame(mParams.mPosX, mParams.mPosY, mParams.mWidth, r27, JUtility::TColor(50, 50, 150, 255), 6); - if (mCostFrame > r24) - J2DFillBox(mParams.mPosX, mParams.mPosY + r27 + 1, mParams.mWidth, 1.0f, JUtility::TColor(250, 0, 0, 200)); - else - J2DFillBox(mParams.mPosX, mParams.mPosY + r27 + 1, mCostFrame * r28 + 2, 1.0f, JUtility::TColor(0, 250, 250, 200)); + u32 totalTime = (mGp.mCost - mGpWait.mCost) - mCpu.mCost; // unsure of types + u32 gpuTime = (mGp.mCost - mGpWait.mCost); + J2DFillBox(mParams.mPosX, mParams.mPosY, mParams.mWidth, r27, + JUtility::TColor(0, 0, 50, 200)); + J2DDrawFrame(mParams.mPosX, mParams.mPosY, mParams.mWidth, r27, + JUtility::TColor(50, 50, 150, 255), 6); + if (mCostFrame > r24) + J2DFillBox(mParams.mPosX, mParams.mPosY + r27 + 1, mParams.mWidth, 1.0f, + JUtility::TColor(250, 0, 0, 200)); + else + J2DFillBox(mParams.mPosX, mParams.mPosY + r27 + 1, mCostFrame * r28 + 2, 1.0f, + JUtility::TColor(0, 250, 250, 200)); - int stack92 = mWholeLoop.mCost * r28 / frameDuration; - if (stack92 > mParams.mWidth) - J2DFillBox(mParams.mPosX, mParams.mPosY, mParams.mWidth, 1.0f, JUtility::TColor(255, 100, 0, 255)); - else - J2DFillBox(mParams.mPosX, mParams.mPosY, stack92, 1.0f, JUtility::TColor(50, 255, 0, 255)); + int stack92 = mWholeLoop.mCost * r28 / frameDuration; + if (stack92 > mParams.mWidth) + J2DFillBox(mParams.mPosX, mParams.mPosY, mParams.mWidth, 1.0f, + JUtility::TColor(255, 100, 0, 255)); + else + J2DFillBox(mParams.mPosX, mParams.mPosY, stack92, 1.0f, + JUtility::TColor(50, 255, 0, 255)); - if (field_0x110 == 0) { - int r23 = mParams.mPosY + mParams.mBarWidth; - bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mGp.mCost, mGp.field_0x8, JUtility::TColor(80, 255, 80, 255), - JUtility::TColor(100, 255, 120, 255)); - r23 += mParams.mBarWidth * 2; - bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mCpu.mCost, mCpu.field_0x8, JUtility::TColor(255, 80, 80, 255), - JUtility::TColor(255, 100, 100, 255)); - r23 += mParams.mBarWidth * 2; - bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mIdle.mCost, mIdle.field_0x8, JUtility::TColor(180, 180, 160, 255), - JUtility::TColor(200, 200, 200, 255)); - } else { - int r22 = mParams.mPosY + mParams.mBarWidth; - int r21 = mParams.mPosX + 1; - bar_subroutine(r21, r22, r26, r28, frameDuration, gpuTime, -1, JUtility::TColor(80, 255, 80, 255), - JUtility::TColor(80, 255, 80, 255)); - int thingy1 = gpuTime * r28 / frameDuration + r21; // inline or define? - J2DFillBox(thingy1, r22, mGpWait.calcBarSize(r28, frameDuration), r26, JUtility::TColor(0, 255, 0, 255)); - int r30 = mGp.calcBarSize(r28, frameDuration) + r21; - r21 += totalTime * r28 / frameDuration; - r22 += mParams.mBarWidth * 2; - bar_subroutine(r21, r22, r26, r28, frameDuration, mCpu.mCost, -1, JUtility::TColor(255, 80, 80, 255), - JUtility::TColor(255, 80, 80, 255)); - r22 += mParams.mBarWidth * 2; - bar_subroutine(r30, r22, r26, r28, frameDuration, mIdle.mCost, -1, JUtility::TColor(180, 180, 160, 255), - JUtility::TColor(180, 180, 160, 255)); - } - for (int i = 1; i < r24; i++) { - int temp2 = mParams.mPosX + i * r28 + 1; - J2DDrawLine(temp2, mParams.mPosY + mParams.mBarWidth, temp2, mParams.mPosY + r27 - mParams.mBarWidth, - (i % 5) != 0 ? JUtility::TColor(100, 100, 255, 255) : JUtility::TColor(180, 255, 255, 255), 12); - } - u32 temp3 = 0; - for (int i = 0; i < 8; i++) { - CTime* time = &mUsers[i]; - if (++time->field_0xc >= 0x10 || time->mCost > time->field_0x8) { - time->field_0x8 = time->mCost; - time->field_0xc = 0; - } - if (time->field_0x8 > temp3) - temp3 = time->field_0x8; - } - if ((bool)temp3 == true) { - static int cntUser = 0; - adjustMeterLength(temp3, &oneFrameRateUser, 1.0f, 10.0f, &cntUser); - int r21 = oneFrameRateUser * 20.0f; - J2DFillBox(mParams.mPosX, mParams.mUserPosition, mParams.mWidth, r25, JUtility::TColor(0, 0, 50, 200)); - J2DDrawFrame(mParams.mPosX, mParams.mUserPosition, mParams.mWidth, r25, JUtility::TColor(50, 50, 150, 255), 6); - for (int i = 0; i < 8; i++) { - CTime* time = &mUsers[i]; - if (++time->field_0xc >= 0x10 || time->mCost > time->field_0x8) { - time->field_0x8 = time->mCost; - time->field_0xc = 0; - } - if (time->mCost != 0 || time->field_0x8 != 0) { - int temp4 = time->mCost * r21 / frameDuration; - int temp5 = time->field_0x8 * r21 / frameDuration; - time->mCost = 0; - J2DFillBox(mParams.mPosX + 1, mParams.mUserPosition + mParams.mBarWidth + i * mParams.mBarWidth, temp4, - mParams.mBarWidth, JUtility::TColor(time->mR, time->mG, time->mB, 255)); + if (field_0x110 == 0) { + int r23 = mParams.mPosY + mParams.mBarWidth; + bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mGp.mCost, + mGp.field_0x8, JUtility::TColor(80, 255, 80, 255), + JUtility::TColor(100, 255, 120, 255)); + r23 += mParams.mBarWidth * 2; + bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mCpu.mCost, + mCpu.field_0x8, JUtility::TColor(255, 80, 80, 255), + JUtility::TColor(255, 100, 100, 255)); + r23 += mParams.mBarWidth * 2; + bar_subroutine(mParams.mPosX + 1, r23, r26, r28, frameDuration, mIdle.mCost, + mIdle.field_0x8, JUtility::TColor(180, 180, 160, 255), + JUtility::TColor(200, 200, 200, 255)); + } else { + int r22 = mParams.mPosY + mParams.mBarWidth; + int r21 = mParams.mPosX + 1; + bar_subroutine(r21, r22, r26, r28, frameDuration, gpuTime, -1, + JUtility::TColor(80, 255, 80, 255), JUtility::TColor(80, 255, 80, 255)); + int thingy1 = gpuTime * r28 / frameDuration + r21; // inline or define? + J2DFillBox(thingy1, r22, mGpWait.calcBarSize(r28, frameDuration), r26, + JUtility::TColor(0, 255, 0, 255)); + int r30 = mGp.calcBarSize(r28, frameDuration) + r21; + r21 += totalTime * r28 / frameDuration; + r22 += mParams.mBarWidth * 2; + bar_subroutine(r21, r22, r26, r28, frameDuration, mCpu.mCost, -1, + JUtility::TColor(255, 80, 80, 255), JUtility::TColor(255, 80, 80, 255)); + r22 += mParams.mBarWidth * 2; + bar_subroutine(r30, r22, r26, r28, frameDuration, mIdle.mCost, -1, + JUtility::TColor(180, 180, 160, 255), + JUtility::TColor(180, 180, 160, 255)); + } + for (int i = 1; i < r24; i++) { + int temp2 = mParams.mPosX + i * r28 + 1; + J2DDrawLine(temp2, mParams.mPosY + mParams.mBarWidth, temp2, + mParams.mPosY + r27 - mParams.mBarWidth, + (i % 5) != 0 ? JUtility::TColor(100, 100, 255, 255) : + JUtility::TColor(180, 255, 255, 255), + 12); + } + u32 temp3 = 0; + for (int i = 0; i < 8; i++) { + CTime* time = &mUsers[i]; + if (++time->field_0xc >= 0x10 || time->mCost > time->field_0x8) { + time->field_0x8 = time->mCost; + time->field_0xc = 0; + } + if (time->field_0x8 > temp3) + temp3 = time->field_0x8; + } + if ((bool)temp3 == true) { + static int cntUser = 0; + adjustMeterLength(temp3, &oneFrameRateUser, 1.0f, 10.0f, &cntUser); + int r21 = oneFrameRateUser * 20.0f; + J2DFillBox(mParams.mPosX, mParams.mUserPosition, mParams.mWidth, r25, + JUtility::TColor(0, 0, 50, 200)); + J2DDrawFrame(mParams.mPosX, mParams.mUserPosition, mParams.mWidth, r25, + JUtility::TColor(50, 50, 150, 255), 6); + for (int i = 0; i < 8; i++) { + CTime* time = &mUsers[i]; + if (++time->field_0xc >= 0x10 || time->mCost > time->field_0x8) { + time->field_0x8 = time->mCost; + time->field_0xc = 0; + } + if (time->mCost != 0 || time->field_0x8 != 0) { + int temp4 = time->mCost * r21 / frameDuration; + int temp5 = time->field_0x8 * r21 / frameDuration; + time->mCost = 0; + J2DFillBox(mParams.mPosX + 1, + mParams.mUserPosition + mParams.mBarWidth + i * mParams.mBarWidth, + temp4, mParams.mBarWidth, + JUtility::TColor(time->mR, time->mG, time->mB, 255)); - if (temp5 < 3u) - J2DFillBox(mParams.mPosX, mParams.mUserPosition + mParams.mBarWidth + i * mParams.mBarWidth, temp5, - mParams.mBarWidth, JUtility::TColor(255, 200, 50, 255)); - else - J2DFillBox(mParams.mPosX + temp5 - 3, mParams.mUserPosition + mParams.mBarWidth + i * mParams.mBarWidth, 3.0f, - mParams.mBarWidth, JUtility::TColor(255, 200, 50, 255)); - } - } + if (temp5 < 3u) + J2DFillBox(mParams.mPosX, + mParams.mUserPosition + mParams.mBarWidth + + i * mParams.mBarWidth, + temp5, mParams.mBarWidth, JUtility::TColor(255, 200, 50, 255)); + else + J2DFillBox(mParams.mPosX + temp5 - 3, + mParams.mUserPosition + mParams.mBarWidth + + i * mParams.mBarWidth, + 3.0f, mParams.mBarWidth, JUtility::TColor(255, 200, 50, 255)); + } + } - int r22 = (mParams.mWidth - 4 + r21) / r21; + int r22 = (mParams.mWidth - 4 + r21) / r21; - for (int i = 1; i < r22; i++) { - int temp6 = mParams.mPosX + i * r21 + 1; - J2DDrawLine(temp6, mParams.mUserPosition + mParams.mBarWidth, temp6, mParams.mUserPosition + r25 - mParams.mBarWidth, - (i % 5) != 0 ? JUtility::TColor(100, 100, 255, 255) : JUtility::TColor(180, 255, 255, 255), 12); - } - } - field_0x108 = 0; - } + for (int i = 1; i < r22; i++) { + int temp6 = mParams.mPosX + i * r21 + 1; + J2DDrawLine(temp6, mParams.mUserPosition + mParams.mBarWidth, temp6, + mParams.mUserPosition + r25 - mParams.mBarWidth, + (i % 5) != 0 ? JUtility::TColor(100, 100, 255, 255) : + JUtility::TColor(180, 255, 255, 255), + 12); + } + } + field_0x108 = 0; + } } /* 802E6D3C-802E6DA4 2E167C 0068+00 2/2 0/0 0/0 .text addrToXPos__FPvi */ @@ -272,9 +285,9 @@ static void heapBar(JKRHeap* param_0, int param_1, int param_2, int param_3, int /* 802E6FA0-802E7340 2E18E0 03A0+00 1/1 0/0 0/0 .text drawHeapBar__10JUTProcBarFv */ void JUTProcBar::drawHeapBar() { - if (mHeapBarVisible) - { - int start; // required/workaround for regswaps, end might be a shared variable too, however doesn't seem to be needed? + if (mHeapBarVisible) { + int start; // required/workaround for regswaps, end might be a shared variable too, however + // doesn't seem to be needed? int posX = mParams.mPosX; int posY = mParams.mPosY; int barHeight = mParams.mBarWidth * 2; @@ -283,40 +296,32 @@ void JUTProcBar::drawHeapBar() { // draw main box in opaque bordeaux red and main frame in purple? J2DFillBox(posX, posY - (height * 2), width, height, JUtility::TColor(100, 0, 50, 200)); - J2DDrawFrame(posX, posY - (height * 2), width, height, JUtility::TColor(100, 50, 150, 255), 6); + J2DDrawFrame(posX, posY - (height * 2), width, height, JUtility::TColor(100, 50, 150, 255), + 6); // Draws a pink line that shows the size of the memstart to start of arenalow? start = posX + addrToXPos(JKRHeap::getCodeStart(), width); int codeEnd = posX + addrToXPos(JKRHeap::getCodeEnd(), width); - J2DFillBox(start, posY - (height * 2), codeEnd - start, height, JUtility::TColor(255, 50, 150, 255)); + J2DFillBox(start, posY - (height * 2), codeEnd - start, height, + JUtility::TColor(255, 50, 150, 255)); // draws a dark blue line that shows how much memory is free? start = posX + addrToXPos(JKRHeap::getUserRamStart(), width); int userEnd = posX + addrToXPos(JKRHeap::getUserRamEnd(), width); - J2DFillBox(start, posY - (height * 2), userEnd - start, height, JUtility::TColor(0, 50, 150, 255)); + J2DFillBox(start, posY - (height * 2), userEnd - start, height, + JUtility::TColor(0, 50, 150, 255)); - // draws a light blue line that shows how much memory is free in the root heap(blends to light pink, not sure how this works) + // draws a light blue line that shows how much memory is free in the root heap(blends to + // light pink, not sure how this works) int size = byteToXLen(JKRHeap::getRootHeap()->getTotalFreeSize(), width); - J2DFillBox(start, posY - (height * 2), size, height / 2, JUtility::TColor(0, 250, 250, 255)); - if (field_0x128 == 0) - { + J2DFillBox(start, posY - (height * 2), size, height / 2, + JUtility::TColor(0, 250, 250, 255)); + if (field_0x128 == 0) { // draws a line of either the watch heap(if available), otherwise draw the current heap - JKRHeap *heap = mWatchHeap ? mWatchHeap : JKRGetCurrentHeap(); + JKRHeap* heap = mWatchHeap ? mWatchHeap : JKRGetCurrentHeap(); if (heap != JKRHeap::getSystemHeap()) { heapBar(heap, posX, posY, barHeight, width, height); } - } } } - -/* 802E7340-802E7354 2E1C80 0014+00 1/1 0/0 0/0 .text __ct__Q210JUTProcBar5CTimeFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm JUTProcBar::CTime::CTime() { -extern "C" asm void __ct__Q210JUTProcBar5CTimeFv() { - nofralloc -#include "asm/JSystem/JUtility/JUTProcBar/__ct__Q210JUTProcBar5CTimeFv.s" -} -#pragma pop diff --git a/libs/JSystem/JUtility/JUTResFont.cpp b/libs/JSystem/JUtility/JUTResFont.cpp index 2c730e0324..9e2c7f4953 100644 --- a/libs/JSystem/JUtility/JUTResFont.cpp +++ b/libs/JSystem/JUtility/JUTResFont.cpp @@ -8,7 +8,7 @@ #include "JSystem/JSupport/JSupport.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTConsole.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #define suAboutEncoding_ 3 @@ -274,22 +274,22 @@ f32 JUTResFont::drawChar_scale(f32 pos_x, f32 pos_y, f32 scale_x, f32 scale_y, i // Bottom Left GXPosition3f32(x1, y1, 0.0f); GXColor1u32(mColor1); - i_GXTexCoord2u16(u1, v1); + GXTexCoord2u16(u1, v1); // Bottom Right GXPosition3f32(x2, y1, 0.0f); GXColor1u32(mColor2); - i_GXTexCoord2u16(u2, v1); + GXTexCoord2u16(u2, v1); // Top Right GXPosition3f32(x2, y2, 0.0f); GXColor1u32(mColor4); - i_GXTexCoord2u16(u2, v2); + GXTexCoord2u16(u2, v2); // Top Left GXPosition3f32(x1, y2, 0.0f); GXColor1u32(mColor3); - i_GXTexCoord2u16(u1, v2); + GXTexCoord2u16(u1, v2); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); diff --git a/libs/JSystem/JUtility/JUTResource.cpp b/libs/JSystem/JUtility/JUTResource.cpp index 4d371db7ab..2ec2d44a0c 100644 --- a/libs/JSystem/JUtility/JUTResource.cpp +++ b/libs/JSystem/JUtility/JUTResource.cpp @@ -1,39 +1,16 @@ -// -// Generated By: dol2asm -// Translation Unit: JUTResource -// - #include "JSystem/JUtility/JUTResource.h" #include "JSystem/JKernel/JKRArchive.h" #include "JSystem/JSupport/JSUInputStream.h" #include "string.h" -#include "dolphin/types.h" - -// -// Types: -// - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// /* 802DE078-802DE120 2D89B8 00A8+00 0/0 1/1 0/0 .text * getResource__15JUTResReferenceFP14JSUInputStreamUlP10JKRArchive */ -void *JUTResReference::getResource(JSUInputStream *stream, u32 resType, JKRArchive *archive) { +void* JUTResReference::getResource(JSUInputStream* stream, u32 resType, JKRArchive* archive) { stream->read(&mType, 1); stream->read(&mNameLength, 1); stream->read(&mName, mNameLength); - if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) - { + if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) { mName[mNameLength] = 0; } @@ -43,12 +20,12 @@ void *JUTResReference::getResource(JSUInputStream *stream, u32 resType, JKRArchi /* 802DE120-802DE1BC 2D8A60 009C+00 0/0 2/2 0/0 .text * getResource__15JUTResReferenceFPCvUlP10JKRArchive */ -void *JUTResReference::getResource(const void *data, u32 resType, JKRArchive *archive) { +void* JUTResReference::getResource(const void* data, u32 resType, JKRArchive* archive) { mType = *(u8*)data; mNameLength = *((u8*)data + 1); if (mNameLength != 0) { - memcpy(&mName, &((u8 *)data)[2], mNameLength); + memcpy(&mName, &((u8*)data)[2], mNameLength); } if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) { @@ -60,8 +37,8 @@ void *JUTResReference::getResource(const void *data, u32 resType, JKRArchive *ar /* 802DE1BC-802DE234 2D8AFC 0078+00 2/2 0/0 0/0 .text * getResource__15JUTResReferenceFUlP10JKRArchive */ -void *JUTResReference::getResource(u32 resType, JKRArchive *archive) { - void *res = NULL; +void* JUTResReference::getResource(u32 resType, JKRArchive* archive) { + void* res = NULL; switch (mType) { case RESTYPE_Unk1: break; diff --git a/libs/JSystem/JUtility/JUTTexture.cpp b/libs/JSystem/JUtility/JUTTexture.cpp index 0269850221..339a11ded7 100644 --- a/libs/JSystem/JUtility/JUTTexture.cpp +++ b/libs/JSystem/JUtility/JUTTexture.cpp @@ -1,23 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: JUTTexture -// - #include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JUtility/JUTPalette.h" -#include "dolphin/gx/GX.h" - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// +#include "dolphin/gx.h" /* 802DE234-802DE2A8 2D8B74 0074+00 0/0 30/30 0/0 .text __dt__10JUTTextureFv */ JUTTexture::~JUTTexture() { diff --git a/libs/JSystem/JUtility/JUTVideo.cpp b/libs/JSystem/JUtility/JUTVideo.cpp index 87f7bd240c..cdb03f998b 100644 --- a/libs/JSystem/JUtility/JUTVideo.cpp +++ b/libs/JSystem/JUtility/JUTVideo.cpp @@ -6,7 +6,7 @@ #include "JSystem/JUtility/JUTVideo.h" #include "JSystem/JUtility/JUTDirectPrint.h" #include "JSystem/JUtility/JUTXfb.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 80451538-8045153C 000A38 0004+00 4/4 18/18 1/1 .sbss sManager__8JUTVideo */ JUTVideo* JUTVideo::sManager; diff --git a/libs/JSystem/JUtility/JUTXfb.cpp b/libs/JSystem/JUtility/JUTXfb.cpp index ada273495b..04ebac0b48 100644 --- a/libs/JSystem/JUtility/JUTXfb.cpp +++ b/libs/JSystem/JUtility/JUTXfb.cpp @@ -5,7 +5,7 @@ #include "JSystem/JUtility/JUTXfb.h" #include "JSystem/JKernel/JKRHeap.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" // // Forward References: diff --git a/libs/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c b/libs/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c index 190770e1e5..ff309f70a3 100644 --- a/libs/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c +++ b/libs/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c @@ -1,5 +1,5 @@ #include "uart_console_io_gcn.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" int InitializeUART(size_t); int WriteUARTN(unsigned char*, size_t); diff --git a/libs/PowerPC_EABI_Support/MetroTRK/trk.h b/libs/PowerPC_EABI_Support/MetroTRK/trk.h index 817c8370ee..d8fb5bc7b1 100644 --- a/libs/PowerPC_EABI_Support/MetroTRK/trk.h +++ b/libs/PowerPC_EABI_Support/MetroTRK/trk.h @@ -1,7 +1,6 @@ #ifndef __METROTRK_TRK_H__ #define __METROTRK_TRK_H__ -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" #include "dolphin/types.h" #ifdef __cplusplus @@ -166,6 +165,8 @@ typedef enum { MEMACCESS_DebuggerMemory = 1, } MemoryAccessOptions; +typedef int UARTError; + typedef enum { UART_NoError = 0, UART_UnknownBaudRate = 1, @@ -195,6 +196,18 @@ typedef enum { //////////////////////////////////// +typedef int MessageBufferID; + +#define TRKMSGBUF_SIZE (0x800 + 0x80) + +typedef struct TRKBuffer { + /* 0x00 */ u32 _00; + /* 0x04 */ BOOL isInUse; + /* 0x08 */ u32 length; + /* 0x0C */ u32 position; + /* 0x10 */ u8 data[TRKMSGBUF_SIZE]; +} TRKBuffer; + typedef struct TRKFramingState { MessageBufferID msgBufID; // _00 TRKBuffer* buffer; // _04 @@ -203,6 +216,19 @@ typedef struct TRKFramingState { u8 fcsType; // _10 } TRKFramingState; +typedef struct TRKState_PPC { + u32 GPR[32]; // 0x0 + u32 LR; // 0x80 + u32 CTR; // 0x84 + u32 XER; // 0x88 + u32 MSR; // 0x8c + u32 DAR; // 0x90 + u32 DSISR; // 0x94 + BOOL stopped; // 0x98 + BOOL inputActivated; // 0x9c + u8* inputPendingPtr; // 0xA0 +} TRKState_PPC; + typedef struct CommandReply { u32 _00; // _00 union { @@ -217,6 +243,134 @@ typedef struct CommandReply { u8 _10[0x30]; // _10, unknown } CommandReply; +typedef struct ProcessorRestoreFlags_PPC { + u8 TBR; + u8 DEC; + u8 linker_padding[0x9 - 0x2]; +} ProcessorRestoreFlags_PPC; + +void TRKSaveExtended1Block(); + +#define SPR_XER 1 +#define SPR_LR 8 +#define SPR_CTR 9 +#define SPR_DSISR 18 +#define SPR_DAR 19 +#define SPR_DEC 22 +#define SPR_SDR1 25 +#define SPR_SRR0 26 +#define SPR_SRR1 27 +#define SPR_SPRG0 272 +#define SPR_SPRG1 273 +#define SPR_SPRG2 274 +#define SPR_SPRG3 275 +#define SPR_EAR 282 +#define SPR_TBL 284 +#define SPR_TBU 285 +#define SPR_PVR 287 +#define SPR_IBAT0U 528 +#define SPR_IBAT0L 529 +#define SPR_IBAT1U 530 +#define SPR_IBAT1L 531 +#define SPR_IBAT2U 532 +#define SPR_IBAT2L 533 +#define SPR_IBAT3U 534 +#define SPR_IBAT3L 535 +#define SPR_IBAT4U 560 +#define SPR_IBAT4L 561 +#define SPR_IBAT5U 562 +#define SPR_IBAT5L 563 +#define SPR_IBAT6U 564 +#define SPR_IBAT6L 565 +#define SPR_IBAT7U 566 +#define SPR_IBAT7L 567 +#define SPR_DBAT0U 536 +#define SPR_DBAT0L 537 +#define SPR_DBAT1U 538 +#define SPR_DBAT1L 539 +#define SPR_DBAT2U 540 +#define SPR_DBAT2L 541 +#define SPR_DBAT3U 542 +#define SPR_DBAT3L 543 +#define SPR_DBAT4U 568 +#define SPR_DBAT4L 569 +#define SPR_DBAT5U 570 +#define SPR_DBAT5L 571 +#define SPR_DBAT6U 572 +#define SPR_DBAT6L 573 +#define SPR_DBAT7U 574 +#define SPR_DBAT7L 575 +#define SPR_GQR0 912 +#define SPR_GQR1 913 +#define SPR_GQR2 914 +#define SPR_GQR3 915 +#define SPR_GQR4 916 +#define SPR_GQR5 917 +#define SPR_GQR6 918 +#define SPR_GQR7 919 +#define SPR_HID2 920 +#define SPR_WPAR 921 +#define SPR_DMA_U 922 +#define SPR_DMA_L 923 +#define SPR_UMMCR0 936 +#define SPR_UPMC1 937 +#define SPR_UPMC2 938 +#define SPR_USIA 939 +#define SPR_UMMCR1 940 +#define SPR_UPMC3 941 +#define SPR_UPMC4 942 +#define SPR_USDA 943 +#define SPR_MMCR0 952 +#define SPR_PMC1 953 +#define SPR_PMC2 954 +#define SPR_SIA 955 +#define SPR_MMCR1 956 +#define SPR_PMC3 957 +#define SPR_PMC4 958 +#define SPR_SDA 959 +#define SPR_HID0 1008 +#define SPR_HID1 1009 +#define SPR_IABR 1010 +#define SPR_HID4 1011 +#define SPR_DABR 1013 +#define SPR_L2CR 1017 +#define SPR_ICTC 1019 +#define SPR_THRM1 1020 +#define SPR_THRM2 1021 +#define SPR_FPECR 1022 + +// PPC exceptions +// 0x000 is reserved +#define PPC_SystemReset 0x100 +#define PPC_MachineCheck 0x200 +#define PPC_DataStorage 0x300 +#define PPC_InstructionStorage 0x400 +#define PPC_ExternalInterrupt 0x500 +#define PPC_Alignment 0x600 +#define PPC_Program 0x700 +#define PPC_FloatingPointUnavaiable 0x800 +#define PPC_Decrementer 0x900 +// 0xA00-0xB00 are reserved +#define PPC_SystemCall 0xC00 +#define PPC_Trace 0xD00 +#define PPC_FloatingPointAssist 0xE00 // unimplemented in 750CL +#define PPC_PerformanceMonitor 0xF00 // Dolphin/Broadway specific +// 0x1000-0x1200 are unimplemented in 750CL +#define PPC_InstructionAddressBreakpoint 0x1300 // Dolphin/Broadway specific +// 0x1400-0x2F00 are reserved, but TRK uses some +#define PPC_SystemManagementInterrupt 0x1400 +// 0x1500-0x1600 are unimplemented in 750CL +#define PPC_ThermalManagementInterrupt 0x1700 +#define PPC_1800Exception 0x1800 +#define PPC_1900Exception 0x1900 +#define PPC_1A00Exception 0x1A00 +#define PPC_1B00Exception 0x1B00 +#define PPC_1C00Exception 0x1C00 // Data breakpoint? +#define PPC_1D00Exception 0x1D00 // Instruction breakpoint? +#define PPC_1E00Exception 0x1E00 // Peripheral breakpoint? +#define PPC_1F00Exception 0x1F00 // Non maskable development port? +#define PPC_2000Exception 0x2000 + #ifdef __cplusplus } #endif diff --git a/libs/PowerPC_EABI_Support/Runtime/Src/GCN_Mem_Alloc.c b/libs/PowerPC_EABI_Support/Runtime/Src/GCN_Mem_Alloc.c index 7ec3b985aa..8a03e7ccb4 100644 --- a/libs/PowerPC_EABI_Support/Runtime/Src/GCN_Mem_Alloc.c +++ b/libs/PowerPC_EABI_Support/Runtime/Src/GCN_Mem_Alloc.c @@ -3,7 +3,7 @@ * Description: */ -#include "dolphin/os/OS.h" +#include "dolphin/os.h" inline static void InitDefaultHeap(void) { void* arenaLo; diff --git a/libs/SSystem/SComponent/c_lib.cpp b/libs/SSystem/SComponent/c_lib.cpp index e69029989c..2e07cdac90 100644 --- a/libs/SSystem/SComponent/c_lib.cpp +++ b/libs/SSystem/SComponent/c_lib.cpp @@ -6,7 +6,7 @@ #include "SSystem/SComponent/c_lib.h" #include "string.h" #include "SSystem/SComponent/c_math.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" /* 8026F93C-8026F95C 26A27C 0020+00 0/0 3/3 0/0 .text cLib_memCpy__FPvPCvUl */ void cLib_memCpy(void* dst, const void* src, unsigned long size) { diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c index 64e6f282ee..458515faa0 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c @@ -18,22 +18,22 @@ static u8 gRecvBuf[DDH_BUF_SIZE]; static BOOL gIsInitialized; /* 80372618-803726A0 36CF58 0088+00 0/0 1/1 0/0 .text ddh_cc_initialize */ -BOOL ddh_cc_initialize(vu8** inputPendingPtrRef, AmcEXICallback monitorCallback) { +int ddh_cc_initialize(void* inputPendingPtrRef, AmcEXICallback monitorCallback) { MWTRACE(1, "CALLING EXI2_Init\n"); EXI2_Init(inputPendingPtrRef, monitorCallback); MWTRACE(1, "DONE CALLING EXI2_Init\n"); CircleBufferInitialize(&gRecvCB, gRecvBuf, DDH_BUF_SIZE); - return FALSE; + return 0; } /* 80372610-80372618 36CF50 0008+00 0/0 1/1 0/0 .text ddh_cc_shutdown */ -BOOL ddh_cc_shutdown() { - return FALSE; +int ddh_cc_shutdown() { + return 0; } /* 803725EC-80372610 36CF2C 0024+00 0/0 1/1 0/0 .text ddh_cc_open */ int ddh_cc_open() { - if (gIsInitialized != FALSE) { + if (gIsInitialized != 0) { return DDH_ERR_ALREADY_INITIALIZED; } @@ -42,12 +42,12 @@ int ddh_cc_open() { } /* 803725E4-803725EC 36CF24 0008+00 0/0 1/1 0/0 .text ddh_cc_close */ -BOOL ddh_cc_close() { - return FALSE; +int ddh_cc_close() { + return 0; } /* 803724F8-803725E4 36CE38 00EC+00 0/0 1/1 0/0 .text ddh_cc_read */ -u32 ddh_cc_read(u8* data, u32 size) { +int ddh_cc_read(u8* data, int size) { u8 buff[DDH_BUF_SIZE]; int originalDataSize; u32 result; @@ -84,12 +84,12 @@ u32 ddh_cc_read(u8* data, u32 size) { } /* 80372438-803724F8 36CD78 00C0+00 0/0 1/1 0/0 .text ddh_cc_write */ -int ddh_cc_write(u32 bytes, u32 length) { +int ddh_cc_write(const u8* bytes, int length) { int exi2Len; int n_copy; u32 hexCopy; - hexCopy = bytes; + hexCopy = (u32)bytes; n_copy = length; if (gIsInitialized == FALSE) { @@ -113,15 +113,15 @@ int ddh_cc_write(u32 bytes, u32 length) { } /* 80372414-80372438 36CD54 0024+00 0/0 1/1 0/0 .text ddh_cc_pre_continue */ -BOOL ddh_cc_pre_continue() { +int ddh_cc_pre_continue() { EXI2_Unreserve(); - return FALSE; + return 0; } /* 803723F0-80372414 36CD30 0024+00 0/0 1/1 0/0 .text ddh_cc_post_stop */ -BOOL ddh_cc_post_stop() { +int ddh_cc_post_stop() { EXI2_Reserve(); - return FALSE; + return 0; } /* 80372380-803723F0 36CCC0 0070+00 0/0 1/1 0/0 .text ddh_cc_peek */ @@ -144,7 +144,7 @@ int ddh_cc_peek() { } /* 8037235C-80372380 36CC9C 0024+00 0/0 1/1 0/0 .text ddh_cc_initinterrupts */ -BOOL ddh_cc_initinterrupts() { +int ddh_cc_initinterrupts() { EXI2_EnableInterrupts(); - return FALSE; + return 0; } diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c index 25f8552347..9fab88b201 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c @@ -1,6 +1,6 @@ #include "TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h" #include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" -#include "dolphin/db/db.h" +#include "dolphin/db.h" #define GDEV_BUF_SIZE (0x500) @@ -14,22 +14,22 @@ static u8 gRecvBuf[GDEV_BUF_SIZE]; static BOOL gIsInitialized; /* 80372BCC-80372C54 36D50C 0088+00 0/0 1/1 0/0 .text gdev_cc_initialize */ -BOOL gdev_cc_initialize(vu8** inputPendingPtrRef, AmcEXICallback monitorCallback) { +int gdev_cc_initialize(void* inputPendingPtrRef, AmcEXICallback monitorCallback) { MWTRACE(1, "CALLING EXI2_Init\n"); DBInitComm(inputPendingPtrRef, monitorCallback); MWTRACE(1, "DONE CALLING EXI2_Init\n"); CircleBufferInitialize(&gRecvCB, gRecvBuf, GDEV_BUF_SIZE); - return FALSE; + return 0; } /* 80372BC4-80372BCC 36D504 0008+00 0/0 1/1 0/0 .text gdev_cc_shutdown */ -BOOL gdev_cc_shutdown() { - return FALSE; +int gdev_cc_shutdown() { + return 0; } /* 80372BA0-80372BC4 36D4E0 0024+00 0/0 1/1 0/0 .text gdev_cc_open */ int gdev_cc_open() { - if (gIsInitialized != FALSE) { + if (gIsInitialized != 0) { return -10005; } @@ -38,12 +38,12 @@ int gdev_cc_open() { } /* 80372B98-80372BA0 36D4D8 0008+00 0/0 1/1 0/0 .text gdev_cc_close */ -BOOL gdev_cc_close() { - return FALSE; +int gdev_cc_close() { + return 0; } /* 80372AA4-80372B98 36D3E4 00F4+00 0/0 1/1 0/0 .text gdev_cc_read */ -u32 gdev_cc_read(u8* data, u32 size) { +int gdev_cc_read(u8* data, int size) { u8 buff[GDEV_BUF_SIZE]; int p1; u32 retval; @@ -79,12 +79,12 @@ u32 gdev_cc_read(u8* data, u32 size) { } /* 803729E4-80372AA4 36D324 00C0+00 0/0 1/1 0/0 .text gdev_cc_write */ -int gdev_cc_write(int bytes, int length) { +int gdev_cc_write(const u8* bytes, int length) { int exi2Len; int n_copy; u32 hexCopy; - hexCopy = bytes; + hexCopy = (u32)bytes; n_copy = length; if (gIsInitialized == FALSE) { @@ -108,15 +108,15 @@ int gdev_cc_write(int bytes, int length) { } /* 803729C0-803729E4 36D300 0024+00 0/0 1/1 0/0 .text gdev_cc_pre_continue */ -BOOL gdev_cc_pre_continue() { +int gdev_cc_pre_continue() { DBClose(); - return FALSE; + return 0; } /* 8037299C-803729C0 36D2DC 0024+00 0/0 1/1 0/0 .text gdev_cc_post_stop */ -BOOL gdev_cc_post_stop() { +int gdev_cc_post_stop() { DBOpen(); - return FALSE; + return 0; } /* 8037292C-8037299C 36D26C 0070+00 0/0 1/1 0/0 .text gdev_cc_peek */ @@ -139,7 +139,7 @@ int gdev_cc_peek() { } /* 80372908-8037292C 36D248 0024+00 0/0 1/1 0/0 .text gdev_cc_initinterrupts */ -BOOL gdev_cc_initinterrupts() { +int gdev_cc_initinterrupts() { DBInitInterrupts(); - return FALSE; + return 0; } diff --git a/libs/TRK_MINNOW_DOLPHIN/Makefile b/libs/TRK_MINNOW_DOLPHIN/Makefile index a9ef03a032..b7c822d542 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Makefile +++ b/libs/TRK_MINNOW_DOLPHIN/Makefile @@ -76,7 +76,7 @@ LIBTRK_MINNOW_DOLPHIN_A_LDFLAGS := \ -linkmode moreram \ -BASE_CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -inline deferred -use_lmw_stmw on -nodefaults -str reuse -RTTI off -maxerrors 5 -enum int $(INCLUDES) +BASE_CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -inline auto,deferred -use_lmw_stmw on -nodefaults -str reuse -RTTI off -maxerrors 5 -enum int $(INCLUDES) $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.o: CFLAGS := $(BASE_CFLAGS) -sdata 8 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.o: CFLAGS := $(BASE_CFLAGS) -sdata 8 @@ -92,8 +92,11 @@ $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.o: CFLAGS := $(BA $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.o: CFLAGS := $(BASE_CFLAGS) -sdata 8 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 +$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 +$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 +$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.o: CFLAGS := $(BASE_CFLAGS) -sdata 0 -sdata2 0 diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c index 3ef836408d..270f9454ed 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c @@ -25,15 +25,15 @@ DSIOResult __TRK_write_console(u32 handle, u8* buffer, size_t* count, void* ref_ return __write_file(DS_Stdout, buffer, count, ref_con); } -static inline DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con) { +static DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con) { return __access_file(handle, buffer, count, ref_con, DSMSG_ReadFile); } -static inline DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con) { +static DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con) { return __access_file(handle, buffer, count, ref_con, DSMSG_WriteFile); } -static inline DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, +static DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, MessageCommandID cmd) { size_t countTemp; u32 r0; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c index a6b4c4b5a7..eb15a0dcb1 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c @@ -6,7 +6,6 @@ #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" #include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" -#include "trk.h" /* 8044F818-8044F820 07C538 0004+04 1/1 0/0 0/0 .bss TRK_mainError */ static DSError TRK_mainError; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c index b29789eecc..37de9b65d0 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c @@ -1,189 +1,326 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/msgbuf -// - #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" -#include "dol2asm.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "trk.h" -// -// Forward References: -// - -void TRKReadBuffer_ui32(); -void TRKReadBuffer_ui8(); -void TRKReadBuffer1_ui64(); -void TRKAppendBuffer_ui32(); -void TRKAppendBuffer_ui8(); -void TRKAppendBuffer1_ui64(); -void TRKReadBuffer(); -void TRKAppendBuffer(); -void TRKResetBuffer(); -void TRKReleaseBuffer(); -void TRKGetFreeBuffer(); -void TRKInitializeMessageBuffers(); - -// -// External References: -// - -SECTION_INIT void TRK_memset(); -SECTION_INIT void TRK_memcpy(); -void usr_puts_serial(); -u8 TRKReleaseMutex(); -u8 TRKAcquireMutex(); -u8 TRKInitializeMutex(); -SECTION_BSS extern u8 gTRKBigEndian[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* 8036D01C-8036D10C 36795C 00F0+00 0/0 2/2 0/0 .text TRKReadBuffer_ui32 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKReadBuffer_ui32() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui32.s" -} -#pragma pop - -/* 8036D10C-8036D1A4 367A4C 0098+00 0/0 1/1 0/0 .text TRKReadBuffer_ui8 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKReadBuffer_ui8() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer_ui8.s" -} -#pragma pop - -/* 8036D1A4-8036D28C 367AE4 00E8+00 0/0 2/2 0/0 .text TRKReadBuffer1_ui64 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKReadBuffer1_ui64() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer1_ui64.s" -} -#pragma pop - -/* 8036D28C-8036D388 367BCC 00FC+00 0/0 2/2 0/0 .text TRKAppendBuffer_ui32 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKAppendBuffer_ui32() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui32.s" -} -#pragma pop - -/* 8036D388-8036D3F0 367CC8 0068+00 0/0 8/8 0/0 .text TRKAppendBuffer_ui8 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKAppendBuffer_ui8() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer_ui8.s" -} -#pragma pop - -/* 8036D3F0-8036D4EC 367D30 00FC+00 0/0 2/2 0/0 .text TRKAppendBuffer1_ui64 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKAppendBuffer1_ui64() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer1_ui64.s" -} -#pragma pop - -/* 8036D4EC-8036D578 367E2C 008C+00 0/0 1/1 0/0 .text TRKReadBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKReadBuffer() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReadBuffer.s" -} -#pragma pop - -/* 8036D578-8036D61C 367EB8 00A4+00 0/0 3/3 0/0 .text TRKAppendBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKAppendBuffer() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKAppendBuffer.s" -} -#pragma pop - -/* 8036D61C-8036D64C 367F5C 0030+00 0/0 7/7 0/0 .text TRKSetBufferPosition */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 TRKSetBufferPosition(TRKBuffer*, u32) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s" -} -#pragma pop - -/* 8036D64C-8036D68C 367F8C 0040+00 0/0 4/4 0/0 .text TRKResetBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKResetBuffer() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKResetBuffer.s" -} -#pragma pop - -/* ############################################################################################## */ /* 8044D8C0-8044F270 07A5E0 19B0+00 4/4 0/0 0/0 .bss gTRKMsgBufs */ -static u8 gTRKMsgBufs[6576]; +TRKBuffer gTRKMsgBufs[3]; -/* 8036D68C-8036D6F0 367FCC 0064+00 0/0 8/8 0/0 .text TRKReleaseBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKReleaseBuffer() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKReleaseBuffer.s" +void TRKSetBufferUsed(TRKBuffer* msg, BOOL state) { + msg->isInUse = state; } -#pragma pop - -/* 8036D6F0-8036D71C 368030 002C+00 0/0 7/7 0/0 .text TRKGetBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* TRKGetBuffer(int) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetBuffer.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803A26E0-803A2700 02ED40 001D+03 1/1 0/0 0/0 .rodata @618 */ -SECTION_RODATA static char const lit_618[] = "ERROR : No buffer available\n"; -COMPILER_STRIP_GATE(0x803A26E0, &lit_618); - -/* 8036D71C-8036D7E4 36805C 00C8+00 0/0 6/6 0/0 .text TRKGetFreeBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKGetFreeBuffer() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKGetFreeBuffer.s" -} -#pragma pop /* 8036D7E4-8036D858 368124 0074+00 0/0 1/1 0/0 .text TRKInitializeMessageBuffers */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKInitializeMessageBuffers() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKInitializeMessageBuffers.s" +DSError TRKInitializeMessageBuffers(void) { + int i; + for (i = 0; i < 3; i++) { + TRKInitializeMutex(&gTRKMsgBufs[i]); + TRKAcquireMutex(&gTRKMsgBufs[i]); + TRKSetBufferUsed(&gTRKMsgBufs[i], FALSE); + TRKReleaseMutex(&gTRKMsgBufs[i]); + } + + return DS_NoError; +} + +/* 8036D71C-8036D7E4 36805C 00C8+00 0/0 6/6 0/0 .text TRKGetFreeBuffer */ +DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg) { + TRKBuffer* buf; + DSError error = DS_NoMessageBufferAvailable; + int i; + + *outMsg = NULL; + + for (i = 0; i < 3; i++) { + buf = TRKGetBuffer(i); + + TRKAcquireMutex(buf); + if (!buf->isInUse) { + TRKResetBuffer(buf, TRUE); + TRKSetBufferUsed(buf, TRUE); + error = DS_NoError; + *outMsg = buf; + *msgID = i; + i = 3; // why not break? weird choice + } + TRKReleaseMutex(buf); + } + + if (error == DS_NoMessageBufferAvailable) { + usr_puts_serial("ERROR : No buffer available\n"); + } + + return error; +} + +/* 8036D6F0-8036D71C 368030 002C+00 0/0 7/7 0/0 .text TRKGetBuffer */ +void* TRKGetBuffer(int idx) { + TRKBuffer* buf = NULL; + if (idx >= 0 && idx < 3) { + buf = &gTRKMsgBufs[idx]; + } + + return buf; +} + +/* 8036D68C-8036D6F0 367FCC 0064+00 0/0 8/8 0/0 .text TRKReleaseBuffer */ +void TRKReleaseBuffer(int idx) { + TRKBuffer* msg; + if (idx != -1 && idx >= 0 && idx < 3) { + msg = &gTRKMsgBufs[idx]; + TRKAcquireMutex(msg); + TRKSetBufferUsed(msg, FALSE); + TRKReleaseMutex(msg); + } +} + +/* 8036D64C-8036D68C 367F8C 0040+00 0/0 4/4 0/0 .text TRKResetBuffer */ +void TRKResetBuffer(TRKBuffer* msg, BOOL keepData) { + msg->length = 0; + msg->position = 0; + + if (!keepData) { + TRK_memset(msg->data, 0, 0x880); + } +} + +/* 8036D61C-8036D64C 367F5C 0030+00 0/0 7/7 0/0 .text TRKSetBufferPosition */ +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos) { + DSError error = DS_NoError; + + if (pos > 0x880) { + error = DS_MessageBufferOverflow; + } else { + msg->position = pos; + // If the new position is past the current length, + // update the length + if (pos > msg->length) { + msg->length = pos; + } + } + + return error; +} + +/* 8036D578-8036D61C 367EB8 00A4+00 0/0 3/3 0/0 .text TRKAppendBuffer */ +DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length) { + DSError error = DS_NoError; // r31 + u32 bytesLeft; + + // Return if no bytes to append + if (length == 0) { + return DS_NoError; + } + + bytesLeft = 0x880 - msg->position; + + // If there isn't enough space left in the buffer, change the number + // of bytes to append to the remaning number of bytes + if (bytesLeft < length) { + error = DS_MessageBufferOverflow; + length = bytesLeft; + } + + if (length == 1) { + // If the length of bytes to append is 1, just copy the byte over + msg->data[msg->position] = ((u8*)data)[0]; + } else { + // Otherwise, use memcpy + TRK_memcpy(msg->data + msg->position, data, length); + } + + // Update the position and length + msg->position += length; + msg->length = msg->position; + + return error; +} + +/* 8036D4EC-8036D578 367E2C 008C+00 0/0 1/1 0/0 .text TRKReadBuffer */ +DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length) { + DSError error = DS_NoError; + unsigned int bytesLeft; // this has to be unsigned int not u32 to match lmfao. + + // Return if no bytes to read + if (length == 0) { + return DS_NoError; + } + + bytesLeft = msg->length - msg->position; + + // If the number of bytes to read exceeds the buffer length, change + // the length to the remaining number of bytes + if (length > bytesLeft) { + error = DS_MessageBufferReadError; + length = bytesLeft; + } + + TRK_memcpy(data, msg->data + msg->position, length); + msg->position += length; + return error; +} + +DSError TRKAppendBuffer1_ui8(TRKBuffer* buffer, const u8 data) { + if (buffer->position >= 0x880) { + return DS_MessageBufferOverflow; + } + + buffer->data[buffer->position++] = data; + buffer->length++; + return DS_NoError; +} + +DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data) { + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[3]; + bigEndianData[1] = byteData[2]; + bigEndianData[2] = byteData[1]; + bigEndianData[3] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +/* 8036D3F0-8036D4EC 367D30 00FC+00 0/0 2/2 0/0 .text TRKAppendBuffer1_ui64 */ +DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data) { + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[7]; + bigEndianData[1] = byteData[6]; + bigEndianData[2] = byteData[5]; + bigEndianData[3] = byteData[4]; + bigEndianData[4] = byteData[3]; + bigEndianData[5] = byteData[2]; + bigEndianData[6] = byteData[1]; + bigEndianData[7] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +/* 8036D388-8036D3F0 367CC8 0068+00 0/0 8/8 0/0 .text TRKAppendBuffer_ui8 */ +DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count) { + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui8(buffer, data[i]); + } + + return err; +} + +/* 8036D28C-8036D388 367BCC 00FC+00 0/0 2/2 0/0 .text TRKAppendBuffer_ui32 */ +DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count) { + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui32(buffer, data[i]); + } + + return err; +} + +DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data) { + return TRKReadBuffer(buffer, (void*)data, 1); +} + +DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data) { + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == DS_NoError) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[3]; + byteData[1] = bigEndianData[2]; + byteData[2] = bigEndianData[1]; + byteData[3] = bigEndianData[0]; + } + + return err; + // UNUSED FUNCTION +} + +/* 8036D1A4-8036D28C 367AE4 00E8+00 0/0 2/2 0/0 .text TRKReadBuffer1_ui64 */ +DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data) { + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == 0) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[7]; + byteData[1] = bigEndianData[6]; + byteData[2] = bigEndianData[5]; + byteData[3] = bigEndianData[4]; + byteData[4] = bigEndianData[3]; + byteData[5] = bigEndianData[2]; + byteData[6] = bigEndianData[1]; + byteData[7] = bigEndianData[0]; + } + + return err; +} + +/* 8036D10C-8036D1A4 367A4C 0098+00 0/0 1/1 0/0 .text TRKReadBuffer_ui8 */ +DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count) { + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui8(buffer, &(data[i])); + } + + return err; +} + +/* 8036D01C-8036D10C 36795C 00F0+00 0/0 2/2 0/0 .text TRKReadBuffer_ui32 */ +DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count) { + DSError err; + s32 i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui32(buffer, &(data[i])); + } + + return err; } -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c index 42c2a9f479..d1ce619436 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c @@ -33,7 +33,7 @@ void SetTRKConnected(BOOL isTRKConnected) { IsTRKConnected = isTRKConnected; } -inline DSError TRKSendACK(TRKBuffer* buffer) { +DSError TRKSendACK(TRKBuffer* buffer) { DSError err; MWTRACE(1, "SendACK : Calling MessageSend\n"); err = TRKMessageSend(buffer); @@ -41,7 +41,7 @@ inline DSError TRKSendACK(TRKBuffer* buffer) { return err; } -inline DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, +DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, DSReplyError replyError) { CommandReply reply; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c index 442e6f2afd..efb88ef536 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c @@ -60,7 +60,7 @@ void TRKNubWelcome(void) { return; } -inline BOOL TRKInitializeEndian(void) { +BOOL TRKInitializeEndian(void) { u8 bendian[4]; BOOL result = FALSE; gTRKBigEndian = TRUE; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c index e406e9c19f..846ade584d 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c @@ -1,5 +1,6 @@ #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" #include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" #include "trk.h" /* 8036F278-8036F498 369BB8 0220+00 0/0 1/1 0/0 .text TRKSuppAccessFile */ diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c index c15f805b5e..e044408421 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c @@ -4,10 +4,9 @@ */ #include "TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h" -#include "dolphin/os/OS.h" /* 80372354-8037235C 36CC94 0008+00 0/0 1/1 0/0 .text udp_cc_initialize */ -__declspec(weak) int udp_cc_initialize(void* flagOut, OSInterruptHandler handler) { +__declspec(weak) int udp_cc_initialize(void* flagOut, __OSInterruptHandler handler) { return -1; } diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c index 5d78e46f7b..c29b25f57d 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c @@ -1,115 +1,37 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/dolphin_trk -// - #include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" #include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" -#include "dol2asm.h" +#include "dolphin/ar.h" +#include "dolphin/os.h" -// -// Forward References: -// +extern u8 _db_stack_addr[]; +#define EXCEPTIONMASK_ADDR 0x80000044 -void InitMetroTRK(); -void InitMetroTRK_BBA(); -void TRK__write_aram(); -void TRK__read_aram(); -int TRKInitializeTarget(); -void __TRK_copy_vectors(); -u32 TRKTargetTranslate(); -void EnableMetroTRKInterrupts(); - -// -// External References: -// - -SECTION_INIT void TRK_memcpy(); -extern u8 const __TRK_unknown_data[7988]; -void ARGetDMAStatus(); -void ARStartDMA(); -void __ARClearInterrupt(); -void __ARGetInterruptStatus(); -void TRK_flush_cache(); -void TRKSaveExtended1Block(); -void TRK_main(); -void EnableEXI2Interrupts(); -void InitMetroTRKCommTable(); -void regist__9daBgObj_cFP4dBgW(); - -// -// Declarations: -// - -/* 80371560-803715F8 36BEA0 0098+00 0/0 1/1 0/0 .text InitMetroTRK */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void InitMetroTRK() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK.s" -} -#pragma pop - -/* 803715F8-8037168C 36BF38 0094+00 0/0 1/1 0/0 .text InitMetroTRK_BBA */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void InitMetroTRK_BBA() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/InitMetroTRK_BBA.s" -} -#pragma pop - -/* 8037168C-80371878 36BFCC 01EC+00 0/0 1/1 0/0 .text TRK__write_aram */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK__write_aram() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__write_aram.s" -} -#pragma pop - -/* 80371878-803719AC 36C1B8 0134+00 0/0 1/1 0/0 .text TRK__read_aram */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK__read_aram() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRK__read_aram.s" -} -#pragma pop - -/* ############################################################################################## */ /* 8044F810-8044F818 07C530 0004+04 3/3 0/0 0/0 .bss lc_base */ -SECTION_BSS static u32 lc_base; +static u32 lc_base; -/* 803719AC-803719F8 36C2EC 004C+00 0/0 1/1 0/0 .text TRKInitializeTarget */ -int TRKInitializeTarget() { - gTRKState.stopped = TRUE; - gTRKState.MSR = __TRK_get_MSR(); - lc_base = 0xE0000000; - return 0; -} - -/* ############################################################################################## */ /* 803D3268-803D32A8 030388 003C+04 1/1 0/0 0/0 .data TRK_ISR_OFFSETS */ -static u32 TRK_ISR_OFFSETS[15 + 1 /* padding */] = { - 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0x700, 0x800, 0x900, 0xC00, 0xD00, 0xF00, 0x1300, - 0x1400, 0x1700, - /* padding */ - 0}; +static u32 TRK_ISR_OFFSETS[15] = {PPC_SystemReset, + PPC_MachineCheck, + PPC_DataStorage, + PPC_InstructionStorage, + PPC_ExternalInterrupt, + PPC_Alignment, + PPC_Program, + PPC_FloatingPointUnavaiable, + PPC_Decrementer, + PPC_SystemCall, + PPC_Trace, + PPC_PerformanceMonitor, + PPC_InstructionAddressBreakpoint, + PPC_SystemManagementInterrupt, + PPC_ThermalManagementInterrupt}; -/* 803719F8-80371B24 36C338 012C+00 0/0 1/1 0/0 .text __TRK_copy_vectors */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __TRK_copy_vectors() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/__TRK_copy_vectors.s" +/* 80371B7C-80371B9C 36C4BC 0020+00 0/0 1/1 0/0 .text EnableMetroTRKInterrupts */ +void EnableMetroTRKInterrupts(void) { + EnableEXI2Interrupts(); } -#pragma pop /* 80371B24-80371B7C 36C464 0058+00 0/0 1/1 0/0 .text TRKTargetTranslate */ u32 TRKTargetTranslate(u32 param_0) { @@ -124,7 +46,290 @@ u32 TRKTargetTranslate(u32 param_0) { return param_0 & 0x3FFFFFFF | 0x80000000; } -/* 80371B7C-80371B9C 36C4BC 0020+00 0/0 1/1 0/0 .text EnableMetroTRKInterrupts */ -void EnableMetroTRKInterrupts() { - EnableEXI2Interrupts(); +extern u8 __TRK_unknown_data[]; + +void TRK_copy_vector(u32 offset) { + void* destPtr = (void*)TRKTargetTranslate(offset); + TRK_memcpy(destPtr, (void*)(__TRK_unknown_data + offset), 0x100); + TRK_flush_cache(destPtr, 0x100); +} + +/* 803719F8-80371B24 36C338 012C+00 0/0 1/1 0/0 .text __TRK_copy_vectors */ +void __TRK_copy_vectors(void) { + u32 r3 = lc_base; + u32* isrOffsetPtr; + int i; + u32 r29; + + if (r3 <= 0x44 && r3 + 0x4000 > 0x44 && gTRKCPUState.Extended1.DBAT3U & 3) { + r3 = 0x44; + } else { + r3 = EXCEPTIONMASK_ADDR; + } + + i = 0; + r29 = *(u32*)r3; + isrOffsetPtr = TRK_ISR_OFFSETS; + + do { + if ((r29 & (1 << i)) && i != 4) { + TRK_copy_vector(isrOffsetPtr[i]); + } + + i++; + } while (i <= 14); +} + +/* 803719AC-803719F8 36C2EC 004C+00 0/0 1/1 0/0 .text TRKInitializeTarget */ +DSError TRKInitializeTarget() { + gTRKState.isStopped = TRUE; + gTRKState.msr = __TRK_get_MSR(); + lc_base = 0xE0000000; + return DS_NoError; +} + +#define __dcbi(a, b) asm { dcbi a, b } +#define __dcbfASM(a, b) asm { dcbf a, b } + +/* 80371878-803719AC 36C1B8 0134+00 0/0 1/1 0/0 .text TRK__read_aram */ +void TRK__read_aram(register int c, register u32 p2, void* p3) { + u32 err; + int i; + register int counter; + u16 r; + u32 g; + u32 x; + u32 size; + + if ((size_t)p2 < 0x4000 || p2 + *(u32*)p3 > 0x8000000) { + return; + } + + x = p2 & ~0x1F; + size = *(u32*)p3 + (p2 & 0x1F); + size = OSRoundUp32B(size); + counter = 0; + + for (i = 0; i < size; i += 0x20) { + __dcbi(counter, c); + counter += 0x20; + } + + do { + err = ARGetDMAStatus(); + } while (err); + + r = __ARGetInterruptStatus(); + g = 0x8000000; + __ARClearInterrupt(); + + ARStartDMA(1, c, x, size); + + while (!__ARGetInterruptStatus()) { + } + + if (!r) { + __ARClearInterrupt(); + } +} + +/* 8037168C-80371878 36BFCC 01EC+00 0/0 1/1 0/0 .text TRK__write_aram */ +void TRK__write_aram(register int c, register u32 p2, void* p3) { + u8 buff[32] ALIGN_DECL(32); + u32 err; + register int count = c; + register u32 bf; + u32 uVar1; + u32 size; + u16 r; + register u32 g; + register int counter; + u32 i; + + if ((size_t)p2 < 0x4000 || p2 + *(u32*)p3 > 0x8000000) { + return; + } + + uVar1 = p2 & ~0x1f; + counter = 0; + size = *(u32*)p3 + (p2 & 0x1f); + size = OSRoundUp32B(size); + + for (i = 0; i < size; i += 0x20) { + __dcbf((void*)counter, count); + counter += 0x20; + } + + do { + err = ARGetDMAStatus(); + } while (err); + + r = __ARGetInterruptStatus(); + g = 0x8000000; + + counter = p2 & 0x1f; + if (counter) { + g = uVar1; + bf = (u32)buff; + __dcbi(r0, bf); + __ARClearInterrupt(); + + ARStartDMA(1, bf, uVar1, 0x20); + + while (!__ARGetInterruptStatus()) { + } + + TRK_memcpy((void*)c, buff, counter); + __dcbfASM(r0, c); + } + + p2 += *(u32*)p3; + counter = p2 & 0x1f; + if (counter) { + u32 val = p2 & ~0x1F; + if (val != g) { + bf = (u32)buff; + __dcbi(r0, bf); + __ARClearInterrupt(); + ARStartDMA(1, bf, val, 0x20); + + while (!__ARGetInterruptStatus()) { + } + } + g = c + p2; + TRK_memcpy((void*)g, (void*)(buff + counter), 0x20 - counter); + + __dcbfASM(r0, g); + } + __sync(); + __ARClearInterrupt(); + ARStartDMA(0, c, uVar1, size); + if (!r) { + while (!__ARGetInterruptStatus()) { + } + + __ARClearInterrupt(); + } +} + +/* 80371560-803715F8 36BEA0 0098+00 0/0 1/1 0/0 .text InitMetroTRK */ +asm void InitMetroTRK() { + // clang-format off + nofralloc + addi r1, r1, -4 + stw r3, 0(r1) + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + stmw r0, ProcessorState_PPC.Default.GPR(r3) //Save the gprs + lwz r4, 0(r1) + addi r1, r1, 4 + stw r1, ProcessorState_PPC.Default.GPR[1](r3) + stw r4, ProcessorState_PPC.Default.GPR[3](r3) + mflr r4 + stw r4, ProcessorState_PPC.Default.LR(r3) + stw r4, ProcessorState_PPC.Default.PC(r3) + mfcr r4 + stw r4, ProcessorState_PPC.Default.CR(r3) + //??? + mfmsr r4 + ori r3, r4, (1 << (31 - 16)) + xori r3, r3, (1 << (31 - 16)) + mtmsr r3 + mtsrr1 r4 //Copy msr to srr1 + //Save misc registers to gTRKCPUState + bl TRKSaveExtended1Block + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + //Reset IABR and DABR + li r0, 0 + mtspr 0x3f2, r0 + mtspr 0x3f5, r0 + //Restore stack pointer + lis r1, 0x80459BC8@h + ori r1, r1, 0x80459BC8@l + mr r3, r5 + bl InitMetroTRKCommTable //Initialize comm table + /* + If InitMetroTRKCommTable returned 1 (failure), an invalid hardware + id or the id for GDEV was somehow passed. Since only BBA or NDEV + are supported, we return early. Otherwise, we proceed with + starting up TRK. + */ + cmpwi r3, 1 + bne initCommTableSuccess + /* + BUG: The code probably orginally reloaded gTRKCPUState here, but + as is it will read the returned value of InitMetroTRKCommTable + as a TRKCPUState struct pointer, causing the CPU to return to + a garbage code address. + */ + lwz r4, ProcessorState_PPC.Default.LR(r3) + mtlr r4 + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + blr +initCommTableSuccess: + b TRK_main //Jump to TRK_main + blr + // clang-format on +} + +/* 803715F8-8037168C 36BF38 0094+00 0/0 1/1 0/0 .text InitMetroTRK_BBA */ +asm void InitMetroTRK_BBA() { + // clang-format off + nofralloc + addi r1, r1, -4 + stw r3, 0(r1) + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + stmw r0, ProcessorState_PPC.Default.GPR(r3) //Save the gprs + lwz r4, 0(r1) + addi r1, r1, 4 + stw r1, ProcessorState_PPC.Default.GPR[1](r3) + stw r4, ProcessorState_PPC.Default.GPR[3](r3) + mflr r4 + stw r4, ProcessorState_PPC.Default.LR(r3) + stw r4, ProcessorState_PPC.Default.PC(r3) + mfcr r4 + stw r4, ProcessorState_PPC.Default.CR(r3) + //Turn on external interrupts + mfmsr r4 + ori r3, r4, (1 << (31 - 16)) + mtmsr r3 + mtsrr1 r4 //Copy original msr to srr1 + //Save misc registers to gTRKCPUState + bl TRKSaveExtended1Block + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + //Reset IABR and DABR + li r0, 0 + mtspr 0x3f2, r0 + mtspr 0x3f5, r0 + //Restore the stack pointer + lis r1, 0x80459BC8@h + ori r1, r1, 0x80459BC8@l + li r3, 2 + bl InitMetroTRKCommTable //Initialize comm table as BBA hardware + /* + If InitMetroTRKCommTable returned 1 (failure), something went wrong + or whatever reason. If everything goes as expected, we proceed with + starting up TRK. + */ + cmpwi r3, 1 + bne initCommTableSuccess + /* + BUG: The code probably orginally reloaded gTRKCPUState here, but + as is it will read the returned value of InitMetroTRKCommTable + as a TRKCPUState struct pointer, causing the CPU to return to + a garbage code address. + */ + lwz r4, ProcessorState_PPC.Default.LR(r3) + mtlr r4 + lmw r0, ProcessorState_PPC.Default.GPR(r3) + blr +initCommTableSuccess: + b TRK_main //Jump to TRK_main + blr + // clang-format on } diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c index 70929bdfce..2269755634 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c @@ -1,94 +1,140 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/dolphin_trk_glue -// - #include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" -#include "dol2asm.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/DDH_Stubs.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/GDEV_Stubs.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h" +#include "dolphin/base/PPCArch.h" +#include "trk.h" -// -// Forward References: -// - -static void TRKLoadContext(); -void TRKUARTInterruptHandler(); -void InitializeProgramEndTrap(); -void TRK_board_display(); -int TRKReadUARTN(void*, u32); -int TRKPollUART(); -void EnableEXI2Interrupts(); -int TRKInitializeIntDrivenUART(); -void InitMetroTRKCommTable(); -static void TRKEXICallBack(s16 param_0, OSContext* ctx); -SECTION_BSS extern u8 data_8044F828[8]; - -// -// External References: -// - -SECTION_INIT void TRK_memcpy(); -void PPCHalt(); -void DCFlushRange(); -void ICInvalidateRange(); void TRKInterruptHandler(); -s32 udp_cc_post_stop(); -s32 udp_cc_pre_continue(); -u8 udp_cc_peek(); -u8 udp_cc_write(); -u8 udp_cc_read(); -s32 udp_cc_close(); -s32 udp_cc_open(); -s32 udp_cc_shutdown(); -s32 udp_cc_initialize(); -void ddh_cc_initinterrupts(); -void ddh_cc_peek(); -void ddh_cc_post_stop(); -void ddh_cc_pre_continue(); -void ddh_cc_write(); -void ddh_cc_read(); -u8 ddh_cc_close(); -void ddh_cc_open(); -u8 ddh_cc_shutdown(); -void ddh_cc_initialize(); -void gdev_cc_initinterrupts(); -void gdev_cc_peek(); -void gdev_cc_post_stop(); -void gdev_cc_pre_continue(); -void gdev_cc_write(); -void gdev_cc_read(); -u8 gdev_cc_close(); -void gdev_cc_open(); -u8 gdev_cc_shutdown(); -void gdev_cc_initialize(); -u8 AMC_IsStub(); -u8 Hu_IsStub(); -// -// Declarations: -// +/* 8044F824-8044F828 07C544 0004+00 0/0 0/0 0/0 .bss _MetroTRK_Has_Framing */ +BOOL _MetroTRK_Has_Framing; -/* 80371BF4-80371C7C 36C534 0088+00 1/1 0/0 0/0 .text TRKLoadContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKLoadContext() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKLoadContext.s" -} -#pragma pop +u8 TRK_Use_BBA; -/* 80371C7C-80371C80 36C5BC 0004+00 0/0 1/1 0/0 .text TRKUARTInterruptHandler */ -void TRKUARTInterruptHandler() { - /* empty function */ +/* 803D32A8-803D32D0 0303C8 0028+00 8/8 0/0 0/0 .data gDBCommTable */ +DBCommTable gDBCommTable = {}; + +/* 80372114-8037214C 36CA54 0038+00 1/1 0/0 0/0 .text TRKEXICallBack */ +void TRKEXICallBack(s16 param_0, OSContext* ctx) { + OSEnableScheduler(); + TRKLoadContext(ctx, 0x500); } -/* ############################################################################################## */ -/* 803A2C08-803A2C0C 02F268 0004+00 2/2 0/0 0/0 .rodata EndofProgramInstruction$162 */ -SECTION_RODATA static u32 const EndofProgramInstruction = 0x00454E44; // \0END -COMPILER_STRIP_GATE(0x803A2C08, &EndofProgramInstruction); +/* 80371EA8-80372114 36C7E8 026C+00 0/0 2/2 0/0 .text InitMetroTRKCommTable */ +int InitMetroTRKCommTable(int hwId) { + int result = 1; + OSReport("Devkit set to : %ld\n", hwId); + TRK_Use_BBA = 0; + + if (hwId == HARDWARE_BBA) { // BBA hardware + OSReport("MetroTRK : Set to BBA\n"); + // Initialize gDBCommTable + TRK_Use_BBA = 1; + gDBCommTable.initialize_func = udp_cc_initialize; + gDBCommTable.open_func = udp_cc_open; + gDBCommTable.close_func = udp_cc_close; + gDBCommTable.read_func = udp_cc_read; + gDBCommTable.write_func = udp_cc_write; + gDBCommTable.shutdown_func = udp_cc_shutdown; + gDBCommTable.peek_func = udp_cc_peek; + gDBCommTable.pre_continue_func = udp_cc_pre_continue; + gDBCommTable.post_stop_func = udp_cc_post_stop; + gDBCommTable.init_interrupts_func = NULL; + return 0; + } + + if (hwId == HARDWARE_GDEV) { // NDEV hardware + OSReport("MetroTRK : Set to GDEV hardware\n"); + // Initialize gDBCommTable + result = Hu_IsStub(); + gDBCommTable.initialize_func = gdev_cc_initialize; + gDBCommTable.open_func = gdev_cc_open; + gDBCommTable.close_func = gdev_cc_close; + gDBCommTable.read_func = gdev_cc_read; + gDBCommTable.write_func = gdev_cc_write; + gDBCommTable.shutdown_func = gdev_cc_shutdown; + gDBCommTable.peek_func = gdev_cc_peek; + gDBCommTable.pre_continue_func = gdev_cc_pre_continue; + gDBCommTable.post_stop_func = gdev_cc_post_stop; + gDBCommTable.init_interrupts_func = gdev_cc_initinterrupts; + + } else if (hwId == HARDWARE_AMC_DDH) { + OSReport("MetroTRK : Set to AMC DDH hardware\n"); + result = AMC_IsStub(); + // Initialize gDBCommTable + gDBCommTable.initialize_func = ddh_cc_initialize; + gDBCommTable.open_func = ddh_cc_open; + gDBCommTable.close_func = ddh_cc_close; + gDBCommTable.read_func = ddh_cc_read; + gDBCommTable.write_func = ddh_cc_write; + gDBCommTable.shutdown_func = ddh_cc_shutdown; + gDBCommTable.peek_func = ddh_cc_peek; + gDBCommTable.pre_continue_func = ddh_cc_pre_continue; + gDBCommTable.post_stop_func = ddh_cc_post_stop; + gDBCommTable.init_interrupts_func = ddh_cc_initinterrupts; + + } else { // unknown hardware + OSReport("MetroTRK : Set to UNKNOWN hardware. (%ld)\n", hwId); + OSReport("MetroTRK : Invalid hardware ID passed from OS\n"); + OSReport("MetroTRK : Defaulting to GDEV Hardware\n"); + } + + return result; +} + +/* 80371E58-80371EA8 36C798 0050+00 0/0 1/1 0/0 .text TRKInitializeIntDrivenUART */ +DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, void* param_3) { + gDBCommTable.initialize_func(param_3, TRKEXICallBack); + gDBCommTable.open_func(); + return DS_NoError; +} + +/* 80371E10-80371E58 36C750 0048+00 0/0 1/1 0/0 .text EnableEXI2Interrupts */ +void EnableEXI2Interrupts(void) { + if (!TRK_Use_BBA) { + if (gDBCommTable.init_interrupts_func != NULL) { + gDBCommTable.init_interrupts_func(); + } + } +} + +/* 80371DE0-80371E10 36C720 0030+00 0/0 1/1 0/0 .text TRKPollUART */ +int TRKPollUART(void) { + return gDBCommTable.peek_func(); +} + +/* 80371DA4-80371DE0 36C6E4 003C+00 0/0 1/1 0/0 .text TRKReadUARTN */ +UARTError TRKReadUARTN(void* bytes, u32 length) { + int readErr = gDBCommTable.read_func(bytes, length); + return ((-readErr | readErr) >> 31); +} + +/* 80371D68-80371DA4 36C6A8 003C+00 0/0 13/13 0/0 .text TRKWriteUARTN */ +UARTError TRKWriteUARTN(const void* bytes, u32 length) { + int writeErr = gDBCommTable.write_func(bytes, length); + return ((-writeErr | writeErr) >> 31); +} + +/* 80371D38-80371D68 36C678 0030+00 0/0 1/1 0/0 .text ReserveEXI2Port */ +void ReserveEXI2Port(void) { + gDBCommTable.post_stop_func(); +} + +/* 80371D08-80371D38 36C648 0030+00 0/0 1/1 0/0 .text UnreserveEXI2Port */ +void UnreserveEXI2Port(void) { + gDBCommTable.pre_continue_func(); +} + +/* 80371CD8-80371D08 36C618 0030+00 0/0 1/1 0/0 .text TRK_board_display */ +void TRK_board_display(char* str) { + OSReport("%s\n", str); +} /* 80371C80-80371CD8 36C5C0 0058+00 0/0 1/1 0/0 .text InitializeProgramEndTrap */ -void InitializeProgramEndTrap() { +DSError InitializeProgramEndTrap(void) { + static const u32 EndofProgramInstruction = 'END'; + u8* endOfProgramInstructionBytes = (u8*)&EndofProgramInstruction; u8* ppcHaltPtr = (u8*)PPCHalt; TRK_memcpy(ppcHaltPtr + 4, endOfProgramInstructionBytes, 4); @@ -96,142 +142,48 @@ void InitializeProgramEndTrap() { DCFlushRange(ppcHaltPtr + 4, 4); } -/* ############################################################################################## */ -/* 803A2C0C-803A2C10 02F26C 0004+00 1/1 0/0 0/0 .rodata @165 */ -SECTION_RODATA static char const lit_165[] = "%s\n"; -COMPILER_STRIP_GATE(0x803A2C0C, &lit_165); +/* 80371C7C-80371C80 36C5BC 0004+00 0/0 1/1 0/0 .text TRKUARTInterruptHandler */ +void TRKUARTInterruptHandler() {} -/* 80371CD8-80371D08 36C618 0030+00 0/0 1/1 0/0 .text TRK_board_display */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK_board_display() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRK_board_display.s" +/* 80371BF4-80371C7C 36C534 0088+00 1/1 0/0 0/0 .text TRKLoadContext */ +asm void TRKLoadContext(OSContext* ctx, u32) { + // clang-format off + nofralloc + lwz r0, OSContext.gpr[0](r3) + lwz r1, OSContext.gpr[1](r3) + lwz r2, OSContext.gpr[2](r3) + lhz r5, OSContext.state(r3) + rlwinm. r6, r5, 0, 0x1e, 0x1e + beq lbl_80371C1C + rlwinm r5, r5, 0, 0x1f, 0x1d + sth r5, OSContext.state(r3) + lmw r5, OSContext.gpr[5](r3) + b lbl_80371C20 +lbl_80371C1C: + lmw r13, OSContext.gpr[13](r3) +lbl_80371C20: + mr r31, r3 + mr r3, r4 + lwz r4, OSContext.cr(r31) + mtcrf 0xff, r4 + lwz r4, OSContext.lr(r31) + mtlr r4 + lwz r4, OSContext.ctr(r31) + mtctr r4 + lwz r4, OSContext.xer(r31) + mtxer r4 + mfmsr r4 + rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions + rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag + mtmsr r4 + mtsprg 1, r2 + lwz r4, OSContext.gpr[3](r31) + mtsprg 2, r4 + lwz r4, OSContext.gpr[4](r31) + mtsprg 3, r4 + lwz r2, OSContext.srr0(r31) + lwz r4, OSContext.srr1(r31) + lwz r31, OSContext.gpr[31](r31) + b TRKInterruptHandler + // clang-format on } -#pragma pop - -/* ############################################################################################## */ -/* 803D32A8-803D32D0 0303C8 0028+00 8/8 0/0 0/0 .data gDBCommTable */ -static DBCommTable gDBCommTable = {}; - -/* 80371D08-80371D38 36C648 0030+00 0/0 1/1 0/0 .text UnreserveEXI2Port */ -void UnreserveEXI2Port() { - gDBCommTable.pre_continue_func(); -} - -/* 80371D38-80371D68 36C678 0030+00 0/0 1/1 0/0 .text ReserveEXI2Port */ -void ReserveEXI2Port() { - gDBCommTable.post_stop_func(); -} - -/* 80371D68-80371DA4 36C6A8 003C+00 0/0 13/13 0/0 .text TRKWriteUARTN */ -s32 TRKWriteUARTN(const void* bytes, u32 length) { - int r3 = gDBCommTable.write_func(bytes, length); - return ((-r3 | r3)) >> 31; -} - -/* 80371DA4-80371DE0 36C6E4 003C+00 0/0 1/1 0/0 .text TRKReadUARTN */ -int TRKReadUARTN(void* bytes, u32 limit) { - int r3 = gDBCommTable.read_func(bytes, limit); - return ((-r3 | r3)) >> 31; -} - -/* 80371DE0-80371E10 36C720 0030+00 0/0 1/1 0/0 .text TRKPollUART */ -int TRKPollUART() { - return gDBCommTable.peek_func(); -} - -/* ############################################################################################## */ -/* 8044F820-8044F824 07C540 0004+00 2/2 0/0 0/0 .bss None */ -SECTION_BSS static u8 data_8044F820[4]; - -/* 80371E10-80371E58 36C750 0048+00 0/0 1/1 0/0 .text EnableEXI2Interrupts */ -void EnableEXI2Interrupts() { - if (!*data_8044F820) { - if (gDBCommTable.initinterrupts_func != NULL) { - gDBCommTable.initinterrupts_func(); - } - } -} - -/* 80371E58-80371EA8 36C798 0050+00 0/0 1/1 0/0 .text TRKInitializeIntDrivenUART */ -int TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, void* param_3) { - gDBCommTable.initialize_func(param_3, TRKEXICallBack); - gDBCommTable.open_func(); - return 0; -} - -/* ############################################################################################## */ -/* 803A2C10-803A2C28 02F270 0015+03 0/1 0/0 0/0 .rodata @215 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_215[] = "Devkit set to : %ld\n"; -COMPILER_STRIP_GATE(0x803A2C10, &lit_215); -#pragma pop - -/* 803A2C28-803A2C40 02F288 0017+01 0/1 0/0 0/0 .rodata @216 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_216[] = "MetroTRK : Set to BBA\n"; -COMPILER_STRIP_GATE(0x803A2C28, &lit_216); -#pragma pop - -/* 803A2C40-803A2C64 02F2A0 0021+03 0/1 0/0 0/0 .rodata @217 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_217[] = "MetroTRK : Set to GDEV hardware\n"; -COMPILER_STRIP_GATE(0x803A2C40, &lit_217); -#pragma pop - -/* 803A2C64-803A2C88 02F2C4 0024+00 0/1 0/0 0/0 .rodata @218 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_218[] = "MetroTRK : Set to AMC DDH hardware\n"; -COMPILER_STRIP_GATE(0x803A2C64, &lit_218); -#pragma pop - -/* 803A2C88-803A2CB4 02F2E8 002B+01 0/1 0/0 0/0 .rodata @219 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_219[] = "MetroTRK : Set to UNKNOWN hardware. (%ld)\n"; -COMPILER_STRIP_GATE(0x803A2C88, &lit_219); -#pragma pop - -/* 803A2CB4-803A2CE4 02F314 002F+01 0/1 0/0 0/0 .rodata @220 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_220[] = "MetroTRK : Invalid hardware ID passed from OS\n"; -COMPILER_STRIP_GATE(0x803A2CB4, &lit_220); -#pragma pop - -/* 803A2CE4-803A2D10 02F344 0028+04 0/1 0/0 0/0 .rodata @221 */ -#pragma push -#pragma force_active on -SECTION_RODATA static char const lit_221[] = "MetroTRK : Defaulting to GDEV Hardware\n"; -COMPILER_STRIP_GATE(0x803A2CE4, &lit_221); -#pragma pop - -/* 80371EA8-80372114 36C7E8 026C+00 0/0 2/2 0/0 .text InitMetroTRKCommTable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void InitMetroTRKCommTable() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/InitMetroTRKCommTable.s" -} -#pragma pop - -/* 80372114-8037214C 36CA54 0038+00 1/1 0/0 0/0 .text TRKEXICallBack */ -static void TRKEXICallBack(s16 param_0, OSContext* ctx) { - OSEnableScheduler(); - TRKLoadContext(ctx, 0x500); -} - -/* ############################################################################################## */ -/* 8044F828-8044F830 07C548 0008+00 0/0 2/2 0/0 .bss None */ -SECTION_BSS extern u8 data_8044F828[8]; -SECTION_BSS u8 data_8044F828[8]; - -/* 8044F824-8044F828 07C544 0004+00 0/0 0/0 0/0 .bss _MetroTRK_Has_Framing */ -SECTION_BSS /* static */ u8 _MetroTRK_Has_Framing[4]; diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c index 745655f7bf..9451a7d4e0 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c @@ -4,7 +4,7 @@ */ #include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" -// #include "dolphin/os/OS.h" +// #include "dolphin/os.h" // void OSReport(char* fmt, ...) causes extra crclr instruction. // look into issue later diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c index cb3ef2c816..e578303d18 100644 --- a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c +++ b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c @@ -1,73 +1,845 @@ -// -// Generated By: dol2asm -// Translation Unit: ppc/Generic/targimpl -// - #include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" -#include "dol2asm.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" +#include "trk.h" +typedef struct memRange { + u8* start; + u8* end; + BOOL readable; + BOOL writeable; +} memRange; + +const memRange gTRKMemMap[1] = {{(u8*)0, (u8*)-1, TRUE, TRUE}}; + +typedef struct StopInfo_PPC { + u32 PC; + u32 PCInstruction; + u16 exceptionID; +} StopInfo_PPC; + +typedef struct TRKExceptionStatus { + StopInfo_PPC exceptionInfo; + u8 inTRK; + u8 exceptionDetected; +} TRKExceptionStatus; + +typedef struct TRKStepStatus { + BOOL active; // 0x0 + DSMessageStepOptions type; // 0x4 + u32 count; // 0x8 + u32 rangeStart; // 0xC + u32 rangeEnd; // 0x10 +} TRKStepStatus; + +ProcessorRestoreFlags_PPC gTRKRestoreFlags = {FALSE, FALSE}; + +static TRKExceptionStatus gTRKExceptionStatus = {{0, 0, 0}, TRUE, 0}; + +static TRKStepStatus gTRKStepStatus = {FALSE, DSSTEP_IntoCount, 0, 0}; + +static u16 TRK_saved_exceptionID = 0; TRKState gTRKState; +Default_PPC gTRKSaveState; ProcessorState_PPC gTRKCPUState; -// -// Forward References: -// +typedef unsigned char u128[16]; +u128 TRKvalue128_temp; -void __TRK_get_MSR(); -void __TRK_set_MSR(); -static void TRK_ppc_memcpy(); -void TRKInterruptHandler(); -static void TRKExceptionHandler(); -static void TRKInterruptHandlerEnableInterrupts(); -static void ReadFPSCR(); -static void WriteFPSCR(); -void TRKTargetAccessARAM(); -void TRKTargetSetInputPendingPtr(); -u32 TRKTargetStop(); -u32 TRKTargetGetPC(); -void TRKTargetStepOutOfRange(); -void TRKTargetSingleStep(); -void TRKTargetAddExceptionInfo(); -void TRKTargetAddStopInfo(); -static void TRKPostInterruptEvent(); -void TRKTargetAccessExtended2(); -void TRKTargetAccessExtended1(); -void TRKTargetAccessFP(); -void TRKTargetAccessDefault(); -static void TRKTargetReadInstruction(); -void TRKTargetAccessMemory(); -static void TRKValidMemory32(); +// Instruction macros +#define INSTR_NOP 0x60000000 +#define INSTR_BLR 0x4E800020 +#define INSTR_PSQ_ST(psr, offset, rDest, w, gqr) \ + (0xF0000000 | (psr << 21) | (rDest << 16) | (w << 15) | (gqr << 12) | offset) +#define INSTR_PSQ_L(psr, offset, rSrc, w, gqr) \ + (0xE0000000 | (psr << 21) | (rSrc << 16) | (w << 15) | (gqr << 12) | offset) +#define INSTR_STW(rSrc, offset, rDest) (0x90000000 | (rSrc << 21) | (rDest << 16) | offset) +#define INSTR_LWZ(rDest, offset, rSrc) (0x80000000 | (rDest << 21) | (rSrc << 16) | offset) +#define INSTR_STFD(fprSrc, offset, rDest) (0xD8000000 | (fprSrc << 21) | (rDest << 16) | offset) +#define INSTR_LFD(fprDest, offset, rSrc) (0xC8000000 | (fprDest << 21) | (rSrc << 16) | offset) +#define INSTR_MFSPR(rDest, spr) \ + (0x7C000000 | (rDest << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) | 0x2A6) +#define INSTR_MTSPR(spr, rSrc) \ + (0x7C000000 | (rSrc << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) | 0x3A6) -// -// External References: -// +#define DSFetch_u32(_p_) (*((u32*)_p_)) +#define DSFetch_u64(_p_) (*((u64*)_p_)) + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read); +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read); +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read); +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read); +static void TRKExceptionHandler(u16); +void TRKInterruptHandlerEnableInterrupts(void); +void WriteFPSCR(register f64*); +void ReadFPSCR(register f64*); +void __TRK_set_MSR(register u32 msr); +u32 __TRK_get_MSR(); +void TRK_ppc_memcpy(register void* dest, register const void* src, register int n, + register u32 param_4, register u32 param_5); -SECTION_INIT void memset(); -void TRKReadBuffer_ui32(); -void TRKReadBuffer1_ui64(); -void TRKAppendBuffer_ui32(); -void TRKAppendBuffer_ui8(); -void TRKAppendBuffer1_ui64(); -void HandlePositionFileSupportRequest(); -void HandleCloseFileSupportRequest(); -void HandleOpenFileSupportRequest(); -void TRKSuppAccessFile(); -void TRKDoNotifyStopped(); -void TRK_flush_cache(); -void TRKSaveExtended1Block(); void TRKRestoreExtended1Block(); -void TRK__write_aram(); -void TRK__read_aram(); -void TRKTargetTranslate(); void TRKUARTInterruptHandler(); -void MWTRACE(); -// -// Declarations: -// +/* 80370F20-803711C4 36B860 02A4+00 1/1 0/0 0/0 .text TRKValidMemory32 */ +DSError TRKValidMemory32(const void* addr, size_t length, ValidMemoryOptions readWriteable) { + DSError err = DS_InvalidMemory; /* assume range is invalid */ + + const u8* start; + const u8* end; + + s32 i; + + /* + ** Get start and end addresses for the memory range and + ** verify that they are reasonable. + */ + + start = (const u8*)addr; + end = ((const u8*)addr + (length - 1)); + + if (end < start) + return DS_InvalidMemory; + + /* + ** Iterate through the gTRKMemMap array to determine if the requested + ** range falls within the valid ranges in the map. + */ + + for (i = 0; (i < (s32)(sizeof(gTRKMemMap) / sizeof(memRange))); i++) { + /* + ** If the requested range is not completely above + ** the valid range AND it is not completely below + ** the valid range then it must overlap somewhere. + ** If the requested range overlaps with one of the + ** valid ranges, do some additional checking. + ** + */ + + if ((start <= (const u8*)gTRKMemMap[i].end) && (end >= (const u8*)gTRKMemMap[i].start)) { + /* + ** First, verify that the read/write attributes are + ** acceptable. If so, then recursively check any + ** part of the requested range that falls before or + ** after the valid range. + */ + + if (((readWriteable == VALIDMEM_Readable) && !gTRKMemMap[i].readable) || + ((readWriteable == VALIDMEM_Writeable) && !gTRKMemMap[i].writeable)) + { + err = DS_InvalidMemory; + } else { + err = DS_NoError; + + /* + ** If a portion of the requested range falls before + ** the current valid range, then recursively + ** check it. + */ + + if (start < (const u8*)gTRKMemMap[i].start) + err = TRKValidMemory32(start, (u32)((const u8*)gTRKMemMap[i].start - start), + readWriteable); + + /* + ** If a portion of the requested range falls after + ** the current valid range, then recursively + ** check it. + ** Note: Only do this step if the previous check + ** did not detect invalid access. + */ + + if ((err == DS_NoError) && (end > (const u8*)gTRKMemMap[i].end)) + err = + TRKValidMemory32((const u8*)gTRKMemMap[i].end, + (u32)(end - (const u8*)gTRKMemMap[i].end), readWriteable); + } + + break; + } + } + + return err; +} + +/* 80370DD4-80370F20 36B714 014C+00 1/1 2/2 0/0 .text TRKTargetAccessMemory */ +DSError TRKTargetAccessMemory(void* data, u32 start, size_t* length, + MemoryAccessOptions accessOptions, BOOL read) { + DSError error; + u32 uVar5; + void* addr; + u32 param4; + TRKExceptionStatus tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + addr = (void*)TRKTargetTranslate(start); + error = TRKValidMemory32(addr, *length, read == FALSE); + + if (error != DS_NoError) { + *length = 0; + } else { + uVar5 = __TRK_get_MSR(); + param4 = uVar5 | gTRKCPUState.Extended1.MSR & 0x10; + + if (read) { + TRK_ppc_memcpy(data, addr, *length, uVar5, param4); + } else { + TRK_ppc_memcpy(addr, data, *length, param4, uVar5); + TRK_flush_cache((u32)addr, *length); + if ((void*)start != addr) { + TRK_flush_cache(start, *length); + } + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *length = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +/* 80370D88-80370DD4 36B6C8 004C+00 3/3 0/0 0/0 .text TRKTargetReadInstruction */ +DSError TRKTargetReadInstruction(void* data, u32 start) { + DSError error; + size_t registersLength = 4; + + error = TRKTargetAccessMemory(data, start, ®istersLength, MEMACCESS_UserMemory, TRUE); + + if (error == DS_NoError && registersLength != 4) { + error = DS_InvalidMemory; + } + + return error; +} + +/* 80370C94-80370D88 36B5D4 00F4+00 0/0 2/2 0/0 .text TRKTargetAccessDefault */ +DSError TRKTargetAccessDefault(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read) { + DSError error; + u32 count; + u32* data; + TRKExceptionStatus tempExceptionStatus; + + if (lastRegister > 0x24) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + data = gTRKCPUState.Default.GPR + firstRegister; + count = (lastRegister - firstRegister) + 1; + *registersLengthPtr = count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + error = TRKReadBuffer_ui32(b, data, count); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +/* 80370788-80370C94 36B0C8 050C+00 0/0 2/2 0/0 .text TRKTargetAccessFP */ +DSError TRKTargetAccessFP(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read) { + u64 temp; + DSError error; + TRKExceptionStatus tempExceptionStatus; + u32 current; + + if (lastRegister > 0x21) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + __TRK_set_MSR(__TRK_get_MSR() | 0x2000); + + *registersLengthPtr = 0; + error = DS_NoError; + + for (current = firstRegister; (current <= lastRegister) && (error == DS_NoError); + current++, *registersLengthPtr += sizeof(f64)) + { + if (read) { + TRKPPCAccessFPRegister(&temp, current, read); + error = TRKAppendBuffer1_ui64(b, temp); + } else { + TRKReadBuffer1_ui64(b, &temp); + error = TRKPPCAccessFPRegister(&temp, current, read); + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +/* 80370618-80370788 36AF58 0170+00 0/0 2/2 0/0 .text TRKTargetAccessExtended1 */ +DSError TRKTargetAccessExtended1(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read) { + TRKExceptionStatus tempExceptionStatus; + int error; + u32* data; + int count; + + if (lastRegister > 0x60) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + *registersLengthPtr = 0; + + if (firstRegister <= lastRegister) { + data = (u32*)&gTRKCPUState.Extended1 + firstRegister; + count = lastRegister - firstRegister + 1; + *registersLengthPtr += count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + if (data <= &gTRKCPUState.Extended1.TBU && + (data + count - 1) >= &gTRKCPUState.Extended1.TBL) + { + gTRKRestoreFlags.TBR = 1; + } + + if (data <= &gTRKCPUState.Extended1.DEC && + (data + count - 1) >= &gTRKCPUState.Extended1.DEC) + { + gTRKRestoreFlags.DEC = 1; + } + error = TRKReadBuffer_ui32(b, data, count); + } + } + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +/* 803701E0-80370618 36AB20 0438+00 0/0 2/2 0/0 .text TRKTargetAccessExtended2 */ +DSError TRKTargetAccessExtended2(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registerStorageSize, BOOL read) { + TRKExceptionStatus savedException; + u32 i; + u32 value_buf0[1]; + u32 value_buf[2]; + DSError err; + u32 access_func[10]; + + if (lastRegister > 0x1f) + return DS_InvalidRegister; + + /* + ** Save any existing exception status and clear the exception flag. + ** This allows detection of exceptions that occur ONLY within this + ** function. + */ + + savedException = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + TRKPPCAccessSPR(value_buf0, SPR_HID2, TRUE); + + value_buf0[0] |= 0xA0000000; + TRKPPCAccessSPR(value_buf0, SPR_HID2, FALSE); + + value_buf0[0] = 0; + TRKPPCAccessSPR(value_buf0, SPR_GQR0, FALSE); + + *registerStorageSize = 0; + err = DS_NoError; + + for (i = firstRegister; (i <= lastRegister) && (err == DS_NoError); i++) { + if (read) { + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + err = TRKAppendBuffer1_ui64(b, *(u64*)value_buf); + } else { + err = TRKReadBuffer1_ui64(b, (u64*)value_buf); + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + } + + *registerStorageSize += sizeof(u64); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registerStorageSize = 0; + err = DS_CWDSException; + } + + gTRKExceptionStatus = savedException; + + return err; +} + +/* 80370134-803701E0 36AA74 00AC+00 2/2 0/0 0/0 .text TRKPostInterruptEvent */ +void TRKPostInterruptEvent(void) { + int eventType; + int local_14; + size_t registerSize; + TRKEvent event; + + if (gTRKState.inputActivated) { + gTRKState.inputActivated = FALSE; + } else { + switch (gTRKCPUState.Extended1.exceptionID & 0xFFFF) { + case 0xd00: + case 0x700: + registerSize = 4; + TRKTargetReadInstruction(&local_14, gTRKCPUState.Default.PC); + + if (local_14 == 0xfe00000) { + eventType = NUBEVENT_Support; + } else { + eventType = NUBEVENT_Breakpoint; + } + break; + default: + eventType = NUBEVENT_Exception; + break; + } + + TRKConstructEvent(&event, eventType); + TRKPostEvent(&event); + } +} + +/* 8036FFA4-80370134 36A8E4 0190+00 0/0 1/1 0/0 .text TRKTargetInterrupt */ +DSError TRKTargetInterrupt(TRKEvent* event) { + DSError error = DS_NoError; + switch (event->eventType) { + case NUBEVENT_Breakpoint: + case NUBEVENT_Exception: + if (TRKTargetCheckStep() == FALSE) { + TRKTargetSetStopped(TRUE); + error = TRKDoNotifyStopped(DSMSG_NotifyStopped); + } + break; + default: + break; + } + + return error; +} + +/* 8036FF18-8036FFA4 36A858 008C+00 0/0 1/1 0/0 .text TRKTargetAddStopInfo */ +u32* ConvertAddress(u32 addr) { + return (u32*)(addr | 0x80000000); +} +DSError TRKTargetAddStopInfo(TRKBuffer* b) { + DSError error; + CommandReply reply; + int t; + + memset(&reply, 0, 0x40); + reply._00 = 0x40; + reply.commandID.b = 0x90; + reply.replyError.r = gTRKCPUState.Default.PC; + TRKTargetReadInstruction(&t, gTRKCPUState.Default.PC); + + reply._0C = t; + *(u32*)reply._10 = gTRKCPUState.Extended1.exceptionID & 0xFFFF; + error = TRKAppendBuffer_ui8(b, (u8*)&reply, 0x40); + return error; +} + +/* 8036FE94-8036FF18 36A7D4 0084+00 0/0 1/1 0/0 .text TRKTargetAddExceptionInfo */ +void TRKTargetAddExceptionInfo(TRKBuffer* b) { + size_t local_58; + u32 local_54; + CommandReply reply; + + memset(&reply, 0, 0x40); + + reply._00 = 0x40; + reply.commandID.b = 0x91; + reply.replyError.r = gTRKExceptionStatus.exceptionInfo.PC; + + TRKTargetReadInstruction(&local_54, gTRKExceptionStatus.exceptionInfo.PC); + + reply._0C = local_54; + *(u32*)reply._10 = gTRKExceptionStatus.exceptionInfo.exceptionID; + + TRKAppendBuffer_ui8(b, (u8*)&reply, 0x40); +} + +inline DSError TRKTargetEnableTrace(BOOL val) { + if (val) { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR | 0x400); + } else { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR & ~0x400); + } + return DS_NoError; +} + +BOOL TRKTargetStepDone() { + BOOL result = TRUE; + + if (gTRKStepStatus.active && ((u16)gTRKCPUState.Extended1.exceptionID) == PPC_Trace) { + switch (gTRKStepStatus.type) { + case DSSTEP_IntoCount: + if (gTRKStepStatus.count > 0) { + result = FALSE; + } + break; + case DSSTEP_IntoRange: + if (gTRKCPUState.Default.PC >= gTRKStepStatus.rangeStart && + gTRKCPUState.Default.PC <= gTRKStepStatus.rangeEnd) + { + result = FALSE; + } + break; + default: + break; + } + } + + return result; +} + +inline DSError TRKTargetDoStep() { + gTRKStepStatus.active = TRUE; + MWTRACE(1, "TargetDoStep()\n"); + TRKTargetEnableTrace(TRUE); + + if (gTRKStepStatus.type == DSSTEP_IntoCount || gTRKStepStatus.type == DSSTEP_OverCount) { + gTRKStepStatus.count--; + } + + TRKTargetSetStopped(FALSE); + return DS_NoError; +} + +static BOOL TRKTargetCheckStep() { + if (gTRKStepStatus.active) { + TRKTargetEnableTrace(FALSE); + + if (TRKTargetStepDone()) { + gTRKStepStatus.active = FALSE; + } else { + TRKTargetDoStep(); + } + } + + return gTRKStepStatus.active; +} + +/* 8036FDE8-8036FE94 36A728 00AC+00 0/0 1/1 0/0 .text TRKTargetSingleStep */ +DSError TRKTargetSingleStep(u32 count, BOOL stepOver) { + DSError error = DS_NoError; + + if (stepOver) { + error = DS_UnsupportedError; + } else { + gTRKStepStatus.count = count; + gTRKStepStatus.type = DSSTEP_IntoCount; + error = TRKTargetDoStep(); + } + + return error; +} + +/* 8036FD30-8036FDE8 36A670 00B8+00 0/0 1/1 0/0 .text TRKTargetStepOutOfRange */ +DSError TRKTargetStepOutOfRange(u32 rangeStart, u32 rangeEnd, BOOL stepOver) { + DSError error = DS_NoError; + + if (stepOver) { + // Stepping over isn't supported for PowerPC + error = DS_UnsupportedError; + } else { + gTRKStepStatus.type = DSSTEP_IntoRange; + // gTRKStepStatus.active = TRUE; + gTRKStepStatus.rangeStart = rangeStart; + gTRKStepStatus.rangeEnd = rangeEnd; + error = TRKTargetDoStep(); + } + + return error; +} + +/* 8036FD20-8036FD30 36A660 0010+00 0/0 1/1 0/0 .text TRKTargetGetPC */ +u32 TRKTargetGetPC() { + return gTRKCPUState.Default.PC; +} + +/* 8036FB20-8036FD20 36A460 0200+00 0/0 1/1 0/0 .text TRKTargetSupportRequest */ +DSError TRKTargetSupportRequest() { + DSIOResult ioResult; + size_t* length; + MessageCommandID commandId; + DSError error; + u32 local_28; + TRKEvent event; + + commandId = gTRKCPUState.Default.GPR[3]; + if (commandId != DSMSG_ReadFile && commandId != DSMSG_WriteFile && + commandId != DSMSG_OpenFile && commandId != DSMSG_CloseFile && + commandId != DSMSG_PositionFile) + { + TRKConstructEvent(&event, 4); + TRKPostEvent(&event); + return DS_NoError; + } else if (commandId == DSMSG_OpenFile) { + error = HandleOpenFileSupportRequest(gTRKCPUState.Default.GPR[4], + gTRKCPUState.Default.GPR[5] & 0xff, + gTRKCPUState.Default.GPR[6], &ioResult); + + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + + gTRKCPUState.Default.GPR[3] = ioResult; + } else if (commandId == DSMSG_CloseFile) { + error = HandleCloseFileSupportRequest(gTRKCPUState.Default.GPR[4], &ioResult); + + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + + gTRKCPUState.Default.GPR[3] = ioResult; + } else if (commandId == DSMSG_PositionFile) { + local_28 = *(u32*)gTRKCPUState.Default.GPR[5]; + error = HandlePositionFileSupportRequest(gTRKCPUState.Default.GPR[4], &local_28, + (u8)gTRKCPUState.Default.GPR[6], &ioResult); + + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + + gTRKCPUState.Default.GPR[3] = ioResult; + *(u32*)gTRKCPUState.Default.GPR[5] = local_28; + } else { + length = (size_t*)gTRKCPUState.Default.GPR[5]; + error = TRKSuppAccessFile(gTRKCPUState.Default.GPR[4], (u8*)gTRKCPUState.Default.GPR[6], + length, &ioResult, TRUE, commandId == DSMSG_ReadFile); + + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + + gTRKCPUState.Default.GPR[3] = ioResult; + + if (commandId == DSMSG_ReadFile) { + TRK_flush_cache(gTRKCPUState.Default.GPR[6], *length); + } + } + + gTRKCPUState.Default.PC += 4; + return error; +} + +/* 8036FB10-8036FB20 36A450 0010+00 0/0 3/3 0/0 .text TRKTargetStopped */ +BOOL TRKTargetStopped() { + return gTRKState.isStopped; +} + +/* 8036FB00-8036FB10 36A440 0010+00 0/0 1/1 0/0 .text TRKTargetSetStopped */ +void TRKTargetSetStopped(unsigned int stopped) { + gTRKState.isStopped = stopped; +} + +/* 8036FAE8-8036FB00 36A428 0018+00 0/0 1/1 0/0 .text TRKTargetStop */ +u32 TRKTargetStop() { + gTRKState.isStopped = TRUE; + return 0; +} + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read) { + /* Initialize instruction array with nop */ + + u32 access_func[10] = {INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP}; + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** read: + ** mfspr r4, spr_register_num + ** stw r4, 0(r3) + ** blr + ** + ** write: + ** lwz r4, 0(r3) + ** mtspr spr_register_num, r4 + ** blr + ** + */ + + if (read) { + access_func[0] = INSTR_MFSPR(4, spr_register_num); + access_func[1] = (u32)INSTR_STW(4, 0, 3); + } else { + access_func[0] = (u32)INSTR_LWZ(4, 0, 3); + access_func[1] = INSTR_MTSPR(spr_register_num, 4); + } + + return TRKPPCAccessSpecialReg(value, access_func, read); +} + +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read) { + // all nop by default + u32 instructionData[] = {INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP}; + + if (read) { + instructionData[0] = INSTR_PSQ_ST(psr, 0, 3, 0, 0); // psq_st psr, 0(r3), 0, 0 + } else { + instructionData[0] = INSTR_PSQ_L(psr, 0, 3, 0, 0); // psq_l psr, 0(r3), 0, 0 + } + + return TRKPPCAccessSpecialReg(srcDestPtr, instructionData, read); +} + +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read) { + DSError error = DS_NoError; + // all nop by default + u32 instructionData1[] = {INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP}; + + if (fpr < 0x20) { + if (read) { + instructionData1[0] = INSTR_STFD(fpr, 0, 3); // stfd fpr, 0(r3) + } else { + instructionData1[0] = INSTR_LFD(fpr, 0, 3); // lfd fpr, 0(r3) + } + + error = TRKPPCAccessSpecialReg(srcDestPtr, instructionData1, read); + } else if (fpr == 0x20) { + if (read) { + ReadFPSCR(srcDestPtr); + } else { + WriteFPSCR(srcDestPtr); + } + + *(u64*)srcDestPtr &= 0xFFFFFFFF; + } else if (fpr == 0x21) { + if (!read) { + *(u32*)srcDestPtr = *((u32*)(srcDestPtr) + 1); + } + + error = TRKPPCAccessSPR(srcDestPtr, SPR_FPECR, read); + if (read) { + DSFetch_u64(srcDestPtr) = DSFetch_u32(srcDestPtr) & 0xffffffffLL; + } + } + + return error; +} + +#define DEBUG_VECTORREG_ACCESS 0 + +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read) { +#if defined(__MWERKS__) +#pragma unused(read) +#elif defined(__GNUC__) + UNUSED(read); +#endif + + typedef void (*asm_access_type)(void*, void*); + + asm_access_type asm_access; + + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** + ** blr + */ + + /* + ** Put blr instruction at the end of access function (it should be + ** a 5-instruction array w/the last one empty). + */ + + access_func[9] = INSTR_BLR; + + /* + ** Now that the instruction array is built, get a function pointer to it. + */ + + asm_access = (asm_access_type)access_func; + +#if DEBUG_VECTORREG_ACCESS + + __puts("\r\nasm_access: "); + __puthex8((u32)asm_access); + __puts(" access_func: "); + __puthex8((u32)access_func); + + for (i = 0; i < 10; i++) { + __puts("\r\ninst["); + __puthex2(i); + __puts("]: "); + __puthex8(access_func[i]); + __puts(" ; "); + __puthex8(*((u32*)asm_access + i)); + } + + __puts("\r\n"); + +#endif + + // Flush cache + TRK_flush_cache((u32)access_func, (sizeof(access_func) * 10)); + (*asm_access)((u32*)value, (void*)&TRKvalue128_temp); + + return DS_NoError; +} + +/* 8036FAD8-8036FAE8 36A418 0010+00 0/0 1/1 0/0 .text TRKTargetSetInputPendingPtr */ +void TRKTargetSetInputPendingPtr(void* ptr) { + gTRKState.inputPendingPtr = ptr; +} + +/* 8036FA14-8036FAD8 36A354 00C4+00 0/0 2/2 0/0 .text TRKTargetAccessARAM */ +DSError TRKTargetAccessARAM(u32 p1, u32 p2, u32* p3, BOOL read) { + DSError err; + TRKExceptionStatus status; + + err = DS_NoError; + status = gTRKExceptionStatus; + + gTRKExceptionStatus.exceptionDetected = 0; + + if (read) { + TRK__read_aram(p1, p2, p3); + } else { + TRK__write_aram(p1, p2, p3); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *p3 = 0; + err = 0x702; + } + gTRKExceptionStatus = status; + return err; +} /* 8036F638-8036F640 -00001 0008+00 0/0 0/0 0/0 .text __TRK_get_MSR */ -asm void __TRK_get_MSR() { +asm u32 __TRK_get_MSR() { // clang-format off nofralloc mfmsr r3 @@ -85,322 +857,317 @@ asm void __TRK_set_MSR() { } /* 8036F648-8036F684 369F88 003C+00 1/1 0/0 0/0 .text TRK_ppc_memcpy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRK_ppc_memcpy() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRK_ppc_memcpy.s" +static asm void TRK_ppc_memcpy(register void* dest, register const void* src, register int n, + register u32 param_4, register u32 param_5) { + // clang-format off + #define msr r8 + #define byte r9 + #define count r10 + nofralloc + + mfmsr msr + li count, 0 + + top_loop: + cmpw count, n + beq out_loop + + mtmsr param_5 + sync + + lbzx byte, count, src + + mtmsr param_4 + sync + + stbx byte, count, dest + + addi count, count, 1 + + b top_loop + out_loop: + mtmsr msr + sync + + blr + #undef count + #undef byte + #undef msr + // clang-format on } -#pragma pop - -/* ############################################################################################## */ -/* 803D3238-803D3244 030358 0009+03 1/1 1/1 0/0 .data gTRKRestoreFlags */ -SECTION_DATA extern u8 gTRKRestoreFlags[9 + 3 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; - -/* 803D3244-803D3254 030364 0010+00 10/10 0/0 0/0 .data gTRKExceptionStatus */ -SECTION_DATA static u8 gTRKExceptionStatus[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -}; - -/* 8044F290-8044F294 07BFB0 0002+02 1/1 0/0 0/0 .bss TRK_saved_exceptionID */ -SECTION_BSS static s32 TRK_saved_exceptionID = 0; - -/* 8044F768-8044F7FC 07C488 0094+00 1/1 0/0 0/0 .bss gTRKSaveState */ -static u8 gTRKSaveState[148]; /* 8036F684-8036F818 369FC4 0194+00 0/0 1/1 0/0 .text TRKInterruptHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm void TRKInterruptHandler() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandler.s" + // clang-format off + nofralloc + mtsrr0 r2 + mtsrr1 r4 + mfsprg r4, 3 + mfcr r2 + mtsprg 3, r2 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.MSR(r2) + ori r2, r2, 0x8002 + xori r2, r2, 0x8002 + sync + mtmsr r2 + sync + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + sth r3, 0(r2) + cmpwi r3, 0x500 + bne L_802CF694 + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + mflr r3 + stw r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + bl TRKUARTInterruptHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lwz r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + mtlr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF678 + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 1 + beq L_802CF678 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b L_802CF694 +L_802CF678: + lis r2, gTRKSaveState@h + ori r2, r2, gTRKSaveState@l + lwz r3, Default_PPC.CR(r2) + mtcrf 0xff, r3 + lwz r3, Default_PPC.GPR[3](r2) + lwz r2, Default_PPC.GPR[2](r2) + rfi +L_802CF694: + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + lhz r3, 0(r2) + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 0 + bne TRKExceptionHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + stw r0, ProcessorState_PPC.Default.GPR[0](r2) + stw r1, ProcessorState_PPC.Default.GPR[1](r2) + mfsprg r0, 1 + stw r0, ProcessorState_PPC.Default.GPR[2](r2) + sth r3, ProcessorState_PPC.Extended1.exceptionID(r2) + sth r3, (ProcessorState_PPC.Extended1.exceptionID + 2)(r2) + mfsprg r0, 2 + stw r0, ProcessorState_PPC.Default.GPR[3](r2) + stmw r4, ProcessorState_PPC.Default.GPR[4](r2) + mfsrr0 r27 + mflr r28 + mfsprg r29, 3 + mfctr r30 + mfxer r31 + stmw r27, ProcessorState_PPC.Default.PC(r2) + bl TRKSaveExtended1Block + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 1 + stb r3, TRKExceptionStatus.inTRK(r2) + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent + // clang-format on } -#pragma pop /* 8036F818-8036F8B4 36A158 009C+00 1/1 0/0 0/0 .text TRKExceptionHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKExceptionHandler() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKExceptionHandler.s" +static asm void TRKExceptionHandler(u16) { + // clang-format off + nofralloc + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + sth r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + mfsrr0 r3 + stw r3, TRKExceptionStatus.exceptionInfo.PC(r2) + lhz r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + cmpwi r3, 0x200 + beq LAB_00010ba4 + cmpwi r3, 0x300 + beq LAB_00010ba4 + cmpwi r3, 0x400 + beq LAB_00010ba4 + cmpwi r3, 0x600 + beq LAB_00010ba4 + cmpwi r3, 0x700 + beq LAB_00010ba4 + cmpwi r3, 0x800 + beq LAB_00010ba4 + cmpwi r3, 0x1000 + beq LAB_00010ba4 + cmpwi r3, 0x1100 + beq LAB_00010ba4 + cmpwi r3, 0x1200 + beq LAB_00010ba4 + cmpwi r3, 0x1300 + beq LAB_00010ba4 + b LAB_00010bb0 +LAB_00010ba4: + mfsrr0 r3 + addi r3, r3, 0x4 + mtsrr0 r3 +LAB_00010bb0: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0x1 + stb r3, TRKExceptionStatus.exceptionDetected(r2) + mfsprg r3, 3 + mtcrf 0xff, r3 + mfsprg r2, 1 + mfsprg r3, 2 + rfi + // clang-format on } -#pragma pop /* 8036F8B4-8036F978 36A1F4 00C4+00 0/0 1/1 0/0 .text TRKSwapAndGo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm void TRKSwapAndGo() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKSwapAndGo.s" + // clang-format off + nofralloc + lis r3, gTRKState@h + ori r3, r3, gTRKState@l + stmw r0, TRKState_PPC.GPR[0](r3) + mfmsr r0 + stw r0, TRKState_PPC.MSR(r3) + mflr r0 + stw r0, TRKState_PPC.LR(r3) + mfctr r0 + stw r0, TRKState_PPC.CTR(r3) + mfxer r0 + stw r0, TRKState_PPC.XER(r3) + mfdsisr r0 + stw r0, TRKState_PPC.DSISR(r3) + mfdar r0 + stw r0, TRKState_PPC.DAR(r3) + li r1, -0x7ffe + nor r1, r1, r1 + mfmsr r3 + and r3, r3, r1 + mtmsr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF930 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b TRKInterruptHandlerEnableInterrupts +L_802CF930: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0 + stb r3, 0xc(r2) + bl TRKRestoreExtended1Block + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lmw r27, ProcessorState_PPC.Default.PC(r2) + mtsrr0 r27 + mtlr r28 + mtcrf 0xff, r29 + mtctr r30 + mtxer r31 + lmw r3, ProcessorState_PPC.Default.GPR[3](r2) + lwz r0, ProcessorState_PPC.Default.GPR[0](r2) + lwz r1, ProcessorState_PPC.Default.GPR[1](r2) + lwz r2, ProcessorState_PPC.Default.GPR[2](r2) + rfi + // clang-format on } -#pragma pop /* 8036F978-8036F9CC 36A2B8 0054+00 1/1 0/0 0/0 .text TRKInterruptHandlerEnableInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKInterruptHandlerEnableInterrupts() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKInterruptHandlerEnableInterrupts.s" +asm void TRKInterruptHandlerEnableInterrupts(void) { + // clang-format off + nofralloc; + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent + // clang-format on } -#pragma pop /* 8036F9CC-8036F9F0 36A30C 0024+00 1/1 0/0 0/0 .text ReadFPSCR */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ReadFPSCR() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/ReadFPSCR.s" +asm void ReadFPSCR(register f64*) { + // clang-format off + nofralloc + stwu r1, -0x40(r1) + stfd f31, 0x10(r1) + psq_st f31, 0x20(r1),0,0 + mffs f31 + stfd f31, 0x0(r3) + psq_l f31, 0x20(r1),0,0 + lfd f31, 0x10(r1) + addi r1, r1, 0x40 + blr + // clang-format on } -#pragma pop /* 8036F9F0-8036FA14 36A330 0024+00 1/1 0/0 0/0 .text WriteFPSCR */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void WriteFPSCR() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/WriteFPSCR.s" +asm void WriteFPSCR(register f64*) { + // clang-format off + nofralloc + stwu r1, -0x40(r1) + stfd f31, 0x10(r1) + psq_st f31, 0x20(r1), 0, 0 + lfd f31, 0(r3) + mtfsf 0xff, f31 + psq_l f31, 0x20(r1), 0, 0 + lfd f31, 0x10(r1) + addi r1, r1, 0x40 + blr + // clang-format on } -#pragma pop - -/* 8036FA14-8036FAD8 36A354 00C4+00 0/0 2/2 0/0 .text TRKTargetAccessARAM */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessARAM() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessARAM.s" -} -#pragma pop - -/* 8036FAD8-8036FAE8 36A418 0010+00 0/0 1/1 0/0 .text TRKTargetSetInputPendingPtr */ -void TRKTargetSetInputPendingPtr(void* ptr) { - gTRKState.inputPendingPtr = ptr; -} - -/* 8036FAE8-8036FB00 36A428 0018+00 0/0 1/1 0/0 .text TRKTargetStop */ -u32 TRKTargetStop() { - gTRKState.stopped = TRUE; - return 0; -} - -/* 8036FB00-8036FB10 36A440 0010+00 0/0 1/1 0/0 .text TRKTargetSetStopped */ -void TRKTargetSetStopped(s32 isStopped) { - gTRKState.stopped = isStopped; -} - -/* 8036FB10-8036FB20 36A450 0010+00 0/0 3/3 0/0 .text TRKTargetStopped */ -BOOL TRKTargetStopped() { - return gTRKState.stopped; -} - -/* 8036FB20-8036FD20 36A460 0200+00 0/0 1/1 0/0 .text TRKTargetSupportRequest */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm DSError TRKTargetSupportRequest() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSupportRequest.s" -} -#pragma pop - -/* 8036FD20-8036FD30 36A660 0010+00 0/0 1/1 0/0 .text TRKTargetGetPC */ -u32 TRKTargetGetPC() { - return gTRKCPUState.Default.PC; -} - -/* ############################################################################################## */ -/* 803A2B60-803A2B70 02F1C0 0010+00 1/1 0/0 0/0 .rodata gTRKMemMap */ -SECTION_RODATA static u8 const gTRKMemMap[16] = { - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x803A2B60, &gTRKMemMap); - -/* 803A2B70-803A2B98 02F1D0 0028+00 2/2 0/0 0/0 .rodata @276 */ -SECTION_RODATA static u8 const lit_276[40] = { - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2B70, &lit_276); - -/* 803A2B98-803A2BC0 02F1F8 0028+00 1/1 0/0 0/0 .rodata @283 */ -SECTION_RODATA static u8 const lit_283[40] = { - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2B98, &lit_283); - -/* 803A2BC0-803A2BE8 02F220 0028+00 1/1 0/0 0/0 .rodata @290 */ -SECTION_RODATA static u8 const lit_290[40] = { - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2BC0, &lit_290); - -/* 803A2BE8-803A2BF8 02F248 0010+00 3/3 0/0 0/0 .rodata @422 */ -SECTION_RODATA static char const lit_422[] = "TargetDoStep()\n"; -COMPILER_STRIP_GATE(0x803A2BE8, &lit_422); - -/* 803D3254-803D3268 030374 0014+00 3/3 0/0 0/0 .data gTRKStepStatus */ -SECTION_DATA static u8 gTRKStepStatus[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 8036FD30-8036FDE8 36A670 00B8+00 0/0 1/1 0/0 .text TRKTargetStepOutOfRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetStepOutOfRange() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetStepOutOfRange.s" -} -#pragma pop - -/* 8036FDE8-8036FE94 36A728 00AC+00 0/0 1/1 0/0 .text TRKTargetSingleStep */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetSingleStep() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSingleStep.s" -} -#pragma pop - -/* 8036FE94-8036FF18 36A7D4 0084+00 0/0 1/1 0/0 .text TRKTargetAddExceptionInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAddExceptionInfo() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddExceptionInfo.s" -} -#pragma pop - -/* 8036FF18-8036FFA4 36A858 008C+00 0/0 1/1 0/0 .text TRKTargetAddStopInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAddStopInfo() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAddStopInfo.s" -} -#pragma pop - -/* 8036FFA4-80370134 36A8E4 0190+00 0/0 1/1 0/0 .text TRKTargetInterrupt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm DSError TRKTargetInterrupt(TRKEvent*) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetInterrupt.s" -} -#pragma pop - -/* 80370134-803701E0 36AA74 00AC+00 2/2 0/0 0/0 .text TRKPostInterruptEvent */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKPostInterruptEvent() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKPostInterruptEvent.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8044F7FC-8044F810 07C51C 0010+04 2/2 0/0 0/0 .bss TRKvalue128_temp */ -static u8 TRKvalue128_temp[16 + 4 /* padding */]; - -/* 803701E0-80370618 36AB20 0438+00 0/0 2/2 0/0 .text TRKTargetAccessExtended2 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessExtended2() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended2.s" -} -#pragma pop - -/* 80370618-80370788 36AF58 0170+00 0/0 2/2 0/0 .text TRKTargetAccessExtended1 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessExtended1() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessExtended1.s" -} -#pragma pop - -/* 80370788-80370C94 36B0C8 050C+00 0/0 2/2 0/0 .text TRKTargetAccessFP */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessFP() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessFP.s" -} -#pragma pop - -/* 80370C94-80370D88 36B5D4 00F4+00 0/0 2/2 0/0 .text TRKTargetAccessDefault */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessDefault() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessDefault.s" -} -#pragma pop - -/* 80370D88-80370DD4 36B6C8 004C+00 3/3 0/0 0/0 .text TRKTargetReadInstruction */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKTargetReadInstruction() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetReadInstruction.s" -} -#pragma pop - -/* 80370DD4-80370F20 36B714 014C+00 1/1 2/2 0/0 .text TRKTargetAccessMemory */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetAccessMemory() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetAccessMemory.s" -} -#pragma pop - -/* 80370F20-803711C4 36B860 02A4+00 1/1 0/0 0/0 .text TRKValidMemory32 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TRKValidMemory32() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKValidMemory32.s" -} -#pragma pop diff --git a/libs/Z2AudioLib/Z2AudioMgr.cpp b/libs/Z2AudioLib/Z2AudioMgr.cpp index 227f868c05..d7c6138751 100644 --- a/libs/Z2AudioLib/Z2AudioMgr.cpp +++ b/libs/Z2AudioLib/Z2AudioMgr.cpp @@ -17,7 +17,7 @@ #include "stdio.h" #include "stdlib.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" // // Types: diff --git a/libs/Z2AudioLib/Z2LinkMgr.cpp b/libs/Z2AudioLib/Z2LinkMgr.cpp index 11fc245054..e1d3778c28 100644 --- a/libs/Z2AudioLib/Z2LinkMgr.cpp +++ b/libs/Z2AudioLib/Z2LinkMgr.cpp @@ -7,7 +7,7 @@ #include "Z2AudioLib/Z2Creature.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "global.h" // diff --git a/libs/Z2AudioLib/Z2SoundInfo.cpp b/libs/Z2AudioLib/Z2SoundInfo.cpp index 5e5267f9e6..c0e32f3708 100644 --- a/libs/Z2AudioLib/Z2SoundInfo.cpp +++ b/libs/Z2AudioLib/Z2SoundInfo.cpp @@ -13,7 +13,7 @@ #include "JSystem/JAudio2/JAUSoundTable.h" #include "JSystem/JUtility/JUTAssert.h" #include "dol2asm.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" // // Types: diff --git a/libs/Z2AudioLib/Z2WolfHowlMgr.cpp b/libs/Z2AudioLib/Z2WolfHowlMgr.cpp index 6b965835d9..f3d3a997fa 100644 --- a/libs/Z2AudioLib/Z2WolfHowlMgr.cpp +++ b/libs/Z2AudioLib/Z2WolfHowlMgr.cpp @@ -10,7 +10,7 @@ #include "Z2AudioLib/Z2SceneMgr.h" #include "Z2AudioLib/Z2SoundMgr.h" #include "Z2AudioLib/Z2Audience.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "d/d_demo.h" /* ############################################################################################## */ diff --git a/libs/dolphin/ai/ai.c b/libs/dolphin/ai/ai.c index 28698ed5f3..6f8033f38f 100644 --- a/libs/dolphin/ai/ai.c +++ b/libs/dolphin/ai/ai.c @@ -1,12 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: ai -// +#include "dolphin/ai.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" -#include "dolphin/ai/ai.h" -#include "dol2asm.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OS.h" +/* 80450A40-80450A48 -00001 0004+04 1/1 0/0 0/0 .sdata __AIVersion */ +char* __AIVersion = "<< Dolphin SDK - AI\trelease build: Apr 5 2004 04:15:02 (0x2301) >>"; void __AISHandler(s16 interrupt, OSContext* context); void __AIDHandler(s16 interrupt, OSContext* context); @@ -81,7 +78,7 @@ void AISetStreamPlayState(u32 state) { } /* 8034FE44-8034FE54 34A784 0010+00 1/1 0/0 0/0 .text AIGetStreamPlayState */ -inline u32 AIGetStreamPlayState(void) { +u32 AIGetStreamPlayState(void) { return __AIRegs[0] & 1; } @@ -177,14 +174,6 @@ u8 AIGetStreamVolRight(void) { return __AIRegs[1] >> 8; } -/* ############################################################################################## */ -/* 803D1BA0-803D1BE8 02ECC0 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = - "<< Dolphin SDK - AI\trelease build: Apr 5 2004 04:15:02 (0x2301) >>"; - -/* 80450A40-80450A48 -00001 0004+04 1/1 0/0 0/0 .sdata __AIVersion */ -SECTION_SDATA static const char* __AIVersion = lit_1; - /* 80451880-80451884 000D80 0004+00 3/3 0/0 0/0 .sbss __CallbackStack */ static u8* __CallbackStack; @@ -212,9 +201,13 @@ static OSTime max_wait; /* 804518B0-804518B4 000DB0 0004+00 2/2 0/0 0/0 .sbss buffer */ static OSTime buffer; -inline void AIResetStreamSampleCount(void) { __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; } +void AIResetStreamSampleCount(void) { + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; +} -inline void AISetStreamTrigger(u32 trigger) { __AIRegs[3] = trigger; } +void AISetStreamTrigger(u32 trigger) { + __AIRegs[3] = trigger; +} /* 80350084-803501F0 34A9C4 016C+00 0/0 1/1 0/0 .text AIInit */ void AIInit(u8* stack) { diff --git a/libs/dolphin/ar/Makefile b/libs/dolphin/ar/Makefile index c7f2dff314..9aa553218e 100644 --- a/libs/dolphin/ar/Makefile +++ b/libs/dolphin/ar/Makefile @@ -16,6 +16,7 @@ LIBAR_A_CFLAGS := \ -fp hard \ -nodefaults \ -str reuse \ + -inline auto \ -RTTI off \ -maxerrors 5 \ -enum int $(INCLUDES) \ diff --git a/libs/dolphin/ar/ar.c b/libs/dolphin/ar/ar.c index 73e78a47d9..b3bd3bf341 100644 --- a/libs/dolphin/ar/ar.c +++ b/libs/dolphin/ar/ar.c @@ -1,21 +1,16 @@ -// -// Generated By: dol2asm -// Translation Unit: ar -// - -#include "dolphin/ar/ar.h" -#include "string.h" -#include "dol2asm.h" +#include "dolphin/ar.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OS.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" +#include "string.h" + +/* 80450A48-80450A50 -00001 0004+04 1/1 0/0 0/0 .sdata __ARVersion */ +char* __ARVersion = "<< Dolphin SDK - AR\trelease build: Apr 5 2004 04:15:03 (0x2301) >>"; void __ARHandler(s16 interrupt, OSContext* context); void __ARClearInterrupt(); -u16 __ARGetInterruptStatus(); void __ARChecksize(); -/* ############################################################################################## */ /* 804518B8-804518BC 000DB8 0004+00 3/3 0/0 0/0 .sbss __AR_Callback */ static ARCallback __AR_Callback; @@ -91,14 +86,6 @@ u32 ARAlloc(u32 length) { return tmp; } -/* ############################################################################################## */ -/* 803D1BE8-803D1C30 02ED08 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = - "<< Dolphin SDK - AR\trelease build: Apr 5 2004 04:15:03 (0x2301) >>"; - -/* 80450A48-80450A50 -00001 0004+04 1/1 0/0 0/0 .sdata __ARVersion */ -SECTION_SDATA static const char* __ARVersion = lit_1; - /* 804518D4-804518D8 000DD4 0004+00 1/1 0/0 0/0 .sbss __AR_init_flag */ static volatile BOOL __AR_init_flag; @@ -164,206 +151,247 @@ static void __ARHandler(s16 interrupt, OSContext* context) { /* 80350870-80350890 34B1B0 0020+00 0/0 2/2 0/0 .text __ARClearInterrupt */ void __ARClearInterrupt(void) { - u16 tmp; - tmp = __DSPRegs[5]; - tmp = (u16)((tmp & ~(0x00000080 | 0x00000008)) | 0x00000020); - __DSPRegs[5] = tmp; + u16 tmp; + tmp = __DSPRegs[5]; + tmp = (u16)((tmp & ~(0x00000080 | 0x00000008)) | 0x00000020); + __DSPRegs[5] = tmp; } /* 80350890-803508A0 34B1D0 0010+00 0/0 2/2 0/0 .text __ARGetInterruptStatus */ -u16 __ARGetInterruptStatus(void) { +u16 __ARGetInterruptStatus(void) { return ((u16)(__DSPRegs[5] & 0x0020)); } -#define RoundUP32(x) (((u32)(x) + 32 - 1) & ~(32 - 1)) +void __ARWaitForDMA() { + while (__DSPRegs[DSP_CONTROL_STATUS] & 0x0200) { + } +} + +void __ARWriteDMA(u32 mmem_addr, u32 aram_addr, u32 length) { + // Main mem address + __DSPRegs[DSP_ARAM_DMA_MM_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_MM_HI] & ~0x03ff) | (u16)(mmem_addr >> 16)); + __DSPRegs[DSP_ARAM_DMA_MM_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_MM_LO] & ~0xffe0) | (u16)(mmem_addr & 0xffff)); + + // ARAM address + __DSPRegs[DSP_ARAM_DMA_ARAM_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_ARAM_HI] & ~0x03ff) | (u16)(aram_addr >> 16)); + __DSPRegs[DSP_ARAM_DMA_ARAM_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_ARAM_LO] & ~0xffe0) | (u16)(aram_addr & 0xffff)); + + // DMA buffer size + __DSPRegs[DSP_ARAM_DMA_SIZE_HI] = (u16)(__DSPRegs[DSP_ARAM_DMA_SIZE_HI] & ~0x8000); + + __DSPRegs[DSP_ARAM_DMA_SIZE_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_SIZE_HI] & ~0x03ff) | (u16)(length >> 16)); + __DSPRegs[DSP_ARAM_DMA_SIZE_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_SIZE_LO] & ~0xffe0) | (u16)(length & 0xffff)); + + __ARWaitForDMA(); + + __ARClearInterrupt(); +} + +void __ARReadDMA(u32 mmem_addr, u32 aram_addr, u32 length) { + // Main mem address + __DSPRegs[DSP_ARAM_DMA_MM_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_MM_HI] & ~0x03ff) | (u16)(mmem_addr >> 16)); + __DSPRegs[DSP_ARAM_DMA_MM_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_MM_LO] & ~0xffe0) | (u16)(mmem_addr & 0xffff)); + + // ARAM address + __DSPRegs[DSP_ARAM_DMA_ARAM_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_ARAM_HI] & ~0x03ff) | (u16)(aram_addr >> 16)); + __DSPRegs[DSP_ARAM_DMA_ARAM_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_ARAM_LO] & ~0xffe0) | (u16)(aram_addr & 0xffff)); + + // DMA buffer size + __DSPRegs[DSP_ARAM_DMA_SIZE_HI] = (u16)(__DSPRegs[DSP_ARAM_DMA_SIZE_HI] | 0x8000); + + __DSPRegs[DSP_ARAM_DMA_SIZE_HI] = + (u16)((__DSPRegs[DSP_ARAM_DMA_SIZE_HI] & ~0x03ff) | (u16)(length >> 16)); + __DSPRegs[DSP_ARAM_DMA_SIZE_LO] = + (u16)((__DSPRegs[DSP_ARAM_DMA_SIZE_LO] & ~0xffe0) | (u16)(length & 0xffff)); + + __ARWaitForDMA(); + + __ARClearInterrupt(); +} /* 803508A0-80352094 34B1E0 17F4+00 1/1 0/0 0/0 .text __ARChecksize */ -#ifdef NONMATCHING -void __ARChecksize(void) { +void __ARChecksize() { + u8 test_data_pad[0x20 + 31]; + u8 dummy_data_pad[0x20 + 31]; + u8 buffer_pad[0x20 + 31]; - u8 test_data_pad[0x20 + 31]; - u8 dummy_data_pad[0x20 + 31]; - u8 buffer_pad[0x20 + 31]; + u8 save_pad_1[0x20 + 31]; + u8 save_pad_2[0x20 + 31]; + u8 save_pad_3[0x20 + 31]; + u8 save_pad_4[0x20 + 31]; + u8 save_pad_5[0x20 + 31]; - u8 save_pad_1[0x20 + 31]; - u8 save_pad_2[0x20 + 31]; - u8 save_pad_3[0x20 + 31]; - u8 save_pad_4[0x20 + 31]; - u8 save_pad_5[0x20 + 31]; + u32* test_data; + u32* dummy_data; + u32* buffer; + u32* save1; + u32* save2; + u32* save3; + u32* save4; + u32* save5; - u16 dspreg9; - u32* test_data; - u32* dummy_data; - u32* buffer; - u32* save1; - u32* save2; - u32* save3; - u32* save4; - u32* save5; + u16 ARAM_mode = 0; + u32 ARAM_size = 0; - u16 ARAM_mode = 0; - u32 ARAM_size = 0; + u32 i; - u32 i; + while (!(__DSPRegs[DSP_ARAM_MODE] & 1)) { + } - while (!(__DSPRegs[11] & 1)) - ; + ARAM_mode = 3; + ARAM_size = __AR_InternalSize = 0x1000000; + __DSPRegs[DSP_ARAM_SIZE] = (u16)((__DSPRegs[DSP_ARAM_SIZE] & ~(0x7 | 0x38)) | 0x20 | 2 | 1); - ARAM_mode = 3; - __DSPRegs[9] = (u16)((__DSPRegs[9] & ~(0x00000007 | 0x00000038)) | 0x20 | 2 | 1); - ARAM_size = __AR_InternalSize = 0x1000000; + test_data = (u32*)(OSRoundUp32B((u32)(test_data_pad))); + dummy_data = (u32*)(OSRoundUp32B((u32)(dummy_data_pad))); + buffer = (u32*)(OSRoundUp32B((u32)(buffer_pad))); - test_data = (u32*)(RoundUP32((u32)(test_data_pad))); - dummy_data = (u32*)(RoundUP32((u32)(dummy_data_pad))); - buffer = (u32*)(RoundUP32((u32)(buffer_pad))); + save1 = (u32*)(OSRoundUp32B((u32)(save_pad_1))); + save2 = (u32*)(OSRoundUp32B((u32)(save_pad_2))); + save3 = (u32*)(OSRoundUp32B((u32)(save_pad_3))); + save4 = (u32*)(OSRoundUp32B((u32)(save_pad_4))); + save5 = (u32*)(OSRoundUp32B((u32)(save_pad_5))); - save1 = (u32*)(RoundUP32((u32)(save_pad_1))); - save2 = (u32*)(RoundUP32((u32)(save_pad_2))); - save3 = (u32*)(RoundUP32((u32)(save_pad_3))); - save4 = (u32*)(RoundUP32((u32)(save_pad_4))); - save5 = (u32*)(RoundUP32((u32)(save_pad_5))); + for (i = 0; i < 8; i++) { + *(test_data + i) = 0xDEADBEEF; + *(dummy_data + i) = 0xBAD0BAD0; + } - for (i = 0; i < 8; i++) { - *(test_data + i) = 0xdeadbeef; - *(dummy_data + i) = 0xbad0bad0; - } + DCFlushRange((void*)test_data, 0x20); + DCFlushRange((void*)dummy_data, 0x20); - DCFlushRange((void*)test_data, 0x20); - DCFlushRange((void*)dummy_data, 0x20); + __AR_ExpansionSize = 0; - __AR_ExpansionSize = 0; - - DCInvalidateRange((void*)save1, 0x20); - __ARReadDMA((u32)save1, ARAM_size + 0, 0x20); - PPCSync(); - - __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); - - memset((void*)buffer, 0, 0x20); - DCFlushRange((void*)buffer, 0x20); - - __ARReadDMA((u32)buffer, ARAM_size + 0x0000000, 0x20); - PPCSync(); - - if (buffer[0] == test_data[0]) { - - DCInvalidateRange((void*)save2, 0x20); - __ARReadDMA((u32)save2, ARAM_size + 0x0200000, 0x20); + DCInvalidateRange((void*)save1, 0x20); + __ARReadDMA((u32)save1, ARAM_size + 0, 0x20); PPCSync(); - DCInvalidateRange((void*)save3, 0x20); - __ARReadDMA((u32)save3, ARAM_size + 0x1000000, 0x20); - PPCSync(); - - DCInvalidateRange((void*)save4, 0x20); - __ARReadDMA((u32)save4, ARAM_size + 0x0000200, 0x20); - PPCSync(); - - DCInvalidateRange((void*)save5, 0x20); - __ARReadDMA((u32)save5, ARAM_size + 0x0400000, 0x20); - PPCSync(); - - __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0200000, 0x20); - __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); memset((void*)buffer, 0, 0x20); DCFlushRange((void*)buffer, 0x20); - __ARReadDMA((u32)buffer, ARAM_size + 0x0200000, 0x20); + __ARReadDMA((u32)buffer, ARAM_size + 0x0000000, 0x20); PPCSync(); if (buffer[0] == test_data[0]) { - __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); + DCInvalidateRange((void*)save2, 0x20); + __ARReadDMA((u32)save2, ARAM_size + 0x0200000, 0x20); + PPCSync(); - ARAM_mode |= 0 << 1; - ARAM_size += 0x0200000; - __AR_ExpansionSize = 0x0200000; - } else { - __ARWriteDMA((u32)dummy_data, ARAM_size + 0x1000000, 0x20); + DCInvalidateRange((void*)save3, 0x20); + __ARReadDMA((u32)save3, ARAM_size + 0x1000000, 0x20); + PPCSync(); - __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); + DCInvalidateRange((void*)save4, 0x20); + __ARReadDMA((u32)save4, ARAM_size + 0x0000200, 0x20); + PPCSync(); - memset((void*)buffer, 0, 0x20); - DCFlushRange((void*)buffer, 0x20); + DCInvalidateRange((void*)save5, 0x20); + __ARReadDMA((u32)save5, ARAM_size + 0x0400000, 0x20); + PPCSync(); - __ARReadDMA((u32)buffer, ARAM_size + 0x1000000, 0x20); - PPCSync(); - - if (buffer[0] == test_data[0]) { - __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); - __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); - - ARAM_mode |= 4 << 1; - ARAM_size += 0x0400000; - __AR_ExpansionSize = 0x0400000; - } else { - __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0000200, 0x20); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0200000, 0x20); __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); memset((void*)buffer, 0, 0x20); DCFlushRange((void*)buffer, 0x20); - __ARReadDMA((u32)buffer, ARAM_size + 0x0000200, 0x20); + __ARReadDMA((u32)buffer, ARAM_size + 0x0200000, 0x20); PPCSync(); if (buffer[0] == test_data[0]) { - __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); - __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); - __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); + __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); - ARAM_mode |= 8 << 1; - ARAM_size += 0x0800000; - __AR_ExpansionSize = 0x0800000; + ARAM_mode |= 0 << 1; + ARAM_size += 0x0200000; + __AR_ExpansionSize = 0x0200000; } else { - __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0400000, 0x20); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x1000000, 0x20); - __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); + __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); - memset((void*)buffer, 0, 0x20); - DCFlushRange((void*)buffer, 0x20); + memset((void*)buffer, 0, 0x20); + DCFlushRange((void*)buffer, 0x20); - __ARReadDMA((u32)buffer, ARAM_size + 0x0400000, 0x20); - PPCSync(); + __ARReadDMA((u32)buffer, ARAM_size + 0x1000000, 0x20); + PPCSync(); - if (buffer[0] == test_data[0]) { - __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); - __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); - __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); - __ARWriteDMA((u32)save4, ARAM_size + 0x0000200, 0x20); + if (buffer[0] == test_data[0]) { + __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); + __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); - ARAM_mode |= 12 << 1; - ARAM_size += 0x1000000; - __AR_ExpansionSize = 0x1000000; - } else { - __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); - __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); - __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); - __ARWriteDMA((u32)save4, ARAM_size + 0x0000200, 0x20); - __ARWriteDMA((u32)save5, ARAM_size + 0x0400000, 0x20); + ARAM_mode |= 4 << 1; + ARAM_size += 0x0400000; + __AR_ExpansionSize = 0x0400000; + } else { + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0000200, 0x20); - ARAM_mode |= 16 << 1; - ARAM_size += 0x2000000; - __AR_ExpansionSize = 0x2000000; - } + __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); + + memset((void*)buffer, 0, 0x20); + DCFlushRange((void*)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0000200, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); + __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); + __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); + + ARAM_mode |= 8 << 1; + ARAM_size += 0x0800000; + __AR_ExpansionSize = 0x0800000; + } else { + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x0400000, 0x20); + + __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); + + memset((void*)buffer, 0, 0x20); + DCFlushRange((void*)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0400000, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); + __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); + __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); + __ARWriteDMA((u32)save4, ARAM_size + 0x0000200, 0x20); + + ARAM_mode |= 12 << 1; + ARAM_size += 0x1000000; + __AR_ExpansionSize = 0x1000000; + } else { + __ARWriteDMA((u32)save1, ARAM_size + 0x0000000, 0x20); + __ARWriteDMA((u32)save2, ARAM_size + 0x0200000, 0x20); + __ARWriteDMA((u32)save3, ARAM_size + 0x1000000, 0x20); + __ARWriteDMA((u32)save4, ARAM_size + 0x0000200, 0x20); + __ARWriteDMA((u32)save5, ARAM_size + 0x0400000, 0x20); + + ARAM_mode |= 16 << 1; + ARAM_size += 0x2000000; + __AR_ExpansionSize = 0x2000000; + } + } + } } - } + __DSPRegs[DSP_ARAM_SIZE] = (u16)((__DSPRegs[DSP_ARAM_SIZE] & ~(0x7 | 0x38)) | ARAM_mode); } - __DSPRegs[9] = (u16)((__DSPRegs[9] & ~(0x07 | 0x38)) | ARAM_mode); - } - *(u32*)OSPhysicalToUncached(0x00D0) = ARAM_size; + *(u32*)OSPhysicalToUncached(0x00D0) = ARAM_size; - __AR_Size = ARAM_size; + __AR_Size = ARAM_size; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ARChecksize() { - nofralloc -#include "asm/dolphin/ar/ar/__ARChecksize.s" -} -#pragma pop -#endif \ No newline at end of file diff --git a/libs/dolphin/ar/arq.c b/libs/dolphin/ar/arq.c index af59311505..7a149a12e1 100644 --- a/libs/dolphin/ar/arq.c +++ b/libs/dolphin/ar/arq.c @@ -1,26 +1,13 @@ -// -// Generated By: dol2asm -// Translation Unit: arq -// +#include "dolphin/arq.h" +#include "dolphin/ar.h" -#include "dolphin/ar/arq.h" -#include "dolphin/ar/ar.h" -#include "dolphin/types.h" - -// -// Forward References: -// +/* 803D1C30-803D1C78 02ED50 0045+03 1/0 0/0 0/0 .data @1 */ +char* __ARQVersion = "<< Dolphin SDK - ARQ\trelease build: Apr 5 2004 04:15:04 (0x2301) >>"; void __ARQServiceQueueLo(); void __ARQCallbackHack(); void __ARQInterruptServiceRoutine(); -void ARQInit(); -// -// Declarations: -// - -/* ############################################################################################## */ /* 804518D8-804518DC 000DD8 0004+00 3/3 0/0 0/0 .sbss __ARQRequestQueueHi */ static ARQRequest* __ARQRequestQueueHi; @@ -48,13 +35,9 @@ static ARQCallback __ARQCallbackLo; /* 804518F8-804518FC 000DF8 0004+00 2/2 0/0 0/0 .sbss __ARQChunkSize */ static u32 __ARQChunkSize; -/* 803D1C30-803D1C78 02ED50 0045+03 1/0 0/0 0/0 .data @1 */ -const char* __ARQVersion = "<< Dolphin SDK - ARQ\trelease build: Apr 5 2004 04:15:04 (0x2301) >>"; - /* 804518FC-80451900 000DFC 0004+00 1/1 0/0 0/0 .sbss __ARQ_init_flag */ static BOOL __ARQ_init_flag; - /* 80352094-80352194 34C9D4 0100+00 2/2 0/0 0/0 .text __ARQServiceQueueLo */ void __ARQServiceQueueLo(void) { if ((__ARQRequestPendingLo == NULL) && (__ARQRequestQueueLo)) { @@ -89,9 +72,7 @@ void __ARQServiceQueueLo(void) { } /* 80352194-80352198 34CAD4 0004+00 1/1 0/0 0/0 .text __ARQCallbackHack */ -void __ARQCallbackHack() { - /* empty function */ -} +void __ARQCallbackHack() {} /* 80352198-80352264 34CAD8 00CC+00 1/1 0/0 0/0 .text __ARQInterruptServiceRoutine */ void __ARQInterruptServiceRoutine(void) { diff --git a/libs/dolphin/base/PPCArch.c b/libs/dolphin/base/PPCArch.c index a3254d92ca..cabb248940 100644 --- a/libs/dolphin/base/PPCArch.c +++ b/libs/dolphin/base/PPCArch.c @@ -165,7 +165,7 @@ void PPCDisableSpeculation(void) { /* 80339DCC-80339DD4 -00001 0008+00 0/0 0/0 0/0 .text PPCSetFpNonIEEEMode */ asm void PPCSetFpNonIEEEMode() { nofralloc - mtfsb1 4*7+1 + mtfsb1 29 blr } // clang-format on diff --git a/libs/dolphin/card/CARDBios.c b/libs/dolphin/card/CARDBios.c index 4cb97e0a22..6106681bb9 100644 --- a/libs/dolphin/card/CARDBios.c +++ b/libs/dolphin/card/CARDBios.c @@ -1,41 +1,22 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDBios -// - -#include "dol2asm.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OS.h" - +#include "dolphin/card.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" #include "dolphin/card/CARDPriv.h" -// -// Forward References: -// -static s32 OnReset(s32); +/* 80450A60-80450A68 -00001 0004+04 1/1 0/0 0/0 .sdata __CARDVersion */ +char* __CARDVersion = "<< Dolphin SDK - CARD\trelease build: Apr 5 2004 04:15:35 (0x2301) >>"; + +static BOOL OnReset(BOOL); static void TimeoutHandler(OSAlarm* alarm, OSContext* context); static s32 Retry(s32 chan); static void UnlockedCallback(s32 chan, s32 result); -// -// External References: -// - -void DSPInit(); - -// -// Declarations: -// - /* 80352A30-80352A34 34D370 0004+00 0/0 5/5 0/0 .text __CARDDefaultApiCallback */ void __CARDDefaultApiCallback(s32 chan, s32 result) {} -/* ############################################################################################## */ /* 8044CDE0-8044CE00 079B00 0020+00 0/1 3/3 0/0 .bss __CARDDiskNone */ DVDDiskID __CARDDiskNone; -/* ############################################################################################## */ /* 8044CBC0-8044CDE0 0798E0 0220+00 16/16 27/27 0/0 .bss __CARDBlock */ CARDControl __CARDBlock[2]; @@ -99,7 +80,8 @@ void __CARDExiHandler(s32 chan, OSContext* context) { if ((result = (status & 0x18) ? CARD_RESULT_IOERROR : CARD_RESULT_READY) == CARD_RESULT_IOERROR && - --card->retry > 0) { + --card->retry > 0) + { result = Retry(chan); if (result >= 0) { return; @@ -186,21 +168,21 @@ s32 __CARDReadStatus(s32 chan, u8* status) { /* 80352F34-80353024 34D874 00F0+00 0/0 1/1 0/0 .text __CARDReadVendorID */ s32 __CARDReadVendorID(s32 chan, u16* vendorId) { - BOOL err; - u32 cmd; + BOOL err; + u32 cmd; - if (!EXISelect(chan, 0, 4)) { - return CARD_RESULT_NOCARD; - } + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } - cmd = 0x85000000; - err = FALSE; - err |= !EXIImm(chan, &cmd, 2, 1, NULL); - err |= !EXISync(chan); - err |= !EXIImm(chan, vendorId, 2, 0, NULL); - err |= !EXISync(chan); - err |= !EXIDeselect(chan); - return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; + cmd = 0x85000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 2, 1, NULL); + err |= !EXISync(chan); + err |= !EXIImm(chan, vendorId, 2, 0, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; } /* 80353024-803530D0 34D964 00AC+00 1/1 1/1 0/0 .text __CARDClearStatus */ @@ -245,7 +227,7 @@ static void TimeoutHandler(OSAlarm* alarm, OSContext* context) { } } -static inline void SetupTimeoutAlarm(CARDControl* card) { +static void SetupTimeoutAlarm(CARDControl* card) { OSCancelAlarm(&card->alarm); switch (card->cmd[0]) { case 0xF2: @@ -256,12 +238,12 @@ static inline void SetupTimeoutAlarm(CARDControl* card) { case 0xF4: if (card->pageSize > 0x80) { OSSetAlarm(&card->alarm, OSSecondsToTicks((OSTime)2) * (card->cBlock / 0x40), - TimeoutHandler); - break; + TimeoutHandler); + break; } case 0xF1: OSSetAlarm(&card->alarm, OSSecondsToTicks((OSTime)2) * (card->sectorSize / 0x2000), - TimeoutHandler); + TimeoutHandler); break; default: break; @@ -270,43 +252,45 @@ static inline void SetupTimeoutAlarm(CARDControl* card) { /* 80353174-80353414 34DAB4 02A0+00 2/2 0/0 0/0 .text Retry */ static s32 Retry(s32 chan) { - CARDControl* card; - card = &__CARDBlock[chan]; + CARDControl* card; + card = &__CARDBlock[chan]; - if (!EXISelect(chan, 0, 4)) { - EXIUnlock(chan); - return CARD_RESULT_NOCARD; - } + if (!EXISelect(chan, 0, 4)) { + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } - SetupTimeoutAlarm(card); + SetupTimeoutAlarm(card); - if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1)) { - EXIDeselect(chan); - EXIUnlock(chan); - return CARD_RESULT_NOCARD; - } + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1)) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } - if (card->cmd[0] == 0x52 && - !EXIImmEx(chan, (u8*)card->workArea + sizeof(CARDID), card->latency, 1)) { - EXIDeselect(chan); - EXIUnlock(chan); - return CARD_RESULT_NOCARD; - } + if (card->cmd[0] == 0x52 && + !EXIImmEx(chan, (u8*)card->workArea + sizeof(CARDID), card->latency, 1)) + { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } + + if (card->mode == 0xffffffff) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_READY; + } + + if (!EXIDma(chan, card->buffer, (s32)((card->cmd[0] == 0x52) ? 512 : card->pageSize), + card->mode, __CARDTxHandler)) + { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } - if (card->mode == 0xffffffff) { - EXIDeselect(chan); - EXIUnlock(chan); return CARD_RESULT_READY; - } - - if (!EXIDma(chan, card->buffer, (s32)((card->cmd[0] == 0x52) ? 512 : card->pageSize), card->mode, - __CARDTxHandler)) { - EXIDeselect(chan); - EXIUnlock(chan); - return CARD_RESULT_NOCARD; - } - - return CARD_RESULT_READY; } /* 80353414-80353524 34DD54 0110+00 1/1 0/0 0/0 .text UnlockedCallback */ @@ -360,26 +344,25 @@ static s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallba if (!card->attached) { result = CARD_RESULT_NOCARD; } else { - if (txCallback) { - card->txCallback = txCallback; + card->txCallback = txCallback; } if (exiCallback) { - card->exiCallback = exiCallback; + card->exiCallback = exiCallback; } card->unlockCallback = UnlockedCallback; if (!EXILock(chan, 0, __CARDUnlockedHandler)) { - result = CARD_RESULT_BUSY; + result = CARD_RESULT_BUSY; } else { - card->unlockCallback = 0; + card->unlockCallback = 0; - if (!EXISelect(chan, 0, 4)) { - EXIUnlock(chan); - result = CARD_RESULT_NOCARD; - } else { - SetupTimeoutAlarm(card); - result = CARD_RESULT_READY; - } + if (!EXISelect(chan, 0, 4)) { + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } else { + SetupTimeoutAlarm(card); + result = CARD_RESULT_READY; + } } } @@ -391,7 +374,7 @@ static s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallba #define AD1EX(x) ((u8)(AD1(x) | 0x80)); #define AD2(x) ((u8)(((x) >> 9) & 0xff)) #define AD3(x) ((u8)(((x) >> 7) & 0x03)) -#define BA(x) ((u8)((x)&0x7f)) +#define BA(x) ((u8)((x) & 0x7f)) /* 80353748-8035387C 34E088 0134+00 0/0 2/2 0/0 .text __CARDReadSegment */ s32 __CARDReadSegment(s32 chan, CARDCallback callback) { @@ -415,7 +398,8 @@ s32 __CARDReadSegment(s32 chan, CARDCallback callback) { if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) || !EXIImmEx(chan, (u8*)card->workArea + sizeof(CARDID), card->latency, 1) || // XXX use DMA if possible - !EXIDma(chan, card->buffer, 512, card->mode, __CARDTxHandler)) { + !EXIDma(chan, card->buffer, 512, card->mode, __CARDTxHandler)) + { card->txCallback = 0; EXIDeselect(chan); EXIUnlock(chan); @@ -453,7 +437,8 @@ s32 __CARDWritePage(s32 chan, CARDCallback callback) { result = CARD_RESULT_READY; } else if (result >= 0) { if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) || - !EXIDma(chan, card->buffer, card->pageSize, card->mode, __CARDTxHandler)) { + !EXIDma(chan, card->buffer, card->pageSize, card->mode, __CARDTxHandler)) + { card->exiCallback = 0; EXIDeselect(chan); EXIUnlock(chan); @@ -502,22 +487,14 @@ s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback) { return result; } -/* ############################################################################################## */ -/* 803D1E38-803D1E80 02EF58 0046+02 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = - "<< Dolphin SDK - CARD\trelease build: Apr 5 2004 04:15:35 (0x2301) >>"; - /* 803D1E80-803D1EA0 -00001 0010+10 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static OSResetFunctionInfo ResetFunctionInfo = { +static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 127, NULL, NULL, }; -/* 80450A60-80450A68 -00001 0004+04 1/1 0/0 0/0 .sdata __CARDVersion */ -SECTION_SDATA static const char* __CARDVersion = lit_1; - /* 80451918-80451920 -00001 0004+04 3/3 0/0 0/0 .sbss None */ /* 80451918 0002+00 data_80451918 __CARDEncode */ static u16 __CARDEncode; @@ -605,43 +582,42 @@ s32 __CARDPutControlBlock(CARDControl* card, s32 result) { /* 80353CD0-80353E20 34E610 0150+00 0/0 1/1 0/0 .text CARDFreeBlocks */ s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed) { - CARDControl* card; - s32 result; - u16* fat; - CARDDir* dir; - CARDDir* ent; - u16 fileNo; + CARDControl* card; + s32 result; + u16* fat; + CARDDir* dir; + CARDDir* ent; + u16 fileNo; - result = __CARDGetControlBlock(chan, &card); - if (result < 0) { - return result; - } - - fat = __CARDGetFatBlock(card); - dir = __CARDGetDirBlock(card); - if (fat == 0 || dir == 0) { - return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); - } - - if (byteNotUsed) { - *byteNotUsed = (s32)(card->sectorSize * fat[CARD_FAT_FREEBLOCKS]); - } - - if (filesNotUsed) { - *filesNotUsed = 0; - for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { - ent = &dir[fileNo]; - if (ent->fileName[0] == 0xff) { - ++*filesNotUsed; - } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; } - } - return __CARDPutControlBlock(card, CARD_RESULT_READY); + fat = __CARDGetFatBlock(card); + dir = __CARDGetDirBlock(card); + if (fat == 0 || dir == 0) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + + if (byteNotUsed) { + *byteNotUsed = (s32)(card->sectorSize * fat[CARD_FAT_FREEBLOCKS]); + } + + if (filesNotUsed) { + *filesNotUsed = 0; + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + if (ent->fileName[0] == 0xff) { + ++*filesNotUsed; + } + } + } + + return __CARDPutControlBlock(card, CARD_RESULT_READY); } -s32 CARDGetResultCode(s32 chan) -{ +s32 CARDGetResultCode(s32 chan) { CARDControl* card; if (chan < 0 || chan >= 2) { return CARD_RESULT_FATAL_ERROR; @@ -666,7 +642,7 @@ s32 __CARDSync(s32 chan) { } /* 80353EB8-80353F08 34E7F8 0050+00 1/0 0/0 0/0 .text OnReset */ -static s32 OnReset(s32 f) { +static BOOL OnReset(BOOL f) { if (!f) { if (CARDUnmount(0) == CARD_RESULT_BUSY || CARDUnmount(1) == CARD_RESULT_BUSY) { return FALSE; diff --git a/libs/dolphin/card/CARDBlock.c b/libs/dolphin/card/CARDBlock.c index 82146d5424..b14da4f73c 100644 --- a/libs/dolphin/card/CARDBlock.c +++ b/libs/dolphin/card/CARDBlock.c @@ -1,25 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDBlock -// #include "dolphin/card/CARDBlock.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" -// -// Forward References: -// - static void WriteCallback(s32 chan, s32 result); static void EraseCallback(s32 chan, s32 result); -// -// Declarations: -// - /* 80355414-8035541C 34FD54 0008+00 0/0 5/5 0/0 .text __CARDGetFatBlock */ u16* __CARDGetFatBlock(CARDControl* card) { return card->currentFat; @@ -60,35 +46,35 @@ static void WriteCallback(s32 chan, s32 result) { /* 803554F0-803555B8 34FE30 00C8+00 1/1 0/0 0/0 .text EraseCallback */ static void EraseCallback(s32 chan, s32 result) { - CARDControl* card; - CARDCallback callback; - u32 temp[2]; /* this compiler sucks */ - u16* fat; - u32 addr; + CARDControl* card; + CARDCallback callback; + u32 temp[2]; /* this compiler sucks */ + u16* fat; + u32 addr; - card = &__CARDBlock[chan]; - if (result < 0) { - goto error; - } + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } - fat = __CARDGetFatBlock(card); - addr = ((u32)fat - (u32)card->workArea) / CARD_SYSTEM_BLOCK_SIZE * card->sectorSize; - result = __CARDWrite(chan, addr, CARD_SYSTEM_BLOCK_SIZE, fat, WriteCallback); - if (result < 0) { - goto error; - } + fat = __CARDGetFatBlock(card); + addr = ((u32)fat - (u32)card->workArea) / CARD_SYSTEM_BLOCK_SIZE * card->sectorSize; + result = __CARDWrite(chan, addr, CARD_SYSTEM_BLOCK_SIZE, fat, WriteCallback); + if (result < 0) { + goto error; + } - return; + return; error: - if (card->apiCallback == NULL) { - __CARDPutControlBlock(card, result); - } - callback = card->eraseCallback; - if (callback) { - card->eraseCallback = NULL; - callback(chan, result); - } + if (card->apiCallback == NULL) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = NULL; + callback(chan, result); + } } /* 803555B8-803556D0 34FEF8 0118+00 0/0 1/1 0/0 .text __CARDAllocBlock */ @@ -143,14 +129,14 @@ s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback) { /* 803556D0-8035577C 350010 00AC+00 1/1 1/1 0/0 .text __CARDUpdateFatBlock */ s32 __CARDUpdateFatBlock(s32 chan, u16* fat, CARDCallback callback) { - CARDControl* card; + CARDControl* card; - card = &__CARDBlock[chan]; - ++fat[2]; - __CARDCheckSum(fat + 2, 0x1FFC, fat, fat + 1); - DCStoreRange(fat, 0x2000); - card->eraseCallback = callback; + card = &__CARDBlock[chan]; + ++fat[2]; + __CARDCheckSum(fat + 2, 0x1FFC, fat, fat + 1); + DCStoreRange(fat, 0x2000); + card->eraseCallback = callback; - return __CARDEraseSector(chan, (((u32)fat - (u32)card->workArea) / 8192u) * card->sectorSize, - EraseCallback); + return __CARDEraseSector(chan, (((u32)fat - (u32)card->workArea) / 8192u) * card->sectorSize, + EraseCallback); } diff --git a/libs/dolphin/card/CARDCheck.c b/libs/dolphin/card/CARDCheck.c index f56fd0907b..8c1226147d 100644 --- a/libs/dolphin/card/CARDCheck.c +++ b/libs/dolphin/card/CARDCheck.c @@ -1,33 +1,13 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDCheck -// - #include "dolphin/card/CARDCheck.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OSRtc.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" +#include "dolphin/os/OSRtc.h" static s32 VerifyID(CARDControl* card); static s32 VerifyDir(CARDControl* card, int* outCurrent); static s32 VerifyFAT(CARDControl* card, int* outCurrent); -// -// External References: -// - -void __shr2i(); - -// -// Declarations: -// - /* 803559E0-80355B90 350320 01B0+00 0/0 3/3 0/0 .text __CARDCheckSum */ void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv) { u16* p; @@ -52,141 +32,141 @@ void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv) { /* 80355B90-80355E14 3504D0 0284+00 2/2 0/0 0/0 .text VerifyID */ static s32 VerifyID(CARDControl* card) { - CARDID* id; - u16 checksum; - u16 checksumInv; - OSSramEx* sramEx; - OSTime rand; - int i; + CARDID* id; + u16 checksum; + u16 checksumInv; + OSSramEx* sramEx; + OSTime rand; + int i; - id = card->workArea; + id = card->workArea; - if (id->deviceID != 0 || id->size != card->size) { - return CARD_RESULT_BROKEN; - } - - __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &checksum, &checksumInv); - if (id->checkSum != checksum || id->checkSumInv != checksumInv) { - return CARD_RESULT_BROKEN; - } - - rand = *(OSTime*)&id->serial[12]; - sramEx = __OSLockSramEx(); - - for (i = 0; i < 12; i++) { - rand = (rand * 1103515245 + 12345) >> 16; - if (id->serial[i] != (u8)(sramEx->flashID[card - __CARDBlock][i] + rand)) { - __OSUnlockSramEx(FALSE); - return CARD_RESULT_BROKEN; + if (id->deviceID != 0 || id->size != card->size) { + return CARD_RESULT_BROKEN; } - rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; - } - __OSUnlockSramEx(FALSE); - if (id->encode != __CARDGetFontEncode()) { - return CARD_RESULT_ENCODING; - } + __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &checksum, &checksumInv); + if (id->checkSum != checksum || id->checkSumInv != checksumInv) { + return CARD_RESULT_BROKEN; + } - return CARD_RESULT_READY; + rand = *(OSTime*)&id->serial[12]; + sramEx = __OSLockSramEx(); + + for (i = 0; i < 12; i++) { + rand = (rand * 1103515245 + 12345) >> 16; + if (id->serial[i] != (u8)(sramEx->flashID[card - __CARDBlock][i] + rand)) { + __OSUnlockSramEx(FALSE); + return CARD_RESULT_BROKEN; + } + rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; + } + + __OSUnlockSramEx(FALSE); + if (id->encode != __CARDGetFontEncode()) { + return CARD_RESULT_ENCODING; + } + + return CARD_RESULT_READY; } /* 80355E14-80356054 350754 0240+00 2/2 0/0 0/0 .text VerifyDir */ static s32 VerifyDir(CARDControl* card, int* outCurrent) { - CARDDir* dir[2]; - CARDDirCheck* check[2]; - u16 checkSum; - u16 checkSumInv; - int i; - int errors; - int current; + CARDDir* dir[2]; + CARDDirCheck* check[2]; + u16 checkSum; + u16 checkSumInv; + int i; + int errors; + int current; - current = errors = 0; - for (i = 0; i < 2; i++) { - dir[i] = (CARDDir*)((u8*)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); - check[i] = __CARDGetDirCheck(dir[i]); - __CARDCheckSum(dir[i], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, &checkSumInv); - if (check[i]->checkSum != checkSum || check[i]->checkSumInv != checkSumInv) { - ++errors; - current = i; - card->currentDir = 0; + current = errors = 0; + for (i = 0; i < 2; i++) { + dir[i] = (CARDDir*)((u8*)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); + check[i] = __CARDGetDirCheck(dir[i]); + __CARDCheckSum(dir[i], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, &checkSumInv); + if (check[i]->checkSum != checkSum || check[i]->checkSumInv != checkSumInv) { + ++errors; + current = i; + card->currentDir = 0; + } } - } - if (0 == errors) { - if (card->currentDir == 0) { - if ((check[0]->checkCode - check[1]->checkCode) < 0) { - current = 0; - } else { - current = 1; - } - card->currentDir = dir[current]; - memcpy(dir[current], dir[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); - } else { - current = (card->currentDir == dir[0]) ? 0 : 1; + if (0 == errors) { + if (card->currentDir == 0) { + if ((check[0]->checkCode - check[1]->checkCode) < 0) { + current = 0; + } else { + current = 1; + } + card->currentDir = dir[current]; + memcpy(dir[current], dir[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); + } else { + current = (card->currentDir == dir[0]) ? 0 : 1; + } } - } - if (outCurrent) { - *outCurrent = current; - } - return errors; + if (outCurrent) { + *outCurrent = current; + } + return errors; } /* 80356054-803562D8 350994 0284+00 2/2 0/0 0/0 .text VerifyFAT */ static s32 VerifyFAT(CARDControl* card, int* outCurrent) { - u16* fat[2]; - u16* fatp; - u16 nBlock; - u16 cFree; - int i; - u16 checkSum; - u16 checkSumInv; - int errors; - int current; + u16* fat[2]; + u16* fatp; + u16 nBlock; + u16 cFree; + int i; + u16 checkSum; + u16 checkSumInv; + int errors; + int current; - current = errors = 0; - for (i = 0; i < 2; i++) { - fatp = fat[i] = (u16*)((u8*)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); + current = errors = 0; + for (i = 0; i < 2; i++) { + fatp = fat[i] = (u16*)((u8*)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); - __CARDCheckSum(&fatp[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, - &checkSumInv); - if (fatp[CARD_FAT_CHECKSUM] != checkSum || fatp[CARD_FAT_CHECKSUMINV] != checkSumInv) { - ++errors; - current = i; - card->currentFat = 0; - continue; + __CARDCheckSum(&fatp[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, + &checkSumInv); + if (fatp[CARD_FAT_CHECKSUM] != checkSum || fatp[CARD_FAT_CHECKSUMINV] != checkSumInv) { + ++errors; + current = i; + card->currentFat = 0; + continue; + } + + cFree = 0; + for (nBlock = CARD_NUM_SYSTEM_BLOCK; nBlock < card->cBlock; nBlock++) { + if (fatp[nBlock] == CARD_FAT_AVAIL) { + cFree++; + } + } + if (cFree != fatp[CARD_FAT_FREEBLOCKS]) { + ++errors; + current = i; + card->currentFat = 0; + continue; + } } - cFree = 0; - for (nBlock = CARD_NUM_SYSTEM_BLOCK; nBlock < card->cBlock; nBlock++) { - if (fatp[nBlock] == CARD_FAT_AVAIL) { - cFree++; - } + if (0 == errors) { + if (card->currentFat == 0) { + if (((s16)fat[0][CARD_FAT_CHECKCODE] - (s16)fat[1][CARD_FAT_CHECKCODE]) < 0) { + current = 0; + } else { + current = 1; + } + card->currentFat = fat[current]; + memcpy(fat[current], fat[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); + } else { + current = (card->currentFat == fat[0]) ? 0 : 1; + } } - if (cFree != fatp[CARD_FAT_FREEBLOCKS]) { - ++errors; - current = i; - card->currentFat = 0; - continue; + if (outCurrent) { + *outCurrent = current; } - } - - if (0 == errors) { - if (card->currentFat == 0) { - if (((s16)fat[0][CARD_FAT_CHECKCODE] - (s16)fat[1][CARD_FAT_CHECKCODE]) < 0) { - current = 0; - } else { - current = 1; - } - card->currentFat = fat[current]; - memcpy(fat[current], fat[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); - } else { - current = (card->currentFat == fat[0]) ? 0 : 1; - } - } - if (outCurrent) { - *outCurrent = current; - } - return errors; + return errors; } /* 803562D8-80356364 350C18 008C+00 0/0 1/1 0/0 .text __CARDVerify */ @@ -282,7 +262,8 @@ s32 CARDCheckExAsync(s32 chan, s32* xferBytes, CARDCallback callback) { } for (iBlock = ent->startBlock, cBlock = 0; iBlock != 0xFFFF && cBlock < ent->length; - iBlock = card->currentFat[iBlock], ++cBlock) { + iBlock = card->currentFat[iBlock], ++cBlock) + { if (!CARDIsValidBlockNo(card, iBlock) || 1 < ++map[iBlock]) { return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); } diff --git a/libs/dolphin/card/CARDCreate.c b/libs/dolphin/card/CARDCreate.c index 9ccb900edc..19afd307ad 100644 --- a/libs/dolphin/card/CARDCreate.c +++ b/libs/dolphin/card/CARDCreate.c @@ -1,14 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDCreate -// - #include "dolphin/card/CARDCreate.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/dvd/dvd.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" +#include "dolphin/dsp.h" +#include "dolphin/dvd.h" static void CreateCallbackFat(s32 chan, s32 result); @@ -93,7 +87,8 @@ s32 CARDCreateAsync(s32 chan, const char* fileName, u32 size, CARDFileInfo* file } } else if (memcmp(ent->gameName, card->diskID->game_name, sizeof(ent->gameName)) == 0 && memcmp(ent->company, card->diskID->company, sizeof(ent->company)) == 0 && - __CARDCompareFileName(ent, fileName)) { + __CARDCompareFileName(ent, fileName)) + { return __CARDPutControlBlock(card, CARD_RESULT_EXIST); } } diff --git a/libs/dolphin/card/CARDDir.c b/libs/dolphin/card/CARDDir.c index 748e70f4ef..0df040bb43 100644 --- a/libs/dolphin/card/CARDDir.c +++ b/libs/dolphin/card/CARDDir.c @@ -1,21 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDDir -// - #include "dolphin/card/CARDDir.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" +#include "dolphin/dsp.h" static void WriteCallback(s32 chan, s32 result); static void EraseCallback(s32 chan, s32 result); -// -// Declarations: -// - /* 8035577C-80355784 3500BC 0008+00 0/0 10/10 0/0 .text __CARDGetDirBlock */ CARDDir* __CARDGetDirBlock(CARDControl* card) { return card->currentDir; diff --git a/libs/dolphin/card/CARDFormat.c b/libs/dolphin/card/CARDFormat.c index e014ae2604..afba4c3f5f 100644 --- a/libs/dolphin/card/CARDFormat.c +++ b/libs/dolphin/card/CARDFormat.c @@ -1,32 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDFormat -// - #include "dolphin/card/CARDFormat.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OSRtc.h" -#include "dolphin/vi/vi.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" +#include "dolphin/os/OSRtc.h" +#include "dolphin/vi.h" static void FormatCallback(s32 chan, s32 result); -// -// External References: -// - -void __shr2i(); - -// -// Declarations: -// - /* 80357484-803575C8 351DC4 0144+00 1/1 0/0 0/0 .text FormatCallback */ static void FormatCallback(s32 chan, s32 result) { CARDControl* card; @@ -68,80 +48,80 @@ error: /* 803575C8-80357C20 351F08 0658+00 1/1 0/0 0/0 .text __CARDFormatRegionAsync */ s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback) { - CARDControl* card; - CARDID* id; - CARDDir* dir; - u16* fat; - s16 i; - s32 result; - OSSram* sram; - OSSramEx* sramEx; - u16 viDTVStatus; - OSTime time; - OSTime rand; + CARDControl* card; + CARDID* id; + CARDDir* dir; + u16* fat; + s16 i; + s32 result; + OSSram* sram; + OSSramEx* sramEx; + u16 viDTVStatus; + OSTime time; + OSTime rand; - result = __CARDGetControlBlock(chan, &card); - if (result < 0) { + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + id = (CARDID*)card->workArea; + memset(id, 0xff, CARD_SYSTEM_BLOCK_SIZE); + viDTVStatus = __VIRegs[55]; + + id->encode = encode; + + sram = __OSLockSram(); + *(u32*)&id->serial[20] = sram->counterBias; + *(u32*)&id->serial[24] = sram->language; + __OSUnlockSram(FALSE); + + rand = time = OSGetTime(); + + sramEx = __OSLockSramEx(); + for (i = 0; i < 12; i++) { + rand = (rand * 1103515245 + 12345) >> 16; + id->serial[i] = (u8)(sramEx->flashID[chan][i] + rand); + rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; + } + __OSUnlockSramEx(FALSE); + + *(u32*)&id->serial[28] = viDTVStatus; + *(OSTime*)&id->serial[12] = time; + + id->deviceID = 0; + id->size = card->size; + __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &id->checkSum, &id->checkSumInv); + + for (i = 0; i < 2; i++) { + CARDDirCheck* check; + + dir = (CARDDir*)((u8*)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); + memset(dir, 0xff, CARD_SYSTEM_BLOCK_SIZE); + check = __CARDGetDirCheck(dir); + check->checkCode = i; + __CARDCheckSum(dir, CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &check->checkSum, + &check->checkSumInv); + } + for (i = 0; i < 2; i++) { + fat = (u16*)((u8*)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); + memset(fat, 0x00, CARD_SYSTEM_BLOCK_SIZE); + fat[CARD_FAT_CHECKCODE] = (u16)i; + fat[CARD_FAT_FREEBLOCKS] = (u16)(card->cBlock - CARD_NUM_SYSTEM_BLOCK); + fat[CARD_FAT_LASTSLOT] = CARD_NUM_SYSTEM_BLOCK - 1; + __CARDCheckSum(&fat[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), + &fat[CARD_FAT_CHECKSUM], &fat[CARD_FAT_CHECKSUMINV]); + } + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + DCStoreRange(card->workArea, CARD_WORKAREA_SIZE); + + card->formatStep = 0; + result = __CARDEraseSector(chan, (u32)card->sectorSize * card->formatStep, FormatCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } return result; - } - - id = (CARDID*)card->workArea; - memset(id, 0xff, CARD_SYSTEM_BLOCK_SIZE); - viDTVStatus = __VIRegs[55]; - - id->encode = encode; - - sram = __OSLockSram(); - *(u32*)&id->serial[20] = sram->counterBias; - *(u32*)&id->serial[24] = sram->language; - __OSUnlockSram(FALSE); - - rand = time = OSGetTime(); - - sramEx = __OSLockSramEx(); - for (i = 0; i < 12; i++) { - rand = (rand * 1103515245 + 12345) >> 16; - id->serial[i] = (u8)(sramEx->flashID[chan][i] + rand); - rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; - } - __OSUnlockSramEx(FALSE); - - *(u32*)&id->serial[28] = viDTVStatus; - *(OSTime*)&id->serial[12] = time; - - id->deviceID = 0; - id->size = card->size; - __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &id->checkSum, &id->checkSumInv); - - for (i = 0; i < 2; i++) { - CARDDirCheck* check; - - dir = (CARDDir*)((u8*)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); - memset(dir, 0xff, CARD_SYSTEM_BLOCK_SIZE); - check = __CARDGetDirCheck(dir); - check->checkCode = i; - __CARDCheckSum(dir, CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &check->checkSum, - &check->checkSumInv); - } - for (i = 0; i < 2; i++) { - fat = (u16*)((u8*)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); - memset(fat, 0x00, CARD_SYSTEM_BLOCK_SIZE); - fat[CARD_FAT_CHECKCODE] = (u16)i; - fat[CARD_FAT_FREEBLOCKS] = (u16)(card->cBlock - CARD_NUM_SYSTEM_BLOCK); - fat[CARD_FAT_LASTSLOT] = CARD_NUM_SYSTEM_BLOCK - 1; - __CARDCheckSum(&fat[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), - &fat[CARD_FAT_CHECKSUM], &fat[CARD_FAT_CHECKSUMINV]); - } - - card->apiCallback = callback ? callback : __CARDDefaultApiCallback; - DCStoreRange(card->workArea, CARD_WORKAREA_SIZE); - - card->formatStep = 0; - result = __CARDEraseSector(chan, (u32)card->sectorSize * card->formatStep, FormatCallback); - if (result < 0) { - __CARDPutControlBlock(card, result); - } - return result; } /* 80357C20-80357C74 352560 0054+00 0/0 1/1 0/0 .text CARDFormat */ diff --git a/libs/dolphin/card/CARDMount.c b/libs/dolphin/card/CARDMount.c index 473c740868..6e1643aedc 100644 --- a/libs/dolphin/card/CARDMount.c +++ b/libs/dolphin/card/CARDMount.c @@ -1,30 +1,15 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDMount -// - #include "dolphin/card/CARDMount.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" +#include "dolphin/card.h" +#include "dolphin/card/CARDPriv.h" +#include "dolphin/dsp.h" #include "dolphin/os/OSRtc.h" -#include "dolphin/card/CARDPriv.h" - u8 GameChoice : 0x800030E3; -// -// Forward References: -// - static BOOL IsCard(u32 id); static s32 DoMount(s32 chan); static void DoUnmount(s32 chan, s32 result); -// -// Declarations: -// - -/* ############################################################################################## */ /* 803D2000-803D2020 02F120 0020+00 3/3 0/0 0/0 .data SectorSizeTable */ static u32 SectorSizeTable[8] = { 8 * 1024, 16 * 1024, 32 * 1024, 64 * 1024, 128 * 1024, 256 * 1024, 0, 0, @@ -383,7 +368,7 @@ s32 CARDMount(s32 chan, void* workArea, CARDCallback attachCb) { } /* 8035733C-803573D8 351C7C 009C+00 2/2 0/0 0/0 .text DoUnmount */ -static inline void DoUnmount(s32 chan, s32 result) { +static void DoUnmount(s32 chan, s32 result) { CARDControl* card; BOOL enabled; diff --git a/libs/dolphin/card/CARDNet.c b/libs/dolphin/card/CARDNet.c index 5ad3e58738..afd89cb68f 100644 --- a/libs/dolphin/card/CARDNet.c +++ b/libs/dolphin/card/CARDNet.c @@ -1,13 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDNet -// - #include "dolphin/card/CARDNet.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" +#include "dolphin/dsp.h" /* 80450A70 0002+00 data_80450A70 __CARDVendorID */ u16 __CARDVendorID = 0xFFFF; diff --git a/libs/dolphin/card/CARDOpen.c b/libs/dolphin/card/CARDOpen.c index 86abc7d45a..f50687ecbc 100644 --- a/libs/dolphin/card/CARDOpen.c +++ b/libs/dolphin/card/CARDOpen.c @@ -1,18 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDOpen -// - #include "dolphin/card/CARDOpen.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/dvd/dvd.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Declarations: -// +#include "dolphin/dsp.h" +#include "dolphin/dvd.h" /* 80357C74-80357CDC 3525B4 0068+00 1/1 1/1 0/0 .text __CARDCompareFileName */ BOOL __CARDCompareFileName(CARDDir* ent, const char* fileName) { @@ -45,9 +35,9 @@ s32 __CARDAccess(CARDControl* card, CARDDir* ent) { return CARD_RESULT_NOFILE; } - if (diskId == &__CARDDiskNone || - (memcmp(ent->gameName, diskId->game_name, 4) == 0 && - memcmp(ent->company, diskId->company, 2) == 0)) { + if (diskId == &__CARDDiskNone || (memcmp(ent->gameName, diskId->game_name, 4) == 0 && + memcmp(ent->company, diskId->company, 2) == 0)) + { return CARD_RESULT_READY; } @@ -61,9 +51,9 @@ s32 __CARDIsWritable(CARDControl* card, CARDDir* ent) { u8 val; if ((u8)ent->gameName[0] == 0xFFu) { retVal = CARD_RESULT_NOFILE; - } else if (diskId == &__CARDDiskNone || - (memcmp(ent->gameName, diskId->game_name, 4) == 0 && - memcmp(ent->company, diskId->company, 2) == 0)) { + } else if (diskId == &__CARDDiskNone || (memcmp(ent->gameName, diskId->game_name, 4) == 0 && + memcmp(ent->company, diskId->company, 2) == 0)) + { retVal = CARD_RESULT_READY; } else { retVal = CARD_RESULT_NOPERM; @@ -72,11 +62,13 @@ s32 __CARDIsWritable(CARDControl* card, CARDDir* ent) { if (retVal == CARD_RESULT_NOPERM) { val = ent->permission & data_80450A72; if (val & 0x20u && (memcmp(ent->gameName, __CARDDiskNone.game_name, 4) == 0 && - memcmp(ent->company, __CARDDiskNone.company, 2) == 0)) { + memcmp(ent->company, __CARDDiskNone.company, 2) == 0)) + { return CARD_RESULT_READY; } else if (val & 0x40 && (memcmp(ent->gameName, __CARDDiskNone.game_name, 4) == 0 && - memcmp(ent->company, diskId->company, 2) == 0)) { - return CARD_RESULT_READY; + memcmp(ent->company, diskId->company, 2) == 0)) + { + return CARD_RESULT_READY; } } @@ -88,17 +80,19 @@ s32 __CARDIsReadable(CARDControl* card, CARDDir* ent) { u8 val; s32 retVal; const DVDDiskID* diskId = card->diskID; - + retVal = __CARDAccess(card, ent); if (retVal == CARD_RESULT_NOPERM) { val = ent->permission & data_80450A72; if (val & 0x20u && (memcmp(ent->gameName, __CARDDiskNone.game_name, 4) == 0 && - memcmp(ent->company, __CARDDiskNone.company, 2) == 0)) { + memcmp(ent->company, __CARDDiskNone.company, 2) == 0)) + { retVal = CARD_RESULT_READY; } else if (val & 0x40 && (memcmp(ent->gameName, __CARDDiskNone.game_name, 4) == 0 && - memcmp(ent->company, diskId->company, 2) == 0)) { - retVal = CARD_RESULT_READY; + memcmp(ent->company, diskId->company, 2) == 0)) + { + retVal = CARD_RESULT_READY; } } @@ -110,58 +104,58 @@ s32 __CARDIsReadable(CARDControl* card, CARDDir* ent) { } static inline s32 __CARDGetFileNo(CARDControl* card, const char* fileName, s32* pfileNo) { - CARDDir* dir; - CARDDir* ent; - s32 fileNo; - s32 result; + CARDDir* dir; + CARDDir* ent; + s32 fileNo; + s32 result; - if (!card->attached) { - return CARD_RESULT_NOCARD; - } - - dir = __CARDGetDirBlock(card); - for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { - ent = &dir[fileNo]; - result = __CARDAccess(card, ent); - if (result < 0) { - continue; + if (!card->attached) { + return CARD_RESULT_NOCARD; } - if (__CARDCompareFileName(ent, fileName)) { - *pfileNo = fileNo; - return CARD_RESULT_READY; - } - } - return CARD_RESULT_NOFILE; + dir = __CARDGetDirBlock(card); + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + continue; + } + if (__CARDCompareFileName(ent, fileName)) { + *pfileNo = fileNo; + return CARD_RESULT_READY; + } + } + + return CARD_RESULT_NOFILE; } /* 80357F98-803580B4 3528D8 011C+00 0/0 3/3 0/0 .text CARDOpen */ s32 CARDOpen(s32 chan, const char* fileName, CARDFileInfo* fileInfo) { - CARDControl* card; - CARDDir* dir; - CARDDir* ent; - s32 result; - s32 fileNo; + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + s32 fileNo; - fileInfo->chan = -1; - result = __CARDGetControlBlock(chan, &card); - if (result < 0) { - return result; - } - result = __CARDGetFileNo(card, fileName, &fileNo); - if (0 <= result) { - dir = __CARDGetDirBlock(card); - ent = &dir[fileNo]; - if (!CARDIsValidBlockNo(card, ent->startBlock)) { - result = CARD_RESULT_BROKEN; - } else { - fileInfo->chan = chan; - fileInfo->fileNo = fileNo; - fileInfo->offset = 0; - fileInfo->iBlock = ent->startBlock; + fileInfo->chan = -1; + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; } - } - return __CARDPutControlBlock(card, result); + result = __CARDGetFileNo(card, fileName, &fileNo); + if (0 <= result) { + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + if (!CARDIsValidBlockNo(card, ent->startBlock)) { + result = CARD_RESULT_BROKEN; + } else { + fileInfo->chan = chan; + fileInfo->fileNo = fileNo; + fileInfo->offset = 0; + fileInfo->iBlock = ent->startBlock; + } + } + return __CARDPutControlBlock(card, result); } /* 803580B4-80358108 3529F4 0054+00 0/0 3/3 0/0 .text CARDClose */ diff --git a/libs/dolphin/card/CARDRdwr.c b/libs/dolphin/card/CARDRdwr.c index 3e2cf493ff..139712961b 100644 --- a/libs/dolphin/card/CARDRdwr.c +++ b/libs/dolphin/card/CARDRdwr.c @@ -1,25 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDRdwr -// - #include "dolphin/card/CARDRdwr.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" static void BlockReadCallback(s32 chan, s32 result); static void BlockWriteCallback(s32 chan, s32 result); -// -// Declarations: -// - /* 80355184-80355260 34FAC4 00DC+00 1/1 0/0 0/0 .text BlockReadCallback */ static void BlockReadCallback(s32 chan, s32 result) { CARDControl* card; @@ -73,39 +59,38 @@ s32 __CARDRead(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback) /* 803552C4-803553AC 34FC04 00E8+00 1/1 0/0 0/0 .text BlockWriteCallback */ static void BlockWriteCallback(s32 chan, s32 result) { - CARDCallback callback; - CARDControl* card = &__CARDBlock[chan]; + CARDCallback callback; + CARDControl* card = &__CARDBlock[chan]; - if (result < 0) { - goto error; - } + if (result < 0) { + goto error; + } - card->xferred += card->pageSize; + card->xferred += card->pageSize; - card->addr += card->pageSize; - (u8*)card->buffer += card->pageSize; - if (--card->repeat <= 0) { - goto error; - } + card->addr += card->pageSize; + (u8*)card->buffer += card->pageSize; + if (--card->repeat <= 0) { + goto error; + } - result = __CARDWritePage(chan, BlockWriteCallback); - if (result < 0) { - goto error; - } - return; + result = __CARDWritePage(chan, BlockWriteCallback); + if (result < 0) { + goto error; + } + return; error: - if (card->apiCallback == 0) { - __CARDPutControlBlock(card, result); - } - callback = card->xferCallback; - if (callback) { - card->xferCallback = 0; - callback(chan, result); - } + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->xferCallback; + if (callback) { + card->xferCallback = 0; + callback(chan, result); + } } - /* 803553AC-80355414 34FCEC 0068+00 0/0 4/4 0/0 .text __CARDWrite */ s32 __CARDWrite(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback) { CARDControl* card; diff --git a/libs/dolphin/card/CARDRead.c b/libs/dolphin/card/CARDRead.c index bbefb3fc4e..5a9eb2db2d 100644 --- a/libs/dolphin/card/CARDRead.c +++ b/libs/dolphin/card/CARDRead.c @@ -1,24 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDRead -// - #include "dolphin/card/CARDRead.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" static void ReadCallback(s32 chan, s32 result); -// -// Declarations: -// - /* 803584A0-80358658 352DE0 01B8+00 1/1 1/1 0/0 .text __CARDSeek */ s32 __CARDSeek(CARDFileInfo* fileInfo, s32 length, s32 offset, CARDControl** pcard) { CARDControl* card; @@ -33,14 +19,16 @@ s32 __CARDSeek(CARDFileInfo* fileInfo, s32 length, s32 offset, CARDControl** pca } if (!CARDIsValidBlockNo(card, fileInfo->iBlock) || - card->cBlock * card->sectorSize <= fileInfo->offset) { + card->cBlock * card->sectorSize <= fileInfo->offset) + { return __CARDPutControlBlock(card, CARD_RESULT_FATAL_ERROR); } dir = __CARDGetDirBlock(card); ent = &dir[fileInfo->fileNo]; if (ent->length * card->sectorSize <= offset || - ent->length * card->sectorSize < offset + length) { + ent->length * card->sectorSize < offset + length) + { return __CARDPutControlBlock(card, CARD_RESULT_LIMIT); } diff --git a/libs/dolphin/card/CARDStat.c b/libs/dolphin/card/CARDStat.c index cdaeab9887..e32d486f6c 100644 --- a/libs/dolphin/card/CARDStat.c +++ b/libs/dolphin/card/CARDStat.c @@ -1,27 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDStat -// - #include "dolphin/card/CARDStat.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" +#include "dolphin/dsp.h" static void UpdateIconOffsets(CARDDir* ent, CARDStat* stat); -// -// External References: -// - -void memcpy(); -void __div2i(); - -// -// Declarations: -// - /* 80358C90-80358E88 3535D0 01F8+00 2/2 0/0 0/0 .text UpdateIconOffsets */ static void UpdateIconOffsets(CARDDir* ent, CARDStat* stat) { u32 offset; @@ -128,7 +111,8 @@ s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat, CARDCallback callba if (fileNo < 0 || CARD_MAX_FILE <= fileNo || (stat->iconAddr != 0xffffffff && CARD_READ_SIZE <= stat->iconAddr) || (stat->commentAddr != 0xffffffff && - CARD_SYSTEM_BLOCK_SIZE - CARD_COMMENT_SIZE < stat->commentAddr % CARD_SYSTEM_BLOCK_SIZE)) { + CARD_SYSTEM_BLOCK_SIZE - CARD_COMMENT_SIZE < stat->commentAddr % CARD_SYSTEM_BLOCK_SIZE)) + { return CARD_RESULT_FATAL_ERROR; } result = __CARDGetControlBlock(chan, &card); diff --git a/libs/dolphin/card/CARDUnlock.c b/libs/dolphin/card/CARDUnlock.c index 2341825736..6fefed478b 100644 --- a/libs/dolphin/card/CARDUnlock.c +++ b/libs/dolphin/card/CARDUnlock.c @@ -1,19 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDUnlock -// - #include "dolphin/card/CARDUnlock.h" -#include "dol2asm.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OS.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" +#include "dolphin/os.h" static u32 bitrev(u32 data); static s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode); @@ -21,18 +10,6 @@ static s32 DummyLen(void); static void InitCallback(void* _task); static void DoneCallback(void* _task); -// -// External References: -// - -void memset(); -void DSPAddTask(); -void DSPSendMailToDSP(); - -// -// Declarations: -// - /* 80353F24-80354090 34E864 016C+00 1/1 0/0 0/0 .text bitrev */ static u32 bitrev(u32 data) { u32 wk; @@ -99,12 +76,14 @@ static s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode) { /* 80450A68-80450A70 0004E8 0004+04 2/2 0/0 0/0 .sdata next */ static unsigned long int next = 1; -static inline int CARDRand(void) { +static int CARDRand(void) { next = next * 1103515245 + 12345; return (int)((unsigned int)(next / 65536) % 32768); } -static inline void CARDSrand(unsigned int seed) { next = seed; } +static void CARDSrand(unsigned int seed) { + next = seed; +} /* 803541D4-80354298 34EB14 00C4+00 2/2 0/0 0/0 .text DummyLen */ static s32 DummyLen(void) { @@ -126,7 +105,7 @@ static s32 DummyLen(void) { tmp = (s32)(tick << wk); wk++; if (wk > 16) { - wk = 1; + wk = 1; } CARDSrand((u32)tmp); tmp = CARDRand(); @@ -143,7 +122,7 @@ static s32 DummyLen(void) { /* ############################################################################################## */ /* 803D1EA0-803D2000 02EFC0 0160+00 1/1 0/0 0/0 .data CardData */ -SECTION_DATA static u8 CardData[352] ALIGN_DECL(32) = { +static u8 CardData[] ALIGN_DECL(32) = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x02, 0xFF, 0x00, 0x21, 0x13, 0x06, 0x12, 0x03, 0x12, 0x04, 0x13, 0x05, 0x00, 0x92, 0x00, 0xFF, 0x00, 0x88, 0xFF, 0xFF, @@ -175,7 +154,7 @@ typedef struct DecodeParameters { u8* outputAddr; } DecodeParameters; -static inline u32 GetInitVal(void) { +static u32 GetInitVal(void) { u32 tmp; u32 tick; @@ -187,7 +166,7 @@ static inline u32 GetInitVal(void) { return tmp; } -static inline u32 exnor_1st(u32 data, u32 rshift) { +static u32 exnor_1st(u32 data, u32 rshift) { u32 wk; u32 w; u32 i; @@ -200,7 +179,7 @@ static inline u32 exnor_1st(u32 data, u32 rshift) { return w; } -static inline u32 exnor(u32 data, u32 lshift) { +static u32 exnor(u32 data, u32 lshift) { u32 wk; u32 w; u32 i; @@ -337,94 +316,94 @@ s32 __CARDUnlock(s32 chan, u8 flashID[12]) { /* 80354DF0-80354E60 34F730 0070+00 1/1 0/0 0/0 .text InitCallback */ static void InitCallback(void* _task) { - s32 chan; - CARDControl* card; - DSPTaskInfo* task; - DecodeParameters* param; + s32 chan; + CARDControl* card; + DSPTaskInfo* task; + DecodeParameters* param; - task = _task; - for (chan = 0; chan < 2; ++chan) { - card = &__CARDBlock[chan]; - if ((DSPTaskInfo*)&card->task == task) { - break; + task = _task; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if ((DSPTaskInfo*)&card->task == task) { + break; + } } - } - param = (DecodeParameters*)card->workArea; + param = (DecodeParameters*)card->workArea; - DSPSendMailToDSP(0xff000000); - while (DSPCheckMailToDSP()) - ; + DSPSendMailToDSP(0xff000000); + while (DSPCheckMailToDSP()) + ; - DSPSendMailToDSP((u32)param); - while (DSPCheckMailToDSP()) - ; + DSPSendMailToDSP((u32)param); + while (DSPCheckMailToDSP()) + ; } /* 80354E60-80355184 34F7A0 0324+00 1/1 0/0 0/0 .text DoneCallback */ static void DoneCallback(void* _task) { - u8 rbuf[64]; - u32 data; - s32 dummy; - s32 rlen; - u32 rshift; + u8 rbuf[64]; + u32 data; + s32 dummy; + s32 rlen; + u32 rshift; - u8 unk; - u32 wk, wk1; - u32 Ans2; + u8 unk; + u32 wk, wk1; + u32 Ans2; - s32 chan; - CARDControl* card; - s32 result; - DSPTaskInfo* task; - DecodeParameters* param; + s32 chan; + CARDControl* card; + s32 result; + DSPTaskInfo* task; + DecodeParameters* param; - u8* input; - u8* output; - task = _task; - for (chan = 0; chan < 2; ++chan) { - card = &__CARDBlock[chan]; - if ((DSPTaskInfo*)&card->task == task) { - break; + u8* input; + u8* output; + task = _task; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if ((DSPTaskInfo*)&card->task == task) { + break; + } } - } - param = (DecodeParameters*)card->workArea; - input = (u8*)((u8*)param + sizeof(DecodeParameters)); - input = (u8*)OSRoundUp32B(input); - output = input + 32; + param = (DecodeParameters*)card->workArea; + input = (u8*)((u8*)param + sizeof(DecodeParameters)); + input = (u8*)OSRoundUp32B(input); + output = input + 32; - Ans2 = *(u32*)output; - dummy = DummyLen(); - rlen = dummy; - data = ((Ans2 ^ card->scramble) & 0xffff0000); - if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { - EXIUnlock(chan); - __CARDMountCallback(chan, CARD_RESULT_NOCARD); - return; - } + Ans2 = *(u32*)output; + dummy = DummyLen(); + rlen = dummy; + data = ((Ans2 ^ card->scramble) & 0xffff0000); + if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } - rshift = (u32)((dummy + 4 + card->latency) * 8 + 1); - wk = exnor(card->scramble, rshift); - wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); - card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + rshift = (u32)((dummy + 4 + card->latency) * 8 + 1); + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); - dummy = DummyLen(); - rlen = dummy; - data = (((Ans2 << 16) ^ card->scramble) & 0xffff0000); - if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { - EXIUnlock(chan); - __CARDMountCallback(chan, CARD_RESULT_NOCARD); - return; - } - result = __CARDReadStatus(chan, &unk); - if (!EXIProbe(chan)) { - EXIUnlock(chan); - __CARDMountCallback(chan, CARD_RESULT_NOCARD); - return; - } - if (result == CARD_RESULT_READY && !(unk & 0x40)) { - EXIUnlock(chan); - result = CARD_RESULT_IOERROR; - } - __CARDMountCallback(chan, result); + dummy = DummyLen(); + rlen = dummy; + data = (((Ans2 << 16) ^ card->scramble) & 0xffff0000); + if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } + result = __CARDReadStatus(chan, &unk); + if (!EXIProbe(chan)) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } + if (result == CARD_RESULT_READY && !(unk & 0x40)) { + EXIUnlock(chan); + result = CARD_RESULT_IOERROR; + } + __CARDMountCallback(chan, result); } \ No newline at end of file diff --git a/libs/dolphin/card/CARDWrite.c b/libs/dolphin/card/CARDWrite.c index 89bd30a203..1a49bc892c 100644 --- a/libs/dolphin/card/CARDWrite.c +++ b/libs/dolphin/card/CARDWrite.c @@ -1,32 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: CARDWrite -// - #include "dolphin/card/CARDWrite.h" -#include "dolphin/card/card.h" -#include "dolphin/dsp/dsp.h" -#include "dolphin/os/OSTime.h" - +#include "dolphin/card.h" #include "dolphin/card/CARDPriv.h" - -// -// Forward References: -// +#include "dolphin/dsp.h" +#include "dolphin/os/OSTime.h" static void WriteCallback(s32 chan, s32 result); static void EraseCallback(s32 chan, s32 result); -// -// External References: -// - -void __div2i(); - -// -// Declarations: -// - /* 80358914-80358A84 353254 0170+00 1/1 0/0 0/0 .text WriteCallback */ static void WriteCallback(s32 chan, s32 result) { CARDControl* card; diff --git a/libs/dolphin/db/db.c b/libs/dolphin/db/db.c index ee6e5d0da3..823edd9664 100644 --- a/libs/dolphin/db/db.c +++ b/libs/dolphin/db/db.c @@ -1,12 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: db -// +#include "dolphin/db.h" +#include "dolphin/os.h" -#include "dolphin/db/db.h" -#include "dolphin/os/OS.h" - -/* ############################################################################################## */ /* 80451708-8045170C 000C08 0004+00 2/2 0/0 0/0 .sbss __DBInterface */ static DBInterface* __DBInterface; diff --git a/libs/dolphin/dsp/dsp.c b/libs/dolphin/dsp/dsp.c index 203bfb6f69..081ca92492 100644 --- a/libs/dolphin/dsp/dsp.c +++ b/libs/dolphin/dsp/dsp.c @@ -1,7 +1,6 @@ -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" #include "dolphin/dsp/dsp_debug.h" #include "dolphin/dsp/dsp_task.h" -#include "JSystem/JAudio2/osdsp_task.h" /* 80450A58-80450A60 -00001 0004+04 1/1 0/0 0/0 .sdata __DSPVersion */ static char* __DSPVersion = "<< Dolphin SDK - DSP\trelease build: Apr 5 2004 04:15:32 (0x2301) >>"; @@ -9,14 +8,6 @@ static char* __DSPVersion = "<< Dolphin SDK - DSP\trelease build: Apr 5 2004 04 /* 80451900-80451908 000E00 0004+04 1/1 0/0 0/0 .sbss __DSP_init_flag */ static s32 __DSP_init_flag; -// -// External References: -// - -// -// Declarations: -// - /* 80352430-80352440 34CD70 0010+00 0/0 5/5 0/0 .text DSPCheckMailToDSP */ u32 DSPCheckMailToDSP(void) { return (__DSPRegs[0] >> 0xF) & 1; diff --git a/libs/dolphin/dsp/dsp_task.c b/libs/dolphin/dsp/dsp_task.c index 9d3a19f323..2b80e73ace 100644 --- a/libs/dolphin/dsp/dsp_task.c +++ b/libs/dolphin/dsp/dsp_task.c @@ -1,13 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: dsp_task -// - #include "dolphin/dsp/dsp_task.h" -#include "dol2asm.h" #include "dolphin/dsp/dsp_debug.h" -/* ############################################################################################## */ /* 80451914-80451918 000E14 0004+00 2/2 2/2 0/0 .sbss __DSP_curr_task */ DSPTaskInfo* __DSP_curr_task; @@ -20,19 +13,11 @@ DSPTaskInfo* __DSP_last_task; /* 80451908-8045190C 000E08 0004+00 0/0 1/1 0/0 .sbss __DSP_tmp_task */ DSPTaskInfo* __DSP_tmp_task; -// -// Forward References: -// - void __DSP_exec_task(); void __DSP_boot_task(); void __DSP_insert_task(); void __DSP_remove_task(); -// -// Declarations: -// - /* 803525D0-80352770 34CF10 01A0+00 0/0 1/1 0/0 .text __DSP_exec_task */ void __DSP_exec_task(DSPTaskInfo* curr, DSPTaskInfo* next) { if (curr) { @@ -188,6 +173,20 @@ void __DSP_insert_task(DSPTaskInfo* task) { } } +// Unused, but close enough. +void __DSP_add_task(DSPTaskInfo* task) { + if (__DSP_last_task == NULL) { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = task; + task->next = task->prev = NULL; + } else { + __DSP_last_task->next = task; + task->next = NULL; + task->prev = __DSP_last_task; + __DSP_last_task = task; + } + __DSP_debug_printf("__DSP_add_task() : Added task : 0x%08X\n", (u32)(task->next)); +} + /* 8035299C-80352A30 34D2DC 0094+00 0/0 1/1 0/0 .text __DSP_remove_task */ void __DSP_remove_task(DSPTaskInfo* task) { task->flags = DSP_TASK_FLAG_CLEARALL; @@ -211,11 +210,3 @@ void __DSP_remove_task(DSPTaskInfo* task) { task->next->prev = task->prev; } } - -/* ############################################################################################## */ -/* 803D1E08-803D1E38 02EF28 002B+05 0/0 0/0 0/0 .data @294 */ -// used in stripped `__DSP_add_task` function -#pragma push -#pragma force_active on -SECTION_DATA static char lit_294[] = "__DSP_add_task() : Added task : 0x%08X\n"; -#pragma pop diff --git a/libs/dolphin/dvd/dvd.c b/libs/dolphin/dvd/dvd.c index 765ae51d32..dd85096ed6 100644 --- a/libs/dolphin/dvd/dvd.c +++ b/libs/dolphin/dvd/dvd.c @@ -1,16 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: dvd -// - -#include "dolphin/dvd/dvd.h" -#include "dol2asm.h" +#include "dolphin/dvd.h" #include "dolphin/dvd/dvdlow.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" -// -// Forward References: -// +/* 804509E8-804509EC -00001 0004+00 1/1 0/0 0/0 .sdata __DVDVersion */ +static char* __DVDVersion = "<< Dolphin SDK - DVD\trelease build: Apr 5 2004 04:14:51 (0x2301) >>"; static void defaultOptionalCommandChecker(); static void stateReadingFST(); @@ -77,16 +70,9 @@ void __DVDPrintFatalMessage(); void __fstLoad(); extern OSThreadQueue __DVDThreadQueue; -// -// Declarations: -// - /* 803490EC-803490F0 343A2C 0004+00 1/0 0/0 0/0 .text defaultOptionalCommandChecker */ static void defaultOptionalCommandChecker() {} -/* 804509E8-804509EC -00001 0004+00 1/1 0/0 0/0 .sdata __DVDVersion */ -static char* __DVDVersion = "<< Dolphin SDK - DVD\trelease build: Apr 5 2004 04:14:51 (0x2301) >>"; - /* 80451778-8045177C 000C78 0004+00 24/24 0/0 0/0 .sbss executing */ static DVDCommandBlock* executing; @@ -233,7 +219,7 @@ static void cbForStateReadingFST(u32 intType) { } } -inline static void stateError(u32 error) { +static void stateError(u32 error) { __DVDStoreErrorCode(error); DVDLowStopMotor(cbForStateError); } @@ -267,14 +253,14 @@ static void cbForStateError(u32 intType) { } /* 80349388-803493BC 343CC8 0034+00 2/2 0/0 0/0 .text stateTimeout */ -static inline void stateTimeout(void) { +static void stateTimeout(void) { __DVDStoreErrorCode(0x1234568); DVDReset(); cbForStateError(0); } /* 803493BC-803493E4 343CFC 0028+00 1/1 0/0 0/0 .text stateGettingError */ -static inline void stateGettingError(void) { +static void stateGettingError(void) { DVDLowRequestError(cbForStateGettingError); } @@ -311,7 +297,7 @@ static u32 CategorizeError(u32 error) { } } -inline static BOOL CheckCancel(u32 resume) { +static BOOL CheckCancel(u32 resume) { DVDCommandBlock* finished; if (Canceling) { @@ -617,7 +603,7 @@ static void AlarmHandler(OSAlarm* alarm, OSContext* context) { static OSAlarm ResetAlarm; /* 80349E30-80349F04 344770 00D4+00 1/1 0/0 0/0 .text stateCoverClosed */ -static inline void stateCoverClosed(void) { +static void stateCoverClosed(void) { DVDCommandBlock* finished; switch (CurrCommand) { @@ -666,7 +652,7 @@ static void cbForStateCoverClosed(u32 intType) { } /* 80349F98-80349FC0 3448D8 0028+00 3/3 0/0 0/0 .text stateMotorStopped */ -static inline void stateMotorStopped(void) { +static void stateMotorStopped(void) { DVDLowWaitCoverClose(cbForStateMotorStopped); } @@ -839,9 +825,9 @@ static void stateBusy(DVDCommandBlock* block) { static u32 ImmCommand[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}; /* 804509FC-80450A00 00047C 0004+00 1/1 0/0 0/0 .sdata DmaCommand */ -SECTION_SDATA static u32 DmaCommand[] = {0xFFFFFFFF}; +static u32 DmaCommand[] = {0xFFFFFFFF}; -inline static BOOL IsImmCommandWithResult(u32 command) { +static BOOL IsImmCommandWithResult(u32 command) { u32 i; if (command == 9 || command == 10 || command == 11 || command == 12) { @@ -856,7 +842,7 @@ inline static BOOL IsImmCommandWithResult(u32 command) { return FALSE; } -inline static BOOL IsDmaCommand(u32 command) { +static BOOL IsDmaCommand(u32 command) { u32 i; if (command == 1 || command == 4 || command == 5 || command == 14) @@ -1010,7 +996,8 @@ static void cbForStateBusy(u32 intType) { } if ((CurrCommand == 1 || CurrCommand == 4 || CurrCommand == 5 || CurrCommand == 14) && - (executing->transferred_size == executing->length)) { + (executing->transferred_size == executing->length)) + { if (CheckCancel(0)) { return; } @@ -1029,12 +1016,13 @@ static void cbForStateBusy(u32 intType) { } } -static inline BOOL issueCommand(s32 prio, DVDCommandBlock* block) { +static BOOL issueCommand(s32 prio, DVDCommandBlock* block) { BOOL level; BOOL result; if (autoInvalidation && - (block->command == 1 || block->command == 4 || block->command == 5 || block->command == 14)) { + (block->command == 1 || block->command == 4 || block->command == 5 || block->command == 14)) + { DCInvalidateRange(block->buffer, block->length); } @@ -1406,7 +1394,7 @@ BOOL DVDCheckDisk(void) { return retVal; } -inline void DVDPause(void) { +void DVDPause(void) { BOOL level; level = OSDisableInterrupts(); PauseFlag = TRUE; @@ -1416,7 +1404,7 @@ inline void DVDPause(void) { OSRestoreInterrupts(level); } -inline BOOL DVDCancelAllAsync(DVDCBCallback callback) { +BOOL DVDCancelAllAsync(DVDCBCallback callback) { BOOL enabled; DVDCommandBlock* p; BOOL retVal; diff --git a/libs/dolphin/dvd/dvdFatal.c b/libs/dolphin/dvd/dvdFatal.c index 19020b13f4..06eecacdf0 100644 --- a/libs/dolphin/dvd/dvdFatal.c +++ b/libs/dolphin/dvd/dvdFatal.c @@ -1,33 +1,13 @@ -// -// Generated By: dol2asm -// Translation Unit: dvdFatal -// - #include "dolphin/dvd/dvdFatal.h" #include "dolphin/types.h" -// -// Forward References: -// - -void __DVDPrintFatalMessage(); - -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ /* 804517C8-804517D0 000CC8 0004+04 1/1 0/0 0/0 .sbss FatalFunc */ static void (*FatalFunc)(void) = NULL; /* 8034BCFC-8034BD2C 34663C 0030+00 0/0 1/1 0/0 .text __DVDPrintFatalMessage */ void __DVDPrintFatalMessage(void) { - if (!FatalFunc) { - return; - } - FatalFunc(); + if (!FatalFunc) { + return; + } + FatalFunc(); } diff --git a/libs/dolphin/dvd/dvderror.c b/libs/dolphin/dvd/dvderror.c index c5d58415df..9b979d794d 100644 --- a/libs/dolphin/dvd/dvderror.c +++ b/libs/dolphin/dvd/dvderror.c @@ -1,28 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: dvderror -// - #include "dolphin/dvd/dvderror.h" #include "dolphin/os/OSRtc.h" -#include "dolphin/types.h" - -// -// Forward References: -// static u8 ErrorCode2Num(u32 errorCode); void __DVDStoreErrorCode(); -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ /* 803D16A8-803D16F0 02E7C8 0048+00 1/1 0/0 0/0 .data ErrorTable */ static u32 ErrorTable[] = { 0, 0x00023A00, 0x00062800, 0x00030200, 0x00031100, 0x00052000, diff --git a/libs/dolphin/dvd/dvdfs.c b/libs/dolphin/dvd/dvdfs.c index 3846295785..8b151e682c 100644 --- a/libs/dolphin/dvd/dvdfs.c +++ b/libs/dolphin/dvd/dvdfs.c @@ -1,16 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: dvdfs -// - #include "dolphin/dvd/dvdfs.h" -#include "dolphin/dvd/dvd.h" -#include "dolphin/os/OS.h" #include "ctype.h" - -// -// Forward References: -// +#include "dolphin/dvd.h" +#include "dolphin/os.h" void __DVDFSInit(); int DVDConvertPathToEntrynum(const char* path); @@ -30,24 +21,14 @@ BOOL DVDOpenDir(const char*, DVDDirectory* dir); BOOL DVDReadDir(DVDDirectory* dir, DVDDirectoryEntry* entry); BOOL DVDCloseDir(); -// -// External References: -// - -// -// Declarations: -// - - typedef struct FSTEntry FSTEntry; struct FSTEntry { - unsigned int isDirAndStringOff; - unsigned int parentOrPosition; - unsigned int nextEntryOrLength; + unsigned int isDirAndStringOff; + unsigned int parentOrPosition; + unsigned int nextEntryOrLength; }; -/* ############################################################################################## */ /* 80451758-8045175C 000C58 0004+00 1/1 0/0 0/0 .sbss BootInfo */ static OSBootInfo* BootInfo; @@ -71,8 +52,6 @@ void __DVDFSInit() { } } -/* ############################################################################################## */ - /* 80451768-8045176C 000C68 0004+00 4/4 0/0 0/0 .sbss currentDirectory */ static u32 currentDirectory; @@ -82,7 +61,6 @@ OSThreadQueue __DVDThreadQueue; /* 8045176C-80451770 000C6C 0004+00 1/1 1/1 0/0 .sbss __DVDLongFileNameFlag */ u32 __DVDLongFileNameFlag; - /* For convenience */ #define entryIsDir(i) (((FstStart[i].isDirAndStringOff & 0xff000000) == 0) ? FALSE : TRUE) #define stringOff(i) (FstStart[i].isDirAndStringOff & ~0xff000000) @@ -91,7 +69,7 @@ u32 __DVDLongFileNameFlag; #define filePosition(i) (FstStart[i].parentOrPosition) #define fileLength(i) (FstStart[i].nextEntryOrLength) -static inline BOOL isSame(const char* path, const char* string) { +static BOOL isSame(const char* path, const char* string) { while (*string != '\0') { if (tolower(*path++) != tolower(*string++)) { return FALSE; @@ -220,8 +198,6 @@ int DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo) { return TRUE; } -/* ############################################################################################## */ - /* 80348890-80348958 3431D0 00C8+00 0/0 3/3 1/1 .text DVDOpen */ BOOL DVDOpen(const char* fileName, DVDFileInfo* fileInfo) { s32 entry; @@ -253,7 +229,7 @@ BOOL DVDClose(DVDFileInfo* fileInfo) { return TRUE; } -static inline u32 myStrncpy(char* dest, char* src, u32 maxlen) { +static u32 myStrncpy(char* dest, char* src, u32 maxlen) { u32 i = maxlen; while ((i > 0) && (*src != 0)) { @@ -301,8 +277,8 @@ static BOOL DVDConvertEntrynumToPath(s32 entrynum, char* path, u32 maxlen) { if (entryIsDir(entrynum)) { if (loc == maxlen - 1) { - path[loc] = '\0'; - return FALSE; + path[loc] = '\0'; + return FALSE; } path[loc++] = '/'; @@ -312,7 +288,6 @@ static BOOL DVDConvertEntrynumToPath(s32 entrynum, char* path, u32 maxlen) { return TRUE; } - /* 80348C30-80348CF4 343570 00C4+00 1/1 0/0 0/0 .text DVDGetCurrentDir */ BOOL DVDGetCurrentDir(char* path, u32 maxlen) { return DVDConvertEntrynumToPath((s32)currentDirectory, path, maxlen); @@ -331,14 +306,11 @@ BOOL DVDChangeDir(const char* dirName) { return TRUE; } -/* ############################################################################################## */ - #define DVD_MIN_TRANSFER_SIZE 32 /* 80348D54-80348E14 343694 00C0+00 0/0 2/2 0/0 .text DVDReadAsyncPrio */ BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, DVDCallback callback, s32 prio) { - if (!((0 <= offset) && (offset <= fileInfo->length))) { OSPanic(__FILE__, 750, "DVDReadAsync(): specified area is out of the file "); } @@ -368,8 +340,6 @@ static void cbForReadAsync(s32 result, DVDCommandBlock* block) { } } -/* ############################################################################################## */ - /* 80348E44-80348F5C 343784 0118+00 0/0 9/9 3/3 .text DVDReadPrio */ int DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio) { BOOL result; @@ -422,9 +392,10 @@ int DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 p /* 80348F5C-80348F80 34389C 0024+00 1/1 0/0 0/0 .text cbForReadSync */ /* This is based on the revolution SDK, these may not match in all cases */ -static void cbForReadSync(s32 result, DVDCommandBlock* block) { OSWakeupThread(&__DVDThreadQueue); } +static void cbForReadSync(s32 result, DVDCommandBlock* block) { + OSWakeupThread(&__DVDThreadQueue); +} -/* ############################################################################################## */ /* 80348F80-80349040 3438C0 00C0+00 0/0 3/3 0/0 .text DVDOpenDir */ BOOL DVDOpenDir(const char* dirName, DVDDirectory* dir) { s32 entry; diff --git a/libs/dolphin/dvd/dvdidutils.c b/libs/dolphin/dvd/dvdidutils.c index 01d3a62a29..7b2b2718aa 100644 --- a/libs/dolphin/dvd/dvdidutils.c +++ b/libs/dolphin/dvd/dvdidutils.c @@ -1,5 +1,5 @@ #include "dolphin/dvd/dvdidutils.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" /* 8034BC04-8034BCFC 346544 00F8+00 0/0 1/1 0/0 .text DVDCompareDiskID */ BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2) { diff --git a/libs/dolphin/dvd/dvdlow.c b/libs/dolphin/dvd/dvdlow.c index cf4ffa4e26..f2a723a0da 100644 --- a/libs/dolphin/dvd/dvdlow.c +++ b/libs/dolphin/dvd/dvdlow.c @@ -1,20 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: dvdlow -// - #include "dolphin/dvd/dvdlow.h" -#include "dolphin/dvd/dvd.h" -#include "dol2asm.h" +#include "dolphin/dvd.h" #include "dolphin/os/OSAlarm.h" #include "dolphin/os/OSContext.h" #include "dolphin/os/OSReset.h" #include "dolphin/os/OSTime.h" -// -// Forward References: -// - void __DVDInitWA(); void __DVDInterruptHandler(u32 arg0, OSContext* context); static void AlarmHandler(); @@ -37,29 +27,20 @@ DVDLowCallback DVDLowClearCallback(); void __DVDLowSetWAType(u32 arg0, u32 arg1); BOOL __DVDLowTestAlarm(OSAlarm* alarm); -// -// External References: -// - -// -// Declarations: -// - typedef struct DVDBuffer { - void* addr; - u32 length; - u32 offset; + void* addr; + u32 length; + u32 offset; } DVDBuffer; typedef struct DVDCommand { - s32 cmd; - void* addr; - u32 length; - u32 offset; - DVDLowCallback callback; + s32 cmd; + void* addr; + u32 length; + u32 offset; + DVDLowCallback callback; } DVDCommand; -/* ############################################################################################## */ /* 8044C830-8044C870 079550 003C+04 6/6 0/0 0/0 .bss CommandList */ static DVDCommand CommandList[3]; @@ -130,7 +111,7 @@ static DVDBuffer Prev; static DVDBuffer Curr; /* 804509D8-804509E0 000458 0004+04 2/2 0/0 0/0 .sdata FirstRead */ -SECTION_SDATA static BOOL FirstRead = TRUE; +static BOOL FirstRead = TRUE; /* 803476B4-80347994 341FF4 02E0+00 0/0 1/1 0/0 .text __DVDInterruptHandler */ void __DVDInterruptHandler(u32 arg0, OSContext* context) { @@ -174,7 +155,8 @@ void __DVDInterruptHandler(u32 arg0, OSContext* context) { } __DIRegs[0] = val2 | (val4); - if (ResetOccurred && (__OSGetSystemTime() - LastResetEnd) < (OSTime)OSMillisecondsToTicks(200)) { + if (ResetOccurred && (__OSGetSystemTime() - LastResetEnd) < (OSTime)OSMillisecondsToTicks(200)) + { reg = __DIRegs[1]; val2 = (reg & 0x4) & ((reg & 0x2) << 1); if (val2 & 0x4) { @@ -184,7 +166,7 @@ void __DVDInterruptHandler(u32 arg0, OSContext* context) { ResetCoverCallback = NULL; } - __DIRegs[1] = __DIRegs[1]; + __DIRegs[1] = __DIRegs[1]; } else if (WaitingCoverClose) { reg = __DIRegs[1]; val3 = reg & 2; @@ -195,13 +177,13 @@ void __DVDInterruptHandler(u32 arg0, OSContext* context) { __DIRegs[1] = val2 | val3; WaitingCoverClose = FALSE; } else { - __DIRegs[1] = 0; + __DIRegs[1] = 0; } if ((val & 8) && !Breaking) { val &= ~0x8; } - + if (val & 1) { u32 num; DVDCommand* command; @@ -277,9 +259,9 @@ static void AlarmHandlerForTimeout(OSAlarm* alarm, OSContext* context) { } static void __setAlarm(u32 seconds) { - u32 temp = OSSecondsToTicks(seconds); + u32 temp = OSSecondsToTicks(seconds); OSCreateAlarm(&AlarmForTimeout); - OSSetAlarm(&AlarmForTimeout, (OSTime) temp, AlarmHandlerForTimeout); + OSSetAlarm(&AlarmForTimeout, (OSTime)temp, AlarmHandlerForTimeout); } /* 80347A88-80347B98 3423C8 0110+00 3/3 0/0 0/0 .text Read */ @@ -500,10 +482,11 @@ void DVDLowReset() { reg = __PIRegs[9]; __PIRegs[9] = (reg & ~4) | 1; startTime = __OSGetSystemTime(); - - while (__OSGetSystemTime() - startTime < OSMicrosecondsToTicks(12)); - __PIRegs[9] = reg | 5; + while (__OSGetSystemTime() - startTime < OSMicrosecondsToTicks(12)) + ; + + __PIRegs[9] = reg | 5; ResetOccurred = TRUE; LastResetEnd = __OSGetSystemTime(); } diff --git a/libs/dolphin/dvd/dvdqueue.c b/libs/dolphin/dvd/dvdqueue.c index 7ad48e84ed..26e931a7c7 100644 --- a/libs/dolphin/dvd/dvdqueue.c +++ b/libs/dolphin/dvd/dvdqueue.c @@ -1,30 +1,13 @@ -// -// Generated By: dol2asm -// Translation Unit: dvdqueue -// - #include "dolphin/dvd/dvdqueue.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "dolphin/os/OSInterrupt.h" -// -// Forward References: -// - void __DVDClearWaitingQueue(); BOOL __DVDPushWaitingQueue(s32 prio, DVDCommandBlock* block); DVDCommandBlock* __DVDPopWaitingQueue(void); BOOL __DVDCheckWaitingQueue(void); BOOL __DVDDequeueWaitingQueue(DVDCommandBlock* block); -// -// External References: -// - -// -// Declarations: -// - #define MAX_QUEUES 4 typedef struct { @@ -32,7 +15,6 @@ typedef struct { DVDCommandBlock* prev; } DVDQueue; -/* ############################################################################################## */ /* 8044C998-8044C9B8 0796B8 0020+00 4/4 0/0 0/0 .bss WaitingQueue */ static DVDQueue WaitingQueue[MAX_QUEUES]; @@ -68,7 +50,7 @@ BOOL __DVDPushWaitingQueue(s32 prio, DVDCommandBlock* block) { return TRUE; } -static inline DVDCommandBlock* PopWaitingQueuePrio(s32 prio) { +static DVDCommandBlock* PopWaitingQueuePrio(s32 prio) { DVDCommandBlock* tmp; BOOL enabled; DVDCommandBlock* q; diff --git a/libs/dolphin/dvd/fstload.c b/libs/dolphin/dvd/fstload.c index ca663fae33..031bb66867 100644 --- a/libs/dolphin/dvd/fstload.c +++ b/libs/dolphin/dvd/fstload.c @@ -1,24 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: fstload -// - #include "dolphin/dvd/fstload.h" -#include "dolphin/dvd/dvd.h" -#include "dolphin/os/OS.h" +#include "dolphin/dvd.h" +#include "dolphin/os.h" -// -// Forward References: -// - -static void cb(); -void __fstLoad(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 804517D0-804517D4 000CD0 0004+00 1/1 0/0 0/0 .sbss status */ static s32 status; diff --git a/libs/dolphin/exi/EXIBios.c b/libs/dolphin/exi/EXIBios.c index e923bb7649..adcaaf504a 100644 --- a/libs/dolphin/exi/EXIBios.c +++ b/libs/dolphin/exi/EXIBios.c @@ -1,14 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: EXIBios -// - #include "dolphin/exi/EXIBios.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" + +/* 804509C0-804509C8 -00001 0004+04 1/1 0/0 0/0 .sdata __EXIVersion */ +static char* __EXIVersion = "<< Dolphin SDK - EXI\trelease build: Apr 5 2004 04:14:14 (0x2301) >>"; #define REG_MAX 5 -#define REG(chan, idx) (__EXIRegs[((chan)*REG_MAX) + (idx)]) +#define REG(chan, idx) (__EXIRegs[((chan) * REG_MAX) + (idx)]) #define CPR_CS(x) ((1u << (x)) << 7) #define CPR_CLK(x) ((x) << 4) @@ -16,10 +14,6 @@ #define EXI_0CR(tstart, dma, rw, tlen) \ ((((u32)(tstart)) << 0) | (((u32)(dma)) << 1) | (((u32)(rw)) << 2) | (((u32)(tlen)) << 4)) -// -// Forward References: -// - static void SetExiInterruptMask(s32 chan, EXIControl* exi); BOOL __EXIProbe(s32 chan); static u32 EXIClearInterrupts(s32 chan, BOOL exi, BOOL tc, BOOL ext); @@ -27,20 +21,6 @@ static void EXIIntrruptHandler(s16 interrupt, OSContext* context); static void TCIntrruptHandler(s16 interrupt, OSContext* context); static void EXTIntrruptHandler(s16 interrupt, OSContext* context); -// -// External References: -// - -void __OSEnableBarnacle(u32, u32); -void __div2i(); -void memmove(); -extern s32 __OSInIPL; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 8044C570-8044C630 079290 00C0+00 20/20 0/0 0/0 .bss Ecb */ static EXIControl Ecb[3]; @@ -196,7 +176,8 @@ BOOL EXISync(s32 chan) { exi->immLen != 4 || (REG(chan, 0) & 0x00000070) != (EXI_FREQ_1M << 4) || (REG(chan, 4) != EXI_USB_ADAPTER && REG(chan, 4) != EXI_IS_VIEWER && REG(chan, 4) != 0x04220001) || - __OSDeviceCode == 0x8200) { + __OSDeviceCode == 0x8200) + { rc = TRUE; } } @@ -517,14 +498,6 @@ static void EXTIntrruptHandler(s16 interrupt, OSContext* context) { } } -/* ############################################################################################## */ -/* 803D10A8-803D10F0 02E1C8 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = - "<< Dolphin SDK - EXI\trelease build: Apr 5 2004 04:14:14 (0x2301) >>"; - -/* 804509C0-804509C8 -00001 0004+04 1/1 0/0 0/0 .sdata __EXIVersion */ -SECTION_SDATA static const char* __EXIVersion = lit_1; - /* 804516D8-804516E0 000BD8 0004+04 2/2 0/0 0/0 .sbss IDSerialPort1 */ static u32 IDSerialPort1[2 /* padding */]; @@ -705,75 +678,34 @@ s32 EXIGetID(s32 chan, u32 dev, u32* id) { return err ? 0 : !0; } -/* ############################################################################################## */ -/* 803D10F0-803D1100 02E210 000F+01 0/0 0/0 0/0 .data @473 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_473[] = "Memory Card 59"; -#pragma pop - -/* 803D1100-803D1110 02E220 0010+00 0/0 0/0 0/0 .data @474 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_474[] = "Memory Card 123"; -#pragma pop - -/* 803D1110-803D1120 02E230 0010+00 0/0 0/0 0/0 .data @475 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_475[] = "Memory Card 251"; -#pragma pop - -/* 803D1120-803D1130 02E240 0010+00 0/0 0/0 0/0 .data @476 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_476[] = "Memory Card 507"; -#pragma pop - -/* 803D1130-803D1144 02E250 0011+03 0/0 0/0 0/0 .data @477 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_477[] = "Memory Card 1019"; -#pragma pop - -/* 803D1144-803D1158 02E264 0011+03 0/0 0/0 0/0 .data @478 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_478[] = "Memory Card 2043"; -#pragma pop - -/* 803D1158-803D1164 02E278 000C+00 0/0 0/0 0/0 .data @479 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_479[] = "USB Adapter"; -#pragma pop - -/* 803D1164-803D1170 02E284 0009+03 0/0 0/0 0/0 .data @485 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_485[] = "Net Card"; -#pragma pop - -/* 803D1170-803D1180 02E290 000D+03 0/0 0/0 0/0 .data @486 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_486[] = "Artist Ether"; -#pragma pop - -/* 803D1180-803D1194 02E2A0 0012+02 0/0 0/0 0/0 .data @487 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_487[] = "Broadband Adapter"; -#pragma pop - -/* 803D1194-803D11A4 02E2B4 000E+02 0/0 0/0 0/0 .data @489 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_489[] = "Stream Hanger"; -#pragma pop - -/* 803D11A4-803D11B8 02E2C4 000E+06 0/0 0/0 0/0 .data @490 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_490[] = "IS-DOL-VIEWER"; -#pragma pop +char* EXIGetTypeString(u32 type) { + switch (type) { + case EXI_MEMORY_CARD_59: + return "Memory Card 59"; + case EXI_MEMORY_CARD_123: + return "Memory Card 123"; + case EXI_MEMORY_CARD_251: + return "Memory Card 251"; + case EXI_MEMORY_CARD_507: + return "Memory Card 507"; + case EXI_MEMORY_CARD_1019: + return "Memory Card 1019"; + case EXI_MEMORY_CARD_2043: + return "Memory Card 2043"; + case EXI_USB_ADAPTER: + return "USB Adapter"; + case 0x80000000 | EXI_MEMORY_CARD_59: + case 0x80000000 | EXI_MEMORY_CARD_123: + case 0x80000000 | EXI_MEMORY_CARD_251: + case 0x80000000 | EXI_MEMORY_CARD_507: + return "Net Card"; + case EXI_ETHER_VIEWER: + return "Artist Ether"; + case EXI_MODEM: + return "Broadband Adapter"; + case EXI_STREAM_HANGER: + return "Stream Hanger"; + case EXI_IS_VIEWER: + return "IS-DOL-VIEWER"; + } +} diff --git a/libs/dolphin/exi/EXIUart.c b/libs/dolphin/exi/EXIUart.c index 027db66043..9aa9aa9c53 100644 --- a/libs/dolphin/exi/EXIUart.c +++ b/libs/dolphin/exi/EXIUart.c @@ -1,24 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: EXIUart -// - #include "dolphin/exi/EXIUart.h" #include "dolphin/exi/EXIBios.h" -#include "dolphin/os/OS.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// +#include "dolphin/os.h" #define EXI_TX 0x800400u #define EXI_MAGIC 0xa5ff005a @@ -58,7 +40,6 @@ static BOOL ProbeBarnacle(s32 chan, u32 dev, u32* revision) { return (*revision != 0xFFFFFFFF) ? TRUE : FALSE; } -/* ############################################################################################## */ /* 804516E0-804516E4 000BE0 0004+00 3/3 0/0 0/0 .sbss Chan */ static s32 Chan; diff --git a/libs/dolphin/gd/GDBase.c b/libs/dolphin/gd/GDBase.c index 1a1f519058..f40d6f9bd8 100644 --- a/libs/dolphin/gd/GDBase.c +++ b/libs/dolphin/gd/GDBase.c @@ -30,11 +30,11 @@ void GDFlushCurrToMem(void) { void GDPadCurr32(void) { u32 i = ((u32)__GDCurrentDL->ptr & 31); - if (i) { - for (i; i < 32; i++) { - __GDWrite(0); - } - } + if (i) { + for (i; i < 32; i++) { + __GDWrite(0); + } + } } /* 803610D4-80361104 35BA14 0030+00 0/0 41/41 0/0 .text GDOverflowed */ diff --git a/libs/dolphin/gd/GDGeometry.c b/libs/dolphin/gd/GDGeometry.c index f25b2adc87..29f51046a7 100644 --- a/libs/dolphin/gd/GDGeometry.c +++ b/libs/dolphin/gd/GDGeometry.c @@ -1,74 +1,149 @@ -// -// Generated By: dol2asm -// Translation Unit: GDGeometry -// - -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void GDSetVtxDescv(); -void GDSetArray(); -void GDSetArrayRaw(); - -// -// External References: -// - -void GDOverflowed(); -extern u8 __GDCurrentDL[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803D2948-803D29B0 -00001 0068+00 1/1 0/0 0/0 .data @121 */ -SECTION_DATA static void* lit_121[26] = { - (void*)(((char*)GDSetVtxDescv) + 0x78), (void*)(((char*)GDSetVtxDescv) + 0x80), - (void*)(((char*)GDSetVtxDescv) + 0x90), (void*)(((char*)GDSetVtxDescv) + 0xA4), - (void*)(((char*)GDSetVtxDescv) + 0xB8), (void*)(((char*)GDSetVtxDescv) + 0xCC), - (void*)(((char*)GDSetVtxDescv) + 0xE0), (void*)(((char*)GDSetVtxDescv) + 0xF4), - (void*)(((char*)GDSetVtxDescv) + 0x108), (void*)(((char*)GDSetVtxDescv) + 0x11C), - (void*)(((char*)GDSetVtxDescv) + 0x124), (void*)(((char*)GDSetVtxDescv) + 0x154), - (void*)(((char*)GDSetVtxDescv) + 0x170), (void*)(((char*)GDSetVtxDescv) + 0x18C), - (void*)(((char*)GDSetVtxDescv) + 0x1A8), (void*)(((char*)GDSetVtxDescv) + 0x1C4), - (void*)(((char*)GDSetVtxDescv) + 0x1E0), (void*)(((char*)GDSetVtxDescv) + 0x1FC), - (void*)(((char*)GDSetVtxDescv) + 0x218), (void*)(((char*)GDSetVtxDescv) + 0x234), - (void*)(((char*)GDSetVtxDescv) + 0x250), (void*)(((char*)GDSetVtxDescv) + 0x268), - (void*)(((char*)GDSetVtxDescv) + 0x268), (void*)(((char*)GDSetVtxDescv) + 0x268), - (void*)(((char*)GDSetVtxDescv) + 0x268), (void*)(((char*)GDSetVtxDescv) + 0x13C), -}; +#include "dolphin/gd.h" +#include "dolphin/os.h" /* 80361104-80361700 35BA44 05FC+00 1/0 1/1 0/0 .text GDSetVtxDescv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDSetVtxDescv() { - nofralloc -#include "asm/dolphin/gd/GDGeometry/GDSetVtxDescv.s" +void GDSetVtxDescv(GXVtxDescList* lists) { + u32 v1 = 0; // r31 + u32 v2 = 0; // r30 + u32 v3 = 0; // r29 + u32 v4 = 0; // r28 + u32 v5 = 0; // r27 + u32 v6 = 1; // r26 + u32 v7 = 0; // r25 + u32 v8 = 0; // r24 + u32 v9 = 0; // r23 + u32 v10 = 0; // r22 + u32 v11 = 0; // r21 + u32 v12 = 0; // r20 + u32 v13 = 0; // r19 + u32 v14 = 0; // r18 + u32 v15 = 0; // r17 + u32 v16 = 0; // r16 + u32 v17 = 0; // r15 + + while (lists->attr != GX_VA_NULL) { + switch (lists->attr) { + case GX_VA_PNMTXIDX: + v4 = lists->type; + break; + case GX_VA_TEX0MTXIDX: + v5 = v5 & ~0x1 | lists->type; + break; + case GX_VA_TEX1MTXIDX: + v5 = v5 & ~0x2 | lists->type << 1; + break; + case GX_VA_TEX2MTXIDX: + v5 = v5 & ~0x4 | lists->type << 2; + break; + case GX_VA_TEX3MTXIDX: + v5 = v5 & ~0x8 | lists->type << 3; + break; + case GX_VA_TEX4MTXIDX: + v5 = v5 & ~0x10 | lists->type << 4; + break; + case GX_VA_TEX5MTXIDX: + v5 = v5 & ~0x20 | lists->type << 5; + break; + case GX_VA_TEX6MTXIDX: + v5 = v5 & ~0x40 | lists->type << 6; + break; + case GX_VA_TEX7MTXIDX: + v5 = v5 & ~0x80 | lists->type << 7; + break; + + case GX_VA_POS: + v6 = lists->type; + break; + case GX_VA_NRM: + if (lists->type != GX_NONE) { + v1 = 1; + v7 = lists->type; + } + break; + case GX_VA_NBT: + if (lists->type != GX_NONE) { + v1 = 2; + v7 = lists->type; + } + break; + case GX_VA_CLR0: + v8 = lists->type; + v2 += (v8 != 0); + break; + case GX_VA_CLR1: + v9 = lists->type; + v2 += (v9 != 0); + break; + case GX_VA_TEX0: + v10 = lists->type; + v3 += (v10 != 0); + break; + case GX_VA_TEX1: + v11 = lists->type; + v3 += (v11 != 0); + break; + case GX_VA_TEX2: + v12 = lists->type; + v3 += (v12 != 0); + break; + case GX_VA_TEX3: + v13 = lists->type; + v3 += (v13 != 0); + break; + case GX_VA_TEX4: + v14 = lists->type; + v3 += (v14 != 0); + break; + case GX_VA_TEX5: + v15 = lists->type; + v3 += (v15 != 0); + break; + case GX_VA_TEX6: + v16 = lists->type; + v3 += (v16 != 0); + break; + case GX_VA_TEX7: + v17 = lists->type; + v3 += (v17 != 0); + break; + + case GX_POS_MTX_ARRAY: + case GX_NRM_MTX_ARRAY: + case GX_TEX_MTX_ARRAY: + case GX_LIGHT_ARRAY: + break; + } + lists++; + } + + GDWriteCPCmd(0x50, v4 | v5 << 1 | v6 << 9 | v7 << 11 | v8 << 13 | v9 << 15); + GDWriteCPCmd(0x60, v10 | v11 << 2 | v12 << 4 | v13 << 6 | v14 << 8 | v15 << 10 | v16 << 12 | + v17 << 14); + GDWriteXFCmd(0x1008, v2 | v1 << 2 | v3 << 4); } -#pragma pop /* 80361700-8036190C 35C040 020C+00 0/0 1/1 0/0 .text GDSetArray */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDSetArray() { - nofralloc -#include "asm/dolphin/gd/GDGeometry/GDSetArray.s" +void GDSetArray(GXAttr attr, const void* data, u8 stride) { + u32 v1; + if (attr == GX_VA_NBT) { + v1 = 1; + } else { + v1 = attr - 9; + } + + GDWriteCPCmd(v1 + 0xA0, OSCachedToPhysical(data)); + GDWriteCPCmd(v1 + 0xB0, stride); } -#pragma pop /* 8036190C-80361B14 35C24C 0208+00 0/0 1/1 0/0 .text GDSetArrayRaw */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDSetArrayRaw() { - nofralloc -#include "asm/dolphin/gd/GDGeometry/GDSetArrayRaw.s" +void GDSetArrayRaw(GXAttr attr, u32 data, u8 stride) { + u32 v1; + if (attr == GX_VA_NBT) { + v1 = 1; + } else { + v1 = attr - 9; + } + + GDWriteCPCmd(v1 + 0xA0, data); + GDWriteCPCmd(v1 + 0xB0, stride); } -#pragma pop diff --git a/libs/dolphin/gd/Makefile b/libs/dolphin/gd/Makefile index 05686a4e0b..14b2f1214f 100644 --- a/libs/dolphin/gd/Makefile +++ b/libs/dolphin/gd/Makefile @@ -16,6 +16,7 @@ LIBGD_A_CFLAGS := \ -fp hard \ -nodefaults \ -str reuse \ + -inline auto \ -RTTI off \ -maxerrors 5 \ -enum int $(INCLUDES) \ diff --git a/libs/dolphin/gf/GFLight.cpp b/libs/dolphin/gf/GFLight.cpp index 47eb88e446..c9b58741b2 100644 --- a/libs/dolphin/gf/GFLight.cpp +++ b/libs/dolphin/gf/GFLight.cpp @@ -1,26 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: GFLight -// - #include "dolphin/gf/GFLight.h" -#include "dolphin/gx/GX.h" - -// -// Types: -// - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// +#include "dolphin/gx.h" /* 802CDE54-802CDE9C 2C8794 0048+00 0/0 0/0 1/1 .text GFSetChanAmbColor__F12_GXChannelID8_GXColor */ diff --git a/libs/dolphin/gf/GFPixel.cpp b/libs/dolphin/gf/GFPixel.cpp index 0d1ff2068e..8330aa58f3 100644 --- a/libs/dolphin/gf/GFPixel.cpp +++ b/libs/dolphin/gf/GFPixel.cpp @@ -1,29 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: GFPixel -// - #include "dolphin/gf/GFPixel.h" -#include "dolphin/gx/GX.h" -#include "dolphin/types.h" - -// -// Types: -// - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ +#include "dolphin/gx.h" /* 802CDE9C-802CE004 2C87DC 0168+00 0/0 1/1 0/0 .text GFSetFog__F10_GXFogTypeffff8_GXColor */ void GFSetFog(_GXFogType param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, @@ -63,7 +39,8 @@ void GFSetFog(_GXFogType param_0, f32 param_1, f32 param_2, f32 param_3, f32 par GFWriteBPCmd(((r30shift2 >> 12) & 0xfffff) | 0xee000000); GFWriteBPCmd((u32)(8388638.0f * f3) | 0xef000000); GFWriteBPCmd(r30 | 0xf0000000); - GFWriteBPCmd(((stack_c_u32 >> 12) & 0xfffff) | (((u32)param_0 << 21) & 0xffe00000) | 0xf1000000); + GFWriteBPCmd(((stack_c_u32 >> 12) & 0xfffff) | (((u32)param_0 << 21) & 0xffe00000) | + 0xf1000000); GFWriteBPCmd(param_5.b | param_5.g << 8 | param_5.r << 16 | 0xf2000000); } diff --git a/libs/dolphin/gf/GFTev.cpp b/libs/dolphin/gf/GFTev.cpp index 7b0408ef6e..eb71e03f46 100644 --- a/libs/dolphin/gf/GFTev.cpp +++ b/libs/dolphin/gf/GFTev.cpp @@ -1,33 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: GFTev -// - #include "dolphin/gf/GFTev.h" -#include "dolphin/gx/GX.h" -#include "dolphin/types.h" - -// -// Types: -// - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// +#include "dolphin/gx.h" /* 802CE0D0-802CE138 2C8A10 0068+00 0/0 0/0 1/1 .text * GFSetTevColorS10__F11_GXTevRegID11_GXColorS10 */ void GFSetTevColorS10(_GXTevRegID param_0, _GXColorS10 param_1) { - u32 uVar1 = (param_1.r & 0x7ffU) | ((param_1.a & 0x7ffU) << 12) | - ((param_0 * 2 + 0xe0) << 24); + u32 uVar1 = (param_1.r & 0x7ffU) | ((param_1.a & 0x7ffU) << 12) | ((param_0 * 2 + 0xe0) << 24); u32 uVar2 = (param_1.b & 0x7ffU) | ((param_1.g & 0x7ffU) << 12) | ((param_0 * 2 + 0xe1) << 24); GFWriteBPCmd(uVar1); diff --git a/libs/dolphin/gx/GXAttr.c b/libs/dolphin/gx/GXAttr.c index d17e3a0dcb..854a4caa93 100644 --- a/libs/dolphin/gx/GXAttr.c +++ b/libs/dolphin/gx/GXAttr.c @@ -1,121 +1,95 @@ -// -// Generated By: dol2asm -// Translation Unit: GXAttr -// - #include "dolphin/gx/GXAttr.h" -#include "dol2asm.h" +#include "dolphin/gx.h" #include "dolphin/gx/GXInit.h" -#include "dolphin/gx/GX.h" -// -// Forward References: -// - -void GXSetVtxDesc(); -void GXSetVtxDescv(); -void __GXSetVCD(); -void __GXCalculateVLim(); -void GXClearVtxDesc(); -void GXSetVtxAttrFmtv(); -void __GXSetVAT(); -void GXInvalidateVtxCache(); - -// -// External References: -// - -void __GXSetMatrixIndex(); - -// -// Declarations: -// - -/* ############################################################################################## */ static inline void SETVCDATTR(GXAttr name, GXAttrType type) { - switch(name) { - case GX_VA_PNMTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 31, 1, type); - break; - case GX_VA_TEX0MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 30, 1, type); - break; - case GX_VA_TEX1MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 29, 1, type); - break; - case GX_VA_TEX2MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 28, 1, type); - break; - case GX_VA_TEX3MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 27, 1, type); - break; - case GX_VA_TEX4MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 26, 1, type); - break; - case GX_VA_TEX5MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 25, 1, type); - break; - case GX_VA_TEX6MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 24, 1, type); - break; - case GX_VA_TEX7MTXIDX: - GX_BITFIELD_SET(__GXData->vcdLoReg, 23, 1, type); - break; - case GX_VA_POS: - GX_BITFIELD_SET(__GXData->vcdLoReg, 21, 2, type); - break; - case GX_VA_NRM: - if (type != GX_NONE) { - __GXData->hasNrm = TRUE; - // GX_VA_NRM and GX_VA_NBT should not be enabled at the same time - __GXData->hasBiNrm = FALSE; - __GXData->nrmDataType = type; - } - else { - __GXData->hasNrm = FALSE; - } - break; - case GX_VA_NBT: - if (type != GX_NONE) { - __GXData->hasBiNrm = TRUE; - // GX_VA_NRM and GX_VA_NBT should not be enabled at the same time - __GXData->hasNrm = FALSE; - __GXData->nrmDataType = type; - } - else { - __GXData->hasBiNrm = FALSE; - } - break; - case GX_VA_CLR0: - GX_BITFIELD_SET(__GXData->vcdLoReg, 17, 2, type); - break; - case GX_VA_CLR1: - GX_BITFIELD_SET(__GXData->vcdLoReg, 15, 2, type); - break; - case GX_VA_TEX0: - GX_BITFIELD_SET(__GXData->vcdHiReg, 30, 2, type); - break; - case GX_VA_TEX1: - GX_BITFIELD_SET(__GXData->vcdHiReg, 28, 2, type); - break; - case GX_VA_TEX2: - GX_BITFIELD_SET(__GXData->vcdHiReg, 26, 2, type); - break; - case GX_VA_TEX3: - GX_BITFIELD_SET(__GXData->vcdHiReg, 24, 2, type); - break; - case GX_VA_TEX4: - GX_BITFIELD_SET(__GXData->vcdHiReg, 22, 2, type); - break; - case GX_VA_TEX5: - GX_BITFIELD_SET(__GXData->vcdHiReg, 20, 2, type); - break; - case GX_VA_TEX6: - GX_BITFIELD_SET(__GXData->vcdHiReg, 18, 2, type); - break; - case GX_VA_TEX7: - GX_BITFIELD_SET(__GXData->vcdHiReg, 16, 2, type); - break; + switch (name) { + case GX_VA_PNMTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_POSMTXIDX_ST, GX_CP_VCD_LO_POSMTXIDX_END); + break; + case GX_VA_TEX0MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX0MTXIDX_ST, + GX_CP_VCD_LO_TEX0MTXIDX_END); + break; + case GX_VA_TEX1MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX1MTXIDX_ST, + GX_CP_VCD_LO_TEX1MTXIDX_END); + break; + case GX_VA_TEX2MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX2MTXIDX_ST, + GX_CP_VCD_LO_TEX2MTXIDX_END); + break; + case GX_VA_TEX3MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX3MTXIDX_ST, + GX_CP_VCD_LO_TEX3MTXIDX_END); + break; + case GX_VA_TEX4MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX4MTXIDX_ST, + GX_CP_VCD_LO_TEX4MTXIDX_END); + break; + case GX_VA_TEX5MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX5MTXIDX_ST, + GX_CP_VCD_LO_TEX5MTXIDX_END); + break; + case GX_VA_TEX6MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX6MTXIDX_ST, + GX_CP_VCD_LO_TEX6MTXIDX_END); + break; + case GX_VA_TEX7MTXIDX: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_TEX7MTXIDX_ST, + GX_CP_VCD_LO_TEX7MTXIDX_END); + break; + case GX_VA_POS: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_POS_ST, GX_CP_VCD_LO_POS_END); + break; + case GX_VA_NRM: + if (type != GX_NONE) { + __GXData->hasNrms = TRUE; + __GXData->hasBiNrms = FALSE; + __GXData->nrmType = type; + } else { + __GXData->hasNrms = FALSE; + } + break; + case GX_VA_NBT: + if (type != GX_NONE) { + __GXData->hasBiNrms = TRUE; + __GXData->hasNrms = FALSE; + __GXData->nrmType = type; + } else { + __GXData->hasBiNrms = FALSE; + } + break; + case GX_VA_CLR0: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_CLRDIF_ST, GX_CP_VCD_LO_CLRDIF_END); + break; + case GX_VA_CLR1: + GX_SET_REG(__GXData->vcdLo, type, GX_CP_VCD_LO_CLRSPEC_ST, GX_CP_VCD_LO_CLRSPEC_END); + break; + case GX_VA_TEX0: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX0COORD_ST, GX_CP_VCD_HI_TEX0COORD_END); + break; + case GX_VA_TEX1: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX1COORD_ST, GX_CP_VCD_HI_TEX1COORD_END); + break; + case GX_VA_TEX2: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX2COORD_ST, GX_CP_VCD_HI_TEX2COORD_END); + break; + case GX_VA_TEX3: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX3COORD_ST, GX_CP_VCD_HI_TEX3COORD_END); + break; + case GX_VA_TEX4: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX4COORD_ST, GX_CP_VCD_HI_TEX4COORD_END); + break; + case GX_VA_TEX5: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX5COORD_ST, GX_CP_VCD_HI_TEX5COORD_END); + break; + case GX_VA_TEX6: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX6COORD_ST, GX_CP_VCD_HI_TEX6COORD_END); + break; + case GX_VA_TEX7: + GX_SET_REG(__GXData->vcdHi, type, GX_CP_VCD_HI_TEX7COORD_ST, GX_CP_VCD_HI_TEX7COORD_END); + break; } } @@ -123,129 +97,106 @@ void GXSetVtxDesc(GXAttr name, GXAttrType type) { SETVCDATTR(name, type); // Set normal data type if enabled - if (__GXData->hasNrm || __GXData->hasBiNrm) { - GX_BITFIELD_SET(__GXData->vcdLoReg, 19, 2, __GXData->nrmDataType); + if (__GXData->hasNrms || __GXData->hasBiNrms) { + GX_BITFIELD_SET(__GXData->vcdLo, 19, 2, __GXData->nrmType); + } else { + GX_BITFIELD_SET(__GXData->vcdLo, 19, 2, 0); } - else { - GX_BITFIELD_SET(__GXData->vcdLoReg, 19, 2, 0); - } - - __GXData->dirtyFlags |= GX_DIRTY_VCD; -} -/* ############################################################################################## */ -/* 803D22E8-803D2350 -00001 0068+00 1/1 0/0 0/0 .data @223 */ -SECTION_DATA static void* lit_223[26] = { - (void*)(((char*)GXSetVtxDescv) + 0x2C), (void*)(((char*)GXSetVtxDescv) + 0x40), - (void*)(((char*)GXSetVtxDescv) + 0x54), (void*)(((char*)GXSetVtxDescv) + 0x68), - (void*)(((char*)GXSetVtxDescv) + 0x7C), (void*)(((char*)GXSetVtxDescv) + 0x90), - (void*)(((char*)GXSetVtxDescv) + 0xA4), (void*)(((char*)GXSetVtxDescv) + 0xB8), - (void*)(((char*)GXSetVtxDescv) + 0xCC), (void*)(((char*)GXSetVtxDescv) + 0xE0), - (void*)(((char*)GXSetVtxDescv) + 0xF4), (void*)(((char*)GXSetVtxDescv) + 0x15C), - (void*)(((char*)GXSetVtxDescv) + 0x170), (void*)(((char*)GXSetVtxDescv) + 0x184), - (void*)(((char*)GXSetVtxDescv) + 0x198), (void*)(((char*)GXSetVtxDescv) + 0x1AC), - (void*)(((char*)GXSetVtxDescv) + 0x1C0), (void*)(((char*)GXSetVtxDescv) + 0x1D4), - (void*)(((char*)GXSetVtxDescv) + 0x1E8), (void*)(((char*)GXSetVtxDescv) + 0x1FC), - (void*)(((char*)GXSetVtxDescv) + 0x210), (void*)(((char*)GXSetVtxDescv) + 0x220), - (void*)(((char*)GXSetVtxDescv) + 0x220), (void*)(((char*)GXSetVtxDescv) + 0x220), - (void*)(((char*)GXSetVtxDescv) + 0x220), (void*)(((char*)GXSetVtxDescv) + 0x128), -}; + __GXData->dirtyState |= GX_DIRTY_VCD; +} /* 8035B124-8035B3AC 355A64 0288+00 1/0 0/0 1/1 .text GXSetVtxDescv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetVtxDescv(GXVtxDescList* list) { - nofralloc -#include "asm/dolphin/gx/GXAttr/GXSetVtxDescv.s" +void GXSetVtxDescv(GXVtxDescList* list) { + for (; list->attr != GX_VA_NULL; list++) { + SETVCDATTR(list->attr, list->type); + } + + // Set normal data type if enabled + if (__GXData->hasNrms || __GXData->hasBiNrms) { + GX_BITFIELD_SET(__GXData->vcdLo, 19, 2, __GXData->nrmType); + } else { + GX_BITFIELD_SET(__GXData->vcdLo, 19, 2, 0); + } + + __GXData->dirtyState |= GX_DIRTY_VCD; +} + +static void __GXXfVtxSpecs(void) { + u32 normCount, colorCount, texCount; + + normCount = __GXData->hasBiNrms ? 2 : (__GXData->hasNrms ? 1 : 0); + + // Both fields in one access + colorCount = 33 - __cntlzw((__GXData->vcdLo & (0xf << 0xd)) >> 0xd); + colorCount /= 2; // equivalent to /=2 and >>= 1 + + // All 16 assigned bits in VCD_Hi + texCount = 33 - __cntlzw((__GXData->vcdHi & (0xffff << 0)) >> 0); + texCount /= 2; // equivalent to /=2 and >>= 1 + + GX_XF_LOAD_REG(GX_XF_REG_INVERTEXSPEC, (colorCount) | (normCount << 2) | (texCount << 4)); + __GXData->bpSentNot = GX_TRUE; + + return; } -#pragma pop /* 8035B3AC-8035B468 355CEC 00BC+00 0/0 2/2 0/0 .text __GXSetVCD */ -// regalloc -#ifdef NONMATCHING -static void __GXXfVtxSpecs(void) { - u32 normCount, colorCount, texCount, x, tmp; - - normCount = __GXData->hasBiNrm ? 2 : (__GXData->hasNrm ? 1 : 0); - - // Both fields in one access - colorCount = 33 - __cntlzw(GX_GET_REG(__GXData->vcdLoReg, GX_CP_VCD_LO_CLRSPEC_ST, GX_CP_VCD_LO_CLRDIF_END)); - colorCount = (colorCount) / 2; - - // All 16 assigned bits in VCD_Hi - texCount = (33 - __cntlzw(GX_GET_REG(__GXData->vcdHiReg, GX_CP_VCD_HI_TEX7COORD_ST, GX_CP_VCD_HI_TEX0COORD_END))); - texCount = texCount / 2; - - GX_XF_LOAD_REG(GX_XF_REG_INVERTEXSPEC, colorCount | normCount << 2 | texCount << 4); - __GXData->bpSentNot = GX_TRUE; -} - void __GXSetVCD(void) { + GX_CP_LOAD_REG(GX_CP_REG_VCD_LO, __GXData->vcdLo); + GX_CP_LOAD_REG(GX_CP_REG_VCD_HI, __GXData->vcdHi); - GX_CP_LOAD_REG(GX_CP_REG_VCD_LO, __GXData->vcdLoReg); - GX_CP_LOAD_REG(GX_CP_REG_VCD_HI, __GXData->vcdHiReg); - - __GXXfVtxSpecs(); + __GXXfVtxSpecs(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetVCD(void) { - nofralloc -#include "asm/dolphin/gx/GXAttr/__GXSetVCD.s" -} -#pragma pop -#endif /* 8035B468-8035B58C 355DA8 0124+00 0/0 2/2 0/0 .text __GXCalculateVLim */ void __GXCalculateVLim(void) { - static u8 tbl1[] = { 0, 4, 1, 2 }; - static u8 tbl2[] = { 0, 8, 1, 2 }; - static u8 tbl3[] = { 0, 12, 1, 2 }; + static u8 tbl1[] = {0, 4, 1, 2}; + static u8 tbl2[] = {0, 8, 1, 2}; + static u8 tbl3[] = {0, 12, 1, 2}; - u32 vlim; - u32 vcdLoReg; - u32 vcdHiReg; - s32 compCnt; + u32 vlim; + u32 vcdLoReg; + u32 vcdHiReg; + s32 compCnt; - if (__GXData->vNum == 0) { - return; - } + if (__GXData->vNum == 0) { + return; + } - vcdLoReg = __GXData->vcdLoReg; - vcdHiReg = __GXData->vcdHiReg; + vcdLoReg = __GXData->vcdLo; + vcdHiReg = __GXData->vcdHi; - // GXCompCnt bit of normal parameters - compCnt = __GXData->vatA[GX_VTXFMT0]; - compCnt = (compCnt & 0x200) >> 9; + // GXCompCnt bit of normal parameters + compCnt = __GXData->vatA[GX_VTXFMT0]; + compCnt = (compCnt & 0x200) >> 9; - vlim = GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_POSMTXIDX_ST, GX_CP_VCD_LO_POSMTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX0MTXIDX_ST, GX_CP_VCD_LO_TEX0MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX1MTXIDX_ST, GX_CP_VCD_LO_TEX1MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX2MTXIDX_ST, GX_CP_VCD_LO_TEX2MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX3MTXIDX_ST, GX_CP_VCD_LO_TEX3MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX4MTXIDX_ST, GX_CP_VCD_LO_TEX4MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX5MTXIDX_ST, GX_CP_VCD_LO_TEX5MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX6MTXIDX_ST, GX_CP_VCD_LO_TEX6MTXIDX_END); - vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX7MTXIDX_ST, GX_CP_VCD_LO_TEX7MTXIDX_END); + vlim = GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_POSMTXIDX_ST, GX_CP_VCD_LO_POSMTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX0MTXIDX_ST, GX_CP_VCD_LO_TEX0MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX1MTXIDX_ST, GX_CP_VCD_LO_TEX1MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX2MTXIDX_ST, GX_CP_VCD_LO_TEX2MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX3MTXIDX_ST, GX_CP_VCD_LO_TEX3MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX4MTXIDX_ST, GX_CP_VCD_LO_TEX4MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX5MTXIDX_ST, GX_CP_VCD_LO_TEX5MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX6MTXIDX_ST, GX_CP_VCD_LO_TEX6MTXIDX_END); + vlim += GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_TEX7MTXIDX_ST, GX_CP_VCD_LO_TEX7MTXIDX_END); - vlim += tbl3[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_POS_ST, GX_CP_VCD_LO_POS_END)]; - vlim += tbl3[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_NRM_ST, GX_CP_VCD_LO_NRM_END)] * (compCnt == GX_NRM_NBT ? 3 : 1); - vlim += tbl1[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_CLRDIF_ST, GX_CP_VCD_LO_CLRDIF_END)]; - vlim += tbl1[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_CLRSPEC_ST, GX_CP_VCD_LO_CLRSPEC_END)]; + vlim += tbl3[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_POS_ST, GX_CP_VCD_LO_POS_END)]; + vlim += tbl3[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_NRM_ST, GX_CP_VCD_LO_NRM_END)] * + (compCnt == GX_NRM_NBT ? 3 : 1); + vlim += tbl1[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_CLRDIF_ST, GX_CP_VCD_LO_CLRDIF_END)]; + vlim += tbl1[GX_GET_REG(vcdLoReg, GX_CP_VCD_LO_CLRSPEC_ST, GX_CP_VCD_LO_CLRSPEC_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX0COORD_ST, GX_CP_VCD_HI_TEX0COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX1COORD_ST, GX_CP_VCD_HI_TEX1COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX2COORD_ST, GX_CP_VCD_HI_TEX2COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX3COORD_ST, GX_CP_VCD_HI_TEX3COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX4COORD_ST, GX_CP_VCD_HI_TEX4COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX5COORD_ST, GX_CP_VCD_HI_TEX5COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX6COORD_ST, GX_CP_VCD_HI_TEX6COORD_END)]; - vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX7COORD_ST, GX_CP_VCD_HI_TEX7COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX0COORD_ST, GX_CP_VCD_HI_TEX0COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX1COORD_ST, GX_CP_VCD_HI_TEX1COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX2COORD_ST, GX_CP_VCD_HI_TEX2COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX3COORD_ST, GX_CP_VCD_HI_TEX3COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX4COORD_ST, GX_CP_VCD_HI_TEX4COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX5COORD_ST, GX_CP_VCD_HI_TEX5COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX6COORD_ST, GX_CP_VCD_HI_TEX6COORD_END)]; + vlim += tbl2[GX_GET_REG(vcdHiReg, GX_CP_VCD_HI_TEX7COORD_ST, GX_CP_VCD_HI_TEX7COORD_END)]; - __GXData->vLim = vlim; + __GXData->vLim = vlim; } void GXGetVtxDesc(int param_0, GXAttrType* param_1) { @@ -253,78 +204,78 @@ void GXGetVtxDesc(int param_0, GXAttrType* param_1) { switch (param_0) { case 0: - local_38 = __GXData->vcdLoReg & 1; + local_38 = __GXData->vcdLo & 1; break; case 1: - local_38 = (__GXData->vcdLoReg & 2) >> 1; + local_38 = (__GXData->vcdLo & 2) >> 1; break; case 2: - local_38 = (__GXData->vcdLoReg & 4) >> 2; + local_38 = (__GXData->vcdLo & 4) >> 2; break; case 3: - local_38 = (__GXData->vcdLoReg & 8) >> 3; + local_38 = (__GXData->vcdLo & 8) >> 3; break; case 4: - local_38 = (__GXData->vcdLoReg & 0x10) >> 4; + local_38 = (__GXData->vcdLo & 0x10) >> 4; break; case 5: - local_38 = (__GXData->vcdLoReg & 0x20) >> 5; + local_38 = (__GXData->vcdLo & 0x20) >> 5; break; case 6: - local_38 = (__GXData->vcdLoReg & 0x40) >> 6; + local_38 = (__GXData->vcdLo & 0x40) >> 6; break; case 7: - local_38 = (__GXData->vcdLoReg & 0x80) >> 7; + local_38 = (__GXData->vcdLo & 0x80) >> 7; break; case 8: - local_38 = (__GXData->vcdLoReg & 0x100) >> 8; + local_38 = (__GXData->vcdLo & 0x100) >> 8; break; case 9: - local_38 = (__GXData->vcdLoReg & 0x600) >> 9; + local_38 = (__GXData->vcdLo & 0x600) >> 9; break; case 10: - if (__GXData->hasNrm != 0) { - local_38 = (__GXData->vcdLoReg & 0x1800) >> 11; + if (__GXData->hasNrms != 0) { + local_38 = (__GXData->vcdLo & 0x1800) >> 11; } else { local_38 = 0; } break; case 0x19: - if (__GXData->hasBiNrm != 0) { - local_38 = (__GXData->vcdLoReg & 0x1800) >> 11; + if (__GXData->hasBiNrms != 0) { + local_38 = (__GXData->vcdLo & 0x1800) >> 11; } else { local_38 = 0; } break; case 11: - local_38 = (__GXData->vcdLoReg & 0x6000) >> 13; + local_38 = (__GXData->vcdLo & 0x6000) >> 13; break; case 12: - local_38 = (__GXData->vcdLoReg & 0x18000) >> 15; + local_38 = (__GXData->vcdLo & 0x18000) >> 15; break; case 13: - local_38 = (__GXData->vcdHiReg & 3); + local_38 = (__GXData->vcdHi & 3); break; case 14: - local_38 = (__GXData->vcdHiReg & 0xC) >> 2; + local_38 = (__GXData->vcdHi & 0xC) >> 2; break; case 15: - local_38 = (__GXData->vcdHiReg & 0x30) >> 4; + local_38 = (__GXData->vcdHi & 0x30) >> 4; break; case 16: - local_38 = (__GXData->vcdHiReg & 0xC0) >> 6; + local_38 = (__GXData->vcdHi & 0xC0) >> 6; break; case 17: - local_38 = (__GXData->vcdHiReg & 0x300) >> 8; + local_38 = (__GXData->vcdHi & 0x300) >> 8; break; case 18: - local_38 = (__GXData->vcdHiReg & 0xC00) >> 10; + local_38 = (__GXData->vcdHi & 0xC00) >> 10; break; case 19: - local_38 = (__GXData->vcdHiReg & 0x3000) >> 12; + local_38 = (__GXData->vcdHi & 0x3000) >> 12; break; case 20: - local_38 = (__GXData->vcdHiReg & 0xC000) >> 14; + local_38 = (__GXData->vcdHi & 0xC000) >> 14; break; default: local_38 = 0; @@ -351,132 +302,134 @@ void GXGetVtxDescv(GXVtxDescList* attrPtr) { /* 8035B58C-8035B5C4 355ECC 0038+00 0/0 66/66 7/7 .text GXClearVtxDesc */ void GXClearVtxDesc(void) { - __GXData->vcdLoReg = 0; - GX_BITFIELD_SET(__GXData->vcdLoReg, 0x15, 2, GX_DIRECT); - __GXData->vcdHiReg = 0; - __GXData->hasNrm = FALSE; - __GXData->hasBiNrm = FALSE; - __GXData->dirtyFlags |= GX_DIRTY_VCD; + __GXData->vcdLo = 0; + GX_BITFIELD_SET(__GXData->vcdLo, 0x15, 2, GX_DIRECT); + __GXData->vcdHi = 0; + __GXData->hasNrms = FALSE; + __GXData->hasBiNrms = FALSE; + __GXData->dirtyState |= GX_DIRTY_VCD; } /* ############################################################################################## */ -static inline void SETVAT(u32* vatA, u32* vatB, u32* vatC, GXAttr attr, GXCompCnt compCnt, GXCompType compType, u8 shift) -{ - switch (attr) { - case GX_VA_POS: - GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_POS_CNT_ST, GX_CP_VAT_GRP0_POS_CNT_END); - GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_POS_TYPE_ST, GX_CP_VAT_GRP0_POS_TYPE_END); - GX_SET_REG(*vatA, shift, GX_CP_VAT_GRP0_POS_SHIFT_ST, GX_CP_VAT_GRP0_POS_SHIFT_END); - break; - case GX_VA_NRM: - case GX_VA_NBT: - GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_NRM_TYPE_ST, GX_CP_VAT_GRP0_NRM_TYPE_END); - if (compCnt == GX_NRM_NBT3) { - // Probably because the compCnt can only be one bit? - GX_SET_REG(*vatA, GX_NRM_NBT, GX_CP_VAT_GRP0_NRM_CNT_ST, GX_CP_VAT_GRP0_NRM_CNT_END); - GX_SET_REG(*vatA, TRUE, GX_CP_VAT_GRP0_NRMIDX3_ST, GX_CP_VAT_GRP0_NRMIDX3_END); - } else { - GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_NRM_CNT_ST, GX_CP_VAT_GRP0_NRM_CNT_END); - GX_SET_REG(*vatA, FALSE, GX_CP_VAT_GRP0_NRMIDX3_ST, GX_CP_VAT_GRP0_NRMIDX3_END); - } - break; - case GX_VA_CLR0: - GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRDIFF_CNT_ST, GX_CP_VAT_GRP0_CLRDIFF_CNT_END); - GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST, GX_CP_VAT_GRP0_CLRDIFF_TYPE_END); - break; - case GX_VA_CLR1: - GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRSPEC_CNT_ST, GX_CP_VAT_GRP0_CLRSPEC_CNT_END); - GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST, GX_CP_VAT_GRP0_CLRSPEC_TYPE_END); - break; - case GX_VA_TEX0: - GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_TXC0_CNT_ST, GX_CP_VAT_GRP0_TXC0_CNT_END); - GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_TXC0_TYPE_ST, GX_CP_VAT_GRP0_TXC0_TYPE_END); - GX_SET_REG(*vatA, shift, GX_CP_VAT_GRP0_TXC0_SHIFT_ST, GX_CP_VAT_GRP0_TXC0_SHIFT_END); - break; - case GX_VA_TEX1: - GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC1_CNT_ST, GX_CP_VAT_GRP1_TXC1_CNT_END); - GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC1_TYPE_ST, GX_CP_VAT_GRP1_TXC1_TYPE_END); - GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC1_SHIFT_ST, GX_CP_VAT_GRP1_TXC1_SHIFT_END); - break; - case GX_VA_TEX2: - GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC2_CNT_ST, GX_CP_VAT_GRP1_TXC2_CNT_END); - GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC2_TYPE_ST, GX_CP_VAT_GRP1_TXC2_TYPE_END); - GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC2_SHIFT_ST, GX_CP_VAT_GRP1_TXC2_SHIFT_END); - break; - case GX_VA_TEX3: - GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC3_CNT_ST, GX_CP_VAT_GRP1_TXC3_CNT_END); - GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC3_TYPE_ST, GX_CP_VAT_GRP1_TXC3_TYPE_END); - GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC3_SHIFT_ST, GX_CP_VAT_GRP1_TXC3_SHIFT_END); - break; - case GX_VA_TEX4: - GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC4_CNT_ST, GX_CP_VAT_GRP1_TXC4_CNT_END); - GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC4_TYPE_ST, GX_CP_VAT_GRP1_TXC4_TYPE_END); - GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC4_SHIFT_ST, GX_CP_VAT_GRP2_TXC4_SHIFT_END); - break; - case GX_VA_TEX5: - GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC5_CNT_ST, GX_CP_VAT_GRP2_TXC5_CNT_END); - GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC5_TYPE_ST, GX_CP_VAT_GRP2_TXC5_TYPE_END); - GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC5_SHIFT_ST, GX_CP_VAT_GRP2_TXC5_SHIFT_END); - break; - case GX_VA_TEX6: - GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC6_CNT_ST, GX_CP_VAT_GRP2_TXC6_CNT_END); - GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC6_TYPE_ST, GX_CP_VAT_GRP2_TXC6_TYPE_END); - GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC6_SHIFT_ST, GX_CP_VAT_GRP2_TXC6_SHIFT_END); - break; - case GX_VA_TEX7: - GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC7_CNT_ST, GX_CP_VAT_GRP2_TXC7_CNT_END); - GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC7_TYPE_ST, GX_CP_VAT_GRP2_TXC7_TYPE_END); - GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC7_SHIFT_ST, GX_CP_VAT_GRP2_TXC7_SHIFT_END); - break; - } +static inline void SETVAT(u32* vatA, u32* vatB, u32* vatC, GXAttr attr, GXCompCnt compCnt, + GXCompType compType, u8 shift) { + switch (attr) { + case GX_VA_POS: + GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_POS_CNT_ST, GX_CP_VAT_GRP0_POS_CNT_END); + GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_POS_TYPE_ST, GX_CP_VAT_GRP0_POS_TYPE_END); + GX_SET_REG(*vatA, shift, GX_CP_VAT_GRP0_POS_SHIFT_ST, GX_CP_VAT_GRP0_POS_SHIFT_END); + break; + case GX_VA_NRM: + case GX_VA_NBT: + GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_NRM_TYPE_ST, GX_CP_VAT_GRP0_NRM_TYPE_END); + if (compCnt == GX_NRM_NBT3) { + // Probably because the compCnt can only be one bit? + GX_SET_REG(*vatA, GX_NRM_NBT, GX_CP_VAT_GRP0_NRM_CNT_ST, GX_CP_VAT_GRP0_NRM_CNT_END); + GX_SET_REG(*vatA, TRUE, GX_CP_VAT_GRP0_NRMIDX3_ST, GX_CP_VAT_GRP0_NRMIDX3_END); + } else { + GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_NRM_CNT_ST, GX_CP_VAT_GRP0_NRM_CNT_END); + GX_SET_REG(*vatA, FALSE, GX_CP_VAT_GRP0_NRMIDX3_ST, GX_CP_VAT_GRP0_NRMIDX3_END); + } + break; + case GX_VA_CLR0: + GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRDIFF_CNT_ST, GX_CP_VAT_GRP0_CLRDIFF_CNT_END); + GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST, + GX_CP_VAT_GRP0_CLRDIFF_TYPE_END); + break; + case GX_VA_CLR1: + GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRSPEC_CNT_ST, GX_CP_VAT_GRP0_CLRSPEC_CNT_END); + GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST, + GX_CP_VAT_GRP0_CLRSPEC_TYPE_END); + break; + case GX_VA_TEX0: + GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_TXC0_CNT_ST, GX_CP_VAT_GRP0_TXC0_CNT_END); + GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_TXC0_TYPE_ST, GX_CP_VAT_GRP0_TXC0_TYPE_END); + GX_SET_REG(*vatA, shift, GX_CP_VAT_GRP0_TXC0_SHIFT_ST, GX_CP_VAT_GRP0_TXC0_SHIFT_END); + break; + case GX_VA_TEX1: + GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC1_CNT_ST, GX_CP_VAT_GRP1_TXC1_CNT_END); + GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC1_TYPE_ST, GX_CP_VAT_GRP1_TXC1_TYPE_END); + GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC1_SHIFT_ST, GX_CP_VAT_GRP1_TXC1_SHIFT_END); + break; + case GX_VA_TEX2: + GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC2_CNT_ST, GX_CP_VAT_GRP1_TXC2_CNT_END); + GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC2_TYPE_ST, GX_CP_VAT_GRP1_TXC2_TYPE_END); + GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC2_SHIFT_ST, GX_CP_VAT_GRP1_TXC2_SHIFT_END); + break; + case GX_VA_TEX3: + GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC3_CNT_ST, GX_CP_VAT_GRP1_TXC3_CNT_END); + GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC3_TYPE_ST, GX_CP_VAT_GRP1_TXC3_TYPE_END); + GX_SET_REG(*vatB, shift, GX_CP_VAT_GRP1_TXC3_SHIFT_ST, GX_CP_VAT_GRP1_TXC3_SHIFT_END); + break; + case GX_VA_TEX4: + GX_SET_REG(*vatB, compCnt, GX_CP_VAT_GRP1_TXC4_CNT_ST, GX_CP_VAT_GRP1_TXC4_CNT_END); + GX_SET_REG(*vatB, compType, GX_CP_VAT_GRP1_TXC4_TYPE_ST, GX_CP_VAT_GRP1_TXC4_TYPE_END); + GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC4_SHIFT_ST, GX_CP_VAT_GRP2_TXC4_SHIFT_END); + break; + case GX_VA_TEX5: + GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC5_CNT_ST, GX_CP_VAT_GRP2_TXC5_CNT_END); + GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC5_TYPE_ST, GX_CP_VAT_GRP2_TXC5_TYPE_END); + GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC5_SHIFT_ST, GX_CP_VAT_GRP2_TXC5_SHIFT_END); + break; + case GX_VA_TEX6: + GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC6_CNT_ST, GX_CP_VAT_GRP2_TXC6_CNT_END); + GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC6_TYPE_ST, GX_CP_VAT_GRP2_TXC6_TYPE_END); + GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC6_SHIFT_ST, GX_CP_VAT_GRP2_TXC6_SHIFT_END); + break; + case GX_VA_TEX7: + GX_SET_REG(*vatC, compCnt, GX_CP_VAT_GRP2_TXC7_CNT_ST, GX_CP_VAT_GRP2_TXC7_CNT_END); + GX_SET_REG(*vatC, compType, GX_CP_VAT_GRP2_TXC7_TYPE_ST, GX_CP_VAT_GRP2_TXC7_TYPE_END); + GX_SET_REG(*vatC, shift, GX_CP_VAT_GRP2_TXC7_SHIFT_ST, GX_CP_VAT_GRP2_TXC7_SHIFT_END); + break; + } } /* 8035B5C4-8035B820 355F04 025C+00 1/0 69/69 6/6 .text GXSetVtxAttrFmt */ void GXSetVtxAttrFmt(GXVtxFmt format, GXAttr attr, GXCompCnt count, GXCompType type, u8 frac) { - u32* vA = (u32*)&__GXData->vatA[format]; - u32* vB = (u32*)&__GXData->vatB[format]; - u32* vC = &__GXData->vatC[format]; + u32* vA = (u32*)&__GXData->vatA[format]; + u32* vB = (u32*)&__GXData->vatB[format]; + u32* vC = &__GXData->vatC[format]; - SETVAT(vA, vB, vC, attr, count, type, frac); + SETVAT(vA, vB, vC, attr, count, type, frac); - __GXData->dirtyFlags |= GX_DIRTY_VAT; - __GXData->dirtyVAT |= (u8)(1 << (u8)format); + __GXData->dirtyState |= GX_DIRTY_VAT; + __GXData->dirtyVAT |= (u8)(1 << (u8)format); } /* 8035B820-8035BAA0 356160 0280+00 1/0 1/1 1/1 .text GXSetVtxAttrFmtv */ void GXSetVtxAttrFmtv(GXVtxFmt format, GXVtxAttrFmtList* list) { - u32* vatA; - u32* vatB; - u32* vatC; + u32* vatA; + u32* vatB; + u32* vatC; - vatA = (u32*)&__GXData->vatA[format]; - vatB = (u32*)&__GXData->vatB[format]; - vatC = &__GXData->vatC[format]; + vatA = (u32*)&__GXData->vatA[format]; + vatB = (u32*)&__GXData->vatB[format]; + vatC = &__GXData->vatC[format]; - for (; list->mAttrib != GX_VA_NULL; list++) { - SETVAT(vatA, vatB, vatC, list->mAttrib, list->mCompCnt, list->mCompType, list->mCompShift); - } + for (; list->mAttrib != GX_VA_NULL; list++) { + SETVAT(vatA, vatB, vatC, list->mAttrib, list->mCompCnt, list->mCompType, list->mCompShift); + } - __GXData->dirtyFlags |= GX_DIRTY_VAT; - __GXData->dirtyVAT |= (u8)(1 << (u8)format); + __GXData->dirtyState |= GX_DIRTY_VAT; + __GXData->dirtyVAT |= (u8)(1 << (u8)format); } /* 8035BAA0-8035BB28 3563E0 0088+00 0/0 2/2 0/0 .text __GXSetVAT */ void __GXSetVAT(void) { - u32 i = 0; + u32 i = 0; u32 dirtyVAT = __GXData->dirtyVAT; - do { - if (dirtyVAT & (1)) { - GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP0 | i, __GXData->vatA[i]); - GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP1 | i, __GXData->vatB[i]); - GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP2 | i, __GXData->vatC[i]); - } + do { + if (dirtyVAT & (1)) { + GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP0 | i, __GXData->vatA[i]); + GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP1 | i, __GXData->vatB[i]); + GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP2 | i, __GXData->vatC[i]); + } dirtyVAT >>= 1; i++; - } while (dirtyVAT != 0); + } while (dirtyVAT != 0); - __GXData->dirtyVAT = 0; + __GXData->dirtyVAT = 0; } static u8 GetFracForNrm(int param_0) { @@ -557,8 +510,8 @@ void GXGetVtxAttrFmt(GXVtxFmt param_0, int param_1, GXCompCnt* param_2, GXCompTy } */ #endif - tmp_1 = &__GXData->vatA[param_0]; - tmp_2 = &__GXData->vatB[param_0]; + tmp_1 = (GXCompCnt*)&__GXData->vatA[param_0]; + tmp_2 = (GXCompCnt*)&__GXData->vatB[param_0]; tmp_3 = &__GXData->vatC[param_0]; switch (param_1) { @@ -636,171 +589,175 @@ void GXGetVtxAttrFmt(GXVtxFmt param_0, int param_1, GXCompCnt* param_2, GXCompTy /* 8035BB28-8035BB6C 356468 0044+00 0/0 13/13 5/5 .text GXSetArray */ void GXSetArray(GXAttr attr, void* basePtr, u8 stride) { - s32 newAttr; - s32 attrReg; + s32 newAttr; + s32 attrReg; - newAttr = attr; - if (newAttr == GX_VA_NBT) { - newAttr = GX_VA_NRM; - } + newAttr = attr; + if (newAttr == GX_VA_NBT) { + newAttr = GX_VA_NRM; + } - attrReg = newAttr - GX_VA_POS; + attrReg = newAttr - GX_VA_POS; - GX_CP_LOAD_REG(GX_BP_REG_SETMODE0_TEX4 | attrReg, - // Address -> offset? - (u32)basePtr & ~0xC0000000); + GX_CP_LOAD_REG(GX_BP_REG_SETMODE0_TEX4 | attrReg, + // Address -> offset? + (u32)basePtr & ~0xC0000000); - GX_CP_LOAD_REG(GX_BP_REG_SETIMAGE2_TEX4 | attrReg, stride); + GX_CP_LOAD_REG(GX_BP_REG_SETIMAGE2_TEX4 | attrReg, stride); } /* 8035BB6C-8035BB7C 3564AC 0010+00 0/0 6/6 0/0 .text GXInvalidateVtxCache */ -void GXInvalidateVtxCache(void) { - GXFIFO.u8 = GX_FIFO_CMD_INVAL_VTX; +void GXInvalidateVtxCache(void) { + GXWGFifo.u8 = GX_FIFO_CMD_INVAL_VTX; } /* 8035BB7C-8035BDFC 3564BC 0280+00 2/0 46/46 5/5 .text GXSetTexCoordGen2 */ -void GXSetTexCoordGen2(GXTexCoordID id, GXTexGenType type, GXTexGenSrc src, u32 texMtxIdx, GXBool normalize, u32 dualTexMtxIdx) -{ - u32 reg; - u32 inputRow; - GXXfTexReg inputForm; +void GXSetTexCoordGen2(GXTexCoordID id, GXTexGenType type, GXTexGenSrc src, u32 texMtxIdx, + GXBool normalize, u32 dualTexMtxIdx) { + u32 reg; + u32 inputRow; + GXXfTexReg inputForm; - reg = 0; - inputForm = GX_XF_TEX_FORM_AB11; - inputRow = 5; + reg = 0; + inputForm = GX_XF_TEX_FORM_AB11; + inputRow = 5; - switch (src) { - case GX_TG_POS: - inputRow = 0; - inputForm = GX_XF_TEX_FORM_ABC1; - break; - case GX_TG_NRM: - inputRow = 1; - inputForm = GX_XF_TEX_FORM_ABC1; - break; - case GX_TG_BINRM: - inputRow = 3; - inputForm = GX_XF_TEX_FORM_ABC1; - break; - case GX_TG_TANGENT: - inputRow = 4; - inputForm = GX_XF_TEX_FORM_ABC1; - break; - case GX_TG_COLOR0: - inputRow = 2; - break; - case GX_TG_COLOR1: - inputRow = 2; - break; - case GX_TG_TEX0: - inputRow = 5; - break; - case GX_TG_TEX1: - inputRow = 6; - break; - case GX_TG_TEX2: - inputRow = 7; - break; - case GX_TG_TEX3: - inputRow = 8; - break; - case GX_TG_TEX4: - inputRow = 9; - break; - case GX_TG_TEX5: - inputRow = 10; - break; - case GX_TG_TEX6: - inputRow = 11; - break; - case GX_TG_TEX7: - inputRow = 12; - break; - } + switch (src) { + case GX_TG_POS: + inputRow = 0; + inputForm = GX_XF_TEX_FORM_ABC1; + break; + case GX_TG_NRM: + inputRow = 1; + inputForm = GX_XF_TEX_FORM_ABC1; + break; + case GX_TG_BINRM: + inputRow = 3; + inputForm = GX_XF_TEX_FORM_ABC1; + break; + case GX_TG_TANGENT: + inputRow = 4; + inputForm = GX_XF_TEX_FORM_ABC1; + break; + case GX_TG_COLOR0: + inputRow = 2; + break; + case GX_TG_COLOR1: + inputRow = 2; + break; + case GX_TG_TEX0: + inputRow = 5; + break; + case GX_TG_TEX1: + inputRow = 6; + break; + case GX_TG_TEX2: + inputRow = 7; + break; + case GX_TG_TEX3: + inputRow = 8; + break; + case GX_TG_TEX4: + inputRow = 9; + break; + case GX_TG_TEX5: + inputRow = 10; + break; + case GX_TG_TEX6: + inputRow = 11; + break; + case GX_TG_TEX7: + inputRow = 12; + break; + } - switch (type) { - case GX_TG_NRM: - GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, GX_XF_TEX_PROJTYPE_END); // 2x4 projection - GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); - GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); - GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); - break; - case GX_TG_POS: - GX_SET_REG(reg, GX_XF_TEX_PROJ_STQ, GX_XF_TEX_PROJTYPE_ST, GX_XF_TEX_PROJTYPE_END); // 3x4 projection - GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); - GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); - GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); - break; - case GX_TG_BUMP0: - case GX_TG_BUMP1: - case GX_TG_BUMP2: - case GX_TG_BUMP3: - case GX_TG_BUMP4: - case GX_TG_BUMP5: - case GX_TG_BUMP6: - case GX_TG_BUMP7: - GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, GX_XF_TEX_PROJTYPE_END); // 2x4 projection - GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); - GX_SET_REG(reg, GX_TG_NRM, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); - GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); - GX_SET_REG(reg, src - GX_TG_TEXCOORD0, GX_XF_TEX_BUMPSRCTEX_ST, GX_XF_TEX_BUMPSRCTEX_END); - GX_SET_REG(reg, type - GX_TG_BUMP0, GX_XF_TEX_BUMPSRCLIGHT_ST, GX_XF_TEX_BUMPSRCLIGHT_END); - break; - case GX_TG_SRTG: - GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, GX_XF_TEX_PROJTYPE_END); // 2x4 projection - GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); + switch (type) { + case GX_TG_NRM: + GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, + GX_XF_TEX_PROJTYPE_END); // 2x4 projection + GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); + GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); + GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); + break; + case GX_TG_POS: + GX_SET_REG(reg, GX_XF_TEX_PROJ_STQ, GX_XF_TEX_PROJTYPE_ST, + GX_XF_TEX_PROJTYPE_END); // 3x4 projection + GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); + GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); + GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); + break; + case GX_TG_BUMP0: + case GX_TG_BUMP1: + case GX_TG_BUMP2: + case GX_TG_BUMP3: + case GX_TG_BUMP4: + case GX_TG_BUMP5: + case GX_TG_BUMP6: + case GX_TG_BUMP7: + GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, + GX_XF_TEX_PROJTYPE_END); // 2x4 projection + GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); + GX_SET_REG(reg, GX_TG_NRM, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); + GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); + GX_SET_REG(reg, src - GX_TG_TEXCOORD0, GX_XF_TEX_BUMPSRCTEX_ST, GX_XF_TEX_BUMPSRCTEX_END); + GX_SET_REG(reg, type - GX_TG_BUMP0, GX_XF_TEX_BUMPSRCLIGHT_ST, GX_XF_TEX_BUMPSRCLIGHT_END); + break; + case GX_TG_SRTG: + GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST, + GX_XF_TEX_PROJTYPE_END); // 2x4 projection + GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END); - if (src == GX_TG_COLOR0) { - GX_SET_REG(reg, GX_XF_TG_CLR0, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); - } else { - GX_SET_REG(reg, GX_XF_TG_CLR1, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); - } - GX_SET_REG(reg, 2, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); - break; - default: - break; - } + if (src == GX_TG_COLOR0) { + GX_SET_REG(reg, GX_XF_TG_CLR0, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); + } else { + GX_SET_REG(reg, GX_XF_TG_CLR1, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END); + } + GX_SET_REG(reg, 2, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END); + break; + default: + break; + } - GX_XF_LOAD_REG(GX_XF_REG_TEX0 + id, reg); + GX_XF_LOAD_REG(GX_XF_REG_TEX0 + id, reg); - reg = 0; - GX_SET_REG(reg, dualTexMtxIdx - 0x40, GX_XF_MTXIDX0_GEOM_ST, GX_XF_MTXIDX0_GEOM_END); - GX_SET_REG(reg, normalize, GX_XF_DUALTEX_NORMALISE_ST, GX_XF_DUALTEX_NORMALISE_END); + reg = 0; + GX_SET_REG(reg, dualTexMtxIdx - 0x40, GX_XF_MTXIDX0_GEOM_ST, GX_XF_MTXIDX0_GEOM_END); + GX_SET_REG(reg, normalize, GX_XF_DUALTEX_NORMALISE_ST, GX_XF_DUALTEX_NORMALISE_END); - GX_XF_LOAD_REG(GX_XF_REG_DUALTEX0 + id, reg); + GX_XF_LOAD_REG(GX_XF_REG_DUALTEX0 + id, reg); - switch (id) { - case GX_TEXCOORD0: - GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX0_ST, GX_XF_MTXIDX0_TEX0_END); - break; - case GX_TEXCOORD1: - GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX1_ST, GX_XF_MTXIDX0_TEX1_END); - break; - case GX_TEXCOORD2: - GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX2_ST, GX_XF_MTXIDX0_TEX2_END); - break; - case GX_TEXCOORD3: - GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX3_ST, GX_XF_MTXIDX0_TEX3_END); - break; - case GX_TEXCOORD4: - GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX4_ST, GX_XF_MTXIDX1_TEX4_END); - break; - case GX_TEXCOORD5: - GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX5_ST, GX_XF_MTXIDX1_TEX5_END); - break; - case GX_TEXCOORD6: - GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX6_ST, GX_XF_MTXIDX1_TEX6_END); - break; - default: - GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX7_ST, GX_XF_MTXIDX1_TEX7_END); - break; - } - __GXSetMatrixIndex(id + 1); + switch (id) { + case GX_TEXCOORD0: + GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX0_ST, GX_XF_MTXIDX0_TEX0_END); + break; + case GX_TEXCOORD1: + GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX1_ST, GX_XF_MTXIDX0_TEX1_END); + break; + case GX_TEXCOORD2: + GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX2_ST, GX_XF_MTXIDX0_TEX2_END); + break; + case GX_TEXCOORD3: + GX_SET_REG(__GXData->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX3_ST, GX_XF_MTXIDX0_TEX3_END); + break; + case GX_TEXCOORD4: + GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX4_ST, GX_XF_MTXIDX1_TEX4_END); + break; + case GX_TEXCOORD5: + GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX5_ST, GX_XF_MTXIDX1_TEX5_END); + break; + case GX_TEXCOORD6: + GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX6_ST, GX_XF_MTXIDX1_TEX6_END); + break; + default: + GX_SET_REG(__GXData->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX7_ST, GX_XF_MTXIDX1_TEX7_END); + break; + } + __GXSetMatrixIndex(id + 1); } /* 8035BDFC-8035BE38 35673C 003C+00 0/0 59/59 6/6 .text GXSetNumTexGens */ void GXSetNumTexGens(u8 count) { - GX_SET_REG(__GXData->genMode, count, GX_BP_GENMODE_NUMTEX_ST, GX_BP_GENMODE_NUMTEX_END); - GX_XF_LOAD_REG(GX_XF_REG_NUMTEX, count); - __GXData->dirtyFlags |= GX_DIRTY_GEN_MODE; + GX_SET_REG(__GXData->genMode, count, GX_BP_GENMODE_NUMTEX_ST, GX_BP_GENMODE_NUMTEX_END); + GX_XF_LOAD_REG(GX_XF_REG_NUMTEX, count); + __GXData->dirtyState |= GX_DIRTY_GEN_MODE; } diff --git a/libs/dolphin/gx/GXBump.c b/libs/dolphin/gx/GXBump.c index 7c39490c03..0ba58d0e5a 100644 --- a/libs/dolphin/gx/GXBump.c +++ b/libs/dolphin/gx/GXBump.c @@ -4,7 +4,7 @@ */ #include "dolphin/gx/GXBump.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 8035ECC0-8035ED2C 359600 006C+00 1/1 3/3 0/0 .text GXSetTevIndirect */ void GXSetTevIndirect(GXTevStageID tevStage, GXIndTexStageID texStage, GXIndTexFormat texFmt, @@ -24,8 +24,8 @@ void GXSetTevIndirect(GXTevStageID tevStage, GXIndTexStageID texStage, GXIndTexF GX_BITFIELD_SET(field, 11, 1, addPrev); GX_BITFIELD_SET(field, 0, 8, stage); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = field; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = field; __GXData->bpSentNot = 0; } @@ -65,24 +65,24 @@ void GXSetIndTexMtx(GXIndTexMtxID mtxID, f32 offset[6], s8 scale_exp) { GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[3]); GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 0) & 3); GX_BITFIELD_SET(field, 0, 8, val * 3 + 6); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = field; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = field; field = 0; GX_BITFIELD_SET(field, 21, 11, 1024.0f * offset[1]); GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[4]); GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 2) & 3); GX_BITFIELD_SET(field, 0, 8, val * 3 + 7); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = field; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = field; field = 0; GX_BITFIELD_SET(field, 21, 11, 1024.0f * offset[2]); GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[5]); GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 4) & 3); GX_BITFIELD_SET(field, 0, 8, val * 3 + 8); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = field; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = field; __GXData->bpSentNot = 0; } @@ -94,35 +94,35 @@ void GXSetIndTexCoordScale(GXIndTexStageID texStage, GXIndTexScale scaleS, GXInd switch (texStage) { case GX_INDTEXSTAGE0: data = __GXData; - GX_BITFIELD_SET(data->field_0x128, 28, 4, scaleS); - GX_BITFIELD_SET(data->field_0x128, 24, 4, scaleT); - GX_BITFIELD_SET(data->field_0x128, 0, 8, 0x25); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = data->field_0x128; + GX_BITFIELD_SET(data->IndTexScale0, 28, 4, scaleS); + GX_BITFIELD_SET(data->IndTexScale0, 24, 4, scaleT); + GX_BITFIELD_SET(data->IndTexScale0, 0, 8, 0x25); + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = data->IndTexScale0; break; case GX_INDTEXSTAGE1: data = __GXData; - GX_BITFIELD_SET(data->field_0x128, 20, 4, scaleS); - GX_BITFIELD_SET(data->field_0x128, 16, 4, scaleT); - GX_BITFIELD_SET(data->field_0x128, 0, 8, 0x25); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = data->field_0x128; + GX_BITFIELD_SET(data->IndTexScale0, 20, 4, scaleS); + GX_BITFIELD_SET(data->IndTexScale0, 16, 4, scaleT); + GX_BITFIELD_SET(data->IndTexScale0, 0, 8, 0x25); + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = data->IndTexScale0; break; case GX_INDTEXSTAGE2: data = __GXData; - GX_BITFIELD_SET(data->field_0x12c, 28, 4, scaleS); - GX_BITFIELD_SET(data->field_0x12c, 24, 4, scaleT); - GX_BITFIELD_SET(data->field_0x12c, 0, 8, 0x26); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = data->field_0x12c; + GX_BITFIELD_SET(data->IndTexScale1, 28, 4, scaleS); + GX_BITFIELD_SET(data->IndTexScale1, 24, 4, scaleT); + GX_BITFIELD_SET(data->IndTexScale1, 0, 8, 0x26); + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = data->IndTexScale1; break; case GX_INDTEXSTAGE3: data = __GXData; - GX_BITFIELD_SET(data->field_0x12c, 20, 4, scaleS); - GX_BITFIELD_SET(data->field_0x12c, 16, 4, scaleT); - GX_BITFIELD_SET(data->field_0x12c, 0, 8, 0x26); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = data->field_0x12c; + GX_BITFIELD_SET(data->IndTexScale1, 20, 4, scaleS); + GX_BITFIELD_SET(data->IndTexScale1, 16, 4, scaleT); + GX_BITFIELD_SET(data->IndTexScale1, 0, 8, 0x26); + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = data->IndTexScale1; break; } @@ -164,8 +164,8 @@ void GXSetIndTexOrder(GXIndTexStageID stage, GXTexCoordID coord, GXTexMapID map) break; } - GXFIFO.u8 = 0x61; - GXFIFO.s32 = __GXData->iref; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = __GXData->iref; GXSetWasteFlags(); } @@ -173,7 +173,7 @@ void GXSetIndTexOrder(GXIndTexStageID stage, GXTexCoordID coord, GXTexMapID map) void GXSetNumIndStages(u8 num) { GXData* data = __GXData; GX_BITFIELD_SET(data->genMode, 13, 3, num); - data->dirtyFlags |= GX_DIRTY_BP_MASK | GX_DIRTY_GEN_MODE; + data->dirtyState |= GX_DIRTY_BP_MASK | GX_DIRTY_GEN_MODE; } /* 8035F0F8-8035F140 359A38 0048+00 0/0 16/16 0/0 .text GXSetTevDirect */ @@ -190,14 +190,14 @@ void __GXSetIndirectMask(u32 mask) { GXData* data = __GXData; GX_BITFIELD_SET(data->bpMask, 24, 8, mask); - GXFIFO.u8 = 0x61; - GXFIFO.s32 = data->bpMask; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = data->bpMask; data->bpSentNot = 0; } /* 8035F174-8035F198 359AB4 0024+00 0/0 4/4 0/0 .text __GXFlushTextureState */ void __GXFlushTextureState(void) { - GXFIFO.u8 = 0x61; - GXFIFO.s32 = __GXData->bpMask; + GXWGFifo.u8 = 0x61; + GXWGFifo.s32 = __GXData->bpMask; __GXData->bpSentNot = 0; } diff --git a/libs/dolphin/gx/GXDisplayList.c b/libs/dolphin/gx/GXDisplayList.c index 951fbbf78d..17ccf8e56c 100644 --- a/libs/dolphin/gx/GXDisplayList.c +++ b/libs/dolphin/gx/GXDisplayList.c @@ -4,11 +4,11 @@ */ #include "dolphin/gx/GXDisplayList.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 8035FEF0-8035FF60 35A830 0070+00 0/0 20/20 4/4 .text GXCallDisplayList */ void GXCallDisplayList(void* list, u32 nbytes) { - if (__GXData->dirtyFlags != 0) { + if (__GXData->dirtyState != 0) { __GXSetDirtyState(); } @@ -16,7 +16,7 @@ void GXCallDisplayList(void* list, u32 nbytes) { __GXSendFlushPrim(); } - GFX_FIFO(u8) = 0x40; - GFX_FIFO(u32) = (u32)list; - GFX_FIFO(u32) = nbytes; + GXWGFifo.u8 = 0x40; + GXWGFifo.u32 = (u32)list; + GXWGFifo.u32 = nbytes; } diff --git a/libs/dolphin/gx/GXDraw.c b/libs/dolphin/gx/GXDraw.c index cc44bb8b4d..42c4aa58cc 100644 --- a/libs/dolphin/gx/GXDraw.c +++ b/libs/dolphin/gx/GXDraw.c @@ -1,5 +1,5 @@ #include "dolphin/gx/GXDraw.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" static GXVtxDescList vcd[27]; static GXVtxAttrFmtList vat[27]; @@ -47,7 +47,7 @@ void GXDrawCylinder(u8 numEdges) { GXPosition3f32(sp1A0[i], sp10[i], temp_f31); GXNormal3f32(sp1A0[i], sp10[i], 0.0f); } - i_GXEnd(); + GXEnd(); GXBegin(GX_TRIANGLEFAN, GX_VTXFMT3, numEdges + 2); GXPosition3f32(0.0f, 0.0f, temp_f31); @@ -56,7 +56,7 @@ void GXDrawCylinder(u8 numEdges) { GXPosition3f32(sp1A0[i], -sp10[i], temp_f31); GXNormal3f32(0.0f, 0.0f, 1.0f); } - i_GXEnd(); + GXEnd(); GXBegin(GX_TRIANGLEFAN, GX_VTXFMT3, numEdges + 2); GXPosition3f32(0.0f, 0.0f, temp_f30); @@ -65,7 +65,7 @@ void GXDrawCylinder(u8 numEdges) { GXPosition3f32(sp1A0[i], sp10[i], temp_f30); GXNormal3f32(0.0f, 0.0f, -1.0f); } - i_GXEnd(); + GXEnd(); RestoreVertState(); } \ No newline at end of file diff --git a/libs/dolphin/gx/GXFifo.c b/libs/dolphin/gx/GXFifo.c index 0114e0baf8..8ace70badb 100644 --- a/libs/dolphin/gx/GXFifo.c +++ b/libs/dolphin/gx/GXFifo.c @@ -1,21 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: GXFifo -// - #include "dolphin/gx/GXFifo.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OSInterrupt.h" -#include "dolphin/os/OSAlloc.h" -#include "dolphin/os/OS.h" - -// -// Forward References: -// +#include "dolphin/gx.h" +#include "dolphin/os.h" static void GXInitFifoLimits(GXFifoObj* fifo, u32 hi_watermark, u32 lo_watermark); -/* ############################################################################################## */ /* 80451948-8045194C 000E48 0004+00 4/3 0/0 0/0 .sbss CPUFifo */ static GXFifoObj* CPUFifo; @@ -38,74 +26,72 @@ static GXBreakPtCallback BreakPointCB; static u32 __GXOverflowCount; static void GXOverflowHandler() { - __GXOverflowCount += 1; - __GXWriteFifoIntEnable(0, 1); - __GXWriteFifoIntReset(1, 0); - GXOverflowSuspendInProgress = TRUE; - OSSuspendThread(__GXCurrentThread); + __GXOverflowCount += 1; + __GXWriteFifoIntEnable(0, 1); + __GXWriteFifoIntReset(1, 0); + GXOverflowSuspendInProgress = TRUE; + OSSuspendThread(__GXCurrentThread); } static void GXUnderflowHandler() { - OSResumeThread(__GXCurrentThread); - GXOverflowSuspendInProgress = FALSE; - __GXWriteFifoIntReset(1, 1); - __GXWriteFifoIntEnable(1, 0); + OSResumeThread(__GXCurrentThread); + GXOverflowSuspendInProgress = FALSE; + __GXWriteFifoIntReset(1, 1); + __GXWriteFifoIntEnable(1, 0); } static void GXBreakPointHandler(OSContext* context) { - OSContext bpContext; + OSContext bpContext; - FAST_FLAG_SET(__GXData->cpEnable, 0, 5, 1); - GX_SET_CP_REG(1, __GXData->cpEnable); + FAST_FLAG_SET(__GXData->cpEnable, 0, 5, 1); + GX_SET_CP_REG(1, __GXData->cpEnable); - if (BreakPointCB) { - OSClearContext(&bpContext); - OSSetCurrentContext(&bpContext); - BreakPointCB(); - OSClearContext(&bpContext); - OSSetCurrentContext(context); - } + if (BreakPointCB) { + OSClearContext(&bpContext); + OSSetCurrentContext(&bpContext); + BreakPointCB(); + OSClearContext(&bpContext); + OSSetCurrentContext(context); + } } /* 8035A5A8-8035A6DC 354EE8 0134+00 1/1 0/0 0/0 .text GXCPInterruptHandler */ static void GXCPInterruptHandler(s16 p1, OSContext* context) { - __GXData->cpStatus = GX_GET_CP_REG(0); + __GXData->cpStatus = GX_GET_CP_REG(0); - if ((__GXData->cpEnable >> 3 & 1) && (__GXData->cpStatus >> 1 & 1)) { - GXUnderflowHandler(); - } + if ((__GXData->cpEnable >> 3 & 1) && (__GXData->cpStatus >> 1 & 1)) { + GXUnderflowHandler(); + } - if ((__GXData->cpEnable >> 2 & 1) && (__GXData->cpStatus >> 0 & 1)) { - GXOverflowHandler(); - } + if ((__GXData->cpEnable >> 2 & 1) && (__GXData->cpStatus >> 0 & 1)) { + GXOverflowHandler(); + } - if ((__GXData->cpEnable >> 5 & 1) && (__GXData->cpStatus >> 4 & 1)) { - GXBreakPointHandler(context); - } + if ((__GXData->cpEnable >> 5 & 1) && (__GXData->cpStatus >> 4 & 1)) { + GXBreakPointHandler(context); + } } /* 8035A6DC-8035A748 35501C 006C+00 0/0 2/2 0/0 .text GXInitFifoBase */ -void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size) -{ - fifo->base = base; - fifo->end = (void*)((u32)base + size - 4); - fifo->size = size; - fifo->rw_dst = 0; - GXInitFifoLimits(fifo, size - 0x4000, OSRoundDown32B(size / 2)); - GXInitFifoPtrs(fifo, base, base); +void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size) { + fifo->base = base; + fifo->end = (void*)((u32)base + size - 4); + fifo->size = size; + fifo->rw_dst = 0; + GXInitFifoLimits(fifo, size - 0x4000, OSRoundDown32B(size / 2)); + GXInitFifoPtrs(fifo, base, base); } /* 8035A748-8035A7B8 355088 0070+00 1/1 1/1 0/0 .text GXInitFifoPtrs */ -void GXInitFifoPtrs(GXFifoObj* fifo, void* readPtr, void* writePtr) -{ - int interrupts = OSDisableInterrupts(); - fifo->read_ptr = readPtr; - fifo->write_ptr = writePtr; - fifo->rw_dst = (u32)writePtr - (u32)readPtr; - if (fifo->rw_dst < 0) { - fifo->rw_dst += fifo->size; - } - OSRestoreInterrupts(interrupts); +void GXInitFifoPtrs(GXFifoObj* fifo, void* readPtr, void* writePtr) { + int interrupts = OSDisableInterrupts(); + fifo->read_ptr = readPtr; + fifo->write_ptr = writePtr; + fifo->rw_dst = (u32)writePtr - (u32)readPtr; + if (fifo->rw_dst < 0) { + fifo->rw_dst += fifo->size; + } + OSRestoreInterrupts(interrupts); } /* 8035A7B8-8035A7C4 3550F8 000C+00 1/1 0/0 0/0 .text GXInitFifoLimits */ @@ -116,88 +102,88 @@ static void GXInitFifoLimits(GXFifoObj* fifo, u32 hi_watermark, u32 lo_watermark /* 8035A7C4-8035A8EC 355104 0128+00 1/1 1/1 0/0 .text GXSetCPUFifo */ void GXSetCPUFifo(GXFifoObj* fifo) { - BOOL interrupts; - interrupts = OSDisableInterrupts(); + BOOL interrupts; + interrupts = OSDisableInterrupts(); - CPUFifo = fifo; + CPUFifo = fifo; - if (fifo == GPFifo) { - u32 reg; - GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); - GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); - reg = 0; - GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); - GX_BITFIELD_SET(reg, 5, 1, 0); - GX_SET_PI_REG(5, reg); + if (fifo == GPFifo) { + u32 reg; + GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); + GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); + reg = 0; + GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); + GX_BITFIELD_SET(reg, 5, 1, 0); + GX_SET_PI_REG(5, reg); - data_80451954 = GX_TRUE; + data_80451954 = GX_TRUE; - __GXWriteFifoIntReset(1, 1); - __GXWriteFifoIntEnable(1, 0); - __GXFifoLink(1); - } else { - u32 reg; - if (data_80451954) { - __GXFifoLink(0); - data_80451954 = GX_FALSE; - } - __GXWriteFifoIntEnable(0, 0); + __GXWriteFifoIntReset(1, 1); + __GXWriteFifoIntEnable(1, 0); + __GXFifoLink(1); + } else { + u32 reg; + if (data_80451954) { + __GXFifoLink(0); + data_80451954 = GX_FALSE; + } + __GXWriteFifoIntEnable(0, 0); - GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); - GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); - reg = 0; - GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); - GX_BITFIELD_SET(reg, 5, 1, 0); - GX_SET_PI_REG(5, reg); - } + GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); + GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); + reg = 0; + GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); + GX_BITFIELD_SET(reg, 5, 1, 0); + GX_SET_PI_REG(5, reg); + } - PPCSync(); + PPCSync(); - OSRestoreInterrupts(interrupts); + OSRestoreInterrupts(interrupts); } /* 8035A8EC-8035AA8C 35522C 01A0+00 1/1 1/1 0/0 .text GXSetGPFifo */ void GXSetGPFifo(GXFifoObj* fifo) { - int interrupts = OSDisableInterrupts(); + int interrupts = OSDisableInterrupts(); u32 reg; - __GXFifoReadDisable(); - __GXWriteFifoIntEnable(0, 0); - GPFifo = fifo; - GX_SET_CP_REG(16, (u16)fifo->base); - GX_SET_CP_REG(18, (u16)fifo->end); - GX_SET_CP_REG(24, (u16)fifo->rw_dst); - GX_SET_CP_REG(26, (u16)fifo->write_ptr); - GX_SET_CP_REG(28, (u16)fifo->read_ptr); - GX_SET_CP_REG(20, (u16)fifo->high_wtrmark); - GX_SET_CP_REG(22, (u16)fifo->low_wtrmark); + __GXFifoReadDisable(); + __GXWriteFifoIntEnable(0, 0); + GPFifo = fifo; + GX_SET_CP_REG(16, (u16)fifo->base); + GX_SET_CP_REG(18, (u16)fifo->end); + GX_SET_CP_REG(24, (u16)fifo->rw_dst); + GX_SET_CP_REG(26, (u16)fifo->write_ptr); + GX_SET_CP_REG(28, (u16)fifo->read_ptr); + GX_SET_CP_REG(20, (u16)fifo->high_wtrmark); + GX_SET_CP_REG(22, (u16)fifo->low_wtrmark); - GX_SET_CP_REG(17, ((u32)fifo->base & 0x3FFFFFFF) >> 16); - GX_SET_CP_REG(19, ((u32)fifo->end & 0x3FFFFFFF) >> 16); - GX_SET_CP_REG(25, (fifo->rw_dst) >> 16); - GX_SET_CP_REG(27, ((u32)fifo->write_ptr & 0x3FFFFFFF) >> 16); - GX_SET_CP_REG(29, ((u32)fifo->read_ptr & 0x3FFFFFFF) >> 16); - GX_SET_CP_REG(21, (fifo->high_wtrmark) >> 16); - GX_SET_CP_REG(23, (fifo->low_wtrmark) >> 16); + GX_SET_CP_REG(17, ((u32)fifo->base & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(19, ((u32)fifo->end & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(25, (fifo->rw_dst) >> 16); + GX_SET_CP_REG(27, ((u32)fifo->write_ptr & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(29, ((u32)fifo->read_ptr & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(21, (fifo->high_wtrmark) >> 16); + GX_SET_CP_REG(23, (fifo->low_wtrmark) >> 16); - PPCSync(); + PPCSync(); - if (CPUFifo == GPFifo) { - data_80451954 = 1; - __GXWriteFifoIntEnable(1, 0); - __GXFifoLink(1); - } else { - data_80451954 = 0; - __GXWriteFifoIntEnable(0, 0); - __GXFifoLink(0); - } + if (CPUFifo == GPFifo) { + data_80451954 = 1; + __GXWriteFifoIntEnable(1, 0); + __GXFifoLink(1); + } else { + data_80451954 = 0; + __GXWriteFifoIntEnable(0, 0); + __GXFifoLink(0); + } reg = __GXData->cpEnable; GX_BITFIELD_SET(reg, 0x1e, 1, 0); GX_BITFIELD_SET(reg, 0x1a, 1, 0); GX_SET_CP_REG(1, reg); GX_SET_CP_REG(1, __GXData->cpEnable); - __GXWriteFifoIntReset(1, 1); - __GXFifoReadEnable(); - OSRestoreInterrupts(interrupts); + __GXWriteFifoIntReset(1, 1); + __GXFifoReadEnable(); + OSRestoreInterrupts(interrupts); } /* 8035AA8C-8035AAC0 3553CC 0034+00 0/0 1/1 0/0 .text GXSaveCPUFifo */ @@ -208,31 +194,32 @@ void GXSaveCPUFifo(GXFifoObj* fifo) { /* 8035AAC0-8035AB88 355400 00C8+00 1/1 0/0 0/0 .text __GXSaveCPUFifoAux */ void __GXSaveCPUFifoAux(GXFifoObj* fifo) { - int interrupts = OSDisableInterrupts(); - fifo->base = OSPhysicalToCached(GX_GET_PI_REG(3)); - fifo->end = OSPhysicalToCached(GX_GET_PI_REG(4)); - fifo->write_ptr = OSPhysicalToCached(GX_GET_PI_REG(5) & ~0x4000000); - if (data_80451954 != 0) { - u32 reg2 = GX_GET_CP_REG(28) | ( GX_GET_CP_REG(29) << 16); - fifo->read_ptr = (void*)(reg2 + -0x80000000); - fifo->rw_dst = (((u32)GX_GET_CP_REG(24) | (GX_GET_CP_REG(25) << 16))); - } else { - fifo->rw_dst = (u32)fifo->write_ptr - (u32)fifo->read_ptr; - if (fifo->rw_dst < 0) { - fifo->rw_dst += fifo->size; - } - } - OSRestoreInterrupts(interrupts); + int interrupts = OSDisableInterrupts(); + fifo->base = OSPhysicalToCached(GX_GET_PI_REG(3)); + fifo->end = OSPhysicalToCached(GX_GET_PI_REG(4)); + fifo->write_ptr = OSPhysicalToCached(GX_GET_PI_REG(5) & ~0x4000000); + if (data_80451954 != 0) { + u32 reg2 = GX_GET_CP_REG(28) | (GX_GET_CP_REG(29) << 16); + fifo->read_ptr = (void*)(reg2 + -0x80000000); + fifo->rw_dst = (((u32)GX_GET_CP_REG(24) | (GX_GET_CP_REG(25) << 16))); + } else { + fifo->rw_dst = (u32)fifo->write_ptr - (u32)fifo->read_ptr; + if (fifo->rw_dst < 0) { + fifo->rw_dst += fifo->size; + } + } + OSRestoreInterrupts(interrupts); } /* 8035AB88-8035ABD8 3554C8 0050+00 0/0 2/2 0/0 .text GXGetGPStatus */ -void GXGetGPStatus(GXBool* overhi, GXBool* underlow, GXBool* readIdle, GXBool* cmdIdle, GXBool* brkpt) { - __GXData->cpStatus = GX_GET_CP_REG(0); - *overhi = __GXData->cpStatus & 1; - *underlow = (__GXData->cpStatus >> 1) & 1; - *readIdle = (__GXData->cpStatus >> 2) & 1; - *cmdIdle = (__GXData->cpStatus >> 3) & 1; - *brkpt = (__GXData->cpStatus >> 4) & 1; +void GXGetGPStatus(GXBool* overhi, GXBool* underlow, GXBool* readIdle, GXBool* cmdIdle, + GXBool* brkpt) { + __GXData->cpStatus = GX_GET_CP_REG(0); + *overhi = __GXData->cpStatus & 1; + *underlow = (__GXData->cpStatus >> 1) & 1; + *readIdle = (__GXData->cpStatus >> 2) & 1; + *cmdIdle = (__GXData->cpStatus >> 3) & 1; + *brkpt = (__GXData->cpStatus >> 4) & 1; } /* 8035ABD8-8035ABE0 355518 0008+00 0/0 1/1 0/0 .text GXGetFifoBase */ @@ -247,11 +234,11 @@ u32 GXGetFifoSize(GXFifoObj* fifo) { /* 8035ABE8-8035AC2C 355528 0044+00 0/0 1/1 0/0 .text GXSetBreakPtCallback */ GXBreakPtCallback GXSetBreakPtCallback(GXBreakPtCallback cb) { - GXBreakPtCallback oldCallback = BreakPointCB; - int interrupts = OSDisableInterrupts(); - BreakPointCB = cb; - OSRestoreInterrupts(interrupts); - return oldCallback; + GXBreakPtCallback oldCallback = BreakPointCB; + int interrupts = OSDisableInterrupts(); + BreakPointCB = cb; + OSRestoreInterrupts(interrupts); + return oldCallback; } /* 8035AC2C-8035AC78 35556C 004C+00 0/0 1/1 0/0 .text __GXFifoInit */ @@ -267,93 +254,92 @@ void __GXFifoInit(void) { /* 8035AC78-8035AC9C 3555B8 0024+00 1/1 0/0 0/0 .text __GXFifoReadEnable */ void __GXFifoReadEnable(void) { FAST_FLAG_SET(__GXData->cpEnable, 1, 0, 1); - GX_SET_CP_REG(1, __GXData->cpEnable); + GX_SET_CP_REG(1, __GXData->cpEnable); } /* 8035AC9C-8035ACC0 3555DC 0024+00 1/1 0/0 0/0 .text __GXFifoReadDisable */ void __GXFifoReadDisable(void) { FAST_FLAG_SET(__GXData->cpEnable, 0, 0, 1); - GX_SET_CP_REG(1, __GXData->cpEnable); + GX_SET_CP_REG(1, __GXData->cpEnable); } /* 8035ACC0-8035ACF4 355600 0034+00 2/2 0/0 0/0 .text __GXFifoLink */ void __GXFifoLink(u8 link) { - u32 b; - if (link) { - b = 1; - } else { - b = 0; - } - FAST_FLAG_SET(__GXData->cpEnable, b, 4, 1); - GX_SET_CP_REG(1, __GXData->cpEnable); + u32 b; + if (link) { + b = 1; + } else { + b = 0; + } + FAST_FLAG_SET(__GXData->cpEnable, b, 4, 1); + GX_SET_CP_REG(1, __GXData->cpEnable); } /* 8035ACF4-8035AD24 355634 0030+00 3/3 0/0 0/0 .text __GXWriteFifoIntEnable */ void __GXWriteFifoIntEnable(u32 p1, u32 p2) { - FAST_FLAG_SET(__GXData->cpEnable, p1, 2, 1); - FAST_FLAG_SET(__GXData->cpEnable, (u8)p2, 3, 1); - GX_SET_CP_REG(1, __GXData->cpEnable); + FAST_FLAG_SET(__GXData->cpEnable, p1, 2, 1); + FAST_FLAG_SET(__GXData->cpEnable, (u8)p2, 3, 1); + GX_SET_CP_REG(1, __GXData->cpEnable); } - /* 8035AD24-8035AD54 355664 0030+00 3/3 0/0 0/0 .text __GXWriteFifoIntReset */ void __GXWriteFifoIntReset(u32 p1, u32 p2) { - FAST_FLAG_SET(__GXData->cpClr, p1, 0, 1); - FAST_FLAG_SET(__GXData->cpClr, (u8)p2, 1, 1); - GX_SET_CP_REG(2, __GXData->cpClr); + FAST_FLAG_SET(__GXData->cpClr, p1, 0, 1); + FAST_FLAG_SET(__GXData->cpClr, (u8)p2, 1, 1); + GX_SET_CP_REG(2, __GXData->cpClr); } /* 8035AD54-8035AE54 355694 0100+00 0/0 1/1 0/0 .text __GXCleanGPFifo */ void __GXCleanGPFifo(void) { - BOOL interrupts; - GXFifoObj tempObj; // 0x14 - u32 i, j, k; // stack alloc - GXFifoObj* gpFifo; // r31 - GXFifoObj* cpuFifo; // r30 - void* tempPtr; // r29 + BOOL interrupts; + GXFifoObj tempObj; // 0x14 + u32 i, j, k; // stack alloc + GXFifoObj* gpFifo; // r31 + GXFifoObj* cpuFifo; // r30 + void* tempPtr; // r29 - gpFifo = GXGetGPFifo(); - if (!gpFifo) { - return; - } + gpFifo = GXGetGPFifo(); + if (!gpFifo) { + return; + } - cpuFifo = GXGetCPUFifo(); - tempPtr = gpFifo->base; + cpuFifo = GXGetCPUFifo(); + tempPtr = gpFifo->base; - tempObj = *gpFifo; + tempObj = *gpFifo; - interrupts = OSDisableInterrupts(); + interrupts = OSDisableInterrupts(); - tempObj.read_ptr = tempPtr; - tempObj.write_ptr = tempPtr; - tempObj.rw_dst = 0; - if (tempObj.rw_dst < 0) { - tempObj.rw_dst += tempObj.size; - } + tempObj.read_ptr = tempPtr; + tempObj.write_ptr = tempPtr; + tempObj.rw_dst = 0; + if (tempObj.rw_dst < 0) { + tempObj.rw_dst += tempObj.size; + } - OSRestoreInterrupts(interrupts); + OSRestoreInterrupts(interrupts); - GXSetGPFifo(&tempObj); + GXSetGPFifo(&tempObj); - if (cpuFifo == gpFifo) { - GXSetCPUFifo(&tempObj); - } + if (cpuFifo == gpFifo) { + GXSetCPUFifo(&tempObj); + } - interrupts = OSDisableInterrupts(); + interrupts = OSDisableInterrupts(); - gpFifo->read_ptr = tempPtr; - gpFifo->write_ptr = tempPtr; - gpFifo->rw_dst = 0; + gpFifo->read_ptr = tempPtr; + gpFifo->write_ptr = tempPtr; + gpFifo->rw_dst = 0; - if (gpFifo->rw_dst < 0) { - gpFifo->rw_dst += gpFifo->size; - } - OSRestoreInterrupts(interrupts); + if (gpFifo->rw_dst < 0) { + gpFifo->rw_dst += gpFifo->size; + } + OSRestoreInterrupts(interrupts); - GXSetGPFifo(gpFifo); - if (cpuFifo == gpFifo) { - GXSetCPUFifo(cpuFifo); - } + GXSetGPFifo(gpFifo); + if (cpuFifo == gpFifo) { + GXSetCPUFifo(cpuFifo); + } } /* 8035AE54-8035AEA0 355794 004C+00 0/0 1/1 0/0 .text GXSetCurrentGXThread */ diff --git a/libs/dolphin/gx/GXFrameBuf.c b/libs/dolphin/gx/GXFrameBuf.c index 039c272aff..5321a9214d 100644 --- a/libs/dolphin/gx/GXFrameBuf.c +++ b/libs/dolphin/gx/GXFrameBuf.c @@ -1,245 +1,419 @@ -// -// Generated By: dol2asm -// Translation Unit: GXFrameBuf -// - #include "dolphin/gx/GXFrameBuf.h" -#include "dolphin/gx/GX.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/gx.h" +#include "dolphin/vi.h" -// -// Forward References: -// +GXRenderModeObj GXNtsc480IntDf = { + VI_TVMODE_NTSC_INT, + 640, + 480, + 480, + 40, + 0, + 640, + 480, + VI_XFBMODE_DF, + GX_FALSE, + GX_FALSE, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 8, + 10, + 12, + 10, + 8, + 8, +}; -void GXSetDispCopyFrame2Field(); -void GXSetCopyClamp(); -void GXSetCopyClear(); -void GXSetDispCopyGamma(); -void GXClearBoundingBox(); -extern u8 GXNtsc480IntDf[60]; -extern u8 GXNtsc480Int[60]; -extern u8 GXMpal480IntDf[60]; -extern u8 GXPal528IntDf[60]; -extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; +GXRenderModeObj GXNtsc480Int = { + VI_TVMODE_NTSC_INT, + 640, + 480, + 480, + 40, + 0, + 640, + 480, + VI_XFBMODE_DF, + GX_FALSE, + GX_FALSE, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 0, + 0, + 21, + 22, + 21, + 0, + 0, +}; -// -// External References: -// +GXRenderModeObj GXMpal480IntDf = { + VI_TVMODE_MPAL_INT, + 640, + 480, + 480, + 40, + 0, + 640, + 480, + VI_XFBMODE_DF, + GX_FALSE, + GX_FALSE, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 8, + 10, + 12, + 10, + 8, + 8, +}; -void __cvt_fp2unsigned(); +GXRenderModeObj GXPal528IntDf = { + VI_TVMODE_PAL_INT, + 640, + 528, + 528, + 40, + 23, + 640, + 528, + VI_XFBMODE_DF, + GX_FALSE, + GX_FALSE, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 8, + 10, + 12, + 10, + 8, + 8, +}; -// -// Declarations: -// +GXRenderModeObj GXEurgb60Hz480IntDf = { + VI_TVMODE_EURGB60_INT, + 640, + 480, + 480, + 40, + 0, + 640, + 480, + VI_XFBMODE_DF, + GX_FALSE, + GX_FALSE, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 8, + 8, + 10, + 12, + 10, + 8, + 8, +}; /* 8035CA04-8035CA80 357344 007C+00 0/0 2/2 0/0 .text GXSetDispCopySrc */ -void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) -{ - __GXData->field_0x1e0 = 0; - GX_BITFIELD_SET(__GXData->field_0x1e0, 22, 10, left); - GX_BITFIELD_SET(__GXData->field_0x1e0, 12, 10, top); - GX_BITFIELD_SET(__GXData->field_0x1e0, 0, 8, 73); - __GXData->field_0x1e4 = 0; - GX_BITFIELD_SET(__GXData->field_0x1e4, 22, 10, width - 1); - GX_BITFIELD_SET(__GXData->field_0x1e4, 12, 10, height - 1); - GX_BITFIELD_SET(__GXData->field_0x1e4, 0, 8, 74); +void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) { + __GXData->cpDispSrc = 0; + GX_BITFIELD_SET(__GXData->cpDispSrc, 22, 10, left); + GX_BITFIELD_SET(__GXData->cpDispSrc, 12, 10, top); + GX_BITFIELD_SET(__GXData->cpDispSrc, 0, 8, 73); + + __GXData->cpDispSize = 0; + GX_BITFIELD_SET(__GXData->cpDispSize, 22, 10, width - 1); + GX_BITFIELD_SET(__GXData->cpDispSize, 12, 10, height - 1); + GX_BITFIELD_SET(__GXData->cpDispSize, 0, 8, 74); } /* 8035CA80-8035CAFC 3573C0 007C+00 0/0 9/9 0/0 .text GXSetTexCopySrc */ -void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) -{ - __GXData->field_0x1f0 = 0; - GX_BITFIELD_SET(__GXData->field_0x1f0, 22, 10, left); - GX_BITFIELD_SET(__GXData->field_0x1f0, 12, 10, top); - GX_BITFIELD_SET(__GXData->field_0x1f0, 0, 8, 0x49); - __GXData->field_0x1f4 = 0; - GX_BITFIELD_SET(__GXData->field_0x1f4, 22, 10, width - 1); - GX_BITFIELD_SET(__GXData->field_0x1f4, 12, 10, height - 1); - GX_BITFIELD_SET(__GXData->field_0x1f4, 0, 8, 0x4A); +void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) { + __GXData->cpTexSrc = 0; + GX_BITFIELD_SET(__GXData->cpTexSrc, 22, 10, left); + GX_BITFIELD_SET(__GXData->cpTexSrc, 12, 10, top); + GX_BITFIELD_SET(__GXData->cpTexSrc, 0, 8, 0x49); + __GXData->cpTexSize = 0; + GX_BITFIELD_SET(__GXData->cpTexSize, 22, 10, width - 1); + GX_BITFIELD_SET(__GXData->cpTexSize, 12, 10, height - 1); + GX_BITFIELD_SET(__GXData->cpTexSize, 0, 8, 0x4A); } /* 8035CAFC-8035CB30 35743C 0034+00 0/0 2/2 0/0 .text GXSetDispCopyDst */ -void GXSetDispCopyDst(u16 arg0, u16 arg1) -{ - s32 val = (s32) ((arg0 << 1) & 0xFFFE) >> 5; - __GXData->field_0x1e8 = 0; - GX_BITFIELD_SET(__GXData->field_0x1e8, 22, 10, val); - GX_BITFIELD_SET(__GXData->field_0x1e8, 0, 8, 0x4D); +void GXSetDispCopyDst(u16 arg0, u16 arg1) { + s32 val = (s32)((arg0 << 1) & 0xFFFE) >> 5; + __GXData->cpDispStride = 0; + GX_BITFIELD_SET(__GXData->cpDispStride, 22, 10, val); + GX_BITFIELD_SET(__GXData->cpDispStride, 0, 8, 0x4D); } /* 8035CB30-8035CC60 357470 0130+00 0/0 9/9 0/0 .text GXSetTexCopyDst */ -#ifdef NONMATCHING -void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) { - s32 fmt2; - s32 arg3, arg4, arg5; - __GXData->field_0x200 = 0; +void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt format, GXBool useMIPmap) { + u32 sp20, sp1C, sp18; + u32 value; + u8 depthRelated; - fmt2 = fmt & 0xf; - if ((s32)fmt == GX_TF_Z16) { - fmt2 = 0xb; + __GXData->cpTexZ = GX_NONE; + + depthRelated = format & 0xf; + if (format == GX_TF_Z16) { + depthRelated = 0xb; } - switch (fmt) { - case 0: - case 1: - case 2: - case 3: - case 0x26: - GX_BITFIELD_SET(__GXData->cpTex, 15, 2, 3); + switch (format) { + case GX_TF_I4: + case GX_TF_I8: + case GX_TF_IA4: + case GX_TF_IA8: + case GX_CTF_A8: + GX_SET_REG(__GXData->cpTex, 3, 15, 16); break; default: - GX_BITFIELD_SET(__GXData->cpTex, 15, 2, 2); + GX_SET_REG(__GXData->cpTex, 2, 15, 16); break; } - __GXData->field_0x200 = 0x10 == (fmt & 0x10); - __GXData->cpTex = __rlwimi(__GXData->cpTex, fmt2, 0, 28, 28); - fmt2 &= 7; - __GetImageTileCount(fmt, width, height, &arg3, &arg4, &arg5); - __GXData->field_0x1f8 = 0; - GX_BITFIELD_SET(__GXData->field_0x1f8, 22, 10, arg3*arg5); - GX_BITFIELD_SET(__GXData->field_0x1f8, 0, 8, 0x4d); - GX_BITFIELD_SET(__GXData->cpTex, 22, 1, mipmap); - GX_BITFIELD_SET(__GXData->cpTex, 25, 3, fmt2); + __GXData->cpTexZ = (format & 0x10) == 0x10; + + value = depthRelated >> 3; + + GX_SET_REG(__GXData->cpTex, value, 28, 28); + + depthRelated &= 7; + + __GetImageTileCount(format, width, height, &sp20, &sp1C, &sp18); + + __GXData->cpTexStride = GX_NONE; + GX_SET_REG(__GXData->cpTexStride, sp20 * sp18, 22, 31); + GX_SET_REG(__GXData->cpTexStride, 0x4D, 0, 7); + + GX_SET_REG(__GXData->cpTex, useMIPmap, 22, 22); + GX_SET_REG(__GXData->cpTex, depthRelated, 25, 27); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s" -} -#pragma pop -#endif /* 8035CC60-8035CC84 3575A0 0024+00 0/0 1/1 0/0 .text GXSetDispCopyFrame2Field */ -void GXSetDispCopyFrame2Field(GXCopyMode arg0) -{ - GX_BITFIELD_SET(__GXData->field_0x1ec, 18, 2, arg0); +void GXSetDispCopyFrame2Field(GXCopyMode arg0) { + GX_BITFIELD_SET(__GXData->cpDisp, 18, 2, arg0); GX_BITFIELD_SET(__GXData->cpTex, 18, 2, 0); } + +// clang-format off #define INSERT_FIELD(reg, value, nbits, shift) \ (reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \ ((u32) (value) << (shift)); +// clang-format on /* 8035CC84-8035CCDC 3575C4 0058+00 0/0 2/2 0/0 .text GXSetCopyClamp */ void GXSetCopyClamp(GXFBClamp clamp) { u8 isTop = (clamp & GX_CLAMP_TOP) == GX_CLAMP_TOP; u8 isBottom = (clamp & GX_CLAMP_BOTTOM) == GX_CLAMP_BOTTOM; - __GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isTop, 0, 31, 31); - __GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isBottom, 1, 30, 30); + __GXData->cpDisp = __rlwimi(__GXData->cpDisp, isTop, 0, 31, 31); + __GXData->cpDisp = __rlwimi(__GXData->cpDisp, isBottom, 1, 30, 30); __GXData->cpTex = __rlwimi(__GXData->cpTex, isTop, 0, 31, 31); __GXData->cpTex = __rlwimi(__GXData->cpTex, isBottom, 1, 30, 30); } -/* ############################################################################################## */ -/* 804565A8-804565B0 004BA8 0004+04 3/3 0/0 0/0 .sdata2 @179 */ -SECTION_SDATA2 static f32 lit_179[1 + 1 /* padding */] = { - 256.0f, - /* padding */ - 0.0f, -}; +static u32 __GXGetNumXfbLines(u32 height, u32 scale) { + u32 numLines; + u32 actualHeight; + u32 newScale; -static u32 __GXGetNumXfbLines(u16 efb_height, u32 y_scale) { - u32 rv = ((efb_height - 1) * 0x100) / y_scale + 1; - if (y_scale > 0x80 && y_scale < 0x100) { - for (; (y_scale & 1) == 0; y_scale >>= 1) { + numLines = (height - 1) * 0x100; + actualHeight = (numLines / scale) + 1; + + newScale = scale; + + if (newScale > 0x80 && newScale < 0x100) { + while (newScale % 2 == 0) { + newScale /= 2; } - if (efb_height % y_scale == 0) { - rv++; + + if (height % newScale == 0) { + actualHeight++; } } - if (rv > 0x400) { - rv = 0x400; + + if (actualHeight > 0x400) { + actualHeight = 0x400; } - return rv; + + return actualHeight; } /* 8035CCDC-8035CD6C 35761C 0090+00 0/0 2/2 0/0 .text GXGetNumXfbLines */ -// regalloc -#ifdef NONMATCHING -u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale) { - return __GXGetNumXfbLines(efb_height, ((u32)(256.0f / y_scale)) & 0x1ff); -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s" -} -#pragma pop -#endif +u16 GXGetNumXfbLines(const u16 efbHeight, f32 yScale) { + u32 scale = (u32)(256.0f / yScale) & 0x1FF; -/* ############################################################################################## */ -/* 804565B0-804565B8 004BB0 0008+00 1/1 0/0 0/0 .sdata2 @234 */ -SECTION_SDATA2 static f64 lit_234 = 4503599627370496.0 /* cast u32 to float */; + return __GXGetNumXfbLines(efbHeight, scale); +} /* 8035CD6C-8035CFA4 3576AC 0238+00 0/0 2/2 0/0 .text GXGetYScaleFactor */ -// Matches with literals -#ifdef NONMATCHING -f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height) { - u8 padding[0x10]; - u32 uVar6 = xfb_height; - f32 f29; - f32 ratio = (f32)xfb_height / (f32)efb_height; - u32 uVar5 = __GXGetNumXfbLines(efb_height, (u32)(256.0f / ratio) & 0x1ff); - while (uVar5 > xfb_height) { - uVar6--; - ratio = (f32)uVar6 / (f32)efb_height; - uVar5 = __GXGetNumXfbLines(efb_height, ((u32)(256.0f / ratio)) & 0x1ff); - } - f29 = ratio; - while (uVar5 < xfb_height) { - uVar6++; - f29 = ratio; - ratio = (f32)uVar6 / (f32)efb_height; - uVar5 = __GXGetNumXfbLines(efb_height, ((u32)(256.0f / ratio)) & 0x1ff); +f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight) { + u32 scale; + u32 height1; + u32 height2; + f32 scale2; + f32 scale1; + + height1 = xfbHeight; + scale1 = (f32)xfbHeight / (f32)efbHeight; + scale = (u32)(256.0f / scale1) & 0x1FF; + height2 = __GXGetNumXfbLines(efbHeight, scale); + + while (height2 > xfbHeight) { + height1--; + scale1 = (f32)height1 / (f32)efbHeight; + scale = (u32)(256.0f / scale1) & 0x1FF; + height2 = __GXGetNumXfbLines(efbHeight, scale); } - return f29; + scale2 = scale1; + while (height2 < xfbHeight) { + scale2 = scale1; + height1++; + scale1 = (f32)height1 / (f32)efbHeight; + scale = (u32)(256.0f / scale1) & 0x1FF; + height2 = __GXGetNumXfbLines(efbHeight, scale); + } + + return scale2; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s" -} -#pragma pop -#endif /* 8035CFA4-8035D070 3578E4 00CC+00 0/0 2/2 0/0 .text GXSetDispCopyYScale */ -// Needs works -#ifdef NONMATCHING -u32 GXSetDispCopyYScale(f32 y_scale) { - u32 r5; - u32 r6; - u32 r7 = ((u32)(256.0f / y_scale)) & 0x1ff; - GXFIFO.u8 = 0x61; - r6 = 0; - GX_BITFIELD_SET(r6, 0x17, 9, r7); - GX_BITFIELD_SET(r6, 0, 7, 0x4e); - GXFIFO.u32 = r6; - __GXData->bpSentNot = 0; - r5 = 0x100 - r7 != 1; - GX_BITFIELD_SET(__GXData->field_0x1ec, 0x15, 1, r5); - return __GXGetNumXfbLines(__GXData->field_0x1e4, r7); +u32 GXSetDispCopyYScale(f32 vertScale) { + u32 scale; + GXBool check; + u32 height; + u32 reg; + + scale = (u32)(256.0f / vertScale) & 0x1FF; + check = (scale != 0x100); + + reg = 0; + GX_SET_REG(reg, scale, 23, 31); + GX_SET_REG(reg, 0x4E, 0, 7); + GX_BP_LOAD_REG(reg); + __GXData->bpSentNot = GX_FALSE; + + GX_SET_REG(__GXData->cpDisp, check, 21, 21); + + height = (__GXData->cpDispSize >> 10 & 0x3FF) + 1; + + return __GXGetNumXfbLines(height, scale); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 GXSetDispCopyYScale(f32 y_scale) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s" -} -#pragma pop -#endif /* 8035D070-8035D0E8 3579B0 0078+00 0/0 2/2 0/0 .text GXSetCopyClear */ void GXSetCopyClear(GXColor color, u32 clear_z) { @@ -247,401 +421,234 @@ void GXSetCopyClear(GXColor color, u32 clear_z) { GX_BITFIELD_SET(r6, 24, 8, color.r); GX_BITFIELD_SET(r6, 16, 8, color.a); GX_BITFIELD_SET(r6, 0, 8, 0x4f); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r6; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = r6; r6 = 0; GX_BITFIELD_SET(r6, 24, 8, color.b); GX_BITFIELD_SET(r6, 16, 8, color.g); GX_BITFIELD_SET(r6, 0, 8, 0x50); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r6; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = r6; r6 = 0; GX_BITFIELD_SET(r6, 8, 24, clear_z); GX_BITFIELD_SET(r6, 0, 8, 0x51); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r6; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = r6; __GXData->bpSentNot = 0; } /* 8035D0E8-8035D2F0 357A28 0208+00 0/0 4/4 0/0 .text GXSetCopyFilter */ -// Start of antialias if. Possibly variable definition order. -#ifdef NONMATCHING -void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]) { - u32 r8; - u32 r7; - u32 r3; - u32 r9; - u32 r11; - u32 r5; - if (antialias) { - r3 = 0; - GX_BITFIELD_SET(r3, 0x1c, 4, pattern[0][0]); - GX_BITFIELD_SET(r3, 0x18, 4, pattern[0][1]); - GX_BITFIELD_SET(r3, 0x14, 4, pattern[1][0]); - GX_BITFIELD_SET(r3, 0x10, 4, pattern[1][1]); - GX_BITFIELD_SET(r3, 0xc, 4, pattern[2][0]); - GX_BITFIELD_SET(r3, 0x8, 4, pattern[2][1]); - GX_BITFIELD_SET(r3, 0, 8, 1); +void GXSetCopyFilter(GXBool useAA, u8 samplePattern[12][2], GXBool doVertFilt, u8 vFilt[7]) { + u32 vals[4]; + u32 unk1; + u32 unk2; - r7 = 0; - GX_BITFIELD_SET(r7, 0x1c, 4, pattern[3][0]); - GX_BITFIELD_SET(r7, 0x18, 4, pattern[3][1]); - GX_BITFIELD_SET(r7, 0x14, 4, pattern[4][0]); - GX_BITFIELD_SET(r7, 0x10, 4, pattern[4][1]); - GX_BITFIELD_SET(r7, 0xc, 4, pattern[5][0]); - GX_BITFIELD_SET(r7, 0x8, 4, pattern[5][1]); - GX_BITFIELD_SET(r7, 0, 8, 2); + if (useAA) { + vals[0] = 0; + GX_SET_REG(vals[0], samplePattern[0][0], 28, 31); + GX_SET_REG(vals[0], samplePattern[0][1], 24, 27); + GX_SET_REG(vals[0], samplePattern[1][0], 20, 23); + GX_SET_REG(vals[0], samplePattern[1][1], 16, 19); + GX_SET_REG(vals[0], samplePattern[2][0], 12, 15); + GX_SET_REG(vals[0], samplePattern[2][1], 8, 11); + GX_SET_REG(vals[0], 1, 0, 7); - r8 = 0; - GX_BITFIELD_SET(r8, 0x1c, 4, pattern[6][0]); - GX_BITFIELD_SET(r8, 0x18, 4, pattern[6][1]); - GX_BITFIELD_SET(r8, 0x14, 4, pattern[7][0]); - GX_BITFIELD_SET(r8, 0x10, 4, pattern[7][1]); - GX_BITFIELD_SET(r8, 0xc, 4, pattern[8][0]); - GX_BITFIELD_SET(r8, 0x8, 4, pattern[8][1]); - GX_BITFIELD_SET(r8, 0, 8, 3); + vals[1] = 0; + GX_SET_REG(vals[1], samplePattern[3][0], 28, 31); + GX_SET_REG(vals[1], samplePattern[3][1], 24, 27); + GX_SET_REG(vals[1], samplePattern[4][0], 20, 23); + GX_SET_REG(vals[1], samplePattern[4][1], 16, 19); + GX_SET_REG(vals[1], samplePattern[5][0], 12, 15); + GX_SET_REG(vals[1], samplePattern[5][1], 8, 11); + GX_SET_REG(vals[1], 2, 0, 7); - r9 = 0; - GX_BITFIELD_SET(r9, 0x1c, 4, pattern[9][0]); - GX_BITFIELD_SET(r9, 0x18, 4, pattern[9][1]); - GX_BITFIELD_SET(r9, 0x14, 4, pattern[10][0]); - GX_BITFIELD_SET(r9, 0x10, 4, pattern[10][1]); - GX_BITFIELD_SET(r9, 0xc, 4, pattern[11][0]); - GX_BITFIELD_SET(r9, 0x8, 4, pattern[11][1]); - GX_BITFIELD_SET(r9, 0, 8, 4); + vals[2] = 0; + GX_SET_REG(vals[2], samplePattern[6][0], 28, 31); + GX_SET_REG(vals[2], samplePattern[6][1], 24, 27); + GX_SET_REG(vals[2], samplePattern[7][0], 20, 23); + GX_SET_REG(vals[2], samplePattern[7][1], 16, 19); + GX_SET_REG(vals[2], samplePattern[8][0], 12, 15); + GX_SET_REG(vals[2], samplePattern[8][1], 8, 11); + GX_SET_REG(vals[2], 3, 0, 7); + + vals[3] = 0; + GX_SET_REG(vals[3], samplePattern[9][0], 28, 31); + GX_SET_REG(vals[3], samplePattern[9][1], 24, 27); + GX_SET_REG(vals[3], samplePattern[10][0], 20, 23); + GX_SET_REG(vals[3], samplePattern[10][1], 16, 19); + GX_SET_REG(vals[3], samplePattern[11][0], 12, 15); + GX_SET_REG(vals[3], samplePattern[11][1], 8, 11); + GX_SET_REG(vals[3], 4, 0, 7); } else { - r3 = 0x01666666; - r7 = 0x02666666; - r8 = 0x03666666; - r9 = 0x04666666; + vals[0] = 0x01666666; + vals[1] = 0x02666666; + vals[2] = 0x03666666; + vals[3] = 0x04666666; } - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r3; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r7; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r8; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r9; + GX_BP_LOAD_REG(vals[0]); + GX_BP_LOAD_REG(vals[1]); + GX_BP_LOAD_REG(vals[2]); + GX_BP_LOAD_REG(vals[3]); + + unk1 = 0; + GX_SET_REG(unk1, 0x53, 0, 7); + unk2 = 0; + GX_SET_REG(unk2, 0x54, 0, 7); + + if (doVertFilt) { + GX_SET_REG(unk1, vFilt[0], 26, 31); + GX_SET_REG(unk1, vFilt[1], 20, 25); + GX_SET_REG(unk1, vFilt[2], 14, 19); + GX_SET_REG(unk1, vFilt[3], 8, 13); + GX_SET_REG(unk2, vFilt[4], 26, 31); + GX_SET_REG(unk2, vFilt[5], 20, 25); + GX_SET_REG(unk2, vFilt[6], 14, 19); - r11 = 0; - GX_BITFIELD_SET(r11, 0, 8, 0x53); - r5 = 0; - GX_BITFIELD_SET(r5, 0, 8, 0x54); - if (vf) { - GX_BITFIELD_SET(r11, 0x1a, 6, vfilter[0]); - GX_BITFIELD_SET(r11, 0x14, 6, vfilter[1]); - GX_BITFIELD_SET(r11, 0xe, 6, vfilter[2]); - GX_BITFIELD_SET(r11, 0x8, 6, vfilter[3]); - GX_BITFIELD_SET(r5, 0x1a, 6, vfilter[4]); - GX_BITFIELD_SET(r5, 0x14, 6, vfilter[5]); - GX_BITFIELD_SET(r5, 0xe, 6, vfilter[6]); } else { - GX_BITFIELD_SET(r11, 0x1a, 6, 0); - GX_BITFIELD_SET(r11, 0x14, 6, 0); - GX_BITFIELD_SET(r11, 0xe, 6, 0x15); - GX_BITFIELD_SET(r11, 0x8, 6, 0x16); - - GX_BITFIELD_SET(r5, 0x1a, 6, 0x15); - GX_BITFIELD_SET(r5, 0x14, 6, 0); - GX_BITFIELD_SET(r5, 0xe, 6, 0); + GX_SET_REG(unk1, 0, 26, 31); + GX_SET_REG(unk1, 0, 20, 25); + GX_SET_REG(unk1, 21, 14, 19); + GX_SET_REG(unk1, 22, 8, 13); + GX_SET_REG(unk2, 21, 26, 31); + GX_SET_REG(unk2, 0, 20, 25); + GX_SET_REG(unk2, 0, 14, 19); } - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r11; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r5; - __GXData->bpSentNot = 0; + GX_BP_LOAD_REG(unk1); + GX_BP_LOAD_REG(unk2); + + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s" -} -#pragma pop -#endif /* 8035D2F0-8035D304 357C30 0014+00 0/0 2/2 0/0 .text GXSetDispCopyGamma */ -void GXSetDispCopyGamma(GXGamma gamma) -{ - GX_BITFIELD_SET(__GXData->field_0x1ec, 23, 2, gamma); +void GXSetDispCopyGamma(GXGamma gamma) { + GX_BITFIELD_SET(__GXData->cpDisp, 23, 2, gamma); } /* 8035D304-8035D46C 357C44 0168+00 0/0 3/3 0/0 .text GXCopyDisp */ -// regalloc / instruction order -#ifdef NONMATCHING -void GXCopyDisp(void* dst, GXBool clear) { - u32 r7; - u32 r8; - GXBool r10; - u32 r9; - u32 field_0x1dc; - if (clear) { - r8 = __GXData->field_0x1d8; - GX_BITFIELD_SET(r8, 0x1f, 1, 1); - GX_BITFIELD_SET(r8, 0x1c, 3, 7); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r8; +void GXCopyDisp(void* dest, GXBool doClear) { + u32 reg; + u32 newDest; + GXBool check; - r7 = __GXData->field_0x1d0; - GX_BITFIELD_SET(r7, 0x1f, 1, 0); - GX_BITFIELD_SET(r7, 0x1e, 1, 0); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r7; + if (doClear) { + reg = __GXData->zmode; + GX_SET_REG(reg, 1, 31, 31); + GX_SET_REG(reg, 7, 28, 30); + GX_BP_LOAD_REG(reg); + + reg = __GXData->cmode0; + GX_SET_REG(reg, 0, 31, 31); + GX_SET_REG(reg, 0, 30, 30); + GX_BP_LOAD_REG(reg); } - r10 = 0; - if (clear || (__GXData->field_0x1dc & 0x7) == 3) { - field_0x1dc = __GXData->field_0x1dc; - if (((field_0x1dc >> 6) & 1) == 1) { - GX_BITFIELD_SET(field_0x1dc, 0x19, 1, 0); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = field_0x1dc; - r10 = 1; - } + check = GX_FALSE; + if ((doClear || (__GXData->peCtrl & 0x7) == 3) && (__GXData->peCtrl >> 6 & 0x1) == 1) { + check = GX_TRUE; + reg = __GXData->peCtrl; + GX_SET_REG(reg, 0, 25, 25); + GX_BP_LOAD_REG(reg); } - r9 = 0; - __rlwimi(r9, (int)dst, 0x1b, 0xb, 0x1f); - GX_BITFIELD_SET(r9, 0, 8, 0x4b); + GX_BP_LOAD_REG(__GXData->cpDispSrc); + GX_BP_LOAD_REG(__GXData->cpDispSize); + GX_BP_LOAD_REG(__GXData->cpDispStride); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1e0; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1e4; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1e8; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r9; + newDest = (u32)dest & 0x3FFFFFFF; + reg = 0; + GX_SET_REG(reg, newDest >> 5, 11, 31); + GX_SET_REG(reg, 0x4B, 0, 7); + GX_BP_LOAD_REG(reg); - GX_BITFIELD_SET(__GXData->field_0x1ec, 0x14, 1, clear); - GX_BITFIELD_SET(__GXData->field_0x1ec, 0x11, 1, 1); - GX_BITFIELD_SET(__GXData->field_0x1ec, 0, 8, 0x52); + GX_SET_REG(__GXData->cpDisp, doClear, 20, 20); + GX_SET_REG(__GXData->cpDisp, 1, 17, 17); + GX_SET_REG(__GXData->cpDisp, 0x52, 0, 7); + GX_BP_LOAD_REG(__GXData->cpDisp); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1ec; - - if (clear) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1d8; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1d0; + if (doClear) { + GX_BP_LOAD_REG(__GXData->zmode); + GX_BP_LOAD_REG(__GXData->cmode0); } - if (r10) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1dc; + if (check) { + GX_BP_LOAD_REG(__GXData->peCtrl); } - __GXData->bpSentNot = 0; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXCopyDisp(void* dst, GXBool clear) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s" -} -#pragma pop -#endif /* 8035D46C-8035D5F8 357DAC 018C+00 0/0 9/9 0/0 .text GXCopyTex */ -// regalloc -#ifdef NONMATCHING -void GXCopyTex(void* dst, GXBool clear) { - u32 r8; - u32 r7; - u32 field_0x1dc; - u8 r0; - u32 r10; - if (clear) { - r8 = __GXData->field_0x1d8; - GX_BITFIELD_SET(r8, 0x1f, 1, 1); - GX_BITFIELD_SET(r8, 0x1c, 3, 7); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r8; +void GXCopyTex(void* dest, GXBool doClear) { + u32 reg; + u32 reg2; + u32 newDest; + GXBool check; - r7 = __GXData->field_0x1d0; - GX_BITFIELD_SET(r7, 0x1f, 1, 0); - GX_BITFIELD_SET(r7, 0x1e, 1, 0); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r7; + if (doClear) { + reg = __GXData->zmode; + GX_SET_REG(reg, 1, 31, 31); + GX_SET_REG(reg, 7, 28, 30); + GX_BP_LOAD_REG(reg); + + reg = __GXData->cmode0; + GX_SET_REG(reg, 0, 31, 31); + GX_SET_REG(reg, 0, 30, 30); + GX_BP_LOAD_REG(reg); } - r0 = 0; - field_0x1dc = __GXData->field_0x1dc; - if (__GXData->bpSentNot && (field_0x1dc & 0x7) != 3) { - GX_BITFIELD_SET(r7, 0x1d, 3, 3); - r0 = 1; + check = GX_FALSE; + reg2 = __GXData->peCtrl; + if (__GXData->cpTexZ && (reg2 & 0x7) != 3) { + check = GX_TRUE; + GX_SET_REG(reg2, 3, 29, 31); } - if ((clear || (field_0x1dc & 0x7) == 3) && ((field_0x1dc >> 6) & 1) == 1) { - GX_BITFIELD_SET(r7, 0x19, 1, 0); - r0 = 1; + if ((doClear || (reg2 & 0x7) == 3) && (reg2 >> 6 & 0x1) == 1) { + check = GX_TRUE; + GX_SET_REG(reg2, 0, 25, 25); } - if (r0) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r7; + if (check) { + GX_BP_LOAD_REG(reg2); } - r10 = 0; - __rlwimi(r10, (int)dst, 0x1b, 0xb, 0x1f); - GX_BITFIELD_SET(r10, 0, 8, 0x4b); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1f0; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1f4; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1f8; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = r10; - GX_BITFIELD_SET(__GXData->cpTex, 0x14, 1, clear); - GX_BITFIELD_SET(__GXData->cpTex, 0x11, 1, 0); - GX_BITFIELD_SET(__GXData->cpTex, 0, 8, 0x52); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->cpTex; - if (clear) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1d8; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1d0; + GX_BP_LOAD_REG(__GXData->cpTexSrc); + GX_BP_LOAD_REG(__GXData->cpTexSize); + GX_BP_LOAD_REG(__GXData->cpTexStride); + + newDest = (u32)dest & 0x3FFFFFFF; + reg = 0; + GX_SET_REG(reg, newDest >> 5, 11, 31); + GX_SET_REG(reg, 0x4B, 0, 7); + GX_BP_LOAD_REG(reg); + + GX_SET_REG(__GXData->cpTex, doClear, 20, 20); + GX_SET_REG(__GXData->cpTex, 0, 17, 17); + GX_SET_REG(__GXData->cpTex, 0x52, 0, 7); + GX_BP_LOAD_REG(__GXData->cpTex); + + if (doClear) { + GX_BP_LOAD_REG(__GXData->zmode); + GX_BP_LOAD_REG(__GXData->cmode0); } - if (r0) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->field_0x1dc; + if (check) { + GX_BP_LOAD_REG(__GXData->peCtrl); } - __GXData->bpSentNot = 0; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXCopyTex(void* dst, GXBool clear) { - nofralloc -#include "asm/dolphin/gx/GXFrameBuf/GXCopyTex.s" -} -#pragma pop -#endif /* 8035D5F8-8035D630 357F38 0038+00 0/0 1/1 0/0 .text GXClearBoundingBox */ -void GXClearBoundingBox(void) -{ - GXFIFO.u8 = GX_LOAD_BP_REG; - GXFIFO.u32 = 0x550003FF; - GXFIFO.u8 = GX_LOAD_BP_REG; - GXFIFO.u32 = 0x560003FF; +void GXClearBoundingBox(void) { + GXWGFifo.u8 = GX_LOAD_BP_REG; + GXWGFifo.u32 = 0x550003FF; + GXWGFifo.u8 = GX_LOAD_BP_REG; + GXWGFifo.u32 = 0x560003FF; set_x2(GX_FALSE); } - -/* ############################################################################################## */ -/* 803D2448-803D2484 02F568 003C+00 0/0 2/1 0/0 .data GXNtsc480IntDf */ -SECTION_DATA extern u8 GXNtsc480IntDf[60] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02, - 0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00, -}; - -/* 803D2484-803D24C0 02F5A4 003C+00 0/0 1/1 0/0 .data GXNtsc480Int */ -SECTION_DATA extern u8 GXNtsc480Int[60] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02, - 0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x15, 0x16, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 803D24C0-803D24FC 02F5E0 003C+00 0/0 1/1 0/0 .data GXMpal480IntDf */ -SECTION_DATA extern u8 GXMpal480IntDf[60] = { - 0x00, 0x00, 0x00, 0x08, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02, - 0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00, -}; - -/* 803D24FC-803D2538 02F61C 003C+00 0/0 1/1 0/0 .data GXPal528IntDf */ -SECTION_DATA extern u8 GXPal528IntDf[60] = { - 0x00, 0x00, 0x00, 0x04, 0x02, 0x80, 0x02, 0x10, 0x02, 0x10, 0x00, 0x28, 0x00, 0x17, 0x02, - 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00, -}; - -/* 803D2538-803D2578 02F658 003C+04 0/0 1/1 0/0 .data GXEurgb60Hz480IntDf */ -SECTION_DATA extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x14, - 0x02, - 0x80, - 0x01, - 0xE0, - 0x01, - 0xE0, - 0x00, - 0x28, - 0x00, - 0x00, - 0x02, - 0x80, - 0x01, - 0xE0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x06, - 0x08, - 0x08, - 0x0A, - 0x0C, - 0x0A, - 0x08, - 0x08, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; diff --git a/libs/dolphin/gx/GXGeometry.c b/libs/dolphin/gx/GXGeometry.c index 3a1587a970..9c2e5ba46b 100644 --- a/libs/dolphin/gx/GXGeometry.c +++ b/libs/dolphin/gx/GXGeometry.c @@ -4,11 +4,11 @@ */ #include "dolphin/gx/GXGeometry.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 8035C6E4-8035C764 357024 0080+00 0/0 4/4 0/0 .text __GXSetDirtyState */ void __GXSetDirtyState(void) { - u32 dirtyFlags = __GXData->dirtyFlags; + u32 dirtyFlags = __GXData->dirtyState; if (dirtyFlags & GX_DIRTY_SU_TEX) { __GXSetSUTexRegs(); @@ -34,15 +34,15 @@ void __GXSetDirtyState(void) { __GXCalculateVLim(); } - __GXData->dirtyFlags = 0; + __GXData->dirtyState = 0; } /* 8035C764-8035C834 3570A4 00D0+00 0/0 66/66 3/3 .text GXBegin */ void GXBegin(GXPrimitive type, GXVtxFmt fmt, u16 vert_num) { GXData* data = __GXData; - u32 dirtyFlags = data->dirtyFlags; + u32 dirtyFlags = data->dirtyState; - if (data->dirtyFlags != 0) { + if (data->dirtyState != 0) { if (dirtyFlags & GX_DIRTY_SU_TEX) { __GXSetSUTexRegs(); } @@ -67,15 +67,15 @@ void GXBegin(GXPrimitive type, GXVtxFmt fmt, u16 vert_num) { __GXCalculateVLim(); } - __GXData->dirtyFlags = 0; + __GXData->dirtyState = 0; } if (*(u32*)__GXData == 0) { __GXSendFlushPrim(); } - GXFIFO.u8 = fmt | type; - GXFIFO.u16 = vert_num; + GXWGFifo.u8 = fmt | type; + GXWGFifo.u16 = vert_num; } /* 8035C834-8035C8BC 357174 0088+00 1/1 1/1 0/0 .text __GXSendFlushPrim */ @@ -83,11 +83,11 @@ void __GXSendFlushPrim(void) { u32 i; u32 sz = __GXData->vNum * __GXData->vLim; - GXFIFO.u8 = 0x98; - GXFIFO.u16 = __GXData->vNum; + GXWGFifo.u8 = 0x98; + GXWGFifo.u16 = __GXData->vNum; for (i = 0; i < sz; i += 4) { - GXFIFO.s32 = 0; + GXWGFifo.s32 = 0; } __GXData->bpSentNot = 1; @@ -99,8 +99,8 @@ void GXSetLineWidth(u8 width, GXTexOffset offsets) { GX_BITFIELD_SET(data->lpSize, 24, 8, width); GX_BITFIELD_SET(data->lpSize, 13, 3, offsets); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = data->lpSize; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = data->lpSize; data->bpSentNot = 0; } @@ -110,8 +110,8 @@ void GXSetPointSize(u8 size, GXTexOffset offsets) { GX_BITFIELD_SET(data->lpSize, 16, 8, size); GX_BITFIELD_SET(data->lpSize, 10, 3, offsets); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = data->lpSize; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = data->lpSize; data->bpSentNot = 0; } @@ -121,8 +121,8 @@ void GXEnableTexOffsets(GXTexCoordID coord, GXBool line, GXBool point) { GX_BITFIELD_SET(data->suTs0[coord], 13, 1, line); GX_BITFIELD_SET(data->suTs0[coord], 12, 1, point); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = data->suTs0[coord]; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = data->suTs0[coord]; data->bpSentNot = 0; } @@ -130,13 +130,13 @@ void GXEnableTexOffsets(GXTexCoordID coord, GXBool line, GXBool point) { void GXSetCullMode(GXCullMode mode) { GXData* data; GXCullMode mode2; - data = __GXData; + data = __GXData; mode2 = (mode >> 1) & 1; GX_BITFIELD_SET(mode2, 30, 1, mode); GX_BITFIELD_SET(data->genMode, 16, 2, mode2); - data->dirtyFlags |= GX_DIRTY_GEN_MODE; + data->dirtyState |= GX_DIRTY_GEN_MODE; } /* 8035C9AC-8035C9E0 3572EC 0034+00 0/0 6/6 0/0 .text GXSetCoPlanar */ @@ -144,15 +144,15 @@ void GXSetCoPlanar(GXBool enable) { GXData* data = __GXData; GX_BITFIELD_SET(data->genMode, 12, 1, enable); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = 0xFE080000; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = data->genMode; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = 0xFE080000; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = data->genMode; } /* 8035C9E0-8035CA04 357320 0024+00 2/2 0/0 0/0 .text __GXSetGenMode */ void __GXSetGenMode(void) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->genMode; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = __GXData->genMode; __GXData->bpSentNot = 0; } diff --git a/libs/dolphin/gx/GXInit.c b/libs/dolphin/gx/GXInit.c index 4db74aaf4e..dac0508656 100644 --- a/libs/dolphin/gx/GXInit.c +++ b/libs/dolphin/gx/GXInit.c @@ -1,61 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: GXInit -// - -#include "dolphin/gx/GXInit.h" -#include "dolphin/gx/GX.h" #include "dolphin/base/PPCArch.h" -#include "dol2asm.h" -#include "dolphin/os/OSTime.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" +#include "dolphin/vi.h" -// -// Forward References: -// +char* __GXVersion = "<< Dolphin SDK - GX release build: Nov 10 2004 06:27:12 (0x2301) >>"; -void __GXInitRevisionBits(); -void __GXInitGX(); - -// -// External References: -// - -void PPCSync(); -void OSRegisterVersion(); -void OSRegisterResetFunction(); -void VIGetTvFormat(); -void GXSetCPUFifo(); -void GXSetGPFifo(); -void __GXFifoInit(); -void GXClearVtxDesc(); -void GXSetVtxAttrFmtv(); -void GXInvalidateVtxCache(); -void __GXAbort(); -void GXPokeAlphaRead(); -void GXPokeBlendMode(); -void __GXPEInit(); -void GXSetDispCopyFrame2Field(); -void GXClearBoundingBox(); -void GXInitTlutRegion(); -void GXInvalidateTexAll(); -void __GXSetTmemConfig(); -void __GXSetIndirectMask(); -void __GXFlushTextureState(); -void GXSetProjectionv(); -void GXSetScissorBoxOffset(); -void GXSetGPMetric(); -void GXClearGPMetric(); -extern u8 GXNtsc480IntDf[60]; -extern u8 GXMpal480IntDf[60]; -extern u8 GXPal528IntDf[60]; -extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 8044CE00-8044CE80 079B20 0080+00 1/1 0/0 0/0 .bss FifoObj */ static GXFifoObj FifoObj; @@ -66,32 +15,32 @@ static GXData gxData; GXData* const __GXData = &gxData; /* 8035921C-80359318 353B5C 00FC+00 1/1 0/0 0/0 .text __GXDefaultTexRegionCallback */ -GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID id) { - GXTexFmt format; // r31 - GXBool isMipMap; // r3 +GXTexRegion* __GXDefaultTexRegionCallback(const GXTexObj* obj, GXTexMapID id) { + GXTexFmt format; // r31 + GXBool isMipMap; // r3 - format = GXGetTexObjFmt(obj); - isMipMap = GXGetTexObjMipMap(obj); - id = (GXTexMapID)(id % GX_MAX_TEXMAP); + format = GXGetTexObjFmt(obj); + isMipMap = GXGetTexObjMipMap(obj); + id = (GXTexMapID)(id % GX_MAX_TEXMAP); - switch (format) { - case GX_TF_RGBA8: - if (isMipMap) { - return &__GXData->TexRegions2[id]; - } - return &__GXData->TexRegions1[id]; + switch (format) { + case GX_TF_RGBA8: + if (isMipMap) { + return &__GXData->TexRegions2[id]; + } + return &__GXData->TexRegions1[id]; - case GX_TF_C4: - case GX_TF_C8: - case GX_TF_C14X2: - return &__GXData->TexRegions0[id]; + case GX_TF_C4: + case GX_TF_C8: + case GX_TF_C14X2: + return &__GXData->TexRegions0[id]; - default: - if (isMipMap) { - return &__GXData->TexRegions1[id]; - } - return &__GXData->TexRegions0[id]; - } + default: + if (isMipMap) { + return &__GXData->TexRegions1[id]; + } + return &__GXData->TexRegions0[id]; + } } /* 80359318-8035933C 353C58 0024+00 1/1 0/0 0/0 .text __GXDefaultTlutRegionCallback */ @@ -104,16 +53,16 @@ GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { } /* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */ -/* static */ u32 resetFuncRegistered; +u32 resetFuncRegistered; /* 80451940-80451944 000E40 0004+00 1/1 0/0 0/0 .sbss calledOnce$37 */ -/* static */ u32 calledOnce; +u32 calledOnce; /* 80451938-8045193C 000E38 0004+00 1/1 0/0 0/0 .sbss time$36 */ -/* static */ OSTime time; +OSTime time; /* 80451930-80451938 000E30 0004+04 1/1 0/0 0/0 .sbss peCount$35 */ -/* static */ u32 peCount; +u32 peCount; /* 8045192C-80451930 000E2C 0004+00 2/2 2/2 0/0 .sbss __memReg */ vu16* __memReg; @@ -130,377 +79,506 @@ u32* __piReg; /* 8035933C-803594CC 353C7C 0190+00 1/0 0/0 0/0 .text __GXShutdown */ BOOL __GXShutdown(BOOL final) { - u32 val; - u32 newPeCount; - OSTime newTime; + u32 val; + u32 newPeCount; + OSTime newTime; - if (!final) { - if (!calledOnce) { - peCount = GXReadMEMReg(0x28, 0x27); - time = OSGetTime(); - calledOnce = 1; - return FALSE; - } + if (!final) { + if (!calledOnce) { + peCount = GXReadMEMReg(0x28, 0x27); + time = OSGetTime(); + calledOnce = 1; + return FALSE; + } - newTime = OSGetTime(); - newPeCount = GXReadMEMReg(0x28, 0x27); + newTime = OSGetTime(); + newPeCount = GXReadMEMReg(0x28, 0x27); - if (newTime - time < 10) { - return FALSE; - } + if (newTime - time < 10) { + return FALSE; + } - if (newPeCount != peCount) { - peCount = newPeCount; - time = newTime; - return FALSE; - } + if (newPeCount != peCount) { + peCount = newPeCount; + time = newTime; + return FALSE; + } - } else { - GXSetBreakPtCallback(NULL); - GXSetDrawSyncCallback(NULL); - GXSetDrawDoneCallback(NULL); + } else { + GXSetBreakPtCallback(NULL); + GXSetDrawSyncCallback(NULL); + GXSetDrawDoneCallback(NULL); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); - GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); - PPCSync(); + PPCSync(); - GX_SET_CP_REG(1, 0); - GX_SET_CP_REG(2, 3); + GX_SET_CP_REG(1, 0); + GX_SET_CP_REG(2, 3); - __GXData->abtWaitPECopy = GX_TRUE; + __GXData->abtWaitPECopy = GX_TRUE; - __GXAbort(); - } + __GXAbort(); + } - return TRUE; + return TRUE; } /* 803594CC-80359670 353E0C 01A4+00 1/1 1/1 0/0 .text __GXInitRevisionBits */ void __GXInitRevisionBits(void) { u32 i; for (i = 0; i < 8; i++) { - FAST_FLAG_SET(__GXData->vatA[i], 1, 30, 33); - FAST_FLAG_SET(__GXData->vatB[i], 1, 31, 33); + FAST_FLAG_SET(__GXData->vatA[i], 1, 30, 33); + FAST_FLAG_SET(__GXData->vatB[i], 1, 31, 33); - GX_WRITE_U8(0x8); - GX_WRITE_U8(i | 0x80); - GX_WRITE_U32(__GXData->vatB[i]); - } + GX_WRITE_U8(0x8); + GX_WRITE_U8(i | 0x80); + GX_WRITE_U32(__GXData->vatB[i]); + } - { - u32 reg1 = 0; - u32 reg2 = 0; + { + u32 reg1 = 0; + u32 reg2 = 0; - FAST_FLAG_SET(reg1, 1, 0, 1); - FAST_FLAG_SET(reg1, 1, 1, 1); - FAST_FLAG_SET(reg1, 1, 2, 1); - FAST_FLAG_SET(reg1, 1, 3, 1); - FAST_FLAG_SET(reg1, 1, 4, 1); - FAST_FLAG_SET(reg1, 1, 5, 1); - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1000); - GX_WRITE_U32(reg1); + FAST_FLAG_SET(reg1, 1, 0, 1); + FAST_FLAG_SET(reg1, 1, 1, 1); + FAST_FLAG_SET(reg1, 1, 2, 1); + FAST_FLAG_SET(reg1, 1, 3, 1); + FAST_FLAG_SET(reg1, 1, 4, 1); + FAST_FLAG_SET(reg1, 1, 5, 1); + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1000); + GX_WRITE_U32(reg1); - FAST_FLAG_SET(reg2, 1, 0, 1); - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1012); - GX_WRITE_U32(reg2); - } + FAST_FLAG_SET(reg2, 1, 0, 1); + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1012); + GX_WRITE_U32(reg2); + } - { - u32 reg = 0; - FAST_FLAG_SET(reg, 1, 0, 1); - FAST_FLAG_SET(reg, 1, 1, 1); - FAST_FLAG_SET(reg, 1, 2, 1); - FAST_FLAG_SET(reg, 1, 3, 1); - FAST_FLAG_SET(reg, 0x58, 24, 8); - GX_WRITE_U8(0x61); - GX_WRITE_U32(reg); - } + { + u32 reg = 0; + FAST_FLAG_SET(reg, 1, 0, 1); + FAST_FLAG_SET(reg, 1, 1, 1); + FAST_FLAG_SET(reg, 1, 2, 1); + FAST_FLAG_SET(reg, 1, 3, 1); + FAST_FLAG_SET(reg, 0x58, 24, 8); + GX_WRITE_U8(0x61); + GX_WRITE_U32(reg); + } } -/* ############################################################################################## */ -/* 803D2040-803D20A0 02F160 0044+1C 2/1 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - GX release build: Nov 10 2004 06:27:12 (0x2301) >>"; - /* 803D20A0-803D20C0 02F1C0 0020+00 0/1 0/0 0/0 .data DefaultTexData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 DefaultTexData[32] ALIGN_DECL(32) = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +static u16 DefaultTexData[] ALIGN_DECL(32) = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, }; -#pragma pop /* 803D20C0-803D2190 02F1E0 00D0+00 0/1 0/0 0/0 .data GXDefaultVATList */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 GXDefaultVATList[208] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static GXVtxAttrFmtList GXDefaultVATList[] = { + {GX_VA_POS, GX_POS_XYZ, GX_F32, 0}, + {GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0}, + {GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0}, + {GX_VA_CLR1, GX_CLR_RGBA, GX_RGBA8, 0}, + {GX_VA_TEX0, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX1, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX2, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX3, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX4, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX5, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX6, GX_TEX_ST, GX_F32, 0}, + {GX_VA_TEX7, GX_TEX_ST, GX_F32, 0}, + {GX_VA_NULL, GX_COMPCNT_NULL, GX_COMP_NULL, 0}, }; -#pragma pop /* 803D2190-803D21AC 02F2B0 001C+00 0/1 0/0 0/0 .data GXDefaultProjData */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 GXDefaultProjData[28] = { - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop +static f32 GXDefaultProjData[] = {1.0f, 0.0f, 1.0f, 0.0f, -1.0f, -2.0f, 0.0f}; /* 803D21AC-803D226C 02F2CC 00C0+00 1/1 0/0 0/0 .data GXTexRegionAddrTable */ static u32 GXTexRegionAddrTable[] = { - 0x00000, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000, 0x70000, 0x08000, 0x18000, 0x28000, 0x38000, - 0x48000, 0x58000, 0x68000, 0x78000, 0x00000, 0x90000, 0x20000, 0xB0000, 0x40000, 0x98000, 0x60000, 0xB8000, - 0x80000, 0x10000, 0xA0000, 0x30000, 0x88000, 0x50000, 0xA8000, 0x70000, 0x00000, 0x90000, 0x20000, 0xB0000, - 0x40000, 0x90000, 0x60000, 0xB0000, 0x80000, 0x10000, 0xA0000, 0x30000, 0x80000, 0x50000, 0xA0000, 0x70000, + 0x00000, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000, 0x70000, 0x08000, 0x18000, + 0x28000, 0x38000, 0x48000, 0x58000, 0x68000, 0x78000, 0x00000, 0x90000, 0x20000, 0xB0000, + 0x40000, 0x98000, 0x60000, 0xB8000, 0x80000, 0x10000, 0xA0000, 0x30000, 0x88000, 0x50000, + 0xA8000, 0x70000, 0x00000, 0x90000, 0x20000, 0xB0000, 0x40000, 0x90000, 0x60000, 0xB0000, + 0x80000, 0x10000, 0xA0000, 0x30000, 0x80000, 0x50000, 0xA0000, 0x70000, }; /* 803D226C-803D2280 -00001 0010+04 1/1 0/0 0/0 .data GXResetFuncInfo */ -SECTION_DATA static void* GXResetFuncInfo[4 + 1 /* padding */] = { - (void*)__GXShutdown, - (void*)0x0000007F, - (void*)NULL, - (void*)NULL, - /* padding */ - NULL, -}; - -/* 80450A78-80450A80 -00001 0004+04 1/1 0/0 0/0 .sdata __GXVersion */ -SECTION_SDATA static const char* __GXVersion = lit_1; - -/* 80456584-80456588 004B84 0004+00 1/1 0/0 0/0 .sdata2 @267 */ -SECTION_SDATA2 static f32 lit_267 = 16777216.0f; - -/* 80456588-8045658C 004B88 0004+00 2/2 0/0 0/0 .sdata2 @268 */ -SECTION_SDATA2 static u8 lit_268[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +static OSResetFunctionInfo GXResetFuncInfo = {__GXShutdown, OS_RESET_PRIO_GX}; /* 80359670-80359C70 353FB0 0600+00 0/0 2/2 0/0 .text GXInit */ -// Matches with literals -#ifdef NONMATCHING static void EnableWriteGatherPipe() { - u32 hid2; // r31 - hid2 = PPCMfhid2(); - PPCMtwpar(OSUncachedToPhysical((void*)GXFIFO_ADDR)); - hid2 |= 0x40000000; - PPCMthid2(hid2); + u32 hid2; // r31 + hid2 = PPCMfhid2(); + PPCMtwpar(OSUncachedToPhysical((void*)GXFIFO_ADDR)); + hid2 |= 0x40000000; + PPCMthid2(hid2); } -GXFifoObj* GXInit(void* base, u32 size) -{ - u32 i; - u32 pad2; // for stack matching +GXFifoObj* GXInit(void* base, u32 size) { + u32 i; + u32 pad2; // for stack matching - OSRegisterVersion(__GXVersion); - __GXData->inDispList = GX_FALSE; - __GXData->dlSaveContext = GX_TRUE; - __GXData->abtWaitPECopy = GX_TRUE; + OSRegisterVersion(__GXVersion); + __GXData->inDispList = GX_FALSE; + __GXData->dlSaveContext = GX_TRUE; + __GXData->abtWaitPECopy = GX_TRUE; - __GXData->tcsManEnab = 0; - __GXData->tevTcEnab = 0; + __GXData->tcsManEnab = 0; + __GXData->tevTcEnab = 0; - GXSetMisc(GX_MT_XF_FLUSH, 0); + GXSetMisc(GX_MT_XF_FLUSH, 0); - __piReg = (void*)OSPhysicalToUncached(GX_PI_ADDR); - __cpReg = (void*)OSPhysicalToUncached(GX_CP_ADDR); - __peReg = (void*)OSPhysicalToUncached(GX_PE_ADDR); - __memReg = (void*)OSPhysicalToUncached(GX_MEM_ADDR); + __piReg = (void*)OSPhysicalToUncached(GX_PI_ADDR); + __cpReg = (void*)OSPhysicalToUncached(GX_CP_ADDR); + __peReg = (void*)OSPhysicalToUncached(GX_PE_ADDR); + __memReg = (void*)OSPhysicalToUncached(GX_MEM_ADDR); - __GXFifoInit(); + __GXFifoInit(); - GXInitFifoBase(&FifoObj, base, size); - GXSetCPUFifo(&FifoObj); - GXSetGPFifo(&FifoObj); + GXInitFifoBase(&FifoObj, base, size); + GXSetCPUFifo(&FifoObj); + GXSetGPFifo(&FifoObj); - if (!resetFuncRegistered) { - OSRegisterResetFunction(&GXResetFuncInfo); - resetFuncRegistered = 1; - } + if (!resetFuncRegistered) { + OSRegisterResetFunction(&GXResetFuncInfo); + resetFuncRegistered = 1; + } - __GXPEInit(); - EnableWriteGatherPipe(); + __GXPEInit(); + EnableWriteGatherPipe(); - __GXData->genMode = 0; - FAST_FLAG_SET(__GXData->genMode, 0, 24, 8); + __GXData->genMode = 0; + FAST_FLAG_SET(__GXData->genMode, 0, 24, 8); - __GXData->bpMask = 255; - FAST_FLAG_SET(__GXData->bpMask, 0xF, 24, 8); + __GXData->bpMask = 255; + FAST_FLAG_SET(__GXData->bpMask, 0xF, 24, 8); - __GXData->lpSize = 0; - FAST_FLAG_SET(__GXData->lpSize, 34, 24, 8); + __GXData->lpSize = 0; + FAST_FLAG_SET(__GXData->lpSize, 34, 24, 8); - for (i = 0; i < GX_MAX_TEVSTAGE; i++) { - __GXData->tevc[i] = 0; - __GXData->teva[i] = 0; - __GXData->tref[i / 2] = 0; - __GXData->texmapId[i] = GX_TEXMAP_NULL; + for (i = 0; i < GX_MAX_TEVSTAGE; i++) { + __GXData->tevc[i] = 0; + __GXData->teva[i] = 0; + __GXData->tref[i / 2] = 0; + __GXData->texmapId[i] = GX_TEXMAP_NULL; - FAST_FLAG_SET(__GXData->tevc[i], 0xC0 + i * 2, 24, 8); - FAST_FLAG_SET(__GXData->teva[i], 0xC1 + i * 2, 24, 8); - FAST_FLAG_SET(__GXData->tevKsel[i / 2], 0xF6 + i / 2, 24, 8); - FAST_FLAG_SET(__GXData->tref[i / 2], 0x28 + i / 2, 24, 8); - } + FAST_FLAG_SET(__GXData->tevc[i], 0xC0 + i * 2, 24, 8); + FAST_FLAG_SET(__GXData->teva[i], 0xC1 + i * 2, 24, 8); + FAST_FLAG_SET(__GXData->tevKsel[i / 2], 0xF6 + i / 2, 24, 8); + FAST_FLAG_SET(__GXData->tref[i / 2], 0x28 + i / 2, 24, 8); + } - __GXData->iref = 0; - FAST_FLAG_SET(__GXData->iref, 0x27, 24, 8); + __GXData->iref = 0; + FAST_FLAG_SET(__GXData->iref, 0x27, 24, 8); - for (i = 0; i < GX_MAXCOORD; i++) { - __GXData->suTs0[i] = 0; - __GXData->suTs1[i] = 0; + for (i = 0; i < GX_MAXCOORD; i++) { + __GXData->suTs0[i] = 0; + __GXData->suTs1[i] = 0; - FAST_FLAG_SET(__GXData->suTs0[i], 0x30 + i * 2, 24, 8); - FAST_FLAG_SET(__GXData->suTs1[i], 0x31 + i * 2, 24, 8); - } + FAST_FLAG_SET(__GXData->suTs0[i], 0x30 + i * 2, 24, 8); + FAST_FLAG_SET(__GXData->suTs1[i], 0x31 + i * 2, 24, 8); + } - FAST_FLAG_SET(__GXData->suScis0, 0x20, 24, 8); - FAST_FLAG_SET(__GXData->suScis1, 0x21, 24, 8); + FAST_FLAG_SET(__GXData->suScis0, 0x20, 24, 8); + FAST_FLAG_SET(__GXData->suScis1, 0x21, 24, 8); - FAST_FLAG_SET(__GXData->cmode0, 0x41, 24, 8); - FAST_FLAG_SET(__GXData->cmode1, 0x42, 24, 8); + FAST_FLAG_SET(__GXData->cmode0, 0x41, 24, 8); + FAST_FLAG_SET(__GXData->cmode1, 0x42, 24, 8); - FAST_FLAG_SET(__GXData->zmode, 0x40, 24, 8); - FAST_FLAG_SET(__GXData->peCtrl, 0x43, 24, 8); + FAST_FLAG_SET(__GXData->zmode, 0x40, 24, 8); + FAST_FLAG_SET(__GXData->peCtrl, 0x43, 24, 8); - FAST_FLAG_SET(__GXData->cpTex, 0, 7, 2); + FAST_FLAG_SET(__GXData->cpTex, 0, 7, 2); - __GXData->zScale = 1.6777216E7f; - __GXData->zOffset = 0.0f; + __GXData->zScale = 1.6777216E7f; + __GXData->zOffset = 0.0f; - __GXData->dirtyFlags = 0; - __GXData->dirtyVAT = 0; + __GXData->dirtyState = 0; + __GXData->dirtyVAT = 0; - { - u32 val1; - u32 val2; + { + u32 val1; + u32 val2; - val2 = OS_BUS_CLOCK / 500; + val2 = OS_BUS_CLOCK / 500; - __GXFlushTextureState(); + __GXFlushTextureState(); - val1 = (val2 / 2048) | 0x69000400; + val1 = (val2 / 2048) | 0x69000400; - GX_WRITE_U8(0x61); - GX_WRITE_U32(val1); + GX_WRITE_U8(0x61); + GX_WRITE_U32(val1); - __GXFlushTextureState(); + __GXFlushTextureState(); - val1 = (val2 / 4224) | 0x46000200; - GX_WRITE_U8(0x61); - GX_WRITE_U32(val1); - } + val1 = (val2 / 4224) | 0x46000200; + GX_WRITE_U8(0x61); + GX_WRITE_U32(val1); + } - __GXInitRevisionBits(); + __GXInitRevisionBits(); - for (i = 0; i < GX_MAX_TEXMAP; i++) { - GXInitTexCacheRegion(&__GXData->TexRegions0[i], GX_FALSE, GXTexRegionAddrTable[i], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 8], - GX_TEXCACHE_32K); - GXInitTexCacheRegion(&__GXData->TexRegions1[i], GX_FALSE, GXTexRegionAddrTable[i + 16], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 24], - GX_TEXCACHE_32K); - GXInitTexCacheRegion(&__GXData->TexRegions2[i], GX_TRUE, GXTexRegionAddrTable[i + 32], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 40], - GX_TEXCACHE_32K); - } + for (i = 0; i < GX_MAX_TEXMAP; i++) { + GXInitTexCacheRegion(&__GXData->TexRegions0[i], GX_FALSE, GXTexRegionAddrTable[i], + GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 8], GX_TEXCACHE_32K); + GXInitTexCacheRegion(&__GXData->TexRegions1[i], GX_FALSE, GXTexRegionAddrTable[i + 16], + GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 24], GX_TEXCACHE_32K); + GXInitTexCacheRegion(&__GXData->TexRegions2[i], GX_TRUE, GXTexRegionAddrTable[i + 32], + GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 40], GX_TEXCACHE_32K); + } - for (i = 0; i < GX_MAX_TLUT; i++) { - GXInitTlutRegion(&__GXData->TlutRegions[i], 0xC0000 + 0x2000 * i, GX_TLUT_256); - } + for (i = 0; i < GX_MAX_TLUT; i++) { + GXInitTlutRegion(&__GXData->TlutRegions[i], 0xC0000 + 0x2000 * i, GX_TLUT_256); + } - for (i = 0; i < GX_MAX_BIGTLUT; i++) { - GXInitTlutRegion(&__GXData->TlutRegions[i + 16], 0xE0000 + 0x8000 * i, GX_TLUT_1K); - } + for (i = 0; i < GX_MAX_BIGTLUT; i++) { + GXInitTlutRegion(&__GXData->TlutRegions[i + 16], 0xE0000 + 0x8000 * i, GX_TLUT_1K); + } - GX_SET_CP_REG(3, 0); + GX_SET_CP_REG(3, 0); - FAST_FLAG_SET(__GXData->perfSel, 0, 4, 4); + FAST_FLAG_SET(__GXData->perfSel, 0, 4, 4); - GX_WRITE_U8(0x8); - GX_WRITE_U8(0x20); - GX_WRITE_U32(__GXData->perfSel); + GX_WRITE_U8(0x8); + GX_WRITE_U8(0x20); + GX_WRITE_U32(__GXData->perfSel); - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0); + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0); - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x23000000); + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x23000000); - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x24000000); + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x24000000); - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000000); + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000000); - __GXSetIndirectMask(0); - __GXSetTmemConfig(2); - __GXInitGX(); + __GXSetIndirectMask(0); + __GXSetTmemConfig(2); + __GXInitGX(); - return &FifoObj; + return &FifoObj; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm GXFifoObj* GXInit(void* base, u32 size) { - nofralloc -#include "asm/dolphin/gx/GXInit/GXInit.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 8045658C-80456590 004B8C 0004+00 1/1 0/0 0/0 .sdata2 @269 */ -SECTION_SDATA2 static u32 lit_269 = 0x404040FF; - -/* 80456590-80456594 004B90 0004+00 1/1 0/0 0/0 .sdata2 @270 */ -SECTION_SDATA2 static u8 lit_270[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80456594-80456598 004B94 0004+00 1/1 0/0 0/0 .sdata2 @271 */ -SECTION_SDATA2 static u32 lit_271 = 0xFFFFFFFF; - -/* 80456598-8045659C 004B98 0004+00 1/1 0/0 0/0 .sdata2 @331 */ -SECTION_SDATA2 static f32 lit_331 = 1.0f; - -/* 8045659C-804565A0 004B9C 0004+00 1/1 0/0 0/0 .sdata2 @332 */ -SECTION_SDATA2 static f32 lit_332 = 1.0f / 10.0f; - -/* 804565A0-804565A8 004BA0 0008+00 1/1 0/0 0/0 .sdata2 @334 */ -SECTION_SDATA2 static f64 lit_334 = 4503599627370496.0 /* cast u32 to float */; /* 80359C70-8035A5A8 3545B0 0938+00 1/1 0/0 0/0 .text __GXInitGX */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXInitGX(void) { - nofralloc -#include "asm/dolphin/gx/GXInit/__GXInitGX.s" -} -#pragma pop +void __GXInitGX(void) { + GXRenderModeObj* renderObj; + GXTexObj texObj; + Mtx ident; + GXColor clearColor = {64, 64, 64, 255}; + GXColor ambColor = {0, 0, 0, 0}; + GXColor matColor = {255, 255, 255, 255}; + u32 i; + + switch (VIGetTvFormat()) { + case VI_NTSC: + renderObj = &GXNtsc480IntDf; + break; + + case VI_PAL: + renderObj = &GXPal528IntDf; + break; + + case VI_EURGB60: + renderObj = &GXEurgb60Hz480IntDf; + break; + + case VI_MPAL: + renderObj = &GXMpal480IntDf; + break; + + default: + renderObj = &GXNtsc480IntDf; + break; + } + + GXSetCopyClear(clearColor, 0xFFFFFF); + + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX2, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEX3, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEX4, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD5, GX_TG_MTX2x4, GX_TG_TEX5, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD6, GX_TG_MTX2x4, GX_TG_TEX6, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD7, GX_TG_MTX2x4, GX_TG_TEX7, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + + GXSetNumTexGens(1); + GXClearVtxDesc(); + GXInvalidateVtxCache(); + + for (i = GX_VA_POS; i <= GX_LIGHT_ARRAY; i++) { + GXSetArray((GXAttr)i, __GXData, 0); + } + + for (i = 0; i < GX_MAX_VTXFMT; i++) { + GXSetVtxAttrFmtv((GXVtxFmt)i, GXDefaultVATList); + } + + GXSetLineWidth(6, GX_TO_ZERO); + GXSetPointSize(6, GX_TO_ZERO); + GXEnableTexOffsets(GX_TEXCOORD0, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD1, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD2, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD3, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD4, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD5, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD6, GX_FALSE, GX_FALSE); + GXEnableTexOffsets(GX_TEXCOORD7, GX_FALSE, GX_FALSE); + + ident[0][0] = 1.0f; + ident[0][1] = 0.0f; + ident[0][2] = 0.0f; + ident[0][3] = 0.0f; + + ident[1][0] = 0.0f; + ident[1][1] = 1.0f; + ident[1][2] = 0.0f; + ident[1][3] = 0.0f; + + ident[2][0] = 0.0f; + ident[2][1] = 0.0f; + ident[2][2] = 1.0f; + ident[2][3] = 0.0f; + + GXLoadPosMtxImm(ident, GX_PNMTX0); + GXLoadNrmMtxImm(ident, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + + GXLoadTexMtxImm(ident, GX_IDENTITY, GX_MTX3x4); + GXLoadTexMtxImm(ident, GX_PTIDENTITY, GX_MTX3x4); + + GXSetViewport(0.0f, 0.0f, renderObj->fb_width, renderObj->xfb_height, 0.0f, 1.0f); + + GXSetProjectionv(GXDefaultProjData); + + GXSetCoPlanar(GX_FALSE); + GXSetCullMode(GX_CULL_BACK); + GXSetClipMode(GX_CLIP_ENABLE); + + GXSetScissor(0, 0, renderObj->fb_width, renderObj->efb_height); + GXSetScissorBoxOffset(0, 0); + + GXSetNumChans(0); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, ambColor); + GXSetChanMatColor(GX_COLOR0A0, matColor); + + GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_NONE, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR1A1, ambColor); + GXSetChanMatColor(GX_COLOR1A1, matColor); + + GXInvalidateTexAll(); + GXSetTexRegionCallback(__GXDefaultTexRegionCallback); + GXSetTlutRegionCallback(__GXDefaultTlutRegionCallback); + + GXInitTexObj(&texObj, DefaultTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&texObj, GX_TEXMAP0); + GXLoadTexObj(&texObj, GX_TEXMAP1); + GXLoadTexObj(&texObj, GX_TEXMAP2); + GXLoadTexObj(&texObj, GX_TEXMAP3); + GXLoadTexObj(&texObj, GX_TEXMAP4); + GXLoadTexObj(&texObj, GX_TEXMAP5); + GXLoadTexObj(&texObj, GX_TEXMAP6); + GXLoadTexObj(&texObj, GX_TEXMAP7); + + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD2, GX_TEXMAP2, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD3, GX_TEXMAP3, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD4, GX_TEXMAP4, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD5, GX_TEXMAP5, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD6, GX_TEXMAP6, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD7, GX_TEXMAP7, GX_COLOR0A0); + + GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + + GXSetNumTevStages(1); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + + GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0); + + for (i = 0; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevKColorSel((GXTevStageID)i, GX_TEV_KCSEL_1_4); + GXSetTevKAlphaSel((GXTevStageID)i, GX_TEV_KASEL_1); + GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0); + } + + GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); + + for (i = 0; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevDirect((GXTevStageID)i); + } + + GXSetNumIndStages(0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1); + + GXSetFog(GX_FOG_NONE, 0.0f, 1.0f, 0.1f, 1.0f, ambColor); + GXSetFogRangeAdj(GX_FALSE, 0, NULL); + + GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR); + + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_TRUE); + + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetZCompLoc(GX_TRUE); + + GXSetDither(GX_TRUE); + + GXSetDstAlpha(GX_FALSE, 0); + GXSetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR); + + GXSetFieldMask(GX_TRUE, GX_TRUE); + GXSetFieldMode( + (GXBool)renderObj->field_rendering, + (GXBool)((renderObj->vi_height == 2 * renderObj->xfb_height) ? GX_TRUE : GX_FALSE)); + + GXSetDispCopySrc(0, 0, renderObj->fb_width, renderObj->efb_height); + GXSetDispCopyDst(renderObj->fb_width, renderObj->efb_height); + GXSetDispCopyYScale((f32)renderObj->xfb_height / (f32)renderObj->efb_height); + GXSetCopyClamp(GX_CLAMP_BOTH); + + GXSetCopyFilter(renderObj->antialiasing, renderObj->sample_pattern, GX_TRUE, + renderObj->vfilter); + GXSetDispCopyGamma(GX_GM_1_0); + GXSetDispCopyFrame2Field(GX_COPY_PROGRESSIVE); + GXClearBoundingBox(); + + GXPokeColorUpdate(GX_TRUE); + GXPokeAlphaUpdate(GX_TRUE); + GXPokeDither(GX_FALSE); + GXPokeBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ONE, GX_LO_SET); + GXPokeAlphaMode(GX_ALWAYS, 0); + GXPokeAlphaRead(GX_READ_FF); + GXPokeDstAlpha(GX_FALSE, 0); + GXPokeZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + GXClearGPMetric(); +} \ No newline at end of file diff --git a/libs/dolphin/gx/GXLight.c b/libs/dolphin/gx/GXLight.c index a05bf23ba5..f73ebd1254 100644 --- a/libs/dolphin/gx/GXLight.c +++ b/libs/dolphin/gx/GXLight.c @@ -4,8 +4,8 @@ */ #include "dolphin/gx/GXLight.h" +#include "dolphin/gx.h" #include "math.h" -#include "dolphin/gx/GX.h" /* 8035D630-8035D64C 357F70 001C+00 0/0 1/1 0/0 .text GXInitLightAttn */ void GXInitLightAttn(GXLightObj* obj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2) { @@ -135,226 +135,171 @@ void GXInitLightColor(GXLightObj* obj, GXColor color) { *(u32*)&obj->color = *(u32*)&color; } +static inline void PushLight(const register GXLightObj* lt_obj, register void* dest) { + register u32 zero, color; + register f32 a0_a1, a2_k0, k1_k2; + register f32 px_py, pz_dx, dy_dz; +#ifdef __MWERKS__ // clang-format off + asm { + lwz color, 12(lt_obj) + xor zero, zero, zero + psq_l a0_a1, 16(lt_obj), 0, 0 + psq_l a2_k0, 24(lt_obj), 0, 0 + psq_l k1_k2, 32(lt_obj), 0, 0 + psq_l px_py, 40(lt_obj), 0, 0 + psq_l pz_dx, 48(lt_obj), 0, 0 + psq_l dy_dz, 56(lt_obj), 0, 0 + + stw zero, 0(dest) + stw zero, 0(dest) + stw zero, 0(dest) + stw color, 0(dest) + psq_st a0_a1, 0(dest), 0, 0 + psq_st a2_k0, 0(dest), 0, 0 + psq_st k1_k2, 0(dest), 0, 0 + psq_st px_py, 0(dest), 0, 0 + psq_st pz_dx, 0(dest), 0, 0 + psq_st dy_dz, 0(dest), 0, 0 + } +#endif // clang-format on +} + /* 8035D8E4-8035D960 358224 007C+00 0/0 4/4 2/2 .text GXLoadLightObjImm */ -asm void GXLoadLightObjImm(register GXLightObj* obj, register GXLightID id) { - // clang-format off - nofralloc +void GXLoadLightObjImm(GXLightObj* obj, GXLightID light) { + u32 addr; + u32 idx; + GXLightObj* pObj = (GXLightObj*)obj; - cntlzw r0, id - subfic r0, r0, 0x1f - rlwinm r5, r0, 4, 0x19, 0x1b - lis r4, 0xCC01 - li r0, 0x10 - addi r5, r5, 0x600 - stb r0, 0x8000(r4) - oris r0, r5, 0xf - stwu r0, -0x8000(r4) - lwz r0, 0xc(r3) - xor r6, r6, r6 - psq_l f5, 16(obj), 0, 0 - psq_l f4, 24(obj), 0, 0 - psq_l f3, 32(obj), 0, 0 - psq_l f2, 40(obj), 0, 0 - psq_l f1, 48(obj), 0, 0 - psq_l f0, 56(obj), 0, 0 - stw r6, 0(r4) - stw r6, 0(r4) - stw r6, 0(r4) - stw r0, 0(r4) - psq_st f5, 0(r4), 0, 0 - psq_st f4, 0(r4), 0, 0 - psq_st f3, 0(r4), 0, 0 - psq_st f2, 0(r4), 0, 0 - psq_st f1, 0(r4), 0, 0 - psq_st f0, 0(r4), 0, 0 + idx = 31 - __cntlzw(light); + idx &= 7; - lwz r3, __GXData(r2) - li r0, 1 - sth r0, 2(r3) + addr = 0x600 + idx * 0x10; - blr - // clang-format on + GX_XF_LOAD_REG_HDR(addr | (0x10 - 1) << 16); + + PushLight(pObj, (void*)GXFIFO_ADDR); + __GXData->bpSentNot = 1; } /* 8035D960-8035DA48 3582A0 00E8+00 0/0 7/7 4/4 .text GXSetChanAmbColor */ -// b's instead of blr's -#ifdef NONMATCHING -void GXSetChanAmbColor(GXChannelID chan, GXColor color) { - u32 ambColor; - u32 colorId; - - switch(chan) { - case GX_COLOR0: - ambColor = *(u32*)&__GXData->ambColors[0]; - ambColor = __rlwimi(ambColor, *(u32*)&color, 0, 0, 23); - colorId = 0; - break; - case GX_COLOR1: - ambColor = *(u32*)&__GXData->ambColors[1]; - ambColor = __rlwimi(ambColor, *(u32*)&color, 0, 0, 23); - colorId = 1; - break; - case GX_ALPHA0: - ambColor = *(u32*)&__GXData->ambColors[0]; - ambColor = __rlwimi(ambColor, color.a, 0, 24, 31); - colorId = 0; - break; - case GX_ALPHA1: - ambColor = *(u32*)&__GXData->ambColors[1]; - ambColor = __rlwimi(ambColor, color.a, 0, 24, 31); - colorId = 1; - break; - case GX_COLOR0A0: - ambColor = *(u32*)&color; - colorId = 0; - break; - case GX_COLOR1A1: - ambColor = *(u32*)&color; - colorId = 1; - break; - default: - return; +void GXSetChanAmbColor(GXChannelID channel, GXColor color) { + u32 reg; + u32 colorID; + u8 alpha; + + switch (channel) { + case GX_COLOR0: + reg = __GXData->ambColor[GX_COLOR0]; + reg = GX_SET_TRUNC(reg, GXCOLOR_AS_U32(color), 0, 23); + colorID = GX_COLOR0; + break; + case GX_COLOR1: + reg = __GXData->ambColor[GX_COLOR1]; + reg = GX_SET_TRUNC(reg, GXCOLOR_AS_U32(color), 0, 23); + colorID = GX_COLOR1; + break; + case GX_ALPHA0: + reg = __GXData->ambColor[GX_COLOR0]; + reg = GX_SET_TRUNC(reg, color.a, 24, 31); + colorID = GX_COLOR0; + break; + case GX_ALPHA1: + reg = __GXData->ambColor[GX_COLOR1]; + reg = GX_SET_TRUNC(reg, color.a, 24, 31); + colorID = GX_COLOR1; + break; + case GX_COLOR0A0: + reg = GXCOLOR_AS_U32(color); + colorID = GX_COLOR0; + break; + case GX_COLOR1A1: + reg = GXCOLOR_AS_U32(color); + colorID = GX_COLOR1; + break; + default: + return; } - GXFIFO.u8 = 0x10; - GXFIFO.u32 = colorId + 0x100a; - GXFIFO.u32 = ambColor; - __GXData->bpSentNot = 1; - ((u32*)__GXData->ambColors)[colorId] = ambColor; + GX_XF_LOAD_REG(GX_XF_REG_AMBIENT0 + colorID, reg); + __GXData->bpSentNot = GX_TRUE; + __GXData->ambColor[colorID] = reg; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanAmbColor(GXChannelID channel, GXColor color) { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanAmbColor.s" -} -#pragma pop -#endif /* 8035DA48-8035DB30 358388 00E8+00 0/0 20/20 2/2 .text GXSetChanMatColor */ -// b's instead of blr's -#ifdef NONMATCHING -void GXSetChanMatColor(GXChannelID chan, GXColor color) { - u32 matColor; - u32 colorId; - - switch(chan) { - case GX_COLOR0: - matColor = *(u32*)&__GXData->matColors[0]; - matColor = __rlwimi(matColor, *(u32*)&color, 0, 0, 23); - colorId = 0; - break; - case GX_COLOR1: - matColor = *(u32*)&__GXData->matColors[1]; - matColor = __rlwimi(matColor, *(u32*)&color, 0, 0, 23); - colorId = 1; - break; - case GX_ALPHA0: - matColor = *(u32*)&__GXData->matColors[0]; - matColor = __rlwimi(matColor, color.a, 0, 24, 31); - colorId = 0; - break; - case GX_ALPHA1: - matColor = *(u32*)&__GXData->matColors[1]; - matColor = __rlwimi(matColor, color.a, 0, 24, 31); - colorId = 1; - break; - case GX_COLOR0A0: - matColor = *(u32*)&color; - colorId = 0; - break; - case GX_COLOR1A1: - matColor = *(u32*)&color; - colorId = 1; - break; - default: - return; +void GXSetChanMatColor(GXChannelID channel, GXColor color) { + u32 reg = 0; + GXChannelID colorID; + + switch (channel) { + case GX_COLOR0: + reg = __GXData->matColor[GX_COLOR0]; + reg = GX_SET_TRUNC(reg, GXCOLOR_AS_U32(color), 0, 23); + colorID = GX_COLOR0; + break; + case GX_COLOR1: + reg = __GXData->matColor[GX_COLOR1]; + reg = GX_SET_TRUNC(reg, GXCOLOR_AS_U32(color), 0, 23); + colorID = GX_COLOR1; + break; + case GX_ALPHA0: + reg = __GXData->matColor[GX_COLOR0]; + reg = GX_SET_TRUNC(reg, color.a, 24, 31); + colorID = GX_COLOR0; + break; + case GX_ALPHA1: + reg = __GXData->matColor[GX_COLOR1]; + reg = GX_SET_TRUNC(reg, color.a, 24, 31); + colorID = GX_COLOR1; + break; + case GX_COLOR0A0: + reg = GXCOLOR_AS_U32(color); + colorID = GX_COLOR0; + break; + case GX_COLOR1A1: + reg = GXCOLOR_AS_U32(color); + colorID = GX_COLOR1; + break; + default: + return; } - GXFIFO.u8 = 0x10; - GXFIFO.u32 = colorId + 0x100c; - GXFIFO.u32 = matColor; - __GXData->bpSentNot = 1; - ((u32*)__GXData->matColors)[colorId] = matColor; + GX_XF_LOAD_REG(GX_XF_REG_MATERIAL0 + colorID, reg); + __GXData->bpSentNot = GX_TRUE; + __GXData->matColor[colorID] = reg; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanMatColor(GXChannelID channel, GXColor color) { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanMatColor.s" -} -#pragma pop -#endif /* 8035DB30-8035DB6C 358470 003C+00 0/0 51/51 6/6 .text GXSetNumChans */ -// 1 wrong reg -#ifdef NONMATCHING -void GXSetNumChans(u8 chan_num) { - GXData* data = __GXData; - GX_BITFIELD_SET(data->bpSentNot04, 25, 3, chan_num); - - GXFIFO.u8 = 0x10; - GXFIFO.s32 = 0x1009; - GXFIFO.s32 = chan_num; - - data->dirtyFlags |= GX_DIRTY_GEN_MODE; +void GXSetNumChans(u8 count) { + GX_SET_REG(__GXData->genMode, count, 25, 27); + GX_XF_LOAD_REG(GX_XF_REG_NUMCOLORS, count); + __GXData->dirtyState |= GX_DIRTY_GEN_MODE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetNumChans(u8 chan_num) { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetNumChans.s" -} -#pragma pop -#endif /* 8035DB6C-8035DC1C 3584AC 00B0+00 0/0 34/34 4/4 .text GXSetChanCtrl */ -// mr/addi, extra branch instruction -#ifdef NONMATCHING -void GXSetChanCtrl(GXChannelID channel, GXBool enable, GXColorSrc amb_src, GXColorSrc mat_src, - u32 light_mask, GXDiffuseFn diff_fn, GXAttnFn attn_fn) { - u32 field = 0; - const u32 idx = channel & 3; +void GXSetChanCtrl(GXChannelID channel, GXBool doEnable, GXColorSrc ambSrc, GXColorSrc matSrc, + u32 mask, GXDiffuseFn diffFunc, GXAttnFn attnFunc) { + const u32 colorID = (u32)channel & 0x3; + u32 reg = 0; - GX_BITFIELD_SET(field, 30, 1, enable); - GX_BITFIELD_SET(field, 31, 1, amb_src); - GX_BITFIELD_SET(field, 25, 1, mat_src); - GX_BITFIELD_SET(field, 23, 2, (attn_fn == GX_AF_SPEC) ? GX_DF_NONE : diff_fn); - GX_BITFIELD_SET(field, 22, 1, attn_fn != GX_AF_NONE); - GX_BITFIELD_SET(field, 21, 1, attn_fn != GX_AF_SPEC); - GX_BITFIELD_SET(field, 26, 4, (u32)light_mask); - field = __rlwimi(field, (u32)light_mask, 7, 0x11, 0x14); + GX_SET_REG(reg, doEnable, GX_XF_CLR0CTRL_LIGHT_ST, GX_XF_CLR0CTRL_LIGHT_END); + GX_SET_REG(reg, matSrc, GX_XF_CLR0CTRL_MTXSRC_ST, GX_XF_CLR0CTRL_MTXSRC_END); + GX_SET_REG(reg, ambSrc, GX_XF_CLR0CTRL_AMBSRC_ST, GX_XF_CLR0CTRL_AMBSRC_END); + GX_SET_REG(reg, (attnFunc == GX_AF_SPEC ? GX_DF_NONE : diffFunc), GX_XF_CLR0CTRL_DIFATTN_ST, + GX_XF_CLR0CTRL_DIFATTN_END); + GX_SET_REG(reg, (attnFunc != GX_AF_NONE), GX_XF_CLR0CTRL_ATTNENABLE_ST, + GX_XF_CLR0CTRL_ATTNENABLE_END); + GX_SET_REG(reg, (attnFunc != GX_AF_SPEC), GX_XF_CLR0CTRL_ATTNSEL_ST, + GX_XF_CLR0CTRL_ATTNSEL_END); + GX_BITFIELD_SET(reg, 26, 4, (u32)mask); + reg = __rlwimi(reg, (u32)mask, 7, 0x11, 0x14); - GXFIFO.u8 = 0x10; - GXFIFO.u32 = idx + 0x100e; - GXFIFO.u32 = field; + GX_XF_LOAD_REG(GX_XF_REG_COLOR0CNTRL + colorID, reg); if (channel == GX_COLOR0A0) { - GXFIFO.u8 = 0x10; - GXFIFO.u32 = 0x1010; - GXFIFO.u32 = field; + GX_XF_LOAD_REG(GX_XF_REG_ALPHA0CNTRL, reg); } else if (channel == GX_COLOR1A1) { - GXFIFO.u8 = 0x10; - GXFIFO.u32 = 0x1011; - GXFIFO.u32 = field; + GX_XF_LOAD_REG(GX_XF_REG_ALPHA1CNTRL, reg); } - __GXData->bpSentNot = 1; + __GXData->bpSentNot = GX_TRUE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanCtrl(GXChannelID channel, GXBool enable, GXColorSrc amb_src, GXColorSrc mat_src, - u32 light_mask, GXDiffuseFn diff_fn, GXAttnFn attn_fn) { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanCtrl.s" -} -#pragma pop -#endif diff --git a/libs/dolphin/gx/GXMisc.c b/libs/dolphin/gx/GXMisc.c index b9cf63de96..d5d7eb4b29 100644 --- a/libs/dolphin/gx/GXMisc.c +++ b/libs/dolphin/gx/GXMisc.c @@ -1,166 +1,101 @@ -// -// Generated By: dol2asm -// Translation Unit: GXMisc -// - #include "dolphin/gx/GXMisc.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" +#include "dolphin/gx/GXInit.h" #include "dolphin/os/OSContext.h" #include "dolphin/os/OSInterrupt.h" #include "dolphin/os/OSReset.h" #include "dolphin/os/OSTime.h" -#include "dolphin/gx/GXInit.h" -#include "dolphin/types.h" -// -// Forward References: -// - -void GXSetMisc(); -void GXFlush(); -void __GXAbort(); -void GXAbortFrame(); -void GXSetDrawDone(); -void GXDrawDone(); -void GXPixModeSync(); -void GXPokeAlphaRead(); -void GXPokeBlendMode(); -static void GXTokenInterruptHandler(OSInterrupt interrupt, OSContext* context); -static void GXFinishInterruptHandler(OSInterrupt interrupt, OSContext* pContext); -void __GXPEInit(); - -// -// External References: -// - -void PPCSync(); -void OSInitThreadQueue(); -void OSSleepThread(); -void OSWakeupThread(); -void __GXInitRevisionBits(); -void __GXCleanGPFifo(); -void __GXSetDirtyState(); - -// -// Declarations: -// +static void GXTokenInterruptHandler(__OSInterrupt interrupt, OSContext* context); +static void GXFinishInterruptHandler(__OSInterrupt interrupt, OSContext* pContext); /* 8035BE38-8035BECC 356778 0094+00 0/0 9/9 0/0 .text GXSetMisc */ -void GXSetMisc(u32 id, u32 value) { - switch (id) { - case 0: +void GXSetMisc(GXMiscToken token, u32 val) { + switch (token) { + case GX_MT_NULL: break; - case 1: - __GXData->vNum = value; - // fake match. Should be something like __GXData->vNum == 0, but it adds a neg instruction - __GXData->field_0x0 = (__cntlzw(__GXData->vNum) >> 5) & 0xffff; - __GXData->bpSentNot = 1; - if (__GXData->vNum == 0) { - break; + + case GX_MT_XF_FLUSH: + __GXData->vNum = val; + __GXData->vNumNot = !__GXData->vNum; + __GXData->bpSentNot = GX_TRUE; + + if (__GXData->vNum) { + __GXData->dirtyState |= GX_DIRTY_VCD; } - __GXData->dirtyFlags |= GX_DIRTY_VCD; break; - case 2: - __GXData->dlSaveContext = value != 0; + + case GX_MT_DL_SAVE_CONTEXT: + __GXData->dlSaveContext = (val != 0); break; - case 3: - __GXData->abtWaitPECopy = value != 0; + + case GX_MT_ABORT_WAIT_COPYOUT: + __GXData->abtWaitPECopy = (val != 0); break; } } /* 8035BECC-8035BF28 35680C 005C+00 1/1 10/10 0/0 .text GXFlush */ void GXFlush(void) { - if (__GXData->dirtyFlags) { + if (__GXData->dirtyState) { __GXSetDirtyState(); } - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; - GXFIFO.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; + GXWGFifo.u32 = 0; PPCSync(); } +static void __GXAbortWait(u32 clocks) { + OSTime time0, time1; + time0 = OSGetTime(); + + do { + time1 = OSGetTime(); + } while (time1 - time0 <= clocks / 4); +} + +static void __GXAbortWaitPECopyDone(void) { + u32 peCnt0, peCnt1; + + peCnt0 = GXReadMEMReg(0x28, 0x27); + do { + peCnt1 = peCnt0; + __GXAbortWait(32); + + peCnt0 = GXReadMEMReg(0x28, 0x27); + } while (peCnt0 != peCnt1); +} + /* 8035BF28-8035C094 356868 016C+00 0/0 1/1 0/0 .text __GXAbort */ -// Instruction order -#ifdef NONMATCHING -static void __GXAbortWait(u32 time) { - OSTime startTime = OSGetTime(); - while (OSGetTime() - startTime <= time); -} - -static u32 __GXReadMEMCounterU32(u32 param_0, u32 param_1) { - vu16* ptr0 = &__memReg[param_0]; - vu16* ptr1 = &__memReg[param_1]; - u32 sVar3 = __memReg[param_1]; - u32 sVar2; - u32 temp; - do { - temp = sVar3; - sVar3 = *ptr1; - sVar2 = *ptr0; - } while (sVar3 != temp); - return ((u32)sVar3 << 16) | sVar2; -} - -static void __GXAbortWaitPECopyDone() { - u32 iVar3; - u32 iVar2 = __GXReadMEMCounterU32(0x28, 0x27); - do { - __GXAbortWait(8); - iVar3 = iVar2; - iVar2 = __GXReadMEMCounterU32(0x28, 0x27); - } while (iVar2 != iVar3); -} - void __GXAbort(void) { - if (__GXData->abtWaitPECopy && GXGetGPFifo()){ + if (__GXData->abtWaitPECopy && GXGetGPFifo()) { __GXAbortWaitPECopyDone(); } - __PIRegs[6] = 1; - __GXAbortWait(50); - __PIRegs[6] = 0; - __GXAbortWait(5); + + __PIRegs[0x18 / 4] = 1; + __GXAbortWait(200); + __PIRegs[0x18 / 4] = 0; + __GXAbortWait(20); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXAbort(void) { - nofralloc -#include "asm/dolphin/gx/GXMisc/__GXAbort.s" -} -#pragma pop -#endif /* 8035C094-8035C25C 3569D4 01C8+00 0/0 2/2 0/0 .text GXAbortFrame */ -// Needs __GXAbort and __GXReadMEMCounterU32 is not inlined -#ifdef NONMATCHING void GXAbortFrame(void) { __GXAbort(); if (GXGetGPFifo()) { __GXCleanGPFifo(); __GXInitRevisionBits(); - __GXData->dirtyFlags = 0; + __GXData->dirtyState = 0; GXFlush(); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXAbortFrame(void) { - nofralloc -#include "asm/dolphin/gx/GXMisc/GXAbortFrame.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 80451968-8045196C 000E68 0004+00 2/2 0/0 0/0 .sbss TokenCB */ @@ -170,7 +105,7 @@ static GXDrawSyncCallback TokenCB; static GXDrawDoneCallback DrawDoneCB; /* 80451970-80451974 000E70 0004+00 3/3 0/0 0/0 .sbss None */ -static u8 data_80451970[4]; +static GXBool DrawDone; /* 8035C25C-8035C2F4 356B9C 0098+00 0/0 2/2 0/0 .text GXSetDrawDone */ void GXSetDrawDone(void) { @@ -178,7 +113,7 @@ void GXSetDrawDone(void) { BOOL restore = OSDisableInterrupts(); GFWriteBPCmd(0x45000002); GXFlush(); - data_80451970[0] = 0; + DrawDone = 0; OSRestoreInterrupts(restore); } @@ -188,7 +123,7 @@ static OSThreadQueue FinishQueue; static void GXWaitDrawDone(void) { BOOL restore = OSDisableInterrupts(); - while (data_80451970[0] == 0) { + while (DrawDone == 0) { OSSleepThread(&FinishQueue); } OSRestoreInterrupts(restore); @@ -203,8 +138,8 @@ void GXDrawDone(void) { /* 8035C374-8035C398 356CB4 0024+00 0/0 9/9 0/0 .text GXPixModeSync */ void GXPixModeSync(void) { - GXFIFO.u8 = 0x61; - GXFIFO.u32 = __GXData->peCtrl; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = __GXData->peCtrl; __GXData->bpSentNot = 0; } @@ -227,36 +162,20 @@ void GXPokeAlphaUpdate(GXBool enable_update) { } /* 8035C3E4-8035C448 356D24 0064+00 0/0 1/1 0/0 .text GXPokeBlendMode */ -// regalloc -#ifdef NONMATCHING -void GXPokeBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) { - u32 r8; - u32 r9 = TRUE; - u16 r10; - r10 = __peReg[1]; - if (mode != GX_BM_BLEND && mode != GX_BM_SUBTRACT) { - r9 = FALSE; - } - r8 = r10; - GX_BITFIELD_SET(r8, 0x1f, 1, r9); - GX_BITFIELD_SET(r8, 0x14, 1, mode == GX_BM_SUBTRACT); - GX_BITFIELD_SET(r8, 0x1e, 1, mode == GX_BM_LOGIC); - GX_BITFIELD_SET(r8, 0x10, 4, op); - GX_BITFIELD_SET(r8, 0x15, 3, src_factor); - GX_BITFIELD_SET(r8, 0x18, 3, dst_factor); - GX_BITFIELD_SET(r8, 0, 8, 0x41); - __peReg[1] = r8; +void GXPokeBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor destFactor, + GXLogicOp op) { + u32 reg; + + reg = GX_GET_PE_REG(1); + GX_SET_REG(reg, (mode == GX_BM_BLEND) || (mode == GX_BM_SUBTRACT), 31, 31); + GX_SET_REG(reg, (mode == GX_BM_SUBTRACT), 20, 20); + GX_SET_REG(reg, (mode == GX_BM_LOGIC), 30, 30); + GX_SET_REG(reg, op, 16, 19); + GX_SET_REG(reg, srcFactor, 21, 23); + GX_SET_REG(reg, destFactor, 24, 26); + GX_SET_REG(reg, 0x41, 0, 7); + GX_SET_PE_REG(1, reg); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXPokeBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) { - nofralloc -#include "asm/dolphin/gx/GXMisc/GXPokeBlendMode.s" -} -#pragma pop -#endif /* 8035C448-8035C460 356D88 0018+00 0/0 1/1 0/0 .text GXPokeColorUpdate */ void GXPokeColorUpdate(GXBool enable_update) { @@ -305,30 +224,25 @@ GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback callback) { } /* 8035C524-8035C5AC 356E64 0088+00 1/1 0/0 0/0 .text GXTokenInterruptHandler */ -// regalloc -#ifdef NONMATCHING -static void GXTokenInterruptHandler(OSInterrupt interrupt, OSContext* pContext) { - OSContext context; - u16 token = __peReg[7]; - if (TokenCB != NULL) { - OSClearContext(&context); - OSSetCurrentContext(&context); +static void GXTokenInterruptHandler(__OSInterrupt interrupt, OSContext* context) { + u16 token; + OSContext exceptContext; + u32 reg; + + token = GX_GET_PE_REG(7); + + if (TokenCB) { + OSClearContext(&exceptContext); + OSSetCurrentContext(&exceptContext); TokenCB(token); - OSClearContext(&context); - OSSetCurrentContext(pContext); + OSClearContext(&exceptContext); + OSSetCurrentContext(context); } - GX_BITFIELD_SET(__peReg[5], 0x1d, 1, 1); + + reg = GX_GET_PE_REG(5); + GX_SET_REG(reg, 1, 29, 29); + GX_SET_PE_REG(5, reg); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void GXTokenInterruptHandler(OSInterrupt interrupt, OSContext* context) { - nofralloc -#include "asm/dolphin/gx/GXMisc/GXTokenInterruptHandler.s" -} -#pragma pop -#endif /* 8035C5AC-8035C5F0 356EEC 0044+00 0/0 4/4 0/0 .text GXSetDrawDoneCallback */ GXDrawDoneCallback GXSetDrawDoneCallback(GXDrawDoneCallback callback) { @@ -341,31 +255,26 @@ GXDrawDoneCallback GXSetDrawDoneCallback(GXDrawDoneCallback callback) { } /* 8035C5F0-8035C670 356F30 0080+00 1/1 0/0 0/0 .text GXFinishInterruptHandler */ -// regalloc, instruction order -#ifdef NONMATCHING -static void GXFinishInterruptHandler(OSInterrupt interrupt, OSContext* pContext) { - OSContext context; - GX_BITFIELD_SET(__peReg[5], 0x1c, 1, 1); - data_80451970[0] = param_0; - if (DrawDoneCB != NULL) { - OSClearContext(&context); - OSSetCurrentContext(&context); +static void GXFinishInterruptHandler(__OSInterrupt interrupt, OSContext* context) { + OSContext exceptContext; + u32 reg; + + reg = GX_GET_PE_REG(5); + GX_SET_REG(reg, 1, 28, 28); + GX_SET_PE_REG(5, reg); + + DrawDone = GX_TRUE; + + if (DrawDoneCB) { + OSClearContext(&exceptContext); + OSSetCurrentContext(&exceptContext); DrawDoneCB(); - OSClearContext(&context); - OSSetCurrentContext(pContext); + OSClearContext(&exceptContext); + OSSetCurrentContext(context); } + OSWakeupThread(&FinishQueue); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void GXFinishInterruptHandler(OSInterrupt interrupt, OSContext* pContext) { - nofralloc -#include "asm/dolphin/gx/GXMisc/GXFinishInterruptHandler.s" -} -#pragma pop -#endif /* 8035C670-8035C6E4 356FB0 0074+00 0/0 1/1 0/0 .text __GXPEInit */ void __GXPEInit(void) { @@ -382,10 +291,3 @@ void __GXPEInit(void) { GX_BITFIELD_SET(val, 0x1e, 1, 1); __peReg[5] = val; } - -/* ############################################################################################## */ -/* 8045197C-80451980 -00001 0004+00 0/0 0/0 0/0 .sbss None */ -#pragma push -#pragma force_active on -static u8 pad_8045197C[4]; -#pragma pop diff --git a/libs/dolphin/gx/GXPerf.c b/libs/dolphin/gx/GXPerf.c index e6f3cd6c0d..1710d20ddd 100644 --- a/libs/dolphin/gx/GXPerf.c +++ b/libs/dolphin/gx/GXPerf.c @@ -1,393 +1,387 @@ -// -// Generated By: dol2asm -// Translation Unit: GXPerf -// - #include "dolphin/gx/GXPerf.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" /* 8036067C-80360EC4 35AFBC 0848+00 2/0 1/1 0/0 .text GXSetGPMetric */ void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) { - switch (__GXData->perf0) { - case GX_PERF0_VERTICES: - case GX_PERF0_CLIP_VTX: - case GX_PERF0_CLIP_CLKS: - case GX_PERF0_XF_WAIT_IN: - case GX_PERF0_XF_WAIT_OUT: - case GX_PERF0_XF_XFRM_CLKS: - case GX_PERF0_XF_LIT_CLKS: - case GX_PERF0_XF_BOT_CLKS: - case GX_PERF0_XF_REGLD_CLKS: - case GX_PERF0_XF_REGRD_CLKS: - case GX_PERF0_CLIP_RATIO: - case GX_PERF0_CLOCKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0); - break; + switch (__GXData->perf0) { + case GX_PERF0_VERTICES: + case GX_PERF0_CLIP_VTX: + case GX_PERF0_CLIP_CLKS: + case GX_PERF0_XF_WAIT_IN: + case GX_PERF0_XF_WAIT_OUT: + case GX_PERF0_XF_XFRM_CLKS: + case GX_PERF0_XF_LIT_CLKS: + case GX_PERF0_XF_BOT_CLKS: + case GX_PERF0_XF_REGLD_CLKS: + case GX_PERF0_XF_REGRD_CLKS: + case GX_PERF0_CLIP_RATIO: + case GX_PERF0_CLOCKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0); + break; - case GX_PERF0_TRIANGLES: - case GX_PERF0_TRIANGLES_CULLED: - case GX_PERF0_TRIANGLES_PASSED: - case GX_PERF0_TRIANGLES_SCISSORED: - case GX_PERF0_TRIANGLES_0TEX: - case GX_PERF0_TRIANGLES_1TEX: - case GX_PERF0_TRIANGLES_2TEX: - case GX_PERF0_TRIANGLES_3TEX: - case GX_PERF0_TRIANGLES_4TEX: - case GX_PERF0_TRIANGLES_5TEX: - case GX_PERF0_TRIANGLES_6TEX: - case GX_PERF0_TRIANGLES_7TEX: - case GX_PERF0_TRIANGLES_8TEX: - case GX_PERF0_TRIANGLES_0CLR: - case GX_PERF0_TRIANGLES_1CLR: - case GX_PERF0_TRIANGLES_2CLR: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x23000000); - break; + case GX_PERF0_TRIANGLES: + case GX_PERF0_TRIANGLES_CULLED: + case GX_PERF0_TRIANGLES_PASSED: + case GX_PERF0_TRIANGLES_SCISSORED: + case GX_PERF0_TRIANGLES_0TEX: + case GX_PERF0_TRIANGLES_1TEX: + case GX_PERF0_TRIANGLES_2TEX: + case GX_PERF0_TRIANGLES_3TEX: + case GX_PERF0_TRIANGLES_4TEX: + case GX_PERF0_TRIANGLES_5TEX: + case GX_PERF0_TRIANGLES_6TEX: + case GX_PERF0_TRIANGLES_7TEX: + case GX_PERF0_TRIANGLES_8TEX: + case GX_PERF0_TRIANGLES_0CLR: + case GX_PERF0_TRIANGLES_1CLR: + case GX_PERF0_TRIANGLES_2CLR: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x23000000); + break; - case GX_PERF0_QUAD_0CVG: - case GX_PERF0_QUAD_NON0CVG: - case GX_PERF0_QUAD_1CVG: - case GX_PERF0_QUAD_2CVG: - case GX_PERF0_QUAD_3CVG: - case GX_PERF0_QUAD_4CVG: - case GX_PERF0_AVG_QUAD_CNT: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x24000000); - break; + case GX_PERF0_QUAD_0CVG: + case GX_PERF0_QUAD_NON0CVG: + case GX_PERF0_QUAD_1CVG: + case GX_PERF0_QUAD_2CVG: + case GX_PERF0_QUAD_3CVG: + case GX_PERF0_QUAD_4CVG: + case GX_PERF0_AVG_QUAD_CNT: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x24000000); + break; - case GX_PERF0_NONE: - break; - } + case GX_PERF0_NONE: + break; + } - switch (__GXData->perf1) { - case GX_PERF1_TEXELS: - case GX_PERF1_TX_IDLE: - case GX_PERF1_TX_REGS: - case GX_PERF1_TX_MEMSTALL: - case GX_PERF1_TC_CHECK1_2: - case GX_PERF1_TC_CHECK3_4: - case GX_PERF1_TC_CHECK5_6: - case GX_PERF1_TC_CHECK7_8: - case GX_PERF1_TC_MISS: - case GX_PERF1_CLOCKS: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000000); - break; + switch (__GXData->perf1) { + case GX_PERF1_TEXELS: + case GX_PERF1_TX_IDLE: + case GX_PERF1_TX_REGS: + case GX_PERF1_TX_MEMSTALL: + case GX_PERF1_TC_CHECK1_2: + case GX_PERF1_TC_CHECK3_4: + case GX_PERF1_TC_CHECK5_6: + case GX_PERF1_TC_CHECK7_8: + case GX_PERF1_TC_MISS: + case GX_PERF1_CLOCKS: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000000); + break; - case GX_PERF1_VC_ELEMQ_FULL: - case GX_PERF1_VC_MISSQ_FULL: - case GX_PERF1_VC_MEMREQ_FULL: - case GX_PERF1_VC_STATUS7: - case GX_PERF1_VC_MISSREP_FULL: - case GX_PERF1_VC_STREAMBUF_LOW: - case GX_PERF1_VC_ALL_STALLS: - case GX_PERF1_VERTICES: - FAST_FLAG_SET(__GXData->perfSel, 0, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; + case GX_PERF1_VC_ELEMQ_FULL: + case GX_PERF1_VC_MISSQ_FULL: + case GX_PERF1_VC_MEMREQ_FULL: + case GX_PERF1_VC_STATUS7: + case GX_PERF1_VC_MISSREP_FULL: + case GX_PERF1_VC_STREAMBUF_LOW: + case GX_PERF1_VC_ALL_STALLS: + case GX_PERF1_VERTICES: + FAST_FLAG_SET(__GXData->perfSel, 0, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; - case GX_PERF1_FIFO_REQ: - case GX_PERF1_CALL_REQ: - case GX_PERF1_VC_MISS_REQ: - case GX_PERF1_CP_ALL_REQ: - GX_SET_CP_REG(3, 0); - break; + case GX_PERF1_FIFO_REQ: + case GX_PERF1_CALL_REQ: + case GX_PERF1_VC_MISS_REQ: + case GX_PERF1_CP_ALL_REQ: + GX_SET_CP_REG(3, 0); + break; - case GX_PERF1_NONE: - break; - } + case GX_PERF1_NONE: + break; + } - __GXData->perf0 = perf0; + __GXData->perf0 = perf0; - switch (__GXData->perf0) { - case GX_PERF0_VERTICES: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x273); - break; - case GX_PERF0_CLIP_VTX: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x14A); - break; - case GX_PERF0_CLIP_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x16B); - break; - case GX_PERF0_XF_WAIT_IN: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x84); - break; - case GX_PERF0_XF_WAIT_OUT: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0xC6); - break; - case GX_PERF0_XF_XFRM_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x210); - break; - case GX_PERF0_XF_LIT_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x252); - break; - case GX_PERF0_XF_BOT_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x231); - break; - case GX_PERF0_XF_REGLD_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x1AD); - break; - case GX_PERF0_XF_REGRD_CLKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x1CE); - break; - case GX_PERF0_CLOCKS: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x21); - break; - case GX_PERF0_CLIP_RATIO: - GX_WRITE_U8(0x10); - GX_WRITE_U32(0x1006); - GX_WRITE_U32(0x153); - break; + switch (__GXData->perf0) { + case GX_PERF0_VERTICES: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x273); + break; + case GX_PERF0_CLIP_VTX: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x14A); + break; + case GX_PERF0_CLIP_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x16B); + break; + case GX_PERF0_XF_WAIT_IN: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x84); + break; + case GX_PERF0_XF_WAIT_OUT: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0xC6); + break; + case GX_PERF0_XF_XFRM_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x210); + break; + case GX_PERF0_XF_LIT_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x252); + break; + case GX_PERF0_XF_BOT_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x231); + break; + case GX_PERF0_XF_REGLD_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x1AD); + break; + case GX_PERF0_XF_REGRD_CLKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x1CE); + break; + case GX_PERF0_CLOCKS: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x21); + break; + case GX_PERF0_CLIP_RATIO: + GX_WRITE_U8(0x10); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0x153); + break; - case GX_PERF0_TRIANGLES: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AE7F); - break; - case GX_PERF0_TRIANGLES_CULLED: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x23008E7F); - break; - case GX_PERF0_TRIANGLES_PASSED: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x23009E7F); - break; - case GX_PERF0_TRIANGLES_SCISSORED: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x23001E7F); - break; - case GX_PERF0_TRIANGLES_0TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AC3F); - break; - case GX_PERF0_TRIANGLES_1TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AC7F); - break; - case GX_PERF0_TRIANGLES_2TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300ACBF); - break; - case GX_PERF0_TRIANGLES_3TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300ACFF); - break; - case GX_PERF0_TRIANGLES_4TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AD3F); - break; - case GX_PERF0_TRIANGLES_5TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AD7F); - break; - case GX_PERF0_TRIANGLES_6TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300ADBF); - break; - case GX_PERF0_TRIANGLES_7TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300ADFF); - break; - case GX_PERF0_TRIANGLES_8TEX: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AE3F); - break; - case GX_PERF0_TRIANGLES_0CLR: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300A27F); - break; - case GX_PERF0_TRIANGLES_1CLR: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300A67F); - break; - case GX_PERF0_TRIANGLES_2CLR: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2300AA7F); - break; + case GX_PERF0_TRIANGLES: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AE7F); + break; + case GX_PERF0_TRIANGLES_CULLED: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x23008E7F); + break; + case GX_PERF0_TRIANGLES_PASSED: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x23009E7F); + break; + case GX_PERF0_TRIANGLES_SCISSORED: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x23001E7F); + break; + case GX_PERF0_TRIANGLES_0TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AC3F); + break; + case GX_PERF0_TRIANGLES_1TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AC7F); + break; + case GX_PERF0_TRIANGLES_2TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300ACBF); + break; + case GX_PERF0_TRIANGLES_3TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300ACFF); + break; + case GX_PERF0_TRIANGLES_4TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AD3F); + break; + case GX_PERF0_TRIANGLES_5TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AD7F); + break; + case GX_PERF0_TRIANGLES_6TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300ADBF); + break; + case GX_PERF0_TRIANGLES_7TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300ADFF); + break; + case GX_PERF0_TRIANGLES_8TEX: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AE3F); + break; + case GX_PERF0_TRIANGLES_0CLR: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300A27F); + break; + case GX_PERF0_TRIANGLES_1CLR: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300A67F); + break; + case GX_PERF0_TRIANGLES_2CLR: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2300AA7F); + break; - case GX_PERF0_QUAD_0CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C0C6); - break; - case GX_PERF0_QUAD_NON0CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C16B); - break; - case GX_PERF0_QUAD_1CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C0E7); - break; - case GX_PERF0_QUAD_2CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C108); - break; - case GX_PERF0_QUAD_3CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C129); - break; - case GX_PERF0_QUAD_4CVG: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C14A); - break; - case GX_PERF0_AVG_QUAD_CNT: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x2402C1AD); - break; + case GX_PERF0_QUAD_0CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C0C6); + break; + case GX_PERF0_QUAD_NON0CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C16B); + break; + case GX_PERF0_QUAD_1CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C0E7); + break; + case GX_PERF0_QUAD_2CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C108); + break; + case GX_PERF0_QUAD_3CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C129); + break; + case GX_PERF0_QUAD_4CVG: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C14A); + break; + case GX_PERF0_AVG_QUAD_CNT: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x2402C1AD); + break; - case GX_PERF0_NONE: - break; - } + case GX_PERF0_NONE: + break; + } - __GXData->perf1 = perf1; + __GXData->perf1 = perf1; - switch (__GXData->perf1) { - case GX_PERF1_TEXELS: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000042); - break; - case GX_PERF1_TX_IDLE: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000084); - break; - case GX_PERF1_TX_REGS: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000063); - break; - case GX_PERF1_TX_MEMSTALL: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000129); - break; - case GX_PERF1_TC_MISS: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000252); - break; - case GX_PERF1_CLOCKS: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000021); - break; - case GX_PERF1_TC_CHECK1_2: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x6700014B); - break; - case GX_PERF1_TC_CHECK3_4: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x6700018D); - break; - case GX_PERF1_TC_CHECK5_6: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x670001CF); - break; - case GX_PERF1_TC_CHECK7_8: - GX_WRITE_U8(0x61); - GX_WRITE_U32(0x67000211); - break; + switch (__GXData->perf1) { + case GX_PERF1_TEXELS: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000042); + break; + case GX_PERF1_TX_IDLE: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000084); + break; + case GX_PERF1_TX_REGS: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000063); + break; + case GX_PERF1_TX_MEMSTALL: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000129); + break; + case GX_PERF1_TC_MISS: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000252); + break; + case GX_PERF1_CLOCKS: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000021); + break; + case GX_PERF1_TC_CHECK1_2: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x6700014B); + break; + case GX_PERF1_TC_CHECK3_4: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x6700018D); + break; + case GX_PERF1_TC_CHECK5_6: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x670001CF); + break; + case GX_PERF1_TC_CHECK7_8: + GX_WRITE_U8(0x61); + GX_WRITE_U32(0x67000211); + break; - case GX_PERF1_VC_ELEMQ_FULL: - FAST_FLAG_SET(__GXData->perfSel, 2, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_MISSQ_FULL: - FAST_FLAG_SET(__GXData->perfSel, 3, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_MEMREQ_FULL: - FAST_FLAG_SET(__GXData->perfSel, 4, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_STATUS7: - FAST_FLAG_SET(__GXData->perfSel, 5, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_MISSREP_FULL: - FAST_FLAG_SET(__GXData->perfSel, 6, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_STREAMBUF_LOW: - FAST_FLAG_SET(__GXData->perfSel, 7, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VC_ALL_STALLS: - FAST_FLAG_SET(__GXData->perfSel, 9, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; - case GX_PERF1_VERTICES: - FAST_FLAG_SET(__GXData->perfSel, 8, 4, 4); - GX_WRITE_U8(8); - GX_WRITE_U8(32); - GX_WRITE_U32(__GXData->perfSel); - break; + case GX_PERF1_VC_ELEMQ_FULL: + FAST_FLAG_SET(__GXData->perfSel, 2, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_MISSQ_FULL: + FAST_FLAG_SET(__GXData->perfSel, 3, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_MEMREQ_FULL: + FAST_FLAG_SET(__GXData->perfSel, 4, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_STATUS7: + FAST_FLAG_SET(__GXData->perfSel, 5, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_MISSREP_FULL: + FAST_FLAG_SET(__GXData->perfSel, 6, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_STREAMBUF_LOW: + FAST_FLAG_SET(__GXData->perfSel, 7, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VC_ALL_STALLS: + FAST_FLAG_SET(__GXData->perfSel, 9, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; + case GX_PERF1_VERTICES: + FAST_FLAG_SET(__GXData->perfSel, 8, 4, 4); + GX_WRITE_U8(8); + GX_WRITE_U8(32); + GX_WRITE_U32(__GXData->perfSel); + break; - case GX_PERF1_FIFO_REQ: - GX_SET_CP_REG(3, 2); - break; - case GX_PERF1_CALL_REQ: - GX_SET_CP_REG(3, 3); - break; - case GX_PERF1_VC_MISS_REQ: - GX_SET_CP_REG(3, 4); - break; - case GX_PERF1_CP_ALL_REQ: - GX_SET_CP_REG(3, 5); - break; + case GX_PERF1_FIFO_REQ: + GX_SET_CP_REG(3, 2); + break; + case GX_PERF1_CALL_REQ: + GX_SET_CP_REG(3, 3); + break; + case GX_PERF1_VC_MISS_REQ: + GX_SET_CP_REG(3, 4); + break; + case GX_PERF1_CP_ALL_REQ: + GX_SET_CP_REG(3, 5); + break; - case GX_PERF1_NONE: - break; - } + case GX_PERF1_NONE: + break; + } - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 80360EC4-80360ED4 35B804 0010+00 0/0 1/1 0/0 .text GXClearGPMetric */ -void GXClearGPMetric(void) { - GX_SET_CP_REG(2, 4); +void GXClearGPMetric(void) { + GX_SET_CP_REG(2, 4); } /* 80360ED4-80360F98 35B814 00C4+00 0/0 1/1 0/0 .text GXReadXfRasMetric */ #pragma scheduling off -void GXReadXfRasMetric(u32* xfWaitIn, u32* xfWaitOut, u32* rasBusy, u32* clocks) -{ - *rasBusy = GXReadCPReg(32, 33); - *clocks = GXReadCPReg(34, 35); - *xfWaitIn = GXReadCPReg(36, 37); - *xfWaitOut = GXReadCPReg(38, 39); +void GXReadXfRasMetric(u32* xfWaitIn, u32* xfWaitOut, u32* rasBusy, u32* clocks) { + *rasBusy = GXReadCPReg(32, 33); + *clocks = GXReadCPReg(34, 35); + *xfWaitIn = GXReadCPReg(36, 37); + *xfWaitOut = GXReadCPReg(38, 39); } #pragma scheduling reset diff --git a/libs/dolphin/gx/GXPixel.c b/libs/dolphin/gx/GXPixel.c index 1d4ccf07d4..31863b7e7e 100644 --- a/libs/dolphin/gx/GXPixel.c +++ b/libs/dolphin/gx/GXPixel.c @@ -1,333 +1,247 @@ -// -// Generated By: dol2asm -// Translation Unit: GXPixel -// - #include "dolphin/gx/GXPixel.h" -#include "dolphin/gx/GX.h" -#include "dol2asm.h" - -// -// Forward References: -// - -void GXSetBlendMode(); -void GXSetPixelFmt(); - -// -// External References: -// - -void __GXFlushTextureState(); -void __cvt_fp2unsigned(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456618-8045661C 004C18 0004+00 1/1 0/0 0/0 .sdata2 @211 */ -SECTION_SDATA2 static u8 lit_211[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 8045661C-80456620 004C1C 0004+00 1/1 0/0 0/0 .sdata2 @212 */ -SECTION_SDATA2 static f32 lit_212 = 1.0f; - -/* 80456620-80456628 004C20 0004+04 1/1 0/0 0/0 .sdata2 @213 */ -SECTION_SDATA2 static f32 lit_213[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - -/* 80456628-80456630 004C28 0008+00 1/1 0/0 0/0 .sdata2 @214 */ -SECTION_SDATA2 static f64 lit_214 = 1.0; - -/* 80456630-80456638 004C30 0004+04 1/1 0/0 0/0 .sdata2 @215 */ -SECTION_SDATA2 static f32 lit_215[1 + 1 /* padding */] = { - 2.0f, - /* padding */ - 0.0f, -}; - -/* 80456638-80456640 004C38 0008+00 1/1 0/0 0/0 .sdata2 @216 */ -SECTION_SDATA2 static f64 lit_216 = 0.5; - -/* 80456640-80456648 004C40 0004+04 1/1 0/0 0/0 .sdata2 @217 */ -SECTION_SDATA2 static f32 lit_217[1 + 1 /* padding */] = { - 8388638.0f, - /* padding */ - 0.0f, -}; - -/* 80456648-80456650 004C48 0008+00 1/1 0/0 0/0 .sdata2 @219 */ -SECTION_SDATA2 static f64 lit_219 = 4503601774854144.0 /* cast s32 to float */; +#include "dolphin/gx.h" /* 8035F8B8-8035FACC 35A1F8 0214+00 0/0 20/20 2/2 .text GXSetFog */ -#ifdef NONMATCHING void GXSetFog(GXFogType type, f32 startz, f32 endz, f32 nearz, f32 farz, GXColor color) { - f32 a, c; - u32 a_bits, c_bits; + f32 a, c; + u32 a_bits, c_bits; - u32 fogColorReg = 0; - u32 fogParamReg0 = 0; - u32 fogParamReg1 = 0; - u32 fogParamReg2 = 0; - u32 fogParamReg3 = 0; + u32 fogColorReg = 0; + u32 fogParamReg0 = 0; + u32 fogParamReg1 = 0; + u32 fogParamReg2 = 0; + u32 fogParamReg3 = 0; - u32 fsel = type & 7; - BOOL isOrtho = (type >> 3) & 1; + u32 fsel = type & 7; + BOOL isOrtho = (type >> 3) & 1; + u32 col; - if (isOrtho) { - if (farz == nearz || endz == startz) { - a = 0.0f; - c = 0.0f; - } else { - a = (1.0f / (endz - startz)) * (farz - nearz); - c = (1.0f / (endz - startz)) * (startz - nearz); - } - } else { - f32 tmpA, tmpB, tmpC; - u32 expB, magB, shiftB; + if (isOrtho) { + if (farz == nearz || endz == startz) { + a = 0.0f; + c = 0.0f; + } else { + a = (1.0f / (endz - startz)) * (farz - nearz); + c = (1.0f / (endz - startz)) * (startz - nearz); + } + } else { + f32 tmpA, tmpB, tmpC; + u32 expB, magB, shiftB; - if (farz == nearz || endz == startz) { - tmpA = 0.0f; - tmpB = 0.5f; - tmpC = 0.0f; - } else { - tmpA = (farz * nearz) / ((farz - nearz) * (endz - startz)); - tmpB = farz / (farz - nearz); - tmpC = startz / (endz - startz); - } + if (farz == nearz || endz == startz) { + tmpA = 0.0f; + tmpB = 0.5f; + tmpC = 0.0f; + } else { + tmpA = (farz * nearz) / ((farz - nearz) * (endz - startz)); + tmpB = farz / (farz - nearz); + tmpC = startz / (endz - startz); + } - expB = 0; - while (tmpB > 1.0) { - tmpB /= 2.0f; - expB++; - } - while (tmpB > 0.0f && tmpB < 0.5) { - tmpB *= 2.0f; - expB--; - } + expB = 0; + while (tmpB > 1.0) { + tmpB /= 2.0f; + expB++; + } + while (tmpB > 0.0f && tmpB < 0.5) { + tmpB *= 2.0f; + expB--; + } - a = tmpA / (1 << expB + 1); - magB = 8388638.0f * tmpB; - shiftB = expB + 1; - c = tmpC; + a = tmpA / (1 << expB + 1); + magB = 8388638.0f * tmpB; + shiftB = expB + 1; + c = tmpC; - GX_SET_REG(fogParamReg1, magB, GX_BP_FOGPARAM1_B_MAG_ST, GX_BP_FOGPARAM1_B_MAG_END); - GX_SET_REG(fogParamReg2, shiftB, GX_BP_FOGPARAM2_B_SHIFT_ST, GX_BP_FOGPARAM2_B_SHIFT_END); + GX_SET_REG(fogParamReg1, magB, GX_BP_FOGPARAM1_B_MAG_ST, GX_BP_FOGPARAM1_B_MAG_END); + GX_SET_REG(fogParamReg2, shiftB, GX_BP_FOGPARAM2_B_SHIFT_ST, GX_BP_FOGPARAM2_B_SHIFT_END); - GX_SET_REG(fogParamReg1, GX_BP_REG_FOGPARAM1, 0, 7); - GX_SET_REG(fogParamReg2, GX_BP_REG_FOGPARAM2, 0, 7); - } + GX_SET_REG(fogParamReg1, GX_BP_REG_FOGPARAM1, 0, 7); + GX_SET_REG(fogParamReg2, GX_BP_REG_FOGPARAM2, 0, 7); + } - a_bits = *(u32*)&a; + a_bits = *(u32*)&a; + c_bits = *(u32*)&c; - GX_SET_REG(fogParamReg0, a_bits >> 12, GX_BP_FOGPARAM0_A_MANT_ST, GX_BP_FOGPARAM0_A_MANT_END); - GX_SET_REG(fogParamReg0, a_bits >> 23, GX_BP_FOGPARAM0_A_EXP_ST, GX_BP_FOGPARAM0_A_EXP_END); - GX_SET_REG(fogParamReg0, a_bits >> 31, GX_BP_FOGPARAM0_A_SIGN_ST, GX_BP_FOGPARAM0_A_SIGN_END); - GX_SET_REG(fogParamReg0, GX_BP_REG_FOGPARAM0, 0, 7); + GX_SET_REG(fogParamReg0, a_bits >> 12, GX_BP_FOGPARAM0_A_MANT_ST, GX_BP_FOGPARAM0_A_MANT_END); + GX_SET_REG(fogParamReg0, a_bits >> 23, GX_BP_FOGPARAM0_A_EXP_ST, GX_BP_FOGPARAM0_A_EXP_END); + GX_SET_REG(fogParamReg0, a_bits >> 31, GX_BP_FOGPARAM0_A_SIGN_ST, GX_BP_FOGPARAM0_A_SIGN_END); + GX_SET_REG(fogParamReg0, GX_BP_REG_FOGPARAM0, 0, 7); - c_bits = *(u32*)&c; - GX_SET_REG(fogParamReg3, c_bits >> 12, GX_BP_FOGPARAM3_C_MANT_ST, GX_BP_FOGPARAM3_C_MANT_END); - GX_SET_REG(fogParamReg3, c_bits >> 23, GX_BP_FOGPARAM3_C_EXP_ST, GX_BP_FOGPARAM3_C_EXP_END); - GX_SET_REG(fogParamReg3, c_bits >> 31, GX_BP_FOGPARAM3_C_SIGN_ST, GX_BP_FOGPARAM3_C_SIGN_END); + GX_SET_REG(fogParamReg3, c_bits >> 12, GX_BP_FOGPARAM3_C_MANT_ST, GX_BP_FOGPARAM3_C_MANT_END); + GX_SET_REG(fogParamReg3, c_bits >> 23, GX_BP_FOGPARAM3_C_EXP_ST, GX_BP_FOGPARAM3_C_EXP_END); + GX_SET_REG(fogParamReg3, c_bits >> 31, GX_BP_FOGPARAM3_C_SIGN_ST, GX_BP_FOGPARAM3_C_SIGN_END); + GX_SET_REG(fogParamReg3, isOrtho, GX_BP_FOGPARAM3_PROJ_ST, GX_BP_FOGPARAM3_PROJ_END); + GX_SET_REG(fogParamReg3, fsel, GX_BP_FOGPARAM3_FSEL_ST, GX_BP_FOGPARAM3_FSEL_END); + GX_SET_REG(fogParamReg3, GX_BP_REG_FOGPARAM3, 0, 7); - GX_SET_REG(fogParamReg3, isOrtho, GX_BP_FOGPARAM3_PROJ_ST, GX_BP_FOGPARAM3_PROJ_END); - GX_SET_REG(fogParamReg3, fsel, GX_BP_FOGPARAM3_FSEL_ST, GX_BP_FOGPARAM3_FSEL_END); + col = *(u32*)&color; + GX_SET_REG(fogColorReg, col >> 8, GX_BP_FOGCOLOR_RGB_ST, GX_BP_FOGCOLOR_RGB_END); + GX_SET_REG(fogColorReg, GX_BP_REG_FOGCOLOR, 0, 7); - GX_SET_REG(fogParamReg3, GX_BP_REG_FOGPARAM3, 0, 7); + GX_BP_LOAD_REG(fogParamReg0); + GX_BP_LOAD_REG(fogParamReg1); + GX_BP_LOAD_REG(fogParamReg2); + GX_BP_LOAD_REG(fogParamReg3); + GX_BP_LOAD_REG(fogColorReg); - GX_SET_REG(fogColorReg, *(u32*)&color, (GX_BP_FOGCOLOR_RGB_ST), (GX_BP_FOGCOLOR_RGB_END)); - GX_SET_REG(fogColorReg, GX_BP_REG_FOGCOLOR, 0, 7); - - GX_BP_LOAD_REG(fogParamReg0); - - GX_BP_LOAD_REG(fogParamReg1); - GX_BP_LOAD_REG(fogParamReg2); - GX_BP_LOAD_REG(fogParamReg3); - GX_BP_LOAD_REG(fogColorReg); - - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetFog(GXFogType type, f32 startZ, f32 endZ, f32 nearZ, f32 farZ, GXColor color) { - nofralloc -#include "asm/dolphin/gx/GXPixel/GXSetFog.s" -} -#pragma pop -#endif /* 8035FACC-8035FBF0 35A40C 0124+00 0/0 9/9 2/2 .text GXSetFogRangeAdj */ -void GXSetFogRangeAdj(GXBool enable, u16 center, GXFogAdjTable* table) -{ - u32 fogRangeReg; - u32 fogRangeRegK; - u32 i; +void GXSetFogRangeAdj(GXBool enable, u16 center, GXFogAdjTable* table) { + u32 fogRangeReg; + u32 fogRangeRegK; + u32 i; - if (enable) { - for (i = 0; i < 10; i += 2) { - fogRangeRegK = 0; - GX_SET_REG(fogRangeRegK, table->fogVals[i], GX_BP_FOGRANGEK_HI_ST, GX_BP_FOGRANGEK_HI_END); - GX_SET_REG(fogRangeRegK, table->fogVals[i + 1], GX_BP_FOGRANGEK_LO_ST, GX_BP_FOGRANGEK_LO_END); - GX_SET_REG(fogRangeRegK, GX_BP_REG_FOGRANGEK0 + (i / 2), 0, 7); - GX_BP_LOAD_REG(fogRangeRegK); - } - } + if (enable) { + for (i = 0; i < 10; i += 2) { + fogRangeRegK = 0; + GX_SET_REG(fogRangeRegK, table->fogVals[i], GX_BP_FOGRANGEK_HI_ST, + GX_BP_FOGRANGEK_HI_END); + GX_SET_REG(fogRangeRegK, table->fogVals[i + 1], GX_BP_FOGRANGEK_LO_ST, + GX_BP_FOGRANGEK_LO_END); + GX_SET_REG(fogRangeRegK, GX_BP_REG_FOGRANGEK0 + (i / 2), 0, 7); + GX_BP_LOAD_REG(fogRangeRegK); + } + } - fogRangeReg = 0; - GX_SET_REG(fogRangeReg, center + 342, GX_BP_FOGRANGE_CENTER_ST, GX_BP_FOGRANGE_CENTER_END); - GX_SET_REG(fogRangeReg, enable, GX_BP_FOGRANGE_ENABLED_ST, GX_BP_FOGRANGE_ENABLED_END); - GX_SET_REG(fogRangeReg, GX_BP_REG_FOGRANGE, 0, 7); - GX_BP_LOAD_REG(fogRangeReg); + fogRangeReg = 0; + GX_SET_REG(fogRangeReg, center + 342, GX_BP_FOGRANGE_CENTER_ST, GX_BP_FOGRANGE_CENTER_END); + GX_SET_REG(fogRangeReg, enable, GX_BP_FOGRANGE_ENABLED_ST, GX_BP_FOGRANGE_ENABLED_END); + GX_SET_REG(fogRangeReg, GX_BP_REG_FOGRANGE, 0, 7); + GX_BP_LOAD_REG(fogRangeReg); - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 8035FBF0-8035FC44 35A530 0054+00 0/0 53/53 3/3 .text GXSetBlendMode */ -void GXSetBlendMode(GXBlendMode type, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) { - u32 blendModeReg = __GXData->cmode0; - GX_SET_REG(blendModeReg, type == GX_BM_SUBTRACT, GX_BP_BLENDMODE_SUBTRACT_ST, GX_BP_BLENDMODE_SUBTRACT_END); - GX_SET_REG(blendModeReg, type, GX_BP_BLENDMODE_ENABLE_ST, GX_BP_BLENDMODE_ENABLE_END); - GX_SET_REG(blendModeReg, type == GX_BM_LOGIC, GX_BP_BLENDMODE_LOGIC_OP_ST, GX_BP_BLENDMODE_LOGIC_OP_END); - GX_SET_REG(blendModeReg, op, GX_BP_BLENDMODE_LOGICMODE_ST, GX_BP_BLENDMODE_LOGICMODE_END); - GX_SET_REG(blendModeReg, src_factor, GX_BP_BLENDMODE_SRCFACTOR_ST, GX_BP_BLENDMODE_SRCFACTOR_END); - GX_SET_REG(blendModeReg, dst_factor, GX_BP_BLENDMODE_DSTFACTOR_ST, GX_BP_BLENDMODE_DSTFACTOR_END); +void GXSetBlendMode(GXBlendMode type, GXBlendFactor src_factor, GXBlendFactor dst_factor, + GXLogicOp op) { + u32 blendModeReg = __GXData->cmode0; + GX_SET_REG(blendModeReg, type == GX_BM_SUBTRACT, GX_BP_BLENDMODE_SUBTRACT_ST, + GX_BP_BLENDMODE_SUBTRACT_END); + GX_SET_REG(blendModeReg, type, GX_BP_BLENDMODE_ENABLE_ST, GX_BP_BLENDMODE_ENABLE_END); + GX_SET_REG(blendModeReg, type == GX_BM_LOGIC, GX_BP_BLENDMODE_LOGIC_OP_ST, + GX_BP_BLENDMODE_LOGIC_OP_END); + GX_SET_REG(blendModeReg, op, GX_BP_BLENDMODE_LOGICMODE_ST, GX_BP_BLENDMODE_LOGICMODE_END); + GX_SET_REG(blendModeReg, src_factor, GX_BP_BLENDMODE_SRCFACTOR_ST, + GX_BP_BLENDMODE_SRCFACTOR_END); + GX_SET_REG(blendModeReg, dst_factor, GX_BP_BLENDMODE_DSTFACTOR_ST, + GX_BP_BLENDMODE_DSTFACTOR_END); - GX_BP_LOAD_REG(blendModeReg); - __GXData->cmode0 = blendModeReg; + GX_BP_LOAD_REG(blendModeReg); + __GXData->cmode0 = blendModeReg; - __GXData->bpSentNot = FALSE; + __GXData->bpSentNot = FALSE; } /* 8035FC44-8035FC70 35A584 002C+00 0/0 10/10 2/2 .text GXSetColorUpdate */ void GXSetColorUpdate(GXBool updateEnable) { - u32 blendModeReg = __GXData->cmode0; - GX_SET_REG(blendModeReg, updateEnable, GX_BP_BLENDMODE_COLOR_UPDATE_ST, GX_BP_BLENDMODE_COLOR_UPDATE_END); - GX_BP_LOAD_REG(blendModeReg); - __GXData->cmode0 = blendModeReg; - __GXData->bpSentNot = GX_FALSE; + u32 blendModeReg = __GXData->cmode0; + GX_SET_REG(blendModeReg, updateEnable, GX_BP_BLENDMODE_COLOR_UPDATE_ST, + GX_BP_BLENDMODE_COLOR_UPDATE_END); + GX_BP_LOAD_REG(blendModeReg); + __GXData->cmode0 = blendModeReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035FC70-8035FC9C 35A5B0 002C+00 0/0 10/10 2/2 .text GXSetAlphaUpdate */ void GXSetAlphaUpdate(GXBool updateEnable) { - u32 blendModeReg = __GXData->cmode0; - GX_SET_REG(blendModeReg, updateEnable, GX_BP_BLENDMODE_ALPHA_UPDATE_ST, GX_BP_BLENDMODE_ALPHA_UPDATE_END); - GX_BP_LOAD_REG(blendModeReg); - __GXData->cmode0 = blendModeReg; - __GXData->bpSentNot = GX_FALSE; + u32 blendModeReg = __GXData->cmode0; + GX_SET_REG(blendModeReg, updateEnable, GX_BP_BLENDMODE_ALPHA_UPDATE_ST, + GX_BP_BLENDMODE_ALPHA_UPDATE_END); + GX_BP_LOAD_REG(blendModeReg); + __GXData->cmode0 = blendModeReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035FC9C-8035FCD0 35A5DC 0034+00 0/0 40/40 6/6 .text GXSetZMode */ void GXSetZMode(GXBool compareEnable, GXCompare func, GXBool updateEnable) { - u32 zModeReg = __GXData->zmode; - GX_SET_REG(zModeReg, compareEnable, GX_BP_ZMODE_TEST_ENABLE_ST, GX_BP_ZMODE_TEST_ENABLE_END); - GX_SET_REG(zModeReg, func, GX_BP_ZMODE_COMPARE_ST, GX_BP_ZMODE_COMPARE_END); - GX_SET_REG(zModeReg, updateEnable, GX_BP_ZMODE_UPDATE_ENABLE_ST, GX_BP_ZMODE_UPDATE_ENABLE_END); - GX_BP_LOAD_REG(zModeReg); - __GXData->zmode = zModeReg; - __GXData->bpSentNot = GX_FALSE; + u32 zModeReg = __GXData->zmode; + GX_SET_REG(zModeReg, compareEnable, GX_BP_ZMODE_TEST_ENABLE_ST, GX_BP_ZMODE_TEST_ENABLE_END); + GX_SET_REG(zModeReg, func, GX_BP_ZMODE_COMPARE_ST, GX_BP_ZMODE_COMPARE_END); + GX_SET_REG(zModeReg, updateEnable, GX_BP_ZMODE_UPDATE_ENABLE_ST, GX_BP_ZMODE_UPDATE_ENABLE_END); + GX_BP_LOAD_REG(zModeReg); + __GXData->zmode = zModeReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035FCD0-8035FD04 35A610 0034+00 0/0 29/29 5/5 .text GXSetZCompLoc */ void GXSetZCompLoc(GXBool beforeTex) { - GX_SET_REG(__GXData->peCtrl, beforeTex, GX_BP_ZCONTROL_BEFORE_TEX_ST, GX_BP_ZCONTROL_BEFORE_TEX_END); - GX_BP_LOAD_REG(__GXData->peCtrl); - __GXData->bpSentNot = GX_FALSE; + GX_SET_REG(__GXData->peCtrl, beforeTex, GX_BP_ZCONTROL_BEFORE_TEX_ST, + GX_BP_ZCONTROL_BEFORE_TEX_END); + GX_BP_LOAD_REG(__GXData->peCtrl); + __GXData->bpSentNot = GX_FALSE; } - - /* 8035FD04-8035FDD8 35A644 00D4+00 0/0 2/2 1/1 .text GXSetPixelFmt */ -// regalloc -#ifdef NONMATCHING void GXSetPixelFmt(GXPixelFmt pixelFmt, GXZFmt16 zFmt) { - static u32 p2f[GX_PF_MAX] - = { GX_PF_RGB8_Z24, GX_PF_RGBA6_Z24, GX_PF_RGB565_Z16, GX_PF_Z24, GX_PF_Y8, GX_PF_Y8, GX_PF_Y8, GX_PF_U8 }; + GXBool isZ16; + static u32 p2f[GX_PF_MAX] = {GX_PF_RGB8_Z24, GX_PF_RGBA6_Z24, GX_PF_RGB565_Z16, GX_PF_Z24, + GX_PF_Y8, GX_PF_Y8, GX_PF_Y8, GX_PF_U8}; - const u32 zControlRegOld = __GXData->peCtrl; + const u32 zControlRegOld = __GXData->peCtrl; - GX_SET_REG(__GXData->peCtrl, p2f[pixelFmt], GX_BP_ZCONTROL_PIXEL_FMT_ST, GX_BP_ZCONTROL_PIXEL_FMT_END); - GX_SET_REG(__GXData->peCtrl, zFmt, GX_BP_ZCONTROL_Z_FMT_ST, GX_BP_ZCONTROL_Z_FMT_END); + GX_SET_REG(__GXData->peCtrl, p2f[pixelFmt], GX_BP_ZCONTROL_PIXEL_FMT_ST, + GX_BP_ZCONTROL_PIXEL_FMT_END); + GX_SET_REG(__GXData->peCtrl, zFmt, GX_BP_ZCONTROL_Z_FMT_ST, GX_BP_ZCONTROL_Z_FMT_END); - if (zControlRegOld != __GXData->peCtrl) { - u32 isZ16; - GX_BP_LOAD_REG(__GXData->peCtrl); - isZ16 = (pixelFmt == GX_PF_RGB565_Z16) ? GX_TRUE : GX_FALSE; - GX_SET_REG(__GXData->genMode, isZ16, GX_BP_GENMODE_MULTISAMPLE_ST, GX_BP_GENMODE_MULTISAMPLE_END); - __GXData->dirtyFlags |= GX_DIRTY_GEN_MODE; - } + if (zControlRegOld != __GXData->peCtrl) { + GX_BP_LOAD_REG(__GXData->peCtrl); + isZ16 = (pixelFmt == GX_PF_RGB565_Z16) ? GX_TRUE : GX_FALSE; + GX_SET_REG(__GXData->genMode, isZ16, GX_BP_GENMODE_MULTISAMPLE_ST, + GX_BP_GENMODE_MULTISAMPLE_END); + __GXData->dirtyState |= GX_DIRTY_GEN_MODE; + } - if (p2f[pixelFmt] == GX_PF_Y8) { - GX_SET_REG(__GXData->cmode1, pixelFmt - GX_PF_Y8, GX_BP_DSTALPHA_YUV_FMT_ST, GX_BP_DSTALPHA_YUV_FMT_END); - GX_SET_REG(__GXData->cmode1, GX_BP_REG_DSTALPHA, 0, 7); - GX_BP_LOAD_REG(__GXData->cmode1); - } + if (p2f[pixelFmt] == GX_PF_Y8) { + GX_SET_REG(__GXData->cmode1, pixelFmt - GX_PF_Y8, GX_BP_DSTALPHA_YUV_FMT_ST, + GX_BP_DSTALPHA_YUV_FMT_END); + GX_SET_REG(__GXData->cmode1, GX_BP_REG_DSTALPHA, 0, 7); + GX_BP_LOAD_REG(__GXData->cmode1); + } - __GXData->bpSentNot = FALSE; + __GXData->bpSentNot = FALSE; } -#else -/* ############################################################################################## */ -/* 803D2838-803D2858 02F958 0020+00 1/1 0/0 0/0 .data p2f$358 */ -SECTION_DATA static u8 p2f[32] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, -}; - -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetPixelFmt(GXPixelFmt pixel_fmt, GXZFmt16 z_fmt) { - nofralloc -#include "asm/dolphin/gx/GXPixel/GXSetPixelFmt.s" -} -#pragma pop -#endif /* 8035FDD8-8035FE04 35A718 002C+00 0/0 22/22 1/1 .text GXSetDither */ void GXSetDither(GXBool dither) { - u32 blendModeReg = __GXData->cmode0; - GX_SET_REG(blendModeReg, dither, GX_BP_BLENDMODE_DITHER_ST, GX_BP_BLENDMODE_DITHER_END); - GX_BP_LOAD_REG(blendModeReg); - __GXData->cmode0 = blendModeReg; - __GXData->bpSentNot = GX_FALSE; + u32 blendModeReg = __GXData->cmode0; + GX_SET_REG(blendModeReg, dither, GX_BP_BLENDMODE_DITHER_ST, GX_BP_BLENDMODE_DITHER_END); + GX_BP_LOAD_REG(blendModeReg); + __GXData->cmode0 = blendModeReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035FE04-8035FE40 35A744 003C+00 0/0 2/2 0/0 .text GXSetDstAlpha */ void GXSetDstAlpha(GXBool enable, u8 alpha) { - u32 dstAlpha = __GXData->cmode1; - GX_SET_REG(dstAlpha, alpha, GX_BP_DSTALPHA_ALPHA_ST, GX_BP_DSTALPHA_ALPHA_END); - GX_SET_REG(dstAlpha, enable, GX_BP_DSTALPHA_ENABLE_ST, GX_BP_DSTALPHA_ENABLE_END); - GX_BP_LOAD_REG(dstAlpha); - __GXData->cmode1 = dstAlpha; - __GXData->bpSentNot = GX_FALSE; + u32 dstAlpha = __GXData->cmode1; + GX_SET_REG(dstAlpha, alpha, GX_BP_DSTALPHA_ALPHA_ST, GX_BP_DSTALPHA_ALPHA_END); + GX_SET_REG(dstAlpha, enable, GX_BP_DSTALPHA_ENABLE_ST, GX_BP_DSTALPHA_ENABLE_END); + GX_BP_LOAD_REG(dstAlpha); + __GXData->cmode1 = dstAlpha; + __GXData->bpSentNot = GX_FALSE; } /* 8035FE40-8035FE78 35A780 0038+00 0/0 1/1 0/0 .text GXSetFieldMask */ void GXSetFieldMask(GXBool enableEven, GXBool enableOdd) { - u32 fieldMaskReg = 0; - GX_SET_REG(fieldMaskReg, enableOdd, GX_BP_FIELDMASK_ODD_ST, GX_BP_FIELDMASK_ODD_END); - GX_SET_REG(fieldMaskReg, enableEven, GX_BP_FIELDMASK_EVEN_ST, GX_BP_FIELDMASK_EVEN_END); - GX_SET_REG(fieldMaskReg, GX_BP_REG_FIELDMASK, 0, 7); + u32 fieldMaskReg = 0; + GX_SET_REG(fieldMaskReg, enableOdd, GX_BP_FIELDMASK_ODD_ST, GX_BP_FIELDMASK_ODD_END); + GX_SET_REG(fieldMaskReg, enableEven, GX_BP_FIELDMASK_EVEN_ST, GX_BP_FIELDMASK_EVEN_END); + GX_SET_REG(fieldMaskReg, GX_BP_REG_FIELDMASK, 0, 7); - GX_BP_LOAD_REG(fieldMaskReg); - __GXData->bpSentNot = GX_FALSE; + GX_BP_LOAD_REG(fieldMaskReg); + __GXData->bpSentNot = GX_FALSE; } /* 8035FE78-8035FEF0 35A7B8 0078+00 0/0 1/1 0/0 .text GXSetFieldMode */ void GXSetFieldMode(GXBool texLOD, GXBool adjustAR) { - GX_SET_REG(__GXData->lpSize, adjustAR, GX_BP_LINEPTWIDTH_ADJUST_ST, GX_BP_LINEPTWIDTH_ADJUST_END); - GX_BP_LOAD_REG(__GXData->lpSize); + GX_SET_REG(__GXData->lpSize, adjustAR, GX_BP_LINEPTWIDTH_ADJUST_ST, + GX_BP_LINEPTWIDTH_ADJUST_END); + GX_BP_LOAD_REG(__GXData->lpSize); - __GXFlushTextureState(); - GX_BP_LOAD_REG(GX_BP_REG_FIELDMODE << 24 | texLOD); - __GXFlushTextureState(); + __GXFlushTextureState(); + GX_BP_LOAD_REG(GX_BP_REG_FIELDMODE << 24 | texLOD); + __GXFlushTextureState(); } diff --git a/libs/dolphin/gx/GXTev.c b/libs/dolphin/gx/GXTev.c index b09e223cc3..676e49450c 100644 --- a/libs/dolphin/gx/GXTev.c +++ b/libs/dolphin/gx/GXTev.c @@ -1,438 +1,386 @@ -// -// Generated By: dol2asm -// Translation Unit: GXTev -// - #include "dolphin/gx/GXTev.h" -#include "dolphin/gx/GX.h" -#include "dol2asm.h" +#include "dolphin/gx.h" /* ############################################################################################## */ /* 803D27C0-803D27D4 02F8E0 0014+00 1/1 0/0 0/0 .data TEVCOpTableST0 */ static u32 TEVCOpTableST0[] = { - 0xC008F8AF, // modulate - 0xC008A89F, // decal - 0xC008AC8F, // blend - 0xC008FFF8, // replace - 0xC008FFFA, // passclr + 0xC008F8AF, // modulate + 0xC008A89F, // decal + 0xC008AC8F, // blend + 0xC008FFF8, // replace + 0xC008FFFA, // passclr }; /* 803D27D4-803D27E8 02F8F4 0014+00 0/0 0/0 0/0 .data TEVCOpTableST1 */ static u32 TEVCOpTableST1[] = { - 0xC008F80F, // modulate - 0xC008089F, // decal - 0xC0080C8F, // blend - 0xC008FFF8, // replace - 0xC008FFF0, // passclr + 0xC008F80F, // modulate + 0xC008089F, // decal + 0xC0080C8F, // blend + 0xC008FFF8, // replace + 0xC008FFF0, // passclr }; /* 803D27E8-803D27FC 02F908 0014+00 0/0 0/0 0/0 .data TEVAOpTableST0 */ static u32 TEVAOpTableST0[] = { - 0xC108F2F0, // modulate - 0xC108FFD0, // decal - 0xC108F2F0, // blend - 0xC108FFC0, // replace - 0xC108FFD0, // passclr + 0xC108F2F0, // modulate + 0xC108FFD0, // decal + 0xC108F2F0, // blend + 0xC108FFC0, // replace + 0xC108FFD0, // passclr }; /* 803D27FC-803D2810 02F91C 0014+00 0/0 0/0 0/0 .data TEVAOpTableST1 */ static u32 TEVAOpTableST1[] = { - 0xC108F070, // modulate - 0xC108FF80, // decal - 0xC108F070, // blend - 0xC108FFC0, // replace - 0xC108FF80, // passclr + 0xC108F070, // modulate + 0xC108FF80, // decal + 0xC108F070, // blend + 0xC108FFC0, // replace + 0xC108FF80, // passclr }; /* 8035F198-8035F224 359AD8 008C+00 0/0 15/15 1/1 .text GXSetTevOp */ void GXSetTevOp(GXTevStageID stage, GXTevMode mode) { - u32* color; - u32* alpha; - u32 tevReg; + u32* color; + u32* alpha; + u32 tevReg; - if (stage == GX_TEVSTAGE0) { - color = &TEVCOpTableST0[mode]; - alpha = &TEVAOpTableST0[mode]; - } else { - color = &TEVCOpTableST1[mode]; - alpha = &TEVAOpTableST1[mode]; - } + if (stage == GX_TEVSTAGE0) { + color = &TEVCOpTableST0[mode]; + alpha = &TEVAOpTableST0[mode]; + } else { + color = &TEVCOpTableST1[mode]; + alpha = &TEVAOpTableST1[mode]; + } - tevReg = __GXData->tevc[stage]; - tevReg = (*color & ~0xFF000000) | (tevReg & 0xFF000000); + tevReg = __GXData->tevc[stage]; + tevReg = (*color & ~0xFF000000) | (tevReg & 0xFF000000); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); - __GXData->tevc[stage] = tevReg; + __GXData->tevc[stage] = tevReg; - tevReg = __GXData->teva[stage]; - tevReg = (*alpha & ~0xFF00000F) | (tevReg & 0xFF00000F); + tevReg = __GXData->teva[stage]; + tevReg = (*alpha & ~0xFF00000F) | (tevReg & 0xFF00000F); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); - __GXData->teva[stage] = tevReg; + __GXData->teva[stage] = tevReg; - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 8035F224-8035F268 359B64 0044+00 0/0 49/49 5/5 .text GXSetTevColorIn */ -void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b, GXTevColorArg c, GXTevColorArg d) { - u32 tevReg; +void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b, GXTevColorArg c, + GXTevColorArg d) { + u32 tevReg; - tevReg = __GXData->tevc[stage]; + tevReg = __GXData->tevc[stage]; - FAST_FLAG_SET(tevReg, a, 12, 4); - FAST_FLAG_SET(tevReg, b, 8, 4); - FAST_FLAG_SET(tevReg, c, 4, 4); - FAST_FLAG_SET(tevReg, d, 0, 4); + FAST_FLAG_SET(tevReg, a, 12, 4); + FAST_FLAG_SET(tevReg, b, 8, 4); + FAST_FLAG_SET(tevReg, c, 4, 4); + FAST_FLAG_SET(tevReg, d, 0, 4); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); - __GXData->tevc[stage] = tevReg; - __GXData->bpSentNot = GX_FALSE; + __GXData->tevc[stage] = tevReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035F268-8035F2AC 359BA8 0044+00 0/0 49/49 6/6 .text GXSetTevAlphaIn */ -void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b, GXTevAlphaArg c, GXTevAlphaArg d) { - u32 tevReg; +void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b, GXTevAlphaArg c, + GXTevAlphaArg d) { + u32 tevReg; - tevReg = __GXData->teva[stage]; + tevReg = __GXData->teva[stage]; - FAST_FLAG_SET(tevReg, a, 13, 3); - FAST_FLAG_SET(tevReg, b, 10, 3); - FAST_FLAG_SET(tevReg, c, 7, 3); - FAST_FLAG_SET(tevReg, d, 4, 3); + FAST_FLAG_SET(tevReg, a, 13, 3); + FAST_FLAG_SET(tevReg, b, 10, 3); + FAST_FLAG_SET(tevReg, c, 7, 3); + FAST_FLAG_SET(tevReg, d, 4, 3); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); - __GXData->teva[stage] = tevReg; - __GXData->bpSentNot = GX_FALSE; + __GXData->teva[stage] = tevReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035F2AC-8035F314 359BEC 0068+00 0/0 50/50 5/5 .text GXSetTevColorOp */ -void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool doClamp, GXTevRegID outReg) { - u32 tevReg; +void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, + GXBool doClamp, GXTevRegID outReg) { + u32 tevReg; - tevReg = __GXData->tevc[stage]; - FAST_FLAG_SET(tevReg, op & 1, 18, 1); + tevReg = __GXData->tevc[stage]; + FAST_FLAG_SET(tevReg, op & 1, 18, 1); - if (op <= 1) { - FAST_FLAG_SET(tevReg, scale, 20, 2); - FAST_FLAG_SET(tevReg, bias, 16, 2); - } else { - FAST_FLAG_SET(tevReg, (op >> 1) & 3, 20, 2); - FAST_FLAG_SET(tevReg, 3, 16, 2); - } + if (op <= 1) { + FAST_FLAG_SET(tevReg, scale, 20, 2); + FAST_FLAG_SET(tevReg, bias, 16, 2); + } else { + FAST_FLAG_SET(tevReg, (op >> 1) & 3, 20, 2); + FAST_FLAG_SET(tevReg, 3, 16, 2); + } - FAST_FLAG_SET(tevReg, doClamp, 19, 1); - FAST_FLAG_SET(tevReg, outReg, 22, 2); + FAST_FLAG_SET(tevReg, doClamp, 19, 1); + FAST_FLAG_SET(tevReg, outReg, 22, 2); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); - __GXData->tevc[stage] = tevReg; - __GXData->bpSentNot = GX_FALSE; + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); + __GXData->tevc[stage] = tevReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035F314-8035F37C 359C54 0068+00 0/0 50/50 5/5 .text GXSetTevAlphaOp */ -void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool doClamp, GXTevRegID outReg) { - u32 tevReg; +void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, + GXBool doClamp, GXTevRegID outReg) { + u32 tevReg; - tevReg = __GXData->teva[stage]; - FAST_FLAG_SET(tevReg, op & 1, 18, 1); + tevReg = __GXData->teva[stage]; + FAST_FLAG_SET(tevReg, op & 1, 18, 1); - if (op <= 1) { - FAST_FLAG_SET(tevReg, scale, 20, 2); - FAST_FLAG_SET(tevReg, bias, 16, 2); - } else { - FAST_FLAG_SET(tevReg, (op >> 1) & 3, 20, 2); - FAST_FLAG_SET(tevReg, 3, 16, 2); - } + if (op <= 1) { + FAST_FLAG_SET(tevReg, scale, 20, 2); + FAST_FLAG_SET(tevReg, bias, 16, 2); + } else { + FAST_FLAG_SET(tevReg, (op >> 1) & 3, 20, 2); + FAST_FLAG_SET(tevReg, 3, 16, 2); + } - FAST_FLAG_SET(tevReg, doClamp, 19, 1); - FAST_FLAG_SET(tevReg, outReg, 22, 2); + FAST_FLAG_SET(tevReg, doClamp, 19, 1); + FAST_FLAG_SET(tevReg, outReg, 22, 2); - GX_WRITE_U8(0x61); - GX_WRITE_U32(tevReg); - __GXData->teva[stage] = tevReg; - __GXData->bpSentNot = GX_FALSE; + GX_WRITE_U8(0x61); + GX_WRITE_U32(tevReg); + __GXData->teva[stage] = tevReg; + __GXData->bpSentNot = GX_FALSE; } /* 8035F37C-8035F3DC 359CBC 0060+00 0/0 54/54 4/4 .text GXSetTevColor */ -#ifdef NONMATCHING void GXSetTevColor(GXTevRegID reg, GXColor color) { - u32 ra; - u32 bg; + u32 col = *(u32*)&color; + u32 ra = (0xE0 + reg * 2) << 24; + u32 bg = (0xE1 + reg * 2) << 24; - ra = (((0xE0 + reg * 2) & 0xff) << 24) | (((*(u32*)&color) & 0xff000000) >> 24) | (((*(u32*)&color) & 0xff) << 12); - bg = (((0xE1 + reg * 2) & 0xff) << 24) | (((*(u32*)&color) & 0xff00) >> 8) | (((*(u32*)&color) & 0x00ff0000) >> 4); + GX_SET_REG(ra, col >> 24, 24, 31); + GX_SET_REG(bg, col >> 8, 24, 31); + GX_SET_REG(bg, col >> 16, 12, 19); + GX_SET_REG(ra, col & 0xFF, 12, 19); - GX_WRITE_U8(0x61); - GX_WRITE_U32(ra); + GX_BP_LOAD_REG(ra); + GX_BP_LOAD_REG(bg); + GX_BP_LOAD_REG(bg); + GX_BP_LOAD_REG(bg); - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTevColor(GXTevRegID id, GXColor color) { - nofralloc -#include "asm/dolphin/gx/GXTev/GXSetTevColor.s" -} -#pragma pop -#endif /* 8035F3DC-8035F440 359D1C 0064+00 0/0 8/8 2/2 .text GXSetTevColorS10 */ -#ifdef NONMATCHING void GXSetTevColorS10(GXTevRegID reg, GXColorS10 color) { - u32 ra; - u32 bg; + u32 col = *(u32*)&color; + u32 col1 = ((u32*)&color)[1]; + u32 ra = (0xE0 + reg * 2) << 24; + u32 bg = (0xE1 + reg * 2) << 24; - ra = (((0xE0 + reg * 2) & 0xff) << 24) | (((*(u32*)&color) & 0x07ff0000) >> 16) | (((*(u32*)&color) & 0x7ff) << 12); - bg = (((0xE1 + reg * 2) & 0xff) << 24) | (((*(u32*)&color.b) & 0x07ff0000) >> 16) | (((*(u32*)&color.b) & 0x07ff) << 12); + GX_SET_REG(ra, col >> 16, 21, 31); + GX_SET_REG(bg, col1 >> 16, 21, 31); + GX_SET_REG(bg, col & 0x7FF, 9, 19); + GX_SET_REG(ra, col1 & 0x7FF, 9, 19); - GX_WRITE_U8(0x61); - GX_WRITE_U32(ra); + GX_BP_LOAD_REG(ra); + GX_BP_LOAD_REG(bg); + GX_BP_LOAD_REG(bg); + GX_BP_LOAD_REG(bg); - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTevColorS10(GXTevRegID id, GXColorS10 color) { - nofralloc -#include "asm/dolphin/gx/GXTev/GXSetTevColorS10.s" -} -#pragma pop -#endif /* 8035F440-8035F4A4 359D80 0064+00 0/0 8/8 4/4 .text GXSetTevKColor */ -#ifdef NONMATCHING -void GXSetTevKColor(GXTevKColorID id, GXColor color) -{ +void GXSetTevKColor(GXTevKColorID id, GXColor color) { + u32 col = *(u32*)&color; u32 ra; - u32 bg; + u32 bg; - ra = (((0xE0 + id * 2) & 0xff) << 24) | (((*(u32*)&color) & 0xff000000) >> 24) | (((*(u32*)&color) & 0xff) << 12) | (8 << 0x14); - bg = (((0xE1 + id * 2) & 0xff) << 24) | (((*(u32*)&color) & 0xff00) >> 8) | (((*(u32*)&color) & 0x00ff0000) >> 4) | (8 << 0x14); + ra = (0xE0 + id * 2) << 24; + GX_SET_REG(ra, col >> 24, 24, 31); + GX_SET_REG(ra, col & 0xFF, 12, 19); + GX_SET_REG(ra, 8, 8, 11); - GX_WRITE_U8(0x61); - GX_WRITE_U32(ra); + bg = (0xE1 + id * 2) << 24; + GX_SET_REG(bg, col >> 8, 24, 31); + GX_SET_REG(bg, col >> 16, 12, 19); + GX_SET_REG(bg, 8, 8, 11); - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); + GX_BP_LOAD_REG(ra); + GX_BP_LOAD_REG(bg); - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - GX_WRITE_U8(0x61); - GX_WRITE_U32(bg); - - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTevKColor(GXTevKColorID id, GXColor color) { - nofralloc -#include "asm/dolphin/gx/GXTev/GXSetTevKColor.s" -} -#pragma pop -#endif /* 8035F4A4-8035F500 359DE4 005C+00 0/0 9/9 4/4 .text GXSetTevKColorSel */ -void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel sel) -{ - u32* reg; +void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel sel) { + u32* reg; - reg = &__GXData->tevKsel[stage >> 1]; + reg = &__GXData->tevKsel[stage >> 1]; - if (stage & 1) { - FAST_FLAG_SET(*reg, sel, 14, 5); - } else { - FAST_FLAG_SET(*reg, sel, 4, 5); - } + if (stage & 1) { + GX_SET_REG(*reg, sel, 13, 17); + } else { + GX_SET_REG(*reg, sel, 23, 27); + } - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); - __GXData->bpSentNot = GX_FALSE; + GX_BP_LOAD_REG(*reg); + + __GXData->bpSentNot = GX_FALSE; } /* 8035F500-8035F55C 359E40 005C+00 0/0 9/9 4/4 .text GXSetTevKAlphaSel */ void GXSetTevKAlphaSel(GXTevStageID stage, GXTevKAlphaSel sel) { - u32* reg; + u32* reg; - reg = &__GXData->tevKsel[stage >> 1]; + reg = &__GXData->tevKsel[stage >> 1]; - if (stage & 1) { - FAST_FLAG_SET(*reg, sel, 19, 5); - } else { - FAST_FLAG_SET(*reg, sel, 9, 5); - } + if (stage & 1) { + GX_SET_REG(*reg, sel, 8, 12); + } else { + GX_SET_REG(*reg, sel, 18, 22); + } - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); - __GXData->bpSentNot = GX_FALSE; + GX_BP_LOAD_REG(*reg); + + __GXData->bpSentNot = GX_FALSE; } - /* 8035F55C-8035F5A4 359E9C 0048+00 0/0 10/10 5/5 .text GXSetTevSwapMode */ void GXSetTevSwapMode(GXTevStageID stage, GXTevSwapSel rasSel, GXTevSwapSel texSel) { - u32* reg = &__GXData->teva[stage]; - FAST_FLAG_SET(*reg, rasSel, 0, 2); - FAST_FLAG_SET(*reg, texSel, 2, 2); + u32* reg = &__GXData->teva[stage]; + GX_SET_REG(*reg, rasSel, 30, 31); + GX_SET_REG(*reg, texSel, 28, 29); - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); + GX_BP_LOAD_REG(*reg); - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 8035F5A4-8035F624 359EE4 0080+00 0/0 17/17 2/2 .text GXSetTevSwapModeTable */ -void GXSetTevSwapModeTable(GXTevSwapSel table, GXTevColor red, GXTevColor green, GXTevColor blue, GXTevColor alpha) { - u32* reg; +void GXSetTevSwapModeTable(GXTevSwapSel table, GXTevColor red, GXTevColor green, GXTevColor blue, + GXTevColor alpha) { + u32* reg; - reg = &__GXData->tevKsel[table << 1]; - FAST_FLAG_SET(*reg, red, 0, 2); - FAST_FLAG_SET(*reg, green, 2, 2); + reg = &__GXData->tevKsel[table << 1]; + GX_SET_REG(*reg, red, 30, 31); + GX_SET_REG(*reg, green, 28, 29); - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); + GX_BP_LOAD_REG(*reg); - reg = &__GXData->tevKsel[(table << 1) + 1]; - FAST_FLAG_SET(*reg, blue, 0, 2); - FAST_FLAG_SET(*reg, alpha, 2, 2); + reg = &__GXData->tevKsel[(table << 1) + 1]; + GX_SET_REG(*reg, blue, 30, 31); + GX_SET_REG(*reg, alpha, 28, 29); - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); + GX_BP_LOAD_REG(*reg); - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 8035F624-8035F668 359F64 0044+00 0/0 43/43 5/5 .text GXSetAlphaCompare */ void GXSetAlphaCompare(GXCompare comp0, u8 ref0, GXAlphaOp op, GXCompare comp1, u8 ref1) { - u32 reg = 0xF3000000; + u32 reg = 0xF3000000; - FAST_FLAG_SET(reg, ref0, 0, 8); - FAST_FLAG_SET(reg, ref1, 8, 8); - FAST_FLAG_SET(reg, comp0, 16, 3); - FAST_FLAG_SET(reg, comp1, 19, 3); - FAST_FLAG_SET(reg, op, 22, 2); + GX_SET_REG(reg, ref0, 24, 31); + GX_SET_REG(reg, ref1, 16, 23); + GX_SET_REG(reg, comp0, 13, 15); + GX_SET_REG(reg, comp1, 10, 12); + GX_SET_REG(reg, op, 8, 9); - GX_WRITE_U8(0x61); - GX_WRITE_U32(reg); + GX_BP_LOAD_REG(reg); - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } - /* 8035F668-8035F6F4 359FA8 008C+00 0/0 3/3 0/0 .text GXSetZTexture */ void GXSetZTexture(GXZTexOp op, GXTexFmt format, u32 bias) { - u32 val1; - u32 val2; - u32 val3; + u32 val1; + u32 val2; + u32 val3; - val1 = 0; - FAST_FLAG_SET(val1, bias, 0, 24); - FAST_FLAG_SET(val1, 0xF4, 24, 8); + val1 = 0; + GX_SET_REG(val1, bias, 8, 31); + GX_SET_REG(val1, 0xF4, 0, 7); - val2 = 0; - switch (format) { - case GX_TF_Z8: - val3 = 0; - break; - case GX_TF_Z16: - val3 = 1; - break; - case GX_TF_Z24X8: - val3 = 2; - break; - default: - val3 = 2; - break; - } + val2 = 0; + switch (format) { + case GX_TF_Z8: + val3 = 0; + break; + case GX_TF_Z16: + val3 = 1; + break; + case GX_TF_Z24X8: + val3 = 2; + break; + default: + val3 = 2; + break; + } - FAST_FLAG_SET(val2, val3, 0, 2); - FAST_FLAG_SET(val2, op, 2, 2); - FAST_FLAG_SET(val2, 0xF5, 24, 8); + GX_SET_REG(val2, val3, 30, 31); + GX_SET_REG(val2, op, 28, 29); + GX_SET_REG(val2, 0xF5, 0, 7); - GX_WRITE_U8(0x61); - GX_WRITE_U32(val1); + GX_BP_LOAD_REG(val1); - GX_WRITE_U8(0x61); - GX_WRITE_U32(val2); + GX_BP_LOAD_REG(val2); - __GXData->bpSentNot = GX_FALSE; + __GXData->bpSentNot = GX_FALSE; } /* 8035F6F4-8035F890 35A034 019C+00 0/0 65/65 6/6 .text GXSetTevOrder */ void GXSetTevOrder(GXTevStageID stage, GXTexCoordID coord, GXTexMapID map, GXChannelID color) { - static int c2r[] = { 0, 1, 0, 1, 0, 1, 7, 5, 6 }; + static int c2r[] = {0, 1, 0, 1, 0, 1, 7, 5, 6}; - u32* reg; - u32 tempMap; - u32 tempCoord; + u32* reg; + u32 tempMap; + u32 tempCoord; - reg = &__GXData->tref[stage / 2]; - __GXData->texmapId[stage] = map; + reg = &__GXData->tref[stage / 2]; + __GXData->texmapId[stage] = map; - tempMap = map & ~0x100; - tempMap = (tempMap >= GX_MAX_TEXMAP) ? GX_TEXMAP0 : tempMap; + tempMap = map & ~0x100; + tempMap = (tempMap >= GX_MAX_TEXMAP) ? GX_TEXMAP0 : tempMap; - if (coord >= GX_MAXCOORD) { - tempCoord = GX_TEXCOORD0; - __GXData->tevTcEnab = __GXData->tevTcEnab & ~(1 << stage); - } else { - tempCoord = coord; - __GXData->tevTcEnab = __GXData->tevTcEnab | (1 << stage); - } + if (coord >= GX_MAXCOORD) { + tempCoord = GX_TEXCOORD0; + __GXData->tevTcEnab = __GXData->tevTcEnab & ~(1 << stage); + } else { + tempCoord = coord; + __GXData->tevTcEnab = __GXData->tevTcEnab | (1 << stage); + } - if (stage & 1) { - FAST_FLAG_SET(*reg, tempMap, 12, 3); - FAST_FLAG_SET(*reg, tempCoord, 15, 3); - FAST_FLAG_SET(*reg, (color == GX_COLOR_NULL ? 7 : c2r[color]), 19, 3); - FAST_FLAG_SET(*reg, ((map != GX_TEXMAP_NULL) && !(map & 0x100)), 18, 1); + if (stage & 1) { + GX_SET_REG(*reg, tempMap, 17, 19); + GX_SET_REG(*reg, tempCoord, 14, 16); + GX_SET_REG(*reg, (color == GX_COLOR_NULL ? 7 : c2r[color]), 10, 12); + GX_SET_REG(*reg, ((map != GX_TEXMAP_NULL) && !(map & 0x100)), 13, 13); - } else { - FAST_FLAG_SET(*reg, tempMap, 0, 3); - FAST_FLAG_SET(*reg, tempCoord, 3, 3); - FAST_FLAG_SET(*reg, (color == GX_COLOR_NULL ? 7 : c2r[color]), 7, 3); - FAST_FLAG_SET(*reg, ((map != GX_TEXMAP_NULL) && !(map & 0x100)), 6, 1); - } + } else { + GX_SET_REG(*reg, tempMap, 29, 31); + GX_SET_REG(*reg, tempCoord, 26, 28); + GX_SET_REG(*reg, (color == GX_COLOR_NULL ? 7 : c2r[color]), 22, 24); + GX_SET_REG(*reg, ((map != GX_TEXMAP_NULL) && !(map & 0x100)), 25, 25); + } - GX_WRITE_U8(0x61); - GX_WRITE_U32(*reg); + GX_BP_LOAD_REG(*reg); - __GXData->bpSentNot = GX_FALSE; - __GXData->dirtyFlags |= GX_DIRTY_SU_TEX; + __GXData->bpSentNot = GX_FALSE; + __GXData->dirtyState |= 1; } /* 8035F890-8035F8B8 35A1D0 0028+00 0/0 63/63 6/6 .text GXSetNumTevStages */ void GXSetNumTevStages(u8 count) { - FAST_FLAG_SET(__GXData->genMode, count - 1, 10, 4); - __GXData->dirtyFlags |= GX_DIRTY_GEN_MODE; + GX_SET_REG(__GXData->genMode, count - 1, 18, 21); + + __GXData->dirtyState |= 0x4; } diff --git a/libs/dolphin/gx/GXTexture.c b/libs/dolphin/gx/GXTexture.c index 27b4ebc339..c23e733482 100644 --- a/libs/dolphin/gx/GXTexture.c +++ b/libs/dolphin/gx/GXTexture.c @@ -1,415 +1,268 @@ -// -// Generated By: dol2asm -// Translation Unit: GXTexture -// - #include "dolphin/gx/GXTexture.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "string.h" -#include "dol2asm.h" -// -// Forward References: -// +#define GET_TILE_COUNT(a, b) (((a) + (1 << (b)) - 1) >> (b)) -static void GXLoadTexObjPreLoaded(); -void GXLoadTexObj(); -void GXLoadTlut(); -void GXInitTlutRegion(); -void GXInvalidateTexAll(); -void __SetSURegs(); -void __GXSetSUTexRegs(); -void __GXSetTmemConfig(); - -// -// External References: -// - -void __GXFlushTextureState(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803D2598-803D268C -00001 00F4+00 1/1 0/0 0/0 .data @104 */ -SECTION_DATA static void* lit_104[61] = { - (void*)(((char*)GXGetTexBufferSize) + 0x28), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x34), (void*)(((char*)GXGetTexBufferSize) + 0x40), - (void*)(((char*)GXGetTexBufferSize) + 0x40), (void*)(((char*)GXGetTexBufferSize) + 0x40), - (void*)(((char*)GXGetTexBufferSize) + 0x40), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x28), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x40), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x28), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x40), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x40), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x28), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x34), (void*)(((char*)GXGetTexBufferSize) + 0x40), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x34), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x34), (void*)(((char*)GXGetTexBufferSize) + 0x40), - (void*)(((char*)GXGetTexBufferSize) + 0x40), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x28), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x4C), (void*)(((char*)GXGetTexBufferSize) + 0x34), - (void*)(((char*)GXGetTexBufferSize) + 0x34), (void*)(((char*)GXGetTexBufferSize) + 0x4C), - (void*)(((char*)GXGetTexBufferSize) + 0x40), -}; - -/* 8035DC1C-8035DD78 35855C 015C+00 1/0 8/8 0/0 .text GXGetTexBufferSize */ -#ifdef NONMATCHING -u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod) { - u32 r0; - u32 r8; - u32 i; - u32 rv; - u32 r7; - u32 r6; - u32 r10; - u32 uVar1; - u32 uVar2; - u32 uVar3; - switch(format) { +inline void __GXGetTexTileShift(GXTexFmt format, u32* widthTiles, u32* heightTiles) { + switch (format) { case GX_TF_I4: - case GX_TF_CI8: + case GX_TF_C4: case GX_TF_CMPR: - case 32: - case 48: - r0 = 3; - r8 = 3; + case GX_CTF_R4: + case GX_CTF_Z4: + *widthTiles = 3; + *heightTiles = 3; break; + case GX_TF_I8: case GX_TF_IA4: - case 17: - case 34: - case 39: - case 40: - case 41: - case 42: - case 57: - case 58: - r0 = 3; - r8 = 2; + case GX_TF_C8: + case GX_TF_Z8: + case GX_CTF_RA4: + case GX_CTF_R8: + case GX_CTF_G8: + case GX_CTF_B8: + case GX_CTF_RG8: + case GX_CTF_Z8M: + case GX_CTF_Z8L: + *widthTiles = 3; + *heightTiles = 2; break; + case GX_TF_IA8: case GX_TF_RGB565: - case GX_TF_TGB5A3: + case GX_TF_RGB5A3: case GX_TF_RGBA8: - case 19: - case 22: - case 35: - case 43: + case GX_TF_C14X2: + case GX_TF_Z16: + case GX_TF_Z24X8: + case GX_CTF_RA8: + case GX_CTF_GB8: case 44: - case 60: - r0 = 2; - r8 = 2; + case GX_CTF_Z16L: + *widthTiles = 2; + *heightTiles = 2; break; + default: - r8 = 0; - r0 = 0; + *heightTiles = 0; + *widthTiles = 0; break; } +} - if (format == 6 || format == 0x16) { - uVar3 = 0x40; +/* 8035DC1C-8035DD78 35855C 015C+00 1/0 8/8 0/0 .text GXGetTexBufferSize */ +u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod) { + u32 widthTiles, heightTiles, tileSize, bufferSize, numX, numY, i; + + __GXGetTexTileShift(format, &widthTiles, &heightTiles); + + if (format == GX_TF_RGBA8 || format == GX_TF_Z24X8) { + tileSize = 0x40; } else { - uVar3 = 0x20; + tileSize = 0x20; } if (mipmap == GX_TRUE) { - r7 = (1 << r8) - 1; - r10 = (1 << r0) - 1; - rv = 0; - for (i = 0; i < max_lod; i++) { - rv += uVar3 * (((s32)(width + r10) >> r0) * ((s32)(height + r7) >> r0)); + bufferSize = 0; + for (i = 0; i < max_lod; i++) { + numX = GET_TILE_COUNT(width, widthTiles); + numY = GET_TILE_COUNT(height, heightTiles); + + bufferSize += numX * numY * tileSize; if (width == 1 && height == 1) { break; } - width = (width > 1) ? width >> 1 : 1; - height = (height > 1) ? height >> 1 : 1; + width = (width > 1) ? (width >> 1) : 1; + height = (height > 1) ? (height >> 1) : 1; } - } else { - rv = uVar3 * (((s32)(width + (1 << r0) - 1) >> r0) * ((s32)(height + (1 << r8) - 1) >> r0)); - } - return rv; -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s" -} -#pragma pop -#endif -/* ############################################################################################## */ -/* 803D268C-803D2780 -00001 00F4+00 1/1 0/0 0/0 .data @145 */ -SECTION_DATA static void* lit_145[61] = { - (void*)(((char*)__GetImageTileCount) + 0x20), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x2C), (void*)(((char*)__GetImageTileCount) + 0x38), - (void*)(((char*)__GetImageTileCount) + 0x38), (void*)(((char*)__GetImageTileCount) + 0x38), - (void*)(((char*)__GetImageTileCount) + 0x38), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x20), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x38), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x20), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x38), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x38), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x20), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x2C), (void*)(((char*)__GetImageTileCount) + 0x38), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x2C), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x2C), (void*)(((char*)__GetImageTileCount) + 0x38), - (void*)(((char*)__GetImageTileCount) + 0x38), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x20), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x44), (void*)(((char*)__GetImageTileCount) + 0x2C), - (void*)(((char*)__GetImageTileCount) + 0x2C), (void*)(((char*)__GetImageTileCount) + 0x44), - (void*)(((char*)__GetImageTileCount) + 0x38), -}; + } else { + numX = GET_TILE_COUNT(width, widthTiles); + numY = GET_TILE_COUNT(height, heightTiles); + bufferSize = numX * numY * tileSize; + } + + return bufferSize; +} /* 8035DD78-8035DE40 3586B8 00C8+00 1/0 1/1 0/0 .text __GetImageTileCount */ -#ifdef NONMATCHING -void __GetImageTileCount(u32 arg0, u16 arg1, u16 arg2, s32* arg3, s32* arg4, s32* arg5) { - u32 r0; - u32 r8; - s32 uVar3; - s32 uVar4; - s32 uVar5; - s32 uVar6; - s32 uVar7; - switch(arg0) { - case GX_TF_I4: - case GX_TF_CI8: - case GX_TF_CMPR: - case 32: - case 48: - r0 = 3; - r8 = 3; - break; - case GX_TF_I8: - case GX_TF_IA4: - case 17: - case 34: - case 39: - case 40: - case 41: - case 42: - case 57: - case 58: - r0 = 3; - r8 = 2; - break; - case GX_TF_IA8: - case GX_TF_RGB565: - case GX_TF_TGB5A3: - case GX_TF_RGBA8: - case 19: - case 22: - case 35: - case 43: - case 44: - case 60: - r0 = 2; - r8 = 2; - break; - default: - r8 = 0; - r0 = 0; - break; +void __GetImageTileCount(GXTexFmt format, u16 width, u16 height, u32* a, u32* b, u32* c) { + u32 widthTiles, heightTiles; + + __GXGetTexTileShift(format, &widthTiles, &heightTiles); + + if (width <= 0) { + width = 1; } - if (arg1 == 0) { - arg1 = 1; + if (height <= 0) { + height = 1; } - if (arg2 == 0) { - arg2 = 1; - } - - uVar3 = 1; - *arg3 = (arg1 + ((1 << r0) - 1)) >> r0; - *arg4 = (arg2 + ((1 << r8) - 1)) >> r8; - - if ((s32)arg0 != 6 && (s32)arg0 != 0x16) { - uVar3 = 0; - } - - *arg5 = uVar3 ? 2 : 1; + *a = GET_TILE_COUNT(width, widthTiles); + *b = GET_TILE_COUNT(height, heightTiles); + *c = (format == GX_TF_RGBA8 || format == GX_TF_Z24X8) ? 2 : 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GetImageTileCount(u32 arg0, u16 arg1, u16 arg2, s32* arg3, s32* arg4, s32* arg5) { - nofralloc -#include "asm/dolphin/gx/GXTexture/__GetImageTileCount.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 803D2780-803D27C0 -00001 003C+04 1/1 0/0 0/0 .data @224 */ -SECTION_DATA static void* lit_224[15 + 1 /* padding */] = { - (void*)(((char*)GXInitTexObj) + 0x180), - (void*)(((char*)GXInitTexObj) + 0x194), - (void*)(((char*)GXInitTexObj) + 0x194), - (void*)(((char*)GXInitTexObj) + 0x1A8), - (void*)(((char*)GXInitTexObj) + 0x1A8), - (void*)(((char*)GXInitTexObj) + 0x1A8), - (void*)(((char*)GXInitTexObj) + 0x1BC), - (void*)(((char*)GXInitTexObj) + 0x1E4), - (void*)(((char*)GXInitTexObj) + 0x180), - (void*)(((char*)GXInitTexObj) + 0x194), - (void*)(((char*)GXInitTexObj) + 0x1A8), - (void*)(((char*)GXInitTexObj) + 0x1E4), - (void*)(((char*)GXInitTexObj) + 0x1E4), - (void*)(((char*)GXInitTexObj) + 0x1E4), - (void*)(((char*)GXInitTexObj) + 0x1D0), - /* padding */ - NULL, -}; - -/* 804565E8-804565F0 004BE8 0004+04 2/2 0/0 0/0 .sdata2 @220 */ -SECTION_SDATA2 static f32 lit_220[1 + 1 /* padding */] = { - 16.0f, - /* padding */ - 0.0f, -}; - -/* 804565F0-804565F8 004BF0 0008+00 1/1 0/0 0/0 .sdata2 @222 */ -SECTION_SDATA2 static f64 lit_222 = 4503599627370496.0 /* cast u32 to float */; /* 8035DE40-8035E08C 358780 024C+00 2/1 22/22 3/3 .text GXInitTexObj */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt, - GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTexObj.s" +void GXInitTexObj(GXTexObj* obj, void* imagePtr, u16 width, u16 height, GXTexFmt format, + GXTexWrapMode sWrap, GXTexWrapMode tWrap, GXBool useMIPmap) { + u32 imageBase; + u16 a, b; + u32 c, d; + + GXTexObj* internal = (GXTexObj*)obj; + memset(internal, 0, sizeof(*internal)); + + GX_SET_REG(internal->texture_filter, sWrap, 30, 31); + GX_SET_REG(internal->texture_filter, tWrap, 28, 29); + GX_SET_REG(internal->texture_filter, GX_TRUE, 27, 27); + + if (useMIPmap) { + u32 maxDimSize; + internal->texture_flags |= 1; + if (format == 8 || format == 9 || format == 10) { + GX_SET_REG(internal->texture_filter, 5, 24, 26); + } else { + GX_SET_REG(internal->texture_filter, 6, 24, 26); + } + + maxDimSize = width > height ? 31 - __cntlzw(width) : 31 - __cntlzw(height); + + GX_SET_REG(internal->texture_lod, (maxDimSize) * 16.f, 16, 23); + } else { + GX_SET_REG(internal->texture_filter, 4, 24, 26); + } + + internal->texture_format = format; + GX_SET_REG(internal->texture_size, width - 1, 22, 31); + GX_SET_REG(internal->texture_size, height - 1, 12, 21); + + GX_SET_REG(internal->texture_size, format & 0xf, 8, 11); + imageBase = (u32)imagePtr >> 5; + GX_SET_REG(internal->texture_address, imageBase, 11, 31); + + switch (format & 0xf) { + case 0: + case 8: + internal->texture_tile_type = 1; + a = 3; + b = 3; + break; + case 1: + case 2: + case 9: + internal->texture_tile_type = 2; + a = 3; + b = 2; + break; + case 3: + case 4: + case 5: + case 10: + internal->texture_tile_type = 2; + a = 2; + b = 2; + break; + case 6: + internal->texture_tile_type = 3; + a = 2; + b = 2; + break; + case 0xe: + internal->texture_tile_type = 0; + a = 3; + b = 3; + break; + default: + internal->texture_tile_type = 2; + a = 2; + b = 2; + break; + } + + internal->texture_time_count = (GET_TILE_COUNT(width, a) * GET_TILE_COUNT(height, b)) & 0x7fff; + + internal->texture_flags |= 2; } -#pragma pop /* 8035E08C-8035E0D4 3589CC 0048+00 0/0 3/3 1/1 .text GXInitTexObjCI */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format, - GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap, u32 tlut_name) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTexObjCI.s" -} -#pragma pop +void GXInitTexObjCI(GXTexObj* obj, void* imagePtr, u16 width, u16 height, GXCITexFmt format, + GXTexWrapMode sWrap, GXTexWrapMode tWrap, GXBool useMIPmap, u32 tlut_name) { + GXTexObj* internal = (GXTexObj*)obj; + + GXInitTexObj(obj, imagePtr, width, height, format, sWrap, tWrap, useMIPmap); + + internal->texture_flags &= ~2; + internal->tlut_name = tlut_name; +} -/* ############################################################################################## */ /* 80450A90-80450A98 000510 0008+00 1/1 0/0 0/0 .sdata GXTexMode0Ids */ -SECTION_SDATA static u8 GXTexMode0Ids[8] = { - 0x80, 0x81, 0x82, 0x83, 0xA0, 0xA1, 0xA2, 0xA3, -}; +u8 GXTexMode0Ids[8] = {0x80, 0x81, 0x82, 0x83, 0xA0, 0xA1, 0xA2, 0xA3}; /* 80450A98-80450AA0 000518 0008+00 1/1 0/0 0/0 .sdata GXTexMode1Ids */ -SECTION_SDATA static u8 GXTexMode1Ids[8] = { - 0x84, 0x85, 0x86, 0x87, 0xA4, 0xA5, 0xA6, 0xA7, -}; +u8 GXTexMode1Ids[8] = {0x84, 0x85, 0x86, 0x87, 0xA4, 0xA5, 0xA6, 0xA7}; /* 80450AA0-80450AA8 000520 0008+00 1/1 0/0 0/0 .sdata GXTexImage0Ids */ -SECTION_SDATA static u8 GXTexImage0Ids[8] = { - 0x88, 0x89, 0x8A, 0x8B, 0xA8, 0xA9, 0xAA, 0xAB, -}; +u8 GXTexImage0Ids[8] = {0x88, 0x89, 0x8a, 0x8b, 0xA8, 0xA9, 0xAa, 0xAb}; /* 80450AA8-80450AB0 000528 0008+00 1/1 0/0 0/0 .sdata GXTexImage1Ids */ -SECTION_SDATA static u8 GXTexImage1Ids[8] = { - 0x8C, 0x8D, 0x8E, 0x8F, 0xAC, 0xAD, 0xAE, 0xAF, -}; +u8 GXTexImage1Ids[8] = {0x8c, 0x8d, 0x8e, 0x8f, 0xAc, 0xAd, 0xAe, 0xAf}; /* 80450AB0-80450AB8 000530 0008+00 1/1 0/0 0/0 .sdata GXTexImage2Ids */ -SECTION_SDATA static u8 GXTexImage2Ids[8] = { - 0x90, 0x91, 0x92, 0x93, 0xB0, 0xB1, 0xB2, 0xB3, -}; +u8 GXTexImage2Ids[8] = {0x90, 0x91, 0x92, 0x93, 0xB0, 0xB1, 0xB2, 0xB3}; /* 80450AB8-80450AC0 000538 0008+00 1/1 0/0 0/0 .sdata GXTexImage3Ids */ -SECTION_SDATA static u8 GXTexImage3Ids[8] = { - 0x94, 0x95, 0x96, 0x97, 0xB4, 0xB5, 0xB6, 0xB7, -}; +u8 GXTexImage3Ids[8] = {0x94, 0x95, 0x96, 0x97, 0xB4, 0xB5, 0xB6, 0xB7}; /* 80450AC0-80450AC8 000540 0008+00 1/1 0/0 0/0 .sdata GXTexTlutIds */ -SECTION_SDATA static u8 GXTexTlutIds[8] = { - 0x98, 0x99, 0x9A, 0x9B, 0xB8, 0xB9, 0xBA, 0xBB, -}; +u8 GXTexTlutIds[8] = {0x98, 0x99, 0x9a, 0x9b, 0xB8, 0xB9, 0xBa, 0xBb}; /* 80450AC8-80450AD0 000548 0006+02 1/1 0/0 0/0 .sdata GX2HWFiltConv */ -SECTION_SDATA static u8 GX2HWFiltConv[6 + 2 /* padding */] = { - 0x00, - 0x04, - 0x01, - 0x05, - 0x02, - 0x06, - /* padding */ - 0x00, - 0x00, -}; - -/* 804565F8-804565FC 004BF8 0004+00 1/1 0/0 0/0 .sdata2 @288 */ -SECTION_SDATA2 static f32 lit_288 = -4.0f; - -/* 804565FC-80456600 004BFC 0004+00 1/1 0/0 0/0 .sdata2 @289 */ -SECTION_SDATA2 static f32 lit_289 = 4.0f; - -/* 80456600-80456604 004C00 0004+00 1/1 0/0 0/0 .sdata2 @290 */ -SECTION_SDATA2 static f32 lit_290 = 3.990000009536743f; - -/* 80456604-80456608 004C04 0004+00 1/1 0/0 0/0 .sdata2 @291 */ -SECTION_SDATA2 static f32 lit_291 = 32.0f; - -/* 80456608-8045660C 004C08 0004+00 1/1 0/0 0/0 .sdata2 @292 */ -SECTION_SDATA2 static u8 lit_292[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 8045660C-80456610 004C0C 0004+00 1/1 0/0 0/0 .sdata2 @293 */ -SECTION_SDATA2 static f32 lit_293 = 10.0f; +u8 GX2HWFiltConv[6] = {0x00, 0x04, 0x01, 0x05, 0x02, 0x06}; /* 8035E0D4-8035E238 358A14 0164+00 0/0 21/21 4/4 .text GXInitTexObjLOD */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter min_filter, GXTexFilter max_filter, f32 min_lod, - f32 max_lod, f32 lod_bias, GXBool bias_clamp, GXBool edge_lod, - GXAnisotropy aniso) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s" +void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter minFilter, GXTexFilter maxFilter, f32 minLOD, + f32 maxLOD, f32 lodBias, GXBool doBiasClamp, GXBool doEdgeLOD, + GXAnisotropy maxAniso) { + GXTexObj* internal = (GXTexObj*)obj; + u8 reg1, reg2; + if (lodBias < -4.0f) { + lodBias = -4.0f; + } else if (lodBias >= 4.0f) { + lodBias = 3.99f; + } + + GX_SET_REG(internal->texture_filter, lodBias * 32.0f, 15, 22); + GX_SET_REG(internal->texture_filter, maxFilter == 1 ? 1 : 0, 27, 27); + GX_SET_REG(internal->texture_filter, GX2HWFiltConv[minFilter], 24, 26); + GX_SET_REG(internal->texture_filter, doEdgeLOD ? 0 : 1, 23, 23); + GX_SET_REG(internal->texture_filter, 0, 14, 14); + GX_SET_REG(internal->texture_filter, 0, 13, 13); + GX_SET_REG(internal->texture_filter, maxAniso, 11, 12); + GX_SET_REG(internal->texture_filter, doBiasClamp, 10, 10); + + if (minLOD < 0.0f) { + minLOD = 0.0f; + } else if (minLOD > 10.0f) { + minLOD = 10.0f; + } + reg1 = minLOD * 16.0f; + + if (maxLOD < 0.0f) { + maxLOD = 0.0f; + } else if (maxLOD > 10.0f) { + maxLOD = 10.0f; + } + reg2 = maxLOD * 16.0f; + + GX_SET_REG(internal->texture_lod, reg1, 24, 31); + GX_SET_REG(internal->texture_lod, reg2, 16, 23); } -#pragma pop /* 8035E238-8035E248 358B78 0010+00 0/0 4/4 1/1 .text GXGetTexObjWidth */ u16 GXGetTexObjWidth(GXTexObj* obj) { @@ -422,7 +275,7 @@ u16 GXGetTexObjHeight(GXTexObj* obj) { } /* 8035E258-8035E260 358B98 0008+00 0/0 1/1 0/0 .text GXGetTexObjFmt */ -GXTexFmt GXGetTexObjFmt(GXTexObj* obj) { +GXTexFmt GXGetTexObjFmt(const GXTexObj* obj) { return obj->texture_format; } @@ -437,7 +290,7 @@ GXTexWrapMode GXGetTexObjWrapT(GXTexObj* obj) { } /* 8035E278-8035E290 358BB8 0018+00 0/0 1/1 0/0 .text GXGetTexObjMipMap */ -GXBool GXGetTexObjMipMap(GXTexObj* obj) { +GXBool GXGetTexObjMipMap(const GXTexObj* obj) { return (obj->texture_flags & 1) == 1; } @@ -447,87 +300,161 @@ u32 GXGetTexObjTlut(GXTexObj* obj) { } /* 8035E298-8035E414 358BD8 017C+00 1/1 0/0 0/0 .text GXLoadTexObjPreLoaded */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void GXLoadTexObjPreLoaded(GXTexObj* obj, GXTexRegion* region, GXTexMapID id) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s" +void GXLoadTexObjPreLoaded(GXTexObj* obj, GXTexRegion* region, GXTexMapID map) { + u8 stackManipulation[0x18]; + + GXTexObj* internalObj = (GXTexObj*)obj; + GXTexRegion* internalRegion = (GXTexRegion*)region; + + GX_SET_REG(internalObj->texture_filter, GXTexMode0Ids[map], 0, 7); + GX_SET_REG(internalObj->texture_lod, GXTexMode1Ids[map], 0, 7); + GX_SET_REG(internalObj->texture_size, GXTexImage0Ids[map], 0, 7); + + GX_SET_REG(internalRegion->unk0, GXTexImage1Ids[map], 0, 7); + GX_SET_REG(internalRegion->unk4, GXTexImage2Ids[map], 0, 7); + + GX_SET_REG(internalObj->texture_address, GXTexImage3Ids[map], 0, 7); + + GX_BP_LOAD_REG(internalObj->texture_filter); + GX_BP_LOAD_REG(internalObj->texture_lod); + GX_BP_LOAD_REG(internalObj->texture_size); + GX_BP_LOAD_REG(internalRegion->unk0); + GX_BP_LOAD_REG(internalRegion->unk4); + GX_BP_LOAD_REG(internalObj->texture_address); + + if ((internalObj->texture_flags & 2) == 0) { + GXTlutObj* tlut = (GXTlutObj*)__GXData->tlutRegionCallback(internalObj->tlut_name); + GX_SET_REG(tlut->address, GXTexTlutIds[map], 0, 7); + + GX_BP_LOAD_REG(tlut->address); + } + + __GXData->tImage0[map] = internalObj->texture_size; + __GXData->tMode0[map] = internalObj->texture_filter; + + __GXData->dirtyState |= GX_DIRTY_SU_TEX; + __GXData->bpSentNot = GX_FALSE; } -#pragma pop /* 8035E414-8035E468 358D54 0054+00 0/0 33/33 5/5 .text GXLoadTexObj */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXLoadTexObj(GXTexObj* obj, GXTexMapID id) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXLoadTexObj.s" +void GXLoadTexObj(GXTexObj* obj, GXTexMapID map) { + GXTexRegion* ret = (GXTexRegion*)__GXData->texRegionCallback(obj, map); + + GXLoadTexObjPreLoaded(obj, ret, map); } -#pragma pop /* 8035E468-8035E4A0 358DA8 0038+00 0/0 4/4 1/1 .text GXInitTlutObj */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTlutObj(GXTlutObj* obj, void* lut, GXTlutFmt fmt, u16 entry_num) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTlutObj.s" +void GXInitTlutObj(GXTlutObj* obj, void* table, GXTlutFmt format, u16 numEntries) { + GXTlutObj* internal = (GXTlutObj*)obj; + + internal->format = 0; + + GX_SET_REG(internal->format, format, 20, 21); + GX_SET_REG(internal->address, (u32)table >> 5, 11, 31); + GX_SET_REG(internal->address, 100, 0, 7); + + internal->numEntries = numEntries; } -#pragma pop /* 8035E4A0-8035E538 358DE0 0098+00 0/0 4/4 1/1 .text GXLoadTlut */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXLoadTlut(GXTlutObj* obj, u32 tlut_name) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXLoadTlut.s" +void GXLoadTlut(GXTlutObj* obj, u32 tlut_name) { + GXTlutObj* internal = (GXTlutObj*)obj; + GXTlutRegion* ret = (GXTlutRegion*)__GXData->tlutRegionCallback(tlut_name); + u32 reg; + + __GXFlushTextureState(); + + GX_BP_LOAD_REG(internal->address); + GX_BP_LOAD_REG(ret->unk0); + + __GXFlushTextureState(); + + reg = ret->unk0; + GX_SET_REG(internal->format, reg, 22, 31); + + ret->tlutObj = *internal; } -#pragma pop /* 8035E538-8035E62C 358E78 00F4+00 0/0 2/2 0/0 .text GXInitTexCacheRegion */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTexCacheRegion(GXTexRegion* region, GXBool is_32b_mipmap, u32 tmem_even, - GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s" +void GXInitTexCacheRegion(GXTexRegion* region, GXBool is32bMIPmap, u32 memEven, + GXTexCacheSize sizeEven, u32 memOdd, GXTexCacheSize sizeOdd) { + GXTexRegion* internal = (GXTexRegion*)region; + + u32 reg; + switch (sizeEven) { + case 0: + reg = 3; + break; + case 1: + reg = 4; + break; + case 2: + reg = 5; + break; + } + + internal->unk0 = 0; + + GX_SET_REG(internal->unk0, memEven >> 5, 17, 31); + GX_SET_REG(internal->unk0, reg, 14, 16); + GX_SET_REG(internal->unk0, reg, 11, 13); + GX_SET_REG(internal->unk0, 0, 10, 10); + + switch (sizeOdd) { + case 0: + reg = 3; + break; + case 1: + reg = 4; + break; + case 2: + reg = 5; + break; + case 3: + reg = 0; + break; + } + + internal->unk4 = 0; + GX_SET_REG(internal->unk4, memOdd >> 5, 17, 31); + GX_SET_REG(internal->unk4, reg, 14, 16); + GX_SET_REG(internal->unk4, reg, 11, 13); + + internal->unkC = is32bMIPmap; + internal->unkD = 1; } -#pragma pop /* 8035E62C-8035E664 358F6C 0038+00 0/0 1/1 0/0 .text GXInitTlutRegion */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitTlutRegion(GXTlutRegion* region, u32 tmem_addr, GXTlutSize tlut_size) { - nofralloc -#include "asm/dolphin/gx/GXTexture/GXInitTlutRegion.s" +void GXInitTlutRegion(GXTlutRegion* region, u32 memAddr, GXTlutSize tlutSize) { + GXTlutRegion* internal = (GXTlutRegion*)region; + + internal->unk0 = 0; + GX_SET_REG(internal->unk0, (memAddr - 0x80000) >> 9, 22, 31); + GX_SET_REG(internal->unk0, tlutSize, 11, 21); + GX_SET_REG(internal->unk0, 0x65, 0, 7); } -#pragma pop /* 8035E664-8035E6AC 358FA4 0048+00 0/0 8/8 1/1 .text GXInvalidateTexAll */ void GXInvalidateTexAll(void) { __GXFlushTextureState(); - GXFIFO.u8 = 0x61; - GXFIFO.u32 = 0x66001000; - GXFIFO.u8 = 0x61; - GXFIFO.u32 = 0x66001100; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = 0x66001000; + GXWGFifo.u8 = 0x61; + GXWGFifo.u32 = 0x66001100; __GXFlushTextureState(); } /* 8035E6AC-8035E6C0 358FEC 0014+00 0/0 1/1 0/0 .text GXSetTexRegionCallback */ GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback callback) { - GXTexRegionCallback prev = __GXData->texRegionCB; - __GXData->texRegionCB = callback; + GXTexRegionCallback prev = __GXData->texRegionCallback; + __GXData->texRegionCallback = callback; return prev; } /* 8035E6C0-8035E6D4 359000 0014+00 0/0 1/1 0/0 .text GXSetTlutRegionCallback */ GXTlutRegionCallback GXSetTlutRegionCallback(GXTlutRegionCallback callback) { - GXTlutRegionCallback prev = __GXData->tlutRegionCB; - __GXData->tlutRegionCB = callback; + GXTlutRegionCallback prev = __GXData->tlutRegionCallback; + __GXData->tlutRegionCallback = callback; return prev; } @@ -542,31 +469,164 @@ asm void GXSetTexCoordScaleManually(GXTexCoordID coord, GXBool enable, u16 s_sca #pragma pop /* 8035E750-8035E7F0 359090 00A0+00 1/1 0/0 0/0 .text __SetSURegs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __SetSURegs() { - nofralloc -#include "asm/dolphin/gx/GXTexture/__SetSURegs.s" +void __SetSURegs(u32 texImgIndex, u32 setUpRegIndex) { + u16 a1, a2; + GXBool b, c; + + a1 = GX_GET_REG(__GXData->tImage0[texImgIndex], 22, 31); + a2 = (__GXData->tImage0[texImgIndex] & (0x3ff << 10)) >> 10; + + GX_SET_REG(__GXData->suTs0[setUpRegIndex], a1, 16, 31); + GX_SET_REG(__GXData->suTs1[setUpRegIndex], a2, 16, 31); + + b = GX_GET_REG(__GXData->tMode0[texImgIndex], 30, 31) == 1; + c = GX_GET_REG(__GXData->tMode0[texImgIndex], 28, 29) == 1; + + GX_SET_REG(__GXData->suTs0[setUpRegIndex], b, 15, 15); + GX_SET_REG(__GXData->suTs1[setUpRegIndex], c, 15, 15); + + GX_BP_LOAD_REG(__GXData->suTs0[setUpRegIndex]); + GX_BP_LOAD_REG(__GXData->suTs1[setUpRegIndex]); + + __GXData->bpSentNot = GX_FALSE; } -#pragma pop /* 8035E7F0-8035E96C 359130 017C+00 0/0 2/2 0/0 .text __GXSetSUTexRegs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetSUTexRegs() { - nofralloc -#include "asm/dolphin/gx/GXTexture/__GXSetSUTexRegs.s" +#pragma dont_inline on +void __GXSetSUTexRegs(void) { + u32 i; + u32 b; + u32 a; + u32 c; + u32 d; + u32 stackFiller; + if (__GXData->tcsManEnab != 0xff) { + a = GX_GET_REG(__GXData->genMode, 18, 21) + 1; + b = GX_GET_REG(__GXData->genMode, 13, 15); + for (i = 0; i < b; i++) { + switch (i) { + case 0: + c = GX_GET_REG(__GXData->iref, 29, 31); + d = GX_GET_REG(__GXData->iref, 26, 28); + break; + case 1: + c = GX_GET_REG(__GXData->iref, 23, 25); + d = GX_GET_REG(__GXData->iref, 20, 22); + break; + case 2: + c = GX_GET_REG(__GXData->iref, 17, 19); + d = GX_GET_REG(__GXData->iref, 14, 16); + break; + case 3: + c = GX_GET_REG(__GXData->iref, 11, 13); + d = GX_GET_REG(__GXData->iref, 8, 10); + break; + } + + if (!(__GXData->tcsManEnab & (1 << d))) { + __SetSURegs(c, d); + } + } + + for (i = 0; i < a; i++) { + u32* g = &__GXData->tref[i / 2]; + + c = __GXData->texmapId[i] & ~0x100; + + if (i & 1) { + d = GX_GET_REG(*g, 14, 16); + } else { + d = GX_GET_REG(*g, 26, 28); + } + + if (c != 0xff && !(__GXData->tcsManEnab & (1 << d)) && __GXData->tevTcEnab & (1 << i)) { + __SetSURegs(c, d); + } + } + } } -#pragma pop +#pragma dont_inline reset /* 8035E96C-8035ECC0 3592AC 0354+00 0/0 1/1 0/0 .text __GXSetTmemConfig */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetTmemConfig() { - nofralloc -#include "asm/dolphin/gx/GXTexture/__GXSetTmemConfig.s" +void __GXSetTmemConfig(u32 config) { + switch (config) { + case 2: + GX_BP_LOAD_REG(0x8c0d8000); + GX_BP_LOAD_REG(0x900dc000); + + GX_BP_LOAD_REG(0x8d0d8800); + GX_BP_LOAD_REG(0x910dc800); + + GX_BP_LOAD_REG(0x8e0d9000); + GX_BP_LOAD_REG(0x920dd000); + + GX_BP_LOAD_REG(0x8f0d9800); + GX_BP_LOAD_REG(0x930dd800); + + GX_BP_LOAD_REG(0xac0da000); + GX_BP_LOAD_REG(0xb00dc400); + + GX_BP_LOAD_REG(0xad0da800); + GX_BP_LOAD_REG(0xb10dcc00); + + GX_BP_LOAD_REG(0xae0db000); + GX_BP_LOAD_REG(0xb20dd400); + + GX_BP_LOAD_REG(0xaf0db800); + GX_BP_LOAD_REG(0xb30ddc00); + break; + case 1: + GX_BP_LOAD_REG(0x8c0d8000); + GX_BP_LOAD_REG(0x900dc000); + + GX_BP_LOAD_REG(0x8d0d8800); + GX_BP_LOAD_REG(0x910dc800); + + GX_BP_LOAD_REG(0x8e0d9000); + GX_BP_LOAD_REG(0x920dd000); + + GX_BP_LOAD_REG(0x8f0d9800); + GX_BP_LOAD_REG(0x930dd800); + + GX_BP_LOAD_REG(0xac0da000); + GX_BP_LOAD_REG(0xb00de000); + + GX_BP_LOAD_REG(0xad0da800); + GX_BP_LOAD_REG(0xb10de800); + + GX_BP_LOAD_REG(0xae0db000); + GX_BP_LOAD_REG(0xb20df000); + + GX_BP_LOAD_REG(0xaf0db800); + GX_BP_LOAD_REG(0xb30df800); + + break; + case 0: + default: + GX_BP_LOAD_REG(0x8c0d8000); + GX_BP_LOAD_REG(0x900dc000); + + GX_BP_LOAD_REG(0x8d0d8400); + GX_BP_LOAD_REG(0x910dc400); + + GX_BP_LOAD_REG(0x8e0d8800); + GX_BP_LOAD_REG(0x920dc800); + + GX_BP_LOAD_REG(0x8f0d8c00); + GX_BP_LOAD_REG(0x930dcc00); + + GX_BP_LOAD_REG(0xac0d9000); + GX_BP_LOAD_REG(0xb00dd000); + + GX_BP_LOAD_REG(0xad0d9400); + GX_BP_LOAD_REG(0xb10dd400); + + GX_BP_LOAD_REG(0xae0d9800); + GX_BP_LOAD_REG(0xb20dd800); + + GX_BP_LOAD_REG(0xaf0d9c00); + GX_BP_LOAD_REG(0xb30ddc00); + + break; + } } -#pragma pop diff --git a/libs/dolphin/gx/GXTransform.c b/libs/dolphin/gx/GXTransform.c index cff2dd6408..fb09b5088d 100644 --- a/libs/dolphin/gx/GXTransform.c +++ b/libs/dolphin/gx/GXTransform.c @@ -1,48 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: GXTransform -// - #include "dolphin/gx/GXTransform.h" -#include "dolphin/gx/GX.h" -#include "dol2asm.h" +#include "dolphin/gx.h" -// -// Forward References: -// - -void GXSetProjection(); -void GXSetProjectionv(); -void GXGetProjectionv(); -void GXLoadPosMtxImm(); -void GXLoadNrmMtxImm(); -void GXSetCurrentMtx(); -void GXLoadTexMtxImm(); -void __GXSetViewport(); -void GXGetViewportv(); -void GXSetScissor(); -void GXGetScissor(); -void GXSetScissorBoxOffset(); -void GXSetClipMode(); void __GXSetMatrixIndex(); -// -// Declarations: -// +static void Copy6Floats(register f32 src[6], register f32 dst[6]) { + register f32 ps_0, ps_1, ps_2; -/* ############################################################################################## */ -/* 80456650-80456654 004C50 0004+00 3/3 0/0 0/0 .sdata2 @26 */ -SECTION_SDATA2 static u8 lit_26[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -static void Copy6Floats(register f32* dst, register const f32* src) { - register f32 ps_0, ps_1, ps_2; - - // clang-format off + // clang-format off asm { psq_l ps_0, 0(src), 0, 0 psq_l ps_1, 8(src), 0, 0 @@ -51,13 +15,13 @@ static void Copy6Floats(register f32* dst, register const f32* src) { psq_st ps_1, 8(dst), 0, 0 psq_st ps_2, 16(dst), 0, 0 } - // clang-format on + // clang-format on } -static void WriteProjPS(register volatile void* dst, register const f32* src) { - register f32 ps_0, ps_1, ps_2; +static void WriteProjPS(const register f32 src[6], register volatile void* dst) { + register f32 ps_0, ps_1, ps_2; - // clang-format off + // clang-format off asm { psq_l ps_0, 0(src), 0, 0 psq_l ps_1, 8(src), 0, 0 @@ -66,128 +30,94 @@ static void WriteProjPS(register volatile void* dst, register const f32* src) { psq_st ps_1, 0(dst), 0, 0 psq_st ps_2, 0(dst), 0, 0 } - // clang-format on + // clang-format on } -/* 80456654-80456658 004C54 0004+00 2/2 0/0 0/0 .sdata2 @27 */ -SECTION_SDATA2 static f32 lit_27 = 1.0f; - -/* 80456658-8045665C 004C58 0004+00 2/2 0/0 0/0 .sdata2 @28 */ -SECTION_SDATA2 static f32 lit_28 = 0.5f; - /* 8035FF60-803600D4 35A8A0 0174+00 0/0 1/1 0/0 .text GXProject */ -// regalloc -#ifdef NONMATCHING -void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, - f32* viewpoint, f32* screen_x, f32* screen_y, f32* screen_z) { - f32 fVar1; - f32 fVar6; - f32 fVar7; - f32 fVar8; - f32 fVar9; - f32 fVar2; - f32 fVar3; - fVar1 = (model_mtx[0][0] * model_x) + (model_mtx[0][1] * model_y) + (model_mtx[0][2] * model_z) + model_mtx[0][3]; - fVar6 = (model_mtx[1][0] * model_x) + (model_mtx[1][1] * model_y) + (model_mtx[1][2] * model_z) + model_mtx[1][3]; - fVar7 = (model_mtx[2][0] * model_x) + (model_mtx[2][1] * model_y) + (model_mtx[2][2] * model_z) + model_mtx[2][3]; +void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, f32* viewpoint, + f32* screen_x, f32* screen_y, f32* screen_z) { + f32 sp10[3]; + f32 var_f30; + f32 var_f29; + f32 var_f28; + f32 var_f31; + + ASSERT(proj_mtx != NULL && viewpoint != NULL && screen_x != NULL && screen_y != NULL && + screen_z != NULL, + "GXGet*: invalid null pointer"); + + sp10[0] = (model_mtx[0][0] * model_x) + (model_mtx[0][1] * model_y) + + (model_mtx[0][2] * model_z) + model_mtx[0][3]; + sp10[1] = (model_mtx[1][0] * model_x) + (model_mtx[1][1] * model_y) + + (model_mtx[1][2] * model_z) + model_mtx[1][3]; + sp10[2] = (model_mtx[2][0] * model_x) + (model_mtx[2][1] * model_y) + + (model_mtx[2][2] * model_z) + model_mtx[2][3]; + if (proj_mtx[0] == 0.0f) { - fVar8 = fVar1 * proj_mtx[1] + fVar7 * proj_mtx[2]; - fVar3 = fVar6 * proj_mtx[3] + fVar7 * proj_mtx[4]; - fVar9 = proj_mtx[6] + fVar7 * proj_mtx[5]; - fVar2 = 1.0f / -fVar7; + var_f30 = (sp10[0] * proj_mtx[1]) + (sp10[2] * proj_mtx[2]); + var_f29 = (sp10[1] * proj_mtx[3]) + (sp10[2] * proj_mtx[4]); + var_f28 = proj_mtx[6] + (sp10[2] * proj_mtx[5]); + var_f31 = 1.0f / -sp10[2]; } else { - fVar8 = proj_mtx[2] + fVar1 * proj_mtx[1]; - fVar3 = proj_mtx[4] + fVar6 * proj_mtx[3]; - fVar9 = proj_mtx[6] + fVar7 * proj_mtx[5]; - fVar2 = 1.0f; + var_f30 = proj_mtx[2] + (sp10[0] * proj_mtx[1]); + var_f29 = proj_mtx[4] + (sp10[1] * proj_mtx[3]); + var_f28 = proj_mtx[6] + (sp10[2] * proj_mtx[5]); + var_f31 = 1.0f; } - *screen_x = fVar2 * viewpoint[2] * fVar8 / 2.0f + viewpoint[2] / 2.0f + viewpoint[0]; - *screen_y = fVar2 * viewpoint[3] * -fVar3 / 2.0f + viewpoint[3] / 2.0f + viewpoint[1]; - *screen_z = fVar2 * (viewpoint[5] - viewpoint[4]) * fVar9 + viewpoint[5]; + + *screen_x = (viewpoint[2] / 2) + (viewpoint[0] + (var_f31 * (var_f30 * viewpoint[2] / 2))); + *screen_y = (viewpoint[3] / 2) + (viewpoint[1] + (var_f31 * (-var_f29 * viewpoint[3] / 2))); + *screen_z = viewpoint[5] + (var_f31 * (var_f28 * (viewpoint[5] - viewpoint[4]))); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, - f32* viewpoint, f32* screen_x, f32* screen_y, f32* screen_z) { - nofralloc -#include "asm/dolphin/gx/GXTransform/GXProject.s" + +void __GXSetProjection(void) { + GX_XF_LOAD_REGS(6, GX_XF_REG_PROJECTIONA); + WriteProjPS(__GXData->projMtx, (volatile void*)GXFIFO_ADDR); + GX_WRITE_U32(__GXData->projType); } -#pragma pop -#endif /* 803600D4-80360178 35AA14 00A4+00 0/0 15/15 2/2 .text GXSetProjection */ -void GXSetProjection(Mtx44 mtx, GXProjectionType type) { +void GXSetProjection(const Mtx44 proj, GXProjectionType type) { volatile void* fifo; - __GXData->projectionType = type; - __GXData->field_0x4dc = mtx[0][0]; - __GXData->field_0x4e4 = mtx[1][1]; - __GXData->field_0x4ec = mtx[2][2]; - __GXData->field_0x4f0 = mtx[2][3]; + __GXData->projType = type; + + __GXData->projMtx[0] = proj[0][0]; + __GXData->projMtx[2] = proj[1][1]; + __GXData->projMtx[4] = proj[2][2]; + __GXData->projMtx[5] = proj[2][3]; if (type == GX_ORTHOGRAPHIC) { - __GXData->field_0x4e0 = mtx[0][3]; - __GXData->field_0x4e8 = mtx[1][3]; + __GXData->projMtx[1] = proj[0][3]; + __GXData->projMtx[3] = proj[1][3]; } else { - __GXData->field_0x4e0 = mtx[0][2]; - __GXData->field_0x4e8 = mtx[1][2]; + __GXData->projMtx[1] = proj[0][2]; + __GXData->projMtx[3] = proj[1][2]; } - - GXFIFO.u8 = 0x10; - GXFIFO.u32 = 0x61020; - fifo = &GXFIFO; - WriteProjPS(fifo, &__GXData->field_0x4dc); - GXFIFO.u32 = __GXData->projectionType; - __GXData->bpSentNot = 1; + + __GXSetProjection(); + + __GXData->bpSentNot = GX_TRUE; } /* 80360178-80360204 35AAB8 008C+00 0/0 1/1 1/1 .text GXSetProjectionv */ -// Matches with literals -#ifdef NONMATCHING -void GXSetProjectionv(f32* p) { - __GXData->projectionType = (*p == 0.0f) ? GX_PERSPECTIVE : GX_ORTHOGRAPHIC; - p++; - Copy6Floats(&__GXData->field_0x4dc, p); - GXFIFO.u8 = 0x10; - GXFIFO.u32 = 0x61020; - WriteProjPS(&GXFIFO, &__GXData->field_0x4dc); - GXFIFO.u32 = __GXData->projectionType; - __GXData->bpSentNot = 1; +void GXSetProjectionv(f32* proj) { + __GXData->projType = proj[0] == 0.0f ? GX_PERSPECTIVE : GX_ORTHOGRAPHIC; + Copy6Floats(&proj[1], __GXData->projMtx); + + __GXSetProjection(); + __GXData->bpSentNot = GX_TRUE; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetProjectionv(f32* p) { - nofralloc -#include "asm/dolphin/gx/GXTransform/GXSetProjectionv.s" -} -#pragma pop -#endif /* 80360204-8036024C 35AB44 0048+00 0/0 1/1 1/1 .text GXGetProjectionv */ -// Matches with literals -#ifdef NONMATCHING -void GXGetProjectionv(f32* p) { - *p = (u32)__GXData->projectionType != GX_PERSPECTIVE ? 1.0f : 0.5f; - Copy6Floats(p + 1, &__GXData->field_0x4dc); +void GXGetProjectionv(f32* proj) { + *proj = (u32)__GXData->projType != GX_PERSPECTIVE ? 1.0f : 0.0f; + Copy6Floats(__GXData->projMtx, &proj[1]); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXGetProjectionv(f32* p) { - nofralloc -#include "asm/dolphin/gx/GXTransform/GXGetProjectionv.s" -} -#pragma pop -#endif static void WriteMTXPS4x3(register volatile void* dst, register const Mtx src) { - register f32 ps_0, ps_1, ps_2, ps_3, ps_4, ps_5; + register f32 ps_0, ps_1, ps_2, ps_3, ps_4, ps_5; - // clang-format off + // clang-format off asm { psq_l ps_0, 0(src), 0, 0 psq_l ps_1, 8(src), 0, 0 @@ -203,19 +133,19 @@ static void WriteMTXPS4x3(register volatile void* dst, register const Mtx src) { psq_st ps_4, 0(dst), 0, 0 psq_st ps_5, 0(dst), 0, 0 } - // clang-format on + // clang-format on } /* 8036024C-8036029C 35AB8C 0050+00 0/0 83/83 9/9 .text GXLoadPosMtxImm */ void GXLoadPosMtxImm(Mtx mtx, u32 id) { - GX_XF_LOAD_REGS(4 * 3 - 1, id * 4 + GX_XF_MEM_POSMTX); - WriteMTXPS4x3(&GXFIFO, mtx); + GX_XF_LOAD_REGS(4 * 3 - 1, id * 4 + GX_XF_MEM_POSMTX); + WriteMTXPS4x3(&GXWGFifo, mtx); } static void WriteMTXPS3x3(register volatile void* dst, register const Mtx src) { - register f32 ps_0, ps_1, ps_2, ps_3, ps_4, ps_5; + register f32 ps_0, ps_1, ps_2, ps_3, ps_4, ps_5; - // clang-format off + // clang-format off asm { psq_l ps_0, 0(src), 0, 0 lfs ps_1, 8(src) @@ -231,25 +161,25 @@ static void WriteMTXPS3x3(register volatile void* dst, register const Mtx src) { psq_st ps_4, 0(dst), 0, 0 stfs ps_5, 0(dst) } - // clang-format on + // clang-format on } /* 8036029C-803602EC 35ABDC 0050+00 0/0 11/11 7/7 .text GXLoadNrmMtxImm */ void GXLoadNrmMtxImm(Mtx mtx, u32 id) { GX_XF_LOAD_REGS(3 * 3 - 1, id * 3 + GX_XF_MEM_NRMMTX); - WriteMTXPS3x3(&GXFIFO, mtx); + WriteMTXPS3x3(&GXWGFifo, mtx); } /* 803602EC-80360320 35AC2C 0034+00 0/0 51/51 2/2 .text GXSetCurrentMtx */ void GXSetCurrentMtx(u32 id) { - GX_SET_REG(__GXData->matIdxA, id, GX_XF_MTXIDX0_GEOM_ST, GX_XF_MTXIDX0_GEOM_END); - __GXSetMatrixIndex(GX_VA_PNMTXIDX); + GX_SET_REG(__GXData->matIdxA, id, GX_XF_MTXIDX0_GEOM_ST, GX_XF_MTXIDX0_GEOM_END); + __GXSetMatrixIndex(GX_VA_PNMTXIDX); } -static void WriteMTXPS4x2(register volatile void* dst, register const Mtx src){ - register f32 ps_0, ps_1, ps_2, ps_3; +static void WriteMTXPS4x2(register volatile void* dst, register const Mtx src) { + register f32 ps_0, ps_1, ps_2, ps_3; - // clang-format off + // clang-format off asm { psq_l ps_0, 0(src), 0, 0 psq_l ps_1, 8(src), 0, 0 @@ -261,171 +191,143 @@ static void WriteMTXPS4x2(register volatile void* dst, register const Mtx src){ psq_st ps_2, 0(dst), 0, 0 psq_st ps_3, 0(dst), 0, 0 } - // clang-format on + // clang-format on } /* 80360320-803603D4 35AC60 00B4+00 0/0 15/15 0/0 .text GXLoadTexMtxImm */ void GXLoadTexMtxImm(const Mtx mtx, u32 id, GXTexMtxType type) { - u32 addr; - u32 num; - u32 reg; + u32 addr; + u32 num; + u32 reg; - // Matrix address in XF memory - addr = id >= GX_PTTEXMTX0 ? (id - GX_PTTEXMTX0) * 4 + GX_XF_MEM_DUALTEXMTX : id * 4 + (u64)GX_XF_MEM_POSMTX; + // Matrix address in XF memory + addr = id >= GX_PTTEXMTX0 ? (id - GX_PTTEXMTX0) * 4 + GX_XF_MEM_DUALTEXMTX : + id * 4 + (u64)GX_XF_MEM_POSMTX; - // Number of elements in matrix - num = type == GX_MTX2x4 ? (u64)(2 * 4) : 3 * 4; + // Number of elements in matrix + num = type == GX_MTX2x4 ? (u64)(2 * 4) : 3 * 4; - reg = addr | (num - 1) << 16; + reg = addr | (num - 1) << 16; - GX_XF_LOAD_REG_HDR(reg); + GX_XF_LOAD_REG_HDR(reg); - if (type == GX_MTX3x4) { - WriteMTXPS4x3(&GXFIFO, mtx); - } else { - WriteMTXPS4x2(&GXFIFO, mtx); - } + if (type == GX_MTX3x4) { + WriteMTXPS4x3(&GXWGFifo, mtx); + } else { + WriteMTXPS4x2(&GXWGFifo, mtx); + } } -/* ############################################################################################## */ -/* 8045665C-80456660 004C5C 0004+00 1/1 0/0 0/0 .sdata2 @201 */ -SECTION_SDATA2 static f32 lit_201 = 342.0f; - /* 803603D4-80360464 35AD14 0090+00 1/1 0/0 0/0 .text __GXSetViewport */ -// Matches with literals -#ifdef NONMATCHING void __GXSetViewport(void) { - f32 a, b, c, d, e, f; - f32 near, far; + f32 a, b, c, d, e, f; + f32 near, far; - a = __GXData->vpWd / 2; - b = -__GXData->vpHt / 2; - d = __GXData->vpLeft + (__GXData->vpWd / 2) + 342.0f; - e = __GXData->vpTop + (__GXData->vpHt / 2) + 342.0f; + a = __GXData->vpWd / 2; + b = -__GXData->vpHt / 2; + d = __GXData->vpLeft + (__GXData->vpWd / 2) + 342.0f; + e = __GXData->vpTop + (__GXData->vpHt / 2) + 342.0f; - near = __GXData->vpNearz * __GXData->zScale; - far = __GXData->vpFarz * __GXData->zScale; + near = __GXData->vpNearz * __GXData->zScale; + far = __GXData->vpFarz * __GXData->zScale; - c = far - near; - f = far + __GXData->zOffset; + c = far - near; + f = far + __GXData->zOffset; - GX_XF_LOAD_REGS(5, GX_XF_REG_SCALEX); - GX_WRITE_F32(a); - GX_WRITE_F32(b); - GX_WRITE_F32(c); - GX_WRITE_F32(d); - GX_WRITE_F32(e); - GX_WRITE_F32(f); + GX_XF_LOAD_REGS(5, GX_XF_REG_SCALEX); + GX_WRITE_F32(a); + GX_WRITE_F32(b); + GX_WRITE_F32(c); + GX_WRITE_F32(d); + GX_WRITE_F32(e); + GX_WRITE_F32(f); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetViewport(void) { - nofralloc -#include "asm/dolphin/gx/GXTransform/__GXSetViewport.s" -} -#pragma pop -#endif /* 80360464-803604AC 35ADA4 0048+00 0/0 10/10 1/1 .text GXSetViewport */ void GXSetViewport(f32 left, f32 top, f32 width, f32 height, f32 nearZ, f32 farZ) { - __GXData->vpLeft = left; - __GXData->vpTop = top; - __GXData->vpWd = width; - __GXData->vpHt = height; - __GXData->vpNearz = nearZ; - __GXData->vpFarz = farZ; - __GXSetViewport(); - __GXData->bpSentNot = GX_TRUE; + __GXData->vpLeft = left; + __GXData->vpTop = top; + __GXData->vpWd = width; + __GXData->vpHt = height; + __GXData->vpNearz = nearZ; + __GXData->vpFarz = farZ; + __GXSetViewport(); + __GXData->bpSentNot = GX_TRUE; } /* 803604AC-803604D0 35ADEC 0024+00 0/0 1/1 1/1 .text GXGetViewportv */ void GXGetViewportv(f32* p) { - Copy6Floats(p, &__GXData->vpLeft); + Copy6Floats(&__GXData->vpLeft, p); } /* 803604D0-80360548 35AE10 0078+00 0/0 11/11 4/4 .text GXSetScissor */ void GXSetScissor(u32 left, u32 top, u32 width, u32 height) { - u32 y1, x1, y2, x2; - u32 reg; + u32 y1, x1, y2, x2; + u32 reg; - y1 = top + 342; - x1 = left + 342; + y1 = top + 342; + x1 = left + 342; - GX_SET_REG(__GXData->suScis0, y1, GX_BP_SCISSORTL_TOP_ST, GX_BP_SCISSORTL_TOP_END); - GX_SET_REG(__GXData->suScis0, x1, GX_BP_SCISSORTL_LEFT_ST, GX_BP_SCISSORTL_LEFT_END); + GX_SET_REG(__GXData->suScis0, y1, GX_BP_SCISSORTL_TOP_ST, GX_BP_SCISSORTL_TOP_END); + GX_SET_REG(__GXData->suScis0, x1, GX_BP_SCISSORTL_LEFT_ST, GX_BP_SCISSORTL_LEFT_END); - y2 = y1 + height - 1; - x2 = (x1 + width) - 1; + y2 = y1 + height - 1; + x2 = (x1 + width) - 1; - GX_SET_REG(__GXData->suScis1, y2, GX_BP_SCISSORBR_BOT_ST, GX_BP_SCISSORBR_BOT_END); - GX_SET_REG(__GXData->suScis1, x2, GX_BP_SCISSORBR_RIGHT_ST, GX_BP_SCISSORBR_RIGHT_END); + GX_SET_REG(__GXData->suScis1, y2, GX_BP_SCISSORBR_BOT_ST, GX_BP_SCISSORBR_BOT_END); + GX_SET_REG(__GXData->suScis1, x2, GX_BP_SCISSORBR_RIGHT_ST, GX_BP_SCISSORBR_RIGHT_END); - GX_BP_LOAD_REG(__GXData->suScis0); - GX_BP_LOAD_REG(__GXData->suScis1); - __GXData->bpSentNot = FALSE; + GX_BP_LOAD_REG(__GXData->suScis0); + GX_BP_LOAD_REG(__GXData->suScis1); + __GXData->bpSentNot = FALSE; } /* 80360548-80360590 35AE88 0048+00 0/0 6/6 2/2 .text GXGetScissor */ -#ifdef NONMATCHING void GXGetScissor(u32* left, u32* top, u32* width, u32* height) { - u32 y1, x1, y2, x2; + u32 y1 = (__GXData->suScis0 & 0x0007FF) >> 0; + u32 x1 = (__GXData->suScis0 & 0x7FF000) >> 12; + u32 y2 = (__GXData->suScis1 & 0x0007FF) >> 0; + u32 x2 = (__GXData->suScis1 & 0x7FF000) >> 12; - x1 = GX_GET_REG(__GXData->suScis0, GX_BP_SCISSORTL_LEFT_ST, GX_BP_SCISSORTL_LEFT_END); - x2 = GX_GET_REG(__GXData->suScis1, GX_BP_SCISSORBR_RIGHT_ST, GX_BP_SCISSORBR_RIGHT_END); - y1 = GX_GET_REG(__GXData->suScis0, GX_BP_SCISSORTL_TOP_ST, GX_BP_SCISSORTL_TOP_END); - y2 = GX_GET_REG(__GXData->suScis1, GX_BP_SCISSORBR_BOT_ST, GX_BP_SCISSORBR_BOT_END); - - *left = x1 - 342; - *top = y1 - 342; - *width = x2 - x1 + 1; - *height = y2 - y1 + 1; + *left = x1 - 0x156; + *top = y1 - 0x156; + *width = (x2 - x1) + 1; + *height = (y2 - y1) + 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXGetScissor(u32* left, u32* top, u32* width, u32* height) { - nofralloc -#include "asm/dolphin/gx/GXTransform/GXGetScissor.s" -} -#pragma pop -#endif /* 80360590-803605D0 35AED0 0040+00 0/0 1/1 0/0 .text GXSetScissorBoxOffset */ void GXSetScissorBoxOffset(s32 x, s32 y) { - u32 cmd = 0; - u32 x1; - u32 y1; + u32 cmd = 0; + u32 x1; + u32 y1; - x1 = (u32)(x + 342) / 2; - y1 = (u32)(y + 342) / 2; - GX_SET_REG(cmd, x1, GX_BP_SCISSOROFS_OX_ST, GX_BP_SCISSOROFS_OX_END); - GX_SET_REG(cmd, y1, GX_BP_SCISSOROFS_OY_ST, GX_BP_SCISSOROFS_OY_END); + x1 = (u32)(x + 342) / 2; + y1 = (u32)(y + 342) / 2; + GX_SET_REG(cmd, x1, GX_BP_SCISSOROFS_OX_ST, GX_BP_SCISSOROFS_OX_END); + GX_SET_REG(cmd, y1, GX_BP_SCISSOROFS_OY_ST, GX_BP_SCISSOROFS_OY_END); - GX_SET_REG(cmd, GX_BP_REG_SCISSOROFFSET, 0, 7); + GX_SET_REG(cmd, GX_BP_REG_SCISSOROFFSET, 0, 7); - GX_BP_LOAD_REG(cmd); - __GXData->bpSentNot = GX_FALSE; + GX_BP_LOAD_REG(cmd); + __GXData->bpSentNot = GX_FALSE; } /* 803605D0-803605F8 35AF10 0028+00 0/0 27/27 2/2 .text GXSetClipMode */ void GXSetClipMode(GXClipMode mode) { - GX_XF_LOAD_REG(GX_XF_REG_CLIPDISABLE, mode); - __GXData->bpSentNot = GX_TRUE; + GX_XF_LOAD_REG(GX_XF_REG_CLIPDISABLE, mode); + __GXData->bpSentNot = GX_TRUE; } /* 803605F8-8036067C 35AF38 0084+00 1/1 1/1 0/0 .text __GXSetMatrixIndex */ void __GXSetMatrixIndex(GXAttr index) { - // Tex4 and after is stored in XF MatrixIndex1 - if (index < GX_VA_TEX4MTXIDX) { - GX_CP_LOAD_REG(GX_CP_REG_MTXIDXA, __GXData->matIdxA); - GX_XF_LOAD_REG(GX_XF_REG_MATRIXINDEX0, __GXData->matIdxA); - } else { - GX_CP_LOAD_REG(GX_CP_REG_MTXIDXB, __GXData->matIdxB); - GX_XF_LOAD_REG(GX_XF_REG_MATRIXINDEX1, __GXData->matIdxB); - } + // Tex4 and after is stored in XF MatrixIndex1 + if (index < GX_VA_TEX4MTXIDX) { + GX_CP_LOAD_REG(GX_CP_REG_MTXIDXA, __GXData->matIdxA); + GX_XF_LOAD_REG(GX_XF_REG_MATRIXINDEX0, __GXData->matIdxA); + } else { + GX_CP_LOAD_REG(GX_CP_REG_MTXIDXB, __GXData->matIdxB); + GX_XF_LOAD_REG(GX_XF_REG_MATRIXINDEX1, __GXData->matIdxB); + } - __GXData->bpSentNot = GX_TRUE; + __GXData->bpSentNot = GX_TRUE; } diff --git a/libs/dolphin/gx/Makefile b/libs/dolphin/gx/Makefile index b610a60e24..06caf09688 100644 --- a/libs/dolphin/gx/Makefile +++ b/libs/dolphin/gx/Makefile @@ -37,8 +37,16 @@ LIBGX_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/gx/GXPerf.o \ LIBGX_A_CFLAGS := \ - -O4,p \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ -inline auto \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ + -O4,p \ -lang=c \ $(BUILD_DIR)/libs/dolphin/gx/GXInit.o: LIBGX_A_CFLAGS += -opt nopeephole @@ -58,7 +66,7 @@ $(BUILD_DIR)/libs/dolphin/gx/%.o: libs/dolphin/gx/%.c $(BUILD_DIR)/libs/dolphin/ @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(DOLPHIN_LIB_CC) $(CFLAGS) $(LIBGX_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c + @$(DOLPHIN_LIB_CC) $(LIBGX_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c @if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi ifndef DISABLE_DEPS diff --git a/libs/dolphin/mtx/mtx.c b/libs/dolphin/mtx/mtx.c index 79ef1cb818..fae09502ca 100644 --- a/libs/dolphin/mtx/mtx.c +++ b/libs/dolphin/mtx/mtx.c @@ -1,532 +1,618 @@ -// -// Generated By: dol2asm -// Translation Unit: mtx -// - -#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx.h" #include "math.h" -#include "dol2asm.h" -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456508-8045650C 004B08 0004+00 6/6 0/0 0/0 .sdata2 @96 */ -SECTION_SDATA2 static f32 lit_96 = 1.0f; - -/* 8045650C-80456510 004B0C 0004+00 6/6 0/0 0/0 .sdata2 @97 */ -SECTION_SDATA2 static u8 lit_97[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +void C_MTXIdentity(Mtx mtx) { + mtx[0][0] = 1.0f; + mtx[0][1] = 0.0f; + mtx[0][2] = 0.0f; + mtx[1][0] = 0.0f; + mtx[1][1] = 1.0f; + mtx[1][2] = 0.0f; + mtx[2][0] = 0.0f; + mtx[2][1] = 0.0f; + mtx[2][2] = 1.0f; +} /* 80346484-803464B0 340DC4 002C+00 0/0 27/27 13/13 .text PSMTXIdentity */ -asm void PSMTXIdentity(register Mtx m) { - // clang-format off - nofralloc +void PSMTXIdentity(register Mtx m) { + register f32 zero_c = 0.0f; + register f32 one_c = 1.0f; + register f32 c_01; + register f32 c_10; - lfs f0, lit_97(r2) - lfs f1, lit_96(r2) - psq_st f0, 8(m), 0, 0 - ps_merge01 f2, f0, f1 - psq_st f0, 24(m), 0, 0 - ps_merge10 f1, f1, f0 - psq_st f0, 32(m), 0, 0 - psq_st f2, 16(m), 0, 0 - psq_st f1, 0(m), 0, 0 - psq_st f1, 40(m), 0, 0 - blr - // clang-format on +#ifdef __MWERKS__ // clang-format off + asm { + psq_st zero_c, 8(m), 0, 0 + ps_merge01 c_01, zero_c, one_c + psq_st zero_c, 24(m), 0, 0 + ps_merge10 c_10, one_c, zero_c + psq_st zero_c, 32(m), 0, 0 + psq_st c_01, 16(m), 0, 0 + psq_st c_10, 0(m), 0, 0 + psq_st c_10, 40(m), 0, 0 + } +#endif // clang-format on } /* 803464B0-803464E4 340DF0 0034+00 0/0 119/119 1436/1436 .text PSMTXCopy */ -asm void PSMTXCopy(register const Mtx src, register Mtx dst) { - // clang-format off - nofralloc +asm void PSMTXCopy(const register Mtx src, register Mtx dst) { +#ifdef __MWERKS__ // clang-format off + nofralloc - psq_l f0, 0(src), 0, 0 - psq_st f0, 0(dst), 0, 0 - psq_l f1, 8(src), 0, 0 - psq_st f1, 8(dst), 0, 0 - psq_l f2, 16(src), 0, 0 - psq_st f2, 16(dst), 0, 0 - psq_l f3, 24(src), 0, 0 - psq_st f3, 24(dst), 0, 0 - psq_l f4, 32(src), 0, 0 - psq_st f4, 32(dst), 0, 0 - psq_l f5, 40(src), 0, 0 - psq_st f5, 40(dst), 0, 0 - blr - // clang-format on + psq_l fp0, 0(src), 0, 0 + psq_st fp0, 0(dst), 0, 0 + psq_l fp1, 8(src), 0, 0 + psq_st fp1, 8(dst), 0, 0 + psq_l fp2, 16(src), 0, 0 + psq_st fp2, 16(dst), 0, 0 + psq_l fp3, 24(src), 0, 0 + psq_st fp3, 24(dst), 0, 0 + psq_l fp4, 32(src), 0, 0 + psq_st fp4, 32(dst), 0, 0 + psq_l fp5, 40(src), 0, 0 + psq_st fp5, 40(dst), 0, 0 + + blr +#endif // clang-format on } -/* ############################################################################################## */ /* 804509D0-804509D8 000450 0008+00 1/1 0/0 0/0 .sdata Unit01 */ -static f32 Unit01[2] = { - 0.0f, 1.0f, -}; +static f32 Unit01[2] = {0.0f, 1.0f}; /* 803464E4-803465B0 340E24 00CC+00 0/0 109/109 30/30 .text PSMTXConcat */ -asm void PSMTXConcat(register const Mtx a, register const Mtx b, register Mtx ab) { - // clang-format off - nofralloc +asm void PSMTXConcat(const register Mtx mA, const register Mtx mB, register Mtx mAB) { +#ifdef __MWERKS__ // clang-format off + nofralloc - stwu r1, -0x40(r1) - psq_l f0, 0(a), 0, 0 - stfd f14, 8(r1) - psq_l f6, 0(b), 0, 0 - lis r6, Unit01@ha - psq_l f7, 8(b), 0, 0 - stfd f15, 0x10(r1) - addi r6, r6, Unit01@l - stfd f31, 0x28(r1) - psq_l f8, 16(b), 0, 0 - ps_muls0 f12, f6, f0 - psq_l f2, 16(a), 0, 0 - ps_muls0 f13, f7, f0 - psq_l f31, 0(r6), 0, 0 - ps_muls0 f14, f6, f2 - psq_l f9, 24(b), 0, 0 - ps_muls0 f15, f7, f2 - psq_l f1, 8(a), 0, 0 - ps_madds1 f12, f8, f0, f12 - psq_l f3, 24(a), 0, 0 - ps_madds1 f14, f8, f2, f14 - psq_l f10, 32(b), 0, 0 - ps_madds1 f13, f9, f0, f13 - psq_l f11, 40(b), 0, 0 - ps_madds1 f15, f9, f2, f15 - psq_l f4, 32(a), 0, 0 - psq_l f5, 40(a), 0, 0 - ps_madds0 f12, f10, f1, f12 - ps_madds0 f13, f11, f1, f13 - ps_madds0 f14, f10, f3, f14 - ps_madds0 f15, f11, f3, f15 - psq_st f12, 0(ab), 0, 0 - ps_muls0 f2, f6, f4 - ps_madds1 f13, f31, f1, f13 - ps_muls0 f0, f7, f4 - psq_st f14, 16(ab), 0, 0 - ps_madds1 f15, f31, f3, f15 - psq_st f13, 8(ab), 0, 0 - ps_madds1 f2, f8, f4, f2 - ps_madds1 f0, f9, f4, f0 - ps_madds0 f2, f10, f5, f2 - lfd f14, 8(r1) - psq_st f15, 24(ab), 0, 0 - ps_madds0 f0, f11, f5, f0 - psq_st f2, 32(ab), 0, 0 - ps_madds1 f0, f31, f5, f0 - lfd f15, 0x10(r1) - psq_st f0, 40(ab), 0, 0 - lfd f31, 0x28(r1) - addi r1, r1, 0x40 - blr - // clang-format on +#define FP0 fp0 +#define FP1 fp1 +#define FP2 fp2 +#define FP3 fp3 +#define FP4 fp4 +#define FP5 fp5 +#define FP6 fp6 +#define FP7 fp7 +#define FP8 fp8 +#define FP9 fp9 +#define FP10 fp10 +#define FP11 fp11 +#define FP12 fp12 +#define FP13 fp13 +#define FP14 fp14 +#define FP15 fp15 +#define FP31 fp31 + stwu r1, -64(r1) + psq_l FP0, 0(mA), 0, 0 + stfd fp14, 8(r1) + psq_l FP6, 0(mB), 0, 0 + addis r6, 0, Unit01@ha + psq_l FP7, 8(mB), 0, 0 + stfd fp15, 16(r1) + addi r6, r6, Unit01@l + stfd fp31, 40(r1) + psq_l FP8, 16(mB), 0, 0 + ps_muls0 FP12, FP6, FP0 + psq_l FP2, 16(mA), 0, 0 + ps_muls0 FP13, FP7, FP0 + psq_l FP31, 0(r6), 0, 0 + ps_muls0 FP14, FP6, FP2 + psq_l FP9, 24(mB), 0, 0 + ps_muls0 FP15, FP7, FP2 + psq_l FP1, 8(mA), 0, 0 + ps_madds1 FP12, FP8, FP0, FP12 + psq_l FP3, 24(mA), 0, 0 + ps_madds1 FP14, FP8, FP2, FP14 + psq_l FP10, 32(mB), 0, 0 + ps_madds1 FP13, FP9, FP0, FP13 + psq_l FP11, 40(mB), 0, 0 + ps_madds1 FP15, FP9, FP2, FP15 + psq_l FP4, 32(mA), 0, 0 + psq_l FP5, 40(mA), 0, 0 + ps_madds0 FP12, FP10, FP1, FP12 + ps_madds0 FP13, FP11, FP1, FP13 + ps_madds0 FP14, FP10, FP3, FP14 + ps_madds0 FP15, FP11, FP3, FP15 + psq_st FP12, 0(mAB), 0, 0 + + ps_muls0 FP2, FP6, FP4 + ps_madds1 FP13, FP31, FP1, FP13 + ps_muls0 FP0, FP7, FP4 + psq_st FP14, 16(mAB), 0, 0 + ps_madds1 FP15, FP31, FP3, FP15 + + psq_st FP13, 8(mAB), 0, 0 + + ps_madds1 FP2, FP8, FP4, FP2 + ps_madds1 FP0, FP9, FP4, FP0 + ps_madds0 FP2, FP10, FP5, FP2 + lfd fp14, 8(r1) + psq_st FP15, 24(mAB), 0, 0 + ps_madds0 FP0, FP11, FP5, FP0 + psq_st FP2, 32(mAB), 0, 0 + ps_madds1 FP0, FP31, FP5, FP0 + lfd fp15, 16(r1) + psq_st FP0, 40(mAB), 0, 0 + + lfd fp31, 40(r1) + addi r1, r1, 64 + + blr + +#undef FP0 +#undef FP1 +#undef FP2 +#undef FP3 +#undef FP4 +#undef FP5 +#undef FP6 +#undef FP7 +#undef FP8 +#undef FP9 +#undef FP10 +#undef FP11 +#undef FP12 +#undef FP13 +#undef FP14 +#undef FP15 +#undef FP31 +#endif // clang-format on } /* 803465B0-803466A8 340EF0 00F8+00 0/0 43/43 39/39 .text PSMTXInverse */ -asm u32 PSMTXInverse(register const Mtx src, register Mtx inv) { - // clang-format off - nofralloc - - psq_l f0, 0(src), 1, 0 - psq_l f1, 4(src), 0, 0 - psq_l f2, 16(src), 1, 0 - ps_merge10 f6, f1, f0 - psq_l f3, 20(src), 0, 0 - psq_l f4, 32(src), 1, 0 - ps_merge10 f7, f3, f2 - psq_l f5, 36(src), 0, 0 - ps_mul f11, f3, f6 - ps_mul f13, f5, f7 - ps_merge10 f8, f5, f4 - ps_msub f11, f1, f7, f11 - ps_mul f12, f1, f8 - ps_msub f13, f3, f8, f13 - ps_mul f10, f3, f4 - ps_msub f12, f5, f6, f12 - ps_mul f9, f0, f5 - ps_mul f8, f1, f2 - ps_sub f6, f6, f6 - ps_msub f10, f2, f5, f10 - ps_mul f7, f0, f13 - ps_msub f9, f1, f4, f9 - ps_madd f7, f2, f12, f7 - ps_msub f8, f0, f3, f8 - ps_madd f7, f4, f11, f7 - ps_cmpo0 cr0, f7, f6 - bne lbl_80346624 - - li r3, 0 - blr - -lbl_80346624: - fres f0, f7 - ps_add f6, f0, f0 - ps_mul f5, f0, f0 - ps_nmsub f0, f7, f5, f6 - lfs f1, 0xc(src) - ps_muls0 f13, f13, f0 - lfs f2, 0x1c(src) - ps_muls0 f12, f12, f0 - lfs f3, 0x2c(src) - ps_muls0 f11, f11, f0 - ps_merge00 f5, f13, f12 - ps_muls0 f10, f10, f0 - ps_merge11 f4, f13, f12 - ps_muls0 f9, f9, f0 - psq_st f5, 0(inv), 0, 0 - ps_mul f6, f13, f1 - psq_st f4, 16(inv), 0, 0 - ps_muls0 f8, f8, f0 - ps_madd f6, f12, f2, f6 - psq_st f10, 32(inv), 1, 0 - ps_nmadd f6, f11, f3, f6 - psq_st f9, 36(inv), 1, 0 - ps_mul f7, f10, f1 - ps_merge00 f5, f11, f6 - psq_st f8, 40(inv), 1, 0 - ps_merge11 f4, f11, f6 - psq_st f5, 8(inv), 0, 0 - ps_madd f7, f9, f2, f7 - psq_st f4, 24(inv), 0, 0 - ps_nmadd f7, f8, f3, f7 - li r3, 1 - psq_st f7, 44(inv), 1, 0 - blr - // clang-format on +asm u32 PSMTXInverse(const register Mtx src, register Mtx inv) { +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l fp0, 0(src), 1, 0 + psq_l fp1, 4(src), 0, 0 + psq_l fp2, 16(src), 1, 0 + ps_merge10 fp6, fp1, fp0 + psq_l fp3, 20(src), 0, 0 + psq_l fp4, 32(src), 1, 0 + ps_merge10 fp7, fp3, fp2 + psq_l fp5, 36(src), 0, 0 + ps_mul fp11, fp3, fp6 + ps_mul fp13, fp5, fp7 + ps_merge10 fp8, fp5, fp4 + ps_msub fp11, fp1, fp7, fp11 + ps_mul fp12, fp1, fp8 + ps_msub fp13, fp3, fp8, fp13 + ps_mul fp10, fp3, fp4 + ps_msub fp12, fp5, fp6, fp12 + ps_mul fp9, fp0, fp5 + ps_mul fp8, fp1, fp2 + ps_sub fp6, fp6, fp6 + ps_msub fp10, fp2, fp5, fp10 + ps_mul fp7, fp0, fp13 + ps_msub fp9, fp1, fp4, fp9 + ps_madd fp7, fp2, fp12, fp7 + ps_msub fp8, fp0, fp3, fp8 + ps_madd fp7, fp4, fp11, fp7 + ps_cmpo0 cr0, fp7, fp6 + bne _regular + addi r3, 0, 0 + blr + _regular: + fres fp0, fp7 + ps_add fp6, fp0, fp0 + ps_mul fp5, fp0, fp0 + ps_nmsub fp0, fp7, fp5, fp6 + lfs fp1, 12(src) + ps_muls0 fp13, fp13, fp0 + lfs fp2, 28(src) + ps_muls0 fp12, fp12, fp0 + lfs fp3, 44(src) + ps_muls0 fp11, fp11, fp0 + ps_merge00 fp5, fp13, fp12 + ps_muls0 fp10, fp10, fp0 + ps_merge11 fp4, fp13, fp12 + ps_muls0 fp9, fp9, fp0 + psq_st fp5, 0(inv), 0, 0 + ps_mul fp6, fp13, fp1 + psq_st fp4, 16(inv), 0, 0 + ps_muls0 fp8, fp8, fp0 + ps_madd fp6, fp12, fp2, fp6 + psq_st fp10, 32(inv), 1, 0 + ps_nmadd fp6, fp11, fp3, fp6 + psq_st fp9, 36(inv), 1, 0 + ps_mul fp7, fp10, fp1 + ps_merge00 fp5, fp11, fp6 + psq_st fp8, 40(inv), 1, 0 + ps_merge11 fp4, fp11, fp6 + psq_st fp5, 8(inv), 0, 0 + ps_madd fp7, fp9, fp2, fp7 + psq_st fp4, 24(inv), 0, 0 + ps_nmadd fp7, fp8, fp3, fp7 + addi r3, 0, 1 + psq_st fp7, 44(inv), 1, 0 + blr +#endif // clang-format on } /* 803466A8-80346718 340FE8 0070+00 0/0 17/17 0/0 .text PSMTXRotRad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXRotRad(Mtx m, u8 axis, f32 rad) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXRotRad.s" +void PSMTXRotRad(Mtx m, char axis, f32 rad) { + f32 sinA, cosA; + sinA = sinf(rad); + cosA = cosf(rad); + PSMTXRotTrig(m, axis, sinA, cosA); } -#pragma pop /* 80346718-803467C8 341058 00B0+00 1/1 0/0 0/0 .text PSMTXRotTrig */ -asm void PSMTXRotTrig(register Mtx m, u8 axis, f32 sin, f32 cos) { - // clang-format off - nofralloc +void PSMTXRotTrig(register Mtx m, register char axis, register f32 sinA, register f32 cosA) { + register f32 fc0, fc1, nsinA; + register f32 fw0, fw1, fw2, fw3; - frsp f5, f1 - frsp f4, f2 - lfs f0, lit_97(r2) - lfs f1, lit_96(r2) - ori r0, r4, 0x20 - ps_neg f2, f5 - cmplwi r0, 0x78 - beq lbl_8034674C - cmplwi r0, 0x79 - beq lbl_80346774 - cmplwi r0, 0x7a - beq lbl_803467A0 - b lbl_803467C4 +#ifdef __MWERKS__ // clang-format off + asm { + frsp sinA, sinA + frsp cosA, cosA + } +#endif // clang-format on -lbl_8034674C: - psq_st f1, 0(m), 1, 0 - psq_st f0, 4(m), 0, 0 - ps_merge00 f3, f5, f4 - psq_st f0, 12(m), 0, 0 - ps_merge00 f1, f4, f2 - psq_st f0, 28(m), 0, 0 - psq_st f0, 44(m), 1, 0 - psq_st f3, 36(m), 0, 0 - psq_st f1, 20(m), 0, 0 - b lbl_803467C4 + fc0 = 0.0f; + fc1 = 1.0f; -lbl_80346774: - ps_merge00 f3, f4, f0 - ps_merge00 f1, f0, f1 - psq_st f0, 24(m), 0, 0 - psq_st f3, 0(m), 0, 0 - ps_merge00 f2, f2, f0 - ps_merge00 f0, f5, f0 - psq_st f3, 40(m), 0, 0 - psq_st f1, 16(m), 0, 0 - psq_st f0, 8(m), 0, 0 - psq_st f2, 32(m), 0, 0 - b lbl_803467C4 +#ifdef __MWERKS__ // clang-format off + asm { + ori axis, axis, 0x20 + ps_neg nsinA, sinA + cmplwi axis, 'x' + beq _case_x + cmplwi axis, 'y' + beq _case_y + cmplwi axis, 'z' + beq _case_z + b _end -lbl_803467A0: - psq_st f0, 8(m), 0, 0 - ps_merge00 f3, f5, f4 - ps_merge00 f2, f4, f2 - psq_st f0, 24(m), 0, 0 - psq_st f0, 32(m), 0, 0 - ps_merge00 f1, f1, f0 - psq_st f3, 16(m), 0, 0 - psq_st f2, 0(m), 0, 0 - psq_st f1, 40(m), 0, 0 + _case_x: + psq_st fc1, 0(m), 1, 0 + psq_st fc0, 4(m), 0, 0 + ps_merge00 fw0, sinA, cosA + psq_st fc0, 12(m), 0, 0 + ps_merge00 fw1, cosA, nsinA + psq_st fc0, 28(m), 0, 0 + psq_st fc0, 44(m), 1, 0 + psq_st fw0, 36(m), 0, 0 + psq_st fw1, 20(m), 0, 0 + b _end; -lbl_803467C4: - blr - // clang-format on + _case_y: + ps_merge00 fw0, cosA, fc0 + ps_merge00 fw1, fc0, fc1 + psq_st fc0, 24(m), 0, 0 + psq_st fw0, 0(m), 0, 0 + ps_merge00 fw2, nsinA, fc0 + ps_merge00 fw3, sinA, fc0 + psq_st fw0, 40(m), 0, 0; + psq_st fw1, 16(m), 0, 0; + psq_st fw3, 8(m), 0, 0; + psq_st fw2, 32(m), 0, 0; + b _end; + + _case_z: + psq_st fc0, 8(m), 0, 0 + ps_merge00 fw0, sinA, cosA + ps_merge00 fw2, cosA, nsinA + psq_st fc0, 24(m), 0, 0 + psq_st fc0, 32(m), 0, 0 + ps_merge00 fw1, fc1, fc0 + psq_st fw0, 16(m), 0, 0 + psq_st fw2, 0(m), 0, 0 + psq_st fw1, 40(m), 0, 0 + + _end: + + } +#endif // clang-format on } -/* ############################################################################################## */ -/* 80456510-80456514 004B10 0004+00 2/2 0/0 0/0 .sdata2 @190 */ -SECTION_SDATA2 static f32 lit_190 = 0.5f; - -/* 80456514-80456518 004B14 0004+00 1/1 0/0 0/0 .sdata2 @191 */ -SECTION_SDATA2 static f32 lit_191 = 3.0f; - /* 803467C8-80346878 341108 00B0+00 1/1 0/0 0/0 .text __PSMTXRotAxisRadInternal */ -asm f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4) { - // clang-format off - nofralloc +static void __PSMTXRotAxisRadInternal(register Mtx m, const register Vec* axis, register f32 sT, + register f32 cT) { + register f32 tT, fc0; + register f32 tmp0, tmp1, tmp2, tmp3, tmp4; + register f32 tmp5, tmp6, tmp7, tmp8, tmp9; - lfs f10, lit_190(r2) - lfs f9, lit_191(r2) - frsp f11, f2 - psq_l f2, 0(r4), 0, 0 - frsp f12, f1 - lfs f3, 8(r4) - ps_mul f4, f2, f2 - fadds f8, f10, f10 - ps_madd f5, f3, f3, f4 - fsubs f1, f10, f10 - ps_sum0 f6, f5, f3, f4 - fsubs f0, f8, f11 - frsqrte f7, f6 - fmuls f4, f7, f7 - fmuls f5, f7, f10 - fnmsubs f4, f4, f6, f9 - fmuls f7, f4, f5 - ps_merge00 f11, f11, f11 - ps_muls0 f2, f2, f7 - ps_muls0 f3, f3, f7 - ps_muls0 f6, f2, f0 - ps_muls0 f10, f2, f12 - ps_muls0 f7, f3, f0 - ps_muls1 f5, f6, f2 - ps_muls0 f4, f6, f2 - ps_muls0 f6, f6, f3 - fnmsubs f0, f3, f12, f5 - fmadds f8, f3, f12, f5 - ps_neg f2, f10 - ps_sum0 f9, f6, f1, f10 - ps_sum0 f4, f4, f0, f11 - ps_sum1 f5, f11, f8, f5 - ps_sum0 f0, f2, f1, f6 - psq_st f9, 8(r3), 0, 0 - ps_sum0 f2, f6, f6, f2 - psq_st f4, 0(r3), 0, 0 - ps_muls0 f7, f7, f3 - psq_st f5, 16(r3), 0, 0 - ps_sum1 f6, f10, f2, f6 - psq_st f0, 24(r3), 0, 0 - ps_sum0 f7, f7, f1, f11 - psq_st f6, 32(r3), 0, 0 - psq_st f7, 40(r3), 0, 0 - blr - // clang-format on + tmp9 = 0.5f; + tmp8 = 3.0f; + +#ifdef __MWERKS__ // clang-format off + asm { + frsp cT, cT + psq_l tmp0, 0(axis), 0, 0 + frsp sT, sT + lfs tmp1, 8(axis) + ps_mul tmp2, tmp0, tmp0 + fadds tmp7, tmp9, tmp9 + ps_madd tmp3, tmp1, tmp1, tmp2 + fsubs fc0, tmp9, tmp9 + ps_sum0 tmp4, tmp3, tmp1, tmp2 + fsubs tT, tmp7, cT + frsqrte tmp5, tmp4 + fmuls tmp2, tmp5, tmp5 + fmuls tmp3, tmp5, tmp9 + fnmsubs tmp2, tmp2, tmp4, tmp8 + fmuls tmp5, tmp2, tmp3 + ps_merge00 cT, cT, cT + ps_muls0 tmp0, tmp0, tmp5 + ps_muls0 tmp1, tmp1, tmp5 + ps_muls0 tmp4, tmp0, tT + ps_muls0 tmp9, tmp0, sT + ps_muls0 tmp5, tmp1, tT + ps_muls1 tmp3, tmp4, tmp0 + ps_muls0 tmp2, tmp4, tmp0 + ps_muls0 tmp4, tmp4, tmp1 + fnmsubs tmp6, tmp1, sT, tmp3 + fmadds tmp7, tmp1, sT, tmp3 + ps_neg tmp0, tmp9 + ps_sum0 tmp8, tmp4, fc0, tmp9 + ps_sum0 tmp2, tmp2, tmp6, cT + ps_sum1 tmp3, cT, tmp7, tmp3 + ps_sum0 tmp6, tmp0, fc0 ,tmp4 + psq_st tmp8, 8(m), 0, 0 + ps_sum0 tmp0, tmp4, tmp4, tmp0 + psq_st tmp2, 0(m), 0, 0 + ps_muls0 tmp5, tmp5, tmp1 + psq_st tmp3, 16(m), 0, 0 + ps_sum1 tmp4, tmp9, tmp0, tmp4 + psq_st tmp6, 24(m), 0, 0 + ps_sum0 tmp5, tmp5, fc0, cT + psq_st tmp4, 32(m), 0, 0 + psq_st tmp5, 40(m), 0, 0 + } +#endif // clang-format on } /* 80346878-803468E8 3411B8 0070+00 0/0 6/6 8/8 .text PSMTXRotAxisRad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s" +void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { + f32 sinT, cosT; + + sinT = sinf(rad); + cosT = cosf(rad); + + __PSMTXRotAxisRadInternal(m, axis, sinT, cosT); } -#pragma pop /* 803468E8-8034691C 341228 0034+00 0/0 38/38 471/471 .text PSMTXTrans */ -asm void PSMTXTrans(register Mtx m, f32 x, f32 y, f32 z) { - // clang-format off - nofralloc +void PSMTXTrans(register Mtx m, register f32 xT, register f32 yT, register f32 zT) { + register f32 c0 = 0.0f; + register f32 c1 = 1.0f; - lfs f0, lit_97(r2) - lfs f4, lit_96(r2) - stfs f1, 0xc(m) - stfs f2, 0x1c(m) - psq_st f0, 4(m), 0, 0 - psq_st f0, 32(m), 0, 0 - stfs f0, 0x10(m) - stfs f4, 0x14(m) - stfs f0, 0x18(m) - stfs f4, 0x28(m) - stfs f3, 0x2c(m) - stfs f4, 0(m) - blr - // clang-format on +#ifdef __MWERKS__ // clang-format off + asm { + stfs xT, 12(m) + stfs yT, 28(m) + psq_st c0, 4(m), 0, 0 + psq_st c0, 32(m), 0, 0 + stfs c0, 16(m) + stfs c1, 20(m) + stfs c0, 24(m) + stfs c1, 40(m) + stfs zT, 44(m) + stfs c1, 0(m) + } +#endif // clang-format on } /* 8034691C-80346968 34125C 004C+00 0/0 3/3 0/0 .text PSMTXTransApply */ -asm void PSMTXTransApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { - // clang-format off - nofralloc - - psq_l f4, 0(src), 0, 0 - frsp f1, f1 - psq_l f5, 8(src), 0, 0 - frsp f2, f2 - psq_l f7, 24(src), 0, 0 - frsp f3, f3 - psq_l f8, 40(src), 0, 0 - psq_st f4, 0(dst), 0, 0 - ps_sum1 f5, f1, f5, f5 - psq_l f6, 16(src), 0, 0 - psq_st f5, 8(dst), 0, 0 - ps_sum1 f7, f2, f7, f7 - psq_l f9, 32(src), 0, 0 - psq_st f6, 16(dst), 0, 0 - ps_sum1 f8, f3, f8, f8 - psq_st f7, 24(dst), 0, 0 - psq_st f9, 32(dst), 0, 0 - psq_st f8, 40(dst), 0, 0 - blr - // clang-format on +asm void PSMTXTransApply(const register Mtx src, register Mtx dst, register f32 xT, register f32 yT, + register f32 zT) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp4, 0(src), 0, 0; + frsp xT, xT; + psq_l fp5, 8(src), 0, 0; + frsp yT, yT; + psq_l fp7, 24(src), 0, 0; + frsp zT, zT; + psq_l fp8, 40(src), 0, 0; + psq_st fp4, 0(dst), 0, 0; + ps_sum1 fp5, xT, fp5, fp5; + psq_l fp6, 16(src), 0, 0; + psq_st fp5, 8(dst), 0, 0; + ps_sum1 fp7, yT, fp7, fp7; + psq_l fp9, 32(src), 0, 0; + psq_st fp6, 16(dst), 0, 0; + ps_sum1 fp8, zT, fp8, fp8; + psq_st fp7, 24(dst), 0, 0; + psq_st fp9, 32(dst), 0, 0; + psq_st fp8, 40(dst), 0, 0; + blr; +#endif // clang-format on } /* 80346968-80346990 3412A8 0028+00 0/0 14/14 8/8 .text PSMTXScale */ -asm void PSMTXScale(register Mtx m, f32 x, f32 y, f32 z) { - // clang-format off - nofralloc +void PSMTXScale(register Mtx m, register f32 xS, register f32 yS, register f32 zS) { + register f32 c0 = 0.0f; - lfs f0, lit_97(r2) - stfs f1, 0(m) - psq_st f0, 4(m), 0, 0 - psq_st f0, 12(m), 0, 0 - stfs f2, 0x14(m) - psq_st f0, 24(m), 0, 0 - psq_st f0, 32(m), 0, 0 - stfs f3, 0x28(m) - stfs f0, 0x2c(m) - blr - // clang-format on +#ifdef __MWERKS__ // clang-format off + asm { + stfs xS, 0(m) + psq_st c0, 4(m), 0, 0 + psq_st c0, 12(m), 0, 0 + stfs yS, 20(m) + psq_st c0, 24(m), 0, 0 + psq_st c0, 32(m), 0, 0 + stfs zS, 40(m) + stfs c0, 44(m) + } +#endif // clang-format on } /* 80346990-803469E8 3412D0 0058+00 0/0 1/1 0/0 .text PSMTXScaleApply */ -asm void PSMTXScaleApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { - // clang-format off - nofralloc - - frsp f1, f1 - psq_l f4, 0(src), 0, 0 - frsp f2, f2 - psq_l f5, 8(src), 0, 0 - frsp f3, f3 - ps_muls0 f4, f4, f1 - psq_l f6, 16(src), 0, 0 - ps_muls0 f5, f5, f1 - psq_l f7, 24(src), 0, 0 - ps_muls0 f6, f6, f2 - psq_l f8, 32(src), 0, 0 - psq_st f4, 0(dst), 0, 0 - ps_muls0 f7, f7, f2 - psq_l f2, 40(src), 0, 0 - psq_st f5, 8(dst), 0, 0 - ps_muls0 f8, f8, f3 - psq_st f6, 16(dst), 0, 0 - ps_muls0 f2, f2, f3 - psq_st f7, 24(dst), 0, 0 - psq_st f8, 32(dst), 0, 0 - psq_st f2, 40(dst), 0, 0 - blr - // clang-format on +asm void PSMTXScaleApply(const register Mtx src, register Mtx dst, register f32 xS, register f32 yS, + register f32 zS) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + frsp xS, xS; + psq_l fp4, 0(src), 0, 0; + frsp yS, yS; + psq_l fp5, 8(src), 0, 0; + frsp zS, zS; + ps_muls0 fp4, fp4, xS; + psq_l fp6, 16(src), 0, 0; + ps_muls0 fp5, fp5, xS; + psq_l fp7, 24(src), 0, 0; + ps_muls0 fp6, fp6, yS; + psq_l fp8, 32(src), 0, 0; + psq_st fp4, 0(dst), 0, 0; + ps_muls0 fp7, fp7, yS; + psq_l fp2, 40(src), 0, 0; + psq_st fp5, 8(dst), 0, 0; + ps_muls0 fp8, fp8, zS; + psq_st fp6, 16(dst), 0, 0; + ps_muls0 fp2, fp2, zS; + psq_st fp7, 24(dst), 0, 0; + psq_st fp8, 32(dst), 0, 0; + psq_st fp2, 40(dst), 0, 0; + blr; +#endif // clang-format on } /* 803469E8-80346A8C 341328 00A4+00 0/0 8/8 2/2 .text PSMTXQuat */ -asm void PSMTXQuat(register Mtx m, register const Quaternion* q) { - // clang-format off - nofralloc - - lfs f1, lit_96(r2) - psq_l f4, 0(q), 0, 0 - psq_l f5, 8(q), 0, 0 - fsubs f0, f1, f1 - fadds f2, f1, f1 - ps_mul f6, f4, f4 - ps_merge10 f9, f4, f4 - ps_madd f8, f5, f5, f6 - ps_mul f7, f5, f5 - ps_sum0 f3, f8, f8, f8 - ps_muls1 f10, f9, f5 - fres f11, f3 - ps_sum1 f8, f7, f8, f6 - ps_nmsub f3, f3, f11, f2 - ps_muls1 f7, f5, f5 - ps_mul f3, f11, f3 - ps_sum0 f6, f6, f6, f6 - fmuls f3, f3, f2 - ps_madd f11, f4, f9, f7 - ps_msub f7, f4, f9, f7 - psq_st f0, 12(m), 1, 0 - ps_nmsub f6, f6, f3, f1 - ps_nmsub f8, f8, f3, f1 - psq_st f0, 44(m), 1, 0 - ps_mul f11, f11, f3 - ps_mul f7, f7, f3 - psq_st f6, 40(m), 1, 0 - ps_madds0 f9, f4, f5, f10 - ps_merge00 f5, f11, f8 - ps_nmsub f10, f10, f2, f9 - ps_merge10 f4, f8, f7 - psq_st f5, 16(m), 0, 0 - ps_mul f9, f9, f3 - ps_mul f10, f10, f3 - psq_st f4, 0(m), 0, 0 - psq_st f9, 8(m), 1, 0 - ps_merge10 f7, f10, f0 - ps_merge01 f11, f10, f9 - psq_st f7, 24(m), 0, 0 - psq_st f11, 32(m), 0, 0 - blr - // clang-format on +void PSMTXQuat(register Mtx m, const register PSQuaternion* q) { + register f32 c_zero, c_one, c_two, scale; + register f32 tmp0, tmp1, tmp2, tmp3, tmp4; + register f32 tmp5, tmp6, tmp7, tmp8, tmp9; + c_one = 1.0f; +#ifdef __MWERKS__ // clang-format off + asm { + psq_l tmp0, 0(q), 0, 0 + psq_l tmp1, 8(q), 0, 0 + fsubs c_zero, c_one, c_one + fadds c_two, c_one, c_one + ps_mul tmp2, tmp0, tmp0 + ps_merge10 tmp5, tmp0, tmp0 + ps_madd tmp4, tmp1, tmp1, tmp2 + ps_mul tmp3, tmp1, tmp1 + ps_sum0 scale, tmp4, tmp4, tmp4 + ps_muls1 tmp7, tmp5, tmp1 + fres tmp9, scale + ps_sum1 tmp4, tmp3, tmp4, tmp2 + ps_nmsub scale, scale, tmp9, c_two + ps_muls1 tmp6, tmp1, tmp1 + ps_mul scale, tmp9, scale + ps_sum0 tmp2, tmp2, tmp2, tmp2 + fmuls scale, scale, c_two + ps_madd tmp8, tmp0, tmp5, tmp6 + ps_msub tmp6, tmp0, tmp5, tmp6 + psq_st c_zero, 12(m), 1, 0 + ps_nmsub tmp2, tmp2, scale, c_one + ps_nmsub tmp4, tmp4, scale, c_one + psq_st c_zero, 44(m), 1, 0 + ps_mul tmp8, tmp8, scale + ps_mul tmp6, tmp6, scale + psq_st tmp2, 40(m), 1, 0 + ps_madds0 tmp5, tmp0, tmp1, tmp7 + ps_merge00 tmp1, tmp8, tmp4 + ps_nmsub tmp7, tmp7, c_two, tmp5 + ps_merge10 tmp0, tmp4, tmp6 + psq_st tmp1, 16(m), 0, 0 + ps_mul tmp5, tmp5, scale + ps_mul tmp7, tmp7, scale + psq_st tmp0, 0(m), 0, 0 + psq_st tmp5, 8(m), 1, 0 + ps_merge10 tmp3, tmp7, c_zero + ps_merge01 tmp9, tmp7, tmp5 + psq_st tmp3, 24(m), 0, 0 + psq_st tmp9, 32(m), 0, 0 + } +#endif // clang-format on } /* 80346A8C-80346C18 3413CC 018C+00 0/0 2/2 0/0 .text C_MTXLookAt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLookAt.s" +void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target) { + Vec vLook, vRight, vUp; + + vLook.x = camPos->x - target->x; + vLook.y = camPos->y - target->y; + vLook.z = camPos->z - target->z; + PSVECNormalize(&vLook, &vLook); + + PSVECCrossProduct(camUp, &vLook, &vRight); + PSVECNormalize(&vRight, &vRight); + + PSVECCrossProduct(&vLook, &vRight, &vUp); + + m[0][0] = vRight.x; + m[0][1] = vRight.y; + m[0][2] = vRight.z; + m[0][3] = -(camPos->x * vRight.x + camPos->y * vRight.y + camPos->z * vRight.z); + + m[1][0] = vUp.x; + m[1][1] = vUp.y; + m[1][2] = vUp.z; + m[1][3] = -(camPos->x * vUp.x + camPos->y * vUp.y + camPos->z * vUp.z); + + m[2][0] = vLook.x; + m[2][1] = vLook.y; + m[2][2] = vLook.z; + m[2][3] = -(camPos->x * vLook.x + camPos->y * vLook.y + camPos->z * vLook.z); } -#pragma pop -/* ############################################################################################## */ -/* 80456518-8045651C 004B18 0004+00 1/1 0/0 0/0 .sdata2 @206 */ -SECTION_SDATA2 static f32 lit_206 = 2.0f; - -/* 8045651C-80456520 004B1C 0004+00 1/1 0/0 0/0 .sdata2 @227 */ -SECTION_SDATA2 static f32 lit_227 = -1.0f; - -/* 80456520-80456528 004B20 0004+04 1/1 0/0 0/0 .sdata2 @230 */ -SECTION_SDATA2 static f32 lit_230[1 + 1 /* padding */] = { - 0.01745329238474369f, - /* padding */ - 0.0f, -}; +void C_MTXLightFrustum(Mtx m, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, + f32 arg8, f32 arg9) { + f32 tmp = 1.0f / (arg4 - arg3); + m[0][0] = ((2 * arg5) * tmp) * arg6; + m[0][1] = 0.0f; + m[0][2] = (((arg4 + arg3) * tmp) * arg6) - arg8; + m[0][3] = 0.0f; + tmp = 1.0f / (arg1 - arg2); + m[1][0] = 0.0f; + m[1][1] = ((2 * arg5) * tmp) * arg7; + m[1][2] = (((arg1 + arg2) * tmp) * arg7) - arg9; + m[1][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = -1.0f; + m[2][3] = 0.0f; +} /* 80346C18-80346CE4 341558 00CC+00 0/0 4/4 7/7 .text C_MTXLightPerspective */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s, - f32 trans_t) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLightPerspective.s" +void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, + f32 transT) { + f32 angle; + f32 cot; + + angle = fovY * 0.5f; + angle = MTXDegToRad(angle); + + cot = 1.0f / tanf(angle); + + m[0][0] = (cot / aspect) * scaleS; + m[0][1] = 0.0f; + m[0][2] = -transS; + m[0][3] = 0.0f; + + m[1][0] = 0.0f; + m[1][1] = cot * scaleT; + m[1][2] = -transT; + m[1][3] = 0.0f; + + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = -1.0f; + m[2][3] = 0.0f; } -#pragma pop /* 80346CE4-80346D6C 341624 0088+00 0/0 2/2 5/5 .text C_MTXLightOrtho */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right, f32 scale_s, f32 scale_t, - f32 trans_s, f32 trans_t) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLightOrtho.s" +void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, + f32 transT) { + f32 tmp; + + tmp = 1.0f / (r - l); + m[0][0] = (2.0f * tmp * scaleS); + m[0][1] = 0.0f; + m[0][2] = 0.0f; + m[0][3] = ((-(r + l) * tmp) * scaleS) + transS; + + tmp = 1.0f / (t - b); + m[1][0] = 0.0f; + m[1][1] = (2.0f * tmp) * scaleT; + m[1][2] = 0.0f; + m[1][3] = ((-(t + b) * tmp) * scaleT) + transT; + + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = 0.0f; + m[2][3] = 1.0f; } -#pragma pop diff --git a/libs/dolphin/mtx/mtx44.c b/libs/dolphin/mtx/mtx44.c index 46fdd3a20b..580996b048 100644 --- a/libs/dolphin/mtx/mtx44.c +++ b/libs/dolphin/mtx/mtx44.c @@ -1,82 +1,97 @@ -// -// Generated By: dol2asm -// Translation Unit: mtx44 -// - -#include "dolphin/mtx/mtx44.h" +#include "dolphin/mtx.h" #include "math.h" -// -// Declarations: -// - -/* ############################################################################################## */ - -static void __C_MTXOrtho1(Mtx44 m, f32 l, f32 r, f32 t, f32 b) { - f32 temp_f10 = 1.0F / (r - l); - f32 temp_f8; - m[0][0] = 2.0F * temp_f10; - m[0][1] = 0.0F; - m[0][2] = 0.0F; - m[0][3] = temp_f10 * -(r + l); - - temp_f8 = 1.0F / (t - b); - m[1][0] = 0.0F; - m[1][1] = 2.0F * temp_f8; - m[1][2] = 0.0F; - m[1][3] = temp_f8 * -(t + b); -} - -static void __C_MTXOrtho2(Mtx44 m, f32 f, f32 n) { - f32 temp_f4 = 1.0F / (f - n); - m[2][0] = 0.0F; - m[2][1] = 0.0F; - m[2][2] = -1.0F * temp_f4; - m[2][3] = -f * temp_f4; - - m[3][0] = 0.0F; - m[3][1] = 0.0F; - m[3][2] = 0.0F; - m[3][3] = 1.0F; +void C_MTXFrustum(Mtx44 m, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + f32 tmp = 1.0f / (arg4 - arg3); + m[0][0] = (2 * arg5) * tmp; + m[0][1] = 0.0f; + m[0][2] = (arg4 + arg3) * tmp; + m[0][3] = 0.0f; + tmp = 1.0f / (arg1 - arg2); + m[1][0] = 0.0f; + m[1][1] = (2 * arg5) * tmp; + m[1][2] = (arg1 + arg2) * tmp; + m[1][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + tmp = 1.0f / (arg6 - arg5); + m[2][2] = -(arg5)*tmp; + m[2][3] = -(arg6 * arg5) * tmp; + m[3][0] = 0.0f; + m[3][1] = 0.0f; + m[3][2] = -1.0f; + m[3][3] = 0.0f; } /* 80346F28-80346FF8 341868 00D0+00 0/0 6/6 0/0 .text C_MTXPerspective */ // Functions match but has issues with float constants -void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) -{ - f32 temp_f3; - f32 temp_f4; - - fovY = 0.5F * fovY; - - temp_f4 = 1.0F / tanf(0.017453292F * (fovY)); - temp_f3 = 1.0F / (f - n); - - m[0][0] = temp_f4 / aspect; - m[0][1] = 0.0F; - m[0][2] = 0.0F; - m[0][3] = 0.0F; - - m[1][0] = 0.0F; - m[1][1] = temp_f4; - m[1][2] = 0.0F; - m[1][3] = 0.0F; - - m[2][0] = 0.0F; - m[2][1] = 0.0F; - m[2][2] = -n * temp_f3; - m[2][3] = temp_f3 * -(f * n); - - m[3][0] = 0.0F; - m[3][1] = 0.0F; - m[3][2] = -1.0F; - m[3][3] = 0.0F; +void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) { + f32 angle = fovY * 0.5f; + f32 cot; + f32 tmp; + angle = MTXDegToRad(angle); + cot = 1.0f / tanf(angle); + m[0][0] = cot / aspect; + m[0][1] = 0.0f; + m[0][2] = 0.0f; + m[0][3] = 0.0f; + m[1][0] = 0.0f; + m[1][1] = cot; + m[1][2] = 0.0f; + m[1][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + tmp = 1.0f / (f - n); + m[2][2] = -(n)*tmp; + m[2][3] = -(f * n) * tmp; + m[3][0] = 0.0f; + m[3][1] = 0.0f; + m[3][2] = -1.0f; + m[3][3] = 0.0f; } /* 80346FF8-80347090 341938 0098+00 0/0 11/11 2/2 .text C_MTXOrtho */ -void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) -{ - __C_MTXOrtho1(m, l, r, t, b); - - __C_MTXOrtho2(m, f, n); +void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) { + f32 tmp = 1.0f / (r - l); + m[0][0] = 2.0f * tmp; + m[0][1] = 0.0f; + m[0][2] = 0.0f; + m[0][3] = -(r + l) * tmp; + tmp = 1.0f / (t - b); + m[1][0] = 0.0f; + m[1][1] = 2.0f * tmp; + m[1][2] = 0.0f; + m[1][3] = -(t + b) * tmp; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + tmp = 1.0f / (f - n); + m[2][2] = -(1.0f) * tmp; + m[2][3] = -(f)*tmp; + m[3][0] = 0.0f; + m[3][1] = 0.0f; + m[3][2] = 0.0f; + m[3][3] = 1.0f; +} + +asm void PSMTX44Copy(register Mtx44 src, register Mtx44 dest) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp1, 0(src), 0, 0; + psq_st fp1, 0(dest), 0, 0; + psq_l fp1, 8(src), 0, 0; + psq_st fp1, 8(dest), 0, 0; + psq_l fp1, 0x10(src), 0, 0; + psq_st fp1, 0x10(dest), 0, 0; + psq_l fp1, 0x18(src), 0, 0; + psq_st fp1, 0x18(dest), 0, 0; + psq_l fp1, 0x20(src), 0, 0; + psq_st fp1, 0x20(dest), 0, 0; + psq_l fp1, 0x28(src), 0, 0; + psq_st fp1, 0x28(dest), 0, 0; + psq_l fp1, 0x30(src), 0, 0; + psq_st fp1, 0x30(dest), 0, 0; + psq_l fp1, 0x38(src), 0, 0; + psq_st fp1, 0x38(dest), 0, 0; + blr; +#endif // clang-format on } diff --git a/libs/dolphin/mtx/mtxvec.c b/libs/dolphin/mtx/mtxvec.c index 7e858b1493..52a188e7a3 100644 --- a/libs/dolphin/mtx/mtxvec.c +++ b/libs/dolphin/mtx/mtxvec.c @@ -3,41 +3,40 @@ * Description: */ -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" /* 80346D6C-80346DC0 3416AC 0054+00 0/0 158/158 826/826 .text PSMTXMultVec */ -asm void PSMTXMultVec(register const Mtx m, register const Vec* src, register Vec* dst) { - // clang-format off - nofralloc - - psq_l f0, 0(src), 0, 0 - psq_l f2, 0(m), 0, 0 - psq_l f1, 8(src), 1, 0 - ps_mul f4, f2, f0 - psq_l f3, 8(m), 0, 0 - ps_madd f5, f3, f1, f4 - psq_l f8, 16(m), 0, 0 - ps_sum0 f6, f5, f6, f5 - psq_l f9, 24(m), 0, 0 - ps_mul f10, f8, f0 - psq_st f6, 0(dst), 1, 0 - ps_madd f11, f9, f1, f10 - psq_l f2, 32(m), 0, 0 - ps_sum0 f12, f11, f12, f11 - psq_l f3, 40(m), 0, 0 - ps_mul f4, f2, f0 - psq_st f12, 4(dst), 1, 0 - ps_madd f5, f3, f1, f4 - ps_sum0 f6, f5, f6, f5 - psq_st f6, 8(dst), 1, 0 - blr - // clang-format on +asm void PSMTXMultVec(const register Mtx m, const register Vec* in, register Vec* out) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp0, 0(in), 0, 0; + psq_l fp2, 0(m), 0, 0; + psq_l fp1, 8(in), 1, 0; + ps_mul fp4, fp2, fp0; + psq_l fp3, 8(m), 0, 0; + ps_madd fp5, fp3, fp1, fp4; + psq_l fp8, 16(m), 0, 0; + ps_sum0 fp6, fp5, fp6, fp5; + psq_l fp9, 24(m), 0, 0; + ps_mul fp10, fp8, fp0; + psq_st fp6, 0(out), 1, 0; + ps_madd fp11, fp9, fp1, fp10; + psq_l fp2, 32(m), 0, 0; + ps_sum0 fp12, fp11, fp12, fp11; + psq_l fp3, 40(m), 0, 0; + ps_mul fp4, fp2, fp0; + psq_st fp12, 4(out), 1, 0; + ps_madd fp5, fp3, fp1, fp4; + ps_sum0 fp6, fp5, fp6, fp5; + psq_st fp6, 8(out), 1, 0; + blr +#endif // clang-format on } /* 80346DC0-80346E4C 341700 008C+00 0/0 2/2 3/3 .text PSMTXMultVecArray */ asm void PSMTXMultVecArray(register const Mtx m, register const Vec* srcBase, register Vec* dstBase, register u32 count) { - // clang-format off +#ifdef __MWERKS__ // clang-format off nofralloc psq_l f13, 0(m), 0, 0 @@ -78,42 +77,41 @@ lbl_80346E0C: psq_stu f12, 4(dstBase), 0, 0 psq_stu f13, 8(dstBase), 1, 0 blr - // clang-format on +#endif // clang-format on } /* 80346E4C-80346EA0 34178C 0054+00 0/0 47/47 9/9 .text PSMTXMultVecSR */ -asm void PSMTXMultVecSR(register const Mtx m, register const Vec* src, register Vec* dst) { - // clang-format off - nofralloc - - psq_l f0, 0(m), 0, 0 - psq_l f6, 0(src), 0, 0 - psq_l f2, 16(m), 0, 0 - ps_mul f8, f0, f6 - psq_l f4, 32(m), 0, 0 - ps_mul f10, f2, f6 - psq_l f7, 8(src), 1, 0 - ps_mul f12, f4, f6 - psq_l f3, 24(m), 0, 0 - ps_sum0 f8, f8, f8, f8 - psq_l f5, 40(m), 0, 0 - ps_sum0 f10, f10, f10, f10 - psq_l f1, 8(m), 0, 0 - ps_sum0 f12, f12, f12, f12 - ps_madd f9, f1, f7, f8 - psq_st f9, 0(dst), 1, 0 - ps_madd f11, f3, f7, f10 - psq_st f11, 4(dst), 1, 0 - ps_madd f13, f5, f7, f12 - psq_st f13, 8(dst), 1, 0 - blr - // clang-format on +asm void PSMTXMultVecSR(const register Mtx mtx, const register Vec* in, register Vec* out) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp0, 0(mtx), 0, 0; + psq_l fp6, 0(in), 0, 0; + psq_l fp2, 0x10(mtx), 0, 0; + ps_mul fp8, fp0, fp6; + psq_l fp4, 0x20(mtx), 0, 0; + ps_mul fp10, fp2, fp6; + psq_l fp7, 8(in), 1, 0; + ps_mul fp12, fp4, fp6; + psq_l fp3, 0x18(mtx), 0, 0; + ps_sum0 fp8, fp8, fp8, fp8; + psq_l fp5, 0x28(mtx), 0, 0; + ps_sum0 fp10, fp10, fp10, fp10; + psq_l fp1, 8(mtx), 0, 0; + ps_sum0 fp12, fp12, fp12, fp12; + ps_madd fp9, fp1, fp7, fp8; + psq_st fp9, 0(out), 1, 0; + ps_madd fp11, fp3, fp7, fp10; + psq_st fp11, 4(out), 1, 0; + ps_madd fp13, fp5, fp7, fp12; + psq_st fp13, 8(out), 1, 0; + blr +#endif // clang-format on } /* 80346EA0-80346F28 3417E0 0088+00 0/0 2/2 0/0 .text PSMTXMultVecArraySR */ asm void PSMTXMultVecArraySR(register const Mtx m, register const Vec* srcBase, register Vec* dstBase, register u32 count) { - // clang-format off +#ifdef __MWERKS__ // clang-format off nofralloc psq_l f13, 0(m), 0, 0 @@ -153,5 +151,5 @@ lbl_80346EE8: psq_stu f12, 4(dstBase), 0, 0 psq_stu f13, 8(dstBase), 1, 0 blr - // clang-format on +#endif // clang-format on } diff --git a/libs/dolphin/mtx/quat.c b/libs/dolphin/mtx/quat.c index a845a458ae..2d2c4c56c1 100644 --- a/libs/dolphin/mtx/quat.c +++ b/libs/dolphin/mtx/quat.c @@ -7,7 +7,8 @@ #include "math.h" /* 80347418-80347474 341D58 005C+00 0/0 0/0 2/2 .text PSQUATMultiply */ -void PSQUATMultiply(register const Quaternion* a, register const Quaternion* b, register Quaternion* ab) { +void PSQUATMultiply(register const Quaternion* a, register const Quaternion* b, + register Quaternion* ab) { asm { psq_l f0, 0(a), 0, 0 psq_l f1, 8(a), 0, 0 @@ -45,14 +46,14 @@ static f32 dummyLiteralFunc2() { /* 80347474-80347500 341DB4 008C+00 0/0 1/1 0/0 .text C_QUATRotAxisRad */ void C_QUATRotAxisRad(Quaternion* q, const Vec* axis, f32 rad) { - f32 tmp,tmp2,tmp3; + f32 tmp, tmp2, tmp3; Vec dst; tmp = rad; - PSVECNormalize(axis,&dst); + PSVECNormalize(axis, &dst); tmp2 = tmp * 0.5f; - tmp3 = sinf(tmp* 0.5f); + tmp3 = sinf(tmp * 0.5f); tmp = tmp3; tmp3 = cosf(tmp2); @@ -67,7 +68,7 @@ void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t) f32 ratioA, ratioB; f32 value = 1.0f; - f32 cosHalfTheta = p->x*q->x + p->y*q->y + p->z*q->z + p->w*q->w; + f32 cosHalfTheta = p->x * q->x + p->y * q->y + p->z * q->z + p->w * q->w; if (cosHalfTheta < 0.0f) { cosHalfTheta = -cosHalfTheta; @@ -85,7 +86,7 @@ void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t) ratioA = 1.0f - t; value *= t; } - + r->x = (ratioA * p->x) + (value * q->x); r->y = (ratioA * p->y) + (value * q->y); r->z = (ratioA * p->z) + (value * q->z); diff --git a/libs/dolphin/mtx/vec.c b/libs/dolphin/mtx/vec.c index 699bade879..d379c1bd92 100644 --- a/libs/dolphin/mtx/vec.c +++ b/libs/dolphin/mtx/vec.c @@ -1,150 +1,290 @@ -// -// Generated By: dol2asm -// Translation Unit: vec -// - #include "dolphin/mtx/vec.h" -#include "dol2asm.h" +#include "math.h" -// -// Declarations: -// +#define R_RET fp1 +#define FP2 fp2 +#define FP3 fp3 +#define FP4 fp4 +#define FP5 fp5 +#define FP6 fp6 +#define FP7 fp7 +#define FP8 fp8 +#define FP9 fp9 +#define FP10 fp10 +#define FP11 fp11 +#define FP12 fp12 +#define FP13 fp13 /* 80347090-803470B4 3419D0 0024+00 1/1 103/103 679/679 .text PSVECAdd */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSVECAdd(const Vec* a, const Vec* b, Vec* ab) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECAdd.s" +asm void PSVECAdd(const register Vec* vec1, const register Vec* vec2, register Vec* ret) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l FP2, 0(vec1), 0, 0; + psq_l FP4, 0(vec2), 0, 0; + ps_add FP6, FP2, FP4; + psq_st FP6, 0(ret), 0, 0; + psq_l FP3, 8(vec1), 1, 0; + psq_l FP5, 8(vec2), 1, 0; + ps_add FP7, FP3, FP5; + psq_st FP7, 8(ret), 1, 0; + blr +#endif // clang-format on } -#pragma pop /* 803470B4-803470D8 3419F4 0024+00 0/0 60/60 59/59 .text PSVECSubtract */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECSubtract.s" +asm void PSVECSubtract(const register Vec* vec1, const register Vec* vec2, register Vec* ret) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l FP2, 0(vec1), 0, 0; + psq_l FP4, 0(vec2), 0, 0; + ps_sub FP6, FP2, FP4; + psq_st FP6, 0(ret), 0, 0; + psq_l FP3, 8(vec1), 1, 0; + psq_l FP5, 8(vec2), 1, 0; + ps_sub FP7, FP3, FP5; + psq_st FP7, 8(ret), 1, 0; + blr +#endif // clang-format on } -#pragma pop /* 803470D8-803470F4 341A18 001C+00 0/0 58/58 101/101 .text PSVECScale */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSVECScale(const Vec* src, Vec* dst, f32 scale) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECScale.s" +asm void PSVECScale(register const Vec* src, register Vec* dst, register f32 scale) { +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f0, 0(src), 0, 0 + psq_l f2, 8(src), 1, 0 + ps_muls0 f0, f0, f1 + psq_st f0, 0(dst), 0, 0 + ps_muls0 f0, f2, f1 + psq_st f0, 8(dst), 1, 0 + blr +#endif // clang-format on } -#pragma pop -/* ############################################################################################## */ -/* 80456540-80456544 004B40 0004+00 1/1 0/0 0/0 .sdata2 @113 */ -SECTION_SDATA2 static u8 lit_113[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +void C_VECScale(const Vec* src, Vec* dst, f32 scale) { + f32 s; -/* 80456544-80456548 004B44 0004+00 3/3 0/0 0/0 .sdata2 @118 */ -SECTION_SDATA2 static f32 lit_118 = 0.5f; - -/* 80456548-8045654C 004B48 0004+00 3/3 0/0 0/0 .sdata2 @119 */ -SECTION_SDATA2 static f32 lit_119 = 3.0f; + s = 1.0f / sqrtf(src->z * src->z + src->x * src->x + src->y * src->y); + dst->x = src->x * s; + dst->y = src->y * s; + dst->z = src->z * s; +} /* 803470F4-80347138 341A34 0044+00 2/2 16/16 0/0 .text PSVECNormalize */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSVECNormalize(const Vec* src, Vec* unit) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECNormalize.s" +void PSVECNormalize(const register Vec* vec1, register Vec* ret) { +#ifdef __MWERKS__ // clang-format off + register f32 half = 0.5f; + register f32 three = 3.0f; + register f32 xx_zz, xx_yy; + register f32 square_sum; + register f32 ret_sqrt; + register f32 n_0, n_1; + asm { + psq_l FP2, 0(vec1), 0, 0; + ps_mul xx_yy, FP2, FP2; + psq_l FP3, 8(vec1), 1, 0; + ps_madd xx_zz, FP3, FP3, xx_yy; + ps_sum0 square_sum, xx_zz, FP3, xx_yy; + frsqrte ret_sqrt, square_sum; + fmuls n_0, ret_sqrt, ret_sqrt; + fmuls n_1, ret_sqrt, half; + fnmsubs n_0, n_0, square_sum, three; + fmuls ret_sqrt, n_0, n_1; + ps_muls0 FP2, FP2, ret_sqrt; + psq_st FP2, 0(ret), 0, 0; + ps_muls0 FP3, FP3, ret_sqrt; + psq_st FP3, 8(ret), 1, 0; + } +#endif // clang-format on } -#pragma pop /* 80347138-80347150 341A78 0018+00 0/0 140/140 727/727 .text PSVECSquareMag */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 PSVECSquareMag(const Vec* v) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECSquareMag.s" +asm f32 PSVECSquareMag(register const Vec* v){ +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f0, 0(v), 0, 0 + ps_mul f0, f0, f0 + lfs f1, 8(v) + ps_madd f1, f1, f1, f0 + ps_sum0 f1, f1, f0, f0 + blr +#endif // clang-format on } -#pragma pop /* 80347150-80347194 341A90 0044+00 0/0 24/24 0/0 .text PSVECMag */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 PSVECMag(const Vec* v) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECMag.s" +f32 PSVECMag(const register Vec* v) { + register f32 v_xy, v_zz, square_mag; + register f32 ret_mag, n_0, n_1; + register f32 three, half, zero; + half = 0.5f; +#ifdef __MWERKS__ // clang-format off + asm { + psq_l v_xy, 0(v), 0, 0 + ps_mul v_xy, v_xy, v_xy + lfs v_zz, 8(v) + fsubs zero, half, half + ps_madd square_mag, v_zz, v_zz, v_xy + ps_sum0 square_mag, square_mag, v_xy, v_xy + fcmpu cr0, square_mag, zero + beq- __exit + frsqrte ret_mag, square_mag + } +#endif // clang-format on + three = 3.0f; +#ifdef __MWERKS__ // clang-format off + asm { + fmuls n_0, ret_mag, ret_mag + fmuls n_1, ret_mag, half + fnmsubs n_0, n_0, square_mag, three + fmuls ret_mag, n_0, n_1 + fmuls square_mag, square_mag, ret_mag + __exit: + } +#endif // clang-format on + return square_mag; } -#pragma pop /* 80347194-803471B4 341AD4 0020+00 2/2 39/39 15/15 .text PSVECDotProduct */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 PSVECDotProduct(const Vec* a, const Vec* b) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECDotProduct.s" +asm f32 PSVECDotProduct(const register Vec* vec1, const register Vec* vec2) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l f2, 4(r3), 0, 0 /* qr0 */ + psq_l f3, 4(r4), 0, 0 /* qr0 */ + ps_mul f2, f2, f3 + psq_l f5, 0(r3), 0, 0 /* qr0 */ + psq_l f4, 0(r4), 0, 0 /* qr0 */ + ps_madd f3, f5, f4, f2 + ps_sum0 f1, f3, f2, f2 + blr +#endif // clang-format on } -#pragma pop /* 803471B4-803471F0 341AF4 003C+00 0/0 20/20 3/3 .text PSVECCrossProduct */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECCrossProduct.s" +asm void PSVECCrossProduct(register const Vec* a, register const Vec* b, register Vec* axb) { +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f1, 0(b), 0, 0 + lfs f2, 8(a) + psq_l f0, 0(a), 0, 0 + ps_merge10 f6, f1, f1 + lfs f3, 8(b) + ps_mul f4, f1, f2 + ps_muls0 f7, f1, f0 + ps_msub f5, f0, f3, f4 + ps_msub f8, f0, f6, f7 + ps_merge11 f9, f5, f5 + ps_merge01 f10, f5, f8 + psq_st f9, 0(axb), 1, 0 + ps_neg f10, f10 + psq_st f10, 4(axb), 0, 0 + blr +#endif // clang-format on } -#pragma pop /* 803471F0-803472C8 341B30 00D8+00 0/0 1/1 0/0 .text C_VECHalfAngle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half) { - nofralloc -#include "asm/dolphin/mtx/vec/C_VECHalfAngle.s" -} -#pragma pop +void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half) { + Vec a0; + Vec b0; + Vec ab; -/* ############################################################################################## */ -/* 8045654C-80456550 004B4C 0004+00 1/1 0/0 0/0 .sdata2 @161 */ -SECTION_SDATA2 static f32 lit_161 = 2.0f; + a0.x = -a->x; + a0.y = -a->y; + a0.z = -a->z; + + b0.x = -b->x; + b0.y = -b->y; + b0.z = -b->z; + + VECNormalize(&a0, &a0); + VECNormalize(&b0, &b0); + VECAdd(&a0, &b0, &ab); + + if (VECDotProduct(&ab, &ab) > 0.0f) { + VECNormalize(&ab, half); + } else { + *half = ab; + } +} /* 803472C8-8034739C 341C08 00D4+00 0/0 1/1 11/11 .text C_VECReflect */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst) { - nofralloc -#include "asm/dolphin/mtx/vec/C_VECReflect.s" +void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst) { + Vec a0; + Vec b0; + f32 dot; + + a0.x = -src->x; + a0.y = -src->y; + a0.z = -src->z; + + VECNormalize(&a0, &a0); + VECNormalize(normal, &b0); + + dot = VECDotProduct(&a0, &b0); + dst->x = b0.x * 2.0f * dot - a0.x; + dst->y = b0.y * 2.0f * dot - a0.y; + dst->z = b0.z * 2.0f * dot - a0.z; + + VECNormalize(dst, dst); } -#pragma pop /* 8034739C-803473C4 341CDC 0028+00 0/0 107/107 446/446 .text PSVECSquareDistance */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 PSVECSquareDistance(const Vec* a, const Vec* b) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECSquareDistance.s" +asm f32 PSVECSquareDistance(register const Vec* a, register const Vec* b){ +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f0, 4(a), 0, 0 + psq_l f1, 4(b), 0, 0 + ps_sub f2, f0, f1 + psq_l f0, 0(a), 0, 0 + psq_l f1, 0(b), 0, 0 + ps_mul f2, f2, f2 + ps_sub f0, f0, f1 + ps_madd f1, f0, f0, f2 + ps_sum0 f1, f1, f2, f2 + blr +#endif // clang-format on } -#pragma pop /* 803473C4-80347418 341D04 0054+00 0/0 4/4 0/0 .text PSVECDistance */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 PSVECDistance(const Vec* a, const Vec* b) { - nofralloc -#include "asm/dolphin/mtx/vec/PSVECDistance.s" +f32 PSVECDistance(register const Vec* a, register const Vec* b) { + + register f32 half_c; + register f32 three_c; + register f32 dist; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f0, 4(a), 0, 0 /* qr0 */ + psq_l f1, 4(b), 0, 0 /* qr0 */ + ps_sub f2, f0, f1 + psq_l f0, 0(a), 0, 0 /* qr0 */ + psq_l f1, 0(b), 0, 0 /* qr0 */ + ps_mul f2, f2, f2 + ps_sub f0, f0, f1 + } + + half_c = 0.5f; + + asm { + ps_madd dist, f0, f0, f2 + fsubs f0, half_c, half_c + ps_sum0 dist, dist, f2, f2 + fcmpu cr0, f0, dist + beq exit + } + + three_c = 3.0f; + + asm { + frsqrte f0, dist + fmuls f2, f0, f0 + fmuls f0, f0, half_c + fnmsubs f2, f2, dist, three_c + fmuls f0, f2, f0 + fmuls dist, dist, f0 + + exit: + } + + return dist; +#endif // clang-format on } -#pragma pop diff --git a/libs/dolphin/odemuexi2/Makefile b/libs/dolphin/odemuexi2/Makefile index 5ce71800ea..180cb2aff8 100644 --- a/libs/dolphin/odemuexi2/Makefile +++ b/libs/dolphin/odemuexi2/Makefile @@ -3,12 +3,24 @@ # LIBODEMUEXI2_A_CPP_FILES := \ - libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.cpp \ + libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.c \ LIBODEMUEXI2_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.o \ LIBODEMUEXI2_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -inline auto,deferred \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ + -O4,p \ + -lang=c \ + LIBODEMUEXI2_A_LDFLAGS := \ -nodefaults \ @@ -21,11 +33,11 @@ $(BUILD_DIR)/libodemuexi2.a: $(LIBODEMUEXI2_A_O_FILES) @echo $(LIBODEMUEXI2_A_O_FILES) > build/LIBODEMUEXI2_A_ofiles @$(LD) -xm l $(LIBODEMUEXI2_A_LDFLAGS) -o $(BUILD_DIR)/libodemuexi2.a @build/LIBODEMUEXI2_A_ofiles -$(BUILD_DIR)/libs/dolphin/odemuexi2/%.o: libs/dolphin/odemuexi2/%.cpp $(BUILD_DIR)/libs/dolphin/odemuexi2/%.d +$(BUILD_DIR)/libs/dolphin/odemuexi2/%.o: libs/dolphin/odemuexi2/%.c $(BUILD_DIR)/libs/dolphin/odemuexi2/%.d @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBODEMUEXI2_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(DOLPHIN_LIB_CC) $(LIBODEMUEXI2_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c @if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi ifndef DISABLE_DEPS diff --git a/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.c b/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.c new file mode 100644 index 0000000000..8bec678914 --- /dev/null +++ b/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.c @@ -0,0 +1,322 @@ +#include "dolphin/exi/EXIBios.h" +#include "dolphin/os.h" + +typedef void (*MTRCallbackType)(int); + +/* 804519D0-804519D4 000ED0 0004+00 2/2 0/0 0/0 .sbss MTRCallback */ +static MTRCallbackType MTRCallback; + +/* 804519D4-804519D8 000ED4 0004+00 2/2 0/0 0/0 .sbss DBGCallback */ +static void (*DBGCallback)(u32, OSContext*); + +/* 804519D8-804519DC 000ED8 0004+00 2/2 0/0 0/0 .sbss SendMailData */ +static u32 SendMailData; + +/* 804519DC-804519E0 000EDC 0004+00 2/2 0/0 0/0 .sbss RecvDataLeng */ +static s32 RecvDataLeng; + +/* 804519E0-804519E4 000EE0 0004+00 1/1 0/0 0/0 .sbss pEXIInputFlag */ +static u8* pEXIInputFlag; + +static u8 EXIInputFlag; + +static u8 SendCount = 0x80; + +#define IS_TRUE(x) ((x) != FALSE) +#define IS_FALSE(x) !IS_TRUE(x) +#define ROUND_UP(x, align) (((x) + (align)-1) & (-(align))) + +void DBGEXIInit() { + __OSMaskInterrupts(0x18000); + __EXIRegs[10] = 0; +} + +static u32 DBGEXISelect(u32 v) { + u32 regs = __EXIRegs[10]; + regs &= 0x405; + regs |= 0x80 | (v << 4); + __EXIRegs[10] = regs; + return TRUE; +} + +BOOL DBGEXIDeselect(void) { + __EXIRegs[10] &= 0x405; + return TRUE; +} + +static BOOL DBGEXISync() { + while (__EXIRegs[13] & 1) + ; + + return TRUE; +} + +/* 80373514-803737AC 36DE54 0298+00 5/5 0/0 0/0 .text DBGEXIImm */ +static BOOL DBGEXIImm(void* buffer, s32 bytecounter, u32 write) { + u8* tempPointer; + u32 writeOutValue; + int i; + + if (write) { + tempPointer = buffer; + writeOutValue = 0; + for (i = 0; i < bytecounter; i++) { + u8* temp = ((u8*)buffer) + i; + writeOutValue |= *temp << ((3 - i) << 3); + } + __EXIRegs[14] = writeOutValue; + } + + __EXIRegs[13] = 1 | write << 2 | (bytecounter - 1) << 4; + DBGEXISync(); + + if (!write) { + writeOutValue = __EXIRegs[14]; + tempPointer = buffer; + for (i = 0; i < bytecounter; i++) { + *tempPointer++ = writeOutValue >> ((3 - i) << 3); + } + } + + return TRUE; +} + +static BOOL DBGWriteMailbox(u32 p1) { + u32 cmd = 0xc0000000; + u32 v; + u32 base = p1; + BOOL total = FALSE; + + DBGEXISelect(4); + v = (base & 0x1fffffff) | (cmd); + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} + +/* 80373468-80373514 36DDA8 00AC+00 1/1 0/0 0/0 .text DBGReadMailbox */ +#pragma dont_inline on +static BOOL DBGReadMailbox(u32* p1) { + BOOL total = FALSE; + u32 v; + + DBGEXISelect(4); + + v = 0x60000000; + total |= IS_FALSE(DBGEXIImm(&v, 2, 1)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIImm(p1, 4, 0)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} +#pragma dont_inline reset + +/* 8037338C-80373468 36DCCC 00DC+00 1/1 0/0 0/0 .text DBGRead */ +static BOOL DBGRead(u32 count, u32* buffer, s32 param3) { + BOOL total = FALSE; + u32* buf_p = (u32*)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0x20000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3) { + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 0)); + total |= IS_FALSE(DBGEXISync()); + + *buf_p++ = v; + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +/* 803732B0-8037338C 36DBF0 00DC+00 1/1 0/0 0/0 .text DBGWrite */ +static BOOL DBGWrite(u32 count, void* buffer, s32 param3) { + BOOL total = FALSE; + u32* buf_p = (u32*)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0xa0000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3 != 0) { + v = *buf_p++; + + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +/* 80373204-803732B0 36DB44 00AC+00 1/1 0/0 0/0 .text DBGReadStatus */ +inline static BOOL _DBGReadStatus(u32* p1) { + BOOL total = FALSE; + u32 v; + + DBGEXISelect(4); + + v = 1 << 30; + total |= IS_FALSE(DBGEXIImm(&v, 2, 1)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIImm(p1, 4, 0)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} +#pragma dont_inline on +static BOOL DBGReadStatus(u32* p1) { + return _DBGReadStatus(p1); +} +#pragma dont_inline reset + +/* 803731C8-80373204 36DB08 003C+00 1/1 0/0 0/0 .text MWCallback */ +static void MWCallback(u32 a, OSContext* b) { + EXIInputFlag = TRUE; + if (MTRCallback) { + MTRCallback(0); + } +} + +/* 80373188-803731C8 36DAC8 0040+00 1/1 0/0 0/0 .text DBGHandler */ +static void DBGHandler(s16 a, OSContext* b) { + *__PIRegs = 0x1000; + if (DBGCallback) { + DBGCallback(a, b); + } +} + +/* 80373110-80373188 36DA50 0078+00 0/0 1/1 0/0 .text DBInitComm */ +void DBInitComm(u8** a, MTRCallbackType b) { + BOOL interrupts = OSDisableInterrupts(); + { + pEXIInputFlag = (u8*)EXIInputFlag; + pEXIInputFlag = &EXIInputFlag; + + *a = pEXIInputFlag; + + MTRCallback = b; + + DBGEXIInit(); + } + OSRestoreInterrupts(interrupts); +} + +/* 803730BC-80373110 36D9FC 0054+00 0/0 1/1 0/0 .text DBInitInterrupts */ +void DBInitInterrupts(void) { + __OSMaskInterrupts(0x18000); + __OSMaskInterrupts(0x40); + DBGCallback = &MWCallback; + __OSSetInterruptHandler(0x19, DBGHandler); + __OSUnmaskInterrupts(0x40); +} + +static void CheckMailBox(void) { + u32 v; + DBGReadStatus(&v); + if (v & 1) { + DBGReadMailbox(&v); + v &= 0x1fffffff; + + if ((v & 0x1f000000) == 0x1f000000) { + SendMailData = v; + RecvDataLeng = v & 0x7fff; + EXIInputFlag = 1; + } + } +} + +/* 80373020-803730BC 36D960 009C+00 0/0 2/2 0/0 .text DBQueryData */ +u32 DBQueryData(void) { + EXIInputFlag = 0; + if (!RecvDataLeng) { + BOOL interrupts = OSDisableInterrupts(); + CheckMailBox(); + OSRestoreInterrupts(interrupts); + } + return RecvDataLeng; +} + +/* 80372F94-80373020 36D8D4 008C+00 0/0 2/2 0/0 .text DBRead */ +BOOL DBRead(u32* buffer, s32 count) { + u32 interrupts = OSDisableInterrupts(); + u32 v = SendMailData & 0x10000 ? 0x1000 : 0; + + DBGRead(v + 0x1e000, buffer, ROUND_UP(count, 4)); + + RecvDataLeng = 0; + EXIInputFlag = 0; + + OSRestoreInterrupts(interrupts); + + return 0; +} + +/* 80372D34-80372F94 36D674 0260+00 0/0 1/1 0/0 .text DBWrite */ +BOOL DBWrite(void* src, u32 size) { + u32 v; + u32 busyFlag; + BOOL interrupts = OSDisableInterrupts(); + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + SendCount++; + v = ((SendCount & 1) ? 0x1000 : 0); + + while (!DBGWrite(v | 0x1c000, src, ROUND_UP(size, 4))) + ; + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + v = SendCount; + while (!DBGWriteMailbox((0x1f000000) | v << 0x10 | size)) + ; + + do { + while (!_DBGReadStatus(&busyFlag)) + ; + } while (busyFlag & 2); + + OSRestoreInterrupts(interrupts); + + return 0; +} + +/* 80372D30-80372D34 36D670 0004+00 0/0 1/1 0/0 .text DBOpen */ +void DBOpen(void) {} + +/* 80372D2C-80372D30 36D66C 0004+00 0/0 1/1 0/0 .text DBClose */ +void DBClose(void) {} diff --git a/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.cpp b/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.cpp deleted file mode 100644 index bdd0e528d1..0000000000 --- a/libs/dolphin/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: src/OdemuExi2Lib/DebuggerDriver -// - -// #include "odemuexi2/Src/OdemuExi2Lib/DebuggerDriver.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void DBClose(); -extern "C" void DBOpen(); -extern "C" void DBWrite(); -extern "C" void DBRead(); -extern "C" void DBQueryData(); -extern "C" void DBInitInterrupts(); -extern "C" void DBInitComm(); -extern "C" static void DBGHandler(); -extern "C" static void MWCallback(); -extern "C" static void DBGReadStatus(); -extern "C" static void DBGWrite(); -extern "C" static void DBGRead(); -extern "C" static void DBGReadMailbox(); -extern "C" static void DBGEXIImm(); - -// -// External References: -// - -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSMaskInterrupts(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" extern f32 data_80450AF0; - -// -// Declarations: -// - -/* 80372D2C-80372D30 36D66C 0004+00 0/0 1/1 0/0 .text DBClose */ -void DBClose() { - /* empty function */ -} - -/* 80372D30-80372D34 36D670 0004+00 0/0 1/1 0/0 .text DBOpen */ -void DBOpen() { - /* empty function */ -} - -/* 80450AF0-80450AF4 000570 0004+00 0/0 1/1 0/0 .sdata None */ -extern float data_80450AF0; -float data_80450AF0 = -0.0f; - -/* 80372D34-80372F94 36D674 0260+00 0/0 1/1 0/0 .text DBWrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBWrite() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBWrite.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804519D0-804519D4 000ED0 0004+00 2/2 0/0 0/0 .sbss MTRCallback */ -static u8 MTRCallback[4]; - -/* 804519D4-804519D8 000ED4 0004+00 2/2 0/0 0/0 .sbss DBGCallback */ -static u8 DBGCallback[4]; - -/* 804519D8-804519DC 000ED8 0004+00 2/2 0/0 0/0 .sbss SendMailData */ -static u8 SendMailData[4]; - -/* 804519DC-804519E0 000EDC 0004+00 2/2 0/0 0/0 .sbss RecvDataLeng */ -static u8 RecvDataLeng[4]; - -/* 804519E0-804519E4 000EE0 0004+00 1/1 0/0 0/0 .sbss pEXIInputFlag */ -static u8 pEXIInputFlag[4]; - -/* 804519E4-804519E8 000EE4 0004+00 4/4 0/0 0/0 .sbss None */ -static u8 data_804519E4[4]; - -/* 80372F94-80373020 36D8D4 008C+00 0/0 2/2 0/0 .text DBRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBRead() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBRead.s" -} -#pragma pop - -/* 80373020-803730BC 36D960 009C+00 0/0 2/2 0/0 .text DBQueryData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBQueryData() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBQueryData.s" -} -#pragma pop - -/* 803730BC-80373110 36D9FC 0054+00 0/0 1/1 0/0 .text DBInitInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBInitInterrupts() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitInterrupts.s" -} -#pragma pop - -/* 80373110-80373188 36DA50 0078+00 0/0 1/1 0/0 .text DBInitComm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBInitComm() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBInitComm.s" -} -#pragma pop - -/* 80373188-803731C8 36DAC8 0040+00 1/1 0/0 0/0 .text DBGHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGHandler() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGHandler.s" -} -#pragma pop - -/* 803731C8-80373204 36DB08 003C+00 1/1 0/0 0/0 .text MWCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void MWCallback() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/MWCallback.s" -} -#pragma pop - -/* 80373204-803732B0 36DB44 00AC+00 1/1 0/0 0/0 .text DBGReadStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGReadStatus() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadStatus.s" -} -#pragma pop - -/* 803732B0-8037338C 36DBF0 00DC+00 1/1 0/0 0/0 .text DBGWrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGWrite() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGWrite.s" -} -#pragma pop - -/* 8037338C-80373468 36DCCC 00DC+00 1/1 0/0 0/0 .text DBGRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGRead() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGRead.s" -} -#pragma pop - -/* 80373468-80373514 36DDA8 00AC+00 1/1 0/0 0/0 .text DBGReadMailbox */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGReadMailbox() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGReadMailbox.s" -} -#pragma pop - -/* 80373514-803737AC 36DE54 0298+00 5/5 0/0 0/0 .text DBGEXIImm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DBGEXIImm() { - nofralloc -#include "asm/odemuexi2/Src/OdemuExi2Lib/DebuggerDriver/DBGEXIImm.s" -} -#pragma pop diff --git a/libs/dolphin/odenotstub/odenotstub.cpp b/libs/dolphin/odenotstub/odenotstub.cpp index 3730c5b810..ef578fa88f 100644 --- a/libs/dolphin/odenotstub/odenotstub.cpp +++ b/libs/dolphin/odenotstub/odenotstub.cpp @@ -1,25 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: odenotstub -// - -#include "odenotstub/odenotstub.h" -#include "dolphin/types.h" - -// -// Forward References: -// - extern "C" bool Hu_IsStub(); -// -// External References: -// - -// -// Declarations: -// - /* 803737AC-803737B4 36E0EC 0008+00 0/0 1/1 0/0 .text Hu_IsStub */ bool Hu_IsStub() { return false; diff --git a/libs/dolphin/os/Makefile b/libs/dolphin/os/Makefile index 275292406c..c0f235fccd 100644 --- a/libs/dolphin/os/Makefile +++ b/libs/dolphin/os/Makefile @@ -25,7 +25,7 @@ LIBOS_A_CPP_FILES := \ libs/dolphin/os/OSSync.c \ libs/dolphin/os/OSThread.c \ libs/dolphin/os/OSTime.c \ - libs/dolphin/os/__ppc_eabi_init.c \ + libs/dolphin/os/__ppc_eabi_init.cpp \ LIBOS_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/os/OS.o \ @@ -57,13 +57,12 @@ LIBOS_A_CFLAGS := \ -proc gekko \ -fp hard \ -nodefaults \ - -str reuse \ + -str noreadonly \ -inline auto \ -RTTI off \ -maxerrors 5 \ -enum int $(INCLUDES) \ -O4,p \ - -lang=c \ LIBOS_A_LDFLAGS := \ -nodefaults \ @@ -83,6 +82,14 @@ $(BUILD_DIR)/libs/dolphin/os/%.o: libs/dolphin/os/%.c $(BUILD_DIR)/libs/dolphin/ @$(DOLPHIN_LIB_CC) $(LIBOS_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c @if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi +$(BUILD_DIR)/libs/dolphin/os/%.o: libs/dolphin/os/%.cpp $(BUILD_DIR)/libs/dolphin/os/%.d + @mkdir -p $(@D) + @echo building... $< + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp + @$(DOLPHIN_LIB_CC) $(LIBOS_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).cpp + @if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi + + ifndef DISABLE_DEPS LIBOS_A_D_FILES := $(LIBOS_A_O_FILES:.o=.d) $(LIBOS_A_D_FILES): diff --git a/libs/dolphin/os/OS.c b/libs/dolphin/os/OS.c index d1a4dd10eb..d7b25b084e 100644 --- a/libs/dolphin/os/OS.c +++ b/libs/dolphin/os/OS.c @@ -3,16 +3,23 @@ // Translation Unit: OS // -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dol2asm.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/db/db.h" +#include "dolphin/db.h" + +#define OS_BI2_DEBUG_ADDRESS 0x800000F4 +#define OS_BI2_DEBUGFLAG_OFFSET 0xC +#define PAD3_BUTTON_ADDR 0x800030E4 +#define OS_DVD_DEVICECODE 0x800030E6 +#define DEBUGFLAG_ADDR 0x800030E8 +#define OS_DEBUG_ADDRESS_2 0x800030E9 +#define DB_EXCEPTIONRET_OFFSET 0xC +#define DB_EXCEPTIONDEST_OFFSET 0x8 -#define OS_CURRENTCONTEXT_PADDR 0x00C0 #define OS_EXCEPTIONTABLE_ADDR 0x3000 #define OS_DBJUMPPOINT_ADDR 0x60 -#define OS_DEBUG_ADDRESS_2 0x800030E9 -#define DEBUGFLAG_ADDR 0x800030E8 +#define OS_CURRENTCONTEXT_PADDR 0xC0 // // External References: @@ -67,7 +74,6 @@ static u32* BI2DebugFlagHolder; OSTime __OSStartTime; /* 80451628-80451630 000B28 0004+04 1/1 1/1 0/0 .sbss __OSInIPL */ -extern BOOL __OSInIPL; BOOL __OSInIPL; /* 80451624-80451628 000B24 0004+00 3/3 0/0 0/0 .sbss OSExceptionTable */ @@ -192,33 +198,43 @@ static DVDDriveInfo DriveInfo; void* __OSSavedRegionStart; void* __OSSavedRegionEnd; -inline void ClearArena(void) { - u32 resetCode = OSGetResetCode(); - BOOL val = resetCode != 0U ? TRUE : FALSE; - if (val) { +extern OSExecParams __OSRebootParams; + +static inline void ClearArena(void) { + BOOL var_r0; + if (OSGetResetCode() & 0x80000000) { + var_r0 = TRUE; + } else { + var_r0 = FALSE; + } + + if (!var_r0) { memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); return; } - if (BOOT_REGION_START == 0U) { + if (*(u32*)&__OSRebootParams.regionStart == 0U) { memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); return; } - if ((u32)OSGetArenaLo() < (u32)__OSSavedRegionStart) { - if ((u32)OSGetArenaHi() <= (u32)__OSSavedRegionStart) { + if ((u32)OSGetArenaLo() < *(u32*)&__OSRebootParams.regionStart) { + if ((u32)OSGetArenaHi() <= *(u32*)&__OSRebootParams.regionStart) { memset((u32)OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); return; } - memset(OSGetArenaLo(), 0U, (u32)__OSSavedRegionStart - (u32)OSGetArenaLo()); - if ((u32)OSGetArenaHi() > (u32)__OSSavedRegionEnd) { - memset((u32)__OSSavedRegionEnd, 0, (u32)OSGetArenaHi() - (u32)__OSSavedRegionEnd); + + memset(OSGetArenaLo(), 0U, *(u32*)&__OSRebootParams.regionStart - (u32)OSGetArenaLo()); + + if ((u32)OSGetArenaHi() > *(u32*)&__OSRebootParams.regionEnd) { + memset(*(u32*)&__OSRebootParams.regionEnd, 0, + (u32)OSGetArenaHi() - *(u32*)&__OSRebootParams.regionEnd); } } } /* 80339F24-80339F60 334864 003C+00 1/1 0/0 0/0 .text InquiryCallback */ -static void InquiryCallback(u32 result, DVDCommandBlock* block) { +static void InquiryCallback(s32 result, DVDCommandBlock* block) { switch (block->state) { case 0: __OSDeviceCode = (u16)(0x8000 | DriveInfo.device_code); @@ -319,7 +335,6 @@ static u8 DriveBlock[48]; #pragma pop /* 8044BAB0-8044BAD0 0787D0 001C+04 0/1 1/1 0/0 .bss __OSRebootParams */ -extern OSExecParams __OSRebootParams; OSExecParams __OSRebootParams; /* 80450980-80450984 -00001 0004+00 1/1 0/0 0/0 .sdata __OSVersion */ @@ -328,11 +343,13 @@ SECTION_SDATA static void* __OSVersion = (void*)&lit_1; /* 80450984-8045098C 000404 0006+02 1/1 0/0 0/0 .sdata @116 */ SECTION_SDATA static char lit_116[6] = "%08x\n"; -extern void* __ArenaHi; +extern u8 __ArenaHi[]; +extern u8 __ArenaLo[]; extern void* _stack_end; extern char _db_stack_end[]; /* 80339F60-8033A440 3348A0 04E0+00 0/0 2/2 0/0 .text OSInit */ +// this seems to match, but it's loading __ArenaLo from the wrong address? #ifdef NONMATCHING void OSInit(void) { /* @@ -341,15 +358,14 @@ void OSInit(void) { - loading debug info and setting up heap bounds largely happen here - a lot of OS reporting also gets controlled here */ - // pretty sure this is the min(/max) amount of pointers etc for the stack to match + BI2Debug* DebugInfo; void* debugArenaLo; u32 inputConsoleType; u32 tdev; - // check if we've already done all this or not - if ((BOOL)AreWeInitialized == FALSE) { // fantastic name - AreWeInitialized = TRUE; // flag to make sure we don't have to do this again + if ((BOOL)AreWeInitialized == FALSE) { + AreWeInitialized = TRUE; // SYSTEM // __OSStartTime = __OSGetSystemTime(); @@ -362,13 +378,10 @@ void OSInit(void) { PPCMtpmc2(0); PPCMtpmc3(0); PPCMtpmc4(0); - - // set some PPC things PPCDisableSpeculation(); PPCSetFpNonIEEEMode(); // DEBUG // - // load some DVD stuff BI2DebugFlag = 0; // debug flag from the DVD BI2 header BootInfo = (OSBootInfo*)OS_BASE_CACHED; // set pointer to BootInfo @@ -379,25 +392,22 @@ void OSInit(void) { // the address for where the BI2 debug info is, is stored at OS_BI2_DEBUG_ADDRESS DebugInfo = (BI2Debug*)*((u32*)OS_BI2_DEBUG_ADDRESS); - // if the debug info address exists, grab some debug info if (DebugInfo != NULL) { BI2DebugFlag = &DebugInfo->debugFlag; // debug flag from DVD BI2 __PADSpec = (u32)DebugInfo->padSpec; // some other info from DVD BI2 *((u8*)DEBUGFLAG_ADDR) = (u8)*BI2DebugFlag; // store flag in mem *((u8*)OS_DEBUG_ADDRESS_2) = (u8)__PADSpec; // store other info in mem - } else if (BootInfo->arena_hi) { // if the top of the heap is already set + } else if (BootInfo->arena_hi) { BI2DebugFlagHolder = (u32*)*((u8*)DEBUGFLAG_ADDR); // grab whatever's stored at 0x800030E8 BI2DebugFlag = (u32*)&BI2DebugFlagHolder; // flag is then address of flag holder __PADSpec = (u32) * ((u8*)OS_DEBUG_ADDRESS_2); // pad spec is whatever's at 0x800030E9 } - __DVDLongFileNameFlag = 1; // we made it through debug! + __DVDLongFileNameFlag = 1; // HEAP // - // set up bottom of heap (ArenaLo) - // grab address from BootInfo if it exists, otherwise use default __ArenaLo - OSSetArenaLo((BootInfo->arena_lo == NULL) ? /* __ArenaLo */ _stack_end : BootInfo->arena_lo); + OSSetArenaLo((BootInfo->arena_lo == NULL) ? __ArenaLo : BootInfo->arena_lo); // if the input arenaLo is null, and debug flag location exists (and flag is < 2), // set arenaLo to just past the end of the db stack @@ -406,12 +416,9 @@ void OSInit(void) { OSSetArenaLo(debugArenaLo); } - // set up top of heap (ArenaHi) - // grab address from BootInfo if it exists, otherwise use default __ArenaHi OSSetArenaHi((BootInfo->arena_hi == NULL) ? __ArenaHi : BootInfo->arena_hi); // OS INIT AND REPORT // - // initialise a whole bunch of OS stuff OSExceptionInit(); __OSInitSystemCall(); OSInitAlarm(); @@ -430,31 +437,23 @@ void OSInit(void) { __OSInitMemoryProtection(); } - // begin OS reporting OSReport("\nDolphin OS\n"); OSReport("Kernel built : %s %s\n", "Nov 10 2004", "06:26:41"); OSReport("Console Type : "); - // this is a function in the same file, but it doesn't seem to match - // inputConsoleType = OSGetConsoleType(); - - // inputConsoleType = (BootInfo == NULL || (inputConsoleType = BootInfo->consoleType) == 0) - // ? 0x10000002 : BootInfo->consoleType; if (BootInfo == NULL || (inputConsoleType = BootInfo->console_type) == 0) { inputConsoleType = OS_CONSOLE_ARTHUR; // default console type } else { inputConsoleType = BootInfo->console_type; } - // work out what console type this corresponds to and report it - // consoleTypeSwitchHi = inputConsoleType & 0xF0000000; - switch (inputConsoleType & 0xf0000000) { // check "first" byte + switch (inputConsoleType & 0xF0000000) { case OS_CONSOLE_RETAIL: OSReport("Retail %d\n", inputConsoleType); break; case OS_CONSOLE_DEVELOPMENT: case OS_CONSOLE_TDEV: - switch (inputConsoleType & 0x0fffffff) { // if "first" byte is 2, check "the rest" + switch (inputConsoleType & 0x0FFFFFFF) { case OS_CONSOLE_EMULATOR: OSReport("Mac Emulator\n"); break; @@ -468,7 +467,7 @@ void OSInit(void) { OSReport("EPPC Minnow\n"); break; default: - tdev = ((u32)inputConsoleType & 0x0fffffff); + tdev = (u32)inputConsoleType & 0x0FFFFFFF; OSReport("Development HW%d (%08x)\n", tdev - 3, inputConsoleType); break; } @@ -478,23 +477,17 @@ void OSInit(void) { break; } - // report memory size OSReport("Memory %d MB\n", (u32)BootInfo->memory_size >> 0x14U); - // report heap bounds OSReport("Arena : 0x%x - 0x%x\n", OSGetArenaLo(), OSGetArenaHi()); - // report OS version OSRegisterVersion(__OSVersion); - // if location of debug flag exists, and flag is >= 2, enable MetroTRKInterrupts if (BI2DebugFlag && ((*BI2DebugFlag) >= 2)) { EnableMetroTRKInterrupts(); } - // free up memory and re-enable things ClearArena(); OSEnableInterrupts(); - // check if we can load OS from IPL; if not, grab it from DVD (?) if ((BOOL)__OSInIPL == FALSE) { DVDInit(); if ((BOOL)__OSIsGcam) { @@ -502,8 +495,7 @@ void OSInit(void) { return; } DCInvalidateRange(&DriveInfo, sizeof(DriveInfo)); - DVDInquiryAsync((DVDCommandBlock*)&DriveBlock, &DriveInfo, - (DVDCBCallback)InquiryCallback); + DVDInquiryAsync((DVDCommandBlock*)&DriveBlock, &DriveInfo, InquiryCallback); } } } diff --git a/libs/dolphin/os/OSAlarm.c b/libs/dolphin/os/OSAlarm.c index 7375ca5cd0..84bc56c4a4 100644 --- a/libs/dolphin/os/OSAlarm.c +++ b/libs/dolphin/os/OSAlarm.c @@ -1,32 +1,14 @@ -// -// Generated By: dol2asm -// Translation Unit: OSAlarm -// - #include "dolphin/os/OSAlarm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/os/OSReset.h" -static s32 OnReset(s32 param_0); +static BOOL OnReset(BOOL param_0); +BOOL __DVDTestAlarm(OSAlarm* alarm); -// -// External References: -// - -void __DVDTestAlarm(); -void __div2i(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 803CF480-803CF490 -00001 0010+00 1/1 0/0 0/0 .data ResetFunctionInfo */ static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 0xFFFFFFFF, - NULL, - NULL, }; /* 80451638-80451640 000B38 0008+00 5/5 0/0 0/0 .sbss AlarmQueue */ @@ -236,11 +218,23 @@ static asm void DecrementerExceptionHandler(register __OSException exception, } /* 8033AFD8-8033B078 335918 00A0+00 1/0 0/0 0/0 .text OnReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm s32 OnReset(s32 param_0) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OnReset.s" +static BOOL OnReset(BOOL final) { + OSAlarm* alarm; + OSAlarm* next; + + if (final != FALSE) { + alarm = AlarmQueue.head; + next = (alarm) ? alarm->link.next : NULL; + + while (alarm != NULL) { + if (__DVDTestAlarm(alarm) == FALSE) { + OSCancelAlarm(alarm); + } + + alarm = next; + next = (alarm) ? alarm->link.next : NULL; + } + } + + return TRUE; } -#pragma pop diff --git a/libs/dolphin/os/OSAlloc.c b/libs/dolphin/os/OSAlloc.c index 6f5ff3c4ec..593d0397d9 100644 --- a/libs/dolphin/os/OSAlloc.c +++ b/libs/dolphin/os/OSAlloc.c @@ -1,7 +1,3 @@ -// -// Translation Unit: OSAlloc -// - #include "dolphin/os/OSAlloc.h" /* 8033B078-8033B124 3359B8 00AC+00 1/1 0/0 0/0 .text DLInsert */ diff --git a/libs/dolphin/os/OSArena.c b/libs/dolphin/os/OSArena.c index 8afdc5ff72..54b0f05e14 100644 --- a/libs/dolphin/os/OSArena.c +++ b/libs/dolphin/os/OSArena.c @@ -1,11 +1,6 @@ -// -// Translation Unit: OSArena -// - #include "dolphin/os/OSArena.h" #include "dolphin/os/OSAlloc.h" -/* ############################################################################################## */ /* 80451650-80451658 000B50 0004+04 2/1 0/0 0/0 .sbss __OSArenaHi */ static void* __OSArenaHi; @@ -14,7 +9,6 @@ void* OSGetArenaHi(void) { return __OSArenaHi; } -/* ############################################################################################## */ /* 80450998-804509A0 000418 0004+04 3/2 0/0 0/0 .sdata __OSArenaLo */ static void* __OSArenaLo = (void*)0xFFFFFFFF; diff --git a/libs/dolphin/os/OSAudioSystem.c b/libs/dolphin/os/OSAudioSystem.c index 495bad5847..798ea809b4 100644 --- a/libs/dolphin/os/OSAudioSystem.c +++ b/libs/dolphin/os/OSAudioSystem.c @@ -1,24 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: OSAudioSystem -// - #include "dolphin/os/OSAudioSystem.h" -#include "dol2asm.h" -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" #include "dolphin/os/OSTime.h" +#include "string.h" -// -// External References: -// - -SECTION_INIT void memcpy(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 803CF490-803CF510 02C5B0 0080+00 1/1 0/0 0/0 .data DSPInitCode */ static u8 DSPInitCode[128] = { 0x02, 0x9F, 0x00, 0x10, 0x02, 0x9F, 0x00, 0x33, 0x02, 0x9F, 0x00, 0x34, 0x02, 0x9F, 0x00, 0x35, diff --git a/libs/dolphin/os/OSCache.c b/libs/dolphin/os/OSCache.c index af8d46088a..815a9b0f3a 100644 --- a/libs/dolphin/os/OSCache.c +++ b/libs/dolphin/os/OSCache.c @@ -1,22 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: OSCache -// - #include "dolphin/os/OSCache.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/db/db.h" -#include "dolphin/os/OS.h" +#include "dolphin/db.h" +#include "dolphin/os.h" #include "dolphin/os/OSInterrupt.h" -// -// External References: -// - -// -// Declarations: -// - /* 8033B56C-8033B580 335EAC 0014+00 1/1 0/0 0/0 .text DCEnable */ static asm void DCEnable(void) { // clang-format off @@ -373,8 +360,6 @@ asm void LCQueueWait(register u32 len) { // clang-format on } -/* ############################################################################################## */ - static void L2Disable(void) { __sync(); PPCMtl2cr(PPCMfl2cr() & ~0x80000000); @@ -393,8 +378,6 @@ void L2GlobalInvalidate(void) { } } -/* ############################################################################################## */ - /* 8033B990-8033BAF0 3362D0 0160+00 1/1 0/0 0/0 .text DMAErrorHandler */ void DMAErrorHandler(u16 error, OSContext* context, ...) { u32 hid2 = PPCMfhid2(); @@ -431,9 +414,6 @@ void DMAErrorHandler(u16 error, OSContext* context, ...) { PPCMthid2(hid2); } -/* ############################################################################################## */ -/* 803CF6BC-803CF6D8 02C7DC 0019+03 0/1 0/0 0/0 .data @104 */ - static void L2Init(void) { u32 oldMSR; oldMSR = PPCMfmsr(); diff --git a/libs/dolphin/os/OSContext.c b/libs/dolphin/os/OSContext.c index 58a79f284e..5346925509 100644 --- a/libs/dolphin/os/OSContext.c +++ b/libs/dolphin/os/OSContext.c @@ -1,6 +1,6 @@ #include "dolphin/os/OSContext.h" -#include "dolphin/db/db.h" -#include "dolphin/os/OS.h" +#include "dolphin/db.h" +#include "dolphin/os.h" volatile OSContext* __OSCurrentContext : (OS_BASE_CACHED | 0x00D4); volatile OSContext* __OSFPUContext : (OS_BASE_CACHED | 0x00D8); diff --git a/libs/dolphin/os/OSError.c b/libs/dolphin/os/OSError.c index e9bec25c00..259683e0eb 100644 --- a/libs/dolphin/os/OSError.c +++ b/libs/dolphin/os/OSError.c @@ -1,37 +1,58 @@ -// -// Generated By: dol2asm -// Translation Unit: OSError -// - #include "dolphin/os/OSError.h" -#include "dol2asm.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/os/OS.h" +#include "dolphin/dsp.h" +#include "dolphin/dvd/dvdlow.h" +#include "dolphin/os.h" OSThread* __OSCurrentThread : (OS_BASE_CACHED | 0x00E4); OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); volatile OSContext* __OSFPUContext : (OS_BASE_CACHED | 0x00D8); -// -// External References: -// - extern volatile u32 __OSLastInterruptSrr0; extern volatile s16 __OSLastInterrupt; extern volatile OSTime __OSLastInterruptTime; -// -// Declarations: -// - -/* ############################################################################################## */ /* 8044BAD0-8044BB20 0787F0 0044+0C 2/2 2/2 0/0 .bss __OSErrorTable */ -extern OSErrorHandlerEx __OSErrorTable[17]; -OSErrorHandlerEx __OSErrorTable[17]; +extern OSErrorHandlerEx __OSErrorTable[16]; +OSErrorHandlerEx __OSErrorTable[16]; /* 804509A0-804509A4 000420 0004+00 1/1 2/2 0/0 .sdata __OSFpscrEnableBits */ #define FPSCR_ENABLE (FPSCR_VE | FPSCR_OE | FPSCR_UE | FPSCR_ZE | FPSCR_XE) -SECTION_SDATA extern u32 __OSFpscrEnableBits = FPSCR_ENABLE; +extern u32 __OSFpscrEnableBits = FPSCR_ENABLE; + +__declspec(weak) void OSReport(const char* msg, ...) { + va_list marker; + + va_start(marker, msg); + vprintf(msg, marker); + va_end(marker); +} + +__declspec(weak) void OSVReport(const char* msg, va_list list) { + vprintf(msg, list); +} + +__declspec(weak) void OSPanic(const char* file, s32 line, const char* msg, ...) { + va_list marker; + u32 i; + u32* p; + + OSDisableInterrupts(); + va_start(marker, msg); + vprintf(msg, marker); + va_end(marker); + OSReport(" in \"%s\" on line %d.\n", file, line); + + // actually useful for debugging- stack crawl + OSReport("\nAddress: Back Chain LR Save\n"); + for (i = 0, p = (u32*)OSGetStackPointer(); // get current stack pointer + p && (u32)p != 0xffffffff && i++ < 16; p = (u32*)*p) // get caller stack pointer + { + OSReport("0x%08x: 0x%08x 0x%08x\n", p, p[0], p[1]); + } + + PPCHalt(); +} /* 8033C580-8033C798 336EC0 0218+00 0/0 4/4 0/0 .text OSSetErrorHandler */ OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { @@ -40,7 +61,7 @@ OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { enabled = OSDisableInterrupts(); oldHandler = __OSErrorTable[error]; - __OSErrorTable[error] = (OSErrorHandlerEx) handler; + __OSErrorTable[error] = (OSErrorHandlerEx)handler; if (error == EXCEPTION_FLOATING_POINT_EXCEPTION) { u32 msr; @@ -99,145 +120,26 @@ OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { return oldHandler; } -/* ############################################################################################## */ -/* 803CF918-803CF930 02CA38 0016+02 1/1 0/0 0/0 .data @13 */ -#pragma push -#pragma force_active on - SECTION_DATA static char lit_13[] = " in \"%s\" on line %d.\n"; - #pragma pop - -// /* 803CF930-803CF958 02CA50 0026+02 0/0 0/0 0/0 .data @14 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_14[] = "\nAddress: Back Chain LR Save\n"; -#pragma pop - -// /* 803CF958-803CF974 02CA78 001C+00 0/0 0/0 0/0 .data @15 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_15[] = "0x%08x: 0x%08x 0x%08x\n"; -#pragma pop - -/* 803CF974-803CF994 02CA94 001D+03 0/1 0/0 0/0 .data @74 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_74[] = "Non-recoverable Exception %d"; -#pragma pop - -/* 803CF994-803CF9AC 02CAB4 0017+01 0/1 0/0 0/0 .data @75 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_75[] = "Unhandled Exception %d"; -#pragma pop - -/* 803CF9AC-803CF9E0 02CACC 0031+03 0/1 0/0 0/0 .data @77 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_77[] = "\nDSISR = 0x%08x DAR = 0x%08x\n"; -#pragma pop - -/* 803CF9E0-803CF9F0 02CB00 0010+00 0/1 0/0 0/0 .data @78 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_78[] = "TB = 0x%016llx\n"; -#pragma pop - -/* 803CF9F0-803CFA50 02CB10 0060+00 0/1 0/0 0/0 .data @79 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_79[] = "\nInstruction at 0x%x (read from SRR0) attempted to access " - "invalid address 0x%x (read from DAR)\n"; -#pragma pop - -/* 803CFA50-803CFA9C 02CB70 004C+00 0/0 0/0 0/0 .data @80 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_80[] = - "\nAttempted to fetch instruction from invalid address 0x%x (read from SRR0)\n"; -#pragma pop - -/* 803CFA9C-803CFB00 02CBBC 0062+02 0/0 0/0 0/0 .data @81 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_81[] = "\nInstruction at 0x%x (read from SRR0) attempted to access " - "unaligned address 0x%x (read from DAR)\n"; -#pragma pop - -/* 803CFB00-803CFB60 02CC20 0060+00 0/0 0/0 0/0 .data @82 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_82[] = "\nProgram exception : Possible illegal instruction/operation " - "at or around 0x%x (read from SRR0)\n"; -#pragma pop - -/* 803CFB60-803CFB80 02CC80 001F+01 0/0 0/0 0/0 .data @83 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_83[] = "AI DMA Address = 0x%04x%04x\n"; -#pragma pop - -/* 803CFB80-803CFBA0 02CCA0 001F+01 0/0 0/0 0/0 .data @84 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_84[] = "ARAM DMA Address = 0x%04x%04x\n"; -#pragma pop - -/* 803CFBA0-803CFBBC 02CCC0 001B+01 0/0 0/0 0/0 .data @85 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_85[] = "DI DMA Address = 0x%08x\n"; -#pragma pop - -/* 803CFBBC-803CFBF4 02CCDC 0035+03 0/1 0/0 0/0 .data @86 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_86[] = "\nLast interrupt (%d): SRR0 = 0x%08x TB = 0x%016llx\n"; -#pragma pop - -/* 803CFBF4-803CFC38 -00001 0040+04 1/1 0/0 0/0 .data @87 */ -SECTION_DATA static void* lit_87[16 + 1 /* padding */] = { - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x20C), - (void*)(((char*)__OSUnhandledException) + 0x224), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x238), - (void*)(((char*)__OSUnhandledException) + 0x250), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x268), - /* padding */ - NULL, -}; - -/* 804509A4-804509A8 000424 0002+02 1/1 0/0 0/0 .sdata @76 */ -SECTION_SDATA static char lit_76[] = "\n"; - /* 8033C798-8033CA80 3370D8 02E8+00 1/0 2/2 0/0 .text __OSUnhandledException */ -#ifdef NONMATCHING void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar) { OSTime now; now = OSGetTime(); - if (!(context->srr1 & MSR_RI)) { + if (!(context->srr1 & 2)) { OSReport("Non-recoverable Exception %d", exception); + } else { if (exception == EXCEPTION_PROGRAM && (context->srr1 & (0x80000000 >> 11)) && - __OSErrorTable[EXCEPTION_FLOATING_POINT_EXCEPTION] != 0) { + __OSErrorTable[EXCEPTION_FLOATING_POINT_EXCEPTION] != 0) + { u32 fpscr; u32 msr; exception = EXCEPTION_FLOATING_POINT_EXCEPTION; msr = PPCMfmsr(); - PPCMtmsr(msr | MSR_FP); + PPCMtmsr(msr | 0x2000); if (__OSFPUContext) { OSSaveFPUContext((OSContext*)__OSFPUContext); @@ -254,7 +156,7 @@ void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsi if (__OSFPUContext == context) { OSDisableScheduler(); __OSErrorTable[exception](exception, context, dsisr, dar); - context->srr1 &= ~MSR_FP; + context->srr1 &= ~0x2000; __OSFPUContext = NULL; context->fpscr &= @@ -264,7 +166,7 @@ void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsi OSEnableScheduler(); __OSReschedule(); } else { - context->srr1 &= ~MSR_FP; + context->srr1 &= ~0x2000; __OSFPUContext = NULL; } @@ -314,11 +216,11 @@ void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsi break; case EXCEPTION_MEMORY_PROTECTION: OSReport("\n"); - OSReport("AI DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000018], - __DSPRegs[0x00000018 + 1]); - OSReport("ARAM DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000010], - __DSPRegs[0x00000010 + 1]); - OSReport("DI DMA Address = 0x%08x\n", __DIRegs[0x00000005]); + OSReport("AI DMA Address = 0x%04x%04x\n", __DSPRegs[DSP_DMA_START_HI], + __DSPRegs[DSP_DMA_START_LO]); + OSReport("ARAM DMA Address = 0x%04x%04x\n", __DSPRegs[DSP_ARAM_DMA_MM_HI], + __DSPRegs[DSP_ARAM_DMA_MM_LO]); + OSReport("DI DMA Address = 0x%08x\n", __DIRegs[5]); break; } @@ -327,13 +229,3 @@ void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsi PPCHalt(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar) { - nofralloc -#include "asm/dolphin/os/OSError/__OSUnhandledException.s" -} -#pragma pop -#endif diff --git a/libs/dolphin/os/OSExec.c b/libs/dolphin/os/OSExec.c index 8b51b53d6c..77746d9ed7 100644 --- a/libs/dolphin/os/OSExec.c +++ b/libs/dolphin/os/OSExec.c @@ -4,10 +4,10 @@ // #include "dolphin/os/OSExec.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/os/OSReset.h" -#include "dolphin/dvd/dvd.h" -#include "dolphin/ai/ai.h" +#include "dolphin/dvd.h" +#include "dolphin/ai.h" #include "dol2asm.h" #include "string.h" #include "printf.h" diff --git a/libs/dolphin/os/OSFont.c b/libs/dolphin/os/OSFont.c index eb417aaa60..cf512f42fa 100644 --- a/libs/dolphin/os/OSFont.c +++ b/libs/dolphin/os/OSFont.c @@ -1,11 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: OSFont -// - #include "dolphin/os/OSFont.h" -#include "dolphin/os/OS.h" -#include "dolphin/vi/vi.h" +#include "dolphin/os.h" +#include "dolphin/vi.h" /* ############################################################################################## */ /* 803CFC48-803CFDC8 02CD68 0180+00 1/1 0/0 0/0 .data HankakuToCode */ diff --git a/libs/dolphin/os/OSInterrupt.c b/libs/dolphin/os/OSInterrupt.c index 72e96c4011..bb8e433547 100644 --- a/libs/dolphin/os/OSInterrupt.c +++ b/libs/dolphin/os/OSInterrupt.c @@ -1,27 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: OSInterrupt -// - #include "dolphin/os/OSInterrupt.h" -#include "dol2asm.h" -#include "dolphin/dsp/dsp.h" +#include "dolphin/dsp.h" #include "dolphin/exi/EXIBios.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" +#include "string.h" vu32 __PIRegs[12] : 0xCC003000; vu16 __MEMRegs[64] : 0xCC004000; -// -// External References: -// - -SECTION_INIT void memset(); - -// -// Declarations: -// - /* 8033D6F4-8033D700 338034 000C+00 2/2 200/200 5/5 .text OSDisableInterrupts */ asm BOOL OSDisableInterrupts(void) { // clang-format off @@ -85,24 +70,24 @@ set_msr: /* ############################################################################################## */ /* 80451670-80451674 000B70 0004+00 4/4 0/0 0/0 .sbss InterruptHandlerTable */ -static OSInterruptHandler* InterruptHandlerTable; +static __OSInterruptHandler* InterruptHandlerTable; /* 8033D740-8033D75C 338080 001C+00 0/0 12/12 0/0 .text __OSSetInterruptHandler */ -OSInterruptHandler __OSSetInterruptHandler(OSInterrupt type, OSInterruptHandler handler) { - OSInterruptHandler old = InterruptHandlerTable[type]; +__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt type, __OSInterruptHandler handler) { + __OSInterruptHandler old = InterruptHandlerTable[type]; InterruptHandlerTable[type] = handler; return old; } /* 8033D75C-8033D770 33809C 0014+00 0/0 1/1 0/0 .text __OSGetInterruptHandler */ -OSInterruptHandler __OSGetInterruptHandler(OSInterrupt type) { +__OSInterruptHandler __OSGetInterruptHandler(__OSInterrupt type) { return InterruptHandlerTable[type]; } /* 8033D770-8033D7E4 3380B0 0074+00 0/0 1/1 0/0 .text __OSInterruptInit */ void __OSInterruptInit(void) { InterruptHandlerTable = OSPhysicalToCached(0x3040); - memset(InterruptHandlerTable, 0, 32 * sizeof(OSInterruptHandler)); + memset(InterruptHandlerTable, 0, 32 * sizeof(__OSInterruptHandler)); *(OSInterruptMask*)OSPhysicalToCached(0x00C4) = 0; @@ -320,8 +305,8 @@ void __OSDispatchInterrupt(__OSException exception, OSContext* context) { OSInterruptMask cause; OSInterruptMask unmasked; OSInterruptMask* prio; - OSInterrupt interrupt; - OSInterruptHandler handler; + __OSInterrupt interrupt; + __OSInterruptHandler handler; intsr = __PIRegs[0]; intsr &= ~0x00010000; @@ -409,7 +394,7 @@ void __OSDispatchInterrupt(__OSException exception, OSContext* context) { if (unmasked) { for (prio = InterruptPrioTable;; ++prio) { if (unmasked & *prio) { - interrupt = (OSInterrupt)__cntlzw(unmasked & *prio); + interrupt = (__OSInterrupt)__cntlzw(unmasked & *prio); break; } } @@ -434,7 +419,7 @@ void __OSDispatchInterrupt(__OSException exception, OSContext* context) { } /* 8033DF10-8033DF60 338850 0050+00 1/1 0/0 0/0 .text ExternalInterruptHandler */ -static asm void ExternalInterruptHandler(register OSInterrupt type, register OSContext* context) { +static asm void ExternalInterruptHandler(register __OSInterrupt type, register OSContext* context) { // clang-format off nofralloc diff --git a/libs/dolphin/os/OSMemory.c b/libs/dolphin/os/OSMemory.c index 279faf3c6b..6b191e3a84 100644 --- a/libs/dolphin/os/OSMemory.c +++ b/libs/dolphin/os/OSMemory.c @@ -1,10 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: OSMemory -// - #include "dolphin/os/OSMemory.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/os/OSReset.h" #define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) @@ -12,28 +7,19 @@ vu16 __MEMRegs[64] : 0xCC004000; -// -// External References: -// - extern OSErrorHandlerEx __OSErrorTable[16]; -// -// Declarations: -// - /* 8033EC6C-8033ECA8 3395AC 003C+00 1/0 0/0 0/0 .text OnReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm s32 OnReset(s32 param_0) { - nofralloc -#include "asm/dolphin/os/OSMemory/OnReset.s" +static BOOL OnReset(BOOL final) { + if (final != FALSE) { + __MEMRegs[8] = 0xFF; + __OSMaskInterrupts(OS_INTERRUPTMASK_MEM_RESET); + } + return TRUE; } -#pragma pop /* 8033ECA8-8033ED14 3395E8 006C+00 1/1 0/0 0/0 .text MEMIntrruptHandler */ -static void MEMIntrruptHandler(OSInterrupt interrupt, OSContext* context) { +static void MEMIntrruptHandler(__OSInterrupt interrupt, OSContext* context) { u32 addr; u32 cause; @@ -186,8 +172,6 @@ static asm void RealMode(register u32 config) { static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 0x7F, - NULL, - NULL, }; inline u32 OSGetPhysicalMemSize() { @@ -219,7 +203,8 @@ void __OSInitMemoryProtection() { OSRegisterResetFunction(&ResetFunctionInfo); if (OSGetConsoleSimulatedMemSize() < OSGetPhysicalMemSize() && - OSGetConsoleSimulatedMemSize() == 0x1800000) { + OSGetConsoleSimulatedMemSize() == 0x1800000) + { DCInvalidateRange((void*)0x81800000, 0x1800000); __MEMRegs[20] = 2; } diff --git a/libs/dolphin/os/OSMessage.c b/libs/dolphin/os/OSMessage.c index ae85ba8b11..95c2290acf 100644 --- a/libs/dolphin/os/OSMessage.c +++ b/libs/dolphin/os/OSMessage.c @@ -1,15 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: OSMessage -// - #include "dolphin/os/OSMessage.h" #include "dolphin/os/OSThread.h" -// -// Declarations: -// - /* 8033E994-8033E9F4 3392D4 0060+00 0/0 13/13 5/5 .text OSInitMessageQueue */ void OSInitMessageQueue(OSMessageQueue* mq, OSMessage* msgArray, s32 msgCount) { OSInitThreadQueue(&mq->sending_queue); @@ -74,11 +65,28 @@ BOOL OSReceiveMessage(OSMessageQueue* mq, OSMessage* msg, s32 flags) { } /* 8033EB98-8033EC6C 3394D8 00D4+00 0/0 1/1 0/0 .text OSJamMessage */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSJamMessage(OSMessageQueue* queue, OSMessage msg, s32 flags) { - nofralloc -#include "asm/dolphin/os/OSMessage/OSJamMessage.s" +BOOL OSJamMessage(OSMessageQueue* queue, void* msg, s32 flags) { + s32 lastMesg; + u32 interrupt; + + interrupt = OSDisableInterrupts(); + + while (queue->num_messages <= queue->num_used) { + if (!(flags & OS_MSG_PERSISTENT)) { + OSRestoreInterrupts(interrupt); + return FALSE; + } + + OSSleepThread(&queue->sending_queue); + } + + // Find last position in queue + lastMesg = (queue->first_index + queue->num_messages - 1) % queue->num_messages; + queue->first_index = lastMesg; + queue->message_array[queue->first_index] = msg; + queue->num_used++; + + OSWakeupThread(&queue->receiving_queue); + OSRestoreInterrupts(interrupt); + return TRUE; } -#pragma pop diff --git a/libs/dolphin/os/OSMutex.c b/libs/dolphin/os/OSMutex.c index 6684bbcfa9..5b6eddf903 100644 --- a/libs/dolphin/os/OSMutex.c +++ b/libs/dolphin/os/OSMutex.c @@ -1,10 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: OSMutex -// - #include "dolphin/os/OSMutex.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #define PushTail(queue, mutex, link) \ do { \ diff --git a/libs/dolphin/os/OSReboot.c b/libs/dolphin/os/OSReboot.c index 274736930a..e1b2d806dd 100644 --- a/libs/dolphin/os/OSReboot.c +++ b/libs/dolphin/os/OSReboot.c @@ -1,13 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: OSReboot -// - #include "dolphin/os/OSReboot.h" #include "dolphin/os/OSArena.h" #include "dolphin/os/OSContext.h" #include "dolphin/os/OSExec.h" -#include "dolphin/types.h" /* 8033F5D0-8033F640 339F10 0070+00 0/0 1/1 0/0 .text __OSReboot */ void __OSReboot(u32 resetCode, u32 bootDol) { @@ -22,7 +16,6 @@ void __OSReboot(u32 resetCode, u32 bootDol) { __OSBootDol(bootDol, resetCode | 0x80000000, &iVar1); } -/* ############################################################################################## */ /* 80451688-8045168C 000B88 0004+00 2/2 0/0 0/0 .sbss SaveStart */ static void* SaveStart; diff --git a/libs/dolphin/os/OSReset.c b/libs/dolphin/os/OSReset.c index 4a9ed741a8..3c2f4bb2db 100644 --- a/libs/dolphin/os/OSReset.c +++ b/libs/dolphin/os/OSReset.c @@ -1,28 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: OSReset -// - #include "dolphin/os/OSReset.h" -#include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" +#include "string.h" vu16 __VIRegs[59] : 0xCC002000; OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); -// -// External References: -// - -SECTION_INIT void memset(); -int __PADDisableRecalibration(); extern OSExecParams __OSRebootParams; -// -// Declarations: -// - -/* ############################################################################################## */ /* 80451690-80451698 000B90 0008+00 2/2 0/0 0/0 .sbss ResetFunctionQueue */ static OSResetQueue ResetFunctionQueue; @@ -66,7 +50,7 @@ BOOL __OSCallResetFunctions(u32 arg0) { u32 priority = 0; s32 temp; - for (iter = ResetFunctionQueue.first; iter != NULL; ) { + for (iter = ResetFunctionQueue.first; iter != NULL;) { if (retCode != 0 && priority != iter->priority) break; temp = !iter->func(arg0); @@ -181,24 +165,29 @@ void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { sram->flags |= 0x40; __OSUnlockSram(TRUE); - resetCode = 0; } - if (reset == OS_RESET_SHUTDOWN || (reset == OS_RESET_RESTART && (bootThisDol || resetCode + 0x3fff0000 == 0))) { + if (reset == OS_RESET_SHUTDOWN || + (reset == OS_RESET_RESTART && (bootThisDol || resetCode + 0x3fff0000 == 0))) + { __OSStopAudioSystem(); disableRecalibration = __PADDisableRecalibration(TRUE); - while (!__OSCallResetFunctions(FALSE)); - while (!__OSSyncSram()); - OSDisableInterrupts(); + while (!__OSCallResetFunctions(FALSE)) + ; + while (!__OSSyncSram()) + ; + OSDisableInterrupts(); __OSCallResetFunctions(TRUE); LCDisable(); __PADDisableRecalibration(disableRecalibration); KillThreads(); } else { __OSStopAudioSystem(); - while (!__OSCallResetFunctions(FALSE)); - while (!__OSSyncSram()); + while (!__OSCallResetFunctions(FALSE)) + ; + while (!__OSSyncSram()) + ; OSDisableInterrupts(); __OSCallResetFunctions(TRUE); LCDisable(); @@ -209,7 +198,8 @@ void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { __OSDoHotReset(resetCode); } else if (reset == OS_RESET_RESTART) { if (forceMenu == TRUE) { - OSReport("OSResetSystem(): You can't specify TRUE to forceMenu if you restart. Ignored\n"); + OSReport( + "OSResetSystem(): You can't specify TRUE to forceMenu if you restart. Ignored\n"); } OSEnableScheduler(); __OSReboot(resetCode, bootThisDol); @@ -223,8 +213,7 @@ void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { } /* 8033FAAC-8033FAE4 33A3EC 0038+00 0/0 3/3 0/0 .text OSGetResetCode */ -u32 OSGetResetCode(void) -{ +u32 OSGetResetCode(void) { if (__OSRebootParams.valid) return 0x80000000 | __OSRebootParams.restartCode; diff --git a/libs/dolphin/os/OSResetSW.c b/libs/dolphin/os/OSResetSW.c index 54bc6f4c8b..9ee74c6bb9 100644 --- a/libs/dolphin/os/OSResetSW.c +++ b/libs/dolphin/os/OSResetSW.c @@ -1,27 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: OSResetSW -// - #include "dolphin/os/OSResetSW.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/os/OSReset.h" u8 GameChoice : (OS_BASE_CACHED | 0x30E3); -void __OSResetSWInterruptHandler(OSInterrupt interrupt, OSContext* context); +void __OSResetSWInterruptHandler(__OSInterrupt interrupt, OSContext* context); -// -// External References: -// - -void __div2i(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 804516A0-804516A4 000BA0 0004+00 1/1 0/0 0/0 .sbss ResetCallback */ static OSResetCallback ResetCallback; @@ -38,7 +22,7 @@ static OSTime HoldUp; static OSTime HoldDown; /* 8033FAE4-8033FBD8 33A424 00F4+00 0/0 1/1 0/0 .text __OSResetSWInterruptHandler */ -void __OSResetSWInterruptHandler(OSInterrupt interrupt, OSContext* context) { +void __OSResetSWInterruptHandler(__OSInterrupt interrupt, OSContext* context) { OSResetCallback callback; HoldDown = __OSGetSystemTime(); diff --git a/libs/dolphin/os/OSRtc.c b/libs/dolphin/os/OSRtc.c index fca1f347b6..f3d0050437 100644 --- a/libs/dolphin/os/OSRtc.c +++ b/libs/dolphin/os/OSRtc.c @@ -1,21 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: OSRtc -// - #include "dolphin/os/OSRtc.h" -#include "dol2asm.h" #include "dolphin/os/OSInterrupt.h" static void WriteSramCallback(s32 chan, OSContext* context); static BOOL WriteSram(void* buffer, u32 offset, u32 size); static BOOL UnlockSram(BOOL commit, u32 offset); -// -// Declarations: -// - -/* ############################################################################################## */ /* 8044BB20-8044BB78 078840 0054+04 14/14 0/0 0/0 .bss Scb */ static SramControlBlock Scb ALIGN_DECL(32); @@ -102,10 +91,14 @@ static void* LockSram(u32 offset) { } /* 80340144-803401A0 33AA84 005C+00 0/0 3/3 0/0 .text __OSLockSram */ -OSSram* __OSLockSram() { return LockSram(0); } +OSSram* __OSLockSram() { + return LockSram(0); +} /* 803401A0-803401FC 33AAE0 005C+00 0/0 4/4 0/0 .text __OSLockSramEx */ -OSSramEx* __OSLockSramEx() { return LockSram(sizeof(OSSram)); } +OSSramEx* __OSLockSramEx() { + return LockSram(sizeof(OSSram)); +} /* 803401FC-80340538 33AB3C 033C+00 10/10 0/0 0/0 .text UnlockSram */ static BOOL UnlockSram(BOOL commit, u32 offset) { @@ -147,12 +140,15 @@ static BOOL UnlockSram(BOOL commit, u32 offset) { return Scb.sync; } - /* 80340538-8034055C 33AE78 0024+00 0/0 3/3 0/0 .text __OSUnlockSram */ -BOOL __OSUnlockSram(BOOL commit) { return UnlockSram(commit, 0); } +BOOL __OSUnlockSram(BOOL commit) { + return UnlockSram(commit, 0); +} /* 8034055C-80340580 33AE9C 0024+00 0/0 4/4 0/0 .text __OSUnlockSramEx */ -BOOL __OSUnlockSramEx(BOOL commit) { return UnlockSram(commit, sizeof(OSSram)); } +BOOL __OSUnlockSramEx(BOOL commit) { + return UnlockSram(commit, sizeof(OSSram)); +} /* 80340580-80340590 33AEC0 0010+00 0/0 2/2 0/0 .text __OSSyncSram */ BOOL __OSSyncSram(void) { diff --git a/libs/dolphin/os/OSSync.c b/libs/dolphin/os/OSSync.c index 89e0cebcbd..cbdb9da4da 100644 --- a/libs/dolphin/os/OSSync.c +++ b/libs/dolphin/os/OSSync.c @@ -1,5 +1,5 @@ #include "dolphin/os/OSSync.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" void __OSSystemCallVectorStart(); void __OSSystemCallVectorEnd(); diff --git a/libs/dolphin/os/OSThread.c b/libs/dolphin/os/OSThread.c index c40f9482af..e8aaccb335 100644 --- a/libs/dolphin/os/OSThread.c +++ b/libs/dolphin/os/OSThread.c @@ -5,7 +5,7 @@ #include "dolphin/os/OSThread.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" OSThread* __OSCurrentThread : OS_BASE_CACHED + 0x00E4; OSThreadQueue __OSActiveThreadQueue : OS_BASE_CACHED + 0x00DC; @@ -144,7 +144,8 @@ static volatile BOOL RunQueueHint; /* 804516C8-804516D0 000BC8 0004+04 4/4 0/0 0/0 .sbss Reschedule */ static volatile s32 Reschedule; -extern void* _stack_end; +extern u8 _stack_end[]; +extern u8 _stack_addr[]; static inline void OSInitMutexQueue(OSMutexQueue* queue) { queue->head = queue->tail = NULL; @@ -156,6 +157,7 @@ static inline void OSSetCurrentThread(OSThread* thread) { } /* 80340B1C-80340C74 33B45C 0158+00 0/0 1/1 0/0 .text __OSThreadInit */ +// similar issue with OSInit where _stack address seems to be wrong? #ifdef NONMATCHING void __OSThreadInit() { OSThread* thread = &DefaultThread; @@ -174,8 +176,8 @@ void __OSThreadInit() { OSClearContext(&thread->context); OSSetCurrentContext(&thread->context); - /* thread->stack_base = (void*)_stack_addr; - thread->stack_end = (void*)_stack_end; */ + thread->stack_base = (void*)_stack_addr; + thread->stack_end = (void*)_stack_end; *(thread->stack_end) = OS_THREAD_STACK_MAGIC; OSSetCurrentThread(thread); @@ -246,7 +248,7 @@ static inline void SetRun(OSThread* thread) { /* 80340D44-80340DAC 33B684 0068+00 3/3 0/0 0/0 .text UnsetRun */ #pragma dont_inline on -static void UnsetRun(OSThread* thread) { +static void UnsetRun(OSThread* thread) { OSThreadQueue* queue; OSThread* next; OSThread* prev; @@ -335,9 +337,9 @@ void __OSPromoteThread(OSThread* thread, s32 priority) { if (thread->suspend_count > 0 || thread->effective_priority <= priority) { break; } - + thread = SetEffectivePriority(thread, priority); - } while(thread != NULL); + } while (thread != NULL); } static inline void __OSSwitchThread(OSThread* nextThread) { @@ -381,7 +383,8 @@ static OSThread* SelectThread(BOOL yield) { } if (!(currentThread->context.state & OS_CONTEXT_STATE_EXC) && - OSSaveContext(¤tThread->context)) { + OSSaveContext(¤tThread->context)) + { return 0; } } @@ -439,7 +442,7 @@ BOOL OSCreateThread(OSThread* thread_, void* func, void* param, void* stackBase, u32* stack; OSThread* thread; u32 stack1, stack2; - + if (priority < 0 || priority > 31) { return FALSE; } @@ -460,9 +463,9 @@ BOOL OSCreateThread(OSThread* thread_, void* func, void* param, void* stackBase, stack = (u32*)((u32)stackBase & 0xfffffff8); stack[-2] = 0; stack[-1] = 0; - OSInitContext(&thread->context, (u32)func,(u32)stack - 8); - thread->context.lr = (u32) OSExitThread; - thread->context.gpr[3] = (u32) param; + OSInitContext(&thread->context, (u32)func, (u32)stack - 8); + thread->context.lr = (u32)OSExitThread; + thread->context.gpr[3] = (u32)param; thread->stack_base = (u8*)stackBase; thread->stack_end = (void*)((u32)stackBase - stackSize); *(u32*)thread->stack_end = OS_THREAD_STACK_MAGIC; @@ -703,7 +706,7 @@ s32 CheckThreadQueue(OSThreadQueue* thread) { current = thread->head; - while(current) { + while (current) { if (current->link.next && current != current->link.next->link.prev) { return 0; } @@ -739,31 +742,40 @@ s32 OSCheckActiveThreads(void) { enabled = OSDisableInterrupts(); for (i = 0; i <= 31; i++) { - if (RunQueueBits & (1 << (31-i))) { + if (RunQueueBits & (1 << (31 - i))) { if (RunQueue[i].head == NULL || RunQueue[i].tail == NULL) { - OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && RunQueue[prio].tail != NULL in %d\n", 0x5e0); + OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && " + "RunQueue[prio].tail != NULL in %d\n", + 0x5e0); OSPanic(__FILE__, 0x5e0, ""); } } else { if (RunQueue[i].head != NULL || RunQueue[i].tail != NULL) { - OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && RunQueue[prio].tail == NULL in %d\n", 0x5e5); + OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && " + "RunQueue[prio].tail == NULL in %d\n", + 0x5e5); OSPanic(__FILE__, 0x5e5, ""); } } if (CheckThreadQueue(&RunQueue[i]) == 0) { - OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n", 0x5e7); + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n", + 0x5e7); OSPanic(__FILE__, 0x5e7, ""); } } if (OS_THREAD_QUEUE.head != NULL && OS_THREAD_QUEUE.head->active_threads_link.prev != NULL) { - OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || __OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n", 0x5ec); + OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || " + "__OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n", + 0x5ec); OSPanic(__FILE__, 0x5ec, ""); } if (OS_THREAD_QUEUE.tail != NULL && OS_THREAD_QUEUE.tail->active_threads_link.next != NULL) { - OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || __OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n", 0x5ee); + OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || " + "__OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n", + 0x5ee); OSPanic(__FILE__, 0x5ee, ""); } @@ -771,23 +783,37 @@ s32 OSCheckActiveThreads(void) { while (thread != NULL) { rv++; - if (thread->active_threads_link.next != NULL && thread != thread->active_threads_link.next->active_threads_link.prev) { - OSReport("OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == thread->linkActive.next->linkActive.prev in %d\n", 0x5f6); + if (thread->active_threads_link.next != NULL && + thread != thread->active_threads_link.next->active_threads_link.prev) + { + OSReport("OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == " + "thread->linkActive.next->linkActive.prev in %d\n", + 0x5f6); OSPanic(__FILE__, 0x5f6, ""); } - if (thread->active_threads_link.prev != NULL && thread != thread->active_threads_link.prev->active_threads_link.next) { - OSReport("OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == thread->linkActive.prev->linkActive.next in %d\n", 0x5f8); + if (thread->active_threads_link.prev != NULL && + thread != thread->active_threads_link.prev->active_threads_link.next) + { + OSReport("OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == " + "thread->linkActive.prev->linkActive.next in %d\n", + 0x5f8); OSPanic(__FILE__, 0x5f8, ""); } if (*(u32*)thread->stack_end != OS_THREAD_STACK_MAGIC) { - OSReport("OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n", 0x5fb); + OSReport( + "OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n", + 0x5fb); OSPanic(__FILE__, 0x5fb, ""); } - if (OS_PRIORITY_MIN > thread->effective_priority || thread->effective_priority > OS_PRIORITY_MAX+1) { - OSReport("OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= OS_PRIORITY_MAX+1 in %d\n", 0x5fe); + if (OS_PRIORITY_MIN > thread->effective_priority || + thread->effective_priority > OS_PRIORITY_MAX + 1) + { + OSReport("OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && " + "thread->priority <= OS_PRIORITY_MAX+1 in %d\n", + 0x5fe); OSPanic(__FILE__, 0x5fe, ""); } @@ -797,86 +823,103 @@ s32 OSCheckActiveThreads(void) { } if (!CheckThreadQueue(&thread->join_queue)) { - OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n", 0x600); + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n", + 0x600); OSPanic(__FILE__, 0x600, ""); } switch (thread->state) { - case OS_THREAD_STATE_READY: - if (thread->suspend_count <= 0) { - if (thread->queue != &RunQueue[thread->effective_priority]) { - OSReport("OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n", 0x606); - OSPanic(__FILE__, 0x606, ""); - } - - if (!isMember(&RunQueue[thread->effective_priority], thread)) { - OSReport("OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n", 0x607); - OSPanic(__FILE__, 0x607, ""); - } - - if (thread->effective_priority != __OSGetEffectivePriority(thread)) { - OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x608); - OSPanic(__FILE__, 0x608, ""); - } - } - break; - case OS_THREAD_STATE_RUNNING: - if (thread->suspend_count > 0) { - OSReport("OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n", 0x60c); - OSPanic(__FILE__, 0x60c, ""); + case OS_THREAD_STATE_READY: + if (thread->suspend_count <= 0) { + if (thread->queue != &RunQueue[thread->effective_priority]) { + OSReport("OSCheckActiveThreads: Failed thread->queue == " + "&RunQueue[thread->priority] in %d\n", + 0x606); + OSPanic(__FILE__, 0x606, ""); } - if (thread->queue != NULL) { - OSReport("OSCheckActiveThreads: Failed thread->queue == NULL in %d\n", 0x60d); - OSPanic(__FILE__, 0x60d, ""); + if (!isMember(&RunQueue[thread->effective_priority], thread)) { + OSReport("OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], " + "thread) in %d\n", + 0x607); + OSPanic(__FILE__, 0x607, ""); } if (thread->effective_priority != __OSGetEffectivePriority(thread)) { - OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x60e); - OSPanic(__FILE__, 0x60e, ""); - } - break; - case OS_THREAD_STATE_WAITING: - if (thread->queue == NULL) { - OSReport("OSCheckActiveThreads: Failed thread->queue != NULL in %d\n", 0x611); - OSPanic(__FILE__, 0x611, ""); + OSReport("OSCheckActiveThreads: Failed thread->priority == " + "__OSGetEffectivePriority(thread) in %d\n", + 0x608); + OSPanic(__FILE__, 0x608, ""); } + } + break; + case OS_THREAD_STATE_RUNNING: + if (thread->suspend_count > 0) { + OSReport("OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n", + 0x60c); + OSPanic(__FILE__, 0x60c, ""); + } - if (CheckThreadQueue(thread->queue) == 0) { - OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n", 0x612); - OSPanic(__FILE__, 0x612, ""); - } + if (thread->queue != NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queue == NULL in %d\n", 0x60d); + OSPanic(__FILE__, 0x60d, ""); + } - if (!isMember(thread->queue, thread)) { - OSReport("OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n", 0x613); - OSPanic(__FILE__, 0x613, ""); - } + if (thread->effective_priority != __OSGetEffectivePriority(thread)) { + OSReport("OSCheckActiveThreads: Failed thread->priority == " + "__OSGetEffectivePriority(thread) in %d\n", + 0x60e); + OSPanic(__FILE__, 0x60e, ""); + } + break; + case OS_THREAD_STATE_WAITING: + if (thread->queue == NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queue != NULL in %d\n", 0x611); + OSPanic(__FILE__, 0x611, ""); + } - if (thread->suspend_count <= 0) { - if (thread->effective_priority != __OSGetEffectivePriority(thread)) { - OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x616); - OSPanic(__FILE__, 0x616, ""); - } - } else if (thread->effective_priority != 32) { - OSReport("OSCheckActiveThreads: Failed thread->priority == 32 in %d\n", 0x61a); - OSPanic(__FILE__, 0x61a, ""); - } + if (CheckThreadQueue(thread->queue) == 0) { + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n", + 0x612); + OSPanic(__FILE__, 0x612, ""); + } - if (__OSCheckDeadLock(thread)) { - OSReport("OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n", 0x61c); - OSPanic(__FILE__, 0x61c, ""); + if (!isMember(thread->queue, thread)) { + OSReport("OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n", + 0x613); + OSPanic(__FILE__, 0x613, ""); + } + + if (thread->suspend_count <= 0) { + if (thread->effective_priority != __OSGetEffectivePriority(thread)) { + OSReport("OSCheckActiveThreads: Failed thread->priority == " + "__OSGetEffectivePriority(thread) in %d\n", + 0x616); + OSPanic(__FILE__, 0x616, ""); } - break; - case OS_THREAD_STATE_DEAD: - if (thread->owned_mutexes.head != NULL || thread->owned_mutexes.tail != NULL) { - OSReport("OSCheckActiveThreads: Failed thread->queueMutex.head == NULL && thread->queueMutex.tail == NULL in %d\n", 0x620); - OSPanic(__FILE__, 0x620, ""); - } - break; - default: - OSReport("OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n", thread->state, thread); - OSPanic(__FILE__, 0x626, ""); - break; + } else if (thread->effective_priority != 32) { + OSReport("OSCheckActiveThreads: Failed thread->priority == 32 in %d\n", 0x61a); + OSPanic(__FILE__, 0x61a, ""); + } + + if (__OSCheckDeadLock(thread)) { + OSReport("OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n", 0x61c); + OSPanic(__FILE__, 0x61c, ""); + } + break; + case OS_THREAD_STATE_DEAD: + if (thread->owned_mutexes.head != NULL || thread->owned_mutexes.tail != NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queueMutex.head == NULL && " + "thread->queueMutex.tail == NULL in %d\n", + 0x620); + OSPanic(__FILE__, 0x620, ""); + } + break; + default: + OSReport("OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n", + thread->state, thread); + OSPanic(__FILE__, 0x626, ""); + break; } if (!__OSCheckMutexes(thread)) { diff --git a/libs/dolphin/os/OSTime.c b/libs/dolphin/os/OSTime.c index 3a85f195b6..f00eee18a9 100644 --- a/libs/dolphin/os/OSTime.c +++ b/libs/dolphin/os/OSTime.c @@ -1,27 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: OSTime -// - #include "dolphin/os/OSTime.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/os/OSInterrupt.h" #define OS_TIME_MONTH_MAX 12 #define OS_TIME_WEEK_DAY_MAX 7 #define OS_TIME_YEAR_DAY_MAX 365 -// -// External References: -// - -void __div2i(); -void __mod2i(); - -// -// Declarations: -// - /* 803426FC-80342714 33D03C 0018+00 1/1 33/33 0/0 .text OSGetTime */ asm OSTime OSGetTime(void) { // clang-format off @@ -76,7 +60,6 @@ OSTime __OSTimeToSystemTime(OSTime time) { return result; } -/* ############################################################################################## */ /* 803D1048-803D1078 02E168 0030+00 1/1 0/0 0/0 .data YearDays */ // End of each month in standard year static s32 YearDays[] = { @@ -113,7 +96,8 @@ static void GetDates(s32 days, OSCalendarTime* cal) { cal->week_day = (days + 6) % OS_TIME_WEEK_DAY_MAX; for (year = days / OS_TIME_YEAR_DAY_MAX; - days < (totalDays = year * OS_TIME_YEAR_DAY_MAX + GetLeapDays(year));) { + days < (totalDays = year * OS_TIME_YEAR_DAY_MAX + GetLeapDays(year));) + { year--; } diff --git a/libs/dolphin/os/__ppc_eabi_init.c b/libs/dolphin/os/__ppc_eabi_init.cpp similarity index 69% rename from libs/dolphin/os/__ppc_eabi_init.c rename to libs/dolphin/os/__ppc_eabi_init.cpp index f9128d6e6f..661e10df0c 100644 --- a/libs/dolphin/os/__ppc_eabi_init.c +++ b/libs/dolphin/os/__ppc_eabi_init.cpp @@ -3,8 +3,12 @@ // Translation Unit: __ppc_eabi_init // -#include "dolphin/os/__ppc_eabi_init.h" #include "dol2asm.h" +#include "dolphin/base/PPCArch.h" + +#ifdef __cplusplus +extern "C" { +#endif // // Forward References: @@ -30,6 +34,17 @@ void __init_user(void) { } /* 80342B98-80342BEC 33D4D8 0054+00 1/1 0/0 0/0 .text __init_cpp */ +#ifdef NONMATCHING +void __init_cpp(void) { + voidfunctionptr* constructor; + /** + * call static initializers + */ + for (constructor = __init_cpp_exceptions_reference; *constructor; constructor++) { + (*constructor)(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -38,8 +53,13 @@ asm void __init_cpp(void) { #include "asm/dolphin/os/__ppc_eabi_init/__init_cpp.s" } #pragma pop +#endif /* 80342BEC-80342C0C 33D52C 0020+00 0/0 2/2 0/0 .text _ExitProcess */ void _ExitProcess(void) { PPCHalt(); } + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/libs/dolphin/pad/Pad.c b/libs/dolphin/pad/Pad.c index c2301a459f..305025364b 100644 --- a/libs/dolphin/pad/Pad.c +++ b/libs/dolphin/pad/Pad.c @@ -1,11 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: Pad -// - -#include "dolphin/pad/Pad.h" -#include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/pad.h" +#include "dolphin/os.h" #include "dolphin/si/SIBios.h" #include "dolphin/si/SISamplingRate.h" @@ -15,45 +9,36 @@ u16 __OSWirelessPadFixMode : (OS_BASE_CACHED | 0x30E0); /* 80450A20-80450A24 -00001 0004+00 1/1 0/0 0/0 .sdata __PADVersion */ static char* __PADVersion = "<< Dolphin SDK - PAD\trelease build: Apr 5 2004 04:14:49 (0x2301) >>"; -// -// Forward References: -// - static void UpdateOrigin(s32 chan); static void SPEC0_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); static void SPEC1_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); static void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); -static s32 OnReset(s32 final); -static void SamplingHandler(OSInterrupt interrupt, OSContext* context); +static BOOL OnReset(BOOL final); +static void SamplingHandler(__OSInterrupt interrupt, OSContext* context); static PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback callback); BOOL __PADDisableRecalibration(BOOL disable); +static void PADOriginCallback(s32 chan, u32 error, OSContext* context); +static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context); +static void PADProbeCallback(s32 chan, u32 error, OSContext* context); +static void PADTypeAndStatusCallback(s32 chan, u32 type); +static void PADReceiveCheckCallback(s32 chan, u32 type); -// -// External References: -// - -void __shr2i(); extern u32 __PADFixBits; -// -// Declarations: -// - -/* ############################################################################################## */ /* 8044CB70-8044CB80 079890 0010+00 3/3 0/0 0/0 .bss Type */ static u32 Type[4]; /* 8044CB80-8044CBB0 0798A0 0030+00 8/8 0/0 0/0 .bss Origin */ -static volatile PADStatus Origin[4]; +static PADStatus Origin[4]; /* 80450A24-80450A28 0004A4 0004+00 7/7 0/0 0/0 .sdata ResettingChan */ -SECTION_SDATA static s32 ResettingChan = 0x00000020; +static s32 ResettingChan = 0x00000020; /* 80450A28-80450A2C 0004A8 0004+00 1/1 0/0 0/0 .sdata XPatchBits */ -SECTION_SDATA static u32 XPatchBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; +static u32 XPatchBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; /* 80450A2C-80450A30 0004AC 0004+00 7/7 0/0 0/0 .sdata AnalogMode */ -SECTION_SDATA static u32 AnalogMode = 0x00000300; +static u32 AnalogMode = 0x00000300; /* 8034E2B4-8034E458 348BF4 01A4+00 2/2 0/0 0/0 .text UpdateOrigin */ static void UpdateOrigin(s32 chan) { @@ -142,7 +127,8 @@ inline void DoReset(void) { /* 8034E458-8034E51C 348D98 00C4+00 1/1 0/0 0/0 .text PADOriginCallback */ static void PADOriginCallback(s32 chan, u32 error, OSContext* context) { if (!(error & - (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) + { UpdateOrigin(ResettingChan); PADEnable(ResettingChan); } @@ -190,7 +176,8 @@ static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context) { } if (!(error & - (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) + { UpdateOrigin(chan); } @@ -202,7 +189,8 @@ static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context) { /* 8034E5E8-8034E6C0 348F28 00D8+00 1/1 0/0 0/0 .text PADProbeCallback */ static void PADProbeCallback(s32 chan, u32 error, OSContext* context) { if (!(error & - (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) + { PADEnable(ResettingChan); WaitingBits |= (u32)PAD_CHAN0_BIT >> ResettingChan; } @@ -211,16 +199,16 @@ static void PADProbeCallback(s32 chan, u32 error, OSContext* context) { /* ############################################################################################## */ /* 80450A30-80450A34 0004B0 0004+00 4/4 0/0 0/0 .sdata Spec */ -SECTION_SDATA static u32 Spec = 5; +static u32 Spec = 5; /* 80450A34-80450A38 -00001 0004+00 2/2 0/0 0/0 .sdata MakeStatus */ -SECTION_SDATA static void (*MakeStatus)(s32, PADStatus*, u32[2]) = SPEC2_MakeStatus; +static void (*MakeStatus)(s32, PADStatus*, u32[2]) = SPEC2_MakeStatus; /* 80450A38-80450A3C 0004B8 0004+00 3/3 0/0 0/0 .sdata CmdReadOrigin */ -SECTION_SDATA static f32 CmdReadOrigin = 8.0f; +static f32 CmdReadOrigin = 8.0f; /* 80450A3C-80450A40 0004BC 0004+00 1/1 0/0 0/0 .sdata CmdCalibrate */ -SECTION_SDATA static f32 CmdCalibrate = 32.0f; +static f32 CmdCalibrate = 32.0f; /* 8044CBB0-8044CBC0 0798D0 0010+00 0/1 0/0 0/0 .bss CmdProbeDevice */ #pragma push @@ -240,7 +228,8 @@ static void PADTypeAndStatusCallback(s32 chan, u32 type) { RecalibrateBits &= ~chanBit; if (error & - (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) { + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) + { DoReset(); return; } @@ -269,7 +258,8 @@ static void PADTypeAndStatusCallback(s32 chan, u32 type) { PADOriginCallback, 0); } } else if ((type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && - !(type & SI_WIRELESS_LITE)) { + !(type & SI_WIRELESS_LITE)) + { if (type & SI_WIRELESS_RECEIVED) { rc = SITransfer(ResettingChan, &CmdReadOrigin, 1, &Origin[ResettingChan], 10, PADOriginCallback, 0); @@ -287,29 +277,30 @@ static void PADTypeAndStatusCallback(s32 chan, u32 type) { /* 8034E9EC-8034EB2C 34932C 0140+00 1/1 0/0 0/0 .text PADReceiveCheckCallback */ static void PADReceiveCheckCallback(s32 chan, u32 type) { - u32 error; - u32 chanBit; + u32 error; + u32 chanBit; - chanBit = (u32)PAD_CHAN0_BIT >> chan; - if (!(EnabledBits & chanBit)) { - return; - } + chanBit = (u32)PAD_CHAN0_BIT >> chan; + if (!(EnabledBits & chanBit)) { + return; + } - error = type & 0xFF; - type &= ~0xFF; + error = type & 0xFF; + type &= ~0xFF; - WaitingBits &= ~chanBit; - CheckingBits &= ~chanBit; + WaitingBits &= ~chanBit; + CheckingBits &= ~chanBit; - if (!(error & - (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) && - (type & SI_GC_WIRELESS) && (type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_RECEIVED) && - !(type & SI_WIRELESS_IR) && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && - !(type & SI_WIRELESS_LITE)) { - SITransfer(chan, &CmdReadOrigin, 1, &Origin[chan], 10, PADOriginUpdateCallback, 0); - } else { - PADDisable(chan); - } + if (!(error & + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) && + (type & SI_GC_WIRELESS) && (type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_RECEIVED) && + !(type & SI_WIRELESS_IR) && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && + !(type & SI_WIRELESS_LITE)) + { + SITransfer(chan, &CmdReadOrigin, 1, &Origin[chan], 10, PADOriginUpdateCallback, 0); + } else { + PADDisable(chan); + } } /* 8034EB2C-8034EC3C 34946C 0110+00 2/2 1/1 0/0 .text PADReset */ @@ -369,11 +360,9 @@ BOOL PADRecalibrate(u32 mask) { /* ############################################################################################## */ /* 803D1B90-803D1BA0 -00001 0010+00 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static OSResetFunctionInfo ResetFunctionInfo = { +static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 0x0000007F, - NULL, - NULL, }; /* 80451868-8045186C 000D68 0004+00 3/3 0/0 0/0 .sbss SamplingCallback */ @@ -403,7 +392,7 @@ BOOL PADInit() { if (__PADFixBits != 0) { OSTime time = OSGetTime(); - __OSWirelessPadFixMode = (u16)((((time)&0xffff) + ((time >> 16) & 0xffff) + + __OSWirelessPadFixMode = (u16)((((time) & 0xffff) + ((time >> 16) & 0xffff) + ((time >> 32) & 0xffff) + ((time >> 48) & 0xffff)) & 0x3fffu); RecalibrateBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; @@ -537,7 +526,7 @@ void PADControlMotor(s32 chan, u32 command) { } if (UnkVal & 0x20) { - command = PAD_MOTOR_STOP; + command = PAD_MOTOR_STOP; } SISetCommand(chan, (0x40 << 16) | AnalogMode | (command & (0x00000001 | 0x00000002))); @@ -664,12 +653,9 @@ inline u8 ClampU8(u8 var, u8 org) { PAD_BUTTON_MENU | 0x2000 | 0x0080) /* 8034F5A0-8034FA10 349EE0 0470+00 2/1 0/0 0/0 .text SPEC2_MakeStatus */ -// lis and stw instruction order -#ifdef NONMATCHING static void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { - u32 type; PADStatus* origin; - u32 chanBit; + u32 type; status->button = (u16)((data[0] >> 16) & PAD_ALL); status->stick_x = (s8)(data[0] >> 8); @@ -728,33 +714,25 @@ static void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { type = Type[chan]; - if (((type & (0xffff0000u)) == SI_GC_CONTROLLER) && ((status->button & 0x80) ^ 0x80)) { - BarrelBits |= ((u32)PAD_CHAN0_BIT >> chan); + if (((type & (0xffff0000)) == SI_GC_CONTROLLER) && ((status->button & 0x80) ^ 0x80)) { + BarrelBits |= (PAD_CHAN0_BIT >> chan); status->stick_x = 0; status->stick_y = 0; status->substick_x = 0; status->substick_y = 0; + return; } else { - BarrelBits &= ~((u32)PAD_CHAN0_BIT >> chan); - origin = &Origin[chan]; - status->stick_x = ClampS8(status->stick_x, origin->stick_x); - status->stick_y = ClampS8(status->stick_y, origin->stick_y); - status->substick_x = ClampS8(status->substick_x, origin->substick_x); - status->substick_y = ClampS8(status->substick_y, origin->substick_y); - status->trigger_left = ClampU8(status->trigger_left, origin->trigger_left); - status->trigger_right = ClampU8(status->trigger_right, origin->trigger_right); + BarrelBits &= ~(PAD_CHAN0_BIT >> chan); } + + origin = &Origin[chan]; + status->stick_x = ClampS8(status->stick_x, origin->stick_x); + status->stick_y = ClampS8(status->stick_y, origin->stick_y); + status->substick_x = ClampS8(status->substick_x, origin->substick_x); + status->substick_y = ClampS8(status->substick_y, origin->substick_y); + status->trigger_left = ClampU8(status->trigger_left, origin->trigger_left); + status->trigger_right = ClampU8(status->trigger_right, origin->trigger_right); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { - nofralloc -#include "asm/dolphin/pad/Pad/SPEC2_MakeStatus.s" -} -#pragma pop -#endif /* 8034FA10-8034FA84 34A350 0074+00 0/0 2/2 0/0 .text PADSetAnalogMode */ void PADSetAnalogMode(u32 mode) { @@ -778,7 +756,7 @@ inline BOOL PADSync(void) { } /* 8034FA84-8034FB40 34A3C4 00BC+00 1/0 0/0 0/0 .text OnReset */ -static s32 OnReset(s32 f) { +static BOOL OnReset(BOOL f) { static BOOL recalibrated = FALSE; BOOL sync; @@ -802,7 +780,7 @@ static s32 OnReset(s32 f) { } /* 8034FB40-8034FBA0 34A480 0060+00 1/1 0/0 0/0 .text SamplingHandler */ -static void SamplingHandler(OSInterrupt interrupt, OSContext* context) { +static void SamplingHandler(__OSInterrupt interrupt, OSContext* context) { OSContext exceptionContext; if (SamplingCallback) { @@ -816,29 +794,29 @@ static void SamplingHandler(OSInterrupt interrupt, OSContext* context) { /* 8034FBA0-8034FBF4 34A4E0 0054+00 1/1 0/0 0/0 .text PADSetSamplingCallback */ PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback callback) { - PADSamplingCallback prev; + PADSamplingCallback prev; - prev = SamplingCallback; - SamplingCallback = callback; - if (callback) { - SIRegisterPollingHandler(SamplingHandler); - } else { - SIUnregisterPollingHandler(SamplingHandler); - } - return prev; + prev = SamplingCallback; + SamplingCallback = callback; + if (callback) { + SIRegisterPollingHandler(SamplingHandler); + } else { + SIUnregisterPollingHandler(SamplingHandler); + } + return prev; } /* 8034FBF4-8034FC70 34A534 007C+00 0/0 1/1 0/0 .text __PADDisableRecalibration */ BOOL __PADDisableRecalibration(BOOL disable) { - BOOL enabled; - BOOL prev; + BOOL enabled; + BOOL prev; - enabled = OSDisableInterrupts(); - prev = (UnkVal & 0x40) ? TRUE : FALSE; - UnkVal &= ~0x40; - if (disable) { - UnkVal |= 0x40; - } - OSRestoreInterrupts(enabled); - return prev; + enabled = OSDisableInterrupts(); + prev = (UnkVal & 0x40) ? TRUE : FALSE; + UnkVal &= ~0x40; + if (disable) { + UnkVal |= 0x40; + } + OSRestoreInterrupts(enabled); + return prev; } diff --git a/libs/dolphin/pad/Padclamp.c b/libs/dolphin/pad/Padclamp.c index a2051d8b6b..3d90b976fe 100644 --- a/libs/dolphin/pad/Padclamp.c +++ b/libs/dolphin/pad/Padclamp.c @@ -1,23 +1,24 @@ -// -// Generated By: dol2asm -// Translation Unit: Padclamp -// - -#include "dolphin/pad/Pad.h" #include "dolphin/pad/Padclamp.h" -#include "dol2asm.h" -// -// Forward References: -// +// older version of MSL_C sqrtf. needed here instead of updated version +static inline f32 dolsqrtf(f32 x) { + static const f64 _half = .5; + static const f64 _three = 3.0; + vf32 y; + if (x > 0.0f) { + f64 guess = __frsqrte((f64)x); // returns an approximation to + guess = _half * guess * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 32 sig bits + y = (f32)(x * guess); + return y; + } + return x; +} static void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min); static void ClampCircle(s8* px, s8* py, s8 radius, s8 min); -// -// Declarations: -// - /* 8034DDBC-8034DEEC 3486FC 0130+00 1/1 0/0 0/0 .text ClampStick */ static void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min) { int x = *px; @@ -74,32 +75,39 @@ static void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min) { *py = (s8)(signY * y); } -/* ############################################################################################## */ -/* 80456560-80456568 004B60 0004+04 1/1 0/0 0/0 .sdata2 @160 */ -SECTION_SDATA2 static f32 lit_160[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - -/* 80456568-80456570 004B68 0008+00 1/1 0/0 0/0 .sdata2 @161 */ -SECTION_SDATA2 static f64 lit_161 = 0.5; - -/* 80456570-80456578 004B70 0008+00 1/1 0/0 0/0 .sdata2 @162 */ -SECTION_SDATA2 static f64 lit_162 = 3.0; - -/* 80456578-80456580 004B78 0008+00 1/1 0/0 0/0 .sdata2 @164 */ -SECTION_SDATA2 static f64 lit_164 = 4503601774854144.0 /* cast s32 to float */; - /* 8034DEEC-8034E094 34882C 01A8+00 1/1 0/0 0/0 .text ClampCircle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ClampCircle(s8* px, s8* py, s8 radius, s8 min) { - nofralloc -#include "asm/dolphin/pad/Padclamp/ClampCircle.s" +void ClampCircle(s8* px, s8* py, s8 radius, s8 min) { + int x = *px; + int y = *py; + int squared; + int length; + + if (-min < x && x < min) { + x = 0; + } else if (0 < x) { + x -= min; + } else { + x += min; + } + + if (-min < y && y < min) { + y = 0; + } else if (0 < y) { + y -= min; + } else { + y += min; + } + + squared = x * x + y * y; + if (radius * radius < squared) { + length = dolsqrtf(squared); + x = (x * radius) / length; + y = (y * radius) / length; + } + + *px = x; + *py = y; } -#pragma pop /* ############################################################################################## */ /* 803A2170-803A2180 02E7D0 000A+06 2/2 0/0 0/0 .rodata ClampRegion */ diff --git a/libs/dolphin/si/SIBios.c b/libs/dolphin/si/SIBios.c index b8ea4e6acd..b1843354e8 100644 --- a/libs/dolphin/si/SIBios.c +++ b/libs/dolphin/si/SIBios.c @@ -1,23 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: SIBios -// - #include "dolphin/si/SIBios.h" -#include "dol2asm.h" -#include "dolphin/os/OS.h" -#include "dolphin/vi/vi.h" - -/* 803D11B8-803D11FC 02E2D8 0044+00 4/3 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = - "<< Dolphin SDK - SI\trelease build: Apr 5 2004 04:14:16 (0x2301) >>"; +#include "dolphin/os.h" +#include "dolphin/vi.h" /* 804509C8-804509D0 -00001 0004+04 1/1 0/0 0/0 .sdata __SIVersion */ -SECTION_SDATA static char* __SIVersion = lit_1; - -// -// Forward References: -// +static char* __SIVersion = "<< Dolphin SDK - SI\trelease build: Apr 5 2004 04:14:16 (0x2301) >>"; static u32 CompleteTransfer(void); BOOL __SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, @@ -25,22 +11,14 @@ BOOL __SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inpu static void AlarmHandler(OSAlarm* alarm, OSContext* context); static void GetTypeCallback(s32 chan, u32 error, OSContext* context); -// -// External References: -// - u32 VIGetCurrentLine(); -// -// Declarations: -// /* 803D11FC-803D1210 02E31C 0014+00 8/11 0/0 0/0 .data Si */ static SIControl Si = { -1, 0, 0, NULL, NULL, }; -/* ############################################################################################## */ /* 803D1210-803D1220 02E330 0010+00 5/5 0/0 0/0 .data Type */ static u32 Type[SI_MAX_CHAN] = { SI_ERROR_NO_RESPONSE, @@ -54,7 +32,6 @@ BOOL SIBusy() { return Si.chan != -1 ? TRUE : FALSE; } -/* ############################################################################################## */ /* 8044C630-8044C6B0 079350 0080+00 9/9 0/0 0/0 .bss Packet */ static SIPacket Packet[SI_MAX_CHAN]; @@ -63,7 +40,6 @@ BOOL SIIsChanBusy(s32 chan) { return (Packet[chan].chan != -1 || Si.chan == chan); } -/* ############################################################################################## */ /* 8044C6B0-8044C750 0793D0 00A0+00 1/1 0/0 0/0 .bss Alarm */ static OSAlarm Alarm[SI_MAX_CHAN]; @@ -137,7 +113,7 @@ static u32 CompleteTransfer() { static SITypeAndStatusCallback TypeCallback[SI_MAX_CHAN][4]; /* 8044C7D0-8044C7E0 0794F0 0010+00 2/3 0/0 0/0 .bss RDSTHandler */ -static OSInterruptHandler RDSTHandler[4]; +static __OSInterruptHandler RDSTHandler[4]; /* 8044C7E0-8044C7F0 079500 0010+00 0/0 0/0 0/0 .bss InputBufferValid */ #pragma push @@ -167,7 +143,8 @@ inline void SITransferNext(s32 chan) { packet = &Packet[chan]; if (packet->chan != -1 && packet->fire <= __OSGetSystemTime()) { if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, - packet->inputBytes, packet->callback)) { + packet->inputBytes, packet->callback)) + { OSCancelAlarm(&Alarm[chan]); packet->chan = -1; } @@ -180,7 +157,7 @@ inline void SITransferNext(s32 chan) { static u8 cmdTypeAndStatus_78[4]; /* 80344EF8-8034523C 33F838 0344+00 1/1 0/0 0/0 .text SIInterruptHandler */ -static void SIInterruptHandler(OSInterrupt interrupt, OSContext* context) { +static void SIInterruptHandler(__OSInterrupt interrupt, OSContext* context) { u32 reg; reg = __SIRegs[13]; @@ -272,7 +249,7 @@ static BOOL SIEnablePollingInterrupt(BOOL enable) { } /* 803452D4-803453A0 33FC14 00CC+00 0/0 1/1 0/0 .text SIRegisterPollingHandler */ -BOOL SIRegisterPollingHandler(OSInterruptHandler handler) { +BOOL SIRegisterPollingHandler(__OSInterruptHandler handler) { BOOL enabled; int i; @@ -296,7 +273,7 @@ BOOL SIRegisterPollingHandler(OSInterruptHandler handler) { } /* 803453A0-80345494 33FCE0 00F4+00 0/0 1/1 0/0 .text SIUnregisterPollingHandler */ -BOOL SIUnregisterPollingHandler(OSInterruptHandler handler) { +BOOL SIUnregisterPollingHandler(__OSInterruptHandler handler) { BOOL enabled; int i; @@ -531,7 +508,8 @@ static void AlarmHandler(OSAlarm* alarm, OSContext* context) { packet = &Packet[chan]; if (packet->chan != -1) { if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, - packet->inputBytes, packet->callback)) { + packet->inputBytes, packet->callback)) + { packet->chan = -1; } } @@ -727,71 +705,29 @@ u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback) { return type; } -/* ############################################################################################## */ -/* 803D1220-803D122C 02E340 000C+00 0/0 0/0 0/0 .data @457 */ - -// All of these strings are from the stripped `SIGetTypeString` function -#pragma push -#pragma force_active on -SECTION_DATA static char lit_457[] = "No response"; -#pragma pop - -/* 803D122C-803D123C 02E34C 000F+01 0/0 0/0 0/0 .data @459 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_459[] = "N64 controller"; -#pragma pop - -/* 803D123C-803D124C 02E35C 000F+01 0/0 0/0 0/0 .data @460 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_460[] = "N64 microphone"; -#pragma pop - -/* 803D124C-803D125C 02E36C 000D+03 0/0 0/0 0/0 .data @461 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_461[] = "N64 keyboard"; -#pragma pop - -/* 803D125C-803D1268 02E37C 000A+02 0/0 0/0 0/0 .data @462 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_462[] = "N64 mouse"; -#pragma pop - -/* 803D1268-803D1278 02E388 0010+00 0/0 0/0 0/0 .data @463 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_463[] = "GameBoy Advance"; -#pragma pop - -/* 803D1278-803D128C 02E398 0014+00 0/0 0/0 0/0 .data @464 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_464[] = "Standard controller"; -#pragma pop - -/* 803D128C-803D12A0 02E3AC 0012+02 0/0 0/0 0/0 .data @465 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_465[] = "Wireless receiver"; -#pragma pop - -/* 803D12A0-803D12B4 02E3C0 0014+00 0/0 0/0 0/0 .data @466 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_466[] = "WaveBird controller"; -#pragma pop - -/* 803D12B4-803D12C0 02E3D4 0009+03 0/0 0/0 0/0 .data @467 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_467[] = "Keyboard"; -#pragma pop - -/* 803D12C0-803D12D0 02E3E0 0009+07 0/0 0/0 0/0 .data @468 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_468[] = "Steering"; -#pragma pop +char* SIGetTypeString(u32 type) { + switch (SIDecodeType(type)) { + case SI_ERROR_NO_RESPONSE: + return "No response"; + case SI_N64_CONTROLLER: + return "N64 controller"; + case SI_N64_MIC: + return "N64 microphone"; + case SI_N64_KEYBOARD: + return "N64 keyboard"; + case SI_N64_MOUSE: + return "N64 mouse"; + case SI_GBA: + return "GameBoy Advance"; + case SI_GC_CONTROLLER: + return "Standard controller"; + case SI_GC_RECEIVER: + return "Wireless receiver"; + case SI_GC_WAVEBIRD: + return "WaveBird controller"; + case SI_GC_KEYBOARD: + return "Keyboard"; + case SI_GC_STEERING: + return "Steering"; + } +} diff --git a/libs/dolphin/si/SISamplingRate.c b/libs/dolphin/si/SISamplingRate.c index b5bf3db3bc..842f8c9584 100644 --- a/libs/dolphin/si/SISamplingRate.c +++ b/libs/dolphin/si/SISamplingRate.c @@ -1,22 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: SISamplingRate -// - #include "dolphin/si/SISamplingRate.h" -#include "dolphin/os/OS.h" -#include "dolphin/vi/vi.h" - -// -// External References: -// +#include "dolphin/os.h" +#include "dolphin/vi.h" u32 VIGetTvFormat(); -// -// Declarations: -// - /* ############################################################################################## */ /* 803D12D0-803D1300 02E3F0 0030+00 1/1 0/0 0/0 .data XYNTSC */ static XY XYNTSC[12] = { diff --git a/libs/dolphin/vi/vi.c b/libs/dolphin/vi/vi.c index 838c6822e0..7c9f331134 100644 --- a/libs/dolphin/vi/vi.c +++ b/libs/dolphin/vi/vi.c @@ -3,28 +3,84 @@ // Translation Unit: vi // -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" -// -// Forward References: -// +#define CLAMP(x, l, h) (((x) > (h)) ? (h) : (((x) < (l)) ? (l) : (x))) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define IS_LOWER_16MB(x) ((x) < 16 * 1024 * 1024) +#define ToPhysical(fb) (u32)(((u32)(fb)) & 0x3FFFFFFF) +#define ONES(x) ((1 << (x)) - 1) +#define VI_BITMASK(index) (1ull << (63 - (index))) -void __VIRetraceHandler(); -static void getTiming(); -void __VIInit(); -static void setFbbRegs(void**, void**, void**, void**, void**); -static void setVerticalRegs(u16, u16, u8, u16, u16, u16, u16, u16, u32); -u32 VIGetRetraceCount(); -static void GetCurrentDisplayPosition(u32* x, u32* y); -static void getCurrentFieldEvenOdd(); -u32 VIGetNextField(); -void VIGetCurrentLine(); -void VIGetTvFormat(); -u32 VIGetDTVStatus(); -void __VIDisplayPositionToXY(); -void __VIGetCurrentPosition(); +#define VI_VERT_TIMING (0) +#define VI_DISP_CONFIG (1) +#define VI_HORIZ_TIMING_0L (2) +#define VI_HORIZ_TIMING_0U (3) +#define VI_HORIZ_TIMING_1L (4) +#define VI_HORIZ_TIMING_1U (5) +#define VI_VERT_TIMING_ODD (6) +#define VI_VERT_TIMING_ODD_U (7) +#define VI_VERT_TIMING_EVEN (8) +#define VI_VERT_TIMING_EVEN_U (9) + +#define VI_BBI_ODD (10) // burst blanking interval +#define VI_BBI_ODD_U (11) // burst blanking interval +#define VI_BBI_EVEN (12) // burst blanking interval +#define VI_BBI_EVEN_U (13) // burst blanking interval + +#define VI_TOP_FIELD_BASE_LEFT (14) // top in 2d, top of left pic in 3d +#define VI_TOP_FIELD_BASE_LEFT_U (15) // top in 2d, top of left pic in 3d + +#define VI_TOP_FIELD_BASE_RIGHT (16) // top of right pic in 3d +#define VI_TOP_FIELD_BASE_RIGHT_U (17) // top of right pic in 3d + +#define VI_BTTM_FIELD_BASE_LEFT (18) // bottom in 2d, bottom of left pic in 3d +#define VI_BTTM_FIELD_BASE_LEFT_U (19) // bottom in 2d, bottom of left pic in 3d + +#define VI_BTTM_FIELD_BASE_RIGHT (20) // bottom of right pic in 3d +#define VI_BTTM_FIELD_BASE_RIGHT_U (21) // bottom of right pic in 3d + +#define VI_VERT_COUNT (22) // vertical display position +#define VI_HORIZ_COUNT (23) // horizontal display position + +#define VI_DISP_INT_0 (24) // display interrupt 0L +#define VI_DISP_INT_0U (25) // display interrupt 0U +#define VI_DISP_INT_1 (26) // display interrupt 1L +#define VI_DISP_INT_1U (27) // display interrupt 1U +#define VI_DISP_INT_2 (28) // display interrupt 2L +#define VI_DISP_INT_2U (29) // display interrupt 2U +#define VI_DISP_INT_3 (30) // display interrupt 3L +#define VI_DISP_INT_3U (31) // display interrupt 3U + +#define VI_HSW (36) // horizontal scaling width +#define VI_HSR (37) // horizontal scaling register + +#define VI_FCT_0 (38) // filter coefficient table 0L +#define VI_FCT_0U (39) // filter coefficient table 0U +#define VI_FCT_1 (40) // filter coefficient table 1L +#define VI_FCT_1U (41) // filter coefficient table 1U +#define VI_FCT_2 (42) // filter coefficient table 2L +#define VI_FCT_2U (43) // filter coefficient table 2U +#define VI_FCT_3 (44) // filter coefficient table 3L +#define VI_FCT_3U (45) // filter coefficient table 3U +#define VI_FCT_4 (46) // filter coefficient table 4L +#define VI_FCT_4U (47) // filter coefficient table 4U +#define VI_FCT_5 (48) // filter coefficient table 5L +#define VI_FCT_5U (49) // filter coefficient table 5U +#define VI_FCT_6 (50) // filter coefficient table 6L +#define VI_FCT_6U (51) // filter coefficient table 6U + +#define VI_CLOCK_SEL (54) // clock select +#define VI_DTV_STAT (55) // DTV status + +#define VI_WIDTH (56) + +void __VIGetCurrentPosition(s16* x, s16* y); +static u32 getCurrentFieldEvenOdd(); // // External References: @@ -40,16 +96,16 @@ void __shr2u(); /* ############################################################################################## */ /* 8044CA28-8044CAA0 079748 0076+02 8/8 0/0 0/0 .bss regs */ -static u8 regs[118 + 2 /* padding */]; +static vu16 regs[59]; /* 804517E0-804517E4 000CE0 0004+00 1/1 0/0 0/0 .sbss IsInitialized */ -static u8 IsInitialized[4]; +static BOOL IsInitialized; /* 804517E4-804517E8 000CE4 0004+00 4/3 0/0 0/0 .sbss retraceCount */ -static u32 retraceCount; +static vu32 retraceCount; /* 804517E8-804517EC 000CE8 0004+00 3/3 0/0 0/0 .sbss flushFlag */ -static u8 flushFlag[4]; +static u32 flushFlag; /* 804517EC-804517F4 000CEC 0008+00 3/3 0/0 0/0 .sbss retraceQueue */ static OSThreadQueue retraceQueue; @@ -61,55 +117,153 @@ static VIRetraceCallback PreCB; static VIRetraceCallback PostCB; /* 804517FC-80451800 000CFC 0004+00 1/1 0/0 0/0 .sbss PositionCallback */ -static u8 PositionCallback[4]; +static VIPositionCallback PositionCallback; /* 80451800-80451804 000D00 0004+00 2/2 0/0 0/0 .sbss encoderType */ -static u8 encoderType[4]; +static u32 encoderType; -/* 80451804-80451808 -00001 0004+00 2/2 0/0 0/0 .sbss None */ /* 80451804 0002+00 data_80451804 displayOffsetH */ +static s16 displayOffsetH; + /* 80451806 0002+00 data_80451806 displayOffsetV */ -static u8 struct_80451804[4]; +static s16 displayOffsetV; /* 80451808-80451810 000D08 0004+04 3/3 0/0 0/0 .sbss changeMode */ -static u8 changeMode[4 + 4 /* padding */]; +static vu32 changeMode; /* 80451810-80451814 000D10 0004+00 5/5 0/0 0/0 .sbss changed */ -static u8 changed[4]; - -/* 80451814-80451818 000D14 0004+00 5/5 0/0 0/0 .sbss None */ -static u8 data_80451814[4]; +static vu64 changed; /* 80451818-80451820 000D18 0004+04 3/3 0/0 0/0 .sbss shdwChangeMode */ -static u8 shdwChangeMode[4 + 4 /* padding */]; +static vu32 shdwChangeMode; /* 80451820-80451824 000D20 0004+00 3/3 0/0 0/0 .sbss shdwChanged */ -static u8 shdwChanged[4]; - -/* 80451824-80451828 000D24 0004+00 3/3 0/0 0/0 .sbss None */ -static u8 data_80451824[4]; +static vu64 shdwChanged; /* 80451828-8045182C 000D28 0004+00 6/6 0/0 0/0 .sbss CurrTiming */ -static u8 CurrTiming[4]; +static VITimingInfo* CurrTiming; /* 8045182C-80451830 000D2C 0004+00 3/3 0/0 0/0 .sbss CurrTvMode */ -static u8 CurrTvMode[4]; +static u32 CurrTvMode; /* 80451830-80451834 000D30 0004+00 3/2 0/0 0/0 .sbss NextBufAddr */ -static u8 NextBufAddr[4]; +static u32 NextBufAddr; /* 80451834-80451838 000D34 0004+00 2/1 0/0 0/0 .sbss CurrBufAddr */ -static u8 CurrBufAddr[4]; +static u32 CurrBufAddr; + +/* ############################################################################################## */ +/* 8044CAA0-8044CB18 0797C0 0076+02 0/0 0/0 0/0 .bss shdwRegs */ +#pragma push +#pragma force_active on +static vu16 shdwRegs[59]; +#pragma pop + +/* 8044CB18-8044CB70 079838 0058+00 2/5 0/0 0/0 .bss HorVer */ +static VIPositionInfo HorVer; + +static int cntlzd(u64 bit) { + u32 hi, lo; + int value; + + hi = (u32)(bit >> 32); + lo = (u32)(bit & 0xFFFFFFFF); + value = __cntlzw(hi); + + if (value < 32) { + return value; + } + + return (32 + __cntlzw(lo)); +} + +static BOOL VISetRegs(void) { + int regIndex; + + if (!((shdwChangeMode == 1) && (getCurrentFieldEvenOdd() == 0))) { + while (shdwChanged) { + regIndex = cntlzd(shdwChanged); + __VIRegs[regIndex] = shdwRegs[regIndex]; + shdwChanged &= ~(VI_BITMASK(regIndex)); + } + + shdwChangeMode = 0; + CurrTiming = HorVer.timing; + CurrTvMode = HorVer.tv; + CurrBufAddr = NextBufAddr; + + return TRUE; + } + return FALSE; +} /* 8034BF6C-8034C1E0 3468AC 0274+00 1/1 0/0 0/0 .text __VIRetraceHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __VIRetraceHandler() { - nofralloc -#include "asm/dolphin/vi/vi/__VIRetraceHandler.s" +static void __VIRetraceHandler(__OSInterrupt interrupt, OSContext* context) { + OSContext exceptionContext; + u16 viReg; + u32 inter = 0; + + viReg = __VIRegs[VI_DISP_INT_0]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_0] = (u16)(viReg & ~0x8000); + inter |= 1; + } + + viReg = __VIRegs[VI_DISP_INT_1]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_1] = (u16)(viReg & ~0x8000); + inter |= 2; + } + + viReg = __VIRegs[VI_DISP_INT_2]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_2] = (u16)(viReg & ~0x8000); + inter |= 4; + } + + viReg = __VIRegs[VI_DISP_INT_3]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_3] = (u16)(viReg & ~0x8000); + inter |= 8; + } + + if ((inter & 4) || (inter & 8)) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + if (PositionCallback) { + s16 x, y; + __VIGetCurrentPosition(&x, &y); + (*PositionCallback)(x, y); + } + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + return; + } + + retraceCount++; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + if (PreCB) { + (*PreCB)(retraceCount); + } + + if (flushFlag) { + if (VISetRegs()) { + flushFlag = 0; + SIRefreshSamplingRate(); + } + } + + if (PostCB) { + OSClearContext(&exceptionContext); + (*PostCB)(retraceCount); + } + + OSWakeupThread(&retraceQueue); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); } -#pragma pop /* 8034C1E0-8034C224 346B20 0044+00 0/0 4/4 0/0 .text VISetPreRetraceCallback */ VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback cb) { @@ -131,136 +285,189 @@ VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback cb) { /* ############################################################################################## */ /* 803D1760-803D17A4 02E880 0044+00 4/3 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - VI\trelease build: Apr 7 2004 04:13:59 (0x2301) >>"; +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - VI\trelease build: Apr 7 2004 04:13:59 (0x2301) >>"; /* 803D17A4-803D1920 02E8C4 017C+00 0/1 0/0 0/0 .data timing */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 timing[380] = { - 0x06, 0x00, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x19, 0x00, 0x03, 0x00, 0x02, 0x0C, 0x0D, 0x0C, 0x0D, - 0x02, 0x08, 0x02, 0x07, 0x02, 0x08, 0x02, 0x07, 0x02, 0x0D, 0x01, 0xAD, 0x40, 0x47, 0x69, 0xA2, - 0x01, 0x75, 0x7A, 0x00, 0x01, 0x9C, 0x06, 0x00, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x18, 0x00, 0x04, - 0x00, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x02, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x0E, - 0x01, 0xAD, 0x40, 0x47, 0x69, 0xA2, 0x01, 0x75, 0x7A, 0x00, 0x01, 0x9C, 0x05, 0x00, 0x01, 0x1F, - 0x00, 0x23, 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x0D, 0x0C, 0x0B, 0x0A, 0x02, 0x6B, 0x02, 0x6A, - 0x02, 0x69, 0x02, 0x6C, 0x02, 0x71, 0x01, 0xB0, 0x40, 0x4B, 0x6A, 0xAC, 0x01, 0x7C, 0x85, 0x00, - 0x01, 0xA4, 0x05, 0x00, 0x01, 0x1F, 0x00, 0x21, 0x00, 0x21, 0x00, 0x02, 0x00, 0x02, 0x0D, 0x0B, - 0x0D, 0x0B, 0x02, 0x6B, 0x02, 0x6D, 0x02, 0x6B, 0x02, 0x6D, 0x02, 0x70, 0x01, 0xB0, 0x40, 0x4B, - 0x6A, 0xAC, 0x01, 0x7C, 0x85, 0x00, 0x01, 0xA4, 0x06, 0x00, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x19, - 0x00, 0x03, 0x00, 0x02, 0x10, 0x0F, 0x0E, 0x0D, 0x02, 0x06, 0x02, 0x05, 0x02, 0x04, 0x02, 0x07, - 0x02, 0x0D, 0x01, 0xAD, 0x40, 0x4E, 0x70, 0xA2, 0x01, 0x75, 0x7A, 0x00, 0x01, 0x9C, 0x06, 0x00, - 0x00, 0xF0, 0x00, 0x18, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x10, 0x0E, 0x10, 0x0E, 0x02, 0x06, - 0x02, 0x08, 0x02, 0x06, 0x02, 0x08, 0x02, 0x0E, 0x01, 0xAD, 0x40, 0x4E, 0x70, 0xA2, 0x01, 0x75, - 0x7A, 0x00, 0x01, 0x9C, 0x0C, 0x00, 0x01, 0xE0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x06, 0x00, 0x06, - 0x18, 0x18, 0x18, 0x18, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x1A, 0x01, 0xAD, - 0x40, 0x47, 0x69, 0xA2, 0x01, 0x75, 0x7A, 0x00, 0x01, 0x9C, 0x0C, 0x00, 0x01, 0xE0, 0x00, 0x2C, - 0x00, 0x2C, 0x00, 0x0A, 0x00, 0x0A, 0x18, 0x18, 0x18, 0x18, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x0E, - 0x04, 0x0E, 0x04, 0x1A, 0x01, 0xAD, 0x40, 0x47, 0x69, 0xA8, 0x01, 0x7B, 0x7A, 0x00, 0x01, 0x9C, - 0x06, 0x00, 0x00, 0xF1, 0x00, 0x18, 0x00, 0x19, 0x00, 0x01, 0x00, 0x00, 0x0C, 0x0D, 0x0C, 0x0D, - 0x02, 0x08, 0x02, 0x07, 0x02, 0x08, 0x02, 0x07, 0x02, 0x0D, 0x01, 0xAD, 0x40, 0x47, 0x69, 0x9F, - 0x01, 0x72, 0x7A, 0x00, 0x01, 0x9C, 0x0C, 0x00, 0x01, 0xE0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x06, - 0x00, 0x06, 0x18, 0x18, 0x18, 0x18, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x0E, 0x04, 0x1A, - 0x01, 0xAD, 0x40, 0x47, 0x69, 0xB4, 0x01, 0x87, 0x7A, 0x00, 0x01, 0x9C, +static VITimingInfo timing[10] = { + { + // NTSC INT + 6, 240, 24, 25, 3, 2, 12, 13, 12, 13, 520, 519, + 520, 519, 525, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { + // NTSC DS + 6, 240, 24, 24, 4, 4, 12, 12, 12, 12, 520, 520, + 520, 520, 526, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { + // PAL INT + 5, 287, 35, 36, 1, 0, 13, 12, 11, 10, 619, 618, + 617, 620, 625, 432, 64, 75, 106, 172, 380, 133, 420, + }, + { + // PAL DS + 5, 287, 33, 33, 2, 2, 13, 11, 13, 11, 619, 621, + 619, 621, 624, 432, 64, 75, 106, 172, 380, 133, 420, + }, + { + // MPAL INT + 6, 240, 24, 25, 3, 2, 16, 15, 14, 13, 518, 517, + 516, 519, 525, 429, 64, 78, 112, 162, 373, 122, 412, + }, + { + // MPAL DS + 6, 240, 24, 24, 4, 4, 16, 14, 16, 14, 518, 520, + 518, 520, 526, 429, 64, 78, 112, 162, 373, 122, 412, + }, + { + // NTSC PRO + 12, 480, 48, 48, 6, 6, 24, 24, 24, 24, 1038, 1038, + 1038, 1038, 1050, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { + // NTSC 3D + 12, 480, 44, 44, 10, 10, 24, 24, 24, 24, 1038, 1038, + 1038, 1038, 1050, 429, 64, 71, 105, 168, 379, 122, 412, + }, + { + // GCA INT + 6, 241, 24, 25, 1, 0, 12, 13, 12, 13, 520, 519, + 520, 519, 525, 429, 64, 71, 105, 159, 370, 122, 412, + }, + { + // GCA DS + 12, 480, 48, 48, 6, 6, 24, 24, 24, 24, 1038, 1038, + 1038, 1038, 1050, 429, 64, 71, 105, 180, 391, 122, 412, + }, }; -#pragma pop /* 803D1920-803D1954 02EA40 0032+02 0/1 0/0 0/0 .data taps */ #pragma push #pragma force_active on -SECTION_DATA static u8 taps[50 + 2 /* padding */] = { - 0x01, - 0xF0, - 0x01, - 0xDC, - 0x01, - 0xAE, - 0x01, - 0x74, - 0x01, - 0x29, - 0x00, - 0xDB, - 0x00, - 0x8E, - 0x00, - 0x46, - 0x00, - 0x0C, - 0x00, - 0xE2, - 0x00, - 0xCB, - 0x00, - 0xC0, - 0x00, - 0xC4, - 0x00, - 0xCF, - 0x00, - 0xDE, - 0x00, - 0xEC, - 0x00, - 0xFC, - 0x00, - 0x08, - 0x00, - 0x0F, - 0x00, - 0x13, - 0x00, - 0x13, - 0x00, - 0x0F, - 0x00, - 0x0C, - 0x00, - 0x08, - 0x00, - 0x01, - /* padding */ - 0x00, - 0x00, -}; +static u16 taps[26] = {496, 476, 430, 372, 297, 219, 142, 70, 12, 226, 203, 192, 196, + 207, 222, 236, 252, 8, 15, 19, 19, 15, 12, 8, 1, 0}; #pragma pop -/* 803D1954-803D19D0 -00001 007C+00 1/1 0/0 0/0 .data @101 */ -SECTION_DATA static void* lit_101[31] = { - (void*)(((char*)getTiming) + 0x28), (void*)(((char*)getTiming) + 0x30), - (void*)(((char*)getTiming) + 0x68), (void*)(((char*)getTiming) + 0x70), - (void*)(((char*)getTiming) + 0x38), (void*)(((char*)getTiming) + 0x40), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x58), (void*)(((char*)getTiming) + 0x60), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x78), (void*)(((char*)getTiming) + 0x80), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x48), (void*)(((char*)getTiming) + 0x50), - (void*)(((char*)getTiming) + 0xA0), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x88), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x90), (void*)(((char*)getTiming) + 0xA0), - (void*)(((char*)getTiming) + 0x98), (void*)(((char*)getTiming) + 0x98), - (void*)(((char*)getTiming) + 0x98), -}; - /* 80451838-8045183C 000D38 0004+00 2/2 0/0 0/0 .sbss FBSet */ static u32 FBSet; /* 8045183C-80451840 000D3C 0004+00 1/1 0/0 0/0 .sbss timingExtra */ -static u8 timingExtra[4]; +static VITimingInfo* timingExtra; /* 8034C268-8034C310 346BA8 00A8+00 4/3 0/0 0/0 .text getTiming */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void getTiming() { - nofralloc -#include "asm/dolphin/vi/vi/getTiming.s" +static VITimingInfo* getTiming(VITVMode mode) { + switch (mode) { + case VI_TVMODE_NTSC_INT: + return &timing[0]; + case VI_TVMODE_NTSC_DS: + return &timing[1]; + + case VI_TVMODE_PAL_INT: + return &timing[2]; + case VI_TVMODE_PAL_DS: + return &timing[3]; + + case VI_TVMODE_EURGB60_INT: + return &timing[0]; + case VI_TVMODE_EURGB60_DS: + return &timing[1]; + + case VI_TVMODE_MPAL_INT: + return &timing[4]; + case VI_TVMODE_MPAL_DS: + return &timing[5]; + + case VI_TVMODE_NTSC_PROG: + return &timing[6]; + case VI_TVMODE_NTSC_3D: + return &timing[7]; + + case VI_TVMODE_DEBUG_PAL_INT: + return &timing[2]; + case VI_TVMODE_DEBUG_PAL_DS: + return &timing[3]; + + case VI_TVMODE_GCA_INT: + return &timing[8]; + case VI_TVMODE_GCA_PROG: + return &timing[9]; + + case 29: + case 30: + case 28: + return timingExtra; + } + + return NULL; } -#pragma pop /* 8034C310-8034C514 346C50 0204+00 1/1 0/0 0/0 .text __VIInit */ +#ifdef NONMATCHING +void __VIInit(VITVMode mode) { + VITimingInfo* tm; + u32 nonInter; + vu32 a; + u32 tv, tvForReg; + + u16 hct, vct; + + nonInter = mode & 2; + tv = (u32)mode >> 2; + + *(u32*)OSPhysicalToCached(0xCC) = tv; + + tm = getTiming(mode); + + __VIRegs[VI_DISP_CONFIG] = 2; + for (a = 0; a < 1000; a++) { + ; + } + + __VIRegs[VI_DISP_CONFIG] = 0; + + __VIRegs[VI_HORIZ_TIMING_0U] = tm->hlw << 0; + __VIRegs[VI_HORIZ_TIMING_0L] = (tm->hce << 0) | (tm->hcs << 8); + + __VIRegs[VI_HORIZ_TIMING_1U] = (tm->hsy << 0) | ((tm->hbe640 & ((1 << 9) - 1)) << 7); + __VIRegs[VI_HORIZ_TIMING_1L] = ((tm->hbe640 >> 9) << 0) | (tm->hbs640 << 1); + + __VIRegs[VI_VERT_TIMING] = (tm->equ << 0) | (0 << 4); + + __VIRegs[VI_VERT_TIMING_ODD_U] = (tm->prbOdd + tm->acv * 2 - 2) << 0; + __VIRegs[VI_VERT_TIMING_ODD] = tm->psbOdd + 2 << 0; + + __VIRegs[VI_VERT_TIMING_EVEN_U] = (tm->prbEven + tm->acv * 2 - 2) << 0; + __VIRegs[VI_VERT_TIMING_EVEN] = tm->psbEven + 2 << 0; + + __VIRegs[VI_BBI_ODD_U] = (tm->bs1 << 0) | (tm->be1 << 5); + __VIRegs[VI_BBI_ODD] = (tm->bs3 << 0) | (tm->be3 << 5); + + __VIRegs[VI_BBI_EVEN_U] = (tm->bs2 << 0) | (tm->be2 << 5); + __VIRegs[VI_BBI_EVEN] = (tm->bs4 << 0) | (tm->be4 << 5); + + __VIRegs[VI_HSW] = (40 << 0) | (40 << 8); + + __VIRegs[VI_DISP_INT_1U] = 1; + __VIRegs[VI_DISP_INT_1] = (1 << 0) | (1 << 12) | (0 << 15); + + hct = (tm->hlw + 1); + vct = (tm->numHalfLines / 2 + 1) | (1 << 12) | (0 << 15); + __VIRegs[VI_DISP_INT_0U] = hct << 0; + __VIRegs[VI_DISP_INT_0] = vct; + + if (mode != VI_TVMODE_NTSC_PROG && mode != VI_TVMODE_NTSC_3D && mode != VI_TVMODE_GCA_PROG) { + __VIRegs[VI_DISP_CONFIG] = + (1 << 0) | (0 << 1) | (nonInter << 2) | (0 << 3) | (0 << 4) | (0 << 6) | (tv << 8); + __VIRegs[VI_CLOCK_SEL] = 0; + + } else { + __VIRegs[VI_DISP_CONFIG] = + (1 << 0) | (0 << 1) | (1 << 2) | (0 << 3) | (0 << 4) | (0 << 6) | (tv << 8); + __VIRegs[VI_CLOCK_SEL] = 1; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -269,29 +476,140 @@ asm void __VIInit() { #include "asm/dolphin/vi/vi/__VIInit.s" } #pragma pop - -/* ############################################################################################## */ -/* 8044CAA0-8044CB18 0797C0 0076+02 0/0 0/0 0/0 .bss shdwRegs */ -#pragma push -#pragma force_active on -static u8 shdwRegs[118 + 2 /* padding */]; -#pragma pop - -/* 8044CB18-8044CB70 079838 0058+00 2/5 0/0 0/0 .bss HorVer */ -static u8 HorVer[88]; +#endif /* 80450A10-80450A14 -00001 0004+00 1/1 0/0 0/0 .sdata __VIVersion */ SECTION_SDATA static void* __VIVersion = (void*)&lit_1; -/* 8034C514-8034C9C4 346E54 04B0+00 0/0 1/1 0/0 .text VIInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIInit() { - nofralloc -#include "asm/dolphin/vi/vi/VIInit.s" +static void AdjustPosition(u16 acv) { + s32 coeff, frac; + + HorVer.adjDispPosX = + (u16)CLAMP((s16)HorVer.dispPosX + displayOffsetH, 0, 720 - HorVer.dispSizeX); + + coeff = (HorVer.xfbMode == VI_XFBMODE_SF) ? 2 : 1; + frac = HorVer.dispPosY & 1; + + HorVer.adjDispPosY = (u16)MAX((s16)HorVer.dispPosY + displayOffsetV, frac); + + HorVer.adjDispSizeY = + (u16)(HorVer.dispSizeY + MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) - + MAX((s16)HorVer.dispPosY + (s16)HorVer.dispSizeY + displayOffsetV - + ((s16)acv * 2 - frac), + 0)); + + HorVer.adjPanPosY = + (u16)(HorVer.panPosY - MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) / coeff); + + HorVer.adjPanSizeY = + (u16)(HorVer.panSizeY + MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) / coeff - + MAX((s16)HorVer.dispPosY + (s16)HorVer.dispSizeY + displayOffsetV - + ((s16)acv * 2 - frac), + 0) / + coeff); +} + +static void ImportAdjustingValues(void) { + displayOffsetH = __OSLockSram()->displayOffsetH; + displayOffsetV = 0; + __OSUnlockSram(FALSE); +} + +/* 8034C514-8034C9C4 346E54 04B0+00 0/0 1/1 0/0 .text VIInit */ +void VIInit(void) { + u16 dspCfg; + u32 value, tv, tvInBootrom; + + if (IsInitialized) { + return; + } + + OSRegisterVersion(__VIVersion); + IsInitialized = TRUE; + encoderType = 1; + + if (!(__VIRegs[VI_DISP_CONFIG] & 1)) { + __VIInit(VI_TVMODE_NTSC_INT); + } + + retraceCount = 0; + changed = 0; + shdwChanged = 0; + changeMode = 0; + shdwChangeMode = 0; + flushFlag = 0; + + __VIRegs[VI_FCT_0U] = ((((taps[0])) << 0) | (((taps[1] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_0] = ((((taps[1] >> 6)) << 0) | (((taps[2])) << 4)); + __VIRegs[VI_FCT_1U] = ((((taps[3])) << 0) | (((taps[4] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_1] = ((((taps[4] >> 6)) << 0) | (((taps[5])) << 4)); + __VIRegs[VI_FCT_2U] = ((((taps[6])) << 0) | (((taps[7] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_2] = ((((taps[7] >> 6)) << 0) | (((taps[8])) << 4)); + __VIRegs[VI_FCT_3U] = ((((taps[9])) << 0) | (((taps[10])) << 8)); + __VIRegs[VI_FCT_3] = ((((taps[11])) << 0) | (((taps[12])) << 8)); + __VIRegs[VI_FCT_4U] = ((((taps[13])) << 0) | (((taps[14])) << 8)); + __VIRegs[VI_FCT_4] = ((((taps[15])) << 0) | (((taps[16])) << 8)); + __VIRegs[VI_FCT_5U] = ((((taps[17])) << 0) | (((taps[18])) << 8)); + __VIRegs[VI_FCT_5] = ((((taps[19])) << 0) | (((taps[20])) << 8)); + __VIRegs[VI_FCT_6U] = ((((taps[21])) << 0) | (((taps[22])) << 8)); + __VIRegs[VI_FCT_6] = ((((taps[23])) << 0) | (((taps[24])) << 8)); + + __VIRegs[VI_WIDTH] = 640; + ImportAdjustingValues(); + tvInBootrom = *(u32*)OSPhysicalToCached(0xCC); + dspCfg = __VIRegs[VI_DISP_CONFIG]; + + HorVer.nonInter = ((((u32)(dspCfg)) >> 2 & 0x00000001)); + HorVer.tv = ((((u32)(dspCfg)) & 0x00000300) >> 8); + + if ((tvInBootrom == VI_PAL) && (HorVer.tv == VI_NTSC)) { + HorVer.tv = VI_EURGB60; + } + + tv = (HorVer.tv == VI_DEBUG) ? VI_NTSC : HorVer.tv; + HorVer.timing = getTiming((VITVMode)VI_TVMODE(tv, HorVer.nonInter)); + regs[VI_DISP_CONFIG] = dspCfg; + + CurrTiming = HorVer.timing; + CurrTvMode = HorVer.tv; + + HorVer.dispSizeX = 640; + HorVer.dispSizeY = (u16)(CurrTiming->acv * 2); + HorVer.dispPosX = (u16)((720 - HorVer.dispSizeX) / 2); + HorVer.dispPosY = 0; + + AdjustPosition(CurrTiming->acv); + + HorVer.fbSizeX = 640; + HorVer.fbSizeY = (u16)(CurrTiming->acv * 2); + HorVer.panPosX = 0; + HorVer.panPosY = 0; + HorVer.panSizeX = 640; + HorVer.panSizeY = (u16)(CurrTiming->acv * 2); + HorVer.xfbMode = VI_XFBMODE_SF; + HorVer.wordPerLine = 40; + HorVer.std = 40; + HorVer.wpl = 40; + HorVer.xof = 0; + HorVer.isBlack = TRUE; + HorVer.is3D = FALSE; + + OSInitThreadQueue(&retraceQueue); + + value = __VIRegs[VI_DISP_INT_0]; + value = (((u32)(value)) & ~0x00008000) | (((0)) << 15); + __VIRegs[VI_DISP_INT_0] = value; + + value = __VIRegs[VI_DISP_INT_1]; + value = (((u32)(value)) & ~0x00008000) | (((0)) << 15); + __VIRegs[VI_DISP_INT_1] = value; + + PreCB = NULL; + PostCB = NULL; + + __OSSetInterruptHandler(24, __VIRetraceHandler); + __OSUnmaskInterrupts((0x80000000u >> (24))); } -#pragma pop /* 8034C9C4-8034CA18 347304 0054+00 0/0 10/10 0/0 .text VIWaitForRetrace */ void VIWaitForRetrace() { @@ -300,112 +618,415 @@ void VIWaitForRetrace() { do { OSSleepThread(&retraceQueue); - } while(startVal == retraceCount); + } while (startVal == retraceCount); OSRestoreInterrupts(enable); } -/* 8034CA18-8034CCEC 347358 02D4+00 2/2 0/0 0/0 .text setFbbRegs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void setFbbRegs(void**, void**, void**, void**, void**) { - nofralloc -#include "asm/dolphin/vi/vi/setFbbRegs.s" +static void setInterruptRegs(VITimingInfo* tm) { + u16 vct, hct, borrow; + + vct = (u16)(tm->numHalfLines / 2); + borrow = (u16)(tm->numHalfLines % 2); + hct = (u16)((borrow) ? tm->hlw : (u16)0); + + vct++; + hct++; + + regs[VI_DISP_INT_0U] = (u16)hct; + changed |= VI_BITMASK(VI_DISP_INT_0U); + + regs[VI_DISP_INT_0] = (u16)((((u32)(vct))) | (((u32)(1)) << 12) | (((u32)(0)) << 15)); + changed |= VI_BITMASK(VI_DISP_INT_0); +} + +static void setPicConfig(u16 fbSizeX, VIXFBMode xfbMode, u16 panPosX, u16 panSizeX, u8* wordPerLine, + u8* std, u8* wpl, u8* xof) { + *wordPerLine = (u8)((fbSizeX + 15) / 16); + *std = (u8)((xfbMode == VI_XFBMODE_SF) ? *wordPerLine : (u8)(2 * *wordPerLine)); + *xof = (u8)(panPosX % 16); + *wpl = (u8)((*xof + panSizeX + 15) / 16); + + regs[VI_HSW] = (u16)((((u32)(*std))) | (((u32)(*wpl)) << 8)); + changed |= VI_BITMASK(VI_HSW); +} + +static void setBBIntervalRegs(VITimingInfo* tm) { + u16 val; + + val = (u16)((((u32)(tm->bs1))) | (((u32)(tm->be1)) << 5)); + regs[VI_BBI_ODD_U] = val; + changed |= VI_BITMASK(VI_BBI_ODD_U); + + val = (u16)((((u32)(tm->bs3))) | (((u32)(tm->be3)) << 5)); + regs[VI_BBI_ODD] = val; + changed |= VI_BITMASK(VI_BBI_ODD); + + val = (u16)((((u32)(tm->bs2))) | (((u32)(tm->be2)) << 5)); + regs[VI_BBI_EVEN_U] = val; + changed |= VI_BITMASK(VI_BBI_EVEN_U); + + val = (u16)((((u32)(tm->bs4))) | (((u32)(tm->be4)) << 5)); + regs[VI_BBI_EVEN] = val; + changed |= VI_BITMASK(VI_BBI_EVEN); +} + +static void setScalingRegs(u16 panSizeX, u16 dispSizeX, BOOL is3D) { + u32 scale; + + panSizeX = (u16)(is3D ? panSizeX * 2 : panSizeX); + + if (panSizeX < dispSizeX) { + scale = (256 * (u32)panSizeX + (u32)dispSizeX - 1) / (u32)dispSizeX; + + regs[VI_HSR] = (u16)((((u32)(scale))) | (((u32)(1)) << 12)); + changed |= VI_BITMASK(VI_HSR); + + regs[VI_WIDTH] = (u16)((((u32)(panSizeX)))); + changed |= VI_BITMASK(VI_WIDTH); + } else { + regs[VI_HSR] = (u16)((((u32)(256))) | (((u32)(0)) << 12)); + changed |= VI_BITMASK(VI_HSR); + } +} + +static void calcFbbs(u32 bufAddr, u16 panPosX, u16 panPosY, u8 wordPerLine, VIXFBMode xfbMode, + u16 dispPosY, u32* tfbb, u32* bfbb) { + u32 bytesPerLine, xoffInWords; + xoffInWords = (u32)panPosX / 16; + bytesPerLine = (u32)wordPerLine * 32; + + *tfbb = bufAddr + xoffInWords * 32 + bytesPerLine * panPosY; + *bfbb = (xfbMode == VI_XFBMODE_SF) ? *tfbb : (*tfbb + bytesPerLine); + + if (dispPosY % 2 == 1) { + u32 tmp = *tfbb; + *tfbb = *bfbb; + *bfbb = tmp; + } + + *tfbb = ToPhysical(*tfbb); + *bfbb = ToPhysical(*bfbb); +} + +/* 8034CA18-8034CCEC 347358 02D4+00 2/2 0/0 0/0 .text setFbbRegs */ +static void setFbbRegs(VIPositionInfo* hv, u32* tfbb, u32* bfbb, u32* rtfbb, u32* rbfbb) { + u32 shifted; + calcFbbs(hv->bufAddr, hv->panPosX, hv->adjPanPosY, hv->wordPerLine, hv->xfbMode, + hv->adjDispPosY, tfbb, bfbb); + + if (hv->is3D) { + calcFbbs(hv->rbufAddr, hv->panPosX, hv->adjPanPosY, hv->wordPerLine, hv->xfbMode, + hv->adjDispPosY, rtfbb, rbfbb); + } + + if (IS_LOWER_16MB(*tfbb) && IS_LOWER_16MB(*bfbb) && IS_LOWER_16MB(*rtfbb) && + IS_LOWER_16MB(*rbfbb)) + { + shifted = 0; + } else { + shifted = 1; + } + + if (shifted) { + *tfbb >>= 5; + *bfbb >>= 5; + *rtfbb >>= 5; + *rbfbb >>= 5; + } + + regs[VI_TOP_FIELD_BASE_LEFT_U] = (u16)(*tfbb & 0xFFFF); + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_LEFT_U); + + regs[VI_TOP_FIELD_BASE_LEFT] = (u16)((((*tfbb >> 16))) | hv->xof << 8 | shifted << 12); + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_LEFT); + + regs[VI_BTTM_FIELD_BASE_LEFT_U] = (u16)(*bfbb & 0xFFFF); + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_LEFT_U); + + regs[VI_BTTM_FIELD_BASE_LEFT] = (u16)(*bfbb >> 16); + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_LEFT); + + if (hv->is3D) { + regs[VI_TOP_FIELD_BASE_RIGHT_U] = *rtfbb & 0xffff; + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_RIGHT_U); + + regs[VI_TOP_FIELD_BASE_RIGHT] = *rtfbb >> 16; + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_RIGHT); + + regs[VI_BTTM_FIELD_BASE_RIGHT_U] = *rbfbb & 0xFFFF; + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_RIGHT_U); + + regs[VI_BTTM_FIELD_BASE_RIGHT] = *rbfbb >> 16; + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_RIGHT); + } +} + +static void setHorizontalRegs(VITimingInfo* tm, u16 dispPosX, u16 dispSizeX) { + u32 hbe, hbs, hbeLo, hbeHi; + + regs[VI_HORIZ_TIMING_0U] = (u16)tm->hlw; + changed |= VI_BITMASK(VI_HORIZ_TIMING_0U); + + regs[VI_HORIZ_TIMING_0L] = (u16)(tm->hce | tm->hcs << 8); + changed |= VI_BITMASK(VI_HORIZ_TIMING_0L); + + hbe = (u32)(tm->hbe640 - 40 + dispPosX); + hbs = (u32)(tm->hbs640 + 40 + dispPosX - (720 - dispSizeX)); + + hbeLo = hbe & ONES(9); + hbeHi = hbe >> 9; + + regs[VI_HORIZ_TIMING_1U] = (u16)(tm->hsy | hbeLo << 7); + changed |= VI_BITMASK(VI_HORIZ_TIMING_1U); + + regs[VI_HORIZ_TIMING_1L] = (u16)(hbeHi | hbs << 1); + changed |= VI_BITMASK(VI_HORIZ_TIMING_1L); } -#pragma pop /* 8034CCEC-8034CE8C 34762C 01A0+00 2/2 0/0 0/0 .text setVerticalRegs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void setVerticalRegs(u16 arg0, u16 arg1, u8 arg2, u16 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7, u32 arg8) { - nofralloc -#include "asm/dolphin/vi/vi/setVerticalRegs.s" +static void setVerticalRegs(u16 dispPosY, u16 dispSizeY, u8 equ, u16 acv, u16 prbOdd, u16 prbEven, + u16 psbOdd, u16 psbEven, BOOL black) { + u16 actualPrbOdd, actualPrbEven, actualPsbOdd, actualPsbEven, actualAcv, c, d; + + if (regs[VI_CLOCK_SEL] & 1) { + c = 1; + d = 2; + } else { + c = 2; + d = 1; + } + + if (dispPosY % 2 == 0) { + actualPrbOdd = (u16)(prbOdd + d * dispPosY); + actualPsbOdd = (u16)(psbOdd + d * ((c * acv - dispSizeY) - dispPosY)); + actualPrbEven = (u16)(prbEven + d * dispPosY); + actualPsbEven = (u16)(psbEven + d * ((c * acv - dispSizeY) - dispPosY)); + } else { + actualPrbOdd = (u16)(prbEven + d * dispPosY); + actualPsbOdd = (u16)(psbEven + d * ((c * acv - dispSizeY) - dispPosY)); + actualPrbEven = (u16)(prbOdd + d * dispPosY); + actualPsbEven = (u16)(psbOdd + d * ((c * acv - dispSizeY) - dispPosY)); + } + + actualAcv = (u16)(dispSizeY / c); + + if (black) { + actualPrbOdd += 2 * actualAcv - 2; + actualPsbOdd += 2; + actualPrbEven += 2 * actualAcv - 2; + actualPsbEven += 2; + actualAcv = 0; + } + + regs[VI_VERT_TIMING] = (u16)(equ | actualAcv << 4); + changed |= VI_BITMASK(VI_VERT_TIMING); + + regs[VI_VERT_TIMING_ODD_U] = (u16)actualPrbOdd << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_ODD_U); + + regs[VI_VERT_TIMING_ODD] = (u16)actualPsbOdd << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_ODD); + + regs[VI_VERT_TIMING_EVEN_U] = (u16)actualPrbEven << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_EVEN_U); + + regs[VI_VERT_TIMING_EVEN] = (u16)actualPsbEven << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_EVEN); } -#pragma pop -/* ############################################################################################## */ -/* 803D19D0-803D19FC 02EAF0 0029+03 0/1 0/0 0/0 .data @355 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_355[] = "***************************************\n"; -#pragma pop +/* 80451840-80451848 000D40 0004+04 1/1 0/0 0/0 .sbss message$351 */ +static u32 message; -/* 803D19FC-803D1A28 02EB1C 0029+03 0/1 0/0 0/0 .data @356 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_356[] = " ! ! ! C A U T I O N ! ! ! \n"; -#pragma pop +static void PrintDebugPalCaution(void) { + // static u32 message = 0; -/* 803D1A28-803D1A54 02EB48 0029+03 0/1 0/0 0/0 .data @357 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_357[] = "This TV format \"DEBUG_PAL\" is only for \n"; -#pragma pop - -/* 803D1A54-803D1A80 02EB74 0029+03 0/1 0/0 0/0 .data @358 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_358[] = "temporary solution until PAL DAC board \n"; -#pragma pop - -/* 803D1A80-803D1AAC 02EBA0 0029+03 0/1 0/0 0/0 .data @359 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_359[] = "is available. Please do NOT use this \n"; -#pragma pop - -/* 803D1AAC-803D1AD8 02EBCC 0029+03 0/1 0/0 0/0 .data @360 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_360[] = "mode in real games!!! \n"; -#pragma pop + if (message == 0) { + message = 1; + OSReport("***************************************\n"); + OSReport(" ! ! ! C A U T I O N ! ! ! \n"); + OSReport("This TV format \"DEBUG_PAL\" is only for \n"); + OSReport("temporary solution until PAL DAC board \n"); + OSReport("is available. Please do NOT use this \n"); + OSReport("mode in real games!!! \n"); + OSReport("***************************************\n"); + } +} /* 803D1AD8-803D1B24 02EBF8 004B+01 0/1 0/0 0/0 .data @538 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_538[] = "VIConfigure(): Tried to change mode from (%d) to (%d), which is forbidden\n"; +SECTION_DATA static char lit_538[] = + "VIConfigure(): Tried to change mode from (%d) to (%d), which is forbidden\n"; #pragma pop /* 80450A14-80450A1C 000494 0005+03 1/1 0/0 0/0 .sdata @537 */ SECTION_SDATA static char lit_537[] = "vi.c"; -/* 80451840-80451848 000D40 0004+04 1/1 0/0 0/0 .sbss message$351 */ -static u8 message[4 + 4 /* padding */]; - /* 8034CE8C-8034D694 3477CC 0808+00 0/0 2/2 0/0 .text VIConfigure */ +#ifdef NONMATCHING +void VIConfigure(const GXRenderModeObj* obj) { + VITimingInfo* tm; + u32 regDspCfg; + BOOL enabled; + u32 newNonInter, tvInBootrom, tvInGame; + + enabled = OSDisableInterrupts(); + newNonInter = (u32)obj->vi_tv_mode & 3; + + if (HorVer.nonInter != newNonInter) { + changeMode = 1; + HorVer.nonInter = newNonInter; + } + + tvInGame = (u32)obj->vi_tv_mode >> 2; + tvInBootrom = *(u32*)OSPhysicalToCached(0xCC); + + if (tvInGame == VI_DEBUG_PAL) { + PrintDebugPalCaution(); + } + + switch (tvInBootrom) { + case VI_MPAL: + case VI_NTSC: + case VI_GCA: + case 7: + if (tvInGame == VI_NTSC || tvInGame == VI_MPAL || tvInGame == VI_GCA) { + break; + } + goto panic; + case VI_PAL: + case VI_EURGB60: + if (tvInGame == VI_PAL || tvInGame == VI_EURGB60) { + break; + } + default: + panic: + OSPanic(__FILE__, 1979, + "VIConfigure(): Tried to change mode from (%d) to (%d), which is forbidden\n", + tvInBootrom, tvInGame); + } + + if ((tvInGame == VI_NTSC) || (tvInGame == VI_MPAL)) { + HorVer.tv = tvInBootrom; + } else { + HorVer.tv = tvInGame; + } + + HorVer.dispPosX = obj->vi_x_origin; + HorVer.dispPosY = (u16)((HorVer.nonInter == VI_NON_INTERLACE) ? (u16)(obj->vi_y_origin * 2) : + obj->vi_y_origin); + HorVer.dispSizeX = obj->vi_width; + HorVer.fbSizeX = obj->fb_width; + HorVer.fbSizeY = obj->xfb_height; + HorVer.xfbMode = obj->xfb_mode; + HorVer.panSizeX = HorVer.fbSizeX; + HorVer.panSizeY = HorVer.fbSizeY; + HorVer.panPosX = 0; + HorVer.panPosY = 0; + + HorVer.dispSizeY = (u16)((HorVer.nonInter == VI_PROGRESSIVE) ? HorVer.panSizeY : + (HorVer.nonInter == VI_3D) ? HorVer.panSizeY : + (HorVer.xfbMode == VI_XFBMODE_SF) ? (u16)(2 * HorVer.panSizeY) : + HorVer.panSizeY); + + HorVer.is3D = (HorVer.nonInter == VI_3D) ? TRUE : FALSE; + + tm = getTiming((VITVMode)VI_TVMODE(HorVer.tv, HorVer.nonInter)); + HorVer.timing = tm; + + AdjustPosition(tm->acv); + if (encoderType == 0) { + HorVer.tv = VI_DEBUG; + } + setInterruptRegs(tm); + + regDspCfg = regs[VI_DISP_CONFIG]; + // TODO: USE BIT MACROS OR SOMETHING + if ((HorVer.nonInter == VI_PROGRESSIVE) || (HorVer.nonInter == VI_3D)) { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000004) | (((u32)(1)) << 2); + } else { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000004) | (((u32)(HorVer.nonInter & 1)) << 2); + } + + regDspCfg = (((u32)(regDspCfg)) & ~0x00000008) | (((u32)(HorVer.is3D)) << 3); + + if ((HorVer.tv == VI_DEBUG_PAL) || (HorVer.tv == VI_EURGB60) || (HorVer.tv == VI_GCA)) { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000300); + } else { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000300) | (((u32)(HorVer.tv)) << 8); + } + + regs[VI_DISP_CONFIG] = (u16)regDspCfg; + changed |= VI_BITMASK(0x01); + + regDspCfg = regs[VI_CLOCK_SEL]; + if (obj->vi_tv_mode == VI_TVMODE_NTSC_PROG || obj->vi_tv_mode == VI_TVMODE_NTSC_3D || + obj->vi_tv_mode == VI_TVMODE_GCA_PROG) + { + regDspCfg = (u32)(regDspCfg & ~0x1) | 1; + } else { + regDspCfg = (u32)(regDspCfg & ~0x1); + } + + regs[VI_CLOCK_SEL] = (u16)regDspCfg; + + changed |= 0x200; + + setScalingRegs(HorVer.panSizeX, HorVer.dispSizeX, HorVer.is3D); + setHorizontalRegs(tm, HorVer.adjDispPosX, HorVer.dispSizeX); + setBBIntervalRegs(tm); + setPicConfig(HorVer.fbSizeX, HorVer.xfbMode, HorVer.panPosX, HorVer.panSizeX, + &HorVer.wordPerLine, &HorVer.std, &HorVer.wpl, &HorVer.xof); + + if (FBSet) { + setFbbRegs(&HorVer, &HorVer.tfbb, &HorVer.bfbb, &HorVer.rtfbb, &HorVer.rbfbb); + } + + setVerticalRegs(HorVer.adjDispPosY, HorVer.adjDispSizeY, tm->equ, tm->acv, tm->prbOdd, + tm->prbEven, tm->psbOdd, tm->psbEven, HorVer.isBlack); + OSRestoreInterrupts(enabled); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void VIConfigure(GXRenderModeObj*) { +asm void VIConfigure(const GXRenderModeObj*) { nofralloc #include "asm/dolphin/vi/vi/VIConfigure.s" } #pragma pop +#endif /* 8034D694-8034D7C4 347FD4 0130+00 0/0 9/9 0/0 .text VIFlush */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIFlush() { - nofralloc -#include "asm/dolphin/vi/vi/VIFlush.s" +void VIFlush(void) { + BOOL enabled; + s32 regIndex; + u32 val; // for stack. + + enabled = OSDisableInterrupts(); + shdwChangeMode |= changeMode; + changeMode = 0; + shdwChanged |= changed; + + while (changed) { + regIndex = cntlzd(changed); + shdwRegs[regIndex] = regs[regIndex]; + changed &= ~VI_BITMASK(regIndex); + } + + flushFlag = 1; + NextBufAddr = HorVer.bufAddr; + OSRestoreInterrupts(enabled); } -#pragma pop /* 8034D7C4-8034D830 348104 006C+00 0/0 3/3 0/0 .text VISetNextFrameBuffer */ -void VISetNextFrameBuffer(void* buffer) { - void** bufferArray = (void**)regs; - BOOL enable = OSDisableInterrupts(); - - bufferArray[72] = buffer; +void VISetNextFrameBuffer(void* fb) { + BOOL enabled = OSDisableInterrupts(); + HorVer.bufAddr = (u32)fb; FBSet = 1; - setFbbRegs(bufferArray + 60, bufferArray + 73, - bufferArray + 74, bufferArray + 79, bufferArray + 80 - ); - - OSRestoreInterrupts(enable); + setFbbRegs(&HorVer, &HorVer.tfbb, &HorVer.bfbb, &HorVer.rtfbb, &HorVer.rbfbb); + OSRestoreInterrupts(enabled); } /* 8034D830-8034D838 -00001 0008+00 0/0 0/0 0/0 .text VIGetNextFrameBuffer */ @@ -420,25 +1041,15 @@ void* VIGetCurrentFrameBuffer() { /* 8034D840-8034D8BC 348180 007C+00 0/0 7/7 0/0 .text VISetBlack */ void VISetBlack(BOOL isBlack) { - u8* ptr = regs; - u16* ptr2; - BOOL enable = OSDisableInterrupts(); - - ((u32*)ptr)[76] = isBlack; - ptr2 = ((u16**)ptr)[81]; - setVerticalRegs( - ((u16*)ptr)[125], - ((u16*)ptr)[123], - ((u8*)ptr2)[0], - ptr2[1], - ptr2[2], - ptr2[3], - ptr2[4], - ptr2[5], - ((u32*)ptr)[76] - ); + int interrupt; + VITimingInfo* tm; - OSRestoreInterrupts(enable); + interrupt = OSDisableInterrupts(); + HorVer.isBlack = isBlack; + tm = HorVer.timing; + setVerticalRegs(HorVer.adjDispPosY, HorVer.dispSizeY, tm->equ, tm->acv, tm->prbOdd, tm->prbEven, + tm->psbOdd, tm->psbEven, HorVer.isBlack); + OSRestoreInterrupts(interrupt); } /* 8034D8BC-8034D8C4 -00001 0008+00 0/0 0/0 0/0 .text VIGetRetraceCount */ @@ -447,86 +1058,88 @@ u32 VIGetRetraceCount() { } /* 8034D8C4-8034D900 348204 003C+00 1/1 0/0 0/0 .text GetCurrentDisplayPosition */ -#ifdef NONMATCHING -void GetCurrentDisplayPosition(u32* x, u32* y) { - u32 val3; - u32 val4; - u32 val = __VIRegs[22] & 0x7FF; +static void GetCurrentDisplayPosition(u32* hct, u32* vct) { + u32 hcount, vcount0, vcount; + vcount = __VIRegs[VI_VERT_COUNT] & 0x7FF; do { - val4 = val; - val = __VIRegs[22] & 0x7FF; - val3 = __VIRegs[23] & 0x7FF; - } while (val4 != val); + vcount0 = vcount; + hcount = __VIRegs[VI_HORIZ_COUNT] & 0x7FF; + vcount = __VIRegs[VI_VERT_COUNT] & 0x7FF; + } while (vcount0 != vcount); - *x = val3; - *y = val; + *hct = hcount; + *vct = vcount; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void GetCurrentDisplayPosition(u32* x, u32* y) { - nofralloc -#include "asm/dolphin/vi/vi/GetCurrentDisplayPosition.s" + +static u32 getCurrentHalfLine(void) { + u32 hcount, vcount; + GetCurrentDisplayPosition(&hcount, &vcount); + + return ((vcount - 1) << 1) + ((hcount - 1) / CurrTiming->hlw); } -#pragma pop -#endif /* 8034D900-8034D968 348240 0068+00 1/1 0/0 0/0 .text getCurrentFieldEvenOdd */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void getCurrentFieldEvenOdd() { - nofralloc -#include "asm/dolphin/vi/vi/getCurrentFieldEvenOdd.s" +static u32 getCurrentFieldEvenOdd() { + return (getCurrentHalfLine() < CurrTiming->numHalfLines) ? 1 : 0; } -#pragma pop /* 8034D968-8034DA04 3482A8 009C+00 0/0 0/0 2/2 .text VIGetNextField */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 VIGetNextField() { - nofralloc -#include "asm/dolphin/vi/vi/VIGetNextField.s" +u32 VIGetNextField(void) { + u32 nextField; + int interrupt; + + interrupt = OSDisableInterrupts(); + nextField = getCurrentFieldEvenOdd() ^ 1; + OSRestoreInterrupts(interrupt); + return nextField ^ (HorVer.adjDispPosY & 1); } -#pragma pop /* 8034DA04-8034DA9C 348344 0098+00 0/0 1/1 0/0 .text VIGetCurrentLine */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIGetCurrentLine() { - nofralloc -#include "asm/dolphin/vi/vi/VIGetCurrentLine.s" -} -#pragma pop +u32 VIGetCurrentLine(void) { + u32 line; + VITimingInfo* tm; + int interrupt; -/* ############################################################################################## */ -/* 803D1B24-803D1B48 -00001 0020+04 1/1 0/0 0/0 .data @740 */ -SECTION_DATA static void* lit_740[8 + 1 /* padding */] = { - (void*)(((char*)VIGetTvFormat) + 0x38), - (void*)(((char*)VIGetTvFormat) + 0x40), - (void*)(((char*)VIGetTvFormat) + 0x48), - (void*)(((char*)VIGetTvFormat) + 0x38), - (void*)(((char*)VIGetTvFormat) + 0x40), - (void*)(((char*)VIGetTvFormat) + 0x48), - (void*)(((char*)VIGetTvFormat) + 0x38), - (void*)(((char*)VIGetTvFormat) + 0x38), - /* padding */ - NULL, -}; + tm = CurrTiming; + interrupt = OSDisableInterrupts(); + line = getCurrentHalfLine(); + OSRestoreInterrupts(interrupt); + + if (line >= tm->numHalfLines) { + line -= tm->numHalfLines; + } + + return (line >> 1); +} /* 8034DA9C-8034DB04 3483DC 0068+00 1/0 2/2 1/1 .text VIGetTvFormat */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void VIGetTvFormat() { - nofralloc -#include "asm/dolphin/vi/vi/VIGetTvFormat.s" +u32 VIGetTvFormat(void) { + u32 fmt; + int interrupt; + + interrupt = OSDisableInterrupts(); + + switch (CurrTvMode) { + case VI_NTSC: + case VI_DEBUG: + case VI_GCA: + case 7: + fmt = VI_NTSC; + break; + case VI_PAL: + case VI_DEBUG_PAL: + fmt = VI_PAL; + break; + case VI_EURGB60: + case VI_MPAL: + fmt = CurrTvMode; + break; + } + + OSRestoreInterrupts(interrupt); + return fmt; } -#pragma pop /* 8034DB04-8034DB40 348444 003C+00 0/0 2/2 0/0 .text VIGetDTVStatus */ u32 VIGetDTVStatus() { @@ -538,33 +1151,68 @@ u32 VIGetDTVStatus() { } /* 8034DB40-8034DD5C 348480 021C+00 1/1 0/0 0/0 .text __VIDisplayPositionToXY */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __VIDisplayPositionToXY() { - nofralloc -#include "asm/dolphin/vi/vi/__VIDisplayPositionToXY.s" +void __VIDisplayPositionToXY(u32 hcount, u32 vcount, s16* x, s16* y) { + u32 halfLine = ((vcount - 1) << 1) + ((hcount - 1) / CurrTiming->hlw); + + if (HorVer.nonInter == VI_INTERLACE) { + if (halfLine < CurrTiming->numHalfLines) { + if (halfLine < CurrTiming->equ * 3 + CurrTiming->prbOdd) { + *y = -1; + } else if (halfLine >= CurrTiming->numHalfLines - CurrTiming->psbOdd) { + *y = -1; + } else { + *y = (s16)((halfLine - CurrTiming->equ * 3 - CurrTiming->prbOdd) & ~1); + } + } else { + halfLine -= CurrTiming->numHalfLines; + + if (halfLine < CurrTiming->equ * 3 + CurrTiming->prbEven) { + *y = -1; + } else if (halfLine >= CurrTiming->numHalfLines - CurrTiming->psbEven) { + *y = -1; + } else { + *y = (s16)(((halfLine - CurrTiming->equ * 3 - CurrTiming->prbEven) & ~1) + 1); + } + } + } else if (HorVer.nonInter == VI_NON_INTERLACE) { + if (halfLine >= CurrTiming->numHalfLines) { + halfLine -= CurrTiming->numHalfLines; + } + + if (halfLine < CurrTiming->equ * 3 + CurrTiming->prbOdd) { + *y = -1; + } else if (halfLine >= CurrTiming->numHalfLines - CurrTiming->psbOdd) { + *y = -1; + } else { + *y = (s16)((halfLine - CurrTiming->equ * 3 - CurrTiming->prbOdd) & ~1); + } + } else if (HorVer.nonInter == VI_PROGRESSIVE) { + if (halfLine < CurrTiming->numHalfLines) { + if (halfLine < CurrTiming->equ * 3 + CurrTiming->prbOdd) { + *y = -1; + } else if (halfLine >= CurrTiming->numHalfLines - CurrTiming->psbOdd) { + *y = -1; + } else { + *y = (s16)(halfLine - CurrTiming->equ * 3 - CurrTiming->prbOdd); + } + } else { + halfLine -= CurrTiming->numHalfLines; + + if (halfLine < CurrTiming->equ * 3 + CurrTiming->prbEven) { + *y = -1; + } else if (halfLine >= CurrTiming->numHalfLines - CurrTiming->psbEven) { + *y = -1; + } else + *y = (s16)((halfLine - CurrTiming->equ * 3 - CurrTiming->prbEven) & ~1); + } + } + + *x = (s16)(hcount - 1); } -#pragma pop /* 8034DD5C-8034DDBC 34869C 0060+00 1/1 0/0 0/0 .text __VIGetCurrentPosition */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __VIGetCurrentPosition() { - nofralloc -#include "asm/dolphin/vi/vi/__VIGetCurrentPosition.s" +void __VIGetCurrentPosition(s16* x, s16* y) { + u32 h, v; + GetCurrentDisplayPosition(&h, &v); + __VIDisplayPositionToXY(h, v, x, y); } -#pragma pop - -/* ############################################################################################## */ -/* 80450A19-80450A1D -00001 0004+00 0/0 0/0 0/0 .sdata None */ -#pragma push -#pragma force_active on -SECTION_SDATA static u8 pad_80450A19[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -#pragma pop diff --git a/obj_files.mk b/obj_files.mk index 782654596b..ef2ca4c172 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -1050,6 +1050,7 @@ O_FILES_SYM_ON := \ $(BUILD_DIR)/libs/JSystem/JUtility/JUTResFont.o \ $(BUILD_DIR)/libs/JSystem/JAudio2/JAUAudioArcLoader.o \ $(BUILD_DIR)/libs/JSystem/J2DGraph/J2DAnmLoader.o \ + $(BUILD_DIR)/libs/JSystem/JUtility/JUTProcBar.o \ $(BUILD_DIR)/libs/Z2AudioLib/Z2AudioArcLoader.o \ $(BUILD_DIR)/src/c/c_dylink.o \ $(BUILD_DIR)/src/d/a/d_a_alink.o \ diff --git a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp index d4b30e9442..827efa6027 100644 --- a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp +++ b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp @@ -9,7 +9,7 @@ #include "stdio.h" #include "d/d_procname.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "rel/d/a/d_a_set_bgobj/d_a_set_bgobj.h" SECTION_DATA extern void* __vt__10cCcD_GStts[3]; diff --git a/rel/d/a/d_a_mirror/d_a_mirror.cpp b/rel/d/a/d_a_mirror/d_a_mirror.cpp index 558775fb59..f0d850cc34 100644 --- a/rel/d/a/d_a_mirror/d_a_mirror.cpp +++ b/rel/d/a/d_a_mirror/d_a_mirror.cpp @@ -254,7 +254,7 @@ inline static void GXSetTexCoordGen(GXTexCoordID dst, GXTexGenType type, GXTexGe } inline static void damirror_GXEnd() { - i_GXEnd(); + GXEnd(); } /* 80870D88-80871268 000248 04E0+00 1/1 0/0 0/0 .text mirrorZdraw__16dMirror_packet_cFPfPfffffff diff --git a/rel/d/a/d_a_movie_player/d_a_movie_player.cpp b/rel/d/a/d_a_movie_player/d_a_movie_player.cpp index b006398309..707b4eecf8 100644 --- a/rel/d/a/d_a_movie_player/d_a_movie_player.cpp +++ b/rel/d/a/d_a_movie_player/d_a_movie_player.cpp @@ -5,7 +5,7 @@ #include "rel/d/a/d_a_movie_player/d_a_movie_player.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // @@ -94,7 +94,7 @@ extern "C" void __THPHuffDecodeDCTCompY(); extern "C" void __THPHuffDecodeTab(); extern "C" void __THPHuffDecodeDCTCompU(); extern "C" void __THPHuffDecodeDCTCompV(); -extern "C" static void OSInitFastCast(); +extern "C" static void i_OSInitFastCast(); extern "C" static void THPInit(); extern "C" static void daMP_PopReadedBuffer__Fv(); extern "C" static void daMP_PushReadedBuffer__FPv(); @@ -131,7 +131,7 @@ extern "C" static void daMP_THPGXRestore__Fv(); extern "C" static void daMP_THPGXYuv2RgbSetup__FPC16_GXRenderModeObj(); extern "C" static void GXSetTexCoordGen(); extern "C" static void daMP_THPGXYuv2RgbDraw__FPUcPUcPUcssssss(); -extern "C" static void GXTexCoord2u16(); +extern "C" static void i_GXTexCoord2u16(); extern "C" static void daMP_MixAudio__FPsPsUl(); extern "C" static void daMP_audioCallbackWithMSound__Fl(); extern "C" static void daMP_audioInitWithMSound__Fv(); @@ -223,15 +223,13 @@ extern "C" void free__7JKRHeapFPvP7JKRHeap(); extern "C" void PPCMfhid2(); extern "C" void LCEnable(); extern "C" void LCDisable(); -extern "C" void VISetPostRetraceCallback(); extern "C" void VIGetNextField(); -extern "C" void VIGetTvFormat(); extern "C" void AIGetDSPSampleRate(); extern "C" void GXClearVtxDesc(); extern "C" void GXDrawDone(); extern "C" void GXInvalidateTexAll(); -extern "C" static void GXEnd(); -extern "C" static void GXPosition3s16(); +extern "C" static void i_GXEnd(); +extern "C" static void i_GXPosition3s16(); extern "C" void _savegpr_21(); extern "C" void _savegpr_22(); extern "C" void _savegpr_23(); @@ -780,7 +778,7 @@ static asm void THPInit() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void OSInitFastCast() { +static asm void i_OSInitFastCast() { nofralloc #include "asm/rel/d/a/d_a_movie_player/d_a_movie_player/OSInitFastCast.s" } @@ -1336,7 +1334,7 @@ static asm void daMP_THPGXYuv2RgbDraw(u8* param_0, u8* param_1, u8* param_2, s16 #pragma pop /* 80876DE4-80876DE8 004704 0004+00 1/1 0/0 0/0 .text GXEnd */ -static void GXEnd() { +static void i_GXEnd() { /* empty function */ } @@ -1344,7 +1342,7 @@ static void GXEnd() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void GXTexCoord2u16() { +static asm void i_GXTexCoord2u16() { nofralloc #include "asm/rel/d/a/d_a_movie_player/d_a_movie_player/GXTexCoord2u16.s" } @@ -1354,7 +1352,7 @@ static asm void GXTexCoord2u16() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void GXPosition3s16() { +static asm void i_GXPosition3s16() { nofralloc #include "asm/rel/d/a/d_a_movie_player/d_a_movie_player/GXPosition3s16.s" } diff --git a/rel/d/a/d_a_swc00/d_a_swc00.cpp b/rel/d/a/d_a_swc00/d_a_swc00.cpp index e479ab078d..79d58a1faf 100644 --- a/rel/d/a/d_a_swc00/d_a_swc00.cpp +++ b/rel/d/a/d_a_swc00/d_a_swc00.cpp @@ -5,7 +5,7 @@ #include "rel/d/a/d_a_swc00/d_a_swc00.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "d/com/d_com_inf_game.h" #include "f_op/f_op_actor_mng.h" diff --git a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp index 66c7757cb4..be5c45869e 100644 --- a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp +++ b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp @@ -10,7 +10,7 @@ #include "d/d_stage.h" #include "d/d_lib.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "d/d_procname.h" #include "SSystem/SComponent/c_math.h" #include "JSystem/JKernel/JKRHeap.h" diff --git a/src/DynamicLink.cpp b/src/DynamicLink.cpp index 4cb6d1db4d..8024c44dbe 100644 --- a/src/DynamicLink.cpp +++ b/src/DynamicLink.cpp @@ -10,7 +10,7 @@ #include "JSystem/JUtility/JUTConsole.h" #include "stdio.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_ext.h" diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index f9fdb9d259..fa66ee9799 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -17,7 +17,7 @@ #include "d/msg/d_msg_object.h" #include "d/pane/d_pane_class.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "rel/d/a/d_a_crod/d_a_crod.h" #include "rel/d/a/d_a_horse/d_a_horse.h" #include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h" diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index 3553a4e9f0..34654a2e48 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -7,7 +7,7 @@ #include "d/bg/d_bg_s_sph_chk.h" #include "d/bg/d_bg_w.h" #include "d/com/d_com_inf_game.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "f_op/f_op_actor_mng.h" /* 800740F4-80074110 06EA34 001C+00 2/2 1/1 0/0 .text Init__11cBgS_ChkElmFv */ diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index f6abd887a2..251fc12224 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -13,7 +13,7 @@ #include "d/d_timer.h" #include "d/map/d_map_path_dmap.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_scene_mng.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_audio.h" diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index d4f71af7d8..a510b25deb 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -5,7 +5,7 @@ #include "d/d_camera.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "d/a/d_a_alink.h" #include "d/com/d_com_inf_game.h" #include "m_Do/m_Do_controller_pad.h" diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index f159ec256d..0b017bfc79 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -6,7 +6,7 @@ #include "d/d_demo.h" #include "d/msg/d_msg_object.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_actor_mng.h" #include "global.h" #include "m_Do/m_Do_graphic.h" diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 4c21b5714b..1cfc970235 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -9,9 +9,9 @@ #include "SSystem/SComponent/c_bg_s_shdw_draw.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/gx/GX.h" +#include "dolphin/gx.h" #include "dolphin/mtx/mtx44.h" -#include "dolphin/mtx/mtxvec.h" +#include "dolphin/mtx.h" #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_lib.h" #include "m_Do/m_Do_mtx.h" @@ -411,10 +411,10 @@ void dDlst_2DTri_c::draw() { GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3); - i_GXPosition3s16(x[0], y[0], 0); - i_GXPosition3s16(x[1], y[1], 0); - i_GXPosition3s16(x[2], y[2], 0); - i_GXEnd(); + GXPosition3s16(x[0], y[0], 0); + GXPosition3s16(x[1], y[1], 0); + GXPosition3s16(x[2], y[2], 0); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else @@ -447,11 +447,11 @@ void dDlst_2DQuad_c::draw() { GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(field_0x4, field_0x6, 0); - i_GXPosition3s16(field_0x8, field_0x6, 0); - i_GXPosition3s16(field_0x8, field_0xa, 0); - i_GXPosition3s16(field_0x4, field_0xa, 0); - i_GXEnd(); + GXPosition3s16(field_0x4, field_0x6, 0); + GXPosition3s16(field_0x8, field_0x6, 0); + GXPosition3s16(field_0x8, field_0xa, 0); + GXPosition3s16(field_0x4, field_0xa, 0); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else @@ -485,8 +485,8 @@ void dDlst_2DPoint_c::draw() { GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_POINTS, GX_VTXFMT0, 1); - i_GXPosition3s16(field_0x4, field_0x6, 0); - i_GXEnd(); + GXPosition3s16(field_0x4, field_0x6, 0); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else @@ -572,19 +572,19 @@ void dDlst_2DT_c::draw() { GXSetClipMode(GX_CLIP_DISABLE); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(field_0x12, field_0x14, 0); + GXPosition3s16(field_0x12, field_0x14, 0); GXColor1u32(0xffffffff); - i_GXTexCoord2u16(var1, var2); - i_GXPosition3s16(field_0x16, field_0x14, 0); + GXTexCoord2u16(var1, var2); + GXPosition3s16(field_0x16, field_0x14, 0); GXColor1u32(0xffffffff); - i_GXTexCoord2u16(var3, var2); - i_GXPosition3s16(field_0x16, field_0x18, 0); + GXTexCoord2u16(var3, var2); + GXPosition3s16(field_0x16, field_0x18, 0); GXColor1u32(0xffffffff); - i_GXTexCoord2u16(var3, var4); - i_GXPosition3s16(field_0x12, field_0x18, 0); + GXTexCoord2u16(var3, var4); + GXPosition3s16(field_0x12, field_0x18, 0); GXColor1u32(0xffffffff); - i_GXTexCoord2u16(var1, var4); - i_GXEnd(); + GXTexCoord2u16(var1, var4); + GXEnd(); GXSetClipMode(GX_CLIP_ENABLE); dComIfGp_getCurrentGrafPort()->setup2D(); } @@ -695,7 +695,7 @@ void dDlst_2DT2_c::draw() { GXTexCoord2f32(f27, f25); GXPosition2f32(f29, f30); GXTexCoord2f32(f26, f25); - i_GXEnd(); + GXEnd(); } else if (field_0x44) { f32 f28 = field_0x24 + field_0x2c * 0.5f; f32 f29; @@ -730,7 +730,7 @@ void dDlst_2DT2_c::draw() { GXTexCoord2f32(f29, 1.0f); GXPosition2f32(f28, f30); GXTexCoord2f32(f27, 1.0f); - i_GXEnd(); + GXEnd(); } else if (field_0x45) { f32 f24 = field_0x28 + 0.5f * field_0x30; f32 f25; @@ -768,7 +768,7 @@ void dDlst_2DT2_c::draw() { GXTexCoord2f32(f26, f27); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f25, f27); - i_GXEnd(); + GXEnd(); } else { f32 f24; f32 f25; @@ -797,7 +797,7 @@ void dDlst_2DT2_c::draw() { GXTexCoord2f32(f25, f27); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f24, f27); - i_GXEnd(); + GXEnd(); } GXSetClipMode(GX_CLIP_ENABLE); dComIfGp_getCurrentGrafPort()->setup2D(); @@ -1193,19 +1193,19 @@ void dDlst_2DM_c::draw() { GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(field_0x4, field_0x6, 0); + GXPosition3s16(field_0x4, field_0x6, 0); GXTexCoord2s16(r31, r30); GXTexCoord2s16(r27, r26); - i_GXPosition3s16(field_0x8, field_0x6, 0); + GXPosition3s16(field_0x8, field_0x6, 0); GXTexCoord2s16(r29, r30); GXTexCoord2s16(r25, r26); - i_GXPosition3s16(field_0x8, field_0xa, 0); + GXPosition3s16(field_0x8, field_0xa, 0); GXTexCoord2s16(r29, r28); GXTexCoord2s16(r25, r24); - i_GXPosition3s16(field_0x4, field_0xa, 0); + GXPosition3s16(field_0x4, field_0xa, 0); GXTexCoord2s16(r31, r28); GXTexCoord2s16(r27, r24); - i_GXEnd(); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else @@ -1271,19 +1271,19 @@ void dDlst_2Dm_c::draw() { GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0); GXSetCurrentMtx(0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(field_0x4, field_0x6, 0); + GXPosition3s16(field_0x4, field_0x6, 0); GXTexCoord2s16(r31, r30); GXTexCoord2s16(r27, r26); - i_GXPosition3s16(field_0x8, field_0x6, 0); + GXPosition3s16(field_0x8, field_0x6, 0); GXTexCoord2s16(r29, r30); GXTexCoord2s16(r25, r26); - i_GXPosition3s16(field_0x8, field_0xa, 0); + GXPosition3s16(field_0x8, field_0xa, 0); GXTexCoord2s16(r29, r28); GXTexCoord2s16(r25, r24); - i_GXPosition3s16(field_0x4, field_0xa, 0); + GXPosition3s16(field_0x4, field_0xa, 0); GXTexCoord2s16(r31, r28); GXTexCoord2s16(r27, r24); - i_GXEnd(); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else @@ -1337,7 +1337,7 @@ void dDlst_2DMt_c::draw() { GXSetNumTevStages(r28); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(field_0xc, field_0xe, 0); + GXPosition3s16(field_0xc, field_0xe, 0); dDlst_2DMt_tex_c* tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { @@ -1345,7 +1345,7 @@ void dDlst_2DMt_c::draw() { } tmp++; } - i_GXPosition3s16(field_0x10, field_0xe, 0); + GXPosition3s16(field_0x10, field_0xe, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { @@ -1353,7 +1353,7 @@ void dDlst_2DMt_c::draw() { } tmp++; } - i_GXPosition3s16(field_0x10, field_0x12, 0); + GXPosition3s16(field_0x10, field_0x12, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { @@ -1361,7 +1361,7 @@ void dDlst_2DMt_c::draw() { } tmp++; } - i_GXPosition3s16(field_0xc, field_0x12, 0); + GXPosition3s16(field_0xc, field_0x12, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { @@ -1369,7 +1369,7 @@ void dDlst_2DMt_c::draw() { } tmp++; } - i_GXEnd(); + GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } } @@ -1619,7 +1619,7 @@ void dDlst_effectLine_c::draw() { GXBegin(GX_LINES, GX_VTXFMT0, 2); GXPosition3f32(local_68.x, local_68.y, local_68.z); GXPosition3f32(local_74.x, local_74.y, local_74.z); - i_GXEnd(); + GXEnd(); } } #else @@ -1703,7 +1703,7 @@ void dDlst_shadowPoly_c::draw() { tri++; } - i_GXEnd(); + GXEnd(); } /* 80054478-800544F0 04EDB8 0078+00 1/1 0/0 0/0 .text J3DDrawBuffer__create__FUl */ diff --git a/src/d/d_error_msg.cpp b/src/d/d_error_msg.cpp index 3a2eaaaa6d..19b64b53c9 100644 --- a/src/d/d_error_msg.cpp +++ b/src/d/d_error_msg.cpp @@ -5,7 +5,7 @@ #include "d/d_error_msg.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/src/d/d_eye_hl.cpp b/src/d/d_eye_hl.cpp index a4477e60e6..382520c8f0 100644 --- a/src/d/d_eye_hl.cpp +++ b/src/d/d_eye_hl.cpp @@ -7,7 +7,7 @@ #include "JSystem/J3DGraphBase/J3DTexture.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "d/s/d_s_play.h" /* 8009C964-8009CA28 0972A4 00C4+00 0/0 2/2 0/0 .text entry__8dEyeHL_cFP12J3DModelDataPCc diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp index c66f45e347..d8933b1967 100644 --- a/src/d/d_gameover.cpp +++ b/src/d/d_gameover.cpp @@ -224,7 +224,7 @@ void dDlst_Gameover_CAPTURE_c::draw() { GXPosition3s8(0, 1, -5); GXTexCoord2s8(0, 1); - i_GXEnd(); + GXEnd(); } #else #pragma push diff --git a/src/d/d_resorce.cpp b/src/d/d_resorce.cpp index fb92cf9df7..63e434f064 100644 --- a/src/d/d_resorce.cpp +++ b/src/d/d_resorce.cpp @@ -11,8 +11,8 @@ #include "string.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/mtx/mtx.h" -#include "dolphin/os/OS.h" +#include "dolphin/mtx.h" +#include "dolphin/os.h" #include "dolphin/types.h" #include "global.h" #include "m_Do/m_Do_graphic.h" diff --git a/src/d/d_select_cursor.cpp b/src/d/d_select_cursor.cpp index 7af6a21af8..69732c0a06 100644 --- a/src/d/d_select_cursor.cpp +++ b/src/d/d_select_cursor.cpp @@ -7,7 +7,7 @@ #include "d/com/d_com_inf_game.h" #include "JSystem/J2DGraph/J2DAnimation.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "global.h" // @@ -323,7 +323,7 @@ dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) } mpSelectIcon = NULL; - i_OSInitFastCast(); + OSInitFastCast(); if (strcmp(bpk_name[mNameIdx], "") != 0) { field_0x30 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(JKRFileLoader::getGlbResource(bpk_name[mNameIdx], param_2)); field_0x30->searchUpdateMaterialID(mpScreen); diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index c77d6010a0..b238dc4d97 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -16,7 +16,7 @@ #include "d/map/d_map_path_fmap.h" #include "d/save/d_save_HIO.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_kankyo_mng.h" #include "f_op/f_op_msg_mng.h" #include "f_op/f_op_scene_mng.h" diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index 4c8dd71345..0a0ecf4b44 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -620,7 +620,7 @@ void dDlst_TimerScrnDraw_c::setScreen(s32 param_0, JKRArchive* i_archive) { JUT_ASSERT(fg != false); dPaneClass_showNullPane(mpGetInScreen); - i_OSInitFastCast(); + OSInitFastCast(); mpGetInBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load( JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpArchive)); diff --git a/src/d/file/d_file_select.cpp b/src/d/file/d_file_select.cpp index 0e5c49e5b9..eb777f3278 100644 --- a/src/d/file/d_file_select.cpp +++ b/src/d/file/d_file_select.cpp @@ -14,7 +14,7 @@ #include "d/meter/d_meter2_info.h" #include "d/s/d_s_play.h" #include "dol2asm.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "dolphin/types.h" #include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_controller_pad.h" diff --git a/src/d/kankyo/d_kankyo_rain.cpp b/src/d/kankyo/d_kankyo_rain.cpp index 1c35e76c13..bd0f69a96f 100644 --- a/src/d/kankyo/d_kankyo_rain.cpp +++ b/src/d/kankyo/d_kankyo_rain.cpp @@ -2863,7 +2863,7 @@ void dKyr_drawSibuki(Mtx param_0, u8** param_1) { GXPosition3f32(sp7C.x, sp7C.y, sp7C.z); GXTexCoord2s16(0, 0x1FF); - i_GXEnd(); + GXEnd(); } GXSetClipMode(GX_CLIP_ENABLE); @@ -3282,7 +3282,7 @@ void dKyr_drawHousi(Mtx param_0, u8** param_1) { GXTexCoord2s16(var_r17, var_r17); GXPosition3f32(sp15C[3].x, sp15C[3].y, sp15C[3].z); GXTexCoord2s16(0, var_r17); - i_GXEnd(); + GXEnd(); } } } diff --git a/src/d/map/d_map_path.cpp b/src/d/map/d_map_path.cpp index 0f847db221..5254cee5bb 100644 --- a/src/d/map/d_map_path.cpp +++ b/src/d/map/d_map_path.cpp @@ -91,7 +91,7 @@ void dDrawPath_c::rendering(dDrawPath_c::line_class const* p_line) { GXPosition1x16(*tmp); tmp++; } - i_GXEnd(); + GXEnd(); } } } @@ -110,7 +110,7 @@ void dDrawPath_c::rendering(dDrawPath_c::poly_class const* p_poly) { GXPosition1x16(*tmp); tmp++; } - i_GXEnd(); + GXEnd(); } } } @@ -262,7 +262,7 @@ void dRenderingFDAmap_c::drawBack() const { GXPosition3f32(field_0x8, -field_0xc, 0); GXPosition3f32(field_0x8, field_0xc, 0); GXPosition3f32(-field_0x8, field_0xc, 0); - i_GXEnd(); + GXEnd(); } /* 8003D188-8003D320 037AC8 0198+00 1/0 8/0 0/0 .text preRenderingMap__18dRenderingFDAmap_cFv */ @@ -297,7 +297,7 @@ void dRenderingFDAmap_c::preRenderingMap() { void dRenderingFDAmap_c::postRenderingMap() { GXSetCopyFilter(GX_FALSE, NULL, GX_FALSE, NULL); GXSetTexCopySrc(0, 0, field_0x1c, field_0x1e); - GXSetTexCopyDst(field_0x1c, field_0x1e, _GX_CTF_R8, GX_FALSE); + GXSetTexCopyDst(field_0x1c, field_0x1e, GX_CTF_G8, GX_FALSE); GXCopyTex(field_0x4, GX_TRUE); GXPixModeSync(); GXSetClipMode(GX_CLIP_ENABLE); @@ -363,7 +363,7 @@ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* p_li GXBegin(GX_POINTS, GX_VTXFMT0, 1); GXPosition1x16(data_p[0]); GXTexCoord2f32(0, 0); - i_GXEnd(); + GXEnd(); } setTevSettingNonTextureDirectColor(); diff --git a/src/d/map/d_map_path_dmap.cpp b/src/d/map/d_map_path_dmap.cpp index 5f52d90397..843495d2d6 100644 --- a/src/d/map/d_map_path_dmap.cpp +++ b/src/d/map/d_map_path_dmap.cpp @@ -862,13 +862,13 @@ void renderingDAmap_c::preDrawPath() { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, 0); - GXSetMisc(1, 8); + GXSetMisc(GX_MT_XF_FLUSH, 8); } /* 8003FFC4-8003FFEC 03A904 0028+00 3/0 3/0 0/0 .text postDrawPath__16renderingDAmap_cFv */ void renderingDAmap_c::postDrawPath() { - GXSetMisc(1, 0); + GXSetMisc(GX_MT_XF_FLUSH, 0); } /* 8003FFEC-8003FFF4 03A92C 0008+00 3/0 3/1 0/0 .text getRoomNoSingle__16renderingDAmap_cFv */ @@ -1154,7 +1154,7 @@ void renderingPlusDoor_c::drawNormalDoorS(stage_tgsc_data_class const* i_doorDat GXPosition3f32(sp18[i].x, sp18[i].y, sp18[i].z); GXTexCoord1x8(i); } - i_GXEnd(); + GXEnd(); } /* 800409B4-800409E0 03B2F4 002C+00 3/0 2/0 0/0 .text isDrawRoomIcon__16renderingDAmap_cCFii */ @@ -1390,7 +1390,7 @@ void renderingPlusDoorAndCursor_c::drawIconSingle(Vec const& param_0, f32 param_ GXTexCoord1x8(i); } - i_GXEnd(); + GXEnd(); } /* 800412C0-8004145C 03BC00 019C+00 1/1 0/0 0/0 .text @@ -1430,7 +1430,7 @@ void renderingPlusDoorAndCursor_c::drawCursor(Vec const& param_0, s16 param_1, i GXPosition2f32(offset[i].x, offset[i].z); } - i_GXEnd(); + GXEnd(); } /* 8004145C-80041460 03BD9C 0004+00 2/0 0/0 0/0 .text beforeDrawPath__19renderingPlusDoor_cFv */ diff --git a/src/d/menu/d_menu_collect.cpp b/src/d/menu/d_menu_collect.cpp index e349c882c3..d7854095d3 100644 --- a/src/d/menu/d_menu_collect.cpp +++ b/src/d/menu/d_menu_collect.cpp @@ -30,7 +30,7 @@ #include "d/msg/d_msg_string.h" #include "d/pane/d_pane_class.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_mtx.h" @@ -1567,7 +1567,7 @@ asm void dMenu_Collect2D_c::screenSet() { // matches with literals #ifdef NONMATCHING void dMenu_Collect2D_c::animationSet() { - i_OSInitFastCast(); + OSInitFastCast(); void* resource = JKRGetNameResource("zelda_collect_soubi_screen_revo.btk", dComIfGp_getCollectResArchive()); mpAnmKey = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(resource); diff --git a/src/d/menu/d_menu_window.cpp b/src/d/menu/d_menu_window.cpp index 1a7e1bbfb5..567429a748 100644 --- a/src/d/menu/d_menu_window.cpp +++ b/src/d/menu/d_menu_window.cpp @@ -23,7 +23,7 @@ #include "d/meter/d_meter_map.h" #include "d/msg/d_msg_object.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_msg_mng.h" #include "global.h" #include "m_Do/m_Do_controller_pad.h" diff --git a/src/d/meter/d_meter2_draw.cpp b/src/d/meter/d_meter2_draw.cpp index 294948af33..6a19915f29 100644 --- a/src/d/meter/d_meter2_draw.cpp +++ b/src/d/meter/d_meter2_draw.cpp @@ -76,7 +76,7 @@ dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* mp_heap) { mPikariBlack = static_cast(mpPikariScreen->search('pika00'))->getBlack(); mPikariWhite = static_cast(mpPikariScreen->search('pika00'))->getWhite(); - i_OSInitFastCast(); + OSInitFastCast(); void* pikari_bck = JKRGetNameResource("zelda_icon_pikari.bck", dComIfGp_getMain2DArchive()); mPikariBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(pikari_bck); playPikariBckAnimation(1.0f); @@ -810,7 +810,7 @@ void dMeter2Draw_c::initMagic() { mpMagicMeter = new CPaneMgr(mpKanteraScreen, 'mm_00', 0, NULL); JUT_ASSERT(mpMagicMeter != 0); - i_OSInitFastCast(); + OSInitFastCast(); void* res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_10percent.bpk", dComIfGp_getMain2DArchive()); diff --git a/src/d/meter/d_meter_haihai.cpp b/src/d/meter/d_meter_haihai.cpp index e43c952d69..8a1fdbf320 100644 --- a/src/d/meter/d_meter_haihai.cpp +++ b/src/d/meter/d_meter_haihai.cpp @@ -36,7 +36,7 @@ int dMeterHaihai_c::_create() { mpParent = new CPaneMgr(mpHaihaiScreen, 'n_all', 2, NULL); JUT_ASSERT(mpParent != 0); - i_OSInitFastCast(); + OSInitFastCast(); mpCursorBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load( JKRGetNameResource("zelda_hihi_cursor.bck", dComIfGp_getMain2DArchive())); mBckFrame = 0.0f; diff --git a/src/d/meter/d_meter_string.cpp b/src/d/meter/d_meter_string.cpp index 004a3f559f..157f2ea81d 100644 --- a/src/d/meter/d_meter_string.cpp +++ b/src/d/meter/d_meter_string.cpp @@ -55,7 +55,7 @@ int dMeterString_c::_create() { JUT_ASSERT(fg != false); dPaneClass_showNullPane(mpScreen); - i_OSInitFastCast(); + OSInitFastCast(); mpGetInBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load( JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpMapArchive)); diff --git a/src/d/msg/d_msg_class.cpp b/src/d/msg/d_msg_class.cpp index 76d1d9ebf5..a7851261dd 100644 --- a/src/d/msg/d_msg_class.cpp +++ b/src/d/msg/d_msg_class.cpp @@ -9,7 +9,7 @@ #include "d/msg/d_msg_object.h" #include "d/msg/d_msg_unit.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "JSystem/J2DGraph/J2DTextBox.h" #include "JSystem/JUtility/JUTFont.h" #include "d/msg/d_msg_out_font.h" diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp index 6b383bfcc2..a328147cce 100644 --- a/src/d/msg/d_msg_object.cpp +++ b/src/d/msg/d_msg_object.cpp @@ -8,7 +8,7 @@ #include "d/meter/d_meter2_info.h" #include "d/msg/d_msg_class.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/src/d/ovlp/d_ovlp_fade2.cpp b/src/d/ovlp/d_ovlp_fade2.cpp index fd08a72444..8fb6bb31fc 100644 --- a/src/d/ovlp/d_ovlp_fade2.cpp +++ b/src/d/ovlp/d_ovlp_fade2.cpp @@ -48,7 +48,7 @@ void dOvlpFd2_dlst_c::draw() { GXPosition2s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY()); GXPosition2s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY()); GXPosition2s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY()); - i_GXEnd(); + GXEnd(); Mtx44 m; C_MTXPerspective(m, 60.0f, mDoGph_gInf_c::getWidthF() / mDoGph_gInf_c::getHeightF(), 100.0f, @@ -100,7 +100,7 @@ void dOvlpFd2_dlst_c::draw() { GXPosition2s16(-mDoGph_gInf_c::getWidth() / 2, -mDoGph_gInf_c::getHeight() / 2); GXTexCoord2s8(0, 1); - i_GXEnd(); + GXEnd(); J2DOrthoGraph* graf_ctx = (J2DOrthoGraph*)dComIfGp_getCurrentGrafPort(); graf_ctx->setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), diff --git a/src/d/ovlp/d_ovlp_fade3.cpp b/src/d/ovlp/d_ovlp_fade3.cpp index cb0e54b52d..126710600d 100644 --- a/src/d/ovlp/d_ovlp_fade3.cpp +++ b/src/d/ovlp/d_ovlp_fade3.cpp @@ -55,7 +55,7 @@ void dOvlpFd3_dlst_c::draw() { GXPosition2s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY()); GXPosition2s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY()); GXPosition2s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY()); - i_GXEnd(); + GXEnd(); Mtx44 m; C_MTXPerspective(m, 60.0f, mDoGph_gInf_c::getWidthF() / mDoGph_gInf_c::getHeightF(), 100.0f, @@ -107,7 +107,7 @@ void dOvlpFd3_dlst_c::draw() { GXPosition2s16(-mDoGph_gInf_c::getWidth() / 2, -mDoGph_gInf_c::getHeight() / 2); GXTexCoord2s8(0, 1); - i_GXEnd(); + GXEnd(); J2DOrthoGraph* graf_ctx = (J2DOrthoGraph*)dComIfGp_getCurrentGrafPort(); graf_ctx->setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index 0c83ffb910..e4b1d6300c 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -14,7 +14,7 @@ #include "stdio.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "m_Do/m_Do_lib.h" #include "m_Do/m_Do_graphic.h" #include "f_op/f_op_actor_mng.h" diff --git a/src/d/s/d_s_logo.cpp b/src/d/s/d_s_logo.cpp index aaf7db700a..1701036a59 100644 --- a/src/d/s/d_s_logo.cpp +++ b/src/d/s/d_s_logo.cpp @@ -14,7 +14,7 @@ #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_machine.h" #include "dolphin/os/OSRtc.h" -#include "dolphin/vi/vi.h" +#include "dolphin/vi.h" // // Types: diff --git a/src/d/s/d_s_room.cpp b/src/d/s/d_s_room.cpp index 781e34d373..717d7ce6e3 100644 --- a/src/d/s/d_s_room.cpp +++ b/src/d/s/d_s_room.cpp @@ -8,7 +8,7 @@ #include "d/com/d_com_inf_game.h" #include "d/d_procname.h" #include "d/s/d_s_play.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_Reset.h" diff --git a/src/d/save/d_save.cpp b/src/d/save/d_save.cpp index 6fa808b199..ae102676f1 100644 --- a/src/d/save/d_save.cpp +++ b/src/d/save/d_save.cpp @@ -10,7 +10,7 @@ #include "d/com/d_com_inf_game.h" #include "d/meter/d_meter2_info.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" // diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 1e61b26949..3c8ee5881a 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -12,7 +12,7 @@ #include "d/d_path.h" #include "d/d_procname.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_op/f_op_actor.h" #include "f_op/f_op_scene_mng.h" #include "global.h" diff --git a/src/m_Do/m_Do_DVDError.cpp b/src/m_Do/m_Do_DVDError.cpp index a7464915fb..7498e258c8 100644 --- a/src/m_Do/m_Do_DVDError.cpp +++ b/src/m_Do/m_Do_DVDError.cpp @@ -7,7 +7,7 @@ #include "JSystem/JKernel/JKRAssertHeap.h" #include "JSystem/JKernel/JKRThread.h" #include "dol2asm.h" -#include "dolphin/dvd/dvd.h" +#include "dolphin/dvd.h" #include "dolphin/os/OSAlarm.h" #include "dolphin/os/OSInterrupt.h" #include "m_Do/m_Do_dvd_thread.h" diff --git a/src/m_Do/m_Do_MemCard.cpp b/src/m_Do/m_Do_MemCard.cpp index a5a6ccbea7..c3883e2485 100644 --- a/src/m_Do/m_Do_MemCard.cpp +++ b/src/m_Do/m_Do_MemCard.cpp @@ -8,7 +8,7 @@ #include "JSystem/JKernel/JKRThread.h" #include "string.h" #include "dol2asm.h" -#include "dolphin/card/card.h" +#include "dolphin/card.h" #include "m_Do/m_Do_ext.h" #include "m_Do/m_Do_MemCardRWmng.h" #include "m_Do/m_Do_Reset.h" diff --git a/src/m_Do/m_Do_MemCardRWmng.cpp b/src/m_Do/m_Do_MemCardRWmng.cpp index 73dc14bf1d..636fcb2832 100644 --- a/src/m_Do/m_Do_MemCardRWmng.cpp +++ b/src/m_Do/m_Do_MemCardRWmng.cpp @@ -7,7 +7,7 @@ #include "JSystem/JUtility/JUTTexture.h" #include "stdio.h" #include "d/com/d_com_inf_game.h" -#include "dolphin/card/card.h" +#include "dolphin/card.h" #include "m_Do/m_Do_MemCard.h" // diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index d68f688981..8711e59c89 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -9,8 +9,8 @@ #include "JSystem/JUtility/JUTGamePad.h" #include "JSystem/JUtility/JUTXfb.h" #include "SSystem/SComponent/c_API_controller_pad.h" -#include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" +#include "dolphin/gx.h" +#include "dolphin/os.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_DVDError.h" #include "m_Do/m_Do_MemCard.h" diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp index 2bffeb1752..66a062df49 100644 --- a/src/m_Do/m_Do_audio.cpp +++ b/src/m_Do/m_Do_audio.cpp @@ -7,7 +7,7 @@ #include "JSystem/JKernel/JKRSolidHeap.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_dvd_thread.h" diff --git a/src/m_Do/m_Do_controller_pad.cpp b/src/m_Do/m_Do_controller_pad.cpp index 3029e65ae2..a0b7b4fc45 100644 --- a/src/m_Do/m_Do_controller_pad.cpp +++ b/src/m_Do/m_Do_controller_pad.cpp @@ -125,6 +125,5 @@ void mDoCPd_c::LRlockCheck(interface_of_controller_pad* interface) { void mDoCPd_c::recalibrate(void) { JUTGamePad::clearForReset(); - JUTGamePad::CRumble::setEnabled( - PADMask(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); + JUTGamePad::CRumble::setEnabled(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT); } diff --git a/src/m_Do/m_Do_dvd_thread.cpp b/src/m_Do/m_Do_dvd_thread.cpp index 6d368407d9..4a070c866e 100644 --- a/src/m_Do/m_Do_dvd_thread.cpp +++ b/src/m_Do/m_Do_dvd_thread.cpp @@ -11,7 +11,7 @@ #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JKernel/JKRMemArchive.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_ext.h" diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index d70a85199c..7cb89d93f2 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -19,8 +19,8 @@ #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/gx/GXDraw.h" -#include "dolphin/mtx/mtx.h" -#include "dolphin/os/OS.h" +#include "dolphin/mtx.h" +#include "dolphin/os.h" #include "dolphin/types.h" #include "global.h" #include "m_Do/m_Do_mtx.h" @@ -3846,7 +3846,7 @@ void drawCube(MtxP mtx, cXyz* pos, const GXColor& color) { GXPosition1x8(3); GXPosition1x8(0); GXPosition1x8(2); - i_GXEnd(); + GXEnd(); } void mDoExt_cubePacket::draw() { diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index fd7887b4b4..645a1d674f 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -379,7 +379,7 @@ static void darwFilter(GXColor matColor) { GXPosition3s8(1, 0, -5); GXPosition3s8(1, 1, -5); GXPosition3s8(0, 1, -5); - i_GXEnd(); + GXEnd(); } #else #pragma push @@ -760,15 +760,15 @@ static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_ if (l_tevColor0.a > -255) { GXBegin(GX_QUADS, GX_VTXFMT0, 4); - i_GXPosition3s16(x_orig, y_orig, -5); + GXPosition3s16(x_orig, y_orig, -5); GXTexCoord2s8(0,0); - i_GXPosition3s16(width, y_orig, -5); + GXPosition3s16(width, y_orig, -5); GXTexCoord2s8(1,0); - i_GXPosition3s16(width, height, -5); + GXPosition3s16(width, height, -5); GXTexCoord2s8(1,1); - i_GXPosition3s16(x_orig, height, -5); + GXPosition3s16(x_orig, height, -5); GXTexCoord2s8(0,1); - i_GXEnd(); + GXEnd(); } GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); @@ -850,15 +850,15 @@ static void trimming(view_class* param_0, view_port_class* param_1) { GXSetProjection(ortho, GX_ORTHOGRAPHIC); GXSetCurrentMtx(0); GXBegin(GX_QUADS, GX_VTXFMT0, 8); - i_GXPosition3s16(0, 0, -5); - i_GXPosition3s16(0x260, 0, -5); - i_GXPosition3s16(0x280, sc_top, -5); - i_GXPosition3s16(0, sc_top, -5); - i_GXPosition3s16(0, sc_bottom, -5); - i_GXPosition3s16(0x280, sc_bottom, -5); - i_GXPosition3s16(0x280, 0x1c0, -5); - i_GXPosition3s16(0, 0x1c8, -5); - i_GXEnd(); + GXPosition3s16(0, 0, -5); + GXPosition3s16(0x260, 0, -5); + GXPosition3s16(0x280, sc_top, -5); + GXPosition3s16(0, sc_top, -5); + GXPosition3s16(0, sc_bottom, -5); + GXPosition3s16(0x280, sc_bottom, -5); + GXPosition3s16(0x280, 0x1c0, -5); + GXPosition3s16(0, 0x1c8, -5); + GXEnd(); } GXSetScissor(param_1->mScissor.mXOrig, param_1->mScissor.mYOrig, param_1->mScissor.mWidth, param_1->mScissor.mHeight); @@ -885,7 +885,7 @@ void mDoGph_drawFilterQuad(s8 param_0, s8 param_1) { GXTexCoord2s8(1, 1); GXPosition2s8(0, param_1); GXTexCoord2s8(0, 1); - i_GXEnd(); + GXEnd(); } /* 80009544-800095F8 003E84 00B4+00 0/0 1/1 0/0 .text create__Q213mDoGph_gInf_c7bloom_cFv @@ -1155,7 +1155,7 @@ static void retry_captue_frame(view_class* param_0, view_port_class* param_1, in } GXSetTexCopySrc(x_orig, y_orig_pos, width, height); - GXSetTexCopyDst(width >> 1, height >> 1, mDoGph_gInf_c::getFrameBufferTimg()->format, + GXSetTexCopyDst(width >> 1, height >> 1, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE); GXCopyTex(tex, GX_FALSE); GXPixModeSync(); diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index 38c6253ebd..da28692299 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -17,7 +17,7 @@ #include "SSystem/SComponent/c_malloc.h" #include "SSystem/SComponent/c_math.h" #include "dol2asm.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "m_Do/m_Do_DVDError.h" #include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_Reset.h" @@ -531,8 +531,8 @@ SECTION_DEAD static char const* const stringBase_8037409E = "/map/Final/Release/ #pragma pop /* 803A2F60-803A2F9C 000080 003C+00 1/0 0/0 0/0 .data g_ntscZeldaIntDf */ -static _GXRenderModeObj g_ntscZeldaIntDf = { - 0, +extern GXRenderModeObj g_ntscZeldaIntDf = { + VI_TVMODE_NTSC_INT, 608, 448, 448, @@ -540,7 +540,7 @@ static _GXRenderModeObj g_ntscZeldaIntDf = { 16, 666, 448, - 1, + VI_XFBMODE_DF, 0, 0, {{6, 6}, @@ -559,8 +559,8 @@ static _GXRenderModeObj g_ntscZeldaIntDf = { }; /* 803A2F9C-803A2FD8 0000BC 003C+00 1/1 1/1 0/0 .data g_ntscZeldaProg */ -extern _GXRenderModeObj g_ntscZeldaProg = { - 2, +extern GXRenderModeObj g_ntscZeldaProg = { + VI_TVMODE_NTSC_PROG, 608, 448, 448, @@ -568,7 +568,7 @@ extern _GXRenderModeObj g_ntscZeldaProg = { 16, 666, 448, - 0, + VI_XFBMODE_SF, 0, 0, {{6, 6}, diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 4630e0c4f6..8bb8de3e1a 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -16,7 +16,7 @@ #include "Z2AudioLib/Z2WolfHowlMgr.h" #include "c/c_dylink.h" #include "d/com/d_com_inf_game.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "f_ap/f_ap_game.h" #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_MemCard.h" diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp index dffeefeb7b..9958d705d2 100644 --- a/src/m_Do/m_Do_printf.cpp +++ b/src/m_Do/m_Do_printf.cpp @@ -7,7 +7,7 @@ #include "stdio.h" #include "dol2asm.h" #include "dolphin/base/PPCArch.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "m_Do/m_Do_ext.h" /* 80450B98-80450B9C -00001 0004+00 0/0 6/6 0/0 .sbss None */ @@ -131,7 +131,7 @@ void mDoPrintf_vprintf(char const* fmt, va_list args) { mDoPrintf_vprintf_Interrupt(fmt, args); } else { u8* stackPtr = OSGetStackPointer(); - if (stackPtr < currentThread->stack_end + 0xA00 || stackPtr > currentThread->stack_base) { + if (stackPtr < (u8*)currentThread->stack_end + 0xA00 || stackPtr > currentThread->stack_base) { mDoPrintf_vprintf_Interrupt(fmt, args); } else { mDoPrintf_vprintf_Thread(fmt, args); diff --git a/src/msg/scrn/d_msg_scrn_arrow.cpp b/src/msg/scrn/d_msg_scrn_arrow.cpp index 1a26727185..e6111c6247 100644 --- a/src/msg/scrn/d_msg_scrn_arrow.cpp +++ b/src/msg/scrn/d_msg_scrn_arrow.cpp @@ -5,7 +5,7 @@ #include "JSystem/J2DGraph/J2DScreen.h" #include "d/com/d_com_inf_game.h" #include "d/pane/d_pane_class.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" /* 8023B9B4-8023BC78 2362F4 02C4+00 0/0 4/4 0/0 .text __ct__15dMsgScrnArrow_cFv */ @@ -13,7 +13,7 @@ dMsgScrnArrow_c::dMsgScrnArrow_c() { mScreen = new J2DScreen(); mScreen->setPriority("zelda_window_yajirushi.blo", 0x20000, dComIfGp_getMsgArchive(0)); dPaneClass_showNullPane(mScreen); - i_OSInitFastCast(); + OSInitFastCast(); mAnmBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load( JKRFileLoader::getGlbResource("zelda_window_yajirushi.bck", dComIfGp_getMsgArchive(0))); diff --git a/src/msg/scrn/d_msg_scrn_explain.cpp b/src/msg/scrn/d_msg_scrn_explain.cpp index 1a806d1a92..a81ac6363a 100644 --- a/src/msg/scrn/d_msg_scrn_explain.cpp +++ b/src/msg/scrn/d_msg_scrn_explain.cpp @@ -15,7 +15,7 @@ #include "d/d_lib.h" #include "m_Do/m_Do_controller_pad.h" #include "JSystem/J2DGraph/J2DScreen.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "dolphin/types.h" // diff --git a/src/msg/scrn/d_msg_scrn_tree.cpp b/src/msg/scrn/d_msg_scrn_tree.cpp index c5df74624e..da66ce3a04 100644 --- a/src/msg/scrn/d_msg_scrn_tree.cpp +++ b/src/msg/scrn/d_msg_scrn_tree.cpp @@ -7,7 +7,7 @@ #include "d/pane/d_pane_class.h" #include "d/msg/d_msg_object.h" #include "d/msg/d_msg_out_font.h" -#include "dolphin/os/OS.h" +#include "dolphin/os.h" #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/J2DGraph/J2DAnmLoader.h" @@ -53,7 +53,7 @@ dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) { mpScreen = new J2DScreen(); mpScreen->setPriority("zelda_kanban_wood_a.blo", 0x1020000, dComIfGp_getMsgArchive(2)); dPaneClass_showNullPane(mpScreen); - i_OSInitFastCast(); + OSInitFastCast(); field_0xcc = (J2DAnmTransform*) J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_wood_a.bck", dComIfGp_getMsgArchive(2))); field_0xd0 = (J2DAnmTextureSRTKey*) J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_wood_a.btk", dComIfGp_getMsgArchive(2))); field_0xd0->searchUpdateMaterialID(mpScreen);