(一時的に記事のタイトルを削除しています)

DSソフトの不正コピーの実態が盛んに報じられるようになり、知名度の上昇とともに風当たりも強くなってきたマジコン。
何のためのマジコン販売禁止なのだろうか - wiseler : WAR IS PEACE
はてな界隈ではこの記事を契機にいろいろ盛り上がっているような時に何を言ってるんだと思われるかもしれませんが、マジコンがほしいです(特にGBA用)。

自分がマジコンを知ったのは多分2006年の初めのころ、ゲームボーイアドバンス用ソフトのMOTHER3について2chを読んでる中で色々目にするようになっていたと思います。そのころは明らかに不正コピーをダウンロードして実機で実行するための機械、という認識だったので特に興味は持ちませんでしたが、その後、GBA等のゲーム機を対象とした自主制作ソフト、所謂homebrewを知って自分でも何か作ってみたいと思うようになりました。と言っても実際にはほとんど何もやってないんですけどね。

2007年に、大学の授業でプロセッサについて調べて、それで動くプログラムとともに発表しろ、という課題があったので、せっかくなのでGBAのプロセッサであるARMを選択して、ちょっとだけプログラムも書いてみました。*1

.text
	.align 2
	.global main
main:
	mov  r0, #0x04000000
	mov  r1, #1 << 7
	strh r1, [r0, #0x84]	@ Enable sound
	mvn  r1, #0x88		@ r1 = 0b1111111101110111 = (0xff << 8) | (0x07 << 4) | 0x07
	strh r1, [r0, #0x80]	@ Enable SOUND1-4 LR & Set volume L7 R7
	mov  r1, #0x02
	strh r1, [r0, #0x82]	@ DMG sound output volume(100%)
	mov  r1, #0x08
	strh r1, [r0, #0x60]	@ SOUND1 sweep off
	mov  r2, #16384
	add  r1, r2, #128
	strh r1, [r0, #0x62]	@ SOUND1 control
	mvn  r1, #30976		@ r1 = 0b000011011111111
	sub  r1, r1, #41	@ r1 = 1750
	strh r1, [r0, #0x64]	@ SOUND1 freq
	strh r2, [r0, #0x68]	@ SOUND2 control
	sub  r1, r1, #215	@ r1 = 1535
	sub  r1, r1, #83	@ r1 = 1452
	strh r1, [r0, #0x6d]	@ SOUND2 freq
WaitVB:
	swi  0x05 << 16		@ VBlankIntrWait
	b    WaitVB

これをdevkitProというGBA、DS用の開発環境を使ってGBAで実行させるためのバイナリを作ってエミュレータで実行してやると、PSG音源の音が鳴ります。ただそれだけです。本当に鳴ったときは感動したなあ。エミュレータ上でだけど。

GBAについては開発だけならエミュレータがあれば十分ですし、前述の通り別に熱心にやっていた訳ではないので、実機で動かすためにすぐにマジコンをほしいと思わなかったまま今に至っているわけですが、昨今風当たりが強くなって来た事でもはや小心者の自分はマジコンを買うことはできなくなり、どうせなら今に比べたら比較的あまり話題になってない2007年のうちに手に入れておけばよかったな、しくじったなという思いがあるのです。

もちろん販売規制には大賛成ですよ。別にマジコンを正当化しようとこの記事を書いた訳ではありませんので(そもそも自主制作ソフトをゲーム機で動かすのはライセンス違反らしい)。

*1:アセンブリ言語なのは授業で発表するためにそうしたというだけで、実際はCはおろかC++GBA開発で使うことが出来ます。また、非公式ですが、ゲーム製作に適した手軽なスクリプト言語であるHSPGBAに移植しようと活動されてる方もいらっしゃいます。