エミュレータに関する話です。
テトリスプラスとは、1995年にジャレコから発売されたアーケードゲームであり、1996年にPS1、セガサターン、ゲームボーイ版が発売されています。
読んで字のごとくテトリスで、普通のテトリスが遊べる「ノーマルモード」と、足場を消してオッサンを頑張って底まで降ろす逆ジョイジョイキッドな「パズルモード」の2つのモードが搭載されています。豪華ですね。
テトリスプラスがプラスたる所以は「パズルモード」に集約されており、難易度も程よく面白いのでおすすめです。
一方、ノーマルモードのほうはお世辞にも遊びやすいとは言えません。その理由は主に以下の通り。
・横タメ移動(ARR:Auto Repeat Rate)が遅い。
・難易度EASY以外の最高レベルの落下速度が速い。ARRの遅さと相まってほぼ無理ゲーと化す。
・接地時間が短い。難易度によってはレベル上昇と共に更に接地時間が短くなり、VERY HARDではほぼ即固定レベルまで短くなる。
これらの理由から、4段階で設定できる難易度(EASY、NORMAL、HARD、VERY HARD)のうち、長く遊べる可能性があるのは難易度EASYしかありません。
というわけで、チートを使うことでどうにか出来ないかなと思って試行錯誤した結果が以下のコードになります。
Gameshark Codes
Normal-ARR(1Frame)
D10C4FD0 0003
D20C4FD0 0005
D30C4FD0 0001
800C4FD0 0000
(2Frameにしたい場合は最終行末尾を1に書き換え)
Normal-DAS(8Frame)
D10C4FD8 0003
D20C4FD8 0010
D30C4FC8 0007
800C4FC8 0007
好みに調整したい場合は下2行末尾を1~9の範囲で書き換え
こちらのコードをDuckStationなどのエミュレータで有効化すると、ノーマルモードでの操作性が向上するはずです。
チートコードの使用は自己責任でお願いします。
以下、簡単な解説
・ARR(Auto Repeat Rate)
左右キーを長押しすると横移動が繰り返される。その繰り返しの速さがARRと呼ばれるです。ARRが遅いと操作が重く感じる。
・DAS(Delayed Auto Shift)
繰り返しが始まるまでの「間」のこと。これがあれば1マスだけ移動させたい時などの操作性が向上するが、長すぎると操作が重く感じる。
テトリスプラスではARRとDASが別々で管理されているので、それぞれARR値、DAS値として、次のように処理されています。
ボタン入力→ミノが移動→
DAS値=9に設定、ARR値=4に設定
→1フレームごとにDAS値が1減算
→DAS値が0になったらARR値が同様に1ずつ減算
→ARR値が0になったら4に戻り、ミノが移動
→以降、ARR値が0になったら移動を繰り返し
なので、テトリスプラスのDASはDAS値の最大値+ARR値の最大値の合計15フレームになります。
ARRはARR値の最大値で5フレームです。
以上のことを踏まえてチートコードを作成していくわけですが、肝心の文法が分からないと書きようがありません。
というわけで以下が書き方になります。
NNXXXXXX YYYY
XXXXXX:アドレス
YYYY:値
NN:命令 以下が今回使用するもの
80:書き込み
D1:IF文(指定した値でない時、次のコードを実行)
D2:IF文(指定した値より小さい時、次のコードを実行)
D3:IF文(指定した値より大きい時、次のコードを実行)
これを参考に書いていきます。
上のような処理になっているので、ARR値の最大値を減らしたらDASも短くなります。というわけで先程のチートコードを訳すと、
ARR(1Frame)
D30C4FD0 0001(ARR値が1より大きいとき)
800C4FD0 0000(ARR値を0にする)
こうすることでARRを1フレームに変えることが出来て、DASも大体10フレームぐらいになります。これだけでだいぶ操作感が変わりますね。
ただ、このチートコードを有効にしたままパズルモードを始めるとフリーズします。
調べてみると、ノーマルモードで使用するARR値・DAS値のアドレスがパズルモードでは3で固定されているので、3を除外してあげます。
あとなんか対戦モード選んだときもすごく変わるのでそれぞれの最大値以下であるときという条件をつけました。
というわけで一番上のチートコードが完成版です。たぶん大丈夫だとおもいます。
参考:他テトリスとの比較
【追記(1/9)】データの信憑性に疑いがあるので削除しました。