【勝手移植】雷龍2 for X68030 の舞台裏

4
リンク EXCEEDの同人ソフト開発日記という名の備忘録 雷龍2 for X68030 - EXCEEDの同人ソフト開発日記という名の備忘録 動画はこちらからどうぞ ニコニコ動画(※再エンコード動画) YouTube マイコンソフト社製 XCAPTURE-MINI の 1080p 録画テストです。同機の仕様上、映像ソースが 1080p の場合は 30fps で記録されるため、一部の爆発アニメがおかしかったり、地形マスク用のスプライトが波打って表示されますが、ご了承ください。電波新聞社 PCレス小型キャプチャー・ユニット XCAPTURE-MINI DP3913544出版社/メーカー: 電波新聞社メディア: Personal Computersこ
EXCEED. @TransAmGTA92

「雷龍2 for X68030」を作る(移植)するとき、1つ重大な問題が浮上したことがあって、それは「基板のRAM空間(64KB)は、絶対に64KBアラインに設置する必要がある」で、どう対処したかというと、まず、実行ファイル(TD2.X) の先頭をいきなり .ds.b 65536 にして、基板のワークRAMに仕立る(続く)

2020-05-29 19:55:40
EXCEED. @TransAmGTA92

そして、専用のブートローダー(TD2BOOT.X)を作成した。これはどういう動作をするかというと、とりあえず malloc して、確保した先頭アドレスの64Kアラインの場所に TD2.X をロードする(いわば DOS _EXEC の自前版)というもの。(続く)

2020-05-29 19:55:40
EXCEED. @TransAmGTA92

なお、TD2.X は、自分自身が 64Kアラインに配置されていない場合は、エラーコメントを表示して command.x に戻るということをしている。(終わり)

2020-05-29 19:55:40
EXCEED. @TransAmGTA92

余談だけど、TD2.X(TD2.s) 側はこんな感じ RAMBASE: .ds.b 65536 boot: move.l # RAMBASE,d0 andi.l #$FFFF,d0 bne boot_error .end boot

2020-05-29 20:05:50
EXCEED. @TransAmGTA92

本物に負ける訳にはいかない訳ですよ(やめなさい) しかし、表示スプライト数が足りず、同時二人プレイできなくて負けている訳ですが....(やっぱりだめでしょう) pic.twitter.com/3KS0Zs9bSN

2022-02-09 19:43:35
拡大
拡大
拡大
拡大
カタ @kata68k

@TransAmGTA92 これは、EXCEED. さんが移植したモノだと勝手に思ってました。 twitter.com/famitsu/status…

2022-02-09 21:07:55
ファミ通.com @famitsu

『アケアカ サンダードラゴン2』Switch・PS4で2月10日に配信 1993年にNMKから発売されたシューティングゲーム。1P、2Pで性能の異なる機体が使用できるのが特徴。ショットやボムを駆使して、ボスを撃破しよう famitsu.com/news/202202/09… pic.twitter.com/MR9UzLG76S

2022-02-09 17:00:20
EXCEED. @TransAmGTA92

@kata68k 念のため明言しておきますが、私とはまったく関係ありません。

2022-02-10 03:50:29
EXCEED. @TransAmGTA92

もう12年も前の話なんで、多少記憶違いもあるかもしれないけど、元々、バトライダーを移植してみようとしたら、スプライトチップが化け物すぎて、雷龍2になったんだよなぁ。(雷龍2基板も、X680x0換算で 1024個(推測数)も出るから十分化け物だけど)

2022-02-10 03:23:44
EXCEED. @TransAmGTA92

確か、2010年に移植開始して、2013年に X68030 版が一応の形になって、それと並走してデバッグ用として Windows(DirectX/OpenGL)版が作られ、2015年に BlackBerry 10版が出来たんだったかな?AmigaOne版は、Windowsで動くものを作って、つい近年、そのまま AmigaOS 4.1でビルドして完成ってな感じ。

2022-02-10 03:29:38
EXCEED. @TransAmGTA92

X68030版は、どうしてもスプライト欠けが多発するので、割と最近までヒマを見つけては手入れしてて、ニセモノのくせに、通称「動体視力が落ちたおじさんモード」まである(笑)

2022-02-10 03:34:53
EXCEED. @TransAmGTA92

