(57)【要約】【課題】  予め登録したプログラムの内容確認作業に支障を与えることなく、第三者によるプログラムの解析を困難にでき、プログラムの改ざんを防止することができる。【解決手段】  ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて内部抽選及び入賞判定を行うとともに入賞に応じて遊技媒体の払い出し制御を行う遊技機のメイン基板において、前記プログラム記憶部に記憶されたプログラムは暗号化され、前記ＣＰＵと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けた。暗号化により第三者のプログラムの解析は困難になるが、検査合計に基づくプログラムの内容確認作業は支障なく行える。【選択図】        図１
2005245531.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において、
前記プログラム記憶部に記憶されたプログラムは暗号化されており、前記ＣＰＵと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けたことを特徴とする遊技機。
【請求項２】
前記復号化装置は、復号キーを記憶するレジスタと、暗号化された前記プログラムを前記復号キーに基づき復号化する復号化部とを備えることを特徴とする請求項１記載の遊技機。
【請求項３】
前記復号化装置は、前記プログラム記憶部からのデータのビットを組み替えるデータビット組み替え部を備えることを特徴とする請求項１又は請求項２記載の遊技機。
【請求項４】
前記復号化装置は、前記ＣＰＵから前記プログラム記憶部へ出力するアドレスのビットを組み替えるアドレスビット組み替え部を備えることを特徴とする請求項１乃至請求項３いずれかに記載の遊技機。
【請求項５】
前記ＣＰＵと前記復号化装置は、基板に取り付けられた状態で接続端子が外部に露出しないパッケージに収納され、かつ、前記ＣＰＵと前記復号化装置の間の配線は多層基板の内部層に設けられ、当該配線が外部に露出しないように構成されていることを特徴とする請求項１乃至請求項４いずれかに記載の遊技機。
【請求項６】
ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機におけるプログラムの読み出し方法であって、
プログラムを読み出すためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
読み出したデータのビットを組み替えるステップと、
ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
復号化したデータをＣＰＵへ送るステップと、を備える遊技機のプログラムの読み出し方法。
【請求項７】
ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において前記プログラムを検査する方法であって、
プログラムを書き込むためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
用意されたプログラムのデータを予め定められた暗号キーで暗号化するステップと、
暗号化されたデータのビットを組み替えるステップと、
組み替えたデータをプログラム記憶部のスクランブルされたアドレスに書き込むステップと、
前記プログラム記憶部に書き込まれたデータ全体を読み出すステップと、
前記データ全体について検査合計を求めるステップと、
求められた検査合計を予め用意された検査合計と比較するステップと、
前記比較結果に基づき良否の判定を行うステップと、を備える遊技機の検査方法。
【請求項８】
ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機に適用されるプログラムであって、
プログラムを読み出すためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
読み出したデータのビットを組み替えるステップと、
ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
復号化したデータをＣＰＵへ送るステップと、をＣＰＵに実行させるためのプログラム。
【請求項９】
ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機に適用されるプログラムを記録した媒体であって、
プログラムを読み出すためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
読み出したデータのビットを組み替えるステップと、
ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
復号化したデータをＣＰＵへ送るステップと、をＣＰＵに実行させるためのプログラムの記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スロットマシン等の遊技機であって、即にその制御にＣＰＵとプログラムを備えるものに関する。さらに当該遊技機のプログラム読み出し方法、遊技機の検査方法並びに当該方法をコンピュータに実行させるためのプログラム、記録媒体に関する。
【背景技術】
【０００２】
スロットマシンやパチンコ機などの遊技機はマイコンを内蔵していて、抽選・入賞・払い出し・演出の制御をプログラムで実現している。この種の遊技機は、遊戯者の操作を受けて内部抽選及び該抽選結果に応じた入賞判定を行うとともに、入賞に応じて遊技媒体の払い出し制御を行う第１処理部（いわゆるメイン基板）と、第１処理部から遊戯者の操作を受けて処理を行い生成したコマンドを受けて内部抽選の結果を報知したり、各種演出を行う第２処理部（いわゆるサブ基板）とを備えている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
遊技機はマイコンで制御を行っており、そのためメイン基板やサブ基板はＣＰＵ、ＲＯＭ、ＲＡＭなどを備える。マイコン制御を行っている遊技機においては、制御プログラムやデータを格納している媒体であるＲＯＭを型式試験時に取り外し、簡単に内容確認を行える必要がある。このことは容易にＲＯＭの内容確認を行えるということである。このためプログラムを不正な目的のために解析することも簡単に行えてしまった。
【０００４】
本発明は上記課題を解決するためになされたもので、型式試験時におけるＲＯＭ内容確認の利便性を残したまま、不正目的の解析を極めて困難にすることを目的とする。
【課題を解決するための手段】
【０００５】
この発明は、ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において、
前記プログラム記憶部に記憶されたプログラムは暗号化されており、前記ＣＰＵと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けたものである。
【０００６】
なお、従来の遊技機は、ＣＰＵ及び前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部を含み、遊技者の操作を受けて内部抽選及び入賞判定を行うとともに入賞に応じて遊技媒体の払い出し制御を行う第１処理部（いわゆるメイン基板）と、ＣＰＵ及び前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部を含み、前記第１処理部からのコマンドに従って演出処理を行う第２処理部（いわゆるサブ基板）とを備えるが、この場合において、前記プログラム記憶部に記憶されたプログラムを暗号化し、前記ＣＰＵと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けることを前記第１処理部についてのみ適用してもよいし（発明の実施の形態１はこの例で説明している）、前記第２処理部についてのみ適用してもよい。あるいは、前記第１処理部と前記第２処理部の両方に適用してもよい。処理部を３つ以上備える場合も同様である。
【０００７】
前記復号化装置は、例えば、復号キーを記憶するレジスタと、前記復号キーに基づき暗号化された前記プログラムを復号化する復号化部とを備える。
【０００８】
前記復号化装置は、好ましくは、前記プログラム記憶部からのデータのビットを組み替えるデータビット組み替え部をさらに備える。
【０００９】
前記復号化装置は、好ましくは、前記ＣＰＵから前記プログラム記憶部へ出力するアドレスのビットを組み替えるアドレスビット組み替え部をさらに備える。
【００１０】
好ましくは、前記ＣＰＵと前記復号化装置は、基板に取り付けられた状態で接続端子が外部に露出しないパッケージに収納され、かつ、前記ＣＰＵと前記復号化装置の間の配線は多層基板の内部層に設けられ、当該配線が外部に露出しないように構成されている。
【００１１】
この発明は、ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機におけるプログラムの読み出し方法であって、
プログラムを読み出すためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
読み出したデータのビットを組み替えるステップと、
ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
復号化したデータをＣＰＵへ送るステップと、を備えるものである。
【００１２】
この発明は、ＣＰＵと、前記ＣＰＵに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において前記プログラムを検査する方法であって、
プログラムを書き込むためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
用意されたプログラムのデータを予め定められた暗号キーで暗号化するステップと、
暗号化されたデータのビットを組み替えるステップと、
組み替えたデータをプログラム記憶部のスクランブルされたアドレスに書き込むステップと、
前記プログラム記憶部に書き込まれたデータ全体を読み出すステップと、
前記データ全体について検査合計を求めるステップと、
求められた検査合計を予め用意された検査合計と比較するステップと、
前記比較結果に基づき良否の判定を行うステップと、を備えるものである。
【００１３】
この発明は上記方法をＣＰＵに実行させるためのプログラムである。
この発明に係るプログラムは、例えば、記録媒体に記録される。
媒体には、例えば、ＥＰＲＯＭデバイス、フラッシュメモリデバイス、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、ＣＤ（ＣＤ−ＲＯＭ、Ｖｉｄｅｏ−ＣＤを含む）、ＤＶＤ（ＤＶＤ−Ｖｉｄｅｏ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭを含む）、ＲＯＭカートリッジ、バッテリバックアップ付きのＲＡＭメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジ等を含む。
また、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等の通信媒体を含む。インターネットもここでいう通信媒体に含まれる。
【００１４】
媒体とは、何等かの物理的手段により情報（主にデジタルデータ、プログラム）が記録されているものであって、コンピュータ、専用プロセッサ等の処理装置に所定の機能を行わせることができるものである。
【発明の効果】
【００１５】
本発明によれば、プログラムの内容確認作業に支障を与えることなく、第三者によるプログラムの解析を困難にでき、プログラムの改ざんを防止することができる。
【発明を実施するための最良の形態】
【００１６】
この発明の実施の形態に係る遊技機について図面を参照して説明する。
【００１７】
図１は遊技機（スロットマシン）の正面図である。
スロットマシン１０で遊技を楽しもうとする遊技者は、まずメダル貸機（図示しない）等から遊技媒体であるメダルを借り、メダル投入装置のメダル投入口１００に直接メダルを入れる。メダル投入口１００は、スロットマシン１０の正面で略中央の高さに設けられている。
【００１８】
スロットマシン１０は、四角箱状の筐体１１を有する。前記筐体１１の中央部及び上部には、遊技者側に向かって臨む四角窓状の表示窓１２が形成されている。そして、この中央部の表示窓１２の中央には、三個の回転リール４０の図柄６１を見ることができる図柄表示窓１３が形成されている。ベットスイッチ１６は、回転リール４０の下方に位置するスイッチであって、メダル投入口１００に連続してメダル投入をして貯留させた貯留メダル数を減じてメダル投入に代える。精算スイッチ１７は、回転リールの斜め下方に位置するスイッチであって、貯留した投入メダルを払い出す。スタートスイッチ３０は回転リール４０の斜め下方に位置するレバーであって、遊技メダルの投入若しくはベットスイッチ１６の投入を条件に、リールユニット６０の駆動を開始させる。ストップスイッチ５０は、リールユニット６０の駆動を停止させるためのものである。リールユニット６０は、三個の回転リール４０とから構成されている。そして、各回転リール４０は、合成樹脂からなる回転ドラムと、この回転ドラムの周囲に貼付されるテープ状のリールテープ４２とを備えている。このリールテープ４２の外周面には、複数個（例えば２１個）の図柄６１が表示されている。６２は各種の演出を行うための液晶表示部である。
【００１９】
スロットマシン１０の内部には、図示していないが、スロットマシン１０の全体の動作を制御するための制御装置が内蔵されている。制御装置は、図示しないが、ＣＰＵを中心に構成され、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を備えている。そして、ＣＰＵ（処理部）が遊技者の操作を受けてＲＯＭ（記憶部）に記憶されたプログラムを読み込むことで動作させるものであり、具体的には、スタートスイッチ３０及びストップスイッチ５０の操作に基づき回転リール４０の回転及び停止を制御するとともに、ランプやスピーカ等の表示を制御する。ＣＰＵが動作する際に必要な一時的なデータなどはＲＡＭに記憶される。ＣＰＵはＲＯＭに記録されたプログラムに従って所定の動作を行うとともに、ＲＡＭに処理に必要な一時的なデータを記録するとともに記録されたデータを必要に応じて読み出して参照する。
【００２０】
スタートスイッチ３０は、前述のように回転リール４０の斜め下方に位置するレバーであって、遊技メダルの投入若しくはベットスイッチ１６の投入を条件に、または、入賞判定に応じて得られる「再遊技（Ｒｅｐｌａｙ）」時には前遊技からの所定時間経過を条件に、リールユニット６０の駆動を開始させるためのものである。
【００２１】
ストップスイッチ５０は、前述のようにリールユニット６０の駆動を停止させるためのものである。具体的には、ストップスイッチ５０は、各回転リール４０に対応した三個のスイッチから構成され、各回転リール４０の下方に１個ずつ配置されているものである。回転リール４０に対応したストップスイッチ５０の操作により、当該対応した回転リール４０の回転を停止するように設定されている。
【００２２】
メダルの投入若しくはベットスイッチ１６の投入を条件に、または、前記「再遊技（Ｒｅｐｌａｙ）」時には前遊技から所定時間経過を条件に、スタートスイッチ３０を操作すると、リールユニット６０が駆動され、三個の回転リール４０が回転を開始する。その後、ストップスイッチ５０の一個を操作すると、当該対応する回転リール４０の回転が停止する。そして、ストップスイッチ５０を三個全て操作すると、三個の回転リール４０の回転が全て停止する。このとき、表示窓１２の有効入賞ライン上に、予め設定された図柄６１が停止すると入賞と判定され、図示しないホッパーユニットを介して所定枚数のメダルが払い出される。なお、メダルを払い出す代わりに、クレジットしてもよい。
【００２３】
前述の制御装置は、スタートスイッチ３０及びストップスイッチ５０の操作に基づき回転リール４０の回転及び停止を制御する際に、予め定めた内部抽選確率に基づいて入賞か否かの入賞判定のための抽選を行う入賞抽選手段を含む。この入賞抽選手段による内部抽選結果が当選である場合に入賞フラグが成立し、この入賞フラグ成立中に、回転リール４０の停止図柄の組み合わせが予め定められた入賞図柄と一致したことを条件に入賞が確定し、遊技者にメダルの払い出しや、遊技者にとって有利な特別遊技等の利益が付与されるように設定されている。
【００２４】
図２はスロットマシン１０の電気的な概略構造を示すブロック図である。この図において電源系統についての表示は省略されている。スロットマシン１０は、その主要な処理装置としてメイン基板１（第１処理部）とこれからコマンドを受けて動作するサブ基板２（第２処理部）とを備える。なお、メイン基板１とサブ基板２はそれぞれ、外部から接触不能となるようにケース内部に収容され、これら基板を取り外す際に痕跡が残るように封印処理が施されている。
【００２５】
メイン基板１は、遊技者の操作を受けて内部抽選を行ったり、リールの回転・停止やメダルの払い出しなどの処理を行うためのものである。メイン基板１は、予め設定されたプログラムに従って制御動作を行うＣＰＵ１ａと、前記プログラムを記憶する記憶手段であるプログラムＲＯＭ１ｂおよび処理結果などを一時的に記憶する図示しないＲＡＭを含む。プログラムＲＯＭ１ｂに記憶されたプログラム（オブジェクトコード）は、第三者による解析を防止するために暗号化されていて、そのままではＣＰＵ１ａは命令を実行できない。そのためプログラムＲＯＭ１ｂとＣＰＵ１ａの間に復号化ＩＣ１ｃを設け、プログラムを復号化している。復号化ＩＣ１ｃは復号するための復号キーを記憶する復号キーレジスタ１ｃ−１を含む。復号化ＩＣ１ｃについては後に詳しく説明する。
【００２６】
サブ基板２は、メイン基板１からコマンド信号を受けて内部抽選の結果を報知したり各種演出を行うためのものである。サブ基板２は、前記コマンド信号に応じた予め設定されたプログラムに従って制御動作を行うＣＰＵと、前記プログラムを記憶する記憶手段であるＲＯＭおよび処理結果などを一時的に記憶するＲＡＭを含む。なお、メイン基板１のように、サブ基板２においてもプログラムを暗号化して記憶しておき、復号化するための復号化ＩＣを設けてもよい。
【００２７】
サブ基板２はメイン基板１からコマンドをうけ、これに従って演出等の処理を行う。コマンドの流れはメイン基板１からサブ基板２への一方のみであり、逆にサブ基板２からメイン基板１へコマンド等が出されることはない。
【００２８】
メイン基板１にはスタートスイッチ３０，ストップスイッチ５０，リール駆動部７０，リール位置検出回路７１、ホッパー駆動部８０及びホッパー８１から払い出されたメダルの枚数を数えるためのメダル検出部８２が接続されている。サブ基板２には液晶表示装置６２の制御基板２００、スピーカ基板２０１、ＬＥＤ基板２０２などの周辺基板（ローカル基板）が接続されている。以下、スタートスイッチ３０，ストップスイッチ５０を除く、これらの周辺基板／装置について説明する。
【００２９】
リール駆動部７０は、３つのリール４０を回転駆動する図示しないステッピングモータを駆動する回路である。各ステッピングモータはリール駆動回路７０によって１−２相励磁されており、所定数のパルスの駆動信号が供給されるとそれぞれ１回転する。
【００３０】
リール位置検出回路７１は、リール４０の近傍に設けられてリール４０の回転位置を検出するための図示しないフォトセンサから出力パルス信号を受け、３つのリール４０それぞれの回転位置を検出し、その検出信号を出力するものである。図示しないフォトセンサは各リール４０が一回転する毎に各リール４０に設けられた遮蔽板を検出してリセットパルスを発生する。このリセットパルスはリール位置検出回路７１を介してメイン基板１のＣＰＵに与えられる。メイン基板１のＲＡＭ内には、各リール４０について一回転の範囲内における回転位置に対応した計数値が格納されており、ＣＰＵはリセットパルスを受け取ると、ＲＡＭ内に形成されたこの計数値を“０”にクリアする。このクリア処理により、各シンボルの移動表示と各ステッピングモータの回転との間に生じるずれが、一回転毎に解消されている。
【００３１】
ホッパー駆動部８０は、メダルを収納するとともに指示された入賞に応じた枚数のメダルを払い出すホッパー８１のモーターを駆動する回路である。
【００３２】
メダル検出部８２は、ホッパー８１から払い出されるメダル数を計数するためのものである。メイン基板１のＣＰＵは、このメダル検出部８２から受けた実際に払い出しのあったメダル計数値が入賞に応じた所定の配当枚数データに達した時に、ホッパー駆動部８０による駆動を停止させ、メダル払い出しを終了させる。ホッパー駆動回路８０，メダル検出部８２により、遊技の結果にて得られた入賞に基づいて所定枚数のメダルが遊技者に払い出される。
【００３３】
液晶制御基板２００は、液晶表示部６２を駆動するための回路である。
スピーカ基板２０１は、図示しないスピーカを吹鳴駆動するための回路である。
ＬＥＤ基板２０２は、図示しない表示ランプやバックランプを駆動するための回路である。
【００３４】
液晶表示装置６２、図示しないスピーカや表示ランプ等は演出表示装置を構成する。この演出表示装置は、遊技者に入賞等を報知したり、いわゆるアシストタイム（ＡＴ）において、一定ゲーム間に特定の小役を台自体が何らかのアクションを伴ってユーザに教えるためのものである。
【００３５】
なお、メイン基板１のＲＯＭには、このスロットマシン１０で実行されるゲーム処理の手順がシーケンスプログラムとして記憶されている他、入賞確率テーブル，シンボルテーブルおよび入賞シンボル組合せテーブル等がそれぞれ区分されて格納されている。入賞確率テーブルは、メイン基板１で抽出された乱数を各入賞態様に区分けするように区分されており、メイン基板１で発生する一定範囲の数値の中から抽出される乱数を各入賞態様に区画するデータを記憶している。すなわち、入賞確率テーブルは、乱数の全領域に対応して、各入賞態様ごとに区分された領域を有するものである。例えば、０〜一定数の範囲を複数に区分し、ひとつの区分（領域）を外れとし、他の区分（領域）を入賞１、入賞２、・・・というように設定する。抽出された乱数データは、抽出された乱数と対応するようにした全領域中の各入賞態様ごとに区分された入賞判定領域データそれぞれと照合し、当該抽出乱数データが属する入賞態様に対応する当選が決定される。例えば、抽出された乱数の数値が、入賞確率テーブル５のどの区分（領域）に属するか調べ、その区分が例えば入賞１の区分であれば「入賞１」と判定される。同様に、抽出された乱数の数値が入賞判定テーブル５の外れの区分（領域）に属すれば「外れ」と判定される。抽選処理の評価が例えば外れの場合は所定の図柄が揃わないように設定され（いわゆる蹴飛ばし）、当たりの場合はストップスイッチが所定のタイミングで押下されることなどを条件に所定の図柄が揃うように設定される（いわゆる引き込み）。そして、所定の図柄が揃えば入賞図柄に相当するメダルが払い出される。各種の入賞はこのような入賞確率テーブルのデータ設定に応じた確率の下で発生し図柄の停止制御が行われるため、遊技者の技量に極端に左右されることなく、例えば１日の営業時間内でのトータル的なメダル支払い率がほぼ一定に維持されている。
【００３６】
上述のようにメイン基板１のＲＯＭには、プログラム、入賞確率テーブル，シンボルテーブルおよび入賞シンボル組合せテーブル等がそれぞれ区分されて格納されているが、ＲＯＭに記憶されているという点でこれらを総称してＲＯＭデータと呼ぶことにする。あるいはＣＰＵに読み込ませて制御処理をする動作させるためのプログラム及びこれに関連するデータという点でそれらを総称してプログラムとも呼ぶことがある。
【００３７】
図３は復号化ＩＣ１ｃの内部構造を示す。プログラムＲＯＭ１ｂに記憶された暗号化されたプログラムは、まずデータビット組み替え部１ｃ−２でそのビットの組み替えが行われ、次に排他的論理和（ＸＯＲ）演算部１ｃ−３で復号キーレジスタ１ｃ−１の復号キーと排他的論理和を求めることにより復号化が完了する。こうして復号化されＣＰＵ１ａが読める状態になったプログラム（オブジェクトコード）がＣＰＵ１ａに与えられる。復号キーは初期設定時に復号キーレジスタ１ｃ−１に記憶される。復号化については後に詳しく説明する。
【００３８】
図３では、プログラムの解析をより困難にするためにアドレスについても暗号化（スクランブル）を行っている。本発明の実施の形態では、スクランブルとしてアドレスビットの組み替えを採用しているが、他のやり方、例えば特定のキーとの排他的論理和を求めるようにしてもよい。ＣＰＵ１ａから出力されるアドレスは、アドレスビット組み替え部１ｃ−４でアドレスビットの組み替えが行われ、その後プログラムＲＯＭ１ｂに与えられる。アドレスビット組み替えについては後に詳しく説明する。
【００３９】
なお、図３の構成は一例であって、本発明は他の構成も取り得る。以下に他の例を挙げる。
・プログラムについてのみ復号化する。アドレスのスクランブルを行わない。
・アドレスのスクランブルのみ行う。プログラムの暗号化・復号化を行わない。
・プログラムについて、復号キーに基づく復号化のみ行う。データビット組み替えを行わない。
・プログラムについて、データビット組み替えのみ行う。復号キーに基づく復号化を行わない。
【００４０】
図３において復号化ＩＣ１ｃとＣＰＵ１ａの間の配線は隠蔽されている（図３のＳ：隠蔽部分）。この部分の配線を流れる信号は暗号化されていないため、もし隠蔽されていないとすれば第三者の解析が容易である。当該配線へのアクセスを困難にすることにより第三者による解析を防止するようにしたものである。隠蔽のやり方として、当該配線やＩＣの端子を覆う保護部材を貼り付けたり、容易に剥離しない樹脂を塗布するといったことが考えられる。また、図４のようにＢＧＡパッケージと多層基板を利用することもできる。
【００４１】
図４は復号化ＩＣ１ｃとＣＰＵ１ａの間の配線を隠蔽した基板、これらのパッケージ及び配線の構成例を示す。図４（ａ）はメイン基板１の平面図（ＣＰＵ１ａと復号化ＩＣ１ｃの部分のみを示す）、図４（ｂ）は同側面図である。基板上で復号化されたデータ情報を外部に取り出すことを困難にするため、ＣＰＵ１ａ及び復号化ＩＣ１ｃをＩＣパッケージ直下に接続端子があり外部に接続端子が露出しないパッケージ（例えばＢＧＡなど）に収納している。さらに、ＣＰＵ１ａと復号化ＩＣ１ｃ間の接続に多層基板（４層や６層など）の内部層を使用している。このように構成すれば基板表面や裏面に配線パターンを露出させないようにできる。
【００４２】
ＢＧＡ （Ｂａｌｌ Ｇｒｉｄ Ａｒｒａｙ）とは、ICパッケージの1種である。QFP（Quad Flat Package：ＩＣチップのパッケージ方法の一つで、外部入出力用のピンをパッケージの四辺に配したもの）よりもさらに多ピン化するLSIのために開発された表面実装用のパッケージである。「ハンダボール」と呼ばれる小さいハンダ材料を丸めたものをICパッケージの裏面に50mil程度の間隔で並べておき、これをプリント基板に表面実装する。QFPなどと違って、ICパッケージの裏面全体を基板との接続用に使えるため、総パッド数（基板との接点の数。QFPなどのピン数に相当）を大幅に増やすことができる。また、パッドの間隔をQFPの各ピン間隔よりも広くすることができるので、その分半田付け不良などが発生する確率が低くなるという特徴がある。
【００４３】
図４でＣＰＵ１ａと復号化ＩＣ１ｃに設けられたパッドＰはパッケージの下面の内側に設けられているので、基板取り付け状態においてパッドＰにアクセスすることはできない。また、ＣＰＵ１ａと復号化ＩＣ１ｃの間の配線Ｌは、多層基板Ｂの内部層１０１，１０２に設けられるのでやはりアクセスすることはできない（アクセスするためにはＩＣをはずしたり基板の表面を剥離する必要があるが、これには技術的な困難が伴う）。通常であれば表面１０３と裏面１０４に配線パターンを設けることができるが、本発明の実施の形態の隠蔽部分Ｓに関して表面１０３と裏面１０４を使用しない。なお、図４は本発明の実施の形態を模式的に説明したものであって実際とは異なる。実際のパッケージの形状とは異なるし、パッドＰの数はもっと多い。実際の配線の数も図４よりも多く、かつ、複雑である。
【００４４】
技術的には、このような工夫を行ったとしても、基板表面よりＩＣを剥離し、かつ基板パターンチェックを行っていくことにより復号化ＩＣの必要信号を解析することも可能であるし、またその必要信号より復号化ＩＣ内の構造を解析することも可能と思われるが、このような解析の場合には相当の技術力、期間、費用が必要となるため、ＲＯＭ内容の不正改ざんの抑止につながると思われる。
【００４５】
図５のフローチャートを参照してプログラム読み出し処理について説明する。
【００４６】
Ｓ１：遊技機の初期設定時に復号化ＩＣの復号キーレジスタに復号キーを設定する。遊技機製造者にとってプログラムの暗号化のアルゴリズムと暗号キーは既知であるから、当該暗号キーに対応する復号キーを簡単に用意できる。他方、これらの情報の管理に十分注意を払っていれば第三者はこれらを知ることは困難であり、プログラムの解析を防止できる。なお、復号キーは当局に届ける機種ごとに用意しておけばよい。
【００４７】
Ｓ２：ＣＰＵが命令を読み込もうとしてアドレスを生成する。
【００４８】
Ｓ３：プログラムＲＯＭの生成に際してアドレスのスクランブルを行っている場合は、生成されたアドレスをスクランブルする。例えば次のようにアドレスを組み替えることによりアドレスをスクランブルする。
例）アドレス組み替え：７６５４３２１０→１０７６３２５４
上記例は左側の特定のビットを、右側の同じ数字の位置に配置することを意味する。例えば、最も左のビット（７）を左から３番目の位置に配置する。アドレス組み替えの例を下に示す。
ＣＰＵ要求アドレス          →  組み替え後のＲＯＭアドレス
０００００００１（０１Ｈ）  →  ０１００００００（４０Ｈ）
００００００１０（０２Ｈ）  →  １０００００００（８０Ｈ）
００００００１１（０３Ｈ）  →  １１００００００（Ｃ０Ｈ）
０００００１００（０４Ｈ）  →  ０００００１００（０４Ｈ）
【００４９】
アドレス組み替えについては、１ビット、２ビット、４ビット、８ビット単位での入れ替えを考えることができる。どのような単位で入れ替えを行うか、あるいは入れ替えの組み合わせパターンを何通り準備するかについては、ハードウエアにて構成される復号化ＩＣの性能などに合わせればよい。
【００５０】
Ｓ４：スクランブルされたアドレスに従ってプログラムＲＯＭのデータを読み出す。
【００５１】
Ｓ５：プログラムＲＯＭの生成に際してデータのビット組み替えを行っている場合は、読み出したデータのビット組み替えを行う。例えば次のようにデータのビットを組み替える。
例）アドレス組み替え：７６５４３２１０→５４１０３２７６
このアドレス組み替えの例を下に示す。
プログラムＲＯＭのデータ    →  組み替え後のデータ
１１１１１１０１（ＦＤＨ）  →  １１０１１１１１（ＤＦＨ）
０１１１１１１１（７ＦＨ）  →  １１１１１１０１（ＦＤＨ）
【００５２】
Ｓ６：読み出したデータを復号キーで復号化する。例えば、プログラムの暗号化のアルゴリズムを暗号キーと排他的論理和（ＸＯＲ）を求めるというものであるとき、復号化のアルゴリズムは排他的論理和（ＸＯＲ）を求めることであり、復号キーは暗号キーと同じものになる。
復号キーが０００１００１１（１３Ｈ）であるとき、次のように復号化される。
１１０１１１１１（ＤＦＨ）  →  １１００１１００（ＣＣＨ）：平文データ
復号キーが００１１０００１（３１Ｈ）であるとき、次のように復号化される。
１１１１１１０１（ＦＤＨ）  →  １１００１１００（ＣＣＨ）：平文データ
【００５３】
Ｓ７：復号化したデータをＣＰＵへ送る。
【００５４】
Ｓ８：ＣＰＵが復号化されたデータに基づき動作する。受けたデータが命令であれば当該命令を実行する。
【００５５】
以上のＳ２乃至Ｓ８の処理が繰り返される。
【００５６】
なお、実際にこれらの暗号・復号およびアドレススクランブルを利用するに当たっては、システムリセット後にＣＰＵにて復号化ＩＣに対する初期設定を行う必要があるため、例えばＲＯＭ先頭の１２８バイト程度は平文データ（未暗号化データ）となってしまう。しかし、その平文データに含まれる設定情報より暗号化・スクランブル方法を類推するためには復号化ＩＣ内部の構造を知っておく必要があるため、復号化ＩＣ構造が知られない限りにおいては、ＲＯＭ内容から暗号解読を行うことは困難と思われる。
【００５７】
以上は遊技機における処理の説明であった。次に、遊技機を製造するときにプログラムを暗号化する処理、及び、型式検定等の際にプログラムの内容を確認する処理について説明する。
【００５８】
図６（ａ）は遊技機を製造するときにプログラムをＲＯＭに書き込むための装置を示す。図６（ｂ）は遊技機のプログラムの内容を確認する装置を示す。
【００５９】
図６（ａ）において、１１０はアドレススクランブル処理部であり、これに含まれるアドレスビット組み替え部１１０−１でアドレスビットの組み替えを行う。これは遊技機のメイン基板１のＣＰＵ１ａがプログラムを読み出す際に、復号化ＩＣ１ｃで行う処理と同じであり、その詳細は前述した通りである。１１１はデータ暗号化処理部である。プログラムのデータ（オブジェクトコード）は、まず排他的論理和（ＸＯＲ）演算部１１１−３で暗号キーレジスタ１１１−１の暗号キーと排他的論理演算が施され、次に、データビット組み替え部１１１−２でそのビットの組み替えが行われる。このようにして暗号化されたプログラムデータがプログラムＲＯＭ１ｂに書き込まれる。
【００６０】
図７はプログラム書き込み処理を示すフローチャートである。
【００６１】
Ｓ１０：暗号キーを用意する。排他的論理和（ＸＯＲ）演算に使用するキー値は、例えば８ビット演算の場合には全部０、全部１以外の値であれば使用可能なため、キー値の組み合わせは２５４通りとなる。
【００６２】
Ｓ１１：プログラム（オブジェクトコード）を用意する。
【００６３】
Ｓ１２：プログラムデータを書き込むアドレスを生成する。
【００６４】
Ｓ１３：生成されたアドレスをスクランブルする。この処理の内容は前述したとおりである。
【００６５】
Ｓ１４：プログラムデータを暗号キーで暗号化する。
データの暗号化の例を下に示す。
例１）暗号キー値が０００１００１１（１３Ｈ）であるとき、次のように暗号化される。
変換式Ｙ（ｘ）：ＸＯＲ  ０００１００１１
１１００１１００（ＣＣＨ）  →  １１０１１１１１（ＤＦＨ）：暗号化データ
例２）暗号キー値が００１１０００１（３１Ｈ）であるとき、次のように暗号化される。
変換式Ｙ（ｘ）：ＸＯＲ  ００１１０００１
１１００１１００（ＣＣＨ）  →  １１１１１１０１（ＦＤＨ）：暗号化データ
【００６６】
Ｓ１５：暗号化したデータのビット組み替えを行う。
データビットの組み替えの例を下に示す。
例１）データビット組み替え：７６５４３２１０→１０７６３２５４であるとき、次のように並べ替えられる。
１１０１１１１１（ＤＦＨ）  →  １１１１１１０１（ＦＤＨ）：暗号化・ビット組み替えたプログラムデータ
例２）データビット組み替え：７６５４３２１０→１０７６３２５４であるとき、次のように並べ替えられる。
１１１１１１０１（ＦＤＨ）  →  ０１１１１１１１（７ＦＨ）：暗号化・ビット組み替えたプログラムデータ
【００６７】
Ｓ１６：暗号化・ビット組み替えたプログラムデータをプログラムＲＯＭのスクランブルされたアドレスに書き込む。
【００６８】
Ｓ１７：全てのプログラムデータを書き込んだかどうか判定し、書き込んでいないプログラムデータがあれば（ＮＯ）、Ｓ１２乃至Ｓ１６の処理を繰り返す。
【００６９】
図６（ｂ）において１２０はプログラムＲＯＭの検査合計を求めるためのＣＰＵである。遊技機においてＲＯＭのプログラムは機種ごとに同じであり、したがってその検査合計は一定である。検査合計を求める際に、アドレスビット組み替え部は不要である。通常、検査合計は全てのアドレスのデータについて求めるのでアドレスビット組み替えの有無は結果に影響を与えない。また、復号化処理部とデータビット組み替え部も不要である。ここで行う検査はプログラムＲＯＭの検査合計が予め届けられたものと一致するかどうかを判定するものであり、プログラムの内容をオブジェクトコードのレベルで検証するものではないので、暗号化・ビット組み替えた状態のプログラムの検査合計を届けておけば復号化処理部及びデータビット組み替え部は必要でない。
【００７０】
図８はプログラムの内容確認処理を示すフローチャートである。
【００７１】
Ｓ２０：プログラムＲＯＭを取り外す。
Ｓ２１：プログラムＲＯＭの全データを読み出す。
Ｓ２２：プログラムＲＯＭの全データについて検査合計を求める。
Ｓ２３：予め登録してあるプログラムＲＯＭに関する検査合計と比較する。
Ｓ２４：両者が一致するかどうか判定し、一致すれば（ＹＥＳ）当該プログラムＲＯＭは検査をパスし、不一致であれば（ＮＯ）検査をパスしない。
【００７２】
検査合計（チェックサム、sum check）について簡単に説明する。デジタルデータの個々の桁を使って得られる合計を検査することを検査合計(check sum)という。８ビットのデジタルデータが１００個ある場合、各桁ごとに１００個全部の総和を計算する。このとき桁上がりは無視する。最終的には当該桁が１であるデータの数が偶数であれば０、奇数であれば１となる。データのビット数と同じ８ビットの検査合計が得られる。検査合計は、例えば二進デジタルデータである機械語(machine language)のプログラムやデータを打ち込むときの検査に使われる。検査合計を用いると同じデータに対して異なる機会に計算した又はそのデータの異なる表示に対してデータの完全性を検証することができる。
【００７３】
ところで判断の基準として上記説明において検査合計（チェックサム）を例にとり説明したが、本発明はこれに限定されない。ＲＯＭのデータについて固有な値（特徴値）を生成する任意のアルゴリズムを採用することができる。以下に例を挙げる。
【００７４】
（１）ＣＲＣ（cyclic redundancy check）
ＣＲＣは、巡回冗長検査，周期冗長検査などと呼ばれ、データ伝送での検査方式の一つで,ブロック(block),あるいはフレーム(frame)ごとに冗長符号をつけて伝送し,それによって伝送内容が正確であったかどうかを調べる方法である。巡回的なアルゴリズムによって余分の数字又は文字を生成して行うので、ＲＯＭデータに冗長符号を付けて記憶しておけば、これを利用して改変をチェックすることができる。
【００７５】
（２）ハッシュ関数
与えられた原文から固定長の疑似乱数を生成する演算手法である。生成した値は「ハッシュ値」と呼ばれる。「要約関数」「メッセージダイジェスト」とも呼ばれる。通信回線を通じてデータを送受信する際に、経路の両端でデータのハッシュ値を求めて両者を比較すれば、データが通信途中で改ざんされていないか調べることができる。不可逆な一方向関数（引数から結果を求めるのは簡単だが、結果から引数を求めることは難しいような関数）を含むため、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である。通信の暗号化の補助や、ユーザ認証やデジタル署名などに応用されている。ＭＤ５（Message Digest 5）やSHA-1（Secure Hash Algorithm 1）が知られている。
【００７６】
なお、ハッシュ関数のような一方向関数を利用すれば、不正行為をより確実に防止することができると考えられる。例えば、ＲＯＭのデータについて単純にその検査合計を求めるだけでは、不正行為を行う者がこれに気づいたとき、検査合計が正規のＲＯＭのデータの場合と同じになるようにＲＯＭのデータを改変することが可能である。しかし、一方向関数を用いるとこのような逆演算は不可能であり、原データと同じ結果を得るための改変のやり方を知ることはできない。したがって、何らかの改変が行われたらこれを確実に知ることができる。
【００７７】
（３）論理演算
論理和、論理積、排他的論理和など。例えばデータ全体について排他的論理和を求める。あるいは鍵データを用意しておき、各データと鍵データの論理演算を行い、その出力について検査合計を求める。
【００７８】
本発明の実施の形態によれば、アドレススクランブルとデータ復号化機能を持ったＩＣ（復号化ＩＣ）を、ＣＰＵとＲＯＭの間に介在させることにより、ＲＯＭの内容を解析困難とできる。また、基板上で復号化されたデータ情報を外部に取り出すことを困難にするため、ＣＰＵ及び復号化ＩＣは外部に接続端子が出ないパッケージ（例えばＢＧＡなど）を用い、さらに本ＩＣ間の接続は多層基板の内部層を使用するようにした。
【００７９】
なお、上記暗号化・復号化アルゴリズムは一例であり、他のアルゴリズムを採用することができる。暗号化・復号化については単一の方式のみとせずに、例えば復号化ＩＣ内に備えたレジスタへの設定により複数の方式を組み合わせるようにしてもよい。このようにすれば、遊技機の機種変更（すなわち制御プログラムの変更）を行った場合に、今までと異なる暗号化データを使用することが可能となるため、長期に渡り多くの機種に同一制御基板を使用したときであっても第三者による解析を困難にできる。
【００８０】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００８１】
また、本明細書において、部とは必ずしも物理的手段を意味するものではなく、各部の機能が、ソフトウェアによって実現される場合も包含する。さらに、一つの部の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の部の機能が、一つの物理的手段により実現されてもよい。
【図面の簡単な説明】
【００８２】
【図１】遊技機（スロットマシン）の正面図である。
【図２】発明の実施の形態に係る遊技機のブロック図である。
【図３】発明の実施の形態に係る復号化ＩＣのブロック図である。
【図４】発明の実施の形態に係るＣＰＵとプログラム間の配線を隠蔽するやり方の説明図である。
【図５】発明の実施の形態に係るプログラムの読み出し処理のフローチャートである。
【図６】図６（ａ）は発明の実施の形態に係る遊技機を製造するときにプログラムをＲＯＭに書き込むための装置を示す。図６（ｂ）は遊技機のプログラムの内容を確認する装置を示す。
【図７】発明の実施の形態に係るプログラムの書き込み処理のフローチャートである。
【図８】発明の実施の形態に係るプログラムの内容確認処理のフローチャートである。
【符号の説明】
【００８３】
１    メイン基板
１ａ  ＣＰＵ
１ｂ  プログラムＲＯＭ
１ｃ  復号化ＩＣ
１ｃ−１  復号キーレジスタ
１ｃ−２  データビット組み替え部
１−ｃ３  排他的論理和（ＸＯＲ）演算部
１−ｃ４  アドレスビット組み替え部
２    サブ基板
１０    スロットマシン
１１    筐体
１２    表示窓
１３    図柄表示窓
１６    ベットスイッチ
１７    精算スイッチ
３０    スタートスイッチ
４０    回転リール
４２    リールテープ
５０    ストップスイッチ
６０    リールユニット
６１    図柄
６２    液晶表示部
７０    リール駆動部
７１    リール位置検出回路
８０    ホッパー駆動部
８１    ホッパー
８２    メダル検出部
１００  メダル投入口
１０１  基板の内部層
１０２  基板の内部層
１０３  基板の表面
１０４  基板の裏面
１１０  アドレススクランブル処理部
１１０−１  アドレスビット組み替え部
１１１  データ暗号化処理部
１１１−１  暗号キーレジスタ
１１１−２  データビット組み替え部
１１１−３  排他的論理和（ＸＯＲ）演算部
１２０  検査合計算出用ＣＰＵ
２００  液晶制御基板
２０１  スピーカ基板
２０２  ＬＥＤ基板
３０４  メダル払い出し口
３１１  メダル受け部（下皿）
Ｂ    基板
Ｌ    ＣＰＵとプログラムＲＯＭ間の配線
Ｐ    ＢＧＡパッケージのパッド（端子）
【図１】
2005245531.tif 000003
【図２】
2005245531.tif 000004
【図３】
2005245531.tif 000005
【図４】
2005245531.tif 000006
【図５】
2005245531.tif 000007
【図６】
2005245531.tif 000008
【図７】
2005245531.tif 000009
【図８】
2005245531.tif 000010