JP2013252263A - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP2013252263A
JP2013252263A JP2012129281A JP2012129281A JP2013252263A JP 2013252263 A JP2013252263 A JP 2013252263A JP 2012129281 A JP2012129281 A JP 2012129281A JP 2012129281 A JP2012129281 A JP 2012129281A JP 2013252263 A JP2013252263 A JP 2013252263A
Authority
JP
Japan
Prior art keywords
processing
location
stack
pointer
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012129281A
Other languages
English (en)
Inventor
Kazuto Matsuoka
和人 松岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Shoji Co Ltd
Original Assignee
Fuji Shoji Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Shoji Co Ltd filed Critical Fuji Shoji Co Ltd
Priority to JP2012129281A priority Critical patent/JP2013252263A/ja
Publication of JP2013252263A publication Critical patent/JP2013252263A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】電断状態が繰り返される場合でも、異常動作の可能性を低減化する。
【解決手段】電源電圧の異常降下時に起動される割込み処理には、スタックポインタが示すスタック領域に保存するスタック処理(ST61)と、スタックポインタの値を第一箇所に保存するポインタ記憶処理(ST62)と、が設けられ、CPUのリセット時に起動される初期処理(ST1)には、第一箇所のデータを判定する第一判定処理(ST44)と、第一箇所のデータが正当でない場合に報知動作を繰り返す報知処理(ST49)と、第一箇所のデータが正当である場合に、第一箇所のデータをスタックポインタに格納するポインタ復帰処理(ST50)と、スタック領域のデータをレジスタに格納するレジスタ復帰処理(ST56)と、レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理(ST58)と、が設けられている。
【選択図】図10

Description

