+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  SMB2(USA) - Ending Pointers Help
Pages: [1]
Author Topic: SMB2(USA) - Ending Pointers Help  (Read 2 times)
Hamtaro126
Guest
« on: February 02, 2009, 10:43:02 pm »

Here are my Notes in Hex:
$0b-$0a (ending pointer/stored addresses)

SMB2 Final:
$A4 $DD (DDA4, Part 1)
$AB $D3 (D3AB, Part 2)

SMB2 Proto:
$A4 $C4 (C4A4, Part 1)
$AC $77 (77AC, Part 2)

Unfortunately, These pointers seem to be not found anywhere in neither ROMS in Little and Big endian. post here if you have any thing, or if I missed anything
Ryusui
Guest
« Reply #1 on: February 02, 2009, 10:48:52 pm »

This, my friend, is where you start tracing.

Set a read breakpoint to where the text is stored in the ROM and work backwards.
Hamtaro126
Guest
« Reply #2 on: February 02, 2009, 10:57:03 pm »

Quote from: Ryusui on February 02, 2009, 10:48:52 pm
This, my friend, is where you start tracing.

Set a read breakpoint to where the text is stored in the ROM and work backwards.

There is a couple types of ''Pointers'', One is for TEXT, One is for Indirect JSRs, It is #2: Indirect JSR.

Hint: They are like the ones used in SMB1. Where you set a LDA, JSR, then a few pointers in WORD format. But I do not see them. The Hex editor I am using is XVI32.
Disch
Guest
« Reply #3 on: February 02, 2009, 11:45:21 pm »

If you don't know where the pointers are, how do you know what format they're in?

Did you try tracing like Ryusui suggested?  The game has to read the text from ROM at some point -- so set a read breakpoint on that text and figure out how the game is reading it, and trace back to find out how it's getting the pointer (could be hardcoded, or some kind of mathematical calculation -- or the pointers might just be stored abnormally)
Hamtaro126
Guest
« Reply #4 on: February 03, 2009, 12:40:39 am »

Quote from: Disch on February 02, 2009, 11:45:21 pm
If you don't know where the pointers are, how do you know what format they're in?

Did you try tracing like Ryusui suggested?  The game has to read the text from ROM at some point -- so set a read breakpoint on that text and figure out how the game is reading it, and trace back to find out how it's getting the pointer (could be hardcoded, or some kind of mathematical calculation -- or the pointers might just be stored abnormally)


Oh, Now I got it, These Pointers are basically used for storing addresses in a different format than using the Indirect JSR way.


Example:

LoPointers:
.db <Pointerbyte1, <Pointerbyte2 (etc...)
HiPointers:
.db >Pointerbyte1, >Pointerbyte2 (etc...)

It'd be a couple seperate BYTE areas instead of words. That might help
Disch
Guest
« Reply #5 on: February 03, 2009, 09:46:17 am »

Quote from: Hamtaro126 on February 03, 2009, 12:40:39 am
That might help

Err... wait.

I thought you found them and were giving an example of how they were stored (which is certainly a possible way they could be stored).

But then this "That might help" line makes me think that you didn't find them and are just guessing as to what format they're stored in.

So.... did you find them?  Did you try actually tracing anything yet?

Also there is no Indirect JSR on the NES, and I'm not sure how you figured that there were two different types of pointers like you said in an earlier post.  The pointer for an Indirect JMP isn't necessarily stored any differently than a regular pointer.  Pointers are usually stored as a simple little endian word (for both JMP (n) and LDA (n),Y).  Though this is definately not always the case, as you can see.
Pages: [1]  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC