@@ -23,7 +23,8 @@ internal class GameMemoryRE8Scanner : IDisposable
2323
2424 // Pointer Address Variables
2525 private int pointerPropsManager ;
26- private int pointerRankManager ;
26+ private int pointerRankManagerMain ;
27+ private int pointerRankManagerDLC1 ;
2728 private int pointerInventory ;
2829 private int pointerAddressEnemies ;
2930
@@ -32,7 +33,8 @@ internal class GameMemoryRE8Scanner : IDisposable
3233 private MultilevelPointer PointerPlayerStatus { get ; set ; }
3334 private MultilevelPointer PointerPlayerHP { get ; set ; }
3435 private MultilevelPointer PointerPlayerPosition { get ; set ; }
35- private MultilevelPointer PointerRankManager { get ; set ; }
36+ private MultilevelPointer PointerRankManagerMain { get ; set ; }
37+ private MultilevelPointer PointerRankManagerDLC1 { get ; set ; }
3638
3739 // Enemy Pointers
3840 private MultilevelPointer PointerEnemyEntryList { get ; set ; }
@@ -161,7 +163,8 @@ private void SelectPointerAddresses(int pid)
161163 {
162164 pointerInventory = 0x0C9B7810 ; // app_InventoryManager *
163165 pointerPropsManager = 0x0C9C4960 ; // app_PropsManager *
164- pointerRankManager = 0x0C9B7958 ; // app_RankManager *
166+ pointerRankManagerMain = 0x0C9B7958 ; // app_RankManager *
167+ pointerRankManagerDLC1 = 0x0C9B7648 ;
165168 pointerAddressEnemies = 0x0C9FC1C0 ; // app_MoveManager *
166169 break ;
167170 }
@@ -201,11 +204,16 @@ private void SelectPointerAddresses(int pid)
201204 0x50
202205 ) ;
203206
204- PointerRankManager = new MultilevelPointer (
207+ PointerRankManagerMain = new MultilevelPointer (
205208 memoryAccess ,
206- IntPtr . Add ( BaseAddress , pointerRankManager )
209+ IntPtr . Add ( BaseAddress , pointerRankManagerMain )
207210 ) ;
208211
212+ PointerRankManagerDLC1 = new MultilevelPointer (
213+ memoryAccess ,
214+ IntPtr . Add ( BaseAddress , pointerRankManagerDLC1 )
215+ ) ;
216+
209217 PointerActiveInventory = new MultilevelPointer (
210218 memoryAccess ,
211219 IntPtr . Add ( BaseAddress , pointerInventory ) ,
@@ -253,7 +261,7 @@ private void SelectPointerAddresses(int pid)
253261 {
254262 pointerInventory = 0x0A06B7F0 + 0x10F0 ; // app_InventoryManager
255263 pointerPropsManager = 0x0A06B900 + 0x10F0 ; // app_PropsManager
256- pointerRankManager = 0x0A06B920 + 0x10F0 ; // app_RankManager
264+ pointerRankManagerMain = 0x0A06B920 + 0x10F0 ; // app_RankManager
257265 pointerAddressEnemies = 0x0A06B880 + 0x10F0 ; // app_MoveManager
258266 break ;
259267 }
@@ -264,53 +272,53 @@ private void SelectPointerAddresses(int pid)
264272 {
265273 pointerInventory = 0x0A06B7F0 ; // app_InventoryManager
266274 pointerPropsManager = 0x0A06B900 ; // app_PropsManager
267- pointerRankManager = 0x0A06B920 ; // app_RankManager
275+ pointerRankManagerMain = 0x0A06B920 ; // app_RankManager
268276 pointerAddressEnemies = 0x0A06B880 ; // app_MoveManager
269277 break ;
270278 }
271279 case GameVersion . RE8_CEROD_20210810_3 :
272280 {
273281 pointerInventory = 0x0A06B7F0 + 0x2000 ;
274282 pointerPropsManager = 0x0A06B900 + 0x2000 ;
275- pointerRankManager = 0x0A06B920 + 0x2000 ;
283+ pointerRankManagerMain = 0x0A06B920 + 0x2000 ;
276284 pointerAddressEnemies = 0x0A06B880 + 0x2000 ;
277285 break ;
278286 }
279287 case GameVersion . RE8_CEROZ_20210810_3 :
280288 {
281289 pointerInventory = 0x0A06B7F0 + 0x1000 ;
282290 pointerPropsManager = 0x0A06B900 + 0x1000 ;
283- pointerRankManager = 0x0A06B920 + 0x1000 ;
291+ pointerRankManagerMain = 0x0A06B920 + 0x1000 ;
284292 pointerAddressEnemies = 0x0A06B880 + 0x1000 ;
285293 break ;
286294 }
287295 case GameVersion . RE8_WW_20210719_2 :
288296 {
289- pointerRankManager = 0x0A05CFF8 ;
297+ pointerRankManagerMain = 0x0A05CFF8 ;
290298 pointerInventory = 0x0A06A5B8 ;
291299 pointerAddressEnemies = 0x0A0698B0 ;
292300 pointerPropsManager = 0x0A042F88 ;
293301 break ;
294302 }
295303 case GameVersion . RE8_CEROD_20210719_2 :
296304 {
297- pointerRankManager = 0x0A05CFF8 + 0x2000 ;
305+ pointerRankManagerMain = 0x0A05CFF8 + 0x2000 ;
298306 pointerInventory = 0x0A06A5B8 + 0x2000 ;
299307 pointerAddressEnemies = 0x0A0698B0 + 0x2000 ;
300308 pointerPropsManager = 0x0A042F88 + 0x2000 ;
301309 break ;
302310 }
303311 case GameVersion . RE8_CEROZ_20210719_2 :
304312 {
305- pointerRankManager = 0x0A05CFF8 + 0x1000 ;
313+ pointerRankManagerMain = 0x0A05CFF8 + 0x1000 ;
306314 pointerInventory = 0x0A06A5B8 + 0x1000 ;
307315 pointerAddressEnemies = 0x0A0698B0 + 0x1000 ;
308316 pointerPropsManager = 0x0A042F88 + 0x1000 ;
309317 break ;
310318 }
311319 case GameVersion . RE8_PROMO_01_20210426_1 :
312320 {
313- pointerRankManager = 0x0A1A50C0 + 0x1030 ;
321+ pointerRankManagerMain = 0x0A1A50C0 + 0x1030 ;
314322 pointerInventory = 0x0A1B29F0 + 0x1030 ;
315323 pointerAddressEnemies = 0x0A1B1D00 + 0x1030 ;
316324 pointerPropsManager = 0x0A18D990 + 0x1030 ;
@@ -320,23 +328,23 @@ private void SelectPointerAddresses(int pid)
320328 case GameVersion . RE8_UNK_20210710_1 :
321329 case GameVersion . RE8_UNK_20210714_1 :
322330 {
323- pointerRankManager = 0x0A1A50C0 ;
331+ pointerRankManagerMain = 0x0A1A50C0 ;
324332 pointerInventory = 0x0A1B29F0 ;
325333 pointerAddressEnemies = 0x0A1B1D00 ;
326334 pointerPropsManager = 0x0A18D990 ;
327335 break ;
328336 }
329337 case GameVersion . RE8_CEROD_20210506_1 :
330338 {
331- pointerRankManager = 0x0A1A50C0 + 0x2000 ;
339+ pointerRankManagerMain = 0x0A1A50C0 + 0x2000 ;
332340 pointerInventory = 0x0A1B29F0 + 0x2000 ;
333341 pointerAddressEnemies = 0x0A1B1D00 + 0x2000 ;
334342 pointerPropsManager = 0x0A18D990 + 0x2000 ;
335343 break ;
336344 }
337345 case GameVersion . RE8_CEROZ_20210508_1 :
338346 {
339- pointerRankManager = 0x0A1A50C0 + 0x1000 ;
347+ pointerRankManagerMain = 0x0A1A50C0 + 0x1000 ;
340348 pointerInventory = 0x0A1B1C70 + 0x1000 ;
341349 pointerAddressEnemies = 0x0A1B1D00 + 0x1000 ;
342350 pointerPropsManager = 0x0A18D990 + 0x1000 ;
@@ -378,9 +386,9 @@ private void SelectPointerAddresses(int pid)
378386 0x50
379387 ) ;
380388
381- PointerRankManager = new MultilevelPointer (
389+ PointerRankManagerMain = new MultilevelPointer (
382390 memoryAccess ,
383- IntPtr . Add ( BaseAddress , pointerRankManager )
391+ IntPtr . Add ( BaseAddress , pointerRankManagerMain )
384392 ) ;
385393
386394 PointerActiveInventory = new MultilevelPointer (
@@ -493,7 +501,8 @@ internal void UpdatePointers()
493501 PointerPlayerHP . UpdatePointers ( ) ;
494502 PointerPlayerPosition . UpdatePointers ( ) ;
495503
496- PointerRankManager . UpdatePointers ( ) ;
504+ PointerRankManagerMain . UpdatePointers ( ) ;
505+ PointerRankManagerDLC1 . UpdatePointers ( ) ;
497506
498507 PointerEnemyEntryList . UpdatePointers ( ) ;
499508 GenerateEnemyEntries ( ) ;
@@ -514,7 +523,11 @@ internal unsafe IGameMemoryRE8 Refresh()
514523 gameMemoryValues . _playerPosition = PointerPlayerPosition . Deref < GamePlayerPosition > ( 0x180 ) ;
515524
516525 // DA
517- GameRank gameRank = PointerRankManager . Deref < GameRank > ( 0x70 ) ;
526+ GameRank gameRank ;
527+ if ( PointerRankManagerDLC1 . Address != IntPtr . Zero )
528+ gameRank = PointerRankManagerDLC1 . Deref < GameRank > ( 0x70 ) ;
529+ else
530+ gameRank = PointerRankManagerMain . Deref < GameRank > ( 0x70 ) ;
518531 gameMemoryValues . _rankScore = gameRank . Score ;
519532 gameMemoryValues . _rank = gameRank . Rank ;
520533
0 commit comments