Initial korean version, update musyx

This commit is contained in:
Phillip Stephens 2024-12-30 22:40:14 -08:00
parent d96afdec71
commit 5165557f75
29 changed files with 30147 additions and 798 deletions

View File

@ -5505,7 +5505,7 @@ AcceptScriptMsg__12CScriptSoundF20EScriptObjectMessage9TUniqueIdR13CStateManager
Think__12CScriptSoundFfR13CStateManager = .text:0x800B0544; // type:function size:0x3BC scope:global
__dt__12CScriptSoundFv = .text:0x800B0900; // type:function size:0x60 scope:global
PreThink__12CScriptSoundFfR13CStateManager = .text:0x800B0960; // type:function size:0x44 scope:global
__ct__12CScriptSoundF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fUsbfffUiUiUiUiUiUibbbbbbbi = .text:0x800B09A4; // type:function size:0x270 scope:global
__ct__12CScriptSoundF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fUsbfffiiiibbbbbb = .text:0x800B09A4; // type:function size:0x270 scope:global
Render__15CScriptPlatformCFRC13CStateManager = .text:0x800B0C14; // type:function size:0xC8 scope:global
GetSortingBounds__15CScriptPlatformCFRC13CStateManager = .text:0x800B0CDC; // type:function size:0x84 scope:global
GetAimPosition__15CScriptPlatformCFRC13CStateManagerf = .text:0x800B0D60; // type:function size:0xB8 scope:global
@ -15677,8 +15677,8 @@ PSMTXTrans = .text:0x8037D234; // type:function size:0x34 scope:global
PSMTXScale = .text:0x8037D268; // type:function size:0x28 scope:global
PSMTXScaleApply = .text:0x8037D290; // type:function size:0x58 scope:global
C_MTXLookAt = .text:0x8037D2E8; // type:function size:0x18C scope:global
PSMTXMultVec = .text:0x8037D474; // type:function size:0x54 scope:global
PSMTXMultVecSR = .text:0x8037D4C8; // type:function size:0x54 scope:global
PSMTX44MultVec = .text:0x8037D474; // type:function size:0x54 scope:global
PSMTX44MultVecSR = .text:0x8037D4C8; // type:function size:0x54 scope:global
C_MTXFrustum = .text:0x8037D51C; // type:function size:0x9C scope:global
C_MTXOrtho = .text:0x8037D5B8; // type:function size:0x98 scope:global
C_VECNormalize = .text:0x8037D650; // type:function size:0x44 scope:global
@ -15795,9 +15795,9 @@ OSReceiveMessage = .text:0x80382938; // type:function size:0xDC scope:global
OnReset = .text:0x80382A14; // type:function size:0x3C scope:local
MEMIntrruptHandler = .text:0x80382A50; // type:function size:0x6C scope:local
OSProtectRange = .text:0x80382ABC; // type:function size:0xC4 scope:global
Config24MB = .text:0x80382B80; // type:function size:0x80 scope:global
Config48MB = .text:0x80382C00; // type:function size:0x80 scope:global
RealMode = .text:0x80382C80; // type:function size:0x18 scope:global
Config24MB = .text:0x80382B80; // type:function size:0x80 scope:local
Config48MB = .text:0x80382C00; // type:function size:0x80 scope:local
RealMode = .text:0x80382C80; // type:function size:0x18 scope:local
__OSInitMemoryProtection = .text:0x80382C98; // type:function size:0x120 scope:global
__OSUnlockAllMutex = .text:0x80382DB8; // type:function size:0x70 scope:global
Run = .text:0x80382E28; // type:function size:0x10 scope:local
@ -16658,8 +16658,8 @@ __THPHuffDecodeDCTCompU = .text:0x803C82D8; // type:function size:0x6A8 scope:lo
__THPHuffDecodeDCTCompV = .text:0x803C8980; // type:function size:0x6A8 scope:local
THPInit = .text:0x803C9028; // type:function size:0xA0 scope:global
THPAudioDecode = .text:0x803C90C8; // type:function size:0x464 scope:global
__THPAudioGetNewSample = .text:0x803C952C; // type:function size:0x90 scope:global
__THPAudioInitialize = .text:0x803C95BC; // type:function size:0x3C scope:global
__THPAudioGetNewSample = .text:0x803C952C; // type:function size:0x90 scope:local
__THPAudioInitialize = .text:0x803C95BC; // type:function size:0x3C scope:local
ShortCommandProc = .text:0x803C95F8; // type:function size:0x54 scope:local
GBAInit = .text:0x803C964C; // type:function size:0xA4 scope:global
GBAGetStatusAsync = .text:0x803C96F0; // type:function size:0x64 scope:global
@ -18773,7 +18773,7 @@ __vt__8CMVEWind = .data:0x803EDCC8; // type:object size:0x10 scope:global
__vt__11CMVEGravity = .data:0x803EDCD8; // type:object size:0x10 scope:global
__vt__16CMVEFastConstant = .data:0x803EDCE8; // type:object size:0x10 scope:global
__vt__12CMVEConstant = .data:0x803EDCF8; // type:object size:0x10 scope:global
__vt__12CParticleGen = .data:0x803EDD08; // type:object size:0x78 scope:weak
__vt__12CParticleGen = .data:0x803EDD08; // type:object size:0x78 scope:global
__vt__15CParticleSwoosh = .data:0x803EDD80; // type:object size:0x78 scope:global
__vt__46TObjOwnerDerivedFromIObj<18CSwooshDescription> = .data:0x803EDDF8; // type:object size:0x10 scope:global
__vt__15CREIntTimesReal = .data:0x803EDE08; // type:object size:0x14 scope:global
@ -19426,7 +19426,7 @@ __GBA = .bss:0x8056A1A0; // type:object size:0x400 scope:global align:8
gCommandFilterFlag__13ControlMapper = .bss:0x8056A5A0; // type:object size:0x48 scope:global data:4byte
sIdentity__10CAxisAngle = .bss:0x8056A5E8; // type:object size:0xC scope:global data:float
lbl_8056A5F4 = .bss:0x8056A5F4; // type:object size:0xC data:float
mBoolPOINodes__9CAnimData = .bss:0x8056A600; // type:object size:0x1E4 scope:global align:4 data:4byte
mBoolPOINodes__9CAnimData = .bss:0x8056A600; // type:object size:0x17F4 scope:global align:4 data:4byte
mInt32POINodes__9CAnimData = .bss:0x8056BDF4; // type:object size:0x4C4 scope:global data:4byte
mParticlePOINodes__9CAnimData = .bss:0x8056C2B8; // type:object size:0x734 scope:global data:4byte
mSoundPOINodes__9CAnimData = .bss:0x8056C9EC; // type:object size:0x554 scope:global data:4byte
@ -19435,36 +19435,36 @@ kScaleVector__10CPlayerGun = .bss:0x8056D404; // type:object size:0xC scope:glob
NullConnectionList__7CEntity = .bss:0x8056D410; // type:object size:0x10 scope:global
CameraShaker = .bss:0x8056D420; // type:object size:0xD4 scope:global
lbl_8056D4F4 = .bss:0x8056D4F4; // type:object size:0x84 data:4byte
sNormalVulnerability__20CDamageVulnerability = .bss:0x8056D578; // type:object size:0x68 scope:global data:4byte
sNormalVulnerability__20CDamageVulnerability = .bss:0x8056D578; // type:object size:0x1A0 scope:global data:4byte
sImmuneVulnerability__20CDamageVulnerability = .bss:0x8056D718; // type:object size:0x68 scope:global data:4byte
sReflectVulnerability__20CDamageVulnerability = .bss:0x8056D780; // type:object size:0x68 scope:global data:4byte
sPassThroughVulnerability__20CDamageVulnerability = .bss:0x8056D7E8; // type:object size:0x68 scope:global data:4byte
mDecalPool__13CDecalManager = .bss:0x8056D850; // type:object size:0x1E04 scope:global data:4byte
mDecalPool__13CDecalManager = .bss:0x8056D850; // type:object size:0x1F08 scope:global data:4byte
mActiveIndexList__13CDecalManager = .bss:0x8056F758; // type:object size:0x104 scope:global data:4byte
lbl_8056F85C = .bss:0x8056F85C; // type:object size:0x18
lbl_8056F85C = .bss:0x8056F85C; // type:object size:0x38
lbl_8056F894 = .bss:0x8056F894; // type:object size:0x10
lbl_8056F8A4 = .bss:0x8056F8A4; // type:object size:0x10
lbl_8056F8B4 = .bss:0x8056F8B4; // type:object size:0x18
lbl_8056F8B4 = .bss:0x8056F8B4; // type:object size:0x1098
lbl_8057094C = .bss:0x8057094C; // type:object size:0x1000 data:byte
lbl_8057194C = .bss:0x8057194C; // type:object size:0x40 data:byte
lbl_8057198C = .bss:0x8057198C; // type:object size:0x40 data:byte
lbl_805719CC = .bss:0x805719CC; // type:object size:0x4
lbl_805719CC = .bss:0x805719CC; // type:object size:0x10
lbl_805719DC = .bss:0x805719DC; // type:object size:0xC data:float
skHardRecoil__16CCameraShakeData = .bss:0x805719E8; // type:object size:0xD4 scope:global
skHardRecoil__16CCameraShakeData = .bss:0x805719E8; // type:object size:0x1A8 scope:global
lbl_80571B90 = .bss:0x80571B90; // type:object size:0xD4
lbl_80571C64 = .bss:0x80571C64; // type:object size:0x68
lbl_80571C64 = .bss:0x80571C64; // type:object size:0x208
lbl_80571E6C = .bss:0x80571E6C; // type:object size:0x68
lbl_80571ED4 = .bss:0x80571ED4; // type:object size:0x68
lbl_80571F3C = .bss:0x80571F3C; // type:object size:0x68
lbl_80571FA4 = .bss:0x80571FA4; // type:object size:0x68
lbl_8057200C = .bss:0x8057200C; // type:object size:0xC data:float
lbl_80572018 = .bss:0x80572018; // type:object size:0xC data:float
lbl_80572024 = .bss:0x80572024; // type:object size:0xC data:float
lbl_80572024 = .bss:0x80572024; // type:object size:0x18 data:float
lbl_8057203C = .bss:0x8057203C; // type:object size:0xC data:float
lbl_80572048 = .bss:0x80572048; // type:object size:0xC data:float
lbl_80572048 = .bss:0x80572048; // type:object size:0x18 data:float
lbl_80572060 = .bss:0x80572060; // type:object size:0xC data:float
lbl_8057206C = .bss:0x8057206C; // type:object size:0xC data:float
lbl_80572078 = .bss:0x80572078; // type:object size:0x10
lbl_80572078 = .bss:0x80572078; // type:object size:0x60
lbl_805720D8 = .bss:0x805720D8; // type:object size:0x10
lbl_805720E8 = .bss:0x805720E8; // type:object size:0x10
lbl_805720F8 = .bss:0x805720F8; // type:object size:0x10
@ -19473,24 +19473,24 @@ lbl_80572118 = .bss:0x80572118; // type:object size:0x10
lbl_80572128 = .bss:0x80572128; // type:object size:0xC data:float
skScaleFactor__24CScriptCameraPitchVolume = .bss:0x80572134; // type:object size:0xC scope:global data:float
skRumbleFxTable = .bss:0x80572140; // type:object size:0x2A0 scope:global data:float
skExtendedClawBounds__12CElitePirate = .bss:0x805723E0; // type:object size:0xC scope:global data:float
skExtendedClawBounds__12CElitePirate = .bss:0x805723E0; // type:object size:0x18 scope:global data:float
skLocalShieldBounds__12CElitePirate = .bss:0x805723F8; // type:object size:0xC scope:global data:float
lbl_80572404 = .bss:0x80572404; // type:object size:0x10
lbl_80572404 = .bss:0x80572404; // type:object size:0x110
lbl_80572514 = .bss:0x80572514; // type:object size:0x10
lbl_80572524 = .bss:0x80572524; // type:object size:0x10
lbl_80572534 = .bss:0x80572534; // type:object size:0x10
lbl_80572544 = .bss:0x80572544; // type:object size:0x68 data:4byte
lbl_805725AC = .bss:0x805725AC; // type:object size:0x68 data:4byte
lbl_80572614 = .bss:0x80572614; // type:object size:0x68 data:4byte
lbl_80572614 = .bss:0x80572614; // type:object size:0x74 data:4byte
lbl_80572688 = .bss:0x80572688; // type:object size:0xC data:float
lbl_80572694 = .bss:0x80572694; // type:object size:0x68 data:4byte
sMazeSeeds__15CScriptMazeNode = .bss:0x805726FC; // type:object size:0x4B0 scope:global data:4byte
sDupVertexList__20CMetroidAreaCollider = .bss:0x80572BAC; // type:object size:0x5000 scope:global
sDupVertexList__20CMetroidAreaCollider = .bss:0x80572BAC; // type:object size:0x19000 scope:global
sDupEdgeList__20CMetroidAreaCollider = .bss:0x8058BBAC; // type:object size:0xC000 scope:global
sDupTriangleList__20CMetroidAreaCollider = .bss:0x80597BAC; // type:object size:0x8000 scope:global
kDefaultPosition__11CWorldLight = .bss:0x8059FBAC; // type:object size:0xC data:float
kDefaultPosition__11CWorldLight = .bss:0x8059FBAC; // type:object size:0x18 data:float
kDefaultDirection__11CWorldLight = .bss:0x8059FBC4; // type:object size:0xC data:float
lbl_8059FBD0 = .bss:0x8059FBD0; // type:object size:0x18 data:4byte
lbl_8059FBD0 = .bss:0x8059FBD0; // type:object size:0xA8 data:4byte
lbl_8059FC78 = .bss:0x8059FC78; // type:object size:0x18 data:4byte
lbl_8059FC90 = .bss:0x8059FC90; // type:object size:0x18 data:4byte
lbl_8059FCA8 = .bss:0x8059FCA8; // type:object size:0x18 data:4byte
@ -19500,7 +19500,7 @@ lbl_8059FCF0 = .bss:0x8059FCF0; // type:object size:0x18 data:4byte
sDefaultDrawParms__19CGuiWidgetDrawParms = .bss:0x8059FD08; // type:object size:0x10 scope:global data:float
skPassEverything__15CMaterialFilter = .bss:0x8059FD18; // type:object size:0x18 scope:global data:4byte
mData__10CStopwatch = .bss:0x8059FD30; // type:object size:0x18 scope:global data:4byte
mChannels__11CSfxManager = .bss:0x8059FD48; // type:object size:0x5B0 scope:global
mChannels__11CSfxManager = .bss:0x8059FD48; // type:object size:0x2E18 scope:global
mEmitterWrapperPool__11CSfxManager = .bss:0x805A2B60; // type:object size:0x1604 scope:global data:4byte
mWrapperPool__11CSfxManager = .bss:0x805A4164; // type:object size:0xA04 scope:global data:4byte
lbl_805A4B68 = .bss:0x805A4B68; // type:object size:0x1E0 data:4byte
@ -19511,11 +19511,11 @@ lbl_805A4F98 = .bss:0x805A4F98; // type:object size:0x1E0 data:4byte
lbl_805A5178 = .bss:0x805A5178; // type:object size:0x9C data:4byte
lbl_805A5214 = .bss:0x805A5214; // type:object size:0x154 data:4byte
lbl_805A5368 = .bss:0x805A5368; // type:object size:0x60 data:4byte
kDefaultPosition__6CLight = .bss:0x805A53C8; // type:object size:0xC scope:global data:float
kDefaultPosition__6CLight = .bss:0x805A53C8; // type:object size:0x18 scope:global data:float
kDefaultDirection__6CLight = .bss:0x805A53E0; // type:object size:0xC scope:global data:float
sGXState__3CGX = .bss:0x805A53EC; // type:object size:0x260 scope:global data:4byte
kEnvPassthru__13CTevCombiners = .bss:0x805A564C; // type:object size:0x4C scope:global
kEnvModulateConstColor__9CGraphics = .bss:0x805A5698; // type:object size:0x4C scope:global
kEnvModulateConstColor__9CGraphics = .bss:0x805A5698; // type:object size:0x7D8 scope:global
kEnvConstColor__9CGraphics = .bss:0x805A5E70; // type:object size:0x4C scope:global
kEnvModulate__9CGraphics = .bss:0x805A5EBC; // type:object size:0x4C scope:global
kEnvDecal__9CGraphics = .bss:0x805A5F08; // type:object size:0x4C scope:global
@ -19544,7 +19544,7 @@ sIdentity__9CMatrix3f = .bss:0x805A65FC; // type:object size:0x24 scope:global
lbl_805A6620 = .bss:0x805A6620; // type:object size:0x40 data:float
sNoRotation__11CQuaternion = .bss:0x805A6660; // type:object size:0x10 scope:global data:float
sIdentity__12CTransform4f = .bss:0x805A6670; // type:object size:0x30 scope:global data:float
sZeroVector__9CVector3f = .bss:0x805A66A0; // type:object size:0xC scope:global data:float
sZeroVector__9CVector3f = .bss:0x805A66A0; // type:object size:0x54 scope:global data:float
sUpVector__9CVector3f = .bss:0x805A66F4; // type:object size:0xC scope:global data:float
sDownVector__9CVector3f = .bss:0x805A6700; // type:object size:0xC scope:global data:float
sLeftVector__9CVector3f = .bss:0x805A670C; // type:object size:0xC scope:global data:float
@ -19552,18 +19552,18 @@ sRightVector__9CVector3f = .bss:0x805A6718; // type:object size:0xC scope:global
sForwardVector__9CVector3f = .bss:0x805A6724; // type:object size:0xC scope:global data:float
sBackVector__9CVector3f = .bss:0x805A6730; // type:object size:0xC scope:global data:float
lbl_805A673C = .bss:0x805A673C; // type:object size:0x18
mskInvertedBox__6CAABox = .bss:0x805A6754; // type:object size:0x18 scope:global data:float
mskInvertedBox__6CAABox = .bss:0x805A6754; // type:object size:0x30 scope:global data:float
mskNullBox__6CAABox = .bss:0x805A6784; // type:object size:0x18 scope:global data:float
mActiveDMAs__12CARAMManager = .bss:0x805A679C; // type:object size:0x18 scope:global
sViewingFrom__13CCubeMaterial = .bss:0x805A67B4; // type:object size:0xC scope:global data:float
skDefaultNormal__12CCubeSurface = .bss:0x805A67C0; // type:object size:0xC scope:global data:float
mpDefaultInvalidString__9CAudioSys = .bss:0x805A67CC; // type:object size:0x10 scope:global
lbl_805A67DC = .bss:0x805A67DC; // type:object size:0x10
lbl_805A67DC = .bss:0x805A67DC; // type:object size:0x20
lbl_805A67FC = .bss:0x805A67FC; // type:object size:0x10
sLists__10CARAMToken = .bss:0x805A680C; // type:object size:0x1C scope:global
mMidiWrappers__12CMidiManager = .bss:0x805A6828; // type:object size:0x28 data:4byte
lbl_805A6860 = .bss:0x805A6860; // type:object size:0x300 align:32 data:4byte
lbl_805A6B60 = .bss:0x805A6B60; // type:object size:0x10 data:4byte
lbl_805A6B60 = .bss:0x805A6B60; // type:object size:0x30 data:4byte
lbl_805A6B90 = .bss:0x805A6B90; // type:object size:0x10 data:4byte
lbl_805A6BA0 = .bss:0x805A6BA0; // type:object size:0x10 data:4byte
lbl_805A6BC0 = .sdata:0x805A6BC0; // type:object size:0x1 data:byte
@ -26822,12 +26822,12 @@ lbl_805AEBE0 = .sdata2:0x805AEBE0; // type:object size:0x8 align:8 data:double
lbl_805AEBE8 = .sdata2:0x805AEBE8; // type:object size:0x4 data:float
lbl_805AEBEC = .sdata2:0x805AEBEC; // type:object size:0x4 data:float
lbl_805AEBF0 = .sdata2:0x805AEBF0; // type:object size:0x8 data:float
@2 = .sdata2:0x805AEBF8; // type:object size:0x4 scope:local data:float
@3 = .sdata2:0x805AEBFC; // type:object size:0x4 scope:local data:float
lbl_805AEC00 = .sdata2:0x805AEC00; // type:object size:0x4 data:float
lbl_805AEC04 = .sdata2:0x805AEC04; // type:object size:0x4 data:float
lbl_805AEC08 = .sdata2:0x805AEC08; // type:object size:0x4 data:float
lbl_805AEC0C = .sdata2:0x805AEC0C; // type:object size:0x4 data:float
@34 = .sdata2:0x805AEBF8; // type:object size:0x4 scope:local data:float
@35 = .sdata2:0x805AEBFC; // type:object size:0x4 scope:local data:float
@37 = .sdata2:0x805AEC00; // type:object size:0x4 scope:local data:float
@38 = .sdata2:0x805AEC04; // type:object size:0x4 scope:local data:float
@39 = .sdata2:0x805AEC08; // type:object size:0x4 scope:local data:float
@40 = .sdata2:0x805AEC0C; // type:object size:0x4 scope:local data:float
lbl_805AEC10 = .sdata2:0x805AEC10; // type:object size:0x4 data:float
lbl_805AEC14 = .sdata2:0x805AEC14; // type:object size:0x4 data:float
lbl_805AEC18 = .sdata2:0x805AEC18; // type:object size:0x4 data:float

View File

@ -13730,7 +13730,7 @@ FloorPowerOfTwo__5CMathFi = .text:0x80314D38; // type:function size:0x7C scope:g
FastArcCosR__5CMathFf = .text:0x80314DB4; // type:function size:0x70 scope:global
FastCosR__5CMathFf = .text:0x80314E24; // type:function size:0xAC scope:global
FastSinR__5CMathFf = .text:0x80314ED0; // type:function size:0xAC scope:global
BaryToWorld__5CMathFRC9CVector3fRC9CVector3fRC9CVector3fRC9CVector3f = .text:0x80314F7C; // type:function size:0x7C scope:global
BaryToWorld__C5MathFRC9CVector3fRC9CVector3fRC9CVector3fRC9CVector3f = .text:0x80314F7C; // type:function size:0x7C scope:global
GetBezierPoint__5CMathFRC9CVector3fRC9CVector3fRC9CVector3fRC9CVector3ff = .text:0x80314FF8; // type:function size:0x100 scope:global
GetCatmullRomSplinePoint__5CMathFfffff = .text:0x803150F8; // type:function size:0xAC scope:global
GetCatmullRomSplinePoint__5CMathFRC9CVector3fRC9CVector3fRC9CVector3fRC9CVector3ff = .text:0x803151A4; // type:function size:0x18C scope:global
@ -15677,8 +15677,8 @@ PSMTXTrans = .text:0x8037D410; // type:function size:0x34 scope:global
PSMTXScale = .text:0x8037D444; // type:function size:0x28 scope:global
PSMTXScaleApply = .text:0x8037D46C; // type:function size:0x58 scope:global
C_MTXLookAt = .text:0x8037D4C4; // type:function size:0x18C scope:global
PSMTXMultVec = .text:0x8037D650; // type:function size:0x54 scope:global
PSMTXMultVecSR = .text:0x8037D6A4; // type:function size:0x54 scope:global
PSMTX44MultVec = .text:0x8037D650; // type:function size:0x54 scope:global
PSMTX44MultVecSR = .text:0x8037D6A4; // type:function size:0x54 scope:global
C_MTXFrustum = .text:0x8037D6F8; // type:function size:0x9C scope:global
C_MTXOrtho = .text:0x8037D794; // type:function size:0x98 scope:global
C_VECNormalize = .text:0x8037D82C; // type:function size:0x44 scope:global
@ -15767,8 +15767,8 @@ GetFontCode = .text:0x80380E10; // type:function size:0x19C scope:global
Decode = .text:0x80380FAC; // type:function size:0x174 scope:global
OSGetFontEncode = .text:0x80381120; // type:function size:0x58 scope:global
ReadROM = .text:0x80381178; // type:function size:0x8C scope:global
fn_80381028 = .text:0x80381204; // type:function size:0x334 scope:global
fn_8038135C = .text:0x80381538; // type:function size:0x304 scope:global
OSLoadFont = .text:0x80381204; // type:function size:0x334 scope:global
OSGetFontTexel = .text:0x80381538; // type:function size:0x304 scope:global
OSDisableInterrupts = .text:0x8038183C; // type:function size:0x14 scope:global
__RAS_OSDisableInterrupts_begin = .text:0x8038183C; // type:label scope:global
__RAS_OSDisableInterrupts_end = .text:0x80381848; // type:label scope:global
@ -19125,8 +19125,8 @@ dspSlave = .data:0x803F4C60; // type:object size:0x19E0 align:32
lens$104 = .data:0x803F6640; // type:object size:0x10 scope:local
lens$104 = .data:0x803F6650; // type:object size:0x20 scope:local
rsmpTab12khz = .data:0x803F6670; // type:object size:0x800 scope:local
@3 = .data:0x803F6E70; // type:object size:0x46 scope:local data:string
...data.0 = .data:0x803F6E70; // type:label scope:local
@3 = .data:0x803F6E70; // type:object size:0x46 scope:local data:string
ResetFunctionInfo = .data:0x803F6EB8; // type:object size:0x10 scope:local
CardData = .data:0x803F6EE0; // type:object size:0x160 scope:local
SectorSizeTable = .data:0x803F7040; // type:object size:0x20 scope:local
@ -19314,8 +19314,8 @@ lbl_80540C00 = .bss:0x80540C00; // type:object size:0xC
lbl_80540C0C = .bss:0x80540C0C; // type:object size:0x14 data:4byte
lbl_80540C20 = .bss:0x80540C20; // type:object size:0xC
lbl_80540C2C = .bss:0x80540C2C; // type:object size:0x34
CommandList = .bss:0x80540C60; // type:object size:0x3C scope:local data:4byte
...bss.0 = .bss:0x80540C60; // type:label scope:local
CommandList = .bss:0x80540C60; // type:object size:0x3C scope:local data:4byte
AlarmForWA = .bss:0x80540CA0; // type:object size:0x28 scope:local
AlarmForTimeout = .bss:0x80540CC8; // type:object size:0x28 scope:local
AlarmForBreak = .bss:0x80540CF0; // type:object size:0x28 scope:local
@ -21921,7 +21921,7 @@ lbl_805A94E8 = .sbss:0x805A94E8; // type:object size:0x1 data:byte
lbl_805A94EC = .sbss:0x805A94EC; // type:object size:0x4 data:4byte
lbl_805A94F0 = .sbss:0x805A94F0; // type:object size:0x8 data:byte
lbl_805A94F8 = .sbss:0x805A94F8; // type:object size:0x8 data:4byte
lbl_805A9500 = .sbss:0x805A9500; // type:object size:0x1 data:byte
FatalFunc = .sbss:0x805A9500; // type:object size:0x4 scope:local data:byte
lbl_805A9504 = .sbss:0x805A9504; // type:object size:0x1 data:byte
lbl_805A9508 = .sbss:0x805A9508; // type:object size:0x1 data:byte
lbl_805A950C = .sbss:0x805A950C; // type:object size:0x1 data:byte
@ -26806,7 +26806,7 @@ lbl_805AECE4 = .sdata2:0x805AECE4; // type:object size:0x4 data:float
@173 = .sdata2:0x805AECFC; // type:object size:0x4 scope:local data:float
@11 = .sdata2:0x805AED00; // type:object size:0x4 scope:local data:4byte
@12 = .sdata2:0x805AED04; // type:object size:0x4 scope:local data:4byte
gx = .sdata2:0x805AED08; // type:object size:0x4 scope:global data:4byte
__GXData = .sdata2:0x805AED08; // type:object size:0x4 scope:global data:4byte
lbl_805AED0C = .sdata2:0x805AED0C; // type:object size:0x4 data:4byte
lbl_805AED10 = .sdata2:0x805AED10; // type:object size:0x4 data:4byte
lbl_805AED14 = .sdata2:0x805AED14; // type:object size:0x4 data:4byte

View File

@ -0,0 +1,7 @@
Sections:
.text type:code align:4
.ctors type:rodata align:4
.dtors type:rodata align:4
.rodata type:rodata align:8
.data type:data align:8
.bss type:bss align:32

View File

@ -0,0 +1,274 @@
_prolog = .text:0x00000000; // type:function size:0x50 scope:global
_epilog = .text:0x00000050; // type:function size:0x4C scope:global
_unresolved = .text:0x0000009C; // type:function size:0x38 scope:global
fn_1_D4 = .text:0x000000D4; // type:function size:0x5E4
fn_1_6B8 = .text:0x000006B8; // type:function size:0x184
fn_1_83C = .text:0x0000083C; // type:function size:0x4
fn_1_840 = .text:0x00000840; // type:function size:0x9C
fn_1_8DC = .text:0x000008DC; // type:function size:0x2F8
fn_1_BD4 = .text:0x00000BD4; // type:function size:0x2D8
fn_1_EAC = .text:0x00000EAC; // type:function size:0x78
fn_1_F24 = .text:0x00000F24; // type:function size:0xAD8
fn_1_19FC = .text:0x000019FC; // type:function size:0xF0
fn_1_1AEC = .text:0x00001AEC; // type:function size:0xD8
lbl_1_text_1BC4 = .text:0x00001BC4; // type:label
lbl_1_text_1C60 = .text:0x00001C60; // type:label
lbl_1_text_1C68 = .text:0x00001C68; // type:label
lbl_1_text_2134 = .text:0x00002134; // type:label
lbl_1_text_2154 = .text:0x00002154; // type:label
lbl_1_text_217C = .text:0x0000217C; // type:label
lbl_1_text_21A8 = .text:0x000021A8; // type:label
lbl_1_text_21D4 = .text:0x000021D4; // type:label
lbl_1_text_21E4 = .text:0x000021E4; // type:label
lbl_1_text_21F8 = .text:0x000021F8; // type:label
lbl_1_text_2224 = .text:0x00002224; // type:label
lbl_1_text_2250 = .text:0x00002250; // type:label
lbl_1_text_2260 = .text:0x00002260; // type:label
lbl_1_text_226C = .text:0x0000226C; // type:label
lbl_1_text_227C = .text:0x0000227C; // type:label
lbl_1_text_228C = .text:0x0000228C; // type:label
lbl_1_text_2294 = .text:0x00002294; // type:label
lbl_1_text_229C = .text:0x0000229C; // type:label
lbl_1_text_22A4 = .text:0x000022A4; // type:label
lbl_1_text_22B4 = .text:0x000022B4; // type:label
lbl_1_text_22C4 = .text:0x000022C4; // type:label
lbl_1_text_22D4 = .text:0x000022D4; // type:label
lbl_1_text_22E4 = .text:0x000022E4; // type:label
lbl_1_text_22F4 = .text:0x000022F4; // type:label
lbl_1_text_2304 = .text:0x00002304; // type:label
lbl_1_text_231C = .text:0x0000231C; // type:label
lbl_1_text_2334 = .text:0x00002334; // type:label
lbl_1_text_235C = .text:0x0000235C; // type:label
lbl_1_text_238C = .text:0x0000238C; // type:label
lbl_1_text_2394 = .text:0x00002394; // type:label
lbl_1_text_239C = .text:0x0000239C; // type:label
lbl_1_text_23AC = .text:0x000023AC; // type:label
lbl_1_text_23BC = .text:0x000023BC; // type:label
lbl_1_text_23CC = .text:0x000023CC; // type:label
lbl_1_text_23DC = .text:0x000023DC; // type:label
lbl_1_text_23EC = .text:0x000023EC; // type:label
lbl_1_text_23FC = .text:0x000023FC; // type:label
lbl_1_text_240C = .text:0x0000240C; // type:label
lbl_1_text_241C = .text:0x0000241C; // type:label
lbl_1_text_2430 = .text:0x00002430; // type:label
lbl_1_text_2444 = .text:0x00002444; // type:label
lbl_1_text_2458 = .text:0x00002458; // type:label
lbl_1_text_2488 = .text:0x00002488; // type:label
lbl_1_text_24C0 = .text:0x000024C0; // type:label
lbl_1_text_24D0 = .text:0x000024D0; // type:label
lbl_1_text_24E0 = .text:0x000024E0; // type:label
lbl_1_text_24F0 = .text:0x000024F0; // type:label
lbl_1_text_2500 = .text:0x00002500; // type:label
lbl_1_text_2518 = .text:0x00002518; // type:label
lbl_1_text_2530 = .text:0x00002530; // type:label
lbl_1_text_2544 = .text:0x00002544; // type:label
lbl_1_text_2560 = .text:0x00002560; // type:label
lbl_1_text_2574 = .text:0x00002574; // type:label
lbl_1_text_2590 = .text:0x00002590; // type:label
lbl_1_text_25A8 = .text:0x000025A8; // type:label
lbl_1_text_25C8 = .text:0x000025C8; // type:label
lbl_1_text_25E0 = .text:0x000025E0; // type:label
lbl_1_text_2600 = .text:0x00002600; // type:label
lbl_1_text_261C = .text:0x0000261C; // type:label
lbl_1_text_2638 = .text:0x00002638; // type:label
lbl_1_text_2654 = .text:0x00002654; // type:label
lbl_1_text_2670 = .text:0x00002670; // type:label
lbl_1_text_268C = .text:0x0000268C; // type:label
lbl_1_text_26A8 = .text:0x000026A8; // type:label
lbl_1_text_26C4 = .text:0x000026C4; // type:label
lbl_1_text_26E0 = .text:0x000026E0; // type:label
lbl_1_text_270C = .text:0x0000270C; // type:label
lbl_1_text_2720 = .text:0x00002720; // type:label
lbl_1_text_273C = .text:0x0000273C; // type:label
lbl_1_text_2770 = .text:0x00002770; // type:label
lbl_1_text_2778 = .text:0x00002778; // type:label
lbl_1_text_27A4 = .text:0x000027A4; // type:label
lbl_1_text_27B4 = .text:0x000027B4; // type:label
lbl_1_text_2828 = .text:0x00002828; // type:label
lbl_1_text_2830 = .text:0x00002830; // type:label
lbl_1_text_2880 = .text:0x00002880; // type:label
lbl_1_text_2890 = .text:0x00002890; // type:label
lbl_1_text_289C = .text:0x0000289C; // type:label
lbl_1_text_28C0 = .text:0x000028C0; // type:label
lbl_1_text_28D0 = .text:0x000028D0; // type:label
lbl_1_text_28D8 = .text:0x000028D8; // type:label
lbl_1_text_28E8 = .text:0x000028E8; // type:label
lbl_1_text_28F8 = .text:0x000028F8; // type:label
lbl_1_text_2908 = .text:0x00002908; // type:label
lbl_1_text_2910 = .text:0x00002910; // type:label
lbl_1_text_2914 = .text:0x00002914; // type:label
lbl_1_text_291C = .text:0x0000291C; // type:label
lbl_1_text_2928 = .text:0x00002928; // type:label
lbl_1_text_2934 = .text:0x00002934; // type:label
lbl_1_text_29C4 = .text:0x000029C4; // type:label
lbl_1_text_2A88 = .text:0x00002A88; // type:label
lbl_1_text_2A98 = .text:0x00002A98; // type:label
lbl_1_text_2AFC = .text:0x00002AFC; // type:label
lbl_1_text_2B30 = .text:0x00002B30; // type:label
lbl_1_text_2B3C = .text:0x00002B3C; // type:label
lbl_1_text_2B48 = .text:0x00002B48; // type:label
lbl_1_text_2B4C = .text:0x00002B4C; // type:label
lbl_1_text_2B60 = .text:0x00002B60; // type:label
lbl_1_text_2B80 = .text:0x00002B80; // type:label
lbl_1_text_2B90 = .text:0x00002B90; // type:label
lbl_1_text_2B94 = .text:0x00002B94; // type:label
lbl_1_text_2BF4 = .text:0x00002BF4; // type:label
lbl_1_text_2C40 = .text:0x00002C40; // type:label
lbl_1_text_2D54 = .text:0x00002D54; // type:label
lbl_1_text_2D70 = .text:0x00002D70; // type:label
lbl_1_text_2D74 = .text:0x00002D74; // type:label
lbl_1_text_2DAC = .text:0x00002DAC; // type:label
lbl_1_text_2DC0 = .text:0x00002DC0; // type:label
lbl_1_text_2DD4 = .text:0x00002DD4; // type:label
lbl_1_text_2DEC = .text:0x00002DEC; // type:label
lbl_1_text_2E0C = .text:0x00002E0C; // type:label
lbl_1_text_2E40 = .text:0x00002E40; // type:label
lbl_1_text_2E8C = .text:0x00002E8C; // type:label
lbl_1_text_30A0 = .text:0x000030A0; // type:label
lbl_1_text_312C = .text:0x0000312C; // type:label
lbl_1_text_3138 = .text:0x00003138; // type:label
lbl_1_text_316C = .text:0x0000316C; // type:label
lbl_1_text_3174 = .text:0x00003174; // type:label
lbl_1_text_31A0 = .text:0x000031A0; // type:label
lbl_1_text_3244 = .text:0x00003244; // type:label
lbl_1_text_324C = .text:0x0000324C; // type:label
lbl_1_text_33F4 = .text:0x000033F4; // type:label
lbl_1_text_3418 = .text:0x00003418; // type:label
fn_1_3438 = .text:0x00003438; // type:function size:0x8C
fn_1_34C4 = .text:0x000034C4; // type:function size:0x17C
fn_1_3640 = .text:0x00003640; // type:function size:0x1DC
fn_1_381C = .text:0x0000381C; // type:function size:0x8B8
fn_1_40D4 = .text:0x000040D4; // type:function size:0xC98
fn_1_4D6C = .text:0x00004D6C; // type:function size:0x3C4
fn_1_5130 = .text:0x00005130; // type:function size:0x9C0
fn_1_5AF0 = .text:0x00005AF0; // type:function size:0x4C0
fn_1_5FC0 = .text:0x00005FC0; // type:function size:0x84
fn_1_6060 = .text:0x00006060; // type:function size:0xF8
fn_1_6160 = .text:0x00006160; // type:function size:0x94
fn_1_6200 = .text:0x00006200; // type:function size:0x38
fn_1_6240 = .text:0x00006240; // type:function size:0x10
fn_1_6260 = .text:0x00006260; // type:function size:0x10
fn_1_6280 = .text:0x00006280; // type:function size:0x20
fn_1_62A0 = .text:0x000062A0; // type:function size:0x178
fn_1_6420 = .text:0x00006420; // type:function size:0x64
fn_1_64A0 = .text:0x000064A0; // type:function size:0x64
fn_1_6520 = .text:0x00006520; // type:function size:0x64
fn_1_65A0 = .text:0x000065A0; // type:function size:0x294
fn_1_6840 = .text:0x00006840; // type:function size:0x2AC
fn_1_6B00 = .text:0x00006B00; // type:function size:0x1DC
fn_1_6CE0 = .text:0x00006CE0; // type:function size:0x15C
fn_1_6E40 = .text:0x00006E40; // type:function size:0x230
fn_1_7080 = .text:0x00007080; // type:function size:0x494
fn_1_7520 = .text:0x00007520; // type:function size:0x23C
fn_1_7760 = .text:0x00007760; // type:function size:0x478
fn_1_7BE0 = .text:0x00007BE0; // type:function size:0x14
fn_1_7C00 = .text:0x00007C00; // type:function size:0x264
fn_1_7E80 = .text:0x00007E80; // type:function size:0xAC
fn_1_7F40 = .text:0x00007F40; // type:function size:0x1BC
fn_1_8100 = .text:0x00008100; // type:function size:0x60
fn_1_8160 = .text:0x00008160; // type:function size:0x64
fn_1_81E0 = .text:0x000081E0; // type:function size:0x30
fn_1_8220 = .text:0x00008220; // type:function size:0xAC
fn_1_82E0 = .text:0x000082E0; // type:function size:0x14
fn_1_8300 = .text:0x00008300; // type:function size:0xD0
fn_1_83E0 = .text:0x000083E0; // type:function size:0x40
fn_1_8420 = .text:0x00008420; // type:function size:0x158
fn_1_8580 = .text:0x00008580; // type:function size:0x10
fn_1_85A0 = .text:0x000085A0; // type:function size:0x70
fn_1_8620 = .text:0x00008620; // type:function size:0x298
fn_1_88C0 = .text:0x000088C0; // type:function size:0x1CC
fn_1_8AA0 = .text:0x00008AA0; // type:function size:0xF0
fn_1_8BA0 = .text:0x00008BA0; // type:function size:0x4C
fn_1_8C00 = .text:0x00008C00; // type:function size:0x60
fn_1_8C60 = .text:0x00008C60; // type:function size:0x34C
fn_1_8FC0 = .text:0x00008FC0; // type:function size:0x364
fn_1_9340 = .text:0x00009340; // type:function size:0x14
fn_1_9360 = .text:0x00009360; // type:function size:0xFC
fn_1_9460 = .text:0x00009460; // type:function size:0x34
fn_1_94A0 = .text:0x000094A0; // type:function size:0x54
fn_1_9500 = .text:0x00009500; // type:function size:0x240
fn_1_9740 = .text:0x00009740; // type:function size:0x7C
fn_1_97C0 = .text:0x000097C0; // type:function size:0x2C
fn_1_9800 = .text:0x00009800; // type:function size:0x1D4
fn_1_99E0 = .text:0x000099E0; // type:function size:0x48
fn_1_9A40 = .text:0x00009A40; // type:function size:0x94
fn_1_9AE0 = .text:0x00009AE0; // type:function size:0x1FC
fn_1_9CE0 = .text:0x00009CE0; // type:function size:0x15C
fn_1_9E40 = .text:0x00009E40; // type:function size:0x178
fn_1_9FC0 = .text:0x00009FC0; // type:function size:0xC
fn_1_9FE0 = .text:0x00009FE0; // type:function size:0xC
fn_1_A000 = .text:0x0000A000; // type:function size:0x50
fn_1_A060 = .text:0x0000A060; // type:function size:0x194
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x8 data:4byte
lbl_1_rodata_8 = .rodata:0x00000008; // type:object size:0x34
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x10 data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x2C data:4byte
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x10 data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x2C
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x20 data:float
lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x24
lbl_1_data_0 = .data:0x00000000; // type:object size:0x10
lbl_1_data_10 = .data:0x00000010; // type:object size:0x20
lbl_1_data_30 = .data:0x00000030; // type:object size:0x1D940
lbl_1_data_1D970 = .data:0x0001D970; // type:object size:0x160
lbl_1_data_1DAD0 = .data:0x0001DAD0; // type:object size:0x28
lbl_1_data_1DAF8 = .data:0x0001DAF8; // type:object size:0x1030
lbl_1_data_1EB28 = .data:0x0001EB28; // type:object size:0x80
lbl_1_data_1EBA8 = .data:0x0001EBA8; // type:object size:0x18
lbl_1_data_1EBC0 = .data:0x0001EBC0; // type:object size:0x18 data:float
lbl_1_data_1EBD8 = .data:0x0001EBD8; // type:object size:0x18
lbl_1_data_1EBF0 = .data:0x0001EBF0; // type:object size:0x8 data:4byte
lbl_1_data_1EBF8 = .data:0x0001EBF8; // type:object size:0x60 data:4byte
lbl_1_data_1EC58 = .data:0x0001EC58; // type:object size:0x100 data:byte
lbl_1_data_1ED58 = .data:0x0001ED58; // type:object size:0x20
lbl_1_data_1ED78 = .data:0x0001ED78; // type:object size:0x20
lbl_1_data_1ED98 = .data:0x0001ED98; // type:object size:0x50
lbl_1_data_1EDE8 = .data:0x0001EDE8; // type:object size:0x140
lbl_1_data_1EF28 = .data:0x0001EF28; // type:object size:0x24
lbl_1_data_1EF4C = .data:0x0001EF4C; // type:object size:0x24
lbl_1_data_1EF70 = .data:0x0001EF70; // type:object size:0x18
lbl_1_data_1EF88 = .data:0x0001EF88; // type:object size:0x10
lbl_1_data_1EF98 = .data:0x0001EF98; // type:object size:0x4 data:4byte
lbl_1_data_1EF9C = .data:0x0001EF9C; // type:object size:0x8 data:4byte
lbl_1_data_1EFA4 = .data:0x0001EFA4; // type:object size:0x4 data:4byte
lbl_1_data_1EFA8 = .data:0x0001EFA8; // type:object size:0x4 data:4byte
lbl_1_data_1EFAC = .data:0x0001EFAC; // type:object size:0x44 data:float
lbl_1_data_1EFF0 = .data:0x0001EFF0; // type:object size:0x20
jumptable_1_data_1F010 = .data:0x0001F010; // type:object size:0x50 scope:local
lbl_1_data_1F060 = .data:0x0001F060; // type:object size:0x4 data:4byte
lbl_1_data_1F064 = .data:0x0001F064; // type:object size:0x4 data:4byte
jumptable_1_data_1F068 = .data:0x0001F068; // type:object size:0x2C scope:local
lbl_1_data_1F094 = .data:0x0001F094; // type:object size:0x4 data:4byte
lbl_1_data_1F098 = .data:0x0001F098; // type:object size:0x1C data:4byte
lbl_1_data_1F0B4 = .data:0x0001F0B4; // type:object size:0x50
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x20 data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x20 data:4byte
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x1900
lbl_1_bss_1940 = .bss:0x00001940; // type:object size:0x1 data:byte
lbl_1_bss_1944 = .bss:0x00001944; // type:object size:0x8 data:byte
lbl_1_bss_194C = .bss:0x0000194C; // type:object size:0x10 data:4byte
lbl_1_bss_195C = .bss:0x0000195C; // type:object size:0x8 data:byte
lbl_1_bss_1964 = .bss:0x00001964; // type:object size:0x4C data:2byte
lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x98 data:2byte
lbl_1_bss_1A48 = .bss:0x00001A48; // type:object size:0x4C data:4byte
lbl_1_bss_1A94 = .bss:0x00001A94; // type:object size:0x1A0 data:byte
lbl_1_bss_1C34 = .bss:0x00001C34; // type:object size:0x4C data:byte
lbl_1_bss_1C80 = .bss:0x00001C80; // type:object size:0x18 data:byte
lbl_1_bss_1C98 = .bss:0x00001C98; // type:object size:0xC data:byte
lbl_1_bss_1CA4 = .bss:0x00001CA4; // type:object size:0x8 data:4byte
lbl_1_bss_1CAC = .bss:0x00001CAC; // type:object size:0x8 data:4byte
lbl_1_bss_1CB4 = .bss:0x00001CB4; // type:object size:0x1 data:byte
lbl_1_bss_1CB8 = .bss:0x00001CB8; // type:object size:0x4 data:4byte
lbl_1_bss_1CBC = .bss:0x00001CBC; // type:object size:0x1 data:byte
lbl_1_bss_1CC0 = .bss:0x00001CC0; // type:object size:0x4 data:4byte
lbl_1_bss_1CC4 = .bss:0x00001CC4; // type:object size:0x58 data:4byte
lbl_1_bss_1D1C = .bss:0x00001D1C; // type:object size:0x20 data:byte
lbl_1_bss_1D3C = .bss:0x00001D3C; // type:object size:0x88 data:2byte
lbl_1_bss_1DC4 = .bss:0x00001DC4; // type:object size:0x20
lbl_1_bss_1DE4 = .bss:0x00001DE4; // type:object size:0x4004
lbl_1_bss_5DE8 = .bss:0x00005DE8; // type:object size:0x4000
lbl_1_bss_9DE8 = .bss:0x00009DE8; // type:object size:0x34 data:4byte

View File

@ -0,0 +1 @@
52316d2a71c0d18c84f054fd6f1e58bdd7bf0ded build/GM8E01_48/main.dol

View File

@ -0,0 +1,14 @@
object_base: orig/GM8E01_48
object: sys/main.dol
hash: 52316d2a71c0d18c84f054fd6f1e58bdd7bf0ded
symbols: config/GM8E01_48/symbols.txt
splits: config/GM8E01_48/splits.txt
mw_comment_version: 8
quick_analysis: false # Faster reruns after full analysis
fill_gaps: true # Alignments known
modules:
- object: files/NESemuP.rel
hash: 45f4dceb82be7ee46d73a683c96d967c04767808
symbols: config/GM8E01_48/NESemu/symbols.txt
splits: config/GM8E01_48/NESemu/splits.txt

803
config/GM8E01_48/splits.txt Normal file
View File

@ -0,0 +1,803 @@
Sections:
.init type:code align:4
extab type:rodata align:32
extabindex type:rodata align:32
.text type:code align:32
.ctors type:rodata align:32
.dtors type:rodata align:4
.rodata type:rodata align:32
.data type:data align:32
.bss type:bss align:32
.sdata type:data align:32
.sbss type:bss align:16
.sdata2 type:rodata align:8
.sbss2 type:bss align:32
MetroTRK/mslsupp.c:
.text start:0x80003640 end:0x80003658
Kyoto/Input/CRumbleGenerator.cpp:
.text start:0x80369F6C end:0x8036A460
.rodata start:0x803D8648 end:0x803D8658
.sdata2 start:0x805AE7E8 end:0x805AE7F8
Kyoto/Audio/CDSPStream.cpp:
.text start:0x8036A460 end:0x8036B524
.rodata start:0x803D8658 end:0x803D8660
.bss start:0x80540320 end:0x80540700
Kyoto/Audio/g721.cpp:
.text start:0x8036B524 end:0x8036BEA0
.data start:0x803EF940 end:0x803EF9E0
Kyoto/Audio/CStaticAudioPlayer.cpp:
.text start:0x8036BEA0 end:0x8036CCD0
.ctors start:0x803CB474 end:0x803CB478
.rodata start:0x803D8660 end:0x803D8668
.bss start:0x80540700 end:0x80540720
.sbss start:0x805A9380 end:0x805A9390
Kyoto/CFrameDelayedKiller.cpp:
.text start:0x8036CCD0 end:0x8036D1A8
.ctors start:0x803CB478 end:0x803CB47C
.rodata start:0x803D8668 end:0x803D8670
.bss start:0x80540720 end:0x80540760
.sbss start:0x805A9390 end:0x805A9398
Dolphin/os/__start.c:
.init start:0x80003100 end:0x80003354
Dolphin/ai.c:
.text start:0x8036D1A8 end:0x8036DB10
.data start:0x803EF9E0 end:0x803EFA28
.sdata start:0x805A8748 end:0x805A8750
.sbss start:0x805A9398 end:0x805A93D8
Dolphin/ar/ar.c:
.text start:0x8036DB10 end:0x8036F69C
.data start:0x803EFA28 end:0x803EFA70
.sdata start:0x805A8750 end:0x805A8758
.sbss start:0x805A93D8 end:0x805A93F8
Dolphin/ar/arq.c:
.text start:0x8036F69C end:0x8036FA40
.data start:0x803EFA70 end:0x803EFAB8
.sdata start:0x805A8758 end:0x805A8760
.sbss start:0x805A93F8 end:0x805A9420
Dolphin/PPCArch.c:
.text start:0x8036FA40 end:0x8036FB38
Dolphin/db.c:
.text start:0x8036FB38 end:0x8036FC24
.data start:0x803EFAB8 end:0x803EFAD0
.sbss start:0x805A9420 end:0x805A9428
Dolphin/dsp/dsp.c:
.text start:0x8036FC24 end:0x8036FE3C
.data start:0x803EFAD0 end:0x803EFB50
.sdata start:0x805A8760 end:0x805A8768
.sbss start:0x805A9428 end:0x805A9430
Dolphin/dsp/dsp_debug.c:
.text start:0x8036FE3C end:0x8036FE8C
Dolphin/dsp/dsp_task.c:
.text start:0x8036FE8C end:0x80370710
.data start:0x803EFB50 end:0x803EFC90
.sbss start:0x805A9430 end:0x805A9448
Dolphin/dvd/dvdlow.c:
.text start:0x80370710 end:0x80371550
.bss start:0x80540760 end:0x80540840
.sdata start:0x805A8768 end:0x805A8770
.sbss start:0x805A9448 end:0x805A9490
Dolphin/dvd/dvdfs.c:
.text start:0x80371550 end:0x80371E0C
.data start:0x803EFC90 end:0x803F0080
.sdata start:0x805A8770 end:0x805A8778
.sbss start:0x805A9490 end:0x805A94B0
Dolphin/dvd/dvd.c:
.text start:0x80371E0C end:0x80374B24
.data start:0x803F0080 end:0x803F0200
.bss start:0x80540840 end:0x805408D8
.sdata start:0x805A8778 end:0x805A8790
.sbss start:0x805A94B0 end:0x805A9500
Dolphin/dvd/dvdqueue.c:
.text start:0x80374B24 end:0x80374D1C
.bss start:0x805408D8 end:0x805408F8
Dolphin/dvd/dvderror.c:
.text start:0x80374D1C end:0x80374EB4
.data start:0x803F0200 end:0x803F0248
Dolphin/dvd/dvdidutils.c:
.text start:0x80374EB4 end:0x80374FAC
Dolphin/dvd/dvdfatal.c:
.text start:0x80374FAC end:0x80374FDC
.sbss start:0x805A9500 end:0x805A9508
Dolphin/dvd/fstload.c:
.text start:0x80374FDC end:0x8037521C
.data start:0x803F0248 end:0x803F02B8
.bss start:0x805408F8 end:0x80540968
.sdata start:0x805A8790 end:0x805A87A0
.sbss start:0x805A9508 end:0x805A9518
Dolphin/gx/GXInit.c:
.text start:0x8037521C end:0x803763EC
.data start:0x803F02B8 end:0x803F03E8
.bss start:0x80540968 end:0x80540EE0
.sdata start:0x805A87A0 end:0x805A87A8
.sbss start:0x805A9518 end:0x805A9528
.sdata2 start:0x805AE7F8 end:0x805AE820
Dolphin/gx/GXFifo.c:
.text start:0x803763EC end:0x80376F30
.sbss start:0x805A9528 end:0x805A9548
Dolphin/gx/GXAttr.c:
.text start:0x80376F30 end:0x80378414
.data start:0x803F03E8 end:0x803F05B0
.sdata start:0x805A87A8 end:0x805A87B8
Dolphin/gx/GXMisc.c:
.text start:0x80378414 end:0x803789C4
.sbss start:0x805A9548 end:0x805A9560
Dolphin/gx/GXGeometry.c:
.text start:0x803789C4 end:0x80378D74
Dolphin/mtx/mtx.c:
.text start:0x8037D1B0 end:0x8037D5E4
.sdata start:0x805A87F8 end:0x805A8800
.sdata2 start:0x805AE8C8 end:0x805AE8D0
Dolphin/mtx/mtx44vec.c:
.text start:0x8037D5E4 end:0x8037D68C
Dolphin/mtx/mtx44.c:
.text start:0x8037D68C end:0x8037D7C0
.sdata2 start:0x805AE8D0 end:0x805AE8E0
Dolphin/mtx/vec.c:
.text start:0x8037D7C0 end:0x8037D840
.sdata2 start:0x805AE8E0 end:0x805AE8E8
Dolphin/mtx/psmtx.c:
.text start:0x8037D840 end:0x8037D88C
Dolphin/os/OS.c:
.text start:0x8037D88C end:0x8037E1D4
.data start:0x803F0A70 end:0x803F0C78
.bss start:0x80540EE0 end:0x80540F30
.sdata start:0x805A8800 end:0x805A8808
.sbss start:0x805A9560 end:0x805A9590
Dolphin/os/OSAlarm.c:
.text start:0x8037E1D4 end:0x8037E900
.sbss start:0x805A9590 end:0x805A9598
Dolphin/os/OSArena.c:
.text start:0x8037E900 end:0x8037E94C
.sdata start:0x805A8808 end:0x805A880C
.sbss start:0x805A9598 end:0x805A959C
Dolphin/os/OSAudioSystem.c:
.text start:0x8037E94C end:0x8037EBE0
.data start:0x803F0C78 end:0x803F0CF8
Dolphin/os/OSCache.c:
.text start:0x8037EBE0 end:0x8037F338
.data start:0x803F0CF8 end:0x803F0F28
Dolphin/os/OSContext.c:
.text start:0x8037F338 end:0x8037FB1C
.data start:0x803F0F28 end:0x803F1100
Dolphin/os/OSError.c:
.text start:0x8037FB1C end:0x803801C8
.data start:0x803F1100 end:0x803F1420
.bss start:0x80540F30 end:0x80540F78
.sdata start:0x805A8810 end:0x805A8818
Dolphin/os/OSFatal.c:
.text start:0x803801C8 end:0x80380DA4
.bss start:0x80540F78 end:0x80541260
.sdata start:0x805A8818 end:0x805A8820
.sdata2 start:0x805AE8E8 end:0x805AE918
Dolphin/os/OSFont.c:
.text start:0x80380DA4 end:0x803817D0
.data start:0x803F1420 end:0x803F1F30
.sdata start:0x805A8820 end:0x805A8828
.sbss start:0x805A95A0 end:0x805A95B0
.sdata2 start:0x805AE918 end:0x805AE930
Dolphin/os/OSInterrupt.c:
.text start:0x803817D0 end:0x8038203C
.data start:0x803F1F30 end:0x803F1F60
.sbss start:0x805A95B0 end:0x805A95C8
Dolphin/os/OSLink.c:
.text start:0x8038203C end:0x80382980
.data start:0x803F1F60 end:0x803F1FB0
Dolphin/os/OSMessage.c:
.text start:0x80382980 end:0x80382B84
Dolphin/os/OSMemory.c:
.text start:0x80382B84 end:0x80382F28
.data start:0x803F1FB0 end:0x803F1FC0
Dolphin/os/OSMutex.c:
.text start:0x80382F28 end:0x80382F98
Dolphin/os/OSReboot.c:
.text start:0x80382F98 end:0x8038319C
.bss start:0x80541260 end:0x80541280
.sbss start:0x805A95C8 end:0x805A95D4
Dolphin/os/OSReset.c:
.text start:0x8038319C end:0x8038360C
.sbss start:0x805A95D8 end:0x805A95E0
Dolphin/os/OSResetSW.c:
.text start:0x8038360C end:0x80383998
.sbss start:0x805A95E0 end:0x805A9600
Dolphin/os/OSThread.c:
.text start:0x8038456C end:0x803854AC
.bss start:0x805412D8 end:0x80541CD0
.sdata start:0x805A8828 end:0x805A8830
.sbss start:0x805A9600 end:0x805A9610
Dolphin/os/OSTime.c:
.text start:0x803854AC end:0x80385928
.data start:0x803F1FC0 end:0x803F2020
Dolphin/os/__ppc_eabi_init.cpp:
.init start:0x80003354 end:0x800033A8
.text start:0x80385928 end:0x803859BC
Dolphin/pad/PadClamp.c:
.text start:0x803859BC end:0x80385C00
.rodata start:0x803D8670 end:0x803D8680
Dolphin/pad/pad.c:
.text start:0x80385C00 end:0x80387788
.data start:0x803F2020 end:0x803F2078
.bss start:0x80541CD0 end:0x80541D20
.sdata start:0x805A8830 end:0x805A8850
.sbss start:0x805A9610 end:0x805A9638
Dolphin/vi.c:
.text start:0x80387788 end:0x80389680
.data start:0x803F2078 end:0x803F2448
.bss start:0x80541D20 end:0x80541E68
.sdata start:0x805A8850 end:0x805A8860
.sbss start:0x805A9638 end:0x805A9690
Runtime/__va_arg.c:
.text start:0x80389680 end:0x80389748
Runtime/global_destructor_chain.c:
.text start:0x80389748 end:0x803897A8
.dtors start:0x803CB488 end:0x803CB48C
.sbss start:0x805A9690 end:0x805A9698
Runtime/CPlusLibPPC.cpp:
.text start:0x803897A8 end:0x803897D8
Runtime/NMWException.cpp:
extab start:0x800035A0 end:0x800035C8
extabindex start:0x800035E0 end:0x80003604
.text start:0x803897D8 end:0x80389A00
Runtime/ptmf.c:
.text start:0x80389A00 end:0x80389A58
.rodata start:0x803D8680 end:0x803D8690
Runtime/runtime.c:
.text start:0x80389A58 end:0x8038A1E8
.rodata start:0x803D8690 end:0x803D86A8
Runtime/__init_cpp_exceptions.cpp:
.text start:0x8038A1E8 end:0x8038A264
.ctors start:0x803CB2C0 end:0x803CB2C4
.dtors start:0x803CB480 end:0x803CB488
.sdata start:0x805A8860 end:0x805A8864
Runtime/Gecko_ExceptionPPC.cpp:
.text start:0x8038A264 end:0x8038A2CC
.bss start:0x80541E68 end:0x80541E78
Runtime/abort_exit.c:
.text start:0x8038A2CC end:0x8038A398
.bss start:0x80541E78 end:0x80541F78
.sbss start:0x805A9698 end:0x805A96A8
Runtime/alloc.c:
.text start:0x8038A398 end:0x8038B1AC
.rodata start:0x803D86A8 end:0x803D86C0
.bss start:0x80541F78 end:0x80541FB0
.sbss start:0x805A96A8 end:0x805A96B0
Runtime/errno.c:
.sbss start:0x805A96B0 end:0x805A96B8
Runtime/ansi_files.c:
.text start:0x8038B1AC end:0x8038B2B4
.data start:0x803F2448 end:0x803F2588
.bss start:0x80541FB0 end:0x805422B0
Runtime/ansi_fp.c:
.text start:0x8038B2B4 end:0x8038CF20
.rodata start:0x803D86C0 end:0x803D87A0
.data start:0x803F2588 end:0x803F26F0
.sdata2 start:0x805AE930 end:0x805AE960
Runtime/arith.c:
.text start:0x8038CF20 end:0x8038CF30
Runtime/buffer_io.c:
.text start:0x8038CF30 end:0x8038D028
Runtime/ctype.c:
.text start:0x8038D028 end:0x8038D04C
.data start:0x803F26F0 end:0x803F29F0
Runtime/locale.c:
.rodata start:0x803D87A0 end:0x803D87A8
.data start:0x803F29F0 end:0x803F2A28
Runtime/direct_io.c:
.text start:0x8038D04C end:0x8038D378
Runtime/file_io.c:
.text start:0x8038D378 end:0x8038D570
Runtime/FILE_POS.c:
.text start:0x8038D570 end:0x8038D83C
Runtime/mbstring.c:
.text start:0x8038D83C end:0x8038D980
.sdata2 start:0x805AE960 end:0x805AE968
Runtime/mem.c:
.text start:0x8038D980 end:0x8038DAF0
Runtime/mem_funcs.c:
.text start:0x8038DAF0 end:0x8038DDD0
Runtime/misc_io.c:
.text start:0x8038DDD0 end:0x8038DDE0
Runtime/printf.c:
.text start:0x8038DDE0 end:0x8038FE08
.rodata start:0x803D87A8 end:0x803D87D0
.data start:0x803F2A28 end:0x803F2C58
.sdata start:0x805A8868 end:0x805A8870
.sdata2 start:0x805AE968 end:0x805AE970
Runtime/qsort.c:
.text start:0x8038FE08 end:0x8038FF78
Runtime/rand.c:
.text start:0x8038FF78 end:0x8038FFA0
.sdata start:0x805A8870 end:0x805A8878
Runtime/float.c:
.sdata start:0x805A8878 end:0x805A88A8
Runtime/sscanf.c:
.text start:0x8038FFA0 end:0x80390030
Runtime/string.c:
.text start:0x80390030 end:0x803902E0
Runtime/strtold.c:
.text start:0x803902E0 end:0x80391378
.rodata start:0x803D87D0 end:0x803D8808
.sdata2 start:0x805AE970 end:0x805AE988
Runtime/uart_console_io.c:
.text start:0x80391378 end:0x80391444
.sbss start:0x805A96B8 end:0x805A96C0
Runtime/wchar_io.c:
.text start:0x80391444 end:0x803914CC
Runtime/e_acos.c:
.text start:0x803914CC end:0x803917DC
.sdata2 start:0x805AE988 end:0x805AEA18
Runtime/e_asin.c:
.text start:0x803917DC end:0x80391A40
.sdata2 start:0x805AEA18 end:0x805AEAB0
Runtime/e_atan2.c:
.text start:0x80391A40 end:0x80391CD0
.sdata2 start:0x805AEAB0 end:0x805AEB08
Runtime/e_exp.c:
.text start:0x80391CD0 end:0x80391EEC
.rodata start:0x803D8808 end:0x803D8838
.sdata2 start:0x805AEB08 end:0x805AEB80
Runtime/e_fmod.c:
.text start:0x80391EEC end:0x80392228
.rodata start:0x803D8838 end:0x803D8848
Runtime/e_log.c:
.text start:0x80392228 end:0x803924A4
.sbss start:0x805A96C0 end:0x805A96C8
.sdata2 start:0x805AEB80 end:0x805AEC00
Runtime/e_pow.c:
.text start:0x803924A4 end:0x80392D30
.rodata start:0x803D8848 end:0x803D8878
.sdata2 start:0x805AEC00 end:0x805AED10
Runtime/e_rem_pio2.c:
.text start:0x80392D30 end:0x803930D0
.rodata start:0x803D8878 end:0x803D8A00
.sdata2 start:0x805AED10 end:0x805AED68
Runtime/k_cos.c:
.text start:0x803930D0 end:0x803931C4
.sdata2 start:0x805AED68 end:0x805AEDB0
Runtime/k_rem_pio2.c:
.text start:0x803931C4 end:0x80394018
.rodata start:0x803D8A00 end:0x803D8A50
.sdata2 start:0x805AEDB0 end:0x805AEDF0
Runtime/k_sin.c:
.text start:0x80394018 end:0x803940B8
.sdata2 start:0x805AEDF0 end:0x805AEE28
Runtime/k_tan.c:
.text start:0x803940B8 end:0x803942CC
.rodata start:0x803D8A50 end:0x803D8AB8
.sdata2 start:0x805AEE28 end:0x805AEE60
Runtime/s_atan.c:
.text start:0x803942CC end:0x803944CC
.rodata start:0x803D8AB8 end:0x803D8B50
.sdata2 start:0x805AEE60 end:0x805AEE88
Runtime/s_copysign.c:
.text start:0x803944CC end:0x803944F4
Runtime/s_cos.c:
.text start:0x803944F4 end:0x803945C8
.sdata2 start:0x805AEE88 end:0x805AEE90
Runtime/s_floor.c:
.text start:0x803945C8 end:0x80394710
.sdata2 start:0x805AEE90 end:0x805AEEA0
Runtime/s_frexp.c:
.text start:0x80394710 end:0x8039479C
.sdata2 start:0x805AEEA0 end:0x805AEEA8
Runtime/s_ldexp.c:
.text start:0x8039479C end:0x80394960
.sdata2 start:0x805AEEA8 end:0x805AEED0
Runtime/s_modf.c:
.text start:0x80394960 end:0x80394A5C
Runtime/s_nextafter.c:
.text start:0x80394A5C end:0x80394BE0
Runtime/s_sin.c:
.text start:0x80394BE0 end:0x80394CB8
.sdata2 start:0x805AEED0 end:0x805AEED8
Runtime/s_tan.c:
.text start:0x80394CB8 end:0x80394D30
.sdata2 start:0x805AEED8 end:0x805AEEE0
Runtime/w_acos.c:
.text start:0x80394D30 end:0x80394D50
Runtime/w_asin.c:
.text start:0x80394D50 end:0x80394D70
Runtime/w_atan2.c:
.text start:0x80394D70 end:0x80394D90
Runtime/w_exp.c:
.text start:0x80394D90 end:0x80394DB0
Runtime/w_fmod.c:
.text start:0x80394DB0 end:0x80394DD0
Runtime/w_log.c:
.text start:0x80394DD0 end:0x80394DF0
Runtime/w_pow.c:
.text start:0x80394DF0 end:0x80394E10
Runtime/math_ppc.c:
.text start:0x80394E10 end:0x80394E34
musyx/runtime/seq.c:
.text start:0x80394E34 end:0x80398DA4
.data start:0x803F2C58 end:0x803F2CA8
.bss start:0x805422B0 end:0x8054FAF0
.sbss start:0x805A96C8 end:0x805A96E8
.sdata2 start:0x805AEEE0 end:0x805AEF00
musyx/runtime/synth.c:
.text start:0x80398DA4 end:0x8039C100
.bss start:0x8054FAF0 end:0x805510D8
.sbss start:0x805A96E8 end:0x805A9730
.sdata2 start:0x805AEF00 end:0x805AEF40
musyx/runtime/seq_api.c:
.text start:0x8039C100 end:0x8039C294
musyx/runtime/snd_synthapi.c:
.text start:0x8039C294 end:0x8039C968
musyx/runtime/stream.c:
.text start:0x8039C968 end:0x803A0D38
.bss start:0x805510D8 end:0x805529D8
.sbss start:0x805A9730 end:0x805A9738
.sdata2 start:0x805AEF40 end:0x805AEF58
musyx/runtime/synthdata.c:
.text start:0x803A0D38 end:0x803A2AC8
.bss start:0x805529D8 end:0x8055D010
.sbss start:0x805A9738 end:0x805A9780
musyx/runtime/synthmacros.c:
.text start:0x803A2AC8 end:0x803A7764
.data start:0x803F2CA8 end:0x803F30F0
.bss start:0x8055D010 end:0x8055D030
.sbss start:0x805A9780 end:0x805A97A0
.sdata2 start:0x805AEF58 end:0x805AEF80
musyx/runtime/synthvoice.c:
.text start:0x803A7764 end:0x803A91F4
.bss start:0x8055D030 end:0x8055DFF0
.sbss start:0x805A97A0 end:0x805A97B8
musyx/runtime/synth_ac.c:
.text start:0x803A91F4 end:0x803A9314
.data start:0x803F30F0 end:0x803F34F0
.sdata2 start:0x805AEF80 end:0x805AEF98
musyx/runtime/synth_dbtab.c:
.data start:0x803F34F0 end:0x803F3C78
musyx/runtime/synth_adsr.c:
.text start:0x803A9314 end:0x803A9AD4
.sdata2 start:0x805AEF98 end:0x805AEFC0
musyx/runtime/synth_vsamples.c:
.text start:0x803A9AD4 end:0x803AA288
.bss start:0x8055DFF0 end:0x8055E940
musyx/runtime/s_data.c:
.text start:0x803AA288 end:0x803AAE00
.bss start:0x8055E940 end:0x8055EF40
.sbss start:0x805A97B8 end:0x805A97C0
musyx/runtime/hw_dspctrl.c:
.text start:0x803AAE00 end:0x803AE214
.rodata start:0x803D8B50 end:0x803D8BA8
.data start:0x803F3C78 end:0x803F3C90
.bss start:0x8055EF40 end:0x8055F620
.sbss start:0x805A97C0 end:0x805A9800
musyx/runtime/hw_volconv.c:
.text start:0x803AE214 end:0x803AE904
.data start:0x803F3C90 end:0x803F3EB8
.sdata2 start:0x805AEFC0 end:0x805AEFF8
musyx/runtime/snd3d.c:
.text start:0x803AE904 end:0x803B0CC4
.bss start:0x8055F620 end:0x80560470
.sbss start:0x805A9800 end:0x805A9820
.sdata2 start:0x805AEFF8 end:0x805AF048
musyx/runtime/snd_init.c:
.text start:0x803B0CC4 end:0x803B0E10
musyx/runtime/snd_math.c:
.text start:0x803B0E10 end:0x803B11D0
.sdata2 start:0x805AF048 end:0x805AF068
musyx/runtime/snd_midictrl.c:
.text start:0x803B11D0 end:0x803B2EA4
.rodata start:0x803D8BA8 end:0x803D8CB8
.data start:0x803F3EB8 end:0x803F3F48
.bss start:0x80560470 end:0x80566C70
musyx/runtime/snd_service.c:
.text start:0x803B2EA4 end:0x803B3050
.data start:0x803F3F48 end:0x803F4748
.sdata start:0x805A88A8 end:0x805A88AC
musyx/runtime/hardware.c:
.text start:0x803B3050 end:0x803B4074
.rodata start:0x803D8CB8 end:0x803D8DB8
.sdata start:0x805A88B0 end:0x805A88C0
.sbss start:0x805A9820 end:0x805A9830
.sdata2 start:0x805AF068 end:0x805AF080
musyx/runtime/dsp_import.c:
.data start:0x803F4760 end:0x803F6140
.sdata start:0x805A88C0 end:0x805A88C4
musyx/runtime/hw_aramdma.c:
.text start:0x803B4074 end:0x803B4D40
.bss start:0x80566C70 end:0x80567578
.sbss start:0x805A9830 end:0x805A9850
musyx/runtime/hw_dolphin.c:
.text start:0x803B4D40 end:0x803B5238
.bss start:0x80567580 end:0x805695E0
.sbss start:0x805A9850 end:0x805A9878
Dolphin/dummy.c:
.bss start:0x805695E0 end:0x805695E8
musyx/runtime/hw_memory.c:
.text start:0x803B5238 end:0x803B528C
musyx/runtime/CheapReverb/creverb_fx.c:
.text start:0x803B528C end:0x803B5348
musyx/runtime/CheapReverb/creverb.c:
.text start:0x803B5348 end:0x803B5C04
.data start:0x803F6140 end:0x803F6150
.sdata2 start:0x805AF080 end:0x805AF0C0
musyx/runtime/StdReverb/reverb_fx.c:
.text start:0x803B5C04 end:0x803B5CC4
musyx/runtime/StdReverb/reverb.c:
.text start:0x803B5CC4 end:0x803B6A08
.data start:0x803F6150 end:0x803F6170
.sdata2 start:0x805AF0C0 end:0x805AF108
musyx/runtime/Delay/delay_fx.c:
.text start:0x803B6A08 end:0x803B6DB4
musyx/runtime/Chorus/chorus_fx.c:
.text start:0x803B6DB4 end:0x803B761C
.data start:0x803F6170 end:0x803F6970
.sdata2 start:0x805AF108 end:0x805AF110
Dolphin/dtk.c:
.text start:0x803B761C end:0x803B7F78
.bss start:0x805695E8 end:0x80569738
.sbss start:0x805A9878 end:0x805A98A8
Dolphin/card/CARDBios.c:
.text start:0x803B7F78 end:0x803B9190
.data start:0x803F6970 end:0x803F69C8
.bss start:0x80569738 end:0x80569978
.sdata start:0x805A88C8 end:0x805A88CC
.sbss start:0x805A98A8 end:0x805A98B0
Dolphin/card/CARDUnlock.c:
.text start:0x803B9190 end:0x803BA3F0
.data start:0x803F69E0 end:0x803F6B40
.sdata start:0x805A88D0 end:0x805A88D4
Dolphin/card/CARDRdwr.c:
.text start:0x803BA3F0 end:0x803BA670
Dolphin/card/CARDBlock.c:
.text start:0x803BA670 end:0x803BAA74
Dolphin/card/CARDDir.c:
.text start:0x803BAA74 end:0x803BACD8
Dolphin/card/CARDCheck.c:
.text start:0x803BACD8 end:0x803BBC14
Dolphin/card/CARDMount.c:
.text start:0x803BBC14 end:0x803BC68C
.data start:0x803F6B40 end:0x803F6B80
Dolphin/card/CARDFormat.c:
.text start:0x803BC68C end:0x803BCE70
Dolphin/card/CARDOpen.c:
.text start:0x803BCE70 end:0x803BD2C4
Dolphin/card/CARDCreate.c:
.text start:0x803BD2C4 end:0x803BD614
Dolphin/card/CARDRead.c:
.text start:0x803BD614 end:0x803BDA44
Dolphin/card/CARDWrite.c:
.text start:0x803BDA44 end:0x803BDD78
Dolphin/card/CARDDelete.c:
.text start:0x803BDD78 end:0x803BE058
Dolphin/card/CARDStat.c:
.text start:0x803BE058 end:0x803BE4F0
Dolphin/card/CARDRename.c:
.text start:0x803BE4F0 end:0x803BE6EC
Dolphin/card/CARDNet.c:
.text start:0x803BE6EC end:0x803BE7B0
.sdata start:0x805A88D8 end:0x805A88DC
Dolphin/si/SIBios.c:
.text start:0x803BE7B0 end:0x803C0010
.data start:0x803F6B80 end:0x803F6C98
.bss start:0x80569978 end:0x80569B78
.sdata start:0x805A88E0 end:0x805A88E4
.sbss start:0x805A98B0 end:0x805A98C0
Dolphin/si/SISamplingRate.c:
.text start:0x803C0010 end:0x803C0118
.data start:0x803F6C98 end:0x803F6D30
.sbss start:0x805A98C0 end:0x805A98C4
Dolphin/exi/EXIBios.c:
.text start:0x803C0118 end:0x803C19F4
.data start:0x803F6D30 end:0x803F6DFC
.bss start:0x80569B78 end:0x80569C38
.sdata start:0x805A88E8 end:0x805A88EC
Dolphin/exi/EXIUart.c:
.text start:0x803C19F4 end:0x803C1C64
.sbss start:0x805A98C8 end:0x805A98D8
Dolphin/thp/THPDec.c:
.text start:0x803C1C64 end:0x803C91CC
.rodata start:0x803D8DB8 end:0x803D8E48
.data start:0x803F6E00 end:0x803F6E40
.bss start:0x80569C40 end:0x80569D70
.sdata start:0x805A88F0 end:0x805A88F4
.sbss start:0x805A98E0 end:0x805A99F8
.sdata2 start:0x805AF110 end:0x805AF12C
Dolphin/thp/THPAudio.c:
.text start:0x803C91CC end:0x803C96FC
Runtime/__mem.c:
.init start:0x800033A8 end:0x800034E0
Dolphin/GBA/GBA.c:
.text start:0x803C96FC end:0x803C99EC
.data start:0x803F6E40 end:0x803F6E50
.bss start:0x80569D80 end:0x8056A280
.sbss start:0x805A99F8 end:0x805A99FC
Dolphin/GBA/GBAGetProcessStatus.c:
.text start:0x803C99EC end:0x803C9B60
Dolphin/GBA/GBAJoyBoot.c:
.text start:0x803C9B60 end:0x803CAA24
.data start:0x803F6E50 end:0x803F6E80
Dolphin/GBA/GBARead.c:
.text start:0x803CAA24 end:0x803CAB84
Dolphin/GBA/GBAWrite.c:
.text start:0x803CAB84 end:0x803CAD0C
Dolphin/GBA/GBAXfer.c:
.text start:0x803CAD0C end:0x803CB044
Dolphin/GBA/GBAKey.c:
.text start:0x803CB044 end:0x803CB2AC
.data start:0x803F6E80 end:0x803F7226

