Changing/Editing/Hacking game contents????

Crazy!

Road Runner!
Hiya I was just wondering if it was possible to somehow access a game to edit the contents for example is there a way I could edit Street Fighter 2 or Donkey Kong Country by accessing the game file and adding new characters, stages etc etc???:D
 

Jale

Active member
If you're experienced with hex editing, yes, but there are tools that "simplify" this task, such as Lunar Magic (it's a Super Mario World level editor).
 

Crazy!

Road Runner!
If you're experienced with hex editing, yes, but there are tools that "simplify" this task, such as Lunar Magic (it's a Super Mario World level editor).

Wow, cool! So can you type out some programs I can use to edit games such as Donkey Kong Country, Street Fighter games etc like so I can add characters and stages and stuff???:confused: but i haven't got clue how to us hex???
 
Last edited:

Ryanfaescotland

New member
Have a look around http://www.romhacking.net/ they have some useful downloads.

I'm getting into this myself just now and have found hexediting to be pretty easy. At a hard part now where I'm trying to make a program using Visual Basic that can be used to impliment changes to games using the info I have found hex editing.
 

Crazy!

Road Runner!
wow i've just been on that site and have downloaded a patch for Mario kart (snes) and the hacker has aded new graphics, tracks, music and has even added Kirby as a playable character, how cool, I'm gonna see if it works! If anyone has any resources and can help me figure out how to use Hex editor, I'd be thankful! :):p
 

spotanjo3

Active member
wow i've just been on that site and have downloaded a patch for Mario kart (snes) and the hacker has aded new graphics, tracks, music and has even added Kirby as a playable character, how cool, I'm gonna see if it works! If anyone has any resources and can help me figure out how to use Hex editor, I'd be thankful! :):p

This is not good for you. Go to http://www.romhacking.net/ and that's how I learned from them. :D :p See my some works here:

SNES:
http://forums.emulator-zone.com/showthread.php?t=9177&highlight=Rockman+forte

WonderSwan:
http://forums.emulator-zone.com/showthread.php?t=10240&highlight=Rockman+forte

:)
 
Last edited:

Ryanfaescotland

New member
It's pretty confusing but I'll try and explain some stuff just a couple of questions first.

Do you know what binary is and how it works?
Do you know what hexidecimal is and how it works?
Do you know anything about programming languages such as Visual Basic, C, C++?
Do you have a hexeditor?
 

Crazy!

Road Runner!

Yeah I;ve been looking looking at that site and I downloaded loads of revamped games, whole new games loads for Super Mario World etc wicked and well done on your work. And to Ryanfaescotland - pretty much NO to every single question :D, I've recently downloaded Hexeditor but have not had a chance to use it yet.I try it tomorrow, but I;m gonna use that site to get help, anyway If I need help I'll also ask here. Thanks!:p;)
 

spotanjo3

Active member
Thanks and we will do our best to help you get through it but it is best to go there because they are better than us and they are advance experts. :)
 

Ryanfaescotland

New member
Well Binary and Hex are basicly ways of counting just like we count using Decimal.

With Decimal we have 10 numbers we can use 1 2 3 4 5 6 7 8 9 and 0 and when we run out of numbers but want to add 1 more we raise the number of the column to the left by 1 and go back to 0 ie 07 08 09 10. The columns all have names and you'll have learnt them in primary school but here they are again Units, Tens, Hundreds, Thousands... and so on. If you think about it though that is back to front because if you read the number 128 the Units colunm is the right most column so really it goes Thousands, Hundreds, Tens, Units and this is pretty important when you work with Binary. Heres a little diagram:

Hun......Tens......Units
...1........2...........8


With Binary there are only 2 numbers that can be used, 1 and 0, the reason is to do with chips in the computer being 'on' or 'off' and that's really as much as you need to know as to why. Counting is done just the same as in Decimal ie when you run out of numbers you raise the number in the left column by 1 and go back to 0 but since the only numbers you have are 1 and 0 things soon get complicated as the following example shows:

1,2,3,4 in Decimal converted to Binary is 01,10,11,100. (IMPORTANT - This is not read as one,ten,eleven,one hundred it is read as zero one, one zero, one one, one zero zero remember all that exists in Binary are one's and zero's)

As you can see were already in the 3rd column to the left and we've only counted to 4, what is we want to convert Decimal 128 to Binary 128! Well actually it's not as hard as it sounds thanks to the way Binary happens to work. Just like Decimal numbers have columns so do Binary the difference is Binary columns don't have names like Units Tens Hundreds... instead they just use the Decimal number they represent so this means that the columns go 1,2,4,8,16,32... and so on. HOWEVER remember how in Decimal the list was back to front? Same story here. And it is for this reason that Binary numbers are read right to left The following is Binary 128 with the column titles above:

128...64...32...16...8...4...2...1
..1....0......0.....0....0...0...0..0

Without the column titles or the dots for formatting that is 10000000. But what is you want to show a number that doesn't fit exactly? Well you just put a 1 in all the numbers you use to get that number so Decimal 93 is Binary:

128...64...32...16...8...4...2...1
..0.....1.....0.....1....1...1...0...1 which is 01011101

