#author("2023-04-11T23:29:14+09:00","","")
* Doc.2 エミュレータのインストール [#iac0ab67]
#freeze
#author("2023-08-08T20:03:11+09:00","","")
* 画像加工ツールgritの使い方 [#f485af67]
gritとは、BMP, PNGなどの画像ファイルをGBA用のフォーマットに変換してくれるツールのことです。実行ファイルは「C:\devkitPro\tools\bin」にあります。

** エミュレータ [#jce26e31]
エミュレータは完成の域まで高まっており、パソコン環境に関しても速度的に申し分ありません。~
ただし最新のエミュレータはデバッグコンソール出力(Mappy方式)がない為、昔のVisualBoyAdvance-1.8.0-beta3を使っていきたいと思います。~
** 使用方法 [#aac23f78]
使い方はとても簡単です。コンソール上でコマンドを入力して、いくつかの変換オプションを指定してあげます。以下に簡単な例を表します。

-[[VisualBoyAdvance-1.8.0-beta3.zip:http://akkera102.sakura.ne.jp/test/VisualBoyAdvance-1.8.0-beta3.zip]]
-[[VisualBoyAdvance-1.8.0-beta3.tar.gz:http://akkera102.sakura.ne.jp/test/VisualBoyAdvance-1.8.0-beta3.tar.gz]]
- モード0, スプライト~
 grit.exe image.bmp -gt -gB4 -fts -gu16 -Mw2 -Mh2
| オプション | カテゴリー   | 指定内容     |
| -gt        | フォーマット | タイル       |
| -gB4       | 色           | 16色         |
| -fts       | 出力タイプ   | GNU asm      |
| -gu16      | 配列のサイズ | 16bit        |
| -Mw2       | sprite幅     | 16ドット     |
| -Mh2       | sprite高さ   | 16ドット     |

** BIOS [#a573242d]
BIOSとはゲームボーイアドバンス本体に内蔵されたプログラムのことで、除算や画像データの解凍などの機能を提供してくれます。~
ちょっと難しい話をしますとLZ77圧縮された画像データを解凍する場合、~
BIOSが存在する場合、エミュレート(実行)してCPUサイクルに見合ったタイミングで解凍します。~
BIOSが存在しない場合、PC側に処理を移譲されてしまいPCの速度で解凍されるのでPC速度依存になります。~
- モード3~
 grit.exe image.bmp -gb -gB16 -fts -gu16
| オプション | カテゴリー   | 指定内容       |
| -gb        | フォーマット | ビットマップ   |
| -gB16      | 色           | 15bitColor     |
| -fts       | 出力タイプ   | GNU asm        |
| -gu16      | 配列のサイズ | 16bit          |

自作ゲームのオープニングシーンなどでは、音楽と画像のタイミングにズレが発生します。その点は注意してください。~
オプションはテキストファイルに保存して指定する方法もあります。wikiのサンプルプログラムは基本的にテキストファイルを使います。

** エミュレータの設定(VisualBoyAdvance-1.8.0-beta3) [#r04b9bd8]
- ウィンドウのフォーカスが外れた時の動作~
Options -> Emulator -> Pause when inactive チェックを外す~
*** 出力例 [#d3f2d2a1]
上記の例(モード3)での出力結果は次のとおりです。

- 画面の大きさを変更~
Options -> Video -> 4x window size~
- image.h

- 拡大時の画面の描画方法を変更~
Options -> Video -> Render API -> Direct3D 9のFilter : Nearest~
 //======================================================================
 //
 //	image, 240x160@16, 
 //	+ bitmap not compressed
 //	Total size: 76800 = 76800
 //
 //	Time-stamp: 2007-09-07, 16:28:51
 //	Exported by Cearn's GBA Image Transmogrifier
 //	( http://www.coranac.com )
 //
 //======================================================================
 
 #ifndef __IMAGE__
 #define __IMAGE__
 
 #define imageBitmapLen 76800
 extern const unsigned short imageBitmap[38400];
 
 #endif // __IMAGE__

- ショートカットの追加~
Tools - > Customize~
ToolsLoggingをshift + 1に割り当てる(デバッグログの追加は地味に役立ちます)~

- 知っておくと便利なショートカット~
-- ctrl + x  エミュレータを閉じる~
-- ctrl + r  リセット~
-- space  フレームスキップ(デバッグ時、最高に役に立ちます)~
- image.s

 @=======================================================================
 @
 @	image, 240x160@16, 
 @	+ bitmap not compressed
 @	Total size: 76800 = 76800
 @
 @	Time-stamp: 2007-09-07, 16:28:51
 @	Exported by Cearn's GBA Image Transmogrifier
 @	( http://www.coranac.com )
 @
 @=======================================================================
 
 	.section .rodata
 	.align	2
 	.global imageBitmap		@ 76800 unsigned chars
 imageBitmap:
 	.hword 0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F
 	.hword 0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F,0x4A5F 
 
 	...(以下略)

** 履歴 [#vdac93be]
注意点として、画像ファイルの名前がそのまま変数名に使われています。image.bmpを変換すると''image''BitmapLen、''image''Bitmapとなります。また、奇数サイズの場合、gritがアライメントを考慮してサイズを変更します。作る前から余計な苦労をしない為にも偶数サイズで統一してください。

** grit-readme.txt [#d4218655]
コマンドオプションは一読する価値があります。暇なときにでも読んでおくことをオススメします。
[[https://www.coranac.com/files/grit-readme.txt]]

** demo project [#e28bcaad]
取説書のdemoロムもありますので触ってみるのもいいかもしれません。wikiのgithubに格納してあります。
#ref(1.png,nolink)
#ref(2.png,nolink)

** 履歴 [#k390a23f]
- 2023/04/11
- 2015/10/07
- 2014/10/28
- 2007/09/04
- 2007/09/07


トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS