Skip to content

[Feature Request] Support for Dynamic Offsets in Pointer Chains #1153

@CySlaytor

Description

@CySlaytor

In the RetroAchievements documentation, there's a mention of using the Remember flag for calculated pointer offsets:

"An address that points to a table of data, but in order to know where in the table you want to go, you have to calculate the offset from another source."

I would like to request a similar feature to support tracking pointer chains with dynamic offsets, which would be beneficial for certain games, including the PS2 game I'm working on.

Use Case

  • The game stores a table of data (array) in memory, where each entry consists of 32-bit values representing pointers to specific variables.
  • However, these pointers are randomly assigned within the table, making it impossible to reliably track the correct pointer through a fixed offset.
  • I do have access to another known memory address that holds a value matching one of the entries in this table.
  • If the system could scan the table for a matching value, it would allow dynamic resolution of the correct pointer, ultimately leading to my target variable.

Image

Proposed Solution

  • Implement a way to search a table of memory values dynamically and find the matching entry.
  • Once found, allow tracking the corresponding pointer that eventually leads to the desired variable.
  • This would effectively support pointer chains with dynamic offsets, which is necessary for some games where offsets are not fixed.

Why This is Useful

  • Many games, especially on platforms like PS2, **do use dynamic pointer offset sometimes ** and instead dynamically assign them in memory.
  • A feature like this would allow achievements to track variables with non-fixed memory locations.
  • It expands RetroAchievements' capabilities to support more complex memory structures.

I would really like to see something like this be implemented. I hope you take my request into considertaion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions