(57)【特許請求の範囲】
【請求項１】
遊技者の遊技操作に対応して遊技動作を進行させるメイン処理と、割込み周期（τ）毎にメイン処理を中断させて繰返し起動される割込み処理と、を有して構成された遊技機であって、
複数種類の出力信号、及び／又は、複数種類の入力信号のＯＮ／ＯＦＦ状態を示すレベル情報を、割込み周期（τ）毎に、データ記憶領域に時間順次に保存する保存処理と、割込み周期（τ）毎に、所定アドレスに記憶されているタイミング情報を更新して所定アドレスに上書き保存する更新処理と、を割込み処理に設ける一方、
所定アドレスの記憶内容を繰り返し判定して、タイミング情報が所定値になるまで待機する同期処理と、
データ記憶領域を参照して第一信号の時間的推移に基づいて第一信号のレベル変化を検出する検出処理と、
検出処理を終えた後、直ちに又は必要な処理を実行した後、同期処理に移行する移行処理と、をメイン処理に設け、
同期処理の終了から移行処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、割込み周期（τ）以下に設定すると共に、検出処理に先行して同期処理を実行することで、検出処理の開始から移行処理の終了までに、次の割込み処理が開始されないよう構成されていることを特徴とする遊技機。
【請求項２】
遊技者の遊技操作に対応して遊技動作を進行させるメイン処理と、割込み周期（τ）毎にメイン処理を中断させて繰返し起動される割込み処理と、を有して構成された遊技機であって、
複数種類の出力信号、及び／又は、複数種類の入力信号のＯＮ／ＯＦＦ状態を示すレベル情報を、割込み周期（τ）毎に、データ記憶領域に保存する保存処理と、割込み周期（τ）毎に、所定アドレスに記憶されているタイミング情報を更新して所定アドレスに上書き保存する更新処理と、を割込み処理に設ける一方、
所定アドレスからタイミング情報を取得して一時記憶した後、タイミング情報が所定値になるまで待機する同期処理と、
データ記憶領域を参照して第一信号に対応した動作をする第一処理と、
データ記憶領域を参照して第二信号に対応した動作をする第二処理と、をメイン処理に設け、
同期処理の終了から、第一処理及び第二処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、割込み周期（τ）以下に設定すると共に、第一処理及び第二処理に先行して同期処理を実行することで、第一処理の開始から第二処理の終了までに、次の割込み処理が開始されないよう構成されていることを特徴とする遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ装置を内蔵する電子遊技機に関し、特に、回胴遊技機に好適に適用される。
【背景技術】
【０００２】
スロットマシンなどの回胴遊技機では、遊技者がメダル投入口にメダルを投入してスタートレバーを操作すると、これに応じて、回転リールの回転が開始される。そして、遊技者がストップボタンを押して回転リールを停止させたとき、有効な停止ライン（以下、有効ラインという）に図柄が揃うと、その図柄に応じた配当メダルが払い出されるようになっている。
【０００３】
但し、実際には、各ゲームの当否状態は、遊技者が停止操作を開始するまでに、主制御部における内部抽選処理（以下、図柄抽選処理ということがある）によって予め決定されており、この抽選処理によって内部当選した図柄を、遊技者が有効ライン上に揃えることで配当メダルが払出される（特許文献１〜特許文献３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１４３２９１号公報
【特許文献２】特開２００８−２８９９０６号公報
【特許文献３】特開２００７−１５１５６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような動作を実現する制御動作のうち、特に問題になるので制御時間に余裕がなく、且つ、誤動作が許されない停止制御である。すなわち、ストップボタンのＯＮ操作から所定の回転角度の範囲内で、内部抽選処理の当選結果に対応する図柄を停止させる必要があるので、迅速な処理が要求される一方、ストップボタン操作を誤認して不自然な停止制御を実行したのでは遊技者に大きな不信感を与えてしまう。
【０００６】
なお、その他のボタン操作や、メダル投入操作や、スタートレバー操作などについても、また、異常検出についても、スイッチ信号の遷移を誤認することが許されないことは同様である。
【０００７】
本発明は、上記の問題点に鑑みてなされたものであって、スイッチ信号の遷移を誤認することなく適切な制御動作を実現できる遊技機を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、請求項１に係る発明は、遊技者の遊技操作に対応して遊技動作を進行させるメイン処理と、割込み周期（τ）毎にメイン処理を中断させて繰返し起動される割込み処理と、を有して構成された遊技機であって、複数種類の出力信号、及び／又は、複数種類の入力信号のＯＮ／ＯＦＦ状態を示すレベル情報を、割込み周期（τ）毎に、データ記憶領域に時間順次に保存する保存処理と、割込み周期（τ）毎に、所定アドレスに記憶されているタイミング情報を更新して所定アドレスに上書き保存する更新処理と、を割込み処理に設ける一方、所定アドレスの記憶内容を繰り返し判定して、タイミング情報が所定値になるまで待機する同期処理と、データ記憶領域を参照して第一信号の時間的推移に基づいて第一信号のレベル変化を検出する検出処理と、検出処理を終えた後、直ちに又は必要な処理を実行した後、同期処理に移行する移行処理と、をメイン処理に設け、同期処理の終了から移行処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、割込み周期（τ）以下に設定すると共に、検出処理に先行して同期処理を実行することで、検出処理の開始から移行処理の終了までに、次の割込み処理が開始されないよう構成されている。
【０００９】
本発明は、例えば、実施例のように、複数回の信号レベルの推移に基づいて、信号エッジを検出する場合に有効に機能する。例えば、実施例のように、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮのように信号レベルが推移すると、割込み処理においてＯＮエッジ情報を記憶し、この記憶内容に基づいて、遊技機の設定値を更新する場合を想定する（図１０（ｂ）のＳＰ５６参照）。
【００１０】
このような場合、単に、同期処理の終了から移行処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、割込み周期（τ）以下に設定しただけでは、スイッチ信号の誤検出が生じるおそれがある。
【００１１】
図１６は、この点を説明する図面であり、図１６（ｄ）や図１６（ｅ）に示す●のタイミングで、ＯＮエッジ情報が参照されると仮定すると、割込み処理の起動タイミングによっては、図１６（ｅ）に示すように、タイミングｔ２〜ｔ３の間に、ＯＮエッジ情報が二回参照される可能性があり、単一のスイッチ操作でありながら、設定値が＋２されてしまうおそれがある。なお、作図の関係で、図１６（ｅ）では、＋２となっているが、実際の処理（図１０のＳＰ５４〜５４）では、時間幅がα＜＜（τ−β）となるので、比較例の構成（図１６（ｃ））では、相当数（（τ−β）／α）、設定値がいたずらに増加する。
【００１２】
これに対して、本発明では、検出処理に先行して同期処理が実行されるので、割込み周期（τ）の間に、検出処理が複数回実行されるおそれがなく、必ず、最新のＯＮエッジ情報が一回だけ参照されるので誤動作が生じない。
【００１３】
なお、入力信号について具体的に本発明の意義を説明したが、この効果は、入力信号であるか出力信号であるかを問わない。また、上記の説明では、ＯＮエッジ情報が（割込み処理によって）データ記憶領域に記憶されていることを前提にしたが、何ら、限定されない。すなわち、ＯＮ／ＯＦＦ状態を示すレベル情報が、割込み処理によってデータ記憶領域に時間順次に保存される以上、メイン処理では、そのレベル情報を評価することで、ＯＮエッジやＯＦＦエッジを特定することが可能である。
【００１４】
請求項２に係る発明は、遊技者の遊技操作に対応して遊技動作を進行させるメイン処理と、割込み周期（τ）毎にメイン処理を中断させて繰返し起動される割込み処理と、を有して構成された遊技機であって、複数種類の出力信号、及び／又は、複数種類の入力信号のＯＮ／ＯＦＦ状態を示すレベル情報を、割込み周期（τ）毎に、データ記憶領域に保存する保存処理と、割込み周期（τ）毎に、所定アドレスに記憶されているタイミング情報を更新して所定アドレスに上書き保存する更新処理と、を割込み処理に設ける一方、所定アドレスからタイミング情報を取得して一時記憶した後、タイミング情報が所定値になるまで待機する同期処理と、データ記憶領域を参照して第一信号に対応した動作をする第一処理と、データ記憶領域を参照して第二信号に対応した動作をする第二処理と、をメイン処理に設け、同期処理の終了から、第一処理及び第二処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、割込み周期（τ）以下に設定すると共に、第一処理及び第二処理に先行して同期処理を実行することで、第一処理の開始から第二処理の終了までに、次の割込み処理が開始されないよう構成されている。
【００１５】
本発明は、例えば、同一タイミングにおける第一信号と第二信号の信号レベルを対比して、所定の制御動作を実行するような場合に有効に機能する。なお、本発明の意義は、第一処理と第二処理を含んだ繰返し処理（破線参照）があるか否かを問わない。
【００１６】
具体例としては、例えば、違法行為を検出するため、メダル通過方向に連続配置される２つのメダル通過センサや、遊技機の設定動作に使用する２つのスイッチ信号などを例示することができる。特に、違法行為を確実に検出するためには、第一信号と第二信号の取得は、常に同一タイミングである必要があるが、本発明の構成によれば、取得タイミングのズレがない。
【００１７】
図１７は、本発明の意義を説明する図面であり、図１７（ｄ）や図１７（ｅ）に示す●のタイミングで、第一信号と第二信号が参照され、機器構成上、第一信号が先ず立上がり、これに続いて、第二信号が立上るよう構成されていると仮定する。
【００１８】
このような場合、例えば、図１７（ｃ）のような通常の構成の場合には、割込みタイミングによっては、タイミングｔ０前後の第一信号（Ｌレベル）を取得する一方で、タイミングｔ１前後の第二信号（Ｈレベル）を取得することがあり、正常状態でありながら、これを異常事態と誤判定する可能性がある。すなわち、第一信号と第二信号は、本来、（Ｌ，Ｌ）→（Ｈ，Ｌ）→（Ｈ，Ｈ）の推移しか無いにも拘らず、（Ｌ，Ｌ）→（Ｌ，Ｈ）が検出されて、異常事態が発生した誤判定してしまうことになる。
【００１９】
これに対して、本発明では、第一処理及び第二処理に先行して同期処理が実行されるので（図１７（ａ）参照）、同一の取得タイミングの２つの信号が参照されるので誤判定のおそれがない。
【００２０】
本発明は、好ましくは、前記第一処理及び第二処理を終えた後、直ちに又は必要な処理を実行した後、前記同期処理に移行する移行処理を、更に前記メイン処理に設け、前記同期処理の終了から前記移行処理の終了までの処理時間（α）と、割込み処理の全処理時間（β）との総和を、前記割込み周期（τ）以下に設定するべきである。
【００２１】
また、前記データ記憶領域は、複数種類の入力信号のレベル情報を、時間順次に保存するＮ区画された第一部と、レベル情報の時間的推移に基づいて特定される各入力信号のエッジ情報を記憶する第二部と、を有し、前記保存処理は、最古のレベル情報を除いた第一部のＮ−１区画のレベル情報を、１区画分だけ最古方向に移動させ、その割込み時に取得された最新のレベル情報を第一部の最新区画に保存するよう構成され、最新のレベル情報と過去のレベル情報を比較して、ＯＮエッジ及び／又はＯＦＦエッジを検出して、エッジ情報として第二部に記憶するエッジ処理を、更に、前記割込み処理に設けるのも好適である。
【００２２】
また、好ましくは、第二部を参照して第一入力信号の所定エッジ情報が検出される場合には、対応する第一制御処理を実行する第一処理と、第二部を参照して第二入力信号の所定エッジ情報が検出される場合には、対応する第二制御処理を実行する第二処理と、を前記メイン処理に設けるべきである。
【００２３】
遊技者が享受可能な利益の期待値を規定する設定値を特定するための設定処理は、前記第一処理と、前記第二処理を具備して構成され、第二制御処理が実行されることで、前記設定値が変更される一方、第一制御処理が実行されることで、設定処理が終わるよう構成するのも好適である。
【００２４】
また、請求項２の発明では、第一部を参照して第一入力信号のレベル変化が検出される場合には、対応する第一制御処理を実行する第一処理と、第二部を参照して第二入力信号の所定のエッジ情報が検出される場合には、対応する第二制御処理を実行する第二処理と、を前記メイン処理に設けるのが好ましい。
【００２５】
この場合、遊技者の操作に対応して実行される回転体の回転開始動作、及び／又は、回転停止動作を設けて構成され、回転開始動作を指示するスイッチ操作は、第二処理に基づいて検出される一方、回転停止操作を指示するスイッチ操作は、第一処理に基づいて検出されるよう構成するのが好適である。
【００２６】
また、上記の各発明において、前記タイミング情報を繰り返し取得して、取得値が規定値に達したことを条件に、その後の処理に移行する遅延処理をメイン処理に設けるのも好適である。また、第一部は、４区画されて構成され、前記入力信号がＯＦＦ，ＯＦＦ，ＯＮ，ＯＮと推移した場合には、ＯＮエッジが検出されたと判定すること、及び／又は、前記入力信号がＯＮ，ＯＮ，ＯＦＦ，ＯＦＦと推移した場合には、ＯＦＦエッジが検出されたと判定するのが好適である。
【００２７】
前記タイミング情報は、カウンタで構成され、割込み処理毎に前記カウンタの値が更新されるよう構成されるか、前記タイミング情報は、フラグで構成され、割込み処理毎に前記フラグが第１値に設定される一方、前記同期処理を終えた後、メイン処理において第２値に設定されるよう構成されるのが典型的である。
【００２８】
なお、遊技者の遊技操作に対応して遊技動作を進行させるメイン処理と、所定時間毎にメイン処理を中断させて起動される割込み処理と、を有し、複数の回転体を停止させる停止操作によって遊技動作が進行するよう構成された遊技機であって、前記複数の回転体の回転制御開始時に、回転制御対象となる回転体の管理値が第１値に設定される一方、停止制御開始時には、停止制御対象となる回転体の管理値が第２値に設定される回転管理データを設け、前記割込み処理では、停止操作の有無を所定時間毎に判定して、少なくとも今回と前回の連続回の判定結果を記憶するよう構成され、前記割込み処理による直近の判定結果が、停止操作ありの判定結果であっても、停止操作に対応する回転管理データの管理値が第２値である場合には、その回転体に対する停止制御を開始しないよう構成された第一処理を設けるのも好適である。
【００２９】
本発明では、回転管理データの管理値を踏まえて停止制御を開始するので、例えば、停止状態の回転体について停止制御を開始するような無駄がなく、本来の停止制御を迅速に開始することができる。
【００３０】
好ましくは、前記割込み処理による前回の判定結果が、所定の回転体について停止操作ありの判定結果である場合には、その回転体についての回転管理データの管理値が第１値であっても、停止制御を開始しないよう構成された第二処理を設けるべきである。このように構成することで、停止制御を開始済みの回転体について、重複した停止制御が防止され、本来の停止制御を迅速に開始することができる。なお、第一処理と第二処理の実行順番は特に限定されない。
【００３１】
また、第一処理及び／又は第二処理が実効化されないことを条件に実行され、前記割込み処理による直近の判定結果が、停止操作ありの判定結果であって、且つ、停止操作に対応する回転管理データの管理値が第１値である場合には、その回転体に対する停止制御を開始すると共に、その回転体についての回転管理データを第２値に設定するよう構成された第三処理を設けるのが好ましい。
【００３２】
第一処理と第二処理を先行させることで、スイッチ信号を誤認する可能性が事実上ゼロとなり、しかも、迅速に停止制御を開始することができる。
【００３３】
好ましくは、第一処理ないし第三処理は、メイン処理に含まれているべきである。前記割込み処理には、管理カウンタを更新する処理が含まれており、管理カウンタの値が変化したことを条件に、第一処理ないし第三処理の実行が許可されるのが好ましい。
【００３４】
前記割込み処理では、直近Ｎ回分のスイッチ信号を記憶すると共に、Ｎ回分のスイッチ信号の推移に基づいてＯＮエッジ、及び／又は、ＯＦＦエッジを検出して記憶しており、前記スイッチ信号には、前記停止操作を示す停止スイッチ信号が含まれているのが好適である。ここで、前記スイッチ信号には、回転体の回転開始操作を示す開始スイッチ信号が含まれており、前記割込み処理が検出したＯＮエッジ又はＯＦＦエッジに基づいて、これに対応する回転体の回転制御が開始されるのが好適である。
【００３５】
また、前記スイッチ信号には、電源電圧の降下を示す電源異常信号が含まれているのも好適である。前記割込み処理では、複数のスイッチ信号を受ける入力ポートのデータを毎回取得し、最新のバイト長データとして、過去Ｎ−１回のバイト長データと共に、入力バッファ領域に記憶すると共に、各スイッチ信号のＯＮエッジ又はＯＦＦエッジを、前記入力バッファ領域のデータに基づいて同一アルゴリズムで検出して、バイト長データとして該当領域に記憶するよう構成するのも好適である。
【００３６】
この場合、電源遮断後も記憶内容が維持されるバックアップ領域と、電源電圧の降下時に所定情報を前記バックアップ領域に記憶する電断処理とを設ける一方、前記電断処理では、前記入力バッファ領域の記憶内容に拘らず、その時の入力ポートから取得した最新の電源異常信号に基づいて、所定情報を記憶するよう構成されているのが好適であり、前記電源異常信号は、他のスイッチ信号と共に入力ポートに供給されると共に、遅延回路を経由した後に、コンピュータ回路の割込み端子にも供給されると更に好適である。
【発明の効果】
【００３７】
上記した本発明に係る遊技機によれば、スイッチ信号の遷移を誤認することなく、適切な制御動作が可能となる。
【図面の簡単な説明】
【００３８】
【図１】実施例に係るスロットマシンの正面図である。
【図２】図１のスロットマシンの右側面図（ａ）と平面図（ｂ）である。
【図３】スロットマシンの前面パネルを背面から図示した図面である。
【図４】スロットマシンの本体ケースの内部正面図である。
【図５】図１のスロットマシンの回路構成を示すブロック図である。
【図６】電源基板の回路構成を示すブロック図である。
【図７】主制御基板の回路構成を示すブロック図である。
【図８】乱数生成回路を例示する回路図である。
【図９】乱数生成回路の動作を説明するタイムチャートである。
【図１０】主制御部におけるメイン処理を説明するフローチャートである。
【図１１】メイン処理の回胴開始設定処理を説明するフローチャートと、回胴制御フラグを説明する図面である。
【図１２】メイン処理の回胴開始設定処理を説明するフローチャートである。
【図１３】タイマ割込み処理と、電断時のＮＭＩ割込み処理を説明するフローチャートである。
【図１４】タイマ割込み処理のポート入力処理を説明するフローチャートである。
【図１５】タイマ割込み処理の回胴回転制御処理を説明するフローチャートである。
【図１６】本発明の効果を説明する図面である。
【図１７】本発明の効果を説明する別の図面である。
【発明を実施するための形態】
【００３９】
以下、実施例に基づいて本発明を更に詳細に説明する。図１〜図４は、実施例に係るスロットマシンＳＬを図示したものである。本スロットマシンＳＬは、矩形箱状の本体ケース１と、各種の遊技部材を装着した前面パネル２とが、ヒンジ３を介して連結され、前面パネル２が本体ケース１に対して開閉可能に構成されている（図２）。そして、図１は前面パネル２の正面図、図２はスロットマシンＳＬの右側面図（ａ）と平面図（ｂ）、図３は前面パネル２の背面図、図４は本体ケース１の内部正面図を示している。
【００４０】
図４に示す通り、本体ケース１の略中央には、３つの回転リール４ａ〜４ｃを備える図柄回転ユニット４が配置され、その下側に、メダル払出装置５が配置されている。各回転リール４ａ〜４ｃには、ＢＢ図柄、ＲＢ図柄、各種のフルーツ図柄、及びリプレイ図柄などが描かれている。メダル払出装置５には、メダルを貯留するメダルホッパー５ａと、払出モータＭと、メダル払出制御基板５５と、払出中継基板６３と、払出センサ（不図示）などが設けられている。ここで、メダルは、払出モータＭの回転に基づいて、払出口５ｂから図面手前に向けて導出される。なお、限界量を越えて貯留されたメダルは、オーバーフロー部５ｃを通して、補助タンク６に落下するよう構成されている。
【００４１】
上記のメダル払出装置５に隣接して電源基板６２が配置され、また、図柄回転ユニット４の上部に主制御基板５０が配置され、主制御基板５０に隣接して回胴設定基板５４が配置されている。なお、図柄回転ユニット４の内部には、回胴ＬＥＤ中継基板５８と回胴中継基板５７とが設けられ、図柄回転ユニット４に隣接して外部集中端子板５６が配置されている。
【００４２】
図１に示すように、前面パネル２の上部には液晶表示ユニット７が配置されている。この表示ユニット７には、各種のキャラクタを表示することで遊技動作を効果的に盛り上げている。液晶表示ユニット７の下部には、回転リール４ａ〜４ｃに対応する３つの表示窓８ａ〜８ｃが配置されている。表示窓８ａ〜８ｃを通して、各回転リール４ａ〜４ｃの回転方向に、各々３個程度の図柄が見えるようになっており、合計９個の図柄の水平方向の三本と、対角線方向の二本が仮想的な停止ラインとなる。
【００４３】
このような表示窓８ａの左側には、遊技状態を示すＬＥＤ群９が設けられ、その下方には、遊技成果として払出されるメダル数を表示する払出表示部１０や、クレジット状態のメダル数を表示する貯留数表示部１１が設けられている。
【００４４】
払出表示部１０は、７セグメントＬＥＤを２個連設して構成されており、払出メダル数を特定すると共に、何らかの異常事態の発生時には、異常内容を表示するエラー表示器としても機能している。
【００４５】
前面パネル２の垂直方向中央には、メダルを投入するメダル投入口１２が設けられ、これに隣接して、メダル投入口１２に詰まったメダルを返却させるための返却ボタン１３が設けられている。また、クレジット状態のメダルを払出すクレジット精算ボタン１４と、メダル投入口１２へのメダル投入に代えてクレジット状態のメダルを擬似的に一枚投入する投入ボタン１５と、クレジット状態のメダルを擬似的に三枚投入するマックス投入ボタン１６とが設けられている。
【００４６】
これらの遊技部材の下方には、回転リール４ａ〜４ｃの回転を開始させるスタートレバー１７と、回転中の回転リール４ａ〜４ｃを停止させるためのストップボタン１８ａ〜１８ｃが設けられている。
【００４７】
遊技者がスタートレバー１７を操作すると、通常は、３つの回転リール４ａ〜４ｃが、正方向に正常回転を開始するが、内部当選状態を予告するリール演出時には、回転リール４ａ〜４ｃの全部又は一部が、変則的に回転した上で正常回転を開始する。
【００４８】
図１に示す通り、前面パネル２の下方には、メダルを蓄える横長の受け皿１９と、払出装置５の払出口５ｂに連通するメダル導出口２０とが設けられている。なお、メダル導出口２０の左右にはスピーカＳＰが配置されている。
【００４９】
図３に示すように、前面パネル２の裏側には、メダル投入口１２に投入されたメダルの選別を行うメダル選別装置２１と、メダル選別装置２１により不適正と判別されたメダルをメダル導出口２０に案内する返却通路２２とが設けられている。また、前面パネル３の裏側上部には、演出制御基板５１、演出インタフェイス基板５２、及び液晶制御基板６１などを収容する基板ケース２３が配置されている。そして、メダル選別装置２１の上部には、図１に示す各種の遊技部材と主制御基板５０との間の信号を中継する遊技中継基板５３が設けられている。
【００５０】
図５は、実施例に係るスロットマシンＳＬの回路構成を示すブロック図である。図示の通り、このスロットマシンＳＬは、回転リール４ａ〜４ｃを含む各種の遊技部材の動作を制御する主制御基板５０と、主制御基板５０から受けた制御コマンドに基づいて演出動作を実現する演出制御基板５１と、交流電圧（２４Ｖ）を直流電圧（５Ｖ，１２Ｖ，２４Ｖ）に変換して装置各部に供給する電源基板６２とを中心に構成されている。
【００５１】
主制御基板５０は、演出制御基板５１に対して、スピーカＳＰによる音声演出、ＬＥＤランプや冷陰極線管放電管によるランプ演出、及び、液晶表示ユニット７による図柄演出を実現するための制御コマンドを出力している。そして、演出制御部５１では、主制御基板５０から、内部抽選結果を特定する制御コマンド（遊技開始コマンド）受けると、内部抽選結果に対応してアシストタイム当選状態とするか否かのＡＴ抽選を実行している。
【００５２】
また、演出制御部５１は、主制御基板５０から、リール演出を実行することを示す制御コマンド（フリーズコマンド）を受けた場合には、主制御基板５０で実行するリール演出に対応する適宜な演出動作を開始する。
【００５３】
これらの動作のため、演出制御基板５１は、演出インタフェイス基板５２を通して、液晶制御基板６１に接続されており、液晶制御基板６１は、液晶表示（ＬＣＤ）ユニット７における適宜な図柄演出を実現している。
【００５４】
また、演出制御基板５１は、演出インタフェイス基板５２と共に、ＬＥＤ基板５９やインバータ基板６０や回胴ＬＥＤドライブ基板５８を経由して、各種のＬＥＤや冷陰極線管放電管におけるランプ演出を実現している。更にまた、演出制御基板５１は、演出インタフェイス基板５２を通してスピーカＳＰを駆動して音声演出を実現している。
【００５５】
なお、演出制御基板５１においてＡＴ抽選に当選した後の所定回数のゲーム（ＡＴ中）では、小役当選状態において、その図柄を停止ラインに整列できるよう、３つの回転リールの停止順序を遊技者に報知している。
【００５６】
主制御基板５０は、遊技中継基板５３を通して、スロットマシンの各種遊技部材に接続されている。具体的には、スタートレバー１７の始動スイッチ、ストップボタン１８ａ〜１８ｃの停止スイッチ、投入ボタン１５，１６の投入スイッチ、清算ボタン１４の清算スイッチ、前面パネル２の開閉を認識するドアセンサ、上流側センサを構成するレバー検知センサ、メダル通過センサを構成するフォトインタラプタＰＨ１，ＰＨ２、不正メダルの通過を阻止するブロッカーをＯＮ／ＯＦＦ制御するブロッカーソレノイド３０、及び、各種ＬＥＤ素子９〜１１などに接続されている。
【００５７】
このように、主制御基板５０は、遊技中継基板５３を経由して、各種のスイッチ信号を受けるが、スタートレバー１７の操作を示すスタートレバー信号ＬＶについては、Ｉ／Ｏポート回路６４ｅと、乱数生成回路ＧＮＲに重複して供給されている（図７参照）。そして、乱数生成回路ＧＮＲでは、スタートレバー信号ＬＶのＯＮエッジに基づいてハード乱数値を生成している。また、Ｉ／Ｏポート回路６４ｅを経由して受けるスタートレバー信号ＬＶに基づいて、回転リールの回転開始に向けた動作を開始させている。なお、この実施例では、便宜上、スタートレバー信号ＬＶのＯＦＦエッジに基づいて回転リールの回転開始に向けた処理を開始するが、ＯＮエッジに基づいて処理を開始させるのも好適である。
【００５８】
図５に示す通り、主制御基板５０は、回胴中継基板５７を経由して、回転リール４ａ〜４ｃを回転させる３つのステッピングモータ、及び、回転リール４ａ〜４ｃの基準位置を検出するためのインデックスセンサに接続されている。そして、ステッピングモータを駆動又は停止させることによって、回転リール４ａ〜４ｃの回転動作と、目的位置での停止動作を実現している。
【００５９】
また、主制御基板５０は、払出中継基板６３を通してメダル払出装置５にも接続されている。メダル払出装置５には、メダル払出制御基板５５と、メダル満杯センサと、メダル払出センサと、払出モータＭとが設けられており、メダル払出制御基板５５は、主制御基板５０からの制御コマンドに基づいて払出モータＭを回転させて、所定量のメダルを払出している。
【００６０】
メダル満杯センサは、補助収納庫にメダルが満杯状態になったオーバーフロー異常を検出し、メダル払出センサは、払出メダル枚数が不足する不足異常や、遊技機による払出動作を伴わない異常払出を検出している。そして、これらのセンサ信号は、ドア開放センサなどと共に、払出中継基板６３を経由して主制御基板５０に伝送される（図５、図７参照）。
【００６１】
その他、主制御基板５０は、外部集中端子板５６と、回胴設定基板５４にも接続されている。外部集中端子板５６は、例えばホールコンピュータＨＣに接続されており、主制御基板５０は、外部集中端子板５６を通して、メダルの投入枚数やメダルの払出枚数などを出力している。
【００６２】
また、回胴設定基板５４は、遊技機の設定値を変更するために、係員が該当キー穴に設定キーを挿入したこと示す設定キー信号などを出力している。ここで、設定値とは、当該遊技機で実行される抽選処理の当選確率などを、設定１から設定６まで６段階で規定するもので、遊技ホールの営業戦略に基づいて適宜に設定される。例えば、最高ランクに設定された遊技機は、メダル払出枚数の期待値が最高レベルであるため、遊技者にとって最も有利である。
【００６３】
そして、設定キー信号は、リセットスイッチ信号、自動清算スイッチ信号、打ち止めスイッチ信号などと共に、回胴設定基板５４から主制御基板５０に伝送されている（図５、図７参照）。なお、リセットスイッチは、係員によって操作され、設定キー挿入時には、設定値の変更を主制御部５０に指示するために使用され、異常時には、その異常事態が解消されたことを主制御部５０に通知するために使用される。
【００６４】
図６は、電源基板６２の回路構成を示すブロック図である。この電源基板６２は、交流２４Ｖを受けて脈流電圧に変換する整流部８０と、脈流電圧を直流５Ｖに変換する第１電圧変換部８１と、脈流電圧を直流１２Ｖに変換する第２電圧変換部８２と、脈流電圧を直流２４Ｖに変換する第３電圧変換部８３と、第１電圧変換部８１の出力電圧を蓄電する蓄電部８４と、電源投入を検出して電源リセット信号ＲＳＴを出力すると共に、電源電圧の降下を検出して電源異常ＡＢＮを出力する電源監視部８５とで構成されている。
【００６５】
蓄電部８４は、大容量（１ファラッド程度）のコンデンサＣと、過電流用の制限抵抗ｒ１、ｒ２と、逆方向電流を阻止するダイオードＤとで構成されている。なお、制限抵抗ｒ１は７５Ω程度、制限抵抗ｒ２は１０Ω程度である。コンデンサＣの両端電圧は、バックアップ電源として、ワンチップマイコン６４に供給されている。
【００６６】
このバックアップ電源は、ワンチップマイコン６４に内蔵されたＳＲＡＭ(static ram)に供給されており、電源電圧の遮断状態でも、通常７〜８日はＲＡＭ(Random Access Memory)の記憶内容を保持するようにしている。なお、ＲＡＭの記憶容量は、この実施例では、遊技機のワークエリアとして使用される５１２バイト程度である。
【００６７】
電源監視部８５は、交流入力電圧２４Ｖの電圧レベルと、直流電源電圧５Ｖの電圧レベルとを監視している。そして、何れか一方のレベルが所定値を下回ると、電源異常信号ＡＢＮが異常レベルに変化するよう構成されている。瞬停や停電などの異常時には、先ず、交流入力電圧の電圧降下に対応して、電源異常信号ＡＢＮが素早く出力される。
【００６８】
図７は、主制御基板５０の回路構成を図示したものである。図示の通り、主制御基板５０は、ワンチップマイコン６４と、回胴モータ駆動回路６５と、演出制御基板５１やその他の基板５３，５４，５６，６３とのインタフェイス基板６６〜６８とを中心に構成されている。インタフェイス回路６６は、演出制御基板５１に制御コマンドを出力するための８ビットパラレルポートである。また、回胴モータ駆動回路６９は、回転リール４ａ〜４ｃのステッピングモータの駆動信号を生成する回路であり、回胴中継基板５７を経由して回転リールを回転駆動及び停止駆動を実現している。
【００６９】
ワンチップマイコン６４は、Ｚ８０相当品のＣＰＵコア６４ａ、ＲＯＭ、ＲＡＭの他に、ＣＴＣ(Counter/Timer Circuit) ６４ｂ、割込みコントローラ６４ｃ、Ｉ／Ｏポート回路６４ｄ，６４ｅ、及び、乱数生成回路ＧＮＲを内蔵している。なお、Ｉ／Ｏポート回路は、後述する入力ポートＩＮ０〜入力ポートＩＮ２を含んでいる。
【００７０】
図示の通り、ワンチップマイコン６４のリセット端子ＲＳＴには、電源基板６２から受ける電源リセット信号ＲＳＴが供給されている。そのため、電源投入時には、ＣＰＵコア６４ａがリセット状態となり、ＲＯＭの先頭アドレス以降の制御プログラム（図１０）の実行が開始される。
【００７１】
また、ワンチップマイコン６４の割込み端子ＮＭＩ(Non Maskable Interrupt)には、電源基板６２から受ける電源異常信号ＡＢＮが供給されている。そのため、電源異常時には、ＣＰＵコア６４ａが割込み許可状態であるか否かに拘らず、ＮＭＩ割込み処理（図１３（ｂ））が起動される。図示の通り、電源異常信号ＡＢＮは、割込み端子ＮＭＩに供給される一方、Ｉ／Ｏポート回路６４ｅにも供給されている。ここで、割込み端子ＮＭＩに供給される電源異常信号ＡＢＮは、２つのＮＯＴゲートを経由することで所定の遅延時間が確保されている。一方、Ｉ／Ｏポート回路６４ｅ（入力ポートＩＮ１）には、電源異常信号ＡＢＮが遅延なく供給されるので、ＮＭＩ割込み処理（図１３（ｂ））のステップＳＴ６０のタイミングで、異常レベルの電源異常信号ＡＢＮを読み落とすおそれがない。
【００７２】
ＣＴＣ６４ｂは、８ｂｉｔのカウンタやタイマを集積した回路であり、Ｚ８０システムに、周期的割り込みや一定周期のパルス出力作成機能（ビットレートジェネレータ）や時間計測の機能を付与するものである。そこで、本実施例では、ＣＴＣ６４ｂを利用して、Ｚ８０ＣＰＵ６４ａに１．５ｍＳの時間間隔τでタイマ割込み（図１３（ａ））をかけている。
【００７３】
乱数生成回路ＧＮＲは、計数クロックΦを受けて更新されるカウンタＣＴと、スタートレバー１７がＯＮ操作されたタイミングのカウンタＣＴのカウンタ値を保持する１６ビット長の乱数値レジスタＲＲと、乱数値レジスタＲＲに新規のハード乱数値が取得されるとＯＮ状態となるラッチレジスタＬＲとを有して構成されている。図７に示す通り、スタートレバー（始動スイッチ）１７のＯＮ操作を示すスタートレバー信号ＬＶは、乱数生成回路ＧＮＲと共に、入力ポートＩＮ０にも供給されるよう構成されている。
【００７４】
図８は、この乱数生成回路ＧＮＲを具体的に示す回路図である。図示の通り、乱数生成回路ＧＮＲは、周波数ｆのクロックパルスをクロック端子ＣＫに受ける第１フリップフロップ９１と、第１フリップフロップのＱバー出力をクロック端子ＣＫに受ける第２フリップフロップ９２と、第１フリップフロップのＱ出力を受けて計数動作を実行する２つのカウンタ９３Ｌ，９３Ｈと、第１と第２のカウンタ９３Ｌ，９３Ｈの出力を各々受ける第１と第２のラッチ回路９４Ｌ，９４Ｈと、２つのラッチ回路９４Ｌ，９４ＨとＣＰＵデータバスとの間に配置される第１と第２のバッファ９５Ｌ，９５Ｈと、スタートレバー信号ＬＶのＯＮ状態を操作検出信号ＤＥＴとして記憶する操作記憶回路ＨＩＴと、を中心に構成されている。クロックパルスは、ワンチップマイコン６４の外部から供給されるか、或いは、ワンチップマイコン６４に内蔵されたカウンタタイマ回路ＣＴＣから供給される。
【００７５】
操作記憶回路ＨＩＴは、第３フリップフロップ９６と、第１と第２のＡＮＤゲートＧ１，Ｇ２と、３個のＮＯＴゲートＧ３〜Ｇ５と、第３バッファ９７とを中心に構成されている。
【００７６】
本実施例では、操作記憶回路ＨＩＴの第３フリップフロップ９６と第３バッファ９７とで、スタートレバー信号ＬＶのＯＮ状態（操作検出信号ＤＥＴ）を記憶するラッチレジスタＬＲを実現している。また、第１と第２のラッチ回路９４Ｌ，９４Ｈ及び第１と第２のバッファ９５Ｌ，９５Ｌが、全体として乱数値レジスタＲＲを構成している。
【００７７】
第１〜第３のフリップフロップ９１，９２，９６は、全てＤ型フリップフロップで構成されており、クロック端子ＣＫに供給される信号が立上ると、そのときのＤ入力端子のデータが記憶されてＱ出力端子に出力される。また、クリア端子ＣＬＲに、Ｌレベルの信号が供給されると、Ｑ出力が強制的にＬレベルとなる一方、Ｑバー出力がＨレベルとなる。
【００７８】
第１と第２のフリップフロップ９１，９２のクリア端子ＣＬＲには、電源基板６２から出力される電源リセット信号ＲＳＴが直接供給されているので、電源投入時に、Ｑ出力端子は自動的にＬレベルとなる。
【００７９】
第１フリップフロップ９１は、そのＱバー出力が、自らのＤ入力端子に帰還されている。そのため、第１フリップフロップ９１は、周波数ｆのクロックパルスに対する二分周回路として機能して、そのＱ出力端子から、デューティ比５０％で周波数ｆ／２のクロックパルスが出力される。本実施例において、このクロックパルスは、第１カウンタ９３Ｌに供給される計数クロックΦとなる。なお、第１フリップフロップ９１のＱバー出力端子からは、論理反転された計数クロックΦバーが出力される。
【００８０】
第２フリップフロップ９２は、Ｄ入力端子にスタートレバー信号ＬＶを受けている。また、クロック端子ＣＫには、論理反転された計数クロックΦバーを受けている。そのため、計数クロックΦバーが立上ったタイミングで、スタートレバー信号ＬＶが記憶されて、Ｑ出力端子に出力される。この出力信号（ラッチ信号）ＬＴは、操作記憶回路ＨＩＴに供給される。
【００８１】
２つのカウンタ９３Ｌ，９３Ｈは、Ｑ０〜Ｑ７の８ビット出力端子を有するバイナリカウンタである。そして、第１カウンタ９３Ｌは、第１フリップフロップ９１が出力する計数クロックΦをクロック端子ＣＫに受け、第２カウンタ９３Ｈは、第１カウンタのＱ７出力を、クロック端子ＣＫに受けてカウント動作を実行している。したがって、２つのカウンタ９３Ｌ，９３Ｈからは、計数クロックΦの立上りエッジに同期して更新される００００Ｈ〜ＦＦＦＦＨの何れかの数値が出力される。ここで、Ｈは１６進数を意味する。
【００８２】
また、カウンタ９３Ｌ，９３Ｈのクリア端子ＣＬＲには、電源基板６２から出力される電源リセット信号ＲＳＴが供給されているので、電源投入時には、カウンタ９３Ｌ，９３Ｈの出力が自動的に００００Ｈにリセットされる。
【００８３】
第１と第２のラッチ回路９４Ｌ，９４Ｈは、例えば、７４８２５などと同等に構成され、８個のＤ型フリップフロップを内蔵して構成されている。そして、ラッチ回路９４Ｌ，９４Ｈのクロック端子ＣＫに供給される信号が立上ると、その時にカウンタ９３Ｌ，９３Ｈから供給されている各８ビットデータを、ハード乱数値ＲＮＤとして記憶して出力する。図示の通り、クロック端子ＣＫには、第１ＡＮＤゲートＧ１の出力が供給されている。
【００８４】
第１と第２のバッファ９５Ｌ，９５Ｈは、７４２４４などと同等の汎用のバスバッファであり、ＣＰＵからＬレベルのチップセレクト信号ＣＳ１，ＣＳ２をＯＥ(output enable) 端子に受けると、ラッチ回路９４Ｌ，９４Ｈから受けている各８ビットデータ（ハード乱数値ＲＮＤ）を出力する。図示の通り、チップセレクト信号ＣＳ２は、バッファ９５ＨのＯＥ端子と共に、第２ＡＮＤゲートＧ２の入力端子にも供給されている。なお、バッファ９５Ｌ，９５Ｈは、３状態バッファであり、ＯＥ端子がＨレベルであると出力端子はＨｉＺ状態となる。
【００８５】
操作記憶回路ＨＩＴを構成する第１のＡＮＤゲートＧ１の入力端子には、第２フリップフロップ９２のＱ出力と、２つのＮＯＴゲートＧ４〜Ｇ５を経由する第３フリップフロップ９６のＱバー出力が供給されている。第２フリップフロップ９２のＱ出力は、ラッチ信号ＬＴであり、第３フリップフロップ９６のＱバー出力は、制御信号ＣＴＬである。なお、ラッチ信号ＬＴと制御信号ＣＴＬは、Ｈレベルにプルアップされている。
【００８６】
制御信号ＣＴＬは、操作検出信号ＤＥＴを論理反転したレベルであるが、２つのＮＯＴゲートＧ４〜Ｇ５を経由することで、操作検出信号ＤＥＴより遅れて、第１ＡＮＤゲートＧ１に供給される。第１ＡＮＤゲートＧ１の出力は、第１と第２のラッチ回路９４Ｌ，９４Ｈのクロック端子ＣＫに供給されると共に、ＮＯＴゲートＧ３を経由して、第３フリップフロップ９６のクロック端子ＣＫに供給されている。
【００８７】
ラッチ回路９４Ｌ，９４Ｈ及び第３フリップフロップ９６は、自らのクロック端子ＣＫに受ける信号が立上ると、各々の入力端子に供給されているデータを内部に記憶するラッチ動作をする。そのため、第１ＡＮＤゲートＧ１の出力信号（ＬＴ＊ＣＴＬ）の立上りタイミングで、ラッチ回路９４Ｌ，９４Ｈがラッチ動作を実行する一方、第１ＡＮＤゲートＧ１の出力信号の立下がりタイミングで、第３フリップフロップ９６がラッチ動作を実行する。但し、第３フリップフロップ９６のクロック端子ＣＫにはＮＯＴゲートＧ３を経由した反転ラッチ信号ＬＴ＊ＣＴＬバーが供給されているので、ラッチ回路９４Ｌ，９４Ｈのラッチ動作にやや遅れて、第３フリップフロップ９６がラッチ動作する。
【００８８】
第３フリップフロップ９６のＤ入力端子には、Ｈレベルの電圧Ｖｃｃが固定的に供給されている。また、第３フリップフロップ９６のＱ出力は、バッファ９７に供給されている。なお、第３フリップフロップ９６のＱ出力は、操作検出信号ＤＥＴを意味する。
【００８９】
バッファ９７は、７４２４４などのバスバッファと同等の回路構成であり、ＣＰＵからＬレベルのチップセレクト信号ＣＳ３を、ＯＥ端子に受けると、第３フリップフロップ９６から受けている１ビットデータ（操作検出信号ＤＥＴ）を出力する。なお、バッファ９７も３状態バッファである。
【００９０】
第２ＡＮＤゲートＧ２の入力端子には、チップセレクト信号ＣＳ２と電源リセット信号ＲＳＴとが供給されている。そして、第２ＡＮＤゲートＧ２の出力は、第３フリップフロップ９６のクリア端子ＣＬＲに供給されている。そのため、チップセレクト信号ＣＳ２と電源リセット信号ＲＳＴの何れか、又は双方がＬレベルとなると、第３フリップフロップ９６のＱ出力はＬレベルとなり、Ｑバー出力はＨレベルとなる。
【００９１】
もっとも、電源リセット信号ＲＳＴは、遊技機が正常に動作を開始した後は定常的にＨレベルであり、チップセレクト信号ＣＳ２は、バッファ９５ＨのデータがＣＰＵに取得されるデータリードタイミング以外はＨレベルである。したがって、第３フリップフロップ９６のＱバー出力（制御信号ＣＴＬ）は、電源投入時に、第３フリップフロップ９６がクリアされてＨレベルとなった後もＨレベルを維持する。
【００９２】
このような初期状態で、スタートレバー信号ＬＶがＯＮ状態となると、ラッチ信号ＬＴが立下るタイミングで、第３フリップフロップ９６のＱバー出力がＬレベルに変わり、乱数値レジスタＲＲ（バッファ９５Ｈ）のデータリードタイミングまで、制御信号ＣＴＬはＬレベルを維持する。一方、バッファ９５Ｈのデータリードによって、第３フリップフロップ９６のＱバー出力がＨレベルに戻ると、所定の遅延時間の経過後は、制御信号ＣＴＬはＨレベルを維持する。
【００９３】
図９は、上記した乱数生成回路ＧＮＲの各部の波形を示すタイムチャートである。図９（ａ）（ｂ）に示す通り、計数クロックΦの立上りに同期して、カウンタ９３Ｌ，９３Ｈの計数値が連続的に更新される。なお、第１カウンタ９３Ｌが、ハード乱数値ＲＮＤの下位８ビットを生成し、第２カウンタ９３Ｈが、ハード乱数値ＲＮＤの上位８ビットを生成する。
【００９４】
このようなカウンタ値の更新動作中、スタートレバー１７がＯＮ操作されると、スタートレバー信号ＬＶが、Ｈレベル（ＯＮ状態）に立上った後に、Ｌレベル（ＯＦＦ状態）に立下がる。このスタートレバー信号ＬＶは、第２フリップフロップ９２のＤ入力端子に供給されているので、計数クロックΦバーが立上ったタイミングで、スタートレバー信号ＬＶが第２フリップフロップ９２に記憶されて、そのＱ出力端子に出力される。そして、この出力信号は、ラッチ信号ＬＴとして、操作記憶回路ＨＩＴに供給される（図９（ｃ）〜（ｅ）参照）。
【００９５】
本実施例では、スタートレバー信号ＬＶをそのままラッチ信号として使用するのではなく、スタートレバー信号ＬＶを、計数クロックΦバーで整形してラッチ信号ＬＴとしている。そのため、スタートレバー信号ＬＶの立上り時や、立下り時にリンギングが生じても、そのような振動成分は、計数クロックΦバーによって自動的に吸収される。
【００９６】
第２フリップフロップ９２から出力されたラッチ信号ＬＴは、第１ＡＮＤゲートＧ１の入力端子を経由して、ラッチ信号ＬＴ＊ＣＴＬとして、２つのラッチ回路９４Ｌ，９４Ｈのクロック端子ＣＫに供給されている。したがって、第１ＡＮＤゲートＧ１に供給されている制御信号ＣＴＬがＨレベルであれば、ラッチ信号の立上りタイミング（Ｔ１）で、カウンタ９３Ｌ，９３Ｈの出力データが、ハード乱数値ＲＮＤとしてラッチ回路９４Ｌ，９４Ｈに取得される。図９（ｈ）に示すように、通常のタイミングでは、制御信号ＣＴＬがＨレベルであるので、スタートレバー信号ＬＶに対応して、ハード乱数値ＲＮＤがラッチ回路９４Ｌ，９４Ｈに取得されることになる。
【００９７】
なお、本実施例では、スタートレバー信号ＬＶが生じる任意のタイミングで、ラッチ回路９４Ｌ，９４Ｈを動作させるのではなく、計数クロックΦバーの立上りタイミングでラッチ回路９４Ｌ．９４Ｈを動作させている。計数クロックΦバーは、デューティ比が５０％であり、その立上りタイミング（Ｔ１）は、計数クロックΦの立下りタイミングに一致する。そして、カウンタ９３Ｌ，９３Ｈは、計数クロックΦの立上りタイミングで更新されるので、結局、本実施例の構成によれば、カウンタ９３Ｌ，９３Ｈの更新タイミングから正確に１／２周期遅れて、カウンタ９３Ｌ，９３Ｈの安定した出力データがラッチされるという利点がある。
【００９８】
これに対して、ランダムなタイミングでラッチ回路を動作させたり、或いは、カウンタの更新タイミングとラッチ動作のタイミングとが十分に離れていないと、更新途中の不合理なカウンタ値を取得してしまう可能性がある。
【００９９】
ところで、ラッチ信号ＬＴ＊ＣＴＬは、ＮＯＴゲートＧ３において論理反転されて、第３フリップフロップ９６のクロック端子ＣＫに供給されている（図９（ｆ）参照）。そのため、ラッチ信号ＬＴの立下りタイミング（Ｔ２）で、第３フリップフロップ９６のＱ出力がＨレベルとなる。このＨレベルは、スタートレバー信号ＬＶがＯＮ状態となったことを示す操作検出信号ＤＥＴに他ならず、ＣＰＵは、タイミングＴ２以降、バッファ９７（ラッチレジスタＬＲ）を経由して、ハード乱数値ＲＮＤがラッチ済みであることを把握可能となる。なお、スタートレバー信号ＬＶは、Ｉ／Ｏポート回路６４ｅ（入力ポートＩＮ０）にも供給されており（図７）、この実施例では、スタートレバー信号ＬＶのＯＦＦエッジに基づいて回転リールの回転開始に向けた処理が開始される。
【０１００】
操作検出信号ＤＥＴがＨレベルになると、第３フリップフロップ９６のＱバー出力がＬレベルとり、このＱバー出力は、２つのＮＯＴゲートＧ４〜Ｇ５を経由して、Ｌレベルの制御信号ＣＴＬとして第１ＡＮＤゲートＧ１に供給されている。そのため、万一、その後、スタートレバー１７の多重操作などによって、ラッチ信号ＬＴが改めてＨレベルに立上っても（タイミングＴ３）、ラッチ回路９４Ｌ，９４Ｈがラッチ動作をすることはない。
【０１０１】
ところで、ＣＰＵは、タイマ割込み周期（１．５ｍＳ）毎に、バッファ９７（ラッチレジスタＬＲ）のデータを取得して、ハード乱数値ＲＮＤがラッチ済みか否かを判定している（図１４のＳＴ７３）。そして、ラッチレジスタＬＲがＯＮ状態であれば、ＣＰＵは、乱数値レジスタＲＲからハード乱数値ＲＮＤを取得している（図１４のＳＴ７４）。具体的には、タイミングＴ４において、バッファ９５Ｌとバッファ９５Ｈを、この順番でアクセスして、ラッチ回路９４Ｌ，９４Ｈにラッチされているハード乱数値ＲＮＤ（１６ビット長）を８ビット毎に取得している。したがって、タイミングＴ２〜タイミングＴ４までの時間間隔は、１．５ｍＳ以下である。
【０１０２】
そして、チップセレクト信号ＣＳ１，ＣＳ２は、タイミングＴ４において、この順番にＬレベルとなる。そして、チップセレクト信号ＣＳ２がＬレベルとなると、第２ＡＮＤゲートＧ２の出力がＬレベルに変化するので、第３フリップフロップ９６のＱバー出力が、ＬレベルからＨレベルに変化する。また、この遷移動作にやや遅れて、制御信号ＣＴＬが初期状態のＨレベルに戻る。
【０１０３】
なお、極めて稀には、図９（ｄ）に示すように、スタートレバー１７の多重操作などによって、ＣＰＵのデータリードタイミング（Ｔ４）に先行して、ラッチ信号ＬＴがＨレベルとなる可能性も否定できない（タイミングＴ３参照）。そして、このような場合には、制御信号ＣＴＬが初期状態のＨレベルに戻ったタイミング（Ｔ４＋Δ）で、ラッチ回路９４Ｌ，９４Ｈが、新規のハード乱数値をラッチすると思われる。
【０１０４】
しかし、本実施例では、第３フリップフロップ９６のＱバー出力は、２つのＮＯＴゲートＧ４〜Ｇ５を経由して制御信号ＣＴＬとなるので、制御信号ＣＴＬは、タイミングＴ４からやや遅れて（Ｔ４＋Δ）、初期状態に戻ることになり、このタイミング（Ｔ４＋Δ）では、ハード乱数値の取得処理（ＳＴ７４）を終えているので何ら問題が生じない。
【０１０５】
なお、その後、多重操作されたスタートレバー１７がＯＦＦ状態に戻ると（タイミングＴ５）、これに合せて、操作検出信号ＤＥＴが立上り、ラッチレジスタＬＲがＯＮ状態となる。しかし、このタイミングでは、タイミングＴ４に取得したハード乱数値ＲＮＤに基づいて抽選用乱数値ＬＯＴの特定処理（ＳＴ５）を終えており、また、内部抽選処理（ＳＴ６）も終えているので、追加してハード乱数値を取得することがあっても（図１４のＳＴ７４参照）、特に問題にならない。なお、この実施例では、各回のゲーム開始時であって、スタートレバー１７の操作が可能になるタイミングで、乱数値レジスタＲＲをリード（空読み）することで、制御信号ＣＴＬをＨレベルに初期設定している（図１０（ｃ）のＳＰ６３参照）。
【０１０６】
続いて、主制御基板５０のワンチップマイコン６４（以下、主制御部５０という）が実現する制御動作を説明する。図１０〜図１４は、主制御部５０が実行する制御プログラムを説明するフローチャートである。主制御部５０の制御プログラムは、電源投入時などＣＰＵリセット後に開始されるメイン処理（図１０）と、ＣＴＣからの定期割込みで一定時間τ毎に起動されるマスク可能な(Maskable Interrupt)タイマ割込み処理（図１３（ａ））と、電断時に電源基板６２からの電源異常信号ＡＢＮで起動されるマスク不能の(Non Maskable Interrupt)ＮＭＩ割込み処理（図１３（ｂ））とで構成されている。
【０１０７】
そこで、先ず、図１０に示すメイン処理から説明する。ＣＰＵがリセットされると適宜な初期処理（ＳＴ１）の後、電断前に実行されていた処理を再開してホットスタートするか、或いは、ＲＡＭクリア処理後にステップＳＴ２の処理に移行してコールドスタートする。
【０１０８】
例えば、電源投入時に係員によるドア開放の操作が無く、且つ、電断時のバックアップ処理に異常が検出されない場合には、遊技動作をホットスタートするべく、電断復帰処理が実行される。なお、ＮＭＩ割込み処理（図１３（ｂ）参照）で保存されるチェックサム値（ＳＴ６３）、バックアップフラグの値（ＳＴ６４）、及び、スタックポインタの値（ＳＴ６２）が不合理な値でないことが、電断復帰処理（ホットスタート処理）の実行条件となる。
【０１０９】
一方、係員がドアを開放して設定キーを該当キー穴に挿入した場合には（ＳＰ５０）、コールドスタート処理として、電断時に保存していたＲＡＭの記憶内容を、設定値データを除いてクリアした後（ＳＰ５１）、当該遊技機の設定値を適宜に変更する（ＳＰ５２〜ＳＰ５６）。
【０１１０】
具体的には、ＲＡＭクリア処理（ＳＰ５１）でクリアされなかった設定値データに基づいて、当該遊技機の設定値を表示し（ＳＰ５２）、図１２（ｂ）に示す割込み同期処理を一回実行する（ＳＰ５３）。すなわち、ＢＣレジスタを０に設定した上で、割込み同期処理（図１２（ｂ））を実行する。
【０１１１】
割込み同期処理（ＳＰ５３）の処理が一回終われば、次に、スタートレバー１７がＯＦＦ状態であることを条件に（ＳＰ５４）、リセットスイッチがＯＮ操作される毎に（ＳＰ５５）、設定値を循環的に増加される（ＳＰ５６）。そして、スタートレバー１７をＯＮ操作されると設定処理を終え、ステップＳＴ２の処理に移行させる（ＳＰ５４）。
【０１１２】
なお、これらの処理において、スタートレバー１７やリセットスイッチのＯＮ操作は、各スイッチ信号のＯＮエッジで判定され、ＯＮエッジか否かは、入力バッファ領域（図１４（ｃ））の該当番地（ＩＮ１ＢＵＦ＋４番地）の値に基づいて判定される。
【０１１３】
後述するように、各スイッチ信号は、タイマ割込みの周期（τ）で取得されており、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮの推移が認められると、ＩＮ１ＢＵＦ＋４番地の該当ビットが、ＯＮ状態にセットされるようになっている（図１４（ｂ）参照）。また、割込み同期処理（ＳＰ５３）は、タイマ割込み処理（図１３（ａ））を終えたタイミングで処理を終える。
【０１１４】
そして、本実施例では、ステップＳＰ５３の処理を終えてから、ステップＳＰ５４→ＳＰ５６→ＳＰ５２の処理を終えるまでの処理時間（α）とタイマ割込み処理の処理時間（β）の総和は、タイマ割込み周期（τ）より短く設定されている（図１６参照）。
【０１１５】
そのため、ステップＳＰ５５の処理において、一々、リセットスイッチのデータを再読込みすることなく、入力バッファ領域（図１４（ｃ））の該当番地（ＩＮ１ＢＵＦ＋４番地）の値を参照するだけで、誤動作なく設定値を変更できる。すなわち、もし、割込み同期処理（ＳＰ５３）を設けない場合には、ＩＮ１ＢＵＦ＋４番地の値が更新されるまでの余り時間（≒τ）の間に、ステップＳＰ５５→ＳＰ５６の処理が繰り返されて、設定値がいたずらに増加するが、本実施例の場合には、ＩＮ１ＢＵＦ＋４番地の値が更新されまで待機するので、リセットスイッチの１回のＯＮ操作で、設定値が正しく＋１される。
【０１１６】
以上、設定値の変更動作（ＳＰ５３〜ＳＰ６５）について詳細に説明したので、続いて、ステップＳＴ２以降の無限ループ処理について説明する。ステップＳＴ２の処理に移行すると、主制御部５０では、一連のメインループ処理（ＳＴ２〜ＳＴ１７）を定常的に繰返す。そして、最初に、ＲＡＭのワークエリアを適宜にクリアし、また、遊技制御を管理する各種のフラグを適宜に初期設定する（ＳＴ２）。次に、そのゲームにおける遊技状態フラグを生成する（ＳＴ３）。ここで、遊技状態フラグとは、現在のゲームが、「ボーナスゲーム中」か、「ボーナス内部当選中」か、「通常ゲーム中」か、などの遊技状態を特定するフラグである。
【０１１７】
続いて、メダル投入口１２から実際に投入されたメダル、及び、投入ボタン１５、１６の押下によって擬似的に投入されたメダルについての投入メダル管理処理が実行される（ＳＴ４）。投入メダル管理処理（ＳＴ４）では、遊技者が投入又は擬似投入したメダルを検出して、その投入枚数を判定し、その後、スタートレバー１７がＯＮ操作されるとサブルーチン処理を終了する。この場合、メダルが１枚投入される毎に、そのことを示す制御コマンド（投入コマンド）が送信バッファにセットされ、図１３（ａ）に示すタイマ割込み処理のコマンド出力処理（ＳＴ５４）において、演出制御部５１に送信される。なお、このタイミングでは、遊技者による清算動作を示す清算コマンドなどが送信されることもある。
【０１１８】
図１０（ｃ）は、投入メダル管理処理（ＳＴ４）の一部を図示したものである。図示の通り、規定枚数のメダルが投入されると（ＳＰ６１）、遊技開始（スタートレバーの操作）を許可すること示すＬＥＤを点灯させる（ＳＰ６２）。なお、メダルが正しく投入されたか否かの判定（ＳＰ６０）は、上流側と下流側のメダル通過センサＰＨ１，ＰＨ２の出力に基づいて実行され、ＢＣレジスタ＝０とする割込み同期処理（図１２（ｂ））を先行させている（図１７参照）。
【０１１９】
次に、この実施例では、乱数生成回路ＧＮＲのラッチレジスタＬＲをＯＦＦ状態に初期設定している（ＳＰ６３）。これは、制御信号ＣＴＬを初期レベル（Ｈ）に設定する処理であるが、図８の乱数生成回路ＧＮＲの場合には、例えば、バッファ９５Ｈのデータを空読みすることでステップＳＰ６３の処理が実現される。なお、図８の乱数生成回路ＧＮＲの回路構成を変更することで、ステップＳＰ６３の処理を不要にすることもできる。
【０１２０】
何れにしても、その後、スタートレバー１７がＯＮ操作されると、遊技開始表示ＬＥＤを消灯させるなどの処理を実行してサブルーチン処理を終える（ＳＰ６５）。なお、メダルの投入（ＳＰ６０）は、該当センサ信号のＯＮエッジで判定されるが、スタートレバー１７のＯＮ操作（ＳＰ６４）は、本実施例では、スタートレバー信号ＬＶのＯＦＦエッジで判定される。そして、この構成に対応して、ステップＳＰ６４の判定処理を終えて、ステップＳＴ５の処理を開始するまでに、タイマ割込み周期（１．５ｍＳ）程度の時間を消費するよう構成されている。
【０１２１】
以上のように構成されたメダル投入管理処理（ＳＴ４）が終わると、乱数値レジスタＲＲから取得済みのハード乱数値ＲＮＤに基づいて、抽選用乱数値ＬＯＴを生成してＲＡＭの該当番地に記憶する（ＳＴ５）。先に説明した通り、ハード乱数値ＲＮＤは、スタートレバー信号ＬＶのＯＮエッジに対応して乱数値レジスタＲＲに取得され（図９のタイミングＴ１）、スタートレバー信号ＬＶのＯＦＦエッジ後、タイマ割込み処理のステップＳＴ７４（図１４）の処理で、乱数値レジスタＲＲからＣＰＵに取得されている（図９のタイミングＴ４）。
【０１２２】
そして、抽選用乱数値ＬＯＴの生成手法は、適宜に変更できるが、この実施例では、別途ソフトウェア処理で生成しているソフト乱数値と、ハード乱数値ＲＮＤとを加算することで、抽選用乱数値ＬＯＴとしている。
【０１２３】
次に、ステップＳＴ５の処理で記憶した抽選用乱数値ＬＯＴに基づいて内部抽選処理（図柄抽選処理）を実行する（ＳＴ６）。この図柄抽選処理では、ボーナス図柄への当選か否か、小役図柄への当選か否か、再遊技を示すリプレイ図柄への当選か否かが決定され、決定された抽選結果を示す制御コマンド（遊技開始コマンド）が送信バッファにセットされ、タイマ割込み処理のコマンド出力処理（ＳＴ５４）によって演出制御部５１に送信される。なお、小役図柄としては、例えば、「チェリー図柄」、「ベル図柄」、「スイカ図柄」、「チャンス図柄」などを例示することができる。
【０１２４】
このような当選確率の内部抽選処理（ＳＴ６）が終われば、次に、リール演出を実行するか否かを決定するリール演出抽選処理を実行する（ＳＴ７）。リール演出抽選処理において選出可能な演出は、内部抽選処理（ＳＴ６）の結果に対応して適宜に規定されている。そして、リール演出抽選に当選すると、リール演出特定フラグＲＦがＲＦ＝１となる。
【０１２５】
リール演出抽選（ＳＴ７）が終われば、回転リール４ａ〜４ｃの回転を開始させるべく、回胴開始設定処理を実行する（ＳＴ８）。回胴開始設定処理は、図１１（ａ）に示す通りであり、最初に、ウェイトタイマ処理を実行して、ゲーム時間間隔が所定時間を超えるまで待機する（ＳＴ２０）。ゲーム時間間隔は適宜に設定されるが、例えば、４．１秒に設定されることで、運が悪い場合でも、メダルを過大に消費することが防止される。
【０１２６】
具体的な処理内容は、図１１（ｄ）に示す通りであり、ＴＩＭＥＲ番地（時間変数ＴＩＭＥＲ）の１６ビットデータをＢＣレジスタに設定した上で、割込み同期処理（図１２（ｂ））を実行し、割込み同期処理が終われば、ＴＩＭＥＲ番地に初期値（２７５２）を再設定する。ＴＩＭＥＲ番地の数値（タイミング情報）は、タイマ割込み毎に、ゼロになるまでデクリメントされるよう構成されており（図１３のＳＴ５３）、初期値２７５２は、２７５２×１．５ｍｓ≒４．１秒に対応している。
【０１２７】
したがって、タイマ割込み処理におけるデクリメント処理（ＳＴ５３）によって初期値がゼロになったタイミングは、要するに、前回ゲームにおけるステップＳＴ２１の処理開始から４．１秒が消費されたことを意味する。そして、本発明では、ＢＣレジスタに、４．１秒を消費するための残り時間に対応する数値（ＴＩＭＥＲ）を設定した上で、割込み同期処理（図１２（ｂ））を実行するので、ウェイトタイマ処理によって、残り時間を正確に消費することができることになる。
【０１２８】
続いて、リール演出に当選しているか否か、リール演出特定フラグＲＦの値を判定する（ＳＴ２１）。そして、リール演出特定フラグＲＦがＲＦ＝１の場合には適宜なリール演出を実行し（ＳＴ２２）、逆に、リール演出特定フラグＲＦ＝０であって、リール演出に当選していない場合には、各１バイト長の回胴制御フラグＦＧ１〜ＦＧ３を、全て０１Ｈに設定する（ＳＴ２３）。回胴制御フラグＦＧ１〜ＦＧ３は、３つの回転リール４ａ〜４ｃに対応して各１バイト長が設けられており、具体的には、図１１（ｂ）に示す通りである。
【０１２９】
図１１（ｂ）や図１１（ｃ）に示す通り、回胴停止中フラグＦ７は、制御対象の回転リールが停止励磁後であるか否かを規定しており、回胴起動中フラグＦ６は、当該回転リールが回転開始時の加速回転中であるか否かを規定し、回胴起動済みフラグＦ５は、当該回転リールが加速回転後の定常回転中であるか否かを規定している。
【０１３０】
停止ボタン検出フラグＦ４は、制御対象の回転リールに対応するストップボタン１８のＯＮ操作が行われたか否かを規定し、停止命令フラグＦ３は、当該回転リールについてスベリ制御が完了したか否かを規定している。また、回胴センサＯＮフラグＦ２は、各回転リールが回転を開始した後、基準位置に達したことを示し、リール演出中フラグＦ１は、当該回転リールがリール演出中であることを規定し、制御中フラグＦ０は、当該回転リールが回転制御中であることを規定している。そして、ステップＳＴ２３の処理で、回胴制御フラグＦＧ１〜ＦＧ３が、全て０１Ｈに設定されたことにより、今後は、リール演出後の通常の回転駆動制御、つまり、起動回転制御（図１１（ｃ）の加速回転）から定常回転制御に移行して、停止制御による完全停止に至る制御動作が実行されることになる。
【０１３１】
ステップＳＴ２３の処理が終われば、次に、回胴回転状態フラグＦＬＧを０７Ｈに設定する（ＳＴ２４）。ここで、回胴回転状態フラグＦＬＧとは、回転リール４が回転中か否かを特定する１バイト長フラグであって、そのｂｉｔ０〜ｂｉｔ２が、各々、３つの回転リール４ａ〜４ｃの回転状態を特定している。そして、この処理の直後、３つの回転リール４ａ〜４ｃが回転を開始するので、これに対応して、回胴回転状態フラグＦＬＧの下位３ｂｉｔが全て１に設定される（ＳＴ２４）。なお、回転リール４ａ〜４ｃの回転は、実際には、タイマ割込み処理（図１３（ａ））の回胴回転制御処理（ＳＴ５２）が、タイマ割込み周期で進行することで実現される。
【０１３２】
次に、回転開始コマンドを演出制御部５１に送信するべく、回転開始コマンド回胴開始コマンドを送信バッファにセットしてサブルーチン処理を終える（ＳＴ２５）。
【０１３３】
次に、図１０に示すメイン処理の制御動作は、回胴開始設定処理（ＳＴ８）から回胴停止処理（ＳＴ９）に移行する。図１２に示す詳細な処理内容は、後述するとして、先ず、回胴停止処理（ＳＴ９）の概略を説明する。
【０１３４】
回転中の回転リール４ａ〜４ｃについてストップボタン１８ａ〜１８ｃが押されたら、停止受付コマンドを演出制御部５１に送信するべく、停止受付コマンドを送信バッファにセットし、内部抽選処理（ＳＴ６）の当否結果に沿うように、対応する回転リール４ａ〜４ｃを停止制御する（ＳＴ９）。すなわち、内部抽選処理（ＳＴ６）の結果、何らかの内部当選状態であれば、遊技者の適切な停止操作を条件として、当選結果に合うよう回転リール４ａ〜４ｃの図柄を整列させる。但し、遊技者がストップボタンを押すタイミングや、停止操作の順番が不適切である場合には、ハズレ状態の図柄で停止される。この結果、折角の小役当選も無駄になるが、ボーナス当選については、次回のゲーム以降も持ち越される。但し、リール演出が実行された場合には、その示唆に沿って正しい停止操作を実行すれば、メダルの取りこぼしが回避可能となる。
【０１３５】
なお、この回胴停止処理（ＳＴ９）では、正常な停止操作を受けると、回胴回転状態フラグＦＬＧの該当ｂｉｔが１から０に変更される。また、各回転リール４ａ〜４ｃについての停止制御が完了する毎に、停止位置を示す制御コマンド（停止結果コマンド）を演出制御部５１に送信するべく、停止結果コマンドが送信バッファにセットされる。また、完全停止状態となった回転リール４ａ〜４ｃに対応する回胴制御フラグＦＧｉは０となる。
【０１３６】
このようにして、３回の停止操作と停止制御動作が完了して全ての回転リール４ａ〜４ｃが停止したら、有効ライン上に、当選図柄（当選役）が揃ったか否かが判定され、その結果を示す制御コマンド（入賞情報コマンド）を演出制御部５１に送信するべく、入賞情報コマンドが送信バッファにセットされる（ＳＴ１０）。また、当選図柄が揃っている場合には、必要数のメダルが払出されると共に、メダル払出を示す制御コマンド（払出コマンド）を演出制御部５１に送信するべく、払出コマンドが送信バッファにセットされる（ＳＴ１１）。
【０１３７】
次に、リプレイ当選状態か否か判定され（ＳＴ１２）、リプレイ当選状態であれば、再遊技動作の開始処理（ＳＴ１５）を実行した後、ステップＳＴ２に移行する。
【０１３８】
リプレイ当選状態でない場合には、現在がボーナスゲーム中か否か判定され（ＳＴ１３）、ボーナスゲーム中であれば、対応する処理（ＳＴ１６）を実行してステップＳＴ２に移行する。
【０１３９】
一方、ステップＳＴ１３の判定がＮＯの場合には、ボーナス図柄が揃っているか否か判定され（ＳＴ１４）、ボーナス図柄が揃っている場合には、ボーナスゲームの開始処理（ＳＴ１７）を実行した後、ステップＳＴ２に移行する。
【０１４０】
続いて、図１３（ａ）に基づいて、所定時間毎（τ＝１．５ｍＳ）に起動されるタイマ割込み処理について説明する。タイマ割込み処理では、ＣＰＵのレジスタが退避された後（ＳＴ５０）、各種スイッチ信号やセンサ信号を受ける入力ポートＩＮ０〜ＩＮ２の各１バイトデータを取得する（ＳＴ５１）。
【０１４１】
図１４（ａ）は、ポート入力処理（ＳＴ５１）を示すフローチャートであり、実質的に同一内容の判定取得処理（図１４（ｂ））を３回繰り返すことで（ＳＴ７０〜ＳＴ７２）、３つの入力ポートＩＮ０〜ＩＮ２のデータを取得し、各信号のレベルデータと、ＯＮエッジ及びＯＦＦエッジを、ＲＡＭの該当領域（入力バッファ領域）に記憶している。
【０１４２】
なお、特に限定されるものではないが、入力ポートＩＮ０（１バイト長）には、ストップボタン１８ａ〜１８ｃのＯＮ／ＯＦＦ状態を示す停止スイッチ信号（ＩＮ０のｂｉｔ０〜ｂｉｔ２）と、スタートレバー１７（始動スイッチ）のＯＮ／ＯＦＦ状態を示すスタートレバー信号ＬＶ（ＩＮ０のｂｉｔ３）と、貯留メダル投入スイッチ信号と、メダル清算スイッチ信号とが含まれている。
【０１４３】
また、入力ポートＩＮ１（１バイト長）には、電源異常信号ＡＢＮと、リセットスイッチ信号と、設定キースイッチ信号とが含まれており、入力ポートＩＮ２（１バイト長）には、メダル通過センサ信号と、押圧レバースイッチ信号とが含まれている。
【０１４４】
本実施例では、各入力ポートＩＮ０〜ＩＮ２信号のレベルデータ（各１バイト）は、今回分と過去３回分とで合計４バイト分の記憶領域（ＩＮｉＢＵＦ番地〜ＩＮｉＢＵＦ＋３番地）に記憶され、ＯＮエッジデータとＯＦＦエッジデータが、合計２バイトの記憶領域（ＩＮｉＢＵＦ＋４番地〜ＩＮｉＢＵＦ＋５番地）に記憶されるよう構成されている。なお、変数ｉは０〜２の何れかを意味するので、入力バッファ領域は、全体として６×３バイトの記憶領域となる（図１４（ｃ）参照）。
【０１４５】
次に、ステップＳＴ７０〜ＳＴ７２の処理を実現する判定取得処理（図１４（ｂ））について説明する。先ず、ＩＮｉＢＵＦ番地〜ＩＮｉＢＵＦ＋２番地の３バイトデータを、各々、１回前データ、２回前データ、及び３回前データとして、Ｚ８０ＣＰＵのレジスタＣ，Ｄ，Ｅに保存すると共に、入力バッファのＩＮｉＢＵＦ＋１番地〜ＩＮｉＢＵＦ＋４番地に転送する。そして、入力ポートＩＮｉの取得データを、今回データとして、Ｚ８０ＣＰＵのＡｃｃ（アキュムレータ）とＢレジスタに保存する共に、入力バッファのＩＮｉＢＵＦ番地に格納する（ＳＴ７５）。
【０１４６】
次に、Ａｃｃに保存されている今回データと、Ｃレジスタに保存されている１回前データをＡＮＤ演算して、その演算結果をＩＮｉＢＵＦ＋４番地に格納する。そのため、このタイミングのＩＮｉＢＵＦ＋４番地の１バイトデータは、１回前から今回にかけてＯＮ→ＯＮと連続した信号に対応するｂｉｔだけが１となる。
【０１４７】
次に、Ｄレジスタに保存されている２回前データと、Ｅレジスタに保存されている３回前データのＯＲ演算を実行して、そのＮＯＴデータをＡｃｃに格納した後、ＡｃｃとＩＮｉＢＵＦ＋４番地のデータをＡＮＤ演算し、その演算結果をＩＮｉＢＵＦ＋４番地に格納する（ＳＴ７６）。２回前データと３回前データのＯＲ演算のＮＯＴ値は、これを言い換えると、２回前データのＮＯＴ値と、２回前データのＮＯＴ値とのＡＮＤ演算結果を意味するので、ステップＳＴ７６の処理によって、３回前から２回前にかけてＯＦＦ→ＯＦＦと連続した信号に対応するｂｉｔだけが１となる。
【０１４８】
そして、最後に、ＡｃｃとＩＮｉＢＵＦ＋４番地のデータをＡＮＤ演算するので、結局、３回前から今回にかけて、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮと連続した信号に対応するｂｉｔだけが、ステップＳＴ７６処理後に１となる。したがって、ＩＮｉＢＵＦ＋４番地の１バイトデータによって、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮと連続した信号が存在するか否かが特定されることになる。
【０１４９】
このように、本実施例では、タイマ割込み間隔（τ）で、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮと連続した場合に限り、その信号のＯＮエッジが検出されたと判定している。そのため、スイッチ信号にリンギングなどが重畳した場合でも、その影響を排除してその信号のＯＮエッジを確実に検出できることになる。
【０１５０】
先に説明した通り、例えば、リセットスイッチのＯＮ操作は、そのＯＮエッジで判定されるが、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮと連続することが条件とされるので誤検出のおそれが無い。なお、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮの推移を問題にする分だけ、ＯＮエッジの検出タイミングが遅れるが、通常の信号検出には、その遅れが問題にならない。
【０１５１】
ステップＳＴ７６の処理が終われば、次に、Ｄレジスタに保存されている２回前データと、Ｅレジスタに保存されている３回前データをＡＮＤ演算して、その演算結果をＩＮｉＢＵＦ＋５番地に格納する。そのため、このタイミングのＩＮｉＢＵＦ＋５番地の１バイトデータは、３回前から２回前にかけてＯＮ→ＯＮと連続した信号に対応するｂｉｔだけが１となる。
【０１５２】
次に、Ｂレジスタに保存されている今回データと、Ｃレジスタに保存されている１回前データのＯＲ演算を実行して、そのＮＯＴデータをＡｃｃに格納した後、ＡｃｃとＩＮｉＢＵＦ＋５番地のデータをＡＮＤ演算し、その演算結果をＩＮｉＢＵＦ＋５番地に格納する（ＳＴ７７）。今回データと１回前データのＯＲ演算のＮＯＴ値は、これを言い換えると、今回データのＮＯＴ値と、１回前データのＮＯＴ値とのＡＮＤ演算結果を意味するので、１回前から今回にかけてＯＦＦ→ＯＦＦと連続した信号に対応するｂｉｔだけが１となる。
【０１５３】
そして、最後に、ＡｃｃとＩＮｉＢＵＦ＋５番地のデータをＡＮＤ演算するので、結局、３回前から今回にかけて、ＯＮ→ＯＮ→ＯＦＦ→ＯＦＦと連続した信号に対応するｂｉｔだけが、ステップＳＴ７７処理後に１となる。このように、本実施例では、タイマ割込み間隔で、ＯＮ→ＯＮ→ＯＦＦ→ＯＦＦと連続した場合に限り、その信号のＯＦＦエッジが検出されたと判定している。
【０１５４】
そのため、スイッチ信号にリンギングなどが重畳した場合でも、その影響を排除して、その信号のＯＦＦエッジを確実に検出できる。本実施例では、設定値の変更時（図１０のＳＰ５３）を除くと、スタートレバーのＯＮ操作は、そのＯＦＦエッジで検出されるが、ＯＮ→ＯＮ→ＯＦＦ→ＯＦＦと連続することが条件とされるので誤検出のおそれが無い。
【０１５５】
以上の通り、本実施例では、タイマ割込み周期（τ）毎に取得する四回分のデータに基づいて各信号のＯＮエッジやＯＦＦエッジを検出しており、その検出精度が非常に高い。しかも、ステップＳＴ７５〜ＳＴ７７の処理が１バイト単位で実行されるので、入力ポートＩＮ０〜ＩＮ２から取得する全ての信号について、画一的な処理によってＯＮエッジやＯＦＦエッジを検出することができる。なお、必ずしも、全ての信号について、ＯＮエッジやＯＦＦエッジを問題にする必要がないのは勿論であるが、本実施例によれば、必要に応じて、ＯＮエッジやＯＦＦエッジを取捨選択して使用することができる。
【０１５６】
例えば、本実施例では、電源異常信号ＡＢＮについては、その重要性と緊急性に鑑み、タイマ割込み（ＳＴ５１）による取得値を使用することなく、入力ポートＩＮ１から再度読み出している（図１３のＳＴ６０参照）。
【０１５７】
そのため、電源異常信号ＡＢＮの検出遅れがない。しかも、本実施例では、ＮＭＩ割込み処理の起動に先行して、入力ポートＩＮ１に電源異常信号ＡＢＮが供給されるよう、ＮＭＩ端子の前段に遅延回路が設けられているので（図７参照）、この意味でも、電源異常信号ＡＢＮの検出が遅れるおそれはない。
【０１５８】
判定取得処理は、上記の通り構成されており、ポート入力処理（ＳＴ５１）で、このような判定取得処理が、入力ポートＩＮ０と、入力ポートＩＮ１と、入力ポートＩＮ２について連続して実行される（ＳＴ７０〜ＳＴ７１）。そのため、６×３バイト長の入力バッファ領域（ＩＮｉＢＵＦ番地〜ＩＮｉＢＵＦ＋５番地）の記憶内容は、タイマ割込み毎に最新値に更新されることになる。
【０１５９】
そこで、次に、乱数生成回路ＧＮＲからラッチレジスタＬＲを取得し、そのＯＮ／ＯＦＦレベルを判定する（ＳＴ７３）。先に説明した通り、ラッチレジスタＬＲは、乱数値レジスタＲＲに、新規のハード乱数値ＲＮＤがラッチされたか否かを特定している。そこで、ラッチレジスタＬＲがＯＮ状態であれば、乱数値レジスタＲＲから１６ビット長のハード乱数値ＲＮＤを取得してＲＡＭの該当領域に記憶する（ＳＴ７４）。なお、このハード乱数値ＲＮＤは、その後、図１０のステップＳＴ５の処理で読み出されて、ソフト乱数値を加算することで抽選用乱数値ＬＯＴとなることは前述の通りである。
【０１６０】
以上のようにしてポート入力処理（ＳＴ５１）が終わると、次に、回転リール４ａ〜４ｃの回転についての回転制御動作が実行され（ＳＴ５２）、各種のタイマ変数が更新される（ＳＴ５３）。タイマ変数には、１バイト長の割込みカウンタＩＮＴ（タイミング情報）が含まれおり、タイマ割込み毎に、０〜２５５の範囲で循環的にインクリメントされる。したがって、割込みカウンタＩＮＴが同一値を維持する周回時間は、タイマ割込み周期（τ）と同じ１．５ｍＳとなる。
【０１６１】
この割込みカウンタＩＮＴは、待機時間を確保したり、動作開始タイミングを管理するために、後述する割込み同期処理（図１２（ｂ））で使用される。
【０１６２】
また、タイマ変数には、ＴＩＭＥＲ番地の２バイト長の時間変数ＴＩＭＥＲも含まれており、初期値（２７５２）から０までタイマ割込み毎にデクリメントされる。時間変数ＴＩＭＥＲも、本発明のタイミング情報として機能する。
【０１６３】
続いて、送信バッファ（コマンドバッファ）に格納させている制御コマンドについて、コマンド出力処理（ＳＴ５４）を実行する。ここで、コマンド出力処理とは、送信バッファに設定されている制御コマンドを１バイト毎に演出制御部５１に伝送する処理である。
【０１６４】
コマンド出力処理（ＳＴ５４）が終われば、払出したメダルなどの情報をホールコンピュータに伝送し（ＳＴ５５）、各種ランプの表示動作を更新すると共に、回転リールを駆動するステッピングモータに励磁データを出力する（ＳＴ５６）。ここで、表示更新されるランプには、遊技開始ＬＥＤや、メダル投入許可ＬＥＤや、投入枚数ＬＥＤが含まれている。
【０１６５】
次に、ステップＳＴ５０の処理で退避したレジスタをＣＰＵに復帰させて（ＳＴ５７）、ＣＰＵを割込み許可状態に戻して（ＳＴ５８）タイマ割込み処理を終える。
【０１６６】
続いて、図１３（ｂ）に示すＮＭＩ割込み処理について説明する。先に説明した通り、ＮＭＩ割込みの起動に必ず先行して、入力ポートＩＮ１には、電源異常信号ＡＢＮが供給されているので、ＮＭＩ割込み処理では、最初に、Ｉ／Ｏポート回路（入力ポートＩＮ１）６４ｄから電源異常信号ＡＢＮを取得し、これがアクティブレベルであることを確認する（ＳＴ６０）。ここで、もし、アクティブレベルでない場合には、ノイズなどによる誤動作であると判断して、割込み処理を終える。
【０１６７】
一方、電源異常信号ＡＢＮがアクティブレベルである場合には、電源電圧が降下していると判断して、ＣＰＵのレジスタをスタック領域に退避し、また、スタック領域を特定するスタックポインタＳＰを所定領域に記憶する（ＳＴ６１，ＳＴ６２）。
【０１６８】
次に、そのタイミングにおける各種の出力ポートの出力値を記憶すると共に、ＲＡＭの所定領域についてチェックサム演算を実行して、その演算結果（チェックサム値）を所定領域に記憶する（ＳＴ６３）。また、バックアップフラグをＯＮレベルにセットする（ＳＴ６４）。なお、チェックサム値やバックアップフラグの値は、電源投入時に、その正当性が判定される。
【０１６９】
次に、その後のＲＡＭアクセスを禁止するべく、ワンチップマイコンを設定し、出力ポートをＯＦＦ状態に設定する（ＳＴ６５）。続いて、所定の時間消費を経た上で、その後の処理をＲＯＭの先頭番地（ゼロ番地）にジャンプさせる。そして、改めて、電源異常信号ＡＢＮを判定して、これがアクティブレベルである限り、同じ判定処理を繰り返して電源遮断を待つことになる。
【０１７０】
以上で、メイン処理（図１０）と、タイマ割込み処理（図１３（ａ））と、ＮＭＩ処理（図１３（ｂ））について概略説明を終えたので、メイン処理（図１０）と、タイマ割込み処理（図１３（ａ））とが協働して実現される回転リール４ａ〜４ｃの回転制御動作と停止制御動作について説明する。
【０１７１】
図１３（ａ）に示す通り、回胴回転制御処理（ＳＴ５２）は、タイマ割込み処理の一部として、所定時間（τ＝１．５ｍＳ）毎に間欠的に実行され、その詳細は、図１５に示す通りである。
【０１７２】
図１５に示す通り、回胴回転制御処理では、最初に、回転リールを管理するリール変数ｊを１に初期設定する（ＳＰ１０）。なお、この実施例では、リール変数ｊを１→２→３と増加させつつ、左回転リール４ａ→中回転リール４ｂ→右回転リール４ｃの順番に制御している。
【０１７３】
次に、回胴制御フラグＦＧｊの制御中フラグＦ０の値に基づいて、リール変数ｊで特定される回転リールが制御動作中か否かを判定する（ＳＰ１１）。
【０１７４】
そして、制御中フラグＦ０＝０であって、回胴制御フラグＦＧ１〜ＦＧ３がＦＧｊ＝０１Ｈの状態では、ステップＳＰ３４以下の処理が実行され、リール変数ｊで規定される１バイト長の回胴制御フラグＦＧｊについて、回胴停止中フラグＦ７と、回胴起動中フラグＦ６と、回胴起動済みフラグＦ５と、停止ボタン検出フラグＦ４と、停止命令フラグＦ３の値が、この順番に判定される（ＳＰ３４〜ＳＰ３８）。
【０１７５】
ここでは、回胴制御フラグＦＧ１〜ＦＧ３がＦＧｊ＝０１Ｈである場合を説明しているので、ＳＰ３４→ＳＰ３５→ＳＰ３６の判定を経て、最初に、励磁ポインタＰＴｊのＬＳＢ(Least Significant Bit) をゼロクリアする（ＳＰ５３）。励磁ポインタＰＴｊは、ステッピングモータを回転させるための８種類の励磁データΦ１〜Φ４を指示しており、本実施例では、回転リール４ａ〜４ｃを駆動する３個のステッピングモータを二相モータとし、この二相モータを１−２相励磁している。
【０１７６】
そして、２組の励磁巻線について、１相励磁と２相励磁とを交互に繰り返しており、励磁ポインタＰＴｊのＬＳＢがＬＳＢ＝０の場合には２相励磁モード、ＬＳＢ＝１の場合には１相励磁モードとなっている。したがって、ステップＳＰ５３の処理を経ることで、励磁ポインタＰＴｊは、２相励磁モードになったことになる。
【０１７７】
次に、回胴制御フラグＦＧｊの回胴起動中フラグＦ６をＦ６＝１とすると共に、回胴センサＯＮフラグＦ２をＦ２＝０とする（ＳＰ５４）。
【０１７８】
ステップＳＰ５４の処理が終われば、図柄ステップ数カウンタを２４に初期設定する（ＳＰ５５）。この実施例では、回転リールに描かれた図柄を一個移動する（基準回転角度だけ回転させる）ために、ステッピングモータを２４ステップ駆動するので、この動作に対応して、図柄ステップ数カウンタをゼロまでデクリメントすることで（ＳＰ６３，ＳＰ６４）、各図柄の回転移動を把握している。
【０１７９】
次に、各々１バイト長のエラータイマＥＴｊと、図柄カウンタＤＵｊをゼロに初期設定し、行ポインタＮｊと、モータ出力タイマＴＭｊを１に初期設定する（ＳＰ５６）。ここで、エラータイマＥＴｊは、励磁ポインタＰＴｊを所定回数（例えば２１＊２４＋α）更新したにも拘らず、インデックスセンサによって回転リール４の基準位置を検出できない回転異常（回転停止状態）を検出するために使用される。
【０１８０】
また、図柄カウンタＤＵｊは、回転リールに描かれた各図柄の現在位置を把握するために使用される。すなわち、インデックスセンサがＯＮ動作する毎に、図柄カウンタＤＵｊをゼロクリアし（ＳＰ６２）、ステッピングモータを２４ステップ駆動する毎に、つまり、図柄一個分（基準回転角度）の回転毎に、図柄カウンタＤＵｊをインクリメントすることで（ＳＰ６６）各図柄の現在位置を把握している。
【０１８１】
また、行ポインタＮｊは、回転開始時の加速回転を実現するタイムテーブルＴＢＬ（図１６の上段参照）の使用欄を特定するために使用される。なお、説明の都合上、行ポインタＮｊの初期値を１にしているが、実際にはゼロに初期設定するのが好適である。モータ出力タイマＴＭｊは、割込み回数をカウントして、ステッピングモータの歩進タイミングなどを規定する用途で使用される。
【０１８２】
以上の初期設定が終われば、ステップＳＰ４３に移行して、モータ出力タイマＴＭｊをデクリメントし、デクリメント後のモータ出力タイマＴＭｊの値がゼロか否かを判定する（ＳＰ４４）。なお、回転起動時には、ＭＹｊ＝１に初期設定されているので（ＳＰ５６）、続いて、タイムテーブルＴＢＬについて、行ポインタＮｊが指定するタイマ値を取得して、モータ出力タイマＴＭｊに設定し（ＳＰ４５）、行ポインタＮｊをインクリメントして更新する（ＳＰ４６）。初期設定されたモータ出力タイマＴＭｊ（ＳＰ４５参照）は、その後の割り込み処理毎にデクリメントされ、ＴＭｊ＝０となるまで、ステップＳＰ４５の処理移行が待機される。
【０１８３】
ところで、図１６に示すタイムテーブルＴＢＬは、回転起動時の回転リールの加速回転動作を規定しており、割込み周期τ毎に更新される行ポインタＮｊによって（ＳＰ４６）、ＴＭｊ＝０のタイミングで、モータ出力タイマＴＭｊを再設定することで（ＳＰ４５）、ステッピングモータの加速回転を実現している。また、１相駆動と２相駆動とが交互に繰り返される１−２相駆動において、回転トルクに劣る１相駆動を一割込み周期τで終えて、回転トルクに勝る２相駆動に移行させることで、円滑な加速回転を実現している。
【０１８４】
すなわち、図示のタイムテーブルＴＢＬでは、タイマ値を、最小値→回転待機数→最小値→回転待機数→最小値→回転待機数・・・・と推移させることで、一瞬の１相励磁を挟んで２相励磁を繰り返すことで回転リールの加速回転を実現している。なお、実施例では、最小値が割込み周期τ（＝１．５ｍＳ）に対応する１であり、回転待機数は１より大きな値である。
【０１８５】
また、実施例では、回転待機数を段階的に減少させることで、極めて遅い低速回転から漸次、回転速度を高めている。因みに、回転初期は、２ステップ角２＊θｓを、時間３４＊τを要して回転させており、回転角速度は、θｓ／１７／τ（≒２８［°／Ｓ］）である。そして、その後の回転角速度を、θｓ／４．５／τ  →  θｓ／２．５／τ  →  θｓ／２／τ  →  θｓ／１．５／τと増加させることで、定常回転角速度θｓ／τ（≒４７６［度／Ｓ］）に向けた円滑な加速動作が実現されている。なお、タイムテーブルＴＢＬの最終欄には、全相励磁（Φ１〜Φ４＝０ＦＨ）の停止動作を実現する極めて大きな数値（１５１）が格納されている。
【０１８６】
このような構成に対応して、ステップＳＰ４７では、インクリメント後の行ポインタＮｊの値に基づいて、起動時の加速回転制御を終えたか否かを判定している。そして、加速回転制御中であれば、ステップＳＰ４８の処理をスキップして励磁ポインタＰＴｊをインクリメントし（ＳＰ４９）、インクリメント後の励磁ポインタＰＴｊに対応する励磁データΦ１〜Φ４を出力バッファに設定する（ＳＰ５０）。そして、リール変数ｊを更新して、次の回転リールについて上記と同様の処理を行う（ＳＰ２６）。
【０１８７】
ところで、励磁ポインタＰＴｊは、その回転リールの回転開始時に、ＬＳＢがゼロにされているので（ＳＰ５３）、ステップＳＰ４９の処理でインクリメントされた後の励磁ポインタＰＴｊは、そのＬＳＢが必ず１となっている。したがって、各回転リールは、必ず、１相励磁状態で回転が開始されることになり、円滑な回転起動動作が担保される。
【０１８８】
このようにして全ての回転リール４ａ〜４ｃについての初回動作が終わると、次のタイマ割込みでは、回転起動中フラグＦ６がＦ６＝１であることから（ＳＰ５４参照）、ステップＳＰ３４→ＳＰ３５→ＳＰ４３の処理が実行される。そして、初回の設定処理（ＳＰ４５）でモータ出力タイマＴＭｊに設定されるタイマ値が１であることから、ステップＳＰ４４→ＳＰ４５→ＳＰ４６→ＳＰ４７→ＳＰ４９の処理を経て、２相励磁用の励磁データΦ１〜Φ４が出力バッファに設定される（ＳＰ５０）。
【０１８９】
そして、ステップＳＰ４５の処理でモータ出力タイマＴＭｊに設定されたタイマ値に対応する割込み回数を経ると、やや回転速度の上がった次の駆動動作に移行する。なお、次の回転角速度は、θｓ／４．５／τである。各回転リールについて、その後の処理も同じであり、行ポインタＮｊの増加に対応して、回転角速度が、θｓ／４．５／τ  →  θｓ／２．５／τ  →  θｓ／２／τ  →  θｓ／１．５／τと漸次増加する。
【０１９０】
そして、ステップＳＰ４６の処理によって、行ポインタＮｊが最終行（＝２６）に達すると、回胴起動中フラグＦ６をクリアする一方、回胴起動済みフラグＦ５を１に設定し、行ポインタＮｊが指示するタイマ値（＝１５１）を、モータ出力タイマＴＭｊに設定する（ＳＰ４８）。なお、回胴起動中フラグＦ６＝０、回胴起動済みフラグＦ５＝１と設定されてことにより（ＳＰ４８）、その後、回転異常が生じない限り、モータ出力タイマＴＭｊの値は、停止操作後に実行されるステップＳＰ４０の処理まで変化することはない。
【０１９１】
回胴起動中フラグＦ６＝０、回胴起動済みフラグＦ５＝１と設定された後のタイマ割込み処理では、毎回、ステップＳＰ３４→ＳＰ３５→ＳＰ３６→ＳＰ３７→ＳＰ５７の経路で判定処理が進む。そして、励磁ポインタＰＴｊのＬＳＢの値に基づいて、１相励磁か２相励磁かが判定され（ＳＰ５７）、もし１相励磁であれば、１バイト長のエラータイマＥＴｊをインクリメントし（ＳＰ５８）、インクリメント後のエラータイマＥＴｊの値が所定値（１バイト長の最大値２５５）を超えたてオーバーフローしたか否かを判定する（ＳＰ５９）。
【０１９２】
先に説明した通り、本実施例の回転リール４は、順次更新される励磁データΦ１〜Φ４を、２１＊２４回（＝５０４）受けて一回転するよう設定されている。そのため、励磁ポインタＰＴｊのＬＳＢについて、ＬＳＢ＝１の状態が２５２回（＝５０４／２）検出されたタイミングでは、回転リールは一回転しているはずである。また、本実施例では、インデックスセンサがＯＮ状態となる毎に、エラータイマＥＴｊをゼロクリアしているので（ＳＰ６１）、本来、エラータイマが２５２を超えることはない。
【０１９３】
そこで、エラータイマＥＴｊがオーバーフローして、再度ゼロになった場合には、回転リールが正常に回転していないと判断して、ステップＳＰ５３の処理に移行させる。その結果、その後は、タイムテーブルＴＢＬに基づく起動回転が再実行されることになる。その起動回転は、駆動トルクが高い超低速回転（回転角速度２８°／Ｓ）から開始されるので、モータ異常が自動回復することを期待することができる。
【０１９４】
一方、ステップＳＰ５９の判定で、エラータイマＥＴｊ≠０と判定される場合には、インデックスセンサがＯＮ状態に変化したか否かを判定する（ＳＰ６０）。インデックスセンサのセンサ出力は、タイマ割込み毎に取得されており（図１０のＳＴ４１）、ＯＦＦ状態からＯＮ状態に変化したか否かが判定される。そして、回転リールが基準位置を通過して、インデックスセンサがＯＮ状態に変化している場合には、エラータイマＥＴｊをゼロクリアし、回胴センサＯＮフラグＦ２を１にセットする（ＳＰ６１）。また、図柄ステップ数カウンタを２４に初期設定すると共に、図柄カウンタをゼロクリアしてステップＳＰ４９の処理に移行させる（ＳＰ６２）。
【０１９５】
一方、インデックスセンサがＯＮ状態に変化していない場合には、２４に初期設定されている図柄ステップ数カウンタをデクリメントし（ＳＰ６３）、これがゼロであるか否かを判定する（ＳＰ６４）。先に説明した通り、図柄ステップ数カウンタは、回転リール４が一図柄分だけ回転したか否かを判定するものであり、基準回転角度（＝２４＊θｓ）だけ回転したと判定される場合には、図柄ステップ数カウンタを２４に再設定し（ＳＰ６５）、図柄カウンタＤＵｊをインクリメントする（ＳＰ６６）。そして、インクリメント後の図柄カウンタＤＵｊが２１に達した後には、これをゼロクリアすることで、回転リールに描かれ図柄を常時把握できるようにしている（ＳＰ６７〜ＳＰ６８）。すなわち、回転リールが基準位置に達すると、インデックスセンサがＯＮ動作して、図柄カウンタＤＵｊがゼロとなり、その後、一図柄分の基準回転角度の回転毎に図柄カウンタＤＵｊがインクリメントされるので、結局、図柄カウンタＤＵｊは、基準位置（インデックスセンサ位置）に存在する図柄の図柄番号０〜２０を、リアルタイムに特定していることになる。
【０１９６】
ステップＳＰ６８やＳＰ６２の処理を終えた後は、励磁ポインタＰＴｊを更新して、更新後の励磁ポインタＰＴｊが示す励磁データΦ１〜Φ４が出力バッファに設定された後に（ＳＰ４９〜ＳＰ５０）、別の回転リールについての回転制御処理に移行する（ＳＰ２６）。以上の通り、回胴起動中フラグＦ６＝０、回胴起動済みフラグＦ５＝１と設定された後のタイマ割込み処理では、タイマ割込み毎に励磁ポインタＰＴｊが更新されることで、励磁データΦ１〜Φ４が更新されるので、各回転リール４ａ〜４ｃは、角速度θｓ／τで定常回転することなる。なお、この定常回転では、１相駆動と２相駆動とが同一時間間隔（τ）で繰り返される。
【０１９７】
このような定常回転を繰り返していると、やがて、遊技者がストップボタン１８をＯＮ操作することで、ＯＮ操作されたストップボタンに対応する回転リールの停止ボタン検出フラグＦ４が、メイン処理（ＳＴ９）においてセットされる（図１２のＳＴ４３参照）。なお、この状態では、回胴起動済みフラグＦ５はＦ５＝１のままである。
【０１９８】
そのため、その後のタイマ割込み処理では、毎回、ステップＳＰ３４→ＳＰ３５→ＳＰ３６→ＳＰ３７→ＳＰ３８の経路で判定処理が進む。そして、停止命令フラグＦ３の値が判定される。ストップボタン１８のＯＮ操作後は、内部抽選状態の当り図柄を有効ラインに停止させる制御、或いは、外れ図柄を停止させる制御が、メイン処理の回胴停止処理（ＳＴ９）における図柄停止制御処理（図１２のＳＴ４３）において実行される。そして、停止させるべき図柄が有効ラインに達した段階で、停止命令フラグＦ３がＦ３＝１にセットされるよう構成されている。なお、高速回転である定常回転中の回転リールの慣性力を考慮して、回転停止までに余裕のあるタイミングで停止命令フラグＦ３＝１となる。
【０１９９】
そのため、停止命令フラグＦ３＝１となっている場合には、回転リールを実際に停止して良いか否かを図柄ステップ数カウンタや図柄カウンタＤＵｊから判定して（ＳＰ６９）、実際の停止タイミングまで待機する（ＳＰ６３以下参照）。そして、停止タイミングに達した場合には、停止させるべき回転リールの回胴制御フラグＦＧｊについて、その回胴停止中フラグＦ７を１にセットして、ステップＳＰ３９に移行する（ＳＰ７０）。
【０２００】
ステップＳＰ３９では、最初にモータ出力タイマＴＭｊの値がゼロか否かを判定する。先に説明した通り、モータ出力タイマＴＭｊには、起動回転終了時に、タイムテーブルＴＢＬの最終タイマ値（＝１５１）が設定されて、その値が維持されている。そのため、次に、モータ出力タイマＴＭｊをデクリメントして、ステッピングモータを全相ＯＮ駆動するため、励磁データを０ＦＨに設定する。
【０２０１】
続いて、モータ出力タイマＴＭｊの値がゼロか否かを判定し（ＳＰ４１）、ＴＭｊ≠０であれば、別の回転リールについて回転制御処理を実行すべく、ステップＳＰ２６の処理に移行する。
【０２０２】
タイムテーブルＴＢＬの最終タイマ値は、１５１であったことから、励磁データΦ１〜Φ４を０ＦＨに設定する全相ＯＮ駆動は、１５１回のタイマ割込みで継続されることになり、結局、１５１＊τ（≒０．２秒）の間、ステッピンモータの駆動巻線の全相が励磁され続けることで、回転リールの停止状態を維持することになる。本実施例では、このような全相ＯＮ駆動を採るために、高速回転する定常回転時の慣性力に拘らず、回転リールを目的位置に停止させ静止させることができる。
【０２０３】
なお、このような全相ＯＮ駆動を開始した後、タイマ割込みでは、ステップＳＰ１０→ＳＰ１１→ＳＰ１２→ＳＰ３４→ＳＰ３９の経路を経て、モータ出力タイマＴＭｊがデクリメントされる（ＳＰ４０）。そのため、やがて約０．２秒後には、モータ出力タイマＴＭｊ＝０となり、その時には、制御中のステッピングモータを全相ＯＦＦ駆動するべく、励磁データΦ１〜Φ４を００Ｈに設定し、回胴制御フラグＦＧｊの制御中フラグＦ０をゼロに設定する（ＳＰ４２）。その結果、その回転リールについては、非駆動状態に移行して完全停止状態となる（図１１（ｃ）参照）。なお、回胴制御フラグＦＧｊの制御中フラグＦ０がＦ０＝０となったので、その後のタイマ割込み処理の回胴回転制御処理（ＳＴ４２）では、当該回転リールについて制御処理が実行されることはない。
【０２０４】
以上、タイマ割込み処理によって管理される回胴回転制御処理（ＳＴ５２）について説明したが、円滑な停止制御を実現するには、ストップボタン１８のＯＮ操作を迅速確実に検出する必要がある。すなわち、ストップボタン１８のＯＮ操作について誤検出を避ける必要がある一方、通常のスイッチ信号のように、ＯＦＦ→ＯＦＦ→ＯＮ→ＯＮの推移を確認してＯＮエッジを認識したのでは、その処理時間（τ×４）の分だけ、その後の処理時間を圧迫する。
【０２０５】
そこで、本実施例では、メイン処理の回胴停止処理（ＳＴ９）において、図１２に示す独特の手法を採ることで、ストップボタン１８のＯＮ操作を、誤検出なく迅速に検出している。以下、図１２（ａ）に基づいて、回胴停止制御処理（図１０のＳＴ９）について説明する。
【０２０６】
回胴停止制御処理では、最初に、Ｚ８０ＣＰＵのＢＣレジスタに、割込み待機回数として０を書き込んだ上で（ＳＴ３０）、図１２（ｂ）に示す割込み同期処理（ＳＴ３１〜ＳＴ３４）を実行する。
【０２０７】
割込み同期処理（ＳＴ３１〜ＳＴ３４）は、定期更新処理（図１３のＳＴ５３）で更新される割込みカウンタＩＮＴを活用する処理であって、ＢＣレジスタで特定される待機時間を確保したり、動作開始タイミングを一定化する用途で使用される。具体的な処理内容としては、先ず、割込みカウンタＩＮＴの値をＡｃｃに取り込み（ＳＴ３１）、割込みカウンタＩＮＴの値がＡｃｃの値と不一致となるのを無限ループ状に待機する（ＳＴ３２）。
【０２０８】
割込みカウンタＩＮＴは、タイマ割込み処理で更新されているので（図１３のＳＴ５３）、最大、割込み周期τの時間が経過すると、Ａｃｃ≠ＩＮＴとなる。そこで、次に、ＢＣレジスタの値を判定し（ＳＴ３３）、もしＢＣ≠０であれば、ＢＣレジスタをデクリメントした上で（ＳＴ３４）、ステップＳＴ３１の処理に移行させる。
【０２０９】
以上の処理から明らかな通り、ＢＣレジスタの値がＮの場合に、割込み同期処理（ＳＴ３１〜ＳＴ３４）では、τ’＋Ｎ×τ程度の時間が消費され、この処理終了タイミング（ＳＴ３３）は、図１３のタイマ割込み処理の終了タイミング（ＳＴ５８）にほぼ一致することになる。なお、τ’は、τ’≦τであって、割込み同期処理（ＳＴ３１〜ＳＴ３４）の処理開始から、最初のタイマ割込みが起動されるまでの経過時間である。
【０２１０】
図１２に示す回胴停止処理では、ＢＣレジスタ＝０で割込み同期処理（ＳＴ３１〜ＳＴ３４）が実行されるので、消費時間がτ’＋τであり、ステップＳＴ３５の処理開始タイミングは、図１３のタイマ割込み処理の終了タイミング（ＳＴ５８）にほぼ一致する。
【０２１１】
そして、ステップＳＴ３５では、回転中の全ての回転リールについて、その回胴センサＯＮフラグＦ２がＯＮか否かを判定する。なお、回胴センサＯＮフラグＦ２は、インデックスセンサを認識したタイミングで、タイマ割込み処理の回胴回転制御処理（ＳＴ５２）において、１にセットされる（図１５のＳＰ６１参照）。また、回転リール４ａ〜４ｃが回転中か否かは、回胴回転状態フラグＦＬＧのｂｉｔ０〜ｂｉｔ２の値から判定される。
【０２１２】
そして、回胴センサＯＮフラグＦ２がＯＮとなっている回転中の回転リールが１つも存在しない場合には、ステップＳＴ３０の処理に移行する。そのため、再度、所定の時間τ’＋τを消費した上で、同じ判定処理（ＳＴ３５〜ＳＴ３６）を再実行することになる。
【０２１３】
このような処理を繰り返していると、何れかの回転リールについて、回胴センサＯＮフラグＦ２がＯＮとなるので、この場合には、回胴回転状態フラグＦＬＧのＮＯＴ値と、入力ポートＩＮ０の最新の取得値（ＩＮ０ＢＵＦ番地の値）との論理積を求める。図１４に関して説明した通り、ストップボタン１８ａ〜１８ｃのＯＮ／ＯＦＦ状態を示す停止スイッチ信号は、入力ポートＩＮ０のｂｉｔ０〜ｂｉｔ２に取得されており、これに対応して、回胴回転状態フラグＦＬＧのｂｉｔ０〜ｂｉｔ２は、回転リール４ａ〜４ｃの回転状態を特定している。なお、回胴回転状態フラグＦＬＧ＝１は、回転中を意味しており、図１１（ａ）に示す回胴開始設定処理において、１にセットされる（ＳＴ２４）。
【０２１４】
ここで、ＩＮ０ＢＵＦ番地の１バイト値（最新の取得値）と、回胴回転状態フラグＦＬＧのＮＯＴ値（１バイト）との論理積が０となる場合とは、論理積の演算後の下位３ビットは全て０であることを意味する。そして、この論理積＝０の結果は、回転中の回転リール（回胴回転状態フラグＦＬＧの該当ビットのＮＯＴ値が０）に対して、これに対応する停止操作がされたか（ＩＮ０ＢＵＦ番地の対応ビットが１）、或いは、停止操作がされていないこと（ＩＮ０ＢＵＦ番地の対応ビットが０）を意味する（正常状態）。
【０２１５】
逆に、ＩＮ０ＢＵＦ番地の１バイト値と、回胴回転状態フラグＦＬＧのＮＯＴ値（１バイト）との論理積が０でない場合とは、停止状態の回転リール（回胴回転状態フラグＦＬＧの該当ビットのＮＯＴ値が１）に対して、停止操作がされたこと（ＩＮ０ＢＵＦ番地の対応ビットが１）を意味する。したがって、ステップＳＴ３７の判定結果が０でない場合には、異常操作状態であるとして、ステップＳＴ３０の処理に移行させる（ＳＴ３８）。そのため、その後、所定の時間τ＋τ’を消費した上で、ステップＳＴ３５以降の処理が再実行されることになる。
【０２１６】
一方、ステップＳＴ３７の処理によって論理積が０となった場合は、正常状態であるので、ステップＳＴ３９の処理に移行し、回胴回転状態フラグＦＬＧの値と、１回前の入力ポートＩＮ０の値（ＩＮ０ＢＵＦ＋１番地の値）との論理積を求める。
【０２１７】
ステップＳＴ３９の処理は、回転中の回転リールに対して、これに対応する停止操作がされたか、或いは、停止操作がされていない場合に限り実行されるので（ＳＴ３８参照）、ステップＳＴ３９の処理結果（論理積）の値が０でない場合とは、既に停止制御が開始されているが、未だ停止していない回転リールに対して、繰返し停止操作がされたことを意味する。したがって、この場合も、無効な停止操作であるとして、ステップＳＴ３０の処理に移行させる（ＳＴ４０）。
【０２１８】
なお、図１３（ｃ）に示す通り、回胴停止処理（ＳＴ９）のステップＳＴ３５以降の処理は、事実上、タイマ割込み周期と同じ時間間隔で繰返し実行されるので、停止スイッチ信号がＯＦＦ→ＯＮと変化したＯＮエッジを確実に把握することができ、素早く停止制御操作に移行することができる。
【０２１９】
また、ステップＳＴ３９の処理より前に、停止スイッチ信号がＯＦＦ→ＯＮと変化している場合に（図１３（ｃ）左側の入力バッファ参照）、ステップＳＴ３９のタイミングで、停止スイッチ信号がＯＮ→ＯＮと推移することは有り得ないので、誤判定が生じるおそれはない。すなわち、ステップＳＴ３５の処理開始タイミングは、ほぼタイマ割込み処理の終了タイミング（ＳＴ５８）であり、次回のタイマ割込み処理までに、かなりの時間余裕（＝τ−δ）があるので、ステップＳＴ３５〜ＳＴ４０の区間で、停止スイッチ信号がＯＦＦ→ＯＮ→ＯＮと推移する可能性はない（図１３（ｃ）左右の入力バッファ参照）。
【０２２０】
そこで、ステップＳＴ４０の論理積の結果が０である場合は、正常状態であるとして、次に、回胴回転状態フラグＦＬＧと、入力ポートＩＮ０の最新値（ＩＮ０ＢＵＦ番地の値）との論理積を求める（ＳＴ４１）。
【０２２１】
ステップＳＴ４１の処理は、(1) 停止操作がされていないか、(2) 回転中の回転リールに対して、これに対応する停止操作がされた場合であって、これが停止制御の開始された回転リールに対する停止操作でない場合に限り実行される（ＳＴ４０参照）。したがって、回胴回転状態フラグＦＬＧと、入力ポートＩＮ０の最新値（ＩＮ０ＢＵＦ番地の値）の論理積が０である場合とは、停止操作がされていないことを意味する。そこで、ステップＳＴ４１の判定結果が０の場合には、停止操作が無いとしてステップＳＴ３０の処理に移行させる（ＳＴ４２）。
【０２２２】
一方、ステップＳＴ４１の判定結果が０でない場合には、有効な停止操作があるとして、ＩＮ０ＢＵＦ番地のビット値で特定されたストップボタンに対応する停止ボタン検出フラグＦ４を１に設定すると共に、その後、その回転リールが実際に停止したタイミングで、回胴回転状態フラグＦＬＧの該当ビットを０に設定する（ＳＴ４３）。
【０２２３】
次に、内部抽選結果に沿った目的位置で図柄を停止させるための滑りコマ数の算出などの図柄停止制御処理を実行した上で（ＳＴ４４）、全ての回転リールの図柄停止制御処理が終わるまで、同じ処理（ＳＴ３０〜ＳＴ４４）を繰り返す。
【０２２４】
以上の通り、本実施例では、直近二回分の停止スイッチ信号（ＩＮ０ＢＵＦ，ＩＮ０ＢＵＦ＋１）と、回胴回転状態フラグＦＬＧとに基づいて回胴停止制御を開始しており、迅速円滑な停止制御が可能となる。
【０２２５】
すなわち、本実施例のタイマ割込み処理では、連続４回分のスイッチ信号データを更新しつつ入力バッファＩＮｉＢＵＦ〜ＩＮｉＢＵＦ＋３に記憶すると共に、四回分のスイッチ信号の推移に基づいてＯＮエッジとＯＦＦエッジを検出して記憶しており、通常の処理では、何れかのエッジに基づいて制御動作を進行しいているが、回胴停止処理（ＳＴ９）では、入力バッファＩＮｉＢＵＦ＋４〜ＩＮｉＢＵＦ＋４のＯＮエッジやＯＦＦエッジを問題にしないので迅速な処理が可能となる。そして、回転制御開始時（図１１のＳＴ２４）に１にされ、停止制御開始時（図１２のＳＴ４３）に０となる回胴回転状態フラグＦＬＧを活用するので、２回分のスイッチ信号だけの判定でも誤動作のおそれがない。
【０２２６】
また、タイマ割込み処理が終わった直後にステップＳＴ３５の処理を開始すると共に、ステップＳＴ３５〜ＳＴ４２の処理時間（α）と、割込み処理の全処理時間（β）との総和を、タイマ割込み周期τより小さく設定して（α＋β＜τ）、その間に入力バッファの値が変化することがないよう構成しているので、ステップＳＴ３５〜ＳＴ４２の処理で迅速に停止操作を判定しても誤判定が生じない。
【０２２７】
以上、本発明の実施例について詳細に説明したが、具体的な記載内容は特に本発明を限定するものではない。特に、実施例の乱数生成回路は、単なる例示であって適宜に変更可能である。また、詳細は制御内容についても、特に限定されず適宜に変更可能である。
【符号の説明】
【０２２８】
ＳＬ        遊技機
４          回転リール
ＳＴ１〜ＳＴ１７    メイン処理
ＳＴ５０〜ＳＴ５８  割込み処理
ＦＬＧ              回転管理データ
【図１】
0005502941.tif 000002
【図２】
0005502941.tif 000003
【図３】
0005502941.tif 000004
【図４】
0005502941.tif 000005
【図５】
0005502941.tif 000006
【図６】
0005502941.tif 000007
【図７】
0005502941.tif 000008
【図８】
0005502941.tif 000009
【図９】
0005502941.tif 000010
【図１０】
0005502941.tif 000011
【図１１】
0005502941.tif 000012
【図１２】
0005502941.tif 000013
【図１３】
0005502941.tif 000014
【図１４】
0005502941.tif 000015
【図１５】
0005502941.tif 000016
【図１６】
0005502941.tif 000017
【図１７】
0005502941.tif 000018