本発明が適用されたスロットマシンの実施例1を図面を用いて説明すると、本実施例のスロットマシン1は、前面が開口する筐体(図示略)と、この筺体の側端に回動自在に枢支された前面扉と、から構成されている。
本実施例のスロットマシン1の筐体内部には、外周に複数種の図柄が配列されたリール2L、2C、2R(以下、左リール、中リール、右リールともいう)が水平方向に並設されており、図1に示すように、これらリール2L、2C、2Rに配列された図柄のうち連続する3つの図柄が前面扉に設けられた透視窓3から見えるように配置されている。
リール2L、2C、2Rの外周部には、図2に示すように、それぞれ「赤7(図中黒色の7)」、「白7」、「BAR」、「JAC」、「スイカ」、「チェリー」、「ベル」といった互いに識別可能な複数種類の図柄が所定の順序で、それぞれ21個ずつ描かれている。リール2L、2C、2Rの外周部に描かれた図柄は、透視窓3において各々上中下三段に表示される。
各リール2L、2C、2Rは、各々対応して設けられリールモータ32L、32C、32R(図3参照)によって回転させることで、各リール2L、2C、2Rの図柄が透視窓3に連続的に変化しつつ表示されるとともに、各リール2L、2C、2Rの回転を停止させることで、透視窓3に3つの連続する図柄が表示結果として導出表示されるようになっている。
また、前面扉には、メダルを投入可能なメダル投入部4、メダルが払い出されるメダル払出口9、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いてメダル1枚分の賭数を設定する際に操作される1枚BETスイッチ5、クレジットを用いて、その範囲内において遊技状態に応じて定められた規定数の賭数(本実施例では後述の通常遊技状態及び小役ゲームにおいては3、後述のレギュラーボーナスにおいては1)を設定する際に操作されるMAXBETスイッチ6、クレジットとして記憶されているメダル及び賭数の設定に用いたメダルを精算する(クレジット及び賭数の設定に用いた分のメダルを返却させる)際に操作される精算スイッチ10、ゲームを開始する際に操作されるスタートスイッチ7、リール2L、2C、2Rの回転を各々停止する際に操作されるストップスイッチ8L、8C、8Rが設けられている。
また、前面扉には、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器11、後述するビッグボーナス中のメダルの獲得枚数やエラー発生時にその内容を示すエラーコード等が表示される遊技補助表示器12、入賞の発生により払い出されたメダル枚数が表示されるペイアウト表示器13が設けられている。
また、前面扉には、賭数が1設定されている旨を点灯により報知する1BETLED14、賭数が2設定されている旨を点灯により報知する2BETLED15、賭数が3設定されている旨を点灯により報知する3BETLED16、メダルの投入が可能な状態を点灯により報知する投入要求LED17、スタートスイッチ7の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効LED18、ウェイト(前回のゲーム開始から一定期間経過していないためにリールの回転開始を待機している状態)中である旨を点灯により報知するウェイト中LED19、後述するリプレイゲーム中である旨を点灯により報知するリプレイ中LED20が設けられている。
また、MAXBETスイッチ6の内部には、1BETスイッチ5及びMAXBETスイッチ6の操作による賭数の設定操作が有効である旨を点灯により報知するBETスイッチ有効LED21(図3参照)が設けられており、ストップスイッチ8L、8C、8Rの内部には、該当するストップスイッチ8L、8C、8Rによるリールの停止操作が有効である旨を点灯により報知する左、中、右停止有効LED22L、22C、22R(図3参照)がそれぞれ設けられている。
また、前面扉の内側には、所定のキー操作により後述するRAM異常エラーを除くエラー状態及び後述する打止状態を解除するためのリセット操作を検出するリセットスイッチ23、後述する設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器24、メダル投入部4から投入されたメダルの流路を、筐体内部に設けられた後述のホッパータンク(図示略)側またはメダル払出口9側のいずれか一方に選択的に切り替えるための流路切替ソレノイド30、メダル投入部4から投入され、ホッパータンク側に流下したメダルを検出する投入メダルセンサ31が設けられている。
筐体内部には、前述したリール2L、2C、2R、リールモータ32L、32C、32R、各リール2L、2C、2Rのリール基準位置をそれぞれ検出可能なリールセンサ33からなるリールユニット(図示略)、メダル投入部4から投入されたメダルを貯留するホッパータンク(図示略)、ホッパータンクに貯留されたメダルをメダル払出口9より払い出すためのホッパーモータ34、ホッパーモータ34の駆動により払い出されたメダルを検出する払出センサ35、電源ボックス(図示略)が設けられている。
電源ボックスの前面には、後述のビッグボーナス終了時に打止状態(リセット操作がなされるまでゲームの進行が規制される状態)に制御する打止機能の有効/無効を選択するための打止スイッチ36、起動時に設定変更モードに切り替えるための設定キースイッチ37、通常時においてはRAM異常エラーを除くエラー状態や打止状態を解除するためのリセットスイッチとして機能し、設定変更モードにおいては後述する内部抽選の当選確率(出玉率)の設定値を変更するための設定スイッチとして機能するリセット/設定スイッチ38、電源をON/OFFする際に操作される電源スイッチ39が設けられている。
本実施例のスロットマシン1においてゲームを行う場合には、まず、メダルをメダル投入部4から投入するか、あるいはクレジットを使用して賭数を設定する。クレジットを使用するには1枚BETスイッチ5、またはMAXBETスイッチ6を操作すれば良い。遊技状態に応じて定められた規定数の賭数が設定されると、入賞ラインL1〜L5(図1参照)が有効となり、スタートスイッチ7の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。尚、本実施例では、規定数の賭数として後述する通常遊技状態及びビッグボーナス中の小役ゲームにおいては3枚が定められており、後述するレギュラーボーナス中においては、1枚が定められている。尚、遊技状態に対応する規定数を超えてメダルが投入された場合には、その分はクレジットに加算される。
ゲームが開始可能な状態でスタートスイッチ7を操作すると、各リール2L、2C、2Rが回転し、各リール2L、2C、2Rの図柄が連続的に変動する。この状態でいずれかのストップスイッチ8L、8C、8Rを操作すると、対応するリール2L、2C、2Rの回転が停止し、透視窓3に表示結果が導出表示される。
そして全てのリール2L、2C、2Rが停止されることで1ゲームが終了し、有効化されたいずれかの入賞ラインL1〜L5上に予め定められた図柄の組み合わせが各リール2L、2C、2Rの表示結果として停止した場合には入賞が発生し、その入賞に応じて定められた枚数のメダルが遊技者に対して付与され、クレジットに加算される。また、クレジットが上限数(本実施例では50)に達した場合には、メダルが直接メダル払出口9(図1参照)から払い出されるようになっている。また、有効化されたいずれかの入賞ラインL1〜L5上に、遊技状態の移行を伴う図柄の組み合わせが各リール2L、2C、2Rの表示結果として停止した場合には図柄の組み合わせに応じた遊技状態に移行するようになっている。
図3は、スロットマシン1の構成を示すブロック図である。スロットマシン1には、図3に示すように、遊技制御基板40、演出制御基板90、電源基板100が設けられており、遊技制御基板40によって遊技の進行が制御され、演出制御基板90によって遊技状態に応じた演出が制御され、電源基板100によってスロットマシン1を構成する電気部品の駆動電源が生成され、各部に供給される。
電源基板100には、外部からAC100Vの電源が供給されるとともに、このAC100Vの電源からスロットマシン1を構成する電気部品の駆動に必要な直流電圧が生成され、遊技制御基板40及び遊技制御基板40を介して接続された演出制御基板90に供給されるようになっている。また、電源基板100には、前述したホッパーモータ34、払出センサ35、打止スイッチ36、設定キースイッチ37、リセット/設定スイッチ38、電源スイッチ39が接続されている。
遊技制御基板40には、前述した1枚BETスイッチ5、MAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8R、精算スイッチ10、リセットスイッチ23、投入メダルセンサ31、リールセンサ33が接続されているとともに、電源基板100を介して前述した払出センサ35、打止スイッチ36、設定キースイッチ37、リセット/設定スイッチ38が接続されており、これら接続されたスイッチ類の検出信号が入力されるようになっている。
また、遊技制御基板40には、前述したクレジット表示器11、遊技補助表示器12、ペイアウト表示器13、1〜3BETLED14〜16、投入要求LED17、スタート有効LED18、ウェイト中LED19、リプレイ中LED10、BETスイッチ有効LED21、左、中、右停止有効LED22L、22C、22R、設定値表示器24、流路切替ソレノイド30、リールモータ32L、32C、32Rが接続されているとともに、電源基板100を介して前述したホッパーモータ34が接続されており、これら電気部品は、遊技制御基板40に搭載された後述のメイン制御部41の制御に基づいて駆動されるようになっている。
遊技制御基板40には、CPU41a、ROM41b、RAM41c、I/Oポート41dを備えたマイクロコンピュータからなり、遊技の制御を行うメイン制御部41、所定範囲(本実施例では0〜16383)の乱数を発生させる乱数発生回路42、乱数発生回路から乱数を取得するサンプリング回路43、遊技制御基板40に直接または電源基板100を介して接続されたスイッチ類から入力された検出信号を検出するスイッチ検出回路44、リールモータ32L、32C、32Rの駆動制御を行うモータ駆動回路45、流路切替ソレノイド30の駆動制御を行うソレノイド駆動回路46、遊技制御基板40に接続された各種表示器やLEDの駆動制御を行うLED駆動回路47、スロットマシン1に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をメイン制御部41に対して出力する電断検出回路48、電源投入時またはCPU41aからの初期化命令が入力されないときにCPU41aにリセット信号を与えるリセット回路49、その他各種デバイス、回路が搭載されている。
CPU41aには、処理を実行するのに必要なデータの読み出し及び書き込みが行われる複数のレジスタ(記憶領域)が設けられている。詳しくは、主に演算用データが格納されるA、Fレジスタ、汎用データが格納されるB、C、D、E、H、Lレジスタ、実行中のプログラムの位置を示すデータが格納されるPCレジスタ、スタックポインタ(後述するスタック領域の現在の位置を示すアドレス)が格納されるSPレジスタ、後述するリフレッシュ動作を行うRAM41cのメモリブロックを示すデータが格納されるRレジスタ、RAM41cの格納領域を参照する際の基準となる位置を示すデータが格納されるIX、IYレジスタ、割込発生時に参照する割込テーブルの位置を示すデータが格納されるIレジスタが設けられている。
CPU41aは、計時機能、タイマ割込などの割込機能(割込禁止機能を含む)を備え、ROM41bに記憶されたプログラム(後述)を実行して、遊技の進行に関する処理を行うととともに、遊技制御基板40に搭載された制御回路の各部を直接的または間接的に制御する。ROM41bは、CPU41aが実行するプログラムや各種テーブル等の固定的なデータを記憶する。RAM41cは、CPU41aがプログラムを実行する際のワーク領域等として使用される。I/Oポート41dは、メイン制御部41が備える信号入出力端子を介して接続された各回路との間で制御信号を入出力する。
メイン制御部41は、信号入力端子DATAを備えており、遊技制御基板40に接続された各種スイッチ類の検出状態がこれら信号入力端子DATAを介して入力ポートに入力される。これら信号入力端子DATAの入力状態は、CPU41aにより監視されており、CPU41aは、信号入力端子DATAの入力状態、すなわち各種スイッチ類の検出状態に応じて段階的に移行する基本処理を実行する。
また、CPU41aは、前述のように割込機能を備えており、割込の発生により基本処理に割り込んで割込処理を実行できるようになっている。本実施例では、割込1〜4の4種類の割込を実行可能であり、各割込毎にカウンタモード(信号入力端子DATAとは別個に設けられたトリガー端子CLK/TRGからの信号入力に応じて外部割込を発生させる割込モード)とタイマモード(CPU41aのクロック入力数に応じて内部割込を発生させる割込モード)のいずれかを選択して設定できるようになっている。
本実施例では、割込1〜4のうち、割込2がカウンタモードに設定され、割込3がタイマモードに設定され、割込1、4は未使用とされている。トリガー端子CLK/TRGは、前述した電断検出回路48と接続されており、CPU41aは電断検出回路48から出力された電圧低下信号の入力に応じて割込2を発生させて後述する電断割込処理を実行する。また、CPU41aは、クロック入力数が一定数に到達する毎、すなわち一定時間間隔毎に割込3を発生させて後述するタイマ割込処理を実行する。また、割込1、4は、未使用に設定されているが、ノイズ等によって割込1、4が発生することがあり得る。このため、CPU41aは、割込1、4が発生した場合に、もとの処理に即時復帰させる未使用割込処理を実行するようになっている。
また、CPU41aは、割込1〜4のいずれかの割込の発生に基づく割込処理の実行中に他の割込を禁止するように設定されているとともに、複数の割込が同時に発生した場合には、割込2、3、1、4の順番で優先して実行する割込が設定されている。すなわち割込2とその他の割込が同時に発生した場合には、割込2を優先して実行し、割込3と割込1または4が同時に発生した場合には、割込3を優先して実行するようになっている。
また、CPU41aは、割込1〜4のいずれかの割込の発生に基づく割込処理の開始時に、レジスタに格納されている使用中のデータをRAM41cに設けられた後述のスタック領域に一時的に退避させるとともに、当該割込処理の終了時にスタック領域に退避させたデータをもとのレジスタに復帰させるようになっている。
RAM41cには、DRAM(Dynamic RAM)が使用されており、記憶しているデータ内容を維持するためのリフレッシュ動作が必要となる。CPU41aには、このリフレッシュ動作を行うための前述したR(リフレッシュ)レジスタが設けられている。Rレジスタは、8ビットからなり、そのうちの下位7ビットが、CPU41aがROM41bから命令をフェッチする度に自動的にインクリメントされるもので、その値の更新は、1命令の実行時間毎に行われる。
また、メイン制御部41には、停電時においてもバックアップ電源が供給されており、バックアップ電源が供給されている間は、CPU41aによりリフレッシュ動作が行われてRAM41cに記憶されているデータが保持されるようになっている。
乱数発生回路42は、後述するように所定数のパルスを発生する度にカウントアップして値を更新するカウンタによって構成され、サンプリング回路43は、乱数発生回路42がカウントしている数値を取得する。乱数発生回路42は、乱数の種類毎にカウントする数値の範囲が定められており、本実施例では、その範囲として0〜16383が定められている。CPU41aは、その処理に応じてサンプリング回路43に指示を送ることで、乱数発生回路42が示している数値を乱数として取得する(以下、この機能をハードウェア乱数機能という)。後述する内部抽選用の乱数は、ハードウェア乱数機能により抽出した乱数をそのまま使用するのではなく、ソフトウェアにより加工して使用するが、その詳細については詳しく説明する。また、CPU41aは、前述のタイマ割込処理により、RAM41cの特定アドレスの数値を更新し、こうして更新された数値を乱数として取得する機能も有する(以下、この機能をソフトウェア乱数機能という)。
CPU41aは、I/Oポート41dを介して演出制御基板90に、各種のコマンドを送信する。遊技制御基板40から演出制御基板90へ送信されるコマンドは一方向のみで送られ、演出制御基板90から遊技制御基板40へ向けてコマンドが送られることはない。遊技制御基板40から演出制御基板90へ送信されるコマンドの伝送ラインは、ストローブ(INT)信号ライン、データ伝送ライン、グラウンドラインから構成されているとともに、演出中継基板80を介して接続されており、遊技制御基板40と演出制御基板90とが直接接続されない構成とされている。
演出制御基板90には、スロットマシン1の前面扉に配置された液晶表示器51(図1参照)、演出効果LED52、スピーカ53、54、リールLED55等の電気部品が接続されており、これら電気部品は、演出制御基板90に搭載された後述のサブ制御部91による制御に基づいて駆動されるようになっている。
演出制御基板90には、メイン制御部41と同様にCPU91a、ROM91b、RAM91c、I/Oポート91dを備えたマイクロコンピュータにて構成され、演出の制御を行うサブ制御部91、演出制御基板90に接続された液晶表示器51の駆動制御を行う液晶駆動回路92、演出効果LED52、リールLED55の駆動制御を行うランプ駆動回路93、スピーカ53、54からの音声出力制御を行う音声出力回路94、電源投入時またはCPU91aからの初期化命令が入力されないときにCPU91aにリセット信号を与えるリセット回路95、その他の回路等、が搭載されており、CPU91aは、遊技制御基板40から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板90に搭載された制御回路の各部を直接的または間接的に制御する。
CPU91aは、メイン制御部41のCPU41aと同様に、タイマ割込などの割込機能(割込禁止機能を含む)を備える。サブ制御部91の割込端子(図示略)は、コマンド伝送ラインのうち、メイン制御部41がコマンドを送信する際に出力するストローブ(INT)信号線に接続されており、CPU91aは、ストローブ信号の入力に基づいて割込を発生させて、メイン制御部41からのコマンドを取得し、バッファに格納するコマンド受信割込処理を実行する。また、CPU91aは、クロック入力数が一定数に到達する毎、すなわち一定時間間隔毎に割込を発生させてタイマ割込処理(サブ)を実行する。また、CPU91aにおいても未使用の割込が発生した場合には、もとの処理に即時復帰させる未使用割込処理を実行するようになっている。
また、CPU91aは、CPU41aとは異なり、ストローブ信号(INT)の入力に基づいて割込が発生した場合には、他の割込に基づく割込処理の実行中であっても、当該処理に割り込んでコマンド受信割込処理を実行し、他の割込が同時に発生してもコマンド受信割込処理を最優先で実行するようになっている。
また、サブ制御部91にも、停電時においてバックアップ電源が供給されており、バックアップ電源が供給されている間は、CPU91aによりリフレッシュ動作が行われてRAM91cに記憶されているデータが保持されるようになっている。
本実施例のスロットマシン1は、設定値に応じてメダルの払出率が変わるものであり、後述する内部抽選の当選確率は、設定値に応じて定まるものとなる。以下、設定値の変更操作について説明する。
設定値を変更するためには、設定キースイッチ37をON状態としてからスロットマシン1の電源をONする必要がある。設定キースイッチ37をON状態として電源をONすると、設定値表示器24に設定値の初期値として1が表示され、リセット/設定スイッチ38の操作による設定値の変更操作が可能な設定変更モードに移行する。設定変更モードにおいて、リセット/設定スイッチ38が操作されると、設定値表示器24に表示された設定値が1ずつ更新されていく(設定6から更に操作されたときは、設定1に戻る)。そして、スタートスイッチ7が操作されると設定値が確定し、確定した設定値がメイン制御部41のRAM41cに格納される。そして、設定キースイッチ37がOFFされると、遊技の進行が可能な状態に移行する。
本実施例のスロットマシン1においては、メイン制御部41のCPU41aが電圧低下信号を検出した際に、電断割込処理を実行する。電断割込処理では、レジスタを後述するRAM41cのスタックに退避し、メイン制御部41のRAM41cにいずれかのビットが1となる破壊診断用データ(本実施例では、5AH)、すなわち0以外の特定のデータを格納するとともに、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが0となるようにRAMパリティ調整用データを計算し、RAM41cに格納する処理を行うようになっている。尚、RAMパリティとはRAM41cの該当する領域(本実施例では、全ての領域)の各ビットに格納されている値の排他的論理和として算出される値である。このため、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが0であれば、RAMパリティ調整用データは0となり、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが1であれば、RAMパリティ調整用データは1となる。
そして、CPU41aは、その起動時においてRAM41cの全ての領域に格納されたデータに基づいてRAMパリティを計算するとともに、破壊診断用データの値を確認し、RAMパリティが0であり、かつ破壊診断用データの値も正しいことを条件に、RAM41cに記憶されているデータに基づいてCPU41aの処理状態を電断前の状態に復帰させるが、RAMパリティが0でない場合(1の場合)や破壊診断用データの値が正しくない場合には、RAM異常と判定し、RAM異常エラーコードをレジスタにセットしてRAM異常エラー状態に制御し、遊技の進行を不能化させるようになっている。尚、RAM異常エラー状態は、他のエラー状態と異なり、リセットスイッチ23やリセット/設定スイッチ38を操作しても解除されないようになっており、前述した設定変更モードにおいて新たな設定値が設定されるまで解除されることがない。
また、CPU41aは、後述する内部抽選処理において内部抽選に用いる設定値が適正な値であるか否かを判定する設定値判定処理を実行する。
設定値判定処理では、内部抽選に用いる設定値が適正な範囲の値(1〜6)か否かを判定する設定値判定処理1、内部抽選に用いる設定値と、設定変更時に設定された設定値と、が一致するか否かを判定する設定値判定処理2、今回のゲームの内部抽選に用いる設定値と、前回のゲームの内部抽選に用いた設定値と、が一致するか否かを判定する設定値判定処理3、を1ゲーム毎にそれぞれ実行する。
そして、設定値判定処理1において、内部抽選に用いる設定値が適正な範囲の値でない場合、または設定値判定処理2において、内部抽選に用いる設定値と、設定変更時に設定された設定値と、が一致しない場合、または設定値判定処理3において、今回のゲームの内部抽選に用いる設定値と、前回のゲームの内部抽選に用いた設定値と、が一致しない場合にも、RAM異常と判定し、RAM異常エラーコードをセットしてRAM異常エラー状態に制御し、遊技の進行を不能化させるようになっている。尚、前述のようにRAM異常エラー状態は、他のエラー状態と異なり、リセットスイッチ23やリセット/設定スイッチ38を操作しても解除されないようになっており、前述した設定変更モードにおいて新たな設定値が設定されるまで解除されることがない。
本実施例のスロットマシン1は、前述のように遊技状態に応じて設定可能な賭数の規定数が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。本実施例では、後に説明するが、遊技状態として、レギュラーボーナス、ビッグボーナス中の小役ゲーム、通常遊技状態があり、このうちレギュラーボーナスに対応する賭数の規定数として1が定められており、小役ゲーム及び通常遊技状態に対応する賭数の規定数として3が定められている。このため、遊技状態がレギュラーボーナスにあるときには、賭数として1が設定されるとゲームを開始させることが可能となり、遊技状態が小役ゲームまたは通常遊技状態にあるときには、賭数として3が設定されるとゲームを開始させることが可能となる。尚、本実施例では、遊技状態に応じた規定数の賭数が設定された時点で、全ての入賞ラインL1〜L5が有効化されるようになっており、遊技状態に応じた規定数が1であれば、賭数として1が設定された時点で全ての入賞ラインL1〜L5が有効化され、遊技状態に応じた規定数が3であれば、賭数として3が設定された時点で全ての入賞ラインL1〜L5が有効化されることとなる。
本実施例のスロットマシン1は、全てのリール2L、2C、2Rが停止した際に、有効化された入賞ライン(本実施例の場合、常に全ての入賞ラインが有効化されるため、以下では、有効化された入賞ラインを単に入賞ラインと呼ぶ)上に役と呼ばれる図柄の組み合わせが揃うと入賞となる。入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役と、遊技状態の移行を伴う特別役と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、後述する内部抽選に当選して、当該役の当選フラグが後述する内部当選フラグ格納ワークに設定されている必要がある。
尚、これら各役の当選フラグのうち、小役及び再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされるが、特別役の当選フラグは、当該フラグにより許容された役が揃うまで有効とされる。すなわち特別役の当選フラグが一度当選すると、例え、当該フラグにより許容された特別役を揃えることができなかった場合にも、その当選フラグは、次のゲームへ持ち越されることとなる。もっとも、後に説明するように特別役のうちJACINの組み合わせは、当選したゲームに必ず揃うこととなるので、次のゲームへ持ち越されることはなく、それ以外の特別役の当選フラグのみ、当該フラグにより許容される役が揃わなかった場合に、次のゲームへ持ち越されることとなる。
図4(a)は、遊技状態に応じて定められた役を示す図である。尚、以下では、10進法表記で説明するものと、16進法表記で説明するものと、があるが、単に数値を示すもの(例えば、「10」)は10進法表記を示し、数値の後ろにHを示すもの(例えば、「10H」)は16進法表記を示すものとする。
このスロットマシン1における役としては、特別役としてビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、レギュラーボーナス(2)、JACINが、小役としてJAC、チェリー、スイカ、ベルが、再遊技役としてリプレイが、それぞれ定められている。
また、これら各役に対して、役番号及び役コードが定められている。役番号は、特別役と一般役とにそれぞれ割り当てられた番号であり、抽選を行う際に役を特定するための番号である。特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、レギュラーボーナス(2)、JACINの役番号として、それぞれ01H、02H、03H、04H、05Hが割り当てられており、一般役であるJAC、チェリー、スイカ、ベル、リプレイの役番号として、それぞれ01H、02H、03H、04H、05Hが割り当てられている。役コードは、特別役及び一般役に関わらず割り当てられた番号であり、判定値数を取得する際に役を特定するための番号である。ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、レギュラーボーナス(2)、JACIN、JAC、チェリー、スイカ、ベル、リプレイの役コードとして、それぞれ01H、02H、03H、04H、05H、11H、12H、13H、14H、15Hが割り当てられている。
レギュラーボーナスの遊技状態では、小役であるJAC、チェリー、スイカ及びベルが、入賞となる役として定められており、レギュラーボーナスにおける内部抽選で抽選の対象とされる。ビッグボーナスの後述する小役ゲームでは、小役であるチェリー、スイカ及びベル、特別役であるレギュラーボーナス(2)及びJACINが入賞となる役として定められており、小役ゲームにおける内部抽選で抽選の対象とされる。通常遊技状態では、小役であるチェリー、スイカ及びベル、再遊技役であるリプレイ、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)が入賞となる役として定められており、通常遊技状態における内部抽選で抽選の対象とされる。
尚、本実施例では、レギュラーボーナスの遊技状態において、チェリー、スイカ及びベルに加えてJACが入賞となる小役として定められているが、レギュラーボーナスの遊技状態においても、小役ゲームや通常遊技状態と同様に、チェリー、スイカ及びベルのみを入賞となる小役として定めるようにしても良い。
ビッグボーナス(1)は、通常遊技状態において入賞ラインのいずれかに「赤7−赤7−赤7」の組み合わせが揃ったときに入賞となり、ビッグボーナス(2)は、通常遊技状態において入賞ラインのいずれかに「白7−白7−白7」の組み合わせが揃ったときに入賞となる。ビッグボーナス(1)またはビッグボーナス(2)に入賞すると、遊技状態が通常遊技状態からビッグボーナスに移行する。ビッグボーナスにおいては、小役ゲームと称されるゲームを行うことができる。遊技状態がビッグボーナスにある間は、ビッグボーナス中フラグがRAM41cに設定される。ビッグボーナスは、当該ビッグボーナス中において遊技者に払い出したメダルの総数が規定枚数(本実施例では466枚)以上となったときに終了する。
尚、ビッグボーナス(1)及びビッグボーナス(2)を区別する必要がない場合には、ビッグボーナス(1)及びビッグボーナス(2)をまとめて、単に「ビッグボーナス」と呼ぶ場合がある。
レギュラーボーナス(1)は、通常遊技状態において入賞ラインのいずれかに「BAR−BAR−BAR」の組み合わせが揃ったときに入賞となり。レギュラーボーナス(2)は、小役ゲームにおいて入賞ラインのいずれかに「BAR−BAR−BAR」の組み合わせが揃ったときに入賞となる。レギュラーボーナス(1)またはレギュラーボーナス(2)に入賞すると、遊技状態が通常遊技状態または小役ゲームからレギュラーボーナスに移行する。レギュラーボーナスは、12ゲーム消化したとき、または8ゲーム入賞(役の種類は、いずれでも可)したとき、のいずれか早いほうで終了する。遊技状態がレギュラーボーナスにある間は、レギュラーボーナス中フラグがRAM41cに設定される。特に、小役ゲームにおいてレギュラーボーナス(2)に入賞すると、ビッグボーナス中にレギュラーボーナスが提供されることとなり、ビッグボーナス中フラグに併せてレギュラーボーナス中フラグもRAM41cに設定される。ビッグボーナス中のレギュラーボーナスで当該ビッグボーナス中において遊技者に払い出したメダルの総数が規定枚数以上となったときは、ビッグボーナスとともに当該レギュラーボーナスも終了する。
尚、レギュラーボーナス(1)及びレギュラーボーナス(2)を区別する必要がない場合には、レギュラーボーナス(1)及びレギュラーボーナス(2)をまとめて、単に「レギュラーボーナス」と呼ぶ場合がある。また、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)及びレギュラーボーナス(2)をまとめて、単に「ボーナス」と呼ぶ場合がある。
JACINは、小役ゲームにおいて入賞ラインのいずれかに「スイカ−JAC−JAC」の組み合わせが揃ったときに入賞となるが、小役ゲーム以外の遊技状態では、この組み合わせが揃ったとしてもJACIN入賞とならない。JACINに入賞すると、ビッグボーナス中に前述したレギュラーボーナスが提供されることとなり、ビッグボーナス中フラグに併せてレギュラーボーナス中フラグもメイン制御部41のRAM41cに設定される。ビッグボーナス中のレギュラーボーナスで当該ビッグボーナス中において遊技者に払い出したメダルの総数が規定枚数以上となったときは、ビッグボーナスとともに当該レギュラーボーナスも終了する。
JACは、レギュラーボーナスにおいて入賞ラインに「ベル−JAC−JAC」の組み合わせが揃ったときに入賞となるが、レギュラーボーナス以外の遊技状態では、この組み合わせが揃ったとしてもJAC入賞とならない。チェリーは、いずれの遊技状態においても左のリール2Lについて入賞ラインのいずれかに「チェリー」の図柄が導出されたときに入賞となる。スイカは、いずれの遊技状態においても入賞ラインのいずれかに「スイカ−スイカ−スイカ」の組み合わせが揃ったときに入賞となる。ベルは、いずれの遊技状態においても入賞ラインのいずれかに「ベル−ベル−ベル」の組み合わせが揃ったときに入賞となる。これらの小役が入賞したときのメダルの払い出しについては後述する。
リプレイは、通常遊技状態において入賞ラインのいずれかに「JAC−JAC−JAC」の組み合わせが揃ったときに入賞となるが、レギュラーボーナスやビッグボーナス(小役ゲーム及びレギュラーボーナス)では、この組み合わせが揃ったとしても入賞とならない。リプレイに入賞したときには、メダルの払い出しはないが次のゲームを改めて賭数を設定することなく開始できるので、次のゲームで設定不要となった賭数(レギュラーボーナスではリプレイ入賞しないので必ず3)に対応した3枚のメダルが払い出されるのと実質的には同じこととなる。
以下、内部抽選について説明する。内部抽選は、上記した各役への入賞を許容するか否かを、全てのリール2L、2C、2Rの表示結果が導出表示される以前に(実際には、スタートスイッチ7の検出時)決定するものである。内部抽選では、まず、後述するように内部抽選用の乱数(0〜16383の整数)が取得される。そして、遊技状態に応じて定められた各役について、取得した内部抽選用の乱数と、遊技者が設定した賭数と、設定値に応じて定められた各役の判定値数に応じて行われる。
遊技状態が、通常遊技状態にあるときには、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、チェリー、スイカ、ベル、リプレイが内部抽選の対象役として順に読み出される。もっとも、前回以前のゲームでビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)の当選フラグが設定され、当該フラグに基づく入賞が発生しないで持ち越されているときには、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)は、内部抽選の対象役となることはない。
遊技状態がビッグボーナス中の小役ゲームにあるときには、レギュラーボーナス(2)、JACIN、チェリー、スイカ、ベルが内部抽選の対象役として順に読み出される。もっとも、前回以前のゲームでレギュラーボーナス(2)当選フラグが設定され、当該フラグに基づく入賞が発生しないで持ち越されているときには、レギュラーボーナス(2)及びJACINは、内部抽選の対象役とならない。
遊技状態がレギュラーボーナス(ビッグボーナス中に提供された場合を含む)にあるときには、JAC、チェリー、スイカ、ベルが内部抽選の対象役として順に読み出される。
内部抽選では、内部抽選の対象役について定められた判定値数を、内部抽選用の乱数に順次加算し、加算の結果がオーバーフローしたときに、当該役に当選したものと判定される。各役の判定値数は、メイン制御部41のROM41bに予め格納された役別テーブルに登録されている判定値数の格納アドレスに従って読み出されるものとなる。
図4(b)は、役別テーブルの例を示す図である。判定値数は、その値が256以上のものとなるものもあり、1バイト分では記憶できないので、判定値数毎に2バイト分の記憶領域を用いて登録されるものとなる。
判定値数は、遊技者が設定する賭数(BET)に対応して登録されている。同一の役またはハズレであっても、賭数に応じて当選確率が異なっている場合があるからである。また、それぞれの判定値数は、設定値に関わらずに共通になっているものと、設定値に応じて異なっているものとがある。判定値数が設定値に関わらずに共通である場合には、共通フラグが設定される(値が「1」とされる)。
役別テーブルには、図4(b)に示すように、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、レギュラーボーナス(2)、JACIN、JAC、チェリー、スイカ、ベル、リプレイの判定値数の格納アドレスが登録されている。
ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)は、通常遊技状態でのみ内部抽選の対象となる役であり、通常遊技状態での賭数3に対応する判定値数の格納アドレスがそれぞれ登録されている。これらの役については、共通フラグの値は0となっており、設定値に応じて個別に判定値数の格納アドレスが登録されている。
レギュラーボーナス(2)及びJACINは、ビッグボーナス中の小役ゲームでのみ内部抽選の対象となる役であり、小役ゲームでの賭数3に対応する判定値数の格納アドレスが登録されている。これらの役については、共通フラグの値は1となっており、設定値に関わらずに共通の判定値数の格納アドレスが登録されている。
JACは、レギュラーボーナスでのみ内部抽選の対象となる役であり、レギュラーボーナスでの賭数1に対応する判定値数の格納アドレスが登録されている。この役の共通フラグは1であり、設定値に関わらずに共通の判定値数の格納アドレスが登録されている。
チェリー、スイカ及びベルは、いずれの遊技状態でも内部抽選の対象となる役であり、レギュラーボーナスでの賭数1に対応する判定値数の格納アドレスと、通常遊技状態及び小役ゲームでの賭数3に対応する判定値数の格納アドレスとが登録されている。チェリー及びスイカについては、共通フラグが1となっており、それぞれの賭数に対応して設定値に関わらず共通の判定値数の格納アドレスが登録されている。ベルについては、共通フラグが0となっており、それぞれの賭数に対応して設定値に応じて個別に判定値数の格納アドレスが登録されている。
リプレイは、通常遊技状態において内部抽選の対象となる役であり、通常遊技状態での賭数3に対応する判定値数の格納アドレスが登録されている。この役の共通フラグは1であり、設定値に関わらず共通の判定値数の格納アドレスが登録されている。
また、役別テーブルには、各役に入賞したときに払い出されるメダルの払出枚数も登録されている。もっとも、入賞したときにメダルの払い出し対象となる役は、小役であるJAC、チェリー、スイカ及びベルだけである。チェリー、スイカ及びベルは、賭数が1のとき(レギュラーボーナス)でも3のとき(レギュラーボーナス以外の遊技状態)でも入賞が発生可能であるが、ベルについては、賭数が1であるとき、すなわち遊技状態がレギュラーボーナスにあるときには、それ以外の8枚よりも多い15枚のメダルが払い出されるものとなる。
ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、レギュラーボーナス(2)、及びJACINの入賞は、遊技状態の移行を伴うものであり、メダルの払い出し対象とはならない。リプレイでは、メダルの払い出しを伴わないが、次のゲームで賭数の設定に用いるメダルの投入が不要となるので実質的には3枚の払い出しと変わらない。
図5は、役別テーブルに登録されたアドレスに基づいて取得される判定値数の記憶領域を示す図である。この判定値数の記憶領域は、開発用の機種ではメイン制御部41のRAM41cに、量産機種ではメイン制御部41のROM41bに割り当てられたアドレス領域に設けられている。
例えばアドレスADD+36、ADD+38、ADD+40、ADD+74は、それぞれ内部抽選の対象役がレギュラーボーナス(2)、JACIN、JAC、リプレイであるときに設定値に関わらずに参照されるアドレスであり、設定値に関わらずに、それぞれ32、4311、27、2245が判定値数として取得される。
アドレスADDは、内部抽選の対象役がビッグボーナス(1)であって設定値が1のときに参照されるアドレスであり、このときには、ここに格納された値である30が判定値数として取得される。アドレスADD+2、ADD+4、ADD+6、ADD+8、ADD+10は、それぞれ内部抽選の対象役がビッグボーナス(1)であって設定値が2〜6のときに参照されるアドレスである。アドレスADD+12、ADD+14、ADD+16、ADD+18、ADD+20、ADD+22は、それぞれ内部抽選の対象役がビッグボーナス(2)であって設定値が1〜6のときに参照されるアドレスである。ビッグボーナス(1)、ビッグボーナス(2)については、設定値に応じて個別に判定値数が記憶され、しかも異なる判定値数が記憶されているので、設定値に応じてビッグボーナス(1)、ビッグボーナス(2)の当選確率が異なることとなる。
アドレスADD+24、ADD+26、ADD+28、ADD+30、ADD+32、ADD+34は、それぞれ内部抽選の対象役がレギュラーボーナス(1)であって設定値が1〜6のときに参照されるアドレスである。レギュラーボーナス(1)については、設定値に応じて個別に判定値数が記憶されているが、同一の判定値数が記憶されているので、いずれの設定値においてもレギュラーボーナス(1)の当選確率は同じとなっている。
アドレスADD+42は、賭数が1のとき、すなわちレギュラーボーナスにおいて内部抽選の対象役がチェリーであるときに設定値に関わらずに参照されるアドレスである。アドレスADD+44は、賭数が3のとき、すなわち通常遊技状態及び小役ゲームにおいて内部抽選の対象役がチェリーであるときに設定値に関わらず参照されるアドレスである。チェリーについての判定値数は、賭数に応じて登録されているが、同じ値が登録されているので、いずれの遊技状態においてもチェリーの当選確率は同じとなる。スイカについても、アドレスADD+46、ADD+48に同様にして判定値数が登録されている。
アドレスADD+50、ADD+52、ADD+54、ADD+56、ADD+58、ADD+60は、それぞれ賭数が1のとき、すなわちレギュラーボーナスにおいて内部抽選の対象役がベルであって設定値が1〜6のときに参照されるアドレスである。アドレスADD+50とADD+52、ADD+54とADD+56、ADD+58とADD+60には、それぞれ同一の値が登録されているので、レギュラーボーナスにおいては、設定値1と設定値2、設定値3と設定値4、設定値5と設定値6で、ベルの当選確率が同一となる。
アドレスADD+62、ADD+64、ADD+66、ADD+68、ADD+70、ADD+72は、それぞれ賭数が3のとき、すなわち通常遊技状態または小役ゲームにおいて内部抽選の対象役がベルであって設定値が1〜6のときに参照されるアドレスである。アドレスADD+62、ADD+64、ADD+66、ADD+68、ADD+70、ADD+72には、設定値に応じて個別に判定値数が記憶され、しかも異なる判定値数が記憶されているので、通常遊技状態においては、設定値に応じてベルの当選確率が異なることとなる。
図6(a)は、内部抽選で当選した特別役の役番号を一時的に格納するためにRAM41cに割り当てられた特別役一時格納ワーク(iwin_bonus)の構成を示す図であり、図6(b)は、内部抽選で当選した一般役の役番号を一時的に格納するためにRAM41cに割り当てられた一般役一時格納ワーク(iwin_gen)の構成を示す図であり、図6(c)は、内部抽選で当選した役の当選フラグを格納するためにRAM41cに割り当てられた内部当選フラグ格納ワーク(iwin_flag)の構成を示す図である。
特別役一時格納ワーク(iwin_bonus)は、図6(a)に示すように、1バイトからなる。このうち下位4ビットに当選した特別役の役番号が格納され、上位4ビットは、未使用とされ、常に0Hが格納される。このため01Hが格納されている場合にはビッグボーナス(1)、02Hが格納されている場合にはビッグボーナス(2)、03Hが格納されている場合にはレギュラーボーナス(1)、04Hが格納されている場合にはレギュラーボーナス(2)、05Hが格納されている場合にはJACINの当選を示すこととなる。尚、00Hが格納されている場合には、いずれの特別役も当選していない旨、すなわち特別役のハズレを示すこととなる。
一般役一時格納ワーク(iwin_gen)は、図6(b)に示すように、1バイトからなる。このうち下位4ビットに当選した一般役の役番号が格納され、上位4ビットは、未使用とされ、常に0Hが格納される。このため01Hが格納されている場合にはJAC、02Hが格納されている場合にはチェリー、03Hが格納されている場合にはスイカ、04Hが格納されている場合にはベル、05Hが格納されている場合にはリプレイの当選を示すこととなる。尚、00Hが格納されている場合には、いずれの一般役も当選していない旨、すなわち一般役のハズレを示すこととなる。
内部当選フラグ格納ワーク(iwin_flag)は、図6(c)に示すように、1バイトからなる。このうち上位4ビットが特別役格納領域であり、特別役の当選フラグとして該当する役番号の下位4ビットの値が格納され、上位4ビットが一般役格納領域であり、一般役の当選フラグとして該当する役番号の下位4ビットの値が格納される。このため01Hが格納されている場合にはJACの当選フラグ、02Hが格納されている場合にはチェリーの当選フラグ、03Hが格納されている場合にはスイカ、04Hが格納されている場合にはベルの当選フラグ、05Hが格納されている場合にはリプレイの当選フラグが、設定されている旨をそれぞれ示すこととなる。また、10Hが格納されている場合にはビッグボーナス(1)の当選フラグ、20Hが格納されている場合にはビッグボーナス(2)の当選フラグ、30Hが格納されている場合にはレギュラーボーナス(1)の当選フラグ、40Hが格納されている場合にはレギュラーボーナス(2)の当選フラグ、50Hが格納されている場合にはJACINの当選フラグが設定されている旨をそれぞれ示すこととなる。また、12Hが格納されている場合にはビッグボーナス(1)の当選フラグ及びチェリーの当選フラグ、13Hが格納されている場合にはビッグボーナス(1)の当選フラグ及びスイカの当選フラグ、14Hが格納されている場合にはビッグボーナス(1)及びベルの当選フラグ、15Hが格納されている場合にはビッグボーナス(1)及びリプレイの当選フラグが設定されている旨をそれぞれ示すこととなる。また同様に、22H、23H、24H、25Hが格納されている場合には、ビッグボーナス(2)の当選フラグと、チェリー、スイカ、ベル、リプレイの当選フラグとが設定されている旨をそれぞれ示すこととなり、32H、33H、34H、35Hが格納されている場合には、レギュラーボーナス(1)の当選フラグと、チェリー、スイカ、ベル、リプレイの当選フラグとが設定されている旨をそれぞれ示すこととなり、42H、43H、44Hが格納されている場合には、レギュラーボーナス(2)の当選フラグと、チェリー、スイカ、ベルの当選フラグとが設定されている旨をそれぞれ示すことととなる。尚、00Hが格納されている場合には、特別役にも一般役にも当選していない旨、すなわち全ての役についてハズレを示すこととなる。
図7及び図8は、CPU41aによる内部抽選の処理の流れと、内部抽選時に用いられるレジスタ、特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)、内部当選フラグ格納ワーク(iwin_flag)の格納状況の例を示す図である。図7では、通常遊技状態において特別役が当選していないゲームの、図8では、通常遊技状態において特別役が持ち越されているゲームの例をそれぞれ示している。また、図7、図8のいずれも、設定値が6の場合を例をそれぞれ示している。
内部抽選では、まずスタートスイッチ7の操作に伴って取得した内部抽選用の乱数値をHLレジスタに格納する。そして特別役が当選していないゲームでは、図7に示すように、まず、通常遊技状態において対象となる特別役のうち、最初に当選か否かの判定を行うビッグボーナス(1)の役番号である01Hを格納するとともに、ビッグボーナス(1)の判定値数(40)を取得し、DEレジスタに格納する。そしてHLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否か、すなわち16363を超えたか否かによってビッグボーナス(1)に当選したか否かを判定し、オーバーフローした場合には、ビッグボーナス(1)の当選と判定し、Aレジスタの値、すなわちビッグボーナス(1)の役番号を特別役一時格納ワーク(iwin_bonus)に格納する。
ビッグボーナス(1)の判定値数を加算したHLレジスタの値がオーバーフローしていなければ、特別役のうち2番目に当選か否かが判定されるビッグボーナス(2)の役番号である02Hを格納するとともに、ビッグボーナス(2)の判定値数(40)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってビッグボーナス(2)に当選したか否かを判定し、オーバーフローした場合には、ビッグボーナス(2)の当選と判定し、Aレジスタの値、すなわちビッグボーナス(2)の役番号を特別役一時格納ワーク(iwin_bonus)に格納する。
ビッグボーナス(2)の判定値数を加算したHLレジスタの値がオーバーフローしていなければ、特別役のうち最後に当選か否かが判定されるレギュラーボーナス(1)の役番号である03Hを格納するとともに、レギュラーボーナス(1)の判定値数(31)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってレギュラーボーナス(1)に当選したか否かを判定し、オーバーフローした場合には、レギュラーボーナス(1)の当選と判定し、Aレジスタの値、すなわちレギュラーボーナス(1)の役番号を特別役一時格納ワーク(iwin_bonus)に格納する。
そして、いずれかの特別役が当選し、当選した役番号が特別役一時格納ワーク(iwin_bonus)に格納された場合には、Aレジスタの値をクリアし(00Hとし)、Aレジスタの値を一般役一時格納ワーク(iwin_gen)に格納した後、特別役一時格納ワーク(iwin_bonus)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、すなわち特別役格納領域に格納し、一般役一時格納ワーク(iwin_gen)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の下位4ビット、すなわち一般役格納領域に格納する。これにより内部当選フラグ格納ワーク(iwin_flag)には、当選した特別役の当選フラグが格納されることとなる。
また、レギュラーボーナス(2)の判定値数を加算したHLレジスタの値がオーバーフローしていない場合、すなわちいずれの特別役の当選も判定されなかった場合には、通常遊技状態において対象となる一般役のうち最初に当選したか否かが判定されるチェリーの役番号である02Hを格納するとともに、チェリーの判定値数(96)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってチェリーに当選したか否かを判定し、オーバーフローした場合には、チェリーの当選と判定し、Aレジスタの値、すなわちチェリーの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
チェリーの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち2番目に当選したか否かが判定されるスイカの役番号である03Hを格納するとともに、スイカの判定値数(68)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってスイカに当選したか否かを判定し、オーバーフローした場合には、スイカの当選と判定し、Aレジスタの値、すなわちスイカの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
スイカの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち3番目に当選したか否かが判定されるベルの役番号である04Hを格納するとともに、ベルの判定値数(2082)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってベルに当選したか否かを判定し、オーバーフローした場合には、ベルの当選と判定し、Aレジスタの値、すなわちベルの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
ベルの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち最後に当選したか否かが判定されるリプレイの役番号である05Hを格納するとともに、リプレイの判定値数(2245)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってリプレイに当選したか否かを判定し、オーバーフローした場合には、リプレイの当選と判定し、Aレジスタの値、すなわちリプレイの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
そして、いずれかの一般役が当選し、当選した役番号が一般役一時格納ワーク(iwin_gen)に格納された場合には、Aレジスタの値を一般役一時格納ワーク(iwin_gen)に格納した後、前のゲームから記憶状態が維持されている特別役一時格納ワーク(iwin_bonus)の下位4ビットの値(いずれの特別役も持ち越されていないため、0Hが格納されている)を内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、すなわち特別役格納領域に格納し、一般役一時格納ワーク(iwin_gen)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の下位4ビット、すなわち一般役格納領域に格納する。これにより内部当選フラグ格納ワーク(iwin_flag)には、当選した一般役の当選フラグが格納されることとなる。
また、リプレイの判定値数を加算したHLレジスタの値がオーバーフローしていない場合、すなわち特別役も一般役も当選しなかった場合には、Aレジスタの値をクリアし(00Hとし)、Aレジスタの値を一般役一時格納ワーク(iwin_gen)に格納した後、前のゲームから記憶状態が維持されている特別役一時格納ワーク(iwin_bonus)の下位4ビットの値(いずれの特別役も持ち越されていないため、0Hが格納されている)を内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、すなわち特別役格納領域に格納し、一般役一時格納ワーク(iwin_gen)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の下位4ビット、すなわち一般役格納領域に格納する。これにより内部当選フラグ格納ワーク(iwin_flag)には、特別役も一般役も当選していない旨を示す値(00H)が格納されることとなる。
一方、特別役が持ち越されているゲーム(特別役一時格納ワーク(iwin_bonus)にいずれかの特別役の役番号が既に格納されている場合)では、図8に示すように、まず、通常遊技状態において対象となる一般役のうち最初に当選したか否かが判定されるチェリーの役番号である02Hを格納するとともに、チェリーの判定値数(96)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってチェリーに当選したか否かを判定し、オーバーフローした場合には、チェリーの当選と判定し、Aレジスタの値、すなわちチェリーの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
チェリーの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち2番目に当選したか否かが判定されるスイカの役番号である03Hを格納するとともに、スイカの判定値数(68)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってスイカに当選したか否かを判定し、オーバーフローした場合には、スイカの当選と判定し、Aレジスタの値、すなわちスイカの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
スイカの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち3番目に当選したか否かが判定されるベルの役番号である04Hを格納するとともに、ベルの判定値数(2082)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってベルに当選したか否かを判定し、オーバーフローした場合には、ベルの当選と判定し、Aレジスタの値、すなわちベルの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
ベルの判定値数を加算したHLレジスタの値がオーバーフローしていなければ、一般役のうち最後に当選したか否かが判定されるリプレイの役番号である05Hを格納するとともに、リプレイの判定値数(2245)を取得し、DEレジスタに格納する。HLレジスタの値にDEレジスタの値を加算してHLレジスタの値がオーバーフローしたか否かによってリプレイに当選したか否かを判定し、オーバーフローした場合には、リプレイの当選と判定し、Aレジスタの値、すなわちリプレイの役番号を一般役一時格納ワーク(iwin_gen)に格納する。
そして、いずれかの一般役が当選し、当選した役番号が一般役一時格納ワーク(iwin_gen)に格納された場合には、Aレジスタの値を一般役一時格納ワーク(iwin_gen)に格納した後、前のゲームから記憶状態が維持されている特別役一時格納ワーク(iwin_bonus)の下位4ビットの値(いずれかの特別役が持ち越されているため、1H〜3Hが格納されている)を内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、すなわち特別役格納領域に格納し、一般役一時格納ワーク(iwin_gen)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の下位4ビット、すなわち一般役格納領域に格納する。これにより内部当選フラグ格納ワーク(iwin_flag)には、前のゲームから持ち越されている特別役の当選フラグと、当選した一般役の当選フラグと、が格納されることとなる。
また、リプレイの判定値数を加算したHLレジスタの値がオーバーフローしていない場合、すなわち一般役がいずれも当選しなかった場合には、Aレジスタの値をクリアし(00Hとし)、Aレジスタの値を一般役一時格納ワーク(iwin_gen)に格納した後、前のゲームから記憶状態が維持されている特別役一時格納ワーク(iwin_bonus)の下位4ビットの値(いずれかの特別役が持ち越されているため、1H〜3Hが格納されている)を内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、すなわち特別役格納領域に格納し、一般役一時格納ワーク(iwin_gen)の下位4ビットの値を内部当選フラグ格納ワーク(iwin_flag)の下位4ビット、すなわち一般役格納領域に格納する。これにより内部当選フラグ格納ワーク(iwin_flag)には、前のゲームから持ち越されている特別役の当選フラグが格納されることとなる。
図9(a)(b)、図10(a)〜(c)は、内部抽選用の乱数の値と各役の判定値数と、当選との関係の例を示す図である。図9(a)では通常遊技状態においていずれのボーナスの当選フラグも設定されていないときの、図9(b)では通常遊技状態においていずれかのボーナスの当選フラグが設定されているときの、図10(a)では小役ゲームにおいてレギュラーボーナス(2)の当選フラグが設定されていないときの、図10(b)では小役ゲームにおいてレギュラーボーナス(2)の当選フラグが設定されているときの、図10(c)ではレギュラーボーナスにあるときの例をそれぞれ示している。図9(a)(b)、図10(a)〜(c)のいずれも、設定値が6の場合の例を示している。
例えば、図9(a)に示すように、通常遊技状態においていずれのボーナスの当選フラグも設定されていない場合には、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、チェリー、スイカ、ベル、リプレイが内部抽選の対象となり、設定値6において、各役のそれぞれの判定値数は、40、40、31、96、68、2082、2245となる。最初に内部抽選の対象となるビッグボーナス(1)は、判定値数の40を加算することで加算結果がオーバーフローすることとなる16344〜16363が内部抽選用の乱数として取得されたときに当選となる。
次に内部抽選の対象役となるビッグボーナス(2)は、ビッグボーナス(1)の判定値数40とビッグボーナス(2)の判定値数40とを合計した80を加算することで加算結果がオーバーフローすることとなる16304〜16343が内部抽選用の乱数として取得されたときに当選となる。同様に、レギュラーボーナス(1)は、16273〜16303が内部抽選用の乱数として取得されたときに、チェリーは、16177〜16272が内部抽選用の乱数として取得されたときに、スイカは、16109〜16176が内部抽選用の乱数として取得されたときに、ベルは、14027〜16108が内部抽選用の乱数として取得されたときに、リプレイは、11782〜14026が内部抽選用の乱数として取得されたときに、それぞれ当選と判定される。尚、0〜11781が内部抽選用の乱数として取得されたときには、全ての役にハズレとなる。
これらの判定値数に基づいて算出される各役のおおよその当選確率は、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、チェリー、スイカ、ベル、リプレイのそれぞれについて、1/409.6、1/409.6、1/528.5、1/170.1、1/240.9、1/7.9、1/7.3となる。
また、図9(b)に示すように、通常遊技状態においていずれかのボーナスの当選フラグが設定されている場合には、一般役であるチェリー、スイカ、ベル、リプレイのみが内部抽選の対象となり、設定値6においては、各役のそれぞれの判定値数が96、68、2082、2245となるので、16288〜16383、16220〜16287、14138〜16219、11893〜14137が内部抽選用の乱数として取得されたときに、それぞれ当選と判定される。また、それぞれの役のおおよその当選確率は、いずれのボーナスの当選フラグも設定されていない場合と同じであり、1/170.1、1/240.9、1/7.9、1/7.3となる。尚、0〜11892が内部抽選用の乱数として取得されたときには、全ての役にハズレとなる。
また、図10(a)に示すように、小役ゲームにおいてレギュラーボーナス(2)の当選フラグが設定されていない場合には、レギュラーボーナス(2)、JACIN、チェリー、スイカ、ベルが内部抽選の対象となり、各役のそれぞれの判定値数が32、4311、96、68、2082であるので、16352〜16383、12041〜16351、11945〜12040、11877〜11944、9795〜11876が内部抽選用の乱数として取得されたときに、それぞれ当選と判定される。また、それぞれの役のおおよその当選確率は、1/512、1/3.8、1/170.1、1/240.9、1/7.9となる。尚、0〜9794が内部抽選用の乱数として取得されたときには、全ての役にハズレとなる。
また、図10(b)に示すように、小役ゲームにおいてレギュラーボーナス(2)の当選フラグが設定されている場合には、一般役であるチェリー、スイカ、ベルのみが内部抽選の対象となり、設定値6においては、各役のそれぞれの判定値数が96、68、2082となるので、16288〜16383、16220〜16287、14138〜16219が内部抽選用の乱数として取得されたときに、それぞれ当選と判定される。また、それぞれの役のおおよその当選確率は、レギュラーボーナス(2)の当選フラグも設定されていない場合と同じであり、1/170.1、1/240.9、1/7.9となる。尚、0〜14137が内部抽選用の乱数として取得されたときには、全ての役にハズレとなる。
また、図10(c)に示すように、レギュラーボーナスでは、JAC、チェリー、スイカ、ベルが内部抽選の対象役となり、それぞれの判定値数が27、96、68、15919であるので、16357〜16383、16261〜16356、16193〜16260、274〜16192が内部抽選用の乱数として取得されたときに、それぞれ当選と判定される。また、それぞれの役のおおよその当選確率は、1/606.8、1/170.1、1/240.9、1/1.03となる。尚、0〜273が内部抽選用の乱数として取得されたときには、全ての役にハズレとなる。
次に、内部抽選用の乱数の取得について、図11を参照して詳しく説明する。内部抽選用の乱数は、ハードウェア乱数機能により乱数発生回路42から乱数を抽出し、これをCPU41aがソフトウェアによって加工することによって取得されるものとなる。尚、乱数発生回路42から抽出した、或いはこれを加工した乱数の最下位ビットを第0ビット、最上位ビットを第15ビットと呼ぶものとする。
図11(a)は、乱数発生回路42の構成を詳細に示すブロック図である。図示するように、乱数発生回路42は、パルス発生回路42aと、下位カウンタ42bと、上位カウンタ42cとから構成されている。下位カウンタ42b及び上位カウンタ42cは、いずれも8ビット(1バイト)のカウンタであり、下位カウンタ42bが第0ビット〜第7ビット、上位カウンタ42cが第8ビット〜第15ビットの合計で16ビットのデータ信号を出力する。
パルス発生回路42aは、CPU41aの動作クロックの周波数よりも高く、その整数倍とはならない周波数(互いに素とすることが好ましい)でパルス信号を出力する。パルス発生回路42aの出力するパルス信号が下位カウンタ42bにクロック入力される。
下位カウンタ42bは、パルス発生回路42aからパルス信号が入力される度に第0ビットのデータ信号をHレベルとLレベルとで交互に反転させる。正論理を適用するものとすると、Hレベルの論理値が1でLレベルの論理値が0に対応する。負論理の場合は、論理値が1の場合をLレベル、論理値が0の場合をHレベルと読み替えれば良い。第0ビットのデータ信号のレベルがHレベルからLレベルに反転するとき、すなわち第0ビットのデータ信号の論理値が1から0に変化する度に第1ビットのデータ信号のレベルをHレベルとLレベルとで交互に反転させる。
同様に、第m−1ビットのデータ信号のレベルがHレベルからLレベルに反転するとき、すなわち第m−1ビットのデータ信号の論理値が1から0に変化する度に第mビットのデータ信号のレベルをHレベルとLレベルとで交互に反転させる。また、第7ビットのデータ信号のレベルがHレベルからすなわち第7ビットのデータ信号の論理値が1から0に変化する度に桁上げ信号を出力する。下位カウンタ42bの出力する桁上げ信号が上位カウンタ42cにクロック入力される。
上位カウンタ42cは、下位カウンタ42bから桁上げ信号が入力される度に第8ビットのデータ信号をHレベルとLレベルとで交互に反転させる。第9ビットのデータ信号のレベルがHレベルからLレベルに反転する度に第9ビットのデータ信号のレベルをHレベルとLレベルとで交互に反転させる。同様に、第m−1ビットのデータ信号のレベルがHレベルからLレベルに反転する度に第mビットのデータ信号のレベルをHレベルとLレベルとで交互に反転させる。
下位カウンタ42bのデータ信号を下位8ビットとし、上位カウンタ42cのデータ信号を上位8ビットとした16ビットのデータ信号の論理値は、パルス発生回路42aがパルス信号を出力する度に、0(0000H)→1(0001H)→2(0002H)→…→65535(FFFFH)と値が更新毎に連続するように更新され、最大値の65535(FFFFH)の次は初期値の0(0000H)へと値が循環して、乱数発生回路42から出力されるものとなる。
サンプリング回路43は、ラッチ回路から構成され、CPU41aからのサンプリング指令(スタートスイッチ7の操作時)に基づいて、乱数発生回路42からそのときに出力されている16ビットのデータ信号をラッチし、ラッチしたデータ信号を出力する。CPU41aは、I/Oポート41dを介してサンプリング回路43から入力されたデータ信号に対応した数値データを、乱数発生回路42が発生する乱数として抽出するものとなる。尚、以下では、乱数発生回路42から出力されるデータ信号は、その論理値に応じた乱数として説明するものとする。
図11(b)は、乱数発生回路42から抽出した乱数をCPU41aがソフトウェアにより内部抽選用の乱数に加工するまでの説明図である。乱数発生回路42から抽出された乱数は、CPU41aが有する16ビットの汎用レジスタであるHLレジスタに格納されるものとなる。
乱数発生回路42から抽出された乱数が汎用レジスタ41GRに格納されると、CPU41aは、演算用のAレジスタを用いて、HLレジスタの下位バイト(下位カウンタ42bから抽出した値)と、上位バイトの値(上位カウンタ42cから抽出した値)とを入れ替える。
次に、CPU41aは、抽出された乱数に対して上位バイトと下位バイトとが入れ替えられた乱数の値を、8080Hと論理和演算をする。CPU41aの処理ワークは1バイトなので、実際には上位バイトと下位バイトとについて順次論理和演算を行うものとなる。この論理和演算によって第15ビットと第7ビットは常に1となる。更に、CPU41aは、上位1バイト(第8ビット〜第15ビット)までを1ビットずつ下位にシフトし、これによって空いた第15ビットに1を挿入する。
CPU41aは、このときにHLレジスタに格納されている値を、内部抽選用の乱数とし、これに各役の判定値数を順次加算していくものとなる。内部抽選用の乱数の第15ビットと第14ビットは常に1となるので、内部抽選用の乱数は、14ビット(16384)の大きさを有する乱数ということになり、実質的に0〜16383の値をとるものとなる。
尚、乱数発生回路42からの乱数の抽出から加工を終了するまでの間は、CPU41aに対する割り込みが禁止される。CPU41aに対して割り込みが発生することによって、当該割り込み処理ルーチンでHLレジスタの内容が書き換えられてしまうのを防ぐためである。
次に、リール2L、2C、2Rの停止制御について説明する。
CPU41aは、リールの回転が開始したとき及び、リールが停止し、かつ未だ回転中のリールが残っているときに、ROM41bに格納されているテーブルインデックス及びテーブル作成用データを参照して、回転中のリール別に停止制御テーブルを作成する。そして、ストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作が有効に検出されたときに、該当するリールの停止制御テーブルを参照し、参照した停止制御テーブルの引込コマ数に基づいて、操作されたストップスイッチ8L、8C、8Rに対応するリール2L、2C、2Rの回転を停止させる制御を行う。
テーブルインデックスには、図14に示すように、各遊技状態について、当選フラグの設定状態(以下、内部当選状態と呼ぶ)別に、テーブル作成用データが格納された領域の先頭アドレスが格納されている。
具体的には、通常遊技状態においては、ビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)、チェリー、スイカ、ベル、ベル、リプレイ、ビッグボーナス(1)持越中のチェリー、ビッグボーナス(1)持越中のスイカ、ビッグボーナス(1)持越中のベル、ビッグボーナス(1)持越中のリプレイ、ビッグボーナス(2)持越中のチェリー、ビッグボーナス(2)持越中のスイカ、ビッグボーナス(2)持越中のベル、ビッグボーナス(2)持越中のリプレイ、レギュラーボーナス(1)持越中のチェリー、レギュラーボーナス(1)持越中のスイカ、レギュラーボーナス(1)持越中のベル、レギュラーボーナス(1)持越中のリプレイ、ハズレのそれぞれについて、テーブル作成用データが格納された領域の先頭アドレスが格納されている。レギュラーボーナス(2)持越中のチェリー、レギュラーボーナス(2)持越中のスイカ、レギュラーボーナス(2)持越中のベル、ハズレのそれぞれについて、テーブル作成用データが格納された領域の先頭アドレスが格納されている。
尚、小役ゲーム及びレギュラーボーナスにおいて内部当選状態がチェリー、スイカ、ベルの場合には、通常遊技状態において内部当選状態がチェリー、スイカ、ベルの場合と共通のテーブル作成用データが参照されるので、通常遊技状態と共通の先頭アドレスがそれぞれ格納されている。
また、小役ゲームにおいて内部当選状態がレギュラーボーナス(2)、レギュラーボーナス(2)持越中のチェリー、レギュラーボーナス(2)持越中のスイカ、レギュラーボーナス(2)持越中のベルの場合には、通常遊技状態において内部当選状態がレギュラーボーナス(1)、レギュラーボーナス(1)持越中のチェリー、レギュラーボーナス(1)持越中のスイカ、レギュラーボーナス(1)持越中のベルの場合と共通のテーブル作成用データが参照されるので、通常遊技状態と共通の先頭アドレスがそれぞれ格納されている。
また、小役ゲーム及びレギュラーボーナスにおいて内部当選状態がハズレの場合には、ともに通常遊技状態において内部当選状態がハズレの場合と共通のテーブル作成用データが参照されるので、通常遊技状態と共通の先頭アドレスが格納されている。
このように、遊技状態が異なったり、内部当選状態が異なったりする場合でも、同一の制御が適用される場合においては、テーブル作成用データが格納された領域の先頭アドレスとして同一のアドレスが格納されており、このような場合には、同一のテーブル作成用データを参照して、停止制御テーブルが作成されることとなる。
テーブル作成用データは、停止操作位置に応じた引込コマ数を示す引込コマ数データと、リールの停止状況に応じて参照すべき引込コマ数データのアドレスと、からなる。
リールの停止状況に応じて参照される引込コマ数データは、全てのリールが回転しているか、左リールのみ停止しているか、中リールのみ停止しているか、右リールのみ停止しているか、左、中リールが停止しているか、左、右リールが停止しているか、中、右リールが停止しているか、によって異なる場合があり、更に、いずれかのリールが停止している状況においては、停止済みのリールの停止位置によっても異なる場合があるので、それぞれの状況について、参照すべき引込コマ数データのアドレスが回転中のリール別に登録されており、テーブル作成用データの先頭アドレスに基づいて、それぞれの状況に応じて参照すべき引込コマ数データのアドレスが特定可能とされ、この特定されたアドレスから、それぞれの状況に応じて必要な引込コマ数データを特定できるようになっている。尚、リールの停止状況や停止済みのリールの停止位置が異なる場合でも、同一の引込コマ数データが適用される場合においては、引込コマ数データのアドレスとして同一のアドレスが登録されているものもあり、このような場合には、同一の引込コマ数データが参照されることとなる。
引込コマ数データは、停止操作が行われたタイミング別の引込コマ数を特定可能なデータである。本実施例では、リールモータ32L、32C、32Rに、168ステップ(0〜167)の周期で1周するステッピングモータを用いている。すなわちリールモータ32L、32C、32Rを168ステップ駆動させることでリール2L、2C、2Rが1周することとなる。そして、リール1周に対して8ステップ(1図柄が移動するステップ数)毎に分割した21の領域(コマ)が定められており、これらの領域には、リール基準位置から1〜21の領域番号が割り当てられている。一方、1リールに配列された図柄数も21であり、各リールの図柄に対して、リール基準位置から1〜21の図柄番号が割り当てられているので、1番図柄から21番図柄に対して、それぞれ1〜21の領域番号が順に割り当てられていることとなる。そして、引込コマ数データには、領域番号別の引込コマ数が所定のルールで圧縮して格納されており、引込コマ数データを展開することによって領域番号別の引込コマ数を取得できるようになっている。
前述のようにテーブルインデックス及びテーブル作成用データを参照して作成される停止制御テーブルは、図11に示すように、領域番号に対応して、各領域番号に対応する領域が停止基準位置(本実施例では、透視窓3の下段図柄の領域)に位置するタイミング(リール基準位置からのステップ数が各領域番号のステップ数の範囲に含まれるタイミング)でストップスイッチ8L、8C、8Rの操作が検出された場合の引込コマ数がそれぞれ設定されたテーブルである。
次に、停止制御テーブルの作成手順について説明すると、まず、リール回転開始時においては、そのゲームの遊技状態及び内部当選状態に応じたテーブル作成用データの先頭アドレスを取得する。そして取得した先頭アドレスに基づいてテーブル作成用データを特定し、特定したテーブル作成用データから全てのリールが回転中の状態に対応する各リールの引込コマ数データのアドレスを取得し、取得したアドレスに格納されている各リールの引込コマ数データを展開して全てのリールについて停止制御テーブルを作成する。
また、いずれか1つのリールが停止したとき、またはいずれか2つのリールが停止したときには、リール回転開始時に取得した先頭アドレス、すなわちそのゲームの遊技状態及び内部当選状態に応じたテーブル作成用データの先頭アドレスに基づいてテーブル作成用データを特定し、特定したテーブル作成用データから停止済みのリール及び当該リールの停止位置の領域番号に対応する未停止リールの引込コマ数データのアドレスを取得し、取得したアドレスに格納されている各リールの引込コマ数データを展開して未停止のリールについて停止制御テーブルを作成する。
次に、CPU41aがストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作を有効に検出したときに、該当するリールに表示結果を導出させる際の制御について説明すると、ストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作を有効に検出すると、停止操作を検出した時点のリール基準位置からのステップ数に基づいて停止操作位置の領域番号を特定し、停止操作が検出されたリールの停止制御テーブルを参照し、特定した停止操作位置の領域番号に対応する引込コマ数を取得する。そして、取得した引込コマ数分リールを回転させて停止させる制御を行う。具体的には、停止操作を検出した時点のリール基準位置からのステップ数から、取得した引込コマ数引き込んで停止させるまでのステップ数を算出し、算出したステップ数分リールを回転させて停止させる制御を行う。これにより、停止操作が検出された停止操作位置の領域番号に対応する領域(図の停止操作ポイント)から引込コマ数分先の停止位置となる領域番号に対応する領域(図の停止ポイント)が停止基準位置(本実施例では、透視窓3の下段図柄の領域)に停止することとなる。
また、本実施例のテーブルインデックスには、一の遊技状態における一の内部当選状態に対応するテーブル作成用データの格納領域の先頭アドレスとして1つのアドレスのみが格納されており、更に、一のテーブル作成用データには、一のリールの停止状況(及び停止済みのリールの停止位置)に対応する引込コマ数データの格納領域のアドレスとして1つのアドレスのみが格納されている。すなわち一の遊技状態における一の内部当選状態に対応するテーブル作成用データ、及びリールの停止状況(及び停止済みのリールの停止位置)に対応する引込コマ数データが一意的に定められており、これらを参照して作成される停止制御テーブルも、一の遊技状態における一の内部当選状態、及びリールの停止状況(及び停止済みのリールの停止位置)に対して一意となる。このため、遊技状態、内部当選状態、リールの停止状況(及び停止済みのリールの停止位置)の全てが同一条件となった際に、同一の停止制御テーブル、すなわち同一の制御パターンに基づいてリールの停止制御が行われることとなる。
また、本実施例では、引込コマ数として0〜4の値が定められており、停止操作を検出してから最大4コマ図柄を引き込んでリールを停止させることが可能である。すなわち停止操作を検出した停止操作位置を含め、最大5コマの範囲から図柄の停止位置を指定できるようになっている。また、1図柄分リールを移動させるのに1コマの移動が必要であるので、停止操作を検出してから最大4図柄を引き込んでリールを停止させることが可能であり、停止操作を検出した停止操作位置を含め、最大5図柄の範囲から図柄の停止位置を指定できることとなる。
また、テーブルインデックスには、いずれかの役に当選している場合に対応して、当選役を4コマの範囲で最大限に引き込み、当選していない役が揃わないように引き込む引込コマ数が定められたテーブル作成用データのアドレスが格納され、ハズレに当選している場合に対応して、いずれの役も揃わないように引き込む引込コマ数が定められたテーブル作成用データのアドレスが格納されている。このため、いずれかの役に当選している場合には、当選役を4コマの範囲で最大限引き込み、当選していない役が揃わないように引き込む引込コマ数が定められた停止制御テーブルが作成され、リールの停止制御が行われる一方、ハズレに当選している場合には、いずれの役も揃わない引込コマ数が定められた停止制御テーブルが作成され、リールの停止制御が行われる。これにより、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で当選している役の図柄を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役の図柄は、最大4コマの引込範囲でハズシて停止させる制御が行われることとなる。
また、テーブルインデックスには、特別役の当選フラグが前ゲーム以前から持ち越されている状態で小役が当選した場合(ビッグボーナス(1)持越中のチェリーなど)に対応して、当選した特別役を4コマの範囲で最大限に引き込むように引込コマ数が定められているとともに、当選した特別役を最大4コマの範囲で引き込めない停止操作位置については、当選した小役を4コマの範囲で最大限に引き込むように引込コマ数が定められたテーブル作成用データのアドレスが格納され、リールの停止制御が行われる。これにより、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で当選している特別役の図柄を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、入賞ライン上に最大4コマの引込範囲で当選している特別役の図柄を引き込めない場合には、入賞ライン上に最大4コマの引込範囲で当選している小役の図柄を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役の図柄は、4コマの引込範囲でハズシて停止させる制御が行われることとなる。すなわちこのような場合には、小役よりも特別役を入賞ライン上に揃える制御が優先され、特別役を引き込めない場合にのみ、小役を入賞させることが可能となる。
また、テーブルインデックスには、特別役が前ゲーム以前から持ち越されている状態で再遊技役が当選した場合(ビッグボーナス(1)持越中のリプレイなど)に対応して、再遊技役を4コマの範囲で最大限に引き込むように引込コマ数が定められたテーブル作成用データのアドレスが格納され、リールの停止制御が行われる。これにより、停止操作が行われた際に、入賞ライン上に最大4コマの引込範囲で再遊技役の図柄を揃えて停止させる制御が行われる。尚、後に説明するように、再遊技役を構成する図柄である「リプレイ」は、リール2L、2C、2Rのいずれについても4図柄以内、すなわち4コマ以内の間隔で配置されており、5コマの引込範囲で必ず任意の位置に停止させることができるので、特別役が前ゲーム以前から持ち越されている状態で再遊技役が当選した場合には、遊技者によるストップスイッチ8L、8C、8Rの操作タイミングに関わらずに、必ず再遊技役が揃って入賞することとなる。すなわちこのような場合には、特別役よりも再遊技役を入賞ライン上に揃える制御が優先され、必ず再遊技役が入賞することとなる。
ここで、図2に示すように、「ベル」、「JAC」については、リール2L、2C、2Rのいずれについても4図柄以内、すなわち4コマ以内の間隔で配置されており、5コマの引込範囲で必ず任意の位置に停止させることができる。また、「スイカ」については、左リールのいずれについても4図柄以内、すなわち4コマ以内の間隔で配置されており、5コマの引込範囲で必ず任意の位置に停止させることができる。つまり、ベル、リプレイ、JAC、JACINの当選フラグがそれぞれ設定されているときには、遊技者によるストップスイッチ8L、8C、8Rの操作タイミングに関わらずに、必ず当該役を入賞させることができる。
次に、メイン制御部41のRAM41cの初期化について説明する。メイン制御部41のRAM41cは、512バイトの格納領域を有しており、図13に示すように、各バイト毎に7E00H〜7FFFHのアドレスが割り当てられているとともに、重要ワーク、一般ワーク、特別ワーク、設定値ワーク1〜3、非保存ワーク、内部当選フラグ格納ワーク、未使用領域、スタック領域に区分されている。
重要ワークは、7E00H〜7E27Hの40バイトの領域であり、各種表示器やLEDの表示用データ、I/Oポート41dの入出力データ、遊技時間の計時カウンタ等、ビッグボーナス終了時に初期化すると不都合があるデータが格納されるワークである。
一般ワークは、7E28H〜7E8EH、7EBAH〜7F03Hの177バイトの領域であり、停止制御テーブル、停止図柄、メダルの払出枚数、ビッグボーナス中のメダル払出総数等、ビッグボーナス終了時に初期化可能なデータが格納されるワークである。また、一般ワークには、前述した一般役一時格納ワーク(iwin_gen)、内部当選フラグ格納ワーク(iwin_flag)も割り当てられている。
特別ワークは、7E8FH〜7EB3Hの37バイトの領域であり、演出制御基板90へコマンドを送信するためのデータ、各種ソフトウェア乱数等、設定開始前にのみ初期化されるデータが格納されるワークである。
設定値ワーク1は、7EB4Hの1バイトの領域であり、内部抽選処理で抽選を行う際に用いる設定値が格納されるワークであり、設定開始前(設定変更モードへの移行前)の初期化において0が格納された後、1に補正され、設定終了時(設定変更モードへの終了時)に新たに設定された設定値が格納されることとなる。
設定値ワーク2は、7EB5Hの1バイトの領域であり、内部抽選処理で抽選を行う際に設定値ワーク1から読み出された設定値が、設定終了時に格納された設定値と一致するか否かを判定する際に用いる設定値が格納されるワークであり、設定終了時(設定変更モードへの終了時)に新たに設定された設定値が格納されることとなる。
設定値ワーク3は、7EB6Hの1バイトの領域であり、内部抽選処理で抽選を行う際に設定値ワーク1から読み出された設定値が、前のゲームの内部抽選処理で抽選を行う際に用いた設定値と一致するか否かを判定する際に用いる設定値、すなわち前のゲームの設定値が格納されるワークであり、設定終了時(設定変更モードへの終了時)に新たに設定された設定値が格納されるとともに、1ゲーム毎に内部抽選処理で抽選を行う際に設定値ワーク1から読み出された値に更新されることとなる。
非保存ワークは、7EB7H〜7EB9Hの3バイトの領域であり、各種スイッチ類の状態を保持するワークであり、起動時にRAM41cのデータが破壊されているか否かに関わらず必ず値が設定されることとなる。
内部当選フラグ格納ワーク(iwin_flag)は、7F04Hの1バイトの領域であり、前述のように内部抽選で当選した役の当選フラグを格納するワークであり、1ゲーム終了時、BB終了時に初期化されることとなる。
未使用領域は、7F05H〜7FD1Hの205バイトの領域であり、RAM41cの格納領域のうち使用していない領域であり、後述する複数の初期化条件のいずれか1つでも成立すれば初期化されることとなる。
スタック領域は、7FD2H〜7FFFHの45バイトの領域であり、このうち7FD2H〜スタックポインタ−1の領域は、スタック領域内の使用されていない未使用スタック領域であり、スタックポインタ〜7FFFHの領域は、CPU41aのレジスタから退避したデータが格納されている使用中スタック領域である。このうち未使用スタック領域は、未使用領域と同様に、後述する複数の初期化条件のいずれか1つでも成立すれば初期化されることとなるが、使用中スタック領域は、プログラムの続行のため、初期化されることはない。
本実施例においてメイン制御部41のCPU41aは、図14(a)に示すように、設定開始前(設定変更モードへの移行前)、ビッグボーナス終了時、起動時にRAM41cのデータが破壊されていないとき、1ゲーム終了時の4つからなる初期化条件が成立した際に、各初期化条件に応じて初期化される領域の異なる4種類の初期化を行う。
初期化1は、起動時において設定キースイッチ37がONの状態であり、設定変更モードへ移行する場合において、その前に行う初期化であり、初期化1では、RAM41cの格納領域のうち、使用中スタック領域を除く全ての領域(未使用領域及び未使用スタック領域を含む)が初期化される。初期化2は、ビッグボーナス終了時に行う初期化であり、初期化2では、RAM41cの格納領域のうち、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域及び未使用スタック領域が初期化される。初期化3は、起動時において設定キースイッチ37がOFFの状態であり、かつRAM41cのデータが破壊されていない場合において行う初期化であり、初期化3では、非保存ワーク、未使用領域及び未使用スタック領域が初期化される。初期化4は、1ゲーム終了時に行う初期化であり、初期化4では、RAM41cの格納領域のうち、内部当選フラグ格納ワーク(iwin_flag)、未使用領域及び未使用スタック領域が初期化される。
ROM41bには、初期化1〜4に対応してそれぞれ初期化する領域の開始アドレスと初期化する領域のサイズを示す初期化サイズとが登録されており、CPU41aがRAM41cの初期化を行う際には、初期化テーブルを参照し、初期化条件に応じて初期化1〜4のいずれかに対応する開始アドレスと初期化サイズを取得し、開始アドレスにポインタを設定し、初期化サイズを設定する。また、初期化サイズが未使用スタック領域のサイズを含むものであれば、未使用スタック領域のサイズ(スタックポインタ−7FD2H)を計算し、初期化サイズを設定する。そして、ポインタが設定された初期化アドレスから1バイトづつ該当するアドレスの領域を0クリアし、1バイトクリアする毎に初期化サイズを1減算するとともに、ポインタを1進める処理を、初期化サイズが0になるまで実行する。すなわちCPU41aがRAM41cを初期化する際には、初期化条件に応じた領域毎に初期化するのではなく、指定したアドレスから指定したサイズ分の領域を初期化することとなる。
図14(b)は、初期化テーブルを示す図である。初期化テーブルには、前述のように初期化1〜4に対応して開始アドレス及び初期化サイズが登録されている。
初期化1には、開始アドレスとして7E00H、初期化サイズとして1D3H+M(未使用スタック領域のサイズ:(スタックポインタ−7FD2))バイトが登録されているので、初期化1では、7E00Hから1D3H+Mバイト分の領域が初期化される。そして、図13に示すように、重要ワーク、一般ワーク、特別ワーク、設定値ワーク1〜3、非保存ワーク、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域は、7E00Hから連続するアドレス領域に割り当てられており、これらの領域のサイズを合計すると1D3H+Mバイトとなるので、初期化1において、7E00Hから1D3H+Mバイト分が初期化されることで、重要ワーク、一般ワーク、特別ワーク、設定値ワーク1〜3、非保存ワーク、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域の順番でこれらの各領域が初期化されることとなる。
初期化2には、2つの開始アドレス及び各アドレス別の初期化サイズが登録されている。これは、初期化2において初期化される一般ワークが離れた2つのアドレス領域に割り当てられているからである。初期化2には、最初に初期化する領域の開始アドレスとして7E28H、初期化サイズとして67Hバイトが登録され、次に初期化する領域の開始アドレスとして7EB7H、初期化サイズとして118H+Mバイトがそれぞれ登録されているので、初期化2では、7E28Hから67Hバイト分の領域及び7EB7Hから118H+Mバイト分の領域が初期化される。そして、7E28H〜7E8EHの一般ワークのサイズは67Hバイトとなり、図13に示すように、残りの一般ワークの領域、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域は、7EB7Hから連続するアドレス領域に割り当てられ、これらの領域のサイズを合計すると118H+Mバイトとなるので、初期化2において、7E28Hから67Hバイト分が初期化され、7EB7Hから118H+Mバイト分が初期化されることで、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域の順番でこれらの各領域が初期化されることとなる。
初期化3にも、2つの開始アドレス及び各アドレス別の初期化サイズが登録されている。これは、初期化3において初期化される非保存ワークと未使用領域及び未使用スタック領域とが離れた2つのアドレス領域に割り当てられているからである。初期化3には、最初に初期化する領域の開始アドレスとして7EB7H、初期化サイズとして3Hバイトが登録され、次に初期化する領域の開始アドレスとして7F05H、初期化サイズとしてCDH+Mバイトがそれぞれ登録されているので、初期化3では、7EB7Hから3Hバイト分の領域及び7F05HからCDH+Mバイト分の領域が初期化される。そして、図13に示すように、非保存ワークは、7EB7Hから3バイト分の領域であり、未使用領域、未使用スタック領域は、7F05Hから連続するアドレス領域に割り当てられ、これらの領域のサイズを合計するとCDH+Mバイトとなるので、初期化3において、7EB7Hから3Hバイト分が初期化され、7F05HからCDH+Mバイト分が初期化されることで、非保存ワーク、未使用領域、未使用スタック領域の順番でこれらの各領域が初期化されることとなる。
初期化4には、開始アドレスとして7F05H、初期化サイズとしてCDH+Mバイトが登録されているので、初期化4では、7F04HからCEH+Mバイト分の領域が初期化される。そして、図13に示すように、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域は、7F04Hから連続するアドレス領域に割り当てられており、これらの領域のサイズを合計するとCEH+Mバイトとなるので、初期化4において、7F04HからCEH+Mバイト分が初期化されることで、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域の順番でこれらの各領域が初期化されることとなる。
また、初期化1〜4のうち初期化1、3については、CPU41aの起動後、割込が許可される前に行われる処理である。一方、初期化2、4については、割込が許可されている状態で行われる処理であるが、これら初期化2、4の実行中は、割込が禁止されるようになっている。すなわち初期化1〜4の実行中においては常に割込が禁止されるようになっている。
尚、本実施例においてRAM41cの記憶領域を初期化するとは、対象となる領域のデータを0クリアすること、すなわち対象となる領域の値を0に更新することであるが、例えば、対象となる領域のデータを予め定められた初期値に書き換えるようにしても良い。
次に、メイン制御部41のCPU41aが演出制御基板90に対して送信するコマンドについて説明する。
本実施例では、メイン制御部41のCPU41aが演出制御基板90に対して、BETコマンド、内部当選コマンド、リール回転開始コマンド、リール停止コマンド、入賞判定コマンド、遊技状態コマンド、待機コマンドを含む複数種類のコマンドを送信する。
BETコマンドは、賭数の設定がなされた旨を特定可能なコマンドであり、メダルの投入、または1枚BETスイッチ5、MAXBETスイッチ6が操作されて賭数が設定されたときに送信される。
内部当選コマンドは、内部当選状態(内部当選フラグ格納ワーク(iwin_flag)の設定状態)を特定可能なコマンドであり、スタートスイッチ7が操作されてゲームが開始したときに送信される。
リール回転開始コマンドは、リールの回転の開始を通知するコマンドであり、リール2L、2C、2Rの回転が開始されたときに送信される。
リール停止コマンドは、停止するリールが左リール、中リール、右リールのいずれかであるか、該当するリールの停止操作位置の領域番号、該当するリールの停止位置の領域番号、を特定可能なコマンドであり、各リールの停止制御が行われる毎に送信される。
入賞判定コマンドは、入賞の有無、並びに入賞の種類、入賞時のメダルの払出枚数を特定可能なコマンドであり、全リールが停止して入賞判定が行われた後に送信される。
遊技状態コマンドは、次ゲームの遊技状態(通常遊技状態であるか、ビッグボーナス中であるか、レギュラーボーナス中であるか、等)を特定可能なコマンドであり、ゲームの終了時に送信される。
待機コマンドは、待機状態へ移行する旨を示すコマンドであり、1ゲーム終了後、賭数が設定されずに一定時間経過して待機状態に移行するときに送信される。
これらコマンドは、後述する起動処理及びゲーム処理において生成され、RAM41cに設けられたコマンドキューに一時格納され、前述したタイマ割込処理において送信される。
次に、メイン制御部41のCPU41aが演出制御基板90に対して送信するコマンドに基づいてサブ制御部91が実行する演出の制御について説明する。
サブ制御部91のCPU91aは、メイン制御部41のCPU41aが送信したコマンドを受信した際に、ROM91bに格納された制御パターンテーブルを参照し、制御パターンテーブルに登録された制御内容に基づいて液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55等の各種演出装置の制御を行う。
制御パターンテーブルには、複数種類の演出パターン毎に、コマンドの種類に対応する液晶表示器51の表示パターン、演出効果LED52の点灯態様、スピーカ53、54の出力態様、リールLEDの点灯態様等、これら演出装置の制御パターンが登録されており、CPU91aは、コマンドを受信した際に、制御パターンテーブルの当該ゲームにおいてRAM91cに設定されている演出パターンに対応して登録された制御パターンのうち、受信したコマンドの種類に対応する制御パターンを参照し、当該制御パターンに基づいて演出装置の制御を行う。これにより演出パターン及び遊技の進行状況に応じた演出が実行されることとなる。
次に、本実施例におけるメイン制御部41のCPU41aが実行する各種制御内容を、図15〜図36に基づいて以下に説明する。
CPU41aは、リセット回路49からリセット信号が入力されると、図15のフローチャートに示す起動処理を行う。尚、リセット信号は、電源投入時及びメイン制御部41の動作が停滞した場合に出力される信号であるので、起動処理は、電源投入に伴うCPU41aの起動時及びCPU41aの不具合に伴う再起動時に行われる処理である。
起動処理では、まず、内蔵デバイスや周辺IC、割込モード、レジスタ等を初期化した後(Sa1)、入力ポートから電圧低下信号の検出データを取得し、電圧低下信号が入力されているか否か、すなわち電圧が安定しているか否かを判定し(Sa2)、電圧低下信号が入力されている場合には、電圧低下信号が入力されているか否かの判定以外は、いずれの処理も行わないループ処理に移行する。
Sa2のステップにおいて電圧低下信号が入力されていないと判定した場合には、Iレジスタ及びIYレジスタの値を初期化(初期値をそれぞれ格納する)する(Sa3)とともに、打止スイッチ36の状態を取得し、CPU41aの特定のレジスタに打止機能の有効/無効を設定する(Sa4)。Iレジスタ及びIYレジスタの初期化により、Iレジスタには、割込発生時に参照する割込テーブルのアドレスが格納され、IYレジスタには、RAM41cの格納領域を参照する際の基準アドレスが格納される。これらの値は、固定値であり、起動時には常に初期化されることとなる。
次いで、RAM41cへのアクセスを許可し(Sa5)、設定キースイッチ37がONの状態か否かを判定する(Sa6)。Sa6のステップにおいて設定キースイッチ37がONの状態でなければ、RAM41cの全ての格納領域(未使用領域及び未使用スタック領域を含む)のRAMパリティを計算し(Sa7)、RAMパリティが0か否かを判定する(Sa8)。正常に電断割込処理が行われていれば、RAMパリティが0になるはずであり、Sa8のステップにおいてRAMパリティが0でなければ、RAM41cに格納されているデータが正常ではないので、RAM異常を示すエラーコードをレジスタに格納し(Sa10)、図16に示すエラー処理に移行する。
また、Sa8のステップにおいてRAMパリティが0であれば、更に破壊診断用データが正常か否かを判定する(Sa9)。正常に電断割込処理が行われていれば、破壊診断用データが設定されているはずであり、Sa9のステップにおいて破壊診断用データが正常でない場合(破壊診断用データが電断時に格納される5AH以外の場合)にも、RAM41cのデータが正常ではないので、RAM異常を示すエラーコードをレジスタに格納し(Sa10)、図16に示すエラー処理に移行する。
エラー処理では、図16に示すように、現在の遊技補助表示器12の表示状態をスタックに退避し(Sb1)、レジスタに格納されているエラーコードを遊技補助表示器12に表示する(Sb2)。
次いで、レジスタに格納されているエラーコードを確認し、当該エラーコードがRAM異常エラーを示すエラーコードであるか否かを判定し(Sb3)、RAM異常エラーを示すエラーコードを示すエラーコードである場合には、RAM41cの格納領域のうち、使用中スタック領域を除く全ての格納領域を初期化する初期化1を行った後(Sb4)、いずれの処理も行わないループ処理に移行する。
また、Sb3のステップにおいて、RAM異常以外を示すエラーコードではないと判定された場合には、リセット/設定スイッチ38の操作が検出されているか否かを判定し(Sb5)、リセット/設定スイッチ38の操作が検出されていなければ、更にリセットスイッチ23の操作が検出されているか否かを判定し(Sb6)、リセットスイッチ23の操作も検出されていなければ、Sb4のステップに戻る。すなわちリセット/設定スイッチ38またはリセットスイッチ23の操作が検出されるまで、遊技の進行が不能な状態で待機する。
そして、Sb5のステップにおいてリセット/設定スイッチ38の操作が検出された場合、またはSb6のステップにおいてリセットスイッチ23の操作が検出された場合には、レジスタに格納されているエラーコードをクリア(00Hとする)し(Sb7)、遊技補助表示器12の表示状態をSb1のステップにおいてスタックに退避した表示状態に復帰させて(Sb8)、もとの処理に戻る。
このようにエラー処理においては、RAM異常エラー以外によるエラー処理であれば、リセット/設定スイッチ38またはリセットスイッチ23が操作されることで、エラー状態を解除してもとの処理に復帰するが、RAM異常エラーによるエラー処理であれば、リセット/設定スイッチ38またはリセットスイッチ23が操作されてもエラー状態が解除されることはない。
図15に戻り、Sa9のステップにおいて破壊診断用データが正常であると判定した場合には、RAM41cのデータは正常であるので、RAM41cの非保存ワーク、未使用領域及び未使用スタック領域を初期化する初期化3を行った後(Sa11)、破壊診断用データをクリアする(Sa12)。次いで、各レジスタを電断前の状態、すなわちスタックに待避している状態に復帰し(Sa13)、割込を許可して(Sa14)、電断前の最後に実行していた処理に戻る。
また、Sa6のステップにおいて設定キースイッチ37がONの状態であれば、RAM41cの格納領域のうち、使用中スタック領域を除く全ての格納領域を初期化する初期化1を実行した後(Sa15)、設定値ワークに格納されている値(この時点では0)を1に補正する(Sa16)。次いで、割込を許可して(Sa17)、図17に示す設定変更処理、すなわち設定変更モードに移行し(Sa18)、設定変更処理の終了後、ゲーム処理に移行する。
設定変更処理では、図17に示すように、RAM41cの設定値ワーク1に格納されている設定値(設定変更処理に移行する前に設定値ワーク1の値は1に補正されているので、ここでは1である)を読み出す(Sc1)。
その後、リセット/設定スイッチ38とスタートスイッチ7の操作の検出待ちの状態となり(Sc2、Sc3)、Sc2のステップにおいてリセット/設定スイッチ38の操作が検出されると、Sc1のステップにおいて読み出した設定値に1を加算し(Sc4)、加算後の設定値が7であるか否か、すなわち設定可能な範囲を超えたか否かを判定し(Sc5)、加算後の設定値が7でなければ、再びSc2、Sc3のステップにおけるリセット/設定スイッチ38とスタートスイッチ7の操作の検出待ちの状態に戻り、Sc5のステップにおいて加算後の設定値が7であれば設定値を1に補正した後(Sc6)、再びSc2、Sc3のステップにおけるリセット/設定スイッチ38とスタートスイッチ7の操作の検出待ちの状態に戻る。
また、Sc3のステップにおいてスタートスイッチ7の操作が検出されると、その時点で選択されている変更後の設定値をRAM41cの設定値ワーク1〜3の全てに格納して、設定値を確定した後(Sc7)、設定キースイッチ37がOFFの状態となるまで待機する(Sc8)。そして、Sc8のステップにおいて設定キースイッチ37のOFFが判定されると、図15のフローチャートに復帰し、ゲーム処理に移行することとなる。
このように起動処理においては、設定キースイッチ37がONの状態ではない場合に、RAMパリティが0であるか否か、破壊診断用データが正常であるか否かを判定することでRAM41cに記憶されているデータが正常か否かを判定し、RAM41cのデータが正常でなければ、異常エラー処理に移行する。RAM異常エラーによるエラー処理では、RAM異常エラーを示すエラーコードを遊技補助表示器12に表示させた後、いずれの処理も行わないループ処理に移行するので、ゲームの進行が不能化される。そして、RAM41cのデータが正常でなければ、割込が許可されることがないので、一度RAM異常エラーによるエラー処理に移行すると、設定キースイッチ37がONの状態で起動し、割込が許可されるまでは、電断しても電断割込処理は行われない。すなわち電断割込処理において新たにRAMパリティが0となるようにRAM調整用データが計算されて格納されることはなく、破壊診断用データが新たに設定されることもないので、CPU41aが再起動しても設定キースイッチ37がONの状態で起動した場合を除き、CPU41aを再起動させてもゲームを再開させることができないようになっている。
そして、RAM異常エラーによるエラー処理に一度移行すると、設定キースイッチ37がONの状態で起動し、RAM41cの使用中スタック領域を除く全ての領域が初期化された後、設定変更処理が行われ、リセット/設定スイッチ38の操作により新たに設定値が選択・設定されるまで、ゲームの進行が不能な状態となる。すなわちRAM異常エラーによるエラー処理に移行した状態では、リセット/設定スイッチ38の操作により新たに設定値が選択・設定されたことを条件に、ゲームの進行が不能な状態が解除され、ゲームを再開させることが可能となる。
図18は、CPU41aが実行するゲーム処理の制御内容を示すフローチャートである。
ゲーム処理では、BET処理(Sd1)、内部抽選処理(Sd2)、リール回転処理(Sd3)、入賞判定処理(Sd4)、払出処理(Sd5)、ゲーム終了時処理(Sd6)を順に実行し、ゲーム終了時処理が終了すると、再びBET処理に戻る。
Sd1のステップにおけるBET処理では、賭数を設定可能な状態で待機し、遊技状態に応じた規定数の賭数が設定され、スタートスイッチ7が操作された時点で賭数を確定する処理を実行する。
Sd2のステップにおける内部抽選処理では、Sd1のステップにおけるスタートスイッチ7の検出によるゲームスタートと同時に内部抽選用の乱数を抽出し、抽出した乱数の値に基づいて上記した各役への入賞を許容するか否かを決定する処理を行う。この内部抽選処理では、それぞれの抽選結果に基づいて当選フラグが設定される。
Sd3のステップにおけるリール回転処理では、各リール2L、2C、2Rを回転させる処理、遊技者によるストップスイッチ8L、8C、8Rの操作が検出されたことに応じて対応するリール2L、2C、2Rの回転を停止させる処理を実行する。
Sd4のステップにおける入賞判定処理では、Sd3のステップにおいて全てのリール2L、2C、2Rの回転が停止したと判定した時点で、各リール2L、2C、2Rに導出された表示結果に応じて入賞が発生したか否かを判定する処理を実行する。
Sd5のステップにおける払出処理では、Sd4のステップにおいて入賞の発生が判定された場合に、その入賞に応じた払出枚数に基づきクレジットの加算並びにメダルの払出等の処理を行う。
Sd6のステップにおけるゲーム終了時処理では、次のゲームに備えて遊技状態を設定する処理を実行する。
図19は、CPU41aがSd2のステップにおいて実行する内部抽選処理の制御内容を示すフローチャートである。
内部抽選処理では、乱数取得処理を行う(Sf1)。この乱数取得処理においては、乱数発生回路42が発生する乱数に基づいて、内部抽選用の乱数の値が取得されることとなる。
乱数取得処理では、図20に示すように、まず、割込を禁止する(Sf21)。次に、サンプリング回路43にサンプリング指令を出力し、乱数発生回路42が発生している乱数をラッチさせ、ラッチさせた乱数の値をI/Oポート41dから入力して、これを抽出する。乱数発生回路42から抽出された乱数の値は、HLレジスタに格納される(Sf22)。
次に、HLレジスタに格納された乱数の下位バイトの値と上位バイトの値を、Aレジスタを用いて互いに入れ替える(Sf23)。次に、HLレジスタに格納された乱数の値を8080hと論理和演算する(Sf24)。更に上位バイト(第15〜第8ビット)を1ビットずつ下位にシフトし、これによって空いた第15ビットに1を挿入する。このときにHLレジスタに格納された値が内部抽選用の乱数として取得される(Sf25)。そして、Sf21のステップで禁止した割込を許可してから(Sf26)、乱数取得処理を終了して、図19のフローチャートに復帰する。
図19に戻り、Sf2のステップにおける乱数取得処理の後、RAM41cの設定値ワーク1〜3に格納されている設定値をそれぞれを読み出し(Sf2)、読み出した設定値に基づいて抽選に用いる設定値、すなわち設定値ワーク1に格納されている設定値が適正か否かを判定する設定値判定処理を行う(Sf3)。
設定値判定処理では、図21に示すように、設定値判定処理1(Sf51)、設定値判定処理2(Sf52)、設定値判定処理3(Sf53)を順次実行する。
Sf51のステップにおける設定値判定処理1では、図22に示すように、設定値ワーク1から読み出した値が1〜6の範囲か否か、すなわち今回のゲームの内部抽選に用いる設定値が適正な範囲の値か否かを判定し(Sf61)、設定値ワーク1から読み出した値が1〜6の範囲の値でなければ、RAM異常を示すエラーコードをレジスタに格納し(Sf62)、図16に示すエラー処理に移行し、設定値ワーク1から読み出した値が1〜6の範囲の値であれば、Sf52のステップにおける設定値判定処理2に進む。
Sf52のステップにおける設定値判定処理2では、図23に示すように、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致するか否か、すなわち今回のゲームの内部抽選に用いる設定値と、前回の設定変更時に設定された設定値と、が一致するか否かを判定し(Sf71)、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致しなければ、RAM異常を示すエラーコードをレジスタに格納し(Sf72)、図16に示すエラー処理に移行し、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致すれば、Sf53のステップにおける設定値判定処理3に進む。
Sf53のステップにおける設定値判定処理3では、図24に示すように、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致するか否か、すなわち今回のゲームの内部抽選に用いる設定値と、前回のゲームの内部抽選に用いた設定値と、が一致するか否かを判定し(Sf81)、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致しなければ、RAM異常を示すエラーコードをレジスタに格納し(Sf82)、図16に示すエラー処理に移行し、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致すれば、図19に示すフローチャートに復帰する。
このように設定値判定処理においては、今回のゲームの内部抽選に用いる設定値が、適正な範囲の値であるか否か、今回のゲームの内部抽選に用いる設定値と前回の設定変更時に設定された設定値とが一致するか否か、今回のゲームの内部抽選に用いる設定値と前回のゲームの内部抽選に用いた設定値とが一致するか否か、をそれぞれ判定することにより、今回のゲームの内部抽選に用いる設定値が適正な値であるか否かを判定し、少なくともいずれか1つの判定において設定値が適正な値ではないと判定された場合には、前述したRAM異常エラーを示すレジスタに格納してエラー処理に移行し、起動時にRAM41cのデータが正常ではないと判定された場合と同様に、RAM異常エラーによるエラー状態となり、ゲームの進行が不能化されるようになっている。
図19に戻り、Sf2のステップにおける設定値判定処理において設定値が適正であれば、設定値ワーク3に格納されている値、すなわち前回のゲームにおいて抽選に用いた設定値を、設定値1に格納されている値、すなわち今回のゲームにおいて抽選に用いる設定値に更新する(Sf4)。
次いで、RAM41cにビッグボーナス中フラグ、レギュラーボーナス中フラグが設定されているか否かに基づいて、当該ゲームの遊技状態が通常遊技状態であるか否かを判定し(Sf5)、通常遊技状態である場合、すなわちビッグボーナス中フラグもレギュラーボーナス中フラグも設定されていない場合には、特別役一時格納ワーク(iwin_bonus)の値を参照して特別役が当選しているか否かを判定し、特別役が当選していなければ、通常遊技状態において対象となる特別役及び一般役が当選しているか否かをそれぞれ判定するとともに、特別役が当選している場合には、通常遊技状態において対象となる一般役のみ当選しているか否かを判定し、判定結果に応じて特別役一時格納ワーク(iwin_bonus)及び一般役一時格納ワーク(iwin_gen)のデータを更新する通常用抽選処理(A)を行う(Sf6)。
また、(Sf5)のステップにおいて当該ゲームの遊技状態が通常遊技状態でなければ、RAM41cにビッグボーナス中フラグ、レギュラーボーナス中フラグが設定されているか否かに基づいて、当該ゲームの遊技状態が小役ゲームであるか否かを判定し(Sf7)、当該ゲームの遊技状態が小役ゲームである場合、すなわちビッグボーナス中フラグは設定されているが、レギュラーボーナス中フラグが設定されていない場合には、特別役一時格納ワーク(iwin_bonus)の値を参照して特別役(レギュラーボーナス(2))が当選しているか否かを判定し、特別役が当選していなければ、小役ゲームにおいて対象となる特別役及び一般役が当選しているか否かをそれぞれ判定するとともに、特別役が当選している場合には、小役ゲームにおいて対象となる一般役のみ当選しているか否かを判定し、判定結果に応じて特別役一時格納ワーク(iwin_bonus)及び一般役一時格納ワーク(iwin_gen)のデータを更新する小役ゲーム用抽選処理(A)を行う(Sf8)。
また、(Sf7)のステップにおいて当該ゲームの遊技状態が小役ゲームでない場合、すなわち当該ゲームの遊技状態がレギュラーボーナスである場合(ビッグボーナス中フラグが設定されているか否かに関わらず、レギュラーボーナス中フラグが設定されている場合)には、レギュラーボーナスにおいて対象となる一般役が当選しているか否かを判定し、判定結果に応じて一般役一時格納ワーク(iwin_gen)のデータを更新するレギュラーボーナス用抽選処理(A)を行う(Sf9)。
以下に、通常用抽選処理(A)の詳細を図25及び図26に基づいて説明する。尚、通常用抽選処理(A)の実行開始時点においては、Aレジスタはクリア(00Hが格納)されており、HLレジスタには内部抽選用の乱数の値が格納されているものとする。
通常用抽選処理(A)では、図25に示すように、まずAレジスタと特別役一時格納ワーク(iwin_bonus)との論理和を算出してその結果をAレジスタに格納し(Sf101)、Sf102のステップに進む。
Sf102のステップでは、Aレジスタの値が0でないかを判定し、0でない場合にはSf115のステップにジャンプする。また、Aレジスタの値が0である場合にはSf103のステップに進む。
Sf103のステップでは、後述するBB(1)抽選確率取得処理{図26(a)参照}の実施に基づいてビッグボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf104のステップに進んで、ビッグボーナス(1)の役番号(01H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf105)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf132のステップにジャンプする(Sf106)。また、オーバーフローが生じなかった場合にはSf107のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(1)が当選した旨を示している。
Sf107のステップでは、後述するBB(2)抽選確率取得処理の実施に基づいてビッグボーナス(2)の判定値数を取得してDEレジスタに格納する。更に、Sf108のステップに進んで、ビッグボーナス(2)の役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(2)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf109)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf132のステップにジャンプする(Sf110)。また、オーバーフローが生じなかった場合にはSf111のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(2)が当選した旨を示している。
Sf111のステップでは、後述するRB(2)抽選確率取得処理の実施に基づいてレギュラーボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf112のステップに進んで、レギュラーボーナス(1)の役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているレギュラーボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf113)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf132のステップにジャンプする(Sf114)。また、オーバーフローが生じなかった場合にはSf115のステップに進む。尚、オーバーフローの発生は、レギュラーボーナス(1)が当選した旨を示している。
Sf115のステップでは、後述するチェリー抽選確率取得処理の実施に基づいてチェリーの判定値数をDEレジスタに格納する。更に、Sf116のステップに進んで、チェリーの役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているチェリーの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf117)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf134のステップにジャンプする(Sf118)。また、オーバーフローが生じなかった場合にはSf119のステップに進む。尚、オーバーフローの発生は、チェリーが当選した旨を示している。
Sf119のステップでは、後述するスイカ抽選確率取得処理の実施に基づいてスイカの判定値数をDEレジスタに格納する。更に、Sf120のステップに進んで、スイカの役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているスイカの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf121)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf134のステップにジャンプする(Sf122)。また、オーバーフローが生じなかった場合にはSf123のステップに進む。尚、オーバーフローの発生は、スイカが当選した旨を示している。
Sf123のステップでは、後述するベル抽選確率取得処理の実施に基づいてベルの判定値数をDEレジスタに格納する。更に、Sf124のステップに進んで、ベルの役番号(04H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているベルの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf125)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf134のステップにジャンプする(Sf126)。また、オーバーフローが生じなかった場合にはSf127のステップに進む。尚、オーバーフローの発生は、ベルが当選した旨を示している。
Sf127のステップでは、後述するリプレイ抽選確率取得処理の実施に基づいてリプレイの判定値数をDEレジスタに格納する。更に、Sf128のステップに進んで、リプレイの役番号(05H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているリプレイの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf129)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf134のステップにジャンプする(Sf130)。また、オーバーフローが生じなかった場合にはSf131のステップに進む。尚、オーバーフローの発生は、リプレイが当選した旨を示している。
Sf131のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれも当選しておらず、かつ一般役であるチェリー、スイカ、ベル、リプレイのいずれも当選しなかった場合に実行されるステップであり、何の処理も行わずにSf134のステップにジャンプする。
Sf132のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した場合のジャンプ先であり、Sf104、Sf108、Sf112のステップにおいてAレジスタに格納された特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納した後、Sf133のステップに進む。
Sf133のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれも当選しなかった場合のジャンプ先であり、Aレジスタの値をクリア{Aレジスタに00Hを格納}した後、Sf134のステップに進む。
Sf134のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれかが当選した場合のジャンプ先であり、Sf116、Sf120、Sf124、Sf128のステップにおいてAレジスタに格納された一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納した後、通常用抽選処理(A)を終了する。
以上のように通常用抽選処理(A)は、主に4つの処理ブロックから形成されている。
1つ目の処理ブロックは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)の持越に関するSf101〜Sf102のステップにより形成される。これらステップでは、予め00Hが格納されているAレジスタの値と特別役一時格納ワーク(iwin_bonus)の値との論理和が0以外となり、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)の当選フラグが前回以前のゲームで既に設定され、当該当選フラグに基づいて入賞することなく持ち越されている場合には、特別役の内部抽選を行うSf103〜Sf114のステップを行わずに、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf115〜Sf130のステップにジャンプするようになっている。また、論理和が0となり、特別役の当選フラグが持ち越されていない場合には、特別役の内部抽選を行うSf103〜Sf114のステップに進むようになっている。
2つ目の処理ブロックは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)の内部抽選を行うSf103〜Sf114のステップにより形成される。これらステップでは、特別役のいずれかが当選した場合には、特別役が当選した旨の処理を行うSf132〜Sf134のステップにジャンプするようになっている。また、特別役のいずれも当選しなかった場合には、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf115〜Sf130のステップに進むようになっている。
3つ目の処理ブロックは、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf115〜Sf130のステップにより形成される。これらステップでは、一般役のいずれかが当選した場合には、一般役が当選した旨の処理を行うSf134のステップにジャンプするようになっている。また、一般役のいずれも当選しなかった場合には、ハズレを設定するための処理であるSf133〜Sf134のステップにジャンプするようになっている。
4つ目の処理ブロックは、内部抽選の結果を設定するSf132〜Sf134のステップにより形成される。これらステップでは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した旨や、一般役であるチェリー、スイカ、ベル、リプレイのいずれかが当選した旨や、もしくはハズレとなった旨が設定されるようになっている。
図26(a)は前述の通常用抽選処理(A)を構成するBB(1)抽選確率取得処理{図25のSf103のステップ参照}の処理の流れを示すフローチャートである。
CPU41aは、まず図4(a)の遊技状態別当選役テーブルに登録されているビッグボーナス(1)の役コードである01HをAレジスタに格納する(Sf201)。そして、図26(b)に示す抽選確率取得共通処理を実施することで(Sf202)、BB(1)抽選確率取得処理を終了する。
図26(b)は前述のBB(1)抽選確率取得処理を構成する抽選確率取得共通処理{図26(a)のSf202のステップ参照}の処理の流れを示すフローチャートである。
CPU41aは、まずAレジスタに格納されている役コード{図4(a)参照}を読み出して処理対象とする役を特定し(Sf301)、Sf302のステップに進む。
Sf302のステップでは、Sd1のステップで設定されたBET数を読み出して、BET数が3であるかを判定し、BET数が3である場合にはSf303のステップに進む。また、BET数が3でない場合、すなわちBET数が1の場合にはSf306のステップにジャンプする。
Sf303のステップでは、処理対象とする役と読み出したBET数である3に対応付けて、図4(b)の役別テーブルに登録されている共通フラグを特定し、BET数が3であるときの共通フラグが1であるかを判定する。そして、共通フラグが1である場合にはSf304のステップに進む。また、共通フラグが1でない場合にはSf305のステップにジャンプする。
Sf304のステップでは、まず、処理対象とする役に対応付けて図4(b)の役別テーブルに登録されているROM41bの判定値数の格納領域のアドレスを読み出す。そして、このアドレスに格納されている判定値数を取得し、取得した判定値数をDEレジスタに格納して、抽選確率取得共通処理を終了する。
Sf305のステップは、Sf303のステップにおいて共通フラグが1でない場合のジャンプ先であり、まず、RAM41cの設定値ワークに格納されている設定値を読み出し、更に、処理対象とする役と読み出した設定値に対応付けて、図4(b)の役別テーブルに登録されているROM41bの判定値数の格納領域のアドレスを読み出す。そして、このアドレスに格納されている判定値数を取得し、取得した判定値数をDEレジスタに格納して、抽選確率取得共通処理を終了する。
Sf306のステップは、Sf302のステップにおいてBET数が3でない場合、すなわちBET数が1である場合のジャンプ先であり、まず、処理対象とする役と読み出したBET数である1に対応付けて、図4(b)の役別テーブルに登録されている共通フラグを特定し、BET数が1であるときの共通フラグが1であるかを判定する。そして、共通フラグが1である場合にはSf307のステップに進む。また、共通フラグが1でない場合にはSf308のステップにジャンプする。
Sf307のステップでは、まず、処理対象とする役に対応付けて図4(b)の役別テーブルに登録されているROM41bの判定値数の格納領域のアドレスを読み出す。そして、このアドレスに格納されている判定値数を取得し、取得した判定値数をDEレジスタに格納して、抽選確率取得共通処理を終了する。
Sf308のステップは、Sf306のステップにおいて共通フラグが1でない場合のジャンプ先であり、まず、RAM41cの設定値ワークに格納されている設定値を読み出し、更に、処理対象とする役と読み出した設定値に対応付けて、図4(b)の役別テーブルに登録されているROM41bの判定値数の格納領域のアドレスを読み出す。そして、このアドレスに格納されている判定値数を取得し、取得した判定値数をDEレジスタに格納して、抽選確率取得共通処理を終了する。
以上のように抽選確率取得共通処理によれば、例えば、処理対象とする役がビッグボーナス(1)で、設定値が4である場合には、これら役と設定値に対応付けて、図4(b)の役別テーブルに登録されているROM41bの判定値数の格納領域のアドレスとしてADD+6を読み出す。これはROM41bに設定されているADDという基準アドレスに6を加算したアドレスを意味しており、図5に示すように、このアドレスに格納されている36が判定値数として取得されて、DEレジスタに格納される。
また、抽選確率取得共通処理{図26(b)参照}は特定の役に依存した処理を含まず、全ての役に対して処理内容が共通化されている。このため前述したBB(1)抽選確率取得処理{図26(a)参照}と同様に、第1のステップにおいて、図4(a)の遊技状態別当選役テーブルに登録されている処理対象とする役に該当する役コードをAレジスタに格納した後、第2のステップにおいて、抽選確率取得共通処理{図26(b)参照}が実施されることで、ビッグボーナス(2)抽選確率取得処理、レギュラーボーナス(1)抽選確率取得処理、チェリー抽選確率取得処理、スイカ抽選確率取得処理、ベル抽選確率取得処理、リプレイ抽選確率取得処理が構成されることとなる。
また、上記では、Sf6のステップにおける通常用抽選処理(A)について説明したが、Sf8のステップにおける小役ゲーム用抽選処理(A)、Sf9におけるレギュラーボーナス用抽選処理(A)においても、該当する遊技状態において対象となる役について当選しているか否かの判定が行われ、その判定結果に基づいて特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)のデータを更新する処理が、通常用抽選処理(A)と同様な処理にて行われるようになっている。尚、レギュラーボーナスにおいて特別役は抽選の対象とならないので、レギュラーボーナス用抽選処理(A)においては、特別役の持ち越しに関する処理は行われず、対象となる小役についてのみ当選しているか否かの判定を行い、その判定結果に基づいて一般役一時格納ワーク(iwin_gen)のデータを更新する処理のみが行われることとなる。
図19に戻り、Sf6のステップにおける通常用抽選処理(A)、Sf8の小役ゲーム用抽選処理(A)またはSf9のレギュラーボーナス用抽選処理(A)の後、特別役一時格納ワーク(iwin_bonus)の値(特別役の役番号または00H)をAレジスタに読み出す(Sf10)。そして、Aレジスタに読み出した値の下位4ビットの値を上位4ビットにシフトし(Sf11)、Aレジスタの値に一般役一時格納ワーク(iwin_gen)の値(一般役の役番号または00H)を加算した後(Sf12)、Aレジスタの値を内部当選フラグ格納ワーク(iwin_flag)に格納し(Sf13)、内部抽選処理を終了して、図18に示すフローチャートに復帰する。
Sf11のステップでは、特別役一時格納ワーク(iwin_bonus)に格納されている特別役の役番号または00Hの下位4ビットが上位4ビットにシフトし、Sf12のステップでは、Sf11のステップによって空いた下位4ビットに、一般役一時格納ワーク(iwin_gen)に格納されている一般役の役番号または00Hの下位4ビットが挿入されることとあり、このようにして得られた値が、内部当選フラグ格納ワーク(iwin_flag)に格納されることで、内部当選フラグ格納ワーク(iwin_flag)の上位4ビットにおける特別役格納領域に特別役の当選フラグまたはハズレを示す値が格納され、内部当選フラグ格納ワーク(iwin_flag)の下位4ビットにおける一般役格納領域に一般役の当選フラグまたはハズレを示す値が格納されることとなる。
図27は、CPU41aがSd4のステップにおいて実行する入賞判定処理の制御内容を示すフローチャートである。
入賞判定処理では、まず、現在の遊技状態に対応して定められた役を順番に読み出し(Sh1)、読み出した役の組み合わせが入賞ライン上に揃っているか否かを判定する(Sh2)。そして読み出した役の組み合わせが入賞ライン上に揃っていなければ、Sh4のステップに進み、読み出した役の組み合わせが入賞ライン上に揃っていれば、その役が入賞した旨を示す入賞フラグをRAM41cに設定した後(Sh3)、Sh4のステップに進む。
Sh4のステップでは、現在の遊技状態について対象として定められた役のうちで未だ処理対象としていない役があるかどうかを判定する。未だ処理対象としていない役があれば、Sh1のステップに戻り、次の役を処理対象として処理を継続する。処理対象としていない役がなければ、入賞フラグを参照し、リプレイが入賞したか否かを判定し(Sh5)、リプレイが入賞していなければ、Sh7のステップに進み、リプレイが入賞していれば、リプレイゲーム中である旨を示すリプレイゲーム中フラグをRAM41cに設定し(Sh6)、Sh7のステップに進む。
Sh7のステップでは、入賞フラグを参照し、ビッグボーナス(1)またはビッグボーナス(2)が入賞したか否かを判定し、ビッグボーナス(1)もビッグボーナス(2)も入賞していなければSh10のステップに進み、ビッグボーナス(1)またはビッグボーナス(2)が入賞していれば、ビッグボーナス中である旨を示すビッグボーナス中フラグをRAM41cに設定するとともに、特別役一時格納ワーク(iwin_bonus)の値をクリア(00Hを格納)する(Sh8)。すなわちビッグボーナス(1)またはビッグボーナス(2)の当選フラグをクリアする。そして、RAM41cにおいてビッグボーナス中のメダルの払出総数が格納されるビッグボーナス中払出数カウンタの値を初期化(0とする)し(Sh9)、Sh10のステップに進む。
Sh10のステップでは、入賞フラグを参照し、レギュラーボーナス(1)、レギュラーボーナス(2)またはJACINが入賞したか否かを判定し、レギュラーボーナス(1)もレギュラーボーナス(2)もJACINも入賞していなければ、入賞判定処理を終了して、図18のフローチャートに復帰する。レギュラーボーナス(1)、レギュラーボーナス(2)またはJACINが入賞していれば、レギュラーボーナス中である旨を示すレギュラーボーナス中フラグをRAM41cに設定するとともに、特別役一時格納ワーク(iwin_bonus)の値をクリア(00Hを格納)する(Sh11)。すなわちレギュラーボーナス(1)、レギュラーボーナス(2)またはJACINの当選フラグをクリアする。そして、RAM41cにおいてレギュラーボーナスのゲーム数が格納されるレギュラーボーナスゲーム数カウンタの値及びレギュラーボーナス中の入賞回数が格納されるレギュラーボーナス中入賞カウンタの値を初期化(それぞれ0とする)した後(Sh12)、入賞判定処理を終了して、図18のフローチャートに復帰する。
図28は、CPU41aがSd6のステップにおいて実行するゲーム終了時処理の制御内容を示すフローチャートである。
ゲーム終了時処理では、まず、RAM41cにビッグボーナス中フラグ、レギュラーボーナス中フラグが設定されているか否かに基づいて現在の遊技状態がビッグボーナス中、またはレギュラーボーナス中であるか否かを判定し(Si1)、ビッグボーナス中でもレギュラーボーナス中でもなければ、Si3のステップに進み、ビッグボーナス中、またはレギュラーボーナス中であれば、ボーナス中に用いる各種カウンタ(前述したビッグボーナス中払出数カウンタ、レギュラーボーナスゲーム数カウンタ、レギュラーボーナス中入賞カウンタ)の値を更新し(Si2)、Si3のステップに進む。
Si3のステップでは、RAM41cにリプレイゲーム中フラグが設定されているか否かに基づいて当該ゲームがリプレイゲームであったか否かを判定し、リプレイゲームでなければSi5のステップに進み、リプレイゲームであったならば、リプレイゲーム中フラグをクリアし(Si4)、Si5のステップに進む。
Si5のステップでは、現在の遊技状態がビッグボーナス中か否かを判定し、ビッグボーナス中であれば、更にビッグボーナスの終了条件が成立したか否か、すなわちビッグボーナス中の払出総数が466枚以上となったか否か、を判定し(Si6)、Si5のステップでビッグボーナス中ではない場合、またはSi6のステップにおいてビッグボーナスの終了条件が成立していなければ、Si8のステップに進み、Si6のステップにおいてビッグボーナスの終了条件が成立していれば、RAM41cの内部当選フラグ格納ワーク(iwin_flag)、未使用領域及び未使用スタック領域に加えて一般ワークを初期化する初期化2を行った後(Si7)、Si8のステップに進む。尚、一般ワークには、ビッグボーナス中フラグも設定されているため、Si9のステップにおいてビッグボーナス中フラグもクリアされることとなる。
Si8のステップでは、現在の遊技状態がレギュラーボーナス中であるか否かを判定し、レギュラーボーナス中であれば、更に当該レギュラーボーナスの終了条件が成立したか否か、すなわちレギュラーボーナスのゲーム数が12ゲームに到達するか、レギュラーボーナス中の入賞回数が8回に到達するか、また、ビッグボーナス中に提供されたレギュラーボーナスであれば、ビッグボーナス中の払出総数が466枚以上となったか否か、を判定し(Si9)、Si8のステップでレギュラーボーナス中ではない場合、またはSi9のステップにおいてレギュラーボーナスの終了条件が成立していなければ、Si11のステップに進み、Si9のステップにおいてレギュラーボーナスの終了条件が成立していれば、RAM41cに設定されているレギュラーボーナス中フラグをクリアし(Si10)、Si11のステップに進む。
Si11のステップでは、RAM41cにビッグボーナス中フラグが設定されているか否かに基づいて次ゲームの遊技状態がレギュラーボーナスであるか否かを判定し、次ゲームの遊技状態がレギュラーボーナスであれば、RAM41cに設定されている賭数の規定値、すなわちゲームが開始可能となる賭数の値を1とし(Si12)、Si16のステップに進む。Si11noステップにおいて、次ゲームの遊技状態がレギュラーボーナスでない場合、すなわち次ゲームが通常遊技状態またはビッグボーナス中の小役ゲームである場合には、RAM41cに設定されている賭数の規定値を3とし(Si13)、Si14のステップに進む。
Si16のステップでは、RAM41cの内部当選フラグ格納ワーク(iwin_flag)、未使用領域及び未使用スタック領域を初期化する初期化4を行い、ゲーム終了時処理を終了して、図18に示すフローチャートに復帰する。
図29及び図30は、CPU41aが割込3の発生に応じて、すなわち0.56msの間隔で起動処理やゲーム処理に割り込んで実行するタイマ割込処理の制御内容を示すフローチャートである。
タイマ割込処理においては、まず、割込を禁止する(Sj1)。すなわち、タイマ割込処理の実行中に他の割込処理が実行されることを禁止する。そして、使用中のレジスタをスタック領域に退避する(Sj2)。
次いで、4種類のタイマ割込1〜4から当該タイマ割込処理において実行すべきタイマ割込を識別するための分岐用カウンタを1進める(Sj3)。Sj3のステップでは、分岐用カウンタ値が0〜2の場合に1が加算され、カウンタ値が3の場合に0に更新される。すなわち分岐用カウンタ値は、タイマ割込処理が実行される毎に、0→1→2→3→0・・・の順番でループする。
次いで、分岐用カウンタ値を参照して2または3か、すなわちタイマ割込3またはタイマ割込4かを判定し(Sj4)、タイマ割込3またはタイマ割込4ではない場合、すなわちタイマ割込1またはタイマ割込2の場合には、リールモータ32L、32C、32Rの始動時または定速回転中か否かを確認し、リールモータ32L、32C、32Rの始動時または定速回転中であれば、後述するSj8のモータステップ処理において変更した位相信号データや後述するSj23の最終停止処理において変更した位相信号データを出力するモータ位相信号出力処理を実行する(Sj5)。
次いで、分起用カウンタ値を参照して1か否か、すなわちタイマ割込2か否かを判定し(Sj6)、タイマ割込2ではない場合、すなわちタイマ割込1の場合には、リールモータ32L、32C、32Rの始動時のステップ時間間隔の制御を行うリール始動処理(Sj7)、リールモータ32L、32C、32Rの位相信号データの変更を行うモータステップ処理(Sj8)、リールモータ32L、32C、32Rの停止後、一定時間経過後に位相信号を1相励磁に変更するモータ位相信号スタンバイ処理(Sj9)を順次実行した後、Sj2においてスタック領域に退避したレジスタを復帰し(Sj20)、Sj1のステップにおいて禁止した割込を許可して(Sj21)、割込前の処理に戻る。
また、Sj6のステップにおいてタイマ割込2の場合には、各種表示器をダイナミック点灯させるLEDダイナミック表示処理(Sj10)、各種LED等の点灯信号等のデータを出力ポートへ出力する制御信号等出力処理(Sj11)、各種ソフトウェア乱数を更新する乱数更新処理(Sj12)、各種時間カウンタを更新する時間カウンタ更新処理(Sj13)、コマンドキューに格納されたコマンドを演出制御基板90に対して送信するコマンド送信処理(Sj14)、外部出力信号を更新する外部出力信号更新処理(Sj15)を順次実行した後、Sj2においてスタック領域に退避したレジスタを復帰し(Sj20)、Sj1のステップにおいて禁止した割込を許可して(Sj21)、割込前の処理に戻る。
また、Sj4のステップにおいてタイマ割込3またはタイマ割込4であれば、更に、分起用カウンタ値を参照して3か否か、すなわちタイマ割込4か否かを判定し(Sj16)、タイマ割込4でなければ、すなわちタイマ割込3であれば、入力ポートから各種スイッチ類の検出データを入力するポート入力処理(Sj17)、回転中のリール2L、2C、2Rの原点通過(リール基準位置の通過)をチェックし、リール回転エラーの発生を検知するとともに、停止準備完了時の初期化コードが設定されているかを確認し、停止準備完了時の初期化コードが設定されており、かつ定速回転中であれば、回転中のリールに対応するストップスイッチの操作を有効化する処理を行う原点通過時処理(Sj18)、各種スイッチ類の検出信号に基づいてこれら各種スイッチが検出条件を満たしているか否かを判定するスイッチ入力判定処理(Sj19)を順次実行した後、Sj2においてスタック領域に退避したレジスタを復帰し(Sj20)、Sj1のステップにおいて禁止した割込を許可して(Sj21)、割込前の処理に戻る。
また、Sj16のステップにおいてタイマ割込4であれば、ストップスイッチ8L、8C、8Rの検出が判定されたときに、停止操作位置から停止位置を決定し、何ステップ後に停止すれば良いかを算出する停止スイッチ処理(Sj22)、停止スイッチ処理で算出された停止までのステップ数をカウントして、停止する時期になったら2相励磁によるブレーキを開始する停止処理(Sj23)、停止処理においてブレーキを開始してから一定時間後に3相励磁とする最終停止処理(Sj24)を順次実行した後、Sj2においてスタック領域に退避したレジスタを復帰し(Sj20)、Sj1のステップにおいて禁止した割込を許可して(Sj21)、割込前の処理に戻る。
図31は、CPU41aが割込2の発生に応じて、すなわち電断検出回路48からの電圧低下信号が入力されたときに起動処理やゲーム処理に割り込んで実行する電断割込処理の制御内容を示すフローチャートである。
電断割込処理においては、まず、割込を禁止する(Sk1)。すなわち電断割込処理の開始にともなってその他の割込処理が実行されることを禁止する。次いで、使用している可能性がある全てのレジスタをスタック領域に退避する(Sk2)。尚、前述したIレジスタ及びIYレジスタの値は使用されているが、起動時の初期化に伴って常に同一の固定値が設定されるため、ここでは保存されない。
次いで、入力ポートから電圧低下信号の検出データを取得し、電圧低下信号が入力されているか否かを判定する(Sk3)。この際、電圧低下信号が入力されていなければ、Sk2においてスタック領域に退避したレジスタを復帰し(Sk4)、Sk1のステップにおいて禁止した割込を許可して(Sk5)、割込前の処理に戻る。
また、Sk3のステップにおいて電圧低下信号が入力されていれば、破壊診断用データ(本実施例では、5AH)をセットして(Sk6)、全ての出力ポートを初期化する(Sk7)。次いでRAM41cの全ての格納領域(未使用領域及び未使用スタック領域を含む)の排他的論理和が0になるようにRAMパリティ調整用データを計算してセットし(Sk8)、RAM41cへのアクセスを禁止する(Sk9)。
そして、電圧低下信号が入力されているか否かの判定(Sk10、尚、Sk10は、Sk3と同様の処理である)を除いて、何らの処理も行わないループ処理に入る。すなわち、そのまま電圧が低下すると内部的に動作停止状態になる。よって、電断時に確実にCPU41aは動作停止する。また、このループ処理において、電圧が回復し、電圧低下信号が入力されない状態となると、前述した起動処理が実行され、RAMパリティが0となり、かつ破壊診断用データが正常であれば、元の処理に復帰することとなる。
尚、本実施例では、RAM41cへのアクセスを禁止した後、電圧低下信号の出力状況を監視して、電圧低下信号が入力されなくなった場合に電圧の回復を判定し、起動処理へ移行するようになっているが、ループ処理において何らの処理も行わず、ループ処理が行われている間に、電圧が回復し、リセット回路49からリセット信号が入力されたことに基づいて、起動処理へ移行するようにしても良い。
次に、CPU41aが初期化条件の成立に応じて実行する初期化1〜4の制御内容を図32〜図36のフローチャートに基づいて説明する。
図32は、CPU41aが起動処理において設定変更モードへの移行前に実行する初期化1の制御内容を示すフローチャートである。
初期化1では、まず、ROM41bの初期化テーブルを参照し、初期化1に対応して登録されている開始アドレスと初期化サイズを読み出す(Sm1)。読み出した開始アドレス(7E00H)にポインタをセットする(Sm2)。次いで、未使用スタック領域のサイズ(M=スタックポインタ−7FD2H)を計算し(Sm3)、初期化する領域のバイト数(1DMH+M)をセットする(Sm4)。そして、Sm2でセットされた開始アドレスからSm4でセットされたバイト数にわたりデータをクリアするRAMクリア処理を実行し(Sm5)、RAMクリア処理が終了すると、初期化1を終了してもとの処理に復帰する。
図33は、図32のSm5のステップにおいて実行するRAMクリア処理の制御内容を示すフローチャートである。
RAMクリア処理では、ポインタが示すアドレスが示す1バイトのデータを0クリアし(Sn1)、初期化バイト数(初期化する領域としてセットされたバイト数)を1減算する(Sn2)。次いで、減算後の初期化バイト数が0となったか否か、すなわち指定されたバイト数全ての初期化が終了したか否かを判定する(Sn3)。減算後の初期化バイト数が0でなければ、ポインタを1進めて(Sn4)、Sn1の処理に戻り、初期化バイト数が0となるまでSn1〜4の処理を繰り返し行う。そして、Sn3のステップにおいて減算後の初期化バイト数が0であれば、指定されたバイト数全ての初期化が終了したこととなるので、RAMクリア処理を終了し、もとの処理に復帰する。
図34は、CPU41aがSd7のゲーム終了時処理においてビッグボーナス終了時に実行する初期化2の制御内容を示すフローチャートである。
初期化2では、まず、割込を禁止した後(Sp1)、ROM41bの初期化テーブルを参照し、初期化2に対応して登録されている開始アドレスと初期化サイズを読み出す(Sp2)。初期化2には、2つの開始アドレス及びそれぞれに対応する初期化サイズが登録されているので、読み出した開始アドレスのうち最初に初期化する領域の開始アドレス(7E28H)にポインタをセットし(Sp3)、最初に初期化する領域のバイト数(67H)をセットし(Sp4)、Sp3でセットされた開始アドレスからSp4でセットされたバイト数にわたりデータをクリアするRAMクリア処理(図32参照)を実行する(Sp5)。RAMクリア処理が終了すると、読み出した開始アドレスのうち2番目に初期化する領域の開始アドレス(7EBAH)にポインタをセットし(Sp6)、未使用スタック領域のサイズ(M=スタックポインタ−7FD2H)を計算し(Sp7)、2番目に初期化する領域のバイト数(118H+M)をセットする(Sp8)。そして、Sp6でセットされた開始アドレスからSp8でセットされたバイト数にわたりデータをクリアするRAMクリア処理(図32参照)を実行し(Sp9)、RAMクリア処理が終了すると、Sp1のステップにおいて禁止していた割込を許可し(Sp10)、初期化2を終了してもとの処理に復帰する。
図35は、CPU41aが起動処理においてRAM41cのデータが正常である場合に実行する初期化3の制御内容を示すフローチャートである。
初期化3では、まず、ROM41bの初期化テーブルを参照し、初期化3に対応して登録されている開始アドレスと初期化サイズを読み出す(Sq1)。初期化3には、2つの開始アドレス及びそれぞれに対応する初期化サイズが登録されているので、読み出した開始アドレスのうち最初に初期化する領域の開始アドレス(7EB7H)にポインタをセットし(Sq2)、最初に初期化する領域のバイト数(3H)をセットし(Sq3)、Sq2でセットされた開始アドレスからSq3でセットされたバイト数にわたりデータをクリアするRAMクリア処理(図32参照)を実行する(Sq4)。RAMクリア処理が終了すると、読み出した開始アドレスのうち2番目に初期化する領域の開始アドレス(7F05H)にポインタをセットし(Sq5)、未使用スタック領域のサイズ(M=スタックポインタ−7FD2H)を計算し(Sq6)、2番目に初期化する領域のバイト数(CDH+M)をセットする(Sq7)。そして、Sq5でセットされた開始アドレスからSq7でセットされたバイト数にわたりデータをクリアするRAMクリア処理(図32参照)を実行し(Sq8)、RAMクリア処理が終了すると、初期化3を終了してもとの処理に復帰する。
図36は、CPU41aがSd7のゲーム終了時処理において各ゲーム毎に実行する初期化4の制御内容を示すフローチャートである。
初期化4では、まず、割込を禁止した後(Sr1)、ROM41bの初期化テーブルを参照し、初期化4に対応して登録されている開始アドレスと初期化サイズを読み出す(Sr2)。読み出した開始アドレス(7F04H)にポインタをセットする(Sr3)。次いで、未使用スタック領域のサイズ(M=スタックポインタ−7FD2H)を計算し(Sr4)、初期化する領域のバイト数(CEH+M)をセットする(Sr5)。そして、Sr3でセットされた開始アドレスからSr5でセットされたバイト数にわたりデータをクリアするRAMクリア処理(図32参照)を実行し(Sr6)、RAMクリア処理が終了すると、Sr1のステップにおいて禁止していた割込を許可し(Sr7)、初期化4を終了してもとの処理に復帰する。
以上説明したように、本実施例のスロットマシンでは、内部抽選で当選した役の当選フラグを格納する内部当選フラグ格納ワーク(iwin_flag)が、特別役の当選フラグが設定される特別役領域と、一般役の当選フラグが設定される一般役領域と、から構成されている。一般役領域は、1ゲーム毎に行われる内部抽選が実行される毎に、その結果に基づいて更新される一般役一時格納ワーク(iwin_gen)の値に基づくデータ(一般役の当選フラグまたはハズレを示す0H)が1ゲーム毎に格納される。すなわち一般役に当選していれば、その当選した一般役の当選フラグが格納され、一般役が当選していなければ、一般役のハズレを示す0Hが格納される。
これに対して、特別役領域は、特別役が当選したとき、または特別役が入賞したときのみ更新される特別役一時格納ワーク(iwin_bonus)の値に基づくデータが格納される。すなわち特別役が当選したゲームでは、その当選した特別役の当選フラグ(前回のゲームと異なるデータ)が格納され、特別役が入賞したゲームでは、特別役のハズレを示す0H(前回のゲームと異なるデータ)が格納されるのに対して、特別役が当選していないゲームでは、前回と同じデータが格納される。このため、特別役が持ち越されていない状態(特別役領域の値が0Hの状態)で、特別役が当選していない場合には、特別役領域の値として前回のゲームと同じ0Hが格納され、特別役が持ち越されている状態(特別役領域の値が1〜4H(5HはJACINを示すものであり持ち越されることはない)の状態)では、特別役領域の値として前回のゲームと同じ1〜4Hが格納されることとなる。
これにより、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域及び一般役領域が、ともに1ゲーム毎に初期化されるRAM41cの領域に連続して割り当てられており、内部当選フラグ格納ワーク(iwin_flag)の特別役領域及び一般役領域が1ゲーム毎に初期化される場合でも、一般役領域の記憶状態(一般役の当選フラグの設定状態)は、次のゲームでは無効となり、特別役領域の記憶状態(特別役の当選フラグの設定状態)は、次のゲームに持ち越すことができるようになっている。
また、内部当選フラグ格納ワーク(iwin_flag)は、1ゲーム終了時に行われる初期化4により初期化されるようになっている。すなわちRAM41cにおいて1ゲーム毎に初期化される領域に対して、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域と一般役領域とが連続して割り当てられれている。このため、RAM41cにおける特別役領域及び一般役領域の位置を把握することが簡単であり、新機種の開発が容易となる。
また、本実施例では、RAM41cにおいて1ゲーム毎に初期化される領域に、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域と一般役領域とが連続して割り当てられれており、これら特別役領域と一般役領域とが連続して割り当てられていることにより、RAM41cにおける特別役領域及び一般役領域の位置を把握することが一層容易となるうえに、CPU41aがRAM41cの特別役領域と一般役領域を初期化する際には、特別役領域、一般役領域毎に初期化するのではなく、指定したアドレスから指定したサイズ分の領域を初期化するのみで、特別役領域及び一般役領域を一括して初期化することが可能となる。
更に、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域と一般役領域及び1ゲーム毎に初期化される未使用領域及び未使用スタック領域が連続して割り当てられているため、指定したアドレスから指定したサイズ分の領域を初期化するのみで、1ゲーム毎に初期化される特別役領域、一般役領域、未使用領域及び未使用スタック領域を一括して初期化することが可能となる。
尚、本実施例では、RAM41cにおいて1ゲーム毎に初期化される領域に、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域と一般役領域とが連続して割り当てられれているが、少なくとも内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域と一般領域とがRAM41cにおいて1ゲーム毎に初期化される領域に割り当てられるものであれば良く、この場合であっても、特別役領域が1ゲーム毎に初期化されることのない領域に割り当てられ、一般役領域が1ゲーム毎に初期化される領域に割り当てられる場合と比較すると、RAM41cにおける特別役領域及び一般役領域の位置を把握することが簡単である。
また、本実施例では、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域及び一般役領域が、1ゲーム毎に実行される初期化1によって未使用領域や未使用スタック領域とともに初期化されるようになっているが、内部当選フラグ格納ワーク(iwin_flag)を構成する特別役領域及び一般役領域を、未使用領域や未使用スタック領域を初期化する処理とは別個の処理によって、1ゲーム毎に初期化するようにしても良い。
また、本実施例では、RAM41cに内部当選フラグ格納ワーク(iwin_flag)とは別に、一般役の抽選結果が一時的に記憶される一般役一時格納ワーク(iwin_gen)と、特別役の抽選結果が一時的に記憶される特別役一時格納ワーク(iwin_bonus)と、が割り当てられており、一般役一時格納ワーク(iwin_gen)には、内部抽選が行われる毎に、その抽選結果(一般役が当選している場合には、その役番号、当選していない場合には、00H)が格納される。これに対して、特別役一時格納ワーク(iwin_bonus)は、内部抽選で特別役に当選した場合に、当選した特別役の役番号が格納され、ここで格納された役番号は、当該役番号が示す特別役が入賞するまで維持されるようになっている。
このため、特別役一時格納ワーク(iwin_bonus)に格納されている値と、一般役一時格納ワーク(iwin_gen)に格納されている値と、に基づいて1ゲーム毎に内部当選フラグ格納ワーク(iwin_flag)の値を新たに格納すれば良く、例えば、特別役の当選フラグが設定されているゲームでは、内部当選フラグ格納ワーク(iwin_flag)のうち一般役領域のみ新たな値を格納し、特別役の当選フラグが設定されていないゲームでは、内部当選フラグ格納ワーク(iwin_flag)における特別役領域及び一般役領域の双方に新たな値を格納するなど、各ゲームにおいて特別役の当選フラグが設定されているか否かの状況、すなわち特別役の当選フラグが持ち越されているか否かの状況別に、内部当選フラグ格納ワーク(iwin_flag)の更新の仕方を変更する必要がなく、内部当選フラグ格納ワーク(iwin_flag)を毎ゲーム同じ方法で更新することができるので、内部抽選に伴うCPU41aの処理負荷を軽減できるうえに、内部当選フラグ格納ワーク(iwin_flag)を更新するための処理プログラムの容量を削減することができる。
また、本実施例では、各役の当選確率を定める判定値数が、役別テーブルから参照されるアドレスに格納されている。役別テーブルには、各役の入賞が発生したときのメダル数も登録されている。
役別テーブルにおいて、メダル数は賭数に応じて登録されており、チェリー、スイカ、ベルの入賞が発生したときには、賭数に応じてメダル数が設定される。ここで、レギュラーボーナスにおける賭数は1で固定されているが、レギュラーボーナス以外の遊技状態における賭数は3で固定されている。これにより、賭数に応じて払出数を取得するだけでも、遊技状態に応じて適切な数のメダルを払い出すことができる。また、メダル数を設定する際に遊技状態を判断する必要がないので、入賞判定処理における処理ステップが簡素化される。しかも、レギュラーボーナスに対応した賭数1の方が、賭数3のときよりもベルの入賞時におけるメダル数が多いので、レギュラーボーナスにおける遊技者の期待感を更に高めさせて、遊技の興趣を向上させることができる。
役別テーブルにおいて、いずれの遊技状態においても入賞となる役として定められたチェリー、スイカ及びベルについては、賭数毎に判定値数の格納先アドレスが登録されており、賭数に従って判定値数が取得されることとなる。ここで、レギュラーボーナスにおける賭数は1で固定されているが、レギュラーボーナス以外の遊技状態における賭数は3で固定されている。これにより、賭数に応じて判定値数を取得するだけでも、遊技状態に応じた当選確率でチェリー、スイカ及びベルの内部抽選を行うことができる。また、判定値数を取得する際に遊技状態を判断する必要がないので、内部抽選における処理ステップが簡素化される。しかも、レギュラーボーナスに対応した賭数1の方が、賭数3のときよりもベル、チェリーの当選確率が高いので、レギュラーボーナスにおける遊技者の期待感を更に高めさせて、遊技の興趣を向上させることができる。
また、役別テーブルに登録されている各役の判定値数の格納先のアドレスは、設定値に応じて異なっている場合もあるが、設定値に関わらずに当選確率を同一とするものとした役については、設定値に関わらずに判定値数が共通化して格納されるものとなる。このように判定値数を共通化して格納することで、そのために必要な記憶容量が少なくて済むようになる。もっとも、役別テーブルにおいて、内部抽選の対象役と設定されている賭数とが同じで設定値に応じて参照される判定値数を格納したアドレスが異なっていても、異なるアドレスにおいて格納されている判定値数が同じである場合がある。
一般に開発段階においては、少なくとも一部の役について設定値に応じて判定値数を調整しながら(すなわち、内部抽選の当選確率を調整しながら)、シミュレーションを行っていくものとしている。当初の判定値数として、設定値に応じて異なる判定値数を登録しておいたが、シミュレーションにより調整を行った結果として、設定値が異なる場合の判定値数が同一になる場合もある。当初の判定値数として、設定値に応じて同一の判定値数を登録しておいたが、シミュレーションの結果により当初から登録してあった判定値数がそのまま用いられる場合もある(シミュレーションの結果により当初とは異なる判定値数すなわち、設定値に応じて異なる判定値数となる場合もある)。そして、それぞれの場合におけるシミュレーションで適切な結果の得られた判定値数を、量産用の機種に設定する判定値数として選ぶものとしている。
ここで、シミュレーションにより調整された判定値数が結果として設定値に関わらずに同じになったとしても、その開発段階でのアドレス割り当てと同じアドレスの割り当てで判定値数をROM41bに記憶して、そのまま量産用の機種とすることができる。このため、量産用の機種において判定値数の格納方法を開発用の機種から変更する必要がなく、最初の設計段階から量産用の機種に移行するまでの開発を容易に行うことができるようになる。
また、役別テーブルに登録されている各役の判定値数の格納先のアドレスは、賭数(1または3)に応じて異なっているが、例えば、異なるアドレスにおいて格納されている判定値数が同じであっても良い。
開発用の機種においては、賭数に応じても判定値データを微妙に調整しながらシミュレーションを行っていくのが通常である(当初の判定値数を異なるものとしておく場合と、同じものとしておく場合とがあり得る)。ここで、シミュレーションにより調整された判定値数が結果として賭数に関わらずに同じになったとしても、その開発段階でのアドレス割り当てと同じアドレスの割り当てで判定値数をROM41bに記憶して、そのまま量産用の機種とすることができる。このため、量産用の機種において判定値数の格納方法を開発用の機種から変更する必要がなく、最初の設計段階から量産用の機種に移行するまでの開発を容易に行うことができるようになる。
また、内部抽選は、取得した内部抽選用の乱数に、役別テーブルから参照された各役の判定値数を加算していき、その加算の結果がオーバーフローしたか否かによって、それぞれの役の当選の有無を判定するものとしている。このため、各役の判定値数をそのまま用いて内部抽選を行うことができる。
また、本実施例において乱数取得処理によって取得される内部抽選用の乱数は、サンプリング回路43により乱数発生回路42から抽出した乱数をそのまま使用するのではなく、ソフトウェアにより加工してから使用するものとしている。乱数発生回路42は、パルス発生回路42aのパルス信号の周波数で高速に更新して乱数を発生しているが、ソフトウェアにより加工した後の内部抽選用の乱数では、その加工によって更新の周期性が失われるものとなる。
これに対して、内部抽選では各役に対応した判定値数を内部抽選用の乱数の値に順次加算していくことにより行うため、図9及び図10に示したように各役を当選とする内部抽選用の乱数の値は、固まってしまうこととなる。これに対して、ソフトウェアによる加工で内部抽選用の乱数の周期性を失わせ、その値をバラつかせることによって、遊技者による狙い打ちを可能な限り防ぐことができる。
しかも、乱数発生回路42のカウンタ42b、42cの値を更新させるためにパルス発生回路42aが発生するパルス信号の周波数は、CPU41aの動作クロックの周波数よりも高く、整数倍ともなっていない。このため、乱数発生回路42が発生する乱数の更新が、CPU41aが行う処理と同期しにくくなる。しかも、パルス発生回路42aのパルス信号の周波数の方を高くすることで、乱数発生回路42が発生する乱数の更新速度を非常に速いものとすることができる。
一方、ソフトウェアによる乱数の加工は、サンプリング回路43により乱数発生回路42から抽出した乱数の上位バイトと下位バイトとを入れ替えるだけで良い。従って、16ビットという比較的大きな乱数であっても、周期性を失わせるために必要な加工の処理に要する負荷がそれほど大きくならず、容易に取得することができる。このように大きな乱数が取得できることで、内部抽選における確率設定を細かく行うことができるようになる。
また、本実施例のスロットマシン1では、設定値ワーク1から読み出した値が1〜6の範囲か否か、すなわち内部抽選に用いる設定値が適正な範囲の値か否かを判定する設定値判定処理1を1ゲーム毎に実行し、設定値ワーク1から読み出した値が1〜6の範囲の値でなければ、RAM異常エラーによるエラー状態に制御され、ゲームの進行が不能化される。本実施例において設定値ワーク1に格納される値、すなわち設定変更処理により選択可能な設定値の範囲は1〜6の値であるので、設定値ワーク1に格納されている値が1〜6の範囲の値でなければゲームの進行が不能化されることとなる。
そして、一度RAM異常エラーによるエラー状態に制御されると、設定変更モードに移行させて、設定変更操作に基づいて設定値を新たに選択・設定しなければ、ゲームの進行が不能化された状態が解除されない。すなわちデータ化けなどにより、設定値が適正でない場合には、スロットマシンにより自動的に設定された設定値ではなく、設定変更操作に基づいて選択・設定された設定値(一般的に、設定変更操作は遊技店の従業員により行われるので、遊技店側が選択した設定値である)に基づいてゲームが行われることが担保されるので、ゲームの公平性を図ることができる。
また、本実施例のスロットマシン1では、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致するか否か、すなわち内部抽選に用いる設定値と、設定変更時に設定された設定値と、が一致するか否かを判定する設定値判定処理2を1ゲーム毎に実行し、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致しない場合にも、RAM異常エラーによるエラー状態に制御され、ゲームの進行が不能化される。本実施例では、設定変更時に設定値ワーク1と設定値ワーク2のそれぞれに変更後の設定値が格納されるようになっており、通常は設定値1に格納されている値と設定値2に格納されている値とが一致するはずであり、これらの値が一致しなければ、設定値が不正に書き換えられた可能性があり、この場合にもゲームの進行が不能化されることとなる。
また、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致するか否か、すなわち今回のゲームの内部抽選に用いる設定値と、前回のゲームの内部抽選に用いた設定値と、が一致するか否かを判定する設定値判定処理3を1ゲーム毎に実行し、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致しない場合にも、RAM異常エラーによるエラー状態に制御され、ゲームの進行が不能化される。本実施例では、内部抽選に用いた設定値を設定値ワーク3に格納するようになっており、通常は設定値1に格納されている値(今回のゲームの内部抽選で用いる設定値)と設定値3に格納されている値(前回のゲームの内部抽選で用いた設定値)とが一致するはずであり、これらの値が一致しなければ、設定値が不正に書き換えられた可能性があり、この場合にもゲームの進行が不能化されることとなる。
そして、一度RAM異常エラーによるエラー状態に制御されると、設定変更モードに移行させて、設定変更操作に基づいて設定値を新たに選択・設定しなければ、ゲームの進行が不能化された状態が解除されない。すなわち不正に設定値が書き換えられた可能性がある場合においてゲームを再開するためには、通常のエラー状態を解除するためのリセット操作よりも手間のかかる設定変更操作を行う必要があるので、かかる不正行為を効果的に防止することができる。
また、不正に設定値が書き換えられた可能性がある場合には、スロットマシンにより自動的に設定された設定値ではなく、設定変更操作に基づいて選択・設定された設定値(一般的に、設定変更操作は遊技店の従業員により行われるので、遊技店側が選択した設定値である)に基づいてゲームが行われることが担保されるので、ゲームの公平性を図ることができる。
尚、本実施例では、内部抽選に用いる設定値、すなわち内部抽選の当選確率を定めた設定値として1〜6の範囲の6段階の値を適用しているが、設定値はこれに限られるものではなく、少なくとも複数段階の設定値を選択して設定できるものであれば良く、例えば、高/低の2段階を選択可能な設定値や、1〜3の範囲の3段階の設定値を選択可能な設定値などを適用しても良い。更に、RAM41cの設定値ワーク1〜3には、これら設定値を示す値として1〜6の値そのものを格納しているが、設定値を特定可能な値が格納されるものであれば良く、例えば、1〜6の設定値に対応して0〜5(実際の設定値から1を減算した値)を設定値ワーク1〜3に格納するようにしても良い。
また、本実施例では、設定値ワーク1から読み出した値が1〜6の範囲か否かを判定する設定値判定処理1、設定値ワーク1から読み出した値と、設定値ワーク2から読み出した値と、が一致するか否かを判定する設定値判定処理2、設定値ワーク1から読み出した値と、設定値ワーク3から読み出した値と、が一致するか否かを判定する設定値判定処理3の全てを実行して、内部抽選に用いる設定値が適正であるか否かを判定しているが、これら設定値判定処理1〜3のいずれか1つの処理を行うことで、内部抽選に用いる設定値が適正であるか否かを判定するものであっても良く、例えば、設定値判定処理1のみを行うもの、設定値判定処理2のみを行うもの、設定値判定処理3のみを行うもの、設定値判定処理1〜3のうちいずれか2つの処理を行うもの、などであっても良い。
更に、設定値判定処理1〜3のうちいずれか1つの処理を毎ゲーム行い、残りの1つの処理、または残りの全ての処理を所定の契機(例えば、所定ゲーム数毎、ボーナス終了時、特定の役の当選時など)で実行するものや、設定値判定処理のうちいずれか2つの処理を1ゲーム毎に行い、残りの1つの処理を所定の契機で実行するものであっても良い。
また、本実施例では、設定値判定処理1〜3を1ゲーム毎に実行しているが、設定値判定処理を1ゲーム毎に行うのではなく、設定値判定処理1〜3を所定ゲーム数毎に行ったり、特定の期間(ボーナス中を除く期間など)のゲームにおいて行ったりするようにしても良い。
また、本実施例では、内部抽選処理において、内部抽選に用いる設定値が適正であるか否かを判定する設定値判定処理1〜3を実行しているが、そのタイミングは、1ゲーム中のどのタイミングであっても良く、例えば、ゲーム開始時やゲーム終了時に行うものであっても良い。
また、本実施例では、内部抽選処理において、設定値ワーク3の値を設定値ワーク1から読み出した値(今回のゲームの内部抽選に用いるために読み出した設定値)に更新しているが、設定値ワーク3の値を設定値ワーク1から読み出した値に更新するタイミングは、当該ゲームが終了するまでのいずれかのタイミング(例えば、全てのリール2L、2C、2Rの停止時や、メダルの払出終了時など)であれば良い。
また、本実施例では、設定変更時に、設定値ワーク1及び設定値ワーク2の2つの領域に設定値が格納され、設定値判定処理2において、設定値ワーク1に格納されている値と設定値ワーク2に格納されている値とが一致するか否かを判定し、一致しない場合に、適正な設定値ではないと判定するが、設定変更時に3つ以上の記憶領域に設定値を格納し、設定値判定処理2において、これら3つ以上の記憶領域に格納されている値が全て一致するか否かを判定し、一致しない場合に、適正な設定値ではないと判定するようにしても良い。
更に、設定変更時に3つ以上の記憶領域に設定値を格納し、設定値判定処理2において、これら3つ以上の領域に格納されている値が所定数以上一致するか否か(例えば、5つの記憶領域に設定値を格納し、そのうち3つ以上の値が一致するか否か等)を判定し、所定数以上一致しない場合に、適正な設定値ではないと判定するようにしても良く、このようにすれば、ノイズなどにより設定変更時に格納された設定値を示すデータの一部が欠損した場合でも、誤って適正な設定値ではないと判定されて遊技の進行が不能化してしまうことを防止できる。
また、本実施例では、設定値ワーク3に前回のゲームの内部抽選に用いた設定値のみが格納され、設定値判定処理3において、設定値ワーク1に格納されている値と設定値ワーク3に格納されている値とが一致するか否か、すなわち今回のゲームの内部抽選に用いる設定値と、前回のゲームの内部抽選に用いる設定値と、が一致するか否かを判定し、一致しない場合に、適正な設定値ではないと判定するが、前回のゲーム以前の所定ゲーム数にわたり各ゲームの内部抽選に用いた設定値を格納するとともに、設定値判定処理3において今回のゲームの内部抽選に用いる設定値と、前回のゲームよりも前のゲーム(例えば、所定ゲーム数前のゲーム)の内部抽選に用いた設定値と、が一致するか否かを判定し、一致しない場合に、適正な設定値ではないと判定するようにしても良い。
また、前回のゲーム以前の所定ゲーム数にわたり各ゲームの内部抽選に用いた設定値を格納するとともに、設定値判定処理3において今回のゲームの内部抽選に用いる設定値と、前回のゲーム以前の複数のゲームの内部抽選に用いたそれぞれの設定値と、が全て一致するか否かを判定し、一致しない場合に、適正な設定値ではないと判定するようにしても良い。
更に、前回のゲーム以前の所定ゲーム数にわたり各ゲームの内部抽選に用いた設定値を格納するとともに、設定値判定処理3において今回のゲームの内部抽選に用いる設定値と、前回のゲーム以前の複数のゲームの内部抽選に用いたそれぞれの設定値と、が所定数以上一致するか否か(例えば、過去5ゲームの内部抽選に用いたそれぞれの設定値を5つの記憶領域に格納し、そのうち3つ以上の値が一致するか否か等)を判定し、所定数以上一致しない場合に、適正な設定値ではないと判定するようにしても良く、このようにすれば、ノイズなどにより設定変更時に格納された設定値を示すデータの一部が欠損した場合でも、誤って適正な設定値ではないと判定されて遊技の進行が不能化してしまうことを防止できる。
尚、本実施例では、内部抽選処理において入賞の当選を判定する際に、設定値判定処理において適正な設定値ではないと判定された場合には、RAM異常エラー状態に制御されるようになっているが、RAM41cの設定値ワークに格納されている設定値が適正な値(1〜6の範囲の値)でない場合に、設定値の初期値(例えば、設定値1)に基づく確率で入賞の当選を判定するようにしても良い。
また、本実施例のスロットマシン1では、メイン制御部41のRAM41cにおける未使用領域が1ゲーム毎に初期化されるので、RAM41cの未使用領域を利用して不正プログラムを格納させても、当該不正プログラムが常駐してしまうことを防止できる。
また、本実施例では、RAM41cにおける未使用領域に加えてスタック領域における未使用スタック領域も1ゲーム毎に初期化されるので、RAM41cにおいてその時点で使用されていない全ての領域が1ゲーム毎に初期化されることとなり、例え、RAM41cの未使用領域を利用せずに未使用スタック領域を利用して不正プログラムを格納させようとしても、当該不正プログラムが常駐してしまう余地を無くすことができるので、不正プログラムが常駐してしまうことを一層確実に防止できるとともに、例えば、未使用スタック領域に不正なデータ(不正プログラムが指定するアドレス等)を加え、データの復帰時にマイクロコンピュータを誤作動させることでレジスタを不正なものに書き換えてしまうことにより、本来のプログラムとは異なる動作を行わせてしまうような不正も防止できる。更に、未使用スタック領域に不正なデータが格納されることによって、本来であれば退避したデータを格納できるはずの領域が圧迫され、スタック領域がオーバーフローしてしまい、メイン制御部41を構成するマイクロコンピュータが暴走してしまう等の不具合も防止できる。
尚、本実施例では、RAM41cの未使用領域及び未使用スタック領域を1ゲーム毎に初期化しているが、少なくともRAM41cの未使用領域または未使用スタック領域のいずれか一方の領域を1ゲーム毎に初期化するものであれば良い。
また、本実施例では、ゲーム終了時にRAM41cの未使用領域及び未使用スタック領域を初期化する初期化4を毎ゲーム実行することで、RAM41cの未使用領域や未使用スタック領域を1ゲーム毎に初期化しているが、少なくとも1ゲーム毎に1回以上RAM41cの未使用領域及び/または未使用スタック領域が初期化されるものであれば、RAM41cの未使用領域及び/または未使用スタック領域の初期化を行うタイミングは、1ゲーム中のどのタイミングであっても良く、例えば、ゲーム開始時や1ゲーム毎に必ず実行される処理の実行時にRAM41cの未使用領域及び/または未使用スタック領域の初期化を行うものであっても良い。
また、設定開始前(設定変更モードへの移行前)、ビッグボーナス終了時、起動時にRAM41cのデータが破壊されていないとき、1ゲーム終了時の4つからなる初期化条件が成立した際に、各初期化条件に応じて初期化される領域の異なる4種類の初期化1〜4を行うとともに、これら4種類の初期化条件のうちどの条件が成立した場合でも、必ずRAM41cにおける未使用領域及びスタック領域における未使用スタック領域が初期化されるので、不正プログラムが常駐してしまうことを一層確実に防止できる。
特に、起動時においてRAM41cのデータが破壊されていないときに、必ずRAM41cにおける未使用領域及びスタック領域における未使用スタック領域が初期化されるので、RAM41cにの未使用領域や未使用スタック領域を利用して不正プログラムや不正データが格納された場合にも、当該不正プログラムや不正データが格納されたままメイン制御部41の制御状態がRAM41cのデータに基づいて復帰してしまうことを防止できる。
また、メイン制御部41のROM41bには、初期化1〜4に対応してそれぞれ初期化する領域の開始アドレスと初期化する領域のサイズを示す初期化サイズとが登録されており、CPU41aがRAM41cの初期化を行う際には、初期化テーブルを参照し、初期化条件に応じて初期化1〜4のいずれかに対応する開始アドレスと初期化サイズを取得し、開始アドレスにポインタを設定し、初期化サイズを設定する(初期化サイズが未使用スタック領域のサイズを含むものであれば、未使用スタック領域のサイズ(スタックポインタ−7FD2H)を計算し、初期化サイズを設定する)。そして、ポインタが設定された初期化アドレスから1バイトづつ該当するアドレスの領域を0クリアし、1バイトクリアする毎に初期化サイズを1減算するとともに、ポインタを1進める処理を、初期化サイズが0になるまで実行する。すなわちCPU41aがRAM41cを初期化する際には、初期化条件に応じた領域毎に初期化するのではなく、指定したアドレスから指定したサイズ分の領域を初期化するようになっている。
このため、ROM41bの初期化テーブルに、初期化条件の種類に対応する開始アドレスとその際初期化される領域のサイズのみを設定しておくことで、初期化条件の種類に対応する初期化終了アドレスを個々に設定しておくことなく、初期化条件の種類に対応する領域を初期化することができるとともに、複数種類の初期化を共通の処理(RAM初期化処理)を用いて行えるので、複数種類の初期化を行うためのプログラム容量を削減できる。更に、RAM初期化処理においては、初期化サイズが0か否かを判定するのみで処理の終了を判定するので、現在初期化したバイトのアドレスと終了アドレスとの比較によって処理の終了を判定する場合に比較して、処理負荷を大幅に軽減できる。
また、初期化1〜4の実行中においては常に割込が禁止されるようになっており、RAM41cに記憶されているデータを初期化している最中に電断検出回路48から電圧低下信号が入力されても、初期化が終了するまでは電断割込処理が実行されないので、例えば、初期化が完全に終了する前の段階で電断割込処理が行われることにより、初期化されるべきデータのうち初期化されたデータと初期化されていないデータとが混在してしまい、復旧時に電断前の制御状態へ正常に復帰させることができなくなってしまう等の不具合を防止できる。
また、電断割込処理において、いずれかのビットが1となる破壊診断用データをRAM41cの所定アドレスに格納した後、RAM41cの未使用領域及び未使用スタック領域を含む全てのデータに基づくRAMパリティが0となるようにRAMパリティ調整用データを計算し、格納するとともに、復旧時においてRAM41cにおける未使用領域及び未使用スタック領域を含む全ての領域に格納されているデータに基づいて計算したRAMパリティが0か否か、及び破壊診断用データが格納されているか否か、を判定し、RAMパリティが0でなかった場合、またはRAMパリティが0であっても破壊診断用データが正常に格納されていない場合には、RAM異常エラーによるエラー状態となり、設定キースイッチ37をONの状態で電源投入し、RAM41cの使用中スタック領域を除く全ての領域を初期化する初期化1が行われるまで、ゲームの進行が不可能となるので、起動時にRAM41cの未使用領域及び/または未使用スタック領域に不正プログラムが格納された場合でも、当該不正プログラムを発見して初期化することができる。
更に、RAM41cに格納されているデータが正常ではないと判定され、RAM異常エラー状態となると、RAM41cの使用中スタック領域を除く全ての領域を初期化する初期化1が行われるようになっており、RAM41cに格納されているデータが正常ではないと判定されたときにも、その後、設定キースイッチ37がONの状態で電源投入されたときにも、RAM41cの使用中スタック領域を除く全ての領域を初期化する初期化1が行われるので、RAM41cに格納されている可能性がある不正プログラムを確実に除去することができる。
また、本実施例では、RAM41cに記憶されているデータに異常が生じた場合には、RAM異常エラーによるエラー状態に制御され、ゲームの進行が不能化されるとともに、一度RAM異常エラーによるエラー状態に制御されると、設定変更モードに移行し、設定変更操作に基づいて設定値を新たに選択・設定しなければ、ゲームの進行が不能化された状態が解除されない。すなわち、RAM41cに記憶されているデータに異常が生じても、スロットマシンにより自動的に設定された設定値ではなく、設定変更操作に基づいて選択・設定された設定値(一般的に、設定変更操作は遊技店の従業員により行われるので、遊技店側が選択した設定値である)に基づいてゲームが行われることが担保されるので、ゲームの公平性を図ることができる。
また、本実施例では、内部抽選処理において入賞の発生を許容するか否かを決定する際に、RAM41cの設定値ワークに格納されている設定値が適正な値(1〜6の範囲の値)でなければ、デフォルトの設定値(例えば設定1)に基づく確率で入賞の発生を許容するか否かを決定するのではなく、この場合にもRAM異常エラーによるエラー状態に制御され、ゲームの進行が不能化され、設定変更モードに移行し、設定変更操作に基づいて設定値を新たに選択・設定しなければ、ゲームの進行が不能化された状態が解除されない。すなわち内部抽選処理において入賞の発生を許容するか否かの決定を適正に行うことができない場合にも、設定変更操作に基づいて選択・設定された設定値に基づいてゲームが行われることが担保されるので、ゲームの公平性を図ることができる。
また、RAM41cに記憶されたデータに異常が生じるのは、停電時やCPU41aが暴走する等、制御に不具合が生じて制御を続行できないときがほとんどである。このため本実施例では、これらの状態から復旧してCPU41aが起動するときにおいてのみデータが正常か否かの判定を行うようになっているので、RAM41cに記憶されたデータが正常か否かの判定をデータに異常が生じている可能性が高い状況においてのみ行うことができる。すなわちデータに異常が生じている可能性の低い状況では、当該判定を行わずに済み、CPU41aの負荷を軽減させることができる。
また、本実施例では、電断割込処理においてRAM41cの全てのデータに基づくRAMパリティ、すなわち排他的論理和演算した結果が0となるようにRAMパリティ調整用データを計算し、格納するとともに、復旧時においてRAM41cにおける全ての領域に格納されているデータに基づいて計算したRAMパリティが0か否かを判定することで、RAM41cのデータが正常か否かを判定しているので、当該判定を正確にかつ簡便に行うことができる。
また、本実施例では、電断割込処理において、いずれかのビットが1となる破壊診断用データ(本実施例では、5AH)、すなわち0以外の特定のデータをRAM41cの所定のアドレスに格納した後、この破壊診断用データを含むRAM41cの全てのデータに基づくRAMパリティが0となる調整用データを格納し、起動時においてRAMパリティが0か否かの判定に加えて、破壊診断用データが正常に格納されているか否かの判定を行い、RAMパリティが0であり、かつ破壊診断用データも正常に格納されていることを条件に、RAM41cのデータが正常であると判定し、RAM41cに格納されているデータに基づいて制御状態を復帰させるようになっている。これにより、全ての領域に00Hが格納されている場合、すなわちRAM41cのデータが正常でなくても、RAM41cのデータが0クリアされてしまった場合には、起動時のRAMパリティの判定により正常であると判定されてしまうが、RAM41cのデータが0クリアされてしまった場合には、破壊診断用データが格納されるべき領域も0となり、RAM41cのデータが正常ではないと判定され、誤ってRAM41cのデータが正常であると判定されてしまうことを防止できるので、起動時においてRAM41cのデータが正しい内容であるか否かの判定精度を一層高めることができる。
また、CPU41aは、起動時においてRAMパリティが0であり、かつ破壊診断用データも正常に格納されていると判定し、RAM41cのデータが正常であると判定すると、RAM41cに格納されている破壊診断用データをクリアするようになっているので、起動後もRAM41cに破壊診断用データが格納されたままの状態となることで、次回起動時においてRAM41cのデータが正常ではないにも関わらず、破壊診断用データが格納されているために正常であると誤って判定してしまうことを防止できる。
また、本実施例では、RAM41cのデータに異常が生じて、ゲームの進行が不能化された場合には、ゲームの進行が不能化された状態を解除する条件となる設定値の変更操作が有効となる設定変更モード(設定変更処理)へ移行することに伴って、RAM41cの使用中スタック領域を除く全ての領域が初期化されるので、RAM41cのデータに異常が生じたことに伴うデータの初期化及び設定値の選択・設定に伴うデータの初期化を1度で行うことができ、無駄な処理を省くことができる。更に、CPU41aの起動時には、RAM41cのデータが正常か否かを判定する前に、設定キースイッチ37がONの状態であるか否かを判定し、その時点で設定キースイッチ37がONの状態であると判定した場合には、RAM41cのデータが正常か否かの判定は行わず、設定変更モードに移行し、新たに設定値が選択・設定されることとなり、この場合にも無駄な処理を省くことができる。
尚、本実施例では、設定変更処理に移行する前に、RAM41cの使用中スタック領域を除く全ての領域を初期化する初期化1を行っているが、設定変更処理に移行することに伴って初期化1が行われれば良く、例えば、設定変更処理の終了後に行っても良いし、設定変更処理において設定値が確定した時点で行っても良い。尚、この場合には、確定した設定値が変更されてしまうと不都合が生じるので、初期化1においては、RAM41cの使用中スタック領域及び設定値ワークを除く全ての領域が初期化されることとなる。
また、本実施例では、一度RAM異常エラーによるエラー状態に制御されると、設定変更処理が行われるまで、ゲームが不能動化されるようになっているが、RAM異常エラーによるエラー状態となったときに、RAM41cの使用中スタック領域を除く全ての領域を初期化する初期化1を行うとともに、設定値を初期値(例えば、設定値1)に設定し、この状態でリセット操作がなされることで、ゲームを再開できるようにしても良い。
また、本実施例では、CPU41aが演出制御基板90に対して遊技の進行に応じたコマンドを送信し、演出制御基板90に搭載されたサブ制御部91は、遊技制御基板40から送信されたコマンドに基づいて演出の制御を行うようになっており、CPU41aは、コマンドを送信するのみで演出の制御を行う必要がないので、CPU41aの処理負荷を軽減できるうえに、演出を多彩なものにできる。
また、遊技制御基板40から演出制御基板90にコマンドが送信されるコマンド伝送ラインが、遊技制御基板40と演出制御基板90との間で演出中継基板80を介して接続されており、遊技制御基板40に演出制御基板90が直接接続される構成ではないので、コマンド伝送ラインからCPU41aに対して外部から不正な信号が入力され、遊技の制御に影響を与えられてしまうことを防止できる。
また、本実施例では、トリガー端子CLK/TRGに電圧低下信号が入力されることで、CPU41aが実行中の処理に割り込んで電断割込処理を実行するようになっているが、電断割込処理では、破壊診断用データを設定する処理やRAMパリティ調整用データを計算して設定する処理等、復旧時にRAM41cのデータが正常であるかを判定可能とするための処理や出力ポートの初期化等を行う前に、信号入力端子DATAに電圧低下信号が入力されているか否かを判定を行い、信号入力端子DATAにも電圧低下信号が入力されていれば、復旧時にRAM41cのデータが正常であるかを判定可能とするための処理や出力ポートの初期化等を行うのに対して、信号入力端子DATAに電圧低下信号が入力されていなければ、もとの処理に復帰するようになっている。
すなわち、メイン制御部41には、電圧低下信号が2系統の入力部に入力され、CPU41aは、一方の入力部に電圧低下信号が入力されて電断割込処理を実行しても、復旧時にRAM41cのデータが正常であるかを判定可能とするための処理や出力ポートの初期化等が実行される前に再度他方の入力部に電圧低下信号が入力されているか否かを判定し、他方の入力部にも電圧低下信号が入力されていて初めてこれらの処理が実行されるようになっており、電断を誤って検出した際に、誤って復旧時にRAM41cのデータが正常であるかを判定可能とするための処理や出力ポートの初期化等の処理が行われてしまうことが防止できるので、電断を誤って検出することに伴い、必要以上に長い間CPU41aの制御が中断されたり、必要以上に負荷がかかってしまうことを防止できる。
また、電断割込処理及びタイマ割込処理の実行中においては、他の割込が禁止されるようになっており、例えば、タイマ割込処理の実行中に電圧低下信号が入力された場合でも2重に割込が生じることがなく、CPU41aの処理負荷が増対してしまったりデータの整合性がとれなくなってしまうことを防止できる。特に、コマンドの送信中に電圧低下信号が入力されても、割込が生じて当該コマンドの送信が阻害されることがなく、CPU41aの駆動が停止する前に正常に送信を完了させることができる。
また、電断割込処理の割込タイミングとタイマ割込処理の割込タイミングとが同時となった場合、すなわち割込2と割込3が同時に発生した場合には、割込2を優先し、電断割込処理を実行するとともに、タイマ割込処理の実行中に割込2が発生した場合には、当該タイマ割込処理の終了を待って電断割込処理を実行するようになっており、多重割込を防止しつつも極力早い段階で電断割込処理が行われるので、CPU41aの駆動が停止する前に電断割込処理を確実に行うことができる。
また、CPU41aは、割込1〜4の4種類の割込を実行可能であり、このうち未使用に設定されている割込1、4が発生した場合には、もとの処理に即時復帰させる未使用割込処理を実行するようになっている。このため、未使用の割込1、4が発生したときでも、すぐに割込前の処理に復帰することとなるので、ノイズ等によって未使用の割込が発生してもCPU41aが暴走してしまうといった不具合を防止できる。
本実施例のスロットマシン1では、停止操作位置(リール基準位置からのステップ数に対して割り当てられた領域)に対して停止位置(表示結果)が一意的に定められた複数の停止制御テーブルのうち、全てのリールが回転中においては、各遊技状態のそれぞれについての内部当選状態に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御が行われるとともに、いずれかのリールが既に停止している場合においては、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御が行われるようになっており、遊技状態、内部当選状態、リールの停止状況(及び停止済みのリールの停止位置(表示結果))の全てが同一条件となった際に、同一の停止制御テーブル、すなわち同一の制御パターンに基づいてリールの停止制御が行われることとなるので、従来のように一の内部当選状態に対して複数の停止制御テーブルからいずれか1つの停止制御テーブルを内部抽選とは異なる抽選(例えばリール制御の振分抽選など)などにより更に選択する必要がなく、リールを停止させる際の制御が複雑化することがない。
また、本実施例では、リールの回転開始時に、全てのリールについて、各遊技状態のそれぞれについての内部当選状態に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御が行われるとともに、その後リールが停止する毎に、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止位置、すなわちいずれか1つのリールが停止した状態では停止済みのリールの停止位置、いずれか2つのリールが停止した状態では停止済みの2つのリールの停止位置の組み合わせに対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御が行われるようになっているが、例えば、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うとともに、更にいずれかのリールが停止したとき(2つのリールが停止したとき)には、新たに停止制御テーブルを選択せず、全てのリールが回転している状態でいずれか1つのリールが停止したときに選択された停止制御テーブルに従って残りのリールの停止制御を行うようにしても良い。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うとともに、更にいずれかのリールが停止したとき(2つのリールが停止したとき)に、各遊技状態のそれぞれについての内部当選状態、最初に停止したリールの停止位置または最後に停止したリールの停止位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、本実施例では、いずれかのリールが既に停止している場合において、各遊技状態のそれぞれについての内部当選状態、リールの停止状況及び停止済みのリールの停止位置に対して一意的に定められた停止制御テーブルに従ってリールの停止制御が行われるようになっているが、いずれかのリールが既に停止している場合において、各遊技状態のそれぞれについての内部当選状態、リールの停止状況及び停止済みのリールの停止操作位置に対して一意的に定められた停止制御テーブルに従ってリールの停止制御が行われるようにしても良く、このようにすることで遊技状態及び内部当選状態が同一であり、かつ停止済みのリールの停止位置(停止図柄)が同一の場合であっても、停止済みのリールの停止操作位置が異なる場合には、異なる停止制御テーブルが適用されることがあるため、リールの表示結果をより多彩なものにできる。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うとともに、更にいずれかのリールが停止したとき(2つのリールが停止したとき)には、新たに停止制御テーブルを選択せず、全てのリールが回転している状態でいずれか1つのリールが停止したときに選択された停止制御テーブルに従って残りのリールの停止制御を行うようにしても良い。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止済みのリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うとともに、更にいずれかのリールが停止したとき(2つのリールが停止したとき)に、各遊技状態のそれぞれについての内部当選状態、最初に停止したリールまたは最後に停止したリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、本実施例では、いずれか2つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止位置の組み合わせに対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御が行われるようになっているが、例えば、いずれか2つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止したリールのうちのいずれか1つのリールの停止位置、停止したリールのうちの残りのリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止位置に対して一意的に定められた停止制御テーブルを選択し、いずれか2つのリールが停止したときに、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止操作位置の組み合わせに対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、いずれか2つのリールが停止したときに、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止位置の組み合わせに対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、いずれか1つのリールが停止したときに、回転中のリールについて、各遊技状態のそれぞれについての内部当選状態、停止したリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、いずれか2つのリールが停止したときに、各遊技状態のそれぞれについての内部当選状態、停止したリールのうちのいずれか1つのリールの停止位置、停止したリールのうちの残りのリールの停止操作位置に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行うようにしても良い。
また、これらの場合には、1/2図柄が変動する範囲の領域、すなわち1図柄が変動する範囲未満の単位で停止済みのリールの停止操作位置を判定し、その停止操作位置に対して一意的に定められた停止制御テーブルに従ってリールの停止制御を行うこと、すなわちある図柄が基準位置に位置するステップ数から1図柄が変動する範囲以内の異なるステップ数に対して異なる停止制御テーブルを選択可能とすることが好ましく、このようにすれば、停止済みのリールの停止位置が同一であり、停止操作が行われたタイミングが1図柄が変動する範囲以内であっても、他のリールに適用される停止制御テーブルを変化させることができるので、各リールの表示結果をより一層多様化することができる。
また、本実施例では、複数の連続するステップ数の範囲(本実施例では1図柄が変動する4ステップずつ)毎に引込コマ数(当該範囲で停止操作が検出された場合の停止位置)が一意的に定められた停止制御テーブルを用いてリールの停止制御を行っているので、停止制御テーブルを作成するためのテーブル作成用データの容量を大幅に軽減できる。
尚、本実施例では、1図柄が変動する範囲の領域の単位毎に、引込コマ数を一意的に定めた停止制御テーブルを用いているが、例えば、1/2図柄が変動する範囲の領域、すなわち1図柄が変動する範囲未満の単位毎に、引込コマ数(停止位置)を一意的に定めた停止制御テーブルを用いてリールの停止制御を行うようにしても良い。すなわちある図柄が基準位置に位置するステップ数から1図柄が変動する範囲以内の異なるステップ数に対して異なる停止位置が定められた停止制御テーブルを用いてリールの停止制御を行うようにしても良く、このようにすることで、1図柄が変動する範囲以内であっても、停止操作のタイミングが異なることで導出される表示結果を変化させることができるので、停止操作のタイミングに応じてより多彩な態様でリールの表示結果を導出させることができる。
また、本実施例のスロットマシン1では、入賞となる役の種類として、メダルの払い出しを伴う小役、次のゲームでの賭数にメダルを消費しないで済む再遊技役、遊技状態の移行を伴う特別役が定められている。特別役は、遊技状態の移行を伴うものであって、そのときの遊技状態に依存するので基本的な役とは言えない。スロットマシンの遊技性は、単にゲームを行うだけではなく、ゲームの結果により遊技者がメダルを獲得していくことにあるので、入賞によってメダルの払い出しを伴う小役が最も基本的な役であるということができる。ここで、小役の種類としては、JAC、チェリー、スイカ、ベルがあるが、レギュラーボーナスにおいて僅かな確率で当選するJACの他は、いずれの遊技状態においても入賞となる役の種類として定められている。このように基本となる小役を、いずれの遊技状態に制御されているときであっても入賞となる役として定めることで、遊技性が遊技者にとって分かり易いものとなる。
通常遊技状態でビッグボーナス(1)またはビッグボーナス(2)に入賞すると、レギュラーボーナスへの移行を伴うJACINに比較的高い確率で当選する(取りこぼしがないので、入賞する)ビッグボーナスに遊技状態が移行される。ビッグボーナスは、消化ゲーム数に関わらず、当該ビッグボーナス中において遊技者に払い出したメダル数の総数が466枚以上になると終了するものとなっている。ここでビッグボーナス(小役ゲーム及びレギュラーボーナスを含む)中のゲームでは、リプレイが内部抽選の対象役として定められていないので、リプレイが入賞することがない。リプレイは、遊技者の手持ちのメダルを減らさないものであるがメダルの払い出しを伴わないので、ビッグボーナスの終了条件となる払い出しメダル数に影響しない。つまり、ビッグボーナス中にリプレイを入賞させても不必要にビッグボーナスのゲーム数を増やすだけのものとなってしまうので、リプレイをビッグボーナスにおける内部抽選の対象役として定めないことで、ビッグボーナスの遊技状態を無駄に長引かせることがなく、遊技を効率良く進めることができるようになる。
また、レギュラーボーナスの遊技状態では、小役(特にベル)に高い確率で当選し、非常に多くのメダルを獲得できるようになるので、これに対する遊技者の期待感は高い。このレギュラーボーナスには、小役ゲームでJACINに入賞したときに移行されるだけではなく、通常遊技状態でレギュラーボーナス(1)に入賞したときにも移行される。このため、通常遊技状態にあるときであっても、レギュラーボーナスに対する期待感を遊技者に与えることができるので、遊技の興趣を向上させることができる。更に、レギュラーボーナスにおいては、通常遊技状態や小役ゲームにおいても定められているチェリー、スイカ、ベルに加えて、JACも小役として定められている。これにより、レギュラーボーナスにおける遊技者の期待感を更に高めさせて、遊技の興趣を向上させることができる。
また、ビッグボーナスにおいて小役ゲームからレギュラーボーナスに遊技状態を移行させるためのJACINの表示態様は、「スイカ−ベル−ベル」の組み合わせにより構成され、他の役の表示態様として使用されていないものである。レギュラーボーナスにおいてチェリー、スイカ、ベルの小役に加えて入賞と判定されるJACの表示態様も、「ベル−JAC−JAC」の組み合わせにより構成され、他の役の表示態様として使用されていないものである。このため、リール2L、2C、2Rの表示結果として導出された表示態様と入賞となる役との関係が明確になり、遊技者にとっては遊技性が分かりやすいものとなる。
また、リール2L、2C、2Rの回転は、ストップスイッチ8L、8C、8Rの操作が検出されてから最大4コマ引き込んで停止されることとなり、停止すべき図柄は5図柄の範囲から選ぶことができる。ここで、「ベル」及び「JAC」の図柄は、リール2L、2C、2Rのいずれについても必ず4図柄以内の間隔で配置されており、「スイカ」の図柄は、左リールのいずれについても必ず4図柄以内の間隔で配置されているので、これらの図柄によって構成されるベル、リプレイ、JAC、及びJACINは、当選しているときには取りこぼしが生じない。特にレギュラーボーナス中のベルは、おおよそ1/1.03という非常に高い確率で当選することとなるが、これの取りこぼしが生じ得ないので、レギュラーボーナスでは遊技者が実質的には目押しをしなくても済むようになり、簡単に遊技を進められるようになる。
以上、本発明の実施例1を図面により説明してきたが、本発明はこの実施例1に限定されるものではなく、本発明の主旨を逸脱しない範囲における変更や追加があっても本発明に含まれることは言うまでもない。
以下に、前記実施例1の変形例について説明する。
まず、当選フラグ等に関連する変形例について説明する。
前記実施例1では、当選した特別役の役番号を格納する1バイトの特別役一時格納ワーク(iwin_bonus)と、当選した一般役の役番号を格納する1バイトの一般役一時格納ワーク(iwin_gen)と、当選フラグを格納する1バイトの内部当選フラグ格納ワーク(iwin_flag)と、がRAM41cに割り当てられており、内部抽選において特別役の当選が判定された場合に、当選した特別役の役番号が特別役一時格納ワーク(iwin_bonus)に格納され、内部抽選において一般役の当選が判定された場合に、当選した一般役の役番号が一般役一時格納ワーク(iwin_gen)に格納され、1ゲーム毎に、特別役一時格納ワーク(iwin_bonus)に格納されている特別役の役番号(00Hの場合は特別役のハズレ)の下位4ビット、一般役一時格納ワーク(iwin_gen)に格納されている一般役の役番号(00Hの場合は一般役のハズレ)の下位4ビットが、それぞれ内部当選フラグ格納ワーク(iwin_flag)の上位4ビット、下位4ビットに格納されることで、そのゲームの当選フラグが設定されるようになっているが、内部当選フラグ格納ワーク(iwin_flag)として連続する2バイトの領域を割り当て、1ゲーム毎に、特別役一時格納ワーク(iwin_bonus)に格納されている特別役の役番号を、内部当選フラグ格納ワーク(iwin_flag)を構成する2バイトの領域のうち特別役の当選フラグが設定される特別役領域として割り当てられた一方の1バイトの領域に格納し、一般役一時格納ワーク(iwin_gen)に格納されている一般役の役番号を、内部当選フラグ格納ワーク(iwin_flag)を構成する2バイトの領域のうち一般役の当選フラグが設定される一般役領域として割り当てられた他方の1バイトの領域に格納することで、そのゲームの当選フラグを設定するようにしても良く、このようにすることで、当選フラグを設定する際の処理を簡素化することができる。
また、前記実施例1では、特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)に役番号が格納されるようになっているが、1ビット単位で役を割り当て、当選が判定された役のビットに当選が判定された旨を示す値を格納することで、当選が判定された役を特定できるようにしても良い。すなわち当選が判定された役のビットに1または0の一方の値を格納し、当選していないと判定された役のビットに1または0の他方の値を格納することで、当選と判定された役を特定できるようにしても良い。また、内部当選フラグ格納ワーク(iwin_flag)に各役の役番号の下位4ビットが格納されるようになっているが、1ビット単位で役を割り当て、当選した役のビットに当選した旨を示す値を格納することで、当選した役を特定できるようにしても良い。すなわち当選している役のビットに1または0の一方の値を格納し、当選していない役のビットに1または0の他方の値を格納することで、当選した役を特定できるようにしても良い。
また、特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)には、当選と判定された役の役番号を格納し、内部当選フラグ格納ワーク(iwin_flag)には、ビット単位で役を割り当て、特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)に格納されている役番号に基づく値を変換し、内部当選フラグ格納ワーク(iwin_flag)の当選しているビットに当選を示す値(例えば、1)を格納し、当選していないビットに当選していない旨を示す値(例えば、0)を格納するようにしても良い。また、特別役一時格納ワーク(iwin_bonus)、一般役一時格納ワーク(iwin_gen)には、役毎にビットを割り当て、当選が判定された役のビットに当選が判定された旨を示す値(例えば、1)を格納し、当選が判定されていない役のビットに当選が判定されていない旨を示す値(例えば、0)を格納し、これら各ビットの状態に基づく値を変換し、内部当選フラグ格納ワーク(iwin_flag)に各領域に該当する役番号またはハズレを示す00Hを格納することで、当選している役を特定できるようにしても良い。
また、前記実施例1では、RAM41cに特別役一時格納ワーク(iwin_bonus)と、一般役一時格納ワーク(iwin_gen)と、内部当選フラグ格納ワーク(iwin_flag)と、を割り当て、一般役一時格納ワーク(iwin_gen)には、内部抽選を行う毎に、その結果に基づく役番号またはハズレを示す00Hを格納し、特別役一時格納ワーク(iwin_bonus)には、特別役が前回のゲーム以前から持ち越されていない状態において内部抽選で特別役の当選が判定された場合に、当選が判定された特別役の役番号が格納され、当該役番号の特別役が入賞するまで、特別役一時格納ワーク(iwin_bonus)に格納された役番号が維持され、当該役番号の特別役が入賞した際に、特別役一時格納ワーク(iwin_bonus)に格納された役番号がクリアされ、00Hが格納され、1ゲーム毎に一般役一時格納ワーク(iwin_gen)に格納されている値と特別役一時格納ワーク(iwin_bonus)に格納されている値とに基づいて内部当選フラグ格納ワーク(iwin_flag)の特別役領域及び一般役領域に当選フラグまたはハズレを示す値を設定するようになっており、一般役の当選フラグも特別役の当選フラグも、ともに当選フラグを設定するために一般役一時格納ワーク(iwin_gen)及び特別役一時格納ワーク(iwin_bonus)に記憶されている役番号に基づいて設定されることから、一般役の当選フラグを設定する処理と、特別役一時格納ワーク(iwin_bonus)の当選フラグを設定する処理と、が類似した処理となるため、処理プログラムを簡素化することができるので好ましいが、一般役一時格納ワーク(iwin_gen)をRAM41cに割り当てず、内部抽選を行う毎に、その結果のうち一般役に当選したか否かの結果に基づいて一般役の当選フラグまたはハズレを示すデータを内部当選フラグ格納ワーク(iwin_flag)の一般役領域に格納し、1ゲーム毎に特別役一時格納ワーク(iwin_bonus)に格納されている値に基づいて特別役の当選フラグまたはハズレを示す値を内部当選フラグ格納ワーク(iwin_flag)の特別役領域に設定するようにしても良く、このようにした場合には、内部当選フラグ格納ワーク(iwin_flag)の一般役領域には、1ゲーム毎に内部抽選の結果のうち一般役に当選したか否かの結果に基づく当選フラグまたはハズレを示すデータが直接設定されるので、一般役について、当選フラグを設定するための情報として役番号を記憶する一時格納領域をRAM41cに割り当てる必要がないうえに、一般役の役番号を設定する処理や一般役の役番号から当選フラグを設定する処理を省くことができる。
また、前記実施例では、当選した特別役の役番号を格納する記憶領域(特別役一時格納ワーク(iwin_bonus))と、当選した一般役の役番号を格納する記憶領域(一般役一時格納ワーク(iwin_gen))と、をRAM41cに割り当てているが、これらのいずれか一方または双方をCPU41aのレジスタに割り当てるようにしても良い。
次に、前記実施例1においてCPU41aが、内部抽選処理において遊技状態が通常遊技状態であるときに、実行していた通常用抽選処理(A)の変形例である通常用抽選処理(B)、通常用抽選処理(C)について説明する。
以下に、通常用抽選処理(B)の詳細を図37に基づいて説明する。尚、通常用抽選処理(B)の実行開始時点においては、Aレジスタはクリア(00Hが格納)されており、HLレジスタには内部抽選用の乱数の値が格納されているものとする。
通常用抽選処理(B)では、図37に示すように、まずAレジスタと特別役一時格納ワーク(iwin_bonus)との論理和を算出してその結果をAレジスタに格納し(Sf501)、Sf502のステップに進む。
Sf502のステップでは、Aレジスタの値が0でないかを判定し、0でない場合にはSf518のステップにジャンプする。また、Aレジスタの値が0である場合にはSf503のステップに進む。
Sf503のステップでは、前述したBB(1)抽選確率取得処理{図26(a)参照}の実施に基づいてビッグボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf504のステップに進んで、ビッグボーナス(1)の役番号(01H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf505)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf516のステップにジャンプする(Sf506)。また、オーバーフローが生じなかった場合にはSf507のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(1)が当選した旨を示している。
Sf507のステップでは、前述したBB(2)抽選確率取得処理の実施に基づいてビッグボーナス(2)の判定値数を取得してDEレジスタに格納する。更に、Sf508のステップに進んで、ビッグボーナス(2)の役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(2)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf509)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf516のステップにジャンプする(Sf510)。また、オーバーフローが生じなかった場合にはSf511のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(2)が当選した旨を示している。
Sf511のステップでは、前述したRB(2)抽選確率取得処理の実施に基づいてレギュラーボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf512のステップに進んで、レギュラーボーナス(1)の役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているレギュラーボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf513)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf516のステップにジャンプする(Sf514)。また、オーバーフローが生じなかった場合にはSf515のステップに進む。尚、オーバーフローの発生は、レギュラーボーナス(1)が当選した旨を示している。
Sf515のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれも当選しなかった場合に実行されるステップであり、何の処理も行わずにSf518のステップにジャンプする。
Sf516のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した場合のジャンプ先であり、Sf504、Sf508、Sf512のステップにおいてAレジスタに格納された特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納した後、Sf517のステップに進む。そしてSf517のステップでは、何の処理も行わずにSf534のステップにジャンプする。
Sf518のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれも当選しなかった場合のジャンプ先であり、前述したチェリー抽選確率取得処理の実施に基づいてチェリーの判定値数をDEレジスタに格納する。更に、Sf519のステップに進んで、チェリーの役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているチェリーの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf520)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf535のステップにジャンプする(Sf521)。また、オーバーフローが生じなかった場合にはSf522のステップに進む。尚、オーバーフローの発生は、チェリーが当選した旨を示している。
Sf522のステップでは、前述したスイカ抽選確率取得処理の実施に基づいてスイカの判定値数をDEレジスタに格納する。更に、Sf523のステップに進んで、スイカの役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているスイカの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf524)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf535のステップにジャンプする(Sf525)。また、オーバーフローが生じなかった場合にはSf526のステップに進む。尚、オーバーフローの発生は、スイカが当選した旨を示している。
Sf526のステップでは、前述したベル抽選確率取得処理の実施に基づいてベルの判定値数をDEレジスタに格納する。更に、Sf527のステップに進んで、ベルの役番号(04H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているベルの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf528)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf535のステップにジャンプする(Sf529)。また、オーバーフローが生じなかった場合にはSf530のステップに進む。尚、オーバーフローの発生は、ベルが当選した旨を示している。
Sf530のステップでは、前述したリプレイ抽選確率取得処理の実施に基づいてリプレイの判定値数をDEレジスタに格納する。更に、Sf531のステップに進んで、リプレイの役番号(05H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているリプレイの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf532)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf535のステップにジャンプする(Sf533)。また、オーバーフローが生じなかった場合にはSf534のステップに進む。尚、オーバーフローの発生は、リプレイが当選した旨を示している。
Sf534のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれも当選しなかった場合に実行されるステップであり、また、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した旨を設定した後(Sf517)のジャンプ先でもある。Sf534のステップでは、Aレジスタの値をクリア{Aレジスタに00Hを格納}した後、Sf535のステップに進む。
Sf535のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれかが当選した場合のジャンプ先であり、Sf519、Sf523、Sf527、Sf531のステップにおいてAレジスタに格納された一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納した後、通常用抽選処理(B)を終了する。
以上のように通常用抽選処理(B)は、通常用抽選処理(A)とほぼ同様の処理ステップから構成されているが、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するステップの記載位置、すなわちSf132のステップとSf516のステップの記載位置が異なっている。これらステップの記載位置について、通常用抽選処理(A)を実装したプログラムの一例を示す図39(a)と、通常用抽選処理(B)を実装したプログラムの一例を示す図39(b)に基づいて説明する。
通常用抽選処理(A)においては、図39(a)に示すように、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)の内部抽選を行うSf103〜Sf114のステップと、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf115〜Sf130のステップとが記載された後に、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するSf132のステップと、当選した一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納するSf134のステップが記載されている。
一方、通常用抽選処理(B)においては、図39(b)に示すように、特別役の内部抽選を行うSf503〜Sf514のステップが記載された後に、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するSf516のステップが記載され、更には、それ以降に記載されている不要なステップを実行しないためのジャンプ処理であるSf517のステップが記載される。そして、一般役の内部抽選を行うSf518〜Sf533のステップが記載された後に、当選した一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納するSf535のステップが記載されている。
すなわち、通常用抽選処理(B)は、特別役の内部抽選を行うステップの直後に、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するステップが記載され、更には、一般役の内部抽選を行うステップの直後に、当選した一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納するステップが記載されることで、特別役用のステップと一般役用のステップとがそれぞれ1まとまりに記載され、特別役用のステップと一般役用のステップとが分かれて記載されている。このため、新機種の開発を行う際に、役の種類や数を変更する場合でも、変更しなければならない処理プログラムを容易に特定することができる。
以下に、通常用抽選処理(C)の詳細を図38に基づいて説明する。尚、通常用抽選処理(C)の実行開始時点においては、Aレジスタはクリア(00Hが格納)されており、HLレジスタには内部抽選用の乱数の値が格納されているものとする。
通常用抽選処理(C)では、図38に示すように、まずAレジスタと特別役一時格納ワーク(iwin_bonus)との論理和を算出してその結果をAレジスタに格納し(Sf601)、Sf602のステップに進む。
Sf602のステップでは、Aレジスタの値が0でないかを判定し、0でない場合にはSf618のステップにジャンプする。また、Aレジスタの値が0である場合にはSf603のステップに進む。
Sf603のステップでは、前述したBB(1)抽選確率取得処理{図26(a)参照}の実施に基づいてビッグボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf604のステップに進んで、ビッグボーナス(1)の役番号(01H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf605)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf616のステップにジャンプする(Sf606)。また、オーバーフローが生じなかった場合にはSf607のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(1)が当選した旨を示している。
Sf607のステップでは、前述したBB(2)抽選確率取得処理の実施に基づいてビッグボーナス(2)の判定値数を取得してDEレジスタに格納する。更に、Sf608のステップに進んで、ビッグボーナス(2)の役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているビッグボーナス(2)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf609)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf616のステップにジャンプする(Sf610)。また、オーバーフローが生じなかった場合にはSf611のステップに進む。尚、オーバーフローの発生は、ビッグボーナス(2)が当選した旨を示している。
Sf611のステップでは、前述したRB(2)抽選確率取得処理の実施に基づいてレギュラーボーナス(1)の判定値数を取得してDEレジスタに格納する。更に、Sf612のステップに進んで、レギュラーボーナス(1)の役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているレギュラーボーナス(1)の判定値数を加算し、加算の結果をHLレジスタに格納する(Sf613)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じなかったかを判定し、オーバーフローが生じなかった場合にはSf617のステップにジャンプする(Sf614)。また、オーバーフローが生じた場合にはSf615のステップに進む。尚、オーバーフローの発生は、レギュラーボーナス(1)が当選した旨を示している。
Sf615のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した場合に実行されるステップであり、Sf604、Sf608、Sf612のステップにおいてAレジスタに格納された特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納した後、Sf616のステップに進む。そしてSf616のステップでは、何の処理も行わずにSf633のステップにジャンプする。
Sf617のステップは、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれも当選しなかった場合のジャンプ先であり、前述したチェリー抽選確率取得処理の実施に基づいてチェリーの判定値数をDEレジスタに格納する。更に、Sf618のステップに進んで、チェリーの役番号(02H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているチェリーの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf619)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf634のステップにジャンプする(Sf620)。また、オーバーフローが生じなかった場合にはSf621のステップに進む。尚、オーバーフローの発生は、チェリーが当選した旨を示している。
Sf621のステップでは、前述したスイカ抽選確率取得処理の実施に基づいてスイカの判定値数をDEレジスタに格納する。更に、Sf622のステップに進んで、スイカの役番号(03H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているスイカの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf623)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf634のステップにジャンプする(Sf624)。また、オーバーフローが生じなかった場合にはSf625のステップに進む。尚、オーバーフローの発生は、スイカが当選した旨を示している。
Sf625のステップでは、前述したベル抽選確率取得処理の実施に基づいてベルの判定値数をDEレジスタに格納する。更に、Sf626のステップに進んで、ベルの役番号(04H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているベルの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf627)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf634のステップにジャンプする(Sf628)。また、オーバーフローが生じなかった場合にはSf629のステップに進む。尚、オーバーフローの発生は、ベルが当選した旨を示している。
Sf629のステップでは、前述したリプレイ抽選確率取得処理の実施に基づいてリプレイの判定値数をDEレジスタに格納する。更に、Sf630のステップに進んで、リプレイの役番号(05H)をAレジスタに格納する。
そしてCPU41aは、HLレジスタに格納されている内部抽選用の乱数の値にDEレジスタに格納されているリプレイの判定値数を加算し、加算の結果をHLレジスタに格納する(Sf631)。ここで、判定値数を内部抽選用の乱数の値に加算したときにオーバーフローが生じたかを判定し、オーバーフローが生じた場合にはSf634のステップにジャンプする(Sf632)。また、オーバーフローが生じなかった場合にはSf633のステップに進む。尚、オーバーフローの発生は、リプレイが当選した旨を示している。
Sf633のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれも当選しなかった場合に実行されるステップであり、また、特別役であるビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナス(1)のいずれかが当選した旨を設定した後(Sf616)のジャンプ先でもある。Sf633のステップでは、Aレジスタの値をクリア{Aレジスタに00Hを格納}した後、Sf634のステップに進む。
Sf634のステップは、一般役であるチェリー、スイカ、ベル、リプレイのいずれかが当選した場合のジャンプ先であり、Sf618、Sf622、Sf626、Sf630のステップにおいてAレジスタに格納された一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納した後、通常用抽選処理(C)を終了する。
以上のように通常用抽選処理(C)は、通常用抽選処理(B)と同様に、特別役の内部抽選を行うSf603〜Sf614のステップが記載された後に、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するSf615のステップが記載され、更には、それ以降に記載されている不要なステップを実行しないためのジャンプ処理であるSf616のステップが記載される。そして、一般役の内部抽選を行うSf617〜Sf632のステップが記載された後に、当選した一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納するSf634のステップが記載されている。
すなわち、図39(c)に示すように、通常用抽選処理(C)も、特別役の内部抽選を行うステップの直後に、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するステップが記載され、更には、一般役の内部抽選を行うステップの直後に、当選した一般役の役番号を一般役一時格納ワーク(iwin_gen)に格納するステップが記載されることで、特別役用のステップと一般役用のステップとがそれぞれ1まとまりに記載され、特別役用のステップと一般役用のステップとが分かれて記載されている。このため、新機種の開発を行う際に、役の種類や数を変更する場合でも、変更しなければならない処理プログラムを容易に特定することができる。
一方、通常用抽選処理(C)は、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うステップに移行するステップの記載方法、すなわち、Sf518〜Sf533のステップに移行するSf514〜Sf515のステップと、Sf617〜Sf632のステップに移行するSf614のステップの記載内容が、通常用抽選処理(B)と異なっている。これらステップの記載内容について、通常用抽選処理(B)を実装したプログラムの一例を示す図39(b)と、通常用抽選処理(C)を実装したプログラムの一例を示す図39(c)に基づいて説明する。
通常用抽選処理(B)においては、図39(b)に示すように、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf518〜Sf533のステップは、Sf514のステップにおいて、オーバーフローが生じたか、を判定した結果がNであるときに、その進行先としてのSf515のステップにおけるジャンプ先として記載されている。
一方、通常用抽選処理(C)においては、図39(c)に示すように、一般役であるチェリー、スイカ、ベル、リプレイの内部抽選を行うSf617〜Sf632のステップは、Sf614のステップにおいて、オーバーフローが生じていないか、を判定した結果がYであるときのジャンプ先として記載されている。
すなわち、通常用抽選処理(C)は、通常用抽選処理(B)のように判定ステップ(Sf514)における判定結果がYであるときのジャンプ処理によって、判定ステップ(514)から、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するSf516のステップに移行するのではなく、判定ステップ(Sf614)における判定結果がNであるときに、ジャンプすることなく直接、当選した特別役の役番号を特別役一時格納ワーク(iwin_bonus)に格納するSf615のステップに移行するようになっている。
このため、同一の役の抽選を行う場合に、通常用抽選処理(C)では、ジャンプ処理(図中「jr」の処理)が通常用抽選処理(B)に比較して少なくて済むようになり、その他の処理に要するプログラム容量は同一であるので、内部抽選を実行するための処理プログラムの容量を削減することが可能となる。
尚、通常用抽選処理(C)では、特別役のうち最後に当選しているか否かが判定されるレギュラーボーナス(1)の種類を示す役番号を、他の特別役と同様に、DEレジスタの値(レギュラーボーナス(1)の判定値数)をHLレジスタの値(内部抽選用の乱数)に加算し、オーバーフローしていないか否かの判定を行う前(Sf613、Sf614のステップの前)に、Aレジスタに格納しているが、特別役のうち最後に当選しているか否かが判定される特別役の種類を示す役番号を、DEレジスタの値(最後に判定される特別役の判定値数)をHLレジスタの値(内部抽選用の乱数)に加算し、オーバーフローしていないか否かの判定を行った後(Sf613、Sf614のステップの後)、オーバーフローしていないと判定されなかった場合、すなわち最後に判定される特別役が当選していると判定された場合に、Aレジスタに格納するようにしても良く、このようにした場合には、最後に判定される特別役の種類を示す役番号が、当該特別役に当選したときのみAレジスタに格納され、当該特別役が当選せず、一般役の判定に移行する場合には、当該特別役の種類を示す役番号をAレジスタに格納する処理を省くことができるので、抽選処理に伴う処理を簡素化することができる。
また、上記した通常用抽選処理(A)〜(C)では、当選しているか否かの判定がなされる役の種類を示す役番号を格納する記憶領域としてCPU41aが備えるAレジスタを割り当てているが、CPU41aが備える他のレジスタに割り当てても良いし、更には、RAM41cに割り当てるようにしても良い。
また、上記では、RAM41cに特別役一時格納ワーク(iwin_bonus)と、一般役一時格納ワーク(iwin_gen)と、内部当選フラグ格納ワーク(iwin_flag)と、が割り当てられている例を適用して通常抽選処理(A)〜(C)について説明しているが、前述のように、一般役一時格納ワーク(iwin_gen)を設けず、通常抽選処理(A)〜(C)において、当選と判定された一般役またはハズレを示すデータを内部当選フラグ格納ワーク(iwin_flag)の一般役領域に格納するようにしても良く、このようにした場合でも、上記と同様の作用効果を得られるものである。
次に、内部抽選に用いる判定値数の格納方法、内部抽選の抽選方法等の変形例について説明する。
前記実施例1では、内部抽選に用いる判定値数が記憶されるRAM41cの判定値数記憶領域は、2バイトの領域を用いて、それぞれの場合における判定値数を記憶するものとしていた。もっとも、一般的なスロットマシンでは、特別役の判定値数は、いずれの遊技状況においても255を超えるものが設定されることはあまりない。このように255を超える判定値数を設定する必要がないものについては、1バイトの領域だけを用いて、判定値数を記憶するものとしても良い。
また、前記実施例1では、判定値数が設定値に関わらず共通のものについて、その一部を設定値1〜6の全体に共通して記憶しているが、判定値数が設定値に関わらず共通のものについても、設定値1〜6のそれぞれに対して個別に記憶することもできる。また、判定値数が設定値に関わらず共通のものは、その全てを設定値1〜6の全体に共通して記憶することもできる。
また、前記実施例1では、判定値数が、設定値1〜6の全体に共通して記憶されているか、設定値1〜6のそれぞれに対して個別に記憶されているかであった。もっとも、設定値1〜6の全体に共通して判定値数が記憶されない(設定値についての共通フラグが設定されない)ものとして、例えば、設定値1〜3については判定値数が共通、設定値4〜6については判定値数が共通のものとすることもできる。賭数についての判定値数についても同様で、例えば賭数1と2については共通、賭数3では個別とすることもできる。
また、前記実施例1では、同一の設定値における同一の役について賭数に応じて参照される判定値数が賭数(1または3)のそれぞれに対して異なるアドレスに格納されていた。すなわち同一の設定値における同一の役について賭数に応じて参照される判定値数が同じであっても個別に記憶されていたが、賭数に関わらず当選確率を同一とするものとした役について、判定値数の格納先のアドレスを共通化したり、設定値及び賭数に関わらず当選確率を同一とするものとした役について、判定値数の格納先のアドレスを共通化するようにしても良く、このように判定値数を共通化して格納することで、そのために必要な記憶容量が少なくて済むようになる。
また、前記実施例1では、設定値等に応じて取得した判定値数を内部抽選用の乱数の値に順次加算していたが、取得した判定値数を取得した内部抽選用の乱数の値から順次減算して、減算の結果を新たな内部抽選用の乱数の値とするものとしても良い。判定値数を内部抽選用の乱数の値から減算するときには、減算の結果にオーバーフロー(ここでは、減算結果がマイナスとなること)が生じたかどうかを判定するものとすることができる。
また、前記実施例1では、内部抽選において、取得した内部抽選用の乱数の値に遊技状態に応じた各役の判定値数を順次加算していき、加算結果がオーバーフローしたときに当該役を当選と判定するものとしていた。これに対して、遊技状態に応じた各役の判定値数に応じて、各役を当選と判定する判定値の範囲を定めた当選判定用テーブルをゲーム毎に作成し、取得した内部抽選用の乱数の値を各役の判定値の範囲と比較することで、内部抽選を行うものとしても良い。また、各役を当選と判定する判定値の範囲を定めた当選判定用テーブルを予めROM41bに格納しておき、取得した内部抽選用の乱数の値を各役の判定値の範囲と比較することで、内部抽選を行うものとしても良い。
また、前記実施例1では、通常遊技状態及びビッグボーナス中の小役ゲームにおいて、賭数として3を設定することのみによりゲームを開始させることができた。これに対して、通常遊技状態及びビッグボーナス中の小役ゲームにおいても、賭数として1を設定してゲームを開始させることをできるようにしたり、更には賭数として2を設定してゲームを開始させることをできるようにしても良い。これにより、通常遊技状態及びビッグボーナス中の小役ゲームで賭数として1または2が設定されていたときには、賭数として3が設定されたときよりも内部抽選における小役の当選確率を低下させるともに、小役に入賞したときの払い出しメダル枚数を増加させることができる。例えば、通常遊技状態及びビッグボーナス中の小役ゲームで賭数として3が設定されたときには、ベルの当選確率を1/4.82、払出枚数を7枚とするが、賭数として1または2が設定されたときには、ベルの当選確率を1/4.82よりも低くし、払出枚数を7枚よりも多くしても良い。更に賭数として1が設定されたときと2が設定されたときとで、ベルの当選確率及び払出枚数を変えても良い。
次に、内部抽選用の乱数の取得方法についての変形例について説明する。
前記実施例1では、乱数発生回路42から抽出した乱数の上位バイト全体を下位バイトで置換し、下位バイト全体を上位バイトで置換するという入れ替えを行っていた。これに対して、乱数発生回路42から抽出した乱数のビットのうちの特定のビットのデータを他のビットのデータで置換するだけであっても良い。また、乱数発生回路42から抽出した乱数の値を、そのまま内部抽選用の乱数として取得するものとしても良い。更に、上記の実施の形態とは異なる方法により内部抽選用の乱数に加工するものとしても良い。
図40は、乱数発生回路42から抽出した乱数をCPU41aがソフトウェアにより内部抽選用の乱数に加工するまでの処理の第1の変形例の説明図である。この第1の変形例でも、乱数発生回路42から抽出された乱数は、CPU41aが有する16ビットの汎用レジスタであるHLレジスタに格納されるものとなる。
乱数発生回路42から抽出された乱数が汎用レジスタ41GRに格納されると、CPU41aは、更に内部のリフレッシュレジスタ(Rレジスタ)の値を加工用の乱数として抽出する。CPU41aは、HLレジスタの上位バイトの値(上位カウンタ42cから抽出した値)にRレジスタから抽出した加工用の乱数を加算する。HLレジスタの下位バイトの値(下位カウンタ42bから抽出した値)は、そのままにしておく。そして、CPU41aは、このときにHLレジスタに格納されている値を内部抽選用の乱数とし、これに判定値数を順次加算していくものとなる。
図41は、乱数発生回路42から抽出した乱数をCPU41aがソフトウェアにより内部抽選用の乱数に加工するまでの処理の第2の変形例の説明図である。この例でも、乱数発生回路42から抽出された乱数は、CPU41aが有する16ビットの汎用レジスタであるHLレジスタに格納されるものとなる。
乱数発生回路42から抽出された乱数が汎HLレジスタに格納されると、CPU41aは、更に内部のRレジスタの値を加工用の乱数として抽出する。CPU41aは、HLレジスタの上位バイトの値(上位カウンタ42cから抽出した値)にRレジスタから抽出した加工用の乱数を加算する。また、HLレジスタの下位バイトの値(下位カウンタ42bから抽出した値)にもRレジスタから抽出した加工用の乱数を加算する。そして、CPU41aは、このときにHLレジスタに格納されている値を内部抽選用の乱数とし、これに判定値数を順次加算していくものとなる。
以上説明した第1、第2の変形例では、Rレジスタの値を加工用の乱数として抽出し、これを乱数発生回路42から抽出した乱数の上位バイト(第2変形例では、更に下位バイト)に加算して、乱数の加工を行うものとしている。ここで適用した乱数の加工には、少なくとも加工用の乱数を上位バイトに加算する処理を含んでいる。これにより、内部抽選用の乱数のバラツキを大きくすることができ、遊技者による狙い打ちを可能な限り防ぐことができる。
また、加工用の乱数をRレジスタから抽出するものとしたことで、加工用の乱数を生成する手段として特別な構成が必要ない。しかも、Rレジスタの値は、CPU41aの命令フェッチ毎に更新されるもので、その更新間隔は一定しないので、ランダム性の高い乱数を加工用の乱数として抽出することができる。そして、加工用の乱数のランダム性が高いことから、これを用いて生成される内部抽選用の乱数のランダム性も高くなる。
尚、上記第1、第2の変形例において、乱数発生回路42から抽出した乱数の上位バイト(及び下位バイト)にRレジスタから抽出した値を加算していたが、Rレジスタ以外でハードウェアまたはソフトウェアにより周期的に更新される値を加算しても良い。また、Rレジスタから抽出した値(或いは、Rレジスタに代わるものの値)を加算するのではなく、減算や、論理和、論理積などの論理演算を行っても良い。
また、前記実施例で示した上位バイトと下位バイトとの入れ替えのようなビットの置換を、第1、第2の変形例に併用するものとしても良い。上記第1、第2の変形例においても、乱数発生回路42からの乱数の抽出から加工を終了するまでの間は、HLレジスタの内容が書き換えられてしまうのを防ぐため、CPU41aに対する割り込みが禁止されるものとなる。
また、第2の変形例においては、乱数発生回路42から抽出した乱数の上位バイトと下位バイトにそれぞれ加算する加工用の乱数を、Rレジスタから異なるタイミングで別々に抽出しても良い。上位バイトに加算する加工用の乱数を更新する手段と、下位バイトに加算する加工用の乱数を更新する手段とを別々に用意し、それぞれから上位バイト用、下位バイト用の加工用の乱数を抽出する手段を設けるものとしても良い。この場合において、上位バイト用の加工用の乱数を更新する手段と下位バイト用の加工用の乱数を更新する手段の一方をRレジスタによって構成するものとすることができる。
また、前記実施例では、乱数発生回路42が発生する乱数、すなわちハードウェア乱数機能により抽出した乱数をソフトウェアにより加工する場合に本発明を適用した場合について説明した。しかしながら、上記したソフトウェアによる乱数の加工は、ソフトウェアにより周期的に更新される乱数に適用しても良い。例えば、メイン制御部41を構成するマイクロコンピュータとは別の第2のマイクロコンピュータにおいてタイマ割り込みなどにより周期的に更新される乱数を、CPU41aが第2のマイクロコンピュータに指示を送って抽出させ、I/Oポート41dを介してCPU41aに入力して、HLレジスタに格納するものとすることができる。第2のマイクロコンピュータの機能は、メイン制御部41を構成するマイクロコンピュータに含まれていても良い。この場合にも、加工後に取得される乱数の値をバラつかせることができるようになり、遊技者による狙い打ちの防止の効果を図ることができる。
また、上記では、抽出した乱数も加工後の乱数もCPU41aが備える汎用レジスタ(HLレジスタ)に格納し、内部抽選では、この汎用レジスタに格納された値に、各役の判定値数を順次加算していく構成としているが、加工後を乱数、すなわち取得した乱数をRAM41cに格納し、RAM41cに格納された値に、各役の判定値数を順次加算していく構成としても良い。
次に、特別役及び一般役の変形例について説明する。
前記実施例1では、特別役として、ビッグボーナスへの移行を伴うビッグボーナス(1)、ビッグボーナス(2)、レギュラーボーナスへの移行を伴うレギュラーボーナス(1)、レギュラーボーナス(2)、JACINを例示しているが、異なる図柄の組み合わせが揃って特別役が入賞することによって、異なる特別遊技状態(例えば、ビッグボーナス(1)では、ビッグボーナス中のメダルの払出総数が第1の規定枚数以上となると終了し、ビッグボーナス(2)では、ビッグボーナス中のメダルの払出総数が第1の規定枚数よりも少ない第2の規定枚数以上となると終了するもの、すなわち特別役の種類によって移行する特別遊技状態は同じであるが、終了条件が異なるもの、ビッグボーナス(1)では、ビッグボーナス(1)では、ビッグボーナスの終了後、リプレイの当選確率が通常遊技状態よりも高く、リプレイの入賞確率が高まることでメダルの減少が抑制されるリプレイタイムに移行し、ビッグボーナス(2)では、ビッグボーナス終了後、リプレイタイムには移行せず、通常遊技状態に移行するもの、すなわち役の種類によって付加的な価値が付与されるものとそうでないもの、など)に移行するものであっても良いし、前記実施例1のようにビッグボーナス(1)の組み合わせが入賞ライン上に揃って入賞した場合にも、ビッグボーナス(2)の組み合わせが入賞ライン上に揃って入賞した場合にも、同一のビッグボーナスに移行するもの、すなわち異なる図柄の組み合わせが揃って特別役が入賞した場合に同一の特別遊技状態に移行するものであっても良い。更には、異なる図柄の組み合わせが揃って特別役が入賞した場合に、遊技者に対する有利度を高めるための制御が異なるもの、すなわち入賞確率を高めるための制御が異なるもの(例えば、ビッグボーナス(1)では、実施例1で説明したビッグボーナス(レギュラーボーナスへの移行を伴うレギュラーボーナス(2)やJACINの当選確率が通常遊技状態よりも高い遊技状態)に移行し、ビッグボーナス(2)では、通常遊技状態よりも図柄の引込範囲は小さくなるが、特定の小役の当選フラグが当選していない場合でも、小役の図柄を引き込んで停止させることを許容することにより、通常遊技状態よりも高い確率で小役を入賞させることが可能なチャレンジボーナス(CB)に移行するものなど)に移行するものであっても良い。
また、前記実施例1では、一般役として付与されるメダル数や価値(リプレイゲーム)が異なるJAC、チェリー、スイカ、ベル、リプレイ(尚、レギュラーボーナス中において、JAC、スイカ、ベルは、ともに同一の価値が付与される)を例示しているが、異なる図柄の組み合わせが入賞ライン上に揃って一般役が入賞した際に、実施例1のように異なるメダル数や価値が付与されるものであっても良いし、なる図柄の組み合わせが入賞ライン上に揃って一般役が入賞した際に、同一のメダル数や価値が付与されるものであっても良い。
次に、RAM41cの初期化についての変形例について説明する。
前記実施例1において、CPU41aがRAM41cの初期化を行う際には、ROM41bの初期化テーブルを参照し、初期化条件に応じて初期化1〜4のいずれかに対応する開始アドレスと初期化サイズを取得し、開始アドレスにポインタを設定し、初期化サイズを設定するとともに、ポインタが設定された初期化アドレスから1バイトづつ該当するアドレスの領域を0クリアし、1バイトクリアする毎に初期化サイズを1減算するとともに、ポインタを1進める処理を、初期化サイズが0になるまで実行することで、初期化条件に応じたRAM41cの領域を初期化しているが、初期化1〜4において初期化される領域を連続するアドレス領域に設定するとともに、初期化テーブルには、初期化条件に応じて初期化1〜4のいずれかに対応する開始アドレスと、初期化1〜4の全てに共通する終了アドレスと、を登録しておき、CPU41aがRAM41cの初期化を行う際に、初期化テーブルを参照し、初期化条件に応じて初期化1〜4のいずれかに対応する開始アドレスを取得し、開始アドレスにポインタを設定するとともに、ポインタが設定された初期化アドレスから1バイトづつ該当するアドレスの領域を0クリアし、1バイトクリアする毎に、ポインタを進める処理を、初期化1〜4に共通の終了アドレスの領域がクリアされるまで実行することで、初期化条件に応じたRAM41cの領域を初期化するようにしても良い。
尚、この場合、1バイトクリアする毎に、ポインタが示すアドレスが終了アドレスであるかを判定し、終了アドレスであれば初期化を終了させるようにしても良いが、まず、初期化テーブルから取得した開始アドレスから共通の終了アドレスまでの初期化バイト数を計算して設定し、開始アドレスから1バイトクリアする毎に初期化バイト数を1減算するとともに、ポインタを1進める処理を、初期化バイト数が0になるまで実行し、初期化バイト数が0となった時点で終了アドレスの領域がクリアされたと判定し、初期化を終了することが好ましい。これは、ポインタが示すアドレスと終了アドレスを1バイト毎に比較する処理を行うよりも、初期化バイト数が0か否かを判定する処理の方が処理効率が高いからである。
図42(a)は、RAM41cの格納領域の変形例を示す図であり、図38(b)は、初期化テーブルの変形例を示す図であり、図39は、初期化1の変形例を示すフローチャートである。
図42(a)に示すように、この変形例においては、RAM41cの格納領域が7E00Hから、設定値ワーク1〜3、特別ワーク、重要ワーク、非保存ワーク、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域、使用中スタック領域の順番で割り当てられている。このため、初期化1、2、4のいずれを行った場合でも、初期化される領域が連続するアドレス領域となる。詳しくは、初期化1において初期化される領域は、使用中スタック領域を除く全ての領域、すなわち、設定値ワーク1〜3、特別ワーク、重要ワーク、非保存ワーク、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域であり、これらの領域は、7E00H〜スタックポインタまでの連続するアドレス領域である。また、初期化2において初期化される領域は、一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域であり、これらの領域は、7E53H〜スタックポインタまでの連続するアドレス領域である。また、初期化4において初期化される領域は、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域であり、これらの領域は、7F04H〜スタックポインタまでの連続するアドレス領域である。尚、初期化2において一般ワーク、内部当選フラグ格納ワーク(iwin_flag)、未使用領域、未使用スタック領域が初期化されるのに対して、初期化3では、非保存ワーク、未使用領域、未使用スタック領域が初期化されるので、初期化3において初期化される内部当選フラグ格納ワーク(iwin_flag)、未使用領域及び未使用スタック領域は、連続するアドレス領域となるが、非保存ワークは連続しないアドレス領域となる。
図42(b)に示すように、この変形例において適用する初期化テーブルには、初期化1〜4に対応して開始アドレスが登録されているとともに、初期化1〜4に共通する終了アドレスが登録されている。また、初期化3については、非保存ワークが連続しないアドレス領域となるので、非保存ワークの開始アドレスに対応して初期化サイズが登録されている。
次に、図43に示すフローチャートに基づいて、CPU41aが実行する初期化1の変形例を説明する。
この初期化1では、まず、ROM41bの初期化テーブルを参照し、初期化1に対応して登録されている開始アドレスを読み出す(Sm101)。そして、読み出した開始アドレス(7E00H)にポインタをセットする(Sm102)。次いで、ROM41bの初期化テーブルを参照し、初期化1〜4に共通の終了アドレスを読み出す(Sm103)。そして、Sm101で読み出した開始アドレス(7E00H)からSm103で読み出した終了アドレス(スタックポインタ)までのバイト数を計算し(Sm104)、計算したバイト数を初期化する領域のバイト数をセットする(Sm105)。そして、Sm102でセットされた開始アドレスからSm105でセットされたバイト数にわたりデータをクリアするRAMクリア処理を実行し(Sm106)、RAMクリア処理が終了すると、初期化1を終了してもとの処理に復帰する。
また、初期化2、4の変形例は、図43に示す初期化1の変形例とほぼ同様の処理であり、初期化テーブルに登録されている初期化2または初期化4の開始アドレスを取得し、開始アドレスから共通の終了アドレスまでのバイト数を計算し、開始アドレスから計算したバイト数にわたりデータをクリアする処理を行う。また、初期化3の変形例では、まず、初期化テーブルに登録されている非保存ワークの開始アドレスと初期化サイズを取得し、開始アドレスから初期化サイズ分のバイト数にわたりデータをクリアした後、初期化テーブルに登録されている未使用領域及び未使用スタック領域の開始アドレスを取得し、開始アドレスから共通の終了アドレスまでのバイト数を計算し、開始アドレスから計算したバイト数にわたりデータをクリアする処理を行う。
上記のようなRAM41cの初期化の変形例によれば、複数の初期化条件について、初期化テーブルに対応する開始アドレスとこれら複数の初期化条件に共通の終了アドレスのみを設定しておくことで、複数の初期化条件に対応する終了アドレスを個々に設定しておくことなく、複数の初期化条件に対応する領域を初期化することができるので、複数種類の初期化を行うためのプログラム容量を削減できる。
次に、RAM41cに格納されているデータの異常判定等の変形例について説明する。
前記実施例1では、電断割込処理においてRAM41cのRAMパリティが0となるようにRAMパリティ調整用データを格納し、復旧時においてRAM41cのRAMパリティが0か否かを判定することで、RAM41cのデータが正常か否かを判定しているが、もちろん電断割込処理においてRAM41cのRAMパリティが1となるようにRAMパリティ調整用データを格納し、復旧時においてRAM41cのRAMパリティが1か否かを判定することで、RAM41cのデータが正常か否かを判定するようにしても良い。更には、電断割込処理においてRAM41cの全ての領域のチェックサム(該当する領域に格納されているデータの排他的論理和)を計算し、特定の領域に格納するとともに、復旧時において、RAM41cのチェックサムが格納されている特定の領域を含む全ての領域のチェックサムを計算し、その結果が00HであればRAM41cのデータが正常であると判定し、00HでなければRAM41cのデータが異常であると判定するようにしても良い。
これは、電断割込処理において正常にチェックサムが格納されていれば、復旧時において特定の領域を除く領域のチェックサムと特定の領域に格納されているデータ(電断時に計算したチェックサム)が同じ値をとるはずであり、特定の領域を除く領域のチェックサムと特定の領域に格納されているデータが一致するのであれば、双方のデータの排他的論理和を計算するとその結果が00Hとなるので、RAM41cのチェックサムが格納されている特定の領域を含む全ての領域のチェックサムを計算した結果が00Hであれば、RAM41cのデータが正常であると判定できるためである。
尚、この場合にも、電断割込処理において、チェックサムを計算する前にいずれかのビットが1となる破壊診断用データ(例えば5AH)を所定のアドレスに格納し、復旧時においては、チェックサムが00Hか否かの判定に加えて、破壊診断用データが正常に格納されているか否かの判定を行い、チェックサムが00Hであり、かつ破壊診断用データも正常であることを条件に、RAM41cのデータが正常であると判定することが好ましい。RAM41cのデータが正常でなくても、全ての領域に00Hが格納されている場合には、起動時のチェックサムの判定により正常であると判定されてしまうが、停電時にいずれかのビットが1となる破壊診断用データを格納した後、チェックサムを計算し、特定の領域に格納しておくとともに、起動時にチェックサムの判定に加えて破壊診断用データのチェックも行うことで、例え、起動時において全ての領域が0クリアされてしまい、チェックサムが00Hとなり正常と判定された場合にも、破壊診断用データが停電時に格納された値と一致しなくなり、異常と判定されるため、RAM41cに格納されているデータの異常の判定精度を高めることができる。
また、上記では、電断割込処理においてRAM41cのRAMパリティまたはチェックサムを計算し、RAM41cに格納するとともに、復旧時においてRAM41cの全ての領域に基づいて計算したRAMパリティが0であるか否か、またはRAM41cの全ての領域に基づいて計算したチェックサムが00Hであるか否か、に基づいてRAM41cのデータが正常か否かを判定しているが、電断割込処理においてRAM41cのRAMパリティまたはチェックサムを計算し、特定の領域に格納するとともに、復旧時においてRAM41cの特定の領域を除くRAMパリティまたはチェックサムを計算し、特定の領域に格納されているRAMパリティまたはチェックサムとの比較結果が一致するか否かによってRAM41cのデータが正常か否かを判定するようにしても良い。尚、この場合にも上記と同様に、RAMパリティやチェックサムを計算する前にいずれかのビットが1となる破壊診断用データを所定のアドレスに格納し、復旧時においては、RAMパリティやチェックサムが一致するか否かの判定に加えて、破壊診断用データが正常に格納されているか否かの判定を行い、RAMパリティやチェックサムが一致し、かつ破壊診断用データも正常であることを条件に、RAM41cのデータが正常であると判定することが好ましい。
また、前記実施例1では、電断割込処理において破壊診断用データとして、5AHをRAM41cに格納しているが、0以外のデータを格納し、起動時に確認できるものであれば良く、このような構成であっても、起動時において全ての領域が0クリアされてしまった場合に破壊診断用データが停電時に格納された値と一致しなくなり、異常と判定されるため、RAM41cに格納されているデータの異常の判定精度を高めることができる。
また、前記実施例1では、CPU41aの起動時において、RAM41cのRAMパリティを計算し、その結果が0であるか否かを判定し、RAMパリティが0であることを条件に破壊診断用データが正常に格納されているか否かの判定を行っているが、まず、破壊診断用データが正常に格納されているか否かを判定し、破壊診断用データが正常に格納されていることを条件に、RAM41cのRAMパリティを計算し、その結果が0であるか否かを判定するようにしても良く、このようにすれば、破壊診断用データが正常に格納されていない場合には、RAMパリティを計算せずに、RAM41cのデータが異常である旨を判定することができる。
また、前記実施例1では、メイン制御部41の起動時においてのみRAM41cのデータが正常か否かを判定しているが、その他の契機、例えば、1ゲーム毎に判定するようにしても良い。
また、前記実施例1では、メイン制御部41とは別個に設けられたリセット回路49からのリセット信号に基づいてメイン制御部41が起動するようになっているが、リセット回路をメイン制御部41を構成するマイクロコンピュータが搭載していても良い。
また、前記実施例1では、メイン制御部41を構成するマイクロコンピュータにRAM41cが搭載されているが、マイクロコンピュータの外部に当該マイクロコンピュータのワークとして用いるRAMを搭載したものであっても良い。
また、前記実施例1では、電断検出回路48が、スロットマシン1に用いられる直流電圧を監視し、当該直流電圧が一定の電圧以下となったときに電断を検出しているが、例えば、当該直流電圧が一定の電圧以下となった期間が一定期間継続したときに電断を検出するようにしても良い。また、スロットマシン1に供給される交流電圧を監視し、交流電圧の波形の乱れを検出したとき、またはその期間が一定期間継続したときに電断を検出するようにしても良い。
また、前記実施例1では、電断検出回路48が、遊技制御基板40に搭載されているが、その他の場所に搭載されていても良く、例えば、電源基板100や電源基板100から遊技制御基板40への電源の供給ラインが経由する中継基板等に搭載されていても良い。
また、前記実施例1では、各種エラー状態の内容をエラー状態に応じたエラーコードを遊技補助表示器12に表示させることで、エラーを報知するようになっている。すなわち遊技制御部41により制御される報知手段により報知されているが、これら遊技制御部41により制御される報知手段に加えて、エラー状態を示すコマンドを演出制御部91に対して送信し、演出制御部91により制御される報知手段によりエラーの報知が行われるようにしても良いし、遊技制御部41により制御される報知手段による報知を行わず、演出制御部91により制御される報知手段によりエラーの報知が行われるようにしても良い。
次に、リールの停止制御の変形例について説明する。
前記実施例1では、リールの回転が開始したとき及び、リールが停止し、かつ未だ回転中のリールが残っているときに、ROM41bに格納されているテーブルインデックス及びテーブル作成用データを参照して、回転中のリール別に停止制御テーブルを作成しているが、各遊技状態のそれぞれについての内部当選状態、及びリールの停止状況(及び停止済みの停止位置)別の停止制御テーブルを予めROM41bに登録しておき、テーブルインデックスに基づいて、遊技状態のそれぞれについての内部当選状態、及びリールの停止状況に応じて必要な停止制御テーブルを特定可能とし、リールの回転が開始したとき及び、リールが停止し、かつ未だ回転中のリールが残っているときに、テーブルインデックスを参照して、回転中のリール別に停止制御テーブルを設定するようにしても良い。
また、前記実施例1では、リール1周に対して8ステップ毎(1図柄毎)に分割した21の領域(コマ)が定められており、停止制御テーブルとして、それぞれの領域(領域番号)に対応して、引込コマ数(停止位置)が一意的に定められた停止制御テーブル、すなわち1図柄が変動する範囲の領域に対応して停止位置が一意的に定められた停止制御テーブルを用いてリールの停止制御を行っているが、例えば、1図柄未満の領域毎、例えば1ステップ、すなわちリールモータを駆動する際の最小単位毎に、引込ステップ数や引込コマ数(停止位置)を一意的に定めた停止制御テーブルを用いてリールの停止制御を行っても良く、このようにすることで、リールモータのステップ数単位で停止位置を変化させることが可能となり、停止操作位置に対する停止位置を更に多様化することができる。
また、前記実施例1では、停止操作位置に対する引込コマ数を一意的に定めた複数の停止制御テーブルのうち、各遊技状態のそれぞれの内部当選状態、リールの停止状況(及び停止済みの停止位置)に対して一意的に定められた停止制御テーブルを選択し、選択した停止制御テーブルに従ってリールの停止制御を行っているが、停止操作位置に対する停止位置を一意的に定めた複数の停止位置特定テーブルを停止制御テーブルの替わりに用いて、停止操作が検出された際に、停止位置特定テーブルを参照し、停止操作位置に対応して一意的に特定される停止位置でリールを停止させる制御を行うようにしても良い。
また、停止位置に対する停止優先度を定めることにより、停止操作位置(リール基準位置からのステップ数)に対して停止位置を一意的に定めた複数の停止優先テーブルを停止制御テーブルの替わりに用いて、停止操作が検出された際に、停止優先テーブルを参照し、停止操作位置から引込可能範囲(最大5コマ)内にある全ての停止位置の停止優先度を比較し、最も停止優先度の高い停止位置でリールを停止させる制御を行うようにしても良い。
また、各遊技状態のそれぞれの内部当選状態、リールの停止状況(及び停止済みのリールの停止位置または停止済みのリールの停止操作位置)に対して一意的に定められた引込コマ数を選択し、停止操作が行われた際に、選択された引込コマ数の範囲内に対象となる停止位置が位置する場合には、当該停止位置を引き込んで停止させる引込制御を行い、停止が禁止された停止位置を停止させないように他の停止位置を引き込んで停止させる蹴飛ばし制御(いわゆるコントロール方式の制御)を行うようにしても良い。このように引込制御及び蹴飛ばし制御を行うことで、停止操作位置(リール基準位置からのステップ数)に対して停止位置が一意的に決まるので、引込制御及び蹴飛ばし制御により表示結果を導出させる制御は、停止操作位置に対して停止位置を一意的に特定する制御パターンといえる。
また、各遊技状態のそれぞれの内部当選状態、リールの停止状況(及び停止済みのリールの停止位置または停止済みのリールの停止操作位置)に対して一意的に定められた制御パターンを選択し、その制御パターンに従ってリールの停止制御を行うものであれば、停止制御テーブルによるリールの停止制御、停止優先テーブルによるリールの停止制御、引込制御及び蹴飛ばし制御によるリールの停止制御を併用して行うものであっても良く、例えば、最初に停止したリールのみ停止制御テーブルを用いてリールの停止制御を行い、他のリールについては、引込制御及び蹴飛ばし制御によりリールの停止制御を行うようにしても良い。
また、前記実施例1では、各遊技状態のそれぞれの内部当選状態、及びリールの停止状況(及び停止済みのリールの停止操作位置)に対して一意的に定められた制御パターンを選択し、その制御パターンに従ってリールの停止制御を行っているが、少なくとも各遊技状態のそれぞれの内部当選状態に対して一意的に定められた制御パターンを選択し、その選択した制御パターンに従ってリールの停止制御を行うものであれば良い。
次に、スロットマシンの構成の変形例について説明する。
前記実施例1では、メダル並びにクレジットを用いて賭数を設定するスロットマシンを用いているが、本発明はこれに限定されるものではなく、遊技球を用いて賭数を設定するスロットマシンや、クレジットのみを使用して賭数を設定する完全クレジット式のスロットマシンであっても良い。
更に、図44に示すように、流路切替ソレノイド30や投入メダルセンサ31など、メダルの投入機構に加えて、遊技球の取込を行う球取込装置30’、球取込装置30’により取り込まれた遊技球を検出する取込球検出スイッチ31’を設けるとともに、ホッパーモータ34や払出センサ35など、メダルの払出機構に加えて、遊技球の払出を行う球払出装置34’、球払出装置34’により払い出された遊技球を検出する払出球検出スイッチ35’を設け、メダル及び遊技球の双方を用いて賭数を設定してゲームを行うことが可能であり、かつ入賞の発生によってメダル及び遊技球が払い出されるスロットマシンに適用しても良い。