TASEmulators / TASEmulators/BizHawk

Evaluate pointers in RAM watch

Open
#377 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Request: Feature/Enhancement Tool: RAM Watch
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

I've been doing some work with N64 games using BizHawk 1.9.1 lately and have 
run into the issue of games storing data I want to monitor in different areas 
of memory each execution, locating them using a pointer + offset system.

An example is character position in Donkey Kong 64. The 4 byte pointer is 
located at 0x807FBB4C and X, Y & Z position values are 4 byte floats stored at 
[base + 0x7C], [base + 0x80] and [base + 0x84] respectively, where base is the 
location on the system bus that 0x807FBB4C points to.

Monitoring these values requires me to write some Lua to resolve the pointer 
and display the value on screen or hook BizHawk with an external tool that 
supports pointer evaluation such as Cheat Engine.

Needless to say both workarounds aren't as elegant as using BizHawk's built in 
tools for watching and poking values. This feature would make my work a lot 
quicker and allow distribution of tables to the TAS and glitch hunting 
communities without bundling Lua scripts that simply evaluate pointers.

Thanks in advance, Isaac.

Original issue reported on code.google.com by partyatm...@gmail.com on 21 Jan 2015 at 3:51

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with BizHawk's RAM watch tools and the existing Lua workaround described in the issue. Trace how watched addresses and offsets are currently represented, then define the pointer-resolution behavior using the Donkey Kong 64 example. Done means RAM watch can resolve a pointer plus offset for monitored values without requiring Lua or an external tool.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.