〔第1の実施の形態〕
以下、本発明の第1の実施の形態を図面を参照しながら説明する。図1ないし図20は、本発明に係る遊技機およびアクセス制御プログラム、並びに遊技制御方法の第1の実施の形態を示す図である。
本実施の形態は、本発明に係る遊技機およびアクセス制御プログラム、並びに遊技制御方法をパチンコ機に適用したものである。
〔遊技盤の構成〕
まず、パチンコ機における遊技盤101の構成を説明する。
図1は、遊技盤101の正面図である。
図1において、遊技盤101の左側には、円弧を描いて上方に延長する2つのレール102a、102bが設けられている。遊技領域103には、遊技球の落下軌跡を変則的にするための複数の釘(不図示)が設けられ、落下途中の位置には、遊技球の落下方向を変化させる風車や入賞口が設けられている。遊技球は、遊技盤101の下部位置に配置された発射部(不図示)により発射され、レール102a、102b間を上昇して遊技盤101の上部位置に達した後、遊技領域103内を落下する。
遊技盤101の中央部には、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回の開放期間をラウンドと呼び、ラウンドは、最大で所定回数(以下、最大ラウンド数という。)継続する。
遊技領域103の最下方には、いずれの入賞口にも入賞しなかった遊技球を回収するための回収口108が設けられている。
〔遊技制御装置の構成〕
次に、パチンコ機における遊技制御装置100の構成を説明する。
図2は、遊技制御装置100の構成を示すブロック図である。
遊技制御装置100は、図2に示すように、遊技の主制御を行う主制御部200と、主制御部200の制御により遊技の演出制御を行う演出制御部300と、主制御部200の制御により遊技球の払出制御を行う賞球制御部400とを有して構成されている。
主制御部200は、遊技の主制御を行い、遊技の演出制御または遊技球の払出制御を行うための各種の制御コマンドを演出制御部300および賞球制御部400にそれぞれ送信する。
主制御部200には、始動入賞口105に入賞した遊技球を検出する始動入賞口検出部280と、入賞ゲート106を通過した遊技球を検出するゲート検出部282と、普通入賞口107に入賞した遊技球を検出する普通入賞口検出部284と、大入賞口109に入賞した遊技球を検出する大入賞口検出部286とが接続されている。これらの検出部280〜286は、例えば、近接スイッチを用いて構成することができる。
主制御部200には、さらに、大当たり中に大入賞口109の開閉部材を開閉動作させる大入賞口開閉部288と、演出制御部300と、賞球制御部400とが接続されている。なお、演出制御部300との通信は、主制御部200から演出制御部300への一方向となっている。これに対し、賞球制御部400との通信は、双方向となっている。
大入賞口開閉部288は、例えば、ソレノイドを用いて構成することができる。大当たりは、大当たり決定乱数に基づいて所定確率(例えば、1/300)で発生するようあらかじめプログラムされている。
演出制御部300は、主制御部200から制御コマンドを受信し、受信した制御コマンドに基づいて遊技の演出制御を行う。演出制御部300は、制御プログラムを記憶したROM304と、ROM304の制御プログラムに従って演出制御処理を実行するCPU302と、CPU302の演算処理時におけるデータのワークエリアとして機能するRAM306と、図柄表示部104に表示させる画像データを書き込むVRAM308と、外部装置との入出力を行うI/F310とを有して構成されている。
RAM306は、主制御部200からの入力データ、演算処理のためのデータ、乱数を生成するための乱数カウンタその他各種のカウンタ、および各種のフラグを記憶する。
I/F310には、主制御部200と、図柄表示部104と、スピーカ380から音声を出力する音声制御を行う音声制御部382と、ランプ384を点灯させるランプ制御を行うランプ制御部386とが接続されている。
賞球制御部400は、主制御部200から制御コマンドを受信し、受信した制御コマンドに基づいて遊技球の払出制御を行う。賞球制御部400は、制御プログラムを記憶したROM404と、ROM404の制御プログラムに従って払出制御処理を実行するCPU402と、CPU402の演算処理時におけるデータのワークエリアとして機能するRAM406と、外部装置との入出力を行うI/F410とを有して構成されている。
I/F410には、主制御部200と、遊技球の貯留部から所定数の遊技球を払い出す払出部480と、遊技球を遊技盤101に発射する発射部482とが接続されている。
賞球制御部400は、払出部480に対して、各入賞口(始動入賞口105、普通入賞口107、大入賞口109)への入賞に応じて所定数の遊技球を払い出す制御を行う。また、発射部482に対する操作を検出し、遊技球の発射を制御する。
発射部482は、遊技者による操作を検出するセンサ(不図示)と、遊技球を発射させるソレノイド(不図示)とを有して構成されている。賞球制御部400は、発射部482のセンサにより操作を検出すると、その操作量に応じてソレノイドを駆動させて遊技球を間欠的に発射する。
なお、主制御部200、演出制御部300および賞球制御部400は、それぞれ異なるプリント基板(主制御基板、演出制御基板および賞球制御基板)に設けられる。これに限らず、例えば、賞球制御部400は、主制御部200と同一のプリント基板に設けることもできる。
〔主制御部の構成〕
次に、主制御部200の構成を説明する。
図3は、主制御部200の構成を示すブロック図である。
主制御部200は、図3に示すように、DIP(Dual Inline
Package)等からなるワンチップ型のマイクロプロセッサである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は、主制御部200に対する入出力データ、演算処理のためのデータ、乱数を生成するための乱数カウンタその他各種のカウンタ、大当たりフラグその他各種のフラグ、および保留球数を記憶する。RAM206の内容は、バックアップ電源(不図示)により電源遮断時でも保持される。
乱数カウンタは、大当たり抽選に用いる乱数(大当たり決定乱数)、演出図柄の停止態様を決定するための乱数(停止図柄決定乱数)、演出図柄の変動パターンを決定するための乱数(変動パターン決定乱数)、演出図柄の一部をリーチ図柄(例えば、「77」)で停止させて大当たりの予告を行う演出(以下、リーチ演出という。)の有無を決定するための乱数(リーチ決定乱数)、その他遊技制御に用いる乱数のそれぞれに対応して設けられている。また、保留球数とは、始動入賞口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は、CPU302、ROM304、RAM306、VRAM308およびI/F310のほか、遊技の演出制御に必要な複数のデバイスからなる演出関連デバイス群314を有して構成されている。同様に、賞球制御部400は、CPU402、ROM404、RAM406およびI/F410のほか、遊技球の払出制御に必要な複数のデバイスからなる賞球関連デバイス群414を有して構成されている。
〔制御コマンドのデータ構造〕
次に、制御コマンドのデータ構造を説明する。
図4は、通常の制御コマンドおよび命令コード列付制御コマンドのデータ構造を示す図である。
通常の制御コマンドは、大当たりリーチコマンド以外の制御コマンドであって、図4に示すように、制御コマンド500のみからなる。これに対し、命令コード列付制御コマンドは、大当たりリーチコマンドである制御コマンド500に、CPUコア203が実行する命令コード列502およびそのアドレス504を付加してなる。
図5は、制御コマンド500のデータ構造を示す図である。
制御コマンド500は、図5に示すように、制御コマンド500を識別するための識別子であるモード(MODE)と、制御コマンド500の具体的な実行内容を示すデータであるイベント(EVENT)とからなる。モードには、1バイト長のモード識別番号が、イベントには、1バイト長のイベント番号がそれぞれ設定される。
図6は、主制御部200から送信される制御コマンドの内容を示す図である。
制御コマンドには、図6に示すように、電源オンコマンド、電源オフコマンド、客待ちデモコマンド、客待ちデモ停止コマンド、変動パターンコマンド、大当たり開始コマンド、大当たり終了コマンドおよび大当たりコマンドがある。
電源オンコマンドは、電源の投入を指定するための制御コマンドであって、電源投入時に演出制御部300および賞球制御部400に送信される。
電源オフコマンドは、電源の遮断を指定するための制御コマンドであって、電源遮断時に演出制御部300および賞球制御部400に送信される。
客待ちデモコマンドは、遊技客を誘致するためのデモンストレーション演出(以下、客待ちデモという。)の開始を指定するための制御コマンドであって、遊技中断時に演出制御部300に送信される。
客待ちデモ停止コマンドは、客待ちデモの終了を指定するための制御コマンドであって、遊技再開時に演出制御部300に送信される。
変動パターンコマンドは、演出図柄の変動パターンを指定するための制御コマンドであって、演出図柄の変動開始時に演出制御部300に送信される。変動パターンコマンドには、はずれ非リーチコマンド、はずれリーチコマンドおよび大当たりリーチコマンドがある。
はずれ非リーチコマンドは、大当たり抽選で「はずれ」(以下、単に「はずれ」という。)となったときに選択される変動パターンのうちリーチ演出を行わない変動パターンを指定するための制御コマンドである。
はずれリーチコマンドは、はずれ時に選択される変動パターンのうちリーチ演出を行う変動パターンを指定するための制御コマンドである。演出制御部300では、はずれリーチコマンドまたははずれ非リーチコマンドに基づいてはずれであることを判定することができる。
大当たりリーチコマンドは、大当たり時に選択される変動パターンのうちリーチ演出を行う変動パターンを指定するための制御コマンドである。演出制御部300では、大当たりリーチコマンドに基づいて大当たりであることを判定することができる。また、大当たりリーチコマンドには、CPUコア203が実行する命令コード列およびそのアドレスが付加される。
大当たり開始コマンドは、大当たり演出の開始を指定するための制御コマンドであって、大当たり演出の開始時に演出制御部300に送信される。
大当たり終了コマンドは、大当たり演出の終了を指定するための制御コマンドであって、大当たり演出の終了時(最終ラウンドの終了時)に演出制御部300に送信される。
大当たりコマンドは、大当たりを指定するための制御コマンドであって、これには、ラウンド開始コマンドおよびラウンド終了コマンドがある。
ラウンド開始コマンドは、ラウンドの開始を指定するための制御コマンドであって、ラウンドの開始時に演出制御部300に送信される。ラウンド開始コマンドは、各ラウンドごとに設定されている。例えば、最大ラウンド数が15回である場合は、15種類のラウンド開始コマンドが設定される。したがって、ラウンドが2回以上継続する場合は、大当たり中にラウンド開始コマンドが複数回にわたって送信されることになる。
ラウンド終了コマンドは、ラウンドの終了を指定するための制御コマンドであって、最終ラウンドを除くラウンドの終了時に演出制御部300に送信される。ラウンド終了コマンドは、最終ラウンドを除く各ラウンドごとに設定されている。例えば、最大ラウンド数が15回である場合は、14種類のラウンド終了コマンドが設定される。したがって、ラウンドが3回以上継続する場合は、大当たり中にラウンド終了コマンドが複数回にわたって送信されることになる。
なお、これら制御コマンドは、あくまで代表的なものであり、その他にも各種の制御コマンドが規定されている。
〔CPUコアおよびアクセス制御装置の構成〕
次に、CPUコア203およびアクセス制御装置230の構成を説明する。
図7は、CPUコア203およびアクセス制御装置230の構成を示すブロック図である。なお、図7では、説明の便宜上、構成の一部を省略している。
CPUコア203は、図7に示すように、ROM204に記憶された命令コード列を読み出し(フェッチ)、読み出した命令コード列に従ってデータ処理を行う。CPUコア203は、制御部203a、演算部203bおよびレジスタ203cを有して構成されている。
制御部203aは、CPU202全体の動作を制御し、命令コード列その他データの読出および書込を行うためにバス216に制御信号を出力する。
演算部203bは、レジスタ203cに保持されたデータに対して演算を行う。
レジスタ203cは、ROM204から読み出した命令コード列およびそのアドレス、並びに演算部203bで処理したデータを保持する。
アクセス制御装置230は、入力部231、演算部232、レジスタ234、236およびアクセス制御部238を有して構成されている。
入力部231は、ラッチ回路等からなり、大当たりリーチコマンドに付加されている、CPUコア203が実行する命令コード列およびそのアドレスをI/F212から入力する。
演算部232は、認証に必要な認証情報を生成する。
レジスタ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にデータを書き込むことができる。
〔アクセス制御処理〕
次に、アクセス制御部238で実行されるアクセス制御処理を説明する。
図8は、アクセス制御処理を示すフローチャートである。
アクセス制御部238は、アクセス制御処理を実行すると、図8に示すように、まず、ステップS100に移行する。
ステップS100では、レジスタ234、236に対するリード要求をI/F212から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップS102に移行する。
ステップS102では、大当たりリーチコマンドをI/F212から入力したか否かを判定し、大当たりリーチコマンドを入力したと判定したとき(Yes)は、ステップS104に移行するが、そうでないと判定したとき(No)は、大当たりリーチコマンドを入力するまでステップS102で待機する。
ステップS104では、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップS106に移行する。
ステップS106では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップS108に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップS110に移行する。
ステップS110では、レジスタ234、236が保持しているデータを読み出し、ステップS112に移行して、読み出したデータをI/F212に出力する。出力されたデータは、I/F212を介してCPUコア203のレジスタ203cに保持される。
次いで、ステップS114に移行して、レジスタ236に対するライト要求をI/F212から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップS116に移行する。
ステップS116では、大当たりリーチコマンドをI/F212から入力したか否かを判定し、大当たりリーチコマンドを入力したと判定したとき(Yes)は、ステップS118に移行するが、そうでないと判定したとき(No)は、大当たりリーチコマンドを入力するまでステップS116で待機する。
ステップS118では、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップS120に移行する。
ステップS120では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップS122に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップS124に移行する。
ステップS124では、CPUコア203のレジスタ203cが保持しているデータをI/F212から入力し、ステップS126に移行して、入力したデータをレジスタ236に書き込み、アクセス制御処理を終了する。
一方、ステップS122で、許可アドレスでないと判定したとき(No)、ステップS120で、許可命令コード列でないと判定したとき(No)、およびステップS114で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ236にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア203は、アクセス制御装置230からの通知を受け、不正が行われている可能性がある旨の通知(以下、不正通知という。)を行ってもよい。不正通知は、例えば、所定のメッセージ、マークまたは画像を図柄表示部104に表示したり、所定のメッセージ音や効果音をスピーカ380から出力したり、I/F210を介してCPU202の製造元、管理者または他の機器にエラーメッセージを送信したり、I/F210を介して上記表示や音声出力を他の機器に行わせるための制御信号を送信したりすることにより行うことができる。これにより、主制御部200に不正が行われた可能性があることをユーザ等に認識させ、調査や修理等の措置を講じさせることができる。
一方、ステップS108で、許可アドレスでないと判定したとき(No)、ステップS106で、許可命令コード列でないと判定したとき(No)、およびステップS100で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ234、236が保持しているデータをI/F212に出力せずに、ステップS114に移行する。このとき、CPUコア203のレジスタ203cには、アクセス制御装置230からの出力がないので、「0000」や「1111」等の非正当値が保持される。非正当値を所定値にしておき、その値がレジスタ203cに保持された場合、CPUコア203は、不正通知を行ってもよい。ここで、所定値とは、例えば、複数種類の固定値群や、あらかじめ変動規則を定めておいた変動値である。
〔ROMのメモリ構造〕
次に、ROM204のメモリ構造を説明する。
図9は、ROM204のメモリ構造を模式的に示した図である。
ROM204は、図9に示すように、CPUコア203が実行する命令コード列を記憶する。
ROM204の記憶領域204aには、所定領域ごと(例えば、1バイトごと)にアドレスが割り当てられている。図9の例では、記憶領域204aに対してアドレス「0x000」〜「0xNNN」が割り当てられており、各アドレスは1バイト分の領域を示している。例えば、アドレス「0x100」〜「0x103」には、命令コード列「0xABCDEFGH」(リード命令)が格納されている。また、アドレス「0x104」〜「0x107」には、命令コード列「0xJKLMNOPQ」(ライト命令)が格納されている。
〔遊技制御処理〕
次に、CPUコア203で実行される遊技制御処理を説明する。
CPUコア203は、所定の動作クロック(例えば、4[ms])で1サイクルを実行可能な制御プログラムをROM204から読み出し、読み出した制御プログラムに従って、図10のフローチャートに示す遊技制御処理を実行する。
図10は、遊技制御処理を示すフローチャートである。
遊技制御処理は、CPUコア203において実行されると、図10に示すように、まず、ステップS200に移行する。
ステップS200では、電源がオンになったか否かを判定し、電源がオンになったと判定したとき(Yes)は、ステップS202に移行するが、そうでないと判定したとき(No)は、電源がオンになるまでステップS200で待機する。
ステップS202では、RAM206の内容を初期化し、I/F210を介して、演出制御部300および賞球制御部400に電源オンコマンドを送信する初期化処理を実行する。
次いで、ステップS204に移行して、始動入賞口105に遊技球が入賞したことを判定する入賞判定処理を実行し、ステップS206に移行して、大当たりの判定を行うとともに演出図柄の変動パターンを決定する大当たり判定処理を実行し、ステップS208に移行して、大入賞口109の開閉部材を所定パターンで開放させる電動役物制御処理を実行し、ステップS210に移行する。
ステップS210では、賞球制御部400に対して遊技球の払出を指定するための制御コマンド(払出制御コマンド)をRAM206の送信バッファに格納する賞球払出制御処理を実行し、ステップS212に移行して、送信バッファに格納された制御コマンドを演出制御部300または賞球制御部400に送信する制御コマンド送信処理を実行し、ステップS214に移行する。
ステップS214では、電源がオフになったか否かを判定し、電源がオフになったと判定したとき(Yes)は、ステップS216に移行して、I/F210を介して、演出制御部300および賞球制御部400に電源オフコマンドを送信する終了処理を実行し、遊技制御処理を終了する。
一方、ステップS214で、電源がオフになっていないと判定したとき(No)は、ステップS204に移行する。
なお、乱数カウンタは、上記動作クロックの1周期(例えば、4[ms])のうち各処理を実行した残余時間を利用して更新される。またその他、遊技制御処理と並列に実行される乱数更新処理で更新することもできる。乱数カウンタは、例えば、「0」から順に「1」ずつカウントアップを行っていき、カウント値が最大値(例えば、「999」)を超えたときに「0」に戻すことにより、所定の数値範囲(例えば、「0」〜「999」)で循環的にカウントを行う。
〔制御コマンド送信処理〕
次に、ステップS212の制御コマンド送信処理を説明する。
図11は、制御コマンド送信処理を示すフローチャートである。
制御コマンド送信処理は、ステップS212において実行されると、図11に示すように、まず、ステップS300に移行する。
ステップS300では、制御コマンドを送信バッファから読み出し、ステップS302に移行して、読み出した制御コマンドが大当たりリーチコマンドであるか否かを判定し、大当たりリーチコマンドであると判定したとき(Yes)は、ステップS304に移行する。
ステップS304では、CPU202に接続された機器(以下、接続機器という。)の認証を行う接続機器認証処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS302で、大当たりリーチコマンドでないと判定したとき(No)は、ステップS306に移行して、I/F210を介して、ステップS300で読み出した制御コマンドをそのまま演出制御部300または賞球制御部400に送信し、一連の処理を終了して元の処理に復帰させる。
〔接続機器認証処理〕
次に、ステップS304の接続機器認証処理を説明する。
CPU202には、各種の機器の接続が可能であるが、ユーザやメーカが承認していない機器が不正に接続され、CPU202の誤動作を発生させたり、ROM204のデータが改ざんされたり、盗まれたりする恐れがある。これを防止するため、CPU202は、接続機器の認証を行う。なお、接続機器認証処理の実行にはアクセス制御装置230も密接に関係するため、ここでは、接続機器認証処理の実行に伴うCPUコア203およびアクセス制御装置230の動作を説明する。
図12は、接続機器認証処理の実行に伴うCPUコア203およびアクセス制御装置230の動作を示すフローチャートである。
CPUコア203は、図12に示すように、まず、ステップS400を経て、RAM206のフラグに基づいてステップS414の処理まで終了しているか否かを判定する。その結果、ステップS414の処理まで終了していないと判定したとき(No)は、ステップS402、S404を経て、接続機器から認証用データを取得し、I/F212を介して、取得した認証用データを用いて検証値Vの生成要求を出力する。検証値Vは、接続機器を認証するために用いる値である。なお、ステップS402で取得した認証用データをそのまま検証値Vとしてもよい。
アクセス制御装置230は、検証値Vの生成要求を入力すると、ステップS406を経て、演算部232で検証値Vを生成し、レジスタ234に保持する。
次いで、CPUコア203は、ステップS408を経て、アクセス制御装置230のレジスタ234から検証値Vを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ234に対するリード要求を出力する。また、ステップS410を経て、読み出したリード命令およびそのアドレスを、ステップS300で読み出した大当たりリーチコマンドに付加して、I/F212を介して出力するとともにI/F210を介して演出制御部300に送信する。
アクセス制御装置230は、リード要求を入力すると、ステップS412を経て、大当たりリーチコマンドを入力し、大当たりリーチコマンドに付加されているリード命令およびそのアドレスを入力する。そして、許可命令コード列および許可アドレスであれば、レジスタ234が保持している検証値Vを読み出し、読み出した検証値VをI/F212に出力する。
CPUコア203は、検証値Vを入力すると、ステップS414を経て、入力した検証値Vをレジスタ203cに保持し、ステップS414の処理まで終了したことを示すフラグをRAM206に格納し、一連の処理を終了して元の処理に復帰させる。
一方、CPUコア203は、ステップS400で、ステップS414の処理まで終了していると判定したとき(Yes)は、ステップS416を経て、RAM206のフラグに基づいてステップS422の処理まで終了しているか否かを判定する。その結果、ステップS422の処理まで終了していないと判定したとき(No)は、ステップS418を経て、アクセス制御装置230のレジスタ236に検証値Vを書き込むライト命令をROM204から読み出し、読み出したライト命令を実行することにより、I/F212を介してレジスタ236に対するライト要求を出力する。また、ステップS420を経て、読み出したライト命令およびそのアドレスを、ステップS300で読み出した大当たりリーチコマンドに付加して、I/F212を介して出力するとともにI/F210を介して演出制御部300に送信する。さらに、ステップS422を経て、I/F212を介して、ステップS414でレジスタ203cに保持した検証値Vを出力する。そして、ステップS422の処理まで終了したことを示すフラグをRAM206に格納し、一連の処理を終了して元の処理に復帰させる。
アクセス制御装置230は、ライト要求を入力すると、ステップS424を経て、大当たりリーチコマンドを入力し、大当たりリーチコマンドに付加されているライト命令およびそのアドレスを入力する。そして、許可命令コード列および許可アドレスであれば、検証値Vを入力し、入力した検証値Vをレジスタ236に書き込む。
一方、CPUコア203は、ステップS416で、ステップS422の処理まで終了していると判定したとき(Yes)は、ステップS426を経て、RAM206のフラグに基づいてステップS434の処理まで終了しているか否かを判定する。その結果、ステップS434の処理まで終了していないと判定したとき(No)は、ステップS428を経て、I/F212を介して期待値Pの生成要求を出力する。期待値Pは、検証値Vを照合するために用いる値である。
アクセス制御装置230は、期待値Pの生成要求を入力すると、ステップS430を経て、演算部232で期待値Pを生成し、レジスタ234に保持する。
次いで、CPUコア203は、ステップS432を経て、アクセス制御装置230のレジスタ234から期待値Pを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ234に対するリード要求を出力する。また、ステップS434を経て、読み出したリード命令およびそのアドレスを、ステップS300で読み出した大当たりリーチコマンドに付加して、I/F212を介して出力するとともにI/F210を介して演出制御部300に送信する。そして、ステップS434の処理まで終了したことを示すフラグをRAM206に格納し、一連の処理を終了して元の処理に復帰させる。
アクセス制御装置230は、リード要求を入力すると、ステップS436を経て、大当たりリーチコマンドを入力し、大当たりリーチコマンドに付加されているリード命令およびそのアドレスを入力する。そして、許可命令コード列および許可アドレスであれば、レジスタ234が保持している期待値Pを読み出し、読み出した期待値PをI/F212に出力する。
一方、CPUコア203は、ステップS426で、ステップS434の処理まで終了していると判定したとき(Yes)は、ステップS438を経て、RAM206のフラグに基づいてステップS450、S452の処理まで終了しているか否かを判定する。その結果、ステップS450、S452の処理まで終了していないと判定したとき(No)は、ステップS440を経て、アクセス制御装置230のレジスタ236から検証値Vを読み出すリード命令をROM204から読み出し、読み出したリード命令を実行することにより、I/F212を介してレジスタ236に対するリード要求を出力する。また、ステップS442を経て、読み出したリード命令およびそのアドレスを、ステップS300で読み出した大当たりリーチコマンドに付加して、I/F212を介して出力するとともにI/F210を介して演出制御部300に送信する。
アクセス制御装置230は、リード要求を入力すると、ステップS444を経て、大当たりリーチコマンドを入力し、大当たりリーチコマンドに付加されているリード命令およびそのアドレスを入力する。そして、許可命令コード列および許可アドレスであれば、レジスタ236が保持している検証値Vを読み出し、読み出した検証値VをI/F212に出力する。
CPUコア203は、検証値Vおよび期待値Pを入力すると、ステップS446、S448を経て、検証値Vと期待値Pとを照合し、照合結果が正しいか否かを判定する。照合結果が正しいか否かは、例えば、検証値Vが期待値Pと所定関係にあるか否かにより判定する。所定関係とは、例えば、検証値Vが期待値Pと一致していること、検証値Vおよび期待値Pの一方を所定の演算方法により演算した演算値が他方と一致していること、検証値Vおよび期待値Pに大小関係その他の相関関係があることをいう。
照合結果が正しいと判定したとき(Yes)は、CPUコア203は、ステップS450を経て、接続機器を認証し、ステップS450の処理まで終了したことを示すフラグをRAM206に格納し、一連の処理を終了して元の処理に復帰させる。一方、照合結果が正しくないと判定したとき(No)は、CPUコア203は、ステップS452を経て、接続機器を認証せず、ステップS452の処理まで終了したことを示すフラグをRAM206に格納し、一連の処理を終了して元の処理に復帰させる。接続機器を認証しなかった場合、CPUコア203は、不正通知を行ったり接続機器との接続を切断したりする。
一方、CPUコア203は、ステップS438で、ステップS450、S452の処理まで終了していると判定したとき(Yes)は、ステップS454を経て、I/F210を介して、ステップS300で読み出した大当たりリーチコマンドをそのまま演出制御部300に送信する。
〔入賞判定処理〕
次に、ステップS204の入賞判定処理を説明する。
図13は、入賞判定処理を示すフローチャートである。
入賞判定処理は、ステップS204において実行されると、図13に示すように、まず、ステップS500に移行する。
ステップS500では、保留球数が「0」であるか否かを判定し、保留球数が「0」であると判定したとき(Yes)は、ステップS502に移行する。
ステップS502では、タイマ214を用いて始動入賞口105への最後の入賞から所定時間(例えば、10分)が経過したか否かを判定し、所定時間が経過したと判定したとき(Yes)は、ステップS504に移行する。
ステップS504では、客待ちデモを行う客待ちデモ実行処理を実行する。客待ちデモ実行処理では、客待ちデモコマンドを送信バッファに格納することにより客待ちデモを開始する。また、始動入賞口105への入賞、発射部482に対する操作等を契機として遊技の再開を検出したときは、客待ちデモ停止コマンドを送信バッファに格納することにより客待ちデモを終了する。これにより、ステップS212の制御コマンド送信処理では、客待ちデモコマンドまたは客待ちデモ停止コマンドが演出制御部300に送信される。
次いで、ステップS506に移行して、I/F210を介して始動入賞口検出部280からのセンサ信号を読み込み、読み込んだセンサ信号に基づいて始動入賞口105に遊技球が入賞したことを検出したか否かを判定し、遊技球の入賞を検出したと判定したとき(Yes)は、ステップS508に移行する。
ステップS508では、保留球数が「4」以上であるか否かを判定し、保留球数が「4」未満であると判定したとき(No)は、ステップS510に移行して、保留球数に「1」を加算し、ステップS512に移行する。
ステップS512では、大当たり決定乱数、停止図柄決定乱数その他遊技制御に用いる乱数を乱数カウンタから取得し、ステップS514に移行して、取得した各乱数を、保留球数に対応したRAM206の所定領域にそれぞれ格納し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS508で、保留球数が「4」以上であると判定したとき(Yes)、およびステップS506で、遊技球の入賞を検出しないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
一方、ステップS502で、所定時間が経過していないと判定したとき(No)、およびステップS500で、保留球数が「0」でないと判定したとき(No)はいずれも、ステップS506に移行する。
〔大当たり判定処理〕
次に、ステップS206の大当たり判定処理を説明する。
図14は、大当たり判定処理を示すフローチャートである。
大当たり判定処理は、所定確率で大当たりを発生させるために、大当たり決定乱数がとり得る所定の数値範囲(例えば、「0」〜「400」)に1個の大当たり値を設定し、始動入賞口105に遊技球が入賞した入賞タイミングで大当たり決定乱数を取得し、取得した乱数値と大当たり値とが一致しているときに大当たりを発生させる処理であって、ステップS206において実行されると、図14に示すように、まず、ステップS600に移行する。
ステップS600では、図柄表示部104において演出図柄が変動中か否かを判定し、演出図柄が変動中でないと判定したとき(No)は、ステップS602に移行して、保留球数が「1」以上であるか否かを判定し、保留球数が「1」以上であると判定したとき(Yes)は、ステップS604に移行する。
ステップS604では、保留球数に対応したRAM206の所定領域から大当たり決定乱数を読み出し、ステップS606に移行して、読み出した乱数値が大当たり値と一致しているか否かを判定し、大当たり値と一致していると判定したとき(Yes)は、ステップS608に移行して、大当たりフラグをセットし、ステップS610に移行する。
ステップS610では、大当たり時に停止させる演出図柄の態様を決定する大当たり時停止図柄決定処理を実行する。大当たり時停止図柄決定処理では、例えば、大当たり用の停止図柄決定テーブルをROM204から読み出す。そして、保留球数に対応したRAM206の所定領域から停止図柄決定乱数を読み出し、読み出した乱数値の順位の停止図柄番号を、読み出した停止図柄決定テーブルから取得し、取得した停止図柄番号を示す制御コマンド(図柄指定コマンド)を送信バッファに格納する。
次いで、ステップS612に移行して、大当たり時に変動表示する演出図柄の変動パターンを決定する大当たり時変動パターン決定処理を実行する。大当たり時変動パターン決定処理では、例えば、リーチ決定乱数を乱数カウンタから取得し、取得した乱数値に対応する大当たり用の変動パターン決定テーブルをROM204から読み出す。大当たりリーチコマンドは、1または複数の特定の変動パターン決定テーブルにのみ登録されているので、リーチ決定乱数に基づくこの選択は、リーチ演出を行うか否かを決定することになる。そして、変動パターン決定乱数を乱数カウンタから取得し、取得した乱数値の順位の変動パターン番号を、読み出した変動パターン決定テーブルから取得し、取得した変動パターン番号を示す変動パターンコマンドを送信バッファに格納する。これにより、ステップS212の制御コマンド送信処理では、CPUコア203が実行する命令コード列およびそのアドレスが付加された大当たりリーチコマンドその他大当たり時に選択される変動パターンコマンドが演出制御部300に送信される。
次いで、ステップS614に移行して、演出制御部300に対して演出図柄の変動開始を指定するための制御コマンド(変動開始コマンド)を送信バッファに格納する図柄変動開始処理を実行し、ステップS616に移行して、保留球数から「1」を減算し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS606で、大当たり値と一致しないと判定したとき(No)は、ステップS618に移行して、はずれ時に停止させる演出図柄の態様を決定するはずれ時停止図柄決定処理を実行する。はずれ時停止図柄決定処理は、ステップS610と同様に構成される。ステップS610と異なるのは、はずれ用の停止図柄決定テーブルを用いる点である。
次いで、ステップS620に移行して、はずれ時に変動表示する演出図柄の変動パターンを決定するはずれ時変動パターン決定処理を実行する。はずれ時変動パターン決定処理は、ステップS612と同様に構成される。ステップS612と異なるのは、はずれ用の変動パターン決定テーブルを用いる点である。これにより、ステップS212の制御コマンド送信処理では、はずれ非リーチコマンド、はずれリーチコマンドその他はずれ時に選択される変動パターンコマンドが演出制御部300に送信される。
ステップS620の処理が終了すると、ステップS614に移行する。
一方、ステップS600で、図柄表示部104において演出図柄が変動中であると判定したとき(Yes)は、ステップS622に移行する。
ステップS622では、演出図柄の変動を開始してから所定時間(例えば、30秒)が経過したか否かを判定し、所定時間が経過したと判定したとき(Yes)は、ステップS624に移行して、演出制御部300に対して演出図柄の停止を指定するための制御コマンド(図柄停止コマンド)を送信バッファに格納する図柄停止処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS622で、所定時間が経過していないと判定したとき(No)、およびステップS602で、保留球数が「0」であると判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
〔電動役物制御処理〕
次に、ステップS208の電動役物制御処理を説明する。
図15は、電動役物制御処理を示すフローチャートである。
電動役物制御処理は、ステップS108において実行されると、図15に示すように、まず、ステップS700に移行する。
ステップS700では、大当たりフラグに基づいて大当たりか否かを判定し、大当たりフラグがセットされていることにより大当たりであると判定したとき(Yes)は、ステップS702に移行する。
ステップS702では、大当たり演出を開始するタイミングであるか否かを判定し、大当たり演出を開始するタイミングであると判定したとき(Yes)は、ステップS704に移行する。
ステップS704では、大当たり開始コマンドを送信バッファに格納する大当たり演出開始処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS212の制御コマンド送信処理では、大当たり開始コマンドが演出制御部300に送信される。
一方、ステップS702で、大当たり演出を開始するタイミングでないと判定したとき(No)は、ステップS706に移行して、ラウンドを開始するタイミングであるか否かを判定し、ラウンドを開始するタイミングであると判定したとき(Yes)は、ステップS708に移行する。
ステップS708では、ラウンド開始コマンドを送信バッファに格納するラウンド開始処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS212の制御コマンド送信処理では、ラウンド開始コマンドが演出制御部300に送信される。
一方、ステップS706で、ラウンドを開始するタイミングでないと判定したとき(No)は、ステップS710に移行して、ラウンドが継続中であるか否かを判定し、ラウンドが継続中であると判定したとき(Yes)は、ステップS712に移行する。
ステップS712では、大入賞口開閉部288により大入賞口109の開閉を制御する大入賞口開閉制御処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS710で、ラウンドが継続中でないと判定したとき(No)は、ステップS714に移行して、ラウンドを終了するタイミングであるか否かを判定し、ラウンドを終了するタイミングであると判定したとき(Yes)は、ステップS716に移行する。
ステップS716では、ラウンド回数に「1」を加算し、ステップS718に移行して、ラウンド回数が最大ラウンド数(例えば、15回)を超えたか否かを判定し、最大ラウンド数を超えていないと判定したとき(No)は、ステップS720に移行する。
ステップS720では、ラウンド終了コマンドを送信バッファに格納するラウンド終了処理を実行し、一連の処理を終了して元の処理に復帰させる。これにより、ステップS212の制御コマンド送信処理では、ラウンド終了コマンドが演出制御部300に送信される。
一方、ステップS718で、ラウンド回数が最大ラウンド数を超えていると判定したとき(Yes)は、ステップS722に移行する。
ステップS722では、大当たり終了コマンドを送信バッファに格納する大当たり演出終了処理を実行する。これにより、ステップS212の制御コマンド送信処理では、大当たり終了コマンドが演出制御部300に送信される。
次いで、ステップS724に移行して、大当たりフラグをリセットし、一連の処理を終了して元の処理に復帰させる。
一方、ステップS714で、ラウンドを終了するタイミングでないと判定したとき(No)、およびステップS700で、大当たりフラグがリセットされていることにより大当たりでないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
〔演出制御処理〕
次に、演出制御部300で実行される演出制御処理を説明する。
CPU302は、制御プログラムをROM304から読み出し、読み出した制御プログラムに従って、図16のフローチャートに示す演出制御処理を実行する。
図16は、演出制御処理を示すフローチャートである。
演出制御処理は、CPU302において実行されると、図16に示すように、まず、ステップS800に移行する。
ステップS800では、変動パターンコマンドを受信する変動パターンコマンド受信処理を実行し、ステップS802に移行して、大当たりコマンドを受信する大当たりコマンド受信処理を実行し、ステップS804に移行する。
ステップS804では、変動パターンコマンドおよび大当たりコマンド以外の制御コマンドを受信するその他制御コマンド受信処理を実行し、ステップS800に移行する。
〔変動パターンコマンド受信処理〕
次に、ステップS800の変動パターンコマンド受信処理を説明する。
図17は、変動パターンコマンド受信処理を示すフローチャートである。
変動パターンコマンド受信処理は、ステップS800において実行されると、図17に示すように、まず、ステップS900に移行する。
ステップS900では、I/F310を介して変動パターンコマンドを受信したか否かを判定し、変動パターンコマンドを受信したと判定したとき(Yes)は、ステップS902に移行するが、そうでないと判定したとき(No)は、変動パターンコマンドを受信するまでステップS900で待機する。
ステップS902では、乱数カウンタから乱数を取得し、ステップS904に移行して、取得した乱数に基づいて、受信した変動パターンコマンドに対応する複数の変動演出のなかからいずれかを選択し、ステップS906に移行する。
ステップS906では、図柄表示部104、音声制御部382およびランプ制御部386に対して、選択した変動演出の開始を指定するための制御コマンド(変動演出開始コマンド)をそれぞれ送信する変動演出開始処理を実行する。
次いで、ステップS908に移行して、変動演出開始コマンドを送信してから所定時間(例えば、30秒)が経過したか否かを判定し、所定時間が経過していないと判定したとき(No)は、ステップS910に移行して、I/F310を介して図柄停止コマンドを受信したか否かを判定し、図柄停止コマンドを受信したと判定したとき(Yes)は、ステップS912に移行する。
ステップS912では、図柄表示部104、音声制御部382およびランプ制御部386に対して、変動演出の終了を指定するための制御コマンド(変動演出終了コマンド)をそれぞれ送信する変動演出終了処理を実行する。
ステップS912の処理が終了すると、一連の処理を終了して元の処理に復帰させる。
一方、ステップS910で、図柄停止コマンドを受信しないと判定したとき(No)は、ステップS908に移行する。
一方、ステップS908で、所定時間が経過したと判定したとき(Yes)は、ステップS912に移行する。
なお、乱数カウンタの更新は、主制御部200で採用される上記方法により行うことができる。ただし、更新方法は、主制御部200とは必ずしも同一でなくてもよい。
〔大当たりコマンド受信処理〕
次に、ステップS802の大当たりコマンド受信処理を説明する。
図18は、大当たりコマンド受信処理を示すフローチャートである。
大当たりコマンド受信処理は、ステップS802において実行されると、図18に示すように、まず、ステップS1000に移行する。
ステップS1000では、I/F310を介して大当たり開始コマンドを受信したか否かを判定し、大当たり開始コマンドを受信したと判定したとき(Yes)は、ステップS1002に移行する。
ステップS1002では、図柄表示部104、音声制御部382およびランプ制御部386に対して、大当たり演出の開始を指定するための制御コマンド(大当たり演出開始コマンド)をそれぞれ送信する大当たり演出開始処理を実行する。
次いで、ステップS1004に移行して、I/F310を介してラウンド開始コマンドを受信したか否かを判定し、ラウンド開始コマンドを受信したと判定したとき(Yes)は、ステップS1006に移行する。
ステップS1006では、図柄表示部104、音声制御部382およびランプ制御部386に対して、ラウンド演出の開始を指定するための制御コマンド(ラウンド演出開始コマンド)をそれぞれ送信するラウンド演出開始処理を実行する。
次いで、ステップS1008に移行して、I/F310を介してラウンド終了コマンドを受信したか否かを判定し、ラウンド終了コマンドを受信したと判定したとき(Yes)は、ステップS1010に移行する。
ステップS1010では、図柄表示部104、音声制御部382およびランプ制御部386に対して、ラウンド演出の終了を指定するための制御コマンド(ラウンド演出終了コマンド)をそれぞれ送信するラウンド演出終了処理を実行し、ステップS1004に移行する。
一方、ステップS1008で、ラウンド終了コマンドを受信しないと判定したとき(No)は、ステップS1012に移行して、I/F310を介して大当たり終了コマンドを受信したか否かを判定し、大当たり終了コマンドを受信したと判定したとき(Yes)は、ステップS1014に移行する。
ステップS1014では、図柄表示部104、音声制御部382およびランプ制御部386に対して、大当たり演出の終了を指定するための制御コマンド(大当たり演出終了コマンド)をそれぞれ送信する大当たり演出終了処理を実行し、一連の処理を終了して元の処理に復帰させる。
一方、ステップS1012で、大当たり終了コマンドを受信しないと判定したとき(No)は、ステップS1008に移行する。
一方、ステップS1004で、ラウンド開始コマンドを受信しないと判定したとき(No)は、ラウンド開始コマンドを受信するまでステップS1004で待機する。
一方、ステップS1000で、大当たり開始コマンドを受信しないと判定したとき(No)は、大当たり開始コマンドを受信するまでステップS1000で待機する。
〔本実施の形態の動作〕
次に、本実施の形態の動作を説明する。
まず、パチンコ機に電源が投入されると、主制御部200では、ステップS202を経て、初期化処理が実行される。初期化処理では、電源オンコマンドが送信される。電源オンコマンドは、大当たりリーチコマンド以外の制御コマンドであるので、命令コード列およびアドレスが付加されることなく演出制御部300および賞球制御部400にそのまま送信される。
演出制御部300では、電源オンコマンドを受信すると、図柄表示部104、音声制御部382およびランプ制御部386に対して、電源オン時の演出用の制御コマンド(具体的には、デモ画面の表示、ランプ384の点灯、音声の出力を指定するための制御コマンド)がそれぞれ送信される。
初期化処理が終了すると、主制御部200では、ステップS204〜S212を経て、入賞判定処理、大当たり判定処理、電動役物制御処理および制御コマンド送信処理が所定周期で繰り返し実行される。これにより、パチンコ機は、遊技可能な状態となる。遊技者は、貸し出しを受けた遊技球をパチンコ機に装填し、発射部482を操作して遊技球を遊技盤101に発射することにより遊技を行うことができる。
遊技者により発射された遊技球が始動入賞口105に入賞すると、主制御部200では、ステップS506、S512を経て、その入賞タイミングで大当たり決定乱数が取得される。そして、ステップS604、S606を経て、取得された乱数値が大当たり値と一致していれば、大当たりとなる。
大当たりとなると、ステップS610、S612を経て、大当たり時の停止図柄の態様および変動パターンが決定される。このとき、リーチ演出を行うことが決定されると、制御コマンド送信処理では、大当たり図柄を指定するための図柄指定コマンドおよび大当たりリーチコマンドが送信される。大当たりリーチコマンドの送信時は、ステップS304を経て、接続機器認証処理が実行される。
接続機器認証処理では、ステップS402〜S454を経て、アクセス制御装置230により接続機器の認証が行われる。このとき、アクセス制御装置230へのアクセスのためにCPUコア203が実行する命令コード列およびそのアドレスは、ステップS410、S420、S434、S442を経て、大当たりリーチコマンドに付加されて出力される。これにより、接続機器の正当性を認証することができる。しかしながら、例えば、悪意を有する第三者によって、不正な機器が認証されるように接続機器認証処理を改ざんされてしまう場合がある。
例えば、ステップS424では、アクセス制御装置230のレジスタ236に対して検証値Vが書き込まれている。このとき、レジスタ236に書き込まれるのは、本来、CPUコア203のレジスタ203cに保持されている検証値Vである。しかしながら、不正な命令コード列によって、レジスタ236に書き込む値をレジスタ203c以外の場所(または、レジスタ203cのうち検証値Vが保持されている領域以外の領域)に記憶された値とすることが可能となる。
また、例えば、ステップS412では、アクセス制御装置230のレジスタ234から検証値Vが読み出されている。このとき、読み出す値をレジスタ234以外の場所(または、レジスタ234のうち検証値Vが保持されている領域以外の領域)に記憶された値とすることが可能となる。
これらの不正は、例えば、不正なパッチ等によってCPUコア203の処理を分岐させることにより可能となる。
このような不正行為が行われると、正しい接続機器認証処理が行えず、不正な機器の接続が可能となってしまう。そのため、主制御部200では、アクセス制御装置230を設け、CPU202によるレジスタ234、236へのアクセスを制御する。これにより、不正な命令コード列の実行により不正な機器が認証されてしまう可能性を低減することができる。
図19は、アクセス制御部238が行うアクセス制御の概要を示す説明図である。なお、図19では、説明の便宜上、構成の一部を省略している。
図19に示すように、例えば、許可命令コード列および許可アドレスが、命令コード列「0xJKLMNOPQ」(ライト命令)およびアドレス「0x104」であるとする。このとき、正規のROM204には、アドレス「0x104」〜「0x107」に命令コード列「0xJKLMNOPQ」(ライト命令)が記憶されている。
CPUコア203が、アドレス「0x104」〜「0x107」から命令コード列「0xJKLMNOPQ」を読み出して実行する場合(矢印α)、アクセス制御部238は、レジスタ236へのデータの書込を許可する。
ところが、例えば、不正例1のように、アドレス「0x200」〜「0x203」に不正な命令コード列「0xPOIUYTRE」(ライト命令)が書き込まれてしまったとする。この場合、CPUコア203が、アドレス「0x200」〜「0x203」から命令コード列「0xPOIUYTRE」を読み出して実行しても(矢印β)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部238は、レジスタ236へのデータの書込を禁止する(ライト命令を拒否)。
また、例えば、不正例2のように、アドレス「0x080」〜「0x083」に不正な命令コード列「0xLKJHGFDS」が挿入されてしまったとする。この不正な命令コード列は、例えば、レジスタ236に書き込む値を変更する命令コード列である。しかしながら、この不正な命令コード列が挿入されたことにより、本来実行が許可される命令コード列「0xJKLMNOPQ」(ライト命令)のアドレスが「0x108」〜「0x10B」となってしまっている。
そのため、CPUコア203が、アドレス「0x108」〜「0x10B」から命令コード列「0xJKLMNOPQ」を読み出して実行しても(矢印γ)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部238は、レジスタ236へのデータの書込を禁止する(ライト命令を拒否)。このとき、CPUコア203は、アクセス制御装置230からの通知を受け、不正通知を行ってもよい。これにより、不正な命令コード列「0xLKJHGFDS」の実行により書き込み値が変更されたとしても、その値がレジスタ236に書き込まれないので、不正行為が行われる可能性を低減することができる。
一方、アクセス制御部238は、上記不正行為のほか、ビットエラーによりCPU202が誤動作する可能性を低減することもできる。
図20は、アクセス制御部238が行うアクセス制御の概要を示す説明図である。
図20に示すように、例えば、許可命令コード列および許可アドレスが、命令コード列「0xABCDEFGH」(リード命令)およびアドレス「0x100」、並びに、命令コード列「0xABCDEFGI」(ライト命令)およびアドレス「0x104」であるとする。このとき、正規のROM204には、アドレス「0x100」〜「0x103」に命令コード列「0xABCDEFGH」(リード命令)が記憶されている。
CPUコア203が命令コード列を読み出す際、命令コード列にビットエラー(例えば、「1」が「0」となる。)が発生してしまう場合がある。その結果、CPUコア203がアドレス「0x100」〜「0x103」から読み出した命令コード列「0xABCDEFGH」(リード命令)が、例えば、命令コード列「0xABCDEFGI」(ライト命令)に置き換わってしまう場合がある(矢印δ)。この場合、CPUコア203が命令コード列「0xABCDEFGI」(ライト命令)を実行すると、アクセス制御装置230のデータが予期しない形で書き換えられてしまう可能性がある。
しかしながら、このようなライト命令が実行されたとしても(矢印ε)、命令コード列のアドレスが許可アドレスではないので、アクセス制御部238は、レジスタ236へのデータの書込を禁止する(ライト命令を拒否)。
演出制御部300では、大当たりリーチコマンドを受信すると、ステップS902〜S912を経て、受信した大当たりリーチコマンドに基づいて大当たりリーチ変動時の処理が実行される。
主制御部200では、ステップS614、S624を経て、所定の変動パターンで演出図柄を変動表示させ、演出図柄の一部をリーチ図柄で停止させた後に大当たり図柄で演出図柄を停止させる。演出図柄が停止すると、制御コマンド送信処理では、大当たり開始コマンドが送信される。大当たり開始コマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たり開始コマンドを受信すると、ステップS1002を経て、受信した大当たり開始コマンドに基づいて大当たり演出開始時の処理が実行される。
大当たり中は、最大ラウンド数を上限として所定条件を満たすまでラウンドが継続される。制御コマンド送信処理では、ラウンドの開始時および終了時に大当たりコマンドが送信される。大当たりコマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たりコマンドを受信すると、ステップS906、S910を経て、受信した大当たりコマンドに基づいて大当たり演出中の処理が実行される。
また、大当たり中は、大入賞口109が所定の開閉パターンで開放し、大入賞口109に遊技球が入賞すると、遊技球1個につき所定数の遊技球が賞球として払い出される。
そして、最終ラウンドが終了すると、制御コマンド送信処理では、大当たり終了コマンドが送信される。大当たり終了コマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、大当たり終了コマンドを受信すると、ステップS1014を経て、受信した大当たり終了コマンドに基づいて大当たり演出終了時の処理が実行される。
一方、ステップS604、S606を経て、取得された乱数値が大当たり値と一致しなければ、はずれとなる。
はずれとなると、ステップS618、S620を経て、はずれ時の停止図柄の態様および変動パターンが決定される。このとき、リーチ演出を行うことが決定されると、制御コマンド送信処理では、はずれ図柄(または、はずれ図柄となる旨)を指定するための図柄指定コマンドおよびはずれリーチコマンドが送信される。これに対し、リーチ演出を行わないことが決定されると、制御コマンド送信処理では、同図柄指定コマンドおよびはずれ非リーチコマンドが送信される。はずれリーチコマンドまたははずれ非リーチコマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、はずれリーチコマンドまたははずれ非リーチコマンドを受信すると、ステップS902〜S912を経て、受信したはずれリーチコマンドまたははずれ非リーチコマンドに基づいてはずれ変動時の処理が実行される。
一方、遊技が中断されると、主制御部200では、客待ちデモ実行処理が実行される。そして、制御コマンド送信処理では、客待ちデモコマンドが送信される。客待ちデモコマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、客待ちデモコマンドを受信すると、客待ちデモ開始時の処理として、図柄表示部104、音声制御部382およびランプ制御部386に対して客待ちデモ用の制御コマンドがそれぞれ送信される。
その後、遊技が再開されると、制御コマンド送信処理では、客待ちデモ停止コマンドが送信される。客待ちデモ停止コマンドは、大当たりリーチコマンド以外の制御コマンドであるので、ステップS306を経て、命令コード列およびアドレスが付加されることなく演出制御部300にそのまま送信される。
演出制御部300では、客待ちデモ停止コマンドを受信すると、客待ちデモ終了時の処理として、図柄表示部104、音声制御部382およびランプ制御部386に対して客待ちデモ用の制御コマンドがそれぞれ送信される。
〔本実施の形態の効果〕
このようにして、本実施の形態では、アクセス制御装置230は、レジスタ234、236と、CPUコア203が実行する命令コード列およびそのアドレスをI/F212から入力する入力部231と、入力部231で入力した命令コード列およびアドレスに基づいて、CPU202によるレジスタ234、236へのアクセスを制御するアクセス制御部238とを備える。
これにより、レジスタ234、236のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正行為やエラーに起因する不正動作が行われる可能性を低減することができる。また、CPU202とは別体のアクセス制御装置230がアクセス制御機能を実現するので、CPUコア203自体が不正動作検出処理を行う必要がなく、従来に比して、開発や設計の難易度が高くなることを抑制することができる。さらに、命令コード列およびそのアドレスに基づいてアクセスが制御されるので、ROM204と同等容量のテーブルを用意する必要がなく、従来に比して、データ容量が増大することを抑制することができる。
さらに、DIP等からなるワンチップ型のマイクロプロセッサであるCPU202を採用する場合において、CPUコア203が不正動作検出処理を行う構成では、CPU202が丸ごと交換されるような不正行為が行われると、CPUコア203自体が交換されてしまうことになるので、CPU202の正当性を認証することはできない。これに対し、本実施の形態は、アクセス制御装置230がCPU202とは別体に設けられているので、そのような不正行為が行われても、CPU202の正当性を認証することができる。
さらに、DIP等からなるワンチップ型のマイクロプロセッサであるCPU202を採用する場合において、アクセス制御装置230のアクセス制限機能を実現する回路等をCPU202に内蔵する構成では、CPU202を新たに開発、設計等しなければならず、既存のCPUには適用することができない。これに対し、本実施の形態では、アクセス制御装置230をCPU202に接続するだけでよいので、既存のCPUにも適用することができる。
さらに、本実施の形態では、主制御部200は、アクセス制御装置230へのアクセスのためにCPUコア203が実行する命令コード列およびそのアドレスを大当たりリーチコマンドに付加して出力する。
これにより、他の制御コマンドに比して送信頻度が低い大当たりリーチコマンドに命令コード列およびアドレスを付加して出力するので、通信データ中から命令コード列およびアドレスが抽出される可能性を低減することができる。
さらに、大当たりリーチ演出は、大当たり抽選の抽選結果に基づいて発生する大当たりの発生に先立って行われるので、大当たりリーチコマンドの送信タイミングは、不規則性を有する。したがって、大当たりリーチコマンドの送信時に接続機器の認証を行うことにより認証の実施時期が不規則となるので、不正行為が行われる可能性をさらに低減することができる。
さらに、大当たりリーチコマンドの送信時に接続機器の認証が行われるので、各制御コマンドの送信ごとに接続機器の認証を行う場合に比して、主制御部200および演出制御部300の処理負荷を低減することができる。したがって、主制御部200または演出制御部300が高い処理能力を有していないパチンコ機や、処理負荷が大きいパチンコ機に対しても適用することができる。
さらに、命令コード列およびアドレスを大当たりリーチコマンドに付加して出力するので、命令コード列およびアドレスを単体で出力する場合に比して、通信データ中から命令コード列およびアドレスが抽出される可能性をさらに低減することができる。
さらに、本実施の形態では、アクセス制御部238は、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであるときにのみ、レジスタ234、236へのアクセスを許可する。
これにより、不正に書き換えられた命令コード列、ビットエラーによって内容が変化した命令コード列、または不正なアドレスに記憶された命令コード列が実行されることにより、レジスタ234、236のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
さらに、本実施の形態では、アクセス制御装置230によるアクセス制御の状況に応じて不正通知を行う。
これにより、不正動作が行われた可能性があることを把握することができる。
さらに、本実施の形態では、主制御部200のCPU202にアクセス制御装置230を適用した。
これにより、主制御部200のCPU202が不正動作する可能性を低減することができる。主制御部200は、遊技の根幹となる主制御を行っているので、セキュリティ効果が高い。
上記第1の実施の形態において、図柄表示部104は、発明1の図柄表示手段に対応し、CPU202は、発明1、5、11または12のデータ処理装置に対応し、CPUコア203は、発明1、4、5、11または12のデータ処理手段に対応し、ROM204は、発明5の命令コード記憶手段に対応している。また、I/F210およびステップS306、S410、S420、S434、S442、S454は、発明1の送信手段に対応し、ステップS306、S410、S420、S434、S442、S454は、発明12の送信ステップに対応している。
また、上記第1の実施の形態において、I/F212およびステップS410、S420、S434、S442は、発明1、4、5、11または12の出力手段に対応し、ステップS410、S420、S434、S442は、発明12の出力ステップに対応し、I/F310およびステップS900、S910、S1000、S1004、S1008、S1012は、発明1の受信手段に対応している。また、入力部231は、発明1、3ないし5の入力手段に対応し、レジスタ234、236は、発明1、3、11または12の記憶手段に対応し、アクセス制御部238およびステップS106〜S112、S120〜S126は、発明1、3または10のアクセス制御手段に対応している。
また、上記第1の実施の形態において、ステップS106〜S112、S120〜S126は、発明11または12のアクセス制御ステップに対応し、ステップS512、S514、S604、S606は、発明1の抽選手段に対応し、ステップS610、S612、S624は、発明1の特賞状態発生手段に対応している。また、ステップS612は、発明1の予告表示制御手段に対応し、ステップS614は、発明1の変動表示制御手段に対応している。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態を図面を参照しながら説明する。図21ないし図23は、本発明に係る遊技機およびアクセス制御プログラム、並びに遊技制御方法の第2の実施の形態を示す図である。
本実施の形態は、上記第1の実施の形態に対して、アクセス制御部238が、CPUコア203が実行する命令コード列およびそのアドレスに加えて、命令コード列から算出されたチェック値に基づいてアクセスを制御する点が異なる。なお、以下、上記第1の実施の形態と異なる部分についてのみ説明し、上記第1の実施の形態と重複する部分については同一の符号を付して説明を省略する。
〔主制御部の構成〕
まず、主制御部200の構成を説明する。
図21は、主制御部200の構成を示すブロック図である。
CPU202は、図21に示すように、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のチェック値を後発的に変更することが可能となる。
〔チェック値算出処理〕
次に、チェック値算出部218で実行されるチェック値算出処理を説明する。
図22は、チェック値算出処理を示すフローチャートである。
チェック値算出部218は、チェック値算出処理を実行すると、図22に示すように、まず、ステップS1100に移行する。
ステップS1100では、アクセス制御部238からチェック値の取得要求を受信したか否かを判定し、チェック値の取得要求を受信したと判定したとき(Yes)は、ステップS1102に移行するが、そうでないと判定したとき(No)は、チェック値の取得要求を受信するまでステップS1100で待機する。
ステップS1102では、ROM204から命令コード列を読み出し、ステップS1104に移行して、読み出した命令コード列に対して上記誤り検出演算を行ってチェック値を算出し、ステップS1106に移行して、算出したチェック値をアクセス制御部238に送信し、チェック値算出処理を終了する。
〔アクセス制御処理〕
次に、アクセス制御部238で実行されるアクセス制御処理を説明する。
図23は、アクセス制御処理を示すフローチャートである。
アクセス制御部238は、アクセス制御処理を実行すると、図23に示すように、まず、ステップS1200に移行する。
ステップS1200では、レジスタ234、236に対するリード要求をI/F212から入力したか否かを判定し、リード要求を入力したと判定したとき(Yes)は、ステップS1202に移行する。
ステップS1202では、大当たりリーチコマンドをI/F212から入力したか否かを判定し、大当たりリーチコマンドを入力したと判定したとき(Yes)は、ステップS1204に移行するが、そうでないと判定したとき(No)は、大当たりリーチコマンドを入力するまでステップS1202で待機する。
ステップS1204では、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップS1206に移行する。
ステップS1206では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップS1208に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップS1210に移行する。
ステップS1210では、チェック値の取得要求をチェック値算出部218に送信し、ステップS1212に移行して、その応答としてチェック値を入力部231から入力し、ステップS1214に移行する。
ステップS1214では、アクセス制御部238に記憶されている期待値を読み出したしたり、CPUコア203や期待値算出部が生成した期待値を受信したりすることによりチェック値の期待値を取得し、ステップS1216に移行する。
ステップS1216では、入力したチェック値が、入力した期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップS1218に移行する。
ステップS1218では、レジスタ234、236が保持しているデータを読み出し、ステップS1220に移行して、読み出したデータをI/F212に出力する。出力されたデータは、I/F212を介してCPUコア203のレジスタ203cに保持される。
次いで、ステップS1222に移行して、レジスタ236に対するライト要求をI/F212から入力したか否かを判定し、ライト要求を入力したと判定したとき(Yes)は、ステップS1224に移行する。
ステップS1224では、大当たりリーチコマンドをI/F212から入力したか否かを判定し、大当たりリーチコマンドを入力したと判定したとき(Yes)は、ステップS1226に移行するが、そうでないと判定したとき(No)は、大当たりリーチコマンドを入力するまでステップS1224で待機する。
ステップS1226では、CPUコア203が実行する命令コード列およびそのアドレスを入力部231から入力し、ステップS1228に移行する。
ステップS1228では、入力した命令コード列が許可命令コード列であるか否かを判定し、許可命令コード列であると判定したとき(Yes)は、ステップS1230に移行して、入力したアドレスが許可アドレスであるか否かを判定し、許可アドレスであると判定したとき(Yes)は、ステップS1232に移行する。
ステップS1232〜S1236では、ステップS1210〜S1214と同様の処理を実行し、ステップS1238に移行する。
ステップS1238では、チェック値が期待値と一致しているか否かを判定し、チェック値が期待値と一致していると判定したとき(Yes)は、ステップS1240に移行する。
ステップS1240では、CPUコア203のレジスタ203cが保持しているデータをI/F212から入力し、ステップS1242に移行して、入力したデータをレジスタ236に書き込み、アクセス制御処理を終了する。
一方、ステップS1238で、チェック値が期待値と一致していないと判定したとき(No)、ステップS1230で、許可アドレスでないと判定したとき(No)、ステップS1228で、許可命令コード列でないと判定したとき(No)、およびステップS1222で、ライト要求を入力しないと判定したとき(No)はいずれも、レジスタ236にデータを書き込まずに、アクセス制御処理を終了する。このとき、CPUコア203は、アクセス制御装置230からの通知を受け、不正通知を行ってもよい。
一方、ステップS1216で、チェック値が期待値と一致していないと判定したとき(No)、ステップS1208で、許可アドレスでないと判定したとき(No)、ステップS1206で、許可命令コード列でないと判定したとき(No)、およびステップS1200で、リード要求を入力しないと判定したとき(No)はいずれも、レジスタ234、236が保持しているデータをI/F212に出力せずに、ステップS1222に移行する。このとき、CPUコア203のレジスタ203cに非正当値が保持されるが、その値が所定値である場合、CPUコア203は、不正通知を行ってもよい。
〔本実施の形態の効果〕
このようにして、本実施の形態では、CPU202は、ROM204に記憶された命令コード列からチェック値を算出するチェック値算出部218を備え、アクセス制御部238は、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部231で入力したチェック値がチェック値の期待値と所定関係にあるときにのみ、レジスタ234、236へのアクセスを許可する。
これにより、ROM204に記憶された命令コード列が不正に書き換えられたことを検出することができる。また、命令コード列およびアドレスの照合と、チェック値の照合とを組み合わせることにより、不正動作が行われる可能性をさらに低減することができる。なお、チェック値の照合は、命令コード列およびアドレスの照合と組み合わせて行うので、チェック値の算出に比較的処理負荷が軽い誤り検出演算(例えば、パリティチェック)を用いても、一定の精度を得ることができる。
上記第2の実施の形態において、CPU202は、発明6のデータ処理装置に対応し、CPUコア203は、発明6のデータ処理手段に対応し、ROM204は、発明6の命令コード記憶手段に対応し、チェック値算出部218は、発明6の演算手段に対応している。また、入力部231は、発明6の入力手段に対応している。
〔他の実施の形態〕
なお、上記第2の実施の形態において、アクセス制御装置230は、命令コード列からチェック値を算出するように構成したが、これに限らず、次の3つの構成を採用することができる。
(1)第1の構成
第1の構成は、命令コード列に代えて、ROM204に記憶されたデータ(以下、第1算出基礎データという。)からチェック値を算出する。第1算出基礎データとは、例えば、ROM204に記憶された所定の固定値である。なお、第1算出基礎データは、固定値に限らず、変動前後のデータ値を正確に予測可能な変動データであってもよい。変動前後のデータ値を正確に予測可能とは、具体的には、例えば、変動範囲が定まっている場合や変動規則が定まっている場合をいう。
チェック値算出部218は、第1算出基礎データをROM204から読み出し、読み出した第1算出基礎データからチェック値を算出する。
アクセス制御部238は、あらかじめ第1算出基礎データの期待値を記憶している。アクセス制御部238は、期待値からチェック値を算出し、入力部231で入力したチェック値が、算出したチェック値と所定関係にあるか否かを判定する。その他、入力部231で入力したチェック値が期待値と所定関係にあるか否かを判定してもよい。なお、命令コード列から算出したチェック値と、第1算出基礎データから算出したチェック値の両方に基づいてアクセス制御を行ってもよい。
これにより、ROM204が不正なものに交換されたことを検出することができる。
この場合において、CPU202は、発明7のデータ処理装置に対応し、CPUコア203は、発明7のデータ処理手段に対応し、ROM204は、発明7の命令コード記憶手段に対応し、チェック値算出部218は、発明7の演算手段に対応している。また、入力部231は、発明7の入力手段に対応している。
(2)第2の構成
第2の構成は、命令コード列に代えて、CPUコア203が実行する命令コード列の実行結果(以下、第2算出基礎データという。)からチェック値を算出する。第2算出基礎データとは、例えば、CPUコア203のフラグレジスタの値である。なお、第2算出基礎データは、フラグレジスタの値に限らず、命令コード列が正しく実行されたときに第1の値を返し、それ以外は第2の値を返す関数の戻り値であってもよい。
チェック値算出部218は、第2算出基礎データをフラグレジスタ等から取得し、取得した第2算出基礎データからチェック値を算出する。
アクセス制御部238は、第1の構成の場合と同様に構成することができる。なお、第1算出基礎データから算出したチェック値にさらに基づいてアクセス制御を行ってもよい。
また、第2算出基礎データからチェック値を算出せず、第2算出基礎データをそのまま用いてもよい。すなわち、アクセス制御部238は、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、第2算出基礎データが所定値であるときにのみ、アクセスを許可する。
これにより、不正に書き換えられた命令コード列や、ビットエラーによって内容が変化した命令コード列が実行されることにより、レジスタ234、236のデータが不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
この場合において、CPUコア203は、発明8のデータ処理手段に対応し、入力部231は、発明8の入力手段に対応している。
(3)第3の構成
第3の構成は、命令コード列に代えて、命令コード列のアドレス(以下、第3算出基礎データという。)からチェック値を算出する。
チェック値算出部218は、第3算出基礎データをバス216等から取得し、取得した第3算出基礎データからチェック値を算出する。
アクセス制御部238は、第1の構成の場合と同様に構成することができる。なお、第1算出基礎データおよび第2算出基礎データの一方または両方から算出したチェック値にさらに基づいてアクセス制御を行ってもよい。
また、上記第2の実施の形態において、アクセス許可条件は、入力部231で入力した命令コード列が許可命令コード列であり、かつ、その命令コード列のアドレスが許可アドレスであり、かつ、入力部231で入力したチェック値がチェック値の期待値と所定関係にあることとしたが、これに限らず、(1)入力部231で入力した命令コード列が許可命令コード列であること、(2)その命令コード列のアドレスが許可アドレスであること、(3)入力部231で入力したチェック値がチェック値の期待値と所定関係にあることのうちいずれか1つまたは任意の2つの組み合わせとすることもできる。第1算出基礎データまたは第2算出基礎データを用いる場合も、(1)〜(3)との任意の組み合わせでアクセス許可条件を設定することができる。また、上記第1の実施の形態においても、(1)または(2)でアクセス許可条件を設定することができる。
また、上記第1および第2の実施の形態においては、アクセス制御装置230を主制御部200に設けたが、これに限らず、次の2つの構成を採用することができる。
(1)第1の構成
第1の構成は、アクセス制御装置230を演出制御部300に設けた構成である。
図24は、演出制御部300の構成を示すブロック図である。
演出制御部300は、図24に示すように、CPU302およびアクセス制御装置230を有して構成されている。
CPU302は、DIP等からなるワンチップ型のマイクロプロセッサであって、CPUコア303、ROM304、RAM306、VRAM308、I/F310および演出関連デバイス群314のほか、外部装置との入出力を行うI/F312を有して構成されている。これらは、バス316を介して相互に接続されている。
アクセス制御装置230は、I/F312に接続されている。CPU302は、そのハードウェア構造上、バス316を介して送受信されるアドレス信号、データ信号および制御信号を外部に出力しない構成となっている。また、バス316の信号線がCPU302に内蔵されているので、アクセス制御装置230をバス316の信号線に直結することも改造を要し難しい。したがって、そのままの構成では、アクセス制御装置230は、CPUコア303が実行する命令に関する情報を取得することができない。そこで、第1の構成では、CPUコア303が実行する命令に関する情報として、CPUコア303が実行する命令コード列、およびそのROM304におけるアドレスを、主制御部200から受信した大当たりリーチコマンドに付加して、I/F312を介して出力する処理をCPUコア303に実行させる。この出力処理は、例えば、ROM304の制御プログラムの一処理として組み込んでおくことができる。これにより、アクセス制御装置230は、CPUコア303が実行する命令コード列およびそのアドレスをI/F312から入力することができる。
これにより、演出制御部300のCPU302が不正動作する可能性を低減することができる。
この場合において、演出制御部300は、発明2の周辺基板に対応している。
(2)第2の構成
第2の構成は、アクセス制御装置230を賞球制御部400に設けた構成である。
図25は、賞球制御部400の構成を示すブロック図である。
賞球制御部400は、図25に示すように、CPU402およびアクセス制御装置230を有して構成されている。
CPU402は、DIP等からなるワンチップ型のマイクロプロセッサであって、CPUコア403、ROM404、RAM406、I/F410および賞球関連デバイス群414のほか、外部装置との入出力を行うI/F412を有して構成されている。これらは、バス416を介して相互に接続されている。
アクセス制御装置230は、I/F412に接続されている。CPU402は、そのハードウェア構造上、バス416を介して送受信されるアドレス信号、データ信号および制御信号を外部に出力しない構成となっている。また、バス416の信号線がCPU402に内蔵されているので、アクセス制御装置230をバス416の信号線に直結することも改造を要し難しい。したがって、そのままの構成では、アクセス制御装置230は、CPUコア403が実行する命令に関する情報を取得することができない。そこで、第2の構成では、CPUコア403が実行する命令に関する情報として、CPUコア403が実行する命令コード列、およびそのROM404におけるアドレスを、主制御部200から受信した大当たりリーチコマンドに付加して、I/F412を介して出力する処理をCPUコア403に実行させる。この出力処理は、例えば、ROM404の制御プログラムの一処理として組み込んでおくことができる。これにより、アクセス制御装置230は、CPUコア403が実行する命令コード列およびそのアドレスをI/F412から入力することができる。
これにより、賞球制御部400のCPU402が不正動作する可能性を低減することができる。
この場合において、賞球制御部400は、発明2の周辺基板に対応している。
また、上記第1および第2の実施の形態において、アクセス制御部238は、レジスタ234、236へのアクセスを制御するように構成したが、これに限らず、レジスタ234、236のうち特定のアドレス空間へのアクセスを制御するように構成することもできる。
これにより、レジスタ234、236のうち、機密情報等の重要な情報が記憶されたアドレス空間へのアクセスを制御することにより、重要な情報が不正に書き換えられたり読み出されたりする可能性を低減することができるので、不正動作が行われる可能性をさらに低減することができる。
また、上記第1および第2の実施の形態においては、命令コード列の単位で読出、実行、判定その他の処理を行うように構成したが、これに限らず、命令コードの単位で読出、実行、判定その他の処理を行うように構成することもできる。これは、上記他の実施の形態についても同様である。代表例として、入力した命令コードが、あらかじめ許可されたコードであり、かつ、その命令コードのアドレスが許可アドレスであるときにのみ、アクセスを許可する。アクセス許可条件の組み合わせについては、命令コード列の場合と同様の組み合わせを採用することができる。
また、上記第1および第2の実施の形態においては、アクセス制御装置230を1つだけ設けたが、これに限らず、複数のアクセス制御装置230を設けることもできる。2台の場合、例えば、第1アクセス制御装置は、入力部231、演算部232、レジスタ234およびアクセス制御部238を有して構成されている。第2アクセス制御装置は、入力部231、演算部232、レジスタ236およびアクセス制御部238を有して構成されている。この場合、アクセス制御部238は、いずれかのアクセス制御装置にのみ設けてもよい。
また、上記第2の実施の形態において、チェック値算出部218は、チェック値の取得要求に応じてチェック値を算出するように構成したが、これに限らず、所定条件が成立したときにチェック値を算出し、算出したチェック値をアクセス制御部238に送信するように構成することもできる。
また、上記第1および第2の実施の形態において、CPU202は、2つのI/F210、212を設けて構成したが、これに限らず、1つのI/Fのみを設けて構成してもよいし、さらに多数のI/Fを設けて構成してもよい。図24におけるCPU302および図25におけるCPU402についても同様である。
また、上記第1および第2の実施の形態において、CPU202は、アクセス制御装置230を利用して接続機器認証処理を行うように構成したが、これに限らず、アクセス制御装置230を利用して乱数を取得するように構成することもできる。図24におけるCPU302および図25におけるCPU402についても同様である。
この場合、演算部232は、乱数生成器等からなり、遊技制御に用いる乱数および認証に必要な認証情報を生成する。遊技制御に用いる乱数としては、大当たり決定乱数、停止図柄決定乱数、変動パターン決定乱数、リーチ決定乱数その他遊技制御に用いる乱数を生成する。
アクセス制御装置230のレジスタ234から乱数を読み出す場合、命令コード列およびアドレスを大当たりリーチコマンドに付加する構成では、命令コード列およびそのアドレスの出力タイミングと、乱数の読出タイミングとが一致しないことがある。すなわち、命令コード列およびそのアドレスは大当たり図柄変動開始時に出力されるのに対し、大当たり決定乱数は始動入賞口105への入賞タイミングで読み出さなければならない。そこで、アクセス制御装置230の構成として、例えば、次の2つの構成を採用することができる。
第1の構成は、制御コマンドの送信時に認証(命令コード列、アドレスまたはチェック値の一致の判定結果)が得られたときは、所定許可回数のアクセスに限り認証を行わない。所定許可回数は、認証が得られた後最初のアクセスから計数を開始してもよいし、認証が得られた後所定回数のアクセスを待って計数を開始してもよい。後者の場合、計数開始前のアクセスは禁止される。したがって、認証後に所定回数のダミーアクセスが必要となり、この回数が分からなければ、認証が得られてもレジスタ234、236へのアクセスができないので、不正動作が行われる可能性を低減することができる。
第2の構成は、制御コマンドの送信時に認証が得られたときは、所定許可期間内に限り認証を行わない。所定許可期間は、認証が得られた直後から開始してもよいし、認証が得られた後所定時間経過を待って開始してもよい。後者の場合、開始前のアクセスは禁止される。また、開始前にアクセスがあったときは、その後のアクセスを禁止してもよい。したがって、認証後に所定時間の待機が必要となり、この時間が分からなければ、認証が得られてもレジスタ234、236へのアクセスができないので、不正動作が行われる可能性を低減することができる。
また、上記第1および第2の実施の形態においては、アクセス制御装置230を主制御部200に設けて構成したが、これに限らず、演出制御部300、賞球制御部400その他の場所に設けて構成することもできる。図24および図25の構成についても同様である。すなわち、アクセス制御装置230を利用するCPU202、302、402と、アクセス制御装置230とは、同一の基板に設けなくてもよく、異なる基板その他の場所に設けることができる。
また、上記第1および第2の実施の形態においては、1つの命令コード列およびアドレスを1つの大当たりリーチコマンドに付加して出力するように構成したが、これに限らず、複数の命令コード列およびアドレスを1つの大当たりリーチコマンドに付加して出力するように構成することもできる。例えば、図12の接続機器認証処理では、命令コード列およびアドレスを4回入出力しているので、4つの命令コード列およびアドレスを1つの大当たりリーチコマンドに付加して出力すれば、大当たりリーチコマンドの1回の送信で接続機器認証処理を完了することができる。図24および図25の構成についても同様である。
また、上記第1および第2の実施の形態において、主制御部200は、大当たりリーチコマンドの各送信ごとに命令コード列およびアドレスを出力するように構成したが、これに限らず、大当たりリーチコマンドの所定の送信単位ごとに命令コード列およびアドレスを出力するように構成することもできる。図24および図25の構成についても同様である。
所定の送信単位ごとに出力する構成としては、例えば、大当たりリーチコマンドをn(nは2以上の整数)回送信するごとに出力する構成、所定時間内に送信される大当たりリーチコマンドを単位としてその開始または終了ごとに出力する構成を採用することができる。
また、上記第1および第2の実施の形態において、主制御部200は、大当たりリーチコマンドに命令コード列およびアドレスを付加するように構成したが、これに限らず、大当たりリーチコマンド以外の1または複数種類の制御コマンドに命令コード列およびアドレスを付加するように構成することもできる。図24および図25の構成についても同様である。
他の制御コマンドとしては、例えば、電源オンコマンド、電源オフコマンド、客待ちデモコマンド、客待ちデモ停止コマンド、はずれ非リーチコマンド、はずれリーチコマンド、大当たり開始コマンド、大当たり終了コマンド、大当たりコマンド、図柄指定コマンド、変動開始コマンドおよび図柄停止コマンドが考えられる。
この場合、セキュリティ強度と処理負荷のバランスを考慮し、命令コード列およびアドレスを付加する制御コマンドを選択することができる。すなわち、送信頻度が高い制御コマンドであれば単位時間あたりの認証回数が多くなるので、処理負荷は大きくなるがセキュリティ強度は高くなる。逆に、送信頻度が低い制御コマンドであれば単位時間あたりの認証回数が少なくなるので、セキュリティ強度は低くなるが処理負荷は小さくなる。したがって、セキュリティ強度を高くしたい場面では、送信頻度の高い制御コマンドを選択し、処理負荷を小さくしたい場面では、送信頻度の低い制御コマンドを選択する。これらの場面は、例えば、所望に応じてテーブル等に設定し、主制御部200に保持させておけばよい。例えば、遊技者が所定数以上となる見込みの日または時間帯は、セキュリティ強度を高くしたい場面に設定し、それ以外の日または時間帯は、処理負荷を小さくしたい場面に設定することが考えられる。
また、上記第1および第2の実施の形態においては、大当たりリーチコマンドの後に命令コード列およびアドレスを付加したが、これに限らず、大当たりリーチコマンドの前に命令コード列およびアドレスを付加してもよいし、大当たりリーチコマンドとの間に他のデータ(例えば、ダミーデータ)を介して命令コード列およびアドレスを付加してもよい。また、大当たりリーチコマンドと命令コード列およびアドレスの一方を出力してから所定時間経過後に他方を出力してもよいし、命令コード列およびアドレスに代えて命令コード列およびアドレスへのアクセスに必要なアクセス情報(例えば、リンク情報)を付加等してもよい。図24および図25の構成についても同様である。
また、上記第1および第2の実施の形態においては、大当たりリーチコマンドの各送信ごとにアクセス制御を行うように構成したが、これに限らず、命令コード列およびアドレスを保持しておき、所定のタイミングで、保持している命令コード列およびアドレスに基づいて一括でアクセス制御を行うように構成することもできる。図24および図25の構成についても同様である。
また、上記第1および第2の実施の形態において、図10ないし図15のフローチャートに示す遊技制御処理を実行するにあたってはいずれも、ROM204にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAM206に読み込んで実行するようにしてもよい。図8、図16ないし図18、図22および図23のフローチャートに示す処理についても同様である。
ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
また、上記第1および第2の実施の形態においては、本発明をパチンコ機に適用した場合について説明したが、これに限らず、本発明の主旨を逸脱しない範囲で、パチスロ機、アミューズメントゲーム機その他の遊技機にも適用可能である。
101…遊技盤、 102a、102b…レール、 103…遊技領域、 104…図柄表示部、 105…始動入賞口、 106…入賞ゲート、 107…普通入賞口、 109…大入賞口、 108…回収口、 100…遊技制御装置、 200…主制御部、 202、302、402…CPU、 203、303、403…CPUコア、 203a…制御部、 203b、232…演算部、 203c、234、236…レジスタ、 204、304、404…ROM、 204a…記憶領域、 206、306、406…RAM、 208…セキュリティ検査回路、 210、212、310、312、410、412…I/F、 214…タイマ、 216、316、416…バス、 218…チェック値算出部、 230…アクセス制御装置、 231…入力部、 238…アクセス制御部、 240…検査ポート、 280…始動入賞口検出部、 282…ゲート検出部、 284…普通入賞口検出部、 286…大入賞口検出部、 288…大入賞口開閉部、 300…演出制御部、 308…VRAM、 314…演出関連デバイス群、 380…スピーカ、 382…音声制御部、 384…ランプ、 386…ランプ制御部、 400…賞球制御部、 414…賞球関連デバイス群、 480…払出部、 482…発射部