JP2005245531A - 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体 - Google Patents

遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体 Download PDF

Info

Publication number
JP2005245531A
JP2005245531A JP2004056595A JP2004056595A JP2005245531A JP 2005245531 A JP2005245531 A JP 2005245531A JP 2004056595 A JP2004056595 A JP 2004056595A JP 2004056595 A JP2004056595 A JP 2004056595A JP 2005245531 A JP2005245531 A JP 2005245531A
Authority
JP
Japan
Prior art keywords
program
cpu
data
address
program storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004056595A
Other languages
English (en)
Inventor
Kokichi Miyazaki
晃吉 宮崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Olympia KK
Original Assignee
Olympia KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Olympia KK filed Critical Olympia KK
Priority to JP2004056595A priority Critical patent/JP2005245531A/ja
Publication of JP2005245531A publication Critical patent/JP2005245531A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Slot Machines And Peripheral Devices (AREA)

Abstract

【課題】 予め登録したプログラムの内容確認作業に支障を与えることなく、第三者によるプログラムの解析を困難にでき、プログラムの改ざんを防止することができる。
【解決手段】 CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて内部抽選及び入賞判定を行うとともに入賞に応じて遊技媒体の払い出し制御を行う遊技機のメイン基板において、前記プログラム記憶部に記憶されたプログラムは暗号化され、前記CPUと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けた。暗号化により第三者のプログラムの解析は困難になるが、検査合計に基づくプログラムの内容確認作業は支障なく行える。
【選択図】 図1

Description

