Hello, my name is pornanime.

近況

www.youtube.com
年をまたいでしまいましたが、二宮さん提供のqSPCテスト曲を。パンポットを使用してステレオになっています。水平同期がちょっと乱れてるけど、年末に急いで収録したので撮り直さなかった。ケーブルはこの前新調したばかりなので、本体側の端子が錆びてんのかな……

ボクはファミコンが欲しかったのに

cover

https://www.amazon.co.jp/dp/B00NASDYDE/

ゲームセンターCX」の構成作家、岐部昌幸氏の本。ジャンルは「小説」ということで一応フィクションなんだけど「群馬の小学生キノマサミチ」はどう考えても岐部氏本人のことで、まあ「ちびまるこちゃん」みたいなものか。
ゲームセンターCXは地上波分しか見てないんだけど、その地上波で流れた「スーパーマリオランド」の回で台本が間に合わなくて有野課長に怒られていた(メールが使えるのにFAXが壊れて送れないと言い訳をしてさらに怒られた)あの岐部先生なので印象に残っている。
もちろん面識なんて一切無いんだけど勝手に、一方的に「レトロゲーム開発仲間」認定をして、購入。

つまるところ完全に著者の名前だけで買ったんだけど結構面白かった。自分は兵庫だし世代が1コか2コ下でだいぶ舞台設定が違うけど、毎日しょうもないことで真剣に悩む小学生時代のあの感じだけは誰でも共通ということで。

作中ではファミコンを持っているというだけで冴えない子が突然カーストの上位にポップアップしたりするが、自分の頃はもうゲーム機がコモディティ化してたのでスーファミを持ってるだけで学校のヒーローってことはなかった気がするな。そもそも学校でそんなにゲームの話してたっけ……ゲームじゃなけりゃ何の話をしてたのかももう思い出せないが。

Kindle版が1101円(紙版は1296円)というのがちょっと高い気がしたけど、Kindle版しか買ってないのでもしかしたら結構分厚くて立派な本なのかもしれない。ヒモとか付いてたりして。

20本の線で水槽を作る

正月ですが、スーファミの開発環境が入っているNUCを立ち上げる気にならないのでMacBookだけで何か一ネタ作ることに。

minimum water tank

mintank

Game Programming Gems 4 に載っていた水面のシミュレーションアルゴリズム(iWave)で何か作ろうかと思って年末に図書館でメモを取っていたのでこれをお題とした。……昔読んだやつはもっと簡単なアルゴリズムだった気がするんだけど別の本かな。まあいいか。
ちなみに英語版はWeb上で見られる。
http://jerrytessendorf.blogspot.jp/2011/10/interactive-water-surfaces-jerry.html

いろいろ試した結果、グリッドの行数を20まで減らして、水平方向の折れ線だけでレンダリングして、水槽を横から見た感じにしてみた。20本の折れ線だけで水面を表現できるというのはなかなか良い気がする。
水面より下をフィル(塗る)というのも試してみたけど、余計なことはせず想像力に任せた方が却ってリアルに見えると思ったので結局フィルは無しにした。

近況

毎年、ベーマガのライターや読者だった人が都内某所で適当に飯食ったりゲームしたりする会というのがあって

f:id:gyuque:20161223021531j:plain

スーファミゲーをお披露目。と言っても、効果音だけでBGMは無し。グラフィックは前も書いた通り全取っ替えの予定ですが、知らなければ完成しているようには見えます。

新しいグラフィックの制作は新年ぐらいの見込みなので、その間にMMLコンパイラのパーサを書き直す予定。というのも、もうC++で普通に正規表現を使える時代になっていたのを知らなくて「極めて野蛮なコード」を書いてしまったので、std::regexに直していこうかと、思うんですよ。


その他、松原社長(d:id:nicotakuya)に見せていただいたもの

f:id:gyuque:20161223001504j:plain

学研のLSIゲーム「パックモンスター
見ての通りパックマンのパクリなんですが、本物と似てるようで違う気がする間抜けな音楽が流れます。青色LEDなんて製品レベルでは無い時代なので、これは蛍光表示管。明るくて見やすいのはいいけどガンガン電池を食います。

f:id:gyuque:20161223001551j:plain

キラキラスターナイトDX
DXじゃない方をCDで持ってるので、ゲーム内容よりカセットや説明書を観賞。右に写っているファミコンのコントローラーは勿論、ミニじゃなくてオリジナルの方。なんだけど、これは確か起動しないやつで、直ちに奥から出てきた2台目で動かした気がします。

スーファミゲーム進捗

効果音関連の処理(S-CPU側からの指令+SPC側のドライバ実装)ができたので、ゲーム本体に入れていこうかと。1UPは冗談なので勿論使わないけど……
とりあえず、二宮さんからいただいている効果音のうち、豊井さんに依頼するグラフィックの刷新(多分年末ぐらいから)の影響を受けなさそうな物を先に入れるかな。

BGM用とは別仕様の簡易なシーケンサを回す感じの実装になっているんだけど、どうなのかなあ。フル装備のシーケンサを何本も走らせるのは不安だったのでこうしてしまった。ああ、計測せずに最適化しちゃったよ。まあいいか。

1円の本を買ったのでレビューします

普段スーパーファミコンのプログラミングをする時に見ている資料の一つに、下の日本語のサイトがあります。

