Hello, my name is pornanime.

製作状況

screencast

豊井さんから4部構成にしたいなーという提案を受ける

  • 田舎
  • 田舎と都会の中間 → 河川敷
  • 都会
  • 宇宙?

(時間順になっていて、田舎ステージ=昼間から始まって都会ステージで夜になる)

  • タコの女の子は火星人
  • 火星にいる男の子に魚をプレゼントする為に魚を集めることが目的

(前は月から来たって聞いたような気がするけどまあいいか)

それで前景(プレイヤーが乗れる部分)はプログラムの仕様に合わせて作る必要があり難しいので、じゃあこれはこちらで作るので、豊井さんには後ろ(遠景)をお願いしようかな、みたいな状況になっている。ただ後ろも一枚絵をベタっと貼れるわけじゃなくてパーツに分解しないといけないんだけど。

とりあえず宇宙以外はイメージを作ってみたけど、宇宙が難しいな。

▼「田舎」試作版:前からずっと使ってるやつ
f:id:gyuque:20171202013659p:plain
▼「河川敷」試作版:鉄製コンテナと古タイヤの山、トランスファークレーン。廃棄場みたいなイメージ
f:id:gyuque:20171202013601p:plain
▼「都市」試作版:建設中のビル
f:id:gyuque:20171202013625p:plain
(現在の背景は仮の物)



ちなみに、地形のオブジェクトは一応各パーツを描くときに理屈を考えている。別に機械や建築物の知識なんて一切無いので素人の妄想なんだけど、こうすると細部に描き込む物が思い浮かんでくる。

f:id:gyuque:20171202014625p:plain
f:id:gyuque:20171202014636p:plain

コンテナばっかりだな。箱が大人気。

ミニスーファミが届いた

f:id:gyuque:20171011143701p:plain
ナナチが……
ではなくて、Amazonの予約分を押さえた知人に譲っていただいた次第です。圧倒的感謝。

書き換える

さて、一般メディアにも出ているので堂々と書くが、ミニファミコンミニスーファミの中身はhakchi2というツールで書き換え、元から入っているソフト以外で遊ぶことができる。

https://github.com/ClusterM/hakchi2/releases

hakchi2自体は去年のミニファミコンの頃から改良され続けているので洗練されており、本当に簡単に使える。

と思ったら、PCを再起動した後でPCがミニスーファミを認識しなくなってしまった(別のポートに差し直したら復活)。2017年になってもUSBというやつは心霊現象が起きる。

ちなみに、hakchi2にはおまけでスクリーンショットを撮る機能がある。テアリングを起こすのであまり実用的ではないんだけど、こういう不安定な時にちゃんと認識されているかの確認に使える。まずスクリーンショットを撮ってみて、成功したら書き込みに入るのが良いと思う。 書き込みに入ってから中断するのは怖すぎるので。

早速、手持ちのソフトを投入してみた。もちろん自分で吸い出したやつですよ。こんな名前のブログですが法令遵守でお送りしております。

f:id:gyuque:20171011135859j:plain

開発者によると「75%程度動く」とのことで、任天堂純正エミュレータにしては意外と低い。まあそれでもスーファミソフトの母数を考えると相当な本数が遊べるわけだ(持ってれば、の話ね)

↓動作確認リスト ※Retrodeで吸い出せないソフト(他のエミュレータでも起動しない)は除く

手持ちのソフトは結構打率が良かった。起動さえしてしまえばリプレイや状態セーブもしっかり動く。自作ソフトも起動しているので「基本的には何でも動く」ことが分かる。何らかの地雷を踏むと例外的に動かなくなると。その例外が「ぷよぷよ通」なのは本当に悲しいが……
ちなみに、hakchi2では最後の手段として「エミュレータごと入れ替える」を提示しているが、うーん、そこまでやるならRaspberry Piで動かすかな……

追記
ブコメで情報をいただきました

す~ぱ~ぷよぷよ通はバイナリエディタで半角カタカナタイトルを他の文字に置き換えると動く可能性あり、メニュータイトルの日本語フォントは自分のblogで上げている

http://b.hatena.ne.jp/entry/346097370/comment/BCC

見事動きました。感謝……
ということで、吸い出せた分に関しては100%になりました。

ああちなみに、書き換える場所はヘッダです。なんじゃそらという方は自作ゲーム(homebrew)や改造(hackrom)関連の情報を漁ってください。

追記2

新しいhakchi2(v2.21b)でこの問題の対処らしきパッチが入ったのですが、ミニスーファミが文鎮になりました ……という時のためにファームウェアのバックアップを取る機能(dump kernel)があるので、絶対に取っておいて下さい。

