以下、図面を参照して本発明を実施するための形態について説明する。
<遊技機の基本構成>
図1は、本発明の実施の形態に係る遊技機の1つであるパチンコ遊技機1の外観構成を示す正面図である。また、図2は、図1に示すパチンコ遊技機1の電気的構成を示すブロック図である。
本実施の形態に係るパチンコ遊技機1は、遊技盤101を備えている。遊技盤101の図1において右下方であって、枠部材110の右下部には、遊技者によって操作され、発射部292(図2参照)を作動させるための操作ハンドル113が設けられている。操作ハンドル113は、遊技者側に突出する形状を呈している。操作ハンドル113は、発射部292を作動させて遊技球を発射させる発射指示部材114を備えている。発射指示部材114は、操作ハンドル113の外周部において、遊技者から見て右回りに回転可能に設けられている。発射部292は、発射指示部材114が遊技者によって直接操作されている場合に、遊技球を発射させる。公知の技術であるため説明を省略するが、操作ハンドル113には、遊技者が発射指示部材114を直接操作していることを検出するセンサなどが設けられている。
発射部292の作動によって発射された遊技球は、レール102a,102b間を上昇して遊技盤101の上部位置に達した後、遊技領域103内を落下する。遊技領域103には、複数の釘(図示せず)や、遊技球の落下方向を変化させる風車(図示せず)や、入球口が配設されており、遊技球を各種の方向に向けて落下させるようにしている。ここで、「入球口」は、いずれも後述する第1始動口105、第2始動口120、普通入賞口107、第1大入賞口109c、第2大入賞口129cの総称である。
遊技盤101の略中央部分には、図柄表示部104が配置されている。図柄表示部104は、例えば、液晶ディスプレイ(LCD)やプラズマディスプレイパネル(PDP)等のディスプレイを有している。図柄表示部104の下方には、遊技領域103に向けて打ち込まれた遊技球を受入れ可能な第1始動口105が配置されている。第1始動口105の下方には、第2始動口120が配置されている。第2始動口120は、一対の可動片(図示せず)が閉状態であるときは遊技球を受け入れることが不可能又は受け入れ困難となっており、この一対の可動片が開状態であるときは、第1始動口105よりも遊技球の受け入れが容易となる。
また、図柄表示部104の左側には、入賞ゲート106が配設されている。入賞ゲート106は、遊技球の通過を検出し、第2始動口120を一定時間だけ開放させる普通図柄の抽選を行うために設けられている。図柄表示部104の左側部や下方等には、複数の普通入賞口107が配設されている。各普通入賞口107に遊技球が入球すると、所定の賞球数(例えば、10個)の払い出しが行われる。遊技領域103の最下部には、どの入球口にも入球しなかった遊技球を回収する回収口108が設けられている。
図柄表示部104は、後述する演出制御部203(図2参照)から第1始動口105又は第2始動口120に遊技球が入球したことが報知されたときに、複数の装飾図柄の変動表示を開始し、所定時間経過後に当該装飾図柄の変動を停止させる。この停止時に特定図柄(例えば、「777」)が揃うと、遊技者は第1大当たり遊技(長当たり遊技)を実行する権利を獲得したこととなり、その後、第1大当たり遊技(長当たり遊技)が開始される。第1大当たり遊技(長当たり遊技)が開始されると、遊技領域103の下方に位置する第1大入賞口開閉装置109における第1大入賞口開閉扉109aが、一定の期間開放する動作を所定回数(例えば、15回)繰り返し、入球した遊技球に対応する賞球が払い出される。
一方、図柄表示部104における上記装飾図柄の停止時に上記特定図柄とは別の特定図柄(例えば、「737」)が揃うと、遊技者は第2大当たり遊技(短当たり遊技)を実行する権利を獲得したこととなり、その後、第2大当たり遊技(短当たり遊技)が開始される。第2大当たり遊技(短当たり遊技)が開始されると、第1大入賞口開閉装置109の右斜め上方に位置する第2大入賞口開閉装置129における第2大入賞口開閉扉129aが、第1大入賞口開閉扉109aの開閉動作に比して短い時間にて一定の期間開放する動作を所定回数(例えば、15回)繰り返し、入球した遊技球がある場合、これに対応する賞球が払い出される。
また、遊技盤101の遊技領域103の外周には、枠部材110が設けられ、開口部から遊技領域103が遊技者側に露出している。枠部材110は、遊技者側に突出する形状を呈している。枠部材110において、遊技領域103の左上部及び右下部には、演出ライト(ランプユニット)111a及び111bがそれぞれ設けられている。各演出ライト111a及び111bは、複数のライト112を備えている。各演出ライト111a及び111bは、上下駆動モータ(図示せず)でそれぞれ駆動されることにより、それぞれが備える複数のライト112から照射される光の方向を上下方向、すなわち、パチンコ遊技機1の正面にいる遊技者の頭部と腹部を結ぶ方向に平行な方向に変更可能に構成されている。
また、各ライト112は、各演出ライト111a及び111bを構成する回転駆動モータ(図示せず)で駆動されることにより、それぞれ所定半径を有する円の円周方向に移動する。上記構成により、各ライト112から照射された光を回転移動させつつ、各演出ライト111a及び111b全体から照射された光を上下移動させる演出を行うことができる。さらに、枠部材110の下部には、遊技球が供給される受け皿ユニット119が設けられている。この受け皿ユニット119には、貸し玉装置(図示せず)から貸し出される遊技球が供給される。
図1において、図柄表示部104の右側には、演出用の役物(以下、「演出役物」という)115が設けられている。演出役物115は、キャラクターとして人間の上半身(特に頭部)を模式的に表している。演出役物115は、キャラクターの瞼部116を開閉して、キャラクターが瞬きをするが如くに、瞼部116を上下方向に沿って移動可能に設けられている。また、演出役物115は、キャラクターの頭部を左右方向に移動可能に設けられている。
また、枠部材110において、操作ハンドル113の左側には、遊技者により操作される演出ボタン117が設けられている。演出ボタン117の操作は、例えば、遊技中における特定のリーチ演出に際し、演出ボタン117の操作を促すガイダンスが表示されている間だけ有効となる。
加えて、枠部材110には、演出効果音又は不正を知らしめる音響を出力するスピーカ277(図2参照)が組み込まれている。このスピーカ277は、高音・中音・低音の領域を出力できるタイプのものであり、通常演出時は高音・中音・低音をバランスよく出力するが、例えば、特別演出時又は不正等があった場合には、周りによく聞こえるように高音領域を高く出力するように制御される。
次に、本発明の実施の形態に係るパチンコ遊技機1の電気的構成について、図2に示すブロック図を参照して説明する。パチンコ遊技機1は、電気的な構成上は、制御手段200に、第1始動口検出部221等の各種検出手段や、図柄表示部104等の各種演出手段、役物作動装置231、払出部291、発射部292などが接続されて構成されている。制御手段200は、図2に示す例では、主制御部10と、演出制御部203と、賞球制御部204と、ランプ制御部205とから構成されている。
主制御部10は、CPU10aと、ROM10bと、RAM10cと、暗号化制御回路10gと、カウンタ回路(タイマ)(図示せず)から少なくとも構成されるワンチップマイコン10m等を備えている。CPU10aは、パチンコ遊技機1の遊技に係る基本動作を制御し、ROM10bに予め記憶されているプログラム(プログラムコード)に基づき、遊技内容の進行に伴う基本処理を実行する。ROM10bには、CPU10aがパチンコ遊技機1の遊技内容の進行に伴う基本処理を実行するためのプログラムコードが予め記憶されている。
RAM10cは、CPU10aがパチンコ遊技機1の遊技内容の進行に伴う基本処理を実行する際に行う演算処理において、データ等のワークエリアとして機能する。暗号化制御回路10gは、主制御部10の個体としての正当性(アイデンティティ)を認証する(以下、単に「個体認証」という)ために用いる検査値を取得し、検査値に対して暗号化処理を施して認証データを生成する。また、暗号化制御回路10gは、生成した認証データを演出制御部203へ送信する処理を制御する。なお、これら認証処理に関するものの詳細については後述する。また、カウンタ回路(タイマ)は、経過時間をカウントする。この主制御部10では、第1始動口105又は第2始動口120への遊技球の入球を契機として、大当たりの抽選を行うとともに、この抽選結果に基づいて、ROM10bに記憶されている演出に係わるコマンドの選択を行う。
主制御部10の入力側には、第1始動口検出部221と、第2始動口検出部225と、ゲート検出部222と、普通入賞口検出部223と、第1大入賞口検出部214と、第2大入賞口検出部224とが接続されている。第1始動口検出部221は、第1始動口105に遊技球が入球したことを検出して検出結果を主制御部10へ送信する。第2始動口検出部225は、第2始動口120に遊技球が入球したことを検出して検出結果を主制御部10へ送信する。ゲート検出部222は、入賞ゲート106を遊技球が通過したことを検出して検出結果を主制御部10へ送信する。普通入賞口検出部223は、普通入賞口107に入球した遊技球を検出して検出結果を主制御部10へ送信する。第1大入賞口検出部214は、第1大入賞口109cに入球した遊技球を検出して検出結果を主制御部10へ送信する。第2大入賞口検出部224は、第2大入賞口129cに入球した遊技球を検出して検出結果を主制御部10へ送信する。上記各検出部は、例えば、近接スイッチなどを用いて構成することができる。
また、この主制御部10の出力側には、役物作動装置231が接続されている。本実施の形態では、役物作動装置231は、第1大入賞口開閉扉109a及び第2大入賞口開閉扉129aをそれぞれ開閉させる第1大入賞口開閉ソレノイド109b及び第2大入賞口開閉ソレノイド129bと、第2始動口120を開閉させる第2始動口開閉ソレノイド120bとから構成されている。
役物作動装置231は、主制御部10によって制御され、長当たり遊技時に、第1大入賞口開閉ソレノイド109bを通電して第1大入賞口開閉扉109aを開放したり、短当たり遊技及び小当たり遊技時に、第2大入賞口開閉ソレノイド129bを通電して第2大入賞口開閉扉129aを開放したり、また、上記普通図柄の当選によって第2始動口開閉ソレノイド120bを通電して第2始動口120を開閉したりする。
演出制御部203は、CPU203aと、ROM203bと、RAM203cと、VRAM203d等を備えている。CPU203aは、主に遊技中における演出を制御し、ROM203bに予め記憶されているプログラム(プログラムコード)に基づき、主制御部10より送信される制御信号にて示された制御コマンドに基づいて演出の抽選及び演出処理を実行する。ROM203bには、CPU203aが演出の抽選及び演出処理を実行するためのプログラムコードと、過去の演出パターンとが予め記憶されている。また、ROM203bには、主制御部10に予め記憶された主制御部10固有の情報である検査値に対応する期待値が予め記憶されている。RAM203cは、CPU203aが演出の抽選及び演出処理を実行する際に行う演算処理等を実行する際に行う演算処理等のワークエリアとして機能する。VRAM203dには、図柄表示部104に表示させるための画像データが書き込まれる。
この演出制御部203は、主制御部10より送信される演出に係る制御コマンドを示す制御信号を受信すると、この制御信号にて示された制御コマンドに基づいて抽選を行い、演出背景パターン、リーチ演出パターン、登場キャラクター等の演出を確定するとともに、当該確定した演出の制御を行う。
また、演出制御部203の出力側には、図柄表示部104が接続されており、抽選によって決定された内容のとおりに、図柄表示部104に、例えば、図柄変動の演出表示を展開する。
そして通常、CPU203aがROM203bに記憶されたプログラムコードを読み込んで、背景画像表示処理、図柄画像表示及び変動処理、キャラクター画像表示処理など各種画像処理を実行し、必要な画像データをROM203bから読み出してVRAM203dに書き込む。背景画像、図柄画像、キャラクター画像は、表示画面上において図柄表示部104に重畳表示される。
すなわち、図柄画像やキャラクター画像は背景画像よりも手前に見えるように表示される。このとき、同一位置に背景画像と図柄画像が重なる場合、Zバッファ法など周知の陰面消去法により各画像データのZバッファのZ値を参照することで、図柄画像を優先してVRAM203dに記憶させる。
演出制御部203の入力側には、上記演出ボタン117が操作されたことを検出する演出ボタン検出部220が接続されている。また演出制御部203の出力側には、スピーカ277が接続されており、演出制御部203において確定したとおりに、音声が出力されるようにしている。
また演出制御部203の出力側には、ランプ制御部205を備えている。
ランプ制御部205は、演出制御部203より送信された制御信号にて示された制御コマンドに基づきROM205bから読み込んだプログラムを作動させて演出処理を実行するCPU205aと、上記プログラムコード及び各種演出パターンデータを記憶するROM205bと、CPU205aの演算処理時におけるデータのワークエリアとして機能するRAM205c等を備えている。ランプ制御部205は、ランプ262、演出ライト111a及び111b、演出役物作動装置254を制御する。演出役物作動装置254は、演出役物115等の、演出用の役物を作動させるモータやソレノイド等によって構成されている。
ランプ制御部205は、遊技盤101や台枠等に設けられている各種ランプ262に対する点灯制御等を行い、また、演出ライト111a及び111bをそれぞれ構成する複数のライト112に対する点灯制御等を行い、各ライト112からの光の照射方向を変更するためにモータに対する駆動制御等を行う。
また、ランプ制御部205は、演出制御部203より送信された制御信号にて示された制御コマンドに基づき、演出役物115を動作させる演出役物作動装置254のソレノイドや、瞼部116を動作させる演出役物作動装置254のモータに対する駆動制御等を行う。
賞球制御部204は、主制御部10と送受信可能に接続されている。賞球制御部204は、ROM204bに記憶されたプログラムコードに基づき、賞球制御を行う。この賞球制御部204は、ROM204bに記憶されたプログラムを作動して賞球制御の処理を実行するCPU204aと、CPU204aの演算処理時におけるデータのワークエリアとして機能するRAM204c等を備えている。
賞球制御部204は、接続される払出部291に対して、各入球口(第1始動口105、第2始動口120、普通入賞口107、第1大入賞口109c、第2大入賞口129c)に入球した遊技球に対応した賞球数を払い出す制御を行う。また、賞球制御部204は、発射部292に対する遊技球の発射の操作を検出し、遊技球の発射を制御する。発射部292は、遊技のための遊技球を発射するものであり、遊技者による遊技操作を検出するセンサ(図示せず)と、遊技球を発射させるソレノイド等(図示せず)を備えている。賞球制御部204は、発射部292のセンサにより遊技操作を検出すると、検出された遊技操作に対応してソレノイド等を駆動させて遊技球を間欠的に発射させ、遊技盤101の遊技領域103に遊技球を送り出す。
払出部291は、遊技球の貯留部から所定数を払い出すためのモータ等からなる。
ここで、上記構成の演出制御部203、賞球制御部204、及びランプ制御部205を総称して「周辺部30」とする。また、主制御部10と、演出制御部203と、賞球制御部204と、ランプ制御部205とは、それぞれ異なるプリント基板(例えば、主制御部10は主制御基板、演出制御部203は演出制御基板、賞球制御部204は賞球制御基板、ランプ制御部205はランプ制御基板)に搭載されている。これらのうち、演出制御基板、賞球制御基板、及びランプ制御基板を総称して「周辺基板」とする。なお、ランプ制御部205は、演出制御部203と同一のプリント基板上に搭載することもできる。また、賞球制御部204は、主制御部10と同一のプリント基板上に搭載することもできる。
<遊技機の認証に関する構成>
次に、上記構成のパチンコ遊技機1が不正防止のために有する認証機能を実現する手段について、図面を参照しながら説明する。本実施の形態に係るパチンコ遊技機1の認証機能は、周辺部30が主制御部10に対する個体認証を行うことによって実現される。なお、本実施の形態では、周辺部30のうち演出制御部203に主制御部10を認証する機能が備えられていることとして説明する。
具体的には、主制御部10が保持する固有の情報を検査値とし、演出制御部203に予め記憶されている主制御部10固有の情報に対応する情報を期待値として、検査値と期待値とが一致すると主制御部10に対する個体認証が成功したと判断される。また、主制御部10は、認証処理を実行するに際して、検査値を生成し演出制御部203へ送信するが、送信前に暗号鍵を用いて検査値に暗号化処理を施す。演出制御部203は、暗号化された検査値に対して復号化処理を施して検査値を抽出する。本実施の形態では、検査値に対して暗号化処理を施して得られたデータを「認証データ」という。また、検査値に対する暗号化処理に用いる暗号鍵、及び認証データに対する復号化処理に用いる復号鍵を総称して「鍵データ」という。
図3は、本発明の実施の形態に係るパチンコ遊技機1を構成する主制御部10の認証処理に関する電気的構成を示すブロック図である。主制御部10は、メインCPUコア500と、データ記憶部510と、送信部520と、暗号化部530と、パルス発生部540と、内部バス550とを少なくとも備えている。以下、メインCPUコア500、データ記憶部510、送信部520、暗号化部530、パルス発生部540、又は内部バス550を総称して「主制御部10の構成部」という。
メインCPUコア500は、パチンコ遊技機1の認証処理の進行に伴う基本動作を制御する。メインCPUコア500は、データ記憶部510に記憶され予め取り決められた認証処理に関する処理内容や手順を記述したプログラムコードに基づいて、認証処理を進行させる際に行う各種演算処理を実行する。例えば、メインCPUコア500は、認証処理に関する制御コマンドを実行し、主制御部10の認証処理に係る他の回路に指示し認証処理を制御する。なお、メインCPUコア500が有する機能を実現する手段は、例えば、図2に示すCPU10aの一部から構成することができる。
データ記憶部510には、メインCPUコア500がパチンコ遊技機1にて認証処理を実行するための認証処理に関するプログラムコードが予め記憶されている。また、データ記憶部510には、主制御部10に対する個体認証を行うために用いる検査値が記憶されている。データ記憶部510は、メインCPUコア500や暗号化部530の読み出し指示に従って、認証処理に関するプログラムコードや検査値を転送する。ここで、「転送」とは、主制御部10の各構成部間のデータや信号の移動を意味する。また、「受け渡し」とは、主制御部10の各構成部内のデータや信号の移動を意味する。また、「送信」とは、例えば主制御部10の外部(例えば、演出制御部203)へのデータや信号の伝送を意味する。なお、データ記憶部510が有する機能を実現する手段は、例えば、図2に示すROM10bの一部から構成することができる。
送信部520は、メインCPUコア500や暗号化部530から転送された制御コマンドやデータ等を演出制御部203へ送信するためのインターフェイスの役割を果たす。例えば、送信部520は、メインCPUコア500が認証処理に関する制御コマンドを実行して演出制御部203に認証処理を実行させる際に、メインCPUコア500から認証処理に関する制御コマンドに対応した制御コマンドデータを受け取る。そして送信部520は、受け取った制御コマンドデータを制御信号に変換し演出制御部203へ送信する。なお、送信部520が有する機能を実現する手段は、上記変換機能を有する公知の入出力装置から構成することができる。但し、主制御部10から演出制御部203への一方向のみ伝送可能となっている。
なお、制御信号は、制御コマンドの内容を表す制御コマンドデータに誤り検出符号等を付加して構成されたデータを電気信号に変換したものを意味するが、以下、「制御コマンド」という言葉には、演出制御部203等への制御命令の意味だけではなく、制御コマンドデータや制御信号の意味も含まれるものとする。また、制御信号を演出制御部203等へ送信することを単に「制御コマンドを送信する」という。また、「制御コマンドを書き込む」とは、制御コマンドデータのみを書き込むことに限定されず、制御信号を構成する制御コマンドデータ以外のデータの書き込みも含まれているものとする。
暗号化部530は、いわゆるハードウェアであって、自身が保持するアルゴリズムに従って検査値を暗号化する際の暗号鍵として鍵データを生成するとともに、データ記憶部510より転送された検査値を暗号化して認証データを生成する。そして、暗号化部530は、生成した認証データを予め取り決められた所定のタイミングによって送信部520へ転送し、演出制御部203へ送信させる。また、暗号化部530は、メインCPUコア500からの読み出し指示に従って、生成した鍵データをメインCPUコア500に転送する。なお、暗号化部530が有する機能を実現する手段は、例えば、図2に示す暗号化制御回路10gから構成することができる。
パルス発生部540は、メインCPUコア500、送信部520、及び暗号化部530に対してクロック信号を送る。パルス発生部540と接続されたメインCPUコア500等は、受け取ったクロック信号を基に互いの動作を同期させている。また、メインCPUコア500等は、パルス発生部から受け取ったクロック信号をカウントして割込処理等を行う際のタイマ機能を保有している。パルス発生部540が有する機能を実現する手段は、公知のクロックパルス発生装置から構成することができる。内部バス550は、メインCPUコア500と暗号化部530とのデータの転送など、主制御部10を構成する構成要素が互いに各種データや信号をやり取りするための経路である。内部バス550は、アドレスバス及びデータバスの機能を少なくとも含み、内部バス550が有する機能を実現する手段は、公知の信号線から構成することができる。
次に、認証処理時における主制御部10の各構成部の処理について説明する。図4は、図3に示した主制御部10の構成を詳細に説明するためのブロック図である。
パチンコ遊技機1の電源が投入され、メインCPUコア500が初期処理を行った後、主制御部10を構成する暗号化部530は、鍵データの生成を開始する。暗号化部530が鍵データの生成を開始するタイミングは、メインCPUコア500からの指示によらず、暗号化部530が保持するアルゴリズムで予め設定されている。具体的には、暗号化部530を構成する鍵決定部531は、例えば、乱数生成回路(図示せず)や乱数生成アルゴリズムなどの自身が保持する乱数生成手段によって生成された値を鍵データとする。
なお、鍵決定部531は、乱数を用いないで鍵データを決定するようにしてもよい。例えば、鍵決定部531は、鍵データを決定するためのデータテーブルを予め保持させておき、鍵データを生成するタイミング等で鍵決定部531がそのテーブルから予め定めた規則に応じて鍵データを取得するようにしてもよい。また、鍵決定部531は、一度に一つの鍵データを生成して一意に決定してもよいし、一度に複数の鍵データを生成し複数の鍵データの中から一つの鍵データを選択し、今回の認証処理で使用する鍵データを決定してもよい。但し、今回の認証処理で使用する鍵データを決定するタイミングは、後述するメインCPUコア500への鍵データの出力よりも前とする。
続いて、暗号化部530は、主制御部10に対する個体認証を行うために用いる検査値をデータ記憶部510から取り込む。具体的には、暗号化部530を構成する暗号回路533が、データ記憶部510を構成するデータ記憶回路511が有する検査値を、内部バス550及びデータ入出力部532を介して転送させる。そして、暗号回路533は、データ入出力部532に書き込まれた検査値を、暗号回路533自身が保持する検査値用記憶領域に記憶させる。検査値は、主制御部10が保持する固有の情報であれば特に限定されない。例えば、メインCPUコア500に固有に付与されている識別番号(ID)の他、データ記憶回路511に記憶されている特定のアドレスに記憶されているデータ(制御コマンドデータ、命令コード及び固定データ等)のチェックサム等が考えられる。
暗号回路533は、取り込んだ検査値を検査値用記憶領域から読み出し、予め鍵決定部531で生成した鍵データを用いて暗号化処理を施し、認証データを生成する。暗号化処理の演算方式(以下、「暗号化方式」という)は、主制御部10と演出制御部203との間で予め取り決めてあれば、特に限定されない。暗号化方式は、例えば、検査値と鍵データとを用いた四則演算又は論理演算等を行って所定のデータ長を有する演算データを得る処理方式、これらの四則演算又は論理演算等により得られた演算データのビット配列を並び変える処理方式、上記演算データのビットをシフト又はローテイトする処理方式、検査値を構成する複数のビットを取り出して所定の規則に従って並べて1つのデータを生成する処理方式などである。
暗号回路533は、認証データを生成すると、自身の認証データ用記憶領域に記憶し、演出制御部203へ認証データを送信するタイミングまで保持しておく。そして、暗号回路533は、演出制御部203への認証データの送信タイミングを設定する。認証データの送信タイミングは、メインCPUコア500からの指示によらず、暗号化部530が保持するアルゴリズムで予め設定されている。暗号回路533は、認証データの送信タイミングになると、データ入出力部532及び内部バス550を介して主制御部10を構成する送信部520へ認証データを転送し、演出制御部203へ送信させる。具体的には、暗号回路533は、認証データの送信タイミングとなると、生成した認証データをデータ入出力部532へ受け渡す。データ入力部532は、受け渡された認証データを直ちに内部バス550を介して送信部520を構成するデータ入力部522へ書き込む。なお、鍵決定部531が鍵データを生成するタイミングと暗号回路533が検査値を取得するタイミングとは、暗号回路533が認証データをデータ入出力部532へ受け渡す前であれば特に制限はない。また、認証データの送信タイミングや送信部520の構成については後述する。
一方、主制御部10を構成するメインCPUコア500は、演出制御部203に認証処理を開始させるトリガとなる鍵コマンドを実行する。具体的には、メインCPUコア500を構成する処理部501は、認証処理に関するプログラムコードに従って、鍵コマンドの実行するために必要な鍵データを取得する。より詳細には、メインCPUコア500を構成する処理部501は、鍵決定部531で決定された鍵データを取得するために、メインCPUコア500を構成するデータ入力出部502、内部バス550、及びデータ入出力部532を介して、鍵決定部531に対して鍵データの読み出し指示を行う。鍵決定部531は、処理部501からの鍵データの読み出し指示を受けると、予め決定した鍵データをデータ入力出部532へ受け渡す。データ入出力部532は、受け渡された鍵データを直ちに内部バス550を介してデータ入出力部502へ出力する。データ入出力部502は、出力された鍵データを処理部501に受け渡す。処理部501は、受け取った鍵データを用いて鍵コマンドを生成して、直ちに内部バス550及びデータ入出力部502を介して送信部520を構成するデータ入力部522へ書き込む。なお、鍵コマンドの詳細とその送信タイミングについては後述する。
送信部520は、主制御部10の各構成部からデータを転送されると、受け取ったデータを直ちに演出制御部203へ送信する。例えば、メインCPUコア500から内部バス550を介して送信部520を構成するデータ入力部522へ制御コマンドが書き込まれると、データ入力部522は、書き込まれた制御コマンドを直ちに送信回路521へ受け渡す。送信回路521は、受け渡された制御コマンドを送信データとして、直ちに演出制御部203へ送信する。
なお、主制御部10の各構成部がデータ入力部522へデータを書き込む際には、内部バス550内で他のデータとの衝突が生じないように、データ入力部522へ書き込むデータと同時に各構成部から書き込み信号が出力される。内部バス550は、出力された書き込み信号を通じて内部バス550を通るデータの割り当てを行う。書き込み信号を出力していない他の構成部は、内部バス550に通じる書き込み信号を参照することで、何のデータがデータ入力部522へ書き込まれているのかを知ることができる。例えば、メインCPUコア500からデータ入力部522へ制御コマンドが書き込まれる際に、その旨を示す書き込み信号が出力されると、暗号化部530は、当該書き込み信号を参照して現在はメインCPUコア500が制御コマンドをデータ入力部522へ書き込んでいることを知ることができる。
一方、送信部530は、内部バス550を通じてデータ入力部522へ書き込むデータとその旨を示す書き込み信号とが入力されると、内部バス550から当該データを読み込んでデータ入力部522に書き込む。そして、送信部530は、データ入力部522にデータが書き込まれると、書き込まれたデータを送信回路521に受け渡し、送信データを構成して直ちに演出制御部203へ送信する。従って、例えば、暗号化部530は、メインCPUコア500の制御コマンドの書き込み信号を参照することによって、メインCPUコア500の制御コマンドの送信タイミングを知ることができる。
次に、主制御部10から演出制御部203に対して送信される制御コマンドの種別について説明する。図5は、本発明の実施の形態に係るパチンコ遊技機1を構成する主制御部10が出力する制御コマンドの種別の一例を示す図であって、図5に示された制御コマンドの種別に限定されるものではない。主制御部10から演出制御部203へ送信される制御コマンドは、1コマンドが2バイトのデータで構成されており、制御コマンドの分類を識別するための1バイトのMODEの情報と、各制御コマンドの詳細な制御内容を示す1バイトのDATAの情報とから構成されている。なお、制御コマンドには一般的なデータ通信で伝送される信号と同様に、BCC(Block Check Character)等が付加されている場合もある。BCCは、データ伝送の過程で発生するデータ誤りなどをチェックするために、伝送ブロックごとに付加される誤り検出符号である。
MODEの情報とDATAの情報は鍵コマンド以外の通常の遊技処理に用いられる制御コマンド(以下、通常の制御コマンドという)については、データ記憶部510のデータ記憶回路511に予め記憶されている。鍵コマンドの場合、「MODE」の情報は、通常の制御コマンドと同様である(例えば、図5では「E8H」に割り当てられている)。一方、「DATA」の情報は、暗号化部530を構成する鍵決定部531から、メインCPUコア500への鍵データ出力よりも前に決定された1バイトの鍵データ(例えば、図5では「○×H」)が使用される。なお、鍵データは、鍵決定部531において予め設定されたタイミングで適宜更新される。よって、鍵コマンドを構成する「DATA」の情報の種類は、少なくとも鍵データの更新時に鍵データが取り得る値の分は少なくとも用意されており、鍵データの更新の度に、例えば、「○×H」→「△○H」→「□×H」等のように適宜変更される。
「電源投入コマンド」は、パチンコ遊技機1の電源が投入されたことを示すものであり、「MODE」が「E1H」で設定され、「DATA」が「00H」に設定されている。
この電源投入コマンドは、パチンコ遊技機1の電源が投入されたときに演出制御部203へ送信される。具体的には、パチンコ遊技機1の電源が投入されたとき、主制御部10を構成するメインCPUコア500の処理部501は、送信部520を構成するデータ入力部522に対して書き込み信号を出力するとともに、電源投入コマンドをデータ入力部522の記憶領域に書き込む。その後、データ入力部522は、書き込まれた電源投入コマンドを直ちに送信回路521に受け渡す。送信回路521は、受け渡された電源投入コマンドを送信データとして、直ちに演出制御部203へ送信する。このように、制御コマンドを演出制御部203へ送信するに際して、送信部520を構成するデータ入力部522に書き込み信号を出力するとともに、制御コマンドをデータ入力部522の記憶領域に書き込み、送信回路521へ受け渡して送信データとすることを、以下、単に「制御コマンドをセットする」という。
「客待ちデモコマンド」は、パチンコ遊技機1が非遊技状態における客待ちのデモ画面を表示させることを示すものであり、「MODE」が「E2H」で設定され、「DATA」が「00H」に設定されている。
この客待ちデモコマンドは、電源投入時に表示される初期演出表示としてデモが開始されてから、又は後述する未抽選入賞回数がゼロとなりデモが開始されてから、所定時間経過したときに演出制御部203へ送信される。具体的には、上記デモが開始され所定時間経過後に、客待ちデモコマンドが送信部520にセットされる。その後、直ちに送信部520セットされている客待ちデモコマンドが演出制御部203へ送信されることとなる。
「図柄変動パターンコマンド」は、パチンコ遊技機1の始動口(第1始動口105又は第2始動口125)に遊技球が入賞し、図柄表示部104にて入賞抽選結果に応じた図柄の変動態様を示すものであり、「MODE」が「E3H」で設定され、各種の変動パターンに合わせてDATAの情報が設定されている。
この図柄変動パターンコマンドは、入賞抽選時の大当たり判定後の各種の図柄変動パターンの決定時に演出制御部203へ送信される。具体的には、入賞抽選時に取得した大当たり判定用乱数が予め設定された大当たり判定テーブルのいずれかの乱数値と対応するかが判断され、各種の図柄変動パターンが決定されて図柄変動が開始されたときに、決定された図柄変動パターンに対応する図柄変動パターンコマンドが送信部520にセットされる。その後、直ちに送信部520にセットされている図柄変動パターンコマンドが演出制御部203へ送信されることになる。
「図柄停止コマンド」は、図柄変動を停止表示させることを示すものであり、「MODE」が「E4H」で設定され、「DATA」が「00H」に設定されている。
この図柄停止コマンドは、図柄変動が開始され図柄変動時間が経過した後に演出制御部203へ送信される。具体的には、図柄変動が開始され後、予め設定された図柄変動時間が経過したため図柄変動を停止させるときに、図柄停止コマンドが送信部520にセットされる。その後、直ちに送信部520にセットされている図柄停止コマンドが演出制御部203へ送信されることになる。
「大当たり開始コマンド」は、各種の大当りが開始することを示すものであり、「MODE」が「E5H」で設定され、大当たりの種別に合わせてDATAの情報が設定されている。
この大当たり開始コマンドは、各種の大当りが開始するときに、大当たりの種別に対応する大当たり開始コマンドが演出制御部203へ送信される。具体的には、大当たり遊技処理の開始のときに、大当たりの種別に対応する大当たり開始コマンドが送信部520にセットされる。その後、直ちに送信部520にセットされている大当たり開始コマンドが演出制御部203へ送信されることになる。
「大当たりコマンド」は、各種大当りの種別に合わせた大当たりのラウンド数を示すものであり、「MODE」が「E6H」で設定され、大当たりのラウンド数に合わせてDATAの情報が設定されている。
この大当たりコマンドは、大当りラウンドが開始されるときに、開始されたラウンド数に対応する大当たりコマンドが演出制御部203へ送信される。具体的には、第1大入賞口開閉扉109a又は第2大入賞口開閉扉129aを開放させるときに、開放させるときのラウンド数に対応する大当たりコマンドが送信部520にセットされる。その後、直ちに送信部520にセットされている大当たりコマンドが演出制御部203へ送信されることになる。
「大当たり終了コマンド」は、各種の大当りが終了したことを示すものであり、「MODE」が「E7H」で設定され、大当たりの種別に合わせてDATAの情報が設定されている。
この大当たり終了コマンドは、各種の大当りが終了するときに、大当たりの種別に対応する大当たり終了コマンドが演出制御部203へ送信される。具体的には、大当り遊技終了処理の開始のときに、大当たりの種別に対応する大当たり終了コマンドが送信部520にセットされる。その後、直ちに送信部520にセットされている大当たり終了コマンドが演出制御部203へ送信されることになる。
「鍵コマンド」は、演出制御部203にて認証処理を開始させ認証データを復号化することを示すものであり、「MODE」が「E8H」で設定され、鍵決定部531で決定された各種の鍵データに合わせてDATAの情報が設定されている。
この鍵コマンドは、演出制御部203に認証処理を開始させるタイミングに演出制御部203へ送信される。演出制御部203に認証処理を開始させるタイミングは基本的に任意に設定することができる。但し、演出制御部203は、認証処理の他に通常の遊技進行に伴って演出処理を実行する必要があるため、演出制御部203における認証処理の処理負荷はできるだけ抑制することが望ましい。よって、例えば、電源投入時や客待ちデモ開始時に、演出制御部203に対して認証処理を開始させることが考えられる。
例えば、鍵コマンドの送信タイミングを電源投入時と設定した場合、メインCPUコア500は、電源投入コマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得された鍵データを用いて鍵コマンドを構成し、送信部520にセットする。その後、直ちに送信部520にセットされている鍵コマンドが演出制御部203へ送信されることになる。
また、例えば、鍵コマンドの送信タイミングを客待ちデモ開始時と設定した場合、鍵コマンドは、客待ちデモコマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得された鍵データを用いて構成され、送信部520にセットされる。その後、直ちに送信部520にセットされている鍵コマンドが演出制御部203へ送信されることになる。以下、本実施の形態では、電源投入時に鍵コマンドを送信することとして説明する。
<遊技機の動作処理>
次に、上記構成のパチンコ遊技機1の動作処理について、図面を参照して説明する。以下、主制御部10による演出制御部203への制御コマンドの送信を含む動作処理について、図6に示すフローチャートを参照して説明する。主制御部10の構成部であるメインCPUコア500は、パルス発生部540のクロックパルス発生回路541より出力されるクロック信号に基づいて、所定の周期(例えば4ミリ秒)ごとに制御コマンドの実行等の処理を行う。
ステップS1において、まず、主制御部10を構成するメインCPUコア500は、パチンコ遊技機1の電源投入に伴う初期設定処理を実行した後、ステップS2へ進む。なお、パチンコ遊技機1に電源が投入された際には、周辺基板が主制御基板から受信する制御コマンドを確実に取り込むために、周辺基板が立ち上がってRAM領域の初期化を行い、待機状態となった後、主制御基板が立ち上がるように構成されている。メインCPUコア500は、初期設定処理として、例えば、スタックポインタに予め決められた所定値を設定するとともに、演出制御部203が待機状態になることを待つために、一定時間(例えば、約1秒間)だけ待機する。
ステップS2において、メインCPUコア500は、演出制御部203に図5に示す電源投入コマンドを送信部520にセットし、演出制御部203へ送信する。電源投入コマンドをセットした後、メインCPUコア500は、ステップS3へ進む。電源投入コマンドを受信すると、演出制御部203は、図柄表示部104やランプ制御部205のそれぞれに対して電源投入時の演出用の制御コマンド、具体的には、遊技機が非遊技状態における客待ちのデモ画面を表示するための客待ちデモコマンド、あるいは、ランプの点灯等を行うための制御コマンドを送信する。
なお、電源投入コマンドは、電源投入後に電源投入に伴う処理を実行させるための制御コマンドを示し、各制御基板が立ち上がった後に、主制御部10から演出制御部203へ送信される制御コマンドであって、電源投入後の立ち上げ時における遊技を制御するための初期制御情報、例えば、制御モード、バックアップデータ等を送信するための制御コマンド、あるいは初期演出表示の制御を行うための制御コマンド、各種のデモ表示を開始させるための制御コマンドである。また、この電源投入コマンドは遊技機のリセットボタンを押圧したときに実行される、上記制御モード、バックアップデータ等を送信するための制御コマンドも含む。
ここで、メインCPUコア500は、鍵コマンドの送信タイミングを電源投入時と設定した場合、ステップS2の後にパルス発生部540からのクロック信号に基づいて割込処理を行う。電源投入コマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得した鍵データを用いて鍵コマンドを構成し、送信部520にセットする。その後、直ちに送信部520にセットされている鍵コマンドが演出制御部203へ送信され、演出制御部203にて認証処理が開始される。なお、認証処理の詳細については後述する。
ステップS3において、メインCPUコア500は、RAM10cに記憶されている未抽選入賞回数データを参照して、未抽選入賞回数が0回であるか否かを判断する。ここで、未抽選入賞回数とは、第1始動口検出部221又は第2始動口検出部225で検出された遊技球の数(入賞回数)から、当該遊技球の入球に対応する抽選が行われた回数(既抽選回数)を減じた数である。ステップS3の判断結果が「NO」の場合、すなわち、未抽選入賞回数が0回でない場合には、メインCPUコア500は、後述するステップS10へ進む。一方、ステップS3の判断結果が「YES」の場合、すなわち、未抽選入賞回数が0回である場合には、メインCPUコア500は、ステップS4へ進む。
ステップS4において、メインCPUコア500は、電源投入時のデモが開始されてから経過した時間を計測した後、ステップS5へ進む。
ステップS5において、メインCPUコア500は、電源投入時のデモが開始されてから所定時間が経過したか否かを判断する。ステップS5の判断結果が「YES」の場合、すなわち、電源投入時のデモが開始されてから所定時間が経過した場合には、メインCPUコア500は、ステップS6へ進む。なお、上記電源投入時のデモを開始するための制御コマンドは、客待ちデモコマンドとしてもよい。
ステップS6において、メインCPUコア500は、客待ちデモコマンドを送信部520にセットし、演出制御部203へ送信した後、ステップS7へ進む。客待ちデモコマンドを受信すると、演出制御部203は、図柄表示部104やランプ制御部205のそれぞれに対して客待ちデモ演出用の制御コマンドを送信する。
一方、ステップS5の判断結果が「NO」の場合、すなわち、電源投入時のデモ(又は客待ちデモ)が開始されてから所定時間が経過していない場合には、メインCPUコア500は、ステップS7へ進む。
ステップS7において、メインCPUコア500は、第1始動口検出部221で第1始動口105への遊技球の入球が検出されたか又は第2始動口検出部225で第2始動口120への遊技球の入球が検出されたか否かを判断する。ステップS7の判断結果が「YES」の場合、すなわち、第1始動口検出部221で第1始動口105への遊技球の入球が検出されたか又は第2始動口検出部225で第2始動口120への遊技球の入球が検出された場合には、メインCPUコア500は、ステップS8へ進む。
一方、ステップS7の判断結果が「NO」の場合、すなわち、第1始動口検出部221で第1始動口105への遊技球の入球が検出されず、かつ、第2始動口検出部225で第2始動口120への遊技球の入球が検出されない場合には、メインCPUコア500は、ステップS4へ戻り、ステップS4以降の処理を繰り返す。
ステップS8において、メインCPUコア500は、客待ちデモ(又は電源投入時のデモ)が開始されてから計測していた時間をクリアした後、ステップS9へ進む。
ステップS9において、メインCPUコア500は、未抽選入賞回数に1を加算する。なお、第1始動口検出部221又は第2始動口検出部225で複数の遊技球の入球が検出された場合、このステップS9では、メインCPUコア500は、未抽選入賞回数に入球に相当する数を加算する。そして、メインCPUコア500は、ステップS10へ進む。
ステップS10において、メインCPUコア500は、予め用意された乱数カウンタ(例えば、0〜255をカウント)から1つの大当たり判定用乱数を無作為に取得した後、ステップS11へ進む。
ステップS11において、メインCPUコア500は、未抽選入賞回数から1を減算した後、ステップS12へ進む。
ステップS12において、メインCPUコア500は、例えば、予めデータ記憶部510に記憶されている大当り判定データテーブルを参照して、ステップS10の処理で取得した大当たり判定用乱数が、この大当り判定データテーブルに記憶されている大当たりの乱数値であるか否かを判断する。また、ステップS12では、メインCPUコア500は、取得した大当たり判定用乱数がはずれの乱数の場合には、例えば、大当り判定データテーブルを参照して、さらに「リーチ有りのはずれ」又は「リーチ無しのはずれ」であるかについても判断する。ステップS12の判断結果が「YES」の場合、すなわち、ステップS10で取得した大当たり判定用乱数が予め定められた大当たり乱数である場合には、メインCPUコア500は、ステップS13へ進む。
ステップS13において、メインCPUコア500は、例えば、大当たりの種別コード(通常当りか確率変動当りか等)、リーチ有り、図柄変動時間、等の「MODE]の情報を含む図柄変動コマンド(大当たりリーチコマンド)を送信部520にセットし、演出制御部203へ送信した後、ステップS14へ進む。
ステップS14において、メインCPUコア500は、図柄変動時間が経過したか否かを判断する。ステップS14の判断結果が「NO」の場合、すなわち、図柄変動時間が経過していない場合には、メインCPUコア500は、同判断を繰り返す。そして、図柄変動時間が経過すると、ステップS14の判断結果が「YES」となり、メインCPUコア500は、ステップS15へ進む。
ステップS15において、メインCPUコア500は、図柄停止コマンドを送信部520にセットし、演出制御部203へ送信した後、ステップS16へ進む。
ステップS16において、メインCPUコア500は、大当たり開始コマンドを送信部520にセットし、演出制御部203へ送信した後、ステップS17へ進む。
ステップS17において、メインCPUコア500は、大当たり中の各ラウンドに対応するコマンド(大当たりコマンド)を送信部520にセットし、演出制御部203に順次送信し、すべてのラウンドの大当たりコマンドの送信を終了した後、ステップS18へ進む。
ステップS18において、メインCPUコア500は、演出制御部203に大当たり終了コマンドを送信部520にセットし、演出制御部203へ送信した後、ステップS22へ進む。
一方、ステップS12の判断結果が「NO」の場合、すなわち、ステップS10の処理で取得した大当たり判定用乱数が予め定められた大当たり乱数でない場合には、メインCPUコア500は、ステップS19へ進む。
ステップS19において、メインCPUコア500は、「リーチ有りのはずれ」の場合には「リーチ有りのはずれ」に対応する図柄変動パターンコマンド(はずれリーチコマンド)を、「リーチ無しのはずれ」の場合には「リーチ無しのはずれ」に対応する図柄変動パターンコマンド(はずれコマンド)を送信部520にセットし、演出制御部203へ送信した後、ステップS20へ進む。
ステップS20において、メインCPUコア500は、図柄変動時間が経過したか否かを判断する。ステップS20の判断結果が「NO」の場合、すなわち、図柄変動時間が経過していない場合には、メインCPUコア500は、同判断を繰り返す。そして、図柄変動時間が経過すると、ステップS20の判断結果が「YES」となり、メインCPUコア500は、ステップS21へ進む。
ステップS21において、メインCPUコア500は、演出制御部203に図柄停止コマンドを送信部520にセットし、演出制御部203へ送信した後、ステップS22へ進む。
ステップS22において、メインCPUコア500は、パチンコ遊技機1の電源がオフにされたか否かを判断する。ステップS22の判断結果が「NO」の場合、すなわち、パチンコ遊技機1の電源がオフにされていない場合には、メインCPUコア500は、ステップS3へ戻り、ステップS3以降の処理を繰り返す。
一方、ステップS22の判断結果が「YES」の場合、すなわち、パチンコ遊技機1の電源がオフにされた場合には、メインCPUコア500は、ステップS23へ進む。
ステップS23において、メインCPUコア500は、演出制御部203に終了処理コマンドを送信部520にセットし、演出制御部203へ送信した後、本フローチャートによる処理を終了する。
以下、主制御部10及び演出制御部203の間で行う認証処理の手順について説明する。
図7は、主制御部10による認証処理の手順の一例を示すフローチャートである。
ステップS61において、主制御部10に電源が投入され初期設定処理を行った後、暗号化部530は、メインCPUコア500からの指示によらず、自身が保持するアルゴリズムに従って今回の認証処理に使用する鍵データを決定する。暗号化部530を構成する鍵決定部531は、例えば、乱数生成手段等によって生成された乱数値を鍵データとして用いることができる。鍵決定部531は、決定した鍵データを自身の鍵データ用記憶領域に書き込むとともに、暗号回路533へ受け渡す。暗号回路533は、受け取った鍵データを自身の鍵データ用記憶領域に書き込む。
ステップS62において、暗号化部530は、データ記憶部510に記憶されている検査値を取り込み、検査値に暗号化処理を施し認証データを生成する。具体的には、暗号化部530を構成する暗号回路533は、データ記憶部510を構成するデータ記憶回路511の特定のアドレスに記憶されているデータをデータ入出力部532及び内部バス550を介して読み出す。そして、暗号回路533は、読み出した検査値を自身の検査値用記憶領域に記憶し検査値を取り込む。
ステップS63において、暗号化部530は、取り込んだ検査値に対して暗号化処理を施し認証データを生成する。具体的には、暗号回路533は、ステップ61で鍵決定部531から受け取った鍵データを自身の鍵データ用記憶領域から読み出し、検査値に対して読み出した鍵データを予め設定された暗号化方式で演算する。暗号回路533は、この演算結果を認証データとして認証データ用記憶領域に記憶し、認証データの送信タイミングまで保持しておく。
ステップS64において、メインCPUコア500は、電源投入後の初期設定処理を実行した後、制御コマンド(電源投入コマンド)を演出制御部203へ送信するべく、送信部520を構成するデータ入力部522に書き込む。具体的には、メインCPUコア500の処理部501は、データ記憶回路511に記憶されている制御コマンド(電源投入コマンド)を、データ入出力部502及び内部バス550を介して取り込む。そして、処理部501は、取り込んだ制御コマンド(電源投入コマンド)をデータ入力部522に書き込むための書き込み信号を、データ入出力部502を介して内部バス550へ出力する。そして、処理部501は、制御コマンド(電源投入コマンド)をデータ入出力部502及び内部バス550を介してデータ入力部522の記憶領域に書き込んで制御コマンド(電源投入コマンド)をセットする。
ステップS65において、送信部520は、データ入力部522に制御コマンド(電源投入コマンド)が書き込まれると、直ちに演出制御部203へ送信する。具体的には、送信部520を構成するデータ入力部522は、ステップS64で書き込まれた制御コマンド(電源投入コマンド)を送信回路521に受け渡す。送信回路521は、受け渡された制御コマンド(電源投入コマンド)を直ちに演出制御部203へ送信する。
ステップS66において、暗号化部530は、メインCPUコア500が制御コマンド(電源投入コマンド)をデータ入力部522に書き込んでから特定時間経過後に認証データを演出制御部203へ送信するとして、認証データの送信タイミングを設定する。具体的には、暗号回路533は、メインCPUコア500がステップS64で制御コマンド(電源投入コマンド)をデータ入力部522に書き込む際に出力される書き込み信号を参照する。そして、暗号回路533は、書き込み信号の出力から特定時間(例えば2ミリ秒)経過後のタイミングで、ステップS63で生成した認証データをデータ入出力部522の記憶領域に書き込むように設定する。
ステップS67において、暗号化部530は、特定時間経過後、認証データをデータ入力部522に書き込む。
ステップS68において、送信部520は、データ入力部522に認証データに書き込まると直ちに演出制御部203へ送信する。具体的には、送信部520を構成するデータ入力部522は、ステップS67で書き込まれた認証データを送信回路521に受け渡す。送信回路521は、受け渡された認証データを直ちに演出制御部203へ送信する。なお、暗号回路533が、制御コマンドの書き込み信号から特定時間経過した後に、認証データをデータ入出力部522に書き込むタイミングについては、後述する。
また、メインCPUコア500は、所定の周期(例えば4ミリ秒)ごとに制御コマンドの実行を行う。メインCPUコア500は、制御コマンド(電源投入コマンド)の送信から例えば4ミリ秒経過した後、鍵コマンドの実行を行う。具体的には、以下のステップS69〜S71の処理である。
ステップS69において、まず、メインCPUコア500の処理部501は、暗号化部530の鍵決定部531に対して鍵データの読み出し指示を行う。
ステップS70において、鍵決定部531は、処理部501からの鍵データの読み出し指示を受けると、ステップS61で決定した鍵データを鍵データ用記憶領域から読み出し、データ入力出部532及び内部バス550を介してメインCPUコア500のデータ入出力部502へ出力する。データ入出力部502は、出力された鍵データを処理部501に受け渡す。
ステップS71において、処理部501は、受け取った鍵データを用いて鍵コマンドを生成して、直ちにデータ入出力部502及び内部バス550を介してデータ入力部522の記憶領域に書き込んで、鍵コマンドをセットする。
ステップS72において、送信部520は、データ入力部522に鍵コマンドが書き込まれると、直ちに演出制御部203へ送信する。具体的には、送信部520を構成するデータ入力部522は、ステップS71で書き込まれた鍵コマンドを送信回路521に受け渡す。送信回路521は、受け渡された鍵コマンドを直ちに演出制御部203へ送信する。なお、処理部501は、鍵コマンドをデータ入力部522へ書き込む際に、ステップS64と同様に、書き込み信号を出力する。暗号回路533は、ステップS66と同様に、ステップ71での書き込み信号の出力を基にして、次回の認証処理に用いる認証データの送信タイミングを決定することができる。
ステップS73において、暗号化部530は、ステップS61と同様の方法で鍵データを更新する。なお、鍵データの更新のタイミングは、ステップS70の後、すなわち、暗号化部530がステップS69のメインCPUコア500からの鍵データの読み出し指示に応答して、ステップ70で鍵データを出力した後とする。なお、鍵データの更新タイミングについては後述する。
次に、図7で説明した電源投入コマンド送信時に演出制御部203にて認証処理を開始させる場合の、主制御部10の鍵コマンド及び認証データの送信タイミングについて、図8を用いて説明する。図8の横軸は時間軸を表す。なお、図8は、電源投入直後のRAM領域の初期化処理や動作安定化のための待機処理等の初期設処理の説明は省略している。また、主制御部10はクロック信号の立ち上り時に各構成部の動作開始時点が同期されるものとして説明する。
図8の(ア)の時点に示すように、主制御部10に電源が投入されると、メインCPUコア500とは独立して暗号化部530にて鍵データが決定され認証データが生成される。なお、(ア)の時点で生成された認証データを認証データ(A)とする。そして、図8の(イ)の時点に示すように、メインCPUコア500にて制御コマンド(電源投入コマンド)が実行される。具体的には、メインCPUコア500にて書き込み信号が送信部520へ出力されるとともに、制御コマンド(電源投入コマンド)が書き込まれる。そして、図8の(ウ)の時点に示すように、送信部520に書き込まれた制御コマンド(電源投入コマンド)は、直ちに演出制御部203への送信が開始される。
ここで、主制御部10のメインCPUコア500では、所定の周期ごとに制御コマンドが実行されるが、図8では、この制御コマンドの実行周期を、模式的にクロック数=16クロックとして説明している。よって、メインCPUコア500の動作は、(イ)の時点で示した制御コマンド(電源投入コマンド)の書き込みが行われた時点からカウントして16クロック目に次の動作が開始される。
また、(ウ)の時点に示すように、(イ)の時点での書き込み信号の出力をトリガとして、暗号化部530にて認証データの送信タイミングが設定される。認証データの送信タイミングは、メインCPUコア500にて所定の周期で送信されるそれぞれの制御コマンドの間に割り込んで認証データが送信されるようなタイミングに設定する。また、認証データを送信する時点では、具体的には、暗号化部530が認証データを送信部520に書き込む時点(図8の(オ)の時点)では、送信部520に他の送信データが停滞していない必要がある。すなわち、図8の(オ)の時点に示すように、送信部520における制御コマンドの送信が完了した時点(図8の(エ)の時点)以降に、認証データが送信部520に書き込まれるように、認証データの送信タイミングを設定する必要がある。
従って、認証データの送信タイミング、すなわち、暗号化部530が認証データを送信部520に書き込むタイミングは、メインCPUコア500にて制御コマンドが送信部520に書き込まれる際の書き込み信号が出力された以降(図8では、(ウ)の時点以降)であって、メインCPUコア500の次の制御コマンドの実行より前(図8では、(ク)の時点)に認証データの送信が完了(図8では、(キ)の時点)可能なタイミングに設定する。図8では、認証データの送信タイミングは、例えば(ウ)の時点から8クロック目の(オ)の時点とする。そして、図8の(オ)の時点に示すように、(ウ)の時点からカウントして8クロック目に、暗号化部530にて認証データ(A)が送信部520に書き込まれる。その後、図8の(カ)の時点に示すように、送信部520に書き込まれた認証データ(A)は、直ちに演出制御部203への送信が開始される。
認証データの送信タイミングを上記のように設定することで、認証データと他の送信データ(上記では制御コマンド)との送信部520への書き込み時機が重複して、認証データ又は他の送信データが上書きされて送信エラーとなるおそれを低減することができる。このことが、演出制御部203での認証処理の際に、認証データと鍵データとの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することができる。また、認証データの送信タイミングを上記のように設定することで、認証データの送信タイミングと制御コマンドの送信タイミングの時間軸上の位置関係が明確化され、認証データの送信は、制御コマンドの送信の直後に必ず行われることとなる。これによって、演出制御部203では、受信データの種別を解析するに際して、新たな判断処理ステップや特別な解析手段を設けなくとも、認証データと制御コマンドとを容易に識別することができる。また、このことで、ソフトウェア開発上、制御コマンドの送信に関する既存のプログラムコードに対する認証データの送信に関するコードの結合度が低いままで認証データの送信に関する機能を追加することができる。よって、例えば、デバッグ作業時は、既存の制御コマンドの送信に関するものだけ先に作業を行った上で、認証データの送信に関するものは後から作業を行うことができ、より簡単に少ない作業工数で実施することができる。
続いて、図8の(ク)の時点に示すように、(イ)の時点からカウントして16クロック目では、鍵コマンドの実行を開始するために、メインCPUコア500にて鍵データの読み出し指示が暗号化部530に対して行われる。そして、図8の(ケ)の時点に示すように、暗号化部530にて鍵データの読み出し指示を受けると、直ちにメインCPUコア500に対して鍵データが出力される。この鍵データは、認証データ(A)を生成した際に用いられた鍵データと同一であるため、鍵データ(A)とする。そして、図8の(コ)の時点に示すように、メインCPUコア500にて鍵データ(A)を受け取ると、直ちに鍵コマンドが実行される。具体的には、メインCPUコア500にて書き込み信号が送信部520へ出力されるとともに、鍵データ(A)より構成された鍵コマンドが書き込まれる。そして、図8の(サ)の時点に示すように、送信部520に書き込まれた鍵データ(A)より構成された鍵コマンドは、直ちに演出制御部203への送信が開始される。
そして、図8の(シ)の時点に示すように、鍵データを更新する。ここでは、鍵データ(A)から鍵データ(B)に変更されたとする。ここで、鍵データの更新タイミングは、暗号化部530が、メインCPUコア500からの鍵データの読み出し指示に応答して、鍵データを出力した後の時点(図8の(コ)の時点)を基準として、規定時間経過後に設定する。仮に、鍵データの更新タイミングを、図8の(コ)の時点より前に設定すると、(カ)の時点で送信した認証データの生成に用いた鍵データと、(サ)の時点で送信した鍵コマンドを構成する鍵データとが一致しなくなるおそれが生じる。そうすると、演出制御部203では、鍵コマンドを受信して認証処理を開始しても認証データを復号化することができない。よって、鍵データの更新タイミングは、暗号化部530が、メインCPUコア500からの鍵データの読み出し指示に応答して、鍵データを出力した後の時点(図8では(コ)の時点)以降とする。
鍵データの更新タイミングを上記のように設定することで、演出制御部203での認証処理の際に、認証データと鍵データとの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することができる。
その後、図8の(ス)の時点に示すように、暗号化部530にて二回目の認証データの生成が行われる。この認証データは、(シ)の時点で更新された鍵データ(B)を用いて生成されるため、認証データ(B)とする。そして、図8の(セ)の時点に示すように、認証データ(A)の書き込みのときと同様に、(サ)の時点からカウントして8クロック目に、暗号化部530にて認証データ(B)が送信部520に書き込まれる。その後、図8の(ソ)の時点に示すように、送信部520に書き込まれた認証データ(B)は、直ちに演出制御部203への送信が開始され、図8の(タ)の時点で送信が完了する。
続いて、図8の(チ)の時点に示すように、(コ)の時点からカウントして16クロック目では、鍵コマンドの実行を開始するために、メインCPUコア500にて鍵データの読み出し指示が暗号化部530に対して行われる。そして、図8の(ツ)の時点に示すように、暗号化部530にて鍵データの読み出し指示を受けると、直ちにメインCPUコア500に対して鍵データ(B)が出力される。そして、図8の(テ)の時点に示すように、メインCPUコア500にて鍵データ(B)を受け取ると、直ちに鍵コマンドが実行される。具体的には、メインCPUコア500にて書き込み信号が送信部520へ出力されるとともに、鍵データ(B)より構成された鍵コマンドが書き込まれる。そして、図8の(ト)の時点に示すように、送信部520に書き込まれた鍵データ(B)より構成された鍵コマンドは、直ちに演出制御部203への送信が開始され、図8の(ナ)の時点で送信が完了する。
図8では、鍵コマンドを送信する契機となる電源投入コマンドが1回送信されたときに、所定の周期で鍵コマンドが2回送信された時点までを記載しているが、所定の周期で更に鍵コマンドを送信してよいことは言うまでもない。また、図8では、上記の所定の周期としてクロック数による周期を用いた例を示したが、所定時間や制御コマンドの所定送信回数等による周期を用いても構わない。また、鍵コマンドを送信する契機となる制御コマンドも、1種類の制御コマンドに限定する必要はなく、例えば、電源投入コマンドと客待ちデモコマンドの2種類、或いは2種類以上の制御コマンドを契機とするように構成してもよい。また、鍵コマンドを送信する契機となる制御コマンドを、予め設定した取り決めに従って変更するように構成してもよい。また、図8では、鍵コマンドを送信する契機となる制御コマンドが送信される度に認証データを逐次送信しているが、例えば、鍵コマンドを送信する契機となる制御コマンドが2回送信されたら1回だけ認証データ(及び鍵コマンド)を送る等と構成してもよい。
また、図8では、認証データの送信タイミングを設定するにあたって、鍵コマンドを送信する契機となる制御コマンドの書き込み信号を基準として、特定時間が経過した後(図8では(ウ)の時点から8クロック目に位置する(オ)の時点に到達後)に、認証データの書き込みが開始されるように、送信タイミングが設定されている。しかしながら、本発明はこれに限定されず、例えば、鍵コマンドを送信する契機となる制御コマンドの書き込み信号を基準として、特定クロック数が経過した後や、制御コマンドの送信回数が特定回数経過した後などとしてもよい。すなわち、認証データの送信タイミングは、鍵コマンドを送信する契機となる制御コマンドの送信から特定時間遅延させて、送信部520への書き込み時機が重複しないようなタイミングであればよい。また、認証データの送信タイミングは、鍵コマンドを送信する契機となる制御コマンドの書き込み信号を基準とするだけではなく、送信フラグが立てられたことを基準とすることもできる。この場合、特定時間経過後に認証データを書き込むことは勿論のこと、送信フラグが立ったのを確認したら直ちに認証データを書き込むこととしてもよい。
また、図8では、鍵データの更新タイミングを設定するにあたって、認証データの送信と鍵コマンドの送信とが1回ずつ完了する度に、新たな鍵データで認証データが生成されるように、更新タイミングが設定されている。そして、メインCPUコア500からの鍵データの読み出し指示に応答した暗号化部530の鍵データの出力を基準として、規定時間経過した後(図8では(コ)の時点を基準として(シ)の時点に到達後)に、鍵データの更新タイミングを設定している。しかしながら、本発明はこれに限定されず、例えば、鍵データの読み出し指示に応答した鍵データの出力を基準として、規定クロック数が経過した後や、制御コマンドの送信回数が規定回数経過した後などとしてもよい。
以下、演出制御部203による認証処理を含む動作処理について、図9に示すフローチャートを参照して説明する。演出制御部203のCPU203aを構成するサブCPUコア(図示せず)は、演出制御部203に設けられたクロックパルス発生回路(図示せず)より出力されるクロック信号に基づいて、所定の周期(例えば2ミリ秒)ごとに、制御コマンドに応じた処理等を行う。
ステップS101において、サブCPUコアは、まず、パチンコ遊技機1の電源投入後の初期設定処理の後、主制御部10から送信された送信データ(各種制御コマンドやデータ等)を受信したか否かを判断する。具体的には、サブCPUコアは、演出制御部203を構成するデータ入出力部(図示せず)を介してRAM203cの受信データ用記憶領域に、主制御部10からの送信データが書き込まれているか否かを判断する。送信データが受信データ用記憶領域に書き込まれていない場合は、サブCPUコアは、本フローチャートによる処理を終了し、送信データが受信データ用記憶領域に書き込まれるまで演出用乱数更新処理等を行う。
一方、送信データが受信データ用記憶領域に書き込まれた場合(ステップS101:YES)、サブCPUコアは、コマンド解析処理を行う。具体的には下記のとおりである。
ステップS102において、サブCPUコアは、受信データ用記憶領域に書き込まれた送信データが、鍵コマンドか否かを判断する。そして、サブCPUコアは、受信データ用記憶領域に書き込まれた送信データが、鍵コマンドである場合(ステップS102:YES)は、認証処理を開始し、受信データ用記憶領域に書き込まれた送信データが、鍵コマンドでない場合(ステップS102:NO)は、送信データの内容を解析し、ステップS103へ進む。
ステップS103において、コマンド種別に応じた処理や各種データに応じた処理を行う。なお、受信用データ記憶領域に認証データが書き込まれた場合には、RAM203cの認証データ用記憶領域に記憶させておく。また、コマンド種別に応じた処理の一例として、図柄変動パターンコマンド及び大当たり開始コマンドを受信した場合の演出制御部203の処理については後述する。
ステップS104において、サブCPUコアは、受信データ用記憶領域に書き込まれた送信データが、鍵コマンドである場合(ステップS102:YES)、受信データ用記憶領域の鍵コマンドをRAM203cの鍵データ用記憶領域に記憶させる。
ステップS105において、サブCPUコアは、認証データ用記憶領域に予め受信した認証データが記憶されているか否かを確認する。認証データ用記憶領域に認証データが記憶されていない場合は(ステップS105:NO)、サブCPUコアは、未だ、認証処理が行える段階ではないとして、本フローチャートによる処理を終了する。
ステップS106において、サブCPUコアは、認証データ用記憶領域に認証データが記憶されている場合(ステップS105:YES)、鍵データ用記憶領域及び認証データ用記憶領域から鍵データ及び認証データを読み出す。なお、鍵データ用記憶領域及び認証データ用記憶領域から鍵データ及び認証データを読み出す際には、両記憶領域に書き込まれた順番と両記憶領域から読み出す順番とが一致するように取り決めておく(いわゆる、先入れ先出し。以下、先入れ先出しのルールという)と、認証データの生成に用いた鍵データと鍵コマンドを構成する鍵データとが、より確実に一致する。よって、鍵データと認証データの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することができる。
ステップS107において、サブCPUコアは、読み出した鍵データと認証データとを用いて検査値を抽出する。具体的には、サブCPUコアは、認証データに対して鍵データを予め設定された復号化方式で演算する。サブCPUコアは、この演算結果が検査値に相当すると認識し、RAM203cの検査値用記憶領域に記憶しておく。
ステップS108において、サブCPUコアは、演出制御部203を構成するROM203bの所定の記憶領域に予め記憶された期待値を読み出す。
ステップS109において、サブCPUコアは、検査値用記憶領域から抽出した検査値を読み出し、検査値と期待値とが一致するか否かを判断する。検査値と期待値とが一致する場合(ステップS109:YES)、サブCPUコアは、今回の認証処理において主制御部10に対する個体認証が成功し、パチンコ遊技機1の正規性を認証することができたと判断して、本フローチャートによる処理を終了する。一方、検査値と期待値とが一致しない場合(ステップS109:NO)、サブCPUコアは、今回の認証処理において主制御部10に対する個体認証は不成功であり、パチンコ遊技機1で不正行為や誤動作が発生したおそれがあると判断し、ステップS110へ進む。
ステップS110において、パチンコ遊技機1で不正行為や誤動作が発生したおそれがあると判断された場合(ステップS109:NO)、サブCPUコアは、その旨を報知する為に報知信号を出力する。
サブCPUコアは、生成した報知信号を、例えば、図柄表示部104やランプ制御部205、あるいはパチンコ遊技機1を管理するセンター制御装置などへ送信する。図柄表示部104やランプ制御部205等は、受信した報知信号に基づいて、パチンコ遊技機1で不正行為や誤動作が発生したおそれがある旨を報知する演出を実行する。この演出は、例えば、図柄表示部104に通常出現しないキャラクターを出現させたり、通常出現するキャラクターを通常とは異なる方法で出現させるなどである。また、図柄表示部104の輝度を変えたり、色を変えたり、ランプ制御部205に対して所定のランプを表示制御するようにしてもよい。いずれにせよ、遊技店の従業員が当該パチンコ遊技機1の前を通過した際に、その状態に気付くようにしてあればよい。また、この演出は、顧客がその状態に気付かないような演出でもよく、また、顧客が容易に気付く演出であってもよい。顧客が容易に気付く演出にすれば、不正行為を効率的に抑止することができる。
また、報知信号に「大当たり中」や「確率変動中」などのパチンコ遊技機1の遊技状態に関する情報を含めてもよい。これらの遊技状態に関する情報に基づいて、パチンコ遊技機1を管理するセンター制御装置などによって不正行為が行われているか否かの判断を行ってもよい。例えば、大当たり中や確率変動中は入賞が集中していても正常である場合がある。よって、大当たり中や確率変動中は、その他の状態とは異なる条件で不正行為のおそれがあるか否かについて判断するのがよい。また、遊技状態に関する情報は、報知信号に含めずに別信号として出力するようにしてもよい。この場合、従業員は、報知信号と遊技状態に関する情報の両方に基づいて、不正行為のおそれがあるか否かについて判断する。
なお、主制御部10と賞球制御部204との間の認証処理は、主制御部10と演出制御部203との間の認証処理の手順を示した図7及び図9に示すフローチャートとほぼ同様の手順で行われるため説明を省略する。
次に、演出制御部203のコマンド種別に応じた処理の一例を説明する。
以下では、図9のステップS103にて演出制御部203が図柄変動パターンコマンドを受信した場合(図6に示すステップS13又はステップS19参照)、及び大当たり開始コマンドを受信した場合(図6に示すステップS16参照)の演出制御部203の動作処理のみを説明する。
まず、演出制御部203が図柄変動パターンコマンドを受信した場合の処理について、図10に示すフローチャートを参照して説明する。
ステップS31において、演出制御部203を構成するサブCPUコアは、大当たり用の図柄変動パターンコマンド(図6に示すステップS13参照)又ははずれ用の図柄変動パターンコマンド(図6に示すステップS19参照)のいずれかを受信したか否かを判断する。具体的には、サブCPUコアは、受信データ用記憶領域に、大当たり用の図柄変動パターンコマンド又ははずれ用の図柄変動パターンコマンドのいずれかが書き込まれているか否かを確認する。サブCPUコアは、受信データ用記憶領域に上記いずれかのコマンドが書き込まれていれば(ステップS31:YES)、ステップS32へ進む。
ステップS32において、サブCPUコアは、予め用意された乱数(例えば、0〜255)から1つの変動演出選択用乱数を無作為に取得した後、ステップS33へ進む。
ステップS33において、サブCPUコアは、ステップS32の処理で取得した変動演出選択用乱数に基づいて変動演出の種類を選択した後、ステップS34へ進む。
ステップS34において、サブCPUコアは、図柄表示部104やランプ制御部205に変動演出別の演出開始コマンドをRAM203cの送信データ用記憶領域に書き込んで、演出開始コマンドを送信させた後、ステップS35へ進む。
ステップS35において、サブCPUコアは、変動演出の演出時間が経過したか否かを判断する。そして、変動演出の演出時間が経過していない場合(ステップS35:NO)には、サブCPUコアは、ステップS36へ進む。また、変動演出の演出時間が経過している場合(ステップS35:YES)の場合、サブCPUコアは、ステップS37へ進む。
ステップS36において、サブCPUコアは、主制御部10から送信された図柄停止コマンド(図6に示すステップS15及びS21参照)を受信したか否かを判断する。具体的には、サブCPUコアは、受信データ用記憶領域に図柄停止コマンドが書き込まれているか否かを確認する。受信データ用記憶領域に図柄停止コマンドが書き込まれていない場合は(ステップS36:NO)、サブCPUコアは、ステップS35へ戻り、ステップS35以降の処理を繰り返す。一方、受信データ用記憶領域に図柄停止コマンドが書き込まれている場合は(ステップS36:YES)、すなわち、図柄停止コマンドを受信した場合には、サブCPUコアは、ステップS37へ進む。
ステップS37において、演出制御部203は、図柄表示部104やランプ制御部205に演出停止コマンドを送信し、本フローチャートによる処理を終了する。具体的には、サブCPUコアは、送信データ用記憶領域に演出停止コマンドを書き込み、演出停止コマンドを送信させた後、本フローチャートによる処理を終了する。
次に、演出制御部203が大当たり開始コマンドを受信した場合の処理について、図11に示すフローチャートを参照して説明する。
ステップS41において、演出制御部203を構成するサブCPUコアは、大当たり開始コマンド(図6に示すステップS16参照)を受信したか否かを判断する。具体的には、サブCPUコアは、受信データ用記憶領域に、大当たり開始コマンドが書き込まれているか否かを確認する。サブCPUコアは、受信データ用記憶領域に大当たり開始コマンドが書き込まれていれば(ステップS41:YES)、ステップS42へ進む。
ステップS42において、サブCPUコアは、図柄表示部104やランプ制御部205に、受信した大当たり開始コマンドに対応する大当たり開始処理コマンドを送信した後、ステップS43へ進む。具体的には、サブCPUコアは、大当たり開始処理コマンドをRAM203cの送信データ用記憶領域に書き込んで、大当たり開始処理コマンドを図柄表示部104やランプ制御部205に送信させた後、ステップS43へ進む。
ステップS43において、サブCPUコアは、ラウンド別の大当たりコマンド(図6に示すステップS17参照)を受信したか否かを判断する。具体的には、サブCPUコアは、受信データ用記憶領域に、ラウンド別の大当たりコマンドが書き込まれているか否かを確認する。サブCPUコアは、受信データ用記憶領域に大当たりコマンドが書き込まれていれば(ステップS43:YES)、ステップS44へ進む。
ステップS44において、サブCPUコアは、図柄表示部104やランプ制御部205に、受信したラウンド別の大当たりコマンドに対応するラウンド別処理コマンドを送信した後、ステップS45へ進む。具体的には、サブCPUコアは、ラウンド別処理コマンドを送信データ用記憶領域に書き込んで、ラウンド別処理コマンドを図柄表示部104やランプ制御部205に送信させた後、ステップS45へ進む。
ステップS45において、サブCPUコアは、大当たり終了コマンド(図6に示すステップS18参照)を受信したか否かを判断する。具体的には、サブCPUコアは、受信データ用記憶領域に、大当たり終了コマンドが書き込まれているか否かを確認する。サブCPUコアは、受信データ用記憶領域に大当たり終了コマンドが書き込まれていれば(ステップS45:YES)、ステップS46へ進む。
ステップS46において、サブCPUコアは、図柄表示部104やランプ制御部205に、受信した大当たり終了コマンドに対応する大当たり終了処理コマンドを送信した後、本フローチャートによる処理を終了する。具体的には、サブCPUコアは、大当たり終了処理コマンドを送信データ用記憶領域に書き込んで、大当たり終了処理コマンドを図柄表示部104やランプ制御部205に送信させた後、本フローチャートによる処理を終了する。
以上のように、本実施の形態では、暗号化制御回路10g(ハードウェア)で構成される暗号化部530が、主制御部10の個体認証に必要な認証データを、プログラムコードに記述されたメインCPUコア500からの指示によらず、独自に保持するアルゴリズムに従って生成し、演出制御部203へ自動的に送信している。また、認証データの復号化に必要な鍵データは、メインCPUコア500からの読み出し指示のみで暗号化制御回路10gから出力され、直ちに演出制御部203へ送信される。従って、主制御部10に対する認証機能を有しながらも、認証機能を有することで増大する主制御部10のCPUの処理負荷やプログラム容量を最大限抑制することができ、パチンコ遊技機1のセキュリティ強度の向上と処理速度の向上とを両立させることができる。
また、本実施の形態では、認証データの生成や送信に関する処理の制御は、暗号化部530自身のアルゴリズムで定義すればよい。また、鍵コマンドの実行に関する処理の制御も、メインCPUコア500が実行するプログラムコードに1種類の制御コマンド(鍵コマンド)に対応するコードを追加するだけよい。具体的には、鍵データの読み出し指示に関するコード及び鍵コマンドの書き込みに関するコードを追加するだけでよく、コードステップ数換算でそれぞれ僅か1命令分だけの追加で足りる。従って、認証データ及び鍵コマンドの送信タイミングの設定や鍵データの更新タイミング等は、特定時間経過後や特定クロック数経過後など自由なタイミング設計が可能であり、ソフトウェア制御の拡張性や柔軟性も備えた認証機能を提供することができる。これに加えて、メインCPUコア500が実行するプログラムコード全体にわたっての新たなタイミング設計を行う必要がないので、認証機能を追加するだけのタイミング設計で済み、機能の実装、機能の検証などを、より簡単に少ない作業工数で実施することができる。また、このことで認証機能を追加する際の設計自由度を高くすることができる。
また、本実施の形態では、演出制御部203で認証処理が実行されるのは、鍵コマンドを受信した場合のみである。すなわち、認証処理を行うことによって演出制御部203のCPUの処理負荷が増大するのは、鍵コマンドの送信タイミングのときのみであるため、演出制御部203の処理負荷が増大する割合を抑えることができる。また、演出制御部203が実行するプログラムコードには鍵コマンドに関するプログラムコードを追加するだけでよい。従って、演出制御部203が実行するプログラムコード全体にわたっての新たなタイミング設計を行う必要がないので、認証機能を追加するだけのタイミング設計で済み、機能の実装、機能の検証などを、より簡単に少ない作業工数で実施することができる。また、このことで認証機能を追加する際の設計自由度を高くすることができる。
また、本実施の形態では、鍵コマンドの送信タイミングを、電源投入コマンドを基準に設定し、パチンコ遊技機1の認証処理を電源投入時に開始している。この場合、電源投入コマンドは、パチンコ遊技機1の電源の投入時やリセット時など、パチンコ遊技機1の初期化処理を行う際(初期設定処理の後)に送信される。パチンコ遊技機1の初期化処理は、パチンコ遊技機1のメインの処理である遊技(ゲーム進行)関連処理とは異なる処理区分に分類される。したがって、本発明のように、パチンコ遊技機1の初期化処理中に認証処理を組み込めば、遊技関連処理中に認証処理を組み込む場合と比較して、プログラム設計やテストにかかる工程(工数)が増加する割合を低減することができる。すなわち、パチンコ遊技機1の初期化処理中に認証処理を組み込むことによって、開発コストの低減や品質管理上のメリットを得ることができる。また、パチンコ遊技機1の初期化処理中に認証処理を組み込めば、パチンコ遊技機1の起動直後に認証処理を行うため、遊技店が閉店した後に不正が行われた場合などであっても、顧客が入店する前に不正を検出することができる。よって、不正による被害が発生する危険性を低減することができる。
また、鍵コマンドの送信タイミングを、客待ちデモコマンドを基準に設定し、パチンコ遊技機1の認証処理を客待ちデモ時に開始した場合、客待ちデモコマンドは、パチンコ遊技機1が非遊技状態、すなわち、パチンコ遊技機1のメインの処理である遊技(ゲーム進行)関連処理が行われていない場合に送信されるので、認証処理による処理負荷の増大が遊技関連処理に影響を与えることがない。このため、主制御部10や周辺部30が高度な処理能力を有していない場合や、遊技関連処理の処理負荷が大きいパチンコ遊技機1であっても、認証処理機能を追加することができる。また、客待ちデモコマンドは、顧客がパチンコ遊技機1を操作する前に発行されるコマンドであるので、顧客がパチンコ遊技機1を操作する前に不正行為を検出することができる。
また、本実施の形態では、演出制御部203での認証処理の際に、鍵コマンド及び認証データを構成する鍵データの種類が不一致とならないように、認証データの送信と鍵コマンドの送信とが1回ずつ完了する度に、新たな鍵データで認証データが生成されるように、鍵データの更新タイミングが設定されている。しかしながら、本発明はこれに限定されず、1回の鍵コマンドの送信が完了する間に複数回の認証データの送信が行われた後に、鍵データの更新を行うように構成してもよい。この場合、鍵データの更新が行われる前の認証データの送信回数は、演出制御部203の認証データ記憶領域にて保持可能な認証データ数以下に抑えておけばよい。このとき、演出制御部203では、復号化処理時の先入れ先出しのルールを守れば、本実施の形態のように、鍵コマンド受信時の直前に受信した認証データに対して復号化処理を施すことに限定されず、例えば、鍵コマンド受信時より所定回数前に受信した認証データに対して復号化処理を施すことができる。また、当該所定回数を示す情報や鍵データの更新状況を示した情報を鍵データとともに都度送信するように構成することもできる。
また、本実施の形態では、主制御部10において、認証データを先に送信した後に鍵コマンドを送信することとしたが、本発明はこれに限定されず、鍵コマンドを先に送信した後に認証データを送信することとしてもよい。このとき、演出制御部203にて、鍵コマンド受信時に復号化処理の対象となる認証データは、当該鍵コマンド受信時の直後に受信した認証データとなるが、復号化処理時は先入れ先出しではなく、後入れ先出しのルールを取り決めておけばよい。また、演出制御部203での認証処理のトリガを、鍵コマンドの受信ではなく認証データの受信とするように構成することもできる。
また、本実施の形態では、主制御部10を構成する暗号化部530にて鍵データを生成して検査値を暗号化して認証データを生成しているが、認証データは、検査値に暗号化処理を施したものに限定されず、検査値そのものを認証データとして、暗号化部530から送信部520を介して認証データを送信してもよい。また、本実施の形態では、主制御部10を構成する送信部520にて、各構成部から受け取ったデータを直ちに演出制御部203へ送信することとしているが、本発明はこれに限定されず、受け取ったデータを送信部520にて一時的に保存し、送信部520でも送信タイミングを計ることができるような構成としてもよい。
また、本実施の形態では、本発明をパチンコ遊技機に適用する例を示したが、これに限定されず、本発明は、雀球遊技機、アレンジボール等のパチンコ遊技機以外の弾球遊技機、スロットマシン等の回胴式遊技機などの他の遊技機にも適用することができる。これらの遊技機においても、上記実施の形態と同様に構成することにより、上記実施の形態と同様の効果を得ることができる。また、本実施の形態は、その目的及び構成等に特に矛盾や問題がない限り、互いの技術を流用することができる。