New object database representation and Hopper import script

This commit is contained in:
Jack Andersen 2018-03-10 21:10:10 -10:00
commit 2fba10ed1b
6 changed files with 34030 additions and 0 deletions

1146
GM8E01-0-00/lvars Normal file

File diff suppressed because it is too large Load Diff

14009
GM8E01-0-00/map Normal file

File diff suppressed because it is too large Load Diff

16738
GM8E01-0-00/objects Normal file

File diff suppressed because it is too large Load Diff

196
GM8E01-0-01/map Normal file
View File

@ -0,0 +1,196 @@
.text
80003100 00000030 80003100 0 __check_pad3
80003130 00000010 80003130 0 start
80003140 00000138 80003140 0 __start
80003278 0000001C 80003278 0 __init_registers
80003294 000000C0 80003294 0 __init_data
80003354 00000020 80003354 0 __init_hardware
80003374 00000034 80003374 0 __flush_cache
800033A8 00000030 800033A8 0 memset
800033D8 000000B8 800033D8 0 __fill_mem
80003490 00000050 80003490 0 memcpy
80003640 00000004 80003640 0 nullsub_1
8000367C 00000024 8000367C 0 RegisterResourceTweaks__5CMainFv
800036A0 00000100 800036A0 0 ResetGameState__5CMainFv
800037A0 00000130 800037A0 0 __ct__12CGameOptionsFRC12CGameOptions
80003F84 000000F0 80003F84 0 __dt__12CGameOptionsFv
8000480C 00000004 8000480C 0 nullsub_2
80004DC8 00000A4C 80004DC8 0 RsMain__5CMainFiPCPCc
80006050 00000008 80006050 0 CheckTerminate__5CMainFv
80006058 00000004 80006058 0 nullsub_3
8000605C 00000004 8000605C 0 nullsub_4
80006D0C 00000070 80006D0C 0 Update__24CGameArchitectureSupportFv
80007B38 00000174 80007B38 0 __ct__18CGameGlobalObjectsFR8IFactoryR11CSimplePool
80008580 00000080 80008580 0 main
80008884 00000030 80008884 0 __nw__32TOneStatic<18CGameGlobalObjects>FUiPCcPCc
80019144 00000004 80019144 0 nullsub_25
8001B5AC 00000004 8001B5AC 0 nullsub_17
80034A68 00000054 80034A68 0 __ct__24CCharacterFactoryBuilderFv
80035A04 000002C0 80035A04 0 RegisterResourceTweaks__7CTweaksFv
80036DD4 00000030 80036DD4 0 IDFromFactory__FR11CResFactoryPCc
80045C1C 00000004 80045C1C 0 nullsub_31
8004B580 00000004 8004B580 0 nullsub_33
8004B584 00000004 8004B584 0 nullsub_34
8004B5D4 00000004 8004B5D4 0 nullsub_35
8004C650 00000004 8004C650 0 nullsub_28
80051134 00000004 80051134 0 nullsub_40
80051138 00000004 80051138 0 nullsub_38
80054484 00000004 80054484 0 nullsub_50
80054A44 00000004 80054A44 0 nullsub_23
8006903C 00000004 8006903C 0 nullsub_29
80071518 00000004 80071518 0 nullsub_52
80091530 00000010 80091530 0 SetIsFusionEnabled__12CPlayerStateFb
800A33A8 00000244 800A33A8 0 __ct__10CAiFuncMapFv
800BBA64 000005F0 800BBA64 0 __ct__12CTweakGunResFR12CInputStream
800C4288 00000004 800C4288 0 nullsub_41
800DEFDC 00000004 800DEFDC 0 nullsub_43
800DEFE0 00000004 800DEFE0 0 nullsub_18
800DEFE4 00000004 800DEFE4 0 nullsub_20
80101F84 00000004 80101F84 0 nullsub_37
80105D8C 00000004 80105D8C 0 nullsub_24
80113B38 00000004 80113B38 0 nullsub_32
8011AA44 00000004 8011AA44 0 nullsub_39
801579E0 00000004 801579E0 0 nullsub_46
801829D0 00000004 801829D0 0 nullsub_36
80194DB0 00000004 80194DB0 0 nullsub_47
80195EC0 00000004 80195EC0 0 nullsub_48
801969F8 00000004 801969F8 0 nullsub_49
801CB6B8 00000004 801CB6B8 0 nullsub_44
801CB6BC 00000004 801CB6BC 0 nullsub_45
801D39B8 00000008 801D39B8 0 PlayerState__10CGameStateFv
801D4BB4 000001FC 801D4BB4 0 __ct__10CGameStateFv
801D8DD0 00000004 801D8DD0 0 nullsub_51
8020C7A0 00000004 8020C7A0 0 nullsub_42
8021D130 00000014 8021D130 0 __ct__19CInGameTweakManagerFv
8023402C 00000004 8023402C 0 nullsub_5
8023E418 00000004 8023E418 0 nullsub_21
8023E680 00000004 8023E680 0 nullsub_19
802565F8 00000004 802565F8 0 nullsub_53
802A29C8 00000004 802A29C8 0 nullsub_30
802BD758 00000004 802BD758 0 nullsub_55
802C0CA0 00000004 802C0CA0 0 nullsub_6
802C648C 00000004 802C648C 0 nullsub_7
802CA688 00000004 802CA688 0 nullsub_58
802CA68C 00000004 802CA68C 0 nullsub_57
802CAB0C 00000004 802CAB0C 0 nullsub_56
802E9084 000006BC 802E9084 0 Update__11CSfxManagerFf
80306078 00000004 80306078 0 nullsub_54
80308660 00000004 80308660 0 nullsub_8
803094C4 00000004 803094C4 0 nullsub_9
8030953C 0000004C 8030953C 0 __ct__12CGraphicsSysFRC10COsContextRC10CMemorySysUiPv
8031594C 00000054 8031594C 0 __nw__FUiPCcPCc
8033A7D0 000000A8 8033A7D0 0 __ct__11CResFactoryFv
8033BA48 00000194 8033BA48 0 LoadNewResourceSync__10CResLoaderFRC10SObjectTagPCc
803408B4 00000148 803408B4 0 __ct__11CSimplePoolFR8IFactory
80340FE4 000000E0 80340FE4 0 __ct__6CTokenFP4IObj
8034A758 00000004 8034A758 0 nullsub_15
8034E5A0 0000004C 8034E5A0 0 Initialize__14CMemoryCardSysFv
80354F78 00000004 80354F78 0 nullsub_22
8036F9B0 00000008 8036F9B0 0 PPCMfmsr
8036F9B8 00000008 8036F9B8 0 PPCMtmsr
8036F9C0 00000008 8036F9C0 0 PPCMfhid0
8036F9D0 00000008 8036F9D0 0 PPCfl2cr
8036F9D8 00000008 8036F9D8 0 PPCMtl2cr
8036F9F0 00000014 8036F9F0 0 PPCHalt
8036FA04 00000020 8036FA04 0 PPCMffpscr
8036FA24 00000028 8036FA24 0 PPCMtfpscr
8036FA4C 00000008 8036FA4C 0 PPCMfhid2
8036FA54 00000008 8036FA54 0 PPCMthid2
8036FA70 00000028 8036FA70 0 PPCDisableSpeculation
8036FA98 00000008 8036FA98 0 PPCSetFpIEEEMode
8036FAA0 00000008 8036FAA0 0 PPCSetFpNonIEEEMode
8036FAA8 00000028 8036FAA8 0 DBInit
8036FB28 0000001C 8036FB28 0 __DBIsExceptionMarked
8036FB44 00000050 8036FB44 0 DBPrintf
80371D80 000000CC 80371D80 0 DVDInit
803741CC 000000D0 803741CC 0 DVDInquiryAsync
8037C3AC 00000004 8037C3AC 0 nullsub_10
8037D920 00000128 8037D920 0 ClearArena
8037DA84 00000378 8037DA84 0 OSInit
8037DDFC 00000280 8037DDFC 0 OSExceptionInit
8037E07C 00000024 8037E07C 0 __OSDBIntegrator
8037E0A4 0000001C 8037E0A4 0 __OSSetExceptionHandler
8037E0C0 00000014 8037E0C0 0 __OSGetExceptionHandler
8037E1C8 00000038 8037E1C8 0 __OSPSInit
8037E200 00000014 8037E200 0 __OSGetDIConfig
8037E214 0000002C 8037E214 0 OSRegisterVersion
8037E240 0000004C 8037E240 0 OSInitAlarm
8037E28C 00000010 8037E28C 0 OSCreateAlarm
8037E29C 00000250 8037E29C 0 InsertAlarm
8037E4EC 00000068 8037E4EC 0 OSSetAlarm
8037E554 0000007C 8037E554 0 OSSetPeriodicAlarm
8037E5D0 0000011C 8037E5D0 0 OSCancelAlarm
8037E6EC 00000230 8037E6EC 0 DecrementerExceptionCallback
8037E96C 00000008 8037E96C 0 OSGetArenaHi
8037E974 00000008 8037E974 0 OSGetArenaLo
8037E97C 00000008 8037E97C 0 OSSetArenaHi
8037E984 00000008 8037E984 0 OSSetArenaLo
8037E98C 0000002C 8037E98C 0 OSAllocFromArenaLo
8037E9B8 000001BC 8037E9B8 0 __OSInitAudioSystem
8037EB74 000000D8 8037EB74 0 __OSStopAudioSystem
8037EC4C 00000014 8037EC4C 0 DCEnable
8037EC60 0000002C 8037EC60 0 DCInvalidateRange
8037EC8C 00000030 8037EC8C 0 DCFlushRange
8037ECBC 00000030 8037ECBC 0 DCStoreRange
8037ECEC 0000002C 8037ECEC 0 DCFlushRangeNoSync
8037ED18 0000002C 8037ED18 0 DCStoreRangeNoSync
8037ED44 0000002C 8037ED44 0 DCZeroRange
8037ED70 00000034 8037ED70 0 ICInvalidateRange
8037EDA4 00000010 8037EDA4 0 ICFlashInvalidate
8037EDB4 00000014 8037EDB4 0 ICEnable
8037EDC8 000000CC 8037EDC8 0 __LCEnable
8037EE94 00000038 8037EE94 0 LCEnable
8037EECC 00000028 8037EECC 0 LCDisable
8037EF18 00000024 8037EF18 0 LCStoreBlocks
8037EFE8 000000AC 8037EFE8 0 LCStoreData
8037F094 0000000C 8037F094 0 LCQueueLength
8037F0A0 00000018 8037F0A0 0 LCQueueWait
8037F0B8 00000098 8037F0B8 0 L2GlobalInvalidate
8037F150 00000160 8037F150 0 DMAErrorHandler
8037F2B0 000000F4 8037F2B0 0 __OSCacheInit
8037F3A4 00000124 8037F3A4 0 __OSLoadFPUContext
8037F4C8 00000128 8037F4C8 0 __OSSaveFPUContext
8037F5F8 0000005C 8037F5F8 0 OSSetCurrentContext
8037F654 0000000C 8037F654 0 OSGetCurrentContext
8037F660 00000080 8037F660 0 OSSaveContext
8037F6E0 000000D8 8037F6E0 0 OSLoadContext
8037F7B8 00000008 8037F7B8 0 OSGetStackPointer
8037F7F0 00000024 8037F7F0 0 OSClearContext
8037F814 000002A8 8037F814 0 OSDumpContext
8037FABC 00000084 8037FABC 0 OSSwitchFPUContext
8037FB40 00000048 8037FB40 0 __OSContextInit
8037FB88 00000080 8037FB88 0 OSReport
8037FC08 0000012C 8037FC08 0 OSPanic
8037FD34 00000218 8037FD34 0 OSSetErrorHandler
8037FF4C 000002E8 8037FF4C 0 __OSUnhandledException
8038183C 00000014 8038183C 0 OSDisableInterrupts
80381850 00000014 80381850 0 OSEnableInterrupts
80381864 00000024 80381864 0 OSRestoreInterrupts
80381888 0000001C 80381888 0 __OSSetInterruptHandler
803818B8 00000074 803818B8 0 __OSInterruptInit
803820A8 00000004 803820A8 0 nullsub_27
803820AC 00000004 803820AC 0 nullsub_26
803829D4 00000018 803829D4 0 __OSModuleInit
803833D0 00000278 803833D0 0 OSResetSystem
80383678 000000F4 80383678 0 __OSResetSWInterruptHandler
803845E0 00000064 803845E0 0 __OSInitSystemCall
80384648 00000158 80384648 0 __OSThreadInit
803847BC 00000040 803847BC 0 OSDisableScheduler_0
803847FC 00000040 803847FC 0 OSDisableScheduler
80384CC8 00000030 80384CC8 0 __OSReschedule
80385584 00000018 80385584 0 OSGetTime
8038559C 00000008 8038559C 0 OSGetTick
803855A4 00000064 803855A4 0 __OSGetSystemTime
80385608 00000058 80385608 0 __OSTimeToSystemTime
80385A00 00000020 80385A00 0 __init_user
80389B30 0000005C 80389B30 0 __cvt_fp2unsigned
80389DA8 00000138 80389DA8 0 __div2i
8038E010 0000007C 8038E010 0 vprintf
8039D434 00000004 8039D434 0 nullsub_60
803B0D98 00000004 803B0D98 0 nullsub_11
803B3EE4 00000004 803B3EE4 0 nullsub_16
803B40E0 00000004 803B40E0 0 nullsub_59
803B46CC 00000004 803B46CC 0 nullsub_12
803B525C 00000004 803B525C 0 nullsub_13
803B7D70 00000004 803B7D70 0 nullsub_14
803BF17C 000000B4 803BF17C 0 SIInit

