+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Help me figure out the whole pointer thing.
Pages: 1 [2] 3 4
Author Topic: Help me figure out the whole pointer thing.  (Read 2 times)
DarknessSavior
Guest
« Reply #15 on: March 24, 2008, 03:59:43 pm »

You know, I gave you ASM advice for pointers, back when you were asking about how to add space to Romancing SaGa.  :banghead:

http://www.romhacking.net/forum/index.php/topic,5044.15.html

~DS
Rai
Guest
« Reply #16 on: March 24, 2008, 06:24:39 pm »

Quote from: RedComet on March 24, 2008, 03:39:47 pm
Quote from: Rai on March 24, 2008, 12:25:39 pm
I'm thinking I should just give up though. I've tried a bunch of techniques, take the hex of the start text and decrease it to 2 hex values and flip it. Take the hex of the start text, subtract 200 THEN flip it. I just don't think this is ever going to make sense to me. FOR INSTANCE, in Fire Emblem: Monshou no Nazo 0x71A3C, is the "hex" offset of the starting text(Unless they perhaps wanted me to use "465468" the decimal value). I decreased it to 2 values, 1A and 3C, then I flipped them. But then however, I search for the pointers, modify them and nothing happens.

I'm trying to find the pointers for the text...
Quote
マルス王子
タリス城から
シーダ様がこられました

I've already expanded the rom, but that means nothing if I can't calculate the pointers.

Followed most tuts and I figured out a pointer of 3C18 and guess whaT? Didn't work and I did exactly what the tuts said.

You have to take the $10 byte header that NES ROMs have into account. So, using your example, you'd take $71A3C and subtract $10 from that leaving you with $71A2C. Then you take the last byte and search the ROM for that, so you're searching for $2C. Note that you're not searching for $2C1A. That $1A most likely won't be in the pointer. Instead it'll probably be something like $2CXA where X is between 8 and F.

EDIT: Ooops. It seems this is an SNES game. I was under the impression you were working on the NES version. Anyway, it's practically the same.

Do yourself a favor when dealing with SNES ROMS. Before you begin searching for pointers, open the ROM in a hex editor and jump ahead to the end of the file. Look at the offset. Does it end in $200? If so, you've got a header, remove the first $200 bytes of the ROM, otherwise don't do anything. The header in SNES ROMs is useless and you're better off removing it.

Anyway, take the lowest byte of the string address $71A3C. In this case that would be $3C. Search the ROM for this value and test each potential pointer. By potential pointer I mean a pair of bytes that are "$3CXA", where X is any value between 0 and F. Alternatively you could find the pointers by doing a quick ASM trace, though I'm willing to bed that's out of your league at this point (no offense).
Well tried that WITH a header and literally searched every byte between 0-F for 3CXA and found no potential matches. I'm gonna try to see what removing the header and finding the new offset will do though. Then again how does that ASM thing work? It sounds a lot easier than this calculating stuff.
Nightcrawler
Guest
« Reply #17 on: March 24, 2008, 07:09:28 pm »

http://www.romhacking.net/forum/index.php/topic,6012.msg95377.html#msg95377

See my post there. You're not going to be finding these pointers like that unfortunately.
weissvulf
Guest
« Reply #18 on: March 24, 2008, 07:57:38 pm »

 :cookie:
« Last Edit: March 28, 2008, 12:41:49 pm by weissvulf »
Rai
Guest
« Reply #19 on: March 24, 2008, 08:18:14 pm »

So is the best thing for me to do to get anywhere with this project like learning ASM? And to look at "game code" I basically need an assembler right?
RedComet
Guest
« Reply #20 on: March 24, 2008, 09:05:57 pm »

Quote from: Rai on March 24, 2008, 08:18:14 pm
So is the best thing for me to do to get anywhere with this project like learning ASM? And to look at "game code" I basically need an assembler right?

A debugger, trace logger or disassembler, not an assembler.
Rai
Guest
« Reply #21 on: March 24, 2008, 10:45:22 pm »