Console/Emulator Programming Resource in Japan

基本的な仕様は海外のサイトを探したほうが揃うんですが、そういう所で抜け落ちる「隙間の」情報がうまいこと載ってるのでよく見てるんですね。
普段はGoogleの検索から直接資料に飛んでしまう(最近はもうローカルに落としてしまった)ので上のページをよく見ていなかったんですが、改めて見ると

裏ゲーム読本 オークラ出版 ¥1714
※添付CD-ROMの文書を許可をもらって公開しています。

え、何?紙の書籍なの?というか出版年が1998年ってまだスーファミがギリギリ現役だし訴えられるリスクがあるのでは? ようやるわ。
しかも

…………。興味が湧いてきたので、Amazonで買ってみました。本体1円+送料257円。代金の実に99.6%が送料であり、無を運ぶヤマト運輸。ご苦労様です。
ちなみに「SM調教師瞳」って何?という方は下のサイトを見て下さい。頭を抱えながら読みましょう。

2日後。はい、届きました。

f:id:gyuque:20161209200111j:plain:w300

CD欠品の注記が無かった業者から買ったのに、CDが付いてないな……まあスーファミの資料は上のサイトにあるからいいか。MSXのゲームとかが入っているらしいので、できればそれも欲しかったんですけど。

内容は「薄い本の厚いやつ」というか、コミケの評論本ノリで各ライターが好き勝手に書く、という雰囲気です。エミュレーター、マジコン、改造……と、この手の本なら定番の内容でしょうか。海外で海賊版を漁る話なんかも出てきますが、韓国が「電脳のイメージが無い国」という扱いなのは時代ですね。ちなみにマニアから見て韓国は言うほど海賊版天国というわけではなく「オススメ」はタイだそうです。98年の話ですが。
さて、プログラミング関係。ゲームボーイは割と丁寧に解説されているのですが、スーパーファミコンに関してはおざなりというか、CDに収録されているサンプルを見て頑張れ、とでも言わんばかりで、うーん、本気で信じて買った人はどう思ったんだろうか。

(30頁より)
この本さえあれば、スーパーファミコンのソフトを作ることも可能になっていますが、

いやいやいや……
基礎知識がある人間であっても、この本だけ見てソフトを作るのは厳しいと感じましたが、インターネットが普及した今となってはもうどうでもいいことではあります。というか16進数の説明とかこの本でしなくてもいいでしょ。
開発環境が古臭いのでN64の仕事はもうしたくないという愚痴とか、橋本氏が万世橋署に引っ張られた(逮捕ではない)話とか、そういう読み物は面白いので、マケプレで他の本を買うついでぐらいなら買ってもいいんじゃないでしょうか。ちなみに、カーリルで探したところ図書館には全然無いようですね。アングラ系を扱った本は絶対図書館に入らないというわけでもないんですが。

↓欲しいという方はマケプレから適当に選んでください。1円のやつは私が買ったので、これを書いている時点で72円が最安になっています。
https://www.amazon.co.jp/dp/4872782852

試していなかったテクニックのテスト

ゲーム本体の実装が落ち着いたので、今まで手を付けていなかったラスタスクロールとスプライトの動的転送について調べていた。

ラスタスクロール

↓ラスタスクロールというのはお馴染みのこれですね。ゲームに使うかどうかはともかく、定番のテクニックなので一応押さえとこうと
f:id:gyuque:20161121014533g:plain

初代ファミコンのソフトはこれを裏技的に、強引に実装していたそうだけど、スーパーファミコンは最初からこのためのHDMAという機能を搭載しているので、実機でうまく動かない、といった理不尽な苦労はない。

参考:

1番目のページは頻繁に見ているのにHDMAの説明がしっかり入っていることに気付かなかった。灯台下暗しというか……

スプライトの動的転送

これはアニメーションのパターンを増やすための技術。

例えば、主人公の歩行アニメーションが4コマで構成されているとしたら、4コマ全てをVRAMに転送しておいて切り替えながら表示する、というのが最も単純な実装なのだけれど、VRAMは64KBしかないのでこれだとあまりパターン数を豊富にできない。
そこで、VRAM上には主人公キャラ用のエリアを1コマ分だけ確保しておいて、随時そこをROMから転送して書き換えることで、少量のVRAMで大量のパターンを使えるようになる。今風の言葉で言うと、ストレージからストリーミングするという感じか。

↓ちなみに他機種(メガドライブ)だけど、これの実装を指示している仕様書というのが見られる。
Ancient-blog 3Dベア・ナックルII配信記念特別企画【パート1】

市販のゲームなら間違いなく使われているテクニックだけど、今までは「まあ、そこまでしなくていいかな」と思って実装していなかった。ただ、豊井さん(ドッター)のスケジュールが12月まで空いていないということなので「じゃあ、その間にやりますか」という話になった。

で、増えたパターンで何をしたいかというと、所謂spawn(登場)の演出に充てたいなと。例えば「星のカービィ」だと、開始時にカービィが星に乗って飛んでくるでしょう。

星のカービィ 夢の泉の物語

あと、ロックマンだと空からスーッと降りてくるやつ。

f:id:gyuque:20161121202500j:plain

こういうのが欲しいよね、ボーッと突っ立った状態からスタートするのダサいでしょ、と。
とりあえず転送用のルーチンは作ったので、従来のものと入れ替える作業を今から。