以下に、本発明を実施するための形態について図面を参照して説明する。ここでは、本発明に係る遊技機、認証方法、プログラムを、パチンコ機に適用した場合について説明する。
〔遊技盤の構成〕
まず、パチンコ機における遊技盤1の構成について説明する。
図1は、遊技盤1の正面図である。
図1において、遊技盤1の左側には、円弧を描いて上方に延長する2つのレール102a、102bが設けられている。遊技領域101には、遊技球の落下軌跡を変則的にするための複数の釘(不図示)が設けられ、落下途中の位置には、遊技球の落下方向を変化させる風車や入賞口が設けられている。遊技球は、遊技盤1の下部位置に配置された発射部(不図示)により発射され、レール102a、102b間を上昇して遊技盤1の上部位置に達した後、遊技領域101内を落下する。
遊技盤1の中央部には、3つの領域にそれぞれ演出図柄を独立に変動させながら表示する図柄表示部104が設けられている。図柄表示部104は、例えば、液晶表示器(LCD(Liquid Crystal Display))またはCRT(Cathode Ray Tube)ディスプレイ等の可変表示装置、7セグメントLED、ドットマトリクス表示装置、モータの回転により可変表示するドラム等であり、複数の数字や図柄等からなる演出図柄を変動表示する。
図柄表示部104の下方には、遊技球を入賞可能な始動入賞口105が設けられている。また、図柄表示部104の左右両側には、それぞれ入賞ゲート106が設けられている。入賞ゲート106を遊技球が通過すると、所定の抽選が行われ、これに当選すると、始動入賞口105が所定時間だけ開放する。
始動入賞口105の左右両側には、それぞれ普通入賞口107が設けられている。普通入賞口107に遊技球が入賞すると、遊技球1個につき所定数(例えば、10個)の遊技球が賞球として払い出される。
始動入賞口105の下方には、通常時は閉止状態であるが図柄表示部104の演出図柄が大当たり図柄(例えば、「777」)となったときは、開放状態となって遊技球を入賞可能とする大入賞口109が設けられている。大当たり抽選で「大当たり」(以下、単に「大当たり」という。)となったときは、大入賞口109の全面に設置された開閉部材が開閉動作を繰り返す。開閉部材が開放中は、多数の遊技球の入賞を受け付ける。大入賞口109に遊技球が入賞すると、遊技球1個につき所定数(例えば、10個)の遊技球が賞球として払い出される。大入賞口109の開放は、所定時間(例えば、30秒)経過するか、所定数(例えば、10個)の遊技球が入賞するまで継続する。大入賞口109の1回の開放期間をラウンドと呼び、ラウンドは、最大で所定回数(以下、最大ラウンド数という。)継続する。
遊技領域101の最下方には、いずれの入賞口にも入賞しなかった遊技球を回収するための回収口108が設けられている。
〔遊技機の全体構成〕
図2は本実施の形態の遊技機の全体構成を示すブロック図である。図2に示すように、遊技機は、遊技盤1と、主制御基板2と、周辺基板3とを有する。主制御基板2および周辺基板3によって、遊技機制御装置100が構成される。
主制御基板2は主制御部2aを有する基板である。主制御部2aは、遊技盤1が実行する遊技に関する演出またはその演出の前処理もしくは後処理を制御するための制御コマンドと、主制御部2aが正当であることを認証させるための第1の認証データや命令情報とを出力する手段である。
ここで、「演出」とは、例えば、抽選による大当たり演出である。また、「演出の前処理」は、例えば、図柄表示部が表示する図柄を変動させる際の、図柄を変動させるための値をレジスタに設定する処理、である。ただし、主制御部2aは、制御データを出力せず、制御コマンドと第1の認証データや命令情報とを周辺部3aに出力することもある。例えば、パチンコ機の電源がオンされようとする場合等、制御の内容が明らかである場合には制御データは出力されない。この場合、演出の前処理として、パチンコ機の電源がオンされることになる。なお、「演出の後処理」は、例えば、演出後に、後述するRAMの内容を初期化する処理、である。
周辺基板3は、周辺部3aと、中間部3bと、バス3cと、を有する基板である。周辺部3aは、主制御部2aの出力を入力とし、主制御部2aからの制御コマンドに基づいて演出または演出の前処理もしくは後処理の実行を制御するとともに、主制御部2aからの第1の認証データを中間部3bに出力する手段である。
中間部3bは、周辺部3aの後段に設けられており、周辺部3aから出力される第1の認証データに基づいて主制御部2aが正当であるか否かを判断するための第2の認証データを生成し、それを周辺部3aに出力する手段である。周辺部とは別に、中間部を付加した構成を採用している。このため、主制御部および周辺部の一般的な構成で主制御部の認証を行っていない場合でも、中間部を付加すれば、周辺部の仕様変更を最小限に抑えつつ、主制御部の認証を行うことができるようになる。主制御部2aが正当でないと判断された場合、周辺部3aは、主制御部2aが正当でない旨を報知するための制御を行う。主制御部2aが正当でない旨を報知する場合、周辺部3aの制御により、遊技機に設けられている液晶(不図示)に表示させたり、ランプ等を点灯させたりして通知することによる報知が行われる。液晶やランプを用いた通知については後に詳述する。
液晶表示やランプ等の点灯による視覚的報知に限らず、スピーカ(不図示)から音を出力することによる聴覚的報知、バイブレータ(不図示)を振動させることによる触覚的報知を行ってもよい。また、上記報知を組み合わせて行ってもよい。バス3cは、周辺部3aと中間部3bとの間の信号授受に用いられる唯一の通信経路である。周辺部3aと中間部3bとの間に設けられている単一のバス3cは、双方向の通信経路として用いられる。
〔遊技制御装置の構成〕
次に、パチンコ機における遊技制御装置の構成について説明する。
図3は、遊技制御装置100の構成を示すブロック図である。
遊技制御装置100は、図3に示すように、主制御基板2と、周辺基板3と、賞球制御部400とを有して構成されている。本例では、主制御基板2に、遊技の主制御を行う主制御部2aが設けられている。主制御部2aには、DIP(Dual Inline
Package)等からなるワンチップ型のマイクロプロセッサであるCPU202と、このCPU202へのアクセスを制御するアクセス制御装置230とが設けられている。また、周辺基板3には、主制御部2aの制御により遊技の演出制御を行う演出制御部300と、主制御部2aの認証を行うための第2の認証データを生成し、それを周辺部3aに出力する中間部3bとが設けられている。演出制御部300は、図2における周辺部3aの一例である。賞球制御部400は、主制御部2aの制御により遊技球の払出制御を行う。
主制御部2aは、遊技の主制御を行い、遊技の演出制御または遊技球の払出制御を行うための各種の制御コマンドを演出制御部300および賞球制御部400にそれぞれ送信する。
主制御部2aには、始動入賞口105に入賞した遊技球を検出する始動入賞口検出部280と、入賞ゲート106を通過した遊技球を検出するゲート検出部282と、普通入賞口107に入賞した遊技球を検出する普通入賞口検出部284と、大入賞口109に入賞した遊技球を検出する大入賞口検出部286とが接続されている。これらの検出部280〜286は、例えば、近接スイッチを用いて構成することができる。
I/F210には、さらに、大当たり中に大入賞口109の開閉部材を開閉動作させる大入賞口開閉部288と、演出制御部300と、賞球制御部400とが接続されている。なお、演出制御部300との通信は、主制御部2aから演出制御部300への一方向となっている。これに対し、賞球制御部400との通信は、双方向となっている。
大入賞口開閉部288は、例えば、ソレノイドを用いて構成することができる。大当たりは、大当たり決定乱数に基づいて所定確率(例えば、1/300)で発生するよう予めプログラムされている。
演出制御部300は、主制御部2aから制御コマンドを受信し、受信した制御コマンドに基づいて遊技の演出制御を行う。演出制御部300は、制御プログラムを記憶したROM304と、ROM304の制御プログラムに従って演出制御処理を実行するCPU302と、CPU302の演算処理時におけるデータのワークエリアとして機能するRAM306と、図柄表示部104に表示させる画像データを書き込むVRAM308と、外部装置との入出力を行うI/F310、312と、CPU302へのアクセスを制御するアクセス制御装置330とを有して構成されている。
ROM304は、検証値と照合するための期待値を記憶する。検証値は、主制御部2aを認証するためのものであり、期待値は、検証値と同一の値となる。
RAM306は、主制御部2aからの入力データ、演算処理のためのデータ、乱数を生成するための乱数カウンタその他各種のカウンタ、および各種のフラグを記憶する。
I/F310には、主制御部2aと、図柄表示部104と、スピーカ380から音声を出力する音声制御を行う音声制御部382と、ランプ384を点灯させるランプ制御を行うランプ制御部386とが接続されている。
アクセス制御装置330は、I/F(インタフェース)312を介してCPU302に接続されており、CPU302からのアクセスを制御するものである。その詳細については後述する。
賞球制御部400は、主制御部2aから制御コマンドを受信し、受信した制御コマンドに基づいて遊技球の払出制御を行う。賞球制御部400は、制御プログラムを記憶したROM404と、ROM404の制御プログラムに従って払出制御処理を実行するCPU402と、CPU402の演算処理時におけるデータのワークエリアとして機能するRAM406と、外部装置との入出力を行うI/F410とを有して構成されている。
I/F410には、主制御部2aと、遊技球の貯留部から所定数の遊技球を払い出す払出部480と、遊技球を遊技盤1に発射する発射部482とが接続されている。
賞球制御部400は、払出部480に対して、各入賞口(始動入賞口105、普通入賞口107、大入賞口109)への入賞に応じて所定数の遊技球を払い出す制御を行う。また、発射部482に対する操作を検出し、遊技球の発射を制御する。
発射部482は、遊技者による操作を検出するセンサ(不図示)と、遊技球を発射させるソレノイド(不図示)とを有して構成されている。賞球制御部400は、発射部482のセンサにより操作を検出すると、その操作量に応じてソレノイドを駆動させて遊技球を間欠的に発射する。
なお、主制御部2a、演出制御部300および賞球制御部400は、それぞれ異なるプリント基板に設けられているが、これに限らず、賞球制御部400は、主制御部2aと同一のプリント基板に設けることもできる。
〔主制御部及び演出制御部の構成〕
次に、主制御部2a及び演出制御部300の構成を説明する。
図4及び図5は、それぞれ主制御部2a及び演出制御部300などのより詳細な構成を示すブロック図である。
先ず、図4に示すように主制御部2aは、DIP等からなるワンチップ型のマイクロプロセッサであるCPU202と、CPU202によるアクセスを制御するアクセス制御装置230と、パチンコ機の検定試験に用いられる検査ポート240とを有して構成されている。
CPU202は、制御プログラムを記憶したROM204と、ROM204の制御プログラムに従って遊技制御処理を実行するCPUコア203と、CPUコア203の演算処理時におけるデータのワークエリアとして機能するRAM206と、検査ポート240を介してCPUコア203が実行する命令コード列その他の検査データを出力するセキュリティ検査回路208とを有して構成されている。
CPU202は、さらに、外部装置との入出力を行うI/F210、212と、時間を計測するタイマ214とを有して構成されている。そして、CPUコア203、ROM204、RAM206、セキュリティ検査回路208、I/F210、212およびタイマ214は、バス216を介して相互に接続されている。
RAM206は、主制御部2aに対する入出力データ、演算処理のためのデータ、各種のカウンタ、大当たりフラグその他各種のフラグ、および保留球数を記憶する。ここで、保留球数とは、始動入賞口105に入賞した遊技球の数であって大当たり抽選が行われていない分をいう。
I/F212には、アクセス制御装置230が接続されている。CPU202は、そのハードウェア構造上、バス216を介して送受信されるアドレス信号、データ信号および制御信号を外部に出力しない構成となっている。また、バス216の信号線がCPU202に内蔵されているので、アクセス制御装置230をバス216の信号線に直結することも改造を要し難しい。したがって、そのままの構成では、アクセス制御装置230は、CPUコア203が実行する命令に関する情報を取得することができない。そこで、本実施の形態では、CPUコア203が実行する命令に関する情報として、CPUコア203が実行する命令コード列、およびそのROM204におけるアドレス(以下、単にアドレスという。)を、I/F212を介して出力する処理をCPUコア203に実行させる。この出力処理は、例えば、ROM204の制御プログラムの一処理として組み込んでおくことができる。これにより、アクセス制御装置230は、CPUコア203が実行する命令コード列およびそのアドレスをI/F212から入力することができる。また、演出制御部300のアクセス制御装置330は、制御コマンドに付加された命令コード列およびそのアドレスを取得することができる。ここで、命令コード列のアドレスとは、命令コード列のうち先頭の命令コードのアドレスをいう。
一方、演出制御部300は、図5に示すように、DIP等からなるワンチップ型のマイクロプロセッサであるCPU302と、CPU302によるアクセスを制御するアクセス制御装置330とを有して構成されている。
CPU302は、主に演出用の制御プログラムを記憶したROM304と、このROM304の制御プログラムに従って演出制御処理を実行するCPUコア303と、このCPUコア303の演算処理時におけるデータのワークエリアとして機能するRAM306と、演出関連デバイス314と、この演出関連デバイス314の1つである図柄表示部104に表示させる画像データを書き込むVRAM308とを有して構成されている。
CPU302は、さらに、主制御部2aや賞球制御部400などの外部装置との入出力を行うI/F310、312とを有して構成されている。そして、CPUコア303、ROM304、RAM306、VRAM308、I/F310、312、演出関連デバイス314は、バス316を介して相互に接続されている。
I/F312には、アクセス制御装置330が接続されている。演出制御部300においても、主制御部2aのCPUコア203が実行する命令に関する情報として、CPUコア203が実行する命令コード列、およびそのROM204におけるアドレスを、取得する処理をCPUコア303に実行させる。命令情報は、あらかじめ定められた制御コマンドに付加されているので、その制御コマンドを受信した演出制御部300は命令情報を取得することができる。これにより、アクセス制御装置330は、CPUコア203が実行する命令コード列およびそのアドレスを取得することができる。
賞球制御部400は、CPU402、ROM404、RAM406およびI/F410のほか、遊技球の払出制御に必要な複数のデバイスからなる賞球関連デバイス群414を有して構成されている。
〔CPUコアおよびアクセス制御装置の構成〕
次に、図4に示した主制御部2aのCPUコア203とこの主制御部2a側に設けられたアクセス制御装置230、及び図5に示した演出制御部300のCPUコア303とその演出制御部300側に設けられたアクセス制御装置330の構成を説明する。
図6は、CPUコア203およびアクセス制御装置230の構成を示すブロック図である。図6では、説明の便宜上、構成の一部を省略している。
同図に示すように、CPUコア203は、ROM204に記憶された命令コード列を読み出し(フェッチ)、読み出した命令コード列に従ってデータ処理を行う。CPUコア203は、制御部203a、演算部203bおよびレジスタ203cを有して構成されている。
制御部203aは、CPU202全体の動作を制御し、命令コード列その他データの読出および書込を行うためにバス216に制御信号を出力する。
演算部203bは、レジスタ203cに保持されたデータに対して演算を行う。
レジスタ203cは、ROM204から読み出した命令コード列およびそのアドレス、並びに演算部203bで処理したデータを保持する。
アクセス制御装置230は、遊技制御に用いる乱数や認証に必要な認証情報を生成するとともにCPUコア203で処理したデータを保持する。アクセス制御装置230は、入力部231、演算部232、レジスタ234、236およびアクセス制御部238を有して構成されている。
入力部231は、ラッチ回路等からなり、CPUコア203が実行する命令コード列およびそのアドレスをI/F212から入力する。
演算部232は、乱数生成器等からなり、遊技制御に用いる乱数と認証に必要な認証情報との少なくとも一方を生成する。遊技制御に用いる乱数としては、大当たり抽選に用いる乱数(大当たり決定乱数)、演出図柄の停止態様を決定するための乱数(停止図柄決定乱数)、演出図柄の変動パターンを決定するための乱数(変動パターン決定乱数)、その他遊技制御に用いる乱数がある。また、演出制御に用いる乱数としては、主制御部2aから送られてくる制御コマンドに対応する具体的な演出図柄を決定するための乱数、演出図柄による変動パターン演出と共に音声やランプ演出を決定するための乱数などがある。
レジスタ234は、演算部232で生成した乱数や認証情報を保持する。レジスタ234へのアクセスは、アクセス制御部238により制御される。
レジスタ236は、CPUコア203で処理したデータを保持する。レジスタ236へのアクセスは、アクセス制御部238により制御される。
アクセス制御部238は、レジスタ234、236に対するリード要求を入力したときは、そのリード要求に係るリード命令およびそのアドレスを入力部231から入力し、入力したリード命令およびアドレスに基づいてアクセス許可条件が成立すると判定したときは、レジスタ234、236からのデータの読出を許可する。これに対し、アクセス許可条件が成立しないと判定したときは、レジスタ234、236からのデータの読出を禁止する。具体的には、入力部231で入力した命令コード列が、あらかじめ許可されたコード列(以下、許可命令コード列という。)であり、かつ、その命令コード列のアドレスが、あらかじめ許可されたアドレス(以下、許可アドレスという。)であるときにのみ、レジスタ234、236からデータを読み出すことができる。
アクセス制御部238は、レジスタ236に対するライト要求を入力したときは、そのライト要求に係るライト命令およびそのアドレスを入力部231から入力し、入力したライト命令およびアドレスに基づいてアクセス許可条件が成立すると判定したときは、レジスタ236へのデータの書込を許可する。これに対し、アクセス許可条件が成立しないと判定したときは、レジスタ236へのデータの書込を禁止する。具体的には、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであるときにのみ、レジスタ236にデータを書き込むことができる。
次に、演出制御部300におけるアクセス制御装置330の動作について、図7を参照して説明する。
同図に示すように、CPUコア303は、ROM304に記憶された命令コード列を読み出し(フェッチ)、読み出した命令コード列に従ってデータ処理を行う。CPUコア303は、制御部303a、演算部303bおよびレジスタ303cを有して構成されている。
制御部303aは、CPU302全体の動作を制御し、命令コード列その他データの読出および書込を行うためにバス316に制御信号を出力する。
演算部303bは、レジスタ303cに保持されたデータに対して演算を行う。
レジスタ303cは、ROM304から読み出した命令コード列およびそのアドレス、並びに演算部303bで処理したデータを保持する。
アクセス制御装置330は、演出制御に用いる乱数や認証に必要な認証情報を生成するとともにCPUコア303で処理したデータを保持する。アクセス制御装置330は、入力部331、演算部332、レジスタ334、336およびアクセス制御部338を有して構成されている。
入力部331は、ラッチ回路等からなり、CPUコア303が実行する命令コード列およびそのアドレスをI/F312から入力する。
演算部332は、乱数生成器等からなり、演出制御に用いる乱数と認証に必要な認証情報との少なくとも一方を生成する。演出制御に用いる乱数としては、主制御部2aから送られてくる制御コマンドに対応する具体的な演出図柄を決定するための乱数、演出図柄による変動パターン演出と共に音声やランプ演出を決定するための乱数などがある。
レジスタ334は、演算部332で生成した乱数や認証情報を保持する。レジスタ334へのアクセスは、アクセス制御部338により制御される。
レジスタ336は、CPUコア303で処理したデータを保持する。レジスタ336へのアクセスは、アクセス制御部338により制御される。
アクセス制御部338は、レジスタ324、336に対するリード要求を入力したときは、そのリード要求に係るリード命令およびそのアドレスを入力部331から入力し、入力したリード命令およびアドレスに基づいてアクセス許可条件が成立すると判定したときは、レジスタ334、336からのデータの読出を許可する。これに対し、アクセス許可条件が成立しないと判定したときは、レジスタ334、336からのデータの読出を禁止する。具体的には、入力部331で入力した命令コード列が、許可命令コード列であり、かつ、その命令コード列のアドレスが、あらかじめ許可されたアドレスであるときにのみ、レジスタ334、336からデータを読み出すことができる。
アクセス制御部338は、レジスタ336に対するライト要求を入力したときは、そのライト要求に係るライト命令およびそのアドレスを入力部331から入力し、入力したライト命令およびアドレスに基づいてアクセス許可条件が成立すると判定したときは、レジスタ336へのデータの書込を許可する。これに対し、アクセス許可条件が成立しないと判定したときは、レジスタ336へのデータの書込を禁止する。具体的には、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであるときにのみ、レジスタ336にデータを書き込むことができる。
ところで、主制御部2aのCPU202が実行する命令に関する情報が演出制御部300によって取得された場合、演出制御部300のアクセス制御装置330とCPU302とによって、後述するように接続機器認証処理が行われる。CPU202が実行する命令に関する情報は、後述するように、制御コマンドに付加されて、主制御部2aから送信されることにより、演出制御部300によって取得される。
〔アクセス制御処理〕
次に、アクセス制御部238で実行されるアクセス制御処理を説明する。
図8は、アクセス制御部238で実行されるアクセス制御処理を示すフローチャートである。
アクセス制御部238は、アクセス制御処理を実行すると、図8に示すように、まず、ステップSS10に移行する。
ステップSS10では、レジスタ234、236に対するリード要求をI/F212から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップSS12に移行して、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップSS14に移行する。
ステップSS14では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS16に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS18に移行する。
ステップSS18では、レジスタ234、236が保持しているデータを読み出し、ステップSS20に移行して、読み出したデータをI/F212に出力する。出力されたデータは、I/F212を介してCPUコア203のレジスタ203cに保持される。
次いで、ステップSS22に移行して、レジスタ236に対するライト要求をI/F212から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップSS24に移行して、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップSS26に移行する。
ステップSS26では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS28に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS30に移行する。
ステップSS30では、CPUコア203のレジスタ203cが保持しているデータをI/F212から入力し、ステップSS32に移行して、入力したデータをレジスタ236に書き込み、アクセス制御処理を終了する。
一方、ステップSS28で、許可アドレスでないと判定したとき(No)、ステップSS26で、許可命令コード列でないと判定したとき(No)、およびステップSS22で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ236にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア203は、アクセス制御装置230からの通知を受け、不正が行われている可能性がある旨の通知(以下、適宜、不正通知という。)を行ってもよい。不正通知は、例えば、所定のメッセージ、マークまたは画像を図柄表示部104に表示したり、所定のメッセージ音や効果音をスピーカ380から出力したり、I/F210を介してCPU202の製造元、管理者または他の機器にエラーメッセージを送信したり、I/F210を介して上記表示や音声出力を他の機器に行わせるための制御信号を送信したりすることにより行うことができる。これにより、主制御部2aに不正が行われた可能性があることをユーザ等に認識させ、調査や修理等の措置を講じさせることができる。
一方、ステップSS16で、許可アドレスでないと判定したとき(No)、ステップSS14で、許可命令コード列でないと判定したとき(No)、およびステップSS10で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ234、236が保持しているデータをI/F212に出力せずに、ステップSS22に移行する。このとき、CPUコア203のレジスタ203cには、アクセス制御装置230からの出力がないので、「0000」や「1111」等の非正当値が保持される。非正当値を所定値にしておき、その値がレジスタ203cに保持された場合、CPUコア203は、不正通知を行ってもよい。ここで、所定値とは、例えば、複数種類の固定値群や、あらかじめ変動規則を定めておいた変動値である。
次に、アクセス制御部338で実行されるアクセス制御処理について図9を参照して説明する。
図9は、アクセス制御部338で実行されるアクセス制御処理を示すフローチャートである。
アクセス制御部338は、アクセス制御処理を実行すると、図9に示すように、まず、ステップSS10に移行する。
ステップSS10では、レジスタ334、336に対するリード要求をI/F312から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップSS12aに移行して、CPUコア203が実行する命令コード列およびそのアドレスを入力部331から入力して取得し、ステップSS14に移行する。この命令コード列およびそのアドレスは、制御コマンドに付加されて主制御部2aから送信され、演出制御部300によって取得されたものである。
ステップSS14では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS16に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS18に移行する。
ステップSS18では、レジスタ334、336が保持しているデータを読み出し、ステップSS20に移行して、読み出したデータをI/F312に出力する。出力されたデータは、I/F312を介してCPUコア303のレジスタ303cに保持される。
次いで、ステップSS22に移行して、レジスタ336に対するライト要求をI/F312から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップSS24aに移行して、CPUコア203が実行する命令コード列およびそのアドレスを入力部331から入力して取得し、ステップSS26に移行する。この命令コード列およびそのアドレスは、制御コマンドに付加されて主制御部2aから送信され、演出制御部300によって取得されたものである。
ステップSS26では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS28に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS30に移行する。
ステップSS30では、CPUコア303のレジスタ303cが保持しているデータをI/F312から入力し、ステップSS32に移行して、入力したデータをレジスタ336に書き込み、アクセス制御処理を終了する。
一方、ステップSS28で、許可アドレスでないと判定したとき(No)、ステップSS26で、許可命令コード列でないと判定したとき(No)、およびステップSS22で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ336にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア303は、アクセス制御装置330からの通知を受け、不正が行われている可能性がある旨の通知(すなわち、不正通知を行ってもよい。不正通知は、例えば、所定のメッセージ、マークまたは画像を図柄表示部104に表示したり、所定のメッセージ音や効果音をスピーカ380から出力したり、I/F310を介してCPU202の製造元、管理者または他の機器にエラーメッセージを送信したり、I/F310を介して上記表示や音声出力を他の機器に行わせるための制御信号を送信したりすることにより行うことができる。これにより、主制御部2aに不正が行われた可能性があることをユーザ等に認識させ、調査や修理等の措置を講じさせることができる。
一方、ステップSS16で、許可アドレスでないと判定したとき(No)、ステップSS14で、許可命令コード列でないと判定したとき(No)、およびステップSS10で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ334、336が保持しているデータをI/F312に出力せずに、ステップSS22に移行する。このとき、CPUコア303のレジスタ303cには、アクセス制御装置330からの出力がないので、「0000」や「1111」等の非正当値が保持される。非正当値を所定値にしておき、その値がレジスタ303cに保持された場合、CPUコア303は、不正通知を行ってもよい。ここで、所定値とは、例えば、複数種類の固定値群や、あらかじめ変動規則を定めておいた変動値である。
〔ROMのメモリ構造〕
次に、主制御部2aのROM204及び演出制御部300のROM304のメモリ構造を説明する。
図10は、ROM204、304のメモリ構造を模式的に示した図である。
ROM204、304は、図10に示すように、それぞれCPUコア203、303が実行する命令コード列を記憶する。
ROM204、304の各記憶領域204a、304aには、所定領域ごと(例えば、1バイトごと)にアドレスが割り当てられている。図10の例では、記憶領域204a、304aに対してアドレス「0x000」〜「0xNNN」が割り当てられており、各アドレスは1バイト分の領域を示している。例えば、アドレス「0x100」〜「0x103」には、命令コード列「0xABCDEFGH」(リード命令)が格納されている。また、アドレス「0x104」〜「0x107」には、命令コード列「0xJKLMNOPQ」(ライト命令)が格納されている。
〔制御コマンドなどのデータ構造〕
次に、主制御部2aから演出制御部300などへ送信される制御コマンドなどのデータ構造を説明する。
図11は、制御コマンドなどのデータ構造を示す図である。
通常の制御コマンド500の場合は、図11(a)に示すように、制御データ501が付加されている。これに対し、認証データ付き制御コマンドの場合は、図11(b)に示すように、制御データ501が付加され、さらに第1の認証データである暗号化認証データ502および命令情報503が付加された構成になっている。このように、第1の認証データや命令情報を制御コマンドに付加して主制御部2aから送信することにより、認証データ単体または命令情報単体で送信する場合と比較して、主制御部2aと周辺部3aとの間の通信負荷の増大を抑えることができる。また、第1の認証データを制御コマンドに付加して主制御部2aから送信することにより、認証データ単体で送信する場合と比較して、通信データ中から認証データが抽出され、解析されてしまう危険性を低減することができる。さらに、認証処理は、第1の認証データが付加された制御コマンドを送信する場合にのみ行われるため、認証処理による主制御部2aの処理負荷が認証処理によって増大する割合を抑えることができる。
なお、制御コマンド500に対する、制御データ501、第1の認証データ502、命令情報503の配置の順序は、図11(b)の場合に限定されるものではない。すなわち、図11(c)に示すように、制御コマンド500の先頭に第1の認証データ502および命令情報503を付加した配置としたり、図11(d)に示すように、制御コマンド500と制御データ501との間に第1の認証データ502および命令情報503を挿入した配置としたりしてもよい。また、制御コマンド500および制御データ501に対し、認証データ502だけを、それらの先頭もしくは後段に付加したり、それらの間に付加したりしてもよい。同様に、制御コマンド500および制御データ501に対し、命令情報503だけを、それらの先頭もしくは後段に付加したり、それらの間に付加したりしてもよい。さらに、制御コマンド500と制御データ501とは別個に第1の認証データや命令情報を送信することとしてもよい。例えば、制御コマンドの1つである大当たりコマンドおよびその制御データを送信した後、3回目の制御コマンド送信時に第1の認証データや命令情報を付加して送信する、などとしてもよい。
ここで、主制御部2aから演出制御部300などへ送信される制御コマンドには、電源オンコマンド、電源オフコマンド、客待ちデモ開始コマンド、客待ちデモ停止コマンド、変動パターンコマンド、大当たり開始コマンド、大当たり終了コマンドおよび大当たりコマンドなどがある。
電源オンコマンドは、電源の投入を指定するための制御コマンドであって、電源投入時に演出制御部300および賞球制御部400に送信される。
電源オフコマンドは、電源の遮断を指定するための制御コマンドであって、電源遮断時に演出制御部300および賞球制御部400に送信される。
客待ちデモ開始コマンドは、遊技客を誘致するためのデモンストレーション演出(以下、客待ちデモという。)の開始を指定するための制御コマンドであって、遊技中断時に演出制御部300に送信される。
客待ちデモ停止コマンドは、客待ちデモの終了を指定するための制御コマンドであって、遊技再開時に演出制御部300に送信される。
変動パターンコマンドは、演出図柄の変動パターンを指定するための制御コマンドであって、演出図柄の変動開始時に演出制御部300に送信される。変動パターンコマンドには、はずれ非リーチコマンド、はずれリーチコマンド、大当たりリーチコマンドがある。
はずれ非リーチコマンドは、大当たり抽選で「はずれ」(以下、単に「はずれ」という。)となったときに選択される変動パターンのうちリーチ演出を行わない変動パターンを指定するための制御コマンドである。
はずれリーチコマンドは、はずれ時に選択される変動パターンのうちリーチ演出を行う変動パターンを指定するための制御コマンドである。演出制御部300では、はずれリーチコマンドまたははずれ非リーチコマンドに基づいてはずれであることを判定することができる。
大当たりリーチコマンドは、大当たり時に選択される変動パターンのうちリーチ演出を行う変動パターンを指定するための制御コマンドである。演出制御部300では、大当たりリーチコマンドに基づいて大当たりであることを判定することができる。
大当たり開始コマンドは、大当たり演出の開始を指定するための制御コマンドであって、大当たり演出の開始時に演出制御部300に送信される。
大当たり終了コマンドは、大当たり演出の終了を指定するための制御コマンドであって、大当たり演出の終了時(最終ラウンドの終了時)に演出制御部300に送信される。
大当たりコマンドは、大当たりを指定するための制御コマンドであって、これには、ラウンド開始コマンドおよびラウンド終了コマンドがある。
ラウンド開始コマンドは、ラウンドの開始を指定するための制御コマンドであって、ラウンドの開始時に演出制御部300に送信される。ラウンド開始コマンドは、各ラウンドごとに設定されている。例えば、最大ラウンド数が15回である場合は、15種類のラウンド開始コマンドが設定される。したがって、ラウンドが2回以上継続する場合は、大当たり中にラウンド開始コマンドが複数回にわたって送信されることになる。
ラウンド終了コマンドは、ラウンドの終了を指定するための制御コマンドであって、最終ラウンドを除くラウンドの終了時に演出制御部300に送信される。ラウンド終了コマンドは、最終ラウンドを除く各ラウンドごとに設定されている。例えば、最大ラウンド数が15回である場合は、14種類のラウンド終了コマンドが設定される。したがって、ラウンドが3回以上継続する場合は、大当たり中にラウンド終了コマンドが複数回にわたって送信されることになる。
なお、これら制御コマンドは、あくまで代表的なものであり、その他にも各種の制御コマンドが規定されている。これら制御コマンドのうち、予め定められたものについては、暗号化認証データや命令情報が付加される。本実施形態では、はずれリーチコマンドまたははずれ非リーチコマンド(すなわち、はずれコマンド)に、暗号化認証データが付加される。
〔遊技制御処理〕
次に、主制御部2aで実行される遊技制御処理について説明する。
CPU202は、所定の動作クロック(例えば、4[ms])で1サイクルを実行可能な制御プログラムをROM204から読み出し、読み出した制御プログラムに従って、図12のフローチャートに示す遊技制御処理を実行する。
図12は、遊技制御処理を示すフローチャートである。
遊技制御処理は、CPU202において実行されると、図12に示すように、まず、ステップS100に移行する。
ステップS100では、電源がオンになったか否かを判定し、電源がオンになったと判定したとき(Yes)は、ステップS102に移行するが、そうでないと判定したとき(No)は、電源がオンになるまでステップS100で待機する。
ステップS102では、RAM206の内容を初期化し、I/F210を介して、演出制御部300および賞球制御部400に電源オンコマンドを送信する初期化処理を実行する。初期化処理では、電源オンコマンドが送信される。電源オンコマンドは予め定められたコマンドすなわちはずれリーチコマンドまたははずれ非リーチコマンドではないため、ステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300および賞球制御部400にそのまま送信される。
演出制御部300では、電源オンコマンドを受信すると、図柄表示部104、ランプ制御部386および音声制御部382に対して、電源オン時の演出用の制御コマンド(具体的には、デモ画面の表示、ランプの点灯、音声の出力を指定するための制御コマンド)がそれぞれ送信される。
次いで、ステップS104に移行して、CPU202に接続された機器(以下、接続機器という。)の認証を行う接続機器認証処理を実行し、ステップS106に移行して、始動入賞口105に遊技球が入賞したことを判定する入賞判定処理を実行し、ステップS108に移行する。
ステップS108では、大当たりの判定を行うとともに演出図柄の変動パターンを決定する大当たり判定処理を実行し、ステップS110に移行して、大入賞口109の開閉部材を所定パターンで開放させる電動役物制御処理を実行し、ステップS112に移行する。
ステップS112では、賞球制御部400に対して遊技球の払出を指定するための制御コマンド(払出制御コマンド)をRAM206の送信バッファに格納する賞球払出制御処理を実行し、ステップS114に移行して、I/F210を介して、送信バッファに格納された制御コマンドを演出制御部300または賞球制御部400に送信する制御コマンド送信処理を実行し、ステップS116に移行する。
ステップS116では、電源がオフになったか否かを判定し、電源がオフになったと判定したとき(Yes)は、ステップS118に移行して、I/F210を介して、演出制御部300および賞球制御部400に電源オフコマンドを送信する終了処理を実行し、遊技制御処理を終了する。
一方、ステップS116で、電源がオフになっていないと判定したとき(No)は、ステップS106に移行する。図12においては、接続機器認証処理(ステップS104)を実行した後、入賞判定処理(ステップS106)などの処理に移行しているが、これに限定されない。すなわち、入賞判定処理以降の処理の途中に接続機器認証処理が行われてもよく、処理の順序は問わない。
なお、乱数カウンタは、上記動作クロックの1周期(例えば、4[ms])のうち各処理を実行した残余時間を利用して更新される。またその他、遊技制御処理と並列に実行される乱数更新処理で更新することもできる。乱数カウンタは、例えば、「0」から順に「1」ずつカウントアップを行っていき、カウント値が最大値(例えば、「999」)を超えたときに「0」に戻すことにより、所定の数値範囲(例えば、「0」〜「999」)で循環的にカウントを行う。
〔接続機器認証処理〕
次に、図12のステップS104の接続機器認証処理について説明する。
CPU202には、各種の機器の接続が可能であるが、ユーザやメーカが承認していない機器が不正に接続され、CPU202の誤動作を発生させたり、ROM204のデータが改ざんされたり、盗まれたりする恐れがある。これを防止するため、CPU202は、接続機器の認証を行う。なお、接続機器認証処理の実行にはアクセス制御装置230も密接に関係するため、ここでは、接続機器認証処理の実行に伴うCPUコア203およびアクセス制御装置230の動作を説明する。
図13は、接続機器認証処理の実行に伴うCPUコア203およびアクセス制御装置230の動作を示すフローチャートである。
CPUコア203は、図13に示すように、まず、ステップS40、S42を経て、接続機器から認証用データを取得し、I/F212を介して、取得した認証用データを用いて検証値Vの生成要求を出力する。検証値Vは、接続機器を認証するために用いる値である。なお、ステップS40で取得した認証用データをそのまま検証値Vとしてもよい。
アクセス制御装置230は、検証値Vの生成要求を入力すると、ステップS44を経て、演算部232で検証値Vを生成し、レジスタ234に保持する。
次いで、CPUコア203は、ステップS46を経て、アクセス制御装置230のレジスタ234から検証値Vを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ234に対するリード要求を出力する。また、ステップS48を経て、I/F212を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置230は、リード要求を入力すると、ステップS50を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ234が保持している検証値Vを読み出し、読み出した検証値VをI/F212に出力する。
CPUコア203は、検証値Vを入力すると、ステップS52を経て、入力した検証値Vをレジスタ203cに保持する。そして、CPUコア203は、ステップS54を経て、アクセス制御装置230のレジスタ236に検証値Vを書き込むライト命令をROM204から読み出し、読み出したライト命令を実行することにより、I/F212を介してレジスタ236に対するライト要求を出力する。また、ステップS56を経て、I/F212を介して、読み出したライト命令およびそのアドレス並びに検証値Vを出力する。
アクセス制御装置230は、ライト要求を入力すると、ステップS58を経て、ライト命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、検証値Vを入力し、入力した検証値Vをレジスタ236に書き込む。
次いで、CPUコア203は、ステップS60を経て、I/F212を介して期待値Pの生成要求を出力する。期待値Pは、検証値Vを照合するために用いる値である。
アクセス制御装置230は、期待値Pの生成要求を入力すると、ステップS62を経て、演算部232で期待値Pを生成し、レジスタ234に保持する。
次いで、CPUコア203は、ステップS64を経て、アクセス制御装置230のレジスタ234から期待値Pを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ234に対するリード要求を出力する。また、ステップS66を経て、I/F212を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置230は、リード要求を入力すると、ステップS68を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ234が保持している期待値Pを読み出し、読み出した期待値PをI/F212に出力する。
次いで、CPUコア203は、ステップS70を経て、アクセス制御装置230のレジスタ236から検証値Vを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ236に対するリード要求を出力する。また、ステップS72を経て、I/F212を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置230は、リード要求を入力すると、ステップS74を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ236が保持している検証値Vを読み出し、読み出した検証値VをI/F212に出力する。
CPUコア203は、検証値Vおよび期待値Pを入力すると、ステップS76、S78を経て、検証値Vと期待値Pとを照合し、照合結果が正しいか否かを判定する。照合結果が正しいか否かは、例えば、検証値Vが期待値Pと所定関係にあるか否かにより判定する。所定関係とは、例えば、検証値Vが期待値Pと一致していること、検証値Vおよび期待値Pの一方を所定の演算方法により演算した演算値が他方と一致していること、検証値Vおよび期待値Pに大小関係その他の相関関係があることをいう。
照合結果が正しいと判定したとき(Yes)は、CPUコア203は、ステップS80を経て、接続機器を認証し、接続機器認証処理を終了する。一方、照合結果が正しくないと判定したとき(No)は、CPUコア203は、ステップS82を経て、接続機器を認証せず、接続機器認証処理を終了する。接続機器を認証しなかった場合、CPUコア203は、不正通知を行ったり接続機器との接続を切断したりする。
〔制御コマンド送信処理〕
次に、図12で示すステップS114の制御コマンド送信処理を説明する。
図14は、制御コマンド送信処理を示すフローチャートである。
制御コマンド送信処理は、図12に示すステップS114において実行されると、図14に示すように、まず、ステップS200に移行する。
ステップS200では、制御コマンドを送信バッファから読み出し、ステップS202に移行して、読み出した制御コマンドが予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)であるか否かを判定し、はずれリーチコマンドまたははずれ非リーチコマンドであると判定したとき(Yes)は、ステップS204に移行する。
ステップS204では、ROM204の制御プログラムのデータに基づいて第1の認証データを生成する。第1の認証データは、演出制御部300で主制御部2aを認証するためのデータであって、例えば、制御プログラムの一部または全部のデータに対して、ハッシュ関数による演算、パリティチェック、巡回冗長検査(CRC(Cyclic Redundancy
Check))またはチェックサム等の誤り検出演算を行って得られた値を検証値として含む。このように、検証値は、ROM204に実際に記憶されている制御プログラムのデータから算出される。したがって、検証値を用いて認証を行うことにより、正規の主制御基板を不正な主制御基板に取り替えたり、ROM204の制御プログラムを改ざんしたりといった不正行為を検出することができる。
次いで、ステップS206に移行して、所定の暗号化アルゴリズムにより、生成した第1の認証データを暗号化する暗号化処理を実行する。
この暗号化処理には、例えば、暗号鍵(例えば、「0x33」)との排他的論理和(XOR)を演算する暗号化アルゴリズムが用いられる。この場合、暗号化アルゴリズムに対応する復号化アルゴリズムは、同一のものとなる。
そして、この暗号化アルゴリズムにより、実行された暗号化処理によって得られた演算値を暗号化認証データとする。
次いで、ステップS208に移行して、ステップS200で読み出した制御コマンドを、暗号化した暗号化認証データや命令情報を付加して演出制御部300に送信し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS202で、はずれリーチコマンドまたははずれ非リーチコマンドでないと判定したとき(No)は、ステップS210に移行して、ステップS200で読み出した制御コマンドをそのまま演出制御部300または賞球制御部400に送信し、一連の処理を終了して元の処理に復帰させる。
なお、電源オンコマンドおよび電源オフコマンドの送信(ステップS102、S118)についても、図14のフローチャートに示す制御コマンド送信処理と同様の処理を行う。
〔入賞判定処理〕
次に、図12に示すステップS106の入賞判定処理を説明する。
図15は、入賞判定処理を示すフローチャートである。
入賞判定処理は、図12に示すステップS106において実行されると、図15に示すように、まず、ステップS300に移行する。
ステップS300では、保留球数が「0」であるか否かを判定し、保留球数が「0」であると判定したとき(Yes)は、ステップS302に移行する。
ステップS302では、タイマ(不図示)を用いて始動入賞口105への最後の入賞から所定時間(例えば、10分)が経過したか否かを判定し、所定時間が経過したと判定したとき(Yes)は、ステップS304に移行する。
ステップS304では、客待ちデモを行う客待ちデモ実行処理を実行する。客待ちデモ実行処理では、客待ちデモ開始コマンドを送信バッファに格納することにより客待ちデモを開始する。また、始動入賞口105への入賞、発射部482に対する操作等を契機として遊技の再開を検出したときは、客待ちデモ停止コマンドを送信バッファに格納することにより客待ちデモを終了する。これにより、ステップS114の制御コマンド送信処理では、客待ちデモ開始コマンドまたは客待ちデモ停止コマンドが演出制御部300に送信される。
次いで、ステップS306に移行して、I/F210を介して始動入賞口検出部280からのセンサ信号を読み込み、読み込んだセンサ信号に基づいて始動入賞口105に遊技球が入賞したことを検出したか否かを判定し、遊技球の入賞を検出したと判定したとき(Yes)は、ステップS308に移行する。
ステップS308では、保留球数が「4」以上であるか否かを判定し、保留球数が「4」未満であると判定したとき(No)は、ステップS310に移行して、保留球数に「1」を加算し、ステップS312に移行する。
ステップS312では、大当たり決定乱数、停止図柄決定乱数その他遊技制御に用いる乱数を乱数カウンタから取得し、ステップS314に移行して、取得した各乱数を、保留球数に対応したRAM206の所定領域にそれぞれ格納し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS308で、保留球数が「4」以上であると判定したとき(Yes)、およびステップS306で、遊技球の入賞を検出しないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
一方、ステップS302で、所定時間が経過していないと判定したとき(No)、およびステップS300で、保留球数が「0」でないと判定したとき(No)はいずれも、ステップS306に移行する。
〔大当たり判定処理〕
次に、図12に示すステップS108の大当たり判定処理を説明する。
図16は、大当たり判定処理を示すフローチャートである。
大当たり判定処理は、所定確率で大当たりを発生させるために、大当たり決定乱数がとり得る所定の数値範囲(例えば、「0」〜「400」)に1個の大当たり値を設定し、始動入賞口105に遊技球が入賞した入賞タイミングで大当たり決定乱数を取得し、取得した乱数値と大当たり値とが一致しているときに大当たりを発生させる処理であって、図12に示すステップS108において実行されると、図16に示すように、まず、ステップS400に移行する。
ステップS400では、図柄表示部104において演出図柄が変動中か否かを判定し、演出図柄が変動中でないと判定したとき(No)は、ステップS402に移行して、保留球数が「1」以上であるか否かを判定し、保留球数が「1」以上であると判定したとき(Yes)は、ステップS404に移行する。
ステップS404では、保留球数に対応したRAM206の所定領域から大当たり決定乱数を読み出し、ステップS406に移行して、読み出した乱数値が大当たり値と一致しているか否かを判定し、大当たり値と一致していると判定したとき(Yes)は、ステップS408に移行して、大当たりフラグをセットし、ステップS410に移行する。
ステップS410では、大当たり時に停止させる演出図柄の態様を決定する大当たり時停止図柄決定処理を実行する。大当たり時停止図柄決定処理では、例えば、大当たり用の停止図柄決定テーブルをROM204から読み出す。そして、保留球数に対応したRAM206の所定領域から停止図柄決定乱数を読み出し、読み出した乱数値の順位の停止図柄番号を、読み出した停止図柄決定テーブルから取得し、取得した停止図柄番号を示す制御コマンド(図柄指定コマンド)を送信バッファに格納する。
次いで、ステップS412に移行して、大当たり時に変動表示する演出図柄の変動パターンを決定する大当たり時変動パターン決定処理を実行する。大当たり時変動パターン決定処理では、例えば、リーチ決定乱数を乱数カウンタから取得し、取得した乱数値に対応する大当たり用の変動パターン決定テーブルをROM204から読み出す。大当たりリーチコマンドは、1または複数の特定の変動パターン決定テーブルにのみ登録されているので、リーチ決定乱数に基づくこの選択は、リーチ演出を行うか否かを決定することになる。そして、変動パターン決定乱数を乱数カウンタから取得し、取得した乱数値の順位の変動パターン番号を、読み出した変動パターン決定テーブルから取得し、取得した変動パターン番号を示す変動パターンコマンドを送信バッファに格納する。これにより、ステップS114の制御コマンド送信処理では、大当たりリーチコマンドその他大当たり時に選択される変動パターンコマンドが演出制御部300に送信される。
次いで、ステップS414に移行して、演出制御部300に対して演出図柄の変動開始を指定するための制御コマンド(変動開始コマンド)を送信バッファに格納する図柄変動開始処理を実行し、ステップS416に移行して、保留球数から「1」を減算し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS406で、大当たり値と一致しないと判定したとき(No)は、ステップS418に移行して、はずれ時に停止させる演出図柄の態様を決定するはずれ時停止図柄決定処理を実行する。はずれ時停止図柄決定処理は、ステップS410と同様に構成される。ステップS410と異なるのは、はずれ用の停止図柄決定テーブルを用いる点である。
次いで、ステップS420に移行して、はずれ時に変動表示する演出図柄の変動パターンを決定するはずれ時変動パターン決定処理を実行する。はずれ時変動パターン決定処理は、ステップS412と同様に構成される。ステップS412と異なるのは、はずれ用の変動パターン決定テーブルを用いる点である。これにより、ステップS114の制御コマンド送信処理では、はずれ非リーチコマンド、はずれリーチコマンドその他はずれ時に選択される変動パターンコマンドが演出制御部300に送信される。
ステップS420の処理が終了すると、ステップS414に移行する。
一方、ステップS400で、図柄表示部104において演出図柄が変動中であると判定したとき(Yes)は、ステップS422に移行する。
ステップS422では、演出図柄の変動を開始してから所定時間(例えば、30秒)が経過したか否かを判定し、所定時間が経過したと判定したとき(Yes)は、ステップS424に移行して、演出制御部300に対して演出図柄の停止を指定するための制御コマンド(図柄停止コマンド)を送信バッファに格納する図柄停止処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS422で、所定時間が経過していないと判定したとき(No)、およびステップS402で、保留球数が「0」であると判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
〔電動役物制御処理〕
次に、図12に示すステップS110の電動役物制御処理を説明する。
図17は、電動役物制御処理を示すフローチャートである。
電動役物制御処理は、図12に示すステップS110において実行されると、図17に示すように、まず、ステップS500に移行する。
ステップS500では、大当たりフラグに基づいて大当たりか否かを判定し、大当たりフラグがセットされていることにより大当たりであると判定したとき(Yes)は、ステップS502に移行する。
ステップS502では、大当たり演出を開始するタイミングであるか否かを判定し、大当たり演出を開始するタイミングであると判定したとき(Yes)は、ステップS504に移行する。
ステップS504では、大当たり開始コマンドを送信バッファに格納する大当たり演出開始処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS114の制御コマンド送信処理では、大当たり開始コマンドが演出制御部300に送信される。
一方、ステップS502で、大当たり演出を開始するタイミングでないと判定したとき(No)は、ステップS506に移行して、ラウンドを開始するタイミングであるか否かを判定し、ラウンドを開始するタイミングであると判定したとき(Yes)は、ステップS508に移行する。
ステップS508では、ラウンド開始コマンドを送信バッファに格納するラウンド開始処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS114の制御コマンド送信処理では、ラウンド開始コマンドが演出制御部300に送信される。
一方、ステップS506で、ラウンドを開始するタイミングでないと判定したとき(No)は、ステップS510に移行して、ラウンドが継続中であるか否かを判定し、ラウンドが継続中であると判定したとき(Yes)は、ステップS512に移行する。
ステップS512では、大入賞口開閉部288により大入賞口109の開閉を制御する大入賞口開閉制御処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS510で、ラウンドが継続中でないと判定したとき(No)は、ステップS514に移行して、ラウンドを終了するタイミングであるか否かを判定し、ラウンドを終了するタイミングであると判定したとき(Yes)は、ステップS516に移行する。
ステップS516では、ラウンド回数に「1」を加算し、ステップS518に移行して、ラウンド回数が最大ラウンド数(例えば、15回)を超えたか否かを判定し、最大ラウンド数を超えていないと判定したとき(No)は、ステップS520に移行する。
ステップS520では、ラウンド終了コマンドを送信バッファに格納するラウンド終了処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS114の制御コマンド送信処理では、ラウンド終了コマンドが演出制御部300に送信される。
一方、ステップS518で、ラウンド回数が最大ラウンド数を超えていると判定したとき(Yes)は、ステップS522に移行する。
ステップS522では、大当たり終了コマンドを送信バッファに格納する大当たり演出終了処理を実行する。これにより、ステップS114の制御コマンド送信処理では、大当たり終了コマンドが演出制御部300に送信される。
次いで、ステップS524に移行して、大当たりフラグをリセットし、一連の処理を終了して元の処理に復帰させる。
一方、ステップS514で、ラウンドを終了するタイミングでないと判定したとき(No)、およびステップS500で、大当たりフラグがリセットされていることにより大当たりでないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
〔演出制御処理〕
次に、演出制御部300で実行される演出制御処理を説明する。
演出制御部300のCPU302は、制御プログラムをROM304から読み出し、読み出した制御プログラムに従って、図18のフローチャートに示す演出制御処理を実行する。
図18は、演出制御処理を示すフローチャートである。
演出制御処理は、CPU302において実行されると、図18に示すように、まず、ステップS600に移行する。
ステップS600では、主制御部2aから制御コマンドを受信する制御コマンド受信処理を実行し、ステップS602に移行して、受信した制御コマンドのうち変動パターンコマンドを処理する変動パターンコマンド処理を実行し、ステップS604に移行する。
ステップS604では、受信した制御コマンドのうち大当たりコマンドを処理する大当たりコマンド処理を実行し、ステップS606に移行して、受信した制御コマンドのうち変動パターンコマンドおよび大当たりコマンド以外のものを処理するその他コマンド処理を実行し、ステップS600に移行する。
〔制御コマンド受信処理〕
次に、ステップS600の制御コマンド受信処理を説明する。
図19は、制御コマンド受信処理を示すフローチャートである。
制御コマンド受信処理は、ステップS600において実行されると、図19に示すように、まず、ステップS700に移行する。
ステップS700では、I/F310を介して主制御部2aから制御コマンドを受信したか否かを判定し、制御コマンドを受信したと判定したとき(Yes)は、ステップS702に移行するが、そうでないと判定したとき(No)は、制御コマンドを受信するまでステップS700で待機する。
ステップS702では、受信した制御コマンドがはずれリーチコマンドまたははずれ非リーチコマンドであるか否かを判定し、はずれリーチコマンドまたははずれ非リーチコマンドであると判定したとき(Yes)は、ステップS704に移行して、命令情報を取得したか判定し、命令情報を取得した場合(Yes)は、ステップS706に移行して接続機器認証処理を行う。ステップS704において、命令情報を取得していない場合(No)は、ステップS708に移行して、受信したはずれリーチコマンドまたははずれ非リーチコマンドに付加されている暗号化認証データを取得し、ステップS710に移行する。
ステップS710では、主制御部2aが使用する所定の暗号化アルゴリズムに対応する復号化アルゴリズムにより、取得した暗号化認証データを復号化する復号化処理を実行する。
復号化アルゴリズムとしては、例えば、復号鍵(例えば、「0x33」)との排他的論理和を演算する復号化アルゴリズムが用いられる。ここで、復号化アルゴリズムは、暗号化アルゴリズムにより暗号化した暗号化結果を復号化可能なものである。
したがって、復号化処理では、復号化アルゴリズムにより暗号化認証データを復号化して検証値を得ることになる。この検証値は、主制御部2aで生成した検証値(すなわち、期待値)と一致する。
次いで、ステップS712に移行して、ROM304から期待値を読み出し、ステップS714に移行して、復号化して得られた検証値が、読み出した期待値と一致するか否かを判定し、期待値と一致すると判定したとき(Yes)は、ステップS716に移行する。
ステップS716では、ステップS700で受信した制御コマンドをRAM306の受信バッファに格納し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS714で、検証値が期待値と一致しないと判定したとき(No)は、ステップS718に移行する。
ステップS718では、ステップS700で受信した制御コマンドを破棄し、ステップS720に移行する。
ステップS720では、図柄表示部104、音声制御部382およびランプ制御部386に対して、不正通知を行う不正通知演出を指定するための制御コマンド(不正通知演出コマンド)をそれぞれ送信する不正通知処理を実行する。図柄表示部104、音声制御部382およびランプ制御部386では、不正通知演出コマンドを受信すると、不正通知演出を行う。不正通知演出では、例えば、図柄表示部104に通常出現しないキャラクタを出現させたり、キャラクタを通常とは異なる方法で出現させたりする。また、図柄表示部104の輝度や色を変えたり、所定の点滅パターンでランプ384を点滅させたりして通知してもよい。これにより、パチンコホールの従業員がその状態を認識しやすい。また、不正通知演出は、遊技者がその状態を認識しにくい態様で行ってもよいし、逆に、遊技者が認識しやすい態様で行ってもよい。遊技者が認識しやすい態様で行えば、不正行為を中止することが期待できる。
ステップS720の処理が終了すると、一連の処理を終了して元の処理に復帰させる。
一方、ステップS702で、受信した制御コマンドがはずれリーチコマンドまたははずれ非リーチコマンドでないと判定したとき(No)は、ステップS722に移行して、ステップS700で受信した制御コマンドを受信バッファに格納し、一連の処理を終了して元の処理に復帰させる。
〔接続機器認証処理〕
ここで、図19のステップS706において実行される接続機器認証処理について説明する。この場合、主制御部2aから出力されたはずれリーチコマンドまたははずれ非リーチコマンドに付加されている命令情報を取得し、接続機器認証処理を実行する。主制御部2aのCPU202が物理的に解析され、例えばROM内の制御プログラムを不正な内容に差し替えて製造された不正なCPUが主制御部2aに実装されている場合でも、主制御部2aと演出制御部300との接続状態を認証することにより、それを検出することができる。この接続機器認証処理は、演出制御部300のCPU302によって行なわれる。
ここで、この演出制御部300における接続機器認証処理の実行にはアクセス制御装置330が密接に関係するが、その動作は図13に示したように主制御部2aにおけるアクセス制御装置230とほぼ同様である。
すなわち、演出制御部300のCPUコア303は、図20に示すように、まず、ステップS40aにおいて、主制御部2aから出力された命令情報を取得する。この命令情報は、上述したように、例えば、はずれリーチコマンドまたははずれ非リーチコマンドに付加されているので、そのはずれリーチコマンドまたははずれ非リーチコマンドを主制御部2aから受信したときに取得することができる。
次に、ステップS42を経て、接続機器から認証用データを取得し、I/F312を介して、取得した認証用データを用いて接続機器を認証するために用いる検証値Vの生成要求を出力する。なお、ステップS40で取得した認証用データをそのまま検証値Vとしてもよい。
アクセス制御装置330は、検証値Vの生成要求を入力すると、ステップS44を経て、演算部332で検証値Vを生成し、レジスタ334に保持する。
次いで、演出制御部300のCPUコア303は、ステップS46を経て、アクセス制御装置330のレジスタ334から検証値Vを読み出すリード命令をROM304から読み出し、読み出したリード命令を実行することにより、I/F312を介してレジスタ334に対するリード要求を出力する。また、ステップS48を経て、I/F312を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置330は、リード要求を入力すると、ステップS50を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ334が保持している検証値Vを読み出し、読み出した検証値VをI/F312に出力する。
演出制御部300のCPUコア303は、検証値Vを入力すると、ステップS52を経て、入力した検証値Vをレジスタ303cに保持する。そして、CPUコア303は、ステップS54を経て、アクセス制御装置330のレジスタ336に検証値Vを書き込むライト命令をROM304から読み出し、読み出したライト命令を実行することにより、I/F312を介してレジスタ336に対するライト要求を出力する。また、ステップS56を経て、I/F312を介して、読み出したライト命令およびそのアドレス並びに検証値Vを出力する。
アクセス制御装置330は、ライト要求を入力すると、ステップS58を経て、ライト命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、検証値Vを入力し、入力した検証値Vをレジスタ336に書き込む。
次いで、CPUコア303は、ステップS60を経て、I/F312を介して期待値Pの生成要求を出力する。期待値Pは、検証値Vを照合するために用いる値である。
アクセス制御装置330は、期待値Pの生成要求を入力すると、ステップS62を経て、演算部332で期待値Pを生成し、レジスタ334に保持する。
次いで、CPUコア303は、ステップS64を経て、アクセス制御装置330のレジスタ334から期待値Pを読み出すリード命令をROM304から読み出し、読み出したリード命令を実行することにより、I/F312を介してレジスタ334に対するリード要求を出力する。また、ステップS66を経て、I/F312を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置330は、リード要求を入力すると、ステップS68を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ334が保持している期待値Pを読み出し、読み出した期待値PをI/F312に出力する。
次いで、演出制御部300のCPUコア303は、ステップS70を経て、アクセス制御装置330のレジスタ336から検証値Vを読み出すリード命令をROM304から読み出し、読み出したリード命令を実行することにより、I/F312を介してレジスタ336に対するリード要求を出力する。また、ステップS72を経て、I/F312を介して、読み出したリード命令およびそのアドレスを出力する。
アクセス制御装置330は、リード要求を入力すると、ステップS74を経て、リード命令およびそのアドレスを入力し、許可命令コード列および許可アドレスであれば、レジスタ336が保持している検証値Vを読み出し、読み出した検証値VをI/F312に出力する。
演出制御部300のCPUコア303は、検証値Vおよび期待値Pを入力すると、ステップS76、S78を経て、検証値Vと期待値Pとを照合し、照合結果が正しいか否かを判定する。照合結果が正しいか否かは、例えば、検証値Vが期待値Pと所定関係にあるか否かにより判定する。所定関係とは、例えば、検証値Vが期待値Pと一致していること、検証値Vおよび期待値Pの一方を所定の演算方法により演算した演算値が他方と一致していること、検証値Vおよび期待値Pに大小関係その他の相関関係があることをいう。
照合結果が正しいと判定したとき(Yes)は、CPUコア303は、ステップS80を経て、接続機器を認証し、接続機器認証処理を終了する。一方、照合結果が正しくないと判定したとき(No)は、CPUコア303は、ステップS82を経て、接続機器を認証せず、接続機器認証処理を終了する。接続機器を認証しなかった場合、CPUコア303は、不正通知を行ったり接続機器との接続を切断したりする。
〔変動パターンコマンド処理〕
次に、ステップS602の変動パターンコマンド処理を説明する。
図21は、変動パターンコマンド処理を示すフローチャートである。
変動パターンコマンド処理は、ステップS602において実行されると、図21に示すように、まず、ステップS800に移行する。
ステップS800では、受信バッファの制御コマンドに基づいて変動パターンコマンドを受信したか否かを判定し、変動パターンコマンドを受信したと判定したとき(Yes)は、ステップS802に移行するが、そうでないと判定したとき(No)は、変動パターンコマンドを受信するまでステップS800で待機する。
ステップS802では、乱数カウンタから乱数を取得し、ステップS804に移行して、取得した乱数に基づいて、受信した変動パターンコマンドに対応する複数の変動演出のなかからいずれかを選択し、ステップS806に移行する。
ステップS806では、図柄表示部104、音声制御部382およびランプ制御部386に対して、選択した変動演出の開始を指定するための制御コマンド(変動演出開始コマンド)をそれぞれ送信する変動演出開始処理を実行する。
次いで、ステップS808に移行して、変動演出開始コマンドを送信してから所定時間(例えば、30秒)が経過したか否かを判定し、所定時間が経過していないと判定したとき(No)は、ステップS810に移行して、受信バッファの制御コマンドに基づいて図柄停止コマンドを受信したか否かを判定し、図柄停止コマンドを受信したと判定したとき(Yes)は、ステップS812に移行する。
ステップS812では、図柄表示部104、音声制御部382およびランプ制御部386に対して、変動演出の終了を指定するための制御コマンド(変動演出終了コマンド)をそれぞれ送信する変動演出終了処理を実行する。
ステップS812の処理が終了すると、一連の処理を終了して元の処理に復帰させる。
一方、ステップS810で、図柄停止コマンドを受信しないと判定したとき(No)は、ステップS808に移行する。
一方、ステップS808で、所定時間が経過したと判定したとき(Yes)は、ステップS812に移行する。
なお、乱数カウンタの更新は、主制御部2aで採用される上記方法により行うことができる。ただし、更新方法は、主制御部2aとは必ずしも同一でなくてもよい。
〔大当たりコマンド処理〕
次に、ステップS604の大当たりコマンド処理を説明する。
図22は、大当たりコマンド処理を示すフローチャートである。
大当たりコマンド処理は、ステップS604において実行されると、図22に示すように、まず、ステップS900に移行する。
ステップS900では、受信バッファの制御コマンドに基づいて大当たり開始コマンドを受信したか否かを判定し、大当たり開始コマンドを受信したと判定したとき(Yes)は、ステップS902に移行する。
ステップS902では、図柄表示部104、音声制御部382およびランプ制御部386に対して、大当たり演出の開始を指定するための制御コマンド(大当たり演出開始コマンド)をそれぞれ送信する大当たり演出開始処理を実行する。
次いで、ステップS904に移行して、受信バッファの制御コマンドに基づいてラウンド開始コマンドを受信したか否かを判定し、ラウンド開始コマンドを受信したと判定したとき(Yes)は、ステップS906に移行する。
ステップS906では、図柄表示部104、音声制御部382およびランプ制御部386に対して、ラウンド演出の開始を指定するための制御コマンド(ラウンド演出開始コマンド)をそれぞれ送信するラウンド演出開始処理を実行する。
次いで、ステップS908に移行して、受信バッファの制御コマンドに基づいてラウンド終了コマンドを受信したか否かを判定し、ラウンド終了コマンドを受信したと判定したとき(Yes)は、ステップS910に移行する。
ステップS910では、図柄表示部104、音声制御部382およびランプ制御部386に対して、ラウンド演出の終了を指定するための制御コマンド(ラウンド演出終了コマンド)をそれぞれ送信するラウンド演出終了処理を実行し、ステップS904に移行する。
一方、ステップS908で、ラウンド終了コマンドを受信しないと判定したとき(No)は、ステップS912に移行して、受信バッファの制御コマンドに基づいて大当たり終了コマンドを受信したか否かを判定し、大当たり終了コマンドを受信したと判定したとき(Yes)は、ステップS914に移行する。
ステップS914では、図柄表示部104、音声制御部382およびランプ制御部386に対して、大当たり演出の終了を指定するための制御コマンド(大当たり演出終了コマンド)をそれぞれ送信する大当たり演出終了処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS912で、大当たり終了コマンドを受信しないと判定したとき(No)は、ステップS908に移行する。
一方、ステップS904で、ラウンド開始コマンドを受信しないと判定したとき(No)は、ラウンド開始コマンドを受信するまでステップS904で待機する。
一方、ステップS900で、大当たり開始コマンドを受信しないと判定したとき(No)は、大当たり開始コマンドを受信するまでステップS900で待機する。
〔本実施の形態の動作〕
次に、本実施の形態の動作を説明する。
図12に示すように、まず、パチンコ機に電源が投入されると、主制御部2aでは、ステップS102を経て、初期化処理が実行される。初期化処理では、電源オンコマンドが送信される。電源オンコマンドは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すようにステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300および賞球制御部400にそのまま送信される。
演出制御部300では、電源オンコマンドを受信すると、図柄表示部104、音声制御部382およびランプ制御部386に対して、電源オン時の演出用の制御コマンド(具体的には、デモ画面の表示、ランプ384の点灯、音声の出力を指定するための制御コマンド)がそれぞれ送信される。
初期化処理が終了すると、主制御部2aでは、ステップS104を経て、接続機器認証処理が実行される。
接続機器認証処理では、ステップS40〜S82を経て、アクセス制御装置230により接続機器の認証が行われる。これにより、接続機器の正当性を認証することができる。しかしながら、例えば、悪意を有する第三者によって、不正な機器が認証されるように接続機器認証処理を改ざんされてしまう場合がある。
例えば、図13に示すステップS58では、アクセス制御装置330のレジスタ336に対して検証値Vが書き込まれている。このとき、レジスタ336に書き込まれるのは、本来、演出制御部300のCPUコア303のレジスタ303cに保持されている検証値Vである。しかしながら、不正な命令コード列によって、レジスタ336に書き込む値をレジスタ303c以外の場所(または、レジスタ303cのうち検証値Vが保持されている領域以外の領域)に記憶された値とすることが可能となる。
また、例えば、図13に示すステップS50では、アクセス制御装置330のレジスタ334から検証値Vが読み出されている。このとき、読み出す値をレジスタ334以外の場所(または、レジスタ334のうち検証値Vが保持されている領域以外の領域)に記憶された値とすることが可能となる。
これらの不正は、例えば、不正なパッチ等によってCPUコア303の処理を分岐させることにより可能となる。
このような不正行為が行われると、正しい接続機器認証処理が行えず、不正な機器の接続が可能となってしまう。そのため、演出制御部300にも、アクセス制御装置330を設け、演出制御部300のCPU302によるレジスタ334、336へのアクセスを制御する。これにより、不正な命令コード列の実行により不正な機器が認証されてしまう可能性を低減することができる。
図23は、アクセス制御部338が行うアクセス制御の概要を示す説明図である。なお、図23では、説明の便宜上、構成の一部を省略している。
図23に示すように、例えば、許可命令コード列および許可アドレスが、命令コード列「0xJKLMNOPQ」(ライト命令)およびアドレス「0x104」であるとする。このとき、正規のROM304には、アドレス「0x104」〜「0x107」に命令コード列「0xJKLMNOPQ」(ライト命令)が記憶されている。
演出制御部300のCPUコア303が、アドレス「0x104」〜「0x107」から命令コード列「0xJKLMNOPQ」を読み出して実行する場合(矢印α)、アクセス制御部338は、レジスタ336へのデータの書込を許可する。
ところが、例えば、不正例1のように、アドレス「0x200」〜「0x203」に不正な命令コード列「0xPOIUYTRE」(ライト命令)が書き込まれてしまったとする。この場合、CPUコア203が、アドレス「0x200」〜「0x203」から命令コード列「0xPOIUYTRE」を読み出して実行しても(矢印β)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部338は、レジスタ336へのデータの書込を禁止する(ライト命令を拒否)。
また、例えば、不正例2のように、アドレス「0x080」〜「0x083」に不正な命令コード列「0xLKJHGFDS」が挿入されてしまったとする。この不正な命令コード列は、例えば、レジスタ336に書き込む値を変更する命令コード列である。しかしながら、この不正な命令コード列が挿入されたことにより、本来実行が許可される命令コード列「0xJKLMNOPQ」(ライト命令)のアドレスが「0x108」〜「0x10B」となってしまっている。
そのため、演出制御部300のCPUコア303が、アドレス「0x108」〜「0x10B」から命令コード列「0xJKLMNOPQ」を読み出して実行しても(矢印γ)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部338は、レジスタ336へのデータの書込を禁止する(ライト命令を拒否)。このとき、CPUコア303は、アクセス御装置330からの通知を受け、不正通知を行ってもよい。これにより、不正な命令コード列「0xLKJHGFDS」の実行により書き込み値が変更されたとしても、その値がレジスタ336に書き込まれないので、不正行為が行われる可能性を低減することができる。
一方、アクセス制御部338は、上記不正行為のほか、ビットエラーによりCPU302が誤動作する可能性を低減することもできる。
図24は、アクセス制御部338が行うアクセス制御の概要を示す説明図である。
図24に示すように、例えば、許可命令コード列および許可アドレスが、命令コード列「0xABCDEFGH」(リード命令)およびアドレス「0x100」、並びに、命令コード列「0xABCDEFGI」(ライト命令)およびアドレス「0x104」であるとする。このとき、正規のROM304には、アドレス「0x100」〜「0x103」に命令コード列「0xABCDEFGH」(リード命令)が記憶されている。
CPUコア303が命令コード列を読み出す際、命令コード列にビットエラー(例えば、「1」が「0」となる。)が発生してしまう場合がある。その結果、CPUコア203がアドレス「0x100」〜「0x103」から読み出した命令コード列「0xABCDEFGH」(リード命令)が、例えば、命令コード列「0xABCDEFGI」(ライト命令)に置き換わってしまう場合がある(矢印δ)。この場合、CPUコア303が命令コード列「0xABCDEFGI」(ライト命令)を実行すると、アクセス制御装置330のデータが予期しない形で書き換えられてしまう可能性がある。
しかしながら、このようなライト命令が実行されたとしても(矢印ε)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部338は、レジスタ336へのデータの書込を禁止する(ライト命令を拒否)。
次に、パチンコ機で遊技を行う場合を説明する。
接続機器が認証されると、図12に示すように、主制御部2aにより、ステップS106〜S114を経て、入賞判定処理、大当たり判定処理、電動役物制御処理および制御コマンド送信処理が所定周期で繰り返し実行される。これにより、パチンコ機は、遊技可能な状態となる。遊技者は、貸し出しを受けた遊技球をパチンコ機に装填し、発射部482を操作して遊技球を遊技盤101に発射することにより遊技を行うことができる。
遊技盤101に発射された遊技球が始動入賞口105に入賞すると、主制御部2aでは、図15に示すステップS306、S312を経て、その入賞タイミングでアクセス制御装置230から大当たり決定乱数が読み出される。この大当たり決定乱数も、上記接続機器認証処理の場合と同様に、アクセス制御装置230によりアクセスが許可された場合にのみ、読み出すようにしてもよい。すなわち、大当たり決定乱数の読出に関する命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであるときにのみ、読み出すようにしてもよい。その他遊技制御に用いる乱数についても同様である。そして、図16に示すステップS404、S406を経て、取得された乱数値が大当たり値と一致していれば、大当たりとなる。
大当たりとなると、ステップS410、S412を経て、大当たり時の停止図柄の態様および変動パターンが決定される。このとき、リーチ演出を行うことが決定されると、制御コマンド送信処理では、大当たり図柄を指定するための図柄指定コマンドおよび大当たりリーチコマンドが送信される。大当たりリーチコマンドは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たりリーチコマンドを受信すると、図21に示すステップS802〜S812を経て、受信した大当たりリーチコマンドに基づいて大当たりリーチ変動時の処理が実行される。
主制御部2aでは、図16に示すステップS414、S424を経て、所定の変動パターンで演出図柄を変動表示させ、演出図柄の一部をリーチ図柄で停止させた後に大当たり図柄で演出図柄を停止させる。演出図柄が停止すると、制御コマンド送信処理では、大当たり開始コマンドが送信される。大当たり開始コマンドは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たり開始コマンドを受信すると、図22に示すステップS902を経て、受信した大当たり開始コマンドに基づいて大当たり演出開始時の処理が実行される。
大当たり中は、最大ラウンド数を上限として所定条件を満たすまでラウンドが継続される。制御コマンド送信処理では、ラウンドの開始時および終了時に大当たりコマンドが送信される。大当たりコマンドは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300に送信される。
また、大当たり中は、大入賞口109が所定の開閉パターンで開放し、大入賞口109に遊技球が入賞すると、遊技球1個につき所定数の遊技球が賞球として払い出される。
そして、最終ラウンドが終了すると、制御コマンド送信処理では、大当たり終了コマンドが送信される。大当たり終了コマンドは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たり終了コマンドを受信すると、図22に示すステップS914を経て、受信した大当たり終了コマンドに基づいて大当たり演出終了時の処理が実行される。
一方、図16に示すステップS404、S406を経て、取得された乱数値が大当たり値と一致しなければ、はずれとなる。
はずれとなると、図16に示すステップS418、S420を経て、はずれ時の停止図柄の態様および変動パターンが決定される。このとき、リーチ演出を行うことが決定されると、制御コマンド送信処理では、はずれ図柄(または、はずれ図柄となる旨)を指定するための図柄指定コマンドおよびはずれリーチコマンドが送信される。これに対し、リーチ演出を行わないことが決定されると、制御コマンド送信処理では、同図柄指定コマンドおよびはずれ非リーチコマンドが送信される。はずれリーチコマンドまたははずれ非リーチコマンドは予め定められたコマンドであるため、ステップS204〜S208を経て、暗号化認証データが付加されて周辺部3aの一例である演出制御部300に送信される。図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、はずれリーチコマンドまたははずれ非リーチコマンドを受信すると、図21に示すステップS802〜S812を経て、受信したはずれリーチコマンドまたははずれ非リーチコマンドに基づいてはずれ変動時の処理が実行される。
一方、遊技が中断されると、主制御部2aでは、客待ちデモ実行処理が実行される。そして、制御コマンド送信処理では、客待ちデモ開始コマンドが送信される。客待ちデモ開始コマンドまたは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、客待ちデモ開始コマンドを受信すると、客待ちデモ開始時の処理として、図柄表示部104、音声制御部382およびランプ制御部386に対して客待ちデモ用の制御コマンドがそれぞれ送信される。
その後、遊技が再開されると、制御コマンド送信処理では、客待ちデモ停止コマンドが送信される。客待ちデモ停止コマンドまたは予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)ではないため、図14に示すステップS210を経て、暗号化認証データや命令情報が付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、客待ちデモ停止コマンドを受信すると、客待ちデモ終了時の処理として、図柄表示部104、音声制御部382およびランプ制御部386に対して客待ちデモ用の制御コマンドがそれぞれ送信される。
なお、以上は、予め定められたコマンドでない場合、暗号化認証データや命令情報を付加されることなくそのまま送信する場合について説明したが、暗号化認証データや命令情報の代わりにダミー値のデータを付加して送信してもよい。この場合、中間部は、周辺部を介して、ダミー値のデータが付加された制御コマンドを受信する。それを受信した中間部では、ダミー値のデータをそのまま周辺部へ送信してもよいし、さらに別のダミー値のデータを生成してそれを周辺部へ送信してもよい。
〔アクセス制御装置を設けることによる効果〕
このようにして、本実施の形態では、演出制御部300のアクセス制御装置330は、レジスタ334、336と、主制御部2aのCPUコア203が実行する命令情報すなわち命令コード列およびそのアドレスをI/F312から入力する入力部331と、入力部331で入力して取得した命令コード列およびアドレスに基づいて、CPU302によるレジスタ334、336へのアクセスを制御するアクセス制御部338とを備える。
これにより、レジスタ334、336のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正行為やエラーに起因する不正動作が行われる可能性を低減することができる。また、CPU202とは別体のアクセス制御装置330がアクセス制御機能を実現するので、CPUコア203自体が不正動作検出処理を行う必要がなく、従来に比して、開発や設計の難易度が高くなることを抑制することができる。さらに、命令コード列およびそのアドレスに基づいてアクセスが制御されるので、ROM204と同等容量のテーブルを用意する必要がなく、従来に比して、データ容量が増大することを抑制することができる。
さらに、DIP等からなるワンチップ型のマイクロプロセッサであるCPU202を採用する場合において、CPUコア203が不正動作検出処理を行う構成では、CPU202が丸ごと交換されるような不正行為が行われると、CPUコア203自体が交換されてしまうことになるので、CPU202の正当性を認証することはできない。これに対し、本実施の形態は、アクセス制御装置330がCPU202とは別体に設けられているので、そのような不正行為が行われても、CPU202の正当性を認証することができる。
さらに、DIP等からなるワンチップ型のマイクロプロセッサであるCPU202を採用する場合において、アクセス制御装置のアクセス制限機能を実現する回路等をCPU202に内蔵する構成では、CPU202を新たに開発、設計等しなければならず、既存のCPUには適用することができない。これに対し、本実施の形態では、アクセス制御装置330を演出制御部300に設けるだけでよいので、既存のCPUにも適用することができる。
さらに、本実施の形態では、アクセス制御部338は、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであるときにのみ、レジスタ334、336へのアクセスを許可する。
これにより、不正に書き換えられた命令コード列、ビットエラーによって内容が変化した命令コード列、または不正なアドレスに記憶された命令コード列が実行されることにより、レジスタ334、336のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
さらに、本実施の形態では、アクセス制御装置330によるアクセス制御の状況に応じて不正通知を行う。
これにより、演出制御部300に対して不正動作が行われた可能性があることを把握することができる。なお、本実施の形態では、演出制御部300、主制御部2aにアクセス制御装置230、330を設けているが、他の構成により主制御部2aの不正動作を回避できれば、この主制御部2a側のアクセス制御装置230を省略しても良い。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態を図面を参照しながら説明する。図25ないし図28は、本発明に係る遊技機およびアクセス制御プログラム、並びに遊技制御方法の第2の実施の形態を示す図である。
本実施の形態は、上記第1の実施の形態に対して、主制御部2a及び演出制御部300のアクセス制御装置230、330の各アクセス制御部238、338が、CPUコア203が実行する命令コード列およびそのアドレスに加えて、命令コード列から算出されたチェック値に基づいてアクセスを制御する点が異なる。なお、以下、上記第1の実施の形態と異なる部分についてのみ説明し、上記第1の実施の形態と重複する部分については同一の符号を付して説明を省略する。
〔主制御部の構成〕
まず、主制御部2aの構成を説明する。
図25は、主制御部2aの構成を示すブロック図である。
主制御部2aのCPU202は、図25に示すように、CPUコア203、ROM204、RAM206、セキュリティ検査回路208、I/F210、212およびタイマ214のほか、命令コード列からチェック値を算出するチェック値算出部218を有して構成されている。これらは、バス216を介して相互に接続されている。
チェック値算出部218は、命令コード列をROM204から取得する。そして、取得した命令コード列から、命令コード列の正当性を検査するチェック値を算出する。チェック値は、アクセス制御部238によるアクセス制御に用いられる。ここで、チェック値とは、ROM204に記憶された一部若しくはすべての命令コード若しくは命令コード列、1つの命令コードの一部またはそれらの組み合わせから算出される値である。チェック値算出部218は、例えば、ROM204に記憶されたすべての命令コード列に対して、ハッシュ関数による演算、パリティチェック、巡回冗長検査(CRC(Cyclic Redundancy
Check))またはチェックサム等の誤り検出演算を行ってチェック値を算出する。このように、チェック値は、ROM204に実際に記憶されている命令コード列から算出される。したがって、チェック値を用いて照合を行うことにより、ROM204に記憶された命令コード列の不正な書き換えや、ROM204の不正な差し替え等を検出することができる。
入力部231は、CPUコア203が実行する命令コード列およびそのアドレス、並びにチェック値算出部218で算出したチェック値をI/F212から入力する。このとき、チェック値を複数に分割して入力してもよい。この場合、各分割データを結合することによりチェック値を複合する。
アクセス制御部238は、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部231で入力したチェック値がチェック値の期待値と所定関係にあるときにのみ、レジスタ234、236へのアクセスを許可する。所定関係とは、例えば、チェック値が期待値と一致していること、チェック値および期待値の一方を所定の演算方法により演算した演算値が他方と一致していること、チェック値および期待値に大小関係その他の相関関係があることをいう。このように、命令コード列およびアドレスの照合と、チェック値の照合とを組み合わせることにより、不正動作が行われる可能性をさらに低減することができる。
アクセス制御部238が照合に用いる期待値は、例えば、あらかじめ(製造時等)アクセス制御部238に記憶させておく。また、アクセス制御部238が照合に用いる期待値を、他の構成部からアクセス制御部238に送信してもよい。他の構成部とは、例えば、CPUコア203やチェック値の期待値を生成するための専用の処理部(以下、期待値算出部という。)である。CPUコア203や期待値算出部は、あらかじめ記憶されている期待値をアクセス制御部238に送信してもよいし、照合処理ごとに期待値を生成してもよい。また、I/F210を介して、外部の機器からCPUコア203や期待値算出部に期待値を算出するために必要な係数等を受信してもよい。このように、アクセス制御部238に、あらかじめ期待値を記憶させずに、他の構成部から入力することとすれば、ROM204のチェック値を後発的に変更することが可能となる。
一方、図26は、演出制御部300の構成を示すブロック図である。
演出制御部300のCPU302は、図26に示すように、CPUコア303、ROM304、RAM306、I/F310、312のほか、主制御部2aと同様に命令コード列からチェック値を算出するチェック値算出部318を有して構成されている。これらは、バス316を介して相互に接続されている。
チェック値算出部318は、主制御部2aから出力される命令コード列を、IF210、310を介して取得する。そして、取得した命令コード列から、命令コード列の正当性を検査するチェック値を算出する。チェック値は、アクセス制御部338によるアクセス制御に用いられる。ここで、チェック値とは、主制御部2aのそれと同様に、ROM204に記憶された一部若しくはすべての命令コード若しくは命令コード列、1つの命令コードの一部またはそれらの組み合わせから算出される値である。チェック値算出部318は、例えば、ROM204に記憶されたすべての命令コード列に対して、ハッシュ関数による演算、パリティチェック、巡回冗長検査(CRC(Cyclic Redundancy
Check))またはチェックサム等の誤り検出演算を行ってチェック値を算出する。このように、チェック値は、ROM204に実際に記憶されている命令コード列から算出される。したがって、チェック値を用いて照合を行うことにより、ROM204に記憶された命令コード列の不正な書き換えや、ROM204の不正な差し替え等を検出することができる。
入力部331は、CPUコア203が実行する命令コード列およびそのアドレス、並びにチェック値算出部318で算出したチェック値をI/F312から入力する。このとき、チェック値を複数に分割して入力してもよい。この場合、各分割データを結合することによりチェック値を複合する。
アクセス制御部338は、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部331で入力したチェック値がチェック値の期待値と所定関係にあるときにのみ、レジスタ334、336へのアクセスを許可する。所定関係とは、例えば、チェック値が期待値と一致していること、チェック値および期待値の一方を所定の演算方法により演算した演算値が他方と一致していること、チェック値および期待値に大小関係その他の相関関係があることをいう。このように、命令コード列およびアドレスの照合と、チェック値の照合とを組み合わせることにより、演出制御部300に対する不正動作が行われる可能性をさらに低減することができる。
アクセス制御部338が照合に用いる期待値は、例えば、あらかじめ(製造時等)アクセス制御部238に記憶させておく。また、アクセス制御部338が照合に用いる期待値を、他の構成部からアクセス制御部238に送信してもよい。他の構成部とは、例えば、CPUコア303やチェック値の期待値を生成するための専用の処理部(以下、期待値算出部という。)である。CPUコア303や期待値算出部は、あらかじめ記憶されている期待値をアクセス制御部338に送信してもよいし、照合処理ごとに期待値を生成してもよい。また、I/F310を介して、外部の機器からCPUコア303や期待値算出部に期待値を算出するために必要な係数等を受信してもよい。このように、アクセス制御部338に、あらかじめ期待値を記憶させずに、他の構成部から入力することとすれば、ROM204のチェック値を後発的に変更することが可能となる。
〔チェック値算出処理〕
次に、これら各チェック値算出部218、318で実行されるチェック値算出処理を説明する。
図27は、チェック値算出処理を示すフローチャートである。
チェック値算出部218、318は、それぞれチェック値算出処理を実行すると、図27に示すように、まず、ステップSS600に移行する。
ステップSS600では、それぞれアクセス制御部238、338からチェック値の取得要求を受信したか否かを判定し、チェック値の取得要求を受信したと判定したとき(Yes)は、ステップSS602に移行するが、そうでないと判定したとき(No)は、チェック値の取得要求を受信するまでステップSS600で待機する。
ステップSS602では、それぞれROM204から命令情報である命令コード列を取得し、ステップSS604に移行して、その取得した命令コード列に対して上記誤り検出演算を行ってチェック値を算出し、ステップSS606に移行して、算出したチェック値をアクセス制御部238、338に送信し、チェック値算出処理を終了する。
〔アクセス制御処理〕
次に、各アクセス制御部238、338で実行されるアクセス制御処理を説明する。
図28は、アクセス制御処理を示すフローチャートである。
アクセス制御部238は、アクセス制御処理を実行すると、図28に示すように、まず、ステップSS700に移行する。
ステップSS700では、レジスタ234、236に対するリード要求をI/F212から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップSS702に移行して、CPUコア203が実行する命令に関する情報である命令コード列およびそのアドレスを入力部231から入力し、ステップSS704に移行する。
ステップSS704では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS706に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS708に移行する。
ステップSS708では、チェック値の取得要求をチェック値算出部218に送信し、ステップSS710に移行して、その応答としてチェック値を入力部231から入力し、ステップSS712に移行する。
ステップSS712では、アクセス制御部238に記憶されている期待値を読み出したり、CPUコア203や期待値算出部が生成した期待値を受信したりすることによりチェック値の期待値を取得し、ステップSS714に移行する。
ステップSS714では、入力したチェック値が、入力した期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップSS716に移行する。
ステップSS716では、レジスタ234、236が保持しているデータを読み出し、ステップSS718に移行して、読み出したデータをI/F212に出力する。出力されたデータは、I/F212を介してCPUコア203のレジスタ203cに保持される。
次いで、ステップSS720に移行して、レジスタ236に対するライト要求をI/F212から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップSS722に移行して、CPUコア203が実行する命令情報である命令コード列およびそのアドレスを入力部231から入力し、ステップSS724に移行する。
ステップSS724では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS726に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS728に移行する。
ステップSS728〜SS732では、ステップSS708〜SS712と同様の処理を実行し、ステップSS734に移行する。
ステップSS734では、チェック値が期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップSS736に移行する。
ステップSS736では、CPUコア203のレジスタ203cが保持しているデータをI/F212から入力し、ステップSS738に移行して、入力したデータをレジスタ236に書き込み、アクセス制御処理を終了する。
一方、ステップSS734で、チェック値が期待値と一致していないと判定したとき(No)、ステップSS726で、許可アドレスでないと判定したとき(No)、ステップSS724で、許可命令コード列でないと判定したとき(No)、およびステップSS720で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ236にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア203は、アクセス制御装置230からの通知を受け、不正通知を行ってもよい。
一方、ステップSS714で、チェック値が期待値と一致していないと判定したとき(No)、ステップSS706で、許可アドレスでないと判定したとき(No)、ステップSS704で、許可命令コード列でないと判定したとき(No)、およびステップSS700で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ234、236が保持しているデータをI/F212に出力せずに、ステップSS720に移行する。このとき、CPUコア203のレジスタ203cに非正当値が保持されるが、その値が所定値である場合、CPUコア203は、不正通知を行ってもよい。
次に、各アクセス制御部338で実行されるアクセス制御処理を説明する。
図29は、アクセス制御処理を示すフローチャートである。
アクセス制御部338は、アクセス制御処理を実行すると、図29に示すように、まず、ステップSS700に移行する。
ステップSS700では、レジスタ334、336に対するリード要求をI/F312から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップSS702aに移行して、CPUコア203が実行する命令に関する情報である命令コード列およびそのアドレスを入力部331から取得し、ステップSS704に移行する。この命令コード列およびそのアドレスは、制御コマンドに付加されて主制御部2aから送信され、演出制御部300によって取得されたものである。
ステップSS704では、取得した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS706に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS708に移行する。
ステップSS708では、チェック値の取得要求をチェック値算出部318に送信し、ステップSS710に移行して、その応答としてチェック値を入力部331から入力し、ステップSS712に移行する。
ステップSS712では、それぞれアクセス制御部338に記憶されている期待値を読み出したり、CPUコア303や期待値算出部が生成した期待値を受信したりすることによりチェック値の期待値を取得し、ステップSS714に移行する。
ステップSS714では、入力したチェック値が、入力した期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップSS716に移行する。
ステップSS716では、レジスタ334、336が保持しているデータを読み出し、ステップSS718に移行して、読み出したデータをI/F212、312に出力する。出力されたデータは、I/F312を介してCPUコア303のレジスタ303cに保持される。
次いで、ステップSS720に移行して、レジスタ336に対するライト要求をI/F312から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップSS722aに移行して、CPUコア203が実行する命令情報である命令コード列およびそのアドレスを入力部331から取得し、ステップSS724に移行する。この命令コード列およびそのアドレスは、制御コマンドに付加されて主制御部2aから送信され、演出制御部300によって取得されたものである。
ステップSS724では、取得した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップSS726に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップSS728に移行する。
ステップSS728〜SS732では、ステップSS708〜SS712と同様の処理を実行し、ステップSS734に移行する。
ステップSS734では、チェック値が期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップSS736に移行する。
ステップSS736では、CPUコア303のレジスタ303cが保持しているデータをI/F312から入力し、ステップSS738に移行して、入力したデータをレジスタ336に書き込み、アクセス制御処理を終了する。
一方、ステップSS734で、チェック値が期待値と一致していないと判定したとき(No)、ステップSS726で、許可アドレスでないと判定したとき(No)、ステップSS724で、許可命令コード列でないと判定したとき(No)、およびステップSS720で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ336にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア303は、アクセス制御装置330からの通知を受け、不正通知を行ってもよい。
一方、ステップSS714で、チェック値が期待値と一致していないと判定したとき(No)、ステップSS706で、許可アドレスでないと判定したとき(No)、ステップSS704で、許可命令コード列でないと判定したとき(No)、およびステップSS700で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ334、336が保持しているデータをI/F312に出力せずに、ステップSS720に移行する。このとき、CPUコア303のレジスタ303cに非正当値が保持されるが、その値が所定値である場合、CPUコア303は、不正通知を行ってもよい。
〔本実施の形態の効果〕
このようにして、本実施の形態では、演出制御部300のCPU302は、主制御部2aから取得した命令コード列からチェック値を算出するチェック値算出部318を備え、アクセス制御部338は、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部331で入力したチェック値がチェック値の期待値と所定関係にあるときにのみ、レジスタ334、336へのアクセスを許可する。
これにより、主制御部2aのROM204に記憶された命令コード列が不正に書き換えられたことを検出することができる。また、命令コード列およびアドレスの照合と、チェック値の照合とを組み合わせることにより、不正動作が行われる可能性をさらに低減することができる。なお、チェック値の照合は、命令コード列およびアドレスの照合と組み合わせて行うので、チェック値の算出に比較的処理負荷が軽い誤り検出演算(例えば、パリティチェック)を用いても、一定の精度を得ることができる。
なお、本実施の形態では、演出制御部300、主制御部2aにアクセス制御装置230、330を設けると共に、それぞれにチェック値算出部218、318を設けた例で説明したが、主制御部2a側のアクセス制御装置230が設けられていない場合などには、その主制御部2aのチェック値算出部218を省略しても良い。
〔他の実施の形態〕
なお、上記第2の実施の形態において、アクセス制御装置330は、命令コード列からチェック値を算出するように構成したが、これに限らず、次の3つの構成を採用することができる。
(1)第1の構成
第1の構成は、命令コード列に代えて、ROM204に記憶されたデータ(以下、第1算出基礎データという。)からチェック値を算出する。第1算出基礎データとは、例えば、ROM204に記憶された所定の固定値である。なお、第1算出基礎データは、固定値に限らず、変動前後のデータ値を正確に予測可能な変動データであってもよい。変動前後のデータ値を正確に予測可能とは、具体的には、例えば、変動範囲が定まっている場合や変動規則が定まっている場合をいう。
チェック値算出部318は、第1算出基礎データを取得し、取得した第1算出基礎データからチェック値を算出する。
アクセス制御部338は、あらかじめ第1算出基礎データの期待値を記憶している。アクセス制御部338は、期待値からチェック値を算出し、入力部331で入力したチェック値が、算出したチェック値と所定関係にあるか否かを判定する。その他、入力部331で入力したチェック値が期待値と所定関係にあるか否かを判定してもよい。なお、命令コード列から算出したチェック値と、第1算出基礎データから算出したチェック値の両方に基づいてアクセス制御を行ってもよい。これにより、ROM204が不正なものに交換されたことを検出することができる。
(2)第2の構成
第2の構成は、命令コード列に代えて、CPUコア203が実行する命令コード列の実行結果(以下、第2算出基礎データという。)からチェック値を算出する。第2算出基礎データとは、例えば、CPUコア203のフラグレジスタの値である。なお、第2算出基礎データは、フラグレジスタの値に限らず、命令コード列が正しく実行されたときに第1の値を返し、それ以外は第2の値を返す関数の戻り値であってもよい。
チェック値算出部318は、第2算出基礎データをフラグレジスタ等から取得し、取得した第2算出基礎データからチェック値を算出する。
アクセス制御部338は、第1の構成の場合と同様に構成することができる。なお、第1算出基礎データから算出したチェック値にさらに基づいてアクセス制御を行ってもよい。
また、第2算出基礎データからチェック値を算出せず、第2算出基礎データをそのまま用いてもよい。すなわち、アクセス制御部338は、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、第2算出基礎データが所定値であるときにのみ、アクセスを許可する。
これにより、不正に書き換えられた命令コード列や、ビットエラーによって内容が変化した命令コード列が実行されることにより、レジスタ334、336のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
(3)第3の構成
第3の構成は、命令コード列に代えて、命令コード列のアドレス(以下、第3算出基礎データという。)からチェック値を算出する。
チェック値算出部318は、第3算出基礎データをバス316等から取得し、取得した第3算出基礎データからチェック値を算出する。
アクセス制御部338は、第1の構成の場合と同様に構成することができる。なお、第1算出基礎データおよび第2算出基礎データの一方または両方から算出したチェック値にさらに基づいてアクセス制御を行ってもよい。
また、上記第2の実施の形態において、アクセス許可条件は、入力部331で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部331で入力したチェック値がチェック値の期待値と所定関係にあることとしたが、これに限らず、(1)入力部331で入力した命令コード列が許可命令コード列であること、(2)その命令コード列のアドレスが許可アドレスであること、(3)入力部331で入力したチェック値がチェック値の期待値と所定関係にあることのうちいずれか1つまたは任意の2つの組み合わせとすることもできる。第1算出基礎データまたは第2算出基礎データを用いる場合も、(1)〜(3)との任意の組み合わせでアクセス許可条件を設定することができる。また、上記第1の実施の形態においても、(1)または(2)でアクセス許可条件を設定することができる。
また、上記第1および第2の実施の形態において、アクセス制御部238、338は、レジスタ234、334、236、336へのアクセスを制御するように構成したが、これに限らず、レジスタ234、334、236、336のうち特定のアドレス空間へのアクセスを制御するように構成することもできる。
これにより、レジスタ234、334、236、336のうち、機密情報等の重要な情報が記憶されたアドレス空間へのアクセスを制御することにより、重要な情報が不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
また、上記第1および第2の実施の形態においては、命令コード列の単位で読出、実行、判定その他の処理を行うように構成したが、これに限らず、命令コードの単位で読出、実行、判定その他の処理を行うように構成することもできる。これは、上記他の実施の形態についても同様である。代表例として、入力した命令コードが、あらかじめ許可されたコードであり、かつ、その命令コードのアドレスが許可アドレスであるときにのみ、アクセスを許可する。アクセス許可条件の組み合わせについては、命令コード列の場合と同様の組み合わせを採用することができる。
また、上記第1および第2の実施の形態においては、アクセス制御装置230を演出制御部に設けたが、これに限らず、中間部に設けたり、賞球制御部に設けたりしてもよい。
また、上記第2の実施の形態において、チェック値算出部218、318は、チェック値の取得要求に応じてチェック値を算出するように構成したが、これに限らず、所定条件が成立したときにチェック値を算出し、算出したチェック値をアクセス制御部238、338に送信するように構成することもできる。
また、上記第1および第2の実施の形態において、CPU202、302は、それぞれ2つのI/F210、310、212、312を設けて構成したが、これに限らず、1つのI/Fのみを設けて構成してもよいし、さらに多数のI/Fを設けて構成してもよい。
ところで、命令コード列およびそのアドレスは、任意または特定の制御コマンドに付加することができる。
制御コマンドに命令コード列およびそのアドレスを付加すると、アクセス制御装置230、330のレジスタ234、334から乱数を読み出す場合、制御コマンドの種類によっては、命令コード列およびそのアドレスの出力タイミングと、乱数の読出タイミングとが一致しないことがある。例えば、大当たり中に送信される大当たりコマンドに付加する場合、命令コード列およびそのアドレスは大当たり中に出力されるのに対し、大当たり決定乱数は大当たりの発生前に読み出さなければならない。そこで、アクセス制御装置230、330の構成として、例えば、次の2つの構成を採用することができる。
第1の構成は、制御コマンドの送信時に認証が得られたときは、所定許可回数のアクセスに限り認証を行わない。所定許可回数は、認証が得られた後最初のアクセスから計数を開始してもよいし、認証が得られた後所定回数のアクセスを待って計数を開始してもよい。後者の場合、計数開始前のアクセスは禁止される。したがって、認証後に所定回数のダミーアクセスが必要となり、この回数が分からなければ、認証が得られてもレジスタ234、334、236、336へのアクセスができないので、不正動作が行われる可能性を低減することができる。
第2の構成は、制御コマンドの送信時に認証が得られたときは、所定許可期間内に限り認証を行わない。所定許可期間は、認証が得られた直後から開始してもよいし、認証が得られた後所定時間経過を待って開始してもよい。後者の場合、開始前のアクセスは禁止される。また、開始前にアクセスがあったときは、その後のアクセスを禁止してもよい。したがって、認証後に所定時間の待機が必要となり、この時間が分からなければ、認証が得られてもレジスタ234、334、236、336へのアクセスができないので、不正動作が行われる可能性を低減することができる。
また、上記第1および第2の実施の形態において、命令コード、および、命令コード列の少なくとも一方を暗号化して用いてもよい。
また、上記第1および第2の実施の形態において、図12ないし図17のフローチャートに示す遊技制御処理を実行するにあたってはいずれも、ROM204にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAM206に読み込んで実行するようにしてもよい。図27および図28のフローチャートに示す処理についても同様である。
ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
図30は、はずれリーチコマンドおよびはずれ非リーチコマンドに基づくパチンコ機の主制御部2aの認証動作のシーケンスを示す図である。制御コマンドが予め定められたコマンド(すなわちはずれリーチコマンドまたははずれ非リーチコマンド)である場合、暗号化認証データや命令情報が付加された後、主制御部2aから送信される。
制御コマンドが格納され(S1)、その制御コマンドがはずれリーチコマンドまたははずれ非リーチコマンドである場合、検証値を含む第1の認証データが生成される(S2)。生成された第1の認証データは、所定の暗号化アルゴリズムにより暗号化される(S3)。そして、第1の認証データや命令情報が付加されたはずれリーチコマンドまたははずれ非リーチコマンドは、主制御部2aから周辺部3aへ送信される(S4、S5)。
第1の認証データや命令情報が付加されたはずれリーチコマンドまたははずれ非リーチコマンドは周辺部によって受信される(S6)。すると、第1の認証データや命令情報が付加されたはずれリーチコマンドまたははずれ非リーチコマンドは、バス3cを介して周辺部3aから中間部3bへ送信される(S7、S8)。このとき、認証データや命令情報が付加された制御コマンドをそのまま中間部3bへ送信してもよいし、周辺部3aによって取得した命令情報を削除し、認証データだけが付加された状態の制御コマンドを中間部3bへ送信してもよい。
また、はずれリーチコマンドまたははずれ非リーチコマンドに基づく処理が、周辺部3aにおいて行われる(S9)。ここで、制御コマンドに命令情報が付加されていた場合は、その命令情報が周辺部3aにおいて取得される(S9a)。そして、取得された命令情報に基づき、主制御部2aのCPUについての接続機器認証処理が行われる(S9b)。なお、制御コマンドに基づく処理(S9)が行われるより前に、命令情報取得(S9a)および接続機器認証処理(S9b)が行われてもよい。
第1の認証データが付加されたはずれリーチコマンドまたははずれ非リーチコマンドは、中間部3bによって受信される(S10)。中間部3bでは、第1の認証データに基づき、第2の認証データを生成する(S11)。生成された第2の認証データは中間部3bから周辺部3aへ送信される(S12、S13)。第2の認証データは周辺部3aによって受信される(S14)。周辺部3aでは、復号化処理が行われた後(S15)、第2の認証データを用いた認証処理が行われる(S16)。認証OKの場合、そのまま処理が継続される。
認証OKでない場合(S17においてNo)、主制御部2aが正当でないことが報知される(S18)。
ここで、周辺部3aにおける認証処理について、より詳細に説明する。例えば、検証値が「0x12」である場合において、所定の暗号化アルゴリズムにより、下式(1)のように暗号化認証データ「0x21」が得られる。
0x21 = 0x12 xor 0x33 …(1)
演出制御部300では、はずれリーチコマンドまたははずれ非リーチコマンドを受信すると、図19に示すステップS708、S710を経て、受信したコマンドに付加されている暗号化認証データが取得され、取得された暗号化認証データが所定の復号化アルゴリズムにより復号化される。
上式(1)で得られた暗号化認証データ「0x21」を所定の復号化アルゴリズムにより復号化した場合は、下式(2)により検証値「0x12」が得られる。
0x12 = 0x21 xor 0x33 …(2)
検証値が得られると、ステップS712を経て、主制御部2aで生成された検証値と同一の値となる期待値「0x12」が読み出される。そして、図19に示すステップS714を経て、復号化して得られた検証値が期待値と照合される。このとき、上式(2)で得られた検証値「0x12」は期待値「0x12」と一致するので、認証が得られ、ステップS716を経て、制御コマンドが受信バッファに格納される。そして、受信したはずれリーチコマンドまたははずれ非リーチコマンドに基づいて処理が実行される。
これに対し、主制御基板と演出制御基板との間に不正な制御基板が接続されるといった不正行為が行われた場合は、不正な制御基板が制御コマンドを演出制御基板に送信しても、演出制御部300では、受信したコマンドに暗号化認証データが付加されていないので、検証値が期待値と一致せず、認証が得られない可能性が高い。その結果、図19に示すステップS718、S720を経て、受信した制御コマンドが破棄され、不正通知処理が実行される(つまり、主制御部が正当でないことが報知される)。
また、不正な制御基板が何らかの認証データを付加して制御コマンドを演出制御基板に送信しても、演出制御部300では、適切な検証値が得られないので、検証値が期待値と一致せず、認証が得られない可能性が高い。
なお、周辺部における上記制御コマンドの中間部への送信、周辺部における上記制御コマンドに基づく処理、命令情報に基づく接続機器認証処理、について、処理が行われる順序は問わない。すなわち、図30に示すように、上記制御コマンドの中間部への送信が先に行なわれ、その後に上記制御コマンドに基づく処理が行なわれるという順序でも良いし、その逆に、上記制御コマンドに基づく処理が先に行なわれ、その後に上記制御コマンドの中間部への送信が行なわれるという順序でも良い。さらに、周辺部における上記制御コマンドに基づく処理、命令情報に基づく接続機器認証処理、についても、処理が行われる順序は問わない。
同様に、周辺部における上記制御コマンドに基づく処理、周辺部における上記第2の認証データを用いた認証処理、についても、処理が行われる順序は問わない。すなわち、上記制御コマンドに基づく処理が先に行なわれ、その後に上記第2の認証データを用いた認証処理が行なわれるという順序でも良いし、その逆の順序でも良い。
図31は、はずれリーチコマンドおよびはずれ非リーチコマンド以外の制御コマンドに基づく動作を示すシーケンス図である。図31に示すように、はずれリーチコマンドおよびはずれ非リーチコマンド以外の制御コマンドが格納されると(S151)、認証データが付加されていない通常の制御コマンドが主制御部2aから周辺部3aへ送信される(S152、S153)。その制御コマンドは周辺部によって受信され(S154)、その制御コマンドに基づく処理が行われる(S155)。はずれリーチコマンドおよびはずれ非リーチコマンド以外の制御コマンドは、周辺部3aから認証部3bへ送信されることは無い。
〔認証動作のタイミング〕
ところで、主制御部2aは、通常、複数の制御コマンドを、間隔を置いて出力する。以下では、主制御部2aがはずれリーチコマンドA1またははずれ非リーチコマンドA2を出力した後に、はずれリーチコマンドB1またははずれ非リーチコマンドB2を出力する場合を例に挙げて、主制御部2aが複数の制御コマンドを、間隔を置いて出力する場合の認証動作のタイミングについて、図32および図33を用いて説明する。
図32は、主制御部2aがはずれリーチコマンドA1またははずれ非リーチコマンドA2を出力した後に、はずれリーチコマンドB1またははずれ非リーチコマンドB2を出力する場合の、演出または前処理もしくは後処理が実行されるタイミングと、周辺部3aが認証処理を行なうタイミングとを示す第1の図である。図33は、主制御部2aがはずれリーチコマンドA1またははずれ非リーチコマンドA2を出力した後に、はずれリーチコマンドB1またははずれ非リーチコマンドB2を出力する場合の、演出または前処理もしくは後処理が実行されるタイミングと、周辺部3aが認証処理を行なうタイミングとを示す第2の図である。
主制御部2aは、はずれリーチコマンドA1またははずれ非リーチコマンドA2を出力する際、それとともにはずれリーチコマンドA1またははずれ非リーチコマンドA2に関連付けられている第1の認証データを出力する。また、主制御部2aは、はずれリーチコマンドB1またははずれ非リーチコマンドB2を出力する際、それとともにはずれリーチコマンドB1またははずれ非リーチコマンドB2に関連付けられている第1の認証データを出力する。
このとき、はずれリーチコマンドA1またははずれ非リーチコマンドA2に関連付けられている第1の認証データに基づいて生成された第2の認証データについての認証動作が行なわれた後に、主制御部2aからはずれリーチコマンドB1またははずれ非リーチコマンドB2が出力される場合がある。例えば、図32に示すように、はずれリーチコマンドA1またははずれ非リーチコマンドA2に基づく演出または前処理もしくは後処理の実行期間t41の後に、はずれリーチコマンドA1またははずれ非リーチコマンドA2に対応する第2の認証データに基づいて主制御部2aが正当であるか否かについて期間t42において判断される。その後、はずれリーチコマンドB1またははずれ非リーチコマンドB2に基づく演出または前処理もしくは後処理の実行期間t43の後に、はずれリーチコマンドB1またははずれ非リーチコマンドB2に対応する第2の認証データに基づいて主制御部2aが正当であるか否かについて期間t44において判断される。
それに対して、主制御部2aは、はずれリーチコマンドA1またははずれ非リーチコマンドA2に関連付けられている第2の認証データについての認証動作が行なわれる前に、主制御部2aからはずれリーチコマンドB1またははずれ非リーチコマンドB2が出力される場合がある。その場合、図33に示すように、はずれリーチコマンドB1またははずれ非リーチコマンドB2に基づく演出または前処理もしくは後処理の実行期間t42’の後に、はずれリーチコマンドA1またははずれ非リーチコマンドA2に対応する第2の認証データに基づいて主制御部2aが正当であるか否かについて期間t43’において判断される。その後、はずれリーチコマンドB1またははずれ非リーチコマンドB2に対応する第2の認証データに基づいて主制御部2aが正当であるか否かについて期間t44’において判断される。
いずれにしても、図32および図33から明らかなように、周辺部3aは、はずれリーチコマンドまたははずれ非リーチコマンドに基づく演出または前処理もしくは後処理が実行される期間の後に、そのはずれリーチコマンドまたははずれ非リーチコマンドに対応する第2の認証データに基づいて主制御部2aが正当であるか否かを判断する。
上述したように、本実施の形態のパチンコ機は、周辺部3aとは別に、主制御部2aが正当であるか否かを判断するために用いる第2の認証データを生成する中間部3bを有するので、周辺部3aの負担が小さくなり、認証データの容量を大きくしたり、複雑な演算処理を行なったりしてセキュリティの強度を従来よりも大きくして主制御部2aが正当であるか否かを判断することができる。
また、周辺部3aは、はずれリーチコマンドまたははずれ非リーチコマンドに基づく演出または前処理もしくは後処理が実行される期間の後に、そのはずれリーチコマンドまたははずれ非リーチコマンドとともに主制御部2aから出力される第1の認証データに基づいて生成された第2の認証データにより、主制御部2aが正当であるか否かを判断する。そのため、認証データの容量が大きくなったり、複雑な演算処理を行なったりしても、中間部3bは、周辺部3aの動作とは独立して第2の認証データを生成することができる。したがって、本実施の形態のパチンコ機は、セキュリティの強度を従来よりも大きくして主制御部2aが正当であるか否かを判断することができる。
なお、上述した実施の形態では、周辺基板3は、周辺部3aと中間部3bとの間の信号授受に用いられる唯一の通信経路であるバス3cを有している。しかしながら、図34に示すように、周辺基板3は、バス3cを有するのではなく、周辺部3aと中間部3bとの間の信号授受に用いられる二本の通信経路であるバス3dとバス3eとを有していてもよい。その場合、周辺部3aは第1の認証データを通信経路の一方(例えばバス3d)を介して中間部3bに出力し、中間部3bは、主制御部2aが正当であるか否かについての判断するために用いる第2の認証データを通信経路の他方(例えばバス3e)を介して周辺部3aに出力する。
また、主制御部2aの機能をコンピュータに実現させるためのプログラムを有するメモリとそのプログラムを実行するコンピュータとを主制御基板2に設けてもよい。この場合、そのコンピュータがそのプログラムを実行することによって主制御部2aの機能が実現される。
周辺部3aの機能をコンピュータに実現させるためのプログラムを有するメモリとそのプログラムを実行するコンピュータとを周辺基板3に設けてもよい。この場合、そのコンピュータがそのプログラムを実行することによって周辺部3aの機能が実現される。
中間部3bの機能をコンピュータに実現させるためのプログラムを有するメモリとそのプログラムを実行するコンピュータとを周辺基板3に設けてもよい。この場合、そのコンピュータがそのプログラムを実行することによって中間部3bの機能が実現される。
〔認証方法〕
上述した遊技機においては、以下のような認証方法が採用されている。すなわち、上記遊技機に適用され、遊技に関する特賞状態が発生せず通常状態が継続することを指定するためのはずれコマンドと、自らが正当であることを認証させるための第1の認証データとを出力する主制御部と、前記はずれコマンドに基づいて前記演出または前記前処理もしくは後処理の実行を制御する周辺部とを備える遊技機における認証方法であって、前記データ処理手段が実行する命令に関する情報を取得するステップ(例えば、図9のSS12a、SS24aに対応)と、前記入力ステップで入力した命令に関する情報に基づいて、前記データ処理装置による前記記憶手段へのアクセスを制御するアクセス制御ステップ(例えば、図9のSS14、SS16、SS26、SS28に対応)と、前記命令に関する情報に基づいて、前記データ処理手段の接続状態の認証を行う接続機器認証ステップ(例えば、図19のS706に対応)と、前記第1の認証データを、前記周辺部を介して取得する取得ステップ(例えば、図30のS8、S10に対応)と、前記取得ステップにおいて取得した第1の認証データに基づいて前記主制御部が正当であるか否かを判断するためのデータでありかつ前記第1の認証データよりも簡単な暗号化処理が施された第2の認証データを生成し、前記第2の認証データを前記周辺部に出力するステップ(例えば、図30のS11〜S13に対応)と、前記主制御部が正当であるか否かを、前記第2の認証データに基づいて判断するステップ(例えば、図30のS16に対応)とを含む認証方法が採用されている。この認証方法を採用する場合、主制御部のデータ処理手段であるCPUと演出制御部のアクセス制御装置とによる接続機器認証を行うほか、周辺部とは別に、主制御部が正当であるか否かを判断するための中間データを生成する中間部を設けることにより、認証処理全てを周辺部で行う場合に比べて周辺部の負担が小さくなり、認証データの容量を大きくしたり、複雑な演算処理を行なったりしてセキュリティの強度を従来よりも大きくして主制御部が正当であるか否かを判断することができる。また、前記周辺部が、前記主制御部が正当でないと判断された場合、その旨を報知するステップ(例えば、図30のS14〜S18に対応)をさらに含むことにより、パチンコホールの従業員や遊技者がその状態を認識しやすくなる。
そして、前記認証ステップにおいて、前記はずれコマンドに基づく前記演出または前記前処理もしくは後処理が実行される期間の後に前記主制御部が正当であるか否かを判断するようにしてもよい。はずれコマンドに基づく演出または前処理もしくは後処理が実行される期間の後に、主制御部が正当であるか否かを判断することにより、認証データの容量が大きくなったり、複雑な演算処理を行なったりしても、周辺部の動作とは独立して第2の認証データを生成することができる。したがって、セキュリティの強度を従来よりも大きくして主制御部が正当であるか否かを判断することができる。
〔プログラム〕
また、前記認証方法を実現するため、上記認証方法の各ステップを含むプログラムをコンピュータに実行させてもよい。このプログラムをコンピュータに実行させる場合、データ処理手段であるCPUとアクセス制御装置とによる接続機器認証を行うほか、主制御部が正当であるか否かを判断するため中間データである第2の認証データを中間部において生成するので、認証処理全てを周辺部で行う場合に比べて周辺部の負担が小さくなり、認証データの容量を大きくしたり、複雑な演算処理を行なったりしてセキュリティの強度を従来よりも大きくして主制御部が正当であるか否かを判断することができる。前記認証ステップにおいて前記主制御部が正当でないと判断された場合、認証結果を報知するための信号を出力する報知信号出力ステップをさらに含んでもよい。これにより、パチンコホールの従業員や遊技者がその状態を認識しやすくなる。
〔変形例〕
また、上述した実施の形態では、主制御部2aが正当でない旨の報知を周辺部3aが行う場合について説明したが、その報知のための報知部を設けておき、その報知部が周辺部3aの代わりに報知を行ってもよい。例えば、図35や図36に示すように、主制御部2aが正当でない旨を報知する報知部4を、周辺部3aとは別に設けてもよい。この報知部4は、主制御部2aが正当でないことを示す信号を周辺部3aから受け取った場合に、その旨をパチンコ機の外部に報知する。
なお、図35は、図2に示す構成に、報知部4を追加した構成を示す図である。また、図36は、図34に示す構成に、報知部4を追加した構成を示す図である。図35および図36のいずれの場合においても、報知部4は、液晶(不図示)に表示させて報知を行ったり、ランプ等を点灯させたりして通知することによる報知を行ったりする。液晶表示やランプ等を点灯させたり点滅させることによる視覚的報知に限らず、スピーカ(不図示)から音を出力することによる聴覚的報知、バイブレータ(不図示)を振動させることによる触覚的報知を行ってもよい。また、これらの報知を組み合わせて行ってもよい。
また、周辺部3aは、主制御部2aからの第1の認証データを受け取ることなく単に通過させて中間部3bに受け取らせてもよい。
また、主制御部から周辺部を介して中間部へ送信される第1の認証データは複雑な暗号化処理が施されたものとし、中間部で暗号化処理を解除した後に中間部から周辺部へ送信される第2の認証データは複雑ではない暗号化処理(第1の認証データよりも簡単な暗号化処理)が施されたものとしてもよい。このようにすれば、主制御部から周辺部を介して中間部へ送信される第1の認証データに複雑な暗号化処理を採用した場合でも、周辺部は複雑ではない暗号化処理を採用した第2の認証データを用いて認証することになるので、周辺部の負荷を軽減することができる。
更に、上述した実施の形態では、パチンコ機を例に挙げて本発明の遊技機について説明した。しかしながら、本発明の遊技機はパチンコ機であるとは限定されない。本発明の遊技機の例には、遊技に関する演出を実行する実行部を有するパチスロ機およびアミューズメントゲーム機等が含まれる。その場合、パチスロ機およびアミューズメントゲーム機等の遊技機は、主制御部2a、周辺部3a、および中間部3bを有する。