2018年04月09日 17時37分 更新
ランス10 チートで食券を無限に増やす方法
アリスソフトさんの作品「ランス10」の食券を、チートツールを使って無限に増やす方法を動画とテキストで解説します。
ゲームはもう満足したけど、キャラが多すぎて通常のプレイ方法では食券イベントを全部見れる気がしない。でも見たいという方へ。
プロセスメモリエディタという種類のツールを使ってゲーム内の食券枚数を強引に増やします。当然、正規の動作ではないのでエラーが起きる可能性があり、「セーブデータが壊れる」「ゲームが落ちる」「OSがフリーズ」「ブルーエラー」「パソコンが壊れる」といった最悪の事態におちいる可能性がありますので、全て自己責任でお願い致します。私は責任取れません。
動画で解説
テキストで解説
動画を作ってて気付いたのですが小さい画面でこの動画を見た場合、何やってるか分かんないんじゃないかなと。なのでテキストでも解説します。
事前準備
プロセスメモリエディタの入手
色々ありますが今回は「スペシャルねこまんま57号」というツールを使います。変な名前ですね。下記リンク先よりダウンロードして下さい。
ダンロードしたものを解凍すると
この様なファイル構成になってると思います。使うのは1番上の「Neko57.EXE」です。インストールの必要は無いので、Neko57.EXEをダブルクリックでそのまま使えます。
他にも同じ製作者さんの「うさみみハリケーン」というのが有名です。同じ機能がありこっちの方が新しいので動作も安定してるそうなのですが、私が初めてチートした時はねこまんまを使用したため、今でもねこまんまを使うことが多いです。
食券を3枚集める
ゲームを進めて食券を3枚集めたセーブデータを用意して下さい。マルチナを使えば余裕ですね。
セーブデータのバックアップ
万が一に備えてセーブデータをバックアップします。ランス10をインストールしたフォルダを開いて「SaveData」フォルダを丸ごと複製。
これで何かが起きても安心。ゲームが壊れてもインストールし直してこのセーブデータを使えば良いわけですし。私はチート中にゲームが落ちた経験は何度もありますが、データが壊れたりパソコンが起動しなくなったりした事はありません。ですがまぁ一応。何度も言いますがホント自己責任でお願いします。
チートの仕組み
チートする上で知っておいた方がいい前提知識の解説をします。
まず、パソコンはハードディスクやメモリなど色々なパーツで成り立っていてそれぞれ役割が違います。よく工場で例えられますが、CPUが作業する人間だとするとメモリは作業台、ハードディスクは材料や完成したものを保管しておくための倉庫です。
拡張子が「.exe」などの実行ファイルには、CPUに「こういう処理をしなさい」といった命令がたくさん書かれています。作業する人に向けた指示書ですね。指示書も倉庫に保管しています。
ランス10を起動する時に何が起きているかというと、倉庫(ハードディスク)にある「Rance10.exe」が作業台(メモリ)に持ってこられます。実際はコピーです。そして作業する人(CPU)が中身を見て、書かれていることを実行していく感じです。
なので作業台には作業中に出た色々なデータが散らばっていて、その中に「現在所持している食券の枚数」というデータが有るわけです。これをツールを使って見つけ出して書き換えるのがチートです。
作業台には他のアプリのデータもあるのでゴチャゴチャにならないように、仕切りを作って分けていて、この分けられた1つ1つを「プロセス」と呼びます。
プロセスのメモリを編集するツールなので、プロセスメモリエディタと呼ぶわけですね。
いざチート
ではチートしていきましょう。ランス10を起動して食券を3枚集めたデータをロードします。
そしてスペシャルねこまんま57号を起動。起動すると
この赤枠の部分に現在実行中のプロセス一覧が出てくるので「Rance10.exe」を探して選択します。この画像では2つ出てきてますが、よく見ると片方のドライブ名が「?」になっていますね。これじゃないです。何でこういう現象が起きるのかは知りません。ちゃんとドライブ名が表示されてる方を選んで下さい。
選択すると約10秒程度ねこまんまがフリーズします。ランス10のプロセスデータを読み取っているんだと思います。サイズの小さいプロセスだと一瞬ですが、最近のゲームはメモリ使用量が大きいですからね。そして読み込みが終わると
中央の部分に「Rance10.exe」の情報が色々表示されます。Createが2018/02.23/10:44:29ってなってますね。発売日の午前中です。届いて待ちきれなくて仕事しながらインストールしたためです。
そして左下の「メモリ検索」をクリック。
検索用のウィンドウが立ち上がります。色々ボタンがありますが、よく使うのは赤枠の部分です。このウィンドウを使用して食券の枚数が入ってるメモリアドレスを特定します。
メモリアドレスとはメモリ上の特定の場所をさす番号です。住所ですね。プログラムはデータを一時的に保存する場合、メモリアドレスを指定して書き込み、必要になったらまたメモリアドレスを指定して読み込んだりしています。食券枚数が入ったデータにもメモリアドレスがあるわけです。
手順1:「範囲」の横にある数字を増やす
「範囲」と書かれている右に「10000000」とありますね。これは検索する範囲の事だと思うんですが最近のゲームはメモリの使用量が大きく、この値だと検索漏れしてヒットしない事があるのでその場合は適当に増やします。今回は4倍の「40000000」にしました。絶対に必要という物ではないです。検索漏れした場合に増やすのでも構いません。
手順2:「10」のボタンの右のエリアに検索したい数値を入力
食券は現在3枚持ってるので「03000000」と入力します。この「03000000」ですが、なんじゃこれですよね…。これはちゃんと説明しようとするとすごく長くなる気がするのでこのページの最後の方ですることにします。すいません。とりあえずここでは「03000000」と入力して下さい。
手順3:「通常検索実行」をクリックして検索
検索実行です。すると
約56万件ヒットしました。めっちゃ多い。件数の下に表示されてるのはヒットしたメモリアドレスのリストです。今回は多すぎるので一部しか表示されていません。
手順4:ゲーム内で食券を使用して数を減らす
「クエストを諦める」を実行して、食券イベントまで進めて食券を使用します。
手順5:さらに検索
枚数が1枚減ったので「02000000」と入力して「通常検索実行」をクリックして再検索します。すると
先程の56万件の中から「02000000」が再検索され、15件になりました。メチャクチャ減りましたね。「03000000」から「02000000」に変わった場所が15件あるという事です。
この様にゲーム内で数値を変化させるイベントを起こし、その都度、検索してどんどん絞り込んでいきます。最終的に1件になればそれが食券の枚数が入ってるメモリアドレスという事ですね。
さらに食券を使用します。
「01000000」で検索すると
1件になりました。良かったです。ここで1件にならないとまた食券集めなおすハメになるので。3枚って少ないですよ。ただまだ確定ではありません。コイツが怪しいという段階です。
手順6:データの書き換え
メモリアドレス:050471D8が怪しいと分かったので検索用ウィンドウの「050471D8」と表示されている部分をクリックします。するとねこまんまのメインウィンドウが
この様に変わります。
中央エリアに050471D8周辺のメモリデータが。16進数に変換されて表示されているので「0~9A~F」までですね。そしてその下の2段になってる部分は上が現在の050471D8のデータ。下が050471D8を編集するエリアです。ここに書き込んで横の「更新」ボタンを押します。では書き換えてみましょう。
下の編集エリアの「01000000」を「03000000」に書き換えて「更新」ボタンを押します。すると中央エリアの該当箇所が「03000000」変わりました。これでもうゲーム内のデータが書き換えられたことになります。ですのでもしこのアドレスが間違っていたらエラーが起きて最悪ゲームが落ちます。ドキドキの瞬間です。ゲーム画面を確認してみます。
何も変わってません。食券の数も1枚のままです。でもこの段階では失敗という訳ではなく、食券のイラスト部分が更新されてないだけで食券の枚数自体は増えてるのかもしまれせん。見えないだけで。なので食券を使用してみます。
ミルを選んでみました。選んだ直後のキャプチャです。分かりますでしょうか?食券を使った際に食券が消えるエフェクトがあるんですが、食券3枚目の部分でエフェクトが起きました。どうやら成功です。
ミルの食券イベントが終わりました。食券の表示は1のままですね。ねこまんまの方を見てみます。
確認ボタンを押します。すると表示が現在のメモリデータに更新されます。「02000000」になってますね。3枚から1枚消費したので2枚という事です。どうやら枚数を書き換えても食券のイラスト部分は変わらない様です。
はい。これで食券を増やしてイベントを見続けることが出来るようになりました。ちなみに枚数をもっと増やそうと255を表す「FF000000」に書き換えてみたんですがどうやら上限が決まってるらしく、イベントが終わったら「03000000」になっていました。4以上には増えないようです。
これだと、食券がなくなるたびに「03000000」と書き換える必要があり、少し面倒ですよね?なので次はチートコードを作って書き換え処理を自動化してみます。
チートコードで自動化
スペシャルねこまんまには書き換え処理をプログラム化する機能があります。使うのは赤枠の辺り。左の広いエリアに「050471D8-03」と入力して「コード実行」クリックします。
「050471D8-03」の意味はメモリアドレス「050471D8」に「03」を書き込むという意味です。今まで使っていた「03000000」の3の後ろの0が続く部分ですが、ここは何をやっても変わらないようなので省略しました。「コード実行」をクリックしたことでこのコードが実行され、050471D8のメモリに03が書き込まれます。
ただこれだと1回実行されるだけなので、1秒おきに自動で実行されるようにします。
自動更新ボタンの右側の小さなエリアに「1」と入力、「自動更新」をクリックしてオンに、最後に「コード実行」をクリックします。これで完了です。1秒おきにコードが実行されます。止めたい時は「自動更新」をもう一度クリックしてオフにします。
「03000000」の意味
解説の途中で長くなるからと省略した部分です。意味は数字の3の事なのですが、何故こんな書き方になるのかという話をします。理由は大きく分けて4つあります。…4つもあります。
16進数を使うから
パソコン上のデータは全て0か1で表されているって聞いたことありませんか?オンかオフか、電気が溜まってるか溜まってないか、出っ張ってるか凹んでるか。2種類のデータが保存できるものなら何でも記憶装置になります。メモリも一緒で何らかの方法で2種類のデータを保存していてそれを0と1に変換しています。「電荷」がどうとか…良く知りません。
なのでメモリを覗いても0と1が羅列された「01000111010011」みたいなデータが返って来て分かりづらいんです。なのでこれを2進数と考えて、もう少し見やすく16進数で表示します。
16進数というのは16で1桁上がる数字ですね。0~9、その上はA~F、Fに1を足すと初めて10になって2桁になります。普段私達が使ってるのは10で1桁上がる10進数です。2進数から10進数に直せたら良かったのですが、10進数だと中途半端になってしまうらしく16進数を使います。
どういう事かと言うと、2進数の1桁では0と1の2種類のデータが扱え、2桁になると「00」「01」「10」「11」というふうに4種類のデータが扱えます。さらに3桁になると倍の8種類。4桁になると16種類といった具合で、2進数の4桁がちょうど16進数の1桁に該当するのでキリがいいんです。
1バイトは8ビットだから
パソコン上でデータのサイズを表す際に、バイトという単位を使ってると思います。キロバイト、メガバイト、ギガバイトといった感じですね。実はバイトの下にさらに「ビット」いう単位があります。
1バイト=8ビットです。1ビットで扱えるデータは2種類。0か1か。はい、先程出てきた2進数なんですよね。8ビットというのは2進数の8桁です。ビットじゃ小さすぎるので8ビットを1バイトという事にしようと誰かが決めたんですね。
1バイトで扱えるデータ量は256種類。1ビットで2種類、8ビットなので2を8回掛けた256という事です。人によっては馴染みのある数字じゃないですかこれ。
1バイトは2進数の8桁で表せるので前半の4桁と後半の4桁をそれぞれ16進数に直して、16進数の2桁で表すことが出来るということです。
なので先程のねこまんまの画面を見ると
1バイトのデータを16進数の2桁で表示し、4バイト単位でグループ化、16バイト単位で行を変えて見やすくしているわけです。
プログラミングする時は整数値は基本的に4バイトだから
1バイトで扱えるデータ量は256種類。正の整数に限定しても1バイトでは0~255までしか表せません。足りないのです。
4バイトだと256の4乗なので4,294,967,296。約429億種類のデータが扱えます。これだけあれば日常生活で使用する整数値としては十分なので、基本的は4バイト使うことが多いんです。
4バイトは16進数で8桁なので「03000000」の8桁という事です。
逆から書くから
なぜ「3」が「00000003」じゃなく「03000000」なのか。それはメモリ上では1バイト単位で逆から書くからです。
例えば1,000という値を検索する場合、「1000」を16進数に直すと「3E8」になり、4バイトなので「000003E8」、バイト単位で逆転させて「E8030000」という事になります。ややこしいですね…。
以上で「03000000」という表記の説明を終わります。ここからは余談です。
電卓が便利
10進数を16進数に変換する際はWindowsに元から入ってる電卓が便利です。アクセサリに入ってるやつです。
「表示」から「プログラマ」を選ぶと
デザインが変わります。「1000」と入力して左の「16進」にチェックをいれると
「3E8」になりました。
ねこまんまには10進数のまま検索できる機能がある
今まで「03000000」の説明をしてきましたが、ねこまんまには10進数を16進数に変換して検索してくれる機能があります。コイツです。
「10」のボタンをクリックしてオンにすれば、10進数のまま検索できます。
じゃあなぜ初めからこれを使わずに「03000000」で検索したんだという事になりますが、検索結果の件数の所を見ると「1000000」件となってます。ねこまんまは100万件以上は検索出来ないんです。
「3」の様な単純な値の場合、ヒットしまくって上限の100万件を越えてしまうことがよくあります。これはランス10の中に3という数値が100万件あるという訳ではなく、画像データとかも元をたどれば0と1の羅列なので、「3」と解釈出来る部分があってこうなってます。
あと、16進数の説明もしたかったので。ちょうどいいと思い。逆に分かりづらくなったかも知れませんが。
なので単純な数値の場合は16進数で検索することが多いです。100を越えるような値の場合はそのまま検索しても100万件を越えることはあまり無いんじゃないかと。
例えばマエリータ隊のHP
この「655075」という値を10進数のまま検索した場合
たったの6件でした。これなら絞り込みは楽ですね。いくら電卓で16進数に直せてもバイト単位でひっくり返すのが面倒くさいですし。
なのでまとめると、単純な数値の場合は16進数、桁数が多い数値は10進数のままで検索って感じです。
最後に
チートについて説明しましたが、これは誰かに教わったとかじゃなく独学なので、間違ってる事もいっぱいあると思います。もっと簡単なやり方とか「そもそもうさみみハリケーン使えよ」とか色々と…。
でもまぁその辺は許してください。これが私の精一杯。
あと、オンラインゲームでチートするのはやめたほうが良いです。BANされるのがオチですし、最悪、運営に支障をきたしたとかで損害賠償を請求される事も考えられます。
あくまでオフラインで個人的に楽しむ自己満足にとどめましょう。
以上です。