<
From version < 31.5 >
edited by Hugo Peters
on 2021/03/07 03:47
To version < 32.1 >
edited by nuggs
on 2021/03/07 13:33
>
Change comment: DLL list

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Hugo_Peters
1 +XWiki.nuggs
Content
... ... @@ -79,7 +79,7 @@
79 79  
80 80  The end offset is calculated using the next DLL's start offset.
81 81  
82 -= Loaded DLL table =
82 += Loaded DLL List =
83 83  
84 84  The list at address {{code}}0x800A7D10{{/code}} describes which DLLs are currently loaded by the game, with {{code}}0x800A7D14{{/code}} being the number of currently loaded DLLs.
85 85  Each entry looks like this:
... ... @@ -87,10 +87,12 @@
87 87  (% border="0" %)
88 88  |=Offset|=Size|=Description
89 89  |0x00|4|DLL ID
90 -|0x04|4|? 1 if DLL is loaded?
91 -|0x08|4|Address to DLL
92 -|0x0C|4|Address to DLL data section?
90 +|0x04|4|Reference count
91 +|0x08|4|Pointer to exports table
92 +|0x0C|4|Pointer to end of DLL memory
93 93  
94 +Once the reference count becomes zero the DLL is overwritten with {{code}}0x0007000D{{/code}} (break instructions) and is subsequently freed. This is presumably to assist debugging use-after-frees, but would only be useful until the memory is reallocated to something else.
95 +
94 94  = DLLs =
95 95  
96 96  Below is a table of the DLLs for each bank and their use.