19/01/03 02:06:58.56 +PZFZ9TG.net
ちょっと勉強してみた
仕様読んだりviogsfのソース読んだりしただけで、gsfの作成経験はないので間違ってたらごめん
gsfの仕様は
URLリンク(gsf.caitsith2.net)
に書いてある
gsfのprogram sectionを解凍すると
Offset Size Description
0x0000000 4 GSF_Entry_Point
0x0000004 4 GSF_Offset
0x0000008 4 Size of Rom.
0x000000C XX The Rom data itself.
という構造になっている、ということらしい
例えばexample.gbaをexample.gsflibにしたとする
example.gsflibにはexample.gbaが含まれているわけだ(ただし圧縮されてる)
例えばexample.gbaのオフセット0x0000000Cから1byteを0x0Fに書き換えるminigsfを作りたい場合、
GSF Entry Point -> example.gbaのentry point
GSF Offset -> 0x0000000C + (example.gbaのentry pointと0xFF000000の論理積)
Size of Rom -> 0x00000001
The Rom data itself -> 0x0F
となる
entry pointが例えば0x08000000の場合、
00 00 00 08 0C 00 00 08 01 00 00 00 0F
というバイナリになる(エンディアンに注意)
これを圧縮したものをprogram sectionに配置してpsfヘッダー等をつけ、_libタグにexample.gsflibを付ければminigsfになる
この例のようなminigsfを作るには
URLリンク(www.caitsith2.com)
にあるminigsf.exeを使えばいいみたい
このツールについての説明はまた後で書くよ