I was messing around with the NES version of Fire Emblem, and did the standard pointer procedure. Eventually I searched and searched and found a 2 bytes which I think might be pointers, "95 EE". Being a newbie I'm probably wrong, but when I modified these "bytes" it messed up the map, which is why I assume they're pointers. So for you more experienced guys out there, is this a pointer?
RedComet
Guest
« Reply #22 on: March 24, 2008, 10:47:46 pm »

I've merged your new thread with this one. There was no reason to create a new thread when you were basically asking the same thing as you did in this one.
weissvulf
Guest
« Reply #23 on: March 25, 2008, 12:34:45 am »

Maybe it would be a good idea for you to learn by playing around with the pointers on a game where they are easy to find and change.

You could likely find a pointer tutorial that walks you through finding pointers on a specific game. If you follow along step by step with the tutorial, it might give you a better idea of what a text pointer is since you could see the actual results of changing one.

Rai
Guest
« Reply #24 on: March 25, 2008, 09:10:56 am »

Even with those walkthrough tutorials it's confusing. For instance, Madhacker's tut says there should be a string in Final Fantasy called "Nothing here", but when I search the game with a table, "Nothing" and "here" are in two different spots. But I don't see what's wrong though, after all I did follow the procedure when looking for those SNES pointers. Maybe it's unstandard for Fire Emblem? I don't know. All I know is I did the whole "standard" procedure right...

3DEA5 is the hex offset where Marth's Japanese name begins.

I subtract 10 and get 3DE95...

I chop of the first number and get DE95.

Split em and got DE 95.

Switched em' got 95 DE.

Searched that, no results.

Searched 95XE

For x literally searched every byte from 0-F, tried modify those, nothing.

Then tried 95DX, did the same thing, nothing.

Maybe they're non standard?
Nightcrawler
Guest
« Reply #25 on: March 25, 2008, 11:34:10 am »

That's just ONE way pointers MAY be stored. Pointers can be very relative in nature, meaning you're not going to find any looking for specific ROM addresses turned backwards, forwards, or plugged into E=MC2 because the game doesn't work like that. There are many possibilities of how a game derives it's pointers. For example, a game may have just one pointer to block of data that contains text somewhere in it. Then it will add various amounts to the main pointer or increment this main pointer position according to what it's doing with the data. It will then come across the text it needs that way. Other games use string counters and find their text that way. Other games add string lengths to find the text.

That's why you can't just do the process you're doing an expect to find pointers in any game. It doesn't work like that. It's very game specific.

You need to understand why each step is there and then understand why it may not work in many cases. There's simply no magic way to find pointers in every game. There are some ways such as MadHackers tutorial that will apply to a good handful of games because it's a common way pointers are stored sometimes, but it's still severely limited in scope.

Perhaps what you're missing is not understanding game mechanics and the fact that they vary immensely from game to game. I don't know how else to explain it to you. As I've said before you need to back to simple, well documented games to start to understand what goes on in a game. You're constantly jumping into things beyond your level. You're just not ready because you're missing understanding of several key concepts. You're in the same boat you were in last year having trouble with the same concepts. You never take my advice seemingly because you're not willing to invest the time studying and experimenting with other more documented games to learn how things work.
Deathlike2
Guest
« Reply #26 on: March 25, 2008, 11:56:42 am »

Quote from: Nightcrawler on March 25, 2008, 11:34:10 am
As I've said before you need to back to simple, well documented games to start to understand what goes on in a game.

Great suggestion... couldn't have said that any better.

Quote
Perhaps what you're missing is not understanding game mechanics and the fact that they vary immensely from game to game.

You're constantly jumping into things beyond your level. You're just not ready because you're missing understanding of several key concepts. You're in the same boat you were in last year having trouble with the same concepts.

