実施の形態1.
以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図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の左側には、遊技演出に用いられる可動部材としてのハンマ151が設けられている。ハンマ151は、可動部152を支点として右方向に倒れ、可変表示装置9に表示される飾り図柄のうち最も左側の飾り図柄を叩くような演出を行うことができる。
また、パチンコ遊技機1は、遊技の進行中に遊技者が操作可能な操作スイッチ81を備えている。例えば、操作スイッチ81が操作(押下)されると、可動部材としてのハンマ151が動作する。
可変表示装置9の下方には、始動入賞口14を形成する可変入賞球装置15が設けられている。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。可変入賞球装置15は、ソレノイド16によって開状態にされる。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態に制御される開閉板を用いた特別可変入賞球装置20が設けられている。特別可変入賞球装置20は大入賞口を開閉する手段である。特別可変入賞球装置20に入賞し遊技盤6の背面に導かれた入賞球のうち一方(V入賞領域:特別領域)に入った入賞球はV入賞スイッチ22で検出された後カウントスイッチ23で検出され、他方の領域に入った遊技球は、そのままカウントスイッチ23で検出される。遊技盤6の背面には、大入賞口内の経路を切り換えるためのソレノイド21Aも設けられている。
遊技球がゲート32を通過しゲートスイッチ32aで検出されると、普通図柄表示器10の表示の可変表示が開始される。この実施の形態では、左右のランプ(点灯時に図柄が視認可能になる)が交互に点灯することによって可変表示が行われ、例えば、可変表示の終了時に左側のランプが点灯すれば当たりになる。そして、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になる。普通図柄表示器10の近傍には、ゲート32を通過した入賞球数を表示する4つのLEDによる表示部を有する普通図柄始動記憶表示器41が設けられている。ゲート32への遊技球の通過があるごとに、普通図柄始動記憶表示器41は点灯するLEDを1増やす。そして、普通図柄表示器10の可変表示が開始されるごとに、点灯するLEDを1減らす。
遊技盤6には、複数の入賞口29,30,33,39が設けられ、遊技球の入賞口29,30,33,39への入賞は、それぞれ入賞口スイッチ29a,30a,33a,39aによって検出される。各入賞口29,30,33,39は、遊技媒体を受け入れて入賞を許容する領域として遊技盤6に設けられる入賞領域を構成している。なお、始動入賞口14や大入賞口も、遊技媒体を受け入れて入賞を許容する入賞領域を構成する。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった遊技球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。さらに、遊技領域7における各構造物(大入賞口等)の周囲には装飾LEDが設置されている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cおよび装飾用LEDは、遊技機に設けられている装飾発光体の一例である。
そして、この例では、左枠ランプ28bの近傍に、賞球払出中に点灯する賞球ランプ51が設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れランプ52が設けられている。さらに、プリペイドカードが挿入されることによって球貸しを可能にするプリペイドカードユニット(以下、「カードユニット」という。)50が、パチンコ遊技機1に隣接して設置されている。
カードユニット50には、例えば、使用可能状態であるか否かを示す使用可表示ランプ、カードユニットがいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器、カードユニット内にカードが投入されていることを示すカード投入表示ランプ、記録媒体としてのカードが挿入されるカード挿入口、およびカード挿入口の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニットを解放するためのカードユニット錠が設けられている。
遊技者の操作により打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。遊技球が始動入賞口14に入り始動口スイッチ14aで検出されると、図柄の可変表示を開始できる状態であれば、特別図柄表示器8において特別図柄が可変表示(変動)を始める。図柄の可変表示を開始できる状態でなければ、保留記憶数を1増やす。
特別図柄表示器8における特別図柄の可変表示は、一定時間が経過したときに停止する。停止時の特別図柄(停止図柄)が大当り図柄(特定表示結果)であると、大当り遊技状態に移行する。すなわち、特別可変入賞球装置20が、一定時間経過するまで、または、所定個数(例えば10個)の遊技球が入賞するまで開放する。そして、特別可変入賞球装置20の開放中に遊技球がV入賞領域に入賞しV入賞スイッチ22で検出されると、継続権が発生し特別可変入賞球装置20の開放が再度行われる。継続権の発生は、所定回数(例えば15ラウンド)許容される。なお、V入賞領域を設けずに、特別可変入賞球装置20の開放を常に最終ラウンドまで(例えば、15ラウンドまで)許容するようにしてもよい。
停止時の特別図柄表示器8における特別図柄が確率変動を伴う大当り図柄(確変図柄)である場合には、次に大当りになる確率が高くなる。すなわち、確変状態という遊技者にとってさらに有利な状態になる。
遊技球がゲート32を通過すると、普通図柄表示器10において普通図柄が可変表示される状態になる。また、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定時間だけ開状態になる。さらに、確変状態では、普通図柄表示器10における停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置15の開放時間と開放回数が高められる。すなわち、可変入賞球装置15の開放時間と開放回数は、普通図柄の停止図柄が当り図柄であったり、特別図柄の停止図柄が確変図柄である場合等に高められ、遊技者にとって不利な状態から有利な状態に変化する。なお、開放回数が高められることは、閉状態から開状態になることも含む概念である。
次に、パチンコ遊技機1の裏面の構造について図3を参照して説明する。図3は、遊技機を裏面から見た背面図である。
図3に示すように、遊技機裏面側では、可変表示装置9を制御する演出制御用マイクロコンピュータが搭載された演出制御基板80を含む可変表示制御ユニット49、遊技制御用マイクロコンピュータ等が搭載された遊技制御基板(主基板)31が設置されている。また、球払出制御を行う払出制御用マイクロコンピュータ等が搭載された払出制御基板37が設置されている。なお、演出制御マイクロコンピュータは、遊技盤6に設けられている可変表示装置9を制御するとともに、各種装飾LED、装飾ランプ25、枠側に設けられている天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cを点灯制御し、スピーカ27からの音発生を制御する。
さらに、DC30V、DC21V、DC12VおよびDC5Vを作成する電源回路が搭載された電源基板910やタッチセンサ基板91が設けられている。電源基板910は、大部分が主基板31と重なっているが、主基板31に重なることなく外部から視認可能に露出した露出部分がある。この露出部分には、遊技機1における主基板31および各電気部品制御基板(演出制御基板80および払出制御基板37)や遊技機に設けられている各電気部品(電力が供給されることによって動作する部品)への電力供給を実行あるいは遮断するための電力供給許可手段としての電源スイッチが設けられている。さらに、露出部分における電源スイッチの内側(基板内部側)には、交換可能なヒューズが設けられている。
なお、電気部品制御基板には、電気部品制御用マイクロコンピュータを含む電気部品制御手段が搭載されている。電気部品制御手段は、遊技制御手段等からのコマンドとしての指令信号(制御信号)に従って遊技機に設けられている電気部品(遊技用装置:球払出装置97、可変表示装置9、ランプやLEDなどの発光体、スピーカ27等)を制御する。以下、主基板31を電気部品制御基板に含めて説明を行うことがある。その場合には、電気部品制御基板に搭載される電気部品制御手段は、遊技制御手段と、遊技制御手段等からの指令信号に従って遊技機に設けられている電気部品を制御する手段とのそれぞれを指す。また、主基板31以外のマイクロコンピュータが搭載された基板をサブ基板ということがある。
遊技機裏面において、上方には、各種情報を遊技機外部に出力するための各端子を備えたターミナル基板160が設置されている。ターミナル基板160には、少なくとも、球切れ検出スイッチ167の出力を導入して外部出力するための球切れ用端子、賞球情報(賞球個数信号)を外部出力するための賞球用端子および球貸し情報(球貸し個数信号)を外部出力するための球貸し用端子が設けられている。また、中央付近には、主基板31からの各種情報を遊技機外部に出力するための各端子を備えた情報端子基板(情報出力基板)36が設置されている。
貯留タンク38に貯留された遊技球は誘導レール39を通り、カーブ樋を経て払出ケース40Aで覆われた球払出装置に至る。球払出装置の上部には、遊技媒体切れ検出手段としての球切れスイッチ187が設けられている。球切れスイッチ187が球切れを検出すると、球払出装置の払出動作が停止する。球切れスイッチ187は遊技球通路内の遊技球の有無を検出するスイッチであるが、貯留タンク38内の補給球の不足を検出する球切れ検出スイッチ167も誘導レール39における上流部分(貯留タンク38に近接する部分)に設けられている。球切れ検出スイッチ167が遊技球の不足を検知すると、遊技機設置島に設けられている補給機構から遊技機に対して遊技球の補給が行われる。
入賞にもとづく景品としての遊技球や球貸し要求にもとづく遊技球が多数払い出されて打球供給皿3が満杯になると、遊技球は、余剰球通路を経て余剰球受皿4に導かれる。さらに遊技球が払い出されると、感知レバー(図示せず)が貯留状態検出手段としての満タンスイッチ(図示せず)を押圧して、貯留状態検出手段としての満タンスイッチがオンする。その状態では、球払出装置内の払出モータの回転が停止して球払出装置の動作が停止するとともに打球発射装置の駆動も停止する。
図4は、主基板31における回路構成の一例を示すブロック図である。なお、図4には、遊技機に搭載されている払出制御基板37、ランプドライバ基板35、音声出力基板70、インタフェース基板66、中継基板77および演出制御基板80も示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する基本回路(遊技制御手段に相当)53と、ゲートスイッチ32a、始動口スイッチ14a、V入賞スイッチ22、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a、および全入賞計数スイッチ34からの信号を基本回路53に与える入力ドライバ回路58と、可変入賞球装置15を開閉するソレノイド16、特別可変入賞球装置20を開閉するソレノイド21および大入賞口内の経路を切り換えるためのソレノイド21Aを基本回路53からの指令に従って駆動する出力回路59と、遊技店員等による操作に応じて遊技制御用マイクロコンピュータ560による遊技制御処理を中断させるための中断ボタン361とが搭載されている。中断ボタン361は、押下されたことに応じて、遊技制御処理中断信号を遊技制御用マイクロコンピュータ560に対して出力する。
なお、ゲートスイッチ32a、始動口スイッチ14a、V入賞スイッチ22、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a、全入賞計数スイッチ34等のスイッチは、センサと称されているものでもよい。すなわち、遊技球を検出できる遊技媒体検出手段(この例では遊技球検出手段)であれば、その名称を問わない。入賞検出を行う始動口スイッチ14a、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aの各スイッチは、入賞領域への遊技球の入賞を検出する入賞検出手段でもある。なお、ゲート32のような通過ゲートであっても、賞球の払い出しが行われるものであれば、通過ゲートへ遊技球が進入することが入賞になり、通過ゲートに設けられているスイッチ(例えばゲートスイッチ32a)が入賞検出手段になる。さらに、この実施の形態では、V入賞領域に入賞した遊技球が、V入賞スイッチ22で検出されるとともにカウントスイッチ23でも検出される。よって、大入賞口に入賞した遊技球数は、カウントスイッチ23による検出数に相当する。しかし、V入賞領域に入賞した遊技球はV入賞スイッチ22のみで検出されるようにし、大入賞口に入賞した遊技球数は、V入賞スイッチ22による検出数とカウントスイッチ23による検出数との和になるようにしてもよい。さらに、V入賞領域を設けず、最終ラウンド以外のラウンドでは、常に継続権が発生するようにしてもよい。
基本回路53は、ゲーム制御(遊技進行制御)用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段(変動データを記憶する変動データ記憶手段)としてのRAM55、およびプログラムに従って制御動作を行うCPU56を有する遊技制御用マイクロコンピュータ560を含む。なお、この実施の形態では、CPU56とは、基本回路53のうち、プログラムに従って動作する中央処理装置(ROM54やRAM55などの記憶手段、I/Oポート部57などを除いた部分)を指し、後述するメイン処理や割込処理(タイマ割込処理)を実行する。また、遊技制御用マイクロコンピュータ560とは、基本回路53のうち、CPU56に加えて、ROM54やRAM55などの記憶手段、乱数回路503、I/Oポート部57などを含む部分を指し、各基板(払出制御基板37や演出制御基板80)が搭載するマイクロコンピュータと各種データの送受信を行う。
なお、本実施の形態では、「マイクロコンピュータが送受信する」等の表現を用いるが、具体的には、例えば、データ送信を行う場合、CPUがシリアル通信回路の送信データレジスタにデータをセットし、シリアル通信回路が送信データレジスタにセットされたデータを送信する。また、CPUがI/Oポート部を介してデータを送信する。また、例えば、データ受信を行う場合、受信データがシリアル通信回路の受信データレジスタに書き込まれ、CPUが受信データレジスタから受信データを読み込む。また、CPUがI/Oポート部を介してデータを受信する。
なお、本実施の形態では、遊技制御用マイクロコンピュータ560が、払出制御基板37が搭載する払出制御用マイクロコンピュータ370とシリアル通信を行う場合を説明する。
この実施の形態では、ROM54、ワークメモリとしての記憶手段であるRAM55およびI/Oポート部57は遊技制御用マイクロコンピュータ560に内蔵されている。すなわち、遊技制御用マイクロコンピュータ560は、1チップマイクロコンピュータである。1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54は外付けであっても内蔵されていてもよい。
なお、遊技制御用マイクロコンピュータ560においてCPU56がROM54に格納されているプログラムに従って制御を実行するので、以下、遊技制御用マイクロコンピュータ560が実行する(または、処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているマイクロコンピュータについても同様である。また、遊技制御手段は、遊技制御用マイクロコンピュータ560を含む基本回路53で実現されている。
また、RAM55は、その一部または全部が電源基板910において作成されるバックアップ電源によってバックアップされている不揮発性記憶手段としてのバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間(バックアップ電源としてのコンデンサが放電してバックアップ電源が電力供給不能になるまで)は、RAM55の一部または全部の内容は保存される。特に、少なくとも、遊技状態すなわち遊技制御手段の制御状態に応じたデータ(特別図柄プロセスフラグ等)と未払出賞球数を示すデータは、バックアップRAMに保存される。遊技制御手段の制御状態に応じたデータとは、停電等が生じた後に復旧した場合に、そのデータにもとづいて、制御状態を停電等の発生前に復旧させるために必要なデータである。また、制御状態に応じたデータと未払出賞球数を示すデータとを遊技の進行状態を示すデータと定義する。なお、この実施の形態では、RAM55の全部が、電源バックアップされているとする。
遊技制御用マイクロコンピュータ560のリセット端子には、電源基板910からのリセット信号が入力される。また、払出制御用マイクロコンピュータのリセット端子にも、電源基板910からのリセット信号が入力される。なお、リセット信号がハイレベルになると遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータは動作可能状態になり、リセット信号がローレベルになると遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータは動作停止状態になる。従って、リセット信号がハイレベルである期間は、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータの動作を許容する許容信号が出力されていることになり、リセット信号がローレベルである期間は、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータの動作を停止させる動作停止信号が出力されていることになる。なお、リセット回路をそれぞれの電気部品制御基板(主基板31を含む)に搭載してもよいし、複数の電気部品制御基板のうちの一つまたは複数にリセット回路を搭載し、そこからリセット信号を他の電気部品制御基板に供給するようにしてもよい。
さらに、基本回路53の入力ポートには、払出制御基板37を経由して、電源基板910からの電源電圧が所定値以下に低下したことを示す電源断信号が入力される。また、基本回路53の入力ポートには、RAMの内容をクリアすることを指示するためのクリアスイッチが操作されたことを示すクリア信号が入力される。
クリア信号は、主基板31において分岐され、払出制御基板37にも供給される。なお、遊技制御用マイクロコンピュータ560が入力ポートを介して入力したクリア信号の状態を、出力ポートを介して払出制御基板37に出力してもよい。
この実施の形態では、演出制御基板80に搭載されている演出制御手段(演出制御用マイクロコンピュータで構成される。)が、中継基板77を介して遊技制御用マイクロコンピュータ560からの演出制御コマンドを受信し、飾り図柄を可変表示する可変表示装置9の表示制御等を行う。
また、図4に示すように、主基板31には、照合機365が接続されている。照合機365は、主基板31が正規の基板であるか否かを、主基板31に一意に付与されている基板ID(遊技制御用マイクロコンピュータ560固有のIDナンバ)により照合し、その照合結果を表示する機器である。すなわち、主基板31が備えるROM54には、主基板31自身に一意に与えられている基板IDが登録されている。また、照合機365には、主基板31に一意に付与されている基板IDがあらかじめ格納されている。照合機365は、主基板31から照合端子354(図5参照)を介して送られてきた基板IDと、自己が保存している主基板31の基板IDとを照合し、一致すれば照合OK側のランプを点灯させ、一致しなければ照合NG側のランプを点灯させる。
図5は、主基板31における回路構成および主基板31から演出制御基板80に送信される演出制御コマンドの信号線を示すブロック図である。図5に示すように、この実施の形態では、主基板31が搭載する遊技制御用マイクロコンピュータ560は、演出制御信号送信用の8本の信号線CD0〜CD7を用いて、演出制御コマンドを演出制御基板80に送信する。また、主基板31と演出制御基板80との間には、ストローブ信号を送受するための演出制御INT信号の信号線も配線されている。
主基板31には、図5に示すように、始動口スイッチ14aからの配線が接続されている。また、主基板31には、大入賞口である特別可変入賞球装置20や、その他の入賞口への遊技球の入賞等を検出するための各種スイッチ29a,30a,33a,39aからの配線も接続されている。さらに、主基板31には、可変入賞球装置15を開閉するソレノイド16、特別可変入賞球装置20を開閉するソレノイド21および大入賞口内の経路を切り換えるためのソレノイド21Aへの配線が接続されている。
主基板31は、遊技制御用マイクロコンピュータ560、入力ドライバ回路58、出力回路59、中断ボタン361および照合端子364を搭載する。遊技制御用マイクロコンピュータ560は、クロック回路501、システムリセット手段として機能するリセットコントローラ502、乱数回路503a,503b、ゲーム制御用のプログラム等を記憶するROM54、ワークメモリとして使用されるRAM55、プログラムに従って動作するCPU56、CPU56に割込要求信号(タイマ割込による割込要求信号)を送出するCTC504、払出制御基板37や演出制御基板80が備えるマイクロコンピュータおよびI/Oポート部57を内蔵する。
クロック回路501は、システムクロック信号を27(=128)分周して生成した所定の周期の基準クロック信号CLKを、各乱数回路503a,503bに出力する。リセットコントローラ502は、ローレベルの信号が一定期間入力されたとき、CPU56および各乱数回路503a,503bに所定の初期化信号を出力して、遊技制御用マイクロコンピュータ560をシステムリセットする。
また、この実施の形態では、図5に示すように、遊技制御用マイクロコンピュータ560は、発生可能な乱数の値の範囲が異なる2つの乱数回路503a,503bを搭載する。乱数回路503aは、12ビットの疑似乱数を発生する乱数回路(以下、12ビット乱数回路ともいう)である。12ビット乱数回路503aは、12ビットで発生できる範囲(すなわち、0から4095までの範囲)の値の乱数を発生する機能を備える。また、乱数回路503bは、16ビットの疑似乱数を発生する乱数回路(以下、16ビット乱数回路ともいう)である。16ビット乱数回路503bは、16ビットで発生できる範囲(すなわち、0から65535までの範囲)の値の乱数を発生する機能を備える。なお、この実施の形態では、遊技制御用マイクロコンピュータ560が2つの乱数回路を内蔵する場合を説明するが、遊技制御用マイクロコンピュータ560は、3以上の乱数回路を内蔵してもよい。また、この実施の形態では、12ビット乱数回路503aおよび16ビット乱数回路503bを包括的に表現する場合、または、12ビット乱数回路503aと16ビット乱数回路503bとのうちいずれかを指す場合に、乱数回路503という。
次に、乱数回路503の構成について説明する。図6は、乱数回路503の構成例を示すブロック図である。なお、この実施の形態において、12ビット乱数回路503aと16ビット乱数回路503bとの基本的な構成は同じである。図6に示すように、乱数回路503は、カウンタ521、比較器522、カウント値順列変更回路523、クロック信号出力回路524、カウント値更新信号出力回路525、乱数値読取信号出力回路526、乱数更新方式選択信号出力回路527、セレクタ528、乱数回路起動信号出力回路530、乱数値記憶回路531、反転回路532、ラッチ信号生成回路533およびタイマ回路534とを含む。
この実施の形態では、乱数回路503は、複数種類の識別情報の可変表示の表示結果を特定の表示結果とするか否か(例えば、特別図柄表示装置8の表示図柄の組み合わせを大当り図柄の組み合わせとするか否か)を判定するための大当り判定用の乱数を発生する。そして、遊技制御用マイクロコンピュータ560のCPU56は、乱数回路503が発生した乱数にもとづいて特定の表示結果とすると判定すると、遊技状態を遊技者にとって有利な特定遊技状態(例えば、大当り遊技状態)に移行させる。なお、この実施の形態では、確変とするか否かを決定するための確変決定用乱数や、特別図柄(大当り図柄)を決定する特別図柄決定用乱数など、大当り判定用以外の判定用乱数については、後述するようにソフトウェア乱数を用いる。
カウンタ521は、セレクタ528によって選択された所定の信号を入力し、セレクタ528から入力する信号に応答してカウント値Cを出力する。この場合、カウンタ521は、所定の初期値を入力し、カウント値Cを一定の規則に従って初期値から所定の最終値まで循環的に更新して出力する。また、カウンタ521は、カウント値Cを最終値まで更新すると、カウント値Cを最終値まで更新した旨を示す通知信号をCPU56に出力する。この実施の形態では、カウンタ521から通知信号が出力されると、CPU56によって初期値が更新される。
この実施の形態において、カウンタ521は、セレクタ528から信号を入力するごとに(セレクタ528からの信号における立ち上がりエッヂが入力されるごとに)、カウント値Cを「0」から「4095」まで1ずつカウントアップする。また、カウンタ521は、カウント値Cを「4095」までカウントアップすると、カウント値Cを最終値まで更新した旨を示す通知信号をCPU56に出力する。すると、CPU56は、カウンタ521から通知信号を入力し、初期値を更新する。そして、カウンタ521は、CPU56によって更新された初期値から「4095」まで、再びカウント値Cをカウントアップする。また、「4095」までカウントアップすると、カウンタ521は、再び「0」からカウントを開始する。そして、カウンタ521は、更新後の初期値の1つ前の値(最終値)までカウントアップすると、通知信号をCPU56に出力する。なお、この実施の形態では、比較器522は、後述するように、全てのカウント値を入力すると通知信号をカウンタ521に出力する。この場合、カウンタ521は、比較器522から通知信号を入力すると、カウント値をリセットして「0」にする。
なお、比較器522は、入力したカウント値が乱数最大値設定レジスタ535に設定されている乱数最大値より大きいか否かを判断し、カウント値が乱数最大値より大きい(乱数最大値を超えた)と判断すると、通知信号をカウンタ521に出力してもよい。この場合、例えば、比較器522は、カウント値が乱数最大値を超えたと判断すると、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力する前に、通知信号をカウンタ521に出力する。例えば、乱数最大値設定レジスタ535に乱数最大値「256」が設定されている場合を考える。この場合、カウンタ521が「0」から「256」までカウントアップし、さらにカウント値「257」を出力すると、比較器522は、入力したカウント値「257」が乱数最大値「256」を超えたと判断し、カウンタ521に通知信号を出力する。比較器522から通知信号を入力すると、カウンタ521は、クロック信号出力回路524からの乱数発生用クロック信号SI1の入力を待つことなく、カウント値を「258」に更新し出力する。以上の処理を繰り返し実行することによって、比較器522は、カウント値「257」から「4095」まで入力している間、カウント値が乱数最大値を超えていると判断して、繰り返しカウンタ521に通知信号を出力する。そして、カウンタ521は、比較器522から通知信号を入力している間、クロック信号出力回路524からの乱数発生用クロック信号SI1の入力を待つことなく、カウント値を繰り返し更新し出力する。そのようにすることによって、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力するまでの間に、「257」から「4095」までカウント値を高速にカウントアップさせるように制御し、「257」から「4095」までの乱数値を読み飛ばす(乱数値記憶回路531に記憶させない)ように制御する。
カウント値順列変更回路523は、カウント値順列変更レジスタ(RSC)536、更新規則選択レジスタ(RRC)542および更新規則メモリ543を含む。カウント値順列変更レジスタ536は、カウンタ521がカウントアップするカウント値Cの更新順である順列(初期値から最終値までの並び順)を変更させるためのカウント値順列変更データ「01h」を格納する。カウント値順列変更回路523は、カウント値順列変更レジスタ536に数値順列変更データ「01h」が格納されているとき、カウンタ521がカウントアップして更新するカウント値Cの順列を、カウント値順列変更データ「01h」が格納されていないときとは異なる順列に変更する。この場合、カウント値順列変更回路523は、数値順列変更データ「01h」が格納されているとき、カウント値の順列の変更に用いる更新規則を切り換える。また、カウント値の順列の変更に用いる更新規則を切り換えた後に、カウンタ521がカウント値の更新を開始すると、カウント値順列変更レジスタ536のカウント値順列変更データは、CPU56によって、「01h」から初期値である「0(=00h)」に戻される(クリアされる)。
なお、CPU56によってカウント値順列変更データをクリアするのでなく、乱数回路503側でカウント値順列変更データをクリアするようにしてもよい。例えば、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことにもとづいて、更新規則選択レジスタ(RRC)542にレジスタ値が設定されると、カウント値順列変更回路523は、カウント値順列変更レジスタ536のレジスタ値をクリアするようにしてもよい。
図7は、更新規則選択レジスタ542の例を示す説明図である。更新規則選択レジスタ542は、カウンタ521が出力するカウント値の並び順の並べ替え(順列の変更)に用いる更新規則を設定するレジスタである。この実施の形態では、更新規則選択レジスタ542にレジスタ値が設定されることによって、カウンタ521が出力するカウント値の順列の変更に用いる更新規則が設定される。図7に示すように、更新規則選択レジスタ542は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、更新規則選択レジスタ542は、ビット0〜ビット3が書込および読出ともに可能な状態に構成されている。また、更新規則選択レジスタ542は、ビット4〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、更新規則選択レジスタ542のビット4〜ビット7に値を書き込む制御を行っても無効とされ、ビット4〜ビット7から読み出す値は全て「0(=0000b)」である。
更新規則選択レジスタ542の値(レジスタ値)は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことに応じて、レジスタ値が「0(=00h)」から「15(=0Fh)」まで循環的に更新される。すなわち、カウント値順列変更レジスタ536にカウント値順列データ「01h」が書き込まれるごとに、更新規則選択レジスタ542のレジスタ値は、「0」から「1」ずつ加算され、「15」になると再び「0」に戻る。
図8は、更新規則メモリ543の例を示す説明図である。図8に示すように、更新規則メモリ543は、更新規則選択レジスタ542の値(レジスタ値)と、カウント値の更新規則とを対応付けて格納している。図8に示す例では、例えば、更新規則選択レジスタ542にレジスタ値1が設定されている場合、更新規則Bを用いて、カウンタ521が出力するカウント値の順列が変更されることが分かる。なお、図8において、更新規則Aは、カウンタ521がカウント値Cを更新する規則と同一の更新規則であり、レジスタ値「0」に対応づけて更新規則メモリ543に格納される。また、更新規則メモリ543には、カウンタ521がカウント値Cを更新する更新規則とは異なる更新規則B〜Pが、レジスタ値「1」〜「15」に対応づけて格納される。
カウント値順列変更回路523は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれている場合、まず、カウンタ521からカウント値の最終値「4095」が最初に入力されるまで、現在設定されている更新規則に従って、そのままカウント値を出力する。そして、カウント値順列変更回路523は、カウンタ521からカウント値の最終値「4095」を入力すると、カウント値の更新規則を変更する。なお、CPU56によって初期値が変更されている場合には、カウント値順列変更回路523は、カウンタ521から変更後の最終値(初期値の1つ前の値)まで入力すると、カウント値の更新規則を変更することになる。
カウント値順列変更回路523は、更新規則選択レジスタ542のレジスタ値に対応する更新規則を更新規則メモリ543から選択し、カウント値の順列の変更に用いる更新規則として設定する。また、カウント値順列変更回路523は、カウンタ521によって再び初期値「0」から順にカウント値の更新が開始されると、設定した更新規則に従って、カウント値の初期値から最終値までの順列を変更する。なお、CPU56によって初期値が変更されている場合には、カウント値順列変更回路523は、カウンタ521によって変更後の初期値から順にカウント値の更新が開始されると、設定した更新規則に従って、カウント値の初期値から最終値までの順列を変更することになる。そして、カウント値順列変更回路523は、変更した順列に従ってカウント値を出力する。
なお、この実施の形態では、後述する乱数最大値設定レジスタ535に乱数最大値が設定されていることによって、発生させる乱数の最大値が制限されている場合、カウント値順列変更回路523は、カウント値Cを乱数最大値以下に制限して順列を変更して出力する。例えば、乱数最大値設定レジスタ535に乱数最大値「256」が設定されているものとし、カウント値順列変更回路523が、更新規則Aから更新規則Bに変更して、カウント値の順列を変更するものとする。この場合、カウント値順列変更回路523は、比較器522の乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Bに従って、カウント値の順列を「256→255→・・・→0」に変更して出力する。
以上のように、カウント値順列変更回路523は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれている場合、更新規則を切り替えて用いることによって、カウント値Cの順列を変更して出力する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。
図9は、カウント値順列変更回路523が、カウンタ521が出力するカウント値の順列を変更する場合の例を示す説明図である。図9に示すように、CPU56は、所定のタイミングで、カウント値順列変更データ「01h」をカウント値順列変更レジスタ536に書き込む。すると、更新規則選択レジスタ542のレジスタ値が1加算される。例えば、更新規則選択レジスタ542のレジスタ値が「0」から「1」に更新される。レジスタ値が更新されると、カウント値順列変更回路523は、カウンタ521から最初にカウント値の最終値「4095」が入力されるまで、更新前のレジスタ値「0」に対応する「更新規則A」に従ってカウント値を更新して出力する。このとき、カウント値順列変更回路523は、更新規則Aに従って、「0→1→・・・→4095」の順列でカウント値を出力する。
カウンタ521からカウント値の最終値「4095」が入力されると、カウント値順列変更回路523は、更新規則メモリ543から、更新後のレジスタ値「1」に対応する「更新規則B」を選択して設定する。カウント値順列変更回路523は、カウンタ521から再び初期値「0」以降のカウント値の入力を開始すると、選択設定した「更新規則B」に従って、カウント値の順列を変更して出力する。本例では、カウント値順列変更回路523は、順列を「0→1→・・・→4095」から「4095→4094→・・・→0」に変更して、カウント値を出力する。
その後、カウント値順列変更レジスタ536は、後述するように、カウント値順列変更回路523が切り替え後の更新規則に従ってカウント値の更新動作を開始したことに応じてリセットされる。そして、次にカウント値順列変更データ「01h」がカウント値順列変更レジスタ536に書き込まれるまで、カウント値順列変更回路523は、「4095→4094→・・・→0」のままの順列で、カウント値を出力し続ける。
CPU56によってカウント値順列変更データ「01h」がカウント値順列変更レジスタ536に再度書き込まれると、カウント値順列変更レジスタ536のレジスタ値が「1」から「2」に更新される。そして、カウンタ521からカウント値の最終値「4095」を入力すると、カウント値順列変更回路523は、更新規則メモリ543から、レジスタ値「2」に対応する「更新規則C」を選択して設定する。カウント値順列変更回路523は、カウンタ521から再び初期値「0」以降のカウント値の入力を開始すると、選択設定した「更新規則C」に従って、カウント値の順列を更新して出力する。本例では、カウント値順列変更回路523は、順列を「4095→4094→・・・→0」から「1→3→…→4095→0→・・・→4094」に変更して、カウント値を出力する。
以上のように、カウント値順列変更レジスタ536をリセットした後、カウント値順列データ「01h」をカウント値順列変更レジスタ536に再度書き込むことによって、カウント値の順列をさらに変更することができる。
図10は、カウント値順列変更レジスタ536の例を示す説明図である。カウント値順列変更レジスタ536は、カウンタ521がカウントアップするカウント値の順列を変更させるためのカウント値順列変更データ「01h」を設定するレジスタである。図10に示すように、カウント値順列変更レジスタ536は、読出可能な8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、カウント値順列変更レジスタ536は、ビット0だけが書込および読出ともに可能な状態に構成されている。すなわち、カウント値順列変更レジスタ536は、ビット1〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、カウント値順列変更レジスタ536のビット1〜ビット7に値を書き込む制御を行っても無効とされ、ビット1〜ビット7から読み出す値は全て「0(=0000000b)」である。
なお、カウント値順列変更レジスタ536の値は、カウント値順列変更回路523が切り替え後の更新規則に従ってカウント値の更新動作を開始したことに応じて、CPU56によってリセットされる。この場合、CPU56は、カウント値順列変更レジスタ536に書き込まれている値を、カウント値順列変更データ「01h」から初期値である「0(=00h)」に戻す。
比較器522は、ランダムRの最大値(乱数最大値)を指定するための乱数最大値設定データを格納する乱数最大値設定レジスタ(RMX)535を備える。比較器522は、乱数最大値設定レジスタ535に格納されている乱数最大値設定データに示される乱数最大値に従って、カウンタ521が更新するカウント値の更新範囲を制限する。この実施の形態では、比較器522は、カウンタ521から入力するカウント値と乱数最大値設定レジスタ535に格納されている乱数最大値設定データ(例えば「00FFh」)に示される乱数最大値(例えば「256」)とを比較する。そして、比較器522は、入力したカウント値が乱数最大値以下であると判断すると、入力したカウント値を乱数値記憶回路531に出力する。
この実施の形態では、比較器522は、具体的には、以下のような制御を行う。比較器522は、カウント値の初期値更新の際に、CPU56からカウント値の初期値をもらい、初期値から乱数最大値までのカウント値の個数を求める。例えば、カウント値の初期値が「157」であり乱数最大値が「256」である場合、比較器522は、初期値から乱数最大値までのカウント値の個数を「100個」と求める。また、比較器522は、カウント値順列変更回路523からカウント値を入力するに従って、初期値からカウント値をいくつ入力したかをカウントアップする。初期値からカウント値を入力した回数が「100回」に達すると、比較器522は、初期値「157」から最大値「256」までの全てのカウント値を入力したと判断する。そして、比較器522は、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。カウント値の個数で判断することによって、カウント値順列変更回路523によってカウント値の順列が変更されている場合であっても、比較器522は、カウント値の更新範囲を乱数最大値以下に制限し、全てのカウント値を入力した際にカウンタ521に通知信号を出力することができる。
カウント値の更新範囲を比較器522が制限する動作について説明する。なお、本例では、カウント値順列変更回路523が更新規則Aを選択し、乱数最大値設定レジスタ535に乱数最大値「256」が設定されている場合を説明する。
カウンタ521が「0」から「256」までカウント値を更新している間、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Aに従って、「0」から「256」までのカウント値をそのまま比較器522に出力する。この場合、カウント値順列変更回路523は、比較器522から乱数最大値「256」の値をもらい、カウンタ521から入力するカウント値が乱数最大値より大きいか否かを判断し、更新規則が変更されているとき(例えば、更新規則B)であっても、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、「257」から「4095」までのカウント値を比較器522に出力しない。カウンタ521は、例えば、初期値が「0」と設定されているときに、最終値「256」までカウント値を更新すると、通知信号をCPU56に出力する。通知信号を出力すると、CPU56によって、カウンタ521のカウント値の初期値が変更される。本例では、CPU56によって、初期値が「50」に変更されるものとする。
なお、カウント値が乱数最大値「256」より大きいか否かをカウント値順列変更回路523が判断するのでなく、比較器522が判定するようにしてもよい。この場合、例えば、比較器522は、カウント値が乱数最大値設定レジスタ535に設定されている乱数最大値より大きいか否かを判断し、カウント値が乱数最大値より大きいと判断すると、通知信号をカウンタ521に出力する。そして、比較器522は、カウント値が乱数最大値を超えたと判断すると、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力する前に、通知信号をカウンタ521に出力する。そのようにすることによって、比較器522は、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力するまでの間に、「257」から「4095」までカウント値を高速にカウントアップさせるようにカウンタ521を制御する。そのようにすることによって、カウント値順列変更回路523からの値が「257」未満のときだけカウント値を乱数値記憶回路531に出力するようにし、カウント値順列変更回路523からの値が「257」以上のときにはカウント値を高速で更新させるようにすることができる。
更新規則Aにもとづいて、カウント値順列変更回路523から、「0」から「255」までカウント値を入力している間、比較器522は、入力するカウント値が乱数最大値「256」以下であるので、入力したカウント値をそのまま乱数値記憶回路531に出力する。次に、カウント値順列変更回路523から入力するカウント値が「256」に達すると、比較器522は、入力したカウント値を乱数値記憶回路531に出力するとともに、初期値から最大値までの全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。具体的には、比較器522は、カウント値の初期値変更の際に、CPU56からカウント値の初期値(本例では、「0」)をもらい、初期値「0」から乱数最大値(本例では、「256」)までのカウント値の個数(本例では、「257個」)を求める。そして、カウント値順列変更回路523から入力したカウント値の個数が257個に達すると、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。なお、本例では、CPU56によって初期値が「50」に変更されるので、カウンタ521は、比較器522から通知信号を入力しても、カウント値をリセットするとなく、変更後の初期値「50」からカウント値の更新を行う。
カウンタ521が変更後の初期値「50」から「256」までカウント値を更新している間、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Aに従って、「50」から「256」までのカウント値をそのまま比較器522に出力する。また、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、「257」から「4095」までのカウント値を比較器522に出力せず、カウンタ521の更新するカウント値が1周したとき(257回更新したとき)に、カウント値順列変更レジスタ536にカウント値順列変更データが書き込まれた場合には、カウント値順列変更回路523は、カウント値の順列を変更して出力する。例えば、更新規則が更新規則Bに変更された場合、カウント値順列変更回路523は、カウント値の順列を「256→255→・・・→50」に変更して出力する。
カウント値順列変更回路523から、「256」から「50」までカウント値を入力している間、比較器522は、入力したカウント値をそのまま乱数値記憶回路531に出力する。次に、カウント値順列変更回路523から入力するカウント値が「50」に達すると、比較器522は、入力したカウント値を乱数値記憶回路531に出力するとともに、初期値から最大値までの全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。具体的には、比較器522は、カウント値の初期値変更の際に、CPU56からカウント値の初期値(本例では、「50」)をもらい、初期値「50」から乱数最大値(本例では、「256」)までのカウント値の個数(本例では、「207個」)を求める。そして、カウント値順列変更回路523から入力したカウント値の個数が207個に達すると、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。
なお、カウント値順列変更回路523がカウント値の順列を変更した場合であっても、比較器522は、カウント値の個数が207個に達すると、通知信号をカウンタ521に出力する。そのようにすることによって、カウント値の順列が変更された場合であっても、初期値「50」から最大値「256」までの全てのカウント値を入力したことにもとづいて、通知信号をカウンタ521に出力できる。
比較器522から通知信号を入力すると、カウンタ521は、カウント値の初期値をリセットし「0」に戻す。そして、カウンタ521は、「0」からカウント値の更新を行う。カウンタ521の値が「0」から再び更新がされると、カウンタ521からのカウント値にもとづいて、カウント値順列変更回路523は「49」〜「0」までのカウント値を比較器522に出力し、比較器522はカウント値順列変更回路523からのカウント値の入力にもとづいて乱数値記憶回路531にカウント値を出力する。そして、カウンタ521は、最終値(本例では、「49」)までカウント値を更新すると、通知信号をCPU56に出力する。通知信号を出力すると、CPU56によって、カウンタ521のカウント値の初期値が再び変更される。
以上のような動作を繰り返すことにより、比較器522は、カウンタ521に、「0」から乱数最大値「256」まで連続的にカウント値をカウントアップさせ、「0」から「256」までの値を乱数値記憶回路531にランダムR(乱数値)として記憶させる。すなわち、比較器522は、カウント値の更新範囲を乱数最大値「256」以下に制限して、カウンタ521にカウント値を更新させる。
図11は、乱数最大値設定レジスタ535の例を示す説明図である。図11(a)は、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535の例を示す。また、図11(b)は、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535の例を示す。まず、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535について説明する。図11(a)に示すように、12ビット乱数回路503aにおいて、乱数最大値設定レジスタ535は、16ビットレジスタであり、初期値が「4095(=0FFFh)」に設定されている。乱数最大値設定レジスタ535は、ビット0〜ビット11が書込および読出ともに可能な状態に構成されている。また、乱数最大値設定レジスタ535は、ビット12〜ビット15が書込および読出ともに不可能な状態に構成されている。したがって、12ビット乱数回路503aにおいて、乱数最大値設定レジスタ535のビット12〜ビット15に値を書き込む制御を行っても無効とされ、ビット12〜ビット15から読み出す値は全て「0(=0000b)」である。
また、乱数最大値設定レジスタ535に設定される乱数最大値は、所定の下限値が定められている。この実施の形態では、乱数最大値設定レジスタ535に下限値「256」より小さい値を指定する乱数最大値設定データ「0000h」〜「00FEh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「4095」を指定する乱数最大値設定データ「0FFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「256」から「4095」までであり、CPU56は、下限値「256」より小さい値が設定されていると判断すると、乱数最大値を所定値「4095」に設定しなおす。なお、CPU56は、リセットコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ535を書込不可能に制御する。なお、CPU56により書込不可能に制御するのでなく、乱数最大値設定レジスタ535は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
次に、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535について説明する。図11(b)に示すように、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、16ビットレジスタであり、初期値が「65535(=FFFFh)」に設定されている。また、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、ビット0〜ビット15の全てのビットが書込および読出ともに可能な状態に構成されている。
また、乱数最大値設定レジスタ535に下限値「512」より小さい値を指定する乱数最大値設定データ「0000h」〜「00FEh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「65535」を指定する乱数最大値設定データ「FFFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「512」から「65535」までであり、CPU56は、下限値「512」より小さい値が設定されていると判断すると、乱数最大値を所定値「65535」に設定しなおす。なお、CPU56は、リセットコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ535を書込不可能に制御する。
クロック信号出力回路524は、セレクタ528および反転回路532に出力するクロック信号の周期(すなわち、カウント値の更新周期)を指定するための周期設定データを格納する周期設定レジスタ(RPS)537を備える。クロック信号出力回路524は、周期設定レジスタ537に格納されている周期設定データに基づいて、遊技制御用マイクロコンピュータ560が搭載するクロック回路501から入力する基準クロック信号CLKを分周して、乱数回路503内部で乱数値の生成に用いるクロック信号(乱数発生用クロック信号SI1)を生成する。そのようにすることによって、クロック信号出力回路524は、クロック信号を所定回数入力したことを条件に、カウント値Cを更新させるための乱数発生用クロック信号SI1をカウンタ521に出力するように動作する。なお、周期設定データとは、クロック回路501から入力した基準クロック信号CLKを何分周させるかを設定するためのデータである。また、クロック出力回路524は、生成した乱数発生用クロック信号SI1をセレクタ528および反転回路532に出力する。例えば、周期設定レジスタ537に周期設定データ「0Fh(=16)」が書き込まれている場合、クロック信号出力回路524は、クロック回路501から入力する基準クロック信号CLKを16分周して乱数発生用クロック信号SI1を生成する。この場合、クロック信号出力回路524が生成する乱数発生用クロック信号SI1の周期は、「システムクロック信号の周期×128×16」となる。
図12は、周期設定レジスタ537の例を示す説明図である。図12に示すように、周期設定レジスタ537は、8ビットレジスタであり、初期値が「256(=FFh)」に設定されている。また、周期設定レジスタ537は、書込および読出ともに可能な状態に構成されている。
また、周期設定レジスタ537に設定される周期設定データの値は、所定の下限値が定められている。この実施の形態では、周期設定レジスタ537に下限値「システムクロック信号の周期×128×7」より小さい値を指定する周期設定データ「00h〜06h」が書き込まれた場合、CPU56は、周期設定レジスタ537に下限値「システムクロック信号の周期×128×7」を指定する周期設定データ「07h」を設定しなおす。すなわち、周期設定レジスタ537に設定可能な周期は「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」までであり、CPU56は、下限値より小さい値が設定されていると判断すると、周期設定データを設定しなおす。なお、CPU56は、リセットコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、周期設定データが書き込まれた周期設定レジスタ537を書込不可能に制御する。なお、CPU56により書込不可能に制御するのでなく、周期設定レジスタ537は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
なお、周期設定レジスタ537に下限値としての周期設定データを設定することなく、設定された周期設定データに基づいて、例えばクロック信号出力回路524が基準クロック信号CLKをそのままカウンタ521および反転回路532に出力するようにしてもよい。この場合、CPU56は、周期設定レジスタ537に設定される周期設定データの値を下限値と比較して設定しなおす処理を行う必要がなくなる。また、カウンタ521は、クロック信号出力回路524から基準クロック信号CLKを入力する毎にカウント値Cを更新することになる。
カウント値更新信号出力回路525は、カウント値更新データ「01h」を格納するカウント値更新レジスタ(RGN)538を備える。カウント値更新データとは、カウント値の更新を要求するためのデータである。カウント値更新信号出力回路525は、カウント値更新レジスタ538にカウント値更新データ「01h」が書き込まれたことに応じて、カウント値更新信号SI3をセレクタ528に出力する。
図13は、カウント値更新レジスタ538の例を示す説明図である。図13に示すように、カウント値更新レジスタ538は、読出不能な8ビットレジスタであり、ビット0のみが書込可能な状態に構成されている。したがって、カウント値更新レジスタ538のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数値読取信号出力回路526は、乱数値取込データ「01h」を格納する乱数値取込レジスタ(RLT)539を備える。乱数値取込データとは、乱数値記憶回路531へのカウント値の取込を要求するためのデータである。乱数値読取信号出力回路526は、乱数値取込レジスタ539に乱数値取込データ「01h」が書き込まれたことに応じて、乱数値の読み取りを要求するための乱数値読取信号をラッチ信号生成回路533に出力する。
図14は、乱数値取込レジスタ539の例を示す説明図である。図14に示すように、乱数値取込レジスタ539は、読出不能な8ビットレジスタである。また、乱数値取込レジスタ539は、ビット0だけが書込可能な状態に構成されている。すなわち、乱数値取込レジスタ539のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数更新方式選択信号出力回路527は、乱数更新方式選択データを格納する乱数更新方式選択レジスタ(RTS)540を備える。乱数更新方式選択データとは、ランダムRの値を更新する方式である各乱数更新方式のうち、いずれかの乱数更新方式を指定するためのデータである。乱数更新方式選択信号出力回路527は、乱数更新方式選択レジスタ540に乱数更新方式選択データが書き込まれたことに応じて、書き込まれた乱数更新方式選択データにより指定される乱数更新方式に対応する乱数更新方式選択信号を、セレクタ528およびラッチ信号生成回路533に出力する。
図15(A)は、乱数更新方式選択レジスタ540の例を示す説明図である。図15(A)に示すように、乱数更新方式選択レジスタ540は、8ビットレジスタであり、初期値が「00h」に設定されている。また、乱数更新方式選択レジスタ540は、ビット0〜ビット1が書込および読出ともに可能な状態に構成されている。また、乱数更新方式選択レジスタ540は、ビット2〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、乱数更新方式選択レジスタ540のビット2〜ビット7に値を書き込む制御を行っても無効とされ、ビット2〜ビット7から読み出す値は全て「0(=000000b)」である。
図15(B)は、乱数更新方式選択レジスタ540に書き込まれる乱数更新方式選択データの一例の説明図である。図15(B)に示すように、乱数更新方式選択データは、2ビットのデータから構成される。乱数更新方式選択データ「01b」は、第1の乱数更新方式を指定するために用いられる。また、乱数更新方式選択データ「10b」は、第2の乱数更新方式を指定するために用いられる。なお、この実施の形態では、第1の乱数更新方式とは、カウント値更新信号出力回路525からカウント値更新信号SI3が出力されたことをトリガとして、カウント値を更新する方式である。また、第2の乱数更新方式とは、クロック信号出力回路524から乱数発生用クロック信号SI1が出力されたことをトリガとして、カウント値を更新する方式である。また、乱数更新方式選択データ「01b」または「10b」が乱数更新方式選択レジスタ540に書き込まれた場合、乱数回路503は起動可能な状態となる。一方、乱数更新方式選択データ「00b」または「11b」が乱数更新方式選択レジスタ540に書き込まれた場合、乱数回路503は起動不能な状態となる。
セレクタ528は、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3、またはクロック信号出力回路524から出力される乱数発生用クロック信号SI1のいずれかを選択してカウンタ521に出力する。セレクタ528は、乱数更新方式選択信号出力回路527から第1の乱数更新方式に対応する乱数更新方式選択信号(第1の乱数更新方式選択信号ともいう)が入力されると、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3を選択してカウンタ521に出力する。一方、セレクタ528は、乱数更新方式選択信号出力回路527から第2の乱数更新方式に対応する乱数更新方式選択信号(第2の乱数更新方式選択信号ともいう)が入力されると、クロック信号出力回路524から出力される乱数発生用クロック信号SI1を選択してカウンタ521に出力する。なお、セレクタ528は、乱数更新方式選択信号出力回路527から第1の更新方式選択信号が入力されると、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3に応じて、クロック信号出力回路524から出力される乱数発生用クロック信号SI1に同期した数値データの更新を指示する数値更新指示信号を、カウンタ521に出力してもよい。
乱数回路起動信号出力回路530は、乱数回路起動データ「80h」を格納する乱数回路起動レジスタ(RST)541を備える。乱数回路起動データとは、乱数回路503の起動を要求するためのデータである。乱数回路起動信号出力回路530は、乱数回路起動レジスタ541に乱数回路起動データ「80h」が書き込まれると、所定の乱数回路起動信号をカウンタ521およびクロック信号出力回路537に出力し、カウンタ521およびクロック信号出力回路524をオンにさせる。そして、カウンタ521によるカウント値の更新動作とクロック信号出力回路524による内部クロック信号の出力動作とを開始させることによって、乱数回路503を起動させる。
図16は、乱数回路起動レジスタ541の例を示す説明図である。図16に示すように、乱数回路起動レジスタ541は、8ビットレジスタであり、初期値が「00h」に設定されている。乱数回路起動レジスタ541は、ビット7だけが書込および読出ともに可能な状態に構成されている。また、乱数回路起動レジスタ541は、ビット0〜ビット6が書込および読出ともに不可能な状態に構成されている。すなわち、乱数回路起動レジスタ541のビット0〜ビット6に値を書き込む制御を行っても無効とされ、ビット0〜ビット6から読み出す値は全て「0(=000000b)」である。
乱数値記憶回路531は、例えば16ビットレジスタであり、遊技制御処理における大当り判定において用いられる乱数であるランダムRの値を格納する。乱数値記憶回路531は、ラッチ信号生成回路533からラッチ信号SLを入力したことに応じて、カウンタ521から比較器522を介して出力されるカウント値CをランダムRの値として格納する。そして、乱数値記憶回路531は、ラッチ信号生成回路533からラッチ信号SLを入力するごとに、カウンタ521が更新するカウント値Cを読み込んでランダムRの値を記憶する。
図17は、乱数値記憶回路531の一構成例を示す回路図である。乱数値記憶回路531は、図17に示すように、2個のAND回路201,203と、2個のNOT回路202,204と、16個のフリップフロップ回路2101〜2116と、16個のOR回路2201〜2216とを含む。
図17に示すように、AND回路201の入力端子は、ラッチ信号生成回路533の出力端子とNOT回路204の出力端子とに接続され、出力端子は、NOT回路202の入力端子とフリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16とに接続されている。NOT回路202の入力端子は、AND回路201の出力端子に接続され、出力端子は、AND回路203の一方の入力端子に接続されている。
AND回路203の入力端子は、NOT回路202の出力端子と遊技制御用マイクロコンピュータ560が搭載するCPU56とに接続され、出力端子は、NOT回路204の入力端子に接続されている。NOT回路204の入力端子は、AND回路203の出力端子に接続され、出力端子は、AND回路201の一方の入力端子とOR回路2201〜2216の一方の入力端子とに接続されている。
フリップフロップ回路2101〜2116の入力端子D1〜D16は、比較器522の出力端子に接続されている。フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16は、AND回路201の出力端子に接続され、出力端子Q1〜Q16は、OR回路2201〜2216の他方の入力端子に接続されている。
OR回路2201〜2216の入力端子は、NOT回路204の出力端子とフリップフロップ回路2101〜2116の出力端子とに接続され、出力端子は、遊技制御用マイクロコンピュータ560が搭載するCPU56に接続されている。
乱数値記憶回路531の動作について説明する。図18は、乱数値記憶回路531に各信号が入力されるタイミング、および乱数値記憶回路531が各信号を出力するタイミングを示すタイミングチャートである。図18に示すように、遊技制御用マイクロコンピュータ560が搭載するCPU56から出力制御信号SC(本例では、ハイレベル信号)が入力されていない場合(すなわち、AND回路203の一方の入力端子への入力がローレベルの場合)、ラッチ信号生成回路533からラッチ信号SLが入力されると(図18に示す例では、タイミングT1,T2,T7のとき)、AND回路201の2つの入力端子への入力はともにハイレベルとなる。そのため、AND回路201の出力端子から出力される信号SRはハイレベルとなる。そして、AND回路201から出力された信号SRは、フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16に入力される。
フリップフロップ回路2101〜2116は、クロック端子Clk1〜Clk16から入力される信号SRの立ち上がりエッヂに応答して、比較器522から入力端子D1〜D16を介して入力されるカウント値CのビットデータC1〜C16を乱数値のビットデータR1〜R16としてラッチして記憶する。また、フリップフロップ回路2101〜2116は、記憶するランダムRのビットデータR1〜R16を出力端子Q1〜Q16から出力する。
出力制御信号SCが入力されていない場合(図18に示す例では、タイミングT3までの期間およびタイミングT6以降の期間)、AND回路203の一方の入力端子への入力がローレベルとなるので、AND回路203の出力端子から出力される信号SGはローレベルとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ハイレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からハイレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がハイレベルとなるので、他方の入力端子に入力される信号がハイレベルであるかローレベルであるかに関わらず、OR回路2201〜2216はハイレベルの信号を出力する。すなわち、入力されるランダムRのビットデータR1〜R16の値が「0」であるか「1」であるかに関わらず、OR回路2201〜2216から出力される信号SO1〜SO16は、全てハイレベル(「1」)となる。そのようにすることによって、乱数値記憶回路531から出力される値は、常に「65535(=1111111111111111b)」となり、乱数値記憶回路531からランダムRを読み出すことができない状態となる。すなわち、乱数値記憶回路531から乱数を読み出そうとしても、乱数値記憶回路531から常に同じ値「65535」しか読み出せない状態となり、出力制御信号SCが入力されていない場合、乱数値記憶回路531は、読出不能(ディセイブル)状態となる。なお、16ビット乱数回路503bを用いる場合、乱数値としての値「65535」が用いられる可能性がある。この場合、遊技制御用マイクロコンピュータ560は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図40に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「ハズレ」と判定するように設定しておけばよい。
ラッチ信号生成回路533からラッチ信号SLが入力されていないときに、CPU56から出力制御信号SCが入力されると(図18に示す例では、タイミングT4からタイミングT6までの期間)、AND回路203の2つの入力端子への入力がともにハイレベルとなるので、AND回路203の出力端子から出力される信号SGはハイレベルとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ローレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からローレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がローレベルとなるので、他方の入力端子に入力される信号がハイレベルの場合、OR回路2201〜2216の出力端子からハイレベルの信号が出力される。また、OR回路2201〜2216の他方の入力端子に入力される信号がローレベルの場合、OR回路2201〜2216からローレベルの信号が出力される。すなわち、OR回路2201〜2216の他方の入力端子に入力されるランダムRのビットデータR1〜R16の値は、OR回路2201〜2216の出力端子からそのまま(すなわち、ビットデータR1〜R16の値が「1」のときは「1」が、「0」のときは「0」)出力される。そのようにすることによって、乱数値記憶回路531からのランダムRの読出が可能となる。すなわち、出力制御信号SCが入力されている場合、乱数値記憶回路531は、読出可能(イネイブル)状態となる。
ただし、CPU56から出力制御信号SCが入力される前に、ラッチ信号生成回路533からラッチ信号SLが入力されている場合、AND回路203の一方の入力端子への入力がローレベルとなるので、ラッチ信号SLが入力されている状態のままで、出力制御信号SCが入力されても(図18に示す例では、タイミングT3からタイミングT4の期間)、AND回路203の出力端子から出力される信号SGはローレベルのままとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ハイレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からハイレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がハイレベルとなるので、他方の入力端子に入力される信号がハイレベルであるかローレベルであるかに関わらず、OR回路2201〜2216から出力される信号SO1〜SO16は全てハイレベルとなる。そして、出力制御信号SCが入力されているにも関わらず、乱数値記憶回路531からランダムRを読み出すことができない状態のままとなる。すなわち、ラッチ信号SLが入力されている場合、乱数値記憶回路531は、出力制御信号SCを受信不可能な状態となる。なお、16ビット乱数回路503bを用いる場合、乱数値としての値「65535」が用いられる可能性がある。この場合、遊技制御用マイクロコンピュータ560は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図27に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「ハズレ」と判定するように設定しておけばよい。
また、ラッチ信号生成回路533からラッチ信号SLが入力される前に、CPU56から出力制御信号SCが入力されている場合、AND回路201の一方の入力端子への入力がローレベルとなるので、出力制御信号SCが入力されているままの状態で、ラッチ信号SLが入力されても(図18に示す例では、タイミングT5)、AND回路201の出力端子から出力される信号SRはローレベルのままとなる。そのため、フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16に入力される信号SRは、ローレベルからハイレベルに立ち上がらず、フリップフロップ回路2101〜2116に格納されているランダムRのビットデータR1〜R16は、ラッチ信号SLが入力されているにも関わらず、記憶される乱数は更新されない。すなわち、出力制御信号SCが入力されている場合、乱数値記憶回路531は、ラッチ信号SLを受信不可能な状態となる。
反転回路532は、クロック信号出力回路524から入力する乱数発生用クロック信号SI1における信号レベルを反転させることによって、クロック信号の極性を反転させた反転クロック信号SI2を生成する。また、反転回路532は、生成した反転クロック信号SI2をラッチ信号生成回路533に出力する。
ラッチ信号生成回路533は、セレクタおよびフリップフロップ回路等を用いて構成される。ラッチ信号生成回路533は、乱数値読取信号出力回路526からの乱数値読取信号と反転回路532からの反転クロック信号SI2とを入力し、乱数値記憶回路531に乱数値を記憶させるためのラッチ信号SLを出力する。また、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527からの乱数更新方式選択信号によって指定された乱数値更新方式に応じて、ラッチ信号SLを出力する。この場合、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第1の乱数更新方式選択信号が入力された場合、反転回路532から出力される反転クロック信号SI2を選択し、ラッチ信号SLとして乱数値記憶回路531に出力する。一方、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力された場合、乱数値読取信号出力回路526から出力される乱数値読取信号を、反転回路532から出力される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SLとして乱数値記憶回路531に出力する。
タイマ回路534は、始動口14への遊技球の入賞を検出した旨の入賞検出信号SSを始動口スイッチ14aから入力する。また、タイマ回路534は、始動口スイッチ14aから入賞検出信号SSが継続して入力されている時間を計測する。そして、タイマ回路534は、計測時間が所定期間(例えば、3ms)になると、乱数値読取信号出力回路526の乱数値取込レジスタ539に乱数値取込データ「01h」を書き込む。例えば、タイマ回路534は、ハイレベルの信号が入力されたことに応じて起動するアップカウンタまたはダウンカウンタによって構成される。タイマ回路534は、始動口スイッチ14aからの入力がハイレベルとなっている間(すなわち、入賞検出信号SSが継続して入力されている間)、クロック回路501から順次入力する基準クロック信号CLKをアップカウントまたはダウンカウントする。そして、タイマ回路534は、アップカウントまたはダウンカウントするカウント値が3msに対応する値になると、始動口スイッチ14aから入賞検出信号SSが入力されたと判断して、乱数値取込データ「01h」を乱数値取込レジスタ539に書き込む。
図19は、遊技制御用マイクロコンピュータ560における記憶領域のアドレスマップの一例を示す説明図である。図19に示すように、遊技制御用マイクロコンピュータ560の記憶領域のうち、0000h番地〜1FFFh番地の領域は、ROM54に割り当てられている。また、7E00h番地〜7FFFh番地の領域は、RAM55に割り当てられている。さらに、FD00h番地〜FE00h番地の領域は、乱数最大値設定レジスタ535等の内蔵レジスタに割り当てられている。
また、図19に示すように、ROM54に割り当てられている0000h番地〜1FFFh番地の領域は、ユーザプログラムエリアとユーザプログラム管理エリアとを含む。0000h番地〜1F7Fh番地の領域のユーザプログラムエリアには、ユーザ(例えば、遊技機の製作者)により予め作成されたプログラム(ユーザプログラム)550が記憶される。また、1F80h番地〜1FFFh番地の領域のユーザプログラム管理エリアには、CPU56がユーザプログラム550を実行するために必要となるデータ(ユーザプログラム実行データ)が記憶される。また、RAM55に割り当てられている7E00h番地〜7FFFh番地の領域のうち、7E00h番地〜7EFFh番地の領域は未使用領域であり、7F00h番地〜7FFFh番地の領域はワークエリアとして用いられる。
図20は、ユーザプログラム管理エリアにおけるアドレスマップの一例を示す説明図である。図20に示すように、1F97h番地の領域には、乱数回路503のカウンタ521に入力される初期値を変更するための方式である初期値変更方式のうち、ユーザによって選択された初期値変更方式を指定するための初期値変更方式設定データが記憶される。また、1F98h番地および1F99h番地の領域には、RAM55に割り当てられた7F00h番地〜7FFFh番地のうち、ユーザによって予め指定されたRAM55における番地(指定RAM番地)を特定するためのRAM番地データが記憶される。この場合、指定RAM番地を示す値のうち、指定RAM番地の下位の値が1F98h番地に記憶され、指定RAM番地の上位の値が1F99h番地に記憶される。
図21は、初期値変更方式設定データの一例を示す説明図である。図21に示すように、初期値変更データは、8ビットのデータから構成される。初期値変更データ「00h」は、初期値変更方式として、初期値を変更しないことを指定するデータである。この実施の形態では、初期値変更データ「00h」が設定されている場合、乱数回路503のカウンタ521は、予め定められた初期値「0」から所定の最終値までカウント値を更新することになる。また、初期値変更データ「01h」は、初期値変更方式として、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560を識別するためのIDナンバにもとづく値に変更することを指定するデータである。この実施の形態では、初期値変更データ「01h」が設定されている場合、カウンタ521が更新するカウンタ値の初期値が「0」からIDナンバにもとづく値に変更され、カウンタ521は、変更後の初期値から所定の最終値までカウント値を更新することになる。
ユーザプログラムエリアに記憶されるユーザプログラム550について説明する。図22は、ユーザプログラム550の構成例を示す説明図である。図22に示すように、この実施の形態では、ユーザプログラム550は、複数種類のプログラムモジュールから構成される乱数回路設定プログラム551と、表示結果決定プログラム552と、カウント値順列変更プログラム554と、乱数値更新プログラム555とを含む。
乱数回路設定プログラム551は、乱数回路503にランダムRの値を更新させるための初期設定を行う乱数回路設定処理を実行させるためのプログラムである。すなわち、CPU56は、乱数回路設定プログラム551に従って処理を実行することにより、乱数回路設定手段として機能する。
図23は、乱数回路設定プログラム551の構成例を示す説明図である。図23に示すように、乱数回路設定プログラム551は、複数種類のプログラムモジュールとして、乱数最大値設定モジュール551aと、乱数更新方式選択モジュール551bと、周期設定モジュール551cと、乱数回路起動モジュール551dと、初期値変更モジュール551eと、乱数回路選択モジュール551fとを含む。
乱数最大値設定モジュール551aは、ユーザ(例えば、遊技機の製作者)によって予め設定されたランダムRの最大値を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、乱数最大値設定モジュール551aに従って処理を実行することによって、ユーザによって予め設定されたランダムRの最大値を指定する乱数最大値設定データを、乱数最大値設定レジスタ535に書き込む。そのようにすることによって、CPU56は、ユーザによって予め設定されたランダムRの最大値を乱数回路503に設定する。例えば、ユーザによってランダムRの最大値として予め「255」が設定された場合、CPU56は、乱数最大値設定レジスタ535に乱数最大値設定データ「00FFh」を書き込んで、ランダムRの最大値「255」を乱数回路503に設定する。
乱数更新方式選択モジュール551bは、ユーザによって選択された乱数更新方式(第1の乱数更新方式または第2の乱数更新方式)を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、乱数更新方式選択モジュール551bに従って処理を実行することによって、ユーザによって選択された乱数更新方式を指定する乱数更新方式選択データ「01b」または「10b」を乱数更新方式選択レジスタ540に書き込む。そのようにすることによって、CPU56は、ユーザによって選択された乱数更新方式を乱数回路503に設定する。よって、遊技制御用マイクロコンピュータ560は、第1の乱数更新方式又は第2の乱数更新方式のうちのいずれかを、乱数回路503が乱数更新に用いる乱数更新方式として選択する機能を備える。
周期設定モジュール551cは、ユーザによって予め設定された内部クロック信号の周期(すなわち、クロック信号出力回路524がセレクタ528および反転回路532にクロック信号を出力する周期)を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、周期設定モジュール551cに従って処理を実行することによって、ユーザによって予め設定された内部クロック信号の周期を指定するための周期設定データを周期設定レジスタ537に書き込む。そのようにすることによって、CPU56は、ユーザによって予め設定された内部クロック信号の周期を乱数回路503に設定する。例えば、ユーザによって内部クロック信号の周期が予め「システムクロック信号の周期×128×16」と設定された場合、CPU56は、周期設定レジスタ537に周期設定データ「0Fh」を書き込んで、内部クロック信号の周期「システムクロック信号の周期×128×16」を乱数回路503に設定する。
乱数回路起動モジュール551dは、乱数回路503を起動させるためのプログラムモジュールである。CPU56は、乱数回路起動モジュール551dに従って処理を実行することによって、乱数回路起動データ「80h」を乱数回路起動レジスタ541に書き込むことにより、乱数回路503を起動させる。
初期値変更モジュール551eは、カウンタ521が更新するカウント値の初期値を変更させるためのプログラムモジュールである。CPU56は、初期値変更モジュール551eに従って処理を実行することによって、初期値変更手段として機能する。CPU56は、初期値変更モジュール551eを実行して、ユーザによって選択された初期値変更方式によって、カウンタ521が更新するカウント値の初期値を変更させる。そのようにすることによって、遊技制御用マイクロコンピュータ560は、初期値変更方式を選択する機能を備える。
この実施の形態では、ユーザプログラム管理エリアの1F97h番地の領域に初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、カウント値の初期値を、遊技制御用マイクロコンピュータ560毎に付与された固有のIDナンバにもとづいて算出された値に変更させる。
例えば、遊技制御用マイクロコンピュータ560は、RAM55の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とを予め対応付けて記憶している。この場合、例えば、遊技制御用マイクロコンピュータ560のIDナンバが「100」であるとすると、IDナンバ「100」に所定値「50」を加算して求めた演算値「150」を、予めIDナンバに対応付けて記憶している。また、例えば、IDナンバ「100」に所定値「50」を減算して求めた演算値「50」を、予めIDナンバに対応付けて記憶している。また、例えば、予めIDナンバに対応づけて所定値だけを記憶していてもよい。そして、遊技制御用マイクロコンピュータ560は、予め記憶する所定値(例えば、「50」)にIDナンバ(例えば、「100」を加算して求めた値「150」を、カウント値の初期値としてもよい。また、遊技制御用マイクロコンピュータ560は、予め記憶する所定値(例えば、「50」)をIDナンバ(例えば、「100」)から減算して求めた値「50」を、カウント値の初期値としてもよい。
そして、初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、予め記憶するIDナンバにもとづく演算値にカウント値の初期値を変更させる。そのようにすれば、乱数回路503が発生する乱数のランダム性をより向上させることができ、遊技制御用マイクロコンピュータ560のIDナンバを見ただけでは乱数の初期値を認識しにくくすることができる。そのため、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、大当り状態への移行条件を不正に成立させられてしまうことをより確実に防止することができ、セキュリティ性を向上させることができる。
また、例えば、初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバに所定値を加算して)求めた演算値にカウント値の初期値を変更させる。この場合、例えば、CPU56は、乱数を用いてランダムに変化させた値をIDナンバと演算することによって、演算に用いる値をランダムに更新し初期値を求めてもよい。そのようにすれば、乱数回路503が発生する乱数のランダム性をより向上させることができる。
乱数回路選択モジュール551fは、遊技制御用マイクロコンピュータ560が内蔵する各乱数回路503の中から、遊技制御処理を含むタイマ割込処理の実行時に用いる乱数回路を設定するためのプログラムモジュールである。CPU56は、乱数回路選択モジュール551fに従って処理を実行することによって、遊技制御用マイクロコンピュータ560が内蔵する2つの乱数回路(12ビット乱数回路503aおよび16ビット乱数回路503b)のうち、いずれの乱数回路をタイマ割込処理の実行時に用いるかを設定する。例えば、CPU56は、RAM55の所定の記憶領域に記憶された所定の設定値(ユーザによって予め設定された値)に従って、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aまたは16ビット乱数回路503bを設定する。
なお、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定してもよい。この場合、遊技制御用マイクロコンピュータは、例えば、12ビット乱数回路503aが発生した乱数にもとづいて大当り判定を行い、16ビット乱数回路503bが発生した乱数にもとづいて確変判定を行うようにしてもよい。この実施の形態では、乱数値記憶回路531は、12ビット乱数回路503aと16ビット乱数回路503bとにそれぞれ存在する(すなわち、12ビット用の乱数を記憶する乱数記憶回路と、16ビット用の乱数を記憶する乱数記憶回路とが、別個に存在する)。また、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定した場合、遊技制御用マイクロコンピュータ560は、12ビット乱数回路503aから読み出した乱数と、16ビット乱数回路503bから読み出した乱数とを、RAM55に設けられた別々のバッファ領域にそれぞれ格納する。そのため、12ビット乱数回路503aから乱数を読み出すタイミングと、16ビット乱数回路503bから乱数を読み出すタイミングとが同じであっても、2つの異なる乱数を抽出し別々のバッファ領域に格納することができる。
乱数値更新プログラム555は、乱数更新方式として第1の乱数更新方式が選択されているときに、乱数値記憶回路531に格納されているランダムRの値を更新させるためのプログラムである。CPU56は、乱数値更新プログラム555に従って処理を実行することによって、乱数値更新手段として機能する。CPU56は、第1の乱数更新方式が選択されているときに、乱数値更新プログラム555を実行して、カウント値更新データ「01h」をカウント値更新レジスタ538に書き込むことにより、カウンタ521にカウント値を更新させ、乱数値記憶回路531に格納さているランダムRの値を更新させる。なお、乱数更新方式として第2の乱数更新方式が選択されている場合には、クロック信号出力回路537が出力する乱数発生用クロック信号によって、カウンタ521にカウント値を更新させ、乱数値記憶回路531に格納さているランダムRの値を更新させることになる。
表示結果決定プログラム552は、特別図柄表示装置8における表示結果を大当り図柄とするか否かを決定するためのプログラムである。CPU56は、表示結果決定プログラム552に従って処理を実行することによって、表示結果決定手段として機能する。
この実施の形態では、CPU56は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、表示結果決定プログラム552に従って処理を実行する。そして、CPU56は、乱数値記憶回路531から更新後のランダムRの値を読み出して、特別図柄表示装置8における表示結果を大当り図柄とするか否かを決定する。
図24は、第1の乱数更新方式が選択されている場合に、CPU56がランダムRの値を更新させたりランダムRの値を読出したりする動作を示す説明図である。図24に示すように、第1の乱数更新方式が選択されている場合、CPU56は、カウント値更新データ「01h」をカウント値更新レジスタ538に書き込むことによって、乱数値記憶回路531が記憶するランダムRの値(例えば「2」)を更新させる。そして、CPU56は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、乱数値記憶回路531からランダムRの値(例えば「2」)を読み出す。
なお、乱数値記憶回路531が記憶するランダムRの値をさらに更新させる場合、前回更新時にランダムRの値を更新したときから、クロック回路501が出力するシステムクロック信号の周期以上の間隔を経過したときに、カウント値更新レジスタ538にカウント値更新データ「01h」を書き込まなければならない。なぜなら、更新後のランダムRの値を乱数値記憶回路531から読み出す時間を確保する必要があるからである。
図25は、第2の乱数更新方式が選択されている場合に、CPU56がランダムRの値を読出したりする動作を示す説明図である。図25に示すように、第2の乱数更新方式が選択されている場合、タイマ回路534は、乱数値取込データ「01h」を乱数値取込レジスタ539に書き込むことによって、カウンタ521が出力するカウント値(例えば「2」)を乱数値記憶回路531に取り込ませて、乱数値記憶回路531が記憶するランダムRの値を更新させる。そして、CPU56は、乱数値記憶回路531から更新後のランダムRの値(例えば「2」)を読み出す。
具体的には、第2の乱数更新方式が選択されている場合、カウンタ521は、乱数発生用クロック信号SI1を入力したことをトリガとしてカウント値Cを更新する。その後、乱数値取込データ「01h」が乱数値取込レジスタ539に書き込まれると、ラッチ信号生成回路533はラッチ信号SLを乱数値記憶回路531に出力する。そして、乱数値記憶回路531は、ラッチ信号SLを入力したことをトリガとしてカウンタ521が出力するカウント値を読み込んで記憶する。そして、CPU56は、乱数値記憶回路531が記憶するランダムRの値を読み出す。
なお、タイマ回路534が乱数値取込データ「01h」を乱数値取込レジスタ539に書き込まなければ、カウンタ521がカウント値を更新しても、乱数値記憶回路531は、カウンタ521が更新する乱数値を記憶しない。例えば、タイマ回路534が乱数値取込データ「01h」を乱数値取込レジスタ539に書き込み、カウンタ521が出力するカウント値「3」を乱数値記憶回路531に取り込ませて、乱数値記憶回路531が記憶するランダムRの値「3」を更新させたとする。この場合、タイマ回路534が乱数値取込データ「01h」を再び乱数値取込レジスタ539に書き込まなければ、カウンタ521が出力するカウント値が「3」から「4」や「5」に更新されても、乱数値記憶回路531が記憶する乱数値は更新されず、乱数値記憶回路531から読み出される乱数値は「3」のままである。
カウント値順列変更プログラム554は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込んで、乱数値記憶回路531が記憶するカウント値の順列を変更させるカウント値順列変更処理を実行するためのプログラムである。CPU56は、カウント値順列変更プログラム554に従って処理を実行することによって、数値データ順列変更手段として機能する。CPU56は、カウント値順列変更プログラム554を実行して、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込むことによって、カウント値順列変更回路523が出力し乱数値記憶回路531に入力されるカウント値の順列を変更させる。
また、遊技制御用マイクロコンピュータ560は、図26に示すように、特図保留メモリ570と、大当り判定用テーブルメモリ571と、フラグメモリ572と、始動入賞口スイッチタイマメモリ573とを備える。
特図保留メモリ570は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示の実行条件は成立したが、未だ可変表示の開始条件が成立していない(例えば、特別図柄表示装置8がまだ可変表示を実行中である)可変表示の実行条件の成立回数を含む保留データを記憶するためのメモリ(保存領域)である。特図保留メモリ570は、4つのエントリを備え、各エントリには、遊技球が可変入賞球装置15に入賞した順に、保留番号と、入賞に応じて乱数値記憶回路531から読み出したランダムRの値とが対応付けて格納される。また、特別図柄表示装置8における特別図柄の可変表示が1回終了したり、大当り遊技状態が終了したりするごとに、特図保留メモリ570の最上位の情報にもとづいた可変表示の開始条件が成立し、特図保留メモリ570最上位の情報にもとづいた可変表示が実行される。この場合、特別図柄の可変表示の開始条件が成立すると、特図保留メモリ570の第2位以下に登録されている情報が1位ずつ繰り上がる。また、特別図柄の可変表示中に遊技球が可変入賞球装置15に新たに入賞した場合には、その新たな入賞にもとづいて乱数値記憶回路531から読み出されたランダムRの値が、特図保留メモリ570の空エントリに登録される。
大当り判定用テーブルメモリ571は、CPU56が特別図柄表示装置8の表示結果を大当り図柄とするか否かを判定するために用いる複数の大当り判定テーブルを記憶する。具体的には、大当り判定用テーブルメモリ571は、図27(A)に示すように、確変状態以外の遊技状態(通常状態という)において用いられる通常時大当り判定テーブル571aを記憶する。また、大当り判定用テーブルメモリ571は、図27(B)に示すように、確変状態において用いられる確変時大当り判定テーブル571bを格納する。なお、図27に示す判定テーブルを用いて大当り判定を行う場合、乱数最大値設定レジスタ535に設定された乱数最大値によって大当りと判定する確率が大きく変化することになる。この場合、例えば、誤動作により最大値が設定されてしまったとき等に、設定される乱数最大値が小さすぎると、通常時大当り判定テーブル571aを用いた場合と、確変時大当り判定テーブル571bを用いた場合とで、大当りと判定する確率の差が小さくなってしまい、遊技者の遊技に対する興味を減退させてしまうことになる。そのため、乱数回路503および乱数最大値に対応づけて、複数の判定テーブル(複数の通常時大当り判定用テーブル571aおよび複数の確変時大当たり判定用テーブル571b)を大当り判定用テーブルメモリ571に記憶してもよい。そして、遊技制御用マイクロコンピュータ560のCPU56は、大当り判定用テーブルメモリ571が記憶する判定テーブルのうち、使用する乱数回路503および乱数最大値に対応する判定テーブル571a,571bを用いて、表示結果決定プログラム552に従って、特別図柄表示装置8の表示結果を大当り図柄とするか否かを判定するようにしてもよい。そのようにすることによって、使用する乱数回路503の種類や乱数最大値が異なっても、大当たりと判定する確率がある程度同じになるように制御することができる。
フラグメモリ572には、遊技の進行を制御する遊技制御処理において用いられる各種のフラグが設定される。例えば、フラグメモリ572には、遊技状態が確変状態であることを示す確変フラグや、大当り状態であることを示す大当りフラグが設定される。
始動口スイッチタイマメモリ573は、始動口スイッチ14aから入力される入賞検出信号SSに応じて加算またはクリアされるタイマ値を記憶する。
ここで、「なりすまし基板」について詳しく説明する。「なりすまし基板」とは、パチンコ遊技機の主基板に「なりすまして」大当りを発生させる等の不正な制御を実行する不正回路基板を意味する。
従来から、マイクロコンピュータに各種の処理を実行させるための制御プログラムが格納されたROMを交換し、不正に大当りを発生させる不正行為が行われていた。このため、ROMが交換されないように、ROMをマイクロコンピュータに内蔵させて1チップマイクロコンピュータ化するとともに、ROMの格納データにより所定の演算を行い、その演算結果により正規なROMか否かを確認するセキュリティチェックを行うようにしていた。
ところが、1チップマイクロコンピュータ自体を偽造して、正規のマイクロコンピュータと交換し、不正に大当りを発生させる不正行為が行われるようになった。これに対応して、マイクロコンピュータが交換されたときの痕跡が残るように、主基板を格納する基板ボックスを封止することとし、基板ボックスが開封されたことがわかるようにした遊技機が用いられるようになった。
しかし、始動口スイッチと主基板との間の配線に不正回路基板を取り付けて、大当り判定用乱数の大当り判定値のタイミングで不正に始動入賞を発生させる不正行為が行われるようになった。これに対応して、大当り判定用乱数の初期値を変更させて大当り判定値と一致するタイミングをずらすものや、高速で更新するハード回路乱数が用いられるようになった。
その後、主基板を格納する基板ボックスを不正回路を搭載した基板に交換して不正に大当りを発生させる行為が行われるようになった。これに対応して、マイクロコンピュータに主基板の外部に設置された照合機を接続し、正規のマイクロコンピュータであるか否かを照合する機能を持たせ、不正回路基板の発見が容易となるようにするようになった。
ところが、正規の主基板は遊技機に残したままで、電源だけを供給し正規のマイクロコンピュータの照合機能は生かしつつ、入賞・大当り等その他の主基板の機能を主基板の代わりに実行する「なりすまし基板」を主基板の裏側に設置し、不正に大当りを発生させる不正行為が発生するようになった。
図28は、なりすまし基板が遊技機に設置された状態の例を示すブロック図である。図28に示すように、なりすまし基板31Xは、主基板31と、主基板31と信号のやりとりを行う他の電気部品制御基板(本例では演出制御基板80、払出制御基板37)との間に設置される。そして、主基板31と信号のやりとりを行う他の電気部品制御基板は、主基板31ではなく、なりすまし基板31Xと信号のやりとりを行うこととなる。また、なりすまし基板31Xから主基板31に対して電源電力が供給されることとされている。
なりすまし基板31Xは、一般に、正規の主基板31のコネクタを全部抜き、基板ボックスの裏に隠して設置される。主基板31側のコネクタをはずすとすぐに発見されるため、主基板31に接続されている相手側基板のコネクタを抜く。これにより、見た目上は、主基板31の異常は発見されにくい。そして、主基板31に接続されていた電気部品をなりすまし基板31Xにすべて接続させる。さらに、なりすまし基板31Xから正規の主基板31に電源を供給する配線を接続する。これにより、遊技制御用マイクロコンピュータ560の照合機能(認証信号を出力する機能)が生きているので、照合機365を用いて照合を行っても、認証対象がなりすまし基板31Xではなく主基板31となるため、照合結果はOKになる。
そして、なりすまし基板31Xを主基板31の裏側に隠す。パチンコ遊技機に搭載される主基板31は、基板自体に不正回路が搭載されていないかを容易に発見させる目的で、部品の実装は片面実装とされ、さらに面実装部品の使用ができないので基板自体が比較的大きい。よって、主基板31と同程度の性能を有する制御基板を、両面実装とし、その面実装部品により作成すると、正規の主基板31よりはるかに小さくすることができる。すなわち、主基板31と同程度の性能を有する「なりすまし基板」を、主基板31よりはるかに小さく作成することができる。このため、「なりすまし基板」を主基板31の裏側に隠して設置することが容易にできてしまう。
図29は、主基板31を収容する遊技制御基板ボックスを簡略化して示す正面図である。主基板31は、遊技機裏面において、遊技制御基板ボックスに収容されている。すなわち、収納手段としての遊技制御基板ボックスに主基板31が収納され、それらが組み合わされた遊技制御ユニットの形で遊技機に取り付けられている。遊技制御基板ボックスは、主基板31が収容されたボックス本体31Aが蓋部31Bで覆われる構造である。蓋部31Bは、取付部31D,31Eのそれぞれにおける1箇所の取付穴にねじ込まれたワンウェイねじとその他のねじ(図示せず)でボックス本体31Aに固着される。ワンウェイねじとは、ねじ締め方向にしか回らないねじであり、遊技制御基板ボックスを開封不能とする固着手段の一例である。従って、一旦締め付けるとねじを取り外すことはできない。遊技制御基板ボックスは、ボックス本体31Aと蓋部31Bとの接合部分がねじ等の例えば金具によって固くとめられた「かしめ構造」を成している。
蓋部31Bをボックス本体31Aから外して主基板31を露出させようとする場合には、取付部31D,31Eにおけるワンウェイねじの取付部分(蓋部31Bとの取付部分)を切断する必要がある。従って、取付部分の切断の履歴から主基板31が露出された回数がわかる。管理者等が把握している取付部分の切断の履歴(回数)よりも実際の切断の回数が多い場合には、蓋部31Bが不正に外されて主基板13が露出され、遊技制御用マイクロコンピュータが不正マイクロコンピュータに交換された可能性があることがわかる。なお、取付部31D,31Eにはそれぞれ3箇所の取付穴が設けられているので、蓋部31Bを3回まで外すことができる。
また、蓋部31Bの不正取り外し防止のために、蓋部31Bとボックス本体31Aとの間に、ホログラムがプリントされた封印シール31F,31Gが貼着される。封印シール31F,31Gを剥がすと蓋部31Bおよびボックス本体31Aにホログラムが部分的に残るので、剥がされたことが一目でわかる。このことからも、蓋部31Bをボックス本体31Aから不正に取り外して主基板31を露出させようとしたことがわかる。
この実施の形態では、蓋部31Bに、機種名シール31aと検査履歴シール31bとが貼付されている。検査履歴シール31bには、主基板31の検査、修理、交換等の際に記入される「検査者」の欄と「検査日」の欄とが設けられているが、この例では、遊技機管理番号も記載されている。遊技機管理番号は、例えば遊技制御基板ボックスのユニット番号(各遊技制御ユニットに固有に付与された番号)である。
また、この実施の形態では、図29に示すように、蓋部31Bに、中断ボタン361を突出させるための孔(開口部)が設けられており、その孔から中断ボタン361の押下操作部が露出している。
なお、主基板31におけるコネクタ部分は蓋部31Bの外部に露出している。図29に示された例では、識別情報入出力のためのコネクタ31Cが例示されている。しかし、主基板31には、他の基板等との接続のための他のコネクタも搭載されている。
上記のように、主基板31が、開封不能な固着手段によって封止された基板ボックス内に収納され、中断ボタン361の押下操作部が、基板ボックスに設けられた開口部に設置されるように構成されているので、なりすまし基板が設置されている場合に、中断ボタン361からの遊技制御処理中断信号を確実に主基板31に入力させることができる。よって、なりすまし基板が設置されている場合に、中断ボタン361からの遊技制御処理中断信号がなりすまし基板に入力され、なりすまし基板が設置されているにもかかわらず遊技が中断されてしまうことを防止することができる。
図30は、主基板31に搭載された中断ボタン361の搭載状態の例を示す説明図である。図30には、遊技制御基板ボックスに収納された主基板31に中断ボタン361が搭載されているときの主基板31及び遊技制御基板ボックスの蓋部31Bの断面が示されている。図30に示すように、中断ボタン361は、ボタンの押下操作部分が遊技制御基板ボックスの蓋部31Bに設けられた孔(図29参照)から露出した状態で、主基板31の基板上に搭載される。よって、主基板31が遊技制御基板ボックス内に密封されていても、中断ボタン361を押下することが可能となる。なお、中断ボタン361は、主基板31に設けられていればよく、遊技制御基板ボックスの蓋部31Bに設けられた孔から突出した状態、またはその孔から臨む遊技制御基板ボックス内に位置させるようにしてもよい。
また、遊技制御基板ボックスの蓋部31Bに設けられた孔と中断ボタン361の押下操作部との間の隙間は、極力狭くするのが望ましい。すなわち、遊技制御基板ボックスの蓋部31Bに設けられた孔は、遊技制御基板ボックスの密封状態を確保するため、中断ボタン361によって大部分が塞がれるように形成される。例えば、遊技制御基板ボックスの蓋部31Bに設けられた孔の内壁に、中断ボタン361の押下操作部分の外壁が押下操作可能に接触した状態となるようにしてもよい。また、中断ボタン361を覆う柔軟性のある材質のカバーを、遊技制御基板ボックスの蓋部31Bに設けられた孔を塞ぎ、かつ中断ボタン361の押下操作可能な状態で、破壊等されない限り外れないように設置するようにしてもよい。このように、遊技制御基板ボックスの蓋部31Bに設けられた孔と中断ボタン361の押下操作部との間の隙間を極力狭くしたり、カバーによって完全に塞ぐようにすれば、遊技制御基板ボックスが破壊などされない限り主基板31の配線の変更等を行うことが不可能となるため、主基板31からの信号が取り出されてなりすまし基板などの外部に出力されることを防止することができる。
次に遊技機の動作について説明する。図31および図32は、遊技機に対して電力供給が開始され遊技制御用マイクロコンピュータ560へのリセット信号がハイレベルになったことに応じて遊技制御用マイクロコンピュータ560が実行するメイン処理を示すフローチャートである。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、遊技制御用マイクロコンピュータ560は、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、ステップS1以降のメイン処理を開始する。メイン処理において、遊技制御用マイクロコンピュータ560は、まず、必要な初期設定を行う。
初期設定処理において、遊技制御用マイクロコンピュータ560は、まず、割込禁止に設定する(ステップS1)。次に、マスク可能割込の割込モードを設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。なお、ステップS2では、遊技制御用マイクロコンピュータ560の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードに設定する。また、マスク可能な割込が発生すると、遊技制御用マイクロコンピュータ560は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
次いで、内蔵デバイスレジスタの設定(初期化)を行う(ステップS4)。ステップS4の処理によって、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の設定(初期化)がなされる。
この実施の形態で用いられる遊技制御用マイクロコンピュータ560は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)504も内蔵している。
次に、入力ポート1のビット0の状態によって電源断信号がオフ状態になっているか否か確認する(ステップS5)。遊技機に対する電力供給が開始されたときに、+5V電源などの各種電源の出力電圧は徐々に規定値に達するのであるが、ステップS5の処理によって、すなわち、電源断信号が出力されていない(ハイレベルになっている)ことを確認することにより遊技制御用マイクロコンピュータ560は電源電圧が安定したことを確認することができる。
電源断信号がオン状態である場合には、遊技制御用マイクロコンピュータ560は、所定期間(例えば、0.1秒)の遅延時間の後に(ステップS80)、再度、電源断信号がオフ状態になっているか否か確認する。電源断信号がオフ状態になっている場合には、認証信号(主基板31に一意に与えられている基板ID)を照合機365に対して出力するとともに(ステップS81)、RAM55をアクセス可能状態に設定し(ステップS6)、クリア信号のチェック処理に移行する。
なお、電源断信号がオン状態である場合に、遊技の進行を制御する遊技装置制御処理(遊技制御処理)の開始タイミングをソフトウェアで遅らせるためのソフトウェア遅延処理を実行するようにしてもよい。そのようなソフトウェア遅延処理によって、ソフトウェア遅延処理を実行しない場合に比べて、遊技制御処理の開始タイミングを遅延させることができる。遅延処理を実行したときには、他の制御基板(例えば、払出制御基板37)に対して、遊技制御基板(主基板31)が送信するコマンドを他の制御基板が受信できないという状況が発生することを防止できる。
なお、遊技制御用マイクロコンピュータ560は、入力ポート0を介して1回だけクリア信号の状態を確認するようにしてもよいが、複数回クリア信号の状態を確認するようにしてもよい。例えば、クリア信号の状態がオフ状態であることを確認したら、所定時間(例えば、0.1秒)の遅延時間をおいた後、クリア信号の状態を再確認する。そのときにクリア信号の状態がオン状態であることを確認したら、クリア信号がオン状態になっていると判定する。また、このときにクリア信号の状態がオフ状態であることを確認したら、所定時間の遅延時間をおいた後、再度、クリア信号の状態を再確認するようにしてもよい。ここで、再確認の回数は、1回または2回に限られず、3回以上であってもよい。また、2回チェックして、チェック結果が一致していなかったときにもう一度確認するようにしてもよい。
次いで、遊技制御用マイクロコンピュータ560は、クリアスイッチオンフラグがセットされているか否か確認する(ステップS7)。クリアスイッチオンフラグがセットされていない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような電力供給停止時処理が行われていたことを確認した場合には、遊技制御用マイクロコンピュータ560は、電力供給停止時処理が行われた、すなわち電力供給停止時の制御状態が保存されていると判定する。電力供給停止時処理が行われていないことを確認した場合には、遊技制御用マイクロコンピュータ560は初期化処理を実行する。
電力供給停止時処理が行われていたか否かは、電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、電力供給停止時処理を実行したことに応じた値(例えば2)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域に電力供給停止時処理を実行したことを示すフラグをセットし、ステップS8において、そのフラグがセットされていることを確認したら電力供給停止時処理が行われたと判定してもよい。
電力供給停止時の制御状態が保存されていると判定したら、遊技制御用マイクロコンピュータ560は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象になるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、遊技制御用マイクロコンピュータ560は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムにする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっている可能性があることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理(ステップS10〜S14の処理)を実行する。
チェック結果が正常であれば、遊技制御用マイクロコンピュータ560は、遊技制御手段の内部状態と演出制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う。具体的には、ROM54に格納されているバックアップ時設定テーブルの先頭アドレスをポインタに設定し(ステップS91)、バックアップ時設定テーブルの内容を順次作業領域(RAM55内の領域)に設定する(ステップS92)。作業領域はバックアップ電源によって電源バックアップされている。バックアップ時設定テーブルには、作業領域のうち初期化してもよい領域についての初期化データが設定されている。ステップS91およびS92の処理によって、作業領域のうち初期化してはならない部分については、保存されていた内容がそのまま残る。初期化してはならない部分とは、例えば、電力供給停止前の遊技状態を示すデータ(特別図柄プロセスフラグなど)、出力ポートの出力状態が保存されている領域(出力ポートバッファ)、未払出賞球数を示すデータが設定されている部分などである。
また、遊技制御用マイクロコンピュータ560は、ROM54に格納されているバックアップ時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS93)、ステップS15に移行する。
初期化処理では、遊技制御用マイクロコンピュータ560は、まず、RAMクリア処理を行う(ステップS10)。なお、RAM55の全領域を初期化せず、所定のデータをそのままにしてもよい。また、ROM54に格納されている初期化時設定テーブルの先頭アドレスをポインタに設定し(ステップS11)、初期化時設定テーブルの内容を順次作業領域に設定する(ステップS12)。
ステップS11およびS12の処理によって、例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄バッファ、総賞球数格納バッファ、特別図柄プロセスフラグ、賞球中フラグ、球切れフラグなど制御状態に応じて選択的に処理を行うためのフラグに初期値が設定される。また、出力ポートバッファにおける接続確認信号を出力する出力ポートに対応するビットがセット(接続確認信号のオン状態に対応)される。
また、遊技制御用マイクロコンピュータ560は、ROM54に格納されている初期化時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS13)、その内容に従ってサブ基板を初期化するための初期化コマンドをサブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、可変表示装置9に表示される初期図柄を示すコマンドや払出制御基板37への初期化コマンド等を使用することができる。
また、遊技制御用マイクロコンピュータ560は、各乱数回路503a,503bを初期設定する乱数回路設定処理を実行する(ステップS15)。この場合、CPU56は、乱数回路設定プログラム551に従って処理を実行することによって、各乱数回路503a,503bにランダムRの値を更新させるための設定を行う。
そして、遊技制御用マイクロコンピュータ560は、所定時間(例えば2ms)ごとに定期的にタイマ割込がかかるように遊技制御用マイクロコンピュータ560に内蔵されているCTCのレジスタの設定を行なうタイマ割込設定処理を実行する(ステップS16)。すなわち、初期値として例えば2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、2msごとに定期的にタイマ割込がかかるとする。
タイマ割込の設定が完了すると、遊技制御用マイクロコンピュータ560は、表示用乱数更新処理(ステップS18)を繰り返し実行する。遊技制御用マイクロコンピュータ560は、表示用乱数更新処理が実行されるときには割込禁止状態にして(ステップS17)、表示用乱数更新処理の実行が終了すると割込許可状態にする(ステップS19)。なお、表示用乱数とは、特別図柄表示器8に表示される図柄を決定するための乱数であり、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。
なお、表示用乱数更新処理が実行されるときに割込禁止状態にされるのは、表示用乱数更新処理が後述するタイマ割込処理でも実行されることから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS18の処理中にタイマ割込が発生してタイマ割込処理中で表示用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS18の処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
以上のように、遊技店員等は、クリアスイッチ921をオン状態してクリア信号が出力される状態にしながら遊技機に対する電力供給を開始する(例えば電源スイッチ914をオンする)ことによって、容易に初期化処理を実行させることができる。すなわち、RAMクリア等を行うことができる。
次に、メイン処理における乱数回路設定処理(ステップS15)を説明する。図33は、乱数回路設定処理を示すフローチャートである。乱数回路設定処理において、CPU56は、まず、乱数回路設定プログラム551に含まれる乱数回路選択モジュール551fに従って処理を実行し、遊技制御用マイクロコンピュータ560が内蔵する各乱数回路503a,503bの中から、遊技制御処理を含むタイマ割込処理の実行時に用いる乱数回路を設定する(ステップS151)。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定されたタイマ割込処理の実行時に用いる乱数回路503を指定する指定情報を、あらかじめRAM55の所定の記憶領域に記憶している。そして、CPU56は、RAM55の所定の記憶領域に記憶された指定情報に従って、12ビット乱数回路503aまたは16ビット乱数回路503bのいずれかを選択し、選択した乱数回路をタイマ割込処理の実行時に用いる乱数回路として設定する。なお、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定してもよい。この場合、遊技制御用マイクロコンピュータは、例えば、12ビット乱数回路503aが発生した乱数にもとづいて大当り判定を行い、16ビット乱数回路503bが発生した乱数にもとづいて確変判定を行うようにしてもよい。
遊技制御用マイクロコンピュータ560は、ステップS151で使用する乱数回路503を設定すると、例えば、カウンタ521やクロック信号出力回路524の動作を停止させることで、使用しないように設定した方の乱数回路のカウンタ521がカウント値Cを更新しないようにする。また、例えば、遊技制御用マイクロコンピュータ560は、使用しないように設定した方の乱数回路のカウンタ521はカウント値Cを更新するが、遊技制御用マイクロコンピュータ560は出力制御信号SCを出力しないようにし、乱数値記憶回路531から乱数を読み出せないように制御してもよい。また、例えば、遊技制御用マイクロコンピュータ560は、使用しないように設定した方の乱数回路の乱数値取込レジスタ539に乱数値取込データ「01h」を書き込まないようにし、ラッチ信号生成回路533がラッチ信号SLを乱数値記憶回路531に出力しないように制御してもよい。
上記のように、使用する乱数回路503を設定するようにすることによって、使用する乱数回路503だけを設定することによって、生成する乱数の値の範囲を適切に設定することができる。また、タイマ割込処理の実行中に不要な乱数を処理することを防止することができ、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。例えば、大当りとする判定値として離れた値(例えば、「1」と「100」を含む判定テーブルを用いて大当り判定を行う場合、所定の大当り確率(例えば、100分の1)で大当りと判定するようにすると、16ビット乱数回路503bによる乱数を用いるよりも、12ビット乱数回路503aによる乱数を用いた方が、処理すべき判定値の種類の数が少なくて済み、遊技制御用マイクロコンピュータ560の制御負担が軽減される。
また、CPU56は、乱数回路設定プログラム551に含まれる乱数最大値設定モジュール551aに従って処理を実行し、ユーザによって予め設定された乱数最大値を指定する乱数最大値設定データを、乱数最大値設定レジスタ535に書き込む(ステップS152)。そのようにすることによって、ユーザによって予め設定されたランダムRの乱数最大値を乱数回路503に設定する。なお、タイマ割込実行時に用いる乱数回路として12ビット乱数回路503aを設定した場合、CPU56は、乱数最大値(「0」〜「4095」のうちのいずれかの値)を指定する乱数最大値設定データを、12ビット乱数回路503aの乱数最大値設定レジスタ535に書き込む。また、タイマ割込実行時に用いる乱数回路として16ビット乱数回路503bを設定した場合、CPU56は、乱数最大値(「0」〜「65535」のうちのいずれかの値)を指定する乱数最大値設定データを、16ビット乱数回路503bの乱数最大値設定レジスタ535に書き込む。
なお、この実施の形態では、乱数最大値として「0」〜「255」が設定された場合には、後述する乱数最大値再設定処理において乱数最大値を所定値に設定しなおすことになる。また、乱数最大値として「256」以上の値を書き込む制御を行った場合であっても、データ化けなどの原因によって「0」〜「255」の値が乱数最大値設定レジスタ535に設定されてしまった場合には、後述する乱数最大値再設定処理において乱数最大値を所定値に設定しなおす。
上記のように、ステップS152において、生成する乱数の最大値をあらかじめ乱数最大値設定レジスタ535に設定するので、タイマ割込処理の実行中に用いる乱数の範囲より大きい値の乱数を生成してしまうことを防止でき、乱数回路503および遊技制御用マイクロコンピュータ560の処理負担を軽減することができる。
また、CPU56は、ステップS152で乱数最大値設定レジスタ535に設定した乱数最大値が所定の下限値以下でないかを確認し、乱数最大値が下限値以下である場合には、乱数最大値設定レジスタ535に設定されている乱数最大値の再設定を行う乱数最大値再設定処理を実行する(ステップS153)。
また、CPU56は、乱数回路設定プログラム551に含まれる初期値変更モジュール551eに従って処理を実行し、乱数回路503のカウンタ521が更新するカウント値の初期値を変更させる初期値変更処理を実行する(ステップS154)。
また、CPU56は、乱数回路設定プログラム551に含まれる乱数更新方式選択モジュール551bに従って処理を実行し、乱数更新方式選択データを乱数更新方式選択レジスタ540に書き込む(ステップS155)。そのようにすることによって、乱数回路503の乱数更新方式を設定する。なお、この実施の形態では、CPU56は、乱数更新方式選択データ「10h」を乱数更新方式選択レジスタ540に書き込むものとする。すなわち、この実施の形態では、乱数回路503の乱数更新方式として第2の乱数更新方式が設定される。
また、CPU56は、乱数回路設定プログラム551に含まれる周期設定モジュール551cに従って処理を実行し、ユーザによって予め設定された乱数発生用クロック信号SI1の周期を指定する周期設定データ(基準クロック信号を何分周させるかを設定するためのデータ)を、周期設定レジスタ537に書き込む(ステップS156)。そのようにすることによって、ユーザによって予め設定された乱数発生用クロック信号SI1の周期を乱数回路503に設定する。
また、CPU56は、乱数回路503のカウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを設定する(ステップS157)。例えば、遊技制御用マイクロコンピュータ560は、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを示す設定値を、予めユーザによって設定されRAM55の所定領域に記憶している。そして、CPU56は、RAM55の所定の記憶領域に記憶された所定の設定値に従って、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを設定する。この実施の形態では、CPU56は、ステップS157において、カウンタ521に入力する初期値を更新すると判定すると、所定の最終値までカウント値が更新されたとき(カウンタ521から通知信号を入力したとき)に初期値を更新する旨を示す初期値更新フラグをセットする。
また、CPU56は、乱数回路503のカウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が更新するカウント値の順列を変更するか否かを設定する(ステップS158)。例えば、遊技制御用マイクロコンピュータ560は、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が出力するカウント値の順列を変更するか否かを示す設定値を、予めユーザによって設定されRAM55の所定領域に記憶している。そして、CPU56は、RAM55の所定の記憶領域に記憶された所定の設定値に従って、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が出力するカウント値の順列を変更するか否かを設定する。この実施の形態では、CPU56は、ステップS158において、カウンタ521が出力するカウント値の順列を変更すると判定すると、所定の最終値までカウント値が更新されたときにカウント値の順列を変更する旨を示すカウント値順列変更フラグをセットする。この実施の形態では、ステップS158において、所定の設定値に従ってカウント値順列変更フラグをセットする場合を説明する。そして、CPU56は、後述するカウント値順列変更処理において、カウント値順列変更フラグがセットされていることにもとづいて、カウンタ521が出力するカウント値の順列を変更する。
そして、CPU56は、乱数回路設定プログラム551に含まれる乱数回路起動モジュール551dに従って処理を実行し、乱数回路起動データ「80h」を乱数回路起動レジスタ541に書き込む(ステップS159)。そのようにすることによって、遊技制御用マイクロコンピュータ560は、乱数回路503を起動させる。
次に、乱数回路設定処理における乱数最大値再設定処理(ステップS153)を説明する。図34は、乱数最大値再設定処理を示すフローチャートである。乱数最大値再設定処理において、CPU56は、乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む(ステップS153a)。なお、タイマ割込処理の実行時に用いる乱数回路として12ビット乱数回路503aを設定した場合、CPU56は、12ビット乱数回路503aの乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む。また、タイマ割込処理の実行時に用いる乱数回路として16ビット乱数回路503bを設定した場合、CPU56は、16ビット乱数回路503bの乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む。
遊技制御用マイクロコンピュータ560は、読み込んだ乱数最大値が所定の下限値以下であるか否かを判定する(ステップS153b)。12ビット乱数回路503aを設定した場合、12ビット乱数回路503aにおいて設定可能な乱数最大値が「256」から「4095」までであるので、CPU56は、12ビット乱数回路503aの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であるか否かを判定する。また、16ビット乱数回路503bを設定した場合、16ビット乱数回路503bにおいて設定可能な乱数最大値が「256」から「65535」までであるので、CPU56は、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であるか否かを判定する。
読み込んだ乱数最大値が下限値以下である場合、遊技制御用マイクロコンピュータ560は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値に設定しなおす(ステップS153c)。12ビット乱数回路503aを設定した場合、12ビット乱数回路503aの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であると判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「4095」に設定しなおす。また、16ビット乱数回路503bを設定した場合、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であると判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「65535」に設定しなおす。
以上のように、乱数最大値設定レジスタ535に設定した乱数最大値が所定の下限値以下となっている場合には、乱数最大値を所定値に設定しなおす。そのため、遊技制御用マイクロコンピュータ560の誤動作や、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、過度に小さい値が乱数の最大値として設定されてしまうことを防止することができる。従って、最小値から最大値までの値の範囲が過度に小さい乱数を生成する事態が発生することを防止することができる。
次に、乱数回路設定処理における初期値変更処理(ステップS154)を説明する。図35は、初期値変更処理を示すフローチャートである。初期値変更処理において、CPU56は、まず、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データを読み出し、ユーザによって選択された初期値変更方式を特定する。この場合、CPU56は、読み出した初期値変更方式設定データの値が「01h」であるか否かを判定することによって(ステップS154a)、ユーザによって選択された初期値変更方式を特定する。
初期値変更方式設定データの値が「01h」である場合、CPU56は、乱数回路503のカウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづいて設定された値に変更する(ステップS154b)。例えば、遊技制御用マイクロコンピュータ560は、RAM55の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とを予め対応付けて記憶している。そして、ステップS154bにおいて、CPU56は、予め記憶するIDナンバにもとづく演算値にカウント値の初期値を変更させる。また、例えば、ステップS154bにおいて、CPU56は、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバ(例えば、「100」)に所定値(例えば、「100」)を加算して)求めた演算値(例えば、「200」)にカウント値の初期値を設定する。また、カウンタ521に入力する初期値を変更すると、CPU56は、カウント値の初期値を変更した旨を示す初期値変更フラグをセットする(ステップS154c)。
なお、遊技制御用マイクロコンピュータ560は、ステップS154bにおいてカウンタ521に入力する初期値を変更する際、乱数回路503の比較器522の乱数最大値設定レジスタ535の値を確認し、IDナンバにもとづいて設定された値が乱数最大値以上であるか否かを判断する。そして、IDナンバにもとづいて設定された値が乱数最大値以上であると判断すると、遊技制御用マイクロコンピュータ560は、カウンタ521に入力する初期値を変更しない(例えば、初期値を「0」のまま変更しない)。そのようにすることによって、カウント値の初期値が乱数最大値以上の値に設定されてしまう事態を防止することができる。
ステップS154aにおいて、初期値変更方式設定データの値が「01h」でない場合(すなわち、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データの値が「00h」である場合)、CPU56は、カウント値の初期値の変更を行わず、そのまま初期値変更処理を終了し、ステップS155に移行する。
乱数回路設定処理が実行されることによって、遊技制御処理を含むタイマ割込処理の実行時に乱数回路503に各種信号が入力され、乱数回路503内で各種信号が生成される。図36は、乱数回路503に各信号が入力されるタイミング、および乱数回路503内で各信号が生成されるタイミングを示すタイミングチャートである。
図36に示すように、クロック回路501は、所定周期ごと(図36に示すタイミングT11,T21,・・・)に、出力端子の信号レベルをローレベルからハイレベルに立ち上げることによって、乱数回路503に基準クロック信号CLK(図36(A)参照)を入力する。
クロック信号出力回路524は、クロック回路501から供給された基準クロック信号CLKを分周し、乱数発生用クロック信号SI1(図36(B)参照)を生成する。例えば、クロック信号出力回路524は、タイミングT11,T12,・・・で出力端子の信号レベルをローレベルからハイレベルに立ち上げ、タイミングT21,T22,・・・で信号レベルをハイレベルからローレベルに立ち下げることによって、乱数発生用クロック信号SI1を出力する。
なお、図36に示す例では、説明を分かりやすくするために、クロック信号出力回路524が基準クロック信号CLKを2分周して乱数発生用クロック信号SI1を生成する場合を示している。しかし、実際の乱数回路では、周期設定レジスタ537に設定可能な周期は「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」まである。従って、実際の乱数回路では、クロック信号出力回路524は、「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」までの範囲で周期設定レジスタ537に設定される周期設定データ「07h」〜「FFh」に対応した分周比で、基準クロック信号CLKを分周し乱数発生用クロック信号SI1を生成する。クロック信号出力回路524によって生成された乱数発生用クロック信号SI1は、セレクタ528と反転回路532とに出力される。
この実施の形態では、乱数回路設定処理において、第2の乱数更新方式が設定されるので、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号がセレクタ528に入力される。セレクタ528は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力されると、クロック信号出力回路524から入力した乱数発生用クロック信号SI1を選択してカウンタ521に出力する。カウンタ521は、セレクタ528から供給される乱数発生用クロック信号SI1の立ち上がりエッヂが入力されるごとに、カウント値Cを更新してカウント値順列変更回路523に出力する。
反転回路532は、クロック信号出力回路524から入力した乱数発生用クロック信号SI1の信号レベルを反転させることによって、反転クロック信号SI2(図36(C)参照)を生成する。例えば、反転回路532は、タイミングT11,T12,・・・で出力端子の信号レベルをハイレベルからローレベルに立ち下げ、タイミングT21,T22,・・・で信号レベルをローレベルからハイレベルに立ち上げることによって、反転クロック信号SI2を出力する。また、反転回路532によって生成された反転クロック信号SI2は、ラッチ信号生成回路533に出力される。
ラッチ信号生成回路533には、入賞検出信号SS(図36(D)参照)がタイマ回路534に入力されてから所定時間(例えば3ミリ秒)が経過すると、乱数値読取信号出力回路526から乱数値読取信号が入力される。例えば、乱数値読取信号出力回路526の出力端子の信号レベルがローレベルからハイレベルに立ち上がることによって、ラッチ信号生成回路533に乱数値読取信号が入力される。ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力されたことに応じて、乱数値読取信号出力回路526から入力する乱数値読取信号を反転回路532から供給される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SL(図36(E)参照)を出力する。
以上のように、乱数回路503は、タイミングT11,T12,T13・・・においてカウント値Cを更新し、タイミングT11,T12,T13とは異なるタイミングT22においてラッチ信号SLを出力させ、乱数値記憶回路531に乱数値を記憶する。
次に、遊技制御処理について説明する。図37は、タイマ割込処理を示すフローチャートである。メイン処理の実行中に、具体的には、ステップS17〜S19のループ処理の実行中における割込許可になっている期間において、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560は、中断ボタン361からの遊技制御処理中断信号が入力しているか否か判定し(ステップS85)、遊技制御処理中断信号が入力していなければ(ステップS85のN)、タイマ割込の発生に応じて起動されるタイマ割込処理において遊技制御処理を実行する。遊技制御処理中断信号が入力していれば、遊技制御処理中断信号が入力しなくなるまで遊技制御処理中断信号の状態を監視し、遊技制御処理の実行を中断する。
遊技制御処理において、遊技制御用マイクロコンピュータ560は、まず、電源断信号が出力されたか否か(オン状態になったか否か)を検出する電源断処理(電源断検出処理)を実行する(ステップS20)。次いで、スイッチ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23および入賞口スイッチ29a,30a,33a,39a等のスイッチの検出信号を入力し、それらの状態判定を行う(スイッチ処理:ステップS21)。具体的には、各スイッチの検出信号を入力する入力ポートの状態がオン状態であれば、各スイッチに対応して設けられているスイッチタイマの値を+1する。
次に、遊技制御用マイクロコンピュータ560は、乱数回路設定処理において所定の最終値までカウント値が更新されたときに初期値を更新する旨の設定がされてるか(ステップS157参照)を確認し、乱数回路503のカウンタ521に入力する初期値を更新する処理を行う(初期値更新処理:ステップS22)。また、遊技制御用マイクロコンピュータ560は、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行う(表示用乱数更新処理:ステップS23)。
初期値更新処理および表示用乱数更新処理を行うと、遊技制御用マイクロコンピュータ560は、乱数回路503のカウンタ521が出力するカウント値の順列をカウント値順列変更回路523に変更させるカウント値順列変更処理を行う(ステップS24)。この実施の形態では、乱数回路設定処理のステップS158でカウント値順列変更フラグがセットされているか否かによって、カウント値順列変更処理を実行するか否かが決定されている。そして、遊技制御用マイクロコンピュータ560は、カウント値順列変更フラグがセットされていることにもとづいて、カウント値順列変更処理を実行する。
さらに、遊技制御用マイクロコンピュータ560は、特別図柄プロセス処理を行う(ステップS25)。特別図柄プロセス制御では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS26)。普通図柄プロセス処理では、普通図柄表示器10の表示状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
次いで、遊技制御用マイクロコンピュータ560は、特別図柄の変動に同期する飾り図柄に関する演出制御コマンドをRAM55の所定の領域に設定して演出制御コマンドを送出する処理を行う(飾り図柄コマンド制御処理:ステップS27)。なお、飾り図柄の変動が特別図柄の変動に同期するとは、変動時間(可変表示期間)が同じであることを意味する。
さらに、遊技制御用マイクロコンピュータ560は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力する情報出力処理を行う(ステップS28)。
また、遊技制御用マイクロコンピュータ560は、入賞口スイッチ29a,30a,33a,39a等の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS29)。具体的には、入賞口スイッチ29a,30a,33a,39a等がオンしたことにもとづく入賞検出に応じて、払出制御基板37に賞球個数を示す賞球個数信号等の払出指令信号を出力する。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、賞球個数を示す賞球個数信号の受信に応じて球払出装置97を駆動する。
そして、遊技制御用マイクロコンピュータ560は、保留記憶数の増減をチェックする記憶処理を実行する(ステップS30)。また、遊技機の制御状態を遊技機外部で確認できるようにするための試験信号を出力する処理である試験端子処理を実行する(ステップS31)。また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、遊技制御用マイクロコンピュータ560は、出力ポート2のRAM領域におけるソレノイドに関する内容を出力ポートに出力する(ステップS32:ソレノイド出力処理)。その後、遊技制御用マイクロコンピュータ560は、割込許可状態に設定し(ステップS33)、処理を終了する。
以上の制御によって、この実施の形態では、遊技制御処理は定期的(例えば2msごと)に起動されることになる。なお、この実施の形態では、タイマ割込処理で遊技制御処理が実行されているが、タイマ割込処理では例えば割込が発生したことを示すフラグのセットのみがなされ、遊技制御処理はフラグがセットされたことにもとづいてメイン処理において実行されるようにしてもよい。また、ステップS21〜S32の処理(ステップS28およびS31を除く)が、遊技の進行を制御する遊技制御処理に相当する。
また、遊技制御用マイクロコンピュータ560は、タイマ割込処理を実行した回数をカウントする処理を実行する。この実施の形態では、遊技制御用マイクロコンピュータ560は、タイマ割込処理を実行するごとに、タイマ割込処理を実行した回数を示す割込回数カウンタをカウントアップする。例えば、遊技制御用マイクロコンピュータ560は、ステップS32においてソレノイド出力処理を完了すると、タイマ割込処理を実行した回数を示す割込回数カウンタの値を1加算する。
次に、タイマ割込処理における初期値更新処理(ステップS22)について説明する。図38は、初期値更新処理を示すフローチャートである。初期値更新処理において、遊技制御用マイクロコンピュータ560は、乱数回路503のカウンタ521が出力するカウント値Cを最終値まで更新した旨を示す通知信号の状態を確認する(ステップS220)。通知信号がオン状態になっていることを検出した場合には、遊技制御用マイクロコンピュータ560は、初期値更新フラグがセットされているか否かを確認する(ステップS221)。すなわち、遊技制御用マイクロコンピュータ560は、乱数回路設定処理において、所定の最終値までカウント値が更新されたときに初期値を更新する旨の設定がなされたか否か(ステップS157参照)を確認する。
初期値更新フラグがセットされている場合、遊技制御用マイクロコンピュータ560は、乱数回路503のカウンタ521が所定の最終値までカウント値を更新したときに、カウンタ521に入力する初期値を更新すると判断する。また、初期値更新フラグがセットされている場合、遊技制御用マイクロコンピュータ560は、初期値変更フラグがセットされているか否かを確認する(ステップS222)。すなわち、遊技制御用マイクロコンピュータ560は、カウント値の初期値が現在変更されているか否か(すなわち、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に変更されているか否か)を判断する。
初期値変更フラグがセットされている(すなわち、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に初期値が現在変更されている)場合、遊技制御用マイクロコンピュータ560は、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値から元の値(例えば、「1」)にもどす(ステップS223)。そして、遊技制御用マイクロコンピュータ560は、初期値変更フラグをリセットし(ステップS224)、初期値更新処理を終了する。
初期値変更フラグがセットされていない(すなわち、初期値が現在変更されていない)場合、遊技制御用マイクロコンピュータ560は、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に変更する(ステップS225)。この場合、例えば、遊技制御用マイクロコンピュータ560のIDナンバが「100」であるとすると、カウンタ521に入力する初期値を、IDナンバ「100」に所定値「100」を加算して求めた演算値「200」に変更する。また、例えば、カウンタ521に入力する初期値を、IDナンバ「100」に所定値「50」を減算して求めた演算値「50」に変更する。そして、遊技制御用マイクロコンピュータ560は、初期値変更フラグをセットし(ステップS226)、初期値更新処理を終了する。
なお、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定した場合、ステップS225において、遊技制御用マイクロコンピュータ560は、一方の乱数回路(例えば、12ビット乱数回路503a)から読み込んだ乱数を所定値としてIDナンバに加算して、カウンタ521に入力する初期値を求めてもよい。そして、遊技制御用マイクロコンピュータ560は、他の一方(例えば、16ビット乱数回路503b)から読み込んだ乱数を、大当り判定用の乱数として用いてもよい。
なお、遊技制御用マイクロコンピュータ560は、ステップS225においてカウンタ521に入力する初期値を更新する際、乱数回路503の比較器522の乱数最大値設定レジスタ535の値を確認し、IDナンバにもとづいて設定された値が乱数最大値以上であるか否かを判断する。そして、IDナンバにもとづいて設定された値が乱数最大値以上であると判断すると、遊技制御用マイクロコンピュータ560は、カウンタ521に入力する初期値を所定値のまま更新しない(例えば、所定値「0」のまま更新しない)。そのようにすることによって、カウント値の初期値が乱数最大値以上の値に設定されてしまう事態を防止することができる。
なお、ステップS220において通知信号がオフ状態であると判断した場合、およびステップS221において初期値更新フラグがセットされていないと判断した場合、遊技制御用マイクロコンピュータ560は、カウンタ521に入力する初期値を更新することなく、そのまま初期値更新処理を終了し、ステップS23に移行する。
次に、タイマ割込処理におけるカウント値順列変更処理(ステップS24)について説明する。図39は、カウント値順列変更処理を示すフローチャートである。遊技制御用マイクロコンピュータ560は、カウント値順列変更プログラム554に従って処理を実行することによって、カウント値順列変更処理を行う。カウント値順列変更処理において、遊技制御用マイクロコンピュータ560は、乱数回路503のカウンタ521が出力するカウント値Cを最終値まで更新した旨を示す通知信号の状態を確認する(ステップS241)。通知信号がオン状態になっていることを検出した場合には、遊技制御用マイクロコンピュータ560は、カウント値順列変更フラグがセットされているか否かを確認する(ステップS242)。すなわち、遊技制御用マイクロコンピュータ560は、乱数回路設定処理において、所定の最終値までカウント値が更新されたときにカウンタ521が更新するカウント値の順列を変更する旨の設定がなされたか否か(ステップS158参照)を確認する。
カウント値順列変更フラグがセットされている場合、遊技制御用マイクロコンピュータ560は、乱数回路503のカウンタ521が所定の最終値までカウント値を更新したときに、カウンタ521が更新するカウント値の順列を変更すると判断する。そして、遊技制御用マイクロコンピュータ560は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込む(ステップS243)。すなわち、遊技制御用マイクロコンピュータ560は、カウント値順列変更データ「01h」を書き込むことによって、乱数値記憶回路531に入力されるカウント値Cの順列をカウント値順列変更回路523に変更させる。
以上のように、カウント値順列変更処理において、乱数を所定の最終値まで更新したときに、カウンタ521が更新するカウント値の順列を変更するので、乱数回路503が生成する乱数のランダム性をより向上させることができる。
次に、メイン処理における特別図柄プロセス処理(ステップS25)を説明する。図40は、遊技制御用マイクロコンピュータ560が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。遊技制御用マイクロコンピュータ560は、特別図柄プロセス処理を行う際に、変動短縮タイマ減算処理(ステップS310)を行い、遊技盤6に設けられている始動入賞口14に遊技球が入賞したことを検出するための始動口スイッチ14aがオンしていたら、すなわち遊技球が始動入賞口14に入賞する始動入賞が発生していたら(ステップS311)、始動口スイッチ通過処理(ステップS312)を行った後に、内部状態に応じて、ステップS300〜S308のうちのいずれかの処理を行う。変動短縮タイマは、特別図柄の変動時間が短縮される場合に、変動時間を設定するためのタイマである。
特別図柄通常処理(ステップS300):特別図柄の可変表示を開始できる状態(例えば、特別図柄表示器8において図柄の変動がなされておらず、特別図柄表示器8における前回の図柄変動が終了してから所定期間が経過しており、かつ、大当り遊技中でもない状態)になるのを待つ。特別図柄の可変表示が開始できる状態になると、特別図柄についての始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、乱数回路503が発生するランダムRにもとづいて、特別図柄の可変表示の結果を大当りとするか否か決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS301に移行するように更新する。
特別図柄停止図柄設定処理(ステップS301):特別図柄の可変表示後の停止図柄を決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS302に移行するように更新する。
変動時間設定処理(ステップS302):変動パターンを決定し、その変動パターンにおける変動時間(可変表示時間:可変表示を開始してから表示結果が導出表示(停止表示)するまでの時間)を特別図柄の可変表示の変動時間とすることに決定する。また、決定した特別図柄の変動時間を計測する変動時間タイマをスタートさせる。そして、内部状態(特別図柄プロセスフラグ)をステップS303に移行するように更新する。
特別図柄変動処理(ステップS303):所定時間(ステップS302の変動時間タイマで示された時間)が経過すると、内部状態(特別図柄プロセスフラグ)をステップS304に移行するように更新する。
特別図柄停止処理(ステップS304):演出制御基板80に対して、飾り図柄の停止を指示するための飾り図柄停止コマンドを送信する。また、特別図柄表示器8における特別図柄を停止させる。そして、特別図柄の停止図柄が大当り図柄である場合には、内部状態(特別図柄プロセスフラグ)をステップS305に移行するように更新する。そうでない場合には、内部状態をステップS300に移行するように更新する。なお、飾り図柄停止コマンドを送信しない構成としてもよい。この場合、演出制御基板80は、主基板31からの変動パターンコマンドにもとづいて変動時間タイマに変動時間を設定するとともに、その変動時間タイマを更新していくことで飾り図柄の変動時間を独自に監視し、その変動時間が経過したと判定したときに飾り図柄を停止する処理を行うようにすればよい。
大入賞口開放前処理(ステップS305):大入賞口を開放する制御を開始する。具体的には、カウンタ(例えば大入賞口に入った遊技球数をカウントするカウンタ)やフラグ(入賞口への入賞を検出する際に用いられるフラグ)を初期化するとともに、ソレノイド21を駆動して大入賞口を開放する。また、プロセスタイマによって大入賞口開放中処理の実行時間を設定し、大当り中フラグをセットする。そして、内部状態(特別図柄プロセスフラグ)をステップS306に移行するように更新する。
大入賞口開放中処理(ステップS306):大入賞口ラウンド表示の演出制御コマンドを演出制御基板80に送出する制御や大入賞口の閉成条件(例えば、大入賞口に所定個数(例えば10個)の遊技球が入賞したこと)の成立を確認する処理等を行う。大入賞口の閉成条件が成立したら、内部状態をステップS307に移行するように更新する。
特定領域有効時間処理(ステップS307):V入賞スイッチ22の通過の有無を監視して、大当り遊技状態継続条件の成立を確認する処理を行う。大当り遊技状態継続の条件が成立し、かつ、まだ残りラウンドがある場合には、内部状態をステップS305に移行するように更新する。また、所定の有効時間内に大当り遊技状態継続条件が成立しなかった場合、または、全てのラウンドを終えた場合には、内部状態をステップS308に移行するように更新する。
大当り終了処理(ステップS308):大当り遊技状態が終了したことを遊技者に報知する表示制御を演出制御手段に行わせるための制御を行う。そして、内部状態をステップS300に移行するように更新する。
図41は、始動口スイッチ通過処理(ステップS312)を示すフローチャートである。始動口スイッチ通過処理において、遊技制御用マイクロコンピュータ560は、始動入賞カウンタが示す始動入賞記憶数(または特図保留メモリ570が記憶している始動入賞記憶数)が最大値である4に達しているかどうか確認する(ステップS321)。始動入賞記憶数が4に達していなければ、遊技制御用マイクロコンピュータ560は、割込実行回数カウンタに示されるタイマ割込処理の実行回数が所定回数(例えば、3回)に達しているか否かを確認する(ステップS322)。なお、遊技球が始動入賞口14に入賞したことを検出すると、遊技制御用マイクロコンピュータ560は、割込実行回数カウンタをリセットする。そして、遊技制御用マイクロコンピュータ560は、遊技球が始動入賞口14に入賞したあと、割込実行回数カウンタが所定回数に達しているか否かを確認する。
ステップS322において所定回数としてあらかじめ設定される値は、以下のように定められる。前述のように、乱数回路503のタイマ回路534は、始動口スイッチ14aから入賞検出信号SSが継続して入力されている時間を計測し、計測時間が所定期間になったことを検出すると、乱数値取り込みデータ「01h」を書き込む。この実施の形態では、タイマ回路534が計測する所定期間(例えば、3ms)が、所定回数のタイマ割込処理が実行される期間(例えば、2msごとのタイマ割込処理を3回実行する場合は6ms)よりも短くなるように、ステップS322において用いる所定回数(例えば、3回)が設定される。そのように設定することによって、乱数を読み出してから、乱数値記憶回路531に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができ、前回乱数値記憶回路531から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。
タイマ割込処理の実行回数が所定回数に達している場合、CPU56は、特定した乱数回路503の乱数値記憶回路531に出力制御信号SCを出力し、乱数値記憶回路531を読出可能(イネイブル)状態に制御する(ステップS323)。
CPU56は、乱数回路503の乱数値記憶回路531から、乱数値として記憶されているランダムRの値を読み出す(ステップS324)。また、CPU56は、読み出したランダムRの値を、例えばRAM55に設けられた所定のバッファ領域に格納する(ステップS325)。また、CPU56は、ランダムRの値をバッファ領域に格納すると、乱数値記憶回路531への出力制御信号SCの出力を停止し、乱数値記憶回路531を読出不能(ディセイブル)状態に制御する(ステップS326)。また、CPU56は、割込実行回数カウンタをリセットする(ステップS327)。そして、CPU56は、所定のバッファ領域に格納したランダムRの値を特図保留メモリ570の空エントリの先頭にセットし(ステップS328)、始動入賞カウンタのカウント数を1加算することで始動入賞記憶数を1増やす(ステップS329)。
ステップS321において始動入賞記憶するが最大値である4に達している場合、およびステップS322においてタイマ割込処理の実行回数が所定回数に達してない場合、そのまま始動口スイッチ通過処理を終了する。
以上のように、始動口スイッチ通過処理において、乱数値記憶回路531からランダムRを読み出すにあたって、タイマ割込処理が所定回数実行されたこと(すなわち、タイマ割込処理が所定回数実行される間継続して入賞検出信号SSが入力されたこと)を条件に、乱数値記憶回路531から乱数を読み出す。そのため、乱数を読み出してから、乱数値記憶回路531に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができる。また、前回乱数値記憶回路531から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。
次に、特別図柄プロセス処理における特別図柄通常処理(ステップS300)について説明する。図42は、大当り遊技が終了したときに実行される特別図柄通常処理を示すフローチャートである。特別図柄通常処理において、遊技制御用マイクロコンピュータ560は、特別図柄の変動を開始することができる状態(例えば特別図柄プロセスフラグの値がステップS300を示す値となっている場合)には(ステップS380)、特図保留メモリ570から保留番号「1」に対応して格納されているランダムRの値を読み出す(ステップS381)。この場合、遊技制御用マイクロコンピュータ560は、始動入賞カウンタのカウント数を1減算することで保留記憶数を1減らし、且つ、特図保留メモリ570の第2〜第4エントリ(保留番号「2」〜「4」)に格納されたランダムRの値を1エントリずつ上位にシフトする(ステップS382)。
また、遊技制御用マイクロコンピュータ560は、確変フラグがセットされているか否かを確認する(ステップS383)。すなわち、遊技制御用マイクロコンピュータ560は、遊技状態が確変状態に制御されているか否かを確認する。確変フラグがセットされていない場合、遊技制御用マイクロコンピュータ560は、遊技状態が確変状態以外の通常状態であると判断し、特別図柄表示装置8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、通常時大当り判定テーブル571a(図27(A)参照)を設定する(ステップS384)。また、確変フラグがセットされている場合、遊技制御用マイクロコンピュータ560は、遊技状態が確変状態であると判断し、特別図柄表示装置8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、確変時大当り判定テーブル571b(図27(B)参照)を設定する(ステップS385)。
遊技制御用マイクロコンピュータ560は、始動口スイッチ通過処理において所定のバッファ領域に格納したランダムRの値にもとづいて、特別図柄表示装置8の表示結果を大当り図柄とするか否かを判定する(ステップS386)。この場合、遊技制御用マイクロコンピュータ560は、ステップS384で設定した通常時大当り判定テーブル571aまたはステップS385で設定した確変時大当り判定テーブル571bを用いて、大当りとするか否かを判定する。
特別図柄表示装置8の表示結果を大当り図柄とすると決定すると、遊技制御用マイクロコンピュータ560は、大当り状態であることを示す大当りフラグをオン状態にする(ステップS387)。また、特別図柄表示装置8の表示結果を大当り図柄としないと決定すると、遊技制御用マイクロコンピュータ560は、大当りフラグをオフ状態にする(ステップS388)。そして、遊技制御用マイクロコンピュータ560は、特別図柄プロセスフラグの値を特別図柄停止図柄設定処理に対応した値に更新する(ステップS389)。
以上に説明したように、この実施の形態では、遊技機への電源投入が開始されてからタイマ割込設定を行うまでに乱数回路503の初期設定(乱数回路設定処理)を行うとともに、乱数回路設定処理において、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづく値を乱数の初期値として設定する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。また、乱数のランダム性を向上させることができるので、乱数生成のタイミングを遊技者や遊技店に認識されにくくすることができ、無線信号を用いた取り込み信号を遊技機に対して発生させることによって、大当り状態などの特定遊技状態への移行条件を不正に成立させられてしまうことを防止することができる。
また、この実施の形態では、照合に用いるIDと乱数の初期値を設定するためのIDとに同一のIDを用いるようにしていたが、これに限らず、別個のIDを用いるようにしてもよい。
また、この実施の形態では、乱数回路503の反転回路532が極性を反転させた反転クロック信号SI2を生成し、反転クロック信号SI2に同期して乱数の記憶を指示するためのラッチ信号を出力する。そのため、乱数を更新するタイミングと乱数値記憶回路531に乱数を記憶させるタイミングとをずらすことができ、生成した乱数を安定して確実に記憶させることができる。
また、この実施の形態では、遊技制御用マイクロコンピュータ560が、中断ボタン361からの遊技制御処理中断信号(中断操作信号)の入力に応じて遊技制御処理を中断させる構成とされているので、例えば遊技店員等が意図的に遊技制御処理を中断させることができる。そして、意図的な中断が不能となっている場合に不正回路基板(なりすまし基板)が設置されているものと判断することができ、不正回路基板を容易に発見することができるようになる。
上述した実施の形態では、遊技制御処理を中断させる例として、遊技制御処理中断信号が入力されている間は制御プログラムに従ってループ処理を行う場合について説明したが、中断操作信号が入力されている間遊技が止まればよく、遊技を止める種々の方法をとることができる。例えば、遊技機への電力供給を停止する(すなわち、電源をオフする)などの周知あるいは公知の方法によって、遊技制御処理を中断するようにしてもよい。また、例えば、遊技制御用マイクロコンピュータ560の処理を停止(システムリセット)させることで「遊技制御処理を中断」させるようにしてもよいし、遊技制御用マイクロコンピュータ560から出力される全ての制御信号を出力停止させることで「遊技制御処理を実質的に中断」させるようにしてもよい。
実施の形態2.
第1の実施の形態では、中断ボタン361を用いて遊技制御処理を中断させることによって、なりすまし基板が設置されているか否かを発見するようにしていたが、中断ボタン361を用いることなく、以下に示すようにしてなりすまし基板が設置されているか否かを発見するようにしてもよい。
なお、本実施の形態において、第1の実施の形態と同様の構成および処理をなす部分についてはその詳細な説明を省略し、主として第1の実施の形態と異なる部分及び第1の実施の形態では説明を省略した部分について説明する。
図43は、この実施の形態における主基板31の回路構成の一例を示すブロック図である。なお、図43には、遊技機に搭載されている払出制御基板37、ランプドライバ基板35、音声出力基板70、インタフェース基板66、中継基板77および演出制御基板80も示されている。主基板31には、図4に示した例と異なり、中断ボタン361は搭載されていない。また、主基板31には、図4に示した例と異なり、遊技球の未払出数が所定数を超えたときに点灯される未払出超過LED362と、入賞が発生したときに点灯される入賞報知ランプ363とが搭載されている。
次に、主基板31と払出制御基板37との間で送受信される払出制御信号について説明する。図44は、遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に対して出力される払出制御信号および遊技制御用マイクロコンピュータ560に払出制御用マイクロコンピュータ370から入力される払出制御信号の内容の一例を示す説明図である。この実施の形態では、払出制御等に関する各種の制御を行うために、主基板31と払出制御基板37との間で複数種類の制御信号が送受信(双方向通信)される。
図44に示すように、電源確認信号は、主基板31の立ち上がり時(電力供給の開始後に遊技制御用マイクロコンピュータ560が遊技の進行を制御可能な状態となったとき)に立ち上がり(オン状態になり)、払出制御基板37に対して主基板31が立ち上がったことを通知するための信号(主基板31の接続確認信号)である。また、電源確認信号は、賞球払出を許可する状態であることを示す。すなわち、遊技制御用マイクロコンピュータ560は、電源確認信号をオフ状態にすることによって、払出制御用マイクロコンピュータ370に対して賞球払出を行わせないようにすることができる。なお、払出制御用マイクロコンピュータ370は、賞球払出中に電源確認信号がオフ状態になったことを検出した場合には、そのときに払い出すことが決まっている個数の賞球払出を完了させた時点で、賞球払出処理を実行しない状態に移行する。
払出REQ信号は、賞球の払出要求時に出力状態(=オン状態)になる信号(すなわち賞球払出要求のトリガ信号)である。また、払出REQ信号は、払出制御用マイクロコンピュータ370からの受信確認信号がオン状態になると、停止状態(オフ状態)になる。
払出個数信号は、払出要求を行う遊技球の個数(例えば1〜15個)を指定するために出力される信号(賞球個数コマンド)である。払出個数信号は、遊技制御用マイクロコンピュータ560が、賞球待機状態において受信確認信号がオン状態になったことを検出したとき、または、払出REQ信号の送信後に受信確認信号がオン状態にならなかったことを検出したとき、もしくは払出REQ信号の送信停止後にオフ状態にならなかったことを検出したときに出力される受信確認信号エラーを示すエラー信号としても用いられる。具体的には、払出個数信号が1E(H)であれば、受信確認信号エラーであることを示している。また、払出個数信号は、遊技制御用マイクロコンピュータ560が、賞球待機状態において払出動作中信号がオン状態になったことを検出したとき、または、受信確認信号がオフ状態になった後、払出動作中信号がオン状態にならなかったことを検出したときに出力される払出動作中信号エラーを示すエラー信号としても用いられる。具体的には、払出個数信号が1F(H)であれば、払出動作中信号エラーであることを示している。
接続確認信号は、払出制御用マイクロコンピュータ370が、払出制御基板37の立ち上がり時にオン状態にして、遊技制御用マイクロコンピュータ560に、払出制御基板37が立ち上がったことを通知するための信号である。換言すれば、払出制御用マイクロコンピュータ370が賞球払出処理を実行可能であることを通知するための信号である。よって、払出制御用マイクロコンピュータ370は、遊技球の払い出しに関わるエラーが発生すると、接続確認信号をオフ状態にする。受信確認信号は、払出制御用マイクロコンピュータ370が払出REQ信号がオン状態になったことに応じて払出個数信号を受信すると、オン状態にする信号である。払出動作中信号は、払出制御用マイクロコンピュータ370が賞球払出処理を開始するとオン状態にし、払出個数信号で指令された個数の賞球払出が完了するとオフ状態にする信号である。
図45は、図44に示す払出制御信号の送受信に用いられる信号線等を示すブロック図である。図45に示すように、払出制御信号のうち、電源確認信号、払出REQ信号、および払出個数信号は、遊技制御用マイクロコンピュータ560によって出力回路67を介して出力され、入力回路373Aを介して払出制御用マイクロコンピュータ370に入力される。また、払出制御信号のうち、接続確認信号、受信確認信号および払出動作中信号は、払出制御用マイクロコンピュータ370によって出力回路373Bを介して出力され、入力回路68を介して遊技制御用マイクロコンピュータ560に入力される。電源確認信号、払出REQ信号、接続確認信号、受信確認信号および払出動作中信号は、それぞれ1ビットのデータであり、それぞれ1本の信号線(信号経路)によって送信される。払出個数信号は、5ビットのデータで構成され5本の信号線(信号経路)によって送信される。
図46は、払出制御信号の出力の仕方の一例を示すタイミング図である。図46に示すように、入賞検出スイッチが遊技球の入賞を検出したことにもとづいて、遊技制御用マイクロコンピュータ560は、払出REQ信号をオン状態にするとともに、払出個数信号の出力状態を、入賞に応じて払い出される賞球数に応じた状態にする。なお、この実施の形態では、始動口スイッチ14aで遊技球が検出されると4個の賞球払出を行い、入賞口スイッチ33a,39a,29a,30aのいずれかで遊技球が検出されると7個の賞球払出を行い、Vカウントスイッチ22またはカウントスイッチ23で遊技球が検出されると15個の賞球払出を行う。また、上述したように、払出個数信号は5ビットで構成されているので、8ビットで表現されている00(H)〜0F(H)の賞球個数コマンドのうち、下位の5ビットが払出個数信号によって主基板31から払出制御基板37に伝達される。従って、払出個数信号によって、0〜31個の賞球個数指定を行うことが可能であるが、この実施の形態では、1F(H)および1E(H)はエラー通知のために使用される。よって、実際には、0〜29個の賞球個数指定を行うことが可能である。しかし、この実施の形態では、個数指定としては15(0F(H))までを使用するので、以下、「00(H)〜0F(H)の払出個数信号」のように表現することがある。
払出制御用マイクロコンピュータ370は、払出REQ信号の受信を確認すると、払出個数信号を入力し、受信確認信号を送信(オン状態)する。遊技制御用マイクロコンピュータ560は、受信確認信号の受信を確認すると、払出REQ信号の送信を停止する(オフ状態にする)。払出制御用マイクロコンピュータ370は、払出REQ信号がオフ状態になったことを確認すると、払出個数信号で指定された個数の賞球払出が行われるように払出モータ289を駆動する。駆動を開始するときに、払出動作中信号を送信(オン状態)する。払出制御用マイクロコンピュータ370は、払出個数カウントスイッチ301の検出信号にもとづいて、払出個数信号で指定された個数の賞球払出が行われたことを確認すると、払出動作中信号の送信を停止する(オフ状態にする)。遊技制御用マイクロコンピュータ560は、払出動作中信号がオフ状態になったことを確認すると、払出個数信号の状態をオフ状態(全て0の状態)にする。
なお、遊技制御用マイクロコンピュータ560は、払出REQ信号をオフ状態にするときに、払出個数信号の状態をオフ状態にしてもよい。
図46に示すように、払出REQ信号および払出個数信号がオン状態であるときに新たな入賞が検出されると、その入賞にもとづく払出REQ信号のオンおよび払出個数信号の出力は待たされる。具体的には、遊技制御用マイクロコンピュータ560は、払出REQ信号がオン状態であるときに新たな入賞を検出すると、その入賞にもとづいて払い出されるべき賞球数を、RAM55に形成される総賞球数格納バッファの内容に加算する。そして、遊技制御用マイクロコンピュータ560は、払出REQ信号をオフ状態にしたときに、総賞球数格納バッファの内容が0でなければ、15を上限として、総賞球数格納バッファの内容が示す賞球数の賞球払出を指示するために、払出REQ信号をオン状態にするとともに、払出個数信号を出力する。
図47は、ステップS29の賞球処理の一例を示すフローチャートである。賞球処理において、遊技制御用マイクロコンピュータ560は、賞球個数加算処理(ステップS201)と賞球制御処理(ステップS202)とを実行する。そして、RAM55に形成される出力ポートバッファのうちの出力ポート0バッファの内容をポート0に出力する(ステップS203)。なお、出力ポート0バッファの内容は、賞球制御処理において更新される。
賞球個数加算処理では、図48に示す賞球個数テーブルが使用される。賞球個数テーブルは、ROM54に設定されている。賞球個数テーブルの先頭アドレスには処理数(この例では「7」)が設定され、その後に、スイッチオンバッファの下位アドレス、入賞により賞球を払い出すことになる入賞口の各スイッチについてのスイッチ入力ビット判定値、賞球数が、入賞口の各スイッチのそれぞれに対応して順次設定されている。なお、スイッチ入力ビット判定値は、入力ポート0における各スイッチの検出信号が入力されるビットに対応した値である。また、スイッチオンバッファの上位アドレスは固定的な値(例えば7F(H))である。また、賞球個数テーブルにおいて、7つのスイッチオンバッファの下位アドレスのそれぞれには、同じデータが設定されている。
図49は、賞球個数加算処理を示すフローチャートである。賞球個数加算処理において、遊技制御用マイクロコンピュータ560は、賞球個数テーブルの先頭アドレスをポインタにセットする(ステップS161)。そして、ポインタが指すアドレスのデータ(この場合には処理数)をロードする(ステップS162)。次に、スイッチオンバッファの上位アドレス(8ビット)を2バイトのチェックポインタの上位1バイトにセットする(ステップS163)。
そして、ポインタの値を1増やし(ステップS164)、ポインタが指す賞球個数テーブルのデータ(この場合にはスイッチオンバッファの下位アドレス)をチェックポインタの下位1バイトにセットした後(ステップS165)、ポインタの値を1増やす(ステップS166)。次いで、チェックポインタが指すアドレスのデータ、すなわちスイッチオンバッファの内容をレジスタにロードし(ステップS167)、ロードした内容と、ポインタが指す賞球個数テーブルのデータ(この場合にはスイッチ入力ビット判定値)との論理積をとる(ステップS168)。この結果、スイッチオンバッファの内容がロードされたレジスタには、検査対象としているスイッチの検出信号に対応したビット以外の7ビットが0になる。そして、ポインタの値を1増やす(ステップS169)。
ステップS168における演算結果が0でなれば、すなわち、検査対象のスイッチの検出信号がオン状態であれば(ステップS170)、入賞が発生したとして入賞報知ランプ363を所定期間点灯させ(ステップS171)、ポインタが指す賞球個数テーブルのデータ(この場合には賞球個数)を賞球加算値に設定し(ステップS172)、賞球加算値を、RAM55に形成されている16ビットの総賞球数格納バッファの内容に加算する(ステップS173)。なお、総賞球数格納バッファは、バックアップRAMに形成されている。そして、遊技制御用マイクロコンピュータ560は、ステップS173での加算の結果、総賞球数格納バッファに格納されている賞球個数(未払出の賞球の総数)があらかじめ定められた異常判定数(例えば、200、500、1000等)以上となった場合には、未払出超過LEDを点灯させる(ステップS174,175)。
ステップS176では処理数を1減らし、処理数が0であれば処理を終了し、処理数が0でなければステップS164に戻る(ステップS177)。また、ステップS170において、ステップS168における演算結果が0であること、すなわち、検査対象のスイッチの検出信号がオフ状態であることを確認したら、ステップS176に移行する。
図50は、ステップS201の賞球制御処理を示すフローチャートである。賞球制御処理では、遊技制御用マイクロコンピュータ560は、賞球プロセスコードの値に応じて、ステップS231〜S236のいずれかの処理を実行する。
図51は、賞球プロセスコードの値が0の場合に実行される待機処理(ステップS231)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、待機処理において、賞球タイマの値を確認する(ステップS241A)。賞球タイマの値が0でない場合には、賞球タイマの値を1減算して処理を終了する(ステップS242A)。なお、賞球タイマの値が0でない場合とは、例えば、前回の払出制御信号の通信時に払出動作中信号がオフになったことを確認して賞球個数信号をオフ状態にしたときに、次に払出REQ信号をオン状態にするまでに待ち時間を挿入するために賞球タイマに所定値がセットされたような場合である。
賞球タイマの値が0であった場合には、遊技制御用マイクロコンピュータ560は、電源確認信号をオフ状態にしているか否か確認し(ステップS243A)、電源確認信号をオフ状態にしているときには、処理を終了する。よって、電源確認信号をオフ状態にしている場合には、払出REQ信号が出力されないことになる。なお、遊技制御用マイクロコンピュータ560は、電源確認信号の出力状態を、出力ポート0バッファのビット6の状態によって把握できる。また、遊技制御用マイクロコンピュータ560は、入力ポートを介して接続確認信号の状態を確認する(ステップS243B)。接続確認信号がオフ状態であれば処理を終了する。よって、接続確認信号がオフ状態である場合には、払出個数信号送信処理(図52参照)に移行されず(具体的には、後述するステップS254での払出REQ中出力値を出力ポート0バッファにセットする処理が実行されず)、払出REQ信号が出力されないことになる。
接続確認信号がオン状態である場合には、入力ポートを介して受信確認信号の状態を確認する(ステップS244)。受信確認信号は、待機状態ではオン状態にならないはずであるから、受信確認信号がオン状態である場合には、遊技制御用マイクロコンピュータ560は、通信エラーが生じたと判断する。そして、賞球異常状態出力値(00(H)または1E(H))を出力ポート0バッファにセットして処理を終了する(ステップS247)。なお、賞球異常状態出力値が出力ポート0バッファにセットされると、ステップS203(図47参照)において出力ポート0バッファの内容がポート0に出力されることによって、電源確認信号および払出REQ信号がオフ状態になる。このような制御によって、賞球払出待機中に受信確認信号がオン状態になったときには、電源確認信号がオフ状態になる。そして、総賞球数格納バッファに0でない値が記憶されていたとしても、払出指令信号を出力する状態に移行しない。すなわち、払出指令信号をオン状態にすることを禁止する。
また、賞球異常状態出力値として1E(H)がセットされる場合は図22に示された場合に対応し、賞球異常状態出力値として00(H)がセットされる場合は図21に示された場合に対応する。賞球異常状態出力値としての1E(H)がセットされると、払出個数信号として1E(H)が出力され、賞球異常状態出力値としての00(H)がセットされると、払出個数信号として00(H)が出力される。ただし、この段階では、通常、賞球異常状態出力値がセットされる前に、払出個数信号として00(H)になっている。
また、遊技制御用マイクロコンピュータ560は、受信確認信号がオン状態でなければ、入力ポートを介して払出動作中信号の状態を確認する(ステップS245)。払出動作中信号は、待機状態ではオン状態にならないはずであるから、払出動作中信号がオン状態である場合には、遊技制御用マイクロコンピュータ560は、通信エラーが生じたと判断する。そして、賞球異常状態出力値(00(H)または1F(H))を出力ポート0バッファにセットして処理を終了する(ステップS246)。このような制御によって、賞球払出待機中に払出動作中信号がオン状態になったときには、電源確認信号がオフ状態になる。そして、総賞球数格納バッファに0でない値が記憶されていたとしても、払出指令信号を出力する状態に移行しない。すなわち、払出指令信号をオン状態にすることを禁止する。
通信エラーが生じていなければ、賞球待機中出力値(40(H))を出力ポート0バッファにセットする(ステップS248)。なお、賞球待機中出力値が出力ポート0バッファにセットされると、ステップS203において出力ポート0バッファの内容がポート0に出力されることによって、払出REQ信号はオフ状態になり、電源確認信号はオン状態になる。ただし、通信に関する制御が正常に続行されていた場合には、この段階で、すでに、払出REQ信号はオフ状態になり、電源確認信号はオン状態になっている。ステップS248の処理が有効になるのは、通信エラーの状態から回復したとき(具体的には、払出制御基板37からの接続確認信号がオン状態に戻ったとき)である。
次いで、遊技制御用マイクロコンピュータ560は、総賞球数格納バッファの内容を確認する(ステップS249)。その値が0であれば処理を終了し、0でなければ、賞球プロセスコードの値を1にした後(ステップS250)、処理を終了する。
図52は、賞球プロセスコードの値が1の場合に実行される払出個数信号送信処理(ステップS232)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、払出個数信号送信処理において、総賞球数格納バッファの内容が賞球コマンド最大値(この例では「15」)よりも小さいか否か確認する(ステップS251)。総賞球数格納バッファの内容が賞球コマンド最大値以上であれば、賞球コマンド最大値を賞球個数バッファに設定する(ステップS252)。また、総賞球数格納バッファの内容が賞球コマンド最大値よりも小さい場合には、総賞球数格納バッファの内容を賞球個数バッファに設定する(ステップS253)。
その後、払出REQ中出力値(60(H))を出力ポート0バッファにセットする(ステップS254)。なお、払出REQ中出力値が出力ポート0バッファにセットされると、ステップS203において出力ポート0バッファの内容がポート0に出力されることによって、払出REQ信号がオン状態になり、電源確認信号のオン状態が維持される。また、賞球個数バッファの内容を出力ポート0バッファの下位5ビットにセットする(ステップS255)。さらに、賞球タイマに、受信確認信号がオンすることを監視するための所定時間(一例として5秒)に相当する値(この例では2500)をセットする(ステップS256)。その後、賞球プロセスコードの値を2にして(ステップS257)、処理を終了する。なお、5秒は、1回の払出処理(例えば最大25個の遊技球の払出)が完了するのに十分な時間であり、払出制御手段が球貸し処理を行っていることに起因して、払出REQ信号の確認を行わない期間を考慮した時間である。複数回の球貸し処理(例えば1回につき25個の遊技球の払い出し)が連続して実行されることが許容されている場合には、受信確認信号がオンすることを監視するための所定時間は、連続して実行される球貸し処理の最大回数を考慮して定められる。
なお、この実施の形態では、賞球コマンド最大値は「15」である。従って、最大で「15」の払出数を指定する払出個数信号が払出制御基板37に送信される。
図53は、賞球プロセスコードの値が2の場合に実行される受信確認信号オン待ち処理(ステップS233)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、受信確認信号オン待ち処理において、受信確認信号がオン状態になったことに応じて(ステップS261)、総賞球数格納バッファの内容から、賞球個数バッファの内容(払出制御用マイクロコンピュータ370に指令した賞球払出個数)を減算する(ステップS262)。そして、出力ポート0バッファの払出REQ信号出力ビットをリセットする(ステップS263)。なお、出力ポート0バッファの払出REQ信号出力ビットがリセットされると、ステップS203において出力ポート0バッファの内容がポート0に出力されることによって、払出REQ信号はオフ状態になるが、取込要求信号である払出REQ信号がオフ状態になったことによって払出指令信号がオフ状態になったことになる。
さらに、受信確認信号がオフ状態になることを監視するための所定時間(一例として100ms)に相当する値を賞球タイマにセットする(ステップS264)。また、賞球プロセスコードの値を3にして(ステップS265)、処理を終了する。
受信確認信号がオン状態になっていない場合には、賞球タイマの値を1減算する(ステップS266)。賞球タイマの値が0になっていない場合には処理を終了する。賞球タイマの値が0になった場合には(ステップS267)、遊技制御用マイクロコンピュータ560は、通信エラーが生じたと判断する。そして、賞球異常状態出力値(00(H)または1E(H))を出力ポート0バッファにセットする(ステップS268)。賞球異常状態出力値が出力ポート0バッファにセットされると、ステップS203(図47参照)において出力ポート0バッファの内容がポート0に出力されることによって、電源確認信号および払出REQ信号がオフ状態になる。そして、賞球プロセスコードの値を待機処理に相当する0にして(ステップS269)、処理を終了する。
図54は、賞球プロセスコードの値が3の場合に実行される受信確認信号オフ待ち処理(ステップS234)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、受信確認信号オフ待ち処理において、受信確認信号がオフ状態になったことに応じて(ステップS271)、払出動作中信号がオン状態になることを監視するための所定時間(一例として100ms)に相当する値を賞球タイマにセットする(ステップS272)。また、賞球プロセスコードの値を4にして(ステップS273)、処理を終了する。
受信確認信号がオフ状態になっていない場合には、賞球タイマの値を1減算する(ステップS275)。賞球タイマの値が0になっていない場合には処理を終了する。賞球タイマの値が0になった場合には(ステップS276)、遊技制御用マイクロコンピュータ560は、通信エラーが生じたと判断する。そして、賞球異常状態出力値(00(H)または1E(H))を出力ポート0バッファにセットする(ステップS277)。そして、賞球プロセスコードの値を待機処理に相当する0にして(ステップS278)、処理を終了する。
図55は、賞球プロセスコードの値が4の場合に実行される払出動作中信号オン待ち処理(ステップS235)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、払出動作中信号オン待ち処理において、払出動作中信号がオン状態になったことに応じて(ステップS281)、払出動作中信号がオフ状態になることを監視するための所定時間(一例として5秒)に相当する値を賞球タイマにセットする(ステップS282)。また、賞球プロセスコードの値を5にして(ステップS283)、処理を終了する。
払出動作中信号がオン状態になっていない場合には、賞球タイマの値を1減算する(ステップS285)。賞球タイマの値が0になっていない場合には処理を終了する。賞球タイマの値が0になった場合には(ステップS286)、遊技制御用マイクロコンピュータ560は、通信エラーが生じたと判断する。そして、賞球異常状態出力値(00(H)または1F(H))を出力ポート0バッファにセットする(ステップS287)。賞球異常状態出力値が出力ポート0バッファにセットされると、ステップS203(図47参照)において出力ポート0バッファの内容がポート0に出力されることによって、電源確認信号および払出REQ信号がオフ状態になる。そして、賞球プロセスコードの値を待機処理に相当する0にして(ステップS288)、処理を終了する。
図56は、賞球プロセスコードの値が5の場合に実行される払出動作中信号オフ待ち処理(ステップS236)を示すフローチャートである。遊技制御用マイクロコンピュータ560は、払出動作中信号オフ待ち処理において、払出動作中信号がオフ状態になったことに応じて(ステップS291)、遅延時間値(一例として20msに相当する10)を賞球タイマにセットし(ステップS294)、出力ポート0バッファの払出個数信号出力ビット(下位5ビット)を0にして(ステップS297)、また、賞球プロセスコードの値を0にして(ステップS298)、処理を終了する。この場合、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の通信は正常に終了したことになる。なお、遅延時間値は、次に払出REQ信号をオン状態にするまでに待ち時間を設けるためにセットされる。
払出動作中信号がオフ状態になっていない場合には、賞球タイマの値を1減算する(ステップS292)。賞球タイマの値が0になっていない場合には処理を終了する。賞球タイマの値が0になった場合には(ステップS293)、遊技制御用マイクロコンピュータ560は、払出エラーが生じたと判断する。そして、遊技制御用マイクロコンピュータ560は、異常報知コマンド送信要求をセットし(ステップS295)、出力ポート0バッファの電源確認信号出力ビットをリセットする(ステップS296)。また、出力ポート0バッファの払出個数信号出力ビット(下位5ビット)を0にし(ステップS297)、賞球プロセスコードの値を0にして(ステップS298)、処理を終了する。なお、異常報知コマンド送信要求がセットされると、演出制御用マイクロコンピュータ100に異常報知コマンドが送信される。
以上のように、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370との間の通信の異常(通信エラー)が発生したときには、遊技球の払い出しを停止させるための制御(例えば、電源確認信号をオフ)を行う。そして、遊技制御用マイクロコンピュータ560は、払出制御用マイクロコンピュータ370との間の通信の異常が解消されるまで遊技球の払い出しを停止させる。すなわち、新たな事象(遊技球の入賞等)が生じても、それに応じた処理を行わず、例えば新たに生じた事象を記憶しておく。遊技制御用マイクロコンピュータ560は、通信異常が解消されると(例えば、接続確認信号のオン状態を検出すると)、通信を再開する。
この実施の形態では、遊技制御用マイクロコンピュータ560が景品遊技媒体数記憶手段(この例では総賞球数格納バッファ)に記憶されている景品遊技媒体数データから払出指令信号で指定した払出数に対応する値を減算する減算処理を実行するための所定の条件は、払出制御用マイクロコンピュータ370から受信確認信号を受信したとき、具体的には、受信確認信号がオン状態になったときである。なお、受信確認信号がオン状態になったときには、払出制御用マイクロコンピュータ370は、払出指令信号で指令された個数の賞球払出をまだ行っていない。受信確認信号がオン状態になったときよりも後に(例えば、払出動作中信号がオフ状態になったとき、すなわち払出個数信号で指令した個数の賞球払出が完了したときに)総賞球数格納バッファの減算処理を行うように構成すると、賞球払出中に不正に遊技機の電力供給を停止させた後に電力供給を復旧させるような不正行為によって、不正に多数の賞球払出が行われてしまう。例えば、払出指令信号で15個の賞球払出が指令された場合に、10個の賞球払出がなされた時点で、不正に遊技機の電力供給を停止させた後に電力供給を復旧させると、総賞球数格納バッファの内容は何ら減算されていないので、実際には10個の賞球払出はなされているにも関わらず、その10個の賞球払出はなされていないものとして、賞球制御を続行してしまう。
しかし、この実施の形態では、受信確認信号がオン状態になったときに、すなわち、払出制御用マイクロコンピュータ370が払出指令信号を受け付けて受信確認信号を送信したときに総賞球数格納バッファの減算処理が実行されるので、上記の不正行為を防止することができる。
なお、遊技制御手段と払出制御手段とが賞球払出制御に関して双方向通信を行い、遊技制御手段が、受信確認信号に相当する信号を受信したことに応じて、景品遊技媒体数記憶手段に記憶されている景品遊技媒体数データから払出指令信号で指定した払出数に対応する値を減算する減算処理を行う遊技機は知られている(例えば、特開2004−65676号公報参照。)。
図57は、特開2004−65676号公報に記載されている払出制御信号の出力の仕方を示すタイミングチャートである。図57に示すように、特開2004−65676号公報に記載されている遊技機では、遊技制御手段が、受信確認信号に相当するBUSY信号がオン状態となったあとオフ状態となったことに応じて、景品遊技媒体数記憶手段に記憶されている景品遊技媒体数データから払出指令信号で指定した払出数に対応する値を減算する減算処理を行うようにしている。
しかし、特開2004−65676号公報に記載されている遊技機では、遊技制御手段は、減算処理を行った後でも、払出制御手段が指示された個数の賞球払出を完了するまで払出指令信号(特に払出REQ信号)のオン状態を維持する。そして、払出指令信号のオン状態が維持されている状態(例えば図57に示す時刻T)で電源断が生じた後に電源が復旧すると、遊技制御手段は、制御状態が保存されている場合には、復旧処理によって、再び払出指令信号をオン状態にする。その場合、払出制御手段は、最初から(例えば15個の賞球払出の指示を受けた場合の1個目)賞球払出処理を再開するので、電源断が生ずる前に数個の遊技球を賞球として払い出していた場合には、重複払出が行われることになる。一方、この実施の形態では、減算処理を行うときに払出指令信号をオフ状態にするので、すなわち、早めに払出指令信号をオフ状態にするので、重複払出が行われ賞球が過剰に払い出されてしまう可能性が低減する。
次に、払出制御手段(払出制御用マイクロコンピュータ370およびI/Oポート)の動作を説明する。図58は、遊技機に対して電力供給が開始され払出制御用マイクロコンピュータ370へのリセット信号がハイレベルになったことに応じて払出制御用マイクロコンピュータ370が実行するメイン処理を示すフローチャートである。メイン処理では、払出制御用マイクロコンピュータ370は、まず、必要な初期設定を行う。すなわち、払出制御用マイクロコンピュータ370は、まず、割込禁止に設定する(ステップS701)。次に、割込モードを割込モード2に設定し(ステップS702)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS703)。また、払出制御用マイクロコンピュータ370は、内蔵デバイスレジスタの設定(初期化)を行い(ステップS704)、CTCおよびPIOの設定(初期化)を行う(ステップS705)を行った後に、RAMをアクセス可能状態に設定する(ステップS706)。
この実施の形態では、内蔵CTCのうちの一つのチャネルがタイマモードで使用される。従って、ステップS704の内蔵デバイスレジスタの設定処理およびステップS705の処理において、使用するチャネルをタイマモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。そして、そのチャネルによる割込がタイマ割込として用いられる。タイマ割込を例えば2ms毎に発生させたい場合は、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。
なお、タイマモードに設定されたチャネル(この実施の形態ではチャネル3)に設定される割込ベクタは、タイマ割込処理の先頭アドレスに相当するものである。具体的は、Iレジスタに設定された値と割込ベクタとでタイマ割込処理の先頭アドレスが特定される。タイマ割込処理では、払出手段を制御する払出制御処理(少なくとも主基板からの賞球払出に関する指令信号に応じて球払出装置97を駆動する処理を含み、球貸し要求に応じて球払出装置97を駆動する処理が含まれていてもよい。)が実行される。
この実施の形態では、払出制御用マイクロコンピュータ370でも割込モード2が設定される。従って、内蔵CTCのカウントアップにもとづく割込処理を使用することができる。また、CTCが送出した割込ベクタに応じた割込処理開始アドレスを設定することができる。
CTCのチャネル3(CH3)のカウントアップにもとづく割込は、CPUの内部クロック(システムクロック)をカウントダウンしてレジスタ値が「0」になったら発生する割込であり、タイマ割込として用いられる。具体的には、払出制御用CPU371の動作クロックを分周したクロックがCTCに与えられ、クロックの入力によってレジスタの値が減算され、レジスタの値が0になるとタイマ割込が発生する。例えば、CH3のレジスタ値はシステムクロックの1/256周期で減算される。分周したクロックにもとづいて減算が行われるので、レジスタの初期値は大きくならない。
次いで、払出制御用マイクロコンピュータ370は、RAMクリア処理を行う(ステップS707)。また、RAM領域のフラグやカウンタなどに初期値を設定する(ステップS708)。ステップS708の処理には、賞球未払出個数カウンタ初期値(例えば0)を賞球未払出個数カウンタにセットする処理、および接続確認信号をオン状態にするための処理(具体的には、RAMに形成されている出力ポート1バッファのビット4をセットする処理)が含まれる。なお、出力ポートバッファの内容は、後述するステップS760の出力処理が最初に実行されるときに出力ポートの出力に反映される。メイン処理は遊技機に対して電力供給が開始されたことに応じて開始され、払出制御処理における出力処理が最初に実行されるときに出力ポートに接続確認信号が出力される(オン状態になる)ので、接続確認信号は、遊技機に対する電力供給が開始され払出処理を実行可能な状態になったときに、オン状態にされることになる。
そして、定期的にタイマ割込がかかるように払出制御用マイクロコンピュータ370に設けられているCTCのレジスタの設定を行う(ステップS709)。すなわち、初期値としてタイマ割込発生間隔に相当する値が所定のレジスタ(時間定数レジスタ)に設定される。そして、初期設定処理のステップS701において割込禁止とされているので、初期化処理を終える前に割込が許可される(ステップS710)。その後、タイマ割込の発生を監視するループ処理に入る。
上記のように、この実施の形態では、払出制御用マイクロコンピュータ3701の内蔵CTCが繰り返しタイマ割込を発生するように設定される。そして、タイマ割込が発生すると、払出制御用マイクロコンピュータ370は、タイマ割込処理においてタイマ割込フラグをセットする。メイン処理におけるループ処理では、タイマ割込フラグがセットされたことを検出すると、ステップS750以降の払出制御処理を実行する。
図59のステップS750において、払出制御用マイクロコンピュータ370は、発射モータ94に対する励磁パターンの出力処理(発射モータφ1〜φ4のパターンの出力ポート0への出力)を行う。なお、ステップS752の発射モータ制御処理において、励磁パターンがRAM領域である励磁パターンバッファに格納され、ステップS750では、払出制御用マイクロコンピュータ370は、励磁パターンバッファの内容を出力ポート0の下位4ビットに出力する処理を行う。
次に、払出制御用マイクロコンピュータ370は、入力判定処理を行う(ステップS751)。入力判定処理は、払出個数カウントスイッチ301およびエラー解除スイッチ375の検出信号の状態チェックを行う処理を含む。具体的には、それらのそれぞれに対応したスイッチタイマ(払出個数カウントスイッチタイマ、エラー解除スイッチタイマ)がRAMに形成され、スイッチチェック処理において、それらがオン状態であることを検出したら対応するスイッチタイマの値を+1し、オフ状態であることを検出したら対応するスイッチタイマの値をクリアする。
次に、払出制御用マイクロコンピュータ370は、発射モータ制御処理を実行する(ステップS752)。発射モータ制御処理では、発射モータφ1〜φ4のパターンを励磁パターンバッファに格納する。また、発射モータ94を不能動化すべきときには、発射モータ94を回転させない発射モータφ1〜φ4のパターンを励磁パターンバッファに格納する。また、払出制御用マイクロコンピュータ370は、払出モータ制御処理を実行する(ステップS753)。払出モータ制御処理では、払出モータ289を駆動すべきときには、払出モータφ1〜φ4のパターンを出力ポート0に出力するための処理を行う。
また、払出制御用マイクロコンピュータ370は、カードユニット50と通信を行うプリペイドカードユニット制御処理を実行する(ステップS754)。次いで、遊技制御用マイクロコンピュータ560と通信を行う主制御通信処理を実行する(ステップS755)。さらに、カードユニット50からの球貸し要求に応じて貸し球を払い出す制御を行い、また、主基板からの払出個数信号が示す個数の賞球を払い出す制御を行う賞球球貸し制御処理を実行する(ステップS756)。
そして、払出制御用マイクロコンピュータ370は、各種のエラーを検出するエラー処理を実行する(ステップS757)。また、遊技機外部に出力される賞球情報や球貸し情報を出力するための情報出力処理を実行する(ステップS758)。また、エラー処理の結果に応じてエラー表示LED374に所定の表示を行うとともに、賞球LED51および球切れLED52を点灯するための表示制御処理を実行する(ステップS759)。なお、払出制御用マイクロコンピュータ370は、表示制御処理において、払出動作中信号がオン状態であるときに、賞球LED51を点灯するための制御を行う。また、払出動作中信号をオフ状態にしたら、賞球LED51を消灯するための制御を行う。
また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポート0バッファ、出力ポート1バッファ、出力ポート2バッファ)が設けられているのであるが、払出制御用マイクロコンピュータ370は、出力ポート0バッファ、出力ポート1バッファおよび出力ポート2バッファの内容を出力ポートに出力する(ステップS760:出力処理)。ただし、出力ポート0の下位4ビット(発射モータφ1〜φ4)については、ステップS750で実行されているので、出力処理においては、出力ポート0の下位4ビットについての出力を行わない。出力ポート0バッファ、出力ポート1バッファおよび出力ポート2バッファは、払出モータ制御処理(ステップS753)、プリペイドカード制御処理(ステップS754)、主制御通信処理(ステップS755)、情報出力処理(ステップS758)および表示制御処理(ステップS759)で更新される。
図60は、ステップS753の払出モータ制御処理を示すフローチャートである。払出モータ制御処理において、払出制御用マイクロコンピュータ370は、払出モータ制御コードの値に応じて、ステップS521〜S526のいずれかの処理を実行する。
払出モータ制御コードの値が0の場合に実行される払出モータ通常処理(ステップS521)では、払出制御用マイクロコンピュータ370は、ポインタを、ROMに格納されているテーブルの先頭アドレスにセットする。払出モータ通常処理設定テーブルには、球払出時の払出モータ289を回転させるための各ステップの励磁パターン(払出モータφ1〜φ4)のデータが順次設定されている払出モータ励磁パターンテーブルが格納されている。
払出モータ制御コードの値が1の場合に実行される払出モータ起動準備処理(ステップS522)では、払出制御用マイクロコンピュータ370は、出力ポート0の出力状態に対応した出力ポート0バッファのビット4〜7に励磁パターンの初期値を設定する等の処理を行う。
払出モータ制御コードの値が2の場合に実行される払出モータスローアップ処理(ステップS523)では、払出制御用マイクロコンピュータ370は、払出モータ289を滑らかに回転開始させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔に近づくような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応した出力ポート0バッファのビット4〜7に設定する。読み出しに際して、ポインタが指すアドレスの払出モータ励磁パターンテーブルの内容を読み出すとともに、ポインタの値を+1する。
払出モータ制御コードの値が3の場合に実行される払出モータ定速処理(ステップS524)では、払出制御用マイクロコンピュータ370は、定期的に払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応した出力ポート0バッファのビット4〜7に設定する。
払出モータ制御コードの値が4の場合に実行される払出モータブレーキ処理(ステップS525)では、払出制御用マイクロコンピュータ370は、払出モータ289を滑らかに停止させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔から遠ざかるような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応した出力ポート0バッファのビット4〜7に設定する。
払出モータ制御コードの値が5の場合に実行される球噛み時払出モータブレーキ処理(ステップS526)では、払出制御用マイクロコンピュータ370は、球噛みを解除するための回転の場合に、払出モータ289を滑らかに停止させるために、球噛みを解除するための払出モータ289の回転の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔から遠ざかるような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポート0の出力状態に対応した出力ポート0バッファのビット4〜7に設定する。
図61は、ステップS755の主制御通信処理を示すフローチャートである。主制御通信処理では、払出制御用マイクロコンピュータ370は、電源確認信号がオン状態であれば(ステップS51)、主制御通信制御コードの値に応じて、ステップS531〜S535のいずれかの処理を実行する。
電源確認信号がオフ状態であれば、払出個数信号が1F(H)を示している場合には、エラーフラグにおける払出動作中信号エラービットをセットし(ステップS52,S53)、接続確認信号をオフ状態にする。払出個数信号が1E(H)を示している場合には、エラーフラグにおける受信確認信号エラービットをセットし(ステップS54,S55)、接続確認信号をオフ状態にする(ステップS58)。払出個数信号が1F(H)または1E(H)を示していない場合には、賞球払出動作中であれば(ステップS56)、エラーフラグにおける払出動作中信号エラービットをセットし(ステップS57)、接続確認信号をオフ状態にする(ステップS58)。なお、賞球払出動作中であるか否かは、RAMに形成されている賞球動作中フラグがセットされているか否かによって判定される。また、ステップS58で接続確認信号をオフ状態にする場合、RAMに形成されている出力ポート1バッファの接続確認信号出力ビット(ビット4:図37参照)をリセットし、ステップS760の出力処理において、出力ポート1バッファの内容がポート1に出力されることによって、実際に接続確認信号がオフ状態になる。
また、ステップS52,S53の処理は、遊技制御用マイクロコンピュータ560が実行するステップS287の処理(賞球異常出力値として1F(H)を使用する場合)に対応する。ステップS54,S55の処理は、遊技制御用マイクロコンピュータ560が実行するステップS268,S277の処理(賞球異常出力値として1E(H)を使用する場合)に対応する。ステップS56,S57の処理は、遊技制御用マイクロコンピュータ560が実行するステップS296の処理に対応する。なお、この実施の形態では、ステップS53,S57において、ともに、払出動作中信号エラービットをセットしているが、払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560が払出動作中信号がオンしなかったことを検出したときに通信エラーと判定したのか(ステップS287の場合)、払出動作中信号がオフしなかったことを検出したときに通信エラーと判定したのか(ステップS296の場合)を区別できるので、ステップS53とステップS57とで、セットするエラービットを変えるようにしてもよい。
図62は、主制御通信制御コードの値が0の場合に実行される待機処理(ステップS531)を示すフローチャートである。待機処理において、払出制御用マイクロコンピュータ370は、エラービットがオンしている場合には、以降の処理を実行せずに処理を終了する(ステップS541)。ステップS541では、エラーフラグ中のビットのうち1つでもセットされていたら、エラービットがセットされていると判断する。
また、払出制御用マイクロコンピュータ370は、BRDY信号がオン状態であれば、以降の処理を実行せずに処理を終了する(ステップS542)。BRDY信号がオン状態であるということは、カードユニット50から球貸し要求が発生していることまたは球貸し処理中を意味する。すなわち、球貸し要求が発生しているときまたは球貸し処理中であるときには、主基板31の遊技制御用マイクロコンピュータ560との通信(賞球払出に関する通信)が進行しない。
ステップS541〜S542の条件が成立せず、電源確認信号がオン状態である場合には、払出制御用マイクロコンピュータ370は、払出REQ信号がオン状態になっているか否か確認する(ステップS543,S544)。オン状態になっている場合には、払出個数信号が示す賞球数を、一時記憶するためのRAM領域である賞球未払出個数バッファにセットし(ステップS545)、受信確認信号をオン状態にするための処理を行う(ステップS546)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける受信確認信号に対応したビットをオン状態に設定する。また、払出REQ信号がオフ状態になることを監視するための所定時間(一例として100ms)に相当する値を主制御通信制御タイマにセットする(ステップS547)。そして、主制御通信制御コードの値を1にして(ステップS548)、処理を終了する。
なお、払出制御用マイクロコンピュータ370は、ステップS545において、払出個数信号が賞球数として0個を示していたら、ステップS546の処理を実行しない。遊技制御用マイクロコンピュータ560は、払出REQ信号をオン状態にした場合に賞球数として0個を示す払出個数信号を送信することはなく、また、賞球払出待機中において払出個数信号が0個を示す状態(無効コマンドを出力する状態)にしているので、払出REQ信号がオン状態であって払出個数信号が0個を示す状態になっているということは、ノイズ等で基板間で払出REQ信号がオン状態になってしまったと考えられる。従って、そのような状況では、払出制御用マイクロコンピュータ370は、ステップS546の処理を実行しないことによって、受信確認信号をオン状態にしないことが好ましい。
図63は、主制御通信制御コードの値が1の場合に実行される払出REQ信号オフ待ち処理(ステップS532)を示すフローチャートである。払出REQ信号オフ待ち処理において、払出制御用マイクロコンピュータ370は、払出REQ信号がオフ状態であれば(ステップS551)、払出個数信号が示す賞球数を一時記憶するためのRAM領域である賞球未払出個数バッファの内容を、賞球未払出個数カウンタにセットする(ステップS552)。また、受信確認信号をオフ状態にするための処理を行う(ステップS553)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける受信確認信号に対応したビットをオフ状態に設定する。そして、主制御通信制御コードの値を2にして(ステップS554)、処理を終了する。なお、ステップS553の処理が実行されたことに応じて、後述する払出動作開始待ち処理(図68参照)において賞球払出処理が開始される。
払出REQ信号がオフ状態でなければ、払出制御用マイクロコンピュータ370は、主制御通信制御タイマの値を1減算する(ステップS555)。主制御通信制御タイマの値が0になっていなければ処理を終了する(ステップS556)。主制御通信制御タイマの値が0になった場合には、受信確認信号を送信(オン状態にすること)してから所定時間が経過しても払出REQ信号がオフせず通信エラーが発生したと判断する。そして、受信確認信号および接続確認信号をオフ状態にするための処理を行う(ステップS557)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける受信確認信号および接続確認信号に対応したビットをオフ状態に設定する。また、エラーフラグのビット4(払出REQ信号エラービット)をセットする(ステップS558)。そして、主制御通信制御コードの値を0にして(ステップS559)、処理を終了する。
図64は、主制御通信制御コードの値が2の場合に実行される払出動作開始待ち処理(ステップS533)を示すフローチャートである。払出動作開始待ち処理において、払出制御用マイクロコンピュータ370は、賞球払出処理中であることを示す賞球動作中フラグがオン状態(1:セット状態)になった場合には、(ステップS561)、払出動作中信号をオン状態にするための処理を行う(ステップS562)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける払出動作中信号に対応したビットをオン状態に設定する。そして、主制御通信制御コードの値を3にして(ステップS563)、処理を終了する。
図65は、主制御通信制御コードの値が3の場合に実行される払出動作中処理(ステップS534)を示すフローチャートである。払出動作中処理において、払出制御用マイクロコンピュータ370は、賞球動作中フラグがオフ状態(0:リセット状態)になった場合には(ステップS571)、払出個数信号で指定された個数の賞球払出処理が完了したとして、払出動作中信号をオフ状態にするための処理を行う(ステップS572)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける払出動作中信号に対応したビットをオフ状態に設定する。また、払出個数信号がオフ状態(5ビット全て0)になることを監視するための所定時間(一例として100ms)に相当する値を主制御通信制御タイマにセットする(ステップS573)。そして、主制御通信制御コードの値を4にして(ステップS574)、処理を終了する。
図66は、主制御通信制御コードの値が4の場合に実行される払出個数信号オフ待ち処理(ステップS535)を示すフローチャートである。払出個数信号オフ待ち処理において、払出制御用マイクロコンピュータ370は、払出個数信号がオフ状態になっていたら(ステップS581)、主制御通信制御コードの値を待機状態に対応する0にして(ステップS582)、処理を終了する。この時点で、1回の賞球払出に関わる遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間の通信が正常に終了したことになる。
払出個数信号がオフ状態になっていない場合には、払出制御用マイクロコンピュータ370は、主制御通信制御タイマの値を1減算する(ステップS583)。主制御通信制御タイマの値が0になっていなければ処理を終了する(ステップS584)。主制御通信制御タイマの値が0になった場合には、払出動作中信号の送信を停止(オフ状態にすること)してから所定時間が経過しても払出個数信号がオフ状態にならず通信エラーが発生したと判断する。そして、接続確認信号をオフ状態にするための処理を行う(ステップS585)。具体的には、出力ポート1の出力状態に対応した出力ポート1バッファにおける接続確認信号に対応したビットをオフ状態に設定する。また、エラーフラグのビット5(払出個数信号エラービット)をセットする(ステップS586)。そして、主制御通信制御コードの値を0にして(ステップS582)、処理を終了する。
図67は、ステップS756の賞球球貸し制御処理を示すフローチャートである。賞球球貸し制御処理において、払出制御用マイクロコンピュータ370は、払出個数カウントスイッチ301の検出信号がオン状態になったことを確認したら(ステップS601)、球貸し中であれば球貸し未払出個数カウンタの値を1減らし(ステップS602,S604)、球貸し中でなければ賞球未払出個数カウンタの値を1減らす(ステップS602,S603)。その後、払出制御コードの値に応じてステップS610〜S612のいずれかの処理を実行する。
図68は、払出制御コードが0の場合に実行される払出開始待ち処理(ステップS610)を示すフローチャートである。払出開始待ち処理において、払出制御用マイクロコンピュータ370は、エラービットがセットされていたら、以降の処理を実行しない(ステップS621)。エラーフラグにおけるエラービットには、主制御未接続エラーのビットが含まれている。また、主制御未接続エラーは、主基板31からの電源確認信号が賞球払出中でないときにオフ状態になるとセットされる。従って、払出制御用マイクロコンピュータ370は、遊技機に対して電力供給が開始された後、電源確認信号がオン状態になったことを条件に、実質的な制御を開始する。
また、BRDY信号がオン状態でなければ、ステップS631以降の賞球払出のための処理を実行する。BRDY信号がオン状態であって、さらに、球貸し要求信号であるBRQ信号がオン状態になっていたら球貸し動作中フラグをセットする(ステップS623,S624)。そして、球貸し未払出個数カウンタに「25」をセットし(ステップS625)、払出モータ回転回数バッファに「25」をセットする(ステップS626)。
払出モータ回転回数バッファは、払出モータ制御処理(ステップS768)において参照される。すなわち、払出モータ制御処理では、払出モータ回転回数バッファにセットされた値に対応した回転数分だけ払出モータ289を回転させる制御が実行される。
その後、払出制御用マイクロコンピュータ370は、払出モータ制御処理で実行される処理を選択するための払出モータ制御コードに、払出モータ起動準備処理(ステップS522)に応じた値(具体的は「1」)をセットし(ステップS627)、払出制御コードの値を1にして(ステップS628)、処理を終了する。
ステップS631では、払出制御用マイクロコンピュータ370は、賞球未払出個数カウンタの値が0であるか否かを確認する。賞球未払出個数カウンタの値が0であれば処理を終了する。賞球未払出個数カウンタには、主制御通信処理の払出REQ信号オフ待ち処理におけるステップS552において、すなわち、主基板31の遊技制御用マイクロコンピュータ560からの払出REQ信号がオフ状態になったときに、0でない値(払出個数信号が示す数)がセットされている。賞球未払出個数カウンタの値が0でない場合には、払出モータ回転回数バッファに賞球未払出個数カウンタの値をセットする(ステップS633)。そして、賞球動作中フラグをセットし(ステップS635)、ステップS627に移行する。
図69は、払出制御コードが1の場合に実行される払出モータ停止待ち処理(ステップS611)を示すフローチャートである。払出モータ停止待ち処理において、払出制御用マイクロコンピュータ370は、払出動作が終了したか否か確認する(ステップS641)。払出制御用マイクロコンピュータ370は、例えば、払出モータ制御処理における払出モータブレーキ処理(ステップS525)が終了するときにその旨のフラグをセットし、ステップS641においてそのフラグを確認することによって払出動作が終了したか否かを確認することができる。
払出動作が終了した場合には、払出制御用マイクロコンピュータ370は、払出制御監視タイマに払出通過監視時間をセットする(ステップS642)。払出通過監視時間は、最後の払出球が払出モータ289によって払い出されてから払出個数カウントスイッチ301を通過するまでの時間に、余裕を持たせた時間である。そして、払出制御コードの値を2にして(ステップS643)、処理を終了する。
図70〜図72は、払出制御コードの値が2の場合に実行される払出通過待ち処理(ステップS612)を示すフローチャートである。払出通過待ち処理では、賞球払出が行われているときには、賞球未払出個数カウンタの値が0になっていれば正常に払出が完了したと判定される。賞球未払出個数カウンタの値が0になっていない場合には、エラー状態でなければ、払出不足分の遊技球(賞球未払出個数カウンタの値が示す個数の遊技球)の再払出動作を、2回を上限として試みる。再払出動作において払出個数カウントスイッチ301によって遊技球が実際に払い出されたことが検出されたら正常に払出が完了したと判定される。なお、この実施の形態では、払出REQ信号を受信したときに賞球未払出個数カウンタにセットされた個数の遊技球が払い出されるように払出モータ289を回転させたのであるから、賞球未払出個数カウンタの値が0になっていない場合には、正常に払出が完了していないことになる。
また、球貸し払出が行われているときには、球貸し未払出個数カウンタの値が0になっていれば正常に払出が完了したと判定される。球貸し未払出個数カウンタの値が0になっていない場合には、エラー状態でなければ、球貸し残数(球貸し未払出個数カウンタの値に相当)の再払出動作を試みる。なお、この実施の形態では、1回の球貸し払出動作で払い出される遊技球数は25個(固定値)であり、25個の遊技球が払い出されるように払出モータ289を回転させたのであるから、球貸し未払出個数カウンタの値が0になっていない場合には、正常に払出が完了していないことになる。
払出通過待ち処理において、払出制御用マイクロコンピュータ370は、まず、払出制御タイマの値を確認し、その値が0になっていればステップS653に移行する(ステップS650)。払出制御タイマの値が0でなければ、払出制御タイマの値を−1する(ステップS651)。そして、払出制御タイマの値が0になっていなければ(ステップS652)、すなわち払出制御タイマがタイムアウトしていなければ処理を終了する。なお、ステップS650の処理は、後述する遊技球払出のリトライ動作が開始されたときのことを考慮した処理である。後述するステップS807の処理が実行された場合には、ステップS650からS653に移行するルートを経てリトライ動作が開始される。
払出制御タイマがタイムアウトしていれば(ステップS652)、球貸し払出処理(球貸し動作)を実行していたか否か確認する(ステップS653)。球貸し動作を実行していたか否かは、RAMに形成されている払出制御状態フラグにおける球貸し動作中ビットがセットされているか否かによって確認される。球貸し動作を実行していない場合、すなわち、賞球払出処理(賞球動作)を実行していた場合には、払出制御用マイクロコンピュータ370は、賞球未払出個数カウンタの値を確認する(ステップS654)。賞球未払出個数カウンタの値が0になっている場合には、正常に賞球払出処理が完了したとして、払出制御状態フラグにおける再払出動作中1ビット、再払出動作中2ビット、賞球動作中フラグおよび球貸し動作中ビットをリセットし(ステップS655)、払出制御コードを0にして(ステップS656)、処理を終了する。
「払出制御状態フラグ」は、初回の再払出動作の実行中であるか否かを示す再払出動作中1ビットと、2回目の再払出動作の実行中であるか否かを示す再払出動作中2ビットと、賞球の払出動作を実行しているか否かを示す賞球動作中フラグと、球貸し動作を実行しているか否かを示す球貸し動作中ビットとを含む複数ビット構成のフラグである。
払出制御用マイクロコンピュータ370は、賞球未払出個数カウンタの値が0になっていない場合には、通信に関わらないエラーについてのエラーフラグ(ここでは、払出スイッチ異常検知エラー1ビット、払出スイッチ異常検知エラー2ビットおよび払出ケースエラービットのうちのいずれか1ビットまたは複数ビット)がセットされていないことを条件として(ステップS659)、再払出動作を実行する。なお、払出スイッチ異常検知エラー1ビット、払出スイッチ異常検知エラー2ビットおよび払出ケースエラービットのうちのいずれか1ビットまたは複数ビットがセットされている場合には、再払出動作を実行しない。
再払出処理(再払出動作を行わせるための制御)を実行するために、払出制御用マイクロコンピュータ370は、まず、再払出動作中2ビットがセットされているか否か確認する(ステップS662)。セットされていなければ、再払出動作中1ビットがセットされているか否か確認する(ステップS663)。再払出動作中1ビットもセットされていなければ、初回の再払出動作を実行するために、再払出動作中1ビットをセットし(ステップS665)、払出モータ回転回数バッファに賞球未払出個数カウンタまたは球貸し未払出個数カウンタの値をセットする(ステップS666)。払出モータ回転回数バッファは、払出モータ制御処理(ステップS768)において参照される。すなわち、払出モータ制御処理では、払出モータ回転回数バッファにセットされた値に対応した回転数分だけ払出モータ289を回転させる制御が実行される。なお、ステップS666において、球貸し未払出個数カウンタの値も取り扱われるのは、球貸し払出処理における再払出処理でもステップS666が用いられるからである。払出制御用マイクロコンピュータ370は、ステップS666において、賞球払出処理における再払出処理では賞球未払出個数カウンタの値をセットし、球貸し払出処理における再払出処理では球貸し未払出個数カウンタの値をセットする。その後、払出制御コードを1にして(ステップS667)、処理を終了する。
ステップS663において、再払出動作中1ビットがセットされていることを確認したら、払出制御用マイクロコンピュータ370は、2回目の再払出を実行するために、再払出動作中1ビットをリセットし(ステップS669)、再払出動作中2ビットをセットする(ステップS670)。そして、ステップS666に移行する。
ステップS662において、再払出動作中2ビットがセットされていることを確認したら、払出制御用マイクロコンピュータ370は、2回の再払出処理を実行しても払出不足分の遊技球が払い出されなかったとして、エラーフラグにおける払出ケースエラービットをセットする(ステップS672)。その際に、再払出動作中2ビットをリセットしておく(ステップS671)。そして、処理を終了する。
以上のように、再払出処理(補正払出処理)において所定回(この例では2回)の再払出動作を行っても遊技球の払出不足が解消されない場合には、遊技球の払出動作不良として、払出個数カウントスイッチ未通過エラービット(払出ケースエラービット)がセットされる。
従って、この実施の形態では、払出制御手段における景品遊技媒体払出制御手段は、払出検出手段としての払出個数カウントスイッチ301からの検出信号にもとづいて、景品遊技媒体の払い出しが完了しなかったことを検出したときに、あらかじめ決められた所定回(この例では2回)を限度として、払出手段に不足分の景品遊技媒体の払い出しを行わせるように制御を行う。なお、この実施の形態では、景品遊技媒体を払い出すためのリトライ動作を2回行っても景品遊技媒体の払い出しが行われなかった場合には、払出ケースエラービットをセットしてエラー発生中状態になるが(ステップS672)、景品遊技媒体の払い出しが完了しなかったことを初めて検知したときに払出ケースエラービットをセットしてもよい。なお、「リトライ動作(あるいは「リトライ」、「リトライ動作処理」)」とは、所定数の遊技球の払い出しを行うための通常の払出処理を実行したのにもかかわらず、実際の払い出し数が少ない場合に実行させる動作であって、通常の払出処理とは別に、未払出の遊技球を払い出すために払出処理を再度実行させるための動作(すなわち再払出動作)を意味する。
賞球球貸し制御処理において、払出動作(1回の賞球払出または1回の球貸し)を行うか否か判定するためにエラービットがチェックされるのは、図68に示された払出開始待ち処理においてのみである。図69に示された払出モータ停止待ち処理および図70等に示された払出通過待ち処理では、エラービットはチェックされない。なお、払出通過待ち処理におけるステップS658等でもエラービットがチェックされているが、そのチェックは再払出動作を行うか否かを判断するためであって、払出動作(1回の賞球払出または1回の球貸し)を開始するか否か判定するためではない。従って、ステップS626またはS633の処理が行われて遊技球の払出処理が開始された後では、エラーが発生しても払出処理は中断されない。すなわち、エラーが発生すると、遊技球の払出処理は、切りのよい時点(1回の賞球払出または1回の球貸しが終了した時点)まで継続される。なお、ステップS621でチェックされるエラーフラグにおけるエラービットの中には、主基板31からの電源確認信号がオフ状態になったことを示すエラービットが含まれている。よって、電源確認信号がオフ状態になったときにも、遊技球の払出処理は、切りのよい時点で停止される。また、1回の賞球払出または1回の球貸しとは、賞球未払出個数カウンタまたは球貸し未払出個数カウンタに0でない値がセットされてから賞球未払出個数カウンタまたは球貸し未払出個数カウンタの値が0になるまでの遊技球払出処理を意味する。
電源確認信号がオフ状態になったとき、特許文献1に記載の遊技機と同様に、払い出しを中断し、エラー状態から回復したときに払い出しを再開する構成にすると、データ(未払出分の遊技媒体の個数情報)の管理が複雑になってしまうが、本発明では、予定数の景品遊技媒体の払い出しが完了して、切りのよい時点で払出処理を停止する。従って、そのようなデータを管理する必要がなく、制御を簡易化することができる。
ステップS653で球貸し払出処理(球貸し動作)を実行していたことを確認すると、払出制御用マイクロコンピュータ370は、球貸し未払出個数カウンタの値が0になっているか否か確認する(ステップS657)。0になっていれば、正常に球貸し払出処理が完了したとしてステップS655に移行する。
球貸し未払出個数カウンタの値が0になっていなければ、エラーフラグ(具体的には、払出スイッチ異常検知エラー1ビット、払出スイッチ異常検知エラー2ビットおよび払出ケースエラービットのうちのいずれか1ビットまたは複数ビット)がセットされていないことを条件として(ステップS658)、再払出処理を実行する。なお、エラーフラグがセットされている場合には、再払出処理を実行しない。
再払出処理を実行するために、払出制御用マイクロコンピュータ370は、まず、再払出動作中2ビットがセットされているか否か確認する(ステップS676)。セットされていなければ、再払出動作中1ビットがセットされているか否か確認する(ステップS677)。再払出動作中1ビットもセットされていなければ、初回の再払出動作を実行するために、再払出動作中1ビットをセットし(ステップS679)、ステップS666に移行する。
ステップS677において、再払出動作中1ビットがセットされていることを確認したら、払出制御用マイクロコンピュータ370は、再払出動作を再度実行するための処理を行う。具体的には、再払出動作中1ビットをリセットする(ステップS681)。そして、再払出動作中2ビットをセットし(ステップS685)、ステップS666に移行する。
ステップS676において、再払出動作中2ビットがセットされていることを確認したら、払出制御用マイクロコンピュータ370は、再払出動作中2ビットをリセットし(ステップS686)、エラーフラグにおける払出ケースエラービットをセットする(ステップS688)。そして、処理を終了する。
以上のように、球貸し処理に係る再払出処理(補正払出処理)において連続して2回の再払出動作を行っても遊技球の払出不足が解消されないが場合には、遊技球の払出動作不良として、払出個数カウントスイッチ未通過エラービット(払出ケースエラービット)がセットされる。
以上に説明したように、遊技制御用マイクロコンピュータ560が、総賞球数格納バッファに記憶されている賞球の未払出総数が所定の異常判定数以上となったときに、未払出超過LED362を点灯させて異常の発生を報知するように構成されているので、未払出超過LED362による異常の発生の報知によって、払出制御用マイクロコンピュータ370との通信が不正基板に搭載されたマイクロコンピュータとの間で実行されていることを報知することができ、不正基板を容易に発見することができるようになる。
この実施の形態では、入賞が発生したときに、主基板31に搭載されている入賞報知ランプ363を所定期間点灯させる構成としているので、なりすまし基板が設置されている場合には入賞が発生しても入賞報知ランプ363が点灯しなくなるようにすることができ、なりすまし基板が設置されていることを容易に発見することができる。さらに、入賞報知ランプ363が点灯しなくならないように、入賞検出のスイッチ(例えば始動口スイッチ14a)の検出信号がなりすまし基板だけでなく正規の主基板31にも入力されるように配線された場合であっても、主基板31と払出制御基板37との通信が行われないため、主基板31で管理されている総賞球数格納バッファに記憶されている賞球の未払出総数が減算されなくなり、総賞球数格納バッファに記憶されている賞球の未払出総数が所定の異常判定数以上となって、なりすまし基板が設置されていることを容易に発見することができるのである。なお、本発明においては、遊技進行による信号が主基板31上で認識されることを本旨としているので、例えば、始動口スイッチ14aに限らず、他の入賞検出のスイッチ(ゲートスイッチ32a、カウントスイッチ23、V入賞スイッチ22、全入賞検出スイッチ34、入賞口スイッチ29a,30a,33a,39a等)の検出信号により入賞報知ランプ363を所定期間点灯させるようにしてもよい。
なお、上述した第2の実施の形態では特に言及していないが、主基板31に搭載されている未払出超過LED362は、開封不能な固着手段によって封止された基板ボックス(図29参照)に収納されている。従って、不正基板からの信号によって未払出超過LED362が駆動されることを防止することができる。
なお、上述した実施の形態では、タイマ割込設定を行うまでに乱数回路503の初期設定(乱数回路設定処理)を行うようにしていたが、上述した第2の実施の形態において、逆に、乱数回路503の初期設定(乱数回路設定処理)を行ったあとにタイマ割込の設定を行う(例えば図32に示すステップS15とステップS16を逆の順番で行う)ようにしてもよい。そして、乱数回路設定処理において、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづく値を乱数の初期値として設定するようにしてもよい。このように構成すれば、遊技制御処理の実行中に乱数回路の設定が変更されることが無いようにすることができ、不正行為を防止することができる。
実施の形態3.
第1の実施の形態では、ラッチ信号生成回路533に入力するクロック信号を反転させて、乱数を更新するタイミングと乱数値記憶回路531に乱数を記憶させるタイミングとをずらすようにしたが、ラッチ信号生成回路533に入力するクロック信号を遅延させるようにしてもよい。以下、ラッチ信号生成回路533に入力するクロック信号を遅延させる第3の実施の形態を説明する。
なお、本実施の形態において、第1の実施の形態と同様の構成および処理をなす部分についてはその詳細な説明を省略し、主として第1の実施の形態と異なる部分について説明する。
図73は、乱数回路503の他の構成例を示すブロック図である。なお、この実施の形態において、12ビット乱数回路503aと16ビット乱数回路503bとの基本的な構成は同じである。図73に示すように、この実施の形態では、乱数回路503が、図6で示した反転回路532に代えて遅延回路532Aを含む点で、第1の実施の形態と異なる。
遅延回路532Aは、クロック信号出力回路524から入力する乱数発生用クロック信号SI1を遅延させることによって、クロック信号を遅延させた遅延クロック信号SI4を生成する。また、遅延回路532Aは、生成した遅延クロック信号SI4をラッチ信号生成回路533に出力する。従って、この実施の形態では、ラッチ信号生成回路533は、乱数発生用クロック信号SI1を遅延させた遅延クロック信号SI4に同期して、乱数値記憶回路531にラッチ信号を出力することになる。
なお、遅延回路532A以外の乱数回路503の各構成要素の基本的な機能は、第1の実施の形態で示したそれらの機能と同様である。
以上に説明したように、この実施の形態では、乱数回路503の遅延回路532Aが遅延クロック信号SI4を生成し、遅延クロック信号SI4に同期して乱数の記憶を指示するためのラッチ信号を出力する。そのため、乱数を更新するタイミングと乱数値記憶回路531に乱数を記憶させるタイミングとをずらすことができ、生成した乱数を安定して確実に記憶させることができる。
なお、上述した各実施の形態では、主基板31からの制御コマンドが演出制御基板80に入力され、演出制御基板80を介してランプドライバ基板35及び音声出力基板70に制御コマンドが入力される構成としていたが、他の基板構成であってもよい。例えば、演出制御基板80、ランプドライバ基板35及び音声出力基板70が1枚の基板により構成するようにしてもよい。また、例えば、主基板31からの制御コマンドがランプドライバ基板35及び音声出力基板70に入力され、ランプドライバ基板35又は音声出力基板70を介して制御コマンドが演出制御基板80に入力される構成とされていてもよい。
また、上述した各実施の形態では、主基板31に「なりすました」不正回路基板を発見するものとして説明したが、払出制御基板37に「なりすました」不正回路基板を発見するものに適用することも可能である。
次に、上記に示した各実施の形態における遊技機の他の一例であるスロット機(スロットマシン)の全体の構成について説明する。図74はスロット機を正面からみた正面図である。
図74に示すように、スロット機600は、中央付近に遊技パネル601が着脱可能に取り付けられている。また、遊技パネル601の前面の中央付近には、複数種類の図柄が可変表示される可変表示装置602が設けられている。この実施の形態では、可変表示装置602には、「左」、「中」、「右」の3つの図柄表示エリアがあり、各図柄表示エリアに対応してそれぞれ図柄表示リール602a,602b,602cが設けられている。
遊技パネル601の下部には、遊技者が各種の操作を行うための各種入力スイッチ等が配される操作テーブル620が設けられている。操作テーブル620の奥側には、コインを1枚ずつBETする(かける)ためのBETスイッチ621、1ゲームでかけることのできる最高枚数(本例では3枚)ずつコインをBETするためのMAXBETスイッチ622、精算スイッチ623、およびコイン投入口624が設けられている。コイン投入口624に投入されたコインは、図示しない投入コインセンサによって検知される。
操作テーブル620の手前側には、スタートスイッチ625、左リールストップスイッチ626a、中リールストップスイッチ626b、右リールストップスイッチ626cおよびコイン詰まり解消スイッチ627が設けられている。操作テーブル620の手前左右には、それぞれランプ628a,628bが設けられている。操作テーブル620の下部には、効果音等を出力するスピーカ630が設けられている。
遊技パネル601の上部には、遊技者に遊技方法や遊技状態等を報知する画像表示装置(LCD:液晶表示装置)640が設けられている。例えば、入賞発生時に、キャラクタが所定動作を行う画像を画像表示装置640に表示することで、後述する当選フラグが設定されていることを遊技者に報知する。また、画像表示装置640の左右には、効果音を発する2つのスピーカ641L,641Rが設けられている。
なお、スロット機600で発生する入賞役には、小役入賞と、リプレイ入賞と、ビッグボーナス入賞と、レギュラーボーナス入賞とがある。スロット機600では、スタートスイッチ625を操作したタイミングで乱数が抽出され、上記いずれかの入賞役による入賞の発生を許容するか否かを決定する。入賞の発生が許容されていることを、「内部当選している」という。内部当選した場合、その旨を示す当選フラグがスロット機600の内部で設定される。当選フラグが設定された状態でのゲームでは、その当選フラグに対応する入賞役を引き込むことが可能なようにリール602a〜602cが制御される。一方、当選フラグが設定されていない状態でのゲームでは、入賞が発生しないようにリール602a〜602cが制御される。
なお、スロット機600の遊技の進行を制御する遊技制御用マイクロコンピュータは、乱数を発生する乱数回路(12ビット乱数回路および16ビット乱数回路)を内蔵する。また、遊技制御用マイクロコンピュータは、スタートスイッチ625を操作したタイミングで、乱数回路が発生した乱数(ランダムR)を抽出する。例えば、スタートスイッチ625が押下されると、遊技制御用マイクロコンピュータ560は、スタートスイッチ625から検出信号SSを入力する。また、乱数回路のタイマ回路534は、所定時間継続して検出信号SSが入力されたことを検出すると、乱数値取込レジスタ539に乱数値取込データ「01h」を書き込み、ラッチ信号生成回路533がラッチ信号SLを乱数値記憶回路531に出力する。ラッチ信号SLを入力すると、乱数値記憶回路531は、カウンタ521が更新したカウント値を読み込んで記憶する。また、遊技制御用マイクロコンピュータ560は、所定回数(例えば、3回)継続して検出信号SSが入力されたことを検出すると、出力制御用信号SCを乱数回路の乱数値記憶回路に出力し、乱数回路から乱数値(ランダムR)を抽出する。そして、遊技制御用マイクロコンピュータは、抽出したランダムRにもとづいて入賞の発生を許容するか否かを決定する。
次に、スロット機により提供されるゲームの概要について説明する。
例えば、コイン投入口624からコインが投入されBETスイッチ621又はMAXBETスイッチ622が押下される等してかけ数が設定されると、スタートスイッチ625の操作が有効となる。そして、遊技者によってスタートスイッチ625が操作されると、可変表示装置602に設けられている各図柄表示リール602a〜602cが回転を始める。また、スタートスイッチ625を操作したタイミングで、レギュラーボーナス入賞又はビッグボーナス入賞が内部当選した場合には、例えば、画像表示装置640に所定のキャラクタが所定の動作を行っている画面を表示する等して、内部当選した旨が遊技者等に報知される。
各図柄表示リール602a〜602cが回転を始めてから所定時間が経過すると、各リールストップスイッチ626a〜626cの操作が有効となる。この状態で、遊技者が各リールストップスイッチ626a〜626cのいずれかを押下すれば、操作されたストップスイッチに対応するリールの回転が停止する。なお、各図柄表示リール602a〜602cを停止させずに、所定期間以上放置した場合には、各図柄表示リール602a〜602cが自動的に停止する。
すべての図柄表示リール602a〜602cが停止した時点で、可変表示装置602に表示されている各図柄表示リール602a〜602cの上段、中段、下段の3段の図柄中、かけ数に応じて定められる有効な入賞ライン上に位置する図柄の組合せによって入賞したか否かが定められる。かけ数が1の場合には、可変表示装置602における中段の横1列の入賞ラインのみが有効となる。かけ数が2の場合には、可変表示装置602における上段、中段、下段の横3列の入賞ラインが有効となる。かけ数が3の場合には、可変表示装置602における横3列と斜め対角線上2列の合計5本の入賞ラインが有効ラインとなる。
有効ライン上の図柄の組合せが、予め定められた特定の表示態様となって入賞が発生した場合には、音、光、画像表示装置640の表示等によって所定の遊技演出がなされ、入賞の発生に応じたゲームが開始される。
スロット機600では、スロット機600に搭載されている演出制御手段が、スロット機600に設けられている画像表示装置640の表示制御を行う。画像表示装置640には、演出制御手段の制御によって、飾り図柄の変動表示や、遊技状態や遊技方法を報知するための表示等の様々な情報が表示される。そのような、飾り図柄の変動表示や、遊技状態や遊技方法を報知するための表示等の様々な情報の表示をムービー画像により行い、そのムービー画像の表示制御を画像処理装置640によって行うようにすればよい。