It is currently Mon Oct 15, 2018 10:42 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 28 posts ]  Go to page 1, 2  Next
Author Message
PostPosted: Thu Sep 27, 2018 12:03 am 
Offline
Formerly Espozo
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 3377
Location: Richmond, Virginia
I randomly got to thinking about how the entirety of Super Mario World has disassembled and even had equivalent C code written, and I began to wonder about how many other games where people bothered to go to this sort of level of reverse engineering. I know the original Super Mario Bros. has as well, but with the tremendous amount of work involved, I can't imagine there's much more than that.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 12:15 am 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7546
Location: Chexbres, VD, Switzerland
Final Fantasy has been fully disassembled by Dish. Although it's possible large parts of the code aren't commented yet.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 1:26 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 809
Pokemon Red/Blue. And the original Zelda too.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 4:32 am 
Offline
User avatar

Joined: Thu Aug 13, 2015 4:40 pm
Posts: 297
Location: Rio de Janeiro - Brazil
http://www.romhacking.net/?page=documen ... csearch=Go

There are many games there. Have fun!

ps.: I have in the process of rom hacking experimented with disassembling NES ghostbusters and super pitfall. I have managed to make files that are reassemblable but I think both probably have a considerable amout of code treated as data. Meaning I didn't go far in that process as I didn't see much use in doing that for the task at hand (rom hacking). I prefered to reverse engineer the code using fceux debugger's labels and comments.

_________________
https://twitter.com/bitinkstudios <- Follow me on twitter! Thanks!


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 10:05 am 
Offline

Joined: Sun May 03, 2015 8:19 pm
Posts: 96
I have fully disassembled Tecmo super bowl with tons and tons of comments. I've almost fully re-worked it into nicely buildable asm6 format. However its currently not available for the public.

This is a tiny example. A lot of the comments are excessive now that I have labels and variable names for most everything.


Attachments:
code_example.jpg
code_example.jpg [ 206.36 KiB | Viewed 489 times ]
Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 11:05 am 
Offline
Formerly Espozo
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 3377
Location: Richmond, Virginia
hackfresh wrote:
I have fully disassembled Tecmo super bowl with tons and tons of comments. I've almost fully re-worked it into nicely buildable asm6 format. However its currently not available for the public.

This is a tiny example. A lot of the comments are excessive now that I have labels and variable names for most everything.

Wanting to clean it up before releasing it?

nesrocks wrote:
http://www.romhacking.net/?page=documents&category=13&platform=&game=&author=&perpage=20&level=&title=&desc=&docsearch=Go

There are many games there. Have fun!

I was most impressed to see a disassembly of Gunstar Heroes; there were actually a fair number of Genesis games on there. I wasn't surprised to see there wasn't a single game from the 5th console generation or beyond that has been dissasembled; I wonder how the assembly of code generated by a compiler looks... Ironically, it might be easier to disassemble a PS2 game than a PS1 game with how the games are divided into files, with all executable code having its own file.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 11:22 am 
Online
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10892
Location: Rio de Janeiro - Brazil
People have been using disassemblies to hack Sonic games for years: http://info.sonicretro.org/Disassemblies

I guess that if you look into different niche communities about specific games/franchises you're gonna find that a lot of effort has been put into reverse engineering stuff.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 11:52 am 
Offline

Joined: Thu Oct 13, 2005 10:39 am
Posts: 69
https://github.com/g0me3/bfs_nes_cd2 Chip and Dale 2 disasm (with scripts)
https://github.com/g0me3/bfs_nes_rc3 Robocop 3 disasm
https://github.com/g0me3/bfs_nes_akira Akira disasm
https://github.com/g0me3/bfs_nes_ngb2 New Ghostbusters II disasm (with scripts)
https://github.com/zeromus/DragonWarrior3 Dragon Warrior 3 disasm

as a bonus

https://www.youtube.com/watch?v=Lz6_5ZEqDNU&t=6592s disasm process for gb
https://www.youtube.com/watch?v=wHsT9a_RKtU&t=191s … for nes (more than one video), Russian only sorry

enjoy

also if you interested, I have full disasms for Contra Force, Double Dragon 1/3, Darkwing Duck, Duck Hunt, Battley City, Contra Spirits (Pirate, unprotected), Dancing Block (Sachen, unprotected), Galaxian, Metal Force (Open Corp), Mickey Mania 7 (Pirate, unprotected), Terminator 2 (Prototype), Takeshi no Chousenjou.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 12:39 pm 
Offline

