List of Pokémon disassembly projects: Difference between revisions

From Glitch City Wiki
Jump to navigation Jump to search
Content added Content deleted
>Torchickens
(Added pret symbols files)
 
(18 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{researchneeded|Figure out the status of each disassembly (non-matching, matching but incomplete, complete but poorly documented, well documented, etc., as well as whether the incomplete ones are being worked on or abandoned).}}
The goal of disassembling a game, or a program, is to convert it from its compiled form (a series of bytes, arranged in one or multiple files) to a more comprehensive form.


It can also be thought as the opposite of compilation (see [[wikipedia:reverse engineering|reverse engineering]] on Wikipedia).
Many early Pokémon games have been [[Glossary#Disassembly|disassembled]], or otherwise [[wikipedia:reverse engineering|reverse engineered]] to some extent. This page is a list of:
* '''Disassembly projects of Pokémon games''', attempts to reverse engineer Pokémon games into the assembly language (or a higher-level language). They are useful for glitch researching, as well as for creating ROM hacks. A good disassembly project should be:
** '''Matching''': The project could be built to faithfully reproduce the original ROM. A disassembly may be non-matching because of a problem with the automatic disassembling process that needs to be fixed manually, or because it is based on another disassembly of a similar game (e.g. the disassembly of [[Pokémon Red and Green]] is based on that of English [[Pokémon Red and Blue]]) and has not yet incorporated all the differences between those two games (e.g. the Japanese texts). For glitch researching, a matching disassembly is very useful, because the behaviors of glitches are often affected by minute details in the ROM.
** '''Complete''': The entire game should be disassembled. Incomplete disassembly projects can still be matching, but they will require a base ROM in order to build, because at some places the built ROM will include parts of the base ROM (e.g. with the INCBIN directive<ref>RGBASM(5), RGBDS v0.4.2 documentation ([https://rgbds.gbdev.io/docs/v0.4.2/rgbasm.5#Including_binary_files Including binary files])</ref> of RGBDS).
** '''Well documented''': The disassembly should contain some extra information that makes the code easily human-readable. Common forms of such information include human-readable names for functions, variables and other labels; comments in the assembly code; human-readable data formats with constants and macros; and a good file structure to reflect modules in the game engine.
* '''Memory maps''', mappings between memory addresses and their in-game meanings. This includes RAM addresses (which usually correspond to variables that can be modified by the game) as well as ROM addresses (which usually correspond to static data, or pieces of the game's code). Even though this information could be derived from a good disassembly (e.g. they usually have files named "wram.asm", "sram.asm", etc. that define the RAM layout, from which the address of each variable could be determined by counting bytes), a memory map will make this process considerably easier. Also, building the disassembly will usually give a ''symbol file'', which shows the correspondence between memory addresses and symbols (i.e. their names in the disassembly), and can also be used as a memory map.
* '''Notes''', miscellaneous information that may be helpful for understanding the disassembly projects.


{| class="wikitable"
This page lists such projects, as far as Pokémon games are concerned. This page will also reference projects that partially disassemble the game (such as RAM and ROM maps).
! Gen || Game name || Disassembly projects || Memory maps || Notes
|-
! scope="row" rowspan=5 | I
| Pokémon Red and Blue || [http://github.com/pret/pokered/ Disassembly] (pret)<br />[https://github.com/einstein95/pokered-fr/ French Version] (einstein95)<br />[https://github.com/einstein95/pokered-de/ German Version] (einstein95) || [https://github.com/pret/pokered/blob/symbols/pokered.sym Red Symbols], [https://github.com/pret/pokered/blob/symbols/pokeblue.sym Blue Symbols] (pret)
[https://github.com/pokemon-speedrunning/symfiles/blob/master/pokered.sym Red], [https://github.com/pokemon-speedrunning/symfiles/blob/master/pokeblue.sym Blue] (pokemon-speedrunning)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:RAM_map RAM map] (Data Crystal)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:ROM_map ROM map] (Data Crystal)
| [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:Notes Notes] (Data Crystal)
|-
| Pokémon Red and Green || [https://github.com/luckytyphlosion/pokered-jp Disassembly (non-matching, abandoned)]<ref>This is a fork of the original pokered-jp disassembly project by YamaArashi, who has since deleted the GitHub repository; luckytyphlosion does not intend to continue the project.</ref> (luckytyphlosion) || ||
|-
| Pokémon Yellow || [http://github.com/pret/pokeyellow/ Disassembly] (pret) || [https://github.com/pret/pokeyellow/blob/symbols/pokeyellow.sym Full Symbol file] (pret)
[https://github.com/pokemon-speedrunning/symfiles/blob/master/pokeyellow.sym Full symbol file] (pokemon-speedrunning)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Yellow:RAM_map RAM map] (Data Crystal)<br />[http://aurellem.org/vba-clojure/html/rom.html#sec-9-1 ROM map (incomplete)] (aurellem.org)
|
|-
| Pokémon Stadium || [http://github.com/pret/pokestadium Disassembly] (pret) (inactive) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:RAM_map RAM map] (Data Crystal)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:ROM_map ROM map] (Data Crystal) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:Notes Notes] (Data Crystal)
|-
| Pokémon Pinball || [http://github.com/pret/pokepinball Disassembly] (pret) || [https://github.com/pokemon-speedrunning/symfiles/blob/master/pokepinball.sym Full symbol file] (pokemon-speedrunning)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Pinball:RAM_map RAM map (incomplete)] (Data Crystal)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Pinball:ROM_map ROM map (incomplete)] (Data Crystal) ||
|-
! scope="row" rowspan=6 | II
| Pokémon Gold and Silver || [https://github.com/pret/pokegold Disassembly] (pret)<br>[https://github.com/Greatpriceman/pokegold-kr Korean Version] (Greatpriceman fork) || [https://github.com/pret/pokegold/tree/symbols Full symbol files] (pret)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:RAM_map RAM map] (Data Crystal)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:ROM_map ROM map] (Data Crystal) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:Notes Notes] (Data Crystal)
|-
| Pokémon Gold and Silver<br />(1997 Space World demo) || [https://github.com/pret/pokegold-spaceworld Disassembly] (pret) || ||
|-
| Pokémon Crystal || [https://github.com/pret/pokecrystal Disassembly] (pret)<br />[https://github.com/PikalaxALT/pokekuristaru Japanese version (non-matching, abandoned)] (PikalaxALT) || [https://github.com/pret/pokecrystal/tree/symbols Full symbol files] (pret) ||
|-
| Pokémon Puzzle Challenge || [https://github.com/pret/pokepuzzle Disassembly] (pret) || ||
|-
| Pokémon Trading Card Game || [https://github.com/pret/poketcg Disassembly] (pret) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:RAM_map RAM map] (Data Crystal)<br />[http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:ROM_map ROM map] (Data Crystal) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:Notes Notes] (Data Crystal)
|-
| Pokémon Stadium 2 || [http://github.com/pret/pokestadium Disassembly] (pret) (inactive) || [http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium_2:ROM_map ROM map] (Data Crystal) ||
|-
! scope="row" rowspan=5 | III
| Pokémon Ruby and Sapphire || [https://github.com/pret/pokeruby Disassembly] (pret) || ||
|-
| Pokémon Emerald || [https://github.com/pret/pokeemerald Disassembly] (pret) <br /> [https://github.com/DizzyEggg/pokeemerald/tree/french French Version] (DizzyEggg) <br /> [https://github.com/DizzyEggg/pokeemerald/tree/italian Italian Version] (DizzyEggg) || ||
|-
| Pokémon FireRed and LeafGreen ||[https://github.com/pret/pokefirered Disassembly] (pret)<br /> [https://github.com/cosarara97/pokefirered Disassembly (non-matching, abandoned)] (cosarara97)<br />[https://github.com/shinyquagsire23/DisFire Disassembly (abandoned)] (shinyquagsire23) || ||
|-
| Pokémon Pinball: Ruby & Sapphire || [https://github.com/pret/pokepinballrs Disassembly] (pret) (inactive) || ||
|-
| Pokémon Mystery Dungeon:<br />Red Rescue Team || [https://github.com/pret/pmd-red Disassembly] (pret)<br /> [https://github.com/PikalaxALT/pokemdred Disassembly (non-matching, abandoned)] (PikalaxALT) || ||
|-
! scope="row" rowspan=5 | IV
| Pokémon Diamond and Pearl || [https://github.com/pret/pokediamond Disassembly] (pret) || ||
|-
| Pokémon Platinum || [https://github.com/JimB16/PokePlat Disassembly] (JimB16)<br />[https://github.com/PMArkive/PokePlatinum Disassembly (non-matching, abandoned)]<ref>This is a fork of the original PokePlatinum disassembly project by Ganix, who has since deleted the GitHub repository; no forks intend to continue the project.</ref> (Ganix) || ||
|-
| Pokémon HeartGold and SoulSilver || [https://github.com/pret/pokeheartgold Disassembly] (pret) || ||
|-
| Pokémon Battle Revolution || [https://github.com/pret/pokerevo Disassembly] (pret) (inactive) || ||
|}


== Generation I ==
== References ==
<references />
=== Pokémon Red and Green===
==== Disassemblies ====
Pokéred JP: https://github.com/YamaArashi/pokered-jp

==== Memory maps ====
RAM map:
https://github.com/YamaArashi/pokered-jp/blob/master/wram.asm

https://github.com/YamaArashi/pokered-jp/blob/master/sram.asm

https://github.com/YamaArashi/pokered-jp/blob/master/hram.asm

https://github.com/YamaArashi/pokered-jp/blob/master/vram.asm

=== Pokémon Red and Blue ===
==== Disassemblies ====
Pokéred : http://github.com/pret/pokered/ (applies both for Pokémon Red and Blue)

Pokéred FR: https://github.com/einstein95/pokered-fr/

Pokéred DE: https://github.com/einstein95/pokered-de/

==== Memory maps ====
RAM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:RAM_map

https://github.com/pret/pokered/blob/master/wram.asm

https://github.com/pret/pokered/blob/master/sram.asm

https://github.com/pret/pokered/blob/master/hram.asm

https://github.com/pret/pokered/blob/master/vram.asm


ROM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:ROM_map

==== Notes ====
Datacrystal : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Red_and_Blue:Notes


=== Pokémon Yellow ===
==== Disassemblies ====
Pokéyellow : http://github.com/pret/pokeyellow/

==== Memory maps ====
RAM map (partial) : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Yellow:RAM_map

ROM map (partial) : http://aurellem.org/vba-clojure/html/rom.html#sec-9-1

=== Pokémon Stadium ===
==== Disassemblies ====
Pokéstadium : http://github.com/pret/pokestadium

==== Memory maps ====
RAM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:RAM_map

ROM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:ROM_map

==== Notes ====
Datacrystal : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium:Notes

=== Pokémon Pinball ===
====Disassemblies====
Poképinball: https://github.com/pret/pokepinball

====Memory maps ====
RAM map (partial) :
http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Pinball:RAM_map

ROM map (partial) :
http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Pinball:ROM_map

== Generation II ==
=== Pokémon Gold and Silver ===
==== Disassemblies ====
https://github.com/pret/pokegold

==== Memory maps ====
RAM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:RAM_map

ROM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:ROM_map

==== Notes ====
Datacrystal : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Gold_and_Silver:Notes

=== Pokémon Crystal ===
==== Disassemblies ====
Pokécrystal : https://github.com/pret/pokecrystal

Pokekuristaru (Japanese Crystal): https://github.com/PikalaxALT/pokekuristaru

===Pokémon Puzzle Challenge===
====Disassemblies====
Poképuzzle: https://github.com/pret/pokepuzzle

=== Pokémon TCG ===
==== Disassemblies ====
PokéTCG : http://github.com/pret/poketcg/

==== Memory maps ====
RAM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:RAM_map

ROM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:ROM_map

==== Notes ====
Datacrystal : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Trading_Card_Game:Notes


=== Pokémon Stadium 2 ===
==== Memory maps ====
ROM map : http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_Stadium_2:ROM_map

== Generation III ==

===Pokémon Ruby===
====Disassemblies====
Pokéruby: https://github.com/pret/pokeruby
===Pokémon Emerald===
====Disassemblies====
Pokéemerald: https://github.com/pret/pokeemerald
===Pokémon FireRed===
====Disassemblies====
Pokéfirered: https://github.com/cosarara97/pokefirered

DisFire: https://github.com/shinyquagsire23/DisFire

===Pokémon Mystery Dungeon: Red Rescue Team===
Pokemdred: https://github.com/PikalaxALT/pokemdred


[[Category:Lists]]
[[Category:Lists]]
[[Category:Websites]]
[[Category:Websites]]
[[Category:Reference documents]]

Latest revision as of 23:11, 6 August 2023

More research is needed for this article.

Reason given: Figure out the status of each disassembly (non-matching, matching but incomplete, complete but poorly documented, well documented, etc., as well as whether the incomplete ones are being worked on or abandoned).



Many early Pokémon games have been disassembled, or otherwise reverse engineered to some extent. This page is a list of:

  • Disassembly projects of Pokémon games, attempts to reverse engineer Pokémon games into the assembly language (or a higher-level language). They are useful for glitch researching, as well as for creating ROM hacks. A good disassembly project should be:
    • Matching: The project could be built to faithfully reproduce the original ROM. A disassembly may be non-matching because of a problem with the automatic disassembling process that needs to be fixed manually, or because it is based on another disassembly of a similar game (e.g. the disassembly of Pokémon Red and Green is based on that of English Pokémon Red and Blue) and has not yet incorporated all the differences between those two games (e.g. the Japanese texts). For glitch researching, a matching disassembly is very useful, because the behaviors of glitches are often affected by minute details in the ROM.
    • Complete: The entire game should be disassembled. Incomplete disassembly projects can still be matching, but they will require a base ROM in order to build, because at some places the built ROM will include parts of the base ROM (e.g. with the INCBIN directive[1] of RGBDS).
    • Well documented: The disassembly should contain some extra information that makes the code easily human-readable. Common forms of such information include human-readable names for functions, variables and other labels; comments in the assembly code; human-readable data formats with constants and macros; and a good file structure to reflect modules in the game engine.
  • Memory maps, mappings between memory addresses and their in-game meanings. This includes RAM addresses (which usually correspond to variables that can be modified by the game) as well as ROM addresses (which usually correspond to static data, or pieces of the game's code). Even though this information could be derived from a good disassembly (e.g. they usually have files named "wram.asm", "sram.asm", etc. that define the RAM layout, from which the address of each variable could be determined by counting bytes), a memory map will make this process considerably easier. Also, building the disassembly will usually give a symbol file, which shows the correspondence between memory addresses and symbols (i.e. their names in the disassembly), and can also be used as a memory map.
  • Notes, miscellaneous information that may be helpful for understanding the disassembly projects.
Gen Game name Disassembly projects Memory maps Notes
I Pokémon Red and Blue Disassembly (pret)
French Version (einstein95)
German Version (einstein95)
Red Symbols, Blue Symbols (pret)

Red, Blue (pokemon-speedrunning)
RAM map (Data Crystal)
ROM map (Data Crystal)

Notes (Data Crystal)
Pokémon Red and Green Disassembly (non-matching, abandoned)[2] (luckytyphlosion)
Pokémon Yellow Disassembly (pret) Full Symbol file (pret)

Full symbol file (pokemon-speedrunning)
RAM map (Data Crystal)
ROM map (incomplete) (aurellem.org)

Pokémon Stadium Disassembly (pret) (inactive) RAM map (Data Crystal)
ROM map (Data Crystal)
Notes (Data Crystal)
Pokémon Pinball Disassembly (pret) Full symbol file (pokemon-speedrunning)
RAM map (incomplete) (Data Crystal)
ROM map (incomplete) (Data Crystal)
II Pokémon Gold and Silver Disassembly (pret)
Korean Version (Greatpriceman fork)
Full symbol files (pret)
RAM map (Data Crystal)
ROM map (Data Crystal)
Notes (Data Crystal)
Pokémon Gold and Silver
(1997 Space World demo)
Disassembly (pret)
Pokémon Crystal Disassembly (pret)
Japanese version (non-matching, abandoned) (PikalaxALT)
Full symbol files (pret)
Pokémon Puzzle Challenge Disassembly (pret)
Pokémon Trading Card Game Disassembly (pret) RAM map (Data Crystal)
ROM map (Data Crystal)
Notes (Data Crystal)
Pokémon Stadium 2 Disassembly (pret) (inactive) ROM map (Data Crystal)
III Pokémon Ruby and Sapphire Disassembly (pret)
Pokémon Emerald Disassembly (pret)
French Version (DizzyEggg)
Italian Version (DizzyEggg)
Pokémon FireRed and LeafGreen Disassembly (pret)
Disassembly (non-matching, abandoned) (cosarara97)
Disassembly (abandoned) (shinyquagsire23)
Pokémon Pinball: Ruby & Sapphire Disassembly (pret) (inactive)
Pokémon Mystery Dungeon:
Red Rescue Team
Disassembly (pret)
Disassembly (non-matching, abandoned) (PikalaxALT)
IV Pokémon Diamond and Pearl Disassembly (pret)
Pokémon Platinum Disassembly (JimB16)
Disassembly (non-matching, abandoned)[3] (Ganix)
Pokémon HeartGold and SoulSilver Disassembly (pret)
Pokémon Battle Revolution Disassembly (pret) (inactive)

References

  1. RGBASM(5), RGBDS v0.4.2 documentation (Including binary files)
  2. This is a fork of the original pokered-jp disassembly project by YamaArashi, who has since deleted the GitHub repository; luckytyphlosion does not intend to continue the project.
  3. This is a fork of the original PokePlatinum disassembly project by Ganix, who has since deleted the GitHub repository; no forks intend to continue the project.