Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Learning how to edit hex... | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
Clockworkz

Birdo

"Hoargh! Take your shoes off!"
Level: 64

Posts: 1675/2002
EXP: 2188320
For next: 25777

Since: 03-15-04
From: Undisclosed

Since last post: 12 hours
Last activity: 12 hours
Posted on 07-10-05 12:57 AM Link | Quote
I'm trying to sift through some data in Castlevania 4 for the SNES. Does anyone have any pointers for me? I don't know what parts are level data, or palettes, or weapon data, or anything like that. Can someone give me some helpful advice for Hex Editing? I'm using Hex Workshop.
NetSplit

Koopa
Level: 19

Posts: 65/117
EXP: 30378
For next: 5399

Since: 04-05-04

Since last post: 1 day
Last activity: 1 hour
Posted on 07-10-05 01:09 AM Link | Quote
"I don't know what parts are level data, or palettes, or weapon data, or anything like that."

Well that's what you're trying to find out, heh. I recommend you go read a document that covers hex editing if you're finding it baffling. I recommend Vagla's Art of ROM Hacking document, although it's directed toward those hacking NES. I'm hoping the techniques in it might come in handy for you with SNES hacking. I'm not the most knowledgable in SNES hacking, myself; the most I've ever found for it is level data by simply looking through a ROM. Thus, I don't think I can really help you any further.

Good luck!
Clockworkz

Birdo

"Hoargh! Take your shoes off!"
Level: 64

Posts: 1676/2002
EXP: 2188320
For next: 25777

Since: 03-15-04
From: Undisclosed

Since last post: 12 hours
Last activity: 12 hours
Posted on 07-10-05 01:19 AM Link | Quote
It helped, a bit. I now know that the level data is compressed. What is the compression format for SNES games?
(Jeez... how do you SNES hackers find all this shit? )
Squash Monster

New Age Retro Hippie
Togateiru Fohku Kohgeki!!
GRUNGE no HAMSTER otona bite
Peace love and turnpike!

Level: 40

Posts: 630/677
EXP: 430507
For next: 10802

Since: 03-15-04
From: Maryland (of the Country Between Canada and Mexico)

Since last post: 5 hours
Last activity: 5 hours
Posted on 07-10-05 03:19 AM Link | Quote
There is no one compression format. Each individual game developer will use the best format that they can come up with.

Your choices are pretty much limited to corrupting, using a tracer, or searching for bits of level data that don't seem likely to be compressed.


(edited by Squash Monster on 07-09-05 06:20 PM)
Clockworkz

Birdo

"Hoargh! Take your shoes off!"
Level: 64

Posts: 1677/2002
EXP: 2188320
For next: 25777

Since: 03-15-04
From: Undisclosed

Since last post: 12 hours
Last activity: 12 hours
Posted on 07-10-05 03:31 AM Link | Quote
Tracer? Please embellish...
beneficii

Lakitu
Level: 36

Posts: 250/567
EXP: 299656
For next: 8454

Since: 06-27-04
From: Cordova, TN, USA

Since last post: 14 hours
Last activity: 6 hours
Posted on 07-10-05 05:00 AM Link | Quote
Originally posted by Clockworkz
Tracer? Please embellish...


Some emulators have an option where you can trace the program code as it's being executed. In other words, you run the tracer and the emulator continues to run (albeit much slower) and it will record code as it is executed to a text file. You can then open up that text file (which will definitely be too big for Notepad ) and read the instructions as they are executed. A good tracer will also give the current values of the Accumulator, X and Y Registers, the Status Bits, and the Program Counter for each instruction. Basically, you can look at how the code accesses the data and try to figure out how that data is stored from that. For example, if you want to look for the code on loading a map, you should run the tracer during the time when in-game you do something that causes the map to be loaded and then trace it. A warning, though, you don't want to run the tracer for too long, or the text file'll be so big no editor can load it without having a serious drain on memory.

