Hello, my name is pornanime.

初夏のスー活

こんな状況。

以前とあまり変わり映えしないように見えるけど、前のは床の当たり判定しか見てない(頭を天井にぶつけてもすり抜ける)ハリボテだった。ので、中身はかなり進化している。
やっぱプラットフォーマー(アクションゲーム)はロマンだよ。なんでみんなRPGを作りたがるのか……



さて、プログラムが複雑になってくると、デバッグの方法を考えなければいけない。地球上に70億も人間がいると相当におかしい人もいて、世の中にはスーパーファミコン用プログラムのデバッガというものが存在する。

いろいろ機能があるけど主に使っているのはメモリビューアで、デバッグ情報を空いているメモリ領域に書き込んでそれをビューアで切り出すという方法でログを取ることができる。(一応書いておくと、コンソールなんてものは無い)
f:id:gyuque:20150604021843p:plain
画像では初期値で埋められているけど、ロギングのルーチンを有効にすると、赤枠で囲った部分にログが書き込まれる。下のような感じで。

88 06 C2 0E 88 06 C2 0E 78 06 AC 0E 78 06 AC 0E
68 06 97 0E 70 06 97 0E 6E 06 83 0E 70 06 83 0E
6E 06 70 0E 70 06 70 0E 6E 06 5E 0E 70 06 5E 0E
6E 06 4D 0E 70 06 4D 0E 6E 06 3D 0E 70 06 3D 0E
6E 06 2E 0E 70 06 2E 0E 6E 06 20 0E 70 06 20 0E
6E 06 13 0E 70 06 13 0E 6E 06 07 0E 6E 06 07 0E
6A 06 B0 0E 6A 06 B0 0E 64 06 B1 0E 64 06 B1 0E
5C 06 B3 0E 5C 06 B3 0E 52 06 B6 0E 52 06 B6 0E
46 06 BA 0E 46 06 BA 0E 38 06 BF 0E 38 06 BF 0E
28 06 C5 0E 28 06 C5 0E 18 06 CC 0E 18 06 CC 0E
08 06 D4 0E 08 06 D4 0E F8 05 DD 0E F8 05 DD 0E
E8 05 E7 0E E8 05 E7 0E D8 05 E8 0E D8 05 E8 0E
C8 05 E9 0E C8 05 E9 0E B8 05 EB 0E B8 05 EB 0E
A8 05 EE 0E A8 05 EE 0E 98 05 E8 0E 98 05 E8 0E
88 05 E9 0E 88 05 E9 0E 78 05 EB 0E 78 05 EB 0E
68 05 EE 0E 68 05 EE 0E 58 05 E8 0E 58 05 E8 0E

これだけ見ても意味が分からないが、これは当たり判定の動きがおかしかった際に取ったキャラクターの座標のログで、プロットすると下図のようになる。
f:id:gyuque:20150604022409p:plain
左の薄茶色は地形のブロックで、暗緑はキャラクター。注目すべきは11番で、キャラクターが地形にめり込んでいるにも関わらず位置が補正されていない(補正前=黒いドットと補正後=緑のドットが同じ位置にある)ので、ここを詳しく調べていく……という感じ。

スーファミ現役時代に実際の現場でどういうデバッグをしていたのかは知らないけど、当時だと方眼紙に手でプロットという力技もありそうかな。90年代ぐらいだと、まだ何もかも画面の上で済ませるという感覚ではなかったと思う。