シューティングゲーム(の土台)作りました
(2007.03.22)
文字コードやフォントがどーこーという物は、ちまちましていてストレスがたまりそう。この間、USBスタックPoseidonのレジストが完了してゲームパッドを使えるようになったのでストレス解消のためにシューティングゲーム(の土台)を作りました。
Amithlonではgameport.deviceの動作がうまくいかなくて「変だなー」と頭を抱えてたら開発者向けのサンプルプログラムも動作しなくてズッコケました。その代わりに関数ReadJoyPort一発呼び出しでパッドの現状(現在値)が32ビット値のフラグで来る次第。あー楽ちん。この関数V40からサポートだからV39までgameport.deviceでうにょうにょやってたのかなぁ。Poseidonで認識できたUSBゲームパッドはSANWA SUPPLY easy grip JY-P56UGという安価な物。パッド自体は上下左右、1〜10となっていてReadJoyPortで上下左右、1〜7を入力できました。
次はスクリーンの作成。Amigaの場合は解像度関連のサポート関数が充実してるからホイサッサ。かえって多過ぎるくらいなのでどれ使おうか?と悩むくらい。ちょいと困ったのは解像度1,024x768限定で一覧表示させるハズが低い解像度も一緒に出るのでコイツは選択しない方向で(爆)。
自機と敵機の絵はImageF/Xで32x32のドット絵を作りIFFで保存。AmigaのDataTypesはプラグイン式のファイルローダになるのでファイル形式問わず24ビットのビットマップ形式で取得できます。
ゲームパッドのみで入力するためキーボード入力は一切なし(いや、ストレス解消だからコレ)。なのでウィンドウなしでスクリーンのビットマップに直接描画することにしました。ただ、自機とか敵機を個別に描画するとチラつくのでバッファ用のビットマップに全部描画してからBltBitMapRasportしました。
起動するとスクリーンモードの選択リクエスタが出るので必ず1024x768のモードを選択します(笑)。モードはENV:OF_SHOOT_IDとENVARC:OF_SHOOT_IDに保存されて今後同じモードで起動しますから選択を間違えたときは2個とも消してください。スクリーンの中央に自機が表示されて上下左右(斜めOK)に移動できます。ボタン2を押すと敵機が襲ってくるのでかわしてください。あ、弾は出ません。土台ですから。敵機と衡突しても爆発しません。だから土台ですってば。ボタン7を押すと終了します。
このプログラムの動作条件は
・1024x768 24ビットのスクリーンをWorkbenchと別に確保できる。
・7ボタン以上のゲームパッドを接続している。
この条件を満たすにはAmithlonにPoseidonをインストールしなきゃ無理と思う。
もしかするとWinUAEなら行けるんだろうか。どうスか?>WinUAEな皆様
いやー、画面が動くプログラムを作るのはストレス解消になるねー。ま、gameport.deviceが動作しないのはストレスがレッドゾーン入ってたけど(笑)。
2007.03.22
ボタン1で自機から弾、敵が自動出現、敵も弾、ボタン6でポーズ、ちらつき軽減、Picasso96API.library使用、等々。
ofshoot2.lhaのほうです。
ofshoot.lha (12,518 バイトを自宅サーバから 00:05 で)
ofshoot2.lha (21,592 バイトを自宅サーバから 00:05 で)