目次 2 ) R O M アダブター用の配列 ROM アダブター用のピン配列を接続図にするとこんな感じになるのかと。 はんだ着け不良でないことは何度も確認したのですが、なせか場合によってデータが 抜き出せなかったり、データが化けて抜けていたりということが何度かあったため、 実は他にも処理しないといけない端子があるのかもしれないですが、何度かやってると それらしいデータは抜けるようです。 ( C L K 端子 ( 1 6 番ピン ) には 1 2 M H z を入力 ) V S S A 8 A 9 A 1 0 A 1 1 A 1 2 A 1 3 A 1 4 A 1 5 V D D C E 0 E V D D C L K V S S V D D D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 1 . どんな処理をしているのか ? 1 ) プログラム、知ってるつもり・ 2 ) フローチャートにしてみる・ 2 . プログラムを抜こう ! 3 . さあ、逆アセンプル ! 1 ) 大当たり判定値用カウンターの史新部分を探そう 2 ) 大当たり判定値用カウンターを取得、記憶している部分を探そう 3 ) 記憶した大当たり判定値用カウンターを取得している部分を探そう 4 ) その後の作業 4 . 大当たりさせてみよう ! 1 ) 強制的に大当たりさせるには 2 ) 基板構成を見てみよう 3 ) 強制的に大当たりさせる基板構成は ? 4 ) 今後の課題 ? 5 . リーチだけみたい ! 1 ) 基板構成を見てみよう 2 ) 強制的に演出を見るための構成は ? 6 . 回路図 1 ) C P U のピン配列 2 ) R 〇 M アダブター用の配列 7 . あとがき A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 V D D V D D V S S V D D V D D V D D V D D V D D V S S 4 3 2 1 0 9 8 7 6 5 4 3 ワ】 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3
3 . さあ、逆アセンプル ! ということで、 R 〇 M ライターで抜き出したデータを P C へ転送し、昔から愛用している Z 8 0 用逆アセンプルツールを使用して、リスト形式のデータへ変換することに 私がまず最初に調べる場所は「大当たり判定値用カウンター」を更新しているモジュール なんですが、なぜかというと、 2 パイトのデータを RAM 領域から読み出し、その値を十 1 し、 特定の値と一致したら 0 にクリアーする、という昔からこの部分だけはどの機種でも同じこと をしているためであり、そこからさまざまさもジュールを追跡することが可能になるからです。 1 ) 大当たり判定値用カウンターの更新部分を探そう 以下のモジュールが見つかったので検証することに カウンターの種類として、最大値を超えた時は初期値の値を 0 に再設定 ( 0 クリアー ) する カウンターと、最大値を超えた時は初期値の値を 0 ではなく不定の値に再設定するカウンター の 2 種類あるようである。 大当たり判定用カウンターの史新方法は、その値が初期値更新値を超えた場合は、大当たり 判定用カウンターと同じ最大値を持つ初期値更新用カウンターの値を初期値として再設定し、 あわせて初期値史新用カウンターの値を初期値史新値 ( 最大値 ) として記憶する。 これは定期的なタイマー割込みで十 1 加算している処理においては、リセットされてから、 何割り込み目に大当たりとなる大当たり判定用カウンターの値を取得すれば大当たりとなる か容易に計算できるため、その対策ではないかと思われる。 大当たり判定用カウンター以外のカウンターはほとんどすべて 0 クリアーするようである。 03DB 03DF 03E0 03E3 03E4 03E6 03E8 03E9 03EA LD I NC LD XOR SBC JR LD LD LD DE,(07FIAh) DE HL,002BCh HL,DE NC , 003EAh D,A E ,A (07FIAh),DE 07FIAh で示されるアドレスから連続した 2 バイト分のデータを DEreg へ転送する。 DEreg の値を十 1 する。 02BCh を HLreg へ転送する。 Areg の値を 0 クリアーする。 HLreg の値から DEreg の値を c フラグを使用して減算し、 HLreg へ戻す。 c フラグが 0 場合は DEreg の値を変化させず、 1 の場合は DEreg にそれぞれ 00h を転送し、 07FIAh で示されるアドレスへ DEreg の値である 2 バイト分のデータを転送する。 ということにより、 07FIAh で示されるアドレスのデータ値は 0 ~ 700 の間で史新され 有効な値は 701 個になり、この機種の大当たり確率が 1 / 350.5 で、分母を整数に直す ? と 2 / 701 になるため、今の時点では仮に 07FIAh で示されるアドレスのデータを「大当たり 判定値用カウンター ( 仮 ) 」であるとして次の検証に進むことに。
⑧判定した結果が大当たりであった場合は、大当たり数字用のカウンターの値と、 リーチ内容決定用のカウンターの値により、大当たり用のリーチの内容を決める。 液品表示器のほうでそれに対応する演出を行うようである ) ( 現在はリーチの種類というより何秒間デジタルを動かすかを決めて、 リーチにならない値であった場合は、 ⑩判定した結果が大当たりでない場合で、 内容決定用のカウンターの値により、外れリーチの内容を決める。 ⑨判定した結果が大当たりでない場合で、 リーチにならない動きに決定する。 リーチ判定用のカウンターの値が リーチになる値であった場合は、リーチ数字用のカウンターの値と、リーチ リーチ判定用のカウンターの値が ( 普段良く目にするのがこれである ) 時間的に無理なので主要な部分のみを見ていこうかと。 追加されていたりしているかもしれないのですけど、今回はすべての処理を解析するには , , に聿いた処理が無くなっていたり、内容が変変わっていたり、実はものすごい処理が などなど、いろんな処理を行っているが、最近は法律の変史がちよくちよくあるようで ⑩電源を入れる時に状態をリセットすることができる。 ⑩停電用のバックアップ処理がある。 ( 本体についているブッシュボタンは液品表示器で処理しているらしい ) ⑩入力は盤面のスイッチ入力のみで外からの入力は無い。 人りやすくなる。 するだけでなく、サプのデジタルの演出秒数が短くなり、スタートチャッカーに玉が ⑩メインのデジタルとサプのデジタルがあり、確率変動時はメインデジタルの確率がアップ ( 最近の台は見た目大当たりしなくても確率変動が終了するのもあるらしい ) 大当たりまで確率変動状態になる。 ⑩大当たり終了時に、大当たりしたデジタルが特定の組み合わせであった場合は、次の 大当たりの処理を終了する。 ⑩アタッカーが閉じた時に、 V に玉が入っていないか、最終ラウンドであった場合は、 を開く。 ( 最近の台は V が無くなったようで決められたラウンドまで進むようである ) ⑩アタッカーが閉じた時に、 V に玉が入っていれば、次のラウンドに進み、再びアタッカー ⑩大当たり中は、アタッカーを開き、決められた個数の玉が入ったらアタッカーを閉じる。 処理を一旦中止し、大当たりの処理へ移行する。 ⑩デジタルが止まった時に、大当たりの組み合わせであれば、デジタルを動かす 大当たりとなるまで処理を繰り返す。 ⑩デジタルが止まった時に、外れの組み合わせであれば、 7 ) の処理に戻り、 2 ) 強制的に演出を見るための構成は ? 数 mS の間に大量のコマンド、しかも膨大な種類のコマンドを送信するためには、 ハード的に擬似主制御基板や擬似 CPU を作成すると非常に手間と時間がかかるので、 PC を使用して以下のような構成を形成し、中継基板 ( レベルコンバーター的な ) を 中継して P C にてコマンドの送信を行うのがよいかと。 しかもこの構成の場合は、中継基板の変史のみ ( アプリの変史も多少は必要かな ? ) で いかなる機種の演出を見ることも可能になるので非常に有効であり、ハラレル信号と いっても、 8 十 1 ビットのデータが連続して送信できればいいので、いわゆるポケコンと いうものでも十分いける構成である。 ノくラレノレイ言号 P C 中継基板 電源 コマンド信号 サプ制御基板 電源 液品制御基板 コマンド信号
④スイッチ入力処理 スイッチ人力処理 人力ポート処理 チャッカー人力処理 アタッカー人力処理 4 ) V スイッチの確認 3 ) アタッカースイッチの確認 2 ) チャッカースイッチの確認 1 ) 入力ボートの確認 大当たり中以外はアタッカーや V のスイッチをチェックをしなようになっているようである。 ないかと思うがいまはほとんどその機能を持っている台はないようである。 一時期デジタルの回転をスキップする機能があったが入力はこの部分で行っていたのでは ハチンコの入力は、玉の通過をチェックするためのスイッチの状態のみのようである。 R E T V スイッチ処理 2 ) 基板構成を見てみよう 基板構成を見ると、電源基板から電源と制御信号が入力されており、制御信号には、 「リセット信号」、「リセットボタン」の情報が含まれていて、チャッカースイッチは 主制御基板に直接接続されている。 電源 制御信号 リセット ボタン ロ 電源基板 スイッチ信号 チャッカー スイッチ 主制御基板 3 ) 強制的に大当たりさせる基板構成は ? 強制的に大当たりを発生させるために以下の構成にて以下のタイミングチャートの動作を 有する強制基板を中継させることができれば任意のタイミングで大当たりさせることが 可能になる。 リセット ボタン ロ 電源基板 制御信号 ロ 電源 主制御基板 強制スイッチ信号 強制制御信号 強制リセットボタン 強制基板 チャッカー スイッチ スイッチ信号
⑦アタッカー入力処理 3 ) 記憶した大当たり判定値用カウンターを取得している部分を探そう 以下のモジュールが見つかったので検証することに アタッカー人力処理 052E 0530 0533 0535 0537 0539 053D 0540 0543 0546 0547 0548 0549 054B 054C 054D 054F 0550 1B41 1B43 1B45 1B47 1B49 1B4B 1B4D 1B4F 1B51 1B53 1B55 1B57 LD LD CP JR LD LD LD LD LD LD INC CP JR LD CP JR I NC DJNZ 1300 75 01 47 00 89 00 C7 00 07 01 91 01 D3 01 ID 02 39 01 4B 02 87 02 B,02h A,(07F5Eh) 01h NZ , 00539h B,0Ch DE,(07F43h) HL , 00000h (07F43h),HL HL,01B41h A,(HL) HL NZ,0054Fh A,(HL) 00546h HL Z , 00568h ; 647d ; 587d ; 313d ; 541d ; 467d ; 401d ; 263d ; 199d ; 137d ; 7 ld ; 373d ; 19d ーアータ領域 - ー 各大当たり処理中 ? Y e s アタッカー スイッチ 0 N ? Y e s R E T 十 1 する アタッカー人力個数を しないようにするのではないかと思われる。 これは大当たりしていない時にアタッカーを故意的に開き、そこへ玉を入れても払い出しを 大当たり中の処理以外の場合は処理を行わないようである。
⑨タイマー更新処理 2 ) 大当たり判定値用カウンターを取得、記憶している部分を探そう 以下のモジュールが見つかったので検証することに タイマー更新処理 0595 0598 0599 059B 059D 059E 05A1 05A2 05A3 05A4 05A5 05A6 05A7 05A8 05AB 05AE 05B0 05B1 05B3 05B4 0615 LD LD CP JR INC LD LD ADD ADD ADD RST PUSH EX LD LD LDIR EX LD INC LD RET HL,07F4 lh A,(HL) 04h NC , 00615h (TIL) Ⅱ L , 07F43h C,A A,A A,A A,C 08h HL DE,HL HL,07FIAh BC , 00003h DE,HL (HL),0BCh HL 田 L ) , 02h 減算するタイマーの アドレス設定と読出し タイマー値を一 1 する R E T Y e s 減算を終了 ? 全タイマーの Y e s 各タイマー値の史新を行っているが、減算のみの処理であることにより、何らかの処理を行う そのタイマーにかかわる処理を行っているということなのではないかと。 時はタイマーの値を設定しているようである。いいかえればそのタイマーに値が入っていれば 大当たり判定用カウンターが読出されている前後を検証すると、 07F41h で示されるアドレスのデータを読出し、 04h と比較してその値を超えていた場合は 処理を終了し、超えていない場合は 07F41h で示されるアドレスのデータを十 1 している。 ということで、今の時点では仮に 07F41h で示されるアドレスのデータを「保留数 ( 仮 ) 」と する。 07F43h に保留数 ( 仮 ) の 5 倍の値を加算した値をアドレスとして、 07FIAh で示される アドレスから 3 バイト分のデータを転送する。 (RST 命令 ( 0 (H) では HLreg に Areg の値を加算する処理を行っている )
⑥チャッカー入力処理 チャッカー人力処理 チャッカー スイッチ 0 N ? Y e s 保留数 < 4 ? Y e s 保留数を十 1 する その値を確認して選択する演出パターンを変化させているものもあるようである。 機種によってはこのカウンター以外にもタイマー値を同時に記憶してデジタル回転時に 大当たりするかどうかはこの瞬間に決まるのである。 大当たり判定値と一致した場合は大当たりとなることにより、いくら熱いリーチになろうが 記憶するようである。後に説明するがここで記憶された大当たり判定用カウンターの値が 保留が十 1 された場合は、大当たり判定用カウンターの値と大当たり数字用カウンターの値を チャッカースイッチが ON の場合でも保留数が 4 個の場合は無視するようである。 R E T したアドレスに記憶する 値を読出して保留数に対応 大当たり数字用カウンターの 大当たり判定用カウンターと 記憶した大当たり判定用カウンターの値 ( 7F43H ) が読出されている前後を検証すると、 07F43h で示されるアドレスから連続した 2 バイト分のデータを DEreg へ転送した後に そのアドレスに 00h を転送しているのは、大当たり判定値用カウンターを読出した後は 0 クリアーするという処理ではないかと。再び読み出すことはないはずなのだが、パチンコの プログラムにはこのような意味不明な処理が結構ある。 01B41h で示されるアドレスのデータを読み出し、 DEreg の値と比較し、一致した場合は ジャンプしその後の処理を ( 一致したので大当たりと判断 ) 、不一致の場合は、 2 バイト先の アドレスのデータを繰り返し回数分読み出して比較し、一度も一致しなかった場合は外れ時の 処理を行う。 不一致時の比較回数が 7F5Eh で示されるアドレスのデータによって変わる事により、 7F5Eh は確率状態を記憶しておくアドレスではないかと判断できる。 ちなみに 7F5Eh で示されるアドレスのデータが 0 の場合は 2 回、 1 の場合は 12 回比較して いることにより、低確率時は 2 / 701 ( 1 / 350.5 ) で、高確率時は 12 / 701 ( 1 / 58.4166 ・・ ) となることが わかる。 また、この機種の大当たり判定値もそのデーターテープルのデータ値から判断することが 可能である。 4 ) その後の作業 今回は諸所事情もありまして全てを載せることができないのですが、大当たり判定値用 カウンターの処理にかかわる部分を、このような仮説 ? を立てながら作業を続けていけば おのずと解析が進み、すべてを丸裸にすることが可能になってきます。
7 . あとがき もっと時間があれば ( 余裕もってやればよかったと大反省・ ・ ) もっと細かく解析して もっと細かく書けたはずなのだが、書き始めたのが直前という状況だったのは時間配分を 激しく間違えた結果ではないかと。 ただいえることは、ザイログ社の Z80 が使用されていたころと比べても大当たりにかかわる 処理の部分は全然変わっていないなあと。 その当時の機種はデジタル回転の処理を主制御基板で全て制御していたので、解析に時間が かかった記憶はあるが、表示されるデータの信頼度等は全て分かったので ( 分かった時には もうパチンコ店には存在しなかったけど・・・ ) 解析のしがいがあったのですが、今の機種は、 液品制御基板側で処理している演出の内容の方にウェートが占められているので、解析の しがいがないというか、しかも、液品制御基板の解析なんてとてもできる環境じゃないし、 そんなものはパチンコ雑誌見たほうが早いし正確 ? だよなあーと。 最後に、このような内容の本ではありますが最後まで読んで頂いた方々に感謝申し上げます。 今後はきちんとしたものを発表できるようきちんと計画を立てて、日々の解析状況等を HP などで史新しながら進めていきますので、今後もよろしくお願いいたします。 tazue@kdt.biglobe.ne.ル たづ江工房 まえがき この本を読んだとしてもパチンコに勝てるかどうかは時の運であるということ。 まあパチンコ雑誌を読んでリーチの信頼度が解ったとしても遊技中のお楽しみ要素が 増えるぐらいの単なる情報でしかないことと同じことです。 ザイログ社の Z 8 0 や P I O が使われていて ROM も RAM も外付けだった時代には 個人的な趣味でハード、ソフトを解析して好きなように楽しんでいたのですが、 セキュリティー対策を施した C p U ? が使われるようになってからは、どうしようも なくなり、その世界 ? から一時離れることに。 しばらくしてから、どうしても欲しい台がインターネットの中古屋で売っているのを発見し、 購入してみたら、どうもゲームセンター用 ? に作ったと思われる擬似 CPU が ! しかも窓付き ROM が ! ・ 、これは ! これは壊してはいけないとこれ以上無いほど親切丁寧に取り扱って、好きなように改造して 遊んでいたのですが、さらに高機能 ? のセキュリティー CPU が登場したらしく、 再びその世界 ? から足を洗おうとしていたら、ある時、某掲示板サイトにその CPU の ピン配列が書かれていたのを発見 ? してしまい、昔のように ROM のデータを抜いて好き 勝手に変更して遊びたいという欲望が沸々と・ しかし ! 今のパチンコに使用されている C P U も激しくセキュリティー対策が施されている ようで内蔵の R O M もフラッシュ等書き換え可能では無くワンタイムであることにより プログラムを変史して自分の好きなように動かすためには過去のような擬似 CPU を どっかから入手するか自力で作成しないといけないようである。 安易な考えではあるが抜き出したプログラムを見てみると、プログラム領域、データ領域、 セキュリティー領域 ? に分かれているようで、なんというかソフト、ハードの両方を解析し、 丸ごと一台いっちゃおうか ? と思ってはみたものの、思ったよりは壁は高く、素人には そう簡単には行かなかったということで、先に詫びておきますが、完全な解析手法を記載する に至らなかった点は本当に申し訳なかったと。 今回はパチンコプログラムの基本的な解析方法と自宅にあるハチンコ台を改造して自分の 見たいリーチを好きな時に見たりとかそういう時のためにどうすればいいのかという事の さわりを実体験と憶測にもとづき書いていきたいと思っております。 たづ江工房