本発明は、コンピュータ装置を内蔵する電子遊技機に関し、特に、回胴遊技機に好適に適用される。
スロットマシンなどの回胴遊技機では、遊技者がメダル投入口にメダルを投入してスタートレバーを操作すると、これに応じて、回転リールの回転が開始される。そして、遊技者がストップボタンを押して回転リールを停止させたとき、有効な停止ライン(以下、有効ラインという)に図柄が揃うと、その図柄に応じた配当メダルが払い出されるようになっている。
但し、実際には、各ゲームの当否状態は、遊技者が停止操作を開始するまでに、主制御部における内部抽選処理(以下、図柄抽選処理ということがある)によって予め決定されており、この抽選処理によって内部当選した図柄を、遊技者が有効ライン上に揃えることで配当メダルが払出される。
ところで、遊技ホールの電源設備の不備や、電力会社による停電状態などによって、突然、遊技機への給電が停止される可能性も否定できない。そこで、このような電断時にも、その後の電断復帰後には、それまでの遊技状態を正しく再開できるよう、一般に、この種の遊技機にはバックアップ機能が設けられている。ここで、バックアップ機能は、RAMの記憶内容を維持するバックアップ電源と、電断状態を素早く検出してRAMに必要なデータを保存するマスク不能割込み処理(Non Maskable Interrupt)などで実現されるのが一般的である。
特開2007−325745号公報
ところが、極めて稀には、短い時間間隔で電断状態が繰り返される可能性もあり、その場合には、多重割込みが生じる結果として、プログラムが暴走して遊技機が異常な動作をすることになる。そこで、このような異常事態を考慮して、先行文献1に記載の発明では、電断復帰後、その電源電圧が安定化するまでは、RAMへのアクセスを禁止するようにしている。
しかし、このような対策を採ったとしても、RAMへのアクセスを許可した後に、繰り返し断電状態となる可能性もあり、この点まで考慮すると多重割込み対策としては十分とは言えない。
本発明は、上記の問題点に鑑みてなされたものであって、電断状態が繰り返される場合でも、異常動作が発生する可能性を更に低減化した遊技機を提供することを目的とする。
上記の目的を達成するため、本発明は、請求項1に記載の通り、CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、前記割込み処理には、CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、が設けられ、前記初期処理には、第一箇所のデータが正当か否かを判定する第一判定処理と、第一箇所のデータが正当でない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第一箇所のデータが正当である場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられている。
また、本発明は、請求項2に記載の通り、CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、前記割込み処理には、CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、必要な処理を終えたことを示すキーコードをワーク領域の第二箇所に保存するコード記憶処理と、が設けられ、前記初期処理には、第二箇所にキーコードが検出されるか否かを判定する第二判定処理と、第二箇所にキーコードが検出されない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第二箇所にキーコードが検出される場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、ポインタ復帰処理の後に第一箇所と第二箇所のキーコードを消去する消去処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられている。
上記各発明において、前記割込み処理には、ワーク領域の第三箇所のデータをゼロにした上で、第三箇所を含んだ揮発性メモリの全部又は一部である演算範囲について、記憶内容の総和を算出する第一演算処理と、第一演算処理が算出した総和の2の補数を算出して、これを第三箇所に格納する数値格納処理と、が更に設けられ、前記初期処理に、前記演算範囲について、第三箇所の記憶内容を維持した状態で、記憶内容の総和を算出する第二演算処理が、更に設けられることで、第二演算処理の演算結果がゼロでない場合には、無限ループ状にエラー状態の報知動作を繰り返す報知処理が実行されるよう構成されているのが好適である。ここで、前記初期処理には、ポインタ復帰処理の後に第三箇所のデータを消去する消去処理が更に設けられていると更に好適である。
また、上記各発明において、前記報知処理は、揮発性メモリのアクセスを禁止した状態で報知動作を実行するのが好適である。同様に、上記各発明において、CPUがリセットされた後、前記動作復帰処理を経て電断前に中断された制御処理を再開するホットスタート動作と、電源遮断後も維持された揮発性メモリの全部又は一部の内容を消滅させることで、初期状態から制御処理を開始するコールドスタート動作とを設け、係員が所定の係員操作をしていることを条件に、前記コールドスタート動作が機能するよう構成されているのが好適である。
更に、本発明は、請求項7に記載の通り、CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、前記割込み処理には、CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、必要な処理を終えたことを示すキーコードをワーク領域の第二箇所に保存するコード記憶処理と、が設けられ、前記初期処理には、第二箇所にキーコードが検出されるか否かを判定する第二判定処理と、第二箇所にキーコードが検出されない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第二箇所にキーコードが検出される場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられ、前記割込み処理における、スタック処理、及び、コード記憶処理は、第二箇所にキーコードが検出されないことを条件に実行されるよう構成されている。
本発明において、前記初期処理には、第二箇所にキーコードが検出される場合に機能して、その後、第二箇所のキーコードを消去する消去処理が設けられているのが好適である。また、これらの発明では、前記割込み処理には、ワーク領域の第三箇所のデータをゼロにした上で、第三箇所を含んだ揮発性メモリの全部又は一部である演算範囲について、記憶内容の総和を算出する第一演算処理と、第一演算処理が算出した総和の2の補数を算出して、これを第三箇所に格納する数値格納処理と、が更に設けられ、第一演算処理及び数値格納処理は、第二箇所にキーコードが検出される場合にも実行されるよう構成されているのが好適である。なお、請求項7〜9に記載の発明では、前記ポインタ復帰処理は、スタックポインタを使用する処理の直前に配置するのが好適であり、この場合には、前記消去処理は、前記ポインタ復帰処理の直前に配置されるのが好適である。
なお、請求項1、請求項2、請求項7に記載の各発明は、各々、特徴部分が相違するものの、各特徴部分は、特に排他的である部分を除き、交互に組み合わせることができ、適宜に特徴部分を組み合わせた発明も好適に機能する。また、何れの発明も、マスク可能な割込み処理でも機能するものの、マスク不能の割込み処理に適用する方が効果的である。
上記した本発明によれば、電断状態が繰り返される場合でも、異常動作が発生する可能性を更に低減することができる。
実施例に係るスロットマシンの正面図である。 図1のスロットマシンの右側面図(a)と平面図(b)である。 スロットマシンの前面パネルを背面から図示した図面である。 スロットマシンの本体ケースの内部正面図である。 図1のスロットマシンの回路構成を示すブロック図である。 主制御基板の回路構成を示すブロック図である。 カウンタ回路を示す回路図である。 電源基板の回路構成を示すブロック図である。 主制御部におけるメイン処理を説明するフローチャートである。 図9の一部である第1実施例の初期処理を説明するフローチャートである。 第1実施例と第2実施例の電断割込みNMI処理を説明するフローチャートである。 NMI処理時のメモリの内容を説明する図面である。 第2実施例の初期処理を説明するフローチャートである。 タイマ割込み処理を説明するフローチャートである。
以下、実施例に基づいて本発明を更に詳細に説明する。図1〜図4は、実施例に係るスロットマシンSLを図示したものである。本スロットマシンSLは、矩形箱状の本体ケース1と、各種の遊技部材を装着した前面パネル2とが、ヒンジ3を介して連結され、前面パネル2が本体ケース1に対して開閉可能に構成されている(図2)。そして、図1は前面パネル2の正面図、図2はスロットマシンSLの右側面図(a)と平面図(b)、図3は前面パネル2の背面図、図4は本体ケース1の内部正面図を示している。
図4に示す通り、本体ケース1の略中央には、3つの回転リール4a〜4cを備える図柄回転ユニット4が配置され、その下側に、メダル払出装置5が配置されている。各回転リール4a〜4cには、BB図柄、RB図柄、各種のフルーツ図柄、及びリプレイ図柄などが描かれている。メダル払出装置5には、メダルを貯留するメダルホッパー5aと、払出モータMと、メダル払出制御基板55と、払出中継基板63と、払出センサ(不図示)などが設けられている。ここで、メダルは、払出モータMの回転に基づいて、払出口5bから図面手前に向けて導出される。なお、限界量を越えて貯留されたメダルは、オーバーフロー部5cを通して、補助タンク6に落下するよう構成されている。
上記のメダル払出装置5に隣接して電源基板62が配置され、また、図柄回転ユニット4の上部に主制御基板50が配置され、主制御基板50に隣接して回胴設定基板54が配置されている。なお、図柄回転ユニット4の内部には、回胴LED中継基板58と回胴中継基板57とが設けられ、図柄回転ユニット4に隣接して外部集中端子板56が配置されている。
図1に示すように、前面パネル2の上部には液晶表示ユニット7が配置されている。この表示ユニット7には、各種のキャラクタを表示することで遊技動作を効果的に盛り上げている。液晶表示ユニット7の下部には、回転リール4a〜4cに対応する3つの表示窓8a〜8cが配置されている。表示窓8a〜8cを通して、各回転リール4a〜4cの回転方向に、各々3個程度の図柄が見えるようになっており、合計9個の図柄の水平方向の三本と、対角線方向の二本が仮想的な停止ラインとなる。
このような表示窓8aの左側には、遊技状態を示すLED群9が設けられ、その下方には、遊技成果として払出されるメダル数を表示する払出表示部10や、クレジット状態のメダル数を表示する貯留数表示部11が設けられている。
払出表示部10は、7セグメントLEDを2個連設して構成されており、払出メダル数を特定すると共に、何らかの異常事態の発生時には、異常内容を表示するエラー表示器としても機能している。
前面パネル2の垂直方向中央には、メダルを投入するメダル投入口12が設けられ、これに隣接して、メダル投入口12に詰まったメダルを返却させるための返却ボタン13が設けられている。また、クレジット状態のメダルを払出すクレジット精算ボタン14と、メダル投入口12へのメダル投入に代えてクレジット状態のメダルを擬似的に一枚投入する投入ボタン15と、クレジット状態のメダルを擬似的に三枚投入するマックス投入ボタン16とが設けられている。
これらの遊技部材の下方には、回転リール4a〜4cの回転を開始させるスタートレバー17と、回転中の回転リール4a〜4cを停止させるためのストップボタン18a〜18cが設けられている。
遊技者がスタートレバー17を操作すると、通常は、3つの回転リール4a〜4cが、正方向に正常回転を開始するが、内部当選状態を予告するリール演出時には、回転リール4a〜4cの全部又は一部が、変則的に回転した上で正常回転を開始することもある。
図1に示す通り、前面パネル2の下方には、メダルを蓄える横長の受け皿19と、払出装置5の払出口5bに連通するメダル導出口20とが設けられている。なお、メダル導出口20の左右にはスピーカSPが配置されている。
図3に示すように、前面パネル2の裏側には、メダル投入口12に投入されたメダルの選別を行うメダル選別装置21と、メダル選別装置21により不適正と判別されたメダルをメダル導出口20に案内する返却通路22とが設けられている。また、前面パネル3の裏側上部には、演出制御基板51、演出インタフェイス基板52、及び液晶制御基板61などを収容する基板ケース23が配置されている。そして、メダル選別装置21の上部には、図1に示す各種の遊技部材と主制御基板50との間の信号を中継する遊技中継基板53が設けられている。
図5は、実施例に係るスロットマシンSLの回路構成を示すブロック図である。図示の通り、このスロットマシンSLは、回転リール4a〜4cを含む各種の遊技部材の動作を制御する主制御基板50と、主制御基板50から受けた制御コマンドに基づいて演出動作を実現する演出制御基板51と、交流電圧(24V)を直流電圧(5V,12V,24V)に変換して装置各部に供給する電源基板62とを中心に構成されている。
主制御基板50は、演出制御基板51に対して、スピーカSPによる音声演出、LEDランプや冷陰極線管放電管によるランプ演出、及び、液晶表示ユニット7による図柄演出を実現するための制御コマンドを出力している。そして、演出制御部51では、主制御基板50から、内部抽選結果を特定する制御コマンド(遊技開始コマンド)受けると、内部抽選結果に対応してアシストタイム当選状態とするか否かのAT抽選を実行している。
これらの動作のため、演出制御基板51は、演出インタフェイス基板52を通して、液晶制御基板61に接続されており、液晶制御基板61は、液晶表示(LCD)ユニット7における適宜な図柄演出を実現している。
また、演出制御基板51は、演出インタフェイス基板52と共に、LED基板59やインバータ基板60や回胴LEDドライブ基板58を経由して、各種のLEDや冷陰極線管放電管におけるランプ演出を実現している。更にまた、演出制御基板51は、演出インタフェイス基板52を通してスピーカSPを駆動して音声演出を実現している。
主制御基板50は、遊技中継基板53を通して、スロットマシンの各種遊技部材に接続されている。具体的には、スタートレバー17の始動スイッチ、ストップボタン18a〜18cの停止スイッチ、投入ボタン15,16の投入スイッチ、清算ボタン14の清算スイッチ、前面パネル2の開閉を認識するドアセンサ、上流側センサS0を構成するレバー検知センサ、メダル通過センサS1,S2を構成するフォトインタラプタPH1,PH2、不正メダルの通過を阻止するブロッカーをON/OFF制御するブロッカーソレノイド30、及び、各種LED素子9〜11などに接続されている。
本実施例のメダル選別装置21は、上流側センサS0(レバー検知センサ)と、メダル通過センサS1,S2(フォトインタラプタPH1,PH2)と、ブロッカーソレノイド30と、を内蔵して構成されており、メダル投入口12に近接して最上流位置に上流側センサS0が配置され、ブロッカーを経由して、その下流位置に一対のメダル通過センサS1,S2が近接して配置されている(図6参照)。
上流側センサS0は、具体的には、メダル表面で押圧されて揺動するレバーLVと、レバーLVの揺動に対応してON/OFF動作するフォトインタラプタPHと、を有して構成されている。そして、上流側センサS0は、メダル表面がレバーLVを押圧するメダル通過時にはON状態となり、メダルの通過後にOFF状態に復帰するよう構成されている。
ブロッカーは、上記した上流側センサS0の下流位置に配置され、ブロッカーソレノイド30の通電時にはメダルの通過を許可する導入姿勢となり、非通電時には、メダルの通過を拒否する返却姿勢となる。
図5に示す通り、主制御基板50は、回胴中継基板57を経由して、回転リール4a〜4cを回転させる3つのステッピングモータ、及び、回転リール4a〜4cの基準位置を検出するためのインデックスセンサに接続されている。そして、ステッピングモータを駆動又は停止させることによって、回転リール4a〜4cの回転動作と、目的位置での停止動作を実現している。
また、主制御基板50は、払出中継基板63を通してメダル払出装置5にも接続されている。メダル払出装置5には、メダル払出制御基板55と、メダル満杯センサと、メダル払出センサと、払出モータMとが設けられており、メダル払出制御基板55は、主制御基板50からの制御コマンドに基づいて払出モータMを回転させて、所定量のメダルを払出している。
メダル満杯センサは、補助収納庫にメダルが満杯状態になったオーバーフロー異常を検出し、メダル払出センサは、払出メダル枚数が不足する不足異常や、遊技機による払出動作を伴わない異常払出を検出している。その他、主制御基板50は、外部集中端子板56と、回胴設定基板54にも接続されている。外部集中端子板56は、例えばホールコンピュータHCに接続されており、主制御基板50は、外部集中端子板56を通して、メダルの投入枚数やメダルの払出枚数などを出力している。
また、回胴設定基板54は、設定値の設定時に係員が操作する設定キーや、エラー状態の解除時や設定値の変更時に係員が操作するリセットスイッチからの信号を受けて、受けた設定キー信号や、リセットスイッチ信号を主制御基板50に伝送している。ここで、設定値とは、当該遊技機で実行される抽選処理の当選確率などを、設定1から設定6まで6段階で規定するもので、遊技ホールの営業戦略に基づいて適宜に設定される。例えば、最高ランクに設定された遊技機は、メダル払出枚数の期待値が最高レベルであるため、遊技者にとって最も有利である。
図6は、主制御基板50の回路構成を図示したものである。図示の通り、主制御基板50は、ワンチップマイコン64と、8bitパラレルデータを入出力するI/Oポート回路65と、ハードウェア的に乱数値を生成するカウンタ回路66と、演出制御基板51などの外部基板とのインタフェイス回路とを中心に構成されている。ここで、ワンチップマイコン64は、Z80相当品のCPUコア64a、ROM、RAMなどの他に、CTC(Counter/Timer Circuit) 64bや、割込みコントローラ64cなどを内蔵している。
CTC64bは、8bitのカウンタやタイマを集積した回路であり、Z80システムに、周期的割り込みや一定周期のパルス出力作成機能(ビットレートジェネレータ)や時間計測の機能を付与するものである。そこで、本実施例では、CTC64bを利用して、Z80CPU64aに1.5mSの時間間隔τでタイマ割込み(Maskable Interrupt)をかけている。
インタフェイス回路としては、電源回路とのインタフェイス回路67、遊技中継基板53とのインタフェイス回路68と、回胴モータ駆動回路69と、演出制御基板51とのインタフェイス回路70などが設けられている。そして、電源遮断時(電断時)には、インタフェイス回路67を通して、Z80CPU64aに電圧降下割込みをかけている。
インタフェイス回路70は、演出制御基板51に制御コマンドを出力するための8ビットパラレルポートであり、回胴モータ駆動回路69は、回転リール4a〜4cのステッピングモータの駆動信号を生成する回路である。回転リール4a〜4cを回転させる3つのステッピングモータは、各々、2組の駆動巻線を有する二相モータであって、1相励磁と2相励磁とを繰り返す1−2相励磁によって駆動されている。
図6に示す通り、主制御基板50のインタフェイス回路68は、遊技中継基板53を経由してメダル選別装置21が接続されている。そして、上流側センサS0のセンサ信号S0は、入力回路IN0に入力され、メダル通過センサS1とメダル通過センサS2のセンサ信号S1,S2は、入力回路IN1、IN2に入力されている。また、ブロッカーソレノイド30の通電状態は、出力回路によって制御されている。
図7は、カウンタ回路66をより詳細に例示した回路図である。図示のカウンタ回路66は、スタートレバー17のON操作を示す始動スイッチ信号SGを受ける入力部24と、2つのD型フリップフロップ25a,25bによる信号取得部25と、ハードウェア乱数の下位8ビット(LOW)を生成するICカウンタ26Lと、ハードウェア乱数の上位8ビット(HI)を生成するICカウンタ26Hとを中心に構成されている。そして、ICカウンタ26H,26Lの各出力端子(QA〜QH)は、データバスを通して、ワンチップマイコン64(CPUコア64a)に接続されている。
入力部24は、抵抗とコンデンサによるローパスフィルタと、シュミットトリガ型のインバータとで構成されている。そのため、負論理の始動スイッチ信号SGは、論理変換されて信号取得部25に供給される。
信号取得部25は、直列接続された2つのD型フリップフロップ25a,25bで構成されている。そして、各クロック端子CLKには、基準パルスΦが供給されており、基準パルスΦの立ち上がりエッヂのタイミングで、D入力端子のデータが取得されてQ出力端子に出力される。したがって、始動スイッチ信号SGがLレベルに変化した後、2つ目の基準パルスΦの立ち上がりエッヂで、各ICカウンタ26L,26Hのロック端子RCLKが、Hレベルに立ち上がる。
基準パルスΦは、専用の発振回路によって、システムクロックとは別に発振させるのが好ましいが、簡易的には、ワンチップマイコン64を動作させるシステムクロックを基準パルスΦに代用しても良い。
2つのICカウンタ26は、いずれも、8ビットのバイナリカウンタと8ビットの出力レジスタとを内蔵している。そして、クロック端子CCLKに供給されるクロック信号を2進カウントする一方、ロック端子RCLKに保持信号を受けると、その瞬間のバイナリカウンタのカウンタ値が、内蔵する出力レジスタに記憶されるようになっている。なお、出力レジスタに記憶されたカウンタ値は、出力イネーブル端子OEがLレベルであることを条件に、外部出力端子(QA〜QH)に出力される。
図示の通り、このカウンタ回路66では、電源電圧値(DC5V)が正常値である限り、基準パルスΦが、NANDゲートを経由して下位ICカウンタ26Lのクロック端子CCLKに供給される。一方、上位ICカウンタ26Hには、下位ICカウンタ26Lの桁上げ信号RCOが供給されている。そのため、2つのICカウンタ26は、全体として16ビットカウンタとして機能することになり、2つの内部カウンタは、0000H〜FFFFH(10進数65535)カウンタ値の間で循環することになる。なお、添字Hは、以下の場合も含め、16進数を意味する。
先に説明した通り、始動スイッチ信号SGがLレベルに変化すると、これに対応して、各ICカウンタ26L,26Hのロック端子RCLKがHレベルに立ち上がり、内部のバイナリカウンタの値が出力レジスタに保持される。一方、各ICカウンタ26L,26Hの出力イネーブル端子OEには、ワンチップマイコン64からチップセレクト信号CS0,CS1が供給されている。そのため、ワンチップマイコン64は、必要時に、チップセレクト信号CS0,CS1をLレベルに変化させることによって、ICカウンタ26L,26Hに内蔵の出力レジスタが保持するデータQA〜QHを取得できることになる。
図8は、電源基板62の回路構成を示すブロック図である。この電源基板62は、交流24Vを受けて脈流電圧に変換する整流部80と、脈流電圧を直流5Vに変換する第1電圧変換部81と、脈流電圧を直流12Vに変換する第2電圧変換部82と、脈流電圧を直流24Vに変換する第3電圧変換部83と、第1電圧変換部81の出力電圧を蓄電する蓄電部84と、電源遮断状態を検出して検出信号RESを出力する電源監視部85とで構成されている。
蓄電部84は、大容量(1ファラッド程度)のコンデンサCと、過電流用の制限抵抗r1、r2と、逆方向電流を阻止するダイオードDとで構成されている。なお、制限抵抗r1は75Ω程度、制限抵抗r2は10Ω程度である。コンデンサCの両端電圧は、バックアップ電源として、ワンチップマイコン64に供給されている。
このバックアップ電源は、ワンチップマイコン64に内蔵されたSRAM(static ram)に供給されており、電源電圧の遮断状態でも、通常7〜8日はRAM(Random Access Memory)の記憶内容を保持するようにしている。なお、RAMの記憶容量は、この実施例では、遊技機のワークエリアとして使用される512バイト程度である。
電源監視部85は、交流入力電圧24Vの電圧レベルと、直流電源電圧5Vの電圧レベルとを監視している。そして、何れか一方のレベルが所定値を下回ると、検出信号RESがLレベルに変化するよう構成されている。瞬停や停電などの異常時には、先ず、交流入力電圧の電圧降下に対応して、検出信号RESが素早く出力される。
この検出信号RESは、主制御基板50のインタフェイス回路67(図6)に供給されて、正論理の電源異常信号ABNと、負論理の電源異常信号ABNバーとなる。そして、正論理の電源異常信号ABNがI/Oポート回路65に供給される一方、負論理の電源異常信号ABNバーは、ワンチップマイコン64の割込み端子NMI(Non Maskable Interrupt)に供給される。したがって、CPUコア64aが割込み許可状態であるか否かに拘らず、負論理の電源異常信号ABNバーに基づいて、電圧降下に対応する電断割込み(NMI)処理(図11)が開始されることになる。
図6のインタフェイス回路67には電源リセット回路も内蔵されている。そして、電源投入時には、インタフェイス回路67で生成されたリセット信号が、ワンチップマイコン64のリセット端子RST1に供給される。その結果、CPUコア64aがリセット状態となり、ROMの先頭アドレス以降の制御プログラムの実行が開始されることになる。
続いて、主制御基板50のワンチップマイコン64(以下、主制御部50という)が実現する制御動作を説明する。図9〜図10は、主制御部50が実行する制御プログラムを説明するフローチャートである。主制御部50の制御プログラムは、電源投入時などCPUがリセットされて開始される無限ループ状のメイン処理(図9〜図10)と、CTCからの定期割込みで一定時間τ毎に起動されるマスク可能な(Maskable Interrupt)タイマ割込み処理(図14)と、電断時に電源基板62からの検出信号RESで起動されるマスク不能の(Non Maskable Interrupt)NMI割込み処理(図11)とを有して構成されている。なお、図11(a)は、第1実施例、図11(b)は、第2実施例を示している。
そこで、この実施例では、図11(a)に示す第1実施例の電断割込み処理から説明する。先に説明した通り、電源監視部85が瞬停や停電などの電源異常を検出すると、検出信号RESが出力され、負論理の電源異常信号ABNバーに基づいて電断割込み(NMI)処理が起動される。このとき、I/Oポート回路65には、正論理の電源異常信号ABNが供給されているので、起動された電断割込み処理では、最初に、電源異常信号ABNの論理レベルを確認する(ST60)。そして、電源異常信号ABNが正常レベルであれば、ノイズなどによる誤割込みであると判断して、何もしないで電断割込み処理を終える。
一方、電源異常信号ABNが異常レベルである場合には、PUSH命令を実行して、CPUのレジスタを2バイト毎にスタック領域(図12(a)参照)に保存する(ST61)。なお、Z80CPUのPUSH命令(PUSH qq)では、スタックポインタSPの値が−1された上で、スタックポインタSPの示すアドレスに、保存データの上位1バイト(qqH)が保存され、更に−1されたスタックポインタSPの示すアドレスに、保存データの下位1バイト(qqL)が保存される(図11(c)参照)。
保存対象となるレジスタは、何ら限定されないが、図11に示す実施例では、Z80CPUのAFレジスタ(アキュムレータAcc+フラグレジスタF)、BCレジスタ、DEレジスタ、HLレジスタと、これらの裏レジスタ(AF’,BC’,DE’,HL’)を保存している。そのため、ステップST61の処理終了時には、電断割込み起動時に保存された戻り番地のアドレス値(2バイト長○○○○)の他に、8×2バイト長のデータがスタック領域に保存されることなり、スタックポインタSPはAD1番地を示している(図12(a)参照)。
なお、図12では、便宜上、RAMの内容を2バイト毎に記載しているが、実際には、1バイト毎にアドレスが付されている。また、○○○○は、電断割込みで中断され、電断復帰時に再開されるべき処理の先頭アドレス(戻り番地)であって、電断復帰後に実行されるRET命令(図10のST58)に基づいて、プログラムカウンタPCに書き込まれるアドレス値を示している。
何れにしても、ステップST61の処理が終われば、その時のスタックポインタSPの値を、ワーク領域のBUF番地に格納する(ST62)。先に説明した通り、この時のスタックポインタSPは、PUSH命令を8回実行してAD1番地を示しているので、BUF番地には、アドレス値AD1が記憶される(図12(a))。次に、ワーク領域のCHK番地にチェックコード5AHを格納する(ST63)。ここで、チェックコード5AHは、スタックポインタSPの値を、BUF番地に保存したことを示すコードであり、電断復帰時にチェックされる(図10のST43)。なお、Hは16進数を意味する。
続いて、SUM番地にゼロを格納した後(ST64)、SUM番地も含んだRAMの全領域(ワーク領域+スタック領域)について、8ビット加算演算を実行し、その総和値Σの2の補数をSUM番地に格納する(ST65)。この格納処理によって、SUM番地のデータが、総和値Σの2の補数値に変更された結果、ステップST65の実行後は、RAMの全領域の総和値Σがゼロになる(Σ=0)。そして、その後、RAMがアクセス禁止状態に制御されるので(ST66)、これ以降は、電源遮断後も総和値Σ=0の状態が維持されることになる。
次に、出力ポートのOFFレベル(=0)のデータを出力し、電源遮断までの時間を考慮した所定の時間を消費した後(ST68)、制御プログラムの先頭番地(0000H)にジャンプする。図10に示す通り、その後は、無限ループ状に電源異常信号ABNの判定を繰り返し、電断状態を待つことになる。
続いて、CPUがリセットされた後、或いは、図11(a)のステップST68の処理に続いて実行されるメイン処理(図9)について説明する。典型的には、電源が投入されるか、又は電源が復旧すると、CPUがリセットされて初期処理(ST1)が実行され、その後、電断前に実行されていた処理を再開してホットスタートするか、或いは、ステップST2の処理に移行してコールドスタートする。
初期処理(ST1)の内容は、概略、図9(b)と図10に示す通りであり、ステップST20〜ST24の処理は、重複して記載している。図9(b)及び図10に示す通り、最初に、スタックポインタSPの初期設定によってスタック領域が開放される。図12(a)に示す通り、この実施例では、スタック領域の最終アドレスを、BTM−1番地に設定しているので、ステップST20の処理では、スタックポインタSPに、アドレス値BTMを初期設定することになる。
次に、CPUのその他のレジスタ類を初期設定すると共に、ワーク領域やスタック領域として機能するRAM全体をアクセス禁止状態に設定する(ST21)。なお、ステップST21の処理の結果、CPUは割込み禁止状態となる。続いて、電源異常信号ABNのレベルを判定して、これが異常レベルである限り、ステップST20〜ST21の処理を繰り返す(ST22)。
一方、電源異常信号ABNが正常レベルであれば、先にアクセス禁止状態に設定されたRAMを、アクセス許可状態に設定する(ST23)。このように、本実施例では、電源異常信号ABNが異常レベルであるタイミングでは、RAMを書き換えることができないので、電断復帰時の電源電圧が不安定であっても、バックアップ電源によって維持されたRAM(ワーク領域+スタック領域)の内容が破壊されるおそれがない。
次に、前面パネル2が開放状態か否かをドアセンサの出力に基づいて判定し(ST24)、開放状態であれば、設定キーが挿入状態か否かを判定する(ST25)。先に説明した通り、設定キーは、抽選処理の当選確率などを設定するために、営業開始前に係員によって操作される。そして、設定キーが挿入状態であれば、電源遮断前の設定キーの記憶領域などを除いて、RAMのほぼ全領域をクリアする(ST26)。以上の説明から明らか通り、電源投入時に前面パネル2を開放して設定キーを挿入すると、電源遮断時に記憶保持されていたRAMの内容は実質的に全て消滅する。そして、ステップST20の処理で、スタック領域が開放されているので、その後、遊技動作が初期状態から正しく開始されることになる(ST2参照)。
その後の処理は、設定値の変更に関する処理であり、スタートレバーをON操作することなくリセットスイッチをON操作すると(ST28〜ST29)、ON操作のたびに設定値が+1される(ST30)。そして、設定値の設定が終わってスタートレバーをON操作すると、確定した設定値が表示されるので(ST31)、その後に設定キーを抜くと、ステップST2の処理に移行して、初期状態から定常処理が開始される。
以上、図9(b)に基づいて、前面パネル2が開放状態であった場合を説明したので、停電時からの復帰時のように、前面パネル2が閉鎖状態でCPUがリセットされた場合について、図10に基づいて説明する。前面パネル2が閉鎖状態である場合には、ステップST24の処理に続いて、設定値が正常値であるかを判定する(ST40)。そして、設定値が異常値であれば、ステップST45以降のエラー処理を実行する。具体的には、検出した異常内容を特定して記憶すると共に(ST45)、CPUを割込み禁止状態に設定する(ST46)。
ここで、ステップST21の処理に加えて、ステップST46の処理で、CPUを割込み禁止状態に再設定するのは、電断復帰時の電源電圧が不安定であるような場合には、例えば、ステップST23〜ST44の区間で、電断割込み処理(NMI)が実行され、その後の電断復帰処理(ST50〜ST58)を経て、ステップST23〜ST44の区間の中断処理が、割込み許可状態で再開される可能性もあるからである。
このような意義を有するステップST46の処理を終えると、RAMをアクセス禁止状態に設定した上で(ST47)、出力ポートにOFFレベルのデータを出力した状態で、無限ループ状にエラー表示を繰り返す(ST49)。
表示されるべきエラー内容には、前記した設定値エラーの他に、後述する総和値エラー、チェックコードエラー、スタックポインタエラーが存在するが、その何れのエラーであるかは、ステップST45の処理でセットされており、エラー内容を特定してエラー表示される(ST49)。そして、エラー表示に対応して、係員が設定キーを挿入した状態で、電源を遮断して復帰させと、ステップST24→ST25→ST26〜ST32の処理を経て、初期状態から遊技動作が正しく開始されることになる(図9参照)。
以上、設定値エラーについて説明したが、ステップST40の判定において、設定値が正常範囲であれば、RAMの全領域について、その記憶値(8ビット長)の総和値Σを算出する総和演算を実行する(ST41)。この総和演算は、図11(a)のステップST65の演算と同じであり、その演算領域にはSUM番地が含まれている(図12(a)参照)。そして、このSUM番地には、電断割込み処理において、総和値Σの2の補数値を保存しているので(ST65)、ステップST41の演算結果は、本来、ゼロになる筈である。
したがって、総和値Σがゼロでない場合とは、電断割込み処理が正常に機能しなかったか、或いは、何らかの理由でRAMの一部のデータが破壊されていることを意味する。そこで、このような総和値エラー時には、ステップST45以降のエラー処理を実行する(ST42)。
一方、総和値Σがゼロである正常時には、ステップST42の判定に続いて、RAMのCHK番地の内容を判定する(ST43)。CHK番地には、電断割込み処理においてチェックコード(=5AH)が保存されるので(ST64)、ステップST43の処理は、その保存内容の確認を意味する。そして、通常は、正しいチェックコードが検出される筈である(CHK番地=5AH)。但し、例えば、CPUが異常リセットされた場合、或いは、電断復帰時に、再度、電断したような場合には、正しいチェックコードが検出されないことがある(CHK番地=00H)。そこで、そのようなチェックコードエラー時には、ステップST45以降のエラー処理を実行する(ST43)。
一方、正しいチェックコードが検出された場合には、RAMのBUF番地の内容を判定する(ST44)。BUF番地には、電断割込み処理において、スタックポインタSPの値が保存されているので(ST62)、ステップST44の処理では、その保存値の正当性を判定する。具体的には、保存されているスタックポインタSPの値が、スタック領域を超えてワーク領域を示している場合や、スタック領域をほぼ使い切っている場合には、BUF番地の保存値が異常であるとして、その後は、ステップST45以降のエラー処理を実行する。
一方、BUF番地の内容に異常が認められない場合には、BUF番地の保存値をスタックポインタSPに書き込む(ST50)。図12(a)に示す通り、正常状態では、BUF番地にはアドレス値AD1が記憶されているので、ステップST50の処理を終えた後のスタックポインタSPは、スタックされたデータ群の最上位アドレス(AD1番地)を指すことになる。
続いて、SUM番地と、CHK番地と、BUF番地の内容を全てゼロクリアする(ST51〜ST53)。また、停止操作に至らないタイミングで電断した回転リールの回転制御を初期状態に戻すべく、回胴制御フラグを初期設定し(ST54)、出力ポートの出力状態をOFF状態から本来の値に復帰させる(ST55)。
以上のようにして、遊技制御動作の再開に必要な初期設定処理が終われば、POP命令を複数回実行して、スタック領域に保存されているレジスタを復帰させる(ST56)。先に説明した通り、ステップST56の処理開始時には、スタックポインタSPがAD1番地を差しているので、8回のPOP命令の実行によって、CPUのレジスタ群が復帰し、スタックポインタSPの値は、AD0番地を指すことになる。
そして、復帰したレジスタの値に基づいて、電断時のCPUが割込み禁止状態であったか否かを判定し、もし、割込み許可状態であれば、CPUを割込み許可状態に設定する(ST57)。そして、RET命令を実行することで(ST58)、スタックポインタSPが指しているAD0番地のアドレスデータ(戻り番地○○○○)をプログラムカウンタPCに設定する。以上の動作の結果、その後の処理は、○○○○番地に移行し、電断前の処理が再開されることになる。
ところで、電断復帰時の電源状態が不安定な場合には、予定した復帰動作を正常に実行できないことがある。しかし、本実施例では、ステップST41〜ST53の処理を設けているので、プログラムの暴走が効果的に防止されている。
以下、この点を説明するため、先ず、複数回の電断の繰り返しによって、スタック領域を重層的に使用した場合を想定する(想定例1)。すなわち、POP命令(ST56)の実行前に、電断割込み処理が繰り返されると、スタック領域には、保存データが重層的にスタックされるので、遂にはワーク領域を侵食すると思われる(図12(b)参照)。
しかし、本実施例では、このような場合を想定して、ステップST44の処理を設けているので、ワーク領域が侵食された場合、又は、侵食されそうになった場合には、ステップST50以降の処理を実行することなく、ステップST45以降のエラー処理に移行するので、プログラムの暴走を回避することができる。すなわち、最後の電断後の電断復帰時に、ステップST20→・・・→ST40→ST41→ST42→ST43まで処理が正常に進行したとしても、BUF番地の判定処理(ST44)の後に、ステップST45の処理に移行するので、ステップST57のRET命令が実行されることがなく、プログラム暴走が回避される。
次に、上記の想定例1とは別に、電断復帰時に繰返し電断状態となった場合であって、しかも、最終の電断タイミングが、ステップST23〜ST44の処理中であった場合を想定する(想定例2)。なお、この想定例2では、スタック領域には、十分な余裕があると仮定する。
このような場合、毎回の電断時に電断割込み処理が正しく実行されたとすると、総和値エラー(ST42参照)や、チェックコードエラー(ST43参照)は生じない。また、スタック領域にも余裕があるので、ステップST44の処理も問題にならない。
しかし、多重割込みが生じた場合には、電断割込み処理のたびにBUF番地の内容が更新されるので、もはや、最初の電断割込み処理によって中断された処理に戻ることができない。この点は、想定例1の場合も同じであり、図12(b)は、最後の電断割込み処理が終わったタイミングでのスタック領域とワーク領域の状態を示している。
以下、便宜上、二度目の電断割込み処理が、最後の電断割込み処理であるとして説明する。一度目の電断割込み処理の終了時には、スタックポインタSPは、AD1番地を示しており、このタイミングでのBUF番地には、アドレス値AD1が記憶されていた筈である。しかし、二度目の電断割込み処理によってスタックポインタSPの値が変化して、AD2番地を示すことになり、BUF番地には、アドレス値AD1に代えて、アドレス値AD2が格納される。そのため、二度目の電断割込み処理後に電断復帰して、各レジスタの値を復帰させた後に、××××番地には復帰できるものの、その後、本来の戻り番地である○○○○番地に復帰することはできない。
それだけでなく、RET命令(図10のST58)を実行して××××番地に復帰した後に、何らかの処理を経て、再度、RET命令(ST58)を実行するようなことがあると、RET命令の実行によって、スタックされているレジスタ値(HL’の値)が、戻り番地としてプログラムカウンタPCに書き込まれるので、プログラムが暴走することになる。なお、この点は、想定例1の場合も同じである。
しかし、本実施例では、このような事態を想定して、電断割込み処理後の電断復帰時に、SUM番地、CHK番地、及びBUF番地をゼロクリアしているので(ST51〜ST53)、二度目の電断後の再開処理(××××番地から再開される処理)が、ステップST44より手前の処理であれば、プログラムの暴走が回避される。
すなわち、RET命令(ST58)の実行で××××番地に復帰したタイミングでは、SUM番地、CHK番地、及びBUF番地は、全てゼロクリアされているので(ST51〜ST53)、ステップST41〜ST44の何れかの処理に基づいて、ステップST45以降のエラー処理が開始されることになり、再度のRET命令の実行によるプログラムの暴走が回避される。
ところで、電断復帰時に繰返し電断状態となった場合であって、しかも、最終の電断タイミングが、ステップST50〜ST58の処理中であった場合(想定例3)では、プログラムの暴走が避けられない。
そこで、このような場合を想定する場合には、電断割込み処理を図11(b)のように構成するのが好ましい。この第2実施例では、電源異常信号ABSを判定した後(ST60)、RAMをアクセス許可状態に設定した上で(ST600)、CHK番地の内容を判定している(ST601)。ここで、RAMをアクセス許可状態に設定するのは、電断復帰時の初期状態では、RAMがアクセス禁止状態であり(ST21)、このアクセス禁止状態のタイミングで電断割込み(NMI)があると、CHK番地をアクセスできないからである。
ステップST601の処理によってCHK番地をアクセスした結果、CHK番地にチェックコード(5AH)が検出される場合には、多重割込みが発生したことを意味する。そこで、多重割込み時には、POP命令を実行して(ST602)、電断割込み時のスタックポインタSPの値を+2した上で、ステップST64の処理に移行させる。なお、スタックポインタSPの値を+2するのは、電断割込み時(NMI)にスタックされた戻り番地を、事実上、消去して、スタック領域の重層的な使用を防ぐためである。
このように、図11(b)の第2実施例では、CHK番地がクリアされていない限り、2度目以降の電断時に、スタック領域が無駄に消費されることがなく、また、BUF番地の戻り番地(AD1番地)が書き換えられることもない。そのため、多重割込みが生じても、それが事実上無視されることになり、その後の電断復帰時に、本来の戻り番地(○○○○番地)に復帰することができる。
以上の通り、第2実施例では、CHK番地がクリアされていない限り、多重割込みが回避される。したがって、CHK番地をクリアする処理は、なるべくRET命令のタイミングに近づけるのが好ましい。また、正常状態でありながら、ステップST45以降のエラー処理を実行することを避けるためには、SUM番地やBUF番地のクリア処理を設けないのも好適である。そこで、第2実施例の初期処理(ST1)では、図13に示す通り、SUM番地のクリア処理(図10のST51)の使用を排除している。なお、ステップST55の処理までに、RAMの内容を変更する処理を設けない方が好ましいが、もしRAMの内容が変化しても、図11(b)の電断割込み時には、ステップST601→ST602の処理を経て、総和演算(ST64〜ST65)が再実行されるので、電断復帰後のステップST42の判定によってエラー処理に移行することはない。
また、第2実施例では、BUF番地のクリア処理(図10のST53)についても、これを設けることなく、CHK番地のクリア処理(ST70)と、スタックポインタSPの復帰処理(ST71)を設けている。また、レジスタの復帰処理(ST58)の直前、つまり、スタックポインタSPを使用する処理の直前に、スタックポインタSPの復帰処理(ST71)を設けることで、最大限、多重割込みの回避を図っている。
以上の通り、この第2実施例では、ステップST55以前のタイミングで電断割込みが生じると、SUM番地の内容が更新されるだけで、その電断割込みが事実上無視されて、スタック領域、CHK番地、及びBUF番地が変化せず、一方、ステップST58が実行された後に電断割込みが生じると、電断割込み処理が正しく実行されるので、何れの場合も、プログラムの暴走が回避される。
以上、電断割込み処理(図11(a)(b))と、電断復帰処理(図10、図13に示すホットスタート処理)について説明したので、図9に戻って、ステップST2以降のコールドスタート処理についても参考のために説明する。ステップST2の処理に移行すると、主制御部50では、一連のメインループ処理(ST2〜ST17)を定常的に繰返す。そして、最初に、RAMのワークエリアを適宜にクリアし、また、遊技制御を管理する各種のフラグを適宜に初期設定する(ST2)。次に、そのゲームにおける遊技状態フラグを生成する(ST3)。ここで、遊技状態フラグとは、現在のゲームが、「ボーナスゲーム中」か、「ボーナス内部当選中」か、「通常ゲーム中」か、などの遊技状態を特定するフラグである。
続いて、メダル投入口12から実際に投入されたメダル、及び、投入ボタン15、16の押下によって擬似的に投入されたメダルについての投入メダル管理処理が実行される(ST4)。投入メダル管理処理(ST4)では、遊技者が投入又は擬似投入したメダルを検出して、その投入枚数を判定し、その後、スタートレバー17がON操作されるとサブルーチン処理を終了する。この場合、メダルが1枚投入される毎に、そのことを示す制御コマンド(投入コマンド)が送信バッファにセットされ、図14に示すタイマ割込み処理のコマンド出力処理(ST84)において、演出制御部51に送信される。なお、このタイミングでは、遊技者による清算動作を示す清算コマンドなどが送信されることもある。
スタートレバー17がON操作されてメダル投入管理処理が終わると、スタートレバー17がON操作に対応して、始動スイッチ信号SGがLレベルに変化し、その瞬間のカウンタ値が、各ICカウンタ26H,26Lに内蔵された出力レジスタに保持記憶される(図7参照)。そこで、スタートレバー17がON操作されると、ICカウンタ26H,26Lに記憶されている乱数値が取得される(ST5)。具体的には、ワンチップマイコン64は、チップセレクト信号CS0,CS1をLレベルに変化させて、カウンタ回路66に保持されているカウンタ値を取得し、これが、乱数値RND(数値範囲:0〜65535)としてRAMの該当番地に記憶される。
次に、記憶した乱数値RNDに基づいて内部抽選処理(図柄抽選処理)を実行する(ST6)。この図柄抽選処理では、ボーナス図柄への当選か否か、小役図柄への当選か否か、再遊技を示すリプレイ図柄への当選か否かが決定され、決定された抽選結果を示す制御コマンド(遊技開始コマンド)が送信バッファにセットされ、タイマ割込み処理のコマンド出力処理(ST84)によって演出制御部51に送信される。なお、小役図柄としては、例えば、「チェリー図柄」、「ベル図柄」、「スイカ図柄」、「チャンス図柄」などを例示することができる。
このような当選確率の内部抽選処理(ST6)が終われば、次に、リール演出を実行するか否かを決定するリール演出抽選処理を実行する(ST7)。リール演出抽選処理において選出可能な演出は、内部抽選処理(ST6)の結果に対応して規定されおり、内部当選状態を予告する演出となっている。
リール演出抽選(ST7)が終われば、回転リール4a〜4cの回転を開始させるべく、回胴開始設定処理を実行する(ST8)。そいて、回転リール4a〜4cが回転を開始すると、回転開始コマンドを演出制御部51に送信するべく、回転開始コマンドを送信バッファにセットした後、回胴停止処理(ST9)に移行する。
そして、ストップボタン18a〜18cが押されたら、停止受付コマンドを演出制御部51に送信するべく、停止受付コマンドを送信バッファにセットし、内部抽選処理(ST6)の当否結果に沿うように、対応する回転リール4a〜4cを停止制御する(ST9)。すなわち、内部抽選処理(ST6)の結果、何らかの内部当選状態であれば、遊技者の適切な停止操作を条件として、当選結果に合うよう回転リール4a〜4cの図柄を整列させる。但し、遊技者がストップボタンを押すタイミングや、停止操作の順番が不適切である場合には、ハズレ状態の図柄で停止される。この結果、折角の小役当選も無駄になるが、ボーナス当選については、次回のゲーム以降も持ち越される。但し、リール演出が実行された場合には、その示唆に沿って正しい停止操作を実行すれば、メダルの取りこぼしが回避可能となる。
なお、この回胴停止処理(ST9)では、各回転リール4a〜4cについての停止制御が完了する毎に、停止位置を示す制御コマンド(停止結果コマンド)を演出制御部51に送信するべく、停止結果コマンドが送信バッファにセットされる。
このようにして、3回の停止操作と停止制御動作が完了して全ての回転リール4a〜4cが停止したら、有効ライン上に、当選図柄(当選役)が揃ったか否かが判定され、その結果を示す制御コマンド(入賞情報コマンド)を演出制御部51に送信するべく、入賞情報コマンドが送信バッファにセットされる(ST10)。また、当選図柄が揃っている場合には、必要数のメダルが払出されると共に、メダル払出を示す制御コマンド(払出コマンド)を演出制御部51に送信するべく、払出コマンドが送信バッファにセットされる(ST11)。
次に、リプレイ当選状態か否か判定され(ST12)、リプレイ当選状態であれば、再遊技動作の開始処理(ST15)を実行した後、ステップST2に移行する。
リプレイ当選状態でない場合には、現在がボーナスゲーム中か否か判定され(ST13)、ボーナスゲーム中であれば、対応する処理(ST16)を実行してステップST2に移行する。
一方、ステップST13の判定がNOの場合には、ボーナス図柄が揃っているか否か判定され(ST14)、ボーナス図柄が揃っている場合には、ボーナスゲームの開始処理(ST17)を実行した後、ステップST2に移行する。
続いて、図14に基づいて、所定時間毎(τ)に起動されるタイマ割込み処理について参考のために説明する。タイマ割込み処理では、CPUのレジスタが退避された後(ST80)、各種スイッチ信号やセンサ信号を受ける入力ポートのデータが取得され記憶される(ST81)。なお、センサ信号には、上流側センサのセンサ信号S0や、メダル通過センサのセンサ信号S1,S2が含まれており、その他、メダル払出センサ、メダル通過センサ、メダル満杯センサ、インデックスセンサ、ドアセンサなどのセンサ信号のデータも含めてメモリに記憶される。
次に、回転リールの回転についての回転制御動作が実行され(ST82)、各種のタイマ変数が更新される(ST83)。なお、更新されるタイマ変数には、各々、ゼロになるまで、タイマ割込み毎にデクリメント処理される。
続いて、送信バッファ(コマンドバッファ)に格納させている制御コマンドについて、コマンド出力処理(ST84)を実行する。ここで、コマンド出力処理とは、送信バッファに設定されている制御コマンドを1バイト毎に演出制御部51に伝送する処理である。
コマンド出力処理(ST84)が終われば、払出したメダルなどの情報をホールコンピュータに伝送し(ST85)、各種ランプの表示動作を更新すると共に、回転リールを駆動するステッピングモータに励磁データを出力する(ST86)。ここで、表示更新されるランプには、遊技開始LEDや、メダル投入許可LEDや、投入枚数LEDや、ステップST49のエラー表示動作に関わるエラーランプが含まれている。そして、最後に、ステップST80の処理で退避したレジスタをCPUに復帰させて(ST87)タイマ割込み処理を終える。
以上、本発明の実施例について詳細に説明したが、具体的な記載内容は、何ら本発明を限定するものではない。例えば、実施例では、スロットマシンについて説明したが、NMI処理を設けた弾球遊技機について本発明を適用することもできる。
例えば、上記した各実施例では、エラー報知動作を無限ループ状に繰り返して(ST49)、係員の対応を待ったが、RAMクリア処理を実行した上で、例えば、0番地にジャンプすることで、CPUリセット時の処理(ST1)を最初からやり直すのも好適である。なお、ステップST2の処理にジャンプさせても良い。
SL 遊技機
ST1 初期処理
NMI 割込み処理
ST61 スタック処理
ST62 ポインタ記憶処理
ST44 第一判定処理
ST49 報知処理
ST56 レジスタ復帰処理
ST58 動作復帰処理

