以下、図面を参照して本発明を実施するための形態について説明する。
[遊技機の基本構成]
図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は、例えば、液晶ディスプレイ等のディスプレイを有している。図柄表示部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と、中間部20と、演出制御部203と、賞球制御部204と、ランプ制御部205とから構成されている。
主制御部10は、CPU10aと、ROM10bと、RAM10cと、暗号化制御回路10gとから少なくとも構成されるワンチップマイコン10m等を備えている。CPU10aは、パチンコ遊技機1の遊技に係る基本動作を制御し、ROM10bに予め記憶されているプログラム(プログラムコード)に基づき、遊技内容の進行に伴う基本処理を実行する。ROM10bには、CPU10aがパチンコ遊技機1の遊技内容の進行に伴う基本処理を実行するためのプログラムコードが予め記憶されている。
RAM10cは、CPU10aがパチンコ遊技機1の遊技内容の進行に伴う基本処理を実行する際に行う演算処理において、データ等のワークエリアとして機能する。暗号化制御回路10gは、主制御部10の個体としての正当性(アイデンティティ)を認証する(以下、「個体認証」という)ために用いる検査値を取得し、検査値に対して暗号化処理を施して認証データを生成する。また、暗号化制御回路10gは、生成した認証データを中間部20へ送信する処理を制御する。なお、これら認証処理に関するものの詳細については後述する。この主制御部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を開閉したりする。
中間部20は、CPU20aと、ROM20bと、RAM20c等を備えている。CPU20aは、主にパチンコ遊技機1の認証に係る動作を制御し、ROM20bに予め記憶されているプログラム(プログラムコード)に基づき認証処理を実行する。ROM20bには、CPU20aが処理を実行するためのプログラムコードに加え、主制御部10を構成するROM10bに予め記憶された主制御部10固有の情報である検査値に対応する期待値が予め記憶されている。RAM20cは、CPU20aが処理を実行する際に行う演算処理や認証処理を実行する際に行う演算処理等のワークエリアとして機能する。そして、中間部20は、主制御部10に対する個体認証を行う認証機能と、主制御部10から送信される制御コマンドを示す制御信号を演出制御部203等へ中継する中継機能とを有している。
演出制御部203は、CPU203aと、ROM203bと、RAM203cと、VRAM203d等を備えている。CPU203aは、主にパチンコ遊技機1の遊技中における演出を制御し、ROM203bに予め記憶されているプログラム(プログラムコード)に基づき、主制御部10から中間部20を介して送信される制御信号にて示された制御コマンドに基づいて演出の抽選及び演出処理を実行する。ROM203bには、CPU203aが演出の抽選及び演出処理を実行するためのプログラムコードと、過去の演出パターンとが予め記憶されている。RAM203cは、CPU203aが演出の抽選及び演出処理を実行する際に行う演算処理等を実行する際に行う演算処理等のワークエリアとして機能する。VRAM203dには、図柄表示部104に表示させるための画像データが書き込まれる。
この演出制御部203は、主制御部10から中間部20を介して送信される演出に係る制御コマンドを示す制御信号を受信すると、この制御信号にて示された制御コマンドに基づいて抽選を行い、演出背景パターン、リーチ演出パターン、登場キャラクター等の演出を確定するとともに、当該確定した演出の制御を行う。
また、演出制御部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と、中間部20と、演出制御部203と、賞球制御部204と、ランプ制御部205とは、それぞれ異なるプリント基板(例えば、主制御部10は主制御基板、中間部20は中間基板、演出制御部203は演出制御基板、賞球制御部204は賞球制御基板、ランプ制御部205はランプ制御基板)に搭載されている。これらのうち、演出制御基板、賞球制御基板、及びランプ制御基板を総称して「周辺基板」とする。なお、中間部20及びランプ制御部205は、演出制御部203と同一のプリント基板上に搭載することもできる。また、賞球制御部204は、主制御部10と同一のプリント基板上に搭載することもできる。
[遊技機の認証に関する構成]
次に、上記構成のパチンコ遊技機1が不正防止のために有する認証機能を実現する手段について、図面を参照しながら説明する。本実施の形態に係るパチンコ遊技機1の認証機能は、中間部20が主制御部10に対する個体認証を行うことによって実現される。そして、中間部20で得られた認証結果は周辺部30へ送信され、周辺部30にて受信した認証結果に応じた処理が行われる。なお、本実施の形態では、中間部20で得られた認証結果は、周辺部30のうち演出制御部203へ送信され、演出制御部203が認証結果に応じた処理を行うこととして説明する。
具体的には、主制御部10が保持する固有の情報を検査値とし、中間部20に予め記憶されている主制御部10固有の情報に対応する情報を期待値として、検査値と期待値とが一致すると主制御部10に対する個体認証が成功したと判断される。中間部20は、得られた主制御部10に対する個体認証の結果を、演出制御部203へ送信する。演出制御部203は、中間部20から送信された認証結果を確認し、認証結果に応じた処理を行う。また、主制御部10は、認証処理を実行するに際して、検査値を生成し中間部20へ送信するが、送信前に暗号鍵を用いて検査値に暗号化処理を施す。中間部20は、暗号化された検査値に対して復号化処理を施して検査値を抽出する。本実施の形態では、検査値に対して暗号化処理を施して得られたデータを「認証データ」という。また、検査値に対する暗号化処理に用いる暗号鍵、及び認証データに対する復号化処理に用いる復号鍵を総称して「鍵データ」という。
図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の外部(例えば、中間部20)へのデータや信号の伝送を意味する。なお、データ記憶部510が有する機能を実現する手段は、例えば、図2に示すROM10bの一部から構成することができる。
送信部520は、メインCPUコア500や暗号化部530から転送された制御コマンドやデータ等を、中間部20や中間部20を介して演出制御部203へ送信するためのインターフェイスの役割を果たす。例えば、送信部520は、メインCPUコア500が認証処理に関する制御コマンドを実行して中間部20に認証処理を実行させる際に、メインCPUコア500から認証処理に関する制御コマンドに対応した制御コマンドデータを受け取る。そして送信部520は、受け取った制御コマンドデータを制御信号に変換し中間部20へ送信する。なお、送信部520が有する機能を実現する手段は、上記変換機能を有する公知の入出力装置から構成することができる。但し、主制御部10から中間部20への一方向のみ伝送可能となっている。
なお、制御信号は、制御コマンドの内容を表す制御コマンドデータに誤り検出符号等を付加して構成されたデータを電気信号に変換したものを意味するが、以下、「制御コマンド」という言葉には、中間部20や演出制御部203などへの制御命令の意味だけではなく、制御コマンドデータや制御信号の意味も含まれるものとする。また、制御信号を中間部20や演出制御部203などへ送信することを、「制御コマンドを送信する」という。また、「制御コマンドを書き込む」とは、制御コマンドデータのみを書き込むことに限定されず、制御信号を構成する制御コマンドデータ以外のデータの書き込みも含まれているものとする。
暗号化部530は、いわゆるハードウェアであって、自身が保持するアルゴリズムに従って検査値を暗号化する際の暗号鍵として鍵データを生成するとともに、データ記憶部510から転送された検査値を暗号化して認証データを生成する。そして、暗号化部530は、生成した認証データを予め取り決められた所定のタイミングによって送信部520へ転送し、中間部20へ送信させる。また、暗号化部530は、メインCPUコア500からの読み出し指示に従って、生成した鍵データをメインCPUコア500に転送する。なお、暗号化部530が有する機能を実現する手段は、例えば、図2に示す暗号化制御回路10gから構成することができる。
パルス発生部540は、メインCPUコア500、送信部520、及び暗号化部530に対してクロック信号を送る。パルス発生部540と接続されたメインCPUコア500等は、受け取ったクロック信号を基に互いの動作を同期させている。また、メインCPUコア500等は、パルス発生部540から受け取ったクロック信号をカウントして割込処理等を行う際のタイマ機能を保有している。パルス発生部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は、一度に1つの鍵データを生成して一意に決定してもよいし、一度に複数の鍵データを生成し複数の鍵データの中から1つの鍵データを選択し、今回の認証処理で使用する鍵データを決定してもよい。但し、今回の認証処理で使用する鍵データを決定するタイミングは、後述するメインCPUコア500への鍵データの出力よりも前とする。
続いて、暗号化部530は、主制御部10に対する個体認証を行うために用いる検査値をデータ記憶部510から取り込む。具体的には、暗号化部530を構成する暗号回路533が、データ記憶部510を構成するデータ記憶回路511が有する検査値を、内部バス550及びデータ入出力部532を介して転送させる。そして、暗号回路533は、データ入出力部532に書き込まれた検査値を、暗号回路533自身が保持する検査値用記憶領域に記憶させる。検査値は、主制御部10が保持する固有の情報であれば特に限定されない。例えば、メインCPUコア500に固有に付与されている識別番号(ID)の他、データ記憶回路511に記憶されている特定のアドレスに記憶されているデータ(制御コマンドデータ、命令コード及び固定データ等)のチェックサム等が考えられる。
暗号回路533は、取り込んだ検査値を検査値用記憶領域から読み出し、予め鍵決定部531で生成した鍵データを用いて暗号化処理を施し、認証データを生成する。暗号化処理の演算方式(以下、「暗号化方式」という)は、主制御部10と中間部20や演出制御部203との間で予め取り決めてあれば、特に限定されない。暗号化方式は、例えば、検査値と鍵データとを用いた四則演算又は論理演算等を行って所定のデータサイズを有する演算データを得る処理方式、これらの四則演算又は論理演算等により得られた演算データのビット配列を並び変える処理方式、上記演算データのビットをシフト又はローテイトする処理方式、検査値を構成する複数のビットを取り出して所定の規則に従って並べて1つのデータを生成する処理方式などである。
暗号回路533は、認証データを生成すると、自身の認証データ用記憶領域に記憶し、中間部20へ認証データを送信するタイミングまで保持しておく。そして、暗号回路533は、中間部20への認証データの送信タイミングを設定する。認証データの送信タイミングは、メインCPUコア500からの指示によらず、暗号化部530が保持するアルゴリズムで予め設定されている。暗号回路533は、認証データの送信タイミングになると、データ入出力部532及び内部バス550を介して主制御部10を構成する送信部520へ認証データを転送し、中間部20へ送信させる。具体的には、暗号回路533は、認証データの送信タイミングとなると、生成した認証データをデータ入出力部532へ受け渡す。データ入力部532は、受け渡された認証データを内部バス550を介して送信部520を構成するデータ入力部522へ直ちに書き込む。なお、鍵決定部531が鍵データを生成するタイミングと暗号回路533が検査値を取得するタイミングとは、暗号回路533が認証データをデータ入出力部532へ受け渡す前であれば特に制限はない。また、認証データの送信タイミングや送信部520の構成については後述する。
一方、主制御部10を構成するメインCPUコア500は、中間部20に認証処理を開始させるトリガとなる鍵コマンドを実行する。具体的には、メイン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の各構成部からデータを転送されると、受け取ったデータを中間部20へ直ちに送信する。例えば、メインCPUコア500から内部バス550を介して送信部520を構成するデータ入力部522へ制御コマンドが書き込まれると、データ入力部522は、書き込まれた制御コマンドを送信回路521へ受け渡す。送信回路521は、受け渡された制御コマンドを送信データとして、中間部20へ直ちに送信する。
なお、主制御部10の各構成部がデータ入力部522へデータを書き込む際には、内部バス550内で他のデータとの衝突が生じないように、データ入力部522へ書き込むデータと同時に各構成部から書き込み信号が出力される。内部バス550は、出力された書き込み信号を通じて内部バス550を通るデータの割り当てを行う。書き込み信号を出力していない他の構成部は、内部バス550に通じる書き込み信号を検知し、検知した書き込み信号を参照することで、何のデータがデータ入力部522へ書き込まれているのかを知ることができる。例えば、メインCPUコア500からデータ入力部522へ制御コマンドが書き込まれる際に、その旨を示す書き込み信号が出力されると、暗号化部530は、当該書き込み信号を検知し、検知した書き込み信号を参照して現在はメインCPUコア500が制御コマンドをデータ入力部522へ書き込んでいることを知ることができる。
一方、送信部520は、内部バス550を通じてデータ入力部522へ書き込むデータとその旨を示す書き込み信号とが入力されると、内部バス550から当該データを読み込んでデータ入力部522に書き込む。そして、送信部520は、データ入力部522にデータが書き込まれると、書き込まれたデータを送信回路521に受け渡し、送信データを構成して中間部20へ直ちに送信する。従って、例えば、暗号化部530は、メインCPUコア500の制御コマンドの書き込み信号を検知し、検知した書き込み信号を参照することによって、メインCPUコア500の制御コマンドの送信タイミングを知ることができる。
次に、主制御部10から中間部20に対して、又は中間部20を介して演出制御部203に対して送信される制御コマンドの種別について説明する。図5は、本発明の実施の形態に係るパチンコ遊技機1を構成する主制御部10が出力する制御コマンドの種別の一例を示す図であって、図5に示された制御コマンドの種別に限定されるものではない。主制御部10から中間部20や中間部20を介して演出制御部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の電源が投入されたときに中間部20や中間部20を介して演出制御部203へ送信される。具体的には、パチンコ遊技機1の電源が投入されたとき、主制御部10を構成するメインCPUコア500の処理部501は、送信部520を構成するデータ入力部522に対して書き込み信号を出力するとともに、電源投入コマンドをデータ入力部522の記憶領域に書き込む。その後、データ入力部522は、書き込まれた電源投入コマンドを送信回路521へ受け渡す。送信回路521は、受け渡された電源投入コマンドを送信データとして、中間部20へ直ちに送信する。このように、制御コマンドを中間部20や中間部20を介して演出制御部203へ送信するに際して、送信部520を構成するデータ入力部522に書き込み信号を出力するとともに、制御コマンドをデータ入力部522の記憶領域に書き込み、送信回路521へ受け渡して送信データとすることを、以下、「制御コマンドをセットする」という。
「客待ちデモコマンド」は、パチンコ遊技機1が非遊技状態における客待ちのデモ画面を表示させることを示すものであり、「MODE」が「E2H」で設定され、「DATA」が「00H」に設定されている。
この客待ちデモコマンドは、電源投入時に表示される初期演出表示としてデモが開始されてから、又は後述する未抽選入賞回数がゼロとなりデモが開始されてから、所定時間経過したときに中間部20を介して演出制御部203へ送信される。具体的には、上記デモが開始され所定時間経過後に、客待ちデモコマンドが送信部520にセットされる。その後、送信部520にセットされている客待ちデモコマンドが中間部20を介して演出制御部203へ直ちに送信されることとなる。
「図柄変動パターンコマンド」は、パチンコ遊技機1の始動口(第1始動口105又は第2始動口125)に遊技球が入賞し、図柄表示部104にて入賞抽選結果に応じた図柄の変動態様を示すものであり、「MODE」が「E3H」で設定され、各種の変動パターンに合わせてDATAの情報が設定されている。
この図柄変動パターンコマンドは、入賞抽選時の大当たり判定後の各種の図柄変動パターンの決定時に中間部20を介して演出制御部203へ送信される。具体的には、入賞抽選時に取得した大当たり判定用乱数が予め設定された大当たり判定テーブルのいずれかの乱数値と対応するかが判断され、各種の図柄変動パターンが決定されて図柄変動が開始されたときに、決定された図柄変動パターンに対応する図柄変動パターンコマンドが送信部520にセットされる。その後、送信部520にセットされている図柄変動パターンコマンドが中間部20を介して演出制御部203へ直ちに送信されることになる。
「図柄停止コマンド」は、図柄変動を停止表示させることを示すものであり、「MODE」が「E4H」で設定され、「DATA」が「00H」に設定されている。
この図柄停止コマンドは、図柄変動が開始され図柄変動時間が経過した後に中間部20を介して演出制御部203へ送信される。具体的には、図柄変動が開始され後、予め設定された図柄変動時間が経過したため図柄変動を停止させるときに、図柄停止コマンドが送信部520にセットされる。その後、送信部520にセットされている図柄停止コマンドが中間部20を介して演出制御部203へ直ちに送信されることになる。
「大当たり開始コマンド」は、各種の大当りが開始することを示すものであり、「MODE」が「E5H」で設定され、大当たりの種別に合わせてDATAの情報が設定されている。
この大当たり開始コマンドは、各種の大当りが開始するときに、大当たりの種別に対応する大当たり開始コマンドが中間部20を介して演出制御部203へ送信される。具体的には、大当たり遊技処理の開始のときに、大当たりの種別に対応する大当たり開始コマンドが送信部520にセットされる。その後、送信部520にセットされている大当たり開始コマンドが中間部20を介して演出制御部203へ直ちに送信されることになる。
「大当たりコマンド」は、各種大当りの種別に合わせた大当たりのラウンド数を示すものであり、「MODE」が「E6H」で設定され、大当たりのラウンド数に合わせてDATAの情報が設定されている。
この大当たりコマンドは、大当りラウンドが開始されるときに、開始されたラウンド数に対応する大当たりコマンドが中間部20を介して演出制御部203へ送信される。具体的には、第1大入賞口開閉扉109a又は第2大入賞口開閉扉129aを開放させるときに、開放させるときのラウンド数に対応する大当たりコマンドが送信部520にセットされる。その後、送信部520にセットされている大当たりコマンドが中間部20を介して演出制御部203へ直ちに送信されることになる。
「大当たり終了コマンド」は、各種の大当りが終了したことを示すものであり、「MODE」が「E7H」で設定され、大当たりの種別に合わせてDATAの情報が設定されている。
この大当たり終了コマンドは、各種の大当りが終了するときに、大当たりの種別に対応する大当たり終了コマンドが中間部20を介して演出制御部203へ送信される。具体的には、大当り遊技終了処理の開始のときに、大当たりの種別に対応する大当たり終了コマンドが送信部520にセットされる。その後、送信部520にセットされている大当たり終了コマンドが中間部20を介して演出制御部203へ直ちに送信されることになる。
「鍵コマンド」は、パチンコ遊技機1で認証処理を実行するため認証データを復号化させることを示すものであり、「MODE」が「E8H」で設定され、鍵決定部531で決定された各種の鍵データに合わせてDATAの情報が設定されている。
この鍵コマンドは、パチンコ遊技機1で認証処理を実行するときに中間部20へ送信される。中間部20は、主制御部10から鍵コマンドを受信すると、鍵コマンドを用いて認証データを復号化して認証処理を開始し、得られた認証結果を演出制御部203へ送信する。演出制御部203は、中間部20から送信された認証結果に応じた処理を行う。パチンコ遊技機1で認証処理を実行するタイミングは基本的に任意に設定することができる。但し、演出制御部203では、認証処理の他に通常の遊技進行に伴って演出処理を実行する必要があるため、演出制御部203における認証処理の処理負荷はできるだけ抑制することが望ましい。よって、例えば、電源投入時や客待ちデモ開始時に、パチンコ遊技機1で認証処理を実行させることが考えられる。
例えば、鍵コマンドの送信タイミングを電源投入時と設定した場合、メインCPUコア500は、電源投入コマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得された鍵データを用いて鍵コマンドを構成し、送信部520にセットする。その後、送信部520にセットされている鍵コマンドが中間部20へ直ちに送信されることになる。
また、例えば、鍵コマンドの送信タイミングを客待ちデモ開始時と設定した場合、鍵コマンドは、客待ちデモコマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得された鍵データを用いて構成され、送信部520にセットされる。その後、送信部520にセットされている鍵コマンドが中間部20へ直ちに送信されることになる。以下、本実施の形態では、電源投入時に鍵コマンドを送信することとして説明する。
[遊技機の動作処理]
次に、上記構成のパチンコ遊技機1の動作処理について、図面を参照して説明する。以下、主制御部10による中間部20及び演出制御部203への制御コマンドの送信を含む動作処理について、図6に示すフローチャートを参照して説明する。主制御部10の構成部であるメインCPUコア500は、パルス発生部540のクロックパルス発生回路541から出力されるクロック信号に基づいて、所定の周期(例えば4ミリ秒)ごとに制御コマンドの実行等の処理を行う。
ステップS1において、まず、主制御部10を構成するメインCPUコア500は、パチンコ遊技機1の電源投入に伴う初期設定処理を実行した後、ステップS2へ進む。なお、パチンコ遊技機1に電源が投入された際には、周辺基板等が主制御基板から受信する制御コマンドを確実に取り込むために、周辺基板等が立ち上がってRAM領域の初期化を行い、待機状態となった後、主制御基板が立ち上がるように構成されている。メインCPUコア500は、初期設定処理として、例えば、スタックポインタに予め決められた所定値を設定するとともに、中間部20や演出制御部203が待機状態になることを待つために、一定時間(例えば、約1秒間)だけ待機する。
ステップS2において、メインCPUコア500は、図5に示す電源投入コマンドを送信部520にセットし、中間部20へ送信する。電源投入コマンドをセットした後、メインCPUコア500は、ステップS3へ進む。電源投入コマンドを受信すると、中間部20は、演出制御部203及び演出制御部203を介して図柄表示部104やランプ制御部205のそれぞれに対して電源投入時の演出用の制御コマンド、具体的には、遊技機が非遊技状態における客待ちのデモ画面を表示するための客待ちデモコマンド、あるいは、ランプの点灯等を行うための制御コマンドを送信する。
なお、電源投入コマンドは、電源投入後に電源投入に伴う処理を実行させるための制御コマンドを示し、各制御基板が立ち上がった後に、主制御部10から中間部20や中間部20を介して演出制御部203等へ送信される制御コマンドであって、電源投入後の立ち上げ時における遊技を制御するための初期制御情報、例えば、制御モード、バックアップデータ等を送信するための制御コマンド、あるいは初期演出表示の制御を行うための制御コマンド、各種のデモ表示を開始させるための制御コマンドである。また、この電源投入コマンドは遊技機のリセットボタンを押圧したときに実行される、上記制御モード、バックアップデータ等を送信するための制御コマンドも含む。
ここで、メインCPUコア500は、鍵コマンドの送信タイミングを電源投入時と設定した場合、ステップS2の後にパルス発生部540からのクロック信号に基づいて割込処理を行う。電源投入コマンドが送信部520にセットされた時から所定時間が経過した後に、鍵決定部531から取得した鍵データを用いて鍵コマンドを構成し、送信部520にセットする。その後、送信部520にセットされている鍵コマンドが中間部20へ直ちに送信され、中間部20にて認証処理が開始される。なお、認証処理の詳細については後述する。
ステップ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にセットし、中間部20を介して演出制御部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にセットし、中間部20を介して演出制御部203へ送信した後、ステップS14へ進む。
ステップS14において、メインCPUコア500は、図柄変動時間が経過したか否かを判断する。ステップS14の判断結果が「NO」の場合、すなわち、図柄変動時間が経過していない場合には、メインCPUコア500は、同判断を繰り返す。そして、図柄変動時間が経過すると、ステップS14の判断結果が「YES」となり、メインCPUコア500は、ステップS15へ進む。
ステップS15において、メインCPUコア500は、図柄停止コマンドを送信部520にセットし、中間部20を介して演出制御部203へ送信した後、ステップS16へ進む。
ステップS16において、メインCPUコア500は、大当たり開始コマンドを送信部520にセットし、中間部20を介して演出制御部203へ送信した後、ステップS17へ進む。
ステップS17において、メインCPUコア500は、大当たり中の各ラウンドに対応するコマンド(大当たりコマンド)を送信部520にセットし、中間部20を介して演出制御部203へ順次送信し、すべてのラウンドの大当たりコマンドの送信を終了した後、ステップS18へ進む。
ステップS18において、メインCPUコア500は、大当たり終了コマンドを送信部520にセットし、中間部20を介して演出制御部203へ送信した後、ステップS22へ進む。
一方、ステップS12の判断結果が「NO」の場合、すなわち、ステップS10の処理で取得した大当たり判定用乱数が予め定められた大当たり乱数でない場合には、メインCPUコア500は、ステップS19へ進む。
ステップS19において、メインCPUコア500は、「リーチ有りのはずれ」の場合には「リーチ有りのはずれ」に対応する図柄変動パターンコマンド(はずれリーチコマンド)を、「リーチ無しのはずれ」の場合には「リーチ無しのはずれ」に対応する図柄変動パターンコマンド(はずれコマンド)を送信部520にセットし、中間部20を介して演出制御部203へ送信した後、ステップS20へ進む。
ステップS20において、メインCPUコア500は、図柄変動時間が経過したか否かを判断する。ステップS20の判断結果が「NO」の場合、すなわち、図柄変動時間が経過していない場合には、メインCPUコア500は、同判断を繰り返す。そして、図柄変動時間が経過すると、ステップS20の判断結果が「YES」となり、メインCPUコア500は、ステップS21へ進む。
ステップS21において、メインCPUコア500は、図柄停止コマンドを送信部520にセットし、中間部20を介して演出制御部203へ送信した後、ステップS22へ進む。
ステップS22において、メインCPUコア500は、パチンコ遊技機1の電源がオフにされたか否かを判断する。ステップS22の判断結果が「NO」の場合、すなわち、パチンコ遊技機1の電源がオフにされていない場合には、メインCPUコア500は、ステップS3へ戻り、ステップS3以降の処理を繰り返す。
一方、ステップS22の判断結果が「YES」の場合、すなわち、パチンコ遊技機1の電源がオフにされた場合には、メインCPUコア500は、ステップS23へ進む。
ステップS23において、メインCPUコア500は、終了処理コマンドを送信部520にセットし、中間部20を介して演出制御部203へ送信した後、本フローチャートによる処理を終了する。
以下、主制御部10と中間部20及び演出制御部203との間で行われる認証処理について説明する。
図7は、主制御部10による認証処理の手順の一例を示すフローチャートである。
ステップS101において、主制御部10に電源が投入され初期設定処理を行った後、暗号化部530は、メインCPUコア500からの指示によらず、自身が保持するアルゴリズムに従って今回の認証処理に使用する鍵データを決定する。暗号化部530を構成する鍵決定部531は、例えば、乱数生成手段等によって生成された乱数値を鍵データとして用いることができる。鍵決定部531は、決定した鍵データを自身の鍵データ用記憶領域に書き込むとともに、暗号回路533へ受け渡す。暗号回路533は、受け取った鍵データを自身の鍵データ用記憶領域に書き込む。
ステップS102において、暗号化部530は、データ記憶部510に記憶されている検査値を取り込み、検査値に暗号化処理を施し認証データを生成する。具体的には、暗号化部530を構成する暗号回路533は、データ記憶部510を構成するデータ記憶回路511の特定のアドレスに記憶されているデータをデータ入出力部532及び内部バス550を介して読み出す。そして、暗号回路533は、読み出した検査値を自身の検査値用記憶領域に記憶し検査値を取り込む。
ステップS103において、暗号化部530は、取り込んだ検査値に対して暗号化処理を施し認証データを生成する。具体的には、暗号回路533は、ステップS101で鍵決定部531から受け取った鍵データを自身の鍵データ用記憶領域から読み出し、検査値に対して読み出した鍵データを予め設定された暗号化方式で演算する。暗号回路533は、この演算結果を認証データとして認証データ用記憶領域に記憶し、認証データの送信タイミングまで保持しておく。
ステップS104において、メインCPUコア500は、電源投入後の初期設定処理を実行した後、制御コマンド(電源投入コマンド)を中間部20へ送信するべく、送信部520を構成するデータ入力部522に書き込む。具体的には、メインCPUコア500の処理部501は、データ記憶回路511に記憶されている制御コマンド(電源投入コマンド)を、データ入出力部502及び内部バス550を介して取り込む。そして、処理部501は、取り込んだ制御コマンド(電源投入コマンド)をデータ入力部522に書き込むための書き込み信号を、データ入出力部502を介して内部バス550へ出力する。そして、処理部501は、制御コマンド(電源投入コマンド)をデータ入出力部502及び内部バス550を介してデータ入力部522の記憶領域に書き込む。
ステップS105において、暗号化部530は、メインCPUコア500によってデータ入力部522に書き込まれた制御コマンド(電源投入コマンド)に認証データを付加して中間部20へ送信するべく、認証データの送信タイミングを設定する。具体的には、暗号回路533は、まず、メインCPUコア500がステップS104で制御コマンド(電源投入コマンド)をデータ入力部522に書き込む際に出力される書き込み信号を検知し、検知した書き込み信号を参照する。そして、暗号回路533は、この書き込み信号の出力を基準にデータ入力部522への制御コマンド(電源投入コマンド)の書き込みが完了する時点を計って、ステップS103で生成した認証データが、制御コマンド(電源投入コマンド)が書き込まれた直後にデータ入出力部522の記憶領域へ書き込まれるようにタイミングを設定する。
ステップS106において、暗号化部530は、ステップS105で設定した認証データの送信タイミングに基づいて、認証データの書き込み信号を出力して認証データをデータ入力部522へ書き込む。
ステップS107において、送信部520は、データ入力部522に制御コマンド(電源投入コマンド)及び認証データが書き込まれると、これらを一つの送信データとして中間部20へ送信する。具体的には、送信部520を構成するデータ入力部522は、ステップS104で書き込まれた制御コマンド(電源投入コマンド)の直後にステップS106で書き込まれた認証データを連続して送信回路521へ受け渡す。送信回路521は、受け渡された制御コマンド(電源投入コマンド)及び認証データを一つの送信データとして中間部20へ直ちに送信する。結果として、認証データは、制御コマンド(電源投入コマンド)の直後に付加された一つの送信データとして中間部20へ送信される。なお、暗号回路533が、制御コマンドの書き込み信号を基準として認証データをデータ入出力部522に書き込むタイミングについては、後述する。
また、メインCPUコア500は、所定の周期(例えば4ミリ秒)ごとに制御コマンドの実行を行う。メインCPUコア500は、制御コマンド(電源投入コマンド)の送信から例えば4ミリ秒経過した後、鍵コマンドの実行を行う。具体的には、以下のステップS108〜S110の処理である。
ステップS108において、まず、メインCPUコア500の処理部501は、暗号化部530の鍵決定部531に対して鍵データの読み出し指示を行う。
ステップS109において、鍵決定部531は、処理部501からの鍵データの読み出し指示を受けると、ステップS101で決定した鍵データを鍵データ用記憶領域から読み出し、データ入出力部532及び内部バス550を介してメインCPUコア500のデータ入出力部502へ出力する。データ入出力部502は、出力された鍵データを処理部501に受け渡す。
ステップS110において、処理部501は、受け取った鍵データを用いて鍵コマンドを生成して、データ入出力部502及び内部バス550を介してデータ入力部522の記憶領域に書き込む。
ステップS111において、送信部520は、データ入力部522に鍵コマンドが書き込まれると、書き込まれた鍵コマンドを中間部20へ送信する。具体的には、送信部520を構成するデータ入力部522は、ステップS110で書き込まれた鍵コマンドを送信回路521に受け渡す。送信回路521は、受け渡された鍵コマンドを中間部20へ直ちに送信する。なお、処理部501は、鍵コマンドをデータ入力部522へ書き込む際に、ステップS104と同様に、書き込み信号を出力する。暗号回路533は、ステップS105と同様に、ステップS110での書き込み信号の出力を基準として、次回の認証処理に用いる認証データの送信タイミングを決定することができる。
ステップS112において、暗号化部530は、ステップS101と同様の方法で鍵データを更新する。なお、鍵データの更新のタイミングは、ステップS109の後、すなわち、暗号化部530がステップS108のメインCPUコア500からの鍵データの読み出し指示に応答して、ステップ109で鍵データを出力した後とする。なお、鍵データの更新タイミングについては後述する。
次に、図7で説明した電源投入コマンド送信時にパチンコ遊技機1で認証処理を実行させる場合の、主制御部10の鍵コマンド及び認証データの送信タイミングについて、図8を用いて説明する。図8の横軸は時間軸を表す。なお、図8は、電源投入直後のRAM領域の初期化処理や動作安定化のための待機処理等の初期設定処理の説明は省略している。また、主制御部10はクロック信号の立ち上り時に各構成部の動作開始時点が同期されるものとして説明する。また、転送エラーによる遅延はないものとする。
図8の(ア)の時点に示すように、主制御部10に電源が投入されると、メインCPUコア500とは独立して暗号化部530にて鍵データが決定され認証データが生成される。なお、(ア)の時点で生成された認証データを認証データ(A)とする。
そして、(イ)の時点に示すように、メインCPUコア500にて制御コマンド(電源投入コマンド)が実行される。具体的には、メインCPUコア500にて書き込み信号が送信部520へ出力される。
なお、主制御部10のメインCPUコア500では、所定の周期ごとに制御コマンドが実行されるが、図8では、この制御コマンドの実行周期を、模式的にクロック数=12クロックとして説明している。よって、メインCPUコア500の動作は、(イ)の時点で示した制御コマンド(電源投入コマンド)の書き込みが行われた時点からカウントして12クロック目に次の動作が開始される。
そして、(ウ)の時点に示すように、送信部520を構成するデータ入力部522へ制御コマンド(電源投入コマンド)の書き込みが開始される。
そして、(エ)の時点に示すように、データ入力部522へ書き込まれた制御コマンドは、一定のデータサイズごとに(例えば1バイトごと)送信部520を構成する送信回路521へ受け渡される。データ入力部522から受け渡された制御コマンドは、送信回路521にて中間部20へ送信される。
ここで、送信部520において、データ入力部522から送信回路521へ受け渡される一定のデータサイズの単位を「セグメント」という。データ入力部522は、送信回路521の記憶領域に1セグメント以上の空き容量が存在している場合、データ入力部522の記憶領域に書き込まれたデータを1セグメントずつ送信回路521へ受け渡す。そして、送信回路521への受け渡しが完了したデータ入力部522のセグメントは、受け渡しが完了した順番に直ちに消去され、データ入力部522の記憶領域に1セグメント分の空き容量が確保される。
1セグメント当たりのデータサイズは、データ入力部522や送信回路521を構成する記憶領域の容量などに従い予め設定されている。本実施の形態では、データ入力部522の記憶領域の容量を2バイト、1つのセグメント当たりのデータサイズを1バイトとして説明する。また、1つの制御コマンド当たりのデータサイズは2バイト、1つの認証データ当たりのデータサイズは1バイトとして説明する。また、データ入力部522の記憶領域は空の状態(データが記憶無しの状態を示すフラグやエンプティ信号がオンの状態)から始まるものとして説明する。
また、メインCPUコア500や暗号化部530が、制御コマンドや認証データの書き込み処理の実行に要する時間を、「演算処理時間:Ta」とする。データ入力部522に1バイト分のデータが書き込み開始されてから完了するまでに要する時間を、「書き込み所要時間:Tb」とする。データ入力部522から送信回路521へ1セグメント分のデータが受け渡し開始されてから完了するまでに要する時間を、「受け渡し所要時間:Tc」とする。
本実施の形態では、書き込み所要時間Tb=受け渡し所要時間Tcとして説明する。また、データ入力部522への1バイト分のデータの書き込み完了と同時に、データ入力部522から送信回路521へ1セグメント分のデータの受け渡しが開始されるものとして説明する。
図8の(ウ)の時点では、データ入力部522の記憶領域に、制御コマンドの上位1バイトの書き込みが開始される。
そして、(エ)の時点に示すように、制御コマンドの上位1バイトの書き込み所要時間(Tb1)が経過してデータ入力部522への書き込みが完了すると、制御コマンドの上位1バイトを第1セグメントとして送信回路521への受け渡しが直ちに開始される。また、これと同時に、制御コマンドの下位1バイトのデータ入力部522への書き込みが開始される。
メインCPUコア500が制御コマンドの下位1バイトをデータ入力部522へ書き込むタイミングは、上位1バイトの書き込み実行時点(図8では(イ)の時点)を基準として、メインCPUコア500における上位1バイトの演算処理時間(Ta1)と、データ入力部522における上位1バイトの書き込み所要時間(Tb1)との合計時間(Ta1+Tb1)が経過した直後(図8では(エ)の時点)に、データ入力部522へ下位1バイトの書き込みが開始されるように予め設定されている。
その後、(カ)の時点に示すように、制御コマンドの下位1バイトの書き込み所要時間(Tb2)が経過してデータ入力部522への書き込みが完了すると、制御コマンドの下位1バイトを第2セグメントとして送信回路521への受け渡しが直ちに開始される。
また、(カ)の時点では、第1セグメント(制御コマンドの上位1バイト)の受け渡し所要時間(Tc1)が経過して送信回路521への受け渡しが完了する。本実施の形態では、データ入力部522への書き込み完了と同時に送信回路521への受け渡しが開始されるとともに、書き込み所要時間Tb=受け渡し所要時間Tcであるため、Tb2が経過し第2セグメントの受け渡しが開始する時点と、Tc1が経過し第1セグメントの受け渡しが完了する時点とが同時点となる。すなわち、送信回路521における第1セグメント(制御コマンドの上位1バイト)の受け渡しが完了した直後に第2セグメント(制御コマンドの下位1バイト)の受け渡しが開始する。
これによって、第1セグメント(制御コマンドの上位1バイト)と第2セグメント(制御コマンドの下位1バイト)とは送信回路521の連続した記憶領域に記憶されることとなり、第1セグメントと第2セグメントとは一連の送信データとして中間部20へ送信可能となる。そして、送信回路521への第1セグメントの受け渡しが完了した直後、データ入力部522に記憶されている制御コマンドの上位1バイト(第1セグメント)は消去されるため、データ入力部522において、後述する認証データの書き込みが可能な1バイト分の空き容量が確保されることとなる。
また、(ウ)の時点では、(イ)の時点での書き込み信号の出力をトリガとして、暗号化部530にて認証データの送信タイミングが設定される。言い換えると、暗号化部530が認証データをデータ入力部522へ書き込む処理を実行するタイミングを設定する。本実施の形態では、認証データが、制御コマンドの直後に付加されて制御コマンドと併せて一つの送信データを形成し、中間部20へ送信されるようなタイミングである。すなわち、暗号化部530が認証データをデータ入力部522へ書き込む処理を実行するタイミングは、送信回路521における第2セグメント(制御コマンドの下位1バイト)の受け渡しが完了した直後に認証データの受け渡しが開始するようなタイミングである。
具体的には、暗号化部530が認証データをデータ入力部522へ書き込む処理を実行するタイミングは、メインCPUコア500から出力された制御コマンドの書き込み信号の入力時点(図8では(ウ)の時点)を基準として、メインCPUコアの制御コマンドの上位1バイトの書き込み所要時間(Tb1)と、下位1バイトの書き込み所要時間(Tb2)との合計時間(Tb1+Tb2)から、暗号化部530における認証データの演算処理時間(Ta3)を差し引いた時間(Tb1+Tb2−Ta3)が経過した時点(図8では(ウ)の時点からカウントして5クロック目の(オ)の時点)に、予め設定されている。
このように設定すると、図8では(カ)の時点に示すように、暗号化部530における認証データの演算処理時間(Ta3)が経過後、データ入力部522への認証データの書き込みが開始される。
そして、(キ)の時点に示すように、認証データの書き込み所要時間(Tb3)が経過してデータ入力部522への書き込みが完了すると、認証データを第3セグメントとして送信回路521への受け渡しが直ちに開始される。
また、(キ)の時点では、第2セグメント(制御コマンドの下位1バイト)の受け渡し所要時間(Tc2)が経過して送信回路521への受け渡しが完了する。本実施の形態では、データ入力部522への書き込み完了と同時に送信回路521への受け渡しが開始されるとともに、書き込み所要時間Tb=受け渡し所要時間Tcであるため、Tb3が経過し第3セグメントの受け渡しが開始する時点と、Tc2が経過し第2セグメントの受け渡しが完了する時点とが同時点となる。すなわち、送信回路521における第2セグメント(制御コマンドの下位1バイト)の受け渡しが完了した直後に第3セグメント(認証データ)の受け渡しが開始する。
これによって、第2セグメント(制御コマンドの下位1バイト)と第3セグメント(認証データ)とは送信回路521の連続した記憶領域に記憶されることとなり、第2セグメントと第3セグメントとは、第1セグメントと併せて、一連の送信データとして中間部20へ送信可能となる。よって、制御コマンドの直後に認証データ(A)が付加されて一つの送信データを形成し、中間部20へ送信されることとなる。
また、送信回路521への第2セグメントの受け渡しが完了したため、データ入力部522に記憶されている制御コマンドの下位1バイト(第2セグメント)は消去される。
その後、(ケ)の時点では、第3セグメント(認証データ)の受け渡し所要時間(Tc3)が経過して送信回路521への受け渡しが完了する。そして、送信回路521への第3セグメントの受け渡しが完了したため、データ入力部522に記憶されている認証データ(第3セグメント)は消去される。
認証データの送信タイミングを上記のように設定することで、認証データのデータ入力部522への書き込みタイミングが他の送信データ(上記では制御コマンド)の書き込みタイミングと重複して他の送信データが上書きされたり、認証データの書き込みタイミングにデータ入力部522の記憶領域に空き容量が存在せず、データ入力部522にてオーバーフローが発生したりすることを抑止することができる。このことが、中間部20での認証処理の際に、認証データと鍵データとの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することにつながる。
また、認証データの送信タイミングを上記のように設定することで、認証データのデータ入力部522への書き込みタイミングと、制御コマンドのデータ入力部522への書き込みタイミングの時間軸上の位置関係が明確化され、認証データは制御コマンドの直後に必ず付加され、一つの送信データとして送信されることとなる。これにより、認証データは、他の制御コマンドに紛れて中間部20へ送信されることとなる。よって、不正行為者が、主制御部10と中間部20の間の伝送データを窃取して、認証データの中間部20への送信タイミングを不正に解析することが困難となり、パチンコ遊技機1のセキュリティ強度を向上することができる。
その後、(ク)の時点に示すように、(イ)の時点からカウントして12クロック目では、鍵コマンドの実行を開始するために、メインCPUコア500にて鍵データの読み出し指示が暗号化部530に対して行われる。
そして、(ケ)の時点に示すように、暗号化部530にて鍵データの読み出し指示を受けると、メインCPUコア500に対して鍵データが直ちに出力される。この鍵データは、認証データ(A)を生成した際に用いられた鍵データと同一であるため、鍵データ(A)とする。
そして、(コ)の時点に示すように、メインCPUコア500にて鍵データ(A)を受け取ると、鍵コマンドが直ちに実行される。具体的には、メインCPUコア500にて書き込み信号が送信部520へ出力される。
そして、(サ)の時点に示すように、データ入力部522へ鍵データ(A)より構成された鍵コマンドの書き込みが開始される。
そして、(ス)の時点に示すように、データ入力部522へ書き込まれた鍵データ(A)より構成された鍵コマンドは、上位1バイトから始まってセグメント単位で送信回路521へ受け渡される。
また、(シ)の時点に示すように、暗号化部530にて鍵データの更新が行われる。図8では、鍵データ(A)から鍵データ(B)に変更されたとする。ここで、鍵データの更新タイミングは、暗号化部530が、メインCPUコア500からの鍵データの読み出し指示に応答して、鍵データを出力した後の時点(図8の(コ)の時点)を基準として、規定時間経過後に設定する。
仮に、鍵データの更新タイミングを、図8の(コ)の時点より前に設定すると、(カ)の時点でデータ入力部522へ書き込んだ認証データの生成に用いた鍵データと、(サ)の時点でデータ入力部522へ書き込んだ鍵コマンドを構成する鍵データとが一致しなくなるおそれが生じる。そうすると、中間部20では、鍵コマンドを受信して認証処理を開始しても認証データを復号化することができない。
従って、鍵データの更新タイミングは、暗号化部530が、メインCPUコア500からの鍵データの読み出し指示に応答して、鍵データを出力した後の時点(図8では(コ)の時点)以降とする。
鍵データの更新タイミングを上記のように設定することで、中間部20での認証処理の際に、認証データと鍵データとの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することができる。
その後、(ス)の時点に示すように、暗号化部530にて2回目の認証データの生成が行われる。この認証データは、(シ)の時点で更新された鍵データ(B)を用いて生成されるため、認証データ(B)とする。
そして、(セ)の時点に示すように、鍵コマンドの書き込み信号の入力時点(図8では(サ)の時点)を基準として、認証データ(A)の送信タイミング設定時と同様に、所定時間(図8では5クロック分)遅延して、暗号化部530にて認証データ(B)がデータ入力部522へ書き込まれる。
そして、(ソ)の時点に示すように、データ入力部522へ認証データ(B)の書き込みが開始される。
そして、(タ)の時点に示すように、データ入力部522へ書き込まれた認証データ(B)は、鍵コマンド(A)の直後に連続して送信回路521へ受け渡される。そして、認証データ(B)は、鍵コマンド(B)の直後に付加された一つの送信データとして、中間部20へ送信される。
その後、(チ)の時点に示すように、(コ)の時点からカウントして12クロック目では、鍵コマンドの実行を開始するために、メインCPUコア500にて鍵データの読み出し指示が暗号化部530に対して行われる。これ以降は、暗号化部530における鍵データの出力等、図8の(ケ)の時点以降と同様であるため、説明を省略する。
図8では、鍵コマンドを送信する契機となる電源投入コマンドが実行された後、所定の周期として所定クロック数(図8では12クロック)経過した後に、鍵コマンドが実行されている例を示したが、上記の所定の周期はクロック数に限定されず、所定時間や制御コマンドの所定送信回数等を用いてもよい。また、鍵コマンドを送信する契機となる制御コマンドも、1種類の制御コマンドに限定する必要はなく、例えば、電源投入コマンドと客待ちデモコマンドの2種類、或いは2種類以上の制御コマンドを契機とするように構成してもよい。また、鍵コマンドを送信する契機となる制御コマンドを、予め設定した取り決めに従って変更するように構成してもよい。また、図8では、鍵コマンドを送信する契機となる制御コマンドが送信される度に認証データを逐次送信しているが、例えば、鍵コマンドを送信する契機となる制御コマンドが2回送信されたら1回だけ認証データ(及び鍵コマンド)を送る等と構成してもよい。
また、図8では、認証データの送信タイミングを設定するにあたって、鍵コマンドを送信する契機となる制御コマンドの書き込み信号を基準として、基準となった当該制御コマンドの直後に認証データが付加されるようなタイミングに設定されている。しかしながら、本発明はこれに限定されず、例えば、鍵コマンドを送信する契機となる制御コマンドの書き込み信号を基準として、制御コマンドが特定回数送信された後に送信される制御コマンドの直後や、特定時間や特定クロック数経過した後に送信される制御コマンドの直後などに、認証データが付加されるように送信タイミングを設定することとしてもよい。また、認証データの送信タイミングは、鍵コマンドを送信する契機となる制御コマンドの書き込み信号の出力を基準とするだけではなく、鍵コマンドを送信する契機となる制御コマンドそのものの出力や、データ入力部522に書き込みフラグが立てられたことを基準とすることもできる。
また、図8では、鍵データの更新タイミングを設定するにあたって、認証データの送信と鍵コマンドの送信とが1回ずつ完了する度に、新たな鍵データで認証データが生成されるように、更新タイミングが設定されている。そして、メインCPUコア500からの鍵データの読み出し指示に応答した暗号化部530の鍵データの出力を基準として、規定時間経過した後(図8では(コ)の時点を基準として(シ)の時点に到達後)に、鍵データの更新タイミングを設定している。しかしながら、本発明はこれに限定されず、例えば、鍵データの読み出し指示に応答した鍵データの出力を基準として、規定クロック数が経過した後や、制御コマンドの送信回数が規定回数経過した後などとしてもよい。
以下、中間部20による認証処理を含む動作処理について、図9に示すフローチャートを参照して説明する。中間部20のCPU20aを構成するCPUコア(図示せず)は、中間部20に設けられたクロックパルス発生回路(図示せず)から出力されるクロック信号に基づいて、所定の周期(例えば2ミリ秒)ごとに、制御コマンドに応じた処理等を行う。
ステップS201において、中間部20のCPUコアは、まず、パチンコ遊技機1の電源投入後の初期設定処理の後、主制御部10から送信された制御コマンドや各種データ(以下、「制御コマンド等」という)を受信したか否かを判断する。具体的には、中間部20のCPUコアは、中間部20を構成するデータ入出力部(図示せず)を介してRAM20cの受信データ用記憶領域に、主制御部10から送信された制御コマンド等が書き込まれているか否かを確認して、制御コマンド等を受信したか否かを判断する。そして、中間部20のCPUコアは、受信データ用記憶領域に主制御部10から送信された制御コマンド等が書き込まれていない場合、本フローチャートによる処理を終了し、受信データ用記憶領域に制御コマンド等が書き込まれている場合、ステップS202へ進む。
ステップS202において、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータの内容を解析する。具体的には、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータが、認証データが付加された制御コマンドであるか否かを判断する。そして、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータが、認証データが付加された制御コマンドでない場合、ステップS205へ進み、認証データが付加された制御コマンドである場合、ステップS203へ進む。なお、認証データが付加された制御コマンドであるか否かの判断は、例えば、認証データが付加された制御コマンドのデータサイズが、通常の制御コマンドのデータサイズよりも多いか否かを確認することによって行うことができる。
ステップS203において、中間部20のCPUコアは、認証データが付加された制御コマンドから認証データを抽出し、ステップS204へ進む。
ステップS204において、中間部20のCPUコアは、抽出した認証データをRAM20cの認証データ用記憶領域に書き込んで記憶させておき、ステップS205へ進む。
ステップS205において、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータが、鍵コマンドか否かを判断する。そして、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータが、鍵コマンドである場合、ステップS208へ進み、鍵コマンドでない場合、ステップS206へ進む。
ステップS206において、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータ(鍵コマンド及び認証データ以外のデータ)を演出制御部203へそのまま送信させ、主制御部10から送信されたデータを演出制御部203へ中継する。具体的には、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータを、そのままRAM20cの送信データ用記憶領域に書き込み、ステップS207へ進む。
ステップS207において、中間部20のCPUコアは、送信データ用記憶領域に書き込まれたデータを送信データとして、中間部20を構成する送信部(図示せず)にて、演出制御部203へ直ちに送信させ、本フローチャートによる処理を終了する。
ステップS208において、中間部20のCPUコアは、受信データ用記憶領域に書き込まれたデータが鍵コマンドである場合、受信データ用記憶領域の鍵コマンドを構成する鍵データをRAM20cの鍵データ用記憶領域に書き込んで記憶させる。
ステップS209において、中間部20のCPUコアは、認証データ用記憶領域に予め受信した認証データが記憶されているか否かを確認する。そして、中間部20のCPUコアは、認証データ用記憶領域に認証データが記憶されていない場合、未だ認証処理が行える段階ではないとして、本フローチャートによる処理を終了する。一方、中間部20のCPUコアは、認証データ用記憶領域に認証データが記憶されている場合、ステップS210へ進む。
ステップS210において、中間部20のCPUコアは、認証データ用記憶領域に認証データが記憶されている場合、鍵データ用記憶領域及び認証データ用記憶領域から鍵データ及び認証データを読み出し、ステップS211へ進む。なお、鍵データ用記憶領域及び認証データ用記憶領域から鍵データ及び認証データを読み出す際には、両記憶領域に書き込まれた順番と両記憶領域から読み出す順番とが一致するように取り決めておく(いわゆる、先入れ先出し。以下、「先入れ先出しのルール」という)。これにより、認証データの生成に用いた鍵データと鍵コマンドを構成する鍵データとがより確実に一致し、鍵データと認証データの不一致によって復号化処理が実行不可となることを防止し、認証処理の確度を向上することができる。
ステップS211において、中間部20のCPUコアは、読み出した鍵データと認証データとを用いて検査値を抽出する。具体的には、中間部20のCPUコアは、認証データに対して鍵データを予め設定された復号化方式で演算する。中間部20のCPUコアは、この演算結果が検査値に相当すると認識し、RAM20cの検査値用記憶領域に書き込んで記憶しておき、ステップS212へ進む。
ステップS212において、中間部20のCPUコアは、中間部20を構成するROM20bの所定の記憶領域に予め記憶された期待値を読み出し、ステップS213へ進む。
ステップS213において、中間部20のCPUコアは、検査値用記憶領域から検査値を読み出し、検査値と期待値とが一致するか否かを判断する。中間部20のCPUコアは、検査値と期待値とが一致する場合、今回の認証処理において主制御部10に対する個体認証が成功し、パチンコ遊技機1の正規性を認証することができたと判断し、ステップS214へ進む。一方、中間部20のCPUコアは、検査値と期待値とが一致しない場合、今回の認証処理において主制御部10に対する個体認証は不成功であり、パチンコ遊技機1で不正行為が発生したおそれがあると判断し、ステップS215へ進む。
ステップS214において、中間部20のCPUコアは、成功を示す認証結果データを生成し、ステップS216へ進む。
ステップS215において、中間部20のCPUコアは、不成功を示す認証結果データを生成し、ステップS216へ進む。
ステップS216において、中間部20のCPUコアは、得られた認証結果データを演出制御部203へ送信させる。具体的には、中間部20のCPUコアは、ステップS214又はステップS215で生成した成功又は不成功を示す認証結果データを、送信データ用記憶領域に書き込む。
ステップS217において、中間部20のCPUコアは、送信データ用記憶領域に書き込まれたデータを送信データとして、中間部20を構成する送信部にて、演出制御部203へ直ちに送信させ、本フローチャートによる処理を終了する。
以下、演出制御部203が実行する制御処理について、図10〜図13に示すフローチャートを参照して説明する。
図10は、演出制御部203によるメイン処理の手順の一例を示すフローチャートである。
ステップS1000において、演出制御部203のCPU203aを構成するサブCPUコア(図示せず)は、初期設定処理を行う。この処理において、サブCPUコアは、電源投入に応じて、演出制御部203のROM203bからメイン処理に関するプログラムコードを読み込む。これとともに、サブCPUコアは、演出制御部203のRAM203cに記憶されるフラグなどを初期化し、所定値に設定する処理を行う。この処理が終了した場合には、ステップS1200に処理を移す。
ステップS1100において、サブCPUコアは、演出用乱数更新処理を行う。この処理において、サブCPUコアは、RAM203cに記憶される演出用乱数値を更新する処理を行う。以降は、所定の割込処理が行われるまで、上記ステップS1100の処理を繰り返し行う。
図11は、演出制御部203による割込処理の手順の一例を示すフローチャートである。サブCPUコアは、演出制御部203に設けられたクロックパルス発生回路(図示せず)から出力されるクロック信号に基づいて、所定の周期(例えば2ミリ秒)ごとに、演出制御部203のタイマ割込処理を実行する。
ステップS1200において、サブCPUコアは、CPU203aのレジスタに格納されている情報をスタック領域に退避させる。
ステップS1300において、サブCPUコアは、演出制御部203で用いられる各種タイマカウンタの更新処理を行う。
ステップS1500において、サブCPUコアは、コマンド解析処理を行う。この処理において、サブCPUコアは、RAM203cの受信データ用記憶領域に書き込まれた制御コマンドの種別を解析する処理を行う。演出制御部203では、主制御部10から中間部20を介して送信された制御コマンド等を受信すると、制御コマンド等の受信割込処理が発生し、サブCPUコアは、受信した制御コマンド等を受信データ用記憶領域に書き込んで記憶する。その後、本ステップS1500におけるコマンド解析処理において、サブCPUコアは、受信データ用記憶領域に記憶されたデータのうちの制御コマンドについて、そのコマンド種別を解析する処理を行う。なお、コマンド解析処理の詳細については後述する。
ステップS1600において、サブCPUコアは、認証結果データ解析処理を行う。この処理において、サブCPUコアは、受信データ用記憶領域に書き込まれた認証結果データの内容を解析する処理を行う。演出制御部203では、中間部20から送信された認証結果データを受信すると、認証結果データの受信割込処理が発生し、サブCPUコアは、受信した認証結果データを受信データ用記憶領域に書き込んで記憶する。その後、本ステップS1600において受信データ用記憶領域に記憶された認証結果データの内容を解析し、認証結果が示す内容に応じた処理を実行する。なお、認証結果データ解析処理の詳細については後述する。
ステップS1700において、サブCPUコアは、演出ボタン検出部220の信号のチェックを行い、演出ボタン検出部220に関する演出入力制御処理を行う。
ステップS1800において、サブCPUコアは、RAM203cの送信データ用記憶領域に書き込まれた制御コマンドや各種データを図柄表示部104やランプ制御部205へ送信するデータ送信処理を行う。
ステップS1900において、サブCPUコアは、ステップS1200で退避した情報をCPU203aのレジスタに復帰させる。
図12は、演出制御部203によるコマンド解析処理の手順の一例を示すフローチャートである。
ステップS1501において、サブCPUコアは、受信データ用記憶領域に制御コマンドが書き込まれているか否かを確認して、制御コマンドを受信したか否かを判断する。そして、サブCPUコアは、受信データ用記憶領域に制御コマンドが書き込まれていない場合、本フローチャートによる処理を終了し、受信データ用記憶領域に制御コマンドが書き込まれている場合、ステップS1510へ進む。
ステップS1510において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、客待ちデモコマンド(図6のステップS6参照)である場合、ステップS1511へ進み、客待ちデモコマンドでない場合、ステップS1520へ進む。
ステップS1511において、サブCPUコアは、客待ちデモ用の演出パターンを決定するデモ演出処理を行う。具体的には、客待ちデモ用の演出パターンを決定し、決定したデモ演出パターンに基づく演出処理コマンドをRAM203cの送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させる。
ステップS1520において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、大当たり用又ははずれ用の図柄変動パターンコマンド(図6のステップS13又はステップS19参照)である場合、ステップS1521へ進み、図柄変動パターンコマンドでない場合、ステップS1530へ進む。
ステップS1521において、サブCPUコアは、大当たり用又ははずれ用のそれぞれについて用意された各種変動演出パターンの中から、1つ変動演出パターンを決定する図柄変動演出処理を行う。具体的には、サブCPUコアは、図10のステップS1100において更新されている演出用乱数値から1つの乱数値を取得し、取得した演出用乱数値とROM203bに予め保持する変動演出パターン決定テーブルとに基づいて、1つの変動演出パターンを決定する。そして、サブCPUコアは、決定した変動演出パターンに基づく演出処理コマンドを送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させる。
ステップS1530において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、図柄停止コマンド(図6のステップS15又はステップS21参照)である場合、ステップS1531へ進み、図柄停止コマンドでない場合、ステップS1540へ進む。
ステップS1531において、サブCPUコアは、変動態様を示す演出図柄を停止表示させるための図柄停止演出処理を行う。具体的には、サブCPUコアは、図柄停止コマンドに基づく演出処理コマンドを送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させる。
ステップS1540において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、大当たり開始コマンド(図6のステップS16参照)である場合、ステップS1541へ進み、大当たり開始コマンドでない場合、ステップS1550へ進む。
ステップS1541おいて、サブCPUコアは、大当たり開始演出パターンを決定する大当たり開始演出処理を行う。具体的には、サブCPUコアは、大当たり開始コマンドに基づいて大当たり開始演出パターンを決定し、決定した大当たり開始演出パターンに基づく演出処理コマンドを送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させる。
ステップS1550において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、大当たりコマンド(図6のステップS17参照)である場合、ステップS1551へ進み、大当たりコマンドでない場合、ステップS1560へ進む。
ステップS1551おいて、サブCPUコアは、ラウンド別の大当たりコマンドに対応する大当たり演出処理を行う。具体的には、サブCPUコアは、各大当たりラウンドのそれぞれに対応した大当たりコマンドに基づく演出処理コマンドを送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させる。
ステップS1560において、サブCPUコアは、受信データ用記憶領域に書き込まれている制御コマンドが、大当たり終了コマンド(図6のステップS18参照)である場合、ステップS1561へ進み、大当たり終了コマンドでない場合、本フローチャートによる処理を終了する。
ステップS1561において、サブCPUコアは、大当たり終了演出パターンを決定する大当たり終了演出処理を行う。具体的には、サブCPUコアは、大当たり終了コマンドに基づいて大当たり終了演出パターンを決定し、決定した大当たり終了演出パターンに基づく演出処理コマンドを送信データ用記憶領域に書き込んで送信データとし、図柄表示部140やランプ制御部205へ送信させ、本フローチャートによる処理を終了する。
図13は、演出制御部203による認証結果データ解析処理の手順の一例を示すフローチャートである。
ステップS1601において、サブCPUコアは、受信データ用記憶領域に認証結果データが書き込まれているか否かを確認して、認証結果データを受信したか否かを判断する。そして、サブCPUコアは、受信データ用記憶領域に認証結果データが書き込まれていない場合、本フローチャートによる処理を終了し、受信データ用記憶領域に認証結果データが書き込まれている場合、ステップS1610へ進む。
ステップS1610において、サブCPUコアは、受信データ用記憶領域に書き込まれた認証結果データが、認証成功を示す結果であるか否かを確認する。サブCPUコアは、認証結果データが認証成功を示す結果である場合、今回の中間部20での認証処理において主制御部10に対する個体認証が成功し、パチンコ遊技機1の正規性を認証することができたと判断して、本フローチャートによる処理を終了する。一方、サブCPUコアは、認証結果データが認証不成功を示す結果である場合、今回の中間部20での認証処理において主制御部10に対する個体認証は不成功であり、パチンコ遊技機1で不正行為が発生したおそれがあると判断し、ステップS1620へ進む。
ステップS1620において、パチンコ遊技機1で不正行為が発生したおそれがあると判断された場合、サブCPUコアは、その旨を報知する為に報知信号を出力し、本フローチャートによる処理を終了する。
サブCPUコアは、生成した報知信号を、例えば、図柄表示部104やランプ制御部205、あるいはパチンコ遊技機1を管理するセンター制御装置などへ送信する。図柄表示部104やランプ制御部205などは、受信した報知信号に基づいて、パチンコ遊技機1で不正行為が発生したおそれがある旨を報知する演出を実行する。この演出は、例えば、図柄表示部104に通常出現しないキャラクターを出現させたり、通常出現するキャラクターを通常とは異なる方法で出現させるなどである。また、図柄表示部104の輝度を変えたり、色を変えたり、ランプ制御部205に対して所定のランプを表示制御するようにしてもよい。いずれにせよ、遊技店の従業員が当該パチンコ遊技機1の前を通過した際に、その状態に気付くようにしてあればよい。また、この演出は、顧客がその状態に気付かないような演出でもよく、また、顧客が容易に気付く演出であってもよい。顧客が容易に気付く演出にすれば、不正行為を効率的に抑止することができる。
また、報知信号に「大当たり中」や「確率変動中」などのパチンコ遊技機1の遊技状態に関する情報を含めてもよい。これらの遊技状態に関する情報に基づいて、パチンコ遊技機1を管理するセンター制御装置などによって不正行為が行われているか否かの判断を行ってもよい。例えば、大当たり中や確率変動中は入賞が集中していても正常である場合がある。よって、大当たり中や確率変動中は、その他の状態とは異なる条件で不正行為のおそれがあるか否かについて判断するのがよい。また、遊技状態に関する情報は、報知信号に含めずに別信号として出力するようにしてもよい。この場合、従業員は、報知信号と遊技状態に関する情報の両方に基づいて、不正行為のおそれがあるか否かについて判断する。
なお、主制御部10と賞球制御部204との間に中間部20を設けた場合の認証処理は、主制御部10と演出制御部203との間に中間部20を設けた場合の認証処理とほぼ同様の手順で行われるため説明を省略する。
以上のように、本実施の形態では、暗号化制御回路10g(ハードウェア)で構成される暗号化部530が、主制御部10の個体認証に必要な認証データを、プログラムコードに記述されたメインCPUコア500からの指示によらず、独自に保持するアルゴリズムに従って生成し、中間部20へ自動的に送信している。また、認証データの復号化に必要な鍵データは、メインCPUコア500からの読み出し指示のみで暗号化制御回路10gから出力され、中間部20へ直ちに送信される。従って、主制御部10に対する認証機能を有しながらも、認証機能を有することで増大する主制御部10のCPUの処理負荷やプログラム容量を最大限抑制することができ、パチンコ遊技機1のセキュリティ強度の向上と処理速度の向上とを両立させることができる。
また、本実施の形態では、認証データの生成や送信に関する処理の制御は、暗号化部530自身のアルゴリズムで定義すればよい。また、鍵コマンドの実行に関する処理の制御も、メインCPUコア500が実行するプログラムコードに1種類の制御コマンド(鍵コマンド)に対応するコードを追加するだけよい。具体的には、鍵データの読み出し指示に関するコード及び鍵コマンドの書き込みに関するコードを追加するだけでよく、コードステップ数換算でそれぞれ僅か1命令分だけの追加で足りる。従って、認証データ及び鍵コマンドの送信タイミングの設定や鍵データの更新タイミング等は、特定時間経過後や特定クロック数経過後など自由なタイミング設計が可能であり、ソフトウェア制御の拡張性や柔軟性も備えた認証機能を提供することができる。これに加えて、メインCPUコア500が実行するプログラムコード全体にわたっての新たなタイミング設計を行う必要がないので、認証機能を追加するだけのタイミング設計で済み、機能の実装、機能の検証などを、より簡単に少ない作業工数で実施することができる。また、このことで認証機能を追加する際の設計自由度を高くすることができる。
また、本実施の形態では、認証データの復号化処理や検査値と期待値との照合処理といった認証処理の大部分は中間部20が実行する。よって、演出制御部203で認証処理が実行されるのは、中間部20から認証結果データを受信した場合のみである。すなわち、認証処理を行うことによって演出制御部203のCPUの処理負荷が増大するのは、認証結果データを受信したときのみであるため、演出制御部203の処理負荷が増大する割合を抑えることができる。また、演出制御部203が実行するプログラムコードには認証結果データ解析処理に関するプログラムコードを追加するだけでよい。従って、演出制御部203が実行するプログラムコード全体にわたっての新たなタイミング設計を行う必要がないので、認証結果データの解析機能を追加するだけのタイミング設計で済み、機能の実装、機能の検証などを、より簡単に少ない作業工数で実施することができる。また、このことで認証処理に関する機能を追加する際の設計自由度を高くすることができる。
また、本実施の形態では、鍵コマンドの送信タイミングを、電源投入コマンドを基準に設定し、パチンコ遊技機1の認証処理を電源投入時に実行している。この場合、電源投入コマンドは、パチンコ遊技機1の電源の投入時やリセット時など、パチンコ遊技機1の初期化処理を行う際(初期設定処理の後)に送信される。パチンコ遊技機1の初期化処理は、パチンコ遊技機1のメインの処理である遊技に係る処理とは異なる処理区分に分類される。したがって、本発明のように、パチンコ遊技機1の初期化処理中に認証処理を組み込めば、遊技処理中に認証処理を組み込む場合と比較して、プログラム設計やテストにかかる工程(工数)が増加する割合を低減することができる。すなわち、パチンコ遊技機1の初期化処理中に認証処理を組み込むことによって、開発コストの低減や品質管理上のメリットを得ることができる。また、パチンコ遊技機1の初期化処理中に認証処理を組み込めば、パチンコ遊技機1の起動直後に認証処理を行うため、遊技店が閉店した後に不正が行われた場合などであっても、顧客が入店する前に不正を検出することができる。よって、不正による被害が発生する危険性を低減することができる。
また、鍵コマンドの送信タイミングを、客待ちデモコマンドを基準に設定し、パチンコ遊技機1の認証処理を客待ちデモ時に実行した場合、客待ちデモコマンドは、パチンコ遊技機1が非遊技状態、すなわち、パチンコ遊技機1のメインの処理である遊技に係る処理が行われていない場合に送信されるので、認証処理による処理負荷の増大が遊技処理に影響を与えることがない。このため、主制御部10や周辺部30が高度な処理能力を有していない場合や、遊技処理の処理負荷が大きいパチンコ遊技機1であっても、認証処理機能を追加することができる。また、客待ちデモコマンドは、顧客がパチンコ遊技機1を操作する前に発行されるコマンドであるので、顧客がパチンコ遊技機1を操作する前に不正行為を検出することができる。
また、本実施の形態では、中間部20での認証処理の際に、受信した制御コマンドが、認証データが付加された制御コマンドであるか否かの判断を、受信した制御コマンドのデータサイズを比較することによって判断している。しかしながら、本発明はこれに限定されず、例えば、制御コマンドを構成するビット列に認証データが含まれていることを示す識別子を付与し、その識別子が示す内容によって判断することもできる。また、認証データを付加することとして予め取り決めた種別の制御コマンドを受信したか否かを確認することによって判断することもできる。この場合、認証データが付加されていない制御コマンドにも認証データと同一データサイズのダミーデータを付加して中間部20へ送信すると、認証データは、更に他の制御コマンドに紛れて中間部20へ送信されることとなる。よって、不正行為者が、主制御部10と中間部20の間の伝送データを窃取して、認証データの中間部20への送信タイミングを不正に解析することが更に困難となり、パチンコ遊技機1のセキュリティ強度を更に向上することができる。
また、本実施の形態では、中間部20での認証処理の際に、鍵コマンド及び認証データを構成する鍵データの種類が不一致とならないように、認証データの送信と鍵コマンドの送信とが1回ずつ完了する度に、新たな鍵データで認証データが生成されるように、鍵データの更新タイミングが設定されている。しかしながら、本発明はこれに限定されず、1回の鍵コマンドの送信が完了する間に複数回の認証データの送信が行われた後に、鍵データの更新を行うように構成してもよい。この場合、鍵データの更新が行われる前の認証データの送信回数は、中間部20の認証データ記憶領域にて保持可能な認証データ数以下に抑えておけばよい。このとき、中間部20では、復号化処理時の先入れ先出しのルールを守れば、本実施の形態のように、鍵コマンド受信時の直前に受信した認証データに対して復号化処理を施すことに限定されず、例えば、鍵コマンド受信時より所定回数前に受信した認証データに対して復号化処理を施すことができる。また、当該所定回数を示す情報や鍵データの更新状況を示した情報を鍵データとともに都度送信するように構成することもできる。
また、本実施の形態では、主制御部10において、認証データを先に送信した後に鍵コマンドを送信することとしたが、本発明はこれに限定されず、鍵コマンドを先に送信した後に認証データを送信することとしてもよい。このとき、中間部20にて、鍵コマンド受信時に復号化処理の対象となる認証データは、当該鍵コマンド受信時の直後に受信した認証データとなるが、復号化処理時は先入れ先出しではなく、後入れ先出しのルールを取り決めておけばよい。また、中間部20での認証処理のトリガを、鍵コマンドの受信ではなく認証データの受信とするように構成することもできる。
また、本実施の形態では、主制御部10を構成する送信部520は、送信部520のデータ入力部522へ書き込まれたデータを、データ入力部522から送信回路521へ受け渡した後、中間部20へ直ちに送信することとしているが、本発明はこれに限定されず、データ入力部522へ書き込まれたデータを、データ入力部522又は送信回路521にて一時的に保存し、送信部520においても中間部20への送信タイミングを計ることができるような構成としてもよい。また、本実施の形態では、認証データが制御コマンドの直後に付加されて中間部20へ送信されるような構成としているが、制御コマンドの直前に付加されて中間部20へ送信されるよう構成とすることもできる。この場合、認証データがデータ入力部522へ書き込まれるタイミングを、制御コマンドが書き込まれる直前となるように設定してもよいし、送信回路521にて認証データと制御コマンドの順番を組み替えて、中間部20へ送信してもよい。このことは、中間部20から演出制御部203への制御コマンドや認証結果データの送信についても同様であり、RAM20cの送信データ用記憶領域に書き込まれたデータを送信データとして、演出制御部203へ送信する際に、中間部20を構成する送信部にて送信データを一時的に保存し、送信部で演出制御部203への送信タイミングを計ることができるような構成としてもよい。
また、本実施の形態では、主制御部10では、検査値を暗号化して認証データを生成し、中間部20へ送信し、中間部20では、認証データに復号化して検査値を抽出し認証処理を行っている。そして、中間部20は、得られた認証結果に対して特に暗号化処理を施さずに、認証結果データとして演出制御部203へ送信している。しかしながら、本発明は、これに限定されない。例えば、認証データは、検査値に暗号化処理を施さずに検査値そのものを認証データとして中間部20へ送信してもよい。また、認証結果データは、得られた認証結果に対して暗号化処理を施したものを認証結果データとして演出制御部203へ送信してもよい。なお、認証データ及び認証結果データの双方とも暗号化処理が施されたものを用いる場合、中間部20は、受信した認証データの復号化処理に用いた鍵データと、生成する認証結果データの暗号化処理に用いる鍵データとは同じものを使用すればよい。すなわち、中間部20は、主制御部10から送信された鍵コマンドを構成する鍵データを用いて認証データを復号化した後、得られた認証結果に対して当該鍵データで暗号化処理を施して認証結果データを生成すればよい。
また、このような場合、本実施の形態では、主制御部10と演出制御部203との間に中間部20を設けているので、主制御部10を構成するCPU10aと演出制御部203を構成するCPU203aとの間の処理能力の差異や、主制御部10を構成するROM10bやRAM10cと演出制御部203を構成するROM203bやRAM203cとの間の記憶容量の差異を、中間部20において吸収することができる。これにより、主制御部10と演出制御部203との間で処理能力や記憶容量に差異がある場合でも、主制御部10と演出制御部203との間のセキュリティ強度を維持することができる。
すなわち、例えば、主制御部10を構成するCPU10aの処理能力や主制御部10を構成するROM10bやRAM10cの記憶容量が、演出制御部203を構成するCPU203aの処理能力や演出制御部203を構成するROM203bやRAM203cの記憶容量と比較して余裕がある場合、主制御部10は、検査値に対して複雑な暗号化処理を施して認証データを生成し中間部20へ送信する。中間部20は、受信した認証データを用いて認証処理を行い、得られた認証結果に対して比較的簡易な暗号化処理を施して(又は認証結果そのもので)認証結果データを生成し演出制御部203へ送信する。演出制御部203は、受信した認証結果データに対して比較的簡易な復号化処理を施して(又は認証結果データそのもので)認証処理を行うことができる。このように構成することにより、演出制御部203において複雑な復号化方式を採用しなくても、パチンコ遊技機1として高度のセキュリティ強度を維持することができる。
また、例えば、演出制御部203を構成するCPU203aの処理能力や演出制御部203を構成するROM203bやRAM203bの記憶容量が、主制御部10を構成するCPU10aの処理能力や主制御部10を構成するROM10bやRAM10cの記憶容量と比較して余裕がある場合、主制御部10は、検査値に対して比較的簡易な暗号化処理を施して(又は検査値そのもので)認証データを生成し中間部20へ送信する。中間部20は、受信した認証データを用いて認証処理を行い、得られた認証結果に対して複雑な暗号化処理を施して認証結果データを生成し演出制御部203へ送信する。演出制御部203は、受信した認証結果データに対して複雑な復号化処理を施して認証処理を行うこととなる。このように構成することにより、主制御部10において複雑な暗号化方式を採用しなくても、パチンコ遊技機1として高度のセキュリティ強度を維持することができる。
また、本実施の形態に係るパチンコ遊技機1では、中間部20をCPU、ROM、RAM等を備えて構成しているが、同様の機能をLSI等の集積回路として実現するように構成してもよい。
また、本実施の形態では、本発明をパチンコ遊技機に適用する例を示したが、これに限定されず、本発明は、雀球遊技機、アレンジボール等のパチンコ遊技機以外の弾球遊技機、スロットマシン等の回胴式遊技機などの他の遊技機にも適用することができる。これらの遊技機においても、本実施の形態と同様に構成することにより、本実施の形態と同様の効果を得ることができる。また、本実施の形態は、その目的及び構成等に特に矛盾や問題がない限り、互いの技術を流用することができる。