JP5412499B2 - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP5412499B2
JP5412499B2 JP2011261025A JP2011261025A JP5412499B2 JP 5412499 B2 JP5412499 B2 JP 5412499B2 JP 2011261025 A JP2011261025 A JP 2011261025A JP 2011261025 A JP2011261025 A JP 2011261025A JP 5412499 B2 JP5412499 B2 JP 5412499B2
Authority
JP
Japan
Prior art keywords
unit
check value
control unit
error check
control command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011261025A
Other languages
English (en)
Other versions
JP2013111290A (ja
Inventor
直幸 渡辺
浩 水上
元成 横島
静 張
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyoraku Industrial Co Ltd
Original Assignee
Kyoraku Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyoraku Industrial Co Ltd filed Critical Kyoraku Industrial Co Ltd
Priority to JP2011261025A priority Critical patent/JP5412499B2/ja
Publication of JP2013111290A publication Critical patent/JP2013111290A/ja
Application granted granted Critical
Publication of JP5412499B2 publication Critical patent/JP5412499B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Pinball Game Machines (AREA)

Description

本発明は、パチンコ遊技機、雀球遊技機、アレンジボール等の弾球遊技機、スロットマシン等の回胴式遊技機などの遊技機に関する。更に、本発明は、複数の制御部を備える電子機器における各制御部間のデータ伝送の認証方法に関する。
遊技機に対し行われる、メダルや遊技球など(以下、「遊技媒体」という)を遊技内容とは無関係に強制的に払い出させる不正行為のうち、遊技進行に伴う基本動作を制御する主制御部が搭載された主制御基板と、主制御部からの制御命令情報(以下、「制御コマンド」という)に基づき演出処理等を実行する周辺制御部が搭載された周辺制御基板との間での不正行為に関するものとして、例えば以下に示すものがある。
(1)正規な主制御基板と不正な主制御基板との交換
(2)主制御基板に搭載されたCPUが実行する正規なプログラムが記憶されたROMと上記プログラムを改ざんした不正なプログラムが記憶されたROMとの交換
(3)主制御基板と周辺制御基板との間に不正な基板(なりすまし基板)を設け、かつ上記(2)のROMの交換
このような不正行為を防止するため、従来の遊技機には、次のようなものがあった。例えば、特許文献1に記載の遊技機では、主制御基板は、制御コマンドを生成してサブ制御基板に送信する第1送信手段と、第1送信手段が所定期間内に送信した制御コマンドのチェックサムを状態監視コマンドとして所定のタイミングで送信する第2送信手段とを備えている。また、サブ制御基板が、所定期間内に受信した制御コマンドのチェックサムと、所定のタイミングで受信した状態監視コマンドとを比較することで、所定期間内に送信された制御コマンドの正当性を検証している。すなわち、特許文献1に記載の遊技機は、制御コマンドの正当性を検証するための状態監視コマンドを所定のタイミングで送信することで、上記不正行為の防止を図っている。
特開2002−18095号公報
しかしながら、特許文献1に記載の遊技機では、通常の制御コマンドとは異なるデータ形式あるいはデータ量を有する状態監視コマンドを、所定のタイミングで単独で送信している。よって、不正行為を働こうとする者(以下、「不正者」という)が、状態監視コマンドの送信タイミングを容易に知り得て、窃取することができるというおそれがあった。また、特許文献1に記載の遊技機では、所定期間内に送信した制御コマンドのチェックサムを状態監視コマンドとしている。よって、状態監視コマンドの送信タイミングを知った不正者が、所定期間内の制御コマンドとそのチェックサムを取得して比較することで、状態監視コマンドの内容を容易に解析することができるというおそれがあった。
また、特許文献1に記載の遊技機では、セキュリティ機能の追加を実現するために、状態監視コマンドを送信するという通常の処理とは異なる処理をわざわざ追加しており、主制御基板の制御処理が複雑化している。そのため、特許文献1に記載の遊技機では、主制御基板のCPUが実行するプログラムのコードサイズが増大し、CPUの処理負荷が増大する。また、遊技機においては、公共性のある遊技ならではの規制により主制御基板のROMやRAMの容量が制限されており、遊技機メーカーには、限られたリソースを演出処理に係るプログラムにより多く割当てたいという要望がある。よって、遊技機にセキュリティ機能を追加することで、主制御基板のCPUの処理負荷やプログラムのコードサイズが増大する問題は看過できない。
また、セキュリティ機能の追加をハードウェアで実現しようとする場合、CPUの処理負荷やコードサイズの増大は抑制できる。しかしながら、既存の主制御基板にハードウェアで新たに機能を追加する場合、当該ハードウェアに関連するCPUや周辺回路の構成も変更しなければならず、遊技機の開発コストや開発時間の増大を招き、遊技機メーカーにとって大きな負担となる。そのため、従来の技術では、実効性のあるセキュリティ機能を既存の遊技機に対し、比較的簡易に追加したいという遊技機メーカーの要望に応えることができない。
本発明は、上記事情に鑑みてなされたものであり、簡易な手段により上記不正行為を防止してセキュリティ強度を向上させるとともに、処理負荷やコードサイズの増大を抑制しながら比較的簡易に追加することのできるセキュリティ機能を有する遊技機を提供することを目的とする。
上記課題を解決するために本発明は、制御コマンドを出力する主制御部(主制御部110)と、前記制御コマンドに基づく処理を行う周辺制御部(周辺制御部300)と、前記主制御部と前記周辺制御部との間に設けられた中間制御部(中間制御部180)と、を含む遊技機(遊技機1)であって、前記主制御部は、記憶部に記憶された所定の制御プログラムに従って前記制御コマンドを生成し送出する演算処理部(メインCPU110a)と、前記演算処理部によって送出された前記制御コマンドを前記中間制御部へ送信する送信部(送信部550)と、前記演算処理部と前記送信部とを接続するバス(内部バス400)と、前記バスに接続されており、前記演算処理部によって送出された制御コマンドに付加され該制御コマンドの正当性を検査するための誤り検査値を生成する第1検査値生成部(検査値生成部500)と、を備え、前記中間制御部は、前記第1検査値生成部によって送出された誤り検査値に対応する検証用の誤り検査値を生成する第2検査値生成部(検査値生成部620)と、前記送信部によって送信された誤り検査値と前記第2検査値生成部によって生成された誤り検査値とを比較して前記送信部によって送信された制御コマンドの正当性の検査を行い、該検査の結果情報を出力する検査部(検査部610)と、前記送信部によって送信された制御コマンドを前記周辺制御部へ中継送信すると共に、前記結果情報を前記周辺制御部へ送信する中継送信部(中継送信部640)と、を備え、前記周辺制御部は、前記中継送信部によって中継送信された制御コマンドに基づく処理を行うと共に、前記中継送信部によって送信された前記結果情報に応じた処理を行う処理部(周辺制御部300のCPU等)を備え、前記第1検査値生成部は、前記演算処理部から前記送信部への制御コマンドが前記バスに送出されると、該送信部への制御コマンドを前記バスから取得し、取得した制御コマンドを予め指定されたタイミングで出力するコマンド取得手段(取得手段510)と、前記コマンド取得手段によって出力された制御コマンドを入力し、入力した制御コマンドへ付加する誤り検査値のビット列を変換する際に用いる変換方式を、入力した制御コマンドに基づいて、予め取り決められた異なる複数の変換方式のうちのいずれかに決定し、決定した変換方式を示す変換方式情報を、前記タイミングに応じて出力する決定手段(決定手段540)と、前記コマンド取得手段によって出力された制御コマンドを入力し、入力した制御コマンドより過去に前記演算処理部によって送出された制御コマンドを用いて生成された誤り検査値を、前記タイミングに応じて出力する生成手段(生成回路521)と、前記生成手段によって出力された誤り検査値と前記決定手段によって出力された変換方式情報とを入力し、入力した誤り検査値のビット列を、入力した変換方式情報が示す変換方式で変換し、ビット列が変換された誤り検査値を、前記タイミングに応じて出力する変換手段(ビット列変換回路525)と、前記変換手段によって出力された誤り検査値を入力し、入力した誤り検査値を、前記制御プログラムに規定された前記演算処理部の読み出し指示に応じて、前記バスを介して前記演算処理部へ送出する検査値送出手段(送出回路527)と、を有し、前記演算処理部は、前記検査値送出手段から送出された誤り検査値を前記バスから取得し、取得した誤り検査値を、前記送信部へ送出する前記制御コマンドに付加して、前記バスを介して前記送信部へ送出することを特徴とする。
本発明では、誤り検査値を生成する第1検査値生成部を演算処理部の周辺回路として設けている。そして、演算処理部は、制御コマンドを中間制御部へ送信する際に、第1検査値生成部から誤り検査値を読み出して当該制御コマンドに付加し、送信部へ送出する。よって、本発明では、主制御部にセキュリティ機能を追加するにあたり、演算処理部の動作を制御する制御プログラムに対し、誤り検査値の読み出し指示および書き込み指示を追加するだけでよい。
このため、本発明では、セキュリティ機能の追加に伴って増大する演算処理部の処理負荷やコードサイズを最大限抑制することができる。しかも、演算処理部が誤り検査値を制御コマンドへ付加するタイミングは、制御プログラムをカスタマイズするだけで任意に規定可能であるため、制御コマンドと誤り検査値の対応関係を機種毎や遊技機メーカー毎で変更することが比較的容易であり、柔軟性の高いセキュリティ機能を提供することができる。
また、本発明によれば、主制御部に対する認証機能は、通常の遊技進行に係る処理を行う周辺制御部とは別個独立した中間制御部が備える。よって、認証機能の追加によって増大する周辺制御部のCPUの処理負荷やコードサイズを抑制することができる。そして、既存の遊技機に対し、比較的簡易にセキュリティ機能を追加することができる。
本発明の実施形態に係る遊技機の外観構成を示す正面図である。 本発明の実施形態に係る遊技機のガラス枠を開放させた状態の外観構成を示す斜視図である。 本発明の実施形態に係る遊技機の裏面側の外観構成を示す斜視図である。 本発明の実施形態に係る遊技機の内部構成を示すブロック図である。 本発明の実施形態に係る遊技機を構成する主制御部の認証処理に関する構成を示すブロック図である。 本発明の実施形態に係る遊技機を構成する主制御部を構成するメインCPUのメモリマップを説明するための概略図である。 本発明の実施形態に係る遊技機を構成する主制御部を構成する検査値生成部の内部構成を示すブロック図である。 本発明の実施形態に係る遊技機を構成する中間制御部の認証処理に関する構成を示すブロック図である。 本発明の実施形態に係る遊技機を構成する主制御部から演出制御部へ送信される制御コマンドの種別を示す図である。 本発明の実施形態に係る遊技機を構成する主制御部によるメイン処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部による割込処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部による特図特電制御処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部による特別図柄記憶判定処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部による起動時のブート処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部によるコマンド送信処理1におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部によるコマンド送信処理2におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部によるコマンド送信処理3におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する中間制御部によるメイン処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する演出制御部によるメイン処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する演出制御部による割込処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する演出制御部によるコマンド解析処理1におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する演出制御部によるコマンド解析処理2におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する演出制御部による認証結果データ解析処理におけるフローチャートを示す図である。 本発明の実施形態に係る遊技機を構成する主制御部から送信される制御コマンドへの誤り検査値の付加手順の例を説明するための概略図である。
本発明を実施するための形態について、図面を参照しながら説明する。具体的には、本発明の実施形態に係る遊技機の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、検査値生成部500、および送信部550から少なくとも構成されるワンチップマイコン110mと、主制御用の入力ポートと出力ポート(図示せず)とを少なくとも備えている。
この主制御用の入力ポートには、払出制御部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には、後述するように、セキュリティ機能の追加を実現するためメインCPU110aが実行する処理の内容や手順を記述した認証処理用プログラムや、認証処理用プログラムを実行する際に使用される固定データ等が予め記憶されている。
主制御部110のブートROM110dには、後述するように、メインCPU110aが実行するブート処理の内容や手順を記述したブート処理用プログラムや、ブート処理用プログラムの実行の際に使用される固定データ等が予め記憶されている。このブート処理用プログラムは、メインCPU110aの起動直後に立ち上るように設定されている。
主制御部110のメインRAM110cは、メインCPU110aの演算処理時におけるデータのワークエリアとして機能し、複数の記憶領域を有している。
メインRAM110cが有する記憶領域として一例を挙げれば、普通図柄保留数(G)記憶領域、普通図柄保留記憶領域、普通図柄データ記憶領域、第1特別図柄保留数(U1)記憶領域、第2特別図柄保留数(U2)記憶領域、第1特別図柄乱数値記憶領域、第2特別図柄乱数値記憶領域、ラウンド遊技回数(R)記憶領域、開放回数(K)記憶領域、大入賞口入球数(C)記憶領域、遊技状態記憶領域(高確率遊技フラグ記憶領域等と時短遊技フラグ記憶領域)、高確率遊技回数(X)カウンタ、時短回数(J)カウンタ、遊技状態バッファ、停止図柄データ記憶領域、送信データ用記憶領域、特別図柄時間カウンタ、特別遊技タイマカウンタなど各種のタイマカウンタなどがある。
主制御部110の検査値生成部500は、後述するように、メインCPU110aの周辺回路であり、主制御部110が制御コマンドを送信する際に、送信する制御コマンドに対して付加される誤り検査値を生成する機能(以下、「誤り検査値生成機能」という)を有する回路である。誤り検査値は、主制御部110が送信する制御コマンドの正当性を検査するためのデータであり、制御コマンドを用いて生成される。そして、誤り検査値は、メインCPU110aが、遊技処理用プログラムに基づいて、制御コマンドを送信部550により、後述する中間制御部180へ送信する処理(以下、「コマンド送信処理」という)を行う際に、送信する制御コマンドに付加されて、中間制御部180へ送信される。本実施形態の検査値生成部500は、誤り検査値の生成態様が異なる複数の誤り検査値生成機能を有している。
主制御部110の送信部550は、上記主制御用の出力ポートの中でも、特に、主制御部110に対する認証機能を担うよう予め定められた制御部(後述する中間制御部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の認証を行うことによって実現される。そのために主制御部110、中間制御部180、および周辺制御部300が実行する処理を、通常の遊技進行に係る処理とは区別する意味で「認証処理」という。なお、本実施形態では、中間制御部180は、周辺制御部300のうちの演出制御部120と主制御部110との間に設けられているとともに、中間制御部180に、主制御部110に対する認証機能が備えられているものとする。
まず、主制御部110と中間制御部180との間で行われる認証処理の概要について説明する。
主制御部110のメインCPU110aは、今回のコマンド送信処理において中間制御部180へ制御コマンドを送信する際、送信する制御コマンドに誤り検査値を付加して送信する。この誤り検査値は、メインCPU110aの周辺回路である検査値生成部500によって、メインCPU110aからの指示ではなく独自に生成される。メインCPU110aは、誤り検査値を付加する場合、検査値生成部500によって予め生成された誤り検査値を読み出して制御コマンドに付加し、送信部550へ送出する。送信部550は、誤り検査値が付加された制御コマンドを中間制御部180へ送信する。
検査値生成部500は、メインCPU110aが送信部550へ送出する制御コマンドを取得すると共に、今回のコマンド送信処理で送出された制御コマンドより過去に送出された制御コマンドを用いて誤り検査値を生成する。本実施形態では、過去に送出された制御コマンドとは、今回のコマンド送信処理よりN回前(N;正の整数)のコマンド送信処理の際に、メインCPU110aによって送信部550へ送出された制御コマンドであるとする。すなわち、検査値生成部500は、今回のコマンド送信処理においてメインCPU110aが中間制御部180へ送信する制御コマンドよりN個前に送信された制御コマンドを用いて誤り検査値を生成する。
一方、中間制御部180のCPU180aも、主制御部110から送信された制御コマンドを受信し、受信した制御コマンドを用いて検証用の誤り検査値を生成する。そして、CPU180aは、今回受信した制御コマンドに誤り検査値が付加されている場合には、今回受信した制御コマンドに付加された誤り検査値と、当該制御コマンドより過去に受信した制御コマンドを用いて生成した誤り検査値とを照合する。そして、両者が一致すると、今回受信した制御コマンドの正当性が認証され、主制御部110の認証に成功したと判断される。そして、CPU180aは、得られた認証結果を演出制御部120へ送信する。演出制御部120のサブCPU120aは、中間制御部180から送信された認証結果を受信し、受信した認証結果に応じた処理を行う。
通常、チェックサム等の誤り検査値は生成元の制御コマンドに付加されて通信エラーチェックに利用される。これに対して、本実施形態では、検査値生成部500は、過去に送出された制御コマンドを用いて誤り検査値を生成するため、誤り検査値の生成元の制御コマンドには付加されることがない。このような従来にない新規かつ簡易な手法を用いることにより、不正者が制御コマンドと誤り検査値を窃取しても制御コマンドと誤り検査値の対応関係を容易に解析できないようにすることができ、遊技機1のセキュリティ強度を向上させることができる。
また、過去に送出された制御コマンドを用いて生成された誤り検査値を、現在送信する制御コマンドに付加して送信し、中間制御部180が当該制御コマンドの誤り検査処理を行うことにより、今回受信した制御コマンドの正当性を認証するとともに、過去に送出された制御コマンド、すなわち、今回付加された誤り検査値の生成元となった制御コマンドの正当性をも認証することができる。すなわち、制御コマンドの連続性を認証することができることとなり、不正行為をより検出しやすくなり、遊技機1のセキュリティ強度を向上させることができる。
次に、図5および図6を用いて、主制御部110の認証処理に関する構成について説明する。
図5は、本実施形態に係る主制御部110の認証処理に関する機能構成を示すブロック図である。図6は、本実施形態に係るメインCPUのメモリマップを説明するための概略図であって、(a)マップ全体、(b)メインROM110b、および(c)ブートROM110dに関するメモリマップである。なお、図6では、本発明の特徴的な領域以外は省略しており、各領域同士の位置関係も一例である。
主制御部110は、上述したように、メインCPU110a、メインROM110b、およびブートROM110dに加え、誤り検査値生成機能を有する検査値生成部500と、中間制御部180への制御コマンドの送信機能を有する送信部550とを少なくとも備えている。なお、主制御部110の各構成部には、クロックパルス発生回路(図示せず)により出力された所定のクロック信号がそれぞれ入力されている。そして、これら主制御部110の各構成部は、内部バス400でそれぞれ接続されている。
内部バス400は、データバス400a、アドレスバス400b、および制御バス400cを少なくとも備えている。内部バス400は、主制御部110の各構成部から送出された制御信号に基づき、バス上を通るデータの割り当てを行いデータ衝突が生じないように制御して、各構成部間で各種データや信号の送受を可能としている。
内部バス400のデータバス400aは、制御コマンドまたは誤り検査値のいずれか小さい方のデータ長以上のビット幅を有するバスを用いればよい。例えば、制御コマンドは2バイト、誤り検査値は1バイトのデータであるとすると、データバス400aのビット幅は、少なくとも1バイト以上とすればよい。この場合、メインCPU110aは、まず、2バイト長の制御コマンドの上位1バイトをデータバス400aへ出力し、続いて、下位1バイトをデータバス400aへ出力する。続いて、検査値生成部500は、1バイトの誤り検査値をデータバス400aへ出力する。なお、内部バス400のバス規格は、公知の規格でよい。
メインCPU110aは、上記のように遊技進行に係る処理を実行する他、主制御部110の認証処理を実行する。メインCPU110aは、メインROM110bに記憶された認証処理用プログラムや各種固定データを用いて各種演算処理を実行する。また、メインCPU110aは、ブートROM110dに記憶されたブート処理用プログラムやメインROM110bに記憶された各種初期値を用いて各種演算処理を実行する。そして、メインCPU110aは、これらの演算処理の結果に応じて制御信号や制御コマンドを内部バス400へ送出する処理を行う。
例えば、メインCPU110aは、内部バス400を介してそれぞれ接続された主制御部110の各構成部との間でデータ送受を行う際には、内部バス400のデータバス400aに送出したいデータを送出し、アドレスバス400bに送出先の構成部を指定するアドレスデータを送出し、制御バス400cに制御信号を送出する。アドレスデータは、図6(a)のメモリマップに示すように、主制御部110の各構成部を一義的に指定できるように予め定義されている。そしてアドレスデータは、デコーダを介してチップセレクト信号へ変換され、アドレスデータが指定する主制御部110の構成部へ入力される。チップセレクト信号が入力された主制御部110の構成部では、制御信号の内容に応じて、送出されたデータをデータバス400aから取り込んだり、データバス400aに対して保持するデータを送出したりすることができる。本実施形態では、主制御部110の各構成部間において行われる内部バス400を介したデータ送受の方式を、「CPUインターフェース方式」という。
また、メインCPU110aは、コマンド送信処理を行う際に、内部バス400のデータバス400aに制御コマンド、アドレスバス400bに送信部550(詳細には、後述する送信バッファ551)を指定するアドレスデータ、制御バス400cに制御コマンドを書き込むための制御信号(以下「書き込み信号」という)を送出する。送信部550を指定するアドレスデータは、デコーダを介してチップセレクト信号へ変換され、送信部550へ入力される。送信部550は、チップセレクト信号および書き込み信号がアクティブとなると、データバス400a上の制御コマンドを取り込むことができる。なお、本実施形態では、チップセレクト信号や書き込み信号等の制御信号がアクティブとなることを「制御信号が入力される」ともいう。また、アドレスデータは、チップセレクト信号へ変換された後、指定された主制御部110の各構成部へ入力されるものとし、アドレスデータからチップセレクト信号への変換については説明を省略する。
また、メインCPU110aは、コマンド送信処理を行う際に、遊技処理用プログラムに規定されたタイミングに応じて認証処理用プログラムを呼び出し、呼び出した当該プログラムに基づいて、送信する制御コマンドに対して誤り検査値を付加する処理(以下「検査値付加処理」という)を行う。具体的には、メインCPU110aは、コマンド送信処理中に検査値付加処理を実行するタイミングとなると、内部バス400のアドレスバス400bに検査値生成部500(詳細には、後述する生成手段520の送出回路527)を指定するアドレスデータ、制御バス400cに誤り検査値を読み出すための制御信号(以下「読み出し信号」という)を送出する。検査値生成部500は、指定されたアドレスデータ(チップセレクト信号)および読み出し信号が入力されると、予め生成しておいた誤り検査値をデータバス400aへ送出する。そして、メインCPU110aは、データバス400aから誤り検査値を取り込んで、付加するべき誤り検査値を取得する。そして、メインCPU110aは、データバス400aに誤り検査値、アドレスバス400bに送信部550を指定するアドレスデータ、制御バス400cに誤り検査値を書き込むための書き込み信号を送出する。
メインROM110bには、図6(b)に示すように、上記のような遊技処理用プログラムやデータの他、メインCPU110aが遊技機1にて認証処理を実行するための認証処理用プログラムが予め記憶されている。遊技処理用プログラムには、メインCPU110aがコマンド送信処理中で検査値付加処理を実行するタイミングに、認証処理用プログラムを呼び出す命令が記述されている。また、認証処理用プログラムには、メインCPU110aが検査値付加処理を実行するための命令が記述されている。具体的には、認証処理用プログラムには、検査値生成部500から誤り検査値を読み出す命令および読み出した誤り検査値を送信部550へ書き込む命令が記述されている。
本実施形態において、コマンド送信処理は、後述するように基本的に主制御部110のタイマ割込処理として実行され、このタイマ割込処理に係るプログラムコードは、上記遊技処理用プログラム内に記述されている。本実施形態では、遊技処理用プログラムにおいて、認証処理用プログラムの呼び出し命令を実行するタイミングは、このタイマ割込処理の実行周期内で行われるように規定され、予め中間制御部180との間で取り決めてあれば基本的に任意である。
すなわち、本実施形態では、メインCPU110aが検査値付加処理を実行するタイミングは、遊技処理用プログラムの中で、コマンド送信処理に係るプログラムコードに対して、認証処理用プログラムの呼び出し命令が追加されたことによって規定される。このため、遊技機メーカーは、認証処理用プログラムの呼び出し命令を遊技処理用プログラムの所望の位置に追加するだけで、制御コマンドに誤り検査値を付加するタイミングを規定することができるため、設計自由度の高い認証機能を比較的簡易に追加することができる。また、遊技機メーカーは、認証処理用プログラムの呼び出し命令を記述する位置をカスタマイズするだけで、制御コマンドとそれに付加される誤り検査値との対応関係を変更することができるため、遊技機1のセキュリティ強度を柔軟に変更することができる。
なお、誤り検査値と同じデータ長を有するダミーデータを用意し、誤り検査値の替わりに当該ダミーデータを制御コマンドに付加することとすれば、誤り検査値を付加しない場合に中間制御部180へ送信される送信データは、誤り検査値を付加した場合と同じデータ長を有する送信データとなる。このため、不正者にとっては、誤り検査値が中間制御部180へ送信されるタイミングを解析することが困難となり、誤り検査値を窃取することが困難となる。このため、制御コマンドとそれに付加される誤り検査値との対応関係を解析することが困難となり、遊技機1のセキュリティ強度を向上させることができる。
また、タイマ割込処理の実行周期内で検査値付加処理が実行されると、当該実行周期毎に送信部550へ書き込まれる制御コマンドの直後に誤り検査値が書き込まれる。このため、送信部550側では、制御コマンドに連続して誤り検査値が書き込まれることとなり、制御コマンドの直後に誤り検査値が付加される。これにより、送信部550では制御コマンドおよび誤り検査値を一連の送信データ(誤り検査値が付加された制御コマンド)として、中間制御部180へ送信することができる。
また、メインROM110bには、主制御部110が初期化された後に初めて出力する制御コマンドに付加する誤り検査値として使用する、遊技機1の固有情報が記憶されている。固有情報は、主制御部110が保持する遊技機1固有の情報であれば特に限定されない。固有情報は、図6(b)では、メインROM110bの固定データの一部となっているが、例えば、プログラムコードが記憶された領域の中の特定のアドレスにおけるチェックサム値や、メインCPU110aに固有に付与されている識別番号(ID)や、メーカーコード・機種コード等の製品情報などを用いることができる。また、固有情報は、予め中間制御部180との間で取り決められた誤り検査値のダミーデータなど用いることができる。そして、これらのデータに四則演算や論理演算等を施した値でもよい。なお、固有情報は、メインROM110bとは別個の記憶手段(メモリセルやROMなど)に記憶されていてもよい。
本実施形態では、今回のコマンド送信処理において、検査値生成部500が誤り検査値の生成に用いる制御コマンドは、当該制御コマンドよりN個前に送信された制御コマンドである。検査値生成部500は、過去に送信された制御コマンドとして、少なくともN個の制御コマンドを後述の格納回路522に格納している。但し、遊技機1のリセット時のように主制御部110が初期化されたときには、格納回路522に格納しておいた過去の制御コマンドがクリアされるため、これを用いて誤り検査値を生成することができない。そこで、本実施形態では、格納回路522に格納しておいた過去の制御コマンドがクリアされた場合に、格納回路522への初期設定値として、メインROM110bに予め記憶しておいた固有情報を用いる。本実施形態では、固有情報として少なくともN個の固有情報をメインROM110bに記憶させておく。なお、本実施形態では、制御コマンドを用いずに固有情報を用いて生成された誤り検査値を、「初期検査値」ともいう。
また、メインROM110bには、電源投入時などの遊技機1のリセット時に行われる主制御部110のブート処理中に、メインCPU110aの内蔵レジスタや周辺回路等に対して設定される初期値(いわゆるハードウェアパラメータ)が予め記憶されている。なお、本実施形態では、上記初期値の一つであって、検査値生成部500に設定されるものを「HWパラメータ」という。
HWパラメータは、検査値生成部500が有する複数の誤り検査値生成機能にそれぞれ対応付けられて、予め複数用意されている。そして、主制御部110のブート処理において、メインCPU110aが検査値生成部500にHWパラメータを設定すると、設定されたHWパラメータに対応した誤り検査値生成機能が、検査値生成部500において有効となる。すなわち、HWパラメータは、メインCPU110aがどの誤り検査値生成機能を採用するのかを選択するための選択情報である。図6(b)では、上記初期値およびHWパラメータを記憶する領域は、メインROM110b内の領域であるが、本発明はこれに限定されず、メインROM110bとは別個のメモリセルに記憶したり、ブートROM110d内に記憶したりするように構成することもできる。すなわち、本発明では、上記初期値およびHWパラメータの記憶領域と、遊技処理用プログラムや固定データ等の記憶領域とは、同一の記憶手段(メモリセルやROMなど)に搭載されていてもよいし、異なる記憶手段に搭載されていてもよい。
ブートROM110dには、図6(c)に示すように、ブート処理用プログラムやブート処理用プログラムの実行の際に使用される固定データが予め記憶されている。ブート処理用プログラムは、メインCPU110aの起動直後にブートROM110dからブート処理専用RAM(図示せず)へ読み込まれ、メインCPU110aにて実行が開始されるように予め設定されており、メインCPU110a自身の自己診断処理や、メインCPU110aの内蔵レジスタや周辺回路等(検査値生成部500を含む)の初期化および初期値(HWパラメータを含む)の設定処理(以下「初期値設定処理」という)を制御するものである。また、本実施形態では、ブート処理後に実行される遊技処理用プログラムや認証処理用プログラム等、ブート処理用プログラム以外のプログラムを「ユーザープログラム」という。
ブート処理用プログラムは、CPUメーカーが開発・実装するプログラムであり、これらが記憶されたブートROM110dに対するアクセスは、遊技機1の出荷後、ブート処理時のメインCPU110aからのアクセスにのみ制限されている。一方、ユーザープログラムは、遊技機メーカーが開発・実装するプログラムであり、これらが記憶されたメインROM110bに対するアクセスは、遊技処理が実行されるたびにメインCPU110aからアクセスされる。
しかしながら、メインROM110bの記憶領域でも、ユーザープログラムや固定データ等(固有情報を含む)が記憶された領域以外の記憶領域(上記初期値やHWパラメータが記憶された領域等)は、ブート処理用プログラムの中でのみ定義された領域であり、遊技処理に係るユーザープログラム上では全く現れることが無い領域とされている。つまり、ユーザープログラムや固定データ等が記憶された領域以外の記憶領域は、ブート処理が終了した後は、ユーザープログラムからはアクセスできないように実質的な制限がかけられた領域とされている。
但し、不正なアクセスを試みられた場合を考慮して、次のような更なるアクセス制限をかけることで、ブート処理時にのみ得られるHWパラメータの秘匿性をより向上させることができる。例えば、ブートROM110dおよびメインROM110bへのアクセス制限は、主制御部110に実行アドレス監視手段(図示せず)を設けておき、ブート処理終了後に実行アドレス監視手段を作動させ、ユーザープログラムが所定のアドレスを超えた領域へアクセスしようとした場合には、メインCPU110aへリセット信号を出力してメインCPU110aを動作停止状態にすればよい。また、リセット信号を出力しないまでも、異常を検知した旨を示す報知信号を出力するようにしてもよい。
また、HWパラメータのメインROM110bへの実装においては複数の方法が考えられる。例えば、検査値生成部500に予め用意された複数の誤り検査値生成機能のそれぞれと対応する複数のHWパラメータを予め用意し、メインROM110bに実装する。そして、初期値設定処理の中で、どのHWパラメータを採用するかを選択するためのプログラムをブートROM110dに実装しておき、ブート処理のたびにどの誤り検査値生成機能を用いるのかを任意に選択できるように構成することができる。このように実装すると、ブート処理のたびに誤り検査値生成機能が変更され、誤り検査値生成機能の秘匿性を向上させることができ、遊技機1のセキュリティ強度を向上させることができる。
一方、検査値生成部500の誤り検査値生成機能については予め複数用意するものの、特定のHWパラメータのみをメインROM110bに実装し、これに対応する特定の誤り検査値生成機能のみが採用されるように構成することもできる。このように実装すると、ブート処理でのHWパラメータの選択処理に伴うプログラムを新たに設ける必要がなく、プログラムのコードサイズを増大させることがない。また、このように実装すると、遊技機メーカーが特定の誤り検査値生成機能だけを採用したい場合であっても、遊技機メーカーが行うプログラム実装過程において、所望の誤り検査値生成機能に対応したHWパラメータのみをメインROM110bに実装すればよく、遊技機メーカーの用途や嗜好に柔軟に対応することができる。
なお、この場合であっても、HWパラメータは、主制御部110のブート処理時の初期値設定時以外ではアクセスされない記憶領域に記憶されているため、外部から誤り検査値生成機能の内容を知ることができない。そのため、不正者が、遊技機1で採用された誤り検査値生成機能を解析することは困難であり、遊技機1が有する誤り検査値生成機能の秘匿性は確保される。また、遊技機1の開発段階中で設計・検証作業などに使用するHWパラメータと、その後に実際に実装されるHWパラメータとを変えることによって、最終的にどのHWパラメータが実装されたのかを知り得る者が限定され、誤り検査値生成機能の秘匿性は更に向上する。本実施形態では、特定の誤り検査値生成機能に対応する特定のHWパラメータのみがメインROM110bに実装されていることとして説明する。
メインRAM110cは、メインCPU110aの演算処理時におけるデータのワークエリアとして機能し、上記のように遊技進行に係る処理を実行するための複数の記憶領域の他、認証処理に関する記憶領域も有している。具体的には、メインRAM110cは、コマンド送信処理の度にメインCPU110aが制御コマンドを生成し、生成した制御コマンドを送信部550へ送出した個数(以下、「送出個数」という)を記憶しておく送出個数記憶領域(P)を有している。送出個数(P;正の整数)は、遊技機1のリセット時など主制御部110が初期化された直後から、現在までに何個の制御コマンドが生成され、送信部550へ送出されたのかを示す値である。
送出個数のPの値は、公知のカウンタ回路等で計数すればよく、メインCPU110aがコマンド送信処理の際に送出個数記憶領域(P)の値に1を加算して更新する。なお、主制御部110の初期化された場合には、検査値生成部500の格納回路522に格納された制御コマンドがクリアされる。このため、メインCPU110aは、コマンド送信処理の際に、メインRAM110cの送出個数記憶領域(P)の値を参照し、送出個数記憶領域(P)の値が初期化直後の値(例えばP=1)を示す場合には、格納回路522に格納された制御コマンドがクリアされた直後であって格納回路522へ固有情報を設定する必要があると判断する。そして、メインCPU110aは、メインROM110bから固有情報を読み出し、格納回路522に固有情報を初期設定値として設定する。
送信部550は、メインCPU110aから送出された制御コマンドまたは誤り検査値を中間制御部180へ送信する機能を有し、送信バッファ551と送信回路552とを少なくとも備えている。送信バッファ551は、中間制御部180へ送信するデータを一時的に保持するためのバッファ回路である。また、送信回路552は、中間制御部180へ送信するデータを、主制御部110と中間制御部180との間のデータ伝送形式(シリアル伝送形式やパラレル伝送形式)に対応したデータ形式へ変換する機能などを有している。
送信部550は、内部バス400を介して、メインCPU110aから送出されたデータ(制御コマンドまたは誤り検査値)を送信部550(詳細には、送信バッファ551)へ書き込むための書き込み信号と、送信部550を指定するアドレスデータとが入力されると、内部バス400のデータバス400a上から当該送出データを送信バッファ551に取り込む。そして、送信部550は、送信バッファ551に取り込んだデータを送信回路552へ直ちに受け渡す。そして、送信部550は、送信回路552に受け渡されたデータに上記データ形式変換処理等を施して送信データを生成し、中間制御部180へ直ちに送信する。
検査値生成部500は、メインCPU110aの周辺回路として設けられた誤り検査値生成機能を有する回路である。検査値生成部500は、内部バス400と接続されており、メインCPU110aが送信部550へ送出する制御コマンドを、内部バス400から取得し、取得した制御コマンドを用いて誤り検査値を生成する。そして、検査値生成部500は、メインCPU110aから誤り検査値の読み出し信号が入力されると、誤り検査値をメインCPU110aへ送出する。
具体的には、検査値生成部500は、送信部550を指定するアドレスと同じアドレスが割り当てられている取得手段510を備えている。そして、メインCPU110aがコマンド送信処理を行う際に、内部バス400のアドレスバス400bに送信部550を指定するアドレスデータ、制御バス400cに書き込み信号が送出されると、当該アドレスデータおよび書き込み信号は、取得手段510にも入力される。
そして、検査値生成部500は、当該アドレスデータおよび書き込み信号が入力されると、データバス400aから制御コマンドを取り込んで、制御コマンドを取得する。そして、検査値生成部500は、取得した制御コマンドを用いて誤り検査値を生成すると、これを保存しておく。そして、検査値生成部500は、メインCPU110aがコマンド送信処理中に検査値付加処理を行う際に、内部バス400のアドレスバス400bに検査値生成部500(詳細には、後述する生成手段520の送出回路527)を指定するアドレスデータ、制御バス400cに読み出し信号が送出されると、保存しておいた誤り検査値をデータバス400aへ送出する。
検査値生成部500は、図5に示すように、取得手段510、決定手段540、および生成手段520を少なくとも備えているが、検査値生成部500を構成するこれらの手段は、ワイヤードロジック制御方式で回路構成されており、メインCPU110aからの指示を受けずに誤り検査値を生成する。本実施形態では、検査値生成部500内の各手段同士および各手段内の各回路同士でのデータ送受は、主制御部110のクロックパルス発生回路から出力されたクロック信号に同期して行われる。本実施形態では、検査値生成部500内の各手段や各回路の入出力制御方式を、「同期インターフェース方式」という。同期インターフェース方式では、出力するデータの接続先に対してイネーブル信号等を出力すれば、接続先は当該イネーブル信号およびクロック信号等の入力に基づいて、当該出力データを取り込む。同期インターフェース方式は、主制御部110の各構成部間において行われる内部バス400を介したデータ送受の方式であるCPUインターフェース方式とは異なる。
[検査値生成部の構成]
これより、主制御部110に対する認証機能実現のために設けられた誤り検査値生成機能を有する検査値生成部500について説明する。
まず、検査値生成部500が有する誤り検査値生成機能の概要について説明する。
検査値生成部500は、今回のコマンド送信処理でメインCPU110aから送信部550へ送出された制御コマンドを内部バス400から取得する。そして、検査値生成部500は、今回取得した制御コマンドを格納回路522に格納するとともに、取得した制御コマンドよりN個前に取得し格納回路522に格納しておいた制御コマンドを用いて誤り検査値を生成する。
ここで、本実施形態では、今回のコマンド送信処理において送出された制御コマンドを制御コマンド(P)とし、当該制御コマンド(P)よりN個前に送出された制御コマンドを制御コマンド(P−N)とする。すなわち、本実施形態では、制御コマンド(1)は、主制御部110が初期化された直後に最初に送出された制御コマンドを意味し、制御コマンド(P)は、初期化されてからP番目に送出された制御コマンドを意味する。また、本実施形態では、制御コマンド(P−N)を用いて生成された誤り検査値を誤り検査値(P−N)とする。
Nの値は、今回のコマンド送信処理において送出された制御コマンドに対して、何個前に送出された制御コマンドを用いて誤り検査値を生成するのかを示した値である(以下、Nを「遡及数」という)。遡及数のNの値の取り得る範囲は、過去の制御コマンドを格納している格納回路522(および中間制御部180の後述する格納部622)の記憶容量によって制限されるものの、基本的には任意である。Nの値が大きければ、不正者にとっては、制御コマンドとそれに付加された誤り検査値との関係性を解析することがより困難となり、不正行為をより一層防止することができる。
そして、検査値生成部500は、制御コマンド(P−N)を用いて誤り検査値(P−N)を生成した後、生成した誤り検査値(P−N)のビット列に対してビット演算を行って誤り検査値(P−N)のビット列を適宜変換する処理(以下、「ビット列変換処理」という)を行う。本実施形態では、誤り検査値(P−N)にビット列変換処理を施す際に、当該誤り検査値(P−N)のビット列に対して行うビット演算の方式(以下、「変換方式」という)として、誤り検査値(P−N)のビット列にビットローテート演算を行って当該ビット列を変換する方式を用いる。
また、検査値生成部500には、誤り検査値(P−N)にビット列変換処理を施す際の変換方式として、複数の変換方式が予め用意されている。予め用意された変換方式の個数は、本発明では特に限定されないが、本実施形態では2つの変換方式が予め用意されているものとする。具体的には、本実施形態では、1回のビット列変換処理の中で行われるビットローテート演算において、ビット列を構成する各ビットを何ビット分だけシフトさせるのかを示す「シフト量」の取り決め方に応じて、2つの変換方式が予め用意されている。
より詳細には、シフト量が、予め中間制御部180との間で取り決められたルールに従って規則的に変動する変換方式(以下、「変換方式A」という)と、シフト量が、予め中間制御部180との間で取り決められておらず、ランダムに変動する変換方式(以下、「変換方式B」という)との2つの変換方式である。本実施形態では、変換方式Aでビット列変換処理を施す際のビットローテート演算において用いられるシフト量を「シフト量A」といい、変換方式Bでビット列変換処理を施す際のビットローテート演算において用いられるシフト量を「シフト量B」という。
そして、検査値生成部500は、予め用意された上記2つの変換方式を適宜使い分けながら、誤り検査値(P−N)にビット列変換処理を施す。具体的には、デフォルトの変換方式として、変換方式Aと変換方式Bのいずれかを用いることと定めておく。そして、検査値生成部500は、今回のコマンド送信処理においてメインCPU110aが送出した制御コマンド(P)を取得すると、取得した制御コマンド(P)に基づいて、予め定められた変換方式の変更規則(以下、「変更プロトコル」という)に従って、現在まで設定されていた変換方式を新たな変換方式へ変更する。
なお、本実施形態では、ビット列変換処理の際に用いる変換方式を、後述の決定手段540が決定するが、決定手段540が変換方式を決定し、決定した変換方式でビット列変換処理が行われるように後述の生成手段520に対する設定を行う処理を「変換方式設定処理」という。また、今回のコマンド送信処理において送信部550へ送出された制御コマンド(P)が変換方式を変更する制御コマンドであるための条件を「変更条件」といい、本実施形態では、変更条件についても複数の変更条件が予め用意されている。
また、本実施形態では、ビット列変換処理を施す際のビットローテート演算において用いられるシフト量を、後述の生成手段520が更新するが、生成手段520がシフト量を更新し、更新したシフト量でビットローテート演算が行われるように後述のビット列変換回路525を担うローテート演算器に対する設定を行う処理を「シフト量設定処理」という。なお、シフト量設定処理では、シフト量Aを規則的に変動させるためにシフト量Aを適宜更新し、シフト量Bをランダムに変動させるためにシフト量Bを適宜更新する。本実施形態では、シフト量A、Bをどのようなタイミングで更新していくのかを規定するための条件(以下、「更新タイミング条件」という)として、シフト量Aに係る更新タイミング条件は、複数の条件が予め用意されており、シフト量Bに係る更新タイミング条件は、1つの条件が予め用意されている。
このように、検査値生成部500が有する複数の誤り検査値生成機能の具体的な実施態様として、本実施形態では、複数の変更条件およびシフト量Aに係る複数の更新タイミング条件を予め用意する。すなわち、どの変更条件を採用するかに応じて、変更条件を満たす制御コマンドの種類も変わる。そして、変更条件を満たす制御コマンドの種類が変わると、ある時点の誤り検査値にとっては、ビット列変換処理が施される際に用いられる変換方式も変わる。結果的に、採用された変更条件に応じて誤り検査値のビット列も変わるためである。更に、どの更新タイミング条件を採用するかに応じて、変換方式Aでビット列変換処理を行う際のシフト量Aが更新されるタイミングも変わり、ある時点の誤り検査値にとっては、変換方式Aのビットローテート演算で用いられるシフト量も変わる。結果的に、採用された更新タイミング条件に応じて、誤り検査値のビット列も変わるためである。
そして、本実施形態では、誤り検査値生成機能の選択情報である複数のHWパラメータに対し、複数の変更条件がそれぞれ対応付けられており、検査値生成部500の決定手段540に予め記憶されている。また、本実施形態では、複数のHWパラメータに対し、シフト量Aに係る複数の更新タイミング条件がそれぞれ対応付けられており、検査値生成部500の生成手段520に予め記憶されている。そして、ブート処理中の初期値設定処理の際、メインCPU110aが検査値生成部500へ特定のHWパラメータを設定すると、検査値生成部500は、設定されたHWパラメータを確認し、当該HWパラメータに対応した変更条件および更新タイミング条件をデフォルトの条件としてそれぞれ設定する。
なお、本実施形態では、メインCPU110aが行う設定処理であって、ブート処理中の初期値設定処理でも、特に、検査値生成部500へ特定のHWパラメータを設定する処理を「HWパラメータ設定処理」という。また、本実施形態では、検査値生成部500が行う設定処理であって、HWパラメータ設定処理に伴ってデフォルトの変更条件を決定し、決定した変更条件を、検査値生成部500を構成する後述の決定手段540に対して設定する処理を「変更条件設定処理」という。また、本実施形態では、検査値生成部500が行う設定処理であって、HWパラメータ設定処理に伴ってシフト量Aに係るデフォルトの更新タイミング条件を決定し、決定した更新タイミング条件を、検査値生成部500を構成する後述の生成手段520に対して設定する処理を「更新タイミング条件設定処理」という。
そして、検査値生成部500は、今回のコマンド送信処理においてメインCPU110aが送信部550へ送出された制御コマンド(P)を取得し、取得した制御コマンド(P)よりN個前に送出された制御コマンド(P−N)を用いて誤り検査値(P−N)を生成する。更に、検査値生成部500は、変換方式Aまたは変換方式Bのいずれかで誤り検査値(P−N)のビット列を変換する。このとき、検査値生成部500は、取得した制御コマンド(P)が変更条件を満たす制御コマンドであれば、現在まで設定されていた変換方式を新たな変換方式に変更した上で、誤り検査値(P−N)のビット列を変換する。そして、メインCPU110aから誤り検査値を読み出すための読み出し信号が入力されれば、検査値生成部500は、当該ビット列が変換された誤り検査値(P−N)を内部バス400のデータバス400aに送出する。その結果、メインCPU110aは、今回送信する制御コマンド(P)に対して、新たな変換方式でビット列変換処理が施された誤り検査値(P−N)を付加することができる。また、検査値生成部500がシフト量Aおよびシフト量Bを適宜更新することによって、変換前のビット列が同じ誤り検査値であっても、更新毎で変換後のビット列を動的に変動させることができる。
次に、図7を用いて、上記誤り検査値生成機能を実現するために設けられた検査値生成部500の構成について説明する。
図7は、主制御部110を構成する検査値生成部500の内部構成を示すブロック図である。
検査値生成部500は、取得手段510、決定手段540、および生成手段520を少なくとも備えている。取得手段510は、メインCPU110aから内部バス400へ送出された制御コマンドを取得する回路である。生成手段520は、制御コマンドを用いて誤り検査値を生成し、そのビット列を変換した後、内部バス400へ送出する回路である。また、決定手段540は、生成手段520で行われる誤り検査値のビット列変換に用いる変換方式を制御する回路である。
取得手段510は、メインCPU110aから内部バス400へ送出されたデータの内容を判別するデータ判別回路511と、データ判別回路511の動作を制御する制御回路512とを備えている。データ判別回路511の入力側は、内部バス400のデータバス400aと接続されており、データ判別回路511の出力側は、決定手段540の後述する判定回路541および生成手段520の格納回路522とデータ線でそれぞれ接続されている。制御回路512の入力側は、内部バス400のアドレスバス400bおよび制御バス400cとそれぞれ接続されており、制御回路512の出力側は、データ判別回路511と制御線で接続されている。また、制御回路512の出力側は、決定手段540の判定回路541および生成手段520の後述する制御回路523と制御線でそれぞれ接続されている。
コマンド送信処理の際、メインCPU110aは、内部バス400のデータバス400aに、送信部550にて中間制御部180へ送信するデータ(制御コマンドまたは誤り検査値)を送出し、アドレスバス400bに送信部550を指定するアドレスデータに送出し、制御バス400cに送信部550への書き込み信号を送出する。制御回路512には、このアドレスデータおよび書き込み信号が入力される。制御回路512は、当該書き込み信号の入力に基づいて、データバス400aに送出されたデータ(以下、「送出データ」という)をデータ判別回路511が取り込むよう作動させるためのイネーブル信号(以下、「作動許可信号」という)を出力する。データ判別回路511は、当該作動許可信号の入力に基づいて、データバス400aから当該送出データを取り込む。
データ判別回路511は、取り込んだ送出データが制御コマンドであるか否かを判別する。本実施形態では、図9を用いて後述するように、主制御部110から送信される演出制御部120向けの制御コマンドは、上位バイトの「MODE」の情報と、下位バイトの「DATA」の情報とから構成されている。そして、制御コマンドの上位バイト「MODE」の情報は、図9の例では、「E0H」〜「EEH」が割り当てられており、最上位から4ビットは同じ値となっている。そこで、例えば、誤り検査値のデータ長を制御コマンドと同じデータ長とし、誤り検査値の最上位から4ビットを「E0H」〜「EEH」と異なるビットパターンとすれば、データ判別回路511は、取り込んだ送出データの最上位から4ビットまでの値が、制御コマンドの最上位から4ビットまでの値と一致するか否かで、取り込んだ送出データが制御コマンドであるか否かを判別すればよい。また、誤り検査値のデータ長を制御コマンドのデータ長(図9の例では2バイト)と異なるデータ長(例えば1バイト)とすれば、データ判別回路511は、取り込んだ送出データのデータ長が、制御コマンドのデータ長と一致するか否かで、取り込んだ送出データが制御コマンドであるか否かを判別すればよい。いずれにしても、データ判別回路511は、取り込んだ送出データのビットパターンが制御コマンドを示すものであるか否かを判別する。
データ判別回路511は、取り込んだ送出データが制御コマンドであれば、当該送出データを、後続する決定手段540の判定回路541および生成手段520の格納回路522へ出力する。一方、データ判別回路511は、取り込んだ送出データが制御コマンドでなければ、当該送出データ(誤り検査値)を破棄し、判定回路541および格納回路522に当該送出データは出力しない。そして、制御回路512は、データ判別回路511から出力された送出データ(制御コマンド)が判定回路541および格納回路522で入力可能となるよう、後続する判定回路541および生成手段520の制御回路523に対して作動許可信号を出力する。なお、制御回路512が、上記各作動許可信号を出力するタイミングは、検査値生成部500内の各手段の動作時間等を考慮しながら、各手段がクロック信号の入力に同期して正常に動作できるようなタイミングとなるように予め設定されている。
なお、本実施形態では、上記のように、メインCPU110aが、メインRAM110cの送出個数記憶領域(P)の値を参照して、生成手段520の格納回路522へ固有情報を設定する必要があるか否かを判断するが、取得手段510に送出個数記憶領域(P)を設けて取得手段510が判断してもよい。例えば、P=1の場合に取得手段510は、メインCPU110aに対して固有情報を出力するように要求するための制御信号を出力して、メインROM110bに格納された固有情報を出力させることとしてもよい。
このようにして、取得手段510は、メインCPU110aから送信部550へ送出される送出データを内部バス400から取得し、取得した送出データが制御コマンドであれば、後続する決定手段540および生成手段520へ出力する。
決定手段540は、取得した制御コマンドが変更条件を満たす制御コマンドであるか否かを判定する判定回路541と、判定結果に応じて変換方式を決定する決定回路542とを少なくとも備えている。具体的には、判定回路541は、取得手段510のデータ判別回路511から出力された制御コマンドを入力し、入力した制御コマンドが、変更条件を満たす制御コマンドであるか否かの判定処理を実行し、判定結果を決定回路542へ通知する。そのために、判定回路541は、変更条件を予め記憶しておく変更条件記憶器541aと、入力した制御コマンドと変更条件とを比較する比較器541bとを備えている。
変更条件記憶器541aは、レジスタなどで構成され、変更条件記憶器541aの入力側は、決定回路542とデータ線で接続されている。また、変更条件記憶器541aの出力側は、比較器541bとデータ線で接続されている。そして、変更条件記憶器541aは、HWパラメータ設定処理にて設定されたHWパラメータに対応するデフォルトの変更条件が決定回路542から出力されると、当該変更条件を取り込んで記憶するとともに、変更条件のビットパターンを比較器541bへ出力する。
比較器541bは、変更条件記憶器541aと同等以上のビット数を比較可能なイコールコンパレータやマグニチュードコンパレータなどで構成され、比較器541bの入力側は、変更条件記憶器541aおよび取得手段510のデータ判別回路511とデータ線でそれぞれ接続されている。また、比較器541bの出力側は、決定回路542と制御線で接続されている。
そして、比較器541bは、取得手段510の制御回路512から出力された作動許可信号の入力に基づいて、データ判別回路511から出力された制御コマンドを入力する。続いて、比較器541bは、当該制御コマンドのビットパターンと、変更条件記憶器541aから出力された変更条件のビットパターンとを比較する。続いて、比較器541bは、入力した制御コマンドが変更条件を満たす制御コマンドであるか否かの判定結果を通知するための制御信号(以下、「判定結果信号」という)を出力する。
比較器541bは、入力した制御コマンドと変更条件とを比較して両者が一致すれば、取得手段510から出力された制御コマンドが変更条件を満たす制御コマンドであることを示す判定結果信号を決定回路542へ出力する。一方、比較器541bは、両者が一致しなければ、取得手段510から出力された制御コマンドが変更条件を満たす制御コマンドでないことを示す判定結果信号を決定回路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の入力側は、判定回路541と制御線で接続され、判定回路541から出力された判定結果信号を入力する。また、決定回路542の入力側は、図7では省略したが、内部バス400と接続されており、HWパラメータ設定処理の際に、メインCPU110aが決定手段540へ設定するHWパラメータをデータバス400aから取り込むことができる。
また、決定回路542の出力側は、判定回路541の変更条件記憶器541aとデータ線で接続されているとともに、生成手段520の制御回路523と制御線で接続されている。そして、決定回路542は、メインCPU110aから設定されたHWパラメータに応じて、予め用意された複数の変更条件のいずれかを判定回路541へ出力する。また、決定回路542は、判定回路541から出力された判定結果信号に応じて変換方式を決定し、決定した変換方式を生成手段520へ設定するための制御信号を出力する。
具体的には、決定回路542には、予め用意された複数の変更条件と複数のHWパラメータとの対応関係が分かるデータテーブルが設けられている。そして、決定回路542は、取り込んだHWパラメータによって特定の変更条件を一義的に決定することができる。そして、決定回路542は、HWパラメータ設定処理において、メインCPU110aから設定されたHWパラメータに対応する変更条件を、デフォルトの変更条件として変更条件記憶領域(D)に記憶しておく。そして、決定回路542は、変更条件記憶領域(D)に記憶された変更条件を判定回路541の変更条件記憶器541aに出力する。
また、決定回路542は、判定回路541から出力された判定結果信号に応じて決定した変換方式を示す情報である変換方式情報を生成する。変換方式情報は、予め用意された上記2つの変換方式である変換方式Aおよび変換方式Bをそれぞれ識別できるような識別番号等の値とすればよい。そして、決定回路542には、変換方式情報を記憶する変換方式情報記憶領域(S)が設けられており、判定結果信号に応じて決定した変換方式を示す変換方式情報を、変換方式情報記憶領域(S)に記憶する。
なお、本実施形態では、変換方式の具体的な態様は、生成手段520の後述するビット列変換回路525に設けられた複数のローテート演算器(図7では、ローテート演算器A、B)で表されている。具体的には、変換方式Aは、ローテート演算器Aと対応しており、変換方式Bは、ローテート演算器Bと対応している。そして、決定回路542には、変換方式情報と当該複数のローテート演算器との対応関係が分かるデータテーブルが設けられている。
決定回路542は、ブート処理中の変換方式設定処理の際に、デフォルトの変換方式Aを示す変換方式情報を変換方式情報記憶領域(S)に記憶する。そして、決定回路542は、変換方式情報記憶領域(S)に記憶された値に基づいて、デフォルトの変換方式Aに対応するローテート演算器Aにてビット列変換処理が施された誤り検査値を、ビット列変換回路525から付加手段530へ出力させるための制御信号(以下、「変換方式制御信号」という)を、生成手段520の制御回路523へ出力する。
なお、変換方式情報記憶領域(S)には、変換方式が変更された場合には、変更後の変換方式を示す変換方式情報のSの値(以下、変更後の変換方式情報の値を「S’」とする)が記憶されることになる。決定回路542は、今回のコマンド送信処理にて変換方式を変更した場合、変更後の変換方式を示す変換方式情報を記憶した変換方式情報記憶領域(S)の値を参照することで、以降のコマンド送信処理で生成手段520が誤り検査値にビット列変換処理を施す際の変換方式を把握することができる。
また、決定回路542は、ブート処理後の変換方式設定処理の際に、予め中間制御部180との間で取り決められた変換方式の変更プロトコルに従って、変換方式を変更する。具体的には、決定回路542は、判定回路541から出力された判定結果信号を確認し、取得手段510から出力された制御コマンドが変更条件を満たす制御コマンドであるか否かを把握する。そして、決定回路542は、取得手段510から出力された制御コマンドが変更条件を満たす制御コマンドであれば、所定の変更方式に従って変換方式情報記憶領域(S)の値を変更する。すなわち、上記変更プロトコルとは、変換方式を変更するべきか否かを判定するための上記変更条件と変換方式の変更方式とから少なくとも構成される。
変更条件は、上記のように、本実施形態では、取得手段510から出力された制御コマンドが、所定の制御コマンド群のうち最初に生成される制御コマンド、および、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのどちらかに該当するか否かである。
変換方式の変更方式は、予め中間制御部180との間で取り決めておけば基本的に任意である。本実施形態では、変換方式Aと変換方式Bとの2つが用意されているとし、デフォルトの変換方式を変換方式Aとした。このとき、例えば、変更条件を満たす制御コマンドが出力される毎に、変換方式を、変換方式A→変換方式B、変換方式B→変換方式Aへ決定する方式が考えられる。また、例えば、変更条件を満たす制御コマンドが出力される毎に、予め用意した乱数生成回路を作動させ、得られた乱数値に対応する変換方式に決定する方式が考えられる。但し、乱数生成回路を用いる場合は、得られた乱数値を中間制御部180へ通知するか、当該乱数生成回路と同期して作動する乱数生成回路を中間制御部180にも用意する必要がある。本実施形態で取り決められた変更方式として、変更条件を満たす制御コマンドが出力される毎に、変換方式を変換方式A→変換方式B等と決定する方式が採用されている。
このようにして、決定手段540は、取得手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドであるか否かを判定し、判定結果に応じて、生成手段520のビット列変換処理で用いられる変換方式を決定する。そして、決定回路542は、上記変換方式制御信号を生成手段520の制御回路523へ出力することで、決定した変換方式に応じて生成手段520の設定を行うことができる。このため、生成手段520では、決定手段540にて決定された変換方式を用いて誤り検査値のビット列を変換することとなる。
生成手段520は、取得手段510から出力された制御コマンドを格納する格納回路522と、取得手段510から過去に出力され格納回路522に格納しておいた制御コマンドを用いて誤り検査値を生成する生成回路521と、生成回路521から出力された誤り検査値のビット列を変換するビット列変換回路525と、ビット列変換回路525から出力されたビット列が変換された誤り検査値を保存する保存回路526と、ビット列変換回路525と保存回路526との接続を選択的に切り替える入力選択回路524と、メインCPU110aから送出された誤り検査値の読み出し信号に応じて、保存回路526に保存された誤り検査値を内部バス400へ送出する送出回路527と、取得手段510や決定手段540から出力された制御信号の入力に基づいて、生成手段520内の各回路の動作を制御する制御回路523とを備えている。
格納回路522は、取得手段510から出力された制御コマンドを格納しておく回路である。格納回路522は、少なくとも遡及数のNの値に対応するN段の格納回路で構成されている。そして、格納回路522を担う各格納回路は、パイプライン構成となるように各々が接続されており、遡及数のNの値に対応するN段のシフトレジスタ(FIFOメモリ)の機能を少なくとも有している。
そして、格納回路522は、メインCPU110aが内部バス400へ送出し、取得手段510が内部バス400から取得して、決定手段540および生成手段520へ出力した制御コマンド(P)よりも過去にメインCPU110aによって送出された制御コマンドを格納することができる。具体的には、格納回路522は、取得手段510から出力された制御コマンド(P)より過去にメインCPU110aによって送出された制御コマンド(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」の情報のみを入力し、演算するように構成することができる。
ビット列変換回路525は、生成回路521から出力された誤り検査値を入力し、入力した誤り検査値に対して、ビット列変換処理を施す回路である。具体的には、ビット列変換回路525には、入力した誤り検査値のビット列に対してビットローテート演算を行う複数のローテート演算器と、ビットローテート演算で用いるシフト量を制御するシフト量制御部Cとが備えられている。
ビット列変換回路525を担う複数のローテート演算器は、規則的に変動するシフト量Aを用いてビットローテート演算を行うローテート演算器Aと、ランダムに変動するシフト量Bを用いてビットローテート演算を行うローテート演算器Bとを少なくとも備えている。ローテート演算器A、Bは、誤り検査値と同等のビット幅を有するシフトレジスタ等からそれぞれ構成されている。そして、ローテート演算器A、Bの入力側は、生成回路521とデータ線でそれぞれ接続され、シフト量制御部Cと制御線でそれぞれ接続されている。また、ローテート演算器A、Bの出力側は、入力選択回路524とデータ線でそれぞれ接続されている。更に、ローテート演算器Bの出力側は、シフト量制御部Cとデータ線で接続されている。
そして、ローテート演算器A、Bは、制御回路523の生成回路521への作動許可信号に伴って出力された誤り検査値を入力し、入力した誤り検査値のビット列に対してビットローテート演算を行った後、それぞれの演算結果を、後続する入力選択回路524へ出力する。このとき、ローテート演算器Aは、シフト量制御部Cから設定されたシフト量Aでビットローテート演算を行い、ローテート演算器Bは、シフト量制御部Cから設定されたシフト量Bでビットローテート演算を行う。
ローテート演算器A、Bを構成するシフトレジスタは、当該シフトレジスタを構成する各フリップフロップの最終段のフリップフロップの出力が、フィードバックして初段のフリップフロップの入力に直に接続されている。ローテート演算器A、Bは、誤り検査値のビット列を構成する各ビットが入力されると、クロック信号に同期して、各ビットを、シフト量制御部Cから設定されたシフト量A、Bが示すビット数分だけ、所定方向(以下、「シフト方向」という)にそれぞれシフトさせる。そして、ローテート演算器A、Bは、最終段のフリップフロップから出力された出力ビットを、初段のフリップフロップに入力ビットとしてフィードバックする。
なお、シフト方向は、ビット列の最上位ビットから最下位ビットへ向かう方向、または最下位ビットから最上位ビットへ向かう方向のいずれかの方向である。本実施形態では、シフト方向は、ローテート演算器A、Bでそれぞれ異なった方向であっても、予め中間制御部180との間で取り決めてあれば、基本的に任意である。
一方、シフト量制御部Cは、ブート処理中には、更新タイミング条件設定処理として、メインCPU110aから設定されたHWパラメータに基づいて、シフト量Aに係るデフォルトの更新タイミング条件を決定し、決定した更新タイミング条件に応じた設定を行う。また、シフト量制御部Cは、ブート処理中には、シフト量設定処理として、予め定められたデフォルトのシフト量A、Bをローテート演算器A、Bへ設定する処理を行う。また、シフト量制御部Cは、ブート処理後のコマンド送信処理の際に行われるビット変換処理の際に、ローテート演算器Bから出力されるビット列が変換された誤り検査値に基づいて、シフト量設定処理として、シフト量A、Bを新たなシフト量A、Bに更新し、更新後のシフト量A、Bをローテート演算器A、Bに設定する処理を行う。
シフト量制御部Cには、ローテート演算器A、Bに設定されるシフト量A、Bを記憶しておくシフト量記憶領域(CS)と、更新タイミング条件を記憶しておく更新タイミング条件記憶領域(CR)とが設けられている。そして、シフト量制御部Cの入力側は、ローテート演算器Bとデータ線で接続され、制御回路523と制御線で接続されている。また、シフト量制御部Cの出力側は、ローテート演算器A、Bとそれぞれ制御線で接続されている。更に、シフト量制御部Cは、内部バス400と接続されている。
デフォルトのシフト量A、Bは、予め中間制御部180との間で取り決められた値であれば、基本的に任意であり、シフト量Aとシフト量Bとの間で同じ値でも異なる値でもよく、メインROM110bの所定の記憶領域に記憶しておく。メインCPU110aは、ブート処理中の初期値設定処理の際に、メインROM110bからデフォルトのシフト量A、Bを読み出し、シフト量制御部Cのシフト量記憶領域(CS)にそれぞれ記憶しておく。
そして、シフト量制御部Cは、ブート処理中のHWパラメータ設定処理の際に、メインCPU110aから出力されたHWパラメータをデータバス400aから取り込む。シフト量制御部Cには、予め用意されたシフト量Aに係る複数の更新タイミング条件と複数のHWパラメータとの対応関係が分かるデータテーブルが設けられている。そして、シフト量制御部Cは、取り込んだHWパラメータによって特定の更新タイミング条件を一義的に決定することができる。そして、シフト量制御部Cは、ブート処理中の更新タイミング条件設定処理として、メインCPU110aから設定されたHWパラメータに対応する更新タイミング条件を、シフト量Aに係るデフォルトの更新タイミング条件として更新タイミング条件記憶領域(CR)に記憶しておく。なお、図7では、シフト量制御部Cと内部バス400とのデータ送受に関して乱数値のみを記載し、HWパラメータは省略している。
また、制御回路523は、ブート処理中の変換方式設定処理の際に、決定手段540の決定回路542から出力された変換方式制御信号の入力に基づいて、ローテート演算器に設定するべきシフト量をシフト量制御部Cにて制御させるための制御信号(以下、「シフト量制御信号」という)を、シフト量制御部Cへ出力する。シフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、シフト量A、Bに係るシフト量設定処理を行う。具体的には、シフト量制御部Cは、ブート処理中のシフト量Aに係るシフト量設定処理として、シフト量記憶領域(CS)に記憶されたシフト量Aをローテート演算器Aに設定するための制御信号(以下、「シフト量A設定信号」という)をローテート演算器Aに出力し、シフト量記憶領域(CS)に記憶されたデフォルトのシフト量Aをローテート演算器Aに設定する。また、シフト量制御部Cは、ブート処理中のシフト量Bに係るシフト量設定処理として、シフト量B設定信号をローテート演算器Bに出力し、シフト量記憶領域(CS)に記憶されたデフォルトのシフト量Bをローテート演算器Bに設定する。
本実施形態の変換方式は、上記のように、所定の動作モードの期間が開始すると、決定手段540の変換方式設定処理によって変換方式Aから変換方式Bに変更され、所定の動作モードの期間が終了すると、決定手段540の変換方式設定処理によって変換方式Bから変換方式Aに変更される。このとき、シフト量制御部Cは、変換方式Aでビット列変換処理を施す際のビットローテート演算で用いられるシフト量Aを、予め中間制御部180との間で取り決められた更新の方式(以下、「更新方式」という)に従って更新する。
シフト量Aに係る更新方式は、予め中間制御部180との間で取り決められ、シフト量Aが規則的に変動すれば、基本的に任意である。例えば、シフト量制御部Cが、デフォルトのシフト量Aに対して、予め設けられた所定値を更新タイミングが到来する毎に累積させていく方式などを採用することができる。また、シフト量制御部Cが、デフォルトのシフト量Aに対して、既存の遊技機が備えるパリティチェックやチェックサム等の演算機能を流用して、ローテート演算器Bから出力された誤り検査値を演算し、得られた結果を、更新タイミングが到来する毎に累積させていく方式などを採用することができる。この場合、ローテート演算器Bから出力された誤り検査値および既存の遊技機が備える演算機能を用いて得られた結果を累積させていく方式では、固定データである所定値を予め主制御部110に保持しておく必要がなく、静的な解析手法で不正に解析される虞れがないため、好適である。
また、図7では省略したが、これら既存の遊技機が備えるパリティチェック等の演算機能を実現するパリティチェック回路等を、生成手段520内に設け、シフト量Aに係る更新タイミングの到来に応じて、当該パリティチェック回路等から取得してきた値を用いることができる。この場合、シフト量Aの更新は、ワイヤードロジック制御方式のハードウェアで回路構成された生成手段520の内部処理だけで実現可能となる。このため、セキュリティ機能を追加に伴って増大する主制御部110の処理負荷やコードサイズを抑制することができるため、好適である。何れにしても、シフト量Aに係る更新方式が、中間制御部180との間で整合しており、ローテート演算器Bから出力された誤り検査値に基づいてシフト量Aが規則的に変動する方式であればよい。
また、更新のタイミングを規定する更新タイミング条件は、予め中間制御部180との間で取り決められて、シフト量Aが規則的に変動するように更新されるのであれば、基本的に任意である。例えば、シフト量制御部Cを、取得手段510のデータ判別回路511とデータ線で接続して、取得手段510から出力された制御コマンドの送出個数Pが所定数であるか否かを計数する。そして、取得手段510から出力された制御コマンドの送出個数Pが所定数以上となったら、シフト量設定処理を行ってシフト量Aを更新するように構成することができる。
本実施形態のシフト量Aに係る更新タイミング条件は、決定手段540の変換方式設定処理によって設定される変換方式が、変換方式Bから変換方式Aに変更される毎で、シフト量Aが規則的に変動されるようにシフト量Aを更新するように規定されているものとする。具体的には、本実施形態では、所定の動作モードの期間が開始し、変換方式Bでのビット列変換処理が行われる最中にシフト量Aを更新しておき、当該所定の動作モードの期間が終了した後には、更新されたシフト量Aを用いて変換方式Aでのビット列変換処理が行われるような更新タイミング条件を規定する。
この場合、シフト量Aに係る更新タイミング条件は、所定の動作モードの期間中に変換方式Bでビット列変換処理が行われ、制御コマンドに付加可能となった誤り検査値に基づいて規定されていれば、基本的に任意である。この制御コマンドに付加可能となった誤り検査値とは、所定の動作モードの期間中に変換方式Bでビット列が変換された後、入力選択回路524を介して保存回路526に保存され、送出回路527へ出力可能となった誤り検査値である。本実施形態では、所定の動作モードの期間中に、保存回路526に保存された誤り検査値が、当該期間中で何番目に保存された誤り検査値なのかに応じて、シフト量Aに係る複数の更新タイミング条件が予め用意されているものとする。例えば、所定の動作モードの期間中に、最初に保存回路526へ保存された誤り検査値に基づいて規定された更新タイミング条件や、最後に保存回路526へ保存された誤り検査値に基づいて規定された更新タイミング条件や、所定番目に保存回路526へ保存された誤り検査値に基づいて規定された更新タイミング条件等が、複数用意されているものとする。
このうち、本実施形態では、ブート処理中の更新タイミング条件設定処理の際に、HWパラメータに対応する更新タイミング条件として、所定の動作モードの期間中で、最初に保存回路526へ保存された誤り検査値に基づいて規定された更新タイミング条件が設定されるものとする。すなわち、本実施形態では、ブート処理後に所定の動作モードの期間が開始し、ローテート演算器Bから出力された誤り検査値が、当該期間中で最初に保存回路526へ出力されるときに、シフト量Aを更新するものとする。
より詳細には、ブート処理後、所定の動作モードの期間の開始に伴って、当該期間中の最初にコマンド送信処理が行われる際に、生成手段520の制御回路523には、決定手段540の決定回路542から変換方式制御信号が出力される。制御回路523は、変換方式制御信号の入力に基づいて、シフト量制御部Cにシフト量制御信号を出力する。シフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、所定の動作モードの期間が開始したことを検知することができる。
例えば、シフト量制御部Cに、制御回路523から出力されたシフト量制御信号の入力回数を計数するカウンタ回路等を設けておき、シフト量制御信号が入力される毎に1を加算する。そして、シフト量制御部Cは、当該カウンタ回路等の値が偶数または奇数に遷移したことを検知することで、シフト量制御部Cは、所定の動作モードの期間の開始または終了したことを検知することができる。例えば、カウンタ回路等の初期値が0であり、ブート処理中の変換方式設定処理によって出力されるシフト量制御信号によって1が加算されることを含めると、カウンタ回路等の値が偶数に遷移すれば、所定の動作モードの期間が開始したことを示し、その後、カウンタ回路等の値が奇数に遷移すれば、所定の動作モードの期間が終了したことを示す。よって、シフト量制御部Cは、シフト量制御信号の入力に基づいて、所定の動作モードの期間が開始または終了したことを検知し、現在が所定の動作モードの期間中であるか否かを判断することができる。すなわち、シフト量制御部Cは、シフト量制御信号の入力に基づいて、シフト量A、Bの更新タイミングを判断することができる。
シフト量制御部Cは、所定の動作モードの期間が開始したことを検知した場合、シフト量設定処理を行ってシフト量Aを更新する。すなわち、シフト量制御部Cは、シフト量Aに係るシフト量設定処理として、ローテート演算器Bから出力された誤り検査値に基づいて、シフト量記憶領域(CS)に記憶されたシフト量Aの値を、シフト量Aに係る所定の更新方式に従って更新する。そして、シフト量制御部Cは、シフト量A設定信号をローテート演算器Aに出力し、シフト量記憶領域(CS)に記憶された更新後のシフト量Aをローテート演算器Aに設定する。
なお、その後の所定の動作モードの期間中では、シフト量制御部Cには、ローテート演算器Bから誤り検査値が出力されるが、当該誤り検査値は、所定の動作モードの期間中で最初に出力された誤り検査値ではないため、シフト量Aに係る更新タイミング条件は成立せず、シフト量Aは更新されない。その後、所定の動作モードの期間が終了して、シフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が付加手段530へ出力される期間を経て、再び所定の動作モードの期間が開始し、決定手段540から変換方式制御信号が出力されれば、シフト量制御部Cは、上記のようにシフト量Aを再び更新する。
一方、シフト量Bは、予め中間制御部180との間で取り決められておらず、ランダムに変動する値に設定される。シフト量Bに係る更新方式は、シフト量Aのようにシフト量が規則的に変動する方式ではなく、乱数値をシフト量Bに用いる方式とする。この乱数値は、メインRAM110cの所定の乱数値記憶領域に記憶された既存の遊技機が備える特別図柄判定用乱数値や大当たり図柄用乱数値等を流用することができる。この場合、検査値生成部500内に新たに乱数生成回路を設ける必要がなく、検査値生成部500の回路構成を比較的簡易にすることができる。
また、乱数値について、図7では省略したが、生成手段520内に既存の遊技機が備える乱数生成回路を設け、シフト量Bに係る更新タイミングの到来に応じて、当該乱数生成回路から取得してきた値を、シフト量Bの値に用いることができる。この場合、シフト量Bの更新は、ワイヤードロジック制御方式のハードウェアで回路構成された生成手段520の内部処理だけで実現可能となる。このため、セキュリティ機能を追加に伴って増大する主制御部110の処理負荷やコードサイズを抑制することができ、好適である。何れにしても、シフト量Bの更新方式として用いる乱数値が、中間制御部180との間で取り決められた値とはなっておらず、当該乱数値を取得する乱数生成回路等が、中間制御部180に設けられた乱数生成回路と同期して作動するものでなければよい。
また、本実施形態でのシフト量Bに係る更新タイミング条件は、所定の動作モードの期間が開始し、変換方式Bでビット列変換処理が施された誤り検査値が、制御コマンドに付加可能となる毎に、その都度、シフト量Bを更新するように規定されているものとする。すなわち、変換方式Bでビット列変換処理が施された誤り検査値が、入力選択回路524を介して保存回路526に保存されて、送出回路527へ出力可能となる毎に、シフト量Bを更新するように規定されている
より詳細には、所定の動作モードの期間の開始に伴って、当該期間中の最初にコマンド送信処理が行われる際に、制御回路523は、決定手段540から出力された変換方式制御信号の入力に基づいて、シフト量制御信号をシフト量制御部Cへ出力する。シフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、所定の動作モードの期間が開始したことを検知することができる。
シフト量制御部Cは、所定の動作モードの期間が開始したことを検知した場合、シフト量設定処理を行ってシフト量Bを更新する。すなわち、シフト量制御部Cは、シフト量Bに係るシフト量設定処理として、ローテート演算器Bから出力された誤り検査値が入力される毎に、シフト量記憶領域(CS)に記憶されたシフト量Bの値を、シフト量Bに係る所定の更新方式に従って更新する。そして、シフト量制御部Cは、シフト量B設定信号をローテート演算器Bに出力し、シフト量記憶領域(CS)に記憶された更新後のシフト量Bをローテート演算器Bに設定する。なお、更新後のシフト量Bは、所定の動作モードの期間中に行われる次回のコマンド送信処理においてローテート演算器Bがビットローテート演算を行う際に反映される。
なお、その後の所定の動作モードの期間中は、制御回路523は、変換方式制御信号が出力されないためシフト量制御信号をシフト量制御部Cへ出力しないが、ローテート演算器Bから出力された誤り検査値は、その都度、保存回路526へ出力されるとともに、シフト量制御部Cへ入力される。このため、シフト量制御部Cは、ローテート演算器Bから出力された誤り検査値の入力に基づいて、その都度、新たな乱数値を取得し、シフト量Bを更新していけばよい。
また、所定の動作モードの期間が終了した際には、制御回路523は、変換方式制御信号の入力に基づいてシフト量制御信号をシフト量制御部Cへ出力する。シフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、所定の動作モードの期間が終了したことを検知することができる。
シフト量制御部Cは、所定の動作モードの期間が終了したことを検知した場合、シフト量設定処理を行う必要はない。すなわち、シフト量制御部Cは、ローテート演算器Bから出力された誤り検査値を破棄する等だけすればよく、シフト量Bの更新を行う必要はない。その後、シフト量Aを用いたビットローテート演算によってビット列が変換された誤り検査値が保存回路526へ出力された後、再び所定の動作モードの期間が開始すれば、シフト量制御部Cは、上記のようにシフト量Bを再び更新する。
なお、シフト量制御部Cは、所定の動作モードの期間が終了した後でも、シフト量Bの更新を行ってもよいが、シフト量Bに係る更新方式として、メインRAM110cの乱数値記憶領域に記憶された乱数値を用いる場合は、メインCPU110aとの間で、乱数値のデータ送受に係る不必要な処理が発生する。この場合、メインCPU110aに余計な処理負荷がかかるため、所定の動作モードの期間が終了したことを検知した場合には、シフト量Bの更新は行わない方が好適である。また、シフト量Bに係る更新方式として、生成手段520内に設けた乱数生成回路で乱数値を取得すると、乱数値のデータ送受に係る処理が発生しないため、当該期間が終了した後にシフト量Bを更新するか否かを問わず、メインCPU110aへの負荷は最小限に抑制される。しかも、シフト量Bに係る更新タイミング条件を設計するときに、メインCPU110aへの負荷を考慮することで設計自由度が制約されることもなく、好適である。
このように、シフト量Aは、予め中間制御部180との間で取り決められた所定の更新方式および更新タイミング条件に基づいて更新され、規則的に変動する。一方、シフト量Bは、予め中間制御部180との間で取り決められていない乱数値で更新され、ランダムに変動する。このため、シフト量Bを用いてビットローテート演算を行うローテート演算器Bでは、1回のビット列変換処理の前後でビット列を構成する各ビットの位置が結果的に何ビット移動したのかを示す「ローテート数」もランダムに変動することとなる。
しかしながら、ローテート演算器Bでは、ビット列変換処理毎でシフト量Bはランダムに変動されるものの、1回のビット列変換処理の中では、各ビットは規則的にシフトされるだけであり、ビット列変換処理毎で各ビットの値の組み合わせ自体が変化するわけではない。このため、中間制御部180側ではビットローテート演算を複数回行えば、ビット列が変換されていない誤り検査値(以下、「元の誤り検査値」という)のビット列に戻すことができる。ローテート数は、1回のビット列変換処理の前後でビット列を構成する各ビットの位置が結果的に何ビット移動したのかを示している。このため、ローテート数の取り得る範囲は、誤り検査値のビット列のビット幅で規定される。
例えば、誤り検査値のビット長を1バイト(8ビット)とした場合、ローテート数の取り得る範囲は0以上8以下の整数となり、ビットローテート演算を少なくとも8回行えば、元の誤り検査値のビット列に戻すことができる。よって、例えば、シフト量Bとして用いる乱数値の取り得る範囲が0〜255であっても、誤り検査値のビット幅を1バイト(8ビット)とした場合には、ビットローテート演算を少なくとも8回行うだけで、元の誤り検査値のビット列に戻すことができる。
また、特にシフト量Bがランダムに変動するローテート演算器Bでは、元の誤り検査値のビット列が異なっていても、ビット列変換処理後には同じビット列の誤り検査値が出力される場合が生じる。一般的には伝送データに付加する誤り検出符号が、伝送データ毎で重複した値をとることは、誤り検出の信頼度を低下させるものとして回避するべき事象であり、問題となる。しかしながら、本実施形態では、ビット列変換毎で重複した値が生じても元の誤り検査値に戻すことが可能であって、元の誤り検査値自体に誤り検出の信頼度があるため、問題とはならない。むしろ、ビット列変換毎で重複した値が生じた方が、不正者が制御コマンドと誤り検査値を複数窃取したときに、シフト量の変動に関する規則性の有無や変換方式の変更の有無を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することがより一層困難となり好適である。
このようにして、ビット列変換回路525では、コマンド送信処理の際に、生成回路521から出力された誤り検査値のビット列に対して、上記構成のシフト量A、Bを用いるローテート演算器A、Bにてビットローテート演算を行い、ビット列が変換された誤り検査値を、後続する入力選択回路524へそれぞれ出力する。
本実施形態では、ビット列変換回路525を比較的簡易な回路構成であるシフトレジスタで実現可能なローテート演算器A、Bで構成したため、ローテート演算器Aの回路を設計した後は、その回路データをローテート演算器Bにも流用することが可能である。このため、本実施形態では、回路設計やその検証作業に係る開発工数や開発難易度を抑制することができる。すなわち、本実施形態では、複数の変換方式が設けられたことで制御コマンドと誤り検査値の対応関係が解析困難となりセキュリティ強度が向上するという効果を、設けられた変換方式の数よりも少数の演算器を設計するだけで得ることができ、少ない開発コストで大きな不正防止効果を得ることができる。
また、本実施形態では、ローテート演算器Bでは、シフト量Bをランダムに変動させるため、ローテート演算器Bでビット列が変換された誤り検査値の各ビットは、ビット列変換処理毎で不規則にシフトする。このため、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが困難となる。よって、制御コマンドと誤り検査値の対応関係が更に解析困難となり、セキュリティ強度を更に向上させることができる。
また、本実施形態では、シフト量がランダムに変動する演算器を、ローテート演算器Bのみとしている。また、ローテート演算器Bでビット列が変換された誤り検査値が、制御コマンドに付加されて中間制御部180へ送信される場合も、所定の動作モードの期間の際、すなわち、所定の制御コマンド群が中間制御部180へ送信される期間に限定した。このため、中間制御部180側での誤り検査処理にて元の誤り検査値のビット列に戻す際に、シフト量をランダムに変動させることでビット列変換処理の試行回数が増加する傾向を、最大限抑制することができる。
また、本実施形態では、ローテート演算器Aで用いるシフト量Aを規則的に変動させている。よって、本実施形態では、ローテート演算器Bにてビット列が変換された誤り検査値が制御コマンドに付加される期間以外の際、すなわち、所定の動作モードの期間以外の際でも、ローテート演算器Aでビット列が変換された誤り検査値の各ビットが、ビット列変換処理毎で変動する。このため、本実施形態では、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが、所定の動作モードの期間以外に送信された誤り検査値に対しても困難となり、セキュリティ強度を更に向上させることができる。
また、ローテート演算器Aでは、シフト量Aの更新に関する規則性は、シフト量Aに係る更新方式および更新タイミング条件に依存し、更新タイミング条件は、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者がシフト量Aの更新に関する規則性を解析することが困難となり、セキュリティ強度を更に向上させることができる。
入力選択回路524は、マルチプレクサ等で構成されており、ビット列変換回路525と保存回路526との間の接続を選択的に切り替える機能を有する回路である。具体的には、入力選択回路524の入力側は、ビット列変換回路525を担う複数のローテート演算器(図7では、ローテート演算器A、B)とデータ線でそれぞれ接続され、制御回路523と制御線で接続されている。また、入力選択回路524の出力側は、保存回路526とデータ線で接続されている。入力選択回路524は、デフォルトは変換方式Aでビット列変換処理が施された誤り検査値を出力するローテート演算器Aとの接続が有効となるように予め設定されており、ローテート演算器Aから出力された誤り検査値を取り込み、保存回路526へ出力する。
制御回路523は、変換方式設定処理にて決定手段540の決定回路542から出力された変換方式制御信号の入力に基づき、入力選択回路524のローテート演算器A、Bのいずれかとの接続を有効とするための制御信号(以下、「入力選択信号」という)を入力選択回路524へ出力する。この入力選択信号は、変換方式制御信号が示す特定の変換方式でビット列変換処理が施された誤り検査値のみが入力されるように、当該変換方式に対応するローテート演算器との接続のみを有効とするための信号である。入力選択回路524は、例えば、制御回路523から、ローテート演算器Bとの接続を有効とする入力選択信号が入力されると、ローテート演算器Bとの接続のみを有効とするように切り替える。そして、入力選択回路524は、ローテート演算器Bから出力された変換方式Bでビット列変換処理が施された誤り検査値を取り込み、保存回路526へ出力する。
保存回路526は、レジスタ等から構成されており、ビット列変換回路525から出力されたビット列が変換された誤り検査値を保存しておく回路である。保存回路526の入力側は、入力選択回路524とデータ線で接続され、送出回路527と制御線で接続されている。また、保存回路526の出力側は、送出回路527とデータ線で接続されている。そして、保存回路526は、ビット列変換回路525から入力選択回路524を介して出力されたビット列が変換された誤り検査値を保存する。そして、保存回路526は、保存した誤り検査値を送出回路527へ出力するための作動許可信号が入力されると、当該作動許可信号の入力に基づいて、保存しておいた誤り検査値を、後続する送出回路527へ出力する。
また、保存回路526は、送出回路527から上記作動許可信号が入力されずに、送出回路527へ誤り検査値を出力しなかった場合でも、ビット列変換回路525から新たな誤り検査値が入力されたときには、当該新たな誤り検査値を上書き保存し、コマンド送信処理毎で新しい誤り検査値を保存する。このため、今回のコマンド送信処理において取得手段510から出力された制御コマンドが、制御コマンド(P)であるとすると、保存回路526には、制御コマンド(P−N)を用いて生成され、ビット列が変換された誤り検査値(P−N)が保存される。
送出回路527は、メインCPU110aから送出された誤り検査値の読み出し信号に応じて、保存回路526に保存された誤り検査値を内部バス400へ送出する回路である。送出回路527は、内部バス400と接続されているとともに、送出回路527の入力側は、保存回路526とデータ線で接続されている。そして、メインCPU110aがコマンド送信処理中に検査値付加処理を行う際に、内部バス400のアドレスバス400bに送出回路527を指定するアドレスデータ、制御バス400cに読み出し信号が送出されると、送出回路527は、保存回路526に上記作動許可信号を出力して保存された誤り検査値を取り込み、取り込んだ誤り検査値をデータバス400aへ送出する。
このようにして、生成手段520は、コマンド送信処理の際、取得手段510から出力された制御コマンド(P)を格納し、過去に格納しておいた制御コマンド(P−N)を用いて誤り検査値(P−N)を生成する。そして、生成手段520は、生成した誤り検査値(P−N)に対し、複数の変換方式でビット列変換処理を施すことができる。そして、生成手段520は、変換方式制御信号に応じた入力選択信号が入力選択回路524へ入力されることで、決定手段540にて決定された変換方式を用いてビット列が変換された誤り検査値(P−N)のみを、保存回路526で保存しておく。そして、生成手段520は、メインCPU110aから誤り検査値の読み出し信号が送出された場合には、当該読み出し信号の入力に基づいて、保存回路526に保存しておいたビット列が変換された誤り検査値(P−N)をデータバス400aへ送出する。よって、メインCPU110aによって生成手段520から読み出された誤り検査値(P−N)は、メインCPU110aが送信部550へ送出した制御コマンド(P)よりN個前の制御コマンド(P−N)を用いて生成される誤り検査値(P−N)であって、変更プロトコルに従って決定された変換方式にてビット列が変換された誤り検査値(P−N)となる。
[中間制御部の認証処理に関する内部構成]
これより、主制御部110に対する認証機能を備えた中間制御部180の認証処理に関する構成について説明する。
図8は、本実施形態に係る中間制御部180の認証処理に関する構成を示すブロック図である。
中間制御部180は、認証処理に関する機能構成として、受信部600と、検査部610と、付加部630と、中継送信部640と、検査値生成部620との機能を少なくとも有している。更に、検査値生成部620は、受信した制御コマンドを格納する格納部622と、誤り検査値を生成する生成部621と、生成した誤り検査値にビット列変換処理を施すビット列変換部624と、ビット列変換部624で用いる変換方式およびシフト量を制御する決定部623との機能を少なくとも有している。
主制御部110の送信部550から送信された制御コマンド(P)は、中間制御部180の受信部600にて受信される。受信部600は、主制御部110からの送信データに上記データ形式変換処理に対応する処理等を施して制御コマンド(P)とし、自身の受信バッファに記憶する機能を有するものである。また、受信部600は、制御コマンド(P)の受信割込要求があった旨を示す信号を出力したり、制御コマンド(P)の受信が完了したことを示すフラグを立てたりして、CPU180aが、主制御部110から送信された制御コマンド(P)の受信が完了したことを検知できるようにする機能を有するものである。
また、受信部600は、受信した制御コマンド(P)に誤り検査値(P−N)が付加されていなければ、当該制御コマンド(P)を検査値生成部620および中継送信部640へ出力する機能を有するものである。また、受信部600は、受信した制御コマンド(P)に誤り検査値(P−N)が付加されていれば、受信した誤り検査値付きの制御コマンド(P)から付加されている誤り検査値(P−N)を抽出して検査部610へ出力するとともに、誤り検査値(P−N)を抽出後の制御コマンド(P)を検査値生成部620および付加部630へ出力する機能を有するものである。なお、受信部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が有する、過去に格納しておいた制御コマンドを用いて誤り検査値を生成し検査部610へ出力するとともに、今回受信した制御コマンドで変換方式を決定する機能(以下、「誤り検査値出力機能」という)は、主制御部110の検査値生成部500が有する誤り検査値生成機能と同様のものである。また、検査値生成部620は、主制御部110と同様に、誤り検査値出力機能を予め複数有しており、その具体的な実施態様として、主制御部110と同様の変更条件およびシフト量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のシフト量制御部C)を有している。
決定部623が有するシフト量Aに係る更新方式は、主制御部110のシフト量制御部Cと同様に、変換方式Bでビット列変換処理が施された誤り検査値に基づいて規定されている。変換方式Bでビット列変換処理が施された当該誤り検査値は、ビット列変換部624から検査部610へ出力された複数の誤り検査値(P−N)のうち、受信部600から出力された誤り検査値と一致した誤り検査値(P−N)とする。また、決定部623が有するシフト量Aに係る複数の更新タイミング条件のうち、ブート処理中に設定されるHWパラメータに対応する更新タイミング条件は、主制御部110のシフト量制御部Cと同様に、所定の動作モードの期間中で、最初に制御コマンドに付加される誤り検査値に基づいて規定されているものとする。
そして、決定部623の機能を実現するために、RAM180cには、主制御部110の変更条件記憶領域(D)に相当する記憶領域や、主制御部110の送出個数記憶領域(P)に相当する受信個数記憶領域(P)が設けられている。更新タイミング条件記憶領域(CR)、シフト量記憶領域(CS)も同様である。
また、格納部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が有する機能と同様のものである。
なお、変換方式が変換方式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から出力された誤り検査値とを比較し、両者が一致する場合は、検査結果は正常であると判断され、両者が一致しない場合は、検査結果は正常でないと判断される。なお、検査部610は、受信部600から誤り検査値が出力されなかった場合には、当該照合処理を行わない。
なお、変換方式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へ出力する。なお、検査部610は、受信部600から誤り検査値が出力されなかった場合にも、現在が所定の動作モードの期間が開始した時点であれば、ビット列変換部624から検査部610へ出力された誤り検査値(P−N)を、決定部623へ出力する。そして、決定部623は、シフト量Aを更新するタイミングであれば、検査部610から出力された誤り検査値(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は、受信部600から出力された、誤り検査値(P−N)が付加されていない制御コマンド(P)を、演出制御部120へ送信する機能を有するものである。また、中継送信部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では、制御コマンドの送信タイミングとなると、メインCPU110aがメインROM110bから「MODE」の情報と「DATA」の情報とを読み出して制御コマンドを生成し、メインRAM110cの送信データ用記憶領域にセットする。そして、メインCPU110aは、コマンド送信処理の際に、送信データ用記憶領域にセットされた制御コマンドを、内部バス400に送出して送信部550へ書き込み、送信部550にて中間制御部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や演出制御部120との間でのタイミング調整を行う。
ステップS11において、メインCPU110aは、メインRAM110cの作業領域をクリアする。
ステップS12において、メインCPU110aは、各種乱数値の初期値の設定をはじめとする、遊技機1の初期化に際して初期値を必要とするメインRAM110cの作業領域に初期値を設定し、バックアップが有効でない場合のメインRAM110cの設定処理を行う。
ステップS13において、メインCPU110aは、電源投入時指定コマンドを生成し、生成した電源投入時指定コマンドをメインRAM110cの送信データ用記憶領域にセットする。
ステップS14において、メインCPU110aは、送信データ用記憶領域にセットされている制御コマンドを中間制御部180に送信するコマンド送信処理を行う。すなわち、電源投入時指定コマンドを中間制御部180に送信する。なお、ステップS14およびステップS16のコマンド送信処理では、検査値生成部500において、変換方式設定処理、検査値生成処理、ビット列変換処理、およびシフト量設定処理が行われる。更に、ステップS14およびステップS16のコマンド送信処理では、メインCPU110aが固有情報を格納回路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のコマンド送信処理においても、上記と同様に、検査値生成部500において、変換方式設定処理、検査値生成処理、ビット列変換処理、およびシフト量設定処理が行われるが、詳細については後述する。
ステップ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のブート処理について説明する。
図14は、本実施形態に係る主制御部110によるブート処理を示すフローチャートである。なお、図14(a)に示すブート処理1は、メインCPU110aにて行われる処理であり、図14(b)に示すブート処理2は、検査値生成部500にて行われる処理である。
遊技機1に電源が投入されると、主制御部110にシステムリセットが発生し、メインCPU110aは、ブートROM110dに予め記憶されたブート処理用プログラムに基づいて、ブート処理1として、以下のステップS51〜ステップS54に示す処理を行う。
ステップS51において、メインCPU110aは、内部状態を割込禁止に設定する。
ステップS52において、メインCPU110aは、自身の初期化後、メインCPU110a自身が正常に作動可能かどうかを確認する自己診断処理を行う。自己診断処理の結果、正常に作動可能であればステップS53に処理を移し、正常に作動可能でなければ、その後の処理を行わない。
ステップS53において、メインCPU110aは、内蔵レジスタや周辺回路等への初期値設定処理を行う。具体的には、メインCPU110aは、スタックポインタにスタックポイント指定アドレスを設定し、内蔵レジスタおよび周辺回路等の初期化、入出力ポートの初期化を行う。そして、メインCPU110aは、初期値を必要とするこれらの内蔵レジスタや周辺回路等へ各種の初期値を設定する。このとき、メインCPU110aは、検査値生成部500の各構成部に対しても同様の処理を施して、検査値生成部500に対する初期値設定処理を行う。
ステップS54において、メインCPU110aは、検査値生成部500に対してHWパラメータ設定処理を行う。具体的には、メインCPU110aは、検査値生成部500に対するHWパラメータを読み出すための読み出し信号、およびメインROM110bのHWパラメータが記憶された記憶領域を指定するアドレスデータを内部バス400に送出する。そして、メインCPU110aは、当該読み出し信号によりメインROM110bから出力されたHWパラメータを、内部バス400から取り込む。
続いて、メインCPU110aは、取り込んだHWパラメータを検査値生成部500の決定手段540へ書き込むための書き込み信号、および決定手段540の決定回路542を指定するアドレスデータを内部バス400に送出する。また、メインCPU110aは、取り込んだHWパラメータを生成手段520へ書き込むための書き込み信号、および生成手段520のビット列変換回路を担うシフト量制御部Cを指定するアドレスデータを内部バス400に送出する。本処理を終了すると、ブート処理1が終了する。
なお、ステップS54のHWパラメータ設定処理は、メインCPU110aが行う初期値設定処理の中でも、検査値生成部500にHWパラメータを設定する処理を特筆したものであるため、初期値設定処理の一環として、ステップS53の中で行うように構成することも可能である。
検査値生成部500では、メインCPU110aの上記書き込み信号の入力に基づいて、メインCPU110aから送出されたHWパラメータを内部バス400から取り込む。そして、決定手段540の決定回路542、および生成手段520のビット列変換回路525を担うシフト量制御部CへHWパラメータをセットする。そして、検査値生成部500は、メインCPU110aからセットされたHWパラメータに基づいて、ブート処理2として、以下のステップS61〜ステップS64に示す処理を行う。
ステップS61において、検査値生成部500は、変更条件設定処理を行う。具体的には、決定手段540の決定回路542は、セットされたHWパラメータが、予め用意された複数の変更条件のうち、どの変更条件に対応した値であるかを確認する。そして、決定回路542は、セットされたHWパラメータに対応する変更条件を、デフォルトの変更条件として変更条件記憶領域(D)にセットする。そして、決定回路542は、変更条件記憶領域(D)にセットされた変更条件を、決定手段540の判定回路541を担う変更条件記憶器541aにセットする。判定回路541は、変更条件記憶器541aにセットされた変更条件のビットパターンを比較器541bに出力する。
これによって、決定手段540は、コマンド送信処理の際に、取得手段510から出力された制御コマンドが変更条件を満たす制御コマンドであるか否かの判定を行うことができ、判定結果に応じた変換方式設定処理を行うことができる。
ステップS62において、検査値生成部500は、更新タイミング条件設定処理を行う。具体的には、生成手段520のビット列変換回路525を担うシフト量制御部Cは、セットされたHWパラメータが、予め用意された複数の更新タイミング条件のうち、どの更新タイミング条件に対応した値であるかを確認する。そして、シフト量制御部Cは、セットされたHWパラメータに対応する更新タイミング条件を、デフォルトの条件として更新タイミング条件記憶領域(CR)にセットする。そして、シフト量制御部Cは、更新タイミング条件記憶領域(CR)にセットされた更新タイミング条件によって、シフト量Aを更新するものとする。
ステップS63において、検査値生成部500は、変換方式設定処理を行う。具体的には、決定手段540の決定回路542は、予め取り決められたデフォルトの変換方式である変換方式Aを示す変換方式情報を、デフォルトの値として変換方式情報記憶領域(S)にセットする。そして、決定回路542は、変換方式情報記憶領域(S)にセットされた値に基づいて、生成手段520のビット列変換回路525を担う複数のローテート演算器のうちのローテート演算器Aでビット列変換処理が施された誤り検査値が出力されるように、生成手段520の制御回路523へ変換方式制御信号を出力する。生成手段520の制御回路523は、当該変換方式制御信号に対応する入力選択信号を入力選択回路524へ出力する。
ステップS64において、検査値生成部500は、シフト量設定処理を行う。具体的には、生成手段520の制御回路523は、上記変換方式制御信号の入力に基づいて、ビット列変換回路525を担うシフト量制御部Cへシフト量制御信号を出力する。ビット列変換回路525を担うシフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、ビット列変換回路525を担うローテート演算器Aに対してシフト量A設定信号を出力し、シフト量記憶領域(CS)に記憶されたデフォルトのシフト量Aをローテート演算器Aに設定する。また、シフト量制御部Cは、制御回路523から出力された当該シフト量制御信号の入力に基づいて、ビット列変換回路525を担うローテート演算器Bに対してシフト量B設定信号を出力し、シフト量記憶領域(CS)に記憶されたデフォルトのシフト量Bをローテート演算器Bに設定する。
これによって、生成手段520は、ビット列変換処理の際に、変換方式情報記憶領域(S)に記憶された変換方式情報に対応したローテート演算器によってビットローテート演算が行われた誤り検査値を保存回路526へ出力することができる。更に、当該誤り検査値を、シフト量記憶領域(CS)に記憶されたシフト量を用いてビットローテート演算が行われ、ビット列が変換された誤り検査値とすることができる。そして、メインCPU110aは、ブート処理後のコマンド送信処理では、検査値付加処理を実行する場合、当該変換方式および当該シフト量でビット列が変換された誤り検査値を、制御コマンドへ付加することができる。本処理を終了すると、ブート処理2が終了する。
次に、主制御部110のコマンド送信処理について説明する。
図15は、本実施形態に係る主制御部110におけるコマンド送信処理1を示すフローチャートである。図16は、本実施形態に係る主制御部110におけるコマンド送信処理2を示すフローチャートである。図17は、本実施形態に係る主制御部110におけるコマンド送信処理3を示すフローチャートである。
なお、図15に示すコマンド送信処理1は、メインCPU110aにて行われる処理である。また、図16に示すコマンド送信処理2は、メインCPU110aから内部バス400を介して送信部550へ送出データ(制御コマンドまたは誤り検査値)が送出された際に、検査値生成部500にて行われる処理である。また、図17に示すコマンド送信処理3は、メインCPU110aが検査値付加処理を行う際に、検査値生成部500にて行われる処理であり、図15のステップS77に示すメインCPU110aの処理に応答して行われるものである。
まず、図15を用いて、コマンド送信処理1について説明する。
メインCPU110aは、メインROM110bから「MODE」の情報と「DATA」の情報とを読み出して制御コマンドを生成し、メインRAM110cの送信データ用記憶領域にセットする。そして、メインCPU110aは、コマンド送信処理1として、以下のステップS71〜ステップS78に示す処理を行う。
ステップS71において、メインCPU110aは、メインRAM110cの送出個数記憶領域(P)の値を1加算して更新する。
ステップS72において、メインCPU110aは、送信データ用記憶領域にセットされた制御コマンド(P)が制御コマンド(1)に該当するか否かを判定する。具体的には、メインCPU110aは、送出個数記憶領域(P)の値を参照し、P=1であるか否かを判定する。P=1であれば、ステップS73に処理を移し、P=1でなければ、ステップS75に処理を移す。
ステップS73において、メインCPU110aは、メインROM110bに記憶されている固有情報を読み出す。
ステップS74において、メインCPU110aは、読み出した固有情報を内部バス400を介して検査値生成部500へ送出し、読み出した固有情報を、検査値生成部500の生成手段520を担う格納回路522の初期設定値として設定する。このとき、検査値生成部500では、メインCPU110aが送出した固有情報は、取得手段510によって内部バス400から取り込まれ、生成手段520へ出力される。そして、取得手段510から出力された固有情報は、生成手段520によって格納回路522を担う各格納回路(P−1)〜(P−N)へ格納される。
ステップS75において、メインCPU110aは、送信データ用記憶領域にセットされた制御コマンド(P)を送信部550へ書き込む。具体的には、メインCPU110aは、内部バス400のデータバス400aに制御コマンド(P)、アドレスバス400bに送信部550を指定するアドレスデータ、制御バス400cに制御コマンド(P)の書き込み信号を送出する。
送信部550では、メインCPU110aから送出された制御コマンド(P)の書き込み信号と、送信部550を指定するアドレスデータとが入力されると、データバス400aから制御コマンド(P)を送信バッファ551に取り込み、取り込んだ制御コマンド(P)を送信回路552へ受け渡して中間制御部180へ送信する。
ステップS76において、メインCPU110aは、今回のコマンド送信処理が、送信する制御コマンド(P)に誤り検査値を付加するタイミングであるか否かを判断する。誤り検査値を付加するタイミングであるか否かの判断は、遊技処理用プログラムに認証処理用プログラムの呼び出し命令が記述されているか否かによって行われる。メインCPU110aは、今回のコマンド送信処理が、制御コマンド(P)に誤り検査値を付加するタイミングであれば、ステップS77に処理を移し、誤り検査値を付加するタイミングでなければ、コマンド送信処理1を終了する。
メインCPU110aは、送信部550に書き込んだ制御コマンド(P)に誤り検査値を付加するタイミングであれば、検査値付加処理として、以下のステップS77〜ステップS78に示す処理を行う。
ステップS77において、メインCPU110aは、検査値生成部500から誤り検査値を読み出す。具体的には、メインCPU110aは、内部バス400のアドレスバス400bに検査値生成部500の生成手段520を担う送出回路527を指定するアドレスデータ、制御バス400cに誤り検査値の読み出し信号を送出する。
検査値生成部500では、メインCPU110aの上記読み出し信号の入力に基づいて、予め保存回路526に保存しておいた誤り検査値をメインCPU110aへ送出する処理を行う。この処理について、図17を用いて後述する。そして、メインCPU110aは、検査値生成部500から読み出した誤り検査値(P−N)をデータバス400aから取り込み、メインRAM110cの送信データ用記憶領域にセットし、ステップS78に処理を移す。
ステップS78において、メインCPU110aは、送信データ用記憶領域にセットされた誤り検査値(P−N)を送信部550へ書き込む。具体的には、メインCPU110aは、内部バス400のデータバス400aに誤り検査値(P−N)、アドレスバス400bに送信部550を指定するアドレスデータ、制御バス400cに誤り検査値を書き込むための書き込み信号を送出する。本処理を終了すると、コマンド送信処理1が終了する。
送信部550では、メインCPU110aから送出された誤り検査値(P−N)の書き込み信号と、送信部550を指定するアドレスデータとが入力されると、データバス400aから誤り検査値(P−N)を送信バッファ551に取り込み、取り込んだ誤り検査値(P−N)を送信回路552へ受け渡して中間制御部180へ送信する。
なお、ステップS78において、メインCPU110aが、誤り検査値(P−N)を送信部550へ書き込むタイミングは、タイマ割込処理の実行周期内で、且つ、制御コマンド(P)が送信バッファ551へ書き込み完了されるまでに要する時間が経過した後に、誤り検査値(P−N)の送信バッファ551への書き込みが開始されるようなタイミングに設定する。これによって、誤り検査値(P−N)が送信バッファ551へ書き込まれるタイミングは、送信バッファ551に書き込まれる制御コマンド(P)の直後に連続して誤り検査値(P−N)が書き込まれるようなタイミングとなる。
誤り検査値の送信部550への書き込みタイミングを上記のように設定することで、送信バッファ551のオーバーランやアンダーラン等が発生し、送信する制御コマンド(P)に対して付加するべき誤り検査値(P−N)が適切に付加されなくなるおそれを抑止することができる。このことが、中間制御部180での誤り検査処理の際に、実際に付加されて送信された誤り検査値が本来付加するべき誤り検査値と整合していないことに起因して誤り検査処理の検査結果が正常と判定されなくなるおそれを抑止し、誤り検査処理の確度を向上させることができる。
また、誤り検査値の送信部550への書き込みタイミングを上記のように設定することで、今回付加するべき誤り検査値(P−N)の送信バッファ551への書き込みタイミングと、制御コマンド(P)の送信バッファ551への書き込みタイミングの時間軸上の位置関係が明確化され、誤り検査値(P−N)は制御コマンド(P)の直後に確実に付加され、一つの送信データとして送信されることとなる。これにより、誤り検査値(P−N)が、誤り検査値(P−N)単体で中間制御部180へ送信されることがない。よって、不正者が、主制御部110と中間制御部180の間の送信データを窃取して、誤り検査値(P−N)を再利用することが困難となり、遊技機1のセキュリティ強度を向上することができる。
次に、図16を用いて、コマンド送信処理2について説明する。
検査値生成部500は、図15のコマンド送信処理1において、メインCPU110aから内部バス400を介して送信部550へ送出データ(制御コマンドまたは誤り検査値)が送出された際に、コマンド送信処理2として、以下のステップS81〜ステップS93に示す処理を行う。
ステップS81において、検査値生成部500は、メインCPU110aから送信部550へ送出データ(制御コマンドまたは誤り検査値)が書き込まれたか否かを判断する。具体的には、検査値生成部500の取得手段510は、メインCPU110aから送信部550へ送出された書き込み信号が、内部バス400の制御バス400cから取得手段510の制御回路512へも入力されたか否かを判断する。制御回路512は、当該書き込み信号が入力されるまで待機し、当該書き込み信号が入力されると、ステップS82に処理を移す。
ステップS82において、検査値生成部500は、メインCPU110aが送信部550へ送出した送出データを内部バス400のデータバス400aから取り込む。具体的には、取得手段510の制御回路512は、上記書き込み信号の入力に基づいて、データバス400aに送出された送出データを、取得手段510のデータ判別回路511が取り込むよう作動させるための作動許可信号を出力する。データ判別回路511は、当該作動許可信号の入力に基づいて、データバス400aから当該送出データを取り込む。
ステップS83において、検査値生成部500は、取り込んだ送出データが制御コマンド(P)であるか否かを判別する。具体的には、取得手段510のデータ判別回路511は、内部バス400のデータバス400aから取り込んだ送出データのビットパターンが制御コマンド(P)を示すものであるか否かを判別する。そして、データ判別回路511は、取り込んだ送出データのビットパターンが制御コマンド(P)を示すものであれば、ステップS85に処理を移し、取り込んだ送出データのビットパターンが制御コマンド(P)を示すものでなければ、ステップS84に処理を移す。
ステップS84において、検査値生成部500は、取り込んだ送出データを破棄する。具体的には、取得手段510のデータ判別回路511は、取り込んだ送出データが制御コマンド(P)でなければ、当該送出データを破棄し、コマンド送信処理2を終了する。なお、この場合の送出データは、メインCPU110aが検査値付加処理を行い、送信部550へ書き込むためにデータバス400aへ送出した誤り検査値となる。
ステップS85において、検査値生成部500は、取り込んだ制御コマンド(P)を検査値生成部500内部の決定手段540および生成手段520へ出力する。具体的には、取得手段510の制御回路512は、メインCPU110aから送出された上記書き込み信号の入力から所定時間遅延して、データ判別回路511へ作動許可信号を出力する。データ判別回路511は、当該作動許可信号の入力に基づいて、取り込んだ制御コマンド(P)を決定手段540および生成手段520へ出力する。続いて、制御回路512は、データ判別回路511から出力された制御コマンドが、決定手段540および生成手段520で入力可能となるよう、これらの手段に対して作動許可信号を出力する。
ステップS86において、検査値生成部500は、取り込んだ制御コマンド(P)が変更条件を満たす制御コマンドであるか否かを判定する。具体的には、決定手段540の判定回路541は、取得手段510の制御回路512から出力された作動許可信号の入力に基づいて、当該制御コマンド(P)が、所定の制御コマンド群のうち最初に生成される制御コマンド、および、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのいずれかに該当するか否かを判定する。判定回路541は、制御コマンド(P)が、当該いずれかに該当する制御コマンドであれば、取得手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドであることを示す判定結果信号を決定回路542へ出力し、ステップS87に処理を移す。一方、判定回路541は、制御コマンド(P)が、当該いずれかに該当する制御コマンドでなければ、取得手段510から出力された制御コマンド(P)が変更条件を満たす制御コマンドでないことを示す判定結果信号を決定回路542へ出力し、ステップS88に処理を移す。
ステップS87において、検査値生成部500は、誤り検査値のビット列を変換する際に用いる変換方式を変更する。具体的には、決定手段540の決定回路542は、変換方式を変更するべく、変換方式情報記憶領域(S)に記憶された変換方式情報を示すSの値を変更する。具体的には、決定回路542は、変換方式情報を示すSの値を予め取り決められた変更方式に従って変更し、変更後の変換方式情報を示すSの値であるS’を変換方式情報記憶領域(S)へ記憶する。そして、決定回路542は、変更後の変換方式を生成手段520へ設定するべく、変換方式情報記憶領域(S)に記憶された変更後のS’の値に基づく変換方式制御信号を、生成手段520の制御回路523へ出力する。
生成手段520の制御回路523は、決定回路542から出力された変換方式制御信号に基づいて、生成手段520のビット列変換回路525を担う複数のローテート演算器のうちの特定のローテート演算器と生成手段520の入力選択回路524との接続のみを有効とする入力選択信号を、入力選択回路524へ出力する。入力選択回路524は、当該入力選択信号に基づいて、特定のローテート演算器との接続の設定を行う。生成手段520は、入力選択回路524へ当該入力選択信号が入力されることで、変更後の変換方式に応じた当該特定のローテート演算器でビット列が変換された誤り検査値が、入力選択回路524を介して保存回路526に保存可能となる。また、生成手段520の制御回路523は、決定回路542から出力された当該変換方式制御信号の入力に基づいて、ビット列変換回路525を担うシフト量制御部Cへシフト量制御信号を出力する。これによって、シフト量制御部Cは、所定の動作モードの期間が開始または終了したことを検知することができる。
ステップS88において、検査値生成部500は、取り込んだ制御コマンド(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)に新たに取り込んで格納する。
ステップS89において、検査値生成部500は、過去に格納しておいた制御コマンド(P−N)を用いて誤り検査値(P−N)を生成して内部のビット列変換回路525へ出力する。具体的には、生成手段520の生成回路521は、生成手段520の制御回路523から出力された作動許可信号の入力に基づいて、格納回路522から出力された制御コマンド(P−N)を取り込む。そして、生成回路521は、取り込んだ制御コマンド(P−N)を用いて、予め設定された生成方式で誤り検査値(P−N)を生成し、ビット列変換回路525へ出力する。
ステップS90において、検査値生成部500は、生成した誤り検査値(P−N)に対してビット列変換処理を施し、内部の入力選択回路524を介して保存回路526へ出力する。具体的には、生成手段520のビット列変換回路525を担うローテート演算器Aは、生成回路521から出力された誤り検査値(P−N)を取り込んで、取り込んだ誤り検査値(P−N)のビット列に予め設定されたシフト量Aでビットローテート演算を行う。そして、ローテート演算器Aは、シフト量Aでビットローテート演算が行われた誤り検査値(P−N)を、変換方式Aでビット列変換処理が施された誤り検査値(P−N)として、入力選択回路524へ出力する。また、ビット列変換回路525のローテート演算器Bは、生成回路521から出力された誤り検査値(P−N)を取り込んで、取り込んだ誤り検査値(P−N)のビット列に予め設定されたシフト量Bでビットローテート演算を行う。そして、ローテート演算器Bは、シフト量Bでビットローテート演算が行われた誤り検査値(P−N)を、変換方式Bでビット列変換処理が施された誤り検査値(P−N)として、入力選択回路524およびシフト量制御部Cへ出力する。
ステップS91において、検査値生成部500は、ビット列が変換された誤り検査値(P−N)を保存する。具体的には、生成手段520の入力選択回路524は、制御回路523から出力された入力選択信号に基づいて、ローテート演算器A、Bのいずれかとの接続のみを有効に作動させている。よって、ビット列変換回路525は、入力選択回路524との接続が有効に作動された特定のローテート演算器から出力された誤り検査値のみを、ビット列が変換された誤り検査値(P−N)として保存回路526へ出力する。保存回路526は、ビット列変換回路525から入力選択回路524を介して出力された当該ビット列が変換された誤り検査値(P−N)を保存する。
ステップS92において、検査値生成部500は、シフト量の更新タイミングか否かを判断する。具体的には、生成手段520のビット列変換回路525を担うシフト量制御部Cは、制御回路523から出力されたシフト量制御信号の入力に基づいて、所定の動作モードの期間の開始または終了を検知し、現在が所定の動作モードの期間中であるか否かを判断する。そして、シフト量制御部Cは、現在が所定の動作モードの期間が開始した時点であれば、現在はシフト量Aおよびシフト量Bを更新するタイミングであると判断し、ステップS93に処理を移す。また、シフト量制御部Cは、現在が所定の動作モードの期間中の時点であれば、現在はシフト量Bのみを更新するタイミングであると判断し、ステップS93に処理を移す。また、シフト量制御部Cは、現在が所定の動作モードの期間が終了した時点であれば、現在はシフト量Bの更新を中止するタイミングであると判断し、ステップS93に処理を移す。一方、シフト量制御部Cは、現在が所定の動作モードの期間が開始または終了した時点、若しくは現在が所定の動作モードの期間中の時点でなければ、現在はシフト量を更新するタイミングではないと判断し、コマンド送信処理2を終了する。
ステップS93において、検査値生成部500は、シフト量の制御を行う。具体的には、生成手段520のビット列変換回路525を担うシフト量制御部Cは、現在が所定の動作モードの期間が開始した時点であれば、シフト量Aおよびシフト量Bを更新する。すなわち、シフト量制御部Cは、シフト量Aに係るシフト量設定処理として、ローテート演算器Bから出力された誤り検査値に基づいて、シフト量記憶領域(CS)に記憶されたシフト量Aの値を、シフト量Aに係る所定の更新方式に従って更新する。そして、シフト量制御部Cは、シフト量A設定信号をローテート演算器Aに出力し、シフト量記憶領域(CS)に記憶された更新後のシフト量Aをローテート演算器Aに設定する。また、シフト量制御部Cは、シフト量Bに係るシフト量設定処理として、乱数値を取得し、これを用いてシフト量記憶領域(CS)に記憶されたシフト量Bの値を更新する。そして、シフト量制御部Cは、シフト量B設定信号をローテート演算器Bに出力し、シフト量記憶領域(CS)に記憶された更新後のシフト量Bをローテート演算器Bに設定する。
また、シフト量制御部Cは、現在が所定の動作モードの期間中の時点であれば、シフト量Bのみを更新する。すなわち、シフト量制御部Cは、シフト量Bに係るシフト量設定処理として、乱数値を取得してシフト量記憶領域(CS)に記憶されたシフト量Bの値を更新し、シフト量B設定信号を出力して更新後のシフト量Bをローテート演算器Bに設定する。また、シフト量制御部Cは、現在が所定の動作モードの期間が終了した時点であれば、シフト量Bの更新を行わずに、ローテート演算器Bから出力された誤り検査値を破棄する。本処理を終了すると、コマンド送信処理2が終了する。
なお、ステップS88の処理は、ステップS85からステップS89までの間に行われていればよく、ステップS87の直後に行われる必要はない。
次に、図17を用いて、コマンド送信処理3について説明する。
検査値生成部500は、図15のコマンド送信処理1において、メインCPU110aが検査値付加処理を行う際に、メインCPU110aから送出された誤り検査値の読み出し信号に応答し、コマンド送信処理3として、以下のステップS101〜ステップS103に示す処理を行う。
ステップS101において、検査値生成部500は、メインCPU110aから送出された誤り検査値の読み出し信号と、検査値生成部500の生成手段520を担う送出回路527を指定するアドレスデータとが入力されると、ステップS102に処理を移す。
ステップS102において、検査値生成部500の送出回路527は、保存回路526へ作動許可信号を出力し、保存回路526に保存された誤り検査値(P−N)を取り込む。
ステップS103において、検査値生成部500の送出回路527は、取り込んだ誤り検査値(P−N)をデータバス400aへ送出する。これにより、メインCPU110aでは、保存回路526に保存された誤り検査値(P−N)を取得することができる。なお、保存回路526に保存された誤り検査値(P−N)は、ビット列変換回路525によって変換方式Aまたは変換方式Bのいずれかでビット列が変換された誤り検査値であり、制御コマンド(P)には、変換方式Aまたは変換方式Bのいずれかでビット列が変換された誤り検査値(P−N)が付加されることとなる。本処理を終了すると、コマンド送信処理3が終了する。
[中間制御部の制御処理]
これより、本発明の実施形態に係る遊技機1の中間制御部180の制御処理について説明する。
図18は、本実施形態に係る中間制御部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)に誤り検査値が付加されているか否かを判断する。CPU180aは、例えば、誤り検査値が付加されたことでデータ長が増加したか否か、または誤り検査値が付加されたことを識別する識別ビットの有無などで、制御コマンド(P)に誤り検査値が付加されているか否かを判断することができる。CPU180aは、受信部600の受信バッファに記憶された制御コマンド(P)に誤り検査値が付加されていれば、ステップS4090に処理を移す。
一方、CPU180aは、受信部600の受信バッファに記憶された制御コマンド(P)に誤り検査値が付加されていなければ、当該制御コマンド(P)を検査値生成部620の格納部622および決定部623、ならびに中継送信部640へ出力し、ステップS4080に処理を移す。
ステップS4080において、CPU180aは、制御コマンド(P)を送信データとして、中継送信部640にて演出制御部120へ直ちに送信し、ステップS4110に処理を移す。
ステップS4090において、CPU180aは、受信部600の受信バッファに記憶された制御コマンド(P)から、当該制御コマンド(P)に付加された誤り検査値(P−N)を抽出する。
ステップS4100において、CPU180aは、抽出した誤り検査値(P−N)を検査部610へ出力するとともに、誤り検査値(P−N)を抽出後の制御コマンド(P)を検査値生成部620の格納部622および決定部623、ならびに付加部630へ出力する。
ステップS4110において、CPU180aは、受信部600から出力された制御コマンド(P)を取り込み、当該制御コマンド(P)の種別を決定部623にて判定する。具体的には、CPU180aは、当該制御コマンド(P)が、所定の制御コマンド群のうち最初に生成される制御コマンド、および、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのいずれかに該当するか否かを判定する。CPU180aは、制御コマンド(P)が、当該いずれかに該当する制御コマンドであれば、制御コマンド(P)が変更条件を満たす制御コマンドであると判断し、ステップS4120に処理を移す。一方、CPU180aは、制御コマンド(P)が、当該いずれかに該当する制御コマンドでなければ、制御コマンド(P)が変更条件を満たす制御コマンドでないと判断し、ステップS4130に処理を移す。
ステップS4120において、CPU180aは、変換方式を変更するべく、変換方式情報記憶領域(S)に記憶された変換方式情報を示すSの値を決定部623にて変更する。具体的には、CPU180aは、変換方式情報を示すSの値を予め取り決められた変更方式に従って変更し、変更後の変換方式情報を示すSの値であるS’を変換方式情報記憶領域(S)へ記憶する。そして、CPU180aは、変換方式情報記憶領域(S)に記憶された変更後のS’の値に対応する変換方式を、決定部623にてビット列変換部624へ設定する。ビット列変換部624では、変更後の変換方式でビット列変換処理が施された誤り検査値を検査部610へ出力することができる。
ステップS4130において、CPU180aは、受信部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)が出力されていれば、当該誤り検査値(P−N)と、ビット列変換部624から出力された誤り検査値(P−N)とを検査部610にて比較して照合する。CPU180aは、両者が一致する場合は、誤り検査の検査結果は正常であると判断する。一方、CPU180aは、両者が一致しない場合は、検査結果は正常でないと判断する。なお、CPU180aは、受信部600から誤り検査値(P−N)が出力されていなければ、検査部610での当該照合処理は行わない。
なお、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に処理を移す。
ステップS4210において、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は、受信部600から検査部610に誤り検査値(P−N)が出力されておらず、ステップS4160において、上記照合処理を行わなかった場合にも、現在が所定の動作モードの期間が開始した時点であれば、ビット列変換部624から検査部610へ出力された誤り検査値(P−N)を、決定部623へ出力する。そして、CPU180aは、当該誤り検査値に基づいて、シフト量Aを所定の更新方式に従って更新し、ステップS4220に処理を移す。
ステップS4220において、CPU180aは、受信部600にて出力された制御コマンド(P)に対し、検査部610にて出力された認証結果データを付加部630にて付加し、認証結果データ付きの制御コマンド(P)を中継送信部640へ出力し、ステップS4230に処理を移す。
ステップS4230において、CPU180aは、認証結果データ付きの制御コマンド(P)を送信データとして中継送信部640にて演出制御部120へ直ちに送信する。その後、所定の割込処理があるまで、ステップS4020以降の処理を繰り返す。
なお、ステップS4130の処理は、ステップS4100からステップS4140までの間に行われていればよく、ステップS4120の直後に行われる必要はない。また、ステップS4200およびステップS4210の処理は、ステップS4160より後に行われていればよく、ステップS4180の直後に行われる必要はない。また、ステップS4190の処理の後、ステップS4220に処理を移すのではなく、ステップS4200に処理を移してもよい。
[演出制御部の制御処理]
これより、本発明の実施形態に係る遊技機1の演出制御部120の制御処理について説明する。まず、演出制御部120のメイン処理について説明する。
図19は、本実施形態に係る演出制御部120によるメイン処理を示すフローチャートである。
ステップS1000において、サブCPU120aは、初期化処理を行う。この処理において、サブCPU120aは、電源投入に応じて、サブROM120bからメイン処理に関するプログラムコードを読み込む。これとともに、サブCPU120aは、サブRAM120cに記憶されるフラグなどを初期化し、設定値を設定する処理を行う。この処理が終了した場合には、ステップS1100に処理を移す。
ステップS1100において、サブCPU120aは、演出用乱数更新処理を行う。この処理において、サブCPU120aは、サブRAM120cに記憶される演出用乱数値、演出図柄決定用乱数、演出モード決定用乱数等を更新する処理を行う。以降は、所定の割込処理が行われるまで、上記ステップS1100の処理を繰り返し行う。
次に、演出制御部120の割込処理について説明する。
図20は、本実施形態に係る演出制御部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のコマンド解析処理について説明する。
図21および図22は、本実施形態に係る演出制御部120によるコマンド解析処理を示すフローチャートである。なお、図22のコマンド解析処理2は、図21のコマンド解析処理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の認証結果データ解析処理について説明する。
図23は、本実施形態に係る演出制御部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の周辺回路として設けた。そして、メインCPU110aは、制御コマンドを中間制御部180へ送信する際に、必要に応じて検査値生成部500から誤り検査値を読み出して当該制御コマンドに付加し、送信部550へ送出する。よって、本実施形態では、主制御部110にセキュリティ機能を追加するにあたり、既存の遊技機が備える遊技処理用プログラムに対し、誤り検査値の読み出し命令および書き込み命令が記述された認証処理用プログラムを追加するだけでよい。
このため、本実施形態では、セキュリティ機能の追加に伴って増大するメインCPU110aの処理負荷や遊技処理用プログラムのコードサイズを最大限抑制することができる。しかも、メインCPU110aが誤り検査値を制御コマンドへ付加するタイミングは、遊技処理用プログラムをカスタマイズするだけで任意に規定可能であるため、制御コマンドと誤り検査値の対応関係を機種毎や遊技機メーカー毎で変更することが比較的容易であり、柔軟性の高いセキュリティ機能を提供することができる。
また、本実施形態では、検査値生成部500は、過去に送出された制御コマンドを用いて誤り検査値を生成する。通常、チェックサム等の誤り検査値は生成元の制御コマンドに付加されて通信エラーチェックに利用される。これに対して、本実施形態では、過去に送出された制御コマンドを用いて生成された誤り検査値は、誤り検査値の生成元の制御コマンドには付加されない。このような従来にない新規かつ簡易な手法を用いることにより、不正者が制御コマンドと誤り検査値を窃取しても制御コマンドと誤り検査値の対応関係を容易に解析できないようにすることができ、遊技機1のセキュリティ強度を向上させることができる。
また、過去に送出した制御コマンドを用いて生成された誤り検査値を、現在送信する制御コマンドに付加して送信し、中間制御部180が当該制御コマンドの誤り検査処理を行うことにより、今回受信した制御コマンドの正当性を認証するとともに、過去に生成された制御コマンド、すなわち、今回付加された誤り検査値の生成元となった制御コマンドの正当性をも認証することができる。すなわち、制御コマンドの連続性を認証することができることとなり、不正行為をより検出しやすくなり、遊技機1のセキュリティ強度を向上させることができる。
また、本実施形態では、P≦Nの場合に送信される制御コマンドには、遊技機1に固有の固有情報が付加されることで、誤り検査値が遊技機1に固有の値とすることができる。これにより、固有情報を知らない不正者が一部の制御コマンドを窃取したとしても誤り検査値の解析を不可能とすることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、通常は通信エラーチェックに用いる誤り検査値を、不正行為を検出するための検査値として利用している。このように通信エラーチェックに従来から用いられている誤り検査値を利用することで、不正行為を検出するための検査値生成手段を新規に開発しなくとも不正行為を検出することができ、セキュリティ強度を向上させることができる。すなわち、比較的簡易な構成で主制御部110に対する認証機能を追加可能でありながらも、セキュリティ強度を向上させることができる。
また、本実施形態では、主制御部110へ追加するセキュリティ機能の具体的態様として追加された検査値生成部500は、ワイヤードロジック制御方式のハードウェアで回路構成されており、メインCPU110aの処理負荷やコードサイズを増大させない。したがって、本実施形態によれば、遊技機1がセキュリティ機能を有しながらも、セキュリティ機能を有することで増大する主制御部110の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を、比較的簡易な回路構成であるシフトレジスタで構成した。このため、本実施形態では、ローテート演算器Aの回路を設計した後は、その回路データをローテート演算器Bにも流用することが可能であり、回路設計やその検証作業に係る開発工数や開発難易度を抑制することができる。すなわち、本実施形態では、複数の変換方式が設けられたことで制御コマンドと誤り検査値の対応関係が解析困難となりセキュリティ強度が向上するという効果を、設けられた変換方式の数よりも少数の演算器を設計するだけで得ることができ、少ない開発コストで大きな不正防止効果を得ることができる。
また、本実施形態では、過去に送出した制御コマンドを用いて生成した誤り検査値に対して、暗号鍵を用いて暗号化処理を施すのではなく、ビット列変換処理を施すこととし、その際の変換方式として、ローテート演算器を用いてビットローテート演算を行う構成とした。暗号鍵を用いて暗号化処理を施す方式では、固定データである暗号鍵情報を、主制御部110に保持させておく必要があり、静的な解析手法で不正に解析されやすい虞れがある。また、暗号鍵情報を、動的な解析手法でしか解析できないような構成とするためには、暗号鍵の交換や共有化および同期化といった、複雑な処理を新たに設ける必要が生じる。これに対し、本実施形態では、ビット列変換処理を行うビット列変換回路525が、シフト量Aを、内部のローテート演算器Bから出力された誤り検査値および既存の遊技機が備えるパリティチェック等の演算機能を流用して更新する。加えて、ビット列変換回路525が、シフト量Bを、既存の遊技機で用いられる乱数値を流用して更新する。すなわち、本実施形態では、ビット列変換処理での鍵となるシフト量A、Bを、既存の遊技機が備える構成を流用して更新するという簡易な手法によって変動させて、動的な構成のセキュリティ機能を実現している。しかも、ローテート演算器A、Bは、比較的簡易な回路構成であるシフトレジスタから構成されており、暗号鍵情報を用いて暗号化処理を施す方式の演算回路と比較し、圧倒的に配線リソースが少ない。このため、本実施形態では、回路設計および検証作業において、配線リソースによる回路配置調整や遅延時間調整によって動作周波数やダイサイズ等の決定に及ぼす悪影響を抑止することができる。
また、本実施形態では、変換方式Bでビット列変換処理を施す場合だけではなく、変換方式Aでビット列変換処理を施す場合にも、シフト量を変動させる。よって、本実施形態では、変換方式Bでビット列が変換された誤り検査値が制御コマンドに付加される期間以外の際、すなわち、所定の動作モードの期間以外の際でも、変換方式Aでビット列が変換された誤り検査値の各ビットが、ビット列変換処理毎で変動する。このため、本実施形態では、不正者が、制御コマンドに付加された誤り検査値がどのようなシフト量でビット列が変換されているのかを解析することが、所定の動作モードの期間以外に送信された誤り検査値に対しても困難となり、セキュリティ強度を更に向上させることができる。
また、本実施形態では、変換方式Aで用いられるシフト量Aを規則的に変動させるために規定されたシフト量Aに係る更新タイミング条件を予め複数備えることで、誤り検査値生成機能を予め複数用意している。そして、どのような更新タイミング条件に基づいてシフト量Aが更新されるのかは、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定されている。よって、不正者が、制御コマンドおよび誤り検査値を複数窃取したとしても、シフト量Aの更新に関する規則性を解析することが困難となり、制御コマンドと誤り検査値の対応関係を解析することが更に困難となる。したがって、遊技機1が有する誤り検査値生成機能に対する秘匿性を更に向上させることができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、主制御部110に対する認証機能は、通常の遊技進行に係る処理を行う周辺制御部300とは別個独立した中間制御部180に備えられている。よって、例えば、中間制御部180が主制御部110と演出制御部120との間に設けられているとき、演出制御部120で認証処理が実行されるのは、中間制御部180から認証結果データを受信した場合のみである。すなわち、認証処理を行うことによって演出制御部120のCPUの処理負荷が増大するのは、認証結果データを受信したときのみであるため、演出制御部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での格納対象とが異なってもよい。
また、このとき、格納回路522を生成回路521の出力側に設けず、保存回路526を、遡及数のNの値に対応するN個の記憶領域を有するFIFOメモリで構成し、N個のビット列が変換された誤り検査値を保存することとしてもよい。このようにすることで、格納回路522が不要となり、検査値生成部500の回路構成をより簡単にすることができる。また、このとき、FIFOメモリの各記憶領域にアドレスを割り当てておき、メインCPU110aが任意の記憶領域から誤り検査値を読み出し可能に構成してもよい。このようにすることで、メインCPU110aは、認証処理用プログラムをカスタマイズするだけで遡及数のNの値を変えることができる。このため、制御コマンドと誤り検査値の対応関係を機種毎や遊技機メーカー毎で変更することが比較的容易であり、柔軟性の高いセキュリティ機能を提供することができる。
また、本実施形態では、メインCPU110aが制御コマンドに誤り検査値を付加するタイミングは、遊技処理用プログラムに規定された認証処理用プログラムの呼び出し命令によって規定されているとして説明した。これは、メインCPU110aがコマンド送信処理を行うたびに検査値付加処理を実行してもよいことが含まれる。すなわち、本発明では、メインCPU110aが、送信する制御コマンドに毎回誤り検査値を付加してもよい。この場合、図15のステップS76の処理および図16のステップS4070の処理は不要となる。そして、中間制御部180側では、制御コマンドを受信するたびに誤り検査処理を行うので、常時不正の有無を検査することができる。
また、メインCPU110aが、送信する制御コマンドに毎回誤り検査値を付加する場合でも、メインCPU110aは、検査値生成部500から読み出した誤り検査値を、直ちに送信部550へ書き込んで、送信する制御コマンドに付加しなくてもよい。すなわち、メインCPU110aは、今回送信する制御コマンドが制御コマンド(P)であり、検査値生成部500から読み出した誤り検査値が誤り検査値(P−N)である場合、読み出した誤り検査値(P−N)を保存しておく。そして、メインCPU110aは、Q個後(Q;非負の整数)に送信する制御コマンド(P+Q)に対して、保存しておいた誤り検査値(P−N)を付加することとしてもよい。
この場合での誤り検査値の付加手順の例を、図24に示す。図24では、格納しておいた制御コマンドがクリアされてから11番目に出力された制御コマンド(制御コマンド(1)〜制御コマンド(11))までの例を示している。また、図24では、誤り検査値(P)に対し、変換方式Aでビット列変換処理を施したものを「誤り検査値(PA)」と表記し、変換方式Bでビット列変換処理を施したものを「誤り検査値(PB)」と表記している。また、ビット列変換処理を施すに際に用いるシフト量Aを適宜更新していくが、更新前のデフォルトのシフト量Aを用いてビット列変換処理を施したものを「誤り検査値(PA)」とし、更新毎に「誤り検査値(PA)」、「誤り検査値(PA)」、・・・と表記している。誤り検査値(PB)も同様である。そして、N=2、Q=1としている。
また、図24では、デフォルトの変換方式を変換方式Aとしている。すなわち、変換方式情報記憶領域(S)には変換方式Aに相当する変換方式情報の値が記憶されているが、図24では便宜上、S=Aと表記している。そして、図24では、変更条件を満たす制御コマンドは、所定の制御コマンド群のうち最初に生成される制御コマンド、および、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドのどちらかとしている。また、変更方式として、変更条件を満たす制御コマンドが生成される毎に、変換方式を変換方式A→変換方式B、変換方式B→変換方式Aと決定する方式を採用している。
制御コマンド(1)を送信する場合、図24では、N=2であり、現在はP=1(P≦N)であるであるため、検査値生成部500から読み出した誤り検査値は、固有情報を用いて生成された初期検査値(1)となる。そして、Q=1であるため、初期検査値(1)は、今回送信する制御コマンド(1)には付加せず保持しておき、次回送信する制御コマンド(2)に付加する。図24では、制御コマンド(1)には、初期検査値(1)の替わりにダミーデータを付加している。
制御コマンド(2)を送信する場合、検査値生成部500から読み出した誤り検査値は、固有情報を用いて生成された初期検査値(2)となる。そして、制御コマンド(2)には、今回読み出した初期検査値(2)ではなく、前回読み出した初期検査値(1)を付加する。
制御コマンド(3)を送信する場合、検査値生成部500から読み出した誤り検査値は、制御コマンド(1)を用いて生成された誤り検査値であって、デフォルトの変換方式Aでビット列が変換された誤り検査値(1A)となる。そして、上記と同様に、誤り検査値(1A)は、今回送信する制御コマンド(3)には付加せず保持しておき、次回送信する制御コマンド(4)に付加する。
制御コマンド(4)を送信する場合、制御コマンド(4)は、所定の制御コマンド群の最初に生成された制御コマンドであるため、変換方式がデフォルトの変換方式A→変換方式Bに変更される。よって、検査値生成部500から読み出した誤り検査値は、制御コマンド(2)を用いて生成された誤り検査値であって、変換方式Bでビット列が変換された誤り検査値(2B)となる。そして、上記と同様に、誤り検査値(2B)は、今回送信する制御コマンド(4)には付加せず保持しておき、次回送信する制御コマンド(5)に付加する。
制御コマンド(5)を送信する場合、制御コマンド(5)は、所定の制御コマンド群の制御コマンドであるため、変換方式は変換方式Bのまま維持されるが、変換方式Bでは、毎回、シフト量Bが更新される。よって、検査値生成部500から読み出した誤り検査値は、制御コマンド(3)を用いて生成された誤り検査値であって、変換方式Bでビット列が変換された誤り検査値(3B)となる。そして、上記と同様に、誤り検査値(3B)は、今回送信する制御コマンド(5)には付加せず保持しておき、次回送信する制御コマンド(6)に付加する。制御コマンド(6)を送信する場合も同様である。
制御コマンド(7)を送信する場合、制御コマンド(7)は、所定の制御コマンド群の生成が終了した後に最初に生成される制御コマンドであるため、変換方式は変換方式B→変換方式Aに変更され、シフト量Aも更新されている。よって、検査値生成部500から読み出した誤り検査値は、制御コマンド(5)を用いて生成された誤り検査値であって、変換方式Aでビット列が変換された誤り検査値(5A)となる。そして、上記と同様に、誤り検査値(5A)は、今回送信する制御コマンド(7)には付加せず保持しておき、次回送信する制御コマンド(8)に付加する。以後、同様な処理を行いながら誤り検査値が付加される。
このように、本実施形態では、検査値生成部500から読み出した誤り検査値と、実際に制御コマンドに付加される誤り検査値とを異なられせることができるため、不正者が制御コマンドと誤り検査値との対応関係を解析することが困難となり、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、HWパラメータは、デフォルトの変更条件およびシフト量Aに係る更新タイミング条件を決定するための選択情報として定義したが、本発明はこれに限定されない。例えば、HWパラメータをデフォルトの変換方式およびシフト量Aに係る更新タイミング条件を決定する選択情報とすることもできる。このとき、決定回路542には、予め複数の変換方式に対応したHWパラメータを用意しておくとともに、デフォルトの変更条件を用意しておく。そして、決定回路542は、ブート処理中には、HWパラメータ設定処理で設定されたHWパラメータに対応する変換方式を示す変換方式情報を、変換方式情報記憶領域(S)に記憶して変換方式制御信号を出力し、生成手段520への設定を行えばよい。
また、HWパラメータは、決定手段540で用いる変更方式決定するための選択情報としても定義することができる。例えば、HWパラメータで変更方式を決定する場合、決定回路542には、予め定められた変換方式の変更順序等を規定する変更方式を複数用意しておき、HWパラメータと対応付けておく。そして、決定回路542は、ブート処理中のHWパラメータ設定処理において、メインCPU110aから設定されたHWパラメータに対応する特定の変更方式をセットし、セットされた変更方式に従って変換方式を変更させていけばよい。
また、HWパラメータは、生成手段520で用いるシフト量Bに係る更新方式を決定するための選択情報としても定義することができる。例えば、HWパラメータでシフト量Bに係る更新タイミング条件を決定する場合、ビット列変換回路525を担うシフト量制御部Cは、既存の遊技機が備える複数の乱数生成回路から乱数値を取得可能に接続しておき、それぞれの乱数生成回路とHWパラメータとを対応付けておく。そして、シフト量制御部Cは、ブート処理中のHWパラメータ設定処理において、メインCPU110aから設定されたHWパラメータに対応する特定の乱数生成回路との接続のみを有効に作動させ、特定の乱数生成回路から取得される乱数値を用いてシフト量Bを更新していけばよい。
すなわち、本発明において、HWパラメータは、決定手段540で用いる変更条件や生成手段520で用いるシフト量Aに係る更新タイミング条件を決定するための選択情報に限定されず、変換方式に係る変更プロトコルやシフト量の更新に係る規則を決定するための選択情報として定義することができる。つまり、HWパラメータは、変換方式に係る変更プロトコルやシフト量の更新に係る規則を実施態様とした誤り検査値生成機能に対する選択情報である。
このように、本発明では、誤り検査値生成機能が、主制御部110のブート処理時の初期値設定時以外ではアクセスされないメインROM110bの特定の記憶領域に記憶されているHWパラメータの値に基づいて決定される。よって、不正者が、制御コマンドおよび誤り検査値を複数窃取したとしても、遊技機1にどのような誤り検査値生成機能が搭載されているのかを解析することが困難となり、誤り検査値生成機能に対する秘匿性は更に向上し、遊技機1のセキュリティ強度をより一層向上させることができる。
また、本実施形態では、判定回路541を担う比較器541bは、取得手段510から出力された制御コマンドが変更条件を満たしているとき、当該制御コマンドが変更条件を満たす制御コマンドであることを示す判定結果信号を、毎回出力しなくともよい。すなわち、比較器541bは、取得手段510から出力された制御コマンドが、変更条件を満たす制御コマンドであっても、決定回路542にて変換方式が変更されなくなり、不正者が変換方式の変更条件を解析することが更に困難となる。
更に、比較器541bは、制御コマンドが入力される度に、判定結果信号自体を毎回出力しなくともよい。この場合、取得手段510の制御回路512と、決定回路542とを直接制御線で接続しておき、制御回路512から決定回路542へ作動許可信号を出力させる。決定回路542は、当該作動許可信号の入力に基づいて、変換方式設定処理を行えばよい。さらに、取得手段510の制御回路512と、決定手段540の判定回路541や決定回路542とを接続するのではなく、生成手段520の制御回路523とこれらとを接続し、制御回路523から判定回路541や決定回路542へ作動許可信号を出力させるようにしてもよい。
また、本実施形態では、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は、自身に記憶しているHWパラメータを格納回路522へ設定し、初期設定値として用いればよい。
HWパラメータは、その内容や実装方法を遊技機メーカーの独自の判断で決定することができるため秘匿性が高く、実質的に遊技機1に固有の情報と捉えることができる。なお、中間制御部180は、上記のようにP≦Nの場合は誤り検査処理を行わないようにすればよい。このようにすることで、中間制御部180は、HWパラメータに相当する誤り検査値生成機能の選択情報を、予め主制御部110との間で取り決めていなくとも、主制御部110で設定された誤り検査値生成機能に対応した誤り検査値出力機能を選択することができる。よって、不正者が、中間制御部180自体を解析しても、複数の誤り検査値出力機能のうちのどの出力機能でもって出力された誤り検査値を用いて誤り検査処理が行われるのかを特定することができず、当該出力機能の秘匿性を確保することができ、遊技機1のセキュリティ強度を更に向上させることができる。
また、本実施形態では、検査値生成部500内の各手段間や各回路間の入出力制御方式を、同期インターフェース方式とした。そして、検査値生成部500内の各手段同士や各回路同士のデータ送受は、主制御部110のクロックパルス発生回路から出力されたクロック信号に同期して行うこととした。しかしながら、本発明はこれに限定されず、検査値生成部500内の各手段同士や各回路同士のデータ送受は、当該クロック信号に対して非同期で行うこととしてもよい。この場合であっても、検査値生成部500内では、出力するデータの接続先に対してイネーブル信号等を出力すれば、接続先は当該イネーブル信号等の入力に基づいて、当該出力データを取り込み、CPUインターフェース方式とは異なることとなる。
また、本実施形態では、検査値生成部500内の各手段が作動するタイミングは、取得手段510の制御回路512が出力する各作動許可信号の出力タイミングを調整することによって制御されていた。しかしながら、本発明はこれに限定されず、生成手段520の制御回路523が、格納回路522へ出力するシフト処理信号の出力タイミングや、生成回路521へ出力する作動許可信号の出力タイミングを調整することで制御することもできる。制御回路523が出力する上記シフト処理信号や上記作動許可信号の出力タイミングは、制御回路512が出力する作動許可信号の入力に基づいている。更に、制御回路512が出力する作動許可信号の出力タイミングは、メインCPU110aが送出する送信部550への書き込み信号の入力に基づいている。そして、メインCPU110aが送出する当該書き込み信号は、既存の遊技処理用プログラムに元来規定されていたコマンド送信処理の実行タイミングによって予め指定されている。
このように、本発明では、検査値生成部500内の各手段が作動するタイミングは、既存の遊技処理用プログラムで規定されたコマンド送信処理の実行タイミングに基づいて一意に決定すればよく、比較的簡易にタイミング設計が可能である。よって、本発明は、セキュリティ機能を既存の遊技機に比較的簡易に追加することができ、かつ、メインCPU110aが誤り検査値の読み出し信号の出力タイミングの設計に、比較的大きなマージンを確保することができ、誤り検査処理の確度確保が容易となる。
また、本実施形態では、検査値生成部500を構成する生成手段520のビット列変換回路525を担うシフト量制御部Cでは、シフト量の更新に係る制御をシフト量制御部Cが内部に備えるアルゴリズムに基づいて処理することも可能であることとして説明したが、本発明は、検査値生成部500を全てハードウェアで構成してもよい。
また、本実施形態では、中間制御部180は、認証結果データを制御コマンドに付加して認証結果データ付き制御コマンドとして演出制御部120へ送信することとしたが、本発明はこれに限定されず、制御コマンドおよび認証結果データを別々に送信するようにしてもよい。この場合、演出制御部120は、認証結果データを受信したかを判断し、認証結果データを受信した場合に認証結果データ解析処理を行うようにすればよい。なお、制御コマンドと認証結果データのそれぞれにダミーデータを付加して、データ長が同一となるようにしてもよい。このようにすることにより、不正者が、制御コマンドと認証結果データを区別することが困難となり、遊技機1のセキュリティ強度を向上することができる。
また、本実施形態では、中間制御部180は、認証成功の場合も認証不成功の場合も、認証結果データを生成し、演出制御部120へ送信することとしたが、本発明はこれに限定されず、例えば、中間制御部180は、認証不成功の場合のみ認証結果データを生成し、あるいは、認証不成功を示す信号を出力し、演出制御部120へ送信するようにしてもよい。演出制御部120は、認証結果データまたは認証不成功を示す信号を受信したか否かを判断し、受信した場合に報知信号を出力するように構成すればよい。
また、本実施形態では、検査値生成部500をメインCPU110aの周辺回路としてワンチップマイコン110mと一体の回路構成としたが、本発明はこれに限定されず、検査値生成部500をワンチップマイコン110mと別個の回路構成としてもよい。また、送信部550においても、ワンチップマイコン110mと別個の回路構成としてもよい。また、本実施形態では、中間制御部180をCPU、ROM、RAM等を備えて構成しているが、同様の機能をLSI等の集積回路として実現するように構成してもよい。
また、本実施形態では、本発明をパチンコ遊技機に適用する例を示したが、これに限定されず、本発明は、雀球遊技機、アレンジボール等のパチンコ遊技機以外の弾球遊技機、スロットマシン等の回胴式遊技機などの他の遊技機にも適用することができる。これらの遊技機においても、本実施形態と同様に構成することにより、本実施形態と同様の効果を得ることができる。
また、本実施形態では、本発明を遊技機に適用する例を示したが、これに限定されず、本発明は、遊技機のような複数の制御部を備え、これら制御部間のデータ伝送について認証処理を実行する電子機器およびその認証方法にも適用することができる。これらの電子機器およびその認証方法においても、本実施形態と同様に構成することにより、本実施形態と同様の効果を得ることができる。また、本実施形態は、その目的および構成等に特に矛盾や問題がない限り、互いの技術を流用することができる。
1 遊技機
110 主制御部
110a メインCPU
110b メインROM
110c メインRAM
110d ブートROM
120 演出制御部
120a サブCPU
120b サブROM
120c サブRAM
180 中間制御部
180a CPU
180b ROM
180c RAM
300 周辺制御部
400 内部バス
500 検査値生成部
510 取得手段
520 生成手段
521 生成回路
525 ビット列変換回路
527 送出回路
540 決定手段
550 送信部
600 受信部
610 検査部
620 検査値生成部
621 生成部
622 格納部
623 決定部
624 ビット列変換部
630 付加部
640 中継送信部

Claims (8)

  1. 制御コマンドを出力する主制御部と、前記制御コマンドに基づく処理を行う周辺制御部と、前記主制御部と前記周辺制御部との間に設けられた中間制御部と、を含む遊技機であって、
    前記主制御部は、
    記憶部に記憶された所定の制御プログラムに従って前記制御コマンドを生成し送出する演算処理部と、
    前記演算処理部によって送出された前記制御コマンドを前記中間制御部へ送信する送信部と、
    前記演算処理部と前記送信部とを接続するバスと、
    前記バスに接続されており、前記演算処理部によって送出された制御コマンドに付加され該制御コマンドの正当性を検査するための誤り検査値を生成する第1検査値生成部と、
    を備え、
    前記中間制御部は、
    前記第1検査値生成部によって送出された誤り検査値に対応する検証用の誤り検査値を生成する第2検査値生成部と、
    前記送信部によって送信された誤り検査値と前記第2検査値生成部によって生成された誤り検査値とを比較して前記送信部によって送信された制御コマンドの正当性の検査を行い、該検査の結果情報を出力する検査部と、
    前記送信部によって送信された制御コマンドを前記周辺制御部へ中継送信すると共に、前記結果情報を前記周辺制御部へ送信する中継送信部と、
    を備え、
    前記周辺制御部は、
    前記中継送信部によって中継送信された制御コマンドに基づく処理を行うと共に、前記中継送信部によって送信された前記結果情報に応じた処理を行う処理部
    を備え、
    前記第1検査値生成部は、
    前記演算処理部から前記送信部への制御コマンドが前記バスに送出されると、該送信部への制御コマンドを前記バスから取得し、取得した制御コマンドを予め指定されたタイミングで出力するコマンド取得手段と、
    前記コマンド取得手段によって出力された制御コマンドを入力し、入力した制御コマンドへ付加する誤り検査値のビット列を変換する際に用いる変換方式を、入力した制御コマンドに基づいて、予め取り決められた異なる複数の変換方式のうちのいずれかに決定し、決定した変換方式を示す変換方式情報を、前記タイミングに応じて出力する決定手段と、
    前記コマンド取得手段によって出力された制御コマンドを入力し、入力した制御コマンドより過去に前記演算処理部によって送出された制御コマンドを用いて生成された誤り検査値を、前記タイミングに応じて出力する生成手段と、
    前記生成手段によって出力された誤り検査値と前記決定手段によって出力された変換方式情報とを入力し、入力した誤り検査値のビット列を、入力した変換方式情報が示す変換方式で変換し、ビット列が変換された誤り検査値を、前記タイミングに応じて出力する変換手段と、
    前記変換手段によって出力された誤り検査値を入力し、入力した誤り検査値を、前記制御プログラムに規定された前記演算処理部の読み出し指示に応じて、前記バスを介して前記演算処理部へ送出する検査値送出手段と、
    を有し、
    前記演算処理部は、前記検査値送出手段から送出された誤り検査値を前記バスから取得し、取得した誤り検査値を、前記送信部へ送出する前記制御コマンドに付加して、前記バスを介して前記送信部へ送出する
    ことを特徴とする遊技機。
  2. 前記複数の変換方式は、
    前記ビット列を構成する各ビットをローテートする変換方式であって、該各ビットをシフトさせるビット数を示すシフト量が、前記変換手段が前記入力した誤り検査値のビット列を変換し前記検査値送出手段へ出力する毎で規則的に変動可能な第1変換方式と、
    前記ビット列を構成する各ビットをローテートする変換方式であって、該各ビットをシフトさせるビット数を示すシフト量が、前記変換手段が前記入力した誤り検査値のビット列を変換し前記検査値送出手段へ出力する毎で不規則に変動される第2変換方式と、
    を含むことを特徴とする請求項1に記載の遊技機。
  3. 前記決定手段は、前記コマンド取得手段によって出力された制御コマンドを入力すると、該制御コマンドが予め定められた条件を満たす制御コマンドであるか否かの判定を実行し、前記判定の結果が、入力した制御コマンドが前記条件を満たす制御コマンドであることを示す場合には、前記ビット列を変換する際の変換方式を、前記第2変換方式に決定すること特徴とする請求項2に記載の遊技機。
  4. 前記第1変換方式における前記シフト量は、前記第2変換方式でビット列が変換された誤り検査値に基づいて変動することを特徴とする請求項3に記載の遊技機。
  5. 前記変換手段は、前記第2変換方式でビット列が変換された誤り検査値を前記検査値送出手段へ出力する場合には、該誤り検査値を前記検査値送出手段へ出力した後に前記第1変換方式で前記ビット列を変換する際に用いる前記シフト量を、該誤り検査値に基づいて更新することを特徴とする請求項4に記載の遊技機。
  6. 前記変換手段は、前記第1変換方式で前記ビット列を変換する際に用いる前記シフト量の更新を実行するタイミングを示す更新タイミングとして、互いに異なる複数の更新タイミングを保持し、前記複数の更新タイミングで前記更新を実行可能であり、
    前記記憶部は、遊技機の起動の際にアクセス可能であって遊技機の初期設定情報を記憶する記憶領域を有し、前記初期設定情報は前記複数の更新タイミングのそれぞれに対応する複数の選択情報を含み、
    前記演算処理部は、前記遊技機の起動の際に前記複数の選択情報のうちの特定の選択情報を前記変換手段へ設定し、
    前記変換手段は、設定された前記特定の選択情報に対応する特定の前記更新タイミングを用いて前記更新を実行する
    ことを特徴とする請求項5に記載の遊技機。
  7. 前記決定手段は、互いに異なる複数の前記条件を保持し、前記複数の条件を用いて前記判定を実行可能であり、
    前記記憶部は、遊技機の起動の際にアクセス可能であって遊技機の初期設定情報を記憶する記憶領域を有し、前記初期設定情報は前記複数の条件のそれぞれに対応する複数の選択情報を含み、
    前記演算処理部は、前記遊技機の起動の際に前記複数の選択情報のうちの特定の選択情報を前記決定手段へ設定し、
    前記決定手段は、設定された前記特定の選択情報に対応する特定の前記条件を用いて前記判定を実行する
    ことを特徴とする請求項3乃至6のいずれかに記載の遊技機。
  8. 前記初期設定情報に含まれる前記選択情報は、前記演算処理部が前記遊技機の起動の際に設定する前記特定の選択情報であることを特徴とする請求項6又は7に記載の遊技機。
JP2011261025A 2011-11-29 2011-11-29 遊技機 Expired - Fee Related JP5412499B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011261025A JP5412499B2 (ja) 2011-11-29 2011-11-29 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011261025A JP5412499B2 (ja) 2011-11-29 2011-11-29 遊技機

Publications (2)

Publication Number Publication Date
JP2013111290A JP2013111290A (ja) 2013-06-10
JP5412499B2 true JP5412499B2 (ja) 2014-02-12

Family

ID=48707461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011261025A Expired - Fee Related JP5412499B2 (ja) 2011-11-29 2011-11-29 遊技機

Country Status (1)

Country Link
JP (1) JP5412499B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002095843A (ja) * 2000-09-26 2002-04-02 Heiwa Corp 遊技制御装置
JP2002210194A (ja) * 2001-01-19 2002-07-30 Sansei R & D:Kk パチンコ遊技機
JP5194088B2 (ja) * 2010-10-27 2013-05-08 京楽産業.株式会社 遊技機
JP5109019B2 (ja) * 2010-11-29 2012-12-26 京楽産業.株式会社 遊技機
JP5202616B2 (ja) * 2010-12-24 2013-06-05 京楽産業.株式会社 遊技機
JP5202657B2 (ja) * 2011-01-26 2013-06-05 京楽産業.株式会社 遊技機
JP5202669B2 (ja) * 2011-02-23 2013-06-05 京楽産業.株式会社 遊技機

Also Published As

Publication number Publication date
JP2013111290A (ja) 2013-06-10

Similar Documents

Publication Publication Date Title
JP5412498B2 (ja) 遊技機
JP5377683B2 (ja) 遊技機及び電子機器の認証方法
JP5228100B2 (ja) 遊技機および電子機器の認証方法
JP5228101B2 (ja) 遊技機および電子機器の認証方法
JP5412500B2 (ja) 遊技機
JP5202688B2 (ja) 遊技機および電子機器の認証方法
JP5202695B2 (ja) 遊技機および電子機器の認証方法
JP5412499B2 (ja) 遊技機
JP5377682B2 (ja) 遊技機及び電子機器の認証方法
JP5412496B2 (ja) 遊技機
JP5377679B2 (ja) 遊技機及び電子機器の認証方法
JP5202680B2 (ja) 遊技機
JP5412497B2 (ja) 遊技機
JP5377680B2 (ja) 遊技機及び電子機器の認証方法
JP5269134B2 (ja) 遊技機
JP5202702B2 (ja) 遊技機および電子機器の認証方法
JP5377681B2 (ja) 遊技機及び電子機器の認証方法
JP5202681B2 (ja) 遊技機
JP5202705B2 (ja) 遊技機および電子機器の認証方法
JP5202689B2 (ja) 遊技機および電子機器の認証方法
JP5202696B2 (ja) 遊技機および電子機器の認証方法
JP5269135B2 (ja) 遊技機
JP5202703B2 (ja) 遊技機および電子機器の認証方法
JP5202706B2 (ja) 遊技機および電子機器の認証方法
JP5202619B2 (ja) 遊技機

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20130423

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130618

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Ref document number: 5412499

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees