mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-08-05 10:15:39 +00:00
Initial korean version, update musyx
This commit is contained in:
parent
d96afdec71
commit
5165557f75
@ -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
|
||||
|
@ -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
|
||||
|
7
config/GM8E01_48/NESemu/splits.txt
Normal file
7
config/GM8E01_48/NESemu/splits.txt
Normal 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
|
274
config/GM8E01_48/NESemu/symbols.txt
Normal file
274
config/GM8E01_48/NESemu/symbols.txt
Normal 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
|
1
config/GM8E01_48/build.sha1
Normal file
1
config/GM8E01_48/build.sha1
Normal file
@ -0,0 +1 @@
|
||||
52316d2a71c0d18c84f054fd6f1e58bdd7bf0ded build/GM8E01_48/main.dol
|
14
config/GM8E01_48/config.yml
Normal file
14
config/GM8E01_48/config.yml
Normal 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
803
config/GM8E01_48/splits.txt
Normal 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
|
6
config/GM8E01_48/splits_tmp.txt
Normal file
6
config/GM8E01_48/splits_tmp.txt
Normal 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
27094
config/GM8E01_48/symbols.txt
Normal file
File diff suppressed because it is too large
Load Diff
365
configure.py
365
configure.py
@ -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
2
extern/musyx
vendored
@ -1 +1 @@
|
||||
Subproject commit 875167ea62376211ebe223b4a79473141c37e49d
|
||||
Subproject commit d050faa2221ba769198f40a253aff5213ac9d622
|
@ -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);
|
||||
|
@ -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 };
|
||||
|
@ -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)]);
|
||||
}
|
||||
|
@ -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);
|
||||
|
106
include/dolphin/mtx/mtx44ext.h
Normal file
106
include/dolphin/mtx/mtx44ext.h
Normal 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
|
@ -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; }
|
||||
|
||||
|
@ -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
933
src/Dolphin/mtx/mtx44.c
Normal 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
|
1
src/Dolphin/mtx/mtx44vec.c
Normal file
1
src/Dolphin/mtx/mtx44vec.c
Normal file
@ -0,0 +1 @@
|
||||
#include "dolphin/mtx.h"
|
0
src/Dolphin/mtx/mtxstack.c
Normal file
0
src/Dolphin/mtx/mtxstack.c
Normal file
0
src/Dolphin/mtx/mtxvec.c
Normal file
0
src/Dolphin/mtx/mtxvec.c
Normal file
1
src/Dolphin/mtx/psmtx.c
Normal file
1
src/Dolphin/mtx/psmtx.c
Normal file
@ -0,0 +1 @@
|
||||
#include "dolphin/mtx.h"
|
0
src/Dolphin/mtx/quat.c
Normal file
0
src/Dolphin/mtx/quat.c
Normal file
1
src/Dolphin/mtx/vec.c
Normal file
1
src/Dolphin/mtx/vec.c
Normal file
@ -0,0 +1 @@
|
||||
#include "dolphin/mtx.h"
|
@ -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
|
||||
|
@ -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++;
|
||||
}
|
||||
|
@ -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 */
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user