Reverse-Engineering Azel RPG
Why?
Well, the article Sega's Missing Masterpiece probably makes a great case.
The NSA's Ghidra (Generic Hexadecimal Integrated Decompiling Reverse-Engineering Architecture) added support from v9.1 onwards for the SH-2 processor, and I was interested in becoming a digital archeologist!
Project Overview
Wiki/Discord
Discussions
Directory structure
├── AZEL_1 // Disc 1 specific info.
│ ├── 01000011 // C code for Disc 1
│ ├── 0x00 // Assembly code for Disc 1
│ ├── AZEL#I.md // Disc 1 analysis
│ ├── BIN // Data under BIN file-types
│ └── PRG // Data under PRG file-types
│
├── Abstract // Unconfirmed but potentially useful data for future cross-checking
│
├── Docs // Documentation.
│ ├── ANOMALIES.md // Unusual discoveries found and expected in future
│ ├── AUDIO.md // Audio documentation here
│ ├── GLOSSARY.md // Domain-specific documentation here
│ ├── MEMORY.md // Memory documentation here
│ ├── VIDEO.md // Video documentation here
│ └── _SEGASATURN.md // Sega Saturn specific documentation
└── アゼル―パンツァードラグーン-RPG.MD // Panzer Dragoon Swagger (PDS) general information
Progress
PRGs
Filename |
Percentage |
Decompiled (bytes) |
Total (bytes) |
1ST_READ.PRG |
74.70% |
1,908 |
2,554 |
BTL_A3.PRG |
8.65% |
3,256 |
37,660 |
BTL_A3_2.PRG |
8.39% |
3,240 |
38,606 |
MENUEN.PRG |
54.39% |
26,624 |
48,944 |
TWN_CAMP.PRG |
62.39% |
18,655 |
29,899 |
WORLD.PRG |
21.66% |
829 |
3827 |
Wanna contribute?
You're welcome! Here's our Contributing.md
I have a per-file discussion issue under the focus on file label & you can get started on any file you like!
Any assembly genius info you have? Feel free to share on the Issues section as a comment :)
Panzer Dragoon Saga
Panzer Dragoon Saga (PDS) a.k.a. Azel: Panzer Dragoon RPG (アゼル ―パンツァードラグーンRPG―) is an awesome game!
Goals
- Understand the Sega Saturn hardware: In order to reverse engineer a game for the Sega Saturn, it's important to have a solid understanding of the hardware architecture of the console. This includes knowledge of the CPU, graphics hardware, sound hardware, and other system components. Having a good understanding of the hardware can help us identify how the game code is interacting with the system and how it is implementing certain features.
- Understanding the common Saturn file formats, gathering Saturn documentation.
- Look for documentation on the Saturn boot process
- Know which file in the ISO is the main binary that it's going to run
- Figure out how the CD-ROM's SH-1 gets its instructions (find when it's trying to read a specific file).
- Use a debugger: A debugger is a software tool that allows us to step through the game code and analyze how it is executing. This can be an incredibly useful tool for reverse engineering a game, as it allows us to see how the code is working in real-time and identify key functions and data structures.
- Patterns & Structures: When reverse engineering a game, it's important to look for patterns and structures in the code and data. This includes identifying repeating code blocks, data tables, and other patterns that can provide insight into how the game is working. Once you identify these patterns, we can start to map out the game logic and data structures.
- Disassemble: Disassembling the game code involves converting the compiled machine code into assembly language. This can be a time-consuming process, but it can provide a deeper understanding of how the game code is working and how it is interacting with the Sega Saturn hardware.
- Patience & Persistence = Learning whilst discovering more of a great game!
Documentation:
SH-2 (and other Saturn subsystems)
Panzer Dragoon Saga
Emulation
Saturn tools
Reverse Engineering
Game Archiving
SuperH Family (not SH-2 processor)