ACE環境をセーブする別の方法

ASE/ACE用のエントリーポイントをセーブデータに保存する方法としては、すでにNPCASEがありますが、別の方法を見つけたので一応メモ程度にのこしておきます。

概要

ふしぎなおくりもののセーブ領域をかきかえることで、ふしぎなおくりものを配達員から受け取るときに任意のコードを実行できます。ふしぎなおくりもののデータはNPCASEと違いマップを移動しても書き換わることはありません。

やり方

  1. 事前におくりものをひとつ受け取れるようにしておく
  2. アドレス(base + 0xAA10)の値を0x9B1Aに書き換える*1
  3. 配達員に話しかける

配達員にはなしかけると0x228BB98*2にジャンプします。このアドレスはボックス14の29, 30, またはボックス15の1匹目のポケモンにあたります。ここに実行したいプログラムを機械語で書き込んでおくことでそれを実行することができます。

注意

コードを実行したあともゲームを続けたい場合は、配達員との会話を終了する処理をコードに含める必要があります。

また、このふしぎなおくりもの自体を受信することはできません。受け取るアイテムの画像を表示する段階でクラッシュするからです。

*1:baseはセーブデータの起点になるアドレスで、ソフトを起動時にランダムに決められる。ダイヤモンド日本語版では0x02108818にその値が格納されている。

*2:ARMモードに切り替わるので注意

テトリスお試し用セーブデータの配布

ゲーム内でテトリスがプレイできるセーブデータを作ったので共有しておきます。とりあえず実際のプレイ動画をどうぞ。

以下が動画に使用したセーブデータです。

drive.google.com

テストに使用したカートリッジはADAJN0J08(ダイヤモンドのいわゆる初期版)です。パール版やダイヤモンド後期版ではおそらく動きません。

プレイにはセーブデータを使用できる環境と対応したROMが必要です。ちなみにこの動画の撮影に使用しているのはDeSmuMEというエミュレーターです。

使い方

起動のしかた

  1.  パソコンを開きポケモンの整理画面に進む
  2.  ボックス18の最後から3番目のタマゴをつかむ
  3.  もとの場所におく
  4.  パソコンを閉じる
  5.  欠番に話しかける
  6.  パソコンを開きポケモンの整理画面に進む
  7.  ボックス1の左上のタマゴにマークをつける。マークはなんでもいい
  8.  パソコンを閉じる
  9.  Lボタンを押す

操作方法

L: 起動と終了

A: 最初から

上下左右: ミノの操作

追記 (2023/2/27)

ソースコードを公開しました。

github.com