Of course, you need to know the assembly to the processor you're trying to trace. In the SNES's case, it's the 65816.
Clockworkz

Birdo

"Hoargh! Take your shoes off!"
Level: 64

Posts: 1678/2002
EXP: 2188320
For next: 25777

Since: 03-15-04
From: Undisclosed

Since last post: 12 hours
Last activity: 12 hours
Posted on 07-10-05 05:09 AM Link | Quote
This sounds wayyy too complicated for me. I guess I'll leave Super Castlevania 4 hacking to the smart people (I'd really like to see an editor for this game).
Squash Monster

New Age Retro Hippie
Togateiru Fohku Kohgeki!!
GRUNGE no HAMSTER otona bite
Peace love and turnpike!

Level: 40

Posts: 631/677
EXP: 430507
For next: 10802

Since: 03-15-04
From: Maryland (of the Country Between Canada and Mexico)

Since last post: 5 hours
Last activity: 5 hours
Posted on 07-10-05 09:00 AM Link | Quote
Theres still corruption. There's always corruption.
beneficii

Lakitu
Level: 36

Posts: 255/567
EXP: 299656
For next: 8454

Since: 06-27-04
From: Cordova, TN, USA

Since last post: 14 hours
Last activity: 6 hours
Posted on 07-10-05 10:12 AM Link | Quote
Clockworkz,

It's not. It's just reading through code. A tracer can be powerful if, like, the level data is compressed. You can read through the code and try to find how the data is uncompressed. (Level data will tend to be stored in RAM somewhere, so use that as your first lead.) Once you know how it's uncompressed, you can compress it yourself.

In fact, a tracer may very well prove to be the undoing of FuSoYa's lock that prevents people from editing certain SMW hacks. As you know, when the game loads in an emulator, it still has to get the level data. Ergo, there's a piece of ASM stashed in the game that undoes whatever FuSoYa's locker does. Ergo, a tracer would be the best way to find out what.


(edited by beneficii on 07-10-05 01:13 AM)
(edited by beneficii on 07-10-05 01:15 AM)
dan

Snap Dragon
Level: 43

Posts: 644/782
EXP: 534516
For next: 30530

Since: 03-15-04

Since last post: 20 hours
Last activity: 14 hours
Posted on 07-10-05 10:42 PM Link | Quote
Originally posted by beneficii
In fact, a tracer may very well prove to be the undoing of FuSoYa's lock that prevents people from editing certain SMW hacks. As you know, when the game loads in an emulator, it still has to get the level data. Ergo, there's a piece of ASM stashed in the game that undoes whatever FuSoYa's locker does. Ergo, a tracer would be the best way to find out what.


That was cracked a while ago by Parasyte.
beneficii

Lakitu
Level: 36

Posts: 263/567
EXP: 299656
For next: 8454

Since: 06-27-04
From: Cordova, TN, USA

Since last post: 14 hours
Last activity: 6 hours
Posted on 07-10-05 10:49 PM Link | Quote
Originally posted by dan
Originally posted by beneficii
In fact, a tracer may very well prove to be the undoing of FuSoYa's lock that prevents people from editing certain SMW hacks. As you know, when the game loads in an emulator, it still has to get the level data. Ergo, there's a piece of ASM stashed in the game that undoes whatever FuSoYa's locker does. Ergo, a tracer would be the best way to find out what.


That was cracked a while ago by Parasyte.


Oh, hee hee. Is that so.
Clockworkz

Birdo

"Hoargh! Take your shoes off!"
Level: 64

Posts: 1679/2002
EXP: 2188320
For next: 25777

Since: 03-15-04
From: Undisclosed

Since last post: 12 hours
Last activity: 12 hours
Posted on 07-11-05 03:24 AM Link | Quote
OK, I corrupted the ROM in Corrupster, but when I tried to test out the ROM, I couldn't play it. Does anyone have any good corruption tips?
beneficii

