目次
描画処理概要
本ゲームは、SFC/SNESハード上で動くものであるため、描画処理も同ハードでの管理に則ったものとなります。
ここでは主に、通常のアクションシーンでの描画処理についてまとめます。
ここでは主に、通常のアクションシーンでの描画処理についてまとめます。
まず、SFCは最大4枚のBG(背景画像)と、128個のスプライト(小さな描画オブジェクト)を用いた描画を行います。
ただし、BGが最大4枚といっても、通常のアクションシーンではSFCのモード7による回転表示機能を用いる上での制限があり、BG1(メッセージ・プロンプト表示),BG2(船内背景、回転表示) の2枚しか使用しません。
ただし、傾きが固定されているプロローグ、エピローグ、ボイラー室内では回転機能を用いないためこの制限はなく、特にボイラー室ではBG1~BG4をフルに活用した、凝った表現を行っています。
ただし、BGが最大4枚といっても、通常のアクションシーンではSFCのモード7による回転表示機能を用いる上での制限があり、BG1(メッセージ・プロンプト表示),BG2(船内背景、回転表示) の2枚しか使用しません。
ただし、傾きが固定されているプロローグ、エピローグ、ボイラー室内では回転機能を用いないためこの制限はなく、特にボイラー室ではBG1~BG4をフルに活用した、凝った表現を行っています。
スプライトに関しては、ハード的に色々な制御が可能なのですが、本ゲームでは 8x8px もしくは 16x16px サイズ (混在可) のオブジェクトとして用います。
スプライトに関しては、8x8pxサイズのパーツが16x16の2次元的な配置で管理されているタイル2面、都合512パーツ分を予めロードしておき、何番のタイルをどの位置にどんな配色 (パレットと呼ばれる8種の配色管理データ) で、上下・左右を反転させるかどうかを指定することで、主にキャラクターの表示に用います。
サイズとして16x16を指定すると、2x2に連続する4枚のタイルをまとめて1個のパーツとして扱うことができます。
スプライトはモード7による回転表示の管理外なので、船の傾きに応じて各キャラクターの傾きが異なるパーツを用意しておき、都度適切に選択する形式をとっています。そのため、ほとんどのタイルはキャラクター表示用のものです。
スプライトに関しては、8x8pxサイズのパーツが16x16の2次元的な配置で管理されているタイル2面、都合512パーツ分を予めロードしておき、何番のタイルをどの位置にどんな配色 (パレットと呼ばれる8種の配色管理データ) で、上下・左右を反転させるかどうかを指定することで、主にキャラクターの表示に用います。
サイズとして16x16を指定すると、2x2に連続する4枚のタイルをまとめて1個のパーツとして扱うことができます。
スプライトはモード7による回転表示の管理外なので、船の傾きに応じて各キャラクターの傾きが異なるパーツを用意しておき、都度適切に選択する形式をとっています。そのため、ほとんどのタイルはキャラクター表示用のものです。
スプライト表示
概要
スプライトは、主にキャラクターの表示用に用いられます。
128個あるスプライトの先頭16個を除いた112個がこの用途に充てられており、1キャラクターあたり最大16個、最大7キャラクターの同時表示が可能です。
カラーパレットとしては、0~7 の8種類があり、基本的にはゲームを通じて固定色で使用されます。ただ例外的に、地図表示ににおけるアイコンのみ、動的に色を変化させる使い方をします。
128個あるスプライトの先頭16個を除いた112個がこの用途に充てられており、1キャラクターあたり最大16個、最大7キャラクターの同時表示が可能です。
カラーパレットとしては、0~7 の8種類があり、基本的にはゲームを通じて固定色で使用されます。ただ例外的に、地図表示ににおけるアイコンのみ、動的に色を変化させる使い方をします。
その他、演出上のちょっとしたオブジェクトの表示には先頭の16個が充てられます。キャラクター以外の使用目的は次の通りです。
※アクション中以外だと、リセット直後のHUMANロゴや、OPでのスタッフ紹介やキャラセレ直後の文章中の文字の表示にもスプライトが使われます。
※アクション中以外だと、リセット直後のHUMANロゴや、OPでのスタッフ紹介やキャラセレ直後の文章中の文字の表示にもスプライトが使われます。
- 同行者誘導用のマーカー(矢印)
- 炎および各種障害物
- 各種表示上の演出 ( 水流、水滴、吹き抜けでの爆発演出、船の揺れに伴うほこり状の演出、ボイラー室での細かい水蒸気 )
- プロローグにおいて、ホールで踊る人々の描写
※先頭16個では足りないため、例外的にキャラクター表示用のスプライトを流用 - 地図表示における現在位置を示すアイコン
踊る人々に関しては、キャラクター表示のように見えますが、別の管理になっているため、ここで取り上げています。
なお、画面の境界に現れる矢印や、Yボタンで開けられた表示に変わる扉に関してはBGでの管理となっており、スプライト管理外です。
なお、画面の境界に現れる矢印や、Yボタンで開けられた表示に変わる扉に関してはBGでの管理となっており、スプライト管理外です。
最終的に、$0c00~$0dff の512バイトと、$0e00~$0e1fの32バイトをそれぞれOAM(スプライト管理オブジェクトのこと)の下位テーブル、上位テーブルに転送することでスプライトを操作します。これがそれぞれ4バイト×128スプライト、2ビット×128スプライト分のデータとなります。
ただ、上位テーブル用のデータはビットを直接操作するのが面倒なため、各処理では $0e20~$0e9f の128バイトのそれぞれ下位2ビットずつを代わりに操作し、スプライトの状態反映時にビットを圧縮して $0e00~$0e1f に転写して用います。
1スプライトあたりのデータの内容は次の表の通りです。
ただ、上位テーブル用のデータはビットを直接操作するのが面倒なため、各処理では $0e20~$0e9f の128バイトのそれぞれ下位2ビットずつを代わりに操作し、スプライトの状態反映時にビットを圧縮して $0e00~$0e1f に転写して用います。
1スプライトあたりのデータの内容は次の表の通りです。
| 種別 | 位置 | 内容 | 詳細 | |
|---|---|---|---|---|
| 下位テーブル $0c00~$0dff |
0バイト目 | 画面上x座標 | 下位8ビット分、最上位ビットは上位テーブルにある | |
| 1バイト目 | 画面上y座標 | 使用しないスプライトは240を設定して画面外扱いにする | ||
| 2バイト目 | タイル番号 | 0面、1面どちらのタイルを使うかは、次のバイトで調整 | ||
| 3バイト目 | 0x80のビット | 上下反転表示フラグ | ||
| 0x40のビット | 左右反転表示フラグ | |||
| 0x30の2ビット | 優先順位 | BGとの間の表示優先順位制御用 | ||
| 0xe0の3ビット | パレット番号 | |||
| 0x01の1ビット | 参照するタイル面 | |||
| 上位テーブル $0e20~$0e9f |
0バイト目 | 0x02のビット | 16x16pxサイズフラグ | |
| 0x01のビット | 画面上x座標 | 最上位ビット、-256に相当 | ||
キャラクター表示
ポーズの決定
キャラクターの表示は、各キャラのアクション状況(管理データAオフセット0x0e)を通じて適切な姿勢IDを設定することで制御します。
この中には、イベントでのコマンド64での個別のポーズ設定や、コマンド5,6による会話用のポーズも含まれます。
それ以外にも、イベントでのコマンド129での個別処理で固有の姿勢IDを設定することもあります。
この中には、イベントでのコマンド64での個別のポーズ設定や、コマンド5,6による会話用のポーズも含まれます。
それ以外にも、イベントでのコマンド129での個別処理で固有の姿勢IDを設定することもあります。
ポーズは、キャラに対応したグラ種と姿勢IDによって一部例外(会話用のポーズ)を除いて一意に定まり、そこに姿勢情報による上下反転や左右反転が適用されます。ただし、キャラによって扱いに違いがあります。
- キャラID0~3 ( グラ種 0~3 )
主人公用のグラフィックであり、一部に主人公専用のポーズがあります - キャラID7,8,38等 ( グラ種 22~24 )
子供用のグラフィックであり、一部モーション数が削減されています - キャラID58,59 ( グラ種 25,26 )
エピローグにのみ登場する救助船スタッフのグラフィックです。姿勢IDの上位3ビットは無視されます。実際有効な姿勢IDは最大でも25です。 - キャラID63 ( 人外オブジェクト )
キャラクター表示とは別管理になります。
該当するのは、教会でのバイオリンの表示です。
上述の通り、キャラID58,59は姿勢IDのバリエーションが少ないですが、他のキャラでの姿勢IDの範囲は最も広くて0~215となっています。ただし全てのIDが有効なわけではなく、実際には使われないIDがあります。もし参照した場合は次のIDと同じポーズになるようになっており、ここでは「無効」と称します。
それ以外に、各キャラのIDの上限があり、これを超えた場合は別キャラのポーズが誤って表示されたり、表示がバグって進行不能になったりします。( メモリ書き換えを行わない限り、実プレイ中になることはありません )
それ以外に、各キャラのIDの上限があり、これを超えた場合は別キャラのポーズが誤って表示されたり、表示がバグって進行不能になったりします。( メモリ書き換えを行わない限り、実プレイ中になることはありません )
さて、姿勢IDに対応したポーズに関しては、各キャラで内容が統一されている基本モーションと、各キャラ固有の特別モーションの2種類に分かれます。
更に基本モーションの中には主人公専用のものがあります。主人公以外だと特別モーションの扱いになります。
更に基本モーションの中には主人公専用のものがあります。主人公以外だと特別モーションの扱いになります。
| 姿勢ID | 主人公 | 非主人公 | 救助スタッフ | 備考 |
|---|---|---|---|---|
| 0 | 基本モーション: 静止(水平時) | |||
| 1~8 | 基本モーション: 歩き(水平時) | 子供キャラはポーズ数半分 | ||
| 9~72 | 基本モーション: 歩き・這い | 特別モーション | ||
| 73~77 | 基本モーション: 静止 | 範囲外 | ||
| 78~93 | 基本モーション: しゃがみ関連 | しゃがみ移行、しゃがみ静止、しゃがみ歩きを含む 子供キャラではポーズが存在しない | ||
| 94~102 | 基本モーション: ジャンプ関連 | 垂直・横ジャンプの各ポーズ、 落下および着地も含む | ||
| 103~107 | 基本モーション: Yボタン補助 | 無効もしくは没ポーズ | ||
| 108 | 基本モーション: 引き上げられ状態 | Yボタン補助で引き上げられている状態 | ||
| 109,110 | 基本モーション: つかまり | |||
| 111 | 無効 | |||
| 112 | 基本モーション: 静止(下り22.5°) | |||
| 113~127 | 基本モーション: 水中 | 115,118,121,124,127は没ポーズ | ||
| 128 | 基本モーション: 起き上がり | 特別モーション | ||
| 129~146 | 基本モーション: 呼びかけ | L/Rによる呼びかけ、143~146は実際は没ポーズ | ||
| 147~154 | 特別モーション | |||
| 155~157 | 基本モーション: よじ登り | |||
| 158 | 基本モーション: つかまり | |||
| 159~167 | 基本モーション: ミス | |||
| 168~185 | 基本モーション: 会話 | 176,185は没 この範囲のみ、姿勢IDにつき2ポーズが対応する | ||
| 186~190 | 特別モーション | 特別モーション | ||
| 191,192 | 基本モーション: 起き上がり | |||
| 193~214 | 特別モーション | |||
| 215,216 | 基本モーション: 船底を叩く | エピローグでの同行者用 レドウィン、キャプリス、ユーサー非対応(範囲外) | ||
基本モーション
ここでは、主にレドウィンでの各基本モーションを紹介します。
姿勢IDは各ポーズの右上や真上に黄色で表示しますが、一部別の色で表示するものは、黄緑が主人公専用、オレンジが上下あるいは左右反転したもの、ピンク色が没ポーズを表します。
同じカテゴリでも、床の角度、あるいははしご掴まり状態によってバリエーションが存在します。
姿勢IDは各ポーズの右上や真上に黄色で表示しますが、一部別の色で表示するものは、黄緑が主人公専用、オレンジが上下あるいは左右反転したもの、ピンク色が没ポーズを表します。
同じカテゴリでも、床の角度、あるいははしご掴まり状態によってバリエーションが存在します。
- 静止(一部しゃがみ状態を含む)

- 歩き・這い
後半は下りの場合のポーズです。8つのポーズのローテーションとなりますが、子供キャラの場合のみ、4つのポーズでローテーションします。

- しゃがみ関連
立ち状態からしゃがみ移行を経てしゃがみ静止、そこからしゃがみ歩きする一連のポーズです。子供キャラには存在しません。
なお、22.5°の傾斜で下る場合は、上る場合と共通のポーズを逆送りで使います。
- ジャンプ関連
垂直ジャンプおよび横ジャンプです。横ジャンプの101以降は、単に落下する場合と共通です。
- Yボタン補助
主人公として引っ張り上げる方と、同行者として引き上げられる方を載せています。
※キャプリス・レドウィンが引き上げられる状況はありませんが、一応ポーズ自体は存在します。
※引き上げられる108番は、次のつかまりでの158番に似ていますが、別IDで管理されています。
- つかまり・よじ登り
ジャンプから出っ張りにつかまって、そこをよじ登る一連のモーションを例示しています。
このよじ登りは、段差を乗り越える時にも使われています。
- 水中
8方向の泳ぎと、真ん中は水中での静止ポーズです。それぞれ2つのポーズを交互に繰り返します。
下向きのみ、上向きポーズを上下反転で用います。
右上、右、右下向きは、それぞれ左上、左、左下向きを左右反転して用います。
- 起き上がり
転覆直後やミスからの復帰時に起き上がる際のポーズです。
ラットラーを受け止めて転倒したキャプアリスが起き上がる際も同じ一連のポーズを用います。
※以下の図ではポーズの推移を簡略化していますが、実際には同じポーズを行ったり来たりします。また、ミスからの復帰時には191番は使われません。
- 呼ぶ
L/Rボタンにより呼ぶポーズで、主人公専用です。
※手違いで数字が黄緑表示になっていません。
はしごつかまり状態で呼ぶポーズは没扱いです。
- ミス
床の上で障害物・炎への接触や体力枯渇を起こす場合と、空中でミスをする (主に落下ミス) の場合とで、ポーズが分かれています。
水中での体力枯渇は空中でのミスに準じますが、地面に接触しなくてもすぐに最後の167番に移行します。
なお、この167番は、モブキャラの死亡ポーズとしても使われます。
※一部キャラの死亡ポーズには特別モーションのポーズが充てられる場合があります
- 会話
コマンド5,6により設定される会話用のポーズです。
上半分がコマンド5用、下半分がコマンド6用で、後者の方が感情的な応答の表現になっています。
このポーズのみ例外的に1つのIDに2つのポーズが対応しており、スプライト情報の差分反映・復元は専用の処理が担当します。
差分データは 0x9e8000~ に、ポーズあたり16バイトずつ保存されており、ポーズ内のスプライト0,1,2,5番へのy座標差分、x座標差分(128以上の値vは128-vとして扱う)、OAM3,4バイト目差分(xorして用いる)から構成されます。
- 船底を叩く
同行者として、一部エピローグで船底を叩くポーズです。状況が存在しないキャプリス、レドウィン、ユーサー用のポーズは存在しません。
イスメイ、ラットラー、エイミーは条件的に発生しませんが、ポーズ自体は存在します。
なお、主人公として船底を叩くポーズは、別途特別モーションとしてキャプリス以外の3人に存在します。
特別モーション
特別モーションは、キャラによって姿勢IDとポーズ内容が揃っていないものを指します。
これらのポーズは、没ポーズを除いて、イベントのコマンド64もしくはコマンド129(個別処理)を通じて使用されます。
これらのポーズは、没ポーズを除いて、イベントのコマンド64もしくはコマンド129(個別処理)を通じて使用されます。
ここで、コマンド64は傾きに応じたポーズ調整と複数ポーズの切り替えをサポートするため、1つの場面用に複数のポーズが用意されています。
例えば、以下はバーでペインズ(左側、グラ種12)・レイトン(右側、グラ種15)が酒盛りをしているシーンでのポーズをまとめたものです。(ペインズは左右反転表示です)
それぞれ129番を基本の姿勢IDとして、ペイン図は2バリエーションの切り替え、レイトンは2バリエーションで切り替え後固定という使い方で、水平・上り22.5°・上り45°・下り22.5°・下り45°の5通りの状況用に、ID+0,+1、+2,+3、+4,+5、+6,+7、+8,+9を使い分けています。
他にも、大抵のモブキャラの死亡ポーズが基本モーションの167で傾きに応じた変化もないところ、一部キャラでは特別モーションで傾きに応じたポーズが用意されています。例えば、ホールでのジャック母、ホール2Fでのステラ・ハリー母(両者でポーズは共通、グラ種17)が該当します。モブとしてのポーズ(上層の船員用船室前)との比較を以下に挙げます。

