以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機1を正面からみた正面図、図2はパチンコ遊技機1の内部構造を示す全体背面図、図3はパチンコ遊技機1の機構板を背面からみた背面図である。なお、以下の実施の形態では、パチンコ遊技機を例に説明を行うが、本発明による遊技機はパチンコ遊技機に限られず、例えばコイン遊技機等であってもよい。また、画像式の遊技機やスロット機に適用することもできる。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿3がある。打球供給皿3の下部には、打球供給皿3からあふれた貯留球を貯留する余剰球受皿4と打球を発射する打球操作ハンドル(操作ノブ)5が設けられている。ガラス扉枠2の後方には、遊技盤6が着脱可能に取り付けられている。また、遊技盤6の前面には遊技領域7が設けられている。
遊技領域7の中央付近には、複数種類の図柄を可変表示するための可変表示部9と7セグメントLEDによる可変表示器10とを含む可変表示装置8が設けられている。また、可変表示器10の下部には、4個のLEDからなる通過記憶表示器(普通図柄用記憶表示器)41が設けられている。この実施の形態では、可変表示部9には、「左」、「中」、「右」の3つの図柄表示エリアがある。可変表示装置8の側部には、打球を導く通過ゲート11が設けられている。通過ゲート11を通過した打球は、球出口13を経て始動入賞口14の方に導かれる。通過ゲート11と球出口13との間の通路には、通過ゲート11を通過した打球を検出するゲートスイッチ12がある。また、始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ17によって検出される。また、始動入賞口14の下部には開閉動作を行う可変入賞球装置15が設けられている。可変入賞球装置15は、ソレノイド16によって開状態とされる。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態とされる開閉板20が設けられている。この実施の形態では、開閉板20が大入賞口を開閉する手段となる。開閉板20から遊技盤6の背面に導かれた入賞球のうち一方(Vゾーン)に入った入賞球はVカウントスイッチ22で検出される。また、開閉板20からの入賞球はカウントスイッチ23で検出される。可変表示装置8の下部には、始動入賞口14に入った入賞球数を表示する4個の表示部を有する始動入賞記憶表示器18が設けられている。この例では、4個を上限として、始動入賞がある毎に、始動入賞記憶表示器18は点灯している表示部を1つずつ増やす。そして、可変表示部9の可変表示が開始される毎に、点灯している表示部を1つ減らす。
遊技盤6には、複数の入賞口19,24が設けられ、遊技球のそれぞれの入賞口19,24への入賞は、対応して設けられている入賞口スイッチ19a,24aによって検出される。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった打球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、遊技効果LED28aおよび遊技効果ランプ28b,28cが設けられている。
そして、この例では、一方のスピーカ27の近傍に、景品球払出時に点灯する賞球ランプ51が設けられ、他方のスピーカ27の近傍に、補給球が切れたときに点灯する球切れランプ52が設けられている。さらに、図1には、パチンコ遊技台1に隣接して設置され、プリペイドカードが挿入されることによって球貸しを可能にするカードユニット50も示されている。
カードユニット50には、使用可能状態であるか否かを示す使用可表示ランプ151、カード内に記録された残額情報に端数(100円未満の数)が存在する場合にその端数を打球供給皿3の近傍に設けられる度数表示LEDに表示させるための端数表示スイッチ152、カードユニット50がいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器153、カードユニット50内にカードが投入されていることを示すカード投入表示ランプ154、記録媒体としてのカードが挿入されるカード挿入口155、およびカード挿入口155の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニット50を解放するためのカードユニット錠156が設けられている。
打球発射装置から発射された打球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。打球が通過ゲート11を通ってゲートスイッチ12で検出されると、可変表示器10の表示数字が連続的に変化する状態になる。また、打球が始動入賞口14に入り始動口スイッチ17で検出されると、図柄の変動を開始できる状態であれば、可変表示部9内の図柄が回転を始める。図柄の変動を開始できる状態でなければ、始動入賞記憶を1増やす。
可変表示部9内の画像の回転は、一定時間が経過したときに停止する。停止時の画像の組み合わせが大当り図柄の組み合わせであると、大当り遊技状態に移行する。すなわち、開閉板20が、一定時間経過するまで、または、所定個数(例えば10個)の打球が入賞するまで開放する。そして、開閉板20の開放中に打球が特定入賞領域に入賞しVカウントスイッチ22で検出されると、継続権が発生し開閉板20の開放が再度行われる。継続権の発生は、所定回数(例えば15ラウンド)許容される。
停止時の可変表示部9内の画像の組み合わせが確率変動を伴う大当り図柄の組み合わせである場合には、次に大当りとなる確率が高くなる。すなわち、高確率状態という遊技者にとってさらに有利な状態となる。また、可変表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定時間だけ開状態になる。さらに、高確率状態では、可変表示器10における停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置15の開放時間と開放回数が高められる。
次に、パチンコ遊技機1の裏面の構造について図2を参照して説明する。
可変表示装置8の背面では、図2に示すように、機構板36の上部に球貯留タンク38が設けられ、パチンコ遊技機1が遊技機設置島に設置された状態でその上方から遊技球が球貯留タンク38に供給される。球貯留タンク38内の遊技球は、誘導樋39を通って球払出装置に至る。
機構板36には、中継基板30を介して可変表示部9を制御する可変表示制御ユニット29、基板ケース32に覆われ遊技制御用マイクロコンピュータ等が搭載された遊技制御基板(主基板)31、可変表示制御ユニット29と遊技制御基板31との間の信号を中継するための中継基板33、および遊技球の払出制御を行う賞球制御用マイクロコンピュータ等が搭載された払出制御基板37が設置されている。さらに、機構板36の下部には、モータの回転力を利用して打球を遊技領域7に発射する打球発射装置34と、遊技効果ランプ・LED28a,28b,28c、賞球ランプ51および球切れランプ52に信号を送るためのランプ制御基板35が設置されている。
また、図3はパチンコ遊技機1の機構板を背面からみた背面図である。球貯留タンク38に貯留された玉は誘導樋39を通り、図3に示されるように、球切れ検出器(球切れスイッチ)187a,187bを通過して球供給樋186a,186bを経て球払出装置97に至る。球切れスイッチ187a,187bは遊技球通路内の遊技球の有無を検出するスイッチであるが、球タンク38内の補給球の不足を検出する球切れ検出スイッチ167も設けられている。球払出装置97から払い出された遊技球は、連絡口45を通ってパチンコ遊技機1の前面に設けられている打球供給皿3に供給される。連絡口45の側方には、パチンコ遊技機1の前面に設けられている余剰玉受皿4に連通する余剰玉通路46が形成されている。入賞にもとづく景品球が多数払い出されて打球供給皿3が満杯になり、ついには遊技球が連絡口45に到達した後さらに遊技球が払い出されると遊技球は、余剰玉通路46を経て余剰玉受皿4に導かれる。さらに遊技球が払い出されると、感知レバー47が満タンスイッチ48を押圧して満タンスイッチ48がオンする。その状態では、球払出装置97内のステッピングモータの回転が停止して球払出装置97の動作が停止するとともに打球発射装置34の駆動も停止する。
次に、機構板36に設置されている中間ベースユニットの構成について説明する。中間ベースユニットには、球供給樋186a,186bや球払出装置97が設置される。図4に示すように、中間ベースユニットの上下には連結凹突部182が形成されている。連結凹突部182は、中間ベースユニットと機構板36の上部ベースユニットおよび下部ベースユニットを連結固定するものである。
中間ベースユニットの上部には通路体184が固定されている。そして、通路体184の下部に球払出装置97が固定されている。通路体184は、カーブ樋174(図3参照)によって流下方向を左右方向に変換された2列の遊技球を流下させる払出球通路186a,186bを有する。払出球通路186a,186bの上流側には、球切れスイッチ187a,187bが設置されている。球切れスイッチ187a,187bは、払出球通路186a,186b内の遊技球の有無を検出するものであって、球切れスイッチ187a,187bが遊技球を検出しなくなると球払出装置97における払出モータ(図4において図示せず)の回転を停止して球払出が不動化される。
なお、球切れスイッチ187a,187bは、払出球通路186a,186bに27〜28個程度の遊技球が存在することを検出できるような位置に係止片188によって係止されている。すなわち、球切れスイッチ187a,187bは、賞球の一単位の最大払出量(この実施の形態では15個)および球貸しの一単位の最大払出量(この実施の形態では100円:25個)以上が確保されていることが確認できるような位置に設置されている。
通路体184の中央部は、内部を流下する遊技球の球圧を弱めるように、左右に湾曲する形状に形成されている。そして、払出球通路186a,186bの間に止め穴189が形成されている。止め穴189の裏面は中間ベースユニットに設けられている取付ボスがはめ込まれる。その状態で止めねじがねじ止めされて、通路体184は中間ベースユニットに固定される。なお、ねじ止めされる前に、中間ベースユニットに設けられている係止突片185によって通路体184の位置合わせを行えるようになっている。
通路体184の下方には、球払出装置97に遊技球を供給するとともに故障時等には球払出装置97への遊技球の供給を停止する球止め装置190が設けられている。球止め装置190の下方に設置される球払出装置97は、直方体状のケース198の内部に収納されている。ケース198の左右4箇所には突部が設けられている。各突部が中間ベースユニットに設けられている位置決め突片に係った状態で、中間ベースユニットの下部に設けられている弾性係合片にケース198の下端がはめ込まれる。
図5は球払出装置97の分解斜視図である。球払出装置97の構成および作用について図5を参照して説明する。この実施形態における球払出装置97は、ステッピングモータ(払出モータ)289がスクリュー288を回転させることによりパチンコ玉を1個ずつ払い出す。なお、球払出装置97は、入賞にもとづく景品球だけでなく、貸し出すべき遊技球も払い出す。
図5に示すように、球払出装置97は、2つのケース198a,198bを有する。それぞれのケース198a,198bの左右2箇所に、球払出装置97の設置位置上部に設けられた位置決め突片に当接される係合突部280が設けられている。また、それぞれのケース198a,198bには、球供給路281a,281bが形成されている。球供給路281a,281bは湾曲面282a,282bを有し、湾曲面282a,282bの終端の下方には、球送り水平路284a,284bが形成されている。さらに、球送り水平路284a,284bの終端に球排出路283a,283bが形成されている。
球供給路281a,281b、球送り水平路284a,284b、球排出路283a,283bは、ケース198a,198bをそれぞれ前後に区画する区画壁295a,295bの前方に形成されている。また、区画壁295a,295bの前方において、玉圧緩衝部材285がケース198a,198b間に挟み込まれる。玉圧緩衝部材285は、球払出装置97に供給される玉を左右側方に振り分けて球供給路281a,281bに誘導する。
また、玉圧緩衝部材285の下部には、発光素子(LED)286と受光素子(図示せず)とによる払出モータ位置センサが設けられている。発光素子286と受光素子とは、所定の間隔をあけて設けられている。そして、この間隔内に、スクリュー288の先端が挿入されるようになっている。なお、玉圧緩衝部材285は、ケース198a,198bが張り合わされたときに、完全にその内部に収納固定される。
球送り水平路284a,284bには、払出モータ289によって回転させられるスクリュー288が配置されている。払出モータ289はモータ固定板290に固定され、モータ固定板290は、区画壁295a,295bの後方に形成される固定溝291a,291bにはめ込まれる。その状態で払出モータ289のモータ軸が区画壁295a,295bの前方に突出するので、その突出の前方にスクリュー288が固定される。スクリュー288の外周には、払出モータ289の回転によって球送り水平路284a,284bに載置された遊技球を前方に移動させるための螺旋突起288aが設けられている。
そして、スクリュー288の先端には、発光素子286を収納するように凹部が形成され、その凹部の外周には、2つの切欠部292が互いに180度離れて形成されている。従って、スクリュー288が1回転する間に、発光素子286からの光は、切欠部292を介して受光素子で2回検出される。
つまり、発光素子286と受光素子とによる払出モータ位置センサは、スクリュー288を定位置で停止するためのものであり、かつ、払出動作が行われた旨を検出するものである。なお、発光素子286、受光素子および払出モータ289からの配線は、まとめられてケース198a,198bの後部下方に形成された引出穴から外部に引き出されコネクタに結線される。
遊技球が球送り水平路284a,284bに載置された状態において、払出モータ289が回転すると、スクリュー288の螺旋突起288aによって、遊技球は、球送り水平路284a,284b上を前方に向かって移動する。そして、遂には、球送り水平路284a,284bの終端から球排出路283a,283bに落下する。このとき、左右の球送り水平路284a,284bからの落下は交互に行われる。すなわち、スクリュー288が半回転する毎に一方から1個の遊技球が落下する。従って、1個の遊技球が落下する毎に、発光素子286からの光が受光素子によって検出される。
図4に示すように、球払出装置97の下方には、球振分部材311が設けられている。球振分部材311は、振分用ソレノイド310によって駆動される。例えば、ソレノイド310のオン時には、球振分部材311は右側に倒れ、オフ時には左側に倒れる。振分用ソレノイド310の下方には、近接スイッチによる賞球カウントスイッチ301Aおよび球貸しカウントスイッチ301Bが設けられている。入賞にもとづく賞球時には、球振分部材311は右側に倒れ、球排出路283a,283bからの玉はともに賞球カウントスイッチ301Aを通過する。また、球貸し時には、球振分部材311は左側に倒れ、球排出路283a,283bからの玉はともに球貸しカウントスイッチ301Bを通過する。従って、球払出装置97は、賞球時と球貸し時とで払出流下路を切り替えて、所定数の遊技媒体の払出を行うことができる。
このように、球振分部材311を設けることによって、2条の玉流路を落下してきた玉は、賞球カウントスイッチ301Aと球貸しカウントスイッチ301Bとのうちのいずれか一方しか通過しない。従って、賞球であるのか球貸しであるのかの判断をすることなく、賞球カウントスイッチ301Aと球貸しカウントスイッチ301Bの検出出力から、直ちに賞球数または球貸し数を把握することができる。
なお、この実施の形態では、電気的駆動源の駆動によって遊技球を払い出す球払出装置として、ステッピングモータの回転によって遊技球が払い出される球払出装置97を用いることにするが、その他の駆動源によって遊技球を送り出す構造の球払出装置を用いてもよいし、電気的駆動源の駆動によってストッパを外し遊技球の自重によって払い出しがなされる構造の球払出装置を用いてもよい。また、ここでは、球振分部材311によって賞球時の球払出経路と球貸し時の球払出経路とを切り替える機構を使用するが、賞球時の球払出機構と球貸し時の球払出機構とが独立して設けられている構成を用いてもよい。
図6は、主基板31における回路構成の一例を示すブロック図である。なお、図6には、払出制御基板37、ランプ制御基板35、音制御基板70、発射制御基板91および表示制御基板80も示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する基本回路53と、ゲートスイッチ12、始動口スイッチ17、Vカウントスイッチ22、カウントスイッチ23、入賞口スイッチ19a,24aおよび賞球カウントスイッチ301Aからの信号を基本回路53に与えるスイッチ回路58と、可変入賞球装置15を開閉するソレノイド16および開閉板20を開閉するソレノイド21等を基本回路53からの指令に従って駆動するソレノイド回路59とが搭載されている。
また、基本回路53から与えられるデータに従って、大当りの発生を示す大当り情報、可変表示部9の画像表示開始に利用された始動入賞球の個数を示す有効始動情報、確率変動が生じたことを示す確変情報等をホール管理コンピュータ等のホストコンピュータに対して出力する情報出力回路64を含む。
基本回路53は、ゲーム制御用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段の一例であるRAM55、プログラムに従って制御動作を行うCPU56およびI/Oポート部57を含む。この実施の形態では、ROM54,RAM55はCPU56に内蔵されている。すなわち、CPU56は、1チップマイクロコンピュータである。なお、1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54およびI/Oポート部57は外付けであっても内蔵されていてもよい。また、I/Oポート部57は、マイクロコンピュータにおける情報入出力可能な端子である。
さらに、主基板31には、電源投入時に基本回路53をリセットするためのシステムリセット回路65と、基本回路53から与えられるアドレス信号をデコードしてI/Oポート部57のうちのいずれかのI/Oポートを選択するための信号を出力するアドレスデコード回路67とが設けられている。なお、球払出装置97から主基板31に入力されるスイッチ情報もあるが、図6ではそれらは省略されている。
遊技球を打撃して発射する打球発射装置は発射制御基板91上の回路によって制御される駆動モータ94で駆動される。そして、駆動モータ94の駆動力は、操作ノブ5の操作量に従って調整される。すなわち、発射制御基板91上の回路によって、操作ノブ5の操作量に応じた速度で打球が発射されるように制御される。
なお、この実施の形態では、ランプ制御基板35に搭載されているランプ制御手段が、遊技盤に設けられている始動記憶表示器18、ゲート通過記憶表示器41および装飾ランプ25の表示制御を行うとともに、枠側に設けられている遊技効果ランプ・LED28a,28b,28c、賞球ランプ51および球切れランプ52の表示制御を行う。ここで、ランプ制御手段は発光体制御手段の一例である。また、特別図柄を可変表示する可変表示部9および普通図柄を可変表示する可変表示器10の表示制御は、表示制御基板80に搭載されている表示制御手段によって行われる。
図7は、表示制御基板80内の回路構成を、可変表示部9の一実現例であるLCD(液晶表示装置)82、可変表示器10、主基板31の出力ポート(ポート0,2)570,572および出力バッファ回路620,62Aとともに示すブロック図である。出力ポート(出力ポート2)572からは8ビットのデータが出力され、出力ポート570からは1ビットのストローブ信号(INT信号)が出力される。
表示制御用CPU101は、制御データROM102に格納されたプログラムに従って動作し、主基板31からノイズフィルタ107および入力バッファ回路105Bを介してINT信号が入力されると、入力バッファ回路105Aを介して表示制御コマンドを受信する。入力バッファ回路105A,105Bとして、例えば汎用ICである74HC540,74HC14を使用することができる。なお、表示制御用CPU101がI/Oポートを内蔵していない場合には、入力バッファ回路105A,105Bと表示制御用CPU101との間に、I/Oポートが設けられる。
そして、表示制御用CPU101は、受信した表示制御コマンドに従って、LCD82に表示される画面の表示制御を行う。具体的には、表示制御コマンドに応じた指令をVDP103に与える。VDP103は、キャラクタROM86から必要なデータを読み出す。VDP103は、入力したデータに従ってLCD82に表示するための画像データを生成し、R,G,B信号および同期信号をLCD82に出力する。
なお、図7には、VDP103をリセットするためのリセット回路83、VDP103に動作クロックを与えるための発振回路85、および使用頻度の高い画像データを格納するキャラクタROM86も示されている。キャラクタROM86に格納される使用頻度の高い画像データとは、例えば、LCD82に表示される人物、動物、または、文字、図形もしくは記号等からなる画像などである。
入力バッファ回路105A,105Bは、主基板31から表示制御基板80へ向かう方向にのみ信号を通過させることができる。従って、表示制御基板80側から主基板31側に信号が伝わる余地はない。すなわち、入力バッファ回路105A,105Bは、入力ポートともに不可逆性情報入力手段を構成する。表示制御基板80内の回路に不正改造が加えられても、不正改造によって出力される信号が主基板31側に伝わることはない。
なお、出力ポート570,572の出力をそのまま表示制御基板80に出力してもよいが、単方向にのみ信号伝達可能な出力バッファ回路620,62Aを設けることによって、主基板31から表示制御基板80への一方向性の信号伝達をより確実にすることができる。すなわち、出力バッファ回路620,62Aは、出力ポートともに不可逆性情報出力手段を構成する。
また、高周波信号を遮断するノイズフィルタ107として、例えば3端子コンデンサやフェライトビーズが使用されるが、ノイズフィルタ107の存在によって、表示制御コマンドに基板間でノイズが乗ったとしても、その影響は除去される。なお、主基板31のバッファ回路620,62Aの出力側にもノイズフィルタを設けてもよい。
図8は、主基板31およびランプ制御基板35における信号送受信部分を示すブロック図である。この実施の形態では、遊技領域7の外側に設けられている遊技効果LED28a、遊技効果ランプ28b,28cと遊技盤に設けられている装飾ランプ25の点灯/消灯と、賞球ランプ51および球切れランプ52の点灯/消灯とを示すランプ制御コマンドが主基板31からランプ制御基板35に出力される。また、始動記憶表示器18およびゲート通過記憶表示器41の点灯個数を示すランプ制御コマンドも主基板31からランプ制御基板35に出力される。
図8に示すように、ランプ制御に関するランプ制御コマンドは、基本回路53におけるI/Oポート部57の出力ポート(出力ポート0,3)570,573から出力される。出力ポート(出力ポート3)573は8ビットのデータを出力し、出力ポート570は1ビットのINT信号を出力する。ランプ制御基板35において、主基板31からの制御コマンドは、入力バッファ回路355A,355Bを介してランプ制御用CPU351に入力する。なお、ランプ制御用CPU351がI/Oポートを内蔵していない場合には、入力バッファ回路355A,355Bとランプ制御用CPU351との間に、I/Oポートが設けられる。
ランプ制御基板35において、ランプ制御用CPU351は、各制御コマンドに応じて定義されている遊技効果LED28a、遊技効果ランプ28b,28c、装飾ランプ25の点灯/消灯パターンに従って、遊技効果LED28a、遊技効果ランプ28b,28c、装飾ランプ25に対して点灯/消灯信号を出力する。点灯/消灯信号は、遊技効果LED28a、遊技効果ランプ28b,28c、装飾ランプ25に出力される。なお、点灯/消灯パターンは、ランプ制御用CPU351の内蔵ROMまたは外付けROMに記憶されている。
主基板31において、CPU56は、RAM55の記憶内容に未払出の賞球残数があるときに賞球ランプ51の点灯を指示する制御コマンドを出力し、前述した遊技盤裏面の払出球通路186a,186bの上流に設置されている球切れスイッチ187a,187b(図3参照)が遊技球を検出しなくなると球切れランプ52の点灯を指示する制御コマンドを出力する。ランプ制御基板35において、各制御コマンドは、入力バッファ回路355A,355Bを介してランプ制御用CPU351に入力する。ランプ制御用CPU351は、それらの制御コマンドに応じて、賞球ランプ51および球切れランプ52を点灯/消灯する。なお、点灯/消灯パターンは、ランプ制御用CPU351の内蔵ROMまたは外付けROMに記憶されている。
さらに、ランプ制御用CPU351は、制御コマンドに応じて始動記憶表示器18およびゲート通過記憶表示器41に対して点灯/消灯信号を出力する。
入力バッファ回路355A,355Bとして、例えば、汎用のCMOS−ICである74HC540,74HC14が用いられる。入力バッファ回路355A,355Bは、主基板31からランプ制御基板35へ向かう方向にのみ信号を通過させることができる。従って、ランプ制御基板35側から主基板31側に信号が伝わる余地はない。たとえ、ランプ制御基板35内の回路に不正改造が加えられても、不正改造によって出力される信号がメイン基板31側に伝わることはない。なお、入力バッファ回路355A,355Bの入力側にノイズフィルタを設けてもよい。
また、主基板31において、出力ポート570,573の外側にバッファ回路620,63Aが設けられている。バッファ回路620,63Aとして、例えば、汎用のCMOS−ICである74HC250,74HC14が用いられる。このような構成によれば、外部から主基板31の内部に入力される信号が阻止されるので、ランプ制御基板70から主基板31に信号が与えられる可能性がある信号ラインをさらに確実になくすことができる。なお、バッファ回路620,63Aの出力側にノイズフィルタを設けてもよい。
図9は、主基板31における音声制御コマンドの信号送信部分および音声制御基板70の構成例を示すブロック図である。この実施の形態では、遊技進行に応じて、遊技領域7の外側に設けられているスピーカ27の音声出力を指示するための音声制御コマンドが、主基板31から音声制御基板70に出力される。
図9に示すように、音声制御コマンドは、基本回路53におけるI/Oポート部57の出力ポート(出力ポート0,4)570,574から出力される。出力ポート(出力ポート4)574からは8ビットのデータが出力され、出力ポート570からは1ビットのINT信号が出力される。音声制御基板70において、主基板31からの各信号は、入力バッファ回路705A,705Bを介して音声制御用CPU701に入力する。なお、音声制御用CPU701がI/Oポートを内蔵していない場合には、入力バッファ回路705A,705Bと音声制御用CPU701との間に、I/Oポートが設けられる。
そして、例えばディジタルシグナルプロセッサによる音声合成回路702は、音声制御用CPU701の指示に応じた音声や効果音を発生し音量切替回路703に出力する。音量切替回路703は、音声制御用CPU701の出力レベルを、設定されている音量に応じたレベルにして音量増幅回路704に出力する。音量増幅回路704は、増幅した音声信号をスピーカ27に出力する。
入力バッファ回路705A,705Bとして、例えば、汎用のCMOS−ICである74HC540,74HC14が用いられる。入力バッファ回路705A,705Bは、主基板31から音声制御基板70へ向かう方向にのみ信号を通過させることができる。よって、音声制御基板70側から主基板31側に信号が伝わる余地はない。従って、音声制御基板70内の回路に不正改造が加えられても、不正改造によって出力される信号が主基板31側に伝わることはない。なお、入力バッファ回路705A,705Bの入力側にノイズフィルタを設けてもよい。
また、主基板31において、出力ポート570,574の外側にバッファ回路620,67Aが設けられている。バッファ回路620,67Aとして、例えば、汎用のCMOS−ICである74HC250,74HC14が用いられる。このような構成によれば、外部から主基板31の内部に入力される信号が阻止されるので、音声制御基板70から主基板31に信号が与えられる可能性がある信号ラインをさらに確実になくすことができる。なお、バッファ回路620,67Aの出力側にノイズフィルタを設けてもよい。
図10は、払出制御基板37および球払出装置97の構成要素などの払出に関連する構成要素を示すブロック図である。図10に示すように、満タンスイッチ48からの検出信号は、中継基板71を介して主基板31のI/Oポート57に入力される。満タンスイッチ48は、余剰球受皿4の満タンを検出するスイッチである。また、球切れスイッチ187(187a,187b)からの検出信号も、中継基板72および中継基板71を介して主基板31のI/Oポート57に入力される。
主基板31のCPU56は、球切れスイッチ187からの検出信号が球切れ状態を示しているか、または、満タンスイッチ48からの検出信号が満タン状態を示していると、払出禁止を指示する払出制御コマンドを送出する。払出禁止を指示する払出制御コマンドを受信すると、払出制御基板37の払出制御用CPU371は球払出処理を停止する。
さらに、賞球カウントスイッチ301Aからの検出信号も、中継基板72および中継基板71を介して主基板31のI/Oポート57に入力される。賞球カウントスイッチ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は、出力ポート372gを介して、貸し球数を示す球貸し個数信号をターミナル基板160に出力し、ブザー駆動信号をブザー基板75に出力する。ブザー基板75にはブザーが搭載されている。さらに、出力ポート372eを介して、エラー表示用LED374にエラー信号を出力する。
さらに、払出制御基板37の入力ポート372bには、中継基板72を介して、賞球カウントスイッチ301Aおよび球貸しカウントスイッチ301Bからの検出信号が入力される。球貸しカウントスイッチ301Bは、球払出装置97の払出機構部分に設けられ、実際に払い出された貸し球を検出する。払出制御基板37からの払出モータ289への駆動信号は、出力ポート372cおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に伝えられる。
カードユニット50には、カードユニット制御用マイクロコンピュータが搭載されている。また、カードユニット50には、端数表示スイッチ152、連結台方向表示器153、カード投入表示ランプ154およびカード挿入口155が設けられている(図1参照)。残高表示基板74には、打球供給皿3の近傍に設けられている度数表示LED、球貸しスイッチおよび返却スイッチが接続される。
残高表示基板74からカードユニット50には、遊技者の操作に応じて、球貸しスイッチ信号および返却スイッチ信号が払出制御基板37を介して与えられる。また、カードユニット50から残高表示基板74には、プリペイドカードの残高を示すカード残高表示信号および球貸し可表示信号が払出制御基板37を介して与えられる。カードユニット50と払出制御基板37の間では、接続信号(VL信号)、ユニット操作信号(BRDY信号)、球貸し要求信号(BRQ信号)、球貸し完了信号(EXS信号)およびパチンコ機動作信号(PRDY信号)がI/Oポート372fを介してやりとりされる。
パチンコ遊技機1の電源が投入されると、払出制御基板37の払出制御用CPU371は、カードユニット50にPRDY信号を出力する。また、カードユニット制御用マイクロコンピュータは、VL信号を出力する。払出制御用CPU371は、VL信号の入力状態により接続状態/未接続状態を判定する。カードユニット50においてカードが受け付けられ、球貸しスイッチが操作され球貸しスイッチ信号が入力されると、カードユニット制御用マイクロコンピュータは、払出制御基板37にBRDY信号を出力する。この時点から所定の遅延時間が経過すると、カードユニット制御用マイクロコンピュータは、払出制御基板37にBRQ信号を出力する。そして、払出制御基板37の払出制御用CPU371は、カードユニット50に対するEXS信号を立ち上げ、カードユニット50からのBRQ信号の立ち下がりを検出すると、払出モータ289を駆動し、所定個の貸し球を遊技者に払い出す。このとき、振分用ソレノイド310は駆動状態とされている。すなわち、球振分部材311を球貸し側に向ける。そして、払出が完了したら、払出制御用CPU371は、カードユニット50に対するEXS信号を立ち下げる。その後、カードユニット50からのBRDY信号がオン状態でなければ、賞球払出制御を実行する。
以上のように、カードユニット50からの信号は全て払出制御基板37に入力される構成になっている。従って、球貸し制御に関して、カードユニット50から主基板31に信号が入力されることはなく、主基板31の基本回路53にカードユニット50の側から不正に信号が入力される余地はない。
なお、この実施の形態ではカードユニット50が設けられている場合を例にするが、コイン投入に応じてその金額に応じた遊技球を貸し出す場合にも本発明を適用できる。また、この実施の形態では遊技球を貸し出す場合を例にしているが、得点が加算されるものであっても本発明を適用できる。
この実施の形態では、少なくとも主基板31および払出制御基板37におけるRAMは、バックアップ電源でバックアップされている。すなわち、遊技機に対する電力供給が停止しても、所定期間はRAMの内容が保存される。そして、各CPUは、電源電圧の低下を検出すると、所定の処理を行った後に電源復旧待ちの状態になる。また、電源投入時に、各CPUは、RAMにデータが保存されている場合には、保存データにもとづいて電源断前の状態を復元する。
また、上述したように、払出制御基板37、表示制御基板80、ランプ制御基板35および音声制御基板70にコマンドを送出するために、主基板31の出力ポート(出力ポート0)570からINT信号が各電気部品制御基板に出力される。この場合、例えば、出力ポート570は8ビット構成であって、ビット0が払出制御基板37へのINT信号、ビット1が表示制御基板80へのINT信号、ビット2がランプ制御基板35へのINT信号、ビット3が音声制御基板70へのINT信号の出力用に用いられる。
図11は、CPU56周りの一構成例を示すブロック図である。図11に示すように、第1の電源監視回路(第1の電源監視手段)からの電圧低下信号が、CPU56のマスク不能割込端子(XNMI端子)に接続されている。第1の電源監視回路は、遊技機が使用する各種直流電源のうちのいずれかの電源の電圧を監視して電源電圧低下を検出する回路である。この実施の形態では、VSLの電源電圧を監視して電圧値が所定値以下になるとローレベルの電圧低下信号を発生する。VSLは、遊技機で使用される直流電圧のうちで最大のものであり、この例では+30Vである。従って、CPU56は、割込処理によって電源断の発生を確認することができる。なお、この実施の形態では、第1の電源監視回路は、後述する電源基板に搭載されている。
図11には、システムリセット回路65も示されているが、この実施の形態では、システムリセット回路65は、第2の電源監視回路(第2の電源監視手段)も兼ねている。すなわち、リセットIC651は、電源投入時に、外付けのコンデンサの容量で決まる所定時間だけ出力をローレベルとし、所定時間が経過すると出力をハイレベルにする。すなわち、リセット信号をハイレベルに立ち上げてCPU56を動作可能状態にする。また、リセットIC651は、第1の電源監視回路が監視する電源電圧と等しい電源電圧であるVSLの電源電圧を監視して電圧値が所定値(第1の電源監視回路が電圧低下信号を出力する電源電圧値よりも低い値)以下になるとローレベルの電圧低下信号を発生する。従って、CPU56は、第1の電源監視回路からの電圧低下信号に応じて所定の電力供給停止時処理を行った後、システムリセットされる。なお、この実施の形態では、リセット信号と第2の電源監視回路からの電圧低下信号とは同一の信号である。
図11に示すように、リセット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は、確実に動作を開始する。
そして、例えば、第1の電源監視回路の検出電圧(電圧低下信号を出力することになる電圧)を+22Vとし、第2の電源監視回路の検出電圧を+9Vとする。そのように構成した場合には、第1の電源監視回路と第2の電源監視回路とは、同一の電源VSLの電圧を監視するので、第1の電圧監視回路が電圧低下信号を出力するタイミングと第2の電圧監視回路が電圧低下信号を出力するタイミングの差を所望の所定期間に確実に設定することができる。所望の所定期間とは、第1の電源監視回路からの電圧低下信号に応じて電力供給停止時処理を開始してから電力供給停止時処理が確実に完了するまでの期間である。
この例では、第1の電源監視手段が検出信号を出力することになる第1検出条件は+30V電源電圧が+22Vにまで低下したことであり、第2の電源監視手段が検出信号を出力することになる第2検出条件は+30V電源電圧が+9Vにまで低下したことになる。ただし、ここで用いられている電圧値は一例であって、他の値を用いてもよい。
ただし、監視範囲が狭まるが、第1の電圧監視回路および第2の電圧監視回路の監視電圧として+5V電源電圧を用いることも可能である。その場合にも、第1の電圧監視回路の検出電圧は、第2の電圧監視回路の検出電圧よりも高く設定される。
CPU56等の駆動電源である+5V電源から電力が供給されていない間、RAMの少なくとも一部は、電源基板から供給されるバックアップ電源によってバックアップされ、遊技機に対する電源が断しても内容は保存される。そして、+5V電源が復旧すると、システムリセット回路65からリセット信号が発せられるので、CPU56は、通常の動作状態に復帰する。そのとき、必要なデータがバックアップRAMに保存されているので、停電等からの復旧時に停電発生時の遊技状態に復帰することができる。
なお、図11では、電源投入時にCPU56のリセット端子に2回のリセット信号(ローレベル信号)が与えられる構成が示されたが、リセット信号の立ち上がりタイミングが1回しかなくても確実にリセット解除されるCPUを使用する場合には、符号941〜949で示された回路素子は不要である。その場合、リセットIC651の出力がそのままCPU56のリセット端子に接続される。
この実施の形態で用いられるCPU56は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)も内蔵している。PIOは、PB0〜PB3の4ビットおよびPA0〜PA7の1バイトのポートを有する。PB0〜PB3およびPA0〜PA7のポートは、入力/出力いずれにも設定できる。ただし、この実施の形態では内蔵PIOを使用しない。その場合には、例えば、全ポートを入力モードとして、全ポートをグラウンドレベルに接続する。なお、電源投入時に、PIOは自動的に入力モードに設定される。
図12は、遊技機の電源基板910の一構成例を示すブロック図である。電源基板910は、主基板31、表示制御基板80、音声制御基板70、ランプ制御基板35および払出制御基板37等の電気部品制御基板と独立して設置され、遊技機内の各電気部品制御基板および機構部品が使用する電圧を生成する。この例では、AC24V、VSL(DC+30V)、DC+21V、DC+12VおよびDC+5Vを生成する。また、バックアップ電源となるコンデンサ916は、DC+5Vすなわち各基板上のIC等を駆動する電源のラインから充電される。
トランス911は、交流電源からの交流電圧を24Vに変換する。AC24V電圧は、コネクタ915に出力される。また、整流回路912は、AC24Vから+30Vの直流電圧を生成し、DC−DCコンバータ913およびコネクタ915に出力する。DC−DCコンバータ913は、+22V、+12Vおよび+5Vを生成してコネクタ915に出力する。コネクタ915は例えば中継基板に接続され、中継基板から各電気部品制御基板および機構部品に必要な電圧の電力が供給される。なお、トランス911の入力側には、遊技機に対する電源供給を停止したり開始させたりするための電源スイッチ918が設置されている。
DC−DCコンバータ913からの+5Vラインは分岐してバックアップ+5Vラインを形成する。バックアップ+5Vラインとグラウンドレベルとの間には大容量のコンデンサ916が接続されている。コンデンサ916は、遊技機に対する電力供給が遮断されたときの電気部品制御基板のバックアップRAM(電源バックアップされているRAMすなわち記憶内容保持状態となりうる記憶手段)に対して記憶状態を保持できるように電力を供給するバックアップ電源となる。また、+5Vラインとバックアップ+5Vラインとの間に、逆流防止用のダイオード917が挿入される。
なお、バックアップ電源として、+5V電源から充電可能な電池を用いてもよい。電池を用いる場合には、+5V電源から電力供給されない状態が所定時間継続すると容量がなくなるような充電池が用いられる。
また、電源基板910には、上述した第1の電源監視回路を構成する電源監視用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の電源監視回路から複数の電気部品制御基板に電圧低下信号を供給することができる。電圧低下信号を必要とする電気部品制御基板が幾つあっても第1の電源監視手段は1つ設けられていればよいので、各電気部品制御基板における各電気部品制御手段が後述する復帰制御を行っても、遊技機のコストはさほど上昇しない。
なお、図12に示された構成では、電源監視用IC902の検出出力(電圧低下信号)は、バッファ回路918,919を介してそれぞれの電気部品制御基板(例えば主基板31と払出制御基板37)に伝達されるが、例えば、1つの検出出力を中継基板に伝達し、中継基板から各電気部品制御基板に同じ信号を分配する構成でもよい。また、電圧低下信号を必要とする基板数に応じたバッファ回路を設けてもよい。
次に遊技機の動作について説明する。
図13は、主基板31におけるCPU56が実行するメイン処理を示すフローチャートである。遊技機に対する電源が投入されると、メイン処理において、CPU56は、まず、必要な初期設定を行う(ステップS1)。
そして、電源断時にバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の停電発生NMI処理)が行われたか否か確認する(ステップS2)。この実施の形態では、不測の電源断が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような保護処理が行われていた場合をバックアップありとする。バックアップなしを確認したら、CPU56は初期化処理を実行する(ステップS2,S3)。なお、この実施の形態では、バックアップRAM領域にバックアップデータがあるか否かは、電源断時にバックアップRAM領域に設定されるバックアップフラグの状態によって確認される。例えば、バックアップフラグ領域に「55H」が設定されていればバックアップあり(オン状態)を意味し、「55H」以外の値が設定されていればバックアップなし(オフ状態)を意味する。バックアップフラグ領域に設定されている「55H」は、停電発生NMI処理においてバックアップRAM領域のデータ保護処理が完了したときに設定されたデータであり、バックアップRAM領域のデータにもとづくパリティコードである。
バックアップRAM領域にバックアップデータがある場合には、CPU56は、バックアップRAM領域のデータチェック(例えばパリティチェック)を行う(ステップS4)。不測の電源断が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されていたはずであるから、チェック結果は正常になる。チェック結果が正常でない場合には、内部状態を電源断時の状態に戻すことができないので、停電復旧時でない電源投入時に実行される初期化処理を実行する(ステップS5,S3)。
チェック結果が正常であれば、CPU56は、内部状態を電源断時の状態に戻すための遊技状態復旧処理を行う(ステップS6)。図14に示すように、バックアップフラグの値が「55H」に設定され、かつ、チェック結果が正常である場合に、ステップS6の遊技状態復旧処理が実行される。そして、バックアップRAM領域に保存されていたPC(プログラムカウンタ)の退避値がPCに設定され、そのアドレスに復帰する(ステップS7)。
通常の初期化処理の実行(ステップS3)が完了すると、メイン処理で、タイマ割込フラグの監視(ステップS9)の確認が行われるループ処理に移行する。なお、ループ内では、表示用乱数更新処理(ステップS8)も実行される。
なお、この実施の形態では、ステップS2でバックアップデータの有無が確認された後、バックアップデータが存在する場合にステップS4でバックアップ領域のチェックが行われたが、逆に、バックアップ領域のチェック結果が正常であったことが確認された後、バックアップデータの有無の確認を行うようにしてもよい。また、バックアップデータの有無の確認、またはバックアップ領域のチェックの何れか一方の確認を行うことによって、停電復旧処理を実行するか否かを判定してもよい。
また、例えば停電復旧処理を実行するか否か判断する場合のパリティチェック(ステップS4)の際に、すなわち、遊技状態を復旧するか否か判断する際に、保存されていたRAMデータにおける特別プロセスフラグ等や始動入賞記憶数データによって、遊技機が遊技待機状態(図柄変動中でなく、大当り遊技中でなく、確変中でなく、また、始動入賞記憶がない状態)であることが確認されたら、遊技状態復旧処理を行わずに初期化処理を実行するようにしてもよい。
図15は、ステップS1の初期設定処理を示すフローチャートである。初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1a)。割込禁止に設定すると、CPU56は、割込モードを割込モード2に設定し(ステップS1b)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS1c)。そして、CPU56は、内蔵デバイスレジスタの初期化を行う(ステップS1d)。また、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の初期化(ステップS1e)を行った後、RAMをアクセス可能状態に設定する(ステップS1f)。
この実施の形態で用いられているCPU56には、マスク可能な割込(INT)のモードとして以下の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とは異なり、割込発生要因毎のそれぞれの割込処理を用意しておくことも容易である。上述したように、この実施の形態では、初期設定処理のステップS1bにおいて、CPU56は割込モード2に設定される。
図16は、通常の初期化処理(ステップS3)の処理を示すフローチャートである。図16に示すように、初期化処理では、RAMのクリア処理が行われる(ステップS3a)。次いで、作業領域初期設定テーブルのアドレス値にもとづいて、所定の作業領域(例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄左中右図柄バッファ、払出コマンド格納ポインタなど)に初期値を設定する初期値設定処理(ステップS3b)が行われる。そして、2ms毎に定期的にタイマ割込がかかるようにCPU56に設けられているCTCのレジスタの設定が行われる(ステップS3c)。すなわち、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。そして、初期設定処理(ステップS1)において割込禁止(図15参照)とされているので、初期化処理を終える前に割込が許可される(ステップS3d)。
従って、この実施の形態では、CPU56の内蔵CTCが繰り返しタイマ割込を発生するように設定される。この実施の形態では、繰り返し周期は2msに設定される。そして、図17に示すように、タイマ割込が発生すると、CPU56は、タイマ割込フラグをセットする(ステップS12)。
CPU56は、ステップS9において、タイマ割込フラグがセットされたことを検出すると、タイマ割込フラグをリセットするとともに(ステップS10)、遊技制御処理を実行する(ステップS11)。以上の制御によって、この実施の形態では、遊技制御処理は2ms毎に起動されることになる。なお、この実施の形態では、タイマ割込処理ではフラグセットのみがなされ、遊技制御処理はメイン処理において実行されるが、タイマ割込処理で遊技制御処理を実行してもよい。
以上に説明したように、この実施の形態では、CTCやPIOを内蔵するCPU56に対して、初期設定処理で割込モード2が設定される。従って、内蔵CTCを用いた定期的なタイマ割込処理を容易に実現できる。また、タイマ割込処理をプログラム上の任意の位置に設置できる。また、内蔵PIOを用いたスイッチ検出処理等を容易に割込処理で実現できる。その結果、プログラム構成が簡略化され、プログラム開発工数が低減する等の効果を得ることができる。
また、この実施の形態では、バックアップデータの有無により電源断時の状態に復旧するか否かの判断を行う。従って、停電後の電源復旧時などにおいて電源投入された時に、バックアップデータ記憶領域の内容に応じて電源断時の状態に復旧させるか否かの判断を行うことができる。
さらに、バックアップデータの状態によって電源断時の状態に復旧するか否かの判断が行われるので、停電後の電源復旧時などにおいて電源投入されたときに、バックアップデータ記憶領域の内容の状態に応じて電源断時の状態に復旧させるか否かの判断を行うことができる。
図18は、ステップS11の遊技制御処理を示すフローチャートである。遊技制御処理において、CPU56は、まず、スイッチ回路58を介して、ゲートセンサ12、始動口センサ17、カウントセンサ23および入賞口スイッチ19a,24aの状態を入力し、各入賞口や入賞装置に対する入賞があったか否か判定する(スイッチ処理:ステップS21)。
次いで、パチンコ遊技機1の内部に備えられている自己診断機能によって種々の異常診断処理が行われ、その結果に応じて必要ならば警報が発せられる(エラー処理:ステップS22)。
次に、遊技制御に用いられる大当り判定用の乱数等の各判定用乱数を示す各カウンタを更新する処理を行う(ステップS23)。CPU56は、さらに、停止図柄の種類を決定する乱数等の表示用乱数を更新する処理を行う(ステップS24)。
さらに、CPU56は、特別図柄プロセス処理を行う(ステップS25)。特別図柄プロセス制御では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS26)。普通図柄プロセス処理では、7セグメントLEDによる可変表示器10を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
また、CPU56は、払出制御基板37等に送出される制御コマンドをRAM55の所定の領域に設定して制御コマンドを送出する処理を行う(コマンド制御処理:ステップS27)。
次いで、CPU56は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力するデータ出力処理を行う(ステップS29)。
また、CPU56は、所定の条件が成立したときにソレノイド回路59に駆動指令を行う(ステップS30)。ソレノイド回路59は、駆動指令に応じてソレノイド16,21を駆動し、可変入賞球装置15または開閉板20を開状態または閉状態とする。
また、CPU56は、各入賞口への入賞を検出するためのスイッチ17,23,19a,24aの検出出力にもとづく賞球数の設定などを行う(ステップS31)。具体的には、入賞検出に応じて払出制御基板37に払出制御コマンドを出力する。払出制御基板37に搭載されている払出制御用CPU371は、払出制御コマンドに応じて球払出装置97を駆動する。
以上のように、メイン処理には遊技制御処理に移行すべきか否かを判定する処理が含まれ、CPU56の内部タイマが定期的に発生するタイマ割込にもとづくタイマ割込処理で遊技制御処理に移行すべきか否かを判定するためのフラグがセットされるので、遊技制御処理の全てが確実に実行される。つまり、遊技制御処理の全てが実行されるまでは、次回の遊技制御処理に移行すべきか否かの判定が行われないので、遊技制御処理中の全ての各処理が実行完了することは保証されている。
なお、ここでは、主基板31のCPU56が実行する遊技制御処理は、CPU56の内部タイマが定期的に発生するタイマ割込にもとづくタイマ割込処理でセットされるフラグに応じて実行されたが、定期的に(例えば2ms毎)信号を発生するハードウェア回路を設け、その回路からの信号をCPU56の外部割込端子に導入し、割込信号によって遊技制御処理に移行すべきか否かを判定するためのフラグをセットするようにしてもよい。
そのように構成した場合にも、遊技制御処理の全てが実行されるまでは、フラグの判定が行われないので、遊技制御処理中の全ての各処理が実行完了することが保証される。
図19は、主基板31から払出制御基板37に送出される払出制御コマンドのコマンド形態の一例を示す説明図である。この実施の形態では、払出制御コマンドは2バイト構成であり、1バイト目はMODE(コマンドの分類)を表し、2バイト目はEXT(コマンドの種類)を表す。なお、図19に示されたコマンド形態は一例であって他のコマンド形態を用いてもよい。MODEデータの先頭ビット(ビット7)は必ず「1」とされ、EXTデータの先頭ビット(ビット7)は必ず「0」とされる。
図20は、各電気部品制御手段に対する制御コマンドを構成する8ビットの制御信号(この場合には払出制御信号)とINT信号(この場合には払出制御信号INT)との関係を示すタイミング図である。図20に示すように、MODEまたはEXTのデータが出力ポート(払出制御信号の場合にはポート1)に出力されてから、Aで示される期間が経過すると、CPU56は、データ出力を示す信号であるINT信号をオン状態にする。また、そこからBで示される期間が経過するとINT信号をオフ状態にする。さらに、次に送出すべきデータがある場合には、すなわち、MODEデータ送出後では、Cで示される期間をおいてから2バイト目のデータを出力ポートに送出する。2バイト目のデータに関して、A,Bの期間は、1バイト目の場合と同様である。
Aの期間は、CPU56が、コマンドの送出準備の期間すなわちバッファに送出コマンドを設定する処理に要する期間であるとともに、制御信号線(払出制御信号の場合には払出制御信号線)におけるデータの安定化のための期間である。また、Bの期間は、INT信号安定化のための期間である。そして、Cの期間は、電気部品制御手段(払出制御信号の場合には払出制御手段)が確実にデータを取り込めるように設定されている期間である。Cの期間では、信号線上のデータは変化しない。すなわち、Cの期間が経過するまでデータ出力が維持される。
後述するように、この実施の形態では、払出制御基板37への払出制御コマンド、表示制御基板80への表示制御コマンド、ランプ制御基板35へのランプ制御コマンドおよび音声制御基板70への音声制御コマンドは、同一のルーチン(共通モジュール)を用いて送出される。そこで、Cの期間すなわち1バイト目に関するINT信号がオフ状態になってから2バイト目のデータが送出開始されるまでの期間は、コマンド受信処理に最も時間がかかる電気部品制御手段における受信処理時間よりも長くなるように設定される。
なお、各電気部品制御手段は、INT信号がオン状態(ハイレベル)からオフ状態(ローレベル)になったことを検知して、例えば割込処理によって1バイトのデータの取り込み処理を開始する。
Cの期間が、コマンド受信処理に最も時間がかかる電気部品制御手段における受信処理時間よりも長いので、遊技制御手段が、各電気部品制御手段に対するコマンド送出処理を共通モジュールで制御しても、いずれの電気部品制御手段でも遊技制御手段からの制御コマンドを確実に受信することができる。
この実施の形態では、CPU56は、(11.776/2)MHzのシステムクロックで動作している。そして、具体的には、Aの期間に138ステート(1ステート=[2/11.776]μs)かけ、Bの期間に82ステートかけ、Cの期間に251ステートかけている。従って、Cの期間はAの期間よりも長い。すなわち、CPU56は、INT信号出力処理を実行した後に所定期間が経過すると次のデータを送出できる状態になるが、その所定期間(Cの期間)は、INT信号出力処理の前にデータを送出してからINT信号を出力開始するまでの期間(Aの期間)よりも長い。上述したように、Aの期間はコマンドの信号線における安定化期間であり、Cの期間は受信側がデータを取り込むのに要する時間を確保するための期間である。従って、Aの期間をCの期間よりも短くすることによって、受信側の電気部品制御手段が確実にコマンドを受信できる状態になるという効果を得ることができるとともに、1つのコマンドの送出完了に要する期間が短縮される効果もある。
図21は、払出制御コマンドの内容の一例を示す説明図である。図21に示された例において、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つのコマンド(指令情報)は2バイト構成であるから、ノイズの影響を低減することができる。すなわち、1つのコマンドが1バイトのコマンドデータで構成されている場合には、ノイズの影響でデータ化けが生じてもそのまま受信され、誤った制御がなされてしまうおそれがあるが、2バイト構成であれば、双方がともに正しく受信された場合に初めて、コマンドにもとづく制御が開始されるので、1バイト構成の場合に比べて誤動作の可能性を低減することができる。
図22は、表示制御コマンドの内容の一例を示す説明図である。表示制御コマンドもMODEとEXTの2バイト構成である。図22に示す例において、コマンドA0XX(H)(X=4ビットの任意の値)は、特別図柄を可変表示する可変表示部9における特別図柄の変動パターンを指定する表示制御コマンドである。なお、変動パターンを指定するコマンドは変動開始指示も兼ねている。コマンド81XX(H)(X=4ビットの任意の値)は、可変表示器10で可変表示される普通図柄の停止図柄を指定する表示制御コマンドである。コマンド8201(H)は、普通図柄の可変表示の停止を指示する表示制御コマンドである。
コマンドA1XX(H)、A2XX(H)およびA3XX(H)は、特別図柄の左中右の停止図柄を指定する表示制御コマンドである。また、コマンドA401(H)は、特別図柄の可変表示の停止を指示する表示制御コマンドである。コマンド93XX(H)〜96XX(H)は、大当り遊技開始から大当り遊技終了までの間に送出される表示制御コマンドである。そして、コマンドB001(H)およびC002(H)は、特別図柄の変動および大当り遊技に関わらない可変表示部9の表示状態に関する表示制御コマンドである。表示制御基板80の表示制御手段は、主基板31の遊技制御手段から上述した表示制御コマンドを受信すると図22に示された内容に応じて可変表示部9および可変表示器10の表示状態を変更する。
図23は、ランプ制御コマンドの内容の一例を示す説明図である。ランプ制御コマンドもMODEとEXTの2バイト構成である。図23に示す例において、コマンド90XX(H)(X=4ビットの任意の値)は、可変表示部9における特別図柄の変動パターンに対応したランプ・LED表示制御パターンを指定するランプ制御コマンドである。また、コマンドA0XX(X=4ビットの任意の値)は、特別図柄の可変表示中のランプ・LED表示制御パターンを指示するランプ制御コマンドである。コマンド93XX(H)〜96XX(H)は、大当り遊技開始から大当り遊技終了までの間のランプ・LED表示制御パターンを指示するランプ制御コマンドである。そして、コマンド9001(H)は、客待ちデモンストレーション時のランプ・LED表示制御パターンを指示するランプ制御コマンドである。
ランプ制御手段は、主基板31の遊技制御手段から上述したランプ制御コマンドを受信すると図23に示された内容に応じてランプ・LEDの表示状態を変更する。
コマンドF1XX(H)は、始動記憶表示器18の点灯個数を示すランプ制御コマンドである。例えば、ランプ制御手段は、始動記憶表示器18における「XX」で指定される個数の表示器を点灯状態とする。また、コマンドF0XX(H)は、ゲート通過記憶表示器41の点灯個数を示すランプ制御コマンドである。例えば、ランプ制御手段は、ゲート通過記憶表示器41における「XX」で指定される個数の表示器を点灯状態とする。すなわち、それらのコマンドは、保留個数という情報を報知するために設けられている発光体の制御を指示するコマンドである。なお、始動記憶表示器18およびゲート通過記憶表示器41の点灯個数に関するコマンドが点灯個数の増減を示すように構成されていてもよい。
コマンドD101(H)およびD102(H)は、賞球ランプ51の表示状態に関するランプ制御コマンドであり、コマンドE101(H)およびE102(H)は、球切れランプ52の表示状態に関するランプ制御コマンドである。ランプ制御手段は、主基板31の遊技制御手段から「D102(H)」のランプ制御コマンドを受信すると賞球ランプ51の表示状態を賞球残がある場合としてあらかじめ定められた表示状態とし、「D101(H)」のランプ制御コマンドを受信すると賞球ランプ51の表示状態を賞球残がない場合としてあらかじめ定められた表示状態とする。また、主基板31の遊技制御手段から「E101(H)」のランプ制御コマンドを受信すると球切れランプ52の表示状態を球あり中の表示状態とし、「E102(H)」のランプ制御コマンドを受信すると球切れランプ52の表示状態を球切れ中の表示状態とする。すなわち、コマンドD101(H)およびD102(H)は、未賞球の遊技球があることを遊技者等に報知するために設けられている発光体を制御することを示すコマンドであり、コマンドE101(H)およびE102(H)は、補給球が切れていることを遊技者や遊技店員に報知するために設けられている発光体を制御することを示すコマンドである。
コマンドC002(H)は、遊技機の電源投入時、または特定遊技状態(高確率状態や時短状態、この例では高確率状態)から通常状態(低確率状態や非時短状態、この例では低確率状態)に移行したときのランプ・LED表示制御パターンを指示するランプ制御コマンドである。コマンドB001(H)は、通常状態(低確率状態や非時短状態、この例では低確率状態)から特定遊技状態(高確率状態や時短状態、この例では高確率状態)に移行したときのランプ・LED表示制御パターンを指示するランプ制御コマンドである。この実施の形態では、ランプ制御手段は、遊技状態を報知することを指示するコマンドを受信すると、装飾ランプ25、遊技効果LED28aおよび遊技効果ランプ28b,28cのうちの一部または全部を用いて、遊技状態を報知するための点灯/消灯制御を行う。なお、装飾ランプ25、遊技効果LED28aおよび遊技効果ランプ28b,28cは、それぞれ、複数の発光体の集まりで構成されていてもよく、その場合、装飾ランプ25、遊技効果LED28aおよび遊技効果ランプ28b,28cのうちの一部を用いて遊技状態を報知するということは、例えば、装飾ランプ25を構成する複数の発光体のうちの一部を用いてもよいということも意味する。
図24は、音声制御コマンドの内容の一例を示す説明図である。音声制御コマンドもMODEとEXTの2バイト構成である。図24に示す例において、コマンドA0XX(H)(X=4ビットの任意の値)は、特別図柄の変動期間における音発生パターンを指定する音声制御コマンドである。コマンド93XX(H)〜96XX(H)は、大当り遊技開始から大当り遊技終了までの間における音発生パターンを指定する音声制御コマンドである。その他のコマンドは、特別図柄の変動および大当り遊技に関わらない音声制御コマンドである。音声制御基板70の音声制御手段は、主基板31の遊技制御手段から上述した音声制御コマンドを受信すると図24に示された内容に応じて音声出力状態を変更する。
図25は、CPU56が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。図25に示す特別図柄プロセス処理は、図18のフローチャートにおけるステップS25の具体的な処理である。CPU56は、特別図柄プロセス処理を行う際に、変動短縮タイマ減算処理(ステップS310)を行った後に、内部状態に応じて、図25に示すステップS300〜S309のうちのいずれかの処理を行う。
ステップS310の変動短縮タイマ減算処理では、特別図柄の変動時間短縮の条件を満たしているか否か(例えば、始動入賞検出時から、その始動入賞にもとづく処理が実行されるまでに所定時間が経過しているか否か)を確認するための変動短縮タイマを減算する処理が行われる。そして、ステップS300〜S309の各処理において、以下のような処理が実行される。
特別図柄変動待ち処理(ステップS300):始動入賞口14(この実施の形態では可変入賞球装置15の入賞口)に打球入賞して始動口センサ17がオンするのを待つ。始動口センサ17がオンすると、始動入賞記憶数が満タンでなければ、始動入賞記憶数を+1するとともに大当り決定用乱数等を抽出する。
特別図柄判定処理(ステップS301):特別図柄の可変表示が開始できる状態になると、始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、抽出されている大当り決定用乱数の値に応じて大当りとするかはずれとするか決定する。
停止図柄設定処理(ステップS302):左右中図柄の停止図柄を決定する。
リーチ動作設定処理(ステップS303):リーチ判定用乱数の値に応じてリーチ動作するか否か決定するとともに、リーチ種類決定用乱数の値に応じてリーチ時の変動期間を決定する。
全図柄変動開始処理(ステップS304):可変表示部9において全図柄が変動開始されるように制御する。このとき、表示制御基板80に対して、左右中最終停止図柄と変動態様を指令する制御コマンドが送信される。処理を終えると、内部状態(プロセスフラグ)をステップS305に移行するように更新する。
全図柄停止待ち処理(ステップS305):所定時間が経過すると、可変表示部9において表示される全図柄が停止されるように制御する。そして、停止図柄が大当り図柄の組み合わせである場合には、内部状態(プロセスフラグ)をステップS306に移行するように更新する。そうでない場合には、内部状態をステップS300に移行するように更新する。
大入賞口開放開始処理(ステップS306):大入賞口を開放する制御を開始する。具体的には、カウンタやフラグを初期化するとともに、ソレノイド21を駆動して大入賞口を開放する。また、大当りフラグ(大当り中であることを示すフラグ)のセットを行う。処理を終えると、内部状態(プロセスフラグ)をステップS307に移行するように更新する。
大入賞口開放中処理(ステップS307):大入賞口ラウンド表示の表示制御コマンドデータを表示制御基板80に送出する制御や大入賞口の閉成条件の成立を確認する処理等を行う。最終的な大入賞口の閉成条件が成立したら、内部状態をステップS308に移行するように更新する。
特定領域有効時間処理(ステップS308):Vカウントスイッチ22の通過の有無を監視して、大当り遊技状態継続条件の成立を確認する処理を行う。大当り遊技状態継続の条件が成立し、かつ、まだ残りラウンドがある場合には、内部状態をステップS306に移行するように更新する。また、所定の有効時間内に大当り遊技状態継続条件が成立しなかった場合、または、全てのラウンドを終えた場合には、内部状態をステップS309に移行するように更新する。
大当り終了処理(ステップS309):大当り遊技状態が終了したことを遊技者に報知するための表示を行う。その表示が終了したら、内部状態をステップS300に移行するように更新する。
上述したように、始動入賞口14に打球が入賞すると、CPU56は、特別図柄プロセス処理において、大当りとするかはずれとするか、停止図柄、リーチ態様、確変とするかしないかを決定するが、その決定に応じた表示制御コマンド等の制御コマンドを、表示制御手段等の電気部品制御手段に送出する。例えば表示制御手段では、主基板31からの表示制御コマンドに応じて可変表示部9の表示制御が行われる。また、遊技の進行に応じて、表示制御基板80、ランプ制御基板35および音声制御基板70に制御コマンドを送出する。コマンド送出方法はすでに述べたとおりである。
図26は、図18に示された遊技制御処理におけるスイッチ処理(ステップS21)の賞球制御に関連する部分を示すフローチャートである。スイッチ処理において、CPU56は、球切れスイッチ187によって球切れを検出すると球切れ状態フラグをセットする(ステップS121,S122)。また、球切れスイッチ187によって球切れでないことを検出すると球切れ状態フラグをリセットする(ステップS121,S123)。
次いで、満タンスイッチ48によって下皿満タンを検出すると満タンフラグをセットする(ステップS124,S125)。また、満タンスイッチ48によって下皿満タンでないことを検出すると満タンフラグをリセットする(ステップS124,S126)。
さらに、カウントスイッチ23がオンしたことを検出すると、15個カウンタを+1し(ステップS131,S132)、入賞口スイッチ19a,24aのいずれかがオンしたことを検出すると、10個カウンタを+1し(ステップS133,S134)、始動口スイッチ17がオンしたことを検出すると6個カウンタを+1する(ステップS135,S136)。
なお、この実施の形態では、大入賞口を経た入賞については15個の賞球を払い出し、始動入賞口14を経た入賞については6個の賞球を払い出し、その他の入賞口19,24および入賞球装置を経た入賞については10個の賞球を払い出すとする。15個カウンタは大入賞口への入賞数を計数するためのカウンタであり、10個カウンタは普通入賞口への入賞数を計数するためのカウンタであり、6個カウンタは始動入賞口への入賞数を計数するためのカウンタである。
図27は、図18に示された遊技制御処理における入賞球信号処理(ステップS31)の一例を示すフローチャートである。この例では、入賞球信号処理において、CPU56は、まず、払出停止状態であるか否か確認する(ステップS201)。払出停止状態は、払出制御基板37に対して払出停止状態指定のコマンドを送出した後の状態である。払出停止状態でなければ、上述した球切れ状態フラグまたは満タンフラグがオンになったか否かを確認する(ステップS202)。
いずれかがオン状態に変化したときには、払出停止状態指定に関するコマンド送信テーブルの設定を行う(ステップS203)。コマンド送信テーブルについては後で詳しく説明する。なお、ステップS202において、いずれか一方のフラグが既にオン状態であったときに他方のフラグがオン状態になったときには、コマンド送信テーブルの設定(ステップS203)は行われない。
また、払出停止状態であれば、球切れ状態フラグおよび満タンフラグがともにオフ状態になったか否かを確認する(ステップS204)。ともにオフ状態となったときには、払出停止解除指定に関するコマンド送信テーブルの設定を行う(ステップS205)。
次いで、CPU56は、入賞に応じた賞球個数に関する払出制御コマンドをコマンド送信テーブルに設定する制御を行う。まず、15個カウンタの値をチェックする(ステップS211)。上述したように、15個カウンタは、遊技球が大入賞口に入賞してカウントスイッチ23がオンするとカウントアップされる。15個カウンタの値が0でない場合には、15個の賞球個数指示に関するコマンド送信テーブルの設定を行う(ステップS212)。また、15個カウンタの値を−1する(ステップS213)。
15個カウンタの値が0であれば、10個カウンタの値をチェックする(ステップS215)。上述したように、10個カウンタは、遊技球が入賞口に入賞して入賞口スイッチ19a,24aがオンするとカウントアップされる。10個カウンタの値が0でない場合には、10個の賞球個数指示に関するコマンド送信テーブルの設定を行う(ステップS216)。また、15個カウンタの値を−1する(ステップS217)。
10個カウンタの値が0であれば、6個カウンタの値をチェックする(ステップS221)。上述したように、6個カウンタは、遊技球が始動入賞口に入賞して始動口スイッチ17がオンするとカウントアップされる。6個カウンタの値が0でない場合には、6個の賞球個数指示に関するコマンド送信テーブルの設定を行う(ステップS222)。また、6個カウンタの値を−1する(ステップS223)。
以上にようにして、遊技制御手段から払出制御基板37に払出制御コマンドを出力しようとするときに、コマンド送信テーブルの設定が行われる。図28(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あれば、他の7ビットが、EXTデータが格納されているテーブルのアドレスを指定するためのオフセットであることを示す。
この実施の形態では複数のコマンド送信テーブルが用意され、使用すべきコマンド送信テーブルはポインタで指定される。また、複数のコマンド送信テーブルはリングバッファとして使用される。従って、CPU56は、入賞球信号処理において、書込ポインタが指しているコマンド送信テーブルに、INTデータ、コマンドデータ1およびコマンドデータ2を設定する。そして、書込ポインタの値を更新する。1つのコマンド送信テーブルは3バイト構成であるから、具体的には、書込ポインタ値は+3される。
なお、図27に示す処理では、1回の処理について1つの払出制御コマンドに関するコマンド送信テーブル設定処理しか行われないが、複数のコマンド送信テーブルが設けられているので、複数のコマンド送信テーブル設定処理を行うように構成してもよい。例えば、複数の入賞が15個カウンタ、10個カウンタおよび6個カウンタに記憶されている場合に、1回の入賞球信号処理で、複数のコマンド送信テーブル設定処理を行ってもよい。
また、ここでは、払出制御コマンドについて説明するが、表示制御コマンド、ランプ制御コマンドおよび音声制御コマンドを送出するときにも、図28(A)に示すようなコマンド送信テーブルに、INTデータ、コマンドデータ1およびコマンドデータ2が設定される。その際にも、書込ポインタが指しているコマンド送信テーブルに、INTデータ、コマンドデータ1およびコマンドデータ2が設定される。
図28(B)INTデータの一構成例を示す説明図である。INTデータにおけるビット0は、払出制御基板37に払出制御コマンドを送出すべきか否かを示す。ビット0が「1」であるならば、払出制御コマンドを送出すべきことを示す。従って、CPU56は、入賞球信号処理において、INTデータに「01(H)」を設定する。
なお、INTデータのビット1,2,3は、それぞれ、表示制御コマンド、ランプ制御コマンド、音声制御コマンドを送出すべきか否かを示すビットであり、CPU56は、それらのコマンドを送出すべきタイミングになったら、特別図柄プロセス処理等で、ポインタが指しているコマンド送信テーブルに、INTデータ、コマンドデータ1およびコマンドデータ2を設定する。それらのコマンドを送出するときには、INTデータの該当ビットが「1」に設定され、コマンドデータ1およびコマンドデータ2にMODEデータおよびEXTデータが設定される。
図29は、図18に示された遊技制御処理におけるコマンド制御処理(ステップS27)の処理例を示すフローチャートである。コマンド制御処理は、コマンド出力処理とINT信号出力処理とを含む処理である。コマンド制御処理において、CPU56は、まず、コマンド送信テーブルのアドレス(読出ポインタの内容)をスタック等に退避する(ステップS231)。そして、読出ポインタが指していたコマンド送信テーブルのINTデータを引数1にロードする(ステップS232)。引数1は、後述するコマンド送信処理に対する入力情報になる。また、コマンド送信テーブルを指すアドレスを+1する(ステップS233)。従って、コマンド送信テーブルを指すアドレスは、コマンドデータ1のアドレスに一致する。
そこで、CPU56は、コマンドデータ1を読み出して引数2に設定する(ステップS234)。引数2も、後述するコマンド送信処理に対する入力情報になる。そして、コマンド送信処理ルーチンをコールする(ステップS235)。
図30は、コマンド送信ルーチンを示すフローチャートである。コマンド送信ルーチンにおいて、CPU56は、まず、引数1に設定されているデータすなわちINTデータを、比較値として決められているワークエリアに設定する(ステップS251)。次いで、送信回数=4を、処理数として決められているワークエリアに設定する(ステップS252)。そして、払出制御信号を出力するためのポート1(出力ポート571)のアドレスをIOアドレスにセットする(ステップS253)。
次に、CPU56は、比較値を1ビット右にシフトする(ステップS254)。シフト処理の結果、キャリービットが1になったか否か確認する(ステップS255)。キャリービットが1になったということは、INTデータにおける最も右側のビットが「1」であったことを意味する。この実施の形態では4回のシフト処理が行われるのであるが、例えば、払出制御コマンドを送出すべきことが指定されているときには、最初のシフト処理でキャリービットが1になる。
キャリービットが1になった場合には、引数2に設定されているデータ、この場合にはコマンドデータ1(すなわちMODEデータ)を、IOアドレスとして設定されているアドレスに出力する(ステップS256)。最初のシフト処理が行われたときにはIOアドレスにポート1(出力ポート571)のアドレスが設定されているので、結局、払出制御コマンドのMODEデータがポート1に出力される。
次いで、CPU56は、IOアドレスを1加算するとともに(ステップS257)、処理数を1減算する(ステップS258)。加算前にポート1を示していた場合には、IOアドレスに対する加算処理によって、IOアドレスにはポート2(出力ポート572)のアドレスが設定される。ポート2(出力ポート572)は、表示制御コマンドを出力するためのポートである。そして、CPU56は、処理数の値を確認し(ステップS259)、値が0になっていなければ、ステップS254に戻る。ステップS254で再度シフト処理が行われる。
2回目のシフト処理ではINTデータにおけるビット1の値が押し出され、ビット1の値に応じてキャリーフラグが「1」または「0」になる。従って、表示制御コマンドを送出すべきことが指定されているか否かのチェックが行われる。同様に、3回目および4回目のシフト処理によって、ランプ制御コマンドおよび音声制御コマンドを送出すべきことが指定されているか否かのチェックが行われる。このように、それぞれのシフト処理が行われるときに、IOアドレスには、シフト処理によってチェックされるコマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音声制御コマンド)に対応したIOアドレスが設定されている。よって、キャリーフラグが「1」になったときには、対応する出力ポート(ポート1〜ポート4)に制御コマンドが送出される。すなわち、1つの共通モジュールで、各電気部品制御手段に対する制御コマンドの送出処理を行うことができる。
また、このように、シフト処理のみによってどの電気部品制御手段に対して制御コマンドを出力すべきかが判定されるので、いずれの電気部品制御手段に対して制御コマンドを出力すべきか判定する処理が簡略化されている。
次に、CPU56は、シフト処理開始前のINTデータが格納されている引数1の内容を読み出し(ステップS260)、読み出したデータをポート0(出力ポート570)に出力する(ステップS261)。INTデータでは、ステップS251〜S259の処理で出力された制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音声制御コマンド)に応じたINT信号の出力ビットに対応したビットが「1」になっている。従って、ポート1〜ポート4のいずれかに出力された制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音声制御コマンド)に対応したINT信号がオン状態になる。
次いで、CPU56は、ウェイトカウンタに所定値を設定し(ステップS262)、その値が0になるまで1ずつ減算する(ステップS263,S264)。この処理は、図20に示されたBの期間を設定するための処理である。ウェイトカウンタの値が0になると、クリアデータ(00)を設定して(ステップS265)、そのデータをポート0に出力する(ステップS266)。よって、INT信号はオフ状態になる。そして、ウェイトカウンタに所定値を設定し(ステップS262)、その値が0になるまで1ずつ減算する(ステップS268,S269)。この処理は、図20に示されたCの期間を設定するための処理である。
従って、ステップS267でウェイトカウンタに設定される値は、Cの期間が、制御コマンド受信対象となる全ての電気部品制御手段が確実にコマンド受信処理を行うのに十分な期間になるような値である。また、ウェイトカウンタに設定される値は、Cの期間が、ステップS251〜S259の処理に要する時間よりも長くなるような値である。
以上のようにして、制御コマンドの1バイト目のMODEデータが送出される。そこで、CPU56は、図29に示すステップS236で、コマンド送信テーブルを指す値を1加算する。従って、3バイト目のコマンドデータ2の領域が指定される。CPU56は、指し示されたコマンドデータ2の内容を引数2にロードする(ステップS237)。また、コマンドデータ2のビット7(ワークエリア参照ビット)の値が「0」であるか否か確認する(ステップS239)。0でなければ、コマンド拡張データアドレステーブルの先頭アドレスをポインタにセットし(ステップS239)、そのポインタにコマンドデータ2のビット6〜ビット0の値を加算してアドレスを算出する(ステップS240)。そして、そのアドレスが指すエリアのデータを引数2にロードする(ステップS241)。
コマンド拡張データアドレステーブルには、電気部品制御手段に送出されうるEXTデータが順次設定されている。よって、以上の処理によって、ワークエリア参照ビットの値が「1」であれば、コマンドデータ2の内容に応じたコマンド拡張データアドレステーブル内のEXTデータが引数2にロードされ、ワークエリア参照ビットの値が「0」であれば、コマンドデータ2の内容がそのまま引数2にロードされる。なお、コマンド拡張データアドレステーブルからEXTデータが読み出される場合でも、そのデータのビット7は「0」である。
次に、CPU56は、コマンド送信ルーチンをコールする(ステップS242)。従って、MODEデータの送出の場合と同様のタイミングでEXTデータが送出される。その後、CPU56は、コマンド送信テーブルのアドレスを復帰し(ステップS243)、コマンド送信テーブルを指す読出ポインタの値を更新する(ステップS244)。1つのコマンド送信テーブルは3バイト構成であるから、具体的には、読出ポインタの値は+3される。
以上のようにして、2バイト構成の制御コマンド(払出制御コマンド、表示制御コマンド、ランプ制御コマンド、音声制御コマンド)が、対応する電気部品制御手段に送信される。電気部品制御手段ではINT信号の立ち下がりを検出すると制御コマンドの取り込み処理を開始するのであるが、いずれの電気部品制御手段についても、取り込み処理が完了する前に遊技制御手段からの新たな信号が信号線に出力されることはない。すなわち、各電気部品制御手段において、確実なコマンド受信処理が行われる。なお、各電気部品制御手段は、INT信号の立ち上がりで制御コマンドの取り込み処理を開始してもよい。また、INT信号の極性を図20に示された場合と逆にしてもよい。
また、この実施の形態では、複数のコマンド送信テーブルがリングバッファとして用いられ、図29に示すコマンド制御処理では、読出ポインタが指しているコマンド送信テーブルを対象としてコマンド出力制御が行われ、コマンド送信テーブルにデータを設定する処理、例えば、図27に示す入賞球信号処理では、書込ポインタが指すコマンド送信テーブルを対象としてコマンド設定処理が行われる。従って、同時に複数のコマンド送出要求が発生しても、それらの要求にもとづくコマンド出力処理は問題なく実行される。
次に、電気部品制御手段におけるコマンド受信処理等を説明する。ここでは、払出制御手段おけるコマンド受信処理等について説明する。
図31は、払出制御用CPU371周りの一構成例を示すブロック図である。図31に示すように、第1の電源監視回路(第1の電源監視手段)からの電圧低下信号が、バッファ回路960を介して払出制御用CPU371のマスク不能割込端子(XNMI端子)に接続されている。第1の電源監視回路は、遊技機が使用する各種直流電源のうちのいずれかの電源の電圧を監視して電源電圧低下を検出する回路である。この実施の形態では、VSLの電源電圧を監視して電圧値が所定値以下になるとローレベルの電圧低下信号を発生する。VSLは、遊技機で使用される直流電圧のうちで最大のものであり、この例では+30Vである。従って、払出制御用CPU371は、割込処理によって電源断の発生を確認することができる。
この実施の形態で用いられる払出制御用CPU371も、主基板31のCPU56と同様に、PIOおよびCTCを内蔵している。ただし、この実施の形態では内蔵PIOを使用しない。その場合には、例えば、全ポートを入力モードとして、全ポートをグラウンドレベルに接続する。
また、主基板31のCPU56と同様に、払出制御用CPU371も、割込モード0〜2のいずれかに設定可能であり、CTCは、以下に説明するようなタイマモードまたはカウンタモードで動作可能である。また、CTCは4つのチャネルを有している。具体的には、4個のタイマカウンタレジスタCLK/TRG0〜3(チャネル0〜3のカウンタ)を有する。動作モードは、チャネル毎に設定可能である。
各タイマカウンタレジスタCLK/TRG0〜3の値は、対応するCLK/TRG端子に入力されるクロック信号に応じてカウントダウンされ、カウント値が0になると割込を発生することができる。従って、CTCのチャネル0〜3は、それぞれ割込発生部となることができる。チャネル0の優先順位が最も高く、以下、順次優先順位が下がる。すなわち、複数のタイマカウンタレジスタCLK/TRGのカウント値が同時に0になった場合には、番号が小さいチャネルが優先され、それらのチャネルが割込を発生するように設定されていれば、番号が小さいチャネルからの割込が先に受け付けられる。
この実施の形態では、内蔵CTCのチャネル3がタイマモードで使用され、チャネル2がカウンタモードで使用される。また、チャネル3はタイマ割込の発生源として使用され、チャネル2は払出制御コマンド受信用として使用される。
カウンタモード:払出制御用CPU371のCLK/TRG端子にクロック信号の立上がりまたは立下がりが入力されるとカウント値を−1する。そのチャネルに対して割込発生許可が設定されている場合には、カウント値が0になると割込を発生するとともに、初期値をカウンタに再ロードする。また、割込ベクタの設定がなされていれば、カウント値が0になったときに、内部データバス上に割込ベクタを送出する。
タイマモード:システムクロック(内部クロック)を1/16分周または1/256分周したクロック信号にもとづいてカウント値を−1する。そのチャネルに対して割込発生許可が設定されている場合には、カウント値が0になると割込を発生するとともに、初期値をカウンタに再ロードする。また、割込ベクタの設定がなされていれば、カウント値が0になったときに、内部データバス上に割込ベクタを送出する。
払出制御用CPU371のCLK/TRG2端子には、主基板31からのINT信号(払出制御信号INT)が接続されている。CLK/TRG2端子にクロック信号が入力されると、払出制御用CPU371に内蔵されているタイマカウンタレジスタCLK/TRG2(CTCのチャネル2のカウンタ)の値がダウンカウントされる。そして、レジスタ値が0になると割込が発生する。従って、図32に示すように、タイマカウンタレジスタCLK/TRG2の初期値を「1」に設定しておけば、INT信号の入力に応じてレジスタ値が0になって割込が発生することになる。
払出制御基板37には、システムリセット回路975も搭載されているが、この実施の形態では、システムリセット回路975は、第2の電源監視回路(第2の電源監視手段)も兼ねている。すなわち、リセットIC976は、電源投入時に、外付けのコンデンサに容量で決まる所定時間だけ出力をローレベルとし、所定時間が経過すると出力をハイレベルにする。また、リセットIC976は、電源基板910に搭載されている第1の電源監視回路が監視する電源電圧と等しい電源電圧であるVSLの電源電圧を監視して電圧値が所定値(例えば+9V)以下になるとローレベルの電圧低下信号を発生する。従って、電源断時には、リセットIC976からの電圧低下信号がローレベルになることによって払出制御用CPU371がシステムリセットされる。なお、図31に示すように、電圧低下信号はリセット信号と同じ出力信号である。
リセットIC976が電源断を検知するための所定値は、通常時の電圧より低いが、払出制御用CPU371が暫くの間動作しうる程度の電圧である。また、リセットIC976が、払出制御用CPU371が必要とする電圧(この例では+5V)よりも高い電圧を監視するように構成されているので、払出制御用CPU371が必要とする電圧に対して監視範囲を広げることができる。従って、より精密な監視を行うことができる。
+5V電源から電力が供給されていない間、払出制御用CPU371の内蔵RAMの少なくとも一部は、電源基板から供給されるバックアップ電源がバックアップ端子に接続されることによってバックアップされ、遊技機に対する電源が断しても内容は保存される。そして、+5V電源が復旧すると、システムリセット回路975からリセット信号が発せられるので、払出制御用CPU371は、通常の動作状態に復帰する。そのとき、必要なデータがバックアップされているので、停電等からの復旧時には停電発生時の遊技状態に復帰することができる。
以上のように、この実施の形態では、電源基板910に搭載されている第1の電源監視回路が、遊技機で使用される直流電圧のうちで最も高い電源VSLの電圧を監視して、その電源の電圧が所定値を下回ったら電圧低下信号(電源断検出信号)を発生する。電源断検出信号が出力されるタイミングでは、IC駆動電圧は、まだ各種回路素子を十分駆動できる電圧値になっている。従って、IC駆動電圧で動作する払出制御基板37の払出制御用CPU371が所定の電力供給停止時処理を行うための動作時間が確保されている。
なお、ここでも、第1の電源監視回路は、遊技機で使用される直流電圧のうちで最も高い電源VSLの電圧を監視することになるが、電源断検出信号を発生するタイミングが、IC駆動電圧で動作する電気部品制御手段が所定の電力供給停止時処理を行うための動作時間が確保されるようなタイミングであれば、監視対象電圧は、最も高い電源VSLの電圧でなくてもよい。すなわち、少なくともIC駆動電圧よりも高い電圧を監視すれば、電気部品制御手段が所定の電力供給停止時処理を行うための動作時間が確保されるようなタイミングで電源断検出信号を発生することができる。
その場合、上述したように、監視対象電圧は、賞球カウントスイッチ301A等の遊技機の各種スイッチに供給される電圧が+12Vであることから、電源断時のスイッチオン誤検出の防止も期待できる電圧であることが好ましい。すなわち、スイッチに供給される電圧(スイッチ電圧)である+12V電源電圧が落ち始める以前の段階で、電圧低下を検出できることが好ましい。よって、少なくともスイッチ電圧よりも高い電圧を監視することが好ましい。
なお、図31に示された構成では、システムリセット回路975は、電源投入時に、コンデンサの容量で決まる期間のローレベルを出力し、その後ハイレベルを出力する。すなわち、リセット解除タイミングは1回だけである。しかし、図11に示された主基板31の場合と同様に、複数回のリセット解除タイミングが発生するような回路構成を用いてもよい。
図33は、払出制御用CPU371のメイン処理を示すフローチャートである。メイン処理では、払出制御用CPU371は、まず、必要な初期設定を行う(ステップS701)。
図34は、ステップS701の初期設定処理を示すフローチャートである。初期設定処理において、払出制御用CPU371は、まず、割込禁止に設定する(ステップS701a)。次に、払出制御用CPU371は、割込モードを割込モード2に設定し(ステップS701b)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS701c)。また、払出制御用CPU371は、内蔵デバイスレジスタの初期化を行い(ステップS701d)、CTCおよびPIOの初期化(ステップS701e)を行った後に、RAMをアクセス可能状態に設定する(ステップS701f)。
この実施の形態では、内蔵CTCのうちの一つのチャネルがタイマモードで使用される。従って、ステップS701dの内蔵デバイスレジスタの設定処理およびステップS701eの処理において、使用するチャネルをタイマモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。そして、そのチャネルによる割込が上述したタイマ割込として用いられる。なお、タイマ割込を例えば2ms毎に発生させたい場合は、初期値として2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。
なお、タイマモードに設定されたチャネル(この実施の形態ではチャネル3)に設定される割込ベクタは、タイマ割込処理の先頭番地に相当するものである。具体的は、Iレジスタに設定された値と割込ベクタとでタイマ割込処理の先頭番地が特定される。タイマ割込処理ではタイマ割込フラグがセットされ、メイン処理でタイマ割込フラグがセットされていることが検知されると、払出制御処理が実行される。すなわち、タイマ割込処理では、電気部品制御処理の一例である払出制御処理を実行するための設定がなされる。
また、内蔵CTCのうちの他の一つのチャネル(この実施の形態ではチャネル2)が、遊技制御手段からの払出制御コマンド受信のための割込発生用のチャネルとして用いられ、そのチャネルがカウンタモードで使用される。従って、ステップS701dの内蔵デバイスレジスタの設定処理およびステップS701eの処理において、使用するチャネルをカウンタモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。
カウンタモードに設定されたチャネル(チャネル2)に設定される割込ベクタは、後述するコマンド受信割込処理の先頭番地に相当するものである。具体的は、Iレジスタに設定された値と割込ベクタとでコマンド受信割込処理の先頭番地が特定される。
この実施の形態では、払出制御用CPU371でも割込モード2が設定される。従って、内蔵CTCのカウントアップにもとづく割込処理を使用することができる。また、CTCが送出した割込ベクタに応じた割込処理開始番地を設定することができる。
CTCのチャネル2(CH2)のカウントアップにもとづく割込は、上述したタイマカウンタレジスタCLK/TRG2の値が「0」になったときに発生する割込である。従って、例えばステップS701eにおいて、特定レジスタとしてのタイマカウンタレジスタCLK/TRG2に初期値「1」が設定される。また、CTCのチャネル3(CH3)のカウントアップにもとづく割込は、CPUの内部クロック(システムクロック)をカウントダウンしてレジスタ値が「0」になったら発生する割込であり、後述する2msタイマ割込として用いられる。具体的には、CH3のレジスタ値はシステムクロックの1/256周期で減算される。ステップS701eにおいて、CH3のレジスタには、初期値として2msに相当する値が設定される。なお、この実施の形態では、CH2に関する割込番地は0074Hであり、CH3に関する割込番地は0076Hである。
上述したように、CTCのCH2のカウントアップにもとづく割込は、CH3のカウントアップにもとづく割込よりも優先順位が高い。従って、同時にカウントアップが生じた場合に、CH2のカウントアップにもとづく割込、すなわち、後述するコマンド受信割込処理の実行契機となる割込の方が優先される。
そして、払出制御用CPU371は、払出制御用のバックアップRAM領域にバックアップデータが存在しているか否かの確認を行う(ステップS702)。すなわち、例えば、主基板31のCPU56の処理と同様に、電源断時にセットされるバックアップフラグがセット状態になっているか否かによって、バックアップデータが存在しているか否か確認する。バックアップフラグがセット状態になっている場合には、バックアップデータありと判断する。バックアップデータなしと判断された場合には、前回の電源オフ時に未払出の遊技球がなかったことになり、内部状態を電源断時の状態に戻す必要がない。従って、払出制御用CPU371は、停電復旧時でない電源投入時に実行される初期化処理を実行する(ステップS702,S703)。
バックアップRAM領域にバックアップデータが存在している場合には、払出制御用CPU371は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS704)。不測の電源断が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されていたはずであるから、チェック結果は正常になる。チェック結果が正常でない場合には、内部状態を電源断時の状態に戻すことができないので、停電復旧時でない電源投入時に実行される初期化処理を実行する(ステップS705,S703)。
チェック結果が正常であれば、払出制御用CPU371は、内部状態を電源断時の状態に戻すための払出状態復旧処理を行う(ステップS706)。そして、バックアップRAM領域に保存されていたPC(プログラムカウンタ)の指すアドレスに復帰する(ステップS707)。
通常の初期化処理の実行(ステップS703)を終えると、払出制御用CPU371により実行されるメイン処理は、タイマ割込フラグの監視(ステップS708)の確認が行われるループ処理に移行する。
なお、この実施の形態では、ステップS702でバックアップデータの有無が確認された後、バックアップデータが存在する場合にステップS704でバックアップ領域のチェックが行われたが、逆に、バックアップ領域のチェック結果が正常であったことが確認された後に、バックアップデータの有無の確認が行われるようにしてもよい。また、バックアップデータの有無の確認、またはバックアップ領域のチェックの何れか一方を確認することによって、停電復旧処理を実行するか否かを判断するように構成してもよい。
また、例えば停電復旧処理を実行するか否か判断する場合のパリティチェック(ステップS704)の際などに、すなわち、遊技状態を復旧するか否か判断する際に、保存されていたRAMデータにおける払出遊技球数データ等によって、遊技機が払出待機状態(払出途中でない状態)であることが確認されたら、払出状態復旧処理を行わずに初期化処理を実行するようにしてもよい。
通常の初期化処理では、図35に示すように、レジスタおよびRAMのクリア処理(ステップS901)が行われ、所定の初期値の設定が行われる(ステップS902)。そして、初期設定処理(ステップS701a)において割込禁止とされているので、初期化処理を終える前に割込が許可される(ステップS903)。
この実施の形態では、払出制御用CPU371のCTCのCH3が繰り返しタイマ割込を発生するように設定される。また、繰り返し周期は2msに設定される。そして、図36に示すように、タイマ割込が発生すると、払出制御用CPU371は、タイマ割込フラグをセットする(ステップS711)。なお、図36には割込を許可することも明示されているが(ステップS710)、2msタイマ割込処理では、最初に割込許可状態に設定される。すなわち、2msタイマ割込処理中には割込許可状態になっている。
払出制御用CPU371は、ステップS708において、タイマ割込フラグがセットされたことを検出すると、タイマ割込フラグをリセットするとともに(ステップS709)、払出制御処理を実行する(ステップS710)。以上の制御によって、この実施の形態では、払出制御処理は2ms毎に起動されることになる。なお、この実施の形態では、タイマ割込処理ではフラグセットのみがなされ、払出制御処理はメイン処理において実行されるが、タイマ割込処理で払出制御処理を実行してもよい。
払出制御用CPU371は、電源投入時に、バックアップRAM領域のデータを確認するだけで、通常の初期設定処理を行うのか払出中の状態を復元するのか決定できる。すなわち、簡単な判断によって、未払出の遊技球について払出処理再開を行うことができる。さらに、この実施の形態では、主基板31における遊技制御と同様に、パリティチェックコードによって記憶内容保存の確実化が図られている。
図37は、払出制御用CPU371が内蔵するRAMの使用例を示す説明図である。この例では、バックアップRAM領域に総合個数記憶(例えば2バイト)および貸し球個数記憶が形成されている。総合個数記憶は、主基板31の側から指示された払出個数の総数を記憶するものである。貸し球個数記憶は、未払出の球貸し個数を記憶するものである。
図38は、主基板31から受信した払出制御コマンドを格納するための受信バッファの一構成例を示す説明図である。この例では、2バイト構成の払出制御コマンドを6個格納可能なリングバッファ形式の受信バッファが用いられる。従って、受信バッファは、確定コマンドバッファ1〜12の12バイトの領域で構成される。そして、受信したコマンドをどの領域に格納するのかを示すコマンド受信個数カウンタが用いられる。コマンド受信個数カウンタは、0〜11の値をとる。
図39は、割込処理による払出制御コマンド受信処理を示すフローチャートである。主基板31からの払出制御用のINT信号は払出制御用CPU371のCLK/TRG2端子に入力されている。よって、主基板31からのINT信号がオン状態になると、初期値として「1」が設定されていたタイマカウンタレジスタCLK/TRG2の値が0になって払出制御用CPU371において割込がかかる。そして、図38に示す払出制御コマンドの受信処理が開始される。なお、払出制御コマンド受信処理の開始番地は、内蔵CTCから出力される割込ベクタとIレジスタに設定された値とで決定される番地である。また、タイマカウンタレジスタCLK/TRG2の値が0になると、その値は自動的に初期値(この例では「1」)に戻される。
払出制御コマンドの受信処理において、払出制御用CPU371は、まず、各レジスタをスタックに退避する(ステップS850)。なお、割込が発生するとCPU371は自動的に割込禁止状態に設定するが、自動的に割込禁止状態にならないCPUを用いている場合には、ステップS850の処理の実行前に割込禁止命令(DI命令)を発行することが好ましい。次いで、払出制御コマンドデータの入力に割り当てられている入力ポート372aからデータを読み込む(ステップS851)。そして、2バイト構成の払出制御コマンドのうちの1バイト目であるか否か確認する(ステップS852)。1バイト目であるか否かは、受信したコマンドの先頭ビットが「1」であるか否かによって確認される。先頭ビットが「1」であるのは、2バイト構成である払出制御コマンドのうちのMODEバイト(1バイト目)のはずである(図19参照)。そこで、払出制御用CPU371は、先頭ビットが「1」であれば、有効な1バイト目を受信したとして、受信したコマンドを受信バッファ領域におけるコマンド受信個数カウンタが示す確定コマンドバッファに格納する(ステップS853)。
払出制御コマンドのうちの1バイト目でなければ、1バイト目を既に受信したか否か確認する(ステップS854)。既に受信したか否かは、受信バッファ(確定コマンドバッファ)に有効なデータが設定されているか否かによって確認される。
1バイト目を既に受信している場合には、受信した1バイトのうちの先頭ビットが「0」であるか否か確認する。そして、先頭ビットが「0」であれば、有効な2バイト目を受信したとして、受信したコマンドを、受信バッファ領域におけるコマンド受信個数カウンタ+1が示す確定コマンドバッファに格納する(ステップS855)。先頭ビットが「0」であるのは、2バイト構成である払出制御コマンドのうちのEXTバイト(2バイト目)のはずである(図19参照)。なお、ステップS854における確認結果が1バイト目を既に受信したである場合には、2バイト目として受信したデータのうちの先頭ビットが「0」でなければ処理を終了する。
ステップS855において、2バイト目のコマンドデータを格納すると、コマンド受信個数カウンタに2を加算する(ステップS856)。そして、コマンド受信カウンタが12以上であるか否か確認し(ステップS857)、12以上であればコマンド受信個数カウンタをクリアする(ステップS858)。その後、退避されていたレジスタを復帰し(ステップS859)、割込許可に設定する(ステップS859)。
コマンド受信割込処理中は割込禁止状態になっている。上述したように、2msタイマ割込処理中は割込許可状態になっているので、2msタイマ割込中にコマンド受信割込が発生した場合には、コマンド受信割込処理が優先して実行される。また、コマンド受信割込処理中に2msタイマ割込が発生しても、その割込処理は待たされる。このように、この実施の形態では、主基板31からのコマンド受信処理の処理優先度が高くなっている。また、コマンド受信処理中には他の割込処理が実行されないので、コマンド受信処理に要する最長時間は決まる。コマンド受信処理中に他の割込処理が実行可能であるように構成したのでは、コマンド受信処理に要する最長の時間を見積もることは困難である。コマンド受信処理に要する最長時間が決まるので、遊技制御手段のコマンド送出処理におけるCの期間(図20参照)をどの程度にすればよいのかを正確に判断することができる。
また、払出制御コマンドは2バイト構成であって、1バイト目(MODE)と2バイト目(EXT)とは、受信側で直ちに区別可能に構成されている。すなわち、先頭ビットによって、MODEとしてのデータを受信したのかEXTとしてのデータを受信したのかを、受信側において直ちに検出できる。よって、上述したように、適正なデータを受信したのか否かを容易に判定することができる。
図40は、ステップS710の払出制御処理を示すフローチャートである。払出制御処理において、払出制御用CPU371は、まず、中継基板72を介して入力ポート372bに入力される賞球カウントスイッチ301A、球貸しカウントスイッチ301Bがオンしたか否かを判定する(スイッチ処理:ステップS751)。
次に、払出制御用CPU371は、センサ(例えば、払出モータ289の回転数を検出するモータ位置センサ)からの信号入力状態を確認してセンサの状態を判定する等の処理を行う(入力判定処理:ステップS752)。払出制御用CPU371は、さらに、受信した払出制御コマンドを解析し、解析結果に応じた処理を実行する(コマンド解析実行処理:ステップS753)。
次いで、払出制御用CPU371は、主基板31から払出停止指示コマンドを受信していたら払出停止状態に設定し、払出開始指示コマンドを受信していたら払出停止状態の解除を行う(ステップS754)。また、プリペイドカードユニット制御処理を行う(ステップS755)。
次いで、払出制御用CPU371は、球貸し要求に応じて貸し球を払い出す制御を行う(ステップS756)。さらに、払出制御用CPU371は、総合個数記憶に格納された個数の賞球を払い出す賞球制御処理を行う(ステップS757)。そして、払出制御用CPU371は、出力ポート372cおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に対して駆動信号を出力し、ステップS756の球貸し制御処理またはステップS757の賞球制御処理で設定された回転数分払出モータ289を回転させる払出モータ制御処理を行う(ステップS758)。
なお、この実施の形態では、払出モータ289としてステッピングモータが用いられ、払出モータ289を制御するために1−2相励磁方式が用いられる。従って、具体的には、払出モータ制御処理において、8種類の励磁パターンデータが繰り返し払出モータ289に出力される。また、この実施の形態では、各励磁パターンデータが4msずつ出力される。
次いで、エラー検出処理が行われ、その結果に応じてエラー表示LED374に所定の表示を行う(エラー処理:ステップS759)。検出されるエラーとして、例えば、次の8種類がある。
賞球経路エラー:賞球払出動作終了したとき、または払出モータ289が1回転したときに賞球カウントスイッチ301Aが1個も遊技球の通過を検出しなかったとき。エラー表示LED374に「0」が表示される。
球貸し経路エラー:球貸しの払出動作終了したとき、または払出モータ289が1回転したときに球貸しカウントスイッチ301Bが1個も遊技球の通過を検出しなかったとき。エラー表示LED374に「1」が表示される。
賞球カウントスイッチ球詰まりエラー:賞球カウントスイッチ301Aが0.5秒以上オンを検出したとき。エラー表示LED374に「2」が表示される。
球貸しカウントスイッチ球詰まりエラー:球貸しカウントスイッチ301Bが0.5秒以上オンを検出したとき。エラー表示LED374に「3」が表示される。
払出モータ球噛みエラー:払出モータ289が正常に回転しないとき。具体的には、払出モータ位置センサのオンが所定期間以上継続したり、オフが所定期間以上継続した場合。エラー表示LED374に「4」が表示される。なお、払出モータ球噛みエラーが生じた場合には、払出制御用CPU371は、50msの基準励磁相の出力を行った後、1−2相励磁の励磁パターンデータのうちの4種類の励磁パターンデータを8ms毎に出力することによる払出モータ289の逆回転と正回転を繰り返す。
プリペイドカードユニット未接続エラー:VL信号のオフが検出されたとき。エラー表示LED374に「5」が表示される。
プリペイドカードユニット通信エラー:規定のタイミング以外でプリペイドカードユニット50から信号出力されたことを検出したとき。エラー表示LED374に「6」が表示される。
払出停止状態:主基板31から払出停止を示す払出制御コマンドを受信したとき。エラー表示LED374に「7」が表示される。なお、主基板31から払出開始を示す払出制御コマンドを受信したときには、その時点から2002ms後に、払出停止状態から払出可能状態に復帰する。
さらに、外部接続端子(図示せず)から出力する情報信号を制御する処理を行う(出力処理:ステップS760)。なお、情報信号は、貸し球の払出一単位(例えば25個)ごとに所定時間オンとなり、続いて所定時間オフを出力する信号である。
図41は、ステップ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)。
図42は、ステップS753のコマンド解析実行処理の一例を示すフローチャートである。コマンド解析実行処理において、払出制御用CPU371は、確定コマンドバッファ領域中に受信コマンドがあるか否かの確認を行う(ステップS753a)。受信コマンドがあれば、受信した払出制御コマンドが払出個数指示コマンドであるか否かの確認を行う(ステップS753b)。なお、確定コマンドバッファ領域中に複数の受信コマンドがある場合には、受信した払出制御コマンドが払出個数指示コマンドであるか否かの確認は、最も前に受信された受信された受信コマンドについて行われる。
受信した払出制御コマンドが払出個数指示コマンドであれば、払出個数指示コマンドで指示された個数を総合個数記憶に加算する(ステップS753c)。すなわち、払出制御用CPU371は、主基板31のCPU56から送られた払出個数指示コマンドに含まれる賞球数をバックアップRAM領域(総合個数記憶)に記憶する。
なお、払出制御用CPU371は、必要ならば、コマンド受信個数カウンタの減算や確定コマンドバッファ領域における受信コマンドシフト処理を行う。
図43は、ステップS754の払出停止状態設定処理の一例を示すフローチャートである。払出停止状態設定処理において、払出制御用CPU371は、確定コマンドバッファ領域中に受信コマンドがあるか否かの確認を行う(ステップS754a)。確定コマンドバッファ領域中に受信コマンドがあれば、受信した払出制御コマンドが払出停止指示コマンドであるか否かの確認を行う(ステップS754b)。払出停止指示コマンドであれば、払出制御用CPU371は、払出停止状態に設定する(ステップS754c)。
ステップS754bで受信コマンドが払出停止指示コマンドでないことを確認すると、受信した払出制御コマンドが払出開始指示コマンドであるか否かの確認を行う(ステップS754d)。払出開始指示コマンドであれば、払出停止状態を解除する(ステップS754e)。
図44は、ステップS755のプリペイドカードユニット制御処理の一例を示すフローチャートである。プリペイドカードユニット制御処理において、払出制御用CPU371は、カードユニット制御用マイクロコンピュータより入力される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)。
図45および図46は、ステップS756の球貸し制御処理の一例を示すフローチャートである。なお、この実施の形態では、連続的な払出数の最大値を貸し球の一単位(例えば25個)とするが、連続的な払出数の最大値は他の数であってもよい。
球貸し制御処理において、払出制御用CPU371は、貸し球払出中であるか否かの確認を行い(ステップS511)、貸し球払出中であれば図46に示す球貸し中の処理に移行する。なお、貸し球払出中であるか否かは、後述する球貸し処理中フラグの状態によって判断される。貸し球払出中でなければ、賞球の払出中であるか否か確認する(ステップS512)。賞球の払出中であるか否は、後述する賞球処理中フラグの状態によって判断される。
貸し球払出中でも賞球払出中でもなければ、払出制御用CPU371は、カードユニット50から球貸し要求があったか否かを確認する(ステップS513)。要求があれば、球貸し処理中フラグをオンするとともに(ステップS514)、25(球貸し一単位数:ここでは100円分)をバックアップRAM領域の貸し球個数記憶に設定する(ステップS515)。そして、払出制御用CPU371は、EXS信号をオンする(ステップS516)。また、球払出装置97の下方の球振分部材311を球貸し側に設定するために振分用ソレノイド310を駆動する(ステップS517)。さらに、払出モータ289をオンして(ステップS518)、図46に示す球貸し中の処理に移行する。
なお、払出モータ289をオンするのは、厳密には、カードユニット50が受付を認識したことを示すためにBRQ信号をOFFとしてからである。なお、球貸し処理中フラグはバックアップRAM領域に設定される。
図46は、払出制御用CPU371による払出制御処理における球貸し中の処理を示すフローチャートである。球貸し処理では、払出モータ289がオンしていなければオンする。なお、この実施の形態では、ステップS751のスイッチ処理で、球貸しカウントスイッチ301Bの検出出力による遊技球の払出がなされたか否かの確認を行うので、球貸し制御処理では貸し球個数記憶の減算などは行われない。球貸し制御処理において、払出制御用CPU371は、貸し球通過待ち時間中であるか否かの確認を行う(ステップS519)。貸し球通過待ち時間中でなければ、貸し球の払出を行い(ステップS520)、払出モータ289の駆動を終了すべきか(一単位の払出動作が終了したか)否かの確認を行う(ステップS521)。具体的には、所定個数の払出に対応した回転が完了したか否かを確認する。所定個数の払出に対応した回転は、払出モータ位置センサの出力によって監視される。所定個数の払出に対応した回転が完了した場合には、払出制御用CPU371は、払出モータ289の駆動を停止し(ステップS522)、貸し球通過待ち時間の設定を行う(ステップS523)。
なお、ステップS520の球貸し処理では、払出モータ位置センサのオンとオフとがタイマ監視されるが、所定時間以上のオン状態またはオフ状態が継続したら、払出制御用CPU371は、払出モータ球噛みエラーが生じたと判断する。
ステップS519で貸し球通過待ち時間中であれば、払出制御用CPU371は、貸し球通過待ち時間が終了したか否かの確認を行う(ステップS524)。貸し球通過待ち時間は、最後の払出球が払出モータ289によって払い出されてから球貸しカウントスイッチ301Bを通過するまでの時間である。貸し球通過待ち時間の終了を確認すると、一単位の貸し球は全て払い出された状態であるので、カードユニット50に対して次の球貸し要求の受付が可能になったことを示すためにEXS信号をオフにする(ステップS525)。また、振分ソレノイドをオフするとともに(ステップS526)、球貸し処理中フラグをオフする(ステップS527)。なお、貸し玉通過待ち時間が経過するまでに最後の払出球が球貸しカウントスイッチ301Bを通過しなかった場合には、球貸し経路エラーとされる。また、この実施の形態では、賞球も球貸しも同じ払出装置で行われる。
なお、球貸し要求の受付を示すEXS信号をオフにした後、所定期間内に再び球貸し要求信号であるBRQ信号がオンしたら、振分ソレノイドおよび払出モータをオフせずに球貸し処理を続行するようにしてもよい。すなわち、所定単位(この例では100円単位)毎に球貸し処理を行うのではなく、球貸し処理を連続して実行するように構成することもできる。
貸し球個数記憶の内容は、遊技機の電源が断しても、所定期間電源基板910のバックアップ電源によって保存される。従って、所定期間中に電源が回復すると、払出制御用CPU371は、貸し球個数記憶の内容にもとづいて球貸し処理を継続することができる。
図47および図48は、ステップS757の賞球制御処理の一例を示すフローチャートである。なお、この例では、連続的な払出数の最大値を貸し球の一単位と同数(例えば25個)とするが、連続的な払出数の最大値は他の数であってもよい。
賞球制御処理において、払出制御用CPU371は、貸し球払出中であるか否か確認する(ステップS531)。貸し球払出中であるか否かは、球貸し処理中フラグの状態によって判断される。貸し球払出中でなければ賞球の払出中であるか否か確認し(ステップS532)、賞球の払出中であれば図48に示す賞球中の処理に移行する。賞球の払出中であるか否かは、後述する賞球処理中フラグの状態によって判断される。
貸し球払出中でも賞球払出中でもなければ、払出制御用CPU371は、カードユニット50からの球貸し準備要求があるか否か確認する(ステップS533)。球貸し準備要求があるか否かは、カードユニット50から入力されるBRDY信号のオン(要求あり)またはオフ(要求なし)を確認することによって行われる。
カードユニット50からの球貸し準備要求がなければ、払出制御用CPU371は、総合個数記憶に格納されている賞球数(未払出の賞球数)が0でないか否か確認する(ステップS534)。総合個数記憶に格納されている賞球数が0でなければ、賞球制御用CPU371は、賞球処理中フラグをオンし(ステップS535)、総合個数記憶の値が25以上であるか否か確認する(ステップS536)。なお、賞球処理中フラグは、バックアップRAM領域に設定される。
総合個数記憶に格納されている賞球数が25以上であると、払出制御用CPU371は、25個分の遊技球を払い出すまで払出モータ289を回転させるように払出モータ289に対して駆動信号を出力するために、25個払出動作の設定を行う(ステップS537)。総合個数記憶に格納されている賞球数が25以上でなければ、払出制御用CPU371は、総合個数記憶に格納されている全ての遊技球を払い出すまで払出モータ289を回転させるように駆動信号を出力するために、全個数払出動作の設定を行う(ステップS538)。次いで、払出モータ289をオンする(ステップS538)。なお、振分ソレノイドはオフ状態であるから、球払出装置97の下方の球振分部材は賞球側に設定されている。そして、図47に示す賞球制御処理における賞球払出中の処理に移行する。
図47は、払出制御用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の判断によって球貸しが賞球処理よりも優先されることになるが、賞球処理が球貸しに優先するようにしてもよい。
総合個数記憶および貸し球個数記憶の内容は、遊技機の電源が断しても、所定期間電源基板910のバックアップ電源によって保存される。従って、所定期間中に電源が回復すると、払出制御用CPU371は、総合個数記憶の内容にもとづいて払出処理を継続することができる。
なお、払出制御用CPU371は、主基板31から指示された賞球個数を賞球個数記憶で総数として管理したが、賞球数毎(例えば15個、10個、6個)に管理してもよい。例えば、賞球数毎に対応した個数カウンタを設け、払出個数指定コマンドを受信すると、そのコマンドで指定された個数に対応する個数カウンタを+1する。そして、個数カウンタに対応した賞球払出が行われると、その個数カウンタを−1する(この場合、払出制御処理にて減算処理を行うようにする)。その場合にも、各個数カウンタはバックアップRAM領域に形成される。よって、遊技機の電源が断しても、所定期間中に電源が回復すれば、払出制御用CPU371は、各個数カウンタの内容にもとづいて賞球払出処理を継続することができる。
図48は、電源基板910の電源監視回路からの電圧変化信号にもとづくNMIに応じて実行される停電発生NMI処理の一例を示すフローチャートである。なお、この実施の形態では、NMI割込番地は0066Hである。停電発生NMI処理において、払出制御用CPU371は、まず、割込禁止フラグの内容をパリティフラグに格納する(ステップS801)。次いで、割込禁止に設定する(ステップS802)。停電発生NMI処理では、本例では主基板31において実行された処理と同様に、RAM内容の保存を確実にするためのチェックサムの生成処理を行う。その処理中に他の割込処理が行われたのではチェックサムの生成処理が完了しないうちに払出制御用CPU371が動作し得ない電圧にまで低下してしまうことがことも考えられるので、まず、他の割込が生じないような設定がなされる。なお、停電発生NMI処理におけるステップS804〜S810は、電力供給停止時処理の一例である。
なお、割込処理中では他の割込がかからないような仕様のCPUを用いている場合には、ステップS802の処理は不要である。
次いで、払出制御用CPU371は、バックアップフラグが既にセットされているか否か確認する(ステップS803)。バックアップフラグが既にセットされていれば、以後の処理を行わない。バックアップフラグがセットされていなければ、以下の電力供給停止時処理を実行する。すなわち、ステップS804からステップS810の処理を実行する。
まず、各レジスタの内容をバックアップRAM領域に格納する(ステップS804)。その後、バックアップフラグをセットする(ステップS805)。そして、バックアップRAM領域のバックアップチェックデータ領域に適当な初期値を設定し(ステップS806)、初期値およびバックアップRAM領域のデータについて順次排他的論理和をとったあと反転し(ステップS807)、最終的な演算値をバックアップパリティデータ領域に設定する(ステップS808)。また、RAMアクセス禁止状態にする(ステップS809)。電源電圧が低下していくときには、各種信号線のレベルが不安定になってRAM内容が化ける可能性があるが、このようにRAMアクセス禁止状態にしておけば、バックアップRAM内のデータが化けることはない。
さらに、払出制御用CPU371は、全ての出力ポート(この実施の形態では、出力ポート372c,372g,372e、およびI/Oポート372fの出力ポート部分)に対してクリア信号を出力する。従って、全ての出力ポートは、クリア信号によりオフ状態とされる(ステップS810)。
次いで、払出制御用CPU371は、ループ処理にはいる。すなわち、何らの処理もしない状態になる。従って、図31に示されたリセットIC976からのシステムリセット信号によって外部から動作禁止状態にされる前に、内部的に動作停止状態になる。よって、電源断時に確実に払出制御用CPU371は動作停止する。その結果、上述したRAMアクセス禁止の制御および動作停止制御によって、電源電圧が低下していくことに伴って生ずる可能性がある異常動作に起因するRAMの内容破壊等を確実に防止することができる。
なお、この実施の形態では、停電発生NMI処理では最終部でプログラムをループ状態にしたが、ホールト(HALT)命令を発行するように構成してもよい。
また、レジスタの内容をRAM領域に格納した後にセットされるバックアップフラグは、上述したように、電源投入時において復旧すべきバックアップデータがあるか否か(停電からの復旧か否か)を判断する際に使用される。また、ステップS801からS810の処理は、払出制御用CPU371がシステムリセット回路975からのシステムリセット信号を受ける前に完了する。換言すれば、システムリセット回路975からのシステムリセット信号を受ける前に完了するように、電圧監視回路の検出電圧の設定が行われている。
この実施の形態では、電力供給停止時処理開始時に、バックアップフラグの確認が行われる。そして、バックアップフラグが既にセットされている場合には電力供給停止時処理を実行しない。上述したように、バックアップフラグは、必要なデータのバックアップが完了し、その後電力供給停止時処理が完了したことを示すフラグである。従って、例えば、リセット待ちのループ状態で何らかの原因で再度NMIが発生したとしても、電力供給停止時処理が重複して実行されてしまうようなことはない。
ただし、割込処理中では他の割込がかからないような仕様のCPUを用いている場合には、ステップS803の判断は不要である。
また、この実施の形態では、払出制御用CPU371は、マスク不能外部割込端子(NMI端子)を介して電源基板からのNMI割込信号(電源監視手段からのNMI割込信号)を検知したが、NMI割込信号をマスク可能割込割込端子(INT端子)に導入してもよい。その場合には、INT処理によって図49に示された停電発生NMI処理が実行される。また、入力ポートを介してNMI割込信号を検知してもよい。その場合には、払出制御用CPU371が実行するメイン処理において、入力ポートの監視が行われる。
図50は、バックアップパリティデータ作成方法の一例を説明するための説明図である。ただし、図50に示す例では、簡単のために、バックアップデータRAM領域のデータのサイズを3バイトとする。電源電圧低下にもとづく停電発生処理において、図50に示すように、バックアップチェックデータ領域に、初期データ(この例では00H)が設定される。次に、「00H」と「F0H」の排他的論理和がとられ、その結果と「16H」の排他的論理和がとられる。さらに、その結果と「DFH」の排他的論理和がとられる。そして、その結果(この例では「39H」)を反転して得られた値(この例では「C6H」)がバックアップパリティデータ領域に設定される。
電源が再投入されたときには、停電復旧処理においてパリティ診断が行われる。バックアップ領域の全データがそのまま保存されていれば、電源再投入時に、図49に示すようなデータがバックアップ領域に設定されている。
ステップS704の処理において、払出制御用CPU371は、図49のステップS806およびステップS807にて実行された処理と同様の処理を行う。すなわち、バックアップチェックデータ領域に、初期データ(この例では00H)が設定され、「00H」と「F0H」の排他的論理和がとられ、その結果と「16H」の排他的論理和がとられる。さらに、その結果と「DFH」の排他的論理和がとられる。そして、その結果(この例では「39H」)を反転した最終演算結果を得る。バックアップ領域の全データがそのまま保存されていれば、最終的な演算結果は、「C6H」、すなわちバックアップチェックデータ領域に設定されているデータと一致する。バックアップRAM領域内のデータにビット誤りが生じていた場合には、最終的な演算結果は「C6H」にならない。
よって、払出制御用CPU371は、最終的な演算結果とバックアップチェックデータ領域に設定されているデータとを比較して、一致すればパリティ診断正常とする。一致しなければ、パリティ診断異常とする。
以上のように、この実施の形態では、払出制御手段には、遊技機の電源が断しても、所定期間電源バックアップされる記憶手段(この例ではバックアップRAM)が設けられ、電源投入時に、払出制御用CPU371(具体的には払出制御用CPU371が実行するプログラム)は、記憶手段がバックアップ状態にあればバックアップデータにもとづいて払出状態を回復させる払出状態復旧処理(ステップS706)を行うように構成される。
以下、払出状態復旧処理について説明する。
図51は、図33のステップS706に示された払出状態復旧処理の一例を示すフローチャートである。この例では、払出制御用CPU371は、バックアップRAMに保存されていた値をレジスタに復元する(ステップS861)。そして、バックアップRAMに保存されていたデータにもとづいて停電時の払出状態を復旧するための処理を行う。例えば、賞球中処理中フラグのセット等を行う。
払出状態を復帰させると、この実施の形態では、払出制御用CPU371は、前回の電源断時の割込許可/禁止状態を復帰させるために、バックアップRAMに保存されていたパリティフラグの値を確認する(ステップS862)。パリティフラグがクリアであれば、割込許可設定を行う(ステップS863)。一方、パリティフラグがオンであれば、そのまま(ステップS701aで設定された割込禁止状態のまま)払出状態復旧処理を終える。
なお、ここでは、払出状態復旧処理が終了すると払出制御メイン処理にリターンするように払出状態復旧処理プログラムが構成されているが、電力供給停止時処理において保存されているスタックポインタが指すスタックエリア(バックアップRAM領域にある)に記憶されているアドレス(電源断時のNMI割込発生時に実行されていたアドレス)に戻るようにしてもよい。
以上に説明したしたように、この実施の形態では、特定レジスタとしてのCTCのタイマカウンタレジスタCLK/TRG2の値が所定値(この例では0)になると払出制御用CPU371においてコマンド受信処理のための割込がかかる。CTCは、他の割込との優先管理が容易なものであり、CTCを使用することによって、容易に優先度が高く、また、割込契機の設定処理が容易なコマンド受信処理方式を実現することができる。
なお、この各実施の形態では、払出制御手段を例にしたが、その他の電気部品制御手段、例えば、表示制御手段、音声制御手段、ランプ制御手段等も上述したような処理によって遊技制御手段からの制御コマンドを確実に、かつ、迅速に受信することができる。また、表示制御手段、音制御手段およびランプ制御手段等についても、上述した電源監視制御を行うように構成し、停電発生NMI処理においてクリア信号を出力して、それぞれの電気部品制御手段が制御する電気部品の作動を停止するようにしてもよい。そのように構成すれば、停止状態となる前に各電気部品の作動を停止状態にすることができ、適切な停止状態で電源復旧を待機することができる。
また、上記の実施の形態では、電源監視回路は電源基板910に設けられたが、電源監視回路は主基板31や払出制御基板37などの電気部品制御基板に設けられていてもよい。なお、電源回路が搭載された電気部品制御基板が構成される場合には、電源基板には、電源監視回路は搭載されない。
上記の各実施の形態のパチンコ遊技機1は、始動入賞にもとづいて可変表示部9に可変表示される特別図柄の停止図柄が所定の図柄の組み合わせになると所定の遊技価値が遊技者に付与可能になる第1種パチンコ遊技機であったが、始動入賞にもとづいて開放する電動役物の所定領域への入賞があると所定の遊技価値が遊技者に付与可能になる第2種パチンコ遊技機や、始動入賞にもとづいて可変表示される図柄の停止図柄が所定の図柄の組み合わせになると開放する所定の電動役物への入賞があると所定の権利が発生または継続する第3種パチンコ遊技機であっても、本発明を適用できる。
さらに、パチンコ遊技機に限られず、スロット機等においても、何らかの動作をする電気部品が備えられている場合などには本発明を適用することができる。