本発明を実施するための形態について、図面を参照しながら説明する。具体的には、本発明の実施形態に係る遊技機の1つであるパチンコ遊技機1(以下、「遊技機1」という)について説明する。
[遊技機の構成]
これより、本発明の一実施形態に係る遊技機1の構成について説明する。
図1は、本実施形態に係る遊技機1の外観構成を示す正面図である。図2は、本実施形態に係る遊技機1のガラス枠を開放させた状態の外観構成を示す斜視図である。図3は、本実施形態に係る遊技機1の裏面側の外観構成を示す斜視図である。
遊技機1は、遊技店の島設備に取り付けられる外枠60と、その外枠60と回動可能に支持されたガラス枠50とが備えられている(図1、図2参照)。また、外枠60には、遊技球200が流下する遊技領域6が形成された遊技盤2が設けられている。ガラス枠50には、回動操作されることにより遊技領域6に向けて遊技球を発射させる操作ハンドル3と、スピーカからなる音声出力装置32と、複数のランプを有する演出用照明装置34と、押圧操作により演出態様を変更させるための演出ボタン35とが設けられている。
更に、ガラス枠50には、複数の遊技球200を貯留する受け皿40が設けられており、この受け皿40は、操作ハンドル3の方向側に遊技球200が流下するように下りの傾斜を有している(図2参照)。この受け皿40の下りの傾斜の端部には、遊技球を受け入れる図示しない受入口が設けられており、この受入口に受け入れられた遊技球は、玉送りソレノイド4bが駆動することにより、ガラス枠50の裏面に設けられた玉送り開口部41へ1個ずつ送り出される。そして、玉送り開口部41へ送り出された遊技球は、打出部材4cの方向に向けて下り傾斜を有している発射レール42により、発射レール42の下り傾斜の端部に誘導される。発射レール42の下り傾斜の端部の上方には、遊技球を停留させるストッパー43が設けられており、玉送り開口部41から送り出された遊技球200は、発射レール42の下り傾斜の端部で1個の遊技球が停留されることになる(図2参照)。
そして、遊技者が操作ハンドル3を回動させると、操作ハンドル3に直結している発射ボリューム3b(図4参照)も回動し、発射ボリューム3bにより遊技球の発射強度が調整され、調整された発射強度で発射用ソレノイド4a(図4参照)に直結された打出部材4cが回転する。この打出部材4cが回転することで、打出部材4cにより発射レール42の下り傾斜の端部に貯留されている遊技球200が打ち出され、遊技球が遊技領域6に発射されることとなる。
上記のようにして発射された遊技球は、発射レール42からレール5a、5b間を上昇して玉戻り防止片5cを超えると、遊技領域6に到達し、その後遊技領域6内を落下する。このとき、遊技領域6に設けられた複数の釘や風車によって、遊技球は予測不能に落下することとなる。
また、上記遊技領域6には、複数の一般入賞口12が設けられている。これら各一般入賞口12には、一般入賞口検出スイッチ12a(図4参照)が設けられており、この一般入賞口検出スイッチ12aが遊技球の入賞を検出すると、所定の賞球(例えば10個の遊技球)が払い出される。
また、上記遊技領域6の中央下側の領域には、遊技球が入球可能な始動領域を構成する第1始動口14及び第2始動口15と、遊技球が入球可能な第2大入賞口17とが設けられている。
この第2始動口15は、一対の可動片15bを有しており、これら一対の可動片15bが閉状態に維持される態様(以下、「第1の態様」という)と、一対の可動片15bが開状態となる態様(以下、「第2の態様」という)とに可動制御される。なお、第2始動口15が上記第1の態様に制御されているときには、当該第2始動口15の真上に位置する第2大入賞口17の入賞部材が障害物となって、遊技球の受入れを不可能としている。一方で、第2始動口15が上記第2の態様に制御されているときには、上記一対の可動片15bが受け皿として機能し、第2始動口15への遊技球の入賞が容易となる。つまり、第2始動口15は、第1の態様にあるときには遊技球の入賞機会がなく、第2の態様にあるときには遊技球の入賞機会が増すこととなる。
ここで、第1始動口14には遊技球の入球を検出する第1始動口検出スイッチ14a(図4参照)が設けられ、第2始動口15には遊技球の入球を検出する第2始動口検出スイッチ15a(図4参照)が設けられている。そして、第1始動口検出スイッチ14a又は第2始動口検出スイッチ15aが遊技球の入球を検出すると、特別図柄判定用乱数値等を取得し、後述する大当たり遊技を実行する権利獲得の抽選(以下、「大当たりの抽選」という)が行われる。また、第1始動口検出スイッチ14a又は第2始動口検出スイッチ15aが遊技球の入球を検出した場合にも、所定の賞球(例えば3個の遊技球)が払い出される。
また、第2大入賞口17は、遊技盤2に形成された開口部から構成されている。この第2大入賞口17の下部には、遊技盤面側からガラス板52側に突出可能な第2大入賞口開閉扉17bを有しており、この第2大入賞口開閉扉17bが遊技盤面側に突出する開放状態と、遊技盤面に埋没する閉鎖状態とに可動制御される。そして、第2大入賞口開閉扉17bが遊技盤面に突出していると、遊技球を第2大入賞口17内に導く受け皿として機能し、遊技球が第2大入賞口17に入球可能となる。この第2大入賞口17には第2大入賞口検出スイッチ17a(図4参照)が設けられており、この第2大入賞口検出スイッチ17aが遊技球の入球を検出すると、予め設定された賞球(例えば15個の遊技球)が払い出される。
更に、上記遊技領域6の右側の領域には、遊技球が通過可能な普通領域を構成する普通図柄ゲート13と、遊技球が入球可能な第1大入賞口16とが設けられている。
このため、操作ハンドル3を大きく回動させ、強い力で打ち出された遊技球でないと、普通図柄ゲート13と第1大入賞口16とには遊技球が、通過又は入賞しないように構成されている。特に、後述する時短遊技状態に移行したとしても、遊技領域6の左側の領域に遊技球を流下させてしまうと、普通図柄ゲート13に遊技球が通過しないことから、第2始動口15にある一対の可動片15bが開状態とならず、第2始動口15に遊技球が入賞することが困難になるように構成されている。
この普通図柄ゲート13には、遊技球の通過を検出するゲート検出スイッチ13a(図4参照)が設けられており、このゲート検出スイッチ13aが遊技球の通過を検出すると、普通図柄判定用乱数値を取得し、後述する「普通図柄の抽選」が行われる。
第1大入賞口16は、通常は第1大入賞口開閉扉16bによって閉状態に維持されており、遊技球の入球を不可能としている。これに対して、後述する特別遊技が開始されると、第1大入賞口開閉扉16bが開放されると共に、この第1大入賞口開閉扉16bが遊技球を第1大入賞口16内に導く受け皿として機能し、遊技球が第1大入賞口16に入球可能となる。第1大入賞口16には第1大入賞口検出スイッチ16a(図4参照)が設けられており、この第1大入賞口検出スイッチ16aが遊技球の入球を検出すると、予め設定された賞球(例えば15個の遊技球)が払い出される。
更には、遊技領域6の最下部であって遊技領域6の最下部の領域には、一般入賞口12、第1始動口14、第2始動口15、第1大入賞口16及び第2大入賞口17のいずれにも入球しなかった遊技球を排出するためのアウト口11が設けられている。
また、遊技領域6の中央には、遊技球の流下に影響を与える飾り部材7が設けられている。この飾り部材7の略中央部分には、液晶表示装置31が設けられており、この液晶表示装置31の上方には、ベルトの形をした演出用駆動装置33が設けられている。
なお、本実施形態においては、液晶表示装置31を液晶表示器として用いているが、有機ELディスプレイを用いてもよいし、プロジェクター、円環状の構造物からなるリール、いわゆる7セグメントLED、ドットマトリクス等の表示装置等を用いてもよい。
この液晶表示装置31は、遊技が行われていない待機中に画像を表示したり、遊技の進行に応じた画像を表示したりする。なかでも、後述する大当たりの抽選結果を報知するための3個の演出図柄36が表示され、特定の演出図柄36の組合せ(例えば、777等)が停止表示されることにより、大当たりの抽選結果として大当たりが報知される。
より具体的には、第1始動口14又は第2始動口15に遊技球が入球したときには、3個の演出図柄36をそれぞれスクロール表示すると共に、所定時間経過後に当該スクロールを停止させて、演出図柄36を停止表示するものである。また、この演出図柄36の変動表示中に、さまざまな画像やキャラクタ等を表示することによって、大当たりに当選するかもしれないという高い期待感を遊技者に与えるようにもしている。
上記演出用駆動装置33は、その動作態様によって遊技者に期待感を与えるものである。演出用駆動装置33は、例えば、ベルトが下方に移動したり、ベルト中央部の回転部材が回転したりする動作を行う。これら演出用駆動装置33の動作態様によって、遊技者にさまざまな期待感を与えるようにしている。
更に、上記の各種の演出装置に加えて、音声出力装置32は、バックグラウンドミュージック、サウンドエフェクト等を出力し、サウンドによる演出を行い、演出用照明装置34は、各ランプの光の照射方向や発光色を変更して、照明による演出を行うようにしている。
また、演出ボタン35は、例えば、上記液晶表示装置31に当該演出ボタン35を操作するようなメッセージが表示されたときのみ有効となる。演出ボタン35には、演出ボタン検出スイッチ35a(図4参照)が設けられており、この演出ボタン検出スイッチ35aが遊技者の操作を検出すると、この操作に応じてさらなる演出が実行される。
遊技領域6の右下方には、第1特別図柄表示装置20、第2特別図柄表示装置21、普通図柄表示装置22、第1特別図柄保留表示器23、第2特別図柄保留表示器24、普通図柄保留表示器25が設けられている。
上記第1特別図柄表示装置20は、第1始動口14に遊技球が入球したことを契機として行われた大当たりの抽選結果を報知するものであり、7セグメントのLEDで構成されている。つまり、大当たりの抽選結果に対応する特別図柄が複数設けられており、この第1特別図柄表示装置20に大当たりの抽選結果に対応する特別図柄を表示することによって、抽選結果を遊技者に報知するようにしている。例えば、大当たりに当選した場合には「7」が表示され、ハズレであった場合には「−」が表示される。このようにして表示される「7」や「−」が特別図柄となるが、この特別図柄はすぐに表示されるわけではなく、所定時間変動表示された後に、停止表示されるようにしている。
ここで、「大当たりの抽選」とは、第1始動口14又は第2始動口15に遊技球が入球したときに、特別図柄判定用乱数値を取得し、取得した特別図柄判定用乱数値が「大当たり」に対応する乱数値であるか、「小当たり」に対応する乱数値であるかの判定する処理をいう。この大当たりの抽選結果は即座に遊技者に報知されるわけではなく、第1特別図柄表示装置20において特別図柄が点滅等の変動表示を行い、所定の変動時間を経過したところで、大当たりの抽選結果に対応する特別図柄が停止表示して、遊技者に抽選結果が報知されるようにしている。なお、第2特別図柄表示装置21は、第2始動口15に遊技球が入球したことを契機として行われた大当たりの抽選結果を報知するためのもので、その表示態様は、上記第1特別図柄表示装置20における特別図柄の表示態様と同一である。
また、本実施形態において「大当たり」というのは、第1始動口14又は第2始動口15に遊技球が入球したことを条件として行われる大当たりの抽選において、大当たり遊技を実行する権利を獲得したことをいう。「大当たり遊技」においては、第1大入賞口16又は第2大入賞口17が開放されるラウンド遊技を計15回行う。各ラウンド遊技における第1大入賞口16又は第2大入賞口17の最大開放時間については予め定められた時間が設定されており、この間に第1大入賞口16又は第2大入賞口17に所定個数の遊技球(例えば9個)が入球すると、1回のラウンド遊技が終了となる。つまり、「大当たり遊技」は、第1大入賞口16又は第2大入賞口17に遊技球が入球すると共に、当該入球に応じた賞球を遊技者が獲得できる遊技である。
本実施形態では、「大当たりの抽選」においては、その当選確率により2つの遊技状態が設定されている。すなわち、当選確率が1/299.5に設定された「低確率遊技状態」と、当選確率が1/29.95に設定された「高確率遊技状態」である。また、「大当たり遊技」においても、複数種類の大当たり遊技が設定されている。例えば、「長当たり遊技」となれば、第1大入賞口16が、1ラウンド遊技毎に、29.000秒間×1回開放(×15ラウンド)される。「短当たり遊技」となれば、第2大入賞口17が、1ラウンド遊技毎に、0.052秒間×1回(×15ラウンド)開放される。「発展当たり遊技」となれば、第2大入賞口17が、最初の1ラウンド遊技では0.052秒間×3回開放され、2ラウンド目以降は、1ラウンド遊技毎に29.000秒間×1回(×14ラウンド)開放される。
また、「小当たり」の場合は、当選確率が1/149.75の1つの遊技状態が設定されている。また、「小当たり遊技」となれば、ラウンド遊技ではないものの、第2大入賞口17が0.052秒間×15回開放される。なお、本実施形態では、「大当たり遊技」と「小当たり遊技」とを総称して「特別遊技」という。
また、普通図柄表示装置22は、普通図柄ゲート13を遊技球が通過したことを契機として行われる普通図柄の抽選結果を報知するためのものである。詳しくは後述するが、この普通図柄の抽選によって当たりに当選すると普通図柄表示装置22が点灯し、その後、上記第2始動口15が所定時間、第2の態様に制御される。
ここで、「普通図柄の抽選」とは、普通図柄ゲート13に遊技球が通過したときに、普通図柄判定用乱数値を取得し、取得した普通図柄判定用乱数値が「当たり」に対応する乱数値であるかどうかを判定する処理をいう。この普通図柄の抽選結果についても、普通図柄ゲート13を遊技球が通過して即座に抽選結果が報知されるわけではなく、普通図柄表示装置22において普通図柄が点滅等の変動表示を行い、所定の変動時間を経過したところで、普通図柄の抽選結果に対応する普通図柄が停止表示して、遊技者に抽選結果が報知されるようにしている。
更に、特別図柄の変動表示中や後述する特別遊技中等、第1始動口14又は第2始動口15に遊技球が入球して、即座に大当たりの抽選が行えない場合には、一定の条件のもとで、大当たりの抽選の権利が保留される。より詳細には、第1始動口14に遊技球が入球したときに取得された特別図柄判定用乱数値を第1保留として記憶し、第2始動口15に遊技球が入球したときに取得された特別図柄判定用乱数値を第2保留として記憶する。
これら両保留は、それぞれ上限保留個数を4個に設定し、その保留個数は、それぞれ第1特別図柄保留表示器23と第2特別図柄保留表示器24とに表示される。なお、第1保留が1つの場合には、第1特別図柄保留表示器23の左側のLEDが点灯し、第1保留が2つの場合には、第1特別図柄保留表示器23の2つのLEDが点灯する。また、第1保留が3つの場合には、第1特別図柄保留表示器23の左側のLEDが点滅すると共に右側のLEDが点灯し、第1保留が4つの場合には、第1特別図柄保留表示器23の2つのLEDが点滅する。また、第2特別図柄保留表示器24においても、上記と同様に第2保留の保留個数が表示される。
そして、普通図柄の上限保留個数も4個に設定されており、その保留個数が、上記第1特別図柄保留表示器23及び第2特別図柄保留表示器24と同様の態様によって、普通図柄保留表示器25において表示される。
ガラス枠50は、遊技盤2の前方(遊技者側)において遊技領域6を視認可能に覆うガラス板52を支持している。なお、ガラス板52は、ガラス枠50に対して着脱可能に固定されている。
また、ガラス枠50は、左右方向の一端側(たとえば遊技機1に正対して左側)においてヒンジ機構部51を介して外枠60に連結されており、ヒンジ機構部51を支点として左右方向の他端側(たとえば遊技機1に正対して右側)を外枠60から開放させる方向に回動可能とされている。ガラス枠50は、ガラス板52と共に遊技盤2を覆い、ヒンジ機構部51を支点として扉のように回動することによって、遊技盤2を含む外枠60の内側部分を開放することができる。ガラス枠50の他端側には、ガラス枠50の他端側を外枠60に固定するロック機構が設けられている。ロック機構による固定は、専用の鍵によって解除することが可能とされている。また、ガラス枠50には、ガラス枠50が外枠60から開放されているか否かを検出する扉開放スイッチ133(図4参照)も設けられている。
遊技機1の裏面には、主制御部110が搭載された主制御基板、中間制御部180が搭載された中間制御基板、演出制御部120が搭載された演出制御基板、払出制御部130が搭載された払出制御基板、電源部170が搭載された電源基板、遊技情報出力端子板30などが設けられている。また、電源部170に遊技機1に電力を給電するための電源プラグ171や、図示しない電源スイッチが設けられている。
[遊技機の内部構成]
これより、本発明の実施形態に係る遊技機1の遊技進行に係る処理を制御する制御手段について説明する。
図4は、本実施形態に係る遊技機1の内部構成を示すブロック図である。
主制御部110は、遊技の基本動作を制御する主制御手段であり、第1始動口検出スイッチ14a等の各種検出信号を入力して、第1特別図柄表示装置20や第1大入賞口開閉ソレノイド16c等を駆動させて遊技を制御するものである。
この主制御部110は、メインCPU110a、メインROM110b、メインRAM110c、ブートROM110dから少なくとも構成されるワンチップマイコン110mと、検査値生成部500と、送信部550と、主制御用の入力ポートと出力ポート(図示せず)とを少なくとも備えている。
この主制御用の入力ポートには、払出制御部130、一般入賞口12に遊技球が入球したことを検知する一般入賞口検出スイッチ12a、普通図柄ゲート13に遊技球が入球したことを検知するゲート検出スイッチ13a、第1始動口14に遊技球が入球したことを検知する第1始動口検出スイッチ14a、第2始動口15に遊技球が入球したことを検知する第2始動口検出スイッチ15a、第1大入賞口16に遊技球が入球したことを検知する第1大入賞口検出スイッチ16a、第2大入賞口17に遊技球が入球したことを検知する第2大入賞口検出スイッチ17aが接続されている。この主制御用の入力ポートによって、各種信号が主制御部110に入力される。
また、主制御用の出力ポートには、払出制御部130、第2始動口15の一対の可動片15bを開閉動作させる始動口開閉ソレノイド15c、第1大入賞口開閉扉16bを動作させる第1大入賞口開閉ソレノイド16c、第2大入賞口開閉扉17bを動作させる第2大入賞口開閉ソレノイド17c、特別図柄を表示する第1特別図柄表示装置20と第2特別図柄表示装置21、普通図柄を表示する普通図柄表示装置22、特別図柄の保留球数を表示する第1特別図柄保留表示器23と第2特別図柄保留表示器24、普通図柄の保留球数を表示する普通図柄保留表示器25、外部情報信号を出力する遊技情報出力端子板30が接続されている。この主制御用の出力ポートによって、各種信号が出力される。
主制御部110のメインCPU110aは、各検出スイッチや内部機能として組み込まれている図示しないタイマ等からの入力信号に基づいて、メインROM110bに記憶されたプログラムを読み出して演算処理を行うと共に、演算処理の結果に応じて、主制御部110を構成する各構成部に対する制御指示(以下、「制御信号」という)や主制御部110以外の他の制御部に対する制御コマンドを出力したりする。
主制御部110のメインROM110bには、遊技進行に係る処理の内容や手順を記述した遊技処理用プログラムや、各種の遊技の決定に必要な固定データ、テーブルが予め記憶されている。
メインROM110bに記憶されたテーブルとして一例を挙げれば、大当たり抽選に参照される大当たり判定テーブル、普通図柄の抽選に参照される当たり判定テーブル、特別図柄の停止図柄を決定する図柄決定テーブル、大当たり終了後の遊技状態を決定するための大当たり遊技終了時設定データテーブル、大入賞口開閉扉の開閉条件を決定する特別電動役物作動態様決定テーブル、大入賞口開放態様テーブル、特別図柄の変動パターンを決定する変動パターン決定テーブルなどがある。
また、メインROM110bには、検査値生成部500を介して送信部550から制御コマンドを送信する処理の内容や手順を記述した認証処理用プログラムや、認証処理用プログラムを実行する際に使用される固定データなどが予め記憶されている。また、メインROM110bには、電源投入時などの遊技機1のリセット時に行われる主制御部110のブート処理中に、ワンチップマイコン110mの内蔵回路や周辺回路等に対して設定される初期値(いわゆるハードウェアパラメータ)が予め記憶されている。また、メインROM110bには、遊技機1固有の情報である固有情報などが予め記憶されている。
主制御部110のブートROM110dには、ワンチップマイコン110mの内蔵回路や周辺回路等の初期化及び初期値の設定処理(以下、「初期値設定処理」という)を含む、メインCPU110aが実行するブート処理の内容や手順を記述したブート処理用プログラムや、ブート処理用プログラムの実行の際に使用される固定データが記憶されている。このブート処理用プログラムは、メインCPU110aの起動直後に立ち上るように設定されている。
主制御部110のメインRAM110cは、メインCPU110aの演算処理時におけるデータのワークエリアとして機能し、複数の記憶領域を有している。
メインRAM110cが有する記憶領域として一例を挙げれば、普通図柄保留数(G)記憶領域、普通図柄保留記憶領域、普通図柄データ記憶領域、第1特別図柄保留数(U1)記憶領域、第2特別図柄保留数(U2)記憶領域、第1特別図柄乱数値記憶領域、第2特別図柄乱数値記憶領域、ラウンド遊技回数(R)記憶領域、開放回数(K)記憶領域、大入賞口入球数(C)記憶領域、遊技状態記憶領域(高確率遊技フラグ記憶領域等と時短遊技フラグ記憶領域)、高確率遊技回数(X)カウンタ、時短回数(J)カウンタ、遊技状態バッファ、停止図柄データ記憶領域、送信データ用記憶領域、特別図柄時間カウンタ、特別遊技タイマカウンタなど各種のタイマカウンタなどがある。
主制御部110の検査値生成部500は、メインCPU110aと送信部550との間に接続された回路である。検査値生成部500は、主制御部110が制御コマンドを送信する際に、制御コマンドの正当性を検査して主制御部110の正当性を認証するための誤り検査値を生成し、制御コマンドに付加する機能(以下、「誤り検査値付加機能」という)を有している。具体的には、検査値生成部500は、メインCPU110aが送信部550にて制御コマンドを送信する処理(以下、「コマンド送信処理」という)を行う際に、メインCPU110aから制御コマンドを受け取る。そして、検査値生成部500は、受け取った制御コマンドの誤り検査値を生成する処理(以下、「検査値生成処理という」)を行う。そして、検査値生成部500は、生成した誤り検査値を制御コマンドに付加する処理(以下、「検査値付加処理」という)を行った後、誤り検査値付きの制御コマンドを送信部550へ出力する。
主制御部110の送信部550は、上記主制御用の出力ポートの中でも、特に、主制御部110に対する認証機能を担うよう予め定められた制御部(後述する中間制御部180)への制御コマンドの出力に用いられる。具体的には、送信部550は、検査値生成部500に後続して設けられており、検査値生成部500から出力された誤り検査値付きの制御コマンドを中間制御部180へ送信する。
遊技情報出力端子板30は、主制御部110において生成された外部情報信号を遊技店のホールコンピュータ等に出力するための基板である。遊技情報出力端子板30は、主制御部110と配線接続され、外部情報を遊技店のホールコンピュータ等と接続をするためのコネクタが設けられている。
電源部170は、コンデンサからなるバックアップ電源を備えており、遊技機1に電源電圧を供給すると共に、遊技機1に供給する電源電圧を監視し、電源電圧が所定値以下となったときに、電断検知信号を主制御部110へ出力する。より具体的には、電源電圧が、設定値以下を示すために電断検知信号がローレベルとなり一定時間経過すると、リセット信号がローレベルとなり、メインCPU110aは動作を停止する処理を行う。その後、電源電圧が、設定値以上を示すために電断検知信号がハイレベルとなり一定時間経過すると、リセット信号がハイレベルとなり、メインCPU110aは動作を開始する処理を行う。バックアップ電源はコンデンサに限らず、例えば、電池でもよく、コンデンサと電池とを併用して用いてもよい。
中間制御部180は、主に主制御部110に対する認証機能を実現するための制御手段であり、CPU180a、ROM180b、RAM180cを備えている。中間制御部180は、主制御部110と、主制御部110が本来の遊技処理に係る制御コマンドを送信する対象となる制御部(演出制御部120や払出制御部130等)との間に設けられている。
例えば、図4に示すように、中間制御部180が主制御部110と演出制御部120との間に設けられている場合、中間制御部180は、主制御部110から中間制御部180への一方向に通信可能となるように接続され、中間制御部180から演出制御部120への一方向に通信可能となるように接続されている。また、図示しないが、中間制御部180が主制御部110と払出制御部130との間に設けられている場合、中間制御部180は、主制御部110との間で双方向に通信可能となるように接続され、払出制御部130との間で双方向に通信可能となるように接続されている。よって、中間制御部180が介在する場合、演出制御部120や払出制御部130等は、主制御部110から直接制御コマンドを送信されず、中間制御部180を介して送信されることとなる。
CPU180aは、主制御部110から送信された制御コマンド、又は、内部機能として組み込まれている図示しないタイマからの入力信号に基づいて、ROM180bに記憶されたプログラムを読み出して演算処理を行う。そして、CPU180aは、当該処理に基づいて、対応するデータを後続する演出制御部120や払出制御部130へ送信する。RAM180cは、CPU180aの演算処理時におけるデータのワークエリアとして機能する。
例えば、中間制御部180のCPU180aは、主制御部110から送信された制御コマンドを受信すると、当該制御コマンドの正当性を検査して主制御部110の正当性を認証する誤り検査処理を行う。そして、CPU180aは、当該処理にて得られた認証結果の情報(以下、「認証結果データ」という)を後続する演出制御部120や払出制御部130等へ送信し、認証結果データに基づく処理を実行させる。また、CPU180aは、受信した制御コマンドの具体的な処理内容及び受信順序を維持したまま、当該制御コマンドを後続する演出制御部120や払出制御部130等へ送信する中継送信処理を行う。
また、ROM180bには、CPU180aにて行われる受信した制御コマンドへの誤り検査処理を含む認証処理の内容や手順を記述した認証処理用プログラムや、認証処理用プログラムの実行の際に使用される固定データ、及び主制御部110のメインROM110bに記憶された固有情報に対応する情報などが予め記憶されている。
このように、中間制御部180は、主制御部110に対する認証機能と、受信した制御コマンドを後続する演出制御部120や払出制御部130等へ中継送信する機能と、誤り検査処理にて得られた認証結果データを後続する演出制御部120や払出制御部130等へ送信する機能とを少なくとも有している。なお、これら認証処理に関する構成については後述する。
演出制御部120は、主に遊技中や待機中等の各演出を制御する。この演出制御部120は、サブCPU120a、サブROM120b、サブRAM120cを備えており、主制御部110から演出制御部120への一方向に通信可能となるように設けられている。なお、図4に示すように、中間制御部180が主制御部110と演出制御部120との間に設けられている場合、演出制御部120は、中間制御部180を介して主制御部110から演出制御部120への一方向に通信可能となる。
サブCPU120aは、主制御部110から送信された制御コマンド、又は、上記演出ボタン検出スイッチ35a、タイマからの入力信号に基づいて、サブROM120bに記憶されたプログラムを読み出して演算処理を行うと共に、当該処理に基づいて、対応するデータをランプ制御部140又は画像制御部150に送信する。サブRAM120cは、サブCPU120aの演算処理時におけるデータのワークエリアとして機能する。
例えば、演出制御部120におけるサブCPU120aは、主制御部110から送信された制御コマンドの1つである特別図柄の変動態様を示す変動パターン指定コマンドを受信すると、受信した変動パターン指定コマンドの内容を解析して、液晶表示装置31、音声出力装置32、演出用駆動装置33、演出用照明装置34に所定の演出を実行させるためのデータを生成し、かかるデータを画像制御部150やランプ制御部140へ送信する。
演出制御部120のサブROM120bには、演出制御用のプログラムや各種の遊技の決定に必要なデータ、テーブルが記憶されている。
サブROM120bに記憶されたテーブルとして一例を挙げれば、主制御部から受信した変動パターン指定コマンドに基づいて演出パターンを決定するための演出パターン決定テーブル、停止表示する演出図柄36の組み合わせを決定するための演出図柄決定テーブルなどがある。
演出制御部120のサブRAM120cは、サブCPU120aの演算処理時におけるデータのワークエリアとして機能し、複数の記憶領域を有している。
サブRAM120cが有する記憶領域として一例を挙げれば、遊技状態記憶領域、演出モード記憶領域、演出パターン記憶領域、演出図柄記憶領域などがある。
払出制御部130は、遊技球の払い出し制御を行う。この払出制御部130は、図示しない払出CPU、払出ROM、払出RAMから構成されるワンチップマイコンを備えており、主制御部110に対して、双方向に通信可能となるように設けられている。なお、図示しないが、中間制御部180が主制御部110と払出制御部130との間に設けられている場合、払出制御部130は、中間制御部180を介して主制御部110との間で双方向に通信可能となる。
払出CPUは、遊技球が払い出されたか否かを検知する払出球計数スイッチ132、扉開放スイッチ133、タイマからの入力信号に基づいて、払出ROMに記憶されたプログラムを読み出して演算処理を行うと共に、当該処理に基づいて、対応するデータを主制御部110に送信する。
また、払出制御部130の出力側には、遊技球の貯留部から所定数の遊技球を払い出すための払出装置の払出モータ131が接続されている。払出CPUは、主制御部110から送信された制御コマンドの1つである払出個数指定コマンドに基づいて、払出ROMから所定のプログラムを読み出して演算処理を行うと共に、払出装置の払出モータ131を制御して所定の遊技球を払い出す。このとき、払出RAMは、払出CPUの演算処理時におけるデータのワークエリアとして機能する。
ランプ制御部140は、遊技盤2に設けられた演出用照明装置34を点灯制御したり、光の照射方向を変更するためのモータに対する駆動制御をしたりする。また、演出用駆動装置33を動作させるソレノイドやモータ等の駆動源を通電制御する。このランプ制御部140は、演出制御部120に接続されており、演出制御部120から送信された各種のコマンドに基づいて、上記の各制御を行うこととなる。
画像制御部150は、液晶表示装置31の画像表示制御を行うためのホストCPU、ホストCPUのワークエリアとして機能する一時的な記憶領域を有するホストRAM、ホストCPUの制御処理のプログラム等が記憶されたホストROM、画像データが記憶されたCGROM、画像データを描画するフレームバッファを有するVRAM、画像プロセッサとなるVDP(Video Display Processor)と、音の制御を行う音制御回路とを備えている。
ホストCPUは、演出制御部120から受信した演出パターン指定コマンドに基づいて、VDPにCGROMに記憶されている画像データを液晶表示装置31に表示させる指示を行う。
VDPは、ホストCPUからの指示に基づいて、CGROMに記憶された画像データをVRAMのフレームバッファに描画する。次に、VRAMにある表示用のフレームバッファに記憶された画像データに基づいて映像信号(RGB信号等)を生成し、生成した映像信号を液晶表示装置に出力する。
音制御回路には、音声データが多数記憶されている音声ROMが備えられており、音制御回路が、演出制御部120から送信されたコマンドに基づいて所定のプログラムを読み出すと共に、音声出力装置32における音声出力制御をする。
発射制御部160は、遊技球の発射制御を行う。この発射制御部160は、入力側にタッチセンサ3a及び発射ボリューム3bが接続されており、出力側に発射用ソレノイド4a及び玉送りソレノイド4bを接続している。発射制御部160は、タッチセンサ3aからのタッチ信号を入力すると共に、発射ボリューム3bから供給された電圧に基づいて、発射用ソレノイド4aや玉送りソレノイド4bを通電させる制御を行う。
タッチセンサ3aは、操作ハンドル3の内部に設けられ、遊技者が操作ハンドル3に触れたことによる静電容量の変化を利用した静電容量型の近接スイッチから構成される。タッチセンサ3aは、遊技者が操作ハンドル3に触れたことを検知すると、発射制御部160(図4参照)に発射用ソレノイド4aの通電を許可するタッチ信号を出力する。発射制御部160は、大前提としてタッチセンサ3aからタッチ信号の入力がなければ、遊技球200を遊技領域6に発射させないように構成されている。
発射ボリューム3bは、操作ハンドル3が回動する回動部に直結して設けられ、可変抵抗器から構成される。発射ボリューム3bは、その発射ボリューム3bに印加された定電圧(例えば5V)を可変抵抗器により分圧して、分圧した電圧を発射制御部160に供給する(発射制御部160に供給する電圧を可変させる)。発射制御部160は、発射ボリューム3bにより分圧された電圧に基づいて、発射用ソレノイド4aを通電して、発射用ソレノイド4aに直結された打出部材4cを回転させることで、遊技球200を遊技領域6に発射させる。
発射用ソレノイド4aは、ロータリーソレノイドから構成され、発射用ソレノイド4aには打出部材4cが直結されており、発射用ソレノイド4aが回転することで、打出部材4cを回転させる。
ここで、発射用ソレノイド4aの回転速度は、発射制御部160に設けられた水晶発振器の出力周期に基づく周波数から、約99.9(回/分)に設定されている。これにより、1分間における発射遊技数は、発射ソレノイドが1回転する毎に1個発射されるため、約99.9(個/分)となる。すなわち、1個の遊技球は約0.6秒毎に発射されることになる。
玉送りソレノイド4bは、直進ソレノイドから構成され、受け皿40にある遊技球を、発射用ソレノイド4aに直結された打出部材4cに向けて1個ずつ送り出す。
ここで、上記構成の演出制御部120、払出制御部130、ランプ制御部140、画像制御部150、及び発射制御部160など、主制御部110からの制御コマンドに基づいて、若しくは当該制御コマンドに基づいて生成されるコマンドに従って遊技機1の制御処理を行う制御部であって、中間制御部180以外の制御部を総称して「周辺制御部300」という。また、演出制御部120が搭載された演出制御基板や払出制御部130が搭載された払出制御基板など、周辺制御部300の各制御部が搭載された各制御基板を総称して「周辺制御基板」という。なお、中間制御部180、ランプ制御部140、及び画像制御部150は、演出制御部120と同一の基板上に搭載することもできる。また、払出制御部130及び発射制御部160は、主制御部110と同一の基板上に搭載することもできる。
[遊技機の認証処理に関する内部構成]
これより、上記構成の遊技機1が不正行為防止のために有するセキュリティ機能を実現する制御手段について説明する。
本実施形態に係る遊技機1のセキュリティ機能は、中間制御部180が主制御部110から送信された制御コマンドの正当性を検査し主制御部110の認証を行うことによって実現される。そして、中間制御部180で得られた認証結果は、周辺制御部300へ送信され、周辺制御部300にて受信した認証結果に応じた処理が行われる。そのために主制御部110、中間制御部180、及び周辺制御部300が実行する処理を、通常の遊技進行に係る処理とは区別する意味で「認証処理」という。なお、本実施形態では、中間制御部180は、周辺制御部300のうちの演出制御部120と主制御部110との間に設けられていると共に、中間制御部180で得られた認証結果は、周辺制御部300のうちの演出制御部120へ送信され、演出制御部120が認証結果に応じた処理を行うこととして説明する。
具体的には、主制御部110は、今回のコマンド送信処理において、制御コマンドを生成して中間制御部180へ送信する際、当該制御コマンドより前(過去)に生成された制御コマンドを用いて誤り検査値を生成し、生成した誤り検査値を今回送信する制御コマンドに付加して送信する。一方、中間制御部180は、今回受信した制御コマンドに付加された誤り検査値と、当該制御コマンドより前(過去)に受信した制御コマンドを用いて生成した誤り検査値とを照合する。そして、両者が一致すると、今回受信した制御コマンドの正当性が認証され、主制御部110の認証に成功したと判断される。中間制御部180は、得られた主制御部110に対する認証結果を、演出制御部120へ送信する。演出制御部120は、中間制御部180から送信された認証結果を確認し、認証結果に応じた処理を行う。
なお、主制御部110が今回のコマンド送信処理において生成した制御コマンドより前(過去)に生成した制御コマンドは、主制御部110の所定の記憶領域(後述する生成手段520の格納回路522)に格納されている。同様に、中間制御部180が今回のコマンド送信処理において受信した制御コマンドより前(過去)に受信した制御コマンドは、中間制御部180の所定の記憶領域(後述する格納部622)に格納されている。
本実施形態では、今回のコマンド送信処理において生成された制御コマンドを制御コマンド(P)とし、当該制御コマンド(P)よりN個前(N;正の整数)に生成された制御コマンドを制御コマンド(P−N)とする。Pの値(P;正の整数)は、電源投入直後などの遊技機1のリセット時などにおいて、主制御部110や中間制御部180が初期化され、上記所定の記憶領域に格納しておいた過去の制御コマンドがクリアされた直後から、現在までに何個の制御コマンドが生成されたのかを示す値である(以下、Pを「生成個数」という)。
すなわち、本実施形態では、制御コマンド(1)は、上記所定の記憶領域に格納された制御コマンドがクリアされた直後に最初に生成された制御コマンドを意味し、制御コマンド(P)は、上記所定の記憶領域に格納された制御コマンドがクリアされてからP番目に生成された制御コマンドを意味する。なお、生成個数のPの値は、公知のカウンタなどを用いて計数すればよい。本実施形態では、メインRAM110cに生成個数記憶領域(P)を設けておき、メインCPU110aがコマンド送信処理の際に生成個数記憶領域(P)の値に1を加算して更新する。
そして、本実施形態では、今回のコマンド送信処理において生成された制御コマンド(P)に対して、これよりN個前に生成された制御コマンド(P−N)を用いて生成された誤り検査値(P−N)を付加し、誤り検査値(P−N)が付加された制御コマンド(P)を中間制御部180へ送信する。Nの値は、今回のコマンド送信処理において出力された制御コマンドに対して、何個前に生成された制御コマンドの誤り検査値を付加するのかということを示した値である(以下、Nを「遡及数」という)。
遡及数のNの値の取り得る範囲は、上記所定の記憶領域である後述の格納回路522(及び中間制御部180の後述する格納部622)の記憶容量によって制限されるものの、基本的には任意である。Nの値が大きければ、不正者にとっては、制御コマンドとそれに付加された誤り検査値との関係性を解析することがより困難となり、不正行為をより一層防止することができる。
なお、主制御部110が、制御コマンド(P)を生成する度に、中間制御部180へ送信するならば、遡及数のNの値は、今回送信する制御コマンドに対して、何個前に送信された制御コマンドの誤り検査値を付加するのかということを取り決めておいた数であると考えることができ、本発明には、このような概念も含まれる。
また、本実施形態では、制御コマンド(P)に付加する誤り検査値(P−N)を生成した後に、生成した誤り検査値(P−N)のビット列に対してビット演算を行って、誤り検査値(P−N)のビット列を適宜変換する処理(以下、「ビット列変換処理」という)を施す。本実施形態では、誤り検査値(P−N)にビット列変換処理を施す際に、当該誤り検査値(P−N)のビット列に対して行うビット演算の方式(以下、「変換方式」という)として、誤り検査値(P−N)のビット列にビットローテート演算を行って当該ビット列を変換する方式を用いる。
また、誤り検査値(P−N)にビット列変換処理を施す際の変換方式として、複数の変換方式が予め用意されている。予め用意された変換方式の個数は、本発明では特に限定されないが、本実施形態では2つの変換方式が予め用意されているものとする。具体的には、本実施形態では、1回のビット列変換処理の中で行われるビットローテート演算において、ビット列を構成する各ビットを何ビット分だけシフトさせるのかを示す「シフト量」の取り決め方に応じて、2つの変換方式が予め用意されている。
より詳細には、シフト量が、予め主制御部110と中間制御部180との間で取り決められたルールに従って規則的に変動する変換方式(以下、「変換方式A」という)と、シフト量が、予め主制御部110と中間制御部180との間で取り決められておらず、ランダムに変動する変換方式(以下、「変換方式B」という)との2つの変換方式である。本実施形態では、変換方式Aでビット列変換処理を施す際のビットローテート演算において用いられるシフト量を「シフト量A」といい、変換方式Bでビット列変換処理を施す際のビットローテート演算において用いられるシフト量を「シフト量B」という。
そして、本実施形態では、予め用意された上記2つの変換方式を適宜使い分けながら、誤り検査値(P−N)にビット列変換処理を施す。具体的には、デフォルトの変換方式として、変換方式Aと変換方式Bのいずれか用いることと予め決定しておく。そして、誤り検査値(P−N)にビット列変換処理を施す際には、今回のコマンド送信処理において生成された制御コマンド(P)に基づいて、予め定められた変換方式の変更規則(以下、「変更プロトコル」という)に従い、現在まで設定されていた変換方式を新たな変換方式へ変更する。
本実施形態では、ビット列変換処理の際に用いる変換方式を、後述の決定手段540が決定するが、決定手段540が変換方式を決定し、決定した変換方式でビット列変換処理が行われるように後述の生成手段520に対する設定を行う処理を「変換方式設定処理」という。また、今回のコマンド送信処理において生成された制御コマンド(P)が変換方式を変更する制御コマンドであるための条件を「変更条件」といい、本実施形態では、変更条件についても複数の変更条件が予め用意されている。変更プロトコル及び変更条件の詳細については、後述する。
また、本実施形態では、ビット列変換処理を施す際のビットローテート演算において用いられるシフト量を、後述の生成手段520が更新するが、生成手段520がシフト量を更新し、更新したシフト量でビットローテート演算が行われるように後述のビット列変換回路525を担うローテート演算器に対する設定を行う処理を「シフト量設定処理」という。なお、シフト量設定処理では、シフト量Aを規則的に変動させるためにシフト量Aを適宜更新し、シフト量Bをランダムに変動させるためにシフト量Bを適宜更新する。本実施形態では、シフト量A、Bをどのようなタイミングで更新していくのかを規定するための条件(以下、「更新タイミング条件」という)として、シフト量Aに係る更新タイミング条件は、複数の条件が予め用意されており、シフト量Bに係る更新タイミング条件は、1つの条件が予め用意されている。
また、本実施形態では、誤り検査値(P−N)に変換方式Aでビット列変換処理を施す際、変換方式Aで用いられるシフト量Aを再設定する。具体的には、本実施形態では、今回のコマンド送信処理において生成された制御コマンド(P)に付加する誤り検査値(P−N)に対して、変換方式Aでビット列変換処理を施す際に、当該制御コマンド(P)が所定の条件(以下、「リセット条件」という)を満たす制御コマンドであれば、シフト量Aに所定の設定値を与えて、シフト量Aを当該設定値に再設定する。シフト量Aの再設定によって、それまでの更新によるシフト量Aの規則的な変動の推移が一旦リセットされる。なお、本実施形態のリセット条件は、シフト量Aに係るリセット条件として複数の条件が予め用意されていると共に、シフト量Bに係るリセット条件は用意されておらずシフト量Bの再設定は行われない。
このように、本実施形態では、今回のコマンド送信処理において生成された制御コマンド(P)に付加される誤り検査値は、当該制御コマンド(P)よりN個前に生成された制御コマンド(P−N)を用いて生成された誤り検査値(P−N)であって、変換方式A又は変換方式Bのいずれかでビット列変換処理が施された誤り検査値(P−N)となる。このとき、制御コマンド(P)が変更条件を満たす制御コマンドであれば、現在まで設定されていた変換方式を新たな変換方式に変更した上で、誤り検査値(P−N)にビット列変換が施される。そして、制御コマンド(P)に対して、新たな変換方式でビット列変換処理が施された誤り検査値(P−N)が付加されることとなる。更に、本実施形態では、シフト量A及びシフト量Bを適宜更新し、いずれかの変換方式でビット列変換処理を施す場合であっても、ビット列変換処理を施すタイミングによってビットローテート演算の結果が動的に変動することとなる。加えて、シフト量Aは、制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドであれば、現在まで更新されていたシフト量Aに所定の設定値を与えてシフト量Aを再設定する。シフト量A及びシフト量Bの更新の詳細については、後述する。
図5は、本実施形態に係る主制御部110の認証処理に関する内部構成を示す機能ブロック図である。図6は、本実施形態に係る(a)メインROM110b及び(b)ブートROM110dのメモリマップを説明するための概略図である。図7は、本実施形態に係る制御コマンドへの誤り検査値の付加手順を説明するための概略図である。また、図6では、本発明の特徴的な領域以外は省略している。また、「xxxFH」などのアドレス表記は、各領域の区分を示すために便宜上設けたものであると共に、各領域同士の位置関係においても、図6に示した位置関係に限定されるものではない。
主制御部110は、上記のようにメインCPU110a、メインROM110b、及びブートROM110dに加え、メインCPU110aからの制御指示に基づき、誤り検査値の生成処理及び付加処理を行う検査値生成部500と、中間制御部180への制御コマンドの送信処理を行う送信部550とを少なくとも備えている。また、これら主制御部110の各構成部は、各々が出力する各種データや信号を送受できるようバス接続されている(図示せず)。
バスは、アドレスバス、データバス、及び制御バスの機能を少なくとも備え、主制御部110の各構成部から出力された制御信号に基づきバス上を通るデータの割り当てを行い、データの衝突が生じないように制御している。なお、図5においては、便宜上、バスという形では明示せず、主制御部110の各構成部を結ぶ信号線として表し、その中でも特徴的なものだけを示している。また、主制御部110の各構成部には、クロックパルス発生回路(図示せず)により出力された所定のクロック信号がそれぞれ入力されている。
メインCPU110aは、上記のように遊技進行に係る処理を実行する他、遊技機1での認証処理を実行する。メインCPU110aは、メインROM110bに記憶された認証処理用プログラムや各種固定データを用いて各種演算処理を実行する。また、メインCPU110aは、ブートROM110dに記憶されたブート処理用プログラムやメインROM110bに記憶された各種初期値を用いて各種演算処理を実行する。そして、メインCPU110aは、これらの演算処理の結果に応じて制御信号や制御コマンドを出力する。
例えば、メインCPU110aは、中間制御部180へ送信するべき制御コマンドのコマンド送信処理を行う際には、検査値生成部500へ当該制御コマンドを書き込むための制御信号(以下、「書き込み信号」という)を出力し、当該制御コマンドを、検査値生成部500を介して送信部550にて送信させる。
また、メインCPU110aは、ブート処理用プログラムに基づいて、ブート処理中の初期値設定処理を行う際には、メインROM110bに記憶された各種初期値を読み出すための制御信号(以下、「読み出し信号」という)を出力して各種初期値を取得し、取得した各種初期値のそれぞれに対応した構成回路へ出力して各種初期値を設定する処理を行う。
また、メインCPU110aは、主制御部110の初期化処理時に、後述する固有情報を検査値生成部500へ設定する必要があるときは、メインROM110bに記憶された固有情報を読み出すための読み出し信号を出力して固有情報を取得し、取得した固有情報を検査値生成部500へ設定する処理を行う。
メインROM110bには、上記のような遊技処理用プログラムやデータの他、メインCPU110aが遊技機1にて認証処理を実行するための認証処理用プログラムが予め記憶されている(図6(a)の「xxy0H」〜「xxzFH」の領域)。また、メインROM110bには、主制御部110が初期化された後に初めて出力する制御コマンドに付加する誤り検査値として使用する、遊技機1の固有情報が記憶されている(図6(a)の「xyz0H」〜「xzxFH」の領域)。また、メインROM110bは、メインCPU110aからの読み出し信号に応じて、認証処理用プログラムコードや固有情報などを出力する。
固有情報は、主制御部110が保持する遊技機1固有の情報であれば特に限定されない。固有情報は、図6(a)では、メインROM110bの固定データが記憶された領域の中の特定のアドレス(図6(a)の「xyz0H」〜「xzxFH」の領域)のデータ(例えば、制御コマンドデータ)となっているが、例えば、メインROM110bのプログラムコードが記憶された領域(図6(a)の「0000H」〜「xxzFH」の領域)の中の特定のアドレスにおけるチェックサム値や、メインCPU110aに固有に付与されている識別番号(ID)や、メーカーコード・機種コード等の製品情報などを用いることができる。また、固有情報は、予め中間制御部180との間で取り決められた誤り検査値のダミーデータなど用いることができる。これらのデータに四則演算や論理演算等を施した値でもよい。なお、固有情報は、メインROM110bとは別個の記憶手段(メモリセルやROMなど)に記憶されていてもよい。
主制御部110にて生成される誤り検査値は、上記所定の記憶領域である後述の格納回路522に格納しておいた過去の制御コマンドを用いて生成される。しかしながら、遊技機1のリセット時のように主制御部110が初期化されたときには、格納回路522に格納しておいた過去の制御コマンドがクリアされるため、これを用いて誤り検査値を生成することができない。そこで、本実施形態では、格納回路522に格納しておいた過去の制御コマンドがクリアされた場合に、格納回路522への初期設定値として、メインROM110bに予め格納された固有情報を用いる。
本実施形態では、格納回路522用の固有情報としてN個の固有情報を用意する。そして、主制御部110の初期化により格納回路522の制御コマンドがクリアされた場合には、メインCPU110aが、メインRAM110cの生成個数記憶領域(P)の値を参照して、格納回路522へ固有情報を設定する必要があるか否かを判断する。そして、生成個数記憶領域(P)の値がP=1の場合は、メインCPU110aが、格納回路522に固有情報を初期設定値として設定するものとする。なお、本実施形態では、制御コマンドを用いずに固有情報を用いて生成された誤り検査値を、「初期検査値」ともいう。
メインROM110bには、上記のようにワンチップマイコン110mの内蔵回路や周辺回路等の初期値(いわゆるハードウェアパラメータ)の一つであって、検査値生成部500に設定されるハードウェアパラメータ(以下、「HWパラメータ」という)が予め記憶されている(図6(a)の「yyy0H」〜「yyzFH」の領域)。HWパラメータは、検査値生成部500が有する複数の誤り検査値を生成及び付加する機能(誤り検査値付加機能)のうち、どの誤り検査値付加機能を採用するのかを選択するための選択情報である。誤り検査値付加機能及びその選択情報は、予め主制御部110と中間制御部180との間で取り決めておく。
本実施形態では、検査値生成部500には、複数の誤り検査値付加機能の具体的な実施態様として、上記のように、複数の変更条件、シフト量Aに係る複数の更新タイミング条件、及びシフト量Aに係る複数のリセット条件が予め用意されている。すなわち、どの変更条件が採用されたのかに応じて、変更条件を満たす制御コマンドの種類が変わる。そして、変更条件を満たす制御コマンドの種類が変わると、ある時点に送信される制御コマンドに付加される誤り検査値にとっては、ビット列変換処理が施される際に用いられる変換方式も変わる。結果的に、どの変更条件が採用されたのかに応じて、制御コマンドに付加される誤り検査値のビット列が変わるため、複数の変更条件が予め用意されているのである。更に、どの更新タイミング条件が採用されたのかに応じて、変換方式Aでビット列変換処理を行う際のシフト量Aが更新されるタイミングが変わり、ある時点に送信される制御コマンドに付加される誤り検査値にとっては、変換方式Aのビットローテート演算で用いられるシフト量も変わる。結果的に、どの更新タイミング条件が採用されたのかに応じて、制御コマンドに付加される誤り検査値のビット列が変わるため、シフト量Aに係る複数の更新タイミング条件が予め用意されているのである。加えて、どのリセット条件が採用されたのかに応じて、変換方式Aでビット列変換処理を行う際のシフト量Aの変動推移も変わり、ある時点に送信される制御コマンドに付加される誤り検査値にとっては、変換方式Aのビットローテート演算で用いられるシフト量も変わる。結果的に、どのリセット条件が採用されたのかに応じて、制御コマンドに付加される誤り検査値のビット列が変わるため、複数のリセット条件が予め用意されているのである。
本実施形態では、ブート処理中の初期値設定処理の際に、検査値生成部500に対して予め用意された複数の変更条件のうちの特定の条件が設定される。更に、本実施形態では、ブート処理中の初期値設定処理の際に、検査値生成部500に対して予め用意されたシフト量Aに係る複数の更新タイミング条件のうちの特定の条件が設定される。加えて、本実施形態では、ブート処理中の初期値設定処理の際に、検査値生成部500に対して予め用意されたシフト量Aに係る複数のリセット条件のうちの特定の条件が設定される。HWパラメータは、この特定の変更条件、更新タイミング条件、及びリセット条件として、各々にどの条件を採用するのかを選択する為の選択情報である。
本実施形態では、複数の変更条件のそれぞれと対応付けられた複数のHWパラメータが予め用意されており、検査値生成部500の後述する決定手段540に予め記憶されている。また、本実施形態では、シフト量Aに係る複数の更新タイミング条件のそれぞれと対応付けられた複数のHWパラメータが予め用意されており、検査値生成部500の後述する生成手段520に予め記憶されている。同様に、本実施形態では、シフト量Aに係る複数のリセット条件のそれぞれと対応付けられた複数のHWパラメータが予め用意されており、検査値生成部500の後述する生成手段520に予め記憶されている。そして、ブート処理中の初期値設定処理の際、メインCPU110aが検査値生成部500へ特定のHWパラメータを設定すると、検査値生成部500は、設定されたHWパラメータを確認し、当該HWパラメータに対応した変更条件、更新タイミング条件、及びリセット条件をデフォルトの条件としてそれぞれ用いる。
本実施形態では、メインCPU110aが行う設定処理であって、ブート処理中の初期値設定処理でも、特に、検査値生成部500へ特定のHWパラメータを設定する処理を「HWパラメータ設定処理」という。また、本実施形態では、検査値生成部500が行う設定処理であって、HWパラメータ設定処理に伴ってデフォルトの変更条件を決定し、検査値生成部500を構成する後述の決定手段540に対して、当該決定した変更条件を設定する処理を「変更条件設定処理」という。また、本実施形態では、検査値生成部500が行う設定処理であって、HWパラメータ設定処理に伴ってシフト量Aに係るデフォルトの更新タイミング条件を決定し、検査値生成部500を構成する後述の生成手段520に対して、当該決定した更新タイミング条件を設定する処理を「更新タイミング条件設定処理」という。また、本実施形態では、検査値生成部500が行う設定処理であって、HWパラメータ設定処理に伴ってシフト量Aに係るデフォルトのリセット条件を決定し、検査値生成部500を構成する後述の生成手段520に対して、当該決定したリセット条件を設定する処理を「リセット条件設定処理」という。
また、上記初期値及びHWパラメータを記憶する領域は、図6ではメインROM110b内の領域であるが、本発明はこれに限定されず、メインROM110bとは別個のメモリセルに記憶したり、ブートROM110d内に記憶したりするように構成することもできる。すなわち、本発明では、上記初期値及びHWパラメータの記憶領域と、遊技処理用プログラムや固定データ等の記憶領域とは、同一の記憶手段(メモリセルやROMなど)に搭載されていてもよいし、異なる記憶手段に搭載されていてもよい。
ブートROM110dには、ブート処理用プログラムやブート処理用プログラムの実行の際に使用される固定データが予め記憶されている(図6(b)の「zxx0H」〜「zyzFH」の領域)。ブート処理用プログラムは、メインCPU110aの起動直後にブートROM110dからブート処理専用RAM(図示せず)へ読み込まれ、メインCPU110aにて実行が開始されるように予め設定されており、メインCPU110a自身の自己診断処理や、メインCPU110aを搭載するワンチップマイコン110mの内蔵回路や検査値生成部500を含む周辺回路等の初期化及び初期値の設定処理(すなわち初期値設定処理)を制御するものである。なお、本実施形態では、ブート処理後に実行される遊技処理用プログラムなど、ブート処理用プログラム以外のプログラムを「ユーザープログラム」という。
ブート処理用プログラムは、CPUメーカーが開発・実装するプログラムであり、これらが記憶されたブートROM110dに対するアクセスは、遊技機1の出荷後、ブート処理時のメインCPU110aからのアクセスにのみ制限されている。一方、ユーザープログラムは、遊技機メーカーが開発・実装するプログラムであり、これらが記憶されたメインROM110bに対するアクセスは、遊技処理が実行されるたびにメインCPU110aからアクセスされる。
しかしながら、メインROM110bの記憶領域でも、ワンチップマイコン110mの内蔵回路や検査値生成部500を含む周辺回路等の初期値(HWパラメータを含む)が記憶された領域など、ユーザープログラムや固定データ等(固有情報を含む)が記憶された領域以外の記憶領域(例えば、図6(a)の「yxx0H」〜「yyzFH」の領域)は、ブート処理用プログラムの中でのみ定義された領域であり、遊技処理に係るユーザープログラム上では全く現れることが無い領域とされている。つまり、ブート処理が終了した後は、上記領域(図6(a)の「yxx0H」〜「yyzFH」の領域)は、ユーザープログラムからはアクセスできないように実質的な制限がかけられた領域とされている。
但し、不正なアクセスを試みられた場合を考慮して、次のような更なる制限をかけることで、ブート処理時にのみ得られるHWパラメータの秘匿性をより向上させることができる。例えば、ブートROM110d及びメインROM110bへのアクセス制限は、主制御部110に実行アドレス監視手段(図示せず)を設けておき、ブート処理終了後に実行アドレス監視手段を作動させ、ユーザープログラムが所定のアドレス(例えば、図6(a)の「0000H」〜「xzyFH」の領域)を超えた領域へアクセスしようとした場合には、メインCPU110aへリセット信号を出力してメインCPU110aを動作停止状態にすればよい。また、リセット信号を出力しないまでも、異常を検知した旨を示す報知信号を出力するようにしてもよい。
また、HWパラメータのメインROM110bへの実装においては複数の方法が考えられる。例えば、検査値生成部500に予め用意された複数の変更条件、シフト量Aに係る複数の更新タイミング条件、及びシフト量Aに係る複数のリセット条件のそれぞれと対応する複数のHWパラメータを予め用意し、メインROM110bに実装する。そして、HWパラメータ設定処理の中で、どのHWパラメータを採用するかを選択するためのプログラムをブートROM110dに実装しておき、ブート処理のたびにどの変更条件、更新タイミング条件、及びリセット条件を用いるのかを任意に選択できるように構成することができる。このように実装すると、ブート処理のたびに変更条件、更新タイミング条件、及びリセット条件が変更され、誤り検査値付加機能の秘匿性を向上させることができ、遊技機1のセキュリティ強度を向上させることができる。
一方、検査値生成部500に備えられた変更条件、シフト量Aに係る更新タイミング条件、及びシフト量Aに係るリセット条件並びにHWパラメータについては予め複数用意するものの、特定のHWパラメータのみをメインROM110bに実装し、これに対応する特定の変更条件、更新タイミング条件、及びリセット条件のみが採用されるように構成することもできる。このように実装すると、ブート処理でのHWパラメータの選択処理に伴うプログラムを新たに設ける必要がなく、プログラムのコードサイズを増大させることがない。また、このように実装すると、遊技機メーカーが特定の変更条件、更新タイミング条件、及びリセット条件だけを採用したい場合であっても、遊技機メーカーが行うプログラム実装過程において、所望の変更条件及び更新タイミング条件に対応したHWパラメータのみをメインROM110bに実装すればよく、遊技機メーカーの用途や嗜好に柔軟に対応することができる。
なお、この場合であっても、HWパラメータは、主制御部110のブート処理時の初期値設定時以外ではアクセスされない記憶領域に記憶されているため、外部から変更条件、更新タイミング条件、及びリセット条件の内容を知ることができない。そのため、不正者が、遊技機1で採用された変更条件、更新タイミング条件、及びリセット条件を解析することは困難であり、遊技機1が有する誤り検査値付加機能の秘匿性は確保される。また、遊技機1の開発段階中で設計・検証作業などに使用するHWパラメータと、その後に実際に実装されるHWパラメータとを変えることによって、最終的にどのHWパラメータが実装されたのかを知り得る者が限定され、誤り検査値付加機能の秘匿性は更に向上する。本実施形態では、特定の変更条件、更新タイミング条件、及びリセット条件に対応する特定のHWパラメータのみがメインROM110bに実装されていることとして説明する。
検査値生成部500は、メインCPU110aと送信部550との間に接続された回路である。そして、メインCPU110aと検査値生成部500との接続、及び検査値生成部500と送信部550との接続は、上記のようにバス接続されており、それぞれの接続に使用されるバスは同一規格のバスとなっている。すなわち、検査値生成部500のメインCPU110a側の入力インターフェースと、送信部550の検査値生成部500側の入力インターフェースにおいて、各インターフェース間でのデータ送受を制御する方式(以下、「入出力制御形式」という)は、それぞれ、メインCPU110aの検査値生成部500側の出力インターフェースに設定された入出力制御方式に対応した方式となっている。なお、バス規格は、公知の規格を用いればよい。
本実施形態では、メインCPU110aの検査値生成部500側の出力インターフェースの入出力制御方式を、「CPUインターフェース方式」という。そして、このCPUインターフェース方式は、上記のバス規格に基づいて定められた公知の入出力制御方式を用いればよく、検査値生成部500を追加する前のメインCPU110aと送信部550の間のバス規格に基づいて定められた入出力制御方式でよい。検査値生成部500の送信部550側の出力インターフェースも、CPUインターフェース方式で構成されている。
本実施形態のCPUインターフェース方式を具体的に説明する。例えば、メインCPU110aが制御コマンドを検査値生成部500へ出力する際、メインCPU110aは、データバスに制御コマンド、アドレスバスに検査値生成部500の所定の記憶領域を指定するアドレスデータ、制御バスに書き込み信号を出力する。このアドレスデータは、デコーダを介してチップセレクト信号へ変換され、検査値生成部500へ入力される。検査値生成部500は、チップセレクト信号及び書き込み信号がアクティブとなると(本実施形態では制御信号がアクティブとなることを「制御信号が入力される」ともいう)、データバス上の制御コマンドを取り込む。このような入出力制御方式で、制御コマンドがメインCPU110aから検査値生成部500へ出力される。メインCPU110aがHWパラメータを検査値生成部500へ出力する際も同様である。
また、検査値生成部500が制御コマンドを送信部550へ出力する際も、検査値生成部500は、データバスに制御コマンド、アドレスバスに送信部550の所定の記憶領域を指定するアドレスデータ、制御バスに書き込み信号を出力する。そして、送信部550は、当該アドレスデータのチップセレクト信号及び書き込み信号が入力されると、データバス上の制御コマンドを取り込み、制御コマンドが検査値生成部500から送信部550へ転送される。検査値生成部500が誤り検査値を送信部550へ出力する際も同様である。
なお、本実施形態では、出力されたアドレスデータは、チップセレクト信号へ変換された後、指定された主制御部110内の構成部へ入力されるものとし、アドレスデータからチップセレクト信号への変換については説明を省略する。
また、本実施形態では、バスは、制御コマンド又は誤り検査値のいずれか小さい方のデータ長以上のビット幅を有するバスを設けておけばよい。例えば、制御コマンドは2バイト、誤り検査値は1バイトのデータであるとすると、データバスのビット幅は、少なくとも1バイト以上とすればよい。この場合、メインCPU110a及び検査値生成部500は、まず、2バイト長の制御コマンドの上位1バイトをデータバスへ出力し、続いて、下位1バイトをデータバスへ出力する。続いて、検査値生成部500は、1バイトの誤り検査値をデータバスへ出力する。
検査値生成部500は、メインCPU110aから出力された制御コマンドに対して誤り検査値を付加して送信部550へ出力する機能を果たし、変更条件設定処理、更新タイミング条件設定処理、リセット条件設定処理、変換方式設定処理、シフト量設定処理、検査値生成処理、ビット列変換処理、及び検査値付加処理など、遊技機1のセキュリティ機能実現に係る主制御部110の処理全般を実行する回路である。具体的には、検査値生成部500は、バッファ手段510と、決定手段540と、生成手段520と、付加手段530とを少なくとも備えている。そして、検査値生成部500の各手段は、ワイヤードロジック制御方式で回路構成されている。
本実施形態では、検査値生成部500内の各手段同士及び各手段内の各回路同士でのデータ送受は、主制御部110のクロックパルス発生回路から出力されたクロック信号に同期して行われる。そのため、本実施形態では、検査値生成部500内の各手段や各回路の入出力制御方式を、「同期インターフェース方式」という。同期インターフェース方式では、出力するデータの接続先に対してイネーブル信号等を出力すれば、接続先は当該イネーブル信号及びクロック信号等の入力に基づいて、当該出力データを取り込む。よって、同期インターフェース方式は、バスを介して送出されるアドレスデータ(チップセレクト信号)及び書き込み信号を必要とするCPUインターフェース方式とは異なる。
バッファ手段510は、ブート処理後のコマンド送信処理において、メインCPU110aから出力された制御コマンドや固有情報を入力し、一時的に保持する回路である。そして、バッファ手段510は、保持した制御コマンドを後続する決定手段540、生成手段520、及び付加手段530へ出力する回路である。固有情報が入力された場合は、生成手段520へのみ出力する。すなわち、バッファ手段510は、メインCPU110aが中間制御部180へ送信する制御コマンドを一時的に保持し、メインCPU110aのコマンド送信処理の実行タイミングと、後続する決定手段540の変換方式設定処理、生成手段520の検査値生成処理、ビット列変換処理、及びシフト量設定処理、並びに付加手段530の検査値付加処理の各実行タイミングとを調整する役割を担っている。
バッファ手段510の入力側は、メインCPU110aとの間で、上記のようにCPUインターフェース方式に対応する入出力制御方式でデータ送受が制御されている。一方、バッファ手段510の出力側は、後続する決定手段540、生成手段520、及び付加手段530との間で、同期インターフェース方式でデータ送受が制御されている。すなわち、バッファ手段510は、自身の入力側と出力側とで異なる入出力制御方式を有し、メインCPU110aのCPUインターフェース方式と検査値生成部500内の同期インターフェース方式とを整合する役割を担っている。
そして、バッファ手段510は、データバッファ511と制御回路512とを少なくとも備えている。データバッファ511は、メインCPU110aから出力された制御コマンドや固有情報を、データバスを介して取り込んで保持する回路である。制御回路512は、メインCPU110aから出力された制御信号の入力に基づいて、データバッファ511の動作を制御する回路である。
具体的には、制御回路512は、メインCPU110aから出力された制御コマンドや固有情報をバッファ手段510のデータバッファ511へ書き込むための書き込み信号と、バッファ手段510を指定するアドレスデータとが入力されると、データバス上の制御コマンドや固有情報をデータバッファ511が取り込むよう作動させるためのイネーブル信号(以下、「作動許可信号」という)を出力する。データバッファ511は、当該作動許可信号の入力に基づいて、データバス上の制御コマンドや固有情報を取り込む。
また、制御回路512は、データバッファ511が取り込んだ制御コマンドや固有情報を決定手段540や生成手段520や付加手段530へ出力するよう作動させるための作動許可信号を出力する。データバッファ511は、当該作動許可信号の入力に基づいて、取り込んだ制御コマンドを決定手段540、生成手段520、及び付加手段530へ出力すると共に、取り込んだ固有情報を生成手段520へ出力する。
そして、制御回路512は、データバッファ511から出力された制御コマンドが、決定手段540、生成手段520、及び付加手段530で入力可能となるよう、決定手段540の判定回路541、生成手段520の制御回路523、及び付加手段530の制御回路532に対して、作動許可信号を出力する。なお、制御回路512が、上記各作動許可信号を出力するタイミングは、検査値生成部500内の各手段の動作時間等を考慮しながら、各手段がメインCPU110aからの制御信号及びクロック信号の入力に同期して正常に動作できるようなタイミングとなるように予め設定されている。
また、制御回路512は、データバッファ511から出力された固有情報が、生成手段520で入力可能となるように、生成手段520の制御回路523に対して作動許可信号を出力する。なお、図5では、データバッファ511から生成手段520へ延びるデータ線には、制御コマンドのみが記載されているが、固有情報においても、当該データ線を経由してデータバッファ511から生成手段520へ出力される。
決定手段540は、デフォルトの変更条件を決定し、決定した変更条件に基づいて変換方式の変更が行われるように設定する回路である。また、決定手段540は、バッファ手段510から出力された制御コマンドに付加する誤り検査値にビット列変換処理を施す際の変換方式を決定し、決定した変換方式を用いて変換されたビット列の誤り検査値が出力されるように、生成手段520への設定を行う回路である。すなわち、決定手段540は、検査値生成部500の変更条件設定処理及び変換方式設定処理を実行する役割を担っている。
具体的には、決定手段540は、ブート処理中には、変更条件設定処理として、メインCPU110aから設定されたHWパラメータに基づいて、デフォルトの変更条件を決定し、決定した変更条件に応じた設定を行う。また、決定手段540は、ブート処理中には、変換方式設定処理として、予め定められたデフォルトの変換方式に応じた生成手段520への設定を行う。また、決定手段540は、ブート処理後のコマンド送信処理の際には、変換方式設定処理として、バッファ手段510から出力された制御コマンドを入力し、入力した制御コマンドに基づいて変換方式を決定し、決定した変換方式に応じた生成手段520への設定を行う。これらの処理を実行するため、決定手段540は、判定回路541と決定回路542とを少なくとも備えている。
判定回路541は、バッファ手段510から出力された制御コマンドを入力し、入力した制御コマンドが、変更条件を満たす制御コマンドであるか否かの判定処理を実行し、判定結果を決定回路542へ通知する回路である。判定回路541の入力側は、決定回路542とデータ線で接続されており、ブート処理中の変更条件設定処理の際に、メインCPU110aから設定されたHWパラメータに対応する変更条件が決定回路542から出力されると、当該変更条件を取り込み、デフォルトの変更条件として設定する。
また、判定回路541の入力側は、バッファ手段510のデータバッファ511とデータ線で接続されており、バッファ手段510の制御回路512と制御線で接続されている。また、判定回路541の出力側は、決定回路542と制御線で接続されている。そして、判定回路541は、ブート処理後のコマンド送信処理の際に、制御回路512から出力された作動許可信号の入力に基づいて、バッファ手段510のデータバッファ511から出力された制御コマンド(P)を入力する。そして、判定回路541は、入力した制御コマンド(P)のビットパターンと、決定回路542によって予め設定した変更条件のビットパターンとを比較する。そして、判定回路541は、入力した制御コマンド(P)と変更条件とを比較して両者が一致すれば、バッファ手段510から出力された制御コマンド(P)は変更条件を満たす制御コマンドであると判定し、両者が一致しなければ、バッファ手段510から出力された制御コマンド(P)は変更条件を満たす制御コマンドでないと判定する。
そして、判定回路541は、判定結果に応じた制御信号(以下、「判定結果信号」という)を、後続する決定回路542に出力する。具体的には、判定回路541は、バッファ手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドであると判定した場合には、その旨を示す判定結果信号を決定回路542に出力する。一方、判定回路541は、バッファ手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドでないと判定した場合には、その旨を示す判定結果信号を決定回路542に出力する。
変更条件は、予め中間制御部180との間で取り決めておけば基本的に任意である。例えば、本実施形態では、バッファ手段510から出力された制御コマンドの入力回数(すなわち制御コマンドの生成個数P)が所定数であるか否か等の、種々の条件を設定することができる。本実施形態では、バッファ手段510から出力された制御コマンドの種別が、予め定めた所定の制御コマンドに該当するか否かを変更条件として設定する。本実施形態での変更条件を以下に説明する。
遊技機1には遊技の進行にあたって発現する様々な遊技状態が設定されており、主制御部110では、当該遊技状態に応じて様々な動作モードで制御処理が行われる。そして、所定の動作モードの期間の際には、当該動作モードに応じた所定の制御コマンド群が生成され、中間制御部180へ送信される。このとき、所定の制御コマンド群には、当該動作モード期間の開始及び終了を示す制御コマンド等の、主制御部110及び中間制御部180で当該動作モードの移行が確認できる制御コマンドが含まれている。
例えば、図9を用いて後述するように、大当たり状態の動作モードの際には、各種大当たり状態の開始時を示すオープニング指定コマンド(図9では「MODE」の情報が「EBH」である制御コマンド)及び各種大当たり状態の終了時を示すエンディング指定コマンド(図9では「MODE」の情報が「ECH」である制御コマンド)がそれぞれ生成され、中間制御部180へそれぞれ送信される。また、例えば、時短遊技状態の動作モードの際には、非時短遊技状態から時短遊技状態への移行に伴って、時短作動用遊技状態指定コマンド(図9では「MODE」の情報が「EEH」であり「DATA」の情報が「01H」である制御コマンド)が生成され、中間制御部180へ送信される。そして、時短遊技状態から非時短遊技状態への移行に伴って、時短未作動用遊技状態指定コマンド(図9では「MODE」の情報が「EEH」であり「DATA」の情報が「00H」である制御コマンド)が生成され、中間制御部180へ送信される。
本実施形態では、所定の動作モードの期間の際、すなわち、所定の制御コマンド群が送信される期間の際には、ビット列変換処理で用いる誤り検査値の変換方式を変換方式Bとし、それ以外では当該変換方式を変換方式Aとする。そこで、本実施形態では、デフォルトの変換方式を変換方式Aに決定しておき、所定の制御コマンド群のうち最初に生成される制御コマンドに関するコマンド送信処理の際に、変換方式を変換方式Bに変更すると決定する。そして、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドに関するコマンド送信処理の際に、変換方式を変換方式Aに戻すと決定する。すなわち、本実施形態では、バッファ手段510から出力された制御コマンド(P)の種別が、所定の制御コマンド群のうち最初に生成される制御コマンド、及び、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンド、のどちらかに該当するか否かを変更条件とする。このように取り決めておくと、本実施形態のビット列変換処理では、デフォルトの変換方式として変換方式Aが用いられ、所定の動作モードの期間が開始すると変換方式Bが用いられ、所定の動作モードの期間が終了すると変換方式Aが用いられることとなる。
なお、本実施形態では、所定の制御コマンド群の種別として、所定の動作モードの期間の際に、制御コマンド群を構成する各制御コマンドがどのように出現するのかを予測可能な制御コマンド群を用いる。各制御コマンドの出現が予測可能な制御コマンド群を用いることで、中間制御部180側では、受信した誤り検査値(P−N)に対してビット列変換処理を行う際の試行回数を抑制することができる。
また、所定の制御コマンド群の種別としては、例えば、出現頻度が高い制御コマンド群を採用することができる。この場合、変換方式Bを採用する期間が高い頻度で到来することとなるため、ランダムなシフト量でビット列変換処理が施された誤り検査値が頻繁に送信される。このため、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を向上させることができる。また、所定の制御コマンド群の種別としては、例えば、出現頻度の低い制御コマンド群を採用することができる。この場合、変換方式Bを採用する期間が低い頻度でしか到来しなくなるため、変換方式Bが採用された制御コマンド及び誤り検査値を窃取できる機会自体が少なくなる。このため、不正者が制御コマンドと誤り検査値の対応関係を解析するのに十分なサンプル数の制御コマンド及び誤り検査値を窃取することが困難となるため、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を向上させることができる。
なお、所定の制御コマンド群の種別としては、一つの制御コマンド群の種別でも複数の制御コマンド群の種別でもよい。複数の制御コマンド群の種別を採用することは変換方式Bを採用する期間が増加することを意味するため、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を更に向上させることができる。
一方、決定回路542は、メインCPU110aから設定されたHWパラメータに応じてデフォルトの変更条件を決定し、決定した変更条件によって判定回路541が上記判定処理を実行するように、判定回路541への設定を行う回路である。また、決定回路542は、判定回路541の判定結果信号に応じて変換方式を決定し、決定した変換方式によって生成手段520がビット列変換処理を実行するように、生成手段520への設定を行う回路である。
決定回路542の入力側は、バスを介してメインCPU110aと接続され、メインCPU110aとの間では、CPUインターフェース方式に対応する入出力制御方式でデータ送受が制御されている。そして、決定回路542は、HWパラメータ設定処理の際に、メインCPU110aから出力されたHWパラメータをデータバス上から取り込む。また、決定回路542の入力側は、判定回路541と制御線で接続され、判定回路541との間では、同期インターフェース方式に対応する入出力制御方式でデータ送受が制御されている。そして、決定回路542は、判定回路541から出力された判定結果信号を入力する。
また、決定回路542の出力側は、判定回路541とデータ線で接続されていると共に、生成手段520の制御回路523と制御線で接続され、生成手段520との間でも、同期インターフェース方式でデータ送受が制御されている。そして、決定回路542は、メインCPU110aから設定されたHWパラメータに応じて、予め用意された複数の変更条件のいずれかを判定回路541へ出力する。また、決定回路542は、判定回路541から出力された判定結果信号に応じて変換方式を決定し、決定した変換方式を生成手段520へ設定するための制御信号を出力する。
具体的には、決定回路542には、予め用意された複数の変更条件と複数のHWパラメータとの対応関係が分かるデータテーブルが設けられている。そして、決定回路542は、取り込んだHWパラメータによって特定の変更条件を一義的に決定することができる。そして、決定回路542は、ブート処理中の変更条件設定処理として、メインCPU110aから設定されたHWパラメータに対応する変更条件を、デフォルトの変更条件として変更条件記憶領域(CC)に記憶しておくと共に、変更条件記憶領域(CC)に記憶された変更条件を判定回路541に出力する。
また、決定回路542は、判定回路541から出力された判定結果信号に応じて決定した変換方式を示す情報である変換方式情報を生成する。変換方式情報は、予め用意された上記2つの変換方式である変換方式A及び変換方式Bをそれぞれ識別できるような識別番号等の値とすればよい。そして、決定回路542には、変換方式情報を記憶する変換方式情報記憶領域(CM)が設けられており、判定結果信号に応じて決定した変換方式を示す変換方式情報を、変換方式情報記憶領域(CM)に記憶する。
なお、本実施形態では、変換方式の具体的な態様は、生成手段520の後述するビット列変換回路525に設けられた複数のローテート演算器(図5では、ローテート演算器525a、525b)で表されている。具体的には、変換方式Aは、ローテート演算器525aと対応しており、変換方式Bは、ローテート演算器525bと対応している。そして、決定回路542には、変換方式情報と当該複数のローテート演算器との対応関係が分かるデータテーブルが設けられている。
決定回路542は、ブート処理中の変換方式設定処理の際に、デフォルトの変換方式Aを示す変換方式情報を変換方式情報記憶領域(CM)に記憶する。そして、決定回路542は、変換方式情報記憶領域(CM)に記憶された値に基づいて、デフォルトの変換方式Aに対応するローテート演算器525aにてビット列変換処理が施された誤り検査値を、ビット列変換回路525から付加手段530へ出力させるための制御信号(以下、「変換方式制御信号」という)を、生成手段520の制御回路523へ出力する。
なお、変換方式情報記憶領域(CM)には、変換方式が変更された場合には、変更後の変換方式を示す変換方式情報のCMの値(以下、変更後の変換方式情報の値を「CM’」とする)が記憶されることになる。決定回路542は、今回のコマンド送信処理にて変換方式を変更した場合、変更後の変換方式を示す変換方式情報を記憶した変換方式情報記憶領域(CM)の値を確認することで、以降のコマンド送信処理で生成手段520が付加手段530へ出力するべき誤り検査値にビット列変換処理を施す際の変換方式を把握することができる。
また、決定回路542は、ブート処理後の変換方式設定処理の際に、予め中間制御部180との間で取り決められた変換方式の変更プロトコルに従って、変換方式を変更する。具体的には、決定回路542は、判定回路541から出力された判定結果信号を確認し、バッファ手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドであるか否かを把握する。そして、決定回路542は、バッファ手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドであれば、所定の変更方式に従って変換方式情報記憶領域(CM)の値を変更する。すなわち、上記変更プロトコルとは、変換方式を変更するべきか否かを判定するための上記変更条件と変換方式の変更方式とから少なくとも構成される。
変更条件は、上記のように、本実施形態では、バッファ手段510から出力された制御コマンド(P)が、所定の制御コマンド群のうち最初に生成される制御コマンド、及び、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのどちらかに該当するか否かである。
変換方式の変更方式は、予め中間制御部180との間で取り決めておけば基本的に任意である。本実施形態では、変換方式Aと変換方式Bとの2つが用意されているとし、デフォルトの変換方式を変換方式Aとした。このとき、例えば、変更条件を満たす制御コマンドが出力される毎に、変換方式を、変換方式A→変換方式B、変換方式B→変換方式Aへ決定する方式が考えられる。また、例えば、変更条件を満たす制御コマンドが出力される毎に、予め用意した乱数生成回路を作動させ、得られた乱数値に対応する変換方式に決定する方式が考えられる。但し、乱数生成回路を用いる場合は、得られた乱数値を中間制御部180へ通知するか、当該乱数生成回路と同期して作動する乱数生成回路を中間制御部180にも用意する必要がある。本実施形態で取り決められた変更方式として、変更条件を満たす制御コマンドが出力される毎に、変換方式を変換方式A→変換方式B、変換方式B→変換方式Aと決定する方式が採用されている。
このようにして、決定回路542は、判定回路541の判定結果に応じて、ビット列変換処理で用いられる変換方式を決定する。そして、決定回路542は、上記変換方式制御信号を生成手段520の制御回路523へ出力することで、決定した変換方式に応じて生成手段520の設定を行うことができ、決定した変換方式を用いてビット列が変換された誤り検査値が付加手段530へ出力されることとなる。
生成手段520は、バッファ手段510から出力された制御コマンドを用いて誤り検査値を生成し、生成した誤り検査値のビット列を変換して、後続する付加手段530へ出力する回路である。また、生成手段520は、ビット列変換処理を施す際のビットローテート演算において用いるシフト量を制御する回路である。すなわち、生成手段520は、検査値生成処理、ビット列変換処理、更新タイミング条件設定処理、リセット条件設定処理、及びシフト量設定処理を実行する役割を担っている。これらの処理を実行するために、生成手段520は、生成回路521と、格納回路522と、制御回路523と、入力選択回路524と、ビット列変換回路525と、リセット判定回路526とを少なくとも備えている。
生成回路521は、バッファ手段510から過去に出力された制御コマンドに演算処理を施して誤り検査値を生成する回路である。格納回路522は、バッファ手段510から出力された制御コマンドを格納する回路である。制御回路523は、バッファ手段510から出力された作動許可信号の入力に基づいて、生成回路521、格納回路522、及びリセット判定回路526の動作を制御する回路である。また、制御回路523は、決定手段540から出力された変換方式制御信号の入力に基づいて、生成回路521からビット列変換回路525を介して付加手段530へ出力する誤り検査値を制御する回路である。入力選択回路524は、ビット列変換回路525と付加手段530との接続を選択的に切り替える回路である。ビット列変換回路525は、生成回路521から出力された誤り検査値のビット列を変換する回路である。リセット判定回路526は、制御コマンドがリセット条件を満たす制御コマンドであるか否かを判定する回路である。以下、これら生成手段520に備えられた各回路の詳細について説明する。
格納回路522は、バッファ手段510から出力された制御コマンドを格納しておく回路である。格納回路522は、少なくとも遡及数のNの値に対応するN段の格納回路で構成されている。そして、格納回路522を担う各格納回路は、パイプライン構成となるように各々が接続されており、遡及数のNの値に対応するN段のシフトレジスタ(FIFOメモリ)の機能を少なくとも有している。
そして、格納回路522は、バッファ手段510がメインCPU110aから受け取って、決定手段540、生成手段520、及び付加手段530に出力した制御コマンド(P)よりも過去にメインCPU110aによって生成された制御コマンドを格納することができる。具体的には、格納回路522は、バッファ手段510から出力された制御コマンド(P)より過去に生成された制御コマンド(P−1)〜制御コマンド(P−N)のN個の制御コマンドを格納することができる。本実施形態では、格納回路522を担う各格納回路のうち、初段の格納回路を格納回路(P−1)とし、最終段の格納回路を格納回路(P−N)とする。そして、格納回路522を担う各格納回路を、それぞれ格納回路(P−1)〜格納回路(P−N)とする。
格納回路522の初段の格納回路(P−1)の入力側は、バッファ手段510のデータバッファ511とデータ線で接続されている。また、各格納回路(P−1)〜(P−N)は、制御回路523とそれぞれ制御線で接続されている。そして、制御回路523は、バッファ手段510の制御回路512から出力された作動許可信号の入力に基づいて、各格納回路(P−1)〜(P−N)に格納されたデータを順次シフトさせるための制御信号(以下、「シフト処理信号」という)を出力する。格納回路522の最終段の格納回路(P−N)の出力側は、生成回路521とデータ線で接続されている。
各格納回路(P−1)〜(P−N)は、シフト処理信号が制御回路523から入力されると、各々が格納する制御コマンドを次段の格納回路へ順次シフトさせると共に、前段の格納回路からシフトされた制御コマンドを格納する。このとき、初段の格納回路(P−1)は、シフト処理信号の入力に伴ってバッファ手段510のデータバッファ511から出力された制御コマンド(P)を新たに取り込んで格納する。また、最終段の格納回路(P−N)は、自身が格納する制御コマンド(P−N)をシフト処理信号の入力に伴ってシフトさせ、後続する生成回路521へ出力する。
生成回路521は、格納回路522から出力された制御コマンドに対し、予め設定された誤り検査値生成のための演算方式(以下、「生成方式」という)で演算して誤り検査値を生成し、生成した誤り検査値を後続するビット列変換回路525へ出力する回路である。
生成回路521の入力側は、格納回路522の最終段の格納回路(P−N)とデータ線で接続され、制御回路523と制御線で接続されている。また、生成回路521の出力側は、ビット列変換回路525とデータ線で接続されている。そして、制御回路523は、バッファ手段510の制御回路512から出力された作動許可信号に基づいて、制御コマンドを入力して演算処理するよう作動させるための作動許可信号を生成回路521に対して出力する。
生成回路521は、制御回路523から当該作動許可信号が入力されると、制御回路523の格納回路522へのシフト処理信号に伴って出力された制御コマンド(P−N)を入力する。そして、生成回路521は、入力した制御コマンド(P−N)に対し、予め設定された生成方式によって演算処理を施し、誤り検査値(P−N)を生成する。そして、生成回路521は、生成した誤り検査値(P−N)を、後続するビット列変換回路525へ出力する。
生成方式は、予め中間制御部180との間で取り決めてあれば、特に限定されない。生成方式は、例えば、チェックサム方式、CRC方式、奇数パリティ方式、偶数パリティ方式、群計数チェック方式、垂直パリティ方式、水平パリティ方式、又はハミング符号方式等の公知の方式を用いることができる。なお、生成回路521は、格納回路522が出力した制御コマンドをそのまま入力し、演算するように構成することもできるし、格納回路522が出力した制御コマンドの一部だけを入力し、演算するように構成することもできる。例えば、制御コマンドは後述するように1バイトの「MODE」の情報と1バイトの「DATA」の情報とから構成されているが、出力された制御コマンドの「MODE」の情報のみを入力し、演算するように構成することができる。
リセット判定回路526は、バッファ手段510から出力された制御コマンドを入力し、入力した制御コマンドが、シフト量Aに係るリセット条件を満たす制御コマンドであるか否かの判定処理を実行し、判定結果をビット列変換回路525へ通知する回路である。
リセット判定回路526の入力側は、バスを介してメインCPU110aと接続され、メインCPU110aとの間では、CPUインターフェース方式に対応する入出力制御方式でデータ送受が制御されている。また、リセット判定回路526には、予め用意されたシフト量Aに係る複数のリセット条件と複数のHWパラメータとの対応関係が分かるデータテーブルが設けられており、取り込んだHWパラメータによって特定のリセット条件を一義的に決定することができる。
そして、リセット判定回路526は、ブート処理中のHWパラメータ設定処理の際に、メインCPU110aから出力されたHWパラメータをデータバス上から取り込む。そして、リセット判定回路526は、ブート処理中のリセット条件設定処理として、メインCPU110aから設定されたHWパラメータに対応するリセット条件を、シフト量Aに係るデフォルトのリセット条件としてリセット条件記憶領域(RC)に記憶しておく。
また、リセット判定回路526の入力側は、バッファ手段510のデータバッファ511とデータ線で接続されており、制御回路523と制御線で接続されている。また、リセット判定回路526の出力側は、ビット列変換回路525の後述するシフト量制御部525cと制御線で接続されている。そして、制御回路523は、ブート処理後のコマンド送信処理の際に、バッファ手段510の制御回路512から出力された作動許可信号の入力に基づいて、制御コマンドを入力して判定処理を行うよう作動させるための作動許可信号をリセット判定回路526に対して出力する。
リセット判定回路526は、制御回路523から上記作動許可信号が出力されると、当該作動許可信号の入力に基づいて、バッファ手段510のデータバッファ511から出力された制御コマンド(P)を入力する。そして、リセット判定回路526は、入力した制御コマンド(P)のビットパターンと、予めリセット条件記憶領域(RC)に記憶しておいたリセット条件のビットパターンとを比較する。そして、リセット判定回路526は、入力した制御コマンド(P)とリセット条件とを比較して両者が一致すれば、バッファ手段510から出力された制御コマンド(P)はシフト量Aに係るリセット条件を満たす制御コマンドであると判定し、両者が一致しなければ、バッファ手段510から出力された制御コマンド(P)はシフト量Aに係るリセット条件を満たす制御コマンドでないと判定する。
そして、リセット判定回路526は、バッファ手段510から出力された制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドであると判定した場合には、シフト量Aを再設定するための制御信号(以下、「シフト量Aリセット信号」という)を、後続するビット列変換回路525のシフト量制御部525cに出力する。これにより、ビット列変換回路525のシフト量制御部525cでは、バッファ手段510から出力された制御コマンド(P)に基づいて、シフト量Aを再設定することができる。一方、リセット判定回路526は、バッファ手段510から出力された制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドでないと判定した場合には、シフト量制御部525cにシフト量Aリセット信号を出力しない。
なお、リセット判定回路526がシフト量Aリセット信号を出力するタイミングは、判定対象の制御コマンド(P)、すなわち、バッファ手段510から出力された制御コマンド(P)に付加される誤り検査値に対するビット列変換処理の際に、再設定後のシフト量Aが用いられるように、予め調整されている。
リセット条件は、予め中間制御部180との間で取り決められており、シフト量Aが用いられる期間、すなわち、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間に、シフト量Aを再設定してシフト量Aの変動推移がリセットされるのであれば基本的に任意である。本実施形態では、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間は、上記のように、所定の動作モードの期間以外の期間であり、所定の制御コマンド群以外の制御コマンドが送信される期間である。そこで、本実施形態のリセット条件は、バッファ手段510から出力された制御コマンド(P)が、所定の制御コマンド群以外の制御コマンドの中から予め定められた制御コマンドであることとする。そして、本実施形態では、所定の制御コマンド群以外の制御コマンドの中から定められた制御コマンドの種別に応じて、シフト量Aに係る複数のリセット条件が予め用意されているものとする。
なお、本実施形態のリセット条件として予め定められた制御コマンドの種別は、1つのリセット条件に対して1つの制御コマンド種別でもよいし、複数の制御コマンドの種別でもよい。複数の制御コマンドの種別を採用することは、シフト量Aを再設定してシフト量Aの変動推移がリセットされる回数が増加することを意味する。このため、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を更に向上させることができる。また、通信エラー等によりシフト量Aの変動が主制御部110側と中間制御部180側とでズレることがあっても、シフト量Aの変動推移がリセットされることによって、当該ズレを解消する機会が増加するため、誤り検査処理の確度を更に向上させることができる。
ビット列変換回路525は、生成回路521から出力された誤り検査値を入力し、入力した誤り検査値に対して、ビット列変換処理を施す回路である。具体的には、ビット列変換回路525には、入力した誤り検査値のビット列に対してビットローテート演算を行う複数のローテート演算器と、ビットローテート演算で用いるシフト量を制御するシフト量制御部525cとが備えられている。
ビット列変換回路525を担う複数のローテート演算器は、規則的に変動するシフト量Aを用いてビットローテート演算を行うローテート演算器525aと、ランダムに変動するシフト量Bを用いてビットローテート演算を行うローテート演算器525bとを少なくとも備えている。ローテート演算器525a、525bは、誤り検査値と同等のビット幅を有するシフトレジスタ等からそれぞれ構成されている。そして、ローテート演算器525a、525bの入力側は、生成回路521とデータ線でそれぞれ接続され、シフト量制御部525cと制御線でそれぞれ接続されている。また、ローテート演算器525a、525bの出力側は、入力選択回路524とデータ線でそれぞれ接続されている。更に、ローテート演算器525bの出力側は、シフト量制御部525cとデータ線で接続されている。
そして、ローテート演算器525a、525bは、制御回路523の生成回路521への作動許可信号に伴って出力された誤り検査値を入力し、入力した誤り検査値のビット列に対してビットローテート演算を行った後、それぞれの演算結果を、後続する入力選択回路524へ出力する。このとき、ローテート演算器525aは、シフト量制御部525cから設定されたシフト量Aでビットローテート演算を行い、ローテート演算器525bは、シフト量制御部525cから設定されたシフト量Bでビットローテート演算を行う。
ローテート演算器525a、525bを構成するシフトレジスタは、当該シフトレジスタを構成する各フリップフロップの最終段のフリップフロップの出力が、フィードバックして初段のフリップフロップの入力に直に接続されている。ローテート演算器525a、525bは、誤り検査値のビット列を構成する各ビットが入力されると、クロック信号に同期して、各ビットを、シフト量制御部525cから設定されたシフト量A、Bが示すビット数分だけ、所定方向(以下、「シフト方向」という)にそれぞれシフトさせる。そして、ローテート演算器525a、525bは、最終段のフリップフロップから出力された出力ビットを、初段のフリップフロップに入力ビットとしてフィードバックする。
なお、シフト方向は、ビット列の最上位ビットから最下位ビットへ向かう方向、又は最下位ビットから最上位ビットへ向かう方向のいずれかの方向である。本実施形態では、シフト方向は、ローテート演算器525a、525bでそれぞれ異なった方向であっても、予め中間制御部180との間で取り決めてあれば、基本的に任意である。
一方、シフト量制御部525cは、ブート処理中には、更新タイミング条件設定処理として、メインCPU110aから設定されたHWパラメータに基づいて、シフト量Aに係るデフォルトの更新タイミング条件を決定し、決定した更新タイミング条件に応じた設定を行う。また、シフト量制御部525cは、ブート処理中には、シフト量設定処理として、予め定められたデフォルトのシフト量A、Bをローテート演算器525a、525bへ設定する処理を行う。また、シフト量制御部525cは、ブート処理後のコマンド送信処理の際に行われるビット変換処理の際に、シフト量設定処理として、ローテート演算器525bから出力されるビット列が変換された誤り検査値に基づいて、シフト量A、Bを必要に応じて新たなシフト量A、Bに更新し、更新後のシフト量A、Bをローテート演算器525a、525bに設定する処理を行うと共に、リセット判定回路526の判定結果に基づいて、シフト量Aを必要に応じて再設定する処理を行う。
シフト量制御部525cには、ローテート演算器525a、525bに設定されるシフト量A、Bを記憶しておくシフト量記憶領域(S)と、更新タイミング条件を記憶しておく更新タイミング条件記憶領域(UT)とが設けられている。そして、シフト量制御部525cの入力側は、ローテート演算器525bとデータ線で接続され、制御回路523及びリセット判定回路526と制御線でそれぞれ接続されている。また、シフト量制御部525cの出力側は、ローテート演算器525a、525bとそれぞれ制御線で接続されている。更に、シフト量制御部525cは、バスを介してメインCPU110aと接続され、メインCPU110aとの間では、CPUインターフェース方式に対応する入出力制御方式でデータ送受が制御されている。
デフォルトのシフト量A、Bは、予め中間制御部180との間で取り決められた値であれば、基本的に任意であり、シフト量Aとシフト量Bとの間で同じ値でも異なる値でもよく、メインROM110bの所定の記憶領域に記憶しておく。メインCPU110aは、ブート処理中の初期値設定処理の際に、メインROM110bからデフォルトのシフト量A、Bを読み出し、シフト量制御部525cのシフト量記憶領域(S)にそれぞれ記憶しておく。
そして、シフト量制御部525cは、ブート処理中のHWパラメータ設定処理の際に、メインCPU110aから出力されたHWパラメータをデータバス上から取り込む。シフト量制御部525cには、予め用意されたシフト量Aに係る複数の更新タイミング条件と複数のHWパラメータとの対応関係が分かるデータテーブルが設けられている。そして、シフト量制御部525cは、取り込んだHWパラメータによって特定の更新タイミング条件を一義的に決定することができる。そして、シフト量制御部525cは、ブート処理中の更新タイミング条件設定処理として、メインCPU110aから設定されたHWパラメータに対応する更新タイミング条件を、シフト量Aに係るデフォルトの更新タイミング条件として更新タイミング条件記憶領域(UT)に記憶しておく。なお、図5では、メインCPU110aとシフト量制御部525cとの間には、HWパラメータ及び乱数値のデータ送受のみが記載されているが、実際には、アドレスデータ並びに書き込み信号及び読み出し信号等の入出力を伴う。
また、制御回路523は、ブート処理中の変換方式設定処理の際に、決定手段540の決定回路542から出力された変換方式制御信号の入力に基づいて、ローテート演算器に設定するべきシフト量をシフト量制御部525cにて制御させるための制御信号(以下、「シフト量設定制御信号」という)を、シフト量制御部525cへ出力する。シフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、シフト量A、Bに係るシフト量設定処理を行う。具体的には、シフト量制御部525cは、ブート処理中のシフト量Aに係るシフト量設定処理として、シフト量記憶領域(S)に記憶されたシフト量Aをローテート演算器525aに設定するための制御信号(以下、「シフト量A設定信号」という)をローテート演算器525aに出力し、シフト量記憶領域(S)に記憶されたデフォルトのシフト量Aをローテート演算器525aに設定する。また、シフト量制御部525cは、ブート処理中のシフト量Bに係るシフト量設定処理として、シフト量B設定信号をローテート演算器525bに出力し、シフト量記憶領域(S)に記憶されたデフォルトのシフト量Bをローテート演算器525bに設定する。
本実施形態の変換方式は、上記のように、所定の動作モードの期間が開始すると、決定手段540の変換方式設定処理によって変換方式Aから変換方式Bに変更され、所定の動作モードの期間が終了すると、決定手段540の変換方式設定処理によって変換方式Bから変換方式Aに変更される。このとき、シフト量制御部525cは、変換方式Aでビット列変換処理を施す際のビットローテート演算で用いられるシフト量Aを、予め中間制御部180との間で取り決められた更新の方式(以下、「更新方式」という)に従って更新する。
シフト量Aに係る更新方式は、予め中間制御部180との間で取り決められ、シフト量Aが規則的に変動すれば、基本的に任意である。例えば、シフト量制御部525cが、デフォルトのシフト量Aに対して、予め設けられた所定値を更新タイミングが到来する毎に累積させていく方式などを採用することができる。また、シフト量制御部525cが、デフォルトのシフト量Aに対して、既存の遊技機が備えるパリティチェックやチェックサム等の演算機能を流用して、ローテート演算器525bから出力された誤り検査値を演算し、得られた結果を、更新タイミングが到来する毎に累積させていく方式などを採用することができる。この場合、ローテート演算器525bから出力された誤り検査値及び既存の遊技機が備える演算機能を用いて得られた結果を累積させていく方式では、固定データである所定値を予め主制御部110に保持しておく必要がなく、静的な解析手法で不正に解析される虞れがないため、好適である。
また、図5では省略したが、これら既存の遊技機が備えるパリティチェック等の演算機能を実現するパリティチェック回路等を、生成手段520内に設け、シフト量Aに係る更新タイミングの到来に応じて、当該パリティチェック回路等から取得してきた値を用いることができる。この場合、シフト量Aの更新は、ワイヤードロジック制御方式のハードウェアで回路構成された生成手段520の内部処理だけで実現可能となる。このため、セキュリティ機能を追加に伴って増大する主制御部110の処理負荷やコードサイズを抑制することができ、好適である。何れにしても、シフト量Aに係る更新方式が、中間制御部180との間で整合しており、ローテート演算器525bから出力された誤り検査値に基づいてシフト量Aが規則的に変動する方式であればよい。
また、更新のタイミングを規定する更新タイミング条件は、予め中間制御部180との間で取り決められて、シフト量Aが規則的に変動するように更新されるのであれば、基本的に任意である。例えば、シフト量制御部525cを、バッファ手段510のデータバッファ511とデータ線で接続して、バッファ手段510から出力された制御コマンドの生成個数Pが所定数であるか否かを計数する。そして、バッファ手段510から出力された制御コマンドの生成個数Pが所定数以上となったら、シフト量設定処理を行ってシフト量Aを更新するように構成することができる。
本実施形態のシフト量Aに係る更新タイミング条件は、決定手段540の変換方式設定処理によって設定される変換方式が、変換方式Bから変換方式Aに変更される毎で、シフト量Aが規則的に変動されるようにシフト量Aを更新するように規定されているものとする。具体的には、本実施形態では、所定の動作モードの期間が開始し、変換方式Bでビット列変換処理が施された誤り検査値が、制御コマンドに付加されて中間制御部180へ送信されている間に、シフト量Aを更新しておき、当該所定の動作モードの期間が終了した後には、更新されたシフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が制御コマンドに付加されるような更新タイミング条件を規定する。
この場合、シフト量Aに係る更新タイミング条件は、所定の動作モードの期間中に制御コマンドに付加される誤り検査値に基づいて規定されていれば、基本的に任意である。本実施形態では、所定の動作モードの期間中に、制御コマンドに付加される誤り検査値が、当該期間中で何番目に付加される誤り検査値なのかに応じて、シフト量Aに係る複数の更新タイミング条件が予め用意されているものとする。例えば、所定の動作モードの期間中に、最初に制御コマンドに付加される誤り検査値に基づいて規定された更新タイミング条件や、最後に制御コマンドに付加される誤り検査値に基づいて規定された更新タイミング条件や、所定番目に制御コマンドに付加される誤り検査値に基づいて規定された更新タイミング条件等が、複数用意されているものとする。
このうち、本実施形態では、ブート処理中の更新タイミング条件設定処理の際に、HWパラメータに対応する更新タイミング条件として、所定の動作モードの期間中で、最初に制御コマンドに付加される誤り検査値に基づいて規定された更新タイミング条件が設定されるものとする。すなわち、本実施形態では、ブート処理後に所定の動作モードの期間が開始し、ローテート演算器525bから出力された誤り検査値(すなわち、変換方式Bでビット列が変換された誤り検査値)が、当該期間中で最初に付加手段530へ出力されるときに、シフト量Aを更新するものとする。
より詳細には、ブート処理後、所定の動作モードの期間の開始に伴って、当該期間中の最初にコマンド送信処理が行われる際に、生成手段520の制御回路523には、決定手段540の決定回路542から変換方式制御信号が出力される。制御回路523は、変換方式制御信号の入力に基づいて、シフト量制御部525cにシフト量設定制御信号を出力する。シフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、所定の動作モードの期間が開始したことを検知することができる。
例えば、シフト量制御部525cに、制御回路523から出力されたシフト量設定制御信号の入力回数を計数するカウンタ回路等を設けておき、シフト量設定制御信号が入力される毎に1を加算する。そして、シフト量制御部525cは、当該カウンタ回路等の値が偶数又は奇数に遷移したことを検知することで、シフト量制御部525cは、所定の動作モードの期間の開始又は終了したことを検知することができる。例えば、カウンタ回路等の初期値が0であり、ブート処理中の変換方式設定処理によって出力されるシフト量設定制御信号によって1が加算されることを含めると、カウンタ回路等の値が偶数に遷移すれば、所定の動作モードの期間が開始したことを示し、その後、カウンタ回路等の値が奇数に遷移すれば、所定の動作モードの期間が終了したことを示す。よって、シフト量制御部525cは、シフト量設定制御信号の入力に基づいて、所定の動作モードの期間が開始又は終了したことを検知し、現在が所定の動作モードの期間中であるか否かを判断することができる。すなわち、シフト量制御部525cは、シフト量設定制御信号の入力に基づいて、シフト量A、Bの更新タイミングを判断することができる。
シフト量制御部525cは、所定の動作モードの期間が開始したことを検知した場合、シフト量設定処理を行ってシフト量Aを更新する。すなわち、シフト量制御部525cは、シフト量Aに係るシフト量設定処理として、ローテート演算器525bから出力された誤り検査値に基づいて、シフト量記憶領域(S)に記憶されたシフト量Aの値を、シフト量Aに係る所定の更新方式に従って更新する。そして、シフト量制御部525cは、シフト量A設定信号をローテート演算器525aに出力し、シフト量記憶領域(S)に記憶された更新後のシフト量Aをローテート演算器525aに設定する。
なお、その後の所定の動作モードの期間中では、シフト量制御部525cには、ローテート演算器525bから誤り検査値が出力されるが、当該誤り検査値は、所定の動作モードの期間中で最初に出力された誤り検査値ではないため、シフト量Aに係る更新タイミング条件は成立せず、シフト量Aは更新されない。その後、所定の動作モードの期間が終了して、シフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が付加手段530へ出力される期間を経て、再び所定の動作モードの期間が開始し、決定手段540から変換方式制御信号が出力されれば、シフト量制御部525cは、上記のようにシフト量Aを再び更新する。
なお、所定の動作モードの期間が終了して、シフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が付加手段530へ出力される期間には、シフト量制御部525cには、リセット判定回路526からシフト量Aリセット信号が入力される。シフト量制御部525cは、当該期間中、リセット判定回路526から出力されたシフト量Aリセット信号の入力に基づいて、シフト量Aを再設定する。具体的には、シフト量制御部525cは、シフト量Aリセット信号の入力に基づき、シフト量記憶領域(S)に記憶されたシフト量Aに、予め用意された所定の設定値を上書きして記憶する。そして、シフト量制御部525cは、シフト量A設定信号をローテート演算器525aに出力し、シフト量記憶領域(S)に記憶された上書き後のシフト量Aをローテート演算器525aに設定する。
シフト量制御部525cに予め用意された所定の設定値は、予め中間制御部180との間で取り決めてあれば、基本的に任意である。当該設定値は、デフォルトのシフト量Aと同じ値でもよいし、別の値でもよく、メインROM110bの所定の記憶領域に予め記憶しておけばよい。そして、ブート処理中の初期値設定処理の際に、メインCPU110aがメインROM110bから当該設定値を読み出し、シフト量制御部525cの所定の記憶領域に記憶させておけばよい。
一方、シフト量Bは、予め中間制御部180との間で取り決められておらず、ランダムに変動する値に設定される。シフト量Bに係る更新方式は、シフト量Aのようにシフト量が規則的に変動する方式ではなく、乱数値をシフト量Bに用いる方式とする。この乱数値は、図5に示すように、メインRAM110cの所定の乱数値記憶領域に記憶された既存の遊技機が備える特別図柄判定用乱数値や大当たり図柄用乱数値等を流用することができる。
また、乱数値について、図5では省略したが、生成手段520内に既存の遊技機が備える乱数生成回路を設け、シフト量Bに係る更新タイミングの到来に応じて、当該乱数生成回路から取得してきた値を、シフト量Bの値に用いることができる。この場合、シフト量Bの更新は、ワイヤードロジック制御方式のハードウェアで回路構成された生成手段520の内部処理だけで実現可能となる。このため、セキュリティ機能を追加に伴って増大する主制御部110の処理負荷やコードサイズを抑制することができ、好適である。何れにしても、シフト量Bの更新方式として用いる乱数値が、中間制御部180との間で取り決められた値とはなっておらず、当該乱数値を取得する乱数生成回路等が、中間制御部180に設けられた乱数生成回路と同期して作動するものでなければよい。
また、本実施形態でのシフト量Bに係る更新タイミング条件は、所定の動作モードの期間が開始し、変換方式Bでビット列変換処理が施された誤り検査値が、制御コマンドに付加されて中間制御部180へ送信される毎に、その都度、シフト量Bを更新するように規定されているものとする。
より詳細には、所定の動作モードの期間の開始に伴って、当該期間中の最初にコマンド送信処理が行われる際に、制御回路523は、決定手段540から出力された変換方式制御信号の入力に基づいて、シフト量設定制御信号をシフト量制御部525cへ出力する。シフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、所定の動作モードの期間が開始したことを検知することができる。
シフト量制御部525cは、所定の動作モードの期間が開始したことを検知した場合、シフト量設定処理を行ってシフト量Bを更新する。すなわち、シフト量制御部525cは、シフト量Bに係るシフト量設定処理として、ローテート演算器525bから出力された誤り検査値が入力される毎に、シフト量記憶領域(S)に記憶されたシフト量Bの値を、シフト量Bに係る所定の更新方式に従って更新する。そして、シフト量制御部525cは、シフト量B設定信号をローテート演算器525bに出力し、シフト量記憶領域(S)に記憶された更新後のシフト量Bをローテート演算器525bに設定する。なお、更新後のシフト量Bは、所定の動作モードの期間中に行われる次回のコマンド送信処理においてローテート演算器525bがビットローテート演算を行う際に反映される。
なお、その後の所定の動作モードの期間中は、制御回路523は、変換方式制御信号が出力されないためシフト量設定制御信号をシフト量制御部525cへ出力しないが、ローテート演算器525bから出力された誤り検査値は、その都度、制御コマンドに付加されて中間制御部180へ送信されると共に、シフト量制御部525cへ入力される。このため、シフト量制御部525cは、ローテート演算器525bから出力された誤り検査値の入力に基づいて、その都度、新たな乱数値を取得し、シフト量Bを更新していけばよい。
また、所定の動作モードの期間が終了した際には、制御回路523は、変換方式制御信号の入力に基づいてシフト量設定制御信号をシフト量制御部525cへ出力する。シフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、所定の動作モードの期間が終了したことを検知することができる。
シフト量制御部525cは、所定の動作モードの期間が終了したことを検知した場合、シフト量設定処理を行う必要はない。すなわち、シフト量制御部525cは、ローテート演算器525bから出力された誤り検査値を破棄する等だけすればよく、シフト量Bの更新を行う必要はない。その後、シフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が制御コマンドに付加された後、再び所定の動作モードの期間が開始すれば、シフト量制御部525cは、上記のようにシフト量Bを再び更新する。
なお、シフト量制御部525cは、所定の動作モードの期間が終了した後でも、シフト量Bの更新を行ってもよいが、シフト量Bに係る更新方式として、メインRAM110cの乱数値記憶領域に記憶された乱数値を用いる場合は、メインCPU110aとの間で、乱数値のデータ送受に係る不必要な処理が発生する。この場合、メインCPU110aに余計な処理負荷がかかるため、所定の動作モードの期間が終了したことを検知した場合には、シフト量Bの更新は行わない方が好適である。また、シフト量Bに係る更新方式として、生成手段520内に設けた乱数生成回路で乱数値を取得すると、乱数値のデータ送受に係る処理が発生しないため、当該期間が終了した後にシフト量Bを更新するか否かを問わず、メインCPU110aへの負荷は最小限に抑制される。しかも、シフト量Bに係る更新タイミング条件を設計するときに、メインCPU110aへの負荷を考慮することで設計自由度が制約されることもなく、好適である。
このように、シフト量Aは、予め中間制御部180との間で取り決められた所定の更新方式及び更新タイミング条件に基づいて更新され、規則的に変動する。一方、シフト量Bは、予め中間制御部180との間で取り決められていない乱数値で更新され、ランダムに変動する。このため、シフト量Bを用いてビットローテート演算を行うローテート演算器525bでは、1回のビット列変換処理の前後でビット列を構成する各ビットの位置が結果的に何ビット移動したのかを示す「ローテート数」もランダムに変動することとなる。
しかしながら、ローテート演算器525bでは、ビット列変換処理毎でシフト量Bはランダムに変動されるものの、1回のビット列変換処理の中では、各ビットは規則的にシフトされるだけであり、ビット列変換処理毎で各ビットの値の組み合わせ自体が変化するわけではない。このため、中間制御部180側ではビットローテート演算を複数回行えば、ビット列が変換されていない誤り検査値(以下、「元の誤り検査値」という)のビット列に戻すことができる。ローテート数は、1回のビット列変換処理の前後でビット列を構成する各ビットの位置が結果的に何ビット移動したのかを示している。このため、ローテート数の取り得る範囲は、誤り検査値のビット列のビット幅で規定される。
例えば、誤り検査値のビット幅を1バイト(8ビット)とした場合、ローテート数の取り得る範囲は0以上8以下の整数となり、ビットローテート演算を少なくとも8回行えば、元の誤り検査値のビット列に戻すことができる。よって、例えば、シフト量Bとして用いる乱数値の取り得る範囲が0〜255であっても、誤り検査値のビット幅を1バイト(8ビット)とした場合には、ビットローテート演算を少なくとも8回行うだけで、元の誤り検査値のビット列に戻すことができる。
また、特にシフト量Bがランダムに変動するローテート演算器525bでは、元の誤り検査値のビット列が異なっていても、ビット列変換処理後には同じビット列の誤り検査値が出力される場合が生じる。一般的には伝送データに付加する誤り検出符号が、伝送データ毎で重複した値をとることは、誤り検出の信頼度を低下させるものとして回避するべき事象であり、問題となる。しかしながら、本実施形態では、ビット列変換毎で重複した値が生じても元の誤り検査値に戻すことが可能であって、元の誤り検査値自体に誤り検出の信頼度があるため、問題とはならない。むしろ、ビット列変換毎で重複した値が生じた方が、不正者が制御コマンドと誤り検査値を複数窃取したときに、シフト量の変動に関する規則性の有無や変換方式の変更の有無を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することがより一層困難となり好適である。
このようにして、ビット列変換回路525では、ブート処理後のコマンド送信処理の際に、生成回路521から出力された誤り検査値のビット列に対して、上記構成のシフト量A、Bを用いるローテート演算器525a、525bにてビットローテート演算を行い、ビット列が変換された誤り検査値を、後続する入力選択回路524へそれぞれ出力する。
本実施形態では、ビット列変換回路525を比較的簡易な回路構成であるシフトレジスタで実現可能なローテート演算器525a、525bで構成したため、ローテート演算器525aの回路を設計した後は、その回路データをローテート演算器525bにも流用することが可能である。このため、本実施形態では、回路設計やその検証作業に係る開発工数や開発難易度を抑制することができる。すなわち、本実施形態では、複数の変換方式が設けられたことで制御コマンドと誤り検査値の対応関係が解析困難となりセキュリティ強度が向上するという効果を、設けられた変換方式の数よりも少数の演算器を設計するだけで得ることができ、少ない開発コストで大きな不正防止効果を得ることができる。
また、本実施形態では、ローテート演算器525bでは、シフト量Bをランダムに変動させるため、ローテート演算器525bでビット列が変換された誤り検査値の各ビットは、ビット列変換処理毎で不規則にシフトする。このため、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが困難となる。よって、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を更に向上させることができる。
また、本実施形態では、シフト量がランダムに変動する演算器を、ローテート演算器525bのみとしている。また、ローテート演算器525bでビット列が変換された誤り検査値が、制御コマンドに付加されて中間制御部180へ送信される場合も、所定の動作モードの期間の際、すなわち、所定の制御コマンド群が中間制御部180へ送信される期間に限定した。このため、中間制御部180側での誤り検査処理にて元の誤り検査値のビット列に戻す際に、シフト量をランダムに変動させることでビット列変換処理の試行回数が増加する傾向を、最大限抑制することができる。
また、本実施形態では、ローテート演算器525aで用いるシフト量Aを規則的に変動させている。すなわち、本実施形態では、ローテート演算器525bにてビット列が変換された誤り検査値が制御コマンドに付加される期間以外の際、すなわち、所定の動作モードの期間以外の際でも、ローテート演算器525aで用いられるシフト量Aを、所定の動作モードの期間以外の期間毎で変動させている。このため、本実施形態では、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが、所定の動作モードの期間以外に送信された誤り検査値に対しても困難となり、セキュリティ強度を更に向上させることができる。
また、ローテート演算器525aでは、シフト量Aの更新に関する規則性は、シフト量Aに係る更新方式及び更新タイミング条件に依存し、更新タイミング条件は、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者がシフト量Aの更新に関する規則性を解析することが困難となり、セキュリティ強度を更に向上させることができる。
更に、ローテート演算器525aでは、シフト量Aの更新に関する規則性は、シフト量Aに係るリセット条件にも依存し、リセット条件は、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者がシフト量Aの更新に関する規則性を解析することが困難となり、セキュリティ強度を更に向上させることができる。
その上、リセット条件が成立すると、シフト量Aには所定の設定値が与えられてシフト量Aが再設定され、それまでの更新によるシフト量Aの変動推移が一旦リセットされる。このため、本実施形態では、通信エラー等によりシフト量Aの変動が主制御部110側と中間制御部180側とでズレることがあっても、シフト量Aの再設定によりシフト量Aの変動推移がリセットされることによって、当該ズレを適宜解消することができ、誤り検査処理の確度を向上させることができる。
入力選択回路524は、マルチプレクサ等で構成されており、ビット列変換回路525と付加手段530との間の接続を選択的に切り替える機能を有する回路である。具体的には、入力選択回路524の入力側は、ビット列変換回路525を担う複数のローテート演算器(図5では、ローテート演算器525a、525b)とデータ線でそれぞれ接続され、制御回路523と制御線で接続されている。また、入力選択回路524の出力側は、付加手段530の入力選択回路531とデータ線で接続されている。入力選択回路524は、デフォルトは変換方式Aでビット列変換処理が施された誤り検査値を出力するローテート演算器525aとの接続が有効となるように予め設定されており、ローテート演算器525aから出力された誤り検査値を取り込み、付加手段530の入力選択回路531へ出力する。
制御回路523は、変換方式設定処理にて決定手段540の決定回路542から出力された変換方式制御信号の入力に基づき、入力選択回路524のローテート演算器525a、525bのいずれかとの接続を有効とするための制御信号(以下、「入力選択信号」という)を入力選択回路524へ出力する。この入力選択信号は、変換方式制御信号が示す特定の変換方式でビット列変換処理が施された誤り検査値のみが入力されるように、当該変換方式に対応するローテート演算器との接続のみを有効とするための信号である。入力選択回路524は、例えば、制御回路523から、ローテート演算器525bとの接続を有効とする入力選択信号が入力されると、ローテート演算器525bとの接続のみを有効とするように切り替える。そして、入力選択回路524は、ローテート演算器525bから出力された変換方式Bでビット列変換処理が施された誤り検査値を取り込み、付加手段530の入力選択回路531へ出力する。
このようにして、生成手段520は、バッファ手段510から出力された制御コマンド(P)に対して付加する誤り検査値(P−N)に対し、複数の変換方式でビット列変換処理を施すことができる。そして、生成手段520は、変換方式制御信号に応じた入力選択信号が入力選択回路524へ入力されることで、決定手段540にて決定された変換方式を用いてビット列が変換された誤り検査値(P−N)のみを、付加手段530へ出力することができる。よって、生成手段520から付加手段530へ出力される誤り検査値(P−N)は、バッファ手段510から出力された制御コマンド(P)よりN個前の制御コマンド(P−N)を用いて生成される誤り検査値(P−N)であって、変更プロトコルに従って決定された変換方式にてビット列が変換された誤り検査値(P−N)となる。
付加手段530は、バッファ手段510から出力された制御コマンドに対し、生成手段520から出力された誤り検査値を付加して、送信部550へ出力する回路である。すなわち、付加手段530は、検査値付加処理を実行する役割を担っている。また、付加手段530の入力側は、バッファ手段510及び生成手段520との間で、同期インターフェース方式でデータ送受が制御されている。一方、付加手段530の出力側は、後続する送信部550との間で、上記のようにCPUインターフェース方式に対応する入出力制御方式でデータ送受が制御されている。すなわち、付加手段530は、自身の入力側と出力側とで異なる入出力制御方式を有し、検査値生成部500内の同期インターフェース方式と送信部550のCPUインターフェース方式に対応する入出力制御方式とを整合する役割を担っている。
そして、付加手段530は、マルチプレクサ等で構成された入力選択回路531と、制御回路532とを少なくとも備えている。入力選択回路531は、予め定められた遡及数と整合するように、バッファ手段510から出力された制御コマンドと、生成手段520から出力された誤り検査値とを選択的に取り込むような接続切替機能を有する回路である。制御回路532は、バッファ手段510から出力された作動許可信号の入力に基づいて、入力選択回路531の動作を制御する回路である。
具体的には、入力選択回路531の入力側は、バッファ手段510のデータバッファ511とデータ線で接続され、生成手段520の入力選択回路524とデータ線で接続されている。また、入力選択回路531の入力側は、制御回路532と制御線で接続されている。入力選択回路531は、デフォルトは、データバッファ511との接続を有効となるように予め設定されており、データバッファ511から出力された制御コマンドを取り込む。そして、制御回路532は、バッファ手段510の制御回路512から出力された作動許可信号に基づき、所定時間遅延して、入力選択回路531の生成手段520との接続を有効とするための制御信号(以下、「入力選択信号」という)を入力選択回路531へ出力する。入力選択回路531は、制御回路532から当該入力選択信号が入力されると、生成手段520の入力選択回路524から出力された誤り検査値を取り込む。
そして、入力選択回路531は、送信部550と接続されたデータバスへ取り込んだ制御コマンド及び誤り検査値を出力する。また、制御回路532は、送信部550と接続されたアドレスバスに送信部550の所定の記憶領域を指定するアドレスデータ、制御バスに書き込み信号を出力する。このとき、制御回路532が、上記書き込み信号を出力するタイミングは、バッファ手段510の制御回路512から出力された作動許可信号の入力に基づいて、生成手段520及び送信部550の動作時間等を考慮しながら、予め定められた遡及数に応じた誤り検査値が付加されるようなタイミングとなるように予め設定されている。
送信部550は、検査値生成部500から出力された制御コマンドと誤り検査値を中間制御部180へ送信する機能を果たし、送信バッファ551と、送信回路552とを少なくとも備えている。
送信バッファ551は、中間制御部180へ送信するデータを一時的に保持するためのバッファ回路である。具体的には、送信バッファ551は、検査値生成部500から出力された制御コマンドを送信バッファ551へ書き込むための書き込み信号と、送信バッファ551を指定するアドレスデータとが入力されると、当該制御コマンドをバスを介して取り込む。また、送信バッファ551は、検査値生成部500から出力された上記制御コマンドに付加するべき誤り検査値を送信バッファ551へ書き込むための書き込み信号と、送信バッファ551を指定するアドレスデータとが入力されると、当該誤り検査値をバスを介して取り込む。そして、送信バッファ551は、取り込んだ制御コマンド及び誤り検査値を送信回路552へ直ちに受け渡す。
送信回路552は、中間制御部180へ送信するデータを、主制御部110と中間制御部180との間のデータ伝送形式(シリアル伝送形式やパラレル伝送形式)に対応したデータ形式へ変換する機能などを備えている。そして、送信回路552は、送信バッファ551から受け渡されたデータに上記データ形式変換処理等を施して送信データとし、中間制御部180へ直ちに送信する。
上述のような主制御部110の認証処理に関する構成によって、主制御部110から中間制御部180へ送信される制御コマンドには、以下に例示するような手順で誤り検査値が付加されていく。以下に、誤り検査値の付加手順について、図7を用いて説明する。図7では、格納しておいた制御コマンドがクリアされてから11番目に出力された制御コマンド(制御コマンド(1)〜制御コマンド(11))までの例を示す。
なお、図7では、変換方式Aを「方式A」、変換方式Bを「方式B」と表記する。また、図7では、誤り検査値(P)に対し、変換方式Aでビット列変換処理を施したものを「誤り検査値(PA)」と表記し、変換方式Bでビット列変換処理を施したものを「誤り検査値(PB)」と表記する。また、ビット列変換処理を施す際に用いるシフト量Aを適宜更新していくが、更新前のデフォルトのシフト量Aを用いてビット列変換処理を施したものを「誤り検査値(PA0)」とし、更新毎に「誤り検査値(PA1)」、「誤り検査値(PA2)」、・・・と表記する。誤り検査値(PB)も同様である。また、図7では、再設定後のシフト量Aを用いてビット列変換処理を施したものも「誤り検査値(PA0)」と表記する。そして、遡及数をN=2とする。
また、図7では、デフォルトの変換方式を変換方式Aとしている。すなわち、変換方式情報記憶領域(CM)には変換方式Aに相当する変換方式情報の値が記憶されているが、図7では便宜上、CM=Aと表記している。そして、図7では、変更条件を満たす制御コマンドは、所定の制御コマンド群のうち最初に生成される制御コマンド、及び、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのどちらかとする。また、変更方式として、変更条件を満たす制御コマンドが生成される毎に、変換方式を変換方式A→変換方式B、変換方式B→変換方式Aと決定する方式を採用している。また、シフト量Aは、変換方式が変換方式B→変換方式Aに変更される毎に、更新後のシフト量Aが用いられるものとし、シフト量Bは、コマンド送信処理毎に、更新後のシフト量Bが用いられるものとする。
制御コマンド(1)を送信する場合、図7では、N=2であり、現在はP=1(P≦N)であるであるため、制御コマンド(1)に付加される誤り検査値は、固有情報を用いて生成された初期検査値(1)となる。制御コマンド(2)を送信する場合も上記と同様に、制御コマンド(2)に付加される誤り検査値は、初期検査値(2)となる。
制御コマンド(3)を送信する場合、図7では、N=2であり、P>2であるであるため、制御コマンド(3)に付加される誤り検査値は、制御コマンド(1)を用いて生成された誤り検査値であって、デフォルトの変換方式Aでビット列が変換された誤り検査値(1A0)となる。制御コマンド(4)を送信する場合も上記と同様に、制御コマンド(4)に付加される誤り検査値は、誤り検査値(2A0)となる。
制御コマンド(5)を送信する場合、制御コマンド(5)は、所定の制御コマンド群の最初に生成された制御コマンドであるため、変換方式がデフォルトの変換方式A→変換方式Bに変更される。よって、制御コマンド(5)に付加される誤り検査値は、制御コマンド(3)を用いて生成された誤り検査値であって、変換方式Bでビット列が変換された誤り検査値(3B0)となる。
制御コマンド(6)を送信する場合、制御コマンド(6)は、所定の制御コマンド群の制御コマンドであるため、変換方式は変換方式Bのまま維持されるが、変換方式Bでは、毎回、シフト量Bが更新される。よって、制御コマンド(6)に付加される誤り検査値は、制御コマンド(4)を用いて生成された誤り検査値であって、変換方式Bでビット列が変換された誤り検査値(4B1)となる。制御コマンド(7)を送信する場合も上記と同様に、制御コマンド(7)に付加される誤り検査値は、誤り検査値(5B2)となる。
制御コマンド(8)を送信する場合、制御コマンド(8)は、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドであるため、変換方式は変換方式B→変換方式Aに変更され、シフト量Aも更新されている。よって、制御コマンド(8)に付加される誤り検査値は、制御コマンド(6)を用いて生成された誤り検査値であって、変換方式Aでビット列が変換された誤り検査値(6A1)となる。制御コマンド(9)を送信する場合も上記と同様に、制御コマンド(9)に付加される誤り検査値は、誤り検査値(7A1)となる。
制御コマンド(10)を送信する場合、制御コマンド(10)は、シフト量Aのリセット条件を満たす制御コマンドであるため、シフト量Aが再設定される。よって、制御コマンド(10)に付加される誤り検査値は、制御コマンド(8)を用いて生成された誤り検査値であって、変換方式Aでビット列が変換された誤り検査値(8A0)となる。制御コマンド(11)を送信する場合も上記と同様に、制御コマンド(11)に付加される誤り検査値は、誤り検査値(9A0)となる。以後、同様な処理を行いながら、誤り検査値が付加される。そして、誤り検査値付きの制御コマンドが送信部550にて中間制御部180へ送信されることとなる。
その後、主制御部110を構成する送信部550から送信された制御コマンド(P)は、中間制御部180を構成する受信部600にて受信される。
図8に、本実施形態に係る中間制御部180の認証処理に関する機能ブロックを示す。
中間制御部180は、認証処理に関する機能として、受信部600と、検査部610と、検査値生成部620と、付加部630と、中継送信部640と、を少なくとも有している。更に、検査値生成部620は、受信した制御コマンドを格納する格納部622と、誤り検査値を生成する生成部621と、生成した誤り検査値にビット列変換処理を施すビット列変換部624と、ビット列変換部624で用いる変換方式及びシフト量を制御する決定部623との機能を少なくとも有している。
受信部600は、主制御部110からの送信データに上記データ形式変換処理に対応する処理等を施して制御コマンド(P)とし、自身の受信バッファに記憶する機能を有するものである。また、受信部600は、制御コマンド(P)の受信割込要求があった旨を示す信号を出力したり、制御コマンド(P)の受信が完了したことを示すフラグを立てたりして、CPU180aが、主制御部110から送信された制御コマンド(P)の受信が完了したことを検知できるようにする機能を有するものである。
また、受信部600は、受信した誤り検査値付きの制御コマンド(P)から、付加された誤り検査値(P−N)を抽出して検査部610へ出力すると共に、誤り検査値(P−N)を抽出後の制御コマンド(P)を検査値生成部620へ出力する機能を有するものである。なお、受信部600の機能を実現する具体的な手段は、図4に示すCPU180aの一部、ROM180bの一部、RAM180cの一部、及びコマンド受信用入力ポート(図示せず)等から構成することができる。
検査値生成部620は、受信部600から出力された制御コマンド(P)を格納部622にて格納する機能を有するものである。また、検査値生成部620は、過去に格納部622にて格納しておいた制御コマンド(P−N)を用いて、予め設定された生成方式で生成部621にて誤り検査値(P−N)を生成する機能を有するものである。この機能で生成された誤り検査値は、受信した制御コマンド(P)の正当性を検証するために用いられる。また、検査値生成部620は、生成部621で生成した誤り検査値(P−N)に対して、決定部623で決定された変換方式でビット列変換部624にてビット列変換処理を施し、検査部610へ出力する機能を有するものである。また、検査値生成部620は、予め主制御部110との間で取り決められた複数の変換方式の中からビット列変換部624へ設定するべき特定の変換方式を決定部623にて決定する機能を有するものである。また、検査値生成部620は、予め主制御部110との間で取り決められた更新方式及び更新タイミング条件に従って、ビット列変換部624にて変換方式Aでビット列変換処理を施す際のシフト量Aを決定部623にて制御する機能を有するものである。また、検査値生成部620は、予め主制御部110との間で取り決められたシフト量Aに係るリセット条件に従って、シフト量Aの再設定を決定部623にて制御する機能を有するものである。
すなわち、検査値生成部620が有する、過去に格納しておいた制御コマンドを用いて誤り検査値を生成しビット列を変換して検査部610へ出力する機能(以下、「誤り検査値出力機能」という)は、主制御部110が有する誤り検査値付加機能と同様のものである。また、検査値生成部620は、主制御部110と同様に、誤り検査値出力機能を予め複数有しており、その具体的な実施態様として、主制御部110と同様の変更条件、シフト量Aに係る更新タイミング条件、及びシフト量Aに係るリセット条件が予め複数用意されている。そして、誤り検査値出力機能に対する選択情報も、主制御部110のHWパラメータと同様のものであり、ブート処理中に設定されたHWパラメータに応じて特定の変更条件、更新タイミング条件、及びリセット条件を、デフォルトの変更条件、更新タイミング条件、及びリセット条件として設定する機能を有するものである。そして、これら中間制御部180の誤り検査値出力機能及びその選択情報は、予め主制御部110と中間制御部180との間で取り決められている。
そして、決定部623が、受信部600から出力された制御コマンド(P)に基づいて変換方式を変更する機能においても、主制御部110の決定手段540が有する変換方式を変更する機能と同様のものである。すなわち、決定部623は、制御コマンドが変更条件を満たす制御コマンドであるか否かを判定する機能(主制御部110の判定回路541に相当)、及び、判定結果に応じて変換方式を決定し、決定した変換方式をビット列変換部624へ設定する機能(主制御部110の決定回路542に相当)を有している。また、決定部623は、ビット列変換部624へ設定する変換方式が変換方式Bから変換方式Aに変更される毎に、予め主制御部110との間で取り決められた更新方式及び更新タイミング条件に基づいてシフト量Aを更新し、シフト量Aを規則的に変動させる機能(主制御部110のシフト量制御部525c)を有している。また、決定部623は、制御コマンドがシフト量Aに係るリセット条件を満たす制御コマンドであるか否かを判定する機能(主制御部110のリセット判定回路526に相当)、及び、判定結果に応じてシフト量Aに所定の設定値を与えてシフト量Aを再設定する機能(主制御部110のシフト量制御部525cに相当)を有している。
決定部623が有するシフト量Aに係る更新方式は、主制御部110のシフト量制御部525cと同様に、変換方式Bでビット列変換処理が施された誤り検査値に基づいて規定されている。変換方式Bでビット列変換処理が施された当該誤り検査値は、ビット列変換部624から検査部610へ出力された複数の誤り検査値(P−N)のうち、受信部600から出力された誤り検査値と一致した誤り検査値(P−N)とする。また、決定部623が有するシフト量Aに係る複数の更新タイミング条件のうち、ブート処理中に設定されるHWパラメータに対応する更新タイミング条件は、主制御部110のシフト量制御部525cと同様に、所定の動作モードの期間中で、最初に制御コマンドに付加される誤り検査値に基づいて規定されているものとする。また、決定部623が有するシフト量Aに係る複数のリセット条件のうち、ブート処理中に設定されるHWパラメータに対応するリセット条件は、主制御部110のリセット判定回路526に対して設定されるリセット条件と同様のものとする。
そして、決定部623の機能を実現するために、RAM180cには、主制御部110の変更条件記憶領域(CC)に相当する記憶領域や、主制御部110の生成個数記憶領域(P)に相当する受信個数記憶領域(P)が設けられている。変換方式情報記憶領域(CM)、更新タイミング条件記憶領域(UT)、及びシフト量記憶領域(S)も同様である。
また、格納部622が、受信部600から出力された制御コマンド(P)を格納すると共に、過去に格納しておいた制御コマンド(P−N)を生成部621へ出力する機能も、主制御部110の格納回路522が有する機能と同様のものである。また、主制御部110又は中間制御部180が初期化され、格納部622に格納しておいた過去の制御コマンドがクリアされた場合には、CPU180aがROM180bから固有情報を読み出し、初期設定値として格納部622へ設定する格納する機能も、主制御部110と同様である。
また、生成部621が、格納部622から出力された制御コマンド(P−N)を用いて、予め設定された生成方式で誤り検査値(P−N)を生成し、ビット列変換部624へ出力する機能も、主制御部110の生成回路521が有する機能と同様のものである。
また、ビット列変換部624が、複数の変換方式(変換方式A及び変換方式B)を有すると共に、決定部623の変換方式制御によって特定の変換方式を設定し、生成部621から出力された誤り検査値(P−N)に対し、設定された変換方式でビット列変換処理を施し、検査部610へ出力する機能も、主制御部110のビット列変換回路525が有する機能と同様のものである。また、ビット列変換部624が、決定部623のシフト量制御によって、シフト量Aに所定の設定値を与えてシフト量Aを再設定する機能も、主制御部110のビット列変換回路525が有する機能と同様のものである。
なお、変換方式が変換方式Aである場合のシフト量Aは、予め主制御部110との間で取り決めた更新方式に従って規則的に変動する値である。この場合、ビット列変換部624は、当該更新方式に従って決定部623が定めたシフト量Aを用いて、誤り検査値(P−N)のビット列にビットローテート演算を行って、元の誤り検査値のビット列に戻し、検査部610へ出力する。また、変換方式が変換方式Bである場合のシフト量Bは、予め主制御部110との間で取り決められていないランダムに変動する値である。この場合、ビット列変換部624は、誤り検査値(P−N)のビット列に、当該ビット列のビット幅で規定されるローテート数の取り得る範囲の個数分だけビットローテート演算を行う。そして、ビット列変換部624は、ビット列が変換された、当該ローテート数の取り得る範囲の個数分の誤り検査値(P−N)を、検査部610へそれぞれ出力する。
決定部623、格納部622、生成部621、及びビット列変換部624の機能を実現する具体的な手段は、図4に示すCPU180aの一部、ROM180bの一部、RAM180cの一部等から構成することができる。
検査部610は、受信部600から出力された誤り検査値と、検査値生成部620のビット列変換部624から出力された誤り検査値とを照合する誤り検査処理を行う機能を有するものである。誤り検査処理では、受信部600から出力された誤り検査値と、ビット列変換部624から出力された誤り検査値とを比較し、両者が一致する場合は、検査結果は正常であると判断され、両者が一致しない場合は、検査結果は正常でないと判断される。
なお、変換方式Bがビット列変換部624に設定された際、検査部610には、ビット列変換部624からローテート数の取り得る範囲の個数分だけ誤り検査値が出力される。この場合、検査部610は、ビット列変換部624から出力された全ての誤り検査値を、受信部600から出力された誤り検査値と比較する。そして、検査部610は、ビット列変換部624から出力された何れかの誤り検査値が、受信部600から出力された誤り検査値と一致する場合は、検査結果は正常と判断し、何れの誤り検査値も、受信部600から出力された誤り検査値と一致しない場合は、検査結果は正常でないと判断される。
検査結果が正常と判断された場合、検査部610は、今回受信した誤り検査値(P−N)が付加された制御コマンド(P)、及び今回の誤り検査値(P−N)の生成元である制御コマンド(P−N)の正当性を認証し、主制御部110の正当性を認証することができたと判断する。そして、検査部610は、認証成功を示す認証結果データを生成し、付加部630へ出力する。
また、検査部610は、検査結果が正常と判断された場合、変換方式Bが設定されて、ビット列変換部624から検査部610へ出力された複数(ローテート数の取り得る範囲の個数)の誤り検査値(P−N)のうち、受信部600から出力された誤り検査値と一致した誤り検査値(P−N)を決定部623へ出力する。そして、決定部623は、シフト量Aを更新するタイミングであれば、当該一致した誤り検査値(P−N)に基づいてシフト量Aを更新する。
一方、検査結果が正常と判断されなかった場合は、検査部610は、不正行為や通信エラーなどが発生したため主制御部110の正当性を認証することができなかったと判断する。そして、検査部610は、認証不成功を示す認証結果データを生成し、付加部630へ出力する。なお、認証結果データのデータ形式は、特に限定されないが、受信した制御コマンドに付加された誤り検査値と同一のデータ長を有するデータ形式としておけばよい。また、検査部610の機能を実現する具体的な手段は、図4に示すCPU180aの一部、ROM180bの一部、RAM180cの一部等から構成することができる。
付加部630は、受信部600から出力された、誤り検査値(P−N)抽出後の制御コマンド(P)に、検査部610から出力された認証結果データを付加し、認証結果データ付きの制御コマンド(P)を生成する機能を有するものである。また、付加部630は、生成した認証結果データ付きの制御コマンド(P)を中継送信部640へ出力する機能を有するものである。なお、付加部630の機能を実現する具体的な手段は、図4に示すCPU180aの一部、ROM180bの一部、及びRAM180cの一部等から構成することができる。
中継送信部640は、付加部630から出力された認証結果データ付きの制御コマンド(P)を演出制御部120へ送信する機能を有するものである。中継送信部640が演出制御部120へ送信する認証結果データ付きの制御コマンド(P)は、受信部600にて受信した制御コマンド(P)と同一内容の演出処理を示すものである。すなわち、受信部600にて受信した制御コマンド(P)は、その具体的な処理内容及び受信順序が維持された状態で中継送信部640へ出力され、中継送信部640にて演出制御部120へ送信されることとなる。なお、中継送信部640の機能を実現する具体的な手段は、図4に示すCPU180aの一部、ROM180bの一部、RAM180cの一部、及びコマンド送信用出力ポート(図示せず)等から構成することができる。
中間制御部180は、生成した認証結果データを演出制御部120へ送信する際に、受信した制御コマンドに付加して演出制御部120へ送信する。すなわち、認証結果データは、認証結果データ単体では送信されず、他の送信データである制御コマンドと一体的に演出制御部120へ送信されることとなる。認証結果データと誤り検査値とを同一のデータ長を有するデータ形式としておけば、主制御部110から中間制御部180へ送信される送信データと、中間制御部180から演出制御部120へ送信される送信データとは同一のデータ長を有するデータ形式とすることができる。このようにすることで、不正者が、中間制御部180と演出制御部120の間の送信データを窃取して、認証結果データの演出制御部120への送信タイミングを不正に解析することが困難となり、遊技機1のセキュリティ強度を向上させることができる。
[制御コマンドの説明]
これより、本発明の実施形態に係る遊技機1の主制御部110から演出制御部120に対して送信される制御コマンドの種別について説明する。
図9は、本実施形態に係る遊技機1を構成する主制御部110から演出制御部120へ送信される制御コマンドの種別を示す図である。なお、図9に示された制御コマンドは一例であり、本発明に係る制御コマンドはこれに限定されるものではない。
主制御部110から中間制御部180を介して演出制御部120へ送信される制御コマンドは、1コマンドが2バイトのデータで構成されており、制御コマンドの分類を識別するための1バイトの「MODE」の情報と、各制御コマンドの詳細な制御内容を示す1バイトの「DATA」の情報とから構成されている。「MODE」の情報と「DATA」の情報は、上記のようにメインROM110bに予め記憶されている。
主制御部110では、制御コマンドの送信タイミングとなると、メインROM110bから読み出された「MODE」の情報と「DATA」の情報とによって制御コマンドが生成された後、メインRAM110cの送信データ用記憶領域にセットされる。送信データ用記憶領域にセットされた制御コマンドは、主制御部110のコマンド送信処理により、誤り検査値が付加され、誤り検査値付きの制御コマンドとして中間制御部180に送信され、中間制御部180の中継送信処理により、演出制御部120に送信されることになる。以下の説明において、それぞれの制御コマンドは、このようにして主制御部110から中間制御部180を介して演出制御部120に送信されるものとし、それぞれの制御コマンドがメインRAM110cの送信データ用記憶領域にセットされた後の処理については説明を省略する。また、以下の説明において、「制御コマンドを送信する」との表現には、制御コマンドに誤り検査値を付加して送信することが含まれ、「演出制御部120に送信する」との表現には、中間制御部180を介して演出制御部120に送信することが含まれるものとする。
「演出図柄指定コマンド」は、停止表示される特別図柄の種別を示すものであり、「MODE」の情報が「E0H」で設定され、特別図柄の種別に合わせて「DATA」の情報が設定されている。なお、特別図柄の種別が結果的に大当たりの種別や遊技状態を決定するものであるから、演出図柄指定コマンドは、大当たりの種別や、遊技状態を示すものともいえる。
この演出図柄指定コマンドは、各種の特別図柄が決定され、特別図柄の変動表示が開始されるときに、決定された特別図柄に対応する演出図柄指定コマンドが演出制御部120に送信される。具体的には、大当たりの抽選結果を判定し特別図柄各種の特別図柄が決定され特別図柄の変動表示が開始されるときに、決定された特別図柄に対応する演出図柄指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、演出図柄指定コマンド等と関連する大当たりの抽選に関する処理については後述する。
ここで、演出図柄指定コマンドのうち、「DATA」の情報が「00H」で設定される「ハズレ演出図柄指定コマンド」は、抽選結果がハズレの場合に、ハズレの結果を停止表示させるための制御コマンドである。すなわち、ハズレ演出図柄指定コマンド、抽選結果がハズレの場合に、主制御部110から演出制御部120に必ず送信される制御コマンドである。以下、ハズレ演出図柄指定コマンドを、ハズレの際の処理を実行させるコマンドとして、「ハズレコマンド」ともいう。
「第1特別図柄記憶指定コマンド」は、第1特別図柄保留数(U1)記憶領域に記憶されている保留記憶数を示すものであり、「MODE」の情報が「E1H」で設定され、保留記憶数に合わせて「DATA」の情報が設定されている。
この第1特別図柄記憶指定コマンドは、第1特別図柄保留数(U1)記憶領域に記憶されている保留記憶数が切り替わるときに、保留記憶数に対応する第1特別図柄記憶指定コマンドが演出制御部120に送信される。具体的には、第1始動口14への入球や大当たりの抽選結果の判定に際し第1特別図柄保留数(U1)記憶領域に記憶されている値が増減したときに、増減後の保留記憶数に対応する第1特別図柄記憶指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
「第2特別図柄記憶指定コマンド」は、第2特別図柄保留数(U2)記憶領域に記憶されている保留記憶数を示すものであり、「MODE」の情報が「E2H」で設定され、保留記憶数に合わせて「DATA」の情報が設定されている。
この第2特別図柄記憶指定コマンドは、第2特別図柄保留数(U2)記憶領域に記憶されている保留記憶数が切り替わるときに、保留記憶数に対応する第2特別図柄記憶指定コマンドが演出制御部120に送信される。具体的には、第2始動口15への入球や大当たりの抽選結果の判定に際し第2特別図柄保留数(U2)記憶領域に記憶されている値が増減したときに、増減後の保留記憶数に対応する第2特別図柄記憶指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、本実施形態では、「第1特別図柄記憶指定コマンド」と「第2特別図柄記憶指定コマンド」とをまとめて「特別図柄記憶指定コマンド」ともいう。
「図柄確定コマンド」は、特別図柄が停止表示されていることを示すものであり、「MODE」の情報が「E3H」で設定され、「DATA」の情報が「00H」に設定されている。
この図柄確定コマンドは、特別図柄が停止表示されているときに演出制御部120に送信される。具体的には、大当たりの抽選結果を判定し特別図柄の変動時間が経過した後に、特別図柄を第1特別図柄表示装置20又は第2特別図柄表示装置21に停止表示させるときに、図柄確定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
「電源投入時指定コマンド」は、遊技機1の電源が投入されたことを示すものであり、「MODE」の情報が「E4H」で設定され、「DATA」の情報が「00H」に設定されている。
この電源投入時指定コマンドは、遊技機1の電源が投入されたときに演出制御部120に送信される。遊技機1の電源が投入され主制御部110の初期化処理が行われる際に、電源遮断時(以下、「電断時」という)に生成したメインRAM110cのバックアップ情報が有効でない場合は、メインRAM110cの作業領域がクリアされ、新たに作業領域の設定が行われる。その後、電源投入時指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、電源投入時指定コマンド等と関連する初期化処理については後述する。
「RAMクリア指定コマンド」は、メインRAM110cに記憶された情報がクリアされたことを示すものであり、「MODE」の情報が「E4H」で設定され、「DATA」の情報が「01H」に設定されている。
遊技機1の裏側には図示しないRAMクリアボタンが設けられており、RAMクリアボタンを押下しながら遊技機1の電源を投入すると、主制御部110にシステムリセットが発生し初期化処理が行われる。そして、メインRAM110cの作業領域がクリアされ新たに作業領域の設定が行われ電源投入時指定コマンドを送信した後に、RAMクリア指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
「電源復旧指定コマンド」は、遊技機1の電源が投入されて、正常に復旧したことを示すものであり、「MODE」の情報が「E4H」で設定され、電断時の遊技状態別に合わせて「DATA」の情報が設定されている。
この電源復旧指定コマンドは、遊技機1の電源が投入されて、正常に復旧したときに演出制御部120に送信される。具体的には、遊技機1の電源が投入され初期化処理が行われる際に、電断時に生成したメインRAM110cのバックアップ情報が有効である場合は、バックアップ情報が示す遊技状態に応じた電源復旧指定コマンドを生成し、生成した電源復旧指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、電源投入時に、電源投入時指定コマンド、RAMクリア指定コマンド、電源復旧指定コマンドのいずれか少なくとも1つが主制御部110から演出制御部120へ送信される。すなわち、「MODE」の情報が「E4H」で設定される上記の制御コマンド群は、電源投入時の処理を実行させるコマンドである。以下、「MODE」の情報が「E4H」で設定される上記の制御コマンド群を、「電源投入コマンド」ともいう。
「デモ指定コマンド」は、第1特別図柄表示装置20又は第2特別図柄表示装置21が作動していないことを示すものであり、「MODE」の情報が「E5H」で設定され、「DATA」の情報が「00H」に設定されている。
このデモ指定コマンドは、第1特別図柄表示装置20又は第2特別図柄表示装置21の特別図柄の保留記憶がなく、遊技者による操作がない非遊技状態が所定の時間経過したときに、演出制御部120に送信される。具体的には、大当たりの抽選、特別電動役物、遊技状態の制御を行うに際し、第1特別図柄保留数(U1)記憶領域又は第2特別図柄保留数(U2)記憶領域のいずれの記憶領域にも1以上のデータがセットされていない状態が所定の時間継続したときに、デモ指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、デモ指定コマンドは、第1特別図柄表示装置20又は第2特別図柄表示装置21の特別図柄の保留記憶がないとき直ちに送信するようにしてもよい。この場合、演出制御部120は、デモ指定コマンドを受信した後、他の制御コマンドを所定時間受信しなかった場合、すなわち非遊技状態が所定時間経過した場合にデモ演出を実行する。
「第1特別図柄用変動パターン指定コマンド」は、第1特別図柄表示装置20における特別図柄の変動時間(変動態様)を示すものであり、「MODE」の情報が「E6H」で設定され、各種の変動パターンに合わせて「DATA」の情報が設定されている。
この第1特別図柄用変動パターン指定コマンドは、第1特別図柄表示装置20の特別図柄の変動表示が開始されるときに、決定された特別図柄の変動パターンに対応する第1特別図柄用変動パターン指定コマンドが演出制御部120に送信される。具体的には、大当たりの抽選結果を判定し特別図柄の変動パターンが決定され特別図柄の変動表示が開始されるときに、決定された特別図柄の変動パターンに対応する第1特別図柄用変動パターン指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
「第2特別図柄用変動パターン指定コマンド」は、第2特別図柄表示装置21における特別図柄の変動時間(変動態様)を示すものであり、「MODE」の情報が「E7H」で設定され、各種の変動パターンに合わせて「DATA」の情報が設定されている。
この第2特別図柄用変動パターン指定コマンドは、第2特別図柄表示装置21の特別図柄の変動表示が開始されるときに、決定された特別図柄の変動パターンに対応する第2特別図柄用変動パターン指定コマンドが演出制御部120に送信される。具体的には、大当たりの抽選結果を判定し特別図柄の変動パターンが決定され特別図柄の変動表示が開始されるときに、決定された特別図柄の変動パターンに対応する第2特別図柄用変動パターン指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、本実施形態では、「第1特別図柄用変動パターン指定コマンド」と「第2特別図柄用変動パターン指定コマンド」とをまとめて、「変動パターン指定コマンド」という。
ここで、変動パターン指定コマンドのうち、「DATA」の情報が「01H」、「02H」、「03H」、「04H」、「05H」で設定される制御コマンド群は、リーチ演出を実行させる制御コマンドである。以下、「MODE」の情報が「E6H」で設定され、且つ「DATA」の情報が「01H」〜「05H」で設定される制御コマンド群を、「リーチコマンド」ともいう。
「大入賞口開放指定コマンド」は、各種大当たりの種別に合わせた大当たりのラウンド数を示すものであり、「MODE」の情報が「EAH」で設定され、大当たりのラウンド数に合わせて「DATA」の情報が設定されている。
この大入賞口開放指定コマンドは、大当たりラウンドが開始されるときに、開始されたラウンド数に対応する大入賞口開放指定コマンドが演出制御部120に送信される。具体的には、大当たり遊技処理において第1大入賞口開閉扉16b(又は第2大入賞口開閉扉17b)を開放させるときに、開放させるときのラウンド数に対応する大入賞口開放指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、「MODE」の情報が「EAH」で設定されるコマンド群は、大当たり中の各ラウンドに対応する処理を実行させるコマンドである。以下、「MODE」の情報が「EAH」で設定されるコマンド群を、「大当たりコマンド」ともいう。
「オープニング指定コマンド」は、各種の大当たりが開始することを示すものであり、「MODE」の情報が「EBH」で設定され、大当たりの種別に合わせて「DATA」の情報が設定されている。
このオープニング指定コマンドは、各種の大当たりが開始するときに、大当たりの種別に対応するオープニング指定コマンドが演出制御部120に送信される。具体的には、大当たり遊技処理の開始のときに、大当たりの種別に対応するオープニング指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、「MODE」の情報が「EBH」で設定されるコマンド群は、大当たり状態の処理を開始させるコマンドである。以下、「MODE」の情報が「EBH」で設定されるコマンド群を、「大当たり開始コマンド」ともいう。
「エンディング指定コマンド」は、各種の大当たりが終了したことを示すものであり、「MODE」の情報が「ECH」で設定され、大当たりの種別に合わせて「DATA」の情報が設定されている。
このエンディング指定コマンドは、各種の大当たりが終了するときに、大当たりの種別に対応するエンディング指定コマンドが演出制御部120に送信される。具体的には、大当たり遊技終了処理の開始のときに、大当たりの種別に対応するエンディング指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
なお、「MODE」の情報が「ECH」で設定されるコマンド群は、大当たり状態の処理を終了させるコマンドである。以下、「MODE」の情報が「ECH」で設定されるコマンド群を、「大当たり終了コマンド」ともいう。
「遊技状態指定コマンド」は、遊技状態の内容を示すものであり、「MODE」の情報が「EDH」で設定され、遊技状態の内容に合わせて「DATA」の情報が設定されている。
この遊技状態指定コマンドは、特別図柄の変動開始及び変動終了時や大当り遊技の開始時及び終了時に、遊技状態に対応する遊技状態指定コマンドが演出制御部120に送信される。具体的には、特別図柄の変動表示が開始されるとき、特別図柄を停止表示させるとき、高確率遊技フラグ、高確率遊技回数、時短遊技フラグ及び時短回数(J)をクリアしたとき、高確率遊技フラグ、高確率遊技回数、時短遊技フラグ及び時短回数(J)の設定を行ったときに、現在の遊技状態に対応する遊技状態指定コマンドがメインRAM110cの送信データ用記憶領域にセットされる。
[主制御部の制御処理]
これより、本発明の実施形態に係る遊技機1の主制御部110の制御処理について説明する。まず、主制御部110のメイン処理について説明する。
図10は、本実施形態に係る主制御部110によるメイン処理を示すフローチャートである。
遊技機1に電源が投入され、電源部170により電源が供給されると、主制御部110にシステムリセットが発生し、メインCPU110aは、初期化処理(図10のステップS1〜ステップS17までの処理)及び乱数値更新処理(図10のステップS20及びステップS30の処理)を行う。
ステップS1において、メインCPU110aは、主制御部110の初期化処理の前提としてブート処理を行う。このブート処理において、メインCPU110aは、自身の自己診断処理や、内蔵回路や周辺回路等の初期化及び初期値の設定を行う。なお、ブート処理の詳細については後述する。
ステップS2において、メインCPU110aは、メインRAM110cへのアクセスを許可に設定する。
ステップS3において、メインCPU110aは、RAMクリアスイッチがオンとなっているか判定し、RAMクリアスイッチがオンと判定された場合、RAMクリアを行うためステップS10に処理を移す。一方、RAMクリアスイッチがオンと判定されなかった場合には、ステップS4に処理を移す。
ステップS4において、メインCPU110aは、電源投入時のメインRAM110cの所定の記憶領域におけるチェックサムを生成する。
ステップS5において、メインCPU110aは、生成したチェックサムと、電断時に生成したメインRAM110cの所定の記憶領域におけるチェックサムとを比較する。ここで、一致していれば正常と判定し、ステップS6に処理を移し、一致していなければエラーと判定し、ステップS10に処理を移す。
ステップS6において、メインCPU110aは、演出制御部120をはじめとした周辺制御部300や中間制御部180との間で、起動後の動作の開始タイミングを調整する。具体的には、周辺制御部300や中間制御部180がすべて起動し安定状態となってから演出処理等をほぼ同じタイミングで開始できるように、一定時間だけ待機する。
ステップS7において、メインCPU110aは、電断からの復旧に際して初期値を必要とするメインRAM110cの作業領域に初期値を設定し、バックアップが有効である場合のRAMの設定処理を行う。
ステップS8において、メインCPU110aは、電断時の遊技状態に復旧すべく、電断時に生成したメインRAM110cのバックアップ情報を読み込む。具体的には、バックアップされているメインRAM110cの遊技状態記憶領域から遊技状態の情報を読み込む。
ステップS9において、メインCPU110aは、読み込んだ遊技状態の情報に基づいて電源復旧指定コマンドを決定し、決定した電源復旧指定コマンドをメインRAM110cの送信データ用記憶領域にセットする。
ステップS10において、メインCPU110aは、上記ステップS6と同様に周辺制御部300や中間制御部180との間でのタイミング調整を行う。
ステップS11において、メインCPU110aは、メインRAM110cの使用領域をクリアする。
ステップS12において、メインCPU110aは、各種乱数値の初期値の設定をはじめとする、遊技機1の初期化に際して初期値を必要とするメインRAM110cの作業領域に初期値を設定し、バックアップが有効でない場合のメインRAM110cの設定処理を行う。
ステップS13において、メインCPU110aは、電源投入時指定コマンドを生成し、生成した電源投入時指定コマンドをメインRAM110cの送信データ用記憶領域にセットする。
ステップS14において、メインCPU110aは、送信データ用記憶領域にセットされている制御コマンドを中間制御部180に送信するコマンド送信処理を行う。すなわち、電源投入時指定コマンドを中間制御部180に送信する。なお、ステップS14及びステップS16のコマンド送信処理は、変換方式設定処理、検査値生成処理、ビット列変換処理、シフト量設定処理、及び検査値付加処理を伴う。更に、ステップS14及びステップS16のコマンド送信処理は、固有情報を格納回路522へ初期設定値として設定する処理を伴う。コマンド送信処理の詳細については後述する。
ステップS15において、メインCPU110aは、RAMクリア指定コマンドを生成し、生成したRAMクリア指定コマンドをメインRAM110cの送信データ用記憶領域にセットする。
ステップS16において、メインCPU110aは、メインRAM110cの送信データ用記憶領域にセットされている制御コマンドを中間制御部180に送信するコマンド送信処理を行う。すなわち、電源復旧指定コマンド又はRAMクリア指定コマンドのいずれかの制御コマンドを中間制御部180に送信する。
ステップS17において、メインCPU110aは、割込許可の設定をすると共に、タイマ割込プログラムの実行周期(α、例えば4ミリ秒)を設定する。
なお、ステップS14及びステップS16のコマンド送信処理は、ステップS17での割込許可後に行われるタイマ割込処理の中で行ってもよい。このとき、各制御コマンドの送信順番が前後しないよう予め取り決めておく。
ステップS20において、メインCPU110aは、特別図柄の変動態様(変動時間)を決定するためのリーチ判定用乱数値及び特図変動用乱数値を更新する演出用乱数値更新処理を行う。
ステップS30において、メインCPU110aは、特別図柄判定用初期乱数値、大当たり図柄用初期乱数値、小当たり図柄用初期値乱数値、普通図柄判定用初期乱数値を更新する初期乱数値更新処理を行う。その後、所定の割込処理が行われるまで、ステップS20とステップS30との処理を繰り返し行う。
次に、主制御部110の割込処理について説明する。
図11は、本実施形態に係る主制御部110による割込処理を示すフローチャートである。
メインCPU110aは、主制御部110に設けられたクロックパルス発生回路から出力されるクロック信号に基づいて、所定の周期(α)毎に、主制御部110のタイマ割込処理を実行する。
まず、ステップS100において、メインCPU110aは、メインCPU110aのレジスタに記憶されている情報をスタック領域に退避させる。
ステップS110において、メインCPU110aは、特別図柄時間カウンタの更新処理、特別電動役物の開放時間等などの特別遊技タイマカウンタの更新処理、普通図柄時間カウンタの更新処理、普電開放時間カウンタの更新処理等の各種タイマカウンタを更新する時間制御処理を行う。具体的には、特別図柄時間カウンタ、特別遊技タイマカウンタ、普通図柄時間カウンタ、普電開放時間カウンタから1を減算する処理を行う。
ステップS120において、メインCPU110aは、特別図柄判定用乱数値、大当たり図柄用乱数値、小当たり図柄用乱数値、普通図柄判定用乱数値の乱数更新処理を行う。
具体的には、それぞれの乱数値及び乱数カウンタに1を加算して更新する。なお、加算した乱数カウンタが乱数範囲の最大値を超えた場合(乱数カウンタが1周した場合)には、乱数カウンタを0に戻し、その時の初期乱数値からそれぞれの乱数値を新たに更新する。
ステップS130において、メインCPU110aは、ステップS30と同様に、特別図柄判定用初期乱数値、大当たり図柄用初期乱数値、小当たり図柄用初期値乱数値、普通図柄判定用初期乱数値を更新する初期乱数値更新処理を行う。
ステップS200において、メインCPU110aは、入力制御処理を行う。この処理において、メインCPU110aは、一般入賞口検出スイッチ12a、第1大入賞口検出スイッチ16a、第2大入賞口検出スイッチ17a、第1始動口検出スイッチ14a、第2始動口検出スイッチ15a、ゲート検出スイッチ13aの各スイッチに入力があったか否か判定する入力処理を行う。
具体的には、一般入賞口検出スイッチ12a、第1大入賞口検出スイッチ16a、第2大入賞口検出スイッチ17a、第1始動口検出スイッチ14a、第2始動口検出スイッチ15aからの各種検出信号を入力した場合には、ぞれぞれの入賞口毎に設けられた賞球のために用いる賞球カウンタに所定のデータを加算して更新する。
更に、第1始動口検出スイッチ14aから検出信号を入力した場合には、第1特別図柄保留数(U1)記憶領域にセットされているデータが4未満であれば、第1特別図柄保留数(U1)記憶領域に1を加算し、特別図柄判定用乱数値、大当たり図柄用乱数値、小当たり図柄用乱数値、リーチ判定用乱数値及び特図変動用乱数値を取得して、取得した各種乱数値を第1特別図柄乱数値記憶領域にある所定の記憶部(第0記憶部〜第4記憶部)に記憶する。
同様に、第2始動口検出スイッチ15aから検出信号を入力した場合には、第2特別図柄保留数(U2)記憶領域にセットされているデータが4未満であれば、第2特別図柄保留数(U2)記憶領域に1を加算し、特別図柄判定用乱数値、大当たり図柄用乱数値、小当たり図柄用乱数値、リーチ判定用乱数値及び特図変動用乱数値を取得して、取得した各種乱数値を第2特別図柄乱数値記憶領域にある所定の記憶部(第0記憶部〜第4記憶部)に記憶する。
また、ゲート検出スイッチ13aから検出信号を入力した場合には、普通図柄保留数(G)記憶領域にセットされているデータが4未満であれば、普通図柄保留数(G)記憶領域に1を加算し、普通図柄判定用乱数値を取得して、取得した普通図柄判定用乱数値を普通図柄保留記憶領域にある所定の記憶部(第0記憶部〜第4記憶部)に記憶する。
更に、第1大入賞口検出スイッチ16a又は第2大入賞口検出スイッチ17aからの検出信号を入力した場合には、第1大入賞口16又は第2大入賞口17に入賞した遊技球を計数するための大入賞口入球数(C)記憶領域に1を加算して更新する。
ステップS300において、メインCPU110aは、上記ステップS200での入力制御処理に基づいて、大当たりの抽選、特別電動役物、遊技状態の制御を行うための特別図柄・特別電動役物制御処理(以下、「特図特電制御処理」という)を行う。特図特電制御処理の詳細については、図12を用いて後述する。
ステップS400において、メインCPU110aは、普通図柄の抽選、普通電動役物の制御を行うための普通図柄・普通電動役物制御処理(以下、「普図普電制御処理」という)を行う。
具体的には、まず普通図柄保留数(G)記憶領域に1以上のデータがセットされているか否かを判定し、普通図柄保留数(G)記憶領域に1以上のデータがセットされていなければ、今回の普図普電制御処理を終了する。
普通図柄保留数(G)記憶領域に1以上のデータがセットされていれば、普通図柄保留数(G)記憶領域に記憶されている値から1を減算した後、普通図柄保留記憶領域にある第1記憶部〜第4記憶部に記憶された普通図柄判定用乱数値を1つ前の記憶部にシフトさせる。このとき、既に第0記憶部に書き込まれていた普通図柄判定用乱数値は上書きされて消去されることとなる。
そして、当たり判定テーブルを参照し、普通図柄保留記憶領域の第0記憶部に記憶された普通図柄判定用乱数値が「当たり」に対応する乱数値であるかどうかの判定する処理を行う。その後、普通図柄表示装置22において普通図柄の変動表示を行って、普通図柄の変動時間が経過すると普通図柄の抽選の結果に対応する普通図柄の停止表示を行う。そして、参照した普通図柄判定用乱数値が「当たり」のものであれば、始動口開閉ソレノイド15cを駆動させ、第2始動口15を所定の開放時間、第2の態様に制御する。
ここで、非時短遊技状態であれば、普通図柄の変動時間を29秒に設定し、「当たり」であると第2始動口15を0.2秒間、第2の態様に制御する。これに対して、時短遊技状態であれば、普通図柄の変動時間を3秒に設定し、「当たり」であると第2始動口15を3.5秒間、第2の態様に制御する。
ステップS500において、メインCPU110aは、払出制御処理を行う。この払出制御処理において、メインCPU110aは、ぞれぞれの賞球カウンタを参照し、各種入賞口に対応する払出個数指定コマンドを生成して、生成した払出個数指定コマンドを払出制御部130に送信する。
ステップS600において、メインCPU110aは、外部情報データ、始動口開閉ソレノイドデータ、第1大入賞口開閉ソレノイドデータ、第2大入賞口開閉ソレノイドデータ、特別図柄表示装置データ、普通図柄表示装置データ、記憶数指定コマンドのデータ作成処理を行う。
ステップS700において、メインCPU110aは、出力制御処理を行う。この処理において、ステップS600で作成した外部情報データ、始動口開閉ソレノイドデータ、第1大入賞口開閉ソレノイドデータ、第2大入賞口開閉ソレノイドデータの信号を出力させるポート出力処理を行う。
また、第1特別図柄表示装置20、第2特別図柄表示装置21及び普通図柄表示装置22の各LEDを点灯させるために、上記S600で作成した特別図柄表示装置データと普通図柄表示装置データとを出力する表示装置出力処理を行う。
ステップS710において、メインCPU110aは、メインRAM110cの送信データ用記憶領域にセットされている制御コマンドを中間制御部180へ送信するコマンド送信処理を行う。なお、ステップS710のコマンド送信処理においても、上記と同様に、変換方式設定処理、検査値生成処理、ビット列変換処理、シフト量設定処理、及び検査値付加処理を伴うが、詳細については後述する。
ステップS800において、メインCPU110aは、ステップS100で退避した情報をメインCPU110aのレジスタに復帰させる。
次に、主制御部110の特図特電制御処理を説明する。
図12は、本実施形態に係る主制御部110による特図特電制御処理を示すフローチャートである。
ステップS301において、メインCPU110aは、特図特電処理データの値を読み込む。この「特図特電処理データ」は、特図特電制御処理の各サブルーチンが記憶された記憶領域のアドレスにそれぞれ割り当てられた値であり、特図特電処理データを参照することで、どのサブルーチンを処理するかを識別することができる。そして、特図特電処理データは、後述するように特図特電制御処理の各サブルーチンの中で必要に応じてセットされていき、その遊技において必要なサブルーチンが適宜処理されていくことになる。
ステップS302において、メインCPU110aは、読み込んだ特図特電処理データから分岐アドレスを参照し、特図特電処理データ=0であれば特別図柄記憶判定処理(ステップS310)に処理を移し、特図特電処理データ=1であれば特別図柄変動処理(ステップS320)に処理を移し、特図特電処理データ=2であれば特別図柄停止処理(ステップS330)に処理を移し、特図特電処理データ=3であれば大当たり遊技処理(ステップS340)に処理を移し、特図特電処理データ=4であれば大当たり遊技終了処理(ステップS350)に処理を移し、特図特電処理データ=5であれば小当たり遊技処理(ステップS360)に処理を移す。
ステップS310の特別図柄記憶判定処理においては、メインCPU110aは、大当たり判定処理、停止表示する特別図柄の決定をする特別図柄決定処理、特別図柄の変動時間を決定する変動時間決定処理等を行う。ここで、図13を用いて、特別図柄記憶判定処理の具体的な内容を説明する。
図13は、本実施形態に係る主制御部110による特別図柄記憶判定処理におけるフローチャートである。
ステップS311において、メインCPU110aは、第1特別図柄保留数(U1)記憶領域又は第2特別図柄保留数(U2)記憶領域に1以上のデータがセットされているか否かを判定する。
そして、第1特別図柄保留数(U1)記憶領域又は第2特別図柄保留数(U2)記憶領域のいずれの記憶領域にも1以上のデータがセットされていなければ、特図特電処理データ=0を保持したまま、今回の特別図柄変動処理を終了する。
一方、第1特別図柄保留数(U1)記憶領域又は第2特別図柄保留数(U2)記憶領域に1以上のデータがセットされていれば、ステップS312に処理を移す。
ステップS312において、メインCPU110aは、大当たり判定処理を行う。
具体的には、第2特別図柄保留数(U2)記憶領域に1以上のデータがセットされている場合には、第2特別図柄保留数(U2)記憶領域に記憶されている値から1を減算した後、第2特別図柄乱数値記憶領域にある第1記憶部〜第4記憶部に記憶された各種乱数値を1つ前の記憶部にシフトさせる。このとき、既に第0記憶部に書き込まれていた各種乱数値は上書きされて消去されることとなる。そして、大当たり判定テーブルを参照して、第2特別図柄乱数値記憶領域の第0記憶部に記憶された特別図柄判定用乱数値が「大当たり」に対応する乱数値であるか、「小当たり」に対応する乱数値であるかの判定を行う。
また、第2特別図柄保留数(U2)記憶領域に1以上のデータがセットされておらず、第1特別図柄保留数(U1)記憶領域に1以上のデータがセットされている場合には、第1特別図柄保留数(U1)記憶領域に記憶されている値から1を減算した後、第1特別図柄乱数値記憶領域にある第1記憶部〜第4記憶部に記憶された各種乱数値を1つ前の記憶部にシフトさせる。このときにも、既に第0記憶部に書き込まれていた各種乱数値は上書きされて消去されることとなる。そして、大当たり判定テーブルを参照して、第1特別図柄乱数値記憶領域の第0記憶部に記憶された特別図柄判定用乱数値が「大当たり」に対応する乱数値であるか、「小当たり」に対応する乱数値であるかの判定を行う。
本実施形態では、第1特別図柄乱数値記憶領域よりも第2特別図柄乱数値記憶領域に記憶された乱数値が優先してシフト(消化)されることになる。しかしながら、始動口に入賞した順序で、第1特別図柄記憶領域又は第2特別図柄記憶領域をシフトさせてもよいし、第1特別図柄記憶領域を第2特別図柄記憶領域よりも優先させてシフトさせてもよい。
ステップS313において、メインCPU110aは、停止表示する特別図柄の種類を決定するための特別図柄決定処理を行う。
この特別図柄決定処理では、上記大当たり判定処理(ステップS312)において「大当たり」と判定された場合には、図柄決定テーブルを参照して、第1特別図柄乱数値記憶領域の第0記憶部に記憶された大当たり図柄用乱数値に基づいて大当たり図柄(特別図柄1〜特別図柄6)を決定する。また、上記大当たり判定処理(ステップS312)において「小当たり」と判定された場合には、図柄決定テーブルを参照して、第1特別図柄乱数値記憶領域の第0記憶部に記憶された小当たり図柄用乱数値に基づいて小当たり図柄(特別図柄A、特別図柄B)を決定する。また、上記大当たり判定処理(ステップS312)において「ハズレ」と判定された場合には、図柄決定テーブルを参照して、ハズレ図柄(特別図柄0)を決定する。
そして、決定した特別図柄に対応する停止図柄データを停止図柄データ記憶領域に記憶する。
ステップS314において、メインCPU110aは、特別図柄の変動時間決定処理を行う。
具体的には、変動パターン決定テーブルを参照して、第1特別図柄乱数値記憶領域の第0記憶部に記憶されたリーチ判定用乱数値及び特図変動用乱数値に基づいて、特別図柄の変動パターンを決定する。その後、決定した特別図柄の変動パターンに対応する特別図柄の変動時間を決定する。そして、決定した特別図柄の変動時間に対応するカウンタを特別図柄時間カウンタにセットする処理を行う。
ステップS315において、メインCPU110aは、第1特別図柄表示装置20又は第2特別図柄表示装置21に特別図柄の変動表示(LEDの点滅)を行わせるための変動表示データを所定の処理領域にセットする。これにより、所定の処理領域に変動表示データがセットされていると、上記ステップS600でLEDの点灯又は消灯のデータが適宜作成され、作成されたデータがステップS700において出力されることで、第1特別図柄表示装置20又は第2特別図柄表示装置21の変動表示が行われる。
更に、メインCPU110aは、特別図柄の変動表示が開始されるときに、上記ステップS314で決定された特別図柄の変動パターンに対応する特別図柄の変動パターン指定コマンド(第1特別図柄用変動パターン指定コマンド又は第2特別図柄用変動パターン指定コマンド)をメインRAM110cの送信データ用記憶領域にセットする。
ステップS316において、メインCPU110aは、特図特電処理データ=0から特図特電処理データ=1にセットして、特別図柄変動処理のサブルーチンに移す準備を行い、特別図柄記憶判定処理を終了する。
再び、図12に示す特図特電制御処理について説明を戻すことにする。
ステップS320の特別図柄変動処理においては、メインCPU110aは、特別図柄の変動時間が経過したか否かを判定する処理を行う。
具体的には、ステップS314で決定された特別図柄の変動時間が経過したか(特別図柄時間カウンタ=0)否かを判定し、特別図柄の変動時間が経過していないと判定した場合には、特図特電処理データ=1を保持したまま、今回の特別図柄変動処理を終了する。なお、上記ステップS314でセットされた特別図柄の変動時間のカウンタは、上記ステップS110において減算処理されていく。
特別図柄の変動時間が経過したと判定すれば、上記ステップS313で決定された特別図柄を第1特別図柄表示装置20又は第2特別図柄表示装置21に停止表示させる。これにより、第1特別図柄表示装置20又は第2特別図柄表示装置21に特別図柄が停止表示され、遊技者に大当たりの判定結果が報知されることとなる。
また、時短回数(J)>0のときには時短回数(J)カウンタから1を減算して更新し、時短回数(J)=0となれば、時短遊技フラグをクリアし、高確率遊技回数(X)>0のときには高確率遊技回数(X)カウンタから1を減算して更新し、高確率遊技回数(X)=0となれば、高確率遊技フラグをクリアする。
最後に、特図特電処理データ=1から特図特電処理データ=2にセットして、特別図柄停止処理のサブルーチンに移す準備を行い、特別図柄変動処理を終了する。
ステップS330の特別図柄停止処理においては、メインCPU110aは、停止表示された特別図柄が「大当たり図柄」であるか、「小当たり図柄」であるか、「ハズレ図柄」であるかを判定する処理を行う。
そして、大当たり図柄と判定された場合には、遊技状態記憶領域に記憶されているデータを参照し、現在の遊技状態を示すデータ(00H〜03H)を遊技状態バッファにセットする。その後に、遊技状態記憶領域(高確率遊技フラグ記憶領域等及び時短遊技フラグ記憶領域)に記憶されているデータ(高確率遊技フラグと時短遊技フラグ)、高確率遊技回数(X)カウンタ、時短回数(J)カウンタをクリアする。更に、特図特電処理データ=2から特図特電処理データ=3にセットして、大当たり遊技処理のサブルーチンに移す準備を行い、特別図柄停止処理を終了する。
また、小当たり図柄と判定された場合には、遊技状態記憶領域に記憶されているデータはクリアせずに、特図特電処理データ=2から特図特電処理データ=5にセットして、小当たり遊技処理のサブルーチンに移す準備を行い、特別図柄停止処理を終了する。
一方、ハズレ図柄と判定された場合には、特図特電処理データ=2から特図特電処理データ=0にセットして、特別図柄記憶判定処理のサブルーチンに移す準備を行い、特別図柄停止処理を終了する。
ステップS340の大当たり遊技処理においては、メインCPU110aは、上記長当たり又は短当たりのいずれの大当たりを実行させるかを決定し、決定した大当たりを制御する処理を行う。
具体的には、まず、特別電動役物作動態様決定テーブルを参照し、上記ステップS313で決定された大当たり図柄の種類(停止図柄データ)に基づいて、大当たりの開放態様を決定する。
次に、決定した大当たりの開放態様を実行させるために、大入賞口開放態様テーブルを参照し、大当たりの種類に応じた開放時間を特別遊技タイマカウンタにセットすると共に、第1大入賞口開閉ソレノイド16c(又は第2大入賞口開閉ソレノイド17c)の駆動データを出力して第1大入賞口開閉扉16b(又は第2大入賞口開閉扉17b)を開放させる。このとき、ラウンド遊技回数(R)記憶領域に1を加算する。
この開放中に規定個数の遊技球が入球するか、大入賞口の開放時間が経過すると(大入賞口入球数(C)=9又は特別遊技タイマカウンタ=0である)と、第1大入賞口開閉ソレノイド16c(又は第2大入賞口開閉ソレノイド17c)の駆動データの出力を停止して第1大入賞口開閉扉16b(又は第2大入賞口開閉扉17b)を閉鎖させる。これにより、1回のラウンド遊技が終了する。このラウンド遊技の制御を繰り返し15回行う。
15回のラウンド遊技が終了すると(ラウンド遊技回数(R)=15)、ラウンド遊技回数(R)記憶領域及び大入賞口入球数(C)記憶領域に記憶されているデータをクリアすると共に、特図特電処理データ=3から特図特電処理データ=4にセットして、大当たり遊技終了処理のサブルーチンに移す準備を行い、大当たり遊技処理を終了する。
ステップS350の大当たり遊技終了処理においては、メインCPU110aは、高確率遊技状態又は低確率遊技状態のいずれかの確率遊技状態を決定すると共に、時短遊技状態又は非時短遊技状態のいずれかの遊技状態を決定する処理を行う。
具体的には、大当たり遊技終了時設定データテーブルを参照し、遊技状態バッファに記憶されているデータと上記ステップS313で決定された大当たり図柄の種類(停止図柄データ)とに基づいて、高確率遊技フラグの設定、高確率遊技回数(X)の設定、時短遊技フラグの設定、時短回数(J)の設定を行う。例えば、特別図柄1であれば、高確率遊技フラグ記憶領域に高確率遊技フラグをセットし、高確率遊技回数(X)カウンタに10000回をセットする。更に、時短遊技フラグ記憶領域に時短遊技フラグをセットし、時短回数(J)カウンタにも10000回をセットする。
その後、特図特電処理データ=4から特図特電処理データ=0にセットして、特別図柄記憶判定処理のサブルーチンに移す準備を行い、大当たり遊技終了処理を終了する。
ステップS360の小当たり遊技処理においては、メインCPU110aは、まず、特別電動役物作動態様決定テーブルを参照し、上記ステップS313で決定された小当たり図柄の種類(停止図柄データ)に基づいて、小当たりの開放態様を決定する。
次に、決定した小当たりの開放態様を実行させるために、大入賞口開放態様テーブルを参照し、小当たりの開放時間を特別遊技タイマカウンタにセットすると共に、第2大入賞口開閉ソレノイド17cの駆動データを出力して第2大入賞口開閉扉17bを開放させる。このとき、開放回数(K)記憶領域に1を加算する。
小当たりの開放時間が経過する(特別遊技タイマカウンタ=0)と、第2大入賞口開閉ソレノイド17cの駆動データの出力を停止して第2大入賞口開閉扉17bを閉鎖させる。この第2大入賞口開閉扉17bの開閉制御を繰り返し15回行う。
そして、第2大入賞口開閉扉17bの開閉制御が15回行われるか、第2大入賞口17に規定個数の遊技球が入球する(開放回数(K)=15又は大入賞口入球数(C)=9である)と、小当たり遊技を終了させるため、第2大入賞口開閉ソレノイド17cの駆動データの出力を停止させ、開放回数(K)記憶領域及び大入賞口入球数(C)記憶領域に記憶されているデータをクリアすると共に、特図特電処理データ=5から特図特電処理データ=0にセットして、特別図柄記憶判定処理のサブルーチンに移す準備を行い、小当たり遊技処理を終了する。
[主制御部の認証処理に関する制御処理]
これより、本発明の実施形態に係る遊技機1の主制御部110の認証処理に関する制御処理について説明する。まず、主制御部110のブート処理について説明する。
遊技機1に電源が投入されると、主制御部110にシステムリセットが発生し、メインCPU110aは、ブートROM110dに予め記憶されたブート処理用プログラムに基づいて、主制御部110のブート処理を行う。
図14は、本実施形態に係る主制御部110によるブート処理を示すフローチャートである。
ステップS51において、メインCPU110aは、内部状態を割込禁止に設定する。
ステップS52において、メインCPU110aは、自身の初期化後、メインCPU110a自身が正常に作動可能かどうかを確認する自己診断処理を行う。自己診断処理の結果、正常に作動可能であればステップS53に処理を移し、正常に作動可能でなければ、その後の処理を行わない。
ステップS53において、メインCPU110aは、内蔵回路等への初期値設定処理を行う。具体的には、メインCPU110aは、スタックポインタにスタックポイント指定アドレスを設定し、内蔵レジスタの初期化を行うと共に、ワンチップマイコン110mの内蔵回路や周辺回路等の初期化、入出力ポートの初期化を行う。そして、メインCPU110aは、初期値を必要とするこれらの内蔵回路等へ各種の初期値を設定する。このとき、メインCPU110aは、検査値生成部500の各構成部に対しても同様の処理を施して、検査値生成部500に対する初期値設定処理を行う。
ステップS54において、メインCPU110aは、検査値生成部500に対してHWパラメータ設定処理を行う。具体的には、メインCPU110aは、検査値生成部500に対するHWパラメータを読み出すための読み出し信号をメインROM110bへ出力する。そして、メインCPU110aは、当該読み出し信号によりメインROM110bから出力されたHWパラメータを、バスを介して取り込む。
続いて、メインCPU110aは、取り込んだHWパラメータを検査値生成部500の決定手段540へ書き込むための書き込み信号、及び生成手段520へ書き込むための書き込み信号を出力する。そして、メインCPU110aは、当該書き込み信号によりメインCPU110aから出力されたHWパラメータを、バスを介して決定手段540の決定回路542並びに生成手段520のリセット判定回路526及びビット列変換回路525を担うシフト量制御部525cへセットする。なお、ステップS54のHWパラメータ設定処理は、メインCPU110aが行う初期値設定処理の中でも、検査値生成部500にHWパラメータを設定する処理を特筆したものであるため、初期値設定処理の一環として、ステップS53の中で行うように構成することも可能である。
ステップS55において、検査値生成部500は、変更条件設定処理を行う。具体的には、決定手段540の決定回路542は、セットされたHWパラメータが、予め用意された複数の変更条件のうち、どの変更条件に対応した値であるかを確認する。そして、決定回路542は、セットされたHWパラメータに対応する変更条件を、デフォルトの変更条件として変更条件記憶領域(CC)にセットする。そして、決定回路542は、変更条件記憶領域(CC)にセットされた変更条件を、決定手段540の判定回路541にセットする。
これによって、決定手段540は、ブート処理後のコマンド送信処理の際に、バッファ手段510から出力された制御コマンドが変更条件を満たす制御コマンドであるか否かの判定を行うことができ、判定結果に応じた変換方式設定処理を行うことができる。
ステップS56において、検査値生成部500は、更新タイミング条件設定処理を行う。具体的には、生成手段520のビット列変換回路525を担うシフト量制御部525cは、セットされたHWパラメータが、予め用意された複数の更新タイミング条件のうち、どの更新タイミング条件に対応した値であるかを確認する。そして、シフト量制御部525cは、セットされたHWパラメータに対応する更新タイミング条件を、デフォルトの条件として更新タイミング条件記憶領域(UT)にセットする。そして、シフト量制御部525cは、更新タイミング条件記憶領域(UT)にセットされた更新タイミング条件によって、シフト量Aを更新するものとする。
ステップS57において、検査値生成部500は、リセット条件設定処理を行う。具体的には、生成手段520のリセット判定回路526は、セットされたHWパラメータが、予め用意されたシフト量Aに係る複数のリセット条件のうち、どのリセット条件に対応した値であるかを確認する。そして、リセット判定回路526は、セットされたHWパラメータに対応するリセット条件を、デフォルトの条件としてリセット条件記憶領域(RC)にセットする。そして、リセット判定回路526は、リセット条件記憶領域(RC)にセットされたリセット条件によって、シフト量Aリセット信号を出力するものとする。
ステップS58において、検査値生成部500は、変換方式設定処理を行う。具体的には、決定手段540の決定回路542は、予め取り決められたデフォルトの変換方式である変換方式Aを示す変換方式情報を、デフォルトの値として変換方式情報記憶領域(CM)にセットする。そして、決定回路542は、変換方式情報記憶領域(CM)にセットされた値に基づいて、生成手段520のビット列変換回路525を担う複数のローテート演算器のうちのローテート演算器525aでビット列変換処理が施された誤り検査値が出力されるように、生成手段520の制御回路523へ変換方式制御信号を出力する。生成手段520の制御回路523は、当該変換方式制御信号に対応する入力選択信号を入力選択回路524へ出力する。
ステップS59において、検査値生成部500は、シフト量設定処理を行う。具体的には、生成手段520の制御回路523は、上記変換方式制御信号の入力に基づいて、ビット列変換回路525を担うシフト量制御部525cへシフト量設定制御信号を出力する。ビット列変換回路525を担うシフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、ビット列変換回路525を担うローテート演算器525aに対してシフト量A設定信号を出力し、シフト量記憶領域(S)に記憶されたデフォルトのシフト量Aをローテート演算器525aに設定する。また、シフト量制御部525cは、制御回路523から出力された当該シフト量設定制御信号の入力に基づいて、ビット列変換回路525を担うローテート演算器525bに対してシフト量B設定信号を出力し、シフト量記憶領域(S)に記憶されたデフォルトのシフト量Bをローテート演算器525bに設定する。
これによって、生成手段520は、ビット列変換処理の際に、変換方式情報記憶領域(CM)に記憶された変換方式情報に対応したローテート演算器によってビットローテート演算が行われた誤り検査値を付加手段530へ出力することができる。更に、当該誤り検査値を、シフト量記憶領域(S)に記憶されたシフト量を用いてビットローテート演算が行われて、ビット列が変換された誤り検査値とすることができる。そして、付加手段530は、検査値付加処理の際に、当該変換方式及び当該シフト量でビット列が変換された誤り検査値をバッファ手段510から出力された制御コマンドに付加することができる。本処理を終了すると、ブート処理が終了する。
次に、変換方式設定処理、検査値生成処理、ビット列変換処理、シフト量設定処理、及び検査値付加処理を含む主制御部110のコマンド送信処理について説明する。
図15は、本実施形態に係る主制御部110におけるコマンド送信処理を示すフローチャートである。
主制御部110のブート処理を含む初期化処理を行った後、コマンド送信処理の実行タイミングとなると、メインCPU110aは、メインRAM110cの送信データ用記憶領域にセットされた制御コマンド(P)を、検査値生成部500を介して送信部550へ出力し、中間制御部180へ送信させる。
ステップS71において、メインCPU110aは、メインRAM110cの生成個数記憶領域(P)の値を1加算して更新する。
ステップS72において、メインCPU110aは、送信データ用記憶領域にセットされた制御コマンド(P)が制御コマンド(1)に該当するか否かを判定する。具体的には、メインCPU110aは、生成個数記憶領域(P)の値を参照し、P=1であるか否かを判定する。P=1であれば、ステップS73に処理を移し、P=1でなければ、ステップS75に処理を移す。
ステップS73において、メインCPU110aは、メインROM110bに記憶されている固有情報を読み出す。そして、メインCPU110aは、読み出した固有情報を検査値生成部500へ出力する。
ステップS74において、検査値生成部500は、メインCPU110aから出力された固有情報を、生成手段520の格納回路522を担う各格納回路(P−1)〜(P−N)に格納し、初期設定値として設定する。具体的には、検査値生成部500のバッファ手段510は、メインCPU110aからバスを介して固有情報をデータバッファ511へ取り込み、生成手段520へ出力する。生成手段520は、データバッファ511から出力された固有情報を、格納回路522を担う各格納回路(P−1)〜(P−N)へ格納する。
ステップS75において、メインCPU110aは、送信データ用記憶領域にセットされた制御コマンド(P)を検査値生成部500のバッファ手段510へ書き込む。具体的には、メインCPU110aは、バッファ手段510へ制御コマンド(P)を書き込むための書き込み信号及びアドレスデータを出力すると共に、送信データ用記憶領域にセットされた制御コマンド(P)をデータバスへ出力する。バッファ手段510の制御回路512は、メインCPU110aから出力された書き込み信号の入力に基づいて、バッファ手段510のデータバッファ511へ作動許可信号を出力する。データバッファ511は、制御回路512から出力された作動許可信号の入力に基づいて、データバス上の制御コマンド(P)を取り込む。
ステップS76において、バッファ手段510は、取り込んだ制御コマンド(P)を、決定手段540、生成手段520、及び付加手段530へ出力する。具体的には、バッファ手段510の制御回路512は、メインCPU110aから出力された書き込み信号の入力から所定時間遅延して、データバッファ511へ作動許可信号を出力する。データバッファ511は、当該作動許可信号の入力に基づいて、取り込んだ制御コマンド(P)を決定手段540、生成手段520、及び付加手段530へ出力する。続いて、制御回路512は、データバッファ511から出力された制御コマンドが、決定手段540、生成手段520、及び付加手段530で入力可能となるよう、これらの手段に対して作動許可信号を出力する。
ステップS77において、決定手段540は、バッファ手段510から出力された作動許可信号の入力に基づいて、制御コマンド(P)を取り込み、当該制御コマンド(P)が変更条件を満たす制御コマンドであるか否かを判定する。具体的には、決定手段540の判定回路541は、当該制御コマンド(P)が、所定の制御コマンド群のうち最初に生成される制御コマンド、及び、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのいずれかに該当するか否かを判定する。判定回路541は、制御コマンド(P)が、当該いずれかに該当する制御コマンドであれば、バッファ手段510から出力された制御コマンドが変更条件を満たす制御コマンドであることを示す判定結果信号を決定回路542へ出力し、ステップS78に処理を移す。一方、判定回路541は、制御コマンド(P)が、当該いずれかに該当する制御コマンドでなければ、バッファ手段510から出力された制御コマンドが変更条件を満たす制御コマンドでないことを示す判定結果信号を決定回路542へ出力し、ステップS79に処理を移す。
ステップS78において、決定手段540は、誤り検査値のビット列を変換する際に用いる変換方式を変更する。具体的には、決定手段540の決定回路542は、変換方式を変更するべく、変換方式情報記憶領域(CM)に記憶された変換方式情報を示すCMの値を変更する。より具体的には、決定回路542は、変換方式情報を示すCMの値を予め取り決められた変更方式に従って変更し、変更後の変換方式情報を示すCMの値であるCM’を変換方式情報記憶領域(CM)へ記憶する。そして、決定回路542は、変更後の変換方式を生成手段520へ設定するべく、変換方式情報記憶領域(CM)に記憶された変更後のCM’の値に基づく変換方式制御信号を、生成手段520の制御回路523へ出力する。
生成手段520の制御回路523は、決定回路542から出力された変換方式制御信号に基づいて、生成手段520のビット列変換回路525を担う複数のローテート演算器のうちの特定のローテート演算器と生成手段520の入力選択回路524との接続のみを有効とする入力選択信号を、入力選択回路524へ出力する。入力選択回路524は、当該入力選択信号に基づいて、特定のローテート演算器との接続の設定を行う。生成手段520は、入力選択回路524へ当該入力選択信号が入力されることで、変更後の変換方式に応じた当該特定のローテート演算器でビット列が変換された誤り検査値が、入力選択回路524を介して付加手段530へ出力可能となる。また、生成手段520の制御回路523は、決定回路542から出力された当該変換方式制御信号の入力に基づいて、ビット列変換回路525を担うシフト量制御部525cへシフト量設定制御信号を出力する。これによって、シフト量制御部525cは、所定の動作モードの期間が開始又は終了したことを検知することができる。
ステップS79において、生成手段520は、バッファ手段510から出力された作動許可信号の入力に基づいて、制御コマンド(P)を取り込み、当該制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドであるか否かを判定する。具体的には、生成手段520のリセット判定回路526は、当該制御コマンド(P)が、所定の制御コマンド群以外の制御コマンドの中から予め定められた制御コマンドに該当するか否かを判定する。リセット判定回路526は、制御コマンド(P)が、当該予め定められた制御コマンドに該当すれば、シフト量Aリセット信号をビット列変換回路525へ出力し、ステップS80に処理を移す。一方、リセット判定回路526は、制御コマンド(P)が、当該予め定められた制御コマンドに該当しなければ、シフト量Aリセット信号を出力せずに、ステップS81に処理を移す。
ステップS80において、生成手段520は、シフト量Aを再設定する。具体的には、生成手段520のビット列変換回路525を担うシフト量制御部525cは、リセット判定回路526から出力されたシフト量Aリセット信号の入力に基づいて、シフト量記憶領域(S)に記憶されたシフト量Aに、予め用意された所定の設定値を上書きして記憶する。そして、シフト量制御部525cは、シフト量A設定信号をローテート演算器525aに出力し、シフト量記憶領域(S)に記憶された上書き後のシフト量Aをローテート演算器525aに設定する。ビット列変換回路525では、再設定後のシフト量Aを用いた変換方式Aでビット列変換処理が施された誤り検査値が、入力選択回路524を介して付加手段530へ出力可能となる。
ステップS81において、生成手段520は、バッファ手段510から出力された作動許可信号の入力に基づいて、制御コマンド(P)を取り込んで格納すると共に、過去に格納しておいた制御コマンド(P−N)を生成回路521へ出力する。具体的には、生成手段520の制御回路523は、バッファ手段510の制御回路512から出力された作動許可信号の入力に基づいて、格納回路522へシフト処理信号を出力する。格納回路522は、制御回路523から出力されたシフト処理信号の入力に基づいて、各格納回路(P−1)〜(P−N)のうち、最終段の格納回路(P−N)から、当該格納回路に格納しておいた制御コマンド(P−N)を、生成回路521へ出力する。これと共に、格納回路522は、格納回路(P−1)〜(P−N)に格納された各制御コマンドを次段へ順次シフトすると共に、バッファ手段510のデータバッファ511から出力された制御コマンド(P)を初段の格納回路(P−1)に新たに取り込んで格納する。
ステップS82において、生成回路521は、制御回路523から出力された作動許可信号の入力に基づいて、格納回路522から出力された制御コマンド(P−N)を取り込む。そして、生成回路521は、取り込んだ制御コマンド(P−N)を用いて、予め設定された生成方式で誤り検査値(P−N)を生成し、ビット列変換回路525へ出力する。
ステップS83において、ビット列変換回路525は、生成回路521から出力された誤り検査値(P−N)に対してビット列変換処理を施し、付加手段530へ出力する。具体的には、ビット列変換回路525を担うローテート演算器525aは、生成回路521から出力された誤り検査値(P−N)を取り込んで、取り込んだ誤り検査値(P−N)のビット列に予め設定されたシフト量Aでビットローテート演算を行う。そして、ローテート演算器525aは、シフト量Aでビットローテート演算が行われた誤り検査値(P−N)を、変換方式Aでビット列変換処理が施された誤り検査値(P−N)として、入力選択回路524へ出力する。また、ビット列変換回路525のローテート演算器525bは、生成回路521から出力された誤り検査値(P−N)を取り込んで、取り込んだ誤り検査値(P−N)のビット列に予め設定されたシフト量Bでビットローテート演算を行う。そして、ローテート演算器525bは、シフト量Bでビットローテート演算が行われた誤り検査値(P−N)を、変換方式Bでビット列変換処理が施された誤り検査値(P−N)として、入力選択回路524及びシフト量制御部525cへ出力する。
入力選択回路524は、制御回路523から出力された入力選択信号に基づいて、ローテート演算器525a、525bのいずれかとの接続のみを有効に作動させている。よって、ビット列変換回路525は、入力選択回路524との接続が有効に作動された特定のローテート演算器から出力された誤り検査値のみを、ビット列が変換された誤り検査値(P−N)として付加手段530へ出力する。
ステップS84において、ビット列変換回路525を担うシフト量制御部525cは、現在がシフト量を更新するタイミングであるか否かを判断する。具体的には、シフト量制御部525cは、制御回路523から出力されたシフト量設定制御信号の入力に基づいて、所定の動作モードの期間の開始又は終了を検知し、現在が所定の動作モードの期間中であるか否かを判断する。
そして、シフト量制御部525cは、現在が所定の動作モードの期間が開始した時点であれば、現在はシフト量A及びシフト量Bを更新するタイミングであると判断し、ステップS85に処理を移す。また、シフト量制御部525cは、現在が所定の動作モードの期間中の時点であれば、現在はシフト量Bのみを更新するタイミングであると判断し、ステップS85に処理を移す。また、シフト量制御部525cは、現在が所定の動作モードの期間が終了した時点であれば、現在はシフト量Bの更新を中止するタイミングであると判断し、ステップS85に処理を移す。一方、シフト量制御部525cは、現在が所定の動作モードの期間が開始又は終了した時点、若しくは現在が所定の動作モードの期間中の時点でなければ、現在はシフト量を更新するタイミングではないと判断し、ステップS86に処理を移す。
ステップS85において、ビット列変換回路525を担うシフト量制御部525cは、シフト量の制御を行う。具体的には、シフト量制御部525cは、現在が所定の動作モードの期間が開始した時点であれば、シフト量A及びシフト量Bを更新する。すなわち、シフト量制御部525cは、シフト量Aに係るシフト量設定処理として、ローテート演算器525bから出力された誤り検査値に基づいて、シフト量記憶領域(S)に記憶されたシフト量Aの値を、シフト量Aに係る所定の更新方式に従って更新する。そして、シフト量制御部525cは、シフト量A設定信号をローテート演算器525aに出力し、シフト量記憶領域(S)に記憶された更新後のシフト量Aをローテート演算器525aに設定する。また、シフト量制御部525cは、シフト量Bに係るシフト量設定処理として、乱数値を取得し、これを用いてシフト量記憶領域(S)に記憶されたシフト量Bの値を更新する。そして、シフト量制御部525cは、シフト量B設定信号をローテート演算器525bに出力し、シフト量記憶領域(S)に記憶された更新後のシフト量Bをローテート演算器525bに設定する。
また、シフト量制御部525cは、現在が所定の動作モードの期間中の時点であれば、シフト量Bのみを更新する。すなわち、シフト量制御部525cは、シフト量Bに係るシフト量設定処理として、乱数値を取得してシフト量記憶領域(S)に記憶されたシフト量Bの値を更新し、シフト量B設定信号を出力して更新後のシフト量Bをローテート演算器525bに設定する。また、シフト量制御部525cは、現在が所定の動作モードの期間が終了した時点であれば、シフト量Bの更新を行わずに、ローテート演算器525bから出力された誤り検査値を破棄する。
ステップS86において、付加手段530は、バッファ手段510から出力された作動許可信号の入力に基づいて、制御コマンド(P)及び誤り検査値(P−N)を取り込む。そして、付加手段530は、取り込んだ制御コマンド(P)及び誤り検査値(P−N)を送信部550へ書き込む。具体的には、付加手段530の入力選択回路531は、バッファ手段510のデータバッファ511から出力された制御コマンド(P)を取り込み、取り込んだ制御コマンド(P)をデータバスへ出力する。また、付加手段530の制御回路532は、バッファ手段510の制御回路512から出力された作動許可信号の入力に基づいて、送信部550の送信バッファ551へ制御コマンド(P)を書き込むための書き込み信号及びアドレスデータを出力する。
また、制御回路532は、当該書き込み信号の出力から所定時間遅延して、入力選択回路531へ入力選択信号を出力する。入力選択回路531は、制御回路532から出力された入力選択信号の入力に基づいて、接続元をデータバッファ511から生成手段520の入力選択回路524へ切り替える。そして、入力選択回路531は、生成手段520のビット列変換回路525から入力選択回路524を介して出力された誤り検査値(P−N)を取り込み、取り込んだ誤り検査値(P−N)をデータバスへ出力する。また、制御回路532は、入力選択信号を出力して入力選択回路531から誤り検査値(P−N)がデータバス上へ出力されると、送信バッファ551へ誤り検査値(P−N)を書き込むための書き込み信号及びアドレスデータを直ちに出力する。
ステップS87において、送信部550は、付加手段530から出力された制御コマンド(P)及び誤り検査値(P−N)を中間制御部180へ直ちに送信する。具体的には、送信部550の送信バッファ551は、付加手段530から出力された制御コマンド(P)の書き込み信号の入力に基づいて、データバス上の制御コマンド(P)を取り込み、取り込んだ制御コマンド(P)を直ちに送信回路552へ出力する。また、送信バッファ551は、付加手段530から出力された誤り検査値(P−N)の書き込み信号の入力に基づいて、データバス上の誤り検査値(P−N)を取り込み、取り込んだ誤り検査値(P−N)を送信回路552へ直ちに出力する。送信回路552は、送信バッファ551から出力された制御コマンド(P)及び誤り検査値(P−N)を一連の送信データとして、中間制御部180へ直ちに送信する。よって、制御コマンド(P)は、誤り検査値(P−N)が付加された制御コマンドとして中間制御部180へ送信されることになる。
なお、ステップS81の処理は、ステップS76からステップS82までの間に行われていればよく、ステップS80の直後に行われる必要はない。また、ステップS79及びステップS80の処理は、ステップS76からステップS83までの間に行われていればよく、ステップS78の直後に行われる必要はない。
また、ステップS86において、制御回路532が、入力選択回路531に対して入力選択信号を出力するタイミングは、入力選択回路531から出力された制御コマンド(P)が送信バッファ551へ書き込みが完了されるまでに要する時間が経過した後に、誤り検査値(P−N)の送信バッファ551への書き込みが開始されるようなタイミングに設定する。これによって、誤り検査値(P−N)が送信バッファ551へ書き込まれるタイミングは、送信バッファ551に書き込まれる制御コマンド(P)の直後に連続して誤り検査値(P−N)が書き込まれるようなタイミングとなる。
誤り検査値の書き込みタイミングを上記のように設定することで、送信バッファ551のオーバーランやアンダーラン等が発生し、今回送信する制御コマンド(P)に対して付加するべき誤り検査値(P−N)が適切に付加されなくなる虞れを抑止することができる。このことが、中間制御部180での誤り検査処理の際に、実際に付加されて送信された誤り検査値が本来付加するべき誤り検査値と整合していないことに起因して誤り検査処理の検査結果が正常と判定されなくなる虞れを抑止し、誤り検査処理の確度を向上することにつながる。
また、誤り検査値の書き込みタイミングを上記のように設定することで、今回付加するべき誤り検査値(P−N)の送信バッファ551への書き込みタイミングと、制御コマンド(P)の送信バッファ551への書き込みタイミングの時間軸上の位置関係が明確化され、誤り検査値(P−N)は制御コマンド(P)の直後に確実に付加され、一つの送信データとして送信されることとなる。これにより、誤り検査値(P−N)が、誤り検査値(P−N)単体で中間制御部180へ送信されることがない。よって、不正者が、主制御部110と中間制御部180の間の送信データを窃取して、誤り検査値(P−N)を不正に解析し再利用することが困難となり、遊技機1のセキュリティ強度を向上することができる。
[中間制御部の制御処理]
これより、本発明の実施形態に係る遊技機1の中間制御部180の制御処理について説明する。
図16は、本実施形態に係る中間制御部180によるメイン処理を示すフローチャートである。
ステップS4010において、CPU180aは、初期化処理を行う。この処理において、CPU180aは、電源投入に応じて、ROM180bからメイン処理に関するプログラムコードを読み込む。これと共に、CPU180aは、RAM180cに記憶されるフラグなどを初期化し、設定値を設定する処理を行う。
なお、ステップS4010の中で、主制御部110の誤り検査値付加機能に対応した誤り検査値出力機能を、検査値生成部620へ設定する処理が行われる。すなわち、CPU180aは、主制御部110にてブート処理中に実行されるHWパラメータ設定処理、変更条件設定処理、変更タイミング条件設定処理、リセット条件設定処理、変換方式設定処理、及びシフト量設定処理と同様の処理を行う。その際、CPU180aは、決定部623でデフォルトの変換方式、シフト量Aに係る更新タイミング条件、及びシフト量Aに係るリセット条件を決定し、決定した変換方式、更新タイミング条件、及びリセット条件に応じてビット列変換部624の設定を行う。この処理が終了した場合には、ステップS4020へ処理を移す。
ステップS4020において、CPU180aは、主制御部110から送信された制御コマンドを受信したか否かを判定する。
中間制御部180の受信部600では、主制御部110から送信された制御コマンドを受信し、自身の受信バッファに記憶すると、主制御部110から制御コマンドの受信割込要求があった旨を示す信号を出力し、制御コマンドの受信割込処理を発生させる。
そして、CPU180aは、ステップS4020において、受信部600からの上記受信割込要求信号が入力されるまで待機し、受信部600からの上記信号が入力されると、受信バッファに記憶されている制御コマンドに対して誤り検査処理を行う。具体的には、次のステップS4030からステップS4210の処理である。
ステップS4030において、CPU180aは、制御コマンドの受信割込要求があった旨を示す信号が受信部600から出力されると、RAM180cの受信個数記憶領域(P)の値を更新する。
ステップS4040において、CPU180aは、受信部600の受信バッファに記憶された制御コマンド(P)が制御コマンド(1)に該当するか否かを判定する。具体的には、CPU180aは、受信個数記憶領域(P)の値を参照し、P=1であるか否かを判定する。P=1であれば、ステップS4050に処理を移し、P=1でなければ、ステップS4070に処理を移す。
ステップS4050において、CPU180aは、ROM180bに記憶されている固有情報を読み出す。そして、CPU180aは、読み出した固有情報を検査値生成部620へ出力する。
ステップS4060において、CPU180aは、検査値生成部620へ出力された固有情報を検査値生成部620内の格納部622にて格納し、初期設定値として設定する。
ステップS4070において、CPU180aは、受信部600の受信バッファに記憶された制御コマンド(P)から、当該制御コマンド(P)に付加された誤り検査値(P−N)を抽出する。
ステップS4080において、CPU180aは、抽出した誤り検査値(P−N)を検査部610へ出力すると共に、誤り検査値(P−N)を抽出後の制御コマンド(P)を検査値生成部620の格納部622及び決定部623、並びに付加部630へ出力する。
ステップS4090において、CPU180aは、受信部600から出力された制御コマンド(P)を取り込み、当該制御コマンド(P)が変更条件を満たす制御コマンドか否かを決定部623にて判定する。具体的には、CPU180aは、当該制御コマンド(P)が、所定の制御コマンド群のうち最初に生成される制御コマンド、及び、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのいずれかに該当するか否かを判定する。CPU180aは、制御コマンド(P)が、当該いずれかに該当する制御コマンドであれば、抽出後の制御コマンド(P)が変更条件を満たす制御コマンドであると判断し、ステップS4100に処理を移す。一方、CPU180aは、制御コマンド(P)が、当該いずれかに該当する制御コマンドでなければ、抽出後の制御コマンド(P)が変更条件を満たす制御コマンドでないと判断し、ステップS4110に処理を移す。
ステップS4100において、CPU180aは、変換方式を変更し、変更後の変換方式をビット列変換部624へ設定する。具体的には、CPU180aは、変換方式情報記憶領域(CM)に記憶された変換方式情報を、予め取り決められた変更方式に従って変更し、変更後の変換方式情報を変換方式情報記憶領域(CM)へ記憶する。そして、CPU180aは、変換方式情報記憶領域(CM)に記憶された変更後の変換方式情報に対応する変換方式を、決定部623にてビット列変換部624へ設定する。ビット列変換部624では、変更後の変換方式でビット列変換処理が施された誤り検査値が、検査部610へ出力可能となる。
ステップS4110において、CPU180aは、受信部600から出力された制御コマンド(P)を取り込み、当該制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドか否かを決定部623にて判定する。具体的には、CPU180aは、当該制御コマンド(P)が、所定の制御コマンド群以外の制御コマンドの中から予め定められた制御コマンドに該当するか否かを判定する。CPU180aは、制御コマンド(P)が、当該予め定められた制御コマンドに該当すれば、抽出後の制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドであると判断し、ステップS4120に処理を移す。一方、CPU180aは、制御コマンド(P)が、当該予め定められた制御コマンドに該当しなければ、抽出後の制御コマンド(P)がシフト量Aに係るリセット条件を満たす制御コマンドでないと判断し、ステップS4130に処理を移す。
ステップS4120において、CPU180aは、シフト量Aを再設定する。具体的には、CPU180aは、シフト量記憶領域(S)に記憶されたシフト量Aに、予め用意された所定の設定値を上書きして記憶する。そして、CPU180aは、シフト量記憶領域(S)に記憶された上書き後のシフト量Aを、決定部623にてビット列変換部624へ設定する。ビット列変換部624では、再設定後のシフト量Aを用いた変換方式Aでビット列変換処理が施された誤り検査値が、検査部610へ出力可能となる。
ステップS4130において、CPU120aは、受信部600から出力された制御コマンド(P)を格納部622にて格納すると共に、過去に格納しておいた制御コマンド(P−N)を格納部622から生成部621へ出力する。
ステップS4140において、CPU180aは、格納部622にて出力された制御コマンド(P−N)を用いて、予め設定された生成方式で誤り検査値(P−N)を生成部621にて生成し、ビット列変換部624へ出力する。
ステップS4150において、CPU180aは、生成部621にて生成された誤り検査値(P−N)に対してビット列変換部624にてビット列変換処理を施し、検査部610へ出力する。具体的には、CPU180aは、決定部623にて設定された変換方式が変換方式Aであれば、誤り検査値(P−N)のビット列に対して、予め設定されたシフト量Aで、ビット列変換部624にてビットローテート演算を行う。そして、CPU180aは、得られた演算結果である元のビット列に戻った誤り検査値(P−N)を、検査部610へ出力する。
また、CPU180aは、決定部623にて設定された変換方式が変換方式Bであれば、誤り検査値(P−N)のビット列に対して、当該誤り検査値(P−N)のビット列のビット幅で規定されるローテート数の取り得る範囲の個数分だけ、ビット列変換部624にてビットローテート演算を行う。そして、CPU180aは、ビット列が変換された、当該ローテート数の取り得る範囲の個数分の誤り検査値(P−N)を、それぞれ検査部610へ出力する。
ステップS4160において、CPU180aは、受信部600から出力された誤り検査値(P−N)と、ビット列変換部624から出力された誤り検査値(P−N)とを検査部610にて比較して照合する。CPU180aは、両者が一致する場合は、誤り検査の検査結果は正常であると判断する。一方、CPU180aは、両者が一致しない場合は、検査結果は正常でないと判断する。
なお、CPU180aは、変換方式Bが設定されて、ローテート数の取り得る範囲の個数分だけ誤り検査値(P−N)がビット列変換部624から出力された場合は、出力された全ての誤り検査値(P−N)を、受信部600から出力された誤り検査値と比較して照合する。このとき、CPU180aは、ビット列変換部624から出力された何れかの誤り検査値(P−N)が、受信部600から出力された誤り検査値と一致する場合は、検査結果は正常と判断し、何れの誤り検査値(P−N)も、受信部600から出力された誤り検査値と一致しない場合は、検査結果は正常でないと判断する。
ステップS4170において、CPU180aは、検査結果が正常であったか否かを検査部610にて判断する。CPU180aは、検査結果が正常であったと判断された場合は、今回受信した誤り検査値(P−N)が付加された制御コマンド(P)、及び今回の誤り検査値(P−N)の生成元であるN個前の制御コマンド(P−N)の正当性を認証することができたことにより、主制御部110の正当性が認証されたと判断する。そして、CPU180aは、遊技機1は正常に稼働していると判断し、ステップS4180に処理を移す。一方、CPU180aは、検査結果が正常でないと判断された場合は、主制御部110の正当性を認証することができなかったと判断する。そして、CPU180aは、遊技機1で不正行為等が発生した虞れがあると判断し、ステップS4190に処理を移す。
ステップS4180において、CPU180aは、認証成功を示す認証結果データを検査部610にて生成し、生成した認証結果データを付加部630へ出力し、ステップS4200に処理を移す。
ステップS4190において、CPU180aは、認証不成功を示す認証結果データを検査部610にて生成し、生成した認証結果データを付加部630へ出力し、ステップS4220に処理を移す。
ステップS4200において、CPU180aは、現在がシフト量を更新するタイミングであるか否かを決定部623にて判断する。具体的には、CPU180aは、現在が所定の動作モードの期間が開始した時点であれば、現在はシフト量Aを更新するタイミングであると決定部623にて判断し、ステップS4210に処理を移す。また、CPU180aは、現在が所定の動作モードの期間が開始した時点でなければ、現在はシフト量Aを更新するタイミングでないと決定部623にて判断し、ステップS4220に処理を移す。
ステップS4210において、CPU180aは、シフト量の制御を行う。具体的には、CPU180aは、現在が所定の動作モードの期間が開始した時点であれば、変換方式Bが設定されて、ビット列変換部624から検査部610へ出力された複数(ローテート数の取り得る範囲の個数)の誤り検査値(P−N)のうち、受信部600から出力された誤り検査値と一致した誤り検査値(P−N)を決定部623へ出力する。そして、CPU180aは、当該誤り検査値に基づいて、シフト量Aを所定の更新方式に従って更新し、ステップS4220に処理を移す。
ステップS4220において、CPU180aは、受信部600にて出力された制御コマンド(P)に対し、検査部610にて出力された認証結果データを付加部630にて付加し、認証結果データ付きの制御コマンド(P)を中継送信部640へ出力し、ステップS4230に処理を移す。
ステップS4230において、CPU180aは、認証結果データ付きの制御コマンド(P)を送信データとして中継送信部640にて演出制御部120へ直ちに送信する。その後、所定の割込処理があるまで、ステップS4020以降の処理を繰り返す。
なお、ステップS4130の処理は、ステップS4080からステップS4140までの間に行われていればよく、ステップS4120の直後に行われる必要はない。また、ステップS4110及びステップS4120の処理は、ステップS4080からステップS4150までの間に行われていればよく、ステップS4100の直後に行われる必要はない。また、ステップS4200及びステップS4210の処理は、ステップS4160より後に行われていればよく、ステップS4180の直後に行われる必要はない。また、ステップS4190の処理の後、ステップS4220に処理を移すのではなく、ステップS4200に処理を移してもよい。
[演出制御部の制御処理]
これより、本発明の実施形態に係る遊技機1の演出制御部120の制御処理について説明する。まず、演出制御部120のメイン処理について説明する。
図17は、本実施形態に係る演出制御部120によるメイン処理を示すフローチャートである。
ステップS1000において、サブCPU120aは、初期化処理を行う。この処理において、サブCPU120aは、電源投入に応じて、サブROM120bからメイン処理に関するプログラムコードを読み込む。これと共に、サブCPU120aは、サブRAM120cに記憶されるフラグなどを初期化し、設定値を設定する処理を行う。この処理が終了した場合には、ステップS1100に処理を移す。
ステップS1100において、サブCPU120aは、演出用乱数更新処理を行う。この処理において、サブCPU120aは、サブRAM120cに記憶される演出用乱数値、演出図柄決定用乱数、演出モード決定用乱数等を更新する処理を行う。以降は、所定の割込処理が行われるまで、上記ステップS1100の処理を繰り返し行う。
次に、演出制御部120の割込処理について説明する。
図18は、本実施形態に係る演出制御部120による割込処理を示すフローチャートである。
サブCPU120aは、演出制御部120に設けられたクロックパルス発生回路(図示せず)から出力されるクロック信号に基づいて、所定の周期(例えば2ミリ秒)毎に、演出制御部120のタイマ割込処理を実行する。
ステップS1200において、サブCPU120aは、サブCPU120aのレジスタに記憶されている情報をスタック領域に退避させる。
ステップS1300において、サブCPU120aは、演出制御部120で用いられる各種タイマカウンタの更新処理を行う。
ステップS1500において、サブCPU120aは、コマンド解析処理を行う。この処理において、サブCPU120aは、サブRAM120cの受信データ用記憶領域に記憶された制御コマンドの種別を解析する処理を行う。
演出制御部120の受信部(図示せず)では、中間制御部180から送信された制御コマンドを受信し、自身の受信バッファに記憶すると、中間制御部180から制御コマンドの受信割込要求があった旨を示す信号を出力し、制御コマンドの受信割込処理を発生させる。
そして、サブCPU120aは、受信した制御コマンドに付加された認証結果データの内容を解析する認証結果データ解析処理を行う。サブCPU120aは、認証結果データ解析処理において、中間制御部180によって制御コマンドの正当性が認証されたことが確認できると、当該制御コマンドを受信バッファからサブRAM120cの受信データ用記憶領域へ取り込んで記憶する。そして、サブCPU120aは、受信データ用記憶領域に記憶された制御コマンドの種別を解析し、制御コマンドの種別に応じた処理を行う。なお、コマンド解析処理の詳細については後述する。
ステップS1700において、サブCPU120aは、演出ボタン検出スイッチ35aの信号のチェックを行い、演出ボタン35からの入力に関する演出用入力制御処理を行う。
ステップS1800において、サブCPU120aは、サブRAM120cの送信データ用記憶領域にセットされた制御コマンドや各種データを、ランプ制御部140や画像制御部150へ送信するための処理である演出用出力制御処理を行う。
ステップS1900において、サブCPU120aは、ステップS1200で退避した情報をサブCPU120aのレジスタに復帰させる。
次に、演出制御部120のコマンド解析処理について説明する。
図19及び図20は、本実施形態に係る演出制御部120によるコマンド解析処理を示すフローチャートである。なお、図20のコマンド解析処理2は、図19のコマンド解析処理1に引き続いて行われるものである。
ステップS1501において、サブCPU120aは、受信部600の受信バッファに制御コマンドが記憶されているか否かを確認して、制御コマンドを受信したか否かを判定する。
サブCPU120aは、受信バッファに制御コマンドが記憶されていれば、ステップS1650に処理を移し、受信バッファに制御コマンドが記憶されていなければ、コマンド解析処理を終了する。
ステップS1650において、サブCPU120aは、受信バッファに記憶されている制御コマンドに付加された認証結果データに対して認証結果データ解析処理を行う。そして、サブCPU120aは、中間制御部180で制御コマンドの正当性が認証されたことが確認できると、受信した制御コマンドを受信データ用記憶領域に取り込み、ステップS1510に処理を移す。なお、認証結果データ解析処理の詳細については後述する。
ステップS1510において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、デモ指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドがデモ指定コマンドであれば、ステップS1511に処理を移し、デモ指定コマンドでなければステップS1520に処理を移す。
ステップS1511において、サブCPU120aは、デモ演出パターンを決定するデモ演出パターン決定処理を行う。
具体的には、デモ演出パターンを決定し、決定したデモ演出パターンを演出パターン記憶領域にセットすると共に、決定したデモ演出パターンの情報を画像制御部150とランプ制御部140に送信するため、決定したデモ演出パターンに基づく演出パターン指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。
ステップS1520において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、特別図柄記憶指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが特別図柄記憶指定コマンドであれば、ステップS1521に処理を移し、特別図柄記憶指定コマンドでなければステップS1530に処理を移す。
ステップS1521において、サブCPU120aは、特別図柄記憶指定コマンドを解析して、液晶表示装置31に表示させる特別図柄の保留画像(以下、「特図保留画像」という)の表示個数を決定すると共に、決定した特図保留画像の表示個数に対応する特図表示個数指定コマンドを画像制御部150とランプ制御部140に送信する特別図柄記憶数決定処理を行う。
ステップS1530において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、演出図柄指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが演出図柄指定コマンドであれば、ステップS1531に処理を移し、演出図柄指定コマンドでなければステップS1540に処理を移す。
ステップS1531において、サブCPU120aは、受信した演出図柄指定コマンドの内容に基づいて、液晶表示装置31に停止表示させる演出図柄36を決定する演出図柄決定処理を行う。
具体的には、演出図柄指定コマンドを解析して、大当たりの有無、大当たりの種別に応じて演出図柄36の組み合わせを構成する演出図柄データを決定し、決定された演出図柄データを演出図柄記憶領域にセットすると共に、演出図柄データを画像制御部150とランプ制御部140に送信するため、演出図柄データ示す停止図柄指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。
ステップS1532において、サブCPU120aは、上記ステップS1100において更新されている演出モード決定用乱数値から1つの乱数値を取得し、取得した演出モード決定用乱数値と受信した演出図柄指定コマンドに基づいて、複数の演出モード(例えば、ノーマル演出モードやチャンス演出モード)の中から1つの演出モードを決定する演出モード決定処理を行う。また、決定した演出モードは、演出モード記憶領域にセットされる。
ステップS1540において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、変動パターン指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが変動パターン指定コマンドであれば、ステップS1541に処理を移し、変動パターン指定コマンドでなければステップS1550に処理を移す。
ステップS1541において、サブCPU120aは、上記ステップS1100において更新されている演出用乱数値から1つの乱数値を取得し、取得した演出用乱数値、受信した変動パターン指定コマンド及び演出モード記憶領域にセットされている演出モードに基づいて、複数の変動演出パターンの中から1つの変動演出パターンを決定する変動演出パターン決定処理を行う。
具体的には、ノーマル演出モードであれば、変動演出パターン決定テーブルを参照し、取得した演出用乱数値に基づいて1つの変動演出パターンを決定し、決定した変動演出パターンを演出パターン記憶領域にセットすると共に、決定した変動演出パターンの情報を画像制御部150とランプ制御部140に送信するため、決定した変動演出パターンに基づく演出パターン指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。
その後、かかる演出パターンに基づいて、液晶表示装置31、音声出力装置32、演出用駆動装置33、演出用照明装置34が制御されることになる。なお、ここで決定した変動演出パターンに基づいて、演出図柄36の変動態様が決定されることとなる。
ステップS1550において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、図柄確定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが図柄確定コマンドであれば、ステップS1551に処理を移し、図柄確定コマンドでなければステップS1560に処理を移す。
ステップS1551において、サブCPU120aは、演出図柄36を停止表示させるために、演出図柄を停止表示させるための停止指定コマンドをサブRAM120cの送信データ用記憶領域にセットする演出図柄停止表示処理を行う。
ステップS1560において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、遊技状態指定コマンドであるか否かを判定する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが遊技状態指定コマンドであればステップS1561に処理を移し、遊技状態指定コマンドでなければステップS1570に処理を移す。
ステップS1561において、サブCPU120aは、受信した遊技状態指定コマンドに基づいた遊技状態を示すデータをサブRAM120cにある遊技状態記憶領域にセットする。
ステップS1570において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、オープニング指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドがオープニング指定コマンドであればステップS1571に処理を移し、オープニング指定コマンドでなければステップS1580に処理を移す。
ステップS1571において、サブCPU120aは、当たり開始演出パターンを決定する当たり開始演出パターン決定処理を行う。
具体的には、オープニング指定コマンドに基づいて当たり開始演出パターンを決定し、決定した当たり開始演出パターンを演出パターン記憶領域にセットすると共に、決定した当たり開始演出パターンの情報を画像制御部150とランプ制御部140に送信するため、決定した当たり開始演出パターンに基づく演出パターン指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。
ステップS1580において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、大入賞口開放指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが大入賞口開放指定コマンドであればステップS1581に処理を移し、大入賞口開放指定コマンドでなければステップS1590に処理を移す。
ステップS1581において、サブCPU120aは、大当たり演出パターンを決定する大当たり演出パターン決定処理を行う。
具体的には、大入賞口開放指定コマンドに基づいて大当たり演出パターンを決定し、決定した大当たり演出パターンを演出パターン記憶領域にセットすると共に、決定した大当たり演出パターンの情報を画像制御部150とランプ制御部140に送信するため、決定した大当たり演出パターンに基づく演出パターン指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。
ステップS1590において、サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドが、エンディング指定コマンドであるか否かを確認する。
サブCPU120aは、受信データ用記憶領域に記憶されている制御コマンドがエンディング指定コマンドであればステップS1591に処理を移し、エンディング指定コマンドでなければコマンド解析処理を終了する。
ステップS1591において、サブCPU120aは、当たり終了演出パターンを決定する当たり終了演出パターン決定処理を行う。
具体的には、エンディング指定コマンドに基づいて当たり終了演出パターンを決定し、決定した当たり終了演出パターンを演出パターン記憶領域にセットすると共に、決定した当たり終了演出パターンの情報を画像制御部150とランプ制御部140に送信するため、決定した当たり終了演出パターンに基づく演出パターン指定コマンドをサブRAM120cの送信データ用記憶領域にセットする。本処理を終了すると、コマンド解析処理が終了する。
次に、演出制御部120の認証結果データ解析処理について説明する。
図21は、本実施形態に係る演出制御部120による認証結果データ解析処理を示すフローチャートである。
ステップS1651において、サブCPU120aは、演出制御部120を構成する受信部の受信バッファに記憶された制御コマンドに、認証結果データが付加されているか否かを判定する。そして、サブCPU120aは、認証結果データが付加されていれば、ステップS1652に処理を移し、制御コマンドに認証結果データが付加されていなければ、認証結果データ解析処理を終了する。
ステップS1652において、サブCPU120aは、受信バッファに記憶された制御コマンドから認証結果データを抽出し、ステップS1653に処理を移す。
ステップS1653において、サブCPU120aは、抽出した認証結果データが、中間制御部180にて行った誤り検査処理の検査結果が正常であり、主制御部110の正当性を認証することができたか否かを判定する。そして、サブCPU120aは、認証結果データが認証成功を示す結果である場合、遊技機1が正常に稼働していると判断する。そして、サブCPU120aは、受信した制御コマンドをサブRAM120cの受信データ用記憶領域へ出力し、当該制御コマンドに応じた処理を行わせるべく、認証結果データ解析処理を終了する。一方、サブCPU120aは、認証結果データが認証不成功を示す結果である場合、遊技機1で不正行為等が発生した虞れがあると判断し、ステップS1654に処理を移す。
ステップS1654において、サブCPU120aは、遊技機1で不正行為等が発生した虞れがあると判断した場合、その旨を報知する為に報知信号を出力し、認証結果データ解析処理を終了する。
サブCPU120aは、生成した報知信号を、例えば、ランプ制御部140や画像制御部150、あるいは遊技機1を管理するホールコンピュータ等へ送信する。ランプ制御部140や画像制御部150等は、受信した報知信号に基づいて、遊技機1で不正行為が発生した虞れがある旨を報知する演出を実行する。この演出は、例えば、液晶表示装置31に通常出現しないキャラクタを出現させたり、通常出現するキャラクタを通常とは異なる方法で出現させるなどである。また、液晶表示装置31の輝度を変えたり、色を変えたり、ランプ制御部140に対して所定のランプを表示制御するようにしてもよい。いずれにしても、遊技店の従業員が当該遊技機1の前を通過した際に、その状態に気付くようにしてあればよい。また、この演出は、顧客がその状態に気付かないような演出でもよく、また、顧客が容易に気付く演出であってもよい。顧客が容易に気付く演出にすれば、不正行為を効率的に抑止することができる。
また、報知信号に、遊技機1の遊技状態や大当たりの種別に関する情報を含めてもよい。これらの情報に基づいて、遊技機1を管理するホールコンピュータ等によって不正行為が行われているか否かの判断を行ってもよい。例えば、「高確率遊技状態」は賞球が集中していても正常である場合がある。よって、高確率遊技状態中は、その他の状態とは異なる条件で不正行為の虞れがあるか否かについて判断するのがよい。また、遊技状態や大当たりの種別に関する情報は、報知信号に含めずに別信号として出力するようにしてもよい。この場合、従業員は、報知信号と遊技状態や大当たりの種別に関する情報の両方に基づいて、不正行為の虞れがあるか否かについて判断する。
なお、主制御部110と、周辺制御部300の他の制御部との間に中間制御部180が設けられた場合の認証処理は、主制御部110と演出制御部120との間に中間制御部180が設けられた場合の認証処理とほぼ同様の手順で行われるため説明を省略する。
以上、これまで説明してきたように、本実施形態では、誤り検査値を生成する回路である検査値生成部500を、メインCPU110aと送信部550との間に接続させた。そして、メインCPU110aは、制御コマンドを中間制御部180へ送信する際に、送信する制御コマンドを検査値生成部500に書き込む。送信する制御コマンドには、検査値生成部500によって、誤り検査値が付加されて、送信部550へと出力される。よって、本実施形態では、主制御部110にセキュリティ機能を追加するにあたり、メインCPU110aの動作を制御する制御プログラムに対し、制御コマンドの検査値生成部500への書き込み指示を追加するだけでよい。このため、本実施形態では、セキュリティ機能の追加に伴って増大するメインCPU110aの処理負荷や制御プログラムのコードサイズを最大限抑制することができる。
また、本実施形態では、検査値生成部500は、過去に送出された制御コマンドを用いて誤り検査値を生成する。通常、チェックサム等の誤り検査値は生成元の制御コマンドに付加されて通信エラーチェックに利用される。これに対して、本実施形態では、過去に送出された制御コマンドを用いて生成された誤り検査値は、誤り検査値の生成元の制御コマンドには付加されない。このような従来にない新規且つ簡易な手法を用いることにより、不正者が制御コマンドと誤り検査値を窃取しても制御コマンドと誤り検査値の対応関係を容易に解析できないようにすることができ、遊技機1のセキュリティ強度を向上させることができる。
また、本実施形態では、主制御部110が、過去に送信した制御コマンドを用いて生成された誤り検査値を、今回送信する制御コマンドに付加して中間制御部180へ送信する。そして、中間制御部180が、過去に受信した制御コマンドを用いて生成された誤り検査値で、今回受信した制御コマンドの誤り検査処理を行う。これにより、中間制御部180は、今回受信した制御コマンドの正当性を認証することができるだけではなく、過去に受信した制御コマンド、すなわち、今回付加された誤り検査値の生成元となった制御コマンドの正当性をも認証することができる。すなわち、制御コマンドの連続性を認証することができることとなり、不正行為をより検出しやすくなり、遊技機1のセキュリティ強度を向上させることができる。
また、本実施形態では、P≦Nの場合に送信される制御コマンドには、遊技機1に固有の固有情報が付加されることで、誤り検査値が遊技機1に固有の値とすることができる。これにより、固有情報を知らない不正者が一部の制御コマンドを窃取したとしても誤り検査値の解析を不可能とすることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、通常は通信エラーチェックに用いる誤り検査値を、不正行為を検出するための検査値として利用している。このように通信エラーチェックに従来から用いられている誤り検査値を利用することで、不正行為を検出するための検査値生成手段を新規に開発しなくとも不正行為を検出することができ、セキュリティ強度を向上させることができる。すなわち、比較的簡易な構成で主制御部110に対する認証機能を追加可能でありながらも、セキュリティ強度を向上させることができる。
また、本実施形態では、主制御部110へ追加するセキュリティ機能の具体的態様として追加された検査値生成部500は、ワイヤードロジック制御方式のハードウェアで回路構成されており、メインCPU110aの処理負荷やコードサイズを増大させない。したがって、本実施形態によれば、遊技機1がセキュリティ機能を有しながらも、セキュリティ機能を有することで増大する主制御部110のCPUの処理負荷やコードサイズを最大限抑制することができる。同時に、本実施形態の検査値生成部500は、メインCPU110aと送信部550との間に設けるにあたって、検査値生成部500とメインCPU110aとの間の入出力制御方式、及び検査値生成部500と送信部550との間の入出力制御方式を、それぞれCPUインターフェース方式としている。そして、検査値生成部500内の各手段や各回路間の入出力制御方式を同期インターフェース方式としている。よって、本実施形態では、メインCPU110aの処理負荷やコードサイズを増大させない検査値生成部500を、既存の遊技機のメインCPUと送信部との間の入出力制御方式を維持しつつ、追加することができる。このため、本実施形態によれば、このような特徴を有するセキュリティ機能を既存の遊技機に比較的簡易に追加することができる。
また、本実施形態では、検査値生成部500が、過去に生成した制御コマンドの誤り検査値に対して、更にビット列変換処理を施している。しかも、検査値生成部500は、ビット列変換処理に用いられる変換方式を複数備え、送信する制御コマンドに基づいて適宜変更している。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、検査値生成部500が、ビット列変換処理に用いられる変換方式を適宜変更するための条件である変更条件を複数備えることで、誤り検査値付加機能を予め複数用意している。そして、どのような変更条件に基づいて変換方式が変更されるのかは、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、どのような変更条件で変換方式が変更されるのかを解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、誤り検査値付加機能及びその選択情報としてのHWパラメータを予め複数種類用意するものの、特定のHWパラメータのみを実装している。よって、ブート処理でのHWパラメータの選択処理に伴うプログラムを新たに設ける必要がなく、プログラムのコードサイズを増大させることもない。また、遊技機メーカーが特定の誤り検査値付加機能だけを採用したい場合などであっても、所望の誤り検査値付加機能に対応したHWパラメータのみを実装すればよく、遊技機メーカーの嗜好や用途に柔軟に対応することができる。したがって、多様性に富んだセキュリティ機能であっても比較的簡易に追加することができ、汎用性の高いセキュリティ機能を提供することができる。また、遊技機1の開発段階中で設計・検証作業等に使用するHWパラメータと、遊技機1の出荷前に実際に実装されるHWパラメータとを変えることにより、最終的にどのHWパラメータが採用されたのかを知り得る者を限定することができ、遊技機1が有する誤り検査値付加機能に対する秘匿性を更に向上させることができる。
また、本実施形態では、ビット列変換処理に用いられる複数の変換方式として、シフト量が規則的に変動する変換方式Aと、シフト量がランダムに変動する変換方式Bとを設けている。変換方式Bでは、シフト量がランダムに変動するため、変換方式Bを用いてビット列変換処理が施された誤り検査値の各ビットは、ビット列変換処理毎で不規則にシフトする。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、どのようなシフト量でビット列が変換されているのかを解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
特に、シフト量をランダムに変動させる変換方式Bでは、元の誤り検査値のビット列が異なっていても、ビット列変換処理毎で重複した値を出力する場合があり、不正者が制御コマンドと誤り検査値を複数窃取したとしても、シフト量の変動に関する規則性の有無や変換方式の変更の有無を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、シフト量がランダムに変動する変換方式は変換方式Bのみとしている。そして、変換方式Bでビット列が変換された誤り検査値が、制御コマンドに付加されて中間制御部180へ送信されるのは、所定の動作モードの期間の際、すなわち、所定の制御コマンド群が中間制御部180へ送信される期間に限定した。このため、中間制御部180側での誤り検査処理にて元の誤り検査値のビット列に戻す際に、シフト量をランダムに変動させることでビット列変換処理の試行回数が増加する傾向を、最大限抑制することができる。すなわち、本実施形態では、シフト量をランダムに変動させることで制御コマンドと誤り検査値の対応関係が解析困難となりセキュリティ強度を向上させつつも、セキュリティ機能を追加することで増大する処理負荷を最大限抑制することができる。しかも、処理負荷の増大は、リソースに限りのある主制御部110ではなく、リソースに比較的余裕のある中間制御部180が負担することとなり、少ない負担で大きな不正防止効果を得ることができる。
また、本実施形態では、変換方式の具体的な実施態様として、検査値生成部500がビット列変換回路525を備え、ビット列変換回路525を、比較的簡易な回路構成であるシフトレジスタで構成した。このため、本実施形態では、ローテート演算器525aの回路を設計した後は、その回路データをローテート演算器525bにも流用することが可能であり、回路設計やその検証作業に係る開発工数や開発難易度を抑制することができる。すなわち、本実施形態では、複数の変換方式が設けられたことで制御コマンドと誤り検査値の対応関係が解析困難となりセキュリティ強度が向上するという効果を、設けられた変換方式の数よりも少数の演算器を設計するだけで得ることができ、少ない開発コストで大きな不正防止効果を得ることができる。
また、本実施形態では、過去に生成した制御コマンドの誤り検査値に対して、暗号鍵を用いて暗号化処理を施すのではなく、ビット列変換処理を施すこととし、その際の変換方式として、ローテート演算器を用いてビットローテート演算を行う構成とした。暗号鍵を用いて暗号化処理を施す方式では、固定データである暗号鍵情報を、主制御部110に保持させておく必要があり、静的な解析手法で不正に解析されやすい虞れがある。また、暗号鍵情報を、動的な解析手法でしか解析できないような構成とするためには、暗号鍵の交換や共有化及び同期化といった、複雑な処理を新たに設ける必要が生じる。これに対し、本実施形態では、ビット列変換処理を行うビット列変換回路525が、シフト量Aを、内部のローテート演算器525bから出力された誤り検査値及び既存の遊技機が備えるパリティチェック等の演算機能を流用して更新する。加えて、ビット列変換回路525が、シフト量Bを、既存の遊技機で用いられる乱数値を流用して更新する。すなわち、本実施形態では、ビット列変換処理での鍵となるシフト量A、Bを、既存の遊技機が備える構成を流用して更新するという簡易な手法によって変動させて、動的な構成のセキュリティ機能を実現している。しかも、ローテート演算器525a、525bは、比較的簡易な回路構成であるシフトレジスタから構成されており、暗号鍵情報を用いて暗号化処理を施す方式の演算回路と比較し、圧倒的に配線リソースが少ない。このため、本実施形態では、回路設計及び検証作業において、配線リソースによる回路配置調整や遅延時間調整によって動作周波数やダイサイズ等の決定に及ぼす悪影響を抑止することができる。
また、本実施形態では、変換方式Bでビット列変換処理を施す場合だけではなく、変換方式Aでビット列変換処理を施す場合にも、シフト量Aを変動させる。具体的には、本実施形態では、変換方式Bでビット列が変換された誤り検査値が制御コマンドに付加される期間以外の際、すなわち、所定の動作モードの期間以外の際でも、変換方式Aで用いられるシフト量Aを、所定の動作モードの期間以外の期間毎で変動させている。このため、本実施形態では、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが、所定の動作モードの期間以外に送信された誤り検査値に対しても困難となり、セキュリティ強度を更に向上させることができる。
また、本実施形態では、変換方式Aで用いられるシフト量Aを規則的に変動させるために規定されたシフト量Aに係る更新タイミング条件を予め複数備えることで、誤り検査値付加機能を予め複数用意している。そして、どのような更新タイミング条件に基づいてシフト量Aが更新されるのかは、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、シフト量Aの更新に関する規則性を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、変換方式Aで用いられるシフト量Aを、所定の制御コマンド群以外の制御コマンドの中から予め定められた制御コマンドを送信する際に、シフト量Aに所定の設定値を与えてシフト量Aを再設定している。よって、本実施形態では、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際に、それまでの更新によるシフト量Aの変動推移をリセットすることができる。通信エラー等によりシフト量Aの変動が主制御部110側と中間制御部180側とでズレてしまった場合、シフト量Aの変動推移をリセットしないと、変換方式が変換方式Aから変換方式Bへ変更されるまでは、当該ズレは解消されない。しかしながら、本実施形態では、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際に、シフト量Aの変動推移がリセットされることによって、変換方式Aが用いられる当該期間であっても当該ズレを解消することができる。このため、本実施形態では、中間制御部180側での誤り検査処理の確度を向上させることができる。同時に、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際、すなわち、所定の動作モードの期間以外の際でも、シフト量Aが再設定されることにより、制御コマンドと誤り検査値の対応関係が解析困難となり、セキュリティ強度を更に向上させることができる。
また、本実施形態では、変換方式Aで用いられるシフト量Aを再設定するための条件であるリセット条件を予め複数備えることで、誤り検査値付加機能を予め複数用意している。そして、どのようなリセット条件に基づいてシフト量Aが再設定されるのかは、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、シフト量Aの再設定に関する規則性を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値付加機能に対する秘匿性を向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、主制御部110に対する認証機能は、通常の遊技進行に係る処理を行う周辺制御部300とは別個独立した中間制御部180に備えられている。よって、例えば、中間制御部180が主制御部110と演出制御部120との間に設けられているとき、演出制御部120で認証処理が実行されるのは、中間制御部180から認証結果データを受信した場合のみである。すなわち、認証処理を行うことによって演出制御部120のサブCPU120aの処理負荷が増大するのは、認証結果データを受信したときのみであるため、演出制御部120の処理負荷が増大する割合を抑えることができる。また、演出制御部120が実行するプログラムには、認証結果データ解析処理に関するプログラムコードを追加するだけでよい。したがって、演出制御部120が実行するプログラム全体にわたっての新たなタイミング設計を行う必要がないので、認証機能を追加する際の実装及び検証作業を、より簡単に少ない作業工数で実施することができる。また、この場合、演出制御部120が実行する認証結果データ解析処理は、主として中間制御部180で認証処理が成功したか否かを判断する処理である。このため、演出制御部120には、誤り検査値の生成、ビット列の変換、及びシフト量の更新等の主制御部110の誤り検査値付加機能に対応する誤り検査値出力機能を搭載しなくてよい。よって、演出制御部120の開発時には、主制御部110の誤り検査値付加機能及び中間制御部180の誤り検査値出力機能を開示する必要がなく、誤り検査値付加機能及び誤り検査値出力機能に対する秘匿性を更に向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、主制御部110と演出制御部120との間に中間制御部180が設けられているので、主制御部110を構成するメインCPU110aと演出制御部120を構成するサブCPU120aとの間の処理能力の差異や、主制御部110を構成するメインROM110bやメインRAM110cと演出制御部120を構成するサブROM120bやサブRAM120cとの間の記憶容量の差異を、中間制御部180において吸収することができる。これにより、主制御部110と演出制御部120との間で処理能力や記憶容量に差異がある場合でも、主制御部110と演出制御部120との間のセキュリティ強度を維持することができる。なお、このことは、中間制御部180が、主制御部110と周辺制御部300の他の制御部との間に設けられた場合も同様である。
本実施形態では、バッファ手段510のデータバッファ511と生成手段520の格納回路522とを接続し、格納回路522の入力側にはデータバッファ511が配置され、格納回路522の出力側には生成回路521が配置されるような回路構成とした。すなわち、本実施形態では、格納回路522で格納する対象を、バッファ手段510から出力された制御コマンドとした。しかしながら、本発明はこれに限定されず、格納回路522を生成回路521の出力側に設け、格納回路522で格納する対象を誤り検査値としてもよい。なお、中間制御部180においても、格納部622で格納する対象を誤り検査値としてもよいし、制御コマンドとしてもよい。また、主制御部110での格納対象と中間制御部180での格納対象とが異なってもよい。
また、本実施形態では、HWパラメータは、デフォルトの変更条件、シフト量Aに係る更新タイミング条件、及びシフト量Aに係るリセット条件を決定するための選択情報として定義したが、本発明はこれに限定されない。例えば、HWパラメータをデフォルトの変換方式を決定する選択情報と定義することもできる。HWパラメータで変換方式を決定する場合、決定回路542には、予め複数の変換方式を用意しておき、HWパラメータと対応付けておく。そして、決定回路542は、ブート処理の際に、メインCPU110aから設定されたHWパラメータに対応する特定の変換方式を示す変換方式情報を、変換方式情報記憶領域(CM)に記憶して変換方式制御信号を出力し、生成手段520への設定を行えばよい。
また、HWパラメータは、決定手段540で用いる変更方式を決定するための選択情報としても定義することができる。例えば、HWパラメータで変更方式を決定する場合、決定回路542には、予め定められた変換方式の変更順序等を規定する変更方式を複数用意しておき、HWパラメータと対応付けておく。そして、決定回路542は、ブート処理の際に、メインCPU110aから設定されたHWパラメータに対応する特定の変更方式を所定の記憶領域に記憶しておき、記憶した変更方式に従って変換方式を変更させていけばよい。
また、HWパラメータは、生成手段520で用いるシフト量Bに係る更新方式を決定するための選択情報としても定義することができる。例えば、HWパラメータでシフト量Bに係る更新タイミング条件を決定する場合、ビット列変換回路525を担うシフト量制御部525cには、既存の遊技機が備える複数の乱数生成回路から乱数値を取得可能に接続しておき、それぞれの乱数生成回路とHWパラメータとを対応付けておく。そして、シフト量制御部525cは、ブート処理の際に、メインCPU110aから設定されたHWパラメータに対応する特定の乱数生成回路との接続のみを有効に作動させ、特定の乱数生成回路から取得される乱数値を用いてシフト量Bを更新していけばよい。
また、HWパラメータは、シフト量Aの再設定に用いる上記所定の設定値を決定するための選択情報としても定義できる。例えば、HWパラメータで設定値を決定する場合、ビット列変換回路525を担うシフト量制御部525cには、複数の設定値を用意しておき、HWパラメータと対応付けおく。そして、シフト量制御部525cは、ブート処理の際に、メインCPU110aから設定されたHWパラメータに対応する特定の設定値を、所定の記憶領域に記憶しておき、記憶した設定値を用いてシフト量Aを再設定すればよい。
すなわち、本発明において、HWパラメータは、決定手段540で用いる変更条件や、生成手段520で用いるシフト量Aに係る更新タイミング条件及びリセット条件を決定するための選択情報に限定されず、変換方式に係る変更プロトコルやシフト量の更新及び再設定に係る規則を決定するための選択情報として定義することができる。つまり、HWパラメータは、変換方式に係る変更プロトコルやシフト量の更新及び再設定に係る規則を実施態様とした誤り検査値付加機能に対する選択情報である。
このように、本発明では、誤り検査値付加機能が、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定される。よって、不正者が、制御コマンド及び誤り検査値を複数窃取したとしても、遊技機1にどのような誤り検査値付加機能が搭載されているのかを解析することが困難となり、誤り検査値付加機能に対する秘匿性は向上し、遊技機1のセキュリティ強度をより一層向上させることができる。
また、本実施形態では、判定回路541は、バッファ手段510から出力された制御コマンドが変更条件を満たしているとき、当該制御コマンドが変更条件を満たす制御コマンドであることを示す判定結果信号を、毎回出力しなくともよい。すなわち、判定回路541は、バッファ手段510から出力された制御コマンドが、変更条件を満たす制御コマンドであっても、決定回路542にて変換方式が変更されなくなり、不正者が変換方式の変更条件を解析することが更に困難となる。
更に、判定回路541は、制御コマンドが入力される度に、判定結果信号自体を毎回出力しなくともよい。この場合、バッファ手段510の制御回路512と、決定回路542とを直接制御線で接続しておき、制御回路512から決定回路542へ作動許可信号を出力させる。決定回路542は、当該作動許可信号の入力に基づいて、変換方式設定処理を行えばよい。更に、バッファ手段510の制御回路512と、決定手段540の判定回路541や決定回路542とを接続するのではなく、生成手段520の制御回路523とこれらとを接続し、制御回路523から判定回路541や決定回路542へ作動許可信号を出力させるようにしてもよい。
また、本実施形態では、リセット判定回路526は、判定回路541とは別個の判定回路として生成手段520の中に設けたが、本発明はこれに限定されず、リセット判定回路526を決定手段540の判定回路541に組み込んで、判定回路541と一体の回路構成としてもよい。このとき、判定回路541では、変更条件及びリセット条件を判定回路541が用いる判定条件とし、判定回路541の出力側をビット列変換回路525を担うシフト量制御部525cと制御線で接続しておく。そして、バッファ手段510から出力された制御コマンドがリセット条件を満たす制御コマンドであれば、シフト量制御部525cへシフト量Aリセット信号を出力することとすればよい。また、決定回路542には、予め複数のリセット条件を用意しておき、HWパラメータと対応付けておく。そして、決定回路542は、ブート処理の際に、メインCPU110aから設定されたHWパラメータに対応する特定のリセット条件を、判定回路541へ出力すればよい。
また、本実施形態では、リセット判定回路526が用いる判定条件であるリセット条件は、バッファ手段510から出力された制御コマンドが、所定の制御コマンド群以外の制御コマンドの中から予め定められた制御コマンドであることとした。しかしながら、本発明はこれに限定されず、予め定められた誤り検査値をリセット条件に用いることもできる。例えば、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際には、ビット列変換回路525を担うローテート演算器525bから出力された誤り検査値は、入力選択回路524を介して付加手段530へ出力されないものの、シフト量制御部525cへ出力される。このローテート演算器525bから出力された誤り検査値、すなわち、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際に変換方式Bでビット列が変換された誤り検査値が、所定の誤り検査値であれば、シフト量Aを再設定すると取り決めておけばよい。そして、シフト量制御部525cには、リセット判定回路526に相当する判定手段を備えておくと共に、リセット条件を、変換方式Aでビット列が変換された誤り検査値が制御コマンドに付加される期間の際に変換方式Bでビット列が変換された誤り検査値が、所定の誤り検査値であること取り決めておけばよい。
また、本実施形態では、P=1の場合に、固有情報を初期設定値として生成手段520に設定した。そして、P≦Nの場合に、主制御部110では、制御コマンド(P)に対して初期検査値を付加して送信し、中間制御部180では、対応する初期検査値を用いて誤り検査処理を行うこととしたが、本発明はこれに限定されず、中間制御部180は、P≦Nの場合は誤り検査処理を行わず、P>Nとなってから初めて誤り検査処理を行うこととしてもよい。
また、本実施形態では、中間制御部180は、主制御部110が有する変換方式を変更する機能と同様の機能を有する決定部623であることとしたが、本発明はこれに限定されない。例えば、中間制御部180は、受信した制御コマンドに付加された誤り検査値と、ビット列変換部624が有する全ての変換方式でビット列が変換された誤り検査値とを照合して、誤り検査処理を行うこととしてもよい。この場合、中間制御部180は、いずれかの誤り検査値と一致すれば、検査結果は正常であるとして、受信した制御コマンドの正当性並びに主制御部110の正当性を認証すればよい。
また、本実施形態では、P=1の場合に、固有情報を初期設定値として格納回路522に設定したが、本発明はこれに限定されない。例えば、主制御部110に計時手段を設け、又は主制御部110が予め備えている計時手段を用いて、電源投入時から制御コマンドの送信タイミングまでの経過時間を経時情報として取得し、取得した経時情報を初期検査値として用いてもよい。取得した経時情報の値は、ランダム性を有する変動値であるため、これを用いて生成された初期検査値を再利用することは困難であり、遊技機1のセキュリティ強度をより一層向上させることができる。このとき、中間制御部180は、上記のようにP≦Nの場合は誤り検査処理を行わないようにすればよい。
また、このとき、予めN≧2と取り決めてあれば、中間制御部180は、制御コマンドに付加された経時情報が、連続して送信された経時情報同士が時系列として連続性を有するか否か、すなわち、連続して送信された経時情報の値が送信順番に従って増加しているか否かを確認することによって誤り検査処理を行ってもよい。なお、経時情報は、計時手段をリアルタイムクロック回路等として取得される絶対的な時間であってもよいし、リセット時から計数された相対的な時間であってもよい。いずれにしても、経時情報は、その取得されるタイミングが不定期なタイミングであればある程、様々な値に変動するため、実質的に遊技機1に固有の情報と捉える事ができる。また、N≧2のとき、経時情報は、制御コマンドの送信タイミング毎に計時手段から取得した経時情報を用いてもよいし、最初に生成した制御コマンドの送信タイミングに取得した経時情報を複数の制御コマンドに用いてもよい。また、例えば、最初に生成した制御コマンドに付加される誤り検査値の生成元となる初期設定値は、固定値であるメインCPU110aの識別番号(ID)を用い、それ以降の制御コマンドに付加される誤り検査値の生成元となる初期設定値は、変動値である経時情報を用いるというように、固定値と変動値を組み合わせることもできる。
また、格納回路522に設定される初期設定値として、例えば、主制御部110の誤り検査値付加機能の選択情報であるHWパラメータを用いてもよい。すなわち、主制御部110の検査値生成部500を構成する決定手段540は、ブート処理時に自身の決定回路542にセットされたHWパラメータを、HWパラメータ設定処理後も記憶しておく。そして、決定回路542には生成個数記憶領域(P)を設けておき、決定回路542が格納回路522へ固有情報を設定する必要があるか否かを判断する。このとき、バッファ手段510の制御回路512と決定回路542とを制御線で接続しておき、制御回路512から作動許可信号を出力させる。決定回路542は、当該作動許可信号の入力に基づいて生成個数記憶領域(P)の値を更新し、生成個数記憶領域(P)の値がP=1であれば、バッファ手段510から出力された制御コマンドは、格納回路522に格納された制御コマンドがクリアされてから最初にメインCPU110aにて生成された制御コマンドであると判断する。この場合、決定回路542は、その旨をバッファ手段510へ通知して固有情報の出力を要求させず、自身に記憶しているHWパラメータを格納回路522へ設定し、初期設定値として用いればよい。
HWパラメータは、その内容や実装方法を遊技機メーカーの独自の判断で決定することができるため秘匿性が高く、実質的に遊技機1に固有の情報と捉えることができる。なお、中間制御部180は、上記のようにP≦Nの場合は誤り検査処理を行わないようにすればよい。このようにすることで、中間制御部180は、HWパラメータに相当する誤り検査値付加機能の選択情報を、予め主制御部110との間で取り決めていなくとも、主制御部110で設定された誤り検査値付加機能に対応した誤り検査値出力機能を選択することができる。よって、不正者が、中間制御部180自体を解析しても、複数の誤り検査値出力機能のうちのどの出力機能でもって出力された誤り検査値を用いて誤り検査処理が行われるのかを特定することができず、当該出力機能の秘匿性を確保することができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、検査値生成部500内の各手段間や各回路間の入出力制御方式を、同期インターフェース方式とした。そして、検査値生成部500内の各手段同士や各回路同士のデータ送受は、主制御部110のクロックパルス発生回路から出力されたクロック信号に同期して行うこととした。しかしながら、本発明はこれに限定されず、検査値生成部500内の各手段同士や各回路同士のデータ送受は、当該クロック信号に対して非同期で行うこととしてもよい。この場合であっても、検査値生成部500内では、出力するデータの接続先に対してイネーブル信号等を出力すれば、接続先は当該イネーブル信号等の入力に基づいて、当該出力データを取り込み、CPUインターフェース方式とは異なることとなる。
また、本実施形態では、誤り検査値を送信部550の送信バッファ551へ書き込むタイミングは、付加手段530の制御回路532が出力する入力選択信号の出力タイミングを調整することによって制御していた。しかしながら、本発明はこれに限定されず、バッファ手段510の制御回路512が、制御回路532に対して出力する作動許可信号の出力タイミングを調整することで制御することもできる。また、生成手段520の制御回路523が、格納回路522へ出力するシフト処理信号の出力タイミングや、生成回路521へ出力する作動許可信号の出力タイミングを調整することで制御することもできる。制御回路532が出力する入力選択信号の出力タイミングは、制御回路512が出力する作動許可信号の入力に基づいている。更に、制御回路512が出力する作動許可信号の出力タイミングは、メインCPU110aが出力するバッファ手段510への書き込み信号の入力に基づいている。そして、メインCPU110aが出力する当該書き込み信号は、既存の遊技処理用プログラムに元来規定されていたコマンド送信処理の実行タイミングによって予め指定されている。
このように、本発明では、検査値生成部500が誤り検査値を送信部550へ書き込むタイミングは、既存の遊技処理用プログラムで規定されたコマンド送信処理の実行タイミングに基づいて一意に決定すればよく、比較的簡易にタイミング設計が可能である。よって、本発明は、セキュリティ機能を既存の遊技機に比較的簡易に追加することができ、且つ、誤り検査値の書き込みタイミングの設計に、比較的大きなマージンを確保することができ、誤り検査処理の確度確保が容易となる。
また、本実施形態では、中間制御部180は、認証結果データを制御コマンドに付加して認証結果データ付き制御コマンドとして演出制御部120へ送信することとしたが、本発明はこれに限定されず、制御コマンド及び認証結果データを別々に送信するようにしてもよい。この場合、演出制御部120は、認証結果データを受信したかを判断し、認証結果データを受信した場合に認証結果データ解析処理を行うようにすればよい。なお、制御コマンドと認証結果データのそれぞれにダミーデータを付加して、データ長が同一となるようにしてもよい。このようにすることにより、不正者が、制御コマンドと認証結果データを区別することが困難となり、遊技機1のセキュリティ強度を向上させることができる。
また、本実施形態では、中間制御部180は、認証成功の場合も認証不成功の場合も、認証結果データを生成し、演出制御部120へ送信することとしたが、本発明はこれに限定されず、例えば、中間制御部180は、認証不成功の場合のみ認証結果データを生成し、あるいは、認証不成功を示す信号を出力し、演出制御部120へ送信するようにしてもよい。演出制御部120は、認証結果データ又は認証不成功を示す信号を受信したか否かを判断し、受信した場合に報知信号を出力するように構成すればよい。
また、本実施形態では、検査値生成部500を構成する生成手段520のビット列変換回路525を担うシフト量制御部525cでは、シフト量の更新に係る制御をシフト量制御部525cが内部に備えるアルゴリズムに基づいて処理することも可能であることとして説明したが、本発明は、検査値生成部500を全てハードウェアで構成してもよい。
また、本実施形態では、検査値生成部500をワンチップマイコン110mとは別個の回路構成としたが、本発明はこれに限定されず、検査値生成部500をワンチップマイコン110mと一体の回路構成としてもよいし、送信部550と一体の回路構成としてもよい。更に、本発明は、検査値生成部500、ワンチップマイコン110m、及び送信部550の全てを一体の回路構成としてもよい。
また、本実施形態では、中間制御部180をCPU、ROM、RAM等を備えて構成しているが、同様の機能をLSI等の集積回路として実現するように構成してもよい。
また、本実施形態では、本発明をパチンコ遊技機に適用する例を示したが、これに限定されず、本発明は、雀球遊技機、アレンジボール等のパチンコ遊技機以外の弾球遊技機、スロットマシン等の回胴式遊技機などの他の遊技機にも適用することができる。これらの遊技機においても、本実施形態と同様に構成することにより、本実施形態と同様の効果を得ることができる。
また、本実施形態では、本発明を遊技機に適用する例を示したが、これに限定されず、本発明は、遊技機のような複数の制御部を備え、これら制御部間のデータ伝送について認証処理を実行する電子機器及びその認証方法にも適用することができる。これらの電子機器及びその認証方法においても、本実施形態と同様に構成することにより、本実施形態と同様の効果を得ることができる。また、本実施形態は、その目的及び構成等に特に矛盾や問題がない限り、互いの技術を流用することができる。