Claims (12)

  1. CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、
    前記割込み処理には、
    CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、が設けられ、
    前記初期処理には、
    第一箇所のデータが正当か否かを判定する第一判定処理と、第一箇所のデータが正当でない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第一箇所のデータが正当である場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられていることを特徴とする遊技機。
  2. CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、
    前記割込み処理には、
    CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、必要な処理を終えたことを示すキーコードをワーク領域の第二箇所に保存するコード記憶処理と、が設けられ、
    前記初期処理には、
    第二箇所にキーコードが検出されるか否かを判定する第二判定処理と、第二箇所にキーコードが検出されない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第二箇所にキーコードが検出される場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、ポインタ復帰処理の後に第一箇所と第二箇所のキーコードを消去する消去処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられていることを特徴とする遊技機。
  3. 前記割込み処理には、
    ワーク領域の第三箇所のデータをゼロにした上で、第三箇所を含んだ揮発性メモリの全部又は一部である演算範囲について、記憶内容の総和を算出する第一演算処理と、
    第一演算処理が算出した総和の2の補数を算出して、これを第三箇所に格納する数値格納処理と、が更に設けられ、
    前記初期処理に、前記演算範囲について、第三箇所の記憶内容を維持した状態で、記憶内容の総和を算出する第二演算処理が、更に設けられることで、
    第二演算処理の演算結果がゼロでない場合には、無限ループ状にエラー状態の報知動作を繰り返す報知処理が実行されるよう構成されている請求項1又は2に記載の遊技機。
  4. 前記初期処理には、ポインタ復帰処理の後に第三箇所のデータを消去する消去処理が更に設けられている請求項3に記載の遊技機。
  5. 前記報知処理は、揮発性メモリのアクセスを禁止した状態で報知動作を実行する請求項1〜4の何れかに記載の遊技機。
  6. CPUがリセットされた後、前記動作復帰処理を経て電断前に中断された制御処理を再開するホットスタート動作と、電源遮断後も維持された揮発性メモリの全部又は一部の内容を消滅させることで、初期状態から制御処理を開始するコールドスタート動作とを設け、
    係員が所定の係員操作をしていることを条件に、前記コールドスタート動作が機能するよう構成されている請求項1〜5の何れかに記載の遊技機。
  7. CPUのリセット時に起動される初期処理と、電源電圧の異常降下時には実行中の制御処理を中断して起動され、中断した制御処理に関するアドレス情報をスタック領域に保存して動作する割込み処理と、を有して構成され、スタック領域とワーク領域とに区分された揮発性メモリの記憶内容を適宜に参照して制御処理を進行させると共に、電源遮断後も揮発性メモリの内容を維持することで、電断復帰後に電源遮断時の制御処理を再開可能に構成された遊技機であって、
    前記割込み処理には、
    CPUのレジスタの全部又は一部を、スタックポインタが示すスタック領域に保存すると共に、スタックポインタの値を順方向に更新するスタック処理と、スタック処理後のスタックポインタの値を、ワーク領域の第一箇所に保存するポインタ記憶処理と、必要な処理を終えたことを示すキーコードをワーク領域の第二箇所に保存するコード記憶処理と、が設けられ、
    前記初期処理には、
    第二箇所にキーコードが検出されるか否かを判定する第二判定処理と、第二箇所にキーコードが検出されない場合に機能して、エラー状態の報知動作を実行するか、揮発性メモリの内容を消去する異常対応処理と、第二箇所にキーコードが検出される場合に機能して、第一箇所のデータをスタックポインタに格納するポインタ復帰処理と、前記ポインタ復帰処理後のスタックポインタが示すスタック領域のデータをレジスタに格納すると共に、スタックポインタを逆方向に更新するレジスタ復帰処理と、前記レジスタ復帰処理の後、スタック領域に記憶されたアドレス情報に基づいて、電源遮断時の制御処理を再開する動作復帰処理と、が設けられ、
    前記割込み処理における、スタック処理、及び、コード記憶処理は、第二箇所にキーコードが検出されないことを条件に実行されるよう構成されていることを特徴とする遊技機。
  8. 前記初期処理には、第二箇所にキーコードが検出される場合に機能して、その後、第二箇所のキーコードを消去する消去処理が設けられている請求項7に記載の遊技機。
  9. 前記割込み処理には、
    ワーク領域の第三箇所のデータをゼロにした上で、第三箇所を含んだ揮発性メモリの全部又は一部である演算範囲について、記憶内容の総和を算出する第一演算処理と、
    第一演算処理が算出した総和の2の補数を算出して、これを第三箇所に格納する数値格納処理と、が更に設けられ、
    第一演算処理及び数値格納処理は、第二箇所にキーコードが検出される場合にも実行されるよう構成されている請求項7又は8に記載の遊技機。
  10. 前記ポインタ復帰処理は、スタックポインタを使用する処理の直前に配置される請求項7〜9の何れかに記載の遊技機。
  11. 前記消去処理は、前記ポインタ復帰処理の直前に配置される請求項10に記載の遊技機。
  12. 前記割込み処理は、マスク不能の割込み処理である請求項1〜11の何れかに記載の遊技機。