1894
GM8E01-0-01/objects Normal file

File diff suppressed because it is too large Load Diff

47
hopper_import_objects.py Normal file
View File

@ -0,0 +1,47 @@
doc = Document.getCurrentDocument()
file_path = Document.askFile('Select Object File', None, False)
if file_path is not None:
with open(file_path, 'r') as file:
while True:
l = file.readline()
if l is None:
break
parts = l.split(' ', 3)
address = int(parts[0], 16)
segment = doc.getSegmentAtAddress(address)
if segment is None:
continue
if parts[1] == 'FUNC':
segment.markAsProcedure(address)
elif parts[1] == 'STR':
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_ASCII)
elif parts[1] == 'WSTR':
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_UNICODE)
elif parts[1] == 'BYTE':
if parts[2]:
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_INT8)
else:
segment.setTypeAtAddress(address, 1, Segment.TYPE_INT8)
elif parts[1] == 'WORD':
if parts[2]:
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_INT16)
else:
segment.setTypeAtAddress(address, 2, Segment.TYPE_INT16)
elif parts[1] == 'DWORD':
if parts[2]:
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_INT32)
else:
segment.setTypeAtAddress(address, 4, Segment.TYPE_INT32)
elif parts[1] == 'FLOAT':
if parts[2]:
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_INT32)
else:
segment.setTypeAtAddress(address, 4, Segment.TYPE_INT32)
doc.setOperandFormat(address, 0, Document.FORMAT_FLOAT)
elif parts[1] == 'DOUBLE':
if parts[2]:
segment.setTypeAtAddress(address, parts[2], Segment.TYPE_INT64)
else:
segment.setTypeAtAddress(address, 8, Segment.TYPE_INT64)
doc.setOperandFormat(address, 0, Document.FORMAT_FLOAT)
segment.setNameAtAddress(address, parts[3])