この発明は、スロットマシン等の遊技機であって、即にその制御にCPUとプログラムを備えるものに関する。さらに当該遊技機のプログラム読み出し方法、遊技機の検査方法並びに当該方法をコンピュータに実行させるためのプログラム、記録媒体に関する。
スロットマシンやパチンコ機などの遊技機はマイコンを内蔵していて、抽選・入賞・払い出し・演出の制御をプログラムで実現している。この種の遊技機は、遊戯者の操作を受けて内部抽選及び該抽選結果に応じた入賞判定を行うとともに、入賞に応じて遊技媒体の払い出し制御を行う第1処理部(いわゆるメイン基板)と、第1処理部から遊戯者の操作を受けて処理を行い生成したコマンドを受けて内部抽選の結果を報知したり、各種演出を行う第2処理部(いわゆるサブ基板)とを備えている。
遊技機はマイコンで制御を行っており、そのためメイン基板やサブ基板はCPU、ROM、RAMなどを備える。マイコン制御を行っている遊技機においては、制御プログラムやデータを格納している媒体であるROMを型式試験時に取り外し、簡単に内容確認を行える必要がある。このことは容易にROMの内容確認を行えるということである。このためプログラムを不正な目的のために解析することも簡単に行えてしまった。
本発明は上記課題を解決するためになされたもので、型式試験時におけるROM内容確認の利便性を残したまま、不正目的の解析を極めて困難にすることを目的とする。
この発明は、CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において、
前記プログラム記憶部に記憶されたプログラムは暗号化されており、前記CPUと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けたものである。
なお、従来の遊技機は、CPU及び前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部を含み、遊技者の操作を受けて内部抽選及び入賞判定を行うとともに入賞に応じて遊技媒体の払い出し制御を行う第1処理部(いわゆるメイン基板)と、CPU及び前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部を含み、前記第1処理部からのコマンドに従って演出処理を行う第2処理部(いわゆるサブ基板)とを備えるが、この場合において、前記プログラム記憶部に記憶されたプログラムを暗号化し、前記CPUと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けることを前記第1処理部についてのみ適用してもよいし(発明の実施の形態1はこの例で説明している)、前記第2処理部についてのみ適用してもよい。あるいは、前記第1処理部と前記第2処理部の両方に適用してもよい。処理部を3つ以上備える場合も同様である。
前記復号化装置は、例えば、復号キーを記憶するレジスタと、前記復号キーに基づき暗号化された前記プログラムを復号化する復号化部とを備える。
前記復号化装置は、好ましくは、前記プログラム記憶部からのデータのビットを組み替えるデータビット組み替え部をさらに備える。
前記復号化装置は、好ましくは、前記CPUから前記プログラム記憶部へ出力するアドレスのビットを組み替えるアドレスビット組み替え部をさらに備える。
好ましくは、前記CPUと前記復号化装置は、基板に取り付けられた状態で接続端子が外部に露出しないパッケージに収納され、かつ、前記CPUと前記復号化装置の間の配線は多層基板の内部層に設けられ、当該配線が外部に露出しないように構成されている。
この発明は、CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機におけるプログラムの読み出し方法であって、
プログラムを読み出すためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
読み出したデータのビットを組み替えるステップと、
ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
復号化したデータをCPUへ送るステップと、を備えるものである。
この発明は、CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において前記プログラムを検査する方法であって、
プログラムを書き込むためのアドレスを生成するステップと、
前記アドレスのビットをスクランブルするステップと、
用意されたプログラムのデータを予め定められた暗号キーで暗号化するステップと、
暗号化されたデータのビットを組み替えるステップと、
組み替えたデータをプログラム記憶部のスクランブルされたアドレスに書き込むステップと、
前記プログラム記憶部に書き込まれたデータ全体を読み出すステップと、
前記データ全体について検査合計を求めるステップと、
求められた検査合計を予め用意された検査合計と比較するステップと、
前記比較結果に基づき良否の判定を行うステップと、を備えるものである。
この発明は上記方法をCPUに実行させるためのプログラムである。
この発明に係るプログラムは、例えば、記録媒体に記録される。
媒体には、例えば、EPROMデバイス、フラッシュメモリデバイス、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、CD(CD−ROM、Video−CDを含む)、DVD(DVD−Video、DVD−ROM、DVD−RAMを含む)、ROMカートリッジ、バッテリバックアップ付きのRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等を含む。
また、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等の通信媒体を含む。インターネットもここでいう通信媒体に含まれる。
媒体とは、何等かの物理的手段により情報(主にデジタルデータ、プログラム)が記録されているものであって、コンピュータ、専用プロセッサ等の処理装置に所定の機能を行わせることができるものである。
本発明によれば、プログラムの内容確認作業に支障を与えることなく、第三者によるプログラムの解析を困難にでき、プログラムの改ざんを防止することができる。
この発明の実施の形態に係る遊技機について図面を参照して説明する。
図1は遊技機(スロットマシン)の正面図である。
スロットマシン10で遊技を楽しもうとする遊技者は、まずメダル貸機(図示しない)等から遊技媒体であるメダルを借り、メダル投入装置のメダル投入口100に直接メダルを入れる。メダル投入口100は、スロットマシン10の正面で略中央の高さに設けられている。
スロットマシン10は、四角箱状の筐体11を有する。前記筐体11の中央部及び上部には、遊技者側に向かって臨む四角窓状の表示窓12が形成されている。そして、この中央部の表示窓12の中央には、三個の回転リール40の図柄61を見ることができる図柄表示窓13が形成されている。ベットスイッチ16は、回転リール40の下方に位置するスイッチであって、メダル投入口100に連続してメダル投入をして貯留させた貯留メダル数を減じてメダル投入に代える。精算スイッチ17は、回転リールの斜め下方に位置するスイッチであって、貯留した投入メダルを払い出す。スタートスイッチ30は回転リール40の斜め下方に位置するレバーであって、遊技メダルの投入若しくはベットスイッチ16の投入を条件に、リールユニット60の駆動を開始させる。ストップスイッチ50は、リールユニット60の駆動を停止させるためのものである。リールユニット60は、三個の回転リール40とから構成されている。そして、各回転リール40は、合成樹脂からなる回転ドラムと、この回転ドラムの周囲に貼付されるテープ状のリールテープ42とを備えている。このリールテープ42の外周面には、複数個(例えば21個)の図柄61が表示されている。62は各種の演出を行うための液晶表示部である。
スロットマシン10の内部には、図示していないが、スロットマシン10の全体の動作を制御するための制御装置が内蔵されている。制御装置は、図示しないが、CPUを中心に構成され、ROM、RAM、I/O等を備えている。そして、CPU(処理部)が遊技者の操作を受けてROM(記憶部)に記憶されたプログラムを読み込むことで動作させるものであり、具体的には、スタートスイッチ30及びストップスイッチ50の操作に基づき回転リール40の回転及び停止を制御するとともに、ランプやスピーカ等の表示を制御する。CPUが動作する際に必要な一時的なデータなどはRAMに記憶される。CPUはROMに記録されたプログラムに従って所定の動作を行うとともに、RAMに処理に必要な一時的なデータを記録するとともに記録されたデータを必要に応じて読み出して参照する。
スタートスイッチ30は、前述のように回転リール40の斜め下方に位置するレバーであって、遊技メダルの投入若しくはベットスイッチ16の投入を条件に、または、入賞判定に応じて得られる「再遊技(Replay)」時には前遊技からの所定時間経過を条件に、リールユニット60の駆動を開始させるためのものである。
ストップスイッチ50は、前述のようにリールユニット60の駆動を停止させるためのものである。具体的には、ストップスイッチ50は、各回転リール40に対応した三個のスイッチから構成され、各回転リール40の下方に1個ずつ配置されているものである。回転リール40に対応したストップスイッチ50の操作により、当該対応した回転リール40の回転を停止するように設定されている。
メダルの投入若しくはベットスイッチ16の投入を条件に、または、前記「再遊技(Replay)」時には前遊技から所定時間経過を条件に、スタートスイッチ30を操作すると、リールユニット60が駆動され、三個の回転リール40が回転を開始する。その後、ストップスイッチ50の一個を操作すると、当該対応する回転リール40の回転が停止する。そして、ストップスイッチ50を三個全て操作すると、三個の回転リール40の回転が全て停止する。このとき、表示窓12の有効入賞ライン上に、予め設定された図柄61が停止すると入賞と判定され、図示しないホッパーユニットを介して所定枚数のメダルが払い出される。なお、メダルを払い出す代わりに、クレジットしてもよい。
前述の制御装置は、スタートスイッチ30及びストップスイッチ50の操作に基づき回転リール40の回転及び停止を制御する際に、予め定めた内部抽選確率に基づいて入賞か否かの入賞判定のための抽選を行う入賞抽選手段を含む。この入賞抽選手段による内部抽選結果が当選である場合に入賞フラグが成立し、この入賞フラグ成立中に、回転リール40の停止図柄の組み合わせが予め定められた入賞図柄と一致したことを条件に入賞が確定し、遊技者にメダルの払い出しや、遊技者にとって有利な特別遊技等の利益が付与されるように設定されている。
図2はスロットマシン10の電気的な概略構造を示すブロック図である。この図において電源系統についての表示は省略されている。スロットマシン10は、その主要な処理装置としてメイン基板1(第1処理部)とこれからコマンドを受けて動作するサブ基板2(第2処理部)とを備える。なお、メイン基板1とサブ基板2はそれぞれ、外部から接触不能となるようにケース内部に収容され、これら基板を取り外す際に痕跡が残るように封印処理が施されている。
メイン基板1は、遊技者の操作を受けて内部抽選を行ったり、リールの回転・停止やメダルの払い出しなどの処理を行うためのものである。メイン基板1は、予め設定されたプログラムに従って制御動作を行うCPU1aと、前記プログラムを記憶する記憶手段であるプログラムROM1bおよび処理結果などを一時的に記憶する図示しないRAMを含む。プログラムROM1bに記憶されたプログラム(オブジェクトコード)は、第三者による解析を防止するために暗号化されていて、そのままではCPU1aは命令を実行できない。そのためプログラムROM1bとCPU1aの間に復号化IC1cを設け、プログラムを復号化している。復号化IC1cは復号するための復号キーを記憶する復号キーレジスタ1c−1を含む。復号化IC1cについては後に詳しく説明する。
サブ基板2は、メイン基板1からコマンド信号を受けて内部抽選の結果を報知したり各種演出を行うためのものである。サブ基板2は、前記コマンド信号に応じた予め設定されたプログラムに従って制御動作を行うCPUと、前記プログラムを記憶する記憶手段であるROMおよび処理結果などを一時的に記憶するRAMを含む。なお、メイン基板1のように、サブ基板2においてもプログラムを暗号化して記憶しておき、復号化するための復号化ICを設けてもよい。
サブ基板2はメイン基板1からコマンドをうけ、これに従って演出等の処理を行う。コマンドの流れはメイン基板1からサブ基板2への一方のみであり、逆にサブ基板2からメイン基板1へコマンド等が出されることはない。
メイン基板1にはスタートスイッチ30,ストップスイッチ50,リール駆動部70,リール位置検出回路71、ホッパー駆動部80及びホッパー81から払い出されたメダルの枚数を数えるためのメダル検出部82が接続されている。サブ基板2には液晶表示装置62の制御基板200、スピーカ基板201、LED基板202などの周辺基板(ローカル基板)が接続されている。以下、スタートスイッチ30,ストップスイッチ50を除く、これらの周辺基板/装置について説明する。
リール駆動部70は、3つのリール40を回転駆動する図示しないステッピングモータを駆動する回路である。各ステッピングモータはリール駆動回路70によって1−2相励磁されており、所定数のパルスの駆動信号が供給されるとそれぞれ1回転する。
リール位置検出回路71は、リール40の近傍に設けられてリール40の回転位置を検出するための図示しないフォトセンサから出力パルス信号を受け、3つのリール40それぞれの回転位置を検出し、その検出信号を出力するものである。図示しないフォトセンサは各リール40が一回転する毎に各リール40に設けられた遮蔽板を検出してリセットパルスを発生する。このリセットパルスはリール位置検出回路71を介してメイン基板1のCPUに与えられる。メイン基板1のRAM内には、各リール40について一回転の範囲内における回転位置に対応した計数値が格納されており、CPUはリセットパルスを受け取ると、RAM内に形成されたこの計数値を“0”にクリアする。このクリア処理により、各シンボルの移動表示と各ステッピングモータの回転との間に生じるずれが、一回転毎に解消されている。
ホッパー駆動部80は、メダルを収納するとともに指示された入賞に応じた枚数のメダルを払い出すホッパー81のモーターを駆動する回路である。
メダル検出部82は、ホッパー81から払い出されるメダル数を計数するためのものである。メイン基板1のCPUは、このメダル検出部82から受けた実際に払い出しのあったメダル計数値が入賞に応じた所定の配当枚数データに達した時に、ホッパー駆動部80による駆動を停止させ、メダル払い出しを終了させる。ホッパー駆動回路80,メダル検出部82により、遊技の結果にて得られた入賞に基づいて所定枚数のメダルが遊技者に払い出される。
液晶制御基板200は、液晶表示部62を駆動するための回路である。
スピーカ基板201は、図示しないスピーカを吹鳴駆動するための回路である。
LED基板202は、図示しない表示ランプやバックランプを駆動するための回路である。
液晶表示装置62、図示しないスピーカや表示ランプ等は演出表示装置を構成する。この演出表示装置は、遊技者に入賞等を報知したり、いわゆるアシストタイム(AT)において、一定ゲーム間に特定の小役を台自体が何らかのアクションを伴ってユーザに教えるためのものである。
なお、メイン基板1のROMには、このスロットマシン10で実行されるゲーム処理の手順がシーケンスプログラムとして記憶されている他、入賞確率テーブル,シンボルテーブルおよび入賞シンボル組合せテーブル等がそれぞれ区分されて格納されている。入賞確率テーブルは、メイン基板1で抽出された乱数を各入賞態様に区分けするように区分されており、メイン基板1で発生する一定範囲の数値の中から抽出される乱数を各入賞態様に区画するデータを記憶している。すなわち、入賞確率テーブルは、乱数の全領域に対応して、各入賞態様ごとに区分された領域を有するものである。例えば、0〜一定数の範囲を複数に区分し、ひとつの区分(領域)を外れとし、他の区分(領域)を入賞1、入賞2、・・・というように設定する。抽出された乱数データは、抽出された乱数と対応するようにした全領域中の各入賞態様ごとに区分された入賞判定領域データそれぞれと照合し、当該抽出乱数データが属する入賞態様に対応する当選が決定される。例えば、抽出された乱数の数値が、入賞確率テーブル5のどの区分(領域)に属するか調べ、その区分が例えば入賞1の区分であれば「入賞1」と判定される。同様に、抽出された乱数の数値が入賞判定テーブル5の外れの区分(領域)に属すれば「外れ」と判定される。抽選処理の評価が例えば外れの場合は所定の図柄が揃わないように設定され(いわゆる蹴飛ばし)、当たりの場合はストップスイッチが所定のタイミングで押下されることなどを条件に所定の図柄が揃うように設定される(いわゆる引き込み)。そして、所定の図柄が揃えば入賞図柄に相当するメダルが払い出される。各種の入賞はこのような入賞確率テーブルのデータ設定に応じた確率の下で発生し図柄の停止制御が行われるため、遊技者の技量に極端に左右されることなく、例えば1日の営業時間内でのトータル的なメダル支払い率がほぼ一定に維持されている。
上述のようにメイン基板1のROMには、プログラム、入賞確率テーブル,シンボルテーブルおよび入賞シンボル組合せテーブル等がそれぞれ区分されて格納されているが、ROMに記憶されているという点でこれらを総称してROMデータと呼ぶことにする。あるいはCPUに読み込ませて制御処理をする動作させるためのプログラム及びこれに関連するデータという点でそれらを総称してプログラムとも呼ぶことがある。
図3は復号化IC1cの内部構造を示す。プログラムROM1bに記憶された暗号化されたプログラムは、まずデータビット組み替え部1c−2でそのビットの組み替えが行われ、次に排他的論理和(XOR)演算部1c−3で復号キーレジスタ1c−1の復号キーと排他的論理和を求めることにより復号化が完了する。こうして復号化されCPU1aが読める状態になったプログラム(オブジェクトコード)がCPU1aに与えられる。復号キーは初期設定時に復号キーレジスタ1c−1に記憶される。復号化については後に詳しく説明する。
図3では、プログラムの解析をより困難にするためにアドレスについても暗号化(スクランブル)を行っている。本発明の実施の形態では、スクランブルとしてアドレスビットの組み替えを採用しているが、他のやり方、例えば特定のキーとの排他的論理和を求めるようにしてもよい。CPU1aから出力されるアドレスは、アドレスビット組み替え部1c−4でアドレスビットの組み替えが行われ、その後プログラムROM1bに与えられる。アドレスビット組み替えについては後に詳しく説明する。
なお、図3の構成は一例であって、本発明は他の構成も取り得る。以下に他の例を挙げる。
・プログラムについてのみ復号化する。アドレスのスクランブルを行わない。
・アドレスのスクランブルのみ行う。プログラムの暗号化・復号化を行わない。
・プログラムについて、復号キーに基づく復号化のみ行う。データビット組み替えを行わない。
・プログラムについて、データビット組み替えのみ行う。復号キーに基づく復号化を行わない。
図3において復号化IC1cとCPU1aの間の配線は隠蔽されている(図3のS:隠蔽部分)。この部分の配線を流れる信号は暗号化されていないため、もし隠蔽されていないとすれば第三者の解析が容易である。当該配線へのアクセスを困難にすることにより第三者による解析を防止するようにしたものである。隠蔽のやり方として、当該配線やICの端子を覆う保護部材を貼り付けたり、容易に剥離しない樹脂を塗布するといったことが考えられる。また、図4のようにBGAパッケージと多層基板を利用することもできる。
図4は復号化IC1cとCPU1aの間の配線を隠蔽した基板、これらのパッケージ及び配線の構成例を示す。図4(a)はメイン基板1の平面図(CPU1aと復号化IC1cの部分のみを示す)、図4(b)は同側面図である。基板上で復号化されたデータ情報を外部に取り出すことを困難にするため、CPU1a及び復号化IC1cをICパッケージ直下に接続端子があり外部に接続端子が露出しないパッケージ(例えばBGAなど)に収納している。さらに、CPU1aと復号化IC1c間の接続に多層基板(4層や6層など)の内部層を使用している。このように構成すれば基板表面や裏面に配線パターンを露出させないようにできる。
BGA (Ball Grid Array)とは、ICパッケージの1種である。QFP(Quad Flat Package:ICチップのパッケージ方法の一つで、外部入出力用のピンをパッケージの四辺に配したもの)よりもさらに多ピン化するLSIのために開発された表面実装用のパッケージである。「ハンダボール」と呼ばれる小さいハンダ材料を丸めたものをICパッケージの裏面に50mil程度の間隔で並べておき、これをプリント基板に表面実装する。QFPなどと違って、ICパッケージの裏面全体を基板との接続用に使えるため、総パッド数(基板との接点の数。QFPなどのピン数に相当)を大幅に増やすことができる。また、パッドの間隔をQFPの各ピン間隔よりも広くすることができるので、その分半田付け不良などが発生する確率が低くなるという特徴がある。
図4でCPU1aと復号化IC1cに設けられたパッドPはパッケージの下面の内側に設けられているので、基板取り付け状態においてパッドPにアクセスすることはできない。また、CPU1aと復号化IC1cの間の配線Lは、多層基板Bの内部層101,102に設けられるのでやはりアクセスすることはできない(アクセスするためにはICをはずしたり基板の表面を剥離する必要があるが、これには技術的な困難が伴う)。通常であれば表面103と裏面104に配線パターンを設けることができるが、本発明の実施の形態の隠蔽部分Sに関して表面103と裏面104を使用しない。なお、図4は本発明の実施の形態を模式的に説明したものであって実際とは異なる。実際のパッケージの形状とは異なるし、パッドPの数はもっと多い。実際の配線の数も図4よりも多く、かつ、複雑である。
技術的には、このような工夫を行ったとしても、基板表面よりICを剥離し、かつ基板パターンチェックを行っていくことにより復号化ICの必要信号を解析することも可能であるし、またその必要信号より復号化IC内の構造を解析することも可能と思われるが、このような解析の場合には相当の技術力、期間、費用が必要となるため、ROM内容の不正改ざんの抑止につながると思われる。
図5のフローチャートを参照してプログラム読み出し処理について説明する。
S1:遊技機の初期設定時に復号化ICの復号キーレジスタに復号キーを設定する。遊技機製造者にとってプログラムの暗号化のアルゴリズムと暗号キーは既知であるから、当該暗号キーに対応する復号キーを簡単に用意できる。他方、これらの情報の管理に十分注意を払っていれば第三者はこれらを知ることは困難であり、プログラムの解析を防止できる。なお、復号キーは当局に届ける機種ごとに用意しておけばよい。
S2:CPUが命令を読み込もうとしてアドレスを生成する。
S3:プログラムROMの生成に際してアドレスのスクランブルを行っている場合は、生成されたアドレスをスクランブルする。例えば次のようにアドレスを組み替えることによりアドレスをスクランブルする。
例)アドレス組み替え:76543210→10763254
上記例は左側の特定のビットを、右側の同じ数字の位置に配置することを意味する。例えば、最も左のビット(7)を左から3番目の位置に配置する。アドレス組み替えの例を下に示す。
CPU要求アドレス → 組み替え後のROMアドレス
00000001(01H) → 01000000(40H)
00000010(02H) → 10000000(80H)
00000011(03H) → 11000000(C0H)
00000100(04H) → 00000100(04H)
アドレス組み替えについては、1ビット、2ビット、4ビット、8ビット単位での入れ替えを考えることができる。どのような単位で入れ替えを行うか、あるいは入れ替えの組み合わせパターンを何通り準備するかについては、ハードウエアにて構成される復号化ICの性能などに合わせればよい。
S4:スクランブルされたアドレスに従ってプログラムROMのデータを読み出す。
S5:プログラムROMの生成に際してデータのビット組み替えを行っている場合は、読み出したデータのビット組み替えを行う。例えば次のようにデータのビットを組み替える。
例)アドレス組み替え:76543210→54103276
このアドレス組み替えの例を下に示す。
プログラムROMのデータ → 組み替え後のデータ
11111101(FDH) → 11011111(DFH)
01111111(7FH) → 11111101(FDH)
S6:読み出したデータを復号キーで復号化する。例えば、プログラムの暗号化のアルゴリズムを暗号キーと排他的論理和(XOR)を求めるというものであるとき、復号化のアルゴリズムは排他的論理和(XOR)を求めることであり、復号キーは暗号キーと同じものになる。
復号キーが00010011(13H)であるとき、次のように復号化される。
11011111(DFH) → 11001100(CCH):平文データ
復号キーが00110001(31H)であるとき、次のように復号化される。
11111101(FDH) → 11001100(CCH):平文データ
S7:復号化したデータをCPUへ送る。
S8:CPUが復号化されたデータに基づき動作する。受けたデータが命令であれば当該命令を実行する。
以上のS2乃至S8の処理が繰り返される。
なお、実際にこれらの暗号・復号およびアドレススクランブルを利用するに当たっては、システムリセット後にCPUにて復号化ICに対する初期設定を行う必要があるため、例えばROM先頭の128バイト程度は平文データ(未暗号化データ)となってしまう。しかし、その平文データに含まれる設定情報より暗号化・スクランブル方法を類推するためには復号化IC内部の構造を知っておく必要があるため、復号化IC構造が知られない限りにおいては、ROM内容から暗号解読を行うことは困難と思われる。
以上は遊技機における処理の説明であった。次に、遊技機を製造するときにプログラムを暗号化する処理、及び、型式検定等の際にプログラムの内容を確認する処理について説明する。
図6(a)は遊技機を製造するときにプログラムをROMに書き込むための装置を示す。図6(b)は遊技機のプログラムの内容を確認する装置を示す。
図6(a)において、110はアドレススクランブル処理部であり、これに含まれるアドレスビット組み替え部110−1でアドレスビットの組み替えを行う。これは遊技機のメイン基板1のCPU1aがプログラムを読み出す際に、復号化IC1cで行う処理と同じであり、その詳細は前述した通りである。111はデータ暗号化処理部である。プログラムのデータ(オブジェクトコード)は、まず排他的論理和(XOR)演算部111−3で暗号キーレジスタ111−1の暗号キーと排他的論理演算が施され、次に、データビット組み替え部111−2でそのビットの組み替えが行われる。このようにして暗号化されたプログラムデータがプログラムROM1bに書き込まれる。
図7はプログラム書き込み処理を示すフローチャートである。
S10:暗号キーを用意する。排他的論理和(XOR)演算に使用するキー値は、例えば8ビット演算の場合には全部0、全部1以外の値であれば使用可能なため、キー値の組み合わせは254通りとなる。
S11:プログラム(オブジェクトコード)を用意する。
S12:プログラムデータを書き込むアドレスを生成する。
S13:生成されたアドレスをスクランブルする。この処理の内容は前述したとおりである。
S14:プログラムデータを暗号キーで暗号化する。
データの暗号化の例を下に示す。
例1)暗号キー値が00010011(13H)であるとき、次のように暗号化される。
変換式Y(x):XOR 00010011
11001100(CCH) → 11011111(DFH):暗号化データ
例2)暗号キー値が00110001(31H)であるとき、次のように暗号化される。
変換式Y(x):XOR 00110001
11001100(CCH) → 11111101(FDH):暗号化データ
S15:暗号化したデータのビット組み替えを行う。
データビットの組み替えの例を下に示す。
例1)データビット組み替え:76543210→10763254であるとき、次のように並べ替えられる。
11011111(DFH) → 11111101(FDH):暗号化・ビット組み替えたプログラムデータ
例2)データビット組み替え:76543210→10763254であるとき、次のように並べ替えられる。
11111101(FDH) → 01111111(7FH):暗号化・ビット組み替えたプログラムデータ
S16:暗号化・ビット組み替えたプログラムデータをプログラムROMのスクランブルされたアドレスに書き込む。
S17:全てのプログラムデータを書き込んだかどうか判定し、書き込んでいないプログラムデータがあれば(NO)、S12乃至S16の処理を繰り返す。
図6(b)において120はプログラムROMの検査合計を求めるためのCPUである。遊技機においてROMのプログラムは機種ごとに同じであり、したがってその検査合計は一定である。検査合計を求める際に、アドレスビット組み替え部は不要である。通常、検査合計は全てのアドレスのデータについて求めるのでアドレスビット組み替えの有無は結果に影響を与えない。また、復号化処理部とデータビット組み替え部も不要である。ここで行う検査はプログラムROMの検査合計が予め届けられたものと一致するかどうかを判定するものであり、プログラムの内容をオブジェクトコードのレベルで検証するものではないので、暗号化・ビット組み替えた状態のプログラムの検査合計を届けておけば復号化処理部及びデータビット組み替え部は必要でない。
図8はプログラムの内容確認処理を示すフローチャートである。
S20:プログラムROMを取り外す。
S21:プログラムROMの全データを読み出す。
S22:プログラムROMの全データについて検査合計を求める。
S23:予め登録してあるプログラムROMに関する検査合計と比較する。
S24:両者が一致するかどうか判定し、一致すれば(YES)当該プログラムROMは検査をパスし、不一致であれば(NO)検査をパスしない。
検査合計(チェックサム、sum check)について簡単に説明する。デジタルデータの個々の桁を使って得られる合計を検査することを検査合計(check sum)という。8ビットのデジタルデータが100個ある場合、各桁ごとに100個全部の総和を計算する。このとき桁上がりは無視する。最終的には当該桁が1であるデータの数が偶数であれば0、奇数であれば1となる。データのビット数と同じ8ビットの検査合計が得られる。検査合計は、例えば二進デジタルデータである機械語(machine language)のプログラムやデータを打ち込むときの検査に使われる。検査合計を用いると同じデータに対して異なる機会に計算した又はそのデータの異なる表示に対してデータの完全性を検証することができる。
ところで判断の基準として上記説明において検査合計(チェックサム)を例にとり説明したが、本発明はこれに限定されない。ROMのデータについて固有な値(特徴値)を生成する任意のアルゴリズムを採用することができる。以下に例を挙げる。
(1)CRC(cyclic redundancy check)
CRCは、巡回冗長検査,周期冗長検査などと呼ばれ、データ伝送での検査方式の一つで,ブロック(block),あるいはフレーム(frame)ごとに冗長符号をつけて伝送し,それによって伝送内容が正確であったかどうかを調べる方法である。巡回的なアルゴリズムによって余分の数字又は文字を生成して行うので、ROMデータに冗長符号を付けて記憶しておけば、これを利用して改変をチェックすることができる。
(2)ハッシュ関数
与えられた原文から固定長の疑似乱数を生成する演算手法である。生成した値は「ハッシュ値」と呼ばれる。「要約関数」「メッセージダイジェスト」とも呼ばれる。通信回線を通じてデータを送受信する際に、経路の両端でデータのハッシュ値を求めて両者を比較すれば、データが通信途中で改ざんされていないか調べることができる。不可逆な一方向関数(引数から結果を求めるのは簡単だが、結果から引数を求めることは難しいような関数)を含むため、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である。通信の暗号化の補助や、ユーザ認証やデジタル署名などに応用されている。MD5(Message Digest 5)やSHA-1(Secure Hash Algorithm 1)が知られている。
なお、ハッシュ関数のような一方向関数を利用すれば、不正行為をより確実に防止することができると考えられる。例えば、ROMのデータについて単純にその検査合計を求めるだけでは、不正行為を行う者がこれに気づいたとき、検査合計が正規のROMのデータの場合と同じになるようにROMのデータを改変することが可能である。しかし、一方向関数を用いるとこのような逆演算は不可能であり、原データと同じ結果を得るための改変のやり方を知ることはできない。したがって、何らかの改変が行われたらこれを確実に知ることができる。
(3)論理演算
論理和、論理積、排他的論理和など。例えばデータ全体について排他的論理和を求める。あるいは鍵データを用意しておき、各データと鍵データの論理演算を行い、その出力について検査合計を求める。
本発明の実施の形態によれば、アドレススクランブルとデータ復号化機能を持ったIC(復号化IC)を、CPUとROMの間に介在させることにより、ROMの内容を解析困難とできる。また、基板上で復号化されたデータ情報を外部に取り出すことを困難にするため、CPU及び復号化ICは外部に接続端子が出ないパッケージ(例えばBGAなど)を用い、さらに本IC間の接続は多層基板の内部層を使用するようにした。
なお、上記暗号化・復号化アルゴリズムは一例であり、他のアルゴリズムを採用することができる。暗号化・復号化については単一の方式のみとせずに、例えば復号化IC内に備えたレジスタへの設定により複数の方式を組み合わせるようにしてもよい。このようにすれば、遊技機の機種変更(すなわち制御プログラムの変更)を行った場合に、今までと異なる暗号化データを使用することが可能となるため、長期に渡り多くの機種に同一制御基板を使用したときであっても第三者による解析を困難にできる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
また、本明細書において、部とは必ずしも物理的手段を意味するものではなく、各部の機能が、ソフトウェアによって実現される場合も包含する。さらに、一つの部の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の部の機能が、一つの物理的手段により実現されてもよい。
遊技機(スロットマシン)の正面図である。 発明の実施の形態に係る遊技機のブロック図である。 発明の実施の形態に係る復号化ICのブロック図である。 発明の実施の形態に係るCPUとプログラム間の配線を隠蔽するやり方の説明図である。 発明の実施の形態に係るプログラムの読み出し処理のフローチャートである。 図6(a)は発明の実施の形態に係る遊技機を製造するときにプログラムをROMに書き込むための装置を示す。図6(b)は遊技機のプログラムの内容を確認する装置を示す。 発明の実施の形態に係るプログラムの書き込み処理のフローチャートである。 発明の実施の形態に係るプログラムの内容確認処理のフローチャートである。
符号の説明
1 メイン基板
1a CPU
1b プログラムROM
1c 復号化IC
1c−1 復号キーレジスタ
1c−2 データビット組み替え部
1−c3 排他的論理和(XOR)演算部
1−c4 アドレスビット組み替え部
2 サブ基板
10 スロットマシン
11 筐体
12 表示窓
13 図柄表示窓
16 ベットスイッチ
17 精算スイッチ
30 スタートスイッチ
40 回転リール
42 リールテープ
50 ストップスイッチ
60 リールユニット
61 図柄
62 液晶表示部
70 リール駆動部
71 リール位置検出回路
80 ホッパー駆動部
81 ホッパー
82 メダル検出部
100 メダル投入口
101 基板の内部層
102 基板の内部層
103 基板の表面
104 基板の裏面
110 アドレススクランブル処理部
110−1 アドレスビット組み替え部
111 データ暗号化処理部
111−1 暗号キーレジスタ
111−2 データビット組み替え部
111−3 排他的論理和(XOR)演算部
120 検査合計算出用CPU
200 液晶制御基板
201 スピーカ基板
202 LED基板
304 メダル払い出し口
311 メダル受け部(下皿)
B 基板
L CPUとプログラムROM間の配線
P BGAパッケージのパッド(端子)

