<<<本発明の実施の形態の遊技機の構成及び概要>>>
本発明の実施の形態の遊技機は、遊技制御手段と電源監視手段とコマンド送信手段とデータ記憶手段とを有する。
遊技制御手段は、遊技の進行に関する制御をする。遊技制御手段には、所定の電圧が供給電源として供給される。電源監視手段は、遊技制御手段に供給される供給電源の電圧を監視する。電源監視手段は、供給電源の電圧が所定電圧より低下したときに電断が発生したとして低下検出信号を発する。
コマンド送信手段は、送信コマンドを記憶するための送信用記憶手段を備える。たとえば、リングバッファによって送信用記憶手段が構成される。コマンド送信手段は、送信用記憶手段に記憶されている送信コマンドを読み出し、演出に関する制御をする副制御手段この送信コマンドを送信する。なお、演出に関する制御をする副制御手段だけでなく、遊技制御手段と通信可能に接続されている他の制御装置に送信コマンドを送信できればよい。
データ記憶手段は、電断が生じた後も記憶されたデータを保持することができる。本明細書においては、遊技機、たとえばパチンコ機1等への電源の供給が遮断された状態を電断状態又は電源断状態と称する。
遊技制御手段は、以下の処理を実行する。
処理(a)は、電源低下情報セット処理である。この電源低下情報セット処理は、電源監視手段から低下検出信号が発せられた場合にはノンマスカブル割込処理によって電源低下情報をセットする。電源低下情報は、供給電源の電圧が低下したことを示す情報である。その後、ノンマスカブル割込前の元の処理に戻す。
このようにすることで、低下検出信号が発せられた場合には、直ちに、電源低下情報をセットすることができる。さらに、電源低下情報をセットした後、直ちに、割り込み前の元の処理に戻ることができ、この電源低下情報セット処理による他の処理への負担を軽くすることができる。
処理(b)は、遊技を進めるためのメイン制御処理である。このメイン制御処理は、以下の(b−1)〜(b−4)の処理を少なくとも1回実行する処理である。
(b−1)の処理は、割り込みを禁止する割込禁止処理である。ここでの割込処理は、マスカブル処理であるものが好ましい。
(b−2)の処理は、(b−1)の割込禁止処理の後、電源低下情報がセットされているか否かを判断する処理である。さらに、(b−3)の処理は、(b−2)の判断処理の後、割り込みを許可する割込許可処理である。
このように、(b−2)の判断処理は、(b−1)の割込禁止処理と(b−3)の割込許可処理との間でのみ行われる処理であり、電源低下情報がセットされているか否かを判断は、メイン制御処理におけるこの一定の処理区間のみで実行される。
(b−4)の処理は、割込許可処理の後に、遊技制御処理及び遊技情報取得処理を実行する処理である。遊技制御処理は、遊技機における遊技の制御をするための処理である。たとえば、乱数を発生させたり、各種のセンサからの信号を受信したりして、遊技の進行を定めるための処理である。遊技情報取得処理は、遊技を進めるために必要な遊技情報を取得する処理である。
前述したように、メイン遊技処理は、これらの(b−1)〜(b−4)の処理を少なくとも1回、たとえば繰り返し実行する処理である。
さらに、(b−4)の処理において、割込許可処理の後に(a)の電源低下情報セット処理を実行した場合には、(a)の電源低下情報セット処理から戻って、(b−4)の遊技制御処理及び遊技情報取得処理を実行する。
(c)の処理は、(b−2)の判断処理で電源低下情報がセットされていると判別したときに遊技情報記憶処理を実行する処理である。この遊技情報記憶処理は、(b−4)の処理で取得した遊技情報をデータ記憶手段に記憶させる処理である。このように、電源監視手段から低下検出信号が発せられたときに、直ちに電断処理を実行するのではなく、(b−1)〜(b−4)の処理を繰り返し実行されるメイン制御処理において、(b−1)の割込禁止処理を実行してから、電源低下情報がセットされているか否かを判断し、その後、メイン制御処理から抜け出してこの遊技情報記憶処理を実行する。
(d)の処理は、遊技制御手段への供給電源の電圧が所定電圧より高くなったとき、すなわち、電源が復帰したときに、送信用記憶手段に記憶されている内容をクリアするとともに、データ記憶手段に記憶させた遊技情報をコマンド送信手段から送信コマンドとして送信する処理である。
供給電源の電圧が低下したときには、電源低下情報をセットする処理のみを実行する。すなわち、供給電源の電圧が低下した場合であっても、直ちに電断処理を実行しない。したがって、メイン制御処理を実行している間に、供給電源の電圧が低下したときには、電源低下情報をセットし、その後、再びメイン制御処理に戻る。メイン制御処理に戻ったときの処理に応じて遊技情報を取得することができる。さらに、戻ったメイン制御処理で割り込みを禁止して、電源低下情報がセットされているときのみ電断処理を実行する。このように、電断処理を実行するタイミングを調整するので、電源復帰の処理に必要な情報を取得した後に電断させることができる。
また、電源が復帰したときには、送信用記憶手段に記憶されている内容をクリアするともに、電断処理でデータ記憶手段に記憶させていた遊技情報をコマンド送信手段から送信コマンドとして送信するだけで、電源復帰処理を済ますことができるので、電源復帰時における通信の位相合わせを容易にすることができる。また、電断が発生したときの通信コマンドの送信済み、未送信、受信済み、未受信などの送信状態を考慮せずに、電源を復帰させることができる。さらに、電断処理の実行するタイミングが予め定められているのでプログラムの処理が煩雑化することがなく、プログラムも小容量化できる。
また、本発明の実施の形態の遊技機は、
所定時間毎に発生する割り込みによって実行される割込処理が、前記電源低下情報がセットされてない場合には所定の処理を実行し、前記電源低下情報がセットされている場合には前記所定の処理の実行を省略するものが好ましい。
供給電源の電圧が低下したときには、処理を簡略化して、必要な処理のみを実行することによって、処理に要する時間を短くすることができる。このようにすることで、電源復帰後の処理に必要になる必要最低限の各種の情報のみを的確に取得して記憶させることができる。したがって、供給電源の電圧が低下したときには、所定の時間内、たとえば、電圧保証時間内に必要最低限の処理を済ませて、電断に対応することができる。
さらに、本発明の実施の形態の遊技機では、
前記(b−4)の処理が、
(b−4−1) 前記(b−3)の割込許可処理を実行した後、タイマ値が所定値以上になったか否かを判断する処理と、
(b−4−2) タイマ値が前記所定値未満であるときには、前記(b−1)の処理に戻す処理と、
(b−4−3) タイマ値が前記所定値以上であるときには、前記遊技制御処理及び前記遊技情報取得処理を実行する処理と、を含み、
前記(b−5)の処理が、前記(b−4−3)の処理でタイマ値が前記所定値以上であるときに、前記(a)の電源低下情報セット処理を実行した場合には、前記(a)の電源低下情報セット処理から戻って、前記遊技制御処理及び遊技情報取得処理を実行するものが好ましい。
タイマ値が所定値未満であるときには、(b−1)の処理に戻すので、電源低下情報がセットされているか否かを繰り返し判断できる。したがって、供給電源の電圧が所定電圧より低下したか否かを的確に判断することができる。また、タイマ値が所定値以上であるときには、電源低下情報がセットされている場合であっても、遊技制御処理や遊技情報取得処理を優先的に実行して、電源復帰に必要な情報を的確に取得することができる。
前述したように、処理(a)は、電源監視手段から低下検出信号が発せられた場合に、ノンマスカブル割込処理によって電源低下情報をセットし、その後、割り込み前の元の処理に戻る処理が好ましい。タイマ値が所定値未満であるときに、ノンマスカブル割込処理から戻った場合には、処理(b−4−2)によって処理(b−1)に戻り、処理(b−2)によって電源低下情報がセットされているか否かを判断する。これに対して、タイマ値が所定値以上であるときに、ノンマスカブル割込処理から戻った場合には、処理(b−4−3)によって遊技情報取得処理を実行する。したがって、電源監視手段から低下検出信号が発せられた場合であっても、直ちに電断処理を実行するのではなく、処理(b−4−3)を優先して、遊技情報を取得してから電断処理を実行する。
すなわち、供給電源の電圧が所定電圧より低下しても直ちに電断処理を実行するのではなく、電断処理をする前に遊技情報を一通り取得してから電断処理を実行する。特に、電圧保証時間内に遊技情報を一通り取得できるようにすることで、遊技情報の内容を有効なものにできる。ここで、電圧保証時間は、遊技制御手段を正常に動作させることができる範囲の電源電圧を遊技制御手段に供給できる時間である。このように、遊技制御手段が正常に動作している電圧保証時間内に、すなわち、遊技制御手段が安定した状態である時間内に遊技情報を一通り取得するので、処理(b−4)の遊技情報取得処理によって取得した遊技情報の全ての内容を有効なものとして扱うことができる。
このように、全ての内容が有効な遊技情報を取得しておくことで、電源回復の処理において、取得しておいた遊技情報を読み出して用いることにより、電断処理をする前の電圧保証時間内の状態を再現することができる。すなわち、処理(d)によって、電源回復の処理では、電源回復時点で送信用記憶手段に記憶されていた遊技情報を全てクリアし、データ記憶手段に記憶させた遊技情報をコマンド送信手段から送信コマンドとして送信する。電源回復時点で送信用記憶手段に遊技情報が記憶されていたとしても、電断によって送信用記憶手段が不安定になり送信用記憶手段の内容が変質(後述する、作業領域の損傷)する場合がある。このような場合であっても、送信用記憶手段を全てクリアするので、変質した送信用記憶手段の内容を用いることがなく、不適切な内容がコマンドとして送信されることを防止できる。
前述したように、処理(b−4)の遊技情報取得処理によって取得した遊技情報の全ての内容は有効であるので、送信用記憶手段を一旦初期化し、取得した遊技情報をコマンド送信手段から改めて送信するだけで、電断処理をする前の状態を再現することができ、電源回復の処理を簡便にかつ容易にすることができるとともに、処理に必要なプログラムの容量を小さくできる。このように、電断によって送信用記憶手段が不安定になり送信用記憶手段の内容が変質した場合であっても、その影響を受けることなく、電断処理をする前の状態を容易に再現することができる。
より具体的に、本発明の実施の形態の遊技機について以下に説明をする。
電源装置が電圧低下を検知すると電断検知信号をメイン制御装置のNMI端子(ノンマスカブル端子)に出力する。メイン制御装置は電断検知信号が入力されると、ノンマスカブル割込処理を行い、NMIフラグをセットするとともに、メイン処理内における所定の処理にて電断処理を行う。このメイン処理内における所定の処理とは、所定の周期で繰り返し実行されるメイン遊技処理におけるシステムタイマ経過後処理の実行前に行われる。システムタイマ経過後処理とは、システムタイマのタイマ値が所定以上となった後に実行される処理である。
また、電断処理が実行される前に割り込みが禁止され、NMIフラグの確認処理、電断処理、初期値乱数更新処理が行われた後に再び割り込みが許可されるようになっている。このように、電断処理が実行されるのは、メイン処理内の所定の処理部分のみであるので、電断処理がプログラムの不特定の場所で割り込まれるものに比してプログラムを簡素化することができる。
さらに、電断処理が実行されるのは、メイン処理内の所定の処理部分のみであるので、電断が発生したときに最新の遊技情報を取得しておくことで、電断処理に備えることができる。例えば、特別図柄制御処理の実行中に電断が発生したような場合には、従来の遊技機では、電断の発生後、直ちに電断処理が実行され、その時点での遊技情報がバックアップされたうえで電断に備えることになる。一方、本発明による遊技機は、特別図柄制御処理の実行中にNMIフラグがセットされた場合でも直ちに電断処理は実行せず、特別図柄制御処理の後に、普通図柄制御処理等のメイン遊技処理を実行してから予め定められた所定の処理にて電断処理を実行する。このように、メイン遊技処理を一周実行して最新情報を取得してから電断処理に備えることができるので従来の遊技機に比して、電断時の遊技情報をより正確にバックアップすることができる。
なお、NMIフラグがセットされてからメイン遊技処理を一周実行して電断処理を行うまでの時間は、電圧保証時間内になるようにプログラムが組まれている。
具体的には、ノンマスカブル割込でない所定時間毎に実行される割込処理(たとえば、演出制御コマンド送信割込処理、システムタイマ割込処理など)においては、NMIフラグがセットされた以降は処理を行わず、これらの割込処理から直ちに戻るようにしている。これにより、電断が発生した以降に遊技情報が更新されることがないので、電断が発生した時点の遊技情報を最新の遊技情報として保持させることができる。また、NMIフラグがセットされた後は、演出制御コマンド送信割込処理やシステムタイマ割込処理などの割込処理から直ちに戻るようにした。このため、遊技情報を取得する処理を短時間で済ませることができ、電圧保証時間を超えることがないので、安定した状態で遊技情報を取得することができる。
また、リセットICへの入力電圧が所定値を超えると電源復旧処理が行われる。この電断復旧処理においては、通信データ格納領域のクリア処理、すなわちリングバッファのクリア処理が行われる。そして、電断復帰コマンド送信予約処理において、電源復帰時のコマンドが送信される。ここで、電断時に取得した最新の遊技情報をパラメータとして付加して送信することになる。
このようにしたことにより、電源復帰時における通信の位相合わせを容易にすることができる。たとえば、メイン制御装置とサブ制御装置との間で行われる通信の位相合わせを容易にすることができる。また、Nバイトからなるコマンドを送信している最中に電断が発生したときには、送信途中の未送信部分や、リングバッファ上に残っている未送信コマンドが生じる場合がある。このような場合であっても、電源を復帰するときに初期化(リングバッファのクリア)し、最新の遊技情報をパラメータとして電断復帰コマンドに付加して送信することで、送信済みのコマンドを再び送信することなどの電断によって生ずる不具合を防止することができる。
<<<パチンコ機1の構成>>>
図1は、本実施の形態によるパチンコ機1の正面図である。
パチンコ機1の正面には遊技盤2が設けられている。遊技球であるパチンコ球が遊技盤2を流下する。遊技盤2の表面には多数の釘が植設されている。釘は、遊技盤2を流下するパチンコ球の流下方向を変化させる。図1には、一部の釘のみを示した。遊技盤2の下方には上皿3が設けられている。上皿3の下方右側には、発射ハンドル5が設けられている。発射ハンドル5は、レール4を介して遊技盤2へパチンコ球を打ち込む際に遊技者によって操作される。遊技盤2の上方には枠上部飾りランプ6が設けられている。
遊技盤2の盤面中央には、特別図柄表示装置10が設けられている。特別図柄表示装置10は、液晶表示装置からなり、特別図柄を識別情報として3列に変動表示する。特別図柄表示装置10の上方には、普通図柄を構成する緑色LED(発光ダイオード)及び赤色LEDが左右に並設された普通図柄表示装置11が設けられている。普通図柄表示装置11の左右には4つのLEDからなる普通図柄始動記憶個数表示部13が設けられている。特別図柄表示装置10の下側には4つのLEDからなる特別図柄始動記憶個数表示部12が設けられている。特別図柄表示装置10の左右には普通図柄始動通過口を構成する通過ゲート14が設けられている。特別図柄表示装置10の下方には特別図柄始動入賞口を構成する普通電動役物15が設けられている。
上皿3の上方には、球貸しボタン7a、返却ボタン7b(図示せず)、選択ボタン7c(図示せず)及び決定ボタン7d(図示せず)が設けられている。球貸しボタン7aは、パチンコ球の貸し出しを受けるときに遊技者によって操作される。パチンコ機1には、カードユニット65(図2参照)が併設されている。パチンコ球は、カードユニット65に挿入されたプリペイドカードの残高の範囲内で貸し出される。返却ボタン7bは、カードユニット65に挿入されているカードを返却させるときに操作される。選択ボタン7cは、特別図柄表示装置10に表示される情報項目を選択するときに操作される。決定ボタン7dは、特別図柄表示装置10に表示される情報項目を決定するときに操作される。
<<電子回路の構成>>
図2は、本実施の形態によるパチンコ機1の遊技動作を処理制御する電子回路の主な構成を示すブロック図である。
この電子回路は、主制御回路、副制御回路、発射制御回路及び払出制御回路などから構成されている。主制御回路は主制御基板30に設けられている。副制御回路は副制御基板40に設けられている。発射制御回路は発射制御基板60に設けられている。払出制御回路は払出制御基板61に設けられている。主制御基板30は、遊技盤2におけるパチンコ遊技の進行に関する電気的制御を行う遊技制御基板である。副制御基板40は、主制御基板30からの制御信号及び遊技情報に基づいて、各種演出装置による遊技演出の電気的制御を行う演出制御基板である。発射制御基板60の発射制御回路及び払出制御基板61の払出制御回路は、主制御基板30からの制御信号及び遊技情報に基づいて、パチンコ球の発射や賞球及び貸球の払い出しを制御する。
主制御基板30には、遊技処理を制御する制御手段としてメインCPU31が実装されている。メインCPU31は、メインROM(リードオンリメモリ)33やメインRAM(ランダムアクセスメモリ)34を内蔵している。メインROM33には、パチンコ機1の遊技動作を処理制御するためのプログラムが記憶格納されている。メインRAM34は、スタックエリアを有する記憶手段を構成する。スタックエリアには、メインCPU31の制御に用いられるレジスタの値が退避される。
前述した例では、メインROM33及びメインRAM34をメインCPU31に内蔵させる構成を示した。このような構成の他に、リードオンリメモリやランダムアクセスメモリを、メインCPU31とは別に設けて、入出力バス(図示せず)を介してメインCPU31に接続する構成にしてもよい。このような構成とした場合でも、所望のプログラムやデータを読み出したり、各種のデータを書き込んだりすることができる。
本実施の形態では、電源監視IC71は、供給電源の電圧の低下を検出したときには、電断検知信号Dの電圧レベルをハイレベル(H)からローレベル(L)に低下させることで、供給電源の電圧が所定の電圧に低下したことを電断検知信号Dによって示す。電断検知信号Dは、メインCPU31のNMI端子に入力される。電断検知信号Dの電圧レベルがハイレベル(H)からローレベル(L)に立下がったときには、ノンマスカブル割込処理が実行される(図14参照)。具体的には、後述するようにメイン遊技処理が定常的に実行されている間に、電断検知信号Dの電圧レベルがハイレベル(H)からローレベル(L)に立下がったときには、処理は、メイン遊技処理からノンマスカブル割込処理に一時的に移される(図14参照)。
このノンマスカブル割込処理によって、NMIフラグがセットされる(ステップS1413)。このように、本実施の形態では、供給電源の電圧が所定の電圧に低下したときには、NMIフラグをセットする処理のみを実行する。また、電断検知信号DをメインCPU31のNMI端子に入力したので、電断検知信号Dの電圧レベルがハイレベル(H)からローレベル(L)に立下がったときには、ノンマスカブル割込処理を必ず実行することができ、NMIフラグを的確にセットできる。
ノンマスカブル割込処理を実行した後、メイン遊技処理に戻り、復旧するために必要な遊技情報データを取得し、取得した遊技情報データを記憶させる(後述するステップS1111〜S1127の各々の処理)。続いて、メイン遊技処理において、割り込みを禁止した後(ステップS1011)、NMIフラグがセットされている場合には(ステップS1015)、電断処理を実行する(ステップS1017)。また、NMIフラグがセットされていない場合には(ステップS1015)、割り込みを許可し(ステップS1021)、メイン遊技処理を続行する。このように、電断処理を実行するタイミングを調整しているので、電断が発生したときでも、メイン遊技処理に一旦戻って、システムタイマ経過後処理(ステップS1111〜S1127)を実行することができ、電断が発生したときの最新のデータとして遊技情報データを一通り取得することができる。
このように、本実施の形態では、電断検知信号が出力されたときに、その時点で既に収集している遊技情報データを直ちに保存するのではなく、一旦、メイン遊技処理に戻ってから、必要な遊技情報データを一通り収集し、その遊技情報データをメインRAM34に保存する。なお、メイン遊技処理に戻って、遊技情報データを一通り収集して、その遊技情報データをメインRAM34に保存するまでの時間は、後述する電圧保証時間内であればよい。後述するように、メインRAM34は、電断が発生して電源が供給されていない場合でも、バックアップ電源(大容量コンデンサ)によって記憶内容が保持される。
その後、電断から復旧させるときには、まず、通信データ格納領域をクリアする(ステップS815)。このようにすることで、電断によって生じた不適切なコマンドが、副制御回路(副制御基板40)に送信されることを防止することができる。また、電源が復旧したときには、電断が生じたときに取得した遊技情報データ(最新情報)を副制御回路に送信するので(ステップS823)、副制御回路は、電断が生じたときにおける各種の遊技情報データの全てを受け取ることができ、副制御回路を電断時(電断前)の状態に的確に戻すことができる。
パチンコ機1は電源基板70を有する。電源基板70には、供給電源として電源回路が備えられている。電源回路には、AC24Vが入力される。電源回路は、入力されたAC24Vを直流電源に変換し、主制御基板30、副制御基板40、発射制御基板60、払出制御基板61等に供給する。
<バックアップ電源(大容量コンデンサ)>
電源基板70には、バックアップ電源として機能する大容量のコンデンサが搭載されている(図示せず)。このコンデンサは、メインCPU31の図示しないバックアップ端子VBBに接続されている。このコンデンサは、電源が供給されている間(電源供給時)に充電される。一方、電源が供給されていない間(電源供給が遮断された電断時)には、充電されたコンデンサから5[V]の電圧が、バックアップ端子VBBを介して、バックアップ電源としてメインCPU31に供給される。このようにすることで、電源が供給されていない間でも、コンデンサからのバックアップ電源によって、メインCPU31のメインRAM34の記憶内容を保持することができる。メインRAM34はスタックエリアを有している。電源が供給されていないときには、スタックエリアにレジスタ値を退避させることで、レジスタの内容を保持することができる。
メインCPU31のメインRAM34が「データ記憶手段」に相当し、「遊技を進めるために必要な遊技情報」が記憶される。電断が発生して電源が供給されていない場合でも、バックアップ電源(大容量コンデンサ)によって「遊技情報」は保持される。
また、電源が遮断された場合には、直ちに、供給電圧がゼロになるのではなく、電圧保証時間内においては、主制御基板30(遊技制御手段)を正常に動作させることができる範囲の電源電圧を主制御基板30に供給する。このように、電圧保証時間は、主制御基板30を正常に動作させることができる範囲の電源電圧を主制御基板30に供給できる時間である。電圧保証時間は、電源基板70を構成するコンデンサ(図示せず)の容量や主制御基板30の消費電力に応じて定まる。したがって、電源基板70を構成するコンデンサの容量を適宜変更することで電圧保証時間を決定することができる。
<電源監視IC71(電源監視手段)>
電源基板70には、電源監視手段として電源監視IC71が実装されている。電源監視IC71は、電源回路が出力する供給電源の電圧を監視する。電源監視IC71は、供給電源の電圧が所定の電圧よりも低下したときには、主制御基板30のメインCPU31と、払出制御基板61の払出制御CPU68とに、供給電源の電圧が所定の電圧に低下したことを示す電断検知信号Dを出力する。
図3は、電源監視IC71の端子の構成を示す図である。電源監視IC71は、VSB端子及びRESET端子を有する。RESET端子は、主制御基板30のメインCPU31と、払出制御基板61の払出制御CPU68との各NMI端子に接続されている。
電源基板70の電源回路は、定常状態では、供給されたAC24Vに基づいて、電圧33[V]の供給電源を生成する。電源回路から出力される供給電源の電圧が17.2[V]よりも下回った場合には、図4(a)に示すように、電源監視IC71のVSB端子に入力される電源電圧Vも33[V]から17.2[V]よりも低くなる。電源監視IC71は、VSB端子に入力される電源電圧Vが低下したことによって、供給電源の電圧の低下を検出する。電源監視IC71は、供給電源の電圧の低下を検出したときには、図4(b)に示すように、電断検知信号Dの電圧レベルをハイレベル(H)からローレベル(L)に低下させて、電断検知信号DをRESET端子から出力する。電断検知信号Dは、前述した検出信号として、メインCPU31や払出制御CPU68などの各NMI端子に出力される。メインCPU31及び払出制御CPU68は、これらのNMI端子に入力された電断検知信号Dの立下りを検出すると、ノンマスカブル処理(図14参照)を実行する。
また、電源が投入されたり復帰されたりして、電源電圧Vの値が17.2[V]を上回ったときには、電源監視IC71のCT端子(図3参照)に接続されたコンデンサの充電が開始される。コンデンサが充電されてCT端子に出力される電圧が所定の電圧まで上昇すると、図4(b)に示すように、電断検知信号Dは、電源電圧Vの値が17.2[V]を上回った後、所定時間遅れて、電圧レベルがローレベル(L)からハイレベル(H)に上がる。
メインCPU31は、アクセス許可制御手段を構成する。メインCPU31は、電源回路から電源供給が開始されて制御を開始した後、電源監視IC71のRESET端子からNMI端子に入力された電断検知信号Dを監視する。メインCPU31は、電断検知信号Dの立下りがあったことを検出した場合には、定常状態で33[V]である供給電源の電圧が、所定の電圧、すなわち17.2[V]よりも低下しない状態を確保して、メインRAM34へのアクセスを許可する(図7のステップS719参照)。
なお、定常状態で33[V]である供給電源の電圧の低下を検出する閾値を17.2[V]としたのは、次の理由による。パチンコ機1においては、遊技球の検出のために、後述する各スイッチ14s、15s及び16sを用いる。これらのスイッチ14s、15s及び16sから電圧信号が出力されてメインCPU31へ入力される。メインCPU31は、入力された電圧信号の電圧レベルがハイレベル(H)からローレベル(L)と立下がったことによって、各スイッチ14s、15s又は16sが遊技球を検出したと判断する。これらのスイッチ14s、15s及び16sから出力される電圧信号の電圧は、ハイレベル(H)で12[V]である。したがって、定常状態で33[V]である供給電源の電圧が12[V]を下回ったときには、スイッチ14s、15s及び16sでのスイッチ入力が無いにもかかわらず、スイッチ入力があったと誤って検出する場合がある。このため、供給電源の低下を検出するための閾値VSHを12[V]よりも高い17.2[V]とすることによって、このような誤検出を防止している。
<リセットIC32>
図2に示すように、メインCPU31はSRST端子を有する。このSRST端子は、主制御基板30に実装されているリセットIC32のRESET端子に接続されている。
図5は、リセットIC32の端子の構成を示す図である。図5に示すように、リセットIC32は、VCC端子、CK端子、TC端子、RESET端子などの端子を有する。VCC端子には、図6(a)に示す入力電圧Vccが印加される。CK端子には、図6(b)に示すウォッチドッグクリア信号Cが入力される。TC端子には、0.22[μF]のコンデンサが充電されることによって、図6(c)に示すウォッチドッグタイマ信号Tが入力される。RESET端子は、システムリセット信号RをメインCPU31に出力する。
リセットIC32のVCC端子には、定常状態では、電源基板70の電源回路から5[V]の入力電圧Vccが供給される。このVCC端子に印加される入力電圧Vccが4.3[V]を上回った場合(図6(a)参照)には、図6(c)に示すように、リセットIC32のTC端子に接続されたコンデンサに充電が開始される。さらに、TC端子に入力されるウォッチドッグタイマ信号Tは、コンデンサへの充電が開始された後、遅延時間を経過したときに所定電圧に達する(図6(c)参照)。この遅延時間は、TC端子に接続されたコンデンサの容量によって定めることができる。たとえば、TC端子に接続されたコンデンサの容量0.22[μF]を1000倍した値を、遅延時間220[msec]とすることができる。
ウォッチドッグタイマ信号Tがこの所定電圧に達すると、図6(d)に示すように、リセットIC32は、そのRESET端子から出力するシステムリセット信号Rの電圧レベルをローレベル(L)からハイレベル(H)にする。システムリセット信号RはメインCPU31のSRST端子に入力される。メインCPU31のSRST端子に入力されたシステムリセット信号Rの電圧レベルがローレベル(L)からハイレベル(H)になったことによって、メインCPU31のシステムリセット状態が解除される。メインCPU31のシステムリセット状態が解除されると、メインCPU31はメインROM33に記憶されたプログラムに従って後述するメイン処理(図7〜図11参照)の制御を開始する。
メインCPU31は、その制御を開始すると、後述するシステムタイマ割込処理(図13参照)を2[msec]毎に実行する。メインCPU31は、このシステムタイマ割込処理によって、図6(c)に示すように、リセットIC32のCK端子にウォッチドッグクリア信号Cを出力する。このウォッチドッグクリア信号Cは、システムタイマ割込処理によって2[msec]毎に電圧レベルがハイレベル(H)とローレベル(L)とに交互に変化する信号である。ウォッチドッグタイマ信号Tは、リセットIC32のCK端子に入力されるウォッチドッグクリア信号Cの立ち下がり変化時(ハイレベル(H)→ローレベル(L))にリセットされて、電圧レベルがゼロに低下する(図6(c)参照)。その後、ウォッチドッグタイマ信号Tの電圧レベルは、TC端子に接続されているコンデンサへの充電に伴って再度上昇する。さらにその後に、リセットIC32のCK端子に入力されるウォッチドッグクリア信号Cによって、ウォッチドッグタイマ信号Tは再びリセットされる。その後、ウォッチドッグタイマ信号Tの電圧レベルがゼロに低下した後、再度コンデンサの充電に伴って電圧レベルを再度上昇させる。
したがって、ウォッチドッグクリア信号Cが、システムタイマ割込処理によってメインCPU31から出力されて、リセットIC32のCK端子に入力されている限り、ウォッチドッグタイマ信号Tは所定電圧に達しない。この場合に、システムリセット信号が、リセットIC32のRESET端子から出力されて、メインCPU31のSRST端子に入力されることはない。
これに対して、メインCPU31の制御が何らかの原因によって暴走したときには、ウォッチドッグクリア信号Cは、メインCPU31から出力されず、リセットIC32のCK端子に入力されなくなる。このような場合には、図6(c)に示すように、ウォッチドッグタイマ信号Tは、所定電圧に達し、これによって、図6(d)に示すように、システムリセット信号Rの電圧レベルはハイレベル(H)からローレベル(L)に変化する。
システムリセット信号Rは、メインCPU31のSRST端子に入力される。システムリセット信号Rの電圧レベルの変化(ハイレベル(H)→ローレベル(L))によって、メインCPU31に所定時間システムリセットがかけられる。システムリセットにより、メインCPU31は処理をプログラムの先頭に戻し、メイン処理を再開する。すなわち、メインCPU31が暴走したときには、自動的にシステムリセットがかかってメインCPU31の処理が再開される。
図2に示すように、メインCPU31には、I/Oポート(入出力ポート)35と、コマンド出力ポート36とが接続されている。I/Oポート35は、後述する各種スイッチやソレノイド等の周辺装置とメインCPU31との間で信号を授受するためのものである。また、コマンド出力ポート36は、副制御基板40の副制御回路や、発射制御基板60の発射制御回路や、払出制御基板61の払出制御回路に、制御信号や遊技情報を含んだコマンドを出力するためのものである。I/Oポート35及びコマンド出力ポート36を介して、メインCPU31から送出される制御信号や遊技情報が、副制御基板40、発射制御基板60及び払出制御基板61等の各制御基板や周辺装置に送信される。
<各種のスイッチ>
主制御基板30には、通過ゲートスイッチ14sや始動入賞口スイッチ15sが接続されている。通過ゲートスイッチ14sは、前述した通過ゲート14の内側に設けられ、パチンコ球が通過ゲート14を通過するのを検出する。始動入賞口スイッチ15sは、普通電動役物15に入賞したパチンコ球を検出する。
主制御基板30には、カウントスイッチ16sや一般入賞口スイッチ17sが接続されている。カウントスイッチ16sは、大入賞口16に入賞したパチンコ球を検出する。一般入賞口スイッチ17sは、一般入賞口17へ入賞したパチンコ球を検出する。
主制御基板30には、始動入賞口ソレノイド15vや大入賞口ソレノイド16vなどが接続されている。始動入賞口ソレノイド15vは、アクチュエータとして、普通電動役物15の球受入口を拡張する。大入賞口ソレノイド16vは、大入賞口16の扉を開閉する。
主制御基板30には、バックアップクリアスイッチ基板が接続されている。バックアップクリアスイッチ基板には、バックアップクリアスイッチ19が実装されている。バックアップクリアスイッチ19は、バックアップクリア信号を出力する。バックアップクリア信号は、主制御基板30の主制御回路を構成するメインCPU31に備えられたメインRAM34や、払出制御基板61の払出制御回路を構成するRAM(図示せず)のバックアップ内容のクリアを指令するための信号である。
前述した各スイッチ14s、16s及び17s、並びに各アクチュエータ15v及び16vは、盤面中継基板80を介して主制御基板30に接続されている。各スイッチ14s、15s、16s及び17sがパチンコ球を検出すると、その検出信号は主制御基板30のメインCPU31に入力される。メインCPU31は、入力された検出信号に応じて、前述した各アクチュエータ15v及び16vを駆動制御する。
<副制御基板40>
副制御基板40は、特別図柄表示装置10(以下、(LCD10と称する。)に接続されている。副制御基板40は、LCD10における画像表示を行う画像表示制御を行う。また、副制御基板40は、ランプ・LED48及びスピーカ49に接続されている。副制御基板40は、遊技状態に応じて、ランプ・LED48の発光を制御する電飾制御と、スピーカ49から効果音を放音させる音制御とを行う。ランプ・LED48は、枠上部飾りランプ6と、普通図柄表示装置11と、特別図柄始動記憶個数表示部12と、普通図柄始動記憶個数表示部13等を有する。
副制御基板40には、サブCPU41、プログラムROM42及びワークRAM43が実装されている。サブCPU41は、中継基板37及びコマンド入力ポート47を介して、主制御基板30から送信されたコマンドを受信する。サブCPU41は、受信したコマンドを解釈し、画像制御回路44、ランプ制御回路45及び音声制御回路46へ制御指令を発する。プログラムROM42には、制御プログラムが記憶格納されている。この制御プログラムは、LCD10やランプ・LED48やスピーカ49の動作をサブCPU41が処理制御するためのプログラムである。ワークRAM43は、サブCPU41が、プログラムROM42に記憶されている制御プログラムに従って処理制御するときにおける一時的な記憶手段となる。
<画像制御回路44>
画像制御回路44は、サブCPU41からの制御指令に応じてLCD10に表示するための画像データを生成する。メインCPU31は、普通電動役物15へパチンコ球が入賞して始動入賞が発生すると大当り判定を行い、その大当り判定の結果を副制御回路に送信する。副制御回路は、この大当り判定の結果に対応する態様でLCD10に特別図柄を順次停止表示させる。副制御回路は、左図柄と右図柄とが同一図柄で停止表示されてリーチ状態になったときには、特別図柄及び演出画像を用いてLCD10でリーチ演出を行う。ランプ制御回路45は、サブCPU41からの駆動信号により、パチンコ機1の遊技状態に応じてランプ・LED48の発光を制御する。音声制御回路46は、サブCPU41からの駆動信号により、スピーカ49を制御する。
プログラムROM42は、複数の演出態様をパターン化して記憶した演出記憶手段を構成する。主制御基板30におけるメインCPU31、メインROM33及びメインRAM34と、副制御基板40におけるサブCPU41、プログラムROM42及びワークRAM43とは、演出決定手段を構成する。演出決定手段は、演出記憶手段に記憶された演出態様の中から、実行させる演出に応じた演出態様を決定する。また、LCD10及び画像制御回路44と、ランプ・LED48及びランプ制御回路45と、スピーカ49及び音声制御回路46とは、演出手段を構成する。演出手段は、演出決定手段によって決定された演出態様に対応した演出を実行する。
<発射制御基板60>
発射制御基板60には、発射装置64が接続されている。発射装置64は、発射ハンドル5の操作に応じて駆動される。発射制御基板60によって発射制御回路が構成される。発射制御回路は、遊技者による発射ハンドル5の操作に応じて発射装置64を駆動制御し、パチンコ球を遊技盤2へ発射させる。
<払出制御基板61>
払出制御基板61には、払出制御に関わる遊技処理を制御する制御手段としてCPU68が実装されている。払出制御基板61には、賞球及び貸球を払い出す払出装置63が接続されている。払出制御基板61で構成された払出制御回路は、各種入賞に応じて枠中継基板62を介して主制御基板30から出力される払出コマンドを受信する。払出制御回路は、受信払出コマンドに応じて、払出装置63を駆動制御して賞球を払い出させる。
払出制御基板61には、パチンコ球の球貸しを要求するカードユニット65が接続されている。カードユニット65には、前述した球貸しボタン7a及び返却ボタン7bを備えた球貸し操作パネル66が接続されている。カードユニット65は、球貸しボタン7a及び返却ボタン7bの操作に応じて払出制御基板61の払出制御回路との間で通信を行う。払出制御回路は、カードユニット65から出力される信号に応じて払出装置63を駆動制御して、貸球を払い出させる。
<<メイン処理>>
図7〜図11は、メイン処理を示すフローチャートである。このメイン処理は、主制御基板30のメインCPU31によって実行される。
最初に、メインCPU31は、ウォッチドッグタイマの初期設定をする(ステップS711)
次に、メインCPU31は、入出力ポートの初期設定をする(ステップS713)。
次に、メインCPU31は、電断検知状態であるか否かを判断する(ステップS715)。電断検知状態であるか否かの判断は、入力ポートの内容が、電断検知信号ビット(ビット0)が1になるまで待機し、電断検知信号ビット(ビット0)が1になったときの入力ポートの内容を「初期入力ポート値」とする。この入力ポートの内容は、電源監視IC71から出力される電断検知信号Dの電圧レベルによって定まる。メインCPU31は、ステップS715の判断処理で電断検知状態であると判別したときには(YES)、ステップS715の処理を繰り返す。
一方、メインCPU31は、ステップS715の判断処理で電断検知状態でないと判別したときには(NO)、サブ制御受信受付ウエイト処理を実行する(ステップS717)。このサブ制御受信受付ウエイト処理は、ウエイト時間、たとえば500[msec]をメインRAM34にセットし、ウエイト時間が経過するまで待機する処理である。ウエイト時間は、副制御基板40における初期設定処理が終了するまで、メインCPU31の処理を待機させるためのものである。
次に、メインCPU31は、RWM(リードライトメモリ)への書き込みを許可する(ステップS719)。なお、本明細書において、RWM(リードライトメモリ)は、前述したメインRAM34等の読み書き可能なメモリを意味する。このRWM(リードライトメモリ)には、後述する遊技情報データ、すなわち、ステップS1111〜S1127の各々の処理によって取得された各種のデータ(「遊技を進めるために必要な遊技情報」)が記憶される。また、RWM(リードライトメモリ)は、電源が供給されていない間でも、コンデンサからのバックアップ電源によって記憶内容を保持することができる。
次に、メインCPU31は、スタックポインタに初期設定アドレス、たとえば8000Hをセットする(ステップS721)。
次に、メインCPU31は、バックアップスイッチがオンであるか否かを判断する(ステップS723)。前述したように、バックアップクリアスイッチ19からバックアップクリア信号が出力される。ステップS723は、バックアップクリア信号がバックアップクリアスイッチ19から出力されたか否かを判断する処理である。
メインCPU31は、ステップS723の判断処理でバックアップスイッチがオンでないと判別したときには(NO)、電断検知フラグがセットされているか否かを判断する(ステップS725)。電断検知フラグは、電断が発生し、後述する電断処理(図15参照)を実行したことを示すフラグである。電断検知フラグは、図15のステップS1513の処理でセットされる。
メインCPU31は、ステップS725の判断処理で電断検知フラグがセットされていると判別したときには(YES)、作業領域の損傷をチェックし(ステップS727)、作業領域が損傷しているか否かを判断する(ステップS729)。作業領域の損傷は、電断によって供給される電圧が低下して、作業領域の状態が不安定になり作業領域の内容が変質することをいう。
メインCPU31は、作業領域が損傷していないと判別したときには(NO)、図8に示すステップS811に処理を移して電断復旧処理を実行する。また、メインCPU31は、ステップS723の判断処理でバックアップスイッチがオンであると判別したとき(YES)、ステップS725の判断処理で電断検知フラグがセットされていないと判別したとき(NO)、又はステップS729の判断処理で作業領域が損傷していると判別したときには(YES)、図9に示すステップS911に処理を移して電源投入時処理を実行する。図9に示すステップS911〜S921の処理によって、遊技機に電源が投入されたときの処理が実行される。この処理は、バックアップスイッチが押下されている状態である場合(ステップS723で「YES」と判断した場合)には、主として、RWMを初期化するときの処理が行われる。
<電源断復旧処理>
メインCPU31は、図7のステップS729の判断処理で、作業領域が損傷していないと判別したときには(NO)、適切なスタックポインタに補正する(ステップS811)。この処理は、後述する電断処理(図15)で、たとえば、スタックポインタをメインRAM34に退避させたような場合には、そのスタックポインタを復帰する処理である。
次に、メインCPU31は、作業領域の初期設定をする(ステップS813)。このステップS813の処理によって、電源復帰時における作業領域の初期設定が行われる。
次に、メインCPU31は、通信データ格納領域をクリアする(ステップS815)。たとえば、ステップS815の処理は、通信データ格納領域のアドレスから順に通信データ格納領域長分(たとえば、70バイト)に「0」を格納する処理である。この処理により、通信データ格納領域をクリアする処理、すなわち、リングバッファをクリアする処理が行われる。この通信データ格納領域やリングバッファが、「送信用記憶手段」に相当する。通信データ格納領域やリングバッファに送信コマンドが通信データとして記憶される。
次に、メインCPU31は、高確率遊技状態を報知する設定をする(ステップS817)。ステップS817の処理によって、特別図柄の遊技状態確認処理が行われる。ステップS817の処理では、低確率状態のときには何も行われず、高確率状態のときには確率値を表す報知フラグがセットされる。
次に、メインCPU31は、電源復帰時の内部状態のフラグを設定する(ステップS819)。このステップS819の処理では、扉・枠開閉状態領域、不正入賞情報管理フラグ領域の演算処理が行われ、セキュリティ情報生成処理、電源復帰時内部状態フラグ格納処理が行われる。
次に、メインCPU31は、電源復帰時の遊技状態のフラグを設定する(ステップS821)。このステップS821の処理は、遊技状態パラメータ領域、特別図柄当り情報マスタ値の論理積をとり、演算結果と特別図柄遊技状態フラグ領域の内容との論理和をとり、演算結果を電断復帰時遊技状態フラグ領域に格納する。
次に、メインCPU31は、電源復帰コマンドを副制御回路(副制御基板40)に送信する(ステップS823)。このステップS823の処理は、電断時に所得した最新情報をパラメータとして付加して副制御回路に送信する。
具体的には、このステップS823の処理は、後述するステップS1111〜S1127の各々の処理でRWM(メインRAM34)に記憶させた各種のデータを読み出し、読み出した各種のデータを結合してパラメータ情報とし、このパラメータ情報をコマンドに付加して副制御回路に送信する。このRWM(メインRAM34)に記憶させた各種のデータが、「遊技を進めるために必要な遊技情報」に相当する。
このように、電源が復旧したときには、ステップS815の処理によって、まず、通信データ格納領域をクリアする処理を実行する。このように処理することで、電断によって不適切なコマンドが生じた場合であっても、たとえば、未送信のコマンドが存在する場合であっても、電源が復旧したときに、未送信のコマンドを副制御回路(副制御基板40)に送信する必要がなく、処理が煩雑になることを防止することができる。
また、電源が復旧したときに、ステップS823の処理を実行することによって、電断時に所得した各種のデータ(最新情報)を副制御回路に送信する。したがって、副制御回路は、電断時における各種のデータの全てを受け取ることにより、副制御回路を電断時(電断前)の状態に的確に戻すことができる。
次に、メインCPU31は、メインCPU31の動作を設定し(ステップS825)、メイン処理を終了する。このステップS825の処理は、メインCPU31への割り込みを禁止し、CTC動作設定処理及びシリアル回路初期化処理を行い、メインCPU31の周辺デバイスの初期設定を行う処理である。ここで、CTC動作設定処理は、所定の時間毎、たとえば2[msec]毎で割り込みを発生させる内蔵クロックの動作を設定する処理である。また、シリアル回路初期化処理は、副制御基板40等へのシリアル通信を正常に行えるようにするために、シリアル・イン・アウトの動作設定をする処理である。
<電源投入時処理>
メインCPU31は、前述した図7のステップS723の判断処理でバックアップスイッチがオンであると判別したとき(YES)、ステップS725の判断処理で電断検知フラグがセットされていないと判別したとき(NO)、又はステップS729の判断処理で作業領域が損傷していると判別したときには(YES)、特別図柄当り判定関連の初期値のために乱数を取得する(ステップS911)。
次に、メインCPU31は、作業領域の全体をクリアする(ステップS913)。たとえば、アドレス7E00Hから7FFFHまでの領域に「0」を書き込むときに、その領域の0チェックを行い、「0」以外の領域がある場合には、7E00Hから同様の処理を繰り返す。
ステップS913の処理は、具体的には、以下の処理からなる。まず、メインCPU31は、メインRAM34に記憶されているスタックポインタを初期化する。次いで、メインCPU31は、メインRAM34の作業領域の先頭アドレス、たとえば7E00Hをセットする。その後、メインCPU31は、クリアデータをセットし、セットされた先頭アドレスのデータがクリアされたか否かを判断する。セットされた先頭アドレスのデータがクリアされていなかった場合には、メインCPU31は、再度、前述したスタックポインタの初期化と、先頭アドレスのセットと、クリアデータのセットとの処理を繰り返す。
一方、セットされた先頭アドレスのデータがクリアされていた場合には、メインCPU31は、クリアした先頭アドレスの次のアドレスをセットする。メインCPU31は、このセットされたアドレスが、メインRAM34の作業領域の最終アドレス、たとえば、7FFFHであるか否かを判断する。メインCPU31は、最終アドレスでなかった場合には、再度、前述したクリアデータのセットと、クリアされたか否かの判断と、次のアドレスのセットとの処理を繰り返し、メインRAM34の作業領域の全てをクリアする。
次に、メインCPU31は、ステップS911の処理で取得した乱数を用いて、特別図柄当り判定関連の初期値を設定する(ステップS915)。
次に、メインCPU31は、RWM(リードライトメモリ)の初期化時の作業領域を初期設定する(ステップS917)。このステップS917の処理は、入力レジスタのテーブルアドレスとして作業領域初期化データのアドレスを設定して、データ格納処理を実行する処理である。
次に、メインCPU31は、RWM(リードライトメモリ)の初期化時のコマンドを副制御基板40に送信する(ステップS919)。このステップS919の処理によって送信されたコマンドにより、副制御基板40は初期化される。
次に、メインCPU31は、メインCPU31の周辺デバイスの初期設定をする(ステップS921)。このステップS921の処理は、割り込みを禁止し、CTC動作設定処理及びシリアル回路初期化処理が行われ、メインCPU31の周辺デバイスの初期設定が行われる。ここでも、CTC動作設定処理は、所定の時間毎、たとえば2[msec]毎で割り込みを発生させる内蔵クロックの動作を設定する処理である。また、シリアル回路初期化処理は、副制御基板40等へのシリアル通信を正常に行えるようにするために、シリアル・イン・アウトの動作設定をする処理である。
<<メイン遊技処理>>
以下のステップS1011〜S1127の処理は、パチンコ機1に電源が定常的に供給されている間においては、繰り返し実行されるメイン遊技処理である。このメイン遊技処理は、割り込みを禁止し、NMIフラグ領域がロードされて、NMIフラグ領域の値が[A5H]である場合には電断処理(図10のステップS1017)を実行し、NMIフラグ領域の値が[A5H]でない場合には電断処理を行わず、通常の処理を実行する。
なお、電断処理が実行されるのは、メイン遊技処理において、このときのみであり、他の処理が実行されている途中で、割込処理により電断処理が実行されることはない。また、NMI発生情報の確認を行うまで、電断発生前に行っていたメイン処理を行うので、NMIフラグを検知してからもシステムタイマ経過後処理が実行中であればシステムタイマ経過後処理を一巡して電断時の最新の遊技情報が一通り取得されてから電断処理に入ることになる。
ステップS921の処理を実行した後、メインCPU31は割り込みを禁止する(ステップS1011)。このステップS1011の処理は、割込処理の実行をマスクするように割込禁止処理を行うものである。
次に、メインCPU31は、NMIフラグ領域に記憶されているデータをロードし(ステップS1013)、NMIフラグがセットされているか否かを判断する(ステップS1015)。NMIフラグがセットされている場合には、NMIフラグ領域に[A5H]が記憶されており、NMIフラグがセットされていない場合には、NMIフラグ領域に[A5H]以外の値が記憶されている。
次に、メインCPU31は、NMIフラグがセットされていると判別したときには(YES)、図15に示す電断処理を呼び出して実行する(ステップS1017)。
メインCPU31は、ステップS1015の判断処理でNMIフラグがセットされていないと判別したとき(NO)、又はステップS1017の処理を実行したときには、各種の初期値用の乱数を更新する(ステップS1019)。
次に、メインCPU31は割り込みを許可する(ステップS1021)。これにより、割り込みの禁止状態が解除されて各種の割り込みが許可される。
次に、メインCPU31は、演出用の乱数を更新する(ステップS1023)。
次に、メインCPU31は、システムタイマを監視する(ステップS1025)。このステップS1025の処理は、システムタイマのタイマ値が所定値に至ったか否かを判断して、所定の時間経過したか否かを判断するものである。タイマ値が所定値に至っていない場合には、所定の時間経過していないとして、前述したステップS1011に処理を戻す。一方、タイマ値が所定値に至った場合には、所定の時間経過したとして、以下のシステムタイマ経過後処理を実行する。
なお、システムタイマのタイマ値が所定値に至ったときには、システムタイマ監視タイマがリセットされる。また、システムタイマのタイマ値は、図13のステップS1319の処理によって更新される。
前述したように、所定の時間経過していない場合には、ステップS1011に処理を戻す。このようにしたことにより、NMIフラグ(電源低下情報)がセットされているか否かを繰り返し判断できる。したがって、供給電源の電圧が所定電圧より低下したか否かを的確に判断することができる。
また、所定の時間経過した場合には、以下のシステムタイマ経過後処理を実行する。したがって、NMIフラグ(電源低下情報)がセットされているときでも、所定の時間経過した場合には、以下のステップS1111〜S1127の処理を実行する。後述するように、ステップS1111〜S1127の各々の処理では、これらの処理によって取得した各種のデータをRWMに記憶する。このように、各種のデータを取得する処理を優先的に実行して、電源復帰に必要な情報を的確に取得することができる。
<システムタイマ経過後処理>
以下のステップS1111〜S1127の処理は、メイン遊技処理におけるシステムタイマ経過後処理として順次実行される。
次に、メインCPU31は、タイマ値を更新する(ステップS1111)。この処理によって、初期設定処理や2バイトタイマ値更新処理が実行される。具体的には、メインCPU31により、主制御基板30の主制御回路と副制御基板40の副制御回路との同期をとるための待ち時間タイマや、大入賞口開放時間タイマ等、各種のタイマの更新処理が実行される。
次に、メインCPU31は、特別図柄を制御する(特図制御処理)(ステップS1113)。このステップS1113の処理は、特別図柄待ち時間チェック処理を行い、特別図柄制御状態フラグ領域の内容に応じて、特別図柄記憶チェック処理、特別図柄変動時間管理処理、特別図柄表示時間管理処理、大入賞口16の開放前処理、大入賞口16の開放中処理、特別図柄当り終了インターバル処理を行う。
次に、メインCPU31は、普通図柄を制御する(普図制御処理)(ステップS1115)。このステップS1115の処理は、普通図柄待ち時間チェック処理を行い、普通図柄制御状態フラグ領域の内容に応じて、普通図柄記憶チェック処理、普通図柄変動時間管理処理、普通図柄表示時間管理処理、大入賞口16の開放前処理、大入賞口16の開放中処理、普通図柄当り終了インターバル処理を行う。
次に、メインCPU31は、図柄表示装置を制御する(ステップS1117)。このステップS1117の処理は、特別図柄表示装置10や普通図柄表示装置11を制御するものである。普通図柄表示装置制御処理や特別図柄表示装置制御処理を行う。また、パチンコ機1の遊技盤2に発射位置報知LEDが設けられている場合には、このステップS1117の処理で発射位置報知LED表示制御処理も行う。発射位置報知LEDは、遊技盤2におけるパチンコ球の最適発射位置に関する情報を遊技者に報知するものである。
次に、メインCPU31は、遊技情報データを生成する(ステップS1119)。不正入賞監視管理タイマ更新処理、始動口信号処理、外部端子板関連信号の生成処理、電動役物作動中信号の生成処理、試射試験信号の生成処理が行われる。このステップS1119で生成される遊技情報は、主に、ホールコンピュータなどのパチンコ機1に接続された管理装置に送信される。
次に、メインCPU31は、図柄保留個数データを生成する(ステップS1121)。
普通図柄保留個数データ生成処理、特別図柄保留個数データ生成処理が行われる。また、このステップS1121で生成する遊技情報データも「遊技を進めるために必要な遊技情報」に相当する。
次に、メインCPU31は、ポート出力処理を実行し(ステップS1123)、遊技球の払出処理を実行する(ステップS1125)。このステップS1125の処理は、賞球カウンタの判定処理を行い、払出要求コマンドの送出処理を行う。
次に、メインCPU31は、不正検知関連コマンドの処理を実行する(ステップS1127)。このステップS1127の処理は、不正検知関連設定処理、不正検知判定処理を行い、不正検知の場合には、不正検知関連コマンド送信予約処理を行う。
前述したステップS1111〜S1127の各々の処理では、これらの処理によって取得した各種のデータを、ステップS1111〜S1127の各々の処理に伴ってRWMに記憶する処理も実行する。たとえば、ステップS1113の特図制御処理、ステップS1115の普図制御処理及びステップS1125の払出処理で決定される停止図柄情報、変動時間情報、大入賞口入賞数情報及び賞球情報などの情報が、これらの処理に伴ってRWMに記憶される。電源が復帰したときには、これらの情報をRWMから読み出すことで、電断が発生したときの遊技状態に戻すことができる。また、前述した各種の情報のほか、ステップS1121で生成した図柄保留個数データもRWMに記憶させるようにしてもよい。このように、ステップS1111〜S1127の各々の処理によって各種のデータをRWMに記憶させた後、図15の処理によって電断処理が行われる。停止図柄情報、変動時間情報、大入賞口入賞数情報、賞球情報及び図柄保留個数データなどの各種のデータが、「遊技を進めるために必要な遊技情報」に相当する。
なお、前述したように、電源が供給されていない間でも、電源基板70に搭載されたコンデンサからのバックアップ電源によって、RWM(メインRAM34)の記憶内容を保持することができる。このように、ステップS1111〜S1127の各々の処理で、各種のデータをRWM(メインRAM34)に記憶させるので、メイン遊技処理が繰り返し実行されるたびに、最新の各種のデータをRWM(メインRAM34)に記憶させることができ、各種のデータを常に更新しつつ記憶させることができる。
次に、パチンコ機1の電源が復帰したときには、RWMに記憶した各種のデータを読み出して、コマンドのパラメータとして副制御基板40の副制御回路に送信する(ステップS823参照)。
<<演出制御コマンド割込処理>>
図12は、演出制御コマンド割込処理を示すフローチャートである。この割込処理は、マスカブル割込処理であり、実行中のプログラムが割込受け付け許可を指定したときだけ受け付けられる処理である。
最初に、メインCPU31は、システムタイマ割込が発生したときのプログラムカウンタの値を示すAFレジスタの値をメインRAM34のスタックエリアに退避する(ステップS1211)。
次に、メインCPU31は、NMIフラグがセットされているか否かを判断する(ステップS1213)。NMIフラグは、図14に示すフローチャートのステップS1413の処理でセットされるフラグである。後述するように、NMIフラグは、電源回路が出力する供給電源の電圧が低下したか否かを示すフラグである。メインCPU31は、NMIフラグがセットされていると判別したとき(YES)、すなわち、供給電源の電圧が低下したときには、後述するステップS1225に処理を移す。
一方、メインCPU31は、NMIフラグがセットされていないと判別したとき(NO)、すなわち、供給電源の電圧が低下していないときには、メインCPU31は、割り込みが許可された時点のBCレジスタとDEレジスタとHLレジスタとの各々の値をメインRAM34のスタックエリアに退避する(ステップS1215)。BCレジスタ及びDEレジスタは汎用レジスタであり、HLレジスタは間接参照用レジスタである。
次に、メインCPU31は、割り込みタイミングの調整をする(ステップS1217)。
次に、メインCPU31は、ウォッチドッグタイマのクリアする設定をする(ステップS1219)。この処理によって、リセットIC32のCK端子にウォッチドッグクリア信号Cが出力される。
次に、メインCPU31は、送信準備の確認をする(ステップS1221)。送信準備の確認の処理によって、全ブロック送信済チェック処理と送信バッファ内容チェック処理とを行う。その結果、全ブロック送信済チェック処理の結果が「送信待ち」であり、送信バッファ内容チェック処理の結果が「空き」である場合には、インデックス処理と、データ出力処理と、通信済み確認処理とが行われる。
次に、メインCPU31は、ステップS1215の処理で退避させたBCレジスタとDEレジスタとHLレジスタとの各々の値をメインRAM34のスタックエリアから読み出し、BCレジスタとDEレジスタとHLレジスタとを復帰させる(ステップS1223)。
次に、メインCPU31は、ステップS1211の処理で退避させたAFレジスタの値をメインRAM34のスタックエリアから読み出し、AFレジスタを復帰させる(ステップS1225)。
次に、メインCPU31は、割り込みを許可し(ステップS1227)、演出制御コマンド割込処理を終了する。これにより、割り込みの禁止状態が解除されて各種の割り込みが許可される。
<<システムタイマ割込処理>>
図13は、システムタイマ割込処理を示すフローチャートである。この割込処理は、マスカブル割込処理であり、実行中のプログラムが割込受け付け許可を指定したときだけ受け付けられる処理である。
最初に、メインCPU31は、システムタイマ割り込みが発生したときのプログラムカウンタの値を示すAFレジスタの値をメインRAM34のスタックエリアに退避する(ステップS1311)。
次に、メインCPU31は、NMIフラグがセットされているか否かを判断する(ステップS1313)。NMIフラグは、図14に示すフローチャートのステップS1413の処理でセットされるフラグである。後述するように、NMIフラグは、電源回路が出力する供給電源の電圧が低下したか否かを示すフラグである。メインCPU31は、NMIフラグがセットされていると判別したとき(YES)、すなわち、供給電源の電圧が低下したときには、後述するステップS1335に処理を移す。
一方、メインCPU31は、NMIフラグがセットされていないと判別したとき(NO)、すなわち、供給電源の電圧が低下していないときには、以下の通常の処理を実行する。
まず、メインCPU31は、割り込みを許可する(ステップS1315)。これにより、割り込みの禁止状態が解除されて各種の割り込みが許可される。
次に、メインCPU31は、割り込みが許可された時点のBCレジスタとDEレジスタとHLレジスタとの各々の値をメインRAM34のスタックエリアに退避させる(ステップS1317)。BCレジスタ及びDEレジスタは汎用レジスタであり、HLレジスタは間接参照用レジスタである。
次に、メインCPU31は、システムタイマ監視タイマの値を更新する(ステップS1319)。たとえば、システムタイマ監視タイマのタイマ値に1を加える。
次に、メインCPU31は、ウォッチドッグクリア信号Cの電圧レベルを反転してリセットIC32のCK端子に出力する(ステップS1321)。このステップS1321の処理により、図6(c)に示すように、ウォッチドッグタイマ信号Tは、所定の電圧に達する前にリセットされる。
次に、メインCPU31は、乱数を更新する(ステップS1323)。この乱数の更新により、大当り判定等に用いられる大当り判定用乱数の値や、前述した初期値乱数の値が更新される。大当り判定用乱数値は、前述した特別図柄制御処理(図11のステップS1113)において大当り遊技を行うか否かを決定する際に、メインCPU31によって参照される。
次に、メインCPU31は、入力ポートを読み込む(ステップS1325)。
次に、メインCPU31は、スイッチ入力を検出する(ステップS1327)。このスイッチ入力を検出する処理では、前述した各スイッチ14s〜17sから出力される検出信号に基づいて、通過ゲート14をパチンコ球が通過したか否かや、普通電動役物15や大入賞口16、一般入賞口17などにパチンコ球が入賞したか否かを検出する処理が行われる。
次に、メインCPU31は、ダイナミックLEDを点灯する(ステップS1329)。このダイナミックLEDは、主制御基板30によって制御されて、点灯又は消灯されるLED(発光ダイオード)である。
次に、メインCPU31は、入賞関連コマンドを実行する(ステップS1331)。この入賞関連コマンドによって、大入賞口16や一般入賞口17等の制御が行われる。
次に、メインCPU31は、ステップS1317の処理で退避させたBCレジスタとDEレジスタとHLレジスタとの値をメインRAM34のスタックエリアから読み出し、BCレジスタとDEレジスタとHLレジスタとを復帰させる(ステップS1333)。
次に、メインCPU31は、ステップS1311の処理で退避させたAFレジスタの値をメインRAM34のスタックエリアから読み出し、AFレジスタを復帰させ(ステップS1335)、システムタイマ割込処理を終了する。
<<ノンマスカブル割込処理>>
図14は、ノンマスカブル割込処理を示すフローチャートである。このノンマスカブル割込処理は、メインCPU31のNMI端子に入力される電断検知信号Dの電圧レベルがハイレベル(H)からローレベル(L)に立下がったときに、ノンマスカブル割込処理として実行される。電断検知信号Dは、電源監視IC71のRESET端子から出力されて、メインCPU31のNMI端子に入力される。この処理は、ノンマスカブル割込処理として実行されるので、マスクすることができない割り込みであり、いかなるタイミングでも受け付けることができる割り込みである。このようにすることで、供給電源の電圧が低下したときに直ちに処理を実行することができる。
最初に、メインCPU31は、ノンマスカブル割込が発生したときのプログラムカウンタの値を示すAFレジスタの値をメインRAM34のスタックエリアに退避する(ステップS1411)。
次に、メインCPU31は、NMIフラグをセットする(ステップS1413)。このNMIフラグは、電断が発生して、このノンマスカブル割込処理を実行したことを示すフラグである。すなわち、電源回路が出力する供給電源の電圧が低下して、電源監視IC71から出力された電断検知信号Dが(H)から(L)へ立下がったことを示すフラグである。このNMIフラグが「電源低下情報」に相当する。
NMIフラグ領域に[A5H]を記憶させることによって、NMIフラグがセットされ、NMIフラグ領域に[A5H]以外の値を記憶させることによって、NMIフラグのセットが解除される。
次いで、メインCPU31は、ステップS1411によって、メインRAM34のスタックエリアに退避させておいたAFレジスタの値をAFレジスタに復帰させ(ステップS1415)、本サブルーチンを終了する。AFレジスタを復帰させることで、ノンマスカブル割込が発生する直前の状態に戻すことができる。
<<電断処理>>
図15は、電断処理のサブルーチンを示すフローチャートである。この電断処理は、図10のステップS1017の処理で呼び出されて実行される。
最初に、メインCPU31は、作業領域損傷チェック用データ生成処理が実行されて作業領域損傷チェック値を算出する(ステップS1511)。
次に、メインCPU31は電断検知フラグを設定する(ステップS1513)。電断検知フラグは、電断が発生して、この電断処理を実行したことを示すフラグである。電断検知フラグは、メイン処理のステップS725で参照される。
次いで、メインCPU31は、RWMへの書き込みを禁止し(ステップS1515)、無限ループを実行する。
前述したように、本実施の形態におけるパチンコ機1では、図10のステップS1011の電断処理を実行する前に、図11のステップS1111〜S1127の各々の処理によって取得した各種のデータを、これらのステップS1111〜S1127の各々の処理に伴ってRWM(メインRAM34)に記憶させる。
このようにすることで、電断処理を実行するよりも前に、各種のデータをRWM(メインRAM34)に記憶させるので、電源復帰時に必要となる各種のデータを的確に記憶させることができる。電源が供給されていない間は、電源基板70に搭載されたコンデンサからのバックアップ電源によって、RWM(メインRAM34)に記憶させた各種のデータを保持される。
<<<パチンコ機1の概要>>>
本実施の形態におけるパチンコ機1は、
遊技の進行に関する制御をする遊技制御手段(主制御基板30や主制御回路)と、
前記遊技制御手段に供給される供給電源の電圧を監視し、供給電源の電圧が所定電圧より低下したときに電断が発生したとして低下検出信号を発する電源監視手段(電源監視IC71)と、
送信コマンドを記憶する送信用記憶手段(通信データ格納領域やリングバッファ)を備え、前記送信用記憶手段から送信コマンドを読み出し、演出に関する制御をする副制御手段(副制御基板40や副制御回路)に前記送信コマンドを送信するコマンド送信手段(メインCPU、コマンド出力ポート36)と、
前記遊技制御手段への供給電源の電圧が前記所定電圧より低下した後もデータを保持できるデータ記憶手段(メインRAM34)と、を有し、
前記遊技制御手段は、以下の処理を実行することを特徴とする。
(a) 前記電源監視手段から前記低下検出信号が発せられた場合には、供給電源の電圧が低下したことを示す電源低下情報(NMIフラグ)をノンマスカブル割込処理によってセットし、その後、ノンマスカブル割込前の元の処理に戻す電源低下情報セット処理(図14のノンマスカブル割込処理)、
(b) 遊技を進めるためのメイン制御処理(図10及び図11のメイン遊技処理)であって、
(b−1) 割り込みを禁止する割込禁止処理(図10のステップS1011)と、
(b−2) 前記割込禁止処理の後に、前記電源低下情報がセットされているか否かを判断する判断処理(図10のステップS1015)と、
(b−3) 前記判断処理の後に、割り込みを許可する割込許可処理(図10のステップS1021)と、
(b−4) 前記割込許可処理の後に、遊技の制御をする遊技制御処理及び遊技を進めるために必要な遊技情報を取得する遊技情報取得処理(図11のステップS1111〜S1127)と、を繰り返し実行可能で、
(b−5) 前記(b−4)において、前記割込許可処理の後に前記(a)の電源低下情報セット処理を実行した場合(図14のステップS1413)には、前記(a)の電源低下情報セット処理から戻って、前記遊技制御処理及び前記遊技情報取得処理(図11のステップS1111〜S1127)を実行するメイン遊技処理、
(c) 前記(b−2)の判断処理で前記電源低下情報がセットされていると判別したときに、前記(b−4)の処理で取得した遊技情報を前記データ記憶手段に記憶させる遊技情報記憶処理(図15の電断処理)、及び
(d) 前記遊技制御手段への供給電源の電圧が所定電圧より高くなったとき(図7のステップS715)に、電源が復帰したとして前記送信用記憶手段に記憶されている内容をクリアし(図8のステップS815)、前記データ記憶手段に記憶させた遊技情報を前記コマンド送信手段から送信コマンドとして送信する処理(図8のステップS823)。
この構成によれば、電断処理を実行するタイミングを調整するので、電源復帰処理に必要な情報を的確に取得した後に電断させることができる。また、電源が復帰したときには、送信用記憶手段に記憶されている内容をクリアするともに、記憶させていた遊技情報をコマンド送信手段から送信コマンドとして送信するだけであるので、電断時及び電源復帰時における処理を簡便にするとともに、処理に要する記憶容量を小さくできる。
また、本実施の形態におけるパチンコ機1は、上記構成において、
所定時間毎に発生する割り込みによって実行される割込処理(図12の演出制御コマンド送信割込処理又は図13のシステムタイマ割込処理)は、前記電源低下情報がセットされてない場合(図12のステップS1213の「NO」又は図13のステップS1313の「NO」の場合)には所定の処理(図12のステップSステップS1215〜S1223、又は図13のステップSステップS1315〜S1333)を実行し、前記電源低下情報がセットされている場合(図12のステップS1213の「YES」又は図13のステップS1313の「YES」の場合)には前記所定の処理の実行を省略することを特徴とする。
この構成によれば、電源復帰後の処理に必要になる各種の情報を取得して記憶させる処理に要する時間を短くすることができ、所定の時間内、たとえば、電圧保証時間内に必要な処理を済ませて、電断処理をすることができる。
さらに、本実施の形態におけるパチンコ機1は、上記構成において、
前記(b−4)の処理は、
(b−4−1) 前記(b−3)の割込許可処理を実行した後、タイマ値(システムタイマ値)が所定値以上になったか否かを判断する処理と(図10のステップS1025)、
(b−4−2) タイマ値が前記所定値未満であるときには、前記(b−1)の処理に戻す処理と、
(b−4−3) タイマ値が前記所定値以上であるときには、前記遊技制御処理及び前記遊技情報取得処理を実行する処理と、を含み、
前記(b−5)の処理は、前記(b−4−3)の処理でタイマ値が前記所定値以上であるときに、前記(a)の電源低下情報セット処理を実行した場合には、前記(a)の電源低下情報セット処理から戻って、前記遊技制御処理及び遊技情報取得処理を実行する(図10のステップS1025)ことを特徴とする。
この構成によれば、電源低下情報がセットされているか否かを繰り返し判断できるタイミングを形成するとともに、所定時間経過したときには、電源低下情報がセットされている場合であっても、遊技制御処理や遊技情報取得処理を実行して、電源復帰に必要な情報を的確に取得することができる。