Add SmartHeap for LEGO1 (#1694)

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
jonschz
2025-10-12 07:36:36 +02:00
committed by GitHub
parent e355b55907
commit fe5a238ae1
3 changed files with 321 additions and 9 deletions

View File

@@ -324,9 +324,6 @@
// GLOBAL: ISLE 0x411850 // GLOBAL: ISLE 0x411850
// __cflush // __cflush
// XGLOBAL ISLE 0x4125f8
// ?_pnhHeap@@3P6AHI@ZA
// GLOBAL: ISLE 0x412888 // GLOBAL: ISLE 0x412888
// ___setlc_active // ___setlc_active

View File

@@ -9,12 +9,6 @@
// LIBRARY: LEGO1 0x10086260 // LIBRARY: LEGO1 0x10086260
// ??3@YAXPAX@Z // ??3@YAXPAX@Z
// LIBRARY: LEGO1 0x1008a090
// _malloc
// LIBRARY: LEGO1 0x1008a100
// _calloc
// LIBRARY: LEGO1 0x1008a1c0 // LIBRARY: LEGO1 0x1008a1c0
// _free // _free
@@ -940,6 +934,15 @@
// GLOBAL: LEGO1 0x100dd1c0 // GLOBAL: LEGO1 0x100dd1c0
// IID_IDirect3DRM2 // IID_IDirect3DRM2
// LIBRARY: LEGO1 0x1008c960
// ?_query_new_handler@@YAP6AHI@ZXZ
// LIBRARY: LEGO1 0x1008c970
// ?_query_new_mode@@YAHXZ
// GLOBAL: LEGO1 0x100fd8ec
// __newmode
// Cannot be handled right now due to anonymous pointer in struct. // Cannot be handled right now due to anonymous pointer in struct.
// We can annotate it on the original side, but we have no symbol on the recomp side. // We can annotate it on the original side, but we have no symbol on the recomp side.
// We would need a way of annotating "the pointer at c_dfDIKeyboard+0x14 has orig address 0x10097f80". // We would need a way of annotating "the pointer at c_dfDIKeyboard+0x14 has orig address 0x10097f80".

312
LEGO1/library_smartheap.h Normal file
View File

@@ -0,0 +1,312 @@
#if 0
// LIBRARY: LEGO1 0x100861d0
// ?shi_New@@YAPAXKIPAU_SHI_Pool@@@Z
// LIBRARY: LEGO1 0x10086270
// _MemInitDefaultPool@0
// LIBRARY: LEGO1 0x100862e0
// _shi_call_new_handler_msc
// LIBRARY: LEGO1 0x10086310
// _MemPoolShrink@4
// LIBRARY: LEGO1 0x10086440
// _MemPoolPreAllocate@12
// LIBRARY: LEGO1 0x100865c0
// @_shi_initPageHeaders@4
// LIBRARY: LEGO1 0x10086830
// @shi_allocPageHeader@4
// LIBRARY: LEGO1 0x10086860
// @shi_freePageHeader@8
// LIBRARY: LEGO1 0x10086a10
// @_shi_deletePage@8
// LIBRARY: LEGO1 0x10086af0
// @_shi_allocExternal@12
// LIBRARY: LEGO1 0x10086d10
// @_shi_initPageVariable@8
// LIBRARY: LEGO1 0x10086dc0
// _MemAllocPtr@12
// LIBRARY: LEGO1 0x10087020
// @_shi_allocVar@12
// LIBRARY: LEGO1 0x100871b0
// @_shi_allocBlock@12
// LIBRARY: LEGO1 0x10087380
// _MemFreePtr@4
// LIBRARY: LEGO1 0x10087430
// @_shi_freeVar@4
// LIBRARY: LEGO1 0x10087520
// _MemReAllocPtr@12
// LIBRARY: LEGO1 0x10087670
// @_shi_resizeAny@16
// LIBRARY: LEGO1 0x10087910
// @_shi_resizeVar@8
// LIBRARY: LEGO1 0x10087ae0
// _MemSizePtr@4
// LIBRARY: LEGO1 0x10087b90
// @shi_findAllocAddress@4
// LIBRARY: LEGO1 0x10087bd0
// @_shi_sysAlloc@8
// LIBRARY: LEGO1 0x10087c60
// @_shi_sysFree@4
// LIBRARY: LEGO1 0x10087cc0
// @_shi_sysRealloc@12
// LIBRARY: LEGO1 0x10087d70
// @_shi_sysResize@12
// LIBRARY: LEGO1 0x10087e50
// @_shi_sysSize@4
// LIBRARY: LEGO1 0x10087e90
// @_shi_sysAllocNear@4
// LIBRARY: LEGO1 0x10087eb0
// @_shi_sysFreeNear@4
// LIBRARY: LEGO1 0x10087ed0
// @_shi_sysValidatePtr@12
// LIBRARY: LEGO1 0x10087fd0
// @_shi_sysValidateFunction@4
// LIBRARY: LEGO1 0x100885c0
// @_shi_sysAllocPool@12
// LIBRARY: LEGO1 0x100887e0
// @_shi_sysResizePool@16
// LIBRARY: LEGO1 0x10088950
// @_shi_sysFreePage@4
// LIBRARY: LEGO1 0x10088a70
// @_shi_sysSizePage@4
// LIBRARY: LEGO1 0x10088aa0
// @_shi_sysSizePool@8
// LIBRARY: LEGO1 0x10088ac0
// @_shi_registerShared@16
// LIBRARY: LEGO1 0x10088cc0
// @_shi_unregisterShared@8
// LIBRARY: LEGO1 0x10088de0
// @_shi_getNextPool@4
// LIBRARY: LEGO1 0x10088df0
// @shi_delNextPool@4
// LIBRARY: LEGO1 0x10088ff0
// @shi_createAndEnterMutexShr@12
// LIBRARY: LEGO1 0x100890e0
// @shi_termPoolMutexShr@4
// LIBRARY: LEGO1 0x10089100
// @shi_enterPoolMutexShr@4
// LIBRARY: LEGO1 0x10089120
// @shi_leavePoolMutexShr@4
// LIBRARY: LEGO1 0x10089140
// __shi_enterCriticalSection@0
// LIBRARY: LEGO1 0x10089160
// __shi_leaveCriticalSection@0
// LIBRARY: LEGO1 0x10089180
// __shi_createAndEnterMutex
// LIBRARY: LEGO1 0x100891b0
// _shi_enterPoolMutexSafely
// LIBRARY: LEGO1 0x10089290
// _shi_enterPoolInitMutexReader
// LIBRARY: LEGO1 0x10089320
// _shi_leavePoolInitMutexReader
// LIBRARY: LEGO1 0x10089350
// _shi_enterPoolInitMutexWriter
// LIBRARY: LEGO1 0x10089420
// _shi_leavePoolInitMutexWriter
// LIBRARY: LEGO1 0x10089440
// _shi_isNT
// LIBRARY: LEGO1 0x10089470
// _MemPoolInit@4
// LIBRARY: LEGO1 0x100897e0
// _MemPoolSetPageSize@8
// LIBRARY: LEGO1 0x100898f0
// _MemPoolSetBlockSizeFS@8
// LIBRARY: LEGO1 0x100899d0
// @_shi_poolFree@8
// LIBRARY: LEGO1 0x10089b80
// @_shi_invokeErrorHandler1@8
// LIBRARY: LEGO1 0x10089ea0
// _MemErrorUnwind@0
// LIBRARY: LEGO1 0x10089ef0
// _MemDefaultErrorHandler@4
// LIBRARY: LEGO1 0x10089f70
// @_shi_taskRemovePool@4
// LIBRARY: LEGO1 0x1008a010
// @_shi_getCurrentThreadContext@8
// LIBRARY: LEGO1 0x1008a070
// @_shi_deleteThreadContext@8
// LIBRARY: LEGO1 0x1008a090
// _malloc
// LIBRARY: LEGO1 0x1008a100
// _calloc
// LIBRARY: LEGO1 0x1008a160
// _realloc
// LIBRARY: LEGO1 0x1008a1d0
// __expand
// LIBRARY: LEGO1 0x1008a210
// __heapadd
// LIBRARY: LEGO1 0x1008a220
// __heapwalk
// LIBRARY: LEGO1 0x1008a2b0
// __heapused
// LIBRARY: LEGO1 0x1008a2e0
// __heapmin
// LIBRARY: LEGO1 0x1008a300
// __msize
// LIBRARY: LEGO1 0x1008a310
// __heapchk
// LIBRARY: LEGO1 0x1008a340
// __heapset
// LIBRARY: LEGO1 0x1008a350
// @_shi_sysReportError@16
// LIBRARY: LEGO1 0x1008a3d0
// _MemPoolSize@4
// LIBRARY: LEGO1 0x1008a460
// _MemPoolWalk@8
// LIBRARY: LEGO1 0x1008a500
// @_shi_walkPool@16
// LIBRARY: LEGO1 0x1008a800
// @shi_isBlockInUseSmall@8
// LIBRARY: LEGO1 0x1008aac0
// @_shi_isBlockInUseFS@12
// LIBRARY: LEGO1 0x1008ab40
// _MemPoolCheck@4
// LIBRARY: LEGO1 0x1008ade0
// _MemCheckPtr@8
// GLOBAL: LEGO1 0x100da970
// _szLibName
// GLOBAL: LEGO1 0x100fc528
// ?_new_handler@@3P6AXXZA
// GLOBAL: LEGO1 0x100fc530
// _MemDefaultPool
// GLOBAL: LEGO1 0x100fc54c
// __shi_compactPoolFn
// GLOBAL: LEGO1 0x100fc550
// __shi_compactPageFn
// GLOBAL: LEGO1 0x100fc554
// _MemDefaultPoolFlags
// GLOBAL: LEGO1 0x100fc55c
// __shi_mutexGlobalInit
// GLOBAL: LEGO1 0x100fc560
// __shi_mutexMovInit
// GLOBAL: LEGO1 0x100fc564
// __shi_mutexMovLockCount
// GLOBAL: LEGO1 0x100fc568
// _shi_initPoolReaders
// GLOBAL: LEGO1 0x100fc56c
// _shi_eventInitPool
// GLOBAL: LEGO1 0x100fc570
// _shi_mutexMovShr
// GLOBAL: LEGO1 0x100fc598
// _shi_deferFreePools
// GLOBAL: LEGO1 0x100fc5a8
// __shi_poolTerminating
// GLOBAL: LEGO1 0x100fc5ac
// _MemDefaultPoolBlockSizeFS
// GLOBAL: LEGO1 0x100fc5b0
// _MemDefaultPoolPageSize
// GLOBAL: LEGO1 0x100fc5b4
// _SmartHeap_malloc
// GLOBAL: LEGO1 0x100fc7e0
// __shi_TaskRecord
// GLOBAL: LEGO1 0x10109368
// ?_pnhHeap@@3P6AHI@ZA
// GLOBAL: LEGO1 0x101095a0
// __shi_mutexMov
// GLOBAL: LEGO1 0x101095c0
// _shi_mutexPoolSynch
// GLOBAL: LEGO1 0x101095e0
// __shi_mutexGlobal
#endif