以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機を正面からみた正面図、図2は遊技盤の前面を示す正面図である。
パチンコ遊技機1(以下、単に、遊技機と呼ぶことがある。)は、縦長の方形状に形成された外枠(図示せず)と、外枠の内側に開閉可能に取り付けられた遊技枠とで構成される。また、パチンコ遊技機1は、遊技枠に開閉可能に設けられている額縁状に形成されたガラス扉枠2を有する。遊技枠は、外枠に対して開閉自在に設置される前面枠(図示せず)と、機構部品等が取り付けられる機構板と、それらに取り付けられる種々の部品(後述する遊技盤を除く。)とを含む構造体である。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿(上皿)3がある。打球供給皿3の下部には、打球供給皿3に収容しきれない遊技球を貯留する余剰球受皿4と打球を発射する打球操作ハンドル(操作ノブ)5が設けられている。ガラス扉枠2の背面には、遊技盤6が着脱可能に取り付けられている。なお、遊技盤6は、それを構成する板状体と、その板状体に取り付けられた種々の部品とを含む構造体である。また、遊技盤6の前面には遊技領域7が形成されている。
遊技領域7の中央付近には、それぞれが識別情報としての図柄を可変表示する可変表示部を含む表示領域150を有する可変表示装置9が設けられている。表示領域150には、例えば「左」、「中」、「右」の3つの図柄表示エリアがある。また、この実施の形態では、可変表示装置9の表示領域150において、普通図柄の可変表示も行われ、特別図柄始動記憶数(以下、単に始動記憶数ともいう。)および普通図柄始動記憶数の表示も行われる。また、可変表示装置9の周囲には、可変表示装置を装飾するための装飾部材(表飾り)が設けられている。
可変表示装置9の下方には、始動入賞口14が設けられている。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。また、始動入賞口14の下部には開閉動作を行う可変入賞球装置15が設けられている。可変入賞球装置15は、ソレノイド16によって開状態とされる。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態とされる開閉板20が設けられている。開閉板20は大入賞口を開閉する手段である。開閉板20から遊技盤6の背面に導かれた入賞球のうち一方(V入賞領域)に入った入賞球はV入賞スイッチ22で検出され、開閉板20からの入賞球はカウントスイッチ23で検出される。遊技盤6の背面には、大入賞口内の経路を切り換えるためのソレノイド21Aも設けられている。また、可変表示装置9の上部には、始動入賞口14に入った有効入賞球数すなわち始動記憶数を表示する4個の表示部を有する始動記憶表示器18が設けられている。この例では、4個を上限として、有効始動入賞がある毎に、始動記憶表示器18は点灯している表示部を1つずつ増やす。そして、可変表示装置9の可変表示が開始される毎に、点灯している表示部を1つ減らす。
ゲート32に遊技球が入賞しゲートスイッチ32aで検出されると、普通図柄始動記憶が上限に達していなければ、所定の乱数値が抽出される。そして、普通図柄表示器10において表示状態が変化する可変表示を開始できる状態であれば、普通図柄表示部の表示の可変表示が開始される。普通図柄表示器10の近傍には、ゲート32に入った入賞球数を表示する4個の表示部を有する普通図柄始動記憶表示器41が設けられている。この例では、4個を上限として、ゲート32への球通過がある毎に、普通図柄始動記憶表示器41は点灯している表示部を1つずつ増やす。そして、普通図柄表示器10の可変表示が開始される毎に、点灯している表示部を1つ減らす。
この実施の形態では、可変表示装置9の表示領域150の一部において普通図柄の可変表示が行われ、可変表示は所定時間(例えば29秒)継続する。そして、可変表示の終了時に当り図柄が停止表示されると当りとなる。当りとするか否かは、ゲート32に遊技球が入賞したときに抽出された乱数の値が所定の当り判定値と一致したか否かによって決定される。普通図柄の可変表示の表示結果が当りである場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になって遊技球が入賞しやすい状態になる。すなわち、可変入賞球装置15の状態は、普通図柄の停止図柄が当り図柄である場合に、遊技者にとって不利な状態から有利な状態に変化する。
さらに、確変状態では、普通図柄の停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置15の開放時間と開放回数とのうちの一方または双方が高められ、遊技者にとってさらに有利になる。また、確変状態等の所定の状態では、普通図柄の可変表示期間(変動時間)が短縮されることによって、遊技者にとってさらに有利になるようにしてもよい。
遊技盤6には、複数の入賞口29,30,33,39が設けられ、遊技球の入賞口29,30,33,39への入賞は、それぞれ入賞口スイッチ29a,30a,33a,39aによって検出される。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった打球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。さらに、遊技領域7における各構造物(大入賞口等)の周囲には装飾LEDが設置されている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cおよび装飾用LEDは、遊技機に設けられている装飾発光体の一例である。なお、図1に明示されている装飾ランプ25の他にも、可変表示装置9における周辺部分や開閉板20の周囲部分等には装飾用のランプやLEDが設置されている。
そして、この例では、左枠ランプ28bの近傍に、賞球残数があるときに点灯する賞球ランプ51が設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れランプ52が設けられている。さらに、図1には、パチンコ遊技機1に隣接して設置され、プリペイドカードが挿入されることによって球貸しを可能にする記録媒体処理装置としてのカードユニット50も示されている。
カードユニット50には、使用可能状態であるか否かを示す使用可表示ランプ151、カードユニット50がいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器153、カードユニット50内にカードが投入されていることを示すカード投入表示ランプ154、記録媒体としてのカードが挿入されるカード挿入口155、およびカード挿入口155の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニット50を開放するためのカードユニット錠156が設けられている。
打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。打球が始動入賞口14に入り始動口スイッチ14aで検出されると、特別図柄の可変表示を開始できる状態であれば、可変表示装置9の表示領域150において特別図柄が可変表示(変動)を始める。図柄の可変表示を開始できる状態でなければ、始動記憶数を1増やす。
特別図柄の可変表示は、一定時間が経過したときに停止する。停止時の特別図柄の組み合わせが大当り図柄(特定表示態様)であると、大当り遊技状態に移行する。すなわち、開閉板20が、一定時間経過するまで、または、所定個数(例えば10個)の打球が入賞するまで開放する。そして、開閉板20の開放中に打球がV入賞領域に入賞しV入賞スイッチ22で検出されると、継続権が発生し開閉板20の開放が再度行われる。継続権の発生は、所定回数(例えば15ラウンド)許容される。
停止時の特別図柄の組み合わせが確率変動を伴う大当り図柄(確変図柄)の組み合わせである場合には、次に大当りとなる確率が高くなる。すなわち、確変状態という遊技者にとってさらに有利な状態となる。
次に、パチンコ遊技機1の裏面の構造について図3を参照して説明する。図3は、遊技機を裏面から見た背面図である。図4は、各種部材が取り付けられた機構板を遊技機背面側から見た背面図である。
図3に示すように、遊技機裏面側では、可変表示装置9を制御する図柄制御基板80を含む可変表示制御ユニット49、遊技制御用マイクロコンピュータ等が搭載された遊技制御基板(主基板)31が設置されている。また、球払出制御を行う払出制御用マイクロコンピュータ等が搭載された払出制御基板37が設置されている。さらに、遊技盤6に設けられている各種装飾LED、装飾ランプ25、枠側に設けられている天枠ランプ28a、左枠ランプ28b、右枠ランプ28c、賞球ランプ51および球切れランプ52を点灯制御するランプ制御手段が搭載されたランプ制御基板35、スピーカ27からの音発生を制御する音制御手段が搭載された音制御基板70も設けられている。また、また、DC30V、DC21V、DC12VおよびDC5Vを作成する電源回路が搭載された電源基板910や発射制御基板91が設けられている。
遊技機裏面において、上方には、各種情報を遊技機外部に出力するための各端子を備えたターミナル基板160が設置されている。ターミナル基板160には、少なくとも、球切れ検出スイッチの出力を導入して外部出力するための球切れ用端子、賞球個数信号を外部出力するための賞球用端子および球貸し個数信号を外部出力するための球貸し用端子が設けられている。また、中央付近には、主基板31からの各種情報を遊技機外部に出力するための各端子を備えた情報端子盤34が設置されている。
さらに、各基板(主基板31や払出制御基板37等)に含まれる記憶内容保持手段(例えば、電力供給停止時にもその内容を保持可能な変動データ記憶手段すなわちバックアップRAM)に記憶されたバックアップデータをクリアするための操作手段としてのクリアスイッチ921が搭載されたスイッチ基板190が設けられている。スイッチ基板190には、クリアスイッチ921と、主基板31等の他の基板と接続されるコネクタ922が設けられている。
貯留タンク38に貯留された遊技球は誘導レールを通り、賞球ケース40Aで覆われた球払出装置に至る。球払出装置の上部には、遊技媒体切れ検出手段としての球切れスイッチ187が設けられている。球切れスイッチ187が球切れを検出すると、球払出装置の払出動作が停止する。球切れスイッチ187は遊技球通路内の遊技球の有無を検出するスイッチであるが、貯留タンク38内の補給球の不足を検出する球切れ検出スイッチ167も誘導レールにおける上流部分(貯留タンク38に近接する部分)に設けられている。球切れ検出スイッチ167が遊技球の不足を検知すると、遊技機設置島に設けられている補給機構から遊技機に対して遊技球の補給が行われる。
球払出装置から払い出された遊技球は、連絡口45を通ってパチンコ遊技機1の前面に設けられている打球供給皿3に誘導される。連絡口45の側方には、パチンコ遊技機1の前面に設けられている余剰球受皿4に連通する余剰球通路46が形成されている。
入賞にもとづく景品としての遊技球や球貸し要求にもとづく遊技球が多数払い出されて打球供給皿3が満杯になり、ついには遊技球が連絡口45に到達した後さらに遊技球が払い出されると、遊技球は、余剰球通路46を経て余剰球受皿4に導かれる。さらに遊技球が払い出されると、感知レバー47が貯留状態検出手段としての満タンスイッチ48を押圧して、貯留状態検出手段としての満タンスイッチ48がオンする。その状態では、球払出装置内の払出モータの回転が停止して球払出装置の動作が停止するとともに発射装置の駆動も停止する。
図4に示すように、球払出装置の側方には、カーブ樋186から遊技機下部の排出口192に至る球抜き通路191が形成されている。球抜き通路191の上部には球抜きレバー193が設けられ、球抜きレバー193が遊技店員等によって操作されると、誘導レール39から球抜き通路191への遊技球通路が形成され、貯留タンク38内に貯留されている遊技球は、排出口192から遊技機外に排出される。
図5は、球払出装置97の構成例を示す分解斜視図である。この例では、賞球ケース40Aとしての3つのケース140,141,142の内部に球払出装置97が形成されている。ケース140,141の上部には、球切れスイッチ187の下部の球通路と連通する穴170,171が設けられ、遊技球は、穴170,171から球払出装置97に流入する。
球払出装置97は駆動源となる払出モータ(例えばステッピングモータ)289を含む。払出モータ289の回転力は、払出モータ289の回転軸に嵌合しているギア290に伝えられ、さらに、ギア290と噛み合うギア291に伝えられる。ギア291の中心軸には、凹部を有するスプロケット292が嵌合している。穴170,171から流入した遊技球は、スプロケット292の凹部によって、スプロケット292の下方の球通路293に1個ずつ落下させられる。
球通路293には遊技球の流下路を切り替えるための振分部材311が設けられている。振分部材311はソレノイド310によって駆動され、賞球払出時には、球通路293における一方の流下路を遊技球が流下するように倒れ、球貸し時には球通路293における他方の流下路を遊技球が流下するように倒れる。なお、払出モータ289およびソレノイド310は、払出制御基板37に搭載されている払出制御用CPUによって制御される。また、払出制御用CPUは、主基板31に搭載されている遊技制御用のCPUからの指令に応じて払出モータ289およびソレノイド310を制御する。
賞球払出時に選択される流下路の下方には球払出装置によって払い出された遊技球を検出する賞球センサ(賞球カウントスイッチ)301Aが設けられ、球貸し時に選択される流下路の下方には球払出装置によって払い出された遊技球を検出する球貸しセンサ(球貸しカウントスイッチ)301Bが設けられている。賞球カウントスイッチ301Aの検出信号と球貸しカウントスイッチ301Bの検出信号は払出制御基板37の払出制御用CPUに入力される。払出制御用CPUは、それらの検出信号にもとづいて、実際に払い出された遊技球の個数を計数する。
なお、ギア291の周辺部には、払出モータ位置センサを形成する複数の突起部295が形成されている。突起部295は、ギア291の回転すなわち払出モータ289の回転に伴って発光体(図示せず)からの光を、払出モータ位置センサの受光部(図示せず)に対して透過させたり遮蔽したりする。払出制御用CPUは、受光部からの検出信号によって払出モータ289の位置を認識することができる。
また、この実施の形態では、払出手段としての球払出装置97は球貸しも賞球払出も実行可能な構成であるが、球貸しを行う機構と賞球払出を行う機構とが独立していても本発明を適用することができる。球貸しを行う機構と賞球払出を行う機構とが独立している場合には、賞球払出と球貸しとを同時実行可能なので、遊技球の相対的な払出速度を速くすることができる。また、遊技球の流下路を切り替えるための振分部材311およびソレノイド310は不要である。さらに、払出手段として、例えば、モータが正転すると賞球払出が行われモータが逆転すると球貸しが行われるような構造のものなど、他の構造のものを用いることもできる。
図6は、主基板31における回路構成の一例を示すブロック図である。なお、図6には、払出制御基板37、ランプ制御基板35、音制御基板70、発射制御基板91および図柄制御基板80も示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する基本回路53と、ゲートスイッチ32a、始動口スイッチ14a、V入賞スイッチ22、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a、満タンスイッチ48、球切れスイッチ187、賞球カウントスイッチ301Aおよびクリアスイッチ921からの信号を基本回路53に与えるスイッチ回路58と、可変入賞球装置15を開閉するソレノイド16、開閉板20を開閉するソレノイド21および大入賞口内の経路を切り換えるためのソレノイド21Aを基本回路53からの指令に従って駆動するソレノイド回路59とが搭載されている。
なお、図6には示されていないが、カウントスイッチ短絡信号もスイッチ回路58を介して基本回路53に伝達される。また、ゲートスイッチ32a、始動口スイッチ14a、V入賞スイッチ22、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a、満タンスイッチ48、球切れスイッチ187、賞球カウントスイッチ301A等のスイッチは、センサと称されているものでもよい。すなわち、遊技球を検出できる遊技媒体検出手段(この例では遊技球検出手段)であれば、その名称を問わない。スイッチと称されているものがセンサと称されているもの等でもよいこと、すなわち、スイッチが遊技媒体検出手段の一例であることは、他の実施の形態でも同様である。
また、基本回路53から与えられるデータに従って、大当りの発生を示す大当り情報、可変表示装置9における図柄の可変表示開始に利用された始動入賞球の個数を示す有効始動情報、確率変動が生じたことを示す確変情報等の情報出力信号をホールコンピュータ等の外部装置に対して出力する情報出力回路64が搭載されている。
基本回路53は、ゲーム制御用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段(変動データを記憶する手段)としてのRAM55、プログラムに従って制御動作を行うCPU56およびI/Oポート部57を含む。この実施の形態では、ROM54,RAM55はCPU56に内蔵されている。すなわち、CPU56は、1チップマイクロコンピュータである。なお、1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54およびI/Oポート部57は外付けであっても内蔵されていてもよい。なお、CPU56はROM54に格納されているプログラムに従って制御を実行するので、以下、CPU56が実行する(または、処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているCPUについても同様である。
また、RAM(CPU内蔵RAMであってもよい。)55の一部または全部が、電源基板910において作成されるバックアップ電源よってバックアップされているバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間は、RAM55の一部または全部の内容は保存される。
遊技球を打撃して発射する打球発射装置は発射制御基板91上の回路によって制御される駆動モータ94で駆動される。そして、駆動モータ94の駆動力は、操作ノブ5の操作量に従って調整される。すなわち、発射制御基板91上の回路によって、操作ノブ5の操作量に応じた速度で打球が発射されるように制御される。
この実施の形態では、ランプ制御基板35に搭載されているランプ制御手段が、遊技盤に設けられている始動記憶表示器18、普通図柄始動記憶表示器41および装飾ランプ25の表示制御を行うとともに、枠側に設けられている天枠ランプ28a、左枠ランプ28b、右枠ランプ28c、賞球ランプ51および球切れランプ52の表示制御を行う。なお、各ランプはLEDその他の種類の発光体でもよく、この実施の形態および他の実施の形態で用いられているLEDも他の種類の発光体でもよい。すなわち、ランプやLEDは発光体の一例である。また、可変表示装置9における周辺部分や開閉板20の周囲部分等に設置されている装飾用のランプやLEDも、ランプ制御手段によって制御される。従って、ランプ制御基板35に搭載されているランプ制御手段は、遊技機に設けられている発光体の制御を行う発光体制御手段に相当する。また、特別図柄を可変表示する可変表示装置9および普通図柄を可変表示する普通図柄表示器10の表示制御は、図柄制御基板80に搭載されている表示制御手段によって行われる。
図7は、払出制御基板37および球払出装置97の構成要素などの払出に関連する構成要素を示すブロック図である。図7に示すように、満タンスイッチ48からの検出信号は、中継基板71を介して主基板31のI/Oポート部57に入力される。また、球切れスイッチ187からの検出信号も、中継基板72および中継基板71を介して主基板31のI/Oポート部57に入力される。
主基板31のCPU56は、球切れスイッチ187からの検出信号が球切れ状態を示しているか、または、満タンスイッチ48からの検出信号が満タン状態を示していると、払出を停止すべき状態であることを指示する払出制御コマンドを送出する。払出を停止すべき状態であることを指示する払出制御コマンドを受信すると、払出制御基板37の払出制御用CPU371は球払出処理を停止する。
さらに、賞球カウントスイッチ301Aからの検出信号は、中継基板72および中継基板71を介して主基板31のI/Oポート部57に入力されるとともに、中継基板72を介して払出制御基板37の入力ポート372bに入力される。賞球カウントスイッチ301Aは、球払出装置97の払出機構部分に設けられ、実際に払い出された賞球払出球を検出する。
入賞があると、払出制御基板37には、主基板31の出力ポート(ポート0,1)570,571から賞球個数を示す払出制御コマンドが入力される。出力ポート(出力ポート1)571は8ビットのデータを出力し、出力ポート570は1ビットのINT信号を出力する。賞球個数を示す払出制御コマンドは、入力バッファ回路373Aを介してI/Oポート372aに入力される。INT信号は、入力バッファ回路373Bを介して払出制御用CPU371の割込端子に入力されている。払出制御用CPU371は、I/Oポート372aを介して払出制御コマンドを入力し、払出制御コマンドに応じて球払出装置97を駆動して賞球払出を行う。なお、この実施の形態では、払出制御用CPU371は、1チップマイクロコンピュータであり、少なくともRAMが内蔵されている。
また、主基板31において、出力ポート570,571の外側にバッファ回路620,68Aが設けられている。バッファ回路620,68Aとして、例えば、汎用のCMOS−ICである74HC250,74HC14が用いられる。このような構成によれば、外部から主基板31の内部に入力される信号が阻止されるので、払出制御基板37から主基板31に信号が与えられる可能性がある信号ラインをさらに確実になくすことができる。なお、バッファ回路620,68Aの出力側にノイズフィルタを設けてもよい。
払出制御用CPU371は、出力ポート372dを介して、貸し球数を示す球貸し個数信号をターミナル基板160に出力する。さらに、出力ポート372eを介して、エラー表示用LED374にエラー信号を出力する。
さらに、払出制御基板37の入力ポート372bには、中継基板72を介して、球貸しカウントスイッチ301B、および払出モータ289の回転位置を検出するための払出モータ位置センサからの検出信号が入力される。球貸しカウントスイッチ301Bは、球払出装置97の払出機構部分に設けられ、実際に払い出された貸し球を検出する。払出制御基板37からの払出モータ289への駆動信号は、出力ポート372dおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に伝えられ、振分ソレノイド310への駆動信号は、出力ポート372fおよび中継基板72を介して球払出装置97の払出機構部分における振分ソレノイド310に伝えられる。また、クリアスイッチ921の出力も、入力ポート372bに入力される。
カードユニット50には、カードユニット制御用マイクロコンピュータが搭載されている。また、カードユニット50には、連結台方向表示器153、カード投入表示ランプ154、カード挿入口155、およびカード挿入口155の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニット50を解放するためのカードユニット錠156が設けられている(図1参照)。残高表示基板74には、打球供給皿3の近傍に設けられている度数表示LED(度数表示器)、球貸しスイッチおよび返却スイッチが接続される。
残高表示基板74からカードユニット50には、遊技者の操作に応じて、球貸しスイッチ信号および返却スイッチ信号が払出制御基板37を介して与えられる。また、カードユニット50から残高表示基板74には、プリペイドカードの残高を示すカード残高表示信号および球貸し可表示信号が払出制御基板37を介して与えられる。カードユニット50と払出制御基板37の間では、接続信号(VL信号)、パチンコ機動作信号(PRDY信号)およびその他の信号が、通信用IC400を介してやりとりされる。払出制御用CPU371と通信用IC400との間の情報伝達は、入力ポート372b,372cおよび出力ポート372fを介してやりとりされる。
パチンコ遊技機1の電源が投入されると、払出制御基板37の払出制御用CPU371は、カードユニット50にPRDY信号を出力する。また、カードユニット制御用マイクロコンピュータは、VL信号を出力する。払出制御用CPU371は、VL信号の入力状態により接続状態/未接続状態を判定する。カードユニット50においてカードが受け付けられ、球貸しスイッチが操作され球貸しスイッチ信号が入力されると、後述するように、カードユニット制御用マイクロコンピュータは、カードユニット50に搭載されている通信用ICに球貸し要求信号を出力する。カードユニット50に搭載されている通信用ICは、カードユニット制御用マイクロコンピュータからの球貸し要求信号に応じて、払出制御基板37における通信用IC400と通信を行うことによって、遊技機に対して球貸し要求を行う。通信用IC400は、カードユニット50に搭載されている通信用ICとの通信に応じて、払出制御用CPU371に対して球貸し要求を行う。
そして、払出制御用CPU371は、払出モータ289を駆動し、所定個の貸し球を遊技者に払い出す。このとき、振分ソレノイド310は駆動状態とされている。すなわち、球振分部材311を球貸し側に向ける。そして、払出が完了したら、払出制御用CPU371は通信用IC400に対して球貸し完了信号を出力する。その後、通信用IC400からの球貸し要求信号がオン状態でなければ、賞球払出制御を実行する。
以上のように、カードユニット50からの信号は全て払出制御基板37に入力される構成になっている。従って、球貸し制御に関して、カードユニット50から主基板31に信号が入力されることはなく、主基板31の基本回路53にカードユニット50の側から不正に信号が入力される余地はない。また、カードユニット50で用いられる電源電圧AC24Vは払出制御基板37から供給される。
この実施の形態では、電源基板910から払出制御基板37に対して電源断信号も入力される。電源断信号は、払出制御用CPU371のマスク不能割込(NMI)端子に入力される。さらに、払出制御基板37に存在するRAM(CPU内蔵RAMであってもよい。)の少なくとも一部は、電源基板910において作成されるバックアップ電源によって、バックアップされている。すなわち、遊技機に対する電力供給が停止しても、所定期間は、RAMの少なくとも一部の内容は保存される。ただし、この実施の形態では、RAMは全てバックアップ電源によってバックアップされている。なお、変動データ記憶手段として電源バックアップされる揮発性のRAMではなく、EEPROMやフラッシュROM等の不揮発性記憶手段を用いてもよい。不揮発性記憶手段を用いた場合には、停電等の不測の電力供給停止が生ずる場合に、記憶手段の記憶情報への影響を低減させることができる。すなわち、記憶手段に記憶されている内容がより安全に保存される。また、不揮発性記憶手段を用いた場合には、電源基板910においてバックアップ電源を設けなくてもよい。
また、通信用IC400が用いる記憶手段も、遊技機に対する電力供給が停止しても、所定期間は、RAMの少なくとも一部の内容は保存されるように、例えばバックアップ電源によってバックアップされる。すなわち、遊技機への電力供給が停止しても記憶内容を保持可能な通信状態保持手段としてのバックアップRAM領域を有している。そして、電源基板910からの電源断信号は、通信用IC400にも入力される。
図8は、電力供給基板としての電源基板910の一構成例を示すブロック図である。電源基板910は、主基板31、図柄制御基板80、音制御基板70、ランプ制御基板35および払出制御基板37等の電気部品制御基板(電気部品制御手段が搭載された基板)と独立して設置され、遊技機内の各電気部品制御基板および機構部品が使用する電圧を生成する。この例では、AC24V、VSL(DC+30V)、DC+21V、DC+12VおよびDC+5Vを生成する。また、バックアップ電源すなわち記憶保持用電力供給手段となるコンデンサ916は、DC+5Vすなわち各基板上のIC等を駆動する電源のラインから充電される。なお、VSLは、整流回路912において、整流素子でAC24Vを整流昇圧することによって生成される。VSLは、ソレノイド駆動電源となる。
トランス911は、交流電源からの交流電圧を24Vに変換する。AC24V電圧は、コネクタ915に出力される。また、整流回路912は、AC24Vから+30Vの直流電圧を生成し、DC−DCコンバータ913およびコネクタ915に出力する。DC−DCコンバータ913は、1つまたは複数のコンバータIC922(図8では1つのみを示す。)を有し、VSLにもとづいて+21V、+12Vおよび+5Vを生成してコネクタ915に出力する。コンバータIC922の入力側には、比較的大容量のコンデンサ923が接続されている。従って、外部からの遊技機に対する電力供給が停止したときに、+30V、+12V、+5V等の直流電圧は、比較的緩やかに低下する。コネクタ915は例えば中継基板に接続され、中継基板から各電気部品制御基板および機構部品に必要な電圧の電力が供給される。
ただし、電源基板910に各電気部品制御基板に至る各コネクタを設け、電源基板910から、中継基板を介さずにそれぞれの基板に至る各電圧を供給するようにしてもよい。また、図8には1つのコネクタ915が代表して示されているが、コネクタは、各電気部品制御基板対応に設けられている。
DC−DCコンバータ913からの+5Vラインは分岐してバックアップ+5Vラインを形成する。バックアップ+5Vラインとグラウンドレベルとの間には大容量のコンデンサ916が接続されている。コンデンサ916は、遊技機に対する電力供給が停止したときの電気部品制御基板のバックアップRAMに対して記憶状態を保持できるように電力を供給するバックアップ電源となる。また、+5Vラインとバックアップ+5Vラインとの間に、逆流防止用のダイオード917が挿入される。なお、この実施の形態では、バックアップ用の+5Vは、主基板31および払出制御基板37に供給される。
また、電源基板910には、電源監視回路としての電源監視用IC902が搭載されている。電源監視用IC902は、VSL電圧を導入し、VSL電圧を監視することによって遊技機への電力供給停止の発生を検出する。具体的には、VSL電圧が所定値(この例では+22V)以下になったら、電力供給の停止が生ずるとして電源断信号を出力する。なお、監視対象の電源電圧は、各電気部品制御基板に搭載されている回路素子の電源電圧(この例では+5V)よりも高い電圧であることが好ましい。この例では、交流から直流に変換された直後の電圧であるVSLが用いられている。電源監視用IC902からの電源断信号は、主基板31や払出制御基板37等に供給される。
電源監視用IC902が電力供給の停止を検知するための所定値は、通常時の電圧より低いが、各電気部品制御基板上のCPUが暫くの間動作しうる程度の電圧である。また、電源監視用IC902が、CPU等の回路素子を駆動するための電圧(この例では+5V)よりも高く、また、交流から直流に変換された直後の電圧を監視するように構成されているので、CPUが必要とする電圧に対して監視範囲を広げることができる。従って、より精密な監視を行うことができる。さらに、監視電圧としてVSL(+30V)を用いる場合には、遊技機の各種スイッチに供給される電圧が+12Vであることから、電源瞬断時のスイッチオン誤検出の防止も期待できる。すなわち、+30V電源の電圧を監視すると、+30V作成の以降に作られる+12Vが落ち始める以前の段階でそれの低下を検出できる。
+12V電源の電圧が低下するとスイッチ出力がオン状態を呈するようになるが、+12Vより早く低下する+30V電源電圧を監視して電力供給の停止を認識すれば、スイッチ出力がオン状態を呈する前に電力供給回復待ちの状態に入ってスイッチ出力を検出しない状態となることができる。
また、電源監視用IC902は、電気部品制御基板とは別個の電源基板910に搭載されているので、電源監視回路から複数の電気部品制御基板に電源断信号を供給することができる。電源断信号を必要とする電気部品制御基板が幾つあっても電源監視手段は1つ設けられていればよいので、各電気部品制御基板における各電気部品制御手段が後述する復旧制御を行っても、遊技機のコストはさほど上昇しない。
なお、図8に示された構成では、電源監視用IC902の検出信号(電源断信号)は、バッファ回路918,919を介してそれぞれの電気部品制御基板(例えば主基板31と払出制御基板37)に伝達されるが、例えば、1つの検出信号を中継基板に伝達し、中継基板から各電気部品制御基板に同じ信号を分配する構成でもよい。また、電源断信号を必要とする基板数に応じたバッファ回路を設けてもよい。さらに、主基板31と払出制御基板37とに出力される電源断信号について、電源断信号を出力することになる電源監視回路の監視電圧を異ならせてもよい。
なお、この実施の形態では、電源監視手段は電源基板910に搭載されているが、電源監視手段は、遊技機における他の箇所に設置されていてもよい。
図9は、主基板31におけるCPU56周りの一構成例を示すブロック図である。図9に示すように、電源基板910の電源監視回路(電源監視手段)からの電源断信号が、CPU56のマスク不能割込端子(XNMI端子)に接続されている。従って、CPU56は、マスク不能割込(NMI)処理によって遊技機への電力供給の停止の発生を確認することができる。
図9には、システムリセット回路65も示されている。リセットIC651は、電源投入時に、外付けのコンデンサの容量で決まる所定時間だけ出力をローレベルとし、所定時間が経過すると出力をハイレベルにする。すなわち、リセット信号をハイレベルに立ち上げてCPU56を動作可能状態にする。また、リセットIC651は、電源監視回路が監視する電源電圧と等しい電源電圧であるVSLの電源電圧を監視して電圧値が所定値(電源監視回路が電源断信号を出力する電源電圧値よりも低い値)以下になると出力をローレベルにする。従って、CPU56は、電源監視回路からの電源断信号に応じて所定の電力供給停止時処理を行った後、システムリセットされる。
図9に示すように、リセットIC651からのリセット信号は、NAND回路947に入力されるとともに、反転回路(NOT回路)944を介してカウンタIC941のクリア端子に入力される。カウンタIC941は、クリア端子への入力がローレベルになると、発振器943からのクロック信号をカウントする。そして、カウンタIC941のQ5出力がNOT回路945,946を介してNAND回路947に入力される。また、カウンタIC941のQ6出力は、フリップフロップ(FF)942のクロック端子に入力される。フリップフロップ942のD入力はハイレベルに固定され、Q出力は論理和回路(OR回路)949に入力される。OR回路949の他方の入力には、NAND回路947の出力がNOT回路948を介して導入される。そして、OR回路949の出力がCPU56のリセット端子に接続されている。このような構成によれば、電源投入時に、CPU56のリセット端子に2回のリセット信号(ローレベル信号)が与えられるので、CPU56は、確実に動作を開始する。
そして、例えば、電源基板910の電源監視回路の検出電圧(電源断信号を出力することになる電圧)を+22Vとし、リセット信号をローレベルにするための検出電圧を+9Vとする。そのように構成した場合には、電源監視回路とシステムリセット回路65とが、同一の電源VSLの電圧を監視するので、電圧監視回路が電源断信号を出力するタイミングとシステムリセット回路65がシステムリセット信号を出力するタイミングの差を所望の所定期間に確実に設定することができる。所望の所定期間とは、電源監視回路からの電源断信号に応じて電力供給停止時処理を開始してから電力供給停止時処理が確実に完了するまでの期間である。
なお、電源基板910の電源監視回路とシステムリセット回路65とが監視する電源の電圧は異なっていてもよい。
CPU56等の駆動電源である+5V電源から電力が供給されていない間、RAMの少なくとも一部は、電源基板から供給されるバックアップ電源によってバックアップされ、遊技機に対する電力供給が停止しても内容は保存される。そして、+5V電源が復旧すると、システムリセット回路65からリセット信号が発せられるので、CPU56は、通常の動作状態に復旧する。そのとき、必要なデータがバックアップRAMに保存されているので、停電等からの復旧時に停電等の発生時の遊技状態に復旧させることができる。
なお、図9に示す構成では、電源投入時にCPU56のリセット端子に2回のリセット信号(ローレベル信号)が与えられるが、リセット信号の立ち上がりタイミングが1回しかなくても確実にリセット解除されるCPUを使用する場合には、符号941〜949で示された回路素子は不要である。その場合、リセットIC651の出力がそのままCPU56のリセット端子に接続される。
この実施の形態で用いられるCPU56は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)も内蔵している。PIOは、PB0〜PB3の4ビットおよびPA0〜PA7の1バイトのポートを有する。PB0〜PB3およびPA0〜PA7のポートは、入力/出力いずれにも設定できる。
図10および図11は、この実施の形態における出力ポートの割り当てを示す説明図である。図10に示すように、出力ポート0は各電気部品制御基板に送出される制御コマンドのINT信号の出力ポートである。また、払出制御基板37に送出される払出制御コマンドの8ビットのデータは(払出制御信号CD0〜CD7)出力ポート1から出力され、図柄制御基板80に送出される表示制御コマンドの8ビットのデータ(表示制御信号CD0〜CD7)は出力ポート2から出力され、ランプ制御基板35に送出されるランプ制御コマンドの8ビットのデータ(ランプ制御信号CD0〜CD7)は出力ポート3から出力される。そして、図11に示すように、音制御基板70に送出される音制御コマンドの8ビットのデータ(音声制御信号CD0〜CD7)は出力ポート4から出力される。
また、出力ポート5から、情報出力回路64を介して情報端子板34やターミナル基板160に至る各種情報出力用信号すなわち制御に関わる情報の出力データが出力される。そして、出力ポート6から、可変入賞球装置15を開閉するためのソレノイド16、大入賞口の開閉板20を開閉するためのソレノイド21、および大入賞口内の経路を切り換えるためのソレノイド21Aに対する駆動信号が出力される。
図10および図11に示すように、払出制御基板37、図柄制御基板80、ランプ制御基板35および音制御基板70に対して出力される各INT信号(払出制御信号INT、表示制御信号INT、ランプ制御信号INTおよび音声制御信号INT)を出力する出力ポート(出力ポート0)と、払出制御信号CD0〜CD7、表示制御信号CD0〜CD7、ランプ制御信号CD0〜CD7および音声制御信号CD0〜CD7を出力する出力ポート(出力ポート1〜4)とは、別ポートである。
従って、INT信号を出力する際に、誤って払出制御信号CD0〜CD7、表示制御信号CD0〜CD7、ランプ制御信号CD0〜CD7および音声制御信号CD0〜CD7を変化させてしまう可能性が低減する。また、払出制御信号CD0〜CD7、表示制御信号CD0〜CD7、ランプ制御信号CD0〜CD7または音声制御信号CD0〜CD7を出力する際に、誤ってINT信号を変化させてしまう可能性が低減する。その結果、主基板31の遊技制御手段から各電気部品制御基板に対するコマンドは、より確実に送出されることになる。さらに、各INT信号は、全て出力ポート0から出力されるように構成されているので、遊技制御手段のINT信号出力処理の負担が軽減される。
図12は、この実施の形態における入力ポートのビット割り当てを示す説明図である。図12に示すように、入力ポート0のビット0〜7には、それぞれ、入賞口スイッチ33a,39a,29a,30a、始動口スイッチ14a、カウントスイッチ23、V入賞スイッチ22、ゲートスイッチ32aの検出信号が入力される。また、入力ポート1のビット0〜4には、それぞれ、賞球カウントスイッチ301A、満タンスイッチ48、球切れスイッチ187の検出信号、カウントスイッチ短絡信号およびクリアスイッチ921の検出信号が入力される。なお、各スイッチからの検出信号は、スイッチ回路58において論理反転されている。このように、クリアスイッチ921の検出信号すなわち操作手段の操作入力は、遊技球を検出するためのスイッチの検出信号が入力される入力ポート(8ビット構成の入力部)と同一の入力ポートにおけるビット(入力ポート回路)に入力されている。
次に遊技機の動作について説明する。図10は、主基板31における遊技制御手段(CPU56およびROM,RAM等の周辺回路)が実行するメイン処理を示すフローチャートである。遊技機に対して電源が投入され、リセット端子の入力レベルがハイレベルになると、CPU56は、ステップS1以降のメイン処理を開始する。メイン処理において、CPU56は、まず、必要な初期設定を行う。
初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1)。次に、割込モードを割込モード2に設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。そして、内蔵デバイスレジスタの初期化を行う(ステップS4)。また、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の初期化(ステップS5)を行った後、RAMをアクセス可能状態に設定する(ステップS6)。
この実施の形態で用いられるCPU56は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)も内蔵している。また、CTCは、2本の外部クロック/タイマトリガ入力CLK/TRG2,3と2本のタイマ出力ZC/TO0,1を備えている。
この実施の形態で用いられているCPU56には、マスク可能な割込のモードとして以下の3種類のモードが用意されている。なお、マスク可能な割込が発生すると、CPU56は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
割込モード0:割込要求を行った内蔵デバイスがRST命令(1バイト)またはCALL命令(3バイト)をCPUの内部データバス上に送出する。よって、CPU56は、RST命令に対応したアドレスまたはCALL命令で指定されるアドレスの命令を実行する。リセット時に、CPU56は自動的に割込モード0になる。よって、割込モード1または割込モード2に設定したい場合には、初期設定処理において、割込モード1または割込モード2に設定するための処理を行う必要がある。
割込モード1:割込が受け付けられると、常に0038(h)番地に飛ぶモードである。
割込モード2:CPU56の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードである。すなわち、割込番地は、上位アドレスが特定レジスタの値とされ下位アドレスが割込ベクタとされた2バイトで示されるアドレスである。従って、任意の(飛び飛びではあるが)偶数番地に割込処理を設置することができる。各内蔵デバイスは割込要求を行うときに割込ベクタを送出する機能を有している。
よって、割込モード2に設定されると、各内蔵デバイスからの割込要求を容易に処理することが可能になり、また、プログラムにおける任意の位置に割込処理を設置することが可能になる。さらに、割込モード1とは異なり、割込発生要因毎のそれぞれの割込処理を用意しておくことも容易である。上述したように、この実施の形態では、初期設定処理のステップS2において、CPU56は割込モード2に設定される。
次いで、CPU56は、入力ポート1を介して入力されるクリアスイッチ921の出力信号の状態を1回だけ確認する(ステップS7)。その確認においてオンを検出した場合には、CPU56は、通常の初期化処理を実行する(ステップS11〜ステップS15)。クリアスイッチ921がオンである場合(押下されている場合)には、ローレベルのクリアスイッチ信号が出力されている。なお、入力ポート1では、クリアスイッチ信号のオン状態はハイレベルである(図12参照)。また、例えば、遊技店員は、クリアスイッチ921をオン状態にしながら遊技機に対する電力供給を開始することによって、容易に初期化処理を実行させることができる。すなわち、RAMクリア等を行うことができる。
クリアスイッチ921がオンの状態でない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような保護処理が行われていた場合をバックアップありとする。そのような保護処理が行われていないことを確認したら、CPU56は初期化処理を実行する。
この実施の形態では、バックアップRAM領域にバックアップデータがあるか否かは、電力供給停止時処理においてバックアップRAM領域に設定されるバックアップフラグの状態によって確認される。この例では、図14に示すように、バックアップフラグ領域に「55H」が設定されていればバックアップあり(オン状態)を意味し、「55H」以外の値が設定されていればバックアップなし(オフ状態)を意味する。
バックアップありを確認したら、CPU56は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象となるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムとする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっていることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理を実行する。
チェック結果が正常であれば、CPU56は、遊技制御手段の内部状態と表示制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う(ステップS10)。そして、バックアップRAM領域に保存されていたPC(プログラムカウンタ)の退避値がPCに設定され、そのアドレスに復帰する。
このように、バックアップフラグとチェックサム等のチェックデータとを用いてバックアップRAM領域のデータが保存されているか否かを確認することによって、遊技状態を電力供給停止時の状態に正確に戻すことができる。すなわち、バックアップRAM領域のデータにもとづく状態復旧処理の確実性が向上する。なお、この実施の形態では、バックアップフラグとチェックデータとの双方を用いてバックアップRAM領域のデータが保存されているか否かを確認しているが、いずれか一方のみを用いてもよい。すなわち、バックアップフラグとチェックデータとのいずれかを、状態復旧処理を実行するための契機としてもよい。
初期化処理では、CPU56は、まず、RAMクリア処理を行う(ステップS11)。また、所定の作業領域(例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄左中右図柄バッファ、特別図柄プロセスフラグ、払出コマンド格納ポインタ、賞球中フラグ、球切れフラグ、払出停止フラグなど制御状態に応じて選択的に処理を行うためのフラグ)に初期値を設定する作業領域設定処理を行う(ステップS12)。さらに、球払出装置97からの払出が可能であることを指示する払出許可状態指定コマンド(以下、払出可能状態指定コマンドという。)を払出制御基板37に対して送信する処理を行う(ステップS13)。また、他のサブ基板(ランプ制御基板35、音制御基板70、図柄制御基板80)を初期化するための初期化コマンドを各サブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、可変表示装置9に表示される初期図柄を示すコマンド(図柄制御基板80に対して)や賞球ランプ51および球切れランプ52の消灯を指示するコマンド(ランプ制御基板35に対して)等がある。
初期化処理では、払出制御基板37に対して常に払出可能状態指定コマンドが送信される。仮に、遊技機の状態が球払出装置97からの払出が可能でない状態であったとしても、直後に実行される遊技制御処理において、その旨が検出され、払出が可能でない状態であることを指示する払出禁止状態指定コマンド(以下、払出停止状態指定コマンドという。)が送信されるので問題はない。なお、払出可能状態指定コマンドおよび他のサブ基板に対する初期化コマンドの送信処理において、例えば、各コマンドが設定されているテーブル(ROM領域)のアドレスをポインタにセットし、後述するコマンドセット処理(図26参照)のような処理ルーチンをコールすればよい。
そして、2ms毎に定期的にタイマ割込がかかるようにCPU56に設けられているCTCのレジスタの設定が行われる(ステップS15)。すなわち、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。
以上のように、この実施の形態では、CPU56がクリアスイッチ921がオンであることを検出した場合には、バックアップRAMにデータが保存されているか否かに関わらず初期化処理(ステップS11〜S15)が実行されるので、遊技店の側で強制的に遊技制御手段を初期化することができる。すなわち、ソフトウェア的に遊技制御手段の初期化が実現される。また、クリアスイッチ921がオンでなくても、バックアップフラグとチェックサム等のチェックデータとを用いてソフトウェア的に遊技制御手段の初期化を行うことができるので、電力供給が復旧したときに、誤った遊技状態が復元されてしまうことが防止される。
また、クリアスイッチ921がオンであることを検出しない場合に、バックアップRAMにデータが正しく保存されていないことを確認したら、CPU56は、初期化処理(ステップS11〜S15)を実行する。従って、CPU56は、初期化操作手段に対する操作がなされなくても、所定の初期化条件が成立した場合には(この例では、ステップS8またはS9で「N」)、変動データ記憶手段の記憶内容を初期化する。
初期化処理の実行(ステップS11〜S15)が完了すると、メイン処理で、表示用乱数更新処理(ステップS17)および初期値用乱数更新処理(ステップS18)が繰り返し実行される。表示用乱数更新処理および初期値用乱数更新処理が実行されるときには割込禁止状態とされ(ステップS16)、表示用乱数更新処理および初期値用乱数更新処理の実行が終了すると割込許可状態とされる(ステップS19)。表示用乱数とは、可変表示装置9に表示される図柄を決定するための乱数であり、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。また、初期値用乱数更新処理とは、初期値用乱数を発生するためのカウンタのカウント値を更新する処理である。初期値用乱数とは、大当りとするか否かを決定するための乱数を発生するためのカウンタ(大当り決定用乱数発生カウンタ)等のカウント値の初期値を決定するための乱数である。後述する遊技制御処理において、大当り決定用乱数発生カウンタのカウント値が1周すると、そのカウンタに初期値が設定される。
なお、表示用乱数更新処理が実行されるときには割込禁止状態とされるのは、表示用乱数更新処理が後述するタイマ割込処理でも実行されることから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS17の処理中にタイマ割込が発生してタイマ割込処理中で表示用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS17の処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
図15は、遊技状態復旧処理の一例を示すフローチャートである。遊技状態復旧処理において、CPU56は、まず、スタックポインタの復帰処理を行う(ステップS81)。スタックポインタの値は、後で詳述する電力供給停止時処理において、所定のRAMエリア(電源バックアップされている)に退避している。よって、ステップS81では、そのRAMエリアの値をスタックポインタに設定することによって復帰させる。なお、復帰されたスタックポインタが指す領域(すなわちスタック領域)には、電力供給が停止したときのレジスタ値やプログラムカウンタ(PC)の値が退避している。
次いで、CPU56は、払出停止状態であったか否か確認する(ステップS82)。払出停止状態であったか否かは、電源バックアップされているRAMエリアに保存されている所定の作業領域(例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄左中右図柄バッファ、特別図柄プロセスフラグ、払出コマンド格納ポインタ、賞球中フラグ、球切れフラグ、払出停止フラグなど)における払出状態データとしての払出停止フラグによって確認される。払出停止状態であった場合には、払出制御基板37に搭載されている払出制御手段に対して、払出の停止を指示する払出制御コマンド(払出停止状態指定コマンド)を送信する(ステップS83)。払出停止状態でなかった場合には、払出制御手段に対して払出が可能であることを指示する払出制御コマンド(払出可能状態指定コマンド)を送信する(ステップS84)。
補給球の不足や余剰球受皿4の満タンについて払出制御手段は認識できないので、遊技制御手段から通知しないと、停電等からの復旧時に、補給球の不足や余剰球受皿4の満タンであるにもかかわらず遊技球の払出処理を開始してしまうおそれがある。しかし、この実施の形態では、遊技状態復旧処理において、払出の停止を指示する払出制御コマンドまたは払出が可能であること指示する払出制御コマンドが送信されるので、払出制御手段が、補給球の不足や余剰球受皿4の満タンであるにもかかわらず遊技球の払出処理を開始してしまうことはない。
なお、ここでは、遊技媒体の払い出しが可能であるか否かを判定する払出状態判定手段(遊技制御手段の一部)が払出可能でないことを検出したら、原因の如何に関わらず、1種類の払出停止状態指定コマンドが送信されるようにしたが、原因別のコマンド(この例では、補給球の不足を示すコマンドと下皿満タンを示すコマンド)に分けて送信してもよい。さらに、遊技球の払出が可能でない場合に、遊技の継続を禁止するために遊技球の発射を禁止することを指示するコマンドを払出制御基板37に対して送信してもよい。払出制御基板37に搭載された払出制御手段は、遊技球の発射を禁止することを指示するコマンドを受信したら、打球発射装置の駆動を停止する。また、遊技球の払出が可能でない場合に、遊技制御手段が発射制御手段に対して、直接、遊技球の発射を禁止することを指示する信号を与えてもよい。また、払出制御手段は、払出停止状態指定コマンドを受信した場合に、打球発射装置の駆動を停止するようにしてもよい。
次いで、CPU56は、電力供給が停止したときに可変表示装置9において特別図柄変動中であったか否か確認する(ステップS85)。電力供給が停止したときに特別図柄変動中であったか否かは、例えば電源バックアップされているRAMエリアに格納されている特別図柄プロセスフラグの値等によって確認することができる。特別図柄変動中であった場合には、図柄制御基板80に搭載されている表示制御手段に対して、特別図柄停電復旧コマンドおよび左右中の図柄を指定する表示制御コマンドを送信する(ステップS86,S87)。ここで、表示制御コマンドで指定される左右中の図柄は、電力供給が停止したときに行われていた特別図柄変動で停止表示されるはずであった図柄である。
表示制御手段は、特別図柄停電復旧コマンドを受信すると、所定の報知処理を行う。例えば、可変表示装置9に停電が生じた旨の表示を行う。電源バックアップされていた各種情報にもとづいて、遊技状態が電力供給停止前の状態に戻るのであるが、その後、特別図柄の変動期間が終了すると、遊技制御手段は表示制御手段に対して確定コマンドを送信する。表示制御手段は、確定コマンドを受信したことにもとづいて、次の特別図柄の変動を行える状態になる。
特別図柄変動中でなかった場合には、CPU56は、表示制御手段に対して、左右中の図柄を指定する表示制御コマンド、確定コマンドおよび客待ちデモコマンドを送信する処理を行う(ステップS88〜S90)。表示制御コマンドで指定される左右中の図柄は、電力供給が停止したときに可変表示装置9において表示されていた図柄である。
表示制御手段は、確定コマンドを受信すると、左右中の図柄を指定する表示制御コマンドで指定された特別図柄を可変表示装置9に表示させる制御を行う。また、客待ちデモコマンドを受信すると、可変表示装置9の背景等の表示状態を待機状態の表示状態にする制御を行う。
その後、CPU56は、バックアップフラグをクリアする(ステップS91)すなわち、前回の電力供給停止時に所定の記憶保護処理が実行されたことを示すフラグをリセットする。また、スタック領域から各種レジスタの退避値を読み出して、各種レジスタに設定する(ステップS92)。すなわち、レジスタ復元処理を行う。そして、パリティフラグがオンしていない場合には割込許可状態にする(ステップS93,S94)。最後に、AFレジスタ(アキュミュレータとフラグのレジスタ)をスタック領域から復元する(ステップS95)。
そして、RET命令が実行されるのであるが、ここでのリターン先は、遊技状態復旧処理をコールした部分ではない。なぜなら、ステップS81においてスタックポインタの復帰処理がなされ、復帰されたスタックポインタが指すスタック領域に格納されているリターンアドレスは、プログラムにおける前回の電力供給停止時にNMIが発生したアドレスである。従って、ステップS95の次のRET命令によって、電力供給停止時にNMIが発生したアドレスにリターンする。すなわち、スタック領域に退避されていたアドレスにもとづいて復旧制御が実行されている。
タイマ割込が発生すると、CPU56は、レジスタの退避処理(ステップS20)を行った後、図16に示すステップS21〜S32の遊技制御処理を実行する。遊技制御処理において、CPU56は、まず、スイッチ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23および入賞口スイッチ29a,30a,33a,39a等のスイッチの検出信号を入力し、それらの状態判定を行う(スイッチ処理:ステップS21)。
次いで、パチンコ遊技機1の内部に備えられている自己診断機能によって種々の異常診断処理が行われ、その結果に応じて必要ならば警報が発せられる(エラー処理:ステップS22)。
次に、遊技制御に用いられる大当り判定用の乱数等の各判定用乱数を生成するための各カウンタのカウント値を更新する処理を行う(ステップS23)。CPU56は、さらに、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行い(ステップS24)、さらに、初期値用乱数を生成するためのカウンタのカウント値を更新する処理を行う(ステップS25)。
さらに、CPU56は、特別図柄プロセス処理を行う(ステップS26)。特別図柄プロセス制御では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS27)。普通図柄プロセス処理では、普通図柄表示器10の表示状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
次いで、CPU56は、特別図柄に関する表示制御コマンドをRAM55の所定の領域に設定して表示制御コマンドを送出する処理を行う(特別図柄コマンド制御処理:ステップS28)。また、普通図柄に関する表示制御コマンドをRAM55の所定の領域に設定して表示制御コマンドを送出する処理を行う(普通図柄コマンド制御処理:ステップS29)。
さらに、CPU56は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力する情報出力処理を行う(ステップS30)。
また、CPU56は、所定の条件が成立したときにソレノイド回路59に駆動指令を行う(ステップS31)。可変入賞球装置15または開閉板20を開状態または閉状態としたり、大入賞口内の遊技球通路を切り替えたりするために、ソレノイド回路59は、駆動指令に応じてソレノイド16,21,21Aを駆動する。
そして、CPU56は、始動口スイッチ14a、入賞口スイッチ29a,30a,33a,39aおよびカウントスイッチ23の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS32)。具体的には、始動口スイッチ14a、入賞口スイッチ29a,30a,33a,39aおよびカウントスイッチ23がオンしたことにもとづく入賞検出に応じて、払出制御基板37に賞球個数を示す払出制御コマンドを出力する。払出制御基板37に搭載されている払出制御用CPU371は、賞球個数を示す払出制御コマンドに応じて球払出装置97を駆動する。その後、レジスタの内容を復帰させ(ステップS33)、割込許可状態に設定する(ステップS34)。
以上の制御によって、この実施の形態では、遊技制御処理は2ms毎に起動されることになる。なお、この実施の形態では、タイマ割込処理で遊技制御処理が実行されているが、タイマ割込処理では例えば割込が発生したことを示すフラグのセットのみがなされ、遊技制御処理はメイン処理において実行されるようにしてもよい。
図17,図18は、電源基板910からの電源断信号に応じて実行されるマスク不能割込処理(電力供給停止時処理)の処理例を示すフローチャートである。マスク不能割込が発生すると、CPU56に内蔵されている割込制御機構は、マスク不能割込発生時に実行されていたプログラムのアドレス(具体的には実行完了後の次のアドレス)を、スタックポインタが指すスタック領域に退避させるとともに、スタックポインタの値を増やす。すなわち、スタックポインタの値がスタック領域の次のアドレスを指すように更新する。
電力供給停止時処理において、CPU56は、AFレジスタ(アキュミュレータとフラグのレジスタ)を所定のバックアップRAM領域に退避する(ステップS51)。また、割込フラグをパリティフラグにコピーする(ステップS52)。パリティフラグはバックアップRAM領域に形成されている。割込フラグは、割込許可状態であるのか割込禁止状態であるのかを示すフラグであって、CPU56が内蔵する制御レジスタ中にある。割込フラグのオン状態が割込禁止状態であることを示す。上述したように、パリティフラグは遊技状態復旧処理で参照される。そして、遊技状態復旧処理において、パリティフラグがオン状態であれば、割込許可状態には設定されない。
また、BCレジスタ、DEレジスタ、HLレジスタ、IXレジスタおよびスタックポインタをバックアップRAM領域に退避する(ステップS54〜58)。なお、ステップS51〜S58の処理は、電源監視手段の検出信号に応じて制御状態を復旧させるために必要なデータを変動データ記憶手段に保存させるためのデータ退避処理に相当する。
次に、バックアップあり指定値(この例では「55H」)をバックアップフラグにストアする。バックアップフラグはバックアップRAM領域に形成されている。次いで、パリティデータを作成する(ステップS60〜S67)。すなわち、まず、クリアデータ(00)をチェックサムデータエリアにセットし(ステップS60)、チェックサム算出開始アドレスをポインタにセットする(ステップS61)。また、チェックサム算出回数をセットする(ステップS62)。
そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する(ステップS63)。演算結果をチェックサムデータエリアにストアするとともに(ステップS64)、ポインタの値を1増やし(ステップS65)、チェックサム算出回数の値を1減算する(ステップS66)。ステップS63〜S66の処理が、チェックサム算出回数の値が0になるまで繰り返される(ステップS67)。
チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転する(ステップS68)。そして、反転後のデータをチェックサムデータエリアにストアする(ステップS69)。このデータが、電源投入時にチェックされるパリティデータとなる。次いで、RAMアクセスレジスタにアクセス禁止値を設定する(ステップS70)。以後、内蔵RAM55のアクセスができなくなる。従って、電圧低下に伴ってプログラムの暴走が生じても、RAMの記憶内容が破壊されるようなことはない。
さらに、CPU56は、クリアデータ(00)を適当なレジスタにセットし(ステップS71)、処理数(この例では「7」)を別のレジスタにセットする(ステップS72)。また、出力ポート0のアドレスをIOポインタに設定する(ステップS73)。IOポインタとして、さらに別のレジスタが用いられる。
そして、IOポインタが指すアドレスにクリアデータをセットするとともに(ステップS74)、IOポインタの値を1増やし(ステップS75)、処理数の値を1減算する(ステップS77)。ステップS74〜S76の処理が、処理数の値が0になるまで繰り返される。その結果、全ての出力ポート0〜6(図10および図11参照)にクリアデータが設定される。図10および図11に示すように、この例では、「1」がオン状態であり、クリアデータである「00」が各出力ポートにセットされるので、全ての出力ポートがオフ状態になる。
従って、遊技状態を保存するための処理(この例では、チェックサムの生成およびRAMアクセス防止)が実行された後、各出力ポートは直ちにオフ状態になる。なお、この実施の形態では、遊技制御処理において用いられるデータが格納されるRAM領域は全て電源バックアップされている。従って、その内容が正しく保存されているか否かを示すチェックサムの生成処理、およびその内容を書き換えないようにするためのRAMアクセス防止処理が、遊技状態を保存するための処理に相当する。
遊技状態を保存するための処理が実行された後、直ちに各出力ポートがオフ状態になるので、保存される遊技状態と整合しない状況が発生することは確実に防止される。つまり、パチンコ遊技機のように可変入賞球装置を有している遊技機において、実装の関係上、可変入賞球装置における可変入賞口の位置と入賞を検出する入賞口スイッチの設置位置とを、ある程度離さざるを得ない。出力ポート、特に可変入賞球装置を開放状態にするための信号が出力される出力ポートを直ちにオフ状態にしないと、電力供給停止時に、可変入賞口に入賞したにもかかわらず、電力供給停止時処理の実行が開始されて入賞口スイッチの検出がなされない状況が起こりうる。その場合、可変入賞口に入賞があったことは保存されない。すなわち、実際に生じている遊技状態(入賞があったこと)と保存される遊技状態とが整合しない。しかし、この実施の形態では、出力ポートがクリアされて可変入賞球装置が閉じられるので、保存される遊技状態と整合しない状況が発生することは確実に防止される。
また、電気部品の駆動が不能になる状態になる前に実行される電力供給停止時処理の際に、出力ポートをクリアすることができるので、電気部品の駆動が不能になる状態となる前に遊技制御手段によって制御される各電気部品を、適切な動作停止状態にすることができる。例えば、開放中の大入賞口を閉成させ、また開放中の可変入賞球装置15を閉成させるなど、電気部品についての作動を停止させたあとに電気部品の駆動が不能になる状態とすることができる。従って、適切な停止状態で電力供給の復旧を待つことが可能となる。そして、出力ポートに対するクリア処理が完了すると、CPU56は、待機状態(ループ状態)に入る。従って、システムリセットされるまで、何もしない状態になる。
なお、この実施の形態では、NMIに応じて電力供給停止時処理が実行されたが、電源断信号をCPU56のマスク可能端子に接続し、マスク可能割込処理によって電力供給停止時処理を実行してもよい。また、電源断信号を入力ポートに入力し、入力ポートのチェック結果に応じて電力供給停止時処理を実行してもよい。
図19〜図21は、遊技制御処理におけるステップS32の賞球処理の一例を示すフローチャートである。この実施の形態では、賞球処理では、賞球払出の対象となる入賞口スイッチ29a,30a,33a,39a、カウントスイッチ23および始動口スイッチ14aが確実にオンしたか否か判定されるとともに、オンしたら賞球個数を示す払出制御コマンドが払出制御基板37に送出されるように制御し、また、満タンスイッチ48および球切れスイッチ187が確実にオンしたか否か判定されるとともに、オンしたら所定の払出制御コマンドが払出制御基板37に送出されるように制御する等の処理が行われる。
賞球処理において、CPU56は、入力判定値テーブルのオフセットとして「1」を設定し(ステップS150)、スイッチタイマのアドレスのオフセットとして「9」を設定する(ステップS151)。入力判定値テーブル(図23参照)のオフセット「1」は、入力判定値テーブルの2番目のデータ「50」を使用することを意味する。また、各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチタイマのアドレスのオフセット「9」は満タンスイッチ48に対応したスイッチタイマが指定されることを意味する。そして、スイッチオンチェックルーチンがコールされる(ステップS152)。
入力判定値テーブルとは、各スイッチについて、連続何回のオンが検出されたら確かにスイッチがオンしたと判定するための判定値が設定されているROM領域である。入力判定値テーブルの構成例は図23に示されている。図23に示すように、入力判定値テーブルには、上から順に、すなわちアドレス値が小さい領域から順に、「2」、「50」、「250」、「30」、「250」、「1」の判定値が設定されている。また、スイッチオンチェックルーチンでは、入力判定値テーブルの先頭アドレスとオフセット値とで決まるアドレスに設定されている判定値と、スイッチタイマの先頭アドレスとオフセット値とで決まるスイッチタイマの値とが比較され、一致した場合には、例えばスイッチオンフラグがセットされる。
スイッチオンチェックルーチンの一例が図22に示されている。スイッチオンチェックルーチンにおいて、満タンスイッチ48に対応するスイッチタイマの値が満タンスイッチオン判定値「50」に一致していればスイッチオンフラグがセットされるので(ステップS153)、満タンフラグをセットする(ステップS154)。なお、図23には明示されていないが、満タンスイッチ48に対応したスイッチタイマの値が0になると、満タンフラグはリセットされる。
また、CPU56は、入力判定値テーブルのオフセットとして「2」を設定し(ステップS156)、スイッチタイマのアドレスのオフセットとして「0A(H)」を設定する(ステップS157)。入力判定値テーブルのオフセット「2」は、入力判定値テーブルの3番目のデータ「250」を使用することを意味する。また、各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチタイマのアドレスのオフセット「0A(H)」は球切れスイッチ187に対応したスイッチタイマが指定されることを意味する。そして、スイッチオンチェックルーチンがコールされる(ステップS158)。
スイッチオンチェックルーチンにおいて、球切れスイッチ187に対応するスイッチタイマの値が球切れスイッチオン判定値「250」に一致していればスイッチオンフラグがセットされるので(ステップS159)、球切れフラグをセットする(ステップS160)。なお、図28には明示されていないが、球切れスイッチ187に対応したスイッチオフタイマが用意され、その値が50になると、球切れフラグはリセットされる。
そして、CPU56は、払出停止状態であるか否か確認する(ステップS201)。払出停止状態は、払出制御基板37に対して払出を停止すべき状態であることを指示する払出制御コマンドである払出停止状態指定コマンドを送出した後の状態であり、具体的には、作業領域における払出停止フラグがセットされている状態である。払出停止状態でなければ、上述した球切れ状態フラグまたは満タンフラグがオンになったか否かを確認する(ステップS202)。
いずれかがオン状態に変化したときには、払出停止状態フラグをセットするとともに(ステップS203)、払出停止状態指定コマンドに関するコマンド送信テーブルをセットし(ステップS204)、コマンドセット処理をコールする(ステップS205)。ステップS204では、払出停止状態指定コマンドの払出制御コマンドが格納されているコマンド送信テーブル(ROM)の先頭アドレスが、コマンド送信テーブルのアドレスとして設定される。払出停止状態指定コマンドに関するコマンド送信テーブルには、後述するINTデータ、払出制御コマンドの1バイト目のデータ、および払出制御コマンドの2バイト目のデータが設定されている。なお、ステップS202において、いずれか一方のフラグが既にオン状態であったときに他方のフラグがオン状態になったときには、ステップS203〜ステップS205の処理は行われない。
また、払出停止状態であれば、球切れ状態フラグおよび満タンフラグがともにオフ状態になったか否かを確認する(ステップS206)。ともにオフ状態となったときには、払出停止フラグをリセットするとともに(ステップS207)、払出可能状態指定コマンドに関するコマンド送信テーブルをセットし(ステップS208)、コマンドセット処理をコールする(ステップS209)。ステップS208では、払出可能状態指定コマンドの払出制御コマンドが格納されているコマンド送信テーブル(ROM)の先頭アドレスが、コマンド送信テーブルのアドレスとして設定される。払出可能状態指定コマンドに関するコマンド送信テーブルには、後述するINTデータ、払出制御コマンドの1バイト目のデータ、および払出制御コマンドの2バイト目のデータが設定されている。
さらに、CPU56は、入力判定値テーブルのオフセットとして「0」を設定し(ステップS221)、スイッチタイマのアドレスのオフセットとして「0」を設定する(ステップS222)。入力判定値テーブルのオフセット「0」は、入力判定値テーブルの最初のデータを使用することを意味する。また、各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチタイマのアドレスのオフセット「0」は入賞口スイッチ33aに対応したスイッチタイマが指定されることを意味する。また、繰り返し数として「4」をセットする(ステップS223)。そして、スイッチオンチェックルーチンがコールされる(ステップS224)。
スイッチオンチェックルーチンにおいて、CPU56は、入力判定値テーブル(図23参照)の先頭アドレスを設定する(ステップS281)。そして、そのアドレスにオフセットを加算し(ステップS282)、加算後のアドレスからスイッチオン判定値をロードする(ステップS283)。
次いで、CPU56は、スイッチタイマの先頭アドレスを設定し(ステップS284)、そのアドレスにオフセットを加算し(ステップS285)、加算後のアドレスからスイッチタイマの値をロードする(ステップS286)。各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチに対応したスイッチタイマの値がロードされる。
そして、CPU56は、ロードしたスイッチタイマの値とスイッチオン判定値とを比較する(ステップS287)。それらが一致すれば、スイッチオンフラグをセットする(ステップS288)。
この場合には、スイッチオンチェックルーチンにおいて、入賞口スイッチ33aに対応するスイッチタイマの値がスイッチオン判定値「2」に一致していればスイッチオンフラグがセットされる(ステップS225)。そして、スイッチチェックオンルーチンは、スイッチタイマのアドレスのオフセットが更新されつつ(ステップS230)、最初に設定された繰り返し数分だけ実行されるので(ステップS228,S229)、結局、入賞口スイッチ29a,30a,33a,39aについて、対応するスイッチタイマの値がスイッチオン判定値「2」と比較されることになる。
スイッチオンフラグがセットされたら、払い出すべき賞球個数としての「10」をリングバッファに設定する(ステップS226)。そして、総賞球数格納バッファの格納値に10を加算する(ステップS227)。なお、リングバッファにデータを書き込んだときには、書込ポインタをインクリメントし、リングバッファの最後の領域にデータを書き込まれたときには、書込ポインタを、リングバッファの最初の領域を指すように更新する。
総賞球数格納バッファは、未払出の景品遊技媒体数を特定可能なデータの一例であり、払出制御手段に対して指示した賞球個数の累積値(ただし、払い出しがなされると減算される)が格納されるバッファであり、バックアップRAMに形成されている。なお、この実施の形態では、リングバッファにデータを書き込んだ時点で総賞球数格納バッファの格納値に対する加算処理が行われるが、払い出すべき賞球個数を指示する払出制御コマンドを出力ポートに出力した時点で総賞球数格納バッファの格納値に対する、出力する払出制御コマンドに対応した賞球数の加算処理を行ってもよい。
次に、CPU56は、入力判定値テーブルのオフセットとして「0」を設定し(ステップS231)、スイッチタイマのアドレスのオフセットとして「4」を設定する(ステップS232)。入力判定値テーブルのオフセット「0」は、入力判定値テーブルの最初のデータを使用することを意味する。また、各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチタイマのアドレスのオフセット「4」は始動口スイッチ14aに対応したスイッチタイマが指定されることを意味する。そして、スイッチオンチェックルーチンがコールされる(ステップS233)。
スイッチオンチェックルーチンにおいて、始動口スイッチ14aに対応するスイッチタイマの値がスイッチオン判定値「2」に一致していればスイッチオンフラグがセットされる(ステップS234)。スイッチオンフラグがセットされたら、払い出すべき賞球個数としての「6」をリングバッファに設定する(ステップS235)。また、総賞球数格納バッファの格納値に6を加算する(ステップS236)。
次いで、CPU56は、入力判定値テーブルのオフセットとして「0」を設定し(ステップS241)、スイッチタイマのアドレスのオフセットとして「5」を設定する(ステップS242)。入力判定値テーブルのオフセット「0」は、入力判定値テーブルの最初のデータを使用することを意味する。また、各スイッチタイマは、図12に示された入力ポートのビット順と同順に並んでいるので、スイッチタイマのアドレスのオフセット「5」はカウントスイッチ23に対応したスイッチタイマが指定されることを意味する。そして、スイッチオンチェックルーチンがコールされる(ステップS243)。
スイッチオンチェックルーチンにおいて、カウントスイッチ23に対応するスイッチタイマの値がスイッチオン判定値「2」に一致していればスイッチオンフラグがセットされる(ステップS244)。スイッチオンフラグがセットされたら、払い出すべき賞球個数としての「15」をリングバッファに設定する(ステップS245)。また、総賞球数格納バッファの格納値に15を加算する(ステップS246)。
そして、リングバッファにデータが存在する場合には(ステップS247)、読出ポインタが指すリングバッファの内容を送信バッファにセットするとともに(ステップS248)、読出ポインタの値を更新(リングバッファの次の領域を指すように更新)し(ステップS249)、賞球個数に関するコマンド送信テーブルをセットし(ステップS250)、コマンドセット処理をコールする(ステップS251)。コマンドセット処理の動作については後で詳しく説明する。
ステップS250では、賞球個数に関する払出制御コマンドが格納されているコマンド送信テーブル(ROM)の先頭アドレスが、コマンド送信テーブルのアドレスとして設定される。賞球個数に関するコマンド送信テーブルには、後述するINTデータ(01(H))、払出制御コマンドの1バイト目のデータ(F0(H))、および払出制御コマンドの2バイト目のデータが設定されている。ただし、2バイト目のデータとして「80(H)」が設定されている。
以上のように、遊技制御手段から払出制御基板37に賞球個数を指示する払出制御コマンドを出力しようとするときに、賞球個数に関するコマンド送信テーブルのアドレス設定と送信バッファの設定とが行われる。そして、コマンドセット処理によって、賞球個数に関するコマンド送信テーブルと送信バッファの設定内容とにもとづいて払出制御コマンドが払出制御基板37に送出される。なお、ステップS247において、書込ポインタと読出ポインタとの差によってデータがあるか否か確認することができるが、リングバッファ内の未処理のデータ個数を示すカウンタを設け、カウント値によってデータがあるか否か確認するようにしてもよい。
そして、総賞球数格納バッファの内容が0でない場合、すなわち、まだ賞球残がある場合には、CPU56は、賞球払出中フラグをオンする(ステップS252,S253)。
また、CPU56は、賞球払出中フラグがオンしているときには(ステップS254)、球払出装置97から実際に払い出された賞球個数を監視して総賞球数格納バッファの格納値を減算する賞球個数減算処理を行う(ステップS255)。なお、賞球払出中フラグがオンからオフに変化したときには、ランプ制御基板35に対して、賞球ランプ51の点灯を指示するランプ制御コマンドが送出される。
この実施の形態では、払出停止中であっても(ステップS201,S206)、ステップS221〜S251の処理が実行される。すなわち、遊技制御手段は、払出停止状態であっても、賞球個数を指示するための払出制御コマンドを送出することができる。すなわち、賞球個数を指示するためのコマンドが、払出停止状態であっても払出制御手段に伝達され、払出停止状態が解除されたときに、早めに賞球払出を開始することができる。また、遊技制御手段において、払出停止状態における入賞にもとづく賞球個数を記憶するための大きな記憶領域は必要とされない。
次に、遊技制御手段から各電気部品制御手段に対する制御コマンドの送出方式について説明しておく。遊技制御手段から他の電気部品制御基板(サブ基板)に制御コマンドを出力しようとするときに、コマンド送信テーブルの先頭アドレスの設定が行われる。図24(A)は、コマンド送信テーブルの一構成例を示す説明図である。1つのコマンド送信テーブルは3バイトで構成され、1バイト目にはINTデータが設定される。また、2バイト目のコマンドデータ1には、制御コマンドの1バイト目のMODEデータが設定される。そして、3バイト目のコマンドデータ2には、制御コマンドの2バイト目のEXTデータが設定される。
なお、EXTデータそのものがコマンドデータ2の領域に設定されてもよいが、コマンドデータ2には、EXTデータが格納されているテーブルのアドレスを指定するためのデータが設定されるようにしてもよい。例えば、コマンドデータ2のビット7(ワークエリア参照ビット)が0であれば、コマンドデータ2にEXTデータそのものが設定されていることを示す。そのようなEXTデータはビット7が0であるデータである。この実施の形態では、ワークエリア参照ビットが1であれば、EXTデータとして、送信バッファの内容を使用することを示す。なお、ワークエリア参照ビットが1であれば、他の7ビットが、EXTデータが格納されているテーブルのアドレスを指定するためのオフセットであることを示すように構成することもできる。
図24(B)INTデータの一構成例を示す説明図である。INTデータにおけるビット0は、払出制御基板37に払出制御コマンドを送出すべきか否かを示す。ビット0が「1」であるならば、払出制御コマンドを送出すべきことを示す。従って、CPU56は、例えば賞球処理(メイン処理のステップS32)において、INTデータに「01(H)」を設定する。また、INTデータにおけるビット1は、図柄出制御基板80に表示制御コマンドを送出すべきか否かを示す。ビット1が「1」であるならば、表示制御コマンドを送出すべきことを示す。従って、CPU56は、例えば特別図柄コマンド制御処理(メイン処理のステップS28)において、INTデータに「02(H)」を設定する。
INTデータのビット2,3は、それぞれ、ランプ制御コマンド、音制御コマンドを送出すべきか否かを示すビットであり、CPU56は、それらのコマンドを送出すべきタイミングになったら、特別図柄プロセス処理等で、ポインタが指しているコマンド送信テーブルに、INTデータ、コマンドデータ1およびコマンドデータ2を設定する。それらのコマンドを送出するときには、INTデータの該当ビットが「1」に設定され、コマンドデータ1およびコマンドデータ2にMODEデータおよびEXTデータが設定される。
この実施の形態では、払出制御コマンドについて、図24(C)に示すように、リングバッファおよび送信バッファが用意されている。そして、賞球処理において、賞球払出条件が成立すると、成立した条件に応じた賞球個数が順次リングバッファに設定される。また、賞球個数に関する払出制御コマンド送出する際に、リングバッファから1個のデータが送信バッファに転送される。なお、図24(C)に示す例では、リングバッファには、12個分の払出制御コマンドに相当するデータが格納可能になっている。すなわち、12個のバッファがある。なお、リングバッファにおけるバッファの数は、賞球を発生させる入賞口の数に対応した数であればよい。同時入賞が発生した場合でも、それぞれの入賞にもとづく払出制御コマンドのデータの格納が可能だからである。
図25は、主基板31から他の電気部品制御基板に送出される制御コマンドのコマンド形態の一例を示す説明図である。この実施の形態では、制御コマンドは2バイト構成であり、1バイト目はMODE(コマンドの分類)を表し、2バイト目はEXT(コマンドの種類)を表す。MODEデータの先頭ビット(ビット7)は必ず「1」とされ、EXTデータの先頭ビット(ビット7)は必ず「0」とされる。このように、電気部品制御基板へのコマンドとなる制御コマンドは、複数のデータで構成され、先頭ビットによってそれぞれを区別可能な態様になっている。なお、図25に示されたコマンド形態は一例であって他のコマンド形態を用いてもよい。例えば、1バイトや3バイト以上で構成される制御コマンドを用いてもよい。また、図25では払出制御基板37に送出される払出制御コマンドを例示するが、他の電気部品制御基板に送出される制御コマンドも同一構成である。
図26は、各電気部品制御手段に対する制御コマンドを構成する8ビットの制御信号CD0〜CD7とINT信号との関係を示すタイミング図である。図26に示すように、MODEまたはEXTのデータが出力ポート(出力ポート1〜出力ポート4のうちのいずれか)に出力されてから、Aで示される期間が経過すると、CPU56は、データ出力を示す信号であるINT信号をハイレベル(オンデータ)にする。また、そこからBで示される期間が経過するとINT信号をローレベル(オフデータ)にする。さらに、次に送出すべきデータがある場合には、すなわち、MODEデータ送出後では、Cで示される期間をおいてから2バイト目のデータを出力ポートに送出する。2バイト目のデータに関して、A,Bの期間は、1バイト目の場合と同様である。このように、取込信号はMODEおよびEXTのデータのそれぞれについて出力される。
Aの期間は、CPU56が、コマンドの送出準備の期間すなわちバッファに送出コマンドを設定する処理に要する期間であるとともに、制御信号線におけるデータの安定化のための期間である。すなわち、制御信号線において制御信号CD0〜CD7が出力された後、所定期間(Aの期間:オフ出力期間の一部)経過後に、取込信号としてのINT信号が出力される。また、Bの期間(オン出力期間)は、INT信号安定化のための期間である。そして、Cの期間(オフ出力期間の一部)は、電気部品制御手段が確実にデータを取り込めるように設定されている期間である。B,Cの期間では、信号線上のデータは変化しない。すなわち、B,Cの期間が経過するまでデータ出力が維持される。
この実施の形態では、払出制御基板37への払出制御コマンド、図柄制御基板80への表示制御コマンド、ランプ制御基板35へのランプ制御コマンドおよび音制御基板70への音制御コマンドは、同一のコマンド送信処理ルーチン(共通モジュール)を用いて送出される。そこで、B,Cの期間すなわち1バイト目に関するINT信号が立ち上がってから2バイト目のデータが送出開始されるまでの期間は、コマンド受信処理に最も時間がかかる電気部品制御手段における受信処理時間よりも長くなるように設定される。
なお、各電気部品制御手段は、INT信号が立ち上がったことを検知して、例えば割込処理によって1バイトのデータの取り込み処理を開始する。
B,Cの期間が、コマンド受信処理に最も時間がかかる電気部品制御手段における受信処理時間よりも長いので、遊技制御手段が、各電気部品制御手段に対するコマンド送出処理を共通モジュールで制御しても、いずれの電気部品制御手段でも遊技制御手段からの制御コマンドを確実に受信することができる。
CPU56は、INT信号出力処理を実行した後に所定期間が経過すると次のデータを送出できる状態になるが、その所定期間(B,Cの期間)は、INT信号出力処理の前にデータを送出してからINT信号を出力開始するまでの期間(Aの期間)よりも長い。上述したように、Aの期間はコマンドの信号線における安定化期間であり、B,Cの期間は受信側がデータを取り込むのに要する時間を確保するための期間である。従って、Aの期間をB,Cの期間よりも短くすることによって、受信側の電気部品制御手段が確実にコマンドを受信できる状態になるという効果を得ることができるとともに、1つのコマンドの送出完了に要する期間が短縮される効果もある。
図27は、払出制御コマンドの内容の一例を示す説明図である。図27に示された例において、MODE=FF(H),EXT=00(H)のコマンドFF00(H)は、払出が可能であることを指示する払出制御コマンド(払出可能状態指定コマンド)である。MODE=FF(H),EXT=01(H)のコマンドFF01(H)は、払出を停止すべき状態であることを指示する払出制御コマンド(払出停止状態指定コマンド)である。また、MODE=F0(H)のコマンドF0XX(H)は、賞球個数を指定する払出制御コマンドである。EXTである「XX」が払出個数を示す。
払出制御手段は、主基板31の遊技制御手段からFF01(H)の払出制御コマンドを受信すると賞球払出および球貸しを停止する状態となり、FF00(H)の払出制御コマンドを受信すると賞球払出および球貸しができる状態になる。また、賞球個数を指定する払出制御コマンドを受信すると、受信したコマンドで指定された個数に応じた賞球払出制御を行う。
なお、払出制御コマンドは、払出制御手段が認識可能に1回だけ送出される。認識可能とは、この例では、INT信号のレベルが変化することであり、認識可能に1回だけ送出されるとは、この例では、払出制御信号の1バイト目および2バイト目のそれぞれに応じてINT信号が1回だけパルス状(矩形波状)に出力されることである。
各電気部品制御基板への制御コマンドを、対応する出力ポート(出力ポート1〜4)に出力する際に、出力ポート0のビット0〜3のうちのいずれかのビットが所定期間「1」(ハイレベル)になるのであるが、INTデータにおけるビット配列と出力ポート0におけるビット配列とは対応している。従って、各電気部品制御基板に制御コマンドを送出する際に、INTデータにもとづいて、容易にINT信号の出力を行うことができる。
図28は、コマンドセット処理(ステップS205,S209,S251)の処理例を示すフローチャートである。コマンドセット処理は、コマンド出力処理とINT信号出力処理とを含む処理である。コマンドセット処理において、CPU56は、まず、コマンド送信テーブルのアドレス(送信信号指示手段としてのポインタの内容)をスタック等に退避する(ステップS331)。そして、ポインタが指していたコマンド送信テーブルのINTデータを引数1にロードする(ステップS332)。引数1は、後述するコマンド送信処理に対する入力情報になる。また、コマンド送信テーブルを指すアドレスを+1する(ステップS333)。従って、コマンド送信テーブルを指すアドレスは、コマンドデータ1のアドレスに一致する。
そこで、CPU56は、コマンドデータ1を読み出して引数2に設定する(ステップS334)。引数2も、後述するコマンド送信処理に対する入力情報になる。そして、コマンド送信処理ルーチンをコールする(ステップS335)。
図29は、コマンド送信処理ルーチンを示すフローチャートである。コマンド送信処理ルーチンにおいて、CPU56は、まず、引数1に設定されているデータすなわちINTデータを、比較値として決められているワークエリアに設定する(ステップS351)。次いで、送信回数=4を、処理数として決められているワークエリアに設定する(ステップS352)。そして、払出制御信号を出力するためのポート1のアドレスをIOアドレスにセットする(ステップS353)。この実施の形態では、ポート1のアドレスは、払出制御信号を出力するための出力ポートのアドレスである。また、ポート2〜4のアドレスが、表示制御信号、ランプ制御信号、音声制御信号を出力するための出力ポートのアドレスである。
次に、CPU56は、比較値を1ビット右にシフトする(ステップS354)。シフト処理の結果、キャリービットが1になったか否か確認する(ステップS355)。キャリービットが1になったということは、INTデータにおける最も右側のビットが「1」であったことを意味する。この実施の形態では4回のシフト処理が行われるのであるが、例えば、払出制御コマンドを送出すべきことが指定されているときには、最初のシフト処理でキャリービットが1になる。
キャリービットが1になった場合には、引数2に設定されているデータ、この場合にはコマンドデータ1(すなわちMODEデータ)を、IOアドレスとして設定されているアドレスに出力する(ステップS356)。最初のシフト処理が行われたときにはIOアドレスにポート1のアドレスが設定されているので、そのときに、払出制御コマンドのMODEデータがポート1に出力される。
次いで、CPU56は、IOアドレスを1加算するとともに(ステップS357)、処理数を1減算する(ステップS358)。加算前にポート1を示していた場合には、IOアドレスに対する加算処理によって、IOアドレスにはポート2のアドレスが設定される。ポート2は、表示制御コマンドを出力するためのポートである。そして、CPU56は、処理数の値を確認し(ステップS359)、値が0になっていなければ、ステップS354に戻る。ステップS354で再度シフト処理が行われる。
2回目のシフト処理ではINTデータにおけるビット1の値が押し出され、ビット1の値に応じてキャリーフラグが「1」または「0」になる。従って、表示制御コマンドを送出すべきことが指定されているか否かのチェックが行われる。同様に、3回目および4回目のシフト処理によって、ランプ制御コマンドおよび音制御コマンドを送出すべきことが指定されているか否かのチェックが行われる。このように、それぞれのシフト処理が行われるときに、IOアドレスには、シフト処理によってチェックされる制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音制御コマンド)に対応したIOアドレスが設定されている。
よって、キャリーフラグが「1」になったときには、対応する出力ポート(ポート1〜ポート4)に制御コマンドが送出される。すなわち、1つの共通モジュールで、各電気部品制御手段に対する制御コマンドの送出処理を行うことができる。
また、このように、シフト処理のみによってどの電気部品制御手段に対して制御コマンドを出力すべきかが判定されるので、いずれの電気部品制御手段に対して制御コマンドを出力すべきか判定する処理が簡略化されている。
次に、CPU56は、シフト処理開始前のINTデータが格納されている引数1の内容を読み出し(ステップS360)、読み出したデータをポート0に出力する(ステップS361)。この実施の形態では、ポート0のアドレスは、各制御信号についてのINT信号を出力するためのポートであり、ポート0のビット0〜4が、それぞれ、払出制御INT信号、表示制御INT信号、ランプ制御INT信号、音制御INT信号を出力するためのポートである。INTデータでは、ステップS351〜S359の処理で出力された制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音制御コマンド)に応じたINT信号の出力ビットに対応したビットが「1」になっている。従って、ポート1〜ポート4のいずれかに出力された制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音制御コマンド)に対応したINT信号がハイレベルになる。
次いで、CPU56は、ウェイトカウンタに所定値を設定し(ステップS362)、その値が0になるまで1ずつ減算する(ステップS363,S364)。この処理は、図26に示されたBの期間を設定するための処理である。ウェイトカウンタの値が0になると、クリアデータ(00)を設定して(ステップS365)、そのデータをポート0に出力する(ステップS366)。よって、INT信号はローレベルになる。そして、ウェイトカウンタに所定値を設定し(ステップS362)、その値が0になるまで1ずつ減算する(ステップS368,S369)。この処理は、図26に示されたCの期間を設定するための処理である。ただし、実際のCの期間は、ステップS367〜S369で作成される時間に、その後の処理時間(この時点でMODEデータが出力されている場合にはEXTデータを出力するまでに要する制御にかかる時間)が加算された期間となる。このように、Cの期間が設定されることによって、連続してコマンドが送出される場合であっても、一のコマンドの出力完了後、次にコマンドの送出が開始されるまでに所定期間がおかれることになり、コマンドを受信する電気部品制御手段の側で、容易に連続するコマンドの区切りを識別することができ、各コマンドは確実に受信される。
従って、ステップS367でウェイトカウンタに設定される値は、Cの期間が、制御コマンド受信対象となる全ての電気部品制御手段が確実にコマンド受信処理を行うのに十分な期間になるような値である。また、ウェイトカウンタに設定される値は、Cの期間が、ステップS357〜S359の処理に要する時間(Aの期間に相当)よりも長くなるような値である。なお、Aの期間をより長くしたい場合には、Aの期間を作成するためのウェイト処理(例えば、ウェイトカウンタに所定値を設定し、ウェイトカウンタの値が0になるまで減算を行う処理)を行う。
以上のようにして、制御コマンドの1バイト目のMODEデータが送出される。そこで、CPU56は、図28に示すステップS336で、コマンド送信テーブルを指す値を1加算する。従って、3バイト目のコマンドデータ2の領域が指定される。CPU56は、指し示されたコマンドデータ2の内容を引数2にロードする(ステップS337)。また、コマンドデータ2のビット7(ワークエリア参照ビット)の値が「0」であるか否か確認する(ステップS339)。0でなければ、送信バッファの内容を引数2にロードする(ステップS341)。なお、ワークエリア参照ビットの値が「1」であるときに拡張データを使用するように構成されている場合には、コマンド拡張データアドレステーブルの先頭アドレスをポインタにセットし、そのポインタにコマンドデータ2のビット6〜ビット0の値を加算してアドレスを算出する。そして、そのアドレスが指すエリアのデータを引数2にロードする。
送信バッファには賞球個数を特定可能なデータが設定されているので、引数2にそのデータが設定される。なお、ワークエリア参照ビットの値が「1」であるときに拡張データを使用するように構成されている場合には、コマンド拡張データアドレステーブルには、電気部品制御手段に送出されうるEXTデータが順次設定される。よって、ワークエリア参照ビットの値が「1」であれば、コマンドデータ2の内容に応じたコマンド拡張データアドレステーブル内のEXTデータが引数2にロードされる。
次に、CPU56は、コマンド送信処理ルーチンをコールする(ステップS342)。従って、MODEデータの送出の場合と同様のタイミングでEXTデータが送出される。
以上のようにして、2バイト構成の制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音制御コマンド)が、対応する電気部品制御手段に送信される。電気部品制御手段ではINT信号の立ち上がりを検出すると制御コマンドの取り込み処理を開始するのであるが、いずれの電気部品制御手段についても、取り込み処理が完了する前に遊技制御手段からの新たな信号が信号線に出力されることはない。すなわち、各電気部品制御手段において、確実なコマンド受信処理が行われる。なお、各電気部品制御手段は、INT信号の立ち下がりで制御コマンドの取り込み処理を開始してもよい。また、INT信号の極性を図26に示された場合と逆にしてもよい。
また、この実施の形態では、賞球処理において、賞球払出条件が成立すると賞球個数を特定可能なデータが、同時に複数のデータを格納可能なリングバッファに格納され、賞球個数を指定する払出制御コマンドを送出する際に、読出ポインタが指しているリングバッファの領域のデータが送信バッファに転送される。従って、同時に複数の賞球払出条件の成立があっても、それらの条件成立にもとづく賞球個数を特定可能なデータがリングバッファに保存されるので、各条件成立にもとづくコマンド出力処理は問題なく実行される。
さらに、この実施の形態では、1回の賞球処理内で払出停止状態指定コマンドまたは払出可能状態指定コマンドと賞球個数を示すコマンドとの双方を送出することができる。すなわち、2ms毎に起動される1回の制御期間内において、複数のコマンドを送出することができる。また、この実施の形態では、各制御手段への制御コマンド(表示制御コマンド、ランプ制御コマンド、音制御コマンド、払出制御コマンド)毎に、それぞれ複数のリングバッファが用意されているので、例えば、表示制御コマンド、ランプ制御コマンドおよび音制御コマンドのリングバッファに制御コマンドを特定可能なデータが設定されている場合には、1回のコマンド制御処理で複数の表示制御コマンド、ランプ制御コマンドおよび音制御コマンドを送出するように構成することも可能である。すなわち、同時に(遊技制御処理すなわち2msタイマ割込処理の起動周期での意味)、複数の制御コマンドを送出することができる。遊技演出の進行上、それらの制御コマンドの送出タイミングは同時に発生するので、このように構成されているのは便利である。ただし、払出制御コマンドは、遊技演出の進行とは無関係に発生するので、一般には、表示制御コマンド、ランプ制御コマンドおよび音制御コマンドと同時に送出されることはない。
図30は、賞球個数減算処理の一例を示すフローチャートである。賞球個数減算処理において、CPU56は、まず、総賞球数格納バッファの格納値をロードする(ステップS381)。そして、格納値が0であるか否か確認する(ステップS382)。0であれば処理を終了する。
0でなければ、賞球カウントスイッチ用のスイッチタイマをロードし(ステップS383)、ロード値とオン判定値(この場合は「2」)とを比較する(ステップS384)。一致したら(ステップS385)、賞球カウントスイッチ301Aが確かにオンしたとして、すなわち、確かに1個の遊技球が球払出装置97から払い出されたとして、総賞球数格納バッファの格納値を1減算する(ステップS386)。
また、賞球情報カウンタの値を+1する(ステップS387)。そして、賞球情報カウンタの値が10以上であれば(ステップS388)、賞球情報出力カウンタの値を+1するとともに(ステップS389)、賞球情報カウンタの値を−10する(ステップS390)。なお、賞球情報出力カウンタの値は、図16に示された遊技制御処理における情報出力処理(ステップS30)で参照され、その値が1以上であれば、賞球信号(出力ポート5のビット7:図11参照)として1パルスが出力される。よって、この実施の形態では、10個の遊技球が賞球として払い出される度に、1つの賞球信号が遊技機外部に出力される。
そして、総賞球数格納バッファの格納値が0になったら(ステップS391)、賞球払出中フラグをクリアし(ステップS392)、賞球残数がないことを報知するために、ランプ制御コマンド用のコマンド送信テーブルに賞球ランプ51の消灯を示すコマンドデータを設定した後(ステップS393)、ランプ制御コマンドの送出処理を実行する(ステップS394)。
以上のように、この実施の形態では、遊技制御用変動データ記憶手段としてのバックアップRAMには未払出の景品遊技媒体数を特定可能なデータ(この例では総賞球数バッファ)が記憶され、遊技制御手段が、入賞の発生にもとづいて入賞に応じた払出予定数を用いてデータの内容を更新するとともに、賞球カウントスイッチ301Aからの検出信号にもとづいてデータを更新する。具体的には、入賞の発生にもとづいて入賞に応じた払出予定数をデータに加算し(図20,図21におけるステップS227,S235,S245参照)、賞球カウントスイッチ301Aからの検出信号にもとづいて特定される払出数をデータから減算する(ステップS385,S386参照)。
次に、遊技者の貸し球要求にもとづく払出処理について説明する。図31は、カードユニット50の構成を、パチンコ遊技機1における球貸しに関する構成要素とともに示すブロック図である。図31に示すように、パチンコ遊技機1に設けられている度数表示器157は、カードユニット50に搭載されている制御手段としてのカードユニット制御部160によって表示制御される。度数表示器157には、カードに記録されている金額を単位料金(例えば100円)で除算した場合の商、すなわち度数が2桁表示される。カードユニット制御部160は、カードユニット制御用マイクロコンピュータやI/Oポートを含むものであり、カードユニット50の動作を制御し、遊技用価値としての遊技球を遊技者に貸与すべきと判定した場合に貸与指令を出力する制御手段に相当する。
また、パチンコ遊技機1に設けられている球貸しスイッチ181および返却スイッチ182からの信号は、カードユニット50のカードユニット制御部160に入力される。カードユニット制御部160には、カードに記録されている情報を読み取るとともにカードに情報を記録するカードリーダライタ161が接続されている。また、使用可ランプ151、連結方向表示器153およびカード投入表示ランプ154が接続されている。
カードユニット制御部160は、球貸しスイッチ181の押下を検出すると、通信用IC500に球貸し要求信号を出力する。通信用IC500は、カードユニット制御部160から球貸し要求信号を入力すると、遊技機の払出制御基板37に搭載されている通信用IC500と、球払出制御に関する通信を行う。
なお、この実施の形態では、通信用IC500はマイクロコンピュータで実現されるが、通信用IC500は、専用通信用LSI等の他のタイプのICでも実現可能である。カードユニット制御用マイクロコンピュータおよび通信用IC500のリセット端子には、リセット回路(図示せず)からのリセット信号が入力される。ただし、リセット回路とカードユニット制御用マイクロコンピュータとの間には例えば遅延回路が設けられ、カードユニット制御用マイクロコンピュータのリセット解除タイミング(動作開始タイミング)は、通信用IC500のリセット解除タイミング(動作開始タイミング)よりも遅い。カードユニット制御用マイクロコンピュータが動作開始するときには、通信用IC500は既に立ち上がっているので、その出力は安定している。従って、電源投入時等に、カードユニット制御用マイクロコンピュータに対して不安定な信号が入力されるようなことは防止される。なお、通信用IC500は、電力供給が停止しても記憶内容を保持可能な通信状態保持手段としてのバックアップRAM領域を有している。また、通信用IC500は、例えばマスク不能割り込みの発生にもとづいて、カードユニット50への電力供給が停止することを認識可能である。
なお、カードユニット50において、通信用IC500の出力側には出力回路が設置され、遊技機1の払出制御基板37の信号受信部(通信用IC400の前段)には入力回路が設置される。出力回路および入力回路として、例えば、バスドライバ/レシーバ等のインタフェース用ICやフォトカプラを使用することができる。フォトカプラを用いた場合には、カードユニット50における基準電位と遊技機1の払出制御基板37における基準電位とが異なっていても信号を正しく伝達することができる。
図32は、遊技機の払出制御基板37に搭載されている払出制御用CPU371周りの一構成例を示すブロック図である。図32に示すように、電源基板910の電源監視回路(電源監視手段)からの電源断信号が、バッファ回路960を介して払出制御用CPU371のマスク不能割込端子(XNMI端子)に接続されている。従って、払出制御用CPU371は、マスク不能割込処理によって遊技機への電力供給停止の発生を確認することができる。
払出制御用CPU371のCLK/TRG2端子には、主基板31からのINT信号が接続されている。CLK/TRG2端子にクロック信号が入力されると、払出制御用CPU371に内蔵されているタイマカウンタレジスタCLK/TRG2の値がダウンカウントされる。そして、レジスタ値が0になると割込が発生する。従って、タイマカウンタレジスタCLK/TRG2の初期値を「1」に設定しておけば、INT信号の入力に応じて割込が発生することになる。
払出制御基板37には、システムリセット回路975も搭載されているが、この実施の形態では、システムリセット回路975におけるリセットIC976は、電源投入時に、外付けのコンデンサに容量で決まる所定時間だけ出力をローレベルとし、所定時間が経過すると出力をハイレベルにする。また、リセットIC976は、VSLの電源電圧を監視して電圧値が所定値(例えば+9V)以下になると出力をローレベルにする。従って、遊技機への電力供給停止時には、リセットIC976からの信号がローレベルになることによって払出制御用CPU371がシステムリセットされる。なお、リセットIC976の出力は、遅延回路401を介して払出制御用CPU371のリセット端子に入力される。
リセットIC976が電力供給停止を検知するための所定値は、通常時の電圧より低いが、払出制御用CPU371が暫くの間動作しうる程度の電圧である。また、リセットIC976が、払出制御用CPU371が必要とする電圧(この例では+5V)よりも高い電圧を監視するように構成されているので、払出制御用CPU371が必要とする電圧に対して監視範囲を広げることができる。従って、より精密な監視を行うことができる。
+5V電源から電力が供給されていない間、払出制御用CPU371の内蔵RAMの少なくとも一部は、電源基板から供給されるバックアップ電源がバックアップ端子に接続されることによってバックアップされ、停電等の遊技機に対する電力供給停止が発生しても内容は保存される。そして、+5V電源が復旧すると、システムリセット回路975からリセット信号が発せられるので、払出制御用CPU371は、通常の動作状態に復帰する。そのとき、必要なデータがバックアップされているので、停電等からの復旧時には停電発生時の払出制御状態に復旧させることができる。
なお、図32に示された構成では、システムリセット回路975は、電源投入時に、コンデンサの容量で決まる期間のローレベルを出力し、その後ハイレベルを出力する。すなわち、リセット解除タイミングは1回だけである。しかし、図9に示された主基板31の場合と同様に、複数回のリセット解除タイミングが発生するような回路構成を用いてもよい。
また、電源基板910からの電源断信号は通信用IC400のマスク不能割り込み端子(NMI端子)に入力されている。よって、通信用IC400も、マスク不能割込処理によって遊技機への電力供給停止の発生を確認することができる。なお、この実施の形態では、通信用IC400はマイクロコンピュータで実現されるが、通信用IC400は、専用通信用LSI等の他のタイプのICでも実現可能である。
通信用IC400のリセット端子には、リセットIC976の出力が入力される。従って、遅延回路401の存在によって、払出制御用CPU371のリセット解除タイミング(動作開始タイミング)は、通信用IC500のリセット解除タイミング(動作開始タイミング)よりも遅い。払出制御用CPU371が動作開始するときには、通信用IC400は既に立ち上がっているので、その出力は安定している。従って、電源投入時等に、払出制御用CPU371に対して不安定な信号が入力されるようなことは防止される。
なお、払出制御基板37において、通信用IC400の出力側には出力回路が設置され、カードユニット50の信号受信部(通信用IC500の前段)には入力回路が設置される。出力回路および入力回路として、例えば、バスドライバ/レシーバ等のインタフェース用ICやフォトカプラを使用することができる。フォトカプラを用いた場合には、払出制御基板37における基準電位とカードユニット50における基準電位とが異なっていても信号を正しく伝達することができる。
図33は、この実施の形態における出力ポートの割り当てを示す説明図である。図33に示すように、出力ポートD(アドレス00H)は、払出モータ289に出力される駆動信号等の出力ポートである。また、出力ポートE(アドレス01H)は、7セグメントLEDであるエラー表示LED374に出力される表示制御信号の出力ポートである。そして、出力ポートF(アドレス02H)は、振分ソレノイド310に出力される駆動信号、およびカードユニット50に対するEXS信号、PRDY信号、初期化信号を出力するための出力ポートである。
図34は、この実施の形態における入力ポートのビット割り当てを示す説明図である。図34に示すように、入力ポートA(アドレス06H)は、主基板31から送出された払出制御コマンドの8ビットの払出制御信号を取り込むための入力ポートである。また、入力ポートB(アドレス07H)のビット0〜1には、それぞれ、賞球カウントスイッチ301Aおよび球貸しカウントスイッチ301Bの検出信号が入力される。ビット3には、クリアスイッチ921の操作信号が入力され、ビット7には、通信用IC400からのカードユニット接続信号(VL信号)が入力される。通信用IC400は、カードユニット50からのVL信号を払出制御用CPU371に出力する。
入力ポートC(アドレス08H)には、通信用IC300からの球貸し個数信号(ビット0〜ビット4)、球貸し要求信号(BRDY)、球貸し指示信号(BRQ)およびエラー信号が入力される。
なお、図7に示された入力ポート372a〜372cは入力ポートA〜Cに対応し、出力ポート372d〜372fは出力ポートD〜Fに対応している。
図35は、払出制御手段(払出制御用CPU371およびROM,RAM等の周辺回路)のメイン処理を示すフローチャートである。メイン処理では、払出制御用CPU371は、まず、必要な初期設定を行う。すなわち、払出制御用CPU371は、まず、割込禁止に設定する(ステップS701)。次に、割込モードを割込モード2に設定し(ステップS702)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS703)。また、払出制御用CPU371は、内蔵デバイスレジスタの初期化を行い(ステップS704)、CTCおよびPIOの初期化(ステップS705)を行った後に、RAMをアクセス可能状態に設定する(ステップS706)。
この実施の形態では、内蔵CTCのうちの一つのチャネルがタイマモードで使用される。従って、ステップS704の内蔵デバイスレジスタの設定処理およびステップS705の処理において、使用するチャネルをタイマモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。そして、そのチャネルによる割込がタイマ割込として用いられる。タイマ割込を例えば2ms毎に発生させたい場合は、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。
なお、タイマモードに設定されたチャネル(この実施の形態ではチャネル3)に設定される割込ベクタは、タイマ割込処理の先頭アドレスに相当するものである。具体的には、Iレジスタに設定された値と割込ベクタとでタイマ割込処理の先頭アドレスが特定される。タイマ割込処理では、払出制御処理が実行される。
また、内蔵CTCのうちの他の一つのチャネル(この実施の形態ではチャネル2)が、遊技制御手段からの払出制御コマンド受信のための割込発生用のチャネルとして用いられ、そのチャネルがカウンタモードで使用される。従って、ステップS704の内蔵デバイスレジスタの設定処理およびステップS705の処理において、使用するチャネルをカウンタモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。
カウンタモードに設定されたチャネル(チャネル2)に設定される割込ベクタは、後述するコマンド受信割込処理の先頭アドレスに相当するものである。具体的には、Iレジスタに設定された値と割込ベクタとでコマンド受信割込処理の先頭アドレスが特定される。
この実施の形態では、払出制御用CPU371でも割込モード2が設定される。従って、内蔵CTCのカウントアップにもとづく割込処理を使用することができる。また、CTCが送出した割込ベクタに応じた割込処理開始アドレスを設定することができる。
CTCのチャネル2(CH2)のカウントアップにもとづく割込は、上述したタイマカウンタレジスタCLK/TRG2の値が「0」になったときに発生する割込である。従って、例えばステップS705において、特定レジスタとしてのタイマカウンタレジスタCLK/TRG2に初期値「1」が設定される。さらに、CLK/TRG2端子に入力される信号の立ち上がりまたは立ち下がりで特定レジスタとしてのタイマカウンタレジスタCLK/TRG2のカウント値が−1されるのであるが、所定の特定レジスタの設定によって、立ち上がり/立ち下がりの選択を行うことができる。この実施の形態では、CLK/TRG2端子に入力される信号の立ち上がりで、タイマカウンタレジスタCLK/TRG2のカウント値が−1されるような設定が行われる。
また、CTCのチャネル3(CH3)のカウントアップにもとづく割込は、CPUの内部クロック(システムクロック)をカウントダウンしてレジスタ値が「0」になったら発生する割込であり、後述する2msタイマ割込として用いられる。具体的には、CPU371の動作クロックを分周したクロックがCTCに与えられ、クロックの入力によってレジスタの値が減算され、レジスタの値が0になるとタイマ割込が発生する。例えば、CH3のレジスタ値はシステムクロックの1/256周期で減算される。分周したクロックにもとづいて減算が行われるので、レジスタの初期値は大きくならない。ステップS705において、CH3のレジスタには、初期値として2msに相当する値が設定される。
CTCのCH2のカウントアップにもとづく割込は、CH3のカウントアップにもとづく割込よりも優先順位が高い。従って、同時にカウントアップが生じた場合に、CH2のカウントアップにもとづく割込、すなわち、コマンド受信割込処理の実行契機となる割込の方が優先される。
次いで、払出制御用CPU371は、入力ポートB(図34参照)を介して入力されるクリアスイッチ921の出力信号の状態を1回だけ確認する(ステップS707)。その確認においてオンを検出した場合には、払出制御用CPU371は、通常の初期化処理を実行する(ステップS711〜ステップS713)。クリアスイッチ921がオンである場合(押下されている場合)には、ローレベルのクリアスイッチ信号が出力されている。なお、入力ポート372では、クリアスイッチ信号のオン状態はハイレベルである。
なお、払出制御用CPU371も、主基板31のCPU56と同様に、例えば、オン状態が少なくとも2ms(2ms毎に起動される処理の1回目の処理における検出直前に検出信号がオンした場合)継続しないとスイッチオンとは見なさないが、クリアスイッチ921のオン検出の場合には、1回のオン判定でオン/オフが判定される。すなわち、初期化操作手段としてのクリアスイッチ921が所定の操作状態であるか否かを払出制御用CPU371が判定するための初期化要求検出判定期間は、遊技媒体検出手段としての賞球カウントスイッチ等が遊技媒体を検出したことを判定するための遊技媒体検出判定期間とは異なる期間とされている。
クリアスイッチ921がオンの状態でない場合には、払出制御用CPU371は、払出制御用のバックアップRAM領域にバックアップデータが存在しているか否かの確認を行う(ステップS708)。例えば、主基板31のCPU56の処理と同様に、遊技機への電力供給停止時にセットされるバックアップフラグがセット状態になっているか否かによって、バックアップデータが存在しているか否か確認する。バックアップフラグがセット状態になっている場合には、バックアップデータありと判断する。
バックアップありを確認したら、払出制御用CPU371は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う。不測の停電等の電力供給の停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されていたはずであるから、チェック結果は正常になる。チェック結果が正常でない場合には、内部状態を電力供給の停止時の状態に戻すことができないので、不測の停電等からの復旧時ではなく電源投入時に実行される初期化処理を実行する。
チェック結果が正常であれば(ステップS709)、払出制御用CPU371は、内部状態を電力供給停止時の状態に戻すための払出状態復旧処理を行う(ステップS710)。そして、バックアップRAM領域に保存されていたPC(プログラムカウンタ)の指すアドレスに復帰する。
初期化処理では、払出制御用CPU371は、まず、RAMクリア処理を行う(ステップS711)。そして、2ms毎に定期的にタイマ割込がかかるように払出制御用CPU371に設けられているCTCのレジスタの設定が行われる(ステップS712)。すなわち、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。そして、初期設定処理のステップS701において割込禁止とされているので、初期化処理を終える前に割込が許可される(ステップS713)。
なお、払出制御用CPU371は、RAMクリア処理とともに、出力ポートに初期値を設定する処理を行う(全て0クリア)。ただし、通信用IC400に対して、初期化信号(図33参照)を出力する。通信用IC400は、払出制御用CPU371からの初期化信号を検出したら、初期化処理を行う。初期化処理には、後述する通信コード(カードユニット50の通信用IC500との通信状態を示す情報)をクリアする処理が含まれる。また、通信用IC400は、払出制御用CPU371からの初期化信号を検出したら、カードユニット50に対して初期化信号を送信するようにしてもよい。
この実施の形態では、払出制御用CPU371の内蔵CTCが繰り返しタイマ割込を発生するように設定される。この実施の形態では、繰り返し周期は2msに設定される。そして、タイマ割込が発生すると、図36に示すように、タイマ割込があったことを示すタイマ割込フラグがセットされる(ステップS772)。そして、メイン処理において、タイマ割込フラグがセットされたことが検出されたら(ステップS714)、タイマ割込フラグがリセットされるとともに(ステップS751)、払出制御処理(ステップS751〜S760)が実行される。
なお、タイマ割込では、図36に示すように、最初に割込許可状態に設定される(ステップS771)。よって、タイマ割込処理中では割込許可状態になり、INT信号の入力にもとづく払出制御コマンド受信処理を優先して実行することができる。
払出制御処理において、払出制御用CPU371は、まず、入力ポート372bに入力される賞球カウントスイッチ301Aや球貸しカウントスイッチ301B等のスイッチがオンしたか否かを判定する(スイッチ処理:ステップS752)。
次に、払出制御用CPU371は、主基板31から払出停止状態指定コマンドを受信していたら払出停止状態に設定し、払出可能状態指定コマンドを受信していたら払出停止状態の解除を行う(払出停止状態設定処理:ステップS753)。また、受信した払出制御コマンドを解析し、解析結果に応じた処理を実行する(コマンド解析実行処理:ステップS754)。さらに、プリペイドカードユニット制御処理を行う(ステップS755)。
次いで、払出制御用CPU371は、球貸し要求に応じて貸し球を払い出す制御を行う(ステップS756)。このとき、払出制御用CPU371は、振分ソレノイド310によって球振分部材311を球貸し側に設定する。
さらに、払出制御用CPU371は、総合個数記憶に格納された個数の賞球を払い出す賞球制御処理を行う(ステップS757)。このとき、払出制御用CPU371は、振分ソレノイド310によって球振分部材311を賞球側に設定する。そして、出力ポート372cおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に対して駆動信号を出力し、所定の回転数分払出モータ289を回転させる払出モータ制御処理を行う(ステップS758)。
なお、この実施の形態では、払出モータ289としてステッピングモータが用いられ、それらを制御するために1−2相励磁方式が用いられる。従って、具体的には、払出モータ制御処理において、8種類の励磁パターンデータが繰り返し払出モータ289に出力される。また、この実施の形態では、各励磁パターンデータが4msずつ出力される。
次いで、エラー検出処理が行われ、その結果に応じてエラー表示LED374に所定の表示を行う(エラー処理:ステップS759)。また、遊技機外部に出力される球貸し個数信号を出力する処理等を行う(出力処理:ステップS760)。
なお、図33に示す出力ポートDは、払出制御処理における払出モータ制御処理(ステップS758)でアクセスされる。また、出力ポートEは、払出制御処理におけるエラー処理(ステップS759)でアクセスされる。そして、出力ポートFは、払出制御処理における球貸し制御処理(ステップS756)および賞球制御処理(ステップS757)でアクセスされる。
図37は、ステップS710の払出状態復旧処理の一例を示すフローチャートである。払出状態復旧処理において、払出制御用CPU371は、まず、スタックポインタの復帰処理を行う(ステップS731)。スタックポインタの値は、後述する電力供給停止時処理において、所定のRAMエリア(電源バックアップされている)に退避している。よって、ステップS731では、そのRAMエリアの値をスタックポインタに設定することによって復帰させる。なお、復帰されたスタックポインタが指す領域(すなわちスタック領域)には、電力供給が停止したときのレジスタ値やプログラムカウンタ(PC)の値が退避している。
次いで、払出制御用CPU371は、バックアップフラグをクリアする(ステップS732)すなわち、前回の電力供給停止時に所定の記憶保護処理が実行されたことを示すフラグをリセットする。また、スタック領域から各種レジスタの退避値を読み出して、各種レジスタに設定する(ステップS733)。すなわち、レジスタ復元処理を行う。そして、パリティフラグがオンしていない場合には割込許可状態にする(ステップS734,S735)。最後に、AFレジスタ(アキュミュレータとフラグのレジスタ)をスタック領域から復元する(ステップS736)。
そして、RET命令が実行されるのであるが、ここでのリターン先は、払出状態復旧処理をコールした部分ではない。なぜなら、ステップS731においてスタックポインタの復帰処理がなされ、復帰されたスタックポインタが指すスタック領域に格納されているリターンアドレスは、プログラムにおける前回の電力供給停止時にNMIが発生したアドレスである。従って、ステップS736の次のRET命令によって、電力供給停止時にNMIが発生したアドレスにリターンする。すなわち、スタック領域に退避されていたアドレスにもとづいて復旧制御が実行されている。
図38および図39は、電源基板910からの電源断信号に応じて実行されるマスク不能割込処理(NMI処理:電力供給停止時処理)の処理例を示すフローチャートである。
電力供給停止時処理において、払出制御用CPU371は、AFレジスタを所定のバックアップRAM領域に退避する(ステップS801)。また、割込フラグをパリティフラグにコピーする(ステップS802)。パリティフラグはバックアップRAM領域に形成されている。割込フラグは、割込許可状態であるのか割込禁止状態であるのかを示すフラグであって、払出制御用CPU371が内蔵する制御レジスタ中にある。割込フラグのオン状態が割込禁止状態であることを示す。上述したように、パリティフラグは遊技状態復旧処理で参照される。そして、払出状態復旧処理において、パリティフラグがオン状態であれば、割込許可状態には設定されない。
また、BCレジスタ、DEレジスタ、HLレジスタ、IXレジスタおよびスタックポインタをバックアップRAM領域に退避する(ステップS804〜808)。なお、ステップS801〜S809の処理は、電源監視手段の検出信号に応じて制御状態を復旧させるために必要なデータを変動データ記憶手段に保存させるためのデータ退避処理に相当する。
次に、バックアップあり指定値(この例では「55H」)をバックアップフラグにストアする。バックアップフラグはバックアップRAM領域に形成されている。次いで、主基板31のCPU56の処理と同様の処理を行ってパリティデータを作成しバックアップRAM領域に保存する(ステップS810〜S819)。そして、RAMアクセスレジスタにアクセス禁止値を設定する(ステップS820)。以後、内蔵RAMのアクセスができなくなる。
さらに、払出制御用CPU371は、クリアデータ(00)を適当なレジスタにセットし(ステップS821)、処理数(この例では「3」)を別のレジスタにセットする(ステップS822)。また、出力ポートCのアドレス(この例では「00H」)をIOポインタに設定する(ステップS823)。IOポインタとして、さらに別のレジスタが用いられる。
そして、IOポインタが指すアドレスにクリアデータをセットするとともに(ステップS824)、IOポインタの値を1増やし(ステップS825)、処理数の値を1減算する(ステップS827)。ステップS824〜S826の処理が、処理数の値が0になるまで繰り返される。その結果、全ての出力ポートC〜E(図33参照)にクリアデータが設定される。図33に示すように、この例では、「1」がオン状態であり、クリアデータである「00」が各出力ポートにセットされるので、全ての出力ポートがオフ状態になる。
従って、制御状態を保存するための処理(この例では、チェックサムの生成およびRAMアクセス防止)が実行された後、各出力ポートは直ちにオフ状態になる。従って、その内容が正しく保存されているか否かを示すチェックサムの生成処理、およびその内容を書き換えないようにするためのRAMアクセス防止処理が、払出制御状態を保存するための処理に相当する。
制御状態を保存するための処理が実行された後、直ちに各出力ポートがオフ状態になるので、保存される遊技状態と整合しない状況が発生することは確実に防止される。また、電気部品の駆動が不能なる状態になる前に電力供給停止処理の際に出力ポートをクリアすることができるので、電気部品の駆動が不能なる状態となる前に払出制御手段により制御される各電気部品を、適切な動作停止状態にすることができる。例えば、駆動状態にある払出モータ289の作動を停止させるなど電気部品についての作動を停止させたあとに電気部品の駆動が不能なる状態とすることができる。従って、適切な停止状態で電力供給の復旧を待つことができる。
出力ポートに対するクリア処理が完了すると、払出制御用CPU371は、待機状態(ループ状態)に入る。従って、システムリセットされるまで、何もしない状態になる。
図40は、払出制御用CPU371が内蔵するRAMの使用例を示す説明図である。この例では、バックアップRAM領域に、総合個数記憶(例えば2バイト)と貸し球個数記憶とがそれぞれ形成されている。総合個数記憶は、主基板31の側から指示された賞球払出個数の総数を記憶するものである。貸し球個数記憶は、未払出の球貸し個数を記憶するものである。
そして、払出制御用CPU371は、例えば、賞球制御処理(ステップS757)において、遊技制御手段から賞球個数を示す払出制御コマンドを受信すると、指示された個数分だけ総合個数記憶に内容を増加する。また、球貸し制御処理(ステップS756)において、カードユニット50から球貸し要求の信号を受信する毎に1単位(例えば25個)の個数分だけ貸し球個数記憶に内容を増加する。さらに、払出制御用CPU371は、賞球制御処理において賞球カウントスイッチ301Aが1個の賞球払出を検出すると総合個数記憶の値を1減らし、球貸し制御処理において球貸しカウントスイッチ301Bが1個の貸し球払出を検出すると貸し球個数記憶の値を1減らす。
従って、未払出の賞球個数と貸し球個数とが、所定期間はその内容を保持可能なバックアップRAM領域に記憶されることになる。よって、停電等の不測の電力供給停止が生じても、所定期間内に電力供給が復旧すれば、バックアップRAM領域の記憶内容にもとづいて賞球処理および球貸し処理を再開することができる。すなわち、遊技機への電力供給が停止しても、電力供給が再開すれば、電力供給停止時の未払出の賞球個数と貸し球個数とにもとづいて払い出しが行われ、遊技者に与えられる不利益を低減することができる。
図41は、主基板31から受信した払出制御コマンドを格納するための受信バッファの一構成例を示す説明図である。この例では、2バイト構成の払出制御コマンドを6個格納可能なリングバッファ形式の受信バッファが用いられる。従って、受信バッファは、受信コマンドバッファ1〜12の12バイトの領域で構成される。そして、受信したコマンドをどの領域に格納するのかを示すコマンド受信個数カウンタが用いられる。コマンド受信個数カウンタは、0〜11の値をとる。
図42は、割込処理による払出制御コマンド受信処理を示すフローチャートである。主基板31からの払出制御用のINT信号は払出制御用CPU371のCLK/TRG2端子に入力されている。よって、主基板31からのINT信号が立ち上がると、払出制御用CPU371に割込がかかり、図42に示す払出制御コマンドの受信処理が開始される。なお、払出制御用CPU371は、割込が発生すると、ソフトウェアで割込許可にしない限り、マスク可能割込がさらに生ずることはないような構造のCPUである。
なお、ここでは払出制御手段のコマンド受信処理について説明するが、表示制御手段、ランプ制御手段および音制御手段でも、同様のコマンド受信処理が実行されている。また、この実施の形態では、CLK/TRG2端子の入力が立ち上がるとタイマカウンタレジスタCLK/TRG2の値が−1されるような初期設定を行ったが、すなわち、INT信号の立ち上がりで割込が発生するような初期設定を行ったが、CLK/TRG2端子の入力が立ち下がるとタイマカウンタレジスタCLK/TRG2の値が−1されるような初期設定を行ってもよい。換言すれば、INT信号の立ち下がりで割込が発生するような初期設定を行ってもよい。
すなわち、取込信号としてのパルス状(矩形波状)のINT信号のレベル変化タイミング(エッジ)で割込が発生するように構成すれば、エッジは立ち上がりエッジであっても立ち下がりエッジであってもよい。いずれにせよ、取込信号としてのパルス状(矩形波状)のINT信号のレベル変化タイミング(エッジ)で割込が発生するように構成される。このようにすることで、コマンドの取込が指示された段階でいち早くコマンド受信を行うことが可能になる。また、Aの期間(図26)が経過するまでINT信号の出力が待機されるので、INT信号の出力時に、制御信号CD0〜CD7のライン上のコマンドデータの出力状態は安定している。よって、払出制御手段において、払出制御コマンドは良好に受信される。
払出制御コマンドの受信処理において、払出制御用CPU371は、まず、各レジスタをスタックに退避する(ステップS850)。次いで、払出制御コマンドデータの入力に割り当てられている入力ポート372a(図7参照)からデータを読み込む(ステップS851)。そして、2バイト構成の払出制御コマンドのうちの1バイト目であるか否か確認する(ステップS852)。1バイト目であるか否かは、受信したコマンドの先頭ビットが「1」であるか否かによって確認される。先頭ビットが「1」であるのは、2バイト構成である払出制御コマンドのうちのMODEバイト(1バイト目)のはずである(図25参照)。そこで、払出制御用CPU371は、先頭ビットが「1」であれば、有効な1バイト目を受信したとして、受信したコマンドを受信バッファ領域におけるコマンド受信個数カウンタが示す受信コマンドバッファに格納する(ステップS853)。
払出制御コマンドのうちの1バイト目でなければ、1バイト目を既に受信したか否か確認する(ステップS854)。既に受信したか否かは、受信バッファ(受信コマンドバッファ)に有効なデータが設定されているか否かによって確認される。
1バイト目を既に受信している場合には、受信した1バイトのうちの先頭ビットが「0」であるか否か確認する。そして、先頭ビットが「0」であれば、有効な2バイト目を受信したとして、受信したコマンドを、受信バッファ領域におけるコマンド受信個数カウンタ+1が示す受信コマンドバッファに格納する(ステップS855)。先頭ビットが「0」であるのは、2バイト構成である払出制御コマンドのうちのEXTバイト(2バイト目)のはずである(図25参照)。なお、ステップS854における確認結果が1バイト目を既に受信したである場合には、2バイト目として受信したデータのうちの先頭ビットが「0」でなければ処理を終了する。なお、ステップS854で「N」と判断された場合には、ステップS856の処理が行われないので、次に受信したコマンドは、今回受信したコマンドが格納されるはずであったバッファ領域に格納される。
ステップS855において、2バイト目のコマンドデータを格納すると、コマンド受信個数カウンタに2を加算する(ステップS856)。そして、コマンド受信カウンタが12以上であるか否か確認し(ステップS857)、12以上であればコマンド受信個数カウンタをクリアする(ステップS858)。その後、退避されていたレジスタを復帰し(ステップS859)、最後に割込許可に設定する(ステップS859)。
コマンド受信割込処理中は割込禁止状態になっている。上述したように、2msタイマ割込処理中は割込許可状態になっているので、2msタイマ割込中にコマンド受信割込が発生した場合には、コマンド受信割込処理が優先して実行される。また、コマンド受信割込処理中に2msタイマ割込が発生しても、その割込処理は待たされる。このように、この実施の形態では、主基板31からのコマンド受信処理の処理優先度が高くなっている。また、コマンド受信処理中には他の割込処理が実行されないので、コマンド受信処理に要する最長時間は決まる。コマンド受信処理中に他の割込処理が実行可能であるように構成したのでは、コマンド受信処理に要する最長の時間を見積もることは困難である。コマンド受信処理に要する最長時間が決まるので、遊技制御手段のコマンド送出処理におけるCの期間(図26参照)をどの程度にすればよいのかを正確に判断することができる。
また、払出制御コマンドは2バイト構成であって、1バイト目(MODE)と2バイト目(EXT)とは、受信側で直ちに区別可能に構成されている。すなわち、先頭ビットによって、MODEとしてのデータを受信したのかEXTとしてのデータを受信したのかを、受信側において直ちに検出できる。よって、上述したように、適正なデータを受信したのか否かを容易に判定することができる。
なお、この実施の形態では、コマンド受信割込処理では、受信したコマンドを受信バッファに格納する制御が行われるが、後述する払出停止状態設定処理(図68参照)やコマンド解析実行処理(図69参照)を、コマンド受信割込処理において実行するように構成してもよい。そのように、受信バッファ内のコマンドについて判定するコマンド判定処理までもコマンド受信割込処理において実行する場合には、コマンドの判定も迅速に実行される。
次に、球貸し処理に関するカードユニット50の通信用IC500と払出制御基板37に搭載されている通信用IC400との間の通信について説明する。
図43(a)における(A)〜(D)はカードユニット50におけるカードユニット制御用マイクロコンピュータと通信用IC500との間の信号例を示すタイミング図である。図43(a)に示す例では、カードユニット制御用マイクロコンピュータは、球貸しスイッチ181が押下されたことを検出すると((A)参照)、通信用IC500に対するシーケンス中信号をオン状態(ハイレベル)にする((B)参照)。そして、貸し球個数(例えば25個)を示す球貸し個数信号を出力する((C)参照)。また、通信用IC500から球貸し完了信号が出力されると((D)参照)、例えば25個単位の球貸しをさらに実行する場合には、再度球貸し個数信号を出力する。球貸しをさらに実行する必要がない場合には、シーケンス中信号をオフ状態(ローレベル)にする((B)参照)。
図43(b)における(F)〜(K)はカードユニット50の通信用IC500と遊技機の払出制御基板37に搭載されている通信用IC400との間の信号例を示すタイミング図である。図43(b)に示す例では、カードユニット50の通信用IC500は、カードユニット制御用マイクロコンピュータからのシーケンス中信号がオン状態になると、払出制御基板37に搭載されている通信用IC400に対して、球貸し要求信号としてのスクランブルコードを送信する((F)参照)。
スクランブルコードは、例えば、以後の通信で送受信される各データを暗号化するために使用されるキーコードである。通信用IC500と通信用IC400とは、以後、(K)に示すシーケンス終了信号が送受信されるまで(遊技者が選択した分の球貸し処理が終了するまで)、送信するデータをキーコードで暗号化し、受信したデータをキーコードで復号する。従って、この実施の形態では、(G)〜(K)に示す各信号は複数ビットからなるデータである。なお、それらのデータは、通信用IC500と通信用IC400との間で、パラレルデータとして送受信されてもよいし、シリアルデータとして送受信されてもよい。
暗号化のキーコードを与えた状態でデータ(信号)を暗号化する方法として、例えば日本電信電話株式会社が開発した暗号化方法(通称フィール特許(特開昭62−109083号公報、特開昭63−204289号公報、特開平01−147585号公報に記載)を用いることができる。従って、そのような暗号化方法を実現するためのアルゴリズムが通信用IC500の内蔵ROMに格納される。また、通信用IC400には復号のためのアルゴリズムが内蔵ROMに格納される。ただし、暗号化方法はその方法に限定されるものでなく、使用しうる任意の暗号化方法を用いることができる。
また、この実施の形態では、通信用IC500は、スクランブルコードとして暗号化のキーコードを送信するが、スクランブルコードとして、以後の通信において暗号化を行うことを指示するコードを用いてもよい。その場合、通信用IC400および通信用IC500は、複数種類のキーコードを記憶していることが好ましい。そして、送信側はそれらのうちからランダムにキーコードを選択し、シーケンスが異なると異なるキーコードを用いることが好ましい。そして、受信側は、送信側から指定されたキーコードについて復号を行う。
さらに、送信する信号を暗号化する際に、信号に対してチェックデータを付加した上で暗号化するようにしてもよい。そのような暗号化方法を用いた場合には、復号結果についてチェックデータを用いて、受信した信号が正当であるか否かを判定することができる。
また、送信する信号を暗号化して暗号情報を生成し、暗号情報を信号に付加して送信するようにしてもよい。受信側では、付加されている暗号情報を復号して、復号結果と、受信した信号のうち暗号情報以外の部分とを比較して、それらが一致すれば、通信用IC400と通信用IC500との間で信号が改竄されることなく、正しい信号を受信したと判断することができる。この実施の形態では、このような方式で暗号化することにする。
通信用IC400は、球貸し要求信号を受信すると、通信用IC500に対して了解信号を送信する((H)参照)。通信用IC500は、了解信号を受信したら、貸し球個数を示す球貸し個数信号を暗号化して通信用IC400に送信する((G)参照)。
通信用IC400は、球貸し要求信号としてのスクランブルコードを受信すると、通信用IC500に対して了解信号を送信する((H)参照)。また、後述するように、通信用IC400は、貸し球個数を示すデータを払出制御用CPU371に出力する。払出制御用CPU371は、そのデータにもとづいて球払出装置97を駆動し、指定された個数の球払出を完了したら、その旨を示すデータを通信用IC400に出力する。通信用IC400は、そのデータを受信したら、球貸し完了信号を通信用IC500に送信する((I)参照)。通信用IC500は、球貸し完了信号を受信したら、了解信号を通信用IC400に送信する((J)参照)。なお、上述したように、球貸し完了信号を受信したら、通信用IC500は、カードユニット制御用マイクロコンピュータに球貸し完了信号を出力する((D)参照)。
また、通信用IC500は、カードユニット制御用マイクロコンピュータからのシーケンス中信号がオフ状態になると、暗号化したシーケンス終了信号を通信用IC400に送信する((K)参照)。通信用IC400は、シーケンス終了信号を受信すると、通信用IC500に対して了解信号を送信する((H)参照)。
以上のようにして、通信用IC500から通信用IC400には、暗号化されたデータが送信される。従って、カードユニット50と遊技機との間の配線に不正基板を接続したり、電波による不正信号を与えるようにしても、遊技機の払出制御手段が認識できるような球貸し個数信号を与えることはほぼ不可能である。なお、この実施の形態では、スクランブルコードが送受信されてからシーケンス終了信号が送受信されるまで、通信用IC500が送信する信号を暗号化し、通信用IC400が受信した信号を復号するようにした。すなわち、通信用IC500が、送信する信号を全て暗号化して暗号化信号を作成する暗号化手段を有し、通信用IC400が、受信した暗号化信号の復号を行う復号手段を有する構成にした。しかし、通信用IC500の暗号化手段は、重要な信号(例えば球貸し個数信号)のみを暗号化するようにしてもよい。
また、通信用IC500が送信する信号だけでなく、通信用IC400が通信用IC500に対して送信する信号を全て暗号化して暗号化信号を作成する暗号化手段を有し、通信用IC500が受信した暗号化信号の復号を行う復号手段を有する構成にしてもよい。そのように構成した場合には、通信用IC400から通信用IC500に送信される信号も暗号化される。
なお、カードユニット制御用マイクロコンピュータから通信用IC500には、通信用IC500に初期化処理を実行させるための初期化信号も出力される。また、カードユニット制御用マイクロコンピュータから通信用IC500にはVL信号も出力される。VL信号は、通信用IC500から通信用IC400に伝達され、通信用IC400は、VL信号によってカードユニット未接続を検出したら、払出制御用CPU371に対して、カードユニット接続信号(VL信号)を出力する(図34参照)。さらに、払出制御用CPU371から通信用IC400にPRDY信号が出力されているが、PRDY信号は通信用IC400から通信用IC500に伝達され、また、カードユニット制御用マイクロコンピュータに出力される。カードユニット制御用マイクロコンピュータは、PRDY信号がオフ状態を示している場合には、球貸し要求を行う制御を実行しない。
さらに、通信用IC400は、払出制御用CPU371からの初期化信号を検出したらカードユニット50に対して初期化信号を送信するように構成されている場合には、通信用IC400から通信用IC500に対して初期化信号が送信される。通信用IC500は、遊技機から(具体的には通信用IC400から)初期化信号を受信したら、後述する通信コード(通信状態を示す情報)を初期化する。なお、払出制御用CPU371は、遊技機への電力供給開始時に初期化処理を実行するときに通信用IC400に初期化信号を出力する。また、通信用IC500は、カードユニット制御用マイクロコンピュータから初期化信号が出力されたら、通信コードを初期化するとともに、通信用IC400に対して初期化信号を出力する。通信用IC400は、カードユニット50から(具体的には通信用IC500から)初期化信号を受信したら、通信コード(通信状態を示す情報)を初期化する。なお、カードユニット制御用マイクロコンピュータは、カードユニット50の電源投入開始時に初期化処理を実行するときに通信用IC500に初期化信号を出力する。
つまり、通信用IC400は、少なくとも、カードユニット50から初期化信号を受信した場合、または、払出制御手段が初期化処理を行った場合に、通信状態の初期化を行う初期化手段を有する。また、通信用IC500は、少なくとも、遊技機から初期化信号を受信した場合、または、制御手段としてのカードユニット制御用マイクロコンピュータが初期化処理を行った場合に、通信状態の初期化を行う初期化手段を有する。
なお、図43および後述する図44において、VL信号、PRDY信号および初期化信号は記載省略されている。
図44(a)における(A)〜(E)は遊技機の払出制御基板37における払出制御用CPU371と通信用IC400との間の信号例を示すタイミング図である。また、図44(b)における(F)〜(K)はカードユニット50の通信用IC500と通信用IC400との間の信号例を示すタイミング図である。なお、図44(b)の内容は、図43(b)の内容と同じである。
図44(a)に示す例では、通信用IC400は、通信用IC500から球貸し要求信号を受信すると((F)参照)、払出制御用CPU371に対する球貸し要求信号(BRDY信号)をオン状態(ハイレベル)にする((A)参照)。また、通信用IC500から球貸し個数信号を受信すると((G)参照)、払出制御用CPU371に対して貸し球数を示す球貸し個数信号(5ビットのデータ,図34参照)を出力するとともに((B)参照)、球貸し指示信号(BRQ信号)をオン状態(ハイレベル)にする((C)参照)。
払出制御用CPU371は、球貸し指示信号がオン状態になると球貸し個数信号にもとづく球貸し制御を行って球払出装置97を駆動し、球払出動作を行わせるのであるが、その球払出動作が終了すると通信用IC400に球貸し完了信号を出力する((E)参照)。なお、球貸し完了信号が出力されると、通信用IC400は、上述したように、通信用IC500に、球貸し完了信号を送信する((I)参照)。そして、通信用IC400が通信用IC500からシーケンス終了信号を受信すると(K)参照)、球貸し要求信号(BRDY信号)をオフ状態(ローレベル)にする((A)参照)。
以上のようにして、払出制御用CPU371はカードユニット50からに指示にもとづいて球払出制御を行うのであるが、払出制御用CPU371は、球貸し個数信号によって、貸し球個数を直ちに認識することができる。従って、従来のようにカードユニット50との間で種々の信号のやりとりを行って球払出制御を行うといった必要はなく、球貸しに関する球払出制御が簡略化されている。
図45〜図47は、カードユニット制御部160におけるカードユニット制御用マイクロコンピュータが実行するカードユニット制御処理の一部を示すフローチャートである。カードユニット制御用マイクロコンピュータは、まず、遊技機の球貸しスイッチ181等の近傍に設けられている金額設定スイッチの設定値(例えば500円に相当する「5」)を読み込む(ステップS400)。そして、使用可ランプ151を点灯する(ステップS401)。そして、カードリーダライタ(カードR/W)161からカード受付信号が出力されたか否か確認する(ステップS402)。カードR/W161は、カードが挿入されると、カード受付信号を出力する。
カード受付信号が出力される前にカード異常信号が出力された場合には(ステップS403)、使用可ランプ151を点滅状態にする制御を行う(ステップS404)。カード受付信号が出力されると、遊技機の球貸しスイッチ181等の近傍に設けられている球貸し可ランプ152を点灯させるために、遊技機に球貸し可表示信号を出力する(ステップS405)。そして、カードR/W161を介してカードに記録されている残高を読み取ってバッファに格納する(ステップS406)。バッファは、カードユニット制御部160に設けられているRAMに形成されている。なお、ステップS404で使用可ランプ151を点滅させた後にカード受付信号が出力された場合には(ステップS402)、使用可ランプ151を点灯状態に戻す。また、カード異常信号が出力された場合には、その旨を報知するようにしてもよい。
次いで、バッファの内容すなわち残高を残高表示器157に表示する(ステップS407)。球貸しスイッチ181が押下されて球貸しスイッチ信号が出力されたことを検出すると(ステップS408)、残高が単位料金(例えば100円)以上あるか否か確認する(ステップS414)。残高が単位料金以上ある場合には、貸球額に設定金額を設定するとともに(ステップS415)、シーケンス中信号をオン状態にする(ステップS416)。そして、ステップS419に移行する。残高が単位料金以上ない場合にはステップS410に移行する。
球貸しスイッチ信号が出力される前に、返却スイッチ182が押下されて返却信号が出力されたことを検出すると(ステップS409)、カードユニット制御用マイクロコンピュータは、球貸し可ランプ152を消灯させ(ステップS410)、カードR/W161を介してカードにバッファの内容を書き込むとともにカードR/W161に対してカード排出指令を出す(ステップS411)。そして、ステップS447に移行する。
ステップS419では、球貸し可ランプ152を消灯させ、球貸し個数信号を出力する(ステップS420)。次いで、監視タイマをセットし(ステップS421)、通信用IC500から球貸し完了信号が出力されるのを待つ(ステップS422)。球貸し完了信号が出力されたら、貸球額から単位料金を減算する(ステップS431)。また、ホールコンピュータ等の管理装置に売上情報を出力する(ステップS432)。そして、ステップS441に移行する。
球貸し完了信号が出力される前に監視タイマがタイムアウトしたら(ステップS423)、シーケンス中信号をオフ状態にして(ステップS424)、ステップS408に戻る。また、通信用IC500からエラー通知がなされ場合にも、シーケンス中信号をオフ状態にして(ステップS424)、ステップS408に戻る。
このように、通信用IC500は、遊技機から貸与結果に関する信号または遊技媒体の貸与動作状態を示す信号を遊技機から受信した場合に、貸与結果に関する情報または貸与動作状態を示す情報(この例ではいずれも球貸し完了信号)をカードユニット制御用マイクロコンピュータに出力する。そして、カードユニット制御用マイクロコンピュータは、貸与結果に関する情報または貸与動作状態を示す情報を監視して、遊技機の動作状態を把握することができる。なお、この実施の形態では、球貸し完了信号は、一単位(例えば100円)分の遊技媒体の貸出が完了したことを示す信号であるが、貸与結果に関する信号として、設定金額(例えば500円)分の遊技媒体の貸出が完了したことを示す信号を送信するようにしてもよい。
ステップS441では、カードユニット制御用マイクロコンピュータは、貸球額が0になったか否か確認する(ステップS441)。0になっていなければステップS419に戻る。貸球額が0になっていれば、シーケンス中信号をオフ状態にする(ステップS443)。そして、バッファの内容が単位料金未満になっていなければ(ステップS444)、球貸し可ランプ152を点灯させ(ステップS445)、ステップS408に戻る。
バッファの内容が単位料金未満である場合には、カードR/W161を介してカードにバッファの内容を書き込むとともに、カードR/W161に対してカード排出指令を出す(ステップS446)。そして、排出監視タイマをセットし(ステップS447)、カードR/W161からの処理完了信号を待つ(ステップS448)。処理完了信号が出力される前に排出監視タイマがタイムアウトした場合には(ステップS449)、使用可ランプ151を点滅させ(ステップS450)、例えば、残高表示器157にエラー表示を行わせるように制御する(ステップS451)。排出監視タイマがタイムアウトする前に処理完了信号が出力された場合には、ステップS401に戻る。
なお、図45〜図47には示されていないが、カードユニット制御用マイクロコンピュータは、電力供給が開始された後、リセット状態が解除されると、初期化処理を実行する。そして、初期化処理において、通信用IC500に対して、初期化処理を行わせるための初期化信号を出力する。
次に、カードユニット50の通信用IC500の動作について説明する。通信用IC500は、例えば、図48に示すようなメイン処理(メインプログラム)を実行する。なお、この実施の形態では、通信用IC500は、2ms毎に起動され、起動されると図48に示すメインプログラムを実行する。
メイン処理において、通信用IC500は、まず、通信状態を示す情報である通信コードをロードし(ステップS600)、通信コードの値に応じて、シーケンス中信号オン待ち処理(ステップS610)、了解信号受信待ち処理(ステップS620)、球貸し個数信号出力待ち処理(ステップS630)、了解信号受信待ち処理(ステップS640)、球貸し完了信号受信待ち処理(ステップS650)、シーケンス中信号オフ待ち処理(ステップS660)、了解信号受信待ち処理(ステップS670)のいずれかを実行する。なお、通信コードは電源バックアップされているRAMに記憶されている。
図49は、シーケンス中信号オン待ち処理(ステップS610)を示すフローチャートである。シーケンス中信号オン待ち処理において、通信用IC500は、カードユニット制御用マイクロコンピュータからのシーケンス中信号がオン状態になったか否か確認する(ステップS611)。オン状態になっていれば、遊技機の通信用IC400にスクランブルコード(球貸し要求信号)を送信する(ステップS612)。また、了解信号の受信を監視するためのタイマ(a)をセット(タイムアウト時間に対応した値を設定)し(ステップS612)、通信コードを、了解信号受信待ち処理に対応した1に更新する(ステップS613)。
図50は、了解信号受信待ち処理(ステップS620)を示すフローチャートである。了解信号受信待ち処理において、通信用IC500は、通信用IC400から了解信号を受信したら(ステップS621)、タイマ(a)をクリアするとともに(ステップS622)、通信コードを、球貸し個数信号出力待ち処理に対応した2に更新する(ステップS623)。了解信号を受信していなかったらタイマ(a)の値を−1し(ステップS624)、タイマ(a)がタイムアウトしたら(ステップS625)、リトライA処理を実行する(ステップS626)。
図51は、リトライA処理を示すフローチャートである。リトライA処理において、通信用IC500は、まず、リトライフラグがオンしているか否か確認する(ステップS681)。オンしていなければ、リトライフラグをセットするとともに(ステップS682)、リトライ回数をセットする(ステップS683)。そして、信号送信のリトライを行う(ステップS684)。リトライA処理が球貸し要求信号に対する了解信号受信待ち処理(ステップS620)においてコールされた場合には、信号送信のリトライでは、球貸し要求信号を再送信する。また、タイマ(a)を再セットする(ステップS685)。
リトライフラグが既にオンしているときには、リトライ回数を−1し(ステップS686)、リトライ回数が0になっていなければ(ステップS687)、ステップS684に移行する。リトライ回数が0になっている場合には、球貸し要求信号を所定回送信しても了解信号が受信できなかったことになるので、カードユニット制御用マイクロコンピュータにエラー通知を行う(ステップS688)。
このように、通信用IC500は、所定期間内に遊技機から応答信号としての了解信号を受信しない場合には、所定の信号としての了解信号を再度送信する再送信手段を含んでいる。また、通信用IC500は、再送信手段によって所定の信号が所定回送信されても遊技機から応答信号を受信しない場合には、制御手段としてのカードユニット制御用マイクロコンピュータにエラー発生通知を行う。
図52は、球貸し個数信号出力待ち処理(ステップS630)を示すフローチャートである。球貸し個数信号出力待ち処理において、通信用IC500は、まず、カードユニット制御用マイクロコンピュータから球貸し個数信号が出力されたか否か確認する(ステップS631)。球貸し個数信号が出力されていれば、遊技機に対する球貸し個数信号を暗号化した後に送信する(ステップS632,S633)。そして、了解信号の受信を監視するためのタイマ(a)をセットし(ステップS634)、通信コードを、了解信号受信待ち処理に対応した3に更新する(ステップS613)。
ステップS640の了解信号受信待ち処理では、ステップS620の処理(図50参照)と同様の処理が実行される。ただし、ステップS623の通信コードを2に更新する処理に代えて、球貸し完了信号受信待ち処理に対応した4に更新する処理が実行される。
図53は球貸し完了信号受信待ち処理(ステップS650)を示すフローチャートである。球貸し完了信号受信待ち処理において、通信用IC500は、まず、通信用IC400から球貸し完了信号を受信したか否か確認する(ステップS651)。球貸し完了信号を受信したら、タイマ(a)をクリアし(ステップS652)、了解信号を通信用IC400に送信するとともに(ステップS653)、カードユニット制御用マイクロコンピュータに対して球貸し完了信号を出力する(ステップS654)。そして、通信コードを、シーケンス中信号オフ待ち処理に対応した5に更新する(ステップS655)。球貸し完了信号を受信していなかったらタイマ(a)の値を−1し(ステップS656)、タイマ(a)がタイムアウトしたら(ステップS657)、所定の監視期間内に球貸し完了信号を受信できなかったとして、カードユニット制御用マイクロコンピュータにエラー通知を行う(ステップS658)。
図54は、シーケンス中信号オフ待ち処理(ステップS660)を示すフローチャートである。シーケンス中信号オフ待ち処理において、通信用IC500は、まず、カードユニット制御用マイクロコンピュータからのシーケンス中信号がオフ状態になったか否か確認する(ステップS661)。シーケンス中信号がオフ状態になる前に球貸し個数信号が出力された場合には(ステップS662)、シーケンスが継続するので(貸し球処理が継続するので)、通信コードを、球貸し個数信号出力待ち処理に対応した2に更新する(ステップS663)。
シーケンス中信号がオフ状態になったら、遊技機に対するシーケンス終了信号を暗号化した後に送信する(ステップS664,S665)。そして、了解信号の受信を監視するためのタイマ(a)をセットし(ステップS666)、通信コードを、了解信号受信待ち処理に対応した6に更新する(ステップS667)。
ステップS670の了解信号受信待ち処理では、ステップS620の処理(図50参照)と同様の処理が実行される。ただし、ステップS623の通信コードを2に更新する処理に代えて、シーケンス中信号オン待ち処理に対応した0に更新する処理が実行される。
以上のような処理によって、図43に例示したような各信号がカードユニット50の通信用IC500から、遊技機の払出制御基板37に搭載されている通信用IC400に、貸し球を指令するための信号が送信される。
なお、この実施の形態では、通信用IC400から送信される信号が暗号化されていない例を示しているが、通信用IC400から送信される信号(例えば球貸し完了信号)も暗号化されていてもよいことは上述した。その場合、通信用IC500は、受信した信号を復号し、その信号が正当でないことを検出したら、例えば、カードユニット制御用マイクロコンピュータにエラー発生通知を出力する。カードユニット制御用マイクロコンピュータは、エラー発生通知によって、通信用IC500と通信用IC400との間の通信が改竄されたことを認識することができる。なお、カードユニット制御用マイクロコンピュータは、エラー発生通知を受けた場合、例えば度数表示器157にエラーコードを表示するとともに、球貸し要求の受付を停止する(球貸しスイッチ181の検出信号を受け付けない。)。
次に、払出制御基板37に搭載されている通信用IC400の動作について説明する。通信用IC400は、例えば、図55に示すようなメイン処理(メインプログラム)を実行する。なお、この実施の形態では、通信用IC400は、2ms毎に起動され、起動されると図55に示すメインプログラムを実行する。
メイン処理において、通信用IC400は、まず、通信状態を示す情報である通信コードをロードし(ステップS900)、通信コードの値に応じて、スクランブルコード受信待ち処理(ステップS910)、球貸し個数信号受信待ち処理(ステップS920)、球貸し動作終了待ち処理(ステップS940)、了解信号受信待ち処理(ステップS960)、シーケンス終了信号受信待ち処理(ステップS970)のいずれかを実行する。なお、通信コードはバックアップRAMに記憶されている。
図56は、スクランブルコード受信待ち処理(ステップS910)を示すフローチャートである。スクランブルコード受信待ち処理において、通信用IC400は、カードユニット50の通信用IC500からスクランブルコードを受信したか否か確認する(ステップS911)。スクランブルコードを受信した場合には、受信したスクランブルコードをバックアップRAMに格納しておく(ステップS912)。そして、通信用IC500に了解信号を送信するとともに(ステップS913)、払出制御用CPU371への球貸し要求信号をオン状態にする(ステップS914)。また、通信用IC500からの球貸し個数信号の受信を監視するためのタイマ(a)をセットし(ステップS915)、通信コードを、球貸し個数信号受信待ちに対応した1に更新する(ステップS916)。球貸し要求信号は、入力ポート372cを介して払出制御用CPU371に入力される(図7および図34参照)。
この実施の形態では、スクランブルコードは、記録媒体処理装置としてのカードユニット50(具体的には通信用IC500)から送信された貸与要求信号に相当する。通信制御手段としての通信用IC400は、カードユニット50からの信号を受信すると(この例ではスクランブルコード)、その信号にもとづく動作指令(この例では球貸し要求信号)を払出制御手段に対して出力する。また、通信用IC400は、カードユニット50からの信号にもとづく動作指令を払出制御手段に対して出力する際に、その信号を正常に受信したことを示す応答信号(この例では了解信号)をカードユニット50に送信する。
図57は、球貸し個数信号受信待ち処理(ステップS920)を示すフローチャートである。球貸し個数信号受信待ち処理において、通信用IC400は、まず、通信用IC500から球貸し個数信号を受信したか否か確認する(ステップS921)。受信した場合には、暗号化されている球貸し個数信号のデコード処理(復号処理)を行い(ステップS922)、復号の結果、正当な球貸し個数信号を受信したことを確認したら(ステップS923)、リトライフラグ、リトライ回数およびエラーフラグをクリアし(ステップS924)、通信用IC500に了解信号を送信する(ステップS925)。また、払出制御用CPU371に球貸し個数信号(5ビット)を出力するとともに(ステップS926A)、球貸し指示信号をオン状態にする(ステップS926B)。さらに、タイマ(a)をクリアしておき(ステップS927)、通信コードを、球貸し動作終了待ちに対応した2に更新するとともに(ステップS928)、払出制御用CPU371の球払出動作の完了を監視するためのタイマ(c)をセットする(ステップS929)。
このように、通信制御手段としての通信用IC400は、カードユニット50からの信号を受信すると(この例では球貸し個数信号)、その信号にもとづく動作指令(この例では球貸し指示信号)を払出制御手段に対して出力する。また、通信用IC400は、カードユニット50からの信号にもとづく動作指令を払出制御手段に対して出力する際に、その信号を正常に受信したことを示す応答信号(この例では了解信号)をカードユニット50に送信する。
なお、ステップS923で正当な球貸し個数信号を受信したことを確認できなかった場合には受信を無視することになる(何もせずにリターンする)が、通信用IC500に対して再送要求を行うようにしてもよい。さらに、払出制御用CPU371に対してエラー発生通知を行うようにしてもよい。すなわち、通信用IC400を、復号手段による復号の結果、正当ではない信号を受信したと判断した場合には、払出制御用CPU371にエラー発生通知を行うように構成してもよい。払出制御用CPU371は、エラー発生通知によって、通信用IC500と通信用IC400との間の通信が改竄されたことを認識することができる。また、払出制御用CPU371は、エラー発生通知を受けた場合、エラー表示用LED374にエラーコードを表示させるために、あらかじめ決められているエラーコードを含むエラー信号を出力する。
ステップS921において通信用IC500から球貸し個数信号を受信していない場合には、タイマ(a)の値を−1し(ステップS936)、タイマ(a)がタイムアウトしたら(ステップS937)、後述するリトライA処理を実行する(ステップS938)。
図58は、球貸し動作終了待ち処理(ステップS940)を示すフローチャートである。球貸し動作終了待ち処理において、通信用IC400は、払出制御用CPU371から球貸し完了信号を受信したか否か確認する(ステップS941)。なお、球貸し完了信号は、出力ポート372fを介して出力される(図7および図33参照)。払出制御用CPU371への球貸し指示信号をオフ状態にし(ステップS942A)、球貸し個数信号の出力状態をクリアしておく(ステップ942B)。また、通信用IC500に球貸し完了信号を送信する(ステップS943)。さらに、タイマ(c)をクリアしておき(ステップS945)、通信用IC500からの了解信号の受信を監視するためのタイマ(a)をセットして(ステップS946)、通信コードを、了解信号受信待ちに対応した3に更新する(ステップS947)。
払出制御用CPU371から球貸し完了信号を受信していない場合には、通信用IC400は、タイマ(c)の値を−1し(ステップS951)、タイマ(c)がタイムアウトしたら(ステップS952)、後述する中断処理を実行する(ステップS953)。
図59は、了解信号受信待ち処理(ステップS960)を示すフローチャートである。了解信号受信待ち処理において、通信用IC400は、通信用IC500から了解信号を受信したら(ステップS961)、タイマ(a)をクリアするとともに(ステップS962)、通信コードを4に更新する(ステップS963)。了解信号を受信していなかったらタイマ(a)の値を−1し(ステップS964)、タイマ(a)がタイムアウトしたら(ステップS965)、リトライA処理を実行する(ステップS966)。
図60は、通信用IC400が実行するリトライA処理を示すフローチャートである。リトライA処理において、通信用IC400は、まず、リトライフラグがオンしているか否か確認する(ステップS871)。オンしていなければ、リトライフラグをセットするとともに(ステップS872)、リトライ回数をセットする(ステップS873)。そして、信号送信のリトライを行う(ステップS874)。リトライA処理が球貸し個数信号受信待ち処理(ステップS920)においてコールされた場合には、信号送信のリトライでは、了解信号(球貸し要求信号=スクランブルコードに対して送信した了解信号)を再送信する。また、リトライA処理が了解信号受信待ち処理(ステップS960)においてコールされた場合には、信号送信のリトライでは、球貸し完了信号を再送信する。そして、タイマ(a)を再セットする(ステップS875)。
リトライフラグが既にオンしているときには、リトライ回数を−1し(ステップS876)、リトライ回数が0になっていなければ(ステップS877)、ステップS874に移行する。リトライ回数が0になっている場合には、払出制御用CPU371にエラー信号を出力する(ステップS878)。
このように、通信用IC400は、所定期間内にカードユニット50から応答信号としての了解信号を受信しない場合には、所定の信号としての了解信号を再度送信する再送信手段を含んでいる。また、通信用IC400は、再送信手段によって所定の信号が所定回送信されても遊技機から応答信号を受信しない場合には、払出制御手段としての払出制御用CPU371にエラー発生通知を行う。
図61は、シーケンス終了信号受信待ち処理(ステップS970)を示すフローチャートである。シーケンス終了信号受信待ち処理において、通信用IC400は、通信用IC500から、シーケンス終了信号を受信したか否か確認する(ステップS971)。受信した場合には、暗号化されているシーケンス終了信号のデコード処理を行い(ステップS972)、正当なシーケンス終了信号を受信したことを確認したら(ステップS973)、球貸し終了処理を実行する(ステップS974)。また、通信コードを、スクランブルコード受信待ちに対応した0に更新する(ステップS975)。
シーケンス終了信号を受信していない場合には、通信用IC500から球貸し個数信号を再度受信したか否か確認する(ステップS976)。受信していたら、通信コードを、球貸し個数信号受信待ちに対応した1に更新する(ステップS977)。シーケンス終了信号を受信していない場合に球貸し個数信号を再度受信したということは、球貸しのシーケンスが継続していることを意味する。従って、通信用IC400は、内部状態(通信コード)を、球貸し信号受信待ち処理に対応した「1」に変更する。従って、再び、球貸し個数信号を受信して払出制御用CPU371に球払出制御を行わせるための処理が行われる。
図62は、球貸し終了処理(ステップS974)を示すフローチャートである。球貸し終了処理において、通信用IC400は、通信用IC500に了解信号を送信し(ステップS881)、払出制御用CPU371への球貸し要求信号をオフ状態にする(ステップS882)。
図63は、中断処理(ステップS953)を示すフローチャートである。中断処理は、通信用IC400が所定期間内に球払出動作が完了しなかったことを検出したら実行される。中断処理において、通信用IC400は、払出制御用CPU371に対する球貸し指示信号および球貸し要求信号をオフ状態にするとともに(ステップS881,S882)、通信用IC500に中断要求信号を送信する(ステップS883)。そして、通信用IC500がシーケンス終了信号を送信してくるのを待つために通信コードを4に更新する(ステップS884)。
以上にような制御によって、図44に示された信号のやりとり(通信用IC400と払出制御用CPU371間)が実現される。
図64は、通信用IC400がマスク不能割り込みの発生に応じて実行するマスク不能割り込み処理(電力供給停止時処理)を示すフローチャートである。電力供給停止時処理において、通信用IC400は、各レジスタを所定のバックアップRAM領域に退避する(ステップS831)。また、割込フラグをパリティフラグにコピーする(ステップS832)。パリティフラグはバックアップRAM領域に形成されている。また、スタックポインタをバックアップRAM領域に退避する(ステップS834)。そして、電力供給停止時処理を実行したことを示すバックアップフラグをセットする(ステップS834)。バックアップフラグは、バックアップRAM領域においてセットされる。
次に、払出制御用CPU371の処理と同様の処理を行って、バックアップRAM領域についてチェックサムを作成しバックアップRAM領域に保存する(ステップS835,S836)。そして、RAMアクセスレジスタにアクセス禁止値を設定する(ステップS837)。以後、内蔵RAMのアクセスができなくなる。さらに、通信用IC400は、全ての出力ポートをオフ状態にする(ステップS838)。その後、ループ処理を実行する。
図65は、電力供給が開始されたときに通信用IC400が実行する処理を示すフローチャートである。通信用IC400は、まず、必要な初期設定を行う。すなわち、まず、割込禁止に設定する(ステップS981)。次に、割込モードを設定し(ステップS982)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS983)。また、内蔵デバイスレジスタの初期化を行い(ステップS984)、RAMをアクセス可能状態に設定する(ステップS985)。
次に、通信用IC400は、バックアップフラグがセット状態になっているか否か確認し(ステップS987)、バックアップフラグがセット状態になっている場合には、バックアップRAM領域のデータチェック(この例ではチェックサムにもとづくチェック)を行う(ステップS988〜S990)。チェック結果が正常であれば(ステップS990)、通信用IC400は、内部状態を電力供給停止時の状態に戻すための通信状態復旧処理を行う(ステップS991)。そして、バックアップRAM領域に保存されていたPC(プログラムカウンタ)の指すアドレスに復帰する。バックアップフラグがセット状態になっていない場合、または、チェック結果が正常でない場合には、通信用IC400は、通常の初期化処理を実行する(ステップS992〜ステップS994)。
初期化処理では、通信用IC400は、まず、RAMの初期化を行う(ステップS992)。また、出力ポートに初期値を出力して初期化する(ステップS993)。そして、初期設定処理のステップS981において割込禁止とされているので、初期化処理を終える前に割込を許可する(ステップS994)。その後、メイン処理(図55参照)を実行する。
図66は、ステップS991の通信状態復旧処理を示すフローチャートである。通信状態復旧処理において、通信用IC400は、まず、スタックポインタの復帰処理を行う(ステップS841)。スタックポインタの値は、電力供給停止時処理において、所定のRAMエリア(電源バックアップされている)に退避している。よって、ステップS841では、そのRAMエリアの値をスタックポインタに設定することによって復帰させる。なお、復帰されたスタックポインタが指す領域(すなわちスタック領域)には、電力供給が停止したときのレジスタ値やプログラムカウンタ(PC)の値が退避している。
次いで、通信用IC400は、バックアップフラグをクリアする(ステップS842)すなわち、前回の電力供給停止時に所定の記憶保護処理が実行されたことを示すフラグをリセットする。また、スタック領域から各種レジスタの退避値を読み出して、各種レジスタに設定する(ステップS843)。すなわち、レジスタ復元処理を行う。そして、パリティフラグがオンしていない場合には割込許可状態にする(ステップS844,S855)。最後に、AFレジスタ(アキュミュレータとフラグのレジスタ)をスタック領域から復元する(ステップS846)。
そして、RET命令が実行されるのであるが、ここでのリターン先は、通信状態復旧処理をコールした部分ではない。なぜなら、ステップS841においてスタックポインタの復帰処理がなされ、復帰されたスタックポインタが指すスタック領域に格納されているリターンアドレスは、通信用IC400が実行するプログラムにおける前回の電力供給停止時にマスク不能割り込みが発生したアドレスである。従って、ステップS846の次のRET命令によって、電力供給停止時にマスク不能割り込みが発生したアドレスにリターンする。すなわち、スタック領域に退避されていたアドレスにもとづいて復旧制御が実行されている。
上述した通信コードは、遊技機への電力供給が停止しても記憶内容を保持可能な通信状態保持手段としてのバックアップRAM領域に保存されている。従って、電力供給が復旧した場合に、通信用IC400は、通信状態保持手段に保持されている通信状態に復旧可能である。よって、通信用IC400が通信用IC500と通信を行っているとき遊技機への電力供給が停止しても、通信状態保持手段に通信コードが保存されていれば、電力供給停止前の通信状態に復旧することができる。特に、遊技機への電力供給のみが瞬停したような場合、あるいは、電気部品制御基板の電源となる+5Vのみが瞬停したような場合には、カードユニット50の通信用IC500は、通信用IC400からの了解信号を待って再送を行っているはずであるが、遊技機の側において瞬停から復旧したときに通信用IC400の通信状態が復旧するので、瞬停前の状態から通信が再開される。
なお、払出制御用CPU371は、初期化処理において、通信用IC400に対して初期化信号を出力し、通信用IC400は、払出制御用CPU371から初期化信号を受けたら、通信コードを初期化するのであるが、その際に、通信用IC500に初期化信号を送信する。そのようにしておけば、払出制御手段のバックアップRAM領域に払出制御状態が保存され、通信用IC400のバックアップRAM領域に通信状態が保存されていた状態で、例えば、クリアスイッチ921が押下されて払出制御手段が初期化処理を行った場合に、通信用IC400の通信状態も初期化される。すなわち、通信コードが初期化(0クリア)される。また、初期化されたことをカードユニット50に通知することができる。
さらに、通信用IC400は、通信用IC500から初期化信号を受信した場合には通信コードを初期化する。通信用IC500が初期化信号を送信する場合は、例えば、カードユニット50の側で、遊技機におけるクリアスイッチ921の押下と同様の処理がなされたような場合である。そのような場合に、遊技機の側でも、通信用IC400が通信コードを初期化すれば、通信用IC500と通信用IC400の通信状態が整合する。
また、通信用IC400は、通信用IC500と通信を行っているときにマスク不能割り込みが発生して通信状態を保存し、通信状態が保存されている状態で図65に示す電力供給開始時処理が実行されたが初期化の条件が成立して通信コードを初期化する場合には、払出制御手段に対してエラー発生通知を出力するようにしてもよい。そのようにした場合には、例えば、カードユニット50からの球貸し個数信号を通信用IC400が受信して払出制御手段が球払出制御を実行したにもかかわらず、カードユニット50が記録媒体から有価価値を減算しないという事態が発生することが防止される。払出制御手段が球払出制御を実行したが通信用IC400が球貸し完了信号を送信する前に、電源基板910からの電源断信号(マスク不能割り込みの契機となる信号)に不正信号が繰り返し入力されたような場合には、通信用IC400が暴走して(例えばスタックオーバーフローにもとづいて)、図65に示す電力供給開始時処理を実行してしまうことが考えられる。その場合、チェックサム等によるチェック結果が正常にならないので、通信用IC400は初期化処理を実行する。しかし、通信コードは正常に残っている可能性があり、通信コードが例えば球貸し完了信号を送信する前の状態を示していれば、通信用IC400は、払出制御手段に対してエラー発生通知を出力する。払出制御手段は、そのようなエラー発生通知を入力した場合に、所定の報知を行う。従って、その報知によって、電源基板910からの電源断信号の配線に対する不正信号の入力が行われ、記録媒体から有価価値を減算しない状態で球貸し動作を実行させてしまうような不正行為を発見することができる。
また、通信用IC400は、通信コードが通信用IC500と通信中であることを示している場合に通信用IC500から初期化信号を受信した場合にも、払出制御手段に対してエラー発生通知を出力することが好ましい。そのようにすれば、通信用IC400と通信用IC500との間の配線に初期化信号を不正に入力するような不正行為を発見することができる。
なお、図64〜図66は、遊技機における通信用IC400の動作例であるが、カードユニット50における通信用IC500も、同様の電力供給開始時処理、通信状態復旧処理および電力供給停止時処理を実行する。従って、通信用IC500は、遊技機との通信状態を記憶可能であり、カードユニット50への電力供給が停止しても記憶内容を保持可能な通信状態保持手段を有し、電力供給が復旧した場合に、通信状態保持手段に保持されている通信状態に復旧可能である。また、通信用IC500は、遊技機と(具体的には通信用IC400と)遊技媒体の貸与に関する信号の通信を行っているときにカードユニット50への電力供給が停止した場合に、電力供給が復旧したときに初期化手段による初期化を行うと判断した場合には、制御手段としてのカードユニット制御用マイクロコンピュータににエラー発生通知を行うことができる。すなわち、記録媒体処理装置(この例ではカードユニット50)の側で、通信制御手段は、遊技機と遊技媒体の貸与に関する信号の通信を行っているときに記録媒体処理装置への電力供給が停止した場合に、電力供給が復旧したときに初期化手段による初期化を行うと判断した場合には、制御手段にエラー発生通知を行うように構成してもよい。
以下、払出制御用CPU371が実行する球払出に関わる制御について説明する。図67は、ステップS751のスイッチ処理の一例を示すフローチャートである。スイッチ処理において、払出制御用CPU371は、賞球カウントスイッチ301Aがオン状態を示しているか否か確認する(ステップS751a)。オン状態を示していれば、払出制御用CPU371は、賞球カウントスイッチオンカウンタを+1する(ステップS751b)。賞球カウントスイッチオンカウンタは、賞球カウントスイッチ301Aのオン状態を検出した回数を計数するためのカウンタである。
そして、賞球カウントスイッチオンカウンタの値をチェックし(ステップS751c)、その値が2になっていれば、1個の賞球の払出が行われたと判断する。1個の賞球の払出が行われたと判断した場合には、払出制御用CPU371は、賞球未払出カウンタ(総合個数記憶に格納されている賞球個数)を−1する(ステップS751d)。
ステップS751aにおいて賞球カウントスイッチ301Aがオン状態でないことが確認されると、払出制御用CPU371は、賞球カウントスイッチオンカウンタをクリアする(ステップS751e)。そして、この実施の形態では、球貸しカウントスイッチ301Bがオン状態を示しているか否か確認する(ステップS751f)。オン状態を示していれば、払出制御用CPU371は、球貸しカウントスイッチオンカウンタを+1する(ステップS751g)。球貸しカウントスイッチオンカウンタは、球貸しカウントスイッチ301Bのオン状態を検出した回数を計数するためのカウンタである。
そして、球貸しカウントスイッチオンカウンタの値をチェックし(ステップS751h)、その値が2になっていれば、1個の貸し球の払出が行われたと判断する。1個の貸し球の払出が行われたと判断した場合には、払出制御用CPU371は、貸し球未払出個数カウンタ(貸し球個数記憶に格納されている貸し球数)を−1する(ステップS751i)。
ステップS751fにおいて球貸しカウントスイッチ301Bがオン状態でないことが確認されると、払出制御用CPU371は、球貸しカウントスイッチオンカウンタをクリアする(ステップS751j)。
図68は、ステップS753の払出停止状態設定処理の一例を示すフローチャートである。払出停止状態設定処理において、払出制御用CPU371は、受信バッファ中に受信コマンドがあるか否かの確認を行う(ステップS753a)。受信バッファ中に受信コマンドがあれば、受信した払出制御コマンドが払出停止状態指定コマンドであるか否かの確認を行う(ステップS753b)。払出停止状態指定コマンドであれば、払出制御用CPU371は、払出停止状態に設定する(ステップS753c)。
ステップS753bで受信コマンドが払出停止状態指定コマンドでないことを確認すると、受信した払出制御コマンドが払出可能状態指定コマンドであるか否かの確認を行う(ステップS753d)。払出可能状態指定コマンドであれば、払出停止状態を解除する(ステップS753e)。
図69は、ステップS754のコマンド解析実行処理の一例を示すフローチャートである。コマンド解析実行処理において、払出制御用CPU371は、受信バッファに受信コマンドがあるか否かの確認を行う(ステップS754a)。受信コマンドがあれば、受信した払出制御コマンドが賞球個数を指定するための払出制御コマンドであるか否かの確認を行う(ステップS754b)。なお、払出制御用CPU371は、コマンド指示手段としての読出ポインタが指す受信バッファ中のアドレスに格納されている受信コマンドについてステップS754bの判断を行う。また、その判断後、読出ポインタの値は+1される。読出ポインタが指すアドレスが受信コマンドバッファ12(図41参照)のアドレスを越えた場合には、読出ポインタの値は、受信コマンドバッファ1を指すように更新される。
受信した払出制御コマンドが賞球個数を指定するための払出制御コマンドであれば、払出制御コマンドで指示された個数を総合個数記憶に加算する(ステップS754c)。すなわち、払出制御用CPU371は、主基板31のCPU56から送られた払出制御コマンドに含まれる賞球個数をバックアップRAM領域(総合個数記憶)に記憶する。
なお、払出制御用CPU371は、必要ならば、コマンド受信個数カウンタの減算や受信バッファにおける受信コマンドシフト処理を行う。また、払出停止状態設定処理およびコマンド解析実行処理が、読出ポインタの値と受信バッファにおける最新コマンド格納位置とが一致するまで繰り返すように構成されていてもよい。例えば、読出ポインタの値と受信バッファにおける最新コマンド格納位置との差が「3」であれば未処理の受信済みコマンドが3つあることになるが、一致するまで繰り返し処理が実行されることによって、未処理の受信済みコマンドがなくなる。すなわち、受信バッファに格納されている受信済みコマンドが、一度の処理で、全て読み出されて処理される。
図70は、ステップS755のプリペイドカードユニット制御処理の一例を示すフローチャートである。プリペイドカードユニット制御処理において、払出制御用CPU371は、カードユニット制御用マイクロコンピュータより通信用IC500,400を介して入力されるVL信号を検知したか否かを確認する(ステップS755a)。VL信号を検知していなければ、VL信号非検知カウンタを+1する(ステップS755b)。また、払出制御用CPU371は、VL信号非検知カウンタの値が本例では125であるか否か確認する(ステップS755c)。VL信号非検知カウンタの値が125であれば、払出制御用CPU371は、発射制御基板91への発射制御信号出力を停止して、駆動モータ94を停止させる(ステップS755d)。
以上の処理によって、125回(2ms×125=250ms)継続してVL信号のオフが検出されたら、球発射禁止状態に設定される。
ステップS755aにおいてVL信号を検知していれば、払出制御用CPU371は、VL信号非検知カウンタをクリアする(ステップS755e)。そして、払出制御用CPU371は、発射制御信号出力を停止していれば(ステップS755f)、発射制御基板91への発射制御信号出力を開始して駆動モータ94を動作可能状態にする(ステップS755g)。
図71および図72は、ステップS756の球貸し制御処理の一例を示すフローチャートである。なお、この実施の形態では、連続的な払出数の最大値を貸し球の一単位(例えば25個)とするが、連続的な払出数の最大値は他の数であってもよい。
球貸し制御処理において、払出制御用CPU371は、貸し球払出中であるか否かの確認を行い(ステップS511)、貸し球払出中であれば図72に示す球貸し中の処理に移行する。なお、貸し球払出中であるか否かは、後述する球貸し処理中フラグの状態によって判断される。貸し球払出中でなければ、賞球の払出中であるか否か確認する(ステップS512)。賞球の払出中であるか否は、後述する賞球処理中フラグの状態によって判断される。
貸し球払出中でも賞球払出中でもなければ、払出制御用CPU371は、通信用IC400からの球貸し要求信号がオンしているか否か確認する(ステップS513)。球貸し要求信号がオンしている場合には、球貸し指示信号がオンしているか否か確認する(ステップS514)。通信用IC400からの球貸し指示信号がオンしている場合には、通信用IC400からの球貸し個数信号が示す個数を貸し球個数記憶に格納する(ステップS515)。そして、払出制御用CPU371は、球貸し中フラグをセットする(ステップS516)。また、球払出装置97の下方の球振分部材311を球貸し側に設定するために振分用ソレノイド310を駆動する(ステップS517)。さらに、払出モータ289をオンして(ステップS518)、図72に示す球貸し中の処理に移行する。なお、球貸し処理中フラグはバックアップRAM領域に設定される。
図72は、払出制御用CPU371による払出制御処理における球貸し中の処理を示すフローチャートである。球貸し処理では、払出モータ289がオンしていなければオンする。なお、この実施の形態では、ステップS751のスイッチ処理で、球貸しカウントスイッチ301Bの検出信号による遊技球の払出がなされたか否かの確認を行うので、球貸し制御処理では貸し球個数記憶の減算などは行われない。
球貸し制御処理において、払出制御用CPU371は、貸し球通過待ち時間中であるか否かの確認を行う(ステップS519)。貸し球通過待ち時間中でなければ、貸し球の払出を行い(ステップS520)、払出モータ289の駆動を終了すべきか(一単位の払出動作が終了したか)否かの確認を行う(ステップS521)。具体的には、所定個数の払出に対応した回転が完了したか否かを確認する。所定個数の払出に対応した回転が完了した場合には、払出制御用CPU371は、払出モータ289の駆動を停止し(ステップS522)、貸し球通過待ち時間の設定を行う(ステップS523)。
ステップS519で貸し球通過待ち時間中であれば、払出制御用CPU371は、貸し球通過待ち時間が終了したか否かの確認を行う(ステップS524)。貸し球通過待ち時間は、最後の払出球が払出モータ289によって払い出されてから球貸しカウントスイッチ301Bを通過するまでの時間である。貸し球通過待ち時間の終了を確認すると、一単位の貸し球は全て払い出された状態であるので、通信用IC400に対して球貸し完了信号を出力する(ステップS525)。また、振分ソレノイドをオフするとともに(ステップS526)、球貸し処理中フラグをオフする(ステップS527)。なお、貸し球通過待ち時間が経過するまでに最後の払出球が球貸しカウントスイッチ301Bを通過しなかった場合には、球貸し経路エラーとされる。また、この実施の形態では、賞球も球貸しも同じ払出装置で行われる。
貸し球個数記憶の内容は、遊技機への電力供給が停止しても、所定期間電源基板910のバックアップ電源によって保存される。従って、所定期間中に電力供給が復旧すると、払出制御用CPU371は、貸し球個数記憶の内容にもとづいて球貸し処理を継続することができる。
図73および図74は、ステップS757の賞球制御処理の一例を示すフローチャートである。なお、この例では、連続的な払出数の最大値を貸し球の一単位と同数(例えば25個)とするが、連続的な払出数の最大値は他の数であってもよい。
賞球制御処理において、払出制御用CPU371は、貸し球払出中であるか否か確認する(ステップS531)。貸し球払出中であるか否かは、球貸し処理中フラグの状態によって判断される。貸し球払出中でなければ賞球の払出中であるか否か確認し(ステップS532)、賞球の払出中であれば図74に示す賞球中の処理に移行する。賞球の払出中であるか否かは、後述する賞球処理中フラグの状態によって判断される。
貸し球払出中でも賞球払出中でもなければ、払出制御用CPU371は、通信用IC400からの球貸し要求信号がオン状態であるか否か確認する(ステップS533)。通信用IC400からの球貸し要求信号がオン状態でなければ、払出制御用CPU371は、総合個数記憶に格納されている賞球個数(未払出の賞球個数)が0でないか否か確認する(ステップS534)。総合個数記憶に格納されている賞球個数が0でなければ、賞球制御用CPU371は、賞球処理中フラグをオンし(ステップS535)、総合個数記憶の値が25以上であるか否か確認する(ステップS536)。なお、賞球処理中フラグは、バックアップRAM領域に設定される。
総合個数記憶に格納されている賞球個数が25以上であると、払出制御用CPU371は、25個分の遊技球を払い出すまで払出モータ289を回転させるように払出モータ289に対して駆動信号を出力するために、25個払出動作の設定を行う(ステップS537)。総合個数記憶に格納されている賞球個数が25以上でなければ、払出制御用CPU371は、総合個数記憶に格納されている全ての遊技球を払い出すまで払出モータ289を回転させるように駆動信号を出力するために、全個数払出動作の設定を行う(ステップS538)。次いで、払出モータ289をオンする(ステップS538)。なお、振分ソレノイドはオフ状態であるから、球払出装置97の下方の球振分部材は賞球側に設定されている。そして、図74に示す賞球制御処理における賞球払出中の処理に移行する。
図74は、払出制御用CPU371による払出制御処理における賞球中の処理の一例を示すフローチャートである。賞球制御処理では、払出モータ289がオンしていなければオンする。なお、この実施の形態では、ステップS751のスイッチ処理で、賞球カウントスイッチ301Aの検出信号による遊技球の払出がなされたか否かの確認を行うので、賞球制御処理では総合個数記憶の減算などは行われない。
賞球中の処理において、払出制御用CPU371は、賞球通過待ち時間中であるか否かの確認を行う(ステップS540)。賞球通過待ち時間中でなければ、賞球払出を行い(ステップS541)、払出モータ289の駆動を終了すべきか(25個または25個未満の所定の個数の払出動作が終了したか)否かの確認を行う(ステップS542)。具体的には、所定個数の払出に対応した回転が完了したか否かを確認する。所定個数の払出に対応した回転が完了した場合には、払出制御用CPU371は、払出モータ289の駆動を停止し(ステップS543)、賞球通過待ち時間の設定を行う(ステップS544)。賞球通過待ち時間は、最後の払出球が払出モータ289によって払い出されてから賞球カウントスイッチ301Aを通過するまでの時間である。
ステップS540で賞球通過待ち時間中であれば、払出制御用CPU371は、賞球通過待ち時間が終了したか否かの確認を行う(ステップS545)。賞球通過待ち時間が終了した時点は、ステップS537またはステップS538で設定された賞球が全て払い出された状態である。そこで、払出制御用CPU371は、賞球通過待ち時間が終了していれば、賞球処理中フラグをオフする(ステップS546)。賞球通過待ち時間が経過するまでに最後の払出球が賞球カウントスイッチ301Aを通過しなかった場合には、賞球経路エラーとされる。
なお、この実施の形態では、ステップS511、ステップS531の判断によって球貸しが賞球処理よりも優先されることになるが、賞球処理が球貸しに優先するようにしてもよい。
なお、払出制御用CPU371は、主基板31から指示された賞球個数を賞球個数記憶で総数として管理したが、賞球個数毎(例えば15個、10個、6個)に管理してもよい。例えば、賞球個数毎に対応した個数カウンタを設け、払出個数指定コマンドを受信すると、そのコマンドで指定された個数に対応する個数カウンタを+1する。そして、個数カウンタに対応した賞球払出が行われると、その個数カウンタを−1する(この場合、払出制御処理にて減算処理を行うようにする)。その場合にも、各個数カウンタはバックアップRAM領域に形成される。よって、遊技機への電力供給が停止しても、所定期間中に電源が復旧すれば、払出制御用CPU371は、各個数カウンタの内容にもとづいて賞球払出処理を継続することができる。
なお、上記の実施の形態では、変動データ記憶手段としてRAMを用いた場合を示したが、変動データ記憶手段として、電気的に書き換えが可能な記憶手段であればRAM以外のものを用いてもよい。
さらに、上記の実施の形態では、電源監視手段が電源基板910に設けられ、システムリセットのための信号を発生する回路は電気部品制御基板に設けられたが、それらがともに電気部品制御基板に設けられていてもよい。
なお、上記の実施の形態では、払出手段は球貸しも賞球払出も実行可能な構成であったが、球貸しを行う機構と賞球払出を行う機構とが独立していても本発明を適用することができる。その場合、球貸しを行う機構と賞球払出を行う機構とが独立していても、払出制御手段が両方の機構を制御するように構成されていれば、上記の実施の形態のように1つのコマンドで球貸しも賞球払出も停止/停止解除を指示するように構成することができる。
さらに、上記の実施の形態では、払出制御用CPU371と通信用ICとは別ICであったが、それらを一体化してもよい。
また、上記の各実施の形態のパチンコ遊技機1は、主として、始動入賞にもとづいて可変表示装置9に可変表示される特別図柄の停止図柄が所定の図柄の組み合わせになると所定の遊技価値が遊技者に付与可能になる第1種パチンコ遊技機であったが、始動入賞にもとづいて開放する電動役物の所定領域への入賞があると所定の遊技価値が遊技者に付与可能になる第2種パチンコ遊技機や、始動入賞にもとづいて可変表示される図柄の停止図柄が所定の図柄の組み合わせになると開放する所定の電動役物への入賞があると所定の権利が発生または継続する第3種パチンコ遊技機であっても、本発明を適用できる。また、パチンコ遊技機に限られず、スロットマシン等においても本発明を適用することができる。