スーファミゲー製作状況2018
もう2月になりそうですが今年最初なので一応、明けましておめでとうございます。去年の年始(一昨年の年末)はインフルエンザに罹ってボロボロでしたが今年は穏やかに迎えることができました。でも今年の方が流行ってるんですねえ。
さて、これまでのスーカツ(スーファミ活動)ですが……
とりあえず勢いでSFCのプログラムを作る(実機版1号)
↓
内容が微妙なのでWindowsでプロトタイプを作ってゲーム内容を真面目に考える
↓
プロトタイプと同じ内容をSFC実機で実装(実機版2号)
↓
グラフィックの豊井さん、サウンドのNinoさんと初めて会って打ち合わせ、いろいろ要望が出たので大きく変更することに
↓
プロトタイプから作り直す
↓
SFC実機へ移植(実機版3号)[作業中]
という経緯があり、ここまで2年ぐらい? いやあ、時間が流れるのって速い速い。そして製作は遅い。でも、流石にもうちゃぶ台返しはナシと決めていますのでこれでいきます。調整はしても変更はしない。
実機版の実装はコア部分がだいたい出来て一安心というところまできました。
パフォーマンスの話
以前にも書きましたがスーファミのCPUは初代ファミコンに毛が生えた程度で、当時でも高性能とは言い難い物なので、処理落ちを気に掛ける必要があります。ということで性能を計測したくなるわけですが、ここで走査線の位置を見るという方法があります。
スーパースローでブラウン管テレビの写り方を撮影するとどんなふうに見えるのか? - GIGAZINE
えっ、画面をカメラで……というわけではなくて、プログラムの中で走査線の位置を取得できるのでそれをメモリに書き込んでおいて、エミュレータのデバッガで見るという話です。当時のゲームは走査線を使ったトリックを実装していることが多いので、エミュレータはこのへんもしっかり再現しているわけです。
走査線のカウンタは以下のようなサイクルになっていて……
0xE0 : VBLANK開始、走査線が画面の下端に到達して描画が終わる
↓ (この間はハード側の描画処理が休むので、VRAMに書き込めるようになる)
0xFF
↓ (オーバーフローして0に戻る)
0x00 : VBLANK終了、走査線が画面の上端に現れ次フレームの描画が始まる
↓ (この間はVRAMに書き込めないので当たり判定等のCPUだけでできる処理を行う)
0xE0 : 次のVBLANK開始、ここまでに当たり判定等の処理が終わっていないと処理落ちになる
…なので、処理が終わった時点でのカウンタ値が0xE0に迫ってきたらアルゴリズムかゲーム内容を見直さないといけないということになります。
実際に計測してみると、まず敵(ネコ)を1体も置かないときは……
0x04程度。余裕ですね。続いて、3体投入すると……
0x32程度。さらに、5体まで増やすと……
0x4C程度。まだまだいける?と思いそうなんですが、ここで考えなければいけないのは、プレイヤーがネコに体当たりして魚を落とさせた後、ネコが魚に触れると取り返されるルールがあること。つまり、ネコ(多)-魚(多)の当たり判定という結構重い処理が入るので、5体全部が魚を落とした状態を計測。
0x9C~瞬間的に0xA2ぐらい。だいぶ重くなりました。ということで余裕を見て5体がMAXという仕様にしておきました。プロトタイプ版は4体でテストプレイをしていたので、5体も出せれば目標以上ってことで。
という感じで牛歩のように、しかし確実に作っていますんで、今年こそは完成目指してやっていきましょう。
そういえば最近、ビックやらヨドバシに行くと立派なレトロゲーコーナーがあるじゃないですか。あるんですよ。といっても中古カセットは流石に無くて、互換機とか8BIT MUSIC POWERとかが置いてあるんですが、8BIT MUSIC POWERがOKってことはこれもいけそうじゃないですか。あそこに置くのを今年の目標としましょう。
製作状況
豊井さんから4部構成にしたいなーという提案を受ける
- 田舎
- 田舎と都会の中間 → 河川敷
- 都会
- 宇宙?
(時間順になっていて、田舎ステージ=昼間から始まって都会ステージで夜になる)
- タコの女の子は火星人
- 火星にいる男の子に魚をプレゼントする為に魚を集めることが目的
(前は月から来たって聞いたような気がするけどまあいいか)
それで前景(プレイヤーが乗れる部分)はプログラムの仕様に合わせて作る必要があり難しいので、じゃあこれはこちらで作るので、豊井さんには後ろ(遠景)をお願いしようかな、みたいな状況になっている。ただ後ろも一枚絵をベタっと貼れるわけじゃなくてパーツに分解しないといけないんだけど。
とりあえず宇宙以外はイメージを作ってみたけど、宇宙が難しいな。
▼「田舎」試作版:前からずっと使ってるやつ
▼「河川敷」試作版:鉄製コンテナと古タイヤの山、トランスファークレーン。廃棄場みたいなイメージ
▼「都市」試作版:建設中のビル
(現在の背景は仮の物)
ちなみに、地形のオブジェクトは一応各パーツを描くときに理屈を考えている。別に機械や建築物の知識なんて一切無いので素人の妄想なんだけど、こうすると細部に描き込む物が思い浮かんでくる。
コンテナばっかりだな。箱が大人気。
ミニスーファミが届いた
ナナチが……
ではなくて、Amazonの予約分を押さえた知人に譲っていただいた次第です。圧倒的感謝。
書き換える
さて、一般メディアにも出ているので堂々と書くが、ミニファミコン/ミニスーファミの中身はhakchi2というツールで書き換え、元から入っているソフト以外で遊ぶことができる。
https://github.com/ClusterM/hakchi2/releases
hakchi2自体は去年のミニファミコンの頃から改良され続けているので洗練されており、本当に簡単に使える。
と思ったら、PCを再起動した後でPCがミニスーファミを認識しなくなってしまった(別のポートに差し直したら復活)。2017年になってもUSBというやつは心霊現象が起きる。
ちなみに、hakchi2にはおまけでスクリーンショットを撮る機能がある。テアリングを起こすのであまり実用的ではないんだけど、こういう不安定な時にちゃんと認識されているかの確認に使える。まずスクリーンショットを撮ってみて、成功したら書き込みに入るのが良いと思う。 書き込みに入ってから中断するのは怖すぎるので。
早速、手持ちのソフトを投入してみた。もちろん自分で吸い出したやつですよ。こんな名前のブログですが法令遵守でお送りしております。
開発者によると「75%程度動く」とのことで、任天堂純正エミュレータにしては意外と低い。まあそれでもスーファミソフトの母数を考えると相当な本数が遊べるわけだ(持ってれば、の話ね)
↓動作確認リスト ※Retrodeで吸い出せないソフト(他のエミュレータでも起動しない)は除く
- 任天堂 パイロットウイングス ◎動作
- コナミ グラディウスIII ◎動作
- ケムコ ボンバザル ◎動作
- バンプレスト す〜ぱ〜ぷよぷよ ◎動作
- チュンソフト トルネコの大冒険 ◎動作
- ハドソン スーパーボンバーマン2 ◎動作
- メサイヤ らんま1/2 町内激闘編 ◎動作
- バンダイ ドラゴンボールZ 超武闘伝2 ◎動作
- TNN 海腹川背 ◎動作
- コンパイル す〜ぱ〜ぷよぷよ通
×起動しない→ ○ヘッダ修正で動作 - コンパイル す〜ぱ〜ぷよぷよ通 リミックス
×起動しない→ ○ヘッダ修正で動作 - 日本ファルコム ぽっぷるメイル ○ヘッダ修正で動作
- ポルノアニメ 自作ソフト ◎動作
手持ちのソフトは結構打率が良かった。起動さえしてしまえばリプレイや状態セーブもしっかり動く。自作ソフトも起動しているので「基本的には何でも動く」ことが分かる。何らかの地雷を踏むと例外的に動かなくなると。その例外が「ぷよぷよ通」なのは本当に悲しいが……
ちなみに、hakchi2では最後の手段として「エミュレータごと入れ替える」を提示しているが、うーん、そこまでやるならRaspberry Piで動かすかな……
追記
ブコメで情報をいただきました
す~ぱ~ぷよぷよ通はバイナリエディタで半角カタカナタイトルを他の文字に置き換えると動く可能性あり、メニュータイトルの日本語フォントは自分のblogで上げている
http://b.hatena.ne.jp/entry/346097370/comment/BCC
見事動きました。感謝……
ということで、吸い出せた分に関しては100%になりました。
ああちなみに、書き換える場所はヘッダです。なんじゃそらという方は自作ゲーム(homebrew)や改造(hackrom)関連の情報を漁ってください。
追記2
新しいhakchi2(v2.21b)でこの問題の対処らしきパッチが入ったのですが、ミニスーファミが文鎮になりました ……という時のためにファームウェアのバックアップを取る機能(dump kernel)があるので、絶対に取っておいて下さい。
↓ ゲームの動作自体は全く問題ないが、元からあるソフト含めて日本語のタイトルがおかしくなってしまった。聖剣がただの剣に。
↓ ちなみに自作ソフトの様子はこちら
世界広しといえどもミニスーファミで自作ソフトを動かしている奴は……結構いそうだな。世界は広いので。
ミニスーファミ予約開始!
戦果
戦局必スシモ好転セス
あのですね、Amazonの新商品ってすぐには検索に出てこないんですね。なので、Twitterを監視して誰かが貼ったリンクを辿る方が早いという(じゃあそいつはどこで見つけてくるんだという話ですが、検索用のサーバに当たり外れがあるみたいなことでしょうか)
この手の争奪戦には慣れてないので、Switchとかで練習をしておけばよかった。
早い者勝ち系は玉砕したので、ジョーシンの抽選に申し込んであとは天に任せる。まさに任天堂。
追記
本当に譲ってくれるナナチが現れたので自分用の一台は確保できました
開発状況
スタート時のデモを作った。光の筋は文字表示用のBG面を潰して出してるので、完成版ではデモが終了するまで文字は消しといて終わったら出す、という感じになります。
ゲーム本編に関してはスタートからクリアまで一通り揃ったので、演出とかストーリーとか、そもそもタイトルとか、久々に打ち合わせでもしようかな。
近況報告
スーパーファミコン開発
一言で言うと「ロックマンXの動きでフリッキー」みたいな内容に落ち着きつつある。フリッキーというのはこれ↓
敢えてリッチなアーケード版ではなくSG-1000版を貼ったのは我が家にあったから……
しかしひとつ、SG-1000版の方が優れている(と思う)点があって、分かります?
ゲームスタート時に、床にある模様(フリッキーの家?)の動きが音楽と同期しているという点なんですが、どうでしょう。
さてフリッキーは置いておいて、我々のスーファミゲーの方は以下。
↓方向キー2回またはAボタンで、空中・地上ともにダッシュが可能。ダッシュは攻撃を兼ねていて、猫に体当たりすると魚を落とさせることができる。魚を落とした隙に奪う。
↓魚を奪われた猫は怒り状態になり、これに触れるとプレイヤーの方が魚を落としてしまう。プレイヤーが落とした魚に猫が触れると取り返されてしまう。
↓魚をすべてUFOに持って帰るとUFOが離陸しクリア。
- 以上のスクリーンショットはまだWindows上で動いているプロトタイプのもの。
- 敵(猫)の数が4体であれば、スーファミ実機での実装時に性能上の問題は無い見込み。5体ぐらいまでならいけるかも。
- 怒った猫に攻撃判定を付けたら4体でもかなり難しくなったので、5体も要らないかもしれない。
あとは残りのToDoというかトヨイさんからの要望として、ボスキャラが欲しいというのがある。
iPad Pro で絵を描く
トゥイッターではこいつ狂って散財してるぞとか言われたくなかったので借りてると書いたんだが、まあ、iPad Proも買ったんだよ。
絵を描くなら思い切って大きいやつがいいのかな? と思ったが、店頭で12インチ版を見たところ想像以上にデカくて、これを電車の中で振り回してるのは完全にアホだと思って一番小さい9.7インチにした。安いし。
で、iPad Pro で絵を描くなら Procreate というのが定番らしい。App Store では Essentials と言って要するにApple公認のオススメ印が付いている。1000円もしない物だしいきなり入れた。
……。
うーん、これは何だ、利用者をストレスで殺すために設計されているんだろうか?
ジェスチャが誤爆しまくって、頑張って描いた線が次の瞬間にUndoの誤爆で消えたりする(ここでうっかりペン先が着地するとRedoが吹っ飛ぶ)
もうiPhone 10周年とか言ってる時勢だしそろそろ「クールでオシャレなUI」信仰はやめてほしいな……と言いつつこれより良いソフトがあるのかどうかも分からないので、ぶつくさ言いながら使ってるんだけど。
手袋は結構有効らしい。
http://shunirr.hatenablog.jp/entry/2017/06/21/005921
ちなみにProcreateはイラストレーターの寺田克也氏も使っているらしいけど、弘法筆を選ばずというやつで上手すぎる人の感想はあまり参考にならない気がする
役に立たない話
液タブを買った
2017年になっても液タブはそんなに安くないが、まあ2年ぐらい紙で練習したしそろそろいいかなと。
結果として、高いだけの価値はあった。紙の時は鉛筆だけで済ませてたけど、デジタルならUndoしながらペン入れできるし、清書したらそれだけでなんか上手くなった気になる。
まあ本当に上手い人は鉛筆で描いても上手いけどね……
やっぱさ、ローテクで大道芸かます方が格好いいよね、と言うとVoQnあたりに馬鹿にされそうだけど。まあでもローテクには浪漫がある。
一つ不満があるとすればこれ、PCが内蔵されていて単体でWindowsが動くんだけど、そうするとキーボードを繋がずに使うことが多くなるわけで、キーボードが無い状態でファンクションキー6個じゃ全然足りない。恐らくWindows 10の要件でボリュームボタンなんて付いてるけど、そんなもん付けるコストはファンクションキーに回してくれよと思った。
金を得たおっさんは新しい趣味に挑む際にいきなり高額な道具を平気で購入してぶっこんでくるのでヤフオクが潤う
— すぐ飽き子 (@dzfl) 2017年7月4日
うるせえよ!
スーファミ「に」プログラムを移植する
以前、豊井さん、NinoさんとSkypeで打ち合わせをした時に
Windowsでプロトタイプを作ってスーファミに移植するって、どういうこと? 「移植できるように作っている」って、具体的に何やってんの?
という話が出て、これはどう考えても一生誰の役にも立たない知識なんですが、インターネットというのはそういう情報を書く所だと信じているので、今日はこの話です。
例えば非常に簡単な例として、キャラクターが走るアニメーションに4コマ使う場合、フレームの番号を
0,1,2,3, 0,1,2,3, 0,1,2,3……
という感じで発生させるプログラムが必要になりますが、これが5コマになって
0,1,2,3,4, 0,1,2,3,4, 0,1,2,3,4……
となった途端に、プログラマーが嫌な顔をするという話があります。
なんでよ、というと、4コマでループするカウンタの場合は、0,1,2,3,4,5,6,7,8……と単純に増える馬鹿カウンタを別に1つ用意しておいて、その下位2bitを取れば簡単に生成できるんですが、5コマだとこの技は使えないので、最大値をチェックして0に戻す……みたいな処理が増えてしまうという事情があります。
「5で割った余り取ればいいでしょ?」というのも、実は除算というのは贅沢品で……という話があって。
つまり、「ドラクエのレベル1縛りプレイ」みたいなプログラミングをする必要があるという話です。