例えば、以下はバーでペインズ(左側、グラ種12)・レイトン(右側、グラ種15)が酒盛りをしているシーンでのポーズをまとめたものです。(ペインズは左右反転表示です)
それぞれ129番を基本の姿勢IDとして、ペイン図は2バリエーションの切り替え、レイトンは2バリエーションで切り替え後固定という使い方で、水平・上り22.5°・上り45°・下り22.5°・下り45°の5通りの状況用に、ID+0,+1、+2,+3、+4,+5、+6,+7、+8,+9を使い分けています。

他にも、大抵のモブキャラの死亡ポーズが基本モーションの167で傾きに応じた変化もないところ、一部キャラでは特別モーションで傾きに応じたポーズが用意されています。例えば、ホールでのジャック母、ホール2Fでのステラ・ハリー母(両者でポーズは共通、グラ種17)が該当します。モブとしてのポーズ(上層の船員用船室前)との比較を以下に挙げます。

一般に、コマンド64での切り替え用のバリエーション数は1~3で、これはコマンドのパラメータによって調整します。
船の傾きへの対応は最大5種類ですが、特に下り45°分は用意されていないこともあります。その場合はキャラの配置の調整でその傾き用のポーズが使われないようにされます。なお、プロローグ・エピローグ用、一部水平限定のイベント用では傾きが固定されているため、傾きに応じた複数ポーズの用意はありません。
船の傾きへの対応は最大5種類ですが、特に下り45°分は用意されていないこともあります。その場合はキャラの配置の調整でその傾き用のポーズが使われないようにされます。なお、プロローグ・エピローグ用、一部水平限定のイベント用では傾きが固定されているため、傾きに応じた複数ポーズの用意はありません。
次にコマンド129で使用されるポーズですが、多くは基本モーションや、コマンド64で使用される特別モーションと重複しています。(各キャラがエピローグで船底を叩く基本モーションのポーズもコマンド129を通じて使用されます)
また、大抵は水平時用のポーズ限定となっています。例外はミッシェルがクラブでバイオリンを演奏する際のポーズで、これはコマンド129の処理の中で個別に傾きに対する調整が行われます。( ポーズ自体はキャプリスでの教会のイベントで使われるものと共通です )
以下にコマンド129でのみ使用されるポーズを挙げます。
また、大抵は水平時用のポーズ限定となっています。例外はミッシェルがクラブでバイオリンを演奏する際のポーズで、これはコマンド129の処理の中で個別に傾きに対する調整が行われます。( ポーズ自体はキャプリスでの教会のイベントで使われるものと共通です )
以下にコマンド129でのみ使用されるポーズを挙げます。
- ラットラー救出イベント
落ちて尻もちをつくラットラー(グラ種7)と、それを受け止めようとするキャプリス(グラ種1))のポーズが該当します。なお、落下中の101は基本モーション、つぶされて倒れているポーズ191は主人公専用の基本モーションです。
- キャプリスのベストED
落ちそうになるエイミー(グラ種19)を掴んでキャプリス(グラ種1)が引き上げるところが該当します。なお、101の落下ポーズは基本モーションです。
- ジェフリーの重要人物無しED
ジェフリーが引きずられていくシーンの救助スタッフ(右側キャプテン、グラ種25、左側スタッフ、グラ種26、左右反転)の8ポーズがコマンド129専用です。
ジェフリーの方はコマンド64でも使われるポーズです。
没ポーズ
ゲーム中で参照されない没ポーズを掲載します。
船の傾斜によるバリエーションと思われるものは同じ個所で切り替えて表示するようにしています。
なお、ID 103,104 ( 主人公でのYボタン補助 ) にある一部の没ポーズでは、キャラのはるか上方に表示されるパーツが存在しますが、非固定のタイルを使っているため実際の内容が分かりません。一部ポーズにその一部が映っていますが、これは暫定的に炎の表示用のタイルで代用したものです。
船の傾斜によるバリエーションと思われるものは同じ個所で切り替えて表示するようにしています。
なお、ID 103,104 ( 主人公でのYボタン補助 ) にある一部の没ポーズでは、キャラのはるか上方に表示されるパーツが存在しますが、非固定のタイルを使っているため実際の内容が分かりません。一部ポーズにその一部が映っていますが、これは暫定的に炎の表示用のタイルで代用したものです。