View File

@ -0,0 +1,6 @@
Dolphin/os/OSRtc.c:
.text start:0x80383998 end:0x803844E8
.bss start:0x80541280 end:0x805412D4
Dolphin/os/OSSync.c:
.text start:0x803844E8 end:0x8038456C

27094
config/GM8E01_48/symbols.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -41,7 +41,7 @@ VERSIONS = [
DISABLED_VERSIONS = [
#1,
2,
#2,
3,
4,
5,
@ -213,7 +213,6 @@ cflags_base = [
"-fp_contract on",
"-str reuse",
"-i include",
"-i extern/musyx/include",
"-i libc",
f"-i build/{config.version}/include",
f"-DVERSION={version_num}",
@ -252,6 +251,7 @@ cflags_retro = [
"-gccinc",
"-inline deferred,noauto",
"-common on",
"-i extern/musyx/include",
"-DMUSY_TARGET=MUSY_TARGET_DOLPHIN",
]
@ -383,7 +383,7 @@ config.libs = [
DolphinLib(
"TRK_MINNOW_DOLPHIN",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroTRK/mslsupp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "MetroTRK/mslsupp.c"),
],
),
RetroLib(
@ -1081,9 +1081,9 @@ config.libs = [
Object(NonMatching, "Kyoto/Animation/CPoseAsTransformsVariableSize.cpp"),
Object(NonMatching, "Kyoto/Input/CRumbleVoice.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Kyoto/Input/RumbleAdsr.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Kyoto/Input/CRumbleGenerator.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Kyoto/Input/CRumbleGenerator.cpp"),
Object(NonMatching, "Kyoto/Audio/CDSPStream.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Kyoto/Audio/g721.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Kyoto/Audio/g721.cpp"),
Object(NonMatching, "Kyoto/Audio/CStaticAudioPlayer.cpp"),
Object(NonMatching, "Kyoto/CFrameDelayedKiller.cpp"),
],
@ -1091,47 +1091,47 @@ config.libs = [
DolphinLib(
"ai",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/ai.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/ai.c"),
],
),
DolphinLib(
"ar",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/ar/ar.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/ar/arq.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/ar/ar.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/ar/arq.c"),
],
),
DolphinLib(
"base",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/PPCArch.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/PPCArch.c"),
],
),
DolphinLib(
"db",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/db.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/db.c"),
],
),
DolphinLib(
"dsp",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dsp/dsp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dsp/dsp_debug.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dsp/dsp_task.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dsp/dsp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dsp/dsp_debug.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dsp/dsp_task.c"),
],
),
DolphinLib(
"dvd",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvdlow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvdfs.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvd.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvdqueue.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvderror.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvdidutils.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/dvdfatal.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dvd/fstload.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvdlow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvdfs.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvd.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvdqueue.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvderror.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvdidutils.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/dvdfatal.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dvd/fstload.c"),
],
),
DolphinLib(
@ -1154,57 +1154,64 @@ config.libs = [
Object(NonMatching, "Dolphin/gx/GXPerf.c"),
],
),
DolphinLib(
"mtx",
[
Object(
MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/mtx/mtx.c", cflags=[*cflags_base, "-fp_contract off"]
),
{
"lib": "mtx",
"mw_version": "GC/1.2.5n",
#"cflags": ["-nodefaults","-proc gekko","-align powerpc","-fp hardware","-g","-sym on","-maxerrors 1","-nosyspath","-i include","-i libc", "-D_DEBUG=1", "-inline off", "-Cpp_exceptions off"],
"cflags": [*cflags_base, "-fp_contract off"],
"host": False,
"progress_category": "sdk",
"shift_jis": True,
"objects": [
Object(MatchingFor("GM8E01_00", "GM8E01_01","GM8E01_48"), "Dolphin/mtx/mtx.c"),
Object(NonMatching, "Dolphin/mtx/mtxvec.c"),
Object(NonMatching, "Dolphin/mtx/mtxstack.c"),
Object(NonMatching, "Dolphin/mtx/mtx44vec.c"),
Object(NonMatching, "Dolphin/mtx/mtx44.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01","GM8E01_48"), "Dolphin/mtx/mtx44.c"),
Object(NonMatching, "Dolphin/mtx/vec.c"),
Object(Equivalent, "Dolphin/mtx/quat.c"),
Object(NonMatching, "Dolphin/mtx/psmtx.c"),
],
),
},
DolphinLib(
"os",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/__start.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OS.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSAlarm.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSArena.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSAudioSystem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSCache.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSContext.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSError.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/__start.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OS.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSAlarm.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSArena.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSAudioSystem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSCache.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSContext.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSError.c"),
Object(NonMatching, "Dolphin/os/OSFatal.c"),
Object(NonMatching, "Dolphin/os/OSFont.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSInterrupt.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSLink.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSMessage.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSMemory.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSMutex.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSInterrupt.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSLink.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSMessage.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSMemory.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSMutex.c"),
Object(NonMatching, "Dolphin/os/OSReboot.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSReset.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSResetSW.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSReset.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSResetSW.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSRtc.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSSync.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSThread.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/OSTime.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/os/__ppc_eabi_init.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSThread.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/OSTime.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/os/__ppc_eabi_init.cpp"),
],
),
DolphinLib(
"pad",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/pad/PadClamp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/pad/pad.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/pad/PadClamp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/pad/pad.c"),
],
),
DolphinLib(
"vi",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/vi.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/vi.c"),
],
),
{
@ -1215,178 +1222,178 @@ config.libs = [
"progress_category": "sdk",
"shift_jis": False,
"objects": [
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/__mem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/__va_arg.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/global_destructor_chain.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/CPlusLibPPC.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/NMWException.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/ptmf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/runtime.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/__init_cpp_exceptions.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/Gecko_ExceptionPPC.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/abort_exit.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/__mem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/__va_arg.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/global_destructor_chain.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/CPlusLibPPC.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/NMWException.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/ptmf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/runtime.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/__init_cpp_exceptions.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/Gecko_ExceptionPPC.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/abort_exit.c"),
Object(NonMatching, "Runtime/alloc.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/ansi_files.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/ansi_fp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/arith.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/buffer_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/ctype.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/locale.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/direct_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/file_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/errno.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/FILE_POS.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/mbstring.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/mem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/mem_funcs.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/misc_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/ansi_files.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/ansi_fp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/arith.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/buffer_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/ctype.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/locale.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/direct_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/file_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/errno.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/FILE_POS.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/mbstring.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/mem.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/mem_funcs.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/misc_io.c"),
Object(NonMatching, "Runtime/printf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/qsort.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/rand.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/sscanf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/string.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/float.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/strtold.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/uart_console_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/wchar_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_acos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_asin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_atan2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_exp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_fmod.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_log.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_pow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/e_rem_pio2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/k_cos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/k_rem_pio2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/k_sin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/k_tan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_atan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_copysign.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_cos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_floor.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_frexp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_ldexp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_modf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_nextafter.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_sin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/s_tan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_acos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_asin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_atan2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_exp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_fmod.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_log.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/w_pow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Runtime/math_ppc.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/qsort.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/rand.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/sscanf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/string.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/float.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/strtold.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/uart_console_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/wchar_io.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_acos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_asin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_atan2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_exp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_fmod.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_log.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_pow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/e_rem_pio2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/k_cos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/k_rem_pio2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/k_sin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/k_tan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_atan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_copysign.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_cos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_floor.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_frexp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_ldexp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_modf.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_nextafter.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_sin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/s_tan.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_acos.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_asin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_atan2.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_exp.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_fmod.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_log.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/w_pow.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Runtime/math_ppc.c"),
],
},
MusyX(
#debug=True,
#mw_version="GC/1.2.5n",
#major=2,
#minor=0,
#patch=2,
major=2,
minor=0,
patch=0,
objects=[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/seq.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synth.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/seq_api.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd_synthapi.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/stream.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synthdata.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synthmacros.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synthvoice.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synth_ac.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synth_adsr.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synth_vsamples.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/synth_dbtab.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/s_data.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_dspctrl.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_volconv.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd3d.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd_init.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd_math.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd_midictrl.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/snd_service.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hardware.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_aramdma.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/dsp_import.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_dolphin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_memory.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/hw_lib_dummy.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/CheapReverb/creverb_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/CheapReverb/creverb.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/StdReverb/reverb_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/StdReverb/reverb.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/Delay/delay_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/Chorus/chorus_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "musyx/runtime/profile.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/seq.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synth.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/seq_api.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd_synthapi.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/stream.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synthdata.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synthmacros.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synthvoice.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synth_ac.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synth_adsr.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synth_vsamples.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/synth_dbtab.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/s_data.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_dspctrl.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_volconv.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd3d.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd_init.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd_math.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd_midictrl.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/snd_service.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hardware.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_aramdma.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/dsp_import.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_dolphin.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_memory.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/hw_lib_dummy.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/CheapReverb/creverb_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/CheapReverb/creverb.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/StdReverb/reverb_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/StdReverb/reverb.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/Delay/delay_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/Chorus/chorus_fx.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "musyx/runtime/profile.c"),
],
),
DolphinLib(
"Dummy",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dummy.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dummy.c"),
],
),
DolphinLib(
"dtk",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/dtk.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/dtk.c"),
],
),
DolphinLib(
"card",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDUnlock.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDRdwr.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDBlock.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDDir.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDCheck.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDMount.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDFormat.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDOpen.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDCreate.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDRead.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDWrite.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDDelete.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDStat.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDRename.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/card/CARDNet.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDUnlock.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDRdwr.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDBlock.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDDir.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDCheck.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDMount.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDFormat.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDOpen.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDCreate.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDRead.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDWrite.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDDelete.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDStat.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDRename.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/card/CARDNet.c"),
],
),
DolphinLib(
"si",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/si/SIBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/si/SISamplingRate.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/si/SIBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/si/SISamplingRate.c"),
],
),
DolphinLib(
"exi",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/exi/EXIBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/exi/EXIUart.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/exi/EXIBios.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/exi/EXIUart.c"),
],
),
DolphinLib(
"thp",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/thp/THPDec.c"),
Object(NonMatching, "Dolphin/thp/THPAudio.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/thp/THPDec.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/thp/THPAudio.c"),
],
),
DolphinLib(
"gba",
[
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBA.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBAGetProcessStatus.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBAJoyBoot.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBARead.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBAWrite.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBAXfer.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Dolphin/GBA/GBAKey.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBA.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBAGetProcessStatus.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBAJoyBoot.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBARead.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBAWrite.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBAXfer.c"),
Object(MatchingFor("GM8E01_00", "GM8E01_01", "GM8E01_48"), "Dolphin/GBA/GBAKey.c"),
],
),
Rel(

2
extern/musyx vendored

@ -1 +1 @@
Subproject commit 875167ea62376211ebe223b4a79473141c37e49d
Subproject commit d050faa2221ba769198f40a253aff5213ac9d622

View File

@ -6,6 +6,18 @@
class CMoviePlayer {
public:
class CTHPTextureSet {
CTHPTextureSet(void* y, void* u, void* v, void* audio);
void* Y();
void* U();
void* V();
void* Audio();
uint GetAudioSamples() const;
void SetAudioSamples(uint);
uint GetAudioSamplesConsumed() const;
void SetAudioSamplesConsumed(uint);
};
static void SetSfxVolume(uchar);
CMoviePlayer(const char*, float, bool, bool);

View File

@ -138,20 +138,36 @@ public:
void DisableFog();
};
class CConstChainIterator {
const CGameArea* m_area;
class CChainIterator {
protected:
CGameArea* m_area;
public:
CConstChainIterator() : m_area(nullptr) {}
explicit CConstChainIterator(const CGameArea* area) : m_area(area) {}
const CGameArea& operator*() const { return *m_area; }
const CGameArea* operator->() const { return m_area; }
CConstChainIterator& operator++() {
CChainIterator() : m_area(nullptr) {}
explicit CChainIterator(CGameArea* area) : m_area(area) {}
CGameArea& operator*() const { return *m_area; }
CGameArea* operator->() const { return m_area; }
CChainIterator& operator++() {
m_area = m_area->GetNext();
return *this;
}
bool operator!=(const CConstChainIterator& other) const { return m_area != other.m_area; }
bool operator==(const CConstChainIterator& other) const { return m_area == other.m_area; }
bool operator!=(const CChainIterator& other) const { return m_area != other.m_area; }
bool operator==(const CChainIterator& other) const { return m_area == other.m_area; }
};
class CConstChainIterator : protected CChainIterator {
public:
CConstChainIterator() {}
explicit CConstChainIterator(const CGameArea* area)
: CChainIterator(const_cast< CGameArea* >(area)) {}
const CGameArea& operator*() const { return CChainIterator::operator*(); }
const CGameArea* operator->() const { return CChainIterator::operator->(); }
CConstChainIterator& operator++() {
CChainIterator::operator++();
return *this;
}
bool operator!=(const CConstChainIterator& other) const { return !CChainIterator::operator==(other); }
bool operator==(const CConstChainIterator& other) const { return CChainIterator::operator==(other); }
};
enum EOcclusionState { kOS_Occluded, kOS_Visible };

View File

@ -133,6 +133,10 @@ public:
static void PropogateAreaChain(CGameArea::EOcclusionState occlusionState, CGameArea* area,
CWorld* world);
CGameArea::CChainIterator ChainHead(EChain chain) const {
return CGameArea::CChainIterator(x4c_chainHeads[size_t(chain)]);
}
CGameArea::CConstChainIterator GetChainHead(EChain chain) const {
return CGameArea::CConstChainIterator(x4c_chainHeads[size_t(chain)]);
}

View File

@ -17,8 +17,8 @@ public:
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
void PreThink(float dt, CStateManager& mgr) override;
void Think(float dt, CStateManager&) override;
void AddToRenderer(const CFrustumPlanes& planes, CStateManager& mgr);
void Accept(IVisitor& visitor);
void AddToRenderer(const CFrustumPlanes& planes, CStateManager& mgr) const override;
void Accept(IVisitor& visitor) override;
void PlaySound(CStateManager& mgr);
void StopSound(CStateManager& mgr);

View File

@ -0,0 +1,106 @@
#include <dolphin/mtx.h>
#ifndef _DOLPHIN_MTX44EXT
#define _DOLPHIN_MTX44EXT
#ifdef __cplusplus
extern "C" {
#endif
void C_MTX44Identity(Mtx44 m);
void C_MTX44Copy(const Mtx44 src, Mtx44 dst);
void C_MTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
void C_MTX44Transpose(const Mtx44 src, Mtx44 xPose);
u32 C_MTX44Inverse(const Mtx44 src, Mtx44 inv);
#ifdef GEKKO
void PSMTX44Identity(Mtx44 m);
void PSMTX44Copy(const Mtx44 src, Mtx44 dst);
void PSMTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
void PSMTX44Transpose(const Mtx44 src, Mtx44 xPose);
#endif
#ifdef MTX_USE_PS
#define MTX44Identity PSMTX44Identity
#define MTX44Copy PSMTX44Copy
#define MTX44Concat PSMTX44Concat
#define MTX44Transpose PSMTX44Transpose
#else
#define MTX44Identity C_MTX44Identity
#define MTX44Copy C_MTX44Copy
#define MTX44Concat C_MTX44Concat
#define MTX44Transpose C_MTX44Transpose
#endif
#define MTX44Inverse C_MTX44Inverse
void C_MTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
void C_MTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
void C_MTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
void C_MTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
void C_MTX44RotRad(Mtx44 m, char axis, f32 rad);
void C_MTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
void C_MTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
#ifdef GEKKO
void PSMTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
void PSMTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
void PSMTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
void PSMTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
void PSMTX44RotRad(Mtx44 m, char axis, f32 rad);
void PSMTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
void PSMTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
#endif
#ifdef MTX_USE_PS
#define MTX44Trans PSMTX44Trans
#define MTX44TransApply PSMTX44TransApply
#define MTX44Scale PSMTX44Scale
#define MTX44ScaleApply PSMTX44ScaleApply
#define MTX44RotRad PSMTX44RotRad
#define MTX44RotTrig PSMTX44RotTrig
#define MTX44RotAxisRad PSMTX44RotAxisRad
#else
#define MTX44Trans C_MTX44Trans
#define MTX44TransApply C_MTX44TransApply
#define MTX44Scale C_MTX44Scale
#define MTX44ScaleApply C_MTX44ScaleApply
#define MTX44RotRad C_MTX44RotRad
#define MTX44RotTrig C_MTX44RotTrig
#define MTX44RotAxisRad C_MTX44RotAxisRad
#endif
void C_MTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
void C_MTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
void C_MTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
void C_MTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
#ifdef GEKKO
void PSMTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
void PSMTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
void PSMTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
void PSMTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
#endif
#ifdef MTX_USE_PS
#define MTX44MultVec PSMTX44MultVec
#define MTX44MultVecArray PSMTX44MultVecArray
#define MTX44MultVecSR PSMTX44MultVecSR
#define MTX44MultVecArraySR PSMTX44MultVecArraySR
#else
#define MTX44MultVec C_MTX44MultVec
#define MTX44MultVecArray C_MTX44MultVecArray
#define MTX44MultVecSR C_MTX44MultVecSR
#define MTX44MultVecArraySR C_MTX44MultVecArraySR
#endif
#ifdef __cplusplus
}
#endif
#endif // _DOLPHIN_MTX44EXT

View File

@ -70,7 +70,6 @@ u32 ARAlloc(u32 length) {
return tmp;
}
#if NONMATCHING
u32 ARFree(u32* length) {
BOOL old;
@ -90,47 +89,6 @@ u32 ARFree(u32* length) {
return __AR_StackPointer;
}
#else
/* clang-format off */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 ARFree(u32* length) {
nofralloc
mflr r0
stw r0, 4(r1)
stwu r1, -0x18(r1)
stw r31, 0x14(r1)
mr r31, r3
bl OSDisableInterrupts
lwz r4, __AR_BlockLength
cmplwi r31, 0
addi r0, r4, -4
stw r0, __AR_BlockLength
beq lbl_8036DAB4
lwz r4, __AR_BlockLength
lwz r0, 0(r4)
stw r0, 0(r31)
lbl_8036DAB4:
lwz r5, __AR_BlockLength
lwz r4, __AR_FreeBlocks
lwz r6, 0(r5)
addi r0, r4, 1
lwz r5, __AR_StackPointer
stw r0, __AR_FreeBlocks
subf r0, r6, r5
stw r0, __AR_StackPointer
bl OSRestoreInterrupts
lwz r3, __AR_StackPointer
lwz r0, 0x1c(r1)
lwz r31, 0x14(r1)
addi r1, r1, 0x18
mtlr r0
blr
}
#pragma pop
/* clang-format on */
#endif
BOOL ARCheckInit() { return __AR_init_flag; }

View File

@ -1,19 +1,28 @@
#include "dolphin/mtx.h"
#include "dolphin/os.h"
#include <math.h>
static f32 Unit01[] = {0.0f, 1.0f};
extern f32 sinf(f32);
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;
void C_MTXIdentity(Mtx m) {
#line 189
ASSERTMSG(m, "MtxIdentity(): NULL Mtx 'm' ");
m[0][0] = 1.0f;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
m[0][3] = 0.0f;
m[1][0] = 0.0f;
m[1][1] = 1.0f;
m[1][2] = 0.0f;
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;
}
#ifdef GEKKO
@ -39,6 +48,9 @@ void PSMTXIdentity(register Mtx m) {
void C_MTXCopy(const Mtx src, Mtx dst) {
#line 250
ASSERTMSG((src != 0), "MTXCopy(): NULL MtxPtr 'src' ");
ASSERTMSG((dst != 0), "MTXCopy(): NULL MtxPtr 'dst' ");
if (src == dst) {
return;
}
@ -86,7 +98,11 @@ void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab) {
Mtx mTmp;
MtxPtr m;
if ((ab == a) || (ab == b)) {
#line 324
ASSERTMSG(a != 0, "MTXConcat(): NULL MtxPtr 'a' ");
ASSERTMSG(b != 0, "MTXConcat(): NULL MtxPtr 'b' ");
ASSERTMSG(ab != 0, "MTXConcat(): NULL MtxPtr 'ab' ");
if (ab == a || ab == b) {
m = mTmp;
}
@ -216,6 +232,12 @@ asm void PSMTXConcat(const register Mtx mA, const register Mtx mB, register Mtx
void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count) {
u32 i;
#line 580
ASSERTMSG((a != 0), "MTXConcatArray(): NULL MtxPtr 'a' ");
ASSERTMSG((srcBase != 0), "MTXConcatArray(): NULL MtxPtr 'srcBase' ");
ASSERTMSG((dstBase != 0), "MTXConcatArray(): NULL MtxPtr 'dstBase' ");
ASSERTMSG((count > 1), "MTXConcatArray(): count must be greater than 1.");
for (i = 0; i < count; i++) {
C_MTXConcat(a, *srcBase, *dstBase);
@ -345,7 +367,9 @@ _loop:
void C_MTXTranspose(const Mtx src, Mtx xPose) {
Mtx mTmp;
MtxPtr m;
#line 851
ASSERTMSG((src != 0), "MTXTranspose(): NULL MtxPtr 'src' ");
ASSERTMSG((xPose != 0), "MTXTranspose(): NULL MtxPtr 'xPose' ");
if (src == xPose) {
m = mTmp;
} else {
@ -406,6 +430,10 @@ u32 C_MTXInverse(const Mtx src, Mtx inv) {
MtxPtr m;
f32 det;
#line 950
ASSERTMSG((src != 0), "MTXInverse(): NULL MtxPtr 'src' ");
ASSERTMSG((inv != 0), "MTXInverse(): NULL MtxPtr 'inv' ");
if (src == inv) {
m = mTmp;
} else {
@ -523,6 +551,10 @@ u32 C_MTXInvXpose(const Mtx src, Mtx invX) {
MtxPtr m;
f32 det;
#line 0x4a1
ASSERTMSG((src != 0), "MTXInvXpose(): NULL MtxPtr 'src' ");
ASSERTMSG((invX != 0), "MTXInvXpose(): NULL MtxPtr 'invX' ");
if (src == invX) {
m = mTmp;
} else {
@ -626,6 +658,9 @@ _regular:
void C_MTXRotRad(Mtx m, char axis, f32 rad) {
f32 sinA, cosA;
#line 0x5a7
ASSERTMSG((m != 0), "MTXRotRad(): NULL MtxPtr 'm' ");
sinA = sinf(rad);
cosA = cosf(rad);
C_MTXRotTrig(m, axis, sinA, cosA);
@ -643,6 +678,9 @@ void PSMTXRotRad(Mtx m, char axis, f32 rad) {
#endif
void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA) {
#line 0x5de
ASSERTMSG((m != 0), "MTXRotTrig(): NULL MtxPtr 'm' ");
switch (axis) {
case 'x':
@ -694,6 +732,8 @@ void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA) {
break;
default:
#line 0x5f9
ASSERTMSG(0, "MTXRotTrig(): invalid 'axis' value ");
break;
}
}
@ -772,6 +812,9 @@ void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) {
f32 t;
f32 x, y, z;
f32 xSq, ySq, zSq;
#line 0x68d
ASSERTMSG((m != 0), "MTXRotAxisRad(): NULL MtxPtr 'm' ");
ASSERTMSG((axis != 0), "MTXRotAxisRad(): NULL VecPtr 'axis' ");
s = sinf(rad);
c = cosf(rad);
@ -872,6 +915,8 @@ void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) {
#endif
void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT) {
#line 0x74a
ASSERTMSG((m != 0), "MTXTrans(): NULL MtxPtr 'm' ");
m[0][0] = 1.0f;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
@ -909,6 +954,9 @@ void PSMTXTrans(register Mtx m, register f32 xT, register f32 yT, register f32 z
#endif
void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) {
#line 0x78d
ASSERTMSG((src != 0), "MTXTransApply(): NULL MtxPtr 'src' ");
ASSERTMSG((dst != 0), "MTXTransApply(): NULL MtxPtr 'src' ");
if (src != dst) {
dst[0][0] = src[0][0];
dst[0][1] = src[0][1];
@ -955,6 +1003,9 @@ asm void PSMTXTransApply(const register Mtx src, register Mtx dst, register f32
#endif
void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) {
#line 0x7d8
ASSERTMSG((m != 0), "MTXScale(): NULL MtxPtr 'm' ");
m[0][0] = xS;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
@ -989,6 +1040,9 @@ void PSMTXScale(register Mtx m, register f32 xS, register f32 yS, register f32 z
#endif
void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS) {
#line 0x816
ASSERTMSG((src != 0), "MTXScaleApply(): NULL MtxPtr 'src' ");
ASSERTMSG((dst != 0), "MTXScaleApply(): NULL MtxPtr 'dst' ");
dst[0][0] = src[0][0] * xS;
dst[0][1] = src[0][1] * xS;
dst[0][2] = src[0][2] * xS;
@ -1039,6 +1093,11 @@ asm void PSMTXScaleApply(const register Mtx src, register Mtx dst, register f32
void C_MTXQuat(Mtx m, const Quaternion* q) {
f32 s, xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz;
#line 0x861
ASSERTMSG((m != 0), "MTXQuat(): NULL MtxPtr 'm' ");
ASSERTMSG((q != 0), "MTXQuat(): NULL QuaternionPtr 'q' ");
ASSERTMSG((q->x || q->y || q->z || q->w), "MTXQuat(): zero-value quaternion ");
s = 2.0f / ((q->x * q->x) + (q->y * q->y) + (q->z * q->z) + (q->w * q->w));
xs = q->x * s;
@ -1191,6 +1250,11 @@ void PSMTXReflect(register Mtx m, const register Vec* p, const register Vec* n)
void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d* target) {
Vec vLook, vRight, vUp;
#line 0x986
ASSERTMSG((m != 0), "MTXLookAt(): NULL MtxPtr 'm' ");
ASSERTMSG((camPos != 0), "MTXLookAt(): NULL VecPtr 'camPos' ");
ASSERTMSG((camUp != 0), "MTXLookAt(): NULL VecPtr 'camUp' ");
ASSERTMSG((target != 0), "MTXLookAt(): NULL Point3dPtr 'target' ");
vLook.x = camPos->x - target->x;
vLook.y = camPos->y - target->y;
@ -1219,6 +1283,10 @@ void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d*
void C_MTXLightFrustum(Mtx m, float t, float b, float l, float r, float n, float scaleS,
float scaleT, float transS, float transT) {
f32 tmp;
#line 0x9ed
ASSERTMSG((m != 0), "MTXLightFrustum(): NULL MtxPtr 'm' ");
ASSERTMSG((t != b), "MTXLightFrustum(): 't' and 'b' clipping planes are equal ");
ASSERTMSG((l != r), "MTXLightFrustum(): 'l' and 'r' clipping planes are equal ");
tmp = 1.0f / (r - l);
m[0][0] = ((2 * n) * tmp) * scaleS;
@ -1242,7 +1310,10 @@ void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, float scaleS, float scal
float transT) {
f32 angle;
f32 cot;
#line 0xa2d
ASSERTMSG((m != 0), "MTXLightPerspective(): NULL MtxPtr 'm' ");
ASSERTMSG(((fovY > 0.0) && (fovY < 180.0)), "MTXLightPerspective(): 'fovY' out of range ");
ASSERTMSG((aspect != 0), "MTXLightPerspective(): 'aspect' is 0 ");
angle = fovY * 0.5f;
angle = MTXDegToRad(angle);
@ -1267,6 +1338,11 @@ void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, float scaleS, float scal
void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, float scaleS, float scaleT, float transS,
float transT) {
f32 tmp;
#line 0xa71
ASSERTMSG((m != 0), "MTXLightOrtho(): NULL MtxPtr 'm' ");
ASSERTMSG((t != b), "MTXLightOrtho(): 't' and 'b' clipping planes are equal ");
ASSERTMSG((l != r), "MTXLightOrtho(): 'l' and 'r' clipping planes are equal ");
tmp = 1.0f / (r - l);
m[0][0] = (2.0f * tmp * scaleS);
m[0][1] = 0.0f;

933
src/Dolphin/mtx/mtx44.c Normal file
View File

@ -0,0 +1,933 @@
#include "dolphin/mtx/mtx44ext.h"
#include "dolphin/os.h"
#include <math.h>
static f32 mtxUnit[] = {0.0f, 1.0f, 0.5f, 3.0f};
void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) {
f32 tmp;
#line 0x69
ASSERTMSG((m != 0), "MTXFrustum(): NULL Mtx44Ptr 'm' ");
ASSERTMSG((t != b), "MTXFrustum(): 't' and 'b' clipping planes are equal ");
ASSERTMSG((l != r), "MTXFrustum(): 'l' and 'r' clipping planes are equal ");
ASSERTMSG((n != f), "MTXFrustum(): 'n' and 'f' clipping planes are equal ");
tmp = 1.0f / (r - l);
m[0][0] = (2 * n) * tmp;
m[0][1] = 0.0f;
m[0][2] = (r + l) * tmp;
m[0][3] = 0.0f;
tmp = 1.0f / (t - b);
m[1][0] = 0.0f;
m[1][1] = (2 * n) * tmp;
m[1][2] = (t + b) * tmp;
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;
}
void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f) {
f32 angle;
f32 cot;
f32 tmp;
#line 0xb3
ASSERTMSG((m != 0), "MTXPerspective(): NULL Mtx44Ptr 'm' ");
ASSERTMSG(((fovY > 0.0) && (fovY < 180.0)), "MTXPerspective(): 'fovY' out of range ");
ASSERTMSG((aspect != 0), "MTXPerspective(): 'aspect' is 0 ");
angle = fovY * 0.5f;
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;
}
void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f) {
f32 tmp;
#line 0xfe
ASSERTMSG((m != 0), "MTXOrtho(): NULL Mtx44Ptr 'm' ");
ASSERTMSG((t != b), "MTXOrtho(): 't' and 'b' clipping planes are equal ");
ASSERTMSG((l != r), "MTXOrtho(): 'l' and 'r' clipping planes are equal ");
ASSERTMSG((n != f), "MTXOrtho(): 'n' and 'f' clipping planes are equal ");
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;
}
void C_MTX44Identity(Mtx44 m) {
#line 0x144
ASSERTMSG((m != 0), "MTX44Identity(): NULL Mtx44 'm' ");
m[0][0] = 1.0f;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
m[0][3] = 0.0f;
m[1][0] = 0.0f;
m[1][1] = 1.0f;
m[1][2] = 0.0f;
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;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
}
#ifdef GEKKO
void PSMTX44Identity(register Mtx44 m) {
register f32 c1 = 1.0F;
register f32 c0 = 0.0F;
asm
{
stfs c1, 0(m);
psq_st c0, 4(m), 0, 0;
psq_st c0, 12(m), 0, 0;
stfs c1, 20(m);
psq_st c0, 24(m), 0, 0;
psq_st c0, 32(m), 0, 0;
stfs c1, 40(m);
psq_st c0, 44(m), 0, 0;
psq_st c0, 52(m), 0, 0;
stfs c1, 60(m);
}
}
#endif // GEKKO
void C_MTX44Copy(const Mtx44 src, Mtx44 dst) {
#line 0x17e
ASSERTMSG((src != 0), "MTX44Copy(): NULL Mtx44Ptr 'src' ");
ASSERTMSG((dst != 0), "MTX44Copy(): NULL Mtx44Ptr 'dst' ");
if (src == dst) {
return;
}
dst[0][0] = src[0][0];
dst[0][1] = src[0][1];
dst[0][2] = src[0][2];
dst[0][3] = src[0][3];
dst[1][0] = src[1][0];
dst[1][1] = src[1][1];
dst[1][2] = src[1][2];
dst[1][3] = src[1][3];
dst[2][0] = src[2][0];
dst[2][1] = src[2][1];
dst[2][2] = src[2][2];
dst[2][3] = src[2][3];
dst[3][0] = src[3][0];
dst[3][1] = src[3][1];
dst[3][2] = src[3][2];
dst[3][3] = src[3][3];
}
#ifdef GEKKO
asm void PSMTX44Copy(const register Mtx44 src, register Mtx44 dst) {
nofralloc;
psq_l fp1, 0(src), 0, 0;
psq_st fp1, 0(dst), 0, 0;
psq_l fp1, 8(src), 0, 0;
psq_st fp1, 8(dst), 0, 0;
psq_l fp1, 16(src), 0, 0;
psq_st fp1, 16(dst), 0, 0;
psq_l fp1, 24(src), 0, 0;
psq_st fp1, 24(dst), 0, 0;
psq_l fp1, 32(src), 0, 0;
psq_st fp1, 32(dst), 0, 0;
psq_l fp1, 40(src), 0, 0;
psq_st fp1, 40(dst), 0, 0;
psq_l fp1, 48(src), 0, 0;
psq_st fp1, 48(dst), 0, 0;
psq_l fp1, 56(src), 0, 0;
psq_st fp1, 56(dst), 0, 0;
blr;
}
#endif
void C_MTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab) {
Mtx44 mTmp;
Mtx44Ptr m;
#line 0x1c6
ASSERTMSG((a != 0), "MTX44Concat(): NULL Mtx44Ptr 'a' ");
ASSERTMSG((b != 0), "MTX44Concat(): NULL Mtx44Ptr 'b' ");
ASSERTMSG((ab != 0), "MTX44Concat(): NULL Mtx44Ptr 'ab' ");
if ((ab == a) || (ab == b)) {
m = mTmp;
} else {
m = ab;
}
m[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0] + a[0][3] * b[3][0];
m[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1] + a[0][3] * b[3][1];
m[0][2] = a[0][0] * b[0][2] + a[0][1] * b[1][2] + a[0][2] * b[2][2] + a[0][3] * b[3][2];
m[0][3] = a[0][0] * b[0][3] + a[0][1] * b[1][3] + a[0][2] * b[2][3] + a[0][3] * b[3][3];
m[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0] + a[1][3] * b[3][0];
m[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1] + a[1][3] * b[3][1];
m[1][2] = a[1][0] * b[0][2] + a[1][1] * b[1][2] + a[1][2] * b[2][2] + a[1][3] * b[3][2];
m[1][3] = a[1][0] * b[0][3] + a[1][1] * b[1][3] + a[1][2] * b[2][3] + a[1][3] * b[3][3];
m[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0] + a[2][3] * b[3][0];
m[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1] + a[2][3] * b[3][1];
m[2][2] = a[2][0] * b[0][2] + a[2][1] * b[1][2] + a[2][2] * b[2][2] + a[2][3] * b[3][2];
m[2][3] = a[2][0] * b[0][3] + a[2][1] * b[1][3] + a[2][2] * b[2][3] + a[2][3] * b[3][3];
m[3][0] = a[3][0] * b[0][0] + a[3][1] * b[1][0] + a[3][2] * b[2][0] + a[3][3] * b[3][0];
m[3][1] = a[3][0] * b[0][1] + a[3][1] * b[1][1] + a[3][2] * b[2][1] + a[3][3] * b[3][1];
m[3][2] = a[3][0] * b[0][2] + a[3][1] * b[1][2] + a[3][2] * b[2][2] + a[3][3] * b[3][2];
m[3][3] = a[3][0] * b[0][3] + a[3][1] * b[1][3] + a[3][2] * b[2][3] + a[3][3] * b[3][3];
if (m == mTmp) {
C_MTX44Copy(mTmp, ab);
}
}
#ifdef GEKKO
asm void PSMTX44Concat(const register Mtx44 a, const register Mtx44 b, register Mtx44 ab) {
nofralloc;
psq_l fp0, 0(a), 0, 0;
psq_l fp2, 0(b), 0, 0;
ps_muls0 fp6, fp2, fp0;
psq_l fp3, 16(b), 0, 0;
psq_l fp4, 32(b), 0, 0;
ps_madds1 fp6, fp3, fp0, fp6;
psq_l fp1, 8(a), 0, 0;
psq_l fp5, 48(b), 0, 0;
ps_madds0 fp6, fp4, fp1, fp6;
psq_l fp0, 16(a), 0, 0;
ps_madds1 fp6, fp5, fp1, fp6;
psq_l fp1, 24(a), 0, 0;
ps_muls0 fp8, fp2, fp0;
ps_madds1 fp8, fp3, fp0, fp8;
psq_l fp0, 32(a), 0, 0;
ps_madds0 fp8, fp4, fp1, fp8;
ps_madds1 fp8, fp5, fp1, fp8;
psq_l fp1, 40(a), 0, 0;
ps_muls0 fp10, fp2, fp0;
ps_madds1 fp10, fp3, fp0, fp10;
psq_l fp0, 48(a), 0, 0;
ps_madds0 fp10, fp4, fp1, fp10;
ps_madds1 fp10, fp5, fp1, fp10;
psq_l fp1, 56(a), 0, 0;
ps_muls0 fp12, fp2, fp0;
psq_l fp2, 8(b), 0, 0;
ps_madds1 fp12, fp3, fp0, fp12;
psq_l fp0, 0(a), 0, 0;
ps_madds0 fp12, fp4, fp1, fp12;
psq_l fp3, 24(b), 0, 0;
ps_madds1 fp12, fp5, fp1, fp12;
psq_l fp1, 8(a), 0, 0;
ps_muls0 fp7, fp2, fp0;
psq_l fp4, 40(b), 0, 0;
ps_madds1 fp7, fp3, fp0, fp7;
psq_l fp5, 56(b), 0, 0;
ps_madds0 fp7, fp4, fp1, fp7;
psq_l fp0, 16(a), 0, 0;
ps_madds1 fp7, fp5, fp1, fp7;
psq_l fp1, 24(a), 0, 0;
ps_muls0 fp9, fp2, fp0;
psq_st fp6, 0(ab), 0, 0;
ps_madds1 fp9, fp3, fp0, fp9;
psq_l fp0, 32(a), 0, 0;
ps_madds0 fp9, fp4, fp1, fp9;
psq_st fp8, 16(ab), 0, 0;
ps_madds1 fp9, fp5, fp1, fp9;
psq_l fp1, 40(a), 0, 0;
ps_muls0 fp11, fp2, fp0;
psq_st fp10, 32(ab), 0, 0;
ps_madds1 fp11, fp3, fp0, fp11;
psq_l fp0, 48(a), 0, 0;
ps_madds0 fp11, fp4, fp1, fp11;
psq_st fp12, 48(ab), 0, 0;
ps_madds1 fp11, fp5, fp1, fp11;
psq_l fp1, 56(a), 0, 0;
ps_muls0 fp13, fp2, fp0;
psq_st fp7, 8(ab), 0, 0;
ps_madds1 fp13, fp3, fp0, fp13;
psq_st fp9, 24(ab), 0, 0;
ps_madds0 fp13, fp4, fp1, fp13;
psq_st fp11, 40(ab), 0, 0;
ps_madds1 fp13, fp5, fp1, fp13;
psq_st fp13, 56(ab), 0, 0;
blr
}
#endif
void C_MTX44Transpose(const Mtx44 src, Mtx44 xPose) {
Mtx44 mTmp;
Mtx44Ptr m;
#line 0x27d
ASSERTMSG((src != 0), "MTX44Transpose(): NULL Mtx44Ptr 'src' ");
ASSERTMSG((xPose != 0), "MTX44Transpose(): NULL Mtx44Ptr 'xPose' ");
if (src == xPose) {
m = mTmp;
} else {
m = xPose;
}
m[0][0] = src[0][0];
m[0][1] = src[1][0];
m[0][2] = src[2][0];
m[0][3] = src[3][0];
m[1][0] = src[0][1];
m[1][1] = src[1][1];
m[1][2] = src[2][1];
m[1][3] = src[3][1];
m[2][0] = src[0][2];
m[2][1] = src[1][2];
m[2][2] = src[2][2];
m[2][3] = src[3][2];
m[3][0] = src[0][3];
m[3][1] = src[1][3];
m[3][2] = src[2][3];
m[3][3] = src[3][3];
if (m == mTmp) {
MTX44Copy(mTmp, xPose);
}
}
#ifdef GEKKO
asm void PSMTX44Transpose(const register Mtx44 src, register Mtx44 xPose) {
nofralloc;
psq_l fp0, 0(src), 0, 0;
psq_l fp1, 16(src), 0, 0;
ps_merge00 fp4, fp0, fp1;
psq_l fp2, 8(src), 0, 0;
psq_st fp4, 0(xPose), 0, 0;
ps_merge11 fp5, fp0, fp1;
psq_l fp3, 24(src), 0, 0;
psq_st fp5, 16(xPose), 0, 0;
ps_merge00 fp4, fp2, fp3;
psq_l fp0, 32(src), 0, 0;
psq_st fp4, 32(xPose), 0, 0;
ps_merge11 fp5, fp2, fp3;
psq_l fp1, 48(src), 0, 0;
psq_st fp5, 48(xPose), 0, 0;
ps_merge00 fp4, fp0, fp1;
psq_l fp2, 40(src), 0, 0;
psq_st fp4, 8(xPose), 0, 0;
ps_merge11 fp5, fp0, fp1;
psq_l fp3, 56(src), 0, 0;
psq_st fp5, 24(xPose), 0, 0;
ps_merge00 fp4, fp2, fp3;
psq_st fp4, 40(xPose), 0, 0;
ps_merge11 fp5, fp2, fp3;
psq_st fp5, 56(xPose), 0, 0;
blr;
}
#endif
#define SWAP(a, b) \
{ \
f32 tmp; \
tmp = (a); \
(a) = (b); \
(b) = tmp; \
}
u32 C_MTX44Inverse(const Mtx44 src, Mtx44 inv) {
Mtx44 gjm;
s32 i, j, k;
f32 w;
#line 0x2de
ASSERTMSG((src != 0), "MTX44Inverse(): NULL Mtx44Ptr 'src' ");
ASSERTMSG((inv != 0), "MTX44Inverse(): NULL Mtx44Ptr 'inv' ");
MTX44Copy(src, gjm);
MTX44Identity(inv);
for (i = 0; i < 4; ++i) {
f32 max = 0.0f;
s32 swp = i;
for (k = i; k < 4; k++) {
f32 ftmp;
ftmp = fabsf(gjm[k][i]);
if (ftmp > max) {
max = ftmp;
swp = k;
}
}
if (max == 0.0f) {
return 0;
}
if (swp != i) {
for (k = 0; k < 4; k++) {
SWAP(gjm[i][k], gjm[swp][k]);
SWAP(inv[i][k], inv[swp][k]);
}
}
w = 1.0F / gjm[i][i];
for (j = 0; j < 4; ++j) {
gjm[i][j] *= w;
inv[i][j] *= w;
}
for (k = 0; k < 4; ++k) {
if (k == i)
continue;
w = gjm[k][i];
for (j = 0; j < 4; ++j) {
gjm[k][j] -= gjm[i][j] * w;
inv[k][j] -= inv[i][j] * w;
}
}
}
return 1;
}
#undef SWAPF
#undef NUM
void C_MTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT) {
#line 0x343
ASSERTMSG((m != 0), "MTX44Trans(): NULL Mtx44Ptr 'm' ");
m[0][0] = 1.0f;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
m[0][3] = xT;
m[1][0] = 0.0f;
m[1][1] = 1.0f;
m[1][2] = 0.0f;
m[1][3] = yT;
m[2][0] = 0.0f;
m[2][1] = 0.0f;
m[2][2] = 1.0f;
m[2][3] = zT;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
}
#ifdef GEKKO
void PSMTX44Trans(register Mtx44 m, register f32 xT, register f32 yT, register f32 zT) {
register f32 c_zero = 0.0f;
register f32 c_one = 1.0f;
register f32 c_01;
asm
{
stfs xT, 12(m);
stfs yT, 28(m);
ps_merge00 c_01, c_zero, c_one;
stfs zT, 44(m);
psq_st c_one, 0(m), 1, 0;
psq_st c_zero, 4(m), 0, 0;
psq_st c_01, 16(m), 0, 0;
psq_st c_zero, 24(m), 1, 0;
psq_st c_zero, 32(m), 0, 0;
psq_st c_one, 40(m), 1, 0;
psq_st c_zero, 48(m), 0, 0;
psq_st c_01, 56(m), 0, 0;
}
}
#endif
void C_MTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT) {
#line 0x383
ASSERTMSG((src != 0), "MTX44TransApply(): NULL Mtx44Ptr 'src' ");
ASSERTMSG((dst != 0), "MTX44TransApply(): NULL Mtx44Ptr 'dst' ");
if (src != dst) {
dst[0][0] = src[0][0];
dst[0][1] = src[0][1];
dst[0][2] = src[0][2];
dst[1][0] = src[1][0];
dst[1][1] = src[1][1];
dst[1][2] = src[1][2];
dst[2][0] = src[2][0];
dst[2][1] = src[2][1];
dst[2][2] = src[2][2];
dst[3][0] = src[3][0];
dst[3][1] = src[3][1];
dst[3][2] = src[3][2];
dst[3][3] = src[3][3];
}
dst[0][3] = src[0][3] + xT;
dst[1][3] = src[1][3] + yT;
dst[2][3] = src[2][3] + zT;
}
#ifdef GEKKO
asm void PSMTX44TransApply(const register Mtx44 src, register Mtx44 dst, register f32 xT,
register f32 yT, register f32 zT) {
nofralloc;
psq_l fp4, 0(src), 0, 0;
frsp xT, xT;
psq_l fp5, 8(src), 0, 0;
frsp yT, yT;
psq_l fp6, 16(src), 0, 0;
frsp zT, zT;
psq_l fp7, 24(src), 0, 0;
psq_st fp4, 0(dst), 0, 0;
ps_sum1 fp5, xT, fp5, fp5;
psq_l fp4, 40(src), 0, 0;
psq_st fp6, 16(dst), 0, 0;
ps_sum1 fp7, yT, fp7, fp7;
psq_l fp8, 32(src), 0, 0;
psq_st fp5, 8(dst), 0, 0;
ps_sum1 fp4, zT, fp4, fp4;
psq_st fp7, 24(dst), 0, 0;
psq_st fp8, 32(dst), 0, 0;
psq_l fp5, 48(src), 0, 0;
psq_l fp6, 56(src), 0, 0;
psq_st fp4, 40(dst), 0, 0;
psq_st fp5, 48(dst), 0, 0;
psq_st fp6, 56(dst), 0, 0;
blr;
}
#endif // GEKKO
void C_MTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS) {
#line 0x3d0
ASSERTMSG((m != 0), "MTX44Scale(): NULL Mtx44Ptr 'm' ");
m[0][0] = xS;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
m[0][3] = 0.0f;
m[1][0] = 0.0f;
m[1][1] = yS;
m[1][2] = 0.0f;
m[1][3] = 0.0f;
m[2][0] = 0.0f;
m[2][1] = 0.0f;
m[2][2] = zS;
m[2][3] = 0.0f;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
}
#ifdef GEKKO
void PSMTX44Scale(register Mtx44 m, register f32 xS, register f32 yS, register f32 zS) {
register f32 c_zero = 0.0F;
register f32 c_one = 1.0F;
asm
{
stfs xS, 0(m);
psq_st c_zero, 4(m), 0, 0;
psq_st c_zero, 12(m), 0, 0;
stfs yS, 20(m);
psq_st c_zero, 24(m), 0, 0;
psq_st c_zero, 32(m), 0, 0;
stfs zS, 40(m);
psq_st c_zero, 44(m), 0, 0;
psq_st c_zero, 52(m), 0, 0;
stfs c_one, 60(m);
}
}
#endif // GEKKO
void C_MTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS) {
#line 0x40c
ASSERTMSG((src != 0), "MTX44ScaleApply(): NULL Mtx44Ptr 'src' ");
ASSERTMSG((dst != 0), "MTX44ScaleApply(): NULL Mtx44Ptr 'dst' ");
dst[0][0] = src[0][0] * xS;
dst[0][1] = src[0][1] * xS;
dst[0][2] = src[0][2] * xS;
dst[0][3] = src[0][3] * xS;
dst[1][0] = src[1][0] * yS;
dst[1][1] = src[1][1] * yS;
dst[1][2] = src[1][2] * yS;
dst[1][3] = src[1][3] * yS;
dst[2][0] = src[2][0] * zS;
dst[2][1] = src[2][1] * zS;
dst[2][2] = src[2][2] * zS;
dst[2][3] = src[2][3] * zS;
dst[3][0] = src[3][0];
dst[3][1] = src[3][1];
dst[3][2] = src[3][2];
dst[3][3] = src[3][3];
}
#ifdef GEKKO
asm void PSMTX44ScaleApply(const register Mtx44 src, register Mtx44 dst, register f32 xS,
register f32 yS, register f32 zS) {
nofralloc;
psq_l fp4, 0(src), 0, 0;
frsp xS, xS;
psq_l fp5, 8(src), 0, 0;
frsp yS, yS;
psq_l fp6, 16(src), 0, 0;
ps_muls0 fp4, fp4, xS;
psq_l fp7, 24(src), 0, 0;
ps_muls0 fp5, fp5, xS;
psq_l fp8, 32(src), 0, 0;
frsp zS, zS;
psq_st fp4, 0(dst), 0, 0;
ps_muls0 fp6, fp6, yS;
psq_l fp9, 40(src), 0, 0;
psq_st fp5, 8(dst), 0, 0;
ps_muls0 fp7, fp7, yS;
psq_l fp10, 48(src), 0, 0;
psq_st fp6, 16(dst), 0, 0;
ps_muls0 fp8, fp8, zS;
psq_l fp11, 56(src), 0, 0;
psq_st fp7, 24(dst), 0, 0;
ps_muls0 fp9, fp9, zS;
psq_st fp8, 32(dst), 0, 0;
psq_st fp9, 40(dst), 0, 0;
psq_st fp10, 48(dst), 0, 0;
psq_st fp11, 56(dst), 0, 0;
blr;
}
#endif // GEKKO
void C_MTX44RotRad(Mtx44 m, char axis, f32 rad) {
f32 sinA, cosA;
#line 0x45e
ASSERTMSG((m != 0), "MTX44RotRad(): NULL Mtx44Ptr 'm' ");
sinA = sinf(rad);
cosA = cosf(rad);
C_MTX44RotTrig(m, axis, sinA, cosA);
}
#ifdef GEKKO
void PSMTX44RotRad(Mtx44 m, char axis, f32 rad) {
f32 sinA, cosA;
sinA = sinf(rad);
cosA = cosf(rad);
PSMTX44RotTrig(m, axis, sinA, cosA);
}
#endif
void C_MTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA) {
#line 0x48b
ASSERTMSG((m != 0), "MTX44RotTrig(): NULL Mtx44Ptr 'm' ");
axis |= 0x20;
switch (axis) {
case 'x':
m[0][0] = 1.0f;
m[0][1] = 0.0f;
m[0][2] = 0.0f;
m[0][3] = 0.0f;
m[1][0] = 0.0f;
m[1][1] = cosA;
m[1][2] = -sinA;
m[1][3] = 0.0f;
m[2][0] = 0.0f;
m[2][1] = sinA;
m[2][2] = cosA;
m[2][3] = 0.0f;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
break;
case 'y':
m[0][0] = cosA;
m[0][1] = 0.0f;
m[0][2] = sinA;
m[0][3] = 0.0f;
m[1][0] = 0.0f;
m[1][1] = 1.0f;
m[1][2] = 0.0f;
m[1][3] = 0.0f;
m[2][0] = -sinA;
m[2][1] = 0.0f;
m[2][2] = cosA;
m[2][3] = 0.0f;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
break;
case 'z':
m[0][0] = cosA;
m[0][1] = -sinA;
m[0][2] = 0.0f;
m[0][3] = 0.0f;
m[1][0] = sinA;
m[1][1] = cosA;
m[1][2] = 0.0f;
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;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
break;
default:
#line 0x4a7
ASSERTMSG(0, "MTX44RotTrig(): invalid 'axis' value ");
break;
}
}
#ifdef GEKKO
void PSMTX44RotTrig(register Mtx44 m, register char axis, register f32 sinA, register f32 cosA) {
register f32 ftmp0, ftmp1, ftmp2, ftmp3, ftmp4;
register f32 c_zero, c_one;
c_zero = 0.0F;
c_one = 1.0F;
asm
{
frsp sinA, sinA
ori axis, axis, 0x20
frsp cosA, cosA
cmplwi axis, 'x'; // if 'x'
beq _x;
cmplwi axis, 'y'; // if 'y'
beq _y;
cmplwi axis, 'z'; // if 'z'
beq _z;
b _break;
_x:
psq_st c_one, 0(m), 1, 0;
psq_st c_zero, 4(m), 0, 0;
ps_neg ftmp0, sinA;
psq_st c_zero, 12(m), 0, 0;
ps_merge00 ftmp1, sinA, cosA;
psq_st c_zero, 28(m), 0, 0;
ps_merge00 ftmp0, cosA, ftmp0;
psq_st c_zero, 44(m), 0, 0;
psq_st c_zero, 52(m), 0, 0;
psq_st ftmp1, 36(m), 0, 0;
psq_st ftmp0, 20(m), 0, 0;
psq_st c_one, 60(m), 1, 0;
b _break;
_y:
ps_merge00 ftmp1, cosA, c_zero;
psq_st c_zero, 48(m), 0, 0;
ps_neg ftmp0, sinA;
psq_st c_zero, 24(m), 0, 0;
ps_merge00 ftmp3, c_zero, c_one;
psq_st ftmp1, 0(m), 0, 0;
ps_merge00 ftmp4, ftmp0, c_zero;
ps_merge00 ftmp2, sinA, c_zero;
psq_st ftmp3, 16(m), 0, 0;
psq_st ftmp2, 8(m), 0, 0;
psq_st ftmp4, 32(m), 0, 0;
psq_st ftmp1, 40(m), 0, 0;
psq_st ftmp3, 56(m), 0, 0;
b _break;
_z:
psq_st c_zero, 8(m), 0, 0;
ps_neg ftmp0, sinA;
psq_st c_zero, 24(m), 0, 0;
ps_merge00 ftmp1, sinA, cosA;
psq_st c_zero, 32(m), 0, 0;
ps_merge00 ftmp2, c_one, c_zero;
psq_st c_zero, 48(m), 0, 0;
ps_merge00 ftmp3, c_zero, c_one;
psq_st ftmp1, 16(m), 0, 0;
ps_merge00 ftmp4, cosA, ftmp0;
psq_st ftmp2, 40(m), 0, 0;
psq_st ftmp3, 56(m), 0, 0;
psq_st ftmp4, 0(m), 0, 0;
_break:
}
}
#endif // GEKKO
void C_MTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad) {
Vec vN;
f32 s, c;
f32 t;
f32 x, y, z;
f32 xSq, ySq, zSq;
#line 0x514
ASSERTMSG((m != 0), "MTX44RotAxisRad(): NULL Mtx44Ptr 'm' ");
ASSERTMSG((axis != 0), "MTX44RotAxisRad(): NULL VecPtr 'axis' ");
s = sinf(rad);
c = cosf(rad);
t = 1.0f - c;
C_VECNormalize(axis, &vN);
x = vN.x;
y = vN.y;
z = vN.z;
xSq = x * x;
ySq = y * y;
zSq = z * z;
m[0][0] = (t * xSq) + (c);
m[0][1] = (t * x * y) - (s * z);
m[0][2] = (t * x * z) + (s * y);
m[0][3] = 0.0f;
m[1][0] = (t * x * y) + (s * z);
m[1][1] = (t * ySq) + (c);
m[1][2] = (t * y * z) - (s * x);
m[1][3] = 0.0f;
m[2][0] = (t * x * z) - (s * y);
m[2][1] = (t * y * z) + (s * x);
m[2][2] = (t * zSq) + (c);
m[2][3] = 0.0f;
m[3][0] = 0.0f;
m[3][1] = 0.0f;
m[3][2] = 0.0f;
m[3][3] = 1.0f;
}
#ifdef GEKKO
static void __PSMTX44RotAxisRadInternal(register Mtx44 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;
tmp9 = 0.5F;
tmp8 = 3.0F;
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;
ps_merge00 tmp7, fc0, tmp7;
fmuls tmp2, tmp5, tmp5;
fmuls tmp3, tmp5, tmp9;
psq_st fc0, 48(m), 0, 0;
fnmsubs tmp2, tmp2, tmp4, tmp8;
fmuls tmp5, tmp2, tmp3;
psq_st tmp7, 56(m), 0, 0;
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;
}
}
void PSMTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad) {
f32 sinT, cosT;
sinT = sinf(rad);
cosT = cosf(rad);
__PSMTX44RotAxisRadInternal(m, axis, sinT, cosT);
}
#endif // GEKKO

View File

@ -0,0 +1 @@
#include "dolphin/mtx.h"

View File

0
src/Dolphin/mtx/mtxvec.c Normal file
View File

1
src/Dolphin/mtx/psmtx.c Normal file
View File

@ -0,0 +1 @@
#include "dolphin/mtx.h"

0
src/Dolphin/mtx/quat.c Normal file
View File

1
src/Dolphin/mtx/vec.c Normal file
View File

@ -0,0 +1 @@
#include "dolphin/mtx.h"

View File

@ -77,7 +77,7 @@ void OSProtectRange(u32 chan, void* addr, u32 nBytes, u32 control) {
OSRestoreInterrupts(enabled);
}
asm void Config24MB() {
static asm void Config24MB() {
// clang-format off
nofralloc
@ -125,7 +125,7 @@ asm void Config24MB() {
// clang-format on
}
asm void Config48MB() {
static asm void Config48MB() {
// clang-format off
nofralloc
@ -173,7 +173,7 @@ asm void Config48MB() {
// clang-format on
}
asm void RealMode(register u32 addr) {
static asm void RealMode(register u32 addr) {
// clang-format off
nofralloc
clrlwi r3, r3, 2

View File

@ -1,170 +1,202 @@
#include <dolphin/thp.h>
/*
* --INFO--
* Address: 800FE6B0
* Size: 0003B0
*/
u32 THPAudioDecode(s16* audioBuffer, u8* audioFrame, s32 flag) {
THPAudioRecordHeader* header;
THPAudioDecodeInfo decInfo;
u8 *left, *right;
s16 *decLeftPtr, *decRightPtr;
s16 yn1, yn2;
s32 i;
s32 step;
s32 sample;
s64 yn;
u32 THPAudioDecode(s16 *audioBuffer, u8 *audioFrame, s32 flag)
{
THPAudioRecordHeader *header;
THPAudioDecodeInfo decInfo;
u8 *left, *right;
s16 *decLeftPtr, *decRightPtr;
s16 yn1, yn2;
s32 i;
s32 step;
s32 sample;
s64 yn;
if (audioBuffer == NULL || audioFrame == NULL) {
return 0;
}
header = (THPAudioRecordHeader*)audioFrame;
left = audioFrame + sizeof(THPAudioRecordHeader);
right = left + header->offsetNextChannel;
if (flag == 1) {
decRightPtr = audioBuffer;
decLeftPtr = audioBuffer + header->sampleSize;
step = 1;
} else {
decRightPtr = audioBuffer;
decLeftPtr = audioBuffer + 1;
step = 2;
}
if (header->offsetNextChannel == 0) {
__THPAudioInitialize(&decInfo, left);
yn1 = header->lYn1;
yn2 = header->lYn2;
for (i = 0; i < header->sampleSize; i++) {
sample = __THPAudioGetNewSample(&decInfo);
yn = header->lCoef[decInfo.predictor][1] * yn2;
yn += header->lCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
if (sample > 0x8000) {
yn += 0x10000;
} else if ((sample == 0x8000) && ((yn & 0x10000) != 0)) {
yn += 0x10000;
}
yn += 0x8000;
if (yn > 2147483647LL) {
yn = 2147483647LL;
}
if (yn < -2147483648LL) {
yn = -2147483648LL;
}
*decLeftPtr = (s16)(yn >> 16);
decLeftPtr += step;
*decRightPtr = (s16)(yn >> 16);
decRightPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
}
} else {
__THPAudioInitialize(&decInfo, left);
yn1 = header->lYn1;
yn2 = header->lYn2;
for (i = 0; i < header->sampleSize; i++) {
sample = __THPAudioGetNewSample(&decInfo);
yn = header->lCoef[decInfo.predictor][1] * yn2;
yn += header->lCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
yn += 0x8000;
if (yn > 2147483647LL) {
yn = 2147483647LL;
}
if (yn < -2147483648LL) {
yn = -2147483648LL;
}
*decLeftPtr = (s16)(yn >> 16);
decLeftPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
if (audioBuffer == NULL || audioFrame == NULL)
{
return 0;
}
__THPAudioInitialize(&decInfo, right);
header = (THPAudioRecordHeader *)audioFrame;
left = audioFrame + sizeof(THPAudioRecordHeader);
right = left + header->offsetNextChannel;
yn1 = header->rYn1;
yn2 = header->rYn2;
for (i = 0; i < header->sampleSize; i++) {
sample = __THPAudioGetNewSample(&decInfo);
yn = header->rCoef[decInfo.predictor][1] * yn2;
yn += header->rCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
yn += 0x8000;
if (yn > 2147483647LL) {
yn = 2147483647LL;
}
if (yn < -2147483648LL) {
yn = -2147483648LL;
}
*decRightPtr = (s16)(yn >> 16);
decRightPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
if (flag == 1)
{
decRightPtr = audioBuffer;
decLeftPtr = audioBuffer + header->sampleSize;
step = 1;
}
else
{
decRightPtr = audioBuffer;
decLeftPtr = audioBuffer + 1;
step = 2;
}
}
return header->sampleSize;
if (header->offsetNextChannel == 0)
{
__THPAudioInitialize(&decInfo, left);
yn1 = header->lYn1;
yn2 = header->lYn2;
for (i = 0; i < header->sampleSize; i++)
{
sample = __THPAudioGetNewSample(&decInfo);
yn = header->lCoef[decInfo.predictor][1] * yn2;
yn += header->lCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
if ((u16)(yn & 0xffff) > 0x8000)
{
yn += 0x10000;
}
else if ((u16)(yn & 0xffff) == 0x8000)
{
if ((yn & 0x10000))
yn += 0x10000;
}
if (yn > 2147483647LL)
{
yn = 2147483647LL;
}
if (yn < -2147483648LL)
{
yn = -2147483648LL;
}
*decLeftPtr = (s16)(yn >> 16);
decLeftPtr += step;
*decRightPtr = (s16)(yn >> 16);
decRightPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
}
}
else
{
__THPAudioInitialize(&decInfo, left);
yn1 = header->lYn1;
yn2 = header->lYn2;
for (i = 0; i < header->sampleSize; i++)
{
sample = __THPAudioGetNewSample(&decInfo);
yn = header->lCoef[decInfo.predictor][1] * yn2;
yn += header->lCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
if ((u16)(yn & 0xffff) > 0x8000)
{
yn += 0x10000;
}
else
{
if ((u16)(yn & 0xffff) == 0x8000)
{
if ((yn & 0x10000))
yn += 0x10000;
}
}
if (yn > 2147483647LL)
{
yn = 2147483647LL;
}
if (yn < -2147483648LL)
{
yn = -2147483648LL;
}
*decLeftPtr = (s16)(yn >> 16);
decLeftPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
}
__THPAudioInitialize(&decInfo, right);
yn1 = header->rYn1;
yn2 = header->rYn2;
for (i = 0; i < header->sampleSize; i++)
{
sample = __THPAudioGetNewSample(&decInfo);
yn = header->rCoef[decInfo.predictor][1] * yn2;
yn += header->rCoef[decInfo.predictor][0] * yn1;
yn += (sample << decInfo.scale) << 11;
yn <<= 5;
if ((u16)(yn & 0xffff) > 0x8000)
{
yn += 0x10000;
}
else
{
if ((u16)(yn & 0xffff) == 0x8000)
{
if ((yn & 0x10000))
yn += 0x10000;
}
}
if (yn > 2147483647LL)
{
yn = 2147483647LL;
}
if (yn < -2147483648LL)
{
yn = -2147483648LL;
}
*decRightPtr = (s16)(yn >> 16);
decRightPtr += step;
yn2 = yn1;
yn1 = (s16)(yn >> 16);
}
}
return header->sampleSize;
}
/*
* --INFO--
* Address: 800FEA60
* Size: 000090
*/
static s32 __THPAudioGetNewSample(THPAudioDecodeInfo* info) {
s32 sample;
static s32 __THPAudioGetNewSample(THPAudioDecodeInfo *info)
{
s32 sample;
if (!(info->offsetNibbles & 0x0f)) {
if (!(info->offsetNibbles & 0x0f))
{
info->predictor = (u8)((*(info->encodeData) & 0x70) >> 4);
info->scale = (u8)((*(info->encodeData) & 0xF));
info->encodeData++;
info->offsetNibbles += 2;
}
if (info->offsetNibbles & 0x1)
{
sample = (s32)((*(info->encodeData) & 0xF) << 28) >> 28;
info->encodeData++;
}
else
{
sample = (s32)((*(info->encodeData) & 0xF0) << 24) >> 28;
}
info->offsetNibbles++;
return sample;
}
static void __THPAudioInitialize(THPAudioDecodeInfo *info, u8 *ptr)
{
info->encodeData = ptr;
info->offsetNibbles = 2;
info->predictor = (u8)((*(info->encodeData) & 0x70) >> 4);
info->scale = (u8)((*(info->encodeData) & 0xF));
info->encodeData++;
info->offsetNibbles += 2;
}
if (info->offsetNibbles & 0x1) {
sample = (s32)((*(info->encodeData) & 0xF) << 28) >> 28;
info->encodeData++;
} else {
sample = (s32)((*(info->encodeData) & 0xF0) << 24) >> 28;
}
info->offsetNibbles++;
return sample;
}
/*
* --INFO--
* Address: 800FEAF0
* Size: 00003C
*/
static void __THPAudioInitialize(THPAudioDecodeInfo* info, u8* ptr) {
info->encodeData = ptr;
info->offsetNibbles = 2;
info->predictor = (u8)((*(info->encodeData) & 0x70) >> 4);
info->scale = (u8)((*(info->encodeData) & 0xF));
info->encodeData++;
}

View File

@ -17,7 +17,7 @@
*
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
* OR ANY PART THEREOF.
* OR ANY PART THEREOF.6
*
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if
@ -35,8 +35,8 @@
extern "C" int abs(int);
#include <Kyoto/Audio/g721.h>
static short power2[15] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000};
static short power2[15] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000};
/*
* quan()
@ -46,18 +46,13 @@ static short power2[15] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
*
* Using linear search for simple coding.
*/
static int
quan(
int val,
short *table,
int size)
{
int i;
for (i = 0; i < size; i++)
if (val < *table++)
break;
return (i);
static int quan(int val, short* table, int size) {
int i;
for (i = 0; i < size; i++)
if (val < *table++)
break;
return (i);
}
/*
@ -66,26 +61,20 @@ quan(
* returns the integer product of the 14-bit integer "an" and
* "floating point" representation (4-bit exponent, 6-bit mantessa) "srn".
*/
static int
fmult(
int an,
int srn)
{
short anmag, anexp, anmant;
short wanexp, wanmant;
short retval;
anmag = (an > 0) ? an : ((-an) & 0x1FFF);
anexp = quan(anmag, power2, 15) - 6;
anmant = (anmag == 0) ? 32 :
(anexp >= 0) ? anmag >> anexp : anmag << -anexp;
wanexp = anexp + ((srn >> 6) & 0xF) - 13;
wanmant = (anmant * (srn & 077) + 0x30) >> 4;
retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) :
(wanmant >> -wanexp);
return (((an ^ srn) < 0) ? -retval : retval);
static int fmult(int an, int srn) {
short anmag, anexp, anmant;
short wanexp, wanmant;
short retval;
anmag = (an > 0) ? an : ((-an) & 0x1FFF);
anexp = quan(anmag, power2, 15) - 6;
anmant = (anmag == 0) ? 32 : (anexp >= 0) ? anmag >> anexp : anmag << -anexp;
wanexp = anexp + ((srn >> 6) & 0xF) - 13;
wanmant = (anmant * (srn & 077) + 0x30) >> 4;
retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) : (wanmant >> -wanexp);
return (((an ^ srn) < 0) ? -retval : retval);
}
/*
@ -95,26 +84,24 @@ fmult(
* pointed to by 'state_ptr'.
* All the initial state values are specified in the CCITT G.721 document.
*/
void
g72x_init_state(struct g72x_state *state_ptr)
{
int cnta;
state_ptr->yl = 34816;
state_ptr->yu = 544;
state_ptr->dms = 0;
state_ptr->dml = 0;
state_ptr->ap = 0;
for (cnta = 0; cnta < 2; cnta++) {
state_ptr->a[cnta] = 0;
state_ptr->pk[cnta] = 0;
state_ptr->sr[cnta] = 32;
}
for (cnta = 0; cnta < 6; cnta++) {
state_ptr->b[cnta] = 0;
state_ptr->dq[cnta] = 32;
}
state_ptr->td = 0;
void g72x_init_state(struct g72x_state* state_ptr) {
int cnta;
state_ptr->yl = 34816;
state_ptr->yu = 544;
state_ptr->dms = 0;
state_ptr->dml = 0;
state_ptr->ap = 0;
for (cnta = 0; cnta < 2; cnta++) {
state_ptr->a[cnta] = 0;
state_ptr->pk[cnta] = 0;
state_ptr->sr[cnta] = 32;
}
for (cnta = 0; cnta < 6; cnta++) {
state_ptr->b[cnta] = 0;
state_ptr->dq[cnta] = 32;
}
state_ptr->td = 0;
}
/*
@ -123,17 +110,14 @@ g72x_init_state(struct g72x_state *state_ptr)
* computes the estimated signal from 6-zero predictor.
*
*/
static int
predictor_zero(
struct g72x_state *state_ptr)
{
int i;
int sezi;
sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]);
for (i = 1; i < 6; i++) /* ACCUM */
sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]);
return (sezi);
static int predictor_zero(struct g72x_state* state_ptr) {
int i;
int sezi;
sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]);
for (i = 1; i < 6; i++) /* ACCUM */
sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]);
return (sezi);
}
/*
* predictor_pole()
@ -141,12 +125,9 @@ predictor_zero(
* computes the estimated signal from 2-pole predictor.
*
*/
static int
predictor_pole(
struct g72x_state *state_ptr)
{
return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) +
fmult(state_ptr->a[0] >> 2, state_ptr->sr[0]));
static int predictor_pole(struct g72x_state* state_ptr) {
return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) +
fmult(state_ptr->a[0] >> 2, state_ptr->sr[0]));
}
/*
* step_size()
@ -154,26 +135,23 @@ predictor_pole(
* computes the quantization step size of the adaptive quantizer.
*
*/
static long
step_size(
struct g72x_state *state_ptr)
{
long y;
long dif;
long al;
if (state_ptr->ap >= 256)
return (state_ptr->yu);
else {
y = state_ptr->yl >> 6;
dif = state_ptr->yu - y;
al = state_ptr->ap >> 2;
if (dif > 0)
y += (dif * al) >> 6;
else if (dif < 0)
y += (dif * al + 0x3F) >> 6;
return (y);
}
static long step_size(struct g72x_state* state_ptr) {
long y;
long dif;
long al;
if (state_ptr->ap >= 256)
return (state_ptr->yu);
else {
y = state_ptr->yl >> 6;
dif = state_ptr->yu - y;
al = state_ptr->ap >> 2;
if (dif > 0)
y += (dif * al) >> 6;
else if (dif < 0)
y += (dif * al + 0x3F) >> 6;
return (y);
}
}
/*
@ -183,250 +161,244 @@ step_size(
* codeword 'i' and quantization step size scale factor 'y'.
* Multiplication is performed in log base 2 domain as addition.
*/
static int
reconstruct(
int sign, /* 0 for non-negative value */
int dqln, /* G.72x codeword */
int y) /* Step size multiplier */
static int reconstruct(int sign, /* 0 for non-negative value */
int dqln, /* G.72x codeword */
int y) /* Step size multiplier */
{
short dql; /* Log of 'dq' magnitude */
short dex; /* Integer part of log */
short dqt;
short dq; /* Reconstructed difference signal sample */
dql = dqln + (y >> 2); /* ADDA */
if (dql < 0) {
return ((sign) ? -0x8000 : 0);
} else { /* ANTILOG */
dex = (dql >> 7) & 15;
dqt = 128 + (dql & 127);
dq = (dqt << 7) >> (14 - dex);
return ((sign) ? (dq - 0x8000) : dq);
}
}
short dql; /* Log of 'dq' magnitude */
short dex; /* Integer part of log */
short dqt;
short dq; /* Reconstructed difference signal sample */
dql = dqln + (y >> 2); /* ADDA */
if (dql < 0) {
return ((sign) ? -0x8000 : 0);
} else { /* ANTILOG */
dex = (dql >> 7) & 15;
dqt = 128 + (dql & 127);
dq = (dqt << 7) >> (14 - dex);
return ((sign) ? (dq - 0x8000) : dq);
}
}
/*
* update()
*
* updates the state variables for each output code
*/
static void
update(
int code_size, /* distinguish 723_40 with others */
int y, /* quantizer step size */
int wi, /* scale factor multiplier */
int fi, /* for long/short term energies */
int dq, /* quantized prediction difference */
int sr, /* reconstructed signal */
int dqsez, /* difference from 2-pole predictor */
struct g72x_state *state_ptr) /* coder state pointer */
static void update(int code_size, /* distinguish 723_40 with others */
int y, /* quantizer step size */
int wi, /* scale factor multiplier */
int fi, /* for long/short term energies */
int dq, /* quantized prediction difference */
int sr, /* reconstructed signal */
int dqsez, /* difference from 2-pole predictor */
struct g72x_state* state_ptr) /* coder state pointer */
{
int cnt;
short mag, exp; /* Adaptive predictor, FLOAT A */
short a2p; /* LIMC */
short a1ul; /* UPA1 */
short pks1; /* UPA2 */
short fa1;
char tr; /* tone/transition detector */
short ylint, thr2, dqthr;
short ylfrac, thr1;
short pk0;
pk0 = (dqsez < 0) ? 1 : 0; /* needed in updating predictor poles */
mag = dq & 0x7FFF; /* prediction difference magnitude */
/* TRANS */
ylint = state_ptr->yl >> 15; /* exponent part of yl */
ylfrac = (state_ptr->yl >> 10) & 0x1F; /* fractional part of yl */
thr1 = (32 + ylfrac) << ylint; /* threshold */
thr2 = (ylint > 9) ? 31 << 10 : thr1; /* limit thr2 to 31 << 10 */
dqthr = (thr2 + (thr2 >> 1)) >> 1; /* dqthr = 0.75 * thr2 */
if (state_ptr->td == 0) /* signal supposed voice */
tr = 0;
else if (mag <= dqthr) /* supposed data, but small mag */
tr = 0; /* treated as voice */
else /* signal is data (modem) */
tr = 1;
/*
* Quantizer scale factor adaptation.
*/
/* FUNCTW & FILTD & DELAY */
/* update non-steady state step size multiplier */
state_ptr->yu = y + ((wi - y) >> 5);
/* LIMB */
if (state_ptr->yu < 544) /* 544 <= yu <= 5120 */
state_ptr->yu = 544;
else if (state_ptr->yu > 5120)
state_ptr->yu = 5120;
/* FILTE & DELAY */
/* update steady state step size multiplier */
state_ptr->yl += state_ptr->yu + ((-state_ptr->yl) >> 6);
/*
* Adaptive predictor coefficients.
*/
if (tr == 1) { /* reset a's and b's for modem signal */
state_ptr->a[0] = 0;
state_ptr->a[1] = 0;
state_ptr->b[0] = 0;
state_ptr->b[1] = 0;
state_ptr->b[2] = 0;
state_ptr->b[3] = 0;
state_ptr->b[4] = 0;
state_ptr->b[5] = 0;
//a2p=0; /* won't be used, clear warning */
} else { /* update a's and b's */
pks1 = pk0 ^ state_ptr->pk[0]; /* UPA2 */
/* update predictor pole a[1] */
a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7);
if (dqsez != 0) {
fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0];
if (fa1 < -8191) /* a2p = function of fa1 */
a2p -= 0x100;
else if (fa1 > 8191)
a2p += 0xFF;
else
a2p += fa1 >> 5;
if (pk0 ^ state_ptr->pk[1])
/* LIMC */
if (a2p <= -12160)
a2p = -12288;
else if (a2p >= 12416)
a2p = 12288;
else
a2p -= 0x80;
else if (a2p <= -12416)
a2p = -12288;
else if (a2p >= 12160)
a2p = 12288;
else
a2p += 0x80;
}
/* TRIGB & DELAY */
state_ptr->a[1] = a2p;
/* UPA1 */
/* update predictor pole a[0] */
state_ptr->a[0] -= state_ptr->a[0] >> 8;
if (dqsez != 0) {
if (pks1 == 0)
state_ptr->a[0] += 192;
else
state_ptr->a[0] -= 192;
}
/* LIMD */
a1ul = 15360 - a2p;
if (state_ptr->a[0] < -a1ul)
state_ptr->a[0] = -a1ul;
else if (state_ptr->a[0] > a1ul)
state_ptr->a[0] = a1ul;
/* UPB : update predictor zeros b[6] */
for (cnt = 0; cnt < 6; cnt++) {
if (code_size == 5) /* for 40Kbps G.723 */
state_ptr->b[cnt] -= state_ptr->b[cnt] >> 9;
else /* for G.721 and 24Kbps G.723 */
state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8;
if (dq & 0x7FFF) { /* XOR */
if ((dq ^ state_ptr->dq[cnt]) >= 0)
state_ptr->b[cnt] += 128;
else
state_ptr->b[cnt] -= 128;
}
}
}
for (cnt = 5; cnt > 0; cnt--)
state_ptr->dq[cnt] = state_ptr->dq[cnt-1];
/* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */
if (mag == 0) {
state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20;
} else {
exp = quan(mag, power2, 15);
state_ptr->dq[0] = (dq >= 0) ?
(exp << 6) + ((mag << 6) >> exp) :
(exp << 6) + ((mag << 6) >> exp) - 0x400;
}
state_ptr->sr[1] = state_ptr->sr[0];
/* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */
if (sr == 0) {
state_ptr->sr[0] = 0x20;
} else if (sr > 0) {
exp = quan(sr, power2, 15);
state_ptr->sr[0] = (exp << 6) + ((sr << 6) >> exp);
} else if (sr > -32768) {
mag = -sr;
exp = quan(mag, power2, 15);
state_ptr->sr[0] = (exp << 6) + ((mag << 6) >> exp) - 0x400;
} else
state_ptr->sr[0] = 0xFC20;
/* DELAY A */
state_ptr->pk[1] = state_ptr->pk[0];
state_ptr->pk[0] = pk0;
/* TONE */
if (tr == 1) /* this sample has been treated as data */
state_ptr->td = 0; /* next one will be treated as voice */
else if (a2p < -11776) /* small sample-to-sample correlation */
state_ptr->td = 1; /* signal may be data */
else /* signal is voice */
state_ptr->td = 0;
/*
* Adaptation speed control.
*/
state_ptr->dms += (fi - state_ptr->dms) >> 5; /* FILTA */
state_ptr->dml += (((fi << 2) - state_ptr->dml) >> 7); /* FILTB */
if (tr == 1)
state_ptr->ap = 256;
else if (y < 1536) /* SUBTC */
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else if (state_ptr->td == 1)
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else if (abs((state_ptr->dms << 2) - state_ptr->dml) >=
(state_ptr->dml >> 3))
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else
state_ptr->ap += (-state_ptr->ap) >> 4;
int cnt;
short mag, exp; /* Adaptive predictor, FLOAT A */
short a2p; /* LIMC */
short a1ul; /* UPA1 */
short pks1; /* UPA2 */
short fa1;
char tr; /* tone/transition detector */
short ylint, thr2, dqthr;
short ylfrac, thr1;
short pk0;
pk0 = (dqsez < 0) ? 1 : 0; /* needed in updating predictor poles */
mag = dq & 0x7FFF; /* prediction difference magnitude */
/* TRANS */
ylint = state_ptr->yl >> 15; /* exponent part of yl */
ylfrac = (state_ptr->yl >> 10) & 0x1F; /* fractional part of yl */
thr1 = (32 + ylfrac) << ylint; /* threshold */
thr2 = (ylint > 9) ? 31 << 10 : thr1; /* limit thr2 to 31 << 10 */
dqthr = (thr2 + (thr2 >> 1)) >> 1; /* dqthr = 0.75 * thr2 */
if (state_ptr->td == 0) /* signal supposed voice */
tr = 0;
else if (mag <= dqthr) /* supposed data, but small mag */
tr = 0; /* treated as voice */
else /* signal is data (modem) */
tr = 1;
/*
* Quantizer scale factor adaptation.
*/
/* FUNCTW & FILTD & DELAY */
/* update non-steady state step size multiplier */
state_ptr->yu = y + ((wi - y) >> 5);
/* LIMB */
if (state_ptr->yu < 544) /* 544 <= yu <= 5120 */
state_ptr->yu = 544;
else if (state_ptr->yu > 5120)
state_ptr->yu = 5120;
/* FILTE & DELAY */
/* update steady state step size multiplier */
state_ptr->yl += state_ptr->yu + ((-state_ptr->yl) >> 6);
/*
* Adaptive predictor coefficients.
*/
if (tr == 1) { /* reset a's and b's for modem signal */
state_ptr->a[0] = 0;
state_ptr->a[1] = 0;
state_ptr->b[0] = 0;
state_ptr->b[1] = 0;
state_ptr->b[2] = 0;
state_ptr->b[3] = 0;
state_ptr->b[4] = 0;
state_ptr->b[5] = 0;
// a2p=0; /* won't be used, clear warning */
} else { /* update a's and b's */
pks1 = pk0 ^ state_ptr->pk[0]; /* UPA2 */
/* update predictor pole a[1] */
a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7);
if (dqsez != 0) {
fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0];
if (fa1 < -8191) /* a2p = function of fa1 */
a2p -= 0x100;
else if (fa1 > 8191)
a2p += 0xFF;
else
a2p += fa1 >> 5;
if (pk0 ^ state_ptr->pk[1])
/* LIMC */
if (a2p <= -12160)
a2p = -12288;
else if (a2p >= 12416)
a2p = 12288;
else
a2p -= 0x80;
else if (a2p <= -12416)
a2p = -12288;
else if (a2p >= 12160)
a2p = 12288;
else
a2p += 0x80;
}
/* TRIGB & DELAY */
state_ptr->a[1] = a2p;
/* UPA1 */
/* update predictor pole a[0] */
state_ptr->a[0] -= state_ptr->a[0] >> 8;
if (dqsez != 0) {
if (pks1 == 0)
state_ptr->a[0] += 192;
else
state_ptr->a[0] -= 192;
}
/* LIMD */
a1ul = 15360 - a2p;
if (state_ptr->a[0] < -a1ul)
state_ptr->a[0] = -a1ul;
else if (state_ptr->a[0] > a1ul)
state_ptr->a[0] = a1ul;
/* UPB : update predictor zeros b[6] */
for (cnt = 0; cnt < 6; cnt++) {
if (code_size == 5) /* for 40Kbps G.723 */
state_ptr->b[cnt] -= state_ptr->b[cnt] >> 9;
else /* for G.721 and 24Kbps G.723 */
state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8;
if (dq & 0x7FFF) { /* XOR */
if ((dq ^ state_ptr->dq[cnt]) >= 0)
state_ptr->b[cnt] += 128;
else
state_ptr->b[cnt] -= 128;
}
}
}
for (cnt = 5; cnt > 0; cnt--)
state_ptr->dq[cnt] = state_ptr->dq[cnt - 1];
/* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */
if (mag == 0) {
state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20;
} else {
exp = quan(mag, power2, 15);
state_ptr->dq[0] =
(dq >= 0) ? (exp << 6) + ((mag << 6) >> exp) : (exp << 6) + ((mag << 6) >> exp) - 0x400;
}
state_ptr->sr[1] = state_ptr->sr[0];
/* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */
if (sr == 0) {
state_ptr->sr[0] = 0x20;
} else if (sr > 0) {
exp = quan(sr, power2, 15);
state_ptr->sr[0] = (exp << 6) + ((sr << 6) >> exp);
} else if (sr > -32768) {
mag = -sr;
exp = quan(mag, power2, 15);
state_ptr->sr[0] = (exp << 6) + ((mag << 6) >> exp) - 0x400;
} else
state_ptr->sr[0] = 0xFC20;
/* DELAY A */
state_ptr->pk[1] = state_ptr->pk[0];
state_ptr->pk[0] = pk0;
/* TONE */
if (tr == 1) /* this sample has been treated as data */
state_ptr->td = 0; /* next one will be treated as voice */
else if (a2p < -11776) /* small sample-to-sample correlation */
state_ptr->td = 1; /* signal may be data */
else /* signal is voice */
state_ptr->td = 0;
/*
* Adaptation speed control.
*/
state_ptr->dms += (fi - state_ptr->dms) >> 5; /* FILTA */
state_ptr->dml += (((fi << 2) - state_ptr->dml) >> 7); /* FILTB */
if (tr == 1)
state_ptr->ap = 256;
else if (y < 1536) /* SUBTC */
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else if (state_ptr->td == 1)
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else if (abs((state_ptr->dms << 2) - state_ptr->dml) >= (state_ptr->dml >> 3))
state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
else
state_ptr->ap += (-state_ptr->ap) >> 4;
}
/*
* Maps G.721 code word to reconstructed scale factor normalized log
* magnitude values.
*/
static short _dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425,
425, 373, 323, 273, 213, 135, 4, -2048};
static short _dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425,
425, 373, 323, 273, 213, 135, 4, -2048};
/* Maps G.721 code word to log of scale factor multiplier. */
static short _witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122,
1122, 355, 198, 112, 64, 41, 18, -12};
static short _witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122,
1122, 355, 198, 112, 64, 41, 18, -12};
/*
* Maps G.721 code words to a set of values whose long and short
* term averages are computed and then compared to give an indication
* how stationary (steady state) the signal is.
*/
static short _fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00,
0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0};
static short _fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00,
0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0};
#if VERSION == 0 || VERSION == 2
// This seems to only misbehave when alignment is on a 64byte boundary? I'm so confused
#pragma force_active on
/* TODO: This is a hack we need to see what's throwing off the alignment and fix it */
#if VERSION == 0
static char padding[32] = {0};
#endif
#pragma force_active reset
#endif
/*
* g721_decoder()
*
@ -436,31 +408,28 @@ static char padding[32] = {0};
* returns the resulting linear PCM, A-law or u-law value.
* return -1 for unknown out_coding value.
*/
int
g721_decoder(int i,
struct g72x_state *state_ptr)
{
short sezi, sei, sez, se; /* ACCUM */
short y; /* MIX */
short sr; /* ADDB */
short dq;
short dqsez;
i &= 0x0f; /* mask to get proper bits */
sezi = predictor_zero(state_ptr);
sez = sezi >> 1;
sei = sezi + predictor_pole(state_ptr);
se = sei >> 1; /* se = estimated signal */
y = step_size(state_ptr); /* dynamic quantizer step size */
dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */
sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq; /* reconst. signal */
dqsez = sr - se + sez; /* pole prediction diff. */
update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);
return (sr << 2); /* sr was 14-bit dynamic range */
int g721_decoder(int i, struct g72x_state* state_ptr) {
short sezi, sei, sez, se; /* ACCUM */
short y; /* MIX */
short sr; /* ADDB */
short dq;
short dqsez;
i &= 0x0f; /* mask to get proper bits */
sezi = predictor_zero(state_ptr);
sez = sezi >> 1;
sei = sezi + predictor_pole(state_ptr);
se = sei >> 1; /* se = estimated signal */
y = step_size(state_ptr); /* dynamic quantizer step size */
dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */
sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq; /* reconst. signal */
dqsez = sr - se + sez; /* pole prediction diff. */
update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);
return (sr << 2); /* sr was 14-bit dynamic range */
}

