GBAGE上では“1744~”
Image - compressed
TSA - raw
Palette - raw
CG画像テーブルは、AC0524 から12バイトごと に、0-9まで合計10個あります。(10*12=120バイト)
struct split10image_list{
split10image* table;
tsa* tsa;
pallet* pallet;
}; sizeof(Table) == 4*3 = 12バイト
struct split10image{
image* row1; //圧縮画像10個
image* row2;
image* row3;
image* row4;
image* row5;
image* row6;
image* row7;
image* row8;
image* row9;
image* row10;
};
ディフォルトでは、CGを表示させられないので、唯一表示できる0:ED3人組を表示する命令を拡張して、表示できるようにします。
関数080bb17cが、3人組を表示する専用命令とかしているので、これを拡張します。
show_10split_image_hook.asm
;3人組みを表示する関数を拡張して、ED挿絵を表示できるようにする フック部 ; ;3人組を描画する関数をフックする. ; @thumb ;ジャンプ. @org $080bb182 ldr r4, =$08E4FD50 mov pc, r4
show_10split_image.asm
;3人組みを表示する関数を拡張して、ED挿絵を表示できるようにする 本体
;
;ED3人組を表示するコード
;221A0000
;42210000 00000200
;221A0000
;↓↓Nで切り替えられるようにする↓↓
;221A0000
;42210[N]00 00000200
;221A0000
;
;画像表示後、マップがおかしくなる時がある。
;その時は、適当に背景を描画して背景消去してください。背景付き会話でも可。
;画像表示時間を延ばしたいときは、 後ろの221A0000の前にウェイト命令を。
;
;N=
;[0]->0x08ac0524 ED3人組
;[1]->0x08AC0530 王女を抱えるエイリーク
;[2]->0x08ac053c 魔石研究
;[3]->0x08AC0548 ドラゴンナイト
;[4]->0x08AC0554 ゼトとエイリーク
;[5]->0x08AC0560 魔王と聖石
;[6]->0x08AC056C ゼト訓練
;[7]->0x08AC0578 ペガサスナイト
;[8]->0x08AC0584 ラーチェル乗馬
;[9]->0x08AC0590 踊り子と町の人
;
@thumb
@org $08E4FD50
mov r4,r5 ;r5のメモリ位置がどうしても必要
mov r5,r8 ;元の処理をする
push {r5, r6, r7}
mov r9, r0
mov r7, r1
mov r8, r2
mov r10, r3 ;ここまで元処理
mov r0,r4 ;元r5のメモリ位置 + 0x38 = 現在のイベント命令 スクリプトコードへのポインタ
add r0,#0x38
ldr r0,[r0] ; 現在のイベント命令 スクリプトコードへ
ldrb r6,[r0,#0x2] ; イベント命令 スクリプトコードへ 番号をとる.
mov r0,#0x0C
mul r6,r0 ; 1つ 12バイト区切り 番号*12バイト
ldr r0,=$0x08ac0524
add r6,r6,r0 ;$0x08ac0524 + (12バイト*個数)
;
;struct split10image_list{
; split10image* table;
; tsa* tsa;
; pallet* pallet;
;}; sizeof() == 4*3 = 12バイト
;
;struct split10image{
; image* row1; //圧縮画像10個
; image* row2;
; image* row3;
; image* row4;
; image* row5;
; image* row6;
; image* row7;
; image* row8;
; image* row9;
; image* row10;
;};
;
;元に戻す.
ldr r0, =$080bb196 ;080bb196 2500 mov r5, #0 //r5=0
mov pc, r0
まだわかりません。
専用ツールを作らないとダメかも。