(57)【要約】【課題】マルチプロセス処理下において電源断退避処理の遅延時間を小さくし、電源断退避処理を安定して行う。【解決手段】処理Ａ〜Ｚを同時に実行するマルチプロセス処理を行う遊技機において、電断処理でデータバックアップを行うために、前記複数の処理の実行状態を監視する処理実行状態監視部と、終了した処理について優先度を低くする優先度変更部とを含み、前記複数の処理の実行が終了した後に前記電断処理部にバックアップを開始させる電断前置処理部と、前記電源部からの予め定められた信号に基づき前記電断前置処理部に処理を開始させる電断処理起動部とを備える。【選択図】図６２
2014039766.tif 000002
【特許請求の範囲】
【請求項１】
遊技に係る処理を行うメイン基板と、前記メイン基板から予め定められたコマンドを受けて遊技に係る演出処理を行うサブ基板と、前記メイン基板及び前記サブ基板へ電力を供給する電源部とを備える遊技機において、
前記遊技に係る処理及び／又は前記演出処理に関する複数の処理を予め定められた優先度に基づき同時に実行するマルチプロセス処理を行うＣＰＵと、
前記遊技に係るデータ及び／又は前記演出に係るデータを記憶するメモリと、
電断の際に、前記メモリの少なくとも一部のデータについてバックアップを行う電断処理部と、
前記複数の処理についての前記優先度を変更する優先度変更部と、前記複数の処理の実行状態を監視する処理実行状態監視部とを含み、前記複数の処理のうちの予め定められた処理の実行が終了した後に前記電断処理部にバックアップを開始させる電断前置処理部と、
前記電源部からの予め定められた信号に基づき前記電断前置処理部に処理を開始させる電断処理起動部と、を備え、
前記電断前置処理部の前記処理実行状態監視部は、
前記電断処理起動部からの前記信号に基づき前記複数の処理の実行状態を調べ、
前記複数の処理を、前記バックアップの対象となっているデータにアクセスしている処理（以下「第１処理」）と、当該データにアクセスしていない処理（以下「第２処理」）とに区別し、
前記優先度変更部により、前記第２処理の優先度を前記第１処理の優先度よりも低くし、
前記第１処理を監視してその実行が終了したかどうか調べ、
終了したときに前記電断処理部にバックアップを行わせる、ことを特徴とする遊技機。
【請求項２】
前記第１処理が複数の処理を含むとき、
前記電断前置処理部の前記処理実行状態監視部は、
前記第１処理を監視してその実行が終了したかどうか調べ、
前記第１処理の一部の処理が終了したときに当該一部の処理の優先度を、前記優先度変更部により、残りの前記第１処理の優先度よりも低くし、
前記第１処理の全部の実行が終了したときに、前記電断処理部にバックアップを行わせる、ことを特徴とする請求項１記載の遊技機。
【請求項３】
前記優先度変更部は、前記マルチプロセス処理に係る前記複数の処理それぞれについて前記優先度を保持する優先度テーブルを含み、
前記第２処理の優先度を前記第１処理の優先度よりも低くするときに、前記第２処理の優先度を前記優先度テーブルの予め定められた優先度のうちで最も低いものに設定することを特徴とする請求項１又は請求項２記載の遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スロットマシン等の遊技機に関するものである。
【背景技術】
【０００２】
外周面に図柄が配列された複数の回胴を備えた遊技機（回胴式遊技機、スロットマシン）が知られている。この種の遊技機は、遊技媒体（メダル）に対して一定の遊技価値を付与し、このような遊技媒体を獲得するための遊技を行うものである。また、この種の遊技機は、遊技者の回転開始操作を契機として、内部抽選を行うとともに複数の回胴の回転を開始させ、遊技者の停止操作契機として、内部抽選の結果に応じた態様で複数の回胴を停止させる制御を行っている。そして、遊技の結果は、複数の回胴が停止した状態における入賞判定ライン上に表示された図柄組み合わせによって判定され、遊技の結果に応じてメダル等の払い出しなどが行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２２３５４４号公報
【特許文献２】特開２００６−２２３５４６号公報
【特許文献３】特開２００６−３０４８９８号公報
【特許文献４】特開２００６−３０４９００号公報
【特許文献５】特開２００６−３０４９０１号公報
【特許文献６】特開２００６−３０４９０３号公報  タイマ割り込み処理と電断割り込み処理とが同時だった場合には、電断割り込み処理を優先し、タイマ割り込み処理の実行中に電断割り込み処理があった場合には、タイマ割り込み処理の終了後に、電断割り込み処理を実行する。
【特許文献７】特開２００９−１８９７０８号公報
【特許文献８】特開２００９−１８９７０９号公報  メイン側ではバックアップが最優先される一方で、サブでは、電断時に進行中の演出動作を特定するデータをバックアップ保存する電断割込み処理Aと、制御コマンドが主制御部から送信されるときに起動される受信割込み処理Bとのうち、処理Bの方を優先することによって、メインコマンドが消失するのを防止する。
【特許文献９】特開２００８−２９５８７５号公報
【特許文献１０】特開２００８−２９５８７６号公報  電断の際に所定の優先順序（最優先が現遊技状況）で、遊技情報を外部に送信する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メイン基板、サブ基板は予め定められたプログラムに従い遊技に係る処理、演出に係る処理を実行する処理部であるＣＰＵを備える。ＣＰＵは電源断において、予め定められた電源断予告信号の入力を契機として電源断退避処理を実行する。この処理は、電源断でもデータが失われないメモリに保存されているデータのチェックサムを求める処理を含む。これにより保存されたデータはバックアップデータである。そして、電源が投入されたときの初期化処理において、電源断でもデータが失われないメモリに保存されているバックアップデータを読み出して通常使用するワークメモリ上に展開する。上記電源断退避処理と初期化処理の２つの動作により、電源オフ前の状態のバックアップとこれに基づく電源オン後の復帰が実現される。つまり、遊技機の電源を投入すると電源断時の状態に戻ることができる。
【０００５】
遊技機の電源スイッチがオンからオフにされても電源電圧はすぐには低下せず、しばらく時間が経ってから電源電圧がゼロになる。このため、ＣＰＵは電源断信号を受けてから電圧低下により動作を停止するまでの間に、前記電源断退避処理を行うことができる。
【０００６】
正確には、「電源断信号を受けてから電圧低下により動作を停止するまでの間」にＣＰＵが行う処理は次のものである。
（処理１）現在実行中の処理を中止するか、又は、その処理の終了を待つ。
（処理２）通常の処理に代えて、電源断退避処理を実行する。
【０００７】
（処理１）と（処理２）の合計時間は、「電源断信号を受けてから電圧低下により動作を停止するまでの時間」よりも短くなければならない。
【０００８】
ところで、最近のＣＰＵはマルチプロセス処理を行うようになってきており、（処理１）の対象となる処理が複数存在することがある。マルチプロセス処理は、処理効率を高めるために、複数の処理を同時並行に実行できるものである。
【０００９】
電源断発生時、バックアップ対象となるデータの処理中であれば、その処理の終了まで電源断退避処理の開始を送らせるが、複数の処理が同時に動作しているマルチプロセス処理においては、バックアップ対象となるデータにアクセスしないが、より優先度の高い処理が割り込むおそれがある。このため、（処理１）の時間が増大し、「電源断信号を受けてから電圧低下により動作を停止するまでの時間」において電源断退避処理を完了できなくなるかもしれず、安定した電源断退避処理を行うことができなかった（「安定した」とは、予め定められたバックアップ対象となるデータを全部正常にバックアップできた状態のことである）。
【００１０】
この発明は上記課題を解決するためになされたもので、マルチプロセス処理下において電源断退避処理の実行までの遅延時間を極力小さなものとし、電源断退避処理を安定して行えることのできる遊技機を提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明は、遊技に係る処理を行うメイン基板と、前記メイン基板から予め定められたコマンドを受けて遊技に係る演出処理を行うサブ基板と、前記メイン基板及び前記サブ基板へ電力を供給する電源部とを備える遊技機において、
前記遊技に係る処理及び／又は前記演出処理に関する複数の処理を予め定められた優先度に基づき同時に実行するマルチプロセス処理を行うＣＰＵと、
前記遊技に係るデータ及び／又は前記演出に係るデータを記憶するメモリと、
電断の際に、前記メモリの少なくとも一部のデータについてバックアップを行う電断処理部と、
前記複数の処理についての前記優先度を変更する優先度変更部と、前記複数の処理の実行状態を監視する処理実行状態監視部とを含み、前記複数の処理のうちの予め定められた処理の実行が終了した後に前記電断処理部にバックアップを開始させる電断前置処理部と、
前記電源部からの予め定められた信号に基づき前記電断前置処理部に処理を開始させる電断処理起動部と、を備え、
前記電断前置処理部の前記処理実行状態監視部は、
前記電断処理起動部からの前記信号に基づき前記複数の処理の実行状態を調べ、
前記複数の処理を、前記バックアップの対象となっているデータにアクセスしている処理（以下「第１処理」）と、当該データにアクセスしていない処理（以下「第２処理」）とに区別し、
前記優先度変更部により、前記第２処理の優先度を前記第１処理の優先度よりも低くし、
前記第１処理を監視してその実行が終了したかどうか調べ、
終了したときに前記電断処理部にバックアップを行わせる、ものである。
【００１２】
前記第１処理が複数の処理を含むとき、
前記電断前置処理部の前記処理実行状態監視部は、
前記第１処理を監視してその実行が終了したかどうか調べ、
前記第１処理の一部の処理が終了したときに当該一部の処理の優先度を、前記優先度変更部により、残りの前記第１処理の優先度よりも低くし、
前記第１処理の全部の実行が終了したときに、前記電断処理部にバックアップを行わせるようにしてもよい。
【００１３】
前記優先度変更部は、前記マルチプロセス処理に係る前記複数の処理それぞれについて前記優先度を保持する優先度テーブルを含み、
前記第２処理の優先度を前記第１処理の優先度よりも低くするときに、前記第２処理の優先度を前記優先度テーブルの予め定められた優先度のうちで最も低いものに設定するようにしてもよい。
【発明の効果】
【００１４】
この発明によれば、複数の処理を同時並行処理するマルチプロセス処理下において、前記複数の処理を、バックアップの対象となっているデータにアクセスしている処理（第１処理）と、当該データにアクセスしていない処理（第２処理）とに区別し、前記第２処理の優先度を前記第１処理の優先度よりも低くしたので、前記第２処理の割り込みを行うことなく速やかに電断処理を実行することができる。マルチプロセス処理下であっても、電断処理の実行までの遅延時間を極力小さなものにでき、電断処理を安定して行うことができる。
【図面の簡単な説明】
【００１５】
【図１】前扉を閉めた状態を示すスロットマシンの正面図である。
【図２】前扉を１８０度開いた状態を示すスロットマシンの正面図である。
【図３】スロットマシンのブロック図である。
【図４】スロットマシンの遊技処理のフローチャートである。
【図５】図５（ａ）はジョグダイヤルの斜視図、図５（ｂ）はジョグダイヤルのブロック図、図５（ｃ）はメイン基板のコマンド送信部のブロック図である。
【図６】サブ基板と周辺基板の通信系統の説明図である。
【図７】データ送信部のブロック図である。
【図８】周辺基板に関する処理の説明図である。
【図９】ＶＤＰ（ビデオディスプレイプロセッサ）の機能ブロック図である。
【図１０】ＶＤＰにおける描画データ保存、描画実行及び表示の各処理の説明図（タイミングチャート）である。
【図１１】サウンドコントローラのブロック図である。
【図１２】音声データの説明図である。
【図１３】可動体（一例）の概略図である。同図（ａ）は上面図、同図（ｂ）は正面図、同図（ｃ）はＢ−Ｂ矢視断面図、同図（ｄ）はＡ−Ａ矢視断面図である。
【図１４】可動要素（シャッター）の開状態（同図（ａ））と閉状態（同図（ｂ））の説明図である。
【図１５】可動体制御部のブロック図である。
【図１６】可動体演出処理のフローチャートである。
【図１７】周辺基板の制御におけるメイン処理と割込処理の関係の説明図である。
【図１８】本実施の形態に係る遊技機のブロック図（複数の周辺基板間で動作の同期をとるための構成）である。
【図１９】本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データがひとつ）。
【図２０】本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データが２つ）。
【図２１】本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データがひとつ、エラー発生）。
【図２２】遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの参考図である（制御データが２つ、エラー発生、エラー上書き）。
【図２３】本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データが２つ、エラー発生）。
【図２４】本実施の形態に係る遊技機のエラー信号受信時の処理フローチャートである。
【図２５】他の本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データが２つ、エラー発生）。
【図２６】他の本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの他の説明図である（制御データが２つ、エラー発生）。
【図２７】他の本実施の形態に係る遊技機のエラー信号受信時の処理フローチャートである。
【図２８】他の本実施の形態に係る遊技機の制御データの入出力とバッファ（記憶素子）における制御データの動きの説明図である（制御データが３つ、エラー発生）。
【図２９】他の本実施の形態に係る遊技機のエラー信号受信時の処理フローチャートである。
【図３０】本実施の形態に係るチャタリング除去処理のフローチャートである。
【図３１】本実施の形態に係る真理値表である。
【図３２】本実施の形態に係る真理値表である。
【図３３】本実施の形態に係る真理値表である。
【図３４】本実施の形態に係る真理値表である。
【図３５】本実施の形態に係るチャタリング除去装置のブロック図である。
【図３６】本実施の形態に係るチャタリング除去処理を説明するためのタイミングチャートである。
【図３７】本実施の形態に係るチャタリング除去処理による処理結果を示す真理値表である。
【図３８】比較例に係るチャタリング除去処理のフローチャートである。
【図３９】並列処理を適用した場合の処理の説明図である。（ａ）は本実施の形態に係るチャタリング除去処理に並列処理を適用した場合を示し）は比較例に並列処理を適用した場合を示す。
【図４０】ジョグダイヤルの２つのセンサの出力信号の説明図である。
【図４１】ジョグダイヤルの回転方向を逆転させるときの信号変化の説明図である。
【図４２】本実施の形態に係るジョグダイヤルの回転量（回転方向を含む）を求める装置のブロック図である。
【図４３】図４２の装置のバッファの記憶内容の説明図である。
【図４４】ジョグダイヤルの順回転・逆回転の判定の説明図（タイミングチャート）である。
【図４５】本実施の形態に係る回転検出処理フローチャートである。
【図４６】本実施の形態に係る回転検出処理の説明図（タイミングチャート）である。
【図４７】ジョグダイヤルの判定処理に係る比較例（部分フローチャート）である。
【図４８】本実施の形態に係る他の回転検出処理フローチャートである。
【図４９】本実施の形態に係る他の回転検出処理フローチャートである（続き）。
【図５０】サウンドコマンドの書き込みの説明図である。
【図５１】演出の同期を取るための遅延方式（自動遅延と指定遅延）の説明図である。
【図５２】自動遅延方式の動作説明図（コマンド記憶部の説明図）である。
【図５３】自動遅延方式の動作説明図（コマンドバッファの説明図）である。
【図５４】自動遅延方式の動作説明図（コマンドバッファの状態遷移図）である。
【図５５】指定遅延方式の読み出しテーブル（コマンドバッファ）の説明図である。
【図５６】指定遅延方式の読み出しテーブル（コマンドバッファ）の状態遷移図である。
【図５７】本実施の形態に係る指定遅延型の送信制御部のブロック図である。
【図５８】電源部とサブ基板の関係（電源断予告信号）の説明図である。
【図５９】マルチプロセス方式における電断処理の説明図である。
【図６０】マルチプロセス方式における電断処理の説明図である（続き）。
【図６１】マルチプロセス方式における電断処理の説明図である（続き）。
【図６２】本実施の形態に係る遊技機の電断処理の部分のブロック図である。
【図６３】本実施の形態に係る遊技機の電断処理装置のフローチャートである。
【図６４】本実施の形態に係る電断処理の優先度テーブルの説明図である。
【図６５】本実施の形態に係る遊技機の電断処理（瞬断対策）の部分のブロック図である。
【図６６】本実施の形態に係る電断処理（瞬断対策）装置のフローチャートである。
【図６７】本実施の形態に係る電断処理（瞬断対策）の説明図（タイミングチャート）である。
【図６８】本実施の形態に係る電断処理（瞬断対策）の他の説明図（タイミングチャート）である。
【図６９】電断処理の他のブロック図（比較例）である。
【図７０】図６９の電断処理の説明図（タイミングチャート）である。
【図７１】本実施の形態に係る遊技機の電断処理（通信処理対策）の部分のブロック図である。
【図７２】本実施の形態に係る電断処理（通信処理対策）装置のフローチャートである。
【図７３】本実施の形態に係る電断処理（通信処理対策）の説明図（タイミングチャート）である。
【図７４】本実施の形態に係る電断処理（通信処理対策）の他の説明図（タイミングチャート）である。
【図７５】本実施の形態に係る電断処理（通信処理対策）の他の説明図（タイミングチャート）である。
【図７６】本実施の形態に係るメッセージ（コマンド）の構造説明図である。
【図７７】本実施の形態に係るマルチプロセス処理におけるメッセージ送受信の説明図である。
【図７８】本実施の形態に係るメッセージバッファに格納されているメッセージの説明図である。
【図７９】本実施の形態に係るタイマー割り込み、送信タスク、受信タスクの動作説明図（タイミングチャート）である（通常動作時）。
【図８０】本実施の形態に係るポインタの動作説明図である（通常動作時）。
【図８１】本実施の形態に係るメッセージ送受信部のブロック図である。
【図８２】本実施の形態に係る電断処理のフローチャートである（ポインタのバックアップに係る処理部分のみ示す）。
【図８３】本実施の形態に係る復帰処理のフローチャートである（ポインタの復帰処理部分のみ示す）。
【図８４】本実施の形態に係るタイマー割り込み、送信タスク、受信タスクの動作説明図（タイミングチャート）である（電断−復帰時）。
【図８５】本実施の形態に係るポインタの動作説明図である（電断−復帰時）。
【発明を実施するための形態】
【００１６】
＜遊技機の構造＞
図１は前扉を閉めた状態を示すスロットマシンの正面図、図２は前扉を１８０度開いた状態を示すスロットマシンの正面図を示す。
【００１７】
図１及び図２中、１００はスロットマシンを示すもので、このスロットマシン１００は、図１に示すように、スロットマシン本体１２０と、このスロットマシン本体１２０の前面片側にヒンジ等により開閉可能に取り付けられた前扉１３０とを備えている。前記前扉１３０の前面には、図１に示すように、ほぼ中央にゲーム表示部１３１を設け、ゲーム表示部１３１の右下隅部に、遊技者がメダルを投入するためのメダル投入口１３２を設け、メダル投入口１３２の下側には、メダル投入口１３２から投入され、詰まってしまったメダルをスロットマシン１００外に強制的に排出するためのリジェクトボタン１３３が設けられている。
【００１８】
また、前記ゲーム表示部１３１の左下方には、ゲームを開始するためのスタートスイッチ１３４を設けてあり、３つのリールのそれぞれに対応して３つのストップスイッチ１４０を設けてある。前扉の下端部中央には、メダルの払出し口１３５を設けてある。前記ゲーム表示部１３１の上側には、液晶表示装置ＬＣＤが設けてある。
【００１９】
液晶表示装置ＬＣＤの位置には可動体５０が設けられている。可動体５０は２つのシャッター（可動体要素）５１Ｌ及び５１Ｒを備える。２つのシャッター５１Ｌ及び５１Ｒは演出に従い左右に動き、液晶表示装置ＬＣＤを隠す。同図では、２つのシャッター５１Ｌ及び５１Ｒがそれぞれ左右に一杯に開き、液晶表示装置ＬＣＤが露出している（遊技者が画面をみることができる）状態を示している。
【００２０】
ストップスイッチ１４０とメダル投入口１３２の間、具体的には、右端のストップスイッチ１４０の右上側、かつ、メダル投入口１３２の左側には、操作部としてのジョグダイヤルＰＡＮが設けられている。
【００２１】
ジョグダイヤルＰＡＮは、図５（ａ）に示すように、左右に回転可能に設けられたリング状の部分であるダイヤルＪＤと、当該リングの回転中心に設けられた押しボタンスイッチＰＨＳＷの２つの部分を備える。遊技者は、ジョグダイヤルＰＡＮのダイヤルＪＤを左右に回すことができるとともに、その中心頂部の押しボタンスイッチＰＨＳＷを押下することができる。図示しないが、当該押しボタンスイッチＰＨＳＷの内部には発光素子が設けられ、例えば、押下時に点灯する。ダイヤルＪＤは複数のステップ（例えばステップ数＝３０、その角度＝１２度）で回転するようになっている。ダイヤルＪＤの回転方向及び／又は回転量（角度）、並びに押しボタンスイッチのオンオフに応じて所定の演出が行われる。
【００２２】
ジョクダイヤルＰＡＮは、図５（ｂ）に示すように、押しボタンスイッチＰＨＳＷとともに、ダイヤルＪＤの回転を検知するための２つのセンサ[1]ＪＳ１と[2]ＪＳ２を備えている。回転に応じてセンサ[1]ＪＳ１と[2]ＪＳ２はＨ／Ｌの２つのデジタル信号を出力する。これについては後にさらに説明を加える。
【００２３】
スロットマシン本体１２０の内部には、図２に示すように、その内底面に固定され、内部に複数のメダルを貯留して、貯留したメダルを前扉１３０の前面に設けた払出し口１３５に１枚ずつ払い出すためのホッパ装置１２１が設置されている。このホッパ装置１２１の上部には、上方に向けて開口し、内部に複数のメダルを貯留するホッパタンク１２２を備えている。スロットマシン本体１２０の内部には、前扉１３０を閉めたときにゲーム表示部１３１が来る位置に三個のリールからなるリールユニット２０３が設置されている。リールユニット２０３は、外周面に複数種類の図柄が配列されている３つのリール（第１リール〜第３リール）を備えている。ゲーム表示部１３１には開口部が設けられていて、それを通して遊技者が前記リールユニット２０３の各回転リールの図柄を見ることができるようになっている。ホッパ装置１２１の上側のリールユニット２０３との間には電源部２０５が設けられている。
【００２４】
前記前扉１３０の裏面には、図２に示すように、メダル（コイン）セレクタ１が、前扉１３０の前面に設けられたメダル投入口１３２の裏側に取り付けられている。このメダルセレクタ１は、メダル投入口１３２から投入されたメダルの通過を検出しながら、当該メダルをホッパ装置１２１に向かって転動させ、外径が所定寸法と違う異径メダルや、鉄又は鉄合金で作製された不正メダルを選別して排除するとともに、１ゲームあたりに投入可能な所定枚数以上のメダルを選別して排除するための装置である。
【００２５】
また、メダルセレクタ１の下側には、図２に示すように、その下部側を覆って前扉１３０の払出し口１３５に連通する導出路１３６が設けられている。メダルセレクタ１により振り分けられたメダルは、この導出路１３６を介して払出し口１３５から遊技者に返却される。
【００２６】
図３は本実施の形態を適用し得る遊技機の一例としてのスロットマシン１００の機能ブロック図を示す。
【００２７】
この図において電源系統についての表示は省略されている。図示しないが、スロットマシンは商用電源（ＡＣ１００Ｖ）から直流電源（＋５Ｖなど）を発生するための電源部（図２の電源部２０５）を備える。
【００２８】
スロットマシン１００は、その主要な処理装置としてメイン基板（処理部）１０とこれからコマンドを受けて動作するサブ基板２０とを備える。なお、少なくともメイン基板１０は、外部から接触不能となるようにケース内部に収容され、これら基板を取り外す際に痕跡が残るように封印処理が施されている。すなわち、メイン基板１０とサブ基板２０はカシメにより一体となり取り付けられるとともに、メイン基板１０とサブ基板２０の全体を覆う一体のケースによりカバーされている。
【００２９】
メイン基板１０は、遊技者の操作を受けて内部抽選を行ったり、回胴の回転・停止やメダルの払い出しなどの処理（遊技処理）を行うためのものである。メイン基板１０は、予め設定されたプログラムに従って制御動作を行うＣＰＵと、前記プログラムを記憶する記憶手段であるＲＯＭおよび処理結果などを一時的に記憶するＲＡＭを含む。
【００３０】
サブ基板２０は、メイン基板１０からコマンド信号を受けて内部抽選の結果を報知したり各種演出を行うためのものである。サブ基板２０は、前記コマンド信号に応じた予め設定されたプログラムに従って制御動作を行うＣＰＵと、前記プログラムを記憶する記憶手段であるＲＯＭおよび処理結果などを一時的に記憶するＲＡＭを含む。コマンドの流れはメイン基板１０からサブ基板２０への一方のみであり、逆にサブ基板２０からメイン基板１０へコマンド等が出されることはない。
【００３１】
＜メイン基板＞
メイン基板１０には、ベットスイッチＢＥＴ、スタートスイッチ１３４，ストップボタン１４０，リール（回胴）ユニット２０３、ホッパ駆動部８０、ホッパ８１及びホッパ８１から払い出されたメダルの枚数を数えるためのメダル検出部８２（これらは前述のホッパ装置１２１を構成する）が接続されている。サブ基板２０には液晶表示装置の制御用の液晶制御基板２００、スピーカ基板２０１、ＬＥＤ基板２０２などの周辺基板（ローカル基板）が接続されている。
【００３２】
メイン基板１０には、さらに、メダルセレクタ１のメダルセンサＳ１及びＳ２が接続されている。
【００３３】
メダルセレクタ１には、メダルを計数するためのメダルセンサＳ１及びＳ２が設けられている。メダルセンサＳ１及びＳ２は、メダルセレクタ１に設けられた図示しないメダル通路の下流側（出口近傍）に設けられている（メダル通路の上流側はメダル投入口１３２に連通している）。２つのメダルセンサＳ１とＳ２は、メダルの進行方向に沿って所定間隔を空けて並べて設けられている。メダルセンサＳ１、Ｓ２は、例えば、互いに対向した発光部と受光部とを有して断面コ字状に形成され、その検出光軸をメダル通路内に上方から臨ませて位置するフォトインタラプタである。各フォトインタラプタにより、途中で阻止されずに送られてきたメダルの通過が検出される。なお、フォトインタラプタを２つ隣接させたのは、メダル枚数を検出するだけでなく、メダルの通過が正常か否かを監視するためである。すなわち、フォトインタラプタを２つ隣接させて設けることにより、メダルの通過速度や通過方向を検出することができ、これによりメダル枚数だけでなく、逆方向に移動する不正行為を感知することができる。
【００３４】
リールユニット２０３は、３つの回胴４０ａ〜４０ｃと、これらをそれぞれ回転させるステッピングモータ１５５ａ〜１５５ｃと、それらの位置をそれぞれ検出する回胴位置検出器（インデックスセンサ）１５９ａ〜１５９ｃとを備える（なお、ステッピングモータ１５５ａ〜１５５ｃを単にモータ１５５あるいはモータと記すことがある）。
【００３５】
回胴制御手段１３００は、回胴４０ａ〜４０ｃそれぞれが１回転する毎にインデックスセンサ１５９で検出される基準位置信号に基づいて、回胴４０の基準位置（図示しないインデックスによって特定されるコマ）からの回転角度を求める（ステップモータの回転軸の回転ステップ数をカウントする）ことによって、現在の回胴４０の回転状態を監視することができるようになっている。すなわち、メイン基板１０は、回胴４０の基準位置からの回転角度を求めることにより、ストップボタン１４０の作動時における回胴４０の位置を得ることができる。
【００３６】
なお、以下の説明において、任意のひとつ又は複数の回胴を示すときは符号４０を使用し、３つの回胴をそれぞれ区別して示すときは符号４０ａ〜４０ｃを使用することにする。
【００３７】
ホッパ駆動部８０は、ホッパ８１の図示しない回転ディスクを回転駆動して、メイン基板１０によって指示された払出数のメダルを払い出す動作を行う。遊技機は、メダルを１枚払い出す毎に作動するメダル検出部８２を備えており、メイン基板１０は、メダル検出部８２からの入力信号に基づいてホッパ８１から実際に払い出されたメダルの数を管理することができる。
【００３８】
投入受付部（投入受付手段）１０５０は、メダルセレクタ１のメダルセンサＳ１とＳ２の出力を受け、遊技毎にメダルの投入を受け付けて、規定投入数に相当するメダルが投入されたことに基づいて、スタートスイッチ１３４に対する第１回胴〜第３回胴の回転開始操作を許可する処理を行う。なお、スタートスイッチ１３４の押下操作が、第１回胴〜第３回胴の回転を開始させる契機となっているとともに、内部抽選を実行する契機となっている。また、遊技状態に応じて規定投入数を設定し、通常状態およびボーナス成立状態では規定投入数を３枚に設定し、ボーナス状態では規定投入数を１枚に設定する。
【００３９】
メダルが投入されると、遊技状態に応じた規定投入数を限度として、投入されたメダルを投入状態に設定する。あるいは、遊技機にメダルがクレジットされた状態で、ベットスイッチＢＥＴが押下されると、遊技状態に応じた規定投入数を限度して、クレジットされたメダルを投入状態に設定する。メダルの投入を受け付けるかどうかは、メイン基板１０が制御する。スタートスイッチ１３４が押下され各回胴の回転が開始した時点（遊技開始時点）から３つのストップボタン１４０が押下され各回胴の回転が停止した時点（入賞した場合はメダル払い出しが完了した時点）（遊技終了時点）の間であって、メダルの投入を受け付ける状態になっていないときは（許可されていないときは）、メダルを投入してもメダルセンサＳ１、Ｓ２でカウントされず、そのまま返却される。同様に、メイン基板１０は、メダルの投入を受け付ける状態か否かに応じて、ベットスイッチＢＥＴの有効／無効を制御する。また、前記遊技終了時点から前記遊技開始時点までの間でベットスイッチＢＥＴは有効となるが、これ以外の期間においては（ＢＥＴスイッチの押下が許可されていないときは）、ベットスイッチＢＥＴを押下しても、それは無視される。
【００４０】
メイン基板１０は、乱数発生手段１１００を内蔵する。乱数発生手段１１００は、抽選用の乱数値を発生させる手段である。乱数値は、例えば、インクリメントカウンタ（所定のカウント範囲を循環するように数値をカウントするカウンタ）のカウント値に基づいて発生させることができる。なお本実施形態において「乱数値」には、数学的な意味でランダムに発生する値のみならず、その発生自体は規則的であっても、その取得タイミング等が不規則であるために実質的に乱数として機能しうる値も含まれる。
【００４１】
内部抽選手段１２００は、遊技者がスタートスイッチ１３４からのスタート信号に基づいて、役の当否を決定する内部抽選を行う。すなわち、メイン基板１０のメモリ（図示せず）に記憶されている抽選テーブル（図示せず）を選択する抽選テーブル選択処理、乱数発生手段１１００から得た乱数の当選を判定する乱数判定処理、当選の判定結果で大当たりなどに当選したときにその旨のフラグを設定する抽選フラグ設定処理などを行う。
【００４２】
抽選テーブル選択処理では、図示しない記憶手段（ＲＯＭ）に格納されている複数の抽選テーブル（図示せず）のうち、いずれの抽選テーブルを用いて内部抽選を行うかを決定する。抽選テーブルでは、複数の乱数値（例えば、０〜６５５３５の６５５３６個の乱数値）のそれぞれに対して、リプレイ、小役（ベル、チェリー）、レギュラーボーナス（ＲＢ：ボーナス）、およびビッグボーナス（ＢＢ：ボーナス）などの各種の役が対応づけられている。また、遊技状態として、通常状態、ボーナス成立状態、およびボーナス状態が設定可能とされ、さらにリプレイの抽選状態として、リプレイ無抽選状態、リプレイ低確率状態、リプレイ高確率状態が設定可能とされる。
【００４３】
抽選テーブル選択処理により、抽選の内容は所定の範囲内で設定可能（当選の確率を高くしたり低くしたりできる）であり、遊技機が設置されるホールなどにおいて店側により設定作業が行われる。
【００４４】
通常の遊技機は、ＢＢ，ＲＢ、小役等の抽選確率の異なる複数（例えば６つ）の抽選テーブルを予め備える。遊技機の抽選では、それら複数の抽選テーブルの中から１つが設定され、この設定された抽選テーブルに基づいて抽選による当たり／ハズレの判定がなされる。複数の抽選テーブルのうちどれを使用するかに関する設定を変更することを、設定の変更（以下、「設定変更」と記す）と称している。
【００４５】
従来、例えばスロットマシンのような遊技機では、設定値（通常１〜６）を変更する場合、遊技機の扉を開け、電源部に設けられた設定変更キースイッチに設定変更キーを挿入して当該キースイッチをオンにした状態で遊技機の電源を投入して設定変更可能な状態にし、設定変更ボタン（押ボタン）を１回押下するごとに、７セグメント表示器などに表示される設定値がインクリメントされて１〜６までの値を循環的に変化させ、所望する設定値が表示器に表示されたところでスタートスイッチを操作することで、所望する設定値を確定させている。
【００４６】
乱数判定処理では、スタートスイッチ１３４からのスタート信号に基づいて、遊技毎に乱数発生手段（図示せず）から乱数値（抽選用乱数）を取得し、取得した乱数値について前記抽選テーブルを参照して役に当選したか否かを判定する。
【００４７】
抽選フラグ設定処理では、乱数判定処理の結果に基づいて、当選したと判定された役の抽選フラグを非当選状態（第１のフラグ状態、オフ状態）から当選状態（第２のフラグ状態、オン状態）に設定する。２種類以上の役が重複して当選した場合には、重複して当選した２種類以上の役のそれぞれに対応する抽選フラグが当選状態に設定される。抽選フラグの設定情報は、記憶手段（ＲＡＭ）に格納される。
【００４８】
入賞するまで次回以降の遊技に当選状態を持ち越し可能な抽選フラグ（持越可能フラグ）と、入賞の如何に関わらず次回以降の遊技に当選状態を持ち越さずに非当選状態にリセットされる抽選フラグ（持越不可フラグ）とが用意されていることがある。この場合、前者の持越可能フラグが対応づけられる役としては、レギュラーボーナス（ＲＢ）およびビッグボーナス（ＢＢ）があり、それ以外の役（例えば、小役、リプレイ）は後者の持越不可フラグに対応づけられている。すなわち抽選フラグ設定処理では、内部抽選でレギュラーボーナスに当選すると、レギュラーボーナスの抽選フラグの当選状態を、レギュラーボーナスが入賞するまで持ち越す処理を行い、内部抽選でビッグボーナスに当選すると、ビッグボーナスの抽選フラグの当選状態を、ビッグボーナスが入賞するまで持ち越す処理を行う。このときメイン基板１０は、内部抽選機能により、レギュラーボーナスやビッグボーナスの抽選フラグの当選状態が持ち越されている遊技でも、レギュラーボーナスおよびビッグボーナス以外の役（小役およびリプレイ）についての当否を決定する内部抽選を行っている。すなわち抽選フラグ設定処理では、レギュラーボーナスの抽選フラグの当選状態が持ち越されている遊技において、内部抽選で小役あるいはリプレイが当選した場合には、既に当選しているレギュラーボーナスの抽選フラグと内部抽選で当選した小役あるいはリプレイの抽選フラグとからなる２種類以上の役に対応する抽選フラグを当選状態に設定し、ビッグボーナスの抽選フラグの当選状態が持ち越されている遊技において、内部抽選で小役あるいはリプレイが当選した場合には、既に当選しているビッグボーナスの抽選フラグと内部抽選で当選した小役あるいはリプレイの抽選フラグとからなる２種類以上の役に対応する抽選フラグを当選状態に設定する。
【００４９】
回胴制御手段１３００は、遊技者がスタートスイッチ１３４の押下操作（回転開始操作）によるスタート信号に基づいて、第１回胴〜第３回胴をステッピングモータにより回転駆動して、第１回胴〜第３回胴の回転速度が所定速度（約８０ｒｐｍ：１分間あたり約８０回転となる回転速度）に達した状態において回転中の回胴にそれぞれ対応する３つのストップボタン１４０の押下操作（停止操作）を許可する制御を行うとともに、ステッピングモータにより回転駆動されている第１回胴〜第３回胴を抽選フラグの設定状態（内部抽選の結果）に応じて停止させる制御を行う。
【００５０】
また、回胴制御手段１３００は、３つのストップボタン１４０に対する押下操作（停止操作）が許可（有効化）された状態において、遊技者が３つのストップボタン１４０を押下することにより、その回胴停止信号に基づいて、リールユニット２０３のステッピングモータへの駆動パルス（モータ駆動信号）の供給を停止することにより、第１回胴〜第３回胴の各回胴を停止させる制御を行う。
【００５１】
すなわち、回胴制御手段１３００は、３つのストップボタン１４０の各ボタンが押下される毎に、第１回胴〜第３回胴のうち押下されたボタンに対応する回胴の停止位置を決定して、決定された停止位置で回胴を停止させる制御を行っている。具体的には、記憶手段（ＲＯＭ）に記憶されている停止制御テーブル（図示せず）を参照して３つのストップボタンの押下タイミングや押下順序等（停止操作の態様）に応じた第１回胴〜第３回胴の停止位置を決定し、決定された停止位置で第１回胴〜第３回胴を停止させる制御を行う。
【００５２】
ここで停止制御テーブルでは、ストップボタン１４０の作動時点における第１回胴〜第３回胴の位置（押下検出位置）と、第１回胴〜第３回胴の実際の停止位置（または押下検出位置からの滑りコマ数）との対応関係が設定されている。滑りコマ数とは、回胴停止時にゲーム表示部から視認できる特定の図柄を基準位置としたときのストップボタン１４０の操作から対応する回胴の回転停止までの間に当該基準位置を通過する図柄の数をいう。回胴制御手段１３００は、各ストップボタン１４０の操作から１９０ｍｓ以内という条件下で各回胴を停止させるため、滑りコマ数は０以上４以下の範囲内となっている（ただし、８０回転／分、図柄数＝２１個の条件において）。抽選フラグの設定状態に応じて、第１回胴〜第３回胴の停止位置を定めるための停止制御テーブルが用意されることもある。
【００５３】
前述のように、回胴制御手段１３００は、回胴が１回転する毎にインデックスセンサ１５９で検出される基準位置信号に基づいて、回胴の基準位置（リールインデックスによって検出されるコマ）からの回転角度（ステップモータの回転軸の回転ステップ数）を求めることによって、現在の回胴の回転状態を監視することができるようになっている。すなわち、メイン基板１０は、ストップボタン１４０の作動時における回胴の位置を、回胴の基準位置からの回転角度を求めることにより得ることができる。
【００５４】
回胴制御手段１３００は、いわゆる引き込み処理と蹴飛ばし処理とを回胴を停止させる制御として行っている。引き込み処理とは、抽選フラグが当選状態に設定された役に対応する図柄が有効な入賞判定ライン上に停止するように（当選した役を入賞させることができるように）回胴を停止させる制御処理である。一方蹴飛ばし処理とは、抽選フラグが非当選状態に設定された役に対応する図柄が有効な入賞判定ライン上に停止しないように（当選していない役を入賞させることができないように）回胴を停止させる制御処理である。すなわち本実施形態の遊技機では、上記引き込み処理及び蹴飛ばし処理を実現させるべく、抽選フラグの設定状態、ストップボタン１４０の押下タイミング、押下順序、既に停止している回胴の停止位置（表示図柄の種類）などに応じて各回胴の停止位置が変化するように停止制御テーブルが設定されている。このように、メイン基板１０は、抽選フラグが当選状態に設定された役の図柄を入賞の形態で停止可能にし、一方で抽選フラグが非当選状態に設定された役の図柄が入賞の形態で停止しないように第１回胴〜第３回胴を停止させる制御を行っている。
【００５５】
本実施形態の遊技機では、第１回胴〜第３回胴が、ストップボタン１４０が押下された時点から１９０ｍｓ以内に、押下されたストップボタンに対応する回転中の回胴を停止させる制御状態に設定されている。すなわち回転している各回胴の停止位置を決めるための停止制御テーブルでは、ストップボタン１４０の押下時点から各回胴が停止するまでに要するコマ数が０コマ〜４コマの範囲（所定の引き込み範囲）で設定されている。
【００５６】
入賞判定手段１４００は、第１回胴〜第３回胴の停止態様に基づいて、役が入賞したか否かを判定する処理を行う。具体的には、記憶手段（ＲＯＭ）に記憶されている入賞判定テーブルを参照しながら、第１回胴〜第３回胴の全てが停止した時点で入賞判定ライン上に表示されている図柄組合せが、予め定められた役の入賞の形態であるか否かを判定する。
【００５７】
入賞判定手段１４００は、その判定結果に基づいて、入賞時処理を実行する。入賞時処理としては、例えば、小役が入賞した場合にはホッパ８１を駆動してメダルの払出制御処理が行われるか、あるいはクレジットの増加され（規定の最大枚数例えば５０枚まで増加され、それを超えた分だけ実際にメダル払い出される）、リプレイが入賞した場合にはリプレイ処理が行われ、ビッグボーナスやレギュラーボーナスが入賞した場合には遊技状態を移行させる遊技状態移行制御処理が行われる。
【００５８】
払出制御手段１５００は、遊技結果に応じたメダルの払い出しに関する払出制御処理を行う。具体的には、小役が入賞した場合に、役毎に予め定められている配当に基づいて遊技におけるメダルの払出数を決定し、決定された払出数に相当するメダルを、ホッパ駆動部８０でホッパ８１を駆動して払い出させる。この際に、ホッパ８１に内蔵される図示しないモータに電流が流れることになる。
【００５９】
メダルのクレジット（内部貯留）が許可されている場合には、ホッパ８１によって実際にメダルの払い出しを行う代わりに、記憶手段（ＲＡＭ）のクレジット記憶領域（図示省略）に記憶されているクレジット数（クレジットされたメダルの数）に対して払出数を加算するクレジット加算処理を行って仮想的にメダルを払い出す処理を行う。
【００６０】
リプレイ処理手段１６００は、リプレイが入賞した場合に、次回の遊技に関して遊技者の所有するメダルの投入を要さずに前回の遊技と同じ準備状態に設定するリプレイ処理（再遊技処理）を行う。リプレイが入賞した場合には、遊技者の手持ちのメダル（クレジットメダルを含む）を使わずに前回の遊技と同じ規定投入数のメダルが自動的に投入状態に設定される自動投入処理が行われ、遊技機が前回の遊技と同じ入賞判定ラインを有効化した状態で次回の遊技における回転開始操作（遊技者によるスタートスイッチ１３４の押下操作）を待機する状態に設定される。
【００６１】
リプレイ処理手段１６００は、所定条件下で内部抽選におけるリプレイの当選確率を変動させる制御を行うことがある。例えば、ストップボタン１４０の操作によって回胴を停止させた際に所定の出目が表示されるとリプレイの当選確率が変動する。リプレイの抽選状態として、リプレイが内部抽選の対象から除外されるリプレイ無抽選状態、リプレイの当選確率が約１／７．３に設定されるリプレイ低確率状態、およびリプレイの当選確率が約１／６に設定されるリプレイ高確率状態という複数種類の抽選状態を設定可能とされている。
【００６２】
エラー処理部１７００は、図示しない扉開閉検知センサ、メダルセンサＳ１及びＳ２及びメダル検出部８２の出力に基づき遊技機のエラー判定を行い、エラーと判定したときにその旨を報知するとともに、遊技機を所定の状態（例えば、操作を受け付けない状態）にする。
【００６３】
図示しない扉開閉検知センサは、扉１３０が閉じられたことを検知するセンサであり、例えばマイクロスイッチや接点などの電気的スイッチである。当該スイッチは扉１３０が閉じられたときに、扉１３０の裏側にスイッチの作用部が当接することでオン（又はオフ）になり、扉１３０が開放されると作用部が離れてオフ（又はオン）になるものである。扉開閉検知センサは、フォトインタラプタのような光学式のものでもよい。メダルセンサＳ１及びＳ２及びメダル検出部８２については前述した。
【００６４】
エラー処理部１７００は、具体的には次のような動作を行う。
・図示しない扉開閉検知センサの出力に基づき扉１３０の開放を検知したとき、エラー処理を行う。
・メダルセンサＳ１及びＳ２の出力に基づきメダルの逆流（センサＳ１とＳ２の検知順序が反対になったこと）、メダル滞留（センサＳ１とＳ２の検知時間が予め定められた閾値よりも長いこと）などを検知したとき、エラー処理を行う。
・メダル検出部８２の出力に基づきメダル詰まり（メダル検出部８２の検知時間が予め定められた閾値よりも長いこと）、ホッパーエンプティ（ホッパ駆動部８０を動作させているにもかかわらずメダル検知部８２がメダルを検知しない）などを検知したとき、エラー処理を行う。
【００６５】
エラー処理部１７００は、上記のようにエラーと判定したときにその旨を報知するとともに、遊技機を所定の状態（エラー状態）にするが、この状態は図示しないリセットスイッチにより解除される。リセットスイッチは、例えば電源部２０５のパネルに設けられる。
【００６６】
なお、サブ基板２０で生じるエラーもある。このエラーでは遊技不能状態にはならないが、サブ基板２０自身の処理によりエラーが生じたことを液晶表示装置などにより報知することができる。当該エラーは例えば不正なコマンドを受信したとき（暗号化されたコマンドが正しく復号化できなかったときを含む）に発生し、当該エラーは上記リセットスイッチにより解除される（メイン基板１０からサブ基板２０へリセットコマンドが送られる）。
【００６７】
また、メイン基板１０は、通常状態、ボーナス成立状態、およびボーナス状態の間で遊技状態を移行させる制御を行うことがある（遊技状態移行制御機能）。遊技状態の移行条件は、１の条件が定められていてもよいし、複数の条件が定められていてもよい。複数の条件が定められている場合には、複数の条件のうち１の条件が成立したこと、あるいは複数の条件の全てが成立したことに基づいて、遊技状態を他の遊技状態へ移行させることができる。
【００６８】
通常状態は、複数種類の遊技状態の中で初期状態に相当する遊技状態で、通常状態からはボーナス成立状態への移行が可能となっている。ボーナス成立状態は、内部抽選でビッグボーナスあるいはレギュラーボーナスに当選したことを契機として移行する遊技状態である。ボーナス成立状態では、通常状態における内部抽選でビッグボーナスが当選した場合、ビッグボーナスが入賞するまでビッグボーナスに対応する抽選フラグが当選状態に維持され、通常状態における内部抽選でレギュラーボーナスが当選した場合、レギュラーボーナスが入賞するまでレギュラーボーナスに対応する抽選フラグが当選状態に維持される。ボーナス状態では、ボーナス遊技によって払い出されたメダルの合計数により終了条件が成立したか否かを判断し、入賞したボーナスの種類に応じて予め定められた払出上限数を超えるメダルが払い出されると、ボーナス状態を終了させて、遊技状態を通常状態へ復帰させる。
【００６９】
リールユニット２０３は、３つの回胴４０ａ〜４０ｃを備えるが、３つの回胴４０ａ〜４０ｃそれぞれにひとつづつステッピングモータ１５５ａ〜１５５ｃが取り付けられている。ステッピングモータ１５５は、回転子（ロータ）として歯車状の鉄心あるいは永久磁石を備え、固定子（ステータ）として複数の巻線（コイル）を備え、電流を流す巻線を切り替えることによって回転動作させるものである。すなわち、固定子の巻線に電流を流して磁力を発生させ、回転子を引きつけることで回転するものである。回転軸を指定された角度で停止させることが可能なことから、スロットマシンの回胴の回転駆動に使用されている。複数の巻線がひとつの相を構成する。相の数として、例えば、２つ（二相）、４つ（４相）、５つ（５相）のものもある。
【００７０】
ステッピングモータは、各相の巻線への電流の与え方を変えることにより、特性を変えることができる（励磁モードが変わる）。二相型については次の通りである。
【００７１】
・一相励磁
常に巻線一相のみに電流を流す。位置決め精度は良い。
【００７２】
・二相励磁 
二相に電流を流す。一相励磁の約２倍の出力トルクが得られる。位置決め精度は良く、停止したときの静止トルクが大きいため、停止位置を確実に保持できる。
【００７３】
・一−二相励磁 
一相と二相を交互に切り替えて電流を流す。一相励磁・二相励磁の場合のステップ角度の半分にすることができるので、滑らかな回転を得られる。
【００７４】
なお、ステッピングモータを「駆動する」とは、当該モータを上記励磁により回転させることとともに、所望の位置で停止させその位置を保持するために各相を励磁することも含むものとする。
【００７５】
スロットマシンでは、例えば、４相の基本ステップ角度１．４３度のステッピングモータを使用し、パルスの出力方法として一−二相励磁を採用している。
【００７６】
１０ＣＧは、サブ基板２０へ送るコマンドを送信するコマンド送信部である。このコマンドには、当選役の情報に関するコマンド、メダル投入枚数やクレジット枚数（貯留枚数）の情報に関するコマンドなどがある。コマンド送信部１０ＣＧは、具体的には、メイン基板１０に搭載されたＲＯＭに予め書き込まれたプログラムをＣＰＵが実行することで実現される。コマンド送信については、後に説明を加える。
【００７７】
次に、メイン基板１０における遊技処理について図４を参照して説明を加える。
一般的に、遊技機において、メダルの投入（クレジットの投入）に始まり、払い出しが終了するまで（又はクレジット数の増加が終了するまで）が一遊技である。一遊技が終了するまでは次回の遊技に進めないという決まりがある。
【００７８】
先ず、規定枚数のメダルが投入されることでスタートスイッチ１３４が有効になり、図４の処理が開始される。
【００７９】
ステップＳ１において、スタートスイッチ１３４が操作されることにより、スタートスイッチ１３４がＯＮとなる。そして、次のステップＳ２に進む。
【００８０】
ステップＳ２において、メイン基板１０により抽選処理が行われる。そして、次のステップＳ３に進む。
【００８１】
ステップＳ３において、第１リール〜第３リールの回転が開始する。そして、次のステップＳ４に進む。
【００８２】
ステップＳ４において、ストップボタン１４０が操作されることにより、ストップボタン１４０がＯＮとなる。そして、次のステップＳ５に進む。
【００８３】
ステップＳ５において、第１リール〜第３リールのうち押下されたストップボタン１４０に対応するリールについて回転停止処理が行われる。そして、次のステップＳ６に進む。
【００８４】
ステップＳ６において、三個のリールに対応するストップボタン１４０の操作が行われたか否かが判定される。そして、三個のリールに対応する３つのストップボタン１４０すべての操作が行われたと判定された場合、次のステップＳ７に進む。
【００８５】
ステップＳ７において、抽選フラグ成立中に当該抽選フラグに対応する入賞図柄が有効入賞ライン上に揃ったか否か、すなわち、入賞が確定したか否かが判定される。そして、入賞が確定したと判定された場合、次のステップＳ８に進む。なお、入賞が確定しなかったときは、抽選フラグが成立していてもメダルの払い出しは行われない。
【００８６】
ステップＳ８において、入賞図柄に相当するメダルが払い出される。
【００８７】
メダルの投入からステップＳ８の実行完了までが、一遊技である。ステップＳ８の待機処理が終了すると、処理はフローチャートの最初に戻る。言い換えれば、次の遊技が可能な状態になる（次遊技へ移行する）。
【００８８】
＜メイン基板からサブ基板へのコマンド伝送＞
サブ基板２０はメイン基板１０からコマンドをうけ、これに従って演出等の処理を行う。コマンドの流れはメイン基板１０からサブ基板２０への一方のみであり、逆にサブ基板２０からメイン基板１０へコマンド等が出されることはない。
【００８９】
サブ基板２０は、メイン基板１０からのコマンドに従い、例えば、予め定められた画面を液晶表示装置ＬＣＤに表示させるためのコマンド（液晶表示装置用コマンド、描画コマンド）を生成する。例えば、アニメーションなどにより演出を行う際には、多数のコマンドを連続的に次々と送信する。
【００９０】
図３において、２０ＣＲは、メイン基板１０から受けたコマンドを受信するコマンド受信部である。コマンド受信部２０ＣＲは、具体的には、サブ基板２０に搭載されたＲＯＭに予め書き込まれたプログラムをＣＰＵが実行することで実現される。
【００９１】
上記コマンドとして、サブ基板２０側のソフトウエアで当選内容を示唆する演出を行うためのものがある。例えば、下記ＡＴのように、出玉を得るための示唆を液晶表示装置に表示して遊技者の操作の便宜の提供（アシスト）を図っている。当該示唆は常時出されるわけではなく、特定の場合に出される。
【００９２】
遊技機は、液晶表示装置、スピーカや表示ランプ等からなる演出表示装置を備える。この演出表示装置はサブ基板２０により制御され、遊技者に入賞等を報知したり、いわゆるアシストタイム（ＡＴ）において、一定ゲーム間に特定の小役を台自体が何らかのアクションを伴ってユーザに教えたりするためのものである。（アシストタイム（ＡＴ）：特定の小役が成立しても遊技者がリールの図柄を揃えないと払い戻しがない。小役による払い出しを確実にするために、ビッグボーナス終了後（もしくは成立時）あるいはその他の任意の契機にアシストタイムを抽選し、これに当選すると一定ゲーム間は特定の小役を揃えさせるための操作を何らかのアクションを伴って遊技者に教えるという機能）
【００９３】
図５（ｃ）は、本実施の形態に係るコマンド送信部１０ＣＧのブロック図である。
【００９４】
１０１は、送信する前記コマンドを受け入れるコマンドレジスタである。コマンドレジスタ１０１は、コマンドを受けたらすぐに送信データレジスタ１０２へ送る。コマンドレジスタ１０１はひとつのコマンドを一時的に蓄えるものである。
【００９５】
コマンドは、所定ビットのひとまとまりのデータ、例えば８ビット単位のデータのセットであって、所定のコマンド体系に基づき作成されているものである。
【００９６】
１０２は、受け入れた順番で複数のコマンドを記憶するとともに、受け入れた順番に従って出力する送信データレジスタ（送信ＦＩＦＯ）である。
【００９７】
１０３は、送信データレジスタ１０２からコマンドの出力を受けてこれをサブ基板２０へ送信する送信用シフトレジスタである。
【００９８】
メイン基板１０は、生成したコマンドをコマンドレジスタ１０１にセットすることでサブ基板２０へ送信する。
【００９９】
コマンド受信部２０ＣＲは、メイン基板１０から受けたコマンドを受信する。例えば、シリアルデータとして受けたコマンドを直列−並列変換器（シフトレジスタ）に入力し、一定のデータ（例えば８ビット）ごとに出力する。この出力されたデータがコマンドとしてサブ基板２０のＣＰＵに渡され、解釈・実行される。
【０１００】
＜サブ基板＞
サブ基板２０には液晶表示装置の制御用の液晶制御基板２００、スピーカ基板２０１、ＬＥＤ基板２０２などの周辺基板（ローカル基板）が接続されている。さらに、可動体５０を制御する可動体制御部６０が接続されている。
【０１０１】
また、遊技者により操作される操作部ＰＡＮの出力が接続されている。操作部ＰＡＮは、例えばジョグダイヤルである。操作部ＰＡＮからの信号は、図示いないＩ／Ｏを通じてサブ基板２０のＣＰＵに入力される。
【０１０２】
図６は、サブ基板２０とその周辺基板の接続の説明図である。図３に示すように、サブ基板２０には、液晶制御基板２００、スピーカ基板２０１、ＬＥＤ基板２０２、可動体制御部６０が接続されている。これらは、サブ基板２０の周辺基板と言うべきものである。
【０１０３】
これら複数の周辺基板は、図６のように接続されている（ＬＥＤ基板２０２と可動体制御部６０の表示は省略している）。すなわち、複数の周辺基板が共通のバス（通信回線、通信路）に接続され、当該バスを通じてサブ基板２０と通信を行う。当該バスを流れる信号は、パラレル信号（例えば8ビットの線で信号を伝送するもの）あるいはシリアル信号（例えば、Ｉ２Ｃ（Inter-Integrated Circuit）のようにデータ線とクロック線の２本の線で信号を伝送するもの）である。以下の説明ではシリアル通信を例にとる。なお、図５（ｃ）の例ではサブ基板２０から出た信号がサブ基板２０に戻っているが、これは一例であり、一般的なバス構造のように接続端の反対側の端が開放されていてもよい。
【０１０４】
液晶制御基板２００はＶＤＰ（Video Display Processor）を内蔵し、スピーカ基板２０１はサウンドコントローラを内蔵している。ＶＤＰとサウンドコントローラについては後に説明する。
【０１０５】
サブ基板２０から周辺基板へは、アドレスを指定してデータを送る。例えば、周辺基板としての液晶制御基板２００へデータを送る場合は、液晶制御基板２００に予め対応づけられているアドレスを指定してデータをバスに流す。液晶制御基板２００は、アドレスにより自分宛のデータであることを認識すると、アドレスに引き続くデータをラッチに取り込む。取り込んだデータに従って所定の動作を行う。取り込んだデータが、液晶制御基板２００で取得したあるいは取得可能なデータをサブ基板２０へ送信するコマンドであれば、当該データをサブ基板２０へ送信する（所定のデータ受信後は、予め定められたデータを常にサブ基板２０へ送信するようにすることもできる）。
【０１０６】
スピーカ基板２０１も、液晶制御基板２００と同様に動作する。
【０１０７】
以下の説明では、送信先を特定することなく、液晶制御基板２００、スピーカ基板２０１などの任意の送信先について適用する動作であるとき、主に「周辺基板」という用語を用いる。どの周辺基板へのデータ送信であるか特定する必要があるときは、「液晶制御基板２００」というように具体的に特定するものとする。
【０１０８】
周辺基板へのデータ送信に際して、サブ基板２０は０又は１のデータが複数集まったデータ（例えば８ビットのデータ）を単位として処理を行う。また、サブ基板２０は周辺基板へ、これに所定の動作を行わせるためのコマンド（命令）を送信するが、本明細書において上記データにはコマンドを含む。なお、コマンドは、所定ビットのひとまとまりのデータ、例えば８ビット単位のデータのセットであって、所定のコマンド体系に基づき作成されているものである。
【０１０９】
以下の説明では主に「データ」という用語を用いるが、周辺機器への命令であることを明確にするために「コマンド」という用語を用いることもある。
【０１１０】
液晶制御基板２００、スピーカ基板２０１などの周辺機器へデータを送るために、サブ基板２０はデータ送信部２０ＴＸを備える。
図７は、データ送信部２０ＴＸの内部ブロック図を示す。データ送信部２０ＴＸは、具体的には、サブ基板２０に搭載されたＲＯＭに予め書き込まれたプログラムをＣＰＵが実行することで実現される。
【０１１１】
２１０１は、周辺基板へ送信するデータを受け入れるデータレジスタ（コマンドレジスタ）である。データレジスタ２１０１は、データを受けたらすぐに送信データレジスタ２１０２へ送る。データレジスタ２１０１はひとつの単位のデータを一時的に蓄えるものである。なお、データの内容は公知であるので、送信されるデータがどのようなものであるかについての説明は省略する。
【０１１２】
２１０２は、受け入れた順番で複数のデータを記憶するとともに、受け入れた順番に従って出力する送信データレジスタである。
【０１１３】
２１０３は、送信データレジスタ２１０２からデータの出力を受けてこれを周辺基板へ送信する送信用シフトレジスタである。送信用シフトレジスタ１０３は、送信すべきデータをパラレルからシリアルへ変換する。
【０１１４】
図８は、データ（コマンド）送信とこれを受けた液晶制御基板２００とスピーカ基板２０１の動作の概略の説明図である。
サブ基板２０は、液晶制御基板２００とスピーカ基板２０１それぞれへ画像データと音声データを送る（符号ＰとＲ）。画像データを受けて液晶制御基板２００は所定の画面を表示し（符号Ｑ）、音声データを受けてスピーカ基板２０１は所定の音声を発生する（符号Ｓ）。音声に限らずＢＧＭ、効果音などその他の音響も発生するが、便宜上これらも音声に含める。音声・音声データは、音響・音響データと言える。特に断らない限り、本明細書において「音声」には、通常の意味の音声とともにＢＧＭ、効果音などその他の音響も含むものとする。
【０１１５】
また、サブ基板２０は、可動体制御部６０へ可動体５０の制御データを送る（符号ＴとＵ）。
【０１１６】
図８からわかるように、サブ基板２０によるコマンド送信−＞周辺基板によるコマンドの実行・画面表示や音声発生などの提示という流れになっている。サブ基板２０が制御できるのはどのようなコマンドをどの周辺基板へ、どのタイミングで送るということであり、画面表示や音声発生などの提示をどのタイミングで行え、ということは指定できない。このためコマンドの送信タイミングは、周辺基板ごとに適切に管理する必要がある。
【０１１７】
＜画面表示と音声発生に係る構成＞
遊技機における画面表示と音声発生に係る構成について説明を加える。以下の説明においては便宜上、メモリ上に描画されたものを画像と表示し、メモリを読み出して液晶表示装置ＬＣＤに表示すべきものを画面と表記することにする。概ね、ビットマップで表現されたキャラクタなどのオブジェクトは画像であり、オブジェクトが背景上に配置されて１枚の絵となったものは画面である。
【０１１８】
図９は、ＶＤＰの構造の概略図である。ＶＤＰは、液晶制御基板に設けられたＬＳＩであり、ＣＰＵとのインタフェースＩ／Ｆ、ＣＰＵからのコマンドに従い画像を描画する描画エンジンＥ１、描画した画像を記憶するビデオメモリＶＲＡＭ、及び、ビデオメモリＶＲＡＭに記憶された画像を読み出して液晶表示装置ＬＣＤへ送る表示エンジンＥ２を備える。これらの各要素は、内部のバスＢＵＳに接続され、相互にデータを読み書きできるようになっている。インタフェースＩ／Ｆは、ＣＰＵからコマンドなどのデータを受けるとともに、表示エンジンＥ２などからの割り込み信号をＣＰＵへ出力することもできる。このＶＤＰは、例えば、ＸＧＡサイズの解像度（1024×768ピクセルの解像度）で毎秒60フレームの描画及び表示が可能である。
【０１１９】
毎秒60フレーム（＝６０ｆｐｓ）で描画及び表示する場合、１フレームの時間は１６．６７ｍｓである。これをフレーム時間と記すことにする。また、２つの連続するフレームをＶフレームと呼ぶことにする。フレーム×２＝Ｖフレーム×１である。Ｖフレームの時間は３３．３３ｍｓであり、その画面更新レート（更新周波数）は３０ｆｐｓである。フレーム、Ｖフレームは、表示の単位及び処理の単位であるが、以下の説明においては、当該フレーム、Ｖフレームにおけるデータ、処理結果（描画された画像）、液晶表示装置ＬＣＤに表示された画像を意味することがある。例えば、Ｖフレーム１などのように数字（符号）が付されている場合は、特定のＶフレームを示すと共にこれに対応する描画データ、画像データ、表示データを意味することがある。
【０１２０】
液晶表示装置ＬＣＤの制御は、描画データ（液晶表示装置に対するコマンド、動画デコード情報などを含む）の保存、描画データに基づく描画実行、描画された画像の表示実行の３段階で行われる。すなわち、ＣＰＵがＶＤＰへ描画データを送り、ＶＤＰの描画エンジンＥ１が描画を実行し、表示エンジンＥ２が液晶表示装置ＬＤＣでの画像表示を行う。この３段階の処理はそれぞれ並列（独立）に実行される。画像表示までに３段階を要するため、ある画像が表示されているタイミング（Ｖフレーム）において、描画実行は次のＶフレームで表示されるべき画像を描画し、描画データの保存は次の次のＶフレームで表示されるべき画像を保存していることになる。その様子を図１０に示す。
【０１２１】
描画データの保存、描画実行、及び、表示実行は、ひとつのＶフレームについて１回の周期で実行判定がなされる。言い換えれば、描画データの保存（第１処理）、描画実行（第２処理）、表示実行（第３処理）は、それぞれＶフレームを単位として実行される（正確には、Ｖフレームに含まれるフレーム単位で処理が行われる、例えば、Ｖフレーム更新中にデータ入力があった場合、Ｖフレームの２つのフレームの一方において入力されたデータに係る描画データの保存、描画実行、表示実行が行われる）。したがって、本遊技機の液晶表示装置ＬＣＤの更新周波数は３０ｆｐｓである。なお、これは原則であって、ｆｐｓは処理状況に応じて変化し得る。
【０１２２】
描画データを保存してからその表示を実行するまでには、２つのＶフレームに相当する時間を要する。例えば、図１０では、符号Ｔ１で書き込んだ描画データは、それよりもＶフレーム２つ分遅れた符号Ｔ３において表示される。ただし、描画データの保存、描画実行、表示実行はそれぞれ並列に実行されるため、液晶表示装置ＬＣＤの画像はＶフレーム単位で更新される。図１０の例では、表示に関して、符号Ｔ３，Ｔ４、・・・においてＶフレーム１、Ｖフレーム２、・・・のように更新されている。
【０１２３】
図１１は、サウンドコントローラＳＣの内部ブロック図を示す。同図は概念図であり、動作の説明に必要な部分のみを示している。
【０１２４】
ＳＣ１は、予め再生の順番が定められ、続けて再生される複数のサウンドデータを含むフレーズデータを予め記憶するフレーズデータ記憶部である。
【０１２５】
ＳＣ２は、フレーズデータをデコードして音響を再生するデコーダである。デコーダは、所定のサウンドデータ（例えばＷＡＶ）を音響に戻すものであり、この処理は公知であるので説明は省略する。
【０１２６】
ＳＣ３は、デコーダＳＣ２で再生された音響の音量を調整する音量調整部である。音量調整部ＳＣ３はデジタル又はアナログ回路で構成される。その入力がデジタル信号のときはデジタル回路、例えば乗算器で構成され、ボリュームの値を音響デジタルデータに乗算することで音量を調整する。その入力がアナログ信号のときはアナログ回路、例えば増幅器で構成され、当該増幅器の増幅率（可変抵抗器）を変えることで音量を調整する。音量調整部ＳＣ３の出力はスピーカＳＰへ送られる。
【０１２７】
図１２（ａ）はフレーズデータ記憶部ＳＣ１の記憶内容の概略を示すものである。演出Ａ，Ｂ，Ｃ，Ｄ，・・・のように複数の演出があるときそれぞれに対応してサウンドフレーズ（音声データ）を記憶している。サウンドフレーズの数には上限があり、例えば２５５個のサウンドフレーズを記憶することができる。
【０１２８】
図１２（ｂ）は演出Ａの音声データ（例えばＷＡＶ）の構造を示すものである。演出Ａは３つのサウンド、すなわち第１サウンド（カットイン音）、第２サウンド（キャラボイス）、第３サウンド（発展音）から構成されている。
【０１２９】
カットイン音とは、あるショット（場面）に別のショットを挿入するカットインに対応付けられているサウンドである。キャラボイスとは、画面に表示されているキャラクタの台詞のサウンドである。発展音とは、演出の最後に、別の演出に発展する場合に加えられるサウンドである。
【０１３０】
サブ基板２０はスピーカ基板２０１へ、例えば図１２（ｂ）の演出Ａのカットイン音を再生するデータ、キャラボイスを再生するデータ、発展音を再生するデータをそれぞれ送信する。これら３つのデータ（コマンド）を受けて、サウンドコントローラＳＣが所定のサウンドを発生する。
【０１３１】
＜可動体＞
図１３は、本実施の形態に係る可動体５０の概略図である。同図（ａ）は上面図、同図（ｂ）は正面図、同図（ｃ）はＢ−Ｂ矢視断面図、同図（ｄ）はＡ−Ａ矢視断面図である。なお、同図ではステッピングモータ５４を含む駆動部と、インデックス５６及びインデックスセンサ５７は右側のシャッター５１Ｒにのみ示されているが、同じものが左側のシャッター５１Ｌについても設けられている（左側のものについての図示は省略されている）。
【０１３２】
可動体５０は、左側のシャッター５１Ｌ及び右側のシャッター５１Ｒと、シャッター５１Ｌ及び５１Ｒの上端及び下端をそれぞれ摺動自在に保持する上側のレール５２Ｕ及び下側のレール５２Ｌと、可動体５０の内側に下側のレール５２Ｌと平行に設けられたラック５３ａと、これにかみ合うピニオン５３ｂと、ピニオン５３ｂがその回転軸に直接あるいは図示しない減速歯車機構を介して取り付けられたステッピングモータ５４と、右側のシャッター５１Ｒの内側に取り付けられたブラケット５５（腕金・張り出し金具であるブラケット５５はステッピングモータ５４の取り付け台座でもある）と、右側のシャッター５１Ｒの内側に取り付けられたインデックス５６と、インデックス５６を検知するインデックスセンサ５７とを備える。同図では、ピニオン５３ｂ〜インデックス５６を右側のシャッター５１Ｒについて示しているが、左側のシャッター５１Ｌについても同様の構造であり、その説明は省略する。
【０１３３】
同図（ｂ）は、シャッター５１Ｌ及び５１Ｒをそれぞれ両側へ一杯に開いた状態をしめしており、同図の例では当該状態においてインデックスセンサ５７はインデックス５６を検知する。インデックスセンサ５７は、例えばフォトインタラプタのような光学式あるいはマイクロスイッチのような接触式などのセンサである。シャッター５１Ｌ及び５１Ｒの移動可能な範囲は同じであり、中間点までしか移動できない。同図（ｂ）の０、５０、１００の数字は移動範囲を示す。シャッター５１Ｌは左側の０から中央の１００まで移動可能であり、シャッター５１Ｒは右側の０から中央の１００まで移動可能である。そして、インデックスセンサ５７は、シャッター５１Ｌ、５１Ｒが「０」の位置に来たことを検知するものである。すなわち、図１４（ａ）に示すように、シャッター５１Ｌ、５１Ｒが一杯に開いたとき（下限に達したとき）にその端が「０」の位置にあり、図１４（ｂ）に示すように、シャッター５１Ｌ、５１Ｒが完全に閉じたとき（上限に達したとき）にその端が「１００」の位置にある。シャッター５１Ｌ、５１Ｒが完全に閉じると、液晶表示装置ＬＣＤは全く見えなくなる。
【０１３４】
ラック５３ａとピニオン５３ｂは、回転力を直線の動きに変換する機構である。ピニオン５３ｂは小口径の円形歯車であり、ラック５３ａは平板状の棒に歯切りをした（歯がつけられた）ものである。ステッピングモータ５４によりピニオン５３ｂに回転力を加えると、シャッター５１Ｌ，５１Ｒがラック５３ａ上を水平方向に動く。図１３によれば、ラック５３ａは可動体５０のフレームに固定され、ステッピングモータ５４はブラケット５５によりシャッター５１Ｌ，５１Ｒに取り付けられているから、シャッター５１Ｌ，５１Ｒのほうが動く。
【０１３５】
ステッピングモータは、回転子（ロータ）として歯車状の鉄心あるいは永久磁石を備え、固定子（ステータ）として複数の巻線（コイル）を備え、電流を流す巻線を切り替えることによって回転動作させるものである。すなわち、固定子の巻線に電流を流して磁力を発生させ、回転子を引きつけることで回転するものである。回転軸を指定された角度で停止させることが可能なことから、スロットマシンのリールの回転駆動に使用されている。複数の巻線がひとつの相を構成する。相の数として、例えば、２つ（二相）、４つ（４相）、５つ（５相）のものもある。ステッピングモータのコイルに所定の順番で電流を流すことでモータの軸は回転し、逆の順番で電流を流すとモータの軸は逆回転する。
【０１３６】
図１５は、可動体制御部のブロック図である。
【０１３７】
６１は、駆動信号生成部６３によりステッピングモータ（駆動部）５４へ与えられる駆動信号に基づきシャッター（可動要素）５１Ｌ，５１Ｒの位置情報（プログラム上の位置情報）を算出する位置情報算出部である。例えば、シャッター５１Ｌ，５１Ｒをプラス方向へ単位距離だけ動かすパルス信号（ステッピングモータ５４の複数のコイルに順番に電流を流すための信号）がステッピングモータ５４に与えられたとき、現在の位置情報を＋１する。マイナス方向のパルス信号のときは、現在の位置情報を−１する。
【０１３８】
６２は、シャッター（可動要素）５１Ｌ，５１Ｒの目標位置を設定する目標位置設定部である。ステッピングモータ５４は、シャッター５１Ｌ，５１Ｒを目標位置まで動かし、そこに到達したら停止する。
【０１３９】
６３は、目標位置設定部６２の目標位置と位置情報算出部６１の位置情報を比較し、この比較結果に基づきシャッター（可動要素）５１Ｌ，５１Ｒを目標位置へ移動させるための駆動信号を生成する駆動信号生成部である。例えば、現在の位置情報が目標位置よりも小さいとき、シャッター５１Ｌ，５１Ｒをプラス方向へ動かすパルスを生成し、逆に大きいときマイナス方向へ動かすパルスを生成する。
【０１４０】
６４は、位置情報算出部６１の位置情報の算出の基準となる最初の値として、上限よりも大きな値（例えば「２００」）又は下限よりも小さな値（例えば「−５０」）を設定する位置情報初期設定部である。
【０１４１】
シャッター（可動要素）５１Ｌ，５１Ｒに対する制御を開始する際において、その目標位置は、インデックスセンサ５７からインデックス信号が出力される位置（上記例では「０」）に設定されるとともに、位置情報算出部６１の位置情報は、その算出の基準となる最初の値として上限（上記例では「１００」）と下限（上記例では「０」）の範囲外である値（例えば「２００」「−５０」）に設定される。これに従い、シャッター５１Ｌ，５１Ｒはインデックス信号が出力される位置へ向けて移動させられる。そして、インデックス信号が出力されたときに、位置情報算出部６１の位置情報は予め定められた初期値（上記例では「０」）に設定される。
【０１４２】
図１６は、図１３の可動体演出処理のフローチャートである。
【０１４３】
図４で示した遊技のフローチャートに従えば、スタートスイッチ押下後の同図のＳ２からＳ７の範囲で可動体５０による演出が行われる。この期間において所定の条件が揃うと、図１６の処理が起動される。
【０１４４】
Ｓ１０：可動体制御部６０がサブ基板１０から可動体演出に係る開始コマンドを受ける。
【０１４５】
Ｓ１１：可動体５０の動作内容を決定する。すなわち、可動要素５１Ｌ，５１Ｒの移動先（目標位置）を決定する。
【０１４６】
Ｓ１２：可動体駆動処理を行う。
【０１４７】
Ｓ１３：可動体演出を中止させるための割り込みの有無を判定する。当該割り込みが発生したら（ＹＥＳ）、ただちに可動体演出を中止する。
【０１４８】
次遊技に係るメダル投入が行われたとき、可動体演出は中止される。
可動体の演出が１回の遊技に対応付けられている場合には、可動体演出の中止に伴い初期化動作を行い、可動体を初期位置（例えば０）に戻す。
【０１４９】
Ｓ１４：可動体の動作が終了したかどうか判定する。プログラム上の位置情報が目標位置になったとき（ＹＥＳ）、その動作を終了する。そうでないとき（ＮＯ）、可動体駆動処理Ｓ１２を繰り返す。
【０１５０】
＜周辺基板の制御におけるメイン処理と割込処理の関係＞
サブ基板が周辺基板である可動体制御部６０を制御する場合、可動体５０の制御対象であるモータやソレノイドなどに対して、サブ基板２０からの図６の通信系を介して可動体制御部６０へコマンドを送る。
【０１５１】
周辺基板に対して、具体的には次のような処理を行う。
・動作させたい制御内容の動作テーブル（制御データ）のポインタを設定する。
・設定されたポインタからそのテーブルの終端まで実行する。また、動作状況に応じて変化する動作状況テーブル（例えばモータテーブル）を更新する。テーブルの処理を実行中にポインタが再設定された場合には、再設定された設定ポインタに実行を切り替える。
・テーブル更新状態を確認し、データテーブルのポインタ再設定などを行う。
【０１５２】
上記処理を行うに際して、プログラムのメインルーチン（メイン処理）と割込処理ごとに役割を分担させている。この概念を図１７に示す。この図は可動体の制御について示している。他の周辺基板についても同様である（周辺基板からサブ基板へのフィードバックがない場合もある）。実線は処理を示し、点線はパラメータを示す。図１７の処理の全部がサブ基板２０で行われること、その一部が周辺基板で行われることのいずれもある。
【０１５３】
なお、メイン処理の処理間隔である第１周期と、割込処理の処理間隔である第２周期とは異なることが多い。例えば、第１周期＞第２周期であり、一例として、第１周期＝３３．３ｍｓ（３０ｆｐｓ）、第２周期＝２．０８ｍｓ（４８０ｆｐｓ）である。
【０１５４】
ＰＰ１は、メイン処理から割込処理へのパラメータであり、解析実行すべき動作テーブルのアドレスを指定するテーブル設定ポインタである。割込処理はそのポインタに従って当該動作テーブルを解析し、当該動作テーブルの終端に到達するか、又は、次の動作テーブルの指定が行われるまで動作を継続する。
【０１５５】
ＭＰ１は、テーブル設定ポインタＰＰ１を指定するメイン処理である。
【０１５６】
ＩＰ１は、テーブル設定ポインタＰＰ１を受けて行われる割込処理である。
【０１５７】
ＰＰ２は、割込処理からメイン処理へのパラメータであり、周辺基板での動作状態を示すモータテーブル更新状態である。これは、割込処理で可動体５０の動作状況をメイン処理に伝えるためのステータス情報である。メイン処理はそのステータスを確認し、必要に応じて動作テーブルの再指定、動作の停止などの指示を行う。更新状態の一部（動作フラグ関係）は、動作テーブルの制御命令によりメイン処理側で操作可能である。
ＩＰ２は、モータテーブル更新状態を更新するための割込処理である。
ＭＰ２は、モータテーブル更新状態ＰＰ２を受けて行われるメイン処理である。
【０１５８】
＜複数の周辺基板間の動作の同期、可動体と液晶表示の同期を例として（その１）＞
複数の周辺基板間で動作を一致させて行う演出がある。例えば、画面の変化に合わせて可動体５０を動かすといったものである。図１０に示したように、液晶表示装置ＬＣＤに画像を表示する際には２フレーム（６６．６ｍｓ）程度の遅延が生じる。このため、液晶表示の画面と可動体５０の動作について同期を取るためには、前記遅延に応じて処理を遅延させることが必要である。
【０１５９】
図１８は、本実施の形態に係る遊技機のブロック図を示す。同図は複数の周辺基板間で動作の同期をとるための構成を示す。
【０１６０】
２００１は、少なくとも２つの第１周辺基板及び前記第２周辺基板（例えば液晶制御基板２００と可動体制御部６０）を制御するための第１制御データ及び第２制御データ（動作テーブル）を設定する制御データ設定部である。これは例えば図１７のモータ動作テーブル設定ＭＰ１に相当する。制御データ設定部２００１そのものは公知であるので、その詳しい説明は省略する。
【０１６１】
２００２は、予め定められた第１周期Ｔ１で第１制御データを解析し、この解析結果に基づき第１周辺基板（例えば液晶制御基板２００）に予め定められた動作を行わせる第１解析部である。第１解析部２００２そのものは公知であるので、その詳しい説明は省略する。
【０１６２】
２００３は、複数の記憶素子（レジスタ）２００３Ｒ−１〜２００３Ｒ−３、これらの制御を行う遅延制御部２００３Ｃとを含み、第１周期Ｔ１に基づき第２制御データの伝送を遅延させる遅延処理部である。複数の記憶素子２００３Ｒ−１〜２００３Ｒ−３は先入れ先出しバッファを構成する。遅延処理部２００３は、典型的にはシフトレジスタやＦＩＦＯである。なお、記憶素子の数は３つに限らず、任意である。
【０１６３】
記憶素子２００３Ｒ−１を「入口端の記憶素子」、記憶素子２００３Ｒ−３を「出口端の記憶素子」と記すことがある。
【０１６４】
２００４は、予め定められた第２周期Ｔ２で第２制御データを解析し、この解析結果に基づき第２周辺基板（例えば可動体制御部６０）に予め定められた動作を行わせる第２解析部である。これは例えば図１７の設定ポインタ確認ＩＰ１である。第２解析部２００４そのものは公知であるので、その詳しい説明は省略する。
【０１６５】
２００５は、予め定められたエラー信号を受信するエラー信号受信部である。エラー信号受信部２００５は、少なくとも第２周辺基板（例えば可動体制御部６０）の動作を直ちに停止させる必要のあるエラーに係る信号を受信する。例えば、遊技中に遊技機の前扉が開くことは不正行為などの異常状態に相当するからエラー信号が発生し、遊技機の動作を停止させる必要がある。この種のエラーとしてエラー処理部１７００により生成されるものがあるが、これ以外のものであってもよい。
【０１６６】
２００６は、第１周期Ｔ１に係るタイミング信号を発生する第１タイマである。例えば、第１周期Ｔ１＝３３．３ｍｓ（３０ｆｐｓ）又は１６．７ｍｓ（６０ｆｐｓ）である。
【０１６７】
２００７は、第２周期Ｔ２に係るタイミング信号を発生する第２タイマである。例えば、第２周期Ｔ２＝２．０８ｍｓ（４８０ｆｐｓ）である。
【０１６８】
制御データ設定部２００１〜第２タイマ２００７は、例えばサブ基板２０のＣＰＵが所定のプログラムを実行することで実現される。あるいは専用ＩＣやメモリなどのハードウエアにより実現される。
【０１６９】
図１８の装置（特に遅延処理部２００３）の通常動作（エラー信号を受信しないときの動作）について、図１９及び図２０を参照して説明を加える。
【０１７０】
図１９及び図２０は、制御データの入出力と記憶素子２００３Ｒ−１〜２００３Ｒ−３における制御データの動きを模式的に説明した図面である。四角の中のＡ、Ｂは制御データを示す。制御データは図面の上側から入力され、下側に出力される。最下段の四角は第２解析部２００４を示し、ここに示される制御データＡ，Ｂが解析され実行される。（ａ）〜（ｆ）は時間の経過にしたがった状態を示し、（ａ）が過去で（ｆ）が未来を示す。
【０１７１】
図１９は制御データがひとつ（Ａのみ）の例であり、図２０は制御データが２つ（ＡとＢ）の例である。丸印は制御データの書き込みを示し、菱形は制御データの解析・実行を示す。
【０１７２】
図１９（ａ）において、時刻ｔ０で制御データＡが記憶素子２００３Ｒ−１に書き込まれる。書き込みのタイミングは任意であり、第１タイマ２００６、第２タイマ２００７の周期とは必ずしも同期していない。この状態が、次の第１タイマ２００６の周期まで保持される（図１９（ｂ））。なお、ｔ１−ｔ０＜Ｔ１である。
【０１７３】
図１９（ｃ）において、時刻ｔ２で制御データＡが隣の記憶素子２００３Ｒ−２に移動する。このタイミングは第１タイマ２００６の周期と同期している。すなわち、ｔ２＝ｔ１＋Ｔ１である。
【０１７４】
図１９（ｄ）において、時刻ｔ３で制御データＡが出口端の記憶素子２００３Ｒ−３に移動する。ｔ３＝ｔ２＋Ｔ１である。この状態で第２解析部２００４は制御データＡを取得し解析することができる（図１９（ｅ））。第２解析部２００４が制御データＡを取得するタイミングは、第２タイマ２００７の周期に同期している。例えばｔ４＝ｔ３＋Ｔ２である。
【０１７５】
以上の説明からわかるように、制御データは２×Ｔ１＋αだけ遅延することになる（αは図１９（ａ）から（ｂ）までの時間＝ｔ１−ｔ０と、（ｄ）から（ｅ）までの時間Ｔ２の和）。記憶素子の数を増やせば遅延量は増加する。
【０１７６】
説明の便宜上、以下において上記＋αの表示は基本的に省略し、特に断らない限り遅延量を単に２×Ｔ１のように表記することにする。
【０１７７】
図２０では２つの制御データＡとＢが書き込まれるが、動作は図１９と異ならない。斜めの矢印の部分の時間間隔はＴ１である。なお、図１９（ｅ）で示したように、第２解析部２００４が制御データを取得するタイミングは、第２タイマ２００７の周期に同期しているが、説明の便宜上、図２０（ｅ）の表示において第１周期Ｔ１と第２周期Ｔ２を区別していない。
【０１７８】
制御データＡ、Ｂはそれぞれ所定の遅延量だけ遅延され、書き込まれた順番で出力されている。
【０１７９】
図２１は、エラー信号受信部２００５でエラー信号を受信したときの動作の説明図である。図中、Ｅはエラー制御データあるいはエラー処理を示す。
【０１８０】
通常の制御データＡについての動作は図１９の場合と同じであるが、エラーを受信したときの動作が全く異なる。すなわち、エラー信号受信部２００５が出力するエラー制御データは直ちに第２解析部２００４に渡され、エラー処理が即時に実施される。これは、エラー処理に関しては即時性が要求され、他の周辺基板（液晶制御基板２００）と同期をとる必要がないからである。
【０１８１】
この即時性を実現するためにエラー制御データに関しては、通常の制御データとは異なる処理を行う。例えば、エラー制御データを出口端の記憶素子２００３Ｒ−３に上書きする。あるいは、第２解析部２００４に直接入力する（図２１（ｅ））。
【０１８２】
即時性を実現するための上記手法は、図２１のように、制御データが出口端の記憶素子２００３Ｒ−３にしかなくエラー制御データで上書きされるとき、あるいは記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれにもないときにおいては問題なく適用できる。
【０１８３】
しかし、そうでない場合は問題が生じる。このことを図２２を参照して説明を加える。この例では２つの制御データＡとＢが存在しており、第２解析部２００４が制御データＡを処理中にエラー信号受信部２００５がエラー信号を受信したとしている。エラー制御データが第２解析部２００４に直接入力されるのでエラー処理が直ちに実行される（図２２（ｆ））。しかし、次の第１周期Ｔ１又は第２周期Ｔ２で出口端の記憶素子２００３Ｒ−３に存在した制御データＢが第２解析部２００４により取得され、エラー処理が中断してしまう（図２２（ｇ））。図２２によれば、エラー処理はごく短時間（第１周期Ｔ１又は第２周期Ｔ２）だけ実行されるに過ぎない。エラー処理は即時性とともに、リセットされるまでエラー状態を保持するという状態保持性も併せて求められるから、即時性を実現するための上記手法をそのまま採用することができない。
【０１８４】
なお、エラーが発生しないときは、図１８の構成により複数の周辺基板間で動作を一致させ、演出にズレを生じさせないようにできる。例えば、画面の変化に合わせて可動体５０を動かすような場合において、可動体制御データを遅延させることにより、画面が半分変化したときに可動体５０を半分だけ動かし、画面が全部変化したときに可動体５０を全部動かす（シャッターを全開するなど）といった動作について正確に同期を取ることができる。液晶表示装置ＬＣＤに画像を表示する際には２フレーム（６６．６ｍｓ）程度の遅延が生じ、この遅延は可動体５０の制御における遅延よりも大きいから、可動体の制御を遅延処理部２００３で遅延させるようにする。遅延の量は記憶素子２００３Ｒの数で調整することができる。図１８によれば次に述べる手法によりエラー処理の即時性とともに、複数の周辺基板間での演出動作の同期を取るようにできる。
【０１８５】
そこで、本実施の形態に係る遊技機では、図２３に示す手法を採用している。すなわち、記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれかに制御データが存在しているとき（図２３（ｂ）〜（ｅ））、当該制御データの後ろ（好ましくは直後）にエラー制御データを書き込むようにする（図２３（ｆ））。こうすることで、図２２（ｇ）のようなエラー制御データが通常の制御データで上書きされることがなくなり、状態保持性を実現することができる。
【０１８６】
なお、図２３の手法においては、エラー制御データの書き込みからその解析・実行までに若干の時間を要し、即時性がやや損なわれている。図２３の例では書き込みから解析・実行までにはｔ２４−ｔ１５＝Ｔ１＋Ｔ２程度の時間を要する。
【０１８７】
図２３の手法は厳密な即時性を要求されないエラーについて適用することができる。言い換えれば、図２３の手法は処理が簡単で効果が確実であり、厳密な即時性を要求されないエラーについて好適な形態であると言える。
【０１８８】
図１９〜図２１及び図２３の処理を実現するための、遅延制御部２００３ｃの動作について説明を加える。下記（１．３）〜（１．５）の処理については、図２４のフローチャートも参照されたい。
【０１８９】
（１．１）
設定された制御データ（第２解析部２００４用の第２制御データ）を入口端の記憶素子２００３Ｒ−１に書き込む（図１９（ａ）、図２０（ａ）（ｃ）、図２１（ａ）、図２３（ａ）（ｃ））。
【０１９０】
（１．２）
第１周期Ｔ１に基づき記憶素子２００３Ｒ−１、２００３Ｒ−２が記憶している制御データをそれぞれ出口側の記憶素子へ移動させる（図１９（ａ）〜（ｄ）、図２０（ａ）〜（ｅ）、図２１（ａ）〜（ｃ）、図２３（ａ）〜（ｇ））。この動作はエラー制御データについても同様である。
【０１９１】
出口端の記憶素子２００３Ｒ−３の制御データを第２解析部２００４へ送る（図１９（ｅ）、図２０（ｅ）（ｆ）、図２１（ｄ）、図２３（ｅ）（ｇ））。
【０１９２】
（１．３）
エラー信号を受けたとき、新しい通常の制御データの書き込みを中止する（図２４のＳ２０）
【０１９３】
記憶素子２００３Ｒ−１〜２００３Ｒ−３の状態を調べ（図２４のＳ２１）、制御データを記憶しているかどうか判定する（図２４のＳ２２）。
【０１９４】
（１．４）
記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれもが制御データを記憶していない場合は（図２４のＳ２２でＮＯ）、エラー信号に対応する動作を行わせるためのエラー制御データを第２解析部２００４へ送る（図２４のＳ２８、図２１（ｅ））。第２解析部２００４が通常の制御データの処理中であるときに、その解析中の動作を取り消して即時にエラー制御データの解析を行わせるようにしてもよい。
【０１９５】
（１．５）
記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれかが制御データを記憶している場合は（図２４のＳ２２でＹＥＳ）、制御データを記憶している記憶素子のうちで最も入口側のもの（最後尾の記憶素子）を特定する（図２４のＳ２３、図２３の２００３Ｒ−３）。当該最後尾の記憶素子よりも入口側の記憶素子（図２４のＳ２６、図２３の２００３Ｒ−２）にエラー制御データを書き込む。第１周期に基づきシフト動作を行い、第２解析部２００４にエラー処理を行わせる（図２４のＳ２７）。
【０１９６】
最後尾の記憶素子が２００３Ｒ−１の場合はエラー制御データを書き込めないから、シフト動作を待ち、記憶素子２００３Ｒ−１が空くのを待ってからそこにエラー制御データを書き込む（図２４のＳ２４でＹＥＳ、Ｓ２５）。
【０１９７】
本実施の形態に係る遊技機によれば、先入れ先出しバッファを用いて複数の周辺基板間の同期を取る場合であっても、エラー処理を適切に行うことができる。すなわち、即時性と状態保持性を両立させることができる。
【０１９８】
例えば、演出Ａ，Ｂ，Ｃの順で実行予定の演出があり、演出Ｂの実行中にエラーが発生した場合、実行していた演出Ｂに代えてエラーが表示されるが、バッファには依然として演出Ｃが残っているため、演出Ｂの実行時間が終了するとエラー表示の実行も終わった時点で、内部的にはエラーであるのにもかかわらず演出Ｃが実行される、という不具合を回避することができる。
また、前記（４）において、前記第２解析部に対して、解析中の動作を取り消して即時に前記エラー制御データの解析を行わせることにより、エラー報知を即時に行うことができる。このやり方は即時性が求められるエラーについて特に有効である。
また、前記（５）において、前記最後尾の記憶素子が前記入口端の記憶素子であるとき、上記（２）の後に、前記入口端の記憶素子に前記エラー制御データを書き込むことのより、ＦＩＦＯがフルの場合でも適切に処理することができる。いわゆるバッファオーバーフローを起こすことなくエラー処理を行うことができる。
【０１９９】
＜複数の周辺基板間の動作の同期、可動体と液晶表示の同期を例として（その２）＞
上記例とは処理内容が異なる本実施の形態について説明を加える。この例は、機能ブロック図（図１８）、基本的な動作説明図（図１９、図２０）は異なることがないので、これらを参照する。
【０２００】
この本実施の形態に係る遊技機では、図２５に示すように、記憶素子２００３Ｒ−１〜２００３Ｒ−３に対して、そこに制御データが存在している／いないにかかわらず、エラー制御データを書き込む（上書きする）ようにする（図２５（ｆ））。こうすることで、図２２（ｇ）のようなエラー制御データが通常の制御データで上書きされることがなくなり、状態保持性を実現することができる。
【０２０１】
図２５の手法においては、エラー制御データの書き込みからその解析・実行までに要する時間は最小Ｔ２〜最大Ｔ１であり、即時性の点で優れている。図２３の例では書き込みから解析・実行までにはｔ２４−ｔ１５＝Ｔ１＋Ｔ２程度の時間を要していたが、これよりＴ１だけ短くなる。
【０２０２】
図２５の手法は即時性を要求されるエラーについても適用することができる。即時性の要求されるエラーについて好適な形態であると言える。
【０２０３】
また、図２６に示すように、エラー信号を受けたとき第２解析部２００４へ直接エラー制御データを送り直ちに実行させるようにすれば、即時性をさらに高めることができる。図２６の手法によれば、エラー制御データの書き込みからその解析・実行までに要する時間はＴ２程度である。図２６の手法は、第２解析部２００４に対して解析中の動作を取り消して即時に前記エラー制御データの解析を行わせることができる場合に適用できる。
【０２０４】
図２５の処理を実現するための、遅延制御部２００３ｃの動作について説明を加える。なお、前述の（１．１）と（１．２）の処理は、図２５の場合も同じであるのでその説明は省略する。下記（２．３）の処理については、図２７のフローチャートも参照されたい。
【０２０５】
（２．３）
エラー信号を受けたとき、新しい通常の制御データの書き込みを中止する（図２７のＳ３０）
【０２０６】
記憶素子２００３Ｒ−１〜２００３Ｒ−３に対してエラー制御データを書き込む（上書き）する（図２７のＳ３１）。
図２６の手法では、エラー制御データを第２解析部２００４へ送る。
【０２０７】
第１周期に基づきシフト動作を行い、第２解析部２００４にエラー処理を行わせる（図２７のＳ３２）。
図２５の例では第２解析部２００４にエラー制御データが３回与えられ、図２６の例では４回与えられる。第２解析部２００４は繰り返しエラー制御データを受けると、前回のエラー動作をキャンセルし、エラー動作を最初から実行するようになるが、エラー状態は保持されるので問題はない。
【０２０８】
本実施の形態に係る遊技機によれば、先入れ先出しバッファを用いて複数の周辺基板間の同期を取る場合であっても、エラー処理を適切に行うことができる。すなわち、即時性と状態保持性を両立させることができる。
【０２０９】
この本実施の形態は、即時性の点で優れるとともに、その処理に条件分岐を用いていないのでプログラムを簡単にできるとともに、その容量の削減と処理速度の向上を実現することができる。
【０２１０】
＜複数の周辺基板間の動作の同期、可動体と液晶表示の同期を例として（その３）＞
上記例とは処理内容が異なる本実施の形態と異なる他の形態について説明を加える。この例においても、機能ブロック図（図１８）、基本的な動作説明図（図１９、図２０）及び制御データが記憶されていないときの動作説明図（図２１）は異なることがないので、これらを参照する。
【０２１１】
この本実施の形態に係る遊技機では、図２８に示すように、エラー信号受信時に、バッファ内の書き込み領域のうち、最先で出力される領域である記憶素子２００３Ｒ−３に対して、エラー解除されるまでエラー処理データを書き込み続けるようにする。こうすることで、図２２（ｇ）のようなエラー制御データが通常の制御データで上書きされることがなくなり、状態保持性を実現することができる。
【０２１２】
図２８の手法においては、エラー制御データの書き込みからその解析・実行までに要する時間は最小Ｔ２〜最大Ｔ１であり、即時性の点で優れている。図２３の例では書き込みから解析・実行までにはｔ２４−ｔ１５＝Ｔ１＋Ｔ２程度の時間を要していたが、これよりＴ１だけ短くなる。
【０２１３】
図２８の手法は即時性を要求されるエラーについても適用することができる。即時性の要求されるエラーについて好適な形態であると言える。
【０２１４】
また、図２１に示すように、エラー信号を受けたとき第２解析部２００４へ直接エラー制御データを送り直ちに実行させるようにすれば（図２９のＳ４６）、即時性をさらに高めることができる。この手法によれば、エラー制御データの書き込みからその解析・実行までに要する時間はＴ２程度である。この手法は、第２解析部２００４に対して解析中の動作を取り消して即時に前記エラー制御データの解析を行わせることができる場合に適用できる。
【０２１５】
図２８の処理を実現するための、遅延制御部２００３ｃの動作について、図２９のフローチャートを参照しつつ説明を加える。
【０２１６】
Ｓ４０：エラー信号を受けたとき、新しい通常の制御データの書き込みを中止する。
【０２１７】
Ｓ４１：記憶素子２００３Ｒ−１〜２００３Ｒ−３の状態を調べる。
【０２１８】
Ｓ４２：制御データを記憶しているかどうか判定する。
【０２１９】
Ｓ４７：記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれもが制御データを記憶していない場合は（Ｓ４２でＮＯ）、エラー信号に対応する動作を行わせるためのエラー制御データを第２解析部２００４へ送る（図２１（ｅ））。第２解析部２００４が通常の制御データの処理中であるときに、その解析中の動作を取り消して即時にエラー制御データの解析を行わせるようにしてもよい。
【０２２０】
Ｓ４３：記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれかが制御データを記憶している場合は（Ｓ４２でＹＥＳ）、出口端の記憶素子２００３Ｒ−３にエラー制御データを書き込む。
【０２２１】
Ｓ４４：第１周期に基づきシフト動作を行い、第２解析部２００４にエラー処理を行わせる。
【０２２２】
Ｓ４５：記憶素子２００３Ｒ−１〜２００３Ｒ−３の状態を調べる。
【０２２３】
Ｓ４６：制御データを記憶しているかどうか判定する。記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれもが制御データを記憶していない場合は（ＮＯ）、図２２（ｇ）のような状態は発生せずエラー信号が取り消されることがないから、エラー信号受信時の処理を中止する。
【０２２４】
記憶素子２００３Ｒ−１〜２００３Ｒ−３のいずれかが制御データを記憶している場合は（ＹＥＳ）、Ｓ４３〜Ｓ４５の処理を繰り返す。
【０２２５】
第２解析部２００４は繰り返しエラー制御データを受けると、前回のエラー動作をキャンセルし、エラー動作を最初から実行するようになるが、エラー状態は保持されるので問題はない。エラー制御データの書き込みを繰り返すことで、エラー状態を確実に維持することができる。
【０２２６】
本実施の形態に係る遊技機によれば、先入れ先出しバッファを用いて複数の周辺基板間の同期を取る場合であっても、エラー処理を適切に行うことができる。すなわち、即時性と状態保持性を両立させることができる。
【０２２７】
この本実施の形態は、即時性の点で優れる。また、エラー制御データの書き込み先が出口端の記憶素子のみであるので、全ての記憶素子に書き込む場合と比べて迅速かつ確実に行なえ、処理速度と信頼性の向上を実現することができる。
＜条件分岐を用いないチャタリング除去＞
【０２２８】
遊技機内に設けられているメイン基板１０、サブ基板２０は、各種センサや遊技者が操作するスイッチなどの出力信号などを受けている。そして、センサやスイッチなどの出力信号に基づき、上述したような遊技処理を行っている。例えば、サブ基板２０は操作部（ジョグダイヤル）ＰＡＮの回転を検出するセンサとともにその中央に設けられた押しボタンスイッチＰＨＳＷの信号を受ける。
【０２２９】
メイン基板１０、サブ基板２０はマイコン（ＣＰＵ）を備えていて、デジタル信号に基づいて処理を行っている。そのため、前記センサやスイッチからの信号をデジタル信号に変換し、これらをデータとして扱うことで前記処理を行っている。デジタル信号は、典型的には信号レベルの高／低（Ｈ／Ｌ）にそれぞれ対応付けられた「０」「１」のデータ列である。デジタル信号のインタフェースでＩＣによく用いられているものとして、例えば、ＴＴＬ（Transistor Transistor Logic）がある。前記センサやスイッチからの信号をデジタル信号に変換するために、メイン基板１０、サブ基板２０などの基板は、前記センサやスイッチからの信号を一定時間毎にサンプリングし、その結果に基づいて「０」「１」のデータ列を生成している。
【０２３０】
前記センサやスイッチからの信号には、ノイズが含まれることがある。また、スイッチなどの機器ではその構造上の理由により、チャタリング（短時間の間にオンオフが不規則に繰り返されること）が生じることがある。これらノイズやチャタリングは不要なものであるのみならず、それらの存在によりＣＰＵが誤動作したり、意図した処理とは異なる処理を実行することもあることから、それらは除去すべきものである。
【０２３１】
ノイズやチャタリングを除去するために、従来の遊技機では、前記センサやスイッチからの信号をサンプリングしてデータ列を得るとともに、これに含まれる複数のデータ同士を比較しこれらが合致することを条件に信号の状態を確定していた。
【０２３２】
このように、一般的には、チャタリングの除去には比較処理と条件分岐命令を用いていた。
【０２３３】
比較処理（比較命令）は論理積・論理和などの演算命令と比較して処理負荷が重い。ＣＰＵの処理負荷を軽減する観点からは比較命令は用いないほうがよい。
【０２３４】
また、最近のＣＰＵはスーパースカラー(superscalar)という構造を持つものがあり、当該ＣＰＵにおいて、条件分岐命令は処理効率が悪くなるという問題がある。スーパースカラーとは、ＣＰＵのアーキテクチャの一種であり、命令レベルの並列性という並列コンピューティングの考え方をＣＰＵ内に実装したもので、複数の命令が同時に読み込まれ、ＣＰＵ内に複数設けられた処理部を使って並行して処理されるというものである。スーパースカラーのＣＰＵで複数の命令を実行したとしても、条件分岐命令によって異なる分岐ルートの命令にジャンプしてしまうと、同時に実行された他の命令が無駄になってしまう（これは「ＣＰＵのパイプラインがストールする」と呼ばれる）。このように条件分岐命令を用いると処理効率が悪くなる。
【０２３５】
本実施の形態においては、比較命令と条件分岐命令を用いることなくチャタリングを除去し、この結果、ＣＰＵの処理負荷を軽減するようにしている。
【０２３６】
図３０は、本実施の形態に係るチャタリング除去処理のフローチャートを示す。この処理では、比較処理及び条件分岐処理（判定処理）は用いられていない。
【０２３７】
図３０の処理は、短時間（入力信号のサンプリング周期と同程度又はサンプリング周期の２倍より小さい）のチャタリングを除去している。チャタリング発生時は、前回入力データが引き継がれるようになっている。
【０２３８】
例えば、ジョグダイヤルＰＡＮの操作監視としてダイヤルＪＤ回転に係るセンサＪＳ１とＪＳ２の検出と押しボタンスイッチＰＨＳＷの押下検出に関して約521μs（1920fps）毎にサンプリングを行う。この周期はサブ基板２０と周辺基板の通信プロトコルにより規定されている。図３０の処理ではチャタリングの除去を行うために約521μs毎のサンプリング結果を２回監視し、結果が一致していれば正常な信号として処理に取り込むようにしている。
【０２３９】
なお、ジョグダイヤルＰＡＮに関して、図５（ｂ）に示す２つのセンサＪＳ１とＪＳ２からの２本の入力信号から得た結果を元に左右の回転を検出するが、併せて同図の押しボタンスイッチＰＨＳＷからの１本の信号線についても処理し、合計３本の入力信号に対してチャタリング除去を行う。しかし、それらの処理は１本ごとに独立しているので、以下の説明ではそれらのいずれかひとつの処理について説明する。
【０２４０】
チャタリングの除去処理をリアルタイムで行うこともできるが、本件の操作部ＰＡＮの処理についてはリアルタイム性は要求されず、処理結果を待つだけの時間的余裕がある。また、ＣＰＵは複数のビット（８ビット、１６ビット、３２ビットなど）のデータを一度に処理をすることができるので、１本ごとの信号（１ビットの信号）についての複数回（８回、１６回、３２回など）のサンプリングデータをひとつのまとまり（ワード）として扱うようにしたほうが効率がよい。
【０２４１】
そこで、本実施の形態では、一定のデータを蓄積した後に纏めて解析を行うようにしている。例えば、解析タイミングを30fps（約33.33ms）毎とし、１本の信号あたり３２個分のデータを保持し（信号の変化は１ビット、ＯＮとＯＦＦのみ）、32bit型変数に格納するようにしている。図３０の処理は、32bit型変数の各ビットについて行われる。
【０２４２】
しかし、説明を簡単にするために、以下においては１ビットの処理を例にとり説明を加える。ＣＰＵのレジスタは１ワードの各ビットの論理演算を同時に行うようになっており、複数のビットの場合は以下の１ビットの処理を同時に行うことになる。
【０２４３】
図３０における記号について説明を加える。
【０２４４】
[S1]は、サンプリングされたデータ（１ビット）である。
[S2]は、[S1]の次にサンプリングされたデータである。
[B]は、前回の処理において得られた値（出力）である。
[Sa]は、[S1]と[S2]の論理積である。この真理値表を図３１に示す。
[So]は、[S1]と[S2]の論理和である。この真理値表を図３２に示す。
[SB]は、[Sa]と[B]の論理和である。この真理値表を図３３に示す。
[SBo]は、[SB]と[So]の論理積である。この真理値表を図３４に示す。
【０２４５】
図３５は、図３０の処理と同じ処理を行う論理回路のブロック図である。図３５はチャタリング除去部の内部構造を示す。本実施の形態はソフトウエアだけでなくＩＣなどのハードウエアでも実現できる。
【０２４６】
２１００と２１０１は、信号をサンプリングするためのラッチである。ラッチ２１０１の入力は操作部からの信号であり、この出力がラッチ２１００の入力になっている。図のようなラッチの直列接続は、サンプリングタイミングごとに信号がシフトするように動作する。ある時点で見ると、ラッチ２１０１には最新のデータ（直近のサンプリングデータ）が保持され、ラッチ２１００にはその１サンプリング前のデータが保持されている。図３６の例で言うと、ラッチ２１０１が（１３）のデータを保持しているときは、ラッチ２１００が（１２）のデータを保持している。言い換えれば、ラッチ２１００の出力はラッチ２１０１の出力に比べてサンプリング信号の１周期（図３６のＴＳ１）だけ遅れている。したがって、ラッチ２１０１の出力が[S2]であり、ラッチ２１００の出力が[S1]である。
【０２４７】
２１０２は、[S1]と[S2]の論理積を求めるＡＮＤ回路である。
２１０３は、[S1]と[S2]の論理和を求めるＯＲ回路である。
２１０４は、ＡＮＤ回路２１０２の出力[Sa]とラッチ２１０６の出力[B]の論理和を求めるＯＲ回路である。
２１０５は、ＯＲ回路２１０４の出力[SB]とＯＲ回路２１０３の出力[So]の論理積を求めるＡＮＤ回路である。ＡＮＤ回路２１０５の出力[B]が、チャタリング除去された出力である。
２１０６は、次回の処理に用いるために出力[B]を保持するラッチである。
【０２４８】
図３６は、本実施の形態に係るチャタリング除去を説明するタイミングチャートである。サンプリング間隔ＴＳ１ごとにサンプリング信号が発生され、これを単位として処理が行われる。所定の処理時間ＴＳ２の後に処理結果が出力され、チャタリング除去済みの信号が出力される。
【０２４９】
図３６ではチャタリングは発生していないが、チャタリング信号（ＴＳ１の２倍よりも短い信号）が発生したとしても、当該信号は除去されて出力側には現れない。例えば、低レベルを０、高レベルを１として、本来「００１１１１・・・」となるはずが、チャタリングにより「００１０１１・・・」となった場合、これを「００００１１・・・」とする。
【０２５０】
本実施の形態に係るチャタリング除去のロジックは、（１）２回以上連続して同じ値がサンプリングされたとき（００，１１）その値を出力し、（２）そうでないとき前回の値を出力する、というものである。図３７に当該ロジックの真理値表を示す。
【０２５１】
図３０、図３５の出力である図３４の真理値表の出力（右端）は、図３７の出力（右端）と同じであるから、図３０の処理、図３５の装置は上記ロジックを実現している。
【０２５２】
図３０及び図３５を参照して、本実施の形態に係るチャタリング除去処理について説明を加える。
【０２５３】
Ｓ５０：ＡＮＤ２１０２により[S1]と[S2]の論理積を求め、この出力を[Sa]とする。
【０２５４】
Ｓ５１ａ：ＯＲ回路２１０４により[Sa]と前回の値である[B]の論理和を求め、この出力を[SB]とする。
【０２５５】
Ｓ５１ｂ：ＯＲ回路２１０３により[S1]と[S2]の論理和を求め、この出力を[So]とする。
なお、Ｓ５１ａで使う値とＳ５１ｂで使う値は重複していないので、スーパースカラーのＣＰＵにおいてはＳ５１ａとＳ５１ｂを同時に実行することができる。また、条件分岐がないのでＣＰＵのパイプラインがストールすることもない。
【０２５６】
Ｓ５２：ＡＮＤ回路２１０５により[SB]と[So]の論理積を求め、この出力を[SBo]とする。[SBo]をチャタリング除去された信号を出力する。
【０２５７】
Ｓ５３：ラッチ２１０６により[SBo]を前回出力[B]として保持する。
【０２５８】
結局、上記処理は下記の式と同等になる。 
今回値[SBo] ＝ ( ( [S1] AND [S2] ) OR [B] ) AND ( [S1] OR [S2] )  
【０２５９】
本実施の形態によれば、条件分岐を用いる一般的な処理方法と比較して次のアドバンテージがある。
【０２６０】
（１）比較命令を使用しない為、ＣＰＵのパイプラインがストールしない。
ストールについて図３８、図３９を用いて説明する。
図３８は、条件分岐を用いる一般的なチャタリング除去のフローチャートである。図３９は処理手順を示すタイミングチャートであり、左から右へ処理が進む。図３９（ａ）は本実施の形態の処理を示し、図３９（ｂ）は図３８の処理を示す。
【０２６１】
図３８のＳ６２が条件分岐であり、サンプリングされた２つのデータを比較している。この比較結果に応じて（ＹＥＳ／ＮＯ）処理の内容が異なる（Ｓ６３又はＳ６４）。もし、スーパースカラーを活用して複数の命令Ｓ６３とＳ６４を同時に読み込んだとしても、その一方は必ず無駄になる（使用されない）。図３９（ｂ）の×印はこのことを意味する。したがって、図３８の処理はストールが発生する。せっかくのスーパースカラーを利用できない。
【０２６２】
これに対し、本実施の形態によれば、図３９（ａ）のように、相互依存関係にあるデータが互いに存在しない、[Sa]と前回の値である[B]の論理和を求めて[SB]とする処理と、[S1]と[S2]の論理和を求めて[So]とする処理を同時に行うことができ、しかもこれらの結果は破棄されることがないので、ストールは発生しない。スーパースカラーを活用できている。処理の並行実行により処理効率が向上する。
【０２６３】
（２）ＣＰＵのレジスタのビット数（例えば３２ビット）までの入力信号を同時に解析することができる。本実施の形態によれば、レジスタのビット数の範囲の数であれば、処理対象のデータが増えても処理負荷は変化せず、高い効率の処理が可能である。
【０２６４】
例えば、複数の信号を同時にサンプリングしたデータをその順番でＭＳＢからＬＳＢにかけて並べたものをレジスタＡに格納し（これが[S1]となる）、同様に次のサンプリングデータを他のレジスタＢに格納する（これが[S2]となる）。レジスタＡとレジスタＢについて、図３０のＳ５０、Ｓ５１ｂの処理を行う。他の処理もレジスタのビット数を利用して複数のデータについて同時に処理を行う。
【０２６５】
ひとつの信号について複数のサンプリング信号を同時に処理することも可能である。ひとつの信号を複数回（例えば３２回）サンプリングしたデータをその順番でＭＳＢからＬＳＢにかけて並べたものをレジスタＡに格納し（これが[S1]となる）、１サンプリング周期遅れて複数回サンプリングしたデータをその順番でＭＳＢからＬＳＢにかけて並べたものをレジスタＢに格納する（これが[S2]となる）。
【０２６６】
あるいは、[S1]をＭＳＢ方向へ１ビットシフトし、空いたＬＳＢに新たなサンプリングデータを入れたものを他のレジスタＢに格納する（これが[S2]となる）。
【０２６７】
レジスタＡとレジスタＢについて、図３０のＳ５０、Ｓ５１ｂの処理を行う。他の処理もレジスタのビット数を利用して複数のデータについて同時に処理を行う。
【０２６８】
複数のサンプリング回数に応じて、ラッチ２１０６も複数用意する。
【０２６９】
図３６ではサンプリングタイミングを示す１３個の矢印（１）、・・・（１２）、（１３）が示されているが（図面を見やすくするために（２）乃至（１１）の表示は省略している）、これを例に取れば、サンプリングデータ（１）乃至（１２）を[S1]とし、サンプリングデータ（２）乃至（１３）を[S2]とする。ビットシフトの場合も同じである。
【０２７０】
図３８の処理では、チャタリングの除去単位を１ビット単位で行い、１ビットごとに比較を行う必要がある（条件分岐があるので複数のデータを同時に処理できない)。図３８のＳ６０、Ｓ６５、Ｓ６６がこの処理に相当する。同図は８ビットのデータを処理するので処理を８回ループしている。このため処理効率が悪くなる。
【０２７１】
本実施の形態によれば、チャタリング除去方法を高速かつ低負荷なロジックで構成することにより、演算に必要なリソースを少なくすることができる。
【０２７２】
なお、上記例では新旧のサンプル情報を２つに分けて行っているが、これは必須ではない。例えば、処理の完了したデータをコピーしてビットシフトすれば、前回のものとして扱うことができる。
【０２７３】
＜ジョグダイヤル：センサの信号の確認＞
ジョグダイヤルＰＡＮの出力信号の処理手順（特に回転方向の検知判断）について説明を加える。
【０２７４】
ジョクダイヤルＰＡＮは略円筒形のデバイスであり、図５（ａ）に示すように、回転可能なリング（ダイヤルＪＤ）を備え、その中心部分には押しボタンスイッチＰＨＳＷが設けられている。ダイヤルＪＤを左右に回すことができる。押しボタンスイッチＰＨＳＷには発光素子が設けられている。ダイヤルＪＤは複数のステップ（例えばステップ数＝３０、その角度＝１２度）で回転するようになっている。
【０２７５】
図５（ｂ）に示すように、ジョクダイヤルＰＡＮは、ダイヤルＪＤの回転を検知するための２つのセンサ[1]ＪＳ１と[2]ＪＳ２（以下、表記を簡単にするためにＪＳ１、ＪＳ２の表示は省略する）を備えている。回転に応じてセンサ[1]と[2]はＨ／Ｌの２つのデジタル信号を出力するが、それらは互いに異なっている。センサ[1]と[2]の出力信号の例を図４０に示す。同図はダイヤルＪＤの回転に応じた信号の変化を示す。ノッチはステップのことであり、例えばダイヤルＪＤの１２度の回転が１ステップとなる。ダイヤルＪＤの停止位置はノッチを単位としている。すなわち、ダイヤルＪＤは図４０の点線の位置に停止、これら以外の位置では止まらない。＋、−は回転の方向を示し、例えば右回転が＋、左回転が−である（この対応関係は任意である）。また、Ｈ／Ｌの関係は逆であってもよい（正論理、負論理どちらでもよい）。
【０２７６】
図４０は、ジョグダイヤルＰＡＮの回転時の信号の、あくまで一例である。図４０とは異なるタイミングでジョクダイヤルＰＡＮの信号が変化するようにしてもよい。
【０２７７】
ジョグダイヤルＰＡＮの信号は次の性質を備えている。
【０２７８】
（１）１ノッチ（１区切り）の間に発生する各信号のエッジ変化は１回である。
エッジとはＨからＬ又はＬからＨへ変化する点のことである。Ｈ／Ｌの対応関係は任意であるので、もっぱらエッジ変化について着目する。
【０２７９】
（２）各信号は、２ノッチを単位として同じ内容を繰り返す。つまり、繰り返し周期が２ノッチである。
【０２８０】
（３）センサ［1］と［2］の信号波形のパターンは同じだが、位相ずれが存在する。したがって、センサ［1］と［2］の両方が同時にエッジ変化することはない。図４０において、このずれは左右均等ではない。ＴＺ１≠ＴＺ２である。言い換えれば、センサ［2］の信号をセンサ［1］の信号と一致するように＋方向へ移動させるとき、その移動量（ＴＺ２）は−方向へ移動させるときの移動量（ＴＺ１）とは同じになっていない。なお、ＴＺ１＝ＴＺ２であってもよい。
【０２８１】
図４０によれば、＋側に回転させた場合は以下の現象が順番に発生している。ただし、停止位置がＴＺ２の範囲にあるとする。なお、停止位置がＴＺ１の範囲にあるようにしてもよいが、この場合は下記規則のセンサ［1］とセンサ［2］が入れ替わる。
【０２８２】
（＋側現象（１））センサ［1］にエッジ変化が発生する。
（＋側現象（２））センサ［2］にエッジ変化が発生する。
【０２８３】
この規則に従い、センサ［1］、センサ［2］の順番で現象が発生したときダイヤルＪＤは＋方向へ１ノッチ回転したと認識することができる。
【０２８４】
同様に、−側に回転させた場合は以下の現象が順番に発生している。
【０２８５】
（−側現象（１））センサ［2］にエッジ変化が発生する。
（−側現象（２））センサ［1］にエッジ変化が発生する。
【０２８６】
この規則に従い、センサ［2］、センサ［1］の順番で現象が発生したときダイヤルＪＤは−方向へ１ノッチ回転したと認識することができる。
【０２８７】
ジョグダイヤルの操作方法としては、単純に同一方向に回転させる他に、左右交互に激しく動かすなど、回転方向を逆転させる操作がある。この際の信号の変化の例を図４１に示す。
【０２８８】
図４１はタイミングチャートであり、左から右へ向かって時間が経過している。チャートの中央の操作反転の位置でダイヤルＪＤの回転方向が反転する。同図の例では順回転（＋方向）から逆回転（−方向）に向きが変わっている。逆回転動作が行われた場合、必ず、直前にエッジを検出したセンサから、再度エッジを検出する。同じセンサについて逆回転の前後のエッジまでの長さ（ＧＹ１＋とＧＹ１−、ＧＹ２＋とＧＹ２−）が等しくなるからそのような現象が生じる。
【０２８９】
このように、逆回転時は、順回転時とは異なる現象が生じる。
【０２９０】
なお、遊技者が意図しなくても上記逆回転の現象が生じることがある。ダイヤルＪＤには回転時のステップ数をユーザーが把握しやすいように、ノッチと呼ばれる位置決め機構が設けられている。回転停止時はダイヤルＪＤが必ず何れかのノッチに収まっている。ダイヤルＪＤの慣性が働く関係で、回転中はユーザーが操作を停止させたその瞬間にノッチに収まっていないことがあり、このときにダイヤルＪＤがノッチに収まろうとして一瞬逆回転することがある。この際にセンサが信号を出力することがある。
【０２９１】
図４０、図４１に示す信号を出力するジョグダイヤルの回転量（回転方向を含む）を求める装置のブロック図を図４２に示す。
【０２９２】
２２０１−１は、センサ[1]を入力とし、そのエッジを検出するエッジ検出器である。
【０２９３】
２２０１−２は、センサ[2]を入力とし、そのエッジを検出するエッジ検出器である。
【０２９４】
エッジ検出器２２０１−１は、バッファ２２０１−１１、ビットシフタ２２０１−１２、バッファ２２０１−１３、排他的論理和回路２２０１−１４を含む。図示しないが、エッジ検出器２２０１−１も同じである。
【０２９５】
バッファ２２０１−１１は、センサ[1]の信号（１ビットのＨ／Ｌの信号）を一定時間ごとにサンプリングし、これをその順番で記憶する。バッファ２２０１−１１は、例えばシフトレジスタである。記憶内容の一例を図４３（ａ）に示す。複数の１ビットのデータが記憶されており、右側ＬＳＢからデータが入力され、サンプリングごとに左側にシフトされていく。右側ＬＳＢが最新のデータであり左側ＭＳＢが最も以前にサンプリングされたデータである。
【０２９６】
バッファ２２０１−１１に一定数（例えば３２個）のデータが書き込まれるとビットシフタ２２０１−１２の全てのデータを読み出すとともに１ビットシフトした上でバッファ２２０１−１３に書き込む。ビットシフタ２２０１−１２は、バッファ２２０１−１１の各データを右側（入口ＬＳＢ）方向に一つだけ移動させる。
【０２９７】
バッファ２２０１−１３は、バッファ２２０１−１１と同じ構造のメモリ（シフトレジスタ）である。ビットシフタ２２０１−１２の作用により、バッファ２２０１−１３のデータは、図４３（ｂ）のようになる。ビットシフタ２２０１−１２で右側へ一つだけシフトするので左端ＭＳＢにはデータが存在しなくなり（符号Ｘ）、図４３（ａ）の右端ＬＳＢのデータは失われる。左端ＭＳＢについて排他的論理和演算を行わないようにすれば問題がないが、次のようにすればデータを失わないようにできる。
【０２９８】
ビットシフトする前の図４３（ａ）の右端ＬＳＢのデータを図示しないメモリに記憶しておき、このデータを次回（エッジ検出処理が終わりその結果を出力した後にバッファ２２０１−１１の内容をクリアし、再びサンプリングを行いバッファ２２０１−１１が一杯になった後、再びビットシフトを行うタイミング）において、図４３（ｂ）の左端ＭＳＢ（符号Ｘ）に書き込むようにする。
【０２９９】
排他的論理和回路２２０１−１４は、バッファ２２０１−１１と２２０１−１３の各ビットについて排他的論理和を求める。これによりエッジがどこにあるか（データの変化がいつ生じたか）を知ることができる。すなわち、図４３（ｃ）の「１」の位置にエッジが存在する。
【０３００】
上述のようにすれば、エッジ検出に必要な工程は、データ取得（例えば３２サンプリング）、ビットシフト・データコピー、排他的論理和となり、複数（例えば３２回分）のデータを一括で処理することができ、１サンプリングごとに条件判定で求めるよりは、はるかに効率よくエッジ検出を行える。
【０３０１】
２２０３は、エッジ検出器２２０１−１、２２０１−２の出力の論理和を求める論理和回路（後述のように排他的論理和であってもよい）である。
【０３０２】
次に、検出されたエッジに基づき回転量（回転方向を含む）を判定する処理について説明を加える。この処理は、エッジ検出器２２０１−１又は２２０１−２の一方の出力と論理和回路２２０３の出力に基づき回転検出部２２０２が行う。
【０３０３】
図４４は、エッジの検出状況と回転量、すなわち順回転・逆回転の判定の説明図（タイミングチャート）を示す。図４４（ａ）はセンサ[1][2]の出力信号波形とエッジの検出位置を示す（「１」がエッジ検出を示す。ひとつのマスはサンプリング間隔に対応する）。図４４（ｂ）はエッジ検出に基づく回転検知を示す。○印はそのタイミング（ひとつのマス）で１ノッチ分の順回転又は逆回転が発生したことを意味する。順回転、逆回転それぞれについて○印を累積すれば回転量を求めることができる。例えば、（順回転の○印の累積）×（２ノッチの角度）＝（順方向への回転角度）となる。あるいは（順回転の○印の累積）そのものを回転量とすることもできる。この場合、ノッチが回転の単位となる。なお、順回転は例えば右回転、逆回転は例えば左回転であるが、この対応関係は任意である。
【０３０４】
前述の規則を参照して、図４４（ａ）のエッジ検出に基づき回転量を求める。
【０３０５】
すなわち、センサ[1][2]が交互にエッジを発生させていることを検出したとき、回転（○印）と判定する。センサで連続してエッジを検出した場合は、回転方向が反転したと判定する。
【０３０６】
上記判定の際にセンサ[1][2]が交互にエッジを発生しているかを確認するために、条件判断文を用いてしまうと、ＣＰＵ占有率が高くなってしまう。そのため、可能な限り条件式を排除した処理を用いることが好ましい。
【０３０７】
図４５は、回転検出部２２０２の処理フローチャートである。図４６は、その説明図（タイミングチャート）である。図４６では、最初の１マスは初期設定状態にあり、ダイヤルＪＤは動いていない。次の６マスでは順方向に３ノッチ進み、次の６マスでは逆方向に３ノッチ戻っている。
【０３０８】
まず、順回転（図４６の（ア）など）についての処理について説明する。処理の前には初期設定がされていて、順回転フラグ、逆回転フラグ、回転量のいずれもゼロであるとする。
【０３０９】
ダイヤルＪＤが回転して次のノッチに進むと前述のようにセンサ[1][2]の信号が変化する。
【０３１０】
まず、センサ[1]の信号が変化し（符号（ア１））、回転検出部２２０２は、論理和回路２２０３の出力に基づきエッジを検出する（Ｓ７０でＹＥＳ）。なお、論理和回路２２０３に代えて、符号２２０３に排他的論理回路を用いることもできる。原則として、センサ[1][2]の信号が同時に１になることはないので、排他的論理回路を用いても、論理和回路の場合と異ならない。
【０３１１】
エッジ検出器２２０１−１の出力に基づきセンサ[1]の信号が変化したと判定する（Ｓ７１でＹＥＳ）。
【０３１２】
回転量を求める（Ｓ７２）。回転量は、前回の回転量から逆回転フラグを引いたものであるが、逆回転フラグがゼロなので回転量は変わらない。
【０３１３】
図４５の例は回転量の＋／−の符号に回転方向が対応している例である。図４５の回転量ひとつで左右両方の回転に対応している。このため、Ｓ７２では回転量から逆回転フラグを引いている。なお、左右それぞれに別々の回転量（変数）を与えるようにしてもよい。例えば、後述の図４８及びその説明に示すように、逆回転量と順回転量という２つの変数を用いるようにしてもよい。この場合は逆回転量に逆回転フラグを加えている。
【０３１４】
順回転フラグを求める（Ｓ７３）。順回転フラグは、前回の逆回転フラグの論理を反転したもの（１と排他的論理和を求める）である。逆回転フラグはゼロなので、順回転フラグは１になる。
【０３１５】
逆回転フラグをゼロにする（Ｓ７４）。
【０３１６】
センサ[1]の信号が先に変化したときは、上記処理により順回転と判定される。
【０３１７】
次に、センサ[2]の信号が変化する（符号（ア２））。しかし、エッジ検出器２２０１−１の出力は変化していないので、回転検出部２２０２は、センサ[1]の信号は変化していないと判定する（Ｓ７１でＮＯ）。
【０３１８】
回転量を求める（Ｓ７５）。回転量は、前回の回転量に順回転フラグを加えたものである。Ｓ７３で順回転フラグが１になっているので回転量は＋１される。
【０３１９】
逆回転フラグを求める（Ｓ７６）。逆回転フラグは、前回の順回転フラグの論理を反転したもの（１と排他的論理和を求める）である。順回転フラグは１なので、逆回転フラグをゼロになる。
【０３２０】
順回転フラグをゼロにする（Ｓ７７）。
【０３２１】
上記処理は、順回転の１シーケンスの判定処理である。符号（ア）の処理が終了した時点で順回転フラグ、逆回転フラグの両方がゼロとなり、初期状態に戻る。これにより次が順回転、逆回転のいずれであっても対応できるようになる。
【０３２２】
次に、逆回転（図４６の（イ）など）についての処理について説明する。
【０３２３】
ダイヤルＪＤが回転して次のノッチに進むと前述のようにセンサ[1][2]の信号が変化する。
【０３２４】
まず、センサ[2]の信号が変化し（符号（イ１））、回転検出部２２０２は、論理和回路２２０３の出力に基づきエッジを検出する（Ｓ７０でＹＥＳ）。エッジ検出器２２０１−１の出力は変化していないので、回転検出部２２０２は、センサ[1]の信号は変化していないと判定する（Ｓ７１でＮＯ）。
【０３２５】
回転量を求める（Ｓ７５）。回転量は、前回の回転量に順回転フラグを加えたものである。順回転フラグはゼロであるので回転量は変化しない。
【０３２６】
逆回転フラグを求める（Ｓ７６）。逆回転フラグは、前回の順回転フラグの論理を反転したもの（１と排他的論理和を求める）である。順回転フラグはゼロなので、逆回転フラグを１になる。
【０３２７】
順回転フラグをゼロにする（Ｓ７７）。
【０３２８】
次に、センサ[1]の信号が変化し（符号（イ２））、回転検出部２２０２は、論理和回路２２０３の出力に基づきエッジを検出する（Ｓ７０でＹＥＳ）。そして、エッジ検出器２２０１−１の出力に基づきセンサ[1]の信号が変化したと判定する（Ｓ７１でＹＥＳ）。
【０３２９】
回転量を求める（Ｓ７２）。回転量は、前回の回転量から逆回転フラグを引いたものであるが、逆回転フラグが１なので回転量は１だけ減少する。
【０３３０】
順回転フラグを求める（Ｓ７３）。順回転フラグは、前回の逆回転フラグの論理を反転したものである。逆回転フラグは１なので、順回転フラグをゼロになる。
【０３３１】
逆回転フラグをゼロにする（Ｓ７４）。
【０３３２】
センサ[2]の信号が先に変化したときは、上記処理により逆回転と判定される。
【０３３３】
上記処理は、逆回転の１シーケンスの判定処理である。符号（イ）の処理が終了した時点で順回転フラグ、逆回転フラグの両方がゼロとなり、初期状態に戻る。これにより次が順回転、逆回転のいずれであっても対応できるようになる。
【０３３４】
ところで、上記説明では２つのセンサ[1][2]のいずれかのエッジ検出で処理を開始していた（図４２の論理和回路２２０３、図４５のＳ７０）。これに対し、図４７に示すように２つのセンサ[1]と[2]それぞれについて判断を行うやり方も考えられる。
【０３３５】
しかし、図４７のやり方には処理負荷が高くなるという問題が生じる。実際の処理において複数のサンプリング期間で検知可能な回転量（エッジ検出の回数）はそれ程多くなく、しかも、遊技機に対する実際の操作を考えるとジョグダイヤルは回転より停止時の方が頻度が高い。この実情を考慮すると、図４５のように、停止状態を先に判定し、処理から除外させる（図４５のＳ７１乃至Ｓ７７の処理を行わないようにする）ことの方が、図４７の処理よりも、処理負荷を低くできる。
【０３３６】
なお、実際にはほとんど発生しないが、センサ［1］とセンサ［2］で同時にエッジを検出することを考える（サンプリング処理を行っているので、ノッチの間隔がサンプリング周期を超えるような高速回転のときには同時検出があり得る）。このケースにおいて、図４５の処理では、必ずセンサ［1］側の処理（Ｓ７２乃至Ｓ７４）を行うことになり、順回転となる（符号２２０３に論理和回路を用いている場合）。しかし、センサ［1］とセンサ［2］の同時エッジ検出は順回転とは限らないから、図４５の処理によれば誤処理の可能性を否定できない。なお、符号２２０３に排他的論理和回路を用いている場合は同時エッジ検出でＳ７２〜Ｓ７４、Ｓ７５〜Ｓ７７いずれの処理も行わないから上記のような問題は生じないが、後述の回転監視用のパラメータの初期化（Ｓ１０２、Ｓ１０３）を行わないから、誤動作を完全に防止できないおそれがある。
【０３３７】
上記問題を解決した処理フローチャートを図４９及び図５０に示す。これらの処理フローチャートは、図４１に示した複数ビット（３２ビット）についての処理を示す。
【０３３８】
Ｓ９０：各センサのエッジを検出する。
上述のようにエッジ検出器２２０１−１、２２０１−２により、図４１（ｃ）のようなエッジ検出のデータを生成する。図４１（ｃ）のデータは、センサ［1］とセンサ［2］それぞれについて生成される。
【０３３９】
Ｓ９１：両センサの重複エッジと排他エッジを求める。
センサ［1］のエッジデータとセンサ［2］のエッジデータの各ビットについて論理積を求め、これを重複エッジデータとする。重複エッジデータは、上記同時検出が生じたことを示すものである。
【０３４０】
同様に、センサ［1］のエッジデータとセンサ［2］のエッジデータの各ビットについて排他的論理和を求め、これを排他エッジデータとする。排他エッジデータは、センサ［1］とセンサ［2］のいずれかでエッジ検出があったことを示すものである。上記同時検出が生じていたとしても演算結果はゼロになるので、センサ［1］のエッジデータとセンサ［2］のエッジデータが、いずれも、非検出と同時検出だけであれば排他エッジデータは全てゼロになる。
【０３４１】
Ｓ９２：排他エッジデータが全てゼロかどうか判定する。
排他エッジデータが全てゼロであれば（ＹＥＳ）、センサ［1］とセンサ［2］いずれも非検出（又は同時検出）であるから処理する必要はないので処理を終了する。
【０３４２】
そうでなければ（ＮＯ）、Ｓ９３以降の処理を実行する。なお、これ以降の処理は複数のビット（３２ビット）のＭＳＢ（最も古いデータ１ビット）について処理する。Ｓ１０４乃至Ｓ１０６でビットシフトすることによりＭＳＢ側から順番に処理を行っているので、Ｓ９３以降の処理は図４４、図４５に示すような時間軸に沿った処理となる。
【０３４３】
ジョグダイヤルは必要な場合のみ操作されるものであり、エッジが検出されないことが比較的多いから、Ｓ９２の処理を最初に行うことにより処理負荷を減らすことができる。
【０３４４】
なお、＝＝は等号を示す。図４８、図４９においては＝（代入）と区別して＝＝という記号を用いている。
【０３４５】
Ｓ９３：重複エッジデータがセットされているかどうか判定する。
重複エッジデータのＭＳＢがセット（＝１）であれば（ＹＥＳ）、回転量の計算は行わない。しかし、エッジが重複しているときは回転方向を誤認する可能性が高く、あるいは誤動作である可能性が高いから、同条件が発生した場合は、回転監視用のパラメータを全て初期化する（Ｓ１０２，Ｓ１０３）。なお、ＭＳＢ＝１はマイナスの値を示すから、Ｓ９３では、重複エッジ＜０であるかどうかを判断している（Ｓ９４、Ｓ９５も同じ）。
【０３４６】
同時にエッジ検出が発生する状況は想定外の事象ではあるが、高速回転時には発生し得る。このような状況下では遊技者自体が回転量を把握していないと想定されるから、回転量の計算を行わないとしてもこのことによる多少の回転誤差は問題にならないと思われる。
【０３４７】
なお、図面では、重複エッジデータがセットされているかどうかを、重複エッジデータの符号がマイナスであることで判定している。あるビットが１／０いずれであるかを判定するには予め特定のデータ（当該ビットのみ１で他は０のデータ）を用意し、これを比較対象のデータと演算することで行うが、データのＭＳＢが１／０いずれかであるかはそれをレジスタに入れた状態で所定のフラグ（符号）をチェックすることで、より簡単に行える。そこで、Ｓ９３、Ｓ９４、Ｓ９５ではデータの符号を判定することでＭＳＢが１／０いずれであるかを判定している。１がマイナス、０がプラスを意味するからＳ９３、Ｓ９４、Ｓ９５ではデータが１であるときにＹＥＳとなる。
【０３４８】
Ｓ９４：排他エッジデータがセットされているかどうか判定する。
排他エッジデータのＭＳＢがセットされていなければ（＝０、ＮＯ）、回転量の計算は行わない。
この処理は、図１４のＳ７０に対応する。
【０３４９】
Ｓ９５：センサ[1]で検出しているかどうか判定する。
センサ[1]のＭＳＢのセット／リセット（１／０）に応じて処理が振り分けられる。
この処理は、図１４のＳ７１に対応する。
【０３５０】
Ｓ９６乃至Ｓ１０１は、図１４のＳ７２乃至Ｓ７７に対応するので、それらの説明は省略する。これらの処理により１ビットごとに回転量が求められる。次のビットの処理を行うためにＳ１０４乃至Ｓ１０６によりビットシフトを行う。
【０３５１】
Ｓ１０４：排他エッジデータを１ビットだけＭＳＢ側へシフトして、次のデータを処理できるようにする。ＬＳＢ側へはゼロを入れるようにする。
なお、＜＜＝は左側（ＭＳＢ）へのビットシフトを示し、数字はシフト量を示す。
【０３５２】
Ｓ１０５：センサ[1]のデータを１ビットだけＭＳＢ側へシフトして、次のデータを処理できるようにする。ＬＳＢ側へはゼロを入れるようにする。
【０３５３】
Ｓ１０６：重複エッジデータを１ビットだけＭＳＢ側へシフトして、次のデータを処理できるようにする。ＬＳＢ側へはゼロを入れるようにする。
【０３５４】
Ｓ１０７：排他エッジデータが全てゼロかどうか判定する。
排他エッジデータが全てゼロであれば（ＹＥＳ）、これ以降についてはセンサ［1］とセンサ［2］いずれも非検出（又は同時検出）であるから処理する必要はないので、回転量を求める処理（Ｓ１０８）を行ってから本件処理を終了する。
【０３５５】
全てゼロではないとき（ＮＯ）処理すべきエッジデータが残っているので、Ｓ９３に戻り処理を繰り返す。
【０３５６】
Ｓ１０７によれば処理対象（１であるビット）がなくなった時点で処理を終了できるので、ビット数（３２ビット）だけ処理を繰り返すことを、常に行う必要がない。これにより処理負荷を軽減することができる。
【０３５７】
本実施の形態によれば、ジョグダイヤルの回転量（順回転量、逆回転量）の算出処理の前に、２つのセンサの出力の論理和（又は排他的論理和）に基づき回転量の算出処理を行うかどうか判定し、２つのセンサいずれについてもエッジが存在せず、回転量の算出処理の必要のないときはジョグダイヤルの回転量算出処理を直ちに抜けるようにしている。このため、ジョグダイヤルの回転方向及び角度の検知処理において、条件分岐命令の実行頻度を下げることができる。非操作の時間が多いジョグダイヤルの処理についてそのほとんどにおいて最初の条件分岐で処理を終了するようにできる。これにより、ＣＰＵの処理負荷を軽減することができる。
【０３５８】
また、順回転フラグ、逆回転フラグ、回転量の３つのパラメータを用いて回転検出し、回転量を求めるようにした。ノイズ等によりこれら３つのパラメータが同時に不正な値となる可能性は少ないから、３つのパラメータを用いることにより、ノイズによる誤検知を防止することができる。
【０３５９】
ジョグダイヤルのセンサの監視は、回転情報を正確に認識するために高速でサンプリングを行うが、ジョグダイヤル自体は常に回転する(回転し続ける)デバイスではなく、各センサの信号変化はサンプリング間隔と比較して圧倒的に少ない。本実施の形態では、上記処理を行うことで、通常時（無回転時)の制御負荷を極力押さえ込むことができる。
【０３６０】
また、センサ反応時の対応に於いても、条件分岐を極力削減しており、負荷軽減を図れる。
【０３６１】
他にも、各信号を個別に判定した場合、センサのサンプリング間隔や信号誤検知によって同時にセンサ信号が変化すると、誤った回転検知を行ってしまう問題がある。本実施の形態では排他的論理和を用いることで、一方のセンサ[1]を有効として処理を行うようにしているので、特別な処理を行わずに前記問題を回避することが可能である。例えば、電波などの影響によって、同時にエッジが変化したとしても誤検知が生じない。また、センサが誤検知したときのリカバリ処理の軽量化を図れる。
【０３６２】
＜Ｖフレーム遅延サポート＞
図１０を参照して既に説明を加えたように、液晶表示装置に画像を表示する際に、描画データを保存してからその表示を実行するまでには、２つのＶフレームに相当する時間を要する。このため、液晶表示装置の表示と音響（液晶制御基板２００とスピーカ基板２０１）で同期させつつ行う演出については、それらの動作を一致させる必要がある（役物についての同期については前述した）。図１０に示したように、液晶表示装置ＬＣＤに画像を表示する際には２フレーム（６６．６ｍｓ）程度の遅延が生じる。このため、液晶表示の画面と音響について同期を取るためには、前記遅延に応じて処理を遅延させることが必要である。
【０３６３】
音響を発生するためのサウンドコマンドの書き込み（転送）は、図５０に示すようにコマンドバッファ（前述の送信データレジスタ２１０２に相当）を介して行われる。サブ基板２０のＣＰＵが特定の音響を発生させるためのコマンドをコマンドバッファに書き込み、所定のタイミングでコマンドバッファからコマンドを読み出してスピーカ基板２０１（あるいはサブ基板２００）の図示しない音響発生器（ＩＣ）へ送る。コマンドの転送は所定間隔（システム側のメインタスク処理に要する時間１６．６ｍｓ）ごとに行われる。音響再生までに必要なコマンド数によって発音するまでの時間は変化するが、上述のように液晶表示装置の処理と比較すると１〜２Ｖフレーム程度先行する可能性がある。
【０３６４】
コマンドバッファの登録のやり方として、排他式単一コマンド登録方式（図５０のエ）と排他式一括コマンド登録方式（図５０のオ）がある。
【０３６５】
「排他式」とは、コマンドバッファのオーバーフロー時の対応において、書き込みとして準備されたコマンドは、コマンドバッファに記録されないことを示す。「一括コマンド登録」については、音響発生器（ＩＣ）に登録したいコマンドを複数一括して登録することを示す。この際、登録途中にコマンドバッファでオーバーフローが発生した場合は、その発生寸前までのデータを登録する。一括登録の場合は登録済みのデータ数を呼び出し元に返すため、次回記録時は登録済みのデータを除いて設定することができる。
【０３６６】
コマンドバッファに登録されている音響発生器（ＩＣ）へのコマンドは、基本的に無条件で音響発生器（ＩＣ）へ設定される。
【０３６７】
音響発生器（ＩＣ）の異常を検出しリセットを行った場合は、コマンドバッファに登録されているデータを復帰前に全て初期化する。これは、初期化動作中はコマンドバッファからの出力を禁止するため、残データが蓄積されることになり、復帰時に一部の音が再生されるなどの不具合に繋がる可能性があるためである。
【０３６８】
液晶表示の画面と音響について同期を取るために、前述の画像側の遅延に応じて音響処理を遅延させるようにするが、この遅延方式として、遅延量が固定である自動遅延型と、遅延量が可変である指定遅延型の２種類がある。図５１は、これらの動作説明図である。
【０３６９】
図５１の自動遅延型は２Ｖフレーム遅延させるものであり、１乃至９のコマンドはそれぞれ２つ右隣のフレームにて取り出されている。
【０３７０】
図５１の指定遅延型は、コマンドの１と２、６と７、８と９について遅延が指定されていないので、それらコマンドは同じフレームにて取り出されているが、３、４と５は遅延指定が行われているので、それぞれ２つ右隣のフレームにて取り出されている。
【０３７１】
このように、コマンド設定(バッファ)書き込みに対して、自動／指定遅延型読み込みにてデータ取り出すことができる。図５１では、自動／指定遅延型のサンプルとして最短読み出しタイミングのものを記載している。「遅延指定」は指定遅延型についてのみ有効である（遅延量は２Ｖフレーム遅延）。
【０３７２】
上記の自動／指定遅延型は混在使用できないので、どちらか一方を採用する。図５１の例では２フレーム遅延を例として取り上げているが、フレーム遅延数は何フレームでも設定可能である。またｎフレーム遅延時に変化するメモリ使用量は、ｎ×４バイト(ｎ個のアドレス記憶領域のみ)でるため、遅延数が増加してもメモリへの負担は少ない。
【０３７３】
液晶表示の画面と音響について同期を取るための遅延は、自動／指定遅延型の選択と、遅延フレーム数（ｎ）を決定すれば、遅延を意識せずにコマンドバッファにコマンドを登録することで自動的に発動する（指定遅延型の場合は登録前に遅延指定を行う必要がある）。
【０３７４】
次に、図５１の遅延を実現するための処理について説明する。
【０３７５】
まず、自動遅延型の処理について、図５２乃至図５４を参照して説明を加える。
図５２は、コマンドバッファに登録すべきコマンドを記憶しているコマンド記憶部（図７のデータレジスタ２１０１に相当）の記憶内容を示している。アドレス１００乃至１０８に９つのコマンドＣＭＤ１乃至ＣＭＤ９を記憶している（これは例示であり、もっと多くのコマンドを記憶することもできる）。
【０３７６】
図５３は、コマンドバッファ（図７の送信データレジスタ２１０２に相当）の構造を示している。コマンドバッファは先入れ先出しバッファ（ＦＩＦＯ）であり、Ｗ１に書き込まれたデータが、Ｗ２、Ｗ３と順番に移っていき、Ｗ３にあるコマンドが送信される（図７の送信シフトレジスタ２１０３に送られる）。データの移るタイミングはＶフレームの切り替わりである。
【０３７７】
図５４は、図５１の自動遅延型のコマンド１、２（ＣＭＤ１、ＣＭＤ２）の遅延の様子を示す。
【０３７８】
図５４（ａ）は、図５１の１Ｖフレーム目でＣＭＤ１、ＣＭＤ２がコマンドバッファのＷ１に書き込まれた状態を示す。
【０３７９】
図５４（ｂ）は、図５１の２Ｖフレーム目でＣＭＤ１、ＣＭＤ２がＷ２に移動した状態を示す。
【０３８０】
図５４（ｃ）は、図５１の３Ｖフレーム目でＣＭＤ１、ＣＭＤ２がＷ３に移動し、送信されることを示す。
【０３８１】
以上のように、コマンドは自動的に２フレーム遅延して送信される。遅延の数はコマンドバッファの段数（Ｗ１乃至Ｗ３）に関係する。段数をひとつ増やして４つにすれば３フレーム遅延するようになり、段数をひとつ減らすと２フレーム遅延するようになる。
【０３８２】
次に、指定遅延型の処理について、図５５及び図５６を参照して説明を加える。
【０３８３】
指定遅延型では、図５３の多段バッファにコマンドを書き込む代わりに、コマンド記憶部のアドレスを指定して読み出すようにしている。図５５は、そのための読み出しテーブル（コマンドバッファに相当）の例を示す。同テーブルは上から順に（Ｗ１のＷ５の順番で）取り出され、これにしたがってコマンドが読み出される。同テーブルに記憶されているものはコマンド記憶部のアドレスである。Ｗ１は「１０１」であるが、これは１０１より若いアドレスのコマンドで未だ読み出されていないものを読み出すことを指示するものである。したがって、ＣＭＤ１とＣＭＤ２が読み出される。同様に、Ｗ２「１０２」によりＣＭＤ３が読み出される。
【０３８４】
読み出しテーブルのＷ１乃至Ｗ５のどのデータ（アドレス）を取り出すかは、キュー（queue）で指定する。キューは、読み出しテーブルの例えばＷ１を取り出した後、自動的にＷ２に移るが、そのタイミングは遅延指定に従う。すなわち、遅延指定＝０フレームであれば直ちに読み出しテーブルの次のデータに移動するが、遅延指定＝１フレーム、２フレームであれば、それぞれ１フレーム、２フレーム後に読み出しテーブルの次のデータに移動する。
【０３８５】
キューを用いた読み出しテーブルからのデータ取得と、コマンド送信について図５６を参照して説明を加える。
【０３８６】
図５６（ａ）は、コマンド送信を開始するために、読み出しテーブルの最初のデータＷ１にキューが位置している状態を示す。Ｗ１のアドレス＝１０１であるので、自動遅延型の場合と同じように、図５２のＣＭＤ１とＣＭＤ２が読み出される。そして、直ちに送信される。これは、図５１の指定遅延型において、１Ｖフレーム目でＣＭＤ１、ＣＭＤ２が設定されるとともに、当該フレームでＣＭＤ１、ＣＭＤ２が送信されることに相当する。
【０３８７】
図５６（ｂ）は、図５１の２Ｖフレーム目で２フレームの指定遅延を受け、この指定遅延のフレームである４Ｖフレーム目において、次のデータＷ２にキューが位置している状態を示す。これによりＣＭＤ３が読み出され、４Ｖフレーム目で送信される。
【０３８８】
図５６（ｃ）は、図５１の３Ｖフレーム目で２フレームの指定遅延を受け、この指定遅延のフレームである５Ｖフレーム目において、次のデータＷ３にキューが位置している状態を示す。これによりＣＭＤ４乃至ＣＭＤ６が読み出され、５Ｖフレーム目で送信される。次のＷ４については指定遅延がないので、キューは直ちにＷ４に移動し、ＣＭＤ７が読み出され、送信される。図５１の例ではＣＭＤ７は５Ｖフレーム目で送信されている。
【０３８９】
図５６（ｄ）は、次のＷ５については指定遅延がないので、キューは直ちにＷ５に移動し、ＣＭＤ８及びＣＭＤ９が読み出され、送信される。図５１の例ではＣＭＤ８及びＣＭＤ９は６Ｖフレーム目で送信されている。
【０３９０】
以上のように、指定遅延型においてコマンドは指定されたタイミングで送信される。
【０３９１】
図５７は、指定遅延型の送信制御部のブロック図を示す。
【０３９２】
２３００は、図５２に示すようなアドレスごとにコマンドが記憶されているコマンド記憶部である。
【０３９３】
２３０１は、コマンドの登録要求に応じてコマンドを読み出すとともに、遅延指定に従って読み出すタイミングを設定する読出制御部である。読出制御部２３０１は、図５５のようなテーブルを内部に持ち、コマンド読出部２３０２に対してどのコマンドを読み出すかをアドレスで指定するものである。また、読出制御部２３０１は、その指定（キュー）を出力するタイミングを遅延指定に従って設定する。
【０３９４】
２３０２は、読出制御部２３０１からの指示に基づきコマンドを読み出して送信部（図７の送信用シフトレジスタ２１０３）に渡すものである。読出制御部２３０１の動作については、図５６を参照して既に説明した。
【０３９５】
この本実施の形態によれば、先入れ先出しバッファにコマンド（音声データ）を書き込むのではなく、コマンドが格納されているアドレスを書き込み、これによる制御を、キューを用いて実現している。バッファを用いないので遅延量を任意に指定することができ、柔軟な制御を実現できる。
【０３９６】
＜電断処理＞
ところで、処理部であるＣＰＵは電源断において、予め定められた電源断予告信号の入力を契機として電源断退避処理を実行する。この処理は、電源断でもデータが失われないメモリに保存されているデータのチェックサムを求める処理を含むものである。
【０３９７】
ＣＰＵは、電源投入後のリセット信号の入力によりプログラム実行番地を所定番地とし、各種初期設定と共に、電源断でもデータが失われないメモリに保存されているデータを読みだして通常使用するワークメモリ上に展開するといった初期化処理を行う。上記電源断退避処理と初期化処理の２つの動作により、電源オフ前の状態のバックアップとこれに基づく電源オン後の復帰が実現される。つまり、遊技機の電源を投入すると電源断時の状態に戻るのである。
【０３９８】
図５８は、サブ基板２０と電源部の関係を示すブロック図である。なお、メイン基板１０についても同様である。
【０３９９】
ＰＳは、交流電源（例えばＡＣ２４Ｖ）を受けて直流電源を生成する電源部である。
【０４００】
サブ基板２０で実行される遊技に係る処理は、ＲＯＭに予め記憶されたプログラムに従ってＣＰＵが動作することで実行される。ＣＰＵは、処理を行う際に各種データを第１メモリＭ１に記憶させ、必要に応じて読み出し、処理を行い、必要に応じて再度記憶する、といった処理を行う。また、第２メモリＭ２は、バックアップ電源ＢＡＫによりバッテリバックアップを受けているので、電源断の間でもその記憶内容は保持されている。バックアップ電源ＢＡＫは、例えば、充電可能な二次電池である。
【０４０１】
第１メモリＭ１は、アクセス速度が第２メモリＭ２よりも速いが、電源断時にデータのバックアップが行われていないメモリ（ワークメモリ）である。第２メモリＭ２は、バックアップが可能なメモリ（バックアップ用メモリ）である。
【０４０２】
通常の処理（電源断時の処理以外の処理）では、基本的に第１メモリＭ１が使用される。
【０４０３】
予め定められたタイミングで、第１メモリＭ１のデータのうち予め定められたものが第２メモリＭ２へ転送される。この例を以下に列挙する。
【０４０４】
・公知の設定処理中は第１メモリＭ１にデータを保存し、その設定が確定したときに第１メモリＭ１から第２メモリＭ２へデータを転送する。
【０４０５】
・サブ基板２０がメイン基板１０から所定のコマンドを受信したときに、これに対応する特定のデータを第１メモリＭ１から第２メモリＭ２へ転送する。
【０４０６】
・電源投入時に予め定められたデータを第１メモリＭ１から第２メモリＭ２へ転送する。
【０４０７】
なお、第２メモリＭ２には、他にも、バックアップフラグ、ＲＡＭチェックサム、不正行為に関するフラグ（不正リセットフラグなど）が記憶されることもある。
【０４０８】
電源スイッチＰＳＷがオンからオフにされると、電源部ＰＳから電源断予告信号が出力される。この信号はＣＰＵに対して、例えば割り込みをかけるものである。
【０４０９】
電源スイッチＰＳＷがオンからオフにされても電源電圧はすぐには低下せず、電源スイッチＰＳＷのオフからしばらく時間が経ってから電源電圧がゼロになる。したがって、ＣＰＵは電源断信号を受けてから電圧低下により動作を停止するまでの間に、一定の処理を行うことができる。
【０４１０】
例えば、電源オンのとき電源断予告信号はＨレベルであるが、それがＨレベルからＬレベルに変わると電源断を意味する。ＡＣ入力をオフにすると直流電圧がオフになるが、電源部や各回路に設けられているコンデンサ等の部品のために即時に電圧がゼロになることはない。例えば、電源電圧が一定値以下になると（例えばＤＣ２４Ｖ出力が１８Ｖまで低下すると）、電源断予告信号がＬレベルに変わる（それからＤＣ５Ｖがオフになるまでにはさらに時間がかかる）。
【０４１１】
電源断予告信号を発生する回路として、電圧比較器（コンパレータ）を用いることができる。所望の電圧（例えば１８Ｖ）の電池を用意しておき、この電圧とＤＣ２４Ｖの電源電圧を比較することで電源断予告信号を発生させることができる。この種の回路は公知であるので、詳しく説明しない。電源電圧を監視するための市販の専用ＩＣもあるので、それを用いることもできる。
【０４１２】
あるいは、電源スイッチＰＳＷと連動するスイッチ（あるいは接点）を用いて電源断予告信号を発生するようにしてもよい。
【０４１３】
遊技機は、図示しないが、電源投入を検知する電源投入検知部を備える。これは、例えば電源スイッチのオンを検知する装置（電源スイッチと連動するスイッチあるいは接点）である。電源断予告信号と同様に電圧比較器（コンパレータ）を用いて電源投入を検知することもできる。あるいは、電源電圧を監視するための市販の専用ＩＣを使用してもよい。
【０４１４】
＜電断発生時の複数の処理の優先順位の変更＞
以下の説明では、電源断を「電断」と記し、電源断退避処理を「電断処理」と記すことにする。
【０４１５】
ところで、最近のサブ基板２０ではひとつのＣＰＵが同時に複数の処理を実行するマルチプロセス方式が採用されるようになっている。複数の処理が同時に実行されているときの電断処理は、ひとつの処理の電断処理とは異なり、全部の処理が終了するのを待たなければならない。しかし、上述のように電断処理（バックアップ）を行える時間は限られているから、全部の処理の終了を待っていると電断処理が間に合わなくなることもある。電断処理を優先するために、実行されている処理を強制的に処理することもありえるが、すると打ち切られた処理が不完全となり、不具合の原因になりかねない。このため、マルチプロセス方式を採用しているサブ基板２０においては、従来の遊技機とは異なる電断処理を行う必要がある。
【０４１６】
マルチプロセス方式における電断処理の原理について、図５９乃至図６１を参照しつつ説明を加える。
【０４１７】
例えば、優先度の高い順に処理Ａ、処理Ｂ、・・・、処理Ｚとあり、その中で処理Ｂ、処理Ｃがバックアップ対象データへのアクセスを行うとする（図５９）。
【０４１８】
ここで、処理Ｂ、処理Ｃにおいてバックアップ対象データへのアクセス中に電断が発生した場合、早急に処理を終了させて電断処理へ移行する必要があるが、アクセス終了前に処理Ｂ、処理Ｃより優先度の高い処理Ａが割り込んだ場合、電断処理移行に遅延が発生する。
【０４１９】
そこで、電断発生時にバックアップ対象データへのアクセスを行わない処理を一番低い優先度に変更する。例えば、処理Ｂと処理Ｃ以外の処理Ａ、・・・、処理Ｚの優先度を低くする（図６０）。優先度を低くするとは、バックアップ対象データへアクセスしている処理Ｂと処理Ｃの優先度のうちで低い方の優先度よりも、処理Ａ、・・・、処理Ｚの優先度を下げるということであるが、簡単には最低の優先度（処理Ｚの優先度）に設定するようにしてもよい。また、処理Ａ、・・・、処理Ｚが電断発生以降まったく必要のないものであれば、それら処理を休止状態にしても構わない（これも優先度を低くすることに含まれる）。これにより、処理Ｂと処理Ｃというバックアップ対象データへアクセスを行う処理が、当該アクセスを行わない処理Ａ、・・・、処理Ｚによって中断されることがなくなる。
【０４２０】
バックアップ対象データへのアクセスを行う処理（処理Ｂと処理Ｃ）を監視し、アクセス中でない、もしくはアクセスが終了した時点で一番低い優先度に変更、もしくは休止状態にする。例えば、アクセスが終了した処理Ｂを休止状態にする（図６１）。これによりバックアップ対象データへのアクセスが再度発生することがなくなり、電断処理への移行に際して遅延が発生することがなくなる。
【０４２１】
そして、アクセス中の処理が無くなった時点（処理Ｃのアクセスが終了した時点）で電断処理へと移行する。
【０４２２】
なお、アクセス中の電断を確実に禁止するために電断禁止フラグをセットするようにしてもよい。電断禁止フラグは、ＣＰＵが電断処理を開始する際に参照されるフラグであり、これがセットされているときは電断処理が開始されることがない（例えば、所定時間待機し、その後再びフラグをチェックすることが繰り返される）。電断禁止フラグは、例えば電源断予告信号によりセットされ、バックアップ対象データへのアクセスの可能性がなくなったときにリセットされる（例えば、図６３のＳ１１５でＹＥＳとなったときにリセットされる）。
【０４２３】
図６２は、上記処理を行うための遊技機のブロック図（電断処理関係の部分のみを示す）である。同図の各ユニットはＣＰＵが所定のプログラムを実行することで実現される機能ユニットである（ＩＣなどのハードウエアであるバックアップ対象メモリを除く）。例えば、処理Ａ、・・・、処理Ｚは複数の処理部（ＣＰＵ）を意味するのではなく、ひとつのＣＰＵで実現されるマルチプロセス処理のひとつひとつを機能的に表現したものである。なお、これらユニットの一部又は全部をハードウエアで構成することもできる。
【０４２４】
２４００は、遊技に係るデータ（当選判定・入賞判定に関するフラグ）及び／又は前記演出に係るデータ（演出に関するフラグなど）を記憶するメモリである。このメモリ２４００の内容がバックアップ対象となるので、「バックアップ対象メモリ２４００」と表記している。他のデータを記憶するメモリ（ＲＯＭ、ＲＡＭ）が存在するが、それらについての表示は省略する。
【０４２５】
２４０１は、電断の際に、バックアップ対象メモリ２４００のデータ（各種フラグなど）についてバックアップを行う電断処理部である。電断処理部２４０１の処理内容は公知であるので、その説明は省略する。
【０４２６】
２４０２は、複数の処理Ａ、・・・、処理Ｚについての優先度を変更する優先度変更部２４０２ａと、複数の処理Ａ、・・・、処理Ｚの実行状態を監視する処理実行状態監視部２４０２ｂとを含み、複数の処理のうちの予め定められた処理Ａ、・・・、処理Ｚ（図５９乃至図６１の例では処理Ｂと処理Ｃ）の実行が終了した後に、電断処理部２４０１にバックアップを開始させる電断前置処理部である。
【０４２７】
２４０３は、電源部ＰＳからの予め定められた信号（電断予告信号）に基づき電断前置処理部２４０２に処理を開始させる電断処理起動部である。
【０４２８】
電断前置処理部２４０２の処理実行状態監視部２４０２ｂは、電断処理起動部２４０３からの信号に基づき複数の処理Ａ、・・・、処理Ｚの実行状態を調べ、これら複数の処理を、バックアップの対象となっているデータにアクセスしている処理（以下「第１処理」、図５９乃至図６１の処理Ｂと処理Ｃ）と、当該データにアクセスしていない処理（以下「第２処理」、処理Ｂと処理Ｃ以外の処理）とに区別する。
【０４２９】
優先度変更部２４０２ａにより、第２処理の優先度を第１処理の優先度よりも低く設定する（「低く」の意義については前述した）。
【０４３０】
処理実行状態監視部２４０２ｂは、第１処理を監視してその実行が終了したかどうか調べ、終了したときに電断処理部２４１０にバックアップを行わせる。第１処理が複数の処理を含むとき（図５９乃至図６１の処理Ｂと処理Ｃ）、第１処理の一部の処理（処理Ｂ）が終了したときに当該一部の処理の優先度を、残りの第１処理（処理Ｃ）の優先度よりも低くし、第１処理の全部の実行が終了したときに、電断処理部２４０１にバックアップを行わせる。
【０４３１】
優先度変更部２４０２ａは、図６４に示すようなマルチプロセス処理に係る複数の処理Ａ、・・・、処理Ｚそれぞれについて予め定められた優先度を保持する優先度テーブルを含む。第２処理の優先度を第１処理の優先度よりも低く設定するときに、例えば、予め定められた優先度のうちで最も低いものに設定する（処理Ｚの２６よりも低い値＝２７）。こうすることで、もし処理Ｚが第１処理の場合にはこれが優先されるようにできる。図６４において、数値の小さいものほど優先度が高いとする。優先度＝１の処理は最も優先して実行される。
【０４３２】
図６３は、図６２の装置の処理フローチャートを示す。この処理は、電断処理起動部２４０３により起動される。
【０４３３】
Ｓ１１０：処理実行状態監視部２４０２ｂが、バックアップ対象メモリ２４００にアクセスを行っている処理（第１処理）と、アクセスを行っていない処理（第２処理）とを区別して認識する。
【０４３４】
図５９乃至図６１の例では、第１処理＝処理Ｂ、処理Ｃ、第２処理＝処理Ａ、処理Ｚなど、である。バックアップ対象メモリ２４００にアクセス中の処理Ｂ、処理Ｃは、電断予告信号が発生したとしても直ちに処理を打ち切ることができない。処理を打ち切るとバックアップすべきデータ（フラグ）が正しく生成されない。
【０４３５】
Ｓ１１１：処理実行状態監視部２４０２ｂの監視結果に基づき、優先度変更部２４０２ａが第２処理の優先度を最も低くする。
【０４３６】
優先度変更部２４０２ａは、予め図６４（ａ）に示すような優先度テーブルを備えている。これを、同図（ｂ）のように、第２処理（処理Ｂ、処理Ｃ以外の処理）の優先度を低く（この例では最低の２７）設定する。こうすることで、図６０に示すように、処理Ｂ、処理Ｃ以外の処理の実行を抑制できる。
【０４３７】
Ｓ１１２：処理実行状態監視部２４０２ｂが、第１処理によるアクセス状況を監視する。
【０４３８】
Ｓ１１３：第１処理のいずれかによるバックアップ対象メモリ２４００へのアクセスが終了したら（ＹＥＳ）、Ｓ１１４に進む。
【０４３９】
Ｓ１１４：アクセスを終了した第１処理について、優先度変更部２４０２ａが優先度を最も低くする。
【０４４０】
図６４（ｃ）の例では、処理Ｂの優先度＝２７としている。図６１に示すように、処理Ｂについてこれ以降の処理の実行を抑制できる。
【０４４１】
Ｓ１１５：全ての第１処理（処理Ｂ、処理Ｃ）について処理が終了したら（ＹＥＳ）、電断処理を開始し（Ｓ１１６）、残っている第１処理があれば、Ｓ１１３乃至Ｓ１１５を繰り返す。
【０４４２】
従来の遊技機において、電断発生時、バックアップ対象となるデータの処理中であれば、処理終了まで電断処理を遅延させるようにしていた。これに対し、複数の処理が同時に動作するマルチプロセス環境下において従来と同様の処理を行うようにすると、バックアップ対象となるデータを扱わないが、より優先度が高い処理が割り込むことがあり、これが遅延時間の増大を招き、安定した電断処理を行うことができなくなる。これに対し、本実施の形態によれば、遅延時間の増大を極力押さえ、安定した電断処理を行うことができるようになる。
【０４４３】
すなわち、本実施の形態によれば、電断発生を検知すると、バックアップ対象となるデータにアクセスしない処理を低い優先度もしくは休止状態へ変更するとともに、バックアップ対象となるデータにアクセスする処理についても監視を行い、データヘのアクセスを行っていない安全なタイミングにおいて当該処理を低い優先度もしくは休止状態へ変更する。これによりバックアップ対象となるデータに関する処理を速やかに終了させ、当該データを電断処理へ遅延なく渡すことができ、安定した電断処理が実現できる。なお、安全なタイミングとは、バックアップすべきデータを正しく生成でき、当該データを電断処理へ渡しても支障のない時点のことである。安全なタイミング以外で処理を打ち切ると生成されたデータに矛盾が生じるなど不具合が生じるおそれがある。これにより、バックアップにかかる時間を最小限に抑え、安定した電断処理を行うことができる。
【０４４４】
＜電断処理中の電圧回復時における処理の中断リセット（瞬断対策）＞
マルチプロセス処理において、その並列処理を実現するために所定間隔（例えば５１２μｓごとに）タイマ割り込みを行っており各処理（プロセス）はタイマを契機に起動される。この点は電断退避処理も同様である。
【０４４５】
マルチプロセス処理における電断退避処理の動作は概ね次のようになる。電源断予告信号（あるいは電源電圧低下を示す信号）により特定の割り込み（ＮＭＩ）が発生し、これに対応する処理により電源断フラグ（電断フラグ）がセットされる。タイマ割り込みにより電断退避処理が起動され、上記のような所定の処理が行われる。そして、前記電断退避処理を完了した後、ＣＰＵは待機状態（無限ループ状態）になりそこで電源が完全にオフになることで動作を停止する。
【０４４６】
電断退避処理において、例えば、ノイズなどの原因により電源電圧が一時的に低下し電源断予告信号が発生したものの、その後電源電圧が復帰したような場合（これは瞬断と呼ばれる）についても対応できる必要がある。電断退避処理を完了した後、ＣＰＵは待機状態にあり、そこから復帰できなくなることを避ける必要がある。
【０４４７】
なお、マルチプロセス処理でない従来の遊技機では、電源断予告信号に基づく割り込みにより電源断退避処理を行っており、電源が復帰した際には同様の割り込み処理で復帰することができる。これに対し、マルチプロセス処理においてタイマ割り込みにより各処理が起動されるので、瞬断に対する特別な対策が必要である。
【０４４８】
また、マルチプロセス処理において、電源断退避処理の後に、電源断退避処理直前の処理に戻すためには複雑な手順を必要とし、実際上そのような処理は困難である。
【０４４９】
図６５は、マルチプロセス処理下においていわゆる瞬断が発生したときでも遊技機を動作状態に復帰させるための装置のブロック図を示す。
【０４５０】
なお、電断処理部２４０１、２４０２は、図６２の電断処理部２４０１と電断前置処理部２４０２に相当する。図面を見やすくするために図６５において２４０１と２４０２をひとつのブロックとして示している。「電断前置処理部」の表記は省略しているが、図６５の装置の処理において電断処理部２４０１と電断前置処理部２４０２を一体として扱って支障はない。電断処理起動部２４０３は、図６２に示されたものと同じものである。
【０４５１】
２５００は、電断処理起動部２４０３によりセット／リセットされる電断フラグ記憶部である。電断フラグは、例えば電源電圧が低下したときセットされ、電源電圧が復帰したときリセットされる。あるいは、電源スイッチがオフになったときセットされ、電源スイッチがオンになったときリセットされる。
【０４５２】
２５０１は、所定間隔（例えば５１２μｓごとに）で複数の処理の実行の契機となる割り込み信号を出力する割り込みタイマーである。割り込みタイマー２５００により起動される処理は複数あるが、簡単のため同図では電断処理部２４０１、２４０２のみを示している。
【０４５３】
２５０２は、予め定められた動作が行われていないときにリセット信号を出力するウォッチドッグタイマーである。
【０４５４】
ウォッチドッグタイマー (watchdog timer) は、コンピュータの異常動作（ハングアップ、フリーズなど）を検知する装置である。プログラムがハングアップなどの不正な状態に陥ってしまい規則的なウォッチドッグ操作が行なわれなかった（タイムアウト）場合に、例外処理が実行される。例外処理は、ハングアップしたシステムを正常動作に戻すことを目的としてシステムをリセットする場合が多いが、電源切断によりシステムを強制停止させるものや電源を切断した後に再投入するものもある。
【０４５５】
例えば、ＣＰＵは動作中に常にカウント動作を行っており、ウォッチドッグ操作は当該カウンタを一定周期でクリアする（リセットする）処理である。何らかの理由でカウンタがリセットされず所定値に達したとき（オーバーフローなど）、リセット処理（例外処理）が行われるようになっている。
【０４５６】
２５０３は、前記カウンタをリセットするウォッチドッグタイマクリア部である。
【０４５７】
電断処理部２４０１，２４０２は、割り込みタイマー２５０１の出力に基づき電断フラグを調べ、これがセットされているときに、バックアップを行うとともに、バックアップを完了した後に、電断フラグを調べ、電断フラグがセットされているときはウォッチドッグタイマー２５０２をリセットし、電断フラグがセットされていないときはリセットを行わない。
【０４５８】
図６６は、図６５の装置のフローチャートである。この図は瞬断対策処理の部分のみを示している。
図６７及び図６８は、図６５の装置の動作説明図（タイミングチャート）である。
【０４５９】
以下、図６６乃至図６８を参照して、図６５の装置の動作について説明を加える。
【０４６０】
図６７（ａ）は、瞬断がなく正常に電源断が行われるケースを示す。
【０４６１】
電源スイッチオフにより電圧が低下すると、時刻ｔ１において電断処理起動部２４０３により電断フラグがセットされる。
【０４６２】
割り込みタイマー２５０１により時刻ｔ２において電断処理部２４０１，２４０２が起動され、電断処理が開始される。この処理は時刻ｔ３で完了する。その後、動作停止まで待機状態となる。
【０４６３】
すなわち、電断フラグを調べる（図６６のＳ１２１）。図６７（ａ）では電圧が低下し続けているから電断フラグはセットされたままである（ＮＯ）。ウォッチドッグタイマー２５０２がクリアされる（Ｓ１２２）。このためウォッチドッグタイマー２５０２によるリセットは行われない。
【０４６４】
Ｓ１２１でＮＯ、Ｓ１２２の処理か繰り返されているうちに、時刻ｔ４で電圧が十分に低下してＣＰＵの動作が停止する。
【０４６５】
図６７（ｂ）は、ごく短い瞬断（例えば割り込みタイマーの周期よりも短い）が生じたケースを示す。
【０４６６】
ノイズ等により時刻ｔ５で電圧が低下したが、すぐに時刻ｔ６で電圧が復帰している。時刻ｔ５で電断フラグがセットされるが、時刻ｔ６でリセットされている。時刻ｔ５からｔ６の間でタイマー割り込みが発生していないので電断処理部２４０１、２４０２は起動しない。
【０４６７】
図６８は、電断処理部２４０１、２４０２が起動する程度に長い瞬断が生じたケースを示す。同図（ａ）は電断処理を完了するために要する時間よりも瞬断が長いケースであり、同図（ｂ）はそれよりも短いケースを示す。
【０４６８】
図６８（ａ）において、何らかの原因により電圧が低下すると、時刻ｔ１において電断処理起動部２４０３により電断フラグがセットされる。
【０４６９】
割り込みタイマー２５０１により時刻ｔ２において電断処理部２４０１，２４０２が起動され、電断処理が開始される。この処理は時刻ｔ３で完了する。その後、Ｓ１２１のＮＯ、Ｓ１２２による待機状態となる。
【０４７０】
何らかの理由により電圧が復帰すると、時刻ｔ１でセットされた電断フラグが、時刻ｔ７でリセットされている。これを受けて、時刻８以降においてＳ１２１でＹＥＳとなり、無限ループとなる。Ｓ１２２によるウォッチドッグタイマーのリセットは行われない。
【０４７１】
このため時刻ｔ９においてウォッチドッグリセットが行われ、ＣＰＵは再起動され、通常処理を行うようになる。
【０４７２】
図６８（ｂ）においても同様に、電断フラグが時刻ｔ７’でリセットされ、時刻ｔ８’以降においてＳ１２１でＹＥＳとなり、無限ループとなる。Ｓ１２２によるウォッチドッグタイマーのリセットは行われないから、時刻ｔ９’においてウォッチドッグリセットが行われ、ＣＰＵは再起動され、通常処理を行うようになる。
【０４７３】
以上のように、本実施の形態によれば、電断処理部が、バックアップを完了した後に電断フラグを調べ、当該電断フラグがセットされているときはウォッチドッグタイマーをリセットし、当該電断フラグがセットされていないときはリセットしないので、瞬断によりバックアップを行ったときでも電源復帰後に自動的にリセットを行うことができる。したがって、遊技機のハングアップ、フリーズを避けることができ、遊技機の手動の電源オンオフという面倒な作業を行わなくて済む。
【０４７４】
本実施の形態によれば、マルチプロセス処理下においていわゆる瞬断が発生したときでも遊技機を動作状態に復帰させることができる。
【０４７５】
図６９及び図７０は比較例である。これらはウォッチドッグタイマーとウォッチドッグタイマクリア部を備えていない。
【０４７６】
この比較例では、電断処理（バックアップ）までは同じであるが、その後待機状態（無限ループ状態）となる。何らかの理由により電圧が復帰すると、電断フラグが、時刻ｔ７でリセットされるが、無限ループ状態になっていてリセットされない。このためハングアップ、フリーズが生じてしまう。
【０４７７】
＜電断発生時における処理の抑制＞
他の実施形態について説明を加える。
図７１は、この本実施の形態に係るブロック図を示す。同図は、図６２に対応するものであり、同一又は相当部分については同一符号を付し、その説明は省略する。
【０４７８】
処理実行状態監視部２０４２が監視対象としているのは、外部のデバイスと通信を行う処理（以下「通信処理」）である。図７１においては便宜上、処理Ａと処理Ｂが該当するものとする。外部のデバイスとは、液晶制御基板２００、スピーカ基板２０１、ＬＥＤ基板、可動体制御部６０などである。
【０４７９】
前記通信処理は、サブ基板２０から周辺基板（デバイス）へ信号を送り制御するとともに、当該周辺基板からそのステータス情報を受信するといった処理を行う。電断発生時、バックアップ対象となる処理が通信中あるいは通信を開始しようとしていた場合には、通信内容を取りこぼすおそれがあり、このためデータのバックアップを正常に行うことができず、電断退避処理が不完全になるおそれがある。これでは電源再投入後の動作に瑕疵が生じてしまう。そこで、以下に説明する装置構成・処理手順により、通信中あるいは通信を開始しようとしている処理についても電断退避処理を適切に行い、電源再投入後の動作を正常に行えるようにする。
【０４８０】
２４０２ｃは、通信処理について予め定められたタイムラグを設定するタイムラグ設定部である。タイムラグとは、通信処理が通信を開始しようとしてから実際に通信を開始するまでに要する時間である。図７１の例では、処理Ａ、処理Ｂが通信を開始しようとして通信プロトコルを開始してから電断抑制フラグをセットするまでの時間である。タイムラグをセットすることにより、通信開始直後に電断退避処理を行い、通信データの取りこぼしを防止できる。
【０４８１】
２４０２ｄは、通信処理についてのバックアップを行う時間が不足したことを示すタイムアウトエラーフラグを記憶するタイムアウトエラーフラグ記憶部である。
【０４８２】
電源断信号を受けてから電圧低下により動作を停止するまでの間にＣＰＵが行う処理は次のものである。
（処理１）現在実行中の処理を中止するか、又は、その処理の終了を待つ。
（処理２）通常の処理に代えて、電源断退避処理を実行する。
【０４８３】
（処理１）と（処理２）の合計時間は、「電源断信号を受けてから電圧低下により動作を停止するまでの時間」よりも短くなければならない。
【０４８４】
タイムアウトエラーフラグは、（処理１）が長くなりすぎたため、（処理１）と（処理２）の合計時間は、「電源断信号を受けてから電圧低下により動作を停止するまでの時間」よりも長くなったこと、このためバックアップが不完全である可能性を示すものである。タイムアウトエラーフラグに関する処理については後述する。
【０４８５】
２６００ａ、２６００ｂは、通信処理を行っているので電断処理を禁止（抑制）するための電断抑制フラグを記憶する電断抑制フラグ記憶部である。処理Ａ、処理Ｂが通信を開始した後に電断抑制フラグはセットされる。通信処理の開始から電断抑制フラグのセットまでには若干の時間遅延があるが、これは前記タイムラグよりも短い。言い換えれば、前記タイムラグは前記時間遅延の最大値以上になるように設定されている。
【０４８６】
図７２は、図７１の装置のフローチャートである。この図は通信処理対策の部分のみを示している。
図７３乃至図７５は、図７２の装置の動作説明図（タイミングチャート）である。
【０４８７】
以下、図７２乃至図７５を参照して、図７２の装置の動作について説明を加える。
【０４８８】
図７３は、電断処理起動部２４０３の出力に基づき電断フラグがセットされた時点において、通信が行われていなかったケース（電断抑制フラグがセットされていなかったケース）を示す。
【０４８９】
電源スイッチオフにより電圧が低下すると、時刻ｔ１において電断処理起動部２４０３により電断フラグがセットされる。
【０４９０】
タイムラグ設定部２４０２ｃにおりタイムラグが設定され（図７２のＳ１３０）、予め定められた時間経過後（Ｓ１３１でＮＯ）、時刻ｔ２において電断処理部２４０１が起動され、電断処理が開始される（Ｓ１３２でＮＯ、Ｓ１１６）。この処理は時刻ｔ３で完了する。その後、動作停止まで待機状態となる。なお、電断処理Ｓ１１６については前述の説明を参照されたい。
【０４９１】
図７４は、電断処理起動部２４０３の出力に基づき電断フラグがセットされた時点において、通信が行われていたケース（電断抑制フラグがセットされていたケース）であって、電断抑制時間が長すぎてタイムアウトが生じ、タイムアウトエラーフラグが設定されたケースを示す。
【０４９２】
図７４では、上述の（処理１）が長くなりすぎたため、（処理１）と（処理２）の合計時間が「電源断信号を受けてから電圧低下により動作を停止するまでの時間」よりも長くなり、このためバックアップが不完全になされる可能性がある。
【０４９３】
電源スイッチオフにより電圧が低下すると、時刻ｔ１において電断処理起動部２４０３により電断フラグがセットされる。同時に、電断前置処理部２４０２は、図示しないカウンタにより計時を開始する。
【０４９４】
タイムラグ設定部２４０２ｃにおりタイムラグが設定され（図７２のＳ１３０）、予め定められた時間経過後（Ｓ１３１でＮＯ）、時刻ｔ２において電断フラグを調べる。電断フラグがセットされているので（Ｓ１３２でＹＥＳ）、電断処理部２４０１を起動する代わりにタイムアウト計測（Ｓ１３３）及びタイムアウト発生の判定（Ｓ１３４）を行う。タイムアウト発生まで、Ｓ１３２，Ｓ１３３，Ｓ１３４の処理が繰り返される。
【０４９５】
予め定められた時間ΔＴが経過した時刻ｔ１０になると、タイムアウトとなり（Ｓ１３４でＹＥＳ）、タイムアウトエラーフラグがセットされる（Ｓ１３５）。時間ΔＴは、上述の（処理１）と（処理２）の合計時間が「電源断信号を受けてから電圧低下により動作を停止するまでの時間」と等しいか、若干短くなるように設定される。例えば、ΔＴ≦（電源断信号を受けてから電圧低下により動作を停止するまでの時間）−（電断処理に要する時間）である。
【０４９６】
タイムアウトエラーフラグのセット後に電断処理が開始される（Ｓ１１６）。この処理は時刻ｔ３で完了する。その後、動作停止まで待機状態となる。
【０４９７】
図７４のケースでは、通信中にもかかわらず電断処理が開始されている。したがって、当該通信処理に係る通信内容を取りこぼすおそれがある。タイムアウトエラーフラグはこのことを警告するものである。なお、電断処理自体は正常に行われるので電源再投入後の復帰動作には問題はない。ただ当該通信処理については途中であった通信を再度最初から行うようにすることが望ましい。
【０４９８】
図７５は、電断処理起動部２４０３の出力に基づき電断フラグがセットされた時点において、通信が行われていたケース（電断抑制フラグがセットされていたケース）であって、タイムアウトは生じず、タイムアウトエラーフラグが設定されないケースを示す。したがって、バックアップの不完全は生じない。
【０４９９】
電源スイッチオフにより電圧が低下すると、時刻ｔ１において電断処理起動部２４０３により電断フラグがセットされる。同時に、電断前置処理部２４０２は、図示しないカウンタにより計時を開始する。
【０５００】
タイムラグ設定部２４０２ｃにおりタイムラグが設定され（図７２のＳ１３０）、予め定められた時間経過後（Ｓ１３１でＮＯ）、時刻ｔ２において電断フラグを調べる。電断フラグがセットされているので（Ｓ１３２でＹＥＳ）、電断処理部２４０１を起動する代わりにタイムアウト計測（Ｓ１３３）及びタイムアウト発生の判定（Ｓ１３４）を行う。Ｓ１３２，Ｓ１３３，Ｓ１３４の処理が繰り返される。
【０５０１】
予め定められた時間ΔＴが経過する前の時刻ｔ２０において電断抑制フラグがリセットされると（Ｓ１３２でＮＯ）、電断処理が開始される（Ｓ１１６）。この処理は時刻ｔ２１で完了する。その後、動作停止まで待機状態となる。
【０５０２】
図７４のケースでは、通信処理に係る通信内容を取りこぼすおそれはない。したがって、電源再投入後の復帰動作には何ら問題はない。
【０５０３】
本実施の形態によれば、電断フラグがセットされてから所定のタイムラグを経過した後に電断処理を行うので、通信に係るデータを取りこぼすことがない。通信処理を行っている間も電断処理を行わないので、やはり通信に係るデータを取りこぼすことがない。
【０５０４】
また、通信処理を行っている間に電断処理が間に合わなくなるときは、電断処理を優先して行うことによりバックアップに不具合を生じさせないようにできる。そのことを示すタイムアウトエラーフラグにより、当該通信処理に関しては再起動時に何らかの手当て（リセット、通信を最初からやり直すなど）を施すことによりその影響を軽減することができる。
【０５０５】
以上のように、本実施の形態によれば、通信中あるいは通信を開始しようとしている処理についても電源断退避処理を適切に行うことができ、電源再投入後の動作を正常に行えるようにできる。
【０５０６】
なお、以上の本実施の形態は適宜組み合わせることが可能である。図６２、図６５、図７１の装置を全て組み合わせること、あるいはそれらの一部を組み合わせることが可能である。
【０５０７】
＜複数ポインタを用いた電断復帰時の再通知＞
本実施の形態に係る遊技機が用いており、ひとつのＣＰＵが同時に複数の処理を実行するマルチプロセス方式においては、複数の処理（以下「タスク」）の間でコマンド、データのやり取りが行われている。このタスク間の通信を行うために「メールボックス」というものが用いられている。メールボックスとは、メモリ上に確保されたメッセージパケット（以下「メッセージ」）を受け渡すことによりタスク間の通信を行うものである。
【０５０８】
タスク間の通信は、オペレーティングシステム（ＯＳ）のカーネルを介して、ユーザーとユーザー（処理と処理）の間で行われる。カーネルとはＯＳの中核となる部分であり、システムのリソースを管理し、ハードウエアとソフトウエアのコンポーネントのやり取りを行うものである。
【０５０９】
図７６はメッセージの構造を示す。メッセージＭＥＳは、次のメッセージとのリンク情報（カーネル管理部分）ＱＨと、メッセージ本体ＭＢとを含む。メッセージ本体ＭＢは送信元ＩＤ、本文を含む。メッセージ本体の送信ＩＤは、メッセージの種類を示すものであり、例えばコマンド＝０、データ＝１のように予め定められている。メッセージ本体の本文はユーザーが管理するものであり、コマンドやデータの内容をなす。本文は送信元によって型やサイズが異なる。
【０５１０】
図７７は、タスク間の通信手順の説明図である。メッセージの送受信の流れは次のようになっている。
【０５１１】
（１）送信タスク（ユーザー層）が、所定のメッセージを図示しないメッセージバッファ（メモリ）に書き込む。図７７の例では３つのメッセージＭ１、Ｍ２、Ｍ３が用意され、メッセージバッファに書き込まれる。メッセージＭ１、Ｍ２、Ｍ３のメッセージバッファにおけるアドレスはそれぞれ０ｘ１０００、０ｘ１００４、０ｘ１００８である。コマンドの構築及び書き込み処理はタイマー割り込みにより実行される。
【０５１２】
（２）送信タスク処理でメッセージバッファのアドレスをカーネルに送信する。同図の例では、Ｍ１、Ｍ２、Ｍ３の順番で送信する。ここで送信されるのはキューヘッダＱＨのみであり、メッセージ本体ＭＢは送信されない。
【０５１３】
（３）受信タスク処理でカーネルがメッセージバッファのアドレスを受信タスク（ユーザー層）へ送信する。受信順序が送信順序と同じになるように、Ｍ１、Ｍ２、Ｍ３の順番で送信する。これはキューヘッダＱＨにより制御され、図に示すようにメッセージＭ１のキューヘッダにより次のメッセージＭ２が指定され、メッセージＭ２のキューヘッダにより次のメッセージＭ３が指定される。
【０５１４】
（４）受信タスクは、カーネルから受信したアドレスに従い、メッセージバッファからメッセージ本体ＭＢを読み出し、解析を行う。例えば、アドレス＝０ｘ１０００に基づきメッセージＭ１のメッセージ本文を読み出す。メッセージ送信元ＩＤ＝０であればメッセージ本体ＭＢがコマンドであるとしてこれを解析し、メッセージ送信元ＩＤ＝１であればメッセージ本体ＭＢがデータであるとして、先に読み出されたコマンドのパラメータであるとして、両者を併せて解析する。図７７では例えば、メッセージＭ１はコマンドであり、Ｍ２とＭ３はデータである。
【０５１５】
上記手順を具体例に基づき詳しく説明する。
【０５１６】
図７８に示すように、メッセージバッファＭＢＵＦに８個のメッセージＭ１乃至Ｍ８が書き込まれるものとする。書き込みを行うための割り込み処理において、カーネルと直接送受信することはＯＳの仕様上不可能となっている。このため上記（１）の処理でカーネルヘのアドレス送信を行えず、（２）を（１）から分離している。
【０５１７】
メッセージバッファＭＢＵＦを介してメッセージ送信を行うために、本実施の形態では次の３つのポインタを使用している。
【０５１８】
・ＷＲＩＴＥポインタ
メッセージバッファＭＢＵＦ書き込み用のポインタである。タイマー割り込みでメッセージ本体の書き込みが完了したときに更新される。更新により、上記（２）を送信完了していない先頭のメッセージを指し示す。具体的には図７８の０ｘ１０００などの先頭アドレスを示す。
【０５１９】
・ＳＥＮＤポインタ
カーネルヘのアドレス送信用のポインタである。送信タスクでカーネルにメッセージバッファＭＢＵＦのアドレスの送信を完了したときに更新される。更新により、上記（３）を完了していない先頭のメッセージを指し示す。
【０５２０】
・ＲＥＡＤポインタ
メッセージバッファＭＢＵＦのポインタである。受信タスクでカーネルから受信したアドレスに基づきメッセージバッファＭＢＵＦからメッセージ本体ＭＢを読みだしたときに更新される。更新により、上記（４）を完了していない先頭のメッセージを指し示す。
【０５２１】
図７９は、通常時（電断のないとき）の送受信処理を示すタイミングチャートである。符号Ｔ１０１乃至Ｔ１０６はそれぞれ、最初のタイマー割り込み（１）（○１）による処理完了時点、最初の送信１の完了時点、最初の受信１の完了時点（この時点で少なくともメッセージバッファＭＢＵＦからのメッセージＭ１とＭ２の読み出しは完了しているが、その解析は継続している）、タイマー割り込み（４）（○４）による処理完了時点、送信２の完了時点、受信２の完了時点を示す。タイマ割り込み、送信タスク、受信タスクの間を結ぶ矢印は、優先順位に従った処理の移行を示す。
【０５２２】
図８０は、図７９の符号Ｔ１０１乃至Ｔ１０６のタイミングにおける３つのポインタの状態を示す。なお、図８０の符号Ｔ１００は、図７９に示されていない初期状態を示す。ポインタの状態とは、当該ポインタがどのメッセージを指し示しているかについての情報であり、具体的にはメッセージバッファＭＢＵＦのアドレスである。言い換えれば、ポインタの内容はアドレスのデータである。
【０５２３】
図７９及び図８０を参照して、通常時（電断のないとき）の送受信処理を説明する。
【０５２４】
Ｔ１００：初期状態
３つのポインタ全部が最初のアドレスを示している。この状態ではＷＲＩＴＥポインタがメッセージバッファＭＢＵＦにあるのでメッセージＭ１は書き込まれていない。
【０５２５】
Ｔ１０１：タイマー割り込み
タイマー割り込みによりメインコマンドがメッセージバッファＭＢＵＦに登録される。この例では２つのメッセージＭ１とＭ２が書き込まれる。この完了時点でＷＲＩＴＥポインタはＭ２の次の０ｘ１００８を指している。残りのポインタは０ｘ１０００を指している。
【０５２６】
Ｔ１０２：送信タスク
送信タスクによりメッセージＭ１とＭ２のキューヘッダＱＨに渡される。これにともないＳＥＮＤポインタがＷＲＩＴＥポインタと同じ位置に移動する。なお、図７９に示すように処理の優先順位は、タイマー割り込み＞送信タスク＞受信タスクであるので、タイマー割り込み中は送信タスクが中断する（受信タスクも同様）。また、送信タスク完了後に受信タスクが開始される。
【０５２７】
Ｔ１０３：受信タスク
受信タスクはカーネルからメッセージＭ１とＭ２のアドレスの情報を受け、これに基づきメッセージバッファＭＢＵＦからメッセージＭ１とＭ２を読み出す。そしてこれらを解析する。これにともないＲＥＡＤポインタはＭ２の次の０ｘ１００８を指している。
【０５２８】
Ｔ１０４：タイマー割り込み
タイマー割り込みによりメッセージＭ３が書き込まれる。この完了時点でＷＲＩＴＥポインタはＭ３の次の０ｘ１００Ｃを指している。残りのポインタは０ｘ１００８を指すようになる。
【０５２９】
Ｔ１０５：送信タスク
送信タスクによりメッセージＭ３のキューヘッダＱＨに渡される。これにともないＳＥＮＤポインタがＷＲＩＴＥポインタと同じ位置に移動する。
【０５３０】
Ｔ１０６：受信タスク
受信タスクはカーネルからメッセージＭ３のアドレスの情報を受け、これに基づきメッセージバッファＭＢＵＦからメッセージＭ３を読み出す。そしてこれらを解析する。これにともないＲＥＡＤポインタはＭ２の次の０ｘ１００Ｃを指すようになる。
【０５３１】
以上説明した手順によりひとつのタスクから他のタスクへコマンドが送信される。
【０５３２】
もし電断対策を考慮しないのであれば、ＷＲＩＴＥ、ＲＥＡＤポインタだけあればよく、ＳＥＮＤポインタは不要である。ＷＲＩＴＥポインタとＲＥＡＤポインタが不一致であるときに、ＲＥＡＤポインタをＷＲＩＴＥポインタに一致させるようにカーネルへキューヘッダＱＨを渡すとともに、受信タスクでメッセージを読み出せばよい。しかし、電断の際にコマンドの取りこぼしを発生させないようにするためには、ＳＥＮＤポインタが必要である。
【０５３３】
コマンドが電断で消滅してしまうと遊技者に不利益を与える可能性があるため、電断処理において手当する必要がある。しかし、上述のバックアップによればメモリの内容は退避させることができるものの、カーネルが保持していた「次のメッセージとのリンク情報」であるキューヘッダＱＨは失われる。電源再投入時においてキューヘッダＱＨはカーネルにより自動的に初期化されてしまう。すなわち、未読み出しコマンドがある状態で電断が生じると、一部のコマンドが読み出せなくなる。例えば、図７９のＴ１０２で電断が発生したとすると、カーネルにおけるメッセージＭ１とＭ２のキューヘッダＱＨは失われるので、電源再投入後の受信タスクでメッセージＭ１とＭ２はスキップされ、これらを読み出すことができなくなる。
【０５３４】
本実施の形態では、ＳＥＮＤポインタを用いることにより、上記のようなコマンド喪失を避けることができる。
【０５３５】
図８１は、本実施の形態に係るメッセージ送受信部のブロック図である。
【０５３６】
２７００は、送信側の処理である送信タスクである。
【０５３７】
２７０１は、受信側の処理である受信タスクである。
【０５３８】
２７０２は、送信タスク２７００から受信タスク２７０１へのコマンドの伝達に係る処理を行うカーネルである。
【０５３９】
送信タスク２７００、受信タスク２７０１、カーネル２７０２は、ＣＰＵにより実現される機能である。
【０５４０】
２７０３は、上記ＷＲＩＴＥ、ＳＥＮＤ、ＲＥＡＤポインタを記憶するポインタ（レジスタ、メモリ）である。
【０５４１】
２７０４は、電断の際に、メモリ（例えば図６２のメモリ２４００）の少なくとも一部のデータについてバックアップを行う電断処理部である。
【０５４２】
２７０５は、電源投入の際に、バックアップされたデータに基づき予め定められた復帰処理を行う復帰処理部である。
【０５４３】
２７０６は、バックアップデータを保持するバックアップ（メモリ）である。これは図５８のＭ２に相当する。
【０５４４】
ＭＢＵＦは、メッセージを記憶するメッセージバッファである。この記憶内容については既に説明した。
【０５４５】
図８２は、本実施の形態に係る電断処理のフローチャートである（ポインタのバックアップ部分のみ示す）。
【０５４６】
図８３は、本実施の形態に係る復帰処理のフローチャートである（ポインタの復帰処理部分のみ示す）。
【０５４７】
図８４は、電断のあるときの送受信処理を示すタイミングチャートである。符号Ｔ１１１乃至Ｔ１１６はそれぞれ、最初のタイマー割り込み（１）（○１）による処理完了時点、最初の送信１の完了時点（＝電断の直前）、電断の直後（復帰処理後）、タイマー割り込み（３）（○３）による処理完了時点、送信２の完了時点、受信２の完了時点を示す。
【０５４８】
図８５は、図８４の符号Ｔ１１１乃至Ｔ１１６のタイミングにおける３つのポインタの状態を示す。なお、図８５の符号Ｔ１１０は、図８４に示されていない初期状態を示す。
【０５４９】
図８１乃至図８５を参照して、電断のあるときの送受信処理を説明する。
【０５５０】
Ｔ１１０：初期状態
３つのポインタ全部が最初のアドレスを示している。この状態ではＷＲＩＴＥポインタがメッセージバッファＭＢＵＦにあるのでメッセージＭ１は書き込まれていない。
【０５５１】
Ｔ１１１：タイマー割り込み
送信タスク２７００が、ＷＲＩＴＥポインタに従いメッセージバッファＭＢＵＦにメッセージを書き込むとともに、ポインタ２７０３のＷＲＩＴＥポインタを動かす。図８４では、タイマー割り込みによりメインコマンドがメッセージバッファＭＢＵＦに登録される。この例では２つのメッセージＭ１とＭ２が書き込まれる。この完了時点でＷＲＩＴＥポインタはＭ２の次の０ｘ１００８を指している。残りのポインタは０ｘ１０００を指している。
【０５５２】
Ｔ１１２：送信タスク
送信タスクによりメッセージＭ１とＭ２のキューヘッダＱＨがカーネル２７０２に渡される。これにともないＳＥＮＤポインタがＷＲＩＴＥポインタと同じ位置に移動する。
この時点あるいはこの直後に電断が発生し、上述の電断処理により３つのポインタＷＲＩＴＥ、ＳＥＮＤ、ＲＥＡＤがバックアップされる（図８２のＳ１４０）。
【０５５３】
Ｔ１１３：復帰処理
電源が再投入されたとき、メッセージのキューヘッダＱＨは復帰時にカーネルにより自動的に初期化される。このため、上述のように未読み出しコマンド（図８４の例ではＭ１とＭ２）があるときに電断した場合は、何らかの手当を行わない限り受信タスクにてそれらコマンドを読み出せなくなる。そこで復帰処理部２７０５が図８３の処理を行う。
【０５５４】
Ｓ１５０：ＷＲＩＴＥポインタとＲＥＡＤポインタが一致しているかどうか確認する。
一致していれば（Ｓ１５０でＹＥＳ）、カーネルにてキューヘッダＱＨは失われていないから図８３の処理を抜け、他の復帰処理を行う。
一致していなければ（Ｓ１５０でＮＯ）、Ｓ１５１の処理を行う。
【０５５５】
Ｓ１５１：ＳＥＮＤポインタをＲＥＡＤポインタの位置まで戻す。
不一致の場合はメッセージバッファＭＢＵＦに未読み出しコマンドがあると判断し、ＳＥＮＤポインタをＲＥＡＤポインタの位置まで戻す。
【０５５６】
Ｓ１５２：カーネルにてキューヘッダＱＨが失われていたコマンドＭ１、Ｍ２を送信タスクから受信タスクへ再送信する。
この時点でＲＥＡＤポインタとＳＥＮＤポインタは先頭の０ｘ１０００を指している。
【０５５７】
Ｔ１１４：タイマー割り込み
タイマー割り込みによりメッセージＭ３が書き込まれる。この完了時点でＷＲＩＴＥポインタはＭ３の次の０ｘ１００Ｃを指している。残りのポインタは０ｘ１０００を指したままである。
【０５５８】
Ｔ１１５：送信タスク
送信タスクによりメッセージＭ１、Ｍ２、Ｍ３のキューヘッダＱＨがカーネルに渡される。これにともないＳＥＮＤポインタがＷＲＩＴＥポインタと同じ位置に移動する。
【０５５９】
Ｔ１１６：受信タスク
受信タスク２７０１が、ＲＥＡＤポインタに従いメッセージバッファＭＢＵＦからメッセージを読み出すとともに、ポインタ２７０３のＲＥＡＤポインタを動かす。受信タスクはカーネルからメッセージＭ１、Ｍ２、Ｍ３のアドレスの情報を受け、これに基づきメッセージバッファＭＢＵＦからメッセージＭ１、Ｍ２、Ｍ３を読み出す。そしてこれらを解析する。これにともないＲＥＡＤポインタはＭ２の次の０ｘ１００Ｃを指すようになる。
【０５６０】
本実施の形態によれば、コマンドの書き込みを示すＷＲＩＴＥポインタ及びコマンドの読み出しを示すＲＥＡＤポインタとともに、送信タスクから受信タスクへのメッセージ伝達を仲介するカーネルへの送信依頼（キューヘッダ）を示すＳＥＮＤポインタを使用し、電断の際にこれら３つのポインタをバックアップし、電断復帰時においてＳＥＮＤポインタをＲＥＡＤポインタの位置に戻すことにより、電断によりカーネルにおいて失われた送信依頼を復活させることができる。したがって、電断復帰時のカーネルの自動初期化により、次のメッセージとのリンク情報であるキューヘッダが消滅しても、未読み出しコマンドのバッファアドレスを再送信するので、コマンドを取りこぼすことがなくなる。
【０５６１】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【符号の説明】
【０５６２】
２４００    バックアップ対象メモリ
２４０１    電断処理部
２４０２    電断前置処理部
２４０２ａ  優先度変更部
２４０２ｂ  処理実行状態監視部
２４０３    電断処理起動部
【図１】
2014039766.tif 000003
【図２】
2014039766.tif 000004
【図３】
2014039766.tif 000005
【図４】
2014039766.tif 000006
【図５】
2014039766.tif 000007
【図６】
2014039766.tif 000008
【図７】
2014039766.tif 000009
【図８】
2014039766.tif 000010
【図９】
2014039766.tif 000011
【図１０】
2014039766.tif 000012
【図１１】
2014039766.tif 000013
【図１２】
2014039766.tif 000014
【図１３】
2014039766.tif 000015
【図１４】
2014039766.tif 000016
【図１５】
2014039766.tif 000017
【図１６】
2014039766.tif 000018
【図１７】
2014039766.tif 000019
【図１８】
2014039766.tif 000020
【図１９】
2014039766.tif 000021
【図２０】
2014039766.tif 000022
【図２１】
2014039766.tif 000023
【図２２】
2014039766.tif 000024
【図２３】
2014039766.tif 000025
【図２４】
2014039766.tif 000026
【図２５】
2014039766.tif 000027
【図２６】
2014039766.tif 000028
【図２７】
2014039766.tif 000029
【図２８】
2014039766.tif 000030
【図２９】
2014039766.tif 000031
【図３０】
2014039766.tif 000032
【図３１】
2014039766.tif 000033
【図３２】
2014039766.tif 000034
【図３３】
2014039766.tif 000035
【図３４】
2014039766.tif 000036
【図３５】
2014039766.tif 000037
【図３６】
2014039766.tif 000038
【図３７】
2014039766.tif 000039
【図３８】
2014039766.tif 000040
【図３９】
2014039766.tif 000041
【図４０】
2014039766.tif 000042
【図４１】
2014039766.tif 000043
【図４２】
2014039766.tif 000044
【図４３】
2014039766.tif 000045
【図４４】
2014039766.tif 000046
【図４５】
2014039766.tif 000047
【図４６】
2014039766.tif 000048
【図４７】
2014039766.tif 000049
【図４８】
2014039766.tif 000050
【図４９】
2014039766.tif 000051
【図５０】
2014039766.tif 000052
【図５１】
2014039766.tif 000053
【図５２】
2014039766.tif 000054
【図５３】
2014039766.tif 000055
【図５４】
2014039766.tif 000056
【図５５】
2014039766.tif 000057
【図５６】
2014039766.tif 000058
【図５７】
2014039766.tif 000059
【図５８】
2014039766.tif 000060
【図５９】
2014039766.tif 000061
【図６０】
2014039766.tif 000062
【図６１】
2014039766.tif 000063
【図６２】
2014039766.tif 000064
【図６３】
2014039766.tif 000065
【図６４】
2014039766.tif 000066
【図６５】
2014039766.tif 000067
【図６６】
2014039766.tif 000068
【図６７】
2014039766.tif 000069
【図６８】
2014039766.tif 000070
【図６９】
2014039766.tif 000071
【図７０】
2014039766.tif 000072
【図７１】
2014039766.tif 000073
【図７２】
2014039766.tif 000074
【図７３】
2014039766.tif 000075
【図７４】
2014039766.tif 000076
【図７５】
2014039766.tif 000077
【図７６】
2014039766.tif 000078
【図７７】
2014039766.tif 000079
【図７８】
2014039766.tif 000080
【図７９】
2014039766.tif 000081
【図８０】
2014039766.tif 000082
【図８１】
2014039766.tif 000083
【図８２】
2014039766.tif 000084
【図８３】
2014039766.tif 000085
【図８４】
2014039766.tif 000086
【図８５】
2014039766.tif 000087