f:id:gyuque:20171012010548p:plain

f:id:gyuque:20171011041559p:plain

f:id:gyuque:20171011041503p:plain

f:id:gyuque:20171011041458p:plain

↓ ゲームの動作自体は全く問題ないが、元からあるソフト含めて日本語のタイトルがおかしくなってしまった。聖剣がただの剣に。

f:id:gyuque:20171011041533p:plain

↓ ちなみに自作ソフトの様子はこちら

f:id:gyuque:20171011141023j:plain f:id:gyuque:20171011141038j:plain

世界広しといえどもミニスーファミで自作ソフトを動かしている奴は……結構いそうだな。世界は広いので。

ミニスーファミ予約開始!

戦果

f:id:gyuque:20170925025126j:plain
戦局必スシモ好転セス

あのですね、Amazonの新商品ってすぐには検索に出てこないんですね。なので、Twitterを監視して誰かが貼ったリンクを辿る方が早いという(じゃあそいつはどこで見つけてくるんだという話ですが、検索用のサーバに当たり外れがあるみたいなことでしょうか)
この手の争奪戦には慣れてないので、Switchとかで練習をしておけばよかった。

早い者勝ち系は玉砕したので、ジョーシンの抽選に申し込んであとは天に任せる。まさに任天堂

f:id:gyuque:20170925024540p:plain

追記
本当に譲ってくれるナナチが現れたので自分用の一台は確保できました

開発状況

スタート時のデモを作った。光の筋は文字表示用のBG面を潰して出してるので、完成版ではデモが終了するまで文字は消しといて終わったら出す、という感じになります。

f:id:gyuque:20170925030129g:plain

ゲーム本編に関してはスタートからクリアまで一通り揃ったので、演出とかストーリーとか、そもそもタイトルとか、久々に打ち合わせでもしようかな。

近況報告

スーパーファミコン開発

f:id:gyuque:20170907031132p:plain

一言で言うと「ロックマンXの動きでフリッキー」みたいな内容に落ち着きつつある。フリッキーというのはこれ↓

敢えてリッチなアーケード版ではなくSG-1000版を貼ったのは我が家にあったから……
しかしひとつ、SG-1000版の方が優れている(と思う)点があって、分かります?
ゲームスタート時に、床にある模様(フリッキーの家?)の動きが音楽と同期しているという点なんですが、どうでしょう。

さてフリッキーは置いておいて、我々のスーファミゲーの方は以下。



↓方向キー2回またはAボタンで、空中・地上ともにダッシュが可能。ダッシュは攻撃を兼ねていて、猫に体当たりすると魚を落とさせることができる。魚を落とした隙に奪う。
f:id:gyuque:20170902042329g:plain


↓魚を奪われた猫は怒り状態になり、これに触れるとプレイヤーの方が魚を落としてしまう。プレイヤーが落とした魚に猫が触れると取り返されてしまう。
f:id:gyuque:20170902042436g:plain


↓魚をすべてUFOに持って帰るとUFOが離陸しクリア。
f:id:gyuque:20170907031552g:plain

  • 以上のスクリーンショットはまだWindows上で動いているプロトタイプのもの。
  • 敵(猫)の数が4体であれば、スーファミ実機での実装時に性能上の問題は無い見込み。5体ぐらいまでならいけるかも。
  • 怒った猫に攻撃判定を付けたら4体でもかなり難しくなったので、5体も要らないかもしれない。

あとは残りのToDoというかトヨイさんからの要望として、ボスキャラが欲しいというのがある。

iPad Pro で絵を描く

f:id:gyuque:20170907234026j:plain

トゥイッターではこいつ狂って散財してるぞとか言われたくなかったので借りてると書いたんだが、まあ、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年ぐらい紙で練習したしそろそろいいかなと。

f:id:gyuque:20170729025822j:plain

結果として、高いだけの価値はあった。紙の時は鉛筆だけで済ませてたけど、デジタルならUndoしながらペン入れできるし、清書したらそれだけでなんか上手くなった気になる。
まあ本当に上手い人は鉛筆で描いても上手いけどね……

やっぱさ、ローテクで大道芸かます方が格好いいよね、と言うとVoQnあたりに馬鹿にされそうだけど。まあでもローテクには浪漫がある。

一つ不満があるとすればこれ、PCが内蔵されていて単体でWindowsが動くんだけど、そうするとキーボードを繋がずに使うことが多くなるわけで、キーボードが無い状態でファンクションキー6個じゃ全然足りない。恐らくWindows 10の要件でボリュームボタンなんて付いてるけど、そんなもん付けるコストはファンクションキーに回してくれよと思った。


