以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機を正面からみた正面図、図2は遊技盤の前面を示す正面図である。なお、以下の実施の形態では、パチンコ遊技機を例に説明を行うが、本発明による遊技機はパチンコ遊技機に限られず、スロット機などの他の遊技機に適用することもできる。
パチンコ遊技機1は、縦長の方形状に形成された外枠(図示せず)と、外枠の内側に開閉可能に取り付けられた遊技枠とで構成される。また、パチンコ遊技機1は、遊技枠に開閉可能に設けられている額縁状に形成されたガラス扉枠2を有する。遊技枠は、外枠に対して開閉自在に設置される前面枠(図示せず)を備え、前面枠には機構部品等が取り付けられる機構板が取り付けられる。また、前面枠にも、種々の部品が取り付けられる。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿(上皿)3がある。打球供給皿3の下部には、打球供給皿3に収容しきれない遊技球を貯留する余剰球受皿4と遊技球を発射する打球操作ハンドル(操作ノブ)5が設けられている。ガラス扉枠2の背面には、遊技盤6が着脱可能に取り付けられている。なお、遊技盤6は、それを構成する板状体と、その板状体に取り付けられた種々の部品とを含む構造体である。また、遊技盤6の前面には遊技領域7が形成されている。
遊技領域7の中央付近には、それぞれが演出用の飾り図柄(演出図柄)を可変表示する複数の可変表示部を含む演出表示装置(飾り図柄表示装置)9が設けられている。演出表示装置9には、例えば「左」、「中」、「右」の3つの可変表示部(図柄表示エリア)がある。演出表示装置9は、特別図柄表示器8による特別図柄の可変表示期間中に、装飾用(演出用)の図柄としての演出図柄の可変表示を行う。演出図柄の可変表示を行う演出表示装置9は、演出制御基板に搭載されている演出制御用マイクロコンピュータによって制御される。
演出表示装置9の下部には、始動入賞口14に入った有効入賞球数すなわち保留記憶(始動記憶または始動入賞記憶ともいう。)数を表示する4つの特別図柄保留記憶表示器18が設けられている。特別図柄保留記憶表示器18は、保留記憶数を入賞順に4個まで表示する。特別図柄保留記憶表示器18は、始動入賞口14に始動入賞があるごとに、点灯状態のLEDの数を1増やす。そして、特別図柄保留記憶表示器18は、特別図柄表示器8で可変表示が開始されるごとに、点灯状態のLEDの数を1減らす(すなわち1つのLEDを消灯する)。具体的には、特別図柄保留記憶表示器18は、特別図柄表示器8で可変表示が開始されるごとに、点灯状態をシフトする。なお、この例では、始動入賞口14への入賞による始動記憶数に上限数(4個まで)が設けられているが、上限数を4個以上にしてもよい。
演出表示装置9の上部には、識別情報としての特別図柄を可変表示する特別図柄表示器(特別図柄表示装置)8が設けられている。この実施の形態では、特別図柄表示器8は、例えば0〜9の数字を可変表示可能な簡易で小型の表示器(例えば7セグメントLED)で実現されている。特別図柄表示器8は、遊技者に特定の停止図柄を把握しづらくさせるために、0〜99など、より多種類の数字を可変表示するように構成されていてもよい。また、演出表示装置9は、特別図柄表示器8による特別図柄の可変表示期間中に、装飾用(演出用)の図柄としての演出図柄の可変表示を行う。
演出表示装置9の下方には、始動入賞口14を形成する可変入賞球装置15が設けられている。可変入賞球装置15は、羽根を開閉可能に構成され、羽根が開放しているときに遊技球が入賞し易い状態(開状態)となり、羽根が開放していないとき(閉じているとき)に遊技球が入賞し難い状態(閉状態)となる。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。なお、この実施の形態では、後述するように、始動口スイッチ14aによって遊技球が検出されたことにもとづいて、特別図柄の変動表示が開始され、賞球払出が実行される。また、可変入賞球装置15は、ソレノイド16によって開状態にされる。なお、可変入賞球装置15の真上に第1始動入賞口を設け、可変入賞球装置15を第2始動入賞口としてもよい。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態に制御される開閉板を用いた特別可変入賞球装置20が設けられている。特別可変入賞球装置20は大入賞口を開閉する手段である。特別可変入賞球装置20に入賞し遊技盤6の背面に導かれた入賞球は、カウントスイッチ23で検出される。
遊技球がゲート32を通過しゲートスイッチ32aで検出されると、普通図柄表示器10の表示の可変表示が開始される。この実施の形態では、左右のランプ(点灯時に図柄が視認可能になる)が交互に点灯することによって可変表示が行われ、例えば、可変表示の終了時に左側のランプが点灯すれば当たりになる。そして、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になる。普通図柄表示器10の近傍には、ゲート32を通過した入賞球数を表示する4つのLEDによる表示部を有する普通図柄始動記憶表示器41が設けられている。ゲート32への遊技球の通過があるごとに、普通図柄始動記憶表示器41は点灯するLEDを1増やす。そして、普通図柄表示器10の可変表示が開始されるごとに、点灯するLEDを1減らす。
遊技盤6には、複数の入賞口29,30が設けられ、遊技球の入賞口29,30への入賞は、それぞれ入賞口スイッチ29a,30aによって検出される。各入賞口29,30は、遊技媒体を受け入れて入賞を許容する領域として遊技盤6に設けられる入賞領域を構成している。なお、始動入賞口14や大入賞口も、遊技媒体を受け入れて入賞を許容する入賞領域を構成する。なお、各入賞口29,30に入賞した遊技球を入賞スイッチで検出する構成に代えて、遊技球が所定領域(例えばゲート)を通過したことを検出スイッチで検出する構成としてもよい。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった遊技球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。さらに、遊技領域7における各構造物(大入賞口等)の周囲には装飾LEDが設置されている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cおよび装飾用LEDは、遊技機に設けられている装飾発光体の一例である。なお、この実施の形態では、遊技機に設けられている発光体をランプやLEDを用いて構成する場合を示しているが、この実施の形態で示した態様にかぎらず、例えば、遊技機に設けられている発光体を全てLEDを用いて構成するようにしてもよい。
なお、図1および図2では、図示を省略しているが、左枠ランプ28bの近傍に、賞球払出中に点灯する賞球ランプが設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れランプが設けられている。なお、賞球ランプおよび球切れランプは、賞球の払出中である場合や球切れが検出された場合に、演出制御基板に搭載された演出制御用マイクロコンピュータによって点灯制御される。さらに、プリペイドカードが挿入されることによって球貸しを可能にするプリペイドカードユニット(以下、「カードユニット」という。)50が、パチンコ遊技機1に隣接して設置されている。
カードユニット50には、例えば、使用可能状態であるか否かを示す使用可表示ランプ、カードユニットがいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器、カードユニット内にカードが投入されていることを示すカード投入表示ランプ、記録媒体としてのカードが挿入されるカード挿入口、およびカード挿入口の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニットを解放するためのカードユニット錠が設けられている。
遊技者の操作により打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。遊技球が始動入賞口14に入り始動口スイッチ14aで検出されると、図柄の可変表示を開始できる状態であれば、特別図柄表示器8において特別図柄が可変表示(変動)を始める。図柄の可変表示を開始できる状態でなければ、保留記憶数を1増やす。
特別図柄表示器8における特別図柄の可変表示は、一定時間が経過したときに停止する。停止時の特別図柄(停止図柄)が大当り図柄(特定表示結果)であると、大当り遊技状態に移行する。すなわち、特別可変入賞球装置20が、一定時間経過するまで、または、所定個数(例えば10個)の遊技球が入賞するまで開放する。そして、特別可変入賞球装置20の開放は、決定されたラウンド数の最後のラウンドまで(例えば、15ラウンドまで)許容される。
停止時の特別図柄表示器8における特別図柄が確率変動を伴う大当り図柄(確変図柄)である場合には、次に大当りになる確率が高くなる。すなわち、確変状態という遊技者にとってさらに有利な状態になる。
遊技球がゲート32を通過すると、普通図柄表示器10において普通図柄が可変表示される状態になる。また、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定時間だけ開状態になる。
また、図2に示すように、遊技盤の上方には、扉体(この例では、ガラス扉枠2)の状態(遊技領域7を覆う閉鎖状態または遊技領域7を外部から接触可能な状態にする開放状態)を検出(具体的には、前面に遊技領域7が形成されている遊技盤6が取り付けられた前面枠に対してガラス扉枠2が開放されたか否かを検出)するための扉開放センサ155Aが取り付けられている。また、遊技盤の上方には、機構板の状態(遊技機内部に外部から接触不能な閉鎖状態または遊技機内部に外部から接触可能な開放状態)を検出(具体的には、前面に遊技領域7が形成されている遊技盤6が取り付けられた前面枠に対して機構板が開放されたか否かを検出)するための機構板開放センサ155Bが取り付けられている。なお、扉体(この例では、ガラス扉枠2)の状態と機構板の状態とを共通の開放センサを用いて検出するように構成してもよい。
次に、パチンコ遊技機1の裏面の構造について図3を参照して説明する。図3は、遊技機を裏面から見た背面図である。図3に示すように、パチンコ遊技機1裏面側では、演出表示装置9を制御する演出制御用マイクロコンピュータ100が搭載された演出制御基板80を含む変動表示制御ユニット、遊技制御用マイクロコンピュータ等が搭載された遊技制御基板(主基板)31、音声出力基板70、ランプドライバ基板35、および球払出制御を行う払出制御用マイクロコンピュータ等が搭載された払出制御基板37等の各種基板が設置されている。なお、遊技制御基板31は基板収納ケース200に収納されている。
さらに、パチンコ遊技機1裏面側には、DC30V、DC21V、DC12VおよびDC5V等の各種電源電圧を作成する電源回路が搭載された電源基板910やタッチセンサ基板91が設けられている。電源基板910には、パチンコ遊技機1における遊技制御基板31および各電気部品制御基板(演出制御基板80および払出制御基板37)やパチンコ遊技機1に設けられている各電気部品(電力が供給されることによって動作する部品)への電力供給を実行あるいは遮断するための電力供給許可手段としての電源スイッチ、遊技制御基板31の遊技制御用マイクロコンピュータ560のRAM55をクリアするためのクリアスイッチが設けられている。さらに、電源スイッチの内側(基板内部側)には、交換可能なヒューズが設けられている。
なお、この実施の形態では、主基板31は遊技盤側に設けられ、払出制御基板37は遊技枠側に設けられている。このような構成であっても、後述するように、主基板31と払出制御基板37との間の通信をシリアル通信で行うことによって、遊技盤を交換する際の配線の取り回しを容易にしている。
なお、各制御基板には、制御用マイクロコンピュータを含む制御手段が搭載されている。制御手段は、遊技制御手段等からのコマンドとしての指令信号(制御信号)に従って遊技機に設けられている電気部品(遊技用装置:球払出装置97、演出表示装置9、ランプやLEDなどの発光体、スピーカ27等)を制御する。以下、主基板31を制御基板に含めて説明を行うことがある。その場合には、制御基板に搭載される制御手段は、遊技制御手段と、遊技制御手段等からの指令信号に従って遊技機に設けられている電気部品を制御する手段とのそれぞれを指す。また、主基板31以外のマイクロコンピュータが搭載された基板をサブ基板ということがある。なお、球払出装置97は、遊技球を誘導する通路とステッピングモータ等により駆動されるスプロケット等によって誘導された遊技球を上皿や下皿に払い出すための装置であって、払い出された賞球や貸し球をカウントする払出個数カウントスイッチ等もユニットの一部として構成されている。なお、この実施の形態では、払出検出手段は、払出個数カウントスイッチ301によって実現され、球払出装置97から実際に賞球や貸し球が払い出されたことを検出する機能を備える。この場合、払出個数カウントスイッチ301は、賞球や貸し球の払い出しを1球検出するごとに検出信号を出力する。
パチンコ遊技機1裏面において、上方には、各種情報をパチンコ遊技機1の外部に出力するための各端子を備えたターミナル基板160が設置されている。ターミナル基板160には、例えば、大当り遊技状態の発生を示す大当り情報等の情報出力信号(図60に示す始動口信号、図柄確定回数1信号、大当り1信号、大当り2信号、大当り3信号、時短信号、セキュリティ信号、賞球信号1、遊技機エラー状態信号)を外部出力するための情報出力端子が設けられている。
貯留タンク38に貯留された遊技球は誘導レール(図示せず)を通り、カーブ樋を経て払出ケース40Aで覆われた球払出装置97に至る。球払出装置97の上方には、遊技媒体切れ検出手段としての球切れスイッチ187が設けられている。球切れスイッチ187が球切れを検出すると、球払出装置97の払出動作が停止する。球切れスイッチ187は遊技球通路内の遊技球の有無を検出するスイッチであるが、貯留タンク38内の補給球の不足を検出する球切れ検出スイッチ167も誘導レールにおける上流部分(貯留タンク38に近接する部分)に設けられている。球切れ検出スイッチ167が遊技球の不足を検知すると、遊技機設置島に設けられている補給機構からパチンコ遊技機1に対して遊技球の補給が行なわれる。
入賞にもとづく景品としての遊技球や球貸し要求にもとづく遊技球が多数払出されて打球供給皿3が満杯になると、遊技球は、余剰球誘導通路を経て余剰球受皿4に導かれる。さらに遊技球が払出されると、感知レバー(図示せず)が貯留状態検出手段としての満タンスイッチを押圧して、貯留状態検出手段としての満タンスイッチがオンする。その状態では、球払出装置内の払出モータの回転が停止して球払出装置の動作が停止するとともに打球発射装置の駆動も停止する。
図4は、主基板(遊技制御基板)31における回路構成の一例を示すブロック図である。なお、図4には、払出制御基板37および演出制御基板80等も示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する遊技制御用マイクロコンピュータ(遊技制御手段に相当)560、制御用クロック生成回路111、および乱数用クロック生成回路112が搭載されている。遊技制御用マイクロコンピュータ560は、ゲーム制御(遊技進行制御)用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段としてのRAM55、プログラムに従って制御動作を行うCPU56およびI/Oポート部57を含む。この実施の形態では、ROM54およびRAM55は遊技制御用マイクロコンピュータ560に内蔵されている。すなわち、遊技制御用マイクロコンピュータ560は、1チップマイクロコンピュータである。1チップマイクロコンピュータには、少なくともRAM55が内蔵されていればよく、ROM54は外付けであっても内蔵されていてもよい。また、I/Oポート部57は、外付けであってもよい。遊技制御用マイクロコンピュータ560には、さらに、ハードウェア乱数(ハードウェア回路が発生する乱数)を発生する乱数回路509が内蔵されている。
ここで、制御用クロック生成回路111は、遊技制御用マイクロコンピュータ560の外部にて、所定周波数の発振信号となる制御用クロックCCLKを生成する。制御用クロック生成回路111により生成された制御用クロックCCLKは、例えば、後述する図9に示すような遊技制御用マイクロコンピュータ560の制御用外部クロック端子EXCを介してクロック回路502に供給される。乱数用クロック生成回路112は、遊技制御用マイクロコンピュータ560の外部にて、制御用クロックCCLKの発振周波数とは異なる所定周波数の発振信号となる乱数用クロックRCLKを生成する。乱数用クロック生成回路112により生成された乱数用クロックRCLKは、例えば、後述する図9に示すような遊技制御用マイクロコンピュータ560の乱数用外部クロック端子ERCを介して乱数回路509に供給される。一例として、乱数用クロック生成回路112により生成される乱数用クロックRCLKの発振周波数は、制御用クロック生成回路111により生成される制御用クロックCCLKの発振周波数以下となるようにすればよい。あるいは、乱数用クロック生成回路112により生成される乱数用クロックRCLKの発振周波数は、制御用クロック生成回路111により生成される制御用クロックCCLKの発振周波数よりも高周波となるようにしてもよい。
なお、遊技制御用マイクロコンピュータ560においてCPU56がROM54に格納されているプログラムに従って制御を実行するので、以下、遊技制御用マイクロコンピュータ560(またはCPU56)が実行する(または、処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているマイクロコンピュータについても同様である。
また、遊技制御用マイクロコンピュータ560には、払出制御基板37(の払出制御用マイクロコンピュータ370)や演出制御基板80(の演出制御用マイクロコンピュータ)とシリアル通信で信号を入出力(送受信)するためのシリアル通信回路511が内蔵されている。なお、払出制御用マイクロコンピュータ370や演出制御用マイクロコンピュータにも、遊技制御用マイクロコンピュータ560とシリアル通信で信号を入出力するためのシリアル通信回路が内蔵されている(払出制御用マイクロコンピュータ370に内蔵されたシリアル通信回路については、図5参照)。遊技制御用マイクロコンピュータ560は、2チャネルのシリアル通信回路511を内蔵しており、払出制御用マイクロコンピュータ370とシリアル通信を行うことが可能であるとともに、演出制御用マイクロコンピュータ100ともシリアル通信を行うことが可能である。ただし、この実施の形態では、演出制御用マイクロコンピュータ100との間のシリアル通信に関しては、遊技制御用マイクロコンピュータ560から演出制御用マイクロコンピュータに対してのみ信号が出力され、演出制御用マイクロコンピュータから遊技制御用マイクロコンピュータ560に対しては信号が出力されない。なお、遊技制御用マイクロコンピュータ560と演出制御用マイクロコンピュータとの間の通信については、シリアル通信で行う構成に限られるわけではなく、パラレル通信で行うように構成してもよい。
また、RAM55は、その一部または全部が電源基板において作成されるバックアップ電源によってバックアップされている不揮発性記憶手段としてのバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間(バックアップ電源としてのコンデンサが放電してバックアップ電源が電力供給不能になるまで)は、RAM55の一部または全部の内容は保存される。特に、少なくとも、遊技状態すなわち遊技制御手段の制御状態に応じたデータ(特別図柄プロセスフラグや保留記憶数カウンタの値など)と未払出賞球数を示すデータ(具体的には、後述する賞球コマンド出力カウンタの値)は、バックアップRAMに保存される。遊技制御手段の制御状態に応じたデータとは、停電等が生じた後に復旧した場合に、そのデータにもとづいて、制御状態を停電等の発生前に復旧させるために必要なデータである。また、制御状態に応じたデータと未払出賞球数を示すデータとを遊技の進行状態を示すデータと定義する。なお、この実施の形態では、RAM55の全部が、電源バックアップされているとする。
遊技制御用マイクロコンピュータ560のリセット端子には、電源基板からのリセット信号が入力される。電源基板には、遊技制御用マイクロコンピュータ560等に供給されるリセット信号を生成するリセット回路が搭載されている。なお、リセット信号がハイレベルになると遊技制御用マイクロコンピュータ560等は動作可能状態になり、リセット信号がローレベルになると遊技制御用マイクロコンピュータ560等は動作停止状態になる。従って、リセット信号がハイレベルである期間は、遊技制御用マイクロコンピュータ560等の動作を許容する許容信号が出力されていることになり、リセット信号がローレベルである期間は、遊技制御用マイクロコンピュータ560等の動作を停止させる動作停止信号が出力されていることになる。なお、リセット回路をそれぞれの電気部品制御基板(電気部品を制御するためのマイクロコンピュータが搭載されている基板)に搭載してもよい。
さらに、遊技制御用マイクロコンピュータ560の入力ポートには、電源基板からの電源電圧が所定値以下に低下したことを示す電源断信号が入力される。すなわち、電源基板には、遊技機において使用される所定電圧(例えば、DC30VやDC5Vなど)の電圧値を監視して、電圧値があらかじめ定められた所定値にまで低下すると(電源電圧の低下を検出すると)、その旨を示す電源断信号を出力する電源監視回路が搭載されている。なお、電源監視回路を電源基板に搭載するのではなく、バックアップ電源によって電源バックアップされる基板(例えば、主基板31)に搭載するようにしてもよい。また、遊技制御用マイクロコンピュータ560の入力ポートには、RAMの内容をクリアすることを指示するためのクリアスイッチが操作されたことを示すクリア信号(図示せず)が入力される。
また、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23、および各入賞口スイッチ29a,30aからの検出信号を基本回路53に与える入力ドライバ回路58も主基板31に搭載され、可変入賞球装置15を開閉するソレノイド16、および特別可変入賞球装置を開閉するソレノイド21を基本回路53からの指令に従って駆動する出力回路59も主基板31に搭載され、電源投入時に遊技制御用マイクロコンピュータ560をリセットするためのシステムリセット回路(図示せず)や、大当り遊技状態の発生を示す大当り情報等の情報出力信号を、ターミナル基板160を介して、ホールコンピュータ等の外部装置に対して出力する情報出力回路64も主基板31に搭載されている。
この実施の形態では、演出制御基板80に搭載されている演出制御手段(演出制御用マイクロコンピュータで構成される。)が、中継基板77を介して遊技制御用マイクロコンピュータ560からの演出制御コマンドを受信し、演出図柄を可変表示する演出表示装置9の表示制御を行う。
図5は、払出制御基板37および球払出装置97などの払出に関連する構成要素を示すブロック図である。図5に示すように、払出制御基板37には、払出制御用CPU371を含む払出制御用マイクロコンピュータ370が搭載されている。この実施の形態では、払出制御用マイクロコンピュータ370は、1チップマイクロコンピュータであり、少なくともRAMが内蔵されている。払出制御用マイクロコンピュータ370、RAM(図示せず)、払出制御用プログラムを格納したROM(図示せず)およびI/Oポート等は、払出制御手段を構成する。すなわち、払出制御手段は、払出制御用CPU371、RAMおよびROMを有する払出制御用マイクロコンピュータ370と、I/Oポートとで実現される。また、I/Oポートは、払出制御用マイクロコンピュータ370に内蔵されていてもよい。なお、遊技制御用マイクロコンピュータ560と異なり、払出制御用マイクロコンピュータ370が内蔵するRAMは、バックアップ電源による電源バックアップを受けていない。そのため、遊技機に対する電力供給が停止してしまうと、払出制御用マイクロコンピュータ370が内蔵するRAMの記憶内容は失われることになる。
なお、払出制御用マイクロコンピュータ370は、所定の払出条件が成立したことにもとづいて遊技球を払い出す制御を行う。なお、所定の払出条件は、遊技領域に設けられた入賞領域(普通入賞口29,30、大入賞口、始動入賞口14)に遊技球が入賞したことや、貸し球要求がなされたことによって成立する。また、例えば、パロット機やスロットマシンなどの遊技機に適用する場合には、所定の払出条件は、遊技球やメダルの返却要求がなされたことによっても成立する。さらに、例えば、パロット機やスロットマシンなどの遊技機に適用する場合には、所定の払出条件は、図柄の停止図柄が所定の入賞図柄となったことによっても成立する。
球切れスイッチ187、満タンスイッチ48および払出個数カウントスイッチ301からの検出信号は、中継基板72を介して払出制御基板37のI/Oポート372fに入力される。なお、この実施の形態では、払出個数カウントスイッチ301からの検出信号は、払出制御用マイクロコンピュータ370に入力されたあと、I/Oポート372aおよび出力回路373Bを介して主基板31に出力される。
また、払出モータ位置センサ295からの検出信号は、中継基板72を介して払出制御基板37のI/Oポート372eに入力される。払出モータ位置センサ295は、払出モータ289の回転位置を検出するための発光素子(LED)と受光素子とによるセンサであり、遊技球が詰まったこと、すなわちいわゆる球噛みを検出するために用いられる。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、球切れスイッチ187からの検出信号が球切れ状態を示していたり、満タンスイッチ48からの検出信号が満タン状態を示していると、球払出処理を停止する。
さらに、満タンスイッチ48からの検出信号が満タン状態を示していると、払出制御用マイクロコンピュータ370は、打球発射装置からの球発射を停止させるために、発射基板90に対してローレベルの満タン信号を出力する。発射基板90のAND回路91が出力する発射モータ94への発射モータ信号は、発射基板90から発射モータ94に伝えられる。払出制御用マイクロコンピュータ370からの満タン信号は、発射基板90に搭載されたAND回路91の入力側の一方に入力され、駆動信号生成回路92からの駆動信号(発射モータ94を駆動するための信号であって、電源基板からの電源を供給する役割を果たす信号である。)は、AND回路91の入力側の他方に入力される。そして、AND回路91の発射モータ信号が発射モータ94に入力される。すなわち、払出制御用マイクロコンピュータ370が満タン信号を出力している間は、発射モータ94への発射モータ信号の出力が停止される。払出制御用マイクロコンピュータ370が満タン信号を出力している間であっても、発射モータ94への発射モータ信号の出力を停止せず、打球発射装置からの球発射を停止させないように構成してもよい。
払出制御用マイクロコンピュータ370には、遊技制御用マイクロコンピュータ560とシリアル通信で信号を入出力(送受信)するためのシリアル通信回路380が内蔵されている。この実施の形態では、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、シリアル通信回路511,380を介して、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の接続確認を行うために、一定の間隔(例えば1秒)で払出制御コマンド(接続確認コマンド、接続OKコマンド)をやり取り(送受信)している。例えば、遊技制御用マイクロコンピュータ560は、シリアル通信回路511を介して、一定の間隔で接続確認を行うための接続確認コマンドを送信し、払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560からの接続確認コマンドを受信した場合、その旨を通知する接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する。また、例えば、入賞が発生した場合には、遊技制御用マイクロコンピュータ560は、払い出すべき賞球個数を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定がなされた賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。そして、払出制御用マイクロコンピュータ370は、賞球個数を受け付けたことを示す賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する。さらに、払出制御用マイクロコンピュータ370は、賞球払出動作が終了すると、賞球終了を示す賞球終了コマンドを遊技制御用マイクロコンピュータ560に送信する。なお、払出制御用マイクロコンピュータ370は、賞球払出動作を終了するまでの間、一定の間隔で賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。また、所定のエラー(球貸し、満タン、球切れなどのエラー)が発生した場合には、エラーの内容を示すデータを、接続OKコマンドや賞球準備中コマンドの下位4ビットを異ならせることにより設定し、当該設定がなされた接続OKコマンドや賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。なお、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370におけるシリアル通信による具体的な信号のやり取りについては、図52〜図59において詳述する。
また、払出制御用マイクロコンピュータ370は、出力ポート372cを介して、7セグメントLEDによるエラー表示用LED374にエラー信号を出力する。なお、払出制御基板37の入力ポート372fには、エラー状態を解除するためのエラー解除スイッチ375からの検出信号が入力される。エラー解除スイッチ375は、ソフトウェアリセットによってエラー状態を解除するために用いられる。
さらに、払出制御用マイクロコンピュータ370からの払出モータ289への駆動信号は、出力ポート372aおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に伝えられる。なお、出力ポート372aの外側に、ドライバ回路(モータ駆動回路)が設置されているが、図5では記載省略されている。
遊技機に隣接して設置されているカードユニット50には、カードユニット制御用マイクロコンピュータが搭載されている。また、カードユニット50には、使用可表示ランプ、連結台方向表示器、カード投入表示ランプおよびカード挿入口が設けられている。インタフェース基板(中継基板)66には、打球供給皿3の近傍に設けられている度数表示LED60、球貸し可LED61、球貸しスイッチ62および返却スイッチ63が接続される。
インタフェース基板66からカードユニット50には、遊技者の操作に応じて、球貸しスイッチ62が操作されたことを示す球貸しスイッチ信号および返却スイッチ63が操作されたことを示す返却スイッチ信号が与えられる。また、カードユニット50からインタフェース基板66には、プリペイドカードの残高を示すカード残高表示信号および球貸し可表示信号が与えられる。カードユニット50と払出制御基板37の間では、接続信号(VL信号)、ユニット操作信号(BRDY信号)、球貸し要求信号(BRQ信号)、球貸し完了信号(EXS信号)およびパチンコ機動作信号(PRDY信号)が入力ポート372fおよび出力ポート372dを介して送受信される。カードユニット50と払出制御基板37の間には、インタフェース基板66が介在している。よって、接続信号(VL信号)等の信号は、図5に示すように、インタフェース基板66を介してカードユニット50と払出制御基板37の間で送受信されることになる。
パチンコ遊技機1の電源が投入されると、払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、カードユニット50にPRDY信号を出力する。また、カードユニット制御用マイクロコンピュータは、電源が投入されると、VL信号を出力する。払出制御用マイクロコンピュータ370は、VL信号の入力状態によってカードユニット50の接続状態/未接続状態を判定する。カードユニット50においてカードが受け付けられ、球貸しスイッチが操作され球貸しスイッチ信号が入力されると、カードユニット制御用マイクロコンピュータは、払出制御基板37にBRDY信号を出力する。この時点から所定の遅延時間が経過すると、カードユニット制御用マイクロコンピュータは、払出制御基板37にBRQ信号を出力する。
そして、払出制御用マイクロコンピュータ370は、カードユニット50に対するEXS信号を立ち上げ、カードユニット50からのBRQ信号の立ち下がりを検出すると、払出モータ289を駆動し、所定個の貸し球を遊技者に払い出す。そして、払出が完了したら、払出制御用マイクロコンピュータ370は、カードユニット50に対するEXS信号を立ち下げる。その後、カードユニット50からのBRDY信号がオン状態でないことを条件に、遊技制御手段から払出指令信号を受けると賞球払出制御を実行する。
カードユニット50で用いられる電源電圧AC24Vは払出制御基板37から供給される。すなわち、カードユニット50に対する電源基板910からの電力供給は、払出制御基板37およびインタフェース基板66を介して行われる。この例では、インタフェース基板66内に配されているカードユニット50に対するAC24Vの電源供給ラインに、カードユニット50を保護するためのヒューズが設けられ、カードユニット50に所定電圧以上の電圧が供給されることが防止される。
また、この実施の形態では、カードユニット50が遊技機とは別体として遊技機に隣接して設置されている場合を例にするが、カードユニット50は遊技機と一体化されていてもよい。また、コイン投入に応じてその金額に応じた遊技球が貸し出されるような場合でも本発明を適用できる。
また、ガラス扉枠2の状態を検出する扉開放センサ155A(図2参照)の検出信号が、払出制御基板37に入力される。払出制御基板37において、扉開放センサ155Aの検出信号は、払出制御用マイクロコンピュータ370には入力されず、払出制御基板37上を分岐して主基板31に出力される。なお、払出制御基板37上で分岐した後、出力回路373Bを介して主基板31に出力されるようにしてもよい。また、扉開放センサ155Aの検出信号を払出制御用マイクロコンピュータ370に入力するようにし、払出制御用マイクロコンピュータ370を介して扉開放信号を主基板31に出力するようにしてもよい。また、扉開放センサ155Aの検出信号を、払出制御基板37に入力することなく、主基板31に直接入力するようにしてもよい。
また、機構板の状態を検出する機構板開放センサ155B(図2参照)の検出信号が、払出制御基板37に入力される。払出制御基板37において、機構板開放センサ155Bの検出信号は、払出制御用マイクロコンピュータ370に入力されるとともに、払出制御基板37上を分岐して(払出制御用マイクロコンピュータ370に入力される前段部分で分岐して)主基板31に出力される。なお、払出制御基板37上で分岐した後、出力回路373Bを介して主基板31に出力されるようにしてもよい。また、機構板開放センサ155Bの検出信号を払出制御用マイクロコンピュータ370に入力するようにし、払出制御用マイクロコンピュータ370を介して機構板開放信号を主基板31に出力するようにしてもよい。また、機構板開放センサ155Bの検出信号を、払出制御基板37に入力するとともに、主基板31にも直接入力するようにしてもよい。また、機構板開放センサ155Bの検出信号を、払出制御基板37に入力せずに、まず遊技制御用マイクロコンピュータ560に入力するようにし、遊技制御用マイクロコンピュータ560を介して機構板開放信号を払出制御基板37に出力するようにしてもよい。
図6は、中継基板77、演出制御基板80、ランプドライバ基板35および音声出力基板70の回路構成例を示すブロック図である。なお、図6に示す例では、ランプドライバ基板35および音声出力基板70には、マイクロコンピュータは搭載されていないが、マイクロコンピュータを搭載してもよい。また、ランプドライバ基板35および音声出力基板70を設けずに、演出制御に関して演出制御基板80のみを設けてもよい。
演出制御基板80は、演出制御用CPU101a、および演出図柄プロセスフラグ等の演出に関する情報を記憶するRAMを含む演出制御用マイクロコンピュータ100を搭載している。なお、RAMは外付けであってもよい。この実施の形態では、演出制御用マイクロコンピュータ100におけるRAMは電源バックアップされていない。演出制御基板80において、演出制御用CPU101aは、内蔵または外付けのROM(図示せず)に格納されたプログラムに従って動作する。また、演出制御用マイクロコンピュータ100は、遊技制御用マイクロコンピュータ560とシリアル通信で信号を入出力(送受信)するシリアル通信回路101bを内蔵している。また、演出制御用CPU101aは、演出制御コマンドにもとづいて、VDP(ビデオディスプレイプロセッサ)109に演出表示装置9の表示制御を行わせる。
この実施の形態では、演出制御用マイクロコンピュータ100と共動して演出表示装置9の表示制御を行うVDP109が演出制御基板80に搭載されている。VDP109は、演出制御用マイクロコンピュータ100とは独立したアドレス空間を有し、そこにVRAMをマッピングする。VRAMは、画像データを展開するためのバッファメモリである。そして、VDP109は、VRAM内の画像データをフレームメモリを介して演出表示装置9に出力する。
演出制御用CPU101aは、受信した演出制御コマンドに従ってCGROM(図示せず)から必要なデータを読み出すための指令をVDP109に出力する。CGROMは、演出表示装置9に表示されるキャラクタ画像データや動画像データ、具体的には、人物、文字、図形や記号等(演出図柄を含む)、および背景画像のデータをあらかじめ格納しておくためのROMである。VDP109は、演出制御用CPU101aの指令に応じて、CGROMから画像データを読み出す。そして、VDP109は、読み出した画像データにもとづいて表示制御を実行する。
さらに、演出制御用CPU101aは、出力ポート105を介してランプドライバ基板35に対してLEDを駆動する信号を出力する。また、演出制御用CPU101aは、出力ポート104を介して音声出力基板70に対して音番号データを出力する。
ランプドライバ基板35において、LEDを駆動する信号は、入力ドライバ351を介してLEDドライバ352に入力される。LEDドライバ352は、LEDを駆動する信号にもとづいて枠LED28などの枠側に設けられている発光体に電流を供給する。また、遊技盤側に設けられている装飾LED25に電流を供給する。
音声出力基板70において、音番号データは、入力ドライバ702を介して音声合成用IC703に入力される。音声合成用IC703は、音番号データに応じた音声や効果音を発生し増幅回路705に出力する。増幅回路705は、音声合成用IC703の出力レベルを、ボリューム706で設定されている音量に応じたレベルに増幅した音声信号をスピーカ27に出力する。音声データROM704には、音番号データに応じた制御データが格納されている。音番号データに応じた制御データは、所定期間(例えば演出図柄の変動期間)における効果音または音声の出力態様を時系列的に示すデータの集まりである。
次に、電源基板910の構成を図7のブロック図を参照して説明する。電源基板910には、遊技機内の各電気部品制御基板や機構部品への電力供給を実行または遮断するための電源スイッチ914が設けられている。なお、電源スイッチ914は、遊技機において、電源基板910の外に設けられていてもよい。電源スイッチ914が閉状態(オン状態)では、交流電源(AC24V)がトランス911の入力側(一次側)に印加される。トランス911は、交流電源(AC24V)と電源基板910の内部とを電気的に絶縁するためのものであるが、その出力電圧もAC24Vである。また、トランス911の入力側には、過電圧保護回路としてのバリスタ918が設置されている。
電源基板910は、電気部品制御基板(主基板31、払出制御基板37および演出制御基板80等)と独立して設置され、遊技機内の各基板および機構部品が使用する電圧を生成する。この例では、AC24V、VSL(DC+30V)、VLP(DC+24V)、VDD(DC+12V)およびVCC(DC+5V)を生成する。また、バックアップ電源(VBB)すなわちバックアップRAMに記憶内容を保持させるための記憶保持手段となるコンデンサ916は、DC+5V(VCC)すなわち各基板上のIC等を駆動する電源のラインから充電される。また、+5Vラインとバックアップ+5V(VBB)ラインとの間に、逆流防止用のダイオード917が挿入される。なお、VSLは、整流平滑回路915において、整流素子でAC24Vを整流昇圧することによって生成される。VSLは、ソレノイド駆動電源になる。また、VLPは、ランプ点灯用の電圧であって、整流回路912において、整流素子でAC24Vを整流することによって生成される。
電源電圧生成手段としてのDC−DCコンバータ913は、1つまたは複数のスイッチングレギュレータ(図7では2つのレギュレータIC924A,924Bを示す。)を有し、VSLにもとづいてVDDおよびVCCを生成する。レギュレータIC(スイッチングレギュレータ)924A,924Bの入力側には、比較的大容量のコンデンサ923A,923Bが接続されている。従って、外部からの遊技機に対する電力供給が停止したときに、VSL、VDD、VCC等の直流電圧は、比較的緩やかに低下する。
図7に示すように、トランス911から出力されたAC24Vは、そのままコネクタ922Bに供給される。また、VLPは、コネクタ922Cに供給される。VCC、VDDおよびVSLは、コネクタ922A,922B,922Cに供給される。
コネクタ922Aに接続されるケーブルは、主基板31に接続される。コネクタ922Aには、VBBも供給されている。また、コネクタ922Bに接続されるケーブルは、払出制御基板37に接続される。なお、コネクタ922BにもVBBが供給されるようにしてもよい。すなわち、払出制御基板37にもバックアップ電源が供給されるようにし、後述する電源断処理が実行されるようにしてもよい。また、コネクタ922Cに接続されるケーブルは、ランプドライバ基板35に接続される。なお、演出制御基板80および音声出力基板70には、ランプドライバ基板35を経由して各電圧が供給される。
また、電源基板910には、押しボタン構造のクリアスイッチ921が搭載されている。電源基板910に搭載されているので、電源基板910から主基板31に亘る電源系統を一系統にすることができ、クリアスイッチ921からのクリア信号の配線と電源系統とを分離しやすくすることができる。クリアスイッチ921が押下されるとローレベル(オン状態)のクリア信号が出力され、コネクタ922Aを介して主基板31に出力される。また、クリアスイッチ921が押下されていなければハイレベル(オフ状態)の信号が出力される。なお、クリアスイッチ921は、押しボタン構造以外の他の構成であってもよい。また、クリアスイッチ921は、遊技機において、電源基板910以外に設けられていてもよい。なお、クリア信号は、主基板31を介して、払出制御基板37に送出される。
さらに、電源基板910には、電気部品制御基板に搭載されているマイクロコンピュータに対するリセット信号を作成するとともに、電源断信号を出力する電源監視回路920と、電源監視回路920からのリセット信号を増幅してコネクタ922A,922Bを介して主基板31および払出制御基板37に出力するとともに、電源断信号を増幅してコネクタ922Aを開始して主基板31に出力する出力ドライバ回路925が搭載されている。なお、電源断信号は、主基板31を経由して、払出制御基板31や演出制御基板80に送出される。
電源監視回路920は電源断信号を出力する電源監視手段とリセット信号を生成するリセット信号生成手段とを実現する回路であるが、電源監視回路920として、市販の停電監視リセットモジュールICを使用することができる。電源監視回路920は、遊技機において用いられる所定電圧(例えば+24V)が所定値(例えば+5Vであるが、+18Vなど他の値としてもよい)以下になった期間が、あらかじめ決められている時間(例えば56ms)以上継続すると電源断信号を出力する。具体的には、電源断信号をオン状態(ローレベル)にする。なお、+18Vとすれば、後で説明するように、電力供給停止時のスイッチの誤検出防止が確実になる。
また、電源監視回路920は、例えば、VCCが+4.5V以下になると、リセット信号をローレベルにする。なお、この実施の形態では、電源断信号を出力する機能とリセット信号を出力する機能とが1つの電源監視回路920で実現されているが、それらを別の回路で実現してもよい。その場合、リセット信号を出力する回路として、ウォッチドッグタイマ内蔵ICを使用することができる。そのようなICとして、電源電圧の瞬断や瞬停などに起因してCPUが誤動作したり暴走したりすることを防止するために、クロック信号がクロック入力端子(CK端子)に入力されない期間(コンデンサ接続端子(TC端子)に接続される単一のコンデンサの容量に応じて設定される期間、また、タイマ監視時間は検出電圧可変端子(VS 端子)に接続される抵抗に応じて可変可能)が所定時間以上になると一定期間リセット信号をハイレベルからリセットレベル(CPUを動作停止させるレベル)としてのローレベル(ローレベル期間は、コンデンサ接続端子に接続される上記コンデンサの容量に応じて設定される)にすることを繰り返すウォッチドッグ機能を内蔵するとともに(ウォッチドッグタイマ停止端子(RCT端子)の入力レベルをGND端子の入力レベルと同じレベルである接地レベルにすることによってこの機能を停止可)、例えばVCC(動作可能電圧+0.8V以上)が+5VであるときにVCCが+4.2V以下になるとリセット信号をローレベルにし、VCCが高くなっていくときと低くなっていくときとでリセット信号のレベルを反転するための検出電圧値を変えるヒステリシス特性を有し、さらに、リセットレベルがローレベルであるリセット信号(RESET ̄端子の出力)の他に、リセットレベルがハイレベルであるリセット信号(RESET端子の出力)を出力可能であるシステムリセットICを使用することができる。なお、リセット回路をそれぞれの電気部品制御基板に搭載した場合に、電源断信号をローレベルにすることになる電圧値を異ならせるようにしてもよい(例えば、主基板31における場合を最も高くして、遊技制御用マイクロコンピュータ560に最も早く電源断信号が入力されるようにする。)
電源監視回路920は、遊技機に対する電力供給が停止する際には、電源断信号を出力(ローレベルにする)してから所定期間が経過したことを条件にリセット信号をローレベルにする。所定期間は、主基板31に搭載されている遊技制御用マイクロコンピュータ560が後述する電源断処理を実行するのに十分な時間である。すなわち、電源監視回路920は、電圧低下検出信号としての電源断信号を出力した後、遊技制御用マイクロコンピュータ560が電源断処理を実行完了した後に、動作停止信号(リセット信号のローレベル)を出力する。また、電源監視回路920は、電圧低下検出信号を出力する第1の電源監視手段と動作停止信号を出力する第2の電源監視手段とを兼ねている。また、遊技機に対する電力供給が開始され、VCCが例えば+4.5Vを越えるとリセット信号をハイレベルにする。
なお、この実施の形態では、電源監視手段が所定電位の電源の出力を監視し、外部から遊技機に供給される電力の供給停止に関わる検出条件として、遊技機の外部からの電圧(この実施の形態ではAC24V)から作成された所定の直流電圧が所定値以下になったことを用いたが、検出条件は、それに限られず、外部のからの電力が途絶えたことを検出できるのであれば、他の条件を用いてもよい。例えば、交流波そのものを監視して交流波が途絶えたことを検出条件としてもよいし、交流波をディジタル化した信号を監視して、ディジタル信号が平坦になったことをもって交流波が途絶えたことを検出条件としてもよい。さらに、例えば、+12V電源電圧や+5V電源電圧を監視して、その電圧が所定値にまで低下したことを検出して電源断信号を出力するようにしてもよい。ただし、+12Vで動作するスイッチの誤動作を防止するために、+12V以上の電圧を監視することが好ましい。
また、この実施の形態では、電源監視手段が電源基板910に搭載されているが、電源監視手段を払出制御基板37に搭載してもよい。払出制御基板37に搭載した場合には、電源監視手段から遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370への電源断信号の経路が短くなり、電源断信号に対してノイズが乗る可能性を低減できる。
図8は、パチンコ遊技機1への電力供給が開始されたとき、および電力供給が停止するときにおける、AC24V、VSL、VCC、リセット信号および電源断信号の状態を、模式的に示すタイミング図である。図8に示すように、パチンコ遊技機1への電力供給が開始されたときに、VSLおよびVCCは徐々に規定値(直流+30Vおよび直流+5V)に達する。このとき、VCCが第1の所定値を超えると、電源監視回路303はリセット信号の出力を停止(ハイレベルに設定)してオフ状態とする。また、VSLが第2の所定値を超えると、電源監視回路303は電源断信号の出力を停止(ハイレベルに設定)してオフ状態とする。他方、パチンコ遊技機1への電力供給が停止するときに、VSLおよびVCCは徐々に低下する。このとき、VSLが第2の所定値にまで低下すると、電源監視回路303は電源断信号をオン状態として出力(ローレベルに設定)する。また、VCCが第1の所定値にまで低下すると、電源監視回路920はリセット信号をオン状態として出力(ローレベルに設定)する。
図9は、主基板31に搭載された遊技制御用マイクロコンピュータ560の構成例を示している。図9に示す遊技制御用マイクロコンピュータ560は、例えば1チップマイクロコンピュータであり、外部バスインタフェース501と、クロック回路502と、固有情報記憶回路503と、リセット/割込みコントローラ504と、CPU(Central Processing Unit)56と、ROM(Read Only Memory)54と、RAM(Random Access Memory)55と、CTC(Counter/Timer Circuit)508と、乱数回路509と、PIP(Parallel Input Port)510と、シリアル通信回路511と、アドレスデコード回路512とを備えて構成される。
なお、この実施の形態では、シリアル通信回路511を内蔵するマイクロコンピュータを搭載した基板(例えば、主基板31)とは異なる基板(例えば、払出制御基板37や演出制御基板80)のマイクロコンピュータとの通信にシリアル通信回路511を用いる場合を説明するが、シリアル通信回路511は、シリアル通信回路511を内蔵するマイクロコンピュータを搭載した基板が備える別のマイクロコンピュータとシリアル通信を行ってもよい。例えば、同じ構成の2つのマイクロコンピュータが同じ基板に搭載されている場合に、各マイクロコンピュータが内蔵するシリアル通信回路が相互にシリアル通信を行ってもよい。
図10は、遊技制御用マイクロコンピュータ560におけるアドレスマップの一例を示している。図10に示すように、アドレス0000H〜アドレス1FFFHの領域は、ROM54に割り当てられ、ユーザプログラムエリアとプログラム管理エリアとを含んでいる。図11(A)は、ROM54におけるプログラム管理エリアの主要部分について、用途や内容の一例を示している。アドレス2000H〜アドレス20FFHの領域は、遊技制御用マイクロコンピュータ560の内蔵レジスタに割り当てられる内蔵レジスタエリアである。図11(B)は、内蔵レジスタエリアの主要部分について、用途や内容の一例を示している。アドレス7E00H〜アドレス7FFFHの領域は、RAM55に割り当てられたワークエリアであり、I/Oマップやメモリマップに割り付けることができる。アドレスFDD0H〜アドレスFDFBHの領域は、アドレスデコード回路512に割り当てられるXCSデコードエリアである。
プログラム管理エリアは、CPU56がユーザプログラムを実行するために必要な情報を格納する記憶領域である。図11(A)に示すように、プログラム管理エリアには、ヘッダKHDR、機能設定KFCS、第1乱数初期設定KRS1、第2乱数初期設定KRS2、割込み初期設定KIIS、セキュリティ時間設定KSESなどが、含まれている。
プログラム管理エリアに記憶されるヘッダKHDRは、遊技制御用マイクロコンピュータ560における内部データの読出設定を示す。図12(A)は、ヘッダKHDRにおける設定データと動作との対応関係を例示している。ここで、遊技制御用マイクロコンピュータ560では、ROM読出防止機能と、バス出力マスク機能とを設定可能である。ROM読出防止機能は、遊技制御用マイクロコンピュータ560が備えるROM54の記憶データについて、読出動作を許可または禁止する機能であり、読出禁止に設定された状態では、ROM54の記憶データを読み出すことができない。バス出力マスク機能は、外部バスインタフェース501に接続された外部装置から遊技制御用マイクロコンピュータ560の内部データに対する読出要求があった場合に、外部バスインタフェース501におけるアドレスバス出力、データバス出力および制御信号出力にマスクをかけることにより、外部装置から内部データの読み出しを不能にする機能である。図12(A)に示すように、ヘッダKHDRの設定データに対応して、ROM読出防止機能やバス出力マスク機能の動作組合せが異なるように設定される。図12(A)に示す設定データのうち、ROM読出が許可されるとともに、バス出力マスクが有効となる設定データは、バス出力マスク有効データともいう。また、ROM読出が禁止されるとともに、バス出力マスクが有効となる設定データ(全て「00H」)は、ROM読出禁止データともいう。ROM読出が許可されるとともに、バス出力マスクが無効となる設定データは、バス出力マスク無効データともいう。
プログラム管理エリアに記憶される機能設定KFCSは、遊技制御用マイクロコンピュータ560におけるウォッチドッグタイマ(WDT;Watch Dog Timer)の動作設定や、各種機能兼用端子の使用設定を示す。図12(B)は、機能設定KFCSにおける設定内容の一例を示している。
機能設定KFCSのビット番号[7−5]は、例えばリセット/割込みコントローラ504における割込み要因として設定可能なウォッチドッグタイマの動作許可/禁止や、許可した場合の周期を示している。機能設定KFCSのビット番号[4]は、遊技制御用マイクロコンピュータ560における所定の機能兼用端子(第1兼用端子)を、シリアル通信回路511が使用する第2チャネル送信端子TXBとするか、アドレスデコード回路512が使用するチップセレクト出力端子XCS13とするかを指定するTXB端子設定である。図12(B)に示す例において、機能設定KFCSのビット番号[4]におけるビット値が“0”であれば、第1兼用端子がシリアル通信回路511での第2チャネル送信に使用される第2チャネル送信端子TXBの設定となる。これに対して、そのビット値が“1”であれば、第1兼用端子がアドレスデコード回路512で使用されるチップセレクト出力端子XCS13の設定となる。この実施の形態では、機能設定KFCSのビット番号[4]を“0”として、第1兼用端子を第2チャネル送信端子TXBに設定することにより、演出制御基板80との間でのシリアル通信を可能にする。
機能設定KFCSのビット番号[3]は、遊技制御用マイクロコンピュータ560における所定の機能兼用端子(第2兼用端子)を、シリアル通信回路511が使用する第1チャネル送信端子TXAとするか、アドレスデコード回路512が使用するチップセレクト出力端子XCS12とするかを示すTXA端子設定である。図12(B)に示す例において、機能設定KFCSのビット番号[3]におけるビット値が“0”であれば、第2兼用端子がシリアル通信回路511での第1チャネル送信に使用される第1チャネル送信端子TXAの設定となる。これに対して、そのビット値が“1”であれば、第2兼用端子がアドレスデコード回路512で使用されるチップセレクト出力端子XCS12の設定となる。この実施の形態では、機能設定KFCSのビット番号[3]を“0”として、第2兼用端子を第1チャネル送信端子TXAに設定することにより、払出制御基板37との間でのシリアル通信を可能にする。
機能設定KFCSのビット番号[2]は、遊技制御用マイクロコンピュータ560における所定の機能兼用端子(第3兼用端子)を、シリアル通信回路511が使用する第1チャネル受信端子RXAとするか、PIP510が使用する入力ポートP5とするかを示すRXA端子設定である。図12(B)に示す例において、機能設定KFCSのビット番号[2]におけるビット値が“0”であれば、第3兼用端子がシリアル通信回路511での第1チャネル受信に使用される第1チャネル受信端子RXAの設定となる。これに対して、そのビット値が“1”であれば、第3兼用端子がPIP510で使用される入力ポートP5の設定となる。この実施の形態では、機能設定KFCSのビット番号[2]を“0”として、第3兼用端子を第1チャネル受信端子RXAに設定することにより、払出制御基板37との間でのシリアル通信を可能にする。
機能設定KFCSのビット番号[1]は、遊技制御用マイクロコンピュータ560における所定の機能兼用端子(第4兼用端子)を、CPU56等に接続される外部ノンマスカブル割込み端子XNMIとするか、PIP510が使用する入力ポートP4とするかを示すNMI接続設定である。図12(B)に示す例において、機能設定KFCSのビット番号[1]におけるビット値が“0”であれば、第4兼用端子がCPU56等に接続される外部ノンマスカブル割込み端子XNMIの設定となる(CPU接続)。これに対して、そのビット値が“1”であれば、第4兼用端子がPIP510で使用される入力ポートP4の設定となる(CPU非接続)。
機能設定KFCSのビット番号[0]は、遊技制御用マイクロコンピュータ560における所定の機能兼用端子(第5兼用端子)を、CPU56等に接続される外部マスカブル割込み端子XINTとするか、PIP510が使用する入力ポートP3とするかを示すXINT接続設定である。図12(B)に示す例において、機能設定KFCSのビット番号[0]におけるビット値が“0”であれば、第5兼用端子がCPU56等に接続される外部マスカブル割込み端子XINTの設定となる(CPU接続)。これに対して、そのビット値が“1”であれば、第5兼用端子がPIP510で使用される入力ポートP3の設定となる(CPU非接続)。
プログラム管理エリアに記憶される第1乱数初期設定KRS1および第2乱数初期設定KRS2は、乱数回路509の初期設定を示す。図13(A)は、第1乱数初期設定KRS1における設定内容の一例を示している。図13(B)は、第2乱数初期設定KRS2における設定内容の一例を示している。
第1乱数初期設定KRS1のビット番号[3]は、乱数回路509を使用するか否かを示す乱数回路使用設定である。図13(A)に示す例において、第1乱数初期設定KRS1のビット番号[3]におけるビット値が“0”であれば、乱数回路509を使用しない設定となる一方(未使用)、“1”であれば、乱数回路509を使用する設定となる(使用)。この実施の形態では、第1乱数初期設定KRS1のビット番号[3]を“1”として、乱数回路509を使用可能に設定する。
第1乱数初期設定KRS1のビット番号[2]は、乱数回路509における乱数値となる数値データの更新に用いられる乱数更新クロックRGK(図16参照)を、内部システムクロックSCLKとするか、乱数用クロックRCLKの2分周とするかを示す乱数更新クロック設定である。図13(A)に示す例において、第1乱数初期設定KRS1のビット番号[2]におけるビット値が“0”であれば、内部システムクロックSCLKを乱数更新クロックRGKに用いる設定となる一方、“1”であれば、乱数用クロックRCLKを2分周して乱数更新クロックRGKに用いる設定となる。この実施の形態では、第1乱数初期設定KRS1のビット番号[2]を“1”として、乱数用クロックRCLKを2分周して乱数更新クロックRGKに用いる設定とする。
第1乱数初期設定KRS1のビット番号[1−0]は、乱数回路509における乱数更新規則を変更するか否かや、変更する場合における変更方式を示す乱数更新規則設定である。図13(A)に示す例において、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値が“00”であれば、乱数更新規則を変更しない設定となり、“01”であれば、2周目以降にて乱数更新規則をソフトウェアにより変更する設定となり、“10”であれば、2周目以降にて乱数更新規則を自動で変更する設定となる。
第2乱数初期設定KRS2のビット番号[3−2]は、固定のビット値“00”が設定される。なお、図13(B)における「00B」の“B”は2進数表示であることを示す。第2乱数初期設定KRS2のビット番号[1−0]は、乱数回路509における乱数値となる数値データでのスタート値に関する設定を示す。図13(B)に示す例において、第2乱数初期設定KRS2のビット番号[1]におけるビット値が“0”であれば、スタート値が所定のデフォルト値0000Hに設定される一方、“1”であるときには、遊技制御用マイクロコンピュータ560ごとに付与された固有の識別情報であるIDナンバーにもとづく値がスタート値に設定される。また、図13(B)に示す例では、第2乱数初期設定KRS2のビット番号[0]におけるビット値が“0”であれば、システムリセット毎にスタート値を変更しない設定となる一方、“1”であるときには、システムリセット毎にスタート値を変更する設定となる。なお、スタート値をIDナンバーにもとづく値に設定する場合には、IDナンバーに所定のスクランブル処理を施す演算や、IDナンバーを用いた加算・減算・乗算・除算などの演算の一部または全部を実行して、算出された値をスタート値に用いるようにすればよい。また、第2乱数初期設定KRS2のビット番号[0]におけるビット値が“1”である場合には、システムリセット毎に所定のフリーランカウンタ(例えば図16に示すフリーランカウンタ554A)におけるカウント値にもとづいて設定される値をスタート値に用いるようにすればよい。さらに、第2乱数初期設定KRS2のビット番号[1]および[0]におけるビット値がともに“1”である場合には、IDナンバーとフリーランカウンタにおけるカウント値とにもとづいて設定される値をスタート値に用いるようにすればよい。
なお、乱数回路509にて乱数値となる数値データを生成するための回路が2系統(第1および第2チャネル対応)設けられる場合には、図13(A)および(B)に示す第1乱数初期設定KRS1のビット番号[3−0]と第2乱数初期設定KRS2のビット番号[3−0]とを、第1チャネルにおける初期設定を示すものとして使用する。その一方で、第1乱数初期設定KRS1のビット番号[7−4]や第2乱数初期設定KRS2のビット番号[7−4]を(図13(A)および(B)では省略)、第2チャネルにおける初期設定を示すものとして使用すればよい。
プログラム管理エリアに記憶される割込み初期設定KIISは、遊技制御用マイクロコンピュータ560にて発生するマスカブル割込みの取扱いに関する初期設定を示す。図13(C)は、割込み初期設定KIISにおける設定内容の一例を示している。
割込み初期設定KIISのビット番号[7−4]では、割込みベクタの上位4ビットを設定する。割込み初期設定KIISのビット番号[3−0]では、マスカブル割込み要因の優先度の組合せを設定する。図13(C)に示す例において、割込み初期設定KIISのビット番号[3−0]により「00H」〜「02H」および「06H」のいずれかが指定されれば、CTC508からのマスカブル割込み要因を最優先とする優先度の組合せが設定される。これに対して、「03H」および「07H」のいずれかが指定されれば、乱数回路509からのマスカブル割込み要因を最優先とする優先度の組合せが設定される。また、「04H」および「05H」のいずれかが指定されれば、シリアル通信回路511からのマスカブル割込み要因を最優先とする優先度の組合せが設定される。なお、同一回路からのマスカブル割込み要因を最優先とする優先度の組合せでも、指定値が異なる場合には、最優先となるマスカブル割込み要因の種類や第2順位以下における優先度の組合せなどが異なっている。
プログラム管理エリアに記憶されるセキュリティ時間設定KSESは、乱数用クロックRCLKの周波数を監視する場合に異常を検知する周波数や、遊技制御用マイクロコンピュータ560の動作開始時などに移行するセキュリティモードの時間(セキュリティ時間)に関する設定を示す。ここで、遊技制御用マイクロコンピュータ560の動作モードがセキュリティモードであるときには、所定のセキュリティチェック処理が実行されて、ROM54の記憶内容が変更されたか否かが検査される。図14(A)は、セキュリティ時間設定KSESにおける設定内容の一例を示している。
セキュリティ時間設定KSESのビット番号[7−6]は、乱数用クロックRCLKの周波数を監視する場合に異常が検出される周波数を示す乱数用クロック異常検出設定である。図14(B)は、セキュリティ時間設定KSESのビット番号[7−6]における設定内容の一例を示している。セキュリティ時間設定KSESのビット番号[7−6]は、内部システムクロックSCLKの周波数にもとづき、乱数用クロックRCLKの周波数が異常と検知される基準値(判定値)を指定する。こうしたセキュリティ時間設定KSESのビット番号[7−6]における設定にもとづき、乱数用クロックRCLKの入力状態を内部システムクロックSCLKと比較することにより、乱数用クロックRCLKの入力状態に異常が発生したか否かの判定を可能にする。セキュリティ時間設定KSESのビット番号「5」は、固定のビット値“0”が設定される。
セキュリティ時間設定KSESのビット番号[4−3]は、セキュリティ時間をシステムリセット毎にランダムな時間分延長する場合の時間設定を示す。図14(C)は、セキュリティ時間設定KSESのビット番号[4−3]における設定内容の一例を示している。図14(C)に示す例において、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値が“00”であれば、ランダムな時間延長を行わない設定となる。これに対して、そのビット値が“01”であればショートモードの設定となり、“10”であればロングモードの設定となる。ここで、ショートモードやロングモードが指定された場合には、例えば遊技制御用マイクロコンピュータ560に内蔵されたフリーランカウンタのカウント値を、システムリセットの発生時に遊技制御用マイクロコンピュータ560が備える所定の内蔵レジスタ(可変セキュリティ時間用レジスタ)に格納する。そして、初期設定時に可変セキュリティ時間用レジスタの格納値をそのまま用いること、あるいは、その格納値を所定の演算関数(例えばハッシュ関数)に代入して得られた値を用いることなどにより、セキュリティ時間を延長する際の延長時間がランダムに決定されればよい。一例として、内部システムクロックSCLKの周波数が6.0MHzである場合には、ショートモードにおいて0〜680μs(マイクロ秒)の範囲で延長時間がランダムに決定され、ロングモードにおいて0〜348,160μsの範囲で延長時間がランダムに決定される。また、他の一例として、内部システムクロックSCLKの周波数が10.0MHzである場合には、ショートモードにおいて0〜408μsの範囲で延長時間がランダムに決定され、ロングモードにおいて0〜208,896μsの範囲で延長時間がランダムに決定される。可変セキュリティ時間用レジスタは、例えば遊技制御用マイクロコンピュータ560のRAM55におけるバックアップ領域といった、主基板31におけるバックアップ箇所と共通のバックアップ電源を用いてバックアップされるものであればよい。あるいは、可変セキュリティ時間用レジスタは、RAM55におけるバックアップ領域などに用いられるバックアップ電源とは別個に設けられた電源によりバックアップされてもよい。こうして、可変セキュリティ時間用レジスタがバックアップ電源によってバックアップされることで、電力供給が停止した場合でも、所定期間は可変セキュリティ時間用レジスタの格納値が保存されることになる。なお、フリーランカウンタにおけるカウント値を読み出して可変セキュリティ時間用レジスタに格納するタイミングは、システムリセットの発生時に限定されず、あらかじめ定められた任意のタイミングとしてもよい。あるいは、フリーランカウンタをバックアップ電源によってバックアップしておき、初期設定時にフリーランカウンタから読み出した格納値を用いてセキュリティ時間を延長する際の延長時間がランダムに決定されてもよい。
また、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値によりショートモードまたはロングモードを設定するとともに、セキュリティ時間設定KSESのビット番号[2−0]におけるビット値を“000”以外とすることにより固定時間に加える延長時間を設定することもできる。この場合には、ビット番号[2−0]におけるビット値に対応した延長時間と、ビット番号[4−3]におけるビット値にもとづいてランダムに決定された延長時間との双方が、固定時間に加算されて、遊技制御用マイクロコンピュータ560がセキュリティモードとなるセキュリティ時間が決定されることになる。
図9に示す遊技制御用マイクロコンピュータ560が備える外部バスインタフェース501は、遊技制御用マイクロコンピュータ560を構成するチップの外部バスと内部バスとのインタフェース機能や、アドレスバス、データバスおよび各制御信号の方向制御機能などを有するバスインタフェースである。例えば、外部バスインタフェース501は、遊技制御用マイクロコンピュータ560に外付けされた外部メモリや外部入出力装置などに接続され、これらの外部装置との間でアドレス信号やデータ信号、各種の制御信号などを送受信するものであればよい。この実施の形態において、外部バスインタフェース501には、内部リソースアクセス制御回路501Aが含まれている。
内部リソースアクセス制御回路501Aは、外部バスインタフェース501を介した外部装置から遊技制御用マイクロコンピュータ560の内部データに対するアクセスを制御して、例えばROM54に記憶されたゲーム制御用プログラム(遊技制御処理プログラム)や固定データといった、内部データの不適切な外部読出を制限するための回路である。ここで、外部バスインタフェース501には、例えばインサーキットエミュレータ(ICE;InCircuit Emulator)といった回路解析装置が、外部装置として接続されることがある。
一例として、ROM54のプログラム管理エリアに記憶されたヘッダKHDRの内容に応じて、ROM54における記憶データの読み出しを禁止するか許可するかを切り替えられるようにする。例えば、ヘッダKHDRがバス出力マスク無効データとなっている場合には、外部装置によるROM54の読み出しを可能にして、内部データの外部読出を許可する。これに対して、ヘッダKHDRがバス出力マスク有効データとなっている場合には、例えば外部バスインタフェース501におけるアドレスバス出力、データバス出力および制御信号出力にマスクをかけることなどにより、外部装置からROM54の読み出しを不能にして、内部データの外部読出を禁止する。この場合、外部バスインタフェース501に接続された外部装置から内部データの読み出しが要求されたときには、あらかじめ定められた固定値を出力することで、外部装置からは内部データを読み出すことができないようにする。また、ヘッダKHDRがROM読出禁止データとなっている場合には、ROM54自体を読出不能として、ROM54における記憶データの読み出しを防止してもよい。そして、例えば製造段階のROMでは、ヘッダKHDRをROM読出禁止データとすることで、ROM自体を読出不能としておき、開発用ROMとするのであればバス出力マスク無効データをヘッダKHDRに書き込むことで、外部装置による内部データの検証を可能にする。これに対して、量産用ROMとするのであればバス出力マスク有効データをヘッダKHDRに書き込むことで、CPU56などによる遊技制御用マイクロコンピュータ560の内部におけるROM54の読み出しは可能とする一方で、外部装置によるROM54の読み出しはできないようにすればよい。
他の一例として、内部リソースアクセス制御回路501Aは、ROM54における記憶データの全部または一部といった、遊技制御用マイクロコンピュータ560の内部データの読み出しが、外部バスインタフェース501に接続された外部装置から要求されたことを検出する。この読出要求を検出したときに、内部リソースアクセス制御回路501Aは、遊技制御用マイクロコンピュータ560の内部データの読み出しを許可するか否かの判定を行う。例えば、ROM54における記憶データの全部または一部に暗号化処理が施されているものとする。この場合、内部リソースアクセス制御回路501Aは、外部装置からの読出要求がROM54に記憶された暗号化処理プログラムや鍵データ等に対する読出要求であれば、この読出要求を拒否して、遊技制御用マイクロコンピュータ560の内部データの読み出しを禁止する。外部バスインタフェース501では、ROM54の記憶データが出力される出力ポートと、内部バスとの間にスイッチ素子を設け、内部リソースアクセス制御回路501Aが内部データの読み出しを禁止した場合には、このスイッチ素子をオフ状態とするように制御すればよい。このように、内部リソースアクセス制御回路501Aは、外部装置からの読出要求が所定の内部データ(例えばROM54の所定領域)の読み出しを要求するものであるか否かに応じて、内部データの読み出しを禁止するか許可するかを決定するようにしてもよい。
あるいは、内部リソースアクセス制御回路501Aは、内部データの読出要求を検出したときに、所定の認証コードが外部装置から入力されたか否かを判定してもよい。この場合には、例えば内部リソースアクセス制御回路501Aの内部あるいはROM54の所定領域に、認証コードとなる所定のコードパターンがあらかじめ記憶されていればよい。そして、外部装置から認証コードが入力されたときには、この認証コードを内部記憶された認証コードと比較して、一致すれば読出要求を受容して、遊技制御用マイクロコンピュータ560の内部データの読み出しを許可する。これに対して、外部装置から入力された認証コードが内部記憶された認証コードと一致しない場合には、読出要求を拒否して、遊技制御用マイクロコンピュータ560の内部データの読み出しを禁止する。このように、内部リソースアクセス制御回路501Aは、外部装置から入力された認証コードが内部記憶された認証コードと一致するか否かに応じて、内部データの読み出しを禁止するか許可するかを決定するようにしてもよい。これにより、検査機関などがあらかじめ知得した正しい認証コードを用いて、遊技制御用マイクロコンピュータ560の内部データを損なうことなく読み出すことができ、内部データの正当性を適切に検査することなどが可能になる。
さらに他の一例として、内部リソースアクセス制御回路501Aに読出禁止フラグを設け、読出禁止フラグがオン状態であれば外部装置によるROM54の読み出しを禁止する。その一方で、読出禁止フラグがオフ状態であるときには、外部装置によるROM54の読み出しが許可される。ここで、読出禁止フラグは、初期状態ではオフ状態であるが、読出禁止フラグを一旦オン状態とした後には、読出禁止フラグをクリアしてオフ状態に復帰させることができないように構成されていればよい。すなわち、読出禁止フラグはオフ状態からオン状態に不可逆的に変更することが可能とされている。例えば、内部リソースアクセス制御回路501Aには、読出禁止フラグをクリアしてオフ状態とする機能が設けられておらず、どのような命令によっても読出禁止フラグをクリアすることができないように設定されていればよい。そして、内部リソースアクセス制御回路501Aは、外部装置からROM54における記憶データといった遊技制御用マイクロコンピュータ560の内部データの読み出しが要求されたときに、読出禁止フラグがオンであるか否かを判定する。このとき、読出禁止フラグがオンであれば、外部装置からの読出要求を拒否して、遊技制御用マイクロコンピュータ560の内部データの読み出しを禁止する。他方、読出禁止フラグがオフであれば、外部装置からの読出要求を受容して、遊技制御用マイクロコンピュータ560の内部データの読み出しを許可にする。このような構成であれば、ゲーム制御用の遊技制御処理プログラムを作成してROM54に格納する提供者においては、読出禁止フラグがオフとなっている状態でデバッグの終了したプログラムをROM54から外部装置に読み込むことができる。そして、デバッグの作業が終了した後に出荷する際には、読出禁止フラグをオン状態にセットすることにより、それ以後はROM54の外部読出を制限することができ、パチンコ遊技機1の使用者などによるROM54の読出を防止することができる。このように、内部リソースアクセス制御回路501Aは、読出禁止フラグといった内部フラグがオフであるかオンであるかに応じて、内部データの読み出しを禁止するか許可するかを決定するようにしてもよい。
なお、読出禁止フラグを不可逆に設定するのではなく、オン状態からオフ状態に変更することも可能とする一方で、読出禁止フラグをオン状態からオフ状態に変更して内部データの読み出しが許可されるときには、ROM54の記憶データを消去(例えばフラッシュ消去など)することにより、ROM54の外部読出を制限するようにしてもよい。
遊技制御用マイクロコンピュータ560が備えるクロック回路502は、例えば制御用外部クロック端子EXCに入力される発振信号を2分周することなどにより、内部システムクロックSCLKを生成する回路である。この実施の形態では、制御用外部クロック端子EXCに制御用クロック生成回路111が生成した制御用クロックCCLKが入力される。クロック回路502により生成された内部システムクロックSCLKは、例えばCPU56といった、遊技制御用マイクロコンピュータ560において遊技の進行を制御する各種回路に供給される。また、内部システムクロックSCLKは、乱数回路509にも供給され、乱数用クロック生成回路112から供給される乱数用クロックRCLKの周波数を監視するために用いられる。さらに、内部システムクロックSCLKは、クロック回路502に接続されたシステムクロック出力端子CLKOから、遊技制御用マイクロコンピュータ560の外部へと出力されてもよい。なお、内部システムクロックSCLKは、遊技制御用マイクロコンピュータ560の外部へは出力されないことが望ましい。このように、内部システムクロックSCLKの外部出力を制限することにより、遊技制御用マイクロコンピュータ560の内部回路(CPU56など)の動作周期を外部から特定することが困難になり、乱数値となる数値データをソフトウェアにより更新する場合に、乱数値の更新周期が外部から特定されてしまうことを防止できる。
遊技制御用マイクロコンピュータ560が備える固有情報記憶回路503は、例えば遊技制御用マイクロコンピュータ560の内部情報となる複数種類の固有情報を記憶する回路である。一例として、固有情報記憶回路503は、ROMコード、チップ個別ナンバー、IDナンバーといった3種類の固有情報を記憶する。ROM54コードは、ROM54の所定領域における記憶データから生成される4バイトの数値であり、生成方法の異なる4つの数値が準備されればよい。チップ個別ナンバーは、遊技制御用マイクロコンピュータ560の製造時に付与される4バイトの番号であり、遊技制御用マイクロコンピュータ560を構成するチップ毎に異なる数値を示している。IDナンバーは、遊技制御用マイクロコンピュータ560の製造時に付与される8バイトの番号であり、遊技制御用マイクロコンピュータ560を構成するチップ毎に異なる数値を示している。ここで、チップ個別ナンバーはユーザプログラムから読み取ることができる一方、IDナンバーはユーザプログラムから読み取ることができないように設定されていればよい。なお、固有情報記憶回路503は、例えばROM54の所定領域を用いることなどにより、ROM54に含まれるようにしてもよい。あるいは、固有情報記憶回路503は、例えばCPU56の内蔵レジスタを用いることなどにより、CPU56に含まれるようにしてもよい。
遊技制御用マイクロコンピュータ560が備えるリセット/割込みコントローラ504は、遊技制御用マイクロコンピュータ560の内部や外部にて発生する各種リセット、割込み要求を制御するためのものである。リセット/割込みコントローラ504が制御するリセットには、システムリセットとユーザリセットが含まれている。システムリセットは、外部システムリセット端子XSRSTに一定の期間にわたりローレベル信号が入力されたときに発生するリセットである。ユーザリセットは、ウォッチドッグタイマ(WDT)のタイムアウト信号が発生したことや、指定エリア外走行禁止(IAT)が発生したことなど、所定の要因により発生するリセットである。
リセット/割込みコントローラ504が制御する割込みには、ノンマスカブル割込みNMIとマスカブル割込みINTが含まれている。ノンマスカブル割込みNMIは、CPU56の割込み禁止状態でも無条件に受け付けられる割込みであり、外部ノンマスカブル割込み端子XNMI(入力ポートP4と兼用)に一定の期間にわたりローレベル信号が入力されたときに発生する割込みである。マスカブル割込みINTは、CPU56の設定命令により、割込み要求の受け付けを許可/禁止できる割込みであり、優先順位設定による多重割込みの実行が可能である。マスカブル割込みINTの要因としては、外部マスカブル割込み端子XINT(入力ポートP3と兼用)に一定の期間にわたりローレベル信号が入力が入力されたこと、CTC508に含まれるタイマ回路にてタイムアウトが発生したこと、シリアル通信回路511にてデータ受信またはデータ送信による割込み要因が発生したこと、乱数回路509にて乱数値となる数値データの取込による割込み要因が発生したことなど、複数種類の割込み要因があらかじめ定められていればよい。
リセット/割込みコントローラ504は、図11(B)に示すような遊技制御用マイクロコンピュータ560が備える内蔵レジスタのうち、割込みマスクレジスタIMR(アドレス2028H)、割込み待ちモニタレジスタIRR(アドレス2029H)、割込み中モニタレジスタISR(アドレス202AH)、内部情報レジスタCIF(アドレス208CH)などを用いて、割込みの制御やリセットの管理を行う。割込みマスクレジスタIMRは、互いに異なる複数の要因によるマスカブル割込みINTのうち、使用するものと使用しないものとを設定するレジスタである。割込み待ちモニタレジスタIRRは、割込み初期設定KIISにより設定されたマスカブル割込み要因のそれぞれについて、マスカブル割込み要求信号の発生状態を確認するレジスタである。割込み中モニタレジスタISRは、割込み初期設定KIISにより設定されたマスカブル割込み要因のそれぞれについて、マスカブル割込み要求信号の処理状態を確認するレジスタである。内部情報レジスタCIFは、直前に発生したリセット要因を管理したり、乱数用クロックRCLKの周波数異常を記録したりするためのレジスタである。
図15(A)は、内部情報レジスタCIFの構成例を示している。図15(B)は、内部情報レジスタCIFに格納される内部情報データの各ビットにおける設定内容の一例を示している。内部情報レジスタCIFのビット番号[4]に格納される内部情報データCIF4は、乱数用クロックRCLKにおける周波数異常の有無を示す乱数用クロック異常指示である。図15(B)に示す例では、乱数用クロックRCLKの周波数異常が検知されないときに、内部情報データCIF4のビット値が“0”となる一方、周波数異常が検知されたときには、そのビット値が“1”となる。内部情報レジスタCIFのビット番号[2]に格納される内部情報データCIF2は、直前に発生したリセット要因がシステムリセットであるか否かを示すシステムリセット指示である。図15(B)に示す例では、直前のリセット要因がシステムリセットではないときに(システムリセット未発生)、内部情報データCIF2のビット値が“0”となる一方、システムリセットであるときには(システムリセット発生)、そのビット値が“1”となる。内部情報データCIF2を用いた動作の第1例として、電源投入時に遊技制御用マイクロコンピュータ560のCPU56などが内部情報データCIF2のビット値をチェックして、そのビット値が“1”(セット)でなければ、通常の電源投入ではないと判断する。このときには、例えば演出制御基板80に向けて所定の演出制御コマンドを伝送させることなどにより、パチンコ遊技機1における電源投入直後に大当り遊技状態とすることを狙った不正信号の入力行為が行われた可能性がある旨を、演出装置などにより報知させてもよい。また、内部情報データCIF2を用いた動作の第2例として、パチンコ遊技機1が電源投入時にのみ確変状態を報知し、通常時には確変状態を報知しない場合に、電源投入時に遊技制御用マイクロコンピュータ560のCPU56などが内部情報データCIF2のビット値をチェックして、そのビット値が“1”(セット)でなければ、遊技状態の報知を行わないようにしてもよい。
内部情報レジスタCIFのビット番号[1]に格納される内部情報データCIF1は、直前に発生したリセット要因がウォッチドッグタイマ(WDT)のタイムアウトによるユーザリセットであるか否かを示すWDTタイムアウト指示である。図15(B)に示す例では、直前のリセット要因がウォッチドッグタイマのタイムアウトによるユーザリセットではないときに(タイムアウト未発生)、内部情報データCIF1のビット値が“0”となる一方、ウォッチドッグタイマのタイムアウトによるユーザリセットであるときに(タイムアウト発生)、そのビット値が“1”となる。内部情報レジスタCIFのビット番号[0]に格納される内部情報データCIF0は、直前に発生したリセット要因が指定エリア外走行禁止(IAT)によるユーザリセットであるか否かを示すIAT発生指示である。図15(B)に示す例では、直前のリセット要因が指定エリア外走行の発生によるユーザリセットではないときに(IAT発生なし)、内部情報データCIF0のビット値が“0”となる一方、指定エリア外走行の発生によるユーザリセットであるときに(IAT発生あり)、そのビット値が“1”となる。
遊技制御用マイクロコンピュータ560が備えるCPU56は、ROM54から読み出した制御コードにもとづいてユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を実行することにより、パチンコ遊技機1における遊技制御を実行する制御用CPUである。こうした遊技制御が実行されるときには、CPU56がROM54から固定データを読み出す固定データ読出動作や、CPU56がRAM55に各種の変動データを書き込んで一時記憶させる変動データ書込動作、CPU56がRAM55に一時記憶されている各種の変動データを読み出す変動データ読出動作、CPU56が外部バスインタフェース501やPIP510、シリアル通信回路511などを介して遊技制御用マイクロコンピュータ560の外部から各種信号の入力を受け付ける受信動作、CPU56が外部バスインタフェース501やシリアル通信回路511などを介して遊技制御用マイクロコンピュータ560の外部へと各種信号を出力する送信動作等も行われる。
このように、遊技制御用マイクロコンピュータ560では、CPU56がROM54に格納されているプログラムに従って制御を実行するので、以下、遊技制御用マイクロコンピュータ560(またはCPU56)が実行する(または処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているマイクロコンピュータについても同様である。
遊技制御用マイクロコンピュータ560が備えるROM54には、ユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を示す制御コードや固定データ等が記憶されている。また、ROM54には、セキュリティチェックプログラム54Aが記憶されている。CPU56は、パチンコ遊技機1の電源投入やシステムリセットの発生に応じて遊技制御用マイクロコンピュータ560がセキュリティモードに移行したときに、ROM54に記憶されたセキュリティチェックプログラム54Aを読み出し、ROM54の記憶内容が変更されたか否かを検査するセキュリティチェック処理を実行する。なお、セキュリティチェックプログラム54Aは、ROM54とは異なる内蔵メモリに記憶されてもよい。また、セキュリティチェックプログラム54Aは、例えば外部バスインタフェース501を介して遊技制御用マイクロコンピュータ560に外付けされた外部メモリの記憶内容を検査するセキュリティチェック処理に対応したものであってもよい。
遊技制御用マイクロコンピュータ560が備えるRAM55は、ゲーム制御用のワークエリアを提供する。ここで、RAM55の少なくとも一部は、電源基板910において作成されるバックアップ電源によってバックアップされているバックアップRAMであればよい。すなわち、パチンコ遊技機1への電力供給が停止しても、所定期間はRAM55の少なくとも一部の内容が保存される。
遊技制御用マイクロコンピュータ560が備えるCTC508は、例えば8ビットのプログラマブルタイマを3チャネル(PTC0−PTC2)内蔵して構成され、リアルタイム割込みの発生や時間計測を可能とするタイマ回路を含んでいる。各プログラマブルタイマPTC0−PTC2は、内部システムクロックSCLKにもとづいて生成されたカウントクロックの信号変化(例えばハイレベルからローレベルへと変化する立ち下がりタイミング)などに応じて、タイマ値が更新されるものであればよい。また、CTC508は、例えば8ビットのプログラマブルカウンタを4チャネル(PCC0−PCC3)内蔵してもよい。各プログラマブルカウンタPCC0−PCC3は、内部システムクロックSCLKの信号変化、あるいは、プログラマブルカウンタPCC0−PCC3のいずれかにおけるタイムアウトの発生などに応じて、カウント値が更新されるものであればよい。CTC508は、セキュリティ時間を延長する際の延長時間(可変設定時間)をシステムリセット毎にランダムに決定するために用いられるフリーランカウンタなどを、含んでもよい。あるいは、こうしたフリーランカウンタは、例えばRAM55のバックアップ領域といった、CTC508とは異なる遊技制御用マイクロコンピュータ560の内部回路に含まれてもよい。
遊技制御用マイクロコンピュータ560が備える乱数回路509は、例えば16ビット乱数といった、所定の更新範囲を有する乱数値となる数値データを生成する回路である。この実施の形態では、乱数回路509が生成するハードウェア乱数は、大当りとするか否かを判定するための大当り判定用乱数(ランダムR)として用いられる。なお、CPU56は、乱数回路509から抽出した数値データにもとづき、乱数回路509とは異なるランダムカウンタを用いて、ソフトウェアによって各種の数値データを加工あるいは更新することで、遊技に用いられる乱数値の全部または一部を示す数値データをカウントするようにしてもよい。あるいは、CPU56は、乱数回路509を用いることなく、ソフトウェアによって大当り判定用乱数などの乱数値を示す数値データの一部をカウント(更新)するようにしてもよい。一例として、ハードウェアとなる乱数回路509からCPU56により抽出された数値データを、ソフトウェアにより加工することで、大当り判定用乱数(ランダムR)を示す数値データが更新され、それ以外の乱数値(例えば、大当り種別判定用乱数や、変動パターン種別決定用乱数、変動パターン決定用乱数)を示す数値データは、CPU56がランダムカウンタなどを用いてソフトウェアにより更新すればよい。
図16は、乱数回路509の一構成例を示すブロック図である。乱数回路509は、図16に示すように、周波数監視回路551、クロック用フリップフロップ552、乱数生成回路553、スタート値設定回路554、フリーランカウンタ554A、乱数列変更回路555、乱数列変更設定回路556、ラッチ用フリップフロップ557A、557B、乱数ラッチセレクタ558A、558B、乱数値レジスタ559A、559Bを備えて構成される。なお、乱数値レジスタ559Aと乱数値レジスタ559Bはそれぞれ、図11(B)に示すような遊技制御用マイクロコンピュータ560の内蔵レジスタに含まれる乱数値レジスタR1D(アドレス2038H−2039H)と乱数値レジスタR2D(アドレス203AH−203BH)に対応している。
周波数監視回路551は、乱数用クロック生成回路112により生成された乱数用クロックRCLKの乱数回路509に対する入力状態を監視して、その異常発生を検知するための回路である。周波数監視回路551は、例えば乱数用外部クロック端子ERCに入力される発振信号を監視して、内部システムクロックSCLKとの比較により、セキュリティ時間設定KSESのビット番号[7−6]における設定内容(図14(B)参照)に応じた周波数異常を検知したときに、内部情報レジスタCIFのビット番号[4]を“1”にセットする。この実施の形態では、乱数用外部クロック端子ERCに乱数用クロック生成回路112が生成した乱数用クロックRCLKが入力される。
クロック用フリップフロップ552は、例えばD型フリップフロップなどを用いて構成され、乱数用外部クロック端子ERCからの乱数用クロックRCLKがクロック端子CKに入力される。また、クロック用フリップフロップ552では、逆相出力端子(反転出力端子)QバーがD入力端子に接続されている。そして、正相出力端子(非反転出力端子)Qから乱数更新クロックRGKを出力する一方で、逆相出力端子(反転出力端子)Qバーからラッチ用クロックRC0を出力する。この場合、クロック用フリップフロップ552は、クロック端子CKに入力される乱数用クロックRCLKにおける信号状態が所定の変化をしたときに、正相出力端子(非反転出力端子)Qおよび逆相出力端子(反転出力端子)Qバーからの出力信号における信号状態を変化させる。例えば、クロック用フリップフロップ552は、乱数用クロックRCLKの信号状態がローレベルからハイレベルへと変化する立ち上がりのタイミング、あるいは、乱数用クロックRCLKの信号状態がハイレベルからローレベルへと変化する立ち下がりのタイミングのうち、いずれか一方のタイミングにて、D入力端子における入力信号を取り込む。このとき、正相出力端子(非反転出力端子)Qからは、D入力端子にて取り込まれた入力信号が反転されることなく出力される一方で、逆相出力端子(反転出力端子)Qバーからは、D入力端子にて取り込まれた入力信号が反転されて出力される。こうして、クロック用フリップフロップ552の正相出力端子(非反転出力端子)Qからは乱数用クロックRCLKにおける発振周波数(例えば20MHz)の1/2となる発振周波数(例えば10MHz)を有する乱数更新クロックRGKが出力される一方、逆相出力端子(反転出力端子)Qバーからは乱数更新クロックRGKの逆相信号(反転信号)、すなわち乱数更新クロックRGKと同一周波数で乱数更新クロックRGKとは位相がπ(=180°)だけ異なるラッチ用クロックRC0が出力される。
クロック用フリップフロップ552から出力された乱数更新クロックRGKは、乱数生成回路553のクロック端子に入力されて、乱数生成回路553におけるカウント値の歩進に用いられる。また、クロック用フリップフロップ552から出力されたラッチ用クロックRC0は、分岐点BR1にてラッチ用クロックRC1とラッチ用クロックRC2とに分岐される。したがって、ラッチ用クロックRC1とラッチ用クロックRC2とは、互いに同一の発振周波数を有し、互いに共通の周期で信号状態が変化することになる。ここで、ラッチ用クロックRC1やラッチ用クロックRC2における信号状態の変化としては、例えばローレベルからハイレベルへと変化する立ち上がりや、ハイレベルからローレベルへと変化する立ち下がりなどがある。ラッチ用クロックRC1は、ラッチ用フリップフロップ557Aのクロック端子CKに入力されて、始動入賞時ラッチ信号SL1の生成に用いられる乱数取得用クロックとなる。ラッチ用クロックRC2は、ラッチ用フリップフロップ557Bのクロック端子CKに入力されて、始動入賞時ラッチ信号SL2の生成に用いられる乱数取得用クロックとなる。
ここで、乱数用クロックRCLKの発振周波数と、制御用クロック生成回路111によって生成される制御用クロックCCLKの発振周波数とは、互いに異なる周波数となっており、また、いずれか一方の発振周波数が他方の発振周波数の整数倍になることがない。一例として、制御用クロックCCLKの発振周波数が11.0MHzである一方で、乱数用クロックRCLKの発振周波数は9.7MHzであればよい。そのため、乱数更新クロックRGKやラッチ用クロックRC1、RC2はいずれも、CPU56に供給される制御用クロックCCLKとは異なる周期で信号状態が変化する発振信号となる。すなわち、クロック用フリップフロップ552は、乱数用クロック生成回路112によって生成された乱数用クロックRCLKにもとづき、カウント値を更新するための乱数更新クロックRGKや、複数の乱数取得用クロックとなるラッチ用クロックRC1、RC2として、制御用クロックCCLKや内部システムクロックSCLK(制御用クロックCCLKを2分周したもの)とは異なる周期で信号状態が変化する発振信号を生成する。
乱数生成回路553は、例えば16ビットのカウンタなどから構成され、クロック用フリップフロップ552から出力される乱数更新クロックRGKなどの入力にもとづき、数値データを更新可能な所定の範囲において所定の初期値から所定の最終値まで循環的に更新する回路である。例えば乱数生成回路553は、所定のクロック端子への入力信号である乱数更新クロックRGKにおける立ち下がりエッジに応答して、「0」から「65535」までの範囲内で設定された初期値から「65535」まで1ずつ加算するように数値データをカウントアップして行く。そして、「65535」までカウントアップした後には、「0」から初期値よりも1小さい最終値となる数値まで1ずつ加算するようにカウントアップすることで、数値データを循環的に更新する。
スタート値設定回路554は、第2乱数初期設定KRS2のビット番号[1−0]におけるビット値(図13(B)参照)に応じて、乱数生成回路553により生成されるカウント値におけるスタート値を設定する。例えば、スタート値設定回路554は、第2乱数初期設定KRS2のビット番号[1−0]が“00”であればスタート値をデフォルト値である「0000H」に設定し、“10”であればIDナンバーにもとづく値に設定し、“01”であればシステムリセット毎に変更されるフリーランカウンタ554Aにおけるカウント値にもとづく値に設定し、“11”であればIDナンバーとフリーランカウンタ554Aにおけるカウント値とにもとづく値に設定する。図16に示す構成例では、乱数回路509にフリーランカウンタ554Aが内蔵されている。そして、スタート値をシステムリセット毎に変更する場合には、初期設定時にフリーランカウンタ554Aのカウント値をそのまま用いること、あるいは、そのカウント値を所定の演算関数(例えばハッシュ関数)に代入して得られた値を用いることなどにより、スタート値がランダムに決定されればよい。フリーランカウンタ554Aは、例えば遊技制御用マイクロコンピュータ560のRAM55におけるバックアップ領域といった、主基板31におけるバックアップ箇所と共通のバックアップ電源を用いてバックアップされるものであればよい。あるいは、フリーランカウンタ554Aは、RAM55におけるバックアップ領域などに用いられるバックアップ電源とは別個に設けられた電源によりバックアップされてもよい。こうして、フリーランカウンタ554Aがバックアップ電源によってバックアップされることで、電力供給が停止した場合でも、所定期間はフリーランカウンタ554Aにおけるカウント値が保存されることになる。
フリーランカウンタ554Aがバックアップ電源によってバックアップされるものに限定されず、例えばシステムリセットの発生時にフリーランカウンタ554Aのカウント値を所定の内蔵レジスタ(例えば乱数スタート値用レジスタ)に格納し、この内蔵レジスタがバックアップ電源によってバックアップされるようにしてもよい。そして、初期設定時に乱数スタート値用レジスタの格納値をそのまま用いること、あるいは、その格納値を所定の演算関数に代入して得られた値を用いることなどにより、スタート値がランダムに決定されてもよい。この場合、フリーランカウンタ554Aにおけるカウント値を読み出して乱数スタート値用レジスタに格納するタイミングは、システムリセットの発生時に限定されず、あらかじめ定められた任意のタイミングとしてもよい。フリーランカウンタ554Aは、乱数回路509に内蔵されて数値データのスタート値をランダムに決定するために用いられる専用のフリーランカウンタであってもよい。すなわち、フリーランカウンタ554Aは、セキュリティ時間を延長する際に延長時間のランダムな決定に用いられるフリーランカウンタとは別個の構成として設けられたものであってもよい。あるいは、フリーランカウンタ554Aとして、遊技制御用マイクロコンピュータ560には内蔵されるが乱数回路509の外部に設けられて、セキュリティ時間を延長する際に延長時間のランダムな決定に用いられるフリーランカウンタと共通のものを用いてもよい。この場合には、数値データのスタート値を決定する処理と、セキュリティ時間中の延長時間をランダムに決定する処理とにおいて、例えばカウント値を代入する演算関数を互いに異ならせること、あるいは、一方の決定処理ではカウント値をそのまま用いるのに対して他方の決定処理ではカウント値を所定の演算関数に代入して得られた値を用いることなどにより、スタート値の決定手法と延長時間の決定手法とを異ならせてもよい。
このように、フリーランカウンタ554Aは、乱数回路509に内蔵されるものに限定されず、例えばCTC508に含まれるものでもよい。あるいは、例えばRAM55のバックアップ領域といった、CTC508とは異なる遊技制御用マイクロコンピュータ560の内部回路に含まれてもよい。また、フリーランカウンタ554Aは、セキュリティ時間を延長する際の延長時間をシステムリセット毎にランダムに決定するために用いられるフリーランカウンタと、同一のカウンタであってもよいし、別個に設けられたカウンタであってもよい。
乱数列変更回路555は、乱数生成回路553により生成された数値データの順列を所定の乱数更新規則に従った順列に変更可能とする回路である。例えば、乱数列変更回路555は、乱数生成回路553から出力される数値データにおけるビットの入れ替えや転置などのビットスクランブル処理を実行する。また、乱数列変更回路555は、例えばビットスクランブル処理に用いるビットスクランブル用キーやビットスクランブルテーブルを変更することなどにより、数値データの順列を変更することができる。
乱数列変更設定回路556は、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値(図13(A)参照)などに応じて、乱数列変更回路555における乱数更新規則を変更する設定を行うための回路である。例えば、乱数列変更設定回路556は、第1乱数初期設定KRS1のビット番号[1−0]が“00”であれば2周目以降も乱数更新規則を変更しない設定とする一方、“01”であれば2周目以降はソフトウェアでの変更要求に応じて乱数更新規則を変更し、“10”であれば自動で乱数更新規則を変更する。
乱数列変更回路556は、第1乱数初期設定KRS1のビット番号[1−0]が“01”であることに対応してソフトウェアによる乱数更新規則の変更を行う場合に、図11(B)に示すような遊技制御用マイクロコンピュータ560が備える内蔵レジスタのうち、乱数列変更レジスタRDSC(アドレス2034H)を用いて、乱数更新規則の変更を制御する。図17(A)は、乱数列変更レジスタRDSCの構成例を示している。図17(B)は、乱数列変更レジスタRDSCに格納される乱数列変更要求データの各ビットにおける設定内容の一例を示している。乱数列変更レジスタRDSCのビット番号[0]に格納される乱数列変更要求データRDSC0は、乱数更新規則をソフトウェアにより変更する場合に、乱数列の変更要求の有無を示している。図17(B)に示す例では、ソフトウェアにより乱数列の変更要求がないときに、乱数列変更要求データRDSC0のビット値が“0”となる一方、乱数列の変更要求があったときには、そのビット値が“1”となる。
図18は、乱数更新規則をソフトウェアにより変更する場合の動作例を示している。この場合、乱数生成回路553から出力されるカウント値順列RCNが所定の初期値から所定の最終値まで循環的に更新されたときに、乱数列変更要求データRDSC0が“1”であることに応答して、乱数更新規則を変更する。図18に示す動作例では、始めに乱数列変更回路555から出力される乱数列RSNが、「0→1→…→65535」となっている。この後、CPU56がROM54に格納されたユーザプログラムを実行することによって、所定のタイミングで乱数列変更レジスタRDSCのビット番号[0]に“1”が書き込まれたものとする。
そして、第1乱数初期設定KRS1のビット番号[1−0]が“01”であることに対応して、乱数列変更設定回路556が乱数列変更要求データRDSC0を読み出し、そのビット値が“1”であることに応答して、乱数更新規則を変更するための設定を行う。このとき、乱数列変更設定回路556は、乱数生成回路553から出力されたカウント値順列RCNが所定の最終値に達したことに応じて、例えばあらかじめ用意された複数種類の乱数更新規則のいずれかを選択することなどにより、乱数更新規則を変更する。図18に示す動作例では、乱数列変更回路555が乱数生成回路553から出力されたカウント値順列RCNにおける最終値に対応する数値データ「65535」を出力した後、乱数列変更要求データRDSC0に応じて乱数更新規則を変更する。その後、乱数列変更回路555は、変更後の乱数更新規則に従った乱数列RSNとして、「65535→65534→…→0」を出力する。乱数列変更レジスタRDSCは、乱数列変更設定回路556により乱数列変更要求データRDSC0が読み出されたときに初期化される。そのため、再び乱数列変更レジスタRDSCのビット番号[0]にビット値“1”が書き込まれるまでは、乱数列変更回路555から出力される乱数列RSNが、「65535→65534→…→0」となる。
CPU56がROM54に格納されたユーザプログラムを実行することによって、乱数列変更レジスタRDSCのビット番号[0]に再びビット値“1”が書き込まれると、乱数更新規則が再度変更される。図18に示す動作例では、乱数列変更回路555が乱数列RSNにおける最終値に対応する数値データ「0」を出力したときに、乱数列変更要求データRDSC0としてビット値“1”が書き込まれたことに応じて乱数更新規則を変更する。その後、乱数列変更回路555は、変更後の乱数更新規則に従った乱数列RSNとして、「0→2→…→65534→1→…→65535」を出力する。
図19は、乱数更新規則を自動で変更する場合の動作例を示している。この場合、乱数生成回路553から出力されるカウント値順列RCNが所定の初期値から所定の最終値まで循環的に更新されたことに応じて、乱数列変更設定回路556が自動的に乱数更新規則を変更する。図19に示す動作例では、始めに乱数列変更回路555から出力される乱数列RSNが、「0→1→…→65535」となっている。
そして、乱数変更回路555から出力された乱数列RSNが所定の最終値に達したときに、乱数列変更設定回路556は、あらかじめ用意された複数種類の更新規則のうちからあらかじめ定められた順序に従って更新規則を選択することにより、更新規則を変更するようにしてもよい。あるいは、乱数列変更設定回路556は、複数種類の更新規則のうちから任意の更新規則を選択することにより、更新規則を変更するようにしてもよい。図19に示す動作例では、1回目の乱数更新規則の変更により、乱数列変更回路555から出力される乱数列RSNが、「65535→65534→…→0」となる。その後、2回目の乱数更新規則の変更により、乱数列変更回路555から出力される乱数列RSNは、「0→2→…→65534→1→…→65535」となる。図19に示す動作例では、3回目の乱数更新規則の変更により、乱数列変更回路555から出力される乱数列RSNは、「65534→0→…→32768」となる。4回目の乱数更新規則の変更が行われたときには、乱数列変更回路555から出力される乱数列RSNが、「16383→49151→…→49150」となる。5回目の乱数更新規則の変更が行われたときには、乱数列変更回路555から出力される乱数列RSNが、「4→3→…→465531」となる。
このように、乱数列変更回路555は、乱数生成回路553から出力されたカウント値順列RCNを、乱数列変更設定回路556の設定によりあらかじめ定められた乱数更新規則にもとづいて変更することで、数値データを所定手順により更新した乱数列RSNを出力することができる。
ラッチ用フリップフロップ557A、557Bはそれぞれ、例えばD型フリップフロップなどを用いて構成される。ラッチ用フリップフロップ557Aでは、D入力端子にPIP510が備える入力ポートP0からの配線が接続され、クロック端子CKにラッチ用クロックRC1を伝送する配線が接続されている。この実施の形態では、入力ポートP0に始動口スイッチ14aからの始動入賞信号SSが入力される。ラッチ用フリップフロップ557Aは、ラッチ用クロックRC1の立ち下がりエッジなどに応答して、始動入賞信号SSを取り込み、始動入賞時ラッチ信号SL1として出力する。これにより、ラッチ用フリップフロップ557Aでは、ラッチ用クロックRC1の立ち下がりエッジに同期して、始動入賞信号SSが始動入賞時ラッチ信号SL1として出力される。ラッチ用フリップフロップ557Bでは、D入力端子にPIP510が備える入力ポートP1からの配線が接続され、クロック端子CKにラッチ用クロックRC2を伝送する配線が接続されている。この実施の形態では、入力ポートP1にも始動口スイッチ14aからの始動入賞信号SSが入力される。ラッチ用フリップフロップ557Bは、ラッチ用クロックRC2の立ち下がりエッジなどに応答して、始動入賞信号SSを取り込み、始動入賞時ラッチ信号SL2として出力する。これにより、ラッチ用フリップフロップ557Bでは、ラッチ用クロックRC2の立ち下がりエッジに同期して、始動入賞信号SSが始動入賞時ラッチ信号SL2として出力される。なお、例えば、遊技機が2つの始動入賞口を備える場合には、一方の始動口スイッチからの始動入賞信号が始動入賞時ラッチ信号SL1として出力され、他方の始動口スイッチからの始動入賞信号が始動入賞時ラッチ信号SL2として出力されるようにしてもよい。
なお、始動入賞信号SSは、始動口スイッチ14aから直接伝送されるものに限定されない。一例として、始動口スイッチ14aからの出力信号がオン状態となっている時間を計測し、計測した時間が所定の時間(例えば3ms)になったときに、始動入賞信号SSを出力するタイマ回路を設けてもよい。
乱数ラッチセレクタ558Aは、ラッチ用フリップフロップ557Aから伝送される始動入賞時ラッチ信号SL1と、ソフトウェアによる乱数ラッチ要求信号とを取り込み、いずれかを乱数ラッチ信号LL1として選択的に出力する回路である。乱数ラッチセレクタ558Bは、ラッチ用フリップフロップ557Bから伝送される始動入賞時ラッチ信号SL2と、ソフトウェアによる乱数ラッチ要求信号とを取り込み、いずれかを乱数ラッチ信号LL1として選択的に出力する回路である。乱数ラッチセレクタ558Aと乱数ラッチセレクタ558Bは、図11(B)に示すような遊技制御用マイクロコンピュータ560が備える内蔵レジスタのうち、乱数値取込レジスタRDLT(アドレス2032H)と、乱数ラッチ選択レジスタRDLS(アドレス2030H)とを用いて、乱数ラッチ信号LL1や乱数ラッチ信号LL2の出力を制御する。乱数値取込レジスタRDLTは、乱数列変更回路555から出力された乱数列RSNにおける数値データを、ソフトウェアにより乱数値レジスタ559Aや乱数値レジスタ559Bに取り込むために用いられるレジスタである。乱数ラッチ選択レジスタRDLSは、乱数列変更回路555から出力された乱数列RSNにおける数値データを、乱数値レジスタ559Aや乱数値レジスタ559Bに、ソフトウェアにより取り込むか、入力ポートP0、P1への信号入力により取り込むかの取込方法を示すレジスタである。
図20(A)は、乱数値取込レジスタRDLTの構成例を示している。図20(B)は、乱数値取込レジスタRDLTに格納される乱数値取込指定データの各ビットにおける設定内容の一例を示している。乱数値取込レジスタRDLTのビット番号[1]に格納される乱数値取込指定データRDLT1は、乱数値レジスタR2Dとなる乱数値レジスタ559Bに対する乱数値取込指定の有無を示している。図20(B)に示す例では、ソフトウェアにより乱数値レジスタR2Dに対する乱数値の取込指定がないときに、乱数値取込指定データRDLT1のビット値が“0”となる一方、乱数値の取込指定があったときには、そのビット値が“1”となる。乱数値取込レジスタRDLTのビット番号[0]に格納される乱数値取込指定データRDLT0は、乱数値レジスタR1Dとなる乱数値レジスタ559Aに対する乱数値取込指定の有無を示している。図20(B)に示す例では、ソフトウェアにより乱数値レジスタR1Dに対する乱数値の取込指定がないときに、乱数値取込指定データRDLT0のビット値が“0”となる一方、乱数値の取込指定があったときには、そのビット値が“1”となる。
図21(A)は、乱数ラッチ選択レジスタRDLSの構成例を示している。図21(B)は、乱数ラッチ選択レジスタRDLSに格納される乱数ラッチ選択データの各ビットにおける設定内容の一例を示している。乱数ラッチ選択レジスタRDLSのビット番号[1]に格納される乱数ラッチ選択データRDLS1は、乱数値レジスタR2Dとなる乱数値レジスタ559Bへの取込方法を示している。図21(B)に示す例では、ソフトウェアによる乱数値取込指定データRDLT1の書き込みに応じて乱数値となる数値データを乱数値レジスタR2Dに取り込む場合に、乱数ラッチ選択データRDLS1のビット値を“0”とする。これに対して、入力ポートP1への信号入力に応じて乱数値となる数値データを乱数値レジスタR2Dに取り込む場合には、乱数ラッチ選択データRDLS1のビット値を“1”とする。乱数ラッチ選択レジスタRDLSのビット番号[0]に格納される乱数ラッチ選択データRDLS0は、乱数値レジスタR1Dとなる乱数値レジスタ559Aへの取込方法を示している。図21(B)に示す例では、ソフトウェアによる乱数値取込指定データRDLT0の書き込みに応じて乱数値となる数値データを乱数値レジスタR1Dに取り込む場合に、乱数ラッチ選択データRDLS0のビット値を“0”とする。これに対して、入力ポートP0への信号入力に応じて乱数値となる数値データを乱数値レジスタR1Dに取り込む場合には、乱数ラッチ選択データRDLS0のビット値を“1”とする。
乱数値レジスタ559A、559Bはそれぞれ、乱数列変更回路555から出力された乱数列RSNにおける数値データを乱数値として格納するレジスタである。図22(A)および(B)は、乱数値レジスタR1Dとなる乱数値レジスタ559Aの構成例を示している。なお、図22(A)は、乱数値レジスタR1Dの下位バイトR1D(L)を示し、図22(B)は、乱数値レジスタR1Dの上位バイトR1D(H)を示している。図22(C)および(D)は、乱数値レジスタR2Dとなる乱数値レジスタ559Bの構成例を示している。なお、図22(C)は、乱数値レジスタR2Dの下位バイトR2D(L)を示し、図22(D)は、乱数値レジスタR2Dの上位バイトR2D(H)を示している。乱数値レジスタ559A、559Bはいずれも16ビット(2バイト)のレジスタであり、16ビットの乱数値を格納することができる。
乱数値レジスタ559Aは、乱数ラッチセレクタ558Aから供給される乱数ラッチ信号LL1がオン状態となったことに応答して、乱数列変更回路555から出力された乱数列RSNにおける数値データを乱数値として取り込んで格納する。乱数値レジスタ559Aは、CPU56から供給されるレジスタリード信号RRS1がオン状態となったときに、読出可能(イネーブル)状態となり、格納されている数値データを内部バス等に出力する。これに対して、レジスタリード信号RRS1がオフ状態であるときには、常に同じ値(例えば「65535H」など)を出力して、読出不能(ディセーブル)状態となればよい。また、乱数値レジスタ559Aは、乱数ラッチ信号LL1がオン状態である場合に、レジスタリード信号RRS1を受信不可能な状態となるようにしてもよい。さらに、乱数値レジスタ559Aは、乱数ラッチ信号LL1がオン状態となるより前にレジスタリード信号RRS1がオン状態となっている場合に、乱数ラッチ信号LL1を受信不可能な状態となるようにしてもよい。
乱数値レジスタ559Bは、乱数ラッチセレクタ558Bから供給される乱数ラッチ信号LL2がオン状態となったことに応答して、乱数列変更回路555から出力された乱数列RSNにおける数値データを乱数値として取り込んで格納する。乱数値レジスタ559Bは、CPU56から供給されるレジスタリード信号RRS2がオン状態となったときに、読出可能(イネーブル)状態となり、格納されている数値データを内部バス等に出力する。これに対して、レジスタリード信号RRS2がオフ状態であるときには、常に同じ値(例えば「65535H」など)を出力して、読出不能(ディセーブル)状態となればよい。また、乱数値レジスタ559Bは、乱数ラッチ信号LL2がオン状態である場合に、レジスタリード信号RRS2を受信不可能な状態となるようにしてもよい。さらに、乱数値レジスタ559Bは、乱数ラッチ信号LL2がオン状態となるより前にレジスタリード信号RRS2がオン状態となっている場合に、乱数ラッチ信号LL2を受信不可能な状態となるようにしてもよい。
乱数値レジスタ559Aと乱数値レジスタ559Bは、図11(B)に示すような遊技制御用マイクロコンピュータ560が備える内蔵レジスタのうち、乱数ラッチフラグレジスタRDFM(アドレス2033H)と、乱数割込み制御レジスタRDIC(アドレス2031H)とを用いて、乱数ラッチ時の動作管理や割込み制御を可能にする。乱数ラッチフラグレジスタRDFMは、乱数値レジスタ559Aと乱数値レジスタ559Bのそれぞれに対応して、乱数値となる数値データがラッチされたか否かを示す乱数ラッチフラグを格納するレジスタである。例えば、乱数ラッチフラグレジスタRDFMでは、乱数値レジスタ559Aと乱数値レジスタ559Bのそれぞれに対応した乱数ラッチフラグの状態(オンまたはオフ)を示すデータが格納され、乱数値レジスタ559Aや乱数値レジスタ559Bに数値データが取り込まれて格納されたときに対応する乱数ラッチフラグがオン状態となり新たな数値データの格納が制限される一方、乱数値レジスタ559Aや乱数値レジスタ559Bに格納された数値データが読み出されたときに対応する乱数ラッチフラグがオフ状態となり新たな数値データの格納が許可される。乱数割込み制御レジスタRDICは、乱数値レジスタ559Aや乱数値レジスタ559Bに乱数値となる数値データがラッチされたときに発生する割込みの許可/禁止を設定するレジスタである。
図23(A)は、乱数ラッチフラグレジスタRDFMの構成例を示している。図23(B)は、乱数ラッチフラグレジスタRDFMに格納される乱数ラッチフラグデータの各ビットにおける設定内容の一例を示している。乱数ラッチフラグレジスタRDFMのビット番号[1]に格納される乱数ラッチフラグデータRDFM1は、乱数値レジスタR2Dとなる乱数値レジスタ559Bに数値データが取り込まれたか否かを示す乱数ラッチフラグとなる。図23(B)に示す例では、乱数値レジスタR2Dに数値データが取り込まれていないときに(乱数値取込なし)、乱数ラッチフラグデータRDFM1のビット値が“0”となって乱数ラッチフラグがオフ状態にクリアされる一方、数値データが取り込まれたときには(乱数値取込あり)、そのビット値が“1”となって乱数ラッチフラグがオン状態にセットされる。乱数ラッチフラグレジスタRDFMのビット番号[0]に格納される乱数ラッチフラグデータRDFM0は、乱数値レジスタR1Dとなる乱数値レジスタ559Aに数値データが取り込まれたか否かを示す乱数ラッチフラグとなる。図23(B)に示す例では、乱数値レジスタR1Dに数値データが取り込まれていないときに(乱数値取込なし)、乱数ラッチフラグデータRDFM0のビット値が“0”となって乱数ラッチフラグがオフ状態にクリアされる一方、数値データが取り込まれたときには(乱数値取込あり)、そのビット値が“1”となって乱数ラッチフラグがオン状態にセットされる。
各乱数ラッチフラグがオンであるときには、各乱数ラッチフラグと対応付けられた乱数値レジスタR1Dあるいは乱数値レジスタR2Dにおける新たな数値データの格納が制限(禁止)される。すなわち、乱数値レジスタR1Dに数値データが取り込まれたか否かを示す乱数ラッチフラグデータRDFM0のビット値が“1”となって乱数ラッチフラグがオン状態であるときには、乱数値レジスタR1Dに格納された数値データを変更することができず、新たな数値データの格納(取り込み)が制限(禁止)される。また、乱数値レジスタR2Dに乱数値データが取り込まれたか否かを示す乱数ラッチフラグデータRDFM1のビット値が“1”となって乱数ラッチフラグがオン状態であるときには、乱数値レジスタR2Dに格納された数値データを変更することができず、新たな数値データの格納(取り込み)が制限(禁止)される。これに対して、各乱数ラッチフラグがオフであるときには、各乱数ラッチフラグと対応付けられた乱数値レジスタR1Dあるいは乱数値レジスタR2Dにおける新たな数値データの格納が許可される。すなわち、乱数ラッチフラグデータRDFM0のビット値が“0”となって乱数ラッチフラグがオフ状態であるときには、乱数値レジスタR1Dに格納された数値データを変更することができ、新たな数値データの格納(取り込み)が許可される。また、乱数ラッチフラグデータRDFM1のビット値が“0”となって乱数ラッチフラグがオフ状態であるときには、乱数値レジスタR2Dに格納された数値データを変更することができ、新たな数値データの格納(取り込み)が許可される。
なお、乱数ラッチフラグデータRDFM0や乱数ラッチフラグデータRDFM1のビット値は、“0”となることで対応する乱数ラッチフラグがオフ状態にクリアされる一方で“1”となることでオン状態にセットされる正論理のものに限定されず、“1”となることで対応する乱数ラッチフラグがオフ状態となる一方で“0”となることでオン状態となる負論理のものであってもよい。すなわち、各乱数ラッチフラグは、対応する乱数値レジスタR1Dまたは乱数値レジスタR2Dに数値データが格納されたときにオン状態となり新たな数値データの格納が制限(禁止)される一方で、対応する乱数値レジスタR1Dまたは乱数値レジスタR2Dの読み出しが行われたときにオフ状態となり新たな数値データの格納が許可されるものであればよい。
図24(A)は、乱数割込み制御レジスタRDICの構成例を示している。図24(B)は、乱数割込み制御レジスタRDICに格納される乱数割込み制御データの各ビットにおける設定内容の一例を示している。乱数割込み制御レジスタRDICのビット番号[1]に格納される乱数割込み制御データRDIC1は、乱数値レジスタR2Dとなる乱数値レジスタ559Bに数値データが取り込まれたときに発生する割込みを、許可するか禁止するかの割込み制御設定を示している。図24(B)に示す例では、乱数値レジスタR2Dへの取込時における割込みを禁止する場合に(割込み禁止)、乱数割込み制御データRDIC1のビット値を“0”とする一方、この割込みを許可する場合には(割込み許可)、そのビット値を“1”とする。乱数割込み制御レジスタRDICのビット番号[0]に格納される乱数割込み制御データRDIC0は、乱数値レジスタR1Dとなる乱数値レジスタ559Aに数値データが取り込まれたときに発生する割込みを、許可するか禁止するかの割込み制御設定を示している。図24(B)に示す例では、乱数値レジスタR1Dへの取込時における割込みを禁止する場合に(割込み禁止)、乱数割込み制御データRDIC0のビット値を“0”とする一方、この割込みを許可する場合には(割込み許可)、そのビット値を“1”とする。
なお、図9に示す構成例では、乱数回路509が遊技制御用マイクロコンピュータ560に内蔵されている。これに対して、例えば図25に示すように、乱数回路509は、遊技制御用マイクロコンピュータ560とは異なる乱数回路チップとして、遊技制御用マイクロコンピュータ560に外付けされるものであってもよい。この場合、始動口スイッチ14aからの始動入賞信号SSをスイッチ回路114の内部にて分岐し、一方を遊技制御用マイクロコンピュータ560が備えるPIP510の入力ポートP0へと入力させて、他方を乱数回路509が備えるラッチ用フリップフロップ557A,557BのD入力端子へと入力させればよい。遊技制御用マイクロコンピュータ560との間では、例えば遊技制御用マイクロコンピュータ560が備えるクロック回路502からシステムクロック出力端子CLKOを介して出力された内部システムクロックSCLKを乱数回路509が備える周波数監視回路551やクロック用フリップフロップ552へと入力させたり、遊技制御用マイクロコンピュータ560が備える外部バスインタフェース501に接続されたアドレスバスやデータバス、制御信号線などを介して、乱数値レジスタR1Dや乱数値レジスタR2Dに格納された数値データの読み出しなどが行われたりすればよい。
また、図25に示すように乱数回路509が遊技制御用マイクロコンピュータ560に外付けされる場合にも、各乱数ラッチフラグの状態(オン/オフ)に応じて、乱数値レジスタR1Dや乱数値レジスタR2Dへの新たな数値データの格納が制限(禁止)あるいは許可されるようにすればよい。図11(B)に示す内蔵レジスタのうち、例えば乱数ラッチ選択レジスタRDLSや乱数割込み制御レジスタRDIC、乱数値取込レジスタRDLT、乱数ラッチフラグレジスタRDFM、乱数列変更レジスタRDSC、乱数値レジスタR1D、乱数値レジスタR2Dといった、乱数回路509が使用する各種レジスタは、遊技制御用マイクロコンピュータ560には内蔵されず、遊技制御用マイクロコンピュータ560に外付けされた乱数回路509に内蔵されるようにしてもよい。この場合、遊技制御用マイクロコンピュータ560のCPU56は、例えば外部バスインタフェース501などを介して、乱数回路509に内蔵された各種レジスタの書き込みや読み出しを行うようにすればよい。
図9に示す遊技制御用マイクロコンピュータ560が備えるPIP510は、例えば6ビット幅の入力専用ポートであり、専用端子となる入力ポートP0〜入力ポートP2と、機能兼用端子となる入力ポートP3〜入力ポートP5とを含んでいる。入力ポートP3は、CPU56等に接続される外部マスカブル割込み端子XINTと兼用される。入力ポートP4は、CPU56等に接続される外部ノンマスカブル割込み端子XNMIと兼用される。入力ポートP5は、シリアル通信回路511が使用する第1チャネル受信端子RXAと兼用される。入力ポートP3〜入力ポートP5の使用設定は、プログラム管理エリアに記憶される機能設定KFCSにより指示される。
PIP510は、図11(B)に示すような遊技制御用マイクロコンピュータ560が備える内蔵レジスタのうち、入力ポートレジスタPI(アドレス2090H)などを用いて、入力ポートP0〜入力ポートP5の状態管理等を行う。入力ポートレジスタPIは、入力ポートP0〜入力ポートP5のそれぞれに対応して、外部信号の入力状態を示すビット値が格納されるレジスタである。
図26(A)は、入力ポートレジスタPIの構成例を示している。図26(B)は、入力ポートレジスタPIに格納される入力ポートデータの各ビットにおける設定内容の一例を示している。入力ポートレジスタPIのビット番号[5]に格納される入力ポートデータPI5は、第1チャネル受信端子RXAと兼用される入力ポートP5における端子状態(オン/オフ)を示している。入力ポートレジスタPIのビット番号[4]に格納される入力ポートデータPI4は、外部ノンマスカブル割込み端子XNMIと兼用される入力ポートP4における端子状態(オン/オフ)を示している。入力ポートレジスタPIのビット番号[3]に格納される入力ポートデータPI3は、外部マスカブル割込み端子XINTと兼用される入力ポートP3における端子状態(オン/オフ)を示している。入力ポートレジスタPIのビット番号[2]に格納される入力ポートデータPI2は、入力ポートP2における端子状態(オン/オフ)を示している。入力ポートレジスタPIのビット番号[1]に格納される入力ポートデータPI1は、入力ポートP1における端子状態(オン/オフ)を示している。入力ポートレジスタPIのビット番号[0]に格納される入力ポートデータPI0は、入力ポートP0における端子状態(オン/オフ)を示している。
次に、シリアル通信回路511の構成について説明する。シリアル通信回路511は、全二重方式、非同期方式および標準NRZ(ノンリターンゼロ)符号化を用いたデータフォーマットで、各制御基板(例えば、払出制御基板37や演出制御基板80)のマイクロコンピュータとシリアル通信を行う。シリアル通信回路511は、各制御基板のマイクロコンピュータに各種データ(例えば、賞球個数コマンドや演出制御コマンド)を送信する送信部と、各制御基板のマイクロコンピュータからの各種データ(例えば、賞球ACKコマンド)を受信する受信部とを含む。
図27は、シリアル通信回路511の送信部の構成例を示すブロック図である。また、図28は、シリアル通信回路511の受信部の構成例を示すブロック図である。シリアル通信回路511は、ボーレートレジスタ702、ボーレート生成回路703、2つのステータスレジスタ705,706、3つの制御レジスタ707,708,709、送信データレジスタ710、受信データレジスタ711、送信用シフトレジスタ712、受信用シフトレジスタ713、割り込み制御回路714、送信フォーマット/パリティ生成回路715および受信フォーマット/パリティチェック回路716を含む。また、図27に示すように、シリアル通信回路511の送信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタA705、制御レジスタ707,708,709、送信データレジスタ710、送信用シフトレジスタ712、割り込み制御回路714および送信フォーマット/パリティ生成回路715によって構成される。また、図28に示すように、シリアル通信回路511の受信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタ705,706、制御レジスタ707,708,709、受信データレジスタ711、受信用シフトレジスタ713、割り込み制御回路714および受信フォーマット/パリティチェック回路716によって構成される。
なお、シリアル通信回路511において、送信部と受信部とは、実際には、共通の回路を用いて構成される。そして、シリアル通信回路511は、上記に示したように、シリアル通信回路511の各構成要素を使い分けて用いることによって、送信回路又は受信回路として機能する。
まず、シリアル通信回路511が各制御基板が搭載するマイクロコンピュータと送受信するデータのデータフォーマットを説明する。図29は、シリアル通信回路511が各制御基板に搭載されるマイクロコンピュータと送受信するデータのデータフォーマットの例を示す説明図である。図29に示すように、シリアル通信回路511が送受信するデータのデータフォーマットは、スタートビット、データおよびストップビットを1フレームとして構成される。また、シリアル通信回路511が送受信するデータのデータ長は、後述するシリアル通信回路設定処理において初期設定を行えば、8ビットまたは9ビットのいずれかに設定できる。図29(a)は、データ長を8ビットに設定した場合のデータフォーマットの例である。また、図29(b)は、データ長を9ビットに設定した場合のデータフォーマットの例である。
図29に示すように、シリアル通信回路511が送受信するデータのデータフォーマットは、ハイレベル(論理「1」)のアイドルラインのあとに、1フレームの始まりであることを示すスタートビット(論理「0」)を含む。また、データフォーマットは、スタートビットのあとに、8ビットまたは9ビットの送受信データを含む。そして、データフォーマットは、送受信データのあとに、1フレームの終わりであることを示すストップビット(論理「1」)を含む。
シリアル通信回路511は、図29に示すデータフォーマットに従って、送受信データの最下位ビット(ビット0)から先にデータを送受信する。また、後述するシリアル通信回路設定処理において初期設定を行えば、送受信データにパリティビットを付加するように設定することもできる。パリティビットを付加するように設定した場合、送受信データの最上位ビットがパリティビット(奇数パリティまたは偶数パリティ)として用いられる。例えば、データ長を8ビットに設定した場合、送受信データのビット7がパリティビットとして用いられる。また、例えば、データ長を9ビットに設定した場合、送受信データのビット8がパリティビットとして用いられる。
ボーレート生成回路703は、クロック回路501が出力するクロック信号およびボーレートレジスタ702に設定されている設定値(ボーレート設定値ともいう)にもとづいて、シリアル通信回路511が用いるボーレートを生成する。この場合、ボーレート生成回路703は、クロック信号およびボーレート設定値にもとづいて、所定の計算式を用いてボーレートを求める。例えば、ボーレート生成回路703は、式(1)を用いて、シリアル通信回路511が用いるボーレートを求める。
ボーレート=クロック周波数/(ボーレート設定値×16) 式(1)
図30は、ボーレートレジスタ702の例を示す説明図である。ボーレートレジスタ702は、ボーレート生成回路703が生成するボーレートの値を指定するための所定の設定値を設定するレジスタである。例えば、ボーレートレジスタ702が式(1)を用いてボーレートを求めるものとし、クロック周波数が3MHzであるとする。この場合、所望の目標ボーレートが1200bpsであるとすると、ボーレートレジスタ702に設定値「156」を設定する。すると、ボーレート生成回路703は、クロック周波数「3MHz」およびボーレート設定値「156」にもとづいて、式(1)を用いて、ボーレート「1201.92bps」を生成する。ボーレートレジスタ702は、16ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ボーレートレジスタ702は、ビット0〜ビット12が書込および読出ともに可能な状態に構成されている。また、ボーレートレジスタ702は、ビット13〜ビット15が書込および読出ともに不可能な状態に構成されている。したがって、ボーレートレジスタ702のビット13〜ビット15に値を書き込む制御を行っても無効とされ、ビット13〜ビット15から読み出す値は全て「0(=000b)」である。
図31(A)は、制御レジスタA707の例を示す説明図である。制御レジスタA707は、シリアル通信回路511の通信フォーマットを設定するレジスタである。この実施の形態では、制御レジスタA707の各ビットの値が設定されることによって、シリアル通信回路511の通信フォーマットが設定される。制御レジスタA707には、送受信データのデータ形式や各種通信方式等の通信フォーマットを設定するための通信フォーマット設定データが設定される。図31(A)に示すように、制御レジスタA707は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタA707は、ビット0〜ビット4が書込および読出ともに可能な状態に構成されている。また、制御レジスタA707は、ビット5〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、制御レジスタA707のビット5〜ビット7に値を書き込む制御を行っても無効とされ、ビット5〜ビット7から読み出す値は全て「0(=000b)」である。
図31(B)は、制御レジスタA707に設定される通信フォーマット設定データの一例の説明図である。図31(B)に示すように、制御レジスタA707のビット4(ビット名「M」)には、送受信するデータのデータ長を設定するための設定データが設定される。図31(B)に示すように、ビット4を「0」に設定することによって、送受信データのデータ長が8ビットに設定される。また、ビット4を「1」に設定することによって、送受信データのデータ長が9ビットに設定される。
制御レジスタA707のビット3(ビット名「WAKE」)には、スタンバイ状態の受信回路(シリアル通信回路511の受信部)をウエイクアップする(オンライン状態にさせる)ウエイクアップ方式を設定するための設定データが設定される。図31(B)に示すように、ビット3を「0」に設定することによって、アイドルラインを認識したときにウエイクアップするアイドルラインウエイクアップ方式が設定される。また、ビット3を「1」に設定することによって、所定のアドレスマークを認識することによってウエイクアップするアドレスマークウエイクアップ方式が設定される。
制御レジスタA707のビット2(ビット名「ILT」)には、受信データのアイドルラインの検出方式を選択するための設定データが設定される。図31(B)に示すように、ビット2を「0」に設定することによって、受信データに含まれるスタートビットの後からアイドルラインを検出する検出方式が設定される。また、ビット2を「1」に設定することによって、受信データに含まれるストップビットの後からアイドルラインを検出する検出方式が設定される。
制御レジスタA707のビット1(ビット名「PE」)には、パリティ機能を使用するか否かを設定するための設定データが設定される。図31(B)に示すように、ビット1を「0」に設定することによって、パリティ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、パリティ機能を使用するように設定される。
制御レジスタA707のビット0(ビット名「PT」)には、パリティ機能を使用すると設定した場合のパリティの種類を設定するための設定データが設定される。図31(B)に示すように、ビット0を「0」に設定することによって、パリティの種類として偶数パリティが設定される。また、ビット0を「1」に設定することによって、パリティの種類として奇数パリティが設定される。
図32(A)は、制御レジスタB708の例を示す説明図である。制御レジスタB708は、シリアル通信回路511の割り込み要求を許可するか否かを設定するレジスタである。この実施の形態では、制御レジスタB708の各ビットの値が設定されることによって、シリアル通信回路511からの割り込み要求を許可するか禁止するかが設定される。制御レジスタB708には、各種割り込み要求を許可するか否かを示す割り込み要求設定データが主として設定される。なお、制御レジスタB708には、割り込み要求設定データ以外に、シリアル通信回路511の各種設定を行うための設定データも設定される。図32(A)に示すように、制御レジスタB708は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタB708は、ビット0〜ビット7が書込および読出ともに可能な状態に構成されている。
図32(B)は、制御レジスタB708に設定される割り込み要求設定データの一例を示す説明図である。図32(B)に示すように、制御レジスタB708のビット7(ビット名「TIE」)には、データの送信時に行う割り込み要求である送信割り込み要求を許可するか否かを示す設定データが設定される。図32(B)に示すように、ビット7を「0」に設定することによって、送信割り込み要求を禁止するように設定される。また、ビット7を「1」に設定することによって、送信割り込み要求を許可するように設定される。
制御レジスタB708のビット6(ビット名「TCIE」)には、データの送信完了時に行う割り込み要求である送信完了割り込み要求を許可するか否かを示す設定データが設定される。図32(B)に示すように、ビット6を「0」に設定することによって、送信完了割り込み要求を禁止するように設定される。また、ビット6を「1」に設定することによって、送信完了割り込み要求を許可するように設定される。
制御レジスタB708のビット5(ビット名「RIE」)には、データの受信時に行う割り込み要求である受信割り込み要求を許可するか否かを示す設定データが設定される。図32(B)に示すように、ビット5を「0」に設定することによって、受信割り込み要求を禁止するように設定される。また、ビット5を「1」に設定することによって、受信割り込み要求を許可するように設定される。
制御レジスタB708のビット4(ビット名「ILIE」)には、受信データのアイドルラインを検出したときに行う割り込み要求であるアイドルライン割り込み要求を許可するか否かを示す設定データが設定される。図32(B)に示すように、ビット4を「0」に設定することによって、アイドルライン割り込み要求を禁止するように設定される。また、ビット4を「1」に設定することによって、アイドルライン割り込み要求を許可するように設定される。
制御レジスタB708のビット3(ビット名「TE」)には、送信回路(シリアル通信回路511の送信部)を使用するか否かを示す設定データが設定される。図32(B)に示すように、ビット3を「0」に設定することによって、送信回路を使用しないように設定される。また、ビット3を「1」に設定することによって、送信回路を使用するように設定される。なお、この実施の形態では、ビット3を「1」に設定することによって、送信回路を使用する設定が行われる。このような設定は、メイン処理の初期設定(例えばステップS15a)において行われる。
制御レジスタB708のビット2(ビット名「RE」)には、受信回路を使用するか否かを示す設定データが設定される。図32(B)に示すように、ビット2を「0」に設定することによって、受信回路を使用しないように設定される。また、ビット2を「1」に設定することによって、受信回路を使用するように設定される。なお、この実施の形態では、ビット2を「1」に設定することによって、受信回路を使用する設定が行われる。このような設定は、メイン処理の初期設定(例えばステップS15a)において行われる。
制御レジスタB708のビット1(ビット名「RWU」)には、受信回路のウエイクアップ機能を使用するか否かを示す設定データが設定される。図32(B)に示すように、ビット1を「0」に設定することによって、ウエイクアップ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ウエイクアップ機能を使用するように設定される。
制御レジスタB708のビット0(ビット名「SBK」)には、所定のブレークコード送信機能を使用するか否かを示す設定データが設定される。図32(B)に示すように、ビット1を「0」に設定することによって、ブレークコード送信機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ブレークコード送信機能を使用するように設定される。ビット1を「1」に設定すると、シリアル通信回路511は、ブレークコード(例えば、「0」を連続して含む信号)を制御基板(払出制御基板37や演出制御基板80)が搭載するマイクロコンピュータに送信する。
図33(A)は、ステータスレジスタA705の例を示す説明図である。ステータスレジスタA705は、シリアル通信回路511の各種ステータスを確認するためのレジスタである。この実施の形態では、ステータスレジスタA705の各ビットの値を確認することによって、CPU56は、シリアル通信回路511の各種ステータスを確認することができる。図33(A)に示すように、ステータスレジスタA705は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタA705は、ビット0〜ビット7が読出のみ可能な状態に構成されている。したがって、ステータスレジスタA705のビット0〜ビット7に値を書き込む制御を行っても無効とされる。
本実施の形態では、後述するように、送信データレジスタ710に送信データが入っていない状態(送信データエンプティ)となったり、送信用シフトレジスタ712が格納する送信データの送信を完了すると、割り込み制御回路714によって、ステータスレジスタA705の対応するビットがセットされる。そして、CPU56は、ステータスレジスタA705にセットされた各ビットの値を読み出す。
図33(B)は、ステータスレジスタA705に格納されるステータス確認データの一例を示す図である。図33(B)に示すように、ステータスレジスタA705のビット7(ビット名「TDRE」)には、送信データレジスタ710に送信データが入っていない状態であること(送信データエンプティ)を示す送信データエンプティフラグが格納される。図33(B)に示すように、ビット7に「0」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが未だに転送されておらず、送信データレジスタ710に送信データが格納されたままの状態であることを示す。また、ビット7に「0」が格納されている状態では、送信データレジスタにデータが書き込まれない。例えば、ステップS5211,S52305ではビット7に「0」が格納されていないことを条件に送信データを設定する。また、ビット7に「1」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが転送されており、送信データレジスタ710に送信データが入っていない状態(送信データエンプティ)であることを示す。
ステータスレジスタA705のビット6(ビット名「TC」)には、シリアル通信回路511からの送信データの送信を完了した旨を示す送信完了フラグが格納される。図33(B)に示すように、ビット6に「0」が格納されている場合、送信用シフトレジスタ712が格納する送信データの送信中の状態であり、シリアル通信回路511からの送信データの送信が完了していない状態であることを示す。また、ビット6に「1」が格納されている場合、送信用シフトレジスタ712が格納する送信データの転送を完了した状態であり、シリアル通信回路511からの送信データの送信が完了した状態であることを示す。コマンド格納領域がリングバッファ形式の場合には、ビット6に「1」が格納された状態となれば、コマンドの読出ポインタを更新する。
なお、送信データの送信を完了した状態となり、遊技制御用マイクロコンピュータ560は、送信先のマイクロコンピュータからの受信確認信号の待ち状態となる。この実施の形態では、後述する送信時割込の設定が行われると、シリアル通信回路511は、送信データの送信完了を検出すると、ステータスレジスタA705のビット6を「1」にするとともに、受信確認信号の待ち状態になったものとしてCPU56に割り込み要求(送信時割り込み要求という)を行う。
ステータスレジスタA705のビット5(ビット名「RDRF」)には、受信データレジスタ711に受信データが格納された状態であること(受信データフル)を示す受信データフルフラグが格納される。図33(B)に示すように、ビット5に「0」が格納されている場合、受信データレジスタ711に受信データが入っていない状態であることを示す。また、ビット5に「1」が格納されている場合、受信用シフトレジスタ713の値が受信データレジスタ711に転送され、受信データレジスタ711に受信データが格納されている状態であること(受信データフル)を示す。払出制御用マイクロコンピュータ370からのコマンドを受信したかどうかは、ビット5に「1」が格納された状態となっているかどうかによって確認される。例えば、ステップS5221,S52401,S52501ではビット5に「0」が格納されていないことを条件にコマンドを受信していると判定する。なお、この実施の形態では、ステータスレジスタA705のビット5(RDRF)は、遊技制御用マイクロコンピュータ560によって受信データレジスタ711から受信データが読み出されるとクリアされる。なお、受信データが読み出されたときにステータスレジスタA705のビット5(RDRF)が自動的にクリアされるように構成されていない場合には、遊技制御用マイクロコンピュータ560は、受信データレジスタ711から受信データを読み出すごとに、ステータスレジスタA705のビット5(RDRF)をクリアする処理を行う必要がある。
なお、受信データレジスタ711に受信データが格納された状態となると、CPU56は、受信データを受信データレジスタ711から読み込んで受信処理を行える状態となる。この実施の形態では、受信時割込の設定が行われると、シリアル通信回路511は、受信データフルを検出すると、ステータスレジスタA705のビット5を「1」にするとともに、受信処理が可能になったものとしてCPU56に割り込み要求(受信時割り込み要求という)を行う。
ステータスレジスタA705のビット4(ビット名「IDLE」)には、受信回路がアイドルラインを検出したことを示すアイドルライン検出フラグが格納される。図33(B)に示すように、ビット4に「0」が格納されている場合、シリアル通信回路511の受信部がアイドルラインを検出していない状態であることを示す。また、ビット4に「1」が格納されている場合、シリアル通信回路511の受信部がアイドルラインを検出した状態であることを示す。
ステータスレジスタA705のビット3(ビット名「OR」)には、CPU56が受信データレジスタ711が格納する受信データを読み込む前に、受信用シフトレジスタ713が次のデータを受信してしまったこと(オーバーラン)を示すオーバーランフラグが格納される。図33(B)に示すように、ビット3に「0」が格納されている場合、受信回路がオーバーランを検出していない状態であることを示す。また、ビット3に「1」が格納されている場合、受信回路がオーバーランを検出した状態であることを示す。
なお、オーバーランが発生すると、受信データレジスタ711内の受信データが読み込まれる前に受信用シフトレジスタ713に次の受信データが格納されてしまうので、受信データが上書きされてしまいCPU56が受信データを正しく読み込めなくなってしまう。そのため、各制御基板が搭載するマイクロコンピュータと正しく通信を行えなくなり、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路511は、オーバーランを検出すると、ステータスレジスタA705のビット3を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット2(ビット名「NF」)には、受信データにノイズを検出したことを示すノイズエラーフラグが格納される。図33(B)に示すように、ビット2に「0」が格納されている場合、受信回路が受信データにノイズを検出していない状態であることを示す。また、ビット2に「1」が格納されている場合、受信回路が受信データにノイズを検出した状態であることを示す。
例えば、シリアル通信回路511は、受信データの各ビットを検出する際に、ボーレート生成回路703が生成したボーレートを用いて、所定ビット長の「1」または「0」を検出する。この場合、検出した「1」または「0」の長さが所定ビット長に満たない場合、シリアル通信回路511は、受信データにノイズが発生したものとしてノイズエラーを検出する。ノイズエラーが発生すると、ノイズによって正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路511は、ノイズエラーを検出すると、ステータスレジスタA705のビット2を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット1(ビット名「FE」)には、受信データのストップビットの位置が「0」(本来、ストップビットは「1」)であることを検出したこと(フレーミングエラー)を示すフレーミングエラーフラグが格納される。図33(B)に示すように、ビット1に「0」が格納されている場合、受信回路が受信データにフレーミングエラーを検出していない状態であることを示す。また、ビット1に「1」が格納されている場合、受信回路がフレーミングエラーを検出した状態であることを示す。
フレーミングエラーが発生すると、受信データのストップビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路511は、フレーミングエラーを検出すると、ステータスレジスタA705のビット1を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット0(ビット名「PF」)には、受信データから求めたパリティの値と、受信データに含まれるパリティの値とが一致しなかったこと(パリティエラー)を示すパリティエラーフラグが格納される。図33(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データにパリティエラーを検出していない状態であることを示す。また、ビット0に「1」が格納されている場合、受信回路がパリティエラーを検出した状態であることを示す。
パリティエラーが発生すると、受信データの各データビットまたはパリティビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路511は、パリティエラーを検出すると、ステータスレジスタA705のビット0を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
図34(A)は、ステータスレジスタB706の例を示す説明図である。ステータスレジスタB706は、シリアル通信回路511の受信状態(受信ステータス)を確認するためのレジスタである。この実施の形態では、ステータスレジスタB706のビットの値を確認することによって、CPU56は、シリアル通信回路511の受信ステータスを確認することができる。図34(B)に示すように、ステータスレジスタB706は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタB706は、ビット0が読出のみ可能な状態に構成されている。したがって、ステータスレジスタA705のビット0に値を書き込む制御を行っても無効とされる。また、ステータスレジスタB706は、ビット1〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、ステータスレジスタA705のビット1〜ビット7に値を書き込む制御を行っても無効とされ、ビット1〜ビット7から読み出す値は全て「0(=0000b)」である。
図34(B)は、ステータスレジスタB706に格納されるステータス確認データの一例を示す図である。図34(B)に示すように、ステータスレジスタB706のビット0(ビット名「RAF」)には、受信回路が受信データを受信中であること(受信アクティブ)を示す受信アクティブフラグが格納される。図34(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データを受信中でないことを示す。また、ビット0に「1」が格納されている場合、受信回路が受信データを受信中であることを示す。また、ビット0に「1」が格納されている場合にも、コマンドデータの書き込みを行わない、もしくはコマンドデータを書き込めなくなっている。なお、シリアル通信回路511は、スタートビットを検出すると、受信データの受信が開始されたものとして、ステータスレジスタB706のビット0を「1」にする。
図35(A)は、制御レジスタC709の例を示す説明図である。制御レジスタC709は、シリアル通信回路511の通信エラー時の割り込み要求を許可するか否かを設定するレジスタである。この実施の形態では、制御レジスタC709の各ビットの値が設定されることによって、シリアル通信回路511からの通信時の割り込み要求を許可するか禁止するかが設定される。制御レジスタC709には、通信エラー時の各種割り込み要求を許可するか否かを示すエラー割り込み要求設定データが主として設定される。なお、制御レジスタC709には、エラー割り込み要求設定データ以外に、データ長を9ビットに設定した場合の9ビット目のデータが格納される。シリアル通信回路511の各種設も設定される。図35(A)に示すように、制御レジスタC709は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタC709は、ビット0〜ビット3およびビット6,7が書込および読出ともに可能な状態に構成されている。また、制御レジスタC709は、ビット4,5が書込および読出ともに不可能な状態に構成されている。したがって、制御レジスタC709のビット4,5に値を書き込む制御を行っても無効とされ、ビット4,5から読み出す値は全て「0(=0000b)」である。
図35(B)は、制御レジスタC709に設定されるエラー割り込み要求設定データの一例を示す説明図である。図35(B)に示すように、制御レジスタC709のビット7(ビット名「R8」)には、データ長を9ビットに設定した場合の受信データの9ビット目のデータが格納される。また、制御レジスタC709のビット6(ビット名「T8」)には、データ長を9ビットに設定した場合の送信データの9ビット目のデータが格納される。
制御レジスタC709のビット3(ビット名「ORIE」)には、オーバーランを検出した場合に行う割り込み要求であるオーバーランフラグ割り込み要求を許可するか否かを示す設定データが設定される。図35(B)に示すように、ビット3を「0」に設定することによって、オーバーランフラグ割り込み要求を禁止するように設定される。また、ビット3を「1」に設定することによって、オーバーランフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット2(ビット名「NEIE」)には、ノイズエラーを検出した場合に行う割り込み要求であるノイズエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図35(B)に示すように、ビット2を「0」に設定することによって、ノイズエラーフラグ割り込み要求を禁止するように設定される。また、ビット2を「1」に設定することによって、ノイズエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット1(ビット名「FEIE」)には、フレーミングエラーを検出した場合に行う割り込み要求であるフレーミングエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図35(B)に示すように、ビット1を「0」に設定することによって、フレーミングエラーフラグ割り込み要求を禁止するように設定される。また、ビット1を「1」に設定することによって、フレーミングエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット0(ビット名「PEIE」)には、パリティエラーを検出した場合に行う割り込み要求であるパリティエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図35(B)に示すように、ビット0を「0」に設定することによって、パリティエラーフラグ割り込み要求を禁止するように設定される。また、ビット0を「1」に設定することによって、パリティエラーフラグ割り込み要求を許可するように設定される。
図36は、シリアル通信回路511が備えるデータレジスタの例を示す説明図である。データレジスタ701は、シリアル通信回路511が送受信するデータを格納するレジスタである。図36に示すように、データレジスタは、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、データレジスタ701は、ビット0〜ビット7が書込および読出ともに可能な状態に構成されている。
この実施の形態では、シリアル通信回路511が送信データを送信する場合、データレジスタは、送信データレジスタ710として用いられる。なお、データ長を9ビットに設定した場合、データレジスタおよび制御レジスタC709のビット6が送信データレジスタ710として用いられる。この場合、データレジスタのビット0〜ビット7が送信データレジスタ710のビット0〜ビット7として用いられ、制御レジスタC709のビット6が送信データレジスタ710のビット8として用いられる。
また、シリアル通信回路511が受信データを受信する場合、データレジスタは、受信データレジスタ711として用いられる。なお、データ長を9ビットに設定した場合、データレジスタおよび制御レジスタC709のビット7が受信データレジスタ711として用いられる。この場合、データレジスタのビット0〜ビット7が受信データレジスタ711のビット0〜ビット7として用いられ、制御レジスタC709のビット7が受信データレジスタ711のビット8として用いられる。
割り込み制御回路714は、CPU56に各種割り込み要求を行う。この実施の形態では、割り込み制御回路714は、制御レジスタB708のビット6(TCIE)が「1」に設定されている場合、送信データレジスタ710に送信データの送信を完了した状態となると、CPU56に割り込み信号を出力するとともに、ステータスレジスタA705のビット6(TC)に「1」を設定することによって割り込み要求を行う。なお、ステータスレジスタA705のビットの設定値により割込要因を識別可能とするのでなく、割り込み制御回路714は、割込要因毎に異なる割り込み信号をCPU56に出力するようにしてもよい。
また、割り込み制御回路714は、制御レジスタB708のビット5(RIE)が「1」に設定されている場合、受信データレジスタ711に受信データが格納されている状態になると(受信データフルを検出すると)、CPU56に割り込み信号を出力するとともに、ステータスレジスタA705のビット5(RDRF)に「1」を設定することによって割り込み要求を行う。
また、割り込み制御回路714は、制御レジスタC709のビット0〜3のいずれかが「1」に設定されている場合、各種通信エラーが発生すると、CPU56に割り込み信号を出力するとともに、通信エラーの種類に応じて、ステータスレジスタA705のビット0〜ビット3に「1」を設定することによって割り込み要求を行う。例えば、制御レジスタC709のビット3(ORIE)が「1」に設定されている場合、オーバーランを検出して割り込み要求を行うときに、ステータスレジスタA705のビット3(OR)に「1」を設定する。また、例えば、制御レジスタC709のビット2(NEIE)が「1」に設定されている場合、ノイズエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット2(NF)に「1」を設定する。また、例えば、制御レジスタC709のビット1(FEIE)が「1」に設定されている場合、フレーミングエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット1(FE)に「1」を設定する。また、例えば、制御レジスタC709のビット0(PEIE)が「1」に設定されている場合、パリティエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット0(PF)に「1」を設定する。なお、複数の通信エラーを検出した場合、割り込み制御回路714は、複数の通信エラーにもとづいて割り込み要求を行うとともに、ステータスレジスタA705の該当するビットをそれぞれ「1」に設定する。
送信フォーマット/パリティ生成回路715は、送信データのデータフォーマットを生成する。この実施の形態では、送信フォーマット/パリティ生成回路715は、送信データレジスタ710に格納される送信データにスタートビットおよびストップビットを付加してデータフォーマットを生成し、送信用シフトレジスタ712に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、送信フォーマット/パリティ生成回路715は、送信データにパリティビットを付加してデータフォーマットを生成する。
受信フォーマット/パリティチェック回路716は、受信データのデータフォーマットを検出する。この実施の形態では、受信フォーマット/パリティチェック回路716は、受信用シフトレジスタ713に格納される受信データからスタートビットおよびストップビットを検出し、受信データに含まれるデータ部分を検出して受信データレジスタ711に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、受信フォーマット/パリティチェック回路716は、受信データのパリティを求め、受信データに含まれるパリティと一致するか否かを検出する。また、求めた値が受信データに含まれるパリティと一致しない場合、受信フォーマット/パリティチェック回路716は、パリティエラーを検出する。なお、後述するシリアル通信回路設定処理において通信エラー時割り込み要求を許可する旨が設定されている場合、割り込み制御回路714は、パリティエラーを検出すると、通信エラーの発生を割込原因としてCPU56に割り込み要求を行う。
大当り判定用テーブルメモリ571は、CPU56が特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いる複数の大当り判定テーブルを記憶する。具体的には、大当り判定用テーブルメモリ571は、図37(A)に示すように、確変状態以外の遊技状態(通常状態という)において用いられる通常時大当り判定テーブル571aを記憶する。また、大当り判定用テーブルメモリ571は、図37(B)に示すように、確変状態において用いられる確変時大当り判定テーブル571bを格納する。なお、図37に示す判定テーブルを用いて大当り判定を行う場合、乱数最大値設定レジスタ535に設定された乱数最大値によって大当りと判定する確率が大きく変化することになる。この場合、例えば、設定される乱数最大値が小さすぎると、通常時大当り判定テーブル571aを用いた場合と、確変時大当り判定テーブル571bを用いた場合とで、大当りと判定する確率の差が小さくなってしまい、遊技者の遊技に対する興味を減退させてしまうことになる。そのため、乱数回路509および乱数最大値に対応づけて、複数の判定テーブル(複数の通常時大当り判定用テーブル571aおよび複数の確変時大当り判定用テーブル571b)を大当り判定用テーブルメモリ571に記憶してもよい。そして、CPU56は、大当り判定用テーブルメモリ571が記憶する判定テーブルのうち、使用する乱数回路509および乱数最大値に対応する判定テーブル571a,571bを用いて、表示結果決定プログラム552に従って、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するようにしてもよい。そのようにすることによって、使用する乱数回路509の種類や乱数最大値が異なっても、大当りと判定する確率がある程度同じになるように制御することができる。
なお、図37に示す例では、例えば、図37(A)に示す通常時大当り判定テーブルの場合、1020〜1059、13360〜13399、34400〜34439および57700〜57739の4つの範囲に判定値が割り当てられ、図37(B)に示す確変時大当り判定テーブルの場合、1020〜1219、13360〜13559、34400〜34599および57700〜57899の4つの範囲に判定値が割り当てられている場合を示しているが、各大当り判定テーブルにおいて、一連の1つの範囲にまとめて判定値が割り当てられているように構成してもよい。
図38は、遊技制御手段における出力ポートの割り当ての例を示す説明図である。図38に示すように、出力ポート0からは、払出制御基板37に送信される払出制御信号(本例では、接続信号)が出力される。また、大入賞口を開閉する可変入賞球装置20を開閉するためのソレノイド(大入賞口扉ソレノイド)21、および可変入賞球装置15を開閉するためのソレノイド(普通電動役物ソレノイド)16に対する駆動信号も、出力ポート0から出力される。
なお、図38に示された「論理」(例えば1がオン状態)と逆の論理(例えば0がオン状態)を用いてもよいが、特に、接続信号については、主基板31と払出制御基板37との間の信号線において断線が生じた場合やケーブル外れの場合(ケーブル未接続を含む)等に、払出制御用マイクロコンピュータ370では必ずオフ状態と検知されるように「論理」が定められる。具体的には、一般に、断線やケーブル外れが生ずると信号の受信側ではハイレベルが検知されるので、主基板31と払出制御基板37との間の信号線でのハイレベルが、遊技制御手段における出力ポートにおいてオフ状態になるように「論理」が定められる。従って、必要であれば、主基板31において出力ポートの外側に、信号を論理反転させる出力バッファ回路が設置される。
そして、出力ポート1から、ターミナル基板160を介して、外部装置(例えば、ホールコンピュータ)に対して、種情報出力用信号すなわち制御に関わる情報(例えば、始動口信号、図柄確定回数1信号、大当り1信号、大当り2信号、大当り3信号、時短信号、セキュリティ信号)の出力データが出力される。なお、この実施の形態では、後述する賞球信号1(賞球払出を1個検出するごとに出力される信号)や、遊技機エラー状態信号(遊技機がエラー状態(本例では、球切れエラー状態または満タンエラー状態)であることを示す信号)も、ターミナル基板160を介して外部装置に出力される。この場合、払出制御基板37側において、賞球払出や遊技機のエラー状態が検出され、賞球信号1や遊技機エラー状態信号が主基板31に入力される。そして、主基板31に入力された賞球信号1や遊技機エラー状態信号は、遊技制御用マイクロコンピュータ560を経由することなく、主基板31上をそのまま経由してターミナル基板160を介して外部出力される。なお、主基板31に入力された賞球信号1や遊技機エラー状態信号は、遊技制御用マイクロコンピュータ560を一旦経由してから、ターミナル基板160を介して外部出力されるようにしてもよい。
なお、ターミナル基板160を介して外部出力される信号は、この実施の形態で示したものに限られない。例えば、ガラス扉枠2が開放状態であることを示す扉開放信号や、機構板が開放状態であることを示す機構板開放信号、賞球の払出を10個検出するごとに出力される賞球情報も、ターミナル基板160を介して外部装置に出力されるようにしてもよい。この場合、払出制御基板37側において、ガラス扉枠2が開放状態であることや、機構板が開放状態であること、賞球の払出も検出され、扉開放信号や機構板開放信号、賞球情報が主基板31に入力される。そして、主基板31に入力された扉開放信号や機構板開放信号、賞球情報は、遊技制御用マイクロコンピュータ560を経由することなく、主基板31上をそのまま経由してターミナル基板160を介して外部出力される。だたし、扉開放信号、機構板開放信号および賞球情報は、主基板31上で分岐され、遊技制御用マイクロコンピュータ560にも入力されるものとする。なお、この場合も、主基板31に入力された扉開放信号や機構板開放信号、賞球情報は、遊技制御用マイクロコンピュータ560を一旦経由してから、ターミナル基板160を介して外部出力されるようにしてもよい。
また、例えば、遊技機が第1始動入賞口と第2始動入賞口との2つの始動入賞口を備え、第1特別図柄と第2特別図柄との2つの特別図柄を変動表示可能に構成されている場合には、特別図柄の変動回数を通知するための図柄確定回数信号として図柄確定回数1信号に加えて図柄確定回数2信号も、ターミナル基板160を介して外部出力するようにしてもよい。この場合、例えば、第1特別図柄の変動回数のみを通知するための信号として図柄確定回数2信号を外部出力するようにし、第1特別図柄および第2特別図柄の両方の変動回数を通知するための信号として図柄確定回数1信号を外部出力するように構成すればよい。そのように構成すれば、ホールコンピュータなどの外部装置側において、第1特別図柄のみの変動回数に加えて、第1特別図柄および第2特別図柄合計の変動回数や、第2特別図柄のみの変動回数も把握することができる。
図39は、遊技制御手段における入力ポートのビット割り当ての例を示す説明図である。図39に示すように、入力ポート0のビット0〜7には、それぞれ、カウントスイッチ23、ゲートスイッチ32a、入賞口スイッチ29a,30a、磁石センサ信号1、磁石センサ信号2、賞球情報が入力される。なお、この実施の形態では、磁石を用いた不正行為を検出するための磁石センサ(図示せず)が2個設けられており、それぞれの磁石センサからの検出信号も入力ポート0から入力される。また、入力ポート1のビット0には、始動口スイッチ14aの検出信号が入力される。また、入力ポート1のビット3,4には、それぞれ、電源基板910からの電源断信号およびクリアスイッチの検出信号が入力される。また、入力ポート1のビット6,7には、それぞれ、払出制御基板37を介して機構板開放信号および扉開放信号が入力される。
次に、遊技機の動作について説明する。遊技機に対して電源が投入され電力供給が開始されると、リセット信号が入力されるリセット端子の入力レベルがハイレベルになり、遊技制御用マイクロコンピュータ560(具体的には、CPU56)は、ROM54から読み出したセキュリティチェックプログラム54Aにもとづいて、プログラムの内容が正当か否か確認するための処理であるセキュリティチェック処理を実行する。このとき、遊技制御用マイクロコンピュータ560は、セキュリティモードとなり、ROM54に記憶されているゲーム制御用のユーザプログラムは未だ実行されない状態となる。
図40は、主基板31における遊技制御用マイクロコンピュータ560が実行するセキュリティチェック処理を示すフローチャートである。セキュリティチェック処理を開始すると、CPU56は、まず、セキュリティチェック処理が実行されることにより遊技制御用マイクロコンピュータ560がセキュリティモードとなる時間(セキュリティ時間)を決定するための処理を実行する。このとき、CPU56は、ROM54のプログラム管理エリアに記憶されるセキュリティ時間設定KSESのビット番号[2−0]におけるビット値を読み出す(ステップS1001)。そして、この読出値が“000”であるか否かを判定する(ステップS1002)。
ステップS1002にて読出値が“000”と判定された場合には(ステップS1002のY)、定常設定時間を既定の固定時間に設定する(ステップS1003)。ここで、定常設定時間は、セキュリティ時間のうち、パチンコ遊技機1におけるシステムリセットの発生等にもとづくセキュリティチェック処理の実行回数(遊技制御用マイクロコンピュータ560がセキュリティモードとなる回数)に関わりなく、一定となる時間成分である。また、固定時間は、セキュリティ時間のうち、遊技制御用マイクロコンピュータ560の仕様などにもとづいてあらかじめ定められた不変時間成分であり、例えばセキュリティ時間として設定可能な最小値となるものであればよい。
ステップS1002にて読出値が“000”以外と判定された場合には(ステップS1002のN)、その読出値に対応して、固定時間に加えて図14(D)に示す設定内容により選択される延長時間を、定常設定時間に設定する(ステップS1004)。こうして、セキュリティ時間設定KSESのビット番号[2−0]におけるビット値が“000”以外の値である場合には、セキュリティチェック処理の実行時間であるセキュリティ時間を、固定時間に加えてあらかじめ選択可能な複数の延長時間のいずれかに設定することができる。
ステップS1003,S1004の処理のいずれかを実行した後には、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値を読み出す(ステップS1005)。そして、この読出値が“00”であるか否かを判定する(ステップS1006)。
ステップS1006にて読出値が“00”と判定された場合には(ステップS1006のY)、定常設定時間をセキュリティ時間に設定する(ステップS1007)。これに対して、読出値が “00”以外と判定された場合には(ステップS1006のN)、その読出値に対応して決定される可変設定時間を、定常設定時間に加算してセキュリティ時間に設定する(ステップS1008)。ここで、可変設定時間は、セキュリティ時間のうち、セキュリティチェック処理が実行されるごとに変化する時間成分であり、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値が“01”(ショートモード)であるか“10”(ロングモード)であるかに応じて異なる所定の時間範囲で変化する。例えば、システムリセットの発生時に、所定のフリーランカウンタにおけるカウント値が遊技制御用マイクロコンピュータ560に内蔵された可変セキュリティ時間用レジスタに格納される場合には、ステップS1008の処理において、可変セキュリティ時間用レジスタの格納値をそのまま用いること、あるいは、その格納値を所定の演算関数(例えばハッシュ関数)に代入して得られた値を用いることなどにより、可変設定時間がシステムリセット毎に所定の時間範囲でランダムに変化するように決定されればよい。こうして、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値が“00”以外の値である場合には、セキュリティチェック処理の実行時間であるセキュリティ時間を、システムリセットの発生等にもとづくセキュリティチェック処理が実行されるごとに所定の時間範囲で変化させることができる。
ここで、セキュリティ時間設定KSESのビット番号[2−0]におけるビット値が“000”以外の値であり、なおかつ、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値が“00”以外の値である場合には、ステップS1004にて設定される延長時間と、ステップS1008にて設定される可変設定時間との双方が、固定時間に加算されて、セキュリティ時間が決定されることになる。
ステップS1007,S1008の処理のいずれかを実行した後には、ROM54の所定領域に記憶されたセキュリティコードを読み出す(ステップS1009)。ここで、ROM54の所定領域には、記憶内容のデータを所定の演算式によって演算した演算結果のセキュリティコードがあらかじめ記憶されている。セキュリティコードの生成方法としては、例えばハッシュ関数を用いてハッシュ値を生成するもの、エラー検出コード(CRCコード)を用いるもの、エラー訂正コード(ECCコード)を用いるもののいずれかといった、あらかじめ定められた生成方法を使用すればよい。また、ROM54のセキュリティコード記憶領域とは異なる所定領域には、セキュリティコードを演算により特定するための演算式が、暗号化してあらかじめ記憶されている。
ステップS1009の処理に続いて、暗号化された演算式を復号化して元に戻す(ステップS1010)。その後、ステップS1010で復号化した演算式により、ROM54の所定領域における記憶データを演算してセキュリティコードを特定する(ステップS1011)。このときセキュリティコードを特定するための演算に用いる記憶データは、例えばROM54の記憶データのうち、セキュリティチェックプログラム54Aとは異なるユーザプログラムの全部または一部に相当するプログラムデータ、あるいは、所定のテーブルデータを構成する固定データの全部または一部であればよい。そして、ステップS1009にて読み出したセキュリティコードと、ステップS1011にて特定されたセキュリティコードとを比較する(ステップS1012)。このときには、比較結果においてセキュリティコードが一致したか否かを判定する(ステップS1013)。
ステップS1013にてセキュリティコードが一致しない場合には(ステップS1013のN)、ROM54に不正な変更が加えられたと判断して、CPU56の動作を停止状態(HALT)へ移行させる。これに対して、ステップS1013にてセキュリティコードが一致した場合には(ステップS1013のY)、ステップS1007やステップS1008の処理で設定されたセキュリティ時間が経過したか否かを判定する(ステップS1014)。そして、セキュリティ時間が経過していなければ(ステップS1014のN)、ステップS1014の処理を繰り返し実行して、セキュリティ時間が経過するまで待機する。その一方で、ステップS1014にてセキュリティ時間が経過したと判定された場合には(ステップS1014のY)、例えばCPU56に内蔵されたプログラムカウンタの値をROM54におけるユーザプログラムの先頭アドレス(アドレス0000H)に設定することなどにより、遊技制御メイン処理の実行を開始する。このときには、ROM54に記憶されたユーザプログラムを構成する制御コードの先頭から遊技制御の実行が開始されることにより、遊技制御用マイクロコンピュータ560の動作状態がセキュリティモードからユーザモードへと移行し、遊技制御メイン処理の実行が開始されることになる。
図41および図42は、遊技機に対して電力供給が開始され遊技制御用マイクロコンピュータ560へのリセット信号がハイレベルになったことに応じて遊技制御用マイクロコンピュータ560のCPU56が実行するメイン処理を示すフローチャートである。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、遊技制御用マイクロコンピュータ560のCPU56は、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、ステップS1以降のメイン処理を開始する。メイン処理において、CPU56は、まず、必要な初期設定を行う。
初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1)。次に、マスク可能割込の割込モードを設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。なお、ステップS2では、遊技制御用マイクロコンピュータ560の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードに設定する。また、マスク可能な割込が発生すると、CPU56は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
次いで、CPU56は、払出制御用マイクロコンピュータ370に対して、接続信号の出力を開始する(ステップS4)。なお、CPU56は、ステップS4で接続信号の出力を開始すると、遊技機の電源供給が停止したり、何らかの通信エラーが生じて出力不能とならないかぎり、払出制御用マイクロコンピュータ370に対して接続信号を継続して出力する。
次いで、内蔵デバイスレジスタの設定(初期化)を行う(ステップS5)。ステップS5の処理によって、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の設定(初期化)がなされる。
この実施の形態で用いられる遊技制御用マイクロコンピュータ560は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)504も内蔵している。
次いで、CPU56は、RAM55をアクセス可能状態に設定し(ステップS6)、クリア信号のチェック処理に移行する。
なお、遊技の進行を制御する遊技装置制御処理(遊技制御処理)の開始タイミングをソフトウェアで遅らせるためのソフトウェア遅延処理を実行するようにしてもよい。そのようなソフトウェア遅延処理によって、ソフトウェア遅延処理を実行しない場合に比べて、遊技制御処理の開始タイミングを遅延させることができる。遅延処理を実行したときには、他の制御基板(例えば、払出制御基板37)に対して、遊技制御基板(主基板31)が送信するコマンドを他の制御基板のマイクロコンピュータが受信できないという状況が発生することを防止できる。
次いで、CPU56は、クリアスイッチがオンされているか否か確認する(ステップS7)。なお、CPU56は、入力ポート0を介して1回だけクリア信号の状態を確認するようにしてもよいが、複数回クリア信号の状態を確認するようにしてもよい。例えば、クリア信号の状態がオフ状態であることを確認したら、所定時間(例えば、0.1秒)の遅延時間をおいた後、クリア信号の状態を再確認する。そのときにクリア信号の状態がオン状態であることを確認したら、クリア信号がオン状態になっていると判定する。また、このときにクリア信号の状態がオフ状態であることを確認したら、所定時間の遅延時間をおいた後、再度、クリア信号の状態を再確認するようにしてもよい。ここで、再確認の回数は、1回または2回に限られず、3回以上であってもよい。また、2回チェックして、チェック結果が一致していなかったときにもう一度確認するようにしてもよい。
ステップS7でクリアスイッチがオンでありクリアスイッチからの操作信号が入力されている場合には、CPU56は、機構板開放センサ155Bからの機構板開放信号がオン状態であるか否かを確認する(ステップS7a)。機構板開放信号がオン状態であれば(すなわち、機構板が開放状態となっていれば)、ステップS10以降の初期化処理に移行する。機構板開放信号がオン状態でなければ(すなわち、機構板が閉鎖状態となっていれば)、CPU56は、不正に初期化処理が行われようとしている可能性を報知することを指定する初期化不正報知コマンドを演出制御用マイクロコンピュータ100に送信する制御を行い(ステップS7b)、ループ処理に移行する。
一般に、遊技店の開店時などに遊技機への電源を投入する場合、クリアスイッチ921は遊技機内部の電源基板910に搭載されているので、遊技店員などは、機構板を開放状態にしなければ、クリアスイッチ921を押下しながら遊技機への電源を投入することはできず、初期化された状態で遊技機を起動させることはできない。従って、正規の手順に従って遊技機を起動させる場合、遊技機への電源供給開始時にクリアスイッチ921がオン状態となっていれば同時に機構板開放信号もオン状態となっている筈である。ステップS7でクリアスイッチのオン状態が検出されたにもかかわらず、ステップS7aで機構板開放信号のオン状態が検出されなかったということは、機構板が閉鎖状態のままでクリアスイッチ921が押下されて電源投入が行われたということである。そのため、遊技中に遊技機の隙間から器具を差し込んで不正にクリアスイッチ921をオンにした状態で電源をリセットする行為が行われている可能性が高い。そこで、この実施の形態では、ステップS7でクリアスイッチのオン状態が検出されたにもかかわらず、ステップS7aで機構板開放信号のオン状態が検出されなかった場合には、不正に初期化処理が行われようとしている可能性が高いと判断して、初期化不正報知コマンドを送信して報知を行うとともに、ループ処理に移行して図45の遊技制御処理に移行しないように制御する。すなわち、遊技の進行を不能動化して遊技を行うことができないようにする。そのように制御することによって、この実施の形態では、不正に初期化処理が実行されることを防止し、不正行為を防止している。
なお、ループ処理に移行して遊技の進行が不能動化された場合には、その不能動化された状態を解除するためには、正規の手順に従って、機構板を開放状態にしてからクリアスイッチ921を押下しながら遊技機への電源を再投入しなければならない。なお、電源の再投入までしなくても、例えば、ステップS7bの初期化不正報知コマンドの送信処理の後のループ処理において、クリアスイッチがオン状態であるとともに機構板開放信号がオン状態に変化したか否かを確認するようにし、オン状態であれば、ステップS10以降の初期化処理に移行して、遊技制御処理が開始されるようにしてもよい。
ステップS7でクリアスイッチがオンでない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような電力供給停止時処理が行われていたことを確認した場合には、CPU56は、電力供給停止時処理が行われた、すなわち電力供給停止時の制御状態が保存されていると判定する。電力供給停止時処理が行われていないことを確認した場合には、CPU56は初期化処理を実行する。
電力供給停止時処理が行われていたか否かは、電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、電力供給停止時処理を実行したことに応じた値(例えば2)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域に電力供給停止時処理を実行したことを示すフラグをセットし、ステップS8において、そのフラグがセットされていることを確認したら電力供給停止時処理が行われたと判定してもよい。
電力供給停止時の制御状態が保存されていると判定したら、CPU56は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象になるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムにする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっている可能性があることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理(ステップS10〜S14の処理)を実行する。
チェック結果が正常であれば、CPU56は、遊技制御手段の内部状態と演出制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う。具体的には、ROM54に格納されているバックアップ時設定テーブルの先頭アドレスをポインタに設定し(ステップS91)、バックアップ時設定テーブルの内容を順次作業領域(RAM55内の領域)に設定する(ステップS92)。作業領域はバックアップ電源によって電源バックアップされている。バックアップ時設定テーブルには、作業領域のうち初期化してもよい領域についての初期化データが設定されている。ステップS91およびS92の処理によって、作業領域のうち初期化してはならない部分については、保存されていた内容がそのまま残る。初期化してはならない部分とは、例えば、電力供給停止前の遊技状態を示すデータ(特別図柄プロセスフラグなど)、出力ポートの出力状態が保存されている領域(出力ポートバッファ)、未払出賞球数を示すデータが設定されている部分などである。
また、CPU56は、ROM54に格納されているバックアップ時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS93)、ステップS14aに移行する。なお、ステップS93で設定された後、後述するステップS15aのシリアル通信回路設定処理が行われてからバックアップコマンドが送信されることになる。
初期化処理では、CPU56は、まず、RAMクリア処理を行う(ステップS10)。なお、RAM55の全領域を初期化せず、所定のデータをそのままにしてもよい。また、ROM54に格納されている初期化時設定テーブルの先頭アドレスをポインタに設定し(ステップS11)、初期化時設定テーブルの内容を順次業領域に設定する(ステップS12)。
ステップS11およびS12の処理によって、例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄バッファ、特別図柄プロセスフラグ、賞球中フラグ、球切れフラグなど制御状態に応じて選択的に処理を行うためのフラグに初期値が設定される。
また、CPU56は、ROM54に格納されている初期化時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS13)、その内容に従ってサブ基板を初期化するための初期化コマンドをサブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、演出表示装置9に表示される初期図柄を示すコマンドや払出制御基板37への初期化コマンド等を使用することができる。なお、ステップS13で設定された後、後述するステップS15aのシリアル通信回路設定処理が行われてから初期化コマンドが送信されることになる。
ステップS91〜S93の処理を実行して電断前の遊技状態を復旧した後や、ステップS10〜S14の初期化処理を実行した後には、ROM54のプログラム管理エリアにおける記憶データにもとづき、遊技制御用マイクロコンピュータ560に内蔵された各種回路の動作設定を行う(ステップS14a)。一例として、ステップS14aの処理内では、プログラム管理エリアに記憶されている第1乱数初期設定KRS1や第2乱数初期設定KRS2を読み出して乱数回路設定処理が実行される。
図43は、乱数回路設定処理の一例を示すフローチャートである。乱数回路設定処理において、CPU56は、まず、第1乱数初期設定KRS1のビット番号[3]におけるビット値にもとづき、乱数回路509を使用するための設定を行う(ステップS5001)。この実施の形態では、第1乱数初期設定KRS1のビット番号[3]におけるビット値があらかじめ“1”とされており、このビット値に対応して乱数回路509を使用する設定が行われる。続いて、第1乱数初期設定KRS1のビット番号[2]におけるビット値にもとづき、乱数回路509における乱数更新クロックRGKの設定を行う(ステップS5002)。例えば、第1乱数初期設定KRS1のビット番号[2]におけるビット値があらかじめ“1”とされていることに対応して、乱数用クロック生成回路112で生成された乱数用クロックRCLKを2分周して乱数更新クロックRGKとする設定が行われる。
ステップS5002での設定を行った後には、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値にもとづき、乱数回路509における乱数更新規則の設定を行う(ステップS5003)。例えば、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値があらかじめ“00”とされている場合には、乱数列RSNにおける乱数値となる数値データの更新順を指定する乱数更新規則を2周目以降も変更しない設定がなされる。また、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値があらかじめ“01”とされている場合には、乱数列RSNにおける乱数更新規則を2周目以降はソフトウェアで変更する設定がなされる。さらに、第1乱数初期設定KRS1のビット番号[1−0]におけるビット値があらかじめ“10”とされている場合には、乱数列RSNにおける乱数更新規則を2周目以降は自動で変更する設定がなされる。
続いて、第2乱数初期設定KRS2のビット番号[1]におけるビット値にもとづき、乱数値となる数値データにおける起動時スタート値を決定する(ステップS5004S)。例えば、第2乱数初期設定KRS2のビット番号[1]におけるビット値があらかじめ“0”とされている場合には、乱数のスタート値をデフォルト値「0000H」とする設定がなされる。また、第2乱数初期設定KRS2のビット番号[1]におけるビット値があらかじめ“1”とされている場合には、乱数のスタート値をIDナンバーにもとづく値とする設定がなされる。
さらに、第2乱数初期設定KRS2のビット番号[0]におけるビット値にもとづき、乱数値となる数値データのスタート値をシステムリセット毎に変更するか否かの設定を行う(ステップS5005)。例えば、第2乱数初期設定KRS2のビット番号[0]におけるビット値があらかじめ“0”とされている場合には、パチンコ遊技機1の電源初期投入時(バックアップ無効後の起動)における起動であるか、システムリセットによる再起動であるかに関わりなく、ステップS5004にて設定した起動時スタート値をそのまま用いて、スタート値設定回路554は、乱数回路509におけるスタート値とすればよい。また、第2乱数初期設定KRS2のビット番号[0]におけるビット値があらかじめ“1”とされている場合には、乱数のスタート値をシステムリセット毎に変更する設定がなされる。例えば、システムリセットの発生時といった所定タイミングにて、例えばフリーランカウンタ554Aといった所定のフリーランカウンタにおけるカウント値が遊技制御用マイクロコンピュータ560に内蔵された乱数スタート値用レジスタに格納される場合には、ステップS5005の処理において、乱数スタート値用レジスタの格納値をそのまま用いること、あるいは、その格納値を所定の演算関数(例えばハッシュ関数)に代入して得られた値を用いることなどにより、乱数のスタート値がシステムリセット毎に所定の数値範囲(例えば乱数生成回路553にて生成されるカウント値順列RCNに含まれる数値データの全部または一部を含む範囲)でランダムに変化するように決定されればよい。
ステップS5005の処理を実行した後には、例えば乱数値レジスタR1Dや乱数値レジスタR2Dに格納されている数値データを読み出すことなどにより、乱数ラッチフラグレジスタRDFMのビット番号[1]やビット番号[0]に格納される乱数ラッチフラグデータRDFM1や乱数ラッチフラグデータRDFM0のビット値を“0”として、各乱数ラッチフラグをオフ状態にクリアする(ステップS5006)。一例として、乱数ラッチフラグデータRDFM1と乱数ラッチフラグデータRDFM0について、それぞれの値が“1”であるか“0”であるかを判定し、その値が“1”であれば、対応する乱数値レジスタの読み出しを行うことにより、乱数ラッチフラグをオフ状態とすればよい。あるいは、乱数ラッチフラグデータRDFM1や乱数ラッチフラグデータRDFM0の値にかかわらず、乱数値レジスタR1Dと乱数値レジスタR2Dの読み出しを行うことにより、各乱数ラッチフラグをオフ状態としてもよい。なお、ステップS5006の処理により乱数値レジスタR1Dや乱数値レジスタR2Dから読み出された数値データは、特図表示結果を「大当り」として大当り遊技状態に制御するか否かの判定処理などには使用せず、そのまま破棄(消去)すればよい。こうしたステップS5006の処理による設定が完了すると、乱数回路509では乱数値の生成動作が開始されればよい。
なお、乱数回路設定処理による設定の一部または全部は、CPU56の処理が介在することなく、乱数回路509がプログラム管理エリアの記憶データにもとづき自律的に行うようにしてもよい。この場合、乱数回路509は、遊技制御用マイクロコンピュータ560がセキュリティモードとなっているときには初期設定を行わず、乱数値の生成動作が行われないようにしてもよい。そして、遊技制御用マイクロコンピュータ560にてCPU56がROM54に記憶されたユーザプログラムを読み出して遊技制御メイン処理の実行が開始されたときに、例えばCPU56から乱数回路509に対して初期設定を指示する制御信号が伝送されたことなどに応答して、乱数回路509が初期設定を行ってから乱数値の生成動作を開始するようにしてもよい。あるいは、特に乱数回路509が遊技制御用マイクロコンピュータ560に外付けされる場合などには、遊技制御用マイクロコンピュータ560がセキュリティモードとなっているときでも、乱数回路509がCPU56における処理とは独立して、プログラム管理エリアの記憶データにもとづく初期設定を行ってから、乱数値の生成動作を開始するようにしてもよい。また、図41に示すステップS14aの処理には、プログラム管理エリアに記憶されている割込み初期設定KIISを読み出して、リセット/割込みコントローラ504におけるマスカブル割込み要因の優先制御に関する設定を行う処理などが含まれてもよい。マスカブル割込み要因の優先順位を設定する際には、割込み初期設定KIISのビット番号[3−0]におけるビット値に対応して、最優先割込みの設定が行われる。例えば、割込み初期設定KIISのビット番号[3−0]のビット値をあらかじめ「04H」および「05H」のいずれかとしておくことにより、シリアル通信回路511で発生した割込み要因による割込み処理を最優先で実行することができる。こうして、割込み初期設定KIISのビット番号[3−0]におけるビット値に応じたマスカブル割込み要因の優先制御を行うことにより、割込み処理の優先順位を任意に設定可能とし、設計の自由度を増大させることができる。
ステップS14aでの設定を行った後には、乱数回路509における動作異常の有無を検査するための乱数回路異常検査処理を実行する(ステップS14b)。図44は、ステップS14bにて実行される乱数回路異常検査処理の一例を示すフローチャートである。
図44に示す乱数回路異常検査処理において、CPU56は、まず、例えばRAM55などに設けられた乱数用クロック異常判定カウンタをクリアして、そのカウント値である乱数用クロック異常判定カウント値を「0」に初期化する(ステップS561)。続いて、内部情報レジスタCIFのビット番号[4]に格納されている内部情報データCIF4を読み出す(ステップS562)。そして、ステップS562での読出値が“1”であるか否かを判定する(ステップS563)。乱数回路509が備える周波数監視回路551では、乱数用外部クロック端子ERCにおける乱数用クロックRCLKの入力状態を、内部システムクロックSCLKと比較する。そして、乱数用クロックRCLKの入力状態に、図14(B)で示したような設定内容に応じた周波数異常が検出されたときには、内部情報データCIF4としてビット値“1”が書き込まれる。
そこで、ステップS563にて読出値が“1”と判定された場合には(ステップS563のY)、乱数用クロック異常判定カウント値を1加算するように更新する(ステップS564)。このときには、ステップS564での更新後におけるカウント値が所定のクロック異常判定値に達したか否かを判定する(ステップS565)。ここで、クロック異常判定値は、周波数監視回路551により乱数用クロックRCLKの周波数異常が連続して検知された場合にクロック異常と判定するためにあらかじめ定められた数値であればよい。ステップS565にてクロック異常判定値に達していなければ、ステップS562の処理に戻り、再び内部情報データCIF4のビット値にもとづく判定を行う。
ステップS565にてクロック異常判定値に達した場合には(ステップS565のY)、所定の乱数用クロックエラー時処理を実行してから(ステップS566)、乱数回路異常検査処理を終了する。なお、乱数用クロックエラー時処理では、例えば演出制御基板80に対して所定の演出制御コマンドを送信するための設定を行って、演出装置により乱数用クロックRCLKの周波数異常が検知されたことを報知させるとともに、所定のエラー解除手順(例えばシステムリセットやエラー解除スイッチの操作など)がとられるまでは、以後の処理には進まないようにしてもよく、あるいは、乱数用クロックエラー時処理の終了とともに乱数回路異常検査処理を終了して、以後は乱数用クロックエラー時処理を実行しない通常時とほぼ同様の遊技制御などが実行されるようにしてもよい。ここで、ステップS566にて乱数用クロックエラー時処理を実行した後に遊技制御などが実行される場合には、乱数用クロックエラー時処理の実行に対応したエラーの発生状態を記憶しておき、例えば、客待ちデモ指定コマンドを送信するときなどに、そのエラーの発生状態を通知する客待ちデモ指定コマンドを送信するようにしてもよい。また、乱数用クロックエラー時処理を実行することなく、CPU56の動作を停止状態(HALT)へ移行させてもよい。
ステップS563にて読出値が“0”と判定された場合には(ステップS563のN)、例えばRAM55などに設けられた乱数値異常判定カウンタをクリアして、そのカウント値である乱数値異常判定カウント値を「0」に初期化する(ステップS567)。なお、ステップS563の処理では、ステップS562にて読み出した内部情報データCIF4のビット値が複数回(例えば2回など)連続して“0”となったときに、読出値が“0”であると判定してもよい。
ステップS567の処理に続いて、乱数値における異常の有無をチェックするために用いるチェック値を、初期値「0000H」に設定する(ステップS568)。そして、乱数回路509が備える乱数値レジスタR1Dとなる乱数値レジスタ559Aや乱数値レジスタR2Dとなる乱数値レジスタ559Bから、格納されている乱数値となる数値データを読み出す(ステップS569)。例えば、ステップS569の処理では、乱数ラッチ選択レジスタRDLSのビット番号[1]やビット番号[0]に格納される乱数ラッチ選択データRDLS1や乱数ラッチ選択データRDLS0のビット値を“0”として、ソフトウェアによる乱数値の取り込みを指定する。続いて、乱数値取込指定レジスタRDLTのビット番号[1]やビット番号[0]に格納される乱数値取込指定データRDLT1や乱数値取込指定データRDLT0のビット値を“1”として、乱数値レジスタR2Dや乱数値レジスタR1Dへの取り込みを指定する。なお、乱数値取込指定レジスタRDLTのビット番号[1]やビット番号[0]におけるビット値を“1”とすることは、CPU56から乱数回路509に対して数値データの取り込み(ラッチ)を指示するラッチ信号を出力することに相当する。その後、乱数値レジスタR2Dに供給するレジスタリード信号RRS2をオン状態とすることや、乱数値レジスタR1Dに供給するレジスタリード信号RRS1をオン状態とすることにより、格納されている乱数値となる数値データを読み出すようにすればよい。なお、乱数値レジスタR2Dと乱数値レジスタR1Dのそれぞれに格納された数値データを、同時に読み出して乱数値における異常の有無をチェックしてもよいし、一方のレジスタについて異常の有無をチェックしてから、他方のレジスタについて異常の有無をチェックするようにしてもよい。
ステップS569にて数値データを読み出した後には、その読出値を乱数検査基準値に設定する(ステップS570)。続けて、さらに乱数値レジスタ559Aや乱数値レジスタ559Bから乱数値となる数値データを読み出す(ステップS571)。なお、ステップS571での読出動作は、ステップS569での読出動作と同様の手順で行われればよい。また、ステップS569での読出動作と、ステップS571での読出動作との間には、乱数回路509で生成される乱数列RSNにおける数値データが変化するために十分な遅延時間を設けるとよい。ステップS571にて数値データを読み出した後には、乱数検査基準値と、ステップS571での読出値との排他的論理和演算を実行する(ステップS572)。また、ステップS572での演算結果と、チェック値との論理和演算を実行し、演算結果を新たなチェック値とするように更新させる(ステップS573)。例えば、チェック値はRAM55の所定領域に記憶しておき、ステップS573の処理が実行される毎に、その処理で得られた演算結果を新たなチェック値として保存すればよい。これにより、乱数値レジスタ559Aや乱数値レジスタ559Bから読み出した数値データにおける全ビットの変化が記録され、複数回の読出中に少なくとも1回は値が変化したビットであれば、チェック値において対応するビット値が“1”となる。
そこで、チェック値が「FFFFH」となったか否かを判定し(ステップS574)、なっていれば(ステップS574のY)、全ビットについてビット値の変化が認められることから、乱数値が正常に更新されていると判断して、乱数回路異常検査処理を終了する。なお、乱数値が正常に更新されていることを確認できた場合には、乱数ラッチ選択レジスタRDLSのビット番号[1]やビット番号[0]に格納される乱数ラッチ選択データRDLS1や乱数ラッチ選択データRDLS0のビット値を“1”として、入力ポートP1への信号入力に応じた乱数値レジスタR2Dへの乱数値取込や、入力ポートP0への信号入力に応じた乱数値レジスタR1Dへの乱数値取込を、指示するようにしてもよい。この実施の形態では、入力ポートP0に始動口スイッチ14aからの始動入賞信号SSを伝送する配線が接続され、入力ポートP1にも始動口スイッチ14aからの始動入賞信号SSを伝送する配線が接続される。これにより、始動入賞信号SSがオン状態となったときに乱数値レジスタR1Dへの乱数値取込を行うことができるとともに、始動入賞信号SSがオン状態となったときに乱数値レジスタR2Dへの乱数値取込を行うことができる。
ステップS574にてチェック値が「FFFFH」以外と判定された場合には(ステップS574のN)、乱数値異常判定カウント値を1加算するように更新する(ステップS575)。このときには、ステップS575での更新後におけるカウント値が所定の乱数値異常判定値に達したか否かを判定する(ステップS576)。ここで、乱数値異常判定値は、乱数回路509が正常動作していれば、乱数値レジスタ559Aや乱数値レジスタ559Bから読み出される数値データの全ビットが少なくとも1回は変化するのに十分な判定回数となるように、あらかじめ定められた数値であればよい。ステップS576にて乱数値異常判定値に達していなければ、ステップS571の処理に戻り、再び乱数回路509から乱数値となる数値データを読み出して異常の有無をチェックするための判定などを行う。
ステップS576にて乱数値異常判定値に達した場合には(ステップS576のY)、所定の乱数値エラー時処理を実行してから(ステップS577)、乱数回路異常検査処理を終了する。なお、乱数値エラー時処理では、例えば演出制御基板80に対して所定の演出制御コマンドを送信するための設定を行って、演出装置により乱数値の異常が検知されたことを報知させるとともに、所定のエラー解除手順(例えばシステムリセットやエラー解除スイッチの操作など)がとられるまでは、以後の処理には進まないようにしてもよく、あるいは、乱数値エラー時処理の終了とともに乱数回路異常検査処理を終了して、以後は乱数値エラー時処理を実行しない通常時とほぼ同様の遊技制御などが実行されるようにしてもよい。ここで、ステップS577にて乱数値エラー時処理を実行した後に遊技制御などが実行される場合には、乱数値エラー時処理の実行に対応したエラーの発生状態を記憶しておき、例えば、客待ちデモ指定コマンドを送信するときなどに、そのエラーの発生状態を通知する客待ちデモ指定コマンドを送信するようにしてもよい。また、乱数値エラー時処理を実行することなく、CPU56の動作を停止状態(HALT)へ移行させてもよい。
このように、乱数回路異常検査処理では、例えばステップS571の処理を繰り返し実行することなどにより、乱数回路509の乱数値レジスタR1D(559A)や乱数値レジスタR2D(559B)に格納された数値データを複数回読み出す。そして、ステップS572〜ステップS574の処理を実行することなどにより読み出した数値データの全ビットを監視して、変化しないビットデータの有無にもとづき、ステップS576にて乱数回路509の動作状態に異常が発生したか否かを判定する。これにより、乱数回路509の動作状態に異常が発生していることを確実かつ容易に検知して、不正行為を防止することができる。
なお、ステップS14bの乱数回路異常検査処理は、CPU56が実行するものに限定されず、CPU56以外の遊技制御用マイクロコンピュータ560における内蔵回路により乱数回路異常検査処理が実行されてもよい。一例として、乱数回路509が乱数回路異常検査処理を実行する機能を有し、乱数用クロックRCLKの周波数異常が検知されたときや、乱数値の異常が検知されたときに、エラーの発生をCPU56に通知するようにしてもよい。また、乱数回路異常検査処理は、ステップS14bのみにて実行されるものに限定されず、例えば遊技制御用マイクロコンピュータ560にてタイマ割込みが発生する毎に、後述する遊技制御用タイマ割込み処理(図45参照)にて乱数回路異常検査処理の一部または全部が実行されるようにしてもよい。すなわち、ステップS14bの乱数回路異常検査処理は、図41に示すステップS16の処理を実行した後に、実行される処理としてもよい。一例として、遊技制御用タイマ割込み処理にて乱数回路異常検査処理が実行される場合には、例えば図44に示すステップS561〜ステップS566の処理を実行する一方で、ステップS567〜ステップS577の処理は実行されないようにしてもよい。ステップS567〜ステップS577の処理は、例えばステップS569の処理を繰り返し実行して乱数回路509から数値データを繰り返し読み出すためなどに、長い処理時間を要することがあり、遊技制御用タイマ割込み処理において処理落ちが発生するおそれがある。そこで、この場合にはステップS561〜ステップS566の処理のみを実行することで、遊技制御用タイマ割込み処理における処理量を軽減し、処理落ちの発生を防止することができる。
また、CPU56は、シリアル通信回路511を初期設定するシリアル通信回路設定処理を実行する(ステップS15a)。この場合、CPU56は、シリアル通信回路設定プログラムに従ってROM54の所定領域に格納されているデータをシリアル通信回路511に設定することによって、シリアル通信回路511に払出制御用マイクロコンピュータとシリアル通信させるための設定を行う。
シリアル通信回路511を初期設定すると、CPU56は、シリアル通信回路511の割り込み要求に応じて実行する割込処理の優先順位を初期設定する(ステップS15b)。この場合、CPU56は、割込優先順位設定プログラムに従って処理を実行することによって、割込処理の優先順位を初期設定する。
例えば、CPU56は、各割込処理のデフォルトの優先順位を含む所定の割込処理優先順位テーブルに従って、各割込処理の優先順位を初期設定する。この実施の形態では、CPU56は、割込処理優先順位テーブルに従って、シリアル通信回路511において通信エラーが発生したことを割込原因とする割込処理を優先して実行するように初期設定する。この場合、例えば、CPU56は、通信エラーが発生したことを割込原因とする割込処理を優先して実行する旨を示す通信エラー時割込優先実行フラグをセットする。
なお、この実施の形態では、タイマ割込とシリアル通信回路511からの割り込み要求とが同時に発生した場合、CPU56は、タイマ割込による割込処理を優先して行う。
また、ユーザによって各割込処理のデフォルトの優先順位を変更することもできる。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された割込処理を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、割込処理の優先順位を設定する。
なお、ステップS15a〜S15bだけでなく、シリアル通信回路511の設定処理の一部は、ステップS5の処理においても実行される。例えば、ステップS5において、内蔵デバイスレジスタとして、シリアル通信回路511のボーレートレジスタや通信設定レジスタ、割込制御レジスタ、ステータスレジスタに、初期値を設定する処理が実行される。
例えば、内蔵デバイスレジスタの設定において、CPU56は、シリアル通信回路511のボーレートを設定する。この場合、CPU56は、シリアル通信回路511のボーレートレジスタ702に、設定するボーレートに対応する設定値を書き込む。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された設定値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、設定値をボーレートレジスタ702に書き込む。例えば、CPU56によってボーレート設定値「156」が設定された場合、ボーレート生成回路703によって、式(1)およびクロック周波数「3MHz」を用いてボーレート「1201.92bps」が生成される。
また、例えば、CPU56は、シリアル通信回路511が送受信するデータのデータフォーマットを設定する。この場合、CPU56は、制御レジスタA707の各ビットの値を設定することによって、送受信データのデータ長(8ビットまたは9ビット)、パリティ機能の使用の有無を設定する。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタA707の各ビットの値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタA707の各ビットの値を設定する。
また、例えば、CPU56は、シリアル通信回路511が発生する各割込要求を許可するか否かを設定する。この場合、CPU56は、制御レジスタB708のビット5,6,7の値を設定することによって、送信時割り込み要求(データの送信時に行う割り込み要求である送信割り込み要求や、送信完了時に行う送信完了割り込み要求)および受信時割り込み要求を許可するか否かを設定する。なお、CPU56は、送信時割り込み要求と受信時割り込み要求との両方を許可するように設定することも可能であり、送信時割り込み要求と受信時割り込み要求とのいずれか一方のみを許可するように設定することも可能である。また、CPU56は、制御レジスタC709のビット0〜3の値を設定することによって、各通信エラー時割り込み要求を許可するか否かを設定する。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタB708および制御レジスタC709の各ビットの値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタB708および制御レジスタC709の各ビットの値を設定する。
また、メイン処理の初期化処理において、後述する賞球不足エラーや賞球過剰エラーを検出するために用いられる賞球個数カウンタに初期値として「250」が設定される処理も実行される。なお、賞球個数カウンタに初期値を設定する処理を、例えば、ステップS92,S12の作業領域に各初期値を順次設定する処理において実行してもよく、ステップS17〜S19の処理に移行するまでの間に実行していればよい。
そして、CPU56は、所定時間(例えば4ms)ごとに定期的にタイマ割込がかかるように遊技制御用マイクロコンピュータ560に内蔵されているCTCのレジスタの設定を行うタイマ割込設定処理を実行する(ステップS16)。すなわち、初期値として例えば4msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、4msごとに定期的にタイマ割込がかかるとする。
タイマ割込の設定が完了すると、CPU56は、まず、割込禁止状態にして(ステップS17)、初期値用乱数更新処理(ステップS18a)と表示用乱数更新処理(ステップS18b)を実行して、再び割込許可状態にする(ステップS19)。すなわち、CPU56は、初期値用乱数更新処理および表示用乱数更新処理が実行されるときには割込禁止状態にして、初期値用乱数更新処理および表示用乱数更新処理の実行が終了すると割込許可状態にする。
なお、初期値用乱数更新処理とは、初期値用乱数を発生するためのカウンタのカウント値を更新する処理である。初期値用乱数とは、大当りの種類を決定するための判定用乱数(例えば、大当りを発生させる特別図柄を決定するための大当り図柄決定用乱数や、遊技状態を確変状態に移行させるかを決定するための確変決定用乱数、普通図柄にもとづく当りを発生させるか否かを決定するための普通図柄当たり判定用乱数)を発生するためのカウンタ(判定用乱数発生カウンタ)等のカウント値の初期値を決定するための乱数である。後述する遊技制御処理(遊技制御用マイクロコンピュータが、遊技機に設けられている演出表示装置9、可変入賞球装置15、球払出装置97等の遊技用の装置を、自身で制御する処理、または他のマイクロコンピュータに制御させるために指令信号を送信する処理、遊技装置制御処理ともいう)において、判定用乱数発生カウンタのカウント値が1周すると、そのカウンタに初期値が設定される。
また、表示用乱数とは、特別図柄表示器8の表示を決定するための乱数である。この実施の形態では、表示用乱数として、特別図柄の変動パターンを決定するための変動パターン決定用乱数や、大当りを発生させない場合にリーチとするか否かを決定するためのリーチ判定用乱数が用いられる。また、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。
また、表示用乱数更新処理が実行されるときに割込禁止状態にされるのは、表示用乱数更新処理および初期値用乱数更新処理が後述するタイマ割込処理でも実行される(すなわち、タイマ割込処理のステップS26,S27でも同じ処理が実行される)ことから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS18a,S18bの処理中にタイマ割込が発生してタイマ割込処理中で初期値用乱数や表示用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS18a,S18bの処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
ステップS19で割込許可状態に設定されると、次にステップS17の処理が実行されて割込禁止状態とされるまで、タイマ割込またはシリアル通信回路511からの割り込み要求を許可する状態となる。そして、割込許可状態に設定されている間に、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、後述するタイマ割込処理を実行する。また、割込許可状態に設定されている間に、シリアル通信回路511から割り込み要求が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、後述する各割込処理(通信エラー割込処理や、受信時割込処理、送信完了割込処理)を実行する。また、本実施の形態では、ステップS17からステップS19までのループ処理の前にステップS15bを実行することによって、タイマ割込または割り込み要求を許可する状態に設定される前に、割込処理の優先順位を設定または変更する処理が行われる。
次に、タイマ割込処理について説明する。図45は、タイマ割込処理を示すフローチャートである。メイン処理の実行中に、具体的には、ステップS17〜S19のループ処理の実行中における割込許可になっている期間において、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、タイマ割込の発生に応じて起動されるタイマ割込処理を実行する。タイマ割込処理において、CPU56は、まず、電源断信号が出力されたか否か(オン状態になったか否か)を検出する電源断処理(電源断検出処理)を実行する(ステップS20)。そして、CPU56は、スイッチ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23および入賞口スイッチ29a,30a等のスイッチの検出信号を入力し、各スイッチの入力を検出する(スイッチ処理:ステップS21)。具体的には、各スイッチの検出信号を入力する入力ポートの状態がオン状態であれば、各スイッチに対応して設けられているスイッチタイマの値を+1する。
次に、CPU56は、特別図柄表示器8、普通図柄表示器10、特別図柄保留記憶表示器18、普通図柄保留記憶表示器41の表示制御を行う表示制御処理を実行する(ステップS22)。特別図柄表示器8および普通図柄表示器10については、ステップS36,S37で設定される出力バッファの内容に応じて各表示器に対して駆動信号を出力する制御を実行する。
次いで、CPU56は、磁石センサから検出信号を入力したことにもとづいて磁石センサエラー報知を行う磁石センサエラー報知処理を実行する(ステップS24)。
次いで、CPU56は、遊技制御に用いられる普通図柄当り判定用乱数等の各判定用乱数を生成するための各カウンタのカウント値を更新する処理を行う(判定用乱数更新処理:ステップS25)。また、CPU56は、初期値用乱数を発生するためのカウンタのカウント値を更新する処理を行う(初期値用乱数更新処理:ステップS26)。さらに、CPU56は、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行う(表示用乱数更新処理:ステップS27)。
次いで、CPU56は、特別図柄プロセス処理を行う(ステップS28)。特別図柄プロセス処理では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS29)。普通図柄プロセス処理では、普通図柄表示器10の表示状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
次いで、CPU56は、特別図柄の変動に同期する演出図柄に関する演出制御コマンドをシリアル通信回路511の送信データレジスタに設定して演出制御コマンドを送出する処理を行う(演出図柄コマンド制御処理:ステップS30)。なお、演出図柄の変動が特別図柄の変動に同期するとは、変動時間(可変表示期間)が同じであることを意味する。
次いで、CPU56は、例えばホール管理用コンピュータに供給される始動口信号、図柄確定回数1信号、大当り1〜3信号、時短信号、セキュリティ信号などのデータを出力する情報出力処理を行う(ステップS31)。
次いで、CPU56は、シリアル通信回路511を介して、払出制御用マイクロコンピュータ370と信号を送受信(入出力)する処理を実行するとともに、入賞が発生した場合には入賞口スイッチ29a,30a等の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS32)。なお、この実施の形態では、入賞口スイッチ29a,30a等がオンしたことにもとづく入賞検出に応じて、賞球個数コマンドの下位4ビットを異ならせることにより賞球個数を示すデータを賞球個数コマンドに設定し、当該設定した賞球個数コマンドをシリアル通信回路511を介して払出制御用マイクロコンピュータ370に出力する。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、賞球個数を示すデータが設定された賞球個数コマンドの受信に応じて球払出装置97を駆動する。
また、遊技機の制御状態を遊技機外部で確認できるようにするための試験信号を出力する処理である試験端子処理を実行する(ステップS33)。また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、CPU56は、出力ポート0のRAM領域における接続信号に関する内容およびソレノイドに関する内容を出力ポートに出力する(ステップS34:出力処理)。そして、CPU56は、保留記憶数の増減をチェックする記憶処理を実行する(ステップS35)。
また、CPU56は、特別図柄プロセスフラグの値に応じて特別図柄の演出表示を行うための特別図柄表示制御データを特別図柄表示制御データ設定用の出力バッファに設定する特別図柄表示制御処理を行う(ステップS36)。さらに、CPU56は、普通図柄プロセスフラグの値に応じて普通図柄の演出表示を行うための普通図柄表示制御データを普通図柄表示制御データ設定用の出力バッファに設定する普通図柄表示制御処理を行う(ステップS37)。
次いで、CPU56は、各状態表示灯の表示を行うための状態表示制御データを状態表示制御データ設定用の出力バッファに設定する状態表示灯表示処理を行う(ステップS38)。この場合、遊技状態が時短状態である場合には、時短状態であることを示す状態表示灯の表示を行うための状態表示制御データを出力バッファに設定する。なお、遊技状態が高確率状態(例えば、確変状態)にも制御される場合には、高確率状態であることを示す状態表示灯の表示を行うための状態表示制御データを出力バッファに設定するようにしてもよい。
次いで、CPU56は、遊技機のエラー状態などを表示させるために遊技機のエラー状態などを示す情報が設定された枠状態表示コマンドを演出制御用マイクロコンピュータ100に対して送信する枠状態出力処理を実行する(ステップS39)。
その後、割込許可状態に設定し(ステップS40)、処理を終了する。
以上の制御によって、この実施の形態では、遊技制御処理は4ms毎に起動されることになる。なお、遊技制御処理は、タイマ割込処理におけるステップS21〜S39(ステップS31,S33を除く。)の処理に相当する。また、この実施の形態では、タイマ割込処理で遊技制御処理が実行されているが、タイマ割込処理では例えば割込が発生したことを示すフラグのセットのみがなされ、遊技制御処理はメイン処理において実行されるようにしてもよい。
図46および図47は、ステップS20の電源断処理の一例を示すフローチャートである。電源断処理において、遊技制御用マイクロコンピュータ560は、まず、電源断信号が出力されているか否か(オン状態になっているか否か)確認する(ステップS450)。オン状態でなければ、RAM55に形成されているバックアップ監視タイマの値を0クリアする(ステップS451)。オン状態であれば、バックアップ監視タイマの値を1増やす(ステップS452)。そして、バックアップ監視タイマの値が判定値(例えば2)と一致すれば(ステップS453)、ステップS454以降の電力供給停止時処理すなわち電力の供給停止のための準備処理を実行する。つまり、遊技の進行を制御する状態から遊技状態を保存させるための電力供給停止時処理(電源断時制御処理)を実行する状態に移行する。なお、「RAMに形成されている」とは、RAM内の領域であることを意味する。
バックアップ監視タイマと判定値とを用いることによって、判定値に相当する時間だけ電源断信号のオン状態が継続したら、電力供給停止時処理が開始される。すなわち、ノイズ等で一瞬電源断信号のオン状態が発生しても、誤って電力供給停止時処理が開始されるようなことはない。なお、バックアップ監視タイマの値は、遊技機への電力供給が停止しても、所定期間はバックアップ電源によって保存される。従って、メイン処理におけるステップS8では、バックアップ監視タイマの値が判定値と同じ値になっていることによって、電力供給停止時処理の処理結果が保存されていることを確認できる。
電力供給停止時処理において、遊技制御用マイクロコンピュータ560は、パリティデータを作成する(ステップS454〜S463)。すなわち、まず、クリアデータ(00)をチェックサムデータエリアにセットし(ステップS454)、電力供給停止時でも内容が保存されるべきRAM領域の先頭アドレスに相当するチェックサム算出開始アドレスをポインタにセットする(ステップS455)。また、電力供給停止時でも内容が保存されるべきRAM領域の最終アドレスに相当するチェックサム算出回数をセットする(ステップS456)。
次いで、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する(ステップS457)。演算結果をチェックサムデータエリアにストアするとともに(ステップS458)、ポインタの値を1増やし(ステップS459)、チェックサム算出回数の値を1減算する(ステップS460)。そして、ステップS457〜S460の処理を、チェックサム算出回数の値が0になるまで繰り返す(ステップS461)。
チェックサム算出回数の値が0になったら、遊技制御用マイクロコンピュータ560は、チェックサムデータエリアの内容の各ビットの値を反転する(ステップS462)。そして、反転後のデータをチェックサムデータエリアにストアする(ステップS463)。このデータが、電源投入時にチェックされるパリティデータになる。次いで、RAMアクセスレジスタにアクセス禁止値を設定する(ステップS471)。以後、内蔵RAM55のアクセスができなくなる。
さらに、遊技制御用マイクロコンピュータ560は、ROM54に格納されているポートクリア設定テーブルの先頭アドレスをポインタにセットする(ステップS472)。ポートクリア設定テーブルにおいて、先頭アドレスには処理数(クリアすべき出力ポートの数)が設定され、次いで、出力ポートのアドレスおよび出力値データ(クリアデータ:出力ポートの各ビットのオフ状態の値)が、処理数分の出力ポートについて順次設定されている。
遊技制御用マイクロコンピュータ560は、ポインタが指すアドレスのデータ(すなわち処理数)をロードする(ステップS473)。また、ポインタの値を1増やし(ステップS474)、ポインタが指すアドレスのデータ(すなわち出力ポートのアドレス)をロードする(ステップS475)。さらに、ポインタの値を1増やし(ステップS476)、ポインタが指すアドレスのデータ(すなわち出力値データ)をロードする(ステップS477)。そして、出力値データを出力ポートに出力する(ステップS478)。その後、処理数を1減らし(ステップS479)、処理数が0でなければステップS474に戻る。処理数が0であれば、すなわち、クリアすべき出力ポートを全てクリアしたら、タイマ割込を停止し(ステップS481)、ループ処理に入る。なお、出力ポートをクリアする処理をチェックサムデータを作成する処理の前に実行してもよい。例えば、CPU56は、ステップS453でYと判定した後、直ちにステップS472〜S480の出力ポートクリアの処理を実行するようにしてもよい。
ループ処理では、電源断信号がオフ状態になったか否かを監視する(ステップS482)。そして、電源断信号がオン状態の間は(ステップS482のY)、ステップS482の処理を繰り返し実行して待機する。これに対して、ステップS482にて電源断信号がオフ状態となったときには(ステップS482のY)、乱数ラッチフラグをクリアするための処理を実行する。
すなわち、乱数ラッチフラグレジスタRDFMのビット番号[0]に格納される乱数ラッチフラグデータRDFM0のビット値が“1”であるか否かに応じて、乱数値レジスタR1Dに対応する乱数ラッチフラグがオンであるか否かを判定する(ステップS483)。そして、この乱数ラッチフラグがオンであれば(ステップS483のY)、乱数値レジスタR1Dの読み出しを行うことにより、乱数ラッチフラグデータRDFM0のビット値を“0”にクリアして、対応する乱数ラッチフラグをオフ状態とする(ステップS484)。また、ステップS483にて乱数ラッチフラグデータRDFM0で指定される乱数ラッチフラグがオフである場合や(ステップS483のN)、ステップS484の処理を実行した後には、乱数ラッチフラグレジスタRDFMのビット番号[1]に格納される乱数ラッチフラグデータRDFM1のビット値が“1”であるか否かに応じて、乱数値レジスタR2Dに対応する乱数ラッチフラグがオンであるか否かを判定する(ステップS485)。このとき、乱数ラッチフラグがオンであれば(ステップS485のY)、乱数値レジスタR2Dの読み出しを行うことにより、乱数ラッチフラグデータRDFM1のビット値を“0”にクリアして、対応する乱数ラッチフラグをオフ状態とする(ステップS486)。こうしたステップS484やステップS486の処理により、乱数ラッチフラグがオフ状態とされて、乱数値レジスタR1Dや乱数値レジスタR2Dに新たな数値データの格納が許可された状態に設定できる。なお、ステップS484やステップS486の処理により乱数値レジスタR1Dや乱数値レジスタR2Dから読み出された数値データは、特図表示結果を「大当り」として大当り遊技状態に制御するか否かの判定処理などには使用せず、そのまま破棄(消去)すればよい。また、ステップS483〜ステップS486の処理に代えて、乱数ラッチフラグデータRDFM0や乱数ラッチフラグデータRDFM1の値にかかわらず、乱数値レジスタR1Dと乱数値レジスタR2Dの読み出しを行うことにより、各乱数ラッチフラグをオフ状態とする処理が実行されてもよい。なお、この実施の形態では、始動入賞口が1つであるので、乱数値レジスタR1D,R2Dのうちの一方のみを使用するようにし、一方の乱数値レジスタの読み出しのみを行うようにしてもよい。また、例えば、遊技機を3以上の始動入賞口を備えるように構成してもよく、始動入賞口が3つある場合には3つの乱数値レジスタの読み出しを行うようにしてもよい。そのように、使用されている乱数値レジスタ全ての読み込みを行い、それぞれ乱数ラッチフラグがクリアされるように構成されていればよい。
ステップS485にて乱数ラッチフラグデータRDFM1で指定される乱数ラッチフラグがオフであるときや(ステップS485のN)、ステップS486の処理を実行した後には、所定の電断復旧時における設定を行った後(ステップS487)、図41に示すメイン処理の先頭にリターンする。一例として、ステップS487の処理では、CPU56に内蔵されたスタックポインタに電源断復旧時ベクタテーブルの記憶アドレスを格納し、遊技制御用タイマ割込み処理から復帰(リターン)させる。ここで、電源断復旧時ベクタテーブルは、ROM54に記憶された制御コード(遊技制御プログラム)の先頭アドレスを指定するものであればよい。図45に示すタイマ割込処理のような割込処理から復帰(リターン)するときには、スタックポインタで指定されるアドレスの記憶データが復帰アドレスとして読み出される。こうして、ステップS487の処理を実行した後には、CPU56により、ROM54に記憶されている制御コードの先頭から、遊技制御の実行を開始(再開)させることができる。
以上の処理によって、電力供給が停止する場合には、ステップS454〜S481の電力供給停止時処理が実行され、電力供給停止時処理が実行されたことを示すデータ(判定値になっているバックアップ監視タイマのおよびチェックサム)がバックアップRAMへストアされ、RAMアクセスが禁止状態にされ、出力ポートがクリアされ、かつ、遊技制御処理を実行するためのタイマ割込が禁止状態に設定される。
この実施の形態では、RAM55がバックアップ電源によって電源バックアップ(遊技機への電力供給が停止しても所定期間はRAM55の内容が保存されこと)されている。この例では、ステップS452〜S479の処理によって、バックアップ監視タイマの値とともに、電源断信号が出力されたときのRAM55の内容にもとづくチェックサムもRAM55のバックアップ領域に保存される。遊技機への電力供給が停止した後、所定期間内に電力供給が復旧したら、遊技制御手段は、上述したステップS41〜S44の処理によって、RAM55に保存されているデータ(電力供給が停止した直前の遊技制御手段による制御状態である遊技状態を示すデータ(例えば、プロセスフラグの状態、大当り中フラグの状態、確変フラグの状態、出力ポートの出力状態等)を含む)に従って、遊技状態を、電力供給が停止した直前の状態に戻すことができる。なお、電力供給停止の期間が所定期間を越えたらバックアップ監視タイマの値とチェックサムとが正規の値とは異なるはずであるから、その場合には、ステップS10〜S13の初期化処理が実行される。
以上のように、電力供給停止時処理(電力の供給停止のための準備処理)によって、遊技状態を電力供給が停止した直前の状態に戻すためのデータが確実に変動データ記憶手段(この例ではRAM55の一部の領域)に保存される。よって、停電等による電源断が生じても、所定期間内に電源が復旧すれば、遊技状態を電力供給が停止した直前の状態に戻すことができる。
また、電源断信号がオフ状態になった場合には、ステップS1に戻る。その場合、電力供給停止時処理が実行されたことを示すデータが設定されているので、ステップS91〜S93の復旧処理が実行される。よって、電力供給停止時処理を実行した後に払出制御基板37からの電源断信号がオフ状態になったときには、遊技の進行を制御する状態に戻る。従って、電源瞬断等が生じても、遊技制御処理が停止してしまうようなことはなく、自動的に、遊技制御処理が続行される。
次に、メイン処理における賞球処理(ステップS32)を説明する。まず、主基板31と払出制御基板37との間で送受信される払出制御信号(接続信号、賞球情報)および払出制御コマンドについて説明する。
図48は、遊技制御手段から払出制御手段に対して出力される制御信号の内容の一例を示す説明図である。この実施の形態では、払出制御等に関する各種の制御を行うために、主基板31と払出制御基板37との間で制御信号として接続信号および賞球情報が送受信される。図48に示すように、接続信号は、主基板31の立ち上がり時(遊技制御手段が遊技制御処理を開始したとき)に出力され、払出制御基板37に対して主基板31が立ち上がったことを通知するための信号(主基板31の接続信号)である。また、接続信号は、賞球払出が可能な状態であることを示す。なお、接続信号は、遊技制御用マイクロコンピュータ560のI/Oポート57および出力回路67Aを介して出力され、払出制御用マイクロコンピュータ370の入力回路373AおよびI/Oポート372eを介して払出制御用マイクロコンピュータ370に入力される。接続信号は、1ビットのデータであり、1本の信号線によって送信される。なお、接続信号は、電源投入時に実行されるステップS4の処理によって出力ポート0の接続信号に対応するビットに初期値が設定されることによって出力可能な状態となる(具体的にはステップS34の処理によって出力されるが、ステップS4のタイミングで出力されるようにしてもよい)。また、賞球情報は、払出制御基板37側において賞球の払出を1個検出するごとに、主基板31に対して、10個の賞球払出を検出したことを通知するための情報である。なお、賞球情報は、払出制御用マイクロコンピュータ370のI/Oポート372aおよび出力回路373Bを介して出力され、遊技制御用マイクロコンピュータ560の入力回路67BおよびI/Oポート57を介して遊技制御用マイクロコンピュータ560に入力される。賞球情報は、1ビットのデータであり、1本の信号線によって送信される。
払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560と同様に、シリアル通信回路380を内蔵する。また、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路511と、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路380との間で、各種払出制御コマンドが送受信される。なお、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路380の構成及び機能は、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路511の構成及び機能と同様である。
図49は、遊技制御手段と払出制御手段との間で送受信される制御コマンドの内容の一例を示す説明図である。この実施の形態では、払出制御等に関する各種の制御を行うために、主基板31と払出制御基板37とのマイクロコンピュータの間で各種払出制御コマンドが送受信される。
上述したように、払出制御コマンドは、8ビットのデータ(2進8桁のデータ)によって構成され、設定された8ビットのデータの内容によって所定の内容を示す制御コマンドとして出力される。
接続確認コマンドは、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の接続状態が正常であるか否かを確認するために一定間隔(1s)毎に遊技制御用マイクロコンピュータ560から送信される制御コマンドである。接続確認コマンドのデータの内容は「A0(H)」すなわち「10100000」とされている。
接続OKコマンドは、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の接続状態が正常であることを通知するための制御コマンドであって、払出制御用マイクロコンピュータ370が接続確認コマンドの受信に応じて応答信号として送信する制御コマンドである。接続OKコマンドのデータの内容は「8x(H)」すなわち「1000xxxx」とされている。ここで、接続OKコマンドの2バイト目の「xxxx」については、図50に示すように、賞球エラー(入賞にもとづく賞球払出動作や球貸し要求にもとづく球貸払出動作が正常に行えない状態になった異常状態:具体的には、図96に示す主制御未接続エラーや、払出スイッチ異常検知エラー1、払出スイッチ異常検知エラー2、払出ケースエラー、主制御通信エラー)が発生した場合には、1ビット目(ビット0)の「x」に「1」が設定される。また、満タンエラーが発生した場合には、2ビット目(ビット1)の「x」に「1」が設定される。また、球切れエラーが発生した場合には、3ビット目(ビット2)の「x」に「1」が設定される。また、後述する賞球や貸し球の払出数の個数異常の累積値が所定値(例えば、2000個)に達した場合の払出個数異常エラーが発生した場合には、4ビット目(ビット3)の「x」に「1」が設定される。このようにして、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の接続確認を行っている最中に、払出制御用マイクロコンピュータ370における所定のエラーの発生を遊技制御用マイクロコンピュータ560に通知することができる。なお、図50に示す例では、接続OKコマンドに、制御状態として払い出しに関するエラー(賞球エラーや、満タンエラー、球切れエラー、払出個数異常エラー)を示す値を設定する場合を示したが、エラー以外の制御状態を接続OKコマンドに設定するようにしてもよい。例えば、払出制御用マイクロコンピュータ370は、賞球払出動作中である旨や貸し球払出動作中である旨を示す値を制御状態として接続OKコマンドにセットして、遊技制御用マイクロコンピュータ560に送信するようにしてもよい。
賞球個数コマンドは、払出要求を行う遊技球の個数(0〜15個)を通知するための制御コマンドであって、遊技制御用マイクロコンピュータ560が入賞の発生にもとづいて送信する制御コマンドである。賞球個数コマンドのデータの内容は「5x(H)」すなわち「0101xxxx」とされている。この実施の形態では、始動口スイッチ14aで遊技球が検出されると3個の賞球払出を行い、入賞口スイッチ29a,30aのいずれかで遊技球が検出されると10個の賞球払出を行い、カウントスイッチ23で遊技球が検出されると15個の賞球払出を行う。よって、始動口スイッチ14aで遊技球が検出された場合、賞球数3個を通知するための賞球個数コマンド「01010011」が送信され、入賞口スイッチ29a,30aのいずれかで遊技球が検出された場合、賞球数10個を通知するための賞球個数コマンド「01011010」が送信され、カウントスイッチ23で遊技球が検出された場合、賞球数15個を通知するための賞球個数コマンド「01011111」が送信される。
賞球個数受付コマンドは、賞球個数コマンドで指定された賞球個数を受け付けたことを通知するための制御コマンドであって、払出制御用マイクロコンピュータ370が賞球個数コマンドの受信に応じて応答信号として送信する制御コマンドである。賞球個数受付コマンドのデータの内容は「70(H)」すなわち、「01110000」とされている。
賞球終了コマンドは、賞球動作(賞球払出動作)が終了したことを示す制御コマンドであって、払出制御用マイクロコンピュータ370が賞球動作の終了にもとづいて送信する制御コマンドである。賞球終了コマンドのデータの内容は「50(H)」すなわち「01010000」とされている。
賞球準備中コマンドは、賞球動作に時間がかかっている場合や、貸し球動作中であったり所定のエラーが発生したりして賞球動作が終了していないことを通知する制御コマンドである。賞球準備中コマンドのデータの内容は「4x(H)」すなわち「0100xxxx」とされている。ここで、賞球準備中コマンドの2バイト目の「xxxx」については、図50に示すように、賞球エラーが発生した場合には、1ビット目(ビット0)の「x」に「1」が設定される。また、満タンエラーが発生した場合には、2ビット目(ビット1)の「x」に「1」が設定される。また、球切れエラーが発生した場合には、3ビット目(ビット2)の「x」に「1」が設定される。また、後述する賞球や貸し球の払出数の個数異常の累積値が所定値(例えば、2000個)に達した場合の払出個数異常エラーが発生した場合には、4ビット目(ビット3)の「x」に「1」が設定される。このようにして、払出制御用マイクロコンピュータ370から、賞球動作に時間がかかっている場合や、貸し球動作中であったり賞球動作の実行中に所定のエラーが発生したりして賞球動作が終了していないことを遊技制御用マイクロコンピュータ560に通知することができるとともに、エラーの内容も遊技制御用マイクロコンピュータ560に通知することができる。賞球準備中コマンドは、接続OKコマンドと同様に、下位4ビットの内容をエラー状態に応じて異ならせる(所定ビットを異ならせる)ことによって所定のエラーが発生したことを通知している。なお、賞球準備中コマンドは、エラーが発生して賞球動作が実行できない状態のみならず、貸し球払出動作中であるために賞球の払出動作を直ちに開始できない状態や、賞球動作の実行中の状態(賞球個数コマンドで指定された賞球個数の払出動作を完了していない状態)においても出力されるコマンド(信号)である。なお、図50に示す例では、賞球準備中コマンドに、制御状態として払い出しに関するエラー(賞球エラーや、満タンエラー、球切れエラー、払出個数異常エラー)を示す値を設定する場合を示したが、エラー以外の制御状態を接続OKコマンドに設定するようにしてもよい。例えば、払出制御用マイクロコンピュータ370は、賞球払出動作中である旨や貸し球払出動作中である旨を示す値を制御状態として賞球準備中コマンドにセットして、遊技制御用マイクロコンピュータ560に送信するようにしてもよい。
なお、この実施の形態では、接続確認信号は払出制御コマンドのうちの接続確認コマンドによって実現され、応答信号は接続OKコマンドによって実現され、払出数信号は賞球個数コマンドによって実現され、受付信号は賞球個数受付コマンドによって実現され、払出終了信号は賞球終了コマンドによって実現され、払出中信号は賞球準備中コマンドによって実現される。
図51は、図48に示す制御信号および図49に示す制御コマンドの送受信に用いられる信号線等を示すブロック図である。図51に示すように、接続信号は、遊技制御用マイクロコンピュータ560によって出力回路67Aを介して出力され、入力回路373Aを介して払出制御用マイクロコンピュータ370に入力される。また、賞球情報は、払出制御用マイクロコンピュータ370によって出力回路373Bを介して出力され、入力回路67Bを介して遊技制御用マイクロコンピュータ560に入力される。なお、後述する賞球信号1や遊技機エラー状態信号も、払出制御用マイクロコンピュータ370によって出力回路373Bを介して出力され、入力回路67Bを介して遊技制御用マイクロコンピュータ560に入力されるようにしてもよい。また、扉開放信号や機構板開放信号も、払出制御用マイクロコンピュータ370によって出力回路373Bを介して出力され、入力回路67Bを介して遊技制御用マイクロコンピュータ560に入力されるようにしてもよい。
また、制御コマンドのうちの接続確認コマンドおよび賞球個数コマンドは、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路511から出力され、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路380に入力される。制御コマンドのうちの接続OKコマンド、賞球個数受付コマンド、賞球終了コマンドおよび賞球準備中コマンドは、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路380から出力され、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路511に入力される。なお、図51では、シリアル通信を行うための信号線として2本の信号線(遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370側にコマンドを送信するための信号線と払出制御用マイクロコンピュータ370から遊技制御用マイクロコンピュータ560側にコマンドを送信するための信号線)を示しているが、実際は1本の信号線で払出制御コマンドを送受信する。なお、遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370側にコマンドを送信するための信号線と、払出制御用マイクロコンピュータ370から遊技制御用マイクロコンピュータ560側にコマンドを送信するための信号線とを、別々の信号線として構成するようにしてもよい。
次に、通常動作時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの払出制御コマンドの送受信について説明する。この実施の形態では、遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370には接続確認コマンドと賞球個数コマンドとが送信され、払出制御用マイクロコンピュータ370から遊技制御用マイクロコンピュータ560には接続OKコマンドと賞球個数受付コマンドと賞球終了コマンドと賞球準備中コマンドとが送信される。
図52は、通常動作時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すシーケンス図である。図52に示すように、遊技制御用マイクロコンピュータ560は、シリアル通信回路511を介して、払出制御用マイクロコンピュータ370との間の信号線の接続が切れていないかどうかを確認するために、接続確認コマンドを払出制御用マイクロコンピュータ370に送信する。払出制御用マイクロコンピュータ370は、接続確認コマンドをシリアル通信回路380を介して受信すると、接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する。遊技制御用マイクロコンピュータ560は、接続OKコマンドを受信すると、受信した時点から1s(1秒)経過後に接続確認コマンドを送信する。遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370は、接続状態が正常である限り、上記のような接続確認の通信処理を繰り返し実行する。
図53および図54は、賞球動作時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すシーケンス図である。図53および図54に示すように、入賞が発生して賞球払出動作を実行するときに、遊技制御用マイクロコンピュータ560は、シリアル通信回路511を介して、賞球個数を示すデータが設定された賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。なお、この場合、遊技制御用マイクロコンピュータ560は、前回送信した接続確認コマンドに対して受信した接続OKコマンドの下位4ビットにエラーを示す値が設定されておらず(図50参照)、かつ当該接続OK信号を受信してから1秒が経過するまでの間に始動入賞していることを条件として、賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。
次いで、払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信すると、直ちに賞球動作の実行が可能であれば(すなわち、貸し球の払出動作中でなくエラーも発生していなければ)、賞球個数を受け付けたことを示す賞球個数受付コマンドをシリアル通信回路380を介して遊技制御用マイクロコンピュータ560に送信する。なお、賞球個数受付コマンドを送信した時点から1s(1秒)以内に賞球払出が完了しない場合には、賞球個数受付コマンドを送信した時点から1s(1秒)経過後に賞球準備中コマンドを送信する。そして、以後、賞球払出が完了するまでの間、賞球準備中コマンドを送信した時点から1s(1秒)経過するごとに繰り返し賞球準備中コマンドを送信する。また、賞球個数コマンドで指定された個数の賞球の払出動作を実行し、賞球払出動作が終了すると、賞球払出動作の終了を示す賞球終了コマンドをシリアル通信回路380を介して遊技制御用マイクロコンピュータ560に送信する。
次いで、遊技制御用マイクロコンピュータ560は、賞球終了コマンドを受信したときに、図53に示すように、次に払い出すべき賞球個数がまだ記憶されていない場合には、賞球終了コマンドを受信した時点から1s(1秒)経過後に新たな接続確認コマンドの送信を再開する。一方、図54に示すように、次に払い出すべき賞球個数が既に記憶されている場合には、1s(1秒)待つことなく、直ちに次の賞球個数を指定する賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。なお、この場合にも、遊技制御用マイクロコンピュータ560は、前回受信した接続OKコマンドまたは賞球準備中コマンドの下位4ビットにエラーを示す値が設定されておらず(図50参照)、かつ賞球終了コマンドを受信してから1秒が経過するまでの間に始動入賞していることを条件として、賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。以降、同様のシーケンスに従って制御コマンドの送受信が繰り返される。
図55は、直ちに賞球動作を実行できない場合における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すシーケンス図である。払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信しても、貸し球の払出動作中である場合や、エラー状態である場合には、受信した賞球個数コマンドで指定された賞球個数の賞球払出の動作を開始できない。このような場合には、図55に示すように、払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信しても、直ちに賞球個数受付コマンドを送信せず、賞球払出動作が終了していないことを通知する賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。この場合、払出制御用マイクロコンピュータ370は、貸し球の払出動作を終了して賞球動作を開始可能な状態となるか、エラーが解除されない限り、一定間隔で(1s毎に)賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。
次いで、払出制御用マイクロコンピュータ370は、貸し球の払出動作を終了して次の賞球動作を開始可能な状態となるか、エラーが解除されると、賞球個数を受け付けたことを示す賞球個数受付コマンドをシリアル通信回路380を介して遊技制御用マイクロコンピュータ560に送信する。なお、賞球個数受付コマンドを送信した時点から1s(1秒)以内に賞球払出が完了しない場合には、賞球個数受付コマンドを送信した時点から1s(1秒)経過後に賞球準備中コマンドを送信する。そして、以後、賞球払出が完了するまでの間、賞球準備中コマンドを送信した時点から1s(1秒)経過するごとに繰り返し賞球準備中コマンドを送信する。また、賞球個数コマンドで指定された個数の賞球の払出動作を実行し、賞球払出動作が終了すると、賞球払出動作の終了を示す賞球終了コマンドをシリアル通信回路380を介して遊技制御用マイクロコンピュータ560に送信する。
図56は、通常動作時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すタイミング図である。図56に示すように、遊技制御用マイクロコンピュータ560は、接続確認コマンドを払出制御用マイクロコンピュータ370に送信すると、払出制御用マイクロコンピュータ370から送信される接続OKコマンドを受信する。遊技制御用マイクロコンピュータ560は、接続OKコマンドを受信すると、受信した時点から1s(1秒)経過後に接続確認コマンドを再び送信する。遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370は、接続状態が正常である限り、上記のような接続確認の通信処理を繰り返し実行する。
接続確認の通信処理を実行していないとき(接続OKコマンドを受信してから次の接続確認コマンドを送信するまでの間)に入賞があった場合には、遊技制御用マイクロコンピュータ560は、接続確認コマンドを繰り返し送信する制御を中断し、賞球個数を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定した賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信すると、賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する。この場合、遊技制御用マイクロコンピュータ560は、賞球個数受付コマンドを受信したことにもとづいて、賞球個数記憶を減算する処理を行う(具体的には、後述する賞球コマンド出力カウンタを1減算する処理を行う。ステップS52404参照)。そして、払出制御用マイクロコンピュータ370は、賞球個数コマンドで指定された個数の賞球の払い出しを行い、賞球の払い出し(賞球払出動作)が終了すると、賞球終了コマンドを遊技制御用マイクロコンピュータ560に送信する。なお、前述したように、賞球払出動作に時間がかかる場合には、賞球払出動作が完了するまで、払出制御用マイクロコンピュータ370は、1s(1秒)経過するごとに賞球準備中コマンドを繰り返し送信する。遊技制御用マイクロコンピュータ560は、賞球終了コマンドを受信すると、次に払い出すべき賞球個数がまだ記憶されていない場合には、受信した時点から1s(1秒)経過後に接続確認コマンドを送信する。
接続確認の通信処理の実行中(接続確認コマンドを送信してから接続OKコマンドを受信するまでの間)に入賞があった場合は、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370との接続状態が確認できていない段階であるので、賞球個数コマンドを直ちに送信せずに、接続OKコマンドの受信を確認できるまで待つ。そして、払出制御用マイクロコンピュータ370からの接続OKコマンドを受信すると、遊技制御用マイクロコンピュータ560は、賞球個数を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定した賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信すると、賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する。そして、払出制御用マイクロコンピュータ370は、以下同様の処理を実行し、賞球個数コマンドで指定された個数の賞球の払い出しを行い、賞球の払い出し(賞球払出動作)が終了すると、賞球終了コマンドを遊技制御用マイクロコンピュータ560に送信する。
なお、賞球終了コマンドを受信した後、遊技制御用マイクロコンピュータ560は、前回受信した接続OKコマンドまたは賞球準備中コマンドの下位4ビットにエラーを示す値が設定されておらず(図50参照)、かつ賞球終了コマンドを受信してから1秒が経過するまでの間に始動入賞している場合にも、賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。すなわち、この実施の形態では、遊技制御用マイクロコンピュータ560は、エラーを示す値が設定されていない接続OK信号を受信してから1秒が経過するまでの間と、賞球終了コマンドを受信してから1秒を経過するまでの間とに、賞球個数コマンドを送信可能な状態になっている。
図57は、賞球中にエラーが発生した場合における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すタイミング図である。図57に示すように、遊技制御用マイクロコンピュータ560は、接続確認コマンドを払出制御用マイクロコンピュータ370に送信すると、払出制御用マイクロコンピュータ370から送信される接続OKコマンドを受信する。接続確認の通信処理を実行していないときに入賞があった場合は、遊技制御用マイクロコンピュータ560は、賞球個数を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定した賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信すると、賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する。そして、払出制御用マイクロコンピュータ370は、賞球個数コマンドで指定された個数の賞球の払い出しを行う。賞球個数コマンドで指定された個数の賞球の払出動作を実行しているときに、所定のエラー(例えば、払出個数異常エラー、球貸し、満タン、球切れのエラー)が発生し、賞球払出動作ができない状態(異常状態、エラー状態)になった場合は、払出制御用マイクロコンピュータ370は、エラーが発生し賞球払出動作が終了していないことを通知する賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。この場合、払出制御用マイクロコンピュータ370は、発生したエラーが解除されない限り、一定間隔で(1s毎に)賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。所定のエラー状態が解除(解消)されて賞球払出動作が終了すると、払出制御用マイクロコンピュータ370は、賞球終了コマンドを遊技制御用マイクロコンピュータ560に送信する。なお、賞球準備中コマンドは、賞球個数受付コマンドを送信した後、払出制御用マイクロコンピュータ370から遊技制御用マイクロコンピュータ560に1s毎に送信されることになる。また、遊技制御用マイクロコンピュータ560が賞球準備中コマンドを受信している間には、接続確認コマンドを送信しないように制御される。具体的には、払出制御用マイクロコンピュータ370は賞球払出動作が終了したことにもとづいて賞球終了コマンドを出力するようにし、遊技制御用マイクロコンピュータ560は当該賞球終了コマンドを受信したことにもとづいて、所定周期(1S)毎に接続確認コマンドを出力する状態に復帰するように制御する。
図58は、接続確認中の通信エラー時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すタイミング図である。図58に示すように、遊技制御用マイクロコンピュータ560は、接続確認コマンドを払出制御用マイクロコンピュータ370に送信したが、払出制御用マイクロコンピュータ370からの接続OKコマンドを受信していない場合、つまり、接続状態の異常(通信エラー)が発生した場合には、接続確認コマンドを送信した時点から10s(10秒)経過後に再度、接続確認コマンドを送信する。すなわち、接続OKコマンドを受信できない場合に接続確認コマンドを1s(1秒)ごとに送信する処理を継続したのでは、通信状態が不安定な状態であるにもかかわらず接続確認コマンドの送信回数が無駄に多くなってしまうので、接続確認コマンドの送信間隔を10s(10秒)に広げて、通信状態が回復するまで必要最低限の送信回数の接続確認コマンドを送信する制御に切り替える。通信エラーが発生しているときに入賞が発生した場合には、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370から接続OKコマンドを受信するまでは、新たな入賞が発生しても、賞球個数コマンドを送信せずに、一定間隔(10s)毎に接続確認コマンドを送信し続ける。通信エラーが解除(解消)され、払出制御用マイクロコンピュータ370から接続OKコマンドが送信されると、遊技制御用マイクロコンピュータ560は、賞球個数コマンドを送信する。
図59は、賞球個数通知中の通信エラー時における遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの信号の送受信を示すタイミング図である。図59に示すように、遊技制御用マイクロコンピュータ560は、入賞が発生したことにもとづいて賞球個数コマンドを送信したが、払出制御用マイクロコンピュータ370からの賞球個数受付コマンドを受信していない場合、つまり、接続状態の異常(通信エラー)が発生した場合には、賞球個数コマンドを送信した時点から10s(10秒)経過後に、接続確認コマンドを払出制御用マイクロコンピュータ370に送信する。そして、通信状態が回復するまで10s(10秒)経過ごとに接続確認コマンドを繰り返し送信する。その後、通信エラーが解除(解消)され、払出制御用マイクロコンピュータ370から接続OKコマンドを受信した場合には、賞遊技制御用マイクロコンピュータ560は、通常(正常時)の動作に戻り、賞球個数コマンドを払出制御用マイクロコンピュータ370に再送信(リトライ)する。なお、具体的には、遊技制御用マイクロコンピュータ560は、賞球個数コマンドを送信しても賞球個数受付コマンドを受信できなかった場合には、賞球個数記憶を減算しないようにし(後述するステップS52403でNであればステップS52404の賞球コマンド出力カウンタの値を1減算しないようにし)、次に賞球個数コマンドの送信を行うときに賞球コマンド出力カウンタの値がそのまま維持されていることにもとづいて賞球個数コマンドを再送信する(後述するステップS52301〜S52035参照)。
次に、賞球処理(ステップS32)について説明する。図60は、ステップS32の賞球処理の一例を示すフローチャートである。賞球処理において、遊技制御用マイクロコンピュータ560(具体的には、CPU56)は、賞球コマンド出力カウンタ加算処理(ステップS501)、賞球制御処理(ステップS502)および賞球カウンタ減算処理(ステップS503)を実行する。
賞球コマンド出力カウンタ加算処理では、図61に示す賞球個数テーブルが使用される。賞球個数テーブルは、ROM54に設定されている。賞球個数テーブルの先頭アドレスには処理数(この例では「4」)が設定され、その後に、スイッチオンバッファの下位アドレスと、賞球コマンド出力カウンタと、賞球数を指定する賞球指定データとが、順次設定されている。賞球コマンド出力カウンタとは、入賞口への入賞数をカウントするカウンタであり、例えば、ROM54に設定される。また、遊技制御用マイクロコンピュータ560は、賞球数(0〜15個)毎に、対応する賞球コマンド出力カウンタを備える。この実施の形態では、遊技制御用マイクロコンピュータ560は、賞球数「15」に対応する賞球コマンド出力カウンタ1と、賞球数「10」に対応する賞球コマンド出力カウンタ2,3(2つの普通入賞口29,30に対応)と、賞球数「3」に対応する賞球コマンド出力カウンタ4とを備える。なお、各賞球コマンド出力カウンタは、後述するように、賞球コマンド出力カウンタ加算処理でカウントアップされる。CPU56は、賞球個数テーブルに設定されている賞球コマンド出力カウンタ1が0でなければ、賞球数(15個)を指定する賞球指定データにもとづいて賞球個数(15個)を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定された賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。また、CPU56は、賞球個数テーブルに設定されている賞球コマンド出力カウンタ1の値が0であり、賞球コマンド出力カウンタ2,3の値が0でなければ、賞球数(10個)を指定する賞球指定データにもとづいて賞球個数(10個)を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定された賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。また、CPU56は、賞球個数テーブルに設定されている賞球コマンド出力カウンタ1および賞球コマンド出力カウンタ2,3の値が0であり、賞球コマンド出力カウンタ4の値が0でなければ、賞球数(3個)を指定する賞球指定データにもとづいて賞球個数(3個)を示すデータを賞球個数コマンドの下位4ビットに設定し、当該設定された賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。また、図61において、スイッチオンバッファ1は入力ポート0に対応しており、スイッチオンバッファ2は入力ポート2に対応している。
図62は、ステップS501の賞球コマンド出力カウンタ加算処理を示すフローチャートである。賞球コマンド出力カウンタ加算処理において、遊技制御用マイクロコンピュータ560(具体的には、CPU56)は、賞球個数テーブルの先頭アドレスをポインタにセットする(ステップS5101)。そして、ポインタが指すアドレスのデータ(この場合には処理数)をロードする(ステップS5102)。
次いで、CPU56は、ポインタの値を1増やし(ステップS5103)、ポインタが指すスイッチオンバッファの下位アドレスをポインタバッファの下位バイトにロードし(ステップS5104)、ポインタバッファの指すスイッチオンバッファをレジスタにロードする(ステップS5105)。次いで、CPU56は、ポインタの値を1増やし(ステップS5106)、ポインタが指す賞球コマンド出力カウンタの下位アドレスをポインタバッファの下位バイトにロードする(ステップS5107)。次いで、CPU56は、ポインタの値を1増やし(ステップS5108)、レジスタにロードしたスイッチオンバッファの内容と、ポインタが指す賞球指定データとの論理積をとる(ステップS5109)。
ステップS5109における演算結果が0であれば(ステップS5110のY)、すなわち、検査対象のスイッチの検出信号がオン状態でなければ、処理数を1減らし(ステップS5114)、処理数が0であれば処理を終了し、処理数が0でなければステップS5103に戻る(ステップS5115)。
ステップS5109における演算結果が0でなければ(ステップS5110のN)、すなわち、検査対象のスイッチの検出信号がオン状態であれば、CPU56は、ポインタが指す賞球コマンド出力カウンタの値を1加算する(ステップS5111)。ただし、CPU56は、加算の結果、賞球コマンド出力カウンタの値に桁上げが発生した場合には、賞球コマンド出力カウンタの値を1減算し元に戻す(ステップS5112,S5113)。そしてステップS5114の処理に移行する。
図63は、ステップS502の賞球制御処理を示すフローチャートである。賞球制御処理では、遊技制御用マイクロコンピュータ560(具体的には、CPU56)は、賞球プロセスコードの値に応じて、ステップS521〜S525のいずれかの処理を実行する。
図64は、賞球プロセスコードの値が0の場合に実行される賞球送信処理1(ステップS521)を示すフローチャートである。CPU56は、賞球送信処理1において、接続確認コマンドを払出制御用マイクロコンピュータに送信する制御を行う(ステップS5211)。具体的には、CPU56は、シリアル通信回路511の送信データレジスタに接続確認コマンドを出力する処理を行う。そして、CPU56は、賞球プロセスコードに賞球接続確認処理を示す値「1」をセットし(ステップS5212)、賞球プロセスタイマに接続確認時間2(例えば10秒)をセットする(ステップS5213)。なお、ステップS5213でセットされた接続確認時間2にもとづいて、接続確認コマンドを送信した後、10秒を経過しても接続OKコマンドを受信できなかった場合には、以後、接続確認コマンドを送信する間隔を10秒に広げるように制御される。具体的には、ステップS5213でセットされた賞球プロセスタイマは、後述するステップS5229の処理で計測され、接続OKコマンドを受信することなく10秒が経過してタイムアウトしステップS5227でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS5228,S5211参照)。
なお、賞球プロセスタイマには、遊技制御用マイクロコンピュータ560で実行されるタイマ割込処理における割込周期も考慮した値(例えば、割込周期の整数倍)がセットされる。このことは、遊技制御用マイクロコンピュータ560や、払出制御用マイクロコンピュータ370、演出制御用マイクロコンピュータ100で用いられる他のタイマ(例えば、主制御通信制御タイマや、払出制御タイマ、再払出待ちタイマ、賞球情報出力タイマ、賞球信号1出力タイマ)についても同様である。
図65は、賞球プロセスコードの値が1の場合に実行される賞球接続確認処理(ステップS522)を示すフローチャートである。CPU56は、賞球接続確認処理において、まず、シリアル通信回路511の受信データレジスタにデータがあるか否かを確認する(ステップS5221)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット5の値を確認するようにすればよい(図33参照)。受信データレジスタにデータがなければ(すなわち、コマンドを受信していなければ)、ステップS5227に移行する。
受信データレジスタにデータがあれば(すなわち、コマンドを受信していれば)、CPU56は、シリアル通信回路511のエラーが発生しているか否かを確認する(ステップS5222)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット0〜4のいずれかのエラービットの値がセットされているか否かを確認するようにすればよい(図33参照)。エラーが発生していれば、ステップS5227に移行する。
シリアル通信回路511のエラーも発生していなければ、CPU56は、シリアル通信回路511の受信データレジスタからコマンドを読み出し、受信したコマンドが接続OKコマンドであるか否かを確認する(ステップS5223)。接続OKコマンドでなければ、ステップS5227に移行する。
接続OKコマンドを受信していれば、CPU56は、接続OKコマンドの下位4ビットに設定されているエラー情報(図50参照)を枠状態表示バッファに格納する(ステップS5224)。
次いで、CPU56は、賞球プロセスコードに賞球送信処理2を示す値「2」をセットし(ステップS5225)、賞球プロセスタイマに接続確認時間1(例えば1秒)をセットする(ステップS5226)。なお、ステップS5226でセットされた接続確認時間1にもとづいて、接続OKコマンドの受信後に1秒経過するごとに次の接続確認コマンドを繰り返し送信する制御が行われる。具体的には、ステップS5226でセットされた賞球プロセスタイマは、後述するステップS52315の処理で計測され、賞球個数コマンドを送信することなく1秒が経過してタイムアウトしステップS52313でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS52314,S5211参照)。
ステップS5227では、CPU56は、賞球プロセスタイマがタイムアウトしたか否かを確認する。賞球プロセスタイマがタイムアウトしていれば(すなわち、接続確認コマンドを送信した後、10秒を経過しても接続OKコマンドを受信できなかった場合)、CPU56は、賞球プロセスコードに賞球送信処理1を示す値「0」をセットし(ステップS5228)、処理を終了する。賞球プロセスタイマがタイムアウトしていなければ、CPU56は、賞球プロセスタイマの値を1減算する(ステップS5229)。
図66は、賞球プロセスコードの値が2の場合に実行される賞球送信処理2(ステップS523)を示すフローチャートである。CPU56は、賞球送信処理2において、賞球コマンド出力カウンタ1〜4の中にカウント値が0でないものがあるか否かを確認する(ステップS52301)。カウント値が0でないものがなければ、ステップS52313に移行する。
賞球コマンド出力カウンタ1〜4の中にカウント値が0でないものがある場合には(すなわち、カウント値が1以上のものがある場合には)、CPU56は、枠状態表示バッファの内容をロードし、枠状態表示バッファの内容が0であるか否かを確認する(ステップS52302)。枠状態表示バッファの内容が0でなければ、そのまま処理を終了する。そのように制御することによって、エラー情報が設定された接続OKコマンドを受信し、払出制御用マイクロコンピュータ370側で払出停止状態に制御されている場合には、ステップS52303以降の処理に移行しないようし、賞球個数コマンドの送信を保留するように制御する。
枠状態表示バッファの内容が0であれば(すなわち、払出に関するエラーが発生していなければ)、払出制御用CPU371は、そのカウント値が0でない賞球コマンド出力カウンタに対応する賞球個数を個数バッファにセットする(ステップS52303)。具体的には、ステップS52301において、CPU56は、まず、賞球コマンド出力カウンタ1のカウント値が0であるか否かを確認する。そして、賞球コマンド出力カウンタ1のカウント値が1以上であった場合には、ステップS52303において、CPU56は、個数バッファに賞球個数15個をセットする。また、ステップS52301において、CPU56は、賞球コマンド出力カウンタ1のカウント値が0であった場合には、賞球コマンド出力カウンタ2,3のカウント値が0であるか否かを確認する。そして、賞球コマンド出力カウンタ2,3のカウント値が1以上であった場合には、ステップS52303において、CPU56は、個数バッファに賞球個数10個をセットする。さらに、ステップS52301において、CPU56は、賞球コマンド出力カウンタ2,3のカウント値も0であった場合には、賞球コマンド出力カウンタ4のカウント値が0であるか否かを確認する。そして、賞球コマンド出力カウンタ4のカウント値が1以上であった場合には、ステップS52303において、CPU56は、個数バッファに賞球個数3個をセットする。
また、CPU56は、そのカウント値が0でない賞球コマンド出力カウンタに対応する賞球個数を賞球個数コマンドにセットする(ステップS52304)とともに、賞球個数をセットした賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する制御を行う(ステップS52305)。具体的には、CPU56は、シリアル通信回路511の送信データレジスタに、賞球個数をセットした賞球個数コマンドを出力する処理を行う。
なお、ステップS52301,S52305の処理が実行されることによって、この実施の形態では、接続確認コマンドの送信タイミングにかかわりなく、賞球コマンド出力カウンタの中にカウント値が0でないものがあれば(すなわち、賞球個数記憶があり、所定の払出条件が成立していれば)、賞球個数コマンドが払出制御用マイクロコンピュータ370に送信される。
そして、CPU56は、賞球プロセスコードに賞球受領確認処理を示す値「3」をセットし(ステップS52306)、賞球プロセスタイマに接続確認時間2(例えば10秒)をセットする(ステップS52307)。なお、ステップS52307でセットされた接続確認時間2にもとづいて、賞球個数コマンドを送信した後、10秒以内に賞球個数受付コマンドや賞球準備中コマンドを受信したか否かが確認される。具体的には、ステップS52307でセットされた賞球プロセスタイマは、後述するステップS52411の処理で計測され、賞球個数受付コマンドや賞球準備中コマンドを受信することなく10秒が経過してタイムアウトしステップS52409でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS52410,S5211参照)。
なお、ステップS52306の処理が実行されることによってステップS52305で賞球個数コマンドが送信されると、接続確認コマンドの送信処理を含む賞球送信処理1に戻ることなく、賞球受領確認処理に移行される。従って、この実施の形態では、賞球個数コマンドを送信するまでは所定時間(例えば1秒)ごとに繰り返し接続確認コマンドを送信する処理が実行されているのであるが、賞球個数コマンドを送信したことにもとづいて接続確認コマンドを送信する制御が停止される(より具体的には、賞球個数コマンドを送信した後、後述する賞球個数受付コマンドを受信したことにより賞球終了確認処理に移行する(ステップS52403〜S52405参照)ことによって、または賞球準備中コマンドを受信したことにより賞球受領確認処理を繰り返す(ステップS52406〜S52408参照)ことによって、賞球送信処理1に戻ることなく、接続確認コマンドを送信する制御が停止される。この場合、払出制御用マイクロコンピュータ370側から何も払出制御コマンドが返信されないという異常状態が発生しない限り、賞球個数コマンドを送信した後、賞球払出動作を終了して賞球終了コマンドを受信するまで、遊技制御用マイクロコンピュータ560から接続確認コマンドが送信されることはない。
次いで、CPU56は、ステップS52303でセットした個数バッファの値を賞球個数カウンタに加算し(ステップS52308)、加算後のカウント値が所定の賞球不足判定値(例えば501)以上であるか否かを確認する(ステップS52309)。この実施の形態において、賞球個数カウンタは、遊技制御用マイクロコンピュータ560側で未払い出しの賞球数を把握するために用いられるカウンタであり、賞球個数コマンドを送信する際に賞球個数コマンドで指定される賞球個数が加算され、賞球払出を10球検出するごとに払出制御用マイクロコンピュータ370から出力される賞球情報にもとづいて10ずつ減算される。また、前述したように、賞球個数カウンタには、メイン処理の初期設定処理において初期値として「250」がセットされている。そして、賞球個数カウンタのカウント値が所定の賞球不足判定値(例えば501)以上に達する場合には、未払い出しの賞球数が異常に多すぎるのであるから、賞球不足の事態が生じていると判定することができる。また、賞球個数カウンタのカウント値が所定の賞球過剰判定値(例えば0)未満となった場合には、本来払い出されるべき数を超えて異常に多くの遊技球が払い出されているのであるから、賞球過剰の事態が生じていると判定することができる。
なお、この実施の形態では、賞球個数コマンドを送信(ステップS52305参照)した直後に、賞球個数カウンタの加算処理(ステップS52308参照)する場合を示しているが、賞球個数コマンドが送信されるタイミングで加算するものであれば、例えば、まず賞球個数カウンタの加算処理を実行してから、その直後に賞球個数コマンドを送信するようにしてもよい。
また、賞球不足と判定される場合には、払出制御用マイクロコンピュータ370側に何らかの障害が生じて払出動作を正常に行えない場合の他、賞球情報を出力する信号線が断線している場合も考えられる。また、逆に、賞球過剰と判定される場合には、払出制御用マイクロコンピュータ370側に何らかの障害が生じて払出動作が必要以上に行われている場合の他、賞球個数コマンドを送信するコマンド線に何らかの不正が施されて不正に賞球個数コマンドが払出制御用マイクロコンピュータ370に入力されている場合も考えられる。
賞球個数カウンタのカウント値が所定の賞球不足判定値(例えば501)以上であった場合には、CPU56は、賞球不足や賞球過剰が発生していることを示す賞球エラーフラグが既にセットされているか否かを確認する(ステップS52310)。既に賞球エラーフラグがセットされていれば、そのまま処理を終了する。賞球エラーフラグがセットされていなければ、CPU56は、賞球エラーフラグをセットする(ステップS52311)とともに、賞球不足エラーコマンドを演出制御用マイクロコンピュータ100に送信する制御を行う(ステップS52312)。具体的には、CPU56は、賞球不足エラーコマンド送信テーブルのアドレスをポインタにセットする処理を行う。そして、ステップS52312で賞球不足エラーコマンド送信テーブルのアドレスがポインタにセットされたことにもとづいて、その後、ステップS30の演出図柄コマンド制御処理において、演出制御基板80との送受信用チャネルのシリアル通信回路511の送信データレジスタに賞球不足エラーコマンドが出力され、賞球不足エラーコマンドが演出制御用マイクロコンピュータ100に送信される。なお、賞球エラーフラグは、一度セットされると、遊技機への電力供給が停止された後、遊技機へ電源が再投入されるまで、クリアされずに維持される。また、この実施の形態では、遊技制御用マイクロコンピュータ560と演出制御用マイクロコンピュータ100との間の通信に関しては、遊技制御用マイクロコンピュータ560から演出制御用マイクロコンピュータ100に対してコマンドが送信されるのみで、その逆はない。そのため、遊技制御用マイクロコンピュータ560には、演出制御用マイクロコンピュータ100との通信に関しては、送信専用のシリアル通信回路が搭載されていてもよい。
なお、この実施の形態では、賞球不足エラーコマンドや、後述する賞球過剰エラーコマンドを受信したことにもとづいて、演出制御用マイクロコンピュータ100によって賞球不足や賞球過剰のエラー報知が行われるのであるが(ステップS625〜S628参照)、賞球不足や賞球過剰のエラー報知は、報知開始から所定期間を経過したときに復旧するようにしてもよい。また、例えば、賞球個数カウンタの値が所定の賞球不足判定値(例えば501)や所定の賞球過剰判定値(例えば0)の範囲内に復帰したときに、賞球不足や賞球過剰のエラー報知から復旧するようにしてもよい。
なお、この実施の形態では、ステップS52308において、賞球個数コマンドを送信したタイミングで賞球個数カウンタに賞球個数を加算する場合を示したが、賞球個数カウンタのカウントアップの仕方は、この実施の形態で示したものにかぎらず、例えば、逆に賞球個数を減算するようにしてもよい。この場合、例えば、後述するステップS5311の処理において、賞球情報を入力したことにもとづいて賞球個数カウンタの値に逆に10加算するようにすればよい。そして、ステップS52309の処理では賞球個数カウンタの値が0未満であれば賞球不足エラーと判定するようにし、後述するステップS5312の処理では賞球個数カウンタの値が501以上であれば賞球過剰エラーと判定するようにすればよい。
ステップS52313では、CPU56は、賞球プロセスタイマがタイムアウトしたか否かを確認する。賞球プロセスタイマがタイムアウトしていれば(すなわち、接続OKコマンドを受信した後、1秒を経過するまでに、賞球個数の記憶もなく、新たな入賞も発生しなかった場合)、CPU56は、賞球プロセスコードに賞球送信処理1を示す値「0」をセットし(ステップS52314)、処理を終了する。賞球プロセスタイマがタイムアウトしていなければ、CPU56は、賞球プロセスタイマの値を1減算する(ステップS52315)。
図67は、賞球プロセスコードの値が3の場合に実行される賞球受領確認処理(ステップS524)を示すフローチャートである。CPU56は、賞球受領確認処理において、まず、シリアル通信回路511の受信データレジスタにデータがあるか否かを確認する(ステップS52401)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット5の値を確認するようにすればよい(図33参照)。受信データレジスタにデータがなければ(すなわち、コマンドを受信していなければ)、ステップS52409に移行する。
受信データレジスタにデータがあれば(すなわち、コマンドを受信していれば)、CPU56は、シリアル通信回路511のエラーが発生しているか否かを確認する(ステップS52402)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット0〜4のいずれかのエラービットの値がセットされているか否かを確認するようにすればよい(図33参照)。エラーが発生していれば、ステップS52409に移行する。
シリアル通信回路511のエラーも発生していなければ、CPU56は、シリアル通信回路511の受信データレジスタからコマンドを読み出し、受信したコマンドが賞球個数受付コマンドであるか否かを確認する(ステップS52403)。賞球個数受付コマンドを受信していれば、CPU56は、送信した賞球個数コマンドで設定した賞球個数に対応する賞球コマンド出力カウンタの値を1減算する(ステップS52404)。また、CPU56は、賞球プロセスコードに賞球終了確認処理を示す値「4」をセットし(ステップS52405)、ステップS52408に移行する。
受信したコマンドが賞球個数受付コマンドでなければ、CPU56は、受信したコマンドが賞球準備中コマンドであるか否かを確認する(ステップS52406)。賞球準備中コマンドでもなければ、ステップS52409に移行する。
賞球準備中コマンドを受信していれば、CPU56は、賞球準備中コマンドの下位4ビットに設定されているエラー情報(図50参照)を枠状態表示バッファに格納する(ステップS52407)。そして、CPU56は、賞球プロセスタイマに接続確認時間2(例えば10秒)をセットする(ステップS52408)。なお、ステップS52408でセットされた接続確認時間2にもとづいて、賞球準備中コマンドを受信した後、10秒を経過しても賞球個数受付コマンドも次の賞球準備中コマンドも受信できなかった場合には、接続確認コマンドを送信する制御に戻る。具体的には、ステップS52408でセットされた賞球プロセスタイマは、後述するステップS52409,S52411の処理で計測され、賞球個数受付コマンドや次の賞球準備中コマンドを受信することなく10秒が経過してタイムアウトしステップS52409でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS52410,S5211参照)。
ステップS52409では、CPU56は、賞球プロセスタイマがタイムアウトしたか否かを確認する。賞球プロセスタイマがタイムアウトしていれば(すなわち、賞球個数コマンドを送信した後、10秒を経過しても賞球個数受付コマンドや賞球準備中コマンドを受信できなかった場合)、CPU56は、賞球プロセスコードに賞球送信処理1を示す値「0」をセットし(ステップS52410)、処理を終了する。賞球プロセスタイマがタイムアウトしていなければ、CPU56は、賞球プロセスタイマの値を1減算する(ステップS52411)。
図68は、賞球プロセスコードの値が4の場合に実行される賞球終了確認処理(ステップS525)を示すフローチャートである。CPU56は、賞球終了確認処理において、まず、シリアル通信回路511の受信データレジスタにデータがあるか否かを確認する(ステップS52501)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット5の値を確認するようにすればよい(図33参照)。受信データレジスタにデータがなければ(すなわち、コマンドを受信していなければ)、ステップS52509に移行する。
受信データレジスタにデータがあれば(すなわち、コマンドを受信していれば)、CPU56は、シリアル通信回路511のエラーが発生しているか否かを確認する(ステップS52502)。具体的には、CPU56は、シリアル通信回路511のステータスレジスタAのビット0〜4のいずれかのエラービットの値がセットされているか否かを確認するようにすればよい(図33参照)。エラーが発生していれば、ステップS52509に移行する。
シリアル通信回路511のエラーも発生していなければ、CPU56は、シリアル通信回路511の受信データレジスタからコマンドを読み出し、受信したコマンドが賞球終了コマンドであるか否かを確認する(ステップS52503)。賞球終了コマンドを受信していれば、CPU56は、賞球プロセスコードに賞球送信処理2を示す値「2」をセットし(ステップS52504)、賞球プロセスタイマに接続確認時間1(例えば1秒)をセットする(ステップS52505)。なお、ステップS52505でセットされた接続確認時間1にもとづいて、賞球終了コマンドを受信した後、1秒を経過しても始動入賞が発生しなかった場合には、接続確認コマンドを送信する制御に戻る。具体的には、ステップS52505でセットされた賞球プロセスタイマは、ステップS52313,S52315の処理で計測され、新たな始動入賞が発生せず賞球個数コマンドを送信することなく1秒が経過してタイムアウトしステップS52313でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS52314,S5211参照)。
なお、ステップS52504の処理が実行されることによって、賞球終了コマンドを受信した場合にはまず賞球送信処理2に移行されるので、賞球個数の記憶が溜まっている場合には直ちに次の賞球個数コマンドが送信されるように制御される。一方で、賞球送信処理2に移行された後、賞球個数の記憶もなく、ステップS52505でセットされた接続確認時間1(例えば1秒)が経過するまでの間に新たな入賞も発生しなかった場合には、さらに賞球送信処理1に移行され、接続確認コマンドを繰り返し送信する処理が再開される。
受信したコマンドが賞球終了コマンドでなければ、CPU56は、受信したコマンドが賞球準備中コマンドであるか否かを確認する(ステップS52506)。賞球準備中コマンドでもなければ、ステップS52509に移行する。
賞球準備中コマンドを受信していれば、CPU56は、賞球準備中コマンドの下位4ビットに設定されているエラー情報(図50参照)を枠状態表示バッファに格納する(ステップS52507)。そして、CPU56は、賞球プロセスタイマに接続確認時間2(例えば10秒)をセットする(ステップS52508)。なお、ステップS52508でセットされた接続確認時間2にもとづいて、賞球準備中コマンドを受信した後、10秒を経過しても賞球終了コマンドも次の賞球準備中コマンドも受信できなかった場合には、接続確認コマンドを送信する制御に戻る。具体的には、ステップS52508でセットされた賞球プロセスタイマは、後述するステップS52511の処理で計測され、賞球終了コマンドや次の賞球準備中コマンドを受信することなく10秒が経過してタイムアウトしステップS52509でYと判定されると、賞球送信処理1に戻り次の接続確認コマンドが送信される(ステップS52510,S5211参照)。
ステップS52509では、CPU56は、賞球プロセスタイマがタイムアウトしたか否かを確認する。賞球プロセスタイマがタイムアウトしていれば(すなわち、賞球個数受付コマンドや賞球準備中コマンドを受信した後、10秒を経過しても賞球終了コマンドや賞球準備中コマンドを受信できなかった場合)、CPU56は、賞球プロセスコードに賞球送信処理1を示す値「0」をセットし(ステップS52510)、処理を終了する。賞球プロセスタイマがタイムアウトしていなければ、CPU56は、賞球プロセスタイマの値を1減算する(ステップS52511)。
図69は、ステップS503の賞球カウンタ減算処理を示すフローチャートである。CPU56は、賞球カウンタ減算処理において、まず、賞球情報入力無効タイマがタイムアウトしたか否かを確認する(ステップS5301)。なお、賞球情報入力無効タイマは、賞球情報の入力を確認した後、次の賞球情報の入力を確認するまでの間にインターバル期間を設けるために計測されるタイマである。タイムアウトしていなければ、CPU56は、賞球情報入力無効タイマの値を1減算して(ステップS5302)、処理を終了する。
賞球情報入力無効タイマがタイムアウトしていれば、CPU56は、入力ポート0の内容を入力し(ステップS5303)、賞球情報のビットがオン状態であるか否かを確認する(ステップS5304)。賞球情報のビットがオン状態であれば、ステップS5305に移行する。
ステップS5305では、CPU56は、処理数として所定の賞球情報確認回数(例えば8)をセットする(ステップS5305)。そして、CPU56は、賞球情報を入力しているか否かを確認し、賞球情報の入力を確認できれば賞球情報オンカウンタの値を1加算する処理を、処理数(本例では8)を終了するまで繰り返し実行する(ステップS5306〜S5308)。
次いで、CPU56は、賞球情報オンカウンタの値が6以上であるか否かを確認する(ステップS5309)。賞球情報オンカウンタの値が6以上であれば、CPU56は、賞球情報入力無効タイマに所定時間(例えば0.8秒)をセットする(ステップS5310)とともに、賞球個数カウンタの値を10減算する(ステップS5311)。
以上の処理が実行されることによって、この実施の形態では、賞球情報の入力を8回の確認処理中6回以上確認したことを条件として賞球情報を入力したと判定し、10個の賞球払出が行われたものとして賞球個数カウンタの値を10減算している。そのような処理によって、この実施の形態では、誤って賞球情報を入力したと判定する事態を低減し、遊技制御用マイクロコンピュータ560側で未払い出しの賞球数を適切に把握できなくなる事態を防止している。
次いで、CPU56は、減算後のカウント値が所定の賞球過剰判定値(例えば0)未満であるか否かを確認する(ステップS5312)。賞球個数カウンタのカウント値が所定の賞球過剰判定値(例えば0)未満であった場合には、CPU56は、賞球エラーフラグが既にセットされているか否かを確認する(ステップS5313)。既に賞球エラーフラグがセットされていれば、そのまま処理を終了する。賞球エラーフラグがセットされていなければ、CPU56は、賞球エラーフラグをセットする(ステップS5314)とともに、賞球過剰エラーコマンドを演出制御用マイクロコンピュータ100に送信する制御を行う(ステップS5315)。具体的には、CPU56は、賞球過剰エラーコマンド送信テーブルのアドレスをポインタにセットする処理を行う。そして、ステップS5315で賞球過剰エラーコマンド送信テーブルのアドレスがポインタにセットされたことにもとづいて、その後、ステップS30の演出図柄コマンド制御処理において、演出制御基板80との送受信用チャネルのシリアル通信回路511の送信データレジスタに賞球過剰エラーコマンドが出力され、賞球過剰エラーコマンドが演出制御用マイクロコンピュータ100に送信される。
次に、枠状態出力処理(ステップS39)について説明する。図70は、ステップS39の枠状態出力処理の一例を示すフローチャートである。CPU56は、枠状態出力処理において、まず、枠状態表示バッファの内容をロードする(ステップS391)。次いで、CPU56は、入力ポート1の内容を入力する(ステップS392)とともに、入力した入力ポート1の内容を所定の扉開放信号確認用のマスク値(具体的には、10000000)と論理積をとる(ステップS393)。さらに、CPU56は、論理積をとった演算結果と、ステップS391でロードした枠状態表示バッファの内容との論理積をとる(ステップS394)。以上の処理が実行されることによって、枠状態表示バッファの内容にさらに扉開放信号の入力状態が付加された演算結果が得られる。
次いで、CPU56は、演算結果と前回枠状態表示バッファの内容とを比較する(ステップS395)。なお、前回枠状態表示バッファには、前回のタイマ割込によって枠状態出力処理が実行されたときに算出されたステップS394の演算結果が格納されている。演算結果が前回枠状態表示バッファの内容と異なる場合には(ステップS396のY)、CPU56は、前回枠状態表示バッファにステップS394で算出した演算結果を格納して前回枠状態表示バッファを更新する(ステップS397)とともに、ステップS394で算出した演算結果をそのまま枠状態表示コマンドのEXTデータとして設定して、枠状態表示コマンドを演出制御用マイクロコンピュータ100に送信する制御を行う(ステップS398)。具体的には、CPU56は、枠状態表示コマンド送信テーブルのアドレスをポインタにセットする処理を行う。そして、ステップS398で枠状態表示コマンド送信テーブルのアドレスがポインタにセットされたことにもとづいて、その後、ステップS30の演出図柄コマンド制御処理において、演出制御基板80との送受信用チャネルのシリアル通信回路511の送信データレジスタに枠状態表示コマンドが出力され、枠状態表示コマンドが演出制御用マイクロコンピュータ100に送信される。
図71は、枠状態表示コマンドに設定されるEXTデータの具体例を示す説明図である。図71に示すように、賞球エラー(入賞にもとづく賞球払出動作や球貸し要求にもとづく球貸払出動作が正常に行えない状態になった異常状態:具体的には、図96に示す主制御未接続エラーや、払出スイッチ異常検知エラー1、払出スイッチ異常検知エラー2、払出ケースエラー、主制御通信エラー)が検出されている場合には、1ビット目(ビット0)の賞球エラービットに「1」が設定される。また、満タンエラーが検出されている場合には、2ビット目(ビット1)の満タンエラービットに「1」が設定される。また、球切れエラーが検出されている場合には、3ビット目(ビット2)の球切れエラービットに「1」が設定される。また、後述する賞球や貸し球の払出数の個数異常の累積値が所定値(例えば、2000個)に達した場合の払出個数異常エラーが検出されている場合には、4ビット目(ビット3)の払出個数異常エラービットに「1」が設定される。また、ガラス扉枠2が開放状態であることが検出されている場合には、8ビット目(ビット7)の扉開放異常エラービットに「1」が設定される。
なお、機構板が開放状態であることが検出されていることを示す情報も枠状態表示コマンドに設定して送信できるようにしてもよい。この場合、例えば、図71において、機構板が開放状態であることが検出されている場合には、7ビット目(ビット6)の機構板開放異常エラービットに「1」が設定されるようにしてもよい。
以上の処理が実行されることによって、払出制御用マイクロコンピュータ560から接続OKコマンドや賞球準備中コマンドで設定されたエラー情報(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラー)の内容や扉開放信号の入力状態が枠状態表示コマンドに設定されて、演出制御用マイクロコンピュータ100に送信される。
次に、メイン処理における特別図柄プロセス処理(ステップS28)を説明する。図72は、遊技制御用マイクロコンピュータ560のCPU56が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。遊技制御用マイクロコンピュータ560のCPU56は、遊技盤6に設けられている始動入賞口14に遊技球が入賞したことを検出するための始動口スイッチ14aがオンしていたら、すなわち遊技球が始動入賞口14に入賞し、入賞検出信号SSが始動口スイッチ14aから入力されていたら(ステップS311)、始動口スイッチ通過処理(ステップS312)を行った後に、内部状態に応じて、ステップS300〜S306のうちのいずれかの処理を行う。
特別図柄通常処理(ステップS300):特別図柄の可変表示を開始できる状態(例えば、特別図柄表示器8において図柄の変動がなされておらず、特別図柄表示器8における前回の図柄変動が終了してから所定期間が経過しており、かつ、大当り遊技中でもない状態)になるのを待つ。特別図柄の可変表示が開始できる状態になると、特別図柄についての始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、特図保留メモリに記憶されている乱数回路509が発生したランダムRにもとづいて、特別図柄の可変表示の結果を大当りとするか否か決定する。また、大当りとすると決定した場合には、さらに、確変大当りとするか否かなど大当り種別を決定し、決定した表示結果を特定可能な表示結果指定コマンドを演出制御用マイクロコンピュータ100に送信する制御を行う。そして、内部状態(特別図柄プロセスフラグ)をステップS301に移行するように更新する。
変動時間設定処理(ステップS301):変動パターンを決定し、その変動パターンにおける変動時間(可変表示時間:可変表示を開始してから表示結果が導出表示(停止表示)するまでの時間)を特別図柄の可変表示の変動時間とすることに決定する。また、決定した変動パターンを指定する変動パターンコマンドを演出制御用マイクロコンピュータ100に送信する制御を行うとともに、決定した特別図柄の変動時間を計測する変動時間タイマをスタートさせる。そして、内部状態(特別図柄プロセスフラグ)をステップS302に移行するように更新する。
特別図柄変動処理(ステップS302):所定時間(ステップS301の変動時間タイマで示された時間)が経過すると、内部状態(特別図柄プロセスフラグ)をステップS303に移行するように更新する。
特別図柄停止処理(ステップS303):演出制御基板80に対して、演出図柄の停止を指示するための演出図柄停止コマンドを送信する。また、特別図柄表示器8における特別図柄を停止させる。そして、特別図柄の停止図柄が大当り図柄である場合には、内部状態(特別図柄プロセスフラグ)をステップS304に移行するように更新する。そうでない場合には、内部状態をステップS300に移行するように更新する。なお、演出図柄停止コマンドを送信しない構成としてもよい。この場合、演出制御基板80は、主基板31から受信した変動パターンコマンドにもとづいて変動時間タイマに変動時間を設定するとともに、その変動時間タイマを更新していくことで演出図柄の変動時間を独自に監視し、その変動時間が経過したと判定したときに演出図柄を停止する処理を行うようにすればよい。
大入賞口開放前処理(ステップS304):大入賞口を開放する制御を開始する。具体的には、カウンタ(例えば大入賞口に入った遊技球数をカウントするカウンタ)やフラグ(入賞口への入賞を検出する際に用いられるフラグ)を初期化するとともに、ソレノイド21を駆動して大入賞口を開放する。また、プロセスタイマによって大入賞口開放中処理の実行時間を設定し、大当り中フラグをセットする。そして、内部状態(特別図柄プロセスフラグ)をステップS305に移行するように更新する。
大入賞口開放中処理(ステップS305):大入賞口ラウンド表示の演出制御コマンドを演出制御基板80に送出する制御や大入賞口の閉成条件(例えば、大入賞口に所定個数(例えば10個)の遊技球が入賞したこと)の成立を確認する処理等を行う。大入賞口の閉成条件が成立したら、まだ残りラウンドがある場合には、内部状態をステップS304に移行するように更新する。また、全てのラウンドを終えた場合には、内部状態をステップS306に移行するように更新する。
大当り終了処理(ステップS306):大当り遊技状態が終了したことを遊技者に報知する表示制御を演出制御手段に行わせるための制御を行う。そして、内部状態をステップS300に移行するように更新する。
図73は、始動口スイッチ通過処理(ステップS312)を示すフローチャートである。始動口スイッチ通過処理において、遊技制御用マイクロコンピュータ560のCPU56は、始動入賞記憶カウンタが示す始動入賞記憶数(または特図保留メモリが記憶している始動入賞記憶数)が最大値である4に達しているかどうか確認する(ステップS321)。始動入賞記憶数が4に達していなければ、CPU56は、大当り判定用乱数(ランダムR)となる数値データの読出元となる乱数値レジスタを特定する(ステップS322A)。この実施の形態では、CPU56は、乱数値レジスタR1Dを数値データの読出元として特定する。
なお、例えば、遊技機が2つの始動入賞口を備えている場合には、遊技球が一方の始動入賞口を通過(進入)した場合には、乱数値レジスタR1Dを数値データの読出元として特定し、遊技球が他方の始動入賞口を通過(進入)した場合には、乱数値レジスタR2Dを数値データの読出元として特定するようにしてもよい。
次いで、CPU56は、特定した乱数回路509の乱数値レジスタから数値データを抽出するとともに、ソフトウェア乱数を生成するためのカウンタから値を抽出し(ステップS322B)、それらを、始動入賞記憶数の値に対応した保存領域(特別図柄判定用バッファ(特図保留メモリ))に格納する(ステップS323)。
ステップS322Bでは、ステップS322Aの処理で乱数値レジスタR1Dが読出元と特定したことにもとづいて、乱数回路509が備える乱数値レジスタR1Dとしての乱数値レジスタ559Aから、数値データを読み出して抽出する。この場合、数値データが読み出された乱数値レジスタR1Dに対応する乱数ラッチフラグがオフ状態になる。すなわち、ステップS322Aの処理で乱数値レジスタR1Dが読出元と特定されると、ステップS322Bの処理による数値データの読み出しにより乱数ラッチフラグデータRDFM0のビット値が“1”から“0”へと更新され、乱数値レジスタR1Dと対応付けられた乱数ラッチフラグがオフ状態となる。
なお、乱数値レジスタR1Dから読み出された数値データは、そのまま大当り判定用乱数(ランダムR)として特図保留メモリに記憶されてもよいし、所定の加工処理を施してから記憶されるようにしてもよい。一例として、乱数回路509から抽出された数値データは、CPU56が有する16ビットの汎用レジスタなどに一旦格納される。続いて、CPU56に内蔵されたリフレッシュレジスタの格納値であるリフレッシュレジスタ値を、加工用の乱数値となる数値データとして読み出す。このときには、汎用レジスタにおける上位バイトにリフレッシュレジスタ値を加算する一方で、下位バイトはそのままにしておいてもよい。ここで、リフレッシュレジスタ値を加算することに代えて、減算、論理和、論理積といった、所定の演算処理を実行するようにしてもよい。あるいは、リフレッシュレジスタ値を汎用レジスタにおける下位バイトに加算などするようにしてもよい。また、乱数回路509から抽出された数値データの上位バイトと下位バイトとを入れ替えて、汎用レジスタにおける上位バイトや下位バイトとして格納してもよい。さらに、汎用レジスタにおける上位バイトもしくは下位バイトにリフレッシュレジスタ値を加算などした後に、あるいは、汎用レジスタにおける上位バイトや下位バイトに加算などの演算処理を行うことなく、上位バイトと下位バイトとを入れ替えるようにしてもよい。乱数回路509から抽出された数値データの上位バイトと下位バイトとのうち、特定のビットのデータを、他のビットのデータと入れ替えるようにしてもよい。この場合には、例えば乱数回路509における乱数値レジスタR1Dと、汎用レジスタの上位バイトや下位バイトとを接続するバスにおいて、特定のビットのデータを他のビットのデータと入れ替えるように、配線をクロスさせるなどすればよい。その後、CPU56は、汎用レジスタの格納値と所定の論理値(例えば「FFFFH」など)とを論理積演算して、あるいは、汎用レジスタの格納値をそのまま出力して、RAM55の所定領域に格納することなどにより、16ビットの乱数値MR1を示す数値データを設定すればよい。なお、例えば14ビットの乱数値を示す数値データを設定する場合などには、汎用レジスタの格納値と「7F7FH」とを論理積演算するなどして、14ビット値を取得できるようにすればよい。また、論理積演算に代えて、論理和演算が実行されてもよい。
また、汎用レジスタの格納値にもとづき、加算値決定用の乱数値を示す数値データを設定してもよい。一例として、加算値決定用の乱数値を示す数値データが「0」〜「7」の範囲の値をとる場合には、汎用レジスタの格納値と「C0C0H」などとを論理積演算して、RAM55の所定領域に格納することなどにより、4ビットの乱数値を示す数値データを設定すればよい。
なお、この実施の形態では、乱数回路509が備える乱数値レジスタのうち乱数値レジスタR1Dから数値データを読み出して、大当り判定用乱数(ランダムR)として用いる場合を示しているが、この実施の形態で示したものにかぎらず、例えば、乱数値レジスタR2Dから数値データを読み出して、大当り判定用乱数(ランダムR)として用いてもよい。また、例えば、乱数値レジスタR1Dと乱数値レジスタR2Dとから交互に数値データを読み出して、大当り判定用乱数(ランダムR)として用いてもよい。
次いで、CPU56は、所定のバッファ領域に格納したランダムRの値を特図保留メモリの空エントリの先頭にセットし(ステップS324)、始動入賞カウンタのカウント数を1加算することで始動入賞記憶数を1増やす(ステップS325)。
なお、ステップS321において始動入賞記憶するが最大値である4に達している場合には、CPU56は、乱数値レジスタの読み出しにより乱数ラッチフラグをクリアしてから(ステップS326)、始動口スイッチ通過処理を終了する。なお、ステップS326の処理では、遊技球が始動入賞口14を通過(進入)した場合に対応して、乱数値レジスタR1Dに格納された数値データを読み出す。
次に、特別図柄プロセス処理における特別図柄通常処理(ステップS300)について説明する。図74は、特別図柄通常処理を示すフローチャートである。特別図柄通常処理において、遊技制御用マイクロコンピュータ560のCPU56は、特別図柄の変動を開始することができる状態のとき(例えば特別図柄プロセスフラグの値がステップS300を示す値となっている場合)には(ステップS380)、特図保留メモリから保留番号「1」に対応して格納されているランダムRの値を読み出す(ステップS381)。この場合、CPU56は、始動入賞カウンタのカウント数を1減算することで保留記憶数を1減らし、且つ、特図保留メモリの第2〜第4エントリ(保留番号「2」〜「4」)に格納されたランダムRの値を1エントリずつ上位にシフトする(ステップS382)。
また、CPU56は、確変フラグがセットされているか否かを確認する(ステップS383)。すなわち、CPU56は、遊技状態が確変状態に制御されているか否かを確認する。確変フラグがセットされていない場合、CPU56は、遊技状態が確変状態以外の通常状態であると判断し、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、通常時大当り判定テーブル571a(図37(A)参照)を設定する(ステップS384)。また、確変フラグがセットされている場合、CPU56は、遊技状態が確変状態であると判断し、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、確変時大当り判定テーブル571b(図37(B)参照)を設定する(ステップS385)。
CPU56は、始動口スイッチ通過処理において所定のバッファ領域に格納したランダムRの値にもとづいて、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定する(ステップS386)。この場合、CPU56は、ステップS384で設定した通常時大当り判定テーブル571aまたはステップS385で設定した確変時大当り判定テーブル571bを用いて、大当りとするか否かを判定する。
特別図柄表示器8の表示結果を大当り図柄とすると決定すると、CPU56は、大当り状態であることを示す大当りフラグをオン状態にする(ステップS387)。また、特別図柄表示器8の表示結果を大当り図柄としないと決定すると、CPU56は、大当りフラグをオフ状態にする(ステップS388)。そして、CPU56は、特別図柄プロセスフラグの値を変動時間設定処理に対応した値に更新する(ステップS389)。
なお、図74では記載を省略しているが、特別図柄通常処理において、特別図柄表示器8の表示結果を大当り図柄とすること(大当りとすること)に決定した場合には、CPU56は、大当り種別決定用乱数にもとづいて、大当り種別(例えば、確変大当りや通常大当り、突然確変大当り)も決定する。そして、CPU56は、大当り判定の結果や大当り種別の決定結果に応じた値を、RAM55に形成された大当り図柄判定バッファにセットする。例えば、通常大当りである場合には「1」をセットし、確変大当りである場合には「2」をセットし、突然確変大当りである場合には「3」をセットするものとする。また、CPU56は、決定した表示結果を特定可能な表示結果指定コマンドを演出制御用マイクロコンピュータ100に送信する制御を行う。
次に、タイマ割込処理におけるスイッチ処理(ステップS21)を説明する。この実施の形態では、入賞検出またはゲート通過に関わる各スイッチの検出信号のオン状態が所定時間継続すると、確かにスイッチがオンしたと判定されスイッチオンに対応した処理が開始される。図75は、スイッチ処理で使用されるRAM55に形成される各2バイトのバッファを示す説明図である。前回ポートバッファは、前回(例えば4ms前)のスイッチオン/オフの判定結果が格納されるバッファである。ポートバッファは、今回入力したポート0,1の内容が格納されるバッファである。スイッチオンバッファは、スイッチのオンが検出された場合に対応ビットが1に設定され、スイッチのオフが検出された場合に対応ビットが0に設定されるバッファである。なお、図75に示す前回ポートバッファ、ポートバッファ、およびスイッチオンバッファは、入力ポート0,1ごとに用意される。例えば、この実施の形態では、2つのスイッチオンバッファ1,2が用意されており、入力ポート0のスイッチの状態がスイッチオンバッファ1に設定され、入力ポート1のスイッチの状態がスイッチオンバッファ2に設定される。
図76は、遊技制御処理におけるステップS21のスイッチ処理の処理例を示すフローチャートである。スイッチ処理において、遊技制御用マイクロコンピュータ560は、まず、入力ポート0,1(図39参照)に入力されているデータを入力し(ステップS101)、入力したデータをポートバッファにセットする(ステップS102)。
次いで、RAM55に形成されるウェイトカウンタの初期値をセットし(ステップS103)、ウェイトカウンタの値が0になるまで、ウェイトカウンタの値を1ずつ減算する(ステップS104,S105)。
ウェイトカウンタの値が0になると、再度、入力ポート0,1のデータを入力し(ステップS106)、入力したデータとポートバッファにセットされているデータとの間で、ビット毎に論理積をとる(ステップS107)。そして、論理積の演算結果を、ポートバッファにセットする(ステップS108)。ステップS103〜S108の処理によって、ほぼ[ウェイトカウンタの初期値×(ステップS104,S105の処理時間)]の時間間隔を置いて入力ポート0から入力した2回の入力データのうち、2回とも「1」になっているビットのみが、ポートバッファにおいて「1」になる。つまり、所定期間としての[ウェイトカウンタの初期値×(ステップS104,S105の処理時間)]だけスイッチの検出信号のオン状態が継続すると、ポートバッファにおける対応するビットが「1」になる。
さらに、遊技制御用マイクロコンピュータ560は、前回ポートバッファにセットされているデータとポートバッファにセットされているデータとの間で、ビット毎に排他的論理和をとる(ステップS109)。排他的論理和の演算結果において、前回(例えば4ms前)のスイッチオン/オフの判定結果と、今回オンと判定されたスイッチオン/オフの判定結果とが異なっているスイッチに対応したビットが「1」になる。遊技制御用マイクロコンピュータ560は、さらに、排他的論理和の演算結果と、ポートバッファにセットされているデータとの間で、ビット毎に論理積をとる(ステップS110)。この結果、前回のスイッチオン/オフの判定結果と今回オンと判定されたスイッチオン/オフの判定結果とが異なっているスイッチに対応したビット(排他的論理和演算結果による)のうち、今回オンと判定されたスイッチに対応したビット(論理積演算による)のみが「1」として残る。
そして、遊技制御用マイクロコンピュータ560は、ステップS110における論理積の演算結果をスイッチオンバッファにセットし(ステップS111)、ステップS108における演算結果がセットされているポートバッファの内容を前回ポートバッファにセットする(ステップS112)。
以上の処理によって、所定期間継続してオン状態であったスイッチのうち、前回(例えば4ms前)のスイッチオン/オフの判定結果がオフであったスイッチ、すなわち、オフ状態からオン状態に変化したスイッチに対応したビットが、スイッチオンバッファにおいて「1」になっている。
次に、払出制御手段(払出制御用マイクロコンピュータ370)の動作を説明する。図77は、払出制御手段における出力ポートの割り当ての例を示す説明図である。図77に示すように、出力ポート0からは、ステッピングモータによる払出モータ289に供給される各相の信号が出力される。また、出力ポート0からは、カードユニット50に対してPRDY信号やEXS信号が出力されるとともに、遊技機がエラー状態(本例では、球切れエラー状態または満タンエラー状態)であることを示す遊技機エラー状態信号や、賞球払出を検出したことを示す賞球信号1も出力される。また、出力ポート1からは、7セグメントLEDによるエラー表示LED374の各セグメント出力信号が出力される。また、出力ポート1からは、賞球払出を10球検出したことを示す賞球情報も出力される。
図78は、払出制御手段における入力ポートのビット割り当ての例を示す説明図である。図78に示すように、入力ポート0のビット0〜2には、それぞれ、カードユニット50からのVL信号、BRDY信号、およびBRQ信号が入力される。また、入力ポート0のビット4には、主基板31からの接続信号が入力される。また、入力ポート0のビット5〜7には、それぞれ、満タンスイッチ48の検出信号、球切れスイッチ187の検出信号、および払出モータ位置センサ295の検出信号が入力される。また、入力ポート1のビット0,1には、それぞれ、エラー解除スイッチ375からの操作信号、および払出個数カウントスイッチ301の検出信号が入力される。また、入力ポート1のビット7には、機構板開放センサ155Bからの機構板開放信号が入力される。
次に、払出制御手段の動作について説明する。図79は、払出制御手段が実行するメイン処理を示すフローチャートである。メイン処理では、払出制御用マイクロコンピュータ370の払出制御用CPU371は、まず、必要な初期設定を行う。すなわち、払出制御用CPU371は、まず、割込禁止に設定する(ステップS701)。次に、割込モードを割込モード2に設定し(ステップS702)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS703)。
次いで、払出制御用CPU371は、内蔵デバイスレジスタの設定を行う(ステップS704)。ステップS704の内蔵デバイスレジスタの設定の処理では、払出制御用CPU371は、CTCの設定を行う。また、この実施の形態では、内蔵CTCのうちの一つのチャネルがタイマモードで使用される。そのため、払出制御用CPU371は、使用するチャネルをタイマモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定を行う。そして、そのチャネルによる割込がタイマ割込として用いられる。タイマ割込を例えば1ms毎に発生させたい場合は、初期値として1msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。
また、ステップS704において、払出制御用CPU371は、シリアル通信回路380の割り込み要求に応じて実行する割込処理の優先順位を初期設定する。この場合、この場合、払出制御用CPU371は、遊技制御用マイクロコンピュータ560のCPU56が行う優先順位の初期設定処理(ステップS15b参照)と同様の処理に従って、割込処理の優先順位を初期設定する。
また、ステップS704において、払出制御用CPU371は、シリアル通信回路380の設定を行う。この場合、払出制御用CPU371は、受信回路のボーレートの設定、受信モード(8ビットまたは9ビットのデータフォーマットのいずれにするか)の設定、パリティ設定(パリティの有無や、偶数パリティまたは奇数パリティの設定)を行う。また、受信回路の各制御レジスタを初期化するとともに、各ステータスレジスタを初期化する。また、払出制御用CPU371は、送信回路のボーレートの設定、送信モード(8ビットまたは9ビットのデータフォーマットのいずれにするか)の設定、パリティ設定(パリティの有無や、偶数パリティまたは奇数パリティの設定)を行う。また、送信回路の各制御レジスタを初期化する。
なお、タイマモードに設定されたチャネル(この実施の形態ではチャネル3)に設定される割込ベクタは、タイマ割込処理の先頭アドレスに相当するものである。具体的は、Iレジスタに設定された値と割込ベクタとでタイマ割込処理の先頭アドレスが特定される。タイマ割込処理では、払出手段を制御する払出制御処理(少なくとも主基板からの賞球払出に関する指令信号に応じて球払出装置97を駆動する処理を含み、球貸し要求に応じて球払出装置97を駆動する処理が含まれていてもよい。)が実行される。
また、この実施の形態では、払出制御用マイクロコンピュータ370でも割込モード2が設定される。従って、内蔵CTCのカウントアップにもとづく割込処理を使用することができる。また、CTCが送出した割込ベクタに応じた割込処理開始アドレスを設定することができる。CTCのチャネル3(CH3)のカウントアップにもとづく割込は、CPUの内部クロック(システムクロック)をカウントダウンしてレジスタ値が「0」になったら発生する割込であり、タイマ割込として用いられる。
次いで、払出制御用CPU371は、RAMをアクセス可能状態に設定し(ステップS705)、RAMクリア処理を行う(ステップS706)。また、RAM領域のフラグやカウンタなどに初期値を設定する(ステップS707)。なお、ステップS707の処理には、未払出個数カウンタ初期値を未払出個数カウンタにセットする処理が含まれる。また、ステップS707の処理では、払出制御用CPU371は、払出個数異常エラーや満タンエラー、球切れエラーの検出状態を示すエラーフラグをクリアする処理も行う。なお、この実施の形態では、払出個数異常エラーと判定されてエラーフラグの払出個数異常エラー指定ビットがセットされた場合には、電源リセットがされるまで払出個数異常エラー指定ビットがクリアされず払出個数異常エラーから復旧しないのであるが、具体的には、電源投入時にステップS707の処理が実行されることによって、エラーフラグの払出個数異常エラー指定ビットがクリアされ、払出個数異常エラーから復旧する。
また、払出制御用CPU371は、シリアル通信回路380を初期設定するシリアル通信回路設定処理を実行する(ステップS708)。この場合、払出制御用CPU371は、遊技制御用マイクロコンピュータ560のCPU56が行うシリアル通信回路設定処理(ステップS15a参照)と同様の処理に従って、シリアル通信回路380に遊技制御用マイクロコンピュータ560とシリアル通信させるための設定を行う。また、前述したように、シリアル通信回路380の初期設定の一部は、ステップS704の内蔵デバイスレジスタの設定処理において実行される。なお、シリアル通信回路380の全ての設定処理をステップS708のシリアル通信回路設定処理で行うようにしてもよい。
そして、初期設定処理のステップS701において割込禁止とされているので、初期化処理を終える前に割込が許可される(ステップS709)。その後、タイマ割込の発生を監視するループ処理に入る。
上記のように、この実施の形態では、払出制御用マイクロコンピュータ370の内蔵CTCが繰り返しタイマ割込を発生するように設定される。そして、タイマ割込が発生すると、払出制御用マイクロコンピュータ370の払出制御用CPU371は、タイマ割込処理を実行する。
図80は、払出制御手段が実行するタイマ割込処理の例を示すフローチャートである。タイマ割込処理にて、払出制御用マイクロコンピュータ370の払出制御用CPU371は、以下の処理を実行する。まず、払出制御用CPU371は、スイッチチェック処理を行う(ステップS751)。スイッチチェック処理では、払出制御用CPU371は、入力ポート1の入力にもとづいて、払出個数カウントスイッチ301およびエラー解除スイッチ375のオン/オフ状態を確認する処理を行う。次いで、払出制御用CPU371は、入力判定処理を行う(ステップS752)。入力判定処理は、入力ポート0のビット0〜7(図78参照)の状態を検出して検出結果をRAMの所定の1バイト(センサ入力状態フラグと呼ぶ。)に反映する処理である。なお、払出制御用CPU371は、入力ポート0のビット0〜7の状態にもとづいて制御を行う場合には、直接入力ポートの状態をチェックするのではなく、センサ入力状態フラグの状態をチェックする。
次いで、払出制御用CPU371は、カードユニット50と通信を行うプリペイドカードユニット制御処理を実行する(ステップS753)。次いで、払出制御用CPU371は、主基板31の遊技制御手段と通信を行う主制御通信処理を実行する(ステップS754)。次いで、払出制御用CPU371は、カードユニット50からの球貸し要求に応じて貸し球を払い出す制御を行い、また、主基板31からの賞球個数コマンドが示す個数の賞球を払い出す制御を行う払出制御処理を実行する(ステップS755)。
次に、払出制御用CPU371は、払出モータ制御処理を実行する(ステップS756)。払出モータ制御処理では、払出モータ289を駆動すべきときには、払出モータφ1〜φ4のパターンを出力ポート0に出力するための処理を行う。
次いで、払出制御用CPU371は、各種のエラーを検出するエラー処理を実行する(ステップS757)。次いで、払出制御用CPU371は、カードユニット50のエラー制御を行うプリペイドカードユニットエラー制御処理を実行する(ステップS758)。次いで、払出制御用CPU371は、主基板31に対して賞球情報を出力したり、賞球信号1や遊技機エラー状態信号を外部出力するための情報出力処理を実行する(ステップS759)。また、エラー処理の結果に応じてエラー表示LED374に所定の表示を行う表示制御処理を実行する(ステップS760)。
本実施の形態では、後述するエラー処理において各種エラー(例えば、払出個数異常エラーや、満タンエラー、球切れエラー、プリペイドカードユニット未接続エラー)が検出されると、検出されたエラーに対応するエラービットがセットされる。そして、ステップS760の表示制御処理において、エラービットがセットされていることにもとづいて、払出制御用CPU371は、エラー表示LED374に所定の表示を行う。
また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポート0バッファ、出力ポート1バッファ)が設けられているのであるが、払出制御用CPU371は、出力ポート0バッファおよび出力ポート1バッファの内容を出力ポートに出力する(ステップS761:出力処理)。出力ポート0バッファおよび出力ポート1バッファは、払出モータ制御処理(ステップS756)、プリペイドカード制御処理(ステップS753)、主制御通信処理(ステップS754)、情報出力処理(ステップS759)および表示制御処理(ステップS760)で更新される。
図81は、ステップS754の主制御通信処理を示すフローチャートである。主制御通信処理では、払出制御用マイクロコンピュータ370(具体的には、払出制御用CPU371)は、主制御コマンド受信処理(ステップS740)を実行する。そして、払出制御用CPU371は、主制御通信制御コードの値に応じて、ステップS741〜S744のいずれかの処理を実行する。
図82は、主制御通信処理におけるステップS740の主制御コマンド受信処理を示すフローチャートである。払出制御用CPU371は、主制御コマンド受信処理において、まず、接続信号を入力しているか否かを確認する(ステップS74001)。接続信号を入力していなければ、払出制御用CPU101は、シリアル通信回路380の送信回路および受信回路の初期化を行う(ステップS74002)。このように、接続信号を受信できない場合にシリアル通信回路380の送信回路および受信回路を初期化することによって、主基板31との接続状態が異常な状態下であるにもかかわらずコマンドを送信データレジスタや受信データレジスタに格納してしまう事態を防止することができる。次いで、払出制御用CPU371は、主制御通信制御コードの値をロードし(ステップS74003)、主制御通信制御コードの値が主制御接続確認処理を示す値「0」となっているか否かを確認する(ステップS74004)。
この実施の形態では、主制御通信処理において、遊技機への電源供給が開始されてから遊技制御用マイクロコンピュータ560からの接続信号の入力が開始され、最初の接続確認コマンドの受信を確認できるまでステップS741の主制御接続確認処理が実行される。そして、接続確認コマンドの受信を確認できると、ステップS742以降の処理に移行し、各種払出制御コマンドの送受信の処理が実行される。また、以降、遊技制御用マイクロコンピュータ560との間の通信状態が正常に維持されていれば、ステップS742〜S744のいずれかの処理が実行され、ステップS741の主制御接続確認処理は原則として遊技機への電源投入時にのみ実行されることになる。ステップS74004において、主制御通信制御コードの値が主制御接続確認処理以外の値を示しているということは、ステップS742以降の処理に移行した後に、何らかの通信エラーが生じて接続信号を入力不能となった場合である。そのため、払出制御用CPU371は、ステップS74004で主制御通信制御コードの値が主制御接続確認処理以外の値を示している場合には、エラーフラグの主制御通信エラー指定ビット(遊技制御用マイクロコンピュータ560との間の通信状態に異常が生じたことを示すビット)をセットする(ステップS74005)。なお、エラーフラグは、各種賞球エラーがセットされるフラグであり、払出制御用マイクロコンピュータ370が備えるRAMに形成されている。そして、払出制御用CPU371は、主制御通信制御コードに主制御接続確認処理を示す値「0」をセットする(ステップS74006)。なお、ステップS74004で主制御通信制御コードの値が主制御接続確認処理を示す値「0」となっていれば、そのままステップS74006)に移行する。
なお、ステップS741の主制御確認処理は、遊技機への電源投入時以降であっても例外的に実行される場合がある。具体的には、上記したように、ステップS74001で接続信号を入力していないと判定した後、ステップS74004で主制御接続確認処理の実行中でなければ、遊技機への電源投入後に接続信号が切断されてしまった可能性があると判断して主制御接続確認処理に戻り(ステップS74006参照)、再び遊技制御用マイクロコンピュータ560との接続状態を確認する(具体的には、接続確認コマンドを受信できることを確認。ステップS7412参照。)。また、後述する主制御通信通常処理において、接続OKコマンドを送信してから所定期間(本例では1050ms)を経過しても、遊技制御用マイクロコンピュータ560から接続確認コマンドも賞球個数コマンドも受信していない場合には、何らかの通信異常が生じたものとして主制御接続確認処理に戻り(ステップS74202,S74203参照)、再び遊技制御用マイクロコンピュータ560との接続状態を確認する(具体的には、接続確認コマンドを受信できることを確認。ステップS7412参照。)。
接続信号を入力していれば、払出制御用CPU371は、シリアル通信回路380のステータスレジスタに受信エラーフラグがセットされているか否かを確認する(ステップS74007)。例えば、払出制御用CPU371は、シリアル通信回路380のステータスレジスタにパリティエラーや、フレーミングエラー、ノイズエラー、オーバーランエラー、アイドルラインエラーを示すフラグがセットされていれば、シリアル通信回路380の受信エラー状態であると判定する。
受信エラーフラグがセットされていれば、払出制御用CPU371は、シリアル通信回路380の受信回路を初期化する(ステップS74008)。このように、受信エラー状態である場合にシリアル通信回路380の受信回路を初期化することによって、何らかの受信異常が生じているにもかかわらず受信コマンドを受信データレジスタに格納してしまう事態を防止することができる。そして、払出制御用CPU371は、エラーフラグの主制御通信エラー指定ビットをセットする(ステップS74009)。
受信エラーフラグもセットされていなければ、払出制御用CPU371は、受信バッファの内容をロードし(ステップS74010)、接続確認コマンドを受信しているか否かを確認する(ステップS74011)。具体的には、払出制御用CPU371は、ロードした受信バッファの内容が「A0(H)」であるか否か(図49参照)を確認する。接続確認コマンドを受信していれば、払出制御用CPU371は、ステップS74014に移行する。
接続確認コマンドを受信していなければ、払出制御用CPU371は、賞球個数コマンドを受信しているか否かを確認する。この実施の形態では、図49に示すように、接続個数コマンドの内容は、少なくとも「51(H)」以上、「60(H)」未満の値となる筈である。従って、払出制御用CPU371は、まず、ロードした受信バッファの内容が賞球個数コマンド最小値「51(H)」以上であるか否かを確認する(ステップS74012)。次いで、賞球個数コマンド最小判定値「51(H)」以上であれば、払出制御用CPU371は、ロードした受信バッファの内容が賞球個数コマンド最大判定値「60(H)」未満であるか否かを確認する(ステップS74013)。賞球個数コマンド最大判定値「60(H)」未満であれば、払出制御用CPU371は、賞球個数コマンドを受信していると判定し、ステップS74014に移行する。
そして、ステップS74014では、払出制御用CPU371は、受信バッファの内容(接続確認コマンド、賞球個数コマンド)を主制御通信受信バッファに格納する。なお、主制御通信受信バッファは、1バイトで構成され、1度に1つの受信コマンドのみを格納することができる。このように構成しても、この実施の形態では、払出制御用マイクロコンピュータ370におけるタイマ割込の周期(本例では1ms)は、遊技制御用マイクロコンピュータ560におけるタイマ割込の周期(本例では4ms)より短いので、1回のタイマ割込内で複数の払出制御コマンドが受信される事態が生じることはなく、不都合は生じない。また、万一、遊技機への電源投入後、誤処理などにより、最初の接続確認コマンドを受信する前に賞球個数コマンドを受信してしまった場合であっても、その後、接続確認コマンドを受信すれば主制御通信受信バッファに上書きで格納されるので、後述する主制御接続確認処理(ステップS741)で接続確認コマンドを全く確認できず主制御通信通常処理に移行できなくなる事態が生じることを防止することができる。
図83は、主制御通信制御コードの値が0の場合に実行される主制御接続確認処理(ステップS741)を示すフローチャートである。主制御接続確認処理において、払出制御用CPU371は、主制御通信受信バッファの内容をロードし(ステップS7411)、接続確認コマンドを受信しているか否かを確認する(ステップS7412)。接続確認コマンドを受信していれば、払出制御用CPU371は、接続OKコマンドをセットし(ステップS7413)、主制御送信コマンド変換処理を実行する(ステップS7414)。なお、ステップS7414の主制御送信コマンド変換処理では、接続OKコマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS7415)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに接続OKコマンドを出力する処理を行う。
なお、払出制御用CPU371は、ステップS7415で接続OKコマンドを送信すると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信通常処理を示す値「1」をセットする(ステップS7416)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1050ms)をセットする(ステップS7417)。
図84および図85は、主制御通信制御コードの値が1の場合に実行される主制御通信通常処理(ステップS742)を示すフローチャートである。主制御通信通常処理において、払出制御用CPU371は、主制御通信制御タイマの値を1減算し(ステップS74201)、主制御通信制御タイマがタイムアウトしたか否かを確認する(ステップS74202)。
この実施の形態では、前述したように、払出制御用マイクロコンピュータ370から接続OKコマンドを受信して1秒経過するごとに、遊技制御用マイクロコンピュータ560から次の接続確認コマンドが送信される。従って、ステップS74202において主制御通信制御タイマがタイムアウトしたということは、接続OKコマンドの送信後1秒を遙かに超えて1050ms(ステップS7417,S74209参照)を経過しても次の接続確認コマンドを受信できなかった場合である。そのため、払出制御用CPU371は、主制御通信制御コードに主制御接続確認処理を示す値「0」をセットして(ステップS74203)、主制御接続確認処理に戻り通信状態の回復を待つように制御する。
なお、払出制御用CPU371は、ステップS74202で主制御通信制御タイマがタイムアウトしていれば、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
主制御通信制御タイマがタイムアウトしていなければ、払出制御用CPU371は、主制御通信受信バッファに受信コマンドが格納されているか否かを確認する(ステップS74204)。主制御通信受信バッファに受信コマンドが格納されていれば、払出制御用CPU371は、受信したコマンドが接続確認コマンドであるか否かを確認する(ステップS74205)。接続確認コマンドを受信していれば、払出制御用CPU371は、接続OKコマンドをセットし(ステップS74206)、主制御送信コマンド変換処理を実行する(ステップS74207)。なお、ステップS74207の主制御送信コマンド変換処理では、接続OKコマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74208)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに接続OKコマンドを出力する処理を行う。
なお、払出制御用CPU371は、ステップS74208で接続OKコマンドを送信すると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1050ms)をセットする(ステップS74209)。
ステップS74205で受信したコマンドが接続確認コマンドでなければ、賞球個数コマンドを受信していることになる。この場合、払出制御用CPU371は、エラーフラグの値が0であるか否かを確認する(ステップS74210)。エラーフラグの値が0でなければ(すなわち、エラー状態であり、いずれかのエラービットがセットされていれば)、ステップS74219に移行する。エラーフラグの値が0であれば(すなわち、エラー状態となっておらず、いずれのエラービットもセットされていなければ)、払出制御用CPU371は、BRDY信号を入力しているか否かを確認する(ステップS74211)。BRDY信号を入力していれば、ステップS74219に移行する。
BRDY信号も入力していなければ、払出制御用CPU371は、払出制御状態を示す払出制御状態フラグをロードし(ステップS74212)、賞球払出動作中または球貸し払出動作中であるか否かを確認する(ステップS74213)。具体的には、払出制御用CPU371は、払出制御状態フラグに賞球払出動作中指定ビット(賞球払出動作中であることを示すビット)または球貸し払出動作中指定ビット(球貸し払出動作中であることを示すビット)がセットされているか否かを確認する。賞球払出動作中または球貸し払出動作中であれば、ステップS74219に移行する。なお、この実施の形態では、賞球払出動作を終了して賞球終了コマンドを受信してから次の賞球個数コマンドが送信されるので、通信エラーなどの異常が発生していないかぎり、ステップS74213において賞球払出動作中であると判定されることはない。
賞球払出動作中でも球貸し払出動作中でもなければ、受信した賞球個数コマンドにもとづく賞球払出動作を直ちに開始できる場合である。この場合、払出制御用CPU371は、主制御通信受信バッファの下位4ビット(すなわち、賞球個数コマンドにセットされた賞球個数)を未払出個数カウンタにセットする(ステップS74214)。なお、未払出個数カウンタは、賞球や貸し球の未払出数をカウントするためのカウンタである。
次いで、払出制御用CPU371は、賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74215)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球個数受付コマンドを出力する処理を行う。
なお、払出制御用CPU371は、ステップS74215で賞球個数受付コマンドを送信すると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信終了処理を示す値「3」をセットする(ステップS74216)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1秒)をセットする(ステップS74218)。なお、ステップS74218でセットされた値にもとづいて、賞球個数受付コマンドを送信した後、1秒経過後に賞球払出動作を完了していなければ賞球準備中コマンドが送信されることになる。
ステップS74219では、払出制御用CPU371は、主制御通信受信バッファの下位4ビット(すなわち、賞球個数コマンドのセットされた賞球個数)を主制御通信賞球個数バッファに格納する。すなわち、この場合、何らかのエラー状態が発生していたり、賞球払出動作中や球貸し払出動作中、球貸し準備中の場合であるので、受信した賞球個数コマンドにもとづく賞球払出動作を直ちに開始することはできない。そのため、払出制御用CPU371は、賞球個数受付コマンドの返信を保留するとともに、賞球個数コマンドにセットされた賞球個数を主制御通信賞球個数バッファに一旦退避する。
次いで、払出制御用CPU371は、賞球準備中コマンドをセットし(ステップS74220)、主制御送信コマンド変換処理を実行する(ステップS74221)。なお、ステップS74221の主制御送信コマンド変換処理では、賞球準備中コマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74222)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球準備中コマンドを出力する処理を行う。
なお、払出制御用CPU371は、ステップS74222で賞球準備中コマンドを送信すると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信中処理を示す値「2」をセットする(ステップS74223)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1秒)をセットする(ステップS74224)。なお、ステップS74224でセットされた値にもとづいて、賞球準備中コマンドを送信した後、1秒経過後にまだ賞球払出動作を開始できる状態になっていなければ次の賞球準備中コマンドが送信されることになる。
図86および図87は、主制御通信制御コードの値が2の場合に実行される主制御通信中処理(ステップS743)を示すフローチャートである。主制御通信中処理において、払出制御用CPU371は、まず、主制御通信受信バッファに受信コマンドが格納されているか否かを確認する(ステップS74301)。主制御通信受信バッファに受信コマンドが格納されていれば、払出制御用CPU371は、受信したコマンドが接続確認コマンドであるか否かを確認する(ステップS74302)。接続確認コマンドでなければ、ステップS74306に移行する。接続確認コマンドを受信していれば、払出制御用CPU371は、接続OKコマンドをセットし(ステップS74303)、主制御送信コマンド変換処理を実行する(ステップS74304)。なお、ステップS74304の主制御送信コマンド変換処理では、接続OKコマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74305)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに接続OKコマンドを出力する処理を行う。そして、ステップS74306に移行する。
ステップS74306では、払出制御用CPU371は、エラーフラグに主制御通信エラー指定ビットをセットする。すなわち、主制御通信中処理は、賞球個数コマンドを受信した後、受信した賞球個数コマンドにもとづく賞球払出動作を開始可能な状態となるまでに実行される処理であり、賞球個数受付コマンドの返信が保留されて、遊技制御用マイクロコンピュータ560は賞球個数受付コマンドの受信待ち状態となっているのであるから、この間に遊技制御用マイクロコンピュータ560から新たに払出制御コマンドを受信することはない筈である。それにもかかわらず、新たなコマンドを受信したということは通信状態に何らかの異常が生じたと判断することができるのであるから、払出制御用CPU371は、主制御通信エラー指定ビットをセットする処理を行う。
なお、払出制御用CPU371は、ステップS74306で主制御通信エラー指定ビットをセットすると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信通常処理を示す値「1」をセットする(ステップS74307)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1050ms)をセットする(ステップS74308)。
主制御通信受信バッファに受信コマンドがなければ、払出制御用CPU371は、主制御通信制御タイマの値を1減算し(ステップS74309)、主制御通信制御タイマがタイムアウトしたか否かを確認する(ステップS74310)。
主制御通信制御タイマがタイムアウトしていれば(ステップS74310のY)、賞球準備中コマンドを前回送信してから1秒以上経過したことを意味する。この場合、払出制御用CPU371は、次の賞球準備中コマンドを送信するために、賞球準備中コマンドをセットし(ステップS74311)、主制御送信コマンド変換処理を実行する(ステップS74312)。なお、ステップS74312の主制御送信コマンド変換処理では、賞球準備中コマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74313)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球準備中コマンドを出力する処理を行う。
そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1秒)をセットする(ステップS74314)。なお、ステップS74314でセットされた値にもとづいて、賞球準備中コマンドを送信した後、さらに1秒経過後にまだ賞球払出動作を開始できる状態になっていなければ次の賞球準備中コマンドが送信されることになる。
主制御通信制御タイマがタイムアウトしていなければ、払出制御用CPU371は、エラーフラグの値が0であるか否かを確認する(ステップS74315)。エラーフラグの値が0でなければ(すなわち、エラー状態であり、いずれかのエラービットがセットされていれば)、まだ賞球払出動作を開始できないので、そのまま処理を終了する。エラーフラグの値が0であれば(すなわち、エラー状態となっておらず、いずれのエラービットもセットされていなければ)、払出制御用CPU371は、BRDY信号を入力しているか否かを確認する(ステップS74316)。BRDY信号を入力していれば、まだ賞球払出動作を開始できないので、そのまま処理を終了する。
BRDY信号も入力していなければ、払出制御用CPU371は、払出制御状態を示す払出制御状態フラグをロードし(ステップS74317)、賞球払出動作中または球貸し払出動作中であるか否かを確認する(ステップS74318)。具体的には、払出制御用CPU371は、払出制御状態フラグに賞球払出動作中指定ビット(賞球払出動作中であることを示すビット)または球貸し払出動作中指定ビット(球貸し払出動作中であることを示すビット)がセットされているか否かを確認する。賞球払出動作中または球貸し払出動作中であれば、まだ賞球払出動作を開始できないので、そのまま処理を終了する。なお、この実施の形態では、賞球払出動作を終了して賞球終了コマンドを受信してから次の賞球個数コマンドが送信されるので、通信エラーなどの異常が発生していないかぎり、ステップS74318において賞球払出動作中であると判定されることはない。
賞球払出動作中でも球貸し払出動作中でもなければ、受信した賞球個数コマンドにもとづく賞球払出動作を開始可能な状態となったことを意味する。この場合、払出制御用CPU371は、主制御通信賞球個数バッファの下位4ビット(すなわち、一時退避した賞球個数)を未払出個数カウンタにセットする(ステップS74319)。
なお、この実施の形態では、既に述べたように、賞球個数コマンドを受信したときに直ちに賞球払出動作を開始できない場合に、賞球個数コマンドで特定される賞球個数を直ちに未払出個数カウンタにセットするのではなく、主制御通信賞球個数バッファに一旦退避するのであるが、このように制御するのは、例えば、貸し球払出動作中に未払出個数カウンタに賞球個数が上乗せされて賞球個数を正確に管理できなくなる事態を防止するなど、払出制御に関する処理に不都合が生じないようにするためである。
次いで、払出制御用CPU371は、賞球個数受付コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74320)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球個数受付コマンドを出力する処理を行う。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信終了処理を示す値「3」をセットする(ステップS74321)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1秒)をセットする(ステップS74322)。なお、ステップS74322でセットされた値にもとづいて、賞球個数受付コマンドを送信した後、1秒経過後に賞球払出動作を完了していなければ賞球準備中コマンドが送信されることになる。
図88は、主制御通信制御コードの値が3の場合に実行される主制御通信終了処理(ステップS744)を示すフローチャートである。主制御通信終了処理において、払出制御用CPU371は、まず、主制御通信受信バッファに受信コマンドが格納されているか否かを確認する(ステップS74401)。主制御通信受信バッファに受信コマンドが格納されていれば、払出制御用CPU371は、受信したコマンドが接続確認コマンドであるか否かを確認する(ステップS74402)。接続確認コマンドでなければ、ステップS74406に移行する。接続確認コマンドを受信していれば、払出制御用CPU371は、接続OKコマンドをセットし(ステップS74403)、主制御送信コマンド変換処理を実行する(ステップS74404)。なお、ステップS74404の主制御送信コマンド変換処理では、接続OKコマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74405)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに接続OKコマンドを出力する処理を行う。そして、ステップS74406に移行する。
ステップS74406では、払出制御用CPU371は、エラーフラグに主制御通信エラー指定ビットをセットする。すなわち、主制御通信終了処理は、賞球個数コマンドを受信して賞球払出動作を開始した後、受信した賞球個数コマンドにもとづく賞球払出動作を終了するまで実行する処理であり、技制御用マイクロコンピュータ560は賞球終了コマンドの受信待ち状態となっているのであるから、この間に遊技制御用マイクロコンピュータ560から新たに払出制御コマンドを受信することはない筈である。それにもかかわらず、新たなコマンドを受信したということは通信状態に何らかの異常が生じたと判断することができるのであるから、払出制御用CPU371は、主制御通信エラー指定ビットをセットする処理を行う。
なお、払出制御用CPU371は、ステップS74406で主制御通信エラー指定ビットをセットすると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信通常処理を示す値「1」をセットする(ステップS74407)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1050ms)をセットする(ステップS74408)。
主制御通信受信バッファに受信コマンドがなければ、払出制御用CPU371は、主制御通信制御タイマの値を1減算し(ステップS74409)、主制御通信制御タイマがタイムアウトしたか否かを確認する(ステップS74410)。
主制御通信制御タイマがタイムアウトしていれば(ステップS74410のY)、賞球個数受付コマンドや賞球準備中コマンドを前回送信してから1秒以上経過したことを意味する。この場合、払出制御用CPU371は、次の賞球準備中コマンドを送信するために、賞球準備中コマンドをセットし(ステップS74411)、主制御送信コマンド変換処理を実行する(ステップS74412)。なお、ステップS74412の主制御送信コマンド変換処理では、賞球準備中コマンドの下位4ビットに制御状態(払出個数異常エラーや、球切れエラー、満タンエラー、賞球エラーなどのエラー状態)をセットする処理が行われる。そして、払出制御用CPU371は、変換後の賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74413)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球準備中コマンドを出力する処理を行う。
そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1秒)をセットする(ステップS74414)。なお、ステップS74414でセットされた値にもとづいて、賞球準備中コマンドを送信した後、さらに1秒経過後にまだ賞球払出動作が終了していなければ次の賞球準備中コマンドが送信されることになる。
主制御通信制御タイマがタイムアウトしていなければ、払出制御用CPU371は、払出制御状態フラグをロードし(ステップS74415)、賞球払出動作中であるか否かを確認する(ステップS74416)。具体的には、払出制御用CPU371は、払出制御状態フラグに賞球払出動作中指定ビットがセットされているか否かを確認する。賞球払出動作中であれば、受信した賞球個数コマンドにもとづく賞球払出動作をまだ終了していないことを意味するので、払出制御用CPU371は、そのまま処理を終了する。賞球払出動作中でなければ、受信した賞球個数コマンドにもとづく賞球払出動作を終了したことを意味する。そのため、払出制御用CPU371は、賞球終了コマンドを遊技制御用マイクロコンピュータ560に送信する制御を行う(ステップS74417)。具体的には、払出制御用CPU371は、シリアル通信回路380の送信レジスタに賞球終了コマンドを出力する処理を行う。
なお、払出制御用CPU371は、ステップS74417で賞球終了コマンドを送信すると、主制御通信受信バッファをクリアする。そのようにすることによって、その後の処理で受信コマンドを誤って認識して誤った処理を実行してしまう事態を防止することができる。
次いで、払出制御用CPU371は、主制御通信制御コードに主制御通信通常処理を示す値「1」をセットする(ステップS74418)。そして、払出制御用CPU371は、主制御通信制御タイマに所定値(本例では1050ms)をセットする(ステップS74419)。
図89は、ステップS7414,S74207,S74221,S74304,S74312,S74404,S74412で実行される主制御送信コマンド変換処理を示すフローチャートである。主制御送信コマンド変換処理において、払出制御用CPU371は、まず、エラーフラグをロードし、払出個数異常エラー指定ビットがセットされているか否かを確認する(ステップS731)。払出個数異常エラー指定ビットがセットされていれば、払出制御用CPU371は、変換バッファの主制御通信用払出個数異常エラー出力ビット(具体的にはビット3)をセットする(ステップS732)。
次いで、払出制御用CPU371は、球切れエラー指定ビットがセットされているか否かを確認する(ステップS733)。球切れエラー指定ビットがセットされていれば、払出制御用CPU371は、変換バッファの主制御通信用球切れ出力ビット(具体的にはビット2)をセットする(ステップS734)。
次いで、払出制御用CPU371は、満タンエラー指定ビットがセットされているか否かを確認する(ステップS735)。満タンエラー指定ビットがセットされていれば、払出制御用CPU371は、変換バッファの主制御通信用満タン出力ビット(具体的にはビット1)をセットする(ステップS736)。
次いで、払出制御用CPU371は、その他の賞球エラー指定ビットがセットされているか否かを確認する(ステップS737)。具体的には、払出制御用CPU371は、エラーフラグに、主制御通信エラー指定ビットや、主制御未接続エラー指定ビット、払出スイッチ異常検知エラー1指定ビット、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビットがセットされているか否かを確認する。その他の賞球エラー指定ビットがセットされていれば、払出制御用CPU371は、変換バッファの主制御通信用球切れ出力ビット(具体的にはビット0)をセットする(ステップS738)。
そして、払出制御用CPU371は、送信するためにセットされている払出制御コマンド(接続OKコマンドまたは賞球準備中コマンド)に変換バッファの内容をセットする(ステップS739)。
図90は、ステップS755の払出制御処理を示すフローチャートである。払出制御処理において、払出制御用CPU371は、払出個数カウントスイッチ301の検出信号がオン状態となったことを確認したら(ステップS7501)、未払出個数カウンタの値が0となっているか否かを確認する(ステップS7502)。未払出個数カウンタの値が0となっていた場合には、払出制御用CPU371は、異常な払出の累積数をカウントするための払出個数異常カウンタの値を1加算する(ステップS7503)。すなわち、ステップS7502でYであるということは、未払出個数カウンタに払い出すべき未払い出し数がセットされていないのであるから、遊技球の払い出しが行われない筈であるにもかかわらず、払出動作が行われ払出個数カウントスイッチ301で遊技球の払い出しが検出された場合である。そのため、何らかの不正行為により払出動作が行われた可能性があるので、払出制御用CPU101は、払出個数異常カウンタの値を累積的に1加算する。
なお、払出個数異常カウンタは、賞球や貸し球の払い出すべき数の未払出の遊技球を超えた払出過多数と払い出すべき数の未払出の遊技球に満たなかった払出不足数とを累積的にカウントするためのカウンタである。後述するように、この実施の形態では、払出個数異常カウンタの値が所定の払出個数異常エラー判定値(本例では2000)以上となると、払出個数異常エラーが発生したと判定して、払出停止状態に制御する処理が行われる。なお、ステップS7503の処理は、払出個数異常カウンタに払出過多数を累積的にカウントする処理に相当する。
なお、この実施の形態では、賞球であるか貸し球であるかを区別することなく、払出過多数と払出不足数とを払出個数異常カウンタに累積的にカウントするのであるが、賞球と貸し球のうちのいずれか一方のみを対象として、払出過多数と払出不足数とを払出個数異常カウンタに累積的にカウントするようにしてもよい。また、例えば、賞球と貸し球について、それぞれ別々のカウンタを用いて払出過多数と払出不足数とを累積的にカウントするようにしてもよい。この場合、いずれか一方のカウンタの値が所定の閾値に達したときに払出個数異常エラーと判定するようにしてもよく、両カウンタの合計値が所定の閾値に達したときに払出個数異常エラーと判定するようにしてもよい。
また、この実施の形態では、ステップS7503において払出過多を検出したときに払出個数異常カウンタの値を1加算する場合を示したが、払出個数異常カウンタの値のカウントアップの仕方は、この実施の形態で示したものにかぎられない。例えば、逆に、払出個数異常カウンタの値から払出過多数を減算するとともに、払出不足数を払出個数異常カウンタの値に加算するようにしてもよい。この場合、払出制御用CPU371は、例えば、電源投入時の初期設定処理において払出個数異常カウンタに初期値として「2000」をセットするとともに、ステップS7503において、払出個数異常カウンタの値を1減算するようにし、後述するステップS75320,S75325,S75335において払出個数異常カウンタの値に払出不足数に相当する値を加算するようにすればよい。そして、例えば、後述するステップS7504,S75321,S7725の処理では、払出個数異常カウンタの値が2000以下となっていることにもとづいて、払出個数異常エラーが発生したと判定するようにしてもよい。
次いで、払出制御用CPU371は、加算後の払出個数異常カウンタの値が所定の払出個数異常エラー判定値(例えば2000)以上となったか否かを確認する(ステップS7504)。所定の払出個数異常エラー判定値(例えば2000)以上となっていれば、払出制御用CPU371は、払出個数異常エラーが発生したと判断し、払出個数異常エラーが発生したことを示す払出個数異常エラーフラグをセットする(ステップS7505)。すなわち、この実施の形態では、払出制御用マイクロコンピュータ370側で異常な払出の検出数を累積的に管理し、その累積値が所定の払出個数異常エラー判定値(例えば2000)以上となれば、何らかの不正行為により払出動作が行われている可能性が極めて高いと判断して、払出個数異常エラー(払い出された遊技球数が異常である旨のエラー)が発生したと判定される。なお、誤動作などにより遊技球が過剰に払い出されたり払出不足が生じたりすることも少なからずあるので、払出数の異常を検出したときに直ちに払出個数異常エラーと判定してしまったのでは、払出個数異常エラーと判定される頻度が必要以上に高くなり却って遊技に支障を生じてしまう。そこで、この実施の形態では、異常な払出の検出数を累積的に管理し、その累積値が所定の払出個数異常エラー判定値(例えば2000)以上となったことを条件として払出個数異常エラーと判定するようにすることによって、必要以上に払出個数異常エラーと判定されることを防止している。
なお、この実施の形態では、払出個数異常エラーと判定されて払出個数異常エラーフラグが一度セットされると、電源リセットされるまで払出個数異常エラーフラグはクリアされず払出個数異常エラーから復旧しないので、払出個数異常エラーフラグがセットされると、以降、ステップS7504,S7505の処理や後述するS75321,S75322、S7725,S7726の処理は実行しないようにしてもよい。そのようにすれば、払出個数異常エラーと一度判定してしまった後の無駄な処理を防止し処理負担を軽減することができる。
また、この実施の形態では、所定の払出個数異常エラー判定値として、一般に、遊技店で用いられる遊技球の収納箱(いわゆるドル箱)に収納可能な遊技球の数に相当する「2000」を用いる場合を示しているが、所定の払出個数異常エラー判定値として他の値(例えば、1000や3000)を用いてもよい。
なお、この実施の形態では、図90に示す払出制御処理は、賞球払出動作を実行するときと貸し球払出動作を実行するときとで共通に実行される処理であり、未払出個数カウンタは、賞球による未払出の遊技球数をカウントするときと貸し球による未払出の遊技球数をカウントするときとで共通に用いられるカウンタである。そして、払出個数の異常を検出した場合には、賞球による払出と貸し球による払出とを区別することなく払出個数異常カウンタの値がカウントアップされ、払出個数異常エラーが発生したか否かの判定が行われる。
未払出個数カウンタの値が0でなければ、払出制御用CPU371は、未払出個数カウンタの値を1減算し(ステップS7506)、払出制御状態のフラグに払出球検知指定ビット(遊技球の払い出しを検出したことを示すビット)をセットする(ステップS7507)。なお、払出球検知指定ビットは、払出個数カウントスイッチ301がオンしたときにセットされるビットであり、払出動作中に払出個数カウントスイッチ301が少なくとも1個の遊技球を検出したことを示すビットである。
その後、払出制御用CPU371は、払出制御コードの値に応じてステップS7511〜S7513のいずれかの処理を実行する。
図91は、払出制御コードが0の場合に実行される払出開始待ち処理(ステップS7511)を示すフローチャートである。払出開始待ち処理において、払出制御用CPU371は、まず、エラーフラグの値が0であるか否かを確認する(ステップS75101)。そして、エラービット(エラーフラグにおける全てのエラービットのうちの1つ以上)がセットされていたら、払出制御用CPU371は、以降の処理を実行しないように制御する。なお、この実施の形態では、ステップS75101の処理が実行されることによって、払出個数異常エラーと判定されてエラービットの払出個数異常エラー指定ビットがセットされていることにもとづいて、ステップS75102以降の処理に移行しないように制御され、払出停止状態に制御される。
エラーフラグの値が0であれば、払出制御用CPU371は、BRDY信号を入力しているか否かを確認する(ステップS75102)。BRDY信号を入力していれば、払出制御用CPU371は、払出制御状態フラグをロードし(ステップS75103)、球貸し要求中であるか否かを確認する(ステップS75104)。具体的には、払出制御用CPU371は、払出制御状態フラグに球貸し要求中指定ビット(球貸し要求中であることを示すビット)がセットされているか否かを確認する。なお、払出制御用CPU371は、BRQ信号を入力しているか否かを確認することによって、球貸し要求中であるか否かを判定するようにしてもよい。球貸し要求中であれば(すなわち、球貸し払出動作を開始する場合)、払出制御用CPU371は、払出制御状態フラグの球貸し要求中指定ビットをリセットする(ステップS75105)とともに、払出制御状態フラグの球貸し払出動作中指定ビットをセットする(ステップS75106)。次いで、払出制御用CPU371は、未払出個数カウンタに所定の球貸し個数(本例では25)をセットする(ステップS75107)とともに、払出モータ回転回数バッファに所定の球貸し個数(本例では25)をセットする(ステップS75108)。そして、ステップS75113に移行する。
なお、払出モータ回転回数バッファは、払出モータ制御処理(ステップS756)において参照される。すなわち、払出モータ制御処理では、払出モータ回転回数バッファにセットされた値に対応した回転数分だけ払出モータ289を回転させる制御が実行される。
BRDY信号を入力していなければ、払出制御用CPU371は、未払出個数カウンタの値が0であるか否かを確認する(ステップS75109)。未払出個数カウンタの値が0でなければ(すなわち、賞球払出動作を開始する場合)、払出制御用CPU371は、払出モータ回転回数バッファに未払出個数カウンタの値をセットする(ステップS75110)。すなわち、この場合、未払出個数カウンタには、受信した賞球個数コマンドで指定された賞球個数がセットされている筈であるから(ステップS74214,S74319参照)、賞球払出動作を開始するために、賞球個数を払出モータ回転回数バッファにセットする処理を行う。次いで、払出制御用CPU371は、払出制御状態フラグをロードし(ステップS75111)、払出制御状態フラグに賞球払出動作中指定ビットをセットする(ステップS75112)。そして、ステップS75113に移行する。
ステップS75113では、払出制御用CPU371は、払出モータ制御処理で実行される処理を選択するための払出モータ制御コードに、払出モータ起動処理に応じて値をセットする。これにより、ステップS756の払出モータ制御処理において、払出モータ289を起動する払出モータ起動処理が実行され、貸し球払出動作または賞球払出動作が開始される。そして、払出制御用CPU371は、払出制御コードに払出モータ停止待ち処理を示す値「1」をセットし(ステップS75114)、処理を終了する。
図92は、払出制御コードが1の場合に実行される払出モータ停止待ち処理(ステップS7512)を示すフローチャートである。払出モータ停止待ち処理において、払出制御用CPU371は、まず、払出制御状態フラグをロードし(ステップS7521)、払出動作が終了したか否かを確認する(ステップS7522)。具体的には、払出制御用CPU371は、払出制御状態フラグに払出動作終了指定ビット(払出動作を終了したことを示すビット)がセットされているか否かを確認する。なお、払出動作終了指定ビットは、図80に示すステップS756の払出モータ制御処理における払出モータブレーキ処理や払出モータ球噛み解除処理においてセットされる。
なお、払出モータ制御処理では、払出制御用CPU371は、払出モータ制御コードの値に応じて、払出モータ通常処理(ポインタをROMに格納されているテーブルの先頭アドレスにセットする等の処理)、払出モータ起動処理(出力ポート0の出力状態に対応したポート0バッファのビット4〜7に励磁パターンの初期値を設定する等の処理)、払出モータスローアップ処理(払出モータ289を滑らかに回転開始させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔に近づくような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応したポート0バッファのビット4〜7に設定する等の処理)、払出モータ定速処理(定期的に払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応したポート0バッファのビット4〜7に設定する等の処理)、払出モータブレーキ処理(払出モータ289を滑らかに停止させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔から遠ざかるような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応したポート0バッファのビット4〜7に設定する等の処理)、払出モータ球噛み処理(球噛み状態を検出した場合に、球噛みを解除するために、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応したポート0バッファのビット4〜7に設定する処理)、および払出モータ球噛み解除処理(球噛み状態が解除されたときに払出モータ通常処理に移行して通常のモータ制御状態に復帰する処理)のいずれかの処理を実行する。
払出動作を終了していれば、払出制御用CPU371は、払出制御状態フラグの払出動作終了指定ビットをリセットする(ステップS7523)とともに、後述する払出通過監視時間などをセットするために用いる払出モータ停止待ち処理設定テーブル2をセットする(ステップS7524)。
次いで、払出制御用CPU371は、払出制御状態フラグに払出球数検査済み指定ビットがセットされているか否かを確認する(ステップS7525)。払出球数検査済み指定ビットは、払出モータ289による払出動作終了時(正常動作の終了時)に払出個数カウントスイッチ301による検出の判定を行ったことを示すビットである。払出球数検査済み指定ビットがセットされていれば、ステップS7527に移行する。払出球数検査済み指定ビットがセットされていなければ、払出制御用CPU371は、払出モータ停止待ち処理設定テーブルをセットする(ステップS7526)。すなわち、払出制御用CPU371は、ステップS7524でセットしたテーブルを払出モータ停止待ち処理設定テーブルに差し替える。そして、ステップS7527に移行する。
ステップS7527では、払出制御用CPU371は、払出制御コードに払出通過待ち処理を示す値「2」をセットする。そして、払出制御用CPU371は、ステップS7524,S7526でセットしたテーブルにもとづいて、払出制御タイマに払出通過監視時間をセットする(ステップS7528)。払出通過監視時間は、最後の払出球が払出モータ289によって払い出されてから払出個数カウントスイッチ301を通過するまでの時間に、余裕を持たせた時間である。この実施の形態では、ステップS7525で払出球数検査済みビットがセットされていた場合には、ステップS7524でセットした払出モータ停止待ち処理設定テーブル2にもとづいて、払出通過監視時間として1秒をセットする。また、ステップS7525で払出球数検査済みビットがセットされていなかった場合には、ステップS7526で差し替えた払出モータ停止待ち処理設定テーブルにもとづいて、払出通過監視時間として0.6秒をセットする。
図93〜図95は、払出制御コードの値が2の場合に実行される払出通過待ち処理(ステップS7513)を示すフローチャートである。払出通過待ち処理において、払出制御用CPU371は、まず、払出制御タイマの値を確認し(ステップS75301)、その値が0になっていれば、ステップS75304に移行する。払出制御タイマの値が0でなければ、払出制御タイマの値を−1する(ステップS75302)。そして、払出制御タイマの値が0になっていなければ(ステップS75303)、すなわち払出制御タイマがタイムアウトしていなければ処理を終了する。
払出制御タイマがタイムアウトしていれば、払出制御用CPU371は、エラーフラグをロードし、払出個数異常エラー指定ビット、払出スイッチ異常検知エラー1指定ビット、または払出スイッチ異常検知エラー2指定ビットがセットされているか否かを確認する(ステップS75304)。払出個数異常エラー指定ビット、払出スイッチ異常検知エラー1指定ビット、または払出スイッチ異常検知エラー2指定ビットのいずれかがセットされていれば、払出動作をこれ以上継続できないと判断して、ステップS75306に移行する。払出個数異常エラー指定ビット、払出スイッチ異常検知エラー1指定ビット、および払出スイッチ異常検知エラー2指定ビットのいずれもセットされていなければ、払出制御用CPU371は、未払出個数カウンタの値が0となっているか否かを確認する(ステップS75305)。未払出個数カウンタの値が0となっていれば、払出制御用CPU371は、正常に払出動作が終了したとして、払出制御状態フラグをロードし(ステップS75306)、払出制御状態フラグの球貸し要求中指定ビットおよび払出動作終了指定ビット以外のビットをリセットする(ステップS75307)。そして、払出制御用CPU371は、払出制御コードに払出開始待ち処理を示す値「0」をセットし(ステップS75308)、処理を終了する。
未払出個数カウンタの値が0となっていなければ、払出制御用CPU371は、エラーフラグをロードし、球切れエラー指定ビットまたは満タンエラー指定ビットがセットされているか否かを確認する(ステップS75309)。球切れエラー指定ビットまたは満タンエラー指定ビットがセットされていれば、そのまま処理を終了する。球切れエラー指定ビットおよび満タンエラー指定ビットのいずれもセットされていなければ、払出制御用CPU371は、エラーフラグに払出ケースエラー指定ビットがセットされているか否かを確認する(ステップS75310)。払出ケースエラー指定ビットがセットされていれば、払出制御用CPU371は、払出制御状態フラグをロードして(ステップS75311)、払出制御状態フラグに払出球数検査済み指定ビットをセットする(ステップS75312)。また、払出制御用CPU371は、払出制御状態フラグの再払出動作中1指定ビット(1回目の再払出動作の実行を示すビット)と再払出動作中2指定ビット(2回目の再払出動作の実行を示すビット)をリセットし(ステップS75313)、処理を終了する。
なお、払出球数検査済み指定ビットは、払出モータ289による払出動作終了時(正常動作の終了時)に払出個数カウントスイッチ301による検出の判定を行ったことを示すビットである。なお、払出動作を終了したにもかかわらず、未払出個数カウンタの値が2以上残っている場合には、払出個数異常カウンタにその残数が加算される。また、払出動作終了時の払出個数カウントスイッチ301による検出の判定は、払出動作を1回実行するごとに1回のみ実行され、払出モータ球噛み処理や払出モータ球噛み解除処理を実行して球噛み動作を終了するときには実行しない(具体的には、球噛み状態では払出ケースエラー指定ビットがセットされるので、ステップS75312であらかじめ払出球数検査済み指定ビットがセットされることによって、球噛み動作を終了しても払出個数カウントスイッチ301による検出の判定を行わない)ように制御される。なお、払出球数検査済み指定ビットは、払出モータ制御処理内における払出モータ定速処理で満タン状態となったときにもセットされる。
ステップS75310で払出ケースエラー指定ビットもセットされていなければ、払出制御用CPU371は、払出制御状態フラグをロードし(ステップS75314)、ステップS75315以降の再払出処理を実行するための処理を行う。
再払出処理を実行するために、払出制御用CPU371は、まず、払出制御状態フラグの再払出動作中2指定ビットがセットされているか否かを確認する(ステップS75315)。セットされていなければ、払出制御用CPU371は、払出制御状態フラグの再払出動作中1指定ビットがセットされているか否かを確認する(ステップS75316)。再払出動作中1指定ビットもセットされていなければ、払出制御用CPU371は、初回の再払出動作を実行するために、払出制御状態フラグに再払出動作中1指定ビットをセットする(ステップS75317)。
次いで、払出制御用CPU371は、払出制御状態フラグに払出球数検査済み指定ビットがセットされているか否かを確認する(ステップS75318)。払出球数検査済み指定ビットがセットされていれば、ステップS75326に移行する。払出球数検査済み指定ビットがセットされていなければ、払出制御用CPU371は、未払出個数カウンタの値が2以上であるか否かを確認する(ステップS75319)。未払出個数カウンタの値が2以上でなければ、ステップS75326に移行する。未払出個数カウンタの値が2以上であれば、払出制御用CPU371は、払出個数異常カウンタに未払個数カウンタの値を加算する(ステップS75320)。なお、ステップS75320の処理は、払出個数異常カウンタに払出不足数を累積的にカウントする処理に相当する。次いで、払出制御用CPU371は、加算後の払出個数異常カウンタの値が所定の払出個数異常エラー判定値(例えば2000)以上となったか否かを確認する(ステップS75321)。所定の払出個数異常エラー判定値(例えば2000)以上となっていれば、払出制御用CPU371は、払出個数異常エラーが発生したと判断し、払出個数異常エラーが発生したことを示す払出個数異常エラーフラグをセットする(ステップS75322)。
なお、この実施の形態では、ステップS75319の処理により、払出動作を終了したにもかかわらず、未払出個数カウンタの値が所定基準数(本例では2)以上残っていることを条件として、払出個数異常カウンタに未払出個数カウンタの値を加算する。すなわち、誤動作などにより、払出動作を終了したにもかかわらず、未払出個数カウンタの値がごく少数(本例では1)残った状態となることも少なからずあるので、払出動作を終了したときに未払出個数カウンタの値が1つでも残っているときに直ちに払出個数異常カウンタに累積カウントとしてしまったのでは、払出個数異常エラーと判定される頻度が必要以上に高くなり却って遊技に支障を生じてしまう。そこで、この実施の形態では、少し余裕をもたせて未払出個数カウンタの値が2以上残っていることを条件として、払出個数異常カウンタに累積カウントすることとし、必要以上に払出個数異常エラーと判定されることを防止している。なお、ステップS75319の処理では、払出不足数が所定基準数(本例では2)以上であることを条件に払出個数異常カウンタを累積的にカウントアップする場合を示しているが、払出過多数についても所定基準数(本例では2)以上であることを条件に払出個数異常カウンタを累積的にカウントアップするようにしてもよい。この場合、例えば、図90に示すステップS7502でYと判定した回数が累積して2回以上に達したことを条件にステップS7503で払出過多数分のカウント値を払出個数異常カウンタを累積的にカウントアップするようにすればよい。また、ステップS75319,S75320の処理において、未払出個数カウンタの値が所定基準数(本例では2)以上残っているか否かにかかわらず、必ず払出個数異常カウンタに未払出個数カウンタの値をそのまま加算するようにしてもよい。
ステップS75316で再払出動作中1指定ビットがセットされていれば、払出制御用CPU371は、払出制御状態フラグに払出球検知指定ビットがセットされているか否かを確認する(ステップS75323)。払出球検知指定ビットがセットされていれば、払出制御用CPU371は、ステップS75326に移行する。払出球検知指定ビットがセットされていなければ、払出制御用CPU371は、2回目の再払出動作を実行するために、払出制御状態フラグに再払出動作中2指定ビットをセットする(ステップS75324)とともに、払出個数異常カウンタの値を1加算する(ステップS75325)。なお、ステップS75325の処理は、払出個数異常カウンタに払出不足数を累積的にカウントする処理に相当する。そして、ステップS75326に移行する。なお、ステップS75325の処理を実行することによって、1回目の再払出動作を実行したにもかかわらず、再払出動作が正常に行われなかった場合に、払出個数異常カウンタの値が1カウントアップされる。また、正常に払出が完了した場合でも、誤カウントなどにより未払出個数カウンタの値が0になっていいないこともある。そこで、ステップS75323の処理が実行されることによって、払出球検知指定ビットがセットされていれば、すなわち払出個数カウントスイッチ301が払出動作中に少なくとも1個の遊技球の払出を検出していれば、正常に払出が完了している可能性があるので、払出個数異常カウンタの累積カウントを行うことなく、そのままステップS75326に移行する。
ステップS75326では、払出制御用CPU371は、初回の再払出動作を実行するために、再払出動作個数として1をセットする。次いで、払出制御用CPU371は、払出モータ回転回数バッファに再払出動作個数(本例では1)をセットする(ステップS75327)。次いで、払出制御用CPU371は、払出制御状態フラグをロードし(ステップS75328)、払出制御状態フラグの払出球検知指定ビットをリセットする(ステップ75329)。
次いで、払出制御用CPU371は、払出モータ制御処理で実行される処理を選択するための払出モータ制御コードに、払出モータ起動処理に応じて値をセットする(ステップS75330)。これにより、ステップS756の払出モータ制御処理において、払出モータ289を起動する払出モータ起動処理が実行され、再払出動作が開始される。そして、払出制御用CPU371は、払出制御コードに払出モータ停止待ち処理を示す値「1」をセットし(ステップS75331)、処理を終了する。
ステップS75315で再払出動作中2指定ビットがセットされていれば、払出制御用CPU371は、払出制御状態フラグの再払出動作中2指定ビットをリセットする(ステップS75332)。次いで、払出制御用CPU371は、払出制御状態フラグの払出球検知指定ビットがセットされているか否かを確認する(ステップS75333)。払出球検知指定ビットがセットされていれば、ステップS75326に移行する。払出球検知指定ビットがセットされていなければ、払出制御用CPU371は、払出制御状態フラグの再払出動作中2指定ビットをリセットする(ステップS75334)とともに、払出個数異常カウンタの値を1加算する(ステップS75335)。なお、ステップS75335の処理は、払出個数異常カウンタに払出不足数を累積的にカウントする処理に相当する。また、ステップS75335の処理を実行することによって、2回目の再払出動作を実行しても、再払出動作が正常に行われなかった場合に、払出個数異常カウンタの値が1カウントアップされる。また、正常に払出が完了した場合でも、誤カウントなどにより未払出個数カウンタの値が0になっていいないこともある。そこで、ステップS75333の処理が実行されることによって、払出球検知指定ビットがセットされていれば、すなわち払出個数カウントスイッチ301が払出動作中に少なくとも1個の遊技球の払出を検出していれば、正常に払出が完了している可能性があるので、払出個数異常カウンタの累積カウントを行うことなく、そのままステップS75326に移行する。
次いで、払出制御用CPU371は、エラーフラグをロードして、エラーフラグに払出ケースエラー指定ビットをセットする(ステップS75336)。そして、払出制御用CPU371は、再払出待ちタイマに所定時間(例えば2分)をセットし(ステップS75337)、処理を終了する。なお、ステップS57337でセットされた再払出待ちタイマは、後述するエラー処理で計測され(ステップS7710参照)、再払出タイマがタイムアウトしたことにもとづいて、エラーフラグの払出ケースエラー指定ビットがリセットされる(ステップS7711,S7712参照)。そのような処理が実行されることによって、この実施の形態では、払出ケースエラーが検出された後、2分経過したことにもとづいてエラー状態が自動復旧される。
次に、エラー処理について説明する。図96は、エラーの種類とエラー表示用LED374の表示との関係等を示す説明図である。図96に示すように、エラーが発生していない状態である場合には、エラー表示用LED374には「−」が表示される。また、払出個数異常カウンタの累積カウント値が2000個以上となり、払出個数異常エラーを検出した場合には、払出制御用マイクロコンピュータ370の払出制御用CPU371は、払出個数異常エラーとして、エラー表示用LED374に「A」を表示する制御を行う。なお、払出個数異常エラーとなった場合には、遊技機の電源がリセットされるまで、エラー状態が継続される。
主基板31からの接続信号がオフ状態になった場合には、払出制御用マイクロコンピュータ370の払出制御用CPU371は、主基板未接続エラーとして、エラー表示用LED374に「1」を表示する制御を行う。
払出個数カウントスイッチ301の断線または払出個数カウントスイッチ301の部分において球詰まりが発生した場合には、払出スイッチ異常検知エラー1として、エラー表示用LED374に「2」を表示する制御を行う。なお、払出個数カウントスイッチ301の断線または払出個数カウントスイッチ301の部分において球詰まりが発生したことは、払出個数カウントスイッチ301の検出信号がオフ状態にならなかったことによって判定される。
遊技球の払出動作中でないにも関わらず払出個数カウントスイッチ301の検出信号がオン状態になった場合には、払出スイッチ異常検知エラー2として、エラー表示用LED374に「3」を表示する制御を行う。払出モータ289の回転異常または遊技球が払い出されたにも関わらず払出個数カウントスイッチ301の検出信号がオン状態にならない場合には、払出ケースエラーとして、エラー表示用LED374に「4」を表示する制御を行う。払出個数カウントスイッチ301の検出信号がオン状態にならないことの具体的な検出方法は既に説明したとおりである。
また、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間のシリアル通信エラーが検出された場合には、主制御通信エラーとして、エラー表示用LED374に「5」を表示する制御を行う。
また、下皿満タン状態すなわち満タンスイッチ48がオン状態になった場合には、満タンエラーとして、エラー表示用LED374に「6」を表示する制御を行う。補給球の不足状態すなわち球切れスイッチ187がオン状態になった場合には、球切れエラーとして、エラー表示用LED374に「7」を表示する制御を行う。
また、カードユニット50からのVL信号がオフ状態になった場合には、プリペイドカードユニット未接続エラーとして、エラー表示用LED374に「8」を表示する制御を行う。不正なタイミングでカードユニット50と通信がなされた場合には、プリペイドカードユニット通信エラーとして、エラー表示用LED374に「9」を表示する制御を行う。なお、プリペイドカードユニット通信エラーは、プリペイドカードユニット制御処理(ステップS758)において検出される。
以上のエラーのうち、払出スイッチ異常検知エラー2、払出ケースエラー、または主制御通信エラーが発生した後、エラー解除スイッチ375が操作されエラー解除スイッチ375から操作信号が出力されたら(オン状態になったら)、払出制御手段は、エラーが発生する前の状態に復帰する。
なお、払出制御用CPU371は、既に述べたように、具体的には、タイマ割込処理の表示制御処理(ステップS760参照)において、図96に示す関係に従ってエラー表示LED374にエラー表示を行う。例えば、払出制御用CPU371は、後述するエラー処理においてプリペイドカードユニット未接続状態指定ビットをセットしたことにもとづいて(ステップS7729参照)、表示制御処理において、プリペイドカードユニット未接続エラーが発生している旨を示すエラー表示「8」をエラー表示用LED374に表示する制御を行う。また、例えば、エラー処理において満タンエラー指定ビットをセットしたことにもとづいて(ステップS7714参照)、表示制御処理において、満タンエラーが発生している旨を示すエラー表示「6」をエラー表示用LED374に表示する制御を行う。
図97および図98は、ステップS757のエラー処理を示すフローチャートである。エラー処理において、払出制御用CPU371は、まず、エラーフラグをロードし、エラーフラグの払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、主制御通信エラー指定ビット、および払出個数異常エラー指定ビット以外のエラービットをリセットする(ステップS7701)。次いで、払出制御用CPU371は、エラーフラグの値が0となっているか否かを確認する(ステップS7702)。エラーフラグの値が0となっていれば、ステップS7710に移行する。エラーフラグの値が0でなければ(すなわち、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、主制御通信エラー指定ビット、または払出個数異常エラー指定ビットがセットされていれば)、払出制御用CPU371は、エラー解除スイッチ375から操作信号がオン状態になったか否か確認する(ステップS7703)。操作信号がオン状態になったら、払出制御用CPU371は、機構板開放センサ155Bからの機構板開放信号がオン状態であるか否かを確認する(ステップS7703a)。機構板開放信号がオン状態であれば(すなわち、機構板が開放状態となっていれば)、払出制御用CPU371は、エラー復帰時間をエラー復帰前タイマにセットする(ステップS7709)。エラー復帰時間は、エラー解除スイッチ375が操作されてから、実際にエラー状態から通常状態に復帰するまでの時間である。機構板開放信号がオン状態でなければ(すなわち、機構板が閉鎖状態となっていれば)、払出制御用CPU371は、ステップS7709の処理を実行することなく、ステップS7710に移行する。
一般に、エラー解除スイッチ375は遊技機内部の払出制御基板37に搭載されているので、遊技店員などは、機構板を開放状態にしなければ、エラー解除スイッチ375を押下してエラー状態を解除することはできない。従って、正規の手順に従ってエラー状態を解除させる場合、エラー解除スイッチ375がオン状態となっていれば同時に機構板開放信号もオン状態となっている筈である。ステップS7703でエラー解除スイッチ375のオン状態が検出されたにもかかわらず、ステップS7703aで機構板開放信号のオン状態が検出されなかったということは、機構板が閉鎖状態のままでエラー解除スイッチ375が押下されたということである。そのため、遊技中に遊技機の隙間から器具を差し込んで不正にエラー解除スイッチ375をオンにする行為が行われている可能性が高い。そこで、この実施の形態では、ステップS7703でエラー解除スイッチ375のオン状態が検出されたにもかかわらず、ステップS7703aで機構板開放信号のオン状態が検出されなかった場合には、不正にエラー状態の解除が行われようとしている可能性が高いと判断して、ステップS7709のエラー復帰前タイマのセットを行わないようにしてエラー状態が解除されないように制御する。そのように制御することによって、この実施の形態では、エラー状態の解除に関しても、不正行為が行われている可能性を検出することができ、不正行為防止のための対策を強化することができる。
エラー解除スイッチ375から操作信号がオン状態でない場合には、エラー復帰前タイマの値を確認する(ステップS7704)。エラー復帰前タイマの値が0であれば、すなわち、エラー復帰前タイマがセットされていなければ、ステップS7710に移行する。エラー復帰前タイマがセットされていれば、エラー復帰前タイマの値を−1し(ステップS7705)、エラー復帰前タイマの値が0になったら(ステップS7706)、エラーフラグのうちの、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、および主制御通信エラー指定ビットをリセットする(ステップS7707)とともに、セットされていれば再払出待ちタイマをリセットする(ステップS7708)。そして、ステップS7710に移行する。また、エラー復帰前タイマがタイムアウトしていなければ、ステップS7713に移行する。
なお、ステップS7707の処理が実行されるときに、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、および主制御通信エラー指定ビットのうちには、セット状態ではないエラービットがある場合もあるが、セット状態にないエラービットをリセットしても何ら問題はない。以上のように、この実施の形態では、払出スイッチ異常検知エラー2、払出ケースエラー、および主制御通信エラーのビットをセットする原因になったエラー(図96参照)が発生した場合には、エラー解除スイッチ375が押下されることによってエラー解除される。
ステップS7710では、払出制御用CPU371は、セットされていれば、再払出待ちタイマの値を1減算し、減算後の再払出待ちタイマがタイムアウトしているか否かを確認する(ステップS7711)。再払出待ちタイマがタイムアウトしていれば、払出制御用CPU371は、エラーフラグの払出ケースエラー指定ビットをリセットする(ステップS7712)。そして、ステップS7713に移行する。
以上のように、この実施の形態では、ステップS7707,S7712の処理が実行されることによって、払出ケースエラーが検出されて払出検出エラー指定ビットがセットされた場合には、エラー解除スイッチ375が押下されたこと(正確には、さらにエラー復帰前時間を経過したこと)を条件にエラー解除される場合と、払出ケースエラーの検出後に所定時間(本例では2分)を経過したことを条件にエラーが自動解除される場合とがある。なお、この実施の形態では、払出個数異常エラーに関しては、一度検出されると、遊技機への電源供給をリセットしないかぎり解除されない。
ステップS7707,S7712の処理が実行されて払出ケースエラー指定ビットがリセットされた場合には、払出制御コードが「2」(図93〜図95に示す払出通過待ち処理の実行に対応)であるときには、遊技球払出のリトライ動作が開始される。つまり、次にステップS755の払出制御処理が実行されるときにステップS7513の払出通過待ち処理が実行されると、再び、再払出処理が行われる。例えば、賞球払出処理が行われていた場合には、未払出個数カウンタの値が0でないときには、ステップS75305からステップS75309,S75310に移行し、ステップS75310において払出ケースエラー指定ビットがリセット状態であることが確認されるので、ステップS75314以降の再払出処理を開始するための処理が再度実行され、再払出処理が実行される。
以上のように、払出制御手段は、球払出装置97が遊技球の払い出しを行ったにもかかわらず払出個数カウントスイッチ301が1個も遊技球を検出しなかったときには遊技球を払い出すためのリトライ動作をあらかじめ決められた所定回(例えば2回)を限度として球払出装置97に実行させる補正払出制御を行った後、払出個数カウントスイッチ301が1個も遊技球を検出しなかったことが検出されたときには(図93〜図95のステップS75314以降を参照)、払い出しに関わる制御状態をエラー状態に移行させ、エラー状態においてエラー解除スイッチ375からエラー解除信号が出力されたこと、または払出ケースエラーを検出してから所定時間(本例では2分)を経過したことを条件に再度補正払出制御を行わせる補正払出制御再起動処理を実行する。
さらに、エラー状態における再払出処理の実行中(具体的には払出ケースエラーをセットする前の再払出処理中およびエラー解除スイッチ375押下後の再払出処理中)でも、図90に示すステップS7501,S7502,S7506処理は実行されている。すなわち、払い出しに関わるエラーが生じているときでも、遊技球が払出個数カウントスイッチ301を通過すれば、未払出個数カウンタの値が減算される。従って、エラー状態から復帰したときの未払出個数カウンタの値は、実際に払い出された遊技球数を反映した値になっている。すなわち、払い出しに関わるエラーが発生しても、実際に払い出した遊技球数を正確に管理することができる。
また、図93〜図95に示された払出通過待ち処理において、再払出処理が実行された結果、遊技球が払い出されたことが確認されたときでも、払出ケースエラーのビットはリセットされない。払出ケースエラーのビットがリセットされるのは、あくまでも、エラー解除スイッチ375が操作されたとき(具体的は、操作後エラー復帰時間が経過したとき)、または払出ケースエラーを検出してから所定時間(本例では2分)を経過したときである(ステップS7707,S7712)。すなわち、払出ケースエラーを検出してから所定時間(本例では2分)を経過するまでは、遊技球が払出個数カウントスイッチ301を通過したこと等にもとづいて自動的に払出ケースエラー(払出不足エラー)の状態が解除されるということはなく、人為的な操作を経ないと払出ケースエラーは解除されない。従って、遊技店員等は、確実に払出不足が発生したことを認識することができる。ただし、この実施の形態では、少なくとも、払出ケースエラーが発生してからある程度長い時間(本例では2分)が経過すれば払出ケースエラーを自動解除するように構成することによって、払出ケースエラーが必要以上に長時間継続することを防止している。
なお、エラー解除スイッチ375が操作されたことによってハードウェア的にリセット(払出制御用CPU371に対するリセット)がかかるように遊技機を構成する場合もあるが、そのように遊技機を構成した場合には、エラー解除スイッチ375が操作されたことによって例えば未払出個数カウンタの値もクリアされてしまう。しかし、この実施の形態では、払出制御手段が、エラー解除スイッチ375が操作されたことによって再払出動作を再び行うように構成されているので、確実に払出処理が実行され、遊技者に不利益を与えないようにすることができる。
ステップS7713では、払出制御用CPU371は、満タンスイッチ48の検出信号を確認する。満タンスイッチ48の検出信号が出力されていれば(オン状態であれば)、エラーフラグのうちの満タンエラー指定ビットをセットする(ステップS7714)。
また、払出制御用CPU371は、球切れスイッチ187の検出信号を確認する(ステップS7715)。球切れスイッチ187の検出信号が出力されていれば(オン状態であれば)、エラーフラグのうちの球切れエラー指定ビットをセットする(ステップS7716)。
さらに、払出制御用CPU371は、主基板31からの接続信号の状態を確認し(ステップS7717)、接続信号が出力されていなければ(オフ状態であれば)、主基板未接続エラー指定ビットをセットする(ステップS7718)。
また、払出制御用CPU371は、各スイッチの検出信号の状態が設定される各スイッチタイマのうち払出個数カウントスイッチ301に対応したスイッチタイマの値を確認し、その値がスイッチオン最大時間(例えば「250」)を越えていたら(ステップS7719)、エラーフラグのうち払出スイッチ異常検知エラー1のビットをセットする(ステップS7720)。なお、各スイッチタイマの値は、ステップS752の入力判定処理において、各スイッチの検出信号を入力する入力ポートの状態がスイッチオン状態であれば+1され、オフ状態であれば0クリアされる。従って、払出個数カウントスイッチ301に対応したスイッチタイマの値がスイッチオン最大時間を越えていたということは、スイッチオン最大時間を越えて払出個数カウントスイッチ301がオン状態になっていることを意味し、払出個数カウントスイッチ301の断線または払出個数カウントスイッチ301の部分で遊技球が詰まっていると判断される。
また、払出制御用CPU371は、払出個数カウントスイッチ301に対応したスイッチタイマの値がスイッチオン判定値(例えば「4」)になった場合には(ステップS7721)、払出制御状態フラグをロードし(ステップS7722)、賞球払出動作中または球貸し払出動作中であるか否かを確認する(ステップS7723)。具体的には、払出制御用CPU371は、払出制御状態フラグに賞球払出動作中指定ビットまたは球貸し払出動作中指定ビットがセットされているか否かを確認する。賞球払出動作中指定ビットおよび球貸し払出動作中指定ビットがともにリセット状態であれば、払出制御用CPU371は、払出動作中でないのに払出個数カウントスイッチ301を遊技球が通過したとして、エラーフラグのうち払出スイッチ異常検知エラー2のビットをセットする(ステップS7724)。
また、払出制御用CPU371は、払出個数異常カウンタの値が所定の払出個数異常エラー判定値(例えば2000)以上となっているか否かを確認する(ステップS7725)。所定の払出個数異常エラー判定値(例えば2000)以上となっていれば、払出制御用CPU371は、払出個数異常エラーが発生したと判断し、払出個数異常エラーフラグをセットする(ステップS7726)。
次いで、払出制御用CPU371は、プリペイドカードユニット50のエラー状態を設定するためのプリペイドカードユニット用エラーフラグをリセットする(ステップS7727)。また、払出制御用CPU371は、カードユニット50からのVL信号の入力状態を確認し(ステップS7728)、VL信号が入力されていなければ(オフ状態であれば)、プリペイドカードユニット用エラーフラグのうちプリペイドカードユニット未接続エラー指定ビットをセットする(ステップS7729)。
なお、ステップS760の表示制御処理では、エラーフラグおよびプリペイドカードユニット用エラーフラグ中のエラービットに応じた表示(数値表示)による報知をエラー表示用LED374によって行う。従って、通信エラーをエラー表示用LED374によって報知することができる。また、通信エラーは、払出制御手段の側で検出されるので、遊技制御手段の負担を増すことなく通信エラーを検出できる。
また、この実施の形態では、主基板未接続エラーは接続信号がオン状態になると自動的に解消されるが(ステップS7701,S7717,S7718参照)、さらにエラー解除スイッチ375が操作されたという条件を加えて、エラー状態が解消されるようにしてもよい。
また、この実施の形態では、通信エラーが、カードユニット50との間の通信エラー(プリペイドカードユニット未接続エラーおよびプリペイドカードユニット通信エラー)やその他のエラーと区別可能に報知される(図96参照)。従って、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の通信エラーが容易に特定される。
また、この実施の形態では、エラー処理において、まず、エラーフラグのうち、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、主制御通信エラー指定ビット、および払出個数異常エラー指定ビット以外のビットを一旦リセット(ステップS7701参照)してから、エラー処理を実行するごとに満タンエラーや球切れエラー、主制御未接続エラーとなっているか否かを確認している。そして、払出スイッチ異常検知エラー2指定ビット、払出ケースエラー指定ビット、および主制御通信エラー指定ビットについては、エラー解除スイッチ375が操作されたことを条件にリセットしている。しかし、払出個数異常エラーについては、一度セットされれば解除されることはない。従って、この実施の形態では、払出個数異常エラーとなった場合には、電源リセットが行われたこと条件として払出個数異常エラーが解除されることになる。
図99および図100は、ステップS759の情報出力処理を示すフローチャートである。情報出力処理において、払出制御用CPU371は、まず、払出制御状態フラグをロードし(ステップS7901)、球貸し払出動作中であるか否かを確認する(ステップS7902)。具体的には、払出制御用CPU371は、払出制御状態フラグの球貸し払出動作中指定ビットがセットされているか否かを確認する。球貸し払出動作中であれば、ステップS7909に移行する。球貸し払出動作中でなければ、払出制御用CPU371は、払出個数カウントスイッチ301がオン状態であるか否かを確認する(ステップS7903)。払出個数カウントスイッチ301がオン状態であれば(この場合、賞球による払い出しを検出したことになる)、払出制御用CPU371は、賞球信号1出力回数カウンタの値を1加算する(ステップS7904)とともに、賞球払出個数カウンタの値を1加算する(ステップS7905)。なお、賞球信号1出力回数カウンタは、賞球信号1を出力する条件が成立した回数をカウントするためのカウンタである。また、賞球払出個数カウンタは、賞球払出により払い出された遊技球の数をカウントするためのカウンタである。
次いで、払出制御用CPU371は、加算後の賞球払出個数カウンタの値が所定の賞球情報出力判定値(本例では10)以上となっているか否かを確認する(ステップS7906)。所定の賞球情報出力判定値(本例では10)以上となっていれば、払出制御用CPU371は、賞球払出個数カウンタをリセットする(ステップS7907)とともに、賞球情報出力回数カウンタの値を1加算する(ステップS7908)。なお、賞球情報出力回数カウンタは、賞球情報を出力する条件が成立した回数をカウントするためのカウンタである。
次いで、払出制御用CPU371は、セットされていれば賞球情報出力タイマを1減算し(ステップS7909)、減算後の賞球情報出力タイマがタイムアウトしているか否かを確認する(ステップS7910)。なお、賞球情報出力タイマは、賞球情報の出力継続時間を計測するためのタイマである。タイムアウトしていなければ、ステップS7914に移行する。タイムアウトしていれば、払出制御用CPU371は、賞球情報出力回数カウンタの値が0となっているか否かを確認する(ステップS7911)。賞球情報出力回数カウンタの値が0であれば、ステップS7915に移行する。賞球情報出力回数カウンタの値が0でなければ(すなわち、賞球情報の出力条件の成立数がまだ残っていれば)、払出制御用CPU371は、賞球情報出力回数カウンタの値を1減算する(ステップS7912)。次いで、払出制御用CPU371は、次の賞球情報の出力を開始するために、賞球情報出力タイマをセットする(ステップS7913)。そして、払出制御用CPU371は、賞球情報を遊技制御用マイクロコンピュータ560に出力する制御を行う(ステップS7914)。具体的には、払出制御用CPU371は、出力ポート1の賞球情報出力ビット(ビット7。図77参照。)に出力データをセットする処理を行う。
次いで、払出制御用CPU371は、セットされていれば賞球信号1出力タイマを1減算し(ステップS7915)、減算後の賞球信号1出力タイマがタイムアウトしているか否かを確認する(ステップS7916)。なお、賞球信号1出力タイマは、賞球信号1の出力継続時間を計測するためのタイマである。タイムアウトしていなければ、ステップS7920に移行する。タイムアウトしていれば、払出制御用CPU371は、賞球信号1出力回数カウンタの値が0となっているか否かを確認する(ステップS7917)。賞球信号1出力回数カウンタの値が0であれば、ステップS7921に移行する。賞球信号1出力回数カウンタの値が0でなければ(すなわち、賞球信号1の出力条件の成立数がまだ残っていれば)、払出制御用CPU371は、賞球信号1出力回数カウンタの値を1減算する(ステップS7918)。次いで、払出制御用CPU371は、次の賞球信号1の出力を開始するために、賞球信号1出力タイマをセットする(ステップS7919)。そして、払出制御用CPU371は、賞球信号1を外部出力する制御を行う(ステップS7920)。具体的には、払出制御用CPU371は、出力ポート0の賞球信号1出力ビット(ビット0。図77参照。)に出力データをセットする処理を行う。なお、この実施の形態では、賞球信号1は、払出制御基板31から直接ターミナル基板160に入力されて外部出力されるのではなく、主基板31を一旦経由してからターミナル基板160に入力されて外部出力される。
次いで、払出制御用CPU371は、出力ポート0の遊技機エラー状態信号出力ビット(ビット1。図77参照。)に出力データをセットする処理を行い(ステップS7921)、エラーフラグをロードする(ステップS7922)。エラーフラグに球切れエラー指定ビットまたは満タンエラー指定ビットのいずれかがセットされていれば(ステップS7923,S7924のY)、出力ポート0の遊技機エラー状態信号出力ビットがセットされたままの状態で処理を終了する。この場合、ステップS7921で出力ポート0の遊技機エラー状態信号出力ビットがセットされたことにもとづいて、遊技機エラー状態信号が外部出力されることになる。なお、この実施の形態では、遊技機エラー状態信号は、払出制御基板31から直接ターミナル基板160に入力されて外部出力されるのではなく、主基板31を一旦経由してからターミナル基板160に入力されて外部出力される。一方、エラーフラグに球切れエラー指定ビットおよび満タンエラー指定ビットのいずれもセットされていなければ、払出制御用CPU371は、出力ポート0の遊技機エラー状態信号出力ビットをクリアし(ステップS7925)、処理を終了する。
以上の処理が実行されることによって、この実施の形態では、払出制御手段側で賞球払出を1球検出するごとに賞球信号1が外部出力される。また、払出制御手段側で賞球払出を10球検出するごとに遊技制御手段側に対して賞球情報が出力される。さらに、払出制御手段側で球切れエラーまたは満タンエラーを検出すると遊技機エラー状態信号が外部出力される。
次に、演出制御手段の動作を説明する。図101は、演出制御基板80に搭載されている演出制御手段としての演出制御用マイクロコンピュータ100(具体的には、演出制御用CPU101a)が実行するメイン処理を示すフローチャートである。演出制御用CPU101aは、電源が投入されると、メイン処理の実行を開始する。メイン処理では、まず、RAM領域のクリアや各種初期値の設定、また演出制御の起動間隔(例えば、4ms)を決めるためのタイマの初期設定等を行うための初期化処理を行う(ステップS781)。その後、演出制御用CPU101aは、タイマ割込フラグの監視(ステップS782)を行うループ処理に移行する。タイマ割込が発生すると、演出制御用CPU101aは、タイマ割込処理においてタイマ割込フラグをセットする。メイン処理において、タイマ割込フラグがセットされていたら、演出制御用CPU101aは、そのフラグをクリアし(ステップS783)、以下の演出制御処理を実行する。
演出制御処理において、演出制御用CPU101aは、まず、受信した演出制御コマンドを解析し、受信した演出制御コマンドに応じたフラグをセットする処理等を行う(コマンド解析処理:ステップS784)。
次いで、演出制御用CPU101aは、演出制御プロセス処理を行う(ステップS785)。演出制御プロセス処理では、制御状態に応じた各プロセスのうち、現在の制御状態(演出制御プロセスフラグ)に対応した処理を選択して演出表示装置9の表示制御を実行する。
次いで、大当り図柄決定用乱数などの乱数を生成するためのカウンタのカウント値を更新する乱数更新処理を実行する(ステップS786)。その後、ステップS782に移行する。
図102は、コマンド解析処理(ステップS784)の具体例を示すフローチャートである。主基板31から受信された演出制御コマンドは受信コマンドバッファに格納されるが、コマンド解析処理では、演出制御用CPU101aは、コマンド受信バッファに格納されているコマンドの内容を確認する。
なお、図102では、遊技制御用マイクロコンピュータ560から送信される演出制御コマンドのうち、特に、払出制御に関するエラーを示すコマンドを受信した場合の処理について示しているが、実際には、演出図柄の変動パターンを示す変動パターンコマンドや、大当りとするか否かの表示結果を示す表示結果指定コマンドなど、様々な演出制御コマンドが遊技制御用マイクロコンピュータ560から送信される。
コマンド解析処理において、演出制御用CPU101aは、まず、コマンド受信バッファに受信コマンドが格納されているか否か確認する(ステップS611)。格納されているか否かは、コマンド受信個数カウンタの値と読出ポインタとを比較することによって判定される。両者が一致している場合が、受信コマンドが格納されていない場合である。コマンド受信バッファに受信コマンドが格納されている場合には、演出制御用CPU101aは、コマンド受信バッファから受信コマンドを読み出す(ステップS612)。なお、読み出したら読出ポインタの値を+2しておく(ステップS613)。+2するのは2バイト(1コマンド)ずつ読み出すからである。
受信した演出制御コマンドが枠状態表示コマンドであれば(ステップS614)、演出制御用CPU101aは、枠状態表示コマンドのEXTデータのうちの賞球エラービット(ビット0。図71参照。)がセットされているか否かを確認する(ステップS615)。セットされていれば、演出制御用CPU101aは、演出表示装置9の表示画面に所定の賞球エラー報知情報を重畳表示する制御を行う(ステップS616)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「賞球エラーが発生しました」などの文字列を表示させる制御を行う。
また、演出制御用CPU101aは、枠状態表示コマンドのEXTデータのうちの満タンエラービット(ビット1。図71参照。)がセットされているか否かを確認する(ステップS617)。セットされていれば、演出制御用CPU101aは、演出表示装置9の表示画面に所定の満タンエラー報知情報を重畳表示する制御を行う(ステップS618)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「満タンエラーが発生しました」などの文字列を表示させる制御を行う。
また、演出制御用CPU101aは、枠状態表示コマンドのEXTデータのうちの球切れエラービット(ビット2。図71参照。)がセットされているか否かを確認する(ステップS619)。セットされていれば、演出制御用CPU101aは、演出表示装置9の表示画面に所定の球切れエラー報知情報を重畳表示する制御を行う(ステップS620)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「球切れエラーが発生しました」などの文字列を表示させる制御を行う。
また、演出制御用CPU101aは、枠状態表示コマンドのEXTデータのうちの払出個数異常エラービット(ビット3。図71参照。)がセットされているか否かを確認する(ステップS621)。セットされていれば、演出制御用CPU101aは、演出表示装置9の表示画面に所定の払出個数異常エラー報知情報を重畳表示する制御を行う(ステップS622)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「払出個数異常エラーが発生しました」などの文字列を表示させる制御を行う。
また、演出制御用CPU101aは、枠状態表示コマンドのEXTデータのうちの扉開放異常エラービット(ビット7。図71参照。)がセットされているか否かを確認する(ステップS623)。セットされていれば、演出制御用CPU101aは、ガラス扉枠2の開放状態を検出したことを報知する所定の特殊音を出力させるための音信号(音番号データ)を音声出力基板70に出力する(ステップS624)。この場合、音声出力基板70において、演出制御用マイクロコンピュータ100から入力した特殊音用の音番号データは、入力ドライバ702を介して音声合成用IC703に入力される。そして、音声合成用IC703は、音番号データに応じた特殊音(例えば、ビープ音などの警告音)を発生し、増幅回路705を介してスピーカ27から出力させる。
なお、特殊音の出力は、例えば、遊技機に対する電力供給がオフするまで、またはガラス扉枠2が閉鎖状態にされるまで継続して出力されるようにしてもよいが、出力開始から所定期間(例えば、10秒)が経過するまで継続して出力されるようにしてもよい。ガラス扉枠2が閉鎖状態にされるまで継続して出力されるようにする場合には、遊技制御用マイクロコンピュータ560は、ガラス扉枠2が開放状態から閉鎖状態に変化したことを検出すると、その旨を示すコマンドを演出制御用マイクロコンピュータ100に送信する。
受信した演出制御コマンドが賞球不足エラーコマンドであれば(ステップS625)、演出制御用CPU101aは、演出表示装置9の表示画面に所定の賞球不足エラー報知情報を重畳表示する制御を行う(ステップS626)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「賞球不足エラーが発生しました」などの文字列を表示させる制御を行う。
受信した演出制御コマンドが賞球過剰エラーコマンドであれば(ステップS627)、演出制御用CPU101aは、演出表示装置9の表示画面に所定の賞球過剰エラー報知情報を重畳表示する制御を行う(ステップS628)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「賞球過剰エラーが発生しました」などの文字列を表示させる制御を行う。
なお、各エラー表示を単に重畳表示させるのではなく、不正の重要度の観点から順位付けを行って優先順位が高いエラーを優先して報知するようにしてもよい。例えば、払出個数異常エラーを最も高い優先順位で優先的に報知するようにしてもよく、エラー状態が変化した場合に新たに発生したエラーを優先して報知するようにしてもよい。
受信した演出制御コマンドが初期化不正報知コマンドであれば(ステップS629)、演出制御用CPU101aは、演出表示装置9の表示画面に所定の初期化不正報知情報を重畳表示する制御を行う(ステップS630)。例えば、演出制御用CPU101aは、演出表示装置9の表示画面に「クリアスイッチが不正に押されました」などの文字列を表示させる制御を行う。なお、所定の初期化不正報知情報を表示するのではなく、例えば、所定の警告音を出力したり、所定パターンで各ランプ25,28a,28b,28cを点灯または点滅表示させたりすることによって、クリアスイッチが不正に押下された可能性を報知するようにしてもよい。また、例えば、クリアスイッチが不正に押下された可能性を示す信号をターミナル基板160を介してホールコンピュータなどの外部装置に外部出力するように構成してもよい。
受信した演出制御コマンドがその他のコマンドであれば、演出制御用CPU101aは、受信した演出制御コマンドに応じたフラグをセットする(ステップS631)。そして、ステップS611に移行する。なお、例えば、変動パターンコマンドや表示結果指定コマンドを受信した場合には、演出制御用CPU101aは、受信した変動パターンコマンドや表示結果指定コマンドをRAMに形成された所定の格納領域に格納する処理も行う。
図103は、図101に示されたメイン処理における演出制御プロセス処理(ステップS785)を示すフローチャートである。演出制御プロセス処理では、演出制御用CPU101aは、演出制御プロセスフラグの値に応じてステップS800〜S806のうちのいずれかの処理を行う。各処理において、以下のような処理を実行する。なお、演出制御プロセス処理では、演出表示装置9の表示状態が制御され、演出図柄の可変表示が実現されるが、第1特別図柄の変動に同期した演出図柄の可変表示に関する制御も、第2特別図柄の変動に同期した演出図柄の可変表示に関する制御も、一つの演出制御プロセス処理において実行される。なお、第1特別図柄の変動に同期した演出図柄の可変表示と、第2特別図柄の変動に同期した演出図柄の可変表示とを、別の演出制御プロセス処理により実行するように構成してもよい。また、この場合、いずれの演出制御プロセス処理により演出図柄の変動表示が実行されているかによって、いずれの特別図柄の変動表示が実行されているかを判断するようにしてもよい。
変動パターンコマンド受信待ち処理(ステップS800):遊技制御用マイクロコンピュータ560から変動パターンコマンドを受信しているか否か確認する。具体的には、コマンド解析処理でセットされる変動パターンコマンド受信フラグがセットされているか否か確認する。変動パターンコマンドを受信していれば、演出制御プロセスフラグの値を演出図柄変動開始処理(ステップS801)に対応した値に変更する。
演出図柄変動開始処理(ステップS801):演出図柄の変動が開始されるように制御する。そして、演出制御プロセスフラグの値を演出図柄変動中処理(ステップS802)に対応した値に更新する。
演出図柄変動中処理(ステップS802):変動パターンを構成する各変動状態(変動速度)の切替タイミング等を制御するとともに、変動時間の終了を監視する。そして、変動時間が終了したら、演出制御プロセスフラグの値を演出図柄変動停止処理(ステップS803)に対応した値に更新する。
演出図柄変動停止処理(ステップS803):演出図柄の変動を停止し表示結果(停止図柄)を導出表示する制御を行う。そして、演出制御プロセスフラグの値を大当り表示処理(ステップS804)または変動パターンコマンド受信待ち処理(ステップS800)に対応した値に更新する。
大当り表示処理(ステップS804):大当りである場合には、変動時間の終了後、演出表示装置9に大当りの発生を報知するための画面を表示する制御を行う。そして、演出制御プロセスフラグの値を大当り遊技中処理(ステップS805)に対応した値に更新する。
大当り遊技中処理(ステップS805):大当り遊技中の制御を行う。例えば、大入賞口開放中指定コマンドや大入賞口開放後指定コマンドを受信したら、演出表示装置9におけるラウンド数の表示制御等を行う。そして、演出制御プロセスフラグの値を大当り終了演出処理(ステップS806)に対応した値に更新する。
大当り終了演出処理(ステップS806):演出表示装置9において、大当り遊技状態が終了したことを遊技者に報知する表示制御を行う。そして、演出制御プロセスフラグの値を変動パターンコマンド受信待ち処理(ステップS800)に対応した値に更新する。
次に、乱数回路509の動作タイミングについて説明する。図104は、乱数回路509の動作を説明するためのタイミングチャートである。また、図104(A)では、主基板31に搭載された制御用クロック生成回路111により生成される制御用クロックCCLKを示している。図104(B)では、乱数用クロック生成回路112により生成される乱数用クロックRCLKを示している。なお、図104に示す各種信号は、ハイレベルでオフ状態となりローレベルでオン状態となる負論理の信号であるものとしている。図104(A)および(B)に示すように、制御用クロックCCLKの発振周波数と、乱数用クロックRCLKの発振周波数とは、互いに異なる周波数となっており、また、いずれか一方の発振周波数が他方の発振周波数の整数倍になることがない。
図104(B)に示すように、乱数用クロックRCLKは、タイミングT10、T11、T12、…においてハイレベルからローレベルに立ち下がる。そして、乱数用クロックRCLKは、遊技制御用マイクロコンピュータ560の乱数用外部クロック端子ERCに供給され、図16に示す乱数回路509が備えるクロック用フリップフロップ552におけるクロック端子CKに入力される。クロック用フリップフロップ552は、逆相出力端子(反転出力端子)QバーからD入力端子へとフィードバックされるラッチ用クロックRC0を、クロック端子CKに入力される乱数用クロックRCLKの立ち下がりエッジに応答して取り込み(ラッチして)、正相出力端子(非反転出力端子)Qから乱数更新クロックRGKとして出力する。これにより、乱数更新クロックRGKは、図104(C)に示すように、タイミングT10、T12、T14、…において、ハイレベルからローレベルへと立ち下がり、乱数用クロックRCLKの発振周波数の1/2の発振周波数を有する信号となる。例えば、乱数用クロックRCLKの発振周波数が20MHzであれば、乱数更新クロックRGKの発振周波数は10MHzとなる。そして、乱数用クロックRCLKの発信周波数は制御用クロックCCLKの発振周波数の整数倍にも整数分の1にもならないことから、乱数更新クロックRGKの発振周波数は、制御用クロックCCLKの発振周波数とは異なる周波数となる。乱数生成回路553は、例えば乱数更新クロックRGKの立ち下がりエッジに応答して、カウント値順列RCNにおける数値データを更新する。乱数列変更回路555は、乱数列変更設定回路556による乱数更新規則の設定にもとづき、乱数生成回路553から出力されたカウント値順列RCNにおける数値データの更新順を変更したものを、乱数列RSNとして出力する。こうして、乱数列RSNにおける数値データは、例えば図104(D)に示すように、乱数更新クロックRGKの立ち下がりエッジなどに応答して更新される。
このように、乱数用クロック生成回路112により生成される乱数用クロックRCLKの発振周波数と、制御用クロック生成回路111により生成される制御用クロックCCLKの発振周波数とは、互いに異なっており、また、一方の発振周波数が他方の発振周波数の整数倍となることもない。そのため、乱数回路509のクロック用フリップフロップ552により生成される乱数更新クロックRGKやラッチ用クロックRC0の発振周波数は、乱数用クロックRCLKの発振周波数の1/2となるが、制御用クロックCCLKの発振周波数や、制御用クロックCCLKの発振周波数の1/2となる内部システムクロックSCLKの発振周波数とは、異なるものとなる。こうして、制御用クロックCCLKや内部システムクロックSCLKと、乱数更新クロックRGKとに同期が生じることを防ぎ、CPU56の動作タイミングからは、乱数回路509にて乱数生成回路553や乱数列変更回路555により生成される乱数列RSNにおける数値データの更新タイミングを特定することが困難になる。これにより、CPU56の動作タイミングから乱数回路509における乱数値となる数値データの更新動作を解析した結果にもとづく狙い撃ちなどを、確実に防止することができる。
クロック用フリップフロップ552から出力されるラッチ用クロックRC0は、乱数更新クロックRGKの反転信号となり、その発振周波数は乱数更新クロックRGKの発振周波数と同一で、その位相は乱数更新クロックRGKの位相とπ(=180°)だけ異なる。ラッチ用クロックRC0は、分岐点BR1にてラッチ用クロックRC1とラッチ用クロックRC2とに分岐される。したがって、例えば図104(E)に示すように、各ラッチ用クロックRC0、RC1、RC2はいずれも、共通の周期で信号状態が変化する発振信号となる。ラッチ用クロックRC1は、ラッチ用フリップフロップ557Aのクロック端子CKに入力される。ラッチ用クロックRC2は、ラッチ用フリップフロップ557Bのクロック端子CKに入力される。
こうして、ラッチ用クロックRC0を分岐することにより生成されるラッチ用クロックRC1、RC2の発振周波数は、制御用クロックCCLKや内部システムクロックSCLKの発振周波数とは、異なるものとなる。したがって、制御用クロックCCLKや内部システムクロックSCLKと、ラッチ用クロックRC1、RC2とに同期が生じることを防ぎ、CPU56の動作タイミングからは、乱数回路509にて乱数値となる数値データが取り込まれる動作タイミングを特定することが困難になる。これにより、CPU56の動作タイミングから乱数回路509における乱数値となる数値データの取込動作を解析した結果にもとづく狙い撃ちなどを、確実に防止することができる。
ラッチ用フリップフロップ557Aは、ラッチ用クロックRC1の立ち下がりエッジに応答して、始動口スイッチ14aから伝送されて入力ポートP0に供給された始動入賞信号SSを取り込み(ラッチして)、始動入賞時ラッチ信号SL1として出力端子Qから出力する。そして、乱数ラッチセレクタ558Aにおける取込方法が入力ポートP0への信号入力に指定されていれば、始動入賞時ラッチ信号SL1が乱数ラッチ信号LL1として出力される。これにより、例えば図104(F)に示すようなタイミングでオフ状態(ハイレベル)とオン状態(ローレベル)とで信号状態が変化する始動入賞信号SSは、ラッチ用クロックRC1が立ち下がるタイミングT11、T13、…にてラッチ用フリップフロップ557Aに取り込まれた後、図104(G)に示すようなタイミングT11、T13で信号状態がオフ状態とオン状態とで変化する乱数ラッチ信号LL1となって、乱数ラッチセレクタ558Aから出力される。ここで、始動口スイッチ14aから伝送される始動入賞信号SSは、始動入賞口14における遊技球の始動入賞が検出されたときに、オフ状態からオン状態へと変化する。ラッチ用フリップフロップ557Aから乱数ラッチセレクタ558Aを介して出力された乱数ラッチ信号LL1は、乱数値レジスタR1Dとなる乱数値レジスタ559Aに供給されて、乱数列変更回路555から出力された乱数列RSNにおける数値データを取得するために用いられる。こうして、ラッチ用フリップフロップ557Aおよび乱数ラッチセレクタ558Aでは、始動入賞口14における遊技球の始動入賞が検出されたことにもとづき、ラッチ用クロックRC1を用いて、乱数値となる数値データを取得するための乱数ラッチ信号LL1が生成される。
ラッチ用フリップフロップ557Bは、ラッチ用クロックRC2の立ち下がりエッジに応答して、始動口スイッチ14aから伝送されて入力ポートP1に供給された始動入賞信号SSを取り込み(ラッチして)、始動入賞時ラッチ信号SL2として出力端子Qから出力する。そして、乱数ラッチセレクタ558Bにおける取込方法が入力ポートP1への信号入力に指定されていれば、始動入賞時ラッチ信号SL2が乱数ラッチ信号LL2として出力される。これにより、例えば図104(F)に示すようなタイミングでオフ状態(ハイレベル)とオン状態(ローレベル)とで信号状態が変化する始動入賞信号SSは、ラッチ用クロックRC2が立ち下がるタイミングT11、T13、…にてラッチ用フリップフロップ557Bに取り込まれた後、図104(I)に示すようなタイミングT11、T13で信号状態がオフ状態とオン状態とで変化する乱数ラッチ信号LL2となって、乱数ラッチセレクタ558Bから出力される。ここで、始動口スイッチ14aから伝送される始動入賞信号SSは、始動入賞口14における遊技球の始動入賞が検出されたときに、オフ状態からオン状態へと変化する。ラッチ用フリップフロップ557Bから乱数ラッチセレクタ558Bを介して出力された乱数ラッチ信号LL2は、乱数値レジスタR2Dとなる乱数値レジスタ559Bに供給されて、乱数列変更回路555から出力された乱数列RSNにおける数値データを取得するために用いられる。こうして、ラッチ用フリップフロップ557Bおよび乱数ラッチセレクタ558Bでは、始動入賞口14における遊技球の始動入賞が検出されたことにもとづき、ラッチ用クロックRC2を用いて、乱数値となる数値データを取得するための乱数ラッチ信号LL2が生成される。
このように、ラッチ用フリップフロップ557Aとラッチ用フリップフロップ557Bはそれぞれ、互いに共通のクロック用フリップフロップ552にて生成されたラッチ用クロックRC0を分岐点BR1で分岐したことにより、互いに共通の周期で信号状態が変化するラッチ用クロックRC1、RC2を用いて、乱数値となる数値データを取得するための始動入賞時ラッチ信号SL1や始動入賞時ラッチ信号SL2を生成する。これにより、乱数回路509における回路構成の簡素化や、パチンコ遊技機1における製造コストの削減を図ることができる。
乱数値レジスタR1Dとなる乱数値レジスタ559Aは、乱数列変更回路555から出力される乱数列RSNにおける数値データを、乱数ラッチセレクタ558Aからクロック端子へと入力される乱数ラッチ信号LL1の立ち下がりエッジに応答して取り込み(ラッチして)、記憶データとなる数値データを更新する。乱数値レジスタR2Dとなる乱数値レジスタ559Bは、乱数列変更回路555から出力される乱数列RSNにおける数値データを、乱数ラッチセレクタ558Bからクロック端子へと入力される乱数ラッチ信号LL2の立ち下がりエッジに応答して取り込み(ラッチして)、記憶データとなる数値データを更新する。
例えば図104(G)に示すように、タイミングT11にて乱数ラッチ信号LL1がオフ状態からオン状態に変化する立ち下がりエッジが生じた場合には、このタイミングT11にて乱数列変更回路555から出力されている乱数列RSNにおける数値データが、図104(H)に示すように、乱数値レジスタR1Dに取り込まれ、乱数値となる数値データとして取得される。これにより、乱数値レジスタR1Dとなる乱数値レジスタ559Aでは、始動入賞口14における遊技球の始動入賞が検出されたことにもとづき、乱数値として用いられる数値データを取得して記憶することができる。
また、例えば図104(I)に示すように、タイミングT11にて乱数ラッチ信号LL2がオフ状態からオン状態に変化する立ち下がりエッジが生じた場合も同様に、このタイミングT11にて乱数列変更回路555から出力されている乱数列RSNにおける数値データが、図104(J)に示すように、乱数値レジスタR2Dに取り込まれ、乱数値となる数値データとして取得される。これにより、乱数値レジスタR2Dとなる乱数値レジスタ559Bは、始動入賞口14における遊技球の始動入賞が検出されたことにもとづき、乱数値として用いられる数値データを取得して記憶することができる。
こうして、乱数値レジスタ559Aは、ラッチ用フリップフロップ557Aがラッチ用クロックRC1を用いて生成した始動入賞時ラッチ信号SL1や乱数ラッチセレクタ558Aから出力された乱数ラッチ信号LL1の立ち下がりエッジに応答して、乱数値RSNにおける数値データを格納する。また、乱数値レジスタ559Bは、ラッチ用フリップフロップ557Bがラッチ用クロックRC2を用いて生成した始動入賞時ラッチ信号SL2や乱数ラッチセレクタ558Bから出力された乱数ラッチ信号LL2の立ち下がりエッジに応答して、乱数列RSNにおける数値データを格納する。
このように、乱数回路509では、クロック用フリップフロップ552や乱数生成回路553、乱数列変更回路555などが、始動入賞口14における遊技球の始動入賞にもとづき乱数値となる数値データを取得するように構成されたラッチ用フリップフロップ557Aや乱数ラッチセレクタ558A、乱数値レジスタ559Aの組合せと、始動入賞口14における遊技球の始動入賞にもとづき乱数値となる数値データを取得するように構成されたラッチ用フリップフロップ557Bや乱数ラッチセレクタ558B、乱数値レジスタ559Bの組合せとに対して、共通化されている。これにより、乱数回路509における回路構成を簡素化することができ、パチンコ遊技機1の製造コストを削減することができる。
図23(A)に示す乱数ラッチフラグレジスタRDFMでは、乱数値レジスタR1Dとなる乱数値レジスタ559Aにおける数値データの取込動作や読出動作、また、乱数値レジスタR2Dとなる乱数値レジスタ559Bにおける数値データの取込動作や読出動作に応答して、対応するビット値が“0”と“1”とに変化する。図105は、乱数ラッチフラグレジスタRDFMのビット番号[0]および[1]に格納される乱数ラッチフラグデータRDFM0および乱数ラッチフラグデータRDFM1の変化を説明するためのタイミングチャートである。
図105(A)に示すように、乱数ラッチ信号LL1や乱数ラッチ信号LL2が立ち下がるタイミングT20にて、図105(B)に示すように乱数値レジスタR1Dや乱数値レジスタR2Dに数値データが取り込まれて格納されたことに対応して、図105(C)に示すように乱数ラッチフラグデータRDFM0や乱数ラッチフラグデータRDFM1のビット値が“0”から“1”へと変化する。例えば、タイミングT20にて乱数ラッチ信号LL1がオン状態(ローレベル)となったことに応答して乱数値レジスタR1Dに数値データが格納されたときには、乱数ラッチフラグデータRDFM0のビット値が“0”から“1”へと変化することにより、乱数値レジスタR1Dに対応する乱数ラッチフラグがオン状態となる。また、タイミングT20にて乱数ラッチ信号LL2がオン状態(ローレベル)となったことに応答して乱数値レジスタR2Dに数値データが格納されたときには、乱数ラッチフラグデータRDFM1のビット値が“0”から“1”へと変化することにより、乱数値レジスタR2Dに対応する乱数ラッチフラグがオン状態となる。
こうして乱数ラッチフラグがオン状態となったときには、対応する乱数値レジスタR1Dや乱数値レジスタR2Dへの新たな数値データの格納が制限される。例えば、乱数ラッチフラグデータRDFM0のビット値が“0”から“1”へと変化したときには、乱数値レジスタR1Dに対応する乱数ラッチフラグがオン状態となり、乱数値レジスタR1Dへの新たな数値データの格納が制限される。また、乱数ラッチフラグデータRDFM1のビット値が“0”から“1”へと変化したときには、乱数値レジスタR2Dに対応する乱数ラッチフラグがオン状態となり、乱数値レジスタR2Dへの新たな数値データの格納が制限される。したがって、対応する乱数ラッチフラグがオン状態である乱数値レジスタR1Dおよび/または乱数値レジスタR2Dには、始動入賞信号SSの入力に対応して数値データを取り込むための乱数ラッチ信号LL1および/または乱数ラッチ信号LL2が入力されたときでも、乱数列RSNに含まれる新たな数値データの格納を行うことができない。
これにより、乱数値レジスタR1Dや乱数値レジスタR2Dに数値データが一旦格納された後、その数値データがCPU56などから読み出されるよりも前に、例えば始動入賞信号SSがノイズ等により誤ってオン状態となったときでも、既に格納されている数値データが更新されてしまい不正確な乱数値の読み出しを防止することができる。また、乱数値取込指定データRDLT0や乱数値取込指定データRDLT1のビット値を外部から意図的に“1”に設定すること、あるいは、始動入賞信号SSを外部から意図的にオン状態とすることなどにより、既に格納されている数値データを改変するといった不正行為を防止することもできる。その一方で、乱数値レジスタR1Dや乱数値レジスタR2Dに一旦格納された数値データが長時間にわたりCPU56などから読み出されなくなると、その後に始動入賞信号SSが正常にオン状態となったときに、始動入賞口14における遊技球の通過(進入)に対応した正確な数値データを乱数値レジスタR1Dや乱数値レジスタR2Dに格納することができなくなる。
そこで、例えば遊技制御用マイクロコンピュータ560のCPU56は、あらかじめ定められた乱数値読出条件が成立したときに、図105(D)に示すような所定の乱数値レジスタ読出処理を実行する。そして、乱数値レジスタR1Dや乱数値レジスタR2Dの読み出しを行って乱数ラッチフラグをオフ状態とすることにより、新たな数値データの格納が許可された状態に設定する。乱数値読出条件としては、CPU56がパチンコ遊技機1における遊技制御の実行を開始すること、および/または、始動入賞口14を遊技球が通過(進入)したときに特図ゲームの保留記憶数が所定の上限値に達していることなどを含むものであればよい。図105に示す動作例では、タイミングT25にて図105(B)に示す乱数値レジスタ読出処理が完了したことに対応して、図105(C)に示すように乱数ラッチフラグデータRDFM0や乱数ラッチフラグデータRDFM1のビット値が“1”から“0”へと更新されて、対応する乱数ラッチフラグがオフ状態に設定される。
一例として、CPU56は、パチンコ遊技機1における電源供給の開始にもとづいて遊技制御用マイクロコンピュータ560のシステムリセットが解除されたときに、所定のセキュリティチェック処理などを実行してから、ROM54からユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を示す制御コードの読み出しなどを行い遊技制御の実行を開始する。このとき、CPU56は、乱数値レジスタ読出処理として図43に示すステップS5006の処理を実行することにより、乱数値レジスタR1Dや乱数値レジスタR2Dに格納された数値データを読み出して、対応する乱数ラッチフラグをオフ状態とする。なお、図43に示すステップS5006の処理において、CPU56は、乱数ラッチフラグデータRDFM1と乱数ラッチフラグデータRDFM0のビット値をチェックした結果などにもとづいて、乱数ラッチフラグがオン状態となっている乱数値レジスタの読み出しのみを行うようにしてもよい。あるいは、乱数ラッチフラグがオン状態であるか否かにかかわらず、乱数値レジスタR1Dと乱数値レジスタR2Dの双方から数値データを読み出すことにより、各乱数ラッチフラグをオフ状態としてもよい。
パチンコ遊技機1の電源投入時などには、例えば図8(B)および(C)に示す電源電圧VSLおよび電源電圧VCCのように、各種の電源電圧が徐々に規定値まで上昇していく。こうした電源電圧の上昇中には、例えば遊技制御用マイクロコンピュータ560の内蔵回路といった、各種回路の一部分が正常に動作する一方で、他の部分は未だ正常には動作できない状態となることがある。一例として、電源電圧が不安定な状態では、始動入賞信号SSが誤ってオン状態となることなどにより、乱数回路509において乱数値レジスタR1Dや乱数値レジスタR2Dに数値データが取り込まれて格納され、対応する乱数ラッチフラグがオン状態になって新たな数値データの格納が制限されてしまう可能性がある。また、CPU56などによる遊技制御の実行が開始された後、図45に示すステップS21のスイッチ処理が実行されるより前に、所定タイミングで乱数ラッチ信号LL1や乱数ラッチ信号LL2を乱数値レジスタR1Dや乱数値レジスタR2Dに入力することで、特図表示結果を「大当り」とする大当り判定用乱数(ランダムR)を示す数値データを取得して大当り遊技状態に制御させる不正行為がなされる可能性がある。このように、乱数ラッチフラグがオン状態になると新たな数値データの格納が制限されるようにした場合には、始動入賞口14を遊技球が通過(進入)する始動入賞の発生後にノイズ等により誤った数値データが乱数値レジスタR1Dや乱数値レジスタR2Dに取り込まれて格納されることを防止できる一方で、始動入賞の発生前に電源電圧の不安定による誤動作や不正行為などにより数値データが乱数値レジスタR1Dや乱数値レジスタR2Dに取り込まれて格納された場合、その後に始動入賞が発生しても、この始動入賞の発生タイミングよりも前に既に格納されている数値データが乱数値として取得されて特図表示結果の決定などに用いられる可能性がある。
そこで、遊技制御用マイクロコンピュータ560におけるシステムリセットが解除されて遊技制御が開始されるときには、乱数ラッチフラグをオフ状態に設定して、新たな数値データの格納が許可された状態とする。これにより、例えばパチンコ遊技機1における電源投入時などの電源電圧が不安定な状態で誤って乱数値レジスタR1Dや乱数値レジスタR2Dに格納された数値データが乱数値として取得されてしまい、遊技制御における各種の決定などに使用されてしまうことを防止できる。また、遊技制御の実行が開始された後、始動口スイッチ14aの状態がチェックされるより前に乱数ラッチ信号を入力して大当り遊技状態に制御させる不正行為を防止することができる。
他の一例として、例えば電源電圧VSLといった、パチンコ遊技機1における所定電源電圧が低下したことにもとづいて、電源基板910に搭載された電源監視回路303からオン状態の電源断信号が出力される。CPU56は、図46のステップS450にてオン状態の電源断信号が出力され(ステップS450のY)、さらに、ステップS453にてバックアップ監視タイマ値がバックアップ判定値に達した後に、ステップS454〜ステップS481の処理を実行して電源電圧の低下によるパチンコ遊技機1の動作不安定あるいは動作停止に備えるとともに、遊技制御用マイクロコンピュータ560が動作停止状態となるまでステップS482の処理を繰り返し実行することにより、電源断信号の入力状態を繰り返し判定する。その後、ステップS482の処理を実行中に電源断信号がオフ状態となり入力されていない旨の判定がなされたときに、CPU56は、ステップS487の処理を実行してから電源断処理を終了するとともに遊技制御用タイマ割込み処理から復帰(リターン)させることにより、ROM54に記憶されているユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を示す制御コードの先頭から、遊技制御の実行を開始させる。ここで、ステップS482の処理により電源断信号がオフ状態となり入力されていない旨の判定がなされた後、電源断処理を終了して制御コードの先頭から遊技制御の実行を開始させるより前に、乱数値レジスタ読出処理としてステップS483〜ステップS486の処理を実行することにより、乱数値レジスタR1Dや乱数値レジスタR2Dに格納された数値データを読み出して、対応する乱数ラッチフラグをオフ状態に設定する。
図106は、遊技制御の実行中に電源電圧VSLが低下した場合の動作例を示すタイミングチャートである。始めに、例えばパチンコ遊技機1への電源供給が開始されたことなどにもとづき、図106(A)に示す電源電圧VSLが所定値VSL1に達するタイミングT31よりも前のタイミングT30にて、図106(B)に示す電源電圧VCCが所定値VCC1に達する。このタイミングT30では、図106(C)に示すリセット信号がオン状態からオフ状態となる。続いて、タイミングT31にて電源電圧VSLが所定値VSL1に達したときに、図106(D)に示す電源断信号がオン状態からオフ状態となる。その後、例えばタイミングT32にて、乱数値レジスタR1Dに乱数値となる数値データが取り込まれて格納されたことに対応して、図106(E)に示す乱数ラッチフラグデータRDFM0のビット値が“0”から“1”へと変化することにより、乱数値レジスタR1Dに対応する乱数ラッチフラグがオン状態になるものとする。
こうしてタイミングT32にて乱数値レジスタR1Dに数値データが格納された後、その数値データがCPU56などにより読み出されるよりも前のタイミングT33にて、図106(A)に示す電源電圧VSLが所定値VSL1より低下したとする。このとき、図106(D)に示す電源断信号がオン状態であると判定されたことなどにもとづいて(図46のステップS450のY)、ステップS482にて電源断信号がオン状態であるか否かが繰り返し判定される。その後、例えばタイミングT34にて、図106(A)に示す電源電圧VSLが所定値VSL1に復帰したときには、図46に示すステップS482にて電源断信号がオフ状態であり入力されていないと判定される(ステップS482のN)。また、図46に示すステップS483にて乱数ラッチフラグデータRDFM0のビット値が“1”であり乱数ラッチフラグがオン状態であると判定されたことにもとづいて、ステップS484の処理が実行される。そして、乱数値レジスタR1Dに格納された数値データが読み出され、乱数ラッチフラグデータRDFM0のビット値が“1”から“0”へと更新されて、乱数値レジスタR1Dに対応する乱数ラッチフラグがオフ状態に設定される。その後、電源断処理が終了するときには、例えば図46に示すステップS487にて設定された電源断復旧時ベクタテーブルでの指定内容などにもとづいて、ROM54に記憶されているユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を示す制御コードの先頭から遊技制御の実行を開始することで、図41に示すようなメイン処理が最初から実行される。
なお、乱数回路509において、始動入賞信号SSの立ち上がりエッジに応答して乱数値レジスタR1Dや乱数値レジスタR2Dに乱数値となる数値データが取り込まれて格納される場合には、例えば図47に示すステップS482の処理を繰り返し実行している期間などに、スイッチ作動用の電源電圧VDDが所定のスイッチ電圧以下に低下した後に正常電圧値に復旧すると、その正常電圧値への復旧中に始動入賞信号SSの立ち上がりエッジが生じて乱数値レジスタR1Dや乱数値レジスタR2Dの全部に数値データが取り込まれて格納され、各乱数ラッチフラグがオン状態になることがある。このような乱数ラッチフラグのオン状態を放置すると、電源電圧の復旧後に始動入賞口14を遊技球が通過(進入)して始動入賞が発生したときには、乱数ラッチフラグがオン状態であることから新たな数値データの格納が制限され、電源電圧の復旧中などに取り込まれた数値データにもとづいて特図表示結果の決定などが行われてしまい、始動入賞の発生タイミングとは全く異なるタイミングで取り込まれた数値データを用いた決定が行われてしまうという問題が生じる。そこで、遊技制御用マイクロコンピュータ560のCPU56は、図43に示すステップS5006や図47に示すステップS484および/またはステップS486にて乱数値レジスタR1Dや乱数値レジスタR2Dの読み出しを行い、対応する乱数ラッチフラグをオフ状態にしてから遊技制御の実行を開始(再開)させることで、上記の問題を解決することができる。
乱数値読出条件の他の一例として、始動入賞口14を遊技球が通過(進入)したときに特図ゲームの保留記憶数が所定の上限値に達している場合がある。ここで、例えば図72に示すステップS311にて始動口スイッチ14aがオン状態であると判定された後、図73に示すステップS321にて保留記憶数が所定の上限値(例えば「4」)以上であると判定された場合には、特図保留メモリにて全てのエントリ(例えば保留番号が「1」〜「4」に対応するエントリ)に保留データが記憶されており特図保留メモリにおける保留データの記憶数が上限記憶数に達しているために、新たな保留データを特図保留メモリに記憶させることができない。こうした場合には、一般に、始動入賞口14を遊技球が通過(進入)したことにもとづく特図ゲームの始動条件を成立させずに無効なものとし、賞球の払出しのみが行われる。
そのため、乱数回路509により生成される乱数値となる数値データを読み出さないようにすることも考えられる。しかしながら、乱数回路509では、保留記憶数にかかわらず、始動入賞信号SSがオン状態となって入力されたことに応答して、乱数値レジスタR1Dや乱数値レジスタR2Dに乱数値となる数値データが取り込まれて格納され、対応する乱数ラッチフラグがオン状態となる。そうすると、次に始動入賞口14を遊技球が通過(進入)したときには、始動入賞信号SSがオン状態となって入力されても、乱数値レジスタR1Dや乱数値レジスタR2Dにおける新たな数値データの格納が制限されるために、始動入賞の発生に対応した正確な乱数値を取得することができなくなる。
これに対して、遊技制御用マイクロコンピュータ560のCPU56は、図73に示すステップS321にて保留記憶数が所定の上限値以上であると判定したときに(ステップS321のY)、ステップS326の処理を実行して、乱数値レジスタR1Dや乱数値レジスタR2Dに格納された数値データを読み出すことで、対応する乱数ラッチフラグをオフ状態としてから、始動口スイッチ通過処理を終了する。
主基板31では、電源基板910からの初期電力供給時(バックアップ電源のない電源投入時)や、システムリセットの発生後における再起動時などに、CPU56がROM54などに記憶されているセキュリティチェックプログラム54Aを読み出して実行することにより、遊技制御用マイクロコンピュータ560がセキュリティモードとなる。このときには、セキュリティチェックプログラム54Aに対応した処理として、例えば図40に示すようなセキュリティチェック処理が実行される。ここで、遊技制御用マイクロコンピュータ560がセキュリティモードとなるセキュリティ時間は、ROM54のプログラム管理エリアに記憶されているセキュリティ時間設定KSESのビット番号[2−0]やビット番号[4−3]にあらかじめ格納されたビット値に応じて、一定の固定時間とは異なる時間成分を含むことができる。
例えば、セキュリティ時間設定KSESのビット番号[2−0]におけるビット値が“000”以外の値であれば(図40に示すステップS1002のN)、図14(D)に示すような設定内容に対応して、固定時間に加えてあらかじめ選択可能な複数の延長時間のいずれかを、セキュリティ時間に含まれる時間成分として設定することができる(ステップS1004)。また、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値が“00”以外の値であれば(ステップS1006のN)、図14(C)に示すようなショートモードまたはロングモードに対応して、システムリセットや電源投入にもとづき初期設定処理が実行されるごとに所定の時間範囲で変化する可変設定時間を、セキュリティ時間に含まれる時間成分として設定することができる(ステップS1008)。
こうして設定されたセキュリティ時間が経過するまでは(ステップS1014のN)、ROM54に記憶されているユーザプログラムによるメイン処理の実行が開始されない。そして、乱数回路509による乱数値となる数値データの生成動作も、遊技制御用マイクロコンピュータ560がセキュリティモード中である期間では、開始されないようにすればよい。これにより、パチンコ遊技機1の電源投入やシステムリセット等による動作開始タイミングから、乱数回路509の動作開始タイミングや更新される数値データなどを特定することが困難になり、遊技制御処理プログラムの解析結果にもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続して所定タイミングで不正信号を入力することで、不正に大当り遊技状態を発生させるなどの行為を、確実に防止することができる。
一例として、パチンコ遊技機1の機種毎に、セキュリティ時間設定KSESのビット番号[2−0]におけるビット値を異なる値に設定する。この場合には、図40に示すステップS1004にて設定される延長時間を、パチンコ遊技機1の機種毎に異ならせることができ、パチンコ遊技機1の動作開始タイミングから乱数回路509の動作開始タイミングを特定することが困難になる。また、セキュリティ時間設定KSESのビット番号[4−3]におけるビット値を“01”または“10”に設定することにより、ステップS1008にて設定される可変設定時間を、システムリセット毎に異ならせる。これにより、パチンコ遊技機1の動作開始タイミングから乱数回路509の動作開始タイミングを特定することは著しく困難になる。
図40に示すステップS1014にてセキュリティ時間が経過したと判定されたときには(ステップS1014のY)、CPU56がROM54に記憶されているユーザプログラムを読み出して、図41に示すようなメイン処理が実行される。そして、例えばステップS14aにおける設定処理などには、図43に示すような乱数回路設定処理が含まれている。ここで、図13(B)に示すような第2乱数初期設定KRS2のビット番号[0]におけるビット値を“1”とすれば、図43に示すステップS5005の処理などにより、乱数回路509にて生成される乱数値となる数値データのスタート値を、システムリセット毎に変更することができる。これにより、たとえ乱数回路509の動作開始タイミングを特定することができたとしても、乱数回路509が備える乱数値レジスタ559Aや乱数値レジスタ559Bから読み出される数値データを特定することは困難になり、遊技制御処理プログラムの解析結果にもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続して所定タイミングで不正信号を入力することで、不正に大当り遊技状態を発生させるなどの行為を、確実に防止することができる。
乱数回路509などには、CPU56の動作とは別個に初期値決定用データとなるカウント値を更新するフリーランカウンタ554Aが設けられている。そして、第2乱数初期設定KRS2のビット番号[0]におけるビット値が“1”である場合には、乱数回路509のスタート値初期設定回路554による設定などにもとづき、初期設定時にフリーランカウンタ554Aのカウント値をそのまま用いること、あるいは、そのカウント値を所定の演算関数(例えばハッシュ関数)に代入して得られた値を用いることなどにより、スタート値がランダムに決定される。これにより、CPU56の動作態様から乱数回路509においてスタート値となる数値データを特定することは困難になり、遊技制御処理プログラムの解析結果にもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続して所定タイミングで不正信号を入力することで、不正に大当り遊技状態を発生させるなどの行為を、確実に防止することができる。
以上に説明したように、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、電力供給が開始されたときに、クリアスイッチ921から操作信号が入力されているか否かを判定し、操作信号が入力されていると判定されたときに、機構板が開放状態であるか否かを判定する。そして、遊技制御用マイクロコンピュータ560は、クリアスイッチ921からの操作信号を入力しているとともに開放状態であると判定したことにもとづいて、RAM55の記憶内容を初期化する初期化処理を実行する。一方、遊技制御用マイクロコンピュータ560は、クリアスイッチ921からの操作信号を入力していても開放状態でないと判定したことにもとづいて、初期化処理の実行を制限する。そのため、不正に初期化処理が実行されることを防止することによって、不正行為を防止することができる。
また、この実施の形態によれば、クリアスイッチ921からの操作信号の入力を検出したものの機構板が開放状態でないと判定されたことにもとづいて、所定の報知処理(例えば、演出表示装置9の表示画面に初期化不正報知情報を重畳表示)を実行する。そのため、不正行為が行われている可能性があることを報知することができ、不正行為防止のための対策を強化することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、遊クリアスイッチ921からの操作信号を入力していても開放状態でないと判定したことにもとづいて、ループ処理に移行し、遊技制御処理の実行を不能動化する。そのため、不正行為が行われている可能性があることを検出すれば、遊技の継続を不能にすることができ、不正行為防止のための対策を強化することができる。
また、この実施の形態によれば、払出制御用マイクロコンピュータ370は、所定のエラー状態(例えば、払出スイッチ異常検知エラー2や、払出ケースエラー、主制御通信エラー)に設定されているときに、エラー解除スイッチ375から操作信号が入力されているか否かを判定し、操作信号が入力されていると判定したときに、機構板が開放状態であるか否かを判定する。そして、払出制御用マイクロコンピュータ370は、エラー解除スイッチ375からの操作信号を入力しているとともに開放状態であると判定したことにもとづいて、所定のエラー状態を解除する。一方、払出制御用マイクロコンピュータ370は、エラー解除スイッチ375からの操作信号を入力していても開放状態でないと判定したことにもとづいて、所定のエラー状態の解除を制限する。そのため、所定のエラー状態の解除に関しても、不正行為が行われている可能性を検出することができ、不正行為防止のための対策を強化することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、シリアル通信で制御コマンドを送受信する。また、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370との通信接続状態を確認するための接続確認コマンドを、所定期間(本例では1秒)が経過する毎に払出制御用マイクロコンピュータ370に送信する。また、払出制御用マイクロコンピュータ370は、接続確認コマンドを受信したことにもとづいて接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する。この場合、払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560が制御状態(本例では、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラー)を認識可能な態様で接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する。そのような構成により、シリアル通信方式を用いることにより、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との配線の取り回しの容易化を図ることができる。また、払出制御用マイクロコンピュータ370が接続確認コマンドの受信にもとづいて定期的に出力する接続OKコマンドに制御状態を乗せることにより、制御状態信号(制御状態が付加された応答信号)を送信することができる。そのため、制御状態信号の出力タイミングを考慮することなく制御状態信号の取りこぼし等の発生を防止することができ、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の通信を確実に行うことができる。なお、この実施の形態では、接続確認コマンドを送信する周期(間隔)を1秒としていたが、0.5秒等としてもよい。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、払出制御の実行を終了したときに、賞球プロセスタイマに所定期間(本例では1秒)を再設定して賞球プロセスタイマによる計測制御を開始する(ステップS52505参照)。そして、遊技制御用マイクロコンピュータ560は、賞球個数が記憶されていなければ(具体的には、ステップS52301で賞球コマンド出力カウンタの中にカウント値が1以上のものがなければ)、再設定した賞球プロセスタイマがタイムアウトしたことにもとづいて、新たな接続確認コマンドを払出制御用マイクロコンピュータ370に送信する。そのため、払出制御の実行の終了後に新たな接続確認コマンドを送信するまでの間にインターバル期間を設けることができ、払出制御の実行の終了時における処理が集中して新たな接続確認コマンドの取りこぼし等が発生することを防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、接続確認コマンドの送信タイミングにかかわらず、入賞を検出したことにもとづいて、賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。また、払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信したことにもとづいて賞球個数受付コマンドを送信するとともに、払出制御の実行の実行中に賞球準備中コマンドを、所定の払出中信号出力期間(本例では1秒)毎に遊技制御用マイクロコンピュータ560に送信する。この場合、払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560が制御状態(本例では、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラー)を認識可能な態様で賞球準備中コマンドを遊技制御用マイクロコンピュータ560に送信する。また、遊技制御用マイクロコンピュータ560は、賞球個数受付コマンドを受信したことにもとづいて、接続確認コマンドの送信を停止する。そのため、払出制御の実行中は無駄に接続確認コマンドの送信制御を行わないようにすることによって、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。また、払出制御の実行中であっても、賞球準備中コマンドに制御状態を乗せることにより制御状態信号を出力することができるため、遊技制御用マイクロコンピュータ560側で制御状態を認識することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、賞球終了コマンドを受信した後、賞球個数が記憶されていれば(具体的には、ステップS52301で賞球コマンド出力カウンタの中にカウント値が1以上のものがあれば)、接続確認コマンドの送信にかかわらず、直ちに新たな賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。そのため、払出制御の実行処理の迅速化を図ることができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ60は、受信した接続OKコマンドで示される制御状態にもとづいて、所定のエラー(本例では、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラー)が発生しているか否かを判定する。そして、遊技制御用マイクロコンピュータ60は、所定のエラーが発生していないと判定したことを条件として、賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。そのため、エラー状態となっていて正常に払出制御を行えない場合に賞球個数コマンドを送信してしまう不都合を防止することができる。特に、この実施の形態では、払出制御用マイクロコンピュータ370が備えるRAMはバックアップ電源によりバックアップされていないので、払出制御に異常が生じているときに賞球個数コマンドを送信してしまうと、電源リセットなどにより賞球個数の記憶が消滅し、遊技者に大きな不利益を与えてしまう可能性がある。そこで、この実施の形態では、払出制御に異常が生じている場合には、バックアップ電源でバックアップされている遊技制御用マイクロコンピュータ560側で賞球個数の記憶を保持したまま賞球個数コマンドの送信を保留するように制御することによって、そのような不利益が生じることを防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、接続確認コマンドを送信した後、接続OKコマンドを受信できなかった場合には、接続確認コマンドを送信する時間間隔を長くし、特定期間(本例では10秒)が経過する毎に接続確認コマンドを送信する制御に切り替える。そのため、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の通信状態が不安定な状態では、接続確認コマンドを送信するまでのインターバル期間を長くすることによって、接続確認コマンドの送信処理を無駄に実行する頻度を低減し、無駄な処理負担を軽減することができる。
また、この実施の形態によれば、払出制御用マイクロコンピュータ370は、所定のエラー(本例では、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラー)が発生したときに、遊技制御用マイクロコンピュータ560が所定のエラーを認識可能な情報を、接続OKコマンドの特定ビットを異ならせることにより設定し、当該設定がなされた接続OKコマンドを遊技制御用マイクロコンピュータ560に送信する。また、遊技制御用マイクロコンピュータ560は、受信した接続OKコマンドに設定された所定のエラーを認識可能な情報をそのまま設定した枠状態表示コマンドを演出制御用マイクロコンピュータ100に送信する。そして、演出制御用マイクロコンピュータ100は、枠状態表示コマンドを受信したことにもとづいて、演出装置(本例では、演出表示装置9)を制御して所定のエラーが発生したことを報知する制御を行う。そのため、演出装置を用いて所定のエラーが発生したことを報知することができるとともに、遊技制御用マイクロコンピュータ560の処理負担を軽減することができる。
また、この実施の形態によれば、払出制御用マイクロコンピュータ370は、賞球や貸し球の払い出すべき数の未払出の遊技球を超えた払出過多数と払い出すべき数の未払出の遊技球に満たなかった払出不足数とを払出個数異常カウンタを用いて累積的にカウントする。そして、払出個数異常カウンタの値が所定の払出個数異常エラー判定値(本例では2000)以上となると、払出制御の実行を停止させて払出停止状態に制御する。そのため、各々の払出制御について判断するのではなく、累積的にカウントアップされた払出個数異常カウンタの値にもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技球を払い出させる行為をより的確に防止することを可能とすることができる。
また、この実施の形態によれば、払出制御用マイクロコンピュータ370は、所定基準数(本例では2)以上の払出不足数が発生したときに払出個数異常カウンタの値をカウントアップする。そのため、必要以上に払出制御の実行を停止させてしまう不都合を防止することができる。すなわち、遊技機の稼働状態ではごく少数(本例では1個)の払出不足数が生じることが少なからずあるのであるから、所定基準数(本例では2)以上の払出不足数が発生したことを条件としてカウントアップを行うことによって、必要以上に払出制御の実行を停止させてしまうことを防止している。
また、この実施の形態によれば、払出制御用マイクロコンピュータ370は、払出不足数が発生したときに球払出装置97を駆動制御して遊技球を1つだけ払い出させる再払出制御を実行する。そして、再払出制御を実行しても遊技球の払い出しを検出しなかった場合には払出個数異常カウンタの値をカウントアップする。そのため、払出不足数が少ない場合でも適切に払出個数異常カウンタのカウント値に反映させて払出制御の実行の停止を行うことができ、不正に遊技球を払い出させる行為を防止する不正対策をより強化することができる。
また、この実施の形態によれば、払出個数異常エラーが検出されて払出停止状態に制御されたときに、遊技機の電源リセットが行われたことを条件として払出停止状態を解除する。そのため、払出停止状態を解除するためには遊技店員が異常状態を確認した上で解除操作を行わなければならないので、不正に払出停止状態を解除されて異常な状態のまま遊技を継続されてしまうことを防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560が備えるRAM55は、遊技機への電力供給が停止してもバックアップ電源により記憶内容を所定期間保持可能である。また、遊技制御用マイクロコンピュータ560は、払出停止状態に制御されているときには、入賞が生じても賞球個数コマンドの送信を禁止する。そのため、不正行為によらない遊技機側に起因する異常により払出停止状態となったにもかかわらずRAM55記憶された賞球個数(具体的には、賞球コマンド出力カウンタの値)がクリアされてしまう事態を防止することができ、遊技者に対して不利益が生じることを防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、賞球個数コマンドを送信するタイミングで賞球個数カウンタに賞球個数を加算し、賞球情報を受信したことにもとづいて賞球個数カウンタの値を10減算する。そして、賞球個数カウンタの値が所定の賞球不足判定値(本例では501)以上となったことにもとづいて賞球不足エラーと判定し、賞球個数カウンタの値が所定の賞球過剰判定値(本例では0)未満となったことにもとづいて賞球過剰エラーと判定する。そのため、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との双方で異常状態を検出することができる。従って、不正に遊技球を払い出させる行為を防止する不正対策をより強固なものとすることができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370との通信の接続状態を示す接続信号を出力ポート57を介して払出制御用マイクロコンピュータ370に送信するように構成されているので、払出制御用マイクロコンピュータ370側でどのタイミングにおいても通信の接続状態を確認することができるため、通信の接続状態が異常状態であるときに賞球の払い出しが行われることを確実に防止することができる。
なお、上記の実施の形態では、遊技制御用マイクロコンピュータ560が、通常時は接続OKコマンドの受信後1秒経過後に接続確認コマンドを送信し、通信エラーが発生しているときは(例えば、接続OKコマンドを受信できないときには)、接続確認コマンドの送信後10秒経過後に接続確認コマンドを送信するように構成し、1秒や10秒の期間をタイマ(ソフトウェアで構成されたカウンタ)で計測するように構成していたが、内部クロックによってハードウェアとして更新されるカウンタが所定値になったとき(1秒や10秒)発生する内部割込で接続確認コマンドを送信するようにしてもよい。その場合、接続OKコマンドの受信によってカウンタをクリアするようにするか、所定値となって内部割込を発生させたらカウンタがクリアされるものであればよい。
また、この実施の形態によれば、乱数回路590は、数値データをあらかじめ定められた手順により更新して出力する乱数生成回路553や乱数列変更回路555と、出力された数値データを乱数値として取り込んで格納する乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)と、始動入賞信号SSにもとづく乱数ラッチ信号LL1,LL2の入力にもとづいて乱数生成回路553や乱数列変更回路555から出力された数値データが乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納されたときにオン状態にされて新たな数値データの格納を制限する一方、乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データが乱数値の読出タイミングにてCPU56により読み出されたときにオフ状態にされて新たな数値データの格納を許可する乱数ラッチフラグRDFM0,RDFM1とを含む。また、遊技制御用マイクロコンピュータ560は、CPU56による遊技制御が開始されるときに、乱数ラッチフラグRDFM0,RDFM1をオフ状態にする。そのため、そのような構成によれば、乱数ラッチ信号LL1,LL2の入力にもとづいて乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データを、正確な乱数値として取得することができる。また、遊技機に供給される電源が不安定な状態で誤って乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データを取得してしまう事態も防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560のシステムリセットが解除されてCPU56による遊技制御の実行が開始されるときに、乱数ラッチフラグRDFM0,RDFM1をオフ状態にする。そのため、例えば、電源投入時などの電源電圧が不安定な状態で誤って乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データを乱数値として取得してしまうことを防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、電源監視回路920から検出信号が出力された後、動作停止状態となるまで、検出信号の入力状態を繰り返し判定し、検出信号が入力されていない旨の判定がなされたときに、遊技制御処理プログラムの先頭から遊技制御の実行を開始する。また、遊技制御用マイクロコンピュータ560は、検出信号が入力されていない旨の判定がなされた後、遊技制御処理プログラムの先頭から遊技制御の実行を開始するより前に、乱数ラッチフラグRDFM0,RDFM1をオフ状態にする。そのため、例えば、所定電源電圧の低下時などの電源電圧が不安定な状態で誤って乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データを乱数値として取得してしまうことを防止することができる。
また、この実施の形態によれば、乱数生成回路553や乱数列変更回路555は、数値データを更新可能な所定の範囲において、所定の更新初期値から所定の更新最終値まで循環的に数値データを更新する。また、遊技制御用マイクロコンピュータ560は、当該遊技制御用マイクロコンピュータがシステムリセットされるごとに、所定の更新初期値を可変設定可能である。そのため、システムリセットの発生後に乱数値となる数値データを特定することが困難になり、狙い撃ちなどによる不正行為を、確実に防止することができる。
また、この実施の形態によれば、遊技機への電力供給が開始された後、CPU56の動作とは別個に数値をカウントするフリーランカウンタ554Aを備える。また、遊技制御用マイクロコンピュータ560は、フリーランカウンタ554Aによってカウントされた数値を用いて、所定の更新初期値を決定する。そのため、CPU56の動作態様から乱数値となる数値データを特定することが困難になり、狙い撃ちなどによる不正行為を、確実に防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、CPU56以外による不揮発性メモリ(ROM54)の外部読出を制限する内部リソースアクセス制御回路501Aを含む。そのため、不揮発性メモリ(ROM54)に記憶されている制御プログラムなどを遊技制御用マイクロコンピュータ560の外部から読み出して解析などをすることが困難になり、制御プログラムの解析結果などにもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続することによる不正行為を、確実に防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560の外部にて乱数用クロック信号を生成して、乱数回路に供給する乱数用クロック生成回路112と、CPU56に供給される制御用クロック信号を生成する制御用クロック生成回路111やクロック回路502とを備える。また、遊技制御用マイクロコンピュータ560は、乱数用クロック生成回路112から供給される乱数用クロック信号の入力状態を制御用クロック生成回路111やクロック回路502にて生成された制御用クロック信号と比較することにより、乱数用クロック信号の入力状態に異常が発生したか否かを判定する。そのため、乱数値となる数値データの更新動作に異常が発生している状態で遊技制御が実行されてしまうことを防止できる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、所定の初期設定において不揮発性メモリ(ROM54)の記憶内容が変更されたか否かを検査するセキュリティチェックを実行する。また、遊技制御用マイクロコンピュータ560は、セキュリティチェックの実行時間を可変設定可能に構成されている。そのため、遊技制御の実行開始タイミングを特定することが困難になり、初期設定動作などの解析結果にもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続することによる不正行為を、確実に防止することができる。
また、この実施の形態によれば、遊技制御用マイクロコンピュータ560は、乱数値の読出タイミングにて特図保留メモリにおける保留記憶数が所定の上限数(例えば、4)に達しているときに、乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D)に格納された数値データを読み出すことにより乱数ラッチフラグRDFM0,RDFM1をオフ状態にする。そのため、保留記憶数が所定の上限数に達した後、上限数未満となってから乱数値の読出タイミングとなったときに、始動入賞信号SSにもとづく乱数ラッチ信号LL1,LL2の入力にもとづく正確な乱数値を取得することができる。
なお、上記の実施の形態において本発明による遊技機としてパチンコ機を適用した場合について説明したが、本発明による遊技機としてパロット機を適用することも可能である。この場合、上記の実施の形態で示した構成を適用して、電力供給が開始されたときに、クリアスイッチから操作信号が入力されているか否かを判定し、操作信号が入力されていると判定されたときに、遊技機内部に外部から接触可能な開放状態であるか否かを判定するようにすればよい。そして、クリアスイッチからの操作信号を入力しているとともに開放状態であると判定したことにもとづいて初期化処理を実行する一方、クリアスイッチからの操作信号を入力していても開放状態でなければ初期化処理の実行を制限するようにすればよい。
以下、スロットマシンの実施例について図面(図107および図108)を用いて説明する。本実施例(変形例)のスロットマシン601は、図107に示すように、前面が開口する筐体(図示略)と、この筺体の側端に回動自在に枢支された前面扉と、から構成されている。
本実施例のスロットマシン601の筐体内部には、外周に複数種の図柄が配列されたリール602L、602C、602R(以下、左リール、中リール、右リールともいう)が水平方向に並設されており、図107に示すように、これらリール602L、602C、602Rに配列された図柄のうち連続する3つの図柄が前面扉に設けられた透視窓603から見えるように配置されている。
リール602L、602C、602Rの外周部には、例えば、「赤7(図中白抜き7)」、「BAR」、「リプレイ」、「スイカ」、「チェリー」、「ベル」といった互いに識別可能な複数種類の図柄が所定の順序で、それぞれ21個ずつ描かれている。リール602L、602C、602Rの外周部に描かれた図柄は、透視窓603において各々上中下三段に表示される。
各リール602L、602C、602Rは、各々対応して設けられリールモータ632L、632C、632R(図108参照)によって回転させることで、各リール602L、602C、602Rの図柄が透視窓603に連続的に変化しつつ表示されるとともに、各リール602L、602C、602Rの回転を停止させることで、透視窓603に3つの連続する図柄が表示結果として導出表示されるようになっている。
また、前面扉には、メダルを投入可能なメダル投入部604、メダルが払い出されるメダル払出口609、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いてメダル1枚分の賭数を設定する際に操作される1枚BETスイッチ605、クレジットを用いて、その範囲内において遊技状態に応じて定められた規定数の賭数(本実施例では通常遊技状態においては「3」、レギュラーボーナスにおいては「1」)を設定する際に操作されるMAXBETスイッチ606、クレジットとして記憶されているメダル及び賭数の設定に用いたメダルを精算する(クレジット及び賭数の設定に用いた分のメダルを返却させる)際に操作される精算スイッチ610、ゲームを開始する際に操作されるスタートスイッチ607、リール602L、602C、602Rの回転を各々停止する際に操作されるストップスイッチ608L、608C、608Rが設けられている。
また、前面扉には、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器611、後述するビッグボーナス中のメダルの獲得枚数やエラー発生時にその内容を示すエラーコード等が表示される遊技補助表示器612、入賞の発生により払い出されたメダル枚数が表示されるペイアウト表示器613が設けられている。
また、前面扉には、賭数が1設定されている旨を点灯により報知する1BETLED614、賭数が2設定されている旨を点灯により報知する2BETLED615、賭数が3設定されている旨を点灯により報知する3BETLED616、メダルの投入が可能な状態を点灯により報知する投入要求LED617、スタートスイッチ607の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効LED618、ウェイト(前回のゲーム開始から一定期間経過していないためにリールの回転開始を待機している状態)中である旨を点灯により報知するウェイト中LED619、後述するリプレイゲーム中である旨を点灯により報知するリプレイ中LED620が設けられている。
また、MAXBETスイッチ606の内部には、1枚BETスイッチ605及びMAXBETスイッチ606の操作による賭数の設定操作が有効である旨を点灯により報知するBETスイッチ有効LED621(図108参照)が設けられており、ストップスイッチ608L、608C、608Rの内部には、該当するストップスイッチ608L、608C、608Rによるリールの停止操作が有効である旨を点灯により報知する左、中、右停止有効LED622L、622C、622R(図108参照)がそれぞれ設けられている。
前面扉の内側上方中央位置には、遊技に関連する演出画像等を表示可能な液晶表示器651が設けられており、その前方に配置された液晶表示窓670を通して表示画面に表示される表示画像を視認できるようになっている。また、該液晶表示器651の左右側には、遊技に関連する演出を行う2つの可動役物675L,675Rがそれぞれ配設されており、左右の可動役物675L,675Rの前方に配置されるように前面扉に設けられた透明パネルからなる演出用透視窓671L,671Rから内部の可動役物675L,675Rを透視できるようになっている。
また、左右の可動役物675L,675Rと演出用透視窓671L,671Rとの間には、左右の可動役物675L,675Rを演出用透視窓671L,671Rから透視不可能に隠蔽する隠蔽状態と、左右の可動役物675L,675Rを演出用透視窓671L,671Rから透視可能とする非隠蔽状態と、に変更可能な2つのシャッタ装置(図示せず)を構成する無端状のシャッタシートが配設されている。
また、前面扉の内側には、所定のキー操作によりRAM異常エラーを除くエラー状態及び打止状態を解除するためのリセット操作を検出するリセットスイッチ623、設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器624、メダル投入部604から投入されたメダルの流路を、筐体内部に設けられたホッパータンク(図示略)側またはメダル払出口609側のいずれか一方に選択的に切り替えるための流路切替ソレノイド630、メダル投入部604から投入され、ホッパータンク側に流下したメダルを検出する投入メダルセンサ631が設けられている。
筐体内部には、前述したリール602L、602C、602R、リールモータ632L、632C、632R、各リール602L、602C、602Rのリール基準位置をそれぞれ検出可能なリールセンサ633からなるリールユニット(図示略)、メダル投入部604から投入されたメダルを貯留するホッパータンク(図示略)、ホッパータンクに貯留されたメダルをメダル払出口609より払い出すためのホッパーモータ634、ホッパーモータ634の駆動により払い出されたメダルを検出する払出センサ635、電源ボックス(図示略)が設けられている。
電源ボックスの前面には、ビッグボーナス終了時に打止状態(リセット操作がなされるまでゲームの進行が規制される状態)に制御する打止機能の有効/無効を選択するための打止スイッチ636、ビッグボーナス終了時に自動精算処理(クレジットとして記憶されているメダルを遊技者の操作によらず精算(返却)する処理)に制御する自動精算機能の有効/無効を選択するための自動精算スイッチ629、起動時に設定変更モードに切り替えるための設定キースイッチ637、通常時においてはRAM異常エラーを除くエラー状態や打止状態を解除するためのリセットスイッチとして機能し、設定変更モードにおいては内部抽選の当選確率(出玉率)の設定値を変更するための設定スイッチとして機能するリセット/設定スイッチ638、電源をON/OFFする際に操作される電源スイッチ639が設けられている。
本実施例のスロットマシン601においてゲームを行う場合には、まず、メダルをメダル投入部604から投入するか、あるいはクレジットを使用して賭数を設定する。クレジットを使用するには1枚BETスイッチ605、またはMAXBETスイッチ606を操作すれば良い。遊技状態に応じて定められた規定数の賭数が設定されると、入賞ラインL1〜L5(図107参照)が有効となり、スタートスイッチ607の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。尚、本実施例では、規定数の賭数として通常遊技状態においては3枚が定められており、レギュラーボーナス中においては、1枚が定められている。尚、遊技状態に対応する規定数を超えてメダルが投入された場合には、その分はクレジットに加算される。
ゲームが開始可能な状態でスタートスイッチ(レバーともいう)607を操作すると、各リール602L、602C、602Rが回転し、各リール602L、602C、602Rの図柄が連続的に変動する。この状態でいずれかのストップスイッチ608L、608C、608Rを操作すると、対応するリール602L、602C、602Rの回転が停止し、透視窓603に表示結果が導出表示される。
そして全てのリール602L、602C、602Rが停止されることで1ゲームが終了し、有効化されたいずれかの入賞ラインL1〜L5上に予め定められた図柄の組み合わせ(以下、役とも呼ぶ)が各リール602L、602C、602Rの表示結果として停止した場合には入賞が発生し、その入賞に応じて定められた枚数のメダルが遊技者に対して付与され、クレジットに加算される。また、クレジットが上限数(本実施例では50)に達した場合には、メダルが直接メダル払出口609(図107参照)から払い出されるようになっている。尚、有効化された複数の入賞ライン上にメダルの払出を伴う図柄の組み合わせが揃った場合には、有効化された入賞ラインに揃った図柄の組み合わせそれぞれに対して定められた払出枚数を合計し、合計した枚数のメダルが遊技者に対して付与されることとなる。ただし、1ゲームで付与されるメダルの払出枚数には、上限(本実施例では、15枚)が定められており、合計した払出枚数が上限を超える場合には、上限枚数のメダルが付与されることとなる。また、有効化されたいずれかの入賞ラインL1〜L5上に、遊技状態の移行を伴う図柄の組み合わせが各リール602L、602C、602Rの表示結果として停止した場合には図柄の組み合わせに応じた遊技状態に移行するようになっている。
図108は、スロットマシン601の構成を示すブロック図である。スロットマシン601には、図108に示すように、遊技制御基板640(図4の遊技制御基板(主基板)31に相当)、演出制御基板690(図4の演出制御基板80に相当)、電源基板600が設けられており、遊技制御基板640によって遊技状態が制御され、演出制御基板690によって遊技状態に応じた演出が制御され、電源基板600によってスロットマシン601を構成する電気部品の駆動電源が生成され、各部に供給される。
遊技制御基板640には、前述した1枚BETスイッチ605、MAXBETスイッチ606、スタートスイッチ607、ストップスイッチ608L、608C、608R、精算スイッチ610、リセットスイッチ623、投入メダルセンサ631、リールセンサ633が接続されているとともに、電源基板600を介して前述した払出センサ635、打止スイッチ636、自動精算スイッチ629、設定キースイッチ637、リセット/設定スイッチ638が接続されており、これら接続されたスイッチ類の検出信号が入力されるようになっている。
また、遊技制御基板640には、前述したクレジット表示器611、遊技補助表示器612、ペイアウト表示器613、1〜3BETLED614〜616、投入要求LED617、スタート有効LED618、ウェイト中LED619、リプレイ中LED620、BETスイッチ有効LED621、左、中、右停止有効LED622L、622C、622R、設定値表示器624、流路切替ソレノイド630、リールモータ632L、632C、632Rが接続されているとともに、電源基板600を介して前述したホッパーモータ634が接続されており、これら電気部品は、遊技制御基板640に搭載された後述のメイン制御部641(図4の遊技制御用マイクロコンピュータ560に相当)の制御に基づいて駆動されるようになっている。
遊技制御基板640には、CPU641a、ROM641b、RAM641c、I/Oポート641dを備えたマイクロコンピュータからなり、遊技の制御を行うメイン制御部641、所定範囲(本実施例では0〜16383)の乱数を発生させる乱数発生回路642、乱数発生回路から乱数を取得するサンプリング回路643、遊技制御基板640に直接または電源基板600を介して接続されたセンサやスイッチ等のスイッチ類から入力された検出信号を検出するスイッチ検出回路644、リールモータ632L、632C、632Rの駆動制御を行うモータ駆動回路645、流路切替ソレノイド630の駆動制御を行うソレノイド駆動回路646、遊技制御基板640に接続された各種表示器やLEDの駆動制御を行うLED駆動回路647、スロットマシン601に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をメイン制御部641に対して出力する電断検出回路648、電源投入時またはCPU641aからの初期化命令が入力されないときにCPU641aにリセット信号を与えるリセット回路649、その他各種デバイス、回路が搭載されている。
CPU641aは、I/Oポート641dを介して演出制御基板690に、各種のコマンドを送信する。遊技制御基板640から演出制御基板690へ送信されるコマンドは一方向のみで送られ、演出制御基板690から遊技制御基板640へ向けてコマンドが送られることはない。遊技制御基板640から演出制御基板690へ送信されるコマンドの伝送ラインは、ストローブ(INT)信号ライン、データ伝送ライン、グラウンドラインから構成されているとともに、演出中継基板680を介して接続されており、遊技制御基板640と演出制御基板690とが直接接続されない構成とされている。
演出制御基板690には、スロットマシン601の前面扉に配置された液晶表示器651(図107参照)、演出効果LED652、スピーカ653、654、リールLED655及びシャッタモータ810、シャッタセンサ811、可動物用LED881、可動物用モータ805、可動物用センサ829等の電気部品が接続されており、これら電気部品は、演出制御基板690に搭載された後述のサブ制御部691による制御に基づいて駆動されるようになっている。
演出制御基板690には、メイン制御部641と同様にCPU691a、ROM691b、RAM691c、I/Oポート691dを備えたマイクロコンピュータにて構成され、演出の制御を行うサブ制御部691、演出制御基板690に接続された液晶表示器651の駆動制御を行う液晶駆動回路692、演出効果LED652、リールLED655、可動物用LED881の駆動制御を行うLED駆動回路693、スピーカ653、654からの音声出力制御を行う音声出力回路694、電源投入時またはCPU691aからの初期化命令が入力されないときにCPU691aにリセット信号を与えるリセット回路695、シャッタセンサ811、可動物用センサ829やスイッチ等のスイッチ類から入力された検出信号を検出するスイッチ検出回路696、シャッタモータ810及び可動物用モータ805の駆動制御を行うモータ駆動回路697やその他の回路等、が搭載されており、CPU691aは、遊技制御基板640から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板690に搭載された制御回路の各部を直接的または間接的に制御する。
次に、メイン制御部641により実行される内部抽選の処理について説明する。スタートスイッチ607がオンしたタイミングで、サンプリング回路643が乱数発生回路642によってカウントされている数値(乱数)を取得(抽出)する。サンプリング回路643は、乱数として取得した数値をメイン制御部641におけるCPU641aに出力する。
メイン制御部641におけるCPU641aは、サンプリング回路643から取得した数値を、ROM641bに格納されている内部抽選用のテーブルにおける役(小役・再遊技役・特別役など)毎に設定された判定値と比較することによって、小役・再遊技役・特別役に当選したか否かを判定する。また、内部抽選用のテーブルとして、設定値・遊技状態(通常遊技状態、レギュラーボーナス)に応じてメダルの払出率が変わるように複数のテーブルが設けられている。例えば、内部抽選用のテーブルには、小役(チェリー、ベル)・再遊技役(リプレイ)・特別役(レギュラーボーナス、ビッグボーナス)・はずれのそれぞれに対して複数の判定値が設定される。また、例えば、リセット/設定スイッチ638によって設定可能な設定値として「1」から「6」が設けられている場合に、設定値の数字が大きいほどメダルの払出率が変わるように判定値が割り振られたテーブルが用いられる。また、遊技状態が通常遊技状態の場合には、小役・再遊技役・特別役のいずれも当選可能となるように各々の役およびはずれに判定値が割り振られたテーブルが用いられ、遊技状態がレギュラーボーナスの場合には、小役のみ当選可能となるように小役およびはずれに判定値が割り振られたテーブル(再遊技役・特別役には判定値が割り振られていないテーブル)が用いられる。なお、上記のテーブルの判定値の設定は一例であって、そのような判定値の設定に限られるわけではない。本実施例では、賭数として、通常遊技状態においては「3」、レギュラーボーナスにおいては「1」しか遊技者は設定することができないこととされているが、通常遊技状態・レギュラーボーナスのいずれの遊技状態においても、賭数として、「1」〜「3」のいずれも遊技者が設定可能とすることも可能であり、この場合、同一の設定値であっても賭数に応じて小役・再遊技役・特別役の当選確率の異なる複数の内部抽選用のテーブルを用意し、賭数に対応したテーブルを用いて内部抽選を行うようにしてもよい。
上述したように、本実施例のスロットマシン601は、設定値に応じてメダルの払出率が変わるものであり、内部抽選の当選確率は、設定値に応じて定まるものとなる。
本実施例のスロットマシン601は、前述のように遊技状態に応じて設定可能な賭数の規定数が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。本実施例では、遊技状態として、レギュラーボーナス、通常遊技状態があり、このうちレギュラーボーナスに対応する賭数の規定数として1が定められており、通常遊技状態に対応する賭数の規定数として3が定められている。このため、遊技状態がレギュラーボーナスにあるときには、賭数として1が設定されるとゲームを開始させることが可能となり、遊技状態が通常遊技状態にあるときには、賭数として3が設定されるとゲームを開始させることが可能となる。尚、本実施例では、遊技状態に応じた規定数の賭数が設定された時点で、全ての入賞ラインL1〜L5が有効化されるようになっており、遊技状態に応じた規定数が1であれば、賭数として1が設定された時点で全ての入賞ラインL1〜L5が有効化され、遊技状態に応じた規定数が3であれば、賭数として3が設定された時点で全ての入賞ラインL1〜L5が有効化されることとなる。
本実施例のスロットマシン601は、全てのリール602L、602C、602Rが停止した際に、有効化された入賞ライン(本実施例の場合、常に全ての入賞ラインが有効化されるため、以下では、有効化された入賞ラインを単に入賞ラインと呼ぶ)上に役と呼ばれる図柄の組み合わせが揃うと入賞となる。入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役と、遊技状態の移行を伴う特別役と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、内部抽選に当選して、当該役の当選フラグがRAM641cに設定されている必要がある。
尚、これら各役の当選フラグのうち、小役及び再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされ、次のゲームでは無効となるが、特別役の当選フラグは、当該フラグにより許容された役の組み合わせが揃うまで有効とされ、許容された役の組み合わせが揃ったゲームにおいて無効となる。すなわち特別役の当選フラグが一度当選すると、たとえ、当該フラグにより許容された役の組み合わせを揃えることができなかった場合にも、その当選フラグは無効とされずに、次のゲームへ持ち越されることとなる。このように、本発明によるスロットマシン601において、入賞用事前決定手段により特定入賞の発生を許容する旨が決定され、特定入賞表示結果が入賞用可変表示部に導出されなかったときに、当該特定入賞の発生を許容する旨の決定を次ゲーム以降に持ち越す持越手段を備えている。そのように構成された場合には、特定入賞表示結果が入賞用可変表示部に導出されなかったときであっても、当該特定入賞の発生を許容する旨の決定を次ゲーム以降に持ち越され、遊技者に損失を与えることを防ぐことができる。
このスロットマシン601における役としては、特別役としてビッグボーナス、レギュラーボーナスが、小役としてチェリー、ベルが、再遊技役としてリプレイが定められている。また、スロットマシン601における役の組み合わせとしては、ビッグボーナス+チェリー、レギュラーボーナス+チェリーが定められている。すなわち、役及び役の組み合わせの合計は7となっている。
本実施例のスロットマシン601においては、遊技状態が、通常遊技状態であるか、レギュラーボーナスであるか、によって抽選の対象となる役及び役の組み合わせが異なる。更に遊技状態が通常遊技状態である場合には、いずれかの特別役の持ち越し中か否か(特別役の当選フラグにいずれかの特別役が当選した旨が既に設定されているか否か)によっても抽選の対象となる役及び役の組み合わせが異なる。本実施例では、遊技状態に応じた状態番号が割り当てられており、内部抽選を行う際に、現在の遊技状態に応じた状態番号を設定し、この状態番号に応じて抽選対象となる役を特定することが可能となる。具体的には、通常遊技状態においていずれの特別役も持ち越されていない場合には、状態番号として「0」が設定され、通常遊技状態においていずれかの特別役が持ち越されている場合には、状態番号として「1」が設定され、レギュラーボーナスである場合には、状態番号として「2」が設定されるようになっている。
遊技状態が通常遊技状態であり、いずれの特別役も持ち越されていない状態、すなわち状態番号として「0」が設定されている場合には、ビッグボーナス、レギュラーボーナス、ビッグボーナス+チェリー、レギュラーボーナス+チェリー、リプレイ、チェリー、ベル、すなわち全ての役及び役の組み合わせが内部抽選の対象となる。また、遊技状態が通常遊技状態であり、いずれかの特別役が持ち越されている状態、すなわち状態番号として「1」が設定されている場合には、リプレイ、チェリー、ベルの役及び役の組み合わせが内部抽選の対象となる。また、遊技状態がレギュラーボーナス、すなわち状態番号として「2」が設定されている場合には、チェリー、ベルの役及び役の組み合わせが内部抽選の対象となる。
チェリーは、いずれの遊技状態においても左リールについて入賞ラインのいずれかに「チェリー」の図柄が導出されたときに入賞となり、通常遊技状態においては2枚のメダルが払い出され、レギュラーボーナスにおいては15枚のメダルが払い出される。尚、「チェリー」の図柄が左リールの上段または下段に停止した場合には、入賞ラインL2、L4または入賞ラインL3、L5の2本の入賞ラインにチェリーの組み合わせが揃うこととなり、2本の入賞ライン上でチェリーに入賞したこととなるので、通常遊技状態においては4枚のメダルが払い出されることとなるが、レギュラーボーナスでは、2本の入賞ライン上でチェリーに入賞しても、1ゲームにおいて払い出されるメダル枚数の上限が15枚に設定されているため、15枚のみメダルが払い出されることとなる。ベルは、いずれの遊技状態においても入賞ラインのいずれかに「ベル−ベル−ベル」の組み合わせが揃ったときに入賞となり、通常遊技状態においては8枚のメダルが払い出され、レギュラーボーナスにおいては15枚のメダルが払い出される。
リプレイは、通常遊技状態において入賞ラインのいずれかに「リプレイ−リプレイ−リプレイ」の組み合わせが揃ったときに入賞となる。リプレイ入賞したときには、メダルの払い出しはないが次のゲームを改めて賭数を設定することなく開始できるので、次のゲームで設定不要となった賭数(レギュラーボーナスではリプレイ入賞しないので必ず3)に対応した3枚のメダルが払い出されるのと実質的には同じこととなる。
レギュラーボーナスは、通常遊技状態において入賞ラインのいずれかに「赤7−赤7−BAR」の組み合わせが揃ったときに入賞となる。レギュラーボーナス入賞すると、遊技状態が通常遊技状態からレギュラーボーナスに移行する。レギュラーボーナスは、12ゲームを消化したとき、または8ゲーム入賞(役の種類は、いずれでも可)したとき、のいずれか早いほうで終了する。遊技状態がレギュラーボーナスにある間は、レギュラーボーナス中フラグがRAM641cに設定される。
ビッグボーナスは、通常遊技状態において入賞ラインのいずれかに「赤7−赤7−赤7」の組み合わせが揃ったときに入賞となる。ビッグボーナス入賞すると、遊技状態がビッグボーナスに移行する。ビッグボーナスに移行すると、ビッグボーナスへの移行と同時にレギュラーボーナスに移行し、レギュラーボーナスが終了した際に、ビッグボーナスが終了していなければ、再度レギュラーボーナスに移行し、ビッグボーナスが終了するまで繰り返しレギュラーボーナスに制御される。すなわちビッグボーナス中は、常にレギュラーボーナスに制御されることとなる。そして、ビッグボーナスは、当該ビッグボーナス中において遊技者に払い出したメダルの総数が465枚を超えたときに終了する。この際、レギュラーボーナスの終了条件が成立しているか否かに関わらずレギュラーボーナスも終了する。遊技状態がビッグボーナスにある間は、ビッグボーナス中フラグがRAM641cに設定される。
なお、前述したレギュラーボーナス、ビッグボーナスをまとめて、単に「ボーナス」と呼ぶ場合がある。
なお、図107におけるリール601L,601C,601Rにおいて、白抜き7の図柄のみ描かれているが、図示を省略しているだけで、実際にはリール601L,601C,601Rにおける点線囲いの部分にも図柄が描かれている。
本実施例のスロットマシン601では、内部抽選で小役、再遊技役または特別役(ボーナス)に当選している可能性があること(内部抽選に当選して小役、再遊技役または特別役の当選フラグがRAM641cに設定されている状態である可能性があること)を示唆する示唆演出が演出部材(液晶表示器651、液晶表示器651の左右側の可動役物675L,675Rなど)を用いて実行される。特に、内部抽選処理により、特別役の発生を許容する旨を決定された(内部抽選に当選して特別役の当選フラグがRAM641cに設定されている状態)ことにもとづいて、CPU691aは、液晶表示器651の表示画面に表示される左・中・右の図柄Z1〜Z3の停止図柄の組み合わせとして特定表示結果(例えば「7・7・7」が揃うこと)となるように示唆演出を実行する。
なお、遊技者によって有利な遊技状態としては、上記のビッグボーナスやレギュラーボーナスに限らず、例えば、リールの導出条件(例えば停止順や停止タイミング)が満たされることを条件に発生する報知対象入賞の導出条件を満たす操作手順が報知される遊技状態(いわゆるアシストタイム(AT))や、少なくともいずれか1つのリールの引込範囲を制限することで、ストップスイッチ606L、606C、606Rが操作された際に表示されている図柄が停止しやすいように制御し、遊技者が目押しを行うことで入賞図柄の組合せを導出させることが可能となるチャレンジタイム(CT)、特定の入賞(例えばリプレイ入賞やシングルボーナス入賞等)の発生が許容される確率が高まる遊技状態(いわゆるリプレイタイム(RT)や集中状態)等、さらには、これらを組み合わせた遊技状態(例えばアシストタイムとリプレイタイムを組み合わせたART)などを搭載してもよく、示唆演出手段は、これらの遊技状態に移行する移行条件が成立していることにもとづいて特定表示結果となるように示唆演出を行ってもよい。
また、移行条件が成立している遊技状態の種類に応じて特定表示結果の種類を異なるようにしてもよい。(例えば、内部抽選により特別役としてビッグボーナスが当選したことにもとづいて「7・7・7」または「3・3・3」が揃い、内部抽選により特別役としてレギュラーボーナスが当選したことにもとづいて「3・3・3」が揃い、リプレイタイム(RT)に移行する移行条件が成立していることにもとづいて「1・1・1」が揃う。)
なお、上記に示した実施の形態では、以下の(1)〜(33)に示すような遊技機の特徴的構成も示されている。
(1)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとは、シリアル通信で信号を入出力し(例えば、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、それぞれシリアル通信回路511,380を内蔵し、図41に示す払出制御コマンドをシリアル通信で送受信する)、遊技制御用マイクロコンピュータは、所定期間(例えば、1秒)が経過したか否かを判定する所定期間判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52313を実行する部分)と、払出制御用マイクロコンピュータとの通信接続状態を確認するための接続確認信号(例えば、接続確認コマンド)を、所定期間判定手段によって所定期間が経過したと判定される毎に払出制御用マイクロコンピュータに出力する接続確認信号出力手段(例えば、遊技制御用マイクロコンピュータ560においてステップS52313でYと判定した後にステップS5211を実行する部分)と、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品としての景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、払出数信号出力手段によって払出数信号が出力されたことにもとづいて、接続確認信号出力手段による接続確認信号の出力を停止する停止手段(例えば、遊技制御用マイクロコンピュータ560において、賞球送信処理2のステップS52305で賞球個数コマンドを送信した後に、接続確認コマンドを送信する賞球送信処理1に移行せずに賞球受領確認処理に移行(ステップS52306参照)することによって、接続確認コマンドの送信を停止する部分。例えば、遊技制御用マイクロコンピュータ560は、図61に示す賞球送信処理1においてのみ接続確認コマンドを送信する処理(ステップS5211参照)を行い、賞球個数コマンド送信後に移行される図64に示す賞球受領確認処理では接続確認コマンドを送信する処理を行わない。)と、を含み、払出制御用マイクロコンピュータは、接続確認信号出力手段が出力した接続確認信号を入力したことにもとづいて応答信号(例えば、接続OKコマンド)を遊技制御用マイクロコンピュータに出力する応答信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7415,S74208を実行する部分)と、払出数信号出力手段により出力された払出数信号で特定される数の未払出の景品遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、を含み、応答信号出力手段は、遊技制御用マイクロコンピュータが制御状態を認識可能な態様で応答信号を遊技制御用マイクロコンピュータに出力し(例えば、払出制御用マイクロコンピュータ370は、ステップS7414,S74207の処理を実行して、図45に示すように接続OKコマンドの下位4ビットに賞球エラーや満タンエラー、球切れエラー、払出個数異常エラーをセットして送信する)、遊技制御用マイクロコンピュータは、さらに、払出制御の実行を終了したときに、払出数記憶手段に払出数データが記憶されているか否かを判定する払出数データ判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52503でYと判定されステップS52504が実行されて賞球送信処理2に移行したときにステップS52301を実行する部分)と、を含み、払出数信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていると判定されたときに、当該払出数記憶手段に記憶された払出数データにもとづいて、新たな払出数信号を払出制御用マイクロコンピュータに出力し(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でYと判定したことにもとづいてステップS52305を実行して新たな賞球個数コマンドを送信する)、接続確認信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていないと判定されたときに、所定期間判定手段により所定期間が経過したと判定されたことにもとづいて、新たな接続確認信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でNと判定した後にステップS52313でYとなって賞球送信処理1に移行し、ステップS5211を実行して新たな接続確認コマンドを送信する)ように構成されて入れてよい。そのような構成によれば、シリアル通信方式を用いることにより、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの配線の取り回しの容易化を図ることができる。また、払出制御用マイクロコンピュータが接続確認信号の入力にもとづいて定期的に出力する応答信号に制御状態を乗せることにより、制御状態信号(制御状態が付加された応答信号)を出力することができるため、制御状態信号の出力タイミングを考慮することなく制御状態信号の取りこぼし等の発生を防止することができ、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの間の通信を確実に行うことができる。
(2)所定期間判定手段は、所定期間を計測するための計測タイマ(例えば、賞球プロセスタイマ)を用いて所定期間が経過したか否かを判定し(例えば、遊技制御用マイクロコンピュータ560は、ステップS5226で賞球プロセスタイマに接続確認時間1(1秒)をセットした後、ステップS52313の処理を実行する)、遊技制御用マイクロコンピュータは、払出制御の実行を終了したときに、計測タイマに所定期間を再設定して当該計測タイマによる計測制御を開始する計測タイマ開始手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52505で賞球プロセスタイマに接続確認時間1(1秒)をセットした後、賞球送信処理2に移行してステップS52313の計測を開始する部分)を含み、接続確認信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていないと判定されたときに、計測タイマ開始手段によって再設定された計測タイマがタイムアウトしたことにもとづいて、新たな接続確認信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560におけるステップS52313でYとなったときに、賞球送信処理1に移行してステップS5211を実行する)ように構成されていてもよい。そのような構成によれば、払出制御の実行の終了後に新たな接続確認信号を出力するまでの間にインターバル期間を設けることができ、払出制御の実行の終了時における処理が集中して新たな接続確認信号の取りこぼし等が発生することを防止することができる。
(3)払出数信号出力手段は、接続確認信号出力手段による接続確認信号の出力タイミングにかかわらず、所定の払出条件が成立したことにもとづいて、払出数信号を払出制御用マイクロコンピュータに出力し(例えば、遊技制御用マイクロコンピュータ560は、接続確認コマンドの送信タイミングとは関係なく、ステップS52301でYのときにステップS52305を実行する)、遊技媒体払出制御手段は、払出数信号出力手段が出力した払出数信号を入力したことにもとづいて、払出制御の実行を開始し(例えば、払出制御用マイクロコンピュータ370は、ステップS74214,S74319で賞球個数コマンドで指定された賞球個数を未払出個数カウンタにセットして、ステップS75109で未払出個数カウンタの値が0でないことにもとづいてステップS75113の処理が実行されて払出モータ289が起動される)、払出制御用マイクロコンピュータは、払出数信号出力手段が出力した払出数信号を入力したことにもとづいて、当該払出数信号を入力したことを示す受付信号(例えば、賞球個数受付コマンド)を遊技制御用マイクロコンピュータに出力する受付信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS74215,S74320を実行する部分)と、払出制御の実行中に、払出制御の実行中であることを示す払出中信号(例えば賞球準備中コマンド)を、所定の払出中信号出力期間(例えば、1秒)毎に遊技制御用マイクロコンピュータに出力する払出中信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS74222,S74313,S74413を実行する部分)と、払出制御の実行を終了すると、払出制御の実行を終了したことを示す払出終了信号(例えば、賞球終了コマンド)を遊技制御用マイクロコンピュータに出力する払出終了信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS74417を実行する部分)と、を含み、払出中信号出力手段は、遊技制御用マイクロコンピュータが制御状態を認識可能な態様で払出中信号を遊技制御用マイクロコンピュータに出力し(例えば、払出制御用マイクロコンピュータ370は、ステップS74221,S74312,S74412の処理を実行して、図45に示すように賞球準備中コマンドの下位4ビットに賞球エラーや満タンエラー、球切れエラー、払出個数異常エラーをセットして送信する)、停止手段は、受付信号出力手段により受付信号が出力されたことにもとづいて、接続確認信号出力手段による接続確認信号の出力を停止させ(例えば、遊技制御用マイクロコンピュータ560は、ステップS52403でYと判定したことにもとづいて、接続確認コマンドを送信する賞球送信処理1に移行せずにステップS52405を実行して賞球終了確認処理に移行する)、計測タイマ開始手段は、払出終了信号出力手段によって払出終了信号が出力されたことにもとづいて、計測タイマに所定期間を再設定して当該計測タイマによる計測制御を開始する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52503でYと判定したことにもとづいて、ステップS52505で賞球プロセスタイマに接続確認時間1(1秒)をセットした後、賞球送信処理2に移行してステップS52313の計測を開始する)ように構成されていてもよい。そのような構成によれば、払出制御の実行中は無駄に接続確認信号の出力制御を行わないようにすることによって、遊技制御用マイクロコンピュータの制御負担を軽減することができる。また、払出制御の実行中であっても、払出中信号に制御状態を乗せることにより制御状態信号を出力することができるため、遊技制御用マイクロコンピュータ側で制御状態を認識することができる。
(4)遊技制御用マイクロコンピュータは、応答信号出力手段によって出力された応答信号で示される制御状態にもとづいて、所定のエラーが発生しているか否かを判定するエラー判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52302を実行する部分)を含み、払出数信号出力手段は、エラー判定手段によって所定のエラーが発生していないと判定されたことを条件として、払出数信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52302でYと判定したときにステップS52305を実行して賞球個数コマンドを送信する)ように構成されていてもよい。そのような構成によれば、エラー状態となっていて正常に払出制御を行えない場合に払出数信号を出力してしまう不都合を防止することができる。
(5)払出数信号出力手段は、払出終了信号出力手段によって出力された払出終了信号を入力した後、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていると判定されたときに、エラー判定手段による判定にかかわらず、新たな払出数信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52503でYと判定して賞球送信処理2に移行した後、ステップS52301でYと判定したことにもとづいて、ステップS52305の処理を実行して賞球個数コマンドを送信する)ように構成されていてもよい。そのような構成によれば、払出制御の実行処理の迅速化を図ることができる。
(6)遊技制御用マイクロコンピュータは、所定期間よりも長い特定期間(例えば、接続確認時間2(10秒))が経過したか否かを判定する特定期間判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5213で賞球プロセスタイマにセットされた接続確認時間2(10秒)にもとづいてステップS5227を実行する部分)と、接続確認信号を出力した後、応答信号を入力したか否かを判定する応答信号判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5223を実行する部分)を含み、接続確認信号出力手段は、応答信号判定手段によって応答信号を入力していないと判定されると、接続確認信号を特定期間判定手段によって特定期間が経過したと判定される毎に払出制御用マイクロコンピュータに出力する制御に切り替える(例えば、遊技制御用マイクロコンピュータ560は、ステップS5223でYと判定されなければ、ステップS5227でYと判定したことにもとづいて賞球送信処理1に移行してステップS5211を実行する)ように構成されていてもよい。そのような構成によれば、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの間の通信状態が不安定な状態では、接続確認信号を出力するまでのインターバル期間を長くすることによって、接続確認信号の出力処理を無駄に実行する頻度を低減し、無駄な処理負担を軽減することができる。
(7)遊技機は、所定の演出装置(例えば、演出表示装置9)を制御する演出制御用マイクロコンピュータ(例えば、演出制御用マイクロコンピュータ100)を備え、応答信号出力手段は、所定のエラーが発生したときに、遊技制御用マイクロコンピュータが当該所定のエラーを認識可能な情報を、応答信号の特定ビットを異ならせることにより設定し(例えば、払出制御用マイクロコンピュータ370は、図45に示すように、接続OKコマンドのビット0〜ビット3を設定することによって、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラーを設定する)、当該設定がなされた応答信号を遊技制御用マイクロコンピュータに出力し(例えば、払出制御用マイクロコンピュータ370は、ステップS7414,S74207を実行してステップS7515,S74208を実行する)、遊技制御用マイクロコンピュータは、応答信号出力手段により出力された応答信号を入力したときに、当該応答信号に設定された所定のエラーを認識可能な情報をそのまま設定した報知用エラー信号(例えば、枠状態表示コマンド)を演出制御用マイクロコンピュータに出力する報知用エラー信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS398を実行する部分)を含み、演出制御用マイクロコンピュータは、報知用エラー信号を入力したことにもとづいて、演出装置を制御して所定のエラーが発生したことを報知する異常報知手段(例えば、演出制御用マイクロコンピュータ100におけるステップS614でYと判定したときにステップS616,S618,S620,S622を実行する部分)を含むように構成されていてもよい。そのような構成によれば、演出装置を用いて所定のエラーが発生したことを報知することができるとともに、遊技制御用マイクロコンピュータの処理負担を軽減することができる。
(8)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、遊技制御用マイクロコンピュータは、遊技による払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品としての景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、を含み、払出制御用マイクロコンピュータは、少なくとも、払出数信号出力手段により出力された払出数信号で特定される数の未払出の景品遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、少なくとも、払出数信号で特定される数を超えた払出過多数と払出数信号で特定される数に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含むように構成されていてもよい。そのような構成によれば、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。
(9)累積更新手段は、所定基準数(例えば、2)以上の払出過多数または払出不足数が発生したときにデータを更新する(例えば、払出制御用マイクロコンピュータ370は、ステップS75319でYと判定したときにステップS75320を実行する)ように構成されていてもよい。そのような構成によれば、必要以上に払出制御の実行を停止させてしまう不都合を防止することができる。
(10)払出制御用マイクロコンピュータは、払出不足数が発生したときに払出手段を駆動制御して遊技媒体を1つだけ払い出させる再払出制御を実行する再払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75314〜S75333を実行する部分)を含み、累積更新手段は、再払出制御手段による再払出制御が実行されても遊技媒体の払い出しを検出しなかった場合にはデータを更新する(例えば、払出制御用マイクロコンピュータ370におけるステップS75325,S75335を実行する部分)ように構成されていてもよい。そのような構成によれば、払出不足数が少ない場合でも適切にデータに反映させて払出制御の実行の停止を行うことができ、不正に遊技媒体を払い出させる行為を防止する不正対策をより強化することができる。
(11)遊技機は、遊技機への電力供給が開始されたときに、払出停止状態を解除する払出停止状態解除手段(例えば、払出制御用マイクロコンピュータ370において、図82のステップS7701,S7707に示すように、エラーフラグのうち払出個数異常エラー指定ビットについてはリセット処理を行わないようにすることによって、遊技機の電源リセットが行われない限り払出個数異常エラーを解除しないようにする部分)を備えるように構成されていてもよい。そのような構成によれば、払出停止状態を解除するためには遊技店員が異常状態を確認した上で解除操作を行わなければならないので、不正に払出停止状態を解除されて異常な状態のまま遊技を継続されてしまうことを防止することができる。
(12)遊技機は、遊技機への電力供給が停止しても遊技制御用マイクロコンピュータにのみ所定期間電力供給が可能なバックアップ電源(例えば、電源基板において作成されるバックアップ電源)を備え、払出数記憶手段は、遊技機への電力供給が停止してもバックアップ電源により記憶内容を所定期間保持可能であり(例えば、遊技制御用マイクロコンピュータ560が備えるRAM55は、その一部または全部が電源基板において作成されるバックアップ電源によってバックアップされている)、遊技制御用マイクロコンピュータは、払出停止状態に制御されているときには、遊技による払出条件が成立しても払出数信号出力手段による払出数信号の出力を禁止する払出数信号禁止手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52302でNと判定したときにはステップS52305の処理を実行しないように制御する部分)を含むように構成されていてもよい。そのような構成によれば、不正行為によらない遊技機側に起因する異常により払出停止状態となったにもかかわらず払出数データがクリアされてしまう事態を防止することができ、遊技者に対して不利益が生じることを防止することができる。
(13)遊技機は、所定の演出装置(例えば、演出表示装置9)を制御する演出制御用マイクロコンピュータ(例えば、演出制御用マイクロコンピュータ100)を備え、払出制御用マイクロコンピュータは、払出停止手段によって払出停止状態に制御されたときに、所定のエラーが発生したことを示すエラー信号(例えば、エラー情報が設定された接続OKコマンドや賞球準備中コマンド)を遊技制御用マイクロコンピュータに出力するエラー信号出力手段(例えば、払出制御用マイクロコンピュータ370において、図45に示すように、接続OKコマンドや賞球準備中コマンドのビット0〜ビット3を設定することによって、賞球エラー、満タンエラー、球切れエラー、および払出個数異常エラーを設定してステップS7415,S74208,S74222,S74313,SS74413を実行する部分)を含み、遊技制御用マイクロコンピュータは、エラー信号出力手段によりエラー信号が出力されたときに、所定のエラーが発生したことを報知するための報知用エラー信号(例えば、枠状態表示コマンド)を演出制御用マイクロコンピュータに出力する報知用エラー信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS398を実行する部分)を含み、演出制御用マイクロコンピュータは、報知用エラー信号を入力したことにもとづいて、演出装置を制御して所定のエラーが発生したことを報知する異常報知手段(例えば、演出制御用マイクロコンピュータ100におけるステップS614でYと判定したときにステップS616,S618,S620,S622を実行する部分)を含むように構成されていてもよい。そのような構成によれば、演出装置を用いて所定のエラーが発生したことを報知することができ、遊技店員に対して異常が発生したことを認識させることができる。
(14)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、球貸し要求があったこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、制御用マイクロコンピュータは、少なくとも、貸出要求による払出条件の成立にもとづく未払出の貸し遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、少なくとも、貸出要求された数を超えた払出過多数と貸出要求された数に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含むように構成されていてもよい。そのような構成によれば、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。
(15)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと。球貸し要求があったこと。)にもとづいて遊技媒体を払い出す遊技機であって、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、制御用マイクロコンピュータは、払出条件の成立にもとづく未払出の遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、払い出すべき数の未払出の遊技媒体を超えた払出過多数と払い出すべき数の未払出の遊技媒体に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含むように構成されていてもよい。そのような構成によれば、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。
(16)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、遊技による払出条件の成立(例えば、遊技球が入賞口に入賞したこと)にもとづく景品としての景品遊技媒体の払い出し(例えば、賞球払出)を検出し、払出制御用マイクロコンピュータに検出信号を出力する払出検出手段(例えば、払出個数カウントスイッチ301)と、を備え、遊技制御用マイクロコンピュータは、遊技による払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、払出数信号が出力されるタイミングで、払い出すべき景品遊技媒体の数を示す第1データ(例えば、賞球個数カウンタのカウント値)を更新する更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52308を実行する部分)と、を含み、払出制御用マイクロコンピュータは、払出検出手段から検出信号が所定回数(例えば、賞球情報出力判定値(10回))入力されたことにもとづいて、遊技制御用マイクロコンピュータに対して景品遊技媒体の払い出しの検出を示す遊技媒体計数信号(例えば、賞球情報)を出力する計数信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7914を実行する部分)と、少なくとも、払出数信号出力手段により出力された払出数信号で特定される数の未払出の景品遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、少なくとも、払出数信号で特定される数を超えた払出過多数と払出数信号で特定される数に満たなかった払出不足数とを示す第2データ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新された第2データが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含み、遊技制御用マイクロコンピュータは、さらに、計数信号出力手段によって遊技媒体計数信号が出力されたことにもとづいて、第1データを逆方向に更新する逆更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5311を実行する部分)と、第1データが所定の閾値(例えば、賞球不足判定値(501)。賞球過剰判定値(0))となったことにもとづいて異常状態であると判定する異常状態判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52309,S5312を実行する部分)と、を含むように構成されていてもよい。そのような構成によれば、各々の払出制御について判断するのではなく、累積的に更新された第2データにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。また、遊技制御用マイクロコンピュータ側でも第1データにもとづいて異常状態を判定できるので、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの双方で異常状態を検出することができる。従って、不正に遊技媒体を払い出させる行為を防止する不正対策をより強固なものとすることができる。
(17)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと。球貸し要求があったこと。)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、遊技による払出条件の成立(例えば、遊技球が入賞口に入賞したこと)にもとづく景品としての景品遊技媒体の払い出し(例えば、賞球払出)と、貸出要求による払出条件の成立(例えば、球貸し要求があったこと)にもとづく貸し遊技媒体の払い出し(例えば、球貸し払出)とを検出し、払出制御用マイクロコンピュータに検出信号を出力する払出検出手段(例えば、払出個数カウントスイッチ301)と、を備え、遊技制御用マイクロコンピュータは、遊技による払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、払出数信号が出力されるタイミングで、払い出すべき景品遊技媒体の数を示す第1データ(例えば、賞球個数カウンタのカウント値)を更新する更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52308を実行する部分)と、を含み、払出制御用マイクロコンピュータは、払出検出手段から入力された検出信号が景品遊技媒体と貸し遊技媒体とのいずれの払い出しによるものかを判定する払出判定手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7902,S7903を実行する部分)と、払出判定手段により検出信号が景品遊技媒体の払い出しによるものと所定回数(例えば、賞球情報出力判定値(10回))判定されたことにもとづいて、遊技制御用マイクロコンピュータに対して遊技媒体の払い出しの検出を示す遊技媒体計数信号(例えば、賞球情報)を出力する計数信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7914を実行する部分)と、払出数信号出力手段により出力された払出数信号で特定される数の未払出の景品遊技媒体、または貸出要求による払出条件の成立にもとづく所定数の貸し遊技媒体を、払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、払出数信号で特定される数または所定数を超えた払出過多数と払出数信号で特定される数または所定数に満たなかった払出不足数とを示す第2データ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新された第2データが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含み、遊技制御用マイクロコンピュータは、さらに、計数信号出力手段によって遊技媒体計数信号が出力されたことにもとづいて、第1データを逆方向に更新する逆更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5311を実行する部分)と、第1データが所定の閾値(例えば、賞球不足判定値(501)。賞球過剰判定値(0))となったことにもとづいて異常状態であると判定する異常状態判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52309,S5312を実行する部分)と、を含むように構成されていてもよい。そのような構成によれば、各々の払出制御について判断するのではなく、累積的に更新された第2データにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。また、遊技制御用マイクロコンピュータ側でも第1データにもとづいて異常状態を判定できるので、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの双方で異常状態を検出することができる。従って、不正に遊技媒体を払い出させる行為を防止する不正対策をより強固なものとすることができる。
(18)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとは、シリアル通信で信号を入出力し(例えば、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、それぞれシリアル通信回路511,380を内蔵し、図41に示す払出制御コマンドをシリアル通信で送受信する)、遊技制御用マイクロコンピュータは、所定期間(例えば、1秒)が経過したか否かを判定する所定期間判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52313を実行する部分)と、払出制御用マイクロコンピュータとの通信接続状態を確認するための接続確認信号(例えば、接続確認コマンド)を、所定期間判定手段によって所定期間が経過したと判定される毎に払出制御用マイクロコンピュータに出力する接続確認信号出力手段(例えば、遊技制御用マイクロコンピュータ560においてステップS52313でYと判定した後にステップS5211を実行する部分)と、遊技による払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品としての景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、を含み、払出制御用マイクロコンピュータは、接続確認信号出力手段が出力した接続確認信号を入力したことにもとづいて応答信号(例えば、接続OKコマンド)を遊技制御用マイクロコンピュータに出力する応答信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7415,S74208を実行する部分)と、少なくとも、払出数信号出力手段により出力された払出数信号で特定される数の未払出の景品遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、少なくとも、払出数信号で特定される数を超えた払出過多数と払出数信号で特定される数に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含み、応答信号出力手段は、遊技制御用マイクロコンピュータが制御状態を認識可能な態様で応答信号を遊技制御用マイクロコンピュータに出力する(例えば、払出制御用マイクロコンピュータ370は、ステップS7414,S74207の処理を実行して、図45に示すように接続OKコマンドの下位4ビットに賞球エラーや満タンエラー、球切れエラー、払出個数異常エラーをセットして送信する)ように構成されていてもよい。そのような構成によれば、シリアル通信方式を用いることにより、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの配線の取り回しの容易化を図ることができる。また、払出制御用マイクロコンピュータが接続確認信号の入力にもとづいて定期的に出力する応答信号に制御状態を乗せることにより、制御状態信号(制御状態が付加された応答信号)を出力することができるため、制御状態信号の出力タイミングを考慮することなく制御状態信号の取りこぼし等の発生を防止することができ、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの間の通信を確実に行うことができる。さらに、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。
(19)遊技制御用マイクロコンピュータは、払出数信号出力手段によって払出数信号が出力されたことにもとづいて、接続確認信号出力手段による接続確認信号の出力を停止する停止手段(例えば、遊技制御用マイクロコンピュータ560における接続確認コマンドを送信する賞球送信処理1に移行せずに賞球終了確認処理に移行する部分)と、払出制御の実行を終了したときに、払出数記憶手段に払出数データが記憶されているか否かを判定する払出数データ判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52503でYと判定されステップS52504が実行されて賞球送信処理2に移行したときにステップS52301を実行する部分)と、を含み、払出数信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていると判定されたときに、当該払出数記憶手段に記憶された払出数データにもとづいて、新たな払出数信号を払出制御用マイクロコンピュータに出力し(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でYと判定したことにもとづいてステップS52305を実行して新たな賞球個数コマンドを送信する)、接続確認信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていないと判定されたときに、所定期間判定手段により所定期間が経過したと判定されたことにもとづいて、新たな接続確認信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でNと判定した後にステップS52313でYとなって賞球送信処理1に移行し、ステップS5211を実行して新たな接続確認コマンドを送信する)ように構成されていてもよい。そのような構成によれば、払出制御の実行の終了時における処理が集中して新たな接続確認信号の取りこぼし等が発生することを防止することができ、払出制御の実行処理の迅速化を図ることができる。
(20)遊技機は、遊技による払出条件の成立(例えば、遊技球が入賞口に入賞したこと)にもとづく景品としての景品遊技媒体の払い出し(例えば、賞球払出)を検出し、払出制御用マイクロコンピュータに検出信号を出力する払出検出手段(例えば、払出個数カウントスイッチ301)を備え、遊技制御用マイクロコンピュータは、払出数信号が出力されるタイミングで、払い出すべき景品遊技媒体の数を示す媒体数データ(例えば、賞球個数カウンタのカウント値)を更新する更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52308を実行する部分)を含み、払出制御用マイクロコンピュータは、払出検出手段から検出信号が所定回数(例えば、賞球情報出力判定値(10回))入力されたことにもとづいて、遊技制御用マイクロコンピュータに対して景品遊技媒体の払い出しの検出を示す遊技媒体計数信号(例えば、賞球情報)を出力する計数信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7914を実行する部分)と、を含み、遊技制御用マイクロコンピュータは、さらに、計数信号出力手段によって遊技媒体計数信号が出力されたことにもとづいて、媒体数データを逆方向に更新する逆更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5311を実行する部分)と、媒体数データが所定の閾値(例えば、賞球不足判定値(501)。賞球過剰判定値(0))となったことにもとづいて異常状態であると判定する異常状態判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52309,S5312を実行する部分)と、を含むように構成されていてもよい。そのような構成によれば、遊技制御用マイクロコンピュータ側でも媒体数データにもとづいて異常状態を判定できるので、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの双方で異常状態を検出することができる。従って、不正に遊技媒体を払い出させる行為を防止する不正対策をより強固なものとすることができる。
(21)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、球貸し要求があったこと)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとは、シリアル通信で信号を入出力し(例えば、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、それぞれシリアル通信回路511,380を内蔵し、図41に示す払出制御コマンドをシリアル通信で送受信する)、遊技制御用マイクロコンピュータは、所定期間(例えば、1秒)が経過したか否かを判定する所定期間判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52313を実行する部分)と、払出制御用マイクロコンピュータとの通信接続状態を確認するための接続確認信号(例えば、接続確認コマンド)を、所定期間判定手段によって所定期間が経過したと判定される毎に払出制御用マイクロコンピュータに出力する接続確認信号出力手段(例えば、遊技制御用マイクロコンピュータ560においてステップS52313でYと判定した後にステップS5211を実行する部分)と、を含み、払出制御用マイクロコンピュータは、接続確認信号出力手段が出力した接続確認信号を入力したことにもとづいて応答信号(例えば、接続OKコマンド)を遊技制御用マイクロコンピュータに出力する応答信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7415,S74208を実行する部分)と、少なくとも、貸出要求による払出条件の成立にもとづく所定数の貸し遊技媒体を払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、少なくとも、所定数を超えた払出過多数と所定数に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含み、応答信号出力手段は、遊技制御用マイクロコンピュータが制御状態を認識可能な態様で応答信号を遊技制御用マイクロコンピュータに出力するとともに、払出停止状態に制御されたときに、当該払出停止状態に制御されたことを認識可能に応答信号を遊技制御用マイクロコンピュータに出力し(例えば、払出制御用マイクロコンピュータ370は、ステップS7414,S74207の処理を実行して、図45に示すように接続OKコマンドの下位4ビットに賞球エラーや満タンエラー、球切れエラー、払出個数異常エラーをセットして送信する)、遊技制御用マイクロコンピュータは、さらに、払出停止状態に制御されたことを認識可能な応答信号を入力したことにもとづいて、払出停止状態に制御されていることを報知する制御を行う払出停止報知制御手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS398を実行して枠状態表示コマンドを送信することによって、演出制御用マイクロコンピュータにエラー報知を行わせる部分)を含むように構成されていてもよい。そのような構成によれば、シリアル通信方式を用いることにより、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの配線の取り回しの容易化を図ることができる。また、払出制御用マイクロコンピュータが接続確認信号の入力にもとづいて定期的に出力する応答信号に制御状態を乗せることにより、制御状態信号(制御状態が付加された応答信号)を出力することができるため、制御状態信号の出力タイミングを考慮することなく制御状態信号の取りこぼし等の発生を防止することができ、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの間の通信を確実に行うことができる。また、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。さらに、払出停止状態となったことを報知することができ、遊技店員に対して異常が発生したことを認識させることができる。
(22)遊技制御用マイクロコンピュータは、遊技による払出条件が成立したことにもとづいて、払い出すべき景品としての景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、払出数信号出力手段によって払出数信号が出力されたことにもとづいて、接続確認信号出力手段による接続確認信号の出力を停止する停止手段(例えば、遊技制御用マイクロコンピュータ560における接続確認コマンドを送信する賞球送信処理1に移行せずに賞球終了確認処理に移行する部分)と、払出制御の実行を終了したときに、払出数記憶手段に払出数データが記憶されているか否かを判定する払出数データ判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52503でYと判定されステップS52504が実行されて賞球送信処理2に移行したときにステップS52301を実行する部分)と、を含み、払出数信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていると判定されたときに、当該払出数記憶手段に記憶された払出数データにもとづいて、新たな払出数信号を払出制御用マイクロコンピュータに出力し(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でYと判定したことにもとづいてステップS52305を実行して新たな賞球個数コマンドを送信する)、接続確認信号出力手段は、払出数データ判定手段によって払出数記憶手段に払出数データが記憶されていないと判定されたときに、所定期間判定手段により所定期間が経過したと判定されたことにもとづいて、新たな接続確認信号を払出制御用マイクロコンピュータに出力する(例えば、遊技制御用マイクロコンピュータ560は、ステップS52301でNと判定した後にステップS52313でYとなって賞球送信処理1に移行し、ステップS5211を実行して新たな接続確認コマンドを送信する)ように構成されていてもよい。そのような構成によれば、払出制御の実行の終了時における処理が集中して新たな接続確認信号の取りこぼし等が発生することを防止することができ、払出制御の実行処理の迅速化を図ることができる。
(23)遊技機は、遊技による払出条件の成立(例えば、遊技球が入賞口に入賞したこと)にもとづく景品としての景品遊技媒体の払い出し(例えば、賞球払出)と、貸出要求による払出条件の成立(例えば、球貸し要求があったこと)にもとづく貸し遊技媒体の払い出し(例えば、球貸し払出)とを検出し、払出制御用マイクロコンピュータに検出信号を出力する払出検出手段(例えば、払出個数カウントスイッチ301)を備え、遊技制御用マイクロコンピュータは、払出数信号が出力されるタイミングで、払い出すべき景品遊技媒体の数を示す媒体数データ(例えば、賞球個数カウンタのカウント値)を更新する更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52308を実行する部分)を含み、払出制御用マイクロコンピュータは、払出検出手段から入力された検出信号が景品遊技媒体と貸し遊技媒体とのいずれの払い出しによるものかを判定する払出判定手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7902,S7903を実行する部分)と、払出判定手段により検出信号が景品遊技媒体の払い出しによるものと所定回数(例えば、賞球情報出力判定値(10回))判定されたことにもとづいて、遊技制御用マイクロコンピュータに対して遊技媒体の払い出しの検出を示す遊技媒体計数信号(例えば、賞球情報)を出力する計数信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7914を実行する部分)と、を含み、遊技制御用マイクロコンピュータは、さらに、計数信号出力手段によって遊技媒体計数信号が出力されたことにもとづいて、媒体数データを逆方向に更新する逆更新手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5311を実行する部分)と、媒体数データが所定の閾値(例えば、賞球不足判定値(501)。賞球過剰判定値(0))となったことにもとづいて異常状態であると判定する異常状態判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52309,S5312を実行する部分)と、を含むように構成されていてもよい。そのような構成によれば、遊技制御用マイクロコンピュータ側でも媒体数データにもとづいて異常状態を判定できるので、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの双方で異常状態を検出することができる。従って、不正に遊技媒体を払い出させる行為を防止する不正対策をより強固なものとすることができる。
(24)遊技機は、遊技媒体(例えば、遊技球)を用いて遊技者が所定の遊技を行うことが可能であり、所定の払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと。球貸し要求があったこと。)にもとづいて遊技媒体を払い出す遊技機であって、遊技の進行を制御する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)と、遊技媒体の払い出しを行う払出手段(例えば、球払出装置97)と、払出手段を制御する払出制御用マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)と、を備え、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとは、シリアル通信で信号を入出力し(例えば、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは、それぞれシリアル通信回路511,380を内蔵し、図41に示す払出制御コマンドをシリアル通信で送受信する)、遊技制御用マイクロコンピュータは、所定期間(例えば、1秒)が経過したか否かを判定する所定期間判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52313を実行する部分)と、払出制御用マイクロコンピュータとの通信接続状態を確認するための接続確認信号(例えば、接続確認コマンド)を、所定期間判定手段によって所定期間が経過したと判定される毎に払出制御用マイクロコンピュータに出力する接続確認信号出力手段(例えば、遊技制御用マイクロコンピュータ560においてステップS52313でYと判定した後にステップS5211を実行する部分)と、遊技による払出条件が成立したこと(例えば、遊技球が入賞口に入賞したこと)にもとづいて、払い出すべき景品としての景品遊技媒体の数(例えば、賞球個数)を特定可能な払出数データ(例えば、賞球コマンド出力カウンタのカウント値)を記憶する払出数記憶手段(例えば、賞球コマンド出力カウンタ)と、払出数記憶手段に記憶された払出数データにもとづいて、払い出すべき景品遊技媒体の数を特定可能な払出数信号(例えば、賞球個数コマンド)を払出制御用マイクロコンピュータに出力する払出数信号出力手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS52305を実行する部分)と、を含み、払出制御用マイクロコンピュータは、接続確認信号出力手段が出力した接続確認信号を入力したことにもとづいて応答信号(例えば、接続OKコマンド)を遊技制御用マイクロコンピュータに出力する応答信号出力手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7415,S74208を実行する部分)と、払出数信号出力手段により出力された払出数信号で特定される数または貸出要求による払出条件の成立にもとづく所定数の貸し遊技媒体を、払出手段を駆動制御して払い出させる払出制御を実行する遊技媒体払出制御手段(例えば、払出制御用マイクロコンピュータ370におけるステップS75113の処理が実行されて払出モータ289が起動され、ステップS756の払出モータ制御処理が実行される部分)と、払出数信号で特定される数または所定数を超えた払出過多数と払出数信号で特定される数または所定数に満たなかった払出不足数とを示すデータ(例えば、払出個数異常カウンタのカウント値)を累積的に更新する累積更新手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7503,S75320,S75325,S75335を実行する部分)と、累積更新手段によって更新されたデータが特定値(例えば、所定の払出個数異常エラー判定値(例えば、2000))となると、遊技媒体払出制御手段による払出制御の実行を停止させて払出停止状態に制御する払出停止手段(例えば、払出制御用マイクロコンピュータ370におけるステップS7505,S75322,S7726で払出個数異常エラー指定ビットをセットした後、ステップS75101でNと判定して払出動作を行わないように制御する部分)と、を含み、応答信号出力手段は、遊技制御用マイクロコンピュータが制御状態を認識可能な態様で応答信号を遊技制御用マイクロコンピュータに出力する(例えば、払出制御用マイクロコンピュータ370は、ステップS7414,S74207の処理を実行して、図45に示すように接続OKコマンドの下位4ビットに賞球エラーや満タンエラー、球切れエラー、払出個数異常エラーをセットして送信する)ように構成されていてもよい。そのような構成によれば、シリアル通信方式を用いることにより、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの配線の取り回しの容易化を図ることができる。また、払出制御用マイクロコンピュータが接続確認信号の入力にもとづいて定期的に出力する応答信号に制御状態を乗せることにより、制御状態信号(制御状態が付加された応答信号)を出力することができるため、制御状態信号の出力タイミングを考慮することなく制御状態信号の取りこぼし等の発生を防止することができ、遊技制御用マイクロコンピュータと払出制御用マイクロコンピュータとの間の通信を確実に行うことができる。さらに、各々の払出制御について判断するのではなく、累積的に更新されたデータにもとづいて異常な状況下で実行された払出制御を総合的に判断して払出制御の実行を停止させることができる。従って、不正に遊技媒体を払い出させる行為をより的確に防止することを可能とすることができる。
(25)遊技制御用マイクロコンピュータは、所定の初期設定を実行した後、不揮発性メモリ(例えば、ROM54)の記憶内容にもとづき遊技機における遊技制御を実行する制御用CPU(例えば、CPU56)が内蔵され、遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)に内蔵または外付けされ、乱数値となる数値データを生成する乱数回路(例えば、乱数回路509)を備え、乱数回路は、数値データをあらかじめ定められた手順により更新して出力する数値更新手段(例えば、乱数生成回路553や乱数列変更回路555)と、数値更新手段から出力された数値データを乱数値として取り込んで格納する乱数値格納手段(例えば、乱数値レジスタ559A(R1D)や乱数値レジスタ559B(R2D))と、所定信号(例えば、始動入賞信号SSにもとづく乱数ラッチ信号LL1,LL2)の入力にもとづいて数値更新手段から出力された数値データが乱数値格納手段に格納されたときにオン状態にされて新たな数値データの格納を制限する一方、乱数値格納手段に格納された数値データが乱数値の読出タイミングにて制御用CPUにより読み出されたときにオフ状態にされて新たな数値データの格納を許可する所定のフラグ(例えば、乱数ラッチフラグRDFM0,RDFM1)と、を含み、遊技制御用マイクロコンピュータは、制御用CPUによる遊技制御が開始されるときに、所定のフラグをオフ状態にする遊技制御開始時処理手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5006を実行して乱数ラッチフラグRDFM0,RDFM1をクリアする部分。遊技制御用マイクロコンピュータ560におけるステップS484、S486を実行して乱数ラッチフラグRDFM0,RDFM1をクリアする部分。)を含むように構成されていてもよい。そのような構成によれば、所定信号の入力にもとづいて乱数値格納手段に格納された数値データを、正確な乱数値として取得することができる。また、遊技機に供給される電源が不安定な状態で誤って乱数値格納手段に格納された数値データを取得してしまう事態も防止することができる。
(26)遊技制御開始時処理手段は、遊技制御用マイクロコンピュータのシステムリセットが解除されて制御用CPUによる遊技制御の実行が開始されるときに、所定のフラグをオフ状態にするシステムリセット時処理手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5006を実行して乱数ラッチフラグRDFM0,RDFM1をクリアする部分)を含むように構成されていてもよい。そのような構成によれば、例えば、電源投入時などの電源電圧が不安定な状態で誤って乱数値格納手段に格納された数値データを乱数値として取得してしまうことを防止することができる。
(27)遊技機は、遊技機への電力供給にもとづいて生成された所定電源電圧を監視し、該所定電源電圧が低下したことにもとづいて検出信号(例えば、電源断信号)を出力する電源監視手段(例えば、電源監視回路920)を備え、遊技制御用マイクロコンピュータは、電源監視手段から検出信号が出力された後、動作停止状態となるまで、検出信号の入力状態を繰り返し判定する検出判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS482を実行する部分)と、検出判定手段によって検出信号が入力されていない旨の判定がなされたときに、遊技制御処理プログラムの先頭から遊技制御の実行を開始する電断復旧時制御手段(例えば、遊技制御用マイクロコンピュータ560において、ステップS487を実行した後、メイン処理から復帰(リターン)する部分)と、を含み、遊技制御開始時処理手段は、検出判定手段によって検出信号が入力されていない旨の判定がなされた後、電断復旧時制御手段が遊技制御処理プログラムの先頭から遊技制御の実行を開始するより前に、所定のフラグをオフ状態にする電断復旧時処理手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS484、S486を実行して乱数ラッチフラグRDFM0,RDFM1をクリアする部分)を含むように構成されていてもよい。そのような構成によれば、例えば、所定電源電圧の低下時などの電源電圧が不安定な状態で誤って乱数値格納手段に格納された数値データを乱数値として取得してしまうことを防止することができる。
(28)数値更新手段は、数値データを更新可能な所定の範囲において、所定の更新初期値から所定の更新最終値まで循環的に数値データを更新し(例えば、乱数生成回路553や乱数列変更回路555において図32や図33に示すような乱数列RSNを生成する部分)、遊技制御用マイクロコンピュータは、当該遊技制御用マイクロコンピュータがシステムリセットされるごとに、所定の更新初期値を可変設定可能な乱数初期値設定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS5005を実行する部分)を含むように構成されていてもよい。そのような構成によれば、システムリセットの発生後に乱数値となる数値データを特定することが困難になり、狙い撃ちなどによる不正行為を、確実に防止することができる。
(29)遊技機は、遊技機への電力供給が開始された後、制御用CPUの動作とは別個に数値をカウントするカウント手段(例えば、フリーランカウンタ554A)を備え、乱数初期値設定手段は、カウント手段によってカウントされた数値を用いて、所定の更新初期値を決定する(例えば、遊技制御用マイクロコンピュータ560によるステップS5005の処理にもとづいて、スタート値設定回路554がスタート値を設定する部分)ように構成されていてもよい。そのような構成によれば、制御用CPUの動作態様から乱数値となる数値データを特定することが困難になり、狙い撃ちなどによる不正行為を、確実に防止することができる。
(30)不揮発性メモリは、遊技制御用マイクロコンピュータに内蔵され、遊技制御用マイクロコンピュータは、制御用CPU以外による不揮発性メモリの外部読出を制限する読出制限回路(例えば、内部リソースアクセス制御回路501A)を含むように構成されていてもよい。そのような構成によれば、不揮発性メモリに記憶されている制御プログラムなどを遊技制御用マイクロコンピュータの外部から読み出して解析などをすることが困難になり、制御プログラムの解析結果などにもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続することによる不正行為を、確実に防止することができる。
(31)遊技機は、遊技制御用マイクロコンピュータの外部にて乱数用クロック信号を生成して、乱数回路に供給する乱数用クロック生成回路(例えば、乱数用クロック生成回路112)と、制御用CPUに供給される制御用クロック信号を生成する制御用クロック生成回路(例えば、制御用クロック生成回路111やクロック回路502)と、を備え、乱数回路は、遊技制御用マイクロコンピュータに内蔵され、遊技制御用マイクロコンピュータは、乱数用クロック生成回路から供給される乱数用クロック信号の入力状態を制御用クロック生成回路にて生成された制御用クロック信号と比較することにより、乱数用クロック信号の入力状態に異常が発生したか否かを判定する乱数用クロック異常判定手段(例えば、周波数監視回路551、および遊技制御用マイクロコンピュータ560におけるステップS562〜S566を実行する部分)を含むように構成されていてもよい。そのような構成によれば、乱数値となる数値データの更新動作に異常が発生している状態で遊技制御が実行されてしまうことを防止できる。
(32)遊技制御用マイクロコンピュータは、所定の初期設定において不揮発性メモリの記憶内容が変更されたか否かを検査するセキュリティチェックを実行するセキュリティチェック手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS1009〜S1014を実行する部分)と、セキュリティチェック手段によるセキュリティチェックの実行時間を可変設定可能なセキュリティ時間設定手段(例えば、セキュリティ時間設定KSESのビット番号[2−0]にもとづいて、遊技制御用マイクロコンピュータ560におけるステップS1001〜S1004を実行する部分。セキュリティ時間設定KSESのビット番号[4−3]にもとづいて、遊技制御用マイクロコンピュータ560におけるステップS1005〜S1008を実行する部分)と、を含むように構成されていてもよい。そのような構成によれば、遊技制御の実行開始タイミングを特定することが困難になり、初期設定動作などの解析結果にもとづく狙い撃ちや、いわゆる「ぶら下げ基板」を接続することによる不正行為を、確実に防止することができる。
(33)遊技制御用マイクロコンピュータは、乱数値の読出タイミングにて保留記憶手段における保留記憶の数が所定の上限数に達しているときに、乱数値格納手段に格納された数値データを読み出すことにより所定のフラグをオフ状態にする上限記憶時読出手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS326を実行して乱数ラッチフラグRDFM0,RDFM1をクリアする部分)を含むように構成されていてもよい。そのような構成によれば、保留記憶の数が所定の上限数に達した後、上限数未満となってから乱数値の読出タイミングとなったときに、所定信号の入力にもとづく正確な乱数値を取得することができる。