本発明が適用されたスロットマシンの実施例について図面を用いて説明すると、本実施例のスロットマシン1は、図1に示すように、前面が開口する筐体1aと、この筐体1aの側端に回動自在に枢支された前面扉1bと、から構成されている。
本実施例のスロットマシン1の筐体1aの内部には、図2に示すように、外周に複数種の図柄が配列されたリール2L、2C、2R(以下、左リール、中リール、右リール)が水平方向に並設されており、図1に示すように、これらリール2L、2C、2Rに配列された図柄のうち連続する3つの図柄が前面扉1bに設けられた透視窓3から見えるように配置されている。
リール2L、2C、2Rの外周部には、図3に示すように、それぞれ「赤7」、「青7」、「白7」、「BAR」、「スイカ」、「チェリーa」、「チェリーb」、「ベル」、「リプレイa」、「リプレイb」、「プラム」といった互いに識別可能な複数種類の図柄が所定の順序で、それぞれ21個ずつ描かれている。リール2L、2C、2Rの外周部に描かれた図柄は、前面扉1bの略中央に設けられた透視窓3において各々上中下三段に表示される。
各リール2L、2C、2Rは、各々対応して設けられたリールモータ32L、32C、32R(図4参照)によって回転されることで、各リール2L、2C、2Rの図柄が透視窓3に連続的に変化しつつ表示される一方で、各リール2L、2C、2Rの回転が停止されることで、透視窓3に3つの連続する図柄が表示結果として導出表示されるようになっている。
リール2L、2C、2Rの内側には、リール2L、2C、2Rそれぞれに対して、基準位置を検出するリールセンサ33L、33C、33Rと、リール2L、2C、2Rを背面から照射するリールLED55と、が設けられている。また、リールLED55は、リール2L、2C、2Rの連続する3つの図柄に対応する12のLEDからなり、各図柄をそれぞれ独立して照射可能とされている。
また、リールセンサ33L、33C、33Rは、各リール2L、2C、2Rについて図柄番号0の図柄の領域の下端が各リールにおける所定位置を通過するときに、検出信号を出力するように配置されており、各リールについて図柄番号0の図柄の領域の下端がリール基準位置となる。
前面扉1bの各リール2L、2C、2Rの手前側(遊技者側)の位置には、液晶表示器51(図1参照)の表示領域51aが配置されている。液晶表示器51は、液晶素子に対して電圧が印加されていない状態で透過性を有する液晶パネルを有しており、表示領域51aの透視窓3に対応する透過領域51b及び透視窓3を介して遊技者側から各リール2L、2C、2Rが視認できるようになっている。
前面扉1bには、図1に示すように、メダルを投入可能なメダル投入部4、メダルが払い出されるメダル払出口9、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いて、その範囲内において遊技状態に応じて定められた規定数の賭数のうち最大の賭数(本実施例では後述するRT0〜4の規定数として3、RBの規定数として2が定められている)を設定する際に操作されるMAXBETスイッチ6、クレジットとして記憶されているメダル及び賭数の設定に用いたメダルを精算する(クレジット及び賭数の設定に用いた分のメダルを返却させる)際に操作される精算スイッチ10、ゲームを開始する際に操作されるスタートスイッチ7、リール2L、2C、2Rの回転を各々停止する際に操作されるストップスイッチ8L、8C、8R、演出に用いられる演出用スイッチ56が遊技者により操作可能にそれぞれ設けられている。
尚、本実施例では、回転を開始した3つのリール2L、2C、2Rのうち、最初に停止するリールを第1停止リールと称し、また、その停止を第1停止と称する。同様に、2番目に停止するリールを第2停止リールと称し、また、その停止を第2停止と称し、3番目に停止するリールを第3停止リールと称し、また、その停止を第3停止あるいは最終停止と称する。
また、前面扉1bには、図1に示すように、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器11、入賞の発生により払い出されたメダル枚数やエラー発生時にその内容を示すエラーコード、後述のナビ報知によるリールの停止順を識別可能な情報等が表示される遊技補助表示器12、賭数が1設定されている旨を点灯により報知する1BETLED14、賭数が2設定されている旨を点灯により報知する2BETLED15、賭数が3設定されている旨を点灯により報知する3BETLED16、メダルの投入が可能な状態を点灯により報知する投入要求LED17、スタートスイッチ7の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効LED18、ウェイト(前回のゲーム開始から一定期間経過していないためにリールの回転開始を待機している状態)中である旨を点灯により報知するウェイト中LED19、リプレイゲーム中である旨を点灯により報知するリプレイ中LED20が設けられた遊技用表示部13が設けられている。
MAXBETスイッチ6の内部には、MAXBETスイッチ6の操作による賭数の設定操作が有効である旨を点灯により報知するBETスイッチ有効LED21(図4参照)が設けられており、ストップスイッチ8L、8C、8Rの内部には、該当するストップスイッチ8L、8C、8Rによるリールの停止操作が有効である旨を点灯により報知する左、中、右停止有効LED22L、22C、22R(図4参照)がそれぞれ設けられており、演出用スイッチ56の内部には、演出用スイッチ56の操作が有効である旨を点灯により報知する演出用LED56a(図4参照)が設けられている。
前面扉1bの内側には、図2に示すように、所定のキー操作により後述するエラー状態及び後述する打止状態を解除するためのリセット操作を検出するリセットスイッチ23、後述する設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器24、所定の契機に打止状態(リセット操作がなされるまでゲームの進行が規制される状態)に制御する打止機能の有効/無効を選択するための打止スイッチ36a、所定の契機に自動精算処理(クレジットとして記憶されているメダルを遊技者の操作によらず精算(返却)する処理)に制御する自動精算機能の有効/無効を選択するための自動精算スイッチ36b、メダル投入部4から投入されたメダルの流路を、筐体1aの内部に設けられた後述のホッパータンク34a(図2参照)側またはメダル払出口9側のいずれか一方に選択的に切り替えるための流路切替ソレノイド30、メダル投入部4から投入され、ホッパータンク34a側に流下したメダルを検出する投入メダルセンサ31、投入メダルセンサ31の上流側で異物の挿入を検出する投入口センサ26を有するメダルセレクタ29、前面扉1bの開放状態を検出するドア開放検出スイッチ25(図4参照)が設けられている。
筐体1aの内部には、図2に示すように、前述したリール2L、2C、2R、リールモータ32L、32C、32R(図4参照)、各リール2L、2C、2Rのリール基準位置をそれぞれ検出可能なリールセンサ33L、33C、33R(図4参照)からなるリールユニット2、外部出力信号を出力するための外部出力基板1000(図4参照)、メダル投入部4から投入されたメダルを貯留するホッパータンク34a、ホッパータンク34aに貯留されたメダルをメダル払出口9より払い出すためのホッパーモータ34b(図4参照)、ホッパーモータ34bの駆動により払い出されたメダルを検出する払出センサ34c(図4参照)からなるホッパーユニット34、電源ボックス100が設けられている。
ホッパーユニット34の側部には、ホッパータンク34aから溢れたメダルが貯留されるオーバーフロータンク35が設けられている。オーバーフロータンク35の内部には、貯留されたメダルが満タン状態となったことを検出する満タンセンサ35a(図4参照)が設けられている。
電源ボックス100の前面には、図2に示すように、設定変更状態または設定確認状態に切り替えるための設定キースイッチ37、通常時においてはエラー状態や打止状態を解除するためのリセットスイッチとして機能し、設定変更状態においては後述する内部抽選の当選確率(出玉率)の設定値を変更するための設定スイッチとして機能するリセット/設定スイッチ38、電源をon/offする際に操作される電源スイッチ39が設けられている。
尚、電源ボックス100は、筐体1aの内部に設けられており、さらに前面扉1bは、店員等が所持する所定のキー操作により開放可能な構成であるため、これら電源ボックス100の前面に設けられた設定キースイッチ37、リセット/設定スイッチ38、電源スイッチ39は、キーを所持する店員等の者のみが操作可能とされ、遊技者による操作ができないようになっている。また、所定のキー操作により検出されるリセットスイッチ23も同様である。特に、設定キースイッチ37は、キー操作により前面扉1bを開放したうえで、さらにキー操作を要することから、遊技場の店員のなかでも、設定キースイッチ37の操作を行うキーを所持する店員のみ操作が可能とされている。
本実施例のスロットマシン1においてゲームを行う場合には、まず、メダルをメダル投入部4から投入するか、あるいはクレジットを使用して賭数を設定する。クレジットを使用するにはMAXBETスイッチ6を操作すれば良い。遊技状態に応じて定められた規定数の賭数が設定されると、入賞ラインLN(図1参照)が有効となり、スタートスイッチ7の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。本実施例では、後述するRT0〜4における規定数の賭数として3枚が定められ、後述するRBにおける規定数の賭数として2枚が定められており、これら遊技状態に応じた規定数の賭数が設定されると入賞ラインLNが有効となる。尚、遊技状態に対応する規定数のうち最大数を超えてメダルが投入された場合には、その分はクレジットに加算される。
入賞ラインとは、各リール2L、2C、2Rの透視窓3に表示された図柄の組合せが入賞図柄の組合せであるかを判定するために設定されるラインである。本実施例では、図1に示すように、リール2Lの中段、リール2Cの中段、リール2Rの中段、すなわち中段に水平方向に並んだ図柄に跨って設定された入賞ラインLNのみが入賞ラインとして定められている。尚、本実施例では、1本の入賞ラインのみを適用しているが、複数の入賞ラインを適用しても良い。
また、本実施例では、入賞ラインLNに入賞を構成する図柄の組合せが揃ったことを認識しやすくするために、入賞ラインLNとは別に、無効ラインLM1〜4を設定している。無効ラインLM1〜4は、これら無効ラインLM1〜4に揃った図柄の組合せによって入賞が判定されるものではなく、入賞ラインLNに特定の入賞を構成する図柄の組合せが揃った際に、無効ラインLM1〜4のいずれかに入賞ラインLNに揃った場合に入賞となる図柄の組合せ(例えば、ベル‐ベル‐ベル)が揃う構成とすることで、入賞ラインLNに特定の入賞を構成する図柄の組合せが揃ったことを認識しやすくするものである。
本実施例では、図1に示すように、リール2Lの上段、リール2Cの上段、リール2Rの上段、すなわち上段に水平方向に並んだ図柄に跨って設定された無効ラインLM1、リール2Lの下段、リール2Cの下段、リール2Rの下段、すなわち下段に水平方向に並んだ図柄に跨って設定された無効ラインLM2、リール2Lの上段、リール2Cの中段、リール2Rの下段、すなわち右下がりに並んだ図柄に跨って設定された無効ラインLM3、リール2Lの下段、リール2Cの中段、リール2Rの上段、すなわち右上がりに並んだ図柄に跨って設定された無効ラインLM4の4種類が無効ラインLMとして定められている。
また、本実施例では、入賞役として、入賞ラインLNに役として定められた所定の図柄の組合せ(例えば、「ベル‐スイカ‐チェリーb」)が揃ったときに入賞するとともに、かつ所定の図柄組合せが揃うことにより無効ラインLM1〜LM4のいずれかに所定の図柄組合せよりも認識しやすい指標となる図柄の組合せ(例えば、「スイカ‐スイカ‐スイカ」)が揃うことにより、無効ラインLM1〜LM4のいずれかに揃った図柄の組合せによって入賞したように見せることが可能な役を含む。以下では、所定の図柄の組合せが入賞ラインLNに揃ったときに無効ラインLM1〜LM4のいずれかに揃う図柄の組合せを、指標となる図柄の組合せと呼び、指標となる図柄の組合せを構成する図柄を指標図柄と呼ぶ。
ゲームが開始可能な状態でスタートスイッチ7を操作すると、各リール2L、2C、2Rが回転し、各リール2L、2C、2Rの図柄が連続的に変動する。この状態でいずれかのストップスイッチ8L、8C、8Rを操作すると、対応するリール2L、2C、2Rの回転が停止し、透視窓3に表示結果が導出表示される。
そして全てのリール2L、2C、2Rが停止されることで1ゲームが終了し、入賞ラインLN上に予め定められた図柄の組合せ(以下、役ともいう)が各リール2L、2C、2Rの表示結果として停止した場合には入賞が発生し、その入賞に応じて定められた枚数のメダルが遊技者に対して付与され、クレジットに加算される。また、クレジットが上限数(本実施例では50)に達した場合には、メダルが直接メダル払出口9(図1参照)から払い出されるようになっている。また、入賞ラインLN上に、遊技状態の移行を伴う図柄の組合せが各リール2L、2C、2Rの表示結果として停止した場合には図柄の組合せに応じた遊技状態に移行するようになっている。
尚、本実施例では、スタートスイッチ7の操作が有効な状態でスタートスイッチ7の操作が検出されたときにゲームが開始し、全てのリールが停止したときにゲームが終了する。また、ゲームを実行するための1単位の制御(ゲーム制御)は、前回のゲームの終了に伴う全ての制御が完了したときに開始し、当該ゲームの終了に伴う全ての制御が完了したときに終了する。
また、本実施例では、3つのリールを用いた構成を例示しているが、リールを1つのみ用いた構成、2つのリールを用いた構成、4つ以上のリールを用いた構成としても良く、2以上のリールを用いた構成においては、2以上の全てのリールに導出された表示結果の組合せに基づいて入賞を判定する構成とすれば良い。また、本実施例では、物理的なリールにて可変表示装置が構成されているが、液晶表示器などの画像表示装置にて可変表示装置が構成されていても良い。
また、本実施例におけるスロットマシン1にあっては、ゲームが開始されて各リール2L、2C、2Rが回転して図柄の変動が開始した後、いずれかのストップスイッチ8L、8C、8Rが操作されたときに、当該ストップスイッチ8L、8C、8Rに対応するリールの回転が停止して図柄が停止表示される。ストップスイッチ8L、8C、8Rの操作から対応するリール2L、2C、2Rの回転を停止するまでの最大停止遅延時間は190ms(ミリ秒)である。
リール2L、2C、2Rは、1分間に80回転し、80×21(1リール当たりの図柄コマ数)=1680コマ分の図柄を変動させるので、190msの間では最大で4コマの図柄を引き込むことができることとなる。つまり、停止図柄として選択可能なのは、ストップスイッチ8L、8C、8Rが操作されたときに表示されている図柄と、そこから4コマ先までにある図柄、合計5コマ分の図柄である。
このため、例えば、ストップスイッチ8L、8C、8Rのいずれかが操作されたときに当該ストップスイッチに対応するリールの下段に表示されている図柄を基準とした場合、当該図柄から4コマ先までの図柄を下段に表示させることができるため、リール2L、2C、2R各々において、ストップスイッチ8L、8Rのうちいずれかが操作されたときに当該ストップスイッチに対応するリールの中段に表示されている図柄を含めて5コマ以内に配置されている図柄を入賞ライン上に表示させることができる。
以下では、特に区別する必要がない場合にはリール2L、2C、2Rを単にリールという場合がある。また、リール2Lを左リール、リール2Cを中リール、リール2Rを右リールという場合がある。また、ストップスイッチ8L、8C、8Rの操作によりリール2L、2C、2Rを停止させる操作を停止操作という場合がある。
図4は、スロットマシン1の構成を示すブロック図である。スロットマシン1には、図4に示すように、遊技制御基板40、演出制御基板90、電源基板101が設けられており、遊技制御基板40によって遊技状態が制御され、演出制御基板90によって遊技状態に応じた演出が制御され、電源基板101によってスロットマシン1を構成する電気部品の駆動電源が生成され、各部に供給される。
電源基板101には、外部からAC100Vの電源が供給されるとともに、このAC100Vの電源からスロットマシン1を構成する電気部品の駆動に必要な直流電圧が生成され、遊技制御基板40及び演出制御基板90に供給されるようになっている。また、電源基板101には、前述したホッパーモータ34b、払出センサ34c、満タンセンサ35a、設定キースイッチ37、リセット/設定スイッチ38、電源スイッチ39が接続されている。
遊技制御基板40には、前述したMAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8R、精算スイッチ10、リセットスイッチ23、打止スイッチ36a、自動精算スイッチ36b、投入メダルセンサ31、ドア開放検出スイッチ25、リールセンサ33L、33C、33Rが接続されているとともに、電源基板101を介して前述した払出センサ34c、満タンセンサ35a、設定キースイッチ37、リセット/設定スイッチ38が接続されており、これら接続されたスイッチ類の検出信号が入力されるようになっている。また、遊技制御基板40には、前述したクレジット表示器11、遊技補助表示器12、1〜3BETLED14〜16、投入要求LED17、スタート有効LED18、ウェイト中LED19、リプレイ中LED20、BETスイッチ有効LED21、左、中、右停止有効LED22L、22C、22R、設定値表示器24、流路切替ソレノイド30、リールモータ32L、32C、32Rが接続されているとともに、電源基板101を介して前述したホッパーモータ34bが接続されており、これら電気部品は、遊技制御基板40に搭載された後述のメイン制御部41の制御に基づいて駆動されるようになっている。
遊技制御基板40には、遊技の進行に関する処理を行うととともに遊技制御基板40に搭載された制御回路の各部を直接的または間接的に制御するメイン制御部41と、所定周波数の発振信号となる制御用クロックCCLKを生成する制御用クロック生成回路42と、制御用クロックCCLKの発振周波数とは異なる所定周波数の発振信号となる乱数用クロックRCLKを生成する乱数用クロック生成回路43と、遊技制御基板40に直接または電源基板101を介して接続されたスイッチ類から入力された検出信号を取り込んでメイン制御部41に伝送するスイッチ検出回路44と、メイン制御部41から出力されたモータ駆動信号(ステッピングモータの位相信号)をリールモータ32L、32C、32Rに伝送するモータ駆動回路45と、メイン制御部41から出力されたソレノイド駆動信号を流路切替ソレノイド30に伝送するソレノイド駆動回路46と、メイン制御部41から出力されたLED駆動信号を遊技制御基板40に接続された各種表示器やLEDに伝送するLED駆動回路47と、スロットマシン1に供給される電源の電圧を監視して電圧の低下を検出したときに、その旨を示す電圧低下信号をメイン制御部41に対して出力する電断検出回路48と、電源投入時または電源遮断時等の電力供給が不安定な状態においてメイン制御部41にシステムリセット信号を与えるリセット回路49と、が搭載されている。
図5は、遊技制御基板40に搭載されたメイン制御部41の構成例を示している。メイン制御部41は、1チップマイクロコンピュータであり、外部バスインターフェイス501と、クロック回路502と、照合用ブロック503と、固有情報記憶回路504と、演算回路505と、リセット/割込コントローラ506と、CPU(Central Processing Unit)41aと、ROM(Read Only Memory)41bと、RAM(Random Access Memory)41cと、フリーランカウンタ回路507と、乱数回路508a、508bと、タイマ回路509と、割込コントローラ510と、パラレル入力ポート511と、シリアル通信回路512と、パラレル出力ポート513と、アドレスデコード回路514と、を備えて構成される。
リセット/割込コントローラ506は、メイン制御部41の内部や外部にて発生する各種リセット、割込要求を制御するためのものである。リセット/割込コントローラ506は、指定エリア外走行禁止(IAT)回路506aとウォッチドッグタイマ(WDT)506bとを備える。IAT回路506aは、ユーザプログラムが指定エリア内で正しく実行されているか否かを監視する回路であり、指定エリア外でユーザプログラムが実行されたことを検出するとIAT発生信号を出力する機能を備える。また、ウォッチドッグタイマ506bは、設定期間毎にタイムアウト信号を発生させる機能を備える。
外部バスインターフェイス501は、メイン制御部41を構成するチップの外部バスと内部バスとのインターフェイス機能や、アドレスバス、データバス及び各制御信号の方向制御機能などを有するバスインターフェイスである。クロック回路502は、制御用クロックCCLKを2分周することなどにより、内部システムクロックSCLKを生成する回路である。照合用ブロック503は、外部の照合機と接続し、チップの照合を行う機能を備える。固有情報記憶回路504は、メイン制御部41の内部情報となる複数種類の固有情報を記憶する回路である。演算回路505は、乗算及び除算を行う回路である。
CPU41aは、ROM41bから読み出した制御コードに基づいてユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を実行することにより、スロットマシン1における遊技制御を実行する制御用CPUである。こうした遊技制御が実行されるときには、CPU41aがROM41bから固定データを読み出す固定データ読出動作や、CPU41aがRAM41cに各種の変動データを書き込んで一時記憶させる変動データ書込動作、CPU41aがRAM41cに一時記憶されている各種の変動データを読み出す変動データ読出動作、CPU41aが外部バスインターフェイス501やパラレル入力ポート511、シリアル通信回路512などを介してメイン制御部41の外部から各種信号の入力を受け付ける受信動作、CPU41aが外部バスインターフェイス501やシリアル通信回路512、パラレル出力ポート513などを介してメイン制御部41の外部へと各種信号を出力する送信動作等も行われる。
ROM41bには、ユーザプログラム(ゲーム制御用の遊技制御処理プログラム)を示す制御コードや固定データ等が記憶されている。RAM41cは、ゲーム制御用のワークエリア等を提供する。ここで、RAM41cの少なくとも一部は、バックアップ電源によってバックアップされているバックアップRAMであれば良い。すなわち、スロットマシン1への電力供給が停止しても、所定期間はRAM41cの少なくとも一部の内容が保存される。
フリーランカウンタ回路507として、8ビットのフリーランカウンタを搭載している。乱数回路508a、508bは、8ビット乱数や16ビット乱数といった、所定の更新範囲を有する乱数値となる数値データを生成する回路である。本実施例では、乱数回路508a、508bのうち16ビット乱数回路508bが生成するハードウェア乱数は、後述する内部抽選用の乱数として用いられる。タイマ回路509は、16ビットプログラマブルタイマであり、設定されたタイマ値を制御用クロックCCLKの入力に基づいてダウンカウントし、0000Hに達したときに割込コントローラへの割込要求信号を出力する。本実施例では、タイマ回路509を用いて定期的な割込要求や時間計測を行うことが可能である。
割込コントローラ510は、割込端子からの外部割込要求や、内蔵の周辺回路(例えば、シリアル通信回路512、乱数回路508a、508b、タイマ回路509)からの割込要求を制御する回路である。パラレル入力ポート511は、8ビット幅の入力専用ポートを内蔵する。また、図4に示すメイン制御部41が備えるパラレル出力ポート513は、11ビット幅の出力専用ポートを内蔵する。シリアル通信回路512は、外部に対する入出力において非同期シリアル通信を行う回路である。
アドレスデコード回路514は、メイン制御部41の内部における各機能ブロックのデコードや、外部装置用のデコード信号であるチップセレクト信号のデコードを行うための回路である。チップセレクト信号により、メイン制御部41の内部回路、あるいは、周辺デバイスとなる外部装置を、選択的に有効動作させて、CPU41aからのアクセスが可能となる。
メイン制御部41は、例えば、ROM41bの記憶領域のうちプログラム等が格納されていない領域へのアクセスがあったとき、RAM41cの記憶領域のうちアクセス禁止が設定された領域へのアクセスがあったとき、すなわち正常な動作ではアクセスすることのないメモリ領域へのアクセスがあったときにイリーガルアクセスリセットを発生させることで、遊技の進行を不能化させるようになっており、ROM41bの未使用領域や動作とは関係しない領域、RAM41cの未使用領域等に不正なプログラムが格納された場合であっても、不正なプログラムが実行されてしまうことを防止できる。
また、メイン制御部41は、内部または外部によるリセットが発生することで起動することとなるが、この際、ROM41bに割り当てられ、割込処理の先頭アドレスが設定されるベクタテーブルに設定された値が、未使用を示す値であるか、プログラム等が実際に格納された領域を示す値であるか、を判定し、いずれの値でもない場合には起動しないようになっており、割込の発生等により本来意図していない処理が実行されてしまうことを事前に防止できる。
メイン制御部41は、パラレル出力ポート513を介してサブ制御部91に各種のコマンドを送信する。メイン制御部41からサブ制御部91へ送信されるコマンドは一方向のみで送られ、サブ制御部91からメイン制御部41へ向けてコマンドが送られることはない。また、本実施例では、パラレル出力ポート513を介してサブ制御部91に対してコマンドが送信される構成、すなわちコマンドがパラレル信号にて送信される構成であるが、シリアル通信回路512を介してサブ制御部91に対してコマンドを送信する構成、すなわちコマンドをシリアル信号にて送信する構成としても良い。
また、メイン制御部41は、遊技制御基板40に接続された各種スイッチ類の検出状態がパラレル入力ポート511から入力される。そしてメイン制御部41は、これらパラレル入力ポート511から入力される各種スイッチ類の検出状態に応じて段階的に移行するメイン処理を実行する。また、メイン制御部41は、割込の発生によりメイン処理に割り込んで割込処理を実行できるようになっている。本実施例では、タイマ回路509にてタイムアウトが発生したこと、すなわち一定時間間隔(本実施例では、約0.56ms)毎にタイマ割込処理(メイン)を実行する。また、メイン制御部41は、割込処理の実行中に他の割込を自動的に禁止するように設定されているとともに、複数の割込が同時に発生した場合には、予め定められた順位によって優先して実行する割込が設定されている。尚、割込処理の実行中に他の割込要因が発生し、割込処理が終了してもその割込要因が継続している状態であれば、割込処理が終了した時点で割込禁止が自動的に解除され、その時点で新たな割込が発生することとなる。尚、割込処理の実行中に他の割込を自動的に禁止するように設定され、割込処理が終了した時点で割込禁止が自動的に解除されるのではなく、割込処理の開始時にプログラムによって他の割込を禁止し、割込処理の終了時にプログラムによって割込禁止を解除するようにしても良い。
メイン制御部41は、メイン処理として遊技制御基板40に接続された各種スイッチ類の検出状態が変化するまでは制御状態に応じた処理を繰り返しループし、各種スイッチ類の検出状態の変化に応じて段階的に移行する処理を実行する。また、メイン制御部41は、一定時間間隔(本実施例では、約0.56ms)毎にタイマ割込処理(メイン)を実行する。尚、タイマ割込処理(メイン)の実行間隔は、メイン処理において制御状態に応じて繰り返す処理が一巡する時間とタイマ割込処理(メイン)の実行時間とを合わせた時間よりも長い時間に設定されており、今回と次回のタイマ割込処理(メイン)との間で必ず制御状態に応じて繰り返す処理が最低でも一巡することとなる。
演出制御基板90には、演出用スイッチ56が接続されており、この演出用スイッチ56の検出信号が入力されるようになっている。また、液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55等の演出装置が接続されており、これら演出装置は、演出制御基板90に搭載された後述のサブ制御部91による制御に基づいて駆動されるようになっている。尚、本実施例では、演出制御基板90に搭載されたサブ制御部91により、液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55等の演出装置の出力制御が行われる構成であるが、サブ制御部91とは別に演出装置の出力制御を直接的に行う出力制御部を演出制御基板90または他の基板に搭載し、サブ制御部91がメイン制御部41からのコマンドに基づいて演出装置の出力パターンを決定し、サブ制御部91が決定した出力パターンに基づいて出力制御部が演出装置の出力制御を行う構成としても良く、このような構成では、サブ制御部91及び出力制御部の双方によって演出装置の出力制御が行われることとなる。また、本実施例では、演出装置として液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55を例示しているが、演出装置は、これらに限られず、例えば、機械的に駆動する表示装置や機械的に駆動する役モノなどを演出装置として適用しても良い。
演出制御基板90は、サブCPU91a、ROM91b、RAM91c、I/Oポート91dを備えたマイクロコンピュータにより構成されて演出の制御を行うサブ制御部91と、演出制御基板90に接続された液晶表示器51の表示制御を行う表示制御回路92と、演出効果LED52と、リールLED55の駆動制御を行うLED駆動回路93と、スピーカ53、54からの音声出力制御を行う音声出力回路94と、電源投入時またはサブCPU91aからの初期化命令が一定時間入力されないときにサブCPU91aにリセット信号を与えるリセット回路95と、演出制御基板90に接続されたスイッチ類から入力された検出信号を検出するスイッチ検出回路96と、日付情報及び時刻情報を含む時間情報を出力する時計装置97と、スロットマシン1に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をサブCPU91aに対して出力する電断検出回路98と、その他の回路等、が搭載されている。
サブCPU91aは、遊技制御基板40から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板90に搭載された制御回路の各部を直接的または間接的に制御する。
リセット回路95は、遊技制御基板40においてメイン制御部41にシステムリセット信号を与えるリセット回路49よりもリセット信号を解除する電圧が低く定められており、電源投入時においてサブ制御部91は、メイン制御部41よりも早い段階で起動するようになっている。一方で、電断検出回路98は、遊技制御基板40においてメイン制御部41に電圧低下信号を出力する電断検出回路48よりも電圧低下信号を出力する電圧が低く定められており、電断時においてサブ制御部91は、メイン制御部41よりも遅い段階で停電を検知し、後述する電断処理(サブ)を行うこととなる。
サブ制御部91は、メイン制御部41と同様に、割込機能を備えており、メイン制御部41からのコマンド受信時に割込を発生させて、メイン制御部41から送信されたコマンドを取得し、バッファに格納するコマンド受信割込処理を実行する。また、サブ制御部91は、システムクロックの入力数が一定数に到達する毎、すなわち一定時間間隔(約2ms)毎に割込を発生させて後述するタイマ割込処理(サブ)を実行する。また、サブ制御部91は、メイン制御部41とは異なり、コマンドの受信に基づいて割込が発生した場合には、タイマ割込処理(サブ)の実行中であっても、当該処理に割り込んでコマンド受信割込処理を実行し、タイマ割込処理(サブ)の契機となる割込が同時に発生してもコマンド受信割込処理を最優先で実行するようになっている。また、サブ制御部91にも、停電時においてバックアップ電源が供給されており、バックアップ電源が供給されている間は、RAM91cに記憶されているデータが保持されるようになっている。
本実施例のスロットマシン1は、設定値に応じてメダルの払出率が変わるものである。詳しくは、後述する内部抽選、ナビストック抽選、上乗せ抽選等の遊技者に対する有利度に影響する抽選において設定値に応じた当選確率を用いることにより、メダルの払出率が変わるようになっている。設定値は1〜6の6段階からなり、6が最も払出率が高く、5、4、3、2、1の順に値が小さくなるほど払出率が低くなる。すなわち設定値として6が設定されている場合には、遊技者にとって最も有利度が高く、5、4、3、2、1の順に値が小さくなるほど有利度が段階的に低くなる。
設定値を変更するためには、設定キースイッチ37をon状態としてからスロットマシン1の電源をonする必要がある。設定キースイッチ37をon状態として電源をonすると、設定値表示器24にRAM41cから読み出された設定値が表示値として表示され、リセット/設定スイッチ38の操作による設定値の変更が可能な設定変更状態に移行する。設定変更状態において、リセット/設定スイッチ38が操作されると、設定値表示器24に表示された表示値が1ずつ更新されていく(設定値6からさらに操作されたときは、設定値1に戻る)。そして、スタートスイッチ7が操作されると表示値を設定値として確定する。そして、設定キースイッチ37がoffされると、確定した表示値(設定値)がメイン制御部41のRAM41cに格納され、遊技の進行が可能な状態に移行する。
尚、設定キースイッチ37がon状態で電源投入された場合に、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされていることを条件に、設定変更状態に移行する構成としても良く、このような構成とすることで、前面扉1bが開放されていない状態で不正に設定変更がされてしまうことを防止できる。また、前面扉1bの開放に対応する検出がされていることを条件に、設定変更状態に移行する構成においては、設定変更状態に移行後、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされなくなっても、設定変更状態を維持することが好ましく、これにより、設定変更中に前面扉1bが一時的に閉じてしまっても、再度、設定変更状態に移行させるための操作を必要とせず、設定変更操作が煩雑となってしまうことがない。また、設定変更状態に移行後、スタートスイッチ7が操作されて設定値が確定した後、設定キースイッチ37がoffとなったときに、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされていることを条件に、設定変更状態を終了して遊技の進行が可能な状態に移行する構成としても良く、このような構成においても、前面扉1bが開放されていない状態で不正に設定変更がされてしまうことを防止できる。
また、設定値を確認するためには、ゲーム終了後、賭数が設定されていない状態で設定キースイッチ37をon状態とすれば良い。このような状況で設定キースイッチ37をon状態とすると、設定値表示器24にRAM41cから読み出された設定値が表示されることで設定値を確認可能な設定確認状態に移行する。設定確認状態においては、ゲームの進行が不能であり、設定キースイッチ37をoff状態とすることで、設定確認状態が終了し、ゲームの進行が可能な状態に復帰することとなる。
尚、ゲーム終了後、賭数が設定されていない状態で設定キースイッチ37がon状態となったときに、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされていることを条件に、設定確認状態に移行する構成としても良く、このような構成とすることで、前面扉1bが開放されていない状態で不正に設定値が確認されてしまうことを防止できる。また、前面扉1bの開放に対応する検出がされていることを条件に、設定確認状態に移行する構成においては、設定確認状態に移行後、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされなくなっても、設定確認状態を維持することが好ましく、これにより、設定確認中に前面扉1bが一時的に閉じてしまっても、再度、設定確認状態に移行させるための操作を必要とせず、設定確認操作が煩雑となってしまうことがない。また、設定確認状態に移行後、スタートスイッチ7が操作されて設定値が確定した後、設定キースイッチ37がoffとなったときに、ドア開放検出スイッチ25により前面扉1bの開放に対応する検出がされていることを条件に、設定確認状態を終了して遊技の進行が可能な状態に復帰する構成としても良く、このような構成においても、前面扉1bが開放されていない状態で不正に設定値が確認されてしまうことを防止できる。
本実施例のスロットマシン1においては、メイン制御部41は、タイマ割込処理(メイン)を実行する毎に、電断検出回路48からの電圧低下信号が検出されているか否かを判定する停電判定処理を行い、停電判定処理において電圧低下信号が検出されていると判定した場合に、次回復帰時にRAM41cのデータが正常か否かを判定するためのデータを設定する電断処理(メイン)を実行する。
そして、メイン制御部41は、その起動時においてRAM41cのデータが正常であることを条件に、RAM41cに記憶されているデータに基づいてメイン制御部41の処理状態を電断前の状態に復帰させるが、RAM41cのデータが正常でない場合には、RAM異常と判定し、RAM異常エラーコードをレジスタにセットしてRAM異常エラー状態に制御し、遊技の進行を不能化させるようになっている。
エラー状態は、リセット操作(リセット/設定スイッチ38またはリセットスイッチ23の操作)により解除される通常エラー状態と、前述した設定変更状態に移行し、新たな設定値が設定されるまで解除されることがない特殊エラー状態と、を含み、RAM異常エラー状態は、特殊エラー状態であり、一度RAM異常エラー状態に制御されると、設定変更状態に移行し、新たな設定値が設定されるまで解除されることがない。
また、サブ制御部91もタイマ割込処理(サブ)において電断検出回路98からの電圧低下信号が検出されているか否かを判定し、電圧低下信号が検出されていると判定した場合に、次回復帰時にRAM91cのデータが正常か否かを判定するためのデータを設定する電断処理(サブ)を実行する。
そして、サブ制御部91は、その起動時においてRAM91cのデータが正常であることを条件に、RAM91cに記憶されているデータに基づいてサブ制御部91の処理状態を電断前の状態に復帰させるが、RAM91cのデータが正常でない場合には、RAM異常と判定し、RAM91cを初期化するようになっている。この場合、メイン制御部41と異なり、RAM91cが初期化されるのみで演出の実行が不能化されることはない。
また、サブ制御部91は、その起動時においてRAM91cのデータが正常であると判断された場合でも、メイン制御部41から設定変更状態に移行した旨を示す後述の設定コマンドを受信した場合、起動後一定時間が経過してもメイン制御部41の制御状態が復帰した旨を示す後述の復帰コマンドも設定コマンドも受信しない場合にも、RAM91cを初期化するようになっている。この場合も、RAM91cが初期化されるのみで演出の実行が不能化されることはない。
次に、メイン制御部41のRAM41cの初期化について説明する。メイン制御部41のRAM41cの格納領域のうちの使用可能領域は、遊技RAM領域、未使用領域4、非遊技RAM領域に区分されている(図7(b)参照)。さらに遊技RAM領域は、特別ワーク、重要ワーク、一般ワーク、未使用領域3、遊技スタック領域に区分されている。特別ワークは、設定値が変更されても初期化されないデータが格納されるワークであり、ソフトウェア乱数、設定値、遊技状態を示すデータ等が格納される。重要ワークは、特定の遊技状態(RB、BB)の終了時に初期化すると不都合のあるデータが格納されるワークであり、LEDの表示用データ、入力ポート、出力ポートの入出力データ、遊技時間の計時カウンタ等が格納される。一般ワークは、特定の遊技状態の終了時に初期化可能なデータが格納されるワークであり、停止図柄、メダルの払出枚数等が格納される。未使用領域3は、いずれのプログラムでも使用されないワークである。遊技スタック領域は、後述する遊技プログラムの実行中にメイン制御部41のレジスタから退避したデータが格納される領域である。
本実施例においてメイン制御部41は、設定キースイッチ37がONの状態での起動時でRAM41cのデータが破壊されているとき、設定キースイッチ37がONの状態での起動時でRAM41cのデータが破壊されていないとき、設定変更状態が終了されたとき、特定の遊技状態(RB、BB)の終了時、1ゲームの終了時、の5つからなる初期化条件が成立した際に、各初期化条件に応じて初期化される領域の異なる5種類の初期化を行う。
初期化0は、設定キースイッチ37がONの状態での起動時でRAM41cのデータが破壊されているときに行う初期化であり、初期化0では、使用可能領域全ての領域が初期化される。初期化1は、設定キースイッチ37がONの状態での起動時でRAM41cのデータが破壊されていないときに行う初期化であり、初期化1では、遊技RAM領域の特別ワーク以外の領域、非遊技RAM領域の全ての領域が初期化される。初期化2は、設定キースイッチ37がONの状態での起動で設定変更状態が終了された後に行う初期化であり、初期化2では、遊技RAM領域のうち特別ワーク及び遊技スタック領域(使用中)以外の領域が初期化される。初期化3は、特定の遊技状態の終了時に行う初期化であり、初期化3では、遊技RAM領域のうち一般ワーク、未使用領域3及び遊技スタック領域(未使用)が初期化される。初期化4は、1ゲーム終了時に行う初期化であり、初期化4では、遊技RAM領域の未使用領域3及び遊技スタック領域(未使用)が初期化される。尚、設定値や遊技状態を示すデータの格納領域は、特別ワークに割り当てられており、設定キースイッチ37がONの状態での起動時でRAM41cのデータが破壊されていないとき、すなわちRAM41cのデータが正常で設定変更される場合には、設定値や遊技状態を示すデータが保持されることとなる。また、後述のタイマカウンタの格納領域は、重要ワークに割り当てられており、ゲームの終了時や特定の遊技状態の終了時には初期化されることなく保持されることとなる。
また、本実施例のメイン制御部41は、上述の初期化実行する際には、初期化対象のRAMアドレスとして開始アドレスと終了アドレスが指定されることで、指定された開始アドレスから1バイト分のデータを0で上書きした後、当該1バイトのデータの論理和を計算し、計算結果が0であれば、次のアドレスに移動する処理を、指定された終了アドレスに達するまで繰り返し行うことで、指定されたアドレスの範囲のRAM領域を初期化する。
本実施例におけるメイン制御部41は、リセットの発生により起動すると、起動時設定を行う。起動時設定では、メイン制御部41が備えるステータスフラグを初期化する。ステータスフラグは、命令の演算結果や実行結果の状態を保持するデータであり、特に割込の禁止/許可を設定する割込マスタ許可フラグを含む。割込マスタ許可フラグの初期値は割込の禁止を示す値であるため、メイン制御部41は、割込が禁止された状態で起動することとなる。その後、後述のHWパラメータを参照して各種機能を設定した後、プログラム/データ領域に格納されたプログラムに従って、リセットが発生したときに、割込禁止の状態で起動するとともに、その後、最初に実行する初期設定処理を開始する。
メイン制御部41は、初期設定処理において、まず、割込を禁止に設定した後、起動時に設定キースイッチ37がONの状態であるか否かを判定し、起動時に設定キースイッチ37がONの状態であると判定された場合に、設定変更処理に移行し、設定変更処理の開始時にRAM41cの初期化を行う。この際、RAM41cのデータが正常であれば、特別ワークを保持してそれ以外の領域を初期化することで、設定変更後も変更前の制御状態(設定値や遊技状態等)の一部を保持することができる一方で、RAM41cのデータが正常でない場合には、特別ワークを含む使用可能領域の全ての領域を初期化することで、RAM41cのデータに異常を確実に解消することができるようになっている。
RAM41cを初期化した後、割込を許可に設定し、リセット/設定スイッチ38が操作れる毎に設定値を1〜6の範囲で1ずつ更新し、スタートスイッチ7のONが検出された後、設定キースイッチ37のONが検出されたときの設定値をRAM41cに格納して、設定変更処理を終了させる。
このように、メイン制御部41は、割込マスタ許可フラグの初期値が割込の禁止を示す値であり、割込が禁止された状態で起動し、起動後の初期設定処理においても、まず、割込を禁止に設定したうえで、その後の初期設定処理を実行するようになっているので、意図しない割込が発生することを防止できる。
また、メイン制御部41は、設定変更処理の終了後、遊技単位毎にゲームの進行に応じて段階的に処理を行うメイン処理を実行する。また、メイン処理では、遊技単位毎にRAM41cの初期化を行うとともに、設定変更処理の終了時にもRAM41cの初期化を行う。そして、設定変更処理の終了後、メイン処理においてRAM41cの初期化を行う処理の前の段階からメイン処理を開始するようになっており、設定変更処理の終了後のRAM41cの初期化と、遊技単位毎のRAM41cの初期化と、を共通の処理にて行うことが可能となる。
本実施例のメイン制御部41は、設定変更処理及びメイン処理において、遊技領域初期化処理を実行することにより、RAM41cの所定領域を初期化する。遊技領域初期化処理では、初期化対象RAMの先頭アドレスと終了アドレスとが指定されることにより、初期化対象RAMの容量を算出し、初期化対象RAMの先頭アドレスから、初期化対象RAMの容量分の領域を順次クリアすることで、遊技RAM領域のうち指定された初期化対象RAMの領域を初期化する。
尚、初期化対象RAMの先頭アドレスと終了アドレスとを指定することで、当該先頭アドレスを指定アドレスの初期値とし、指定アドレスのデータをクリアした後に指定アドレスを次のアドレスに更新する処理を、指定アドレスが当該終了アドレスとなるまで繰り返し実行することで、初期化対象RAMの先頭アドレスから終了アドレスまでの領域が初期化される構成としても良い。
本実施例の非遊技領域初期化処理では、初期化対象RAMの容量分のRAM領域を初期化対象RAMの先頭アドレス(未使用領域4の先頭アドレス)から順次クリアすることで、初期化対象RAMの先頭アドレスから終了アドレスまでの領域、すなわち、未使用領域4及び非遊技RAM領域を初期化する。
尚、初期化対象RAMの先頭アドレスと終了アドレスとを指定することで、当該先頭アドレスを指定アドレスの初期値とし、指定アドレスのデータをクリアした後に指定アドレスを次のアドレスに更新する処理を、指定アドレスが当該終了アドレスとなるまで繰り返し実行することで、初期化対象RAMの先頭アドレスから終了アドレスまでの領域が初期化される構成としても良い。
また、本実施例の非遊技領域初期化処理では、初期化対象RAMの先頭アドレスとして未使用領域4の先頭アドレスを設定することで、未使用領域4と非遊技RAM領域の全ての領域を初期化する構成であるが、非遊技領域初期化処理は、非遊技RAM領域の少なくとも一部の領域が初期化されるものであれば良く、非遊技RAM領域の一部の領域を初期化するものでも、非遊技RAM領域の一部の領域及び未使用領域4を初期化するものでも良い。
また、本実施例では、遊技領域初期化処理及び非遊技領域初期化処理において、指定アドレスに記憶されている1バイトのデータを0で上書きしてクリアし、その後、当該1バイトのデータの論理和を算出して、算出結果が0か否かを判定し、算出結果が0でない場合には、再度、1バイトのデータを0で上書きしてクリアする処理を行うことで、該当するアドレスのデータをクリアする構成であるが、指定アドレスに記憶されている1バイトのデータを0で上書きしてクリアするのみの構成でも良い。
本実施例のスロットマシン1は、遊技状態(RT0〜RT4、RB)に応じて設定可能な賭数の規定数(本実施例では、RT0〜4においては3、RBにおいては2)が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。尚、本実施例では、遊技状態に応じた規定数の賭数が設定された時点で、入賞ラインLNが有効化される。
そして、本実施例では、全てのリール2L、2C、2Rが停止した際に、有効化された入賞ライン(本実施例の場合、常に全ての入賞ラインが有効化されるため、以下では、有効化された入賞ラインを単に入賞ラインという)上に役と呼ばれる図柄の組合せが揃うと入賞となる。役は、同一図柄の組合せであっても良いし、異なる図柄を含む組合せであっても良い。
入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役と、遊技者にとって有利な遊技状態への移行を伴う特別役と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、後述する内部抽選に当選して、当該役の当選フラグがRAM41cに設定されている必要がある。尚、これら各役の当選フラグのうち、小役及び再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされ、次のゲームでは無効となるが、特別役の当選フラグは、当該フラグにより許容された役の組合せが揃うまで有効とされ、許容された役の組合せが揃ったゲームにおいて無効となる。すなわち特別役の当選フラグが一度当選すると、例え、当該フラグにより許容された役の組合せを揃えることができなかった場合にも、その当選フラグは無効とされずに、次のゲームへ持ち越されることとなる。
次に、本実施例の内部抽選について説明する。内部抽選は、メイン制御部41が、上記した各役への入賞を許容するか否かを、全てのリール2L、2C、2Rの表示結果が導出される以前(具体的には、スタートスイッチ7の検出時)に決定するものである。内部抽選では、まず、スタートスイッチ7の検出時に内部抽選用の乱数値(0〜65535の整数)を取得する。詳しくは、乱数回路508bにより生成され、乱数回路508bの乱数値レジスタに格納されている値をRAM41cに割り当てられた抽選用ワークに設定する。そして、遊技状態(RT0〜4、RB)に応じて定められた各役について、抽選用ワークに格納された数値データと、現在の遊技状態、賭数及び設定値に応じて定められた各役の判定値数に応じて入賞を許容するか否かの判定が行われる。
内部抽選では、内部抽選の対象となる役、現在の遊技状態及び設定値に対応して定められた判定値数を、内部抽選用の乱数値(抽選用ワークに格納された数値データ)に順次加算し、加算の結果がオーバーフローしたときに、当該役に当選したものと判定される。このため、判定値数の大小に応じた確率(判定値数/65536)で役が当選することとなる。
そして、内部抽選の結果を示す当選番号をRAM41cに設定する。当選番号は、内部当選フラグの設定、ナビ報知、コマンド作成、リール2L、2C、2Rの停止制御等に用いられる。
また、いずれかの役の当選が判定された場合には、当選番号に基づいて当選が判定された役に対応する当選フラグをRAM41cに割り当てられた内部当選フラグ格納ワークに設定する。内部当選フラグ格納ワークは、2バイトの格納領域にて構成されており、そのうちの上位バイトが、特別役の当選フラグが設定される特別役格納ワークとして割り当てられ、下位バイトが、一般役の当選フラグが設定される一般役格納ワークとして割り当てられている。詳しくは、特別役が当選した場合には、当該特別役が当選した旨を示す特別役の当選フラグを特別役格納ワークに設定し、一般役が当選した場合には、当該一般役が当選した旨を示す一般役の当選フラグを一般役格納ワークに設定する。尚、いずれの役及び役の組合せにも当選しなかった場合には、特別役格納ワーク及び一般役格納ワークをクリアする。
次に、リール2L、2C、2Rの停止制御について説明する。メイン制御部41は、リールの回転が開始したとき、及びリールが停止し、かつ未だ回転中のリールが残っているときに、当選番号及びROM41bに格納されているテーブルインデックス、テーブル作成用データを参照して、回転中のリール別に停止制御テーブルを作成する。そして、ストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作が有効に検出されたときに、該当するリールの停止制御テーブルを参照し、参照した停止制御テーブルの滑りコマ数に基づいて、操作されたストップスイッチ8L、8C、8Rに対応するリール2L、2C、2Rの回転を停止させる制御を行う。
本実施例では、滑りコマ数として0〜4の値が定められており、停止操作を検出してから最大4図柄を引き込んでリールを停止させることが可能である。すなわち停止操作を検出した停止操作位置を含め、最大5コマの範囲から図柄の停止位置を指定できるようになっている。また、1図柄分リールを移動させるのに1コマの移動が必要であるので、停止操作を検出してから最大4図柄を引き込んでリールを停止させることが可能であり、停止操作を検出した停止操作位置を含め、最大5図柄の範囲から図柄の停止位置を指定できることとなる。
本実施例では、いずれかの役に当選している場合には、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で当選している役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、最大4コマの引込範囲で揃えずに停止させる制御が行われることとなる。特別役が前ゲーム以前から持ち越されている状態で小役が当選した場合など、特別役と小役が同時に当選している場合には、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で当選している小役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、入賞ライン上に最大4コマの引込範囲で当選している小役を引き込めない場合には、入賞ライン上に最大4コマの引込範囲で当選している特別役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、4コマの引込範囲で揃えずに停止させる制御が行われることとなる。すなわちこのような場合には、特別役よりも小役を入賞ライン上に揃える制御が優先され、小役を引き込めない場合にのみ、特別役を入賞させることが可能となる。尚、特別役と小役を同時に引き込める場合には、小役のみを引き込み、特別役と同時に小役が入賞ライン上に揃わないようになる。また、特別役と小役が同時に当選している場合に、小役よりも特別役を入賞ライン上に揃える制御が優先され、特別役を引き込めない場合にのみ、小役を入賞ライン上に揃える制御を行っても良い。
また、本実施例では、特別役が前ゲーム以前から持ち越されている状態で再遊技役が当選した場合など、特別役と再遊技役が同時に当選している場合には、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で再遊技役の図柄を揃えて停止させる制御を行う。尚、この場合、再遊技役を構成する図柄または同時当選する再遊技役を構成する図柄は、リール2L、2C、2Rのいずれについても5図柄以内、すなわち4コマ以内の間隔で配置されており、4コマの引込範囲で必ず任意の位置に停止させることができるので、特別役と再遊技役が同時に当選している場合には、遊技者によるストップスイッチ8L、8C、8Rの操作タイミングに関わらずに、必ず再遊技役が揃って入賞することとなる。すなわちこのような場合には、特別役よりも再遊技役を入賞ライン上に揃える制御が優先され、必ず再遊技役が入賞することとなる。尚、特別役と再遊技役を同時に引き込める場合には、再遊技役のみを引き込み、再遊技役と同時に特別役が入賞ライン上に揃わないようになる。
尚、本実施例では、停止操作が行われたタイミング別の滑りコマ数を特定可能な停止制御テーブルを用いてリールの停止制御を行う構成であるが、停止可能な位置を特定可能な停止位置テーブルから停止位置を特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルや停止位置テーブルを用いずに、停止操作がされたタイミングで停止可能な停止位置を検索・特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルを用いた停止制御、停止位置テーブルを用いた停止制御、停止制御テーブルや停止位置テーブルを用いずに停止可能な停止位置を検索・特定することによる停止制御を併用する構成、停止制御テーブルや停止位置テーブルを一部変更して停止制御を行う構成としても良い。
本実施例においてメイン制御部41は、ゲームの開始後、リールの回転を開始させる毎にその時点、すなわちリールの回転を開始させた時点から経過した時間であるゲーム時間を計時するようになっており、1ゲームの終了後、メダルの投入等により規定数の賭数が設定され、ゲームの開始操作が有効となった状態でゲームの開始操作がされたときに、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間(本実施例では4.1秒)以上であれば、すなわち前のゲームのリール回転開始時点から規定時間が経過していれば、ウェイトを発生させず、その時点で当該ゲームにおける遊技のためのリールの回転を開始させる。一方、1ゲームの終了後、メダルの投入等により規定数の賭数が設定され、ゲームの開始操作が有効となった状態でゲームの開始操作がされたときに、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間未満であれば、すなわち前のゲームのリール回転開始時点から規定時間が経過していなければ、ウェイトを発生させて、その時点ではリールの回転を開始させず、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間に到達するまで待機し、規定時間に到達した時点でリールの回転を開始させる。
本実施例においてメイン制御部41は、遊技状態やエラーの発生状況などを示す外部出力信号を出力する制御を行う。これら外部出力信号は、外部出力基板1000、スロットマシン1が設置される遊技店(ホール)の情報提供端子板を介してホールコンピュータなどのホール機器に出力されるようになっている。
メイン制御部41は、賭数の設定に用いられたメダル数を示すメダルIN信号、入賞の発生により遊技者に付与されたメダル数を示すメダルOUT信号、遊技状態がRB(レギュラーボーナス)中の旨を示すRB中信号、遊技状態がBB(ビッグボーナス)中の旨を示すBB中信号、後述するARTの開始を示すART信号、前面扉1bが開放中の旨を示すドア開放信号、後述する設定変更モードに移行している旨を示す設定変更信号、メダルセレクタの異常を示す投入エラー信号、ホッパーユニット34の異常を示す払出エラー信号をそれぞれ出力する。
外部出力基板1000には、リレー回路、パラレル・シリアル変換回路、出力信号毎の端子が設けられ、情報提供端子板の回路と電気的に接続するための接続されるコネクタが設けられている。遊技制御基板40から出力された信号のうち、メダルIN信号、メダルOUT信号、RB中信号、BB中信号、ART信号は、リレー回路を介して、そのままパルス信号として情報提供端子板に出力される。これに対してドア開放信号、設定変更信号、投入エラー信号、払出エラー信号は、パラレル・シリアル変換回路にて、これらの信号を個別に識別可能なシリアル信号であるセキュリティ信号に変換されて情報提供端子板に出力される。
次に、メイン制御部41がサブ制御部91に対して送信するコマンドについて説明する。
本実施例では、メイン制御部41は、サブ制御部91に対して、投入枚数コマンド、クレジットコマンド、遊技状態コマンド、ART状態コマンド、内部当選コマンド、押し順コマンド、フリーズコマンド、ART抽選結果コマンド、リール加速情報コマンド、加速完了コマンド、停止操作時コマンド、滑りコマ数コマンド、停止コマンド、遊技終了コマンド、入賞判定コマンド、払出開始コマンド、払出終了コマンド、待機コマンド、打止コマンド、エラーコマンド、復帰コマンド、設定コマンド、設定確認コマンド、ドアコマンド、操作検出コマンドを含む複数種類のコマンドを送信する。これらコマンドは、コマンドの種類を示す1バイトの種類データとコマンドの内容を示す1バイトの拡張データとからなり、サブ制御部91は、種類データからコマンドの種類を判別できるようになっている。
投入枚数コマンドは、メダルの投入枚数、すなわち賭数の設定に使用されたメダル枚数を特定可能なコマンドであり、ゲーム終了後(設定変更後)からゲーム開始までの状態であり、電断復帰時、または規定数の賭数が設定されていない状態においてメダルが投入されるか、MAXBETスイッチ6が操作されて賭数が設定されたときに送信される。また、投入枚数コマンドは、賭数の設定操作がなされたときに送信されるので、投入枚数コマンドを受信することで賭数の設定操作がなされたことを特定可能である。
クレジットコマンドは、クレジットとして記憶されているメダル枚数を特定可能なコマンドであり、ゲーム終了後(設定変更後)からゲーム開始までの状態であり、規定数の賭数が設定されている状態において、メダルが投入されてクレジットが加算されたときに送信される。
遊技状態コマンドは、当該ゲームの遊技状態(RT0〜4、RB)を特定可能なコマンドであり、スタートスイッチ7が操作されてゲームが開始したときに送信される。
ART状態コマンドは、AT中か否か、ART中か否か、後述する規定ゲーム数に到達するまでの残りゲーム数、前兆期間の残りゲーム数、ARTの残りゲーム数を特定可能なコマンドであり、ゲームが開始したときであって、遊技状態コマンドの後に送信される。
内部当選コマンドは、内部抽選結果を特定可能なコマンドであり、スタートスイッチ7が操作されてゲームが開始したときであって、ART状態コマンドの後に送信される。内部当選コマンドは、特別役が当選しているか否かを特定可能な第1の内部当選コマンドと、一般役が当選しているか否かを特定可能な第2の内部当選コマンドと、を含み、第1の内部当選コマンドが送信された後に、第2の内部当選コマンドが送信される。
押し順コマンドは、停止順を特定可能なコマンドであり、スタートスイッチ7が操作されてゲームが開始されたときであって、内部当選コマンドが送信された後、及び各リールの停止操作に伴う停止制御が行われる毎に、停止コマンドが送信された後に送信される。尚、後述のナビ報知が実行されるゲームにおいては、ゲーム開始時から遊技者にとって有利な停止順を特定可能な押し順コマンドが送信され、後述のナビ報知が実行されないゲームにおいては、有利な停止順が確定するまでは遊技者にとって有利な停止順を特定不能な押し順コマンドが送信され、有利な停止順が確定したときから遊技者にとって有利な停止順を特定可能な押し順コマンドが送信される。
遊技状態コマンド、ART状態コマンド、内部当選コマンドは、スタートスイッチ7が操作されてゲームが開始したときに送信されるので、これらコマンドを受信することで、スタートスイッチ7が操作されてゲームが開始したことを特定可能である。
フリーズコマンドは、当該ゲームにおいて遊技の進行を所定期間にわたり遅延させるフリーズ状態に制御されるか否か、フリーズ状態に制御される場合にはその種類を特定可能なコマンドであり、ゲームが開始したときであって、内部当選コマンドの送信後に送信される。
ART抽選結果コマンドは、後述のART抽選または上乗せ抽選に当選したか否か、当選したARTのゲーム数または上乗せされるゲーム数を特定可能なコマンドであり、ゲームが開始したときであって、ART抽選または上乗せ抽選が行われたゲームにおいて内部当選コマンドの送信後に送信される。
リール加速情報コマンドは、遊技の進行に伴いリールの回転が開始する旨を特定可能なコマンドであり、遊技の進行に伴いリールの回転を開始するときに送信する。尚、フリーズ状態の終了に伴ってリールの回転を開始するときにも送信されるため、フリーズコマンドによりフリーズ状態の開始が特定された後、リール加速情報コマンドを受信することで遊技の進行に伴いリールの回転が開始する旨だけではなく、フリーズ状態の終了も特定可能となる。
加速完了コマンドは、遊技の開始に伴うリールの加速が完了した旨を特定可能なコマンドであり、遊技が開始された際にリール2L、2C、2Rの回転が開始させた後、最初に全てのリール2L、2C、2Rが定速回転となったときに送信される。
停止操作時コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止操作位置の領域番号を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に送信される。
滑りコマ数コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止操作がされてから停止するまでに移動する滑りコマ数を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に、対応する停止操作時コマンドが送信された後に送信される。
停止コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止位置の領域番号を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に、対応する滑りコマ数コマンドが送信された後に送信される。
停止操作時コマンド、滑りコマ数コマンド、停止コマンドは、いずれも停止するリールが左リール、中リール、右リールのいずれのリールであるか、を特定可能であり、かつ各リールの停止操作に伴う停止制御が行われる毎に送信されるので、これらコマンドを受信することで、いずれかのリールの停止操作がされたこと及び停止するリールを特定可能である。
遊技終了コマンドは、遊技が終了された旨を特定可能なコマンドであり、遊技者が第3停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときに送信される。
入賞判定コマンドは、入賞の有無、入賞ラインLNに揃った図柄の組合せ、並びに入賞の種類、入賞時のメダルの払出枚数を特定可能なコマンドであり、遊技者が第3停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときであり、遊技終了コマンドの送信後に送信される。
遊技終了コマンド、入賞判定コマンドは、いずれも遊技者が第3停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときに送信されるので、これらコマンドを受信することで、1ゲームを進行させるのに必要な全ての操作が終了したことを特定可能である。
払出開始コマンドは、メダルの払出開始を通知するコマンドであり、入賞やクレジット(賭数の設定に用いられたメダルを含む)の精算によるメダルの払出が開始されたときに送信される。また、払出終了コマンドは、メダルの払出終了を通知するコマンドであり、入賞及びクレジットの精算によるメダルの払出が終了したときに送信される。
待機コマンドは、待機状態へ移行する旨を示すコマンドであり、1ゲーム終了後、賭数が設定されずに終了推定時間(本実施例では60秒)経過して待機状態に移行するとき、クレジット(賭数の設定に用いられたメダルを含む)の精算によるメダルの払出が終了し、払出終了コマンドが送信された後に送信される。
打止コマンドは、打止状態の発生または解除を示すコマンドであり、BB終了後、エンディング演出待ち時間が経過した時点で打止状態の発生を示す打止コマンドが送信され、リセット操作がなされて打止状態が解除された時点で、打止状態の解除を示す打止コマンドが送信される。
エラーコマンドは、エラー状態の発生または解除、エラー状態の種類を示すコマンドであり、エラーが判定され、エラー状態に制御された時点でエラー状態の発生及びその種類を示すエラーコマンドが送信され、リセット操作がなされてエラー状態が解除された時点で、エラー状態の解除を示すエラーコマンドが送信される。
復帰コマンドは、メイン制御部41が電断前の制御状態に復帰した旨を示すコマンドであり、メイン制御部41の起動時において電断前の制御状態に復帰した際に送信される。
設定コマンドは、設定変更状態の開始または終了、設定変更後設定値を示すコマンドであり、設定変更状態に移行する時点で設定変更状態の開始を示す設定コマンドが送信され、設定変更状態の終了時に設定変更状態の終了及び設定変更後の設定値を示す設定コマンドが送信される。また、設定変更状態への移行に伴ってメイン制御部41の制御状態が初期化されるため、設定開始を示す設定コマンドによりメイン制御部41の制御状態が初期化されたことを特定可能である。
設定確認コマンドは、設定確認状態の開始または終了を示すコマンドであり、設定確認状態に移行する際に設定確認開始を示す設定確認コマンドが送信され、設定確認状態の終了時に設定確認終了を示す設定確認コマンドが送信される。
ドアコマンドは、ドア開放検出スイッチ25の検出状態、すなわちon(開放状態)/off(閉状態)を示すコマンドであり、電源投入時、1ゲーム終了時(ゲーム終了後、次のゲームの賭数の設定が開始可能となる前までの時点)、及びドア開放検出スイッチ25の検出状態が変化(onからoff、offからon)したときに送信される。
操作検出コマンドは、操作スイッチ類(MAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8R)の検出状態(on/off)を示すコマンドであり、一定時間毎に送信される。
これらコマンドのうち操作検出コマンド以外のコマンドは、メイン処理において生成され、RAM41cに設けられたコマンドキューに一時格納され、その後のタイマ割込処理(メイン)のコマンド送信処理おいて送信される。
一方、操作検出コマンドは、タイマ割込処理(メイン)のコマンド送信処理が10回実行される毎に、スイッチの検出状態に基づいて生成されるとともに、RAM41cに設けられたコマンドキューに一時格納され、その後のタイマ割込処理(メイン)のコマンド送信処理おいて送信される。
次に、メイン制御部41が演出制御基板90に対して送信するコマンドに基づいてサブ制御部91が実行する演出の制御について説明する。サブ制御部91は、メイン制御部41からのコマンドを受信した際に、コマンド受信割込処理を実行する。コマンド受信割込処理では、RAM91cに設けられた受信用バッファに、コマンド伝送ラインから取得したコマンドを格納する。
サブ制御部91は、タイマ割込処理(サブ)において、受信用バッファに未処理のコマンドが格納されているか否かを判定し、未処理のコマンドが格納されている場合には、そのうち最も早い段階で受信したコマンドに基づいてROM91bに格納された制御パターンテーブルを参照し、制御パターンテーブルに登録された制御内容に基づいて液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55等の各種演出装置の出力制御を行う。制御パターンテーブルには、複数種類の演出パターン毎に、コマンドの種類に対応する液晶表示器51の表示パターン、演出効果LED52の点灯態様、スピーカ53、54の出力態様、リールLED55の点灯態様等、これら演出装置の制御パターンが登録されており、サブ制御部91は、コマンドを受信した際に、制御パターンテーブルの当該ゲームにおいてRAM91cに設定されている演出パターンに対応して登録された制御パターンのうち、受信したコマンドの種類に対応する制御パターンを参照し、当該制御パターンに基づいて演出装置の出力制御を行う。これにより演出パターン及び遊技の進行状況に応じた演出が実行されることとなる。
尚、サブ制御部91は、あるコマンドの受信を契機とする演出の実行中に、新たにコマンドを受信した場合には、実行中の制御パターンに基づく演出を中止し、新たに受信したコマンドに対応する制御パターンに基づく演出を実行するようになっている。すなわち演出が最後まで終了していない状態でも、新たにコマンドを受信すると、受信した新たなコマンドが新たな演出の契機となるコマンドではない場合を除いて実行していた演出はキャンセルされて新たなコマンドに基づく演出が実行されることとなる。
演出パターンは、内部当選コマンドを受信した際に、内部当選コマンドが示す内部抽選の結果に応じた選択率にて選択され、RAM91cに設定される。演出パターンの選択率は、ROM91bに格納された演出テーブルに登録されており、サブ制御部91は、内部当選コマンドを受信した際に、内部当選コマンドが示す内部抽選の結果に応じて演出テーブルに登録されている選択率を参照し、その選択率に応じて複数種類の演出パターンからいずれかの演出パターンを選択し、選択した演出パターンを当該ゲームの演出パターンとしてRAM91cに設定するようになっており、同じコマンドを受信しても内部当選コマンドの受信時に選択された演出パターンによって異なる制御パターンが選択されるため、結果として演出パターンによって異なる演出が行われることがある。
本実施例におけるスロットマシン1では、メイン制御部41により、内部抽選結果に応じて遊技者にとって有利となる停止順を遊技補助表示器12の点灯態様により報知するナビ報知を実行可能な報知期間となるアシストタイム(以下、ATという)に制御可能となっている。
メイン制御部41は、ATに制御している場合には、遊技状態に応じたナビ対象役に当選することにより、ナビ報知を実行して、当選したナビ報知役の当選番号に基づいて遊技者にとって有利となる停止順を報知するとともに、当該当選番号に基づいて遊技者にとって有利となる停止順を特定可能な押し順コマンドをサブ制御部91に対して送信することで、液晶表示器51等を用いたナビ演出を実行させる。また、本実施例においてメイン制御部41は、ATに制御していない通常状態であっても、一定の条件を満たすことにより、ナビ報知を実行し、ナビ演出を実行させることが可能である。
図6は、メイン制御部41が用いるメモリ領域のアドレスマップである。図6に示すように、メイン制御部41が用いるメモリ領域は、ROM41bに割り当てられたメモリ領域(0000H〜7FFFH)と、RAM41cに割り当てられたメモリ領域(F000H〜FFFFH)と、を含む。
ROM41bのメモリ領域は、プログラム及び固定データが格納されるプログラム/データ領域(0000H〜26FFH)と、プログラムのタイトル、バージョン等の任意のデータを設定可能なROMコメント領域(2700H〜277FH)と、後述するCALLV命令のサブルーチンの上位アドレス及びタイマ割込処理(メイン)の先頭アドレスが設定されるベクタテーブル領域(2780H〜27A7H)と、メイン制御部41の内部機能をハードウェア的に設定するためのパラメータが設定されるHWパラメータ領域(27A8H〜27FFH)と、アクセスが禁止される未使用領域(2800H〜7FFFH)を含む。
ROM41bにおけるHWパラメータ領域に設定されるパラメータは、プログラム/データ領域で使用するROM領域の最終アドレス(HPRGEND)、アクセス禁止するRAM領域の開始アドレス(HRAMSTAT)及び最終アドレス(HRAMEND)を含む。
RAM41cのメモリ領域は、ワークとして使用可能な使用可能領域(F000H〜F400H)と、メイン制御部41に搭載されている各機能を制御するためのレジスタ群が格納される内部機能レジスタ領域(F4B0H〜F6FFH)と、アクセスが禁止される未使用領域(F401H〜F4AFH、F700H〜FFFFH)と、を含む。
図7は、メイン制御部41のROM41bにおけるプログラム/データ領域及びRAM41cにおける使用可能領域のアドレスマップである。
図7(a)に示すように、ROM41bにおけるプログラム/データ領域は、遊技の進行に係わる遊技プログラムが記憶される遊技プログラム領域と、遊技プログラムが用いる遊技データが記憶される遊技データ領域と、未使用領域1と、遊技の進行に係わらない非遊技プログラムが記憶される非遊技プログラム領域と、非遊技プログラムが用いる非遊技データが記憶される非遊技データ領域と、未使用領域2と、を含む。
尚、遊技の進行とは、遊技を構成する一連のプロセスを進行させることであり、スロットマシンであれば、賭数を設定してゲームを開始可能とする段階、ゲームを開始してリールを回転させる段階、リールを停止させて表示結果を導出させる段階、表示結果に応じてメダル等の価値を付与する段階、を進行させることである。
遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、がそれぞれ別個に割り当てられているとともに、遊技プログラム領域及び非プログラム領域のうちROM41bの記憶領域において後方に割り当てられていた非プログラム領域の手前の領域は、少なくとも16バイト以上の未使用領域1が割り当てられているため、遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
また、遊技プログラム領域と遊技データ領域、非遊技プログラム領域と非遊技データ領域はそれぞれ連続する領域に割り当てられる一方、遊技の進行に係わる遊技プログラム領域及び遊技データ領域と、遊技の進行に係わらない非遊技プログラム及び非遊技データ領域と、が少なくとも16バイト以上の未使用領域1を挟んで連続しない領域に割り当てられているため、遊技の進行に係わる遊技プログラム領域及び遊技データ領域と、遊技の進行に係わらない非遊技プログラム及び非遊技データ領域と、を記憶領域の違いに応じて容易に特定することができる。
尚、上記において記憶領域の前後とは、記憶領域に割り当てられたアドレス値の大小関係であり、アドレスが小さい方が前方となり、アドレスが大きい方が後方となる。このため、一の記憶領域よりも後方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が大きい記憶領域が該当し、一の記憶領域よりも前方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が小さい記憶領域が該当する。
また、非遊技プログラム領域よりも後方に遊技プログラムが割り当てられ、非遊技プログラム領域よりも後方に割り当てられた遊技プログラムの手前に未使用領域が割り当てられた構成としても良く、このような構成においても遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
また、遊技プログラム領域と、非遊技プログラム領域と、が未使用領域1を挟んで隣接する領域に割り当てられる構成としても良く、このような構成であっても、遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
また、ROM41bのプログラム/データ領域の未使用領域1、2には、全ての領域に0値が格納されているため、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データと、未使用領域1、2と、を容易に区別することができるとともに、未使用領域1、2に不正なデータが格納されている場合でも容易に発見することができる。
尚、ROM41bのプログラム/データ領域の未使用領域1、2における全ての領域に1が格納される構成としても良く、このような構成とした場合でも、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データと、未使用領域1、2と、を容易に区別することができるとともに、未使用領域1、2に不正なデータが格納されている場合でも容易に発見することができる。
また、遊技プログラム領域と、非遊技プログラム領域と、が別個の領域に割り当たられた構成であれば、遊技プログラム領域と、非遊技プログラム領域と、が隣接する領域にわら当てられる構成としても良く、このような構成であっても遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
また、遊技プログラム領域及び非遊技プログラム領域はいずれも、アドレスを2進数表記した場合に下位4桁の値が同じ0のアドレス(0H)から開始するようになっており、ROM41bのプログラム/データ領域のうち遊技の進行に係る遊技プログラム領域と、遊技の進行に係わらない非遊技プログラム領域と、を他の領域と容易に区別することができる。
また、遊技プログラム領域及び非遊技プログラム領域はいずれも、アドレスを2進数表記した場合に下位4桁の値が同じ0のアドレスから開始するだけでなく、16進数表記した場合に下位1桁の値が同じ0のアドレス(0H)から開始するので、アドレスを2進数表記した場合だけでなく、16進数表記した場合にも遊技プログラム領域と、非遊技プログラム領域と、を他の領域と容易に区別することができる。
尚、遊技プログラム領域及び非遊技プログラム領域がいずれも、アドレスを2進数表記したか、16進数表記したか、に関わらず、下位N(Nは1以上の自然数)桁が同じ値のアドレスから開始する構成であれば、遊技プログラム領域と、非遊技プログラム領域と、を他の領域と容易に区別することが可能であり、例えば、下位N(Nは1以上の自然数)桁の値が同じ1のアドレスから開始する構成でも同様の効果が得られるものである。
図7(b)に示すように、RAM41cの使用可能領域は、遊技プログラムがワークとして用いる遊技RAM領域と、非遊技プログラムがワークとして用いる非遊技RAM領域と、未使用領域4と、を含んでおり、遊技RAM領域には、特別ワークと、重要ワークと、一般ワークと、未使用領域3と、遊技プログラムがデータを退避する遊技スタック領域と、が含まれ、非遊技RAM領域には、遊技プログラムが参照可能な領域と、遊技プログラムが参照不可能な領域と、非遊技プログラムがデータを退避する非遊技スタック領域と、が含まれる。尚、本実施例では、遊技スタック領域と非遊技スタック領域とをそれぞれ異なる領域に個別に備える構成であるが、遊技プログラム及び非遊技プログラムが共用する一のスタック領域を備える構成としても良い。
未使用領域3は、遊技プログラム及び非遊技プログラムのいずれも使用しない領域であり、予め定められた容量の遊技RAM領域に対して余剰となった領域である。
また、未使用領域4は、遊技プログラム及び非遊技プログラムのいずれも使用しない16バイト以上の領域である。遊技RAM領域と、非遊技RAM領域とが、未使用領域4を挟んで連続しない領域に割り当てられているため、遊技の進行に係わる遊技プログラムが用いる遊技RAM領域と、遊技の進行に係わらない非遊技プログラムが用いる非遊技RAM領域と、を記憶領域の違いに応じて容易に特定することができる。
以下では、遊技プログラム領域、遊技データ領域及び遊技RAM領域をまとめて遊技領域と称す場合があり、非遊技プログラム領域、非遊技データ領域及び非遊技RAM領域をまとめて非遊技領域と称す場合がある。また、未使用領域1及び未使用領域2、未使用領域3及び未使用領域4をまとめて未使用領域と称す場合がある。
メイン制御部41は、HWパラメータ領域に設定されるパラメータに基づいて、ROM41bのプログラム/データ領域のうちアクセスが禁止された領域へのアクセスがあったとき、RAM41cの使用可能領域のうちアクセスが許可に設定されていない領域へのアクセスがあったとき、ROM41bのうちプログラム/データ領域以外の領域へのアクセスがあったとき、RAM41cのうち使用可能領域以外の領域へのアクセスがあったときに、すなわち正常な動作ではアクセスすることのないメモリ領域へのアクセスがあったときにイリーガルアクセスリセットを発生させることで、遊技の進行を不能化させるので、ROM41bの未使用領域や動作とは関係しない領域、RAM41cの未使用領域等に不正なプログラムが格納された場合であっても、不正なプログラムが実行されてしまうことを防止できる。
特に本実施例では、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域1が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち遊技プログラム領域の先頭アドレスから非遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域(遊技プログラム領域から非遊技データ領域までの領域)へのアクセスを一括して許可に設定する一方で、それ以外の領域、すなわちプログラム/データ領域のうち遊技プログラムや遊技データ、非遊技プログラム、非遊技データが格納されていない非遊技データよりも後の領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
また、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち非遊技プログラム領域の先頭アドレスから遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域へのアクセスを一括して許可に設定する一方で、それ以外の領域へのアクセスが禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
尚、プログラム/データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域1が割り当てられるとともに、プログラム/データ領域のうち遊技プログラム領域を含む一かたまりの領域(遊技プログラム領域から遊技データ領域までの領域)、非遊技プログラムを含む一かたまりの領域(非遊技プログラム領域から非遊技データ領域までの領域)へのアクセスをそれぞれ許可に設定し、他の領域へのアクセスを禁止する構成としても良く、このような構成とした場合でも、プログラム/データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。また、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、プログラム/データ領域のうち遊技プログラム領域を含む一かたまりの領域(遊技プログラム領域から遊技データ領域までの領域)、非遊技プログラムを含む一かたまりの領域(非遊技プログラム領域から非遊技データ領域までの領域)へのアクセスをそれぞれ許可に設定し、他の領域へのアクセスを禁止する構成としても良く、このような構成とした場合でも、プログラム/データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
また、上記では、プログラム/データ領域においてアクセスを許可する領域そのものを設定する構成であるが、プログラム/データ領域においてアクセスを禁止する領域を設定することで、間接的にアクセスを許可する領域が設定される構成としても良い。
メイン制御部41は、HWパラメータ領域に設定されるパラメータに基づいて、プログラム走行を許可する指定エリア以外の領域においてユーザプログラムが実行された場合、すなわち正常な動作ではユーザプログラムが実行されることのない領域でユーザプログラムが実行された場合に、IAT回路506aがIAT発生信号を出力することで、遊技の進行を不能化させるので、ROM41bの未使用領域や動作とは関係しない領域、RAM41cの未使用領域等に不正なプログラムが格納された場合であっても、不正なプログラムが実行されてしまうことを防止できる。
特に本実施例では、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域1が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち遊技プログラム領域、非遊技プログラム領域の各々について、IAT回路506aがプログラム走行を許可する指定エリアとして設定する一方で、それ以外の領域、すなわちプログラム/データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域でのプログラム走行が禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
また、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち遊技プログラム領域、非遊技プログラム領域の各々について、IAT回路506aがプログラム走行を許可する指定エリアとして設定する一方で、それ以外の領域でのプログラム走行が禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
尚、プログラム/データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域1が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち遊技プログラム領域の先頭アドレスから非遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域(遊技プログラム領域から非遊技データ領域までの領域)について、IAT回路506aがプログラム走行を許可する指定エリアとして一括して設定し、他の領域でのプログラム走行が禁止される構成としても良く、このような構成とした場合でも、プログラム/データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域でのプログラム走行が禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。また、ROM41bのうちプログラムによってアクセスが許可されたプログラム/データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、HWパラメータ領域に設定されるパラメータに基づいて、プログラム/データ領域のうち非遊技プログラム領域の先頭アドレスから遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域(遊技プログラム領域から非遊技データ領域までの領域)について、IAT回路506aがプログラム走行を許可する指定エリアとして一括して設定し、他の領域でのプログラム走行が禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
また、上記では、プログラム/データ領域においてプログラム走行を許可する領域そのものを設定する構成であるが、プログラム/データ領域においてプログラム走行を禁止する領域を設定することで、間接的にプログラム走行を許可する領域が設定される構成としても良い。
メイン制御部41が実行するプログラムは、プログラム全体の進行を管理するメインルーチンと、他のプログラムの実行中に呼び出されるサブルーチンと、を含む。
また、メイン制御部41にプログラム/データ領域に格納されたプログラムを実行させる命令として、CALL命令を含む。
CALL命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたサブルーチンを呼び出して実行させる命令である。メイン制御部41は、CALL命令によりサブルーチンを呼び出す場合には、呼び出し元のアドレスをスタック領域に格納し、指定されたアドレスに格納されたサブルーチンを呼び出して実行する。そして、当該サブルーチンの終了後、スタック領域に格納されている呼び出し元のアドレス、すなわちCALL命令を実行した呼び出し元のメインルーチンまたはサブルーチンのプログラムに復帰する。
また、CALL命令は、通常のCALL命令と、特殊なCALL命令であるCALLV命令と、を含む。通常のCALL命令は、上位アドレス及び下位アドレスの双方を指定して指定された上位アドレス及び下位アドレスによりアドレスを特定してサブルーチンを呼び出す命令であるのに対して、CALLV命令は、下位アドレスのみ指定することで、ROM41bのベクタテーブル領域に予め設定された上位アドレス及び指定された下位アドレスによりアドレスを特定してサブルーチンを呼び出す命令であり、通常のCALL命令に比較して少ないデータ量でサブルーチンを呼び出すことが可能となる。
RST命令は、予め定められた複数の特定アドレスに対応する値を指定することで、指定された値に対応する特定アドレスに格納されたサブルーチンを呼び出して実行させる命令であり、上記した通常のCALL命令やCALLV命令に比較して少ないデータ量でサブルーチンを呼び出すことが可能となる。メイン制御部41は、RST命令によりサブルーチンを呼び出す場合には、呼び出し元のアドレスをスタック領域に格納し、指定された値に対応する特定アドレスに格納されたサブルーチンを呼び出して実行する。そして、当該サブルーチンの終了後、スタック領域に格納されている呼び出し元のアドレス、すなわちRST命令を実行した呼び出し元のメインルーチンまたはサブルーチンに復帰する。
ジャンプ命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたプログラムに移動する命令である。メイン制御部41は、ジャンプ命令により指定されたアドレスに格納されたプログラムに移動し、移動先のプログラムを実行する。この場合には、CALL命令やRST命令と異なり、移動後のプログラムが終了しても移動元のプログラムに復帰することはない。
また、メイン制御部41にプログラム/データ領域に格納されたデータを読み出す命令としてLD命令を含む。LD命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたデータを指定されたレジスタに読み出す命令である。メイン制御部41は、LD命令により指定されたアドレスに格納されたデータを読み出し、LD命令により指定されたレジスタに読み出したデータを格納する。
ROM41bに格納された遊技プログラムのうち特に使用頻度の高いサブルーチンは、ROM41bの遊技プログラム領域のうち先頭アドレスが特定値(例えば00H)となる領域に格納されている。一方、ROM41bのベクタテーブル領域には、CALLV命令で呼び出すサブルーチンの上位アドレスとして特定値が設定されている。そして、メイン制御部41は、先頭アドレスの上位アドレスが特定値となるサブルーチンを呼び出すときに、CALLV命令を用いて下位アドレスのみ指定することで、上位アドレスとしてベクタテーブル領域に設定された特定値を特定し、下位アドレスとして指定された下位アドレスを特定し、上位及び下位を合わせたアドレスに格納されたサブルーチンを呼び出して実行する。このため、遊技プログラムのうち特に使用頻度の高いサブルーチンを呼び出す際に用いるアドレスの一部を構成する上位アドレスが特定値として予めベクタテーブルに設定されており、ベクタテーブルに設定された特定値に基づいてアドレスが特定されるため、上位アドレス及び下位アドレスの双方を指定してプログラムを呼び出す通常のCALL命令に比較して少ないデータ量にてサブルーチンを呼び出すことが可能となり、これらのサブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
尚、ROM41bに格納された非遊技プログラムのうち特に使用頻度の高いサブルーチンを、ROM41bの非遊技プログラム領域のうち先頭アドレスが特定値となる領域に格納するとともに、ROM41bのベクタテーブル領域に、CALLV命令で呼び出すサブルーチンの上位アドレスとして特定値を設定し、メイン制御部41が先頭アドレスの上位アドレスが特定値となるサブルーチンを呼び出すときに、CALLV命令を用いて下位アドレスのみ指定することで、これらのサブルーチンを呼び出して実行する構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してプログラムを呼び出す通常のCALL命令に比較して少ないデータ量にてサブルーチンを呼び出すことが可能となり、これらのサブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
また、CALLV命令で呼び出す際に用いる上位アドレスを、ベクタテーブル領域ではなく、メイン制御部41の特定のレジスタに設定する構成としても良い。
また、CALLV命令に限らず、アドレスの一部が、ベクタテーブル領域に格納された値、特定のレジスタに設定された値等を用いて特定され、アドレスの残りの部分を指定することで、サブルーチンの格納アドレスが特定可能となる特殊なCALL命令を用いる構成であれば、サブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。また、ベクタテーブル領域を構成する複数の領域に、それぞれアドレスよりもデータ量の小さい識別値を割り当て、これら複数の領域にそれぞれサブルーチンの格納アドレスを設定するとともに、識別値を指定することで、識別値に対応する領域に格納されたサブルーチンの格納アドレスを特定可能となる特殊なCALL命令を用いる構成であっても、サブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
また、ROM41bに格納された遊技データのうち特に使用頻度の高い遊技データを、ROM41bの遊技データ領域のうち先頭アドレスが特定値となる領域に格納するとともに、ROM41bのベクタテーブル領域に、特殊なLD命令で読み出すデータの上位アドレスとして特定値を設定し、メイン制御部41が先頭アドレスの上位アドレスが特定値となる遊技データを呼び出すときに、特殊なLD命令を用いて下位アドレスのみ指定することで、これらの遊技データを読み出す構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してデータを読み出す通常のLD命令に比較して少ないデータ量にて遊技データを呼び出すことが可能となり、これらの遊技データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
また、ROM41bに格納された非遊技データのうち特に使用頻度の高い非遊技データを、ROM41bの非遊技データ領域のうち先頭アドレスが特定値となる領域に格納するとともに、ROM41bのベクタテーブル領域に、特殊なLD命令で読み出すデータの上位アドレスとして特定値を設定し、メイン制御部41が先頭アドレスの上位アドレスが特定値となる非遊技データを呼び出すときに、特殊なLD命令を用いて下位アドレスのみ指定することで、これらの非遊技データを読み出す構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してデータを読み出す通常のLD命令に比較して少ないデータ量にて非遊技データを呼び出すことが可能となり、これらの非遊技データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
また、これらの場合でも特殊なLD命令で呼び出す際に用いる上位アドレスを、ベクタテーブル領域ではなく、メイン制御部41の特定のレジスタに設定する構成としても良い。
また、アドレスの一部が、ベクタテーブル領域に格納された値、特定のレジスタに設定された値等を用いて特定され、アドレスの残りの部分を指定することで、データの格納アドレスが特定可能となる特殊なLD命令を用いる構成であれば、データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。また、ベクタテーブル領域を構成する複数の領域に、それぞれアドレスよりもデータ量の小さい識別値を割り当て、これら複数の領域にそれぞれデータの格納アドレスを設定するとともに、識別値を指定することで、識別値に対応する領域に格納されたデータの格納アドレスを特定可能となる特殊なLD命令を用いる構成であっても、データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
メイン制御部41は、システムリセット信号の入力によるシステムリセット、WDT506bによるWDTリセット、前述のイリーガルアクセスリセットが発生することで起動することとなるが、この際、ベクタテーブル領域に設定された値、すなわちCALLV命令のサブルーチンの上位アドレス及びタイマ割込処理(メイン)の先頭アドレスが、プログラム領域のうちプログラム等が実際に格納された領域を示す値であるか、またはFFFFH(未使用のベクタテーブル領域に設定される値)であるか、を判定し、ベクタテーブル領域に設定された値がプログラムが設定される領域外を示す値でもなく、FFFFHでもない場合には、起動しないようになっており、割込の発生等により本来意図していない処理が実行されてしまうことを事前に防止できる。
遊技プログラムとは、遊技の進行に係わるプログラムであり、当該プログラムに基づく処理を実行しないと、遊技の進行に支障をきたす処理を実行するためのプログラムである。一方、非遊技プログラムとは、遊技の進行に係わらないプログラムであり、遊技プログラムから呼び出されて当該プログラムに基づく処理が実行されずに遊技プログラムに復帰した場合でも、遊技を進行させることが可能な処理を実行するためのプログラムである。
遊技プログラムは、図8に示すように、遊技プログラムだけに含まれる遊技専用プログラムと、遊技プログラム及び非遊技プログラム双方に含まれる共通判定プログラム及び共通汎用プログラムと、を含む。
遊技専用プログラムは、例えば、遊技開始待ち処理、内部抽選処理、リール制御処理、遊技終了時設定処理、外部出力1処理、初期設定処理、電断処理、エラー処理を含む。遊技開始待ち処理は、1ゲームの制御の終了後、メダルの投入等により賭数を設定し、規定数の賭数が設定された後、スタートスイッチ7が操作されることでゲームを開始させるための処理であり、内部抽選処理は、内部抽選を行い、当選フラグの設定等を行う処理であり、リール制御処理は、リールの回転を開始させ、ストップスイッチ8L、8C、8Rが操作されることでリールを停止させるための処理であり、遊技終了時設定処理は、停止したリールの停止位置に応じて入賞が発生したか否かを判定し、メダルの払出、再遊技の設定、遊技状態の移行等を行うための処理であり、外部出力1処理は、外部出力信号のうちメダルIN信号、メダルOUT信号、RB中信号、BB中信号、RT中信号の出力制御を行うための処理であり、初期設定処理は、電源投入時においてゲームを可能な状態とするための処理(バックアップ異常確認、レジスタ初期化等)であり、電断処理は、電断発生時に、その後電断前の状態に復帰できるようにするための処理であり、エラー処理は、各種の異常(メダルの投入異常、メダルセレクタ29内の異物検知、リール回転異常、メダルの払出異常、払出口付近の異物検知、RAM異常、設定値異常、ホッパータンク34aの空、オーバーフロータンク35の満タン検知等)が検知された場合に遊技を不能化するための処理である。また、特に図示しないが、遊技プログラムは、前述のATに関連する処理(ATに係る抽選やナビ報知に係る制御等)も含む。
遊技プログラムにおける共通判定プログラムは、例えば、投入判定処理、払出判定処理を含む。投入判定処理は、投入メダルセンサ31によるメダルの正常な通過であるか否かを判定する処理であり、賭数の設定等のためにメダルの投入が可能な状態において実行される処理である。払出判定処理は、払出センサ34cによるメダルの正常な通過であるか否かを判定する処理であり、小役の入賞時やクレジットの精算時にメダルの払出が許可されている状態において実行される処理である。
遊技プログラムにおける共通汎用プログラムは、遊技プログラムを構成する複数種類の処理から呼び出されて実行される処理であり、例えば、カウンタ更新処理、ポート入力処理、データ変換処理、LED表示処理、データ設定処理、コマンド設定処理を含む。カウンタ更新処理は、指定されたカウンタ値を更新するための処理であり、ポート入力処理は、指定されたポートの入力状態を取得する処理であり、データ変換処理は、遊技データを用いて入力されたデータを変換して出力する処理であり、LED表示処理は、指定された値をLEDに表示させるために設定する処理であり、データ設定処理は、指定されたデータを設定する処理であり、コマンド設定処理は、指定されたコマンドをコマンドキューに設定する処理である。
特に、遊技プログラムは、上述のように異常が検知された場合に、異常の種別に応じた解除条件(乱数異常、RAM異常、バックアップ異常、設定値異常の場合は、設定値の再設定、それ以外の異常の場合はリセット操作)が成立するまで遊技の進行を不能化するエラー処理を含む。
非遊技プログラムは、図8に示すように、非遊技プログラムだけに含まれる非遊技専用プログラムと、遊技プログラムと同じ共通判定プログラム及び共通汎用プログラムと、を含む。
非遊技専用プログラムは、例えば、試験信号出力処理、異物検知処理、ドア監視処理、外部出力2処理、投入メダルエラー判定処理、払出メダルエラー判定処理、停電判定処理、通常時コマンド送信処理、電断時コマンド送信処理を含む。試験信号出力処理は、遊技の結果に関連して発生する試験信号を出力するための処理であり、異物検知処理は、投入口センサ26によるメダル通路内の異物を検知するための処理であり、ドア監視処理は、前面扉1bの開放を検知するための処理であり、外部出力2処理は、外部出力信号のうちセキュリティ信号(ドア開放信号、設定変更信号、投入エラー信号、払出エラー信号)の出力制御を行うための処理であり、投入メダルエラー判定処理は、投入メダルセンサ31の検出状況に基づいて投入メダルの逆流検知、メダルセレクタ29内のメダル詰り検知、メダルセレクタ29内の異物検知を行うための処理であり、払出メダルエラー判定処理は、払出センサ34cの検出状況に基づいて払出メダルの逆流検知、払出口付近のメダル詰り検知、払出口付近の異物検知を行うための処理であり、停電判定処理は、電断検出回路48からの電圧低下信号が検出されているか否かを判定するための処理であり、通常時コマンド送信処理は、遊技専用プログラム及び非遊技専用プログラムのコマンド設定処理によりコマンドキューに設定されているコマンドのうち最初に設定された一のコマンドをサブ制御部91に対して送信するための処理であり、電断時コマンド送信処理は、コマンドキューに設定されている全てのコマンドをサブ制御部91に対して送信するための処理である。
非遊技プログラムにおける共通汎用プログラムは、非遊技プログラムを構成する複数種類の処理から呼び出されて実行される処理であり、遊技プログラムにおける共通汎用プログラムと同様に、例えば、カウンタ更新処理、ポート入力処理、データ変換処理、LED表示処理、データ設定処理、コマンド設定処理を含む。
非遊技プログラムは、遊技の進行に係わらない検知手段(投入口センサ26、満タンセンサ35a、ドア開放検出スイッチ25)の検出状況に基づいて所定の検出状況か否かを判定する処理を含む。
また、非遊技プログラムは、複数の制御状態(遊技開始待ち処理、内部抽選処理、リール制御処理、遊技終了時設定処理)のうち特定の制御状態においては、遊技の進行に係わる検知手段として機能し、他の制御状態においては、遊技の進行に係わらない検出手段として機能する検出手段(例えば、投入メダルセンサ31、払出センサ34c)が、遊技の進行に係わらない制御状態での検出状況に基づいて所定の検出状況か否かを判定する処理(例えば、リール回転中のメダルの投入やメダルの払出が検出されたことによる異常を検知するための投入メダルの検出処理や払出メダルの検出処理)を含む。尚、このような判定処理は、遊技プログラムにおいて遊技の進行に係わる制御状態での検出状況に基づいて所定の検出状況か否かを判定する処理と同じ処理であるため、共通判定プログラムに該当する。
尚、遊技プログラムに含まれる処理のうち、外部出力1処理、遊技開始待ち処理においてメダルの投入数を計数する処理、流路切替ソレノイド30を切り替える処理、遊技終了時設定処理においてメダルの払出数を計数する処理、ホッパータンク34aが空になったことを検知する処理、ソフトウェア乱数を更新する処理、ATに関連する処理、内部当選コマンドの送信処理等、ゲームの進行に直接的には関連しないものであればこれらの処理の全部または一部が非遊技プログラムに含まれる構成であっても良い。一方で、非遊技プログラムに含まれる処理のうち遊技の進行に間接的に関連するものであればこれらの処理の全部または一部が遊技プログラムに含まれる構成であっても良い。
本実施例においてメイン制御部41のCPU41aは、図9に示すように、遊技プログラムに基づく処理において非遊技プログラムを呼び出して非遊技プログラムに基づく処理を実行し、非遊技プログラムに基づく処理の終了後、遊技プログラムに基づく処理に復帰する。
図9に示すように、CPU41aは、原則として遊技プログラムに基づく処理を実行するにあたり、遊技データ領域の遊技データを参照して遊技プログラムに基づく処理を実行するとともに、遊技RAM領域をワークとして使用し、遊技RAM領域の内容を参照及び更新することが可能である。また、CPU41aは、原則として非遊技プログラムに基づく処理を実行するにあたり、非遊技データ領域の遊技データを参照して非遊技プログラムに基づく処理を実行するとともに、非遊技RAM領域をワークとして使用し、非遊技RAM領域の内容を参照及び更新することが可能である。
また、CPU41aは、遊技プログラムに基づく処理を実行するにあたり、非遊技データ領域を参照することはなく、非遊技RAM領域を更新することはないが、非遊技RAM領域を参照することは可能であり、非遊技プログラムに基づく処理を実行するにあたり、遊技データ領域を参照することはなく、遊技RAM領域を更新することはないが、遊技RAM領域を参照することは可能である。
また、遊技プログラムに基づく処理は、非遊技RAM領域のうち遊技プログラムに必要な特定の領域(例えば、異常の検知を示すエラーフラグの設定領域等)のみ参照可能とされており、非遊技プログラムに基づく処理は、遊技RAM領域のうち非遊技プログラムに必要な特定の領域(例えば、内部当選フラグの設定領域、遊技状態の設定領域、RTの設定領域等)のみ参照可能とされている。また、非遊技RAM領域のうち遊技プログラムに基づく処理が参照可能な特定の領域、遊技RAM領域のうち非遊技プログラムに基づく処理が参照可能な特定の領域は、連続するアドレス領域に割り当てられることが好ましいが、一部または全部が連続しないアドレス領域に割り当てられる構成であっても良い。
このように本実施例では、遊技の進行に係る遊技プログラムが記憶される遊技プログラム領域と、遊技プログラムが参照する遊技データが読み出し可能に記憶される遊技データ領域と、遊技プログラムが参照するワークデータが読み出し及び書き込み可能に記憶される遊技RAM領域と、遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムが記憶される非遊技プログラム領域と、非遊技プログラムが参照する非遊技データが読み出し可能に記憶される非遊技データ領域と、非遊技プログラムが参照するワークデータが読み出し及び書き込み可能に記憶される非遊技RAM領域と、がそれぞれ別個に割り当てられているため、遊技プログラム、遊技データ及び遊技プログラムのワークデータと、非遊技プログラム、非遊技データ及び非遊技プログラムのワークデータと、を記憶領域の違いに応じて容易に特定することができる。
また、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データ領域と、を分けることで、それぞれの機能に応じてROM41bに占める領域をコンパクトに管理することができるため、各領域において該当するデータを特定することがさらに容易となる。
また、本実施例では、遊技プログラムを実行する際に、非遊技RAM領域を参照することが可能であり、非遊技プログラムを実行する際に、遊技RAM領域を参照することが可能であるため、遊技プログラムを実行するにあたり、非遊技プログラムが使用していたデータを簡単に利用することができ、非遊技プログラムを実行するにあたり、遊技プログラムが使用していたデータを簡単に利用することができる。一方で、遊技プログラムを実行する際に、非遊技RAM領域を更新することは不可能であり、非遊技プログラムを実行する際に、遊技RAM領域を更新することは不可能であるため、遊技プログラムが非遊技プログラムの処理に影響を及ぼすことなく、非遊技プログラムが遊技プログラムの処理に影響を及ぼすことがない。
また、本実施例では、遊技プログラムに基づく処理は、非遊技RAM領域のうち遊技プログラムに必要な特定の領域(例えば、異常の検知を示すエラーフラグの設定領域等)のみ参照可能とされており、非遊技プログラムに基づく処理は、遊技RAM領域のうち非遊技プログラムに必要な特定の領域(例えば、内部当選フラグの設定領域、遊技状態の設定領域、RTの設定領域等)のみ参照可能とされているので、遊技プログラムが非遊技RAM領域において参照可能なデータ、非遊技プログラムが参照可能なデータが特定の領域に制限されているため、遊技プログラムまたは非遊技プログラムの参照先を容易に特定することができる。
本実施例のメイン制御部41は、図10(a)に示すように、メイン処理の実行中に、遊技プログラムに基づく処理から非遊技プログラムを呼び出すことが可能であり、図10(b)に示すように、タイマ割込処理の実行中に、遊技プログラムに基づく処理から非遊技プログラムを呼び出すことが可能である。
図10(a)に示すように、遊技プログラムに基づくメイン処理から非遊技プログラムを呼び出す際に、当該遊技プログラムでは、呼び出す対象の非遊技プログラムの開始アドレスを特定の領域に設定し、共通呼出処理1を実行する。共通呼出処理1は、遊技プログラムに含まれる処理であり、共通呼出処理1では、遊技プログラムのレジスタを遊技スタック領域に退避させるとともに、スタックポインタ(SP、遊技スタック領域の現在の位置を示すアドレス)を遊技RAM領域のSP退避領域に退避したうえで、割込マスタ許可フラグの値を割込禁止を示す値に設定することでタイマ割込を禁止に設定し、その後、特定の領域に設定されているアドレスの非遊技プログラムを呼び出す。
これに対して、呼び出された非遊技プログラムに基づいて、非遊技プログラムのスタックポインタ(非SP、非遊技スタック領域の現在の位置を示すアドレス)を設定して、非遊技プログラムの処理を実行した後、呼び出し元の遊技プログラム、すなわち共通呼出処理1に復帰する。
共通呼出処理1に復帰した後には、共通呼出処理1は、割込マスタ許可フラグの値を割込許可を示す値に設定することでタイマ割込の禁止を解除し、遊技スタック領域及びSP退避領域に退避させていたデータに基づいて、レジスタ及び遊技プログラムのスタックポインタを、非遊技プログラムを呼び出す前の状態に復帰させて終了する。
このように、本実施例では、遊技プログラムが非遊技プログラムを呼び出す際に、共通呼出処理1により、割込を禁止に設定し、当該非遊技プログラムから遊技プログラムに復帰する際に、割込の禁止を解除するので、非遊技プログラムが実行されている期間にわたり割込を禁止に設定することができる。
尚、非遊技プログラムが、遊技プログラムに基づくメイン処理から呼び出された場合に、当該非遊技プログラムが、最初に割込を禁止に設定したうえで、各種処理を実行し、当該非遊技プログラムの最後に割込の禁止を解除する構成としても良く、このような構成とすることで、本実施例と同様に、非遊技プログラムが実行されている期間にわたり割込を禁止に設定することができる。また、非遊技プログラムにより割込の禁止及び解除の設定が行われるため、遊技プログラムの共通呼出処理1において割込の禁止の設定及び解除する必要がなくなり、遊技プログラムの容量を削減することができる。
図10(b)に示すように、遊技プログラムに基づくタイマ割込処理から非遊技プログラムを呼び出す際に、当該遊技プログラムでは、呼び出す対象の非遊技プログラムの開始アドレスを特定の領域に設定し、共通呼出処理2を実行する。共通呼出処理2では、遊技プログラムのレジスタを遊技スタック領域に退避させるとともに、スタックポインタ(SP、遊技スタック領域の現在の位置を示すアドレス)を遊技RAM領域のSP退避領域に退避したうえで、特定の領域に設定されているアドレスの非遊技プログラムを呼び出す。
これに対して、呼び出された非遊技プログラムは、非遊技プログラムのスタックポインタを設定し、非遊技プログラムの処理を実行した後、呼び出し元の共通呼出処理2に復帰する。
共通呼出処理2に復帰した後には、共通呼出処理2は、遊技スタック領域及びSP退避領域に退避させていたデータに基づいてレジスタ及び遊技プログラムのスタックポインタを、非遊技プログラムを呼び出す前の状態に復帰させて終了する。
このように、共通呼出処理2では、呼出共通処理1と異なり、タイマ割込を禁止に設定及び解除しないが、上述のようにメイン制御部41では、タイマ割込処理の実行中に他の割込処理が実行されることが禁止されているので、非遊技プログラムが実行されている期間にわたり割込を禁止できる。
本実施例では、遊技プログラムが、共通呼出処理1及び共通呼出処理2を実行することで、非遊技プログラムを呼び出して非遊技プログラムを実行する際に、遊技プログラムが実際に使用していたレジスタであるか否かに関わらずレジスタの全ての領域を退避させて保護する処理が行われるため、遊技プログラムに復帰する際に、非遊技プログラムが呼び出された時点の状態から確実に復帰することができる。
尚、共通呼出処理1及び共通呼出処理2を実行することなく、遊技プログラムにおいて遊技プログラムに基づく処理から非遊技プログラムを呼び出す直前に遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムに基づく処理が全て終了した後に、遊技プログラムに復帰した最初の段階で保護されているレジスタの値を復帰させる構成としても良く、このような構成とすることで、非遊技プログラムの呼び出し前にレジスタの保護処理が行われ、非遊技プログラムからの復帰後にレジスタの復旧処理が行われるため、非遊技プログラムによってレジスタに記憶されたデータが遊技プログラムに影響を及ぼすことがない。
また、非遊技プログラムが呼び出された場合に、当該非遊技プログラムが、最初に遊技プログラムのスタックポインタ及びレジスタを退避させ、当該非遊技プログラムの最後に遊技プログラムのスタックポインタ及びレジスタを復帰させる構成としても良く、このような構成とすることで、本実施例と同様に、遊技プログラムに復帰する際に、非遊技プログラムが呼び出された時点の状態から確実に復帰することができるとともに、遊技プログラムの容量を削減することができる。
本実施例のメイン制御部41は、主にメイン処理に一定間隔(約0.56msの間隔)で割り込んで実行するタイマ割込処理(メイン)を実行可能である。尚、タイマ割込処理(メイン)とは、タイマ回路509のカウントに応じて発生する割込により実行される処理であり、タイマ割込処理(メイン)のプログラムが格納されたアドレスは、ベクタテーブルのタイマ割込に対応する値として設定されている。そして、タイマ割込が発生すると当該アドレスからの処理が実行される。また、タイマ割込処理(メイン)の実行期間中は自動的に他の割込が禁止される。
本実施例では、タイマ割込処理(メイン)は、遊技プログラムに含まれる一方、タイマ割込処理(メイン)内において実行される停電判定処理、電断時コマンド送信処理、通常時コマンド送信処理、ドア監視処理は、非遊技プログラムに含まれており、メイン制御部41は、タイマ割込処理(メイン)において割込禁止を設定し、遊技プログラムのスタックポインタ及びレジスタを退避させたうえで、これらの非遊技プログラムを呼び出すようになっている。また、これらの非遊技プログラムからタイマ割込処理(メイン)に復帰した際には、遊技プログラムのスタックポインタ及びレジスタを当該非遊技プログラムの呼び出し前の状態に復帰させたうえで、その後の処理を実行するようになっている。尚、メイン制御部41は、割込処理の実行中に他の割込を禁止するように設定されているので、非遊技プログラムから復帰した後も割込禁止の状態で、その後の処理を実行する。
また、タイマ割込処理(メイン)において実行する非遊技プログラムである停電判定処理、電断時コマンド送信処理、通常時コマンド送信処理、ドア監視処理は、これら非遊技プログラムの前に実行する必要のある処理(例えば、タイマ割込の分岐前に実行する必要のあるポート入力処理、モータ位相信号出力処理)を除く処理、すなわち非遊技プログラムよりも先に行っても後に行っても制御上影響のない処理よりも前に実行するようになっている。
本実施例のメイン制御部41は、遊技の進行に係る遊技プログラムと、当該遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムと、を実行することが可能であり、遊技プログラムに基づくメイン処理を実行するとともに、所定時間間隔毎にメイン処理に割り込んで遊技プログラムに基づくタイマ割込処理(メイン)を実行することが可能であって、メイン処理からも、タイマ割込処理(メイン)からも、非遊技プログラムを呼び出して実行することが可能である。
このような構成では、メイン制御部41では、非遊技プログラムを実行中にタイマ割込処理(メイン)が実行されることにより誤作動が生じる虞がある。
これに対して、本実施例のメイン制御部41は、遊技の進行に係る遊技プログラムと、当該遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムと、を実行することが可能であり、遊技プログラムに基づくメイン処理を実行するとともに、所定時間間隔毎にメイン処理に割り込んで遊技プログラムに基づくタイマ割込処理(メイン)を実行することが可能であって、メイン処理からも、タイマ割込処理(メイン)からも、非遊技プログラムを呼び出して実行することが可能な構成において、メイン処理から非遊技プログラムを呼び出すときには、他の処理の割込を禁止に設定した後に、当該非遊技プログラムを呼び出す一方で、タイマ割込処理(メイン)から非遊技プログラムを呼び出すとき、すなわち、さらに割込が生じる可能性が低い状況において非遊技プログラムを呼び出すときには、他の処理の割込を禁止に設定せずに、非遊技プログラムを呼び出すので、非遊技プログラムの実行中に割込が実行されることによる誤作動を防止しつつ、割込の禁止に係るプログラム容量を削減することができる。
本実施例のメイン制御部41が実行するタイマ割込処理(メイン)は、遊技プログラムによる処理、例えば、LEDダイナミック表示処理や制御信号等出力処理等と、非遊技プログラムによる処理、例えば、通常時コマンド送信処理や、電断時コマンド送信処理等の処理と、を含む複数の処理により構成されており、該タイマ割込処理(メイン)を構成する複数の処理のうち、所定の遊技プログラムによる処理、特に、これら非遊技プログラムの先に実行しても後に実行しても問題のない処理よりも前に、非遊技プログラムを呼び出すので、すなわち、タイマ割込処理(メイン)を構成する複数の処理のうち極力早い段階で非遊技プログラムを呼び出すので、例えば、何らかの原因によりタイマ割込処理(メイン)が終了しないまま、次回タイマ割込が発生して二重に割込が生じてしまった場合でも、非遊技プログラムの実行中に他の割込が実行されてしまうことを防止できる。
本実施例のメイン制御部41は、遊技プログラムと非遊技プログラムとを実行可能であり、遊技プログラムが用いるデータを退避する遊技スタック領域と、非遊技プログラムが用いるデータを退避する非遊技スタック領域と、が別個に設けられたRAM41cを備えており、メイン制御部41は、遊技プログラムが用いるデータと、非遊技プログラムが用いるデータと、を別個に設けられたスタック領域にそれぞれ退避させるので、スタック領域の管理が容易となる。特に、タイマ割込の発生により退避される遊技プログラムが用いるデータと、タイマ割込処理(メイン)の実行中に行われる非遊技プログラムが用いるデータと、が混在して一のスタック領域に格納されるようなことがないので、スタックの管理が煩雑となってしまうことがない。
本実施例のメイン制御部41は、非遊技プログラムを実行する際に、遊技プログラムで用いているレジスタ値を遊技スタック領域に退避した後、非遊技プログラムを呼び出して、当該非遊技プログラムにおける処理を実行し、非遊技プログラムにおける処理が終了したときに、退避させたレジスタ値を復帰させるので、非遊技プログラムを実行するのに伴い遊技プログラムが用いていたレジスタの値が変更されてしまうことを防止できる。
また、遊技プログラムに基づく処理から非遊技プログラムを呼び出す際に、遊技プログラムで用いているレジスタの値を遊技スタック領域に退避させる呼出共通処理1または呼出共通処理2を呼び出すようになっており、メイン処理において非遊技プログラムを実行するためのプログラムを共通化することで、プログラム容量を削減できる。
尚、本実施例では、メイン処理において遊技プログラムに基づく処理から非遊技プログラムを呼び出す際には、呼出共通処理1を実行する一方、タイマ割込処理において遊技プログラムに基づく処理から非遊技プログラムを呼び出す際には、呼出共通処理1とは異なる呼出共通処理2を実行することで、遊技プログラムで用いているレジスタの値を遊技スタック領域に退避させる構成であるが、メイン処理において遊技プログラムに基づく処理から非遊技プログラムを呼び出す際にも、タイマ割込処理において遊技プログラムに基づく処理から非遊技プログラムを呼び出す際にも、共通の呼出共通処理を実行する構成であっても良い。
尚、本実施例のメイン制御部41は、メイン処理からも、タイマ割込処理(メイン)からも、非遊技プログラムを呼び出して実行することが可能な構成であり、メイン処理から非遊技プログラムを呼び出すときには、他の処理の割込を禁止に設定して、当該非遊技プログラムを呼び出す一方で、タイマ割込処理(メイン)から非遊技プログラムを呼び出すときには、他の処理の割込を禁止に設定せずに、非遊技プログラムを呼び出す構成であるが、メイン制御部41は、メイン処理から非遊技プログラムを呼び出すときにも、タイマ割込処理(メイン)から非遊技プログラムを呼び出すときにも、他の処理の割込を禁止する構成としても良い。
このような構成では、メイン制御部41は、メイン処理から非遊技プログラムを呼び出すときだけでなく、タイマ割込処理(メイン)から非遊技プログラムを呼び出すときにも、他の処理の割込を禁止するので、本実施例と同様に、非遊技プログラムの実行中に割込が実行されることによる誤作動を防止することができる。
特に、タイマ割込処理(メイン)を実行するときに、割込禁止が設定され、タイマ割込処理(メイン)の終了時に割込禁止が解除されることで、タイマ割込処理(メイン)の実行中に他の処理の割込が禁止されることとなるが、この場合でも、タイマ割込処理(メイン)から非遊技プログラムを呼び出すときに再度他の処理の割込を禁止するので、何らかの原因により割込禁止設定が解除されてしまった場合でも、非遊技プログラムの実行中に割込が実行されることによる誤作動を防止することができる。
また、前述のようにタイマ割込処理(メイン)を実行するときに、割込禁止が設定され、タイマ割込処理(メイン)の終了時に割込禁止が解除されることで、タイマ割込処理(メイン)の実行中に他の処理の割込が禁止される構成であるが、タイマ割込処理(メイン)から非遊技プログラムを呼び出すときに再度他の処理の割込を禁止する場合には、非遊技プログラムの呼び出し時に設定した他の処理の割込の禁止の設定を、該非遊技プログラムの終了後も維持することで、タイマ割込処理(メイン)の実行中にも関わらず、非遊技プログラムの実行により割込の禁止が解除されてしまうことを防止できる。
次に、メイン制御部41のRAM41cの初期化について、図11に基づいて説明する。
本実施例のメイン制御部41は、設定変更処理の開始時において、RAM41cの記憶内容が破壊されていると判定した場合に、遊技RAM領域、未使用領域4、非遊技RAM領域を初期化する、すなわち使用可能領域の全ての領域を初期化する初期化0を行う。
また、設定変更処理の開始時において、RAM41cの記憶内容が破壊されていないと判定した場合に、遊技RAM領域のうち特別ワークを除く領域、未使用領域4、非遊技RAM領域を初期化する、すなわち使用可能領域のうち特別ワーク以外の領域を初期化する初期化1を行う。
また、設定変更処理の終了時において、遊技RAM領域のうち重要ワーク、一般ワーク、未使用領域3、遊技スタック領域(未使用)を初期化する、すなわち遊技RAM領域のうち特別ワーク及び遊技スタック領域(使用中)以外の領域を初期化する初期化2を行う。
また、特定の遊技状態の終了時であり、かつ1ゲーム終了時に、遊技RAM領域のうち一般ワーク、未使用領域3及び遊技スタック領域(未使用)を初期化する初期化3を行う。
また、特定の遊技状態の終了時でない1ゲーム終了時に、遊技RAM領域のうち未使用領域3、遊技スタック領域(未使用)を初期化する初期化4を行う。
このように、本実施例のメイン制御部41は、所定条件が成立したときに初期化0〜4を行い、所定条件として第1の条件が成立したときに、RAM41cの使用可能領域のうちの遊技プログラムが用いるデータが記憶されている遊技RAM領域の少なくとも一部を初期化し、所定条件として第2の条件が成立したときに、遊技RAM領域の少なくとも一部と、RAM41cの使用可能領域のうちの非遊技プログラムが用いる非遊技RAM領域の少なくとも一部を初期化する。
具体的には、図11に示すように、第1の条件として、1ゲームの終了時には、使用可能領域のうち遊技RAM領域の一部である、未使用領域3及び遊技スタック領域(未使用)を初期化するが、使用可能領域のうち非遊技RAM領域は初期化しない。また、第1条件として、特定の遊技状態の終了時には、使用可能領域のうち遊技RAM領域の一部である一般ワーク、未使用領域3、遊技スタック領域(未使用)を初期化するが、使用可能領域のうち非遊技RAM領域は初期化しない。また、第1条件として、設定変更状態が終了した後には、使用可能領域のうち遊技RAM領域の一部である重要ワーク、一般ワーク、未使用領域3、遊技スタック領域(未使用)を初期化するが、使用可能領域のうち非遊技RAM領域は初期化しない。
一方、第2の条件として、設定変更状態を開始したときに、RAMに異常がない場合には、使用可能領域のうち遊技RAM領域の一部である重要ワーク、一般ワーク、未使用領域3、遊技スタック領域(未使用)、遊技スタック領域(使用)を初期化するとともに、非遊技RAM領域の全ての領域を初期化する。また、設定変更状態を開始したときに、RAMに異常がある場合には、使用可能領域のうち遊技RAM領域の全ての領域を初期化するとともに、遊技RAM領域の全ての領域を初期化する。
本実施例のメイン制御部41は、遊技の進行に係わる遊技プログラムと、遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムと、を実行可能であり、遊技プログラム及び非遊技プログラムを記憶するROM41bを備えている。
このような構成では、一のROM41bにおいて遊技プログラムと、非遊技プログラムと、が混在していると、どのプログラムが遊技の進行に係わるプログラムであるかの判別が困難である。
これに対して、本実施例では、ROM41bは、遊技プログラムが記憶される遊技プログラム領域と、非遊技プログラムが記憶される非遊技プログラム領域と、を含んでおり、遊技プログラム領域と、非遊技プログラム領域と、がそれぞれ別個に割り当てられているため、遊技プログラムと、非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
また、本実施例のメイン制御部41は、遊技プログラムのワークとして用いられ、遊技プログラムが用いるデータを記憶する遊技RAM領域と、非遊技プログラムのワークとして用いられ、非遊技プログラムが用いるデータを記憶する非遊技RAM領域と、を含むRAM41cを備えており、RAM41cにおいて遊技RAM領域と、非遊技RAM領域と、がそれぞれ別個に割り当てられているため、遊技プログラムが用いるデータと、非遊技プログラムが用いるデータと、を記憶領域の違いに応じて容易に特定することができるとともに、メイン制御部41は、第1の初期化条件が成立したときに、遊技RAM領域の少なくとも一部を初期化し、第2の初期化条件が成立したときに、遊技RAM領域の少なくとも一部を初期化するとともに、非遊技RAM領域の少なくとも一部を初期化するため、RAM41cに記憶されている遊技プログラムが用いるデータと非遊技プログラムが用いるデータのうち状況に応じて適切なデータを初期化することができる。
本実施例のメイン制御部41は、第1の初期化条件として、1ゲームが終了した時には、遊技RAM領域のうちの一部である未使用領域3及び遊技スタック領域(未使用)を初期化し、第1の初期化条件として、特別な遊技状態(BB)が終了した時で、かつ1ゲームが終了した時には、遊技RAM領域のうちの一部である一般ワーク、未使用領域3及び遊技スタック領域(未使用)を初期化し、第1の初期化条件として、設定変更が終了し、メイン処理が開始されたときには、遊技RAM領域のうちの一部である重要ワーク、一般ワークの領域、未使用領域3及び遊技スタック領域(未使用)を初期化するので、状況に応じて適切なデータを初期化することができる。
また、本実施例のメイン制御部41は、第2の初期化条件として、設定変更開始時でRAMに異常がないときには、遊技RAM領域のうち一部である重要ワーク、一般ワーク、未使用領域3、遊技スタック領域(未使用)及び遊技スタック領域(使用中)を初期化するとともに、非遊技RAM領域のうち、遊技プログラムから参照される領域、遊技プログラムから参照されない領域、非遊技スタック領域(未使用)及び非遊技スタック領域(使用中)、すなわち非遊技RAM領域の全ての領域を初期化し、第2の初期化条件として、設定変更開始時でRAMに異常があるときには、遊技RAM領域のうち、特別ワーク、重要ワーク、一般ワーク、未使用領域3、遊技スタック領域(未使用)及び遊技スタック領域(使用中)、すなわち遊技RAM領域の全ての領域を初期化するとともに、非遊技RAM領域のうち、遊技プログラムから参照される領域、遊技プログラムから参照されない領域、非遊技スタック領域(未使用)及び非遊技スタック領域(使用中)、すなわち非遊技RAM領域の全ての領域を初期化するため、RAM41cに記憶されている遊技プログラムが用いるデータと、非遊技プログラムが用いるデータと、のうち状況に応じて適切なデータを初期化することができる。
尚、本実施例のメイン制御部41は、第1の初期化条件が成立したときに、遊技RAM領域の一部の領域を初期化する構成であるが、メイン制御部41は、第1の初期化条件が成立したときに、遊技RAM領域の少なくとも一部の領域を初期化するものであれば良く、遊技RAM領域の全ての領域を初期化するものでも良い。
また、本実施例のメイン制御部41は、第2の初期化条件が成立したときに、遊技RAM領域の一部を初期化するとともに、非遊技RAM領域の全ての領域を初期化する構成であるが、メイン制御部41は、第2の初期化条件が成立したときに遊技RAM領域の少なくとも一部の領域を初期化するとともに、非遊技RAM領域の少なくとも一部の領域を初期化するものであれば良く、遊技RAM領域の全ての領域を初期化するものでも良いし、非遊技RAM領域の全ての領域を初期化するものでも良いし、非遊技RAM領域の少なくとも一部の領域を初期化するものでも良いし、遊技RAM領域及び非遊技RAM領域の双方の全ての領域を初期化するものでも良い。
本実施例のメイン制御部41は、遊技RAM領域を初期化するプログラムと、非遊技RAM領域を初期化するプログラムと、を別個のプログラムとして構成しているので、遊技プログラムが非遊技RAM領域の初期化をせずに済むため、遊技プログラムの容量を削減できる。また、第1の初期化条件が成立したときにも、第2の初期化条件が成立したときにも、遊技RAM領域を初期化するプログラムを共用できる。さらに遊技RAM領域を初期化するプログラムを遊技プログラムとして備え、非遊技RAM領域を初期化するプログラムを非遊技プログラムとして備えるので、遊技プログラムが非遊技RAM領域を初期化したり、非遊技プログラムが遊技RAM領域を初期化したりすることがなく、遊技プログラムが非遊技プログラムに影響を与えること、非遊技プログラムが遊技プログラムに影響を与えることを防止できる。
本実施例のメイン制御部41は、第1の初期化条件として、メイン処理において遊技終了時処理設定を行った後に、特定の遊技状態の終了時でないと判定されたとき、すなわち1ゲームが終了した時に遊技終了時の初期化対象RAMの先頭アドレスを設定し、遊技領域初期化処理を実行することで、遊技RAM領域のうち所定の領域を初期化するので、遊技単位毎に遊技の進行に係る不要な遊技RAM領域の一部の領域を初期化することができる。
本実施例のメイン制御部41は、設定キースイッチ37がONの状態で起動され、設定変更処理を開始したとき、すなわち設定変更操作が行われたことに基づいて第2の初期化条件が成立したときに、遊技領域初期化処理を実行して遊技RAM領域のうち所定の領域を初期化するとともに、非遊技領域初期化処理を実行して非遊技RAM領域のうち所定の領域を初期化するようになっており、遊技店員の設定変更操作(初期化操作)に基づいて遊技RAM領域と非遊技RAM領域の双方を初期化することができる。
本実施例のRAM41cの遊技RAM領域は、遊技プログラムに基づく制御を行う際にも非遊技プログラムに基づく制御を行う際にも用いられることのない未使用領域3を含み、第1の初期化条件の成立時にも、第2の初期化条件の成立時にも、未使用領域3を初期化するので、未使用領域3に不正なデータが記憶されることを防止できる。
尚、本実施例では、第1の初期化条件の成立時にも第2の初期化条件の成立時にも未使用領域3を初期化する構成であるが、少なくとも第1の初期化条件の成立時、第2の初期化条件の成立時のいずれか一方の条件の成立時に未使用領域3を初期化する構成であれば、未使用領域3に不正なデータが記憶されることを防止できる。また、第1の初期化条件が複数の条件を含む構成であれば、そのうち少なくとも一の条件の成立時に未使用領域3を初期化する構成であれば、未使用領域3に不正なデータが記憶されることを防止できる。第2の初期化条件が複数の条件を含む構成であっても同様である。
本実施例のメイン制御部41は、遊技プログラムのワークとして用いられ、遊技プログラムが用いるデータを記憶する遊技RAM領域と、非遊技プログラムのワークとして用いられ、非遊技プログラムが用いるデータを記憶する非遊技RAM領域と、を含むRAM41cを備えており、当該RAM41cは、バックアップ電源によりスロットマシン1への電力供給が停止されてもRAM41cに記憶されたデータを所定期間保持可能な構成であって、メイン制御部41は、スロットマシン1への電力供給が開始したときに、初期設定処理を開始し、バックアップ電源により保持されているRAM41cに記憶されているデータに基づいてRAMの記憶内容が正常か否かを判定し、正常と判定された場合に、RAM41cに記憶されているデータに基づいて制御を再開する。
このような構成において、スロットマシン1への電力供給が開始したときに、RAM41cの遊技RAM領域と非遊技RAM領域の双方の領域に記憶されたデータに基づいて、RAMの記憶内容が正常か否かを判定する際に、RAM41cに記憶されているデータ基づいて制御を再開する際の負荷が過大となる。
これに対して、本実施例のメイン制御部41は、スロットマシン1への電力供給が開始したときに、初期設定処理を開始し、バックアップ電源により保持されているRAM41cのうち遊技RAM領域のRAMパリティ、遊技RAM領域に記憶されている破壊診断用データに基づいてRAMの記憶内容が正常か否かを判定し、正常と判定された場合に、遊技RAM領域に記憶されているデータ及び非遊技RAM領域に記憶されているデータに基づいて制御を再開始するようになっており、非遊技RAM領域に記憶されており、遊技の進行に支障のない非遊技用のデータが正常か否かの判定を省くことで、遊技の進行が正常に行えることを担保しつつ、制御を再開する際の負荷を軽減することができる。
本実施例のRAM41cの遊技RAM領域は、遊技プログラムに基づく制御を行う際にも、非遊技プログラムに基づく制御を行う際にも、用いられることのない未使用領域3を含んでおり、メイン制御部41は、スロットマシン1への電力供給が開始されたときに、初期設定処理を実行し、初期設定処理において、未使用領域3を含む遊技RAM領域のRAMパリティを算出し、算出されたRAMパリティに基づいて遊技RAM領域の記憶内容が正常か否かを判定するので、未使用領域3に不正なデータが記憶されることを防止できる。
本実施例のメイン制御部41は、スロットマシン1への電力供給が開始されたときに、初期設定処理を実行し、初期設定処理において、RAM41cの記憶内容が破壊されているか否かを判定し、RAM41cの記憶内容が破壊されていると判定した場合に、RAM異常フラグを設定してエラー処理に制御し、その後、自動的に復帰することがなくエラー状態を維持する一方、設定キースイッチ36がONの状態で、スロットマシン1への電力供給が開始されたときに、設定変更処理に制御し、遊技領域初期化処理を実行して遊技RAM領域を初期化するとともに、非遊技領域初期化処理を実行して非遊技RAM領域を初期化する、すなわちエラー状態が解除されることに伴い遊技RAM領域と非遊技RAM領域の双方を初期化するので、遊技RAM領域及び非遊技RAM領域のいずれかに異常が生じたまま遊技が進行してしまうことを防止できる。
本実施例のメイン制御部41は、スロットマシン1への電力供給が開始されたときに、初期設定処理において、RAM41cの記憶内容が破壊されていると判定した場合に、RAM異常フラグを設定してエラー処理に制御し、その後、設定キースイッチ36がONの状態で、スロットマシン1への電力供給が開始され、設定変更処理が実行されることで、エラー状態が解除されることに伴い遊技RAM領域と非遊技RAM領域の双方を初期化する構成であるが、メイン制御部41は、スロットマシン1への電力供給が開始されたときに、初期設定処理において、RAM41cの記憶内容が破壊されていると判定した場合に、遊技RAM領域と非遊技RAM領域の双方を初期化し、エラー処理に制御するものであっても良い。このような構成では、エラー処理に制御する際に、遊技RAM領域と非遊技RAM領域の双方を初期化するので、本実施例と同様に、遊技RAM領域及び非遊技RAM領域のいずれかに異常が生じたまま遊技が進行してしまうことを防止できる。また、RAM41cの記憶内容が破壊されている判定されたとき、その後設定変更処理が実行されるときの双方で、遊技RAM領域と非遊技RAM領域の双方を初期化する構成でも良く、このような構成であっても、遊技RAM領域及び非遊技RAM領域のいずれかに異常が生じたまま遊技が進行してしまうことを防止できる。
本実施例のメイン制御部41は、スロットマシン1への電力供給が停止され、電断検出回路48により電源電圧の低下が検出されたときに電断処理を実行し、電断処理において、RAM41cへのアクセスを禁止することで、遊技RAM領域及び非遊技RAM領域の双方へのアクセスを禁止するので、次回起動時にデータが破壊されているか否かの判定対象外となる非遊技RAM領域を利用して不正なデータが記憶されることを防止できる。
次に、メイン制御部41が、遊技の進行を妨げることのない異常(例えば、リール回転中にメダルの投入や払出が検出されたことによる異常、払出処理中にメダルの投入が検出されたことによる異常)を検知した場合に、セキュリティ信号を出力する際の制御について、図12に基づいて説明する。
リール制御処理中及び払出処理中の投入エラーは、例えば、メダル投入口4から異物を挿入された場合や、メダルの流路に異物が存在した場合や、リール制御処理中及び払出処理中にも関わらず、メダル投入口4から投入されたメダルがホッパータンク34a側に流下した場合などに検出される。また、リール制御処理中の払出エラーは、払出タイミングではない場合にメダルが払い出された場合などに検出される。
図12(a)において、スタート操作、リール回転開始、第1停止、第2停止、第3停止、払出は遊技進行中の各タイミングを示す。具体的には、スタート操作は、スタートスイッチ7の操作を検出したタイミングを示す。リール回転開始は、リール2L、2C、2Rが回転を開始したタイミングを示す。第1停止は、全てのリール2L、2C、2Rが未だ回転中の状態で最初に行われる停止操作を検出したタイミングを示す。第2停止は、リール2L、2C、2Rのうちいずれか1つのリールの回転が既に停止し、2つのリールが回転中の状態、すなわち、2番目に行われる停止操作を検出したタイミングを示す。第3停止は、2つのリールの回転が既に停止し、1つのリールが回転中の状態、すなわち、3番目に行われる停止操作を検出したタイミングを示す。払出は、メダルの払出処理を行っているタイミングを示す。
異常検出は、遊技の進行を妨げることのない異常を検出したタイミングを示す。メダル払出検出は、払い出されたメダルを払出センサ34cにより検出したタイミングを示す。メダルOUT信号は、1パルス出力することにより1枚のメダルが払い出された旨を示す信号である。セキュリティ信号は、遊技の進行を妨げることのない異常が発生したことを示す信号(例えば、投入エラー信号や払出エラー信号)の出力状況を示す。
図12(a)は、リール制御処理中に遊技の進行を妨げることのない異常を検出し、かつ、メダルの払出のある入賞が発生した場合におけるメダル払出検出、メダルOUT信号、セキュリティ信号の出力タイミングを示した図である。本実施例では、図示するように、リール制御処理中に遊技の進行を妨げることのない異常を検出した場合、異常を検出した直後にセキュリティ信号を出力するのではなく、払出処理を終了した後、かつ、メダルOUT信号の出力が完了する前にセキュリティ信号を出力する。これにより、リール制御処理中に異常が発生した状況で払い出されたメダルを認識することができる。すなわち、異常が発生した状況で付与された遊技価値を認識することができる。
また、従来から知られているように、遊技中に異常検出したときに、遊技終了後に異常報知する場合、遊技に関する処理を終了した後に異常信号の出力を行うと、「遊技中の異常」と「遊技終了直後の異常」の区別がつかない。しかしながら、本実施例では、遊技を開始してから遊技媒体の付与を終了するまでの期間内の所定のタイミングで異常を検出した場合、遊技媒体の付与が終了した後、メダルOUT信号の出力を完了する前にセキュリティ信号の出力を開始する。これにより、例えば、遊技店のホールコンピュータなどが、収集ユニットによって収集されたメダルOUT信号とセキュリティ信号の出力タイミングを解析し、メダルOUT信号の出力が完了する前にセキュリティ信号が出力されていたことを検出することで、「遊技直後の異常」ではなく、「遊技中の異常」であることを区別することができる。
尚、図12(a)では、払出処理の終了後にメダルOUT信号が出力されるようになっていたが、例えば、図12(b)に示すように、メダル払出が検出される毎にメダルOUT信号が出力されるようにしても良い。そしてこのような場合でも、メダルOUT信号の出力を完了する前にセキュリティ信号の出力を開始するようになっていれば、例えば、最後のメダル払出の検出に対応するメダルOUT信号の出力を検出したタイミングでセキュリティ信号の出力を開始するようにすれば良い。
次に、リールモータ32L、32C、32Rの構成及び当該リールモータを励磁する際の制御方法について、図13及び図14に基づいて説明する。
図13は、リールモータ32L、32C、32Rの構成を示す図である。リールモータ32L、32C、32Rは、ハイブリッド型ステッピングモータであり、ステータ32bと、これに対向するロータ32aとで構成されている。尚、ロータ32aは、図示しない多数の歯車状突極を有し、これに回転軸と同方向に磁化された永久磁石が組み込まれている。これらリールモータ32L、32C、32Rでは、メイン制御部41の制御に基づきモータ駆動回路45から出力されるパルス信号を受け、ステータ32bの各励磁相φ1〜φ4が所定の手順に従って励磁されることにより、1パルスを受信する度に所定の角度(1ステップ)ずつロータ32aが回転する。
図14(a)は、リールモータ32L、32C、32Rの始動時の制御方法を示すタイミングチャートである。図において、φ1〜φ4は、各励磁相を示し、「ON」は励磁状態を、「OFF」は消磁状態を、各々示す。メイン制御部41は、リールモータ32L、32C、32Rの始動時において、停止相のみが励磁された状態から停止相を始点として後述する1−2相励磁方式にて回転方向に励磁を開始する。詳しくは、例えば停止相が(φ3、φ4)の場合には、(φ3、φ4)が励磁された状態から、(φ4)、(φ4、φ1)、(φ1)・・・の順で、φ1〜φ4を1相、2相、1相と交互に励磁する。
仮に停止相とは異なる相を始点として励磁を開始した場合には、急激にロータ32aの永久磁石が励磁相に吸引されることとなり、回転の開始時にリールが振動してしまうこととなるが、本実施例では、停止相を始点として励磁を開始するので、ロータ32aと一体的に結合されているリールが滑らかに始動するようになる。
図14(b)は、リールモータ32L、32C、32Rの回転中及び停止時の制御方法を示すタイミングチャートである。
まず、回転中、すなわちリールを停止させる条件が成立するまでの間は、1−2相励磁方式でリールモータを駆動して各リール2L、2C、2Rを回転させる。例えば、φ1〜φ4を励磁する旨を示すパルス信号を図14(b)に示すタイミングでON/OFFし、ロータ32aの回転方向に沿って、(φ4、φ1)、(φ1)、(φ1、φ2)、(φ2)、(φ2、φ3)、(φ3)、(φ3、φ4)、(φ4)、(φ4、φ1)・・・の順で、2相、1相、2相、1相、2相と1ステップ毎に交互にφ1〜φ4を励磁して、ロータ32aを回転させることにより、リール2L、2C、2Rを回転させる。
次に、回転中のリールを停止させる条件が成立した場合、リールの停止制御に移行する。例えば、リールを停止させる条件が、停止条件成立ステップとして図14(b)に示す期間に成立した場合には、1−2相励磁方式での2相が励磁される状態に移行する時点Taまで待って、停止制御に移行する。
リールの停止制御は、図14(b)に示されるように、全相励磁停止制御で行われる。全相励磁停止制御では、1−2相励磁方式でリールモータが駆動されている場合において、1相を励磁した状態から2相を励磁する状態に移行する時点Taから開始され、全相を励磁する状態を所定のホールド時間(T1+T2)だけ保持する制御である。例えば、図14(b)に示すように、(φ1)を励磁した状態から(φ1、φ2)を励磁する状態に移行する時点から、(φ1、φ2、φ3、φ4)を励磁した状態をホールド時間T1+T2だけ保持する。これにより、高速回転していた各リールモータのロータ32aは急制動がかけられる。その後、リールモータのロータ32aは、慣性力により数ステップ分(本実施例では、4ステップである。)回転して停止する。尚、リールモータのロータ32aが停止するまでに要するステップ数は、リールやリールモータの特性(重さや大きさ、電気機械的な性質)によって変化するので、リールの停止制御においては、当該特性に応じたステップ数で、全相励磁停止制御を行うことが好ましい。
全相励磁停止制御がT1+T2の間実行された後(Tc)、φ1、φ2を消磁し、停止相φ3、φ4の励磁状態を維持したまま、リールモータに印加する電圧を通常値(High状態)よりも低下させる(Low状態)。ロータ32aの停止後も、停止相φ3、φ4の励磁状態を通常値よりもLow状態の電圧で維持するのは、ホールディングトルクとディテントトルクとの位相差や摩擦の影響によるずれによって、ロータ32aが停止相φ3、φ4のホールディングトルク安定点から外れることを防止するためである。これにより、リールが一旦停止した後に微動すること、及び、次回リールモータを始動させる時のロータ32aの角度位置が、停止時の角度位置からずれてしまうことを防止できる。
ロータ32aの停止後も維持されている停止相φ3、φ4の励磁状態は、次ゲームの開始操作が行われることなく所定時間(本実施例では30秒であり、待機状態(デモ演出)へ移行するのと同じタイミング)が経過した場合(Td)に解除される。すなわち、ロータ32aの停止後、次ゲームの開始操作が行われることなく所定時間が経過した場合には、φ1〜φ4が全て消磁されることになる。このため、例えば、励磁相が長時間継続して励磁されることによる発熱に伴って、ステッピングモータを構成する部品等に負担がかかることがないので、これら部品の劣化を防止することができる。また、本実施例では、次ゲームの開始操作が行われない状態が所定時間継続して待機状態(デモ演出)へ移行するタイミングで励磁状態が解除されるので、遊技客が遊技している間は、リールに配置された図柄がずれにくい状態を保つことができる一方、遊技客が遊技している可能性の低い状態では、ステッピングモータの構成部品にかかる負荷を軽減できるようになる。
次に、メイン制御部41が実行するタイマカウンタの更新処理の制御内容について説明する。本実施例では、RAM41cに割り当てられたタイマカウンタの値を定期的に更新し、特定の値(0)となることで時間の経過を特定するようになっている。従来は、複数種類の時間間隔を計測する場合に、計時を要する複数種類の処理内で、タイマ値の設定及び更新を行っており、複数種類のタイマ値を更新するためのプログラムをそれぞれの処理内に設ける必要があるため、プログラム容量が増大する要因となっていた。また、複数種類のタイマカウンタは、それぞれが用いられる処理毎のデータ群として割り当てられているため、一の処理においてまとめて更新するためには、それぞれの関連性のないアドレスの値を読み出す必要があった。
これに対して本実施例では、複数種類のタイマカウンタ値が格納される領域がRAM41cの所定の規則で連続するアドレスが割り当てられた領域に設定されるとともに、指定アドレスに格納されたタイマ値を更新する処理を、現在の指定アドレスに対して定数を加算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新するので、複数種類のアドレスをそれぞれ指定して当該アドレスの値を更新する処理を個々の処理で行う場合よりもプログラム容量を削減することができる。
尚、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成であれば良く、例えば、現在の指定アドレスに対して定数を加算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良いし、基準アドレスに対して処理数に応じた値(例えば、1バイトカウンタであれば、処理数1の場合に+1、処理数2の場合に+2、処理数3の場合に+3…)を加算または減算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良い。
また、メイン制御部41が備える一部のタイマカウンタのみ、タイマ値をRAM41cの所定の規則で連続するアドレスが割り当てられた領域に設定し、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良い。
また、本実施例では、計測する期間の種類毎に別個のタイマカウンタを備える構成であるが、例えば、計測する期間が重複しない複数種類の期間について一のタイマカウンタを共用する構成としても良い。
また、本実施例では、メイン制御部41が実行する処理として、遊技の進行状況に関わらず予め定められた処理を定期的に行うタイマ割込処理(メイン)と、遊技の進行状況に応じて段階的に異なる処理を行うメイン処理と、を含み、メイン制御部41は、メイン処理において計時条件が成立した場合にタイマカウンタに初期値を設定し、タイマ割込処理(メイン)において複数種類のタイマ値を更新するようになっており、メイン処理を構成する各処理内に複数種類のタイマ値を更新する処理を設ける必要がないため、複数種類のタイマ値の更新に係るプログラム容量を削減することができる。
尚、本実施例では、メイン処理に定期的に割り込んでタイマ割込処理(メイン)を実行する構成であるが、定期的に行うタイマ割込処理内で、遊技の進行状況に関わらず予め定められた処理を行う定期処理と、遊技の進行状況に応じて段階的に異なる処理を行うメイン処理と、の双方を行う構成としても良く、このような構成においても、メイン制御部41は、メイン処理において計時条件が成立した場合にタイマカウンタに初期値を設定し、定期処理において複数種類のタイマ値を更新する構成とすることで、メイン処理を構成する各処理内に複数種類のタイマ値を更新する処理を設ける必要がないため、複数種類のタイマ値の更新に係るプログラム容量を削減することができる。
また、本実施例では、時間カウンタ更新処理において、指定アドレスの値が0でないことを条件に当該アドレスの値を更新するようになっており、タイマ値が異常な値に更新されてしまうことを防止できる。
また、本実施例では、時間カウンタ更新処理において、更新するタイマカウンタの数と同数の処理数を設定し、設定した処理数分、タイマ値を更新する処理を繰り返し実行する構成であるため、更新するタイマカウンタの数の管理が容易になるとともに、例えば、更新間隔が異なる複数種類のタイマカウンタを備える場合などに、設定する処理数に応じて更新するタイマ値の種類を任意に設定することができる。
尚、処理数、すなわち更新するタイマカウンタの数は、プログラムに設定されていても良いし、テーブルに設定された値を読み出して設定するようにしても良い。
また、最初に処理数を設定することなく、最後に更新するタイマカウンタを予め設定するとともに、当該タイマカウンタのアドレスに到達するまでタイマ値を更新する処理を繰り返し実行する構成としたり、最後に更新するタイマカウンタの次のアドレスに特定のエンド値(例えば、FFh)を格納し、指定アドレスから読み出された値が特定のエンド値となるまでタイマ値を更新する処理を繰り返し実行する構成としても良い。
また、本実施例では、1バイトのタイマカウンタと、2バイトのタイマカウンタと、を備え、1バイトのタイマ値を更新する処理と、2バイトのタイマ値を更新する処理と、を別個に備えるため、1バイトのタイマ値を更新する処理と、2バイトのタイマ値を更新する処理と、を共通化する場合よりもプログラムの容量やRAM41cにおいてタイマ値が占有する容量を削減することができる。
尚、本実施例では、2バイトのタイマカウンタを備えることで1バイトを超える初期値に対応する相対的に長い時間を計測する構成であるが、例えば、更新間隔が異なるタイマカウンタ、例えば、タイマ割込処理(メイン)4回に1回更新する第1のタイマカウンタと、14回に1回更新する第2のタイマカウンタと、を備えることにより、2バイトのカウンタを設けることなく、相対的に長い時間間隔を計測する構成としても良く、このようにすることで、1バイトのタイマ値を更新する処理と、2バイトのタイマ値を更新する処理と、それぞれ設ける必要がなくなるため、タイマ値の更新に係るプログラム容量を削減できる。
また、本実施例では、複数種類のタイマカウンタがRAM41cにおいて遊技の進行に応じて初期化されることのない特別ワークに割り当てられており、遊技の進行に応じて初期化されることがないため、遊技の進行状況に関わらず、遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐ期間の時間を計測することができる。
特に、本実施例では、計測期間が1遊技の終了するタイミング、すなわち遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのあるタイマカウンタだけでなく、計測期間が遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのないタイマカウンタについても他のタイマカウンタとともに特別ワークに割り当てられた領域に格納されているため、タイマカウンタの管理が容易になるとともに、計測期間が遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのないタイマカウンタを、計測期間が遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのあるタイマカウンタに変更する等、後の設計変更等によりタイマカウンタの用途を容易に変更することができる。また、上記のように計測する期間が重複しない複数種類の期間について一のタイマカウンタを共用する構成であれば、遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのある計測期間と、遊技の進行に応じてRAM41cの一部が初期化されるタイミングを跨ぐことのない計測期間と、を一のタイマカウンタにて計測することが可能となる。
本実施例のメイン制御部41は、RAM41cの所定領域に後述のリール演出フラグが設定されている場合に、当該リール演出フラグに基づいてリール2L、2C、2Rを通常のゲームでは行われることのない特殊な変動態様(例えば、所定図柄揃え、リール微振動、リール逆回転、リール低速回転、一部のリールを回転させる一方で他のリールを回転させない一部回転)で変動させるリール演出を実行し、これら特殊な変動態様でリールを変動させることで、遊技者にとって有利な状況(例えば、後述するARTに制御されること、ART抽選での当選の可能性、所定役の当選の可能性)を示唆することが可能となっている。本実施例では、リール演出として、複数種類の第1リール演出及び第2リール演出を実行可能である。
第1リール演出は、リール2L、2C、2Rを特定の位置に停止させる、すなわち所定図柄を入賞ラインLNに揃える演出であり、本実施例では、第1リール演出として、リール2L、2C、2Rを所定期間にわたり微振動させた後に、入賞ラインLNに「赤7−赤7−赤7」を揃えて停止させる赤7揃い演出と、リール2L、2C、2Rを所定期間にわたり微振動させた後に、入賞ラインLNに「青7−青7−青7」を揃えて停止させる青7揃い演出と、を含む。
第2リール演出は、特定の位置にリールを停止させることのない演出であり、本実施例では、第2リール演出として、リール2L、2C、2Rを所定期間にわたり微振動させるリール微振動を行う微振動演出と、リール2L、2C、2Rを通常のゲームでの回転方向と反対方向に所定期間にわたり逆回転させるリール逆回転を行う逆回転演出と、リール2L、2C、2Rを通常のゲームでの回転速度よりも遅い低速で回転させる低速回転演出と、を含む。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選した場合には、ART(RT0でATに制御される状態)に制御するか否かを決定するART抽選を行う。ART抽選では、当選している所定の抽選対象役の種類に応じた割合(本実施例では、共通ベル、弱チェリー、スイカ、強チェリーの順で当選する割合がより高くなるように設定されている)で、ART抽選に当選し得るようになっている。そして、ART抽選に当選した場合には、ARTの制御を開始するまでの期間(前兆期間)の長さを決定する前兆期間抽選を行い、前兆期間抽選にて決定された前兆期間の計数を開始するとともに、ARTの制御を開始する際に実行するART開始演出の種類を決定するART開始演出抽選を行い、ART開始演出抽選にて決定されたART開始演出の種類を特定可能なART開始演出フラグをRAM41cの所定領域に設定する。その後、前兆期間抽選にて決定された前兆期間が経過したときに、ART開始演出の制御を開始して、ART開始演出フラグに基づいて特定されるリール演出の種類に対応するリール演出フラグをRAM41cの所定領域に設定し、当該リール演出フラグに基づいて後述のリール制御処理においてART開始演出抽選にて決定されたリール演出を実行させる。
ART開始演出抽選では、ART抽選にて当選したARTの種類に応じて、上述の第1リール演出である赤7揃い演出、青7揃い演出のいずれかが当選するようになっており、ART抽選にて当選したARTについて遊技者にとって有利度が高いほど青7揃い演出が選択され得る割合が高くなるようになっている。これにより、ART開始演出として、青7揃い演出が実行される場合には、赤7揃い演出が実行される場合よりも遊技者にとって有利度が高いARTに制御される可能性が高い旨が示唆される一方で、赤7揃い演出が実行される場合であっても、遊技者にとって有利度が高いARTに制御される可能性があるので、ART開始演出においてARTに制御されることへの期待感を高めることができる。
また、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選した場合には、RAM41cの所定領域を参照して、上述のART開始演出抽選に基づくリール演出フラグが設定されているか否かを判定し、当該リール演出フラグが設定されていない場合に、ART抽選に当選した可能性を示唆するART可能性示唆演出を実行するか否かを決定するART可能性示唆演出抽選を行う。ART可能性示唆演出抽選では、ART抽選の結果に応じた割合で、上述の第2リール演出である微振動演出、逆回転演出、低速回転演出のいずれかが選択され得るようになっており、ART可能性示唆演出抽選に当選した場合には、ART可能性示唆演出抽選にて当選したリール演出の種類を特定可能なリール演出フラグをRAM41cの所定領域に設定する。そして、その後のリール制御処理においてART可能性示唆演出としてART可能性示唆演出抽選にて決定されたリール演出を実行させる。
一方、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選した場合に、リール演出フラグが設定されている場合には、ART可能性示唆演出抽選を行わず、ART開始演出抽選に基づくリール演出フラグがRAM41cの所定領域に設定されている状態を維持することで、ART可能性示唆演出が実行されることを制限して、ART開始演出抽選により決定されたリール演出を優先して実行するようになっている。
尚、本実施例では、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選したゲームにおいて、リール演出フラグが設定されていない場合には、ART可能性示唆演出抽選を行う一方で、リール演出フラグが設定されている場合には、ART可能性示唆演出抽選を行わない構成であるが、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選したゲームにおいて、リール演出フラグが設定されているか否かに関わらず、一律にART可能性示唆演出を実行する構成としても良く、このような構成においては、ART可能性示唆演出抽選に当選し、かつリール演出フラグがRAM41cの所定領域に未だ設定されていない場合には、ART可能性示唆演出抽選での抽選結果に基づいてリール演出フラグを設定する一方で、ART可能性示唆演出抽選に当選したものの、RAM41cの所定領域に既にリール演出フラグが設定されている場合には、ART可能性示唆演出抽選に当選したことに伴ってリール演出フラグを設定することなく、既に設定されているリール演出フラグを維持するようにすることで、ART可能性示唆演出抽選に当選したゲームが、上述のART開始演出抽選により決定されたリール演出が実行されるゲームである場合には、ART可能性示唆演出抽選に当選したことに伴うリール演出の実行が制限され、ART開始演出抽選により決定されたリール演出を優先して実行されせることができる。
また、ART可能性示唆演出抽選では、当該ART可能性示唆演出抽選の契機となった所定の抽選対象役が当選したことに伴い行われたART抽選に当選している場合には、逆回転演出または低速回転演出が選択され得る割合が、ART抽選に当選していない場合に比較して高く設定されているとともに、ART抽選に当選している場合に、逆回転演出が選択され得る割合は、低速回転演出が選択され得る割合に比較して高く設定されている。これにより、ART可能性示唆演出としてリール演出(微振動演出、逆回転演出、低速回転演出)が行われることで、ARTに制御される可能性が高い旨が示唆されるとともに、実行されるリール演出の種類に応じてARTに制御される可能性の高さを示唆することができ(本実施例では、微振動演出、低速回転演出、逆回転演出の順でARTに制御される可能性がより高い)、ART可能性示唆演出においてARTに制御されることへの期待感を高めることができる。
尚、本実施例では、第1リール演出は、リール2L、2C、2Rを所定期間にわたり微振動させた後に、所定図柄の組合せを入賞ラインLNに揃える演出であるが、少なくともリール2L、2C、2Rを特定の位置に停止させる演出すなわちリールを特定の位置で一旦停止させる演出であれば良く、リール2L、2C、2Rを特定の位置に停止させるのみの演出や、リール2L、2C、2Rを所定期間にわたり通常のゲームでは行われることのない特殊な変動態様(例えば、所定図柄揃え、リール微振動、リール逆回転、リール低速回転、リール一部回転、所定期間にわたりリールを変動させることなく制御した後に変動を開始させる態様)に制御した後、リール2L、2C、2Rを特定の位置に停止させる演出、リール2L、2C、2Rを特定の位置に停止させた後、特殊な変動態様で変動させる演出、第2リール演出を構成するリールの変動態様の一部または全部でリールを変動させた後に、リール2L、2C、2Rを特定の位置に停止させる演出、リール2L、2C、2Rを複数の特定の位置に順次停止させる演出等であっても良い。
また、本実施例では、第2リール演出は、所定期間にわたり微振動、逆回転、または低速で回転させた後、リール2L、2C、2Rを所定の定速回転で回転させる演出であるが、特定の位置にリールを停止させることのない演出、すなわち停止制御テーブルを設定することなくリールを所定変動態様で変動させる演出であれば良く、通常のゲームでは行われることのない特殊な変動態様(所定期間にわたりリールを変動させることなく制御した後に変動を開始する態様、通常とは異なる方向の変動態様、通常の速度とは異なる速度での変動態様等)として、例えば、リール微振動、リール逆回転、リール低速回転、リール一部回転等の態様の組合せで変動させる演出であっても良い。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選した場合に、回転中のリールの停止操作を有効化するまでの期間を所定時間にわたり遅延させて、所定の役(本実施例では、強チェリー)が当選した可能性が高い旨を示唆する停止フリーズを行うことが可能であり、停止フリーズとして、第1停止操作が行われたときに実行され、次の停止操作、すなわち第2停止操作を有効化するまでの期間を遅延させる第1停止フリーズと、第2停止操作が行われたときに実行され、次の停止操作、すなわち第3停止操作を有効化するまでの期間を遅延させる第2停止フリーズと、第1停止フリーズ及び第2停止フリーズの双方を実行する第3停止フリーズと、が含まれる。
メイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選した場合に、RAM41cの所定領域を参照して、上述のART開始演出抽選に基づくリール演出フラグが設定されているか否かを判定し、当該リール演出フラグが設定されていない場合に、停止フリーズを行うか否か及び停止フリーズを行う場合の停止フリーズの種類を決定するフリーズ抽選を行い、フリーズ抽選にていずれかの停止フリーズが当選した場合に、フリーズ抽選にて当選した停止フリーズの種類を特定可能な停止フリーズフラグをRAM41cの所定領域に設定する。その後のリール制御処理において停止フリーズフラグに基づいて、所定のタイミングで停止フリーズを実行させる。
一方、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選した場合に、リール演出フラグが設定されている場合には、フリーズ抽選を行わず、停止フリーズフラグをRAM41cの所定領域に設定しないことで、停止フリーズが実行されることを制限して、ART開始演出抽選により決定されたリール演出が優先して実行されるようになっている。
尚、本実施例では、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選したゲームにおいて、リール演出フラグが設定されていない場合には、フリーズ抽選を行う一方で、リール演出フラグが設定されている場合には、フリーズ抽選を行わない構成であるが、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選したゲームにおいて、リール演出フラグが設定されているか否かに関わらず、一律にフリーズ演出を実行する構成としても良く、このような構成においては、フリーズ抽選に当選し、かつリール演出フラグがRAM41cの所定領域に設定されていない場合には、フリーズ抽選での抽選結果に基づいて停止フリーズフラグを設定する一方で、フリーズ抽選に当選したものの、RAM41cの所定領域にリール演出フラグが設定されている場合には、停止フリーズフラグを設定しないようにすることで、フリーズ抽選に当選したゲームが、上述のART開始演出抽選により決定されたリール演出が実行されるゲームである場合には、フリーズ抽選に当選したことに伴う停止フリーズの実行が制限され、ART開始演出抽選により決定されたリール演出のみを実行させることができる。
また、フリーズ抽選では、当該フリーズ抽選の契機となった内部抽選において当選している役(本実施例では、強チェリー、弱チェリー)の種類に応じて予め定められた割合で、第1停止フリーズ、第2停止フリーズ、第3停止フリーズのいずれかが選択され得るようになっており、所定の役として、強チェリーが当選している場合には、第1停止フリーズ、第2停止フリーズまたは第3停止フリーズが選択され、第3停止フリーズが第2停止フリーズよりも高い割合で選択され得るとともに、第2停止フリーズが第1停止フリーズよりも高い割合で選択され得るようになっている。また、弱チェリーが当選している場合には、第1停止フリーズ、第2停止フリーズ、またはハズレが選択され得るようになっており、第1停止フリーズが第2停止フリーズよりも高い割合で選択され得るようになっている。これにより、停止フリーズが行われることで、所定の役(本実施例では、強チェリー)が当選した可能性が高い旨が示唆されるとともに、実行される停止フリーズの種類に応じて所定の役が当選している可能性の高さを示唆することができ(本実施例では、第1停止フリーズ、第2停止フリーズ、第3停止フリーズの順で強チェリーが当選した可能性がより高い)、より有利な条件でART抽選が行われることへの期待感を高めることができる。
本実施例では、後述するように内部抽選にて強チェリーが当選することで、角チェリー1の図柄の組合せが入賞ラインLNに停止し得る一方で、弱チェリーが当選することで、角チェリー2の図柄の組合せが入賞ラインLNに停止し得るが、左リールを第1停止とする停止順で停止操作が行われることで、角チェリー1及び角チェリー2のいずれの図柄の組合せが入賞ラインLNに停止する際にも、まず左リールの下段に「チェリー」が停止することとなり、その停止態様に基づいて内部抽選にて強チェリーまたは弱チェリーのいずれが当選しているかを遊技者が識別することができないようになっている。これに対して、本実施例のメイン制御部41は、フリーズ抽選に当選することで、強チェリーが当選しているか、弱チェリーが当選しているかによって異なる割合で、停止操作が行われたときに停止フリーズを実行するので、停止フリーズが実行される態様によって、強チェリーが当選している可能性への期待感を高めることができる。
次に、メイン制御部41が、初期設定処理また設定変更処理の後に、実行するメイン処理について説明する。尚、メイン処理は一単位の遊技毎に繰り返し実行される。そして、メイン処理の一周期が遊技の一単位に相当している。尚、本実施例においてメイン処理は、遊技プログラムに含まれる。
図15に示すように、メイン処理では、遊技が開始されるまで待機する遊技開始待ち処理(Sa1)、遊技が開始されることに伴って内部抽選を行う内部抽選処理(Sa2)、リール2L、2C、2Rを回転及び停止させる制御を行うリール制御処理(Sa3)、全てのリール2L、2C、2Rが停止されて遊技が終了される際に各種設定等を行う遊技終了時設定処理(Sa4)が、順次繰り返し実行される。
遊技開始待ち処理では、メイン制御部41は、まず、割込を禁止して、初期化対象のRAMの最終アドレス(遊技スタック領域(未使用)の最終アドレス)をセットし、指定されたアドレスで示されるRAM41cの領域をクリアする。この際、設定変更処理の後にメイン処理が開始された場合には、設定変更処理が終了される際に、初期化対象のRAMの先頭アドレスとして、使用可能領域のうち特別ワークが記憶されている領域の最終アドレスの次のアドレスが設定され、当該遊技開始待ち処理において、初期化対象のRAMの最終アドレスとして、遊技スタック領域(未使用)の最終アドレスが設定されて、遊技RAM領域のうち特別ワーク及び遊技スタック領域(使用中)以外の領域(重要ワーク、一般ワーク、未使用領域3、スタック領域(未使用))が初期化されることとなる。また、特定の遊技状態ではない遊技の終了時には、遊技終了時設定処理(Sa4)において遊技終了時の初期化対象のRAMの先頭アドレス(未使用領域3の先頭アドレス)が設定され、当該遊技開始待ち処理(Sa1)において、初期化対象のRAMの最終アドレス(遊技スタック領域(未使用)の最終アドレス)が設定されるため、使用可能領域のうち未使用領域3及び遊技スタック領域(未使用)が初期化されることとなる。また、特定の遊技状態の終了時であり、かつ遊技の終了時には、遊技終了時設定処理(Sa4)において特定の遊技状態の終了時の初期化対象のRAMの先頭アドレス(遊技RAM領域のうち特別ワークが記憶されている領域の最終アドレスの次のアドレス)が設定され、当該遊技開始待ち処理において、特定の遊技状態の終了時の初期化対象のRAMの最終アドレス(遊技スタック領域(未使用)の最終アドレス)が設定されるため、遊技RAM領域のうち一般ワーク、未使用領域3、遊技スタック領域(未使用)が初期化されることとなる。
そして、RAM41cの所定領域をクリアした後、割込を許可し、賭数を設定可能な状態で待機し、遊技状態に応じた規定数の賭数が設定され、スタートスイッチ7が操作された時点でゲームを開始させる処理を実行する。
次いで、内部抽選処理(Sa2)では、スタートスイッチ7の操作の検出によるゲーム開始と同時にラッチされた内部抽選用の乱数値に基づいて上記した各役への入賞を許容するか(すなわち、表示結果の導出を許容するか否か)どうかを決定する処理(内部抽選)を行う。
次いで、リール制御処理(Sa3)では、スタートスイッチ7が操作されたことに基づいて各リール2L、2C、2Rの回転を開始させるリール回転開始処理、Sa2のステップにおける内部抽選の結果及び遊技者によるストップスイッチ8L、8C、8Rの操作が検出されたことに応じてリール2L、2C、2Rの回転を停止させるリール回転停止処理を実行する。
次いで、遊技終了時設定処理(Sa4)では、Sa3のステップにおいて全てのリール2L、2C、2Rの回転が停止したと判定した時点で、各リール2L、2C、2Rに導出された表示結果に応じて入賞が発生したか否かを判定する処理を実行する。そして、入賞が発生したと判定した場合に、その入賞に応じた払出枚数に基づきクレジットの加算並びにメダルの払出等の処理を行う。入賞が発生した場合にはメダルの払い出し等が終了した後に次のゲームに備えて遊技状態を設定する処理を実行する。また、入賞が発生しなかった場合にはリールが停止した後に、次のゲームに備えて遊技状態を設定する処理を実行する。
遊技状態を設定する処理では、特定の遊技状態の終了時か否かを判定し、特定の遊技状態の終了時でない場合には、遊技終了時の初期化対象RAMの先頭アドレスをセットする一方で、特定の遊技状態の終了時である場合には、特定の遊技状態の終了時の初期化対象RAMの先頭アドレスをセットする。そして、Sa1のステップに戻り、Sa1〜Sa4の各処理が、順次繰り返し実行される。
また、メイン処理では、ゲームの進行に応じてコマンドを生成してコマンドキューに設定するコマンド格納処理を実行し、設定されたコマンドは、その後のタイマ割込処理(メイン)において実行される通常時コマンド送信処理によりサブ制御部91に対して送信されるようになっている。
次に、メイン制御部41がメイン処理において実行するリール制御処理について、図16〜図20に基づいて説明する。リール制御処理は、リール2L、2C、2Rを回転及び停止させる処理であり、各リール2L、2C、2Rの回転を開始させるリール回転開始処理と、ストップスイッチ8L、8C、8Rの操作に応答して該当するリール2L、2C、2Rを停止させるリール回転停止処理を含み、メイン処理において内部抽選処理の後に実行される。図16は、メイン制御部41が実行するリール制御処理の制御内容を示すフローチャートであり、図17は、メイン制御部41がリール制御処理において実行するリール回転開始処理の制御内容を示すフローチャートであり、図18は、メイン制御部41がリール制御処理において実行するリール回転停止処理の制御内容を示すフローチャートであり、図19は、図柄ステップ数の割当とリール回転停止処理にける判定範囲の関係について説明するための図であり、図20は、メイン制御部41がリール制御処理において実行する停止制御テーブル設定処理の制御内容を示すフローチャートである。
図16に示すように、リール制御処理では、まず、後述するリール回転開始処理を実行し(Sb1)、リール2L、2C、2Rの回転を開始させる。そして、リール回転開始処理が終了して、リール制御処理に戻った後には、回転中のリールの停止操作を有効化するまでの期間を所定時間にわたり遅延させる停止フリーズを行うか否かを、停止フリーズフラグに基づいて判定する(Sb2)。停止フリーズを行うと判定した場合は、停止フリーズフラグに基づいて特定されるタイミング、すなわち、停止フリーズが第1停止フリーズであれば、第1停止操作が行われた後であり、第2停止フリーズであれば、第2停止操作が行われた後であり、第3停止フリーズであれば、第1停止操作が行われた後及び第2停止操作が行われた後で場合に、遅延処理を実行する(Sb3)。
遅延処理では、RAM41cの所定領域に設定されており、後述のSb28のステップにおいて、計時が開始される有効タイマの値に基づいて有効な停止操作が検出されたときからの経過時間が所定の遅延時間に達しているか否かを判定し、有効タイマの値が所定の遅延時間に達していない場合には、有効タイマの値が所定の遅延時間に達するまで待機する。そして、有効タイマの値が所定の遅延時間に達することで、当該遅延処理を終了して、リール制御処理に戻る。有効な停止操作が検出したときに計時が開始される有効タイマの値に基づいて所定の遅延時間が経過したと判定されるときに、当該遅延処理を終了するようにすることで、有効な停止操作が検出された後のリール回転停止処理が実行される期間が、該当リールが停止される際の滑りコマ数(0〜4)に応じて変動する場合であっても、その変動に応じて当該遅延処理の実行期間が変動することとなるので、有効な停止操作が検出された後の一律のタイミングで、当該遅延処理より後の処理を実行可能となっている。これにより、サブ制御部91側では、停止フリーズ中に所定の演出を行う場合に、メイン制御部41側で実行されている停止フリーズの終了タイミングに合わせた演出を行うことが可能となる。
尚、本実施例の遅延処理では、Sb29のステップにて計時が開始される有効化タイマに基づいて所定の遅延時間が経過しているか否かを判定する構成であるが、有効な停止操作が検出されたときからの経過時間に基づいて、所定の遅延時間に達しているか否かを判定可能な構成であれば良く、有効化タイマ以外の計時手段により有効な停止操作が検出されたときからの時間を計時する構成であっても良い。
Sb3のステップにおいて遅延処理を実行した後、またはSb2のステップにおいて停止フリーズを行わないと判定した後は、タイマ割込待ち処理を実行する(Sb4)。タイマ割込待ち処理では、タイマ割込を許可に設定して、タイマ割込処理(メイン)が1回行われるまで待機する。
Sb4のステップのタイマ割込待ち処理が終了した後は、投入払出エラーチェック処理を実行する(Sb5)。投入払出エラーチェック処理では、投入メダルセンサ31の出力等に基づいてメダルセレクタの異常(以下、投入エラーという)、及び払出センサ34cの出力等に基づいてホッパーユニット34の異常(以下、払出エラーという)を検出する。そして、投入払出エラーチェック処理において投入エラー、払出エラーの少なくとも一方が検出された場合には(Sb6)、投入エラー、払出エラーが生じていることを特定可能な投入払出エラーフラグを設定する(Sb7)。
Sb7のステップにおいて、投入払出エラーフラグを設定した後、またはSb6のステップにおいて投入エラー、払出エラーのいずれも生じていないと判定した後は、ドア開放チェック処理を実行して(Sb8)、ドア開放検出スイッチ25の出力状態に変化が生じたか否かを判定する。そして、ドア開放検出スイッチ25の出力状態が変化していると判定した場合には(Sb9)、ドアコマンドをRAM41cのコマンドキューに設定する(Sb10)。尚、Sb10のステップにおいて設定されたドアコマンドは、次回のタイマ割込処理(メイン)にて実行される通常時コマンド送信処理により、サブ制御部91に対して送信されることとなる。
Sb10のステップにおいて、ドアコマンドを設定した後、またはSb9のステップにおいてドア開放検出スイッチ25の出力状態が変化していないと判定した後には、回転エラーチェック処理を実行する(Sb11)。回転エラーチェック処理では、後述するタイマ割込処理(メイン)において更新されるリールステップ数カウンタの値や当該処理において回転異常フラグが設定されているか否か等に基づいて、回転制御中のリールについて回転に関する異常が生じているか否かを判定する処理であり、停止操作が済んでいない回転制御中のリールのうち、リール基準位置が検出されることなく回転開始または前回リール基準位置が検出されてからのリールステップ数が所定ステップ数(本実施例では、400ステップであり、リールが1周するために要する336ステップよりも大きな値に設定されている。)を超えたリールがある場合、リールセンサ33L、33C、33Rによりリール基準位置が検出されたときに、リールステップ数カウンタの値がリールが1周するために要するステップ数(本実施例では、336ステップ)に達していない場合等に、リール回転の異常(以下、回転エラーという)が発生していると判定して、異常が生じていると判定した場合には、当該異常が生じているリールを特定可能な回転エラーフラグをRAM41cの所定領域に設定する。
そして、Sb11のステップにおける回転エラーチェック処理が終了した後、回転エラーフラグに基づいて回転制御中のいずれかのリールに回転エラーが生じていることが特定される場合には(Sb12)、回転制御中のリールの停止操作を無効に設定し(Sb13)、RAM41cの所定領域に設定されている回転異常フラグを消去し(Sb14)、RAM41cの所定領域に設定されているエラーカウンタに1加算して(Sb15)、当該エラーカウンタの値が所定値(本実施例では、3)未満であるか否かを判定する(Sb16)。そして、エラーカウンタの値が所定値未満でないと判定した場合、すなわちリールが正常に回転されずに、所定回数(本実施例では、3回)連続して回転エラーが検出されている場合には、エラー処理を実行する(Sb17)。エラー処理では、回転制御中の全てのリールの回転を停止させて、当該エラー処理により回転を停止させたリールを特定可能なように、RAM41cの所定領域に設定されている回転エラーフラグを更新するとともに、ゲームを進行させないように不能化するエラー状態に制御して待機する。その後、リセット操作により当該エラー状態が解除されることで、エラー処理を終了し、エラーカウンタを初期化して0に設定する(Sb18)。
Sb16のステップにおいて、エラーカウンタの値が所定値未満であると判定した後、またはSb18のステップにおいてエラーカウンタを初期化した後には、回転エラーフラグに基づいて回転エラーが生じているリールを特定するとともに回転エラーフラグを解除し、特定されたリールの励磁パターンを一旦クリアしてリール始動時のパターンを新たに設定してリールモータを励磁させることで、回転制御を再度初めから行って、定速回転まで再度加速させる再度加速処理を実行する(Sb19)。その後、該当するリールを再度加速させたことを特定可能なリール再加速コマンドをRAM41cの所定領域に設定して(Sb20)、Sb4のステップに戻る。その後、再始動されたリールが正常に回転された場合には、回転エラーチェック処理において回転エラーが検出されることがなく、Sb12のステップにおいて、回転エラーが生じていないと判定されることとなる。
また、Sb11のステップにおける回転エラーチェック処理において、回転エラーフラグが設定されることがなく、回転制御中の全てのリールについて回転エラーが生じていることが特定されない場合には(Sb12)、タイマ割込を禁止に設定し(Sb21)、その後、後述するタイマ割込処理(メイン)により更新されてRAM41cの所定領域に設定されているリール速度状態フラグを取得して(Sb22)、当該リール速度状態フラグに基づいて、回転制御中のリールの回転状態が定速状態であるか否かをリール毎に特定し、回転制御中の全てのリールが定速回転で回転されているか否かを判定する(Sb23)。そして、Sb23のステップにおいて、少なくともいずれか1つのリールが定速回転で回転しておらず、回転制御中の全てのリールが定速回転で回転されている状況でないと判定した場合には、Sb4のステップに戻り、Sb4〜Sd23のステップを繰り返し実行して、回転制御中の全てのリールが定速回転で回転されている状況となるまで待機する。尚、リール速度状態フラグは、後述するタイマ割込処理(メイン)において更新され、タイマ割込処理(メイン)が行われた時点での、回転制御中の各リールモータが定速状態で回転しているか否かを特定可能な情報である。
Sb4のステップに戻り、Sb4〜Sd23のステップを繰り返し実行して待機した後、Sb4のステップのタイマ割込待ち処理において実行されるタイマ割込処理(メイン)により、回転制御中の全てのリールについて回転状態が定速状態であることを特定可能にリール速度状態フラグが更新されることで、その後に実行されるSb23のステップにおいて、回転制御中の全てのリールが定速回転で回転されていると判定されることとなる。
一方、Sb23のステップにおいて、停止操作が済んでいない回転制御中の全てのリールが定速回転で回転されていると判定した場合には、回転開始フラグがRAM41cの所定領域に設定されているか否かに基づいて、全てのリールが定速回転となったと判定されたことが1回目であるか否かを判定して(Sb24)、回転開始フラグが設定されており、全てのリールが定速回転となったと判定されたことが1回目であると判定した場合には、全てのリールについて定速回転に加速させる制御が完了したことを特定可能な加速完了コマンドをRAM41cのコマンドキューに設定し(Sb25)、回転開始フラグをRAM41cの所定領域から消去する(Sb26)。
Sb24のステップにおいて、全てのリールが定速回転となったと判定されたことが1回目でないと判定した場合、すなわち回転制御中のリールが定速回転に一旦達したものの、Sb12のステップにおいて回転エラーが検出されて、Sb19のステップにより再度加速させられたことで、再度定速回転に達した場合、またはSb26のステップにおいて回転開始フラグを消去した場合には、RAM41cに設定されている有効タイマに基づいて所定時間が経過していると判定したときに(Sb27)、回転制御を行っている全てのリールについて停止操作の受け付けを有効に設定する(Sb28)。尚、当該回転制御を行っているリールについて停止操作の受付が既に有効に設定されている場合には、有効な状態を維持する。また、Sb27のステップにおいて有効タイマに基づいて所定時間が経過していないと判定した場合には、Sb4〜Sb27のステップを繰り返し実行して、所定時間が経過するまで待機する。
そして、Sb28のステップにおいて停止操作の受付を有効に設定した後は、回転制御中のリールについて停止操作の受付が有効な状態で、有効な停止操作が検出されたか否かを判定する(Sb29)。すなわち連続する所定回数(本実施例では、2回)のタイマ割込処理(メイン)においてストップスイッチのポート入力データが同じ状態である場合にRAM41cの所定領域に設定され、今回と前回の入力データが同じ状態であることを示す確定データの履歴を参照して、回転制御中のストップスイッチのうち確定データがoffの状態からon状態に変化したものがある場合に、確定データがoffの状態からon状態に変化したストップスイッチについて、有効な停止操作が検出されたと判定する。これにより、ストップスイッチのon状態が一定期間(最低でも約2.24ms)以上継続して検知されたことを条件に、当該ストップスイッチについて有効な操作が検出されるようになっており、静電気などのノイズによってon状態が誤って検出されてしまうことを防止できる。
尚、本実施例では、回転制御中のリールについて停止操作の受付が有効な状態で、ストップスイッチの確定データがoff状態からon状態に変化したことが検出されること、すなわち連続する所定回数のタイマ割込処理(メイン)においてポート入力データのon状態が検出されることで、回転制御中のリールについて有効な停止操作が検出されたと判定する構成であるが、1回のタイマ割込処理(メイン)においてストップスイッチのポート入力データのon状態が検出されることで、有効な停止操作が検出されたと判定する構成であっても良い。
Sb29のステップにおいて、有効な停止操作が検出されていないと判定した場合には、Sb4のステップに戻り、Sb4〜Sb29のステップを繰り返し実行して、有効な停止操作が検出されるまで待機する。その後、Sb29のステップにおいて有効な停止操作が検出された場合には、Sb21のステップによりタイマ割込が禁止された状態で、停止操作関連処理1を実行した後(Sb30)、タイマ割込を許可に設定し(Sb31)、停止操作関連処理2を実行する(Sb32)。停止操作関連処理1では、停止操作が行われたストップスイッチに対応する停止有効LEDを消灯に設定する処理、RAM41cの所定領域に設定されている有効タイマを初期化して、Sb28のステップにおいて有効な停止操作が検出されてからの経過時間の計測を開始させる処理等を行う。また、停止操作関連処理2では、Sb29のステップにおいて検出された有効な停止操作に対応するリールの停止操作の受付を無効に設定する処理等を行う。尚、Sb31のステップにおいてタイマ割込が許可に設定されることで、Sb21〜Sb30のステップにわたってタイマ割込が禁止に設定されている状態の期間内に、本来のタイマ割込のタイミングが含まれていた場合には、Sb31のステップにおいてタイマ割込が許可に設定されたときに、当該タイマ割込処理(メイン)を実行する一方、当該期間内に本来のタイマ割込のタイミングが含まれていない場合には、その後、タイマ割込のタイミングにおいてタイマ割込処理(メイン)を実行することとなる。
そして、Sb32のステップにおいて停止操作関連処理2を終了した後は、後述するリール回転停止処理を実行し(Sb33)、Sb29のステップにおいて検出された有効な停止操作に対応するリールを停止させるための制御を行う。その後、後述する停止制御テーブル設定処理を実行して(Sb34)、残りの回転制御中のリールについて停止制御テーブルを設定する。停止制御テーブル設定処理を実行した後には、Sb29のステップにおいて停止操作が検出されたリールが停止したか否かを判定し(Sb35)、当該リールが停止していないと判定した場合には、当該リールが停止するまで待機し、当該リールが停止していると判定した場合に、全てのリール2L、2C、2Rについて有効な停止操作が行われて停止したか否かを判定し(Sb36)、全てのリール2L、2C、2Rが停止していない場合には、Sb2のステップに戻り、停止していない残りのリールについてSb2〜Sb36のステップの制御を実行する。
そして、全てのリール2L、2C、2Rについて有効な停止操作が行われ、Sb35のステップにおいて全てのリール2L、2C、2Rが停止したと判定した場合には、タイマ割込待ち処理を実行した後(Sb37)、投入払出エラーチェック処理を実行する(Sb38)。当該投入払出エラーチェック処理では、Sb5のステップと同様に、投入エラー、払出エラーを検出する。そして、Sb38のステップでの投入払出エラーチェック処理において投入エラー、払出エラーの少なくとも一方が検出された場合、またはSb7のステップにおいて投入払出エラーフラグが設定されている場合には、投入払出エラーが生じていると判定して(Sb39)、エラー処理を実行する(Sb40)。エラー処理では、ゲームを進行させないように不能化するエラー状態に制御して待機する。その後、リセット操作により当該エラー状態が解除されることで、エラー処理を終了させる。
尚、本実施例では、Sb7のステップにおいて投入払出エラーフラグが設定され、Sb39のステップにおいて投入払出エラーが生じていると判定した場合に、Sb40のステップにおいてエラー処理を実行する構成、すなわちリール2L、2C、2Rの回転制御中に投入払出エラーが検出された場合には、全てのリール2L、2C、2Rが停止された後に、当該投入払出エラーが検出されたことに基づくエラー処理を実行する構成であるが、メイン制御部41は、投入払出エラーチェック処理により投入払出エラーが検出されたときにエラー処理を実行する構成であっても良い。また、投入払出エラー以外のエラーについて、エラーが検出されたときにエラー処理を行う構成であっても良いし、リールの回転制御が終了した後に、エラー処理を行う構成であっても良い。
Sb39のステップにおいて投入払出エラーが生じていないと判定した後、またはSb40のステップのエラー処理が終了した後は、第3停止のストップスイッチが操作中であるか否、すなわち第3停止のストップスイッチの押下が終了されて、当該ストップスイッチの確定データがoff状態となっているか否かを判定し(Sb41)、当該ストップスイッチが操作中である場合には、当該操作が終了されるまで待機する。そして、当該ストップスイッチの確定データがoff状態となっており、当該ストップスイッチが操作中でないと判定した後に、全てのリール2L、2C、2Rの停止が完了して、遊技が終了する旨を特定可能な遊技終了コマンドをコマンドキューに設定する(Sb42)。尚、Sb42のステップにおいて設定された遊技終了コマンドは、次回のタイマ割込処理(メイン)にて実行される通常時コマンド送信処理により、サブ制御部91に対して送信されることとなる。また、本実施例では、第3停止のストップスイッチの確定データがoff状態となっていること、すなわち連続する所定回数のタイマ割込処理(メイン)においてポート入力データのoff状態が検出されることで、第3停止のストップスイッチが操作中でないと判定する構成であるが、1回のタイマ割込処理(メイン)においてストップスイッチのポート入力データのoff状態が検出されることで、当該ストップスイッチの操作が終了されたと判定する構成であっても良い。
Sb42のステップにおいて遊技終了コマンドを設定した後には、このリール制御処理を実行しているゲームにおいて特別役が入賞したか否かを判定し(Sb43)、特別役が入賞したと判定した場合は、操作終了時遅延処理を実行して(Sb44)、当該操作終了時遅延処理を開始したときから所定時間が経過するまで待機する。そして、当該所定時間が経過することで当該操作終了時遅延処理を終了し、リール制御処理に戻る。操作終了時遅延処理を実行することで、操作終了時遅延処理後の処理が、所定時間にわたり遅延するようになっている。
そして、Sb44のステップにおける操作終了時遅延処理が終了した後、またはSb43のステップにおいて特別役が入賞していないと判定した後には、リール制御処理を終了させ、メイン処理に戻る。
次に、メイン制御部41がリール制御処理において実行するリール回転開始処理について説明する。
図17に示すように、リール回転開始処理では、RAM41cの所定領域を参照して、上述のリール演出フラグが設定されているか否かを判定する(Sc1)。Sc1のステップにおいて、リール演出フラグが設定されていないと判定した場合には、RAM41cの所定領域に設定されているウェイトタイムカウンタを参照して、前回のゲームでのリール回転開始時点からウェイトタイム(本実施例では、約4.1秒)が経過したか否かを判定する(Sc2)。そして、所定のウェイトタイムが経過していないと判定した場合には、当該ウェイトタイムが経過するまで待機し、当該ウェイトタイムが経過したときに、ウェイトタイムカウンタを初期化して(Sc3)、新たなウェイトタイムの計時を開始させる。尚、ウェイトタイムカウンタは、タイマ割込処理(メイン)が行われる毎に更新されることで、前回のゲームでのリール回転開始時点からの経過時間が計時されるようになっている。
Sc3のステップにおいてウェイトタイムカウンタを初期化した後には、全てのリールモータ32L、32C、32Rを始動させて所定の定速回転まで加速させるためのリールモータの励磁パターンを設定させる加速要求をRAM41cの所定領域に設定する(Sc4)。当該リール制御回転開始処理を含むリール制御処理において加速要求や、後述するリールの励磁パターンを設定するための各種要求を設定することで、その後のタイマ割込処理(メイン)において当該各種要求に応じた励磁パターンで各リールモータ32L、32C、32Rの各励磁相の励磁状態が順次更新されて、当該各種要求に応じた態様で回転等が行われることとなり、例えば、加速要求が設定された場合には、リールが停止している状態から定速回転まで加速され、その後は、定速状態で回転され、リール演出後加速要求が設定された場合には、リール演出が終了された状態のリールが定速状態まで加速され、その後は、定速状態で回転され、停止速要求が設定された場合には、定速状態で回転しているリールが減速され、後述するリール回転停止処理において設定された停止位置で停止され、微振動要求が設定された場合には、リールが上下に微振動するように移動されることとなる。
そして、Sc4のステップにおいて全てのリールについて加速要求を設定して、全てのリール2L、2C、2Rの加速を開始させた後には、全てのリール2L、2C、2Rについて後述する停止制御テーブル設定処理を実行し(Sc5)、各リール2L、2C、2Rについて停止操作が行われたタイミング別の滑りコマ数を特定可能な停止制御テーブルをRAM41cの所定領域に設定する。これにより、タイマ割込処理(メイン)による各リール2L、2C、2Rの加速制御中に、各リール2L、2C、2Rの停止制御テーブルが設定されることとなる。
Sc5のステップにおいて、停止制御テーブル設定処理を行った後は、スタートスイッチ7が操作されたことに基づいてリールの回転を開始した旨を特定可能な回転開始フラグをRAM41cの所定領域に設定して(Sc6)、リール制御処理に戻る。
一方、Sc1のステップにおいて、リール演出フラグが設定されていると判定した場合は、リール演出フラグに基づいて、リール演出の種類が第1リール演出であるか否かを判定し(Sc7)、第1リール演出である場合には、第1リール演出の制御を実行する(Sc8)。第1リール演出の制御では、リール2L、2C、2Rを所定期間にわたり微振動させるためのリールモータの励磁パターンを設定させる微振動要求をRAM41cの所定領域に設定してリール2L、2C、2Rの微振動制御を開始させた後、後述する停止制御テーブル設定処理を実行して、リール演出フラグに基づいて特定されるリール演出の種類に応じた図柄の組合せを、入賞ラインLNに停止させるように停止制御テーブルを設定し、リール2L、2C、2Rの微振動の制御を開始させてから所定期間が経過した後に、設定されている停止制御テーブルに従ってリール2L、2C、2Rを停止させる。そして、リール2L、2C、2Rを停止させた状態で、所定の時間が経過することで、第1リール演出を終了させる。
第1リール演出を終了させた後は、Sc3のステップと同様に、ウェイトタイムカウンタを初期化し(Sc9)、各リール2L、2C、2Rについて始動させて定速回転まで加速させるための制御を開始する時期をランダムに決定して、決定結果をランダム加速開始時期としてRAM41cの所定領域に設定する(Sc10)。その後、各リール2L、2C、2Rについてランダム加速開始時期に達しているか否かを判定する(Sc11)。
Sc11のステップにおいて、いずれかのリールについてランダム加速開始時期に達していると判定した場合には、該当するリールについて、始動させて所定の定速回転まで加速させるためにリールモータの励磁パターンを設定させる加速要求をRAM41cの所定領域に設定して加速を開始させる(Sc14)。そして、全てのリール2L、2C、2Rについて加速を開始させる設定が済んだか否かを判定し(Sc15)、加速を開始させる設定が済んでいないリールがある場合には、Sc11のステップに戻り、加速を開始させる設定が済んでいないリールについてランダム加速開始時期に達しているか否かを判定する。
Sc11のステップにおいて、いずれのリールについてもランダム加速開始時期に達してしないと判定した場合には、各リール2L、2C、2Rについて停止制御テーブルの設定が済んでいるか否かを判定し(Sc12)、停止制御テーブルの設定が済んでいない場合には、Sc5のステップと同様に、全てのリール2L、2C、2Rについて後述する停止制御テーブル設定処理を実行し(Sc13)、各リール2L、2C、2Rについて停止制御テーブルを設定する。その後、Sc11のステップに戻り、その後、各リール2L、2C、2Rについてランダム加速開始時期に達しているか否かを判定する(Sc11)。
Sc11〜Sc15のステップにより、各リール2L、2C、2Rの加速制御中に、全てのリールについて停止制御テーブルを設定することとなる。また、ランダム加速開始時期に基づいて、各リール2L、2C、2Rの加速を順次開始させることで、各リール2L、2C、2Rの回転の開始タイミングをランダムに遅延させ、その後のリール2L、2C、2Rの位置関係をランダムな関係にすることができ、リール2L、2C、2Rの位置関係が遊技における停止操作のタイミングの目安となってしまうことを防止できる。
Sc15のステップにおいて、全てのリール2L、2C、2Rについて加速を開始させる設定が済んだと判定した場合には、Sc6のステップに進み、回転開始フラグをRAM41cの所定領域に設定して(Sc6)、リール制御処理に戻る。
また、Sc1のステップにおいて、リール演出フラグが設定されていると判定した場合であって、Sc7のステップにおいて、リール演出の種類が第1リール演出でないと判定した場合、すなわちリール演出の種類が第2リール演出である場合には、Sc4のステップと同様に、全てのリール2L、2C、2Rについて後述する停止制御テーブル設定処理を実行した後に(Sc16)、第2リール演出の制御を実行する(Sc17)。第2リール演出では、リール演出フラグに基づいて特定される上述の特殊な変動態様でリール2L、2C、2Rを変動させる。そして、リール2L、2C、2Rを特殊な変動態様で変動させている状態または停止させた状態で、所定の時間が経過することで、第2リール演出を終了させる。
第2リール演出を終了させた後は、Sc3のステップと同様に、ウェイトタイムカウンタを初期化し(Sc18)、第2リール演出の態様に応じて、第2リール演出の終了に伴う各リール2L、2C、2Rの状態から所定の定速回転に加速させるためのリールモータの励磁パターンを設定させるリール演出後加速要求をRAM41cの所定領域に設定して、定速回転までの加速を開始させて(Sc19)、Sc6のステップに進み、回転開始フラグをRAM41cの所定領域に設定して、リール制御処理に戻る。
次に、メイン制御部41がリール制御処理において実行するリール回転停止処理について説明する。
図18に示すように、リール回転停止処理では、まず、タイマ割込を禁止に設定し(Sd1)、その後、RAM41cの所定領域に設定されている図柄ステップ数カウンタに基づいて、リール制御処理のSb28のステップで停止操作が検出されたリールの図柄ステップ数を取得し(Sd2)、当該図柄ステップ数が所定の判定範囲(0〜11ステップ)内にあるか否かを判定する(Sd3)。
図柄ステップ数は、図19に示すように、リールモータの1周分のステップ数(本実施例では336ステップ)のうち1つの図柄に対応するステップ数である。本実施例では、1リールに配置された21図柄に対してリールモータの1周分の336ステップが均等に割り当てられることで、1図柄に対して16ステップが割り当てられており、一の図柄の下端が0ステップ(1ステップ目)、上端が15ステップ(16ステップ目)とされている。そして、図柄ステップ数カウンタは、リールの所定の判定位置(本実施例では、各リール2L、2C、2Rが停止したときの中段に位置する図柄に対応する図柄領域の最上端の位置、図23参照)を通過する図柄の図柄ステップ数を計数するためのカウンタであり、リール2L、2C、2R毎に0〜16ステップを計数可能なカウンタがステップ数カウンタとしてRAM41cの所定領域に設定されており、いずれの図柄ステップ数カウンタも後述するリールステップ数等更新処理において更新される。
また、図19に示すように、図柄ステップ数には、判定範囲と非判定範囲とが設定されている。判定範囲は、図柄ステップ数カウンタの値が取得される時点での図柄番号カウンタの値に基づいて特定される図柄番号の図柄を、滑りコマ数0で所定の停止位置(本実施例では、リールの中段の位置)に停止させることができる図柄ステップ数の範囲であり、本実施例では、一の図柄に割り当てられる16ステップのうちリールの回転方向前側の0〜11(1ステップ目〜12ステップ目)ステップの範囲である。一方、非判定範囲は、図柄ステップ数カウンタの値が取得される時点での図柄番号カウンタの値に基づいて特定される図柄番号の図柄を、滑りコマ数0で所定の停止位置(本実施例では、リールの中段の位置)に停止させることができない図柄ステップ数の範囲であり、本実施例では、一の図柄に割り当てられる16ステップのうち回転方向後側の12〜15ステップ(13ステップ目〜16ステップ目)の範囲である。
Sd3のステップにおいて、図柄ステップ数が所定の判定範囲(0〜11ステップ)内にないと判定した場合には、一旦、タイマ割込を許可に設定した後(Sb4)、Sb1のステップに戻り、Sd1〜Sd4のステップを繰り返し実行して、図柄ステップ数が所定の判定範囲内にあると判定されるまで待機する。尚、Sd1のステップにおいてタイマ割込が禁止に設定された後、Sd4のステップにおいてタイマ割込が許可に設定されることで、Sd1〜Sd4のステップにわたってタイマ割込が禁止に設定されている状態の期間内に、本来のタイマ割込のタイミングが含まれていた場合には、Sd4のステップにおいてタイマ割込が許可に設定されたときに、タイマ割込処理(メイン)を実行して、当該タイマ割込処理(メイン)におけるリールステップ数等更新処理において図柄ステップ数カウンタを更新する。一方、当該期間内に本来のタイマ割込のタイミングが含まれていない場合には、その後、再びタイマ割込が許可に設定されるときにタイマ割込処理(メイン)を実行して、図柄ステップ数カウンタを更新する。
一方、Sd3のステップにおいて、図柄ステップ数が所定の判定範囲にあると判定した場合には、Sd1のステップにおいてタイマ割込が禁止に設定された状態を維持して、Sd5のステップに進み、RAM41cの所定領域に設定されている図柄番号カウンタの値を取得し、当該図柄番号カウンタの値を停止操作が行われたときの図柄番号(以下、操作時図柄番号と言う)としてRAM41cの所定領域に設定する(Sd6)。
図柄番号カウンタは、上述の所定の判定位置(本実施例では、透視窓3における各リール2L、2C、2Rの中段に対応する領域の最上端の位置、図23参照)に位置している図柄の図柄番号を計数するためのカウンタであり、リール2L、2C、2R毎に一の図柄番号カウンタがRAM41cの所定領域に設定されており、いずれの図柄番号カウンタも後述するリールステップ数等更新処理において更新される。
その後、該当するリールを停止させる際の滑りコマ数を設定する滑りコマ数設定処理を実行する(Sd7)。滑りコマ数設定処理では、停止制御テーブル設定処理によりRAM41cの所定領域に設定されている停止制御テーブルから、リール制御処理のSb28のステップで停止操作が検出されたリールに対応する停止制御テーブルを特定し、当該停止制御テーブルを参照して、操作時図柄番号に基づいて停止操作が行われたタイミングに対応する滑りコマ数を特定し、当該滑りコマ数をRAM41cの所定領域に設定する。また、当該滑りコマ数に応じた位置、すなわち滑りコマ数に対応する図柄番号の図柄で該当するリールを停止させるために停止速要求をRAM41cの所定領域に設定して、該当するリールを減速させて停止させる制動制御を開始させる。
RAM41cの所定領域に設定された滑りコマ数及び停止要求が、その後タイマ割込処理におけるリールモータの回転制御に関する処理(後述のリール回転制御処理)にて参照されることで、当該滑りコマ数に対応する図柄番号の図柄がリールの停止位置に位置し、かつ当該図柄の図柄ステップ数が所定のステップ数(本実施例では、11ステップ)となったときに、リールモータが全相励磁されてリールが滑りコマ数に対応する図柄で停止されることとなる。尚、本実施例では、滑りコマ数に基づいてリールに停止させる図柄の図柄番号を特定可能であり、当該図柄番号が割り当てられた図柄につての図柄ステップ数が所定のステップ数となることで、リールモータが全相励磁されてリールが滑りコマ数に対応する図柄で停止される構成であるが、滑りコマ数に基づいてリールに停止させるリールステップ数を特定可能な構成とし、当該リールステップ数に応じた所定のステップ数でリールモータを全相励磁することで、リールを滑りコマ数に対応する停止位置で停止される構成であっても良い。
Sd7のステップにおいて滑りコマ数設定処理を実行した後は、タイマ割込を許可に設定する(Sd8)。Sd8のステップにおいてタイマ割込を許可に設定することで、Sd1〜Sd8のステップにわたってタイマ割込が禁止に設定されている状態の期間内に、本来のタイマ割込のタイミングが含まれていた場合には、Sd8のステップにおいてタイマ割込が許可に設定されたときに、タイマ割込処理(メイン)を実行して、当該タイマ割込処理(メイン)において、滑りコマ数設定処理(Sb7)で設定された滑りコマ数に基づいて、該当するリールを減速させて停止させるための制動制御を開始する。一方、当該期間内に本来のタイマ割込のタイミングが含まれていない場合には、その後、タイマ割込のタイミングにおいてタイマ割込処理(メイン)を実行して、該当するリールの制動制御を開始する。
そして、Sd8のステップにおいてタイマ割込を許可に設定した後は、停止位置設定処理を実行する(Sd9)。停止位置設定処理では、Sd6の滑りコマ数設定処理において特定した滑りコマ数及び操作時図柄番号に基づいてリールを停止させる位置の図柄(以下、停止位置図柄と言う)の図柄番号、所定の滑りコマ数で停止させる停止制御を行っているリールを特定し、当該リール及び停止位置図柄の図柄番号を特定可能な停止操作時コマンド、及び滑りコマ数設定処理において特定した滑りコマ数を特定可能な滑りコマ数コマンドを、コマンドキューに設定し、これらのコマンドを次回のタイマ割込において送信させる。
Sd9のステップにおいて停止位置設定処理を実行した後は、タイマ割込処理(メイン)におけるリール回転制御処理にてRAM41cの所定領域に設定され、リールの制御状態を特定可能なリール制御状態フラグを参照して(Sd10)、停止制御を行っているリールについて当該リールを減速させて停止させる制動制御が実行されたか否かを判定し(Sd11)、制動制御が実行されている場合には、リール回転停止処理を終了させてリール制御処理に復帰する。また、制動制御が実行されていないと判定した場合には、制動制御が実行されるまで待機して、制動制御が実行されたと判定したときに、リール回転停止処理を終了させてリール制御処理に復帰する。
次に、メイン制御部41がリール制御処理において実行する停止制御テーブル設定処理について説明する。
図20に示すように、停止制御テーブル設定処理では、まず、未停止のリールがあるか否か、すなわち有効な停止操作が行われておらず、回転制御が継続されているリールがあるか否かを判定する(Se1)。そして、未停止のリールがある場合には、タイマ割込待ち処理を実行して(Se2)、タイマ割込を許可に設定してタイマ割込処理(メイン)が1回行われるまで待機した後、タイマ割込を禁止に設定したうえで(Se3)、回転制御が継続されている一のリールについて停止制御テーブル設定処理を行い(Se4)、停止操作が行われたタイミング別の滑りコマ数を特定可能な停止制御テーブルをRAM41cの所定領域に設定する。
そして、一のリールについて停止制御テーブル設定処理が終了した後には、全ての未停止のリールについて停止制御テーブル設定処理が行われたか否かを判定し(Se5)、停止制御テーブル設定処理を行っていない未停止のリールが残っている場合には、Se2のステップに戻って、タイマ割込待ち処理を実行した後に、Se3のステップを経て、Se4のステップにおいて残りの一のリールについて停止制御テーブル設定処理を行って停止制御テーブルを設定する。
そして、Se5のステップにおいて全ての未停止のリールについて、停止制御テーブルを設定済みであると判定した場合、またはSe1のステップにおいて未停止のリールがないと判定した場合に、停止制御テーブル設定処理を終了して、リール制御処理に戻る。
このように、本実施例のメイン制御部41は、ゲームの開始後にリール制御処理を実行して、リール2L、2C、2Rの回転を開始させた後、ストップスイッチ8L、8C、8Rの停止操作が検出されるまで待機し、有効なストップスイッチ8L、8C、8Rの操作が検出されることで、該当するリールの回転を所定の停止位置で停止させる制御を、全てのリールの回転を停止させるまで繰り返し行うとともに、少なくとも1つ以上のリールを回転制御している状態で、異常が生じた可能性のある特定事象が生じた否かを判定する構成である。
このような構成では、リールの回転中において停止操作が行われた後、リールの回転を停止させる停止制御を行っている期間において、異常に関連する事象が生じたか否かの判定を行うと、停止制御を行っている期間に余計な処理を行うこととなり、停止制御の対象リールが意図しない停止位置で停止してしまう虞がある。
これに対して、本実施例のメイン制御部41は、リール制御処理において、リール2L、2C、2Rの回転を開始させるリール回転開始処理を行った後、有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機し、有効なストップスイッチ8L、8C、8Rの停止操作が検出されることで、該当するリールの回転を停止させるリール回転停止処理を行う構成であって、リール回転開始処理の後に有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間では、異常が生じた可能性のある特定事象が生じた否かを判定する異常判定処理を実行するので、リールの回転中の大半を占める状態では、特定事象を判定できる一方で、有効なストップスイッチ8L、8C、8Rの操作が検出された後からリール回転停止処理によりリールの回転が停止されるまでの期間では、異常判定処理を実行しないので、リールの停止に関する処理中の負荷が軽減されるため、リールの停止制御中に余計な処理が行われることにより停止制御の対象リールが意図しない位置でリールが停止してしまうことを防止できる。
本実施例のメイン制御部41は、リール制御処理において、リール回転開始処理の後に有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間に、異常判定処理の一つとして投入払出エラーチェック処理を実行することで、投入メダルセンサ31の出力に基づいてメダル投入部4からのメダルの投入に関する異常が生じた可能性があるか否かを判定するので、リールの回転中の大半を占める状態では、特定事象としてメダルの投入に関する異常を判定できる一方で、有効なストップスイッチ8L、8C、8Rの操作が検出された後からリール回転停止処理によりリールの回転が停止されるまでの期間では、投入払出エラーチェック処理を実行しないので、リールの停止に関する処理中の負荷が軽減されるため、リールの停止制御中に余計な処理が行われることにより停止制御の対象リールが意図しない位置でリールが停止してしまうことを防止できる。
本実施例のメイン制御部41は、リール制御処理において、リール回転開始処理の後に有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間に、異常判定処理の一つとして投入払出エラーチェック処理を実行することで、払出センサ34cの出力に基づいてホッパーユニット34によるメダルの払出に関する異常が生じた可能性があるか否かを判定するので、リールの回転中の大半を占める状態では、特定事象としてメダルの払出に関する異常を判定できる一方で、有効なストップスイッチ8L、8C、8Rの操作が検出された後からリール回転停止処理によりリールの回転が停止されるまでの期間では、投入払出エラーチェック処理を実行しないので、リールの停止に関する処理中の負荷が軽減されるため、リールの停止制御中に余計な処理が行われることにより停止制御の対象リールが意図しない位置でリールが停止してしまうことを防止できる。
本実施例のメイン制御部41は、リール制御処理において、リール回転開始処理の後に有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間に、異常判定処理の一つとして回転エラーチェック処理を実行することで、リールセンサ33L、33C、33Rの出力に基づいてリールの回転に関する異常が生じた可能性があるか否かを判定するので、リールの回転中の大半を占める状態では、特定事象としてリールの回転に関する異常を判定できる一方で、有効なストップスイッチ8L、8C、8Rの操作が検出された後からリール回転停止処理によりリールの回転が停止されるまでの期間では、回転エラーチェック処理を実行しないので、リールの停止に関する処理中の負荷が軽減されるため、リールの停止制御中に余計な処理が行われることにより停止制御の対象リールが意図しない位置でリールが停止してしまうことを防止できる。
本実施例のメイン制御部41は、リール制御処理において、リール回転開始処理の後に有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間に、異常判定処理の一つとしてドア開放チェック処理を実行することで、ドア開放検出スイッチ25の出力状態に変化が生じたか否かを判定するので、リールの回転中の大半を占める状態では、特定事象としてドア開放検出スイッチ25の出力状態に変化が生じたか否かを判定できる一方で、有効なストップスイッチ8L、8C、8Rの操作が検出された後からリール回転停止処理によりリールの回転が停止されるまでの期間では、ドア開放チェック処理を実行しないので、リールの停止に関する処理中の負荷が軽減されるため、リールの停止制御中に余計な処理が行われることにより停止制御の対象リールが意図しない位置でリールが停止してしまうことを防止できる。
本実施例のメイン制御部41は、メイン処理においてリール制御処理を実行する一方で、メイン処理の実行中の定期的に割り込んでタイマ割込処理(メイン)を実行し、リール制御処理において、リール2L、2C、2Rの回転を開始させるリール回転開始処理を行った後、有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間に、タイマ割込処理(メイン)が実行される毎に、異常判定処理を実行して特定事象が発生したか否かを判定するので、有効なストップスイッチ8L、8C、8Rの操作が検出されるまで待機している期間において異常判定処理を常時実行せずに済むため、処理負荷を軽減できる。
本実施例のメイン制御部41は、リール制御処理において、リール2L、2C、2Rの回転を開始させるリール回転開始処理を行った後に、有効なストップスイッチ8L、8C、8Rの停止操作が検出されることで、該当するリールの回転を停止させるリール回転停止処理を行ってリールを停止させる制御を、全てのリールの回転を停止させるまで繰り返し行う構成であって、リール回転停止処理を行ってリールを停止された後、未だ回転中のリールがある場合に、有効なストップスイッチ8L、8C、8Rの停止操作が検出されるまでの期間において、異常判定処理を実行するので、リールの停止制御中の負荷を軽減しつつ、特定事象を判定できる。
また、本実施例のメイン制御部41は、異常判定処理として投入払出エラーチェック処理、回転エラー処理、ドア開放チェック処理を実行する構成であり、リール回転停止処理を行ってリールを停止された後、未だ回転中のリールがある場合に、有効なストップスイッチ8L、8C、8Rの停止操作が検出されるまでの期間において、異常判定処理を実行するので、リールの停止制御中の負荷を軽減しつつ、特定事象としてメダルの投入に関する異常、メダルの払出に関する異常、リールの回転に関する異常、ドア開放検出スイッチ25の出力状態に変化が生じたか否かを判定できる。
本実施例のメイン制御部41は、リール制御処理において、有効な停止操作が検出されることで、該当するリールの回転を停止させた後、未だ回転制御を行っているリールが残っている場合には、タイマ割込処理(メイン)が実行される毎に異常判定処理を実行しつつ、先の停止操作が検出されてから所定時間が経過するまで、停止操作が行われたか否か判定することなく待機し、当該所定時間が経過した後には、次の停止操作の受付を有効に設定して、タイマ割込処理(メイン)が実行される毎に異常判定処理及び停止操作が行われたか否かの判定を実行しつつ待機し、有効な停止操作が検出されることで、該当するリールを停止させる制御を、全てのリールの回転を停止させるまで繰り返し行う構成であって、有効な停止操作が検出された後から次の停止操作の受付が有効化されるまでの期間であって、停止操作が行われたか否かの判定を行わない期間においても、異常判定処理を実行するので、当該期間においても特定事象を判定できる。
特に、リール制御処理において、次の停止操作の受付を有効化する際に、有効化タイマに基づいて、有効な停止操作が検出された後から次の停止操作の受付が有効化されるまでの所定期間が経過したか否かを判定し、所定期間が経過している場合に、次の停止操作の受付を有効化するようになっているので、有効な停止操作が検出されてリールが停止されるまでの時間が、停止時の滑りコマ数(本実施例では、0〜4)によって異なることとなるものの、滑りコマ数に関わらず、有効な停止操作が検出された後から次の停止操作の受付を有効化するまでの期間を一定にすることができる。そして、メイン制御部41は、当該有効な停止操作が検出された後から次の停止操作の受付を有効化するまでの期間においても、タイマ割込処理(メイン)が実行される毎に異常判定処理を実行するので、当該期間においても特定事象を判定できる。
また、本実施例のメイン制御部41は、異常判定処理として投入払出エラーチェック処理、回転エラー処理、ドア開放チェック処理を実行する構成であり、停止操作が行われたか否かの判定を行わない期間においても、異常判定処理を実行するので、当該期間においても特定事象としてメダルの投入に関する異常、メダルの払出に関する異常、リールの回転に関する異常、ドア開放検出スイッチ25の出力状態に変化が生じたか否かを判定できる。
本実施例のメイン制御部41は、メイン処理においてリール制御処理を実行する一方で、メイン処理の実行中の定期的に割り込んでタイマ割込処理(メイン)を実行し、リール制御処理において、リール2L、2C、2Rの回転を開始させるリール回転開始処理を行った後、有効な停止操作が検出されるまで待機している期間に、タイマ割込処理(メイン)が実行される毎に、停止操作が検出されたか否かを判定するので、有効な停止操作が検出されるまで待機している期間において、停止操作が検出されたか否かを常時判定せずに済むため、処理負荷を軽減できる。
また、このように、本実施例のメイン制御部41は、リール制御処理において、ストップスイッチ8L、8C、8Rによる停止操作の受付を有効に設定する前に、リール回転開始処理を実行して、当該リール回転開始処理においてリールを用いてリール演出を実行するとともに、リール演出の終了後に、停止制御テーブル設定処理を実行して、各リール2L、2C、2Rについて停止制御を行うための停止制御テーブルを設定する構成である。
このような構成では、リール演出の終了後に停止制御テーブルを設定するために、リール演出後にリールを停止せずにそのまま所定の定速回転に移行する場合などに停止制御テーブルの設定が間に合わなくなったり、停止操作の有効化が遅れる虞がある。
これに対して、本実施例のメイン制御部41は、リール制御処理において、ストップスイッチ8L、8C、8Rによる停止操作の受付を有効に設定する前に、リール回転開始処理を実行して、当該リール回転開始処理においてリール演出を実行する構成であり、リール演出として、特定の位置にリールを停止させる第1リール演出と、特定の位置にリールを停止させることのない第2リール演出とを実行可能であって、リール回転開始処理において、第1リール演出を実行する場合には、該第1リール演出の終了後に停止制御テーブル設定処理を実行して、全てのリール2L、2C、2Rについて停止制御テーブルを設定し、第2リール演出が実行される場合には、該第2リール演出を実行する前に、停止制御テーブル設定処理を実行して、全てのリール2L、2C、2Rについて停止制御テーブルを設定するので、第1リール演出が実行される場合には、第1リール演出を終了する際には、停止操作が有効とされるまでにリールを定速回転とするために加速させる制御を行う必要があり、該第1リール演出の終了後に停止制御テーブルを設定しても、加速させる制御も行われるので、該停止制御テーブルの設定により必要以上に停止操作の有効化が遅れることがない一方で、第2リール演出が実行される場合、すなわち第2リール演出の終了後にリールを定速回転とするために加速するための制御が第1リール演出よりも少なくて済む場合には、該第2リール演出の終了前に停止制御テーブルを設定すること、すなわち該第2リール演出が終了する前までに停止制御テーブルの設定を完了させることで、停止制御テーブルの設定により停止操作の有効化が遅れてしまうことを防止できる。
また、本実施例のメイン制御部41は、第1リール演出が実行される場合には、該第1リール演出の終了後に、停止制御テーブル設定処理を実行して、遊技において各リール2L、2C、2Rについて停止制御を行うための停止制御テーブルを設定するので、第1リール演出に伴いリールを停止させるための停止制御テーブルを設定するRAM41cの領域と、遊技においてリールを停止させるための停止制御テーブルを設定するRAM41cの領域とを、共通の所定領域とすることができる。
尚、本実施例では、メイン制御部41は、第1リール演出の終了時にリール2L、2C、2Rを所定の図柄が入賞ラインLNに揃うように停止させ、その後、リールを定速回転まで加速させる際には、各リール2L、2C、2Rをランダムに遅延させて順次回転を開始させる構成であるが、第1リール演出として、所定の図柄の組合せを入賞ラインLNに揃えずに停止させる構成とするとともに、リール2L、2C、2Rの回転開始をランダムに遅延させる制御を行わずに、第1リール演出の終了に伴い停止状態であるリールを通常の回転開始時と同様に一律のタイミングで始動させて定速回転まで加速させる構成としても良く、このような構成においても、本実施例と同様に、第1リール演出が実行される場合には、該第1リール演出の終了後に停止制御テーブルを設定する構成とすることで、該停止制御テーブルの設定により必要以上に停止操作の有効化が遅れることがない。
また、本実施例では、メイン制御部41は、第1リール演出を実行する場合には、該第1リール演出の終了後に停止制御テーブル設定処理を実行して、全てのリール2L、2C、2Rについて停止制御テーブルを設定する構成であるが、少なくとも第1リール演出において停止制御テーブルを使用するリールの制御が終了した以後に、遊技のために停止制御テーブルの設定を開始する構成であれば良く、例えば、第1リール演出中であっても所定の停止図柄の組合せを入賞ラインLNに停止させる制御が終了したときに、遊技のための停止制御テーブル設定処理を開始することで、第1リール演出の制御と並行して停止制御テーブルの設定を行う構成であっても良い。
また、本実施例では、メイン制御部41は、第2リール演出が実行される場合には、該第2リール演出を開始する前に停止制御テーブル設定処理を実行して、遊技のために全てのリール2L、2C、2Rについて停止制御テーブルを設定する構成であるが、メイン制御部41は、少なくとも第2リール演出の終了前に停止制御テーブル設定処理を実行する構成であれば良く、第2リール演出の実行中すなわち第2リール演出の制御と並行して停止制御テーブルを設定する構成でも良い。
また、本実施例では、メイン制御部41は、停止制御テーブル設定処理において、ROM41bに格納されているテーブルインデックス、テーブル作成用データを参照して、回転中のリール別に停止操作が行われたタイミング別の滑りコマ数を特定可能にRAM41cの所定領域に設定することで、回転中のリールについて停止操作が行われる前に、停止制御テーブルを予め作成して設定する構成であるが、停止制御テーブル設定処理は、回転中のリールについて停止操作が有効となる前に、予め停止制御テーブルをRAM41cの所定領域に設定する処理であれば良く、ROM41bに格納されている停止制御テーブルをRAM41cの所定領域に複製することで停止制御テーブルをRAM41cの所定領域に設定する構成、ROM41bに圧縮された状態で格納されている停止制御テーブルをRAM41cの所定領域に展開して設定することで停止制御テーブルを設定する構成、ROM41bに格納されている停止制御テーブルの一部をRAM41cの所定領域に複製または展開して設定することで停止制御テーブルをRAM41cの所定領域に設定する構成、ROM41bに格納されているテーブルインデックス、テーブル作成用データを参照せずに、停止操作がされたタイミングに応じて停止可能な停止位置を検索・特定してRAM41cの所定領域に設定する処理を、全ての停止操作のタイミングについて行うことで停止制御テーブルを作成して、予めRAM41cの所定領域に設定する構成、ROM41bに格納されている基準となる停止制御テーブルをRAM41cの所定領域に設定した後、当該停止制御テーブルの一部を遊技状況等に応じて変更することで停止制御テーブルを作成して、予めRAM41cの所定領域に設定する構成、これらの構成を組合せて停止制御テーブルを作成して設定する構成等であっても良い。
本実施例のメイン制御部41は、リール制御処理でのリール回転開始処理において、リール演出を行うか否かを判定し、リール演出を行わないと判定した場合には、全てのリール2L、2C、2Rを所定の定速回転まで加速させる制御を開始させた後、停止制御テーブル設定処理を実行して、各リール2L、2C、2Rについて停止制御テーブルを設定することで、リール2L、2C、2Rが定速回転となる前に停止制御テーブルを設定するので、リール2L、2C、2Rが定速回転となった後、速やかにストップスイッチ8L、8C、8Rの操作を有効化することができる。
尚、実施例では、メイン制御部41は、リール回転開始処理においてリール演出を行わないと判定した場合は、全てのリール2L、2C、2Rを所定の定速回転まで加速させる制御を開始させた後、各リール2L、2C、2Rについて停止制御テーブルを設定する構成であるが、リール演出を行わないと判定した場合に、全てのリール2L、2C、2Rの回転が開始された後、所定の定速回転に加速されるまでの間に、回転制御中のリールについて停止制御テーブルを設定する構成であれば良く、リール演出を行わないと判定した場合には、回転制御中の停止制御テーブルの設定を行った後に、全てのリール2L、2C、2Rを所定の定速回転まで加速させる制御を実行する構成、リールを所定の定速回転まで加速させる制御と回転制御中のリールの停止制御テーブルを設定する処理とを並行して実行する構成でも良い。
本実施例のメイン制御部41は、リール演出として、リール2L、2C、2Rを加速する際の変動態様を通常のゲームとは異なる態様とする第2リール演出を実行可能であり、リール制御処理でのリール回転開始処理において、第2リール演出を実行する場合には、該第2リール演出の終了前に停止制御テーブル設定処理を実行して、全てのリール2L、2C、2Rについて停止制御テーブルを設定するので、第2のリール演出の終了後、すぐにリールが定速回転となっても、速やかにストップスイッチ8L、8C、8Rの操作を有効化できる。
本実施例のメイン制御部41は、リール制御処理において、各リール2L、2C、2Rの回転を開始させた後、全てのリールの加速が完了して定速回転となったと判定した場合に、当該リールの加速が完了した旨を特定可能な加速完了コマンドを設定してサブ制御部91に対して送信させる一方で、リール制御処理において、各リール2L、2C、2Rの回転を開始させた後、回転エラーチェック処理を実行していずれかのリールの回転異常が検出されたときには、再加速手処理を実行して該当するリールを再度加速させ、その後、リールが定速回転となったと判定した場合には、加速完了コマンドを設定することなく、当該コマンドを送信させないので、サブ制御部91側で、加速完了コマンドを受信したときには、リールの回転異常による再度の加速完了ではなく、ゲーム開始後の最初の加速完了であることを特定でき、サブ制御部91は、当該加速完了コマンドに基づいて全てのリール2L、2C、2Rが最初に定速回転となったこと伴う演出(例えば、第1停止操作の指示)を実行することができる。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選したゲームにおいて、当該内部抽選の抽選結果に基づいて行われるART抽選に当選した場合には、前兆期間が経過した後のゲームにおいて、ART開始演出としてリール演出を実行させる、すなわちリール演出を実行するゲームよりも前のゲームにおいて内部抽選にて所定の抽選対象役が当選したことに応じてリール演出を実行可能であるので、リール演出を実行するゲームよりも前のゲームにおいて成立した特定の条件としてART抽選が行われること、すなわち内部抽選にて所定の抽選対象役が当選することが成立することで、そのゲーム以降の動向を注目させることができる。
尚、本実施例では、リール演出を実行するゲームよりも前のゲームにおいて成立した特定の条件とは、リール演出を実行するゲームよりも前の内部抽選にて所定の抽選対象役が当選することであるが、リール演出を実行するゲームよりも前のゲームにおいて成立する条件あれば良く、例えば、リール演出を実行するゲームまでに所定数のゲームが行われたことや、リール演出を実行するゲームよりも前の複数ゲームにおいて所定の図柄の組合せが、入賞ラインLNに停止されたこと、リール演出を実行するゲームよりも前のゲームにおいて内部抽選とは独立して実行される抽選に当選したこと等であっても良い。また、特定の条件が成立してから所定ゲーム数が経過することでリール演出を実行する構成でも良いし、特定の条件が成立したゲームの後に、別の条件が成立することでリール演出を実行する構成でも良い。
また、本実施例では、ART抽選に当選した場合には、前兆期間が経過した後のゲームにおいて、ART開始演出としてリール演出を実行させる構成であり、当該リール演出として、特定の位置にリールを停止させる第1リール演出を適用しているが、当該リール演出として特定の位置にリールを停止させることがない第2リール演出を適用する構成であっても良く、このような構成であっても、内部抽選にて所定の抽選対象役が当選することが成立することで、そのゲーム以降の動向を注目させることができる。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選したゲームにおいて、ART可能性示唆演出抽選を行って、当該ART可能性示唆演出抽選に当選したときには、当該ゲームにおいてART可能性示唆演出としてリール演出を実行させることが可能であるので、所定の条件として内部抽選において所定の抽選対象役が当選したゲームの動向を注目させることができる。
尚、本実施例では、内部抽選において所定の抽選対象役が当選したことに基づいてART可能性示唆演出抽選を行い、ART可能性示唆演出抽選に当選した場合に、当該ART可能性示唆演出抽選の契機となった内部抽選が行われたゲームにおいて、ART可能性示唆演出としてリール演出を実行する構成であるが、ART可能性示唆演出としてのリール演出は、当該リール演出を行うゲームにおいて所定条件が成立したことに基づいて実行されるものあれば良く、内部抽選以外の他の条件(ART抽選の当選結果等)が成立したこと基づいて実行する構成としても良い。
また、本実施例では、ART可能性示唆演出抽選に当選した場合には、当該ART可能性示唆演出抽選に当選したゲームにおいて、ART可能性示唆演出としてリール演出を実行させる構成であり、当該リール演出として、特定の位置にリールを停止させることがない第2リール演出を適用しているが、当該リール演出として特定の位置にリールを停止させる第1リール演出を適用する構成であっても良く、このような構成であっても、内部抽選にて所定の抽選対象役が当選することが成立することで、そのゲーム以降の動向を注目させることができる。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー、スイカ、共通ベル)が当選したことに基づいて行われるART抽選に当選した場合には、前兆期間が経過した後に、ART開始演出としてリール演出を実行させることが可能であるとともに、内部抽選において所定の抽選対象役が当選したゲームにおいて、ART可能性示唆演出抽選を行って、当該ART可能性示唆演出抽選に当選したときには、当該ゲームにおいてART可能性示唆演出としてリール演出を実行させることが可能であって、ART可能性示唆演出抽選に当選したゲームにおいて、ART開始演出を実行する場合には、ART可能性示唆演出の実行を制限して、ART開始演出のみを実行するので、特定の条件として内部抽選にて所定の抽選対象役が当選したことに基づいて予めリール演出が実行されることが決まっている状況で、さらに所定の条件として内部抽選にて所定の抽選対象役が当選したこと基づくリール演出が制限されることでリール演出を実行することに伴う制御が複雑となってしまうことがない。
また、このように、本実施例のメイン制御部41は、リール制御処理において、停止制御テーブル設定処理を実行して、各リール2L、2C、2Rについて停止制御を行うための停止制御テーブルを設定する構成である。
このような構成では、複数のリールが回転している状況で一のリールの停止操作がされた場合に、当該停止操作がされたリールの停止後に、残りのリールについてさらに停止制御テーブルを設定するようにすると、一のリールの停止後、残りのリールについての停止制御テーブルの設定が間に合わなくなったり、停止操作の有効化が遅れる虞がある。
これに対して、本実施例のメイン制御部41は、リール制御処理において、有効な停止操作が検出されたときに、停止制御テーブル設定処理を実行して、未だ回転制御を行っている残りのリールについて停止制御テーブルの設定を行い、その後、全てのリールが停止していないと判定した場合に、残りのリールについて停止操作を検出するための制御を行うので、複数のリールの変動中にいずれかのリールに対応するストップスイッチが操作されたときに、該ストップスイッチに対応するリールが停止される前に他の回転制御中のリールについて停止制御テーブルを設定されて、停止制御テーブルの設定によりストップスイッチの有効かが遅れてしまうことを防止できる。
本実施例のメイン制御部41は、リール制御処理にて実行する停止制御テーブル設定処理において、未停止のリールがあるか否かを判定して、未停止のリールがある場合には、未停止のリールのうちの一のリールについて停止制御テーブルを設定する処理を、未停止の全てのリールに対して順次行うことで、3つのリール2L、2C、2Rの回転制御中にいずれかのリールに対応するストップスイッチが操作されたときには、該ストップスイッチに対応するリールが停止される前に他の2つの回転制御中のリールの停止制御テーブルを設定し、2つのリールの回転制御中にいずれかのリールに対応するストップスイッチが操作されたときには、該ストップスイッチに対応するリールが停止される前に他の1つの回転制御中のリールの停止制御テーブルを設定するので、いずれの状況においても停止制御テーブルの設定によりストップスイッチ8L、8C、8Rの有効化が遅れてしまうことを防止できる。
本実施例のメイン制御部41は、メイン処理においてリール制御処理を実行する一方で、メイン処理の実行中の定期的に割り込んでタイマ割込処理(メイン)を実行し、リール制御処理において、制御テーブル設定処理を実行して、回転制御中のリールの停止制御テーブルを設定する構成であり、制御テーブル設定処理では、タイマ割込処理(メイン)が実行されるまで待機し、タイマ割込処理(メイン)が実行される毎に、回転制御中の一のリールについて停止制御テーブルを設定する制御を繰り返し実行して、回転制御中の全てのリールの停止制御テーブルを設定するので、停止制御テーブルを設定する処理が行われる期間にタイマ割込処理(メイン)が意図せず実行されることで制御が複雑となってしまうことがない。
尚、本実施例では、メイン制御部41は、リール制御処理において実行する制御テーブル設定処理において、タイマ割込処理(メイン)が実行される毎に、回転制御中の一のリールについて停止制御テーブルを設定する制御を繰り返し実行することで、回転制御中の全てのリールについて停止制御テーブルを設定する処理を、回転制御中の一のリール毎に分割して実行する構成であるが、タイマ割込処理(メイン)が実行される時間間隔未満の時間で一の処理が完了するように、回転制御中の全てのリールについて停止制御テーブルを設定する処理を複数個に分割する構成であれば良く、例えば、回転制御中の一のリールについて停止制御テーブルを設定する処理を複数段階に分けて、一の段階が終了する毎に、タイマ割込処理(メイン)を実行させた後、次段階の処理を実行する制御を繰り返し行うことで、回転制御中の全てのリールについて停止制御テーブルを設定する構成であっても良い。このような構成においても、停止制御テーブル設定処理が行われる期間において意図しないタイミングでタイマ割込処理(メイン)が実行されることで制御が複雑となってしまうことがない。
本実施例のメイン制御部41は、内部抽選において所定の抽選対象役(本実施例では、強チェリー、弱チェリー)が当選した場合に、フリーズ抽選を行い、当該フリーズ抽選にて停止フリーズが当選した場合には、複数のリールの回転制御中にいずれかのリールに対応するストップスイッチが操作されたときに、他の回転制御中のリールに対応するストップスイッチの有効化を遅延させる遅延処理を実行することが可能であり、リール制御処理において、有効なストップスイッチによる停止操作が検出されたときに、当該停止操作に対応するリールを停止させる制御を行い、回転制御中の他のリールについて停止制御テーブル設定処理を行った後に、遅延処理を実行する、すなわちフリーズ抽選に当選したことに基づいて遅延処理を実行する場合には、該遅延処理を開始する前に他の回転制御中のリールの停止制御テーブルを設定するので、遅延処理の終了後、速やかにストップスイッチの操作を有効化できる。
次に、メイン制御部41が所定の間隔で起動処理やゲーム処理に割り込んで実行するタイマ割込処理(メイン)について、図21に基づいて説明する。
図21に示すように、タイマ割込処理(メイン)では、まず、タイマ割込を禁止に設定し(Sf1)、使用中のレジスタをスタック領域に退避させる(Sf2)。尚、タイマ割込処理(メイン)の実行期間中は自動的に他の割込が禁止されるようになっており、Sf1のステップによりプログラムの実行によっても他の割込が禁止されることで、2重に他の割込が禁止にされることとなり、これにより、タイマ割込処理(メイン)の実行中に、重複して他の割込が実行されてしまうことを回避できる。
Sf2のステップにおいてレジスタを退避させた後は、停電判定処理を実行する(Sf3)。停電判定処理では、電断検出回路48から電圧低下信号が入力されているか否かを判定し、電圧低下信号が入力されていれば、前回の停電判定処理でも電圧低下信号が入力されていたか否かを判定し、前回の停電判定処理でも電圧低下信号が入力されていた場合には停電と判定し、その旨を示す電断フラグを設定する。
Sf3のステップにおける停電判定処理の後、電断フラグが設定されているか否かを判定し(Sf4)、電断フラグが設定されていなければ、Sf5に進み、電断フラグが設定されていた場合には、電断処理(メイン)を実行する。電断処理(メイン)では、破壊診断用データ(本実施例では、5A(H))をセットする処理、全ての出力ポートを初期化する処理、RAM41cの全ての格納領域(未使用領域及び未使用スタック領域を含む)の排他的論理和が0になるようにRAMパリティ調整用データを計算してセットし、RAM41cへのアクセスを禁止する処理等を実行した後、電圧が低下してCPU41aが停止するまで待機する。
Sf4のステップにおいて電断フラグが設定されていないと判断した場合には、入力ポートから各種スイッチ類の検出データを入力するポート入力処理(Sf5)、スイッチ類の検出状態に変化があったか否かの判定、操作検出コマンドの送信要求等を行うスイッチ入力判定処理(Sf21)を実行する。
次いで、4種類のタイマ割込1〜4から当該タイマ割込処理(メイン)において実行すべきタイマ割込を識別するための分岐用カウンタを1進めるように更新する(Sf7)。Sf7のステップでは、分岐用カウンタ値が0〜2の場合に1が加算され、カウンタ値が3の場合に0に更新される。すなわち分岐用カウンタ値は、タイマ割込処理(メイン)が実行される毎に、0→1→2→3→0・・・の順番でループする。そして、分岐用カウンタの値は、タイマ割込処理(メイン)において実行される各処理において参照され、例えば、分岐用カウンタが所定値となったときに所定の制御を実行する等、各処理内の制御が分岐されることとなる。
Sf7のステップにおいてタイマ割込の分岐用カウンタを更新した後は、各種時間カウンタを更新する時間カウンタ更新処理(Sf8)、各種LED等の表示器をダイナミック点灯させるための点灯信号を設定して送信等を行うLEDダイナミック表示処理(Sf9)、外部出力信号の出力設定を更新して送信等する外部出力信号更新処理(Sf10)、コマンドキューに設定されたドアコマンドや操作終了コマンド等の各種コマンドを送信させる等を行うコマンド送信処理(Sf11)、を順次実行する。
その後、ゲームの進行状況等に応じて各リールモータ32L、32C、32Rの励磁パターンの設定等を行ってリールの回転を制御するリール回転制御処理を実行する(Sf12)。リール回転制御処理では、ゲームの進行状況等に応じて上述のメイン処理のリール制御処理において設定された加速要求等の各種要求に基づいて、ROM41bの特定の領域のアドレスを指定する。当該ROM41bの特定の領域のアドレスには、リールの制御態様(加速、リール演出後加速、定速回転、停止、微振動等)に応じてリールモータの励磁相(φ1、φ2、φ3、φ4)を順次励磁するための励磁パターン及び励磁パターンの更新タイミングが記憶されている。そして、後述するリールステップ数等更新処理により更新されるリールステップ数カウンタ及び図柄ステップ数カウンタに基づいて当該更新タイミングとなったことが特定されるときに、指定する特定の領域のアドレスをRAM41cの所定領域に設定する。当該リール回転制御処理により指定されて設定されたアドレスから特定される励磁パターンが後述するモータ位相信号出力制御において参照されて、当該励磁パターンに応じた駆動信号が各リールモータ32L、32C、32Rに出力されることで、各リールモータ32L、32C、32Rが所定の制御態様で回転、停止等されることとなる。例えば、上述のリール回転停止処理にてRAM41cの所定領域に停止要求が設定されている場合には、当該停止要求が設定されていることに基づいて、RAM41cの所定領域を参照して、該当するリールを停止させる際の滑りコマ数を特定する。そして、当該滑りコマ数に基づいて所定の停止位置(本実施例では、リールの中段の位置)に停止させる図柄の図柄番号を特定し、図柄番号カウンタの値が当該図柄番号となり、かつ図柄ステップ数カウンタの値が所定の全相励磁制御の開始ステップ(本実施例では、各図柄共に12ステップ目)となったときに、停止要求に応じて指定する特定の領域のアドレスをRAM41cの所定領域に設定する。その後、当該アドレスがモータ位相信号出力制御において参照され、当該アドレスから特定される励磁パターンに応じた駆動信号が該当するリールモータに出力されることで、当該リールモータが停止されることとなる。
また、リール回転制御処理では、後述するリールステップ数等更新処理を実行することで、RAM41cの所定領域に設定されているリールステップ数カウンタ(各リール2L、2C、2Rについて、そのタイマ割込時点でのリール基準位置からのステップ数を計数するカウンタであり、本実施例では、0〜400ステップを計数可能であり、リールが1周するために要する336ステップよりも大きな値に設定されている。)、図柄ステップ数カウンタ(後述する判定位置におけるそのタイマ割込時点での図柄ステップを計数するカウンタであり、本実施例では、0〜16ステップを計数可能であり、リールの1図柄当たりのステップ数(本実施例では16ステップ)よりも大きな値に設定されている。)、図柄番号カウンタ(そのタイマ割込時点で入賞ラインLN上に位置する図柄の図柄番号を計数するカウンタ)をそれぞれ更新する処理を実行するとともに、リールの回転状態が定速状態であるか否かを特定可能なリール速度状態フラグをRAM41cの所定領域に設定する。
Sf12のステップにおいてリール回転制御処理を実行した後は、ソレノイド駆動回路46に対して制御信号を送信する等の処理を行うポート出力処理、(Sf13)、上述のSf12のステップのリール回転制御処理において指定された励磁パターンで各リールモータの各励磁相を励磁するためのモータ位相信号を各リールモータ32L、32C、32に対して出力するモータ位相信号出力処理を実行する(Sf14)。
その後、Sf2のステップにおいて退避させたレジスタを、タイマ割込処理(メイン)の開始時の状態に復帰させ(Sf15)、タイマ割込を許可に設定して(Sf16)、タイマ割込処理(メイン)を終了させて、当該タイマ割込処理(メイン)が開始されたときのメイン処理に復帰させる。
次に、メイン制御部41がタイマ割込処理(メイン)のリール回転制御処理内で実行する処理の1つであるリールステップ数等更新処理について、図22に基づいて説明する。
メイン制御部41は、上述のタイマ割込処理(メイン)において、リール回転処理により各リールモータ32L、32C、32Rの回転を開始させた後、励磁パターンに応じて定められた所定の更新タイミング(例えば、リールが定速回転されているときは、タイマ割込が1回実行される毎、リールが加速制御されているときは、加速状況に応じてタイマ割込が所定回数実行される毎等)となる毎に、各リール2L、2C、2Rについて、リールステップ数等更新処理を実行して、リールステップ数カウンタ、図柄ステップ数カウンタ、図柄番号カウンタを更新する。
図22に示すように、リールステップ数等更新処理では、まず、一のリール(本実施例では、左リール)のリールステップ数カウンタ及び図柄ステップ数カウンタにそれぞれ1加算した後(Sg1、Sg2)、当該図柄ステップ数カウンタの値が図柄ステップ数が1巡りしたこととなる16に達しているか否かを判定する(Sg3)。
Sg3のステップにおいて図柄ステップ数カウンタの値が16に達していると判定した場合は、当該図柄ステップ数カウンタを初期化して0に設定し(Sg4)、左リールの図柄番号カウンタに1加算する(Sg5)。その後、当該図柄番号カウンタの値が1リール当たりの図柄の総数である21に達したか否か、すなわち左リールが1周したか否かを判定し(Sg6)、図柄番号カウンタの値が21に達している場合には、当該図柄番号カウンタを初期化して0に設定する(Sg7)。
そして、Sg7のステップにおいて左リールの図柄番号カウンタを初期化した場合、または、Sg6のステップにおいて左リールの図柄番号カウンタが21に達していないと判定した場合、Sg3のステップにおいて左リールの図柄ステップ数カウンタが16に達していないと判定した場合は、左リールのリールセンサ33Lによりリール基準位置が検出されたか否かを判定し(Sg8)、Sg8のステップにおいてリール基準位置が検出されたと判定した場合は、左リールのステップ数カウンタがリールが1周したこととなる336に達しているか否か(Sg9)、当該左リールの図柄ステップ数カウンタが1巡りして初期化されて0であるか否か(Sg10)、当該左リールの図柄番号カウンタが1巡りして初期化されて0であるか否か(Sg11)を順次判定する。
そして、Sg9のステップにおいてステップ数カウンタが336に達しており、Sg10のステップにおいて図柄ステップ数カウンタが0であり、Sg11のステップにおいて図柄番号カウンタが0であると判定された場合には、左リールのリールモータ32Lが定速状態に対応する励磁パターンで励磁されているか否か、すなわち左リールが定速状態であるか否かを判定し(Sg12)、Sg12のステップにおいて、励磁パターンが定速状態に対応するものであると判定した場合は、RAM41cの所定領域に設定されており、左リールの速度状態を特定可能なリール速度状態フラグを、当該リールが定速状態である旨を特定可能な値に更新する(Sg14)。
一方で、Sg9のステップにおいてステップ数カウンタが336に達していないと判定した場合、Sg10のステップにおいて図柄ステップ数カウンタが0でないと判定した場合、Sg11のステップにおいて図柄番号カウンタが0でないと判定された場合には、リールが1周して、リール基準位置が検出されたにも関わらず図柄ステップ数または図柄番号が1巡りしていないこと、またはリール基準位置が検出されていないにも関わらず、リールが1周するために要するステップ数を超えたステップ数がリールステップ数により計数されていることから、各カウンタによる各ステップ数の計数値と実際のリールの回転状況とに不整合が生じており、左リールの回転に異常が発生している可能性があるので、当該リールの回転に異常が発生している旨を特定可能な回転異常フラグをRAM41cに設定する(Sg16)。その後、左リールの図柄ステップ数カウンタ、図柄番号カウンタを初期化して0に設定する(Sg17、Sg18)。
そして、Sg12のステップにおいて励磁パターンが定速状態に対応するものでないと判定した場合、またはSg18のステップにおいて図柄番号カウンタを初期化した後には、リール速度状態フラグを左リールが非定速状態である旨を特定可能な値に更新する(Sg19)。
Sg13のステップまたはSg19のステップにおいてリール速度状態フラグを更新した後は、左リールのリールステップ数カウンタを初期化して0に設定し(Sg14)、左リールについてのリールステップ数等更新処理を終了させる。その後は、中右リールについてもリールステップ数等更新処理を実行することで、リールステップ数カウンタ、図柄ステップ数カウンタ、図柄番号カウンタを更新する。
このように、リールステップ数等更新処理では、リールステップ数カウンタを、各リールモータ32L、32C、32Rの励磁パターンが更新される毎に、1加算するとともに、リールセンサ33L、33C、33Rによりリール基準位置が検出される毎に、初期化するとで、リール基準位置が検出されるときのリールのステップ数を0ステップ(1ステップ目)として、リールモータの励磁パターンの更新に対応して336ステップをリールステップ数として計数する。
また、図柄ステップ数カウンタを、各リールモータ32L、32C、32Rの励磁パターンが更新される毎に、1加算するとともに、当該加算により16ステップに達したとき、及び、リールセンサ33L、33C、33Rによりリール基準位置が検出されたときに、0以外の値である場合に、初期化する、すなわちリール基準位置が検出されるとき(図柄番号0の図柄の領域の下端が基準位置にあるとき)のリールモータのステップ数を0ステップ(1ステップ目)として16ステップ毎に当該図柄ステップ数カウンタを初期化することで、各図柄について最下端を領域の0ステップ(1ステップ目)として、リールモータの励磁パターンの更新に対応して16ステップを図柄ステップ数として計数する。
また、図柄番号カウンタを、図柄ステップ数カウンタが初期化される毎に、1加算するとともに、当該加算により21に達したとき、及び、リールセンサ33L、33C、33Rによりリール基準位置が検出されたときに、0以外の値である場合に、初期化する、すなわちリール基準位置が検出されるとき(図柄番号0の図柄が基準位置にあるとき)の図柄番号を0として21図柄毎に当該図柄番号カウンタを初期化することで、各リールについて図柄番号0の図柄が基準位置を通過しているときの図柄番号カウンタの値を0として、リールモータの励磁パターンの更新に対応して図柄番号を計数する。
これらにより、リールセンサ33L、33C、33Rによりリール基準位置が検出されるときには、リールステップ数カウンタ、図柄ステップ数カウンタ、図柄番号カウンタの各カウンタは初期値となり、リール基準位置からのリールモータのステップ数に応じて、リールステップ数、図柄ステップ数、図柄番号が計数されるようになっている。
以上のように、本実施例のメイン制御部41は、回転制御中のリールについて有効なストップスイッチの操作が検出された場合に、メイン処理のリール回転停止処理において、タイマ割込処理(メイン)のリールステップ数等更新処理により更新されるリールの図柄ステップ数カウンタに基づいて、停止操作位置となる図柄番号を取得し、該当するリールを停止させる制御を行う。そして、リール回転停止処理において停止操作位置となる図柄番号を取得する際には、図柄ステップ数カウンタの値が判定範囲(本実施例では、0〜11ステップ)にあって非判定範囲(本実施例では、12〜15ステップの4ステップ)にないこと、すなわち、図柄ステップ数カウンタの値が予め定められた特定の範囲内にないことを条件として図柄番号を取得する、すなわち図柄ステップ数カウンタの値が特定の範囲にない場合は、その時の図柄番号を取得する一方で、図柄ステップ数カウンタの値が特定の範囲にある場合は、当該図柄ステップ数カウンタの値が、特定の範囲外となることを待って、図柄ステップ数カウンタの値が特定の範囲外となったときに図柄番号を取得するようになっている。
メイン制御部41が図柄番号を取得することがない図柄ステップ数は、リールモータを全相励磁して停止させる際に、該当するリールについて全相励磁の制御を開始した後、当該リールのリールモータのロータが停止するまでに慣性力により回転するステップ数以上のステップ数であり、本実施例では、当該特定の範囲を図柄ステップ数カウンタの12〜15の4ステップの範囲とする構成である。
詳しくは、図23(a)に示すように、透視窓3における各リール2L、2C、2Rの中段に対応する領域の最上端の位置を判定位置として、当該判定位置に位置する図柄について図柄ステップ数を図柄ステップ数カウンタにより計数し、また、当該判定位置に位置する図柄の図柄番号を図柄番号カウンタにより計数し、ストップスイッチが操作された際に、当該図柄ステップ数カウンタの値が非判定範囲である特定の範囲内(本実施例では、12〜15ステップ)になく判定範囲にある場合には、その際の図柄番号カウンタの値を停止操作位置となる図柄番号として取得する。一方、図23(b)に示すように、ストップスイッチが操作された際に、当該図柄ステップ数カウンタの値が非判定範囲である特定の範囲内(本実施例では、12〜15ステップ)にある場合には、その際の図柄番号カウンタの値を停止操作位置として取得せず、判定位置の図柄ステップ数が特定の範囲外(本実施例では、0〜11ステップ)となるまで待機して、その後、リールがさらに回転されることで、判定位置を通過する図柄が次の図柄となり、図柄番号カウンタが更新されるとともに、図柄ステップ数カウンタの値が特定の範囲外(本実施例では、0〜11ステップ)となって判定範囲内の値(本実施例では、0ステップ)となったときに、そのときの図柄番号カウンタの値を停止操作位置となる図柄番号として取得する。
上述のように、本実施例では、リールモータが全相励磁停止制御を開始されてから慣性力で4ステップ分回転して停止することになるので、判定位置(図23(a)(b)参照)を通過する図柄についての図柄ステップ数カウンタの値が非判定範囲内すなわち特定の範囲内にあるときに、全相励磁停止制御を開始して当該リールモータを停止させようとする場合には、全相励磁停止制御を開始するときの図柄番号カウンタの値に基づいて特定される図柄を、リールの中段の位置に滑りコマ数0で停止させることができない。例えば、図23(b)に示すように、図柄番号カウンタの値が10であり、図柄ステップ数カウンタの値が12〜15であり、判定位置での図柄ステップ数が13〜16ステップ目であるときに、停止操作が行われた場合に、仮に、当該図柄ステップ数の範囲内のいずれかのタイミングで全相励磁停止制御を開始することとすると、図柄ステップ数カウンタの値が15を跨いで0以降となる位置、すなわち図柄番号11の図柄の領域の少なくとも一部がリールの中段の領域に跨る位置で、当該リールが停止することとなり、当該停止操作が行われたときの図柄番号カウンタの値に基づいて特定される図柄番号10の図柄をリールの中段の位置に停止させることができない。すなわち、停止操作が行われたときの図柄番号カウンタの値に基づいて特定される図柄番号の図柄に対して少なくとも1コマを滑りコマ数として、当該図柄番号以外の図柄がリールの中段の位置に停止させることとなる。
一方、判定位置(図23(a)(b)参照)を通過する図柄についての図柄ステップ数カウンタの値が判定範囲内すなわち特定の範囲外にあるときに、全相励磁停止制御を開始して当該リールモータを停止させようとする場合には、全相励磁停止制御を開始するときの図柄番号カウンタの値に基づいて特定される図柄を、リールの中段の位置に滑りコマ数0で停止させることができる。例えば、図23(a)に示すように、図柄番号カウンタの値が10であり、図柄ステップ数カウンタの値が0〜11であり、判定位置での図柄ステップ数が1〜12ステップ目であるときに、停止操作が行われた場合には、図柄ステップ数カウンタの値が11となるとき、すなわち停止位置での図柄ステップ数が1図柄の図柄ステップ数の最終値であるときに、全相励磁停止制御を開始することで、図柄ステップ数カウンタの値が15となる位置、すなわち図柄番号が10の図柄をリールの中段の位置で、当該リールを停止させることができる。すなわち、停止操作が行われたときの図柄番号カウンタの値に基づいて特定される図柄番号の図柄を滑りコマ数0でリールの中段の位置に停止させることができる。
このように、図柄ステップ数カウンタの値が判定範囲内すなわち特定の範囲外にあるときに取得された図柄番号を停止操作位置とすることで、当該図柄番号に基づいてリールの中段の位置に停止させることができる図柄を特定する際に、図柄ステップ数がいずれの範囲にあるときに当該図柄番号が取得されたか、すなわち当該図柄番号の図柄をリールの中段の位置に停止させることが可能であるか否かを考慮することなく、当該図柄番号をリールの停止位置の特定に用いることができる。
従来のスロットマシンでは、リールモータとしてステッピングモータを用いて、リールを回転、停止させることが可能であり、リールに配置された図柄毎に割り当てられた図柄ステップ数を計数し、当該図柄ステップ数に基づいて図柄番号を更新するとともに、リールの停止操作がされたときの図柄番号に応じて滑りコマ数を決定する構成であり、停止操作が検出されてからすぐにリールを停止させることはできないことから、停止操作が検出されたときの図柄ステップ数が当該図柄では停止することのできない一定の範囲のステップ数である場合には、リールの停止操作がされたときの図柄番号に1加算した値を停止操作が検出されたときの図柄番号として取得するようになっている。
このような構成では、停止操作が検出されたときの図柄ステップ数に応じて、停止操作が検出されたときの図柄番号に1加算して図柄番号を取得する必要があり、停止操作がされたときの図柄番号を特定するために余計な処理が必要となってしまうこととなる。
これに対して、本実施例のスロットマシン1は、リールモータ32L、32C、32Rとしてステッピングモータを備え、リール2L、2C、2Rを回転、停止させることが可能な構成であり、スロットマシン1のメイン制御部41は、ステッピングモータの励磁状態を変化させるための励磁パターンに応じて定められた所定の更新タイミング毎に更新される図柄ステップ数カウンタ(またはリールステップ数カウンタ)と、当該図柄ステップ数カウンタによりリールの1図柄あたりに割り当てられた所定のステップ数(本実施例では、16ステップ)が計数される毎に更新される図柄番号カウンタと、を備えており、有効なリールの停止操作が行われた際に、図柄番号カウンタから取得した図柄番号に基づいて当該停止操作に対応する停止位置を特定し、当該停止位置で該当するリールを停止させるリール回転停止処理を実行する構成であり、リール回転停止処理では、図柄ステップ数カウンタの値が特定の範囲(本実施例では、12〜15の範囲)であるときには、図柄番号を取得せず、特定の範囲外となったとき(本実施例では、0となったとき)に、図柄番号カウンタの値を図柄番号として取得するので、リールの停止操作がされたときの図柄ステップ数に応じて図柄番号を特定するために余計な処理、例えば、図柄ステップ数カウンタの値が特定の範囲である場合に、図柄番号カウンタの値を1加算した値を図柄番号として取得する処理等を、行うことなく簡素な手順で図柄番号を取得することができる。
尚、本実施例では、リールモータ32L、32C、32Rを用いて、外周面に複数の図柄が配置されたリール2L、2C、2Rを回転させることで、遊技者から視認可能な複数の図柄を移動させる変動表示を行うことが可能な構成であるが、複数の図柄を移動させる変動表示を行う手段は、リール以外であっても良く、例えば、外周面に複数の図柄が配置されたベルトを移動させることで変動表示を行うことが可能な構成等であっても良い。
また、本実施例では、メイン制御部41は、ステッピングモータの励磁状態を変化させるための励磁パターンに応じて定められた所定の更新タイミング毎に、リールステップ数等更新処理を実行して、図柄ステップ数カウンタを更新し、当該図柄ステップ数カウンタにより、リールの1図柄あたりに割り当てられた所定のステップ数(本実施例では、16ステップ)が計数される毎に図柄番号カウンタを更新する構成であるが、ステッピングモータの励磁状態を変化させるための励磁パターンに応じて定められた所定の更新タイミング毎に更新され、リールの基準位置からのステップ数を計数するためのリールステップ数カウンタにより、リールの1図柄あたりに割り当てられた所定のステップ数(本実施例では、16ステップ)が計数される毎に図柄番号カウンタを更新する構成であっても良い。
本実施例のメイン制御部41は、リール回転停止処理において、図柄ステップ数カウンタの値が特定の範囲内(本実施例では、12〜15の4ステップの範囲内)にある場合には、図柄番号カウンタから図柄番号を取得しない構成であり、当該特定の範囲は、図柄ステップ数カウンタの値が当該範囲内にあるときに図柄番号カウンタに基づいて特定される図柄番号の図柄を、所定の停止位置に停止させることができなくなる範囲であるので、停止操作された際に、リール回転停止処理において取得した図柄番号を用いることで、当該図柄番号により特定される図柄を停止位置に停止できなくなるというようなことがないため、取得した図柄番号を補正する処理をせずに済む。
尚、本実施例では、メイン制御部41は、リール回転停止処理において、図柄ステップ数カウンタの値が特定の範囲(本実施例では、12〜15の範囲)であるときには、図柄番号を取得せず、特定の範囲外となったとき(本実施例では、0となったとき)に、図柄番号カウンタの値を図柄番号として取得する構成であるが、メイン制御部41は、リール回転停止処理において、図柄ステップ数カウンタの値が少なくとも特定の範囲外であるときに図柄番号カウンタの値を図柄番号として取得する構成であれば良く、図柄ステップ数カウンタの値が特定の範囲外の範囲うちの特定の値(例えば、0〜11のうちの11)となったときに、図柄番号カウンタの値を図柄番号として取得する構成であっても良い。このような構成では、停止操作に応じて図柄番号を取得するにあたり、図柄ステップ数が特定の値であるときに図柄番号カウンタの値を図柄番号として取得するので、リールの停止操作がされたときの図柄ステップ数に応じて図柄番号を特定するために余計な処理、例えば、図柄ステップ数カウンタの値が所定の範囲である場合に、図柄番号カウンタを1加算した値を図柄番号として取得する処理等を行うことなく、簡素な手順で図柄番号を取得することができる。
また、このような構成では、図柄ステップ数カウンタの値が特定の範囲外の範囲うちの特定の値は、次回図柄ステップ数カウンタが更新されると現在の図柄番号カウンタから特定される図柄番号の図柄の領域でリールを停止させることができなくなる図柄ステップ数、すなわち、図柄番号カウンタに基づいて特定される図柄番号の図柄を所定の停止位置に停止させることができる図柄ステップ数の範囲内の値のうち最後に更新される値、とすることで、図柄ステップ数カウンタの値が特定の範囲外から特定の範囲内の値に更新される1ステップ前の特定の値となったときに図柄番号カウンタから図柄番号を取得するので、図柄ステップ数カウンタの値が一の特定の範囲外にあるときに、その時点での図柄番号カウンタから図柄番号を取得せずに、図柄ステップ数カウンタが次の特定の範囲外となるまで待って次の図柄番号を取得するようなことがなく、停止操作されたタイミングと停止する図柄の領域とが大きくずれてしまうことを防止できる。
本実施例のメイン制御部41は、リールの停止操作された際に図柄ステップ数カウンタに基づいて図柄番号を特定する構成であり、リール回転制御処理において、リールステップ数等更新処理で更新される図柄ステップ数カウンタに基づいて、リールを停止させるための駆動信号を出力するか否か判定し、図柄ステップ数カウンタに基づいてリールモータの励磁パターンの更新タイミングとなったことが特定されるときに、停止操作が行われたリールを停止させるための駆動信号を出力するので、停止操作がされた際に図柄番号を特定する場合も、リールモータを停止させるための駆動信号を出力するか否か判定する場合も、共通のリールステップ数等更新処理により更新される図柄ステップ数が用いられるため、当該処理に用いるステップ数を更新する処理及び当該ステップ数を格納する領域を削減することができる。
尚、本実施例では、メイン制御部41は、図柄ステップ数カウンタに基づいて図柄番号を特定し、図柄ステップ数カウンタに基づいてリールモータの駆動信号を出力するか否か判定する構成であるが、リールステップ数等更新処理により更新されるリールステップ数カウンタに基づいて図柄番号を特定するとともに、リールモータの駆動信号を出力するか否か判定する構成であっても良い。このような構成であっても、本実施例の構成と同様に、停止操作がされた際に図柄番号を特定する場合も、リールモータを停止させるための駆動信号を出力するか否か判定する場合も、共通のリールステップ数等更新処理により更新されるリールステップ数を用いることで、当該処理に用いるステップ数を更新する処理及び当該ステップ数を格納する領域を削減することができる。
本実施例のメイン制御部41は、リール2L、2C、2Rそれぞれに対して、リール基準位置を検出するリールセンサ33L、33C、33Rを備えており、リールステップ数等更新処理において、当該リールセンサ33L、33C、33Rによりリール基準位置が検出されたことに応じて図柄ステップ数カウンタを初期値に設定するので、リール2L、2C、2Rの実際の位置とリールステップ数等更新処理により更新される図柄ステップ数カウンタの値とを整合させることができる。
また、本実施例では、メイン制御部41は、リールステップ数等更新処理において、当該リールセンサ33L、33C、33Rによりリール基準位置が検出されたことに応じてリールステップ数カウンタを初期値に設定するので、リール2L、2C、2Rの実際の位置とリールステップ数等更新処理により更新されるリールステップ数カウンタの値とを整合させることができる。
本実施例のメイン制御部41は、異常が生じた可能性のある特定事象として投入払出エラー、ドア開放検出スイッチ25の出力状態の変化、リール回転エラーが発生したか否かを判定する投入払出エラーチェック処理、ドア開放チェック処理、回転エラーチェック処理を実行可能であり、リール制御処理において、少なくとも、有効なストップスイッチ8L、8C、8Rの操作が検出された後、リール回転停止処理において図柄番号カウンタの値が取得されるまでの期間において、特定事象が発生したか否かを判定しないので、停止操作がされた後、図柄番号カウンタの値が取得されるまでの処理負荷を軽減することができる。
本実施例では、メイン制御部41は、メイン処理と当該メイン処理に所定時間間隔毎に割込で各種処理を行うタイマ割込処理(メイン)を実行可能であり、タイマ割込処理(メイン)においてリール2L、2C、2Rを回転させるための処理を実行する一方、メイン処理において、回転制御を行っている全てのリールが定速で回転している状態であると判定したことを条件に、停止操作の受付を有効化する処理を実行する構成である。
このような構成では、メイン処理において停止操作の受付を有効化するか否かの判定中にタイマ割込処理(メイン)が実行されると、当該判定に用いられるリールの回転状態が変わってしまう可能性があり、正確な判定を行えない虞がある。
これに対して、本実施例のメイン制御部41は、メイン処理においてリール制御処理を実行して、回転制御中のリールの速度状態が定速状態であると判定したことを条件に、停止操作の受付を有効化する処理を実行する一方、タイマ割込処理(メイン)においてリール回転制御処理及びモータ位相信号出力処理を実行して、リールモータ32L、32C、32Rを回転、停止させるための駆動信号を出力する構成であり、タイマ割込処理(メイン)では、リールステップ数等更新処理を実行して、回転制御中のリールについて速度状態が定速状態であるか否かを特定可能なリール速度状態フラグを設定し、メイン処理では、タイマ割込を禁止に設定した後、タイマ割込が禁止に設定されている状態で、少なくとも一のリールについてリール速度状態フラグを取得し、当該リール速度状態フラグに基づいてリールが定速状態であることが特定されることを条件に、リールの停止操作の受付を有効化するので、メイン処理においてリール速度状態フラグを取得する処理中にタイマ割込が実行され、リール速度状態フラグの設定が変更されてしまうことがないため、停止操作の受付を有効化するか否かの判定を正確に行うことができる。
本実施例のメイン制御部41は、リール2L、2C、2Rそれぞれに対して、リール基準位置を検出するリールセンサ33L、33C、33Rを備えており、タイマ割込処理(メイン)において、リールモータ32L、32C、32Rの駆動信号が出力される毎に実行するリールステップ数等更新処理において、図柄ステップ数カウンタ及びリールステップ数カウンタを更新する構成であり、リールステップ数等更新処理において、リールセンサ33L、33C、33Rによりリール基準位置が検出されたときに、リールステップ数カウンタの値及び図柄ステップ数カウンタの値が正常であるか否かを判定し、リールステップ数カウンタの値及び図柄ステップ数カウンタの値が正常な値(本実施例では、リールステップ数カウンタは、336ステップ、図柄ステップ数カウンタは、0ステップ)であると判定した場合に、リール速度状態フラグを該当するリールの速度状態が定速状態である旨を特定可能に更新するので、リールステップ数カウンタまたは図柄ステップ数カウンタに基づいて特定されるリールの位置と実際のリールの位置とがずれた状態で、停止操作の受付が有効化されてしまうことを防止できる。
本実施例のメイン制御部41は、リール2L、2C、2Rそれぞれに対して、リール基準位置を検出するリールセンサ33L、33C、33Rを備えており、タイマ割込処理(メイン)において、リールモータ32L、32C、32Rの駆動信号が出力される毎に実行するリールステップ数等更新処理において、図柄ステップ数カウンタ及びリールステップ数カウンタを更新する構成であり、リールステップ数等更新処理において、リールセンサ33L、33C、33Rによりリール基準位置が検出されたときに、リールステップ数カウンタの値及び図柄ステップ数カウンタの値が正常であるか否かを判定し、リールステップ数カウンタの値または図柄ステップ数カウンタの値の少なくともいずれか一方が正常な値(本実施例では、リールステップ数カウンタは、336ステップ、図柄ステップ数カウンタは、0ステップ)でないと判定した場合に、リール速度状態フラグを該当するリールの速度状態が定速状態でない旨を特定可能に更新するので、一度、リール速度状態フラグが定速状態を特定可能に設定された後も、リールステップ数カウンタまたは図柄ステップ数カウンタに基づいて特定されるリールの位置と実際のリールの位置とがずれた場合には、停止操作が有効に受け付けられてしまうことを防止できる。
尚、本実施例では、リール基準位置が検出されたときに、リールステップ数カウンタの値及び図柄ステップ数カウンタの値が正常であるか否かを判定し、少なくともいずれか一方のカウンタの値が正常な値でないと判定した場合に、リール速度状態フラグを速度状態が定速状態でない旨を特定可能に更新する構成であるが、リールステップ数カウンタ、図柄ステップ数カウンタのいずれか一方のカウンタについてのみ、その値が正常であるか否かを判定し、その値が正常な値でないと判定した場合に、リール速度状態フラグを速度状態が定速状態でない旨を特定可能に更新する構成であっても良い。このような構成であっても、本実施例の構成と同様の作用効果を奏する。
本実施例のメイン制御部41は、メイン処理のリール制御処理において、タイマ割込を禁止に設定し、当該タイマ割込が禁止の状態で、回転制御中の全てのリールについてリール速度状態フラグを参照して、回転制御中の全てのリールが定速回転で回転されているか否かを判定し、回転制御中の全てのリールが定速回転で回転していることを条件に、停止操作の受付を有効化する、すなわち回転制御中のリールが複数であっても全てのリールについてリール速度状態フラグを参照する処理を実行する期間にわたりタイマ割込の実行を禁止するので、タイマ割込の実行の禁止を効率的に行うことができる。
本実施例のメイン制御部41は、メイン処理のリール制御処理において、タイマ割込を禁止に設定し、当該タイマ割込が禁止の状態で、回転制御中の全てのリールについてリール速度状態フラグを参照する処理を行った後、当該タイマ割込が禁止の状態を維持して、当該リール速度状態フラグに基づいてリールが定速状態で回転されているか否かを判定する処理を行うので、リール速度状態フラグを参照する処理中だけでなく、参照したリール速度状態フラグに基づいてリールが定速状態か否かを判定する処理中もタイマ割込の実行が禁止され、リール速度状態フラグが変更されてしまうことがないため、停止操作の受付を有効化するか否かの判定を正確に行うことができる。
本実施例のメイン制御部41は、メイン処理のリール回転停止処理において、タイマ割込を禁止に設定し、当該タイマ割込が禁止の状態で、タイマ割込処理(メイン)のリールステップ数等更新処理により更新される図柄ステップ数カウンタの値を取得するので、図柄ステップ数カウンタの値を取得する処理中にタイマ割込が実行され、図柄ステップ数カウンタが変更されてしまうことを防止できる。
本実施例では、メイン制御部41は、メイン処理と当該メイン処理に所定時間間隔毎に割込で各種処理を行うタイマ割込処理(メイン)を実行可能であり、タイマ割込処理(メイン)においてリールステップ数カウンタ、図柄ステップ数カウンタ、図柄番号カウンタ等のリールの位置に関する情報を更新する一方、メイン処理において、停止操作が行われたときのリールの位置を特定する構成である。
このような構成では、メイン処理において、停止操作が行われたときのリールの位置を特定する処理の実行中に、タイマ割込が実行されると、リールの位置を特定する際に用いられるリールの位置に関する情報が更新されて変わってしまう可能性があり、停止操作がされたときのリールの位置を正確に特定できない虞がある。
これに対して、本実施例のメイン制御部41は、タイマ割込処理(メイン)のリール回転制御処理において、リールモータ32L、32C、32Rを回転、停止させるための駆動信号を出力する処理を実行し、当該駆動信号によりリールモータの励磁状態を変化させる毎に、リールステップ数等更新処理を実行して、図柄番号カウンタ等のリールの位置に関する情報を更新する一方、メイン処理のリール制御処理において、リールの停止操作が行われたときに、タイマ割込を禁止に設定した状態で、リールの位置に関する情報の少なくとも1つを参照して、当該リールの位置に関する情報に基づいて、停止操作が行われたリールを停止させる停止位置を特定するので、リールの位置に関する情報を参照する処理中にタイマ割込が実行され、リールの位置に関する情報が変更されてしまうことがないため、停止操作がされたときのリールの位置を正確に特定することができる。
尚、本実施例では、リールの位置に関する情報として、図柄番号、すなわちリールの図柄の領域を特定可能な情報を用いる構成であるが、リールの位置に関する情報として、リールモータの駆動信号の出力に応じて毎に更新されるリールステップ数や、図柄ステップ数を用いる構成であっても良い。
また、本実施例では、リールステップ数カウンタ、図柄ステップ数カウンタ、図柄番号カウンタが、0を起点として割り当てられた値をカウントする構成であるが、0以外の値(例えば1)を起点として割り当てられた値をカウントする構成としても良い。また、起点となる値に加算することでリールステップ数、図柄ステップ数、図柄番号を特定するものに限らず、起点となる値から減算することでリールステップ数、図柄ステップ数、図柄番号を特定するものでも良い。さらに更新される毎に加算または減算される値は1を超える値であっても良い。
本実施例のメイン制御部41は、タイマ割込処理(メイン)のリール回転制御処理において、リールモータ32L、32C、32Rを回転、停止させるための駆動信号を出力する処理を実行し、当該駆動信号によりリールモータの励磁状態を変化させる毎に、リールステップ数等更新処理を実行して、リールの位置に関する情報として図柄番号を特定可能な図柄番号カウンタ等を更新する一方、メイン処理のリール制御処理において、リールの停止操作が行われたときに、タイマ割込を禁止に設定した状態で、図柄番号カウンタの値を参照して、当該図柄番号カウンタの値に基づいて、停止操作が行われたリールを停止させる停止位置を特定するので、図柄番号カウンタの値を参照する処理中にタイマ割込が実行され、図柄番号カウンタが変更されてしまうことがないため、停止操作がされたときのリールの位置を正確に特定することができる。
本実施例のメイン制御部41は、メイン処理のリール回転停止処理において、図柄ステップ数カウンタの値が判定範囲内にあるか否か、すなわち特定の範囲外にあるか否かを判定する第1の処理と、判定範囲内にあり特定の範囲外にないと判定した場合に図柄番号カウンタの値を取得する第2の処理と、を実行可能であり、第1の処理の結果、図柄ステップ数カウンタの値が特定の範囲外にあると判定した場合にタイマ割込の実行を許可することで、第1の処理の結果特定の範囲外にあると判定した場合、すなわち図柄番号を取得する時期でないと判定された場合には、タイマ割込の実行が許可されるので、タイマ割込の実行が禁止されたままとなることによりリールモータ32L、32C、32Rの駆動信号の出力に影響してしまうことを防止できる。
尚、本実施例のメイン制御部41は、メイン処理のリール回転停止処理において、図柄ステップ数カウンタの値が特定の範囲外にあるか否かを判定する第1の処理と、特定の範囲外にないと判定した場合に図柄番号カウンタの値を取得する第2の処理と、を実行可能であり、第1の処理の結果、図柄ステップ数カウンタの値が特定の範囲外にあると判定した場合にタイマ割込の実行を許可する構成であるが、メイン制御部41は、図柄ステップ数カウンタの値が特定の値(例えば、11)であるか否かを判定する第1の処理と、特定の値であると判定した場合に図柄番号カウンタの値を取得する第2の処理と、を実行可能であり、第1の処理の結果、図柄ステップ数カウンタの値が特定の値でないと判定した場合にタイマ割込の実行を許可する構成であっても良い。このような構成では、第1の処理の結果特定の値でないと判定した場合、すなわち図柄番号を取得する時期でないと判定された場合に、タイマ割込の実行が許可されるので、タイマ割込の実行が禁止されたままとなることによりリールモータ32L、32C、32Rの駆動信号の出力に影響してしまうことを防止できる。
本実施例のメイン制御部41は、メイン処理のリール回転停止処理において、タイマ割込を禁止した状態で、リールの停止操作が行われたときの図柄番号カウンタの値を取得した後、当該タイマ割込を禁止にした状態を維持して、当該取得した図柄番号カウンタの値に基づいて滑りコマ数を特定する、すなわちリールを停止させる停止位置を特定するので、図柄番号カウンタの値を取得する処理中だけでなく、取得した図柄番号カウンタの値に基づいてリールを停止させる停止位置を特定する処理中もタイマ割込の実行が禁止されるので、停止位置が特定されていない状態でリールモータの駆動が進んでしまうことにより停止制御が遅れてしまうことを防止できる。すなわち、仮に、図柄番号カウンタの値を取得した後、タイマ割込の実行を一旦許可して、その後、図柄番号カウンタの値に基づいて滑りコマ数を特定するような構成では、図柄番号カウンタの値が取得されているにも関わらず、滑りコマ数が設定されていない状態で、タイマ割込が実行されてしまう場合があり、このような場合のタイマ割込では、滑りコマ数が設定されていないので、リールの停止制御が開始されることがなく、当該タイマ割込が終了した後であって図柄番号カウンタの値に基づいて滑りコマ数が設定された後に実行されるタイマ割込において、リールの停止制御が開始されることとなる一方で、本実施例のように、タイマ割込の実行が禁止される状態を維持して、リールの停止操作が行われたときの図柄番号カウンタの値を取得し後、図柄番号カウンタの値に基づいて滑りコマ数を特定するまでの一連の処理を実行することで、図柄番号カウンタの値を取得した次のタイマ割込において、当該図柄番号に基づいて設定した滑りコマ数によるリールの停止制御を開始させることができる。
本実施例では、1リールに配置される図柄数は21図柄であり、リールモータは一周するために336ステップを要し、1リールの21図柄の全てに対して1図柄あたり16ステップを均等に割り当てることで、リールを1周させたときに21図柄を1巡りさせることが可能な構成であるが、1リールの図柄数を20図柄、すなわちリールを1周させるために要するステップ数を均等に分割できない図柄数として、リールを1周させたときに20図柄を1巡りさせることが可能な構成であっても良い。このような構成では、1図柄に割り当てるステップ数を16ステップと18ステップとすること、すなわち1図柄に割り当てるステップ数を偶数または奇数のいずれかで統一することが好ましい。
このような1リールの図柄数を、リールを1周させるために要するステップ数を均等に分割できない図柄数とする構成においても、本実施例の全相励磁停止制御を適用してリールを停止させる場合には、リールモータが全相励磁停止制御を開始されてから慣性力で4ステップ分回転して停止することになるので、リールモータの所定のステップ数を所定位置に停止させるためには、図柄に割り当てられた図柄ステップ数のうち最後のステップ数の4ステップ前で、全相励磁停止制御を開始することとなる。
ここで、仮に、一のリールについて1図柄に割り当てるステップ数を偶数及び奇数が混在する構成として、当該リールが本実施例の1−2相励磁方式で回転制御されている場合に、ある一の図柄を所定の位置(透視窓3の上段、中段、下段のいずれかの領域に当該図柄の領域が一致するように停止する位置)に停止させるために全相励磁停止制御を開始すべきステップ数では、1図柄に割り当てられたステップ数の違いによって、1相で励磁される場合と、2相で励磁される場合とがあり得る。例えば、図24(a)に示すように、1のリールについて1図柄に割り当てるステップ数が16ステップ、17ステップとされる図柄を含む構成では、16ステップが割り当てられた図柄1については、12ステップ目の2相で励磁されるステップ、17ステップが割り当てられた図柄3についても、46ステップ目の2相で励磁されるステップが全相励磁制御の開始タイミングとなる一方で、17ステップが割り当てられた図柄2については、29ステップ目の1相で励磁されるステップが全相励磁のタイミングとなる。
このように、一のリールについて1図柄に割り当てるステップ数を偶数及び奇数が混在する構成では、1図柄に割り当てられたステップ数の違いによって、全相励磁停止制御の開始タイミングとなるステップが1相で励磁するステップの場合と2相で励磁するステップの場合とがあり、1相で励磁するステップと2相で励磁するステップとでは、現在位置に留まろうとする力が異なるので、リールを停止させるために共通の全相励磁制御を適用すると、リールが慣性で動作する量が変化して実際にリールが停止するまでの動きにばらつきが生じていてしまうこととなる。
これに対して、一のリールについて1図柄に割り当てるステップ数を偶数または奇数のいずれかで統一する構成として、当該リールが本実施例の1−2相励磁方式で回転制御されている場合に、ある一の図柄を所定の位置に停止させるために全相励磁停止制御を開始すべきステップ数では、1図柄に割り当てられたステップ数の違い関わらず、同じ相で励磁される場合のみとなる。例えば、図24(b)に示すように、1のリールについて1図柄に割り当てるステップ数を偶数に統一して、1のリールについて1図柄に割り当てるステップ数が16ステップ、18ステップとされる図柄を含む構成では、16ステップが割り当てられた図柄1については、12ステップ目の2相で励磁されるステップ、同じく16ステップが割り当てられた図柄3についても、46ステップ目の2相で励磁されるステップが全相励磁制御の開始タイミングとなるとともに、18ステップが割り当てられた図柄2についても、29ステップ目の1相で励磁されるステップが全相励磁のタイミングとなる。
このように、一のリールについて1図柄に割り当てるステップ数を偶数または奇数のいずれかで統一する構成では、1図柄に割り当てられたステップ数の違いに関わらず、全相励磁停止制御の開始タイミングとなるステップが同じ相で励磁される場合のみであり、いずれのステップにおいても現在位置に留まろうとする力が同じになるので、リールを停止させるために共通の全相励磁制御を適用する場合でも、リールが慣性で動作する量が変化してしまうことを抑えて、実際にリールが停止するまでの動きのばらつきを低減させることができる。
尚、リールが停止するまでに要するステップ数は、リールやリールモータの特性(重さや大きさ、電気機械的な性質)等によって変化するので、リールの停止制御においては、当該特性に応じたステップ数で、全相励磁停止制御を行うことで、同様の作用効果を奏する。
このように、1リールの図柄数を20図柄、すなわちリールを1周させるために要するステップ数を均等に分割できない図柄数として、リールを1周させたときに20図柄を1巡りさせることが可能な構成において、本実施例のように、メイン制御部41は、有効なリールの停止操作が行われた際に、リール回転停止処理を実行して、図柄ステップ数カウンタの値が特定の範囲(非判定範囲)であるときには、図柄番号を取得せず、特定の範囲外(判定範囲)となったときには、図柄番号カウンタの値を図柄番号として取得する構成にあっては、1図柄に割り当てられたステップ数が異なる図柄のうちの一の図柄については、図柄ステップ数カウンタの値が、当該図柄に対応する第1の特定の範囲(第1の非判定範囲)であるときには、図柄番号を取得せず、第1の特定の範囲外(第1の判定範囲)となったときに、図柄番号カウンタの値を図柄番号として取得する一方で、1図柄に割り当てられたステップ数が異なる他の図柄については、図柄ステップ数カウンタの値が、第1の特定の範囲を加算または減算等の演算により補正した第2の特定の範囲(第2の非判定範囲)であるときには、図柄番号を取得せず、第2の特定の範囲外(第2の非判定範囲)となったときに、図柄番号カウンタの値を図柄番号として取得する構成とすることで、停止操作が行われたときの図柄番号カウンタの値が、第1の特定の範囲に対応する図柄番号であっても、第2の特定の範囲に対応する図柄番号であっても、ともに図柄ステップ数カウンタの値が共通の特定の範囲(共通のステップ数からなる特定の範囲)以外であるときに図柄番号カウンタの値を取得することができる。
具体的には、例えば、図25(a)に示すように、リールを1周させるために要するステップ数を均等に分割できない20図柄のリールであって、16ステップを割り当てられた図柄と、18ステップを割り当てられた図柄とを配置する構成では、16ステップが割り当てられた図柄については、本実施例(図19参照)と同様に、16の図柄ステップ数のうち第1の特定の範囲(12〜15)を非判定範囲とし、当該第1の特定の範囲外(0〜11)を判定範囲とする一方で、18ステップが割り当てられた図柄については、第1の特定の範囲(12〜15)を、2ステップ分(16ステップと18ステップの差分)だけ加算して補正した第2の特定の範囲(14〜17)を非判定範囲とし、当該第2の特定の範囲外(0〜13)を判定範囲とする構成とすることで、図柄ステップ数として16ステップが割り当てられた図柄であっても、18ステップが割り当てられた図柄であっても、ともに図柄番号カウンタの値が共通の特定の範囲(停止操作が行われたときの図柄番号カウンタの値に対応する図柄でリールを停止させることができない4ステップからなる特定の範囲)以外であるときに図柄番号カウンタの値を取得することができる。
また、図25(b)に示すように、例えば、20図柄のリールであって、16ステップを割り当てられた図柄と、18ステップを割り当てられた図柄とを配置する構成において、18ステップが割り当てられた図柄について、第3の特定の範囲(14〜17)を非判定範囲とし、当該第3の特定の範囲外(0〜13)を判定範囲とする一方で、16ステップが割り当てられた図柄については、第3の特定の範囲を、16ステップと18ステップの差分だけ減算して補正した第4の特定の範囲(12〜15)を非判定範囲とし、当該第4の特定の範囲外(0〜13)を判定範囲とする構成とすることでも、上述の例と同様に、いずれの図柄についても、ともに図柄番号カウンタの値が共通の特定の範囲(停止操作が行われたときの図柄番号カウンタの値に対応する図柄でリールを停止させることができない4ステップからなる特定の範囲)以外であるときに図柄番号カウンタの値を取得することができる。
尚、上述の例では、図柄ステップ数として16ステップが割り当てられた図柄または18ステップが割り当てられた図柄のいずれかの一方の図柄についての特定の範囲(停止操作が行われたときの図柄番号カウンタの値に対応する図柄でリールを停止させることができない4ステップからなる特定の範囲)を、加算または減算する補正を行って、他方の図柄についての特定の範囲とする構成であるが、1図柄に割り当てられた図柄ステップ数が少ない方の図柄についての特定の範囲を、補正を行うことなく、他の図柄についての特定の範囲として適用する構成、例えば、16ステップの図柄であっても、18ステップの図柄であっても、ともに共通の特定のステップとして11を境にして特定の範囲(12〜15または12〜170)と、特定の範囲外(0〜11)を設定する構成であっても良い。このような構成では、図柄ステップ数として16ステップが割り当てられた図柄及び18ステップが割り当てられた図柄について、図柄ステップ数カウンタの値が共通の特定の範囲外(0〜11)であるときに、図柄番号値を取得して当該リールを停止させる停止制御を共通の処理で行うことが可能となる。尚、共通の特定のステップは、1図柄に割り当てられたステップ数が異なる図柄のいずれの図柄においても、滑りコマ数0で当該図柄を所定の位置に停止させることができるステップであり、1図柄に割り当てられたステップ数が最も小さい図柄の判定範囲(後の4ステップよりも前のステップ)の最後の値である。
このように、1リールを1周させるために要するステップ数を均等に分割できない図柄数のリールであって、1図柄に割り当てられたステップ数が異なる図柄のうちの一の図柄については、図柄ステップ数カウンタの値が、当該図柄に対応する第1の特定の範囲(第1の非判定範囲)であるときには、図柄番号を取得せず、第1の特定の範囲外(第1の判定範囲)となったときに、図柄番号カウンタの値を図柄番号として取得する一方で、1図柄に割り当てられたステップ数が異なる他の図柄については、図柄ステップ数カウンタの値が、第1の特定の範囲を加算または減算等して補正した第2の特定の範囲(第2の非判定範囲)であるときには、図柄番号を取得せず、第2の特定の範囲外(第2の非判定範囲)となったときに、図柄番号カウンタの値を図柄番号として取得する構成であるが、図柄ステップ数カウンタの値が、特定の値であるか否かに基づいて、図柄番号を取得するまたは取得しない構成であっても良い。
このような構成としては、例えば、1図柄に割り当てられたステップ数が異なる図柄のうちの一の図柄(例えば、16ステップが割り当てられた図柄)については、図柄ステップ数カウンタの値が、当該図柄に対応する第1の特定の値(第1の判定値、例えば、11ステップ)であるときには、図柄ステップ数カウンタの値を図柄番号として取得し、第1の特定の値以外の値(例えば、0〜10ステップ及び12〜15ステップ)であるときには、そのときの図柄番号カウンタの値を取得せず、その後第1の特定の値となったときに、図柄番号カウンタの値を図柄番号として取得する一方で、1図柄に割り当てられたステップ数が異なる図柄のうちの他の図柄(例えば、18ステップが割り当てられた図柄)については、図柄ステップ数カウンタの値が、第1の特定の値を加算または減算等して補正した第2の特定の値(例えば、16ステップと18ステップの差分の2ステップ分を加算した13ステップ)であるときには、図柄ステップ数カウンタの値を図柄番号として取得し、第2の特定の値以外の値(例えば、0〜12ステップ及び14〜17ステップ)であるときには、そのときの図柄カウンタの値を取得せずに、その後第2の特定の値となったときに、図柄番号カウンタの値を図柄番号として取得する構成であっても良く、このような構成とすることで、停止操作が行われたときの図柄番号カウンタの値が、第1の特定の値に対応する図柄番号であっても、第2の特定の値に対応する図柄番号であっても、ともに図柄ステップ数カウンタの値が共通の特定の範囲(その時点での図柄番号カウンタの値に基づいて特定される図柄を滑りコマ数0で所定の位置に停止させることができない、図柄ステップ数のうち最後の4ステップの範囲)の直前であるときに図柄番号カウンタの値を取得することができる。
また、例えば、1図柄に割り当てられたステップ数が異なる図柄のいずれの図柄についても、滑りコマ数0で当該図柄を所定の位置に停止させることができるステップであり、1図柄に割り当てられたステップ数が最も小さい図柄の判定範囲(例えば、18ステップが割り当てられた図柄と16ステップが割り当てられた図柄を含む構成において、16ステップが割り当てられた図柄における、0〜11ステップ)の最後の値(例えば、11ステップ)を共通の特定の値として、当該共通の特定の値であるときには、図柄ステップ数カウンタの値を図柄番号として取得し、共通の特定の値以外の値であるときには、そのときの図柄番号カウンタの値を取得せず、その後共通の特定の値となったときに、図柄番号カウンタの値を図柄番号として取得する構成であっても良く、このような構成とすることで、1図柄に割り当てられたステップ数が異なる図柄のいずれの図柄についても、共通の判定範囲停止操作が行われたときの図柄番号カウンタの値が、共通の特定の値であるときに、図柄番号カウンタの値を取得することができる。
尚、図24で示す例では、リールステップ数が1を起点としてカウントする構成であるが、上記実施例と同様に、リールステップ数が0を起点としてカウントする構成としても良い。
以上、本発明の実施例を図面により説明してきたが、本発明はこの実施例に限定されるものではなく、本発明の主旨を逸脱しない範囲における変更や追加があっても本発明に含まれることは言うまでもない。
前記実施例では、本発明を遊技用価値としてメダル並びにクレジットを用いて賭数が設定されるスロットマシンに適用した例について説明したが、遊技用価値として遊技球を用いて賭数を設定するスロットマシンや、遊技用価値としてクレジットのみを使用して賭数を設定する完全クレジット式のスロットマシンに適用しても良い。遊技球を遊技用価値として用いる場合は、例えば、メダル1枚分を遊技球5個分に対応させることができ、前記実施例で賭数として3を設定する場合は、15個の遊技球を用いて賭数を設定するものに相当する。
さらに、メダル及び遊技球等の複数種類の遊技用価値のうちいずれか1種類のみを用いるものに限定されるものではなく、例えば、メダル及び遊技球等の複数種類の遊技用価値を併用できるものであっても良い。すなわち、メダル及び遊技球等の複数種類の遊技用価値のいずれを用いても賭数を設定してゲームを行うことが可能であり、かつ入賞の発生によってメダル及び遊技球等の複数種類の遊技用価値のいずれをも払い出し得るスロットマシンを適用しても良い。