あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

Dockerで始めるゲームボーイアドバンス開発入門

https://booth.pm/ja/items/1041468
https://github.com/shumon84/GBAonDocker


正直にいうと、えーと、かなりびっくりしました。
本になったGBA wikiという感じ?でしょうか。図も結構まんまですし。


あのホコリ被ってた文章に、別の方の視点が加わってかなりパワーアップしています。
説明の仕方は人それぞれと思っていたのですけど、使っていただけるとは大変ありがたいです。


添削されると全然違うなーというか、ヲレは日本語不自由だなあと改めて思いました。
最初のサンプルはgba.hを使わず書いててわかりやすいですし、
VBLANK無視して描画すると変な表示になりますって例もいいです。


冒頭20p読めるので気になる方は読んでみてください。

リハビリ8

エフェクト処理で1フレームごとに呼び出す関数なんですけど・・・。

// 引数sx 0-7
IWRAM_CODE void Mode3DrawCopyH(s32 sx)
{
	u16* d = (u16*)VRAM + sx;
	u16* s = Mode3.buf  + sx;
	s32  x, y;

	for(y=0; y<SCREEN_CY; y++)
	{
		for(x=0; x<SCREEN_CX/8; x++)
		{
			// 167 -> 227
			*d = *s;

			// 167 -> 19
			// dmaCopy(s, d, 2);

			d += 8;
			s += 8;
		}
	}
}

この関数前後のVCOUNT値を調べてみます。

VCOUNT 167 -> 227

結果ぎりぎり。素直に書いてこれですかーい(血吐き)と愚痴らせて頂きます。
さすがGBAプログラミングです(泣。


追記:
f:id:akkera102:20181021234155p:plain
黒背景→玄関を表示。8フレームで完了で、スクショは7フレーム目です。

リハビリ3

とりあえず最初のメッセージきました。
今日は技術書典5の開催日・・・なんですけど、諸事情で行けないのでbooth待ちです。
(できればpdfファイルでほしいなあ。。)

[NvSetScn 0000.scn]
[NvSetEvent 1]
000b [skip]
000c [day f0]
000e [jmpScn 33 1]

[NvSetScn 0033.scn]
[NvSetEvent 1]
002f [time f0]
0031 [flagSet [0] = 0]
0034 [PushB 33 2]
0038 [jmpScn 20 1]

[NvSetScn 0020.scn]
[NvSetEvent 1]
002b [PushA 20 2]
002f [If [ab] != 3 goto 4]
0033 [jmpScn 1 1]

[NvSetScn 0001.scn]
[NvSetEvent 1]
000b [msg 1]
[NvSetMsg 1]
004f [skip]
0050 [Bg fe]
0052 [skip]
0055 [light]
0057 [timeWait 64]
0059 [skip]
005a [季節はいつも、さりげなく通り過ぎていく。]