うるせえよ!

f:id:gyuque:20170729025543p:plain
f:id:gyuque:20170717150627p:plain



スーファミ「に」プログラムを移植する

f:id:gyuque:20170729030608p:plain

以前、豊井さん、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縛りプレイ」みたいなプログラミングをする必要があるという話です。

f:id:gyuque:20170729003454p:plain

ミニスーファミ記念更新

ミニスーファミ

ついに来てしまいました。

見てくださいよこれ。ミニスーファミ。家に来たわけじゃなくて発表されただけですが。
少し前の話をすると、Microsoftが「SNES Classic Edition」という項目が入ったE3の来場者向けアンケートを事前に漏らしてしまって、これはE3で発表されるぞ!と話題になっていたところ結局E3では発表されなくてガックリ、と思っていたらE3が終わった途端に発表されたという経緯がありまして、喜びもひとしおと言ったところであります。

とりあえず、Amazonに来た瞬間に注文を撃ち込めるようにしときますか。

進捗

さて。だいぶ間が空いてしまいましたが、とりあえずゴールデンウイーク頃の話から。
京都でNinoさん、豊井さんと会って打ち合わせという程でもないですが、改めてアイデア出しみたいな会をしました。

f:id:gyuque:20170703005715j:plain

これは貴重な豊井さんの生絵が入ったアイデアノートです。

f:id:gyuque:20170703005725j:plain

全く関係ないですがこれは私のカーバンクルです。

さて、いろいろ話した結果

  • ボス出したい
  • ダッシュしたい

といった要望が出て(プログラムはもうフィックスして弄らないつもりだったんですが)やっぱりプログラムにもう一度手を入れる決心をして、またWindows上で動くプロトタイプの方に戻ってプレイヤーの動きを考えたりしているところですが……

f:id:gyuque:20170703005736g:plain

見ての通り、豊井さんが以前よりがっつりと関わっていただけるようになり、上のスケッチになったキャラクターがちゃんと動いております。背景は今のところ自分で打った仮の物ですが、こちらも進行中です。

スーファミサウンドの裏で何が行われているか

qSPCの開発も山場を越えた感があるのでたまには進捗報告以外の話を……

多分、普段は宇宙語が書いてあるブログだと思って見てない人が多いと思うので前提知識を手短に書いておくと:

  • スーパーファミコンにはメインのCPUと別にサウンド用のCPUが乗っている
  • オーディオデバイスにはサウンドCPUからしか触れない
  • サウンドCPUはメイン側とは独立したメモリを抱えている
  • このメモリは64KBしかない
  • メインCPUとサウンドCPUのやり取りには、あまり速くない通信路を使う必要がある

という制約があるので、いかにデータをコンパクトにして、最低限の物だけをサウンドCPUに送るかという所で開発者の腕が試されることになる。で、プロの技はどんなもんだろうかと、メモリダンプを見ながら定番のグラディウスIIIをやってみると……

ボスを倒して、ステージが変わるタイミングで一瞬画面が止まるので、ここで曲を入れ替えていると思ったんだけど、ここでは転送している様子がないな。転送している様子がないという事は、グラディウスIIIのBGMは全曲分、他のデータとの兼ね合いを考えれば数KBに詰め込まれているということになる。
マジで?いくらコナミでもそんなことできるの?

そこで、ゲーム中にミュージックドライバがどういう挙動をしているのか調べてみることにした。具体的には、Snes9xを改造して、S-SMP(サウンド専用CPU)のメモリアクセスと(メインCPUからの)データ転送をログに記録して可視化する。上手くいけばシーケンスデータにアクセスしている様子が浮かび上がるんじゃないか?という目論見だがさて……

・・・

というわけで。CPU/DSPのエミュレーション部分にロガーを仕込んだが、さすがにメモリアクセスを全部記録するとログが恐ろしく巨大になるので、画面の更新時間を基準にして3フレーム(1/20秒)単位で、128バイトごとのリード・ライトをサマリとして出力するようにした。これなら数分ゲームをプレイしてもログは1MBか2MBといったところで現実的。
で、このログをJavascriptで作った可視化ツールに食わすとこうなる。ああでも、スクリーンショットは手作業で貼り付けた。

f:id:gyuque:20170430020528p:plain

