以下、本発明の好ましい実施例について、添付図面を参照して説明する。図1は、本発明の実施例であるスロットマシン1の前面扉3が閉じた状態を示した斜視図であり、図2は、そのスロットマシン1の前面扉3が開いた状態を示した斜視図である。
図1及び図2を参照して、スロットマシン1の全体構成について説明する。スロットマシン1は、図1に示すように、本体2と前面扉3とから正面視略矩形状の箱状体に構成されている。本体2は、図2に示すように、スロットマシン1の骨格をなす部材であり、回胴L,M,Rやホッパ47等を収納するために、前面側が開放した中空状の箱状体に形成されている。
本体2の内部には、図2に示すように、各種の図柄等が表示され回転可能に構成された回胴L,M,Rと、スロットマシン1の遊技を制御する制御装置40、電源スイッチ41とリセットスイッチ42と設定キー挿入孔43とを備える電源ボックス44、メダルを貯留する補助タンク45とこの補助タンク45内のメダルを払出用通路61に通じる開口62を介してメダル払出口32へ払い出す払出装置46とを備えるホッパ47等が収納されている。
前面扉3は、上述した本体2の前面側開放部分に覆設される部材であり、図2に示すように、その前面扉3の裏面側辺部に取着されたヒンジ部材10により本体2に開閉可能に連結されている。よって、前面扉3を閉じることにより本体2の前面側開放部分を閉封することができ、図1に示すように、本体2内に収納される回胴L,M,Rやホッパ47等をその本体2と共に被包することができる。一方、前面扉3を開くことにより本体2の前面側を開放することができ、ホッパ47内に貯留されたメダルの回収等を行うことができる。なお、前面扉3には、図1に示すように、施錠装置9が配設されており、かかる施錠装置9により本体2と前面扉3とを図1に示す状態で施錠することができる。
前面扉3は前面枠4によりその外形が形成されており、前面枠4は、枠部材視認部4aと枠部材操作部4bと枠部材貯留部4cとに3分割されて構成されている。前面扉3の上段部(前面枠4の枠部材視認部4a)には、図1に示すように、遊技の進行に伴って点灯・点滅する上部ランプ11、遊技の進行に伴って種々の効果音等を発生するスピーカ12,12、各種の内容を表示する液晶ディスプレイ(以下「LCD」と略す)13、左回胴Lと中回胴Mと右回胴Rとをそれぞれ透視可能な露出窓14L,14M,14R、メダルのベット数(賭け数)に応じて点灯する5つのベットランプ15,16,16,17,17、クレジット数表示部18、ゲーム数表示部19、払出枚数表示部20などが設けられている。
前面扉3の中段部(前面枠4の枠部材操作部4b)には、図1に示すように、メダルを貯玉するか否かを切り替えるクレジットボタン21と、左中右の各回胴L,M,Rの停止を指示する左・中・右回胴用ストップボタン22〜24と、メダルの詰まりを解消するメダル詰まり解消ボタン25と、貯玉されたメダルから1枚のメダルを賭けるための1枚ベットボタン26と、2枚のメダルを賭ける2枚ベットボタン27と、最大である3枚のメダルを賭けるマックスベットボタン28と、各回胴L,M,Rの回転を開始させるスタートレバー29と、メダル投入口30と、機種名や遊技に関わるキャラクタ等が表示された表示プレート31等とが設けられている。また、前面扉3の下段部(前面枠4の枠部材貯留部4c)には、図1に示すように、メダル払出口32から払い出されたメダルを受けて貯留するメダル受け皿33、タバコの吸い殻等を入れる灰皿34などが設けられている。
図3は、スロットマシン1の電気的構成を示したブロック図である。スロットマシン1の主制御基板Cは、制御装置40内に配設されている。この主制御基板Cには、演算装置である1チップマイコンとしてのMPU51と、そのMPU51と接続されると共に各種のI/O装置と接続された入出力ポート54とが搭載されている。MPU51には、MPU51により実行される各種の制御プログラムや固定値データを記憶したROM52と、そのROM52内に記憶される制御プログラムの実行に当たって各種のデータ等を一時的に記憶するためのメモリであるRAM53と、割込回路やタイマ回路、データ送受信回路などの各種回路が内蔵されている。図4から図10に示すフローチャートのプログラムは、制御プログラムの一部としてROM52内に記憶されている。
RAM53には、停電フラグ53aと、スタックポインタ保存メモリ53bと、チェックサム補正値メモリ53cと、コマンドバッファ53dと、コマンドカウンタ53eと、コマンド入力ポインタ53fと、コマンド出力ポインタ53gとが設けられている。また、このRAM53には、スロットマシン1の電源のオフ後においても、後述する電源基板55からバックアップ電圧が供給され、スロットマシン1の電源のオフ後もデータを保持(バックアップ)できるように構成されている。
停電フラグ53aは、停電等の発生(電源スイッチ41のオフによる電源断を含む)による電源断を報せるためのフラグである。停電等が発生して電源が断されると、後述する停電監視回路57からMPU51のNMI(Non Maskable Interrupt)端子(ノンマスカブル割込端子)へ停電信号58が出力される。すると、MPU51によって、図4に示すNMI(ノンマスカブル)割込処理が実行され、停電フラグ53aがオンされる。停電フラグ53aがオンされると、タイマ割込処理(図5参照)の中で停電時処理(S13)が実行され、遊技の制御の中断処理が実行される。なお、NMI割込処理で一旦オンされた停電フラグ53aは、電源投入時に実行される復電処理(S63〜S68)の最後にオフされる(S68)。
スタックポインタ保存メモリ53bは、スロットマシン1の電源断後においても、MPU51のスタックポインタの値を保存するためのメモリである。スタックポインタの値は停電時処理のはじめに、このスタックポインタ保存メモリ53bへセーブされ(S33)、逆に、復電処理のはじめに、スタックポインタ保存メモリ53bからスタックポインタへ復帰される(S63)。本実施例のスタックエリアは電源断後もデータを保持可能なRAM53内に設けられているので、停電時処理においてスタックポインタの値をスタックポインタ保存メモリ53bへセーブすることにより、スタックエリアへ退避されたデータをそっくり保存することができる。
チェックサム補正値メモリ53cは、停電時処理において算出されたRAM53のチェックサムを「0」とするための補正値を記憶するメモリである。停電時処理(S13)では、RAM53のチェックサムを「0」にした状態で制御を終了し、電源投入(停電解消)時の処理において、RAM53のチェックサムを調べ、その値が「0」であるか否かにより、RAM53のデータが正常にバックアップされているか否かを判断している。このため停電時処理において、チェックサム補正値メモリ53cの値を0クリアした状態でRAM53のチェックサムを算出し、その算出したチェックサムの2の補数がチェックサム補正値メモリ53cへ記憶される。これによりRAM53のチェックサムは「0」となる。
コマンドバッファ53dは、主制御基板Cから後述するサブ制御基板Sへ送信されるコマンドを一時的に記憶するバッファであり、合計容量32バイトのリングバッファとして構成されている。本実施例のコマンドは1のコマンド(1単位のコマンド。以下同様)が2バイトで構成されるので、コマンドバッファ53dには最大16のコマンドを記憶することができる。
なお、コマンドバッファ53dは、必ずしも32バイトで構成する必要はないが、2のn乗(nは自然数)で構成することが好ましい。コマンドバッファ53dを2のn乗のサイズで構成すれば、コマンド入力ポインタ53fおよびコマンド出力ポインタ53gの更新を簡易に行うことができる。具体的には、各ポインタ53f,53gの更新後の値と、コマンドバッファ53dのサイズマイナス1の値とのアンド論理をとり、その結果を対応するポインタ53f,ポインタ53gの更新後の値とすることで、各ポインタ53f,53gの更新を行うことができるからである。かかる構成(コマンドバッファ53dのサイズおよびポインタ53f,53gの更新方式の構成)によれば、コマンドバッファ53dがリングバッファで構成されていても、各ポインタ53f,53gの値がコマンドバッファ53dのサイズをオーバーする場合などに条件分岐命令を用いることなく、各ポインタ53f,53gの値の更新を簡易に行うことができる。
コマンドカウンタ53eは、コマンドバッファ53dに記憶されているコマンドのデータ(バイト)数を記憶するカウンタである。前述した通り、本実施例のコマンドは1のコマンドが2バイトで構成されるので、コマンドバッファ53dに1のコマンドがセットされる毎に、コマンドカウンタ53eの値は「2」ずつ加算される。一方、コマンドバッファ53dに記憶される1データがサブ制御基板Sへ送信される毎に、コマンドカウンタ53eの値は「1」ずつ減算される。よって、このコマンドカウンタ53eの値が「0」であれば、コマンドバッファ53dには送信すべきコマンドは記憶されておらず、また、コマンドカウンタ53eの値が奇数であれば、いずれか1(単位)のコマンドの送信途中である。従って、本実施例では、コマンドカウンタ53eの値が「0」である場合にはコマンドの送信は行わず(図10のS111:Yesを参照)、また、コマンドカウンタ53eの値が奇数である場合には停電時処理の実行を待機している(図6のS31:Yes)。なお、このコマンドカウンタ53eに代えて、後述するコマンド入力ポインタ53fの値とコマンド出力ポインタ53gの値との差を使用しても良い。
コマンド入力ポインタ53fは、コマンドバッファ53dへのコマンドの書き込み位置を示すポインタであり、2バイトで構成される1(単位)のコマンドがコマンドバッファ53dへ書き込まれると、その値は「2」加算される(図8のS88)。このコマンド入力ポインタ53fの値は、メイン処理(S61)の中で実行されるコマンド設定処理(図8)でコマンドが設定される毎に更新される。なお、コマンド入力ポインタ53fの値の更新の方式は、コマンドバッファ53dの部分で説明した通りである。
コマンド出力ポインタ53gは、コマンドバッファ53dからコマンドを読み出す場合の読み出し位置を示すポインタであり、コマンドの1データ(1バイト)の読み出し毎に、その値は「1」ずつ加算される。このコマンド出力ポインタ53gの値は、タイマ割込処理の中のコマンド出力処理(S21)でコマンドの1データが送信される毎に更新される。また、コマンド出力ポインタ53gの値は、他のコマンドに優先して送信するコマンドをコマンドバッファ53dへ書き込む場合のコマンドの書き込み位置を示すポインタとしても用いられる(図9の優先コマンド設定処理(S65)参照)。なお、コマンド出力ポインタ53gの値の更新の方式は、コマンドバッファ53dの部分で説明した通りである。
入出力ポート54は、前述した通りROM52及びRAM53を内蔵したMPU51と接続されると共に、各種のI/O装置と接続されている。具体的に入出力ポート54は、遊技状態をリセットするためのリセットスイッチ42と、設定キー挿入孔43内に設けられ設定キーの操作により遊技の当選確率を6段階に切り替えるための設定キースイッチ61と、1枚・2枚・マックスベットボタン26〜28と、クレジットボタン21と、スタートレバー29と、左・中・右回胴用ストップボタン22〜24と、払い出されたメダルを検出するための払出センサ62と、回胴L,M,Rの原点位置をそれぞれ検出する左・中・右回胴インデックスフォトセンサ63L,63M,63Rと、左・中・右の各回胴L,M,Rをそれぞれ回転させるための左・中・右回胴用ステッピングモータ64L,64M,64Rと、1枚〜3枚ベットランプ15〜17と、クレジット枚数表示部18と、ゲーム数表示部19と、払出枚数表示部20と、ホッパ駆動モータ65と、メダル通路切替ソレノイド66と、主制御基板Cから送信されるコマンドを受信して、スピーカ12から効果音などの出力制御を行うと共に表示用制御基板Dを制御してLCD13上に演出表示などを行わせるサブ制御基板Sと、更には、電源基板55に設けられた停電監視回路57とにそれぞれ接続されている。サブ制御基板Sには、上部ランプ11と、スピーカ12と、サブ制御基板Sから送信されるコマンドを受信してLCD13上に演出表示などを行う表示用制御基板Dとがそれぞれ接続されている。なお、サブ制御基板Sと表示用制御基板Dとは、データ等の送受信が双方向に可能に構成されている。
電源基板55は、前述した電源ボックス44内に設けられており、主制御基板Cをはじめ、スロットマシン1の各電子機器に駆動電力を供給する電源部56と、電源断の発生を監視する停電監視回路57とを備えている。スロットマシン1の電源のオフ後には、電源基板55の電源部56からRAM53へバックアップ電圧が供給される。
停電監視回路57は、停電等の発生による電源断時(電源スイッチ41のオフによる電源断を含む)に、主制御基板CのNMI端子および入出力ポート54へ停電信号58を出力するための回路である。この停電監視回路57は、電源基板55から出力される最も大きい電圧である直流安定24ボルトの電圧を監視し、この電圧が22ボルト未満になった場合に停電(電源断)の発生と判断して、停電信号58を出力するように構成されている。この停電信号58の出力によって、主制御基板Cは、停電の発生を認識し、停電時処理(S13)を実行する。なお、電源基板55は、直流安定24ボルトの電圧が22ボルト未満になった後においても、停電時処理の実行に充分な時間の間、制御系の駆動電圧である5ボルトの出力を正常値に維持するように構成されている。よって、主制御基板Cは、停電時処理を正常に実行することができる。また、停電監視回路57を、電源基板55ではなく、例えば主制御基板Cに設けるようにしても良い。
次に、図4から図10に示すフローチャートを参照して、主制御基板Cで行われる各処理について説明する。図4は、停電の発生等により停電監視回路57から停電信号58が出力された場合に主制御基板Cで実行されるNMI割込処理のフローチャートである。停電信号58がMPU51のNMI端子へ入力されると、このNMI割込処理が即座に実行される。
NMI割込処理では、まずAレジスタ(アキュムレータ)及びFレジスタ(フラグレジスタ)をRAM53内に設けられたスタックエリアへ退避する(S1)。次に、停電フラグ53aをオンして(S2)、停電の発生を記憶し、スタックエリアへ退避したAレジスタ及びFレジスタを復帰して(S3)、処理を終了する。なお、停電フラグ53aをオンする際に、AレジスタおよびFレジスタのいずれの内容をも破壊しない場合には、S1及びS3の処理は削除して、NMI割込処理は、S2の処理だけで構成される。
図5は、主制御基板Cで定期的(本実施例では1.490ms毎)に実行されるタイマ割込処理のフローチャートである。このタイマ割込処理では、各回胴用ステッピングモータ64L,64M,64Rの駆動制御をはじめ、各種I/O装置への入出力処理や、コマンド送信処理等が実行される。
タイマ割込処理では、まず、メイン処理(図7のS61)で使用している全レジスタ(AF,BC,DE,HL,IX,IYレジスタ)の値をスタックエリアへ退避し(S11)、停電フラグ53aがオンされているか否かを確認する(S12)。停電フラグ53aがオンされていれば(S12:Yes)、図4のNMI割込処理で説明した通り停電の発生であるので、かかる場合には図6に示す停電時処理を実行する(S13)。一方、停電フラグ53aがオンされていなければ(S12:No)、停電は発生していないので、停電時処理(S13)をスキップして、処理をS14へ移行する。なお、停電時処理(S13)の詳細については、図6を参照しつつ後述する。
S14からの処理では、誤動作の発生を監視するウォッチドッグタイマの値を初期化するウォッチドッグタイマクリア処理(S14)と、割込終了宣言処理(S15)と、各種スイッチの状態を読み込むスイッチ状態読み込み処理(S16)と、左・中・右の各回胴L,M,Rを回転させるために左・中・右回胴用ステッピングモータ64L,64M,64Rを駆動する回胴モータ制御処理(S17)と、各種センサの状態を監視するセンサ監視処理(S18)と、各カウンタやタイマの値を減算するタイマ減算処理(S19)と、IN・OUTカウンタ処理(S20)と、サブ制御基板Sへコマンドを送信するコマンド出力処理(図10参照)(S21)と、クレジット枚数表示部18とゲーム数表示部19と払出枚数表示部20とにそれぞれ表示されるセグメントデータを設定するセグメントデータ設定処理(S22)と、そのセグメントデータ設定処理で設定されたセグメントデータを各表示部18〜20へそれぞれ表示するセグメントデータ表示処理(S23)と、入出力ポート54から出力データを出力するポート出力処理(S24)とが、順に実行される。
そして、これらの処理の実行後には、S11の処理でスタックエリアへ退避した各レジスタ(AF,BC,DE,HL,IX,IYレジスタ)の値をそれぞれのレジスタへ復帰し(S25)、次回のタイマ割込の発生を許容するべく、割込を許可して(S26)、このタイマ割込処理を終了する。
図6は、主制御基板Cで実行される停電時処理(S13)のフローチャートである。前述した通り、この停電時処理は、タイマ割込処理の中で実行される。即ち、停電時処理は、各回胴用ステッピングモータ64L,64M,64Rの駆動制御をはじめ、各種I/O装置への入出力処理や、コマンド送信処理等を行うタイマ割込処理の中で実行されるので、これらの各処理を中断することなく、停電時処理を実行することができる。よって、1のデータの送信途中やスイッチの読み込み途中、更にはカウンタ等の更新途中等に、停電時処理が実行されることはないので、即ちイレギュラーなタイミングで停電時処理が実行されることはないので、停電時処理(S13)及び復電処理(S63〜S68)において、停電時処理がイレギュラーなタイミングで実行されることを考慮したプログラムを不要として、プログラムを簡略化し且つ小容量化することができる。また、停電時処理(S13)は、その実行後にリターンされてタイマ割込処理に復帰することもあるが(S32,S42)、タイマ割込処理におけるレジスタ退避処理(S11)の直後に実行されるので、停電時処理自体で各レジスタの退避処理や復帰処理をする必要がなく、その分、プログラム容量を小容量化することができる。
停電時処理では、まず、コマンドカウンタ53eの値が奇数であるか否か、即ちコマンドの送信(出力)途中であるか否かを確認し(S31)、送信途中であれば(S31:Yes)、リターン命令を実行して停電時処理を中止する(S32)。本実施例では2バイトで1(単位)のコマンドが構成される。図5のタイマ割込処理では、コマンド出力処理(S21)により1バイトずつコマンドデータが送信(出力)されるので、1(単位)のコマンド送信を完了するためにはタイマ割込処理の実行が2回必要になる。S31の処理は、1バイト目のコマンドデータの送信完了後であって且つ2バイト目のコマンドデータの送信完了前である場合(コマンドカウンタ53eの値が奇数である場合)に、コマンドの送信途中と判断しており、かかる場合には停電時処理の実行を中止している(停電時処理を未実行としている)。未送信の2バイト目のコマンドデータは、リターン命令後(S32)に実行されるコマンド出力処理(S21)で送信されるので、次回のタイマ割込処理の際にはコマンドの送信は完了している。よって、停電時処理は、次回のタイマ割込処理の際に実行される。なお、前述した通り、停電時処理は、コマンド出力処理(S21)を行うタイマ割込処理の中で実行されるので、1バイトのコマンドデータの送信が停電時処理により途中で途切れることはない。
このように、停電時処理のはじめで、コマンドの送信途中であるか否かを確認し、送信途中であれば停電時処理を未実行とすることにより、コマンドの送信を完了した上で停電時処理を実行することができる。よって、コマンドの送信途中に停電時処理が実行されることを考慮して、停電時処理(S13)及び復電処理(S63〜S68)をプログラムする必要が無く、プログラムを簡略化して且つ小容量化することができる。なお、S31の判断ステップは、必ずしも停電時処理をコールした後に実行する必要はなく、停電時処理のコール前に、即ち図5のS12の処理の前または後に実行するようにしても良い。
また、本実施例では、1のコマンド送信を完了するためには2回のタイマ割込処理の実行が必要なので、電源基板55は、停電の発生後、タイマ割込処理を少なくとも3回以上実行し且つ図6のS31からS38の各処理を実行するのに十分な時間の間(即ち1.490ms×3+α=4.47ms+α以上の間。本実施例では30msの間)、制御系の駆動電圧である5ボルトの出力を正常値に維持するように構成されている。よって、主制御基板Cは、コマンドの送信途中に停電が発生した場合にも、停電時処理を正常に実行することができる。
S31の処理において、コマンドの送信途中でなければ(S31:No)、以降のS33〜S38の処理によって停電時における制御の中断処理を実行する。まず、MPU51のスタックポインタの値をスタックポインタ保存メモリ53bへセーブし(S33)、チェックサム補正値メモリ53cの値を0クリアする(S34)。更に、全ての出力ポートの出力状態をクリアして全てのアクチュエータをオフする(S35)。RAM53の全ての値を加算してチェックサムを求め(S36)、求めたチェックサムを2の補数化してこれをチェックサム補正値メモリ53cへ書き込む(S37)。これにより、RAM53のチェックサムは「0」となるので、以降のRAM53への書き込みを禁止する(S38)。
その後、停電信号58の状態を入出力ポート54から読み込んで確認し(S39)、停電信号58が出力されている間は、かかる停電信号58の状態チェックを制御系の駆動電圧がダウンするまで繰り返す(無限ループする)(S39:Yes)。
一方、停電信号58の状態をチェックした結果、停電信号58が出力されていなければ(S39:No)、停電は解消したということなので、RAM53への書き込みを許可し(S40)、停電フラグ53aをオフした後に(S41)、リターン命令を実行して(S42)、タイマ割込処理へ復帰する。前述した通り停電時処理は、各レジスタの退避処理を行わずに実行されるので、リターン命令の実行の際に各レジスタの復帰処理が不要となり、その分、プログラムを小容量化することができる。また、停電時処理は、コール命令により実行されるので、元の処理へはリターン命令を実行するだけで復帰することができる。なお、S35の処理では、全ての出力ポートの出力状態をクリアしているが、リターン命令の実行により(S42)、タイマ割込処理のS14〜S24の各処理が実行されて出力ポートの各状態が再出力されるので、何ら特別な処理を設けることなく、リターン命令の実行だけで、一旦クリアした出力ポートの出力状態をも復帰することができる。
更に、停電信号58の状態チェックを、停電時処理の実行時のみならず、停電時処理の実行後においても行うことにより、ノイズなどを原因として誤って停電フラグ53aがオンされて停電時処理が実行された場合にも、制御を無限ループさせること無く、正常に復帰することができる。なお、停電信号58の再確認処理(S39)は、S36の処理以降に実行されれば良いので、S37やS38の処理の前に実行するようにしても良い。これは、S36のRAM53のチェックサムを求める処理が比較的長い処理時間を要するので(本実施例では870μs)、該処理(S36)の後であれば、停電信号58の再確認処理は有効に機能するからである。停電信号58の再確認処理をS37やS38の処理の前に設けた場合には、該処理は1回のみ実行されることとなり、S38のRAM53への書き込み禁止処理の後は、何の判断ステップもない無限ループとなる。
図7は、電源投入時に主制御基板Cで実行されるメイン処理のフローチャートである。スロットマシン1の電源が投入されると(停電の解消による電源入を含む)、この処理が実行される。まず、スタックポインタの値を設定し(S51)、割込モードを設定する(S52)。更に、各レジスタ及びI/O等の設定を行う(S53)。
次に、停電フラグ53aとリセットスイッチ42の各オン状態を確認する(S54,S55)。停電フラグ53aのオンは電源断時に停電時処理が実行されたこと、即ちRAM53にデータがバックアップされていることを示し、リセットスイッチ42のオンはバックアップ状態のクリアが操作者によって指示されたことを示している。よって、停電フラグ53aがオンされており(S54:Yes)、且つリセットスイッチ42がオフされていれば(S55:No)、S56のRAMクリア処理の実行をスキップして、処理をS57へ移行する。逆に、停電フラグ53aがオフされているか(S54:No)、或いはリセットスイッチ42がオンされていれば(S55:Yes)、RAMクリア処理を実行して(S56)、RAM53の全ての内容を0クリアする。
次に、設定キースイッチ61がオンされているか否かを確認し(S57)、オンされていなければ(S57:No)、S58及びS59の各処理をスキップして処理をS60へ移行する。一方、設定キースイッチ61がオンされていれば(S57:Yes)、RAMクリア処理を実行して(S58)、RAM53の全ての内容を0クリアした後で、6段階確率設定処理(S59)を実行する。6段階確率設定処理では、遊技の当選確率が6段階に切り替えられる。
S60の処理では、停電フラグ53aがオンされているか否かを確認する(S60)。S54からS59の処理の中でRAMクリア処理(S56,S59)が実行されバックアップ状態がクリアされていれば、停電フラグ53aはオフされている(S60:No)。よって、かかる場合にはS63からS68の復電処理を実行すること無く、スロットマシン1の通常遊技を行う各処理へ移行する(S61)。この各処理(S61)が、スロットマシン1のメイン処理として繰り返し実行され、スロットマシン1の遊技が行われる。
一方、停電フラグ53aがオンされていれば(S60:Yes)、RAM53に記憶されたデータをクリアすることなく、バックアップ状態を有効にしたまま、S60の処理が実行されたということである。即ち、停電フラグ53aがオンされていれば、S51〜S53,S54:Yes,S55:No,S57:Noの経路をたどってS60の処理へ到達しているので、その間、サブルーチンコールは全くされておらず、スタックエリアへの書き込みを含め、RAM53のデータは全く書き替えられていない。停電時処理ではRAM53のチェックサム値を「0」としているので(図6のS37)、RAM53のデータが正常にバックアップされていれば、そのチェックサム値は「0」となっている。よって、かかる場合には、RAM53のチェックサム値を調べ(S62)、チェックサム値が正常であれば(チェックサム値が「0」であれば)(S62:Yes)、バックアップは正常と判断して、S63からS68の復電処理を実行する。
一方、S62の処理において、チェックサム値に異常があれば(チェックサム値が「0」でなければ)(S62:No)、バックアップ中にデータが破壊されるなどの異常が発生している。よって、かかる場合には、割込を禁止し(S69)、全ての出力ポートの出力状態をクリアして全てのアクチュエータをオフした後に(S70)、エラー表示処理を行って(S71)、バックアップエラーの発生を報知する。
S63からの復電処理では、まず、スタックポインタ保存メモリ53bの値をスタックポインタへ復帰し(S63)、スタックの状態を電源断前の状態に復帰させる。次に、2バイトで構成される復電コマンドをMPU51の内部レジスタであるBCレジスタへそれぞれ書き込み(S64)、優先コマンド設定処理を実行する(S65)。優先コマンド設定処理は、BCレジスタに書き込まれたデータ(コマンド)を、コマンドバッファ53dに記憶されているコマンドに優先してサブ制御基板Sへ送信されるようにコマンドバッファ53dへ設定する処理であり、図9を参照して後述する。優先コマンド設定処理の実行によって、停電の解消をサブ制御基板Sへ報せるコマンド、即ち復電コマンドを、コマンドバッファ53dへ設定した後は、更に、打ち止め・自動精算設定保存処理(S66)、スイッチ状態の初期化処理(S67)をそれぞれ実行し、停電フラグ53aをオフする(S68)。そして、リターン命令を実行して、復電処理を終了する。リターン命令の実行により、MPU51のプログラムカウンタの値はスタックエリアに記憶されている停電時処理(図5のS13)の次のアドレスへ切り替わるので、停電時処理の次の処理である図5のS14の処理から制御が再開される。
図8は、コマンド設定処理を示したフローチャートである。このコマンド設定処理は、サブ制御基板Sへ送信するコマンドをコマンドバッファ53dへ設定するための処理であり、設定すべき2バイトのコマンドをMPU51の内部レジスタであるBCレジスタへそれぞれ書き込んだ状態で実行される。コマンド設定処理は、図7に示すS61のメイン処理の中で実行される。
コマンド設定処理では、まず、割込を禁止し(S81)、コマンドバッファ53dの先頭アドレスからコマンド入力ポインタ53fの値番目の位置に、Bレジスタの内容を書き込み(S82)、2バイトで構成されるコマンドの1バイト目のデータをコマンドバッファ53dへ設定する。次に、コマンド入力ポインタ53fの値を「1」加算し(S83)、加算後のコマンド入力ポインタ53fの値を1Fhでアンド論理をとり、その結果をコマンド入力ポインタ53fの値とする(S84)。
前述した通り、コマンドバッファ53dは、32バイトのサイズのリングバッファで構成されるので、コマンド入力ポインタ53fの値の更新時には、更新後の値が「32」以上となったか否かを判断し、「32」以上となった場合には、更新後のコマンド入力ポインタ53fの値を「0」に戻す処理が必要であった。かかる処理は条件分岐命令を伴う煩雑な処理であるが、本実施例のように、更新後のコマンド入力ポインタ53fの値を、コマンドバッファ53dのサイズマイナス1の値(1Fh)でアンド論理をとり、その結果を更新後のコマンド入力ポインタ53fの値とすることにより、コマンド入力ポインタ53fの値の更新を、条件分岐命令を使用せずに簡易に行うことができる。
コマンド入力ポインタ53fの値の更新後は、更に、コマンドバッファ53dの先頭アドレスからコマンド入力ポインタ53fの値番目の位置に、Cレジスタの内容を書き込み(S85)、2バイトで構成されるコマンドの2バイト目のデータをコマンドバッファ53dへ設定する。次に、コマンド入力ポインタ53fの値を「1」加算し(S86)、加算後のコマンド入力ポインタ53fの値を1Fhでアンド論理をとり、その結果をコマンド入力ポインタ53fの値とする(S87)。これにより、2バイトで構成される1のコマンドがコマンドバッファ53dへ設定されるので、コマンドカウンタ53eの値を「2」加算し(S88)、S81の処理で禁止した割込を許可して(S89)、このコマンド設定処理を終了する。
図9は、優先コマンド設定処理(S65)を示したフローチャートである。この優先コマンド設定処理は、コマンドバッファ53dに記憶されているコマンドに優先してサブ制御基板Sへ送信するべきコマンドを、コマンドバッファ53dへ設定するための処理であり、図8のコマンド設定処理と同様に、設定すべき2バイトのコマンドをMPU51の内部レジスタであるBCレジスタへそれぞれ書き込んだ状態で実行される。優先コマンド設定処理は、図7の復電処理(S65)など、緊急に送信するべきコマンドがある場合に実行される。
まず、この優先コマンド設定処理が図7の復電処理(S65)での実行か否かを確認する(S90)。復電処理での実行であれば(S90:Yes)、コマンドの送信途中でなく且つ割込は禁止状態にあるので、S91及びS92の各処理の実行をスキップして、処理をS93へ移行する。停電時処理(S13)は図6で説明した通りコマンドの送信途中では実行されず、また、電源投入後は割込を禁止した状態で復電処理が実行されるからである。一方、この優先コマンド設定処理が復電処理での実行でなければ(S90:No)、メイン処理(S61)の中で実行されているので、かかる場合には、コマンドカウンタ53eの値が奇数であるか否か、即ちコマンドの送信(出力)途中であるか否かを確認し(S91)、送信途中であれば(S91:Yes)、以降の処理の実行を待機する。これにより、1(単位)のコマンドが2データ以上で構成される場合であっても、そのコマンドの送信を、1のコマンド単位に確実に行うことができる。
一方、コマンドカウンタ53eの値が偶数であれば(S91:No)、コマンドの送信途中ではなく、1(単位)のコマンドの送信は完了しているので、割込を禁止した後(S92)、コマンド出力ポインタ53gの値を「2」減算し(S93)、減算後のコマンド出力ポインタ53gの値を1Fhでアンド論理をとり、その結果をコマンド出力ポインタ53gの値とする(S94)。これにより、コマンド出力ポインタ53gの値が「2」戻される。
次に、コマンドバッファ53dの先頭アドレスからコマンド出力ポインタ53gの値番目の位置に、Bレジスタの内容を書き込み(S95)、2バイトで構成されるコマンド(この場合は、復電コマンド)の1バイト目のデータをコマンドバッファ53dへ設定する。更に、コマンド出力ポインタ53gの値を「1」加算し(S96)、加算後のコマンド出力ポインタ53gの値を1Fhでアンド論理をとり、その結果をコマンド出力ポインタ53gの値とする(S97)。
コマンド出力ポインタ53gの値の更新後は、更に、コマンドバッファ53dの先頭アドレスからコマンド出力ポインタ53gの値番目の位置に、Cレジスタの内容を書き込み(S98)、2バイトで構成されるコマンド(この場合は、復電コマンド)の2バイト目のデータをコマンドバッファ53dへ設定する。
次に、コマンド出力ポインタ53gの値を「1」減算し(S99)、減算後のコマンド出力ポインタ53gの値を1Fhでアンド論理をとり、その結果をコマンド出力ポインタ53gの値とする(S100)。このコマンド出力ポインタ53gの値の更新により、S95およびS98の処理でコマンドバッファ53dへ設定したコマンド(この場合は、復電コマンド)が最優先でサブ制御基板Sへ送信される。以上の処理により、優先して送信すべきコマンドがコマンドバッファ53dへ設定されるので、コマンドカウンタ53eの値を「2」加算する(S101)。そして、この優先コマンド設定処理が図7の復電処理(S65)での実行であれば(S102:Yes)、割込を許可することなく、即ち割込禁止の状態を維持したまま当該処理を終了し、一方、この優先コマンド設定処理が復電処理での実行でなければ(S102:No)、メイン処理(S61)の中で実行されているので、S92の処理で禁止した割込を許可して(S103)、当該処理を終了する。
図10は、コマンド出力処理(S21)のフローチャートである。コマンド出力処理は、コマンド設定処理(図8参照)で設定された通常のコマンド、及び優先コマンド設定処理(図9参照)で設定された復電コマンドなどの他のコマンドに優先して送信するべきコマンドを、1データずつサブ制御基板Sへ送信するための処理であり、図5に示すタイマ割込処理の中で定期的に実行される。
まず、コマンドカウンタ53eの値が「0」であるか否か、即ち送信すべきコマンドがコマンドバッファ53dへ設定されているか否かを確認する(S111)。確認の結果、コマンドカウンタ53eの値が「0」で(S111:Yes)、送信すべきコマンドがコマンドバッファ53dに設定されていなければ、コマンド出力処理(S21)を終了する。
一方、コマンドカウンタ53eの値が0でなければ(S111:No)、送信すべきコマンドがコマンドバッファ53dに設定されているので、まず、コマンドバッファ53dの先頭アドレスからコマンド出力ポインタ53gの値番目のデータをコマンド(コマンドを構成する1のデータ)としてサブ制御基板Sへ送信し(S112)、送信したデータを記憶するコマンドバッファ53dの内容を0クリアする(S113)。これにより、ノイズなどを原因として誤動作した場合にも、一度、送信したコマンドのデータを、重複して送信しないようにすることができる。なお、コマンドデータの「0」は、本実施例において何の処理も実行しない無実行コードに割り当てられている。
次に、コマンド出力ポインタ53gの値を1加算し(S114)、加算後のコマンド出力ポインタ53gの値を1Fhでアンド論理をとり、その結果をコマンド出力ポインタ53gの値とする(S115)。コマンド出力ポインタ53gの値の更新後は、コマンドカウンタ53eの値を1減算して(S116)、このコマンド出力処理を終了する。
ここで、図11及び図12を参照して、コマンド設定処理および優先コマンド設定処理の動作を説明する。
図11は、コマンド設定処理の動作模式図であり、図11(a)に示すように、コマンドバッファ53dにコマンドが記憶されていない状態、即ちコマンドカウンタ53eの値が「0」の状態では、コマンド入力ポインタ53fの値とコマンド出力ポインタ53gの値とは等しくなっている。かかる状態から、コマンド設定処理(図8)によって、2のコマンド(C1〜C4の4つのデータ)がコマンドバッファ53dへ設定されると、図11(b)に示すように、コマンド入力ポインタ53fの値は、「+4」された位置へ移動する。この状態から、コマンド出力処理(図10のS21)によって、1のコマンド(2データ)が送信されると、図11(c)に示すように、コマンド出力ポインタ53gの値は「+2」された位置へ移動すると共に、送信されたデータであるC1およびC2を記憶していたコマンドバッファ53dの位置には無実行データである「0(図中には「−」として表記)」が書き込まれ、更にコマンドカウンタ53eの値が送信したデータ数の「2」だけ減算され、その結果「2」となる。そして、更に、コマンド出力処理(図10のS21)によって、1のコマンド(2データ)が送信されると、図11(d)に示すように、コマンド出力ポインタ53gの値は「+2」された位置へ移動すると共に、送信されたデータであるC3およびC4を記憶していたコマンドバッファ53dの位置には無実行データである「0」が書き込まれ、コマンドカウンタ53eの値が「0」とされる。その結果、コマンド入力ポインタ53fの値とコマンド出力ポインタ53gの値とは等しくなる。
このように、コマンド設定処理によって、コマンドがコマンドバッファ53dへ設定される場合には、コマンド入力ポインタ53fの値が示すコマンドバッファ53dの位置へ、送信するべきコマンドが順に設定される。
これに対し、他のコマンドに優先して送信されるコマンドは、コマンド出力ポインタ53gの値に基づいて、コマンドバッファ53dへ設定される。具体的には、図12に示すように設定される。図12は、優先コマンド設定処理の動作模式図である。図12(a)に示すように、コマンドバッファ53dにコマンドが記憶されていない状態、即ちコマンドカウンタ53eの値が「0」の状態では、コマンド入力ポインタ53fの値とコマンド出力ポインタ53gの値とは等しくなっている。かかる状態から、コマンド設定処理(図8)によって、2のコマンド(C1〜C4の4つのデータ)がコマンドバッファ53dへ設定されると、図12(b)に示すように、コマンド入力ポインタ53fの値は、「+4」された位置へ移動する。
この状態からX1およびX2の優先コマンド(例えば、復電コマンド)を設定する場合、優先コマンド設定処理(図9のS65)によって、コマンド出力ポインタ53gの値を「2」戻し、その戻したコマンド出力ポインタ53gの値が示すコマンドバッファ53dの位置へ、優先して送信するべきコマンドX1,X2を順に設定する。図12(c)には、かかる優先コマンドの設定が完了した状態が図示されており、優先コマンドを設定した結果、合計3のコマンドがコマンドバッファ53dへ記憶されることになるので、コマンドカウンタ53eの値は「6」となる。
かかる状態から1のコマンド(2データ)が送信される場合には、コマンド出力ポインタ53gの値が示すコマンドから送信されるので、コマンド出力処理(図10のS21)によって、先程コマンドバッファ53dへ設定された優先コマンドX1,X2がサブ制御基板Sへ送信される。コマンドの送信後は、図12(d)に示すように、コマンド出力ポインタ53gの値は「+2」された位置へ移動すると共に、送信されたデータであるX1およびX2を記憶していたコマンドバッファ53dの位置には無実行データである「0」が書き込まれ、更にコマンドカウンタ53eの値が送信したデータ数の「2」だけ減算され、その結果「4」となる。
このようにコマンド出力ポインタ53gの値を操作することにより、コマンドバッファ53dに記憶されている他のコマンドに優先して送信されるように、所望のコマンド(本実施例では、復電コマンド)を、コマンドバッファ53dへ設定することができる。また、かかる優先して送信すべきコマンドは、他のコマンドと同様に、コマンド出力処理(S21)によって送信することができるので、送信処理の共通化をも図ることができる。
なお、他のコマンドに優先して送信されるコマンドは、必ずしも復電コマンドに限られるものではなく、緊急性を要するコマンド、例えばエラーの発生を報せるコマンドなどを適用することができる。これらのコマンドを他のコマンドに優先してサブ制御基板Sへ送信する場合には、該コマンドをMPU51のBCレジスタへ書き込んだ後に、優先コマンド設定処理(S65)を実行する。
次に、図13及び図14を参照して、第2実施例について説明する。前記した第1実施例では、停電監視回路57から出力される停電信号58を、MPU51のNMI割込端子に入力し、NMI割込処理(図4)によって停電フラグ53aをオンし、その停電フラグ53aがオンされている場合に、タイマ割込処理の中で停電時処理(S13)を実行するようにしていた。
これに対し第2実施例では、NMI割込処理を使用せず、タイマ割込処理において、入出力ポート54で停電監視回路57から出力される停電信号58の出力状態を読み込み、停電信号58が出力されている場合に停電時処理(S122)を実行するようにしたものである。このため第2実施例では、NMI割込処理(図4)と停電フラグ53aとが不要となり、代わって、RAMクリア処理(S56,S58)の実行を記憶する初期化フラグが設けられている。即ち、第1実施例では電源投入時の処理(図7)において、停電フラグ53aのオン状態がRAMクリア処理(S56,S58)の未実行を表していたが、第2実施例では停電フラグ53aの削除に伴って、初期化フラグを設け、その初期化フラグのオン状態によりRAMクリア処理(S56,S58)の実行を表すようにしている。以下、第2実施例の説明にあたり、前記した第1実施例と同一の部分には同一の符号を付してその説明を省略する。
図13は、第2実施例のタイマ割込処理のフローチャートである。この処理では、レジスタ退避処理(S11)の後に、入出力ポート54を介して停電信号58の出力状態を読み込み、停電信号58が出力されている場合に(S121:Yes)、停電時処理(S122)を実行する。第2実施例の停電時処理(S122)は、図6に示す第1実施例の停電時処理(S13)において、停電フラグ53aをオフするS41の処理を削除して構成されるので、その説明は省略する。
図14は、電源投入時に主制御基板Cで実行される第2実施例のメイン処理のフローチャートである。この処理では、リセットスイッチ42がオンされている場合(S55:Yes)のRAMクリア処理(S56)の実行後、及び設定キースイッチ61がオンされている場合(S57:Yes)のRAMクリア処理(S58)の実行後に、RAM53のクリアがなされたことを記憶するべく初期化フラグがオンされる(S131,S132)。
初期化フラグがオンされていれば(S133:Yes)、この初期化フラグをオフした後に(S134)、スロットマシン1の通常遊技を行う各処理へ移行する(S61)。一方、初期化フラグがオンされていなければ(S133:No)、RAMクリア処理(S56,S58)は実行されていないので、かかる場合には、RAM53のチェックサム値の確認後(S62)、チェックサム値が正常であれば(S62:Yes)、復電処理(S63〜S67)を実行する。
この第2実施例においても、第1実施例の場合と同様に、停電時処理の実行タイミングを考慮することなく、メイン処理(S61)やタイマ割込処理の各処理(S14〜S24)をプログラムできるので、その分、プログラムを簡略化して小容量化を図ることができる。また、サブ制御基板Sへ他のコマンドに優先して送信したいコマンドがあれば、これを優先コマンド設定処理(図9のS65)によってコマンドバッファ53dへ設定することにより、該コマンドをコマンドバッファ53dに記憶される他のコマンドに優先してサブ制御基板Sへ送信することができる。即ち、1のコマンドを他のコマンドに優先してサブ制御基板Sへ送信することができるのである。
なお、上記各実施例において、請求項1記載の第1送信待コマンドとしては、図11及び図12に示す2のコマンド(C1〜C4の4つのデータ)が該当し、第2送信待コマンドとしては、図12に示す優先コマンドX1,X2が該当し、第1記憶実行手段としては、図8に示すコマンド設定処理が該当し、第2記憶実行手段としては、図9に示す優先コマンド設定処理(S65)が該当し、第1コマンド送信手段および第2コマンド送信手段としては、図10に示すコマンド出力処理(S21)が該当し、変更手段としては、図9に示す優先コマンド設定処理のS93,S94の処理が該当する。復電手段としては、図7のS63〜S68の処理が該当する。判断手段としては、図9のS90の処理が該当する。
以上、実施例に基づき本発明を説明したが、本発明は上記実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
本発明をスロットマシン1以外の遊技機、例えば、第1から3種のパチンコ機に用いるようにしても良い。
本発明を上記実施例とは異なるタイプのパチンコ機等に実施しても良い。例えば、一度大当たりすると、それを含めて複数回(例えば2回、3回)大当たり状態が発生するまで、大当たり期待値が高められるようなパチンコ機(通称、2回権利物、3回権利物と称される)として実施しても良い。また、大当たり図柄が表示された後に、所定の領域に球を入賞させることを必要条件として特別遊技状態となるパチンコ機として実施しても良い。更に、パチンコ機以外にも、アレパチ、雀球、スロットマシン、いわゆるパチンコ機とスロットマシンとが融合した遊技機などの各種遊技機として実施するようにしても良い。
なお、スロットマシンは、例えばコインを投入して図柄有効ラインを決定させた状態で操作レバーを操作することにより図柄が変動され、ストップボタンを操作することにより図柄が停止されて確定される周知のものである。従って、スロットマシンの基本概念としては、「複数の識別情報からなる識別情報列を変動表示した後に識別情報を確定表示する可変表示手段を備え、始動用操作手段(例えば操作レバー)の操作に起因して識別情報の変動が開始され、停止用操作手段(例えばストップボタン)の操作に起因して、或いは、所定時間経過することにより、識別情報の変動が停止され、その停止時の確定識別情報が特定識別情報であることを必要条件として、遊技者に有利な特別遊技状態を発生させる特別遊技状態発生手段とを備えたスロットマシン」となり、この場合、遊技媒体はコイン、メダル等が代表例として挙げられる。
また、パチンコ機とスロットマシンとが融合した遊技機の具体例としては、複数の図柄からなる図柄列を変動表示した後に図柄を確定表示する可変表示手段を備えており、球打出用のハンドルを備えていないものが挙げられる。この場合、所定の操作(ボタン操作)に基づく所定量の球の投入の後、例えば操作レバーの操作に起因して図柄の変動が開始され、例えばストップボタンの操作に起因して、或いは、所定時間経過することにより、図柄の変動が停止され、その停止時の確定図柄がいわゆる大当たり図柄であることを必要条件として遊技者に有利な大当たり状態が発生させられ、遊技者には、下部の受皿に多量の球が払い出されるものである。
以下に変形例を示す。請求項1記載の遊技機において、前記1のコマンドは複数のデータで構成されると共に、複数回に分けて前記主制御手段から前記サブ制御手段へ送信されるものであり、前記優先コマンド設定手段は、前記送信バッファに設定されている1のコマンドが送信途中である場合には、優先して送信すべきコマンドの前記送信バッファへの設定を待機するものであることを特徴とする遊技機1。ここで、1のコマンドの送信途中とは、1のコマンドを構成する複数のデータのうち、既に一部のデータを送信しており且つすべてのデータは送信していない状態をいう。例えば、1のコマンドが2データで構成される場合には、その2データのうち、1データだけが送信された状態をいう。また、1のコマンドが3データで構成される場合には、その3データのうち、1または2データが送信された状態をいう。1のコマンドが4データ以上で構成される場合にも同様である。この遊技機1によれば、送信バッファに設定されている1のコマンドが送信途中である場合には、優先して送信すべきコマンドの送信バッファへの設定が待機されるので、1のコマンドが複数のデータで構成され且つ複数回に分けて主制御手段からサブ制御手段へ送信されるものであっても、そのコマンドの送信を正確に行うことができる。
請求項1記載の遊技機または遊技機1において、前記送信バッファへのコマンドの設定位置を記憶する入力ポインタと、前記送信バッファに設定されたコマンドの読み出し位置を記憶する出力ポインタとを備え、前記コマンド送信手段は、前記出力ポインタが示す位置に設定されているコマンドを読み出して前記サブ制御手段へ送信するものであり、前記コマンド設定手段は、前記サブ制御手段へ送信するべきコマンドを、前記入力ポインタが示す前記送信バッファの位置へ設定する一方、前記優先コマンド設定手段は、前記サブ制御手段へ優先して送信するべきコマンドを、前記出力ポインタが示す前記送信バッファの位置を優先して送信するべきコマンドの数分戻した位置に設定するものであることを特徴とする遊技機2。遊技機2によれば、優先して送信するコマンドと他のコマンドとを、同一の送信バッファと同一のコマンド送信手段とを使用して送信することができる。即ち、コマンドの送信(出力)処理を変更すること無く、1のコマンドを他のコマンドに優先して送信することができる。
遊技機2において、前記送信バッファはそのサイズが2のn乗のリングバッファとして構成されており、前記出力ポインタの値の更新は、その出力ポインタの更新後の値と前記送信バッファのサイズマイナス1の値とで2進数によるアンド論理をとった結果を前記出力ポインタの値として行われることを特徴とする遊技機3。遊技機3によれば、出力ポインタの値の更新は、出力ポインタの更新後の値にアンド論理をした結果の値とするだけなので、送信バッファがリングバッファとして構成され、更新後の出力ポインタの値が送信バッファのサイズオーバーをした場合などに条件分岐命令を用いることなく、出力ポインタの更新を簡易に行うことができる。なお、nは自然数である。
遊技機2又は3において、前記送信バッファはそのサイズが2のn乗のリングバッファとして構成されており、前記入力ポインタの値の更新は、その入力ポインタの更新後の値と前記送信バッファのサイズマイナス1の値とで2進数によるアンド論理をとった結果を前記入力ポインタの値として行われることを特徴とする遊技機4。遊技機4によれば、入力ポインタの値の更新は、入力ポインタの更新後の値にアンド論理をした結果の値とするだけなので、送信バッファがリングバッファとして構成され、更新後の入力ポインタの値が送信バッファのサイズオーバーをした場合などに条件分岐命令を用いることなく、入力ポインタの更新を簡易に行うことができる。なお、nは自然数である。
請求項1記載の遊技機または遊技機1から4のいずれかにおいて、前記優先コマンド設定手段により前記送信バッファに設定されるコマンドは、エラーの発生を報せるコマンドであることを特徴とする遊技機5。遊技機5によれば、エラーの発生を報せるコマンドは他のコマンドに優先して主制御手段からサブ制御手段へ送信されるので、サブ制御手段へエラーの発生をいち早く報せて、サブ制御手段にエラー時の対処をいち早く行わせることができる。
請求項1記載の遊技機または遊技機1から5のいずれかにおいて、前記優先コマンド設定手段により前記送信バッファに設定されるコマンドは、停電解消による復電を報せるコマンドであることを特徴とする遊技機6。遊技機6によれば、停電解消による復電を報せるコマンドは他のコマンドに優先して主制御手段からサブ制御手段へ送信される。よって、未送信のコマンドが送信バッファに残ったまま停電となっても、停電解消後には、その送信バッファに残された未送信のコマンドに優先して、復電を報せるコマンドをサブ制御手段へ送信することができる。
請求項1記載の遊技機または遊技機1から6のいずれかにおいて、前記コマンド送信手段は、送信後のデータが記憶される送信バッファの内容をクリアするクリア手段を備えていることを特徴とする遊技機7。遊技機7によれば、送信後のデータが記憶される送信バッファの内容は、クリア手段によってクリアされるので、ノイズなどを原因として誤動作した場合にも、一度送信したデータを誤って重複送信することを防止できる。なお、送信バッファに記憶されるデータのクリア手法としては、例えば、何の処理も実行しない無実行データを上書きすることが挙げられる。
請求項1記載の遊技機または遊技機1から7のいずれかにおいて、電源断後もデータを保持するデータ記憶手段と、停電発生時に停電信号を出力する停電監視手段と、その停電監視手段から停電信号が出力された場合に、データを前記データ記憶手段へ退避すると共に制御の中断処理を実行する停電時手段と、停電解消後にその停電時手段によって前記データ記憶手段へ退避されたデータを復帰して中断した処理を再開する復電手段とを備え、前記停電時手段は、割込の禁止設定が可能な割込処理の中で所定のタイミングで実行されるものであることを特徴とする遊技機8。
スロットマシンやパチンコ機の制御は、停電等の発生によって電源が突然切断されても、停電の解消後(電源の再入時)には電源断時の状態から遊技が再開されるように構成されている。停電の解消後に電源断時の状態から遊技を再開するためには、停電発生時に、所定の停電時処理を実行する必要がある。かかる停電時処理は、制御系の駆動電圧がダウンするまでの僅かな時間に完了しなければならない。よって、停電の発生後、直ちに停電時処理を実行するため、停電の発生を検出する停電監視回路を設け、停電の発生時にその停電監視回路から出力される停電信号を、割込の禁止設定ができないノンマスカブル割込端子に入力し、そのノンマスカブル割込によって停電時処理を実行する。これにより、停電発生時に停電時処理が即座に実行される。
しかしながら、停電時処理をノンマスカブル割込で行う場合、停電はいつ発生するのか分からないので、停電時処理がいつ実行されても支障のないように、メイン処理や他の割込処理をプログラムしなければならず、その結果、プログラムが煩雑化すると共に大容量化するという問題点がある。例えば、データの更新を行う場合には、通常、そのデータの更新とその更新の完了の記憶とをする必要がある。しかし、停電時処理をノンマスカブル割込で行うと、データの更新後であってその更新の完了の記憶前に停電時処理が実行される場合があり、かかる場合には、停電解消後の復電処理において、データの更新の完了が記憶されていないので、既に更新されているデータを再度更新することになり、プログラムが暴走する。このため、停電時処理をノンマスカブル割込で行う場合、データの更新後であってその更新の完了の記憶前に停電時処理が実行された場合には、停電解消後の復電処理において、データの再更新を行わないようにプログラムする必要があり、その結果、プログラムが煩雑化すると共に大容量化するのである。このようなケースは、データの更新を行う場合に限られず、プログラム中に多々存在する。
遊技機8によれば、停電時手段は、停電監視手段から停電信号が出力された場合に、データをデータ記憶手段へ退避すると共に制御の中断処理を実行するものである。この停電時手段は、割込の禁止設定が可能な割込処理の中で所定のタイミングで実行されるので、他の制御に支障を来すことのない好適なタイミングで実行される。よって、停電時手段の実行タイミングを考慮することなく、メイン処理や割込処理をプログラムできるので、その分、プログラムを簡略化できると共に、そのプログラムの小容量化を図ることができる。
遊技機8において、前記データ記憶手段は、遊技の状態を示すメモリやフラグの各記憶エリアと、スタックエリアとを有しており、前記停電時手段は、前記停電監視手段から停電信号が出力された場合にスタックポインタの値を前記データ記憶手段へ退避すると共に、前記復電手段は、停電解消後にそのデータ記憶手段へ退避された値をスタックポインタへ復帰するものであることを特徴とする遊技機9。スタックポインタの値は、停電発生時に停電時手段によりデータ記憶手段に退避されて電源断中も保持され、停電解消時には復電手段によりデータ記憶手段からスタックポインタへ復帰される。メモリやフラグの各記憶エリア及びスタックエリアは、電源断後もデータを保持可能なデータ記憶手段に設けられているので、このデータ記憶手段へ停電発生時にスタックポインタの値を記憶することにより、電源断後においても遊技の状態を保持して、停電解消後に遊技を再開することができる。
遊技機8または9において、前記停電時手段が実行される所定のタイミングは、前記割込処理におけるレジスタの退避処理後のタイミングであることを特徴とする遊技機10。停電時手段は、レジスタの退避処理後に実行されるので、停電時手段にてレジスタの退避処理を実行する必要がなく、その分、プログラムを小容量化できる。
遊技機8から10のいずれかにおいて、前記割込処理は定期的に実行されるものであることを特徴とする遊技機11。停電時手段は定期的に実行される割込処理の中で且つ所定のタイミングで実行されるので、割込処理の中の他の処理を分断することなく且つ特定のタイミングで、停電時手段を実行することができる。よって、停電時手段がイレギュラーなタイミングで実行されることを考慮することなく、他の処理(割込処理のみならずメイン処理も含む)をプログラムすることができるので、プログラムの簡略化と小容量化とを図ることができる。
遊技機8から11のいずれかにおいて、前記停電時手段は、前記割込処理において戻り先番地をスタックエリアへ記憶した後に処理を前記停電時手段へ移行することにより実行されるものであることを特徴とする遊技機12。停電時手段は、停電時手段の実行後の戻り先番地がスタックエリアに記憶された後に実行される。よって、復電手段は停電解消後に復電に伴う各処理(以下「復電処理」と略す)を実行した後にリターン命令を実行するだけで(又はスタックエリアに記憶された戻り先番地をMPUのプログラムカウンタにセットするだけで)、制御の実行番地を戻すことができ、プログラムを簡略化して小容量化することができる。なお、戻り先番地をスタックエリアへ記憶した後に停電時手段へ処理を移行するものとしては、停電時手段をコールするコール命令の実行や停電時手段の実行前にMPUのプログラムカウンタの値をスタックエリアへ退避しその後停電時手段へのジャンプ命令を実行するものが例示される。
遊技機12において、戻り先番地をスタックエリアへ記憶した後に処理を前記停電時手段へ移行する処理は、プログラム中の1カ所にのみ設けられていることを特徴とする遊技機13。よって、停電時手段の実行後の戻り先番地、即ち復電手段による復電処理後に再開されるプログラムの番地も1カ所になる。従って、復電処理後には毎回同じ番地からプログラムを再開することができるので、プログラム再開時のイレギュラーな処理が不要となり、再開処理を簡略化してプログラムを小容量化することができる。
遊技機8から13のいずれかにおいて、前記停電監視手段から停電信号が出力された場合に実行される割込の禁止設定が不可能なノンマスカブル割込手段と、そのノンマスカブル割込手段の実行により停電の発生を記憶する停電記憶手段とを備え、前記停電時手段はその停電記憶手段に停電の発生が記憶されている場合に実行されるものであることを特徴とする遊技機14。遊技機14によれば、ノンマスカブル割込手段によって停電の発生を即座に記憶し、その記憶に基づいて、割込の禁止設定が可能な割込処理の中で所定のタイミングで停電時手段を実行することができる。よって、他の制御に支障を来すことのない好適なタイミングで、停電時手段を迅速に実行することができる。
遊技機8から13のいずれかにおいて、前記停電時手段は、割込の禁止設定が可能な前記割込処理の中で、前記停電監視手段から出力される停電信号の出力状態を確認し、その停電信号が出力されている場合に実行されるものであることを特徴とする遊技機15。遊技機15によれば、停電監視手段から出力される停電信号の出力状態を、ポート入力して確認し、停電信号が出力されている場合に停電時手段を実行することができる。
遊技機8から15のいずれかにおいて、前記停電時手段は、スタックポインタの値を前記データ記憶手段へ退避する退避処理と、その退避処理の後に実行され前記データ記憶手段のチェックサムを算出する算出処理と、その算出処理によって算出されたチェックサムを2の補数化して前記データ記憶手段へ書き込む補正処理と、前記停電信号の出力状態を確認しその停電信号が出力されていない場合には前記停電時手段により中断された制御を再開する停電信号再確認処理とを有しており、その停電信号再確認処理は、前記算出処理の実行後に実行されるものであることを特徴とする遊技機16。算出処理の実行時間は、データ記憶手段の容量に応じて変化するものの比較的長い(実施例では870μs)。よって、その算出処理の実行後に停電信号の出力状態を再確認し、停電信号が出力されている場合に停電時における処理を継続し、出力されていない場合には停電時における処理を終了して停電時手段により中断した制御を再開する。これにより、ノイズなどの影響によって停電信号が誤検出(或いは誤出力)された結果、停電時手段が実行されても、元の制御へ復帰することができる。
遊技機16において、前記停電時手段は、所定の停電時における処理の実行後に制御を無限ループさせて制御系の駆動電圧がダウンするのを待機するものであり、前記停電信号再確認処理は、その無限ループ中に設けられていることを特徴とする遊技機17。無限ループ時に停電が解消し、停電信号の出力が解除された場合には、停電信号再確認処理によって、停電時における処理が終了され、停電時手段により中断された制御が再開される。よって、停電が一旦発生しても、その停電が制御系の駆動電圧がダウンする前に解消すれば、制御を無限ループによって停止することなく再開することができる。
遊技機8から17のいずれかにおいて、前記1のコマンドは2以上のデータで構成され、そのコマンドの2以上のデータのうち少なくとも1のデータの送信後であってそのコマンドの全データの送信完了前には、前記停電時手段の実行を待機する実行待機手段を備えていることを特徴とする遊技機18。遊技機18によれば、1のコマンドの全データの送信が完了した状態で停電時手段が実行されるので、コマンドの送信途中を考慮して停電時手段および復電手段を構成する必要がない。よって、その分、プログラムを簡略化して小容量化することができる。なお、停電時手段の実行の待機の態様としては、第1に、停電時手段の実行前にコマンドの送信状態を確認し、コマンドの全データの送信が未完了であれば、戻り先番地をスタックエリアへ記憶した後に処理を前記停電時手段へ移行する処理(例えば、停電時手段のコール命令)を未実行とするもの。第2に、一旦は停電時手段を実行し、その停電時手段の中でコマンドの送信状態を確認し、コマンドの全データの送信が未完了であれば、以降の停電時手段の各処理を未実行として停電時手段を終了するもの、などが例示される。
遊技機18において、前記停電監視手段による停電信号の出力から、前記コマンドの全データの送信と前記停電時手段の実行とに充分な時間の間、制御系の駆動電圧を有効な状態に維持する電源手段を備えていることを特徴とする遊技機19。コマンドの送信状況によって停電時手段の実行が最も遅れた場合においても、電源手段により制御系の駆動電圧は有効な状態に維持される。よって、停電時手段を正常に完了することができる。
請求項1記載の遊技機または遊技機1から19のいずれかにおいて、前記遊技機はパチンコ機であることを特徴とする遊技機20。中でも、パチンコ機の基本構成としては操作ハンドルを備え、その操作ハンドルの操作に応じて球を所定の遊技領域へ発射し、球が遊技領域内の所定の位置に配設された作動口に入賞(又は作動口を通過)することを必要条件として、表示装置において変動表示されている識別情報が所定時間後に確定停止されるものが挙げられる。また、特別遊技状態の発生時には、遊技領域内の所定の位置に配設された可変入賞装置(特定入賞口)が所定の態様で開放されて球を入賞可能とし、その入賞個数に応じた有価価値(景品球のみならず、磁気カードへ書き込まれるデータ等も含む)が付与されるものが挙げられる。
請求項1記載の遊技機または遊技機1から19のいずれかにおいて、前記遊技機はスロットマシンであることを特徴とする遊技機21。中でも、スロットマシンの基本構成としては、「複数の識別情報からなる識別情報列を変動表示した後に識別情報を確定表示する可変表示手段を備え、始動用操作手段(例えば操作レバー)の操作に起因して、或いは、所定時間経過することにより、識別情報の変動が停止され、その停止時の確定識別情報が特定識別情報であることを必要条件として、遊技者に有利な特別遊技状態を発生させる特別遊技状態発生手段とを備えた遊技機」となる。この場合、遊技媒体はコイン、メダル等が代表例として挙げられる。
請求項1記載の遊技機または遊技機1から19のいずれかにおいて、前記遊技機はパチンコ機とスロットマシンとを融合させたものであることを特徴とする遊技機22。中でも、融合させた遊技機の基本構成としては、「複数の識別情報からなる識別情報列を変動表示した後に識別情報を確定表示する可変表示手段を備え、始動用操作手段(例えば操作レバー)の操作に起因して識別情報の変動が開始され、停止用操作手段(例えばストップボタン)の操作に起因して、或いは、所定時間経過することにより、識別情報の変動が停止され、その停止時の確定識別情報が特定識別情報であることを必要条件として、遊技者に有利な特別遊技状態を発生させる特別遊技状態発生手段とを備え、遊技媒体として球を使用すると共に、前記識別情報の変動開始に際しては所定数の球を必要とし、特別遊技状態の発生に際しては多くの球が払い出されるように構成されている遊技機」となる。