(実施の形態)
以下に添付図面を参照して、この発明にかかる電子機器の機能を有したぱちんこ遊技機と、このぱちんこ遊技機に搭載されている複数の基板間(主制御基板および周辺基板)の制御信号に含まれる制御コマンドを認証する認証方法および認証プログラムの好適な実施の形態を詳細に説明する。
(ぱちんこ遊技機の基本構成)
図1は、本発明のぱちんこ遊技機の遊技盤の一例を示す正面図である。遊技盤101の下部位置に配置された発射部(図2参照)の駆動によって発射された遊技球は、レール102a,102b間を上昇して遊技盤101の上部位置に達した後、遊技領域103内を落下する。遊技領域103には、図示を省略する複数の釘が設けられ、遊技球を各種の方向に向けて落下させるとともに、落下途中の位置には、遊技球の落下方向を変化させる風車や、入賞口が配設されている。
遊技盤101の遊技領域103の中央部分には、図柄表示部104が配置されている。図柄表示部104としては、たとえば液晶表示器(LCD)が用いられる。なお、図柄表示部104としては、LCDに限らずCRTなどを用いることもできる。図柄表示部104の下方には、始動入賞させるための始動入賞口105が配設されている。図柄表示部104の左右には、それぞれ入賞ゲート106が配設されている。
入賞ゲート106は、遊技球の通過を検出し、始動入賞口105を一定時間だけ開放させる抽選をおこなうために設けられる。図柄表示部104の側部や下方などには普通入賞口107が配設されている。普通入賞口107に遊技球が入賞すると、普通入賞時の賞球数(たとえば10個)の払い出しをおこなう。遊技領域103の最下部には、どの入賞口にも入賞しなかった遊技球を回収する回収口108が設けられている。
上述した図柄表示部104は、特定の入賞口に遊技球が入賞したとき(始動入賞時)に、複数の図柄の表示の変動を開始させ、所定時間後に図柄が停止する。この停止時に特定図柄(たとえば「777」)に揃ったとき、大当たり状態となる。大当たり状態のとき、下方に位置する大入賞口109が一定の期間開放を所定ラウンド(たとえば15ラウンド)繰り返し、入賞した遊技球に対応した賞球数を払い出す。
図2は、ぱちんこ遊技機の制御部の内部構成を示すブロック図である。制御部200は、複数の制御部により構成されている。図示の例では、主制御部201と、周辺部(演出制御部202、賞球制御部203)とを有する。主制御部201は、ぱちんこ遊技機の遊技にかかる基本動作を制御する。演出制御部202は、遊技中の演出動作を制御する。賞球制御部203は、払い出す賞球数を制御する。
主制御部201は、ROM212に記憶されたプログラムデータに基づき、遊技内容の進行に伴う基本処理を実行するCPU211と、CPU211の演算処理時におけるデータのワークエリアとして機能するRAM213、各検出部221〜224から各種データを受信するとともに、演出制御部202および賞球制御部203への各種データの送信をおこなうインタフェース(I/F)214などを備えて構成される。主制御部201は、たとえばいわゆる主制御基板によってその機能を実現する。
この主制御部201の入力側には、始動入賞口105に入賞した入賞球を検出する始動入賞口検出部221と、入賞ゲート106を通過した遊技球を検出するゲート検出部222と、普通入賞口107に入賞した遊技球を検出する普通入賞口検出部223と、大入賞口109に入賞した入賞球を検出する大入賞口検出部224とがI/F214を介して接続されている。これらの検出部としては、近接スイッチなどを用いて構成できる。
この主制御部201の出力側には、大入賞口開閉部231が接続され、この大入賞口開閉部231の開閉を制御する。大入賞口開閉部231は、大当たり時に大入賞口109を一定期間開放する機能であり、ソレノイドなどを用いて構成される。この大当たりは、生成した乱数(大当たり判定用乱数)に基づいて所定の確率(たとえば300分の1など)で発生するようあらかじめプログラムされている。
演出制御部202は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM242に記憶されたプログラムデータを実行して遊技中における演出制御をおこなう。この演出制御部202は、演出処理を実行するCPU241と、CPU241の演算処理時におけるデータのワークエリアとして機能するRAM243、図柄表示部104に表示させる画像データを書き込むVRAM244、主制御部201からの各種データの受信およびランプ制御部251や音声制御部252への各種データの送信をおこなうインタフェース(I/F)245などを備えて構成される。演出制御部202は、たとえばいわゆる演出基板によってその機能を実現する。また、演出制御部202の出力側には、上述した図柄表示部(LCD)104、ランプ制御部251、音声制御部252がI/F245を介して接続されている。
賞球制御部203は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM282に記憶されたプログラムデータを実行して賞球制御をおこなう。この賞球制御部203は、賞球制御の処理を実行するCPU281と、CPU281の演算処理時におけるデータのワークエリアとして機能するRAM283、主制御部201からの各種データの受信および発射部292との各種データの送受信をおこなうインタフェース(I/F)284などを備えて構成される。賞球制御部203は、たとえばいわゆる賞球基板によってその機能を実現する。
賞球制御部203は、接続される払出部291に対して入賞時の賞球数を払い出す制御をおこなう。また、発射部292に対する遊技球の発射の操作を検出し、遊技球の発射を制御する。払出部291は、遊技球の貯留部から所定数を払い出すためのモータなどからなる。賞球制御部203は、この払出部291に対して、各入賞口(始動入賞口105、普通入賞口107、大入賞口109)に入賞した遊技球に対応した賞球数を払い出す制御をおこなう。
発射部292は、遊技のための遊技球を発射するものであり、遊技者による遊技操作を検出するセンサと、遊技球を発射させるソレノイドなどを備える。賞球制御部203は、発射部292のセンサにより遊技操作を検出すると、検出された遊技操作に対応してソレノイドなどを駆動させて遊技球を間欠的に発射させ、遊技盤101の遊技領域103に遊技球を送り出す。
上記構成の主制御部201と、演出制御部202と、賞球制御部203は、それぞれ異なるプリント基板(主制御基板、演出基板、賞球基板)に設けられる。これに限らず、たとえば、賞球制御部203は、主制御部201と同一のプリント基板上に設けることもできる。
(主制御基板および周辺基板の機能的構成)
図3は、主制御基板(主制御部)および周辺基板(演出制御部、賞球制御部)の機能的構成を示すブロック図である。まず、主制御部201としての機能を有する主制御基板310の機能的構成について説明する。図3に示すように、主制御基板310は、周辺基板330を動作させるための制御コマンドを送信する機能部であり、制御コマンド格納部311、記録部312、補正データ生成部313、補正データ付加部314、補正データ送信部315、認証データ生成部316、認証データ付加部317、認証データ送信部318、ダミー認証データ生成部319、ダミー認証データ付加部320、ダミー認証データ送信部321によって構成される。
制御コマンド格納部311は、周辺基板330に送信する制御コマンドのデータ(制御コマンドデータ)を格納する。また、記録部312は、主制御基板310に固有の値や所定のプログラムコードを記録する。主制御部201に固有の値とは、たとえば主制御基板310が複数ある場合に、それぞれの主制御基板310を識別可能な値である。
主制御基板310は、たとえば、記録部312に記録された所定のプログラムコードにしたがって、制御コマンド格納部311から周辺基板330に送信する制御コマンドを選択して、周辺基板330に制御コマンドを送信する。なお、制御コマンド格納部311と記録部312とを別個に設けるのではなく、一体としてもよい。たとえば、記録部312に制御コマンドデータとプログラムコードと主制御基板310に固有の値とを格納してもよい。
補正データ生成部313は、主制御基板310から送信されたデータの照合に用いる期待値を補正するための補正データを生成する。期待値とは、たとえば周辺基板330にあらかじめ(製造時など)保持されている値であり、周辺基板330において主制御基板310から送信されたデータの照合をおこなう際に用いる値である。また、期待値は、固定した値ではなく、たとえば基本値から演算により生成される値でもよい。なお、主制御基板310が複数ある場合、それぞれの主制御基板310に対して期待値は異なることとする。このため、たとえば主制御基板310が他の主制御基板310に変更された場合、他の主制御基板310が正当な主制御基板310であっても、周辺基板330の期待値が補正されないと、周辺基板330においては照合がおこなえなくなってしまったり、正当な主制御基板310を不正な主制御部と判断してしまったりする。このような照合の不具合を防ぐために、主制御基板310は、周辺基板330に保持されている期待値を補正するための補正データを周辺基板330に送信する。
補正データ生成部313が補正データを生成するタイミングは、たとえば主制御基板310が他の主制御基板310に変更された場合である。この場合、補正データ生成部313は、周辺基板330に保持された変更前の主制御基板310に対応する期待値を、変更後の他の主制御基板310から送信されたデータの照合に用いる期待値に補正するための補正データを生成する。
補正データ生成部313による補正データの生成方法としては、記録部312によって記録された固有の値を用いて補正データを生成してもよい。具体的には、補正データ生成部313は、たとえば主制御基板310が他の主制御基板310に変更された場合、変更後の他の主制御基板310に設定されている固有の値と、記録部312に記録されている変更前の主制御基板310に設定されていた固有の値との差分を、補正データとして生成する。さらに、補正データ生成部313は、固有の値とともに、今回送信する制御コマンドを用いて補正データを生成してもよい。また、補正データ生成部313は、記録部312に記録されたプログラムコードを用いて補正データを生成してもよい。さらに、補正データ生成部313は、プログラムコードとともに、今回送信する制御コマンドを用いて補正データを生成してもよい。また、補正データ生成部313は、生成された補正データを暗号化してもよい。
補正データ付加部314は、周辺基板330に送信する制御コマンドがその周辺基板330にぱちんこ遊技機の電源投入時の処理を実行させるコマンド(以下、「電源オンコマンド」という)である場合、補正データ生成部313によって生成された補正データをこの電源オンコマンドに付加して制御信号を生成する。また、補正データ付加部314は、周辺基板330に送信する制御コマンドが主制御基板310のリセット後の電源オンコマンドである場合、この電源オンコマンドに補正データを付加してもよい。
なお、電源オンコマンドは、ぱちんこ遊技機の電源が投入された場合に限らず、ぱちんこ遊技機の動作をリセットする場合(リセットボタンの押下時)など、ぱちんこ遊技機の初期化処理をおこなう際に送信される。ここで、リセットとは、たとえばぱちんこ遊技機の備えるRAM213を初期化(クリア)するなどの処理である。
このように、補正データ付加部314は、主制御部201が周辺基板に電源オンコマンドを送信する際にのみ、制御信号に補正データを付加する。電源オンコマンドは、ぱちんこ遊技機の電源の投入時やリセット時など、ぱちんこ遊技機の初期化処理をおこなう際に送信される。初期化処理は、ぱちんこ遊技機のメインの処理である遊技(ゲーム進行)関連処理とは異なる処理区分に分類される。初期化処理中に期待値の補正処理を組み込めば、遊技関連処理中に補正処理を組み込む場合と比較して、プログラム設計やテストにかかる工程(工数)を低減することができる。すなわち、初期化処理中に補正処理を組み込むことによって、開発コストの低減や品質管理上のメリットを得ることができる。
また、初期化処理中に補正処理を組み込めば、周辺基板330において、ぱちんこ遊技機の起動直後に補正処理をおこなうため、ぱちんこ店が閉店した後に不正がおこなわれた場合などであっても、客が入店する前に不正を検出することができる。よって、不正による被害が発生する可能性を低減することができる。
また、電源が投入された直後に補正処理をおこなうため、確実に認証処理の前に補正処理をおこなうことができる。具体的には、バージョンアップやマイナーチェンジなどによるぱちんこ遊技機の主制御基板310の変更は、ぱちんこ遊技機の電源がオフされた後におこなわれる。したがって、主制御基板310が他の正規な主制御基板310に変更された場合であっても、主制御基板310の電源が投入された直後に、周辺基板330において期待値の補正処理をおこなうことができる。このため、周辺基板330においては、ぱちんこ遊技機の電源が投入された直後に、変更された他の正規な主制御基板310に対応する期待値に補正することができるので、補正処理をおこなった後に、変更後の主制御基板に310に対応した認証処理をおこなうことができる。
補正データ送信部315は、補正データ付加部314によって補正データの付加された制御コマンド(以下、「補正データ付制御コマンド」という)を周辺基板330に送信する。補正データ送信部315は、今回送信するコマンドが電源オンコマンドである場合は、補正データ付制御コマンドを周辺基板330に送信する。また、補正データ送信部315は、今回送信するコマンドが電源オンコマンドでない場合は、補正データが付加されていない制御コマンドを周辺基板330に送信する。
認証データ生成部316は、主制御基板310を認証するための認証データを生成する。認証データ生成部316は、たとえば記録部312によって記録されたプログラムコードを用いて認証データを生成する。さらに、認証データ生成部316は、プログラムコードとともに、今回送信する制御コマンドを用いて認証データを生成してもよい。認証データは、認証者(周辺基板330)が、周辺基板330に保持されている期待値を用いて照合をおこなうことにより、主制御基板310を正規の主制御基板310であると認証するための情報である。
認証データ付加部317は、補正データ送信部315によって補正データ付制御コマンドが周辺基板330に送信された後に、この周辺基板330に送信する制御コマンドが所定の制御コマンドである場合、認証データ生成部316によって生成された認証データを制御コマンドに付加する。ここで、所定の制御コマンドは、たとえば大当たりリーチコマンドや大当たり開始コマンド、大当たりコマンド、大当たり終了コマンド、客待ちデモコマンド、はずれコマンドなどのうち、いずれか(複数でも可)である。
認証データ付加部317は、電源オンコマンドによって電源が投入されてから、電源がオフされるまでの間に、少なくとも1つ以上の制御コマンドに認証データを付加すればよい。好適には、たとえば、大当たり状態などの不正がおこなわれる可能性の高い状態になる前の制御コマンドに認証データを付加すればよい。
認証データ付加部317は、周辺基板330に送信する制御コマンドが、補正データ送信部315によって送信された補正データ付制御コマンドから所定回数目の制御コマンドである場合、この制御コマンドに認証データを付加する。この場合、認証データ付加部317は、たとえば制御コマンドの種類に関わらず、電源オンコマンドから数えて所定回数目の制御コマンドに付加してもよいし、所定の種類の制御コマンドに対して、電源オンコマンドから数えて所定回数目の制御コマンドに付加してもよい。
なお、たとえば、後述する判断部に324おいて、制御コマンドに認証データを含んでいるか否かを判断可能な場合、認証データ付加部317は、ランダムに認証データを付加してもよい。
認証データ送信部318は、認証データ付加部317によって認証データの付加された制御コマンド(以下、「認証データ付制御コマンド」という)を周辺基板330に送信する。なお、認証データ送信部318は、今回送信するコマンドが所定の制御コマンドでない場合は、認証データが付加されていない制御コマンドを含む制御信号を周辺基板330に送信する。
ダミー認証データ生成部319は、認証データのダミーデータ(以下、「ダミー認証データ」という)を生成する。ダミー認証データは、認証者(周辺基板330)が、周辺基板330に保持されている期待値を用いた照合をおこなわずに、主制御基板310を正規の主制御基板310であると仮に認証するための情報である。また、ダミー認証データは、周辺基板330に保持されている期待値を用いて照合をおこない、照合の結果が一致しても不一致でも主制御基板310を正規の主制御基板310であると仮に認証するための情報である。さらに、ダミー認証データは、上述の補正データおよび認証データを用いた認証とは別種類の認証に用いる認証データであってもよい。
ダミー認証データ付加部320は、ダミー認証データ生成部319によって生成されたダミー認証データを、認証データ付加部317によって、認証データが付加された制御コマンド以外の制御コマンドに付加する。ダミー認証データ付加部320は、認証データ付加部317によって認証データの付加された制御コマンド以外の制御コマンドには、ランダムにダミー認証データを付加してもよいし、あらかじめ設定された順番または種類の制御コマンドにダミー認証データを付加してもよい。
ダミー認証データ送信部321は、ダミー認証データ付加部320によってダミー認証データの付加された制御コマンド(以下、「ダミー認証データ付制御コマンド」という)を周辺基板330に送信する。
このように、認証データ付加部317および認証データ送信部318は、補正データ送信部315によって補正データ付制御コマンドが周辺基板330に送信された後に、認証データを付加して認証データ付制御コマンドを周辺基板330に送信する。したがって、周辺基板330においては、期待値の補正処理をおこなってから、認証処理をおこなうことができる。このため、たとえば主制御基板310が他の主制御基板310に変更された場合に、期待値が補正される前に認証処理がおこなわれるのを防ぐことができる。これによって、周辺基板330における認証処理において、正当な主制御基板310が不当な主制御基板310であると認証されるのを防ぐことができる。
また、周辺基板330に電源オンコマンドを送信する際に、補正データ付加部314によって補正データを付加し、所定の制御コマンドを送信する際に、認証データ付加部317によって認証データを付加する。電源オンコマンドは、すべての制御コマンドの最初に送信されるため、確実に認証処理の前に補正処理をおこなうことができる。
また、主制御基板310から周辺基板330に期待値の補正データを送信するため、主制御基板310が変更された際に、周辺基板330を変更したり周辺基板330に保持されている期待値の設定を変更したりしなくても、変更後の主制御基板310に対応した期待値に簡単に補正することができる。また、補正データ送信部315は、期待値をそのまま送信せず、補正値のみを送信する。したがって、たとえば第三者によって送信したデータが窃取されても、期待値が解読されないため、認証処理の強度を向上させることができる。
また、ダミー認証データ付加部320およびダミー認証データ送信部321は、補正データ送信部315によって補正データ付制御コマンドが周辺基板320に送信された後に、認証データ付加部317によって認証データの付加されていない制御コマンドに、ダミー認証データを付加してダミー認証データ付制御コマンドを周辺基板330に送信することができる。このようにすることで、主制御基板310から周辺基板320へ認証データがいつ送信されたのかを、第三者に知られることを防ぎ、認証データが窃取されることを防ぐことができる。
また、たとえば補正データや認証データを付加しない制御信号のみを送信するような従来の主制御基板を、補正データや認証データを付加した制御信号を送信するような本実施の形態にかかる主制御基板310に変更する場合、全ての制御コマンドの送信処理に補正データまたは認証データの付加処理を追加する手間を省くことができる。このように、所定の制御コマンドの送信処理のみに付加処理を追加すればよいため、処理を追加するための設定の難易度が容易であり、設定にかかる時間を短縮することができる。
つぎに、演出制御部202や賞球制御部203などの周辺部としての機能を有する周辺基板330の機能的構成について説明する。図3に示すように、演出制御部202、賞球制御部203などの周辺基板330は、補正データ受信部331、補正部332、認証データ受信部333、判断部334、認証部335、報知信号出力部336、ダミー認証データ受信部337によって構成される。
補正データ受信部331は、主制御基板310によって送信された補正データ付制御コマンドを含む制御信号を受信する。補正部332は、補正データ受信部331によって受信された補正データ付制御コマンドを用いて周辺基板330に保持されている期待値を補正する。補正部332は、受信した補正データが暗号化されている場合、この補正データを復元した値を用いて期待値を補正する。
補正部332は、たとえば、制御コマンドに補正データが付加されているか否かを判断し、制御コマンドに補正データが付加されている場合、補正データを用いて周辺基板330の期待値を補正する。また、補正部332は、制御コマンドが電源オンコマンドであるか否かを判断し、制御コマンドが電源オンコマンドである場合、補正データを用いて周辺基板330の期待値を補正することとしてもよい。
認証データ受信部333は、主制御基板310によって送信された認証データ付制御コマンドを受信する。判断部334は、認証データ受信部333によって受信された認証データ付制御コマンドを用いて算出された値が、補正部332によって補正された期待値と一致するか否かを判断する。
判断部334は、たとえば、制御コマンドに認証データが付加されているか否かを判断し、主制御基板310から送信された制御コマンドに認証データが付加されている場合、認証データ付制御コマンドを用いて算出された値と、期待値と、が一致するか否かを判断する。また、判断部334は、制御コマンドが所定の制御コマンドであるか否かを判断し、主制御基板310から送信された制御コマンドが所定の制御コマンドである場合、認証データ付制御コマンドを用いて算出された値と、期待値と、が一致するか否かを判断してもよい。この場合、所定の制御コマンドか否かの判断は、たとえば所定の種類の制御コマンドか否かを判断してもよいし、電源オンコマンドから所定回数目の制御コマンドか否かを判断してもよい。
認証部335は、判断部334によって認証データ付制御コマンドを用いて算出された値と、期待値と、が一致すると判断された場合、主制御基板310を認証する。
報知信号出力部336は、認証部335によって主制御基板310が認証されなかった場合、報知信号を出力する。周辺基板330が演出制御部202の場合、報知信号出力部336は、たとえば、図柄表示部104やランプ制御部251、音声制御部252(図2参照)などに出力する。また、報知信号出力部336は、ぱちんこ遊技機を管理するセンター制御装置などに報知信号を出力することとしてもよい。
報知信号出力部336によって出力された報知信号に基づいて、図柄表示部104やランプ制御部251、音声制御部252は、主制御基板310に不正がおこなわれた可能性がある旨を報知する演出を実行する。この演出は、たとえば、図柄表示部104に通常出現しないキャラクタを出現させたり、通常出現するキャラクタを通常とは異なる方法で出現させたりするなどである。また、図柄表示部104の輝度を変えたり、色を変えたり、ランプ制御部251に対して所定のランプを表示制御するようにしてもよい。いずれにせよ、当該ぱちんこ遊技機の前を通過した際に、従業員がその状態に気がつくようにしてあればよい。また、この演出は、顧客がその状態に気がつかないような演出でもよく、また、顧客が容易に気がつく演出であってもよい。顧客が容易に気がつく演出にすれば、不正行為を効率的に抑止することができる。
また、報知信号に「大当たり中」や「確率変動中」などのぱちんこ遊技機の遊技状態に関する情報を含めてもよい。これらの遊技状態に関する情報に基づいて、ぱちんこ遊技機を管理するセンター制御装置などによって不正行為がおこなわれているか否かの判断をおこなってもよい。たとえば、大当たり中や確率変動中は入賞が集中していても正常である場合がある。よって、大当たり中や確率変動中は、その他の状態とは異なる条件で不正行為のおそれがあるかについて判断するのがよい。また、遊技状態に関する情報は、報知信号に含めずに別信号として出力するようにしてもよい。この場合、従業員は、報知信号と遊技状態に関する情報の両方に基づいて、不正行為のおそれがあるか否かについて判断する。
ダミー認証データ受信部337は、主制御基板310によって送信されたダミー認証データ付制御コマンドを受信する。そして、ダミー認証データ受信部337によってダミー認証データ付制御コマンドを受信した場合、認証部335は、主制御基板310を認証する。具体的には、認証部335は、判断部334によるダミー認証データを用いて算出された値と期待値とが一致するか否かの処理を省略して、主制御基板310を認証する。また、判断部334によって、ダミー認証データ付制御コマンドを用いて算出された値と期待値とが一致するか否かを判断し、一致したか否かに関わらず、主制御基板310を認証してもよい。このようにすることで、正規の認証データを受信した場合と処理時間または処理の際に生じる熱量などが同程度となるので、周辺基板330において正規な認証データを受信したタイミングを、第三者に知られることを防ぐことができる。これによって、より認証の強度を上げることができる。
なお、図3において、期待値は、他の構成部から周辺基板330に送信されることとしてもよい。他の構成部とは、たとえば、他の周辺部や期待値を生成するための専用の処理部(以下、「期待値算出部」という)などである。主制御部や期待値算出部は、あらかじめ記録されている期待値を周辺基板330に送信してもよいし、照合処理ごとに期待値を生成してもよい。また、外部接続用I/F(図示なし)を介して、外部の機器から周辺基板330や期待値算出部に期待値を算出するために必要な係数などを送信してもよい。このように、周辺基板330に、あらかじめ期待値を記録させずに、他の構成部から取得する場合、補正部332は、補正データ受信部331によって受信された補正データから補正値を取得し、判断部334は、取得された期待値および補正値を用いて算出された値が、認証データ受信部333によって受信された認証データ付制御コマンドを用いて算出された値と一致するか否かを判断してもよい。
また、周辺基板330は、補正後の期待値(最終期待値)そのものを固定値として保持しなくてもよい。この場合、たとえば製造時から、補正データによる補正処理をおこなわないと、ダミー認証データを受信した場合は認証が成立となり、認証データを受信した場合は認証が不成立となるように設計する。このようにすることで、最終期待値を知り得る者を限定することができ、期待値に関する情報の流出などのリスクを低減することができる。
また、補正データ生成部313や認証データ生成部316は、補正データや認証データに、複数回の暗号化処理をおこなってもよい。この場合、周辺基板330においては、複数回の復号処理によって補正データや認証データを復号化する。また、認証データ生成部316は、2種類以上の暗号化方法のいずれかを選んで暗号化処理をおこなってもよい。この場合、周辺基板330においては、2種類以上の復号方法によって復号して誤り検査値を取得し、判断部334によって、取得されたいずれかの誤り検査値が期待値と一致するか否かを判断してもよい。そして、認証部335は、取得された誤り検査値のうちのいずれかが期待値と一致した場合に、主制御基板310を認証してもよい。
(ぱちんこ遊技機の基本動作)
上記構成によるぱちんこ遊技機の基本動作の一例を説明する。主制御部201は、各入賞口に対する遊技球の入賞状況を制御コマンドとして賞球制御部203に出力する。賞球制御部203は、主制御部201から出力された制御コマンドに応じて、入賞状況に対応した賞球数の払い出しをおこなう。
また、主制御部201は、始動入賞口105に遊技球が入賞するごとに、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、図柄表示部104の図柄を変動表示させ、停止させることを繰り返す。大当たりの発生が決定しているときには、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、所定の図柄で揃えて停止させる。このとき同時に、大入賞口109を開放する制御をおこなう。演出制御部202は、大当たり発生期間中、および大当たり発生までの間のリーチ時や、リーチ予告時などには、図柄表示部104に対して、図柄の変動表示に加えて各種の演出表示をおこなう。このほか、各種役物に対して特定の駆動をおこなったり、ランプ261の表示状態を変更したりするなどの演出をおこなう。
そして、大当たり発生時には、大入賞口109が複数回開放される。1回の開放が1ラウンドとして、たとえば15回のラウンドが繰り返し実行される。1ラウンドの期間は、遊技球がたとえば10個入賞したとき、あるいは所定期間(たとえば30秒)とされている。この際、賞球制御部203は、大入賞口109に対する遊技球1個の入賞あたり、たとえば15個の賞球数で払い出しをおこなう。大当たり終了後は、この大当たり状態が解除され、通常の遊技状態に復帰する。
(各制御部による処理の詳細)
つぎに、各制御部がおこなう各種処理の詳細について説明する。はじめに、主制御部201による演出制御部202の制御処理について説明する。図4および図5は、主制御部による演出制御部の制御処理の手順を示すフローチャートである。なお、図4〜9においては、演出制御部202の制御処理の手順を明確にするため、補正データ、認証データおよび付随データについては考慮しないものとする。すなわち、図4〜図9の説明において、「コマンドを送信する」とは、「当該コマンドを示すデータ(制御コマンドデータ)を含む制御信号を送信する」との意味であり、たとえば補正データや認証データや付随データ(図10参照)の有無は考慮しないものとする。
図4および図5のフローチャートにおいて、主制御部201は、まず、ぱちんこ遊技機の電源がオンにされるまで待機する(ステップS401:Noのループ)。ぱちんこ遊技機の電源がオンにされると(ステップS401:Yes)、主制御部201は、演出制御部202や賞球制御部203などの周辺基板に対して電源オンコマンドを送信する(ステップS402)。電源オンコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104に対して、それぞれに対して電源オン時の演出用の制御コマンド(具体的には、ランプの点灯や音声の出力、デモ画面の表示などを指示する制御コマンド)を送信する。
なお、ステップS401においては、ぱちんこ遊技機がリセットされたか否かを判断してもよい。ここで、リセットとは、たとえばぱちんこ遊技機の備えるRAM213を初期化(クリア)するなどの処理である。
つぎに、主制御部201は、ROM212またはRAM213に記録されている未抽選入賞回数データを参照して、未抽選入賞回数が0回か否かを判断する(ステップS403)。未抽選入賞回数とは、始動入賞口に検出された入賞球の数(入賞回数)から、入賞球に対応する抽選がおこなわれた回数(既抽選回数)を減じた数である。未抽選入賞回数が0回の場合(ステップS403:Yes)、主制御部201は、デモが開始されてから経過した時間を計測する(ステップS404)。
デモが開始されてから所定時間が経過すると(ステップS405:Yes)、主制御部201は、演出制御部202に客待ちデモコマンドを送信して(ステップS406)、ステップS407に移行する。デモが開始されてから所定時間が経過しない場合は(ステップS405:No)、そのままステップS407に移行する。ステップS406で客待ちデモコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104に対して客待ちデモ用の制御信号を送信する。また、ステップS403で、未抽選入賞回数が0回ではない場合は(ステップS403:No)、ステップS410に移行する。
つぎに、主制御部201は、始動入賞口検出部221によって始動入賞口への入賞球が検出されたか否か判断する(ステップS407)。始動入賞口への入賞球が検出されると(ステップS407:Yes)、主制御部201は、デモが開始されてから計測していた時間をクリアして(ステップS408)、未抽選入賞回数に1を加える(ステップS409)。つづいて、主制御部201は、大当たり判定用乱数を取得して(ステップS410)、未抽選入賞回数から1を減算し(ステップS411)、図5のステップS412に移行する。また、ステップS407で、始動入賞口への入賞球が検出されない場合は(ステップS407:No)、ステップS404に戻り、以降の処理を継続する。
つぎに、主制御部201は、ステップS410で取得した大当たり判定用乱数が、あらかじめ定められた大当たり乱数であるか否かを判断する(ステップS412)。大当たり判定用乱数が大当たり乱数である場合(ステップS412:Yes)、主制御部201は、演出制御部202に大当たりリーチコマンド(図柄変動コマンド)を送信する(ステップS413)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS414:Noのループ)、図柄変動時間が経過すると(ステップS414:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS415)。
つぎに、主制御部201は、演出制御部202に大当たり開始コマンドを送信し(ステップS416)、つづけて、大当たり中の各ラウンドに対応するコマンド(大当たりコマンド)を順次送信する(ステップS417)。そして、主制御部201は、全てのラウンドの大当たりコマンドの送信が終わると、大当たり終了コマンドを送信して(ステップS418)、ステップS422に移行する。
一方、ステップS412で、大当たり判定用乱数が大当たり乱数でなかった場合(ステップS412:No)、主制御部201は、演出制御部202にはずれリーチコマンド(図柄変動コマンド)を送信する(ステップS419)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS420:Noのループ)、図柄変動時間が経過すると(ステップS420:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS421)。
主制御部201は、ぱちんこ遊技機の電源がオフにされるまでは(ステップS422:No)、図4のステップS403に戻り、以降の処理を繰り返す。そして、ぱちんこ遊技機の電源がオフにされると(ステップS422:Yes)、主制御部201は、演出制御部202に終了処理コマンドを送信して(ステップS423)、本フローチャートによる処理を終了する。
図6は、大当たり関連コマンド(大当たりリーチコマンド、大当たり開始コマンド、大当たりコマンド、大当たり終了コマンド)の送信タイミングを示すタイムチャートである。大当たりリーチコマンドは、実際に大当たりが発生するよりも頻繁に、かつランダムに送信される。また、大当たり開始コマンドは、実際に大当たりが発生した場合に、大当たり状態に移行する際に1度だけ送信される。また、大当たりコマンドは、大当たり状態に移行した後、ラウンドごとに継続的に送信される。また、大当たり終了コマンドは、大当たり状態の全てのラウンドが終了し、通常の状態に移行する際に1度だけ送信される。
つぎに、演出制御部202による処理について説明する。以下では、図柄変動時(大当たりリーチコマンド(図5のステップS413参照)または、はずれリーチコマンド(図5のステップS419参照)を受信した場合)および、大当たり時の演出制御部202の処理について説明する。
図7は、演出制御部による図柄変動処理の手順を示すフローチャートである。図7のフローチャートにおいて、演出制御部202は、まず、図柄変動コマンドである大当たりリーチコマンド(図5のステップS413参照)、または、はずれリーチコマンド(図5のステップS419参照)を受信するまで待機する(ステップS701:Noのループ)。図柄変動コマンドを受信すると(ステップS701:Yes)、演出制御部202は、変動演出選択用の乱数を取得して(ステップS702)、取得した乱数に基づいて変動演出の種類を選択する(ステップS703)。そして、演出制御部202は、ランプ制御部251や音声制御部252に対して変動演出別の演出開始コマンドを送信する(ステップS704)。
演出制御部202は、変動演出の演出時間が経過したか否かや(ステップS705)、主制御部201から図柄停止コマンド(図5のステップS415,S421参照)を受信したか否かを判断する(ステップS706)。演出時間が経過した場合(ステップS705:Yes)、または図柄停止コマンドを受信した場合(ステップS706:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して演出停止コマンドを送信する(ステップS707)。また、演出時間が経過せず(ステップS705:No)、かつ図柄停止コマンドを受信しない場合は(ステップS706:No)、ステップS705に戻り、以降の処理を繰り返す。
つぎに、演出制御部202の大当たり時の処理について説明する。図8は、演出制御部による大当たり時の処理の手順を示すフローチャートである。図8のフローチャートにおいて、演出制御部202は、まず、主制御部201から大当たり開始コマンド(図5のステップS416参照)を受信するまで待機する(ステップS801:Noのループ)。大当たり開始コマンドを受信すると(ステップS801:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり開始処理コマンドを送信する(ステップS802)。
つぎに、演出制御部202は、主制御部201からラウンド別の大当たりコマンド(図5のステップS417参照)を受信するまで待機する(ステップS803:Noのループ)。大当たりコマンドを受信すると(ステップS803:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して受信したラウンド別の大当たりコマンドに対応するラウンド別処理コマンドを送信する(ステップS804)。
つづいて、演出制御部202は、主制御部201から大当たり終了コマンド(図5のステップS418参照)を受信するまで待機する(ステップS805:Noのループ)。大当たり終了コマンドを受信すると(ステップS805:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり終了処理コマンドを送信して(ステップS806)、本フローチャートによる処理を終了する。
つづいて、ランプ制御部251によるランプ制御処理について説明する。ここでは、演出制御部202から図柄変動コマンドを受信した場合(図柄変動時)の処理について説明する。図9は、ランプ制御部による図柄変動時のランプ制御処理の手順を示すフローチャートである。図9のフローチャートにおいて、ランプ制御部251は、まず、演出制御部202から演出開始コマンドを受信するまで待機する(ステップS901:Noのループ)。
演出制御部202から演出開始コマンドを受信すると(ステップS901:Yes)、ランプ制御部251は、コマンド別に用意されているデータを読み出して(ステップS902)、コマンド別の選択ルーチンを実行し(ステップS903)、ランプデータをセットする(ステップS904)。そして、ランプ制御部251は、ランプ261に対してランプデータを出力する(ステップS905)。ランプ制御部251から出力されたランプデータに基づいて、ランプ261は点灯または消灯する。
ランプ制御部251は、演出制御部202から演出停止コマンドを受信するまでは(ステップS906:No)、ステップS905に戻り、ランプデータの出力を継続する。演出停止コマンドを受信すると(ステップS906:Yes)、ランプ制御部251は、ランプデータの出力を停止して(ステップS907)、本フローチャートによる処理を終了する。
なお、図9にはランプ制御部251の処理を記載したが、音声制御部252による音声制御も、図9の処理とほぼ同様である。音声制御部252による音声制御処理は、図9の処理において、ステップS904,S905,S907の「ランプデータ」を「音声データ」と読み替えればよい。
このように、演出制御部202や賞球制御部203などの周辺部は、主制御部201によって出力された制御コマンドに基づいて各種の処理をおこなう。一方、たとえば、主制御部201と周辺部との間に不正な制御基板が接続された場合(図15参照)などのように、制御コマンドの出力元が正規の主制御部201ではない場合、周辺部は不正な制御基板から出力された不正な制御コマンドによって不正な動作をおこなってしまう。
この不正な動作を防止するため、本実施の形態にかかる電子機器では、たとえばぱちんこ遊技機において、主制御部201から出力される制御コマンドが所定の制御コマンドである場合、主制御部201と周辺部との間で認証処理をおこなう。所定の制御コマンドとは、具体的には、大当たりリーチコマンドや大当たり開始コマンド、大当たりコマンド、大当たり終了コマンド、客待ちデモコマンド、はずれコマンドなどである。具体的には、これらのうちの所定の種類の制御コマンド、または種類に関わらず電源オンコマンドから所定回数目の制御コマンドである。この認証処理によって、主制御部201が不正な制御基板に交換されたり、主制御部201と周辺基板との間に不正な制御基板が取り付けられたりするなどの不正を検知して、ぱちんこ遊技機への不正を防止することができる。
一方、周辺部においては、主制御部201に対する認証処理をおこなう際に、周辺部に保持されている期待値によって、主制御部201から出力されたデータを照合し、このデータを用いて算出された値と、期待値とが一致する場合に、主制御部201を認証する。このとき、たとえばぱちんこ遊技機の仕様が変更されたり、賞球数や確率の変更があったりした場合に、主制御部201を他の主制御部201に変更すると、周辺部には変更前の主制御部201に応じた期待値が保持されているため、変更後の他の主制御部201を認証することができない。このため、変更後の他の主制御部201を、正規な制御基板であるにも関わらず不正な制御基板と認証してしまい、認証処理を誤ってしまう。
この認証処理の誤りを防止するため、本実施の形態にかかる電子機器では、たとえばぱちんこ遊技機において、主制御部201から出力される制御コマンドが所定の制御コマンドである場合、主制御部201から周辺部へ、期待値の補正をおこなうための補正データを送信する。そして、周辺部においては、この補正データを用いて期待値の補正処理をおこなう。所定の制御コマンドとは、具体的には、周辺部にぱちんこ遊技機の電源投入時の処理を実行させる電源オンコマンドである。この補正処理によって、主制御部201が他の主制御部201に変更されても、周辺部を変更したり、期待値を変更したりせずに、変更後の他の主制御部201に応じた期待値に補正することができる。したがって、認証処理の誤りを防止し、たとえば主制御部201が変更されても、変更後の他の主制御部201を正規の制御基板であると認証することができる。
また、補正値のみを送信し、期待値そのものは送信しないため、第三者に期待値が窃取されにくく、ぱちんこ遊技機への不正を防止することができる。さらに、電源オンコマンドは、すべての制御コマンドの最初に送信されるため、確実に認証処理の前に補正処理をおこなうことができる。
(制御信号のデータフォーマット)
つづいて、主制御部201が周辺基板に出力する制御信号のデータフォーマットについて説明する。図10は、主制御部が出力する制御信号のデータフォーマットを模式的に示す説明図である。図10に示すように、主制御部201が出力する通常の制御信号1010には、制御コマンドデータ1001および付随データ1002が含まれている。制御コマンドデータ1001は、たとえば大当たりリーチコマンドや大当たり開始コマンド、ラウンド別コマンドなどの各コマンド固有のデータである。また、付随データ1002は、制御コマンドデータ1001に付随するデータであり、たとえば、入賞した遊技球の数など制御コマンドデータ1001に基づく処理に必要なデータである。
一方、主制御部201は、制御信号内の制御コマンドデータ1001が特定の種類のコマンドである場合、制御コマンドデータ1001および付随データ1002に加え、認証データ1003または補正データ1004、ダミー認証データ1005を含んだ、認証データ付制御信号1020または補正データ付制御信号1030、ダミー認証データ付制御信号1040を周辺基板に出力する。具体的には、主制御部201は、制御コマンドデータ1001が電源オンコマンドである場合に、補正データ1004を含んだ制御信号を周辺基板に出力し、制御コマンドデータ1001が所定の制御コマンドである場合に、認証データ1003またはダミー認証データ1005を含んだ制御信号を周辺基板に出力する。
なお、認証データ1003またはダミー認証データ1005を含んだ制御信号を出力するのは、所定の種類の制御コマンドでもよいし、コマンドの種類に関わらず電源オンコマンドから所定回数目のコマンドでもよい。また、所定の制御コマンドの全てに認証データ1003またはダミー認証データ1005を付加してもよいし、所定の制御コマンドのうちのいずれかに認証データ1003またはダミー認証データ1005を付加してもよい。具体的には、たとえば、補正データ1004の付加された電源オンコマンドによって電源が投入されてから、電源がオフされるまでの間に、少なくとも1つ以上の制御コマンドに認証データ1003を付加すればよい。好適には、たとえば、大当たり状態などの不正がおこなわれる可能性の高い状態になる前の制御コマンドに認証データ1003を付加すればよい。
このように、認証データ1003または補正データ1004を制御信号に含めることによって、認証データ単体または補正データ単体で送信する場合と比較して、主制御部201と周辺部との間の通信負荷を減らすことができる。また、認証データ1003または補正データ1004を制御信号に含めることによって、認証データ1003または補正データ1004を単体で送信する場合と比較して、通信データ中から認証データまたは補正データが抽出され、解析されてしまう可能性を低減することができる。また、認証処理は、所定の制御コマンドを送信するときにのみおこなわれるため、全ての制御コマンドを送信するときに認証処理をおこなうのと比べると、認証処理による主制御基板や周辺基板の処理負荷を減らすことができる。
認証データ1003は、周辺部が保持している期待値と照合することで、制御コマンドデータ1001および付随データ1002が正規の主制御部201から出力されたものであることを、認証するためのデータである。認証データ1003は、たとえば、主制御部201のROM212に記録されたプログラムデータを元に生成された値である。より具体的には、認証データ1003は、たとえば、ROM212に記録されたプログラムデータの全てまたは一部に対して、ハッシュ関数による演算やパリティチェック、巡回冗長検査(Cyclic Redundancy Check:CRC)、チェックサムなどの、誤り検出演算をおこなって得られた値(以下、「プログラムコード認証値」という)を、所定の暗号化方式で暗号化した値である。
このように、認証データ1003は、主制御部201のROM212に記録されたプログラムデータを用いて生成される。このため、周辺部は、認証データ1003を期待値と照合させることで認証をおこなうことによって、制御信号の出力元が正規の主制御部201であるか否かを判断することができる。また、主制御部201のROM212に記録されたプログラムコードの不正な書き換えや、主制御部201のROM212の不正な取り替えなどを検出することができる。
なお、主制御部201は、それぞれの制御信号に対して異なる認証データ1003を生成するものとする。具体的には、たとえば、認証データ1003を生成するために用いるROM212内のプログラムコードの範囲を異ならせたり、認証データ1003を生成するための誤り検出演算を異ならせるようにする。また、認証データ1003を生成するにあたって用いるデータは、プログラムコードに限らず、ROM212に記録された任意のデータであってもよい。
また、補正データ1004は、周辺部において主制御部201から送信されたデータの照合に用いる期待値を補正するためのデータである。補正データ1004は、たとえば主制御部201に固有の値を元に生成された値である。具体的には、補正データ1004は、主制御部201が複数ある場合、それぞれの主制御部201を識別可能な値であり、たとえば、主制御部201が他の主制御部201に変更された場合、周辺部に保持された変更前の主制御部201に応じた期待値を、変更後の他の主制御部201に応じた期待値に補正するための値である。より具体的には、補正データ1004は、主制御部201が他の主制御部201に変更された場合、変更される前の主制御部201に設定されていた固有の値と、変更された後の他の主制御部201に設定されている固有の値との差分である。なお、補正データ1004は、たとえば、認証データ1003と同様に、主制御部201のROM212に記録されたプログラムデータを元に生成された値でもよい。
また、認証データ1003や補正データ1004には、認証データ1003や補正データ1004とともに送信される制御コマンドデータ1001や付随データ1002に関するデータを含ませてもよい。制御コマンドデータ1001や付随データ1002に関するデータとは、制御コマンドデータ1001や付随データ1002そのものや、制御コマンドデータ1001や付随データ1002に対して上述したような誤り検出方式を用いた演算をおこなって得られた値などである。
一般に、不正な制御基板は、正規の主制御部201と異なる制御コマンドを送信することによって、周辺部に不正な動作をおこなわせようとする。認証データ1003や補正データ1004とともに送信する制御コマンドデータ1001や付随データ1002を用いて認証データ1003や補正データ1004を生成すれば、不正な制御基板によって認証データ1003や補正データ1004が再利用された場合であっても、認証データ1003や補正データ1004と制御コマンドデータ1001の整合がとれず、不正を検知することができる。
認証データ1003や補正データ1004に制御コマンドデータ1001や付随データ1002に関するデータを含ませる場合、主制御部201は制御コマンドデータ1001や付随データ1002に関するデータとプログラムコード認証値とを合わせて暗号化して、認証データ1003や補正データ1004を生成する。
ここで、通常の制御信号1010は、認証データ1003や補正データ1004が含まれていないため、認証データ付制御信号1020や補正データ付制御信号1030より、データサイズが小さくなる。このため、認証データ1003や補正データ1004の付加された制御信号が見破られやすくなり、これらのデータが窃取されやすくなる。
このような問題を防ぐために、認証データ1003や補正データ1004を含まない通常の制御信号1010に、補正データ1004や認証データ1003と同程度のサイズのダミー認証データ1005を付加し、ダミー認証データ付制御信号1040としてもよい。
ここで、ダミー認証データ1005は、認証データ1002のダミーデータであり、周辺部において補正処理や認証処理に無効なデータである。ずなわち、ダミー認証データ1005は、周辺部が保持している期待値との照合をおこなわずに、制御コマンドデータ1001および付随データ1002が正規の主制御部201から出力されたものであることを、仮に認証するためのデータである。また、ダミー認証データ1005は、周辺部が保持している期待値と照合をおこない、照合の結果が一致または不一致のいずれでも、制御コマンドデータ1001および付随データ1002が正規の主制御部201から出力されたものであることを、仮に認証するためのデータである。ダミー認証データ1005は、たとえば認証データ1003と同様の値によって生成されてもよい。また、ダミー認証データ1005は、他の(別種類の)認証処理に用いる認証データであってもよい。他の認証処理とは、たとえば期待値の補正処理が必要のない認証処理である。
なお、制御コマンドデータ1001と、付随データ1002と、認証データ1003または補正データ1004、ダミー認証データ1005と、の並び方は、図10に示す順番に限らず、たとえば認証データ1003または補正データ1004、ダミー認証データ1005を制御信号の先頭にしたり、制御コマンドデータ1001と付随データ1002との間に認証データ1003または補正データ1004、ダミー認証データ1005を挿入してもよい。また、制御コマンドデータ1001および付随データ1002とは別個に認証データ1003または補正データ1004、ダミー認証データ1005を出力することとしてもよい。たとえば、電源オンコマンドデータを含む制御信号を送信した後、3回目の制御信号送信時に補正データ1004を付加し、所定の制御コマンドデータを含む制御信号を送信した後、3回目の制御信号送信時にダミー認証データ1005を付加して、5回目の制御信号送信時に認証データ1003を付加する、などとしてもよい。
また、ダミー認証データ1005は、認証データ1003を含まない通常の制御信号1010の全てに付加しても良いし、所定の制御コマンドデータを含む制御信号のうちの、認証データ1003を含まない通常の制御信号1010にダミー認証データ1005を付加してもよい。このようにすることで、通常の制御信号1010のデータサイズを、認証データ付制御信号1020や補正データ付制御信号1030と同程度とすることができる。このため、第三者に、データサイズの違いによって認証データ1003や補正データ1004が付加されている制御信号を見破られることを防ぐことができる。
なお、制御コマンドデータ1001、付随データ1002、認証データ1003または補正データ1004の並び方は、図10に示す順番に限らず、たとえば認証データ1003または補正データ1004を制御信号の先頭にしたり、制御コマンドデータ1001と付随データ1002との間に認証データ1003または補正データ1004を挿入したりしてもよい。また、制御コマンドデータ1001および付随データ1002とは別個に補正データ1004や認証データ1003を出力することとしてもよい。たとえば、電源オンコマンドデータを含む制御信号を送信した後、3回目の制御信号送信時に補正データ1004を付加し、所定の制御コマンドデータを含む制御信号を送信した後、5回目の制御信号送信時に認証データ1003を付加する、などとしてもよい。
さらに、認証データ1003や補正データ1004を含まない通常の制御信号1010に、補正データ1004や認証データ1003と同程度のサイズのダミーデータ(不図示)を付加してもよい。ここで、ダミーデータは、補正処理や認証処理に用いないデータである。このようにすることで、通常の制御信号1010のデータサイズを、認証データ付制御信号1020や補正データ付制御信号1030と同程度とすることができる。このため、第三者にデータサイズの違いによって認証データ1003や補正データ1004が付加されている制御信号を見破られることを防ぐことができる。
(制御信号の送受信処理)
つづいて、図11、図12を用いて、主制御部201と周辺部との間でおこなう制御信号の送受信処理について説明する。以下、主制御部201と演出制御部202との間の制御信号の送受信処理について説明するが、主制御部201と賞球制御部203との間の制御信号の送受信処理も同様の手順でおこなわれる。
図11は、主制御部による制御信号の送信処理の手順を示すフローチャートである。図11のフローチャートにおいて、主制御部201は、まず、主制御部201の電源がオンにされるまで待機する(ステップS1101:Noのループ)。主制御部201の電源がオンにされた場合(ステップS1101:Yes)、補正データを生成する(ステップS1102)。そして、制御コマンドの送信タイミングとなるまで待機する(ステップS1103:Noのループ)。制御コマンドの送信タイミングとなった場合(ステップS1103:Yes)、主制御部201は、今回送信する制御コマンドが電源オンコマンドか否かを判断する(ステップS1104)。
今回送信する制御コマンドが電源オンコマンドである場合(ステップS1104:Yes)、主制御部201は、制御コマンドデータ1001(電源オンコマンドデータ)および付随データ1002をセットする(ステップS1105)。つぎに、主制御部201は、ステップS1102,S1105で生成した制御コマンドデータ1001、付随データ1002、補正データ1004からなる制御信号(補正データ付制御信号1030)を演出制御部202に送信する(ステップS1106)。そして、主制御部201の電源がオフにされたか否かを判断して(ステップS1107)、主制御部201の電源がオフにされない場合(ステップS1107:No)、ステップS1103に戻り、次の制御コマンドの送信タイミングまで待機して、以降の処理を繰り返しおこなう。
一方、ステップS1104において、電源オンコマンド以外のコマンドである場合(ステップS1104:No)、今回送信する制御コマンドが所定の制御コマンドか否かを判断する(ステップS1108)。今回送信する制御コマンドが所定の制御コマンドである場合(ステップS1108:Yes)、主制御部201は、認証処理のタイミングか否かを判断する(ステップS1109)。ステップS1109において、認証処理のタイミングでない場合(ステップS1109:No)、制御コマンドデータ1001(所定の制御コマンドデータ)および付随データ1002をセットする(ステップS1110)。また、主制御部201は、ダミー認証データ1005を生成する(ステップS1111)。このとき、ステップS1110とステップS1111の順序を入れ替えてもよい。つぎに、主制御部201は、ステップS1110,S1111で生成した制御コマンドデータ1001、付随データ1002、ダミー認証データ1005からなる制御信号(ダミー認証データ付制御信号1040)を演出制御部202に送信する(ステップS1112)。そして、ステップS1107に進み、主制御部201の電源がオフにされない場合、ステップS1103に戻り、次の制御コマンドの送信タイミングまで待機して、以降の処理を繰り返しおこなう。
一方、ステップS1109において認証処理のタイミングである場合(ステップS1109:Yes)、主制御部201は、制御コマンドデータ1001(所定の制御コマンド)および付随データ1002をセットする(ステップS1113)。また、主制御部201は、認証データ1003を生成する(ステップS1114)。このとき、ステップS1113とステップS1114の順序を入れ替えてもよい。つぎに、主制御部201は、ステップS1113,S1114で生成した制御コマンドデータ1001、付随データ1002、認証データ1003からなる制御信号(認証データ付制御信号1020)を演出制御部202に送信する(ステップS1115)。そして、ステップS1107に進み、主制御部201の電源がオフにされない場合、ステップS1103に戻り、次の制御コマンドの送信タイミングまで待機して、以降の処理を繰り返しおこなう。
また、ステップS1108において今回送信する制御コマンドが所定の制御コマンド以外のコマンドである場合(ステップS1108:No)、主制御部201は、制御コマンドデータ1001(電源オンコマンドおよび所定の制御コマンド以外のコマンド)および付随データ1002をセットする(ステップS1116)。つぎに、ステップS1116でセットした制御コマンドデータ1001および付随データ1002からなる制御信号(通常の制御信号1010)を演出制御部202に送信する(ステップS1117)。そして、ステップS1107に進み、電源がオフにされない場合、ステップS1103に戻り、次の制御コマンドの送信タイミングまで待機して、以降の処理を繰り返しおこなう。また、ステップS1107において電源がオフにされた場合(ステップS1107:Yes)、本フローチャートによる処理を終了する。
なお、図11のフローチャートにおいては、ステップS1102において補正データを生成するとしているが、これに限らず、ステップS1106において補正データ付制御信号1030を送信する前に補正データ1004を生成してもよい。具体的には、たとえば補正データ1004をプログラムコードや制御コマンドを用いて生成する場合、ステップS1104:Yesにおいて電源オンコマンドであると判断された後で、ステップS1105において制御コマンドデータ1001および付随データ1002をセットする前に、補正データ1004を生成してもよい。また、ステップS1105において制御コマンドデータ1001および付随データ1002をセットした後で、ステップS1106において補正データ付制御信号1030を送信する前に、補正データ1004を生成してもよい。
また、図11のフローチャートにおいては、ステップS1109:Noにおいて認証処理のタイミング1109ではない場合、ステップS1110〜ステップS1112の処理をおこなってダミー認証データ付制御信号1040を送信するとしているが、これに限るものではない。たとえば、ステップS1105,ステップS1106の処理をおこなって、再度補正データ付制御信号1030を送信する構成でもよいし、ステップS1116,ステップS1117の処理をおこなって通常の制御信号1010を送信する構成でもよい。すなわち、好適には、ステップS1106において補正データ付制御信号1030を送信してから、電源がオフされるまでの間に、少なくとも1回以上、認証データ付制御信号1020を送信すればよい。さらに好適には、たとえば、大当たり状態などの不正がおこなわれる可能性の高い状態になる前の所定の制御コマンドに認証データ1003を付加すればよい。
また、図11のフローチャートにおいては、ステップS1108:Noにおいて所定の制御コマンドではない場合、ステップS1116,ステップS1117の処理をおこなって、通常の制御信号1010を送信するとしているが、これに限るものではない。たとえば、ステップS1116,ステップS1117の処理をおこなって、再度補正データ付制御信号1030を送信する構成でもよい。また、ステップS1110〜ステップS1112の処理をおこなってダミー認証データ1005そを送信してもよいし、ステップS1113〜ステップS1115の処理をおこなって認証データ付制御信号1020を送信してもよい。
このように、主制御部201は、周辺基板に電源オンコマンドを送信する際にのみ、制御コマンドデータ1001に補正データ1004を付加する。電源オンコマンドは、ぱちんこ遊技機の電源の投入時やリセット時など、ぱちんこ遊技機の初期化処理をおこなう際に送信される。初期化処理は、ぱちんこ遊技機のメインの処理である遊技(ゲーム進行)関連処理とは異なる処理区分に分類される。初期化処理中に補正処理を組み込めば、遊技関連処理中に補正処理を組み込む場合と比較して、プログラム設計やテストにかかる工程(工数)を低減することができる。すなわち、初期化処理中に補正処理を組み込むことによって、開発コストの低減や品質管理上のメリットを得ることができる。
また、電源オンコマンドは、電源投入後の他の全ての制御コマンドの最初に送信される。したがって、たとえば電源がオフされている間に、主制御部201を他の主制御部201に変更した場合、確実に認証処理より前に補正処理をおこなうことができる。このため、補正処理の前に認証処理がおこなわれ、変更後の他の主制御部201を誤って不正な主制御部201であると判断することを防ぎ、正確な認証処理をおこなうことができる。
また、電源投入後の最初に補正処理がおこなわれるため、認証処理のタイミングを設計者の所望のタイミングでおこなうことができる。したがって、機種毎に最も好適なタイミングで認証処理をおこなわせることができるため、認証処理の強度を上げることができる。
さらに、補正処理や認証処理のタイミングではない場合でも、制御信号に補正データ1004または認証データ1003と同程度のサイズのダミー認証データ1005を付加することができる。これによって、補正データ1004や認証データ1003の付加された制御信号が、いつ送信されたのかを第三者に見破られることを防ぐことができるので、より補正データ1004または認証データ1003が抽出される可能性を低減することができる。
つぎに、演出制御部202による制御信号の受信処理について説明する。図12は、演出制御部202による制御信号の受信処理の手順を示すフローチャートである。図12のフローチャートにおいて、演出制御部202は、まず、主制御部201から制御信号を受信するまで待機する(ステップS1201:Noのループ)。主制御部201から制御信号を受信すると(ステップS1201:Yes)、演出制御部202は、受信した制御信号に補正データ1004が含まれているか否かを判断する(ステップS1202)。制御信号に補正データ1004が含まれているか否かの判断は、たとえば、データ量が通常の制御信号よりも多い制御信号のうちの、周辺部の電源が投入されてからn番目の制御信号か否かを判断したり、補正データ1004が含まれていることを示すフラグが制御信号に立てられているか否かを判断することによっておこなう。
ステップS1202において、制御信号に補正データ1004が含まれている場合(ステップS1202:Yes)、演出制御部202は、制御信号から補正データ1004を抽出し、この補正データ1004を用いて演出制御部202に保持されている期待値を補正する(ステップS1203)。
また、ステップS1202において、演出制御部202は、受信した制御信号に補正データ1004が含まれているか否かではなく、制御信号に含まれる制御コマンドデータ1001が電源オンコマンドのデータであるか否かを判断してもよい。この場合、演出制御部202は、制御信号に含まれる制御コマンドデータ1001が電源オンコマンドのデータである場合に、制御信号から補正データ1004を抽出し、ステップS1203に進む。
つぎに、制御信号に含まれている制御コマンドデータ1001および付随データ1002に基づく処理をおこなって(ステップS1204)、ステップS1201に戻り、次の制御信号を受信するまで待機し、以降の処理を繰り返しおこなう。
一方、ステップS1202において、制御信号に補正データ1004が含まれていない場合(ステップS1202:No)、演出制御部202は、ステップS1201において受信した制御信号に、認証データ1003やダミー認証データ1005などの認証に関するデータが含まれているか否かを判断する(ステップS1205)。制御信号に認証に関するデータが含まれているか否かの判断は、たとえば、制御信号のデータ量が通常の制御信号よりも多いか否かを判断することによっておこなう。
また、ステップS1205において、演出制御部202は、受信した制御信号に認証に関するデータが含まれているか否かではなく、制御信号に含まれる制御コマンドデータ1001が所定の制御コマンドのデータであるか否かを判断してもよい。この場合、演出制御部202は、制御信号に含まれる制御コマンドデータ1001が所定の制御コマンドのデータである場合に、制御信号に認証に関するデータが含まれていると判断し、ステップS1206に進む。また、ステップS1205において、演出制御部202は、たとえば電源が投入(または、リセット)されてから、所定回数目の所定の制御コマンドのデータであるか否かを判断してもよい。この場合、演出制御部202は、電源が投入(または、リセット)されてから、所定回数目の所定の制御コマンドのデータである場合に、制御信号に認証に関するデータが含まれていると判断してもよい。
制御信号に認証に関するデータが含まれている場合(ステップS1205:Yes)、演出制御部202は、認証に関するデータがダミー認証データ1005か否かを判断する(ステップS1206)。認証に関するデータがダミー認証データ1005か否かの判断は、たとえば、制御信号のデータ量が通常の制御信号よりも多い制御信号のうちの、周辺部の電源が投入されてから所定回数目の制御信号か否かを判断したり、ダミー認証データ1005が含まれていることを示すフラグが制御信号に立てられているか否かを判断したりすることによっておこなう。
また、ステップS1206において、演出制御部202は、認証に関するデータがダミー認証データ1005か否かではなく、制御信号に含まれる制御コマンドデータ1001が所定の制御コマンドのデータであるか否かを判断してもよい。この場合、演出制御部202は、制御信号に含まれる制御コマンドデータ1001が所定の制御コマンドのデータ以外である場合に、ダミー認証データ1005であると判断し、所定の制御コマンドのデータである場合に、認証データ1003であると判断してもよい。また、ステップS1206において、演出制御部202は、たとえば電源が投入(または、リセット)されてから、n回目の所定の制御コマンドのデータであるか否かを判断してもよい。この場合、演出制御部202は、電源が投入(または、リセット)されてから、n回目の所定の制御コマンドのデータである場合に、認証に関するデータをダミー認証データ1005であると判断する。また、認証データとダミー認証データを付加する制御コマンドの種類が異なる場合、それぞれの種類の制御コマンドを受信した場合に、対応するデータが付加していると判断してもよい。
ステップS1206において認証に関するデータがダミー認証データ1005であると判断された場合(ステップS1206:Yes)、期待値との照合をおこなわず、ステップS1204に進み、制御信号に含まれている制御コマンドデータ1001および付随データ1002に基づく処理をおこなう。
一方、ステップS1206において認証に関するデータが認証データ1003であると判断された場合(ステップS1206:No)、演出制御部202は、制御信号から認証データ1003を抽出し、ステップS1203において補正された期待値を取得して(ステップS1207)、制御信号に含まれている認証データ1003と期待値とが一致するか否かを判断する(ステップS1208)。このとき、演出制御部202は、認証データ1003と期待値とが一致するか否かではなく、認証データ1003と期待値とが所定の関係にあるか否かを判断してもよい。所定の関係とは、たとえば、認証データ1003に所定の演算をおこなって得た値が期待値と一致する、などの関係である。
認証データと期待値とが一致する場合(ステップS1208:Yes)、演出制御部202は、制御信号を送信した主制御部201の正当性を認証し、ステップS1204に進み、制御信号に含まれている制御コマンドデータ1001および付随データ1002に基づく処理をおこなう。一方、認証データと期待値とが一致しない場合(ステップS1208:No)、演出制御部202は、制御信号を送信した主制御部201の正当性を認証せず、制御コマンドデータ1001および付随データ1002を破棄するとともに、報知信号出力部336(図3参照)から報知信号を出力して(ステップS1209)、本フローチャートによる処理を終了する。なお、ステップS1208では、データの破棄と報知のいずれかのみをおこなうこととしてもよい。
また、ステップS1205において、制御信号に認証に関するデータが含まれていない場合(ステップS1205:No)、すなわち制御信号が通常の制御信号1010の場合、演出制御部202は、期待値との照合をおこなわず、そのままステップS1204に進み、制御コマンドデータ1001および付随データ1002に基づく処理をおこなってもよい。
なお、図12のフローチャートにおいては、演出制御部202があらかじめ期待値を保持せず、期待値が他の構成部から送信される場合、ステップS1203においては期待値を補正せず、補正データ1004を抽出して記録部などに記録しておく。そして、ステップS1207において期待値を他の構成部から取得した後に、記録された補正データ1004を用いて期待値を補正し、ステップS1208に進み、補正された期待値が認証データ1003と一致するか否かを判断してもよい。
また、図12のフローチャートにおいては、ステップS1206において認証に関するデータがダミー認証データ1005であるか否かを判断するとしているが、これに限るものではない。たとえばステップS1205:Yesにおいて認証に関するデータが含まれていると判断された場合、ステップS1207およびステップS1208の処理をおこなってもよい。そして、認証に関するデータがダミー認証データ1005の場合は、ステップS1208においてダミー認証データ1005と期待値とが一致してもしなくても、ステップS1204に進む構成としてもよい。
このようにすることで、演出制御部202が認証データ1003またはダミー認証データ1005のいずれを受信した場合でも、演出制御部202における処理量や処理時間を変わらなくすることができる。これによって、正規な認証処理に用いる認証データ1003をいつ受信したのかを第三者に見破られることを防ぎ、認証データ1003が窃取されることを防ぐことができる。
(制御部間の制御信号の流れの一例)
つぎに、主制御部201と周辺部との間の制御信号の流れを、図13のシーケンス図を用いて説明する。ここで、周辺部は、たとえば演出制御部202や賞球制御部203(図2)である。図13は、制御部間の制御信号の流れの一例を示すシーケンス図である。図13において、点線Aに囲まれた部分が1回分の補正処理のステップであり、点線Bに囲まれた部分が1回分のダミー認証処理のステップであり、点線Cに囲まれた部分が1回分の認証処理のステップである。ダミー認証処理は、周辺部において、期待値との照合を行わず、仮に認証を成立させる認証処理である。なお、図13のシーケンス図においては、補正処理および認証処理を明確にするため、電源オンコマンドおよび所定の制御コマンド以外のコマンドの際の制御信号の流れを省略して記載している。
図13に示すように、まず、主制御部201は、補正値Mを生成する(ステップS1301)。補正値Mは、主制御部201の照合用の期待値を補正する値であり、補正データ1004の元となる値である。補正値Mは、好適には、実際の補正値とソルト値との演算結果値がよい。
そして、制御コマンドデータ1001が電源オンコマンドである場合、主制御部201は、制御コマンドデータ1001(電源オンコマンドデータ)および付随データ1002をセットする(ステップS1302)。また、主制御部201は、補正データ1004(Vm)を生成する(ステップS1303)。ステップS1303においては、たとえば下記(1)式によって補正データ1004(Vm)を生成する。ここで、F1は、電源がオンされた際に、ステップS1302においてセットされた電源オンコマンドデータおよび付随データ1002をあらわす。また、Ec(A,B)は、暗号化演算式をあらわす。なお、暗号化演算による暗号化処理を、2回以上おこなってもよい。
Vm=Ec(M,F1) ・・・(1)
ここで、具体的には、たとえばM=0x35、F1=0x22であり、Ec(A,B)が、A xor B(排他的論理和)の場合、Vmは下記(2)式によって、0x17となる。
Vm=Ec(0x35,0x22)
=0x35 xor 0x22
=0x17 ・・・(2)
つぎに、主制御部201は、制御コマンドデータ1001、付随データ1002、補正データ1004を含む補正データ付制御信号1030(F1,Vm)を周辺部に送信する(ステップS1304)。なお、ステップS1304においては、電源オン時に付随データ1002がセットされた制御コマンドデータ1001(F1)と、補正データ1004(Vm)とを、別々に周辺部に送信してもよい。また、この場合、送信順序は、順不同でよい。
演出制御部202は、ステップS1304で送信された補正データ付制御信号(F1,Vm)を受信する(ステップS1305)。つぎに、演出制御部202は、補正データ1004(Vm)を復元する(ステップS1306)。ステップS1306においては、下記(3)式によって補正データ1004(Vm)を復元し、補正値Mを取得する。ここで、Dc(A,B)は、復号化演算式をあらわす。
M=Dc(Vm,F1) ・・・(3)
ここで、具体的には、たとえばVm=0x17、F1=0x22であり、Dc(A,B)が、A xor Bの場合、Mは下記(4)式によって、0x35となる。
M=Dc(0x17,0x22)
=0x17 xor 0x22
=0x35 ・・・(4)
つぎに、ステップS1306において取得された補正値Mを用いて期待値補正処理をおこなう(ステップS1307)。なお、たとえば周辺部にあらかじめ期待値が保持されていない場合、ステップS1307において、周辺部は、他の制御部から期待値を取得し、取得された期待値に期待値補正処理をおこなう。そして、周辺部は、制御コマンドデータ1001および付随データ1002に基づく処理をおこなう(ステップS1308)。
なお、具体的には、ステップS1307において、あらかじめ保持されていた期待値(旧期待値)が、0xACの場合、補正処理によって補正された期待値(新期待値)は、下記(5)式によって0x77となる。そして、周辺部は、この0x77を主制御部201の照合用の期待値として保持する。
0xAC(旧期待値)−0x35(補正値)=0x77(新期待値) ・・・(5)
つぎに、制御コマンドデータ1001が周辺部の電源が投入されてからx番目の所定の制御コマンドの場合、主制御部201は、制御コマンドデータ1001(所定の制御コマンドデータ)および付随データ1002をセットする(ステップS1311)。また、主制御部201は、誤り検査値Cb’を生成する(ステップS1312)。ここで、誤り検査値Cb’は、主制御部201の備える記録部などに記録された所定のプログラムコードなどから生成した誤り検出可能な数値である。誤り検査値Cb’は、好適には、実際の誤り検査値とソルト値との演算結果値がよい。また、b’は、ダミー認証処理の処理順序をあらわし、たとえば周辺部の電源がオンされてから1回目のダミー認証処理の場合、b’=1となる。
さらに、主制御部201は、認証データ1003(Vcb’)を生成する(ステップS1313)。ステップS1313においては、たとえば下記(6)式によって認証データ1003(Vcb’)を生成する。なお、ステップS1313において、暗号化演算をおこなう方式は、1種類でもよいし、2種類以上でもよい。暗号化方式が2種類以上の場合、ステップS1313においては、複数の暗号化方式の中から1種類の暗号化方式を選択し、選択した暗号化方式によって暗号化演算をおこなう。また、暗号化演算による暗号化処理を、2回以上おこなってもよい。xは、所定の制御コマンドの処理順序をあらわし、Fxは、たとえば主制御部201の電源がオンされてからx番目の所定の制御コマンドの際に、ステップS1312においてセットされた制御コマンドデータ1001および付随データ1002をあらわす。
Vcb’=Ec(Cb’,Fx) ・・・(6)
つぎに、主制御部201は、制御コマンドデータ1001、付随データ1002、認証データ1003を含む認証データ付制御信号1020(Fx,Vcb’)を周辺部に送信する(ステップS1314)。なお、ステップS1314においては、周辺部に電源が投入されてからx番目に付随データ1002がセットされた制御コマンドデータ1001(Fx)と、認証データ1003(Vcb’)とを、別々に周辺部に送信してもよい。また、この場合、送信順序は、順不同でよい。
周辺部は、ステップS1314で送信された認証データ付制御信号(Fx,Vcb’)を受信する(ステップS1315)。そして、期待値との照合を行わずに、主制御部201を認証し、制御コマンドデータ1001および付随データ1002に基づく処理をおこなう(ステップS1316)。
つぎに、制御コマンドデータ1001が周辺部の電源が投入されてからy番目(x≠y)の所定の制御コマンドの場合、主制御部201は、制御コマンドデータ1001(所定の制御コマンドデータ)および付随データ1002をセットする(ステップS1321)。また、主制御部201は、誤り検査値Cbを生成する(ステップS1322)。ここで、誤り検査値Cbは、主制御部201の備える記録部などに記録された所定のプログラムコードなどから生成した誤り検出可能な数値である。誤り検査値Cbは、好適には、実際の誤り検査値とソルト値との演算結果値がよい。また、bは、認証処理の処理順序をあらわし、たとえば電源がオンされてから1回目の認証処理の場合、b=1となる。
さらに、主制御部201は、認証データ1003(Vcb)を生成する(ステップS1323)。ステップS1323においては、たとえば下記(7)式によって認証データ1003(Vcb)を生成する。ここで、yは、所定の制御コマンドによっておこなわれる所定の制御の処理順序をあらわし、たとえば主制御部201の電源がオンされてから1番目の所定の制御の場合、y=1となる。Fyは、たとえば主制御部201の電源がオンされてからy番目の所定の制御の際に、ステップS1321においてセットされた制御コマンドデータ1001および付随データ1002をあらわす。なお、ステップS1323において、暗号化演算をおこなう方式は、1種類でもよいし、2種類以上でもよい。暗号化方式が2種類以上の場合、ステップS1323においては、複数の暗号化方式の中から1種類の暗号化方式を選択し、選択した暗号化方式によって暗号化演算をおこなう。また、暗号化演算による暗号化処理を、2回以上おこなってもよい。
Vcb=Ec(Cb,Fy) ・・・(7)
ここで、具体的には、たとえばCb=0x77、Fy=0x22であり、Ec(A,B)が、A xor Bの場合、Vcbは下記(8)式によって、0x55となる。
Vcb=Ec(0x77,0x22)
=0x77 xor 0x22
=0x55 ・・・(8)
つぎに、主制御部201は、制御コマンドデータ1001、付随データ1002、認証データ1003を含む認証データ付制御信号1020(Fy,Vcb)を周辺部に送信する(ステップS1324)。なお、ステップS1324においては、所定の制御のy番目に付随データ1002がセットされた制御コマンドデータ1001(Fy)と、認証データ1003(Vcb)とを、別々に周辺部に送信してもよい。また、この場合、送信順序は、順不同でよい。
周辺部は、ステップS1324で送信された認証データ付制御信号(Fy,Vcb)を受信する(ステップS1325)。つぎに、演出制御部202は、認証データ1003(Vcb)を復元する(ステップS1326)。ステップS1326においては、下記(9)式によって認証データ1003(Vcb)を復元し、誤り検査値Cbを取得する。なお、ステップS1326においては、ステップS1322において複数の暗号化方式の中から1種類の暗号化方式が選択されて暗号化処理された場合、複数の復号化方式によって復号化する。
Cb=Dc(Vcb,Fy) ・・・(9)
ここで、具体的には、たとえばVcb=0x55、Fy=0x22であり、Dc(A,B)が、A xor Bの場合、誤り検査値Cbは下記(10)式によって、0x77となる。
Cb=Dc(0x55,0x22)
=0x55 xor 0x22
=0x77 ・・・(10)
つぎに、ステップS1307において補正された期待値(新期待値)と、ステップS1326において取得された誤り検査値Cbと、を用いて認証処理をおこなう(ステップS1327)。ステップS1327においては、たとえば期待値と誤り検査値Cbとが一致する場合に、主制御部201を認証する。なお、ステップS1327においては、ステップS1326において複数の復号化方式によって復号化され、取得された誤り検査値Cbのいずれかが期待値と一致する場合に、主制御部201を認証してもよい。
ここで、具体的には、新期待値は、上述の(5)式によって算出されたように0x77であり、誤り検査値Cbは、上述の(10)式によって算出されたように0x77である。したがって、新期待値と誤り検査値Cbとが一致するため、この場合、認証が成立することとなる。
ステップS1327において、認証が成立した場合、周辺部は制御コマンドデータ1001および付随データ1002に基づく処理をおこなう(ステップS1328)。なお、ステップS1327において、認証が成立しなかった場合は、制御コマンドデータ1001および付随データ1002を破棄する(図12のステップS1208参照)。
なお、図13のシーケンス図においては、一例として電源オンコマンドのときに補正データ付制御信号1030を送信し、x番目の所定の制御コマンドのときにダミー認証データ付制御信号1040を送信し、y番目の所定の制御コマンドのときに認証データ付制御信号1020を送信することとしているが、これに限るものではない。具体的には、たとえば補正データ付制御信号1030を送信した後には、ダミー認証データ付制御信号1040や認証データ付制御信号1020や通常の制御信号1010を送信してもよい。また、再度補正データ付制御信号1030を送信してもよい。すなわち、図13のシーケンス図においては、補正処理の後に、少なくとも1回の認証処理がおこなわれていればよい。したがって、図13に示す認証処理の後には、主制御部201は、補正データ付制御信号1030を送信してもよいし、認証データ付制御信号1020を送信してもよいし、ダミー認証データ付制御信号1040を送信してもよい。また、補正データ1004または認証データ1003、ダミー認証データ1005の付加されていない通常の制御信号1010を送信してもよい。
また、図13のシーケンス図において、周辺部は、ステップS1307において期待値補正をおこなった後に、補正後の期待値(最終期待値)そのものを固定値として保持しなくてもよい。この場合、たとえば製造時から、補正データ1004による補正処理(A)をおこなわないと、ダミー認証処理(B)においては認証が成立となり、認証処理(C)においては認証が不成立となるように設計する。このようにすることで、最終期待値を知り得る者を限定することができ、期待値に関する情報の流出などのリスクを低減することができる。
また、図13のシーケンス図における具体例においては、暗号化演算式および復号化演算式に、排他的論理和を用いたが、四則や暗号演算など、他の演算式を用いてもよい。すなわち、主制御部201および周辺部において、あらかじめ相互で定められている認証方式や演算式であればよい。
また、認証データを用いた認証処理は、認証データを受信する度におこなうのではなく、複数の認証データを受信した時点でおこなうこととしてもよい。この場合、周辺部は、たとえば、第1の所定の制御コマンドデータおよび第1の制御データとともに第1の認証データを受信した場合、認証処理をおこなわずに、第1の所定の制御コマンドデータおよび第1の制御データに基づく処理をおこなう。そして、周辺部は、第2の所定の制御コマンドデータおよび第2の制御データとともに第2の認証データを受信した場合、第2の所定の制御コマンドデータおよび第2の制御データに基づく処理をおこなう前に、第1の認証データを用いた認証処理をおこなう。このとき、周辺部は、第1の認証データと第2の認証データの両方を用いて認証処理をおこなってもよい。このように、複数の認証データを受信した時点で認証処理をおこなえば、エラーによって制御信号に余分なデータが付加されてしまった場合などに、誤って認証処理をおこなってしまうことを防ぐことができる。
以上説明したように、本実施の形態にかかる電子機器では、所定の制御コマンドを送信する際、周辺部において主制御部の照合に用いる期待値を補正するための補正データを用いて期待値補正処理をおこなう。また、補正データを送信した後で、所定の制御コマンドを送信する際、主制御部の正当性を認証するための認証データを用いて認証処理をおこなう。補正データは、主制御部に固有の値によって生成される。たとえば、補正データは主制御部が変更された場合、変更前の主制御部に固有の値と、変更後の主制御部に固有の値との差分によって生成される。また、認証データは、正規の主制御部に格納されたプログラムデータによって生成される。そして、認証データを用いて算出された値と、補正データを用いて補正された期待値とが一致する場合、主制御部を正規の主制御部と認証することができる。
このため、正規の主制御部が不正な基板に交換されたり、正規の主制御部と周辺部との間に不正な基板が取り付けられたことを検知することができる。また、主制御部が他の正規の主制御部に変更された場合、誤って変更後の主制御部を不正な基板と認証することを防ぐことができる。さらに、今回送信する制御コマンドデータや付随データを含めて補正データや認証データを生成することとすれば、不正な制御基板による補正データや認証データの再利用を防止して、電子機器への不正を防止することができる。
また、主制御部の照合に用いる最終期待値(補正後の期待値)そのものである固定値を周辺部に保持させないことで、照合に用いる最終期待値を知り得る者を限定することができる。この場合、具体的には、たとえば製造時から、期待値の補正処理をおこなわないと、ダミー認証処理においては認証が成立となり、認証処理においては認証が不成立となるように設計する。これにより、期待値に関する情報の流出などのリスクを軽減することができる。
また、認証処理をおこなうタイミング以外の場合、所定の制御コマンドを送信する際に、ダミー認証データを付加することができる。ダミー認証データは、認証データのダミーデータであり、補正処理や認証処理に用いられないデータである。したがって、認証データの送信されるタイミング、すなわち認証処理のおこなわれるポイントが第3者に見破られることを防ぎ、認証に関する情報の流出などのリスクをより軽減することができる。
また、本実施の形態にかかる電子機器(たとえば、ぱちんこ遊技機)では、主制御部が周辺部に電源オンコマンドを送信する際に、制御コマンドに補正データを付加する。電源オンコマンドは、ぱちんこ遊技機の電源の投入時やリセット時など、ぱちんこ遊技機の初期化処理をおこなう際に送信される。初期化処理は、ぱちんこ遊技機のメインの処理である遊技(ゲーム進行)関連処理とは異なる処理区分に分類される。本実施の形態にかかるぱちんこ遊技機のように、初期化処理中に補正処理を組み込めば、遊技関連処理中に補正処理を組み込む場合と比較して、プログラム設計やテストにかかる工程(工数)を低減することができる。すなわち、初期化処理中に補正処理を組み込むことによって、開発コストの低減や品質管理上のメリットを得ることができる。
また、初期化処理中に補正処理を組み込めば、周辺部において、ぱちんこ遊技機の起動直後に補正処理をおこなうため、ぱちんこ店が閉店した後に不正がおこなわれた場合などであっても、客が入店する前に不正を検出することができる。よって、不正による被害が発生する可能性を低減することができる。
また、電源オンコマンドは、電源投入後の他の全ての制御コマンドの最初に送信される。したがって、たとえば電源がオフされている間に、主制御部を他の主制御部に変更した場合、認証処理より前に補正処理をおこなうことができるため、変更後の他の主制御部を誤って不正な主制御部であると判断することを防ぐことができる。
また、電源投入後の最初に補正処理がおこなわれるため、認証処理のタイミングを設計者の所望のタイミングでおこなうことができる。したがって、ぱちんこ遊技機の機種毎に最も好適なタイミングで認証処理をおこなわせることができるため、認証の強度を上げることができる。
なお、本実施の形態で説明した主制御部および周辺部の制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。