mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
179 lines
7.4 KiB
Python
179 lines
7.4 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import List
|
|
|
|
# Some symbol names in the decomp do not match pmdsky-debug because of naming convention differences.
|
|
# Map these symbol names between the two projects to avoid changes when syncing the projects.
|
|
NONMATCHING_SYMBOLS_ARM9 = {
|
|
'_secure': 'SECURE',
|
|
'_start_AutoloadDoneCallback': 'StartAutoloadDoneCallback',
|
|
'_start_ModuleParams': 'START_MODULE_PARAMS',
|
|
'CARD_Enable': 'Card_Enable',
|
|
'CARD_Init': 'Card_Init',
|
|
'CARD_InitPulledOutCallback': 'Card_InitPulledOutCallback',
|
|
'CARDi_GetRomAccessor': 'Cardi_GetRomAccessor',
|
|
'CARDi_InitCommon': 'Cardi_InitCommon',
|
|
'CARDi_OnFifoRecv': 'Cardi_OnFifoRecv',
|
|
'CARDi_PulledOutCallback': 'Cardi_PulledOutCallback',
|
|
'CARDi_ReadCard': 'Cardi_ReadCard',
|
|
'CARDi_ReadFromCache': 'Cardi_ReadFromCache',
|
|
'CARDi_SetRomOp': 'Cardi_SetRomOp',
|
|
'CARDi_TaskThread': 'Cardi_TaskThread',
|
|
'CRYPTO_RC4Init': 'Crypto_RC4Init',
|
|
'CTRDG_Init': 'Ctrdg_Init',
|
|
'CTRDG_TerminateForPulledOut': 'Ctrdg_TerminateForPulledOut',
|
|
'CTRDGi_CallbackForInitModuleInfo': 'Ctrdgi_CallbackForInitModuleInfo',
|
|
'CTRDGi_ChangeLatestAccessCycle': 'Ctrdgi_ChangeLatestAccessCycle',
|
|
'CTRDGi_InitCommon': 'Ctrdgi_InitCommon',
|
|
'CTRDGi_InitModuleInfo': 'Ctrdgi_InitModuleInfo',
|
|
'CTRDGi_LockByProcessor': 'Ctrdgi_LockByProcessor',
|
|
'CTRDGi_PulledOutCallback': 'Ctrdgi_PulledOutCallback',
|
|
'CTRDGi_RestoreAccessCycle': 'Ctrdgi_RestoreAccessCycle',
|
|
'CTRDGi_SendtoPxi': 'Ctrdgi_SendtoPxi',
|
|
'CTRDGi_UnlockByProcessor': 'Ctrdgi_UnlockByProcessor',
|
|
'disableBankForX_': 'DisableBankForX',
|
|
'FX_AtanIdxTable_': 'FX_ATAN_IDX_TABLE',
|
|
'G2x_ChangeBlendBrightness_': 'G2x_ChangeBlendBrightness',
|
|
'G2x_SetBlendAlpha_': 'G2x_SetBlendAlpha',
|
|
'G2x_SetBlendBrightness_': 'G2x_SetBlendBrightness',
|
|
'G3i_LookAt_': 'G3i_LookAt',
|
|
'G3i_OrthoW_': 'G3i_OrthoW',
|
|
'gGXState': 'ENABLED_VRAM_BANKS',
|
|
'GX_BeginLoadBGExtPltt': 'GX_BeginLoadBgExtPltt',
|
|
'GX_BeginLoadOBJExtPltt': 'GX_BeginLoadObjExtPltt',
|
|
'GX_DisableBankForARM7': 'GX_DisableBankForArm7',
|
|
'GX_DisableBankForBG': 'GX_DisableBankForBg',
|
|
'GX_DisableBankForBGExtPltt': 'GX_DisableBankForBgExtPltt',
|
|
'GX_DisableBankForLCDC': 'GX_DisableBankForLcdc',
|
|
'GX_DisableBankForOBJ': 'GX_DisableBankForObj',
|
|
'GX_DisableBankForOBJExtPltt': 'GX_DisableBankForObjExtPltt',
|
|
'GX_DisableBankForSubBG': 'GX_DisableBankForSubBg',
|
|
'GX_DisableBankForSubBGExtPltt': 'GX_DisableBankForSubBgExtPltt',
|
|
'GX_DisableBankForSubOBJ': 'GX_DisableBankForSubObj',
|
|
'GX_DisableBankForSubOBJExtPltt': 'GX_DisableBankForSubObjExtPltt',
|
|
'GX_EndLoadBGExtPltt': 'GX_EndLoadBgExtPltt',
|
|
'GX_EndLoadOBJExtPltt': 'GX_EndLoadObjExtPltt',
|
|
'GX_InitGXState': 'GX_InitGxState',
|
|
'GX_LoadBG0Char': 'GX_LoadBg0Char',
|
|
'GX_LoadBG0Scr': 'GX_LoadBg0Scr',
|
|
'GX_LoadBG1Char': 'GX_LoadBg1Char',
|
|
'GX_LoadBG1Scr': 'GX_LoadBg1Scr',
|
|
'GX_LoadBG2Char': 'GX_LoadBg2Char',
|
|
'GX_LoadBG2Scr': 'GX_LoadBg2Scr',
|
|
'GX_LoadBG3Char': 'GX_LoadBg3Char',
|
|
'GX_LoadBG3Scr': 'GX_LoadBg3Scr',
|
|
'GX_LoadBGPltt': 'GX_LoadBgPltt',
|
|
'GX_LoadOAM': 'GX_LoadOam',
|
|
'GX_LoadOBJ': 'GX_LoadObj',
|
|
'GX_LoadOBJPltt': 'GX_LoadObjPltt',
|
|
'GX_ResetBankForBGExtPltt': 'GX_ResetBankForBgExtPltt',
|
|
'GX_ResetBankForOBJExtPltt': 'GX_ResetBankForObjExtPltt',
|
|
'GX_ResetBankForSubBGExtPltt': 'GX_ResetBankForSubBgExtPltt',
|
|
'GX_ResetBankForSubOBJExtPltt': 'GX_ResetBankForSubObjExtPltt',
|
|
'GX_SetBankForARM7': 'GX_SetBankForArm7',
|
|
'GX_SetBankForBG': 'GX_SetBankForBg',
|
|
'GX_SetBankForBGExtPltt': 'GX_SetBankForBgExtPltt',
|
|
'GX_SetBankForLCDC': 'GX_SetBankForLcdc',
|
|
'GX_SetBankForOBJ': 'GX_SetBankForObj',
|
|
'GX_SetBankForOBJExtPltt': 'GX_SetBankForObjExtPltt',
|
|
'GX_SetBankForSubBG': 'GX_SetBankForSubBg',
|
|
'GX_SetBankForSubBGExtPltt': 'GX_SetBankForSubBgExtPltt',
|
|
'GX_SetBankForSubOBJ': 'GX_SetBankForSubObj',
|
|
'GX_SetBankForSubOBJExtPltt': 'GX_SetBankForSubObjExtPltt',
|
|
'GX_VRAMCNT_SetLCDC_': 'EnableVramBanksInSetDontSave',
|
|
'GXi_DmaId': 'GXI_DMA_ID',
|
|
'GXi_NopClearFifo128_': 'GXi_NopClearFifo128',
|
|
'GXi_VRamLockId': 'GXI_VRAM_LOCK_ID',
|
|
'GXS_BeginLoadBGExtPltt': 'Gxs_BeginLoadBgExtPltt',
|
|
'GXS_BeginLoadOBJExtPltt': 'Gxs_BeginLoadObjExtPltt',
|
|
'GXS_EndLoadBGExtPltt': 'Gxs_EndLoadBgExtPltt',
|
|
'GXS_EndLoadOBJExtPltt': 'Gxs_EndLoadObjExtPltt',
|
|
'GXS_LoadBG0Char': 'Gxs_LoadBg0Char',
|
|
'GXS_LoadBG1Char': 'Gxs_LoadBg1Char',
|
|
'GXS_LoadBG1Scr': 'Gxs_LoadBg1Scr',
|
|
'GXS_LoadBGPltt': 'Gxs_LoadBgPltt',
|
|
'GXS_LoadOAM': 'Gxs_LoadOam',
|
|
'GXS_LoadOBJ': 'Gxs_LoadObj',
|
|
'GXS_LoadOBJPltt': 'Gxs_LoadObjPltt',
|
|
'GXS_SetGraphicsMode': 'Gxs_SetGraphicsMode',
|
|
'GXx_SetMasterBrightness_': 'GXx_SetMasterBrightness',
|
|
'INITi_CpuClear32': 'InitI_CpuClear32',
|
|
'MTX_LookAt': 'Mtx_LookAt',
|
|
'MTX_OrthoW': 'Mtx_OrthoW',
|
|
'PXI_Init': 'Pxi_Init',
|
|
'PXI_InitFifo': 'Pxi_InitFifo',
|
|
'PXI_IsCallbackReady': 'Pxi_IsCallbackReady',
|
|
'PXI_SendWordByFifo': 'Pxi_SendWordByFifo',
|
|
'PXI_SetFifoRecvCallback': 'Pxi_SetFifoRecvCallback',
|
|
'PXIi_HandlerRecvFifoNotEmpty': 'Pxii_HandlerRecvFifoNotEmpty',
|
|
'resetBankForX_': 'EnableVramBanksInSet',
|
|
'sClrImg': 'CLR_IMG',
|
|
'sDispMode': 'DISP_MODE',
|
|
'sIsDispOn': 'IS_DISP_ON',
|
|
'sSubBGExtPltt': 'SUB_BG_EXT_PLTT',
|
|
'sTexPlttStartAddrTable': 'TEX_PLTT_START_ADDR_TABLE',
|
|
'sTexStartAddrTable': 'TEX_START_ADDR_TABLE',
|
|
'SVC_CpuSet': 'Svc_CpuSet',
|
|
'SVC_SoftReset': 'Svc_SoftReset',
|
|
'SVC_WaitByLoop': 'Svc_WaitByLoop',
|
|
'VEC_CrossProduct': 'Vec_CrossProduct',
|
|
'VEC_Distance': 'Vec_Distance',
|
|
'VEC_DotProduct': 'Vec_DotProduct',
|
|
'VEC_Normalize': 'Vec_Normalize',
|
|
}
|
|
|
|
NONMATCHING_SYMBOLS_ARM7 = {
|
|
'_start': '_start_arm7',
|
|
'_start_AutoloadDoneCallback': 'StartAutoloadDoneCallbackArm7',
|
|
'do_autoload': 'do_autoload_arm7',
|
|
}
|
|
|
|
WRAM_OFFSET = 0x1477E18
|
|
|
|
ITCM_RAM_START_ADDRESSES = {
|
|
'NA': 0x20B3380,
|
|
'EU': 0x20B3CC0,
|
|
'JP': 0x20B4BE0
|
|
}
|
|
|
|
# Some symbol names are intentionally different between the decomp and pmdsky-debug due to different naming conventions.
|
|
# Map the symbol names here to treat the two names as the same symbol.
|
|
XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING = {
|
|
'GroundBg_CloseOpenedFiles': 'GroundBgCloseOpenedFiles',
|
|
'GroundBg_FreeAll': 'GroundBgFreeAll',
|
|
'GroundBg_Init': 'GroundBgInit',
|
|
'sPositionZero': 'POSITION_ZERO',
|
|
}
|
|
|
|
# These symbols intentionally have the same address as another symbol in pmdsky-debug. Don't display warnings for them.
|
|
IGNORE_DUPLICATE_SYMBOLS = set([
|
|
'GUEST_MONSTER_DATA',
|
|
'GUEST_MONSTER_BANETTE',
|
|
])
|
|
|
|
# Symbols to always append the address onto.
|
|
# Used for symbols that are part of multiple overlays, making it harder to detect whether there are multiple symbols with the same name.
|
|
ALWAYS_APPEND_ADDRESS_SYMBOLS = set([
|
|
'SprintfStatic',
|
|
])
|
|
|
|
PMDSKY_DEBUG_TO_XMAP_SYMBOL_MAPPING = {pmdsky_debug_name: xmap_name for xmap_name, pmdsky_debug_name in XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING.items()}
|
|
|
|
@dataclass
|
|
class SymbolDetails:
|
|
name: str
|
|
file_path: str
|
|
is_data: bool
|
|
aliases: List[str] = field(default_factory=list)
|
|
|
|
def get_all_names(self) -> List[str]:
|
|
all_names = [self.name]
|
|
all_names.extend(self.aliases)
|
|
|
|
if self.name in XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING:
|
|
all_names.append(XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING[self.name])
|
|
|
|
if self.name in PMDSKY_DEBUG_TO_XMAP_SYMBOL_MAPPING:
|
|
all_names.append(PMDSKY_DEBUG_TO_XMAP_SYMBOL_MAPPING[self.name])
|
|
|
|
return all_names
|