Joined: Wed Mar 09, 2005 9:08 am
Posts: 418
Way back in 2002 (I think) I started a disassembly of Megaman1 that revealed the magic of one of my favorites childhood games. This was after getting a bit disappointed that the "prolific hacker" glorified in http://nesdev.com/megm1rom.txt hadn't actually written anything but basic descriptions of each 6502 instruction, when my Spanish friend translated his comments.

Some of Capcom's code felt really modern for its time, almost "object-oriented". Other things left me shaking my head at the hacks, such as the setting of the background priority (used in just two places of the game) being a sequence of conditionals which check stage number, room number and coordinates of the sprite.... and with all its slow-downs, Megaman1 is one of the games that really deserves a hack just to make the thing lag less.

Never really finished that disassembly to a satisfactory level though, so it sadly ended up being one of those incomplete projects of mine. But years later I was happy to discover that Bisqwit got hold of the disassembly and greatly expanded on what I never finished: https://bisqwit.iki.fi/jutut/megamansource/maincode.txt

(and I'm just a teeny-weeny-bit disappointed with getting no credit for my part of it... :wink: )


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 1:59 pm 
Offline
Formerly Espozo
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 3377
Location: Richmond, Virginia
tokumaru wrote:
I guess that if you look into different niche communities about specific games/franchises you're gonna find that a lot of effort has been put into reverse engineering stuff.

True. The number actually suprises me though, even if most of these games are fairly simplistic. I'm a bit surprised there aren't more high profile rom hacks for many of these games though; if you've just about got the source code, you should be able to do whatever you want, I would think. For example, I haven't seen a Super Mario World hack where it was noticeable that they modified the game engine, not that I've been looking though.

@CaH4e3 Wait, you didn't do all of that by yourself, did you?

Bananmos wrote:
Some of Capcom's code felt really modern for its time, almost "object-oriented".

Does that explain the aforementioned lag? :lol: And I would definitely be upset too for not being credited. I would think starting the disassembly would be the most difficult part.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 2:33 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 6875
Location: Canada
Drew Sebastino wrote:
if you've just about got the source code, you should be able to do whatever you want, I would think.

Even the original developers who had their own source code to work with could not do whatever they want. ;) Disassembly is just a step to aid comprehension, it doesn't solve any of the software engineering problems for you.

Drew Sebastino wrote:
Bananmos wrote:
Some of Capcom's code felt really modern for its time, almost "object-oriented".

Does that explain the aforementioned lag?

Not sure what your concept of "object oriented" is, but it is not at all a synonym for "slow".


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 3:13 pm 
Offline
Site Admin
User avatar

Joined: Mon Sep 20, 2004 6:04 am
Posts: 3569
Location: Indianapolis
This site is pretty interesting:
http://computerarcheology.com/

A while back I was wondering what the code in Moon Patrol (arcade) looked like, and the disassembly there thoroughly satisfied my curiosity. Lots of other stuff on there too, I haven't looked through very much of it though.


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 4:04 pm 
Offline

Joined: Wed Mar 09, 2005 9:08 am
Posts: 418
Quote:
Not sure what your concept of "object oriented" is, but it is not at all a synonym for "slow".


Agreed. Said that, excessive use of instancing of objects that have fixed cost can indeed cause slow code. One of the main slow-downs in MM1 is how they instanced the big explosions (used for example in Bombman's bombs) as loads of small ones, when a dedicated "big explosion particle object" would likely have fared better.

Later MM games did rectify those awful slow-downs though, although none have the exact same explosion particle object for an apples-to-apples comparison...

Another gem I encountered when disassembling the Megaman1 ROM: I never would have guessed that two such distinct enemies as "Flea" and "Bigeye" actually execute exactly the same AI code, with just a parameter tweaked to make one of them speedy and the other one slow. After learning this, I couldn't really play the game meeting one of those enemies without seeing the ghost image of the other one... :D


Top
 Profile  
 
PostPosted: Thu Sep 27, 2018 7:01 pm 
Offline

Joined: Thu Oct 13, 2005 10:39 am
Posts: 69
Drew Sebastino wrote:
@CaH4e3 Wait, you didn't do all of that by yourself, did you?

yes i did it by myself


Top
 Profile  
 
PostPosted: Sat Sep 29, 2018 12:43 pm 
Offline

Joined: Wed Aug 16, 2017 12:15 am
Posts: 36
Location: Finland
The Game Genie ROM has been disassembled, too: by Kevin Selwyn (GitHub page) and by me.

_________________
My NES utilities and programs on GitHub


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 28 posts ]  Go to page 1, 2  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group