Skip to content

Work-in-progress decompilation project of Mario Kart DS: documentation, ASM-hacking and other tools

License

Notifications You must be signed in to change notification settings

XorTroll/mkdsdecomp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mkdsdecomp

A work-in-progress decompilation project of Mario Kart DS

drawing

drawing

While the obvious long-term goal of this project is to 100% document and understand MKDS, there are interesting short-term goals that motivate work on reversing this game: ASM hacking, better understanding of yet not fully documented DS formats, additional tools thanks to this effort (like the save editor featured here)...

Decompilation progress

Progress can be tracked in some way by the generated types header, symbols header and symbols, since all unknown types and functions are slowly being named and documented as they are better understood, and since I cannot just push my IDA database :P

ASM hacking utilities

An export script is used to export current documented functions/enums/structs/global objects to the header and symbols mentioned above. These are conveniently generated so they can be directly used for ASM hacking as a short-term usage for this reversing until the game is done ;)

drawing

Save editor

Reversing save-data format and encryption/decryption allowed to create an almost fully-featured online Mario Kart DS savedata editor:

drawing

drawing

drawing

drawing

drawing

drawing

Code reconstruction

As function logic gets fully documented, libntr serves as a (long-term) work-in-progress reimplementation of Nintendo's SDK code/libs, while mkds contains actual MKDS-specific code... as long as I'm able to tell them apart ;)

(These libraries are not really useful right now, and they might not even compile correctly as some stuff is only half-implemented)

Note that this is low priority, since different parts of the code can be really dependant on each other, as not much can reliably be done until several parts are (close to) fully understood

Credits