以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
本発明の実施形態の理解を容易にするため、まず、遊技者が遊技可能なスロットマシン(遊技機)の機械的構成および電気的構成を簡単に説明し、その後、スロットマシンの各基板における具体的な処理(役構成や遊技状態の遷移)および本実施形態で特徴的な処理を説明し、これらを実現するためのフローチャートを詳述する。
(スロットマシン100の機械的構成)
図1および図2の外観図に示すように、スロットマシン100は、略矩形状の箱体である筐体102と、筐体102の前面開口部に対して開閉可能に取り付けられた前面上扉104と、前面上扉104の下方に位置し、前面上扉104同様、筐体102の前面開口部に対して開閉可能に取り付けられた前面下扉106と、前面下扉106の下部に位置し、メダル排出口108aから払い出されたメダルを貯留するための受け皿部108とを備えている。
前面下扉106の上部には操作部設置台122が形成され、操作部設置台122には、メダル投入部124、ベットスイッチ126、スタートスイッチ128、ストップスイッチ130等が配設されている。
操作部設置台122の右側に位置するメダル投入部124は、メダル投入口(投入口)124aを通じて遊技媒体としてのメダルの投入を受け付け、前面下扉106の背面に設けられたメダルセレクタ(図示せず)にメダルを送る。メダルセレクタには、メダルの投入が可能な投入期間外に投入されたメダルや規格外のメダルをメダル排出口108aに導くブロッカー(図示せず)と、投入期間内に投入された規格内のメダルの通過を検出する投入メダル検出部124bとが設けられている。ここで、メダル排出口108aに導かれたメダルは受け皿部108に排出される。遊技者により、1遊技を開始するために必要なメダルのベット枚数である複数の規定枚数のうち、最大規定枚数(例えば3枚)を超えてメダルが投入されると、その最大規定枚数を超えた分のメダルが、所定の上限枚数(例えば50枚)を上限としてスロットマシン100の内部(メインRAM200c)に電気的に貯留(以下、単にクレジットという)される。
ベットスイッチ126は、クレジットされているメダルのうち最大規定枚数のメダルをベットする、押圧式のボタンスイッチである。最大規定枚数以上のメダルがクレジットされている状態で、ベットスイッチ126を押圧すると、最大規定枚数のメダルがベットされるとともに、貯留枚数が最大規定枚数分だけ減枚される。なお、最大規定枚数未満のメダルがクレジットされている状態で、ベットスイッチ126を押圧すると、貯留枚数のメダルの全てがベットされるとともに、貯留枚数が0枚に減枚される。
操作部設置台122の左側に位置するスタートスイッチ128は、傾倒操作を検出可能なレバーで構成され、遊技者による1遊技の開始操作を検出する。また、スタートスイッチ128は、押圧操作を検出可能なボタンスイッチによって構成することも可能である。
前面上扉104の下部略中央には、ガラス板や透明樹脂板等で構成された無色透明の図柄表示窓136が設けられ、筐体102内の図柄表示窓136に対応した位置には、リールユニット134が設けられている。リールユニット134には、図3(a)のリールの図柄配列に示すように、20等分された各領域に複数種類の図柄がそれぞれ配列された4つのリール134a、134b、134c、134dが、それぞれ独立して回動可能に設けられ、遊技者は、図柄表示窓136を通じて、リール134a、134b、134c、134dを視認することができる。リールユニット134は、スタートスイッチ128の操作を契機として、リール134a、134b、134c、134dの回転を開始する。
操作部設置台122の中央に位置するストップスイッチ130は、リール134a、134b、134c、134dそれぞれに対応して設けられた、遊技者の押圧操作を検出可能なボタンスイッチであり、リール134a、134b、134c、134dそれぞれを停止させようとする遊技者の停止操作を検出する。なお、ストップスイッチ130に係る4つのボタンスイッチを、その位置に応じて左から順にストップスイッチ130a、130b、130c、130dとする。
このように、ストップスイッチ130a、130b、130c、130dを通じた停止操作により、リール134a、134b、134c、134dがそれぞれ停止する。ここでは、その停止態様を遊技者が把握できるように、図3(b)のように、有効ラインが設けられている。有効ラインは1本であり、具体的に、図柄表示窓136に臨む12個の図柄(4リール×上中下の3段)のうち、リール134a、134b、134c、134dの中段に停止する図柄に対応する位置を結んだラインを当選役の入賞を判定するための有効ラインAとして設定している。
前面上扉104の上部略中央には、演出に伴う様々な映像を表示する液晶表示部(画像表示部)138が設けられている。また、前面上扉104の上部や左右には、例えば高輝度の発光ダイオード(LED)によって構成される演出用ランプ142が設けられる。
また、図2に示すように、前面上扉104の裏面における液晶表示部138の左右位置や前面下扉106の裏面における内面左右位置には、効果音や楽音等による聴覚的な演出を行うスピーカ140が設けられている。さらに、筐体102内におけるリールユニット134の下方には、メダル排出口108aからメダルを払い出すためのメダル払出装置(メダルホッパー)264が設けられている。メダル払出装置264は、メダルを貯留するメダル貯留部264aと、メダル貯留部264aに貯留されたメダルをメダル排出口108aから排出するための払出制御部264bと、メダル排出口108aから排出されるメダルを検出する払出メダル検出部264cとを備えている。
また、図1や図2では図示していないが、各リール134a、134b、134c、134dの内側には、それぞれに施された図柄のうち、図柄表示窓136に対応する各リール134a、134b、134c、134dの上段、中段、下段の図柄を背面から個々に独立して照射するリールバックライト144(図4参照)が設けられている。また、図柄表示窓136の裏面上部にもリール134a、134b、134c、134d全ての正面を直接照射するリール上方ライト146が設けられている。
また、図1に示すように、操作部設置台122において、図柄表示窓136とストップスイッチ130との間に設けられた段部122aの略水平面には、メインクレジット表示部152およびメイン払出表示部154が設けられている。また、図柄表示窓136と操作部設置台122との間には、サブクレジット表示部156およびサブ払出表示部158が設けられている。これらメインクレジット表示部152およびサブクレジット表示部156には内部的に記憶された貯留枚数が表示され、メイン払出表示部154およびサブ払出表示部158にはメダルの払出枚数が表示される。なお、サブクレジット表示部156およびサブ払出表示部158には、演出に伴う様々な数値を表示することもできる。
また、筐体102内の任意の位置には、電源スイッチ148が設けられている。電源スイッチ148は、ロッカースイッチ等、押圧操作を検出可能なスイッチで構成され、当該スロットマシン100を管理する管理者側が操作し、電源の切断状態と電源の投入状態の2つの状態を切り換えるために用いられる。
(スロットマシン100の電気的構成)
図4は、スロットマシン100の概略的な電気的構成を示したブロック図である。図4に示すように、スロットマシン100は、主として、制御基板によって制御されている。ここでは、制御基板の一例として、制御基板の機能を分担した、主制御基板200と、副制御基板202とを挙げて説明する。例えば、遊技の進行に関わるプログラムのうち、遊技に供する当選役の抽選やその入賞といったような、特に重要な処理を主制御基板200で実行し、それ以外の例えば演出に関する処理を副制御基板202で実行している。また、図4に示したように、主制御基板200と副制御基板202との間の電気的な信号の伝達は、不正防止等の観点から、主制御基板200から副制御基板202への一方向のみに制限される。ただし、このような制限がなければ、電気的に双方向通信も技術的に可能である。
(主制御基板200)
主制御基板200は、中央処理装置であるメインCPU200a、プログラム等が格納されたメインROM200b、ワークエリアとして機能するメインRAM(RWM)200c等を含む各種半導体集積回路を有し、スロットマシン100全体を統括的に制御する。ただし、メインRAM200cには不図示のバックアップ電源が接続されており、電源が切断された場合においても、設定変更が行われてメインRAM200cの初期化処理を実行しない限り、データが消去されることなく保持される。
また、主制御基板200は、メインCPU200aが、メインROM200bに格納されたプログラムに基づきメインRAM200cと協働することで機能する、初期化手段300、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308、払出制御手段310、状態移行手段312、コマンド決定手段314、コマンド送信手段316等の機能部を有する。
初期化手段300は、主制御基板200における初期化処理を実行する。ベット手段302は、遊技に使用するためのメダルをベットする。ここで、ベットは、ベットスイッチ126の操作を通じてクレジットされているメダルを投入する場合と、メダル投入部124を通じてメダルを投入する場合と、リプレイ役が有効ラインA上に表示されたことに基づいてメダルを自動投入する場合のいずれも含む。当選役抽選手段304は、メダルのベットおよびスタートスイッチ128の操作に基づき、小役、リプレイ役、および、ボーナス役を含む複数種類の当選役、ならびに、不当選のうちいずれかを当選役抽選により決定する。
リール制御手段306は、スタートスイッチ128の操作に応じて、複数のリール134a、134b、134c、134dを回転制御し、回転しているリール134a、134b、134c、134dにそれぞれ対応した複数のストップスイッチ130a、130b、130c、130dの操作に応じ、操作されたストップスイッチ130a、130b、130c、130dに対応するリール134a、134b、134c、134dをそれぞれ停止制御する。また、リール制御手段306は、スタートスイッチ128の操作に応じて、前回の遊技においてストップスイッチ130の操作を有効化してから、当選役抽選の抽選結果を表示するために遊技者によるストップスイッチ130の操作を有効化するまで(前回の遊技におけるストップスイッチ130の操作完了により無効化されている)の時間を規定の時間(ウェイト時間、例えば、4.1秒)より延長し、その間、リール134a、134b、134c、134dを多彩な態様で回転制御するリール演出(フリーズ演出)を行う場合がある。リール演出は、本来有効となるべき任意のスイッチを所定時間有効にしなかったり、本来実行されるべき処理を所定時間保留したり、本来送受信されるべき任意のスイッチの信号を所定時間送信または受信させなかったりすることでも実現できる。
判定手段308は、当選役抽選で決定した当選役に対応する図柄組み合わせが有効ラインA上に表示されたか否か判定する。ここで、当選役抽選で決定した当選役に対応する図柄組み合わせが有効ラインA上に表示されることを単に入賞という場合がある。払出制御手段310は、当選役抽選で決定した当選役に対応する図柄組み合わせが有効ラインA上に表示されたこと(入賞したこと)に基づいて、当該当選役に対応する数だけメダルを払い出す。状態移行手段312は、ボーナス役の当選や入賞に基づいて遊技状態を遷移させる。
コマンド決定手段314は、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308、払出制御手段310、状態移行手段312等の動作に伴う、遊技に関するコマンドを順次決定する。コマンド送信手段316は、コマンド決定手段314が決定したコマンドを副制御基板202に順次送信する。
主制御基板200では、投入メダル検出部124b、ベットスイッチ126、スタートスイッチ128およびストップスイッチ130から各種の検出信号を受信しており、受信した検出信号に基づいて、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308が上述した種々の処理を実行する。また、主制御基板200には、メインクレジット表示部152およびメイン払出表示部154が接続されており、払出制御手段310が両表示部152、154に対してメダルの貯留枚数や払出枚数の表示を制御する。
また、主制御基板200には、リール駆動制御部258が接続されている。このリール駆動制御部258は、スタートスイッチ128の操作信号に応じ、リール制御手段306から送信される各リール134a、134b、134c、134dの回転開始信号に基づいて、ステッピングモータ262を駆動するとともに、ストップスイッチ130の操作信号に応じ、リール制御手段306から送信される、リール134a、134b、134c、134dそれぞれの停止信号および回転位置検出回路260の検出信号に基づいて、ステッピングモータ262の駆動を停止する。
また、主制御基板200には、メダル払出装置264が接続されている。主制御基板200には払出メダル検出部264cの検出信号が入力されるようになっており、払出制御手段310は、その検出信号に応じてメダルの払出枚数を計数しながら払出制御部264bからのメダルの排出を制御する。
また、主制御基板200には、乱数発生器200dが設けられる。乱数発生器200dは、計数値を順次インクリメントし、所定の総数(例えば65536)内でループさせ(0〜65535)、所定の時点における計数値を抽出することで乱数を生成(取得)する。主制御基板200の乱数発生器200dによって生成される乱数(以下、当選役抽選乱数という)は、遊技者に付与する遊技利益、例えば、当選役抽選手段304が当選役を決定するために用いられる。
(副制御基板202)
また、副制御基板202は、主制御基板200と同様に、中央処理装置であるサブCPU202a、プログラム等が格納されたサブROM202b、ワークエリアとして機能するサブRAM202c等を含む各種半導体集積回路を有し、主制御基板200からのコマンドに基づき、特に演出を制御する。また、サブRAM202cにもメインRAM200c同様、不図示のバックアップ電源が接続されており、電源が切断された場合においても、データが消去されることなく保持される。なお、副制御基板202にも、主制御基板200同様、乱数発生器202dが設けられており、乱数発生器202dによって生成される乱数(以下、演出抽選乱数という)は、主に演出の態様を決定するために用いられる。
また、副制御基板202は、サブCPU202aが、サブROM202bに格納されたプログラムに基づき、サブRAM202cと協働することで機能する、初期化決定手段330、コマンド受信手段332、演出制御手段334等の機能部を有する。
初期化決定手段330は、副制御基板202における初期化処理を実行する。コマンド受信手段332は、主制御基板200等、他の制御基板からのコマンドを受信し、コマンドに対する処理を行う。演出制御手段334は、当選役コマンドに基づいて液晶表示部138、スピーカ140、演出用ランプ142の各デバイスで行われる遊技の演出を決定する。具体的に、演出制御手段334は、液晶表示部138に表示される画像データや、演出用ランプ142、リールバックライト144、リール上方ライト146、サブクレジット表示部156、サブ払出表示部158等の電飾機器を通じた演出のための電飾データを決定するとともに、スピーカ140から出力すべき音声を構成する音声データを決定する。そして、演出制御手段334は、決定した遊技の演出を実行する。
演出は、上述したリール演出のような主制御基板200によって実行される演出と、副制御基板202によって実行される演出がある。副制御基板202によって実行される演出は、遊技の進行に伴い、液晶表示部138、スピーカ140、演出用ランプ142、リールバックライト144、リール上方ライト146、サブクレジット表示部156、サブ払出表示部158等を通じて提供される視覚的および聴覚的な表現手段であり、当該遊技にストーリー性を与えたり、当選役抽選の結果をよりダイナミックな画像で示唆したりすることができる。このような演出では、例えば、ボーナス遊技の当選を示唆する演出を複数遊技に亘って行い、遊技者の期待感を高めることができる。また、たとえ、いずれの当選役にも当選していなかったとしても、恰も当選しているかのような演出を通じて遊技者に高配当の期待感を持たせ、遊技者を飽きさせないようにすることが可能となる。上記の主制御基板200および副制御基板202を連動させることで、様々な遊技性を構築することができる。以下、主となる遊技態様を詳述する。
(主制御基板200で用いられるテーブル)
スロットマシン100においては、複数の遊技状態が設けられており、遊技の進行に応じて遊技状態が遷移する。そして、主制御基板200では、状態移行手段312により管理される遊技状態に対応する複数の当選役抽選テーブル等がメインROM200bに格納されている。当選役抽選手段304は、メインRAM200cに記憶された現在の遊技状態(後述するボーナス役の成立有無に基づく遊技状態等)に応じて、対応する当選役抽選テーブルをメインROM200bから抽出し、抽出した当選役抽選テーブルと現在の設定値に基づき、スタートスイッチ128の操作信号に応じて取得された当選役抽選乱数が当選役抽選テーブル内のいずれの当選役または不当選に対応するか判定する。ここで、設定値は、遊技利益を得る容易性を段階的に示したものであり、その設定値の数値が高いほど、遊技利益を得易い。なお、設定値は、一般的に、ホール側管理者により少なくとも遊技開始時には決定されており、遊技者が、遊技中に設定値を取得および変更することはできないようになっている。
ここで、当選役抽選テーブルで抽出される当選役には、リプレイ役、小役、ボーナス役がある。このような当選役に対応する図柄組み合わせが、有効ラインA上に揃った状態を表示または入賞といい、当選役に当選し、その当選役に対応する図柄組み合わせが表示されるまでの状態を内部当選状態とする。当選役のうちのリプレイ役は、そのリプレイ役に対応する図柄組み合わせが有効ラインA上に表示されると、遊技者によるメダルの新たなるベットを行わずして再度1遊技を実行できる役であり、小役は、その小役に対応する図柄組み合わせが有効ラインA上に表示されることにより、図柄組み合わせに応じて所定枚数のメダルの払い出しを受けることができる役である。また、ボーナス役は、そのボーナス役に対応する図柄組み合わせが有効ラインA上に表示されることにより、状態移行手段312により管理される遊技状態をボーナス遊技状態に移行させることができる当選役である。以下に、当選役および遊技者に付与される遊技利益について説明する。
図5は、当選役を説明するための説明図であり、図6は、遊技状態の遷移を説明するための説明図である。
また、本実施形態においては、当選役として、図5に示すように、当選役「リプレイ」、「ベル」、「ビッグボーナス(以下「BB」という)」が設けられている。このうち、当選役「リプレイ」が上記リプレイ役に相当し、当選役「ベル」が上記小役に相当し、当選役「BB」が上記ボーナス役に相当する。
(リプレイ役)
当選役抽選の結果、当選役「リプレイ」に当選すると、図5に示した当選役「リプレイ」に対応する図柄組み合わせである、各リール134a、134b、134c、134dそれぞれに記される図柄「リプレイ」が有効ラインA上に表示可能となり、当選役「リプレイ」に対応する図柄組み合わせが有効ラインA上に表示されると、上記したように、遊技者によるベットを行わずして再度1遊技(再遊技)を実行できる。
ここで、本実施形態においては、遊技者によってストップスイッチ130が押圧操作されたときに、当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、当該図柄が有効ラインA上に停止するように停止制御がなされる。また、ストップスイッチ130が押圧操作されたときに、当選役に対応する図柄組み合わせを構成する図柄が、有効ラインA上にはないが、各リール134a、134b、134c、134dの回転方向と反対の方向の図柄4コマ分に相当する範囲(引込範囲)内に存在している場合には、リール制御手段306によって、離れている図柄数が滑りコマ数となり、当該当選役に対応する図柄組み合わせを構成する図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。また、当選役に対応する図柄が各リール134a、134b、134c、134d中に複数あり、いずれも各リール134a、134b、134c、134dの引込範囲内に存在している場合には、予め定められた優先順位に従っていずれの図柄を有効ラインA上に引き込むか決定され、当該優先された図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。なお、ストップスイッチ130が押圧操作されたときに、当選した当選役以外の当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、その図柄を有効ラインA上に停止させないようにする、所謂蹴飛ばし処理も並行して実行される。
そして、各リール134a、134b、134c、134dにおいては、当選役「リプレイ」に対応する図柄組み合わせを構成する図柄が、上記の停止制御によって、必ず有効ラインA上に表示可能なように配列されている(図3および図5参照)。具体的に、当選役「リプレイ」に対応する図柄組み合わせを構成する図柄同士は、各リール134a、134b、134c、134d内で最大図柄4コマ分しか離隔していないので、停止制御によって必ず有効ラインA上に表示することができる。このように、当選役「リプレイ」に当選すると、これら当選役「リプレイ」に対応する図柄組み合わせが、必ず、有効ラインA上に表示されることとなる。このようにして、当選役「リプレイ」に対応する図柄組み合わせが有効ラインA上に表示された場合には、メダルを投入することなく次の1遊技を開始することが可能となる。
(小役)
また、当選役抽選の結果、当選役「ベル」に当選した場合には、当選役「ベル」に対応する図柄組み合わせである、各リール134a、134b、134c、134dそれぞれに記される図柄「ベルA」が有効ラインA上に表示可能となり、当選役「ベル」に対応する図柄組み合わせが有効ラインA上に表示された場合には、当選役に対応した枚数(ここでは9枚)のメダルが遊技者に払い出される。ここで、当選役「ベル」に対応する図柄組み合わせを構成する図柄「ベルA」同士は、各リール134a、134b、134c、134d内で最大図柄4つ分しか離隔していないので(図3および図5参照)、当選役「リプレイ」同様、上記の停止制御によって、必ず有効ラインA上に表示することができる。
(ボーナス役)
また、当選役抽選の結果、当選役「BB」に当選すると、図5に示した当選役「BB」に対応する図柄組み合わせである、各リール134a、134b、134c、134dそれぞれに記される図柄「赤7」が有効ラインA上に表示可能となり、当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示されると、遊技状態がボーナス遊技状態に設定され、次の1遊技(以下、単に次遊技という)以降、メダルが所定枚数(例えば、297枚)払い出されるまで、ボーナス遊技状態にて遊技を実行することが可能となる。なお、各リール134a、134b、134c、134dにおいては、それぞれ図柄「赤7」が、上記の停止制御によっても、有効ラインA上に表示されない場合があるように配列されている(図3および図5参照)。そのため、当選役「BB」に当選したとしても、遊技者は、当選役「BB」に対応する図柄組み合わせを必ずしも有効ラインA上に表示させられるとは限らない。
なお、上述したいずれかの当選役に当選すると、それぞれの当選役に対応する内部当選フラグが成立(ON)するとともに、この内部当選フラグの成立状況に応じて、リール134a、134b、134c、134dそれぞれの停止制御がなされることとなる。このとき、小役に当選したものの、その小役に対応する図柄組み合わせを、その1遊技内で有効ラインA上に表示させることができなかった場合には、当該1遊技の終了後に内部当選フラグがOFFされる。つまり、小役の当選の権利は小役に当選した1遊技内のみに限られ、当該権利を次遊技に持ち越すことはできない。また、リプレイ役である当選役「リプレイ」に対応する内部当選フラグが成立した場合には、当選役「リプレイ」に対応する図柄組み合わせが必ず有効ラインA上に表示され、メダルを要することなく次遊技を行うために必要となる処理が行われた後に、当該内部当選フラグがOFFされる。これらに対して、当選役「BB」に当選した場合には、BB内部当選フラグが成立(ON)するとともに、当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示されるまで、BB内部当選フラグが遊技を跨いで持ち越される。
(遊技状態の遷移)
ここで、BB内部当選フラグについて、遊技状態の遷移と合わせて具体的に説明する。BB内部当選フラグが成立すると、BB内部当選フラグの成立状況に応じて、図6の(1)に示すように、主制御基板200で管理している遊技状態が、ボーナス役である当選役「BB」に当選していないボーナス非成立遊技状態から、ボーナス遊技状態の準備状態に相当するボーナス成立遊技状態となり、ボーナス成立遊技状態に基づいてリール134a、134b、134c、134dそれぞれの停止制御がなされる。このとき、当選役「BB」に対応する図柄組み合わせを有効ラインA上に表示させることができなかった場合には、そのままBB内部当選フラグが次遊技に持ち越され(ボーナス成立遊技状態が維持され)、次回以降の遊技においても当選役「BB」に対応する図柄組み合わせを有効ラインA上に表示させることが可能となる。そして、遊技者が、当選役「BB」に対応する図柄組み合わせを有効ラインA上に表示させると、図6の(2)に示すように、遊技状態がボーナス成立遊技状態からボーナス遊技状態に移行する。また、ボーナス遊技状態において、所定枚数(例えば、297枚)を超えるメダルが払い出されると、図6の(3)に示すように、遊技状態が、ボーナス遊技状態からボーナス非成立遊技状態に移行する。ただし、図6の(4)に破線の矢印で示すように、ボーナス非成立遊技状態における当選役「BB」が成立した遊技で、当選役「BB」に対応する図柄組み合わせを有効ラインA上に表示させた場合、ボーナス成立遊技状態を経由せず、直接、ボーナス遊技状態に移行する。
(当選役抽選テーブル)
図7は、当選役抽選乱数を判定する場合に用いられる当選役抽選テーブルを示す図である。当選役抽選テーブルでは、複数の当選領域が区画されており、各遊技状態によって抽選の対象となる当選役が異なったりする。図7は、各遊技状態(ボーナス非成立遊技状態、ボーナス成立遊技状態、ボーナス遊技状態)毎に割り当てられた当選領域(当選役)を「○」で表している。したがって、「○」が記載されていない当選領域は、その遊技状態に割り当てられていないことを示す。区画化された各当選領域にはそれぞれ当選範囲を示す数値である所定の置数(当選範囲値)と当選役が対応付けられており、遊技状態毎に割り当てられた全ての当選領域の置数を合計すると当選役抽選乱数の総数(65536)となる。したがって、当選役それぞれが決定される確率は、当選領域に対応付けられた置数を当選役抽選乱数の総数で除算した値となる。当選役抽選手段304は、その時点の遊技状態に基づいて、当該当選役抽選テーブルにおける複数の当選領域のうち番号の高い方から、順次、置数を取得し、その置数を当選役抽選乱数から減算して、その減算値が0未満となると、その時点の当選領域に対応付けられた当選役を抽選結果としている。当該抽選の手順は、他の抽選においても適用できる。
また、各遊技状態によって抽選の対象となる当選役が異なっている。例えば、図7において、ボーナス非成立遊技状態と、ボーナス成立遊技状態とを比較すると、前者は当選役「BB」の抽選を行っているのに対し、後者では当選役「BB」の抽選を行っていない。これは、後者では、既に当選役「BB」に当選しているので重ねて当選役「BB」を当選させることができないからである。また、後者では、前者に比べ、当選役「リプレイ」の当選確率を高く設定している。また、図7のボーナス遊技状態によれば、重ねて当選役「BB」の抽選を行わないとともに、当選役「リプレイ」の抽選も行われない。また、当選役「ベル」が高確率で当選するように設定されているので、ボーナス非成立遊技状態やボーナス成立遊技状態と比べて、1遊技で獲得できる枚数の平均値を示す期待獲得枚数が高くなっている。なお、当選役抽選テーブルの当選領域0には、「不当選」が対応付けられており、当選役抽選によって「不当選」が決定すると、図5に示したいずれの当選役に対応する図柄組み合わせも有効ラインA上に表示されることなく、メダルの払い出し等が行われることはない。ただし、ボーナス成立遊技状態(BB内部当選フラグがON)において、当選役抽選によって「不当選」が決定すると、当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示可能となる。
以下、主制御基板200における具体的処理をフローチャートに基づいて説明する。
(主制御基板200のメイン処理)
図8は、主制御基板200のメイン処理を示したフローチャートである。ここでは、まず、主制御基板200のメイン処理に沿って、初期化後の1遊技の概略を説明する。また、詳細な説明は省略するが、各処理が遂行される際、各処理において用いられるスイッチ(ベットスイッチ126、スタートスイッチ128、ストップスイッチ130a、130b、130c、130d)は、処理の開始時に有効化され、処理の終了時に無効化される。
(ステップS100)
電源スイッチ148を介してスロットマシン100の電源が投入され、通電状態になると、初期化手段300は、遊技開始に備え初期化処理を実行する。初期化手段300は、電源が投入されている間、随時バックアップデータを生成し、そのバックアップデータをメインRAM200cに保持している。したがって、不意の電断が生じたとしても、この初期化処理において、保持されたバックアップデータを用い電断前の状態に復帰させることができる。例えば、リール134a、134b、134c、134dの回転中に不意の電断が起きたとしても、復帰動作後に再度各リール134a、134b、134c、134dが回転している状態から開始される。したがって、初期化処理では、基本的に、メインRAM200cの初期化(RAMクリア)は行われない。
(ステップS210)
また、コマンド決定手段314は、ベット枚数に変更があった場合に、変更されたベット枚数および貯留枚数を示す投入コマンドを生成し、コマンド送信手段316は、生成された投入コマンドを副制御基板202に送信する。
(ステップS300)
次に、当選役抽選手段304は、スタートスイッチ128に対する遊技開始操作を有効化し、スタートスイッチ128の操作待ち状態に移行する。ここで、当選役抽選手段304は、遊技者によるスタートスイッチ128の操作に応じて、主制御基板200の乱数発生器200dによって更新された当選役抽選乱数から、スタートスイッチ128が操作された時点における1の当選役抽選乱数を取得する。そして、当選役抽選手段304は、図7に示した当選役抽選テーブル、および、現在設定されている遊技状態に基づいて、取得した当選役抽選乱数が、いずれの当選領域に対応するか判定し、判定された当選領域の当選役または不当選を抽選結果として決定する。また、コマンド決定手段314は、スタートスイッチ128の操作に応じて抽選結果が決定された後、当選役抽選の抽選結果(当選役または不当選)や遊技状態に関する情報等を含む当選役コマンドを生成し、コマンド送信手段316は、生成された当選役コマンドを副制御基板202に送信する。また、状態移行手段312は、ボーナス非成立遊技状態において当選役「BB」に当選したことに基づき遊技状態をボーナス非成立遊技状態からボーナス成立遊技状態へ移行させる。
(ステップS400)
スタートスイッチ128が操作されると、リール制御手段306は、ステッピングモータ262を駆動してリール134a、134b、134c、134dを回転させる。このリール回転処理においては、前回の1遊技におけるリール134a、134b、134c、134dの回転開始時点から所定の時間(例えば4.1秒)が経過すると(ウェイト)、当該遊技におけるリール134a、134b、134c、134dの回転を開始し、リール134a、134b、134c、134dの全てが定速回転となったところで、ステップS500に処理を移す。また、リール制御手段306は、リール演出を実行する場合もある。
(ステップS500)
続いて、リール制御手段306は、ストップスイッチ130a、130b、130c、130dを有効化し、遊技者によるストップスイッチ130a、130b、130c、130dの操作を受け付けると、その操作に対応するリール134a、134b、134c、134dのいずれかを停止制御する。また、コマンド決定手段314は、ストップスイッチ130a、130b、130c、130dのいずれかの操作がなされると、操作がなされたストップスイッチ130a、130b、130c、130dの情報を示す停止コマンド(第1停止コマンド、第2停止コマンド、第3停止コマンド)を操作の度に生成し、コマンド送信手段316は、生成された停止コマンドを順次、副制御基板202に送信する。
(ステップS600)
次に、判定手段308は、図3(b)に示した有効ラインA上に表示された図柄組み合わせが予め定められたどの組み合わせに相当するかを判定し、その図柄組み合わせに応じて遊技状態の変更やリプレイに際して要求される種々の処理を実行する。また、コマンド決定手段314は、有効ラインA上に表示された図柄組み合わせや、有効ラインA上に小役に対応する図柄組み合わせが表示された場合におけるメダルの払出枚数等を含む入賞コマンドを生成し、コマンド送信手段316は、生成された入賞コマンドを副制御基板202に送信する。また、状態移行手段312は、ボーナス成立遊技状態において当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示されたことに基づき、遊技状態をボーナス成立遊技状態からボーナス遊技状態へ移行させる。
(ステップS700)
続いて、払出制御手段310は、ステップS600における判定結果に基づき、例えば、有効ラインA上に小役に対応する図柄組み合わせが表示されると、当該小役に対応するメダルの払出処理を実行し、有効ラインA上にリプレイ役に対応する図柄組み合わせが表示されると、自動的に次遊技のベットを行うための処理を実行する。また、状態移行手段312は、ボーナス遊技状態においてメダルの所定枚数の払い出しが実行されると、遊技状態をボーナス遊技状態からボーナス非成立遊技状態へ移行させる。このように、払出制御手段310は、有効ラインA上に表示された図柄組み合わせに対応して種々の処理を遂行し、当該1遊技を終了する。また、コマンド決定手段314は、メダルの払出処理がなされた場合、払出処理がなされたことを示す払出コマンドを生成し、コマンド送信手段316は、生成された払出コマンドを副制御基板202に送信する。
ステップS210からステップS700までの一連の処理を通じて1遊技が実行される。以後は、ステップS210からステップS700までのメインループを繰り返すこととなる。
(メインCPU200aによるメモリ管理)
ところで、上述したように、主制御基板200においては、メインCPU200aが、メインROM200bに格納されたプログラムに基づきメインRAM200cと協働することで、初期化手段300、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308、払出制御手段310、状態移行手段312、コマンド決定手段314、コマンド送信手段316等として機能し、遊技の進行を制御する。これらの機能部を実行するためのプログラムは、メインROM200bおよびメインRAM200cの所定の領域(使用領域)に配される。
図9は、メインROM200bおよびメインRAM200cのメモリマップを示す説明図である。ここで、メインROM200bには、0000h〜2FFFh(12kbyte)のメモリ空間が割り当てられ、メインRAM200cには、F000h〜F1FFh(512byte)およびF200h〜F3FFh(512byte)のメモリ空間が割り当てられている。また、メインROM200bおよびメインRAM200cのいずれにおいても使用領域が規定されている。
メインROM200bの0000h〜1DF3hのメモリ空間には使用領域が割り当てられている。具体的に、0000h〜11FFh(4.5kbyte)に制限されたメモリ空間(制御領域)に、初期化手段300、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308、払出制御手段310、状態移行手段312、コマンド決定手段314、コマンド送信手段316を機能させて遊技の進行を制御する遊技制御処理を実行するためのプログラムの命令コードが格納され、1200h〜1DF3h(3.0kbyte)に制限されたメモリ空間(データ領域)に、遊技制御処理のプログラムに用いられるデータが格納されている。また、1E00h〜1EFFhのメモリ空間にはコメント領域が割り当てられ、2FC0h〜2FFFhのメモリ空間にはプログラム管理領域が割り当てられている。また、プログラムの命令コードはアセンブラ言語で記述されている。ここで、プログラムは、命令コードで構成されたものであり、コンピュータに読み出され、データやワークエリアと協働して所定の処理を実現することができる。
また、メインRAM200cのF000h〜F1FFhのメモリ空間には使用領域が割り当てられている。具体的に、F000h〜F13Fhのメモリ空間には、上記遊技制御処理のワークエリアが割り当てられ、タイマ、カウンタ、フラグ等の変数管理に用いられる。F1C0h〜F1FFhのメモリ空間には、上記遊技制御処理のスタック領域が割り当てられている。また、メインCPU200aには内部レジスタが設けられている。
このように、メインCPU200aにおいて、使用領域の記憶容量は予め定められており、例えば、図9に示したように、制御領域が4.5kbyteに制限され、データ領域が3.0kbyteに制限されている。したがって、AT演出状態や、リールユニット134を多彩な態様で回転させる所謂リール演出を、メインCPU200aが管理する場合、制御領域の中で、遊技制御処理の記憶容量がさらに制限されるおそれがある。ここでは、変数の配列を工夫することで、遊技制御処理を行うための制御領域の容量を確保する。
遊技制御処理として、例えば、リール制御手段306が、4つのリール134a、134b、134c、134dを制御するプログラムを挙げる。ここでは、仮に、4つのリール134a、134b、134c、134d全てに関し、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新する例を挙げて説明する。
本実施形態では、ステップ数の総数が252であるステッピングモータ262を用いている。これは、図柄数が仮に21であった場合に、252が21の倍数なので、図柄毎のステップ数を均等に扱えるからである。なお、本実施形態では、ステッピングモータ262を1−2相励磁で動作させているので、分解能を上げ、そのステップ数を252の2倍の504で計数することができる。したがって、以下の例では、ステップ数の総数を504として扱っている。
また、リール134a、134b、134c、134dの状態は、モータフェーズ、ステップカウンタ値、現在出現図柄番号の3つのパラメータで表される。モータフェーズは、リール134a、134b、134c、134dの動作、すなわち、加速中、定常回転中、停止中を示す。なお、ここでは、加速中、定常回転中、停止中といった動作を挙げているが、動作として減速中が含まれていてもよい。また、ステップカウンタ値は、単位図柄におけるステップの計数を示す。例えば、図柄数が21の場合、単位図柄におけるステップカウンタ値の最大値は504/21=24となるので、24を計数することで図柄を更新し、かつ、ステップカウンタ値を初期化する。ただし、本実施形態では図柄数が20なので、504を除算した値は整数にならない。そこで、本実施形態では、20コマ中、12コマでステップカウンタ値の最大値を26とし、8コマでステップカウンタ値の最大値を24としている。具体的に、ステップカウンタ値の最大値を、5つ分の図柄に対し、図柄毎に26→24→26→24→26と順に移行させ、その組み合わせを4回繰り返す。こうして、20コマ中、3×4回=12コマでステップカウンタ値の最大値を26とし、2×4回=8コマでステップカウンタ値の最大値を24とすることができる。したがって、図柄(図柄番号)に応じて、24または26を計数することで図柄が更新され、ステップカウンタ値が初期化される。また、現在出現図柄番号は、所定の位置(例えば、有効ラインA上)に現在出現している図柄の番号を示す。ここでは、図柄数が20なので、番号を順次更新し、20を計数することで、リール134a、134b、134c、134dが1回転したとし、現在出現図柄番号を初期化する。かかる3つのパラメータを参照することで、ステッピングモータ262の動作状態とリールの位置とを把握することができる。
図10、図11は、リール制御手段306の処理を説明するためのフローチャートである。ここでは、メインルーチンからサブルーチンを呼び出し、そのサブルーチンにおいて、リール134a、134b、134c、134dの定常回転中処理を構成する複数の処理のうち、特に、図柄情報更新に関する処理を実行する例を挙げて説明する。リール制御手段306は、まず、初期設定として、リール134a、134b、134c、134dの数(ここでは4)、開始リールの番号(ここでは1)、ワークエリアにおける変数の先頭位置を設定する(S210)。そして、リール134a、134b、134c、134dのうちの1のリールについて、ステッピングモータ262のステップ数を1だけ進めてリール134a、134b、134c、134dの状態を更新するサブルーチンを呼び出す(S212)。サブルーチンが完了すると、リール制御手段306は、新たなリール番号を設定し(S214)、ワークエリアにおける変数の先頭位置を更新する(S216)。そして、リール制御手段306は、全てのリール134a、134b、134c、134dにおいてサブルーチンが完了しているか否か判定し(S218)、完了していなければ(S218におけるNO)、サブルーチン呼出処理(S212)からを繰り返し、完了していれば(S218におけるYES)、当該フローチャートを終了する。
また、図11に示すように、サブルーチンにおいて、定常回転中処理を構成する複数の処理のうちの図柄情報更新に関する処理に至ると、リール制御手段306は、ステップカウンタ値を取得し(S250)、ステップカウンタ値を更新する。具体的に、リール制御手段306は、ステップカウンタ値を1だけデクリメントし(S252)、ステップカウンタ値が単位図柄の範囲(例えば26)を超えたか否か判定する(S254)。その結果、ステップカウンタ値が単位図柄の範囲を超えていなければ(S254におけるNO)、リール制御手段306は、そのデクリメントされた値でステップカウンタ値を更新して(S256)、定常回転中処理を構成する他の処理が実行された後、当該サブルーチンを終了する。一方、ステップカウンタ値が単位図柄の範囲を超えていれば(S254におけるYES)、リール制御手段306は、ステップカウンタ値に初期値として所定のステップ数(例えば26)を設定し(S258)、現在出現図柄番号を取得し(S260)、現在出現図柄番号を1だけデクリメントして(S262)、現在出現図柄番号がリールの範囲(例えば20)を超えたか否か判定する(S264)。その結果、ステップ数がリールの範囲を超えていれば(S264におけるYES)、リール制御手段306は、現在出現図柄番号に初期値として所定の図柄数(例えば26)を設定する(S266)。一方、現在出現図柄番号がリールの範囲を超えていなければ(S264におけるNO)、リール制御手段306は、現在出現図柄番号をそのデクリメントされた値に更新する(S268)。
続いて、リール制御手段306は、図柄の位置に応じてステップカウンタ値を更新する。具体的に、リール制御手段306は、現在出現図柄番号を5で除算し(S270)、その除算した余り(剰余)のビット0の値が0であるか否か、すなわち、偶数であるか否か判定する(S272)。その結果、ビット0の値が0であれば(S272におけるYES)、ステップS256に処理を移行し、ビット0の値が0でなければ、すなわち、1であれば(S272におけるNO)、リール制御手段306は、ステップカウンタ値に初期値として上記のステップ数(26)とは異なる所定のステップ数(例えば24)を設定し(S274)、ステップS256に処理を移行する。
これは、以下の理由による。すなわち、上述したように、モータのステップ数504は20で割り切れない。そこで、20コマ中、12コマでステップカウンタ値の最大値を26とし、8コマでステップカウンタ値の最大値を24としている。そうすると、ステップカウンタ値の最大値を26とする図柄と、ステップカウンタ値の最大値を24とする図柄の比が3:2となるので、5で除算した余りが偶数の場合に26、奇数の場合に24とすることで実現できる。そこで、本実施形態では、まず、ステップカウンタ値として26を設定しておき、現在出現図柄番号を5で除算した余りが奇数であれば、それを24と置き換えることとしている。こうして、20コマ中、12コマでステップカウンタ値の最大値を26とし、8コマでステップカウンタ値の最大値を24とすることが可能となる。
図12は、図10のフローチャートを実現するためのプログラムを説明するための説明図である。図12の1行目の「LD B,4」は、リール134a、134b、134c、134dの数である4をBレジスタに設定することを示す。2行目の「LD C,0001B」は、対象となるリール番号を保持するCレジスタに、当該フローチャートの開始時のリール番号である0001Bを設定することを示す。ここで、数値の語尾に付されている「B」は2進数であることを示し、後述する、数値の語尾に付されている「H」は16進数であることを示す。また、リール番号は0001Bが1リール目、0010Bが2リール目、0100Bが3リール目、1000Bが4リール目を示す。3行目の「LDQ IY,_SMC_PHS」は、ワークエリアにおける変数の先頭位置としてIYレジスタに、アドレス「_SMC_PHS」を設定することを示す。ここで、「LDQ」は、単なる「LD」と異なり、Qレジスタの内容をIYレジスタの上位に設定した上で、_SMC_PHSの内容をIYレジスタの下位に設定することを示す。かかる1〜3行目のコマンドが、図10のステップS210に対応する。
図12の4行目の「TMR_IPT01:」は、8行目の「DJNZ TMR_IPT01」の戻り先アドレスを示す。5行目の「CALLF SMCPROC」は、リール134a、134b、134c、134dのうちの1のリールについて、ステッピングモータ262のステップ数を1だけ進めて状態を更新するサブルーチンである「SMCPROC」を呼び出すことを示す。ここで「CALLF」は、単なる「CALL」と異なり、移動先のアドレスとの差分であるアドレス距離が1000H以上であれば、当該「CALLF」をマシン語にしたときのコードの長さ(コマンド長)は3バイトとなるものの、FFFH以内であれば、当該「CALLF」のコマンド長を2バイトに短縮できる。かかる5行目のコマンドが、図10のステップS212に対応する。
図12の6行目の「SLA C」は、Cレジスタの値(リール番号)を左に1ビット分シフトし、Cレジスタのビット0には0を入れることを示す。したがって、Cレジスタの値は、リール番号が1リール目の0001Bであれば2リール目の0010Bに更新され、リール番号が2リール目の0010Bであれば3リール目の0100Bに更新され、リール番号が3リール目の0100Bであれば4リール目の1000Bに更新される。かかる6行目のコマンドが、図10のステップS214に対応する。
図12の7行目の「INC IY」は、IYレジスタの値を1だけインクリメントすることを示す。これは、リール番号の更新に伴い、新たなリールのワークエリアにおける変数の先頭位置をオフセットさせるものである。かかる7行目のコマンドが、図10のステップS216に対応する。8行目の「DJNZ TMR_IPT01」は、Bレジスタの値(リールの数)を1だけデクリメントし、その結果がゼロでなければ、すなわち、4つのリール134a、134b、134c、134d全てが完了していなければ、4行目の「TMR_IPT01:」に移動することを示す。なお、Bレジスタの値を1だけデクリメントした結果がゼロであれば、4行目の「TMR_IPT01:」に移動することなく、当該プログラムが終了する。かかる8行目のコマンドが、図10のステップS218に対応する。
図13は、図11のフローチャートを実現するためのプログラムを説明するための説明図である。図13の1行目の「SMCPROC」は、当該サブルーチンの先頭アドレスを示す。2行目の「LD A,(IY+_STE_CNT−_SMC_PHS)」は、IYレジスタの値(変数の先頭アドレス)に、ステップカウンタ値のアドレス(_STE_CNT)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば4)を足したアドレス、すなわち、ステップカウンタ値のアドレスが示す内容を、Aレジスタに設定することを示す。かかる2行目のコマンドが、図11のステップS250に対応する。
図13の3行目の「DCPLD A,26−1」は、Aレジスタの値を1だけデクリメントし、デクリメントによってキャリアが生じた(マイナスになった)場合、所定のステップ数である(26−1)の値を設定することを示す。ここで、所定のステップ数を26−1としたのは、ステップカウンタ値の範囲を26とした場合、ステップカウンタ値は0〜25の間の値をとるからである。4行目の「LD E,A」は、EレジスタにAレジスタの値を設定することを示す。ここでは、Aレジスタを開放するため、ステップカウンタ値をEレジスタに退避している。5行目の「JR NC,SMC_ROT07」は、キャリアが生じていなければ、SMC_ROT07に移動することを示す。かかる3〜5行目のコマンドが、図11のステップS252、S254、S258に対応する。
図13の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」は、IYレジスタの値(変数の先頭アドレス)に、現在出現図柄番号のアドレス(_FIG_NUM)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば8)を足したアドレス、すなわち、現在出現図柄番号のアドレスが示す内容を、Aレジスタに設定することを示す。ここで、図13の6行目で用いられている所定のアドレスに格納された変数をメインCPU200aの所定のレジスタに読み出すコマンドである「LD (qq+v),A」は、単なる「LD」と異なり、vが8ビットで表される数値のうち0〜7以外の数値(−128〜−1もしくは8〜127のいずれか)であれば、当該「LD (qq+v),A」は、「LD (qq+d),A」として扱われ、コマンド自体の長さ(コマンド長)は3バイトとなるものの、0〜7のいずれかであれば、当該「LD (qq+v),A」のコマンド長を2バイトに短縮できる。なお、qqは、IXレジスタもしくはIYレジスタが用いられる。このようなコマンドは、主として、BCレジスタ、DEレジスタ、および、HLレジスタを利用することができない場合に利用されることが多い。かかる6行目のコマンドが、図11のステップS260に対応する。
図13の7行目の「DCPLD A,20−1」は、Aレジスタの値を1だけデクリメントし、それによってキャリアが生じた(マイナスになった)場合、所定の図柄数である(20−1)の値を設定することを示す。ここで、所定の図柄数を20−1としたのは、現在出現図柄番号の範囲を20とした場合、ステップカウンタ値は0〜19の間の値をとるからである。8行目の「LD (IY+_FIG_NUM−_SMC_PHS),A」は、Aレジスタの内容を、IYレジスタの値(変数の先頭アドレス)に、現在出現図柄番号のアドレス(_FIG_NUM)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば8)を足したアドレス、すなわち、現在出現図柄番号のアドレスに設定することを示す。ここで、図13の8行目で用いられている所定のアドレスに格納された変数をメインCPU200aの所定のレジスタの値で更新するコマンドである「LD A,(qq+v)」は、単なる「LD」と異なり、vが0〜7以外の数値であれば、当該「LD A,(qq+v)」は、「LD A,(qq+d)」として扱われ、コマンド自体の長さ(コマンド長)は3バイトとなるものの、0〜7のいずれかであれば、当該「LD A,(qq+v)」のコマンド長を2バイトに短縮できる。かかる7、8行目のコマンドが、図11のステップS262、S264、S266、S268に対応する。
図13の9行目の「DIV D,A,5」は、Aアドレスの値(現在出現図柄番号)を5で除算した余り(剰余)をDレジスタに設定することを示す。かかる9行目のコマンドが、図11のステップS270に対応する。10行目の「JBIT Z,0,D,SMC_ROT07」は、Dレジスタのビット0が0であれば、「SMC_ROT07」に移動することを示す。かかる10行目のコマンドが、図11のステップS272に対応する。11行目の「LD E,24−1」は、Eレジスタに、26とは異なる所定のステップ数(ここでは24)を設定することを示す。かかる11行目のコマンドが、図11のステップS274に対応する。12行目の「SMC_ROT07:」は、5行目の「JR NC,SMC_ROT07」の移動先アドレスを示す。13行目の「LD (IY+_STE_CNT−_SMC_PHS),E」は、Eレジスタの内容(ステップカウンタ値)で、IYレジスタの値(変数の先頭アドレス)に、現在出現図柄番号のアドレス(_STE_CNT)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば4)を足したアドレス、すなわち、ステップカウンタ値のアドレスの値を更新することを示す。かかる13行目のコマンドが、図11のステップS256に対応する。
なお、ここでは、ステップカウンタ値や現在出現図柄番号の計数に、ダウンカウンタを用いている。これは、ゼロやキャリアの発生を判断するコマンド(例えば、「DCPLD」)が多く(使い勝手が良く)、このようなコマンドを利用することでコマンド長を短くできるからである。ただし、必ずしもダウンカウンタに限らず、アップカウンタを用いてもよいことは言うまでもない。
また、ここでは、当該サブルーチンの先頭アドレスを示す図13の1行目の「SMCPROC」の次の行から、直ぐに、4つのリール134a、134b、134c、134d全てに関し、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新する処理が実行されているが、かかる場合に限らず、他のプログラムによる処理を実行した後に続けて、4つのリール134a、134b、134c、134d全てに関し、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新する処理を行ってもよい。
図14は、ワークエリアにおける比較例としての変数の配置を説明するための説明図である。ここでは、リール毎の変数を比較し易いように、モータフェーズ(_SMC_PHS)、ステップカウンタ値(_STE_CNT)、現在出現図柄番号(_FIG_NUM)といったパラメータを、その順に纏めて(連続させて)割り当てている。そして、各パラメータ内で、1リール目、2リール目、3リール目、4リール目といったように、各リールの変数を、その順に割り当てている。したがって、各変数は、図14に示すように、モータフェーズの1リール目、2リール目、3リール目、4リール目、ステップカウンタ値の1リール目、2リール目、3リール目、4リール目、現在出現図柄番号の1リール目、2リール目、3リール目、4リール目の順に配置されることとなる。
このような変数の配列を対象に、リール毎に、例えば、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新し、それを4リール分繰り返す場合、以下のように変数を指定する。すなわち、図12の3行目の「LDQ IY,_SMC_PHS」によって、IYレジスタにワークエリアにおける変数の先頭位置を設定し、図13の2行目の「LD A,(IY+_STE_CNT−_SMC_PHS)」において、ステップカウンタ値とモータフェーズとの差分をIYに加算することでステップカウンタ値をAレジスタに設定し、図13の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」において、現在出現図柄番号とモータフェーズとの差分をIYに加算することで現在出現図柄番号をAレジスタに設定し、図13の8行目の「LD (IY+_FIG_NUM−_SMC_PHS),A」において、現在出現図柄番号とモータフェーズとの差分をIYに加算することで、現在出現図柄番号をAレジスタの値で更新する。ここでは、モータフェーズ(_SMC_PHS)、ステップカウンタ値(_STE_CNT)、現在出現図柄番号(_FIG_NUM)を示すアドレスの差分(相対値)を用いることで、変数の配置変更がプログラムに影響を及ぼさないようにしている。
上述したように、所定のアドレスに格納された変数をメインCPU200aの所定のレジスタに読み出すコマンドである「LD A,(qq+v)」や、所定のアドレスに格納された変数をメインCPU200aの所定のレジスタの値に更新するコマンドである「LD (qq+v),A」といったコマンドは、vが0〜7以外の数値であれば、コマンド自体の長さ(コマンド長)は3バイトとなるものの、0〜7のいずれかであれば、当該コマンドのコマンド長を2バイトに短縮できる。ここで、図13の2行目の「LD A,(IY+_STE_CNT−_SMC_PHS)」を参照すると、リールが4つあるので、_FIG_NUM−_SMC_PHSは4となる。これは、0〜7の範囲なので、コマンド長を2バイトに抑えることができる。しかし、図13の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」および8行目の「LD (IY+_FIG_NUM−_SMC_PHS),A」を参照すると、そのアドレス距離が、パラメータ2つ分(4バイト×2パラメータ)離れているので、_FIG_NUM−_SMC_PHSは8となる。これは、0〜7の範囲に含まれないので、コマンド長が3バイトとなってしまう。そこで、本実施形態では、変数の配列を工夫することで、vを0〜7の範囲に収めるようにする。
図15は、ワークエリアにおける本実施形態の変数の配置を説明するための説明図である。ここでは、変数の配置を図14と異ならせる。すなわち、その配置をパラメータ単位とせず、リール単位としている。具体的に、変数を1リール目、2リール目、3リール目、4リール目の順に纏めて(連続させて)割り当てている。そして、各リール内で、モータフェーズ(_SMC_PHS)、ステップカウンタ値(_STE_CNT)、現在出現図柄番号(_FIG_NUM)といったパラメータに関する変数を、その順に割り当てている。したがって、1リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号、2リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号、3リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号、4リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号の順に配置されることとなる。
なお、上記のように変数の配置を変更したとしても、図14と図15を比較して理解できるように、ワークエリアの変数が占有する容量は変わっていない。また、図13に示したプログラムは、アドレス距離の変化を吸収するように作成されているので、モータフェーズ、ステップカウンタ値、現在出現図柄番号同士のアドレス距離(アドレスの差分)が変化しただけでは、図13に示したプログラムを変更する必要がない。
かかる変数の配置は、以下のような特徴がある。すなわち、本実施形態では、図10、図12に基づいて説明したように、サブルーチン(「SMCPROC」)を呼び出すといった処理をリール毎に繰り返す。したがって、リール毎に、モータフェーズ、ステップカウンタ値、現在出現図柄番号がそれぞれ参照されるという動作が行われる。例えば、図13の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」や8行目の「LD (IY+_FIG_NUM−_SMC_PHS),A」では、同一コマンドの中で、モータフェーズのアドレスと現在出現図柄番号のアドレスとが参照され、そのアドレス距離がコマンドに用いられる。ここでは、リール毎に、モータフェーズ、ステップカウンタ値、現在出現図柄番号を配置しているので、リール間のアドレス距離は大きくなるものの(3、6、または、9)、同一のリールにおけるパラメータ毎のアドレス距離は最大で現在出現図柄番号のアドレス−モータフェーズのアドレスの2となる。したがって、図13に示した同一のプログラムであっても、「LD (qq+v),A」や「LD A,(qq+v)」のvが0〜7の範囲(所定距離範囲)に収まるので、コード化した場合のコマンド長を2バイトに短縮化することが可能となる。
なお、図15のように変数の配置を変えることで、図12の7行目の「INC IY」を、例えば、「ADDWB IY,_SMC_PHS2−_SMC_PHS」に変更する必要があるが、かかる変更によってもコマンド長が数バイト増えるだけなので、総合的にバイト数を減らすことができる。以下、具体的な例を示す。
図16、図17は、定常回転中処理全体を実現するためのプログラムを説明するための説明図である。なお、図16はリール数を4としたときの効果を示し、図17はリール数を3としたときの効果を示す。上記では、図10〜図14を用い、サブルーチンである定常回転中処理として、「図柄情報更新」を遂行する例を挙げて説明したが、実際には、「インデックスセンサエッジチェック」、「インデックスセンサエッジ検出時処理」、「インデックスセンサ検出後処理」、「回転エラー検出上限判定」、「図柄情報更新」、「停止要求確認」の順で処理が遂行される。このうち「図柄情報更新」が、図13のプログラムに相当する。なお、ここに挙げた処理の内容は本実施形態と直接関係ないので、その詳細な説明を割愛し、上記のように変数の配置を変えたことによる効果のみを説明する。
ここでは、図16に示すように、変数の配置を変更したことにより、所定のコマンドによってコマンド長のバイト数が削減される。例えば、「インデックスセンサエッジチェック」ではコマンド長が2バイト削減され、「インデックスセンサエッジ検出時処理」ではコマンド長が7バイト削減され、「回転エラー検出上限判定」ではコマンド長が1バイト削減され、「図柄情報更新」では図13〜図15を用いて説明したようにコマンド長が2バイト削減され、「停止要求確認」ではコマンド長が1バイト削減される。そうすると、定常回転中処理全体では、コマンド長が13バイト削減されたことになる。
したがって、リール数が4つの場合において、上述したように変数の配置を変更したことにより、「ADDWB」といった他のコマンドが用いられ、コマンド長が数バイト増加したとしても、プログラム全体では、例えば9バイト削減することができる。こうして、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
また、リール数が3つの場合であっても、図17に示すように、変数の配置を変更したことにより、所定のコマンドによってコマンド長のバイト数が削減される。例えば、「インデックスセンサエッジチェック」ではコマンド長が2バイト削減され、「インデックスセンサエッジ検出時処理」ではコマンド長が5バイト削減され、「回転エラー検出上限判定」ではコマンド長が1バイト削減され、「図柄情報更新」では図13〜図15を用いて説明したようにコマンド長が2バイト削減され、「停止要求確認」ではコマンド長が1バイト削減される。そうすると、定常回転中処理全体では、コマンド長が11バイト削減されたことになる。
したがって、リール数が3つの場合において、上述したように変数の配置を変更したことにより、「ADDWB」といった他のコマンドが用いられ、コマンド長が数バイト増加したとしても、プログラム全体では、例えば2バイト削減することができる。こうして、4リール同様、3リールとした場合にも、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
また、ここでは、「LD (qq+v),A」や「LD A,(qq+v)」がサブルーチンに含まれ、アドレスをリール分オフセットさせながら、サブルーチンを繰り返し呼び出す例を挙げて説明したが、かかる場合に限らず、サブルーチンではなくとも、「LD (qq+v),A」や「LD A,(qq+v)」といったコマンドを、アドレスをオフセットさせながら繰り返し実行すれば足りる。このときに、コマンドで参照される複数の変数同士のアドレス距離が、オフセットされるアドレス距離より近くなるように配置されればよい。こうすることで、コマンドのコマンド長を短縮化することが可能となる。
また、コマンド長を短縮化するためには、オフセットされるアドレス距離に制限はなく、コマンドで参照される複数の変数同士のアドレス距離が所定距離範囲内、ここでは0〜7であれば足りる。
このように、vを0〜7の範囲に収めるように変数を配置することで、所定のコマンドのコマンド長を短縮化でき、ワークエリアの変数が占有する容量を変えることなく、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことはいうまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
また、上述した実施形態では、主制御基板200と副制御基板202とが、遊技を進行するための機能部を分担するように配したが、主制御基板200の機能部を副制御基板202に配しても、副制御基板202の機能部を主制御基板200に配してもよく、また、全ての機能部を1の制御基板に纏めて配することもできる。
また、上述した実施形態においては、遊技利益としてボーナス遊技を挙げて説明したが、かかる場合に限らず、上述したAT演出状態や、リプレイ役の当選確率が通常遊技より高くなるように設定してメダルの消費を抑えることで、メダルの消費に対する当選役の抽選機会を増やす、RT(リプレイタイム)遊技や、上記のATとRT遊技が同時に進行されるART遊技を設けてもよい。
また、上述した主制御基板200および副制御基板202が行う各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。