以下、実施例に係る弾球遊技機に基づいて本発明を詳細に説明する。図1は、本実施例のパチンコ機GMを示す斜視図である。このパチンコ機GMは、島構造体に着脱可能に装着される矩形枠状の木製外枠1と、外枠1に固着されたヒンジ2を介して開閉可能に枢着される前枠3とで構成されている。この前枠3には、遊技盤5が裏側から着脱自在に装着され、その前側には、ガラス扉6と前面板7とが夫々開閉自在に枢着されている。
ガラス扉6の外周には、LEDランプなどによる電飾ランプが、略C字状に配置されている。前面板7には発射用の遊技球を貯留する上皿8が装着され、前枠3の下部には、上皿8から溢れ出し又は抜き取った遊技球を貯留する下皿9と、発射ハンドル10とが設けられている。発射ハンドル10は発射モータと連動しており、発射ハンドル10の回動角度に応じて動作する打撃槌によって遊技球が発射される。
上皿8の外周面には、チャンスボタン11が設けられている。このチャンスボタン11は、遊技者の左手で操作できる位置に設けられており、遊技者は、発射ハンドル10から右手を離すことなくチャンスボタン11を操作できる。このチャンスボタン11は、通常時には機能していないが、ゲーム状態がボタンチャンス状態となると内蔵ランプが点灯されて操作可能となる。なお、ボタンチャンス状態は、必要に応じて設けられるゲーム状態である。
上皿8の右部には、カード式球貸し機に対する球貸し操作用の操作パネル12が設けられ、カード残額を3桁の数字で表示する度数表示部と、所定金額分の遊技球の球貸しを指示する球貸しスイッチと、ゲーム終了時にカードの返却を指令する返却スイッチとが設けられている。
図2に示すように、遊技盤5には、金属製の外レールと内レールとからなるガイドレール13が環状に設けられ、その内側の遊技領域5aの略中央には、液晶カラーディスプレイDISPが配置されている。また、遊技領域5aの適所には、図柄始動口15、大入賞口16、複数個の普通入賞口17(大入賞口16の左右に4つ)、2つの通過口であるゲート18が配設されている。これらの入賞口15〜18は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
液晶ディスプレイDISPは、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この液晶ディスプレイDISPは、中央部に特別図柄表示部Da〜Dcと右上部に普通図柄表示部19を有している。そして、特別図柄表示部Da〜Dcでは、大当り状態の招来を期待させるリーチ演出が実行され、特別図柄表示部Da〜Dc及びその周りでは、当否結果を不確定に報知する予告演出などが実行される。
普通図柄表示部19は普通図柄を表示するものであり、ゲート18を通過した遊技球が検出されると、普通図柄が所定時間だけ変動し、遊技球のゲート18の通過時点において抽出された抽選用乱数値により決定される停止図柄を表示して停止するようになっている。
図柄始動口15は、左右1対の開閉爪15aを備えた電動式チューリップで開閉されるよう例えば構成され、普通図柄表示部19の変動後の停止図柄が当り図柄を表示した場合には、開閉爪15aが所定時間だけ開放されるようになっている。
一方、図柄始動口15に遊技球が入賞すると、特別図柄表示部Da〜Dcの表示図柄が所定時間だけ変動し、図柄始動口15への遊技球の入賞タイミングに応じた抽選結果に基づいて決定される停止図柄で停止する。なお、特別図柄表示部Da〜Dc及びその周りでは、一連の図柄演出の間に、予告演出が実行される場合がある。
大入賞口16は、例えば前方に開放可能な開閉板16aで開閉制御されるが、特別図柄表示部Da〜Dcの図柄変動後の停止図柄が「777」などの大当り図柄のとき、「大当りゲーム」と称する特別遊技が開始され、開閉板16aが開放されるようになっている。
大入賞口16の開閉板16aが開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板16aが閉じる。このような動作は、最大で例えば15回まで特別遊技が継続され、遊技者に有利な状態に制御される。なお、特別図柄表示部Da〜Dcの変動後の停止図柄が特別図柄のうちの特定図柄であった場合には、特別遊技の終了後のゲームが高確率状態となるという特典が付与される。
図3は、上記した各動作を実現するパチンコ機GMの全体回路構成を示すブロック図である。図中の破線は、主に、直流電圧ラインを示している。
図示の通り、このパチンコ機GMは、AC24Vを受けて各種の直流電圧やシステムリセット信号SYSを出力する電源基板20と、遊技制御動作を中心統括的に担う主制御基板21と、主制御基板21から受けた制御コマンドCMDに基づいてランプ演出及び音声演出を実行する演出制御基板22と、演出制御基板22から受けた信号を各部に伝送する演出インタフェイス基板23と、演出インタフェイス基板23から受けた制御コマンドCMD’に基づいて液晶ディスプレイDISPを駆動する液晶制御基板24と、主制御基板21から受けた制御コマンドCMD”に基づいて払出モータM1を制御して遊技球を払い出す払出制御基板25と、遊技者の操作に応答して遊技球を発射させる発射制御基板26とを中心に構成されている。
ここで、主制御基板21、演出制御基板22、液晶制御基板24、及び払出制御基板25には、ワンチップマイコンを備えるコンピュータ回路がそれぞれ搭載されている。そこで、主制御基板21、演出制御基板22、液晶制御基板24、及び払出制御基板25に搭載された回路、及びその回路によって実現される動作を機能的に総称して、本明細書では、主制御部21、演出制御部22、液晶制御部24、及び払出制御部25と言うことがある。なお、演出制御部22、液晶制御部24、及び払出制御部25の全部又は一部がサブ制御部である。
図示の通り、主制御部21は、コマンド中継基板29に接続されると共に、遊技盤中継基板27を経由して、遊技盤5の各遊技部品に接続されている。そして、遊技盤上の各入賞口16〜18に内蔵された検出スイッチのスイッチ信号を受ける一方、電動チューリップなどのソレノイド類を駆動している。なお、図柄始動口15からのスイッチ信号については、遊技盤中継基板27を経由することなく、直接、主制御部21が受けている。
また、主制御部21は、払出制御部25に対して制御コマンドCMD”を一方向に送信する一方、払出制御部25からは、遊技球の払出動作を示す賞球計数信号や、払出動作の異常に係わるステイタス信号CONを受信している。ステイタス信号CONには、例えば、補給切れ信号、払出不足エラー信号、下皿満杯信号が含まれる。
ところで、主制御部21と払出制御部25のワンチップマイコンには、電源基板20から、直流5Vのバックアップ電源BUが供給されている。したがって、営業終了や停電により交流電源24Vが遮断された後も、ワンチップマイコン内部のRAMのデータは保持される。本実施例では、少なくとも数日は、RAMの記憶内容が保持されるよう設計されている。
また、電源基板20は、交流電源24Vの遮断時に、主制御部21及び払出制御部25に、電圧降下信号ABNを出力するよう構成されている。電圧降下信号ABNは、この実施例では、各ワンチップマイコンの割込み端子ではなく、入力ポート(PIO部)に供給されている。そして、主制御部21及び払出制御部25では、フラグセンス方式によって、電圧降下信号ABNのレベル降下を把握した後、必要なデータをRAMに退避している。そのため、上記したバックアップ電源BUの作用とあいまって、主制御部21と払出制御部25では、営業開始時や停電からの復旧時に、電源遮断前の動作を再開できることになる。但し、その他の制御基板には、バックアップ電源BUが供給されていないので、営業開始時や停電からの復旧時には、電源遮断前の動作とは無関係に、初期状態の動作を開始することになる。
図4は、主制御基板21に搭載されたワンチップマイコン30の内部構成と、電源基板20の回路構成と、両基板の接続関係とを図示したものである。
図示の通り、電源基板20には、交流24Vを受けて脈流電圧(実効値24V)に変換する整流部50と、脈流電圧を直流5Vに変換する安定化電源ICによる第1電圧変換部51と、脈流電圧を直流12Vに変換する第2電圧変換部52と、脈流電圧を直流32Vに変換する第3電圧変換部53と、第1電圧変換部51の出力電圧を蓄電する蓄電部54と、電源投入状態と電源遮断状態を検出してシステムリセット信号SYSと電圧降下信号ABNとを出力する電圧監視部55とで構成されている。
図示の通り、蓄電部54は、大容量(例えば、1ファラッド程度)のコンデンサCと、過電流用の制限抵抗r1、r2と、逆方向電流を阻止するダイオードDとで構成されている。コンデンサCの両端電圧BUは、ワンチップマイコン30の内蔵RAMに供給されており、電源電圧の遮断状態でも、少なくとも数日は内蔵RAMの記憶内容を保持するようにしている。
図5は、電圧監視部55を更に詳細に示す回路図である。この電圧監視部55は、電圧降下検出部FALLと電源投入検出部RSTとで構成されている。
電圧降下検出部FALLは、交流電圧24Vを受けてON/OFF動作するスイッチング部SWと、スイッチング部SWのON/OFF状態を検出する検出部DET1と、検出部DET1の出力を遅延して伝達する遅延部DLY1と、遅延部DLY1の出力を受けてON/OFF動作する第1出力部OT1と、DC5Vの電圧低下を検出する検出部DET2と、検出部DET2の出力を遅延して伝達する遅延部DLY2と、遅延部DLY2の出力を受けてON/OFF動作する第2出力部OT2とで構成されている。そして、第1出力部OT1と第2出力部OT2から、電圧降下信号ABNが出力されるようになっている。
スイッチング部SWは、抵抗R1及びコンデンサC1からなる整流部と、コンデンサC1の出力値に基づいてON/OFF動作するトランジスタQ1とを中心に構成されている。そして、AC24Vが正常に供給されている場合には、トランジスタQ1がON状態となり、スイッチング部SWの出力がLレベルとなる。一方、AC24Vの電圧が低下して、コンデンサC1の出力が低下すると、トランジスタQ1がOFF状態となり、スイッチング部SWの出力がHレベルとなる。
検出部DET1は、分圧抵抗R4,R5と、基準電圧Er1と、コンパレータAP1とで構成されている。分圧抵抗R5は、トランジスタQ1に並列接続されているので、トランジスタQ1がON状態の場合には、R5が短絡状態となり、検出部DET1の出力は、Hレベルとなる。逆に、トランジスタQ1がOFF状態の場合には、検出部DET1の出力は、Lレベルとなる。
遅延部DLY1は、ON/OFF動作するトランジスタQ2,Q3と、5μA程度の定電流源A1と、シュミットトリガ型の反転増幅器AP2と、定電流源A1によって充電されるコンデンサC2とで構成されている。トランジスタQ2がOFF状態に変化すると、コンデンサC2は、定電流源A1によって充電が開始される。そのため、充電されるコンデンサC2の両端電圧が、LレベルからHレベルに変化するまで、トランジスタQ2のHレベル出力の伝達を遅延させることになる。なお、トランジスタQ2がON状態に変化すると、コンデンサC2の電荷は迅速に放電されるので、トランジスタQ2のLレベル出力は直ちに伝達される。
第1出力部OT1は、分圧抵抗R6〜R8と、ON/OFF動作するトランジスタQ4と、トランジスタQ4の負荷抵抗R9とで構成されている。また、第2出力部OT2は、分圧抵抗R12〜R14と、ON/OFF動作するトランジスタQ7と、トランジスタQ7の負荷抵抗R9とで構成されている。ここで、トランジスタQ4とトランジスタQ7とが並列に接続されているので、負荷抵抗R9と共に、ワイアードORのロジックを実現している。すなわち、トランジスタQ4及びトランジスタQ7のうち、少なくとも何れか一方がON状態になると、出力部OT1,OT2の出力(電圧降下信号ABN)はLレベルとなる。
検出部DET2は、分圧抵抗R10,R11と、基準電圧Er2と、コンパレータAP3とで構成されている。そのため、電源電圧(DC5V)が低下すると、検出部DET2の出力は、Hレベルとなる。逆に、電源電圧が正常値であれば、検出部DET2の出力は、Lレベルとなる。
遅延部DLY2は、ON/OFF動作するトランジスタQ5,Q6と、5μA程度の定電流源A3と、シュミットトリガ型の非反転増幅器AP4と、定電流源A3によって充電されるコンデンサC3とで構成されている。トランジスタQ5がOFF状態に変化すると、コンデンサC3は、定電流源A3によって充電が開始される。そのため、充電されるコンデンサC3の両端電圧が、LレベルからHレベルに変化するまで、トランジスタQ5のHレベル出力の伝達を遅延させることになる。
以上の通り、この電圧降下検出部FALLは、交流24Vの電圧値を監視するスイッチング部SW及び検出部DET1と、直流5Vの電圧値を監視する検出部DET2とを備えている。そして、何れか一方の電圧値が正常値から低下すると、電圧降下信号ABNがLレベルに変化するようになっている。そのため、この電圧降下信号ABNのレベルに基づいて主制御部のCPUは電源電圧の降下を判定することが可能となる。
念のため、AC電圧降下時の動作内容を説明すると、電源遮断によるAC24Vの電圧低下に対応して、先ず、スイッチ部SWを構成しているトランジスタQ1がOFF状態となり、コンパレータAP1への反転入力電圧が増加する。そのため、コンパレータAP1の出力がHレベルからLレベルに変化し、トランジスタQ2がOFF状態に変化する。
すると、コンデンサC2は、定電流源A1によって充電が開始されて(矢印参照)、Lレベルの電圧から所定の遅延時間を経てHレベルの電圧となる。そして、コンデンサC2の両端電圧がHレベルとなると反転増幅器AP2の出力がLレベルとなり、その結果、トランジスタQ3がON状態からOFF状態に変化し、トランジスタQ4は、OFF状態からON状態に変化する。本実施例では、(a)フラグセンス方式で電圧降下信号ABNを監視すること、(b)電源監視処理(ST31)が極めてシンプルに構成されていること、及び(c)電源監視処理(ST31)が短時間(4mS)毎に実行されることから、遅延部DLY1の遅延時間を極限的に長く設定できる。
何れにしても、前述した動作の結果、電圧降下信号ABNは、電源遮断に対応してHレベルからLレベルに低下する。なお、AC24Vの低下に伴う電圧降下信号ABNの立下りの後、コンパレータAP3、非反転増幅器AP4、及びトランジスタQ5〜Q7は、動作反転すると解されるが、トランジスタQ7は、トランジスタQ4と共にワイアードロジックを構成しているので、電圧降下信号ABNに変化を与えることはない。
以上の通り、この実施例の電圧降下検出部FALLは、AC24Vの電圧低下を監視する回路と、DC5Vの電圧低下を監視する回路とを重複して備えている。これは、例えば、整流部50は正常に動作しているが、第1電圧変換部51が故障して、直流電圧DC5Vのみが低下する可能性もあり、かかる異常時にも適切に対処して、遊技機の動作状態を正しくバックアップ保存できるようにするためである。
一方、図5に示す電源投入検出部RSTも、ほぼ同様の回路構成であり、DC5Vの電圧変化を検出する検出部DET3と、検出部DET3の出力を遅延して伝達する遅延部DLY3と、遅延部DLY3の出力を受けてON/OFF動作する第3出力部OT3とで構成されている。
検出部DET3は、分圧抵抗R17,R18と、基準電圧Er3と、コンパレータAP5とで構成されている。遅延部DLY3は、ON/OFF動作するトランジスタQ8,Q9と、5μA程度の定電流源A5と、シュミットトリガ型の反転増幅器AP6と、定電流源A5によって充電されるコンデンサC6とで構成されている。また、第3出力部OT3は、トランジスタQ9の負荷抵抗R19と、ノイズ吸収用コンデンサC7と、2つのインバータG4,G5とで構成されている。
電源投入時には、電源電圧(DC5V)が傾斜して立ち上がるが、これに合わせて、コンパレータAP5の出力はLレベルとなり、トランジスタQ8はOFF状態となる。そのため、コンデンサC6は定電流源A5によって充電されて(矢印参照)、Lレベルの電圧から遅延時間tdを経てHレベルの電圧となる。そして、この遅延時間tdの後には、トランジスタQ9がON状態からOFF状態に変化し、第3出力部OT3の出力は、LレベルからHレベルとなる。
このように、システムリセット信号SYSは、交流電圧24Vの供給が開始されたことに起因して、一定時間tdだけLレベルとなる。一方、電圧降下信号ABNは、交流電圧24Vが降下するか、或いは、直流5Vが降下する電源異常時には固定的にLレベルとなる。したがって、フラグセンス方式を採っても何の問題もない。
続いて、図4に戻って、主制御部21のワンチップマイコン30の内部構成を説明する。このワンチップマイコン30には、Z80(Zilog社)相当品のCPUコア31と、システムクロックを生成するクロックジェネレータ32と、外部からシステムリセット信号SYSを受けるリセット回路33と、外部バスインターフェイス回路34と、Z80CTC(Counter Timer Circuit)部35と、アドレスデコーダ36と、Z80PIO(Parallel Input Output)部37と、ウォッチドッグタイマ38と、内蔵RAM39と、内蔵ROM40と、セキュリティチェック回路41とを内蔵して構成されている。
そして、本実施例では、Z80CTC部35で生成された4mS周期のタイマ信号が、CPUコア31の割込み端子INTに供給されている。CPUコア31の割込み端子INTは、マスク可能な割込み(maskable interrupt)端子であり、CPUコア31がDI(Disable interrupt)命令を実行したり、或いは、CPUコア31が割込みを受け付けた状態では、改めてEI(enable interrupt)命令を実行しない限り、割込み信号は受け付けられない。逆に、CPUコア31が割込み受付状態であれば、4mS毎に割込み信号が受け付けられて、後述するタイマ割込み処理が起動される。
セキュリティチェック回路41は、リセット回路33がシステムリセット信号SYSを受けると、内蔵ROM40を連続的にアクセスして、チェック動作を開始するよう構成されている。このチェック動作には、CPUコア31が介在することはなく、セキュリティチェック回路41のハードウェア機能によって、内蔵ROM40の複数アドレスにわたって、所定の演算が実行され、内蔵ROM40に予め格納されているチェックデータとの整合が確認される。
この確認動作(セキュリティチェック動作)は、制御プログラムの違法改造を検出するための動作である。そして、内蔵ROM40に格納された制御プログラムの読出し処理、及び、所定の演算を経た判定処理が実行されるので、例えば、システムクロック1,420,000個程度の時間を消費する。そして、少なからず時間を消費する確認動作が正常に終わると、CPUコア31のプログラムカウンタが0000Hとなり、内蔵ROM40の0番地以降に格納されている制御プログラムの実行が開始される。先に説明した通り、電源投入からセキュリティチェック動作の終了までは、CPUコア31が機能せず、ワンチップマイコン30のアドレスバスやデータバスも、高インピーダンス(Hi-Z)状態である。
ところで、この実施例では、図4に示す通り、PIO部37の出力ポートからウォッチドックタイマ38に対して、所定時間毎にクリア信号が供給されている。この動作によって、ウォッチドックタイマ38がタイムアウト状態になることが阻止されるが、もし、プログラムが暴走して、クリア信号の供給が途絶えると、ウォッチドックタイマ38がタイムアウト状態となり、CPUコア31のリセット端子RESETに、リセット信号が供給されるようになっている。リセット信号が供給されると、CPUのプログラムカウンタは、自動的に0000Hに書き換えられ、制御プログラムが初期状態から再実行される。
図6〜図8は、主制御部21の制御プログラムを示すフローチャートである。主制御部21の制御プログラムは、電源電圧の復旧や投入に基づいて起動されるシステムリセット処理(図6)と、所定時間毎(4mS)に起動されるマスク可能なタイマ割込み処理(図7:TIMER INT)とで構成されている。なお、電源基板20からの電圧降下信号ABNが供給されても、割込み処理(NMI割込)が起動することはない。
以下、図6を参照しつつ、システムリセット処理プログラム(メイン処理)について説明する。メイン処理が開始されるのは、停電状態からの復旧時のように初期化スイッチ(不図示)がOFF状態で電源がON状態になる場合と、遊技ホールの開店時のように、初期化スイッチがON操作されて電源がON状態になる場合とがある。なお、制御プログラムが暴走したことにより、ウォッチドッグタイマ38が起動してCPUコア31が強制的にリセットされる場合もあるので、図6では、両者を区別するため、前者をシステムリセット、後者をユーザリセットと称している。
先に説明した通り、電源基板20からシステムリセット信号SYSが供給されたシステムリセット状態では、CPUコア31が機能するに先立って、セキュリティチェック回路41がセキュリティチェック動作を開始する。そして、このセキュリティチェック動作が正常に終了すると、CPUコア31のプログラムカウンタは0000Hとなり、ユーザリセット状態の場合と同様に、ステップST1の初期設定処理が開始される。
初期設定処理(ST1)では、Z80CPUコア31を含むワンチップマイコンの各部が初期設定されるが、CPUコア31は、割込み禁止状態(DI)である。したがって、CTC部35から割込み端子INTに供給されるタイマ割込み信号は、全て無視される。その後、RAMクリア信号の値が判定される(ST2)。RAMクリア信号とは、内蔵RAMの全領域を初期設定するか否かを決定する信号であって、係員が操作する初期化スイッチのON/OFF状態に対応した値を有している。
ここでは、RAMクリア信号がON状態であったと仮定すると、ステップST2の判定に続いて、内蔵RAMの全領域がゼロクリアされる(ST10)。したがって、図8(c)に示すBFL番地のバックアップフラグBFLの値は、他のチェックサム値などと共にゼロとなる。
次に、RAM領域がゼロクリアされたことを報知するためのRAMクリアコマンドCMDが演出制御部22に出力される(ST11)。その後、電圧降下信号ABNがLレベルでないことを条件に(ST12〜ST13)、EI命令の実行により、CPUが割込み許可状態に設定される(ST14)。
電圧降下信号ABNは、ワンチップマイコン30のPIO部37の入力ポートに、定常的に供給されているので(図4参照)、そのレベルが正常レベルでない限り、ST12〜ST13の処理を無限ループ状に繰り返す。したがって、投入された電源が直ぐに遮断されたような異常時には、遊技動作の開始が禁止されて、異常な遊技動作の発生が未然に防止される。
一方、電圧降下信号ABNが正常レベルであれば、EI命令を実行した後(ST14)、無限ループ状にカウンタ更新処理が実行される(ST15)。更新されるカウンタには、外れ図柄用カウンタが含まれているが、この外れ図柄用カウンタは、図7の特別図柄処理(ST45)における大当り判定処理の判定によって外れ状態となった場合に、どのような態様の外れゲームを演出するかを決定するためのカウンタである。
以下、ステップST2の判定処理に戻って説明を続ける。CPUが強制的にリセットされた場合(ユーザリセット状態)や、停電状態からの復旧時のように、初期化スイッチ(RAMクリア信号)がOFF状態であった場合には、ステップST2の判定に続いて、バックアップフラグBFLの内容が判定される(ST3)。バックアップフラグBFLとは、図8に示す退避処理(ST53〜56)が正常に完了したか否かを示すデータであり、この実施例では、電源監視処理で5AHとされ(ST55)、図6のステップST9の処理でゼロクリアされる。
今、電源投入時や、停電状態からの復旧時である場合には、バックアップフラグBFLの内容が5AHの筈である。但し、何らかの理由でプログラムが暴走状態となり、ウォッチドッグタイマによるCPUリセット動作が生じたような場合には、バックアップフラグBFL=00Hである。したがって、BFL≠5AH(通常はBFL=00H)となる場合には、ステップST3からステップST10の処理に移行させて遊技機の動作を初期状態に戻す。
一方、バックアップフラグBFL=5AHであれば、チェックサム値を算出するためのチェックサム演算を実行する(ST4)。ここで、チェックサム演算とは、内蔵RAMのワーク領域(図8(c)参照)に対する8ビット加算演算である。そして、チェックサム値が算出されたら、この演算結果を、RAMのSUM番地の記憶値と比較をする(ST5)。
SUM番地には、電圧降下時に実行される退避処理(図8のST53〜56)において、同じチェックサム演算によるチェックサム値が記憶されている。そして、記憶された演算結果は、内蔵RAMの他のデータと共に、バックアップ電源BUによって維持されている。したがって、本来は、ステップST5の判定によって両者が一致する筈である。
しかし、電源監視処理におけるチェックサム演算(ST54)の実行後、メイン処理のチェックサム演算(ST4)の実行時までの間に、ワーク領域のデータが破損している場合もあり、このような場合にはステップST5の判定結果は不一致となる。判定結果の不一致によりデータ破損が検出された場合には、もはや、電源電圧の降下前の遊技状態を正常に再開させることはできないので、ステップST10の処理に移行させてRAMクリア処理を実行し、遊技機の動作を初期状態に戻している。
一方、ステップST5の判定において、チェックサム演算(ST4)によるチェックサム値と、SUM番地の記憶値とが一致する場合には、内蔵RAMのデータは、バックアップ電源BUによって、正常に維持されていると考えることができる。そこで次に、電源遮断前の遊技状態を再開させるが、本実施例では、遊技再開に先立って、電圧降下信号ABNのレベルをチェックしている(ST6〜ST7)。
これは、電源投入直後に、電源電圧が再度遮断されたような異常時にも適切に対処するためである。例えば、営業中に突然停電状態となった場合を想定する。このような場合には、後述する電源監視処理(ST31)を経ることで、停電前の遊技が正しく再開できる筈である。しかし、電源復旧後、直ぐに電源が遮断されてしまった場合には、セキュリティチェック処理などの処理時間を経て、バックアップフラグBFLを00Hに書換えた直後には、電源電圧の低下のためにCPUが動作不能となっているおそれもある。かかる場合には、その後に電源が復旧したとしても、バックアップフラグBFL=00Hであることから、RAMがクリアされてしまい(ST10)、もはや停電前の遊技動作を再開することができなくなる。
そこで、本実施例では、このような事態の発生を未然に防止するため、ワンチップマイコン30のPIO部37から電圧降下信号ABNを取得し(ST6)、そのレベルが正常レベルでない限り、ステップST6〜ST7の処理を無限ループ状に繰り返す。したがって、電源遮断時には、バックアップフラグBFLが書換えられることはなく、その後の電源復旧時に、再度、ステップST4〜ST9の処理が実行されて電源遮断前の遊技動作が正しく再開される。
一方、電圧降下信号ABNが正常なHレベルである場合には、RAMのSP記憶エリア(図8(c)参照)に記憶されている数値を、CPUコア31内部のスタックポインタSPに書込む(ST8)。また、バックアップフラグBFLの値をゼロに戻して(ST9)、ステップST32の乱数生成処理の先頭アドレスXXYY番地にジャンプする。なお、この状態では、CPUコア31は、割込み禁止(DI)状態のままである。
SP記憶エリアには、電源監視処理において、図8(c)に示す退避レジスタ領域(ステップST30の処理で退避されたレジスタ値の格納エリア)の先頭アドレスが格納されている(ST53)。そのため、ステップST32以降の一連のタイマ割込み処理をDI状態で実行した後、ステップST49の処理によって退避レジスタの値がCPUコアに正しく復帰され、また、EI命令実行後(ST50)のRETI命令の実行によって、タイマ割込み前の無限ループ処理(ST15)に戻る。
続いて、上記した図6の無限ループ処理(ST15)を中断させて4mS毎に開始されるタイマ割込み処理プログラム(図7)を説明する。タイマ割込みが生じると、各レジスタの内容がスタック領域に退避された後(ST30)、最初に、電源監視処理が実行される(ST31)。なお、タイマ割込みにより、CPUコア31は、割込み禁止状態となる。
図8(a)は、電源監視処理の内容を具体的に示すフローチャートである。先ず、ワンチップマイコン30のPIO部37から電圧降下信号ABNを取得し(ST51)、そのレベルを判定する(ST52)。そして、電圧降下信号ABNがHレベルの正常値であれば、そのままサブルーチン処理を終える。一方、電圧降下信号ABNがLレベルであれば、交流電源AC24Vが遮断状態であると判断する。なお、図5に関して詳述したように、交流電源AC24Vの遮断状態は適切なタイミングで迅速に検出されるので、その後も、しばらくは直流電源電圧(DC5V)が維持され、したがって、以降の退避処理(ST53〜ST56)が可能となる。
退避処理では、先ず、その時のスタックポインタSPの値を+2した数値を、RAMのSP記憶エリアに格納する(ST53)。今、ステップST30(図7)の処理では、PUSH AF→PUSH BC→PUSH DE→PUSH HLの順番に命令が実行されたとする。また、ステップST31とST32の処理では、CALL CHECK→CALL RANDOMの順番に命令が実行されるとする。そして、CALL RANDOMのマシン語命令は、XXYY番地以降に格納されているとする。
かかる場合には、電源監視処理(ST31)の開始時には、スタック領域は、図8(b)のようになっている。すなわち、スタックポインタSPは、FILO(First In Last Out)を採るスタック領域の最頂部を指しており、このスタック領域の最上部には、サブルーチン処理(CALL CHECK)の戻り番地XXYYの下位アドレス値(=YY)が記憶されている。また、PUSH AF→・・・→PUSH HLの命令実行によって格納された一群のレジスタ値に続いて、タイマ割込み処理(TIMER INT)終了後の戻り番地HHLLが格納されている。なお、この戻り番地HHLLは、ステップST15の処理を実現する一群の命令の何れかの格納アドレスを意味する。
先に説明した通り、本実施例では、退避処理(ST53〜ST56)の最初に、スタックポインタSPの値を+2した数値を、RAMのSP記憶エリアに格納する(ST53)。したがって、CALL CHECK命令実行後の戻り番地(=XXYY)は消滅するが、退避処理(ST53〜ST56)の終了後は、CPUコアが非動作状態となって電源電圧(DC5V)が消滅すること、及び、電源復帰後には、JP XXYY命令を経て、乱数作成処理(ST32)が開始されるので何の弊害もない。
ステップST53の処理が終われば、次に、メイン処理のステップST4と同様のチェックサム演算を実行する(ST54)。具体的には、内蔵RAMのワーク領域(図8(c)参照)に対して、連続して8ビット加算を実行し、その加算結果をチェックサム値としてSUM番地に記憶する。8ビット演算の対象となる領域は広い方が好ましいので、ここでは、SUM番地とBFL番地(バックアップフラグBFL)とを除くRAMの全領域としている。
その後、BFL番地にフラグ値5AHを記憶した後(ST55)、RAMのアクセスを禁止して電源電圧が降下してCPUが非動作状態になるのを待つ(ST56)。その後、CPUは非動作状態となるが、RAMにはバックアップ電源BUが供給されているので、バックアップされたデータがそのまま維持される。
以上、図7の電源監視処理(ST31)について、電圧降下信号ABNがLレベルの場合を説明したが、通常は、電圧降下信号ABNがHレベルであるから、ステップST4の処理に移行して乱数作成処理が実行される(ST32)。乱数作成処理には、普通図柄処理ST40や特別図柄処理ST45における抽選動作で使用される、当り用カウンタRGや大当たり用カウンタCTの更新処理を含んでいる。
乱数作成処理(ST32)が終わると、各遊技動作の時間を管理しているタイマについて、タイマ減算処理が行なわれる(ST33)。ここで減算されるタイマは、主として、電動チューリップや大入賞口の開放時間やその他の遊技演出時間を管理するために使用される。また、このとき、ウォッチドッグタイマ(不図示)にクリア信号を供給して、CPUが強制的にリセットされることを防止する。
続いて、図柄始動口15や大入賞口16の入賞検出スイッチを含む各種スイッチ類のON/OFF信号が入力され、ワーク領域にON/OFF信号が記憶される(ST34)。そして、記憶された情報に基づいて、例えば図柄始動口に入賞がありその情報を保留可能な状態である場合、保留を表示させる為のコマンドなど検出に基づく必要な情報が送信される。又、万一、不合理なON信号が検出されたら、不正入賞コマンドが送信される(ST35)。不正入賞コマンドが送信されるのは、例えば、特別遊技中でもないのに、大入賞口16の検出スイッチからON信号が得られたような場合である。
次に、エラー管理処理が行われる(ST36)。エラー管理処理は、遊技球の補給が停止したり、遊技球が詰まっていないかなど、機器内部に異常が生じていないかの判定である。次に、払出制御基板向けの制御コマンドを作成した後(ST37)、上記の各処理で生成されている制御コマンドを該当するサブ制御基板に伝送する(ST38)。
次に、現在が当り中の動作モードでないことを条件に、普通図柄処理を行う(ST40)。普通図柄処理とは、電動チューリップなど、普通電動役物を作動させるか否かの判定を意味する。具体的には、ステップST34のスイッチ入力結果によって遊技球がゲートを通過していると判定された場合に、乱数生成処理(ST32)で更新された当り用カウンタRGを、当り当選値と対比して行われる。そして、対比結果が当選状態であれば当り中の動作モードに変更する。また、当り中となれば、電動チューリップなど、普通電動役物の作動に向けた処理を行う(ST42)。
続いて、必要な制御コマンドを該当するサブ制御基板に伝送し(ST43)、現在が大当り中の動作モードでないことを条件に、特別図柄処理を行う(ST45)。特別図柄処理とは、大入賞口16など、特別電動役物を作動させるか否かの判定である。具体的には、ステップST34のスイッチ入力結果によって遊技球が図柄始動口を通過していると判定された場合に、乱数生成処理(ST32)で更新された大当り用カウンタCTを、大当り当選値Hitと対比して行われる。そして、対比結果が当選状態であれば大当り中の動作モードに変更する。また、大当り中となれば、大入賞口など特別電動役物の作動に向けた処理を行う(ST47)。
その後、上記の各処理で生成された制御コマンドを該当するサブ制御基板に伝送する(ST48)。例えば、特別図柄処理(ST45)が実行された場合には、その抽選結果に係わらず、制御コマンドの伝送を契機として、液晶ディスプレイDISPでは図柄変動動作が開始されることになる。何れにしてもステップST48の処理が終われば、ステップST30の処理で退避しておいたレジスタを復帰させて(ST49)、EI命令を実行して割込み処理を終える(ST50)。その結果、通常は、割込み処理ルーチンからメイン処理の無限ループ処理(図6のST15)に戻ることになる。
以上説明した通り、本実施例では、NMI(non maskable interrupt)などの割込み処理を使用することなく電源遮断時の処理を実行する。そのため、退避処理(ST53〜ST56)が極めてシンプルとなり、確実に退避処理を終えることができる。
また、退避処理の処理時間が短いので、交流電源の瞬停に有効に対処できる。すなわち、電源監視部の遅延部DLY1の遅延時間を極限的に長く設定できるので、ある程度の瞬停であれば、遊技動作を中止することなく、そのまま遊技動作を続行することができる。最低限、タイマ割込み周期(=4mS)と電源監視の処理時間(=α)の総和である4+αの時間が確保できれば良い。日本では、人間に感知できない程度の瞬停は、毎日のように発生しているので、本実施例の構成は、特にUPS(Uninterrupted Power Supply=無停電電源装置)などを設けていない遊技ホールに有効である。
また、本実施例では、NMI処理を使用しないので、電源復帰後の交流電源が不安定な場合であっても、スタック領域を使い切ったり、ワーク領域を侵食するおそれがない。また、電源復帰後に再開すべき最初の命令が固定的に決まるので、電源復帰後の処理もシンプルとなる。
しかも、本実施例では、電源復帰処理後、遊技処理を再開するに先立って、電圧降下信号ABNをチェックして、交流電源が正常であることを確認するので、電源復帰後すぐに電源が遮断される異常時が繰り返されても、その後に電源が安定すれば遊技動作を正しく再開することができる。
例えば、本実施例では、ステップST8→ST9の処理の後、割込み周期(=4ms)の後には、電源監視処理(ST31)が実行されるので、ステップST8のタイミングで交流電源が遮断されても(電圧降下信号ABNがHレベルからLレベルに切り替わっても)、確実に、退避処理(ST53〜ST56)を実行できる。なお、ステップST1〜ST7の間に交流電源が遮断された場合(電圧降下信号ABNがHレベルからLレベルに切り替わった場合)には、バックアップフラグBFLの値が5AHのままであるから、電源復帰後に同じ処理(ST1〜ST7)を繰り返すだけであり、何の問題も生じない。
ところで、RAMクリア処理(ST10)を実行した後の電圧降下信号ABNのチェック処理(ST12〜ST13)は、これを省略することもできる。すなわち、本実施例ではタイマ割込みの先頭で、電源監視処理(ST31)を実行するので、前記のチェック処理(ST12〜ST13)を省略しても、その後の割込み許可状態(ST14参照)において、迅速に電源異常を検出できるからである。
もっとも、最初のタイマ割込み処理(Timer INT)の起動前に、直流電源電圧(DC5V)が遮断されると、退避処理(ST53〜ST56)が実行されないために、電源復帰後に元の処理を再開させることはできない。但し、再開できない元の処理は単なるカウンタの更新処理であり、しかも、ここで問題にしているのは、RAMクリア処理によって過去の遊技情報が全て消失した後であって、且つ、電源復帰直後に電源が再び遮断された場合であるから、元の処理を再開できないことに実質的な弊害は何もない。
以上、本発明の実施例の構成及び効果を具体的に説明したが、具体的な記載内容は何ら本発明を限定するものではなく、各種の改変が可能である。例えば、実施例では、電圧降下信号ABNの一回のレベル判定によって、正常/異常の判定をしているが、PIO部への入力データのビット化けを考慮して、複数回の判定によって正否判定をするのが好ましい。図9(a)は、この実施例であり、N回連続して正常レベルである場合に、次の処理に移行させている。この構成は、システムリセット処理のST6〜ST7や、ST12〜ST13の代わりに使用される。一方、電源監視処理のステップST51ST52に代えて、図9(b)の構成を採用するのも好ましく、この場合には、N回連続して異常レベルである場合に、次の処理に移行させている。
また、実施例では、説明の都合上、ステップST9の後で、ジャンプ命令(JP XXYY)を実行することにしたが、これに代えて、RET命令(リターン命令)を使用することもできるのは勿論である。RET命令を使用する場合には、ステップST53において、SP記憶エリアにはSP+2の数値ではなく、その時のスタックポインタの数値SPがそのまま記憶される。