Register | Login | |||||
Main
| Memberlist
| Active users
| Calendar
| Chat
| Online users Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album |
| |
0 users currently in ROM Hacking. |
Acmlm's Board - I3 Archive - ROM Hacking - Disassembly help | New poll | | |
Add to favorites | Next newer thread | Next older thread |
User | Post | ||
interdpth Mole MZM rapist Since: 11-18-05 Last post: 6295 days Last view: 6295 days |
| ||
Not sure if this should go in here or in Programming.
I'm disassembling a function in Metroid Zero Mission I know the basics of assembly now. My question though is how can I find out how if it's accessing an array or a struct how would I be able to recognize this stuff. Oh, any explanations would be helpful thanks! |
|||
never-obsolete Paragoomba Since: 05-14-06 From: AZ Last post: 6297 days Last view: 6297 days |
| ||
|
|||
labmaster Red Paragoomba Since: 11-18-05 From: Away for exams, back mid-December. Last post: 6371 days Last view: 6301 days |
| ||
With THUMB code you often see data in structs accessed by a ldrx reg, [base, #imm].
It's really important that you have some idea of what the function is supposed to do, and what the memory that is accessed represents. After you've done quite a lot of RE you'll get the hang of recognising what higher level control/data structures look like in assembly, it'll just take time. If you've got any specific examples you'd like some help with, post them here and I'll take a look. |
|||
Ryusui Red Paragoomba Since: 06-15-06 Last post: 6414 days Last view: 6309 days |
| ||
Listen to Labmaster. His VBA-SDL-H is a romhacker's tactical nuke for GBA programming.
On a side note, Labmaster...while you're here, do you know of any good GBA disassemblers? Something that would allow me to selectively dismantle a piece of ROM into code I could just run back through Goldroad (which still appears to have a couple of bugs, but hey) and get something I could insert back into the original file? I've come to a fateful decision with my SF4 VWF...I'm going to rip the guts out of the entire print routine and refashion the whole damn thing in my own image. Of course, this entails that I have its slippery intestines in hand to remake into my cat's cradle... If you look at my avatar, you'll see what I've got done in action...sorta. 1, the text is just barely legible in that squashed screencap, and 2, it's displaying a quote from SMT3: Nocturne's opening...but it's functioning nonetheless. Problem is, the print routine used in the actual game uses most of the same functions but works slightly differently, so if I'm going to get it to look right everywhere, my one and only option is to do some massive code surgery. Bah, here's what it looks like unsquashed. Click to view. (edited by Ryusui on 06-18-06 02:36 AM) |
|||
labmaster Red Paragoomba Since: 11-18-05 From: Away for exams, back mid-December. Last post: 6371 days Last view: 6301 days |
| ||
I use a copy of IDA I found lying around for most of my 'major' disassembly work (which isn't really that often) as it has a lot of nifty interactive disassembly functions (hence the name) that can save you a lot of time when you're doing a lot of work on the single game. Unfortunately, it's syntax doesn't quite match that of Goldroad:
(ignore the symbols 'StringID', 'VRAMBufferPtr' etc... one of it's aforementioned handy features). You could probably run a couple of regex's over it to smooth things out, though. Alternatively, if you can't get your hands on IDA you could use VBA-SDL's 'dt' command (or 'da') will disassemble chunks of code to the console (use dt I'm not sure if there are any other disassembler out there that will disassemble to a more assembler-friendly format, you might want to try googling for generic ARM7 assemblers/disassembler - hopefully there's something out there that'll save you some time. (edited by labmaster on 06-18-06 06:26 AM) |
|||
Ryusui Red Paragoomba Since: 06-15-06 Last post: 6414 days Last view: 6309 days |
| ||
Right now, I'm assembling source code by copy-and-pasting each line from a trace file or typing them in manually using vanilla VBA's disassembler. Anything would be a time improvement, not to mention an accuracy one: I realized to my horror at one point that if I had made any kind of mistake, I'd have to compare hundreds of lines of code to find it. My shortcut was to dump the original binary code and use WindHex's file compare to check for any differences (apart from the fact that Goldroad 1.6 and 1.7 compile ldrh instructions as ldsb ones at inappropriate times; I had to work around that to make my code behave properly); it worked well, but I'd prefer to be sure the first time. | |||
interdpth Mole MZM rapist Since: 11-18-05 Last post: 6295 days Last view: 6295 days |
| ||
I went out and purchased No$GBA for $15 dollars cheap, and well worth the money. |
Add to favorites | Next newer thread | Next older thread |
Acmlm's Board - I3 Archive - ROM Hacking - Disassembly help | | |