雷龍2は、ワーストケースで、16x16サイズのスプライトが、800数十個くらい一度に表示されるので、X68030版では、それを 350個くらいまで減らす工夫で2年とか軽く飛んだし、AmigaOne も結局非力なので、すべてのスプライト&背景をテクスチャ化したりしたので、完成まで2年以上はかかったはず。

2022-02-10 03:41:12
EXCEED. @TransAmGTA92

あと、X68030のスプライトパレットは15+1個しかなくて、NMK16基板だと、32個もあるので、それのやりくりも地獄だったなぁ・・・「絶対にかち合わない敵」を調べて、パレットを融通しあったりしてね。

2022-02-10 03:44:33
EXCEED. @TransAmGTA92

あと、キャラ用資源がまったく足りないので、2面のボス手前で、地面が開く所で左側の蓋(森)が、実は2面ボス本体だったりしてね。やってることは、本当にドリフの五軒家コント(笑)

2022-02-10 03:48:48
X68PRO @ThinkPad_R70e

@TransAmGTA92 雷龍2って、Xellent30積んだXVIだと速度的にやはり厳しいのでしょうか?

2022-02-10 08:10:00
EXCEED. @TransAmGTA92

@ThinkPad_R70e 厳しいですね・・・少なくとも XVI 24MHz ではNGです。動くことは動きますが、スロー再生になります。あと、いわゆる「ケツメモリ」問題がありまして、12MB(厳密には10MB程度)の連続した高速RAMが必要です。

2022-02-11 04:39:40
EXCEED. @TransAmGTA92

なんか意外に好評なので、もう少し書いてみる。では、具体的にどうスプライト数を減らすのかというと、 まずスプライトの仕様について話すと、実は、NMK基板のスプライトとX68000のそれは、幸いにもとてもよく似ていて、単位サイズは 16x16 の 32768色中16色となってはいるが(続く) twitter.com/TransAmGTA92/s…

2022-02-11 03:27:55
EXCEED. @TransAmGTA92

X68030 のスプライトは16x16 で128個しか表示できず、NMK基板はスプライト表示を一括で行う機能があり、超速なため、16x16 を900個近く表示しても、余裕で60fpsを出してくる。しかも、パターン定義数が、X68030 では最大で256個、NMK基板ではなんと、32768個ということになってる。(続く)

2022-02-11 03:27:56
EXCEED. @TransAmGTA92

まず、この時点でどうやっても太刀打ちできないので、ファミベのよっしん氏の最強スプライトダブラーライブラリ XSP を使わせてもらうと、いきなり最大 512個表示可能!しかも、偶然にも(仮想)最大パターン定義数が 32768個に拡張され、定義数ではタメを張ることができるようになる。(続く)

2022-02-11 03:27:56
EXCEED. @TransAmGTA92

ただし、スプライトダブラーといえど、当然のことながら限界があり、あまりに多くの数を表示すると、表示にかなりの破綻(表示欠けなど)を生じるため、 限界ギリギリまで、表示数をケチらなくてはならない。(続く)

2022-02-11 03:27:57
EXCEED. @TransAmGTA92

で、やっと本題に入る。基本的には「まったくの透明状態の16x16単位のスプライトを、最初から表示しない」ようにする。例えば、48x48の面積(16x16 9個分)の爆発のアニメパターンがあるとして、ここで「爆発」という概念について思い浮かべてみると(続く)

2022-02-11 03:27:57
EXCEED. @TransAmGTA92

「最初は小さいが、ボワっと大きくなって、徐々に小さくなって消えていく」のだけど「小さい時のコマ」って「透明部分ばかりの画」になっていることが多く、割と「完全に透明なスプライト」が点在している。これだけでも表示数をそれなりに節約することができるんだけど、まだまだ足りない。(続く)

2022-02-11 03:27:57
EXCEED. @TransAmGTA92

で、次の作戦はこう。まず、16x16 を4個使って、32x32 として表示している添付画像のようなスプライトがあるとする。(水色部分が透明色)このままだと、4個のスプライトを使って表示するしかないんだけど(続く) pic.twitter.com/wca8Vj3vBC

2022-02-11 03:36:25
拡大
EXCEED. @TransAmGTA92

添付画像のように「画自体を書き換えて(改造して)しまう」と、1~3の部分が不要になり、左上の1個のスプライトを、「画をスライドさせた分、表示座標も点対称方向にスライド」表示するだけで同じ再現が可能になる。(続く) pic.twitter.com/hSCfvpsgWQ

2022-02-11 03:42:59
拡大