Making「ASALT」

Home PC-6001mkII Program etc

関連リンク ASALT

画面 更新日:2010/05/01
作成日:2009/06/10

2009年6月に公開した「ASALT」の作成過程を以下少しずつ書き綴っていこうと思います。
2009/11/16:第2弾見切り発車でスタート!

2010/06/18〜19:P6オフ
 あれよという間に、また1ヶ月半が経ってしまった。予定では敵の個別移動やグレネードの当り判定などもできているはずだったのだが、全然達していない。でも、とりあえず今時点のものをP6オフのネタで持っていくとするか。

 この時点では、モニタモードで直接マシン語を流し込む形だったので、マシン語部分をディスクに入れて、BLOADで読み込むように変更する。これで完成...まてよ、そういえば当日はmkII本体とデータレコーダもあるんだったな。ならばカセットイメージを作っておくべきだろう。

 テープイメージへの置き換えは今までも何度か行っているので、1時間もあれば出来上がる。これをエミュ上で読み込ませてみる...暴走。ありゃりゃ?
この時点で既に日付を越えてP6オフ当日となっていた。

 読み込まれたマシン語とディスク版との違いを注意深く見比べると、最後の方で異なっていた...というより読み込まれていなかった。原因は少し経ってわかった。グレネードのデータ部分で00Hが10個以上並んでいたので、そこでカセットからの読み込みが終了していたのだった。

 その部分をビット反転するなりすれば問題ないのだろうが、集中力の切れ掛かった頭と残された時間では無理というもの。結局データの一部を目立たない値に変更し、暫定的ではあるが現時点のテープ版が完成した。

 朝起きてから、まだ見せていなかったアレを見せるべく修正を加え、P6オフに向かう。みんなのネタの隙をうかがいつつ、プログラムを実行させる。見た目は昨年とさほど変わらなかったが、今回初参加の人にはインパクトがあったのではないだろうか?

画面


2010/04/30:敵移動その1
 前回の更新からまた1ヶ月が経ってしまった...。いい加減に先に進まないと6月に間に合わないので、敵の移動処理の外枠を作る事にする。

 敵のキャラクタも地形に直接書き込む予定なので、前に作成したグレネード処理との順序が重要となる。地形に書き込む順とは逆順で消していかないと地形上にゴミが残る事になる。という事で、大まかに以下のような処理の流れとする。

敵消去 → グレネード消去 → グレネード移動/描画 → 敵移動/描画

 これで進めようと思ったが、前に作った敵データだと敵の下にある地形色を記録できない事がわかり、データを追加する。
#説明値範囲備考
9 地形色退避 80H〜FFH 移動速度が00H以外の時に退避する

 少しでも処理を速くするために、敵データ全体を256バイト内に収めたい。となると、逆算して28機までは入れられるということか。
 まだ敵データが増えないとも限らないし、そもそも速度が追いつかないかも知れないが、とりあえず28機を移動させるようにする。

 最低限の動きがわかるように、X座標方向を+1するだけの単純な敵移動処理を組んで動作を確かめる。

画面

 ここまでは意外とあっさり動いた。後は敵1機辺りにどれだけの処理を割けるかだが...。
ダミーの処理として「LD B, B」を256回 DJNZループする処理を入れてみる...遅い。いやいや、この時のためにBASIC部分でウェイトをかけていたじゃないか!

 BASIC部分でウェイトをかけていた部分を注釈にして再度試す...うむむ、まだ遅い。半分の128回なら若干遅いけど何とか許容範囲だろうか。

 という事は、敵1機あたり (5 + 14) * 255 + (5 + 9) = 4859ステップか。複雑な処理をしなければなんとかなるかもしれないが、グレネードとの当たり判定やTIME/SCORE表示処理も考慮に入れると少しでもステップを稼いでおきたいところだ。

2010/03/22:グレネード表示その3
 さて、先週グレネードが爆発するところまで作成したが、なぜか少々物足りない。

 やはり、なんかしらの爆発音は必要だろう。そしてもう一つ、爆発時の一瞬フラッシュ表示も試しに入れてみるとするか。

 はじめに、フラッシュ表示を実装する。やっている事は単純で、グレネードが爆発した瞬間のみ通常の回転表示ではなく真っ白の表示にする。
 当然、通常の回転画面を表示するよりも処理が速いので、大体の時間を合わせるためにウェイトを追加する。
画面 画面
 これでどうだ!...止め絵だと手抜きにしか見えないけど。

 次にグレネード爆発の音だが、ノイズ音を音量を変えて出力するようにする。こんな音でも、無いと有るとでは大違いだ。

 今度こそ敵の処理を作成しないとな。

過去

ページ項目
過去:その1 2008/10某日:はじめに
2008/10/25:高速化その1
2008/10/25:高速化その2
2009/01/15:高速化その3
2009/01/31:マップ表示
2009/02/01:暴走
2009/02/05:拡大が...
2009/02/11〜13:表示バグ修正
過去:その2 2009/02/14:キー入力
2009/02/21〜22:マップ修正
2009/02/22:バック転回
2009/03/08:二画面切り替え
2009/03/29〜04/0x:コリジョン
2009/04/0x〜04/07:ジャンプその1
2009/04/08:ジャンプその2
過去:その3 2009/04/11〜05/0x:クリア判定
2009/05/11:クリア処理その1
2009/05/16〜27:クリア処理その2
2009/05/30:面データ圧縮
2009/06/03:メモリマップ修正
2009/06/05:カセット版作成
2009/06/06:オフ会
2009/06/13〜06/21:公開
過去:その4 2009/08/某日:グレネード案
2009/08/某日:処理方式検討
2009/09/05:初代機版作成
2009/09/06:風呂敷広げ
2009/09/07:敵データ Ver.1
2009/09/1x:頓挫
2009/12/30:再開
2010/01/04:敵データ Ver.2
過去:その5 2010/02/18〜25:地味に削減
2010/02/27〜28:グレネードステータス
2010/03/01〜03/03:グレネード表示その1
2010/03/05〜03/13:グレネード表示その2


PC-6001mkII