小技 ?
多重ループでループ内条件ジャンプコマンドを使用し、フローを制御する
ループ内条件ジャンプコマンドでジャンプをする場合は FINAL FANTASY IV とは異なり、ループ開始位置設定コマンドで初期化されるカウントダウンカウンタの値が変化しないため、自動的に再内ループを抜けません。
外側のループ処理が存在する場合は、ループ終了コマンドでカウントダウンカウンタの値を 0 にする必要があります。
ループ終了コマンドでカウントダウンカウンタの値を 0 にして再内ループを終了する
︙
F0 01 ;ループ開始位置 A (1 + 1 回)
F0 01 ;ループ開始位置 B (1 + 1 回)
F0 03 ;ループ開始位置 C (3 + 1 回)
EA 20 _A4 ;C 音色 $20
EA 21 ;C 音色 $21
F9 07 L_ab7 ;C F9 チェック回数 C ⇒ 1 , 3 , 5 ,"7"
_A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 ;C 音色 $21
F9 04 L_ab4 ;C F9 チェック回数 C ⇒ 2 ,"4", 6
_A4 ;C 音色 $21
F1 ;C ループ開始位置 C にジャンプ, カウンタ C ⇒ 3, 1
!L_ab4
_A8 ;C 音色 $21
EA 20 _A8 ;C 音色 $20
!L_ab7 ;1 バイト削減
F1 ;C ループ開始位置 C にジャンプ, カウンタ C ⇒ 2
;!L_ab7
; F1 ;C ループ終了, カウンタ C ⇒ 0
_A8 ;B 音色 $21
EA 20 _A4 _A8 ;B 音色 $20
EA 21 _A8 ;B 音色 $21
F9 02 L_a2 ;B F9 チェック回数 B ⇒ 1 ,"2"
EA 20 _A8 ;B 音色 $20
!L_a2 ;1 バイト削減
F1 ;B ループ開始位置 B にジャンプ, カウンタ B ⇒ 1
;!L_a2
; F1 ;B ループ終了, カウンタ B ⇒ 0
EA 21 _A16 _A16 ;A 音色 $21
F1 ;A ループ開始位置 A にジャンプ, カウンタ A ⇒ 1, 0
︙
↑の B と C のループ処理を展開
︙
F0 01 ;ループ開始位置 A (1 + 1 回)
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A8 ;C 音色 $21 L_ab4
EA 20 _A8 ;C 音色 $20
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A4 ;C 音色 $20
EA 21 ;C 音色 $21
_A8 ;B 音色 $21 L_ab7
EA 20 _A4 _A8 ;B 音色 $20
EA 21 _A8 ;B 音色 $21
EA 20 _A8 ;B 音色 $20
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A8 ;C 音色 $21 L_ab4
EA 20 _A8 ;C 音色 $20
EA 20 _A4 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A8 _A8 ;C 音色 $20
EA 21 _A4 ;C 音色 $21
EA 20 _A4 ;C 音色 $20
EA 21 ;C 音色 $21
_A8 ;B 音色 $21 L_ab7
EA 20 _A4 _A8 ;B 音色 $20
EA 21 _A8 ;B 音色 $21
_A16 _A16 ;A 音色 $21 L_a2
F1 ;A ループ開始位置 A にジャンプ, カウンタ A ⇒ 1, 0
︙