詳解ポケモン赤

January 20, 2023 · View on GitHub

  このプロジェクトは法律の問題上、ソースコードの一部を暗号化しています。
  暗号化されたコードを読んだり、このプロジェクトのビルドを行うためにはあなた自身のポケモン赤のROMファイルで復号化を行う必要があります。

これは[英語版のポケモン赤]に対して、日本語で詳細な解説を加えたレポジトリです。

日本語で解説を加えてはいますが、対象のROMは英語版のポケモン赤であることに注意してください。

概要

  • 日本語でコメントが書かれたアセンブリコード
  • VSCodeの拡張機能を使っているときにコードリーディングが最大限やりやすいようにコメントフォーマットの修正
  • データフォーマットやポケモン赤独自の概念に対する解説ドキュメント

前提知識

  • アセンブリやリンカなどの一般的な低レイヤの知識
  • gbz80のISAや割り込みやMBC、バンクなどのGameBoyのハードウェア仕様
  • rgbds(Rednex Game Boy Development System)に関する多少の理解

またエディタを使ってコードを読む場合はVSCodeとrgbds用の拡張機能の使用を推奨します。

ドキュメント一覧

復号化

  1. あなたが持っているポケモン赤のROMファイルを baserom.gbとしてトップディレクトリ(./)に配置
  2. make decryptを実行

ファイル一覧

ファイル名内容
audio/TODO
constants/constants参照
data/data参照
engine/engine参照
gfx/gfx参照
home/home参照
macros/macros参照
maps/maps参照
pic/pic参照
scripts/TODO
text/text参照
tools/tools参照
audio.asmTODO
charmap.asm文字コードのマクロ定義
constants.asm定数シンボルのマクロ定義
home.asmTODO
hram.asmHRAM領域にどのようなデータが配置されるかの定義を行っている
macros.asmmacros/以下の各マクロファイルをまとめている
main.asmTODO
pokered.linkリンカスクリプト
各セクションがどのバンクのどのアドレスに配置されるかを指示している
sram.asmTODO
text.asm各テキストデータファイルをまとめている
pokered.linkでROMバンク$20以降に配置されている
vram.asmTODO
wram.asmWRAM領域にどのようなデータが配置されるかの定義を行っている