Lakitu
Level: 36

Posts: 266/567
EXP: 299656
For next: 8454

Since: 06-27-04
From: Cordova, TN, USA

Since last post: 14 hours
Last activity: 6 hours
Posted on 07-11-05 03:33 AM Link | Quote
Originally posted by Clockworkz
OK, I corrupted the ROM in Corrupster, but when I tried to test out the ROM, I couldn't play it. Does anyone have any good corruption tips?


Try just modifying one or two bytes. Try not to modify code either. I think it takes time, but over time you'll begin to be able to differentiate between code and data better when looking at it through a hex editor. To begin to do this, start learning some of the op codes, so if you see a bunch of op codes together, you'll know it's probably code. Data will tend to have (somewhat) repetitive values and will have a more "open" look. I can't really explain it, it just comes by experience. So just try a couple bytes at a time, load it up in the emulator, see if it works or if it changes anything interesting. Then restore those bytes to their original values and go on. Bascially, if you don't have a decent idea of what the data may look like or where it's stored, you're going to have to do it brute force for a while.
Squash Monster

New Age Retro Hippie
Togateiru Fohku Kohgeki!!
GRUNGE no HAMSTER otona bite
Peace love and turnpike!

Level: 40

Posts: 632/677
EXP: 430507
For next: 10802

Since: 03-15-04
From: Maryland (of the Country Between Canada and Mexico)

Since last post: 5 hours
Last activity: 5 hours
Posted on 07-11-05 06:15 AM Link | Quote
Corrupting:
Pick a large size of ROM that you'll corrupt. 10000(hex) bytes or something. How big this size is depends on what you're looking for and what type of format you expect. Just try some common sense -- you want the biggest range you can get that's not likely to blow anything up.

Skip the first (your size) bytes of the ROM. Corrupt the next (your size) bytes.

If it doesn't work, make note of that and move on to the next set of bytes.
If nothing happens, make note of that and move on.
If something cool happens, subdivide (I'll explain that in a sec).

When you get to the end of the ROM, go through all your "it doesn't work"s and subdivide those.

When I say subdivide, I mean divide the area you corrupted in half. Then try both halves. Once again, write down if it doesn't work or nothing happens, and subdivide again if you got something cool

When you're down to a fairly small area of cool stuff, stop subdividing, and just try to find the start of your cool area. Then work on the format.
Omega45889

Panser
Level: 30

Posts: 281/335
EXP: 148978
For next: 16891

Since: 03-22-04
From: Vancouver Canada

Since last post: 5 days
Last activity: 6 hours
Posted on 07-11-05 02:14 PM Link | Quote
Umm, well, just today, i have gained an immense ammount of knowlege concerning programming, debugging, and assembly. Now, its all computer based knowlege, but its applicable to SNES in a more basic meathod. I think i have a much better grasp of the techniques used in rom hacking. I would strongly suggest reading some documents on HEX, getting that down pat, then learn about pointers and arrays (you probably should read some tutorials on the PC language "C" for this knowlege). It will be very confusing at first, but the satisfaction you will get out of it is huge. Ill consider writing you up a nice tutorial, faq, or getting you some good links sometime tomorrow.

You need to realize that it wont come easy. Its gonna take a lot of concentration, but if you have dedication, you will start to catch on really quickly.

If you have questions, feel free to PM me, or make a post. There are users such as Euclid, or MathonNapkins especially who are extremely talented who can explain stuff to you.

Good luck.

Edit: If your goal is not to learn, but to accomplish one task, then you could try the to use the trial and error meathods people have described. They arent the most time efficient, but they are the simplest, and require almost no previous knowledge or experience.

Also, i intend to write a corrupter of my own to replace the utter crap that is available right now. Ill probably write it in the next few days, and release it when im done.


(edited by Omega45889 on 07-11-05 05:29 AM)
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Learning how to edit hex... | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.016 seconds.