JP2012129281A 2012-06-06 2012-06-06 遊技機 Pending JP2013252263A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012129281A JP2013252263A (ja) 2012-06-06 2012-06-06 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012129281A JP2013252263A (ja) 2012-06-06 2012-06-06 遊技機

Publications (1)

Publication Number Publication Date
JP2013252263A true JP2013252263A (ja) 2013-12-19

Family

ID=49950291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012129281A Pending JP2013252263A (ja) 2012-06-06 2012-06-06 遊技機

Country Status (1)

Country Link
JP (1) JP2013252263A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015163120A (ja) * 2014-02-28 2015-09-10 サミー株式会社 スロットマシン
JP2015202150A (ja) * 2014-04-11 2015-11-16 株式会社三共 スロットマシン
JP2015202151A (ja) * 2014-04-11 2015-11-16 株式会社三共 スロットマシン
JP2017176598A (ja) * 2016-03-31 2017-10-05 サミー株式会社 遊技機
JP2018114181A (ja) * 2017-01-19 2018-07-26 株式会社オリンピア 遊技機
JP2020116346A (ja) * 2019-01-29 2020-08-06 株式会社三洋物産 遊技機
JP2021065647A (ja) * 2019-10-28 2021-04-30 株式会社三洋物産 遊技機
JP2022052870A (ja) * 2020-09-24 2022-04-05 株式会社三洋物産 遊技機

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015163120A (ja) * 2014-02-28 2015-09-10 サミー株式会社 スロットマシン
JP2015202150A (ja) * 2014-04-11 2015-11-16 株式会社三共 スロットマシン
JP2015202151A (ja) * 2014-04-11 2015-11-16 株式会社三共 スロットマシン
JP2017176598A (ja) * 2016-03-31 2017-10-05 サミー株式会社 遊技機
JP2018114181A (ja) * 2017-01-19 2018-07-26 株式会社オリンピア 遊技機
JP2020116346A (ja) * 2019-01-29 2020-08-06 株式会社三洋物産 遊技機
JP2021065647A (ja) * 2019-10-28 2021-04-30 株式会社三洋物産 遊技機
JP7099431B2 (ja) 2019-10-28 2022-07-12 株式会社三洋物産 遊技機
JP2022052870A (ja) * 2020-09-24 2022-04-05 株式会社三洋物産 遊技機
JP7264137B2 (ja) 2020-09-24 2023-04-25 株式会社三洋物産 遊技機

Similar Documents

Publication Publication Date Title
JP2013252263A (ja) 遊技機
JP6067985B2 (ja) 遊技機
JP5607666B2 (ja) 遊技機
JP5554755B2 (ja) 遊技機
JP5456831B2 (ja) 遊技機
JP6199012B2 (ja) 遊技機
JP5502941B2 (ja) 遊技機
JP4510737B2 (ja) 遊技機
JP5901673B2 (ja) 遊技機
JP2013162865A (ja) 遊技機
JP5587928B2 (ja) 遊技機
JP5968962B2 (ja) 遊技機
JP2013212266A (ja) 遊技機
JP5996520B2 (ja) 遊技機
JP6478967B2 (ja) 遊技機
JP5554754B2 (ja) 遊技機
JP2013198523A (ja) 遊技機
JP5647167B2 (ja) 遊技機
JP5932422B2 (ja) 遊技機
JP2009279253A (ja) 遊技機
JP5670375B2 (ja) 遊技機
JP6173544B2 (ja) 遊技機
JP6231166B2 (ja) 遊技機
JP2013027422A (ja) 遊技機
JP6095828B2 (ja) 遊技機