Claims (9)

  1. CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において、
    前記プログラム記憶部に記憶されたプログラムは暗号化されており、前記CPUと前記プログラム記憶部の間に暗号化された前記プログラムを復号化する復号化装置を設けたことを特徴とする遊技機。
  2. 前記復号化装置は、復号キーを記憶するレジスタと、暗号化された前記プログラムを前記復号キーに基づき復号化する復号化部とを備えることを特徴とする請求項1記載の遊技機。
  3. 前記復号化装置は、前記プログラム記憶部からのデータのビットを組み替えるデータビット組み替え部を備えることを特徴とする請求項1又は請求項2記載の遊技機。
  4. 前記復号化装置は、前記CPUから前記プログラム記憶部へ出力するアドレスのビットを組み替えるアドレスビット組み替え部を備えることを特徴とする請求項1乃至請求項3いずれかに記載の遊技機。
  5. 前記CPUと前記復号化装置は、基板に取り付けられた状態で接続端子が外部に露出しないパッケージに収納され、かつ、前記CPUと前記復号化装置の間の配線は多層基板の内部層に設けられ、当該配線が外部に露出しないように構成されていることを特徴とする請求項1乃至請求項4いずれかに記載の遊技機。
  6. CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機におけるプログラムの読み出し方法であって、
    プログラムを読み出すためのアドレスを生成するステップと、
    前記アドレスのビットをスクランブルするステップと、
    スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
    読み出したデータのビットを組み替えるステップと、
    ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
    復号化したデータをCPUへ送るステップと、を備える遊技機のプログラムの読み出し方法。
  7. CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機において前記プログラムを検査する方法であって、
    プログラムを書き込むためのアドレスを生成するステップと、
    前記アドレスのビットをスクランブルするステップと、
    用意されたプログラムのデータを予め定められた暗号キーで暗号化するステップと、
    暗号化されたデータのビットを組み替えるステップと、
    組み替えたデータをプログラム記憶部のスクランブルされたアドレスに書き込むステップと、
    前記プログラム記憶部に書き込まれたデータ全体を読み出すステップと、
    前記データ全体について検査合計を求めるステップと、
    求められた検査合計を予め用意された検査合計と比較するステップと、
    前記比較結果に基づき良否の判定を行うステップと、を備える遊技機の検査方法。
  8. CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機に適用されるプログラムであって、
    プログラムを読み出すためのアドレスを生成するステップと、
    前記アドレスのビットをスクランブルするステップと、
    スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
    読み出したデータのビットを組み替えるステップと、
    ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
    復号化したデータをCPUへ送るステップと、をCPUに実行させるためのプログラム。
  9. CPUと、前記CPUに読み込ませて所定の手順を実行させるためのプログラムを記憶するプログラム記憶部とを含み、遊技者の操作を受けて行う内部抽選処理及び入賞判定処理、入賞に応じた遊技媒体の払い出し処理、または、遊技に関する演出処理のうちの少なくともいずれかを実行する処理部を含む遊技機に適用されるプログラムを記録した媒体であって、
    プログラムを読み出すためのアドレスを生成するステップと、
    前記アドレスのビットをスクランブルするステップと、
    スクランブルされたアドレスにしたがってプログラム記憶部からデータを読み出すステップと、
    読み出したデータのビットを組み替えるステップと、
    ビットを組み替えたデータを予め定められた復号キーで復号するステップと、
    復号化したデータをCPUへ送るステップと、をCPUに実行させるためのプログラムの記録媒体。
