エミュレータに関する話。
テトリスDSが面白いという話をよく聞いていたので結構前に買っていたんですけど、あんまり手をつけてなかったんですよね。
最近になって思い出して少し触ってるんですけど、任天堂のファミコンゲームとうまく融合していて面白いですね。独自モードもあるので結構新鮮な気持ちで遊べます。
ただ、今遊んでみると横タメ移動とかソフトドロップが結構遅いので、最近のテトリス(テトリス99とか、ぷよテトとか、テトエフェとか)に慣れているとすごくもどかしい気持ちになるんですよね。
「もっと速く動かしたい!」と。
というわけで、先日テトリスプラス(PS版)の操作性を改善するチートコードを作成したのを活かせるんじゃないかと考えて、より速く操作できるようになるチートコードを作成しました。
DeSmuME、melonDS上にて動作確認をしています。
実機で出来るかどうかは自分がプロアクションリプレイみたいなものを持ってないのでわかりません。
チートのご利用は自己責任でお願いします。
(2024/2/4追記)チートコードの一部を変更しました。詳細は記事最後尾に。
チートコードについて
操作性を改善するチートは大きく分けて3種類あります。
・横タメ移動(ARR&DAS)を速くするチート
・ソフトドロップディレイ(以下、SDDとします)を無効化するチート
・ソフトドロップを速くするチート
また、ゲームモードによって参照アドレスが異なるので、「スタンダード」「ミッション」「プッシュ」の3つのモード用にそれぞれ用意しています。
順番に解説します。
横タメ移動(ARR&DASを速くするチート)
基本的にはテトリスプラスの記事で紹介したのと同様。左と右で参照アドレスが違うので、別々で用意してあります。
1つにまとめようと思ったらmelonDS上でうまく動かなかったので…。
なんかうまい方法があったら教えてください。チートコードわからないよ。
Action Replay Code
DAS&ARR-Faster (Standard Mode,1/2)
72177A54 00FF0500
82177A54 00FF0100
22177A55 00000001
DAS&ARR-Faster (Standard Mode,2/2)
72177A54 FF000005
82177A54 FF000001
22177A54 00000001
DAS&ARR-Faster (Mission Mode,1/2)
721B280C 00FF0500
821B280C 00FF0100
221B280D 00000001
DAS&ARR-Faster (Mission Mode,2/2)
721B280C FF000005
821B280C FF000001
221B280C 00000001
DAS&ARR-Faster (Push Mode,1/2)
721805AC 00FF0500
821805AC 00FF0100
221805AD 00000001
DAS&ARR-Faster (Push Mode,2/2)
721805AC FF000005
821805AC FF000001
221805AC 00000001
1、2両方を有効化しないと片方だけ速くなります。
このコードではARRが2Fになりますが、それぞれのコード最終行の「0100」または「0001」を「0000」に置き換えるとARRが1Fになります。お好みで。
SDDを無効化するチート
テトリスDSには左右移動のDASと同様、ソフトドロップにもDASが存在します。
2024年現在における主流のテトリスにはSDDが存在しないので、これを無効化するチートを作成しました。
Action Replay Code
SDD-Disable (Standard Mode)
92177A52 00FF0A00
22177A53 00000003
SDD-Disable (Mission Mode)
921B280A 00FF0A00
221B280B 00000003
SDD-Disable (Push Mode)
921805AA 00FF0A00
221805AB 00000003
ソフトドロップの仕組みは以下の通り。
下を入力
→ソフトドロップ値(SD値とします)=10に設定
→1フレーム毎にSD値が1ずつ減少
→SD値が0になった時、下に1マス移動し、SD値=3に設定
→以下、繰り返し
ということから、SDDは10Fあることがわかります。
SDDをなくすためには、SD値の初期状態を10から3に変えてあげればいいので、
「SD値=A(16進数で10)になったとき、SD値=3に置き換える」
というコードにしています。
ソフトドロップを速くするチート
ソフトドロップ自体も今のテトリスと比べるとちょっと遅い気がするので作成。参照アドレス自体はSDD無効化チートと同じで、このコード自体にSDD無効化が含まれているので、こちらを有効化している場合はSDD無効化チートは必要ありません。好きな方を選んでください。
Action Replay Code
SDS-Faster(Standard Mode)
72177A52 00FF0B00
82177A52 00FF0200
22177A53 00000002SDS-Faster(Mission Mode)
721B280A 00FF0B00
821B280A 00FF0200
221B280B 00000002SDS-Faster(Push Mode)
721805AA 00FF0B00
821805AA 00FF0200
221805AB 00000002※Soft Drop SpeedをSDSと略して記載しています。
上でソフトドロップの仕組みを書いたように、ソフトドロップは3Fで繰り返し行われます。
このチートコードでは、2<SD値<11の場合を見て、SD値がこの範囲内にある場合は、SD値=2に置き換えています。
こうすることで、ソフトドロップの間隔が2Fになる、ということです。
また、最終行の「02」を「01」にすると1Fになります。お好みで。
(2024/2/4)追記
以前は値の書き換えに16bit(2バイト)書き込みを使用していましたが、8bit(1バイト)書き込みに変更しました。
というのも、DAS&ARRに用いている値もソフトドロップに用いている値の両方とも1バイトしか使用していないから、2バイト書き換えを使うと隣の1バイトが巻き込まれちゃうからですね。
説明が難しいのでこのくらいで。
以前のコードでも問題は生じなかったのですが念のため。