タイル
スプライト描画用の512タイル ( 16x16x2面 ) は、うち480がキャラクター表示用に内容が固定されており、残り32がキャラクター表示以外の用途であったり、場面限定のキャラクターパーツ用に都度入れ替えられて用いられています。
以下、キャラクター表示用のタイルに関して、番号とその内容について簡単にまとめます。
実際のパーツの例に関しては、キャラクターデータの「グラフィック詳細」をご覧ください。
なお、サイズが16x16pxのパーツの場合、先頭のタイル番号と、それに対して+1,+16,+17の番号の分、4つのタイルを連結して用いられます。
以下、キャラクター表示用のタイルに関して、番号とその内容について簡単にまとめます。
実際のパーツの例に関しては、キャラクターデータの「グラフィック詳細」をご覧ください。
なお、サイズが16x16pxのパーツの場合、先頭のタイル番号と、それに対して+1,+16,+17の番号の分、4つのタイルを連結して用いられます。
- 固定内容のタイル
| 面 | タイル番号 | 分類 | バリエーション | 備考 |
|---|---|---|---|---|
| 0 | 0~6 | 頭 | 男性#1 | |
| 7~13 | 上腕 | 男性#1 | ||
| 14~20 | 下腕 | 男性#1 | ||
| 21,22 | 手 | 男性 | ||
| 23~34 | 上腿 | 男性#1 | ||
| 35~46 | 下腿 | 男性#1 | ||
| 47~54 | 足 | 男性#1 | ||
| 55~58 | 胴 | 男性#1 | 上部・下部に分かれた2組分 | |
| 59 | 髪 | - | ||
| 60~63 | 胴 | 男性#2 | 上部・下部に分かれた2組分 | |
| 64~69 | 男性#1 | 16x16pxサイズ3パーツの上半分 | ||
| 70 | 上部パーツ | |||
| 71 | 男性#3 | 上部パーツ | ||
| 72~79 | 男性#2 | 16x16pxサイズ4パーツの上半分 | ||
| 80~85 | 男性#1 | 16x16pxサイズ3パーツの下半分 | ||
| 86 | 男性#1 | 下部パーツ | ||
| 87 | 男性#3 | 下部パーツ | ||
| 88~95 | 男性#2 | 16x16pxサイズ4パーツの下半分 | ||
| 96~102 | 頭 | 男性#2 | ||
| 103~109 | 上腕 | 男性#2 | ||
| 110~116 | 下腕 | 男性#2 | ||
| 117,118 | 頭 | 男性#7 | 男性#7は分散して配置 | |
| 119~125 | 男性#3 | |||
| 126,127 | 特殊 | 女性#1同等パーツとして一部で使用 | ||
| 128~134 | 下腕 | 男児 | ||
| 135~141 | 頭 | 女性#1 | ||
| 142,143 | 特殊 | 女性#1同等パーツとして一部で使用 | ||
| 144~150 | 女性#3 | |||
| 151~154 | 胴 | 男性#3 | 上部・下部に分かれた2組分 | |
| 155 | 髪 | - | ||
| 156~159 | 胴 | 男児 | 上部・下部に分かれた2組分 | |
| 160~165 | 男性#3 | 16x16pxサイズ3パーツの上半分 | ||
| 166,167 | 女性#3 | 16x16pxサイズパーツの上半分 | ||
| 168~171 | 男児 | 16x16pxサイズ2パーツの上半分 | ||
| 172,173 | 上部2パーツ | |||
| 174,175 | 女性#3 | 16x16pxサイズパーツの上半分 | ||
| 176~181 | 男性#3 | 16x16pxサイズ3パーツの下半分 | ||
| 182,183 | 女性#3 | 16x16pxサイズパーツの下半分 | ||
| 184~187 | 男児 | 16x16pxサイズ2パーツの下半分 | ||
| 188,189 | 下部2パーツ | |||
| 190,191 | 女性#3 | 16x16pxサイズパーツの下半分 | ||
| 192~198 | 頭 | 男性#4 | ||
| 199~205 | 上腕 | 男性#3 | ||
| 206~212 | 下腕 | 男性#3 | ||
| 213,214 | 頭 | 男性#7 | 男性#7は分散して配置 | |
| 215~226 | 上腿 | 男性#3 | ||
| 227~238 | 下腿 | 男性#3 | ||
| 239~246 | 足 | 男性#2 | ||
| 251 | 髪 | - | ||
| 247~250 | 胴 | 男性#4 | 上部・下部に分かれた2組分 | |
| 252~255 | 女性#1 | 上部・下部に分かれた2組分 | ||
| 1 | 0~7 | 胴 | 男性#4 | 16x16pxサイズ4パーツの上半分 |
| 8,9 | 女児 | 上部2パーツ | ||
| 10~13 | 女性#1 | 上部4パーツ | ||
| 14 | 女児 | 上部パーツ | ||
| 15 | - | - | 未使用 | |
| 16~23 | 胴 | 男性#4 | 16x16pxサイズ4パーツの下半分 | |
| 24,25 | 女児 | 下部2パーツ | ||
| 26~29 | 女性#1 | 下部4パーツ | ||
| 30 | 女児 | 上部パーツ | ||
| 31 | - | - | 未使用 | |
| 32~38 | 頭 | 男性#5 | ||
| 39~45 | 上腕 | 女性#1 | ||
| 46~52 | 下腕 | 男性#4 | ||
| 53,54 | 頭 | 男性#7 | 男性#7は分散して配置 | |
| 55~66 | 上腿 | スカート | ||
| 67~75 | 下腿 | |||
| 76,77 | 上腿 | |||
| 78 | 下腿 | |||
| 79~86 | 足 | 女性 | 女児用も兼ねる | |
| 87~90 | 胴 | 男性#5 | 上部・下部に分かれた2組分 | |
| 91 | 髪 | - | ||
| 92~95 | 胴 | 女性#2 | 上部・下部に分かれた2組分 | |
| 96~103 | 男性#5 | 16x16pxサイズ4パーツの上半分 | ||
| 104~107 | 女性#2 | 16x16pxサイズ2パーツの上半分 | ||
| 108 | 上部パーツ | |||
| 109,110 | - | - | 未使用 | |
| 111 | 頭 | 特殊 | 女性#2の代替として一部で使用 | |
| 112~119 | 胴 | 男性#5 | 16x16pxサイズ4パーツの下半分 | |
| 120~1023 | 女性#2 | 16x16pxサイズ2パーツの下半分 | ||
| 124 | 下部パーツ | |||
| 125 | - | - | 未使用 | |
| 126,127 | 頭 | 特殊 | 女性#2同等パーツとして一部で使用 | |
| 128~134 | 女性#2 | |||
| 135~141 | 上腕 | 男児 | ||
| 142~148 | 下腕 | 女性 | 女児用も兼ねる | |
| 149,150 | 手 | その他 | 女性、男児、女児共通 | |
| 151~162 | 上腿 | 男児 | ||
| 163~174 | 下腿 | 男児 | ||
| 175~182 | 足 | 男児 | ||
| 183~186 | 胴 | 女性#3 | 上部・下部に分かれた2組分 | |
| 187 | 頭 | 男性#7 | 男性#7は分散して配置 | |
| 188~191 | 胴 | 女児 | 上部・下部に分かれた2組分 | |
| 192~223 | - | - | 内容非固定のタイルのため割愛 | |
| 224~230 | 頭 | 男性#6 | ||
| 231~237 | 上腕 | 女性#2 | 女児用も兼ねる | |
| 238,239 | 胴 | 女性#3 | 上部パーツ | |
| 240~246 | 頭 | 男児 | ||
| 247~253 | 女児 | |||
| 254,255 | 胴 | 女性#3 | 下部パーツ |
なお、特殊なパーツを表現するために、上記パーツを転用するケースも一部に見られます。
例えば、バーでペインズが抱えているワインボトルですが、これは下腕(男児)の色違い(パレット3)と、上腕(男性#3)の転用になっています。

例えば、バーでペインズが抱えているワインボトルですが、これは下腕(男児)の色違い(パレット3)と、上腕(男性#3)の転用になっています。

続いて、内容非固定のパーツ(1面の192~223)の中で、キャラクターの一部として使用しているものを以下に挙げます。
- プロローグ用
- 船長の頭
ルークのプロローグでのフィリップ船長の頭(215番パレット0)です。
船長は、この頭以外はルークと共通のパーツを使っています。
- 各種小道具
それぞれ、図書室で本を読む人の本(192番パレット1)、新聞を読む人が広げる新聞(194番パレット4、16x16pxサイズ)、エイミーのベッドの端(196番パレット1、16x16pxサイズ)、一服する人のタバコ(208番パレット0,1)です。
- バー関連
ワインボトル(193,209番パレット4)、ワイングラス(198番パレット1)です。
ワイングラスの方は、通路で飲んでいる人や、転覆後のバーでペインズ・レイトンが手に持っているものとしても使われます。
- ホールで踊る人
エイカーズ(グラ種11)の没ポーズ129~132に使われているものです。
ポーズ自体は没ですが、タイルはホールでの描写で別途使われています。それぞれ、男性の頭(199番パレット0,1,3,5)、男の人の服上下(200番および202番、パレット0,3,4、16x16pxサイズ)、女の人の後ろ姿上下(204番および206番、パレット1,2,3,5、16x16pxサイズ)です。
なお、この中で199番については、ショップ前でフランソワといるマリー(パレット1使用)や、転覆後にクラブにいるキャスリンの一部ポーズ(パレット6使用)でも使われています。
- 船長の頭
- エピローグ用
- 船底を叩く棒
当該演出のあるエピローグ限定です。
パイプ(192,194,196番、パレット0、16x16pxサイズ)と、棒(200,202,204番、パレット6、16x16pxサイズ)とがあります。
- 銃
ルークでイスメイを救助した時の各種エピローグ限定です。
向きに応じて198,199,214番(それぞれパレット0)と分かれています。
上向きの199番は没ポーズ用で、実プレイでは現れません。
- 船底を叩く棒
- その他
- バイオリン
204,208番の2パーツ(パレット0)で、クラブでミッシェルが演奏する際のポーズに使用されます。
主人公がキャプリスの場合は、クラブでの演奏シーンがない代わりに、教会で同じポーズをとる分岐があります。
- 内容不明
非主人公の姿勢ID103,104の没ポーズで、タイル番号194,196が指定されていますが、具体的な表示内容は不明です。
- バイオリン
表示人数上限とキャラ表示順
キャラクターは同時最大7人表示対応であるため、毎bfキャラに1~7の表示順を割り振り、対応するスプライト番号の範囲 ( 表示順×8~の16個の範囲 ) で表示を調整します。
※調整した結果、座標数値的に画面に表示されない場合もありますが、それでもその分のスプライト番号は使用します。
※調整した結果、座標数値的に画面に表示されない場合もありますが、それでもその分のスプライト番号は使用します。
SFCでの表示制御上、スプライト番号が小さい方が優先になるモードを採用しているため、表示順が小さい方が優先して ( より表に ) 表示されます。
表示順に関しては、必須キャラ(必ず表示される)と同行者(上限に抵触する場合は一部非表示になる)とで分けて考えます。以下、取り上げる順に表示順を割り振ります。
表示順に関しては、必須キャラ(必ず表示される)と同行者(上限に抵触する場合は一部非表示になる)とで分けて考えます。以下、取り上げる順に表示順を割り振ります。
- 必須キャラ
- 主人公
主人公が基本的に必ず表示順1になります。
ただし、耐炎無敵状態の場合は、4bfおきに表示対象/対象外が切り替わり、これにより点滅を演出します。 - イベント登場者
管理テーブル上の順が後のキャラから順に表示順を割り振ります。
ただし、死亡状態で、かつ大きく距離が離れているキャラは対象外となります。 - ロスト状態のキャラ
ロスト状態のキャラが同室にいる場合、代表者 ( 管理テーブル上最後のキャラ ) のみ、表示順が割り振られます。
- 主人公
- 同行者
- 末尾キャラ
隊列の末尾、一般に救助時期が最も古いキャラ ( 管理テーブル上最後のキャラ ) が、同行者の中で最優先となります。 - 末尾以外のキャラ
末尾以外のキャラは、隊列の先頭、一般に救助時期が最も新しいキャラ ( 管理テーブル上、主人公の次のキャラ ) から順に表示順が割り振られます。
ただし、誘導用のマーカーに到着して待機しているキャラは、一部表示対象外になります。
- 末尾キャラ
上記の順で表示順を割り振り、7人を超えた分は表示あふれとして非表示になります。
表示順は、管理テーブルAのオフセット4の下位バイトに反映されます。非表示のキャラは表示順0として扱います。
表示順は、管理テーブルAのオフセット4の下位バイトに反映されます。非表示のキャラは表示順0として扱います。
ただ、上記の決め方だけだと、状況によってはずっと表示されないままのキャラが多く出てしまうため、それを緩和する目的で、表示あふれになったキャラが出た場合は、次のbfではあふれ人数に応じて表示順の割り当ての調整が行われます。この調整があっても非表示状態が続くキャラが出ることは完全には避けられませんが、大抵の場合は点滅表示に見えるくらいで済みます。
※以下のいずれのケースでも、この調整で一時的に非表示となったキャラは次のbfに使うあふれ人数にカウントしません。
※以下のいずれのケースでも、この調整で一時的に非表示となったキャラは次のbfに使うあふれ人数にカウントしません。
- 必須キャラ人数と前bfでのあふれ人数の合計が7以下の場合
(6-あふれ人数)の人数分は通常通り表示順を割り振り、以降は表示→非表示→非表示→…のように、交互に切り替えて7人分まで表示順を割り振ります。 - 必須キャラ人数と前bfでのあふれ人数の合計が8以上の場合
必須キャラには通常通り表示順を割り振り、同行者は最初の(必須キャラ人数+あふれ人数-6)の人数分を非表示にします。以降は表示→非表示→表示→非表示→…のように、交互に切り替えて7人分まで表示順を割り振ります。
キャラクター描画処理
キャラクターの描画は、管理データAの各要素に基づき行います。関連する項目は次の通りです。
- オフセット0,2: 画面上のx座標、y座標
描画処理の前に、別途地図上の座標の主人公との差分や、船の傾き、船の微小な揺れの周期に伴う上下の表示位置補正を加味して座標を決定しておきます。
この数値は、キャラクターの基準点に対応したもので、基本的にはキャラ中央の足元に対応します。 - オフセット4: 姿勢情報
下位バイトは表示順、上位バイトは各パーツのOAM3バイト目の調整用に用います。
なお、上位バイトの0x40のビットは左右反転フラグになっており、パーツの配置の調整のためにも使用します。
※同様に上位バイトの0x80のビットは上下反転フラグですが、水中で真下に泳ぐ時くらいしか使われません。 - オフセット6: 姿勢ID
各パーツの配置情報を決定するためのIDとして使用します。
キャラのアクション状況やイベントで実行されているコマンドに応じて決定されます。 - オフセット8: キャラID
キャラIDを元にグラ種を決定し、前項姿勢IDと併せてパーツの配置情報の決定に用います。
そのため、グラ種が同一のキャラが同じ行動をしている場合、外見で見分けがつかなくなっています。( 例えば、マリーとステラや、バーバラ・キャスリン・アンジェリカの組 )
実際の描画処理は 0x809b18 ( コールする際は 0x809f37 ) の関数が担当しますが、状況に応じて処理内容が変わります。
- 座標以外の情報に前bfから変化がない場合
0x809a77の関数により、各パーツのOAMの座標値(下位テーブル0バイト目、1バイト目、上位テーブルの0x01のビット) に、前bfからの差分を反映するだけで終わります。 - 座標以外の情報に前bfから変化がある場合
0x8099e9の関数により、各パーツの配置情報を決定し、OAMに反映します。16個のスプライトの内、表示に用いない分はx座標128、y座標240を設定して非表示扱いにします。
パーツの配置データの保存位置に関しては、メモリ一覧での「キャラグラ種XX番用スプライトデータ」がそれぞれ該当します。
配置位置の先頭は、姿勢IDに応じた可変長データの先頭アドレス(バンクを除いた下位2バイト)のリストとなっており、各可変長データは、5バイトのデータ組がいくつかと、終端のバイト(値0xc0)とで構成されます。( 一部終端がない場合もあります )
この5バイトのデータ組が各パーツの情報に対応するわけですが、容量の節約のためか、別の姿勢IDで用いている既存の複数のパーツの組み合わせ情報を参照する場合もあります。内訳は次の通りです。
配置位置の先頭は、姿勢IDに応じた可変長データの先頭アドレス(バンクを除いた下位2バイト)のリストとなっており、各可変長データは、5バイトのデータ組がいくつかと、終端のバイト(値0xc0)とで構成されます。( 一部終端がない場合もあります )
この5バイトのデータ組が各パーツの情報に対応するわけですが、容量の節約のためか、別の姿勢IDで用いている既存の複数のパーツの組み合わせ情報を参照する場合もあります。内訳は次の通りです。
| オフセット | 概要 | 詳細 |
| 0バイト目 | 情報の種類 | 数値の範囲によって内容が変わります ・192以上: パーツ情報のまとまりがこれ以上ないと見なします 残り4バイトは無視されるため、これが終端の1バイトとして扱われます。 ・64以上: 別のパーツの組の情報を参照します。 下位6bitは、その参照するデータに含まれるデータの組の数を表します。 なお、128以上の場合はその参照したデータが最後の情報だと見做します。 ・64未満: 単一のパーツ情報を表します。 更に奇数の場合は16x16pxのパーツを表します。 |
| 1,2バイト目 | OAM属性/参照先 | 0バイト目の値によって意味が変わります。 ・別のパーツの組の参照の場合、2バイトセットで先頭アドレスを表します。 ・単一のパーツの場合、1バイト目がタイル番号、 2バイト目が各種属性(OAM3バイト目)を表します。 |
| 3,4バイト目 | 相対座標 | それぞれy座標、x座標の符号付き相対座標(基準からの差分)を表します。 なお、別のパーツの組の参照の場合、その組全体の差分となり、 その組の各種パーツの相対座標に更に補正として追加の影響があります。 |
以下に、リチャード(グラ種5)の姿勢ID100 ( 横ジャンプポーズ ) の例を挙げます。
配置情報は、バンク 0x92 のアドレス 0xef70 からの終端なし60バイトで、その中で 0xe179, 0xef38 を参照する箇所があります。そこに配置されているデータを解析すると次のようになります。
配置情報は、バンク 0x92 のアドレス 0xef70 からの終端なし60バイトで、その中で 0xe179, 0xef38 を参照する箇所があります。そこに配置されているデータを解析すると次のようになります。
| パーツ順 | アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|
| 0 | 0xef70 | 00,c9,1c,e2,f8 | 単一パーツ | タイル201番パレット6、x,y座標-8,-30 |
| 1 | 0xef75 | 00,2e,1d,e3,f2 | 単一パーツ | タイル46番パレット6(1面)、上下反転、x,y座標-14,-29 |
| 2 | 0xef7a | 00,16,90,e2,ee | 単一パーツ | タイル22番パレット0、上下反転、x,y座標-18,-30 |
| - | 0xef7f | 42,38,ef,00,00 | 参照 | アドレス0xef38、2パーツ、x,y座標±0,±0 |
| 3 | 0xef38 | 00,21,d0,ee,00 | 単一パーツ | タイル33番パレット0、上下・左右反転、x,y座標±0,-18 |
| 4 | 0xef3d | 05,4c,10,e1,f7 | 単一パーツ | タイル76番パレット0、16x16pxサイズ、x,y座標-9,-31 |
| 5 | 0xef84 | 00,f5,d4,f6,08 | 単一パーツ | タイル245番、パレット2、上下・左右反転、x,y座標+8,-10 |
| 6 | 0xef89 | 00,2b,d0,f3,05 | 単一パーツ | タイルu,43番、パレット0、上下・左右反転、x,y座標+5,-13 |
| 7 | 0xef8e | 00,c2,10,dc,f7 | 単一パーツ | タイルu,194番、パレット0、x,y座標-9,-36 |
| 8 | 0xef93 | 00,1c,10,eb,f8 | 単一パーツ | タイル28番、パレット0、x,y座標-8,-21 |
| 9 | 0xef98 | 00,f0,14,f3,f1 | 単一パーツ | タイル240番、パレット2、x,y座標-15,-13 |
| 10 | 0xef9d | 00,24,10,ef,f4 | 単一パーツ | タイル36番、パレット0、x,y座標-12,-17 |
| 11 | 0xefa2 | 00,c8,1c,e0,f8 | 単一パーツ | タイル200番、パレット6、x,y座標-8,-32 |
| - | 0xefa7 | 82,79,e1,f1,fc | 参照 | アドレス0xe179、2パーツ、x,y座標-4,-15 この参照でデータ終了 |
| 12 | 0xe179 | 00,2f,9d,f0,f7 | 単一パーツ | タイル47番(1面)、パレット6、上下反転、x,y座標-13,-31 ※参照時の座標補正込み |
| 13 | 0xe17e | 00,16,90,ee,f3 | 単一パーツ | タイル22番、パレット0、上下反転、x,y座標-17,-33 ※参照時の座標補正込み |
バイト並びから内容の解析についてですが、例えばパーツ順1の 00,2e,1d,e3,f2 という並びからは、以下のように読み取ることができます。
- 0バイト目が00のため、単一パーツ
- 1バイト目が2eのため、46番のタイルを使用
- 2バイト目が1dで、
- 最下位ビットが1のため、0面ではなく1面のタイルを使用
- 最下位を除く下位3ビットが 110 のため、パレット6を使用
- 最上位2ビットを除く上位2ビットが 01 のため、OAMの優先順位1 (表からは割愛)
- 3バイト目が e2 のため、相対y座標 -30
- 4バイト目が f2 のため、相対x座標 -14
他にも、0バイト目が奇数であるパーツ順4が16x16pxサイズであることや、2バイト目の0x80のビットが1であるパーツは上下反転、0x40のビットが1であるパーツは左右反転であることなどが分かります。
なお、このパーツ配置情報は、0バイト目が0x82の参照が来ているため、特に終端なしで終了となります。
なお、このパーツ配置情報は、0バイト目が0x82の参照が来ているため、特に終端なしで終了となります。
以上の内容を図示すると以下のようになります。
※パーツ中の L は 16x16pxサイズ、Nは1面のタイル使用、Hは左右反転、Vは上下反転を表します。

※パーツ中の L は 16x16pxサイズ、Nは1面のタイル使用、Hは左右反転、Vは上下反転を表します。

非キャラクター表示
概要
非キャラクターは、スプライトID 0~15 の16枠を適宜割り当てて表示を行います。
スプライトIDの割り当ては $01c8 を通じて空きを自動で割り当てる場合もあれば、固定のIDを使用する場合もあります。
またタイルに関しては、場面によって異なる、1面の192~223のものを使います。
スプライトIDの割り当ては $01c8 を通じて空きを自動で割り当てる場合もあれば、固定のIDを使用する場合もあります。
またタイルに関しては、場面によって異なる、1面の192~223のものを使います。
表示制御用に、キャラと同じように管理データA様のデータを用いますが、一部データの解釈が変わります。
これには、特に管理データAの-4~-1番目 ( 先頭アドレス $0450, $0470, $0490, $04b0 ) を使います。
このデータの中で、オフセット0,2の画面上x,y座標、オフセット4の姿勢情報は同様の意味を持ちますが、姿勢情報決定用のオフセット6,8は独自の扱いとなります。
なお、ものによっては、オフセット0x10~の地図上座標、速度情報を位置管理用に使う場合もあります。
これには、特に管理データAの-4~-1番目 ( 先頭アドレス $0450, $0470, $0490, $04b0 ) を使います。
このデータの中で、オフセット0,2の画面上x,y座標、オフセット4の姿勢情報は同様の意味を持ちますが、姿勢情報決定用のオフセット6,8は独自の扱いとなります。
なお、ものによっては、オフセット0x10~の地図上座標、速度情報を位置管理用に使う場合もあります。
プロローグ時ホールモブ
プロローグのホールにおいてダンスをしているモブキャラ4組は、キャラクター表示とは別の枠組みで管理されています。
各組スプライト8個ずつで、スプライト番号96~127を直接操作します。
各組の操作としては左右の移動とポーズ変更があり、データは $167c~16bb の16バイト×4組で管理します。また、bf毎に対象とする組を $167a ( 値1~4 ) で切り替えます。ホールに入った瞬間のみ $167a として 5 という特殊な値になっており、この値の時に移動量のゼロ初期化を行います。( ポーズや状態の値はホールを出ても維持されます )
16バイトの管理データの内訳は次の通りです。
各組の操作としては左右の移動とポーズ変更があり、データは $167c~16bb の16バイト×4組で管理します。また、bf毎に対象とする組を $167a ( 値1~4 ) で切り替えます。ホールに入った瞬間のみ $167a として 5 という特殊な値になっており、この値の時に移動量のゼロ初期化を行います。( ポーズや状態の値はホールを出ても維持されます )
16バイトの管理データの内訳は次の通りです。
| オフセット | アドレス | 概要 | 詳細 |
|---|---|---|---|
| 0,2 | $16Xc,e | 画面上x,y座標 | スプライト配置に反映する画面上のpx単位座標 |
| 4 | $16X0 | ポーズ | 0,1で2通りのポーズを切り替える |
| 6,8 | $16X2,4 | x,y座標差分値コピー | 主人公の地図上の座標と画面上の座標の差分値($01d8,a)のコピー ※位置計算の際、主人公との相対位置を基にするため |
| 10 | $16X6 | 姿勢情報 | ゼロで固定 |
| 12 | $16X8 | 移動量 | 基準位置からの符号付き移動px数 |
| 14 | $16Xa | 状態 | 移動向きと移動間の静止時間管理用のカウンタ兼用 |
各キャラの地図上の基準座標はpx単位のx座標で259,307,371,419となっており、そこにオフセット12の移動量を加えて現在地を決定します。基準座標に相当する配置(ポーズ0の場合)は次の図の通りです。
※1組目は女性の裏に少し隠れる形になります。

※1組目は女性の裏に少し隠れる形になります。

各組は、x座標正方向(右側)に基準値+64まで進んでから折り返し、今度は基準値-64まで戻って折り返し、を繰り返します。移動方向の正負は、オフセット14の値の偶奇 (偶数だと正方向移動) で制御します。
前述の通り、移動等の判定はbf毎に対象の組を切り替えて行います。ランダムに1/2の確率で1px移動または移動なしです。周期の最初のbfで移動なしになった場合は即座に、移動を引いた場合は4pxの移動後にポーズ切り替え(オフセット4の値の0⇔1)と、4周期(都合16bf)の停止が入ります。停止の際はオフセット14を8または9に設定し、2ずつ減らすことで期間を制御します。停止が終わったらまた次の周期に移ります。
前述の通り、移動等の判定はbf毎に対象の組を切り替えて行います。ランダムに1/2の確率で1px移動または移動なしです。周期の最初のbfで移動なしになった場合は即座に、移動を引いた場合は4pxの移動後にポーズ切り替え(オフセット4の値の0⇔1)と、4周期(都合16bf)の停止が入ります。停止の際はオフセット14を8または9に設定し、2ずつ減らすことで期間を制御します。停止が終わったらまた次の周期に移ります。
各組が24px置きの場所にいる状態でポーズの0/1が揃った状況を図示すると、次のようになります。

各組のパーツは8個固定で、アドレス 0x82eddd~の320バイトに各組のポーズ1,0の順に格納されています。
データのフォーマットはキャラクター表示の際と同様ですが、8パーツずつ固定のため終端は省略されています。以下、その一覧です。
データのフォーマットはキャラクター表示の際と同様ですが、8パーツずつ固定のため終端は省略されています。以下、その一覧です。
| 対象 | パーツ順 | アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|---|
| 1組目 ポーズ0 |
0 | 0x82ee05 | 00,96,1b,e4,04 | 単一パーツ | タイル150番(1面)パレット5、x,y座標4,-28 |
| 1 | 0x82ee0a | 00,47,55,f7,02 | 単一パーツ | タイル71番(1面)パレット2、左右反転、x,y座標2,-9 | |
| 2 | 0x82ee0f | 05,cc,55,e0,fa | 単一パーツ | タイル204番(1面)パレット2、左右反転、16x16pxサイズ、x,y座標-6,-32 | |
| 3 | 0x82ee14 | 05,ce,55,f0,fa | 単一パーツ | タイル206番(1面)パレット2、左右反転、16x16pxサイズ、x,y座標-6,-16 | |
| 4 | 0x82ee19 | 00,c7,11,dd,00 | 単一パーツ | タイル199番(1面)パレット0、x,y座標0,-35 | |
| 5 | 0x82ee1e | 00,01,5c,db,fd | 単一パーツ | タイル1番パレット6、左右反転、x,y座標-3,-37 | |
| 6 | 0x82ee23 | 05,c8,51,e0,f7 | 単一パーツ | タイル200番(1面)パレット0、左右反転、16x16pxサイズ、x,y座標-9,-32 | |
| 7 | 0x82ee28 | 05,ca,51,f0,f7 | 単一パーツ | タイル202番(1面)パレット0、左右反転、16x16pxサイズ、x,y座標-9,-16 | |
| 1組目 ポーズ1 |
0 | 0x82eddd | 00,96,1b,e4,f5 | 単一パーツ | タイル150番(1面)パレット5、x,y座標-11,-28 |
| 1 | 0x82ede2 | 00,46,55,f8,02 | 単一パーツ | タイル70番(1面)パレット2、左右反転、x,y座標2,-8 | |
| 2 | 0x82ede7 | 05,cc,55,e0,f9 | 単一パーツ | タイル204番(1面)パレット2、左右反転、16x16pxサイズ、x,y座標-7,-32 | |
| 3 | 0x82edec | 05,ce,55,f0,f9 | 単一パーツ | タイル206番(1面)パレット2、左右反転、16x16pxサイズ、x,y座標-7,-16 | |
| 4 | 0x82edf1 | 00,c7,11,dd,00 | 単一パーツ | タイル199番(1面)パレット0、x,y座標0,-35 | |
| 5 | 0x82edf6 | 00,01,5c,db,fc | 単一パーツ | タイル1番パレット6、左右反転、x,y座標-4,-37 | |
| 6 | 0x82edfb | 05,c8,51,e0,f6 | 単一パーツ | タイル200番(1面)パレット0、左右反転、16x16pxサイズ、x,y座標-10,-32 | |
| 7 | 0x82ee00 | 05,ca,51,f0,f6 | 単一パーツ | タイル202番(1面)パレット0、左右反転、16x16pxサイズ、x,y座標-10,-16 | |
| 2組目 ポーズ0 |
0 | 0x82ee55 | 00,96,17,e4,f5 | 単一パーツ | タイル150番(1面)パレット3、x,y座標-11,-28 |
| 1 | 0x82ee5a | 00,46,57,f6,02 | 単一パーツ | タイル70番(1面)パレット3、左右反転、x,y座標2,-10 | |
| 2 | 0x82ee5f | 05,cc,57,e0,f9 | 単一パーツ | タイル204番(1面)パレット3、左右反転、16x16pxサイズ、x,y座標-7,-32 | |
| 3 | 0x82ee64 | 05,ce,57,f0,f9 | 単一パーツ | タイル206番(1面)パレット3、左右反転、16x16pxサイズ、x,y座標-7,-16 | |
| 4 | 0x82ee69 | 00,c7,17,dd,00 | 単一パーツ | タイル199番(1面)パレット3、x,y座標0,-35 | |
| 5 | 0x82ee6e | 00,61,56,da,fc | 単一パーツ | タイル97番パレット3、左右反転、x,y座標-4,-38 | |
| 6 | 0x82ee73 | 05,c8,59,e0,f6 | 単一パーツ | タイル200番(1面)パレット4、左右反転、16x16pxサイズ、x,y座標-10,-32 | |
| 7 | 0x82ee78 | 05,ca,59,f0,f6 | 単一パーツ | タイル202番(1面)パレット4、左右反転、16x16pxサイズ、x,y座標-10,-16 | |
| 2組目 ポーズ1 |
0 | 0x82ee2d | 00,96,17,e4,04 | 単一パーツ | タイル150番(1面)パレット3、x,y座標4,-28 |
| 1 | 0x82ee32 | 00,48,57,f8,03 | 単一パーツ | タイル72番(1面)パレット3、左右反転、x,y座標3,-8 | |
| 2 | 0x82ee37 | 05,cc,57,e0,fa | 単一パーツ | タイル204番(1面)パレット3、左右反転、16x16pxサイズ、x,y座標-6,-32 | |
| 3 | 0x82ee3c | 05,ce,57,f0,fa | 単一パーツ | タイル206番(1面)パレット3、左右反転、16x16pxサイズ、x,y座標-6,-16 | |
| 4 | 0x82ee41 | 00,c7,17,dd,01 | 単一パーツ | タイル199番(1面)パレット3、x,y座標1,-35 | |
| 5 | 0x82ee46 | 00,61,56,da,fd | 単一パーツ | タイル97番パレット3、左右反転、x,y座標-3,-38 | |
| 6 | 0x82ee4b | 05,c8,59,e0,f7 | 単一パーツ | タイル200番(1面)パレット4、左右反転、16x16pxサイズ、x,y座標-9,-32 | |
| 7 | 0x82ee50 | 05,ca,59,f0,f7 | 単一パーツ | タイル202番(1面)パレット4、左右反転、16x16pxサイズ、x,y座標-9,-16 | |
| 3組目 ポーズ0 |
0 | 0x82eea5 | 00,39,13,f5,f5 | 単一パーツ | タイル57番(1面)パレット1、x,y座標-11,-11 |
| 1 | 0x82eeaa | 00,95,5b,e3,04 | 単一パーツ | タイル149番(1面)パレット5、左右反転、x,y座標4,-29 | |
| 2 | 0x82eeaf | 05,cc,13,e0,f8 | 単一パーツ | タイル204番(1面)パレット1、16x16pxサイズ、x,y座標-8,-32 | |
| 3 | 0x82eeb4 | 05,ce,13,f0,f8 | 単一パーツ | タイル206番(1面)パレット1、16x16pxサイズ、x,y座標-8,-16 | |
| 4 | 0x82eeb9 | 00,c7,53,dd,f9 | 単一パーツ | タイル199番(1面)パレット1、左右反転、x,y座標-7,-35 | |
| 5 | 0x82eebe | 00,c0,14,da,fd | 単一パーツ | タイル192番パレット2、x,y座標-3,-38 | |
| 6 | 0x82eec3 | 05,c8,19,e0,fb | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-5,-32 | |
| 7 | 0x82eec8 | 05,ca,19,f0,fb | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-5,-16 | |
| 3組目 ポーズ1 |
0 | 0x82ee7d | 00,38,13,f6,f4 | 単一パーツ | タイル56番(1面)パレット1、x,y座標-12,-10 |
| 1 | 0x82ee82 | 00,96,1b,e4,03 | 単一パーツ | タイル150番(1面)パレット5、x,y座標3,-28 | |
| 2 | 0x82ee87 | 05,cc,13,e0,f7 | 単一パーツ | タイル204番(1面)パレット1、16x16pxサイズ、x,y座標-9,-32 | |
| 3 | 0x82ee8c | 05,ce,13,f0,f7 | 単一パーツ | タイル206番(1面)パレット1、16x16pxサイズ、x,y座標-9,-16 | |
| 4 | 0x82ee91 | 00,c7,53,dd,f8 | 単一パーツ | タイル199番(1面)パレット1、左右反転、x,y座標-8,-35 | |
| 5 | 0x82ee96 | 00,c0,14,da,fc | 単一パーツ | タイル192番パレット2、x,y座標-4,-38 | |
| 6 | 0x82ee9b | 05,c8,19,e0,fa | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-6,-32 | |
| 7 | 0x82eea0 | 05,ca,19,f0,fa | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-6,-16 | |
| 4組目 ポーズ0 |
0 | 0x82eef5 | 00,9b,5a,e1,f8 | 単一パーツ | タイル155番パレット5、左右反転、x,y座標-8,-31 |
| 1 | 0x82eefa | 00,96,1b,e4,04 | 単一パーツ | タイル150番(1面)パレット5、x,y座標4,-28 | |
| 2 | 0x82eeff | 05,cc,1b,e0,f8 | 単一パーツ | タイル204番(1面)パレット5、16x16pxサイズ、x,y座標-8,-32 | |
| 3 | 0x82ef04 | 05,ce,1b,f0,f8 | 単一パーツ | タイル206番(1面)パレット5、16x16pxサイズ、x,y座標-8,-16 | |
| 4 | 0x82ef09 | 00,c7,5b,dd,f9 | 単一パーツ | タイル199番(1面)パレット5、左右反転、x,y座標-7,-35 | |
| 5 | 0x82ef0e | 00,f1,13,d9,fd | 単一パーツ | タイル241番(1面)パレット1、x,y座標-3,-39 | |
| 6 | 0x82ef13 | 05,c8,17,e0,fb | 単一パーツ | タイル200番(1面)パレット3、16x16pxサイズ、x,y座標-5,-32 | |
| 7 | 0x82ef18 | 05,ca,17,f0,fb | 単一パーツ | タイル202番(1面)パレット3、16x16pxサイズ、x,y座標-5,-16 | |
| 4組目 ポーズ1 |
0 | 0x82eecd | 00,9b,1a,e1,f7 | 単一パーツ | タイル155番パレット5、x,y座標-9,-31 |
| 1 | 0x82eed2 | 00,96,1b,e4,03 | 単一パーツ | タイル150番(1面)パレット5、x,y座標3,-28 | |
| 2 | 0x82eed7 | 05,cc,1b,e0,f7 | 単一パーツ | タイル204番(1面)パレット5、16x16pxサイズ、x,y座標-9,-32 | |
| 3 | 0x82eedc | 05,ce,1b,f0,f7 | 単一パーツ | タイル206番(1面)パレット5、16x16pxサイズ、x,y座標-9,-16 | |
| 4 | 0x82eee1 | 00,c7,5b,dd,f8 | 単一パーツ | タイル199番(1面)パレット5、左右反転、x,y座標-8,-35 | |
| 5 | 0x82eee6 | 00,f1,13,d9,fc | 単一パーツ | タイル241番(1面)パレット1、x,y座標-4,-39 | |
| 6 | 0x82eeeb | 05,c8,17,e0,fa | 単一パーツ | タイル200番(1面)パレット3、16x16pxサイズ、x,y座標-6,-32 | |
| 7 | 0x82eef0 | 05,ca,17,f0,fa | 単一パーツ | タイル202番(1面)パレット3、16x16pxサイズ、x,y座標-6,-16 |
人外オブジェクト表示
キャラID 63の人外オブジェクトは、一般のイベントキャラと同様、管理データAの12~15番目に配置され、地図上座標から画面上の座標が計算されますが、姿勢データは独自に決定されます。
なお、姿勢情報の0x2000のbitが立っていない場合は非表示となります。スプライトIDは空きから割り当てられますが、最優先のため常に0番が使われます。
こちらが該当するのは教会でのバイオリンのみです。
※それ以外の人外オブジェクトは、基本的に非表示で用いられる
なお、姿勢情報の0x2000のbitが立っていない場合は非表示となります。スプライトIDは空きから割り当てられますが、最優先のため常に0番が使われます。
こちらが該当するのは教会でのバイオリンのみです。
※それ以外の人外オブジェクトは、基本的に非表示で用いられる
以下にパーツ配置データを挙げます。
| パーツ順 | アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|
| 0 | 0x94800a | 05,c8 11,f8,f8 | 単一パーツ | タイル200番(1面)パレット0、16x16pxサイズ、x,y座標-8,-8 |
| - | 0x94800f | c0 | 終端 | - |
実際のオブジェクトの画像 ( 赤の基準線付き ) は次の通りです。


マーカー表示
同行者がいる場合に限り、管理データAの-1番目で管理されているデータに基づき、マーカーの表示処理が行われます。
自発的に移動するものではないため、速度情報は使用されませんが、画面上の座標は地図上座標から計算されます。
なお、オフセット0xcでアクション状況サブパラメータの代わりにマーカー表示/非表示切り替えを制御します。( 0で表示、非0で非表示 )
姿勢データは管理データのオフセット6~の3バイトの絶対アドレスからロードしますが、データとしては固定となっています。ただし、黄・赤の切り替えのために姿勢情報を 0x2a01, 0x2001 と切り替えることで、パレット情報を変更しています。
自発的に移動するものではないため、速度情報は使用されませんが、画面上の座標は地図上座標から計算されます。
なお、オフセット0xcでアクション状況サブパラメータの代わりにマーカー表示/非表示切り替えを制御します。( 0で表示、非0で非表示 )
姿勢データは管理データのオフセット6~の3バイトの絶対アドレスからロードしますが、データとしては固定となっています。ただし、黄・赤の切り替えのために姿勢情報を 0x2a01, 0x2001 と切り替えることで、パレット情報を変更しています。
以下にパーツ配置データを挙げます。
マーカーに用いるタイルに関しては、場面が変わっても共通のデータが使用されます。
マーカーに用いるタイルに関しては、場面が変わっても共通のデータが使用されます。
| パーツ順 | アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|
| 0 | 0x948004 | 05,ce,1f,08,f8 | 単一パーツ | タイル206番(1面)パレット7、16x16pxサイズ、x,y座標-8,+8 ※パーツデータ上は赤色だが、黄色表示の場合、姿勢情報でパレット2に切り替わる |
| - | 0x948009 | c0 | 終端 | - |
それぞれのマーカーの画像 ( 紫の基準線付き ) は次の通りです。
マーカーは、地図上の座標より数px下に出る傾向があるためか、基準線よりパーツが下に配置されています。

マーカーは、地図上の座標より数px下に出る傾向があるためか、基準線よりパーツが下に配置されています。

地図上の現在地アイコン表示
地図表示の中で、現在地を示すアイコンのみ、スプライトで管理されます。
これは、selectボタンで表示される地図も、各所にある案内板をXボタンで見る場合も同様です。
この時、スプライトは0番のみを直接操作します。表示位置は管理データAの-2番目に反映させます。
※selectで表示される地図の場合、表エリア外ではアイコンは非表示になります。案内版のの場合、アイコンの位置は案内版のある位置になります。
これは、selectボタンで表示される地図も、各所にある案内板をXボタンで見る場合も同様です。
この時、スプライトは0番のみを直接操作します。表示位置は管理データAの-2番目に反映させます。
※selectで表示される地図の場合、表エリア外ではアイコンは非表示になります。案内版のの場合、アイコンの位置は案内版のある位置になります。
地図は、$038a の値に応じて表示サイズの調整が行われます。この数値の範囲は 32~128 で、案内板の場合は 32 固定です。アイコンの表示もこれに応じてサイズが変更されますが、これはスプライト表示に使うタイルの変更で対応しています。
タイルとしては1面に8種類用意されていますが、最も小さい192番は使用されません。基本は 194番で、$038a の値が 16 増える毎に番号が2増えます。違いは次の通りです。なお、16x16pxサイズです。

タイルとしては1面に8種類用意されていますが、最も小さい192番は使用されません。基本は 194番で、$038a の値が 16 増える毎に番号が2増えます。違いは次の通りです。なお、16x16pxサイズです。

カラーパレットは0番を使用しますが、明滅表示の演出のため、パレット内の色設定を2f毎に書き換えることでローテートさせます。上記の図は、最も明るい白・青が設定された状態です。
このうち、青の部分は32段階(64f)毎に青→黒の変化を繰り返しますが、白の部分の変化はそれとわずかにずれた周期になっています。そのため、全体の設定が元に戻るのは1024段階(2048f≒34秒)毎です。以下に途中の段階を間引いた推移を挙げます。( 数字は段階に対応しています )
このうち、青の部分は32段階(64f)毎に青→黒の変化を繰り返しますが、白の部分の変化はそれとわずかにずれた周期になっています。そのため、全体の設定が元に戻るのは1024段階(2048f≒34秒)毎です。以下に途中の段階を間引いた推移を挙げます。( 数字は段階に対応しています )
ギミック表示概要
ボイラー爆発前の船内各所では、ギミックのためにスプライトによる各種表示制御が行われています。
ギミックの種類は、場所に応じて設定される種別情報 ( $03aa ) により決まります。
ただ、この $03aa は場面転換時に設定される値と、ギミック用の初期処理後に変換される値とでは意味が変わってきます。以下、その値の組に対して、適用される場所および部屋IDと、ギミックの種類について挙げます。
※特にギミックがないところは種別情報の値が一律255になります。
※放電のギミックは、表示効果ではなく純粋にSEのみの話となるため、BGM・サブBGMの制御によって管理されています。
ギミックの種類は、場所に応じて設定される種別情報 ( $03aa ) により決まります。
ただ、この $03aa は場面転換時に設定される値と、ギミック用の初期処理後に変換される値とでは意味が変わってきます。以下、その値の組に対して、適用される場所および部屋IDと、ギミックの種類について挙げます。
※特にギミックがないところは種別情報の値が一律255になります。
※放電のギミックは、表示効果ではなく純粋にSEのみの話となるため、BGM・サブBGMの制御によって管理されています。
この中で、ほこりおよび各種落下物のギミックは、船の揺れが来た時のみ発生します。
対象の場所に入った場合は $03b8 が 1 に設定され、対象として判断されます。そして、揺れが始まって2秒後にギミックの初期処理が行われます。この時、一旦 $03b8 が 0 に設定されることで、逆にギミックの処理継続の判断となります。
演出が完了した後は $03b8 の値がまた 1 に復帰されますが、まだ傾きの変化が起こっていなければ、再度初期処理からやり直しとなります。傾きの変化(2段階ある場合は初段)が来ていれば、そこで本当にギミックは終了となります。また、ギミックの初期処理が行われた後に画面移動した場合、移動先で揺れが来た時のギミックがある場所でも次の揺れまで発動はされなくなります。
※なお、ギミック処理継続に関して、ほこりの演出のみは少し事情が違います。
対象の場所に入った場合は $03b8 が 1 に設定され、対象として判断されます。そして、揺れが始まって2秒後にギミックの初期処理が行われます。この時、一旦 $03b8 が 0 に設定されることで、逆にギミックの処理継続の判断となります。
演出が完了した後は $03b8 の値がまた 1 に復帰されますが、まだ傾きの変化が起こっていなければ、再度初期処理からやり直しとなります。傾きの変化(2段階ある場合は初段)が来ていれば、そこで本当にギミックは終了となります。また、ギミックの初期処理が行われた後に画面移動した場合、移動先で揺れが来た時のギミックがある場所でも次の揺れまで発動はされなくなります。
※なお、ギミック処理継続に関して、ほこりの演出のみは少し事情が違います。
また、落下物や炎等のオブジェクトに関しては、管理データA様のデータにより位置やグラフィックが制御されます。その場合、管理データAの-4~-2番目 ( $0450~, $0470~, $0490~ ) の一部データが使用されます。
そういった管理データA様のデータを用いない場合は、主人公の動きの影響がギミックの表示位置に反映されるように、ギミック処理の際、$62 および $64 に前bfからの移動差分が計算され ( 関数 0x82b3a1 )、ギミックの表示位置に補正がかかります。
そういった管理データA様のデータを用いない場合は、主人公の動きの影響がギミックの表示位置に反映されるように、ギミック処理の際、$62 および $64 に前bfからの移動差分が計算され ( 関数 0x82b3a1 )、ギミックの表示位置に補正がかかります。
| 種別情報 | 場所 | ギミック | |
|---|---|---|---|
| 初期値 | 変換後 | ||
| 0 | 0 | 表エリア上層 ブリッジ(0) 裏エリア吹き抜け船首側底層部(6) 小部屋#2(25) 上層船尾側裏エリア連絡部屋(27) ホール(メイン)(29) |
水流 |
| any | 全域 ※ボイラー爆発前、かつ制限時間切れ演出後 |
||
| 1 | 1 | 裏エリア吹き抜け船尾側上層部(1) 船尾側エレベータ(7) 売店#3(13) 裏エリア配管部船尾方面(20) 裏エリア配管部中央(21) 裏エリア底層船首倉庫(22) 小広間先中底層連絡通路(35) 教会トイレ(36) 船員船室(上・並共通)(38) ボイラー室前(39) 中層/底層船首トイレ個室(41) トレーニングルーム/売店#2トイレ個室群(42) 休憩室/図書館トイレ個室群(43) 売店#2トイレ(45) 休憩室トイレ(46) 図書館トイレ(47) 小部屋#1(50) 冷凍庫(53) 調理室(55) |
水滴 |
| 3 | 2 | 表エリア底層 ホール2F(16) |
ほこり、落下物、非殺傷落下物 |
| 12 | トレーニングルーム(52) | ||
| 2 | 3 | 表エリア中層 | ほこり、炎 |
| 4 | 裏エリア吹き抜け船尾側底層部(2) 裏エリア吹き抜け中央上層部(3) 裏エリア吹き抜け中央底層部(4) 裏エリア吹き抜け船首側上層部(5) |
爆発 | |
| 7 | 4,6 | バー(9) | ほこり、非跳躍落下物 |
| 8 | 売店#1(12) | 非跳躍落下物 | |
| 9 | 5 | 図書館(28) | ほこり、落下物 |
| 10 | 小広間(26) | 落下物 | |
| 5 | 10 | 底層連絡部屋(15) 船首エレベータ(24) |
非殺傷落下物 |
| 6 | トレーニングルームトイレ(44) | ||
| 11 | 売店#2(11) 客室・中層/底層船首トイレ(40) エイミー船室(65) アデラ船室(66) |
ほこり、非殺傷落下物 | |
| 13 | 12 | 該当なし |
※コード上処理のみ存在 |
| 14 | |||
管理データからの描画
管理データAの-4~-2番目を描画に用いる場合、オフセット0,2 ( 画面上のx,y座標 ) およびオフセット 4 の上位バイト ( スプライトデータ3バイト目の補正 ) は、キャラの表示の際と同じように用いられます。
しかし、スプライトIDは空きからの自動割り当てとなります。
ちなみにオフセット4の上位バイトは左右反転の制御の機能もありますが、表エリア上層等の水流の制御の際、左右反転するかどうかが高速に入れ替わります。その後、水流のない場所に移ってもこのバイトは変化しないため、場所を移るタイミングによっては他の管理データ-4番目を描写に用いるギミックが全て左右反転状態になります。
※炎・爆発で用いる -3,-2番目は左右反転の影響を受けないため、反転具合が揃わないことになります。
しかし、スプライトIDは空きからの自動割り当てとなります。
ちなみにオフセット4の上位バイトは左右反転の制御の機能もありますが、表エリア上層等の水流の制御の際、左右反転するかどうかが高速に入れ替わります。その後、水流のない場所に移ってもこのバイトは変化しないため、場所を移るタイミングによっては他の管理データ-4番目を描写に用いるギミックが全て左右反転状態になります。
※炎・爆発で用いる -3,-2番目は左右反転の影響を受けないため、反転具合が揃わないことになります。
また、パーツ情報用にオフセット 6 からの3バイトは 0x998000 と固定されていて、そのアドレスから始まるアドレス配列からギミック表示ID($140a,$140c,$140e)を基にパーツ情報のアドレスを引いて用います。このIDは時間経過でループ的に変化するように用います。その上限は $1410、リセット時設定値は $1416 で管理します。この時間経過を管理するのは $1404,$1406,$1408 で、下位バイトがbfカウンタ、上位バイトがリセット後に再設定する値です。例えば 0x0402 という値になっている場合、2bf後に切り替えが起こって値が 0x0404 に再設定される ( 次は更に4bf後に切り替え ) という使い方です。
なお、ギミック表示IDの内訳は次の通りです。「不明」とあるのは、コード上使用が確認できないため不使用と思われる範囲ですが、見落としがある可能性もあることにご注意ください。
| ギミック表示ID | 用途 | 備考 |
|---|---|---|
| 0~11 | 不使用 | 場所種別初期値13用 |
| 12~15 | 表エリア中層の炎 | |
| 16~18 | 水流 | |
| 19~26 | 落下物 | トレーニングルーム用 |
| 27~30 | 不明 | |
| 31~39 | 落下物 | 小広間用 |
| 40~43 | 非跳躍落下物 | 売店#1での皿用、41~43は割れた後のみ使用 |
| 44 | 不明 | |
| 45~48 | 非跳躍落下物 | バーでのボトル用、46~48は割れた後のみ使用 |
| 49~53 | 不明 | |
| 54 | 落下物 | 表エリア底層等、場所種別初期値3用 |
| 55~66 | 不使用 | 場所種別初期値14用 |
| 67~70 | 不明 | |
| 71~78 | 爆発の炎 | 裏エリア吹き抜け各所の爆発、場所種別初期値4用 |
| 79~82 | 不明 | |
| 83~87 | 落下物 | 図書館での本用、87のみ床で反射した後に使用 |
| 89~93 | 不明 | |
| 94~117 | 不使用 | 場所種別初期値13用 |
ほこりのギミック
このギミックは、船の揺れの時のみ発生します。
ただし、その他の落下物系のギミックがある場合は、移動処理 ( 0x82b304 ) はそれらのギミックが完了する瞬間まで遅延されます。それまでは延々とランダムな初期位置決定処理 ( 0x82b2bd ) が繰り返されます。
※正確には、移動処理は毎bf行われるのですが、つど初期位置決定で戻される形になります。
ほこりのオブジェクトは3つ用意されますが、管理データA相当のデータはなく、直接スプライトの位置を操作します。
また、スプライトは固定でID 13,14,15 を使用します。
ほこりが発生する場所では $03ae が 1 に設定され、初期化位置決定処理により 2 に変化、移動によって外に出たら、その分のみランダムに初期位置を再決定したうえで $03ae をカウントアップし、$03ae が 12に到達したところで処理終了し、3つのオブジェクトとも非表示化、$03ae を 1 に復帰という流れになります。
ただし、その他の落下物系のギミックがある場合は、移動処理 ( 0x82b304 ) はそれらのギミックが完了する瞬間まで遅延されます。それまでは延々とランダムな初期位置決定処理 ( 0x82b2bd ) が繰り返されます。
※正確には、移動処理は毎bf行われるのですが、つど初期位置決定で戻される形になります。
ほこりのオブジェクトは3つ用意されますが、管理データA相当のデータはなく、直接スプライトの位置を操作します。
また、スプライトは固定でID 13,14,15 を使用します。
ほこりが発生する場所では $03ae が 1 に設定され、初期化位置決定処理により 2 に変化、移動によって外に出たら、その分のみランダムに初期位置を再決定したうえで $03ae をカウントアップし、$03ae が 12に到達したところで処理終了し、3つのオブジェクトとも非表示化、$03ae を 1 に復帰という流れになります。
ほこりの各オブジェクトは、タイル204番(1面)パレット0、16x16pxサイズを使用します。このタイルもマーカーと同様、使用される場所では共通のデータとなっています。
初期位置は x 座標が画面上でランダム ( 0~15の乱数×16 )、y 座標が 224, 208, 240 ( 外に出た後は 0 ) です。
移動速度は画面上の位置で y方向 3px/bf (+位置補正) で、 y 座標が 250以上になったら外に出たと判定されます。x 座標は 0~255 でループするため、外に出た判定には影響ありません。
また、タイマー ( $0396 ) での管理により、4bf 毎にスプライトが左右反転表示になります。
初期位置は x 座標が画面上でランダム ( 0~15の乱数×16 )、y 座標が 224, 208, 240 ( 外に出た後は 0 ) です。
移動速度は画面上の位置で y方向 3px/bf (+位置補正) で、 y 座標が 250以上になったら外に出たと判定されます。x 座標は 0~255 でループするため、外に出た判定には影響ありません。
また、タイマー ( $0396 ) での管理により、4bf 毎にスプライトが左右反転表示になります。
実際のオブジェクトの画像 ( 時間経過による反転の様子込み ) は次のようになります。

落下物・非跳躍落下物のギミック
このギミックは、船の揺れの時のみ発生します。
前者は椅子等の床でバウンドする落下物で、後者は皿のように床で割れて消える落下物です。
そういった挙動の違いはあるものの、いずれも制御には共通する部分があります。特に、対炎無敵状態でない主人公が接触するとミスになります。
いずれも同時に1つ、管理データAの-4番目( $0450 ) で管理し、原則キャラと同様の重力に従って移動します。描画の管理については前述の「管理データからの描画」をご覧ください。
前者は椅子等の床でバウンドする落下物で、後者は皿のように床で割れて消える落下物です。
そういった挙動の違いはあるものの、いずれも制御には共通する部分があります。特に、対炎無敵状態でない主人公が接触するとミスになります。
いずれも同時に1つ、管理データAの-4番目( $0450 ) で管理し、原則キャラと同様の重力に従って移動します。描画の管理については前述の「管理データからの描画」をご覧ください。
落下物と非跳躍落下物の一番の違いは、床や壁に接触した時の挙動です。以下に整理します。
- 落下物
- 床や壁に接触すると、速度半減状態で反射する。
※反射面に応じて、x方向あるいはy方向の速度の符号が反転する
※同じ床で多重反射しないよう、$03ac で反射状態を管理して、次の床の接触時は透過するよう制御している ( 一度透過したら元に戻る ) - 反射後のグラフィック効果は場所による
※場所種別初期値3での椅子は左右反転、図書館での本は表示ID87に固定になる - 反射時のSEは21番の「打撃音」
- 主人公との接触判定は、表示上のx,y座標でそれぞれ10px,16px以内
※代表点同士の比較であることに注意 - 主人公接触時のSEは20番の「衝突」
- 床や壁に接触すると、速度半減状態で反射する。
- 非跳躍落下物
- 床や壁に接触すると、割れてその場に留まる。
※一時的に、場所種別( $03aa ) が 6 という値になり、重力による落下が無効、逆に位置補正が有効になる。 - 床接触前は表示ID固定なのが、接触後は表示ID範囲が変化する
最後の表示IDの後は消滅する - 床接触時のSEはバーのワインボトルでSE20番の「衝突」、売店#1の皿でSE23番の「壊れ物」
- 主人公との接触判定は、表示上のx,y座標でそれぞれ10px,32px以内
※代表点同士の比較であることに注意 - 主人公接触時のSEは23番の「壊れ物」
- 床や壁に接触すると、割れてその場に留まる。
演出の完了を判断するフラグ ( $03b4 ) は、次項の非殺傷落下物と共有になっています。また、完了判断の基準値 ( $03ba ) は、落下物・非跳躍落下物だけなら 8、非殺傷落下物もあるなら 15 と調整されています。
演出の完了は、落下物の3回目の登場のタイミングとなり、$03b4 の 8 のビットが 1 になります。( 3個目の落下物は現れません )
落下物の登場 ( 0x82bb18 ) は、初期化時と落下物消滅時に実行され、そこで登場回数を $03b6 にカウントします。消滅の方のタイミングは、具体的には、表示上のx座標0px未満または256px以上となった時です。( y座標-16px以下または240px以上と計算されて、x座標に0x180が設定された時を含む )
※非跳躍落下物の場合は上に挙げた通り、床接触から最後の表示IDに切り替わったタイミングでも消滅からの次の落下物の登場が発生します。
演出の完了は、落下物の3回目の登場のタイミングとなり、$03b4 の 8 のビットが 1 になります。( 3個目の落下物は現れません )
落下物の登場 ( 0x82bb18 ) は、初期化時と落下物消滅時に実行され、そこで登場回数を $03b6 にカウントします。消滅の方のタイミングは、具体的には、表示上のx座標0px未満または256px以上となった時です。( y座標-16px以下または240px以上と計算されて、x座標に0x180が設定された時を含む )
※非跳躍落下物の場合は上に挙げた通り、床接触から最後の表示IDに切り替わったタイミングでも消滅からの次の落下物の登場が発生します。
登場位置はランダムに64通りで、搭乗時の主人公の画面上の座標から見て、x軸方向に-71px~-9pxの奇数および+8px~+70pxの偶数の位置、y軸方向に-112pxの位置になるよう、船の傾きを考慮しオブジェクトの地図上の位置が設定されます。初速は 0 ではなく、4bf分落下した分の速度が与えられます。
残りの場所毎の相違点は、$1404 による切り替えタイミングおよび表示IDです。
切り替えタイミングは次の通りです。
※表中に実際の表示遷移イメージも載せます。床との接触で変化するものは、その変化も載せています。
※イメージ中の数字は表示ID、赤線は基準線、オレンジ線は当たり判定です。下に広いように見えますが、主人公の基準点 ( 足元 ) が含まれるかどうかで判定するため、見た目ほど広くはありません。( 逆に上にはかなり広いです )
※画像作成時のミスで、右側・下側の接触判定が1px分(画像上は3px)狭く見えています。ご注意ください。
切り替えタイミングは次の通りです。
※表中に実際の表示遷移イメージも載せます。床との接触で変化するものは、その変化も載せています。
※イメージ中の数字は表示ID、赤線は基準線、オレンジ線は当たり判定です。下に広いように見えますが、主人公の基準点 ( 足元 ) が含まれるかどうかで判定するため、見た目ほど広くはありません。( 逆に上にはかなり広いです )
※画像作成時のミスで、右側・下側の接触判定が1px分(画像上は3px)狭く見えています。ご注意ください。
| 場所 | 周期(bf) | イメージ | 備考 |
|---|---|---|---|
| 表エリア底層・ホール2F | 3 | ![]() |
表示IDは1種類だけなので実質影響なし |
| トレーニングルーム | 2 | ![]() |
|
| バー | 4 | ![]() |
床に接触して割れるまでは実質影響なし |
| 売店#2 | 4 | ![]() |
床に接触して割れるまでは実質影響なし |
| 図書館 | 3 | ![]() |
床に接触した後は固定 |
| 小広間 | 1 | ![]() |
使用する表示IDは前述の「管理データからの描画」をご覧ください。それぞれの表示IDに対応するパーツ情報は次の通りです。
| 表示 ID |
パーツ 順 |
アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|---|
| 19 | 0 | 0x9983b1 | 05,c0,13,f4,f8 | 単一パーツ | タイル192番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x9983b6 | c0 | 終端 | ||
| 20 | 0 | 0x9983b7 | 05,c2,13,f4,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x9983bc | c0 | 終端 | ||
| 21 | 0 | 0x9983bd | 05,c4,13,f4,f8 | 単一パーツ | タイル196番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x9983c2 | c0 | 終端 | ||
| 22 | 0 | 0x9983c3 | 05,c2,53,f4,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、左右反転、x,y座標-8,-12 |
| 1 | 0x9983c8 | c0 | 終端 | ||
| 23 | 0 | 0x9983c9 | 05,c0,53,f4,f8 | 単一パーツ | タイル192番(1面)パレット1、16x16pxサイズ、左右反転、x,y座標-8,-12 |
| 1 | 0x9983ce | c0 | 終端 | ||
| 24 | 0 | 0x9983cf | 05,c2,d3,f4,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x9983d4 | c0 | 終端 | ||
| 25 | 0 | 0x9983d5 | 05,c4,d3,f4,f8 | 単一パーツ | タイル196番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x9983da | c0 | 終端 | ||
| 26 | 0 | 0x9983db | 05,c2,93,f4,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、上下反転、x,y座標-8,-12 |
| 1 | 0x9983e0 | c0 | 終端 | ||
| 31 | 0 | 0x9983f9 | 05,c2,11,f4,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x9983fe | c0 | 終端 | ||
| 32 | 0 | 0x9983ff | 05,c4,11,f4,f8 | 単一パーツ | タイル196番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x998404 | c0 | 終端 | ||
| 33 | 0 | 0x998405 | 05,c6,11,f4,f8 | 単一パーツ | タイル198番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x99840a | c0 | 終端 | ||
| 34 | 0 | 0x99840b | 05,c8,11,f4,f8 | 単一パーツ | タイル200番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x998410 | c0 | 終端 | ||
| 35 | 0 | 0x998411 | 05,ca,11,f4,f8 | 単一パーツ | タイル192番(1面)パレット1、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x998416 | c0 | 終端 | ||
| 36 | 0 | 0x998417 | 05,c4,d1,f4,f8 | 単一パーツ | タイル196番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x99841c | c0 | 終端 | ||
| 37 | 0 | 0x99841d | 05,c6,d1,f4,f8 | 単一パーツ | タイル198番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x998422 | c0 | 終端 | ||
| 38 | 0 | 0x998423 | 05,c8,d1,f3,f8 | 単一パーツ | タイル200番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x998428 | c0 | 終端 | ||
| 39 | 0 | 0x998429 | 05,ca,d1,f4,f8 | 単一パーツ | タイル202番(1面)パレット1、16x16pxサイズ、上下左右反転、x,y座標-8,-12 |
| 1 | 0x99842e | c0 | 終端 | ||
| 40 | 0 | 0x99842f | 05,c0,19,f3,f8 | 単一パーツ | タイル192番(1面)パレット4、16x16pxサイズ、x,y座標-8,-13 |
| 1 | 0x998434 | c0 | 終端 | ||
| 41 | 0 | 0x998435 | 05,c2,19,f3,f8 | 単一パーツ | タイル194番(1面)パレット4、16x16pxサイズ、x,y座標-8,-13 |
| 1 | 0x99843a | c0 | 終端 | ||
| 42 | 0 | 0x99843b | 05,c4,19,f4,f0 | 単一パーツ | タイル196番(1面)パレット4、16x16pxサイズ、x,y座標-16,-12 |
| 1 | 0x998440 | 05,c6,19,f4,00 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標±0,-12 | |
| 2 | 0x998445 | c0 | 終端 | ||
| 43 | 0 | 0x998446 | 05,c8,19,f5,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-11 |
| 1 | 0x99844b | 05,ca,19,f5,00 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標±0,-11 | |
| 2 | 0x998450 | c0 | 終端 | ||
| 45 | 0 | 0x99845c | 00,d3,19,fc,fc | 単一パーツ | タイル211番(1面)パレット4、x,y座標-4,-4 |
| 1 | 0x998461 | 00,c3,19,f4,fc | 単一パーツ | タイル195番(1面)パレット4、x,y座標-4,-12 | |
| 2 | 0x998466 | c0 | 終端 | ||
| 46 | 0 | 0x998467 | 05,c4,19,f4,f8 | 単一パーツ | タイル196番(1面)パレット4、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x99846c | c0 | 終端 | ||
| 47 | 0 | 0x99846d | 00,c7,19,fc,f4 | 単一パーツ | タイル199番(1面)パレット4、x,y座標-12,-4 |
| 1 | 0x998472 | 00,c8,19,fc,fc | 単一パーツ | タイル200番(1面)パレット4、x,y座標-4,-4 | |
| 2 | 0x998477 | 00,c9,19,fc,04 | 単一パーツ | タイル201番(1面)パレット4、x,y座標+4,-4 | |
| 3 | 0x99847c | c0 | 終端 | ||
| 48 | 0 | 0x99847d | 00,d7,19,fc,f8 | 単一パーツ | タイル215番(1面)パレット4、x,y座標-8,-4 |
| 1 | 0x998482 | 00,d8,19,fc,00 | 単一パーツ | タイル216番(1面)パレット4、x,y座標±0,-4 | |
| 2 | 0x998487 | 00,d6,19,fc,f0 | 単一パーツ | タイル214番(1面)パレット4、x,y座標-16-4 | |
| 3 | 0x99848c | 00,d9,19,fc,09 | 単一パーツ | タイル217番(1面)パレット4、x,y座標+9,-4 | |
| 4 | 0x998491 | c0 | 終端 | ||
| 54 | 0 | 0x9984c9 | 05,c6,11,f4,f8 | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x9984ce | 05,c4,11,e4,f8 | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-8,-28 | |
| 2 | 0x9984d3 | c0 | 終端 | ||
| 83 | 0 | 0x998702 | 00,c0,13,fc,fc | 単一パーツ | タイル192番(1面)パレット1、x,y座標-4,-4 |
| 1 | 0x998707 | c0 | 終端 | ||
| 84 | 0 | 0x998708 | 00,c1,13,fc,fc | 単一パーツ | タイル193番(1面)パレット1、x,y座標-4,-4 |
| 1 | 0x99870d | c0 | 終端 | ||
| 85 | 0 | 0x99870e | 00,d0,13,fc,fc | 単一パーツ | タイル208番(1面)パレット1、x,y座標-4,-4 |
| 1 | 0x998713 | c0 | 終端 | ||
| 86 | 0 | 0x998714 | 00,d1,13,fc,fc | 単一パーツ | タイル209番(1面)パレット1、x,y座標-4,-4 |
| 1 | 0x998719 | c0 | 終端 | ||
| 87 | 0 | 0x99871a | 05,c2,13,f8,f8 | 単一パーツ | タイル194番(1面)パレット1、16x16pxサイズ、x,y座標-8,-8 |
| 1 | 0x99871f | c0 | 終端 |
非殺傷落下物のギミック
このギミックは、船の揺れの時のみ発生します。
こちらは落下物ですが、接触してもミスにはならないただの視覚効果です。
同時に3オブジェクトを、スプライト情報を直接編集して管理します。スプライトIDは固定で6,7,8です。
こちらは落下物ですが、接触してもミスにはならないただの視覚効果です。
同時に3オブジェクトを、スプライト情報を直接編集して管理します。スプライトIDは固定で6,7,8です。
タイル情報は場所によって異なります。が、16x16pxサイズという点は共通しています。
| 種別情報 初期値 |
スプライトID | イメージ | ||
|---|---|---|---|---|
| 6 | 7 | 8 | ||
| 3 | タイル200番(1面) パレット0 |
![]() | ||
| 12 | タイル200番(1面) パレット0 |
![]() | ||
| 5 | タイル196番(1面) パレット0 |
タイル200番(1面) パレット0 |
タイル196番(1面) パレット0 |
![]() |
| 6 | タイル192番(1面) パレット0 |
![]() | ||
| 11 | タイル194番(1面) パレット6 |
タイル198番(1面) パレット0 |
タイル202番(1面) パレット0 |
![]() |
演出の完了を判断するフラグ ( $03b4 ) は、前項の落下物・非跳躍落下物と共有になっています。また、完了判断の基準値 ( $03ba ) は、非殺傷落下物だけなら 7、落下物もあるなら 15 と調整されています。
各オブジェクトの移動を司るのは 0x82b8f7 の処理です。一律移動速度は画面上y方向 5px/bf (+位置補正) で、画面上のx座標の初期値はランダム ( 0~15の乱数×16 )、y座標は -1 ですが、落下を始めるまでの猶予時間が散らしてあります。ID 6 は32bf、ID7,8 は 0~255bfのランダムです。外に出たら猶予時間 1bf にリセットされ、3回目の登場時点でそのオブジェクト分は演出終了と判断されます ( 3回目の演出はありません )。
外に出たという判断基準は、y座標240以上です。x座標は0~255の範囲でループするため、外に出たかどうかの判断には影響しません。
なお、演出回数は $1422~ から、猶予時間は $1428~、演出完了は $03b4 の下位3ビットで管理されます。
各オブジェクトの移動を司るのは 0x82b8f7 の処理です。一律移動速度は画面上y方向 5px/bf (+位置補正) で、画面上のx座標の初期値はランダム ( 0~15の乱数×16 )、y座標は -1 ですが、落下を始めるまでの猶予時間が散らしてあります。ID 6 は32bf、ID7,8 は 0~255bfのランダムです。外に出たら猶予時間 1bf にリセットされ、3回目の登場時点でそのオブジェクト分は演出終了と判断されます ( 3回目の演出はありません )。
外に出たという判断基準は、y座標240以上です。x座標は0~255の範囲でループするため、外に出たかどうかの判断には影響しません。
なお、演出回数は $1422~ から、猶予時間は $1428~、演出完了は $03b4 の下位3ビットで管理されます。
水流のギミック
このギミックは、対象の場所で常時表示されます。
また、ギミックの表示と共に、SE15番(水流)をサブBGM的にチャンネル7で鳴らし続けます。
このギミックは、管理データAの-4番 ( $0450~ ) を用いて表示を行います。表示IDに関しては 16~18 を使用し、2bf毎に切り替わります。
管理データを用いますが、地図上の座標は管理せず、画面上のx座標は位置補正のみを行い 355px周期でループ ( 結果画面外の数値になった場合は非表示 )、y座標は128pxで固定となります。
このx座標の初期値は場面切り替え時に乱数により決定されますが、初回の位置補正が切り替え前後の座標同士で行われるため、計算結果は予測し辛いものとなります。
また、ギミックの表示と共に、SE15番(水流)をサブBGM的にチャンネル7で鳴らし続けます。
このギミックは、管理データAの-4番 ( $0450~ ) を用いて表示を行います。表示IDに関しては 16~18 を使用し、2bf毎に切り替わります。
管理データを用いますが、地図上の座標は管理せず、画面上のx座標は位置補正のみを行い 355px周期でループ ( 結果画面外の数値になった場合は非表示 )、y座標は128pxで固定となります。
このx座標の初期値は場面切り替え時に乱数により決定されますが、初回の位置補正が切り替え前後の座標同士で行われるため、計算結果は予測し辛いものとなります。
また、この水流表示中に限り、姿勢情報 ( $0454 ) で毎bf左右反転フラグ ( 0x4000 の桁 ) の 0/1 を切り替えます。そのため、別の場所に移った時のフラグによって、他のギミックの表示が左右反転になる可能性があります。
| 表示 ID |
パーツ 順 |
アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|---|
| 16 | 0 | 0x998336 | 05,c0,19,2d,e1 | 単一パーツ | タイル192番(1面)パレット4、16x16pxサイズ、x,y座標-31,45 |
| 1 | 0x99833b | 05,c0,19,2d,f1 | 単一パーツ | タイル192番(1面)パレット4、16x16pxサイズ、x,y座標-15,45 | |
| 2 | 0x998340 | 05,c6,19,20,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,32 | |
| 3 | 0x998345 | 05,c6,19,10,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,16 | |
| 4 | 0x99834a | 05,c6,19,00,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,0 | |
| - | 0x99834f | 43,40,83,d0,00 | 参照 | アドレス0x998340、3パーツ、x,y座標±0,-48 | |
| 5 | 0x998340 | 05,c6,19,20,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-16 | |
| 6 | 0x998345 | 05,c6,19,10,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-32 | |
| 7 | 0x99834a | 05,c6,19,00,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-48 | |
| - | 0x998354 | 43,40,83,a0,00 | 参照 | アドレス0x998340、3パーツ、x,y座標±0,-96 | |
| 8 | 0x998340 | 05,c6,19,20,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-64 | |
| 9 | 0x998345 | 05,c6,19,10,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-80 | |
| 10 | 0x99834a | 05,c6,19,00,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-96 | |
| 11 | 0x998359 | 05,c6,19,90,f0 | 単一パーツ | タイル198番(1面)パレット4、16x16pxサイズ、x,y座標-16,-112 | |
| - | 0x99835e | c0 | 終端 | ||
| 17 | 0 | 0x99835f | 05,c2,19,2d,e1 | 単一パーツ | タイル194番(1面)パレット4、16x16pxサイズ、x,y座標-31,45 |
| 1 | 0x998364 | 05,c2,19,2d,f1 | 単一パーツ | タイル194番(1面)パレット4、16x16pxサイズ、x,y座標-15,45 | |
| 2 | 0x998369 | 05,c8,19,20,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,32 | |
| 3 | 0x99836e | 05,c8,19,10,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,16 | |
| 4 | 0x998373 | 05,c8,19,00,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,0 | |
| - | 0x998378 | 43,69,83,d0,00 | 参照 | アドレス0x998369、3パーツ、x,y座標±0,-48 | |
| 5 | 0x998369 | 05,c8,19,20,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-16 | |
| 6 | 0x99836e | 05,c8,19,10,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-32 | |
| 7 | 0x998373 | 05,c8,19,00,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-48 | |
| - | 0x99837d | 43,69,83,a0,00 | 参照 | アドレス0x998369、3パーツ、x,y座標±0,-96 | |
| 8 | 0x998369 | 05,c8,19,20,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-64 | |
| 9 | 0x99836e | 05,c8,19,10,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-80 | |
| 10 | 0x998373 | 05,c8,19,00,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-96 | |
| 11 | 0x998382 | 05,c8,19,90,f0 | 単一パーツ | タイル200番(1面)パレット4、16x16pxサイズ、x,y座標-16,-112 | |
| - | 0x998387 | c0 | 終端 | ||
| 18 | 0 | 0x998388 | 05,c4,19,2d,e1 | 単一パーツ | タイル196番(1面)パレット4、16x16pxサイズ、x,y座標-31,45 |
| 1 | 0x99838d | 05,c4,19,2d,f1 | 単一パーツ | タイル196番(1面)パレット4、16x16pxサイズ、x,y座標-15,45 | |
| 2 | 0x998392 | 05,ca,19,20,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,32 | |
| 3 | 0x998397 | 05,ca,19,10,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,16 | |
| 4 | 0x99839c | 05,ca,19,00,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,0 | |
| - | 0x9983a1 | 43,92,83,d0,00 | 参照 | アドレス0x998392、3パーツ、x,y座標±0,-48 | |
| 5 | 0x998392 | 05,ca,19,20,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-16 | |
| 6 | 0x998397 | 05,ca,19,10,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-32 | |
| 7 | 0x99839c | 05,ca,19,00,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-48 | |
| - | 0x9983a6 | 43,92,83,a0,00 | 参照 | アドレス0x998392、3パーツ、x,y座標±0,-96 | |
| 8 | 0x998392 | 05,ca,19,20,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-64 | |
| 9 | 0x998397 | 05,ca,19,10,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-80 | |
| 10 | 0x99839c | 05,ca,19,00,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-96 | |
| 11 | 0x9983ab | 05,ca,19,90,f0 | 単一パーツ | タイル202番(1面)パレット4、16x16pxサイズ、x,y座標-16,-112 | |
| - | 0x9983b0 | c0 | 終端 |
結局、左右反転も併せると、次のように6状態をループします。( 左右反転あり・なしが逆転することもあります )
なお、赤は基準線、上下の黒線は画面端です。なので、下端の水たまり部分は通常見えません。
なお、赤は基準線、上下の黒線は画面端です。なので、下端の水たまり部分は通常見えません。

水滴のギミック
このギミックは、対象の場所で常時表示されます。
水滴の個数は $03a8 で管理されますが、一律6個と固定されています。スプライトの情報を直接操作するタイプで、対応するスプライトIDも 6~11 と固定されています。
水滴には、タイル192番(1面)パレット0、16x16pxサイズが共通で使用されます。実際のオブジェクトは次のようなものです。
水滴の個数は $03a8 で管理されますが、一律6個と固定されています。スプライトの情報を直接操作するタイプで、対応するスプライトIDも 6~11 と固定されています。
水滴には、タイル192番(1面)パレット0、16x16pxサイズが共通で使用されます。実際のオブジェクトは次のようなものです。

各水滴は 4px/bf で落下し、別途位置補正を行います。水滴の y 座標は 0~255px でループし、241~255px の時に x 座標がランダムに ( 0~15の乱数×16で ) 再設定されます。この時、y座標が 241 丁度であれば、揺れが発生していない限り、SE27番の「水滴」が鳴ります。これは複数のチャンネルで多重に鳴ることもあります。
なお、x 座標の設定に関して、12/256 の確率で 255 に設定され、非表示状態になります。
このランダムなケース以外でも、位置補正によって偶然 x 座標が 255 になった場合は、再設定が行われるまで非表示になります。( 位置補正の対象外になります )
なお、x 座標は 0~255 の範囲でループするため、255以外の値で範囲外になって非表示になる、ということはありません。
なお、x 座標の設定に関して、12/256 の確率で 255 に設定され、非表示状態になります。
このランダムなケース以外でも、位置補正によって偶然 x 座標が 255 になった場合は、再設定が行われるまで非表示になります。( 位置補正の対象外になります )
なお、x 座標は 0~255 の範囲でループするため、255以外の値で範囲外になって非表示になる、ということはありません。
各水滴の初期位置は、画面転換時に固定で設定されます。それぞれ (16,64),(160,16),(192,160),(18,128),(71,115),(16,192) です。ただし、初回の位置補正が移動前後の座標の比較で行われるため、大きく座標が変化し、かつ予測し辛いものとなっています。
炎のギミック
炎のギミックは表エリア中層でのみ発生し、管理データAの-4番目~-2番目で3つのオブジェクトとして管理されます。
表エリア中層に入ると、SE24番の「火災」がサブBGM的にチャンネル7で鳴らされ続けます。
また、このオブジェクトに主人公が接触するとミスになります。判定基準は画面上の座標にしてx座標13px以内、y座標7px以内です。接触時はSE25番の「焼身」が鳴ります。
また、このオブジェクトに主人公が接触するとミスになります。判定基準は画面上の座標にしてx座標13px以内、y座標7px以内です。接触時はSE25番の「焼身」が鳴ります。
他のギミックと異なり、地図上の配置座標は完全に固定されています。しかし、中層の炎オブジェクト全ての情報を保持することはできないため、ブロック毎に座標情報を切り替えます。その関係か、炎は各ブロックの船首側半分にしかありません。
座標の設定は、画面切り替えに伴うギミックの初期化時か、遷移地帯 ( ブロックの船尾側端からのx座標差分 +116px~+134px の範囲 ) にいる時に行われます。前者の場合、ブロックの船尾側端から128px未満であれば、隣(船尾側)のブロックの分を、それ以外は今いるブロックの分を、後者の場合、船尾側に移動中は隣(船尾側)のブロックの分を、静止もしくは船首側に移動中は今いるブロックの分を設定します。
※そのため、遷移地帯では移動状況で画面端の方にある炎が消えたり出たりするように見えることがあります。
なお、各炎の座標の一覧は次の通りです。
※0x82bed6~の値を、px単位の相対座標に変換しています。x座標はブロックの中間からの差分です。( x座標が小さいのは船尾側、y座標が小さいのは上層側 )
座標の設定は、画面切り替えに伴うギミックの初期化時か、遷移地帯 ( ブロックの船尾側端からのx座標差分 +116px~+134px の範囲 ) にいる時に行われます。前者の場合、ブロックの船尾側端から128px未満であれば、隣(船尾側)のブロックの分を、それ以外は今いるブロックの分を、後者の場合、船尾側に移動中は隣(船尾側)のブロックの分を、静止もしくは船首側に移動中は今いるブロックの分を設定します。
※そのため、遷移地帯では移動状況で画面端の方にある炎が消えたり出たりするように見えることがあります。
なお、各炎の座標の一覧は次の通りです。
※0x82bed6~の値を、px単位の相対座標に変換しています。x座標はブロックの中間からの差分です。( x座標が小さいのは船尾側、y座標が小さいのは上層側 )
| ブロック |
1番目 | 2番目 | 3番目 | 備考 | |||
|---|---|---|---|---|---|---|---|
| x座標 | y座標 | x座標 | y座標 | x座標 | y座標 | ||
| KL(9) | 229 | 69 | 201 | 63 | 213 | 156 | 下段、船首側隣接ブロックへつながる部分と、中段の船首側壁近く |
| IJ(10) | 8 | 264 | 1番目と同じ | 中段、船尾側ブロックとの境界付近 | |||
| GH(11) | 164 | 227 | 139 | 238 | 116 | 228 | 中段、通路の中間 |
| EF(12) | 8 | 264 | 1番目と同じ | 中段、船尾側壁際 | |||
| CD(13) | 32 | 378 | 73 | 390 | 9 | 391 | 上段、売店#2入り口から船首側 |
| AB(14) | 14 | 236 | 33 | 222 | 74 | 229 | 中段、制御室入り口付近 |
各オブジェクトは、表示ID12~15を2bf間隔で切り替えて表示します。ただし、初期値が12,13,14と分散されています。
表示イメージ ( 赤は基準線、緑は当たり判定 ) および、各表示IDでのパーツ情報は以下の通りです。
※上下の判定が薄いので、上半身を炎に突っ込んでも、足が上のパーツにかすってもミスになりません。
表示イメージ ( 赤は基準線、緑は当たり判定 ) および、各表示IDでのパーツ情報は以下の通りです。
※上下の判定が薄いので、上半身を炎に突っ込んでも、足が上のパーツにかすってもミスになりません。

| 12 | 0 | 0x82f6 | 05,c4,11,f8,f2 | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-14,-8 |
| 1 | 0x82fb | 05,c6,11,f8,fe | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-2,-8 | |
| 2 | 0x8300 | 05,c0,11,ee,f8 | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-8,-18 | |
| 3 | 0x8305 | c0 | 終端 | ||
| 13 | 0 | 0x8306 | 05,c6,11,f8,f2 | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-14,-8 |
| 1 | 0x830b | 05,c0,11,f8,fe | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-2,-8 | |
| 2 | 0x8310 | 05,c2,11,ec,f8 | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-8,-20 | |
| 3 | 0x8315 | c0 | 終端 | ||
| 14 | 0 | 0x8316 | 05,c0,11,f8,f2 | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-14,-8 |
| 1 | 0x831b | 05,c2,11,f8,fe | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-2,-8 | |
| 2 | 0x8320 | 05,c4,11,ea,f8 | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-8,-22 | |
| 3 | 0x8325 | c0 | 終端 | ||
| 15 | 0 | 0x8326 | 05,c2,11,f8,f2 | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-14,-8 |
| 1 | 0x832b | 05,c4,11,f8,fe | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-2,-8 | |
| 2 | 0x8330 | 05,c6,11,ec,f8 | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-8,-20 | |
| 3 | 0x8335 | c0 | 終端 |
爆発のギミック
爆発のギミックは、処理的に炎と共通する部分がありますが、常時表示でない点、ミス判定のないこと等が異なります。
炎と同様、管理データAの-4~-2番目の3つのオブジェクトを、表示ID71~78のローテーションで用います。そのため、この3つのオブジェクトは次のように部分的には同じ見た目です。

全体としては、最初に-4番目管理のオブジェクトが表示を始めてから、時間差で-3番目、-2番目もその周囲で表示を始めることで、複合した爆発を演出します。タイミングや位置等は次のように管理されています。
- 全体
- 演出がない状態で、毎bf 2/256 の確率で演出が発生します。
- 発生時、SE 12,13番(爆発音A1/A2) が鳴らされます。前者はチャンネル7が使用されます。
- 発生の次のbfから表示が始まり、262bf(約8.7秒)演出が続いた後、17bf無表示となってから演出がなくなります。
- 管理データ-4番目
- 発生の次のbfに最初に発生し、5bf間隔で表示ID71~78を繰り返します。
※最初の表示ID71のみ持続は4bfです。 - 発生時に地図上の配置座標がランダムに4か所から選ばれます。しかし、バグによりうち2か所は表示不可になっています。
有効な座標 ( y座標のベース1536分を除く ) はpx単位で (320.5,179.5),(464,239) で、いずれも部屋の船首側、真ん中よりやや上層側です。
※各発生場所の座標は共通化されていることに注意。
- 発生の次のbfに最初に発生し、5bf間隔で表示ID71~78を繰り返します。
- 管理データ-3番目
- 発生から121bf後に表示が始まり、4bf間隔で表示ID71~78を4周します。
1周目の表示ID71と4周目の表示ID78は持続が3bfです。 - 配置座標は管理データ-4番目基準に決定します。
px単位の相対座標は発生順に (0,-32),(32,0),(0,32),(-32,0)です。
※水平時は、下→左→上→右の順に発生するように見えます。
- 発生から121bf後に表示が始まり、4bf間隔で表示ID71~78を4周します。
- 管理データ-2番目
- 発生から136bf後に表示が始まり、4bf間隔で表示ID71~78を4周します。
1周目の表示ID71と4周目の表示ID78は持続が3bfです。 - 配置座標は管理データ-4番目基準に決定します。
px単位の相対座標は発生順に (18,-18),(18,18),(-18,18),(-18,-18)です。
※水平時は、左下→左上→右上→右下の順に発生するように見えます。
- 発生から136bf後に表示が始まり、4bf間隔で表示ID71~78を4周します。
以下、全体の演出の推移イメージおよび、パーツ配置情報の表です。
※イメージ中の赤・オレンジ・黄は、それぞれ-4,-3,-2番目の基準線です。
※イメージ中の赤・オレンジ・黄は、それぞれ-4,-3,-2番目の基準線です。

| 表示 ID |
パーツ 順 |
アドレス | バイト並び(16進) | 分類 | 内容 |
|---|---|---|---|---|---|
| 71 | 0 | 0x8688 | 05,c0,11,f4,f8 | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-8,-12 |
| 1 | 0x868d | c0 | 終端 | ||
| 72 | 0 | 0x868e | 05,c2,11,f3,f9 | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-7,-13 |
| 1 | 0x8693 | 05,c0,11,fa,fa | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-6,-6 | |
| 2 | 0x8698 | c0 | 終端 | ||
| 73 | 0 | 0x8699 | 05,c4,11,f2,fb | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-5,-14 |
| 1 | 0x869e | 05,c2,11,fb,fb | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-5,-5 | |
| 2 | 0x86a3 | 05,c0,11,f8,f4 | 単一パーツ | タイル192番(1面)パレット0、16x16pxサイズ、x,y座標-12,-8 | |
| 3 | 0x86a8 | c0 | 終端 | ||
| 74 | 0 | 0x86a9 | 05,c6,11,f1,fd | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-3,-15 |
| 1 | 0x86ae | 05,c4,11,fd,fd | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-3,-3 | |
| 2 | 0x86b3 | 05,c2,11,f9,f3 | 単一パーツ | タイル194番(1面)パレット0、16x16pxサイズ、x,y座標-13,-7 | |
| 3 | 0x86b8 | c0 | 終端 | ||
| 75 | 0 | 0x86b9 | 05,c8,11,f2,00 | 単一パーツ | タイル200番(1面)パレット0、16x16pxサイズ、x,y座標0,-14 |
| 1 | 0x86be | 05,c6,11,00,ff | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-1,0 | |
| 2 | 0x86c3 | 05,c4,11,fb,f2 | 単一パーツ | タイル196番(1面)パレット0、16x16pxサイズ、x,y座標-14,-5 | |
| 3 | 0x86c8 | c0 | 終端 | ||
| 76 | 0 | 0x86c9 | 05,ca,11,f4,04 | 単一パーツ | タイル202番(1面)パレット0、16x16pxサイズ、x,y座標4,-12 |
| 1 | 0x86ce | 05,c8,11,03,01 | 単一パーツ | タイル200番(1面)パレット0、16x16pxサイズ、x,y座標1,3 | |
| 2 | 0x86d3 | 05,c6,11,fd,f0 | 単一パーツ | タイル198番(1面)パレット0、16x16pxサイズ、x,y座標-16,-3 | |
| 3 | 0x86d8 | c0 | 終端 | ||
| 77 | 0 | 0x86d9 | 05,ca,11,07,03 | 単一パーツ | タイル202番(1面)パレット0、16x16pxサイズ、x,y座標3,7 |
| 1 | 0x86de | 05,c8,11,00,ee | 単一パーツ | タイル200番(1面)パレット0、16x16pxサイズ、x,y座標-18,0 | |
| 2 | 0x86e3 | c0 | 終端 | ||
| 78 | 0 | 0x86e4 | 05,ca,11,04,ec | 単一パーツ | タイル202番(1面)パレット0、16x16pxサイズ、x,y座標-20,4 |
| 1 | 0x86e9 | c0 | 終端 |
ボイラー室内演出
概要
ボイラー室の演出で用いるスプライト操作も、非キャラクター表示の一種ではあるのですが、扱いがまた異なるため別章に分けました。
ボイラー室では、場所や時間に応じて細かく言うと11段階の進行度 ( $14c4で管理 ) があり、それぞれでスプライト・BGを絡めた演出があります。が、ここではBGの詳細は省きます。
スプライトの管理には、管理データA-4番 ( $0450~ ) 以降の領域を用いますが、構成は前述の非キャラクター表示の時とは異なります。最大で10個のスプライトを用い、画面上のx座標を $0450~$0463、y座標を $0464~$0477 で管理し、直接スプライトの座標に反映します。このとき、非キャラクター表示であったように、主人公の移動に合わせた位置補正も行われます。
また、一部オブジェクトについては速度を $048c~$049f、オブジェクトの状態を $13f2~$1405 で管理します。
ボイラー室では、場所や時間に応じて細かく言うと11段階の進行度 ( $14c4で管理 ) があり、それぞれでスプライト・BGを絡めた演出があります。が、ここではBGの詳細は省きます。
スプライトの管理には、管理データA-4番 ( $0450~ ) 以降の領域を用いますが、構成は前述の非キャラクター表示の時とは異なります。最大で10個のスプライトを用い、画面上のx座標を $0450~$0463、y座標を $0464~$0477 で管理し、直接スプライトの座標に反映します。このとき、非キャラクター表示であったように、主人公の移動に合わせた位置補正も行われます。
また、一部オブジェクトについては速度を $048c~$049f、オブジェクトの状態を $13f2~$1405 で管理します。
各進行度と演出内容、切り替えタイミングの概要は次の通りです。
| 段階 | $14c4 の値 |
演出内容 | 切り替えタイミング |
|---|---|---|---|
| 0 | 0 | 水滴 | 切り替え高度に登るまで |
| 1 | 1 | 水滴(蒸発付き) | 切り替え高度に登るまで |
| 2 | 2 | 水蒸気 | 水蒸気が上って下りるまで |
| 3 | 3 | なし | 切り替え高度に登るまで |
| 4 | 4 | 点滅 | 演出が終わって暗闇になるまで |
| 5 | 5~299 | 暗闇 | 時間経過(295bf) |
| 6 | 300 | 爆発音 | 次bf自動的に切り替え |
| 7 | 301 | 炎吹き上げ | 既定の個数吹き上がるまで |
| 8 | 302 | 炎落下準備 | 次bf自動的に切り替え |
| 9 | 303 | 炎落下 | 既定の個数落下するまで |
| 10 | 304 | 燃える背景 | 以降ずっと継続 |
水滴の演出
段階0~2で発生します。
段階0はボイラー室入室時点から、段階1はスタート地点から72px上のポイントまで登った時、段階2は更に64px上のポイントまで登った時に切り替わります。段階2切り替わり時は、SE22番の「水蒸気」が鳴ります。
なお段階2は、段階1での再生成が無効化されるだけです。( 段階2の演出のメインはBGの方です )
段階0はボイラー室入室時点から、段階1はスタート地点から72px上のポイントまで登った時、段階2は更に64px上のポイントまで登った時に切り替わります。段階2切り替わり時は、SE22番の「水蒸気」が鳴ります。
なお段階2は、段階1での再生成が無効化されるだけです。( 段階2の演出のメインはBGの方です )
以下、段階0,1での共通点です。
- スプライトの4~9番の6個のオブジェクトを使用します。
- 落下速度は一律 6px/bf で、$048c~での速度管理は行いません。
- x,y座標が0~255pxの範囲にない場合は非表示扱いにします。
- y座標が240以上になったら再生成し、x座標は0~255のランダム、y座標は管理順(0~5)×2の値に設定されます。
- タイル番号204番(1面)パレット4、16x16pxサイズのタイルを使用します。
ボイラー室入室時の初期座標は (64,16),(18,128),(148,192),(192,64),(88,230),(167,166) ですが、最初の位置補正で x座標に -24 の補正が入ります。その後、画面暗転中から落下及び視点移動による座標移動が発生します。
段階1での違いは次の通りです。
- 床に接触するとSE25番「焼身」が鳴ります。
※実際にキャラがミスになるわけではありません - $13f2~の状態を管理し、接触前の水滴状態の 0 から、上位バイトをカウンタ、下位バイトをグラフィックの変化度として扱います。
- 前項の状態管理により、4bf間隔で表示するタイル番号を 192→194→196→198→200→202 と変化させ、次の変化時に再生成となります。
※これにより、水滴が蒸発して消える演出となります。
以下段階1,2で床に接触して蒸発する際のイメージです。段階0や、また段階1,2でも接触なしで落下した場合は蒸発部分の演出はありません。

炎の演出
段階3でスタート地点から520px上の地点を通過すると、段階4の点滅が発生し、終了後に段階5で295bfの暗闇が続いてから段階6の爆発音が発生します。これはSE12,13番の「爆発音A1/A2」が同時に鳴らされます。
続いて段階7で炎の吹き上げ、次の次の段階9で炎の落下が発生します。
続いて段階7で炎の吹き上げ、次の次の段階9で炎の落下が発生します。
炎そのものは、どちらもタイル番号192,194,196,198番(1面)パレット0、16x16pxサイズを、$13f2~ をカウンタとして 2bf間隔で繰り返すものですが、吹き上げと落下では次のような違いがあります。
- 吹き上げ
- 単なる視覚効果で、接触してもミスになりません。
- 4~13の10個のスプライトを全て使用、60個のオブジェクトが外に出た時点で生成終了、そこから10個出た時点で演出終了です。
※最初の10個は x座標的に見えない場所に配置されるため、見えるのは実質計60個です。 - x方向の速度は、スプライトの番号順に 5,4,…,-3,-4px/bf の10通りでそれぞれ固定です。
- y方向の速度は $048c~ で上向きの数値を管理、初速は 19px/bf、2bf毎に 1px/bfずつ減速します。
※この 2bf は $048c~ の上位バイトをカウンタとして使用します。 - y座標が 0 以下になると外に出たと判定され、再設置されます。
その際の x座標はランダムに 80~143、y座標はランダムに 255~270(画面の下に湧く扱い) です。 - 初期配置の y座標はそれぞれ、16,128,192,64,230,166,32,80,64,224 です。
- 落下
- 接触するとミスとなります。範囲は、オブジェクトの座標 ( スプライトの左上の端 ) から x座標±8px、y座標±32px以内です。
※見た目よりも、左と上にやや偏った当たり判定になります。 - 4~6の3個のスプライトのみを使用し、12個のオブジェクトが外に出た時点で生成終了、そこから3個出た時点で演出終了です。
※最初の3個は x座標的に見えない場所に配置されるため、見えるのは実質12個以下です。 - x方向の速度は、1px/bf で固定です。
- y方向の速度は $048c~ で下向きの数値を管理、初速は 1px/bf、5bf毎に 1px/bfずつ加速します。
※この 5bf は $048c~ の上位バイトをカウンタとして使用します。 - y座標が 240 以上になると外に出たと判定され、再設置されます。
その際の x座標はランダムに 0~255、y座標はスプライトの管理順に0,1,2です。
※x座標の値によっては、一切画面に見えないことがあります。 - 初期配置の y座標はそれぞれ、16,128,192 です。
- 接触するとミスとなります。範囲は、オブジェクトの座標 ( スプライトの左上の端 ) から x座標±8px、y座標±32px以内です。
以下、炎のイメージです。オレンジ線は落下時の当たり判定を表します。

次は、プレイ時の画面サイズに合わせて、横を約17%引き延ばしたものです。
スプライト4番 ( 発生時 y座標 0 ) が左端 ( x座標 0 ) で発生した場合の、炎の動きと当たり判定のシミュレーションです。主人公は足場の上で動いていないものとします。
主人公の足元の赤い点がオレンジの当たり判定に入るとミスなので、炎のオブジェクトがかなり下に降りてきて、腹の高さくらいでやっと当たるようになります。頭くらいだと当たりません。逆に、床下に通り過ぎて行ってもまだ当たり判定は残ってます。かつ、炎の左の何もないような空間にいても当たることが分かります。
具体的には、発生時は画面の上で見えなくいので次bf(x座標1)で下の端がわずかに映ったところを基準とすると、27bf後~35bf後の9bf間に当たる高さにきて、x座標20~40の25pxの範囲でミスになる、ということになります。( 各bfでの当たり判定の幅は17px )
スプライト4番 ( 発生時 y座標 0 ) が左端 ( x座標 0 ) で発生した場合の、炎の動きと当たり判定のシミュレーションです。主人公は足場の上で動いていないものとします。
主人公の足元の赤い点がオレンジの当たり判定に入るとミスなので、炎のオブジェクトがかなり下に降りてきて、腹の高さくらいでやっと当たるようになります。頭くらいだと当たりません。逆に、床下に通り過ぎて行ってもまだ当たり判定は残ってます。かつ、炎の左の何もないような空間にいても当たることが分かります。
具体的には、発生時は画面の上で見えなくいので次bf(x座標1)で下の端がわずかに映ったところを基準とすると、27bf後~35bf後の9bf間に当たる高さにきて、x座標20~40の25pxの範囲でミスになる、ということになります。( 各bfでの当たり判定の幅は17px )

その他
その他、電源ON/リセット直後から、ゲーム開始においても10種類のスプライト情報が用意されており、うち8種類が使用されています。
表示の仕方は非キャラクター表示に準じ、管理データAの-4番目が使われますが、先頭16個という個数上限はありません。
パーツ配置のアドレスは、0x948010~に登録されています。
なお、基準座標は(128,128)に固定されており、タイルもOP時専用のものが使用されます。( 以下10種類でタイルは共通です )
表示の仕方は非キャラクター表示に準じ、管理データAの-4番目が使われますが、先頭16個という個数上限はありません。
パーツ配置のアドレスは、0x948010~に登録されています。
なお、基準座標は(128,128)に固定されており、タイルもOP時専用のものが使用されます。( 以下10種類でタイルは共通です )
- 0番目 … ベンダロゴ
電源ON/リセット直後に表示されるロゴです - 1~6番目 … スタッフ表示
OPデモ中のスタッフ表示です。 - 7番目 … 不使用です。
- 8番目 … キャラセレ後の導入メッセージです。
- 9番目 … 不使用です。
添付ファイル
- motion-base0.png
- motion-base1-c.gif
- motion-base1.gif
- motion-base2.gif
- motion-base3.gif
- motion-base4.png
- motion-base5.gif
- motion-base6.gif
- motion-base7.gif
- motion-base8.gif
- motion-base9.gif
- motion-botsu.gif
- motion-cap-epilogue.gif
- motion-dead.png
- motion-drink.gif
- motion-hit-hero.gif
- motion-hit-npc.gif
- motion-jef-epilogue.gif
- motion-recv.gif
- motion-standup.gif
- nc-boiler-drop.gif
- nc-boiler-fire-trace.gif
- nc-boiler-fire.gif
- nc-book.gif
- nc-bottle.gif
- nc-box.gif
- nc-chair.gif
- nc-dish.gif
- nc-drop.png
- nc-dumbbell.gif
- nc-dust.gif
- nc-exp-full.gif
- nc-exp-single.gif
- nc-fire.gif
- nc-holemob-ipos.png
- nc-holemob-poses.gif
- nc-map-icon-colors.gif
- nc-map-icon.png
- nc-marker.png
- nc-nf-fall-03.png
- nc-nf-fall-05.png
- nc-nf-fall-06.png
- nc-nf-fall-11.png
- nc-nf-fall-12.png
- nc-op-sprites.gif
- nc-violin.png
- nc-wfall.gif
- sprite-sample.png
- tile-ausage-sample.png
- tile-bar.png
- tile-captain-head.png
- tile-dance.png
- tile-gun.png
- tile-hit.png
- tile-prologue-items.png
- tile-violin.png


































