以下、本発明の好ましい実施の形態について、図面を参照して具体的に説明する。
[遊技機の外観構成]
図1は、本発明の一実施形態に係る遊技機の外観を示す斜視図である。同図に示すように、本実施形態では、遊技機としてパチスロ1が適用される。パチスロ1の外装体2は、リールや回路基板等を収容するキャビネット2aと、キャビネット2aに対して開閉可能に取り付けられるフロントドア2bとを有している。キャビネット2aの両側面には、把手7が設けられている。この把手7は、パチスロ1を運搬するときに手をかける凹部である。
キャビネット2aの内部には、3つのリール3L,3C,3Rが横並びに設けられている。各リール3L,3C,3Rについては、個別に説明する場合にそれぞれ左リール3L、中リール3C、右リール3Rと称する。各リール3L,3C,3Rは、円筒状に形成されたリール本体と、リール本体の周面に装着された透光性のシート材を有している。シート材の表面には、複数(例えば21個)の図柄が周方向に沿って所定の間隔をあけて描かれている。
フロントドア2bの中央には、液晶表示装置10が設けられている。この液晶表示装置10は、液晶表示領域10Aと図柄表示領域4L,4C,4Rとを含む表示画面を備え、正面から見て3つのリール3L,3C,3Rに重畳する手前側に位置するように設けられている。本実施形態では、液晶表示領域10A及び図柄表示領域4L,4C,4Rを含めた表示画面の全体を使って、映像の表示が行われ、演出が実行される。
図柄表示領域4L,4C,4Rは、3つのリール3L,3C,3Rのそれぞれに対応して設けられている。この図柄表示領域4L,4C,4Rは、表示窓としての機能を果たすものであり、その背後に設けられた各リール3L,3C,3Rを透過することが可能な構成になっている。図柄表示領域4L,4C,4Rについては、個別に説明する場合にそれぞれ左表示窓4L、中表示窓4C、右表示窓4Rと称する。
表示窓4L,4C,4Rは、その背後に設けられたリール3L,3C,3Rの回転が停止されたとき、各リール3L,3C,3Rの複数種類の図柄のうち、その枠内における上段、中段及び下段の各領域にそれぞれ1個の図柄(合計で3個)を表示する。各表示窓4L,4C,4Rが有する上段、中段及び下段からなる3つの領域のうち予め定められたいずれかをそれぞれ組合せてなる擬似的なラインを、入賞か否かの判定を行う対象となるライン(入賞判定ライン)として定義する。
本実施形態では、入賞判定ラインとしてセンターライン8が設けられている。センターライン8は、左表示窓4Lの中段、中表示窓4Cの中段、及び右表示窓4Rの中段の組合せからなる。
液晶表示装置10の表示画面の下方には、7セグメントLEDからなる7セグ表示器6が設けられている。この7セグ表示器6は、特典として遊技者に対して払い出すメダルの枚数(以下、払出枚数)、パチスロ1の内部に預けられているメダルの枚数(以下、クレジット枚数)等の情報をデジタル表示する。
フロントドア2bには、遊技者による操作の対象となる各種装置が設けられている。メダル投入口11は、遊技者によって外部から投下されるメダルを受け入れるために設けられる。メダル投入口11に受け入れられたメダルは、予め定められた規定数を上限として1回の遊技に投入されることとなり、規定数を超えた分は、パチスロ1の内部に預けることが可能となる(いわゆるクレジット機能)。
メダル投入口11の左には、選択ボタン11A及び決定ボタン11Bが設けられている。遊技者や係員は、液晶表示領域10Aに表示されたメニュー画面等に対して選択ボタン11A及び決定ボタン11Bにより入力を行うことができる。
最大BETボタン12は、パチスロ1の内部に預けられているメダルから1回の遊技に投入する最大枚数を決定するために設けられる。精算ボタン14は、パチスロ1の内部に預けられているメダルを外部に引き出すために設けられる。
スタートレバー16は、全てのリール3L,3C,3Rの回転を開始するために設けられる。ストップボタン17L,17C,17Rは、3つのリール3L,3C,3Rのそれぞれに対応づけられ、対応するリールの回転を停止するために設けられる。ストップボタン17L,17C,17Rについては、個別に説明する場合にそれぞれ左ストップボタン17L、中ストップボタン17C、右ストップボタン17Rと称する。
メダル払出口18は、後述のメダル払出装置34の駆動により排出されるメダルを外部に導く。メダル払出口18から排出されたメダルは、メダル受皿19に貯められる。ランプ(LED等)20は、演出内容に応じた点消灯のパターンにて光を出力する。スピーカ用孔48,49,22L,22Rは、演出内容に応じた効果音や楽曲等の音を出力するために設けられている。
このパチスロ1には、フロントドア2bを閉じた状態でフロントドア2bをロック状態又はアンロック状態に切り替えるロック機構を備えている。このロック機構は、ドアキー穴11Cにドアキー110を挿入して、ドアキー110を回転することにより操作されるようになっている。
ドアキー110がドアキー穴11Cに挿入され、例えば、右回転されることによりフロントドア2bが開閉可能になるとともに、左回転されることにより後述の主制御回路60(図3参照)等が電気的にリセットされるようになっている。すなわち、ドアキー110は、ロック機構の操作の他に、パチスロ1を電気的にリセットするリセット機能を有している。
[遊技機の内部構造]
図2は、本発明の一実施形態に係る遊技機の内部構造を示す斜視図である。キャビネット2a内部の上側には、主制御回路60(図3参照)を構成する主制御基板6A(後述する主基板6A、図2において図示せず図6参照)が配設されている。主制御回路60は、内部当籤役の決定、リール3L,3C,3Rの回転及び停止、入賞の有無の判定といった、パチスロ1における遊技の主な流れを制御する回路である。主制御回路60の具体的な構成は後述する。
キャビネット2aの内部の中央には、3つのリール3L,3C,3Rが設けられている。なお、図2では、各リール3L,3C,3Rからシート材を取り除いてリール本体を露出させた状態を示している。3つのリール3L,3C,3Rには、所定の減速比をもったギアを介してステッピングモータ50L,50C,50R(図3参照)が接続されている。
キャビネット2a内部を正面から見て、右リール3Rの右側には、設定用鍵型スイッチ及び外部集中端子板(図示せず)が配設されている。設定用鍵型スイッチは、パチスロ1の設定を変更もしくは確認を行うときに設定キーを用いて使用する。外部集中端子板は、キャビネット2aの側板に取り付けられている。この外部集中端子板は、メダル投入信号、メダル払出信号及びセキュリティ信号などの信号をパチスロ1の外部へ出力するために設けられている。
キャビネット2aの内部の下方には、多量のメダルを収容可能で、それらを1枚ずつ排出可能な構造を有するメダル払出装置(以下、ホッパー装置)34が設けられている。このホッパー装置34は、貯留されたメダルが例えば50枚を超えたとき、又は精算ボタンが押圧されてメダルの精算を行うときに、メダルを払い出す。ホッパー装置34によって払い出されたメダルは、メダル払出口18(図2参照)から排出される。
キャビネット2a内部を正面から見て、ホッパー装置34の右側には、ホッパー装置34から溢れ出たメダルを収納するメダル補助庫35が配設されている。また、キャビネット2a内部を正面から見て、ホッパー装置34の左側には、パチスロ1が有する各装置に対して必要な電力を供給するための電源装置36が設けられている。また、ホッパー装置34と3つのリール3L,3C,3Rとの間には、サブスピーカ37が配設されている。
フロントドア2bの裏面における上側には、副制御基板7A(後述する副基板7A、図2において図示せず図6参照)を収容する副制御基板ケース42が配設されている。副制御基板7Aは、副制御基板ケース42を介してキャビネット2aの内部の主制御基板6Aに対向している。この副制御基板7Aは、副制御回路70(図3及び図4参照)を構成する。副制御基板7Aは、主制御基板6Aと光ファイバーケーブル(図示せず)を介して接続されている。副制御回路70は、映像の表示等による演出の実行を制御する回路である。副制御回路70の具体的な構成は後述する。
フロントドア2bの裏面側の適部には、LED基板45A,45B,45CやサウンドI/O基板46が配設されている。LED基板45A,45B,45Cは、副制御回路70の制御により実行される演出に応じて、ランプ(LED等)20による点滅パターンを表示制御する。サウンドI/O基板46は、後述するスピーカ48L,48R,49L,49R(48,49)への音声の出力を行う。
サウンドI/O基板46の下側には、遊技動作表示基板(図示せず)が配設されている。この遊技動作表示基板は、メダルの投入を受け付けるとき、3つのリール3L,3C,3Rが回動可能なとき及び再遊技を行うときに、投入されたメダルの枚数を7セグ表示器6に表示させるための基板である。
サウンドI/O基板46の左側及び右側には、上部スピーカ48L,48R(48)が配設されている。そして、フロントドア2bの裏面における下側には、下部スピーカ49L,49R(49)が配設されている。上部スピーカ48L,48Rは、それぞれスピーカ用孔48,49に対向しており、下部スピーカ49L,49Rは、それぞれスピーカ用孔22L,22Rに対向している。
上部スピーカ48Rと下部スピーカ49Rとの間には、セレクタ51と、ドア開閉監視スイッチ52が配設されている。セレクタ51は、メダルの材質や形状等が適正であるか否かを選別する装置であり、メダル投入口11に受け入れられた適正なメダルをホッパー装置34へ案内する。セレクタ51内においてメダルが通過する経路上には、適正なメダルが通過したことを検出するメダルセンサ(図示せず)が設けられている。
ドア開閉監視スイッチ52は、フロントドア2bを裏面側から見て、セレクタ51の左側に配置されている。このドア開閉監視スイッチ52は、パチスロ1の外部へ、フロントドア2bの開閉を報知するためのセキュリティ信号を出力する。
フロントドア2bを裏面側から見て、セレクタ51の右側には、ドア中継基板53が配設されている。このドア中継基板53は、主制御基板6Aと、各種のボタンやスイッチ、副制御基板7A、遊技動作表示基板、及びセレクタ51との配線を中継する基板である。なお、各種のボタン及びスイッチとしては、例えば、最大BETボタン12、精算ボタン(C/Pボタン)14、ドア開閉監視スイッチ52、後述する最大BETスイッチ13S及びスタートスイッチ6S等を挙げることができる。
ドア中継基板53の下側には、24hドア開閉監視ユニット(図示せず)が配設されている。この24hドア開閉監視ユニットは、フロントドア2bの開閉の履歴を保存する。また、フロントドア2bを開放したとき、又はセレクタ51を取り外したときに、液晶表示装置10にエラー表示を行うための信号を副制御基板7A(副制御回路70)に出力する。
次に、図3〜9を参照して、パチスロ1の電気的な構成及び通信機能に係る構成について説明する。図3は、主制御回路の構成を示すブロック図である。図4は、副制御回路の構成を示すブロック図である。図5は、通信LSIの構成を示すブロック図である。図6は、主基板と副基板との接続形態を示す模式図である。図7は、通信LSIにおけるAES回路を示す模式図である。図8及び図9は、データの流れを示す説明図である。
[主制御回路の構成]
主制御回路60は、内部当籤役の決定やリールの回転制御等一連の遊技の進行を制御する。主制御回路60は、主基板6(図6参照)上に配置されたマイクロコンピュータ600を主たる構成要素とし、これに乱数サンプリングのための回路を加えて構成されている。マイクロコンピュータ600は、メインCPU601、メインROM602、及びメインRAM603により構成される。
メインCPU601には、クロックパルス発生回路604、分周器605、乱数発生器606、及びサンプリング回路607が接続されている。
メインCPU601は、乱数値と後述する内部抽籤テーブルとに基づいて内部当籤役を決定し、当該内部当籤役と停止操作が検出されたタイミングとに基づいて、リール3L,3C,3Rの回転を停止させる。メインCPU601は、リール3L,3C,3Rの回転を停止させた際に、図柄表示領域4L,4C,4Rに表示された図柄の組合せに基づいて、役が成立したか否かを判別し、役が成立(入賞)している場合に、当該成立した役に応じてメダルを払い出す等の利益を遊技者に付与する。
クロックパルス発生回路604および分周器605は、基準クロックパルスを発生する。乱数発生器606は、「0」〜「65535」の範囲の乱数を発生する。サンプリング回路607は、乱数発生器606により発生された乱数から1つの乱数値を抽出(サンプリング)する。
メインCPU601は、抽出した乱数値を後述のメインRAM603の乱数値記憶領域に記憶させる。そして、メインCPU601は、遊技毎にメインRAM603の乱数値記憶領域に記憶された乱数値に基づいて、後述の内部抽籤処理において内部当籤役の決定を行う。
なお、乱数サンプリングのための手段としては、マイクロコンピュータ600内で、すなわちメインCPU601の動作プログラム上で、乱数サンプリングを実行するようにしてもよい。その場合、乱数発生器606およびサンプリング回路607は省略可能である。あるいは、乱数サンプリング動作のバックアップ用として残しておくことも可能である。
メインROM602には、メインCPU601の処理に係るプログラム、各種テーブル等が記憶されている。
メインRAM603には、メインCPU601の処理により得られる種々の情報がセットされる。例えば、抽出した乱数値、遊技状態、内部当籤役、払出枚数、ボーナス持越状況、設定値等を特定する情報、各種カウンタおよびフラグがセットされる。これらの情報の一部は、コマンドとして副制御回路70に送信される。
マイクロコンピュータ600からの制御信号により動作が制御される主要な周辺装置等としては、メダル払出装置(ホッパー装置)34、ステッピングモータ50L,50C,50R等がある。これらのアクチュエータとメインCPU601との間の信号の授受は、バス60Aを介して行われる。
バス60Aには、メインCPU601から出力される制御信号を受けて、前述の各周辺装置等の動作を制御するための各回路が接続されている。各回路としては、モータ駆動回路39、表示部駆動回路340、及びホッパー駆動回路341がある。
モータ駆動回路39は、ステッピングモータ50L,50C,50Rを駆動制御する。これにより、リール3L,3C,3Rの回転や停止が行われる。
表示部駆動回路340は、7セグ表示器6を表示制御する。これにより、7セグ表示器6に払出枚数やクレジット枚数等が表示される。
ホッパー駆動回路341は、ホッパー装置34を駆動制御する。これにより、ホッパー装置34に収容されたメダルの払い出しが行われる。
また、バス60Aには、前述の各回路および各周辺装置等に制御信号を出力する契機となる入力信号を発生する各スイッチおよび各回路が接続されている。各スイッチおよび各回路としては、スタートスイッチ6S、ストップスイッチ7LS,7CS,7RS、最大BETスイッチ13S、精算スイッチ(C/Pスイッチ)14S、メダルセンサ22S、リール位置検出回路50、払出完了信号回路342がある。なお、ストップスイッチ7LS,7CS,7RSを総称してストップスイッチ7Sと称する。
スタートスイッチ6Sは、スタートレバー16に対する遊技者の開始操作を検出し、遊技の開始を指令する開始信号をマイクロコンピュータ600に出力する。
ストップスイッチ7LS,7CS,7RSは、それぞれストップボタン7L,7C,7Rに対する遊技者の停止操作を検出し、検出したストップボタン7L,7C,7Rに対応するリール3L,3C,3Rの回転の停止を指令する停止信号をマイクロコンピュータ600に出力する。
最大BETスイッチ13Sは、最大BETボタン12に対する遊技者の投入操作(押下操作)を検出し、クレジットされたメダルからのメダルの投入を指令する信号をマイクロコンピュータ600に出力する。
精算スイッチ14Sは、精算ボタン14に対する遊技者の切り替え操作を検出し、クレジットモードまたは払出モードを切り替えるための信号をマイクロコンピュータ600に出力する。また、クレジットモードから払出モードに切り替えられた場合、パチスロ1にクレジットされているメダルの払い出しを指令する信号をマイクロコンピュータ600に出力する。
メダルセンサ22Sは、遊技者の投入操作によりメダル投入口11に投入されたメダルを検出し、メダルが投入されたことを示す信号をマイクロコンピュータ600に出力する。
リール位置検出回路50は、リール回転センサ(図示せず)からのパルス信号を検出し、各リール3L,3C,3R上の図柄の位置を検出するための信号を発生する。
払出完了信号回路342は、メダル検出部34Sにより検出されたメダルの枚数(すなわちホッパー装置34から払い出されたメダルの枚数)が指定された枚数に達した際に、メダルの払い出しが完了したことを示すための信号を発生する。
さらに、主制御回路60には、副制御回路70に対してコマンド等の情報を送信するための主基板通信LSI610が接続されている。主基板通信LSI610は、マイクロコンピュータ600とともに主制御回路60を構成する要素として主基板6A(図6参照)に搭載されている。主基板通信LSI610の出力ポートは、光伝送路としての光ファイバーケーブル(図示せず)を介して副制御回路70に接続されている。マイクロコンピュータ600(メインCPU601)は、主基板通信LSI610を通じて各種のコマンド等を副制御回路70に送信する。なお、本実施形態のメインCPU601には、UART601Aが内蔵されており、メインCPU601は、UART601Aを通じて主基板通信LSI610に情報を送信可能とされる(図6参照)。このような主基板通信LSI610やUART601Aの詳細については、後述する。
副制御回路70は、後述するスタートコマンド等を含む主制御回路60から送信された各種のコマンドに基づいて演出データの決定や実行等の各種の処理を行う。副制御回路70が主制御回路60へコマンドや情報等を送信することはなく、主制御回路60から副制御回路70に向けて単方向(片方向)で通信が行われる。
副制御回路70からの制御信号により動作が制御される主要な周辺装置等としては、液晶表示領域10Aに画像を表示させる表示手段としての液晶表示装置10、スピーカ48,49、及びランプ20等がある。副制御回路70は、決定した演出データに基づいて、液晶表示装置10に表示される画像の決定とその表示、各種のランプ20の発光パターンの決定と出力、スピーカ48,49から出力する演出音や効果音の決定と出力等の制御を行う。この副制御回路70の詳細については、後述する。
パチスロ1では、メダルの投入を条件に、遊技者のスタートレバー16に対する操作によって、スタートスイッチ6Sから遊技を開始する信号が出力されると、モータ駆動回路39に制御信号が出力され、ステッピングモータ50L,50C,50Rの駆動制御(例えば、各相への励磁等)によりリール3L,3C,3Rの回転が開始される。この際、ステッピングモータ50L,50C,50Rに出力されるパルスの数が計数され、その計数値は、パルスカウンタとしてメインRAM603の所定の領域にセットされる。パチスロ1では、「16」のパルスが出力されると、リール3L,3C,3Rが図柄1つ分移動する。移動した図柄の数は計数され、その計数値は、図柄カウンタとしてメインRAM603の所定の領域にセットされる。つまり、パルスカウンタにより「16」のパルスが計数されるごとに、図柄カウンタが「1」ずつ更新される。なお、図柄カウンタの値が示す図柄位置の図柄(図10参照)がセンターライン8上に位置している図柄に対応する。例えば、左リール3Lの図柄カウンタが「0」である場合には、図10(a)に示す図柄配置テーブルの図柄位置「0」のベルがセンターライン8上に位置している。
また、リール3L,3C,3Rからは、1回転毎にリールインデックスが得られ、リールインデックスは、リール位置検出回路50を介してメインCPU601に出力される。リールインデックスの出力により、メインRAM603にセットされているパルスカウンタや図柄カウンタが「0」にクリアされる。このようにして、各リール3L,3C,3Rについて1回転の範囲内における図柄位置が特定される。なお、リールの回転により各図柄が1図柄分移動する距離を1コマという。すなわち、図柄が1コマ移動することは、図柄カウンタが「1」更新されることに対応する。
リール3L,3C,3Rの回転位置とリール外周面上に描かれた図柄とを対応付けるために、メインROM602には、図柄配置テーブル(図10(a)参照)が記憶されている。この図柄配置テーブルは、前述のリールインデックスが出力される位置を基準として、各リール3L,3C,3Rの一定の回転ピッチ毎に順次付与される、「00」から「20」までのコードナンバーと、それぞれのコードナンバー毎に対応して設けられた図柄の種類を識別する図柄コードとを対応付けている。
また、スタートスイッチ6Sから開始信号が出力されると、乱数発生器606やサンプリング回路607により乱数値が抽出される。パチスロ1では、乱数値が抽出されると、メインRAM603の乱数値記憶領域に記憶される。そして、乱数値記憶領域に記憶された乱数値に基づいて内部当籤役が決定される。
リール3L,3C,3Rが定速回転に達した後、停止操作によりストップスイッチ7LS,7CS,7RSから停止信号が出力されると、出力された停止信号および決定された内部当籤役に基づいて、リール3L,3C,3Rを停止制御する制御信号がモータ駆動回路39に出力される。モータ駆動回路39は、ステッピングモータ50L,50C,50Rを駆動制御し、リール3L,3C,3Rの回転を停止させる。
メインCPU601は、停止操作が行われた時点から内部当籤役の成立に係る図柄を最大滑りコマ数分、すなわち、4コマ分引き込んでリール3L,3C,3Rの回転を停止させる。具体的に、メインCPU601は、ストップスイッチ7LS,7CS,7RSにより停止操作の検出が行われた後、4コマ以内に内部当籤役の成立に係る図柄が存在するか否かを判別し、4コマ以内に内部当籤役の成立に係る図柄が存在する場合に、当該図柄を有効ライン上に停止表示されるように滑りコマ数を決定し、該当するリールを停止させる。また、メインCPU601は、内部当籤役として複数の役を決定した場合において、4コマ以内に内部当籤役の成立に係る図柄が複数存在する場合には、より優先順位の高い内部当籤役に係る図柄を有効ライン上に停止表示させるように滑りコマ数を決定する。
なお、基本的には、優先順位1位(優先度が最も高い)は、リプレイに係る図柄の組合せであり、優先順位2位は、小役に係る図柄の組合せである。次いで、優先順位3位は、ボーナスに係る図柄の組合せである。また、ストップスイッチ7LS,7CS,7RSにより停止操作の検出された際、該当するリール3L,3C,3Rの図柄カウンタに対応する図柄位置、すなわち、リールL,3C,3Rの回転の停止が開始される図柄位置を「停止開始位置」といい、当該停止開始位置に決定した滑りコマ数(数値範囲「0」〜「4」)を加算した図柄位置、すなわち、リール3L,3C,3Rの回転を停止させる図柄位置を「停止予定位置」という。滑りコマ数は、ストップスイッチ7LS,7CS,7RSにより停止操作が検出されてから対応するリール3L,3C,3Rの回転が停止するまでのリール3L,3C,3Rの回転量であり、本実施形態においては、例えば最大滑りコマ数を「4」と規定している。
全てのリール3L,3C,3Rの回転が停止すると、メインCPU601は、センターライン8を含む有効ライン上に表示された図柄の組合せに基づいて表示役の検索処理、すなわち役の成立・不成立の判定処理を行う。表示役の検索は、メインROM602に記憶された後述の図柄組合せテーブル(図11参照)に基づいて行われる。この図柄組合せテーブルでは、表示役に係る図柄の組合せと、対応する配当とが設定されている。
表示役の検索により、入賞に係る図柄の組合せが表示されたと判別されると、ホッパー駆動回路341に制御信号が出力され、ホッパー装置34の駆動によりメダルの払い出しが行われる。この際、メダル検出部34Sは、ホッパー装置34から払い出されるメダルの枚数を計数し、その計数値が指定された数に達すると、払出完了信号回路342によりメダル払い出しの完了を示す信号が出力される。これにより、ホッパー駆動回路341に制御信号が出力され、ホッパー装置34の駆動が停止される。
なお、精算スイッチ14Sにより、クレジットモードに切り替えられている場合には、入賞に係る図柄の組合せが表示されたと判別されると、入賞に係る図柄の組合せに応じた払出枚数をメインRAM603のクレジットカウンタに加算する。また、副制御回路70には、払い出されたメダルの枚数に関する情報が送信され、これに基づいて液晶表示装置10の液晶表示領域10Aには、メダルの払出枚数および更新されたクレジット枚数が表示される。ここで、入賞に係る図柄の組合せが表示された場合に行われる、メダルの払い出し又はクレジットを総称して単に「払い出し」という場合がある。
[副制御回路の構成]
副制御回路70は、映像、音、光等を用いた遊技に関する演出を行うための制御を行う。副制御回路70は、主制御回路60から送信される各種のコマンド等に基づいて、演出データを決定して各種演出処理を行う。副制御回路70は、処理手段としてのサブCPU701、サブROM702、記憶手段としてのサブRAM703、レンダリングプロセッサ704、描画用RAM705(フレームバッファ706を含む)、ドライバ707、DSP708、A/D変換器709A、アンプ709B、オーディオRAM709C、及び通信手段としての副基板通信LSI710を有する。
サブCPU701は、サブROM702に記憶されているプログラムに基づいて、液晶表示装置10の表示制御、スピーカ48,49の出力制御、ランプ20の発光制御等を行う。具体的に、サブCPU701は、主制御回路60から各種のコマンド等を受信し、受信したコマンドに含まれる各種情報をサブRAM703に記憶させる。なお、主制御回路60からは、あらゆる情報がコマンドにより送信され、副制御回路70は、受信したコマンドに基づいて主制御回路60の状態を逐一判断することができる。サブCPU701は、サブRAM703に記憶させた遊技状態情報、内部当籤役情報等を参照しながら、プログラムを実行することにより、液晶表示装置10、スピーカ48,49、及びランプ20等の演出装置に行わせる演出の内容を決定する。サブCPU701は、決定した演出データに基づいて、レンダリングプロセッサ704を介して液晶表示装置10を制御し、スピーカ48,49から出力させる音と、各種ランプ20の発光を制御する。
また、サブCPU701は、サブROM702に記憶されている乱数取得プログラムを実行することにより、演出データ等を決定する際に用いる乱数値を取得する。ただし、主制御回路60と同様に乱数発生器およびサンプリング回路を副制御回路70内に設ける場合には、当該処理は不要である。
サブROM702は、サブCPU701が実行するプログラムを記憶するプログラム記憶領域と、各種テーブル等を記憶するデータ記憶領域を有する。プログラム記憶領域は、オペレーティングシステム、デバイスドライバ、主制御回路60との通信に係る各種の処理、演出の内容を決定するための演出登録タスク等を記憶する。一方、データ記憶領域は、演出抽籤テーブル等を記憶するテーブル記憶領域、キャラクタオブジェクトデータといったアニメーションデータ等を記憶する描画制御データ記憶領域、BGMや効果音といった音データ等を記憶する音声制御データ記憶領域、光の点灯パターン等を記憶するLED制御データ記憶領域等を有する。
サブRAM703は、図42に示すように、サブ制御ゲームデータ領域703aと、サブ制御ゲームデータサム値領域703bと、ワーク領域703cと、エラー情報履歴格納領域703dと、通信ログ収集領域703eと、通信エラー保存領域703fとを備える。
サブ制御ゲームデータ領域703aは、遊技の進行に関するゲームデータのうちでサブRAM703に記憶されるデータを記憶するようになっている。サブ制御ゲームデータサム値領域703bは、サブ制御ゲームデータ領域703aに記憶されたゲームデータのチェックサム用のサム値を記憶するようになっている。ワーク領域703cは、各種処理におけるワークデータを記憶するようになっている。
サブ制御ゲームデータ領域703aおよびワーク領域703cは、サブCPU701が各プログラムを実行する際に、作業用一時記憶手段として使用される。また、サブ制御ゲームデータ領域703aは、例えば、主制御回路60から送信されたコマンド、演出データ情報、遊技状態情報、内部当籤役情報、表示役情報、各種カウンタおよび各種フラグ等の情報を記憶するようになっている。
エラー情報履歴格納領域703dは、図43(a)に示すように、後述する主基板通信処理(図28参照)や通信LSI受信データ解析処理(図29参照)等により検出された全てのエラー情報を記憶するようになっている。エラー情報履歴格納領域703dでは、エラーコードが逐次記憶されることにより、エラー情報履歴が作成されるようになっている。エラー情報履歴格納領域703dでは、検出されたエラーがCOMエラーとして記憶されるようになっている。
具体的には、図43(a)に示すように、エラー情報履歴格納領域703dは、エラーコード(図中、ERROR CODE)と、エラー発生日時(図中、「発生」)と、エラー解除日時(図中、「解除」)とを1組のエラー情報とし、128組のエラー情報を格納可能になっている。このように、エラー情報履歴格納領域703dでは、エラーコードが逐次記憶されることにより、エラー情報履歴が作成される。
エラーコードは、1バイトデータであり、その内容は、図43(b)に示すように、データ破壊エラー(図中、「サム異常」)や、通信に係る各種のエラー(図中、「主基板通信LSI物理層エラー」、「主基板通信LSIサイズ不足」、「副基板通信LSI物理層エラー」、「副基板通信LSIサイズ不足」、「副基板通信LSI CRCエラー」、「サブCPU CRCエラー」、「サブCPU サイズ不足」)や、その他のエラーを含んでいる。エラー発生日時およびエラー解除日時は、いずれも2バイトデータの年、1バイトデータの月、1バイトデータの日、1バイトデータの時、1バイトデータの分、1バイトデータの秒から構成されている。
本実施形態においては、エラー情報履歴格納領域703dに格納されたエラー情報履歴を液晶表示装置10に表示させるために次のような手順を一例として採用している。例えば、係員がドアキー110を右回転させると、フロントドア2bのロック機構が解除され、さらに設定キーを設定用鍵型スイッチに差し込んでオン操作すると、液晶表示領域10Aには、図32に示すメニュー画面が表示される。そして、係員が画面上の操作キーを操作して、「エラー情報履歴」項目100aを選択することで、液晶表示領域10Aには、図33に示すようなエラー情報履歴画面が表示される。また、係員がドアキーを左回転させるとエラーのリセットが行われ、その状態を一定時間、例えば5秒間以上保持することによっても、液晶表示領域10Aには、図33に示すようなエラー情報履歴画面が表示されるようになっている。
図35に示すように、通信ログ収集領域703eには、256のコマンドおよびパラメータのデータ組と、対応する1つのバッファインデックスとからなるデータ群が適宜数記憶され、それらがリングバッファとして機能するようになっている。図36に示すように、通信エラー保存領域703fには、256のコマンドおよびパラメータのデータ組と、対応する1つのバッファインデックスとからなるデータ群が1024個記憶されている。また、通信エラー保存領域703fには、1024のバッファインデックスのうちのどのバッファインデックスが選択されているかを示すバッファ選択インデックスが1つ設けられている。図35に示す通信ログ収集領域703e及び図36に示す通信エラー保存領域703fでは、コマンドは1文字データからなるとともに、パラメータは2文字データからなるものとしている。
サブCPU701は、受信ログ(以下、通信ログともいう)に関する情報を収集して、通信ログ収集領域703eに通信ログを一時的に保存する。さらに、サブCPU701は、通信に関するエラーを検出した場合に、通信エラー保存領域703fに通信エラーに関する通信ログ(以下、通信エラーログという)を1024個まで保存するようになっている。
図34には、コマンドの種別とパラメータとの例を示す。同図中の数値は、データの文字数であり、1文字のデータはコマンド種別、2文字のデータは直前のコマンドに対するパラメータをそれぞれ示す。本実施形態において、受信コマンドの数値範囲は、図34に示すように、01H〜10Hとなっている。
図4に示すように、サブCPU701には、主制御回路60から送信されたコマンド等のデータを受信するための副基板通信LSI710が接続されている。副基板通信LSI710は、副制御回路70を構成する要素として副基板7A(図6参照)に搭載されている。副基板通信LSI710は、光伝送路としての光ファイバーケーブル(図示せず)を介して主制御回路60における主基板通信LSI610に接続されている。サブCPU701は、副基板通信LSI710を通じて主制御回路60から送信された各種のコマンド等を受信する。なお、本実施形態のサブCPU701には、UART701Aが内蔵されており、サブCPU701は、UART701Aを通じて副基板通信LSI710との間でデータを送受信可能とされる(図6参照)。このような副基板通信LSI710やUART701Aの詳細については、後述する。
レンダリングプロセッサ704は、サブCPU701からの画像表示コマンド等に基づいて、液晶表示装置10に画像を表示させるための処理を行う。レンダリングプロセッサ704が行う処理に必要なデータは、起動時に描画用RAM705に展開される。レンダリングプロセッサ704は、描画用RAM705に展開されている画像データを後方に位置する背景画像から前方に位置する画像まで順に重ね合わせて画像データを生成し、ドライバ707を介して液晶表示装置10に供給する。その結果、サブCPU701により決定された演出データに応じた画像が液晶表示装置10によって液晶表示領域10Aに表示される。
描画用RAM705は、書込画像データ領域と表示画像データ領域の2つのフレームバッファ706を有する。書込画像データ領域は、レンダリングプロセッサ704が表示画像を生成した画像データを格納し、表示画像データ領域は、液晶表示装置10に表示させる画像データを格納する。レンダリングプロセッサ704は、これらのフレームバッファを交互に切り替える(すなわち、バンクを切り替える)ことにより、順次、画像データを液晶表示装置10に表示させる。
DSP708は、サブCPU701が演出データに基づいて選択するデジタル形式の音データに基づいてサウンドデータを生成する。オーディオRAM709Cは、サウンドデータを一時的に記憶し、オーディオバッファとして用いられる。A/D変換器709Aは、DSP708からのサウンドデータを、アナログ形式の音データに変換してアンプ709Bに出力する。アンプ709Bは、A/D変換器709Aからのアナログ形式の音データを音量調整用ツマミ(図示せず)により調節された音量に基づいて増幅させ、スピーカ48,49に出力する。その結果、サブCPU701により決定された演出データに応じた音が、スピーカ48,49から出力される。
[通信LSIの構成]
図5は、主基板通信LSI610及び副基板通信LSI710の構成を示している。主基板通信LSI610及び副基板通信LSI710は、同一の構成要素を有するものである。以下、主基板通信LSI610と副基板通信LSI710とに共通する各構成要素の機能を主として説明するとともに、主基板通信LSI610と副基板通信LSI710とで各構成要素の機能が異なる点については、主基板通信LSI610と副基板通信LSI710とで適宜区別して説明する。
図5に示すように、主基板通信LSI610及び副基板通信LSI710は、専用コントローラ611,711、設定レジスタ612,712、キャッシュメモリ613,713、AES(Advanced Encryption Standard)回路614,714、第1UART(Universal Asynchronous Receiver Transmitter)615,715、第2UART616,716、第1SPI(Serial Peripheral Interface)617,717、第2SPI(図示せず)、第1〜4マンチェスター回路618〜621,718〜721、及びクロック・リセット制御回路622,722を構成要素として有する。これらの構成要素は、内部バス623,723を介して相互に接続されている。第1UART615,715及び第1マンチェスター回路618,718は、互いに接続されており、第2UART616,716及び第2マンチェスター回路619,719も、互いに接続されている。このような主基板通信LSI610及び副基板通信LSI710は、例えばASICにより構成される。
専用コントローラ611,711は、送信及び受信に係る全般的な制御を行う。例えば、専用コントローラ611,711は、例えばハードウェアタイマとして機能し、送受信時にタイムアウト処理を行う。設定レジスタ612,712は、不揮発性メモリと同等の機能をもつ記憶回路である。設定レジスタ612,712には、後述のAES回路614,714で使用される暗号化キーや通信仕様に係る設定データ等が格納される。設定レジスタ612,712には、例えば基板実装時において1回に限り後述の第2SPIを通じてデータが書き込み可能である。キャッシュメモリ613,713は、主にバッファとして用いられる。例えば、キャッシュメモリ613,713には、送受信に係るデータが一時記憶される。クロック・リセット制御回路622,722は、発振器(OSC:Oscillator)や外部リセットによる入力信号に基づいてクロック信号やリセット信号を生成し、送受信のタイミングやリセット動作を制御する。
AES回路614,714は、共通鍵ブロック暗号方式によりデータの暗号化及び復号化を行う。AES回路614,714は、AES暗号化アルゴリズムに基づく機能ブロックと、AES暗号化アルゴリズムの逆関数であるAES復号化アルゴリズムに基づく機能ブロックとをハードウェア構成として備えている。AES暗号化アルゴリズムは、共通鍵を使って平文データを暗号化し、AES復号化アルゴリズムは、同じ共通鍵を使って暗号化したデータを元の平文データに戻すようになっている。
ここで、AES暗号化アルゴリズムは、共通鍵暗号方式の代表的な暗号化アルゴリズムであり、鍵長が128ビット、192ビット、256ビットから選択可能であって、ブロック長が例えば128ビットのSPN(Substitution Permutation Network Structure)構造のブロック暗号である。ほとんどのブロック暗号は、実装コストを効率化するため、同一のラウンド関数を繰り返す繰返し暗号になっており、SPN構造は、繰返し暗号の代表的な構成法である。また、ブロック暗号とは、共通鍵暗号の一種であり、固定長のデータを単位として処理する暗号の総称である。ちなみに、ビット単位やバイト単位で処理を行う暗号は、ストリーム暗号と称される。
図7は、AES回路614,714の構成を示す模式図である。同図に示すように、AES回路614,714は、所定ラウンド数の行列演算操作をステップ単位に繰り返し実行する機能ブロックにより構成される。AES回路614,714により繰り返し実行されるステップとしては、バイトサブステップ614A,714A、行シフトステップ614B,714B、列混合ステップ614C,714C、及び最終ステップとしてラウンド鍵追加ステップ614D,714Dがある。これらのステップが繰り返し実行される回数(ラウンド数)は、鍵長によって異なり、鍵長が128ビットでラウンド数11、鍵長が192ビットでラウンド数13、鍵長が256ビットでラウンド数15となっている。ただし、いずれにおいても最終ラウンドにおいては、列混合ステップ614C,714Cは実行されない。
バイトサブステップ614A,714Aでは、最初に、固定長の入力データが例えば4行4列からなる16個のバイトに区分され、各バイトがSボックスによって置換される。Sボックスは、共通鍵ブロック暗号方式の基本的な関数をハードウェアにより実現したものであり、平文と暗号文の相関性(線形性)を壊すための仕組みを提供している。Sボックスは、差分暗号解読に対する耐性に優れており、また、線形暗号解読による近似を防止することにおいても優れている。
次に、行シフトステップ614B,714Bでは、行及び列からなるバイトのうちの各行が所定のアルゴリズムに基づいて行方向にシフトされる。このような行シフトステップ614B,714Bは、各行の異なるバイトがその他の行において対応するバイトと相互作用しないようにする仕組みを提供している。
次に、列混合ステップ614C,714Cでは、行シフトステップ614B,714Bを経た各列のバイトがガロア体演算に基づく行列により乗算される。このような列混合ステップ614C,714Cは、各列における各バイトが他のバイトに影響を与えるようにする仕組みを提供している。
次に、ラウンド鍵追加ステップ614D,714Dでは、設定レジスタ612,712に格納された暗号化キー(公開鍵)を所定のアルゴリズムに基づいて変換し、変換したデータがラウンド鍵として次のラウンドに渡される。そして、ラウンド鍵追加ステップ614D,714Dでは、ラウンドごとに異なるラウンド鍵と列混合ステップ614C,714Cあるいは行シフトステップ614B,714Bを経た各バイトとの排他的論理和がとられる。なお、ラウンド鍵に対してオリジナル鍵となる暗号化キー(公開鍵)やAES回路614,714に関する設定データ等は、例えば基板実装時において1回に限り、後述の第2SPIを通じて設定レジスタ612,712に書き込まれる。
このようなAES回路614,714によれば、上述したバイトサブステップ614A,714A、行シフトステップ614B,714B、列混合ステップ614C,714C、ラウンド鍵追加ステップ614D,714Dが所定ラウンド数繰り返し実行されることにより、暗号化されたデータが出力される。暗号化されたデータは、AES回路614,714によるAES暗号化アルゴリズムとは逆のAES復号化アルゴリズムにより元の平文データに変換される。これにより、主基板通信LSI610から副基板通信LSI710へと送信されるデータは、AES暗号化されたデータとなって解読されにくい。すなわち、主基板通信LSI610と副基板通信LSI710との間の通信区間においては、AES暗号化により通信ゴトを十分に防止することができる。
第1UART615,715は、調歩同期方式によるシリアル信号をパラレル信号に変換したり、その逆方向の変換を行う回路である。第1UART615,715では、送受信のタイミングを計るための同期クロック信号線が不要とされる。第1UART615,715は、送受信時のエラー(物理層エラー)を検出する機能を有する。第1UART615,715は、専用コントローラ611,711にエラーが発生したことを伝える。
図39に示すように、エラーの種類には、パリティエラー、オーバーランエラー、フレーミングエラー等がある。パリティエラーは、受信したデータのパリティビットに誤りがあるときに発生する。オーバーランエラーは、受信データバッファ(キャッシュメモリ613,713)に格納されたデータを専用コントローラ611,711が取り出さないうちに、次のデータを受信してしまったときに発生する。フレーミングエラーは、ストップビットを受信すべきタイミングで、ストップビットの論理値ではなかったときに発生する。
なお、第2UART616,716は、第1UART615,715と同様の機能を有するものであり、共通する機能についての説明は省略する。メインCPU601及びサブCPU701のそれぞれに内蔵されたUART601A及びUART701A(図6参照)も、第1UART615,715と同様の機能を有するものであり、共通する機能についての説明は省略する。
第1SPI617,717は、同期方式によるシリアル通信用のインターフェース回路である。第1SPI617,717は、非同期方式のシリアル通信に比べて高速にデータを送受信し得る。第1SPI617,717には、複数のデバイスが接続可能である。本実施形態において、第1SPI617,717は、主基板通信LSI610及び副基板通信LSI710の拡張機能として予備的に設けられている。なお、図示しない第2SPIは、第1SPI617,717と同様の機能を有するものであり、共通する機能についての説明は省略する。本実施形態の第2SPIには、設定レジスタ612,712に対して暗号化キーや設定データ等を書き込む際に用いる専用端子が設けられている。すなわち、第2SPIは、暗号化キーや設定データ等の書き込みデバイス専用の接続回路として使用される。
第1マンチェスター回路618,718は、二相位相偏移変調(BPSK:Binary Phase−Shift Keying)方式によりデジタル形式のシリアルデータの変調(符号化)及び復調(復号化)を行う回路である。第1マンチェスター回路618,718は、連続する「0」又は「1」からなる比較的長いストリングが含まれない任意のビット列からなるシリアルデータを変調し、また、変調されたシリアルデータから元のビット列からなるデジタルデータを復調する。第1マンチェスター回路618,718は、変調の際に用いるクロックレートをシリアルデータ内に埋め込むことができる。基本的にマンチェスター変調方式では、デジタル入力値の「1」及び「0」からなるバイナリ状態を遷移として定義付け、シリアルデータとして入力される信号の立上りエッジと立下りエッジに対し、デジタル出力値としてロジックレベルの「0」と「1」、あるいはその逆のロジックレベルを割り当てることにより、変調されたシリアルデータを生成する。復調の際には、変調とは逆の手順で復調を行い、デジタル入力値としてロジックレベルの「0」と「1」に対して、出力すべき信号に立上りエッジと立下りエッジ、あるいはその逆の信号波形を形成することにより、復調されたシリアルデータを生成する。
なお、本実施形態においては、図5及び図6に具体的に示すように、第1マンチェスター回路618,718は、第1UART615,715と対をなし、この第1UART615,715を通じてデータを送受信し得るように構成されている。第2マンチェスター回路619,719、第3マンチェスター回路620,720、及び第4マンチェスター回路621,721は、第1マンチェスター回路618,718と同様の機能を有するものであり、共通する機能についての説明は省略する。また、本実施形態では、有線の光通信システム(主基板通信LSI610及び副基板通信LSI710)に第1マンチェスター回路618,718を設けているが、マンチェスター回路は、一般的に無線伝送に適しているので、マンチェスター回路を含む無線通信システムを構築するようにしてもよい。
第2マンチェスター回路619,719は、第2UART616,716と対をなし、この第2UART616,716を通じてデータを送受信するように構成されている。第3マンチェスター回路620,720は、第1SPI617,717を介する送受信用として設けられ、この第1SPI617,717を通じてデータを送受信するように構成されている。第4マンチェスター回路621,721は、その他の回路と組み合わされずに独立したものとして設けられ、第4マンチェスター回路621,721単独でデータを送受信し得るように構成されている。
本実施形態においては、図8に具体的に示すように、主基板通信LSI610の第2マンチェスター回路619は、主にマンチェスター変調回路として機能する一方、副基板通信LSI710の第2マンチェスター回路719は、主にマンチェスター復調回路として機能する。変調回路としての第2マンチェスター回路619は、同期用のクロック信号800cと入力されるシリアルデータ800dとの排他的論理和をとり、その結果、変調されたシリアルデータ800d’を生成・出力する。復調回路としての第2マンチェスター回路719は、同期用のクロック信号800cと変調されたシリアルデータ800d’とを入力としてこれらの排他的論理和をとり、その結果、復調された元のシリアルデータ800dを生成・出力する。このような第2マンチェスター回路619,719は、デジタルデータを比較的安価に送受信することができる。
図6に模式的に示すように、本実施形態の主基板6Aにおいては、メインCPU601からのコマンドを含むデータ(パケットデータ)が、UART601Aから第1UART615に供給され、この第1UART615で後述する物理層エラーの検出等が行われた後、AES614で暗号化され、さらに第2UART616を通じて第2マンチェスター回路619に供給され、この第2マンチェスター回路619で変調されるように構成されている。このようにして変調されたデータは、コマンドを含むシリアルデータとされ、光ファイバーケーブルの端子部に相当する光リンク630及び光ファイバーケーブルを通じて副基板7Aへと送信される。
副基板7Aにおいては、主基板6Aから送信されたコマンドを含むシリアルデータが、光ファイバーケーブル及びその端子部に相当する光リンク730を通じて第2マンチェスター回路719に供給され、この第2マンチェスター回路719で復調された後、第2UART716を通じてAES714に供給され、さらにAES714において復号化された後、第1UART715を通じてUART701Aに供給されることにより、サブCPU701がメインCPU601からのコマンドを受信し得るようになっている。
また、図9に示すように、メインCPU601から主基板通信LSI610へと送信されるデータは、8Byteの平文からなるパケットデータであり、その際の通信速度(ボーレート)は、19200bpsとされる。これは、メインCPU601及び主基板通信LSI610間の通信仕様、具体的には、メインCPU601の処理スペックに応じて設計された通信仕様に準拠するものである。主基板通信LSI610から副基板通信LSI710へと送信されるデータは、マンチェスター変調及び暗号化された16Byteのデータであり、その際の通信速度は、115200bpsとされる。これは、主基板通信LSI610及び副基板通信LSI710間の通信仕様、具体的には、主基板通信LSI610及び副基板通信LSI710、並びにサブCPU701の処理スペックに応じて設計された通信仕様に準拠するものである。副基板通信LSI710からサブCPU701へと送信されるデータは、マンチェスター復調及びAES復号化された16Byteの平文データであり、その際の通信速度は、115200bpsとされる。これは、副基板通信LSI710及びサブCPU701間の通信仕様、具体的には、サブCPU701のスペックに応じて設計された通信仕様に準拠するものである。
[通信データの内容]
図37〜41は、送受信に係る通信データの内容を示す説明図である。以下、図37〜41を参照して通信データについて説明する。
図37に示すように、主基板通信LSI610から副基板通信LSI710へと送信される外部通信データは、D0〜D15のバイト単位の番号(バイトナンバー)で区分けされた16Byte固定長のデータフレームからなる。
外部通信データのバイトナンバーD0,D1には、パケット受信番号が割り当てられる。パケット受信番号は、0〜65535の値が割り当て可能であり、1パケット受信あるいは受信中タイムアウトにより加算(インクリメント)される。1パケット受信とは、メインCPU601から例えば1Byteのパケット単位(伝送単位)で送信されるデータを受信したことを意味する。受信中タイムアウトとは、パケット単位の1個分のデータが例えば1Byteである場合、1Byte未満のデータしか受信していない状況でタイムアウトが発生したことを意味する。
外部通信データのバイトナンバーD2〜D9には、メインCPU601から送信されたパケットデータが割り当てられる。パケットデータは、メインCPU601からサブCPU701へと送信されるコマンドに相当する。パケットデータは、通信仕様に基づいて8Byte固定長と定められている。
外部通信データのバイトナンバーD10,D11には、主基板通信LSI610に関連する通信情報が割り当てられる。具体的にいうと、バイトナンバーD10には、主基板通信LSI610から送信されるパケットデータのデータサイズが割り当てられる。バイトナンバーD11には、主基板通信LSI物理層エラー等が受信ステータス(図39参照)として割り当てられる。主基板通信LSI物理層エラーとは、メインCPU601から供給されたデータを主基板通信LSI610が受信する際に第1UART615により検出され得るハードウェア上の通信エラーであり、例えば図39に示すオーバーランエラー、フレーミングエラー、パリティエラー等である。なお、パケットデータのデータサイズは、通信仕様に基づいて8Byte固定長であるので、バイトナンバーD10には、常に8Byteを示す固定値が割り当てられる。
外部通信データのバイトナンバーD12,D13には、副基板通信LSI710に関連する通信情報が割り当てられる。なお、バイトナンバーD12,D13には、後述するように副基板通信LSI710のデータ受信時に発生する受信ステータス等が割り当てられる。そのため、外部通信データにおけるバイトナンバーD12,D13は、単に予約領域として確保されており、例えばダミーデータとして固定値‘0000H’が割り当てられる。
外部通信データのバイトナンバーD14,D15には、巡回冗長検査(Cyclic Redundancy Check)によるCRCデータが割り当てられる。巡回冗長検査は、バイトナンバーD0〜D13を対象として行われる。
図38に示すように、副基板通信LSI710からサブCPU701へと送信される内部通信データは、基本的に図37に示す通信データと同一構造のフレームからなる。
内部通信データのバイトナンバーD0〜D11には、先述した外部通信データのバイトナンバーD0〜D11の内容がそのまま複写されて割り当てられる。
内部通信データのバイトナンバーD12,D13には、副基板通信LSI710に関連する通信情報が割り当てられる。具体的にいうと、バイトナンバーD12には、副基板通信LSI物理層エラー等が受信ステータスとして割り当てられる。副基板通信LSI物理層エラーとは、主基板通信LSI610から供給されたデータを副基板通信LSI710が受信する際に第2UART716により検出され得るハードウェア上の通信エラーであり、例えば図39に示すオーバーランエラー、フレーミングエラー、パリティエラー等である。バイトナンバーD13には、副基板通信LSI710が主基板通信LSI610から供給されたデータを受信する際に検出され得る後述の論理エラーがパケット種別として割り当てられる。
内部通信データのバイトナンバーD14,D15には、外部通信データと同様に巡回冗長検査によるCRCデータが割り当てられる。巡回冗長検査は、バイトナンバーD0〜D13を対象として行われる。
図39に示すように、受信ステータスは、B0〜B7のビット単位の番号(ビットナンバー)で区分けされたフォーマットからなる。
受信ステータスのビットナンバーB0〜B3には、エラーカウントが割り当てられる。エラーカウントは、受信エラー発生総数となる、パリティ、フレーミング、及びオーバーランに係るエラー発生総数を示し、0〜15の値が割り当て可能とされる。
受信ステータスのビットナンバーB4には、物理層エラーとしてオーバーランエラーの有無が割り当てられる。例えば、オーバーランエラーが有る場合、ビットナンバーB4には「1」が割り当てられ、オーバーランエラーが無い場合、ビットナンバーB4には「0」が割り当てられる。
受信ステータスのビットナンバーB5には、物理層エラーとしてフレーミングエラーの有無が割り当てられる。例えば、フレーミングエラーが有る場合、ビットナンバーB5には「1」が割り当てられ、フレーミングエラーが無い場合、ビットナンバーB5には「0」が割り当てられる。
受信ステータスのビットナンバーB6には、物理層エラーとしてパリティエラーの有無が割り当てられる。例えば、パリティエラーが有る場合、ビットナンバーB6には「1」が割り当てられ、パリティエラーが無い場合、ビットナンバーB6には「0」が割り当てられる。
受信ステータスのビットナンバーB7には、タイムアウトの有無が割り当てられる。例えば、タイムアウトが発生した場合、ビットナンバーB7には「1」が割り当てられ、タイムアウトが発生し無かった場合、ビットナンバーB7には「0」が割り当てられる。
図40に示すように、パケット種別は、B0〜B7のビット単位の番号(ビットナンバー)で区分けされたフォーマットからなる。
パケット種別のビットナンバーB0〜B4には、論理エラーの種類が割り当てられる。例えば、ビットナンバーB0〜B4には、論理エラーが無い場合、「00000」のビット列が割り当てられ、CRCエラーが有る場合、「00001」のビット列が割り当てられ、主基板通信LSI610がメインCPU601から受信したデータにサイズ不足が有る場合、「00010」のビット列が割り当てられ、副基板通信LSI710が主基板通信LSI610から受信したデータにサイズ不足が有る場合、「00100」のビット列が割り当てられ、その他の論理エラーが有る場合、その論理エラーに対応付けられたビット列が割り当てられる。なお、パケット種別のビットナンバーB0〜B4に割り当てられるCRCエラーは、副基板通信LSI710が主基板通信LSI610からデータを受信する際に発生し得るものである。主基板通信LSI610がメインCPU601からデータを受信する際のサイズ不足は、主基板通信LSI610の受信ステータスとしてタイムアウトが発生した場合に生じるものである。副基板通信LSI710が主基板通信LSI610からデータを受信する際のサイズ不足は、副基板通信LSI710の受信ステータスとしてタイムアウトが発生した場合に生じるものである。
パケット種別のビットナンバーB5〜B7には、通信分類が割り当てられる。例えば、ビットナンバーB5〜B7には、主制御回路60との通信(主制御通信)に該当する場合、「000」のビット列が割り当てられ、その他の通信に該当する場合、その通信に対応付けられたビット列が割り当てられる。
図41(a)に示すように、メインCPU601は、コマンドを含む8Byte固定長のパケットデータP0〜P7をシリアルデータとして主基板通信LSI610に送信する。例えば、パケットデータP0は、コマンドに係るデータを示し、パケットデータP1〜P6は、コマンドに対応するパラメータデータを示し、パケットデータP7は、パケットデータP0〜P6のチェックサムとして例えばBCC(Block Check Character)を示す。主基板通信LSI610では、受信したパケットデータP0〜P7に対して物理層エラー等のチェックを行い、さらに受信結果等を付加したデータに対してAES暗号化が行われる。
図41(b)に示すように、主基板通信LSI610は、メインCPU601からパケットデータP0〜P7を受信すると、当該パケットデータP0〜P7を含む16Byte固定長の外部通信データD0〜D15をシリアルデータとして副基板通信LSI710に送信する。このとき、主基板通信LSI610から送信されるシリアルデータには、AES614により暗号化され、かつ、変調回路としての第2マンチェスター回路619により変調された外部通信データD0〜D15が載せられる。パケットデータP0〜P7は、外部通信データD0〜D15のうちの例えばD2〜D9に配置される(図37参照)。
図41(c)に示すように、副基板通信LSI710は、主副基板通信LSI610からシリアルデータとして外部通信データD0〜D15を受信すると、当該外部通信データD0〜D15に応じた可変長の内部通信データSTX(Start of TeXt),DLE(Data Link Escape),D0〜D15をシリアルデータとしてサブCPU701に送信する。このとき、副基板通信LSI710から送信されるシリアルデータには、AES714により復号化され、かつ、復調回路としての第2マンチェスター回路719により復調された内部通信データD0〜D15が載せられる。メインCPU601からのパケットデータP0〜P7は、内部通信データD0〜D15のうちの例えばD2〜D9に配置される(図38参照)。D0〜D15は、シリアル形式のバイナリデータとして送信される一方、STXやDLEは、後述するように制御キャラクタとして送信される。
例えば、副基板通信LSI710から送信されるデータに後述の制御データ(受信コマンドに該当するデータ、図34参照)に該当するものが無い場合、通信伝文の開始を示す制御キャラクタの「STX」のみを先頭に付加した内部通信データSTX,D0〜D15が送信される。このとき、データ送信サイズとして最小送信バイト数は、D0〜D15の16ByteにSTXの1Byte分を加えた17Byteとなる。一方、副基板通信LSI710から送信されるデータに制御データに該当するものが有る場合、「STX」を先頭に付加すると共に、制御データを含むブロック(図41(c)では一例としてバイトナンバーD12)の前にその旨を示す制御キャラクタの「DLE」を付加した内部通信データSTX,DLE,D0〜D15が送信される。これにより、データ送信サイズとして最大送信バイト数は、全てのブロックD0〜D15に制御データが含まれている場合を仮定すると、理論的にはD0〜D15の16Byteとこれらに対応するDLEの最大16ByteとSTXの1Byteとを合計した33Byteとなる。副基板通信LSI710は、送信すべきデータ中に制御データを検出すると、該当するバイトナンバーのブロックをエスケープ処理し、当該ブロックの前にDLEを付加する。エスケープ処理は、該当するブロック(バイトナンバー)のデータと所定値との排他的論理和を算出することにより実行される。
以上説明したように、メインCPU601は、遊技に係る所定の制御処理を行う第1の制御処理手段を実現している。サブCPU701は、第1の制御処理手段からのコマンドに応じて第1の制御処理手段とは別の特定の制御処理を行う第2の制御処理手段を実現している。
また、主基板通信LSI610は、第1の制御処理手段からコマンドを第1の通信速度で受信するとともに、当該コマンドを含む通信データを第1の通信速度とは異なる第2の通信速度で送信する第1の通信手段を実現している。副基板通信LSI710は、第1の通信手段から第2の通信速度で通信データを受信し、当該通信データを第2の制御処理手段へと送信する第2の通信手段を実現している。
また、主基板通信LSI610の専用コントローラ611は、コマンドを所定の伝送単位ごとに検出するための第1の受信待ち時間を第1の通信速度に基づいて算出する第1の受信待ち時間算出手段と、コマンドを所定の伝送単位ごとに第1の受信待ち時間に基づいて検出しながら受信する第1の受信手段と、を実現している。副基板通信LSI710の専用コントローラ711は、通信データを所定の伝送単位ごとに検出するための第2の受信待ち時間を第2の通信速度に基づいて算出する第2の受信待ち時間算出手段と、通信データを所定の伝送単位ごとに第2の受信待ち時間に基づいて検出しながら受信する第2の受信手段と、を実現している。
また、主基板通信LSI610の専用コントローラ611及び第1UART615は、コマンドの受信に際して第1の通信エラーを検出する第1の通信エラー検出手段を実現している。専用コントローラ611は、第1の通信エラーが検出された場合、当該第1の通信エラーに関する第1エラー情報を生成する第1エラー情報生成手段と、生成された第1エラー情報を、コマンドと共に通信データに含めて当該通信データを送信する第1の送信手段と、を実現している。副基板通信LSI710の専用コントローラ711及び第2UART716は、通信データの受信に際して第2の通信エラーを検出する第2通信エラー検出手段を実現している。専用コントローラ711は、第2の通信エラーが検出された場合、当該第2の通信エラーに関する第2エラー情報を生成する第2エラー情報生成手段と、生成された第2エラー情報を、コマンド及び第1エラー情報を含む通信データに含めて当該通信データを送信する第2の送信手段と、を実現している。
また、サブCPU701及びUART701Aは、通信データの受信に際して第3の通信エラーを検出する第3通信エラー検出手段を実現している。このサブCPU701は、後述する受信データ解析処理(図29参照)を実行することにより、第3の通信エラーが検出された場合、当該第3の通信エラーに関する第3エラー情報を生成する第3エラー情報生成手段と、第2の送信手段から受信した通信データと第3エラー情報に基づいて通信エラーの解析を行う通信エラー解析手段と、を実現している。
また、主基板通信LSI610において、AES回路614は、通信データを所定の暗号方式で暗号化する暗号化手段を実現しており、第2マンチェスター回路619は、暗号化手段により暗号化された通信データを二相位相偏移変調方式により変調する変調手段を実現している。副基板通信LSI710において、第2マンチェスター回路719は、変調手段により変調された通信データを二相位相偏移変調方式により復調する復調手段を実現しており、AES回路714は、復調手段により復調された通信データを所定の暗号方式により復号化する復号化手段を実現している。
次に、図10〜16を参照して、メインROM602に記憶されている各種テーブル等の構成について説明する。メインROM602には、図柄配置テーブル、図柄コード、図柄組合せテーブル、ボーナス作動時テーブル、内部抽籤テーブル、内部当籤役決定テーブルが記憶されている。
[図柄配置テーブル及び図柄コード]
図10(a)に示すように、図柄配置テーブルは、各リールの回転方向における各図柄の位置と、各位置に配された図柄の種類を特定するデータ(以下、図柄コード(図10(b)参照)とを規定している。
図柄配置テーブルは、リールインデックスが検出されるときに表示窓4L,4C,4R内の中段(センターライン8上)に存在する図柄の位置を「0」として、リールの回転方向に進む順に、各図柄の位置に対して「0」〜「20」をそれぞれ割り当てている。したがって、リールインデックスが検出されてから図柄何個分の回転が行われたかを管理しつつ、図柄配置テーブルを参照することによって、主として表示窓4L,4C,4Rの中段に存在する図柄の位置及びその図柄の種類を常に管理することが可能である。
[図柄組合せテーブル]
本実施形態においては、入賞判定ラインとなるセンターライン8に沿って各リール3L,3C,3Rにより表示される図柄の組合せが、図柄組合せテーブルにより規定されている図柄の組合せと一致する場合に、メインCPU601により入賞と判定され、メダルの払い出し、再遊技の作動、ボーナスゲームの作動といった特典が遊技者に対して与えられる。
図11に示すように、図柄組合せテーブルは、特典の種類に応じて予め定められた図柄の組合せと、表示役と、払出枚数とを規定している。表示役は、入賞判定ライン(センターライン8)に沿って表示された図柄の組合せを識別するデータである。
表示役は、各ビットに対して固有の図柄の組合せが割り当てられた1バイトのデータとして表される。例えば、各リール3L,3C,3Rの図柄「ベル」が入賞判定ライン(センターライン8)に沿って表示されたとき、表示役として「ベル(00000010)」が決定される。
また、払出枚数として1以上の数値が決定された場合、メダルの払い出しが行われる。本実施形態では、表示役としてチェリー、ベル、又はスイカが決定されたときメダルの払い出しが行われる。また、払出枚数は、投入枚数に応じて規定されており、基本的に投入枚数が少ないときの方がより多くの払出枚数が決定される。
また、表示役としてリプレイが決定されたとき、再遊技の作動が行われる。表示役としてBBが決定されたとき、ボーナスの作動が行われる。なお、入賞判定ライン(センターライン8)に沿って表示された図柄の組合せが、図柄組合せテーブルにより規定されている図柄の組合せの何れとも一致しない場合には、いわゆる「ハズレ」となる。
[ボーナス作動時テーブル]
図12に示すように、ボーナス作動時テーブルは、ボーナスの作動が行われるときに、メインRAM603に設けられた各種格納領域に格納するデータを規定している。
作動中フラグは、作動が行われるボーナスの種類を識別するためのデータである。本実施形態では、ボーナスの種類としてBB(第1種特別役物に係る役物連続作動装置)及びRB(第1種特別役物)を設けている。RBの作動は、BBの作動が行われている間、連続的に行われる。
BBの作動は、規定枚数に達するメダルの払い出しが行われた場合に終了する。RBの作動は、規定回数に達する遊技が行われた場合、規定回数に達する入賞があった場合、又は、BBの作動が終了した場合の何れかによって終了する。ボーナス終了枚数カウンタ、遊技可能回数カウンタ及び入賞可能回数カウンタは、ボーナスの終了契機となる上記規定枚数或いは上記規定回数に達したか否かを管理するためのデータである。
より具体的には、ボーナス作動時テーブルにより規定されている数値が上記各カウンタに格納され、ボーナスの作動を通じてその減算が行われていく。その結果、各カウンタの値が「0」に更新されたことを条件に該当ボーナスの作動が終了する。
[内部抽籤テーブル]
図13及び図14に示すように、内部抽籤テーブルとしては、一般遊技状態用内部抽籤テーブル及びRB作動中用内部抽籤テーブルが設けられている。内部抽籤テーブルは、当籤番号に応じて、データポインタと抽籤値とを規定している。データポインタは、内部抽籤テーブルを参照して行う抽籤の結果として取得されるデータであり、後述の内部当籤役決定テーブルにより規定されている内部当籤役を指定するためのデータである。データポインタには、小役・リプレイ用データポインタ及びボーナス用データポインタが設けられている。
本実施形態では、予め定められた数値の範囲「0〜65535」から抽出される乱数値を、各当籤番号に応じた抽籤値で順次減算し、減算の結果が負となったか否か(いわゆる「桁かり」が生じたか否か)の判定を行うことによって内部的な抽籤が行われる。これにより、抽籤値として規定されている数値が大きいほど、これが割り当てられたデータ(つまり、データポインタ)が決定される確率が高い。なお、各当籤番号の当籤確率は、「各当籤番号に対応する抽籤値/抽出される可能性のある全ての乱数値の個数(65536)」によって表すことができる。
また、本実施の形態では、ボーナスの作動が行われているか否かといった状況に応じて、複数種類の内部抽籤テーブル(図13の一般遊技状態用内部抽籤テーブル及び図14のRB作動中用内部抽籤テーブル)を使い分けることにより、決定される内部当籤役の種類や当籤確率を変動させ、この結果、遊技者が抱く期待に起伏が生じるようにしている。
[内部当籤役決定テーブル]
図15及び図16に示すように、内部当籤役決定テーブルとしては、小役・リプレイ用内部当籤役決定テーブル及びボーナス用内部当籤役決定テーブルが設けられている。内部当籤役決定テーブルは、データポインタに応じて内部当籤役を規定している。データポインタが決定されると、内部当籤役が一義的に取得される構成となっている。
内部当籤役は、入賞判定ライン(センターライン8)に沿って表示を許可する各リール3L,3C,3Rの図柄の組合せを識別するデータである。内部当籤役は、表示役と同様に、各ビットに対して固有の図柄の組合せが割り当てられた1バイトのデータとして表される。なお、データポインタが「0」のとき、内部当籤役の内容は「ハズレ」となるが、これは前述の図柄組合せテーブルにより規定されている図柄の組合せの表示が何れも許可されないことを示す。
図15に示すように、小役・リプレイ用内部当籤役決定テーブルは、メダルの払い出しに係る内部当籤役又は再遊技の作動に係る内部当籤役を規定している。図16に示すように、ボーナス用内部当籤役決定テーブルは、ボーナスの作動に係る内部当籤役を規定している。
次に、図17〜19を参照して、メインRAM603に設けられている各種格納領域の構成について説明する。メインRAM603には、内部当籤役格納領域、表示役格納領域、持越役格納領域、作動中フラグ格納領域が設けられている。
[内部当籤役格納領域]
図17に示すように、内部当籤役格納領域は、前述の1バイトのデータにより表される内部当籤役を格納する。ビットに「1」が立っているとき、該当する図柄の組合せの表示が許可される。全ビットが「0」であるとき、その内容はハズレとなる。なお、メインRAM603には、前述の表示役が格納される表示役格納領域が設けられている。表示役格納領域の構成は、内部当籤役格納領域の構成と同様となっている。ビットに「1」が立っているとき、該当する図柄の組合せが入賞判定ライン(センターライン8)に沿って表示されたことになる。
[持越役格納領域]
図18に示すように、持越役格納領域は、前述の抽籤の結果、ボーナスの作動に係る内部当籤役が決定されたときにこれを格納する。持越役格納領域に格納されたボーナスの作動に係る内部当籤役(以下、持越役)は、対応する図柄の組合せが入賞判定ライン(センターライン8)に表示されるまで、その内容がクリアされずに保持される構成となっている。そして、持越役格納領域に持越役が格納されている間は、前述の抽籤の結果にかかわらず、これが内部当籤役格納領域に格納される。
[作動中フラグ格納領域]
図19に示すように、作動中フラグ格納領域は、1バイトからなる作動中フラグを格納する。作動中フラグは、各ビットに対して固有のボーナスが割り当てられている。ビットに「1」が立っているとき、該当するボーナスの作動が行われている。なお、本実施形態においては、全ビットが「0」であるときの状態を一般遊技状態と定義する。
次に、図20〜26を参照して、主制御回路60のメインCPU601により実行されるプログラムの内容について説明する。
[メインCPUの制御によるメインフローチャート]
図20は、メインCPU601の制御によるメインフローチャートを示す。図20に示すように、パチスロ1に電源が投入されると、はじめに、メインCPU601は、初期化処理を行う(S1)。
次に、メインCPU601は、メインRAM603における指定格納領域のクリアを行う(S2)。例えば、内部当籤役格納領域や表示役格納領域等、1回の遊技ごとに消去が必要となる格納領域に格納されたデータがクリアされる。
次に、メインCPU601は、図21を参照して説明するメダル受付・スタートチェック処理を行う(S3)。この処理では、メダルセンサやスタートスイッチの入力のチェック等が行われる。
次に、メインCPU601は、乱数値を抽出し、メインRAM603に設けられた乱数値格納領域に格納する(S4)。
次に、メインCPU601は、図22を参照して説明する内部抽籤処理を行う(S5)。この処理では、乱数値に基づいた抽籤により内部当籤役の決定が行われる。
次に、メインCPU601は、スタートコマンドを副制御回路70に対して送信する(S6)。スタートコマンドは、内部当籤役等を特定するパラメータを含んで構成される。スタートコマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。
次に、メインCPU601は、全リール3L,3C,3Rの回転開始を要求する(S7)。なお、全リール3L,3C,3Rの回転開始が要求されると、一定の周期(1.1173msec)で実行される割込処理(図26参照)によってステッピングモータ50L,50C,50Rの駆動が制御され、各リール3L,3C,3Rの回転が開始される。
次に、メインCPU601は、図23を参照して説明するリール停止制御処理を行う(S8)。この処理では、ストップスイッチ7LS,7CS,7RSの入力のチェックが行われ、ストップボタン17L,17C,17Rが押されたタイミングと内部当籤役とに基づいて該当リール3L,3C,3Rの回転が停止される。
次に、メインCPU601は、入賞判定ライン(センターライン8)に沿って表示された図柄の組合せを検索し、その結果に基づいて払出枚数等を決定する(S9)。検索の結果、入賞判定ライン(センターライン8)に沿って表示された図柄の組合せが図柄組合せテーブルにより規定されている図柄の組合せと一致する場合、対応する表示役及び払出枚数が決定される。
次に、メインCPU601は、表示コマンドを副制御回路70に対して送信する(S10)。表示コマンドは、表示役や払出枚数等を特定するパラメータを含んで構成される。表示コマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。
次に、メインCPU601は、メダル払出処理を行う(S11)。決定された払出枚数に基づいて、ホッパー装置34の駆動やクレジット枚数の更新が行われる。
次に、メインCPU601は、払出枚数に基づいて、ボーナス終了枚数カウンタを更新する(S12)。払出枚数として決定された数値がボーナス終了枚数カウンタから減算される。
次に、メインCPU601は、ボーナス作動中フラグがオンであるか否かを判別する(S13)。メインCPU601は、ボーナス作動中フラグがオンであると判別したときには、図25を参照して説明するボーナス終了チェック処理を行う(S14)。ボーナス終了チェック処理では、ボーナスの終了契機を管理するための各種カウンタを参照して、ボーナスの作動を終了するか否かがチェックされる。
メインCPU601は、S14の後、又は、S13においてボーナス作動中フラグがオンではないと判別したときには、図24を参照して説明するボーナス作動チェック処理を行う(S15)。ボーナス作動チェック処理では、ボーナスの作動を開始するか否かがチェックされる。この処理が終了すると、メインCPU601は、S2に移る。
[メダル受付・スタートチェック処理]
図21は、メインCPU601によるメダル受付・スタートチェック処理を示す。図21に示すように、メインCPU601は、自動投入カウンタは0であるか否かを判別する(S31)。メインCPU601は、自動投入カウンタは0であると判別したときには、メダル通過許可を行う(S32)。これにより、セレクタ51のソレノイドの駆動が行われ、セレクタ内のメダルの通過が促される。
メインCPU601は、自動投入カウンタは0ではないと判別したときには、自動投入カウンタを投入枚数カウンタに複写する(S33)。次に、メインCPU601は、自動投入カウンタをクリアする(S34)。S33及びS34は、再遊技を行うための処理である。
メインCPU601は、S32又はS34の後で、投入枚数カウンタの最大値として3をセットする(S35)。次に、メインCPU601は、ボーナス作動中フラグがオンであるか否かを判別する(S36)。メインCPU601は、ボーナス作動中フラグがオンであると判別したときには、投入枚数カウンタの最大値を変更する(S37)。例えば、最大値が2に変更される。
メインCPU601は、S37の後、又は、S36においてボーナス作動中フラグがオンではないと判別したときには、メダルの通過は検出されたか否かを判別する(S38)。メインCPU601は、メダルの通過は検出されたと判別したときには、投入枚数カウンタは最大値に達したか否かを判別する(S39)。メインCPU601は、投入枚数カウンタは最大値に達していないと判別したときには、投入枚数カウンタを1加算する(S40)。
次に、メインCPU601は、有効ラインカウンタに5を格納する(S41)。次に、メインCPU601は、メダル投入コマンドを副制御回路70に対して送信する(S42)。メダル投入コマンドは、投入枚数等を特定するためのパラメータを含んで構成されている。メダル投入コマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。
メインCPU601は、S39において投入枚数カウンタは最大値であると判別したときには、クレジットカウンタを1加算する(S43)。メインCPU601は、S43の後、S42の後、又は、S38においてメダルの通過が検出されていないと判別したときには、ベットスイッチ13Sのチェックを行う(S44)。これにより、ベットボタン12に対応する数値が投入枚数カウンタに加算される一方でクレジットカウンタから減算される。
次に、メインCPU601は、投入枚数カウンタは最大値に達したか否かを判別する(S45)。メインCPU601は、投入枚数カウンタは最大値に達していないと判別したときには、S38に移る一方で、投入枚数カウンタは最大値に達したと判別したときには、スタートスイッチ6Sはオンであるか否かを判別する(S46)。
メインCPU601は、スタートスイッチ6Sはオンではないと判別したときには、S38に移る一方で、スタートスイッチ6Sはオンであると判別したときには、メダル通過禁止を行う(S47)。セレクタ51のソレノイドの駆動が行われず、メダルの排出が促される。この処理が終了すると、メインCPU601は、メダル受付・スタートチェック処理を終了する。
[内部抽籤処理]
図22は、メインCPU601による内部抽籤処理を示す。図22に示すように、メインCPU601は、内部抽籤テーブル及び抽籤回数を決定する(S61)。これにより、作動中フラグ格納領域が参照され、ボーナスの作動の有無等に応じて、内部抽籤テーブル及び抽籤回数が決定される。なお、抽籤回数は、内部抽籤テーブルにより規定された各当籤番号について、抽籤値の減算及び桁かりが生じたか否かの判定を行う回数を示す。
次に、メインCPU601は、乱数値格納領域に格納されている乱数値を取得し、判定用乱数値としてセットする(S62)。次に、メインCPU601は、当籤番号の初期値として1をセットする(S63)。
次に、メインCPU601は、内部抽籤テーブルを参照し、当籤番号に対応する抽籤値を取得する(S64)。次に、メインCPU601は、判定用乱数値から抽籤値を減算する(S65)。次に、メインCPU601は、桁かりが行われたか否かを判別する(S66)。メインCPU601は、桁かりが行われていないと判別したときには、抽籤回数を1減算し、当籤番号を1加算する(S67)。
次に、メインCPU601は、抽籤回数は0であるか否かを判別する(S68)。メインCPU601は、抽籤回数は0ではないと判別したときには、S64に移る一方で、抽籤回数は0であると判別したときには、小役・リプレイ用データポインタとして0をセットし、ボーナス用データポインタとして0をセットする(S69)。
メインCPU601は、S66において桁かりが行われたと判別したときには、現在の当籤番号に応じて、小役・リプレイ用データポインタ及びボーナス用データポインタを取得する(S70)。メインCPU601は、S70又はS69の後で、小役・リプレイ用内部当籤役決定テーブルを参照し、小役・リプレイ用データポインタに基づいて内部当籤役を取得する(S71)。
次に、メインCPU601は、取得した内部当籤役を内部当籤役格納領域に格納する(S72)。次に、メインCPU601は、持越役格納領域に格納されているデータは0であるか否かを判別する(S73)。メインCPU601は、持越役格納領域に格納されているデータは0であると判別したときは、ボーナス用内部当籤役決定テーブルを参照し、ボーナス用データポインタに基づいて内部当籤役を取得する(S74)。次に、メインCPU601は、取得した内部当籤役を持越役格納領域に格納する(S75)。
メインCPU601は、S75の後、又は、S73において持越役格納領域に格納されているデータは0ではないと判別したときには、持越役格納領域と内部当籤役格納領域との論理和をとり、その結果を内部当籤役格納領域に格納する(S76)。これにより、ボーナスの作動に係る内部当籤役の持ち越しが行われる。この処理が終了すると、メインCPU601は、内部抽籤処理を終了する。
[リール停止制御処理]
図23は、メインCPU601によるリール停止制御処理を示す。図23に示すように、メインCPU601は、有効なストップボタン17L,17C,17Rが押されたか否かを判別する(S101)。メインCPU601は、有効なストップボタン17L,17C,17Rが押されていないと判別したときには、これが押されるまで待機する。
メインCPU601は、有効なストップボタン17L,17C,17Rが押されたと判別したときには、該当するストップボタン17L,17C,17Rの操作を無効化する(S102)。各ストップボタン17L,17C,17Rの有効及び無効の状態は、メインRAM603に設けられた所定の格納領域において管理される。
次に、メインCPU601は、チェック回数として5をセットする(S103)。本実施形態では、滑りコマ数の最大数を「4」としていることから、ストップボタン17L,17C,17Rが押されたときに該当表示窓4L,4C,4Rの中段にある図柄の位置を含め、そこから4コマ先の図柄の位置までがチェックの対象となる。つまり、「0」、「1」、「2」、「3」及び「4」の5つの数値の何れかが滑りコマ数として決定される。
次に、メインCPU601は、内部当籤役に基づいて、ストップボタン17L,17C,17Rが押されたときに対応する表示窓4L,4C,4Rの中段にある図柄の位置(以下、停止開始位置)を含めたチェック回数の範囲内にある各図柄の位置の中で、最も優先順位の高い図柄の位置を検索する(S104)。この処理では、内部当籤役によって表示が許可されている図柄の組合せを、入賞判定ライン(センターライン8)に沿って表示することが可能となる図柄の位置が、最も優先順位の高い図柄の位置として決定される。
次に、メインCPU601は、検索の結果に基づいて滑りコマ数を決定する(S105)。停止開始位置から上記最も優先順位の高い図柄の位置までの図柄の個数が滑りコマ数として決定される。次に、メインCPU601は、停止予定位置待ちへ移行する(S106)。停止予定位置待ちへ移行すると、後述の割込処理によってステッピングモータ50L,50C,50Rの駆動が制御され、最も優先順位の高い図柄の位置が対応する表示窓4L,4C,4Rの中段に到達するのを待って該当リール3L,3C,3Rの回転が停止される。
次に、メインCPU601は、リール停止コマンドを副制御回路70に対して送信する(S107)。リール停止コマンドは、停止したリールの種別等を特定するパラメータを含んで構成されている。リール停止コマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。
次に、メインCPU601は、操作が有効なストップボタン17L,17C,17Rがあるか否かを判別する(S108)。つまり、まだ回転中のリール3L,3C,3Rがあるか否かが判別される。メインCPU601は、操作が有効なストップボタン17L,17C,17Rがあると判別したときには、S101に移る一方で、操作が有効なストップボタン17L,17C,17Rがないと判別したときには、リール停止制御処理を終了する。
[ボーナス作動チェック処理]
図24は、メインCPU601によるボーナス作動チェック処理を示す。図24に示すように、メインCPU601は、表示役はBBであるか否かを判別する(S121)。メインCPU601は、表示役はBBであると判別したときには、ボーナス作動時テーブルを参照し、BB作動時処理を行う(S122)。この処理では、BB作動中フラグがオンにされ、ボーナス終了枚数カウンタに所定値がセットされる。
次に、メインCPU601は、持越役格納領域をクリアする(S123)。次に、メインCPU601は、ボーナス開始コマンドを副制御回路に対して送信する(S124)。ボーナス開始コマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。この処理が終了すると、メインCPU601は、ボーナス作動チェック処理を終了する。
メインCPU601は、S121において表示役はBBではないと判別したときには、表示役はリプレイであるか否かを判別する(S125)。メインCPU601は、表示役はリプレイであると判別したときには、投入枚数カウンタの値を自動投入カウンタに複写する(S126)。
メインCPU601は、S125において表示役はリプレイではないと判別したときには、BB作動中フラグはオンであるか否かを判別する(S127)。メインCPU601は、BB作動中フラグはオンではないと判別したときには、ボーナス作動チェック処理を終了する一方で、BB作動中フラグはオンであると判別したときには、RB作動中フラグはオンであるか否かを判別する(S128)。
メインCPU601は、RB作動中フラグはオンであると判別したときには、ボーナス作動チェック処理を終了する一方で、RB作動中フラグはオンではないと判別したときには、ボーナス作動時テーブルを参照し、RB作動時処理を行う(S129)。この処理では、RB作動中フラグがオンにされ、入賞可能回数カウンタ及び遊技可能回数カウンタに所定値がセットされる。この処理が終了すると、メインCPU601は、ボーナス作動チェック処理を終了する。
[ボーナス終了チェック処理]
図25は、メインCPU601によるボーナス終了チェック処理を示す。図25に示すように、メインCPU601は、ボーナス終了枚数カウンタは0であるか否かを判別する(S141)。メインCPU601は、ボーナス終了枚数カウンタは0であると判別したときには、BB終了時処理を行う(S142)。この処理では、BB作動中フラグ及びRB作動中フラグがオフされ、ボーナスの終了契機を管理するための各種カウンタがクリアされる。次に、メインCPU601は、ボーナス終了コマンドを副制御回路70に対して送信する(S143)。ボーナス終了コマンドは、メインCPU601内のUART601Aから主基板通信LSI610及び副基板通信LSI710を通じてサブCPU701に供給される。この処理が終了すると、メインCPU601は、ボーナス終了チェック処理を終了する。
メインCPU601は、S141においてボーナス終了枚数カウンタは0ではないと判別したときには、入賞可能回数カウンタ又は遊技可能回数カウンタを更新する(S144)。これにより、遊技可能回数カウンタが1減算され、また、入賞が有った場合に入賞可能回数カウンタが1減算される。次に、メインCPU601は、入賞可能回数カウンタ又は遊技可能回数カウンタは0であるか否かを判別する(S145)。
メインCPU601は、入賞可能回数カウンタ又は遊技可能回数カウンタは0ではないと判別したときには、ボーナス終了チェック処理を終了する一方で、入賞可能回数カウンタ又は遊技可能回数カウンタは0であると判別したときには、RB終了時処理を行う(S146)。この処理では、RB作動中フラグがオフされ、入賞可能回数カウンタ及び遊技可能回数カウンタがクリアされる。この処理が終了すると、メインCPU601は、ボーナス終了チェック処理を終了する。
次に、図27〜31に示すフローチャートを参照して、副制御回路70の遊技に関する動作について説明する。
[受信割込み処理]
図27は、サブCPU701による受信割込み処理を示す。図27に示すように、サブCPU701は、主制御回路60(メインCPU601)から主基板通信LSI610及び副基板通信LSI710を経由して供給された受信データを取得する(S181)。このとき、受信データは、サブCPU701内のUART701Aを通じてシリアルデータとして受信される。
次に、サブCPU701は、受信データは「STX」であるか否かを判別する(S182)。サブCPU701は、受信データは「STX」であると判別したときは、受信データバッファ及び受信カウンタをクリアするとともに、受信エラーフラグをオフにセットし(S183)、後述のS196に移る。受信データバッファ、受信カウンタ、受信エラーフラグは、サブRAM703の所定領域に確保される。受信データバッファは、受信データを一時記憶するために用いられる。受信カウンタは、例えば受信データをバイトナンバーで示されるブロック単位で1Byteずつ計数するために用いられる。受信エラーフラグは、データ受信時のエラーの有無を識別するために用いられる。
S182において、受信データは「STX」でないと判別すると、サブCPU701は、受信データは「DLE」であるか否かを判別する(S184)。サブCPU701は、受信データは「DLE」であると判別したときは、エスケープ処理フラグをオンにセットし(S185)、後述のS196に移る。エスケープ処理フラグは、サブRAM703の所定領域に確保される。エスケープ処理フラグは、エスケープ処理を実行する必要があるか無いかを識別するために用いられる。
S184において、受信データは「DLE」でないと判別すると、サブCPU701は、エスケープ処理フラグはオンであるか否かを判別する(S186)。サブCPU701は、エスケープ処理フラグはオンであると判別した場合は、受信データについてエスケープ処理を実行し(S187)、その後、エスケープ処理フラグをオフにセットする(S188)。
サブCPU701は、S188の後、又は、S186においてエスケープ処理フラグはオンでないと判別した場合は、受信データ及び受信ステータスをサブRAM703の所定領域に保存する(S189)。次に、サブCPU701は、受信カウンタを1加算して更新する(S190)。
次に、サブCPU701は、タイムアウトタイマをセットする(S191)。タイムアウトタイマは、データ受信時の通信エラーの有無を受信待ち時間によって判別するためのものである。本実施形態において、サブCPU701のタイムアウトタイマは、後述する主基板通信LSI610や副基板通信LSI710のタイムアウトタイマにより計時される受信待ち時間よりも長い例えば8Byte分程度のデータを受信するための待ち時間が計時されるように構成されている。
次に、サブCPU701は、受信カウンタは16Byteを計数したか否かを判別する(S192)。サブCPU701は、受信カウンタは16Byteを計数したと判別した場合は、タイムアウトタイマをクリアし(S193)、その後、S194に移る。サブCPU701は、受信カウンタは16Byteを計数していないと判別した場合は、後述のS196に移る。
次に、サブCPU701は、受信データの中からコマンド部に相当するデータと受信ステータスデータとを抽出し、これらのデータを受信データ登録キューに登録する(S194)。受信データ登録キューは、サブRAM703の所定領域に確保される。
次に、サブCPU701は、図29を参照して説明する通信LSI受信データ解析処理を行う(S195)。この通信LSI受信データ解析処理によれば、メインCPU601と主基板通信LSI610との間における通信エラー、主基板通信LSI610と副基板通信LSI710との間における通信エラー、副基板通信LSI710とサブCPU701との間における通信エラー等といった全ての通信経路上における各種の通信エラーが特定される。この通信LSI受信データ解析処理については後述する。
次に、サブCPU701は、副基板通信LSI710から供給された受信データに物理層エラーはあるか否かを判別する(S196)。この物理層エラーの有無を判別する処理は、主としてサブCPU701に内蔵されたUART701Aにより行われる。この際に検出され得る物理層エラーは、受信データ内の受信ステータス(バイトナンバーD11,D12に示される主基板通信LSI610及び副基板通信LSI710に係る受信ステータス)ではなく、サブCPU701がデータを受信した際にUART701Aにより検出されるオーバーランエラー、フレーミングエラー、パリティエラー等である。
S196において、受信データに物理層エラーはあると判別すると、サブCPU701は、受信エラーフラグをオンにセットする(S197)。その後、サブCPU701は、受信割込み処理を終了する。受信データに物理層エラーはないと判別すると、サブCPU701は、受信割込み処理を終了する。
[主基板通信処理]
図28は、サブCPU701による主基板通信処理を示す。図28に示すように、サブCPU701は、タイムアウトは発生したか否かを判別する(S201)。タイムアウトは、タイムアウトタイマにより計時される待ち時間を経過しても16Byte分のデータが受信されない場合に発生する。
S201において、タイムアウトは発生したと判別すると、サブCPU701は、‘COM3 ERR2’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録する(S202)。一方、タイムアウトは発生しなかったと判別すると、サブCPU701は、後述のS204に移る。次に、サブCPU701は、受信データバッファ及び受信カウンタをクリアし(S203)、S201に移る。
次に、サブCPU701は、受信データ登録キューから受信データ(コマンドデータと受信タスデータ)を取得する(S204)。そして、サブCPU701は、受信データ登録キューに受信データはあるか否かを判別する(S205)。
S205において、受信データ登録キューに受信データはあると判別した場合、サブCPU701は、次のS206に移る。一方、受信データ登録キューに受信データはないと判別した場合、サブCPU701は、S201に移る。
次に、サブCPU701は、取得した受信ステータスの内容に基づき、受信データにはエラーがないか否かを判別する(S206)。受信データにはエラーがないと判別した場合、サブCPU701は、コマンドデータの範囲についてチェックを行う(S207)。すなわち、サブCPU701は、コマンドデータのデータ種別を確認する。一方、受信データにはエラーがあると判別した場合、サブCPU701は、S201に移る。
次に、サブCPU701は、コマンドデータは所定の範囲内(所定のデータ種別)にあるか否かを判別する(S208)。コマンドデータは所定の範囲内にあると判別した場合、サブCPU701は、受信データについてBCCチェック処理を行う(S209)。このBCCチェック処理は、パケットデータP0〜P6のチェックサムとして再算出したBCCとパケットデータP7に収められたBCCとが一致するか否かに基づいて行われる。一方、コマンドデータは所定の範囲内にないと判別した場合、サブCPU701は、S201に移る。
次に、サブCPU701は、BCCチェック処理の結果としてBCCは正常か否かを判別する(S210)。BCCは正常と判別した場合、サブCPU701は、コマンドデータからコマンドの種別を抽出する(S211)。コマンドの種別としては、例えば、スタートコマンド、表示コマンド、メダル投入コマンド、リール停止コマンド、ボーナス開始コマンド、ボーナス終了コマンド等のほか、無操作状態を示す無操作コマンド等がある。一方、BCCは正常でないと判別した場合、サブCPU701は、S201に移る。
次に、サブCPU701は、コマンド種別が無操作コマンドか否かを判別する(S212)。無操作コマンドではないその他のコマンドと判別した場合、サブCPU701は、今回のコマンドとして前回と異なるコマンドを受信したか否かを判別する(S213)。一方、無操作コマンドであると判別した場合、サブCPU701は、S201に移る。
S213において、今回のコマンドとして前回と異なるコマンドを受信したと判別した場合、サブCPU701は、今回受信したコマンドをメッセージキューに登録し(S214)、S201に移る。一方、今回のコマンドとして前回と同じコマンドを受信したと判別した場合、サブCPU701は、そのままS201に移る。
[通信LSI受信データ解析処理]
図29は、サブCPU701による通信LSI受信データ解析処理を示す。図29に示すように、サブCPU701は、受信データのうちのバイトナンバーD0〜D13のデータについて巡回冗長検査によりCRCを算出する(S221)。
次に、サブCPU701は、算出したCRCは異常か否かを判別する(S222)。CRCは異常と判別した場合、サブCPU701は、‘COM3 ERR1’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S223)。一方、CRCは正常と判別した場合、サブCPU701は、次のS224に移る。
次に、サブCPU701は、受信データの中から主基板通信LSI受信ステータスを取得する(S224)。そして、サブCPU701は、主基板通信LSI受信ステータスに物理層エラーはあるか否かを判別する(S225)。
S225において、主基板通信LSI受信ステータスに物理層エラーはあると判別した場合、サブCPU701は、‘COM1 ERR1’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S226)。一方、物理層エラーはないと判別した場合、サブCPU701は、次のS227に移る。
次に、サブCPU701は、受信データの中から副基板通信LSI受信ステータスを取得する(S227)。そして、サブCPU701は、副基板通信LSI受信ステータスに物理層エラーはあるか否かを判別する(S228)。
S228において、副基板通信LSI受信ステータスに物理層エラーはあると判別した場合、サブCPU701は、‘COM2 ERR1’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S229)。一方、物理層エラーはないと判別した場合、サブCPU701は、次のS230に移る。
次に、サブCPU701は、受信データの中から副基板通信LSIパケット種別を取得する(S230)。そして、サブCPU701は、取得した副基板通信LSIパケット種別から論理エラー種類として主基板通信LSIサイズ不足はあるか否かを判別する(S231)。
S231において、副基板通信LSIパケット種別に論理エラー種類として主基板通信LSIサイズ不足はあると判別した場合、サブCPU701は、‘COM1 ERR2’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S232)。一方、主基板通信LSIサイズ不足はないと判別した場合、サブCPU701は、次のS233に移る。
次に、サブCPU701は、取得した副基板通信LSIパケット種別から論理エラー種類として副基板通信LSIサイズ不足はあるか否かを判別する(S233)。
S233において、副基板通信LSIパケット種別に論理エラー種類として副基板通信LSIサイズ不足はあると判別した場合、サブCPU701は、‘COM2 ERR2’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S234)。一方、副基板通信LSIサイズ不足はないと判別した場合、サブCPU701は、次のS235に移る。
次に、サブCPU701は、取得した副基板通信LSIパケット種別から論理エラー種類として副基板通信LSIのCRCエラーはあるか否かを判別する(S235)。
S235において、副基板通信LSIパケット種別に論理エラー種類として副基板通信LSIのCRCエラーはあると判別した場合、サブCPU701は、‘COM2 ERR3’を該当するエラー情報としてサブRAM703のエラー情報履歴格納領域703dに登録するとともに、受信エラーフラグをオンにセットする(S236)。その後、サブCPU701は、通信LSI受信データ解析処理を終了する。一方、副基板通信LSIのCRCエラーはないと判別した場合、サブCPU701は、サブCPU701は、通信LSI受信データ解析処理を終了する。
[サブCPUにより行われる演出登録タスク]
図30は、サブCPU701により行われる演出登録タスクを示す。図30に示すように、サブCPU701は、メッセージキューからメッセージを取り出す(S241)。次に、サブCPU701は、メッセージは有るか否かを判別する(S242)。サブCPU701は、メッセージは有ると判別したときには、メッセージから遊技情報を複写する(S243)。例えば、パラメータによって特定される、内部当籤役、回転が停止したリールの種別、表示役、作動中フラグ等といった各種データがサブRAM703に設けられた所定の格納領域に複写される。
次に、サブCPU701は、図31を参照して説明する演出内容決定処理を行う(S244)。この処理では、受信したコマンドの種別に応じて、演出内容の決定や演出データの登録等が行われる。
サブCPU701は、S244の後、又は、S242においてメッセージは無かったと判別したときには、アニメーションデータの登録を行う(S245)。次に、サブCPU701は、サウンドデータの登録を行う(S246)。次に、サブCPU701は、ランプデータの登録を行う(S247)。アニメーションデータの登録、サウンドデータの登録及びランプデータの登録は、演出内容決定処理において登録された演出データに基づいて行われる。この処理が終了すると、S241に移る。
[演出内容決定処理]
図31は、サブCPU701による演出内容決定処理を示す。図31に示すように、サブCPU701は、スタートコマンド受信時であるか否かを判別する(S261)。サブCPU701は、スタートコマンド受信時であると判別したときには、演出用乱数値を抽出し、内部当籤役等に基づいて演出番号を抽籤により決定し、登録する(S262)。演出番号は、今回において実行する演出内容を指定するデータである。
次に、サブCPU701は、登録されている演出番号に基づいて、スタート時の演出データを登録する(S263)。演出データは、アニメーションデータ、サウンドデータ、及びランプデータを指定するデータである。演出データが登録されると、対応するアニメーションデータ等が決定され、映像の表示等の演出が実行される。この処理が終了すると、サブCPU701は、演出内容決定処理を終了する。
次に、サブCPU701は、スタートコマンド受信時ではないと判別したときには、リール停止コマンド受信時であるか否かを判別する(S264)。サブCPU701は、リール停止コマンド受信時であると判別したときには、登録されている演出番号とストップボタンの種別に基づいて、停止時の演出データを登録する(S265)。この処理が終了すると、サブCPU701は、演出内容決定処理を終了する。
次に、サブCPU701は、リール停止コマンド受信時ではないと判別したときには、表示コマンド受信時であるか否かを判別する(S266)。サブCPU701は、表示コマンド受信時であると判別したときには、登録されている演出番号に基づいて、表示時の演出データを登録する(S267)。この処理が終了すると、サブCPU701は、演出内容決定処理を終了する。
次に、サブCPUサブCPU701は、表示コマンド受信時ではないと判別したときには、ボーナス開始コマンド受信時であるか否かを判別する(S268)。サブCPU701は、ボーナス開始コマンド受信時であると判別したときには、ボーナス開始用の演出データを登録する(S269)。この処理が終了すると、サブCPU701は、演出内容決定処理を終了する。
次に、サブCPU701は、ボーナス開始コマンド受信時ではないと判別したときには、ボーナス終了コマンド受信時であるか否かを判別する(S270)。サブCPU701は、ボーナス終了コマンド受信時ではないと判別したときには、演出内容決定処理を終了する。一方、ボーナス終了コマンド受信時であると判別した場合、サブCPU701は、ボーナス終了用の演出データを登録する(S261)。この処理が終了すると、サブCPU701は、演出内容決定処理を終了する。
上述したように、サブCPU701による受信割込み処理、主基板通信処理、及び通信LSI受信データ解析処理によれば、各種の通信に係るエラー情報がサブRAM703のエラー情報履歴格納領域703dに登録される。サブRAM703に登録されたエラー情報は、例えばホールコンピュータ等といった遠隔のデータ管理サーバに送信可能とされ、エラーの原因をパチスロ単体だけでなくホールコンピュータ等でも解析可能である。
次に、係員がエラー情報履歴を利用する際におけるパチスロ1について説明する。パチスロ1のサブCPU701は、図33に示すエラー情報履歴を液晶表示装置10に表示させるために、係員による通常操作と簡易操作との2種類の操作法を採用している。通常操作を実行する場合は、係員がドアキー110を右回転させてフロントドア2bのロック機構を解放し、設定キーをオン操作して設定用鍵型スイッチをオンにすることで、液晶表示領域10Aに図32に示すメニュー画面が表示される。そして、係員が操作キーを操作して、「エラー情報履歴」項目100aを選択することで、液晶表示領域10Aに図33に示すエラー情報履歴画面が表示される。一方、簡易操作を実行する場合は、係員は、エラー発生時や非遊技時にドアキー110を左回転させてエラーのリセットを行い、その状態を一定時間、例えば5秒間以上保持する。これにより、液晶表示領域10Aには、図33に示すエラー情報履歴画面が表示される。
サブCPU701は、係員が選択ボタン11Aと決定ボタン11Bを用いて、「エラー情報履歴」項目100aを選択する操作を検出すると、図33に示すように、液晶表示領域10Aにエラー情報履歴を表示する。エラー情報履歴には、例えば図中にハッチングで示すように、通信に係るCOMエラーとして、前述した「COM1 ERR1(COM1エラー1)」、「COM3 ERR2(COM3エラー2)」、「COM2 ERR1(COM2エラー1)」、「COM2 ERR3(COM2エラー3)」等が含まれる場合がある。
なお、サブCPU701は、係員が選択ボタン11Aと決定ボタン11Bを用いて、例えば「COM2 ERR3(COM2エラー3)」項目100bを選択する操作を検出すると、当該エラー情報履歴に基づいて送信情報を生成し、当該送信情報がホールコンピュータ等に送信されるように構成することも可能である。
次に、図44〜53に示すフローチャートを参照して、主基板通信LSI610及び副基板通信LSI710の通信に係る動作について説明する。
[メイン制御シーケンス(主基板通信LSI)]
図44は、主基板通信LSIによるメイン制御シーケンスを示す。図44に示すように、主基板通信LSI610の専用コントローラ611は、図46を参照して説明する初期設定処理を行う(S401)。この初期設定処理によれば、予め定められた通信仕様に基づいて通信に係る各種の設定情報がセットされる。初期設定処理については後述する。
次に、専用コントローラ611は、図47を参照して説明する受信処理を行う(S402)。この受信処理によれば、メインCPU601から供給されるコマンド等のデータが通信仕様に基づいて受信される。この受信処理については後述する。
次に、専用コントローラ611は、送信要求はあるか否かを判別する(S403)。このような送信要求の有無は、後述の送信要求フラグに基づいて判別される。送信要求はあると判別した場合、専用コントローラ611は、図48を参照して説明する送信処理を行う(S404)。その後、専用コントローラ611は、S402に移る。一方、送信要求はないと判別した場合、専用コントローラ611は、送信処理を行うことなくS402に移る。送信処理については後述する。
[受信割込み処理(主基板通信LSI)]
図45は、主基板通信LSIによる受信割込み処理を示す。図45に示すように、主基板通信LSI610の専用コントローラ611は、メインCPU601からUART601A及び第1UART615を経由して供給された受信データを取得する(S421)。
次に、専用コントローラ611は、メインCPU601から供給された受信データに物理層エラーはあるか否かを判別する(S422)。この物理層エラーの有無を判別する処理は、主として主基板通信LSI610に内蔵された第1UART615により行われる。この際に検出され得る物理層エラーは、第1UART615により検出されるオーバーランエラー、フレーミングエラー、パリティエラー等である。
S422において、受信データに物理層エラーはあると判別すると、専用コントローラ611は、検出した物理層エラーを主基板通信LSI受信ステータスにセットし(S423)、その後S424に移る。主基板通信LSI受信ステータスは、図37に示すように、主基板通信LSI610から副基板通信LSI710へと送信されるシリアルデータのバイトナンバーD11のブロックにセットされる。一方、受信データに物理層エラーはないと判別すると、専用コントローラ611は、後のS425に移る。
次に、専用コントローラ611は、エラーカウントを1加算して更新する(S424)。このようなエラーカウントは、主基板通信LSI受信ステータスのうちのビットナンバーB0〜B3にセットされ、エラーカウントにより受信エラー発生総数が示される(図39参照)。
次に、専用コントローラ611は、メインCPU601からの受信データを送信バッファ(キャッシュメモリ613)に順次保存し(S425)、その後、受信カウンタを1加算して更新する(S426)。受信カウンタは、メインCPU601から8Byte固定長のデータサイズで送られてくるデータを計数するために用いられる。
次に、専用コントローラ611は、タイムアウトタイマをセットし(S427)、この受信割込み処理を終了する。タイムアウトタイマは、データ受信時の通信エラーの有無を受信待ち時間によって判別するためのものである。本実施形態において、主基板通信LSI610における受信時のタイムアウトタイマは、パケット単位(伝送単位)で通信エラーを検出するために、少なくとも1Byte分のデータを受信することが可能な待ち時間が計時されるようになっている。具体的にいうと、主基板通信LSI610のタイムアウトタイマは、例えば48ビット(6Byte)分のデータを受信することが可能な待ち時間として、通信速度19200bpsを基に2.5msecが計時されるように構成されている。
[初期設定処理(主基板通信LSI)]
図46は、主基板通信LSIによる初期設定処理を示す。図46に示すように、主基板通信LSI610の専用コントローラ611は、第1UART615について初期設定を行う(S441)。具体的にいうと、専用コントローラ611は、設定レジスタ612に予め記憶されている通信仕様等に基づく設定データを参照し、第1UART615のコントロールレジスタにボーレート(送受信に係る通信速度)、送受信時のデータ長、パリティ、ストップビット等をセットする。本実施形態においては、例えば、メインCPU601との間の通信速度が19200bps、データ長が8ビット、パリティが偶数パリティ、ストップビットが1ビットとしてセットされる。
次に、専用コントローラ611は、受信に係る通信速度のボーレート設定値から第1UART615の受信時におけるタイムアウト値を算出する(S442)。具体的にいうと、専用コントローラ611は、例えばボーレート設定値が19200bpsで少なくとも48ビット分のデータを受信する場合、1/ボーレート×48によりタイムアウト値として2.5msecを得る。こうして得られたタイムアウト値は、タイムアウトタイマにセットされる。
次に、専用コントローラ611は、第2UART616について初期設定を行い(S442)、この初期設定処理を終了する。具体的にいうと、専用コントローラ611は、設定レジスタ612に予め記憶されている通信仕様等に基づく設定データを参照し、第2UART616のコントロールレジスタにボーレート(受信に係る通信速度)、送受信時のデータ長、パリティ、ストップビット等をセットする。本実施形態においては、例えば、副基板通信LSI710との間の通信速度が115200bps、データ長が8ビット、パリティが偶数パリティ、ストップビットが1ビットとしてセットされる。
[受信処理(主基板通信LSI)]
図47は、主基板通信LSIによる受信処理を示す。図47に示すように、主基板通信LSI610の専用コントローラ611は、メインCPU601からの受信データの取得に際してタイムアウトタイマを用いてタイムアウトが発生したか否かを判別する(S461)。
S461において、タイムアウトが発生していないと判別した場合、専用コントローラ611は、この受信処理を終了する。一方、タイムアウトが発生したと判別した場合、専用コントローラ611は、パケット受信番号を1加算して更新する(S462)。
次に、専用コントローラ611は、受信データは8Byte未満か否かを判別する(S463)。受信データは8Byte未満であると判別した場合、専用コントローラ611は、主基板通信LSI受信ステータスにエラー情報としてタイムアウトをセットする(S464)。エラー情報としてのタイムアウトは、図39に示すように、主基板通信LSI受信ステータスにおけるビットナンバーB7のビットを「1」としてセットされる。一方、受信データは8Byte未満でない、すなわち少なくとも8Byteの受信データであると判別した場合、専用コントローラ611は、次のS465に移る。
次に、専用コントローラ611は、送信要求フラグをセットし(S465)、この受信処理を終了する。送信要求フラグは、キャッシュメモリ613の所定領域に確保され、主基板通信LSI610が送信すべきデータの有無を識別するために用いられる。
[送信処理(主基板通信LSI)]
図48は、主基板通信LSIによる送信処理を示す。図48に示すように、主基板通信LSI610の専用コントローラ611は、送信要求フラグに基づいてデータの送信要求があるか否か、すなわちメインCPU601からのコマンド等を含む受信データがあるか否かを判別する(S481)。
S481において、データの送信要求があると判別した場合、専用コントローラ611は、パケット受信番号を送信バッファにセットする(S482)。送信バッファは、キャッシュメモリ613の所定領域に確保され、メインCPU601からサブCPU701へと供給されるコマンド等を含む通信データ等を一時記憶するために用いられる。一方、データの送信要求がないと判別した場合、専用コントローラ611は、この送信処理を終了する。
次に、専用コントローラ611は、メインCPU601からの受信データ(パケットデータ:データ固定長8Byte)を送信バッファにセットする(S483)。続いて、専用コントローラ611は、主基板通信LSI受信ステータスを送信バッファにセットする(S484)。また、専用コントローラ611は、ダミーデータを送信バッファにセットする(S485)。さらに、専用コントローラ611は、巡回冗長検査によりCRCを計算し、その計算結果としてのCRCデータを送信バッファにセットする(S486)。これにより、送信バッファからは、バイトナンバーD0〜D15の16Byteからなる外部通信データ(図37参照)がシリアル形式の送信データとして1Byteずつ順次出力される。このようにして主基板通信LSI610から副基板通信LSI710へと送信されるデータは、主基板通信LSI610においてマンチェスター変調及びAES暗号化された固定データ長16Byteのデータであり、通信仕様に基づいて通信速度115200bpsで伝送される。
次に、専用コントローラ611は、16Byte分のデータを送信したか否かを判別する(S487)。16Byte分のデータを送信していないと判別した場合、専用コントローラ611は、第2UART616の送信ポートから送信データを送信し(S488)、その後再びS487に戻る。一方、16Byte分のデータを送信したと判別した場合、専用コントローラ611は、受信データ、受信カウンタ、及び送信要求フラグをクリアし(S489)、この送信処理を終了する。
[メイン制御シーケンス(副基板通信LSI)]
図49は、副基板通信LSIによるメイン制御シーケンスを示す。図49に示すように、副基板通信LSI710の専用コントローラ711は、図51を参照して説明する初期設定処理を行う(S501)。この初期設定処理によれば、予め定められた通信仕様に基づいて通信に係る各種の設定情報がセットされる。初期設定処理については後述する。
次に、専用コントローラ711は、図52を参照して説明する受信処理を行う(S502)。この受信処理によれば、メインCPU601から主基板通信LSI610を通じて供給されるコマンド等を含む外部通信データが通信仕様に基づいて受信される。この受信処理については後述する。
次に、専用コントローラ711は、送信要求はあるか否かを判別する(S503)。このような送信要求の有無は、後述の送信要求フラグに基づいて判別される。送信要求はあると判別した場合、専用コントローラ711は、図53を参照して説明する送信処理を行う(S504)。その後、専用コントローラ711は、S502に移る。一方、送信要求はないと判別した場合、専用コントローラ711は、送信処理を行うことなくS502に移る。送信処理については後述する。
[受信割込み処理(副基板通信LSI)]
図50は、副基板通信LSIによる受信割込み処理を示す。図50に示すように、副基板通信LSI710の専用コントローラ711は、主基板通信LSI610から第2UART716を経由して供給された受信データを取得する(S521)。
次に、専用コントローラ711は、主基板通信LSI610から供給された受信データに物理層エラーはあるか否かを判別する(S522)。この物理層エラーの有無を判別する処理は、主として副基板通信LSI710に内蔵された第2UART716により行われる。この際に検出され得る物理層エラーは、第2UART716により検出されるオーバーランエラー、フレーミングエラー、パリティエラー等である。
S522において、受信データに物理層エラーはあると判別すると、専用コントローラ711は、検出した物理層エラーを副基板通信LSI受信ステータスにセットし(S523)、その後S524に移る。副基板通信LSI受信ステータスは、図38に示すように、副基板通信LSI710からサブCPU701へと送信されるシリアルデータのバイトナンバーD12のブロックにセットされる。一方、受信データに物理層エラーはないと判別すると、専用コントローラ711は、後のS525に移る。
次に、専用コントローラ711は、エラーカウントを1加算して更新する(S524)。このようなエラーカウントは、副基板通信LSI受信ステータスのうちのビットナンバーB0〜B3にセットされ、エラーカウントにより受信エラー発生総数が示される(図39参照)。
次に、専用コントローラ711は、主基板通信LSI610からの受信データを送信バッファ(キャッシュメモリ713)に順次保存し(S525)、その後、受信カウンタを1加算して更新する(S526)。受信カウンタは、主基板通信LSI610から16Byte固定長のデータサイズで送られてくるデータを計数するために用いられる。
次に、専用コントローラ711は、タイムアウトタイマをセットし(S527)、この受信割込み処理を終了する。このような副基板通信LSI710のタイムアウトタイマも、パケット単位(伝送単位)で通信エラーを検出するために、少なくとも1Byte分のデータを受信することが可能な待ち時間が計時されるようになっている。具体的にいうと、副基板通信LSI710のタイムアウトタイマは、例えば48ビット(6Byte)分のデータを受信することが可能な待ち時間として、通信速度115200bpsを基に約0.4msecが計時されるように構成されている。
[初期設定処理(副基板通信LSI)]
図51は、副基板通信LSIによる初期設定処理を示す。図51に示すように、副基板通信LSI710の専用コントローラ711は、第1UART715について初期設定を行う(S541)。具体的にいうと、専用コントローラ711は、設定レジスタ712に予め記憶されている通信仕様等に基づく設定データを参照し、第1UART715のコントロールレジスタにボーレート(送受信に係る通信速度)、送受信時のデータ長、パリティ、ストップビット等をセットする。本実施形態においては、例えば、サブCPU701との間の通信速度が115200bps、データ長が8ビット、パリティが偶数パリティ、ストップビットが1ビットとしてセットされる。
次に、専用コントローラ711は、第2UART716について初期設定を行う(S542)。具体的にいうと、専用コントローラ711は、設定レジスタ712に予め記憶されている通信仕様等に基づく設定データを参照し、第2UART716のコントロールレジスタにボーレート(受信に係る通信速度)、送受信時のデータ長、パリティ、ストップビット等をセットする。本実施形態においては、例えば、主基板通信LSI610との間の通信速度が115200bps、データ長が8ビット、パリティが偶数パリティ、ストップビットが1ビットとしてセットされる。
次に、専用コントローラ711は、受信に係る通信速度のボーレート設定値から第2UART716の受信時におけるタイムアウト値を算出し(S543)、この初期設定処理を終了する。具体的にいうと、専用コントローラ711は、例えばボーレート設定値が115200bpsで少なくとも48ビット分のデータを受信する場合、1/ボーレート×48によりタイムアウト値として約0.4msecを得る。こうして得られたタイムアウト値は、タイムアウトタイマにセットされる。
[受信処理(副基板通信LSI)]
図52は、副基板通信LSIによる受信処理を示す。図52に示すように、副基板通信LSI710の専用コントローラ711は、主基板通信LSI610からの受信データの取得に際してタイムアウトタイマを用いてタイムアウトが発生したか否かを判別する(S561)。
S561において、タイムアウトが発生していないと判別した場合、専用コントローラ711は、この受信処理を終了する。一方、タイムアウトが発生したと判別した場合、専用コントローラ711は、受信データは16Byteか否かを判別する(S562)。
S562において、受信データは16Byteでない、例えば16Byte未満であると判別した場合、専用コントローラ711は、副基板通信LSI受信ステータスにエラー情報としてタイムアウトをセットする(S563)。エラー情報としてのタイムアウトは、図39に示すように、副基板通信LSI受信ステータスにおけるビットナンバーB7のビットを「1」としてセットされる。一方、受信データは16Byteであると判別した場合、専用コントローラ711は、次のS564に移る。
次に、専用コントローラ711は、受信データのうちのバイトナンバーD0〜D13のデータについて巡回冗長検査によりCRCを算出する(S564)。
次に、専用コントローラ711は、算出したCRCは正常か否かを判別する(S565)。CRCは正常と判別した場合、専用コントローラ711は、後のS567に移る。一方、CRCは異常と判別した場合、専用コントローラ711は、副基板通信LSIパケット種別に論理エラー種類としてCRCエラーをセットする(S566)。副基板通信LSIパケット種別は、図38に示すように、副基板通信LSI710からサブCPU701へと送信されるシリアルデータのバイトナンバーD13のブロックにセットされる。
次に、専用コントローラ711は、送信要求フラグをセットし(S567)、この受信処理を終了する。送信要求フラグは、キャッシュメモリ713の所定領域に確保され、副基板通信LSI710が送信すべきデータの有無を識別するために用いられる。
[送信処理(副基板通信LSI)]
図53は、副基板通信LSIによる送信処理を示す。図53に示すように、副基板通信LSI710の専用コントローラ711は、送信要求フラグに基づいてデータの送信要求があるか否か、すなわちメインCPU601から主基板通信LSI610を通じて送られてきたコマンド等を含む受信データがあるか否かを判別する(S581)。
S581において、データの送信要求があると判別した場合、専用コントローラ711は、主基板通信LSI610からの受信データ(外部通信データ:データ固定長16Byte)のうちのバイトナンバーD0〜D11のブロックを送信バッファにセットする(S582)。続いて、専用コントローラ711は、副基板通信LSI受信ステータスにエラーカウントをセットし(S583)、当該副基板通信LSI受信ステータスをバイトナンバーD12のブロックとして送信バッファにセットする(S584)。
また、専用コントローラ711は、副基板通信LSIパケット種別をバイトナンバーD13のブロックとして送信バッファにセットする(S585)。さらに、専用コントローラ711は、送信バッファのバイトナンバーD0〜D13のブロックについて巡回冗長検査によりCRCを計算し、その計算結果としてのCRCデータを送信バッファにセットする(S586)。これにより、送信バッファには、バイトナンバーD0〜D15の16Byteからなる内部通信データ(図38参照)がシリアル形式の送信データとして一時記憶される。
こうして送信バッファに送信すべきデータ(D0〜D15)が一時記憶(待機)されると、専用コントローラ711は、最初に第1UART715の送信ポートから通信伝文の開始を示す「STX」に対応するデータを送信する(S587)。
そして、専用コントローラ711は、16Byte分のデータ(D0〜D15)を送信したか否かを判別する(S588)。16Byte分のデータ(D0〜D15)を送信したと判別した場合、専用コントローラ711は、受信データ、受信カウンタ、及び送信要求フラグをクリアし(S593)、この送信処理を終了する。
一方、S588において、16Byte分のデータ(D0〜D15)を送信していないと判別した場合、専用コントローラ711は、現時点のタイミングで送信バッファから出力される送信データは「STX」又は「DLE」と同じ値に該当するか否かを判別する(S589)。
S589において、送信データは「STX」又は「DLE」と同じ値に該当すると判別した場合、専用コントローラ711は、第1UART715の送信ポートから制御データを含むブロックであることを示す「DLE」に対応するデータを送信し(S590)、該当する送信データについてエスケープ処理を行う(S591)。エスケープ処理では、該当するブロックとその次順以降のブロックのデータ送信順がそれぞれ1つずつ繰り下げられる。一方、送信データは「STX」又は「DLE」と同じ値に該当しないと判別した場合、専用コントローラ711は、「DLE」の送信やエスケープ処理を行うことなく、次のS592に移る。
次に、専用コントローラ711は、第1UART715の送信ポートから送信バッファにセットとされた送信データ(D0〜D15)を送信し(S592)、その後再びS588に戻る。これにより、送信バッファからは、バイトナンバーD0〜D15を含む内部通信データ(図38参照)がシリアル形式の送信データとして1Byteずつ順次出力される。このようにして副基板通信LSI710からサブCPU701へと送信されるデータは、副基板通信LSI710においてマンチェスター復調及びAES復号化されたものであって、さらに副基板通信LSI710においてバイトナンバーD0〜D15のブロックに「STX」や「DLE」を含む可変長17〜33Byteのデータとされ、通信仕様に基づいて通信速度115200bpsで伝送される。
以上説明したように、本実施形態のパチスロ1によれば、次のような効果が得られる。
本実施形態においては、メインCPU601から主基板通信LSI610へと固定データ長8Byteとして各種のコマンドが送信され、主基板通信LSI610から副基板通信LSI710へとより大きい固定データ長16Byteとしてコマンドを含む外部通信データが送信され、さらに副基板通信LSI710からサブCPU701へと17〜33Byteの可変データ長としてコマンドを含む内部通信データが送信される。
これにより、サブCPU701は、コマンドだけでなくその他の通信エラーに関する情報を含む内部通信データを受信することができる。すなわち、サブCPU701においては、メインCPU601からコマンドのみを受信する場合よりも受信データサイズが大きい内部通信データを受信するので、受信待ち時間を無駄に発生させないようにすることができ、ひいてはメインCPU601からサブCPU701への通信上におけるボトルネックを解消することができる。
また、サブCPU701が受信した内部通信データには、コマンド以外の情報として通信エラーに係る各種の情報が含まれるので、サブCPU701は、通信エラーの情報に基づいてそれに関連する処理を実行することができ、効率よく作動させることができる。
また、主基板通信LSI610及び副基板通信LSI710は、コマンド及び通信データを例えば1Byteの伝送単位ごとに小刻みに検出しながら受信することができる一方、サブCPU701は、そのような伝送単位に制限されることなく、より大きい例えば16Byteというある程度一括したデータ量ごとに通信データをまとめて検出しながら受信することができる。これにより、主基板通信LSI610及び副基板通信LSI710は、周期的に効率よくデータを送受信することができ、サブCPU701は、ある程度まとまったデータ量として通信データを効率よく受信することができる。
また、本実施形態においては、メインCPU601から主基板通信LSI610へと通信速度19200bps(第1の通信速度)でコマンドが送信され、主基板通信LSI610から副基板通信LSI710へとより速い通信速度115200bps(第2の通信速度)でコマンドを含む通信データが送信される。さらに、副基板通信LSI710からサブCPU701へと通信速度115200bps(第2の通信速度)でコマンドを含む通信データが送信される。
このとき、主基板通信LSI610では、コマンドを所定の伝送単位となる1Byteごとに検出するための受信待ち時間(第1の受信待ち時間)が第1の通信速度に基づいて2.5msecと算出され、算出された第1の受信待ち時間(2.5msec)に基づいて所定の伝送単位ごとにコマンドが検出されることで受信される。一方、副基板通信LSI710では、コマンドを含む通信データを所定の伝送単位となる1Byteごとに検出するための受信待ち時間(第2の受信待ち時間)が第2の通信速度に基づいて約0.4msecと算出され、算出された第2の受信待ち時間(約0.4msec)に基づいて所定の伝送単位ごとに通信データが検出されることで受信される。
すなわち、相対的に低スペックのメインCPU601に応じた通信仕様に基づいて主基板通信LSI610がコマンドを受信する第1の通信速度と、相対的に高スペックのサブCPU701に応じた通信仕様に基づいて副基板通信LSI710が通信データを受信する第2の通信速度とが互いに異なる速度で設定されていても、それぞれの通信速度に適した第1の受信待ち時間(2.5msec)及び第2の受信待ち時間(約0.4msec)を使用することができる。
これにより、通信データを最後に受信するサブCPU701においては、通信データを受信する際に受信待ち時間に係る無駄時間をできる限り生じさせないようにし、通信上のボトルネックを解消することができ、サブCPU701を効率よく作動させることができる。
また、サブCPU701に通信データが達する手前の副基板通信LSI710おける第2の受信待ち時間(約0.4msec)が主基板通信LSI610における第1の受信待ち時間(2.5msec)よりも短いので、その分、サブCPU701における通信データの受信処理を軽減することができる。
また、本実施形態によれば、相対的に低スペックで通信速度が低速とされるメインCPU601と、相対的に高スペックで通信速度が高速とされるサブCPU701とを備えたパチスロ1に最適な通信システムを実現することができる。
また、本実施形態においては、メインCPU601から主基板通信LSI610へとコマンドが送信され、主基板通信LSI610から副基板通信LSI710へとコマンドを含む通信データが送信され、さらに副基板通信LSI710からサブCPU701へとコマンドを含む通信データが送信される。
その際、主基板通信LSI610は、コマンドの受信に際してサイズ不足や物理層エラー(第1の通信エラー)を検出すると、それらを示すデータサイズや主基板通信LSI受信ステータス(第1エラー情報)をコマンドに該当するパケットデータと共に通信データに含めて送信する。また、副基板通信LSI710は、主基板通信LSI610からの通信データの受信に際して物理層エラーやサイズ不足を含む論理エラー(第2の通信エラー)を検出すると、それらを示す副基板通信LSI受信ステータスや副基板通信LSIパケット種別(第2エラー情報)をコマンド(パケットデータ)及び上記第1エラー情報と共に通信データに含めて送信する。
さらに、サブCPU701は、通信データの受信に際してCRCエラーやタイムアウト発生に係るエラー(第3の通信エラー)を検出すると、それらを示すエラー情報として‘COM3 ERR1’、‘COM3 ERR2’(第3エラー情報)を登録する。また、サブCPU701は、副基板通信LSI710から受信した通信データに基づき、主基板通信LSI610に係るエラー情報として‘COM1 ERR1’、‘COM1 ERR2’(第1エラー情報)を登録し、副基板通信LSI710に係るエラー情報として‘COM2 ERR1’、‘COM2 ERR2’、‘COM2 ERR3’(第2エラー情報)を登録する。
これにより、サブCPU701は、通信エラーとして区別して登録された‘COM1 ERR1’、‘COM1 ERR2’、‘COM2 ERR1’、‘COM2 ERR2’、‘COM2 ERR3’、COM3 ERR1’、‘COM3 ERR2’に基づいて通信エラーの原因や発生箇所を詳細に特定・解析することができる。
また、副基板通信LSI710は、コマンド等をバイナリデータとして通信データに含ませるとともに、当該バイナリデータの送信開始を示すSTXや、そのバイナリデータ内にある制御データを示すDLEといった制御キャラクタも通信データに含ませた上で当該通信データをサブCPU701へと送信する。すなわち、副基板通信LSI710とサブCPU701との間では、コード変換が必要なテキストデータに比べてデータサイズが比較的小さいバイナリデータによりコマンドが送受信される。
これにより、サブCPU701においては、比較的小さいサイズのバイナリデータを、STXやDLEという制御キャラクタに基づいて検出しつつ、所定のデータ量を取得したか否かを判別することによって受信することができるので、受信待ち時間をできる限り生じさせないようにすることができ、副基板通信LSI710とサブCPU701との間において効率よくデータ通信を行うことができる。なお、本実施形態においては、副基板通信LSI710とサブCPU701との間でバイナリデータと共に制御キャラクタを通信データに含めて送信しているが、例えば主基板通信LSI610と副基板通信LSI710との間でバイナリデータと共に制御キャラクタを通信データに含めて送信するようにしてもよい。
また、本実施形態においては、メインCPU601から主基板通信LSI610へとコマンドが送信され、主基板通信LSI610から副基板通信LSI710へとコマンドを含む通信データが、AES暗号方式により暗号化され、さらにマンチェスター変調方式により変調された上で送信される。副基板通信LSI710では、主基板通信LSI610から受信した通信データが、マンチェスター変調方式により復調され、さらに復調された通信データがAES暗号方式により復号化された後、サブCPU701へと送信される。これにより、本実施形態では、マンチェスター変調方式により通信データを正しく安定的に送受信することができる。
また、マンチェスター変調方式でやり取りされる通信データには、クロックレートを埋め込むことができるので、主基板6Aと副基板7Aとの間にクロック信号を生成するためのデバイス等を別途設ける必要がなくなることから、通信に係る伝送路を光ファイバーケーブルとしても容易に簡素化することができる。
また、主基板6Aと副基板7Aとの間でクロック信号を光学的に生成せずとも光ファイバーケーブルを介して通信データをそのまま送受信することができ、デジタルデータの変調回路として安価なマンチェスター回路を用いることからも、安価なデバイス及び伝送路によって主基板6Aと副基板7Aとを接続することができる。
本発明の他の実施形態としては、図54〜60に示すような構成でもよい。なお、以下の説明において、先述した実施形態によるものと同一又は類似の構成要素については、同一符号を付してその説明を省略する。
図54は、本発明の他の実施形態に係る遊技機の主基板と副基板との接続形態を示す。図54に示すように、本実施形態においては、第3マンチェスター回路620,720は、第1SPI617,717と組み合わせて用いられ、この第1SPI617,717を通じてデータを送受信し得るように構成されている。また、本実施形態では、第3マンチェスター回路620と第3マンチェスター回路720とは、互いに電気的に通信用ケーブルを介して接続されている。
本実施形態の主基板6Aにおいては、メインCPU601からのコマンドを含むデータ(パケットデータ)が、UART601Aから第1UART615に供給され、この第1UART615で物理層エラーの検出等が行われた後、AES614で暗号化され、さらにマスターとなる第1SPI617を通じて第3マンチェスター回路620に供給され、この第3マンチェスター回路620で変調されるように構成されている。このようにして変調されたデータは、コマンドを含むシリアルデータとされ、通信用ケーブルを通じて副基板7Aへと送信される。
副基板7Aにおいては、主基板6Aから送信されたコマンドを含むシリアルデータが、通信用ケーブルを通じて第3マンチェスター回路720に供給され、この第3マンチェスター回路720で復調された後、スレーブとなる第1SPI717を通じてAES714に供給され、さらにAES714において復号化された後、第1UART715を通じてUART701Aに供給されることにより、サブCPU701がメインCPU601からのコマンドを受信し得るようになっている。
図55は、本発明の他の実施形態に係る遊技機の主基板と副基板との接続形態を示す。図56は、図55に示す接続形態でのデータの流れを示す説明図である。本実施形態におおいては、図55に示すように、マンチェスター変調及び復調が行われないように構成されている。具体的にいうと、第2UART616,716は、マンチェスター回路等と組み合わされて使用されず、単独でデータを送受信し得るように構成されている。
本実施形態の主基板6Aにおいては、メインCPU601からのコマンドを含むデータ(パケットデータ)が、UART601Aから第1UART615に供給され、この第1UART615で物理層エラーの検出等が行われた後、AES614で暗号化され、コマンドを含むシリアルデータとして第2UART616を通じて副基板7Aへと送信される。
副基板7Aにおいては、主基板6Aから送信されたコマンドを含むシリアルデータが、第6UART716を通じてAES714に供給され、さらにAES714において復号化された後、第1UART715を通じてUART701Aに供給されることにより、サブCPU701がメインCPU601からのコマンドを受信し得るようになっている。
また、図56に示すように、メインCPU601から主基板通信LSI610へと送信されるデータは、8Byteの平文からなるパケットデータであり、その際の通信速度(ボーレート)は、19200bpsとされる。主基板通信LSI610から副基板通信LSI710へと送信されるデータは、暗号化された16Byteのデータであり、その際の通信速度は、115200bpsとされる。副基板通信LSI710からサブCPU701へと送信されるデータは、AES復号化された16Byteの平文データであり、その際の通信速度は、115200bpsとされる。
図57は、本発明の他の実施形態に係る遊技機の主基板と副基板との接続形態を示す。図58は、図57に示す接続形態でのデータの流れを示す説明図である。本実施形態におおいては、図57に示すように、AES暗号化及び復号化が行われないように構成されている。具体的にいうと、主基板通信LSI610及び副基板通信LSI710においては、主として第4マンチェスター回路621,721が使用され、この第4マンチェスター回路621,721が単独でデータを送受信し得るように構成されている。
本実施形態の主基板6Aにおいては、メインCPU601からのコマンドを含むデータ(パケットデータ)が、UART601Aから第4マンチェスター回路621に供給され、この第4マンチェスター回路621から直接副基板7Aへと送信される。
副基板7Aにおいては、主基板6Aから送信されたコマンドを含むデータが、第4マンチェスター回路721を通じて直接取り込まれ、この第4マンチェスター回路721からUART701Aへと供給されることにより、サブCPU701がメインCPU601からのコマンドを受信し得るようになっている。
また、図58に示すように、メインCPU601から主基板通信LSI610へと送信されるデータは、8Byteの平文からなるパケットデータであり、その際の通信速度(ボーレート)は、19200bpsとされる。主基板通信LSI610から副基板通信LSI710へと送信されるデータは、マンチェスター変調された8Byteの平文データであり、その際の通信速度は、19200bpsとされる。副基板通信LSI710からサブCPU701へと送信されるデータは、マンチェスター復調された8Byteの平文データであり、その際の通信速度は、19200bpsとされる。
図57及び図58に示す実施形態においては、メインCPU601から主基板通信LSI610へとコマンドが送信され、主基板通信LSI610から副基板通信LSI710へとコマンドを含む通信データがマンチェスター変調方式により変調された上で直接送信される。副基板通信LSI710では、主基板通信LSI610から受信した通信データがマンチェスター変調方式により復調された後、サブCPU701へとそのまま送信される。このような構成では、マンチェスター変調方式により速やかにデータを変調及び復調しながら通信データを正しく安定的に送受信することができる。
図59は、本発明の他の実施形態に係る遊技機(パチンコ)の外観を示す斜視図である。図60は、図59に示す遊技機の主制御回路及び副制御回路の構成を示すブロック図である。本発明は、図59に示すようなパチンコ1’にも適用可能である。図60に示すように、パチンコ1’は、主制御回路60に接続される特有の構成要素として、特別図柄表示装置80、普通図柄表示装置81、特別図柄保留表示装置82、普通図柄保留表示装置83、カウントセンサ84、一般入賞球センサ85、通過球センサ86、始動入賞球センサ87、普通電動役物ソレノイド88、大入賞口ソレノイド89、バックアップクリアスイッチ90、払出・発射制御回路350、払出装置34A、発射装置35B、カードユニット34C、貸し出し用操作部34D等を有する。このようなパチンコ1’においても、液晶表示装置10やスピーカ48,49、及びランプ20等が副制御回路70に接続されている。そして、主制御回路60及び副制御回路70は、主基板通信LSI610及び副基板通信LSI710を備えており、これらの主基板通信LSI610及び副基板通信LSI710を介して互いに接続されている。
なお、本発明は、上述した各実施形態に限定されるものではない。
各実施形態において例示した通信速度やタイムアウト値としての受信待ち時間、伝送単位等に係る数値は、あくまでも一例として挙げたものであり、これらの数値は、CPUのスペックや通信LSIの仕様に応じて適宜変更可能である。
通信手段は、通信LSIに限らず、集積回路の規模に応じて例えばICにより構成してもよい。
通信手段は、主制御回路と副制御回路との間の通信に限らず、例えばホールコンピュータと副制御回路との間で通信を行うものとして設けてもよい。