TwitterAPI有料化は可能な限り対応予定です。続報あり次第公式アカウントにて報告いたします。
2020年12月31日

ファミコンゲームについて

ファミコンゲームの開発をしているので、たまに好きなゲームを吸い出しては中身を見たりしています。気づいた点などをTweetしてます。 各ツイートのツリーにいろいろ書いています。
85
Karu_gamo★☆☆☆☆ @Karu_gamo

メガドラ版アフターバーナーⅡは、そのプレイフィーリングが限りなくアーケードに近いことが当時のファンを魅了した良移植として知られています。回転機能のないメガドライブで、どのように地形を回転させていたのでしょうか? ここでは、地面部分だけを見てみたいと思います。 pic.twitter.com/y1S5DoDdsg

2023-01-02 17:42:41
拡大
Karu_gamo★☆☆☆☆ @Karu_gamo

メガドラは画面を構成するネームテーブルに256x256dotを1面として1~4面持つことができます(2重スクロールのためにこれが2枚)。本ゲームではプレーンBに水平に4面持ち、内容は以下のようなイメージとなっています。ゲーム中は変わることなく、スクロール値だけで画面の傾きを表現しています。 pic.twitter.com/K5ONuXt9CX

2023-01-02 17:42:42
拡大
Karu_gamo★☆☆☆☆ @Karu_gamo

画像は簡略のために、縦に7分割で表現しました(実際のゲームはこれを縦224ピクセルの各ラインごとに行っています)。いわゆるラスタースクロールというヤツですね。赤い範囲がスクロールとして指定している範囲、緑の矢印はその表示してる場所を表しています。傾きに合わせて表示範囲をズラしてます pic.twitter.com/RpwpBiDwA5

2023-01-02 17:42:43
拡大
拡大
Karu_gamo★☆☆☆☆ @Karu_gamo

ネームテーブルの上下左右の隅はループしているため、逆方向の傾きも難なく表現できます。種を明かすと簡単そうに見えますが、これを実現するためには発想力と試行錯誤が必要なはずです。素晴らしい解決方法ですね。 pic.twitter.com/wzsDBJMnEL

2023-01-02 17:42:43
拡大
拡大
Karu_gamo★☆☆☆☆ @Karu_gamo

左の画像、改めて見たら左右逆でしたね…。正しくはこうなるはずです。 twitter.com/Karu_gamo/stat… pic.twitter.com/2kmJ258PTp

2023-01-03 10:27:23
拡大

ドラゴンクエスト1(その2)

Karu_gamo @Karu_gamo

ドラクエ1の容量は64KByteです。半分はプログラム、残りはグラフィック用のロムです。ですが、その半分以上は文字列、BGM、モンスターパラメータなどが入っています。グラフィック用のロムへのアクセスはVBlankなどのPPUがVRAMへアクセスしてない時に限られるため、非常に取り回しが悪いです。 pic.twitter.com/xH1OIFazfR

2022-09-03 17:46:36
拡大
Karu_gamo @Karu_gamo

そのため、更新中に頻繁にアクセスしたいデータは不向きです。どこかのメモリにおいておけるほどのサイズならまだしも(モンスターパラメータなど)、曲データは大きいので厳しいはずです。恐らくEDとOPはメインゲームと関わらないので、メモリにどーんと退避させちゃってるんだと思います。

2022-09-03 17:46:36
Karu_gamo @Karu_gamo

細かくは見ていないですが、タイトルと(名前や復活の呪文)文字入力中はメモリ上にプログラムが展開されていて、毎フレーム実行されていました。恐らくこれらのシーンはプログラムに入らなかったため、コードをグラフィックのロムに入れておき、メモリに展開して実行しているのかもしれません。

2022-09-03 17:46:37
Karu_gamo @Karu_gamo

ドラクエ2ではロムの仕様が、CHR-RAMに変わりました。そのため、上記のような苦労からは解放されています。それもドラクエ1での苦労から得たフィードバックのおかげなのでしょう。

2022-09-03 17:46:37
Karu_gamo @Karu_gamo

ドラクエ1はグラフィックデータの中に文字列データが入っているようです。文字は1文字1byteで、通常の文字は$00~$6Cまででそれ以降の文字はキーワードに置換されるようです。$B6は「おかねが たりませんが…」でした。これは面白そうなので、今度調べてみたい…。 pic.twitter.com/asRLVAHzmt

2022-08-31 00:24:43
拡大
拡大
Karu_gamo @Karu_gamo

$6D以降で使用されるドラクエ1の文字列を調べてみました。「ございます。」とか「うわさでは」などの文字列が登録されているのが興味深いですね。これらは実際に頻度が高いから登録されたのか? それとも勘なのか!? 「うわさでは」ってそんなに頻度高かったかな?…という気もします…。 pic.twitter.com/KhPKy95aw9

2022-09-03 16:52:20
拡大
Karu_gamo @Karu_gamo

謎の数字が書かれている箇所は、恐らく使う場面が正しければ何らかの文字列が得られるんだと思います。例えば戦闘中ならモンスターの名前、といった具合に。

2022-09-03 16:53:03
Karu_gamo @Karu_gamo

後半の方には「ぎ」や「ぱ」といった濁点のついた文字も見られます。ドラクエは基本的には一文字が8x8ですが、濁点などは8x16の範囲で描画する必要があるため、濁点付きの文字が別枠となっているようです。

2022-09-03 16:56:28
Karu_gamo @Karu_gamo

いろいろパラメータ弄ってたら、竜王が逃げ出してしまった…。 pic.twitter.com/t8qGL5NVl4

2022-09-03 12:50:15
拡大
拡大
拡大
Karu_gamo @Karu_gamo

モンスターのパラメータは6byte+名前8byteで構成されています。逃げる判定は攻撃力で決まるようで、最大LVのキャラに対して攻撃力が65以上のときは逃げませんでした。耐性はマホトーン・ラリホー・ギラ・ベギラマがあります(妖精の笛は別?)。2byteも使っているので、他にも効果があるのかも。 pic.twitter.com/RgCVbyVwDS

2022-09-03 15:04:08
拡大
Karu_gamo @Karu_gamo

スキルは2系統あり1byte中の上位4bitと下位4bitで分けて設定します。種類を2bit、頻度を2bitで指定します。種類はそれぞれ4種固定なので【ラリホーと炎】ならOKですが【ラリホーとホイミ】のような同種の組み合わせはNG。指定しなければ攻撃のみとなります。 pic.twitter.com/FGY5ybyB35

2022-09-03 15:04:25
拡大
Karu_gamo @Karu_gamo

試しにパラメータを変えて竜王を強くしてみました。これは小学生が泣きますね…。 pic.twitter.com/BsbWHQD840

2022-09-03 15:13:22
Karu_gamo @Karu_gamo

ドラクエのマップデータは上位4bitが種類、下位4bitは横に連続する数という構造になっています。例えば画像では街が3つならんでいるので$82となります(8=街、数は2なら3となります(0で1つなので+1する)。 pic.twitter.com/WdTyNBPSz4

2022-09-03 00:21:55
拡大
拡大
Karu_gamo @Karu_gamo

横1ライン分のデータサイズはバラバラになるので、各ラインにアクセスするためのアドレスがテーブルになっています。プレイヤーがマップの左側にいるときは楽ですが、マップ右の方にいるときは、必要なデータを得るためには、左から順番に計算していく必要があります。 pic.twitter.com/7fdjXWuSo7

2022-09-03 00:21:56
拡大
Karu_gamo @Karu_gamo

ちなみに増やした街に入ろうとしても、専用のメッセージがでて入れませんでした。 pic.twitter.com/AaWC2TlEbL

2022-09-03 00:21:57
拡大
Karu_gamo @Karu_gamo

配置できる地形を並べてみました。0が草原で、順番に並べています。13種類あり、14~16番目は真っ黒で進入できませんでした。 pic.twitter.com/3Sf3040kf9

2022-09-03 00:21:58
拡大
1 ・・ 7 次へ