こんな感じで、青はRAM内のリード、赤はライトを表していて、本体(メインCPU)側からデータをロードすると大量のライト(赤い線)が現れる。シーケンス(楽譜)データを読んでいる部分はまとまったリード(青)という形でなんとなく見える。ちなみに薄い青はDSPによるサンプリングデータの読み出しなので、これが出ている箇所はほぼ確実にサンプリングデータが入っていることになる。

※ちなみに使っているROMはちゃんと自力で吸い出しているので悪しからず
f:id:gyuque:20170430122851j:plain


さて、グラディウスIIIの様子を見てみると?

グラディウスIII」はゲーム中に次の曲を先読みしている

最初に結論を言ってしまうと、全曲を詰め込んでいるわけではなかった。もっと巧妙なことをしていた。

f:id:gyuque:20170430021755p:plain

グラディウスIIIのミュージックドライバには、通常の処理をしながらデータを受け取る機能が付いていて、次に流す曲のシーケンスを裏でロードしているのである。
確かにグラディウスというゲームは展開が決まっているので、次の曲を先回りして準備しておくという処理もできそうである。

いやでも、SFC版はボーナスステージってあったよね?
というのが気になったので頑張ってボーナスステージに入るところまで進めてみた。すると……

f:id:gyuque:20170430033753p:plain

なんと、ボーナスステージの入り口が近づいてくると、シーケンスを先読みしていることが分かる。プレイヤーが実際にボーナスステージに入るかどうかは分からないので、入らなければこのデータは捨てられるということになる。この時代に投機実行をやってたのか。昔のコナミ凄い。いや、メタルギアシリーズのファンじゃないので、今のコナミに恨みがあるかというと別に無いんだけど、そろそろ外注でいいからグラ6作ってくんないかな。


修正

気になったのでボーナスステージに入らなかった場合と比較したところ、先読みしているのはボスBGMで「ボーナスステージに入るとボスBGMを破棄してボーナスステージ曲をロード」が正しいようでした。まあこれでも投機的と言えるか。もっとも、読み込みにかかる時間を勘案して決めたら結果的にこうなっただけで、最初から意識して実装したわけではないと思う。

f:id:gyuque:20170501200340p:plain ◀ ボーナスステージに入った場合
f:id:gyuque:20170501200349p:plain ◀ ボーナスステージに入らなかった場合

ドラゴンボールZ 超武闘伝2」は「気」を溜める裏でサンプリングデータも溜めている

ドラゴンボールZ 超武闘伝シリーズ。

これ、みんなやったよね。今はプリパラやアイカツスターズばっかり見てる人間も昔は毎週ドラゴンボール見てたんですよ。

それは置いといてこのゲーム「デモ必殺技」というシステムがある。お馴染みの「かめはめ波」といった大技を出すと、ゲームの進行が中断しデモ画面が入って、派手に技を撃ってくれるというものである。
(どんなものかは動画を見た方が早い)

ちびっ子達の心を掴むのに一役買ったデモ必殺技だが、このボイスのデータは12KBぐらいある。64KBのうちの12KBはなかなか馬鹿にできないサイズなので、常に置いておくわけにはいかない。そこで、プレイヤーがデモ必殺技のコマンドを入れた瞬間に、通常技用のボイス(これは汎用的に使えるよう、具体的な技名じゃなくて掛け声になっている)を潰して、デモ必殺技用のボイスをロードしている。デモが終わると通常技用のボイスをロードし直してゲームに戻る。
具体的には以下のような感じ(動画とキャラが違ってごめんなさい)

f:id:gyuque:20170430024158p:plain

ちなみに1P側と2P側は均等に容量を割り当てられていて、デモ必殺技の時も各プレイヤーの側だけを潰すようになっている。デモ必殺技の途中で撃たれた側がコマンドを入力すると撃ち返せるというシステムがあるので、相手の領域まで潰してしまうと、撃ち返しのボイスが出せないからだと思われる。

f:id:gyuque:20170430024211p:plain

ボイス以外の部分はもちろん共用の効果音やBGM用の楽器が入っている、筈。

このゲーム、世間的にはトーセが作ったことになっているようだけど、本当はどうなんでしょうね。ナムコとくっつく前のバンダイが作ってるわけがないのは確かだけど。

テイルズオブファンタジアのボーカル付きオープニング

あれもどうなってるのか見ようと思って秋葉原行ってカセット買ってきたんですけどね……
f:id:gyuque:20170430030746p:plain
なんかRetrodeでは吸い出せなくて。

フォーラムにも「困った!」という書き込みがあったけど特に解決したわけでもなく渋い感じで終わってしまった。



カットしていないログの巨大画像はこちら