以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
本発明の実施形態の理解を容易にするため、まず、遊技者が遊技可能なスロットマシン(遊技機)の機械的構成および電気的構成を簡単に説明し、その後、スロットマシンの各基板における具体的な処理(役構成や遊技状態の遷移)および本実施形態で特徴的な処理を説明し、これらを実現するためのフローチャートを詳述する。
(スロットマシン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等分された各領域に複数種類の図柄がそれぞれ配列された3つのリール134a、134b、134cが、それぞれ独立して回動可能に設けられ、遊技者は、図柄表示窓136を通じて、リール134a、134b、134cを視認することができる。リールユニット134は、スタートスイッチ128の操作を契機として、リール134a、134b、134cの回転を開始する。
操作部設置台122の中央に位置するストップスイッチ130は、リール134a、134b、134cそれぞれに対応して設けられた、遊技者の押圧操作を検出可能なボタンスイッチであり、リール134a、134b、134cそれぞれを停止させようとする遊技者の停止操作を検出する。なお、ストップスイッチ130に係る3つのボタンスイッチを、その位置に応じて左から順にストップスイッチ130a、130b、130cとする。
このように、ストップスイッチ130a、130b、130cを通じた停止操作により、リール134a、134b、134cがそれぞれ停止する。ここでは、その停止態様を遊技者が把握できるように、図3(b)のように、有効ラインが設けられている。有効ラインは1本であり、具体的に、図柄表示窓136に臨む9個の図柄(3リール×上中下の3段)のうち、リール134a、134b、134cの中段に停止する図柄に対応する位置を結んだラインを当選役の入賞を判定するための有効ライン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の内側には、それぞれに施された図柄のうち、図柄表示窓136に対応する各リール134a、134b、134cの上段、中段、下段の図柄を背面から個々に独立して照射するリールバックライト144(図4参照)が設けられている。また、図柄表示窓136の裏面上部にもリール134a、134b、134c全ての正面を直接照射するリール上方ライト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を回転制御し、回転しているリール134a、134b、134cにそれぞれ対応した複数のストップスイッチ130a、130b、130cの操作に応じ、操作されたストップスイッチ130a、130b、130cに対応するリール134a、134b、134cをそれぞれ停止制御する。また、リール制御手段306は、スタートスイッチ128の操作に応じて、前回の遊技においてストップスイッチ130の操作を有効化してから、当選役抽選の抽選結果を表示するために遊技者によるストップスイッチ130の操作を有効化するまで(前回の遊技におけるストップスイッチ130の操作完了により無効化されている)の時間を規定の時間(ウェイト時間、例えば、4.1秒)より延長し、その間、リール134a、134b、134cを多彩な態様で回転制御するリール演出(フリーズ演出)を行う場合がある。リール演出は、本来有効となるべき任意のスイッチを所定時間有効にしなかったり、本来実行されるべき処理を所定時間保留したり、本来送受信されるべき任意のスイッチの信号を所定時間送信または受信させなかったりすることでも実現できる。
判定手段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の回転開始信号に基づいて、ステッピングモータ262を駆動するとともに、ストップスイッチ130の操作信号に応じ、リール制御手段306から送信される、リール134a、134b、134cそれぞれの停止信号および回転位置検出回路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それぞれに記される図柄「リプレイ」が有効ラインA上に表示可能となり、当選役「リプレイ」に対応する図柄組み合わせが有効ラインA上に表示されると、上記したように、遊技者によるベットを行わずして再度1遊技(再遊技)を実行できる。
ここで、本実施形態においては、遊技者によってストップスイッチ130が押圧操作されたときに、当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、当該図柄が有効ラインA上に停止するように停止制御がなされる。また、ストップスイッチ130が押圧操作されたときに、当選役に対応する図柄組み合わせを構成する図柄が、有効ラインA上にはないが、各リール134a、134b、134cの回転方向と反対の方向の図柄4コマ分に相当する範囲(引込範囲)内に存在している場合には、リール制御手段306によって、離れている図柄数が滑りコマ数となり、当該当選役に対応する図柄組み合わせを構成する図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。また、当選役に対応する図柄が各リール134a、134b、134c中に複数あり、いずれも各リール134a、134b、134cの引込範囲内に存在している場合には、予め定められた優先順位に従っていずれの図柄を有効ラインA上に引き込むか決定され、当該優先された図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。なお、ストップスイッチ130が押圧操作されたときに、当選した当選役以外の当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、その図柄を有効ラインA上に停止させないようにする、所謂蹴飛ばし処理も並行して実行される。
そして、各リール134a、134b、134cにおいては、当選役「リプレイ」に対応する図柄組み合わせを構成する図柄が、上記の停止制御によって、必ず有効ラインA上に表示可能なように配列されている(図3および図5参照)。具体的に、当選役「リプレイ」に対応する図柄組み合わせを構成する図柄同士は、各リール134a、134b、134c内で最大図柄4コマ分しか離隔していないので、停止制御によって必ず有効ラインA上に表示することができる。このように、当選役「リプレイ」に当選すると、これら当選役「リプレイ」に対応する図柄組み合わせが、必ず、有効ラインA上に表示されることとなる。このようにして、当選役「リプレイ」に対応する図柄組み合わせが有効ラインA上に表示された場合には、メダルを投入することなく次の1遊技を開始することが可能となる。
(小役)
また、当選役抽選の結果、当選役「ベル」に当選した場合には、当選役「ベル」に対応する図柄組み合わせである、各リール134a、134b、134cそれぞれに記される図柄「ベルA」が有効ラインA上に表示可能となり、当選役「ベル」に対応する図柄組み合わせが有効ラインA上に表示された場合には、当選役に対応した枚数(ここでは9枚)のメダルが遊技者に払い出される。ここで、当選役「ベル」に対応する図柄組み合わせを構成する図柄「ベルA」同士は、各リール134a、134b、134c内で最大図柄4つ分しか離隔していないので(図3および図5参照)、当選役「リプレイ」同様、上記の停止制御によって、必ず有効ラインA上に表示することができる。
(ボーナス役)
また、当選役抽選の結果、当選役「BB」に当選すると、図5に示した当選役「BB」に対応する図柄組み合わせである、各リール134a、134b、134cそれぞれに記される図柄「赤7」が有効ラインA上に表示可能となり、当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示されると、遊技状態がボーナス遊技状態に設定され、次の1遊技(以下、単に次遊技という)以降、メダルが所定枚数(例えば、297枚)払い出されるまで、ボーナス遊技状態にて遊技を実行することが可能となる。なお、各リール134a、134b、134cにおいては、それぞれ図柄「赤7」が、上記の停止制御によっても、有効ラインA上に表示されない場合があるように配列されている(図3および図5参照)。そのため、当選役「BB」に当選したとしても、遊技者は、当選役「BB」に対応する図柄組み合わせを必ずしも有効ラインA上に表示させられるとは限らない。
なお、上述したいずれかの当選役に当選すると、それぞれの当選役に対応する内部当選フラグが成立(ON)するとともに、この内部当選フラグの成立状況に応じて、リール134a、134b、134cそれぞれの停止制御がなされることとなる。このとき、小役に当選したものの、その小役に対応する図柄組み合わせを、その1遊技内で有効ラインA上に表示させることができなかった場合には、当該1遊技の終了後に内部当選フラグがOFFされる。つまり、小役の当選の権利は小役に当選した1遊技内のみに限られ、当該権利を次遊技に持ち越すことはできない。また、リプレイ役である当選役「リプレイ」に対応する内部当選フラグが成立した場合には、当選役「リプレイ」に対応する図柄組み合わせが必ず有効ラインA上に表示され、メダルを要することなく次遊技を行うために必要となる処理が行われた後に、当該内部当選フラグがOFFされる。これらに対して、当選役「BB」に当選した場合には、BB内部当選フラグが成立(ON)するとともに、当選役「BB」に対応する図柄組み合わせが有効ラインA上に表示されるまで、BB内部当選フラグが遊技を跨いで持ち越される。
(遊技状態の遷移)
ここで、BB内部当選フラグについて、遊技状態の遷移と合わせて具体的に説明する。BB内部当選フラグが成立すると、BB内部当選フラグの成立状況に応じて、図6の(1)に示すように、主制御基板200で管理している遊技状態が、ボーナス役である当選役「BB」に当選していないボーナス非成立遊技状態から、ボーナス遊技状態の準備状態に相当するボーナス成立遊技状態となり、ボーナス成立遊技状態に基づいてリール134a、134b、134cそれぞれの停止制御がなされる。このとき、当選役「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の回転中に不意の電断が起きたとしても、復帰動作後に再度各リール134a、134b、134cが回転している状態から開始される。したがって、初期化処理では、基本的に、メインRAM200cの初期化(RAMクリア)は行われない。
(ステップS200)
また、コマンド決定手段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を回転させる。このリール回転処理においては、前回の1遊技におけるリール134a、134b、134cの回転開始時点から所定の時間(例えば4.1秒)が経過すると(ウェイト)、当該遊技におけるリール134a、134b、134cの回転を開始し、リール134a、134b、134cの全てが定速回転となったところで、ステップS500に処理を移す。また、リール制御手段306は、リール演出を実行する場合もある。
(ステップS500)
続いて、リール制御手段306は、ストップスイッチ130a、130b、130c、130dを有効化し、遊技者によるストップスイッチ130a、130b、130c、130dの操作を受け付けると、その操作に対応するリール134a、134b、134cのいずれかを停止制御する。また、コマンド決定手段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に送信する。
ステップS200からステップS700までの一連の処理を通じて1遊技が実行される。以後は、ステップS200からステップ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には内部レジスタが設けられている。
図10は、メインCPU200aの内部レジスタを説明するための説明図である。内部レジスタは、それぞれ8bitまたは16bitで構成され、単独で用いる場合と、予め定められている組み合わせ(ペアレジスタ)で用いる場合とがある。また、内部レジスタには表レジスタと、一部の表レジスタに対応した裏レジスタとがある。
図10に示す内部レジスタのうち、Qレジスタ(キューレジスタ)は、遊技機用拡張仕様の8ビット専用レジスタである。かかるQレジスタの上位1バイトはF0h固定で、F000h〜F0FFhのメインRAM200cのアクセスに利用する。Iレジスタは、割込先アドレスの上位8ビットを記憶する専用レジスタである。Aレジスタは、演算処理やデータ転送に使う8ビットのアキュムレータである。Fレジスタは、各種演算結果を保持する8ビットのフラグレジスタである。ここで、Fレジスタの各ビットは、図10に示すように、最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Least Significant Bit)にかけて、sは、演算結果が負のとき1にセットされるサインフラグであり、zは、演算の結果、全ビットが0のとき1にセットされるゼロフラグ(第1ゼロフラグ)であり、tzは、データ転送命令(LD;ロード)の実行により、全ビットが0のとき1にセットされる(値の変わる)遊技機用拡張仕様の特定ビットフラグ(第2ゼロフラグ)であり、ティーゼットフラグと呼ぶ場合もある。hは、プログラマーが関与できないハーフキャリーフラグであり、*は、予約ビット(未定義)であり、p/vは、パリティオーバーフローフラグであり、nは、プログラマーが関与できない加減算フラグであり、cは、演算の結果、桁上げまたはボロー発生時に1がセットされるキャリーフラグである。なお、Fレジスタは、AレジスタとペアレジスタAFを構成する。
また、Bレジスタ、Cレジスタ、Dレジスタ、Eレジスタ、Hレジスタ、Lレジスタは、8ビットの汎用レジスタであり、それぞれ16ビットのペアレジスタBC、DE、HLを構成する。IXレジスタ、IYレジスタは、インデックスアドレッシング用16ビット専用レジスタであり、IXh、IYhは、上位8ビットを示し、IXl、IYlは下位8ビットを示す。A’レジスタ、F’レジスタ、B’レジスタ、C’レジスタ、D’レジスタ、E’レジスタ、H’レジスタ、L’レジスタは、Aレジスタ、Fレジスタ、Bレジスタ、Cレジスタ、Dレジスタ、Eレジスタ、Hレジスタ、Lレジスタの表レジスタとの交換命令によりデータ(内容)交換可能な裏レジスタであり、A’レジスタとF’レジスタでペアレジスタAF’を構成し、B’レジスタとC’レジスタでペアレジスタBC’を構成し、D’レジスタとE’レジスタでペアレジスタDE’を構成し、H’レジスタとL’レジスタでペアレジスタHL’を構成する。かかる裏レジスタは、割込処理の発生時に表レジスタのスタック領域として機能する。
このような環境の下、メインCPU200aは、例えば、1.49msec毎の割込信号に応じて、使用領域のプログラムの命令コードに従い、使用領域のプログラムデータを参照しつつ、また、各内部レジスタ、使用領域のワークエリアやスタック領域を利用して、初期化手段300、ベット手段302、当選役抽選手段304、リール制御手段306、判定手段308、払出制御手段310、状態移行手段312、コマンド決定手段314、コマンド送信手段316を機能させる遊技制御処理を遂行する。
なお、ここでは、命令コードとして、エルイーテック(LETech)社が販売するLEM50A−P(製品名)に対して準備されたコマンドを用いている。LEM50A―Pは、遊技機業界で汎用的に用いられる(市場占有率が高い)、NC80EXというZ80系CPUを搭載したマイクロプロセッサである。
このように、メインCPU200aにおいて、使用領域の記憶容量は予め定められており、例えば、図9に示したように、制御領域が4.5kbyteに制限され、データ領域が3.0kbyteに制限されている。したがって、AT演出状態や、リールユニット134を多彩な態様で回転させる所謂リール演出を、メインCPU200aが管理する場合、制御領域の中で、遊技制御処理の記憶容量がさらに制限されるおそれがある。ここでは、変数の配列を工夫することで、遊技制御処理を行うための制御領域の容量を確保する。
遊技制御処理として、例えば、リール制御手段306が、3つのリール134a、134b、134cを制御するプログラムを挙げる。リール制御手段306は、3つのリール134a、134b、134cを制御するため、上述した内部レジスタに加え、ワークエリアにおいて複数の変数を保持する。以下、変数について詳述する。
本実施形態では、3つのリール134a、134b、134cを回動するために、ステップ数の総数が252であるステッピングモータ262を用いている。これは、図柄数が仮に21であった場合に、252が21の倍数なので、図柄毎のステップ数を均等に扱えるからである。なお、本実施形態では、ステッピングモータ262を1−2相励磁で動作させているので、分解能を上げ、そのステップ数を252の2倍の504で計数することができる。したがって、以下の例では、ステップ数の総数を504として扱っている。
また、リール134a、134b、134cの状態は、モータフェーズ、ステップカウンタ値、現在出現図柄番号の3つの属性(パラメータ)で表される。モータフェーズは、リール134a、134b、134cの動作状態、すなわち、加速中、定常回転中、停止中、待機中を示す。具体的に、モータフェーズに割り当てられた1バイトの変数が、そのモータの動作状態に応じて、加速中=3、定常回転中=2、停止中=1、待機中=0といった値に変化する。なお、ここでは、加速中、定常回転中、停止中、待機中といった動作を挙げているが、動作として減速中が含まれていてもよい。
また、ステップカウンタ値は、単位図柄におけるステップの計数を示す。例えば、図柄数が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が1回転したとし、現在出現図柄番号を初期化する。かかる3つの属性(モータフェーズ、ステップカウンタ値、現在出現図柄番号)を参照することで、ステッピングモータ262の動作状態とリールの位置とを把握することができる。
なお、以後の説明において、リール134a、リール134b、リール134cといったように、スロットマシン100の一部であり、それぞれ物理的に独立して認識可能なものをデバイスと称することがあり、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったように、デバイスを制御するためのパラメータ(データ)の属性(種類)をデバイス属性と称することがある。デバイス属性は、デバイスを制御するための複数のパラメータに対応して複数種類設けられる。
ここでは、3つのリール134a、134b、134c(複数のデバイス)それぞれについて、モータフェーズ、ステップカウンタ値、現在出現図柄番号といった3つのデバイス属性(複数種類のデバイス属性)に対応する変数がワークエリアに配置される。その配置の態様としては2通りが考えられる。一方は、リール134a、134b、134c等、デバイスを基準とした配置、具体的に、デバイス単位で、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性の変数を並置した(纏めた)配置である。他方は、デバイス属性を基準とした配置、具体的に、デバイス属性単位で、デバイスの変数を並置した(纏めた)配置である。
(デバイス属性基準)
図11は、ワークエリアにおける変数の配置を説明するための説明図である。ここでは、リール134a、134b、134c等、デバイス単位で纏めて変数を配置している。具体的に、初期化手段300は、図11(a)のプログラムに従って、1リール目、2リール目、3リール目の順に纏めて(連続させて)変数を割り当てる。そして、初期化手段300は、電源投入時(電源ONの度、設定変更時)の初期化処理S100において、各リール内で、モータフェーズ(_SMC_PHS)、ステップカウンタ値(_STE_CNT)、現在出現図柄番号(_FIG_NUM)といったデバイス属性に対応する変数を、その順に割り当てる。したがって、ワークエリアには、図11(b)のように、1リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号、2リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号、3リール目のモータフェーズ、ステップカウンタ値、現在出現図柄番号の順に変数が配置されることとなる。なお、初期化手段300は、電源投入時において、変数のバックアップデータが存在していれば、そのバックアップデータを復帰させ、変数のバックアップデータが存在していなければ、上記のように各デバイス属性内で各リールの変数を割り当てる。
図12は、ワークエリアにおける変数の他の配置を説明するための説明図である。ここでは、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している。具体的に、初期化手段300は、図12(a)のプログラムに従って、モータフェーズ(_SMC_PHS)、ステップカウンタ値(_STE_CNT)、現在出現図柄番号(_FIG_NUM)といったデバイス属性に対応する変数を、その順に纏めて(連続させて)割り当てる。そして、初期化手段300は、電源投入時(電源ONの度、設定変更時)の初期化処理S100において、各デバイス属性内で、1リール目、2リール目、3リール目といったように、各リールの変数を、その順に割り当てる。したがって、ワークエリアには、図12(b)のように、モータフェーズの1リール目、2リール目、3リール目、ステップカウンタ値の1リール目、2リール目、3リール目、現在出現図柄番号の1リール目、2リール目、3リール目の順に配置されることとなる。
図11(b)と図12(b)とを比較すると、変数がワークエリアを占有する容量は9バイトで変わっていない。また、図11(b)の変数の配置は、リール134a、134b、134c単位で変数を参照する場合や、その値を確認する場合に把握し易い。一方、図12(b)の変数の配置は、モータフェーズ、ステップカウンタ値、現在出現図柄番号それぞれについて変数を参照する場合や、その値を確認する場合に把握し易いことが理解できる。
図13および図14は、リール制御手段306の処理を説明するための説明図である。ここで、メインCPU200aは、例えば、1.49msec毎の割込信号に応じ、使用領域に格納されているプログラム(使用プログラム)の命令コードによって遊技制御処理を遂行する。そして、メインCPU200aは、メインルーチンを実行し、メインルーチンからサブルーチンを呼び出し、そのサブルーチンにおいて、3つのリール134a、134b、134c全てが待機中であるか否かを判定する(励磁開放待ち処理)例を挙げて説明する。ここで、リール制御手段306は、各リール134a、134b、134cの定常回転中(モータフェーズの値は、定常回転中=2)における、ストップスイッチ130a、130b、130cそれぞれの操作(押下)に応じ、ステッピングモータ262の全相励磁を通じて対応するリール134a、134b、134cを減速し(モータフェーズの値は、停止中=1)、リール134a、134b、134cが完全に停止すると、待機中に移行するとともにステッピングモータ262を励磁開放する。モータフェーズは、待機中となったことにより、その値が0となる。なお、ここでは、各リール134a、134b、134cの定常回転中における、ストップスイッチ130a、130b、130cそれぞれの押下操作に応じ、リール134a、134b、134cを減速する例を挙げているが、ストップスイッチ130a、130b、130cそれぞれの押下操作の解除に応じ、リール134a、134b、134cを減速してもよい。
例えば、図11(b)に示すような変数の配置を採用した場合、図13(a)に示すような処理を行うことが考えられる。図13(a)のフローチャートに示すように、リール制御手段306は、まず、1リール目のモータフェーズの変数をAレジスタに設定する(S210)。次に、リール制御手段306は、2リール目のモータフェーズの変数とAレジスタの値との論理和をとる(S212)。こうして、1リール目のモータフェーズの変数、または、2リール目のモータフェーズの変数のいずれかに0以外の値が含まれている場合、Aレジスタの値も0以外となる。続いて、リール制御手段306は、3リール目のモータフェーズの変数とAレジスタの値との論理和をとる(S214)。こうして、1リール目のモータフェーズの変数、2リール目のモータフェーズの変数、または、3リール目のモータフェーズの変数のいずれかに0以外の値が含まれている場合、Aレジスタの値も0以外となる。次に、リール制御手段306は、Aレジスタの値が0以外であるか否か判定し(S216)、その結果、Aレジスタが0以外であれば(S216におけるYES)、当該フローチャートを最初から繰り返し、Aレジスタが0であれば(S216におけるNO)、全てのリール134a、134b、134cが待機中になったとして、当該フローチャートを終了し、メインルーチンに戻る(S218)。
このような図13(a)で示したフローチャートは、例えば、図13(b)のプログラムによって実現される。図13(b)の1行目の「EXCFREE」は、当該サブルーチンの先頭アドレスを示す。2行目の「LDQ A,(LOW _SMC_PHS1)」は、1リール目のモータフェーズのアドレス(_SMC_PHS1)の値をAレジスタに設定することを示す。ここで、「LDQ」等、「Q」が付されている命令コマンドは、NC80EX独自で利用されるコマンドであり、Qレジスタの値をIYレジスタの上位に設定した上で、_SMC_PHSそのもののアドレス値をIYレジスタの下位に設定し、IYレジスタで示されるアドレスにアクセスする。したがって、「Q」が付されている命令コマンドでは、2バイトで構成される_SMC_PHSそのもののアドレス値の下位バイトを指定するため、アドレスの表記は「(LOW _SMC_PHS1)」となる。かかる2行目のコマンドが、図13(a)のステップS210に対応する。3行目の「ORQ (LOW _SMC_PHS2)」は、2リール目のモータフェーズのアドレス(_SMC_PHS2)の値とAレジスタの値との論理和をとり、その結果をAレジスタに設定することを示す。かかる3行目のコマンドが、図13(a)のステップS212に対応する。4行目の「ORQ (LOW _SMC_PHS3)」は、3リール目のモータフェーズのアドレス(_SMC_PHS3)の値とAレジスタの値との論理和をとり、その結果をAレジスタに設定することを示す。かかる4行目のコマンドが、図13(a)のステップS214に対応する。2〜4行目のコマンドにより、結果的に、1リール目のモータフェーズのアドレス(_SMC_PHS1)の値、2リール目のモータフェーズのアドレス(_SMC_PHS2)の値、および、3リール目のモータフェーズのアドレス(_SMC_PHS3)の値の論理和を計算することとなり、いずれかに0以外の値が含まれている場合、その結果が0以外となる(0にはならない)。5行目の「JR NZ,EXCFREE」は、第1ゼロフラグが0でなければ、EXCFREEに移動することを示す。かかる5行目のコマンドが、図13(a)のステップS216に対応する。そして、6行目の「RET」によって、メインルーチンに戻ることとなる。
かかる図13(b)の例において、命令コマンドをマシン語にしたときのコードの長さ(コマンド長)は、「LDQ A,(LOW _SMC_PHS1)」が2バイト、「ORQ (LOW _SMC_PHS2)」が3バイト、「ORQ (LOW _SMC_PHS3)」が3バイト、「JR NZ,EXCFREE」が2バイト、「RET」が1バイトとなる。したがって、図13(b)のプログラムのコマンド長の合計は11バイトとなる。
一方、図12(b)に示すような変数の配置を採用した場合、図14(a)に示すような処理を行うことが考えられる。図14(a)のフローチャートに示すように、リール制御手段306は、まず、1リール目のモータフェーズの変数が0以外であるか否か判定し(S230)、その結果、0以外であれば(S230におけるYES)、当該フローチャートを最初から繰り返し、0であれば(S230におけるNO)、2リール目のモータフェーズの変数および3リール目のモータフェーズの変数をHLレジスタに設定する(S232)。次に、リール制御手段306は、HLレジスタの値が0以外であるか否か判定し(S234)、その結果、0以外であれば(S234におけるYES)、当該フローチャートを最初から繰り返し、0であれば(S234におけるNO)、当該フローチャートを終了し、メインルーチンに戻る(S236)。
このような図14(a)で示したフローチャートは、例えば、図14(b)のプログラムによって実現される。図14(b)の1行目の「EXCFREE」は、当該サブルーチンの先頭アドレスを示す。2行目の「JTQ NZ,(LOW _SMC_PHS),EXCFREE」は、「Q」が付されたNC80EX独自で利用されるコマンドであり、1リール目のモータフェーズのアドレス(_SMC_PHS)の値から0(ゼロ)を減算した場合の第1ゼロフラグが0でなければ、EXCFREEに移動することを示す。かかる2行目のコマンドが、図14(a)のステップS230に対応する。3行目の「LDQ HL,(LOW _SMC_PHS+1)」は、2リール目のモータフェーズのアドレス(_SMC_PHS+1)と、3リール目のモータフェーズのアドレス(_SMC_PHS+2)の内容をHLレジスタに設定することを示す。なお、単にレジスタに値を呼び出した場合であっても、その呼び出した値が0であれば、第2ゼロフラグは0となる。かかる3行目のコマンドが、図14(a)のステップS232に対応する。4行目の「JR NTZ,EXCFREE」は、第2ゼロフラグが0でなければ、EXCFREEに移動することを示す。かかる4行目のコマンドが、図14(a)のステップS234に対応する。そして、5行目の「RET」によって、メインルーチンに戻ることとなる。
かかる図14(b)の例において、コマンドをマシン語にしたときのコマンド長は、「JTQ NZ,(LOW _SMC_PHS),EXCFREE」が4バイト、「LDQ HL,(LOW _SMC_PHS+1)」が2バイト、「JR NTZ,EXCFREE」が2バイト、「RET」が1バイトとなる。したがって、図14(b)のプログラムのコマンド長の合計は9バイトとなる。かかる図14(b)のプログラムのコマンド長の合計は、図13(b)のプログラムのコマンド長の合計である11バイトより2バイト短縮されている。
ここで、図11(b)に示したように、リール134a、134b、134c等、デバイス単位で纏めて変数を配置する場合と、図12(b)で示したように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している場合とで、ワークエリアの変数が占有する容量は変わっていない。一方、プログラムのコマンド長の合計は、図13を用いて説明したように、リール134a、134b、134c等、デバイス単位で纏めて変数を配置する場合と、図14を用いて説明したように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している場合とで差が生じる。つまり、プログラムのコマンド長の合計は、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している場合の方が短縮できる。これは、図14(b)の場合、リール制御手段306が、1の命令コマンド(「LDQ HL,(LOW _SMC_PHS+1)」)または連続する複数の命令コマンド(「JTQ NZ,(LOW _SMC_PHS),EXCFREE」および「LDQ HL,(LOW _SMC_PHS+1)」)によって、同一のデバイス属性(_SMC_PHS)に対応する異なる複数のデバイス(リール134a、134b、134c)の変数にアクセスしているからであり、これにより、命令コマンドを少なく、かつ、コマンド長を短縮することができる。こうして、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
また、図12(b)を参照して理解できるように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置することで、モータフェーズ、ステップカウンタ値、現在出現図柄番号それぞれについて変数を参照する場合や、その値を確認する場合に把握し易く、デバイス属性単位で他のデバイスと矛盾する値になっていることに気付かなかったり、一部の変数の書き換えを失念してしまう等の問題を回避することができる。
なお、ここでは、リール数が3つの場合を挙げ、変数の配置によりコマンド長の合計が2バイト短縮される例を説明したが、リール数を4以上に増やした場合、短縮されるコマンド長の合計はさらに増加することとなる。
図15は、スロットマシン100の概略的な機械的構成を説明するための外観図である。ここでは、図1と同スロットマシン100において、図1のスロットマシン100よりリール数およびストップスイッチ数が1つ増えている。したがって、図15のスロットマシン100では、図1のスロットマシン100と比べてリール134dが追加されるとともに、ストップスイッチ130dが追加されている。
なお、ここでは、リール134a、134b、134c、134dの状態として、モータフェーズ、ステップカウンタ値、現在出現図柄番号の3つのデバイス属性に加え、停止要求フラグ、インデックス前回値、シーケンスカウンタ、回転エラー検出カウンタ、初回検出エッジ種別といったデバイス属性も管理することとする。
ここで、停止要求フラグは、図柄の停止を要求するフラグであり、ビット7が1であれば停止要求されていることを示し、その停止要求対象である図柄番号がビット6〜0で示される。インデックス前回値は、インデックスセンサの前回値を示し、前回値がオンであれば1が、オフであれば0が設定される。シーケンスカウンタは、リール134a、134b、134c、134dの回転に関する時間を計数するカウンタであり、例えば、割り込み周期1.49msecを135まで計数して全相励磁の201.15msecを計時する。回転エラー検出カウンタは、リール134a、134b、134c、134dの回転が正常か否か判定するカウンタであり、割り込み周期1.49msec2回分で1ずつインクリメントし、インデックスセンサの変化時において、計数値が6未満、または、計数値が131以上であれば、回転エラーと判定する。初回検出エッジ種別は、インデックスセンサの極性を保持するもので、リール134a、134b、134c、134dの加速後、停止禁止タイマが0になってから、最初のインデックスセンサの変化がオフ→オンか、オン→オフかを記憶している。そして、初回検出エッジ種別が記憶された以後の遊技では、初回検出エッジ種別に記憶されているエッジの変化タイミングでのみ、現在出現図柄番号とステップカウンタ値を更新する。
図16および図17は、リール数が4つ(リール134a、134b、134c、134d)の場合のプログラムの違いを説明するための説明図である。図16(a)では、図11(b)同様、初期化手段300が電源投入時の初期化処理S100において、デバイス単位で纏めて変数を配置しているが、リール数が多い分だけ、変数が占有する容量が増えている(12バイト)。かかる変数の配置を採用して、4つのリール134a、134b、134c、134d全てが待機中であるか否かを判定するプログラムを作成すると、例えば、図16(b)のような命令コードとなる。ここでは、図13(b)と比べ、5行目の「ORQ (LOW _SMC_PHS4)」が追加されている。5行目の「ORQ (LOW _SMC_PHS4)」は、4リール目のモータフェーズのアドレス(_SMC_PHS4)の値とAレジスタの値との論理和をとり、その結果をAレジスタに設定することを示す。このように、コマンド長が3バイトである「ORQ (LOW _SMC_PHS4)」が追加されたことで、プログラムのコマンド長の合計が14バイトとなり、リール数が3つの場合より3バイト増加していることが理解できる。
一方、図17(a)では、図12(b)同様、初期化手段300が電源投入時の初期化処理S100において、デバイス属性単位で纏めて変数を配置している。図16(a)と比較して、変数が占有する容量は12バイトで変わっていない。かかる変数の配置を採用して、4つのリール134a、134b、134c、134d全てが待機中であるか否かを判定するプログラムを作成すると、例えば、図17(b)のような命令コードとなる。ここでは、図14(b)と比べ、図14(b)の2行目の「JTQ NZ,(LOW _SMC_PHS),EXCFREE」が、図17(b)の2行目の「LDQ HL,(LOW _SMC_PHS)」と、図17(b)の3行目の「JR NTZ,EXCFREE」に置換され、図14(b)の3行目の「LDQ HL,(LOW _SMC_PHS+1)」の記述が、図17(b)の4行目のように「LDQ HL,(LOW _SMC_PHS+2)」に変更されている。図17(b)の2行目の「LDQ HL,(LOW _SMC_PHS)」は、1リール目のモータフェーズのアドレス(_SMC_PHS)と、2リール目のモータフェーズのアドレス(_SMC_PHS+1)の内容をHLレジスタに設定することを示す。なお、単にレジスタに値を呼び出した場合であっても、その呼び出した値が0であれば、第2ゼロフラグは0となる。図17(b)の3行目の「JR NTZ,EXCFREE」は、第2ゼロフラグが0でなければ、EXCFREEに移動することを示す。図17(b)の4行目の「LDQ HL,(LOW _SMC_PHS+2)」は、3リール目のモータフェーズのアドレス(_SMC_PHS+2)と、4リール目のモータフェーズのアドレス(_SMC_PHS+3)の内容をHLレジスタに設定することを示す。ここでは、2、3行目のコマンドで、1リール目のモータフェーズと2リール目のモータフェーズとの両者を対象として0であるか否か判定し、4、5行目のコマンドで、3リール目のモータフェーズと4リール目のモータフェーズとの両者を対象として0であるか否か判定している。図14(b)と比較し、命令コードの行数は追加されているが、図14(b)の2行目の「JTQ NZ,(LOW _SMC_PHS),EXCFREE」のコマンド長が4バイトであるのに対し、図17(b)の2行目の「LDQ HL,(LOW _SMC_PHS)」のコマンド長が2バイト、3行目の「JR NTZ,EXCFREE」のコマンド長が2バイトなので、結果的にコマンド長が変わらない。また、図17(b)の4行目の「LDQ HL,(LOW _SMC_PHS+2)」への記述変更はコマンド長に影響を及ぼさない(コマンド長は変わらない)。したがって、プログラムのコマンド長の合計が9バイトとなり、リール数が3つの場合と等しい。したがって、プログラムのコマンド長の合計は、図16のように、リール134a、134b、134c、134d等、デバイス単位で纏めて変数を配置する場合と、図17のように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している場合とで差がさらに広がる。つまり、プログラムのコマンド長の合計は、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置している場合の方がより短縮されていることが理解できる。
このように、デバイス属性単位で複数のデバイスの変数を纏めて配置することで、1のデバイス属性に関する各デバイスの変数を参照する場合に、コマンド長の短い命令コマンドを利用でき、結果的に、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
また、ここでは、異なるデバイス属性同士において、対応するデバイスの順が等しくなるように変数を配置している。例えば、図17(a)に示すように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といった全ての区分において、4つのリール134a、134b、134c、134dに対応する変数が、同一の順(上からリール134a、134b、134c、134d)に並べられている。
かかる構成により、各デバイス属性単位でリールに対応する変数を参照する際に、図13(b)や図17(b)のような画一的なプログラムによって規則的に(順番に連続させて)変数を参照することができるので、遊技制御処理を行うための制御領域の容量を確保することが可能となる。また、かかる構成によると、変数を目視した場合であっても、図12(b)や図17(a)のように、リール134a、134b、134c、134dの順に規則的に(連続した並びで)確認することができるので、設計負荷を軽減することが可能となる。
(デバイス基準)
なお、上記では、リール134a、134b、134c、134d等、デバイス単位で纏めて変数を配置する場合より、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置した方が、プログラムのコマンド長の合計を短縮できる例を挙げて説明した。しかし、プログラムによっては、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置する場合より、リール134a、134b、134c、134d等、デバイス単位で纏めて変数を配置した方が、プログラムのコマンド長の合計を短縮できる場合もある。以下、具体的な例を示す。
図18は、リール制御手段306の処理を説明するためのフローチャートである。ここでは、図15で示したようなリール数が4つのスロットマシン100を挙げ、メインルーチンから呼び出された図18に示すサブルーチンにおいて、リール134a、134b、134c、134dの定常回転中処理を構成する複数の処理のうち、特に、図柄情報更新に関する処理を実行する例を挙げて説明する。
図18に示すサブルーチンにおいて、定常回転中処理を構成する複数の処理のうちの図柄情報更新に関する処理に至ると、リール制御手段306は、ステップカウンタ値を取得し(S250)、ステップカウンタ値を更新する。具体的に、リール制御手段306は、ステップカウンタ値を1だけデクリメントし(S252)、ステップカウンタ値が単位図柄の範囲(例えば26)を超えたか否か判定する(S254)。その結果、ステップカウンタ値が単位図柄の範囲を超えていなければ(S254におけるNO)、リール制御手段306は、そのデクリメントされた値でステップカウンタ値を更新して(S256)、定常回転中処理を構成する他の処理が実行された後、当該サブルーチンを終了する。一方、ステップカウンタ値が単位図柄の範囲を超えていれば(S254におけるYES)、リール制御手段306は、ステップカウンタ値に初期値として所定のステップ数(例えば26)を設定し(S258)、現在出現図柄番号を取得し(S260)、現在出現図柄番号を1だけデクリメントして(S262)、現在出現図柄番号がリールの範囲(例えば20)を超えたか否か判定する(S264)。その結果、ステップ数がリールの範囲を超えていれば(S264におけるYES)、リール制御手段306は、現在出現図柄番号に初期値として所定の図柄数(例えば20)を設定する(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とすることが可能となる。
図19は、図18のフローチャートを実現するためのプログラムを説明するための説明図である。図19の1行目の「SMCPROC」は、当該サブルーチンの先頭アドレスを示す。2行目の「LD A,(IY+_STE_CNT−_SMC_PHS)」は、IYレジスタの値(変数の先頭アドレス)に、ステップカウンタ値のアドレス(_STE_CNT)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば4)を足したアドレス、すなわち、ステップカウンタ値のアドレスが示す内容を、Aレジスタに設定することを示す。かかる2行目のコマンドが、図18のステップS250に対応する。
図19の3行目の「DCPLD A,26−1」は、NC80EX独自で利用されるコマンドであり、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行目のコマンドが、図18のステップS252、S254、S258に対応する。
図19の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」は、IYレジスタの値(変数の先頭アドレス)に、現在出現図柄番号のアドレス(_FIG_NUM)からモータフェーズのアドレス(_SMC_PHS)を減算したオフセット値(例えば8)を足したアドレス、すなわち、現在出現図柄番号のアドレスが示す内容を、Aレジスタに設定することを示す。ここで、図19の6行目で用いられている所定のアドレスに格納された変数をメインCPU200aの所定のレジスタに読み出すコマンドである「LD A,(qq+v)」は、単なる「LD」と異なり、NC80EXにおいて改良されたコマンドであり、vが8ビットで表される数値のうち0〜7以外の数値(−128〜−1もしくは8〜127のいずれか)であれば、当該「LD A,(qq+v)」は、「LD A,(qq+d)」として扱われ、コマンド自体の長さ(コマンド長)は3バイトとなるものの、0〜7のいずれかであれば、当該「LD A,(qq+v)」のコマンド長を2バイトに短縮できる。なお、qqは、IXレジスタもしくはIYレジスタが用いられる。このようなコマンドは、主として、BCレジスタ、DEレジスタ、および、HLレジスタを利用することができない場合に利用されることが多い。かかる6行目のコマンドが、図18のステップS260に対応する。
図19の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)を足したアドレス、すなわち、現在出現図柄番号のアドレスに設定することを示す。ここで、図19の8行目で用いられている所定のアドレスに格納された変数をメインCPU200aの所定のレジスタの値で更新するコマンドである「LD (qq+v)、A」は、単なる「LD」と異なり、NC80EXにおいて改良されたコマンドであり、vが0〜7以外の数値であれば、当該「LD (qq+v)A,」は、「LD (qq+d),A」として扱われ、コマンド自体の長さ(コマンド長)は3バイトとなるものの、0〜7のいずれかであれば、当該「LD (qq+v)、A」のコマンド長を2バイトに短縮できる。かかる7、8行目のコマンドが、図18のステップS262、S264、S266、S268に対応する。
図19の9行目の「DIV D,A,5」は、Aアドレスの値(現在出現図柄番号)を5で除算した余り(剰余)をDレジスタに設定することを示す。かかる9行目のコマンドが、図18のステップS270に対応する。10行目の「JBIT Z,0,D,SMC_ROT07」は、NC80EX独自で利用されるコマンドであり、Dレジスタのビット0が0であれば、「SMC_ROT07」に移動することを示す。かかる10行目のコマンドが、図18のステップS272に対応する。11行目の「LD E,24−1」は、Eレジスタに、26とは異なる所定のステップ数(ここでは24)を設定することを示す。かかる11行目のコマンドが、図18のステップ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行目のコマンドが、図18のステップS256に対応する。
かかる図19のプログラムに対し、図17(a)のように、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置し、リール毎に、例えば、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新し、それを4リール分繰り返す場合、以下のように変数を指定する。すなわち、図19の6行目の「LD A,(IY+_FIG_NUM−_SMC_PHS)」において、現在出現図柄番号とモータフェーズとの差分をIYに加算することで現在出現図柄番号をAレジスタに設定し、図19の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バイトとなる。ここで、図19の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バイトとなってしまう。
一方、かかる図19のプログラムに対し、図16(a)のように、リール134a、134b、134c、134d等、デバイス単位で纏めて変数を配置し、リール毎に、例えば、ステッピングモータ262のステップ数を1だけ進めて、リール134a、134b、134c、134dの状態を更新し、それを4リール分繰り返す場合、以下のように変数を指定する。例えば、図19の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バイトに短縮することが可能となる。これは、図19のプログラムが、IYレジスタの値に所定のオフセット値を加えたアドレスに格納された変数をAレジスタに読み出すコマンド、もしくは、IYレジスタの値に所定のオフセット値を加えたアドレスに格納された変数をAレジスタの値に更新するコマンドを、IYレジスタの値を変更することなくオフセット値を0〜7の範囲でのみ変更して実行する所定の処理を、IYレジスタの値をオフセットさせながら繰り返し実行しているからであり、これにより、コマンド長を短縮することができる。こうして、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
(デバイス属性基準およびデバイス基準の混在)
また、上記では、モータフェーズ、ステップカウンタ値、現在出現図柄番号といったデバイス属性単位で纏めて変数を配置する場合と、リール134a、134b、134c、134d等、デバイス単位で纏めて変数を配置する場合とで、いずれの場合でも、プログラムによっては、そのコマンド長の合計を短縮可能であることを説明した。しかし、単に、いずれか一方を基準とする場合に比べ、両者を混在させること、すなわち、変数の種類に基づいて、デバイス属性単位で纏めたり、デバイス単位で纏めて、変数を使い分けることで、プログラムのコマンド長の合計をより短縮することが可能となる。以下、具体的な例を示す。
図20〜26は、リール制御手段306の処理全体を実現するためのプログラムを説明するための説明図である。なお、図21〜23は、デバイス属性単位で纏めて変数を配置した場合を示し、図24〜26は、デバイス属性単位で纏めて変数を配置した場合と、デバイス単位で纏めて変数を配置した場合とを混在させている。
ここでは、例えば、図20のように、デバイス属性(例えば、モータフェーズ)単位で複数のデバイスの変数が纏めて配置されており、それと並行して、デバイス(例えばモータ)単位で複数種類のデバイス属性(例えば、ステップカウンタ値、現在出現図柄番号)の変数が纏めて配置されている。
ここでは、リール制御手段306の処理として、「制御回胴データ設定処理」、「タイマ割り込み」、「ステッピングモータ制御処理」、「加速処理」、「定常回転中処理」、「停止励磁処理」、「回転エラー処理」、「励磁パターン更新前処理」、「励磁パターン更新処理」、「励磁開放待ち処理」、「停止制御回動設定処理」、「押下基準位置取得処理」、「回胴停止処理」の順で処理が遂行される。このうち「励磁開放待ち処理」が図13(b)、図14(b)のプログラムに相当し、「定常回転中処理」の「図柄情報更新」が、図19のプログラムに相当する。なお、ここに挙げた他の処理の内容は本実施形態と直接には関係ないので、その詳細な説明を割愛し、上記のように変数の配置を変えたことによる効果のみを説明する。
図21〜23のように、デバイス属性単位で纏めて変数を配置した場合に対し、図24〜26に示すように、一部、デバイス属性単位で、複数のデバイスの変数を纏めて配置し、他は、デバイス単位で、複数種類のデバイス属性の変数を纏めて配置することで、プログラム全体では、コマンド長を例えば4バイト削減することができる。ここでは、4リールを対象とした場合にコマンド長を削減する例を挙げて説明したが、リール数に拘わらず、例えば、3リールであっても、コマンド長を削減することができる。こうして、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことはいうまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
また、上述した実施形態では、主制御基板200と副制御基板202とが、遊技を進行するための機能部を分担するように配したが、主制御基板200の機能部を副制御基板202に配しても、副制御基板202の機能部を主制御基板200に配してもよく、また、全ての機能部を1の制御基板に纏めて配することもできる。
また、上述した実施形態においては、遊技利益としてボーナス遊技を挙げて説明したが、かかる場合に限らず、上述したAT演出状態や、リプレイ役の当選確率が通常遊技より高くなるように設定してメダルの消費を抑えることで、メダルの消費に対する当選役の抽選機会を増やす、RT(リプレイタイム)遊技や、上記のATとRT遊技が同時に進行されるART遊技を設けてもよい。
また、上述した主制御基板200および副制御基板202が行う各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。