JP2004056595A 2004-03-01 2004-03-01 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体 Pending JP2005245531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004056595A JP2005245531A (ja) 2004-03-01 2004-03-01 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004056595A JP2005245531A (ja) 2004-03-01 2004-03-01 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体

Publications (1)

Publication Number Publication Date
JP2005245531A true JP2005245531A (ja) 2005-09-15

Family

ID=35026595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004056595A Pending JP2005245531A (ja) 2004-03-01 2004-03-01 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体

Country Status (1)

Country Link
JP (1) JP2005245531A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014213081A (ja) * 2013-04-26 2014-11-17 京楽産業.株式会社 遊技機
JP2015066323A (ja) * 2013-09-30 2015-04-13 株式会社大一商会 遊技機
JP2015066366A (ja) * 2013-09-30 2015-04-13 株式会社大一商会 遊技機
JP2016002377A (ja) * 2014-06-18 2016-01-12 株式会社三洋物産 遊技機
EP3322119A1 (en) * 2016-11-15 2018-05-16 Huawei Technologies Co., Ltd. Data processing method and apparatus
JP2018157166A (ja) * 2017-03-21 2018-10-04 サミー株式会社 回路基板アセンブリ及び製造方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014213081A (ja) * 2013-04-26 2014-11-17 京楽産業.株式会社 遊技機
JP2015066323A (ja) * 2013-09-30 2015-04-13 株式会社大一商会 遊技機
JP2015066366A (ja) * 2013-09-30 2015-04-13 株式会社大一商会 遊技機
JP2016002377A (ja) * 2014-06-18 2016-01-12 株式会社三洋物産 遊技機
EP3322119A1 (en) * 2016-11-15 2018-05-16 Huawei Technologies Co., Ltd. Data processing method and apparatus
US10659216B2 (en) 2016-11-15 2020-05-19 Huawei Technologies Co., Ltd. Data processing method and apparatus
JP2018157166A (ja) * 2017-03-21 2018-10-04 サミー株式会社 回路基板アセンブリ及び製造方法

