本発明に係るスロットマシンを実施するための本実施の形態について以下に説明する。
[スロットマシンの構成]
図1は、本実施形態に係るスロットマシン1の正面図である。本実施例のスロットマシン1は、図1に示すように、前面が開口する筐体1aと、この筐体1aの側端に回動自在に枢支された前面扉1bとから構成されている。
本実施例のスロットマシン1の筐体1aの内部には、図1に示すように、外周に複数種の図柄が配列されたリール2L,2C,2R(以下、左リール、中リール、右リールとも称する)が水平方向に並設されており、図1に示すように、これらリール2L,2C,2Rに配列された図柄のうち連続する3つの図柄が前面扉1bに設けられた透視窓3から見えるように配置されている。
リール2L,2C,2Rの外周部には、互いに識別可能な複数種類の図柄(例えば、「7」、「BAR」、「スイカ」、「チェリー」、「ベル」、「リプレイ」など)が所定の順序で、それぞれ21個ずつ描かれている。リール2L,2C,2Rの外周部に描かれた図柄は、前面扉1bの略中央に設けられた透視窓3において各々上中下三段に表示される。
各リール2L,2C,2Rは、各々対応して設けられたリールモータ32L,32C,32R(図3参照)によって回転されることで、各リール2L,2C,2Rの図柄が透視窓3に連続的に変化しつつ表示される一方で、各リール2L,2C,2Rの回転が停止されることで、透視窓3に3つの連続する図柄が表示結果として導出表示されるようになっている。
なお、本実施例のリール2L,2C,2Rは、リールモータ32L,32C,32Rを用いて、外周面に複数の図柄が配置されたリール2L,2C,2Rを回転させることで、遊技者から視認可能な複数の図柄を移動させる変動表示を行うことが可能な構成であるが、複数の図柄を移動させる変動表示を行う手段は、リール以外であっても良く、例えば、外周面に複数の図柄が配置されたベルトを移動させることで変動表示を行うことが可能な構成などであっても良い。
リール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について図柄番号1の図柄の領域の下端が各リールにおける所定位置を通過するときに、検出信号を出力するように配置されており、各リールについて図柄番号1の図柄の領域の下端がリール基準位置となる。
前面扉1bの各リール2L,2C,2Rの手前側(遊技者側)の位置には、液晶表示器51(図1参照)の表示領域51aが配置されている。液晶表示器51は、液晶素子に対して電圧が印加されていない状態で透過性を有する液晶パネルを有しており、表示領域51aの透視窓3に対応する透過領域51bおよび透視窓3を介して遊技者側から各リール2L,2C,2Rが視認できるようになっている。
前面扉1bには、図1に示すように、メダルを投入可能なメダル投入部4、メダルが払い出されるメダル払出口9、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いて、その範囲内において遊技状態に応じて定められた規定数の賭数(BET数)のうち最大の賭数(MAXBET数)を設定する際に操作される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(図3参照)が設けられており、ストップスイッチ8L,8C,8Rの内部には、該当するストップスイッチ8L,8C,8Rによるリールの停止操作が有効である旨を点灯により報知する左,中,右停止有効LED22L,22C,22R(図3参照)がそれぞれ設けられており、演出用スイッチ56の内部には、演出用スイッチ56の操作が有効である旨を点灯により報知する演出用LED56a(図3参照)が設けられている。
図2は、スロットマシンの内部構造を示す斜視図である。前面扉1bの内側には、図2に示すように、所定のキー操作により前面扉1bを開放することなく後述するエラー状態および打止状態を解除するためのリセット操作を検出するリセットスイッチ23、後述する設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器24、所定の契機に打止状態(リセット操作がなされるまでゲームの進行が規制される状態)に制御する打止機能の有効/無効を選択するための打止スイッチ36a、所定の契機に自動精算処理(クレジットとして記憶されているメダルを遊技者の操作によらず精算(返却)する処理)に制御する自動精算機能の有効/無効を選択するための自動精算スイッチ36b、メダル投入部4から投入されたメダルの流路を、筐体1aの内部に設けられた後述のホッパータンク34a(図2参照)側またはメダル払出口9側のいずれか一方に選択的に切り替えるための流路切替ソレノイド30、メダル投入部4から投入され、ホッパータンク34a側に流下したメダルを検出する投入メダルセンサ31、投入メダルセンサ31の上流側で異物の挿入を検出する投入口センサ26を有するメダルセレクタ29、前面扉1bの開放状態を検出するドア開放検出スイッチ25(図3参照)が設けられている。
筐体1aの内部には、図2に示すように、前述したリール2L,2C,2R、リールモータ32L,32C,32R(図3参照)、各リール2L,2C,2Rのリール基準位置をそれぞれ検出可能なリールセンサ33L,33C,33R(図3参照)からなるリールユニット2、外部出力信号を出力するための外部出力基板1000(図3参照)、メダル投入部4から投入されたメダルを貯留するホッパータンク34a、ホッパータンク34aに貯留されたメダルをメダル払出口9より払い出すためのホッパーモータ34b(図3参照)、ホッパーモータ34bの駆動により払い出されたメダルを検出する払出センサ34c(図3参照)からなるホッパーユニット34、電源ボックス100が設けられている。
ホッパーユニット34の側部には、ホッパータンク34aからあふれたメダルが貯留されるオーバーフロータンク35が設けられている。オーバーフロータンク35の内部には、貯留されたメダルが満タン状態となったことを検出する満タンセンサ35a(図3参照)が設けられている。
電源ボックス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の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。なお、遊技状態に対応する規定数のうち最大数を超えてメダルが投入された場合には、その分はクレジットに加算される。
入賞ラインとは、各リール2L,2C,2Rの透視窓3に表示された図柄の組合せが入賞図柄の組合せであるかを判定するために設定されるラインである。本実施例では、図1に示すように、リール2Lの中段、リール2Cの中段、リール2Rの中段、すなわち中段に水平方向に並んだ図柄に跨がって設定された入賞ラインLNのみが入賞ラインとして定められている。なお、本実施例では、1本の入賞ラインのみを適用しているが、複数の入賞ラインを適用しても良い。
また、本実施例では、入賞ラインLNに入賞を構成する図柄の組合せが揃ったことを認識しやすくするために、入賞ラインLNとは別に、無効ラインLM1~4(LM1は、左中右リールの各上段にわたるラインであり、LM2は、左中右リールの各中段にわたるラインであり、LM3は、左中右リールの各下段にわたるラインであり、LM4は、左リールの下段、中リールの中段、右リールの上段にわたるラインである。)を設定している。無効ライン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に役として定められた所定の図柄の組合せ(例えば、「ベル‐スイカ‐チェリー」)が揃ったときに入賞するとともに、かつ所定の図柄組合せが揃うことにより無効ライン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の回転を停止するまでの最大停止遅延時間は190ミリ秒(ms)である。
リール2L,2C,2Rは、1分間に80回転し、80×20(1リール当たりの図柄コマ数)=1600コマ分の図柄を変動させるので、190ミリ秒の間では最大で4コマの図柄を引き込むことができることとなる。つまり、停止図柄として選択可能なのは、ストップスイッチ8L,8C,8Rが操作されたときに表示されている図柄と、そこから4コマ先までにある図柄、合計5コマ分の図柄である。
このため、例えば、ストップスイッチ8L,8C,8Rのいずれかが操作されたときに当該ストップスイッチに対応するリールの下段に表示されている図柄を基準とした場合は、当該基準とした図柄から4コマ先までの図柄を下段に表示させることができるため、リール2L,2C,2R各々において、ストップスイッチ8L,8C,8Rのうちいずれかが操作されたときに当該ストップスイッチに対応するリールの入賞ライン上に表示されている図柄を含めて5コマ以内に配置されている図柄を入賞ライン上に表示させることができる。
以下では、特に区別する必要がない場合にはリール2L,2C,2Rを単にリールという場合がある。また、リール2Lを左リール、リール2Cを中リール、リール2Rを右リールという場合がある。また、ストップスイッチ8L,8C,8Rの操作によりリール2L,2C,2Rを停止させる操作を停止操作という場合がある。
図3は、スロットマシン1の構成を示すブロック図である。スロットマシン1には、図3に示すように、遊技制御基板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には、メインCPU41a、ROM41b、RAM41c、I/Oポート41dを備えたマイクロコンピュータにより構成され、内部抽選用の乱数を生成する乱数回路などを備えており、遊技の進行に関する処理を行うとともに遊技制御基板40に搭載された制御回路の各部を直接的または間接的に制御するメイン制御部41と、遊技制御基板40に直接または電源基板101を介して接続されたスイッチ類から入力された検出信号を取り込んでメイン制御部41に伝送するスイッチ検出回路44と、メイン制御部41から出力されたモータ駆動信号(ステッピングモータの位相信号φ0~φ3)をリールモータ32L,32C,32Rに伝送するモータ駆動回路45と、メイン制御部41から出力されたソレノイド駆動信号を流路切替ソレノイド30に伝送するソレノイド駆動回路46と、メイン制御部41から出力されたLED駆動信号を遊技制御基板40に接続された各種表示器やLEDに伝送するLED駆動回路47と、スロットマシン1に供給される電源の電圧を監視して電圧の低下を検出したときに、その旨を示す電圧低下信号をメイン制御部41に対して出力する電断検出回路48と、電源投入時または電源遮断時などの電力供給が不安定な状態においてメイン制御部41にシステムリセット信号を与えるリセット回路49とが搭載されている。
メイン制御部41は、サブ制御部91に各種のコマンドを送信する。メイン制御部41からサブ制御部91へ送信されるコマンドは一方向のみで送られ、サブ制御部91からメイン制御部41へ向けてコマンドが送られることはない。
また、I/Oポート41dは、出力ポート0~9を含み、メイン制御部41は、出力ポート0および出力ポート1より左,中,右リールモータ32L,32C,32Rの制御信号を出力可能である。出力ポート2より左・中・右停止有効LED22L、22C、22Rの制御信号、流路切替ソレノイド30の制御信号を出力可能である。出力ポート3よりホッパーモータ34bの制御信号、外部出力信号を出力可能である。出力ポート4および出力ポート5よりクレジット表示器11、遊技補助表示器12、1~3BETLED14~16、投入要求LED17、スタート有効LED18、ウェイト中LED19、リプレイ中LED20、BETスイッチ有効LED21の制御信号を出力可能である。出力ポート6より試験信号を出力可能である。出力ポート7より外部出力信号を出力可能である。
メイン制御部41は、メイン処理として遊技制御基板40に接続された各種スイッチ類の検出状態が変化するまでは制御状態に応じた処理を繰り返しループし、各種スイッチ類の検出状態の変化に応じて段階的に移行する処理を実行する。また、メイン制御部41は、一定時間間隔(本実施例では、約0.56ミリ秒)毎にタイマ割込処理(メイン)を実行する。なお、タイマ割込処理(メイン)の実行間隔は、メイン処理において制御状態に応じて繰り返す処理が一巡する時間とタイマ割込処理(メイン)の実行時間とを合わせた時間よりも長い時間に設定されており、今回と次回のタイマ割込処理(メイン)との間で必ず制御状態に応じて繰り返す処理が最低でも一巡することとなる。
演出制御基板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と、その他の回路などが搭載されている。
サブ制御部91は、遊技制御基板40から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板90に搭載された制御回路の各部を直接的または間接的に制御する。
本実施例のスロットマシン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に格納され、遊技の進行が可能な状態に移行する。
本実施例のスロットマシン1は、遊技状態に応じて設定可能な賭数の規定数が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。なお、本実施例では、遊技状態に応じた規定数の賭数が設定された時点で、入賞ラインLNが有効化される。
そして、本実施例では、全てのリール2L,2C,2Rが停止した際に、有効化された入賞ライン(本実施例の場合、常に入賞ラインLNが有効化されるため、以下では、有効化された入賞ラインLNを単に入賞ラインという)上に役と呼ばれる図柄の組合せが揃うと入賞となる。役は、同一図柄の組合せであっても良いし、異なる図柄を含む組合せであっても良い。
入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役(リプレイ)と、遊技者にとって有利な遊技状態への移行を伴う特別役(ボーナス)と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、内部抽選に当選して、当該役の当選フラグがRAM41cに設定されている必要がある。内部抽選は、メイン制御部41が、上記した各役への入賞を許容するか否かを、全てのリール2L,2C,2Rの表示結果が導出される以前(具体的には、スタートスイッチ7の検出時)に乱数を用いて決定するものである。なお、これら各役の当選フラグのうち、小役および再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされ、次のゲームでは無効となるが、特別役の当選フラグは、当該フラグにより許容された役の組合せが揃うまで有効とされ、許容された役の組合せが揃ったゲームにおいて無効となる。すなわち特別役の当選フラグが一度当選すると、例え、当該フラグにより許容された役の組合せを揃えることができなかった場合にも、その当選フラグは無効とされずに、次のゲームへ持ち越されることとなる。
また、内部抽選では、特別役と重複して当選する一般役(以下、重複当選役と呼ぶ)が設けられており、内部抽選にて当該重複当選役が当選した場合には、特別役も重複して当選し得るようになっており、当該重複当選役を構成する図柄組合せがリール2L,2C,2Rに停止することで、特別役が当選している可能性がある旨が示唆されるようになっている。
また、内部抽選では、予め定められた所定の停止順で停止操作が行われる場合にのみ当該役を構成する図柄を入賞ラインLNに揃えて停止させ、入賞を発生させることが可能な小役、再遊技役(以下押し順役と呼ぶ場合がある)と、停止順によらず役を構成する図柄を入賞ラインLNに揃えて停止させ、入賞を発生させることが可能な小役、再遊技役(非押し順役と呼ぶ場合がある)とが当選し得るようになっている。
また、内部抽選では、当選し得る役として、通常の役とは異なる特殊役(特殊小役または特殊再遊技役)が含まれており、内部抽選にて特殊役が当選することで、規定のゲーム数にわたり後述のアシストタイム(以下、ATという)に制御される権利(以下、ATの権利という)が当選し得るようになっている。
本実施例のスロットマシン1は、メイン制御部41により、内部抽選結果に応じて遊技者にとって有利となるストップスイッチ8L,8C,8Rの操作態様を遊技補助表示器12の点灯態様により報知するナビ報知を実行可能な報知期間となるアシストタイム(以下、ATという)に制御可能となっており、ATに制御される権利が当選し、所定の開始条件(例えば、ATの権利の当選後、所定のゲーム数が経過すること、ATの権利の当選後、所定の図柄組合せがリール2L,2C,2Rに停止することなど)が成立することで、メイン制御部41はATの制御を開始して、ATに制御する。そして、ATに制御している場合には、遊技状態に応じたナビ対象役(前述の押し順役のうち該当する役)に当選することにより、ナビ報知を実行して、遊技者にとって有利となるストップスイッチ8L,8C,8Rの操作態様(押し順、操作タイミング)を報知するとともに、遊技者にとって有利となる操作態様を特定可能なコマンドをサブ制御部91に対して送信することで、液晶表示器51などを用いたナビ演出を実行させる。ナビ報知およびナビ演出により報知される操作態様にて、ストップスイッチ8L,8C,8Rを操作することで、内部抽選にて当選した押し順役を確実に入賞させることができるようになっている。なお、本実施例においてメイン制御部41は、ATに制御していない通常状態であっても、一定の条件を満たすことにより、ナビ報知を実行し、ナビ演出を実行させることが可能である。
次に、メイン制御部41が行うリール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の操作タイミングに関わらずに、必ず再遊技役が揃って入賞することとなる。すなわちこのような場合には、特別役よりも再遊技役を入賞ライン上に揃える制御が優先され、必ず再遊技役が入賞することとなる。なお、特別役と再遊技役を同時に引き込める場合には、再遊技役のみを引き込み、再遊技役と同時に特別役が入賞ライン上に揃わないようになる。
なお、本実施例では、停止操作が行われたタイミング別の滑りコマ数を特定可能な停止制御テーブルを用いてリールの停止制御を行う構成であるが、停止可能な位置を特定可能な停止位置テーブルから停止位置を特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルや停止位置テーブルを用いずに、停止操作がされたタイミングで停止可能な停止位置を検索・特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルを用いた停止制御、停止位置テーブルを用いた停止制御、停止制御テーブルや停止位置テーブルを用いずに停止可能な停止位置を検索・特定することによる停止制御を併用する構成、停止制御テーブルや停止位置テーブルを一部変更して停止制御を行う構成としても良い。
[メイン制御部のメモリ領域とプログラムについて]
図4は、メイン制御部41が用いるメモリ領域のアドレスマップである。図4に示すように、メイン制御部41が用いるメモリ領域は、ROM41bに割り当てられたメモリ領域(0000H~EFFFH)と、RAM41cに割り当てられたメモリ領域(F000H~FFFFH)とを含む。
ROM41bのメモリ領域は、プログラムおよび固定データが格納されるプログラム/データ領域(0000H~2FBFH)と、その他の領域(2FC0H~EFFFH)とからなる。その他の領域は、プログラムのタイトル、バージョンなどの任意のデータを設定可能なROMコメント領域と、CALLV命令のサブルーチンの上位アドレスおよびタイマ割込処理(メイン)の先頭アドレスが設定されるベクタテーブル領域と、メイン制御部41の内部機能をハードウェア的に設定するためのパラメータが設定されるHWパラメータ領域と、アクセスが禁止される未使用領域を含む。
RAM41cのメモリ領域は、ワークとして使用可能な使用可能領域(F000H~F400H)と、その他の領域(F401H~FFFFH)とからなる。その他の領域は、メイン制御部41に搭載されている各機能を制御するためのレジスタ群が格納される内部機能レジスタ領域(FE00H~FEACH)を含む。
ROM41bにおけるプログラム/データ領域は、遊技の進行に係わる遊技プログラムが記憶される遊技プログラム領域と、遊技プログラムが用いる遊技データが記憶される遊技データ領域と、未使用領域1と、遊技の進行に係わらない非遊技プログラムが記憶される非遊技プログラム領域と、非遊技プログラムが用いる非遊技データが記憶される非遊技データ領域と、未使用領域2とを含む。
なお、遊技の進行とは、遊技を構成する一連のプロセスを進行させることであり、スロットマシンであれば、賭数を設定してゲームを開始可能とする段階、ゲームを開始してリールを回転させる段階、リールを停止させて表示結果を導出させる段階、表示結果に応じてメダルなどの価値を付与する段階を進行させることである。
なお、上記において記憶領域の前後とは、記憶領域に割り当てられたアドレス値の大小関係であり、アドレスが小さい方が前方となり、アドレスが大きい方が後方となる。このため、一の記憶領域よりも後方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が大きい記憶領域が該当し、一の記憶領域よりも前方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が小さい記憶領域が該当する。
RAM41cは、遊技プログラムがワークとして用いる遊技RAM領域と、未使用領域3と、遊技プログラムがデータを退避するスタック領域と、非遊技プログラムがワークとして用いる非遊技RAM領域と、未使用領域4と、非遊技プログラムがデータを退避するスタック領域とを含む。
遊技RAM領域は、領域A~Dにより構成される。ここで、領域A~Dを全初期化対象領域と呼び、領域B~Dを設定変更終了時初期化対象領域と呼び、領域C~Dをボーナス終了時初期化対象領域と呼び、領域Dを遊技終了時初期化対象領域と呼ぶ。全初期化対象領域は、RAMエラーが発生した際にときに所定の操作を行うことによって初期化される領域である。設定変更終了時初期化対象領域は、設定変更が終了した際に初期化される領域である。ボーナス終了時初期化対象領域は、ボーナス終了時に初期化される領域である。遊技終了時初期化対象領域は、遊技(ゲーム)が終了するたびに初期化される領域である。
以下では、遊技プログラム領域、遊技データ領域および遊技RAM領域をまとめて遊技領域と称す場合があり、非遊技プログラム領域、非遊技データ領域および非遊技RAM領域をまとめて非遊技領域と称す場合がある。また、未使用領域1および未使用領域2、未使用領域3および未使用領域4をまとめて未使用領域と称す場合がある。
[プログラムが用いる命令]
メイン制御部41が実行するプログラムは、プログラム全体の進行を管理するメインルーチンと、他のプログラムの実行中に呼び出されるサブルーチンとを含む。
また、メイン制御部41にプログラム/データ領域に格納されたプログラムを実行させる命令として、CALL命令(呼出命令)を含む。CALL命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたサブルーチンを呼び出して実行させる命令である。メイン制御部41は、CALL命令によりサブルーチンを呼び出す場合には、呼び出し元のアドレスをスタック領域に格納し、指定されたアドレスに格納されたサブルーチンを呼び出して実行する。そして、当該サブルーチンの終了時には、RET命令(復帰命令)により、スタック領域に格納されている呼び出し元のアドレス、すなわちCALL命令を実行した呼び出し元のメインルーチンまたはサブルーチンのプログラムに復帰する。
メイン制御部41にプログラム/データ領域に格納されたデータを読み出す命令としてLD命令を含む。LD命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納された1バイトデータを指定されたレジスタに読み出す命令である。メイン制御部41は、LD命令により指定されたアドレスに格納されたデータを読み出し、LD命令により指定されたレジスタに読み出したデータを格納する。これに対して、LDW命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納された2バイトデータを指定されたレジスタに読み出す命令である。
ここで、遊技プログラムとは、遊技の進行に係わるプログラムであり、当該プログラムに基づく処理を実行しないと、遊技の進行に支障をきたす処理を実行するためのプログラムである。一方、非遊技プログラムとは、遊技の進行に係わらないプログラムであり、遊技プログラムから呼び出されて当該プログラムに基づく処理が実行されずに遊技プログラムに復帰した場合でも、遊技を進行させることが可能な処理を実行するためのプログラムである。
[入出力ポート]
図5は、入出力ポートマップを示す図である。I/Oポート41dは、入力ポート0~2、出力ポート0~8を含む。各入力ポートからは、接続された各種機器の検出信号が入力される。各出力ポートからは、各種の制御信号や試験信号や外部出力信号を出力可能である。各入力ポートまたは各出力ポートからは、それぞれ8種類(図5のD0~D7)の信号が入力または出力可能である。たとえば、メイン制御部41は、左,中,右ストップスイッチの操作に基づいて、入力ポート0のD0~D2から左,中,右ストップスイッチ信号を検出する。たとえば、出力ポート0のD0~D3より左リールモータ信号(φ0~φ3)を出力可能である。これにより、左リールモータが駆動可能となり、左リールの回転または停止が行われる。なお、図5に示した信号は、あくまで一例であって、これ以外の信号を出力するものであってもよく、どのポートから信号を入出力させるようにしてもよい。
[エラーコード]
図6は、エラーコードを示す図である。エラーコマンドは、図6に示すように、発生している異常の種類を特定可能なエラーコードE1~E8を含んでいる。E1は、オーバーフローエラーであり、オーバーフロータンク35の満タン状態が検知されたことを示し、E2は、ホッパーエンプティエラーであり、ホッパータンク34aの空状態が検知されたことを示し、E3は、メダル詰りエラーであり、メダル払出口9付近の異物が検知されたことを示し、E4は、メダル払出エラーであり、リール回転処理などを行っており、本来払出が行われることがないときに、払出が行われたことが検出されたことを示し、E5は、メダル投入エラーであり、投入メダルセンサ31によるメダルの異常な通過が検知されたことを示し、E6は、リール回転エラーであり、リール回転の異常が検知されたことを示し、E7は、異常入賞エラーであり、内部抽選により入賞が許容されていない役の入賞が検知されたことを示し、E8は、RAMエラーであり、起動時にRAM41cのデータが正常でないことが検知されたことを示す。
[各種処理の制御内容]
メイン制御部41が遊技プログラムおよび非遊技プログラムを実行することで行う各種処理の制御内容について、図7~図16に基づいて説明する。
[起動処理(メイン)]
まず、メイン制御部41が行う起動時の処理である起動処理(メイン)について、図7に基づいて説明する。図7は、メイン制御部が行う起動処理(メイン)の制御内容を示すフローチャートである。なお、起動処理(メイン)は、遊技プログラムに含まれるメインルーチンである。
メイン制御部41は、スロットマシン1への電力供給が開始された際に、リセットの発生によりタイマ割込が禁止に設定された状態で起動し、ROM41bに格納されているプログラムに従って各種処理を行う。
図7に示すように、メイン制御部41が起動すると起動処理(メイン)を行う。起動処理(メイン)では、まず、タイマ割込を禁止に設定する(Sa1)。以降、タイマ割込を禁止に設定することを、割込禁止設定を行うとも称し、タイマ割込を許可状態に設定することを割込許可設定を行うとも称する。
次に、全ての出力ポートの初期設定を行う(Sa2)。その際、まず、出力ボート3および4に対する初期設定を行い、次に、出力ボート1および2に対する初期設定を行い、次に、出力ボート5および6に対する初期設定を行い、最後に、出力ボート7に対する初期設定を行う。出力ポートの初期設定とは、出力ポートから出力される信号をOFF状態にすることを言う。すなわち、なんらかの信号が出力されている場合には、出力ポートの初期設定によって、当該信号の出力が停止する。
ここで、出力ポートへの出力命令は、1バイト(8ビット)単位または2バイト(16ビット)単位で行うことができる。図5に示すように、各出力ポートからは、8種類の信号が出力される。そして、1つのポートに対して各ビットを0にして出力命令を行う場合は、出力ポートに対して00H(8ビット分の0データ)を設定して出力命令を行う。また、隣り合う2つのポートに対して各ビットを0にして出力命令を行う場合は、出力ポートに対して0000H(16ビット分の0データ)を設定して出力命令を行う。
このように、隣合う2つのポートに対して、一度に信号の出力命令を行うことができる。本実施の形態においては、たとえば、出力ボート3および4の2つのポートに対して出力命令を行うことで、同時に2つのポートの初期設定を行うことができる。
ここで、出力ポートの初期設定を行うのは、各種機器が誤動作することを防止するためである。スロットマシン1の起動時に、ノイズなどの影響により出力ポートから信号がON状態で出力されると各種機器が誤動作してしまう。特に、出力ポート3のD7からは、ポッパーモータコントロール信号が出力されており、誤動作することでホッパーモータが駆動してメダルの払出が行われてしまう危険性がある。このため、本実施の形態においては、まず、出力ボート3および4から初期設定を行うにしている。このようにすることで、ホッパーモータの誤動作を極力防ぐことができる。
次に、内蔵レジスタ設定処理(Sa3)を行う。内蔵レジスタは、メインCPU41aにおける機能設定を行うためのレジスタである。内蔵レジスタ設定処理によって、制御開始にあたって設定が必要な複数の領域に設定値を設定する。
次に、初期設定処理(Sa4)を行う。初期設定処理は、ステップSa1によりタイマ割込が禁止された状態で開始される。初期設定処理では、RAM41cに異常があるか否かを判定する。RAM41cに異常がある場合には、全初期化対象領域(領域A~D)を初期化する。
RAM41cに異常がないと判定した場合、入力ポート2を参照して設定キースイッチ37がON状態であるか否かを判定する。設定キースイッチ37がON状態であると判定した場合は、設定変更処理を行う。設定変更処理では、リセット/設定スイッチ38およびスタートスイッチ7が所定の手順で操作されることにより設定値が確定され、設定キースイッチ37がOFFにされたことが検出されることで、設定変更処理を終了して、遊技を進行可能な状態に移行する。また、設定変更処理では、設定変更処理を開始する際に、設定変更処理を開始する旨を示す設定コマンド(開始)をサブ制御部91に対して送信し、設定変更処理を終了する際に、設定変更処理を終了する旨を示す設定コマンド(終了)するようになっている。設定変更処理が終了すると、設定変更終了時初期化対象領域(領域B~D)を初期化する。
設定キースイッチ37がON状態でないと判定した場合は、RAM41cに異常があるか否かを判定する。RAM41cに異常がないと判定した場合には、外部出力信号を出力するための出力バッファをクリアする。また、RAM41cの所定領域に設定されており、メイン処理においてリールの回転エラーが検出された回数を計数するためのリールエラーカウンタをクリアする。その後、RAM41cの記憶内容に基づいてスタックポインタSPに電断時のアドレスを設定することで、スタックポインタを電断時の状態に復帰させ、ポート入力処理を3回連続で行う。
ポート入力処理は、パラレル入力ポート511に入力される各種スイッチ類の検出信号などの入力状態に関する入力状態データ(各種スイッチ類の現在の入力状態を示す入力データ、前回と今回の入力データが同じ状態である旨を示す確定データ、前回から確定データが変化した旨を示すエッジデータ)を更新する処理である。RAM41cの遊技RAM領域の所定領域には、各種スイッチ類の入力状態データを格納するポート入力バッファ0~2が設けられており、ポート入力処理により更新される各種スイッチ類の入力状態データは、その種類毎に予め定められたポート入力バッファの所定ビットに格納されるようになっている。ポート入力処理では、パラレル入力ポート511の入力ポート0~2にされる各種スイッチ類の検出状態(ON状態またはOFF状態)を入力データとして、ポート入力バッファの所定ビットに格納する。また、前回と今回のポート入力処理での検出状態(ON状態またはOFF状態)を比較して、今回と前回の入力データが同じ状態である場合には、今回の入力データの検出状態を示すように確定データを更新する一方、今回と前回の入力データが異なる状態である場合には、前回の確定データを維持する。また、今回と前回の確定データを比較して、確定データがOFF状態からON状態に変化した場合には、確定データがOFF状態からON状態に変化した旨を示すONエッジデータをポート入力バッファ0~2の所定ビットに格納し、確定データがON状態からOFF状態に変化した場合には、確定データがON状態からOFF状態に変化した旨を示すOFFエッジデータをポート入力バッファ0~2の所定ビットに格納する。ポート入力バッファに格納された各種スイッチ類の入力データ、確定データ、エッジデータは、遊技プログラムおよび非遊技プログラムから参照することが可能である。
ポート入力処理を3回連続で行うのは、次のような理由からである。たとえば、電断前において、スイッチがOFF状態であったとする。そして、電断中にスイッチが押され、そのまま押下状態を継続したとする(たとえば、何かに引っかかって押しっぱなしになったような状態)。このような場合、電断から復帰したときにはON状態で検出信号が入力される。また、電断前後で比べると、OFF状態からON状態に変化しているため、ONエッジが検出されることになる。しかし、実際には電断前後では大きな時間差があり、これをONエッジとして検出するのは不適切である。これを防ぐため、電断復帰時には、ポート入力処理を3回連続で行っている。電断復帰後にスイッチのON状態が継続している場合、ポート入力処理を3回連続で行うことで、ONエッジが検出されなくなる。これにより、意図しない入力状態データが作られてしまうことを防止することができる。たとえば、電断後にストップスイッチが押しっぱなしの状態になってしまい、意図せずリールが停止してしまうことを防止することができる。
ポート入力処理を行った後は、リセット/設定スイッチ38がON状態でないと判定した場合は、電断前の制御状態に復帰した旨を示す復帰コマンドをサブ制御部91に送信した後、すべてのレジスタをRAM41cに記憶されている電断前の状態に復帰させ、割込許可設定を行い(Sa5)、初期設定処理を終了させてタイマ割込処理(メイン)に移行させた後、スロットマシン1への電力供給が停止される前に実行していたメイン処理における処理に復帰する。
一方、RAM41cに異常があると判定した場合には、全初期化対象領域(領域A~D)を初期化する。その後、割込許可設定を行い、RAM41cに異常がある旨を示すRAMエラーのエラーコード(E8)を所定のレジスタに準備して、初期設定処理を終了させてエラー処理に移行させる。エラー処理においては、エラーコード(E8)に応じたエラー状態の解除条件が成立したことが特定されるまでエラー状態の制御を行う。RAMエラーのエラーコード(E8)が所定のレジスタに準備されてエラー状態に移行された場合には、設定キースイッチ37をONにした状態で電源スイッチ39を投入することによって、設定変更状態に移行させてすべての遊技RAM領域(領域A~D)を初期化させることで、RAM41cのデータの異常を確実に解消してエラー状態を解除することができるようになっている。
[内蔵レジスタ設定処理]
メイン制御部41が行う内蔵レジスタ設定処理について、図8に基づいて説明する。図8は、メイン制御部が行う内蔵レジスタ設定処理の制御内容を示すフローチャートである。なお、内蔵レジスタ設定処理は、遊技プログラムに含まれており、遊技プログラムに含まれる起動処理(メイン)において呼び出されるサブルーチンである。
内蔵レジスタは、メインCPU41aにおける機能設定を行うためのレジスタである。内蔵レジスタは、RAM41cに内蔵レジスタ領域が設けられている。本実施の形態においては、内蔵レジスタ領域としてFE00HからFEACHまでの領域が設けられている。内蔵レジスタに対して、たとえば、割込に関する設定や通信機能に関する設定などを行う。
また、本実施の形態においては、内蔵レジスタ領域は、第1領域~第7領域までの7つの領域を有する。メインCPU41aは、制御開始にあたって設定が必要な複数の領域に設定値を設定する。本実施の形態においては、設定が必要な複数の領域として、第2,3,4,6領域の各領域において設定値を設定する。
内蔵レジスタ領域への設定値の設定は、1バイトデータを設定可能なLD命令または2バイトデータを設定可能なLDW命令により行われる。その際、まず、LD命令により設定が必要な領域に対応するアドレスを読み出す。そして、LD命令またはLDW命令により、当該アドレスに対応する領域に設定値を設定する。また、読み出したアドレス(基準アドレス)に差分値を加えることによって、当該アドレスよりも差分値先のアドレスに対応する領域に設定値を設定することができる。具体例は後述するが、前者よりも後者の方法で設定値を設定する方が、命令に必要な容量が小さくなるため、プログラムの容量を節減することができる。
また、指定可能な差分値には制限がある。たとえば、差分値として最大50までしか指定できない場合は、読み出した基準アドレスに対して、50アドレス先の領域までしか設定することができない。したがって、差分値を用いて設定値を設定したい場合には、できるかぎり設定が可能な複数の領域をカバーできるように、基準アドレスを読み出すことが望ましい。以下、フローチャートに沿って説明する。
図8に示すように、まず、Sb1のステップにおいて、1バイトデータを設定可能なLD命令により、設定値の設定が必要な第2,3,4,6領域のうちの第2領域に対応するアドレスを所定レジスタに読み出す。ここで読み出したアドレスは、第2領域の先頭アドレス(FE01H)であり、以下これを基準アドレスとして使用する。第2領域は、第2,3,4,6領域のうちの最も小さいアドレス(FE01H)に対応する領域であり、1バイトのデータを設定可能な領域である。
また、基準アドレス(FE01H)は、最もアドレスが離れた第6領域から21H(33)離れている。本実施の形態では、指定可能な最大の差分値は50であるため、第6領域に対しても差分値を用いたLD命令により設定値を設定することが可能である。ここで、仮に、第4領域に基準値を設定した場合は、第2,3領域に対して差分値を用いたLD命令を使用することができない。また、第1領域のアドレス範囲が広い場合、第1領域に基準値を設定したときは、第6領域に対して差分値を用いたLD命令を使用することができない可能性がある。
このように、第2,3,4,6領域のうちの最も小さいアドレス(FE01H)に対応する第2領域に基準値を設定することで、差分値を用いたLD命令により、命令に必要な容量が小さくなるため、効率よくデータを設定することができる。
次に、Sb2のステップにおいて、基準アドレス(FE01H)に基づき第2領域に1バイトデータであるデータAを設定する。具体的には、LD命令を用いて、所定レジスタに格納された基準アドレスが指す領域に(すなわち、第1領域)にデータA(たとえば、150)を格納する。
そして、Sb3のステップにおいて、第3領域および第4領域にデータ設定を行う。第3領域は、アドレスFE02Hで特定される1バイトデータを設定可能な領域である。また、第4領域は、アドレスFE03Hで特定される1バイトデータを設定可能な領域である。すなわち、第3領域は、基準アドレスに差分値1を加えたアドレスにより特定される領域である。第3領域および第4領域は、ともに1バイトの領域であるため、第3領域の先頭アドレスに対して2バイトデータを設定することで、第3領域および第4領域の双方に対して、設定を設定することができる。すなわち、設定値を設定する際、FE02Hに対応する第3領域およびFE02Hの次のアドレスであるFE03Hに対応する第4領域のそれぞれに設定値を設定するように2バイトデータを設定ことができる。
具体的には、2バイトデータを設定可能なLDW命令を用いて、基準アドレスに対して差分値(1)を用いて算出したアドレス(FE02H)に基づき第3領域にデータB(たとえば、12)を設定するとともに、第4領域にデータC(たとえば、56)を設定する。LDW命令によって、所定レジスタに格納された基準アドレスに差分値である1を加えたアドレスに、データB+データC×FFH(=12+56×FFH)を設定する。これにより、第3領域には12(データB)を設定し、56にFFHを乗じることで1バイト先の第4領域には56(データC)を設定することができる。
ここで、LD命令によりアドレスを所定レジスタに読み出す処理を行うためには、3バイトの容量が必要である。また、LD命令により所定レジスタに設定されたアドレスが指す領域にデータを設定するためには、2バイトの容量が必要である。すなわち、ある領域に1バイトデータを設定するためには、通常5バイト(3バイト+2バイト)の容量が必要になる。また、2つの領域に対して、それぞれ1バイトデータを設定するためには、10バイト(5バイト×2)の容量が必要となる。
これに対して、上述のように、差分値を用いたLDW命令により、2つの領域に対してそれぞれ1バイトデータを設定する場合は、4バイトの容量が必要である。この場合、上記のようにLD命令によりアドレスを読み出す処理は不要である。すなわち、上記の差分値を用いない方法に比べると、6バイト(10バイト-4バイト)分のデータ容量を節減することができる。このように、差分値を用いて算出したアドレスに基づき第3領域および第4領域にデータを設定することで、アドレスを直接指定して第3領域や第4領域に設定値を設定するよりもプログラムの容量を節減することができる。また、複数の領域に対してまとめてデータを設定することができる。
同様に、他の領域に対しても、1バイトデータを設定する場合にはLD命令を用いてデータ設定を行い、2バイトデータを設定する場合にはLDW命令を用いてデータ設定を行う。Sb4のステップにおいて、第6領域に対しても、基準アドレスに対して差分値を用いて算出したアドレスに基づきデータDを設定する。第6領域は、アドレスFE22Hで特定される1バイトデータを設定可能な領域である。基準アドレスとの差分値は21H(=FE22H-FE01H)であるため、LD命令を用いて、基準アドレスに対して差分値(21H)を用いて算出したアドレス(FE22H)に基づき第6領域にデータDを設定する。
Sb1~Sb4のステップにより、設定値を設定すべき第2,3,4,6領域の全てに設定値を設定すると、内蔵レジスタ設定処理を終了する。これにより、起動処理(メイン)に戻る。そして、起動処理(メイン)が終了すると、電断前の最後の処理(メイン処理)に移行する。メイン処理に移行することで、遊技の制御が開始される。このように、設定値を設定すべき第2,3,4,6領域の全てに設定値を設定した後に遊技の制御を開始することで、設定すべき設定値の設定が完了していない状況で遊技の制御が開始されない。
また、起動処理(メイン)においては、割込禁止設定(Sa1)がされた後に内蔵レジスタ設定処理(Sa3)が実行され、内蔵レジスタ設定処理が実行された後に割込許可設定(Sa5)がされる。このように、設定値を設定すべき第2,3,4,6領域の全てに設定値が設定されるまで割込処理の実行を禁止するため、設定値の設定中に割込処理の実行により意図しない制御が行なわれない。
また、起動処理(メイン)においては、内蔵レジスタ設定処理(Sa3)により第2,3,4,6領域に設定値を設定する以前に、出力ポートの初期設定を行う(Sa2)。このようにすることで、出力ポートから意図しない信号が出力されることを防止することができる。
[メイン処理]
メイン制御部41が行うメイン処理の制御内容について、図9に基づいて説明する。図9は、メイン制御部が行うメイン処理の制御内容を示すフローチャートである。なお、メイン処理は、一単位の遊技毎に繰り返し実行される。そして、メイン処理の一周期が遊技の一単位に相当している。また、メイン処理は、遊技プログラムに含まれ、複数の処理を含む。以下、特に非遊技プログラムに含まれる旨を示さない処理は、遊技プログラムに含まれる。なお、遊技プログラムにより呼び出される遊技プログラムには、非遊技プログラムを呼び出すものもある。
図9に示すように、メイン制御部41は、まず、割込禁止設定(Sc1)を行う。次に、設定されたRAM初期化領域をクリアする(Sc2)。設定されたRAM初期化領域とは、後述のSc36で設定される遊技終了時のRAM初期化領域(領域D)またはSc38で設定されるボーナス終了時のRAM初期化領域(領域C,D)である。これにより、一遊技が終了した場合には領域Dがクリアされ、一遊技が終了した場合であってさらにボーナスが終了した場合には、領域Dに加えて領域Cもクリアされることになる。RAM初期化領域をクリアした後は、一遊技が終了した旨を特定可能な遊技終了コマンドをサブ制御部91に対して送信する(Sc3)。
次に、非遊技プログラムに含まれるRT情報出力処理を行う(Sc4)。RT情報出力処理では、遊技RAM領域の所定領域に設定されているスロットマシン1の遊技状態に関する情報を参照し、当該遊技状態に関する情報(例えば、RTの状態)を外部出力信号として出力ポート7より出力させるように設定する。
Sc5のステップにおいて、タイマ割込が指定回数行われるまで待機する割込複数回待ち処理を行う。ここで、指定回数が1回である場合は、割込1回待ち処理という。たとえば、割込1回待ち処理においては、タイマ割込を許可に設定してタイマ割込処理(メイン)(以下、「割込処理」とも称する)が1回行われるまで待機する。そして、タイマ割込処理(メイン)が1回行われたことが特定されることで、当該割込1回待ち処理を終了する。割込1回待ち処理を行うことにより、次のタイマ割込処理(メイン)が行われるまでの時間が最大限に確保されている状態で、割込1回待ち処理の後に行われる処理を行うことができ、割込1回待ち処理の後に行われる一連の処理の途中で意図せずタイマ割込が行われてしまうことを防止できる。
割込複数回待ち処理(Sc5)においては、RT情報出力処理によって出力される外部出力信号が出力されるように、24回(13.44ms)の割込待ちを行う。そして、割込複数回待ち処理が行われた後、遊技開始待ち処理を行って(Sc6)、前の一遊技の制御の終了後から次の一遊技を開始させるまでの処理を行う。遊技開始待ち処理では、メダルの投入などに応じて賭数を設定する処理を行い、規定数の賭数が設定された状態でスタートスイッチ7の操作が検出されることで、次の一遊技を開始させる処理を行う。
そして、入賞の発生を許容するか否かを決定(内部抽選)するための内部抽選処理を行う(Sc7)。内部抽選処理では、スロットマシン1において予め設定された設定値(1~6)やスタートスイッチ7の検出による遊技の開始と同時に取得された内部抽選用の乱数値に基づいて、入賞の発生を許容するか否か(すなわち、表示結果の導出を許容するか否か)を決定する内部抽選を行う。
その後、AT抽選などを行う出玉制御処理(Sc8)を行った後、割込禁止設定を行い(Sc9)、非遊技プログラムに含まれる当選情報出力処理を行う(Sc10)。当選情報出力処理を行った後は、割込許可を行う(Sc11)。当選情報出力処理では、遊技RAM領域の所定領域に設定されている内部抽選の抽選結果を参照し、内部抽選における特別役の当選状況、一般役の当選状況を特定可能なデータを、非遊技プログラムである後述の試験信号出力処理から参照可能にRAM41cの所定領域に設定する。なお、当該当選情報出力処理によりRAM41cの所定領域に設定された特別役の当選状況、一般役の当選状況は、後述の試験信号出力処理にて参照されて、試験信号として出力されるようになっている。
次に、Sc12のステップにおいて遊技開始時のコマンド送信処理を実行し、割込複数回待ち処理(Sc13)を実行する。遊技開始時のコマンド送信処理では、一遊技の開始時点における各種の制御状態を特定可能な複数のコマンドを含む制御状態コマンド群や一遊技が開始された旨を特定可能な遊技開始コマンドをサブ制御部91に対して送信する。また、割込複数回待ち処理(133ms待機)を実行することで、割込処理において、上記コマンドが送信可能となる。
Sc13のステップにおいて遊技開始コマンド処理を行った後は、外部出力信号処理(Sc14)を実行する。Sc14のステップにおいて外部出力信号処理を行った後は、前回の遊技におけるリール回転開始時点からの経過時間を計時するためにRAM41cの所定領域に設定されている一遊技時間管理用タイマを参照して、一遊技時間管理用タイマに基づいて前回の遊技におけるリール回転開始時点から一遊技の規定時間(本実施例では4.1秒)が経過したか否かを判定する(Sc15)。そして、一遊技の規定時間が経過していないと判定した場合は、一遊技時間管理用タイマに基づいて一遊技の規定時間が経過するまで待機し、一遊技時間管理用タイマに基づいて一遊技規定時間が経過した後に、Sc16に進む。Sc15のステップにおいて一遊技の規定時間が経過していると判定した場合は、Sc16に進む。なお、一遊技時間管理用タイマは、遊技におけるリール回転開始時点から一遊技の規定時間(本実施例では4.1秒)が経過したときに、0となるようになっており、一遊技時間管理用タイマが0か否かに基づいて一遊技規定時間が経過したか否かを判定できるようになっている。
Sc16のステップにおいて割込禁止設定を行い、リール回転開始処理を行う(Sc17)。リール回転開始処理においては、リールモータ32L、32C、32Rを励磁制御する際の励磁パターンとして、遊技用の所定速度でリールを回転制御する通常加速パターンをRAM41cの所定領域に設定し、RAM41cに設定されている励磁パターンに基づいてリールモータ32L、32C、32Rを励磁制御することでリールの回転を開始させる。
次に、リール2L,2C,2Rの回転制御を開始させる旨を特定可能なリール回転開始コマンドをサブ制御部91に対して送信するリール回転開始コマンド送信処理を行う(Sc18)。リール回転開始コマンド送信処理を行った後は、リールの停止制御を行うリール停止制御処理を行う(Sc19)。リール停止制御処理では、回転制御中のリールが所定の定速回転で回転されているかを判定し、定速回転で回転されていないリールがある場合には、リールエラーを検出して、該当するリールについて定速回転まで加速させる励磁パターンを設定して、回転制御中のすべてのリールが定速回転で回転されるように制御する。一方、回転制御中のすべてのリールが定速回転で回転されている場合には、回転制御中のリールの停止操作の受け付けを有効化し、ストップスイッチによる停止操作が行われるまで待機する。そして、停止操作が有効化されているリールについて有効な停止操作が検出されること(停止操作が有効なストップスイッチについてONエッジデータが検出されること)で、有効な停止操作が行われたリールについて、リール停止初期設定処理にて設定された情報などに基づいて所定の停止位置で停止させるリール停止制御を行う。このようなリール停止制御を、回転制御中のリールについて繰り返し行って、すべてのリールの回転を停止させることで、リール停止処理を終了させる。
そして、リール停止処理を終了させた後は、入賞判定処理(Sc20)を行う。入賞判定処理では、内部抽選結果およびリール2L,2C,2Rに停止している図柄組合せに基づいて入賞が発生しているか否かを判定する。そして、Sc20のステップにおける入賞判定処理を行った後は、メダル投入部4からのメダルの投入に関する異常やホッパーからのメダルの払い出しに関する異常が検出されているか否かを判定する投入払出エラーチェック処理を行う(Sc21)。
投入払出エラーチェック処理では、払出センサ34cの信号(以下、メダル払出信号、あるいは、払出信号とも称する)の遷移に異常が検出された旨を示す払出エラーフラグや、投入メダルセンサ31の信号(以下、メダル投入信号、あるいは、投入信号とも称する)の遷移に異常が検出された旨を示す投入エラーフラグが、RAM41cの所定領域に設定されているか否かを判定し、上記エラーフラグが設定されている場合には、エラー処理を行う。エラー処理では、上記エラーフラグに基づき、エラーコード(E4、E5)を遊技補助表示器12に表示させるように制御するとともに、エラー状態の解除条件が成立したことが特定されるまでエラー状態の制御を行う。エラー状態の解除条件が成立した場合はエラー処理を終了し、エラー処理を実行した旨を示すエラー実行フラグを所定のレジスタに設定し、投入払出エラーチェック処理を終了する。
投入払出エラーチェック処理(Sc21)を行った後は、割込1回待ち処理を行い(Sc22)、割込処理が行われるまで待機する。そして、割込処理が行われた後は、割込禁止設定を行い(Sc23)、非遊技プログラムに含まれる役比モニタ用データ処理を行う(Sc24)。そして、役比モニタ用データ処理を行った後は、割込許可設定を行う(Sc25)。割込1回待ち処理を行った後に、役比モニタ用データ処理(Sc24)を行うことで、次のタイマ割込処理(メイン)が行われるまでの時間が最大限に確保されている状態で、役比モニタ用データ処理を行うことができ、役比モニタ用データ処理の途中で意図せずタイマ割込が行われてしまうことを防止できる。
役比モニタ用データ処理では、非遊技プログラムに含まれる各状態カウント処理を行って、予め定められた所定期間(例えば、現在のゲームから6000ゲーム前までの期間、現在のゲームから175000ゲーム前までの期間、遊技者にとって有利な状態に制御された区間(有利区間)など)におけるメダルの払い出し枚数に関するデータを更新する。
次に、不正入賞判定処理(Sc26)を行う。不正入賞判定処理では、内部抽選結果およびリール2L,2C,2Rに停止している図柄組合せに基づいて不正入賞が発生しているか否かを判定する。その後、RT関連処理(Sc27)を行う。RT関連処理では、リールにRT状態の移行を伴うRT移行図柄の組合せが停止している場合に、RT状態に更新する。次に、ボーナス終了条件の判定処理を行うボーナス終了チェック処理(Sc28)を実行し、遊技状態設定処理(Sc29)を実行する。遊技状態設定処理では、ボーナス終了チェック処理で実行される処理以外のボーナス開始条件の判定処理や各種データの更新処理などを実行する。次に、遊技終了時に実行される有利区間の終了判定などを行うAT状態管理処理(Sc30)を実行し、RT情報コマンドを送信するコマンド送信処理(Sc31)を行う。
次に、ゲームの結果として発生した入賞に応じた枚数のメダルを払い出すメダル払出処理を行う(Sc32)。メダル払出処理では、発生した入賞に応じて、入賞役毎に予め定められた所定枚数のメダルを遊技者に対して付与して、付与するメダル枚数分をクレジットに加算し、クレジットが上限数(本実施例では、50)に達した場合には、ホッパーモータ34bを駆動させてクレジットに加算されなかった分のメダルをメダル払出口9から払い出す。メダル払出処理を行った後は、払出終了コマンドを送信する払出終了コマンド送信処理(Sc33)を行う。
そして、遊技終了時設定処理を行って(Sc34)、再遊技役の図柄組合せがリール2L,2C,2Rに停止しているか否かを判定し、再遊技役の図柄組合せが停止している場合には、次ゲームにおいて再遊技を行うための賭数を設定する処理(本実施例では、RAM41cの所定領域に設定されているリプレイ用カウンタに、再遊技用メダルとして3を設定する。)や、リプレイフラグをRAM41cの所定領域に設定する処理、リプレイ中LED20をON状態(点灯状態)に制御する処理などを行う。そして、有利区間終了時のRAMの初期化処理や有利区間中信号の設定処理などを行う有利区間関連処理(Sc35)を実行する。
そして、遊技終了時のRAM初期化領域(領域D)を設定する(Sc38)。ボーナスが終了した場合には、ボーナス終了時のRAM初期化領域(領域C,D)を設定し(Sc38)、Sc1に戻る。ボーナスが終了していない場合には、遊技終了時のRAM初期化領域(領域D)が設定された状態で、Sc1に戻る。また、先に説明したように、Sc36またはSc38で設定された領域は、Sc2においてクリアされる。
Sc1のステップに戻った後は、Sc1~Sc38のステップを繰り返し行う。メイン処理が一巡することで、一単位の遊技の制御に関する処理が終了することとなり、一単位の遊技毎にメイン処理が繰り返し実行されることとなる。
このように、本実施例のメイン制御部41が行うメイン処理は、遊技プログラムに含まれており、非遊技プログラムに含まれる処理、例えば、RT情報出力処理、当選情報出力処理、役比モニタ用データ処理などを呼び出すようになっている。
また、メイン制御部41は、非遊技プログラムに従って各種処理を行う場合には、上述のCALL命令などを用いて遊技プログラムから非遊技プログラムを呼び出すことで、当該非遊技プログラムに従って各種処理を行い、当該非遊技プログラムに応じた各処理が終了することで、呼出元の遊技プログラムに復帰するようになっている。
[遊技開始待ち処理]
本実施例のメイン制御部41が行う遊技開始待ち処理の制御内容について、図10に基づいて説明する。図10は、メイン制御部が行う遊技開始待ち処理の制御内容を示すフローチャートである。なお、遊技開始待ち処理は、遊技プログラムに含まれており、遊技プログラムに含まれるメイン処理において呼び出されるサブルーチンである。
図10に示すように、遊技開始待ち処理では、まず、クレジット枚数コマンドを送信するクレジット枚数コマンド送信処理(Sd1)を実行する。次に、メダル投入枚数表示処理を行い(Sd2)、スロットマシン1に投入済みのメダル枚数に応じた1~3BETLED14~16をON状態(点灯状態)に制御する。
その後、ホッパータンク34aが満タン状態である旨を特定可能なエラーコード(E1:オーバーフローエラー)を所定のレジスタに準備し、所定のポート入力バッファを参照して、満タンセンサ35aの確定データに基づいてホッパータンク34aが満タン状態であるか否かを判定する(Sd3)。Sd3のステップにおいてホッパータンク34aが満タン状態であると判定した場合には、エラー処理を行う(Sd4)。エラー処理では、遊技の進行が不能化されるエラー状態に制御する。また、所定のレジスタに準備されているエラーコード(E1)を特定可能なエラーコマンドをサブ制御部91に対して送信し、当該エラーコード(E1)をRAM41cの所定領域にその他の処理でも参照可能なエラーフラグとして設定する。また、当該エラーコード(E1)を遊技補助表示器12に表示させるように制御する。その後は、所定のレジスタに準備されているエラーコード(E1)に応じたエラー状態の解除条件が成立したことが特定されるまでエラー状態の制御を行う。エラーコード(E1)がレジスタに設定されてエラー状態に移行された場合には、満タンセンサ35aの確定データがOFF状態となるまで待機し、当該満タンセンサ35aの確定データがOFF状態となることで、エラー状態を解除する旨のエラーコマンド(解除)をサブ制御部91に対して送信し、エラー処理を終了させて、Sd5のステップへ進む。
Sd3のステップにおいてホッパータンク34aが満タン状態でないと判定した場合、およびSd4のステップにおけるエラー処理を終了した場合には、RAM41cの所定領域に設定されているリプレイ用カウンタの値を所定のレジスタに読み込む(Sd5)。なお、リプレイ用カウンタには、前回のメイン処理における遊技終了時設定処理により、前回の遊技の結果に応じた値が設定されており、前回の遊技において再遊技役が入賞して再遊技が付与された場合には、遊技を行うために必要な賭数の規定数に相当する数値(例えば、3)が設定されている一方で、前回の遊技において再遊技が付与されなかった場合には、0が設定されている。
その後、RAM41cのリプレイ用カウンタをクリアし(Sd6)、Sd5のステップにおいて読み込んだリプレイ用カウンタの値が0より大きいか否か、すなわち再遊技が付与されている否かを判定し(Sd7)、再遊技が付与されている場合には、メダル投入実行処理を行う(Sd8)。メダル投入実行処理では、リプレイ用カウンタの値を賭数(BET数)に設定するとともに、1~3BETLED14~16をON状態(点灯状態)に設定して規定数の賭数(本実施例では、3)が設定されている旨を報知する。また、賭数の設定に使用されたメダル枚数を特定可能な投入枚数コマンドをサブ制御部91に対して送信する。
Sd7のステップにおいてリプレイ用カウンタの値が0である、すなわち再遊技が付与されていないと判定した場合、およびSd8のステップにおいて再遊技が付与されたことによりメダル投入実行処理を行った後は、メダル手入れ許可設定処理を行う(Sd9)。メダル手入れ許可設定処理では、RAM41cの所定領域に設定されているクレジットの値を参照し、当該クレジットの値が最大値(本実施例では、50)に達していない場合に、メダル投入部4からのメダルの投入を許可する旨を示すメダル手入れ許可フラグをRAM41cの所定領域に設定する。
Sd9のステップにおいてメダル手入れ許可設定処理を行った後は、割込1回待ち処理を行う(Sd10)。割込1回待ち処理を行うことで、タイマ割込処理(メイン)が行われて各種スイッチ類の検出状態やLEDの点灯状態、各種タイマなどが更新されることとなり、これらの各種スイッチ類の検出状態が更新された状態で、その後の処理(例えば、メダル投入払出エラーチェック処理、メダル投入信号処理、操作入力受付処理)を行わせることができる。
Sd10のステップにおいて割込1回待ち処理を行って割込処理が1回行われた後は、投入払出エラーチェック処理を行う(Sd11)。そして、RAM41cの所定領域にエラー実行フラグが設定されているか否かに基づいて、エラーチェック処理にてエラー処理が実行されたか否かを判定する(Sd12)。
Sd12のステップにおいてエラーチェック処理にてエラー処理が実行されたと判定した場合は、Sd10のステップに戻り、Sd10~Sd12のステップの各処理を再び行う。その後、メダル払出信号の遷移やメダル投入信号の遷移に異常が検出されない状態で、Sd10~Sd12のステップの各処理が行われることで、エラー実行フラグが設定されていない状態で、Sd12のステップの処理が行われることとなる。
一方、Sd12のステップにおいてエラー実行フラグが設定されていないと判定した場合は、メダル投入信号処理を行う(Sd13)。メダル投入信号処理では、メダル投入信号の遷移に基づいてメダルの投入状況を判定する。そして、正常なメダルの投入が検出された場合は、賭数の設定やクレジットにメダルを受け付けて、メダル投入信号処理を終了する。一方、異常なメダルの投入が検出された場合は、エラーコード(E5)を準備してエラー処理を行う。その後、エラー状態が解除されてエラー処理が終了されることで、メダル投入信号処理を終了する。
Sd13のステップにおいてメダル投入信号処理を行った後は、各種スイッチの操作を有効化して、操作が有効化されているスイッチの操作が行われることで、当該スイッチによる操作を受け付ける操作入力受付処理を行う(Sd14)。
操作入力受付処理では、メダル投入信号の遷移に基づいてメダルが通過中でないときに、RAM41cの所定領域に設定されているクレジットが、1以上である場合には、MAXBETスイッチ6による操作の受け付けを有効化する。また、メダル投入信号の遷移に基づいてメダルが通過中でないときに、RAM41cの所定領域に設定されている賭数が規定数である場合には、スタートスイッチ7による操作の受け付けを有効化する。また、メダル投入信号の遷移に基づいてメダルが通過中でない場合に、精算スイッチ10および設定キースイッチ37による操作の受け付けを有効化する。
また、操作入力受付処理では、スタートスイッチ7による操作が有効な状態で、スタートスイッチ7の操作が検出された場合には、スタートスイッチ7が操作された旨を示すスタートフラグを所定レジスタに設定した後、流路切替ソレノイド30をOFF状態としてメダルの流路をメダル払出口9側に切り替える処理を行う。また、設定キースイッチ37による操作が有効な状態で、設定キースイッチ37による操作が検出された場合には、設定値表示器24に設定値を表示させる設定値表示処理を行う。また、精算スイッチ10による操作が有効な状態で、精算スイッチ10による操作が検出された場合には、クレジットに記憶されている分のメダルを遊技者に返却する精算処理を行う。また、MAXBETスイッチ6による操作が有効な状態で、MAXBETスイッチ6による操作が検出された場合には、クレジットに基づいて可能な範囲で規定数までのメダル枚数を賭数に設定し、賭数に設定した分のメダル枚数をクレジットから減算する処理を行う。操作が検出されたスイッチ類に応じた処理を行った後、操作入力受付処理を終了させる。
ここで、たとえば、精算スイッチ10と設定キースイッチ37とが、同時に操作された場合は、次のような処理が行われる。精算スイッチ10と設定キースイッチ37とでは、設定キースイッチ37の方が処理の優先順位が高い。このため、先に、設定キースイッチ37がON状態であるか否かを判定し、設定キースイッチ37がON状態であれば、設定変更状態に移行する。設定キースイッチ37がOFF状態であれば、精算スイッチ10がON状態であるか否かを判定し、精算スイッチ10がON状態であれば、精算処理を行う。
精算スイッチ10と設定キースイッチ37とが同時に操作された場合において、設定変更状態に移行し、さらに設定変更状態を終了したとする。設定変更状態を終了したときに、未だ精算スイッチ10がON状態を継続している場合には、精算処理を行う。設定変更状態を終了したときに、精算スイッチ10がOFF状態であれば、精算処理を行わない。
また、上記とは別の処理方法も考えられる。たとえば、精算スイッチ10と設定キースイッチ37とが同時にON状態になっているか否かを判定し、同時にON状態になっている場合は、いずれの処理も行わないようにしてもよい。この場合、いずれか一方がON状態になるのを待って、ON状態になった方に対して処理を行う。しかし、このように同時にON状態になっているか否かを判定する処理を行うよりも、上記のように優先順位の高い方の処理を行う方が、処理を簡素化することができる。
Sd14のステップにおいて操作入力受付処理を行った後は、スタートフラグに基づいてスタートスイッチ7による有効な操作が検出されたか否かを判定する(Sd15)。所定のレジスタにスタートフラグが設定されておらず、スタートスイッチ7による有効な操作が検出されなかったと判定した場合は、Sd10のステップに戻り、スタートスイッチ7による有効な操作が検出されるまで、Sd10~Sd15の処理を繰り返す。
Sd16のステップにおいて、所定のレジスタにスタートフラグが設定されており、スタートスイッチ7による有効な操作が検出されたと判定した場合は、内部抽選用の乱数値を乱数回路42から取得して、RAM41cの所定領域に設定する。その後、設定されている賭数を特定可能なメダル投入状態データをRAM41cの所定領域に設定し(Sd17)、スタート有効LED18をOFF状態(消灯状態)に設定し(Sd18)、メダル手入れ許可フラグをRAM41cの所定領域からクリアし(Sd19)、遊技補助表示器12における払出枚数の表示をクリアするように制御して(Sd20)、遊技開始待ち処理を終了させる。
[投入払出エラーチェック処理]
本実施例のメイン制御部41が行う投入払出エラーチェック処理の制御内容について、図11に基づいて説明する。図11は、メイン制御部が行う投入払出エラーチェック処理の制御内容を示すフローチャートである。なお、投入払出エラーチェック処理は、遊技プログラムに含まれており、遊技プログラムに含まれるメイン処理や遊技開始待ち処理において呼び出されるサブルーチンである。
図11に示すように、投入払出エラーチェック処理では、まず、Se1のステップにおいて、RAM41cの所定領域に格納されているセンサエラーフラグを取得する。センサエラーフラグは、払出エラーフラグと投入エラーフラグとを含む。払出エラーフラグおよび投入エラーフラグのうちのいずれかがONに設定されている場合、センサエラーフラグはON状態となる。また、払出エラーフラグおよび投入エラーフラグのいずれもOFFに設定されている場合、センサエラーフラグはOFF状態となる。
払出エラーフラグは、払出センサ34cの信号(メダル払出信号)の遷移の異常(メダル払出エラー)が検出された旨を示すフラグである。また、投入エラーフラグは、投入メダルセンサ31の信号(メダル投入信号)の遷移の異常(メダル投入エラー)が検出された旨を示すフラグである。
取得したセンサエラーフラグがONに設定されている場合(Se2がYES)、Se3に進む。一方で、取得したセンサエラーフラグがOFFに設定されている場合(Se2がNO)、Se16に進む。
Se3のステップにおいて、まず、メダル投入エラーが検出された旨を示すエラーコード(E5)を所定のレジスタに設定する。そして、ステップSe4において、払出エラーフラグがOFF状態である場合は、Se6に進む。一方、Se4のステップにおいて、払出エラーフラグがON状態である場合は、メダル払出エラーが検出された旨を示すエラーコード(E4)を所定のレジスタに設定して、Se6に進む。すなわち、メダル払出エラーが検出された場合はエラーコート(E4)を所定のレジスタに設定し、メダル投入エラーが検出された場合はエラーコート(E5)を所定のレジスタに設定する。
そして、全リール停止LEDオフ処理(Se6)を実行する。全リール停止LEDオフ処理は、リールの停止操作が有効である旨を点灯により報知する停止有効LEDを全て消灯させるための設定を行う処理である。そして、流路切替ソレノイドオフ処理(Se7)を実行する。流路切替ソレノイドオフ処理は、流路切替ソレノイド30をOFF状態するために設定を行う処理である。そして、所定のレジスタに設定されたエラーコードに基づき、エラー番号の設定を行った上で(Se8)、エラー処理(Se9)を実行する。
エラー処理を実行した後は、割込禁止設定を行い(Se10)、RAM41cの所定領域からセンサエラーフラグを取得する(Se11)。取得したエラーフラグに対して、エラー処理により解除された払出エラーまたは投入エラーを解除して更新し(Se12)、更新されたセンサエラーフラグRAM41cの所定領域に格納する(Se13)。
次に、Se14のステップにおいて、割込許可設定を行い、エラー処理を実行した旨を示すエラー実行フラグをON状態に設定して(Se15)、投入払出エラーチェック処理を終了する。
一方で、取得したセンサエラーフラグがOFFに設定されている場合(Se2がNO)、Se16ステップにおいて、エラー実行フラグをOFF状態に設定して、投入払出エラーチェック処理を終了する。
[エラー処理]
本実施例のメイン制御部41が行うエラー処理の制御内容について、図12に基づいて説明する。図12は、メイン制御部が行うエラー処理の制御内容を示すフローチャートである。なお、エラー処理は、遊技プログラムに含まれており、遊技プログラムに含まれるメイン処理や投入払出エラーチェック処理などにおいて呼び出されるサブルーチンである。
図12に示すように、エラー処理では、まず、エラー処理が実行される前に設定されたエラー番号(エラーコード)を格納する。たとえば、エラー処理が投入払出エラーチェック処理から呼び出された場合は、E4またはE5のエラーコードをRAM41cの所定領域にその他の処理でも参照可能なエラーフラグとして設定する。
Sf2のステップにおいて、エラーコードを特定可能なエラーコマンドを送信するエラー開始コマンド送信処理を実行する。Sf3のステップにおいて、エラーコードに対応するエラー要因を取得し、Sf4のステップにおいて、エラーコードを遊技補助表示器12に表示させるように制御するエラー番号表示処理を行う。その後は、所定のレジスタに準備されているエラーコードに応じたエラー状態の解除条件が成立したことが特定されるまでエラー状態の制御を行う(Sf5)。
たとえば、エラーコード(E4)が所定のレジスタに準備されてエラー状態に移行された場合には、エラー状態の解除条件として、払出センサ34cの検出状態がOFF状態であり、かつリセット/設定スイッチ38またはリセットスイッチ23がON状態となったことが成立するまで待機する。また、エラーコード(E5)がレジスタに準備されてエラー状態に移行された場合には、エラー状態の解除条件として、投入メダルセンサ31a~31cの検出状態がOFF状態であり、かつリセット/設定スイッチ38またはリセットスイッチ23がON状態となったことが成立するまで待機する。
エラー状態の解除条件が成立した場合(Sf5でYES)は、Sf6に進み、割込1回待ち処理を行う。そして、入力バッファ1,2を取得し(Sf7)、取得した入力バッファ1,2に基づき、払出センサ、投入メダルセンサ、満タンセンサが正常であるかを判定する(Sf8)。Sf8において正常であると判断した場合はSf9に進む。一方、Sf8において正常でないと判断した場合はSf6に戻り、Sf8において正常であると判断されるまで、Sf6~Sf8のステップを繰り返す。
Sf9のステップにおいて、入力バッファ0のONエッジ状態を取得し、リセット/設定スイッチ38またはリセットスイッチ23がONエッジ状態となるまで(操作がされるまで)待機し(Sf10でNO)、リセット/設定スイッチ38またはリセットスイッチ23がONエッジ状態となる(Sf9でYES)ことで、Sf11に進む。
Sf11のステップにおいて、払出枚数表示データを格納し、エラー番号をクリアし(Sf12)、エラー解除コマンド送信処理(Sf13)を実行する。エラー解除コマンド送信処理においては、エラー状態を解除する旨のエラー解除コマンドを送信する。Sf14のステップにおいて、割込1回待ち処理を行って、エラー処理を終了する。
[リール停止制御処理]
本実施例のメイン制御部41が行うリール停止制御処理の制御内容について、図13および図14に基づいて説明する。図13は、メイン制御部が行うリール停止制御処理の制御内容を示すフローチャート(その1)である。なお、リール停止制御処理は、遊技プログラムに含まれており、遊技プログラムに含まれるメイン処理において呼び出されるサブルーチンである。
図13に示すように、リール停止制御処理では、まず、停止有効LEDを全て消灯させるための設定を行う全リール停止LEDオフ処理を実行する(Sg1)。Sg2のステップでは、割込1回待ち処理を実行する。割込1回待ち処理では、タイマ割込処理(メイン)が1回行われるまで待機する。Sg3のステップでは、割込許可設定を行う。
Sg4のステップでは、前述の払出投入エラーチェック処理を実行する。その結果、投入払出エラー(メダル投入エラーまたはメダル払出エラー)が発生した場合には(Sg5でYES)、Sg2のステップに戻り、Sg2~Sg5の処理を繰り返す。投入払出エラーが解除された場合には、Sg6のステップに進む。すなわち、投入払出エラーが発生している状態においては、Sg6以降のステップに進むことができない。
投入払出エラーが発生しなかった場合には(Sg5でNO)、Sg6のステップに進む。Sg6のステップにおいて、リール回転エラーが発生していない場合には(Sg6でNO)、Sg10のステップに進む。一方で、リール回転エラーが発生している場合には(Sg6でYES)、全リール停止LEDオフ処理(Sg7)を実行し、リール回転エラーのエラーコード(E6)を設定した上で、エラー処理(Sg9)を実行する。エラー処理では、全てのリールの回転を停止させて、ゲームを進行させないように不能化するエラー状態に制御して待機する。その後、リセット操作により当該エラー状態が解除されることで、エラー処理を終了する。エラー処理の終了後には、Sg2のステップに戻り、再度Sg2~Sg9までの処理を繰り返し、リール回転エラーが発生していない場合に、Sg10のステップに進む。すなわち、リール回転エラーが発生している状態においては、Sg10以降のステップに進むことができない。
Sg10のステップでは、内部当選信号出力タイマを取得する。ステップSg11において内部当選信号出力タイマが0になった場合(Sg11でYES)にはSg12のステップに進み、ステップSg11において内部出力タイマが0になるまで(Sg11)、Sg10,Sg11のステップを繰り返す。内部当選信号出力タイマは、内部当選信号が出力されてから所定時間(2秒経過)が経過したときに0になるタイマである。このため、内部当選信号が出力されてから2秒が経過するまでは、次の処理(Sg12)に進むことができない。
なお、Sg10のステップの前に、リールの停止制御中はストップスイッチを無効にするような処理を入れてもよい。たとえば、あるリールの停止制御が開始された場合には、リールの回転を停止するまでの最大停止遅延時間(190ms)待機させる処理を行うようにしてもよい。しかし、本実施の形態では、このような処理を入れていないため、後述するように、複数のストップスイッチをほぼ同時に操作した場合、1割込でもずれていればリール停止滑りコマ格納処理(Sg32)が実行可能となり、複数のリールをほぼ同時に停止させることができる。
Sg12のステップでは、割込禁止設定を行う。次に、停止有効LEDの状態を特定可能な停止有効LED状態アドレスを読み込み(Sg13)、回転速度状態データを取得する(Sg14)。回転速度状態データは、回転制御中の各リールモータが定速状態で回転しているか否かを特定可能な情報である。そして、回転速度状態データに基づいて、回転制御中のリールの回転状態が定速状態であるか否かをリール毎に特定し、回転制御中の全てのリールが定速回転で回転されているか否かを判定する(Sg15)。
そして、Sg15のステップにおいて、少なくともいずれか1つのリールが定速回転で回転しておらず、回転制御中の全てのリールが定速回転で回転されている状況でないと判定した場合には、Sg1のステップに戻り、Sg1~Sg15のステップを繰り返し実行して、回転制御中の全てのリールが定速回転で回転されている状況となるまで待機する。一方、Sg15のステップにおいて、回転制御中の全てのリールが定速回転で回転されていると判定した場合には、回転制御を行っている全てのリールについて停止操作の受け付けが有効になる。
Sg16において、停止有効LED状態データをOFFに設定し、リールが加速済みである場合(Sg17でYES)には、リール加速終了コマンドを送信するリール加速コマンド送信処理(Sg18)を実行し、Sg19に進む。一方で、リールが加速済みでない場合には(Sg17でNO)、リール加速コマンド送信処理を実行することなく、Sg19に進む。
次に、払出枚数表示データを格納し(Sg19)、入力バッファのONエッジ状態を取得し(Sg20)、停止有効LED状態アドレスを読み込んだ後に、有効なストップスイッチ操作状態のみを取得し(Sg21)、有効なストップスイッチの操作(停止操作)があったか否かを判定する(Sg22)。有効なストップスイッチの操作があったか否かは、いずれかのストップスイッチにおいて、停止有効LEDがON状態であり、かつストップスイッチ信号がONエッジ状態であることにより判定される。
Sg22のステップにおいて、有効なストップスイッチの操作がなかったと判定した場合には、停止有効LED状態データを出力バッファ2に格納し(Sg23)、出力ポート2出力処理(Sg24)を行う。そして、Sg2のステップに戻り、Sg2~Sg24のステップを繰り返し実行して、有効なストップスイッチの操作が検出されるまで待機する。その後、Sg22のステップにおいて有効なストップスイッチの操作が検出された場合(Sg22でYES)には、Sg25のステップに進む。
図14は、メイン制御部が行うリール停止制御処理の制御内容を示すフローチャート(その2)である。図14に示すように、Sg25のステップにおいて、停止対象となるリールを設定する。その際、左ストップスイッチ、中ストップスイッチ、右ストップスイッチの順に、有効なストップスイッチの操作が検出されたか否かを判定していき、最初に判定されたストップスイッチに対応するリールが停止対象となる。すなわち、停止対象となるリールが複数ある場合は、左リール、中リール、右リールの順に優先的に選択されることとなる。次に、割込許可設定を行い(Sg26)、出力バッファ2をクリアした上で出力ポート2出力処理(Sg27)を実行する。
次に、Sg28のステップにおいて、割込禁止設定を行う。そして、Sg29のステップにおいて、RAM41cの所定領域に設定されている図柄ステップ数カウンタに基づいて、停止操作が検出されたリールの図柄ステップ数を取得する。Sg30のステップにおいては、図柄ステップ数がRAM41cの所定領域に設定されている判定範囲内にあるか否かを判定する。図柄ステップ数が所定の判定範囲内であれば(Sg30がYES)、ステップSg32に進む。一方、図柄ステップ数が判定範囲でなければ(Sg30がNO)、割込許可設定を行い(Sg31)、Sg28のステップに戻り、図柄ステップ数が所定の判定範囲となるまでSg28~Sg31のステップを繰り返す。Sg31のステップにおいて割込許可設定がされたときに、割込処理を実行して、当該割込処理において図柄ステップ数カウンタを更新する。
図柄ステップ数は、リールモータの1周分のステップ数のうち1つの図柄に対応するステップ数である。たとえば、1図柄あたり16ステップ(あるいは17ステップ)が割り当てられる。16ステップが割り当てられる場合は、図柄の下端が0ステップ、上端が15ステップとなる。図柄ステップ数カウンタは、リールの所定の判定位置を通過する図柄の図柄ステップ数を計数するためのカウンタである。16ステップ図柄の場合は、0~15がカウントされる。本実施の形態においては、16ステップ図柄であっても17ステップ図柄であっても、共通のステップである11ステップにおいて、図柄ステップ数を取得する。すなわち、上記判定範囲は11ステップのみとなる。すなわち、図柄ステップ数が11以外は、判定範囲外であると判定される。なお、これに限らず、0~11ステップを判定範囲とするものであってもよいし、16ステップ図柄と17ステップ図柄とで判定範囲を異ならせるものであってもよい。
図柄ステップ数が判定範囲内であれば(Sg30がYES)、割込禁止設定が維持された状態で、リール停止滑りコマ格納処理(ステップSg32)を実行する。リール停止滑りコマ格納処理においては、RAM41cの所定領域に設定されている図柄番号カウンタの値を取得し、当該図柄番号カウンタの値を停止操作が行われたときの図柄番号(操作時図柄番号とも称する)としてRAM41cの所定領域に設定する。本実施の形態においては、1リールに配置された20図柄の各々には、リール基準位置の図柄を基準として連続する番号(0~19)が図柄番号として予め割り当てられており、図柄番号カウンタは、所定の判定位置に位置している図柄の図柄番号(操作時図柄番号とも称する)を計数するためのカウンタである。
また、RAM41cの所定領域に設定されている停止制御テーブルを参照して、操作時図柄番号に基づいて停止操作が行われたタイミングに対応する滑りコマ数を特定し、当該滑りコマ数をRAM41cの所定領域に設定する。また、当該滑りコマ数に応じた位置、すなわち滑りコマ数に対応する図柄番号の図柄で該当するリールを停止させるために停止要求をRAM41cの所定領域に設定して、該当するリールを減速させて停止させる制動制御を開始させる。
Sg32のステップにおいてリール停止滑りコマ数設定処理を実行した後は、リール停止が受付けられたことを特定可能なリール停止受付時コマンド送信処理(Sg33)を実行し、滑りコマ数を特定可能な滑りコマ数コマンド送信処理(Sg34)を実行し、リール停止位置を特定可能なリール停止位置コマンド送信処理(Sg35)を実行する。
次に、入賞フラグにマスク処理(Sg36)を行った上で、入賞予想処理(Sg37)を実行する。入賞予想処理は、図柄組合せが導出される前に、入賞判定処理の一部に相当する処理を実行するものである。次に、リールが停止することを特定可能なリール停止コマンド送信処理(Sg38)を実行する。
次に、Sg39のステップにおいて、停止対象となっているリールが最終停止(第3停止)であるのか否かを判定する。最終停止である場合(Sg39でYES)は、Sg40に進む。一方で、最終停止でない場合(Sg39でNO)、すなわち、第1停止または第2停止である場合は、Sg2に戻り、全てのリールに対してリール停止滑りコマ数設定処理が実行されるまで(最終停止となるまで)、Sg2~Sg39の処理を繰り返す。
なお、割込禁止設定が行われている期間内に、本来の割込処理のタイミングが含まれていた場合には、次に、割込許可設定が行われたタイミングで、割込処理が実行される。たとえば、リール停止滑りコマ数設定処理が実行された後に、割込許可設定が行われたときに、当該設定タイミングにおいて、リール停止滑りコマ数設定処理で設定された滑りコマ数および停止制御フラグに基づいて、該当するリールを減速させて停止させるための制動制御を開始する。
Sg39のステップにおいて最終停止であると判定された場合は、払出枚数表示データをクリアする(Sg40)し、リールモータ状態データを取得する(Sg41)。取得したリールモータ状態データに基づき、全てのリールモータがOFF状態であるか否かを判定する(Sg42)。全てのリールモータがOFF状態でない場合には(Sg42でNO)、全てのリールモータがOFF状態となるまで待機する。全てのリールモータがOFF状態となった場合には(Sg42でYES)、Sg43に進む。リールモータ状態データは、第1~第3リールモータφ0~φ3信号および流路切替ソレノイド信号の出力状態を特定可能なデータである。
Sg43のステップにおいて、投入払出エラーチェック処理を実行する。Sg44のステップにおいて、入力バッファ0を取得し、ストップスイッチが押下状態(すなわち、ON状態が継続している状態)であるか否かを判定する(Sg45)。ストップスイッチが押下状態である場合(Sg45でYES)は、ストップスイッチの押下状態が解除されるまで、Sg43~Sg45の処理を繰り返し、ストップスイッチの押下状態が解除された場合は(Sg45でNO)は、リール停止制御処理を終了する。
[遊技終了時の設定処理]
本実施例のメイン制御部41が行う遊技終了時の設定処理の制御内容について、図15に基づいて説明する。図15は、メイン制御部が行う遊技終了時の設定処理の制御内容を示すフローチャートである。なお、遊技終了時の設定処理は、遊技プログラムに含まれており、遊技プログラムに含まれるメイン処理において呼び出されるサブルーチンである。
図15に示すように、遊技終了時の設定処理では、まず、入賞フラグを取得する(Sh1)。入賞フラグは、入賞が発生したときに設定され、入賞の種類を特定可能なフラグである。次に、入賞フラグに基づき、リプレイ入賞が発生しているかを判定する(Sh2)。リプレイ入賞が発生している場合には(Sh2でYES)、Sh3に進み、リプレイ入賞が発生していない場合には(Sh2でNO)、Sh8に進む。
リプレイ入賞が発生している場合には(Sh2でYES)、BET数(本実施の形態においては、3)を取得し(Sh3)、取得したBET数をリプレイ用カウンタに格納する(Sh4)とともに、取得したBET数を払出信号用カウンタに格納する(Sh5)。
Sh6のステップにおいて、リプレイ中であることを特定可能なリプレイフラグをONに設定する。そして、Sh7のステップにおいて、リプレイ中LED20をON状態(点灯状態)に制御する処理を実行し、Sh10に進む。
一方で、リプレイ入賞が発生していない場合には(Sh2でNO)、リプレイフラグをOFFに設定する(Sh8)。そして、Sh9のステップにおいて、リプレイ中LED20をOFF状態(消灯状態)に制御する処理を実行し、Sh10に進む。
Sh10のステップにおいては、ボーナス関連処理を実行する。ボーナス関連処理においては、ボーナス開始時には遊技状態をボーナスに制御するための設定処理を行い、ボーナスを終了時にはボーナスコマンドを送信するための処理などを行う。
[タイマ割込処理(メイン)]
本実施例のメイン制御部41が行うタイマ割込処理(メイン)の制御内容について、図16に基づいて説明する。図16は、メイン制御部が行うタイマ割込処理(メイン)の制御内容を示すフローチャートである。なお、タイマ割込処理(メイン)は、遊技プログラムに含まれるサブルーチンである。
図16に示すように、タイマ割込処理(メイン)では、まず、すべての表レジスタと裏レジスタを交換した後(Si1)、割込禁止に設定し(Si2)、RAM41cの所定領域に設定されている電圧低下状態カウンタの値を取得する(Si3)。そして、電断検出回路48から電圧低下信号が入力される入力ポートを参照して(Si4)、電圧低下信号が入力されているか否かを判定する(Si5)。電圧低下信号が入力されている場合には、電圧低下状態カウンタが予め定められた上限値(本実施例では、4)に達しているか否かを判定し(Si6)、電圧低下状態カウンタが上限値に達している場合には、電断処理(メイン)を行う(Si7)。
電断処理(メイン)では、すべての表レジスタと裏レジスタを交換し、メイン制御部41が備えるすべてのレジスタの値を、遊技RAM領域の遊技スタック領域に所定の順序で記憶させることで退避させ、スタックポインタSPにより示される遊技スタック領域の現在のアドレスを遊技RAM領域の所定領域に記憶させることで退避させる。なお、メイン制御部41がレジスタの値を記憶させる遊技RAM領域の遊技スタック領域やスタックポインタSPにより示されるアドレスの値を記憶させる遊技RAM領域の所定領域を含む遊技RAM領域の所定領域は、バックアップ電源によりバックアップされており、スロットマシン1への電力供給が停止しても、バックアップ電源により電力が供給される限り当該遊技RAM領域の記憶内容が保存されるようになっている。
そして、各出力ポートを初期化することで、ホッパーモータ34bの駆動やリール2L、2C、2Rの回転を停止させるとともに、各種スイッチ類への制御信号などの出力を停止させる。そして、RAM41cのすべての格納領域(未使用領域及び未使用スタック領域を含む)の排他的論理和が0になるようにRAM41cのパリティ調整用データを計算して、当該パリティ調整用データをRAM41cの所定領域に設定し、RAM41cへのアクセスを禁止に設定し、ループ処理に入る。ループ処理では、電圧低下信号の出力状況を監視した状態で待機する。この状態で、電圧低下信号が入力されなくなった場合に電圧の回復を判定し、起動処理(メイン)からプログラムをスタートさせる。一方、電圧低下信号が入力されたまま電圧が低下すると内部的に動作停止状態になる。
以上の処理によって、AC100Vの電力供給が停止される場合には、電断処理(メイン)が実行され、電断前のレジスタの値が遊技RAM領域の遊技スタック領域に退避されるとともに、当該遊技スタック領域を含むRAM41cの遊技RAM領域の所定領域の内容もバックアップ電源が供給されることで保持されるため、スロットマシン1への電力供給が再開された際に実行される起動処理(メイン)において、電断前の制御状態に復帰させることが可能となる。さらに電断前の制御状態において停止操作が有効であったか否も特定できるようになっている。
次に、Si5のステップにおいて電圧低下信号が入力されていないと判定した場合、およびSi6のステップにおいて電圧低下状態カウンタが上限値に達していないと判定した場合は、Si8のステップに進み、電圧低下状態カウンタを更新する。Si5のステップからSi8のステップに進んだ場合には、電圧低下状態カウンタに0を加算することで、現在の値を維持する一方で、Si5のステップからSi8のステップに進んだ場合には、電圧低下状態カウンタに1加算するように更新する。
そして、入力ポートから各種スイッチ類の検出状態を入力し、入力データ、確定データ、エッジデータ(ONエッジデータおよびOFFエッジデータ)を生成するポート入力処理を行う(Si9)。その後、メイン制御部41が備えるレジスタのうち演算結果が格納されるフラグレジスタの値を、遊技RAM領域の遊技スタック領域に所定の順序で記憶させることで退避させた後(Si10)、非遊技プログラムに含まれる非遊技関連処理を行う(Si11)。その後、Si10のステップにおいて遊技スタック領域に退避させたフラグレジスタの値を、退避させるときと逆の順序で遊技スタック領域から順次読み出してフラグレジスタに設定することで、非遊技関連処理を行う前の状態にフラグレジスタを復帰させる(Si12)。
非遊技関連処理では、まず、呼び出し元の遊技プログラムにより使用されていたスタックポインタSPにより示される遊技スタック領域の現在のアドレスの値を、非遊技RAM領域の所定領域に記憶させて退避させる。その後、当該スタックポインタSPの値として非遊技スタック領域の所定値(前回の非遊技プログラムの終了時に、非遊技プログラム用のスタックポインタSPにより示されるアドレスとして非遊技RAM領域の所定領域に記憶されている値)を設定することで、スタックポインタSPを非遊技プログラム用に設定する。そして、上述のフラグレジスタを含むメイン制御部41が備えるすべてのレジスタの値を、スタックポインタSPにより特定される非遊技RAM領域の非遊技スタック領域に所定の順序で記憶させることで退避させる。その後、投入メダルセンサ31a~31cや払出センサ34cに関する異常を検出するセンサ監視処理、遊技の結果に関連して発生する試験信号を出力する試験信号出力処理、非遊技プログラムが用いる各種タイマを更新する非遊技関連タイマ更新処理、役比モニタに表示させる出力データを選択する役比モニタ出データ選択処理を順次行う。また、センサ監視処理では、投入メダルセンサ31a~31cや払出センサ34cに関する異常が検出した場合に、検出された異常の種類を特定可能なセンサエラー参照データをRAM41cの非遊技RAM領域の所定領域に設定するようになっている。そして、非遊技関連処理を開始した際に非遊技スタック領域に記憶させて退避させていたレジスタの値を、退避させるときと逆の順序で非遊技スタック領域から順次読み出して、当該順序に対応するレジスタに設定することで、非遊技関連処理を開始したときの状態にすべてのレジスタを復帰させる。その後、非遊技関連処理を開始した際に非遊技RAM領域の所定領域に退避させたスタックポインタSPの値を、スタックポインタSPに設定することで、非遊技関連処理を開始したときの状態にスタックポインタSPを復帰させて、非遊技関連処理を終了させる。
Si12のステップにおいてフラグレジスタを復帰させた後は、Si11のステップにおける非遊技関連処理により設定されたセンサエラー参照データを参照し(Si13)、今回のタイマ割込における非遊技関連処理により設定されたセンサエラー参照データと、前回のタイマ割込における非遊技関連処理により設定されたセンサエラー参照データの論理和を算出する(Si14)。そして、RAM41cの遊技RAM領域の所定領域に設定されており、投入メダルセンサ31a~31cや払出センサ34cに関する異常が検出されているか否かを特定可能なセンサエラーフラグを、Si14のステップで算出した論理和に基づいて更新する。Si13~Si15のステップを行うことで、センサエラー参照データに基づいて異常が検出されていることが特定される場合には、センサエラーフラグが異常が検出されていることを示す状態であるか否かにかかわらず、当該異常が検出されている旨を示すように、センサエラーフラグを更新する。一方、センサエラー参照データに基づいて異常が検出されていないことが特定される場合には、センサエラーフラグの状態を維持する。すなわち、センサエラー参照データに基づいて異常が検出されていることが特定される場合には、センサエラー参照データの内容をセンサエラーフラグに反映させる一方で、センサエラー参照データに基づいて異常が検出されていないことや異常が解除されたことが特定される場合には、センサエラー参照データの内容をセンサエラーフラグに反映させないようになっている。
Si15のステップにおいてセンサエラーフラグを更新した後は、メイン制御部41の内部に設けられたウォッチドッグタイマ(WDT)のレジスタをクリアする(Si16)。その後、RAM41cの所定領域に設けられ、タイマ割込に含まれる処理を分岐させるための分岐用カウンタの値を所定のレジスタに読み込み、所定値(本実施例では、1)を加算して更新し、更新された値を、RAM41cの所定領域の分岐用カウンタの値として設定する(Si17)。この分岐用カウンタを更新する処理では、当該分岐用カウンタが0~2である場合は1加算し、分岐用カウンタが3である場合は初期化して0に戻すことで、0~3の範囲で更新する。すなわち分岐用カウンタの値は、タイマ割込処理(メイン)が実行される毎に、0→1→2→3→0・・・の順番でループする。そして、分岐用カウンタの値は、タイマ割込処理(メイン)において実行される各処理において参照され、例えば、分岐用カウンタが所定値となったときに所定の制御を実行するなど、各処理内の制御が分岐されることとなる。
Si17のステップにおいて分岐用カウンタを更新した後、当該分岐用カウンタが4であるか否かを判定し(Si18)、分岐用カウンタが4である場合には、分岐用カウンタが4である場合には、RAM41cの所定領域に設定されている所定の各種タイマを更新するカウンタ更新処理(Sj19)、出力ポートに接続された各種LEDなどの表示器(クレジット表示器11、遊技補助表示器12、1~3BETLED14~16、投入要求LED17、スタート有効LED18、ウェイト中LED19、リプレイ中LED20など)の点灯状態をメイン処理などの各処理による設定に応じてダイナミック点灯させるための点灯信号を設定して送信などを行うに制御するLEDダイナミック表示処理(Si20)を行う。
Si18のステップにおいて分岐用カウンタが4でないと判定した場合、およびSi20のステップにおいてLEDダイナミック表示処理を行った後は、外部出力信号のうちメダルが投入された旨を示すメダル投入信号やメダルの払い出しが行われる旨を示すメダル払出信号の出力設定を更新して、スロットマシン1の外部に送信する投入払出信号送信処理(Si21)、外部出力信号のうちセキュリティ信号(ドア開放信号、設定変更信号、投入エラー信号、払出エラー信号)の出力設定を更新して、スロットマシン1の外部に送信するセキュリティ信号送信処理(Si22)を行う。
次に、外部出力信号を送信する出力ポート3出力処理(Si23)を行った後に、コマンドキューに設定されたドアコマンドや操作終了コマンドなどの各種コマンドを送信させるなどを行うコマンド送信処理(Si24)を順次行う。その後、ゲームの進行状況などに応じて各リールモータ32L、32C、32Rの励磁パターンの設定などを行ってリールの回転および停止を制御するリール制御処理を行う(Si25)次に、有効停止LED信号やMAXBETLED信号を送信する出力ポート2出力処理(Si26)を行い、遊技状態に関する情報を外部出力信号として送信する出力ポート7出力処理(Si27)を行う。
次に、リールモータ出力データを作成する(Si28)。リールモータ出力データは、リールモータ信号や流路切替ソレノイド信号を出力ポート0,1に出力させるための2バイトデータである。リールモータ出力データに基づき、リールモータ信号や流路切替ソレノイド信号を出力する出力ポート0,1出力処理(Si29)を行うとともに、作成されたリールモータ出力データをリールモータ状態データとして格納する。
そして、すべての表レジスタと裏レジスタを交換し(Si30)、割込許可設定をして(Si31)、タイマ割込処理(メイン)を終了させて、当該タイマ割込処理(メイン)が開始されたときのメイン処理に復帰させる。
[リール停止制御処理における停止設定]
次に、図13,図14を用いて説明したリール停止制御処理における停止設定(リール停止滑りコマ格納処理)について、図17~図19に示すタイミングチャートを用いて具体的に説明する。図17は、左ストップスイッチが操作されたときの状況を説明するものである。図18は、左ストップスイッチおよび中トップスイッチが1割込ずれて操作されたときの状況を説明するものである。図19は、左ストップスイッチおよび中ストップスイッチが同時押しされたときの状況を説明するものである。
まず、左ストップスイッチの操作されたときの処理について説明する。図17は、リール停止制御処理における停止設定を説明するためのタイミングチャート(その1)である。図17の説明においては、全てのリールが定速回転をしており、いずれのストップスイッチも操作されていないものとする。なお、説明の都合上、左ストップスイッチおよび中ストップスイッチの状態のみを図示する。
前述のように、割込処理(タイマ割込み処理(メイン))において、ポート入力処理(Sj9)を実行する。これにより、ストップスイッチ(左,中,右ストップスイッチ)が操作がされた場合は、入力ポート0にストップスイッチ信号(左,中,右ストップスイッチ信号)が入力され、ポート入力バッファ0にこれらの信号の検出状態が格納される。
ポート入力バッファ0には、今回の割込処理において検出されたストップスイッチ信号データや、ストップスイッチ信号のONエッジデータなどが格納されている。ストップスイッチ信号のONエッジデータは、前回の入力がOFF状態であるのに対して今回の入力がON状態である(ONエッジが検出された)ことを示すデータである。
たとえば、前回の割込処理において左ストップスイッチ信号がOFF状態で入力され、今回の割込処理において左ストップスイッチ信号がON状態で入力された場合、今回の割込処理において、左ストップスイッチ信号のONエッジが検出され、ポート入力バッファ0に左ストップスイッチ信号のONエッジデータが格納される。
図17のt1以前においては、全てのリールが定速回転している状態であるため、メイン処理において停止制御処理が実行されている。そして、割込1回待ち処理(Sg2)において、待機状態となり、割込処理が実行されるのを待つ。
t1において割込処理の実行が開始されたとする。t2において、ボート入力処理が実行され、ストップスイッチのONエッジが発生した否かの入力判定を行う。t2においては、いずれのストップスイッチも操作されていない。このため、入力判定においては、いずれのストップスイッチのONエッジも検出されない。
割込処理が終了すると、t3において、メイン処理内のリール停止制御処理が再開される。直近の割込処理においてONエッジが検出されなかったため、リール停止制御処理においては、有効なストップスイッチの操作がなかったものと判定され(Sg22でNO)、再び、ステップSg2において割込1回待ち処理が実行される。
t4において、左ストップスイッチが操作されたとする。そして、t5において、割込処理が実行されたとする。t5において実行される割込処理は、t1において実行された割込処理の次の割込処理である。本実施の形態においては、割込処理は0.56msごとに実行されるため、t1とt5の間隔は0.56msである。
t6において、ボート入力処理が実行され、ストップスイッチのONエッジが発生した否かの入力判定を行う。入力判定においては、t4における左ストップスイッチの操作に基づき、左ストップスイッチのONエッジが検出される。
割込処理が終了すると、t7において、メイン処理内のリール停止制御処理が再開される。割込処理において、左ストップスイッチの操作に基づく左ストップスイッチ信号のONエッジが検出されたため、割込処理後のメイン処理において、左リールの停止位置を設定するためのリール停止滑りコマ格納処理(Sg32)を実行する。ここで、左リールの停止位置を設定するためのリール停止滑りコマ格納処理を「リール停止滑りコマ格納処理(左)」とも称し、中リールの停止位置を設定するためのリール停止滑りコマ格納処理を「リール停止滑りコマ格納処理(中)」とも称し、右リールの停止位置を設定するためのリール停止滑りコマ格納処理を「リール停止滑りコマ格納処理(右)」とも称する。
そして、リール停止滑りコマ格納処理(左)を開始した後、リール停止滑りコマ格納処理(左)が完了するまでの間、新たな割込処理の実行を禁止する(Sg28において割込禁止設定がされている)。リール停止滑りコマ格納処理(左)が完了した後は、左リールの停止が最終停止でないため、Sg2に戻り、割込1回待ち処理を行う。これにより、t8において、割込処理が実行可能となる。
そして、t9において割込処理が実行されたとする。t10における入力判定において、左ストップスイッチは押下状態(ON状態を継続)であるため、左ストップスイッチのONエッジは検出されない。また、中,右ストップスイッチも操作されていないため、中,右ストップスイッチのONエッジも検出されない。
そして、割込処理が終了して、t11においてメイン処理に戻った後に再開されるリール停止制御処理においては、ストップスイッチ信号のONエッジが検出されなかったため(Sg22でNO)は、Sg2に戻り、割込1回待ち処理を行う。そして、t12において割込処理が実行される。以降、ストップスイッチ信号のONエッジが検出されるまで、処理を繰り返し、ストップスイッチ信号のONエッジが検出されるのを待つ。図17の例では、新たなストップスイッチの操作が行われないため、t12~t15の処理、および、t15~t18の処理は、t9~t12の処理と同じである。
次に、左ストップスイッチおよび中ストップスイッチが1割込ずれて操作されたときの処理について説明する。図18は、リール停止制御処理における停止設定を説明するためのタイミングチャート(その2)である。図18の説明においても、全てのリールが定速回転をしており、いずれのストップスイッチも操作されていないとする。なお、説明の都合上、左ストップスイッチおよび中ストップスイッチの状態のみを図示し、図17と共通する箇所については説明を省略する。
図18のt1~t7までの状況は、図17のt1~t7までの状況と同じである。すなわち、t4において左ストップスイッチが操作されると、t6の入力判定において、左ストップスイッチのONエッジが検出され、これにより、リール停止制御処理においてリール停止滑りコマ格納処理(左)が実行されるとともに割込禁止状態となる。リール停止滑りコマ格納処理(左)が完了した後は、t9において、割込処理が実行可能となる。
図18においては、図17の状況と異なり、t8において、中ストップスイッチが操作されたとする。t10において新たな割込処理が実行されると、t11において中ストップスイッチの操作に基づく中ストップスイッチ信号のONエッジが検出される。中ストップスイッチ信号のONエッジは、左ストップスイッチ信号のONエッジから1割込分ずれて検出されている。なお、左ストップスイッチは押下状態が継続されるため左ストップスイッチのONエッジは検出されず、中ストップスイッチは操作されていないため中ストップスイッチのONエッジも検出されない。
t12において、メイン処理に戻った後にリール停止制御処理が再開される。リール停止滑りコマ格納処理(左)が実行された後の、新たな割込処理後のメイン処理において、リール回転エラーが発生しているか否かを判定する(Sg6)。リール回転エラーが発生している場合、エラー処理(Sg9)を実行する。
リール回転エラーが発生した場合、エラー状態が解除されない限りは、エラー処理を終了することができない。このため、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行することができない。リール回転エラーが発生していない(リールが正常に回転している)と判定した場合に、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行することが可能である。
リールが正常に回転している場合(Sg6でYES)、有効なストップスイッチの操作があったか否かを判定する(Sg22)。ステップSg22においては、中ストップスイッチ信号のONエッジが検出されているため(Sg22でYES)、中リールの停止位置を設定するためのリール停止滑りコマ格納処理(中)(Sg32)が実行される。また、リール停止滑りコマ格納処理(中)中おいては割込禁止状態となり、リール停止滑りコマ格納処理(中)が完了した後は、t13において、割込処理が実行可能となる。以降の処理は、図17と同様であるため、説明を省略する。
以上説明したように、リール停止滑りコマ格納処理(左)を開始した後、リール停止滑りコマ格納処理(左)が完了するまで新たな割込処理の実行を禁止するため、新たな割込処理の実行により、中ストップスイッチの操作に基づくリール停止滑りコマ格納処理(中)が実行されることがない。また、仮に、割込処理において、左ストップスイッチ信号および中ストップスイッチ信号のONエッジがともに検出された場合であっても、左ストップスイッチに関する処理を行い、中ストップスイッチに関する処理は行わない(Sg25で停止対象とならない)ため、リール停止滑りコマ格納処理(左)とリール停止滑りコマ格納処理(中)とが同時に実行されることはない。このようにすることで、左ストップスイッチの操作に基づくリール停止滑りコマ格納処理(左)が完了する前に中ストップスイッチの操作に基づくリール停止滑りコマ格納処理(中)が実行されることを防止することができる。
また、新たな割込処理後のメイン処理において、リール回転エラーが発生しているか否かを判定し、リール回転エラーが発生している場合、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行せず、リール回転エラーが発生していないと判定した場合に、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行する。このようにすることで、リールの回転が正常であることを条件に、中ストップスイッチの操作に基づくリール停止滑りコマ格納処理(中)が実行されることを担保することができる。このように、リールの停止位置を設定するためのリール停止滑りコマ格納処理を連続的に実行する場合に、好適にリール停止滑りコマ格納処理を実行することができる。
また、以上説明したように、左リールおよび中リールがともに回転している場合の所定の割込処理(t5)において、左ストップスイッチ信号のONエッジが検出された(t6)場合、所定の割込処理後のメイン処理(t7)において、リール停止滑りコマ格納処理(左)を実行する。また、所定の割込処理の後の割込処理(t10)において、中ストップスイッチ信号のONエッジが検出された(t11)場合、当該割込処理後のメイン処理(t12)において、リール停止滑りコマ格納処理(中)を実行する。
このように、一の割込処理でもずれて左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合には、左リールおよび中リールが停止可能となるため、速やかにリールを停止させることができる。
また、ステップSg35において、リール停止滑りコマ格納処理(左)を完了した後、リール停止コマンド送信処理を実行している。そして、リール停止コマンド送信処理において、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置を示すリール停止位置コマンドを出力する。
リール停止コマンド送信処理により、左リールの停止位置を示すリール停止位置コマンドを出力するための設定が完了するまで、割込処理の実行を禁止している(Sg28において割込禁止設定がされている)。このようにすることで、リール停止位置コマンドの送信が完了する前に新たなストップスイッチの操作に基づく処理が行われない。
また、リール停止コマンド送信処理を実行する際には、複数のコマンドを送信するための送信処理が実行される。具体的には、リール停止受付け時コマンドを送信するためのリール停止受付け時コマンド送信処理(Sg33)、滑りコマ数コマンドを送信するための滑りコマ数コマンド送信処理(Sg34)、リール停止コマンドを送信するためのリール停止コマンド送信処理(Sg38)がそれぞれ実行される。
また、これらのコマンドを出力するための設定が完了するまで、割込処理の実行を禁止している(Sg28において割込禁止設定がされている)。このように、複数のコマンドを出力するための設定が完了するまでに、割込処理により意図しないコマンドが出力されたり、複数のコマンド間で送信間隔が大きく空くことを防止することができる。
また、リール停止滑りコマ格納処理(中)(Sg32)を実行する際には、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置に基づいて、中リールの停止位置を設定する。このように、中リールの停止位置は左リールの停止位置に基づいて設定されるため、導出される図柄組合せが多様になる。
また、上記で説明した例は、左リールの停止が第1停止であり、中リールの停止が第2停止である例について説明したが、これに限らず、いずれのリールが第1停止であってもよく、いずれのリールが第2停止であってもよい。また、第1停止および第2停止の組合せに限らず、第2停止および第3停止の組合せであっても、図18で説明したような動きになる。
また、たとえば、中リールの停止が第3停止であって、中リールが停止することで図柄組合せが導出される場合であっても、リール停止滑りコマ格納処理(中)を開始した後、リール停止滑りコマ格納処理(中)が完了する(Sg32)まで、新たな割込処理の実行を禁止する(Sg28において割込禁止設定がされている)。このように、リール停止滑りコマ格納処理の実行中に他の処理が実行されないため、速やかにリールを停止させる制御を行うことができる。
次に、左ストップスイッチおよび中ストップスイッチが同時押しされたとき処理について説明する。図19は、リール停止制御処理における停止設定を説明するためのタイミングチャート(その3)である。図19の説明においても、全てのリールが定速回転をしており、いずれのストップスイッチも操作されていないとする。なお、説明の都合上、左ストップスイッチおよび中ストップスイッチの状態のみを図示し、図17と共通する箇所については説明を省略する。
図19においては、図17の状況と異なり、t4において、左ストップスイッチおよび中ストップスイッチが同時に操作されたとする。この場合、当該操作の後に実行される割込処理(t5)において、左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出される(t6)。この割込処理後のメイン処理(t7)において、有効なストップスイッチ操作状態のみが抽出される(Sg21)。
左ストップスイッチ信号および中ストップスイッチ信号のONエッジがともに検出された場合、左リールが停止対象となる(Sg25)。これにより、リール停止滑りコマ格納処理(左)(Sg34)が実行される。一方で、中リールが停止対象とならないため、リール停止滑りコマ格納処理(中)は実行されない。
また、この場合、次の割込処理(t10)においても、中ストップスイッチ信号は、ON状態を検出される。しかし、ON状態が2回連続検出されるため、中ストップスイッチ信号はONエッジとして検出されない。このため、この割込処理後のメイン処理(t12)において、有効なストップスイッチ操作状態として抽出されることはなく(Sg21)、中ストップスイッチの操作が有効な操作として判定されることはない(Sg22でNO)。
しかし、一の割込処理でもずれて左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合には左リールおよび中リールが停止可能となるため、速やかにリールを停止させることができる。
その後、t13において、左ストップスイッチおよび中ストップスイッチの押下状態が解除されたとする。そして、t18において、再び左ストップスイッチおよび中ストップスイッチが同時押し(同時に操作)されたとする。
この場合、次の割込処理(t19)において、左ストップスイッチおよび中ストップスイッチ信号は、ともにONエッジが検出される(t20)。この割込処理後のメイン処理(t21)においては、左リールは既にリール停止滑りコマ格納処理(左)を実行しているため、有効なストップスイッチ操作状態として抽出されない。一方で、中リールはリール停止滑りコマ格納処理(中)を実行していないため、有効なストップスイッチ操作状態として抽出される。
このため、ステップSg22において、中ストップスイッチの操作が有効な操作として判定される(Sg22でNO)ことになる。これにより、リール停止滑りコマ格納処理(中)が実行される。
以上説明したように、左リールおよび中リールがともに回転している場合の所定の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、所定の割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する一方で、リール停止滑りコマ格納処理(中)を実行しない。この状態において、後の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出されたとする。この場合、既にリール停止滑りコマ格納処理(左)が実行されているため、割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する一方で、リール停止滑りコマ格納処理(左)を実行しない。このように、左ストップスイッチおよび中ストップスイッチが同時に操作された場合に、回転中のリールが停止することになるため、ストップスイッチの操作性を損ねない。
次に、上記のように左リールおよび中リールがともに回転している例とは異なり、左リールが停止しかつ中リールが回転している例について説明する。この場合において、t4のように左ストップスイッチおよび中ストップスイッチの同時押しが行われたとする。
この場合の割込処理(t5)において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出される(t6)。割込処理後のメイン処理(t7)においては、左リールは停止しているため、有効なストップスイッチ操作状態として抽出されない。一方で、中リールは回転しているため、有効なストップスイッチ操作状態として抽出される。これにより、リール停止滑りコマ格納処理(中)が実行されることになる。
次に、中リールが停止しかつ左リールが回転している例について説明する。この場合において、t4のように左ストップスイッチおよび中ストップスイッチの同時押しが行われたとする。
この場合の割込処理(t5)において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出される(t6)。割込処理後のメイン処理(t7)においては、中リールは停止しているため、有効なストップスイッチ操作状態として抽出されない。一方で、左リールは回転しているため、有効なストップスイッチ操作状態として抽出される。これにより、リール停止滑りコマ格納処理(左)が実行されることになる。
このように、同一割込処理において複数のストップスイッチ信号のONエッジが検出されたとしても、回転中のリールのリール停止滑りコマ格納処理が実行されるため、操作性を損ねることがない。
次に、図柄ステップ数の取得処理について説明する。たとえば、割込処理において左ストップスイッチ信号のONエッジが検出されたとする。割込処理後のメイン処理では、ステップSg29において、左リールのステップ数を取得する。そして、左リールの位置が、左リールの各図柄のステップ数における所定の範囲内(本実施の形態では、11ステップ)になったとき(Sg30でYES)、図柄に対応する図柄番号を取得し、取得した図柄番号に基づいてリール停止滑りコマ格納処理(左)を実行する。
上記処理においては、左リールの位置が、左リールの各図柄のステップ数における所定の範囲内になるまでは、ステップSg28~Sg31の処理を繰り返し実行する。本実施の形態においては、11ステップの位置になるまで待って、11ステップの位置になったときに、図柄番号を取得し、取得した図柄番号に基づいてリール停止滑りコマ格納処理(左)を実行することになる。仮にこの間に、中ストップスイッチ信号のONエッジが検出されたとしても中ストップスイッチ信号のONエッジを受付けることがない。このようにすることで、リール停止滑りコマ格納処理を11ステップの位置において実行可能となる。
また、スタートスイッチ7が操作され、内部抽選処理(Sc7)が実行されると、当選情報出力処理(Sc10)において、内部当選信号を出力するための処理が実行される。内部当選信号は、所定時間(本実施の形態においては、2秒)出力される。すなわち、内部当選信号は、スタートスイッチ7の操作に基づき2秒に亘って出力する制御が行なわれる。
また、内部当選信号の出力中は、ストップスイッチ8L,8C,8Rは有効にならない。具体的に説明すると、リール停止制御処理において、内部当選信号出力タイマを取得し(Sg10)、ステップSg11において内部当選信号出力タイマが0になるまで(すなわち、2秒経過するまで)次の処理に進むことができない。このため、ストップスイッチの操作が行われたとしても、有効なストップスイッチの操作があるか否かの判定(Sg22)が行われない。
内部当選信号が出力されてから、2秒経過した場合は、内部当選信号出力タイマが0となり(Sg11でYES)、次の処理に進むことができる。これにより、有効なストップスイッチの操作があるか否かの判定(Sg22)が可能となり、ストップスイッチのONエッジが検出された場合には、リール停止滑りコマ格納処理(Sg32)を実行することができるようになる。すなわち、内部当選信号が出力されてから2秒経過したことを条件に、ストップスイッチ8L,8C,8Rの操作が有効化される。このようにすることで、外部装置(試験装置)において内部当選信号の内容を確認可能にした上で、リールが停止可能となる。
また、次にリールモータ信号の出力について説明する。リールモータに対するリールモータ信号(第1~第3リールモータφ0~φ3信号)を出力させることで、リールが駆動する。これにより、リールの回転を開始させたりリールを停止させることができる。
リール停止制御処理においては、全てのリールに対してリール停止滑りコマ格納処理(Sg32)が実行された場合、すなわち、ステップSg39において最終停止であることが判断された場合(Sg39でYES)、リールモータ信号に基づくリールモータ状態を取得する(Sg41)。
そして、取得したリールモータ状態データに基づき、全てのリールモータがOFF状態であるかを判定する(Sg42)。すなわち、リールモータに対してリールモータ信号が出力されているか否かを判定することに基づいて、全てのリールが停止したか否かを判定する。このようにすることで、リールが停止したことをリールモータ信号の出力状況に基づいて判断することができる。
また、図5に示したように、出力ポート0および出力ポート1からは、リールモータ信号および流路切替ソレノイド信号が出力される。なお、出力ポート0および出力ポート1からは、これらの信号以外の信号は出力されない。
流路切替ソレノイド30は、投入されたメダルの流路を切り替えるブロッカのソレノイドである。流路切替ソレノイド30は、遊技開始待ち処理におけるメダル投入信号処理においてON状態に設定される。また、操作入力受付処理においてスタートスイッチ7の操作が検出されたことに基づき、OFF状態に設定される。すなわち、スタートスイッチ7の操作に基づきリールの回転を開始させるときには、流路切替ソレノイド信号の出力は停止状態となる。そして、リール停止制御処理中は、流路切替ソレノイド信号の出力は常に停止状態となる。
このため、全てのリールモータがOFF状態であるかを判定する処理(Sg42)においては、流路切替ソレノイド信号は必ずOFF状態になっている。先に説明したとおり、出力ポート0および出力ポート1からは、リールモータ信号および流路切替ソレノイド信号のみが出力される構成となっている。このため、本実施の形態においては、出力ポート0および出力ポート1の出力状態に基づき設定されたリールモータ状態データに基づき、全てのリールモータがOFF状態であると判定する(Sg42でYES)処理を行うようにしている。
具体的には、リールモータ状態データは、第1~第3リールモータφ0~φ3信号および流路切替ソレノイド信号の出力状態に対応する2バイトデータ(16ビットデータ)である。これらのいずれかの信号が出力されている場合は、対応する各ビットが1になる。逆に言えば、いずれの信号も出力されていない場合には、全てのビットが0になるため、リールモータ状態データは0になる。つまり、全てのリールモータがOFF状態であるときには、全てのリールモータ信号に対応するビットが0になるとともに、流路切替ソレノイド信号に対応するビットも0となり、結果として、リールモータ状態データは0になる。
このため、ステップSg42の判定おいては、リールモータ状態データが0であるときには、全てのリールモータがOFF状態であると判定し(Sg42でYES)、リールモータ状態データが0でないときには、全てのリールモータがOFF状態であると判定しない(Sg42でNO)処理が行われている。このように、出力ポート0,1から信号が出力されているか否かを判定することに基づいて、全てのリールが停止したか否かを判定している。
たとえば、Sg42の判定時において、出力ポート0,1から出力される信号にON状態となる信号が含まれている場合には、第1~第3リールモータφ0~φ3信号状態を一つ一つ取得してこれらのデータが全て0になっているかを判定する必要が出てくる。しかし、上記のように、出力ポート0,1から出力される信号が全てOFF状態になるのであれば、出力ポート0,1の出力状態に基づき生成されたリールモータ状態データが0であるのか否かを判定することで、全てのリールが停止したか否かを判定することができる。このように、出力ポート0,1から出力される信号を好適に配置することで、空きポートを好適に扱える一方で、全てのリールが停止したか否かの判定の妨げにならない。
[払出信号の出力処理]
本実施例のスロットマシン1は、遊技状態やエラーの発生状況などを示す外部出力信号を出力する。これら外部出力信号は、メイン制御部41の制御により遊技制御基板40より出力され、ホールコンピュータやスロットマシン1に対応して設置されたデータ表示端末などの外部機器に出力されるようになっている。
しかし、古いホールコンピュータなどの外部機器は、外部出力信号を検出するのに比較的長い時間を要する。このような外部機器でも確実に外部出力信号を検出できるようにするため、一定時間以上信号を出力するようにしている。たとえば、払出信号および投入信号が出力される時間は、後述するように最低50msである。また、リプレイ入賞が発生した場合は、払出信号は250msの間出力される。
たとえば、リプレイ入賞が発生して払出信号が出力されている間、次の遊技の開始操作が有効化されないようにした場合、遊技者は次の遊技開始まで250ms待たされることになる。この間、開始操作を行ったとしても遊技が開始されないため、遊技者は不快な思いをすることがある。このため、本実施の形態においては、リプレイ入賞が発生した場合、リプレイ入賞に基づく払出信号の出力が完了したか否かに関わらず、リプレイ入賞が発生した遊技の次の遊技において開始操作を有効化するようにした。以下、図20~図22を用いて詳細に説明する。
図20は、払出信号の出力処理について説明するための図(その1)である。リプレイ入賞が発生したとき、リプレイ入賞に基づき、払出信号が送信される。また、リプレイ入賞に基づき、次の遊技において自動的にBET数(賭数)が設定される(自動BET)。これにより、BET数の設定に新たなメダルを消費することなく次のゲームを行うことができる。また、設定されたBET数に基づき入力信号が送信される。
図20に示すように、メイン処理においては、割込複数回待ち処理(Sc5)、遊技開始待ち処理(Sc6)、リール停止制御処理(Sc19)、遊技終了時の設定処理(Sc34)などが実行される。また、タイマ割込処理(メイン)が実行されると、投入払出信号送信処理(Si21)、出力ポート3出力処理(Si23)などが実行される。
リプレイ入賞が発生した場合、遊技終了時の設定処理において、当該遊技において設定されているBET数に対応する数値データを取得し(Sh3)、取得したBET数に対応する数値データをリプレイ用カウンタに格納する(Sh4)とともに、取得したBET数を払出信号用カウンタに格納する(Sh5)。
本実施の形態においては、BET数は「3」であるので、リプレイ用カウンタおよび払出信号用カウンタには、「3」が格納される。リプレイ用カウンタは、遊技開始待ち処理においてリプレイ入賞の有無の判定などのために用いられるカウンタである。このため、遊技開始待ち処理において、あらためてBET数を取得してリプレイ用カウンタを設定するようにしてもよい。しかし、上記のように、遊技終了時の設定処理において、リプレイ用カウンタおよび払出信号用カウンタを同時に設定すれば、処理負担を軽減させることができ、効率よくメダル数の設定を行うことができる。
遊技終了時の設定処理が終了した後は、メイン処理に戻り、次の遊技に移行する。そして、割込複数回待ち処理(Sc5)が実行されることで、割込処理が実行される。当該割込処理において、払出信号が出力されることになる。つまり、遊技終了時の設定処理において、払出信号用カウンタに「3」が格納された(Sh5)後に、割込処理が実行されることにより、払出枚数が「3」であることを特定可能な払出信号が出力される。
具体的には、割込処理において、投入払出信号送信処理(Si21)が実行される。そして、投入払出信号送信処理において、払出信号生成処理(Sj3)が実行される。払出信号生成処理において、払出信号用カウンタに基づき、払出信号データが作成される。そして、出力ポート3出力処理(Si23)において、払出信号データに基づき払出信号の出力が開始される。
割込処理により、払出信号の出力が開始された後、遊技開始待ち処理(Sc6)が実行される。遊技開始待ち処理において、リプレイ用カウンタが取得される(Sd5)。上述のように、前のゲームにおいてリプレイ入賞が発生し、リプレイ用カウンタに「3」が格納された状態では、リプレイカウンタには「3」が格納されている。これにより、ステップSd7において、リプレイ用カウンタ値>0と判定され(Sd7でYES)、メダル投入実行処理(Sd8)が実行される。メダル投入実行処理においては、リプレイカウンタの値に基づき、BET数が「3」に設定されることになる。
このように、BET数の設定は、払出信号の出力を開始した後に実行される。このようにすることで、伝達に時間がかかる外部への情報出力である払出信号の出力をいち早く行うことで、遊技の進行を妨げない。
上記の遊技開始待ち処理において、BET数に「3」が格納された(Sd8)後に、割込処理が実行されると、投入枚数が「3」であることを特定可能な投入信号が出力可能となる。ただし、払出信号の出力中には投入信号は出力することができない。その理由は、次のような処理が実行されているからである。
割込処理が実行されると、投入払出信号送信処理(Si21)が実行される。投入払出信号送信処理においては、払出信号が送信中であるとき(払出パルスが動作中であるとき(Sj1がYES))は、投入信号生成処理(Sj2)が実行されない。これに対して、払出信号が送信中でないとき(Sj1がNO))は、投入信号生成処理(Sj2)が実行される。投入信号生成処理(Sj2)が実行された場合には、出力ポート3出力処理(Si23)において投入信号の出力が可能となる。このように、払出信号の出力中には投入信号は出力することができず、払出信号が出力されていないときには投入信号が出力可能となる。
図21は、払出信号の出力処理について説明するための図(その2)である。図21(A)は、リプレイ入賞時のBET数、リプレイ用カウンタおよび払出信号用カウンタの値の推移を説明するための図である。図21(A)に示すように、開始操作によりゲームが開始したとき、BET数として「3」が設定されている。リプレイ入賞が発生すると、図20を用いて説明したように、遊技終了時の設定処理のステップSh3~Sh5において、BET数として設定された「3」が、リプレイ用カウンタおよび払出カウンタに格納される。
また、リプレイ用カウンタに基づき設定されるBET数は、本実施の形態においては常に「3」である。このため、たとえば、リプレイ用カウンタは、BETされる場合にはONを設定し、BETされない場合にはOFFを設定するようなフラグであってもよい。しかし、本実施の形態においては、リプレイ用カウンタは、0~255(00H~FFH)を設定可能な1バイトデータとして設定される。このようにすることによって、たとえば、スロットマシンのソフトウェアの仕様が変更され、リプレイ入賞によって設定されるBET数が「2」やそれ以外の数値となった場合であっても、仕様変更への対応が容易になる。
図21(B)は、遊技RAM領域において、払出信号用カウンタを格納する領域を説明するための図である。図4を用いて説明したように、遊技RAM領域は、領域A~Dを有する。このうち、領域C,D(ボーナス終了時初期化対象領域)は、ボーナス終了時に初期化される(Sc38,Sc2)。また、領域D(遊技終了時初期化対象領域)は、一遊技が終了するたびに初期化される(Sc36,Sc2)。
本実施の形態においては、払出信号用カウンタは、遊技用RAMの領域Aに格納されている。領域Aは、遊技終了時に遊技用RAMの領域Dを初期化する処理およびボーナス終了時に遊技用RAMの領域C,Dを初期化する処理のいずれによっても初期化されない領域である。
仮に、払出信号用カウンタを領域Cや領域Dに格納した場合、ボーナスが終了(Sc37でYES)した後に遊技用RAMの領域C,Dをクリアする(Sc2)ことによって、払出信号用カウンタがクリアされてしまう危険性がある。このため、払出信号用カウンタを領域Aに設定することで、遊技用RAMの初期化処理によって意図せず払出信号の出力が停止することを防止することができる。
図22は、払出信号の出力処理について説明するための図(その3)である。払出信号が出力される期間は、メダルの払出数(払出信号用カウンタの値)に応じて一定となるように定められている。払出数が1であるときは、払出信号として、出力時間が50msとなるパルス信号を1回出力する。払出数が2以上であるときは、パルス信号とパルス信号との間に信号が出力されない期間(信号OFF状態)を50ms設ける。
たとえば、リプレイ入賞が発生した場合は、払出信号用カウンタの値は3であるため、払出信号の出力は、50msのパルス信号出力(信号ON状態)、50msの信号OFF状態、50msのパルス信号出力(信号ON状態)、50msの信号OFF状態、50msのパルス信号出力(信号ON状態)となる(合計250ms)。すなわち、リプレイ入賞が発生した場合、払出信号の出力が開始されてから当該信号の出力が完了するまでには、250msの時間を要する。
一方で、投入信号が出力される期間は、BET数に応じて一定となるように定められている。払出信号と同様に、投入信号も、BET数が1であるときは、投入信号として、出力時間が50msとなるパルス信号を1回出力する。BET数が2以上であるときは、パルス信号とパルス信号との間に信号が出力されない期間(信号OFF状態)を50ms設ける。たとえば、リプレイ入賞が発生した場合、自動BETによりBET数が3に設定される。これにより、上記同様、投入信号として3回のパルス信号が出力され、投入信号の出力が開始されてから当該信号の出力が完了するまでには、250msの時間を要する。以下、タイミングチャートを用いて、信号の出力状況を具体的に説明する。
図22(A)は、リプレイ入賞が発生した場合の、払出信号と投入信号の出力状況を示すタイミングチャートである。図22(A)に示すように、t1においてリプレイ入賞が発生したとする。リプレイ入賞が発生したことに基づき、払出信号の出力が開始される。また、リプレイ入賞が発生した場合、リプレイ入賞に基づく払出信号の出力が完了したか否かに関わらず、リプレイ入賞が発生した遊技の次の遊技において開始操作が有効化される。
ここで、仮に、リプレイが発生した場合、リプレイ入賞に基づく払出信号の出力の完了を待ってから、次の遊技における開始操作が有効化されるようにしたとする。たとえば、図20で説明した遊技終了時の設定処理において、ステップSh5の後に、払出信号出力が完了されるまで待機する処理を入れたとする。このようにすると、リプレイが入賞したにも関わらず、250msの間、開始操作をしても遊技が開始せず、遊技者は不快な思いをすることがある。しかし、本実施の形態のようにリプレイ入賞後、即座に開始操作が有効化されることで、遊技者にストレスを感じさせることなく、遊技の進行を速やかに進めることができる。
次に、t1から250ms経過したt2において、払出信号の出力が完了したとする。そして、t3において、開始操作がされたとする。これにより、投入信号の出力が開始し、250ms経過したt4において、投入信号の出力が完了する。
図22(B)は、払出信号の出力が完了する前に、開始操作がされた場合について説明するタイミングチャートである。図22(A)に示すように、t1においてリプレイ入賞が発生したとする。リプレイ入賞が発生したことに基づき、払出信号の出力が開始される。また、次の遊技における開始操作が有効化される。ここで、図22(A)の状況とは異なり、図22(B)においては、払出信号の出力が完了する前のt2において開始操作がされたとする。
このように、開始操作がされたことに基づき投入信号を出力し、払出信号の出力が完了する前に開始操作がされた場合、払出信号の出力が完了した後(t3)に投入信号の出力を開始する。そして、t3から250ms経過したt4において、投入信号の出力が完了する。このように、投入信号の出力を遅らせることで、投入信号および払出信号の出力タイミングが重ならないので、外部機器において受信した信号を確認することで、メインCPU41aが実行する処理の処理順序を特定しやすくなる。
一方で、t1の払出信号を出力する場合には、投入信号の出力を確認することなく払出信号の出力を行っている。すなわち、投入信号を出力する際には、払出信号の出力状態を確認し、払出信号が出力されていない場合に投入信号を出力し、払出信号を出力する際には、投入信号の出力状態を確認することなく払出信号を出力している。
このようにしているのは、次の理由による。開始操作に基づき投入信号の出力が開始された場合、その後入賞が発生して払出信号の出力が開始されるまでの時間よりも、投入信号の出力が終了するまでの時間(250ms)の方が短い。つまり、払出信号の出力を開始するときには、すでに投入信号の出力は終了しているため、あえて、払出信号の出力時に投入信号の出力状態を確認する必要がない。このように、投入信号の出力状態の確認を省略することで、処理負担を軽減することができる。
また、払出信号の出力中において、移行条件が成立した場合に特定状態に制御される。たとえば、移行条件はエラー発生であり、特定状態はエラー状態である。また、移行条件は設定確認操作であり、特定状態は設定確認状態である。
たとえば、投入払出エラーチェック処理(Sd11)において、エラーが発生していると判断された場合、エラー処理(Se9)が実行される。また、操作入力受付処理(Sd14)において、設定確認操作が検出された場合、設定確認状態に制御される。本実施の形態においては、払出信号の出力を開始した場合、当該出力が完了するまで待機するような処理を行っていない。このため、払出信号の出力中においても、上記のようなエラー処理(Se9)や操作入力受付処理(Sd14)の実行が可能となり、設定確認状態やエラー状態への制御が可能となる。
このようにすることで、制御の進行が妨げられないとともに、エラー状態などに制御された場合であっても、払出信号の出力が完了するまで払出信号の出力が継続されるため、誤った情報が外部に伝達されない。
また、遊技終了時の設定処理において、リプレイ入賞が発生した場合は(Sh2でYES)、リプレイ中LEDをONに設定(Sh7)し、リプレイ入賞が発生しなかった場合は(Sh2でNO)、リプレイ中LEDをOFFに設定(Sh9)している。また、遊技終了時の設定処理は、制御中の遊技状態(たとえば、通常状態、ボーナス、AT)がいずれであるかに関わらず、一遊技ごとに実行される処理である。
このように、リプレイ入賞が発生しているか否かを一遊技ごとに判定し、リプレイ入賞が発生しているときにはリプレイ中LEDを点灯させ、リプレイが発生していないときにはリプレイ中LEDを消灯させる。このようにすることで、遊技ごとの状況をふまえてリプレイ入賞の発生状況を出力することができる。
[割込禁止についての安全性]
次に、割込禁止についての安全性について説明する。本実施の形態においては、メイン処理の実行中において、割込処理が実行可能な構成となっている。また、RAM41cに格納されるデータの中には、メイン処理において更新されるとともに、割込処理においても更新されるデータがある。たとえば、メイン処理においてRAM41cからこのようなデータを取得し、データの更新処理をしようとしているときに、割込処理が実行されて当該データが更新されてしまうことがある。このように、意図しない割込処理によってデータが更新されてしまい、データに不整合が発生してしまう可能性がある。
このため、メイン処理においてこのようなデータを更新する際には、割込禁止設定を行って割込処理によって当該データが更新されないようにしている。このように割込禁止設定を行うことでデータの安全性を担保している。しかしながら、スロットマシンのソフトウェア開発において、プログラムの仕様変更があったような場合において、次のような問題が発生することがある。
たとえば、あるサブルーチンにおいて呼出命令(CALL命令)により、別のサブルーチンを呼び出すような場合、プログラム内で互いのサブルーチンが記載されている場所が遠いことがある。このような場合、呼出先のサブルーチンで割込禁止設定を行い、復帰命令により呼出元のサブルーチンに復帰した直後に、割込処理により更新され得るデータの取得処理を行うケースがある。このようにしたとしても、意図しない割込処理によってデータが更新されることはないのであるが、互いのプログラムの記載箇所が遠いため、非常に分かりづらい。また、プログラムの仕様変更があった場合に、呼出先のサブルーチンが削除されるようなことがあった場合には、意図しない割込処理が発生してしまい、割込を禁止することによるデータの安全性が担保されない。
本実施の形態においては、このような安全性を担保することで仕様変更時におけるプログラムの保守性を高めるために、呼出先プログラムにおいて割込1回待ち処理を行うとともに、呼出元プログラムにおいても割込禁止設定を行うようにしている。以下、詳細について、図23を用いて説明する。
図23は、割込割込禁止についての安全性について説明するためのフローチャートである。図23に示すように、メイン処理には、投入払出エラーチェック処理とエラー処理とが含まれる。エラー処理は、投入払出エラーチェック処理における呼出命令(CALL命令)で呼び出され、復帰命令(RET命令)で投入払出エラーチェック処理に復帰する。すなわち、投入払出エラーチェック処理は呼出元のプログラムであり、エラー処理は呼出先プログラムである。投入払出エラーチェック処理においては、センサエラーフラグを取得して更新する処理が行われる。センサエラーフラグは、上記で説明したような、メイン処理において更新されるとともに、割込処理においても更新されるデータである。
図11,図12を用いて説明したように、投入払出エラーチェック処理を開始した後、エラーが発生したと判定されると、エラー処理(ステップSe9)が実行される。エラー処理は、投入払出エラーチェック処理のCALL命令により呼び出される。エラー処理において、エラー解除条件が成立し、エラーが解除されると、エラー解除コマンド送信処理(Sf13)が実行される。そして、割込1回待ち処理(Sf14)が実行された後に、RET命令により投入払出エラーチェック処理に復帰する。
このように、エラー処理において、エラー処理を終了する前にエラー解除コマンドを送信し、当該コマンドの送信が完了するように、RET命令により投入払出エラーチェック処理に復帰する前に割込1回待ち処理を実行している。これにより、エラー解除コマンドが確実に送信された後に次の処理を実行することができる。
投入払出エラーチェック処理に戻ると、割込禁止設定(Se10)が行われる。割込禁止設定がされた状態で、センサエラーフラグの更新処理(Se11~Se13)が行わる。センサエラーフラグの更新処理が終了すると、割込許可設定(Se14)が行われる。
センサエラーフラグの更新処理においては、センサエラーフラグの取得を行っている。センサエラーフラグは割込処理において更新されるデータであるため、意図しない割込が発生してしまった場合、センサエラーフラグの値が変動してしまう可能性がある。このように、割込禁止設定を行うのは、センサエラーフラグを取得している途中にセンサエラーフラグが更新されないようするためである。
また、割込禁止設定(Se10)を行う直前の処理において割込1回待ち処理(Sf14)を実行している。割込1回待ち処理により割込処理が実行されるため、当該割込処理が実行された直後に、割込禁止設定(Se10)およびセンサエラーフラグの更新処理(Se11~Se13)が実行されることになる。割込処理の実行からセンサエラーフラグの更新処理の実行までの時間は、割込処理の実行から次の割込処理の実行までの時間よりも短い。このため、センサエラーフラグの更新処理中に割込が発生することはない。
しかし、このように、エラー処理において割込1回待ち処理を行うだけでなく、投入払出エラーチェック処理においても割込処理の実行を禁止するといった2重の処置を施すことで、意図しない割込処理を確実に防止することができる。また、上述したように、スロットマシンのソフトウェア開発においてプログラムの保守性を高めるためには、このような2重の処置を施すことが望ましい。これにより、プログラムの改変時などにおいても、意図しない不具合が発生してしまうことを防止でき、プログラムの保守性を高めることができる。
また、本実施の形態においては、エラー処理から投入払出エラーチェック処理に復帰した後、CALL命令により他の処理を呼び出すことなくセンサエラーフラグの更新処理(Se11~Se13)を実行している。これにより、エラー処理終了後にすみやかにセンサエラーフラグの更新処理を実行することができる。
なお、本実施の形態においては、センサエラーフラグの更新処理を、遊技プログラムである投入払出エラーチェック処理の中で実行するようにした。しかし、これに限らず、非遊技プログラムでセンサエラーフラグの更新処理を行うようにしてもよい。具体的には、センサエラーフラグの更新処理(Se11~Se13)を非遊技プログラムのサブルーチンとして規定し、投入払出エラーチェック処理によるCALL命令で当該サブルーチンを呼び出すようにしてもよい。非遊技プログラムは、プログラムの実行中に割込処理が実行されることがない。このため、センサエラーフラグの更新処理中に割込処理が発生することがない。
[出力データの設定]
次に、メイン側設定処理と割込側設定処理とで行われる出力データの設定処理の違いについて、図24に基づいて説明する。図24は、出力データの設定について説明するためのフローチャートである。
メイン側設定処理は、メイン処理において実行される処理であり、出力データを設定する処理である。たとえば、メイン処理のリール停止制御処理(Sc19)内で行われる出力データを設定する処理などがこれに相当する。これに対して、割込側設定処理は、タイマ割込処理(メイン)において実行される処理であり、出力データを設定する処理である。たとえば、タイマ割込処理(メイン)のセキュリティ信号送信処理(Si22)内で行われる出力データを設定する処理などがこれに相当する。
なお、図24で示すフローチャートは、上記出力データを設定する処理の流れを理解しやすくするために、模式的に示したものである。以下で示すLEDデータA,Bは、出力ポート0~8から出力されるいずれかのLEDデータであってもよく、信号データC,Dは、出力ポートから出力されるいずれかの信号データであってもよく、出力バッファA,Bは、出力ポート0~8を出力するために用いられるいずれかの出力バッファであってもよい。
以下、メイン側設定処理では、LEDデータAの設定処理およびLEDデータBの設定処理を行う。また、割込側設定処理では、LEDデータCの設定処理およびLEDデータDの設定処理を実行する。なお、本実施の形態では、データをOFF設定することを「クリア」とも称し、ON設定することを単に「設定」とも称する。
図24に示すように、メイン側設定処理では、まず割込禁止設定を行う(Sm1)。LEDA,Bデータは、割込処理によって更新されるデータである。このため、メイン側設定処理の実行中において、仮に設定したデータに基づき、意図しないLEDの点灯が発生してしまう可能性がある。また、更新されるデータが信号データである場合には、仮に設定したデータに基づき、意図しない信号が出力されてしまう危険性がある。このように、割込禁止設定を行うことで、意図しないLEDの点灯または消灯の発生や、信号の出力を防止することができる。
次に、LEDデータAおよびLEDデータBをまとめてOFF設定する(Sm2)。LEDデータAおよびLEDデータBは、1バイトのLEDデータ内の各ビットに対応するデータである。たとえば、LEDデータの1ビット目が1であるときにLEDデータAはONとなり、LEDデータの1ビット目が0であるときにLEDデータAはOFFとなり、LEDデータの2ビット目が1であるときにLEDデータBはONとなり、LEDデータの2ビット目が0であるときにLEDデータBはOFFとなる。このため、LEDデータを0にすることで、LEDデータAおよびLEDデータBがまとめてOFF設定されるため、処理が容易である。
Sm3のステップにおいて、LEDデータAの有効化条件が成立している場合には(Sm3がYES)、LEDデータAをON設定し(Sm4)、Sm5のステップに進む。一方で、LEDデータAの有効化条件が成立していない場合には(Sm3がNO)、Sm5のステップに進む。
Sm5のステップにおいて、LEDデータBの有効化条件(LEDの点灯条件)が成立している場合には(Sm5がYES)、LEDデータBをON設定し(Sm6)、Sm7のステップに進む。一方で、LEDデータBの有効化条件が成立していない場合には(Sm5がNO)、Sm7のステップに進む。
Sm7のステップにおいて、LEDデータAおよびLEDデータBを出力バッファAに設定する。Sm8のステップにおいて、割込許可設定(Sm8)を行い、メイン側設定処理を終了する。割込許可設定により、割込処理が実行されると、出力バッファAに設定されたデータに基づき、LEDAおよびLEDBが点灯または消灯する。
このように、メイン側設定処理は、出力データ(LEDデータA,B)の設定をまとめてOFF設定した後、出力条件(LEDデータA,Bの有効化条件)が成立しているときに出力データをON設定する処理である。そして、メイン側設定処理により設定されたLEDデータA,LEDデータBに基づきLEDA,LEDBを点灯または消灯させる。このように、メイン側設定処理においては、まとめて設定を行うことで出力データのOFF設定が容易になる。
なお、本実施の形態においては、LEDデータA,Bを出力バッファAに設定し、出力バッファAに基づき出力ポート出力処理によりLEDA,Bを点灯または消灯させるようにしたが、これに限らず、LEDデータA,Bを出力バッファAに設定することなく、LEDデータA,Bに基づき出力ポート出力処理によりLEDA,Bを点灯または消灯させるようにしてもよい。
次に、割込側設定処理について説明する。割込側設定処理では、信号データCおよび信号データDをまとめてON設定する(Sn1)。信号データCおよび信号データDは、1バイトの信号データ内の各ビットに対応するデータである。たとえば、信号データの1ビット目が1であるときに信号データCはONとなり、信号データの1ビット目が0であるときに信号データCはOFFとなり、信号データの2ビット目が1であるときに信号データDはONとなり、信号データの2ビット目が0であるときに信号データDはOFFとなる。このため、信号データをFFHにすることで、信号データAおよびLEDデータBをまとめてON設定されるため、処理が容易である。
Sn2のステップにおいて、信号データCの無効化条件(信号の停止条件)が成立している場合には(Sn2がYES)、信号データCをOFF設定し(Sn3)、Sm4のステップに進む。一方で、信号データCの無効化条件が成立していない場合には(Sn2がNO)、S4のステップに進む。
Sn4のステップにおいて、信号データDの無効化条件が成立している場合には(Sn4がYES)、信号データDをOFF設定し(Sn5)、Sn6のステップに進む。一方で、信号データDの有効化条件が成立していない場合には(Sn4がNO)、Sn6のステップに進む。
Sn6のステップにおいて、信号データCおよび信号データDを出力バッファBに設定し、割込側設定処理を終了する。割込側設定処理が終了すると、割込処理で実行される出力ポートの出力処理において、出力バッファBに設定されたデータに基づき、信号Cおよび信号Dが出力される。
このように、割込側設定処理は、出力データ(信号データC,D)をまとめてON設定した後、出力条件(信号データC,Dの有効化条件)が成立していないときに出力データの設定をOFF設定する処理である。そして、割込側設定処理により設定された信号データC,信号データDに基づき信号C,信号Dを出力する。このように、割込側設定処理においては、まとめて設定を行うことで出力データのON設定が容易になる。
また、信号データC,信号データDのそれぞれに対して無効化条件が成立したか否かを判定し、信号データCの無効化条件が成立したときは信号データCをOFF設定し、次の成立条件である信号データDの無効化条件が成立したときは信号データDをOFF設定している。
たとえば、無効化条件を判定するたびに無効化条件の判定結果を保持して、全ての判定が終了した後に、まとめて信号データをOFFにする方法もある。しかし、このようにすると、いちいち無効化条件の判定結果を保持する必要が出てくる。上記のように、無効化条件が成立するたびに信号データをOFF設定することで、無効化条件の判定結果をその都度保持する必要がなくなる。
なお、本実施の形態においては、信号データC,Dを出力バッファBに設定し、出力バッファBに基づき出力ポート出力処理により信号C,信号Dを出力させるようにしたが、これに限らず、信号データC,Dを出力バッファBに設定することなく、信号データC,Dに基づき出力ポート出力処理により信号C,信号Dを出力させるようにしてもよい。
以上説明したように、先に出力データをON設定またはOFF設定し、条件の成立により必要に応じて当該出力データを更新することで、データ処理を簡素化することができる。たとえば、複数の信号データを含む1バイトデータがあり、各信号データが1バイトデータの中の各ビットに対応する(8ビット分の信号データを含む)場合、上記1バイトデータをFFHに書き換えることで、全ての信号データをON設定ことができる。また、上記1バイトデータを00Hに書き換えることで、全ての信号データをOFF設定することができる。
プログラムが用いる命令としては、データをON設定する命令よりもデータをOFF設定(クリア)する命令の方が充実している。たとえば、上記1バイトデータを保持するレジスタに対して、00HまたはFFHのデータを保持するレジスタの内容を読み込ませてデータをOFF設定(00H)またはON設定(FFH)することができる。これに対して、データのOFF設定に関しては、クリア命令の実行により一回でデータをクリア(00H)することができるため、処理容量が少なくなる。
このため、データを一旦OFFに設定にしてから必要に応じてONに設定する方が、処理容量削減の点から考えれば望ましい。そこで、割込側設定処理においては、先に出力データをONに設定し、条件の成立により当該出力データをOFFに設定している。これにより、プログラムをより簡素化している。一方で、メイン処理で先にON設定をしてしまうと、割込処理が実行されることによって、誤った信号が出力されてしまう虞がある。このため、メイン側設定処理においては、先に出力データをOFFに設定し、成立条件の成立により当該出力データをONに設定している。これにより、誤った信号が出力されることを防止することができる。
[本実施形態のスロットマシンが有する構成および奏する効果]
次に、本実施形態のスロットマシンが有する構成および奏する効果を説明する。
(1-1) 各々が識別可能な複数種類の識別情報を変動表示可能な可変表示部を複数備え、
前記可変表示部を変動表示した後、前記可変表示部の変動表示を停止することで表示結果を導出し、複数の可変表示部の表示結果の組合せである表示結果組合せに応じて入賞が発生可能なスロットマシン(たとえば、スロットマシン1)において、
表示結果組合せを導出させるために操作される複数の導出操作手段(たとえば、ストップスイッチ8L,8C,8R)と、
所定の処理を実行する処理手段(たとえば、メインCPU41a)とを備え、
前記処理手段によって実行される前記所定の処理には、メイン処理(たとえば、図9に示すメイン処理)と、割込の発生に基づき前記メイン処理に割り込んで実行される割込処理(たとえば、図16に示すタイマ割込処理(メイン))とが含まれ、
前記処理手段は、
割込処理において、前記複数の導出操作手段のうちのいずれかの操作に基づく入力の有無を判定し、前記複数の導出操作手段のうちの第1導出操作手段(たとえば、左ストップスイッチ)の操作に基づく第1入力(たとえば、左ストップスイッチ信号のONエッジの検出)があったと判定した場合、当該割込処理後の前記メイン処理において、前記複数の可変表示部のうちの第1可変表示部(たとえば、透視窓3を介して遊技者側から視認可能な左リールの領域)における変動表示の停止位置を設定するための第1設定処理(たとえば、リール停止滑りコマ格納処理)を実行し(たとえば、左ストップスイッチの操作に基づく左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、左リールの停止位置を設定するためのリール停止滑りコマ格納処理(左)を実行する)、
前記第1設定処理を開始した後、当該第1設定処理が完了するまで新たな割込処理の実行を禁止し、当該第1設定処理が完了した後に当該新たな割込処理を実行し(たとえば、図13,図14に示すように、リール停止滑りコマ格納処理(左)を開始した後、リール停止滑りコマ格納処理(左)が完了するまで新たな割込処理の実行を禁止し、当該リール停止滑りコマ格納処理(左)が完了した後に新たな割込処理を実行する)、
前記新たな割込処理において、前記複数の導出操作手段のうちのいずれかの操作に基づく入力の有無を判定し、前記複数の導出操作手段のうちの第2導出操作手段(たとえば、中ストップスイッチ)の操作に基づく第2入力(たとえば、中ストップスイッチ信号のONエッジの検出)があったと判定した場合、当該新たな割込処理後の前記メイン処理において、前記複数の可変表示部のうちの第2可変表示部(たとえば、透視窓3を介して遊技者側から視認可能な中リールの領域)における変動表示の停止位置を設定するための第2設定処理(たとえば、リール停止滑りコマ格納処理)を実行するものであり(たとえば、図13,図14に示すように、新たな割込処理において、中ストップスイッチの操作に基づく中ストップスイッチ信号のONエッジが検出された場合、新たな割込処理後のメイン処理において、中リールの停止位置を設定するためのリール停止滑りコマ格納処理(中)を実行する)、
前記処理手段は、さらに、前記新たな割込処理後の前記メイン処理において、前記可変表示部の変動表示が正常であるか否か(たとえば、リール回転エラー)を判定し、当該変動表示が正常でないと判定した場合、当該新たな割込処理において判定した前記第2入力に基づいて前記第2設定処理を実行せず、当該変動表示が正常であると判定した場合、当該新たな割込処理において判定した前記第2入力に基づいて前記第2設定処理を実行する(たとえば、新たな割込処理後のメイン処理において、リール回転エラーが発生しているか否かを判定し、リール回転エラーが発生している場合、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行せず、リール回転エラーが発生と判定した場合に、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行する)。
たとえば、本実施の形態においては、図13,図14に示すように、左ストップスイッチの操作に基づく左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、左リールの停止位置を設定するためのリール停止滑りコマ格納処理(左)を実行し、リール停止滑りコマ格納処理(左)を開始した後、リール停止滑りコマ格納処理(左)が完了するまで新たな割込処理の実行を禁止し、リール停止滑りコマ格納処理(左)が完了した後に新たな割込処理を実行し、新たな割込処理において、中ストップスイッチの操作に基づく中ストップスイッチ信号のONエッジが検出された場合、新たな割込処理後のメイン処理において、中リールの停止位置を設定するためのリール停止滑りコマ格納処理(中)を実行する。このようにすることで、左ストップスイッチの操作に基づくリール停止滑りコマ格納処理(左)が完了する前に中ストップスイッチの操作に基づくリール停止滑りコマ格納処理(中)が実行されることを防止することができる。また、新たな割込処理後のメイン処理において、リール回転エラーが発生しているか否かを判定し、リール回転エラーが発生している場合、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行せず、リール回転エラーが発生していないと判定した場合に、新たな割込処理に基づいてリール停止滑りコマ格納処理(中)を実行する。このようにすることで、リールの回転が正常であることを条件に、中ストップスイッチの操作に基づくリール停止滑りコマ格納処理(中)が実行されることを担保することができる。このように、リールの停止位置を設定するためのリール停止滑りコマ格納処理を連続的に実行する場合に、好適にリール停止滑りコマ格納処理を実行することができる。
(1-2) 前記処理手段は、
前記第1設定処理を完了した後、当該第1設定処理により設定された前記第1可変表示部における変動表示の停止位置を示す第1停止コマンド(たとえば、リール停止位置コマンド)を出力し(たとえば、図14に示すように、リール停止滑りコマ格納処理(左)を完了した後、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置を示すリール停止位置コマンドを出力する)、
前記第1停止コマンドを出力するための設定が完了するまで、割込処理の実行を禁止する(たとえば、図14に示すように、左リールの停止位置を示すリール停止位置コマンドを出力するための設定が完了するまで、割込処理の実行を禁止する)。
たとえば、本実施の形態においては、図14に示すように、リール停止滑りコマ格納処理(左)を完了した後、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置を示すリール停止位置コマンドを出力し、左リールの停止位置を示すリール停止位置コマンドを出力するための設定が完了するまで、割込処理の実行を禁止する。このため、リール停止位置コマンドの送信が完了する前に新たなストップスイッチの操作に基づく処理が行われない。
(1-3) 前記処理手段は、
前記第1停止コマンドを出力する際に当該第1停止コマンドを含む複数のコマンドを出力し(たとえば、リール停止受付け時コマンド、リール停止位置コマンド、滑りコマ数コマンド、リール停止コマンド)、
前記複数のコマンドを出力するための設定が完了するまで、割込処理の実行を禁止する(たとえば、図14に示すように、複数のコマンドを出力するための設定が完了するまで割込処理の実行を禁止する)。
たとえば、本実施の形態においては、図14に示すように、リール停止位置コマンドを出力する際にリール停止受付け時コマンド、滑りコマ数コマンドおよびリール停止コマンドを出力し、これらの複数のコマンドを出力するための設定が完了するまで割込処理の実行を禁止する。このように、複数のコマンドを出力するための設定が完了するまでに、割込処理により意図しないコマンドが出力されたり、複数のコマンド間で送信間隔が大きく空くことを防止することができる。
(1-4) 前記処理手段は、前記第2設定処理において、前記第1設定処理により設定された前記第1可変表示部における変動表示の停止位置に基づいて、前記第2可変表示部における変動表示の停止位置を設定する(たとえば、図13に示すように、リール停止滑りコマ格納処理(中)において、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置に基づいて、中リールの停止位置を設定する。)。
たとえば、本実施の形態においては、図13に示すように、リール停止滑りコマ格納処理(中)において、リール停止滑りコマ格納処理(左)により設定された左リールの停止位置に基づいて、中リールの停止位置を設定する。このように、中リールの停止位置は左リールの停止位置に基づいて設定されるため、導出される図柄組合せが多様になる。
(1-5) 前記処理手段は、前記第2可変表示部における変動表示が停止することで表示結果組合せが導出される場合であっても、前記第2設定処理を開始した後、当該第2設定処理が完了するまで、新たな割込処理の実行を禁止する(たとえば、図14に示すように、左リールが停止することで図柄組合せが導出される場合であっても、リール停止滑りコマ格納処理(中)を開始した後、リール停止滑りコマ格納処理(中)が完了するまで、新たな割込処理の実行を禁止する)。
たとえば、本実施の形態においては、図14に示すように、中リールが停止することで図柄組合せが導出される場合であっても、リール停止滑りコマ格納処理(中)を開始した後、リール停止滑りコマ格納処理(中)が完了するまで、新たな割込処理の実行を禁止する。このように、リール停止滑りコマ格納処理の実行中に他の処理が実行されないため、速やかにリールを停止させる制御を行うことができる。
(1-6) 前記処理手段は、前記第1可変表示部および前記第2可変表示部がともに変動表示している場合の割込処理において、前記第1入力および前記第2入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第1設定処理を実行する一方で、前記第2設定処理を実行しない(たとえば、図19に示すように、左リールおよび中リールがともに回転している場合の割込処理において、左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する一方で、リール停止滑りコマ格納処理(中)を実行しない。)。
たとえば、本実施の形態においては、図19に示すように、左リールおよび中リールがともに回転している場合の割込処理において、左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する一方で、リール停止滑りコマ格納処理(中)を実行しない。しかし、一の割込処理でもずれて左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合には左リールおよび中リールが停止可能となるため、速やかにリールを停止させることができる。
(1-7) 前記処理手段は、
前記第1可変表示部および前記第2可変表示部がともに変動表示している場合の所定の割込処理において、前記第1入力があったと判定した場合、当該所定の割込処理後の前記メイン処理において、前記第1設定処理を実行可能であり(たとえば、図17に示すように、左リールおよび中リールがともに回転している場合の所定の割込処理において、左ストップスイッチ信号のONエッジが検出された場合、所定の割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する)、
前記所定の割込処理の後の割込処理において、前記第2入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第2設定処理を実行可能である(たとえば、図17に示すように、所定の割込処理の後の割込処理において、中ストップスイッチ信号のONエッジが検出された場合、当該割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する)。
たとえば、本実施の形態においては、図17に示すように、左リールおよび中リールがともに回転している場合の所定の割込処理において、左ストップスイッチ信号のONエッジが検出された場合、所定の割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行し、所定の割込処理の後の割込処理において、中ストップスイッチ信号のONエッジが検出された場合、当該割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する。このように、一の割込処理でもずれて左ストップスイッチ信号および中ストップスイッチ信号のONエッジが検出された場合には左リールおよび中リールが停止可能となるため、速やかにリールを停止させることができる。
(1-8) 前記処理手段は、
前記第1可変表示部および前記第2可変表示部がともに変動表示している場合の所定の割込処理において、前記第1入力および前記第2入力があったと判定した場合、当該所定の割込処理後の前記メイン処理において、前記第1設定処理を実行する一方で、前記第2設定処理を実行せず(たとえば、図19に示すように、左リールおよび中リールがともに回転している場合の所定の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、所定の割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する一方で、リール停止滑りコマ格納処理(中)を実行しない)、
前記所定の割込処理の後の割込処理において、前記第1入力および前記第2入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第2設定処理を実行する一方で、前記第1設定処理を実行しない(たとえば、図19に示すように、所定の割込処理の後の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する一方で、リール停止滑りコマ格納処理(左)を実行しない)。
たとえば、本実施の形態においては、図19に示すように、左リールおよび中リールがともに回転している場合の所定の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、所定の割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する一方で、リール停止滑りコマ格納処理(中)を実行しない。また、所定の割込処理の後の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する一方で、リール停止滑りコマ格納処理(左)を実行しない。このように、左ストップスイッチおよび中ストップスイッチが同時に操作された場合に、回転中のリールが停止することになるため、ストップスイッチの操作性を損ねない。
(1-9) 前記処理手段は、
前記第1可変表示部における変動表示が停止しかつ前記第2可変表示部が変動表示している場合の割込処理において、前記第1入力および前記第2入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第2設定処理を実行し(たとえば、図19に示すように、左リールが停止しかつ中リールが回転している場合の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行する)、
前記第2可変表示部における変動表示が停止しかつ前記第1可変表示部が変動表示している場合の割込処理において、前記第1入力および前記第2入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第1設定処理を実行する(たとえば、図19に示すように、中リールが停止しかつ左リールが回転している場合の割込処理において、中ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する)。
たとえば、本実施の形態においては、図19に示すように、左リールが停止しかつ中リールが回転している場合の割込処理において、左ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(中)を実行し、中リールが停止しかつ左リールが回転している場合の割込処理において、中ストップスイッチ信号のONエッジおよび左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、リール停止滑りコマ格納処理(左)を実行する。このように、同一割込処理において複数のストップスイッチ信号のONエッジが検出されたとしても、回転中のリールのリール停止滑りコマ格納処理が実行されるため、操作性を損ねることがない。
(1-10) 前記処理手段は、
割込処理において前記第1入力があったと判定した場合、当該割込処理後の前記メイン処理において、前記第1可変表示部における変動表示の位置が、当該第1可変表示部のそれぞれの識別情報(たとえば、図柄)に対応する範囲(たとえば、各図柄のステップ数)における共通のステップ(たとえば、11ステップ)の位置となったときに識別情報に対応する識別番号(たとえば、図柄番号)を取得し、当該識別番号に基づいて前記第1設定処理を実行し(たとえば、図14に示すように、割込処理において左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、左リールの位置が、左リールの各図柄のステップ数における所定ステップの位置となったときに図柄に対応する図柄番号を取得し、図柄番号に基づいてリール停止滑りコマ格納処理(左)を実行し)、
前記第1入力があったと判定した後、前記第1可変表示部における変動表示の位置が前記共通のステップの位置となるまで、前記第2入力があったとしても当該第2入力を受付けない(たとえば、図14に示すように、左ストップスイッチ信号のONエッジが検出された後、左リールの位置が11ステップの位置となるまで、中ストップスイッチ信号のONエッジが検出されたとしても中ストップスイッチ信号のONエッジを受付けない)。
たとえば、本実施の形態においては、図14に示すように、割込処理において左ストップスイッチ信号のONエッジが検出された場合、割込処理後のメイン処理において、左リールの位置が、左リールの各図柄のステップ数における11ステップの位置となったときに図柄に対応する図柄番号を取得し、図柄番号に基づいてリール停止滑りコマ格納処理(左)を実行し、左ストップスイッチ信号のONエッジが検出された後、左リールの位置が11ステップの位置となるまで、中ストップスイッチ信号のONエッジが検出されたとしても中ストップスイッチ信号のONエッジを受付けない。このようにすることで、リール停止滑りコマ格納処理を11ステップの位置から実行可能となる。
(1-11) 前記複数の可変表示部における変動表示を開始するための開始操作手段(たとえば、スタートスイッチ7)をさらに備え、
前記処理手段は、
前記開始操作手段の操作に基づき、所定時間(たとえば、2秒)に亘って特定信号(たとえば、内部当選信号)を出力する制御を行い(たとえば、図13に示すように、スタートスイッチ7の操作に基づき、2秒に亘って内部当選信号を出力する制御を行い)、
前記所定時間が経過したことを条件に、前記複数の導出操作手段の操作を有効にする(たとえば、図13に示すように、2秒が経過したことを条件に、ストップスイッチ8L,8C,8Rの操作を有効にする)。
たとえば、本実施の形態においては、図13に示すように、スタートスイッチ7の操作に基づき、2秒に亘って内部当選信号を出力する制御を行い、2秒が経過したことを条件に、ストップスイッチ8L,8C,8Rの操作を有効にする。このようにすることで、外部装置(試験装置)において内部当選信号の内容を確認可能にした上で、リールが停止可能となる。
(1-12) 前記処理手段は、前記複数の可変表示部における変動表示を開始させるためのモータ(たとえば、リールモータ)に対して駆動信号(たとえば、第1~第3リールモータφ0~φ3信号)が出力されているか否かを判定することに基づいて、当該複数の可変表示部全ての変動表示が停止したか否かを判定する(たとえば、図14に示すように、リールモータに対してリールモータ信号が出力されているか否かを判定することに基づいて、全てのリールが停止したか否かを判定する)。
たとえば、本実施の形態においては、図14に示すように、リールモータに対してリールモータ信号(第1~第3リールモータφ0~φ3信号)が出力されているか否かを判定することに基づいて、全てのリールが停止したか否かを判定する。このようにすることで、リールが停止したことをリールモータ信号の出力状況に基づいて判断することができる。
(1-13) 前記処理手段は、
前記モータに対する駆動信号および投入された遊技媒体の流路を切り替えるブロッカのソレノイド(たとえば、流路切替ソレノイド30)に対する駆動信号(たとえば、流路切替ソレノイド信号)を、特定ポート(たとえば、出力ポート0,1)から出力し(たとえば、図5に示すように、リールモータ信号および流路切替ソレノイド信号を出力ポート0,1から出力する)、
前記複数の可変表示部における変動表示を開始させるときに、前記ソレノイドに対する駆動信号の出力を停止し(たとえば、図14に示すように、全てのリールの回転を開始させるときに、流路切替ソレノイド信号の出力を停止し)、
前記特定ポートから信号が出力されているか否か判定することに基づいて、前記複数の可変表示部全ての変動表示が停止したか否かを判定する(たとえば、図12に示すように、出力ポート0,1から信号が出力されているか否か判定することに基づいて、全てのリールが停止したか否かを判定する)。
たとえば、本実施の形態においては、図5,図14に示すように、リールモータ信号および流路切替ソレノイド信号を出力ポート0,1から出力し、全てのリールの回転を開始させるときに、流路切替ソレノイド信号の出力を停止し、出力ポート0,1から信号が出力されているか否か判定することに基づいて、全てのリールが停止したか否かを判定する。このようにすることで、空きポートを好適に扱える一方で、全てのリールが停止したか否かの判定の妨げにならない。
(2-1) 前記処理手段は、
遊技者所有の遊技用価値(たとえば、メダル)を用いることなく次の遊技を開始可能な再遊技入賞(たとえば、リプレイ入賞)が発生したことに基づきアウト信号(たとえば、払出信号)を出力し(たとえば、図22に示すように、リプレイ入賞が発生したことに基づき払出信号を出力し)、
前記再遊技入賞が発生した場合、当該再遊技入賞に基づく前記アウト信号の出力が完了したか否かに関わらず、当該再遊技入賞が発生した遊技の次の遊技において前記開始操作手段の操作を有効化する(たとえば、図22に示すように、リプレイ入賞が発生した場合、リプレイ入賞に基づく払出信号の出力が完了したか否かに関わらず、リプレイ入賞が発生した遊技の次の遊技において開始操作を有効化する)。
たとえば、本実施の形態においては、図22に示すように、リプレイ入賞が発生したことに基づき払出信号を出力し、リプレイ入賞が発生した場合、リプレイ入賞に基づく払出信号の出力が完了したか否かに関わらず、リプレイ入賞が発生した遊技の次の遊技において開始操作を有効化する。このようにすることで、遊技の進行を速やかに進めることができる。
(2-2) 前記処理手段は、
前記開始操作手段が操作されたことに基づきイン信号(たとえば、投入信号)を出力し(たとえば、図22に示すように、開始操作がされたことに基づき投入信号を出力する)、
前記アウト信号の出力が完了する前に前記開始操作手段が操作された場合、当該アウト信号の出力が完了した後に前記イン信号の出力を開始する(たとえば、図22に示すように、払出信号の出力が完了する前に開始操作がされた場合、払出信号の出力が完了した後に投入信号の出力を開始する)。
たとえば、本実施の形態においては、図22に示すように、開始操作がされたことに基づき投入信号を出力し、払出信号の出力が完了する前に開始操作がされた場合、払出信号の出力が完了した後に投入信号の出力を開始する。このように、投入信号の出力を遅らせることで、投入信号および払出信号の出力タイミングが重ならないので、外部機器において受信した信号を確認することで、メインCPU41aが実行する処理の処理順序を特定しやすくなる。
(2-3) 前記処理手段は、
前記イン信号を出力する際には、前記アウト信号の出力状態を確認し、当該アウト信号が出力されていない場合に当該イン信号を出力し(たとえば、図22に示すように、投入信号を出力する際には、払出信号の出力状態を確認し、払出信号が出力されていない場合に投入信号を出力する)、
前記アウト信号を出力する際には、前記イン信号の出力状態を確認することなく当該アウト信号を出力する(たとえば、図22に示すように、払出信号を出力する際には、投入信号の出力状態を確認することなく払出信号を出力する)。
たとえば、本実施の形態においては、図22に示すように、投入信号を出力する際には、払出信号の出力状態を確認し、払出信号が出力されていない場合に投入信号を出力し、払出信号を出力する際には、投入信号の出力状態を確認することなく払出信号を出力する。投入信号の出力中に払出信号が出力されることがないため、投入信号の出力状態の確認を省略することで、処理負担を軽減することができる。
(2-4) 前記処理手段は、
単位遊技(たとえば、1ゲーム)が終了したときに記憶手段(たとえば、RAM41c)における記憶領域を初期化する第1初期化処理(たとえば、遊技終了時に遊技用RAMの領域Dをクリアする処理(Sa2))と、
遊技者にとって有利な有利状態(たとえば、ボーナス状態)への制御が終了したときに前記記憶手段における記憶領域を初期化する第2初期化処理(たとえば、ボーナス終了時に遊技用RAMの領域C,Dをクリアする処理(Sa2))とを実行可能であり、
前記第1初期化処理および前記第2初期化処理のいずれによっても初期化されない前記記憶手段における記憶領域(たとえば、遊技RAM領域のうちの領域A)に、前記アウト信号の出力データを設定する(たとえば、図21(B)に示すように、遊技終了時に遊技用RAMの領域Dをクリアする処理およびボーナス終了時に遊技用RAMの領域C,Dをクリアする処理のいずれによっても初期化されない遊技用RAMの領域Aに払出信号の出力データを設定する)。
たとえば、本実施の形態においては、図21(B)に示すように、遊技終了時に遊技用RAMの領域Dをクリアする処理およびボーナス終了時に遊技用RAMの領域C,Dをクリアする処理のいずれによっても初期化されない遊技用RAMの領域Aに払出信号の出力データを設定する。このようにすることで、遊技用RAMのクリア処理によって意図せず払出信号の出力が停止することを防止することができる。
(2-5) 前記処理手段は、前記再遊技入賞の発生に基づく遊技を開始するための賭数の設定を、前記アウト信号の出力を開始した後に実行する(たとえば、図20に示すように、リプレイ入賞の発生に基づく遊技を開始するためのBET数の設定を、払出信号の出力を開始した後に実行する)。
たとえば、本実施の形態においては、図20に示すように、リプレイ入賞の発生に基づく遊技を開始するためのBET数の設定を、払出信号の出力を開始した後に実行する。このように、伝達に時間がかかる外部への情報出力である払出信号の出力をいち早く行うことで、遊技の進行を妨げない。
(2-6) 前記処理手段は、
前記アウト信号の出力中において、移行条件(たとえば、エラー発生、設定変更操作)が成立した場合に特定状態(たとえば、エラー状態、設定変更状態)に制御し、
前記特定状態に制御した場合であっても、前記アウト信号の出力が完了するまで当該アウト信号の出力を継続する(たとえば、図10に示すように、エラー状態に制御された場合であっても、払出信号の出力が完了するまで払出信号の出力を継続する)。
たとえば、本実施の形態においては、図10に示すように、払出信号の出力中において、エラーが発生した場合にエラー状態に制御されるため、制御の進行が妨げられないとともに、エラー状態に制御された場合であっても、払出信号の出力が完了するまで払出信号の出力が継続されるため、誤った情報が外部に伝達されない。
(2-7) 前記処理手段は、前記再遊技入賞が発生したときに、当該再遊技入賞が発生した遊技において設定されている賭数(たとえば、BET数)を取得し、取得した賭数に対応する数値データ(たとえば、3)を、前記再遊技入賞による賭数設定用の記憶領域(たとえば、リプレイ用カウンタ)と前記アウト信号を出力するための記憶領域(たとえば、払出信号用カウンタ)とに格納する(たとえば、図20に示すように、リプレイ入賞が発生したときに、リプレイが発生した遊技において設定されているBET数を取得し、取得したBET数に対応する数値データを、リプレイ用カウンタと払出信号用カウンタとに格納する)。
たとえば、本実施の形態においては、たとえば、図20に示すように、リプレイ入賞が発生したときに、リプレイが発生した遊技において設定されているBET数を取得し、取得したBET数に対応する数値データを、リプレイ用カウンタと払出信号用カウンタとに格納する。このようにすることで、効率よくメダル数の設定を行うことができる。
(2-8) 前記再遊技入賞による賭数設定用の記憶領域は、賭数が所定数(たとえば、3)に定められている場合であっても、当該所定数に対応する数値データ以外の数値データ(たとえば、0~2,4~255)を格納可能である(たとえば、図21(A)に示すように、リプレイ用カウンタは、BET数が3に定められている場合であっても、0~255の数値を格納することができる)。
たとえば、本実施の形態においては、図21(A)に示すように、リプレイ用カウンタは、BET数が3に定められている場合であっても、0~255の数値を格納することができる。このようにすることで、スロットマシンのソフトウェアの仕様が変更された場合であっても、仕様変更への対応が容易になる。
(2-9) 前記処理手段は、制御中の遊技状態(たとえば、通常状態、ボーナス、AT)がいずれであるかに関わらず、前記再遊技入賞が発生しているか否かを単位遊技ごとに判定し、前記再遊技入賞が発生しているときには点灯手段(たとえば、リプレイ中LED)を点灯させ、前記再遊技入賞が発生していないときには前記点灯手段を消灯させる(たとえば、図15に示すように、制御中の遊技状態がいずれであるかに関わらず、リプレイ入賞が発生しているか否かを1ゲームごとに判定し、リプレイ入賞が発生しているときにはリプレイ中LEDを点灯させ、リプレイが発生していないときにはリプレイ中LEDを消灯させる。)。
たとえば、本実施の形態においては、図15に示すように、制御中の遊技状態がいずれであるかに関わらず、リプレイ入賞が発生しているか否かを一遊技ごとに判定し、リプレイ入賞が発生しているときにはリプレイ中LEDを点灯させ、リプレイが発生していないときにはリプレイ中LEDを消灯させる。このようにすることで、遊技ごとの状況をふまえてリプレイ入賞の発生状況を出力することができる。
(3-1) 前記メイン処理は、第1処理(たとえば、投入払出エラーチェック処理)と、当該第1処理における呼出命令(たとえば、CALL命令)で呼び出され、復帰命令(たとえば、RET命令)で当該第1処理に復帰する第2処理(たとえば、エラー処理)とを含み、
前記第2処理は、割込処理が実行されるまで待機し、当該割込処理が実行されたことを条件に次の処理に進む割込待ち処理(たとえば、割込1回待ち処理)を含み、
前記処理手段は、前記第1処理において、前記第2処理から復帰した後、所定処理を実行するときに、割込処理の実行を禁止する(たとえば、図23に示すように、投入払出エラーチェック処理において、エラー処理から復帰した後、センサエラーフラグを取得する処理を実行するときに、割込処理の実行を禁止する)。
たとえば、本実施の形態においては、図23に示すように、メイン処理は、投入払出エラーチェック処理と、投入払出エラーチェック処理におけるCALL命令で呼び出され、RET命令で投入払出エラーチェック処理に復帰するエラー処理とを含み、エラー処理は、割込処理が実行されるまで待機し、割込処理が実行されたことを条件に次の処理に進む割込1回待ち処理を含み、投入払出エラーチェック処理において、エラー処理から復帰した後、センサエラーフラグを取得する処理を実行するときに、割込処理の実行を禁止する。このように、エラー処理において割込1回待ち処理を行うだけでなく、投入払出エラーチェック処理においても割込処理の実行を禁止するため、意図しない割込処理を確実に防止することができる。このようにすることで、スロットマシンの開発におけるプログラムの改変時などにおいても、意図しない不具合が発生してしまうことを防止でき、プログラムの保守性を高めることができる。
(3-2) 前記処理手段は、前記第2処理において、当該第2処理を終了する前にコマンド(たとえば、エラー解除コマンド)を送信し、当該コマンドの送信が完了するように、前記復帰命令により前記第1処理に復帰する前に前記割込待ち処理を実行する(たとえば、図23に示すように、エラー処理において、エラー処理を終了する前にエラー解除コマンドを送信し、エラー解除コマンドの送信が完了するように、RET命令により投入払出エラーチェック処理に復帰する前に割込1回待ち処理を実行する)。
たとえば、本実施の形態においては、図23に示すように、エラー処理において、エラー処理を終了する前にエラー解除コマンドを送信し、エラー解除コマンドの送信が完了するように、RET命令により投入払出エラーチェック処理に復帰する前に割込1回待ち処理を実行する。このようにすることで、エラー解除コマンドが確実に送信された後に次の処理を実行することができる。
(3-3) 前記所定処理は、割込処理において更新される所定情報(たとえば、センサエラーフラグ)を取得する処理である(たとえば、図23に示すように、所定処理は、割込処理において更新されるセンサエラーフラグを取得するセンサエラーフラグの更新処理である)。
たとえば、本実施の形態においては、図23に示すように、所定処理は、割込処理において更新されるセンサエラーフラグを取得するセンサエラーフラグの更新処理である。エラー処理から復帰した後、割込処理の実行を禁止するため、センサエラーフラグを取得している途中にセンサエラーフラグが更新されることがない。
(3-4) 前記所定処理は、遊技の進行に係る遊技プログラムとは異なる非遊技プログラムが前記第1処理による呼出命令で呼び出されることで実行される処理である(たとえば、図23に示すように、所定処理は、遊技の進行に係る遊技プログラムとは異なる非遊技プログラムが投入払出エラーチェック処理によるCALL命令で呼び出されることで実行される処理である)。
たとえば、本実施の形態においては、図23に示すように、所定処理は、遊技の進行に係る遊技プログラムとは異なる非遊技プログラムが投入払出エラーチェック処理によるCALL命令で呼び出されることで実行される処理である。このようにすることで、非遊技プログラムの実行中に割込が生じない。
(3-5) 前記処理手段は、前記第2処理から前記第1処理に復帰した後、前記呼出命令により他の処理を呼び出すことなく前記所定処理を実行する(たとえば、図23に示すように、エラー処理から投入払出エラーチェック処理に復帰した後、CALL命令により他の処理を呼び出すことなく所定処理を実行する)。
たとえば、本実施の形態においては、図23に示すように、エラー処理から投入払出エラーチェック処理に復帰した後、CALL命令により他の処理を呼び出すことなく所定処理を実行する。このようにすることで、エラー処理終了後にすみやかに所定処理を実行することができる。
(4-1) 前記処理手段は、
割込処理において、前記記憶手段における記憶領域に設定された出力データを出力する出力処理(たとえば、出力ポート出力処理)と、
メイン処理において、前記出力データを設定するメイン側設定処理(たとえば、LEDデータAの設定処理、LEDデータBの設定処理)と、
割込処理において、前記出力データを設定する割込側設定処理(たとえば、LEDデータCの設定処理、LEDデータDの設定処理)とを実行可能であり、
前記メイン側設定処理は、前記出力データの設定をクリアした後、出力条件(たとえば、LEDデータAの有効化条件、LEDデータBの有効化条件)が成立しているときに前記出力データを設定する処理であり(たとえば、図24に示すように、メイン側設定処理は、LEDデータA,BをOFF設定した後、LEDデータAの有効化条件が成立条件が成立しているときにLEDデータAをON設定し、LEDデータBの有効化条件が成立条件が成立しているときにLEDデータBをON設定する処理である)、
前記割込側設定処理は、前記出力データを設定した後、出力条件(たとえば、信号データCの有効化条件、信号データDの有効化条件)が成立していないときに前記出力データの設定をクリアする処理である(たとえば、図24に示すように、割込側設定処理は、信号データC,DをON設定した後、信号データCの有効化条件が成立していないときに信号データCの設定をOFF設定し、信号データDの有効化条件が成立していないときに信号データDの設定をOFF設定する処理である)。
たとえば、本実施の形態においては、図24に示すように、メイン側設定処理は、LEDデータA,Bの設定をOFF設定した後、LEDデータAの有効化条件が成立条件が成立しているときにLEDデータAをON設定し、LEDデータBの有効化条件が成立条件が成立しているときにLEDデータBをON設定する処理である。また、割込側設定処理は、信号データC,DをON設定した後、信号データCの有効化条件が成立していないときに信号データCの設定をOFF設定し、信号データDの有効化条件が成立していないときに信号データDの設定をOFF設定する処理である。このように、先に出力データをON設定またはOFF設定し、成立条件の成立により必要に応じて当該出力データを更新することで、データ処理を簡素化することができる。また、データをON設定する命令よりもデータをOFF設定する命令の方が充実しているため、割込側設定処理においては、先に出力データをON設定し成立条件の成立により当該出力データをOFF設定することでプログラムをより簡素化することができる。一方で、メイン処理でこのような処理を行うと、割込処理が実行されることによって、誤った信号が出力されてしまう虞がある。このため、メイン側設定処理においては、先に出力データをOFF設定し成立条件の成立により当該出力データをON設定することで、誤った信号が出力されることを防止することができる。
(4-2) 前記処理手段は、
前記出力処理において、前記割込側設定処理により設定された出力データに基づき複数の信号(たとえば、信号C、信号D)を出力し(たとえば、図24に示すように、割込側設定処理によりON設定された信号データC,信号データDに基づき信号C,信号Dを出力する)、
前記割込側設定処理において、前記複数の信号に対応する前記出力データをまとめて設定する(たとえば、図24に示すように、割込側設定処理において、信号C,信号Dに対応する信号データC,信号データDをまとめてON設定する)。
たとえば、本実施の形態においては、図24に示すように、割込側設定処理によりON設定された信号データC,信号データDに基づき信号C,信号Dを出力し、割込側設定処理において、信号C,信号Dに対応する信号データC,信号データDをまとめてON設定する。このようにすることで、信号データC,信号データDのON設定が容易になる。
(4-3) 前記処理手段は、
前記出力処理において、前記メイン側設定処理により設定された出力データに基づき複数の信号(たとえば、信号A、信号B)を出力し(たとえば、図24に示すように、メイン側設定処理によりON設定されたLEDデータA,LEDデータBに基づきLEDA,LEDBを点灯または消灯させる)、
前記メイン側設定処理において、前記複数の信号に対応する前記出力データをまとめてクリアする(たとえば、図24に示すように、メイン側設定処理において、LEDA,LEDBに対応するLEDデータA,LEDデータBをまとめてOFF設定する)。
たとえば、本実施の形態においては、図24に示すように、メイン側設定処理により設定されたLEDデータA,LEDデータBに基づきLEDA,LEDBを点灯または消灯させ、メイン側設定処理において、LEDA,LEDBに対応するLEDデータA,LEDデータBをまとめてOFF設定する。このようにすることで、LEDデータA,LEDデータBのOFF設定が容易になる。
(4-4) 前記処理手段は、
前記出力処理において出力される前記複数の信号のそれぞれに対して、出力条件が成立したか否かを判定し(たとえば、図24に示すように、信号データC,信号データDのそれぞれに対して、無効化条件が成立したか否かを判定する)、
一の出力条件に基づいて出力データを更新した後、当該一の出力条件の次の出力条件に基づいて前記出力データを更新する(たとえば、図24に示すように、信号データCの無効化条件が成立したときは信号データCをOFF設定し、次の成立条件である信号データDの無効化条件が成立したときは信号データDをOFF設定する)。
たとえば、本実施の形態においては、図24に示すように、信号データC,信号データDのそれぞれに対して無効化条件が成立したか否かを判定し、信号データCの無効化条件が成立したときは信号データCをOFF設定し、次の成立条件である信号データDの無効化条件が成立したときは信号データDをOFF設定する。このようにすることで、無効化条件の判定結果をその都度保持する必要がない。
(4-5) 前記処理手段は、前記メイン側設定処理中において、割込処理の実行を禁止する(たとえば、図24に示すように、メイン側設定処理中において割込禁止設定を行う)。
たとえば、本実施の形態においては、図24に示すように、メイン側設定処理中において割込禁止設定を行うため、意図しない信号が出力されることを防止することができる。
(5-1) 前記記憶手段には、前記処理手段における機能設定のための記憶領域(たとえば、内蔵レジスタ領域)として、開始アドレスから終了アドレスまでの領域が設けられており(たとえば、図8に示すように、RAM41cには、メインCPU41aにおける機能設定のための内蔵レジスタ領域として、FE00HからFEACHまでの領域が設けられており)、
前記処理手段は、制御開始にあたって前記機能設定のための記憶領域(たとえば、第1~第7領域)のうちの複数の領域(たとえば、第2,3,4,6領域)に設定値を設定する際、当該複数の領域のうちの所定領域(たとえば、第2領域)に対応する基準アドレス(たとえば、FE01H)を特定可能なデータを読み出し、当該基準アドレスに基づき前記所定領域に設定値(たとえば、データA)を設定した後、当該基準アドレスに対して差分値(たとえば、1)を用いて算出したアドレスに基づき特定領域(たとえば、第3領域)に設定値(たとえば、データB)を設定する(たとえば、図8に示すように、メインCPU41aは、制御開始にあたって内蔵レジスタ領域のうちの第2,3,4,6領域に設定値を設定する際、第2,3,4,6領域のうちの第2領域に対応する基準アドレス(FE01H)を特定可能なデータを読み出し、基準アドレスに基づき第2領域にデータAを設定した後、当該基準アドレスに対して差分値(1)を用いて算出したアドレス(FE02H)に基づき第3領域にデータBを設定する)。
たとえば、本実施の形態においては、図8に示すように、RAM41cには、メインCPU41aにおける機能設定のための内蔵レジスタ領域として、FE00HからFEACHまでの領域が設けられており、メインCPU41aは、制御開始にあたって内蔵レジスタ領域のうちの第2,3,4,6領域に設定値を設定する際、第2,3,4,6領域のうちの第1領域に対応する基準アドレス(FE01H)を特定可能なデータを読み出し、基準アドレスに基づき第2領域にデータAを設定した後、当該基準アドレスに対して差分値(1)を用いて算出したアドレス(FE02H)に基づき第3領域にデータBを設定する。このように、差分値を用いて算出したアドレスに基づき第3領域にデータを設定することで、アドレスを直接指定して第3領域に設定値を設定するよりもプログラムの容量を節減することができる。
(5-2) 前記所定領域は、前記複数の領域のうちの最も小さいアドレス(たとえば、FE01H)に対応する領域である(たとえば、図8に示すように、第2領域は、第2,3,4,6領域のうちの最も小さいアドレス(FE01H)に対応する領域である)。
たとえば、本実施の形態においては、図8に示すように、第2領域は、第2,3,4,6領域のうちの最も小さいアドレス(FE01H)に対応する領域であるため、差分値を用いて算出したアドレスに基づき領域にデータを設定する際に、効率よくデータを設定することができる。
(5-3) 前記処理手段は、設定値を設定する際、所定のアドレス(たとえば、FE02H)に対応する領域(たとえば、第3領域)および当該所定のアドレスの次のアドレス(たとえば、FE03H)に対応する領域(たとえば、第4領域)のそれぞれに設定値を設定するように2バイトデータ(たとえば、12+FFH×56)を設定する(たとえば、図8に示すように、メインCPU41aは、設定値を設定する際、所定のアドレス(FE02H)に対応する第3領域および所定のアドレスの次のアドレス(FE03H)に対応する第4領域のそれぞれに設定値を設定するように2バイトデータ(12+FFH×56)を設定する)。
たとえば、本実施の形態においては、図8に示すように、メインCPU41aは、設定値を設定する際、所定のアドレス(FE02H)に対応する第3領域および所定のアドレスの次のアドレス(FE03H)に対応する第4領域のそれぞれに設定値を設定するように2バイトデータ(12+FFH×56)を設定する。このようにすることで、複数の領域に対してまとめてデータを設定することができる。
(5-4) 前記処理手段は、設定値を設定すべき前記複数の領域の全てに設定値を設定したことで、遊技の制御を開始する(たとえば、図7,8に示すように、メインCPU41aは、設定値を設定すべき第1領域~第5領域の全てに設定値を設定したことで、遊技の制御を開始する)。
たとえば、本実施の形態においては、図7,8に示すように、メインCPU41aは、設定値を設定すべき第2,3,4,6領域の全てに設定値を設定したことで、遊技の制御を開始する。このようにすることで、設定すべき設定値の設定が完了していない状況で遊技の制御が開始されない。
(5-5) 前記処理手段は、設定値を設定すべき前記複数の領域の全てに設定値が設定されるまで、割込処理の実行を禁止する(たとえば、図7,8に示すように、メインCPU41aは、設定値を設定すべき第2,3,4,6領域の全てに設定値が設定されるまで、割込処理の実行を禁止する)。
たとえば、本実施の形態においては、図7,8に示すように、メインCPU41aは、設定値を設定すべき第2,3,4,6領域の全てに設定値が設定されるまで、割込処理の実行を禁止する。このようにすることで、設定値の設定中に割込処理の実行により意図しない制御が行なわれない。
(5-6) 前記処理手段は、前記複数の領域に設定値を設定する以前に、ポート(たとえば、出力ポート)を初期化する(たとえば、図7,8に示すように、メインCPU41aは、第2,3,4,6領域に設定値を設定する以前に、出力ポートを初期化する)。
たとえば、本実施の形態においては、図7,8に示すように、メインCPU41aは、第2,3,4,6領域に設定値を設定する以前に、出力ポートを初期化する。このようにすることで、出力ポートから意図しない信号が出力されることを防止することができる。
[変形例]
以上、本発明における主な実施の形態を説明してきたが、本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形例について説明する。
[内蔵レジスタ設定処理について]
本実施の形態においては、図8に示したように、第1領域~第7領域までの7つの領域を有し、設定が必要な複数の領域として、第2,3,4,6領域の各領域において設定値を設定した。しかし、これに限らず、設定が必要な領域は、全領域のうちのどのような領域であってもよく、全ての領域に対して設定するようにしてもよい。
[リール停止制御処理について]
本実施の形態においては、図17~19に示したように、左リールの停止が第1停止であり、中リールの停止が第2停止である例について説明したが、これに限らず、いずれのリールが第1停止であってもよく、いずれのリールが第2停止であってもよい。また、第1停止および第2停止の組合せに限らず、第2停止および第3停止の組合せであってもよい。