Hey Retro, I come to you today to see if any of you can help shed some light on this topic for me. I am looking to hack a game. The name of the game is irrelevant in this context, as I was hoping to gain knowledge that could be transferred between different games. 1. I conducted my initial search through the rom using a hex editor and found some raw ASCII text strings which are useful to the game (stage names, character names, that sort of thing). 2. I looked through the rom with TLP to try to find any uncompressed art but to no avail. I could not find any uncompressed art in this particular rom. Now, what I am asking is where to go from here. How can I find any important offsets or pointers that will help me out in the future? If the graphics are not uncompressed, how should I go about trying to find if they are compressed in any way? Would this require deep knowledge of the game in question or would it simply be a matter of trial and error / deduction? Would I need to use a corrupter for this level of task? As a side note, how exactly do corrupters' work, do they simply FF all of the data within a specific range, if so, why not do it by hand? Cheers
I'm just going to be that guy and say that this probably belongs in Tech Discussion, as E&RE is for Sonic games.
IDA Pro is a wonderful disassembler, however it's not cheap. (Of course you could always find a cracked version floating around on the net somewhere...) Depending on which console the game is for, you could possibly find a free disassembler somewhere. With compressed sprites usually their data consists of repeated bytes, bellow is a screenshot of a compressed sprite from Sonic Chaos. Of course different games use different compression formats. Finally when hacking a game, it's best to have some knowledge of the language the game was written in, trust me it'll make hacking a certain game much easier of course.
Hey, Sorry, I wasn't sure if it belonged in E&RE because of it's hacking stance. Thank you for moving it to the more appropriate place. At the moment I am going to stick to Megadrive / Genesis games just because I know more about them than other consoles. Ravenfreak - I assume I would set up the import and go through pressing 'C' (I think it was C, it's been a little while since I played with it). I have a little ASM knowledge of the 68k but not a huge amount, so if I did stumble across the area where sprites are located / loaded, how would I know? Aside from that, do you us IDA Pro to find offsets and then write them down for use in a Hex Editor?
It's been a while since I've used TLP, but try setting it to different standards (genesis and master system are probably the 2 main possibilities, but you never know) and also there's a way to change the start point (ie *02 instead of *00), which can change the interpretation of the data and reveal uncompressed art. You might know all this already, but it's good to start with the basics. You could also locate the uncompressed VRAM data in an emulators save state in TLP, then search for those hex strings in the main rom, just to make doubly sure.
I'm doing the same with Shining Force, and starting off really basic. Simply finding where the palettes are located in the ROM first. Also been finding which RAM offsets are for what... but that probably should come a little later.
Let me save you a lot of trouble. I did all this stuff years ago, and rubixcuber (and the rest of the crew) did the rest. Shining Force II has had the shit hacked out of it too, along with Shining in the Darkness... and I've heard real progress with III.
What I usually do while hacking a new game, I see if there's any cheats that effect the ram and try different ram addresses. Also I've never actually used IDA pro but I'm assuming it splits the code away from data such as sprites. With SMS games, SMS examine will split code as well as data. Which game are you hacking, I'm curious if you don't mind sharing.
MUCH thanks! I'll definitely look into this immediately. I dunno your ability level Elektro-Omega, but I'm a beginner with hacking outside of Sonic... here is something I'm looking at... dunno if it's of any use to you or not.
doc eggfan: That is quiet a good idea. I never considered changing a start offset to shift all of the data, I will definitely give it a try. Ravenfreak: I am keeping the project on the lowdown at the moment, just because I don't want to get people excited if it doesn't turn out right. I know this isn't necessarily a good decision as it reduces the amount of support people can offer. At the moment, I am just flicking through to random Hex addresses and FF them all to see how it effects the game. I will probably be able to try some different techniques once I understand a little bit more. KingOfHarts: That link is very useful. I'm kind of only using IDA Pro to see if there are any useful offsets visible but so far I have come up short. If I absolutely have to, I will need to split it into an ASM file and plan a way for it to be built and edited easily. Overall, I have found some quiet useful stuff in the rom but no breakthroughs. I am still searching though and I hope to find something awesome soon. Thanks for your help everyone and keep chipping in, it's fun to learn.
Heh... I'm kinda tryin' to do the same with a Neo Geo title (Fatal Fury Special, if you're wondering), except I'm taking advantage of 'wasted' (unoptimized) space to add in missing text for Ryo Sakazaki, the hidden character, in all three languages in the ROMset. So far, I've optimized the messages, and found space for English and Spanish, but the Japanese one is currently being a pain in my ass, thanks to having to figure out the character map on my own, and not having the proper characters available (yeah, they only have a limited selection of kanji in the game). In addition, if possible, I'd like to add an ending screen for him as well (using the art for after he wins or you come back to 1P mode from a 2P match and face him), but so far, I've settled for just not having a glitchy-looking half of the title screen object in its place. But considering the stumbling block I've run into, I've got no clue what I'm gonna do now.
So I've checked out the link above, for Shining Force, and amSTILL going to try my hand at making my own disassembly, to learn how to do it. Here is an .asm of my work so far... Can someone who has experience in making a disassembly take a peek and see how I've done? I'm sure I've made mistakes, and I still don't know a lot about how to use IDA Pro... but for a Day 1 user, I'd like to think I'm not doing THAT badly. Take a look.