View File

@ -1,16 +1,19 @@
#include "Kyoto/Math/CFrustumPlanes.hpp"
#include "MetroidPrime/ScriptObjects/CScriptSound.hpp"
#include "Collision/CMaterialFilter.hpp"
#include "MetroidPrime/CActor.hpp"
#include "MetroidPrime/CEntityInfo.hpp"
#include "rstl/math.hpp"
#include <MetroidPrime/ScriptObjects/CScriptSound.hpp>
#include <MetroidPrime/CActorParameters.hpp>
#include <MetroidPrime/CStateManager.hpp>
#include <MetroidPrime/CWorld.hpp>
#include "MetroidPrime/CActorParameters.hpp"
#include "MetroidPrime/CStateManager.hpp"
#include "MetroidPrime/CWorld.hpp"
#include "MetroidPrime/Cameras/CCameraManager.hpp"
#include <MetroidPrime/TCastTo.hpp>
#include "MetroidPrime/TCastTo.hpp"
#include <Collision/CRayCastResult.hpp>
#include <Kyoto/Audio/CSfxManager.hpp>
#include <Kyoto/Math/CFrustumPlanes.hpp>
#include <rstl/math.hpp>
bool CScriptSound::sFirstInFrame = false;
@ -175,6 +178,37 @@ void CScriptSound::StopSound(CStateManager& mgr) {
}
}
void CScriptSound::AddToRenderer(const CFrustumPlanes& planes, CStateManager& mgr) {}
void CScriptSound::AddToRenderer(const CFrustumPlanes& planes, CStateManager& mgr) const {}
void CScriptSound::Accept(IVisitor& visitor) { visitor.Visit(*this); }
float CScriptSound::GetOccludedVolumeAmount(const CVector3f& pos, const CStateManager& mgr) {
const CTransform4f camXf = mgr.GetCameraManager()->GetCurrentCameraTransform(mgr);
const CVector3f soundToCam = camXf.GetTranslation() - pos;
const float soundToCamMag = soundToCam.Magnitude();
const CVector3f soundToCamNorm = soundToCam * (1.f / soundToCamMag);
const CVector3f thirdEdge =
CVector3f::Up() - soundToCamNorm * CVector3f::Dot(soundToCamNorm, CVector3f::Up());
const CVector3f cross = CVector3f::Cross(soundToCamNorm, thirdEdge);
static float kInfluenceAmount = 3.f / soundToCamMag;
static float kInfluenceIncrement = kInfluenceAmount;
static CMaterialFilter kSolidFilter = CMaterialFilter::MakeIncludeExclude(
CMaterialList(kMT_Solid), CMaterialList(kMT_ProjectilePassthrough));
float influenceIncrement = kInfluenceIncrement;
float influenceAmount = kInfluenceAmount;
float f17 = -influenceAmount;
int totalCount = 0;
int invalCount = 0;
for (float i = -influenceAmount; i <= influenceAmount; i += influenceIncrement) {
const CVector3f angledDir = (thirdEdge * i + soundToCamNorm);
for (float j = -influenceAmount; j <= influenceAmount; j += influenceIncrement) {
++totalCount;
if (mgr.RayStaticIntersection(pos, (cross * j + angledDir).AsNormalized(), soundToCamMag,
kSolidFilter)
.IsInvalid()) {
++invalCount;
}
}
}
return invalCount / static_cast< float >(totalCount) * 0.42f + 0.58f;
}