That's not too bad you may be thinking but remember we are only working with 8 columns and 1 piece of information, in programming every piece of information is stored like this. To give you an idea of how hard it would be to read a programme in Binary consider the following. Certain numbers are used to store letters (you know them A,B,C,D....) typically A is stored as 65 B as 66, C as 67... and so on. This would make my name R Y A N = 82 89 65 78 but of course in Binary we only have 1's and 0's so that makes 82 89 65 78 = 01010010 01011001 01000001 01001110 and if we remove the spaces since Binary doesn't have spaces it just has 1's and 0's we have 01010010010110010100000101001110 and that is just for my name! Imagin the line "Chester has gained a level and has been promoted to the class of Knight!" and how it would look in Binary.

So why don't we just work in Decimal and have something convert it into Binary? Well the programmers of yester-year thought of that and went one better. You see Decimal doesn't fit very well with Binary if you think about the colomns:

Decimal.1000s......100s...........10s........1s
Binary.......256.128......64.32.16......8.4.2.1

Hence Hexadecimal (aka Hex) was created. Unlike Decimal that only has 10 numbers (0123456789) it can use before having to add one to the left column or Binary that only has 2 (01) Hex has 16. Of course there aren't 16 single digit numbers we can use to show this hence the letters A-F are used so Decimal 0-16 converted to Hex is 0123456789ABCDEF. And just like any other counting system once you run out of 'numbers' you add one to the left column and start back at 0 so after F is 10. THAT IS NOT TEN! Smack yourself if you said ten when you read that because it is not, it is one zero. Rember just like Binary you can't say ten because Decimal 10 is Hex A and Hex 10 (One Zero) is Decimal 16 so if you say ten when talking in Hex it will lead to confusion hence always read out the numbers (and letters) individually.

So why is Hex better than Decimal when converting Binary? Well now instead of the highest 2 column number being Decimal 99 or Binary 11 (Decimal 3) it is now Hex FF (Decimal 255) but perhaps more importantly is how well their columns fit together:

Hex.........256................................16.............1
Binary.....256.....128.....64.....32.....16.....8.4.2.1

Which makes everything work nicely when you get to changing things. Consider this: my name (R Y A N) in Binary is 01010010010110010100000101001110 which in Hex is 5259414E. If I was to change the second letter of my name from Y to I that would mean my Binary second letter would change from 01011001 to 01001001 and Hex from 59 to 49. Looking at the two it is clear changing Hex is easier and that is why we use Hexeditors.

And that is what your Hexeditor does, it converts the Binary into Hex so you can easily make changes and then if you choose to save your changes it converts the Hex back to Binary so that the programme can be run. What makes things even easier is that a lot of Hex editors such as Hex Workshop have a split screen display that shows the Hex in one window and the proper text in another so you can search for terms like "RYAN" and easily change them in plain text and have the Hex update itself.



Simple.
 

Crazy!

Road Runner!
Sorry my friend you have just severely baffled my brain cells (whats left of them anyway!:D) I do not understand it one bit, first of all how do you convert text for example my name (Billy) to binary code & then how do you go about converting that to HexCode??? I know you've just explained it but is there a manual or something for severely deformed dummie heads like myself???:D

And how would go about changing characters, adding characters, stages etc to a game such as Street Racer or Street Fighter, it just seems far to complex for my spam head to handle.

I've just found the binary for each letter in the alphabet and this is the binary code for my name:

BILLY = 0100001000001101000010100000110100001010 01001001 01001100 01001100 01011001 :confused:

EDIT X2- I've been reading about it all and I'm starting to understand it a little bit and have been able to edit some text in some games such as Street Racer and I'm starting to understand how to find title screens etc in the ROM Hex data but how would I go about adding deleting a character and giving them a name on the character select, the graphics side of things seems EXTREMELY complicated but the text thingy is getting easier to understand but I can't find a way changing a characters name on the character select screen for Street Racer for example. if anyone know anything about identifying character select screens etc and editing them please help, if not I'll ask on RomHack.net! Thanks!
 
Last edited:

Ryanfaescotland

New member
Yeah that took me ages to type and my head was a bit fried by the end but it got to the point I was like "I can't be assed but well I've wrote this much I might as well keep going."

Your name above looks right enough, well the B does I can't be bothered checking the rest, but remember not all games have the alphabet set from 64=A onwards so sometimes that doesn't work.

Editing graphics is very complex without a graphic editing tool and I can't recommend any since I don't really do any, least not with Street Racer.

I'm better at save state editing rather than rom editing since you can make several different save states and compare them so making changes is pretty easy. Best way if your doing it on savestates is just to go to the character select screen and make a savestate there then change character and make another save state then compare the 2 in the hex editor and see where the changes are then change them in one of the files 1 by 1 and see what effect it has when you load it back in.

Oh and there are hex calculators you can use to convert from hex to decimal to binary so really you don't need to worry about it.
 

Crazy!

Road Runner!
I found a graphics editing tool called FaTILEty, but I just don't understand I've tried looking round for a manual or something but there's nothing theres another one called DirectED. Anyway I'm gonna give some things a try....:happy: And if anyone uses anyone of them can someone explain how I'd go about editing things.
 
Last edited:

spotanjo3

Active member
I found a graphics editing tool called FaTILEty, but I just don't understand I've tried looking round for a manual or something but there's nothing theres another one called DirectED. Anyway I'm gonna give some things a try....:happy: And if anyone uses anyone of them can someone explain how I'd go about editing things.

That is not very simple things. Some graphic are compression and some are decompression. Your best way to practice is NES version. Many nes versions have graphic already decompression. The compression like SNES required alots of skill, difficult and search in binary and asm hack. Use the nes version first.
 
Top