わどるDAILY

つれづれと

KDL3TASについてあれこれ(知識編)

星のカービィ3(以下KDL3)について自分用にメモしてたもの

知名度的にも)内容が分からない人が大半だと思うので、本格的にやり込む人向けです

ROMに関して

  • KDL3は日本語版・英語版の2言語があり、カセット版ではバージョンはそれぞれ1つしか確認されていない。この2言語における差は実は殆どない。(ヘッダ情報を除いて12バイト)
  • その差でどうやってタイトル画面その他の情報を変えてるのかと言うと、ROMヘッダにある国コードを切り替えるだけで全て変わってるのである。すごい
  • WiiVC、WiiUVC、カビコレ収録版ではぼすぶっちダークマター戦において背景色が修正されている。他の違いは不明。

走法

  1. 位置・速度に関する仕様
    • カービィ・グーイ・マップ内に存在する仲間の位置・速度は個別に管理されている。
    • スプライトのX座標・Y座標はピクセル単位・サブピクセル単位でそれぞれ表される。
    • このゲームでは256サブピクセル=1ピクセルであり、サブピクセルが座標・速度の最小単位となる。
  2. 各プレイヤーのアクション・速度情報(X速度)
    1. 停止からの移動
      • 地上では立ち状態から左右キーを4F以上押下して初めて移動する。
    2. 歩行(クー以外)
      • 加速度8→速度40以降加速度16
      • リック以外氷上で加速度が4、速度40以降8になる。
      • 256を超えると次のFで256固定
      • 歩行中に左右キーを離しても10Fは同じ方向に歩行し続ける(ダッシュ受付猶予F)
      • カインはダッシュ受付猶予Fが終わると静止。
    3. ダッシュ(クー以外)
    4. 地上減速
      • 歩行・ダッシュ中に左右キーを離すと減速。
      • 減速度は一律40(氷上では8)。速度が0以下になると次Fで0に戻る。
      • パラソルを差していると減速度が2倍。
    5. 方向転換
      • 向いてる方向と逆方向にキー入力すると方向転換。
      • 方向転換にはモーションが入り、入力8F後に完全に方向転換する。
      • ナゴの空中ジャンプ中のみ、1Fで方向転換が出来る。
      • 方向転換中はしゃがみ入力が出来ない。
      • なお、方向転換開始時点で既に逆方向を向いてる扱いになるので、星型弾やコピー技はすぐ逆方向に出せる。
    6. 空中移動
      • 地上と違ってX速度0からでもキー入力ですぐに横移動出来る。
      • 加速度はDJ無し・有り共に40。
      • 最高速度は地上と同じでDJ無し256、DJ有り512。
      • DJの場合、空中でX速度が0になってもDJ状態は続く。
      • カインのダッシュは跳ねるため、一定間隔毎に空中移動になる。(具体的には地上4F→Y初速度224で跳ねる)
    7. ホバリング・空気弾(カービィ・グーイ)
      • ホバリング開始時にX速度が0になる。
      • ホバリング中は加速度32、最高速度256。
      • 空気弾発動時も同様にX速度が0になり、18F間操作が出来ない。
      • ただし、パラソルを差してる時は空気弾中も速度が維持される。
    8. 空中減速
      • 左右キーニュートラルの場合、緩やかにX速度が下がる。
      • カービィ・グーイの場合は減速度16、クー以外の仲間との合体時は減速度8。
    9. スライディング(カービィ・グーイ)
      • しゃがみ中にB入力で発動。
      • 発動→速度704(16F)→以降40ずつ減速(氷上では8)
      • 発動32F後に速度0で静止。
      • スライディング中に空中状態になるとそれまでのX速度を引き継ぐ。
    10. 低速飛行(クー)
      • 左右キーのみを押しての飛行。地上歩行と同じくキー入力4F後から移動するが、左右キーを離すと即減速。
      • 加速度・減速度共に32で最高速256
    11. 高速飛行(クー)
      • 左右キー+Bボタンでの飛行。Bボタンを押して1F後に押していたキーの方向へ飛ぶ。
      • 左右のみの入力の場合、736(6F)→576(6F)→以降減速
      • 斜め入力の場合、512(6F)→384(6F)→以降減速
    12. 飛行(ピッチ)
  3. 各プレイヤーのアクション・速度情報(Y速度)
    1. 重力
      • 落ちる時の重力は32、最高速1024。
      • クー以外で共通。
    2. 地上ジャンプ(クー・カイン以外)
      • Bボタン押すと初速度896のジャンプ。その後Bを離すタイミングで初速度が入れ替わる。
      • 0~3F:512 4~7F:704 8F以降:そのまま
      • なお、この入れ替わる初速度はジャンプ後からのFによる減速分を含めない。
      • つまり、ジャンプ3F後にBを離した場合は512-3*32=416になって入れ替わる。
      • この初速度入れ替わりの仕様により、地上ジャンプの高さは大きく分けて3段階あることになる。
    3. 地上ジャンプ(カイン)
      • Bボタン押すと初速1120のジャンプ。Bを押したままだと減速度32。
      • Bを離すとY速度が0になるまで(前の速度-32)×0.8で減速する。0になって以降は32ずつ。
      • カインは跳ねながら移動するが、Y速度が320以上になるまでは空中でもジャンプが出来る。
    4. ホバリング・空気弾(カービィ・グーイ)
      • ホバリング開始時から
      • -512(4F)→-256(6F)→0(6F)→64(6F)128(6F)→以降192
      • でY速度が変化。パラソルを差している場合は
      • -512(6F)→-256(6F)→0(6F)→32(6F)→64(6F)→以降128になる。
      • 空気弾は出した瞬間Y速度0になる。(パラソルを差している場合は直前の速度を維持、その後加速度16・最高速度128の落下。
    5. ホバリング(チュチュ)
      • ホバリング開始時4Fは速度0、その後はホバリング回数によって初速度が変わる。
      • 1回目:736 2回目:608 3回目:416 4回目:224
    6. 飛行(ピッチ)
      • 空中でBを押すと飛行状態になるが、この中で飛行してない状態からの初回飛行と、飛行中にBを押すことでの継続飛行でY速度に関する仕様が異なる。
      • 初回飛行:(-96→-64→-32→)-480→以降32ずつ加速→192→飛行落下128
      • 継続飛行:-512(4F)→-256(4F)→0(4F)→飛行落下128
      • 見ての通り継続飛行の方がより高く飛べるが、ここで注意したいのは初回飛行で速度128になる前にBを押しても再び初回飛行の速度で飛んでしまう仕様である。
      • この場合、()内の速度は省略されるが、16F以内の間隔で連打してる限りは初回飛行を続けることになる。
      • 初回飛行は連打間隔が遅ければ継続飛行よりも高く飛べるが、最速を狙うと継続飛行の方が結果的に高く飛べることがある。
      • とはいえ現在はピッチの飛行をタイムアタックで使うことはほぼないので気にするほどでもない・・・かもしれない。
      • 飛行落下(速度128)は下入力で256に変化。

テクニック

  1. 空中3/4走法(カービィ・グーイ)
    • ジャンプ中、横移動によってX速度が1Fだけ最高速を上回る仕様(?)を利用した走法。KDL3TASにおいて非常に重要。
  2. 地上1/1走法(クー・カイン以外)
    • 地上で移動する場合、減速度の都合でこちらを使う。
    • が、普通のダッシュと速度が変わらない。3/4走法で着地した時に少しの間だけ使う。
  3. 空中1/5走法(クー以外の仲間)
    • 仲間はカービィ・グーイより空中減速度が低いため、この走法になる。
    • カービィ・グーイより平均速度が高い。

乱数

  1. 変数とアドレス
    • CARTRAMの0x6046から2バイトが乱数のIDの役目を果たす。
    • ひとつ乱数を消費する毎に1増えて、1023に達したら0に戻る。
    • この乱数IDによってランダムな行動が決定される。
    • つまり同じ乱数IDからは同じ結果が返ってくる。
    • ループの短さから乱数テーブルがROMのどこかに格納されてると考えられる。
  2. 主な利用方法
    1. ゴールゲーム
      • ゴールゲームはプレイヤーが所定位置に着いた後数Fの強制待ち時間が設けられる。
      • これは乱数によって0~15Fの間で変わり、待ち時間0Fで最速でゴールゲームを終わらせることが出来る。
      • また、ゴールゲームに並ぶアイテムの順序も乱数であり、ダメージを受けやすいTASではロスなく回復するために調整できる。
    2. ミニゲーム
      • 各レベルのステージ3にあるミニゲーム
      • 回答に関わる要素のほとんどが乱数であり、最速のためにこの乱数調整が必要。
    3. ボス・中ボスの行動
  3. 乱数調整のための行動
    1. 各プレイヤー・仲間の読み込み
      • カービィ・グーイ・仲間がマップ内に現れるとそれぞれ乱数を1つ消費。
      • 具体的にはステージ開始・エリア移動の暗転後にカービィだけだった場合は1つ消費、仲間と合体したカービィのみの場合は2つ消費といった具合。
      • グーイを産んだ時にも乱数を1つ消費(CPの場合は2つ消費)。
    2. 衝突時の星
      • 着地・天井にぶつかる・(一部の仲間除き)壁にぶつかることで生じる小さな星。
      • 乱数を1つだけ消費するので調整がしやすい。
    3. カサカサ虫
      • タチカビでの呼称。黒い小さな物体。
      • 毎F乱数を消費する(しなくなることも)
      • 適切なタイミングで潰す、スクロールアウトさせることで幅広い乱数調整が可能。
      • 白い方は乱数を消費しない。
    4. 蝶・綿毛
      • 触れて飛び立つと一定F毎に乱数を消費。
      • こちらも幅広い乱数調整が可能。

ラグ除去

1人プレイの時は滅多に起こらない。2人プレイの時に時々起こるくらい。

とはいえ出来るだけラグは無くしたいので主な要因を記す。

  1. 仲間乗り換え時のスクロール
    • 片方のプレイヤーが合体している仲間をぶんどること。
    • この時に起こるカメラ座標の書き換えが結構な負荷らしく、頻繁に乗り換えをしてるとラグが起こりやすい。
    • 全方向スクロールのマップだと顕著。画面固定とか強制スクロールなら殆ど起こらない。
  2. 攻撃判定・食らい判定
    • どちらもラグを起こす要因となる。特に仲間乗り換えは強制的にジャンプ頭突きが発生する。これはホバリングで攻撃判定を消して防げる。
    • 一部の仲間は踏みつけ判定によりジャンプ中は常に攻撃判定が出るのでラグの原因となる。
    • 食らい判定は基本的に常に存在するが、ダメージ無敵やスペースジャンプ中は消える。
  3. 敵スプライト
    • 当然ながら敵の数が多いとラグが発生しやすい。
    • コモ(蜘蛛のザコ敵) … 糸を引く関係か非常にラグを起こしやすい
    • ブキセット … 飛び道具を出すなど、割とラグの原因
  4. 半透明レイヤー
    • マップの手前に表示される半透明の前景。
    • 特殊な描画がされてるためか、これがあるマップでは多少ラグが起こる。対策は無い。
  5. 円ワイプ
    • ステージ開始時やマップ移動時に真っ黒な画面から円形に広がっていくアレ。
  6. 強風
    • 強風のエフェクト。これが多い4-2や4-4は非常に精密なラグ除去が求められる。
    • きらい。
  7. 無敵状態
    • 無敵キャンディを取った時の無敵状態。
    • そもそもこのゲーム無敵キャンディがほとんどない。TASでも1-4でしか取らない。