Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 9.82 KB

resources.md

File metadata and controls

49 lines (40 loc) · 9.82 KB

Other Resources

Reverse engineering Explorers of Sky requires multiple skills in varying degrees. If you're a complete beginner and just want a single resource to start with, I recommend working through AnonymousRandomPerson's Reverse Engineering a DS Game, which walks through the basics of reverse engineering using Explorers of Sky as an example.

If you're looking for more granular resources on specific topics, here's a breakdown of some of the individual skills involved in reverse engineering, with relevant links:

  • How to read assembly, and enough low-level knowledge of computers to understand that assembly.
    • For EoS, there are technically two forms of assembly you need to know, ARM and THUMB, although they're extremely similar, and for the most part you only need to know ARM. If you're just getting started, this guide is a great introduction to the concepts needed to read assembly, and this guide is a fantastic reference and introduction to the finer details of ARM assembly.
  • Other systems-level knowledge of the Nintendo DS.
    • Working with the EoS binaries requires you to have some specialized knowledge (but it depends on what you're doing). One of the biggest things to know about is probably the overlay system. If you're working with anything graphical, there are additional concepts you'll need to know, such as the OAM (this series of posts is a great introduction to these concepts for the Game Boy Advance, most of which are also relevant to the NDS).
  • What reverse engineering tools are available, and how to use them properly.

Specific to Pokémon Mystery Dungeon: Explorers of Sky

This is a nonexhaustive list, and only contains subjectively "large" collections of information. Note that some information from the following docs have also been added into pmdsky-debug.

General reverse engineering

The above list is, of course, tailored to reverse engineering EoS. If you want to learn about general reverse engineering, you can Google around for various resources. If you want some concrete links, check out wtsxDev/reverse-engineering and r/ReverseEngineering.

Project Pokémon has a list of reverse engineering tools specifically geared towards NDS ROM hacking. GBATEK also has a full technical reference dump, which can be useful in very specific circumstances.

A personal list of research tools

This is a list of tools that I (UsernameFodder) use for EoS research that might prove helpful to some people. Keep in mind that I usually only do a specific subset of things when it comes to reverse engineering, so this list won't be suited for all use cases.

  • Ghidra (cross-platform) for the majority of asm research, since it's free and has one of the best decompilers out there. It has built-in tutorials (HTML preview of the beginner class). The other well known binary analysis tool is IDA, which you need to pay for (for ARM binaries). If you're a licensed IDA user, you probably don't need to be reading these docs anyway.
  • DeSmuME on Windows for watching memory at runtime (unfortunately only the Windows version has these tools at the time of writing). I find its memory viewer/editor (Tools > View Memory) and RAM Search (Tools > RAM Search...) tools particularly useful.
  • No$GBA (Windows only) for interactive debugging. However, I've found this emulator to be relatively unstable, and I try to avoid using it unless there's no other option.
  • DSLazy (Windows only) for unpacking NDS ROMs, since it's the simplest thing with a GUI that works. It's a wrapper around ndstool, which is cross-platform. See the Ghidra setup doc for detailed instructions.
  • SkyTemple (cross-platform), primarily for getting up to speed on things the community has already figured out.
  • Hex Fiend (macOS only) and HxD (Windows only) on the rare occasion I need to do raw hex editing, but honestly any hex editor works.

I don't know any of this and I'm feeling overwhelmed!

There's a lot to learn if you're just starting out, especially if you don't already have a background in computer science. If you want just one thing to sink your teeth into initially, I recommend AnonymousRandomPerson's Reverse Engineering a DS Game. It'll teach you how to read assembly, guide you through setting up and using reverse engineering tools like Ghidra, and share basic reverse engineering strategies through practical examples.

After that, I recommend going through the Ghidra setup tutorial (the above article covers some of it, but stops short of actually importing debug info). By this point, you'll be well equipped to start exploring the EoS code on your own.