News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Binarynova

Pages: [1]
Secret of Mana has a really large deadzone you can walk around before the game starts scrolling the map. This was likely done to accommodate having multiple players on the same screen at once. But in single-player it's more of an annoyance. You have to get so close to the edge of the screen for it to start scrolling that enemies appear right on top of you. So I'd like to shrink this dead zone to something a bit more reasonable (for single-player playthroughs).

I opened my Secret of Mana ROM (actually the VWF rom) in Snes9x-rr, and using some data from a RAM map and a little searching I found the values in RAM that represent the player's x and y coordinates relative to the screen. When you reach the point of scrolling, they stick to a particular value. So now I have those numbers:
Code: [Select]
0x38 to 0xC6 - horizontally
0x48 to 0xAD - vertically

In between those values the player moves freely. Hit those values and continue in that direction, and the map scrolls. Yay!

So, here's where my research breaks down. I don't know assembly, but I am a C# programmer, so I figured there must be a set of conditional statements in the ROM somewhere that have those values hardcoded. Something like:
Code: [Select]
if(hpos <= 0x38)
  scroll screen left
if(hpos >= 0xC6)
  scroll screen right
if(vpos <= 0x48)
  scroll screen up
if(vpos >= 0xAD)
  scroll screen down

So I guess my question is, am I even on the right track? Is it likely to be as easy as finding those 4 values relatively close together in the ROM with a simple hex editor?

Pages: [1]