FF3 はピアノ演奏を回避する以外にプレイ時間を縮められないので、FF2 で indirect jump (下記みたいの)を調べてみたら、 address としては $6300 台の候補がでてきた。でてきたが、上の処理をたどるとその変数はでないことが判明。ユーザーデータなら、PC を無理矢理名前欄に飛ばすことができる可能性が高いのに。
lda arg asl a tay lda param+0,y sta <$00 lda param+1,y sta <$01 jmp ($0000)
極端な話、FF3 でもよくて 6 文字x4x3に特定の3つのアドレスを書き換えるプログラムを書き込みたくて、プレイ時間の短縮の優先度は低い。
名前欄は 6byte, キャラ毎に 0x40 byte ぐらい離れ、セーブデータは0x300byteぐらい離れる。こういった中で書いてエンディングに無理矢理突入したら楽しいと思う。普通に命令を書くとこうなる。
ldy #0 param_next: lda param,y tax iny lda param,y sta $7c00,x iny cpy #6 bne param_next jmp xxxx param: byt $6c,1 byt $72,$8c byt $73,$86
名前欄の条件だとこうなりそう。
save0_name0: ;4 ldy #6-1 ;2 bne save0_name1 ;2 save0_name1: ;6 param_next: lda param,y ;3 tax ;1 bne save0_name2 ;2 save0_name2: ;6 dey ;1 lda param,y ;3 bne save0_name3 ;2 save0_name3: ;6 sta $7c00,x ;3 jmp save1_name0: save1_name0: ;6 dey bmi save1_name1 jmp param_next save1_name1: ;3 jmp xxxx save1_name2: ;6 param: byt 1,$6c byt $8c,$72 byt $86,$73
FF2 はなんかいろいろな理由でうまくいってないみたいで、こういうアプローチは既にやっていてできないって答えが出てそう。