It's either the questions that are asked and/or simply not understanding the game is really the problem. There's no focus in each post made, so the repeated attempts to ask the same/bad questions is becoming a vicious cycle and needs to stop at some point.
Rai
Guest
« Reply #27 on: March 25, 2008, 01:03:56 pm »

Quote from: Nightcrawler on March 25, 2008, 11:34:10 am
That's just ONE way pointers MAY be stored. Pointers can be very relative in nature, meaning you're not going to find any looking for specific ROM addresses turned backwards, forwards, or plugged into E=MC2 because the game doesn't work like that. There are many possibilities of how a game derives it's pointers. For example, a game may have just one pointer to block of data that contains text somewhere in it. Then it will add various amounts to the main pointer or increment this main pointer position according to what it's doing with the data. It will then come across the text it needs that way. Other games use string counters and find their text that way. Other games add string lengths to find the text.

That's why you can't just do the process you're doing an expect to find pointers in any game. It doesn't work like that. It's very game specific.

You need to understand why each step is there and then understand why it may not work in many cases. There's simply no magic way to find pointers in every game. There are some ways such as MadHackers tutorial that will apply to a good handful of games because it's a common way pointers are stored sometimes, but it's still severely limited in scope.

Perhaps what you're missing is not understanding game mechanics and the fact that they vary immensely from game to game. I don't know how else to explain it to you. As I've said before you need to back to simple, well documented games to start to understand what goes on in a game. You're constantly jumping into things beyond your level. You're just not ready because you're missing understanding of several key concepts. You're in the same boat you were in last year having trouble with the same concepts. You never take my advice seemingly because you're not willing to invest the time studying and experimenting with
other more documented games to learn how things work.
Well that's not really true. I've taken all your advice, read almost every pointer document out there and still can't find them. What are these "key" concepts I'm missing that keep me from finding these pointers so I can fit in to the game, what I need to fit in? I have to be perfectly honest, that's all I care about is learning whatever I need to, in order to fit in all the text I want to fit in. All I can do now really, is work with what limited space I have.
« Last Edit: March 25, 2008, 01:09:17 pm by Rai »
RedComet
Guest
« Reply #28 on: March 25, 2008, 01:20:27 pm »

Quote from: Rai on March 25, 2008, 01:03:56 pm
Well that's not really true. I've taken all your advice, read almost every pointer document out there and still can't find them. What are these "key" concepts I'm missing that keep me from finding these pointers so I can fit in to the game, what I need to fit in? I have to be perfectly honest, that's all I care about is learning whatever I need to, in order to fit in all the text I want to fit in. All I can do now really, is work with what limited space I have.

Please tell us what you've learned from reading those docs. That way we know what you understand and what you don't. If that's too much, let's start with a simple question: what's a pointer?
Rai
Guest
« Reply #29 on: March 25, 2008, 01:25:01 pm »

Quote from: RedComet on March 25, 2008, 01:20:27 pm
Quote from: Rai on March 25, 2008, 01:03:56 pm
Well that's not really true. I've taken all your advice, read almost every pointer document out there and still can't find them. What are these "key" concepts I'm missing that keep me from finding these pointers so I can fit in to the game, what I need to fit in? I have to be perfectly honest, that's all I care about is learning whatever I need to, in order to fit in all the text I want to fit in. All I can do now really, is work with what limited space I have.

Please tell us what you've learned from reading those docs. That way we know what you understand and what you don't. If that's too much, let's start with a simple question: what's a pointer?
Well let's start with what I DO know. A pointer is basically a place in the rom that points somewhere else to the rom. I know that whenever I ask however add space, I get "pointers" and people tell me to read the docs. I read the docs and try to apply the techniques, but nothing happens. So what I DON'T know is how to calculate the pointers and find them correctly. And what I also know is finding the pointers will help me to insert everything I need into the game.

What don't I know?

I don't know how to make "Mars" "Marth" if the game only let's you use 4 spaces. That's what I'm trying to do, extend it a space so I can put "Marth".
Pages: 1 [2] 3 4  


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