ROM Hack How do I get started in editing/hacking roms and ram?

  • Thread starter Thread starter blacktoads
  • Start date Start date
  • Views Views 6,007
  • Replies Replies 3

blacktoads

Member
Newcomer
Joined
May 7, 2015
Messages
8
Reaction score
0
Trophies
0
Age
31
XP
110
Country
United States
Hi im really interested in finding out on how to hack rom or hack ram so that i could produce ar codes or modify stats, damage and etc in the game.

I have read multiple ar code guides and i dont know how people find addresses for complex ar codes such as metroid aimbot hack and im not sure how they get the correct values and bytes for these addresses.

Im actually trying to hack an old childhood game its called dragonball supersonic warriors 2.

A youtuber named arphics had created an ar code for the boss option for the player. Of course he wouldnt share the code. So i thought maybe i should try to find the code myself. After going into the ram and experimenting the only thing i found interesting was modifying the sprite value. The ar code: 220D05150 0000003 if im not wrong or if i missed a digit. This code only works for the opponent. I was thinking since there is an address for the opponent why wouldnt there be an address for the player. So i went to all 020D051XX codes and put the value 3 and couldnt find the code :(. The only information i have is that there is no character values for the bosses so the code wouldnt be a player modifier i think.
 
Heh, been a while since I met code hoarding. Oh well.

Start by starting -- the nice thing about computers is you can copy and paste and restore anything you messed up.

Cheat code making guide wise I always liked
https://web.archive.org/web/20080309104350/http://etk.scener.org/?op=tutorial

Also worth having
https://doc.kodewerx.org/hacking_nds.html#arcodetypes
https://doc.kodewerx.org/tools.html#gba

For ROM hacking I will pimp my own docs here
https://gbatemp.net/threads/gbatemp-rom-hacking-documentation-project-new-2016-edition-out.73394/

Follow along with a guide so you have an idea of the steps. Now branch out a bit and make a similar code that is not known, maybe for the same game, maybe just for another region, maybe just make the other "infinite whatever" hacks for the game even if codes already exist (if they differ then figure out why).

Aimbots is an interesting one I don't see much of. 2 approaches most would take for a 3d game
If there is some kind of lock on camera the game already knows where something is, however they might stop short of giving it to a weapon. Trip it over.
If not there will still be some info on the location of the thing in question in memory somewhere (make yourself invincible and with infinite time and you can probably sit there doing nothing, pressing what has changed every few frames as they move above and then find out where this location data is kept.

Force boss characters or something.
You were on the right path, however you might have got the value too far down the line. Also is this just a cosmetic hack or do you expect it to have some different moves?
Still if you start a match/stage with different characters do the standard cheat search but for the characters. You should be able to use a savestate, though make sure to be hovering over a different selection before making your final one (most games will only pick when you press confirm selection but some get a bit excited and have it when hovering over).

"old childhood game"... *2005*
Thank you for my daily "wow you are old" reminder.
 
Thanks for the links :)
Update: someone has found the ar codes wow!
Boss Player 1 AR Code (EU) 221075E2 00000004 220DD510 00000003
credits to yt: DiamondTenkaichi
i dont know how he found the code that enables you to switch places with the client.
Id like to know how this was done.
Just yesterday i was looking at 02107xxx codes because i looked into ar codes for this game and pokemon and saw that in relation it was a power modifier code. still couldnt find the code though lol. I even tried comparing savestates in hxd to see the changes.

I dont know why, but nds gameplay just reminds of the days when I was a kid and I met another kid who had a modified car and other modified textures in mario kart at the Airport. It was just rare to see someone else especially at a young age that knows how to modify nds roms.
 
I will have to check what goes.
With the DS you have two main approaches to code making

1) RAM codes as classically known and understood where you alter things made during the runtime of the game to give you more stuff, less stuff, infinite something or maybe change level/time/aspects of the game within what is technically a standard parameter.
2) Still technically RAM codes but as the binary is in memory they have more in common with classic game genie ROM altering codes. Here you will be altering the assembly code* of the game and with that you can do all sorts of things.

Changing to appear as a boss character could be either of those. Easy enough to test though ndsts from http://www.no-intro.org/tools.htm or crystaltile2 will tell you where the binary is put in RAM when it is run. If the code lands within that or one of the overlay sections then it is that and you want to look accordingly.

For the character stuff then I will go more basic for an example. I am sure we have all played games where some super rare item is only found a few times throughout a game, however there is also a shop. It would be trivial for the devs to add said item to the shop but they don't so it is rare.
Likewise from a code perspective if you have a game with character selection and code that runs upon said characters (including when they maybe appear as NPCs) it might be trivial for a character to be selected but if it never can in normal play, or is only available for certain segments. Your nice memory editor trips this value into the unselectable (via the normal means) character and bam you have a play as boss/npc mod. Most would find it by finding a normal character select code (make a savestate, select a character, start a mission, check memory, load savestate, new character, check for changes, load, new character, changes, load, maybe the same character and select same for an elimination run of some things that otherwise stay the same...) and then realising that devs are lazy so if the character selected value starts at 0 you just go up one and try them all, and if they do not immediately yield results then if the value goes between 0 and 255 or something (despite being nowhere near that many characters) then most devs will then leap to 255 and go backwards, or go to the next round number and start counting from there -- maybe you end up brute forcing it, and maybe there is something you can watch like AI missions, demo modes or a cutscene rendered in game engines that will use the same area, but you get there in the end.

The other option is if all the sprites for said character are somewhere you find the thing that looks it up and add or subtract enough that the game (which has no knowledge of what it is doing -- computers merely crunch numbers and checking on things is a waste of CPU unless you are pelting people with gamma rays and have to make sure something funky is not happening).



*the binary does not have to be assembly code and I have fished various text lines, graphics, level data, some music, stats tables and more out of them over the years so technically you could still be doing a classic stats table mod.
 

Site & Scene News

Popular threads in this forum