Similar Documents

Publication Publication Date Title
JP4498257B2 (ja) 遊技機
US20030203755A1 (en) Encryption in a secure computerized gaming system
US7320642B2 (en) Security of gaming software
JP2005021660A (ja) 遊技機及び遊技機におけるコマンドの通信方法並びにコマンド通信プログラム
US20080254850A1 (en) Trusted Computing in a Wagering Game Machine
JP2009005761A (ja) 遊技用情報の地域認証を行う遊技処理装置
US20020187828A1 (en) Method and apparatus for securing gaming machine operating data
JP2014161630A (ja) 遊技機
JP2007252547A (ja) 遊技機及び遊技機における不正行為の防止方法
JP2012231850A (ja) 遊技用システム
JP2000233057A (ja) 遊技機制御用チップの監視システム
JP4233821B2 (ja) 遊技システム
JP2005245531A (ja) 遊技機及び遊技機のプログラム読み出し方法、遊技機の検査方法並びにプログラム、記録媒体
JP2005040276A (ja) 遊技機及び遊技機の不正行為防止方法並びにプログラム
JP2005143595A (ja) 遊技機及び遊技機における不正行為防止方法並びにプログラム
JP3491065B2 (ja) 遊技機検査装置
JPH053957A (ja) 遊技機制御用コンピユータ
JP2004033453A (ja) 遊技機
JP4167618B2 (ja) 遊技機
JP4233822B2 (ja) 遊技システム
JP4233820B2 (ja) 遊技システム
JP4191066B2 (ja) 遊技機及び遊技機における不正行為防止方法並びにプログラム
JP2001145767A (ja) 遊技機
JP3791654B2 (ja) 遊技用演算処理装置
JP2012231852A (ja) 遊技用システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081226