以下、本発明の実施形態について、図面を参照しながら説明する。
図1に示すパチンコ遊技機(以下、「パチンコ機」と略称する)Pは、遊技球を遊技媒体として用いるものであり、遊技者は、遊技場運営者から遊技球を借り受けてパチンコ機Pによる遊技を行う。なお、パチンコ機Pにおける遊技において、遊技球はその1個1個が遊技価値を有した媒体であり、遊技の成果として遊技者が享受する特典(利益)は、例えば遊技者が獲得した遊技球の数に基づいて遊技価値に換算することができる。以下、図1〜図4を参照して遊技機の構成について説明する。また、遊技媒体としてメダルを使用し、遊技の成果の特典としてメダルが払い出される回胴式遊技機(スロットマシン)等の他の遊技機にも適用可能である。
[遊技機の全体構成]
図1〜図3に示すように、パチンコ機Pは、機枠(外枠)1と内枠扉(前面枠)2とガラス扉3と遊技盤5とを備える。機枠1は、縦長矩形状の木製枠体であり、遊技場内の島設備(図示省略)に対して締結固定される。内枠扉2は、機枠1に開閉自在に取り付けられ、ガラス扉3は、内枠扉2に開閉自在に取り付けられる。
遊技盤5は、内枠扉2の内側に収容され、内枠扉2に対して着脱可能に固定される。ガラス扉3の中央部には、縦長円形状の開口窓6が形成され、開口窓6には、遊技盤5の前方を覆う透明なガラス板7が取り付けられる。遊技盤5の前面(盤面)は、遊技者が開口窓6を介して前方から視認可能な遊技領域8を含み、ガラス扉3が閉じられると、ガラス板7の内面(後面)と遊技領域8との間に遊技球が流下可能な空間が形成される。
内枠扉2の一側(図1中の右側)の縁部には、シリンダ錠9が設けられている。機枠1に対して内枠扉2及びガラス扉3を閉じてシリンダ錠9を施錠すると、機枠1に対する内枠扉2及びガラス扉3の開放が禁止される。
ガラス扉3は、その下部に前面ボード4を一体的に有し、前面ボード4には、前方へ突出する上皿10と下皿11とが設けられる。上皿10は前面ボード4の上部に配置され、下皿11は上皿10の下方に配置される。上皿10には、遊技者に貸し出された遊技球(貸球)や入賞により獲得した遊技球(賞球)が貯留され、下皿11には、上皿10が満杯の状態でさらに払い出された遊技球が貯留される。なお、本実施形態のパチンコ機PはいわゆるCR機(CRユニット50(図5に示す)に接続される機種)であり、遊技者が借り受けた遊技球は、賞球とは別に上皿10に払い出される。
前面ボード4の上面には、貸出操作部15と演出ボタン23とが設けられている。貸出操作部15は、球貸スイッチ12と返却スイッチ13と度数表示装置14と球貸表示装置24とを有し、遊技者がCRユニット50(図5に示す)に残高がゼロではなく且つ適正な有価媒体(例えば磁気記録媒体や記憶IC内蔵媒体等)を投入すると、投入された有価媒体の残存度数が球貸表示装置24に表示されるとともに、球貸表示装置24の球貸可能ランプ(図示省略)が点灯する。係る状態で遊技者が球貸スイッチ12を操作すると、予め決められた度数単位(例えば500円分に相当する5度数)に対応する個数(例えば125個)分の遊技球が貸し出され、球貸表示装置24に、貸出処理中であることが表示されるとともに、遊技球の貸出に応じて有価媒体の残高度数が減少する。なお、本実施形態ではCR機を例に挙げているが、パチンコ機Pは、CR機以外の機種(CRユニット50に接続されない機種)であってもよい。また、演出ボタン23は、演出に関する遊技者からの操作を受け付ける。
前面ボード4の前面には、上皿球抜き操作部16と下皿球抜き操作部17とが設けられている。上皿球抜き操作部16が操作されると、上皿10の遊技球が下皿11へ流下し、下皿球抜き操作部17が操作されると、下皿11の遊技球が下方へ落下して排出される。下皿11から排出された遊技球は、例えば球受け箱(図示省略)等に受け止められる。
前面ボード4の右下部には、発射ハンドル18が回転自在に支持され、内枠扉2の下部には、発射装置19が取り付けられている。上皿1の遊技球は発射装置19に1個ずつ供給され、遊技者が発射ハンドル18を回転操作すると、発射装置19(発射モータ86(図5に示す))が作動し、遊技領域8に向かって遊技球が発射される。遊技領域8は、ガイドレール20及び遊技球規制レール21によって略円形状に区画形成され、発射装置19から発射された遊技球は、レール20,21に沿って滑走して遊技領域8に左上方から進入し、遊技釘や風車等に誘導及び案内されて流下する。
ガラス扉3の上部と内枠扉2の下部とには、スピーカ22がそれぞれ取り付けら、ガラス扉3の前面には、複数の枠体ランプ25が取り付けられている。スピーカ22は、遊技に関する様々な効果音を発する。枠体ランプ25は、例えば内蔵するLEDの発光(点灯や点滅、輝度階調の変化、色調の変化等)により演出を実行する。
[盤面の構成]
遊技領域8内には、統合表示ユニット30、演出表示装置(画像表示器)31、スルーチャッカ32、電動チューリップ(普通電動役物)33、ステージ34、第1始動入賞口(第1特図始動入賞口)35、第2始動入賞口(第2特図始動入賞口)36、一般入賞口37、アウト口38、アタッカー装置(特別電動役物)39、複数の盤面ランプ60、遊技釘(図示省略)、及び風車(図示省略)等が設けられている。第1始動入賞口35と第2始動入賞口36とは上下方向に間隔を空けて配置されている。盤面ランプ60は、例えば内蔵するLEDの発光(点灯や点滅、輝度階調の変化、色調の変化等)により演出を実行する。
統合表示ユニット30は、演出表示装置31を視認している遊技者の視界に同時に入らないように、遊技盤3の右下部分に配置されている。図4に示すように、統合表示ユニット30は、第1特図表示装置(第1特別図柄表示装置)40と、第2特図表示装置(第2特別図柄表示装置)41と、普図表示装置(普通図柄表示装置)42と、状態表示装置43とを備え、これらの表示装置40〜43は、1つの統合表示基板48に実装された状態で遊技盤5に取り付けられる。
第1特図表示装置40は、第1始動入賞口35への遊技球の入賞を契機に行われた第1特別図柄に係る電子抽選の結果を、第1特別図柄(数字や絵柄)を変動させた後に停止表示するものである。第2特図表示装置41は、第2始動入賞口36への遊技球の入賞を契機に行われた第2特別図柄に係る電子抽選の結果を、第2特別図柄(数字や絵柄)を変動させた後に停止表示するものである。本実施形態の第1特図表示装置40及び第2特図表示装置41は、7セグメントLEDによって第1特別図柄及び第2特別図柄を変動後に停止表示する。なお、本実施形態では、第2始動入賞口36への入賞に基づく遊技の方が第1始動入賞口35への入賞に基づく遊技よりも優先して実行されるため、第1特別図柄と第2特別図柄とが同時に変動することはない。
普通図柄表示装置42は、スルーチャッカ32の遊技球の通過を契機に行われた普通図柄に係る電子抽選の結果を、普通図柄(数字や絵柄)を変動させた後に停止表示するものである。本実施形態の普通図柄表示装置42は、7セグメントLEDによって普通図柄を変動後に停止表示する。
状態表示装置43は、ラウンド数表示部44、第1特図保留数表示部45、第2特図保留数表示部46、及び普図保留数表示部47を有する。ラウンド数表示部44は、4つのランプ(LED)から構成され、ランプの消灯、点灯又は点滅の組合せによって現在の大当たりが何ラウンド継続するかを表示する。第1特図保留数表示部45は、第1始動入賞口35に遊技球が入賞し、当該入賞に応じて取得された第1特図当たり決定乱数(大当たり決定乱数)が第1特図保留乱数としてRAM75の第1特図保留乱数記憶領域(図示省略)に記憶されると、その記憶数を現在の保留数として表示する。第2特図保留数表示部46は、第2始動入賞口36に遊技球が入賞し、当該入賞に応じて取得された第2特図当たり決定乱数(大当たり決定乱数)が第2特図保留乱数としてRAM75の第2特図保留乱数記憶領域(図示省略)に記憶されると、その記憶数を現在の保留数を表示する。普図保留数表示部47は、スルーチャッカ32を遊技球が通過し、当該通過に応じて取得された普図当たり決定乱数(当たり決定乱数)が普図保留乱数としてRAM75の普図保留乱数記憶領域(図示省略)に記憶されると、その記憶数を現在の保留数を表示する。これらの保留数表示部45,46,47は、それぞれランプ(LED)から構成され、ランプの消灯、点灯又は点滅の組合せによって「0」個〜「4」個(保留球乱数の記憶数の上限)の間で保留数を表示する。
図2に示すように、演出表示装置31は、液晶の画像表示器を有し、遊技盤3の略中央部に設けられ、第1始動入賞口35及び第2始動入賞口36への遊技球の入賞を契機に行われた特別図柄に係る電子抽選の結果に基づいて所定の演出画像を表示する。演出画像には、第1特図表示装置40及び第2特図表示装置41に変動表示される第1特別図柄及び第2特別図柄と同期をとって変動するダミー図柄(演出図柄)と、第1特図当たり決定乱数の保留数表示と、第2特図当たり決定乱数の保留数表示とが含まれる。
電動チューリップ33は、1対の羽根部材49と電動チューリップ駆動装置51(図5に示す)とを備える。1対の羽根部材49は、遊技盤3との直交軸を中心に回転自在であり、第2始動入賞口36の入口の左右に配置される。電動チューリップ駆動装置51のソレノイド(図示省略)が通電されると、1対の羽根部材が互いに離れる方向に回転し、電動チューリップ33が開口して、第2始動入賞口36の入口が拡大される。電動チューリップ33が閉じた状態(通常状態)では、第2始動入賞口36に遊技球は入賞できず、第2始動入賞口36への入賞は、電動チューリップ33の開口時に制限される。
ステージ34は、遊技球が転動しながら一時的に滞在する構造物であり、演出表示装置31の下方に配置される。ステージ34の略中央の真下に第1始動入賞口35が配され、ステージ34の中央部分から落下した遊技球は、高い確率で第1始動入賞口35へと導かれる。
アタッカー装置39は、第1始動入賞口35及び第2始動入賞口36に遊技球が入賞することを契機に行われる特別図柄に係る電子抽選の結果、特図当たり(大当たり)となって大当たり遊技に移行した場合に所定回数(本実施形態では、2ラウンド又は15ラウンド)開放される装置である。アタッカー装置39は、横長矩形状の大入賞口52と横長板状の蓋部材53とアタッカー駆動装置54(図5に示す)とを備える。蓋部材53の下部は、水平な軸を中心として前後方向に開閉自在に支持され、アタッカー駆動装置54のソレノイド(図示省略)が通電されると、蓋部材53の上部が前下方へ傾動し、アタッカー装置39が開口して大入賞口52が露呈され、多量の遊技球が蓋部材53の上面(裏面)に案内されて大入賞口52へ入賞可能となる。アタッカー装置39が閉じた状態(通常状態)では、蓋部材54が大入賞口54を閉止するため、大入賞口52への入賞は、アタッカー装置39の開口時に制限される。
各入賞口(第1始動入賞口35、第2始動入賞口36、一般入賞口37、大入賞口52)に遊技球が入賞すると、所定個数の遊技球が賞球として遊技者に払い出され、入賞した遊技球は、その入賞口35,36,37,52から遊技盤5の裏側へ回収される。また、何れの入賞口35,36,37,52にも入賞しなかった遊技球は、最終的にアウト口38から遊技盤5の裏側へ回収される。回収された遊技球は、アウト通路アセンブリ(図示省略)を通じてパチンコ機Pの裏側から枠外へ排出され、さらに島設備の補給経路(図示省略)に合流する。
スルーチャッカ32、第1始動入賞口35、第2始動入賞口36、一般入賞口37、大入賞口52の内部には、それぞれ遊技球の通過を検知するためのセンサ(図5に示すゲート通過球検知センサ55、第1特図始動球検知センサ56、第2特図始動球検知センサ57、大入賞球検知センサ58及び一般入賞球検知センサ59)が設けられている。これらのセンサ55,56,57,58,59は、遊技球の通過を検知する度に、主制御装置70(図5に示す)に検知信号を送信する。なお、第1特図始動球検知センサ56と第2特図始動球検知センサ57と大入賞球検知センサ58と一般入賞球検知センサ59とは、遊技領域8に発射された遊技球の入賞を検知する入賞検知手段として機能する。また、以下の説明において、これらの検知信号のうち、センサ56,57,58,59が送信する検知信号を入賞球検知信号と称し、センサ55が送信する検知信号を球通過検知信号と称して、両者を区別する場合がある。
[裏側の構成]
図3に示すように、パチンコ機Pの裏側には、電源供給装置61、主制御基板ユニット62、払出制御基板ユニット63、サブ制御基板ユニット64、外部情報端子基板65、電源コード(電源プラグ)66、アース線(アース端子)67、パチンコ機Pの電源系統や制御系統を構成する各種の電子機器類(図示外の制御コンピュータを含む)等が設置されている。
外部情報端子基板65は、パチンコ機Pを外部の電子機器(例えば、ホールコンピュータ68(図5に示す)やデータ表示装置等)に接続するためのインタフェースであり、パチンコ機Pの遊技進行状態やメンテナンス状態等を表す各種の外部情報信号(例えば賞球情報、扉開放情報、図柄確定回数情報、大当たり情報、始動口情報等)は、外部情報端子基板65から外部の電子機器に送信される。
電源コード66は、遊技場の島設備に設置された電源装置(例えばAC24V)に接続されて、パチンコ機Pの動作に必要な電源(電力)を確保する。アース線67は、島設備に設置されたアース端子に接続され、パチンコ機Pをアース(接地)する。
[制御に関する構成]
次に、パチンコ機Pの制御に関する構成について説明する。図5は、パチンコ機Pに装備された各種の電子機器類を示すブロック図である。
パチンコ機Pは、主制御装置70と払出制御装置71とサブ制御装置72とを備える。主制御装置70は、制御動作の中枢であり、主にパチンコ機Pにおける遊技処理の実行を制御する機能を有し、主制御基板ユニット62に内蔵されている。払出制御装置71は、主に遊技球の払い出しと発射とを制御する機能を有し、払出制御基板ユニット63に内蔵されている。サブ制御装置72は、主に演出を制御する機能を有し、サブ制御基板ユニット64に内蔵されている。主制御装置70と払出制御装置71とは、主制御装置70から払出制御装置71に対して一方向にコマンドが送信される通信線と、払出制御装置71から主制御装置70に対して一方向にコマンドが送信される通信線とによって接続されている。
(電源供給装置61)
電源供給装置61は、電源コード66を通じて島設備から外部電源(例えば、24Vの交流電源)の供給を受け、この交流電源をパチンコ機Pで使用する複数の定電圧の直流電源や粗整流の直流電源に変換し、主制御装置70、払出制御装置71、サブ制御装置72等に供給する。電源供給装置61には、電源回路やコンデンサ等のバックアップ電源(図示省略)と、外部電源からの電源の供給が途絶えたとき(電源断の発生時)に電源断の発生時に電源断予告信号(電源断信号)を生成する電源断検出回路(電源断信号発生手段)96とが設けられている。電源供給装置61は、電源断の発生時に、主制御装置70及び払出制御装置71に対して、電源断予告信号を送信するとともに、バックアップ電源を供給する。なお、電源断検出回路96は、電源供給装置61以外(例えば、主制御装置70や払出制御装置71など)に設けてもよい。
RWMクリアスイッチ69は、主制御装置70及び払出制御装置71に保存されている過去の遊技情報をクリアするために操作されるスイッチであり、電源供給装置61に設けられ、RWMクリアスイッチ69が操作されると、RWMクリア信号を主制御装置70及び払出制御装置71に送信する。
(主制御装置70)
主制御装置70には、中央演算処理装置(中央命令処理部)である主制御CPU73を実装した回路基板(主制御基板)が装備されており、主制御CPU73は、CPUコア、各種レジスタ(汎用レジスタ、フラグレジスタ、インデックスレジスタ、リフレッシュレジスタ、割込みレジスタ、命令レジスタなど)、スタックポインタ、プログラムカウンタ、命令レコーダ(何れも図示省略)等を含み、ROM74やRAM(RWM)75等の半導体メモリとともにLSIとして構成されている。各レジスタは、演算結果、次に読み込む命令のアドレス、実行状態等を保持する。また主制御装置70には、ハード乱数発生回路76やサンプリング回路(図示省略)が装備されている。ハード乱数発生回路76は、ハードウェア乱数(例えば10進数表記で0〜65535)を発生させるものであり、発生させた乱数は、サンプリング回路を通じて主制御CPU73に入力される。ハードウェア乱数は、大当たり判定用の第1特図当たり決定乱数及び第2特図当たり決定乱数や、当たり(普図当たり)判定用の普図当たり決定乱数として用いられる。主制御装置70には、クロック(周波数発生回路部)77、入出力(I/O)ポート、カウンタ/タイマ回路(CTC)等の周辺ICが装備されており、これらは主制御CPU73とともに回路基板上に実装されている。
RAM75には、各種フラグの記憶領域を含むワーク領域(図示省略)が設けられ、割込み発生時やサブルーチンや関数を呼び出す際に、処理中のデータや戻りアドレスなどがワーク領域のスタック領域(退避領域)に一時的に退避される。また、主制御CPU73は、ROM74に記憶されている遊技制御用プログラムに従って処理を実行することにより、電源断検知手段及び実行制御手段として機能する。
球検知センサ類56〜59の入賞検知信号は、入出力ドライバ(図示省略)を介して主制御CPU73に入力される。なお、本実施形態では、第1特図始動球検知センサ56及び第2特図始動球検知センサ57からの入賞検知信号は、主制御装置70に直接送信され、ゲート通過球検知センサ55、大入賞球検知センサ58及び一般入賞球検知センサ59からの入賞検知信号は、中継端子板(図示省略)を経由して主制御装置70に送信される。
第1特図表示装置40、第2特図表示装置41、普図表示装置42、及び状態表示装置43の各表示は、主制御CPU73からの制御信号によって制御される。主制御CPU73は、遊技の進行状況に応じてこれら表示装置40〜43に対する制御信号を出力し、各LEDの点灯状態を制御する。
電動チューリップ駆動装置51及びアタッカー駆動装置54の駆動は、主制御CPU73からの制御信号によって制御される。各駆動装置51,54のソレノイドは、主制御CPU73からの制御信号に基づいて動作(励磁)し、電動チューリップ33及びアタッカー装置39を開閉動作(作動)させる。
内枠扉2には、ガラス扉開放スイッチ78と内枠扉開放スイッチ79とが設置されている。内枠扉2からガラス扉3が開放されると、ガラス扉開放スイッチ78からの接点信号が払出制御装置71を経由して主制御装置70に入力される。また、機枠1から内枠扉2が開放されると、内枠扉開放スイッチ79からの接点信号が払出制御装置71を経由して主制御装置70に入力される。スイッチ78,79から接点信号を受信した主制御CPU73は、扉が開放したことを音やLEDや液晶などによって報知するため、これらの報知処理の実行を指示する制御信号をサブ制御装置72に送信する。また、スイッチ78,79から接点信号を受信した払出制御装置71は、扉開放を示す外部情報信号を出力する。
パチンコ機Pには磁気や電波等を検知するエラー検知センサ98が設けられ、エラー検知センサ98は、磁気や電波等を検知すると、主制御装置70にエラー検知信号を送信する。エラー検知信号を受信した主制御CPU73は、所定のエラー処理を実行するとともに、エラー検知を示す外部情報信号を出力する。
(払出制御装置71)
払出制御装置71には、払出制御CPU80を実装した回路基板(払出制御基板)が装備されており、払出制御CPU80も、主制御CPU73と同様に、CPUコア(図示省略)を含み、ROM81、RAM82等の半導体メモリとともにLSIとして構成されている。払出制御CPU80は、主制御CPU73から受信した賞球指示コマンド(払出コマンド送信信号)に基づいて遊技球の払い出し動作を制御し、指示された個数の遊技球の払出動作を実行させる。なお、主制御CPU73は、賞球指示コマンドとは別に、賞球情報信号を外部情報信号として生成し出力する。具体的には、主制御CPU73は、指示した個数の合計が所定個数(例えば、10個)に達する毎に、賞球情報信号を外部情報信号として生成し出力する。また、払出制御CPU80も、払い出しを行った個数の合計が所定個数(例えば、10個)に達する毎に、賞球情報信号を外部情報信号として生成し出力する。
遊技場の球補給経路(図示省略)から補給された遊技球は、賞球タンク(図示省略)に蓄えられ、賞球樋(図示省略)を流下して賞球ケース(図示省略)に導入され、賞球ケースから上皿10に供給される。
賞球ケースには、払出モータ(例えばステッピングモータ)83が設けられ、払出制御装置71(払出制御基板ユニット63)には、払出モータ83の駆動回路(図示省略)が設けられている。払出制御装置71は、払出モータ83を回転駆動して遊技球を賞球ケースから払い出させる。払出モータ83の1回の払出動作(所定量の回転駆動)によって1個の遊技球が払い出され、払い出された遊技球は、払出流路(図示省略)を通って前面ボード4へ流下する。
払出モータ83の下流側には払出計数スイッチ84が設置され、払出モータ83の駆動によって実際に賞球が払い出されると、払出計数スイッチ84からの払出計数信号(払出検知信号)が払出制御装置71に送信される。払出計数信号は、1個の遊技球の払い出しを検出する度に送信され、払出制御CPU80は、受信した払出計数信号に基づき、実際の払出数や球切れ状態を検知して、遊技球の払い出しを管理する。
CRユニット50に残高がゼロではない適正な有価媒体が投入されると、CRユニット50は、貸出の処理中であること(球貸しが可能な状態であること)を示す貸出装置READY信号を、中継基板91を経由して払出制御装置71へ送信するとともに、貸出可LED信号及び度数表示LED信号を、中継基板91を経由して球貸表示装置24及び度数表示装置14に送信する。球貸可LED信号を受信した球貸し表示装置24では球貸可能ランプが点灯し、度数表示LED信号を受信した度数表示装置14では、有価媒体の残高度数が表示される。係る状態で球貸スイッチ12が操作されると、その操作信号(貸出スイッチ信号)が中継基板91を経由してCRユニット50に送信され、貸出スイッチ信号を受信したCRユニット50は、有価媒体の残高の減算処理を実行するとともに、台端末貸出要求完了確認信号を、中継基板91を経由して払出制御装置71へ送信する。台端末貸出要求完了確認信号は、基本単位分(25個)の遊技球の貸出を要求する信号であり、例えば球貸スイッチ12の1回の操作が5度数分(125個)の貸出要求に対応するようにCRユニット50側で設定されている場合には、球貸スイッチ12が1回操作されると、台端末貸出要求完了確認信号は5回繰り返して送信される。
払出制御装置71のRAM82(払出残数記憶手段)には、遊技球の払出残数を記憶する払出残数記憶領域が設けられている。払出残数記憶領域は、賞球として払い出す予定の遊技球数(賞球残数)を記憶する賞球メモリ領域と、貸出として払い出す予定の遊技球数(貸出残数)を記憶する貸出メモリ領域とに区分されている。払出制御CPU80は、主制御CPU73から賞球指示コマンドを受信すると、受信した賞球指示コマンドが示す賞球数分だけ賞球残数を加算し、CRユニット50から台端末貸出要求完了確認信号を受信すると、基本単位分だけ貸出残数を加算する。遊技球の払出動作において、払出制御CPU80は、払出計数SW84からの払出計数信号を受信する度に、賞球残数又は貸出残数の一方を1ずつ減算し、賞球残数及び貸出残数の双方がゼロになるまで払出動作を継続する。なお、本実施形態の払出制御CPU80は、貸出残数の払い出しを賞球残数よりも優先して実行する。すなわち、貸出残数がゼロではない場合には、貸出残数がゼロになるまで貸出残数を優先して減算し、貸出残数がゼロである場合に限り、賞球残数を減算し、賞球残数がゼロになったときに払い出しを終了する。なお、1回の賞球払出を所定単位個数(例えば25個)を上限とした個数分まで連続して実行する処理(賞球連続払出処理)が設定されている場合には、連続賞球払出処理の途中に貸出残数がゼロから増加しても、実行中の連続賞球払出処理が完了するまではその処理(賞球払出)を中断せずに継続する。そして、1回の連続賞球払出処理が完了した後は、賞球残数が未だゼロに達していなくても、貸出残数がゼロではない場合には、賞球残数よりも貸出残数の払い出しを優先して実行する。払出制御CPU80は、払出動作が実行可能であるときにはこれを示す台READY信号を、基本単位分の貸出が終了したときにはこれを示す台端末貸出完了信号を、中継基板91を経由してCRユニット50へそれぞれ送信する。
上皿10(図1に示す)への遊技球の供給経路には皿満タンスイッチ85が設置され、下皿11(図1に示す)が遊技球で満杯になると、皿満タンスイッチ85がONになり、満タン検出信号が払出制御装置71に送信される。満タン検出信号を受信した払出制御CPU80は、主制御CPU73から受信した賞球指示コマンドに応じた賞球動作を一旦保留とし、未払出の賞球残数をRAM82に記憶させておく。なお、RAM82の記憶は電源断時にもバックアップが可能であり、遊技中に停電(瞬間的な停電を含む)が発生しても、未払出の賞球残数情報が消失してしまうことはない。
発射装置19(図2に示す)には、発射モータ86と球送りソレノイド87とが設けられ、発射ハンドル18(図1に示す)には、発射ボリューム88とタッチセンサ89と発射停止スイッチ90とが設けられている。球送りソレノイド87は、上皿10(図1に示す)から流下した遊技球を1個ずつ発射位置に送り出し、発射モータ86は、発射位置に送り出された遊技球を打ち出す。なお遊技球の発射間隔は、例えば0.6秒程度(1分間で100個以内)である。
発射ボリューム88は、発射ハンドル18(図1に示す)の回転操作量(ストローク)に比例した発射勢指示信号を払出制御装置71に送信する。タッチセンサ89は、静電容量の変化から遊技者の身体が発射ハンドル18に触れていることを検出し、その検出信号を払出制御装置71に送信する。発射停止スイッチ90は、遊技者から操作されたときに発射停止信号(接点信号)を払出制御装置71に送信する。
遊技者が発射ハンドル18を回転操作すると、発射ボリューム88から払出制御装置71に回転操作量に応じた発射勢指示信号が送信される。払出制御CPU80は、受信した発射勢指示信号に基づいて発射モータ86の駆動を制御する。これにより、遊技者の操作量に応じて遊技球の打ち出し強さが調整される。但し、払出制御CPU80は、タッチセンサ89からの検出信号がオフ(ローレベル)の場合、及び発射停止スイッチ90から発射停止信号が入力された場合には、発射モータ86の駆動を停止する。この他、払出制御CPU80は、パチンコ機PにCRユニット50が接続されていない場合、発射モータ86の駆動を停止する。
払出制御装置71の基板上には、状態LED(図示省略)が設けられている。状態LEDは、電源からの電力供給時に発光する電源LED、受け皿の満タン時に発光する受け皿満タンLED、通信エラー時に発光する通信エラーLED、扉開放時に発光する扉開放LED、払出動作の不良時に発光する払出動作不良LED、CRユニット50との未接続時に発光するCR未接続LEDとを含む。状態LEDの発光制御は、対応する信号(コマンド)の受信に基づいて払出制御CPU80が実行する。
(サブ制御装置72)
サブ制御装置72には、演出制御CPU92を実装した回路基板(複合サブ制御基板)が装備されており、演出制御CPU92も、主制御CPU73と同様に、CPUコア(図示省略)を含み、ROM93、RAM94等の半導体メモリとともにLSIとして構成されている。サブ制御装置72には、入出力ドライバや各種の周辺IC(共に図示省略)が装備されている。
サブ制御装置72のROM93には、演出の制御に関する演出制御プログラムが格納されており、演出制御CPU92は、格納された演出制御プログラムに従い、主制御CPU73から送信される演出用のコマンドに基づいて、演出表示装置31、各種ランプ25,60、音発生装置97及び可動役物による演出の制御を実行する。演出表示装置31は、画像プロセッサや液晶等を含み、音発生装置97は、サウンドプロセッサやスピーカ22等を含む。演出の制御には、演出表示装置31の画像の表示制御、各種ランプ25,60の発光制御、スピーカ22からの音声発生制御、及び可動役物の駆動装置95の駆動制御が含まれる。なお、画像プロセッサ及びサウンドプロセッサは、サブ制御基板ユニット64に設けてもよい。
(外部への出力)
主制御装置70及び払出制御装置71において生成された各種の外部情報信号は、外部情報端子基板65から外部に出力される。外部情報端子基板65から出力される信号は、例えば遊技場のホールコンピュータ68で集計される。
[主制御装置70の入力ポートの説明]
主制御装置70の入出力ポートには、複数のポート(本実施形態では、入力ポート0、入力ポート1及び入力ポート2の3つの入力ポートを含む)が設定されている。入力ポート0には、スイッチ異常信号(遊技盤5に搭載する検知センサ55〜59の断線信号)、扉開放信号(扉開放スイッチ78,79からの接点信号)、エラー検知信号(エラー検知センサ98からの信号)、払出コマンド許可信号(払出制御装置71からの信号)、及びRWMクリア信号(電源供給装置61からの信号)が割り当てられている。入力ポート1には、大入賞球検知センサ58及び一般入賞球検知センサ59からの入賞球検知信号が割り当てられている。入力ポート2には、第1特図始動球検知センサ56からの入賞球検知信号、第2特図始動球検知センサ57からの入賞球検知信号、ゲート通過球検知センサ55からの球通過検知信号、及び電源供給装置61からの電源断予告信号が割り当てられている。各入力ポートには、各信号の受信時に状態が切り替わる(1/0で切り替わる)1ビットの受信記憶領域が設けられ、各信号の入力の確認は、対応する受信記憶領域のビットチェックによって行われる。入力ポート2は、電源断の発生時に電源断予告信号を受信する電源断信号受信手段として機能し、入力ポート2に電源断予告信号が入力している間、対応する受信記憶領域の状態が切り替わる。
[主制御装置70が実行するCPU初期化処理]
CPU初期化処理とは、メインループを開始するための準備処理であり、CPU初期化処理の終了後にメインループへ移行する。主制御装置70(主制御CPU73)は、通常起動(電源をオフした後の復電行為による電源投入時)の他、瞬断、IAT、割込異常、RWMクリア、及びシステムリセットの各発生時に、CPU初期化処理を実行するとともに、CPU初期化処理の実行中に、当該初期化処理の開始要因が何れであるかを判定する。また、主制御CPU73は、CPU初期化処理中において、バックアップが不適正であった場合にバックアップ破損(異常)であると判定する。
主制御CPU73は、電源投入又は瞬断に起因したCPU初期化処理であって、バックアップ破損ではない場合、適正なバックアップ処理から移行したCPU初期化処理(正常起動)であると判定し、後述する電源復帰時クリア領域をクリアする。一方、IAT発生、割込異常発生、RWMクリア、及びシステムリセットに起因する場合、並びにバックアップ破損の場合、適正なバックアップ処理からの移行ではないと判断し、全てのRWM領域をクリアする。CPU初期化処理によって、処理の安定化及びシステム保護を図ることができる。
主制御CPU73は、主制御CPU73の内部レジスタに設定されたIAT信号(指定エリア外走行禁止信号)のビット(IAT判定フラグ)がオンである場合、主制御CPU73の内部レジスタに設定されたリセット信号のビット(リセット判定フラグ)がオンである場合、割込異常が発生した場合、及び瞬断が発生した場合に、CPU初期化処理を実行する。IAT信号のビットは、IAT発生時にオフからオンに設定され、それ以外の場合はオフに維持される。リセット信号のビットは、通常起動時(正常に電源をオフした際)及びRWMクリア時にオフからオンに設定され、割込異常時及び瞬断時にはオフに維持される。また、リセット信号のビットは、システムエラー等により予期せずにオフからオンに設定されてしまう可能性があり、このような状態がシステムリセットである。
(IAT)
主制御CPU73は、所定の指定エリア(ユーザプログラムを実行可能な範囲として予め指定されたアドレス範囲)内でユーザプログラムが適正に実行されているか否か(プログラムが暴走していないか否か)を監視し、指定エリア外でユーザプログラムが実行されるとIAT(Illegal Address Trap)信号を発生する(IAT信号のビットをオフからオンに設定する)機能を有する。主制御CPU73は、IAT信号の発生を開始要因としてCPU初期化処理を実行し、IAT信号の発生により指定エリア外でのユーザプログラムの実行が禁止される。
(割込異常)
主制御CPU73の割込レジスタには、ハードウェア構成上、所定のタイミングで割込処理を発生させるための回路が所定数(本実施形態では6箇所)設けられており、所定数の割込先が設定可能であり、複数の割込先の全てを使用せずに未使用(未設定)の割込先(割込用の回路)が存在する場合、その未使用の割込先への割込(割込異常)が予期せずに発生する可能性がある。主制御CPU73は、このような割込異常の発生を開始要因としてCPU初期化処理を実行する。本実施形態では、設定可能な6箇所の割込先のうち3箇所(タイマ割込用、INT端子割込用、及びシリアル受信用)が使用され、残りの3箇所が未使用であり、この未使用の割込先への割込が発生すると、主制御CPU73はCPU初期化処理を実行する。
(RWMクリア)
RWMクリアスイッチ69が操作され、入力ポート0のRWMクリア信号のビット(ラムクリア判定フラグ)がオフからオンになると、主制御CPU73は、RWMクリア(RAMクリア)を開始要因としてCPU初期化処理を実行する。
(システムリセット)
主制御CPU73は、電源断(電源断退避処理)を伴わない予期しないリセット入力が検知された場合、システムリセットの発生を開始要因としてCPU初期化処理を実行する。
(瞬断)
主制御CPU73は、後述するように、メインルーチンの割り込み許可中に電源断予告信号を受信すると、電源断時退避処理を割り込ませる。また、タイマ割り込み処理の実行中に電源断予告信号を受信すると、タイマ割り込み処理が終了してメインループに復帰した後に電源断時退避処理を割り込ませる。このように、主制御CPU73は、瞬間的な電源断(瞬断)の発生によって電源断退避処理を実行する。また、主制御CPU73は、電源断時退避処理が適正に終了すると、続けてCPU初期化処理を実行する。
(バックアップ破損)
主制御CPU73は、CPU初期化処理において、CPU初期化処理の開始要因がIAT、割込異常、RWMクリア及びシステムリセットの何れでもない場合、適正なバックアップ状態ではないバックアップ破損であるか否かを判定する。
(CPU初期化処理の開始要因及びバックアップ破損の判定)
上述のように、CPU初期化処理の開始要因は、正常起動(通常起動及び瞬断)、IAT、割込異常、RWMクリア、及びシステムリセットである。主制御CPU73は、CPU初期化処理において、何れの開始要因によってCPU初期化処理が開始されたか、及び開始要因がIAT、割込異常、RWMクリア、及びシステムリセットの何れでもない場合にバックアップ破損であるか否かを判定し、その判定結果(「正常起動」、「IAT」、「RWMクリア」、「リセット発生」、及び「バックアップ破損」)を示すコマンド(判定結果コマンド)を起動用(電源復帰指定又はRAMクリア指定)のサブコマンド(起動CMD)に含めてサブ制御装置72へ送信する。このように、主制御CPU73は、初期化処理において、当該初期化処理の開始要因がIATであるか否かを最優先に判定し、当該初期化処理の開始要因が割込異常であるか否かをIATの次に優先して判定した後、IAT及び割込異常以外の他の開始要因について予め設定された順序に従って順次判定する判定手段として機能する。
起動用のサブコマンドを受信したサブ制御装置72は、判定結果報知処理を実行する。判定結果報知処理では、受信した起動用のサブコマンドの判定結果コマンドが示す判定結果に応じた報知が行われる。この報知により、ホールの従業員等は正常起動であるかそれ以外であるかを認識することができる。
また、主制御CPU73は、判定結果をRAM75に記録する。パチンコ機Pの設計者等は、この記録を取得することによってCPU初期化処理の開始要因の頻度等を把握することができる。
さらに、主制御CPU73は、上記判定結果を、外部情報端子基板65を介してホールコンピュータ68へ送信し、ホールコンピュータ68では、各パチンコ機PについてCPU初期化処理の開始要因(バックアップ破損を含む)毎の発生情報や発生回数が記録される。ホールの管理者等は、ホールコンピュータ68から上記情報や記録を取得することによって、各パチンコ機PにおけるCPU初期化処理の開始要因の頻度等を把握することができる。
主制御CPU73は、IAT信号のビットの状態(オン/オフ)、リセット信号のビットの状態(オン/オフ)、RWMクリア信号のビットの状態(オン/オフ)、バックアップ判定記憶領域のデータ、及びRWMチェックサム値を用いて上記判定を行う。なお、各信号のビットのオンとはビット値が「1」の状態であり、オフとはビット値が「0」の状態である。
IAT信号のビットは、通常はオフであり、IATの発生時にオンに設定される。リセット信号のビットは、通常はオフであり、通常起動時、RWMクリア時、及びシステムリセット時にオンに設定され、割込異常時及び瞬断時にはオフに維持される。RWMクリア信号のビットは、通常はオフであり、RWMクリアスイッチ69が操作されることによってオンに設定される。バックアップ判定記憶領域には、通常はデフォルト値が記憶され、電源断時退避処理が適正に実行された場合(正常起動時)に所定のバックアップ有効判定値が上書き記憶され、その他の場合(IAT、割込異常、RWMクリア、及びシステムリセット)には原則としてデフォルト値に維持される。なお、バックアップ判定記憶領域のデータが予期せずにこれらの値(バックアップ有効判定値及びデフォルト値)以外に書き換えられてしまった場合には、バックアップ破損と判定される。RWMチェックサム値は、RAM75のワーク領域(使用禁止領域及びスタック領域を含むユーザワーク領域)のうち、バックアップ判定記憶領域及びサムチェックバッファを除く領域について算出されるチェックサム値である。算出されたチェックサム値と電源断時退避処理で保存したチェックサム値とが比較され、両者が一致する場合には正常値であると判定され、相違する場合には正常値ではない(バックアップ破損)と判定される。
上記判定を効率的で且つより正確な判定を行うために、主制御CPU73は、予め設定された所定の順番に従って判定を行う。具体的には、IATであるか否かを最優先に判定し、次に、割込異常であるか否かを判定した後、RWMクリアであるか否か、システムリセットであるか否か、及びバックアップ破損であるか否かを順次判定し、何れでもない場合に正常起動であると判定する。
IATを最優先に判定するのは、IATの発生はIAT信号のビットのオン/オフの参照のみによって判定可能(オンのときIATと判定)である一方、IATの発生により他の判定要素(例えば、RWMクリア信号のビットやリセット信号のビット)が予期せずに書き換えられてしまう可能性があるためであり、他の判定に先立ってIATが最初に除外される。
割込異常であるか否かをIATの次に優先して判定するのは、IATが未発生の場合において、リセット信号のビットがオフであり、且つバックアップ判定記憶領域のデータがバックアップ有効判定値ではない場合に、割込異常であるとの判定が可能である一方、IATと割込異常とを優先的に除外することによって、後述するシステムリセットの判定を簡単に行うことができるためである。
次にRWMクリアであるか否かを判定するのは、IAT及び割込異常が未発生の場合において、RWMクリアの発生はRWMクリア信号のビットのオン/オフの参照のみによって判定可能(オンのときRWMクリアと判定)である一方、IATと割込異常とRWMクリアとを優先的に除外することによって、後述するシステムリセットの判定を簡単に行うことができるためである。
残るシステムリセットとバックアップ破損については、IAT、割込異常及びRWMクリアが未発生の場合において、システムリセットの発生はバックアップ判定記憶領域のデータのみによって判定可能(デフォルト値であるときシステムリセットと判定)であるのに対し、バックアップ破損の発生の判定にはバックアップ判定記憶領域のデータとRWMチェックサム値との双方が必要であり、システムリセットを先に除外した方が効率的なため、システムリセットであるか否かを先に判定する。
最後にバックアップ破損であるか否かを判定する。バックアップ破損の判定では、バックアップ判定記憶領域のデータがバックアップ有効判定値及びデフォルト値の何れでもない場合、又はバックアップ判定記憶領域のデータがバックアップ有効判定値であってRWMチェックサム値が正常値ではない場合に、バックアップ破損であると判定する。そして、バックアップ破損ではない場合に正常起動であると判定する。
[主制御装置70が実行する制御処理]
次に、主制御装置70の主制御CPU73がROM74に記憶されている遊技制御用プログラムに従って実行する制御処理について説明する。主制御CPU73が実行する制御処理は、メインルーチンとしてのCPU初期化処理及びメインループ、シリアル通信受信割り込み処理、タイマ割り込み処理(メイン割り込み処理)、並びに電源断時退避処理を含み、主制御CPU73は、これらの処理の実行を制御する。
図6(a)に示すように、シリアル通信受信割り込み処理の割り込み発生要因は主コマンドの受信によって成立し、タイマ割り込み処理の張り込み発生要因は、所定周期(本実施形態では4ms)毎に成立し、電源断時退避処理の割り込み発生要因は電源断予告信号の受信によるINT割り込み発生によって成立する。シリアル通信受信割り込み処理とタイマ割り込み処理と電源断時退避処理とは、この順番で割り込み優先順位が高くなるように設定されている。また、シリアル通信受信割り込み処理と電源断時退避処理とは多重割り込みを禁止し、タイマ割り込み処理は多重割り込みを許可する。
すなわち、主制御装置70では、図6(b)に示すように、メインルーチンが基本処理として繰り返して実行され、タイマ割り込み処理が所定周期毎に起動してメインループに割り込む。メインルーチンの実行中又はタイマ割り込み処理の実行中に主コマンドを受信すると、シリアル通信受信割り込み処理が起動してメインループ又はタイマ割り込み処理に割り込む(図示省略)。メインルーチンの実行中(シリアル通信受信割り込み処理及びタイマ割り込み処理の実行中ではなく、主コマンドも受信していない)に電源断予告信号を受信すると、電源断時退避処理が起動してメインルーチンに割り込む。また、タイマ割り込み処理の実行中に電源断予告信号を受信すると、タイマ割り込み処理が終了してメインループに復帰した後に電源断時退避処理が起動する。但し、電源断時退避処理の実行中にはシリアル通信受信割り込み処理及びメイン割り込み処理は起動せず、電源断時退避処理の実行中に割り込み発生要因が成立した場合には、電源断時退避処理の終了を待って対応する割り込み処理が起動する。なお、割り込み処理は、割り込み先の処理(現在実行中の処理)が割り込み許可状態であることを条件として起動する。
また、メイン割り込み処理は、入力ポート1及び入力ポート2の内容を取得して保存する処理(図13のステップS123、S126)と、ポート入力処理で取得した情報に基づいて遊技球が入賞したか否かを判定する入賞判定処理(入力ポート1のオンエッジ検出フラグを生成する処理(図13のステップS125)、入力ポート2のオンエッジ検出フラグを生成する処理(図13のステップS128))と、大当たり遊技状態を生成するか否かを判定するための電子的な当否抽選を入賞判定処理での判定結果に応じて実行する大当たり判定処理(図12のスイッチ管理処理(ステップS69)及び特別遊技管理処理(ステップS70))と、入賞判定処理での判定結果に応じた払出コマンド送信信号を生成する払出制御管理処理(図12のステップS74)と、払出制御管理処理で生成した払出コマンド送信信号を払出制御装置71に送信する出力処理(図12のステップS79)とを含む。メインCPU73は、タイマ割り込み処理の実行中は電源断時退避処理の割り込みを禁止する一方、実行中のタイマ割り込み処理において入賞判定処理の実行前に電源断予告信号を受信した場合(図13のステップS124:YES、ステップS127:YES)には、入賞判定処理を実行しない。
(CPU初期化処理)
パチンコ機Pに電源が投入されると、主制御CPU73はCPU初期化処理を開始する。CPU初期化処理によって、パチンコ機Pの安定した遊技動作が保証される。
図7〜図9は、主制御CPU73が実行するCPU初期化処理を示すフローチャートである。
CPU初期化処理の開始により、スタックポインタにスタック領域の先頭アドレス(アドレス初期値)をセットし(ステップS1)、ベクタ方式の割込モード(割り込みモードモード2)に設定する(ステップS2)。これにより、主制御CPU73は、任意のアドレス(但し最下位ビットは0)を割込ベクタとして参照し、指定の割込ハンドラを実行することができる。
次に、割り込みベクタテーブルを設定し(ステップS3)、内蔵レジスタを設定し(ステップS4)、入力ポート0の内容を2回読み込み(ステップS5)、入力ポート0の結果を論理変換してRAM75の退避領域に退避させる(ステップS6)。
次に、リセット時待機処理を実行する。この処理では、リセットスタート(例えば電源投入)時にある程度の待機時間(例えば数千ms程度)を確保し、その間に入力ポート2の電源断予告信号をチェックする。本実施形態では、サブ制御起動待ちとして2秒分のループカウンタをセットし(ステップS7)、ループカウンタの値をデクリメントしながら電源断予告信号の入力ポートをビットチェックする(ステップS8)。2秒間経過する前(ループカウンタが0になる前)に電源断予告信号が入力すると(ステップS9:YES)、リセット時待機処理の最初(ステップS7)に戻る。電源断予告信号が入力せずに2秒間が経過するまでこの処理を継続し(ステップS9:YES→ステップS7、又はステップS9:NO→ステップS10:NO→ステップS8)、電源断予告信号が入力せずに2秒間が経過すると(ステップS9:NO→ステップS10:YES)、この処理を終了する。これにより、例えばサブ制御装置72の起動処理終了前の主制御装置70からサブ制御装置72への制御信号の送信を防止することができる。また、主電源スイッチ(図示省略)の投入と切断の操作が短時間(1〜2秒程度)内に繰り返し行われた場合のシステム保護を図ることができる。
次に、RAM75のワーク領域に対するアクセスを許可する(ステップS11)。具体的には、ワーク領域のRAMプロテクト設定値をリセットする。これにより、以後はRAM75のワーク領域に対するアクセスが許可された状態となる。
次に、ステップS6で退避した入力ポート0の結果を復帰させる(ステップS12)。
次に、ステップS301〜ステップS314の処理を実行することによって、CPU初期化処理の開始要因がIAT、割込異常、RWMクリア及びシステムリセットであるか否かを順次判定し、開始要因がIAT、割込異常、RWMクリア及びシステムリセットの何れでもない場合にバックアップ破損であるか否かを判定し、バックアップ破損ではないと判定した場合に正常起動(通常起動及び瞬断)であると判定する。
先ず、起動用のサブコマンドに「IAT」を示す判定結果コマンドを上書き設定し(ステップS301)、IAT信号のビットがオンか否かを判定する(ステップS302)。
IAT信号のビットがオンの場合(ステップS302:YES)、IATが開始要因であると判定して、後述する初期化処理(ステップS16〜ステップS19)を実行する。
IAT信号のビットがオフの場合(ステップS302:NO)は、IATではない(正常起動(通常起動、瞬断)、割込異常、RWMクリア、システムリセット又はバックアップ破損の何れか)と判定し、起動用のサブコマンドに「割込異常」を示す判定結果コマンドを上書き設定する(ステップS303)。
次に、リセット信号のビットがオンか否かを判定し(ステップS304)、リセット信号のビットがオフの場合(ステップS304:NO)、続けてバックアップ判定記憶領域のデータがバックアップ有効判定値か否かを判定する(ステップS305)。IATを除外した状態においてリセット信号のビットがオフとなる可能性があるのは、割込異常と瞬断の2つであり、割込異常と瞬断とではバックアップ判定記憶領域のデータが相違する(割込異常はデフォルト値であり、瞬断はバックアップ有効判定値である)ため、ステップS304とステップS305の判定を行うことによって、割込異常であるか否かの判定が可能となる。
バックアップ判定記憶領域のデータがバックアップ有効判定値ではない場合(ステップS305:NO)、割込異常が開始要因が割込異常であると判定して、初期化処理(ステップS16〜ステップS19)へ移行する。
リセット信号のビットがオンの場合(ステップS304:YES)、及びバックアップ判定記憶領域のデータがバックアップ有効判定値である場合(ステップS305:YES)、割込異常ではない(正常起動(通常起動、瞬断)、RWMクリア、システムリセット又はバックアップ破損の何れか)と判定し、起動用のサブコマンドに「RWMクリア」を示す判定結果コマンドを上書き設定する(ステップS306)。
次に、ステップS12で復帰させた入力ポート0のRWMクリア信号を参照し、RWMクリア信号のビットがオンか否かを判定する(ステップS307)。
RWMクリア信号のビットがオンの場合(ステップS307:YES)、CPU初期化処理の開始要因がRWMクリアであると判定して、初期化処理(ステップS16〜ステップS19)へ移行する。
RWMクリア信号のビットがオフの場合(ステップS307:NO)、RWMクリアではない(正常起動(通常起動、瞬断)、システムリセット又はバックアップ破損の何れか)と判定し、起動用のサブコマンドに「リセット発生」を示す判定結果コマンドを上書き設定する(ステップS308)。
次に、バックアップ判定記憶領域のデータがバックアップ有効判定値か否かを判定し(ステップS309)、バックアップ判定記憶領域のデータがバックアップ有効判定値ではない場合(ステップS309:NO)、続けてバックアップ判定記憶領域のデータがデフォルト値か否かを判定する(ステップS310)。IAT、異常割込及びRWMクリアを除外した状態においてバックアップ判定記憶領域のデータがバックアップ有効判定値ではない可能性があるのは、システムリセットとバックアップ破損の2つであり、システムリセットとバックアップ破損とではバックアップ判定記憶領域のデータが相違する(システムリセットはデフォルト値であり、バックアップ破損はデフォルト値ではない)ため、ステップS309とステップS310の判定を行うことによって、システムリセットであるか否かの判定が可能となる。
バックアップ判定記憶領域のデータがデフォルト値の場合(ステップS310:YES)、CPU初期化処理の開始要因がシステムリセットであると判定して、初期化処理(ステップS16〜ステップS19)へ移行する。
バックアップ判定記憶領域のデータがバックアップ有効判定値ではなく(ステップS309:NO)、且つデフォルト値でもない場合(ステップS310:NO)、バックアップ破損であると判定し、起動用のサブコマンドに「バックアップ破損」を示す判定結果コマンドを上書き設定して(ステップS313)、初期化処理(ステップS16〜ステップS19)へ移行する。
また、バックアップ判定記憶領域のデータがバックアップ有効判定値の場合(ステップS309:YES)、正常起動(通常起動、瞬断)及びバックアップ破損の可能性があるため、RAM75のワーク領域(使用禁止領域及びスタック領域を含むユーザワーク領域)のうち、バックアップ判定記憶領域及びサムチェックバッファを除く領域について、チェックサム値を算出し(ステップS311)、算出したチェックサム値が正常値か否かを判定する(ステップS312)。具体的には、ステップS311で算出したチェックサム値と、後述する電源断時退避処理(ステップS108)で保存したチェックサム値とを比較し、両者が一致する場合には正常値であると判定し、相違する場合には正常値ではないと判定する。
チェックサム値が正常値ではない場合(ステップS312:NO)、バックアップ破損であると判定し、起動用のサブコマンドに「バックアップ破損」を示す判定結果コマンドを上書き設定して(ステップS313)、初期化処理(ステップS16〜ステップS19)へ移行する。
一方、チェックサム値が正常値の場合(ステップS312:YES)、CPU初期化処理の開始要因が正常起動であると判定し、起動用のサブコマンドに「正常起動」を示す判定結果コマンドを上書き設定して(ステップS314)、復帰処理(ステップS13〜ステップS15)へ移行する。
復帰処理(ステップS13〜ステップS15)では、電源復帰時クリア領域(例えば、バックアップ判定記憶領域)をリセットした後(ステップS13)、演出制御復帰処理(ステップS14)及び払出制御復帰処理(ステップS15)を実行する。
演出制御復帰処理(ステップS14)では、サブ制御装置72に対し、電源復帰指定のサブコマンド(例えば機種指定コマンド、特別図柄確率状態指定コマンド、作動記憶数コマンド、回数切りカウンタ残数コマンド、特別遊技状態指定コマンド等)を送信する。これを受けたサブ制御装置72は、前回の電源遮断時に実行中であった演出状態(例えば、内部確率状態、演出図柄の表示態様、作動記憶数の演出表示態様、音響出力内容、各種ランプの発光状態等)を復帰させる。
また、電源復帰指定のサブコマンドには、ステップ314で設定された「正常起動」を示す判定結果コマンドが含まれる。「正常起動」を示す判定結果コマンドが含まれたサブコマンドを受信したサブ制御装置72は、演出表示装置31に「正常起動しています」等の文字を表示して正常起動である旨を報知する。なお、正常起動である旨の報知を省略し、後述するRWMをクリアする起動である旨の報知のみを実行してもよい。また、各種ランプ25,60や音発生装置97を制御して、所定の態様での発光や所定の音声(例えば「正常起動しています」等)の出力を行ってもよく、演出表示装置31による報知を省略してもよい。
払出制御復帰処理(ステップS15)では、払出制御装置71に対し、電源復帰指定の払出コマンドを送信する。これを受けた払出制御装置71は、前回の電源遮断時の状態を復帰させるとともに、払出禁止状態を解除する。
一方、初期化処理(ステップS16〜ステップS19)では、RAM75の使用禁止領域以外の記憶領域を全てクリアする(ステップS16)。これにより、RAM75のワーク領域及びスタックエリアは全て初期化される。
次に、RAM75にクリア起動時の初期値をセットすることによりRAM75の初期設定を行い(ステップS17)、演出制御初期化処理(ステップS18)及び払出制御初期化処理(ステップS19)を実行する。
演出制御初期化処理(ステップS18)では、サブ制御装置72に対し、RWMクリア指定のサブコマンドを送信する。これを受けたサブ制御装置72は、演出制御状態を初期化する。また、払出制御初期化処理(ステップS19)では、払出制御装置71に対し、RWMクリア指定の払出コマンドを送信する。これを受けた払出制御装置71は、払出制御状態を初期化するとともに、払出禁止状態を解除する。
また、RWMクリア指定のサブコマンドには、ステップ301で設定された「IAT」、ステップS303で設定された「割込異常」、ステップS306で設定された「RWMクリア」、S308で設定された「リセット発生」又はステップS313で設定された「バックアップ破損」の何れかを示す判定結果コマンドが含まれる。これらを示す判定結果コマンドが含まれたサブコマンドを受信したサブ制御装置72は、演出表示装置31に「RWMをクリアして起動しています」等の文字を表示してRWMをクリアする起動である旨を報知する。なお、各種ランプ25,60や音発生装置97を制御して、所定の態様での発光や所定の音声(例えば「ラムをクリアして起動しています」等)の出力を行ってもよく、演出表示装置31による報知を省略してもよい。また、例えば「IAT」を示す判定結果コマンドを受信した場合には「IATのためRWMをクリアして起動しています」の文字を表示するなどのように、報知の態様を、判定結果コマンドの種別に応じて相違させてもよい。
また、ステップS14又はステップS18におけるサブコマンドの送信に際し、判定結果(判定結果コマンド)をRAM75に記録するとともに、外部情報端子基板65を介してホールコンピュータ68へ送信する。
払出制御復帰処理(ステップS15)又は払出制御初期化処理(ステップS19)が終了すると、演出制御装置73に電源投入後のサブコマンドを送信した後(ステップS20)、入力ポート1の内容を取得し(ステップS21)、入力ポート2の内容を取得し(ステップS22)、乱数ラッチレジスタをクリアし(ステップS23)、主コマンド許可信号をセットし(ステップS24)、タイマ割り込み用カウンタをセットし(ステップS25)、割り込みデイジーチェンをリセットして(ステップS26)、メインループへ移行する。割り込みデイジーチェンをリセット(ステップS26)することにより、後述する電源断時退避処理におけるステップS113(図14参照)の判定がYESでCPU初期化処理へ移行した際に、割り込み処理から抜ける際のRETI処理を行っていないために、後述するメインループにおけるステップS45(図10参照)で割り込み許可を行っても各割り込み処理に移行しないといったことを防止している。
(メインループ)
図10は、主制御CPU73が実行するメインループを示すフローチャートである。
メインループでは、割り込みを禁止して(ステップS41)、初期値乱数更新処理(ステップS42)、主コマンド解析処理(ステップS43)、サブコマンド送信処理(ステップS44)を実行し、割り込みを許可した後(ステップS45)、その他乱数更新処理(ステップS46)を実行して、ステップS41へ戻る。従って、メインループに対して電源断時退避処理の割り込みが許容される期間は、その他乱数更新処理(ステップS46)の実行中となる。
初期値乱数更新処理(ステップS42)では、当たり図柄乱数用初期値更新乱数を更新する。当たり図柄乱数用初期値更新乱数とは、当たり図柄乱数の初期値及び終了値を決定するためのソフトウェア乱数である。当たり図柄乱数とは、大当たりの当選種別の抽選に用いるソフトウェア乱数である。なお、割込を禁止した状態(ステップS41)でステップS42を実行するのは、タイマ割り込み処理(図12のステップS67)でも同様の処理を実行するため、これとの重複(競合)を防止するためである。また、本実施形態の当たり決定乱数(普図当選決定乱数)と大当たり決定乱数(特図当選決定乱数)とは、ハード乱数発生回路76により発生されるハードウェア乱数であり、その更新周期はタイマ割込周期(例えば数ms)よりもさらに高速(例えば数μs)であるため、大当たり決定乱数の初期値を更新する必要はない。
主コマンド解析処理(ステップS43)は、払出制御装置71から受信したコマンド(各種エラー発生指定の払出コマンドやエラー解除指定の払出コマンドを含む)を解析する処理である。サブコマンド送信処理(ステップS44)では、初期設定後に送信すべきサブコマンド(演出制御に必要なサブコマンド)を演出制御装置72に送信する。その他乱数更新処理(ステップS46)では、例えばリーチグループ決定乱数やリーチモード決定乱数や変動パターン乱数などを更新する。リーチグループ決定乱数とは、特別図柄変動パターンのリーチグループの抽選に用いるソフトウェア乱数であり、リーチモード決定乱数とは、特別図柄変動パターンのリーチモードの抽選に用いるソフトウェア乱数であり、変動パターン乱数とは、特別図柄変動パターンの抽選に用いるソフトウェア乱数である。
(シリアル通信受信割り込み処理)
図11は、主制御CPU73が実行するシリアル通信受信割り込み処理を示すフローチャートである。主制御CPU73は、メインループの割り込み許可中又はタイマ割り込み処理の割り込み許可中において、主コマンド(例えば、払出制御装置71から入力する各種の払出コマンド)を受信すると、受信した主コマンドを優先して処理するためにシリアル通信受信割り込み処理を割り込ませる。
図11に示すように、シリアル通信受信割り込み処理では、AFレジスタの値をRAM75の退避領域に退避させ(ステップS51)、チャンネルA(CHA)のステータスレジスタの内容をロードし(ステップS52)、受信FIFOにデータがあるか否かをチェックし(ステップS53)、CHAデータレジスタから受信値を取得し(ステップS54)、受信FIFOにデータが無いか否かを判定し(ステップS55)、受信FIFOにデータがない場合(ステップS55:YES)には、ステップS51で退避させたAFレジスタの値を復帰させ(ステップS57)、割り込みを許可した後(ステップS58)、シリアル通信受信割り込み処理を終了する。一方、受信FIFOにデータがある場合(ステップS55:NO)、主コマンドバッファに受信データを格納し(ステップS56)、ステップS51で退避させたAFレジスタの値を復帰させ(ステップS57)、割り込みを許可した後(ステップS58)、シリアル通信受信割り込み処理を終了する。シリアル通信受信割り込み処理の終了により、メインループ(スタックポインタで指示されるプログラムアドレス)に復帰する。
(タイマ割り込み処理)
図12は、主制御CPU73が実行するタイマ割り込み処理を示すフローチャートである。主制御CPU73は、カウンタ/タイマ回路は所定周期毎に割込要求信号を発生し、割込要求信号の発生に基づき、割り込み許可中のメインループにタイマ割り込み処理を割り込ませる。
図12に示すように、タイマ割り込み処理では、メインループの実行中に使用していた全てのレジスタの値をRAM75の退避領域に退避させる(ステップS61)。値を退避させた後のレジスタには、タイマ割り込み処理の中で別の値を書き込むことができる。
次に、割り込みフラグを初期化し(ステップS62)、割り込みを許可し(ステップS63)、ダイナミックポート出力処理を実行した後(ステップS64)、ポート入力処理を実行する(ステップS65)。割り込みフラグの初期化(ステップS62)により、割り込みフラグが4ms毎にセットされ、タイマ割り込み処理が4ms毎に周期的に実行される。
ポート入力処理(ステップS65)では、図13に示すように、オンエッジ検出フラグをクリアし(ステップS121)、入力ポート0の内容を取得・保存し(ステップS122)、入力ポート1の内容を取得・保存した後(ステップS123)、電源断予告信号を受信しているか否かを判定する(ステップS124)。具体的には、電源断予告信号の入力ポートをビットチェックし、電源断予告信号が入力しているか否かを判定する。
電源断予告信号を受信していない場合(ステップS124:NO)には、入力ポート1のオンエッジ検出フラグを生成し(ステップ125)、電源断予告信号を受信している場合(ステップS124:YES)には、入力ポート1のオンエッジ検出フラグを生成しない。大入賞口52及び一般入賞口37への遊技球の入賞の検知は、大入賞球検知センサ58及び一般入賞球検知センサ59にそれぞれに対応する受信記憶領域(1ビット)の受信状態への変化(立ち上がり)を検出することによって行われ、例えば、一般入賞球検知センサ59に対応する受信記憶領域が受信状態に切り替わっていた場合、対応するオンエッジ検出フラグを、電源断予告信号を受信していなければオンに設定し、電源断予告信号を受信していればオンに設定せずにオフのまま維持する。
次に、入力ポート1と同様に、入力ポート2の内容を取得・保存した後(ステップS126)、電源断予告信号を受信しているか否かを判定する(ステップS127)。
電源断予告信号を受信していない場合(ステップS127:NO)には、入力ポート2のオンエッジ検出フラグを生成して(ステップ128)、本処理を終了し、電源断予告信号を受信している場合(ステップS127:YES)には、入力ポート2のオンエッジ検出フラグを生成せずに、本処理を終了する。第1始動入賞口35及び第2始動入賞口36への遊技球の入賞の検知は、第1特図始動球検知センサ56及び第2特図始動球検知センサ57にそれぞれに対応する受信記憶領域(1ビット)の受信状態への変化(立ち上がり)を検出することによって行われ、例えば、第2特図始動球検知センサ57に対応する受信記憶領域が受信状態に切り替わっていた場合、対応するオンエッジ検出フラグを、電源断予告信号を受信していなければオンに設定し、電源断予告信号を受信していればオンに設定せずにオフのまま維持する。また、スルーチャッカ32への遊技球の通過の検知は、ゲート通過球検知センサ55に対応する受信記憶領域(1ビット)の受信状態への変化(立ち上がり)を検出することによって行われ、ゲート通過球検知センサ55に対応する受信記憶領域が受信状態に切り替わっていた場合、対応するオンエッジ検出フラグを、電源断予告信号を受信していなければオンに設定し、電源断予告信号を受信していればオンに設定せずにオフのまま維持する。
このように、ポート入力処理では、ゲート通過球検知センサ55からの通過検知信号や、第1特図始動球検知センサ56、第2特図始動球検知センサ57、大入賞球検知センサ58、及び一般入賞球検知センサ59からの入賞検知信号の入力状態(オン/オフ)をリードする。電源断発生時ではない場合には、受信記憶領域の受信状態への変化を検出することによって遊技球の通過や入賞を検知し、通過や入賞を検知すると、対応するオンエッジ検出フラグをオンに設定した後、本処理を終了する。一方、電源断発生時の場合には、遊技球の通過や入賞を検知せずに、本処理を終了する。本処理を終了すると、図12のタイマ更新処理(ステップS66)及び初期値乱数更新処理(ステップS67)を実行する。
タイマ更新処理(ステップS66)では、カウンタ/タイマ回路のカウント値を初期値に更新して周期のカウントを再開する。初期値乱数更新処理(ステップS67)では、メインループの初期値乱数更新処理(図10のステップS42)と同様の処理を実行する。
次に、当たり図柄乱数更新処理を実行する(ステップS68)。当たり図柄乱数更新処理では、大当たり図柄抽選用の当たり図柄乱数を発生させるためのカウンタの値を更新する。カウンタの値は、RAM75のカウンタ領域にてインクリメントされ、それぞれ規定の範囲内でループする。
次に、スイッチ管理処理を実行する(ステップS69)。スイッチ管理処理では、ポート入力処理(ステップS65)で検知された第1始動入賞口35への遊技球の入賞、第2始動入賞口36への遊技球の入賞、及びスルーチャッカ32への遊技球の通過に基づいて、各当否判定処理に用いるハード乱数を取得する。
具体的には、第1始動入賞口35への遊技球の入賞を検知している場合(対応するオンエッジフラグがオンの場合)、RAM75の第1特図保留乱数記憶領域に記憶された第1特図保留乱数の数が上限数(4個)未満であるか否かを判定し、上限数に達していなければ、第1特図当たり決定乱数を取得し、第1特図保留乱数として第1特図保留乱数記憶領域に記憶する。一方、第1特図保留乱数の数が上限数に達している場合には、第1特図当たり決定乱数を取得しない。
同様に、第2始動入賞口36への遊技球の入賞を検知している場合(対応するオンエッジフラグがオンの場合)、RAM75の第2特図保留乱数記憶領域に記憶された第2特図保留乱数の数が上限数(4個)未満であるか否かを判定し、上限数に達していなければ、第2特図当たり決定乱数を取得し、第2特図保留乱数として第2特図保留乱数記憶領域に記憶する。一方、第2特図保留乱数の数が上限数に達している場合には、第2特図当たり決定乱数を取得しない。
スルーチャッカ32への遊技球の通過を検知している場合(対応するオンエッジフラグがオンの場合)、RAM75の普図保留乱数記憶領域に記憶された普図保留乱数の数が上限数(4個)未満であるか否かを判定し、上限数に達していなければ、普図当たり決定乱数を取得し、普図保留乱数として普図保留乱数記憶領域に記憶する。一方、普図保留乱数の数が上限数に達している場合には、普図当たり決定乱数を取得しない。
また、第1特図当たり決定乱数又は第2特図当たり決定乱数を取得する場合、図柄表示用乱数として用いるソフト乱数を取得する。図柄表示乱数は、独立する複数の乱数(当たり図柄乱数、リーチグループ決定乱数、リーチモード決定乱数、及び変動パターン乱数)から構成され、図柄表示乱数も、特図保留乱数と同様に、上限数(4個)までRAM75に記憶される。なお、スルーチャッカ32への遊技球の通過を検知している場合(普通図柄の場合)にも、特別図柄の場合と同様に図柄表示用乱数を取得して記憶するが、その内容は特別図柄と比較して簡素化されている。
このように、第1特図当たり決定乱数又は第2特図当たり決定乱数、及び対応する図柄表示用乱数(当たり図柄乱数、リーチグループ決定乱数、リーチモード決定乱数、及び変動パターン乱数)を取得するタイミングは、第1始動入賞口35又は第2始動入賞口36への遊技球の入賞時(第1特図始動球検知センサ56又は第2特図始動検知センサ56による遊技球の検知時)であり、普図当たり決定乱数及び対応する図柄表示用乱数を取得するタイミングは、スルーチャッカ32への遊技球の通過時(ゲート通過球検知センサ55による遊技球の検知時)である。
次に、特別遊技管理処理を実行する(ステップS70)。特別遊技管理処理では、第1特別図柄又は第2特別図柄に関する内部抽選(特別図柄判定処理)や、第1特図表示装置40及び第2特図表示装置41による図柄の変動及び停止の表示態様の決定(図柄及び変動パターン決定処理)を実行する。
特別図柄判定処理では、第1特図保留乱数記憶領域に最先に記憶された第1特図保留乱数、又は第2特図保留乱数記憶領域に最先に記憶された第2特図保留乱数の何れか一方を読み出し、読み出した特図保留乱数(第1特図当たり決定乱数又は第2特図当たり決定乱数)が当選であるか否かを、予め設定された第1特図当否判定テーブル又は第2特図当否判定テーブルを参照して決定する(特図抽選)。第1特図保留乱数は、第1特図当たり決定乱数として読み出されることによって第1特図保留乱数記憶領域から消去され、第2特図保留乱数は、第2特図当たり決定乱数として読み出されることによって第2特図保留乱数記憶領域から消去される。第1特図保留乱数と第2特図保留乱数との双方が記憶されている場合、第2特図保留乱数を優先して読み出してもよく、記憶領域(第1特図であるか第2特図であるか)に関わらず最先に記憶された保留球乱数を読み出してもよい。
図柄及び変動パターン決定処理では、特図停止図柄及び変動パターン(変動パターンコマンド)を、上記読み出した第1特図当たり決定乱数又は第2特図当たり決定乱数と、この当たり決定用乱数に対応して最先に記憶された当たり図柄乱数、リーチグループ決定乱数、リーチモード決定乱数、及び変動パターン乱数との組合せに応じて、予め設定されたパターン決定テーブルを参照して決定し、決定した変動パターンコマンドをポート出力要求バッファに格納する。当たり図柄乱数は、特図の停止図柄を規定するとともに、特図抽選に当選している場合には生起する大当たり遊技状態の態様(種別)を規定する。変動パターンは、変動時間、リーチの発生の有無、リーチ発生時の基本演出パターン等を規定する。
特図抽選に当選すると、当たり図柄乱数に応じた態様の大当たり遊技状態を生起する。大当たりの態様として、例えば2R通常当たり、2R確変当たり、15R通常当たり、15R確変当たり等が設定されており、2R当たりでは、アタッカー装置39を2ラウンド分開閉し、15R当たりでは、アタッカー装置39を15ラウンド分開閉する。また、通常当たりでは、大当たり遊技終了(アタッカー装置39の作動終了)後に通常遊技状態又は時短遊技状態へ移行する場合があり、確変当たりでは、大当たり遊技終了後に確変遊技状態へ移行する場合がある。
確変遊技状態では、特別図柄判定処理において参照する当否判定テーブルを、通常用の低確率判定テーブルから高確率判定テーブル(通常用よりも当選確率が高い判定テーブル)に変更する。確変遊技状態は、次回の特図当選まで継続するが、時短遊技状態は、特図抽選を所定回数実行することによって終了する。
また、特別遊技管理処理では、第1特別図柄及び第2特別図柄の変動の開始及び終了、大当たり遊技状態の開始及び終了、大当たり遊技状態におけるラウンド数、確変遊技状態の開始及び終了、時短遊技状態の開始及び終了などの管理を行い、これらの管理に関する演出関連コマンド(例えば、特別図柄の変動の開始を示す変動開始指示コマンドや終了を示す変動終了指示コマンドなど)をポート出力要求バッファに格納する。
次に、普通遊技管理処理を実行する(ステップS71)。普通遊技管理処理では、普通図柄に対応する内部抽選(普通図柄判定処理)や、普図表示装置42による図柄の変動及び停止の表示態様の決定(図柄及び変動パターン決定処理)などを実行する。
普通図柄判定処理では、普図保留乱数記憶領域に最先に記憶された普図保留乱数を読み出し、読み出した普図保留乱数(普図当たり決定乱数)が当選であるか否かを、予め設定された普図当否判定テーブルを参照して決定する(普図抽選)。普図保留乱数は、普図当たり決定乱数として読み出されることによって普図保留乱数記憶領域から消去される。
図柄及び変動パターン決定処理では、普図停止図柄及び変動パターン(変動パターンコマンド)を、上記読み出した普図当たり決定乱数と、この当たり決定用乱数に対応して最先に記憶された図柄表示用乱数の組合せに応じて、予め設定されたパターン決定テーブルを参照して決定する。
なお、普通図柄判定処理において普図抽選に当選すると、電動チューリップ33が所定回数(本実施形態では1回)開放される。また、確変遊技状態及び時短遊技状態では、普通図柄判定処理において参照する普図当否判定テーブルを、通常用の低確率判定テーブルから高確率判定テーブル(通常用よりも当選確率が高い判定テーブル)に変更し、図柄及び変動パターン決定処理において参照するパターン決定テーブルを、通常用のパターン決定テーブルから時短用パターン決定テーブル(通常用よりも変動時間が短い決定テーブル)に変更する。
次に、エラー管理処理を実行する(ステップS72)。エラー管理処理では、ポート入力処理(ステップS122)で保存した入力ポート0のエラー検知信号の入力が確認された場合、磁石等を使用した不正が行われている可能性があるため、以降の通常の処理を実行せずに所定のエラー処理を実行する。
次に、入賞口スイッチ処理を実行する(ステップS73)。入賞口スイッチ処理では、ポート入力処理(ステップS65)で検知された第1始動入賞口35、第2始動入賞口36、一般入賞口37、及び大入賞口52への遊技球の入賞情報(各オンエッジフラグのオン情報)を取得する。
次に、払出制御管理処理を実行する(ステップS74)。払出制御管理処理では、入賞口スイッチ処理(ステップS73)において取得した入賞情報に基づき、払出制御装置71に対して賞球動作の実行及び賞球個数を指示する賞球指示コマンドを生成し、ポート出力要求バッファに格納する。
次に、外部情報処理を実行する(ステップS75)。外部情報処理では、外部情報端子基板65を介して遊技場のホールコンピュータ68へ出力する外部情報信号(例えば賞球情報、扉開放情報、図柄確定回数情報、大当たり情報、始動口情報等)をポート出力要求バッファに格納する。
次に、試験信号管理処理を実行する(ステップS76)。試験信号管理処理では、主制御CPU73が自己の内部状態(例えば、普通図柄遊技管理状態、特別図柄遊技管理状態、大当たり中、確率変動機能作動中、時間短縮機能作動中)を表す各種の試験信号を生成し、これらをポート出力要求バッファに格納する。この試験信号により、例えば主制御装置70の外部で主制御CPU73の内部状態を試験することができる。
次に、LED表示設定処理を実行する(ステップS77)。LED表示設定処理では、第1特図表示装置40、第2特図表示装置41、普図表示装置42、状態表示装置43等の点灯状態を制御するために各LEDに対して印加するバイトデータとしての駆動信号を、ポート出力要求バッファに格納する。
例えば、第1特図表示装置40及び第2特図表示装置41に対しては、特別遊技管理処理(ステップS70)において決定した特図停止図柄及び変動パターンでの点灯表示を行わせる駆動信号を格納し、普図表示装置42に対しては、普通遊技管理処理(ステップS71)において決定した普図停止図柄及び変動パターンでの点灯表示を行わせる駆動信号を格納し、第2特図保留数表示部46に対しては、第2特図保留乱数記憶領域に記憶された第2特図保留乱数の数を示す点灯表示を行わせる駆動信号を格納し、普図保留数表示部47に対しては、普図保留乱数記憶領域に記憶された普図保留乱数の数を示す点灯表示を行わせる駆動信号を格納し、ラウンド数表示部44に対しては、特別遊技管理処理(ステップS70)において管理されている大当たり遊技中の現在のラウンド数を示す点灯表示を行わせる駆動信号を格納する。
次に、ソレノイド出力イメージ合成処理を実行する(ステップS78)。ソレノイド出力イメージ合成処理では、アタッカー装置39及び電動チューリップ33を開閉制御するためにアタッカー駆動装置54及び電動チューリップ駆動装置51に対して出力する制御コマンドとしての駆動信号を、ポート出力要求バッファに格納する。
例えば、アタッカー駆動装置54に対しては、特別遊技管理処理(ステップS70)において管理されている大当たり遊技中のラウンドに基づいてアタッカー装置39を開閉させる駆動信号を格納し、電動チューリップ駆動装置51に対しては、普通遊技管理処理(ステップS71)における普図抽選の当選に応じて電動チューリップ33を所定回数開放させる駆動信号を格納する。
次に、ポート出力処理を実行する(ステップS79)。ポート出力処理では、上述の各処理(ステップS70、ステップS74〜ステップS78)においてポート出力要求バッファに格納された各信号を、対応する送信対象に対してポート出力する。
例えば、特別遊技管理処理(ステップS70)において格納された変動パターンコマンドや演出関連コマンドをサブ制御装置72に送信し、払出制御管理処理(ステップS74)において格納された賞球指示コマンドを払出制御装置71に送信し、外部情報処理(ステップS75)において格納された外部情報信号を外部情報端子基板65に送信し、LED表示設定処理(ステップS77)において格納された駆動信号を各表示装置40〜43に送信し、ソレノイド出力イメージ合成処理(ステップS78)において格納された駆動信号をアタッカー駆動装置54や電動チューリップ駆動装置51に送信する。
最後に、ステップS61において退避させた全てのレジスタの値を復帰させ(ステップS80)、タイマ割り込み処理を終了する。タイマ割り込み処理の終了により、メインループ(スタックポインタで指示されるプログラムアドレス)に復帰する。
(電源断時退避処理)
図14は、主制御CPU73が実行する電源断時退避処理を示すフローチャートである。主制御CPU73は、メインルーチンの割り込み許可中に電源断予告信号を受信すると、電源断時退避処理を割り込ませる。また、タイマ割り込み処理の実行中に電源断予告信号を受信すると、タイマ割り込み処理が終了してメインループに復帰した後に電源断時退避処理を割り込ませる。
図14に示すように、電源断時退避処理では、AFレジスタの値をRAM75の退避領域に退避させ(ステップS101)、電源断予告信号を受信しているか否かを判定する(ステップS102)。具体的には、電源断予告信号の入力ポートをビットチェックし、電源断予告信号が入力しているか否かを判定する。このように電源断時退避処理の開始直後に電源断予告信号を再度チェックすることによって、ノイズ等による誤検知に起因したステップS106以降の処理の実行を回避することができる。
電源断予告信号を受信していない場合(ステップS103:NO)には、ステップS101で退避させたAFレジスタの値を復帰させ(ステップS104)、割り込みを許可した後(ステップS105)、電源断時退避処理を終了する。電源断時退避処理の終了により、メインループ(スタックポインタで指示されるプログラムアドレス)に復帰する。
一方、電源断予告信号を受信している場合(ステップS103:YES)には、出力ポート(出力ポート要求バッファ)の全てにクリア値を出力する(ステップS106)。これにより、本処理以前に出力ポート要求バッファに格納された信号は全て削除され、送信されない。
次に、RAM75のワーク領域(使用禁止領域及びスタック領域を含むユーザワーク領域)のうち、バックアップ判定記憶領域及びサムチェックバッファを除く領域について、チェックサム値を算出し、算出したチェックサム値をサムチェックバッファに保存する(ステップS108)。
次に、バックアップ判定記憶領域にバックアップ有効判定値(バックアップ有効判定フラグ)を保存し(ステップS108)、RAM75のワーク領域に対するアクセスを禁止して(ステップS109)、電源断時待機処理を実行する。
電源断時待機処理では、電源断時にある程度の待機時間(例えば数十ms程度)を確保し、その間に入力ポート2の電源断予告信号をチェックする。本実施形態では、リセット信号待ちとして80ms分のループカウンタをセットし(ステップS110)、ループカウンタの値をデクリメントしながら電源断予告信号の入力ポートをビットチェックする(ステップS111)。80ms間経過する前(ループカウンタが0になる前)に電源断予告信号が入力すると(ステップS112:YES)、電源断時待機処理の最初(ステップS110)に戻る。電源断予告信号が入力せずに80ms間が経過するまでこの処理を継続し(ステップS112:YES→ステップS110、又はステップS112:NO→ステップS113:NO→ステップS111)、電源断予告信号が入力せずに80ms間が経過すると(ステップS112:NO→ステップS113:YES)、電源断時退避処理を終了し、CPU初期化処理(図7のステップS1)へ移行する。電源断時待機処理によって、電源断予告信号が所定時間(80ms)以上入力しない安定した状態となった後にCPU初期化処理へ移行させることができ、処理の安定化及びシステム保護を図ることができる。
このように主制御装置70のタイマ割り込み処理は、電源断時退避処理に優先してメインループに割り込むので、タイマ割り込み処理の実行中に電源断が発生した場合であっても、タイマ割り込み処理は電源断時退避処理によって中断せず、電源断時退避処理はタイマ割り込み処理の終了を待って開始される。従って、電源断時退避処理において退避させるデータ量を最小限に抑えるとともに、復帰プログラムの複雑化を回避することができる。
すなわち、電源断時退避処理において、RAM75のワーク領域の内容をバックアップ情報としてRAM75の退避領域に退避させるバックアップ情報退避処理や、退避させたバックアップ情報をRAM75のワーク領域に復帰させて前回の電源断発生時に実行中であった遊技状態に復帰させる状態復帰処理を実行しないので、RAM75の退避領域の記憶量を低減させることができる。また、バックアップ情報退避処理や状態復帰処理を実行しないので、復帰プログラムの簡素化を図ることができる。
また、ポーリングによって電源断予告信号を監視していないので、主制御CPU73の処理負担を軽減することができる。
さらに、メイン割り込み処理において、入賞判定処理(ステップS125、ステップS128)の実行前に電源断予告信号を受信した場合(ステップS124:YES、ステップS127:YES)には入賞判定処理を実行しないので、電源断によるノイズ等に起因して入賞球検知信号が誤って主制御装置に入力しても、誤入力に基づく払出(ステップS73、ステップS4)や当否抽選(ステップS69〜ステップS71)が実行されることはない。従って、例えば、故意に電源断を発生させるという遊技者の不正行為に起因して、賞球の払い出しや大当たり遊技状態の生成が行われることがなく、賞球の不正な取得を防止することができる。
[払出制御装置71の入力ポートの説明]
払出制御装置71の複数の入出力ポートのうち、入力ポート0には、払出計数スイッチ84からの払出計数信号、CRユニット50からの貸出装置READY信号及び台端末貸出要求完了確認信号、主制御CPU73からの主コマンド許可信号、払出コマンド送信信号及び発射許可信号、及び電源供給装置61からの電源断予告信号及びRWMクリア信号が割り当てられている。入力ポートには、各信号の受信時に状態が切り替わる(1/0で切り替わる)1ビットの受信記憶領域が設けられ、各信号の入力の確認は、対応する受信記憶領域のビットチェックによって行われる。入力ポート0は、電源断の発生時に電源断予告信号を受信する電源断信号受信手段として機能し、入力ポート0に電源断予告信号が入力している間、対応する受信記憶領域の状態が切り替わる。
[払出制御装置71が実行する制御処理]
次に、払出制御装置71の払出制御CPU80がROM81に記憶されている遊技制御用プログラム(払出発射制御プログラム)に従って実行する制御処理について説明する。払出制御CPU80が実行する制御処理は、メインルーチンとしてのCPU初期化処理及びメインループ、シリアル通信受信割り込み処理、タイマ割り込み処理(メイン割り込み処理)、並びに電源断時退避処理を含み、払出制御CPU80は、これらの処理の実行を制御する。
図15(a)に示すように、シリアル通信受信割り込み処理の割り込み発生要因は主コマンドの受信によって成立し、タイマ割り込み処理の張り込み発生要因は、所定周期(本実施形態では1.4ms)毎に成立し、電源断時退避処理の割り込み発生要因は電源断予告信号の受信によるINT割り込み発生によって成立する。シリアル通信受信割り込み処理とタイマ割り込み処理と電源断時退避処理とは、この順番で割り込み優先順位が高くなるように設定されている。また、シリアル通信受信割り込み処理と電源断時退避処理とは多重割り込みを禁止し、タイマ割り込み処理は多重割り込みを許可する。
すなわち、払出制御装置71では、図15(b)に示すように、メインルーチンが基本処理として繰り返して実行され、タイマ割り込み処理が所定周期毎に起動してメインループに割り込む。メインルーチンの実行中又はタイマ割り込み処理の実行中に主コマンドを受信すると、シリアル通信受信割り込み処理が起動してメインループ又はタイマ割り込み処理に割り込む(図示省略)。メインルーチンの実行中(シリアル通信受信割り込み処理及びタイマ割り込み処理の実行中ではなく、主コマンドも受信していない)に電源断予告信号を受信すると、電源断時退避処理が起動してメインルーチンに割り込む。また、タイマ割り込み処理の実行中に電源断予告信号を受信すると、タイマ割り込み処理が終了してメインループに復帰した後に電源断時退避処理が起動する。但し、電源断時退避処理の実行中にはシリアル通信受信割り込み処理及びメイン割り込み処理は起動せず、電源断時退避処理の実行中に割り込み発生要因が成立した場合には、電源断時退避処理の終了を待って対応する割り込み処理が起動する。なお、割り込み処理は、割り込み先の処理(現在実行中の処理)が割り込み許可状態であることを条件として起動する。
また、メイン割り込み処理は、入力ポート0の内容(払出計数信号を含む)を取得する処理(図20のステップS262)と、入力ポート0の内容を更新して保存する処理(図20のステップS264)と、払出モータ83による1回の払出動作の完了を検出する払出検出処理(更新した入力ポート0の払出計数信号の立ち下がりを検出し、立ち下がりを検出したときに立ち下がりの検出(オンエッジ)を保存する処理(図20のステップS265))と、払出検出処理において1回の払出動作の完了を検出したときにRAM82に記憶された払出残数を1個減算する払出残数減算処理(図19のステップS247)と、RAM82に記憶された払出残数が正数であるときに払出モータ83に1回の払出動作を実行させるための払出駆動制御コマンドを生成し(図19のステップS247)、生成した払出駆動制御コマンド送信信号を払出モータ83に送信する払出指示処理(図19のステップS252)とを含む。メインCPU73は、タイマ割り込み処理の実行中は電源断時退避処理の割り込みを禁止する一方、実行中のタイマ割り込み処理において払出検出処理の実行前に電源断予告信号を受信した場合(図20のステップS263:YES)には、払出検出処理を実行しない。
(CPU初期化処理)
パチンコ機Pに電源が投入されると、払出制御CPU80はCPU初期化処理を開始する。CPU初期化処理によって、払出制御装置71の安定した払出動作及び発射動作が保証される。
図16は、払出制御CPU80が実行するCPU初期化処理を示すフローチャートである。
CPU初期化処理の開始により、スタックポインタにスタック領域の先頭アドレス(アドレス初期値)をセットし(ステップS201)、ベクタ方式の割込モード(割り込みモードモード2)に設定する(ステップS202)。これにより、払出制御CPU80は、任意のアドレス(但し最下位ビットは0)を割込ベクタとして参照し、指定の割込ハンドラを実行することができる。
次に、割り込みベクタテーブルを設定し(ステップS203)、内蔵レジスタを設定して(ステップS204)、リセット時待機処理を実行する。この処理では、リセットスタート(例えば電源投入)時にある程度の待機時間(例えば百ms程度)を確保し、その間に入力ポート0の電源断予告信号をチェックする。本実施形態では、供給電源安定待ち時間として100ミリ秒分のループカウンタをセットし(ステップS205)、ループカウンタの値をデクリメントしながら電源断予告信号の入力ポートをビットチェックする(ステップS206)。100ミリ秒間経過する前(ループカウンタが0になる前)に電源断予告信号が入力すると(ステップS207:YES)、リセット時待機処理の最初(ステップS205)に戻る。電源断予告信号が入力せずに100ミリ秒間が経過するまでこの処理を継続し(ステップS207:YES→ステップS205、又はステップS207:NO→ステップS208:NO→ステップS206)、電源断予告信号が入力せずに100ミリ秒間が経過すると(ステップS207:NO→ステップS208:YES)、この処理を終了する。
次に、RAM82のワーク領域に対するアクセスを許可する(ステップS209)。具体的には、ワーク領域のRAMプロテクト設定値をリセットする。これにより、以後はRAM82のワーク領域に対するアクセスが許可された状態となる。
次に、RAM82にバックアップ有効判定値(バックアップ有効判定フラグ)が保存されているか否かを判定する。具体的には、RAM82のバックアップ判定記憶領域のデータをバックアップ有効判定値と比較し(ステップS210)、両者が一致している場合(バックアップ有効判定フラグがセットされている場合)には、電源断時退避処理が適正に終了した後のCPU初期化処理であると判定し(ステップS211:NO)、不一致の場合(バックアップ有効判定フラグがセットされていない場合)には、電源断時退避処理が適正に終了した後のCPU初期化処理ではないと判定する(ステップS211:YES)。
電源断時退避処理が適正に終了した後のCPU初期化処理である場合(ステップS211:NO)、RAM82のバックアップ情報についてサムチェックを実行する。具体的には、RAM82のワーク領域(使用禁止領域及びスタック領域を含むユーザワーク領域)のうち、バックアップ判定記憶領域及びサムチェックバッファを除く領域について、チェックサム値を算出し(ステップS212)、算出したチェックサム値が正常値か否かを判定する(ステップS213)。具体的には、ステップS212で算出したチェックサム値と、後述する電源断時退避処理(ステップS280)で保存したチェックサム値とを比較し、両者が一致する場合には正常値であると判定し、相違する場合には正常値ではないと判定する。
チェックサム値が正常値の場合(ステップS213:YES)、復帰処理を実行する。復帰処理では、電源復帰時クリア領域(例えば、バックアップ判定記憶領域)をリセットする(ステップS214)。
一方、電源断時退避処理が適正に終了した後のCPU初期化処理ではない場合(ステップS211:YES)、又はチェックサム値が正常値でなかった場合(ステップS213:NO)、初期化処理(ステップS215、S216)を実行する。
初期化処理では、RAM82の使用禁止領域以外の記憶領域を全てクリアする(ステップS215)。これにより、RAM82のワーク領域及びスタックエリアは全て初期化される。次に、RAM82にクリア起動時の初期値をセットすることによりRAM82の初期設定を行う(ステップS216)。
復帰処理(ステップS214)又は初期化処理(ステップS215、S216)が終了すると、起動時の設定値をセットし(ステップS217)、タイマ割り込み用カウンタをセットし(ステップS218)、割り込みデイジーチェンをリセットして(ステップS219)、メインループへ移行する。割り込みデイジーチェンをリセット(ステップS219)することにより、後述する電源断時退避処理におけるステップS286(図21参照)の判定がYESでCPU初期化処理へ移行した際に、割り込み処理から抜ける際のRETI処理を行っていないために、後述するメインループにおけるステップS224(図17参照)で割り込み許可を行っても各割り込み処理に移行しないといったことを防止している。
(メインループ)
図17は、払出制御CPU80が実行するメインループを示すフローチャートである。
メインループでは、割り込みを禁止して(ステップS221)、受信コマンド解析処理(ステップS222)、コマンド送受信関連処理(ステップS223)を実行し、割り込みを許可した後(ステップS224)、ステップS221へ戻る。
受信コマンド解析処理(ステップS222)は、主制御装置70から受信したコマンドを解析する処理である。主制御装置70から受信するコマンドは、起動に関するコマンド、払出停止のコマンド(例えば、扉開放エラーが発生した場合に出力)、及び賞球に関するコマンド(主コマンド許可信号、払出コマンド送信信号)を含む。払出コマンド送信信号を受信した場合、払出制御CPU80は、受信した払出コマンド送信信号(賞球指示コマンド)が示す賞球数分だけ賞球メモリ領域の賞球残数を加算する。なお、払出制御CPU80は、起動に関するコマンドを受信した場合には起動処理を実行し、エラーに関するコマンドを受信した場合には、払出動作を中断する処理を実行する。コマンド送受信関連処理(ステップS223)では、受信したコマンドに関連する処理を実行する。例えば、皿満タンSW85からの受信に基づいて皿満タンエラーを検知した場合や、払出計数スイッチ84からの受信に基づいて球切れエラーや球詰まりエラーを検知した場合には、発生したエラーを示すエラーコマンドを主制御装置70へ送信する。
(シリアル通信受信割り込み処理)
図18は、払出制御CPU80が実行するシリアル通信受信割り込み処理を示すフローチャートである。払出制御CPU80は、メインループの割り込み許可中又はタイマ割り込み処理の割り込み許可中において、主コマンド(主制御装置70から入力する各種コマンド)を受信すると、受信した主コマンドを優先して処理するためにシリアル通信受信割り込み処理を割り込ませる。
図18に示すように、シリアル通信受信割り込み処理では、AFレジスタの値をRAM82の退避領域に退避させ(ステップS231)、SCUのステータスレジスタの内容をロードし(ステップS232)、受信データがあるか否かをチェックし(ステップS233)、SCUデータレジスタから受信値を取得し(ステップS234)、受信データを確認したか否かを判定し(ステップS235)、受信データを確認しなかった場合(ステップS235:NO)には、ステップS231で退避させたAFレジスタの値を復帰させ(ステップS237)、割り込みを許可した後(ステップS238)、シリアル通信受信割り込み処理を終了する。一方、受信データを確認した場合(ステップS235:NO)、シリアル通信用バッファに受信データを格納し(ステップS236)、ステップS231で退避させたAFレジスタの値を復帰させ(ステップS237)、割り込みを許可した後(ステップS238)、シリアル通信受信割り込み処理を終了する。シリアル通信受信割り込み処理の終了により、メインループ又は、タイマ割り込み処理(スタックポインタで指示されるプログラムアドレス)に復帰する。
(タイマ割り込み処理)
図19は、払出制御CPU80が実行するタイマ割り込み処理を示すフローチャートである。払出制御CPU80は、カウンタ/タイマ回路は所定周期毎に割込要求信号を発生し、割込要求信号の発生に基づき、割り込み許可中のメインループにタイマ割り込み処理を割り込ませる。
図19に示すように、タイマ割り込み処理では、メインループの実行中に使用していた全てのレジスタの値をRAM82の退避領域に退避させる(ステップS241)。値を退避させた後のレジスタには、タイマ割り込み処理の中で別の値を書き込むことができる。
次に、割り込みを許可し(ステップS242)、割り込みフラグを初期化した後(ステップS243)、ポート入力処理を実行する(ステップS244)。割り込みフラグの初期化(ステップS243)により、割り込みフラグが1.4ms毎にセットされ、タイマ割り込み処理が1.4ms毎に周期的に実行される。
ポート入力処理(ステップS244)では、図20に示すように、オンエッジ検出フラグをクリアし(ステップS261)、入力ポート0の内容を取得した後(ステップS262)、電源断予告信号を受信しているか否かを判定する(ステップS263)。具体的には、電源断予告信号の入力ポートをビットチェックし、電源断予告信号が入力しているか否かを判定する。
電源断予告信号を受信していない場合(ステップS263:NO)には、入力ポート0の内容を更新して保存し(ステップS264)、入力ポート0の払出計数信号のオンエッジを保存して(ステップS265)、本処理を終了する。払出計数SW84に対応する受信記憶領域(1ビット)の受信状態(レベル)は、通常はH(High)に設定され、払出計数信号の受信によってL(Low)に変更されるため、電断予告信号を受信しておらず、且つ払出計数SW84に対応する受信記憶領域(1ビット)の受信状態への変化(HからLへの立ち下がり)を検出した場合に、ステップS265の処理によって払出計数信号のオンエッジが保存される。なお、払出計数信号のオンエッジは、HからLへの変更(H→L)のみによって検出してもよく、HからLへ変更された後のLの維持(H→L→L)によって検出してもよい。一方、電源断予告信号を受信している場合(ステップS263:YES)には、入力ポート0の内容の更新、及び入力ポート0のオンエッジの保存を実行せずに、本処理を終了する。
このように、ポート入力処理において、払出計数SW84からの払出計数信号の入力状態(H/L)をリードし、電源断発生時ではない場合には、受信記憶領域の受信状態への変化を検出することによって遊技球の払い出しを検知し、払出計数信号のオンエッジを保存した後、本処理を終了する。一方、電源断発生時の場合には、遊技球の払い出しを検知せずに、本処理を終了する。本処理を終了すると、図19のタイマ更新処理(ステップS245)を実行する。
タイマ更新処理(ステップS245)では、各処理の実行間隔を規定するカウンタ/タイマ回路のカウント値を初期値に一括して更新して周期のカウントを再開する。
次に、CR通信処理を実行する(ステップS246)。CR通信処理では、ポート入力処理(ステップS264)でCRユニット50から台端末貸出要求完了確認信号の受信を保存した場合に、基本単位分だけ貸出メモリ領域の貸出残数を加算する。
次に、払出モータ関連処理を実行する(ステップS247)。払出モータ関連処理では、ポート入力処理(ステップS265)で払出計数SW84からの払出計数信号のオンエッジを保存した場合に、賞球残数及び貸出残数の一方を貸出残数を優先して1つ減算する。また、賞球残数及び貸出残数の一方がゼロではない場合には、遊技球1個分の払出動作を払出モータ83に実行させるための払出駆動制御コマンドを生成し、ポート出力要求バッファに格納する。なお、1回の賞球払出を所定単位個数(例えば25個)を上限とした個数分まで連続で行う処理(賞球連続払出処理)が設定されている場合には、連続賞球払出処理の途中に貸出残数がゼロから増加した場合であっても、実行中の連続賞球払出処理を中断せずに継続する。そして、1回の連続賞球払出処理が完了した後は、賞球残数が未だゼロに達していなくても、貸出残数がゼロではない場合には、賞球残数よりも貸出残数の払い出しを優先して実行する。
次に、発射制御処理248を実行する。発射制御処理では、発射ボリューム88から受信した射勢指示信号に基づいて発射モータ86の駆動を制御する。これにより、遊技者の操作量に応じて遊技球の打ち出し強さが調整される。但し、タッチセンサ89からの検出信号がオフ(ローレベル)の場合、発射停止スイッチ90から発射停止信号が入力された場合、及びパチンコ機PにCRユニット50が接続されていない場合には、発射モータ86の駆動を停止する。
次に、エラー関連処理を実行する(ステップS249)。エラー関連処理では、皿満タンエラー等のエラーを検知した場合に、エラーの内容を示すエラーコマンドをポート出力要求バッファに格納する。
次に、外部情報処理を実行する(ステップS250)。外部情報処理では、外部情報端子基板65を介して遊技場のホールコンピュータ68へ出力する外部情報信号(例えば賞球情報等)をポート出力要求バッファに格納する。
次に、試験信号管理処理を実行する(ステップS251)。試験信号管理処理では、払出制御CPU80が自己の内部状態を表す各種の試験信号を生成し、これらをポート出力要求バッファに格納する。この試験信号により、例えば払出制御装置71の外部で払出制御CPU80の内部状態を試験することができる。
次に、ポート出力処理を実行する(ステップS252)。ポート出力処理では、上述の各処理においてポート出力要求バッファに格納された各信号を、対応する送信対象に対してポート出力する。本処理によって、払出モータ83への払出駆動制御コマンドの送信やホールコンピュータ68への賞球情報の送信の他、状態LEDの発光制御が実行される。
最後に、ステップS241において退避させた全てのレジスタの値を復帰させ(ステップS253)、タイマ割り込み処理を終了する。タイマ割り込み処理の終了により、メインループ(スタックポインタで指示されるプログラムアドレス)に復帰する。
(電源断時退避処理)
図21は、払出制御CPU80が実行する電源断時退避処理を示すフローチャートである。払出制御CPU80は、メインルーチンの割り込み許可中に電源断予告信号を受信すると、電源断時退避処理を割り込ませる。また、タイマ割り込み処理の実行中に電源断予告信号を受信すると、タイマ割り込み処理が終了してメインループに復帰した後に電源断時退避処理を割り込ませる。
図21に示すように、電源断時退避処理では、AFレジスタの値をRAM82の退避領域に退避させ(ステップS271)、電源断予告信号を受信しているか否かを判定する(ステップS272)。具体的には、電源断予告信号の入力ポートをビットチェックし、電源断予告信号が入力しているか否かを判定する。このように電源断時退避処理の開始直後に電源断予告信号を再度チェックすることによって、ノイズ等による誤検知に起因したステップS276以降の処理の実行を回避することができる。
電源断予告信号を受信していない場合(ステップS273:NO)には、ステップS271で退避させたAFレジスタの値を復帰させ(ステップS274)、割り込みを許可した後(ステップS275)、電源断時退避処理を終了する。電源断時退避処理の終了により、メインループ(スタックポインタで指示されるプログラムアドレス)に復帰する。
一方、電源断予告信号を受信している場合(ステップS273:YES)には、出力ポート(出力ポート要求バッファ)の全てにクリア値を出力する(ステップS276)。これにより、本処理以前に出力ポート要求バッファに格納された信号は全て削除され、送信されない。
次に、コマンド受信待ち時間として4.5ミリ秒分のループカウンタをセットし(ステップS277)、ループカウンタの値をデクリメントしながらその値がゼロに達したか否か(4.5ミリ秒が経過したか否か)を判定し(ステップS278)、4.5ミリ秒が経過すると(ステップS278:YES)、データ格納処理を実行する(ステップS279)。データ格納処理では、払出制御CPU80に入力したデータ(入力ポートの状態)を格納する。データ格納処理は、シリアル通信受信割り込み処理におけるステップS232〜S236(図18参照)と同様の処理であり、SCUのステータスレジスタの内容をロードし、受信データがあるか否かをチェックし、SCUデータレジスタから受信値を取得し、受信データを確認したか否かを判定し、受信データを確認した場合にシリアル通信用バッファに受信データを格納する。データ格納処理までの待機時間は、4.5ミリ秒に限定されず、主制御装置71が実行するタイマ割り込み処理の周期(4ミリ秒)を超えていればよく、タイマ割り込み処理の周期(4ミリ秒)にタイマ割り込み処理に要する時間を加えた時間以上が好適である。データ格納処理までの待機時間を上述のように設定することにより、この待機時間内に主制御CPU73がタイマ割り込み処理を必ず1回実行することになる。従って、待機時間内に、主制御CPU73が払出制御管理処理(図12のステップS74)及びポート出力処理(図12のステップS79)が1回以上実行され、データ格納処理(ステップS279)において、電源断時退避処理の開始後に主制御CPU73から送信された最新の賞球指示コマンドを受信して格納することができる。
次に、RAM82のワーク領域(使用禁止領域及びスタック領域を含むユーザワーク領域)のうち、バックアップ判定記憶領域及びサムチェックバッファを除く領域について、チェックサム値を算出し、算出したチェックサム値をサムチェックバッファに保存する(ステップS280)。
次に、バックアップ判定記憶領域にバックアップ有効判定値(バックアップ有効判定フラグ)を保存し(ステップS281)、RAM82のワーク領域に対するアクセスを禁止して(ステップS282)、電源断時待機処理を実行する。
電源断時待機処理では、電源断時にある程度の待機時間(例えば十ms程度)を確保し、その間に入力ポート0の電源断予告信号をチェックする。本実施形態では、リセット信号待ちとして10ms分のループカウンタをセットし(ステップS283)、ループカウンタの値をデクリメントしながら電源断予告信号の入力ポートをビットチェックする(ステップS284)。10ms間経過する前(ループカウンタが0になる前)に電源断予告信号が入力すると(ステップS285:YES)、電源断時待機処理の最初(ステップS283)に戻る。電源断予告信号が入力せずに10ms間が経過するまでこの処理を継続し(ステップS285:YES→ステップS283、又はステップS285:NO→ステップS286:NO→ステップS284)、電源断予告信号が入力せずに10ms間が経過すると(ステップS285:NO→ステップS286:YES)、電源断時退避処理を終了し、CPU初期化処理(図16のステップS201)へ移行する。電源断時待機処理によって、電源断予告信号が所定時間(10ms)以上入力しない安定した状態となった後にCPU初期化処理へ移行させることができ、処理の安定化及びシステム保護を図ることができる。
本実施形態によれば、主制御装置70の主制御CPU73は、初期化処理が何れの要因によって開始されたか、及びバックアップ破損であるか否かを判定するので、その判定結果を取得することによって、パチンコ機Pの設計者やホールの管理者や従業員等は、その判定結果を即時に又は事後的に認識することができる。
また、上記判定に際し、誤判定の排除及び判定効率を考慮した判定順序が予め設定されているので、効率的で且つ正確な判定を行うことができる。
また、払出御装置71のタイマ割り込み処理も、主制御装置70のタイマ割り込み処理と同様に、電源断時退避処理に優先してメインループに割り込むので、タイマ割り込み処理の実行中に電源断が発生した場合であっても、タイマ割り込み処理は電源断時退避処理によって中断せず、電源断時退避処理はタイマ割り込み処理の終了を待って開始される。従って、電源断時退避処理において退避させるデータ量を最小限に抑えるとともに、復帰プログラムの複雑化を回避することができる。
すなわち、電源断時退避処理において、RAM82のワーク領域の内容をバックアップ情報としてRAM82の退避領域に退避させるバックアップ情報退避処理や、退避させたバックアップ情報をRAM82のワーク領域に復帰させて前回の電源断発生時に実行中であった遊技状態に復帰させる状態復帰処理を実行しないので、RAM82の退避領域の記憶量を低減させることができる。また、バックアップ情報退避処理や状態復帰処理を実行しないので、復帰プログラムの簡素化を図ることができる。
また、ポーリングによって電源断予告信号を監視していないので、払出制御CPU80の処理負担を軽減することができる。
さらに、メイン割り込み処理において、払出検出処理(ステップS265)の実行前に電源断予告信号を受信した場合(ステップS263:YES)には払出検出処理を実行しないので、電源断によるノイズ等に起因して払出計数信号が誤って払出制御装置71に入力しても、誤入力に基づいて遊技球の払出完了が誤検知されてしまうことがない。従って、電源断に起因して払出残数が不適正に減算されてしまうことがなく、賞球や貸し球の不当な損失の発生を未然に防止することができる。
なお、上記実施形態では、割込異常が初期化処理の開始要因に含まれる例を説明したが、未使用の割込先が存在しないなどのように割込異常が開始要因に含まれない場合などには、割込異常が判定対象から除外される。また、他の開始要因についても、必要に応じて適宜省略可能であるとともに、上記に例示していない開始要因を含めてもよく、それらの判定順序を変更して設定してもよい。
また、上記実施形態では、2種類の特別図柄を変動する例を説明したが、特別図柄は1種類でもよく、3種類以上であってもよい。また、特別図柄又は普通図柄の一方のみによる当否抽選を実行して大当たり遊技状態を生起してもよい。
以上、本発明者によってなされた発明を適用した実施形態について説明したが、この実施形態による本発明の開示の一部をなす論述及び図面により本発明は限定されることはない。すなわち、この実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等は全て本発明の範疇に含まれることは勿論であることを付け加えておく。