(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-08
(45)【発行日】2022-11-16
(54)【発明の名称】遊技機
(51)【国際特許分類】
A63F 5/04 20060101AFI20221109BHJP
【FI】
A63F5/04 611B
(21)【出願番号】P 2020081731
(22)【出願日】2020-05-07
【審査請求日】2021-07-06
(73)【特許権者】
【識別番号】390031772
【氏名又は名称】株式会社オリンピア
(74)【代理人】
【識別番号】110000936
【氏名又は名称】弁理士法人青海国際特許事務所
(72)【発明者】
【氏名】立石 卓也
(72)【発明者】
【氏名】片山 慎
【審査官】安藤 達哉
(56)【参考文献】
【文献】特開2017-131471(JP,A)
【文献】特開2013-102866(JP,A)
【文献】特開2005-237866(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 5/04
A63F 7/02
(57)【特許請求の範囲】
【請求項1】
遊技の進行に用いられる所定の基板において、CPUと、前記CPUに用いられるプログラムが格納されたROMと、前記プログラムにより更新される変数を保持するRAMと、を備える遊技機であって、
前記CPUは、
前記ROMから前記プログラムを読み出し、
前記プログラムに基づいて、
第1モジュール
を呼び出し、
前記第1モジュールにおいて、前記第1モジュールを呼び出したプログラムの戻りアドレスに基づいて特定アドレスを抽出し、
前記特定アドレスが境界アドレス以上であれば、前記特定アドレスによって特定される値に基づいた処理を実行する第2モジュールを実行し、
前記特定アドレスが境界アドレス未満であれば、前記特定アドレスによって特定される値に基づいた処理を実行する、前記第2モジュールとは異なる第3モジュールを実行する遊技機。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、遊技者に遊技上の利益を付与するか否かを抽選により決定する遊技機に関する。
【背景技術】
【0002】
遊技機としてのスロットマシンでは、遊技者によるメダル(遊技媒体)のベットおよびスタートスイッチの操作に応じて、当選役の抽選を行うとともに、種々の図柄が記された複数のリールが回転する。そして、抽選結果と遊技者によるストップスイッチの操作に応じてリールが順次停止され、払い出しの対象となるライン上である有効ライン上に、当選役に対応する図柄組み合わせが表示されると、所定枚数のメダルが払い出されるなど、遊技上の利益(以下、単に遊技利益という)が遊技者に付与されることとなる。
【0003】
このような遊技機では、遊技性を高めるため、メモリにおける有限な記憶領域を有効利用することが望まれる。例えば、データセットテーブルの制御情報に管理値を対応付け、メモリを効果的に使用する技術が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
遊技機では、遊技の進行を制御する遊技制御処理に係るプログラムを、主制御基板のROMにおける使用領域(制御領域4.5kbyte+データ領域3.0kbyte)に配置しなければならない。しかし、遊技利益が大きい当選役(選択当選役)を含む当選種別に当選したときに、その選択当選役の入賞条件となるストップスイッチの操作態様が報知されることで、当該選択当選役に対応する図柄組み合わせを、遊技者が有効ライン上に容易に表示させることができる、所謂、AT(アシストタイム)が実行されるAT演出状態を主制御基板において管理する場合や、リールユニットを多彩な態様で回転させる所謂リール演出を、主制御基板において管理する場合、その処理により、使用領域の特に制御領域が圧迫されるおそれがある。
【0006】
本発明は、このような課題に鑑み、遊技制御処理を行うための制御領域の容量を確保することが可能な遊技機を提供することを目的としている。
【課題を解決するための手段】
【0007】
上記課題を解決するために、遊技の進行に用いられる所定の基板において、CPUと、前記CPUに用いられるプログラムが格納されたROMと、前記プログラムにより更新される変数を保持するRAMと、を備える本発明の遊技機では、前記CPUは、前記ROMから前記プログラムを読み出し、前記プログラムに基づいて、第1モジュールを呼び出し、前記第1モジュールにおいて、前記第1モジュールを呼び出したプログラムの戻りアドレスに基づいて特定アドレスを抽出し、前記特定アドレスが境界アドレス以上であれば、前記特定アドレスによって特定される値に基づいた処理を実行する第2モジュールを実行し、前記特定アドレスが境界アドレス未満であれば、前記特定アドレスよって特定される値に基づいた処理を実行する、前記第2モジュールとは異なる第3モジュールを実行する。
【発明の効果】
【0009】
本発明によれば、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
【図面の簡単な説明】
【0010】
【
図1】スロットマシンの概略的な機械的構成を説明するための外観図である。
【
図2】スロットマシンの概略的な機械的構成を説明するための前面扉を開いた状態での外観図である。
【
図3】リールの図柄配列および有効ラインを説明する図である。
【
図4】スロットマシンの概略的な電気的構成を示したブロック図である。
【
図8】遊技状態の遷移を説明するための説明図である。
【
図9】演出状態の遷移を説明するための説明図である。
【
図10】通常演出状態の内部状態を説明する図である。
【
図11】状態アップ抽選テーブルを説明する図である。
【
図13】通常演出状態のモードを説明する図である。
【
図15】設定変更時のメダルの増減の概要を説明する図である。
【
図16】継続抽選テーブルおよび有利継続抽選テーブルを説明する図である。
【
図18】リール演出抽選テーブルを説明する図である。
【
図19】主制御基板におけるCPU初期化処理を説明するフローチャートである。
【
図20】主制御基板におけるコールドスタート処理を説明するフローチャートである。
【
図21】主制御基板におけるエラー停止処理を説明するフローチャートである。
【
図22】主制御基板における設定値切り替え処理を説明するフローチャートである。
【
図23】主制御基板における初期化スタート処理を説明するフローチャートである。
【
図24】主制御基板における状態復帰処理を説明するフローチャートである。
【
図25】主制御基板における遊技開始処理を説明するフローチャートである。
【
図26】主制御基板における遊技メダル投入処理を説明するフローチャートである。
【
図27】主制御基板における内部抽選処理を説明するフローチャートである。
【
図28】主制御基板における図柄コード設定処理を説明するフローチャートである。
【
図29】主制御基板200における実行フラグ設定処理を説明するフローチャートである。
【
図30】状態別モジュール実行処理で実行される非有利区間処理を説明するフローチャートである。
【
図31】状態別モジュール実行処理で実行される通常演出状態処理を説明するフローチャートである。
【
図32】状態別モジュール実行処理で実行されるCZ演出状態処理を説明するフローチャートである。
【
図33】状態別モジュール実行処理で実行される非有利待機演出状態処理を説明するフローチャートである。
【
図34】状態別モジュール実行処理で実行される有利待機演出状態処理を説明するフローチャートである。
【
図35】主制御基板における回胴回転中処理を説明するフローチャートである。
【
図36】主制御基板における回胴停止処理を説明するフローチャートである。
【
図37】主制御基板における表示判定処理を説明するフローチャートである。
【
図38】主制御基板における払出処理を説明するフローチャートである。
【
図39】主制御基板における遊技移行処理を説明するフローチャートである。
【
図40】状態別モジュール実行処理で実行される通常AT演出状態処理を説明するフローチャートである。
【
図41】主制御基板における電源断時退避処理を説明するフローチャートである。
【
図42】主制御基板におけるタイマ割込み処理を説明するフローチャートである。
【
図43】メインCPU周辺の電気的な接続を説明するための図である。
【
図44】CPUコアの内部構成を示したブロック図である。
【
図47】COM_PREモジュール、RAD_CHKモジュール、COM_CHKモジュール、COM_LOTモジュールの具体的な処理を示したフローチャートである。
【
図48】COM_PREモジュール、RAD_CHKモジュール、COM_CHKモジュール、COM_LOTモジュールを実現するためのコマンドの一例を説明するための説明図である。
【
図49】コマンド「CP (HL),DE」の処理を説明するための説明図である。
【
図50】COM_PRE2モジュール、RAD_CHK2モジュール、COM_CHKモジュール、TABLSETモジュールの具体的な処理を示したフローチャートである。
【
図51】COM_PRE2モジュール、RAD_CHK2モジュール、COM_CHKモジュール、TABLSETモジュールを実現するためのコマンドの一例を説明するための説明図である。
【
図52】COM_PREモジュール、RAD_CHKモジュール、COM_LOTモジュール、TABLSETモジュールの他の処理を示したフローチャートである。
【
図53】COM_PREモジュール、RAD_CHKモジュール、COM_LOTモジュール、TABLSETモジュールを実現するためのコマンドの一例を説明するための説明図である。
【
図54】メモリにおける変数の配置を説明するための説明図である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【0012】
(スロットマシン100の機械的構成)
図1および
図2の外観図に示すように、遊技機としてのスロットマシン100は、前面が開口した筐体102と、筐体102の前面一端に回動可能に上下に並んで配置される前面上扉104および前面下扉106とが設けられている。前面上扉104の下部略中央には、ガラス板や透明樹脂板等で構成された無色透明の図柄表示窓108が設けられており、筐体102内の図柄表示窓108に対応する位置には、3つのリール110(左リール110a、中リール110b、右リール110c)が、それぞれ独立して回動可能に設けられている。左リール110a、中リール110b、右リール110cの外周面には、
図3(a)の図柄配列に示すように、20に等分された各領域に複数種類の図柄がそれぞれ配列されており、遊技者は、図柄表示窓108を通じて、上段、中段、下段に位置する、左リール110a、中リール110b、右リール110cそれぞれの3つの連続する合計9個の図柄を視認することができる。
【0013】
前面下扉106の上部には操作部設置台112が形成され、操作部設置台112には、メダル投入部114、ベットスイッチ116、スタートスイッチ118、ストップスイッチ120、演出スイッチ122等が設けられている。メダル投入部114は、メダル投入口114aを通じて遊技価値としてのメダルの投入を受け付ける。ベットスイッチ116は、スロットマシン100の内部に電気的に貯留(以下、単にクレジットという)されているメダルのうち、1遊技で必要とされる規定数のメダルを投入(ベット)する。
【0014】
スタートスイッチ118は、例えば傾倒操作を検出可能なレバーで構成され、遊技者による遊技の開始操作を検出する。ストップスイッチ120(ストップスイッチ120a、ストップスイッチ120b、ストップスイッチ120c)は、左リール110a、中リール110b、右リール110cそれぞれに対応して設けられており、遊技者の停止操作を検出する。なお、ストップスイッチ120の停止操作が可能な状態で、遊技者が、ストップスイッチ120a、ストップスイッチ120b、ストップスイッチ120cのいずれかを最初に停止操作することを第1停止といい、第1停止の後、停止操作されていない2つのストップスイッチ120のいずれかを停止操作することを第2停止といい、第2停止の後、最後に残ったストップスイッチ120を停止操作することを第3停止という。演出スイッチ122は、例えば、押圧スイッチと、その周囲に回転自在に配されたジョグダイヤルスイッチとから構成され、遊技者の押圧操作や回転操作を検出する。
【0015】
前面上扉104の上部略中央には、演出に伴う様々な画像を表示する液晶表示部124が設けられている。また、前面上扉104の上部や左右には、例えば高輝度の発光ダイオード(LED)によって構成される演出用ランプ126が設けられる。また、前面上扉104の裏面における液晶表示部124の左右位置や前面下扉106の裏面における左右位置には、効果音や楽音等による聴覚的な演出を行うスピーカ128が設けられている。
【0016】
操作部設置台112には、メインクレジット表示部130およびメイン払出表示部132が設けられている。また、図柄表示窓108と操作部設置台112との間には、サブクレジット表示部134およびサブ払出表示部136が設けられている。これらメインクレジット表示部130およびサブクレジット表示部134にはクレジットされているメダルの枚数(クレジット枚数)が表示され、メイン払出表示部132およびサブ払出表示部136にはメダルの払出枚数が表示される。
【0017】
筐体102内におけるリール110の下方には、メダル排出口140aからメダルを払い出すためのメダル払出装置(メダルホッパー)142が設けられている。また、前面下扉106の前面下部には、メダル排出口140aから払い出されたメダルを貯留するための受け皿部140が設けられている。また、筐体102内には、電源スイッチ144が設けられている。電源スイッチ144は、スロットマシン100を管理する管理者が操作し、電源の切断状態と電源の投入状態の2つの状態を切り換えるために用いられる。
【0018】
また、筐体102内には、後述する主制御基板200に、図示しない設定キーおよび設定変更スイッチ(これらを合わせて設定値設定手段という)が設けられている。スロットマシン100では、設定キーに所定の鍵(操作キー)が挿入されてOFFの位置からONの位置へ回転された状態で電源スイッチ144を介して電源が投入されると設定変更モードに移行し、設定値の変更(単に設定変更ともいう)が可能な状態となる。設定値は、遊技者の有利度合(機械割)を段階的に示したものであり、例えば、1~6の6段階で表され、一般に、設定値の数値が大きいほど遊技全体として有利度合が高い(期待獲得枚数が高い)ように設定されている。そして、設定変更が可能な状態において設定変更スイッチが押下される度に設定値が1ずつ加算され、例えば、6段階の設定値のうちのいずれかの設定値に変更され、スタートスイッチ118が操作されると、設定値が確定し、設定キーを元の位置(OFFの位置)に戻すことで設定変更モードが終了して遊技が可能となる。なお、設定変更は、電源スイッチ144が操作されて電源の投入状態となってから一定期間のみ可能となっている。
【0019】
スロットマシン100では、遊技が開始可能となり、規定数のメダルがベットされると、有効ラインAが有効化するとともに、スタートスイッチ118に対する操作が有効となる。ここで、ベットは、ベットスイッチ116の操作を通じてクレジットされているメダルを投入する場合と、メダル投入部114を通じてメダルを投入する場合と、詳しくは後述するリプレイ役が有効ラインA上に表示されたことに基づいてメダルを自動投入する場合のいずれも含む。また、有効ラインAは、当選役の入賞を判定するためのラインであり、本実施形態では1本である。有効ラインAは、
図3(b)に示すように、図柄表示窓108に臨む9つの図柄(3リール×上中下の3段)のうち、左リール110aの上段、中リール110bの中段、右リール110cの下段に停止する図柄に対応する位置を結んだラインに設定されている。無効ラインは、有効ラインA上に表示された図柄組み合わせのみでは当選役を把握しにくい場合に、当選役の把握を容易にする他の図柄組み合わせを表示する、当選役の入賞判定には用いられない有効ラインA以外のラインであり、本実施形態では、
図3(b)に示す4つの無効ラインB1、B2、B3、Cを想定している。
【0020】
そして、遊技者によりスタートスイッチ118が操作されると、遊技が開始され、左リール110a、中リール110b、右リール110cが回転されるとともに、当選種別抽選等が実行される。その後、ストップスイッチ120a、120b、120cの操作に応じて、対応する左リール110a、中リール110b、右リール110cをそれぞれ停止させる。そして、当選種別抽選の抽選結果および有効ラインAに表示された図柄の組み合わせによって、メダルの払い出しを受け得る当選役が入賞した場合にはメダルの払い出しが実行され、メダルの払い出しを受け得る当選種別に不当選であった場合または当選したが入賞しなかった場合には左リール110a、中リール110b、右リール110cが全て停止したことをもって、遊技が終了する。
【0021】
なお、本実施形態において、上記1遊技は、メダル投入部114を通じたメダルの投入、ベットスイッチ116の操作を通じたクレジットされているメダルの投入、または、リプレイ役が有効ラインA上に表示されたことに基づくメダルの自動投入のいずれかが行われてから、遊技者によるスタートスイッチ118の操作に応じて、左リール110a、中リール110b、右リール110cが回転制御されるとともに当選種別抽選が実行され、当選種別抽選の抽選結果および遊技者による複数のストップスイッチ120a、120b、120cの操作に応じて、操作されたストップスイッチ120a、120b、120cに対応する左リール110a、中リール110b、右リール110cがそれぞれ停止制御され、メダルの払い出しを受け得る当選役が入賞した場合、そのメダルの払い出しが実行されるまでの遊技をいう。また、メダルの払い出しを受け得る当選種別に不当選であった場合または当選したが入賞しなかった場合、左リール110a、中リール110b、右リール110cが全て停止したことをもって1遊技が終了する。ただし、1遊技の開始を、上記のメダルの投入、または、リプレイ役の当選の代わりに、遊技者によるスタートスイッチ118の操作と読み替えてもよい。また、かかる1遊技が繰り返される数を遊技数とする。
【0022】
図4は、スロットマシン100の概略的な電気的構成を示したブロック図である。
図4に示すように、スロットマシン100は、遊技の進行を制御する主制御基板200(主制御部)と、遊技の進行に応じた演出を制御する副制御基板202(副制御部)とを含む制御基板が設けられている。また、主制御基板200と副制御基板202との間の電気的な信号の伝達は、不正防止等の観点から、主制御基板200から副制御基板202への一方向のみに制限される。
【0023】
(主制御基板200)
主制御基板200は、中央処理装置であるメインCPU200a、プログラム等が格納されたメインROM200b、ワークエリアとして機能するメインRAM200c等を含む半導体集積回路を有し、スロットマシン100全体を統括的に制御する。なお、メインRAM200cは、電源が切断された場合においても、設定変更が行われてRAMクリアが実行されない限り、データが消去されることなく保持される。
【0024】
また、主制御基板200は、メインCPU200aが、メインROM200bに格納されたプログラムに基づきメインRAM200cと協働することで機能する、初期化手段300、ベット手段302、当選種別抽選手段(抽選手段)304、リール制御手段306、判定手段308、払出制御手段310、遊技状態制御手段312、演出状態制御手段(状態制御手段、区間制御手段)314、コマンド送信手段316等の機能部を有する。
【0025】
主制御基板200では、メダル投入口114aへのメダルの投入を検出する投入メダル検出部414b、ベットスイッチ116、スタートスイッチ118およびストップスイッチ120a、120b、120cから各種の検出信号を受信しており、受信した検出信号に基づいて、メインCPU200aが種々の処理を実行する。
【0026】
初期化手段300は、主制御基板200における初期化処理を実行する。ベット手段302は、遊技に使用するためのメダルをベットする。当選種別抽選手段304は、スタートスイッチ118の操作に基づき、詳しくは後述するように、当選役の当否、より詳しくは、当選役が含まれる当選種別の当否を決定する当選種別抽選を行う。
【0027】
リール制御手段306は、スタートスイッチ118の操作に応じて、左リール110a、中リール110b、右リール110cを回転制御し、回転している左リール110a、中リール110b、右リール110cにそれぞれ対応したストップスイッチ120a、120b、120cの操作に応じて、対応する左リール110a、中リール110b、右リール110cを停止制御する。また、リール制御手段306は、スタートスイッチ118の操作に応じて、前回の遊技においてストップスイッチ120a、120b、120cの操作を有効化してから、当選種別抽選の抽選結果を表示するために遊技者によるストップスイッチ120a、120b、120cの操作を有効化するまで(前回の遊技におけるストップスイッチ120a、120b、120cの操作完了により無効化されている)の時間を規定の時間より延長し、その間、リール110a、110b、110cを多彩な態様で回転させるリール演出(フリーズ演出)を行う場合がある。リール演出は、本来有効となるべき任意のスイッチを所定時間有効にしなかったり、本来実行されるべき処理を所定時間保留したり、本来送受信されるべき任意のスイッチの信号を所定時間送信または受信させなかったりすることで実現できる。
【0028】
また、主制御基板200には、リール駆動制御部150が接続されている。このリール駆動制御部150は、スタートスイッチ118の操作信号に応じ、リール制御手段306から送信される、左リール110a、中リール110b、右リール110cの回転開始信号に基づいて、ステッピングモータ152を駆動する。また、リール駆動制御部150は、ストップスイッチ120の操作信号に応じ、リール制御手段306から送信される、左リール110a、中リール110b、右リール110cそれぞれの停止信号および回転位置検出回路154の検出信号に基づいて、ステッピングモータ152の駆動を停止する。
【0029】
判定手段308は、当選役に対応する図柄組み合わせが有効ラインA上に表示されたか否か判定する。ここで、当選役に対応する図柄組み合わせが有効ラインA上に表示されることを単に入賞という場合がある。払出制御手段310は、当選役に対応する図柄組み合わせが有効ラインA上に表示されたこと(入賞したこと)に基づいて、当該当選役に対応する数(価値量)だけメダルを払い出す。また、主制御基板200には、メダル払出装置142が接続されており、払出制御手段310は、メダルの払出枚数を計数しながらメダルを排出する。
【0030】
遊技状態制御手段312は、当選種別抽選の結果や判定手段308の判定結果を参照し、複数種類の遊技状態のいずれかに遊技状態を移行させる。また、演出状態制御手段314は、当選種別抽選の結果、判定手段308の判定結果、遊技状態の遷移情報を参照し、複数種類の演出状態のいずれかに演出状態を移行させる。
【0031】
コマンド送信手段316は、ベット手段302、当選種別抽選手段304、リール制御手段306、判定手段308、払出制御手段310、遊技状態制御手段312、演出状態制御手段314等の動作に伴う、遊技に関するコマンドを順次決定し、決定したコマンドを副制御基板202に順次送信する。
【0032】
また、主制御基板200には、乱数発生器(乱数生成手段)200dが設けられる。乱数発生器200dは、計数値を順次インクリメントし、所定の数値範囲内でループさせ、所定の時点における計数値を抽出することで乱数を得る。主制御基板200の乱数発生器200dによって生成される乱数(以下、当選種別抽選乱数という)は、遊技者に付与する遊技利益、例えば、当選種別抽選手段304が当選種別を決定するために用いられる。
【0033】
(副制御基板202)
また、副制御基板202は、主制御基板200と同様に、中央処理装置であるサブCPU302a、プログラム等が格納されたサブROM302b、ワークエリアとして機能するサブRAM302c等を含む各種半導体集積回路を有し、主制御基板200からのコマンドに基づき、特に演出を制御する。また、サブRAM302cにもメインRAM200c同様、不図示のバックアップ電源が接続されており、電源が切断された場合においても、データが消去されることなく保持される。なお、副制御基板202にも、主制御基板200同様、乱数発生器(乱数生成手段)302dが設けられており、乱数発生器302dによって生成される乱数(以下、演出抽選乱数という)は、主に演出の態様を決定するために用いられる。
【0034】
また、副制御基板202では、サブCPU302aが、サブROM302bに格納されたプログラムに基づき、サブRAM302cと協働することで機能する、初期化決定手段330、コマンド受信手段332、演出制御手段334等の機能部を有する。
【0035】
初期化決定手段330は、副制御基板202における初期化処理を実行する。コマンド受信手段332は、主制御基板200等、他の制御基板からのコマンドを受信し、コマンドに対する処理を行う。演出制御手段334は、演出スイッチ122から検出信号を受信するとともに、受信されたコマンドに基づいて液晶表示部124、スピーカ128、演出用ランプ126の各デバイスで行われる遊技の演出を決定する。具体的に、演出制御手段334は、液晶表示部124に表示される画像データや、演出用ランプ126、サブクレジット表示部134、サブ払出表示部136等の電飾機器を通じた演出のための電飾データを決定するとともに、スピーカ128から出力すべき音声を構成する音声データを決定する。そして、演出制御手段334は、決定した遊技の演出を実行する。なお、演出には、補助演出も含まれる。補助演出は、当選種別抽選において、正解役(特定の役)と不正解役とが重複した選択当選種別に当選したときに、その正解役の入賞条件となるストップスイッチ120a、120b、120cの正解操作態様を報知する演出である。かかる補助演出により、遊技者は、正解役に対応する図柄組み合わせを、遊技者が有効ラインA上に容易に表示させることができる。かかる補助演出を実行する演出状態をAT(アシストタイム)演出状態という。また、AT演出状態とリプレイ役の当選確率が高いRT(リプレイタイム)遊技状態が並行して進行される所謂ART遊技状態を用いることもある。
【0036】
なお、以下では、液晶表示部124、演出用ランプ126、スピーカ128、サブクレジット表示部134、サブ払出表示部136といった、副制御基板202を含む、主制御基板200以外の基板で管理される報知手段を他報知手段という場合がある。これに対し、メインクレジット表示部130、メイン払出表示部132といった、主制御基板200で管理される報知手段を主報知手段(指示モニタ)という場合がある。また、補助演出を実行可能な主報知手段および他報知手段を合わせて補助演出実行手段という場合もある。演出状態制御手段314は、AT演出状態において、補助演出を補助演出実行手段に実行させる。
【0037】
(主制御基板200で用いられるテーブル)
図5は、当選役を説明するための説明図であり、
図6および
図7は、当選種別抽選テーブルを説明するための説明図である。
【0038】
スロットマシン100においては、詳しくは後述するように、複数種類の遊技状態および演出状態が設けられており、遊技の進行に応じて遊技状態および演出状態が移行される。そして、主制御基板200では、遊技状態制御手段312により管理、制御される遊技状態に対応する複数の当選種別抽選テーブル等がメインROM200bに格納されている。当選種別抽選手段304は、メインRAM200cに記憶された現在の設定値(遊技利益を得る容易性を段階的に示したもの)と現在の遊技状態に応じて、対応する当選種別抽選テーブルをメインROM200bから抽出し、抽出した当選種別抽選テーブルに基づき、スタートスイッチ118の操作信号に応じて取得された当選種別抽選乱数が当選種別抽選テーブル内のいずれの当選種別に対応するか判定する。
【0039】
ここで、当選種別抽選テーブルで抽出される当選種別を構成する当選役には、リプレイ役、小役、ボーナス役が含まれる。リプレイ役は、リプレイ役に対応する図柄組み合わせが有効ラインA上に表示されると、遊技者によるメダルの新たなるベットを行わずして再度遊技を実行できる役である。小役は、その小役に対応する図柄組み合わせが有効ラインA上に表示されることにより、図柄組み合わせに応じて所定枚数のメダルの払い出しを受けることができる役である。また、ボーナス役は、そのボーナス役に対応する図柄組み合わせが有効ラインA上に表示されることにより、遊技状態制御手段312により管理される遊技状態をボーナス遊技状態(後述するRBB作動中遊技状態)に移行させることができる役である。
【0040】
本実施形態における当選役は、
図5に示すように、ボーナス役として、当選役「RBB」が設けられている。また、リプレイ役として、当選役「リプレイ1」~「リプレイ7」が設けられている。また、小役として、当選役「小役1」~「小役45」が設けられている。
図5では、左リール110a、中リール110b、右リール110cそれぞれに、各当選役を構成する1または複数の図柄が対応付けられている。なお、以下では、当選役「小役1」~「小役17」を当選役「15枚役」、当選役「小役18」を当選役「14枚役」、当選役「小役19」、「小役20」を当選役「3枚役」、当選役「小役21」~「小役45」を当選役「1枚役」と略す場合がある。
【0041】
ここで、本実施形態においては、遊技者によってストップスイッチ120が操作されたときに、入賞可能な当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、当該図柄が有効ラインA上に停止するように停止制御がなされる。また、ストップスイッチ120が操作されたときに、入賞可能な当選役に対応する図柄組み合わせを構成する図柄が、有効ラインA上にはないが、リール110の回転方向と反対の方向の図柄4コマ分に相当する範囲(引込範囲)内に存在している場合には、リール制御手段306によって、離れている図柄数が滑りコマ数となり、当該当選役に対応する図柄組み合わせを構成する図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。また、入賞可能な当選役に対応する図柄がリール110中に複数あり、いずれもリール110の引込範囲内に存在している場合には、予め定められた優先順位に従っていずれの図柄を有効ラインA上に引き込むか決定され、当該優先された図柄を有効ラインA上に引き込むように滑りコマ数分回転を維持した後に停止するように停止制御がなされる。なお、ストップスイッチ120が押圧操作されたときに、入賞可能な当選役以外の当選役に対応する図柄組み合わせを構成する図柄が有効ラインA上にある場合には、リール制御手段306によって、その図柄を有効ラインA上に停止させないようにする、所謂蹴飛ばし処理も並行して実行される。また、後述するように、当選種別に含まれる当選役に操作態様(操作順や操作タイミング)が入賞条件として設定されている場合、リール制御手段306は、遊技者の操作態様に応じて当選役に対応する図柄組み合わせを有効ラインA上に表示可能に停止制御する。
【0042】
そして、例えば、当選役「リプレイ1」、当選役「小役17」に対応する図柄組み合わせを構成する図柄は、各リール110において、上記の停止制御によって、必ず有効ラインA上に表示可能なように配列されている。このような当選役をPB=1と表す場合がある。一方、例えば、当選役「リプレイ2」、当選役「小役1」~「小役16」、当選役「RBB」に対応する図柄組み合わせを構成する図柄は、各リール110において、上記の停止制御によって、必ずしも有効ラインA上に表示可能なように配列されていないので、所謂とりこぼしが発生する場合がある。このような当選役をPB≠1と表す場合がある。
【0043】
図6および
図7に示すように、当選種別抽選テーブルでは、複数の当選領域が区画されており、各遊技状態によって抽選の対象となる当選種別が異なったり、不当選(ハズレ)の有無が異なったりする。
図6および
図7では、各遊技状態(非内部遊技状態(非内部)、RBB内部中遊技状態(RBB内部中)、RBB作動中遊技状態(RBB作動中))毎に割り当てられた当選領域(当選種別)を「◎」や「○」で表しているが、実際には、複数の遊技状態それぞれに対応する当選種別抽選テーブルがメインROM200bに記憶されている。なお、「◎」は有利区間に移行させる抽選を行うことが可能な有利区間抽選可当選種別であることを示し、「○」は有利区間に移行させる抽選を行うことが不可な有利区間抽選不可当選種別であることを示している。
【0044】
当選種別抽選テーブルでは、区画化された各当選領域にはそれぞれ当選範囲を示す数値である所定の置数(当選範囲値)と当選種別が対応付けられており、遊技状態毎に割り当てられた全ての当選領域の置数を合計すると当選種別抽選乱数の総数(65536)となる。したがって、当選種別それぞれが決定される確率は、当選領域に対応付けられた置数を当選種別抽選乱数の総数で除算した値となる。当選種別抽選手段304は、その時点の遊技状態に基づいて、当該当選種別抽選テーブルにおける複数の当選領域のうち番号の高い方から、順次、置数を取得し、その置数を当選種別抽選乱数から減算して、減算後の値が0未満となると、その時点の当選領域に対応付けられた当選種別を当選種別抽選の抽選結果としている。また、当選領域1以上の全ての当選領域の置数を当選種別抽選乱数から減算して、減算後の値が0以上となっていれば、当選領域0の当選種別「ハズレ」が当選種別抽選の抽選結果となる。
【0045】
ここで、当選種別「RBB」を構成する当選役「RBB」について補足する。所定の第1種特別役物RBは、規定数ごとの入賞に係る図柄の組み合わせの数を増加させ、または規定数ごとの入賞に係る条件装置が作動する確率を上昇させる役物で、あらかじめ定められた場合に作動し、12回を超えない回数の遊技の結果が得られるまで作動を継続することができるものをいう。ここで、条件装置は、その作動が入賞、再遊技、役物または役物連続作動装置の作動に係る図柄の組み合わせが表示されるために必要な条件とされている装置で、当選種別抽選(遊技機内で行われる電子計算機によるくじ)に当選した場合に作動するもの、すなわち、当選フラグを意味する。そして、当選種別「RBB」を構成する第1種特別役物に係る役物連続作動装置(当選役「RBB」)は、第1種特別役物RBを連続して作動させることができる装置であり、特定の図柄の組み合わせが表示された場合に作動し、あらかじめ定められた場合に作動を終了するものをいう。
【0046】
図6および
図7の当選種別抽選テーブルによれば、例えば当選領域0には、当選種別「ハズレ」が対応付けられており、かかる当選種別に当選すると、
図5に示したいずれの当選役に対応する図柄組み合わせも有効ラインA上に表示されることはなく、メダルの払い出し等が行われることはない。
【0047】
また、当選領域1には、当選役「小役1」~「小役45」が重複して含まれる(当選する)当選種別「小役ALL」が対応付けられており、当選領域2には、当選役「小役19」、「小役20」が重複して含まれる当選種別「3枚ALL」が対応付けられており、当選領域3には、当選役「小役21」~「小役45」が重複して含まれる当選種別「1枚ALL」が対応付けられている。
【0048】
また、当選領域4~7には、当選役「リプレイ1」~「リプレイ7」が重複して含まれる当選種別「リプレイ1」~「リプレイ4」が対応付けられている。なお、以下では、当選領域4~7の4つの当選種別を単に当選種別「リプレイ」と略す場合がある。
【0049】
また、当選領域8~31には、払出枚数が15枚となる正解役(当選役「小役1」~「小役16」)のいずれかと、払出枚数が1枚の不正解役(当選役「小役21」~「小役40」)のいずれかとが重複して含まれる選択当選種別(当選種別「打順ベルA青1」~「打順ベルA青4」、「打順ベルA赤1」~「打順ベルA赤4」、「打順ベルB青1」~「打順ベルB青4」、「打順ベルB赤1」~「打順ベルB赤4」、「打順ベルA1」~「打順ベルA4」、「打順ベルB1」~「打順ベルB4」)がそれぞれ対応付けられている。なお、以下では、当選領域8~31の24つの当選種別を単に当選種別「打順ベル」と略す場合がある。
【0050】
また、当選領域32~41には、払出枚数が14枚となる当選役「小役18」と、払出枚数が15枚となる当選役「小役17」と、払出枚数が1枚となる当選役「小役21」、「小役22」、「小役27」、「小役28」、「小役35」、「小役36」、「小役43」のいずれかとが重複して含まれる当選種別「打順チャンス1」~「打順チャンス10」がそれぞれ対応付けられている。なお、以下では、当選領域32~41の10の当選種別を単に当選種別「打順チャンス」と略す場合がある。
【0051】
また、当選領域42、43には、払出枚数が3枚となる当選役「小役20」と、払出枚数が1枚となる当選役「小役25」、「小役26」、「小役27」、「小役28」のいずれかとが重複して含まれる当選種別「共通3枚1」、「共通3枚2」がそれぞれ対応付けられている。なお、以下では、当選領域42、43の2つの当選種別を単に当選種別「共通3枚」と略す場合がある。
【0052】
また、当選領域44には、当選役「RBB」と、小役「小役21」、「小役23」、「小役24」、「小役45」とが重複して含まれる当選種別「共通1枚」が対応付けられている。また、当選領域45には、当選役「RBB」と、小役「小役43」とが重複して含まれる当選種別「スイカ」が対応付けられている。また、当選領域46には、当選役「RBB」と、小役「小役44」とが重複して含まれる当選種別「チャンス目A」が対応付けられている。また、当選領域47には、当選役「RBB」と、小役「小役19」とが重複して含まれる当選種別「チャンス目B」が対応付けられている。なお、以下では、当選領域46、47の2つの当選種別を単に当選種別「チャンス目」と略す場合がある。
【0053】
また、当選領域48には、当選役「RBB」と、小役「小役41」とが重複して含まれる当選種別「弱チェリー」が対応付けられている。また、当選領域49には、当選役「RBB」と、小役「小役42」とが重複して含まれる当選種別「強チェリー」が対応付けられている。また、当選領域50には、当選役「RBB」が単独で含まれる当選種別「RBB」が対応付けられている。なお、RBB内部中遊技状態において当選領域44~49に当選した場合には、小役のみが当選することになる。
【0054】
そして、複数の当選役が重複して含まれる当選種別に当選した場合には、いずれの当選役に対応する図柄組み合わせを有効ラインA上に優先的に表示させるかについての入賞条件、例えば、ストップスイッチ120a、120b、120cが操作される順番、および、ストップスイッチ120b、120cの操作タイミング(リール110の操作位置)が設定されている。
【0055】
以下の説明において、左リール110a、中リール110b、右リール110cの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順1」とし、左リール110a、右リール110c、中リール110bの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順2」とし、中リール110b、左リール110a、右リール110cの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順3」とし、中リール110b、右リール110c、左リール110aの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順4」とし、右リール110c、左リール110a、中リール110bの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順5」とし、右リール110c、中リール110b、左リール110aの順にリールを停止させるストップスイッチ120a、120b、120cの操作を「打順6」とする。
【0056】
また、「打順3」において、中リール110bに配列された図柄番号1~10の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120bが操作されることを「打順3青(図中は青)」、中リール110bに配列された図柄番号0、11~19の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120bが操作されることを「打順3赤(図中は赤)」とする。同様に、「打順4」において、中リール110bに配列された図柄番号1~10の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120bが操作されることを「打順4青」、中リール110bに配列された図柄番号0、11~19の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120bが操作されることを「打順4赤」とする。また、「打順5」、「打順6」において、右リール110cに配列された図柄番号1~10の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120cが操作されることをそれぞれ「打順5青」、「打順6青」、右リール110cに配列された図柄番号0、11~19の図柄が有効ラインA上に位置しているタイミングでストップスイッチ120cが操作されることをそれぞれ「打順5赤」、「打順6赤」とする。
【0057】
例えば、後述するRBB内部中遊技状態において、当選領域8の当選種別「打順ベルA青1」に当選し、正解操作態様(打順3青)による操作が行われた場合、払出枚数が15枚の正解役である当選役「小役1」に対応する図柄組み合わせが有効ラインA上に優先的に表示されるように停止制御がなされる。また、打順1、打順2による操作が行われた場合、払出枚数1枚の不正解役である当選役「1枚役」に対応する図柄組み合わせが有効ラインA上に優先的に表示されるように停止制御がなされ、打順3赤、打順4(打順4青、打順4赤)による操作が行われた場合、払出枚数1枚の不正解役である当選役「1枚役」に対応する図柄組み合わせが有効ラインA上に優先的に1/2の確率で表示されるように停止制御がなされ、打順5、6による操作が行われた場合、払出枚数1枚の不正解役である当選役「1枚役」に対応する図柄組み合わせが有効ラインA上に優先的に1/4の確率で表示されるように停止制御がなされる。
【0058】
なお、当選領域8~23の各当選種別の当選確率(置数)は等しくなるように設定されている。また、当選領域24~31の各当選種別の当選確率(置数)は等しくなるように設定されている。遊技者は、通常、いずれの当選種別に当選しているのかを知ることができないため、上記のような当選領域8~31を設けることにより、正解役を入賞させにくくしている。また、上記のように、不正解役が優先的に表示される操作態様でストップスイッチ120a、120b、120cが操作されても、必ずしも不正解役に対応する図柄組み合わせを有効ラインA上に表示させられるとは限らないので、その操作態様によっては、とりこぼしが発生することがある(PB≠1)。
【0059】
なお、上述したいずれかの当選種別に当選すると、それぞれの当選種別に対応する内部当選フラグが成立(ON)するとともに、この内部当選フラグの成立状況に応じて、各リール110の停止制御がなされることとなる。このとき、小役が含まれる当選種別に当選したものの、これら当選役に対応する図柄組み合わせを、その遊技内で有効ラインA上に表示させることができなかった場合には、当該遊技の終了後に内部当選フラグがOFFされる。つまり、小役の当選の権利は小役が含まれる当選種別に当選した遊技内のみに限られ、当該権利を次遊技に持ち越すことはできない。これに対して、当選役「RBB」が含まれる当選種別に当選した場合には、RBB内部当選フラグが成立(ON)するとともに、当選役「RBB」に対応する図柄組み合わせが有効ラインA上に表示されるまで、RBB内部当選フラグが遊技を跨いで持ち越される。なお、リプレイ役が含まれる当選種別に対応する内部当選フラグが成立した場合には、その当選種別に含まれるリプレイ役のうちのいずれかのリプレイ役に対応する図柄組み合わせが必ず有効ラインA上に表示され、メダルを要することなく次遊技を行うために必要となる処理が行われた後に、当該内部当選フラグがOFFされる。
【0060】
(遊技状態の遷移)
ここで、
図8を用い、遊技状態の遷移について説明する。ここでは、非内部遊技状態、RBB内部中遊技状態、RBB作動中遊技状態といった複数の遊技状態が準備されている。各遊技状態は、後述するように、ボーナス役の当選、入賞(作動)、終了に応じて遷移させる。
【0061】
非内部遊技状態は、複数の遊技状態における初期状態に相当する遊技状態である。かかる非内部遊技状態では、リプレイ役の当選確率が約1/7.3に設定されている。また、非内部遊技状態では、当選役「RBB」が所定の確率(例えば約1/10)で決定されている。
【0062】
遊技状態制御手段312は、当選役「RBB」の当選に応じて遊技状態を遷移させる。例えば、当選役「RBB」が当選した遊技において、当選役「RBB」に対応する図柄組み合わせが有効ラインA上に表示されると、遊技状態制御手段312は、遊技状態をRBB作動中遊技状態に移行させる(1)。
【0063】
RBB作動中遊技状態では、リプレイ役の当選確率が0に設定されている。なお、かかるRBB作動中遊技状態では、当選可能な当選種別として、当選領域1に当選種別「小役ALL」が、当選領域2に当選種別「3枚ALL」、当選領域3に当選種別「1枚ALL」が設定されている。当選種別「小役ALL」に当選すると、当選役「小役1」~「小役45」のいずれかに対応する図柄組み合わせが有効ラインA上に表示され、当選種別「3枚ALL」に当選すると、当選役「小役19」、「小役20」のいずれかに対応する図柄組み合わせが有効ラインA上に表示され、当選種別「1枚ALL」に当選すると、当選役「小役21」~「小役45」のいずれかに対応する図柄組み合わせが有効ラインA上に表示されるように停止制御される。ここでは、かかる小役の構成によりRBB作動中遊技状態での単位遊技当たりの期待獲得枚数を低くしている。
【0064】
RBB作動中遊技状態の終了条件が成立すると、すなわち、獲得枚数が所定枚数に到達すると、遊技状態制御手段312は、遊技状態を非内部遊技状態に移行させる(2)。
【0065】
一方、当選役「RBB」が当選した遊技において、当選役「RBB」に対応する図柄組み合わせを有効ラインA上に表示することができなかった場合、遊技状態制御手段312は、遊技状態をRBB内部中遊技状態に移行させる(3)。
【0066】
RBB内部中遊技状態では、リプレイ役の当選確率が約1/5.9に設定されている。また、RBB内部中遊技状態では当選種別「ハズレ」に当選することはない。換言すれば、当選役「RBB」の当選遊技で当選役「RBB」に対応する図柄組み合わせを有効ラインA上に表示することができなかった場合、その後は、当選役「RBB」より小役やリプレイ役の方が優先して有効ラインA上に停止制御されるので、当選役「RBB」に対応する図柄組み合わせを有効ラインA上に表示することができない。したがって、一旦、遊技状態がRBB内部中遊技状態に移行すると、その後、遊技状態が遷移することなく、RBB内部中遊技状態が維持されることとなる。ここでは、かかるRBB内部中遊技状態を維持しつつ、そのRBB内部中遊技状態においてAT演出状態を実現する。
【0067】
ここでは、RBB内部中遊技状態において、複数種類の正解役が互いに重複せずに当選するため、正解役を入賞させることができる機会を多くすることができ、その結果、例えば、RBB内部中遊技状態におけるAT演出状態において補助演出が行われることで、メダルを獲得しやすくできる。一方、RBB作動中遊技状態では、複数種類の正解役が重複して当選するため、正解役を入賞させることができる機会が少ないので、他の遊技状態におけるAT演出状態よりも正解役を入賞させることができる機会が減り、遊技者が所有するメダルを増やしにくくしている。したがって、RBB内部中遊技状態よりも入賞に係る当選役の当選確率が高いというRBB作動中遊技状態の機能を備えつつ、メダルの獲得性能の面ではRBB作動中遊技状態がRBB内部中遊技状態に劣るという仕様(アクセルRBB)を実現することができる。
【0068】
(演出状態の遷移)
図9は、演出状態の遷移を説明するための説明図である。以下、主制御基板200において演出状態制御手段314により遷移される演出状態について詳述する。なお、以下では、遊技状態がRBB内部中遊技状態である場合について説明する。
【0069】
ここで、メダルの獲得性能が高い遊技状態が偏っているか否かを統括的かつ画一的に判定すべく、指示機能に係る性能を有する遊技区間、すなわち、補助演出(指示機能)を実行する遊技区間等を含む、遊技者にとって有利な遊技区間を有利区間として定義する。なお、有利区間は、主制御基板200で補助演出の作動に係る抽選等を行った結果、補助演出が作動した場合には、主制御基板200において指示の内容が識別できるよう、例えば、主報知手段に表示したときに限り、指示の内容を示す情報を、副制御基板202等の周辺基板に送信してもよい遊技区間である。また、有利区間と異なり、補助演出(指示機能)を実行することができない遊技区間を非有利区間とする。したがって、複数の演出状態は、遊技区間である有利区間および非有利区間のいずれかに属することとなる。本実施形態では、ほぼ全ての演出状態が有利区間に属し、一部の演出状態(ここでは非有利待機演出状態の1遊技目)で非有利区間を実現している。
【0070】
なお、有利区間において、補助演出がないと正解役を取りこぼしてしまう当選態様のうち、正解役の配当が最大(ここでは、15枚)となる選択当選種別において、正解役の入賞を補助する補助演出(最大払出枚数を獲得できる補助演出)を行う場合、例えば、区間表示器160を点灯させることによって、その旨を報知しなければならない。
【0071】
また、非有利区間においては、当選種別の当選確率を設定値毎に異ならせることは可能であるが、同一の当選種別において補助演出を伴う演出状態(AT演出状態)への移行を決定する確率は設定値毎に異ならせてはならない。一方、有利区間においては、当選種別の当選確率、および、同一の当選種別における補助演出を伴う演出状態(AT演出状態)への移行(または追加)を決定する確率のいずれも設定値毎に異ならせることは可能である。
【0072】
したがって、演出状態制御手段314は、演出状態の移行の管理に加え、非有利区間と有利区間との移行も管理することとなる。また、有利区間は、このような管理に拘わらず、以下の終了条件が成立することで強制的に終了する。例えば、有利区間において計数される値が所定値に達したこと(例えば、滞在遊技数が1500遊技に達したり、純増枚数が2400枚を超えたこと)に基づいて強制的に終了する。いずれの場合においても、演出状態制御手段314は、有利区間から非有利区間に移行することで、有利区間で更新された情報(指示機能に係る性能に影響を及ぼす全ての変数)を全てリセットする。
【0073】
(非AT演出状態、AT演出状態)
非AT演出状態においては、AT演出状態より、補助演出の実行頻度が極めて低く、補助演出がほぼ行われないので、獲得できるメダルの枚数が制限される。ここでは、非AT演出状態として通常演出状態、CZ演出状態(チャンスゾーン演出状態)、特化ゾーン演出状態、有利待機演出状態、非有利待機演出状態、引戻演出状態といった6つの演出状態が設けられている。
【0074】
AT演出状態においては、選択当選種別の当選時において補助演出実行手段に補助演出を実行させることで、メダルの消費を抑えつつ、多くのメダルを獲得することが可能となる。したがって、遊技者は、AT演出状態に移行することで、非AT演出状態と比べ、遊技を有利に進行することができる。ここでは、AT演出状態として、OP演出状態(オープニング演出状態)、通常AT演出状態、継続演出状態、特別特化ゾーン演出状態といった4つの演出状態が設けられている。以下、各演出状態について個々に説明する。
【0075】
(各演出状態)
通常演出状態は、複数の演出状態のうち、初期状態に相当する演出状態である。演出状態制御手段314は、通常演出状態においてCZ抽選を行う。CZ抽選は、CZ演出状態への移行を決定する抽選であり、演出状態制御手段314は、詳しくは後述するように、当選種別抽選により決定された当選種別ごとに異なる確率でCZ抽選を行う。そして、通常演出状態においてCZ抽選に当選した場合、演出状態制御手段314は、演出状態をCZ演出状態に移行させる(1)。
【0076】
CZ演出状態では、演出状態制御手段314は、AT抽選を行う。AT抽選は、AT演出状態(通常AT演出状態)への移行を決定する抽選であり、演出状態制御手段314は、当選種別抽選により決定された当選種別ごとに異なる確率でAT抽選を行う。そして、CZ演出状態においてAT抽選に当選した場合、演出状態制御手段314は、演出状態をAT演出状態であるOP演出状態に移行させる(2)。なお、CZ演出状態は、補助演出が実行される通常AT演出状態への移行が決定されることがあるため、通常演出状態よりも有利な演出状態と言える。
【0077】
一方、演出状態制御手段314は、CZ演出状態において所定の終了条件(例えば、AT抽選に当選することなく所定の遊技数を経過すること)が成立すると、演出状態を通常演出状態に移行させる(3)。
【0078】
また、OP演出状態または特別特化ゾーン演出状態に移行することなく通常演出状態またはCZ演出状態で所定の天井条件(例えば、通常演出状態、CZ演出状態および引戻演出状態(これらをまとめて第1状態とする)をそれら以外の演出状態に移行することなく連続して天井遊技数経過)が成立すると(所謂、天井到達)、演出状態制御手段314は、演出状態をOP演出状態へ移行させる(2)、(4)。
【0079】
OP演出状態では、所定の終了条件(例えば、正解当選種別に5回当選し、5回の補助演出が実行されること)が成立するまで、補助演出が実行される。そして、OP演出状態において、所定の終了条件が成立すると、演出状態制御手段314は、演出状態を特化ゾーン演出状態に移行させる(5)。特化ゾーン演出状態では、後に移行される通常AT演出状態において獲得可能な差枚数(純増枚数)を抽選により決定する。特化ゾーン演出状態は、例えば15遊技継続し、15遊技が経過すると、演出状態制御手段314は、演出状態を通常AT演出状態に移行させる(6)。
【0080】
通常AT演出状態(第2状態)では、所定の終了条件(例えば、特化ゾーンで決定された差枚数のメダルを獲得すること)が成立するまで、補助演出が実行される。すなわち、通常AT演出状態は、差枚数管理型のAT演出状態である。そして、通常AT演出状態において、所定の終了条件が成立すると、演出状態制御手段314は、演出状態を一点鎖線で示した待機演出状態に移行させる(7)、(8)。
【0081】
待機演出状態は、有利区間である有利待機演出状態と、非有利区間である非有利待機演出状態とが設けられている。詳しい説明は後述するが、通常AT演出状態の最終遊技において、演出状態制御手段314は、通常AT演出状態に再度移行させる(継続させるか)か否かの継続抽選を行う。そして、継続抽選に当選した場合、演出状態制御手段314は、有利区間を継続させ、演出状態を、一旦、有利待機演出状態に移行させる(7)。また、演出状態制御手段314は、継続抽選に非当選であっても、特定条件が成立しているときに有利継続抽選を行い、有利継続抽選に当選した場合、有利区間を継続させ、演出状態を有利待機演出状態に移行させる(7)。一方、継続抽選に非当選で、かつ、特定条件が成立していないか、特定条件が成立していても有利継続抽選に非当選であると、演出状態制御手段314は、有利区間を一旦、非有利区間に移行させるとともに、演出状態を非有利待機演出状態に移行させる(8)。
【0082】
待機演出状態は、有利待機演出状態であっても非有利待機演出状態であっても2遊技継続する。継続抽選に当選して有利待機演出状態に移行された場合、演出状態制御手段314は、2遊技が経過すると、演出状態を継続演出状態に移行させる(9)。
【0083】
また、継続抽選に非当選で、かつ、有利継続抽選に当選して有利待機演出状態に移行された場合、演出状態制御手段314は、2遊技それぞれにおいて継続抽選を行う。そして、演出状態制御手段314は、2遊技が経過すると、継続抽選に当選しても当選していなくても、演出状態を継続演出状態に移行させる(9)。
【0084】
一方、非有利待機演出状態に移行された場合、最初の1遊技目に、演出状態制御手段314は、有利区間へ移行させるか否かを決定する有利区間移行抽選を行う。なお、本実施形態の有利区間移行抽選は、必ず当選する。したがって、演出状態制御手段314は、非有利待機演出状態の1遊技目が終了するときに遊技区間を有利区間に移行させる。また、非有利待機演出状態に移行された場合、演出状態制御手段314は、2遊技それぞれにおいて継続抽選を行う。そして、演出状態制御手段314は、2遊技が経過すると、継続抽選に当選しても当選していなくても、演出状態を継続演出状態に移行させる(10)。
【0085】
継続演出状態は、所定の終了条件(例えば、10遊技の経過)が成立するまで継続し、その間、演出制御手段334によって継続抽選の抽選結果が報知される。そして、継続抽選に当選していれば、演出状態制御手段314は、再度、特化ゾーン演出状態に移行させる(11)。一方、継続抽選に当選していなければ、演出状態制御手段314は、演出状態を引戻演出状態に移行させる(12)。なお、継続演出状態では、継続抽選に当選していないときに、通常AT演出状態への移行を抽選により決定する所謂書換抽選が行われるようにしてもよい。
【0086】
引戻演出状態は、所定の終了条件(例えば、30遊技の経過)が成立するまで継続し、その間、演出状態制御手段314は、通常AT演出状態の引戻抽選を行う。そして、引戻抽選に当選すると、演出状態制御手段314は、演出状態を特化ゾーン演出状態に移行させる(13)。一方、引戻抽選に当選せずに終了条件が成立すると、演出状態制御手段314は、演出状態を通常演出状態に移行させる(14)。
【0087】
ところで、破線で示した、通常演出状態、CZ演出状態および引戻演出状態においては、当選種別抽選によって所定の当選種別(例えば当選種別「リプレイ3」、「リプレイ4」)が当選したときに、演出状態制御手段314は、詳しくは後述するロック3のリール演出(フリーズ演出)の実行可否を抽選により決定する。そして、ロック3のリール演出の実行が決定された場合、リール制御手段306によってロック3のリール演出が実行されるとともに、演出状態制御手段314は、次遊技に演出状態を特別特化ゾーン演出状態に移行させる(15)。
【0088】
特別特化ゾーン演出状態は、特化ゾーン演出状態よりも遊技者に有利な状態となっている。具体的には、特別特化ゾーン演出状態では、特化ゾーン演出状態と同様に、後に移行される通常AT演出状態において獲得可能な差枚数(純増枚数)を抽選により決定することになるが、決定される差枚数が特化ゾーン演出状態よりも大きな値に決定されやすくなっている。例えば、特別特化ゾーン演出状態では、1回の有利区間において獲得可能な最大純増枚数である2400枚が合計で決定される。なお、特別特化ゾーン演出状態には、ロック3のリール演出の実行が決定された場合以外にも、詳しくは後述する特定条件が成立した場合に移行されることがある。
【0089】
そして、特別特化ゾーン演出状態が終了すると、演出状態制御手段314は、演出状態を通常AT演出状態に移行させる(16)。
【0090】
(通常演出状態の詳細)
図10は、通常演出状態の内部状態を説明する図である。
図11は、状態アップ抽選テーブルを説明する図である。上記した通常演出状態は、CZ演出状態への移行確率、すなわち、CZ抽選の当選確率が異なる複数の内部状態が設けられている。具体的には、通常演出状態には、
図10に示すように、低確状態、通常状態、高確状態、超高確状態の4つの内部状態が設けられている。低確状態は、最もCZ抽選に当選しにくい状態である。通常状態は、低確状態よりもCZ抽選に当選しやすく、高確状態および超高確状態よりもCZ抽選に当選しにくい状態である。高確状態は、低確状態および通常状態よりもCZ抽選に当選しやすく、超高確状態よりもCZ抽選に当選しにくい状態である。超高確状態は、最もCZ抽選に当選しやすい状態である。
【0091】
通常AT演出状態が終了し、継続抽選に非当選となって引戻演出状態を経由して演出状態が通常演出状態に移行されると、
図10に示すように、演出状態制御手段314は、内部状態を低確状態に設定する。したがって、通常演出状態に移行された当初は、CZ抽選に当選しにくい。
【0092】
そして、通常演出状態において、演出状態制御手段314は、
図11に示す状態アップ抽選テーブルを参照して、状態アップ抽選を毎遊技行う。状態アップ抽選テーブルによれば、当選種別抽選手段によって決定された当選種別ごとに当選確率が設定されている。状態アップ抽選テーブルでは、詳しくは後述するCZ抽選において最も当選確率が高い当選種別「強チェリー」が、状態アップ抽選においても、最も当選確率が高く設定されている。したがって、当選種別「強チェリー」に当選すると、CZ演出状態に当選している期待とともに、例えCZ抽選に非当選であったとしても、状態アップ抽選に当選しているという期待も高まる。
【0093】
そして、低確状態において状態アップ抽選に当選すると、演出状態制御手段314は、内部状態を通常状態に移行させる。また、通常状態において状態アップ抽選に当選すると、演出状態制御手段314は、内部状態を高確状態に移行させる。また、高確状態において状態アップ抽選に当選すると、演出状態制御手段314は、内部状態を超高確状態に移行させる。このように、演出状態制御手段314は、状態アップ抽選に当選する毎に、内部状態を、CZ抽選の当選確率が高い状態に移行させる。
【0094】
そして、内部状態に拘らず、CZ抽選に当選すると、演出状態制御手段314は、演出状態をCZ演出状態に移行させる。その後、CZ演出状態においてAT抽選に当選することなく、演出状態が通常演出状態に移行された場合、演出状態制御手段314は、内部状態を、通常状態、高確状態、超高確状態のいずれかに移行させる。なお、通常状態、高確状態、超高確状態のいずれかへは抽選により決定してもよく、また、通常演出状態に移行する回数ごとに予め設定された内部状態に移行させるようにしてもよい。
【0095】
このように、スロットマシン100では、通常演出状態に移行された当初、CZ抽選に最も当選しにくい低確状態に移行されることになるが、状態アップ抽選に当選することで内部状態が昇格され、また、CZ演出状態から通常演出状態に移行される際には、CZ抽選に最も当選しにくい低確状態以外の内部状態に移行される。
【0096】
図12は、CZ抽選テーブルを説明する図である。通常演出状態の内部状態が低確状態である場合、演出状態制御手段314は、
図12(a)に示す低確状態用のCZ抽選テーブルを参照して、CZ抽選を行う。また、通常演出状態の内部状態が通常状態である場合、演出状態制御手段314は、
図12(b)に示す通常状態用のCZ抽選テーブルを参照して、CZ抽選を行う。また、通常演出状態の内部状態が高確状態である場合、演出状態制御手段314は、
図12(c)に示す高確状態用のCZ抽選テーブルを参照して、CZ抽選を行う。また、通常演出状態の内部状態が超高確状態である場合、演出状態制御手段314は、
図12(d)に示す超高確状態用のCZ抽選テーブルを参照して、CZ抽選を行う。
【0097】
図12(a)~
図12(d)に示すCZ抽選テーブルによれば、当選種別毎にCZ演出状態への移行を決定する確率(当選確率)が設定されている。したがって、演出状態制御手段314は、当選種別抽選により決定された当選種別に基づいて、
図12(a)~
図12(d)に示すCZ抽選テーブルのいずれかを参照して、CZ抽選を行うことになる。
【0098】
また、
図12(a)~
図12(d)に示すCZ抽選テーブルからも明らかなように、低確状態、通常状態、高確状態および超高確状態の順に、CZ抽選に当選しやすいようになされている。したがって、通常AT演出状態が終了し、継続抽選に非当選となって引戻演出状態を経由して演出状態が通常演出状態に移行された直後では低確状態に滞在し、CZ抽選に当選しにくいので、CZ演出状態に移行されにくいためにAT抽選に当選する可能性も低くなっている。
【0099】
一方で、状態アップ抽選に当選するか、CZ抽選に当選すれば、その後の内部状態は通常状態か、通常状態よりも当選確率の高い高確状態または超高確状態に必ず移行されることになる。したがって、通常演出状態の遊技数が長くなるほどCZ抽選に当選しやすくなり、CZ演出状態に移行されやすいためにAT抽選に当選する可能性も高くなる。これにより、遊技を行うほど遊技意欲を向上させることができる。
【0100】
ここで、
図12(a)~
図12(d)に示すCZ抽選テーブルでは、詳しくは後述するリール演出としてのロック1、ロック2の実行が決定された場合、当選種別抽選により決定された当選種別に代えて、当選種別「ロック1」または当選種別「ロック2」としてCZ抽選を行うようになされている。当選種別「ロック1」および当選種別「ロック2」は、リール演出が決定されたときに当選した当選種別よりもCZ抽選の当選確率が高く設定されている。そのため、ロック1、ロック2のリール演出が実行されたときには、より遊技者の期待感を高めることができ、遊技意欲を向上させることができる。
【0101】
(通常演出状態のモード)
図13は、通常演出状態のモードを説明する図である。上記した通常演出状態は、上記した内部状態の他に、複数のモードのいずれかによって管理される。通常演出状態には、
図13(a)に示すように、モードA~モードDの4つのモード(移行条件)が設けられている。モードA~モードDでは、天井条件、すなわち、天井に到達するまでの遊技数(以下、天井遊技数と呼ぶ)がそれぞれ異なる。モードAは、天井遊技数が999遊技に設定されており、モードBは、天井遊技数が777遊技に設定されており、モードCは、天井遊技数が500遊技に設定されており、モードDは、天井遊技数が100遊技に設定されている。したがって、モードAは、モードB~モードDと比べ、天井遊技数が大きいため、天井遊技数に到達するまでメダルの消費が多くなるので不利な条件と言える。また、モードDは、モードA~モードCと比べ、天井遊技数が小さいため有利な条件と言える。
【0102】
そして、非有利待機演出状態における2遊技目において、演出状態制御手段314は、
図13(b)に示す非有利待機演出状態時のモード抽選テーブルを参照して、その後に移行される通常演出状態のモードをモード抽選により決定する。非有利待機演出状態時のモード抽選テーブルによれば、50%の確率でモードBが決定され、40%の確率でモードCが決定され、10%の確率でモードDが決定される。なお、非有利待機演出状態において継続抽選に当選している場合にはモード抽選が行われない。
【0103】
また、有利継続抽選に当選した場合、有利待機演出状態における2遊技目において、演出状態制御手段314は、
図13(c)に示す有利継続抽選当選時のモード抽選テーブルを参照して、その後に移行される通常演出状態のモードをモート抽選により決定する。有利継続抽選当選時のモード抽選テーブルによれば、100%の確率でモードDが決定される。なお、有利待機演出状態において継続抽選に当選している場合にはモード抽選が行われない。したがって、通常AT演出状態において継続抽選に当選している場合にはモード抽選が行われない。すなわち、有利継続抽選に当選し、かつ、その後の継続抽選に非当選であった場合にのみ、モード抽選が行われる。このような場合、特化ゾーン演出状態を経由した通常AT演出状態に移行することなく、引戻演出状態を経由して通常演出状態に移行することになるが、100遊技が経過すると、天井に到達し、早期にAT演出状態(通常AT演出状態)に復帰することができる。
【0104】
ところで、設定変更時は、遊技状態、演出状態、および、遊技区間等の情報がリセット(初期化)されることになるため、遊技状態は非内部遊技状態となり、遊技区間は非有利区間となる。また、設定変更時の演出状態は非有利待機演出状態に設定されている。
【0105】
そして、設定変更後の1遊技目、すなわち、非有利待機演出状態における1遊技目では、有利区間抽選に必ず当選して遊技区間が有利区間に移行される。一方、遊技状態は、当選役「RBB」が含まれる当選種別の当選確率が約1/10であるため、遊技状態が非内部遊技状態から他の遊技状態に移行する可能性は低い。すなわち、設定変更後の1遊技目では、遊技状態が非内部遊技状態に維持される可能性が高い。
【0106】
そこで、設定変更後の2遊技目、すなわち、非有利待機演出状態における2遊技目では、遊技状態が非内部遊技状態である場合に、演出状態制御手段314は、
図13(d)に示す設定変更時のモード抽選テーブルを参照して、その後に移行される通常演出状態のモードをモード抽選により決定する。設定変更時のモード抽選テーブルによれば、50%の確率でモードAが決定され、30%の確率でモードBが決定され、20%の確率でモードCが決定される。
【0107】
このように、通常遊技状態を管理する複数のモードのうち、天井遊技数が最も大きいモードAは、設定変更時にのみ決定されるようになされている。
【0108】
図14は、移行抽選テーブルを説明する図である。上記したように、通常演出状態およびCZ演出状態において通常AT演出状態への移行が決定されたときに、ロック3のリール演出の実行が決定されていない場合、および、特定条件が成立していない場合、OP演出状態、特化ゾーン演出状態を経由して通常AT演出状態に移行されることになる。
【0109】
ここで、本実施形態では、特定条件として、引戻演出状態、通常演出状態およびCZ演出状態における継続した遊技数(継続遊技数)が999遊技に到達したことが設定されている。そして、継続遊技数が999遊技に到達するためにはモードAに設定されている必要がある。モードAは、設定変更時にのみ決定されることがある。すなわち、ロック3のリール演出の実行が決定された場合以外で、特別特化ゾーン演出状態に移行することがあるのは、設定変更時にモードAが決定され、かつ、継続遊技数が999遊技に到達した場合だけである。設定変更時にモードAが決定され、かつ、継続遊技数が999遊技に到達した場合、
図14に示す移行抽選テーブルを参照して、移行先が決定される。移行抽選テーブルによれば、50%の確率でOP演出状態経由の特化ゾーンが決定され、50%の確率で特別特化ゾーン演出状態が決定される。
【0110】
図15は、設定変更時のメダルの増減の概要を説明する図である。スロットマシン100では、設定変更がなされた場合(所謂朝一の場合)、最初の通常演出状態における天井遊技数として999遊技が決定されることがある。すなわち、最初の通常演出状態において所謂ハマることがある。このような場合、
図15に示すように、他の場合と比べて、メダルが大量に消費されることになる。一方で、天井遊技数が999遊技に到達すると、特別特化ゾーン演出状態に移行する場合があり、リール演出が決定された場合と同様の利益を得ることができる。したがって、このような場合、
図15に示すように、メダルが大量に消費された後に、メダルを大量に獲得することが可能となる。
【0111】
このようにすることで、1日での最大値(純増枚数の最大値)から最小値(純増枚数の最小値)を減算した所謂MY値を大きくすることができ、遊技者の遊技意欲を向上させることができる。
【0112】
図16は、継続抽選テーブルおよび有利継続抽選テーブルを説明する図である。上記したように、通常AT演出状態の最終遊技、および、待機演出状態において通常AT演出状態を継続させるかの継続抽選を行う。ここで、継続抽選では、
図16(a)、
図16(b)に示す継続抽選テーブルを参照して継続抽選が行われる。
【0113】
具体的には、通常演出状態、CZ演出状態および引戻演出状態から初めて移行された通常AT演出状態が終了するとき(所謂初当たり時)、および、有利継続抽選に当選して移行された有利待機演出状態では、演出状態制御手段314は、
図16(a)に示す1回目用の継続抽選テーブルを参照して継続抽選を行う。1回目用の継続抽選テーブルによれば、設定値によらず、1%の確率で当選し、99%の確率で非当選となる。
【0114】
また、通常演出状態、CZ演出状態および引戻演出状態を経由することなく、2回目以降の通常AT演出状態が終了するときには、演出状態制御手段314は、
図16(b)に示す2回目以降用の継続抽選テーブルを参照して継続抽選を行う。2回目以降用の継続抽選テーブルによれば、設定値によらず、80%の確率で当選し、20%の確率で非当選となる。
【0115】
このように、初当たり時の通常AT演出状態では継続抽選で当選しにくくなっているが、2回目以降の通常AT演出状態では継続抽選で当選しやすくなっている。
【0116】
また、継続抽選に非当選であっても、有利区間での純増枚数が400枚未満である場合、演出状態制御手段314は、
図16(c)に示す有利継続抽選テーブルを参照して、有利区間を継続させるための有利継続抽選を行う。有利継続抽選テーブルで、設定値ごとに、有利継続抽選の当選確率が異なるように設定されている。具体的には、設定値が高くなるほど、有利継続抽選に当選しやすいように設定されている。上記したように、有利継続抽選に当選すると、継続抽選に当選しなくても、その後の通常演出状態のモードがモードDに決定されるため、天井遊技数が100に設定され、早期に通常AT演出状態に移行(復帰)されることになる。
【0117】
以上のように、設定値によって有利区間の継続確率を異ならせるようにしたことで、継続抽選に非当選でも、例えば高設定ほど早期に通常AT演出状態に復帰されるなど、設定値毎に異なる遊技性となり、遊技意欲を向上させることができる。
【0118】
図17は、リール演出を説明する図である。本実施形態では、リール演出としてロック1、ロック2、ロック3が設けられている。ロック1~3のリール演出では、遊技の開始時に、リール制御手段306が、リール110a、110b、110cを段階的に逆回転させるリール演出を実行する。
図17(a)に示すように、ロック1のリール演出では、リール制御手段306が、リール110a、110b、110cを逆回転させて一旦停止するリール演出を実行し、その後、回転リール110a、110b、110cを回転させる。また、ロック2のリール演出では、
図17(b)に示すように、リール制御手段306が、リール110a、110b、110cを逆回転させて一旦停止する動作を2回繰り返すリール演出を実行し、その後、リール110a、110b、110cを回転させる。また、ロック3のリール演出では、
図17(c)に示すように、リール110a、110b、110cを逆回転させて一旦停止する動作を3回繰り返すリール演出を実行し、その後、リール110a、110b、110cを回転させる。
【0119】
このように、本実施形態では、リール110a、110b、110cが逆回転する回数が段階的に異なるロック1~ロック3のリール演出が設けられている。そして、上記したように、ロック1よりもロック2の方がCZ抽選に当選しやすく、ロック3は特別特化ゾーン演出状態への移行が決定される。すなわち、逆回転の回数が多いほど、遊技者への特典が大きくなるように設定されている。
【0120】
図18は、リール演出抽選テーブルを説明する図である。
図18に示すように、演出状態制御手段314は、当選種別抽選により当選種別「スイカ」、「チャンス目」、「弱チェリー」、「強チェリー」が当選したときに、
図18(a)に示すリール演出抽選テーブルを参照して、ロック1、ロック2の実行可否をリール演出抽選により決定する。ロック1、2は、所謂レア役の当選時に抽選により実行可否が決定される。
【0121】
また、演出状態制御手段314は、当選種別抽選により当選種別「リプレイ3」、「リプレイ4」が当選したときに、
図18(b)に示すリール演出抽選テーブルを参照して、ロック3の実行可否をリール演出抽選により決定する。
【0122】
ただし、通常演出状態、CZ演出状態および引戻演出状態における合計遊技数が400遊技以下である場合、当選種別抽選により当選種別「スイカ」、「チャンス目」、「弱チェリー」、「強チェリー」が当選したときに、演出状態制御手段314は、
図18(c)に示すリール演出抽選テーブルを参照して、ロック1、ロック2の実行可否をリール演出抽選により決定する。
【0123】
また、通常演出状態、CZ演出状態および引戻演出状態における合計遊技数が400遊技以下である場合、当選種別抽選により当選種別「リプレイ3」、「リプレイ4」が当選したときに、演出状態制御手段314は、
図18(d)に示すリール演出抽選テーブルを参照して、ロック3の実行可否をリール演出抽選により決定する。
【0124】
図18(a)~
図18(d)に示したリール演出抽選テーブルによれば、通常演出状態、CZ演出状態および引戻演出状態における合計遊技数が400遊技以下である場合、ロック2およびロック3の当選確率が、それ以外の場合よりも低く設定されている。すなわち、通常演出演出、CZ演出状態および引戻演出状態における合計遊技数が400遊技以下である場合、ロック2およびロック3が当選しにくくなっている。
【0125】
これにより、通常演出状態、CZ演出状態および引戻演出状態への移行当初はロック2およびロック3に当選しにくいものの、400遊技を超えた後はロック2およびロック3に当選しやすくなるため、遊技者に特典(通常AT演出状態や、特別特化ゾーン演出状態)が付与されやすくなり、遊技数を重ねることによる遊技意欲を向上させることができる。
【0126】
以下、主制御基板200、副制御基板202における具体的処理をフローチャートに基づいて説明する。
【0127】
(主制御基板200のCPU初期化処理)
図19は、主制御基板200におけるCPU初期化処理を説明するフローチャートである。電源基板より電源が供給されると、メインCPU200aにシステムリセットが発生し、メインCPU200aは、以下のCPU初期化処理(S100)を行う。
【0128】
(ステップS100-1)
メインCPU200aは、電源投入に応じて、初期設定処理として、メインROM200bから起動プログラムを読み込むとともに、各種処理を実行するために必要な設定処理を行う。
【0129】
(ステップS100-3)
メインCPU200aは、タイマカウンタにウェイト処理時間を設定する。
【0130】
(ステップS100-5)
メインCPU200aは、電源断予告信号を検出しているかを判定する。なお、主制御基板200には、電源断検知回路が設けられており、電源電圧が所定値以下になると、電源断検知回路から電源断予告信号が出力される。電源断予告信号を検出している場合には、上記ステップS100-3に処理を移し、電源断予告信号を検出していない場合には、ステップS100-7に処理を移す。
【0131】
(ステップS100-7)
メインCPU200aは、上記ステップS100-3で設定したウェイト処理時間が経過したか否かを判定する。その結果、ウェイト処理時間が経過したと判定した場合にはステップS100-9に処理を移し、ウェイト時間は経過していないと判定した場合には上記ステップS100-5に処理を移す。
【0132】
(ステップS100-9)
メインCPU200aは、メインRAM200cへのアクセスを許可するために必要な処理を実行する。
【0133】
(ステップS100-11)
メインCPU200aは、チェックサム確認処理を実行する。ここでは、メインCPU200aは、チェックサムを算出し、算出したチェックサムが、電源断時に保存されたチェックサムと一致しない(異常である)か、ならびに、バックアップが異常であるかを判定する。そして、メインCPU200aは、バックアップおよびチェックサムのいずれか一方または双方が異常であると判定した場合、バックアップ異常フラグをオンにし、バックアップおよびチェックサムの双方が異常でないと判定した場合、バックアップ異常フラグをオフにする。
【0134】
(ステップS100-13)
メインCPU200aは、バックアップ異常フラグがオンであるかを判定する。その結果、バックアップ異常フラグがオンであると判定した場合にはステップS110に処理を移し、バックアップ異常フラグがオンでないと判定した場合にはステップS120に処理を移す。
【0135】
(ステップS110)
メインCPU200aは、コールドスタート処理を実行する。なお、このコールドスタート処理については後述する。
【0136】
(ステップS120)
メインCPU200aは、設定値を切り替える設定値切り替え処理を実行する。なお、この設定値切り替え処理については後述する。
【0137】
(ステップS130)
メインCPU200aは、電源断直前の状態に戻す状態復帰処理を実行する。なお、この状態復帰処理については後述する。
【0138】
図20は、主制御基板200におけるコールドスタート処理(S110)を説明するフローチャートである。
【0139】
(ステップS110-1)
メインCPU200aは、メインRAM200cにおける使用領域をクリアするとともに、使用領域の異常を検出する使用領域RAMチェック処理を実行する。
【0140】
(ステップS110-3)
メインCPU200aは、メインRAM200cにおける別領域(使用外領域)をクリアするとともに、別領域の異常を検出する別領域RAMチェック処理を実行する。なお、別領域RAMチェック処理において別領域に異常が検出された場合、メインCPU200aは、RAMリードライトエラーフラグをオンにする。
【0141】
(ステップS110-5)
メインCPU200aは、メインRAM200cの異常を示すエラーコード「EA」をセットする。
【0142】
(ステップS110-7)
メインCPU200aは、上記ステップS110-1において異常が検出されたかを判定する。その結果、上記ステップS110-1において異常が検出されたと判定した場合にはステップS112に処理を移し、上記ステップS110-1において異常が検出されていないと判定された場合にはステップS110-9に処理を移す。
【0143】
(ステップS110-9)
メインCPU200aは、上記ステップS110-3において異常が検出されたときにオンになるRAMリードライトエラーフラグを取得する。
【0144】
(ステップS110-11)
メインCPU200aは、RAMリードライトエラーフラグがオンであるかを判定する。その結果、RAMリードライトエラーフラグがオンであると判定した場合にはステップS112に処理を移し、RAMリードライトエラーフラグがオンでないと判定された場合にはステップS120に処理を移す。
【0145】
(ステップS120)
メインCPU200aは、設定値を切り替える設定値切り替え処理を実行する。なお、この設定値切り替え処理については後述する。
【0146】
(ステップS110-13)
メインCPU200aは、バックアップエラーであることを示すエラーコード「E7」をセットする。
【0147】
(ステップS112)
メインCPU200aは、エラーにより遊技の進行を停止させるためのエラー停止処理を実行する。なお、このエラー停止処理については後述する。
【0148】
図21は、主制御基板200におけるエラー停止処理(S112)を説明するフローチャートである。
【0149】
(ステップS112-1)
メインCPU200aは、スタックポインタのアドレスとして、初期スタックポインタ値をセットする。
【0150】
(ステップS112-3)
メインCPU200aは、エラー表示および警告音設定を行うエラー設定処理を実行する。
【0151】
(ステップS112-5)
メインCPU200aは、外部信号1~3に対応するビットの出力イメージをオフにする外部信号1~3出力ビットオフをセットする。
【0152】
(ステップS112-7)
メインCPU200aは、上記ステップS112-5でセットしたビットについて、出力イメージを更新する出力ポートイメージセット処理を実行する。
【0153】
(ステップS112-9)
メインCPU200aは、永久ループに移行する。これにより、遊技の進行が停止することになる。
【0154】
図22は、主制御基板200における設定値切り替え処理(S120)を説明するフローチャートである。
【0155】
(ステップS120-1)
メインCPU200aは、入力ポート1の信号を取得し、取得した入力ポート1の信号に基づいて、設定値切り替え条件が成立していないかを判定する。その結果、設定値切り替え条件が成立していないと判定した場合には当該設定値切り替え処理を終了し、設定値切り替え条件が成立していると判定した場合にはステップS120-3に処理を移す。ここで、入力ポート1の信号には、前面上扉104および前面下扉106が開放されているか否かを示す信号、および、設定キーがオンにされているか否かを示す信号が含まれる。そして、ここでは、前面上扉104および前面下扉106が開放されていていることを示す信号、ならびに、設定キーがオンにされていることを示す信号を取得した場合に、設定値切り替え条件が成立していると判定している。
【0156】
(ステップS120-3)
メインCPU200aは、メインRAM200cにおいて設定変更時にクリアすべき使用領域をクリアするRAMクリア処理を実行する。
【0157】
(ステップS120-5)
メインCPU200aは、設定値切り替え時データテーブルのテーブルデータをメインRAM200cに転送するテーブル内容セット処理を実行する。
【0158】
(ステップS120-7)
メインCPU200aは、設定値の変更を開始することを示す設定変更開始コマンドを送信バッファにセットする。
【0159】
(ステップS120-9)
メインCPU200aは、入力ポートの信号の立ち下がりエッジ(オンエッジ)を検出するエッジチェック処理を実行する。
【0160】
(ステップS120-11)
メインCPU200aは、現在の設定値を示す設定値データを取得する。
【0161】
(ステップS120-13)
メインCPU200aは、上記ステップS120-9において設定変更スイッチのオンエッジを検出していないかを判定する。その結果、設定変更スイッチのオンエッジを検出していないと判定した場合にはステップS120-17に処理を移し、設定変更スイッチのオンエッジを検出したと判定した場合にはステップS120-15に処理を移す。
【0162】
(ステップS120-15)
メインCPU200aは、設定値データを1インクリメントする。
【0163】
(ステップS120-17)
メインCPU200aは、設定値データが、設定値として設定可能な範囲(1~6)内であるかを判定する。その結果、設定値データが範囲内であると判定した場合にはステップS120-21に処理を移し、設定値データが範囲内でないと判定した場合にはステップS120-19に処理を移す。
【0164】
(ステップS120-19)
メインCPU200aは、設定値データを0にセットする。
【0165】
(ステップS120-21)
メインCPU200aは、上記ステップS120-15または上記ステップS120-19でインクリメントまたはセットされた値に設定値データを更新する。
【0166】
(ステップS120-23)
メインCPU200aは、設定値をメインクレジット表示部130に表示する表示データ変換処理を実行する。
【0167】
(ステップS120-25)
メインCPU200aは、設定変更スイッチのオンエッジを検出していないかを判定する。その結果、設定変更スイッチのオンエッジを検出していないと判定した場合にはステップS120-31に処理を移し、設定変更スイッチのオンエッジを検出していると判定した場合にはステップS120-27に処理を移す。
【0168】
(ステップS120-27)
メインCPU200aは、設定変更スイッチがオンであるかを判定する。その結果、設定変更スイッチがオンであると判定した場合にはステップS120-27に処理を移し、設定変更スイッチがオンでないと判定した場合にはステップS120-29に処理を移す。
【0169】
(ステップS120-29)
メインCPU200aは、設定値変更スイッチ間隔タイマをセットする。
【0170】
(ステップS120-31)
メインCPU200aは、設定変更スイッチ間隔タイマが0になるまで待つタイマウェイト処理を実行する。
【0171】
(ステップS120-33)
メインCPU200aは、スタートスイッチ118のオンエッジを検出していないかを判定する。その結果、スタートスイッチ118のオンエッジを検出していないと判定した場合にはステップS120-9に処理を移し、スタートスイッチ118のオンエッジを検出していると判定した場合にはステップS120-35に処理を移す。
【0172】
(ステップS120-35)
メインCPU200aは、設定キーがオフであるかを判定する。その結果、設定キーがオフであると判定した場合にはステップS120-35に処理を移し、設定キーがオフでないと判定した場合にはステップS120-37に処理を移す。
【0173】
(ステップS120-37)
メインCPU200aは、設定キーがオンであるかを判定する。その結果、設定キーがオンであると判定した場合にはステップS120-37に処理を移し、設定キーがオンでないと判定した場合にはステップS122に処理を移す。
【0174】
(ステップS122)
メインCPU200aは、初期化スタートを開始する初期化スタート処理を実行する。なお、この初期化スタート処理については後述する。
【0175】
図23は、主制御基板200における初期化スタート処理(S122)を説明するフローチャートである。
【0176】
(ステップS122-1)
メインCPU200aは、設定値の変更が終了したことを示す設定変更終了コマンドを送信バッファにセットする。
【0177】
(ステップS122-3)
メインCPU200aは、設定値の変更が終了したときの状態を示す設定変更状態コマンドを送信バッファにセットする。
【0178】
(ステップS122-5)
メインCPU200aは、初期化スタート時ウェイトタイマをセットする。
【0179】
(ステップS122-7)
メインCPU200aは、初期化スタート時ウェイトタイマが0になるまで待つタイマウェイト処理を実行する。
【0180】
(ステップS122-9)
メインCPU200aは、メインRAM200cのうちの別領域をクリアする設定変更時RAMクリア処理を実行する。
【0181】
(ステップS122-11)
メインCPU200aは、メインRAM200cにおいて設定変更時にクリアすべき使用領域をクリアするRAMクリア処理を実行する。
【0182】
(ステップS122-13)
メインCPU200aは、現在の遊技状態を示す遊技状態コマンドを送信バッファにセットする。
【0183】
(ステップS200)
メインCPU200aは、遊技を開始するための遊技開始処理を実行する。なお、この遊技開始処理については後述する。
【0184】
図24は、主制御基板200における状態復帰処理(S130)を説明するフローチャートである。
【0185】
(ステップS130-1)
メインCPU200aは、スタックポインタを復帰させる。
【0186】
(ステップS130-3)
メインCPU200aは、メインRAM200cのうちの未使用領域をクリアする未使用領域クリア処理を実行する。
【0187】
(ステップS130-5)
メインCPU200aは、スタックポインタ保存バッファをクリアする。
【0188】
(ステップS130-7)
メインCPU200aは、電源断復帰後フラグを設定(オン)する。
【0189】
(ステップS130-9)
メインCPU200aは、入力ポートのイメージを更新するポート入力処理を実行する。
【0190】
(ステップS130-11)
メインCPU200aは、上記ステップS130-9で更新された入力ポートのイメージに基づいて、操作対象ビットの情報を抽出する操作対象ビット抽出処理を実行する。
【0191】
(ステップS130-13)
メインCPU200aは、上記ステップS130-11で抽出した操作対象ビットを、前回状態の操作対象ビットとしてセットする。
【0192】
(ステップS130-15)
メインCPU200aは、リール110a、110b、110cのモータフェーズを取得する。ここで、リール110a、110b、110cの状態として、モータフェーズが設定されている。モータフェーズは、リール110a、110b、110cの動作状態、すなわち、加速中、定常回転中、停止中、待機中を示す。具体的に、モータフェーズに割り当てられた1バイト(記憶単位)の変数が、そのステッピングモータ152の動作状態に応じて、加速中=3、定常回転中=2、停止中=1、待機中=0といった値に変化する。
【0193】
(ステップS130-17)
メインCPU200aは、上記ステップS130-15で取得したモータフェーズに基づいて、リール110a、110b、110cのいずれもが定常回転中および加速中でないかを判定する。その結果、リール110a、110b、110cのいずれもが定常回転中および加速中でないと判定した場合にはステップS130-21に処理を移し、リール110a、110b、110cのいずれかが定常回転中または加速中であると判定した場合にはステップS130-19に処理を移す。
【0194】
(ステップS130-19)
メインCPU200aは、リール110a、110b、110cのエラー検出時の設定を行う回転エラー処理を実行する。
【0195】
(ステップS130-21)
メインCPU200aは、退避していたレジスタ群を復帰させる。
【0196】
(ステップS130-23)
メインCPU200aは、割込みを許可し、当該状態復帰処理を終了する。これにより、メインCPU200aは、電源断直前の状態に復帰する。
【0197】
図25は、主制御基板200における遊技開始処理(S200)を説明するフローチャートである。
【0198】
(ステップS200-1)
メインCPU200aは、再遊技であるか否かを示す再遊技状態識別信号を出力するための再遊技状態識別信号出力設定処理を実行する。
【0199】
(ステップS200-3)
メインCPU200aは、メダルの投入枚数(ベット枚数)を表示する投入枚数表示器に対応するビットをオフ(消灯)するための投入枚数表示器出力ビットオフをセットする。
【0200】
(ステップS200-5)
メインCPU200aは、上記ステップS200-3でセットしたビットについて、出力イメージを更新する出力ポートイメージセット処理を実行する。
【0201】
(ステップS200-7)
メインCPU200aは、遊技開始ウェイトタイマをセットする。
【0202】
(ステップS200-9)
メインCPU200aは、遊技開始ウェイトタイマが0になるまで待つタイマウェイト処理を実行する。
【0203】
(ステップS200-11)
メインCPU200aは、メインRAM200cにおける使用領域のうち、1遊技毎にクリアすべき領域をクリアする1遊技RAMクリア処理を実行する。
【0204】
(ステップS200-13)
メインCPU200aは、ボーナス信号を設定するボーナス信号設定処理を実行する。
【0205】
(ステップS200-15)
メインCPU200aは、入力ポートイメージのエッジ情報をクリアするエッジクリア処理を実行する。
【0206】
(ステップS210)
メインCPU200aは、メダルの投入を受け付ける遊技メダル投入処理を実行する。なお、この遊技メダル投入処理については後述する。
【0207】
図26は、主制御基板200における遊技メダル投入処理(S210)を説明するフローチャートである。
【0208】
(ステップS210-1)
メインCPU200aは、各種エラーの検出結果の確認を行うエラー確認処理を実行する。
【0209】
(ステップS210-3)
メインCPU200aは、入力ポートの信号の立ち下がりエッジ(オンエッジ)を検出するエッジチェック処理を実行する。
【0210】
(ステップS210-5)
メインCPU200aは、前面上扉104または前面下扉106が開放されているときに1が立つドア開放エラー検出フラグを取得する。
【0211】
(ステップS210-7)
メインCPU200aは、上記ステップS210-5で取得したドア開放エラー検出フラグに基づき、前面上扉104および前面下扉106が閉鎖されているかを判定する。その結果、前面上扉104および前面下扉106が閉鎖されていると判定した場合にはステップS210-17に処理を移し、前面上扉104または前面下扉106の少なくとも一方が閉鎖されていないと判定した場合にはステップS210-9に処理を移す。
【0212】
(ステップS210-9)
メインCPU200aは、前面上扉104または前面下扉106の少なくとも一方が開放されていることを示すエラーコード「E8」をセットする。
【0213】
(ステップS210-11)
メインCPU200aは、エラー表示、警告音の要求、ならびに、エラー復帰待ちを行うエラーウェイト処理を実行する。
【0214】
(ステップS210-13)
メインCPU200aは、設定値を確認する設定値確認処理を実行する。
【0215】
(ステップS210-15)
メインCPU200aは、入力ポートイメージのエッジ情報をクリアするエッジクリア処理を実行する。
【0216】
(ステップS210-17)
メインCPU200aは、貯留(クレジット)されているメダルを払い戻すためのクレジットスイッチ(不図示)が押下されている場合に、貯留されているメダルを払い戻すクレジットボタンチェック処理を実行する。
【0217】
(ステップS210-19)
メインCPU200aは、メダルをベットする遊技メダル投入ボタン関連処理を実行する。ここでは、ベットスイッチ116が押下された場合に、貯留(クレジット)されているメダルを規定数までベットするとともに、ベットした枚数分だけ貯留枚数を減算する。また、メダル投入口114aを通じてメダルが投入された場合、規定数までメダルをベットし、規定数よりも多くメダルが投入された場合、その分だけ貯留枚数に加算する。
【0218】
(ステップS210-21)
メインCPU200aは、投入枚数が規定数であるかを確認する遊技メダル取得処理を実行する。
【0219】
(ステップS210-23)
メインCPU200aは、上記ステップS210-21の確認結果に基づき、投入枚数が規定数でないかを判定する。その結果、投入枚数が規定数でないと判定した場合にはステップS210-1に処理を移し、投入枚数が規定数であると判定した場合にはステップS210-25に処理を移す。
【0220】
(ステップS210-25)
メインCPU200aは、スタートスイッチ118の操作が有効になったか否かを示すスタート表示器(不図示)をオン(点灯)するためのスタート表示器出力ビットをセットする。
【0221】
(ステップS210-27)
メインCPU200aは、スタートスイッチ118の立ち下がりエッジ(押下)を検出していなかを判定する。その結果、スタートスイッチ118の立ち下がりエッジを検出していないと判定した場合にはステップS210-1に処理を移し、スタートスイッチ118の立ち下がりエッジを検出していると判定した場合にはステップS210-29に処理を移す。
【0222】
(ステップS210-29)
メインCPU200aは、メイン払出表示部132の表示をクリアするためにメイン払出表示部バッファをクリアする。
【0223】
(ステップS210-31)
メインCPU200aは、再遊技状態識別信号をクリアする再遊技状態識別信号クリア処理を実行する。
【0224】
(ステップS210-33)
メインCPU200aは、スタート表示器をオフ(消灯)するためのブロッカー閉塞前処理を実行する。
【0225】
(ステップS210-35)
メインCPU200aは、スタートスイッチ118が押下されたことを示すレバー押下コマンドを送信バッファにセットする。
【0226】
(ステップS220)
メインCPU200aは、当選種別抽選を行う内部抽選処理を実行する。なお、この内部抽選処理については後述する。
【0227】
図27は、主制御基板200における内部抽選処理(S220)を説明するフローチャートである。
【0228】
(ステップS220-1)
メインCPU200aは、設定値データを取得する。
【0229】
(ステップS220-3)
メインCPU200aは、設定値異常エラーを示すエラーコード「EC」をセットする。
【0230】
(ステップS220-5)
メインCPU200aは、上記ステップS220-1で取得した設定値データが異常であるかを判定する。その結果、設定値データが異常であると判定した場合にはステップS112に処理を移し、設定値データが異常でないと判定した場合にはステップS220-7に処理を移す。
【0231】
(ステップS220-7)
メインCPU200aは、乱数発生器200dによって更新された当選種別抽選乱数を取得する。
【0232】
(ステップS220-9)
メインCPU200aは、遊技状態に係るオフセット値を取得する状態オフセット取得処理を実行する。
【0233】
(ステップS220-11)
メインCPU200aは、内部抽選エリア定義テーブル(当選種別抽選テーブル)のアドレスをセットする。
【0234】
(ステップS220-13)
メインCPU200aは、上記ステップS220-11でセットしたアドレスに対して、上記ステップS220-9で取得したオフセット値を加算したアドレスに示される値を当選領域の初期値としてセットする。ここでは、現在の遊技状態の当選種別抽選テーブルにおける最初の当選領域が初期値としてセットされることになる。
【0235】
(ステップS220-15)
メインCPU200aは、その当選領域の当選範囲を示す数値である抽選データを取得するとともに、当選領域を1ずらす抽選データ取得処理を実行する。
【0236】
(ステップS220-17)
メインCPU200aは、当選種別抽選を行わないかを判定する。その結果、当選種別抽選を行わないと判定した場合にはステップS220-21に処理を移し、当選種別抽選を行うと判定した場合にはステップS220-19に処理を移す。
【0237】
(ステップS220-19)
メインCPU200aは、乱数値から抽選データを減算する。
【0238】
(ステップS220-21)
メインCPU200aは、上記ステップS220-19の減算結果が負であるか、すなわち、当選種別抽選によって、その当選領域に当選しているかを判定する。その結果、当選種別抽選に当選していると判定した場合にはステップS230に処理を移し、当選種別抽選に当選していないと判定した場合にはステップS220-23に処理を移す。
【0239】
(ステップS220-23)
メインCPU200aは、当選種別抽選が終了でないかを判定する。その結果、当選種別抽選が終了でないと判定した場合にはステップS220-15に処理を移し、当選種別抽選が終了であると判定した場合にはステップS220-25に処理を移す。
【0240】
(ステップS220-25)
メインCPU200aは、トリガー役種別をクリアする。
【0241】
(ステップS230)
メインCPU200aは、当選領域および遊技状態に基づいて、図柄コードを設定する図柄コード設定処理を実行する。なお、この図柄コード設定処理については後述する。
【0242】
図28は、主制御基板200における図柄コード設定処理(S230)を説明するフローチャートである。
【0243】
(ステップS230-1)
メインCPU200aは、上記ステップS220で当選した当選領域を取得し、取得した当選領域にボーナス役が含まれる場合には遊技状態を内部中遊技状態に設定する遊技状態設定処理を実行する。
【0244】
(ステップS230-3)
メインCPU200aは、上記ステップS230-1で取得した当選領域を停止制御番号として設定する。
【0245】
(ステップS230-5)
メインCPU200aは、上記ステップS230-1で取得した当選領域に基づいて、当選種別を決定(設定)する。
【0246】
(ステップS230-7)
メインCPU200aは、上記ステップS230-3で設定した停止制御番号に基づいて、表示可能な図柄、および、引き込み対象の図柄を示す図柄コードを設定する図柄コード初期設定処理を実行する。
【0247】
(ステップS230-9)
メインCPU200aは、表示図柄ビットを設定する表示図柄ビット初期値設定処理を実行する。
【0248】
(ステップS231)
メインCPU200aは、実行フラグの設定、演出状態に関する各種処理、補助演出に関する処理等を行う実行フラグ設定処理を実行する。なお、この実行フラグ設定処理については後述する。
【0249】
(ステップS230-13)
メインCPU200aは、有利区間に関するコマンドである演出コマンドを送信バッファにセットする。
【0250】
(ステップS230-15)
メインCPU200aは、当選種別を示す当選情報コマンドを送信バッファにセットする。
【0251】
(ステップS230-17)
メインCPU200aは、1遊技間タイマを確認する。
【0252】
(ステップS230-19)
メインCPU200aは、リール110a、110b、110cが回転前であることを示す回胴回転前コマンドを送信バッファにセットする。
【0253】
(ステップS230-21)
メインCPU200aは、ステッピングモータ152の励磁解放を待つ励磁解放待ち処理を実行する。
【0254】
(ステップS230-23)
メインCPU200aは、1遊技間タイマが0でないかを判定する。その結果、1遊技間タイマが0でないと判定した場合にはステップS230-23に処理を移し、1遊技間タイマが0であると判定した場合にはステップS230-25に処理を移す。
【0255】
(ステップS230-25)
メインCPU200aは、リール110a、110b、110cの回転を開始させるための回胴開始処理を実行する。ここでは、リール110a、110b、110cのモータフェーズを加速中に設定して各リールの回転を開始させたり、1遊技間タイマを4.1秒に相当する値にセットしたりする。
【0256】
(ステップS230-27)
メインCPU200aは、リール110a、110b、110cの回転が開始したことを示す回胴開始コマンドを送信バッファにセットする。
【0257】
(ステップS240)
メインCPU200aは、リール110a、110b、110cの回転中の処理である回胴回転中処理を実行する。なお、この回胴回転中処理については後述する。
【0258】
図29は、主制御基板200における実行フラグ設定処理(S231)を説明するフローチャートである。
【0259】
(ステップS231-1)
メインCPU200aは、次回ATフラグに基づいて演出状態を更新する(移行させる)AT状態更新処理を実行する。なお、次回ATフラグは、次遊技において設定する演出状態を示すものであり、下記の処理で設定されることになる。
【0260】
(ステップS232~ステップS236)
メインCPU200aは、演出状態、遊技区間ごとのモジュールを実行する状態別モジュール実行処理を実行し、当該実行フラグ設定処理を終了する。なお、状態別モジュール実行処理では、移行されている演出状態、遊技区間に対応するモジュール(処理)がメインROM200bから読み出されて実行される。以下では、本実施形態の特徴に関係するモジュールについて詳細に説明し、本実施形態の特徴と無関係のモジュールについては説明を省略する。
【0261】
図30は、状態別モジュール実行処理で実行される非有利区間処理(S232)を説明するフローチャートである。非有利区間処理は、遊技区間が非有利区間であるときに実行される。
【0262】
(ステップS232-1)
メインCPU200aは、有利区間抽選を行う。
【0263】
(ステップS232-3)
メインCPU200aは、上記ステップS232-1において有利区間抽選に当選したかを判定する。その結果、有利区間抽選に当選したと判定した場合にはステップS232-5に処理を移し、有利区間抽選に当選していないと判定した場合には当該非有利区間処理を終了する。
【0264】
(ステップS232-5)
メインCPU200aは、有利区間であることを示す有利区間フラグをオンにし、当該非有利区間処理を終了する。これにより、後述するステップS280-7の有利区間更新処理において、有利区間に移行される。
【0265】
図31は、状態別モジュール実行処理で実行される通常演出状態処理(S233)を説明するフローチャートである。通常演出状態処理は、演出状態が通常演出状態であるときに実行される。
【0266】
(ステップS233-1)
メインCPU200aは、継続遊技数をカウントするための継続遊技数カウンタを1インクリメントする。なお、継続遊技数カウンタは、下記のCZ演出状態処理、および、引戻演出状態であるときに実行される不図示の引戻演出状態処理でも、1遊技毎に1インクリメントされる。また、継続遊技数カウンタは、OP演出状態または特別特化ゾーン演出状態に移行される際にリセットされる。
【0267】
(ステップS233-3)
メインCPU200aは、所定の当選種別の当選時に、リール演出の実行可否を抽選により決定するリール演出抽選処理を実行する。ここでは、演出状態制御手段314は、当選種別抽選により当選種別「スイカ」、「チャンス目」、「弱チェリー」、「強チェリー」が当選したときに、継続遊技数が400以下であれば
図18(c)に示したリール演出抽選テーブルを参照し、継続遊技数が400より大きければ
図18(a)に示したリール演出抽選テーブルを参照し、ロック1、ロック2の実行可否をリール演出抽選により決定する。また、演出状態制御手段314は、当選種別抽選により当選種別「リプレイ3」、「リプレイ4」が当選したときに、継続遊技数が400以下であれば
図18(d)に示したリール演出抽選テーブルを参照し、継続遊技数が400より大きければ
図18(b)に示したリール演出抽選テーブルを参照し、ロック3の実行可否をリール演出抽選により決定する。
【0268】
(ステップS233-5)
メインCPU200aは、上記ステップS233-3においてロック3の実行が決定されたか、すなわち、ロック3に当選したかを判定する。その結果、ロック3に当選していたと判定した場合にはステップS233-7に処理を移し、ロック3に当選していないと判定した場合にはステップS233-9に処理を移す。
【0269】
(ステップS233-7)
メインCPU200aは、次回ATフラグを、特別特化ゾーン演出状態に対応する値に設定し、ステップS233-31に処理を移す。
【0270】
(ステップS233-9)
メインCPU200aは、継続遊技数カウンタの値が、設定中のモードに対応する天井遊技数であるかを判定する。その結果、継続遊技数カウンタの値が天井遊技数であると判定した場合にはステップS233-11に処理を移し、継続遊技数カウンタの値が天井遊技数でないと判定した場合にはステップS233-17に処理を移す。
【0271】
(ステップS233-11)
メインCPU200aは、継続遊技数カウンタの値が999であるかを判定する。その結果、継続遊技数カウンタの値が999と判定した場合にはステップS233-13に処理を移し、継続遊技数カウンタの値が999でないと判定した場合にはステップS233-15に処理を移す。
【0272】
(ステップS233-13)
メインCPU200aは、
図14に示した移行抽選テーブルを参照して、移行先の演出状態を決定する移行抽選を行う。ここでは、継続遊技数が999遊技を経過していた場合に、50%の確率で特別特化ゾーン演出状態への移行が決定される。
【0273】
(ステップS233-15)
メインCPU200aは、上記ステップS233-13において移行抽選に当選していれば、次回ATフラグを特別特化ゾーン演出状態に対応する値に設定し、移行抽選に当選していない場合、および、移行抽選を行っていない場合には、次回ATフラグをOP演出状態に対応する値に設定し、ステップS233-31に処理を移す。
【0274】
(ステップS233-17)
メインCPU200aは、内部状態が超高確状態であるかを判定する。その結果、超高確状態であると判定した場合にはステップS233-21に処理を移し、超高確状態でないと判定した場合にはステップS233-19に処理を移す。
【0275】
(ステップS233-19)
メインCPU200aは、
図11に示した状態アップ抽選テーブルを参照して、当選種別抽選で決定された当選種別に基づいて状態アップ抽選を行い、状態アップ抽選に当選した場合には内部状態を1つ昇格させる。
【0276】
(ステップS233-21)
メインCPU200aは、上記ステップS233-3においてロック1またはロック2の実行が決定されたか、すなわち、ロック1またはロック2に当選したかを判定する。その結果、ロック1またはロック2に当選していたと判定した場合にはステップS233-23に処理を移し、ロック1およびロック2に当選していないと判定した場合にはステップS233-25に処理を移す。
【0277】
(ステップS233-23)
メインCPU200aは、ロック1に当選していた場合には当選種別「ロック1」に、ロック2に当選していた場合には当選種別「ロック2」に当選種別を書き換える。
【0278】
(ステップS233-25)
メインCPU200aは、
図12(a)~
図12(d)に示したCZ抽選テーブルのいずれかを内部状態に基づき選択し、選択したCZ抽選テーブルを参照して、当選種別抽選により決定された当選種別、または、上記ステップS233-23で書き換えられた当選種別に基づきCZ抽選を行う。
【0279】
(ステップS233-27)
メインCPU200aは、上記ステップS233-25においてCZ抽選に当選したかを判定する。その結果、CZ抽選に当選したと判定した場合にはステップS233-29に処理を移し、CZ抽選に当選していないと判定した場合にはステップS233-31に処理を移す。
【0280】
(ステップS233-29)
メインCPU200aは、次回ATフラグをCZ演出状態に対応する値に設定する。
【0281】
(ステップS233-31)
メインCPU200aは、上記ステップS233-3においてリール演出の実行が決定されたか、すなわち、ロック1~ロック3のいずれかのリール演出に当選したかを判定する。その結果、リール演出に当選していたと判定した場合にはステップS233-33に処理を移し、リール演出に当選していないと判定した場合には当該通常演出状態処理を終了する。
【0282】
(ステップS233-33)
メインCPU200aは、上記ステップS233-3において決定されたリール演出を実行し、当該通常演出状態処理を終了する。
【0283】
図32は、状態別モジュール実行処理で実行されるCZ演出状態処理(S234)を説明するフローチャートである。CZ演出状態処理は、演出状態がCZ演出状態処理であるときに実行される。なお、CZ演出状態処理における各処理のうち、通常演出状態処理と同一の処理に同一の符号を付し、その説明は省略する。
【0284】
(ステップS234-1)
メインCPU200aは、当選種別抽選により決定された当選種別に基づきAT抽選を行う。
【0285】
(ステップS234-3)
メインCPU200aは、上記ステップS234-1においてAT抽選に当選したかを判定する。その結果、AT抽選に当選したと判定した場合にはステップS234-5に処理を移し、AT抽選に当選していないと判定した場合にはステップS234-7に処理を移す。
【0286】
(ステップS234-5)
メインCPU200aは、次回ATフラグをOP演出状態に対応する値に設定し、ステップS233-31に処理を移す。
【0287】
(ステップS234-7)
メインCPU200aは、CZ演出状態の最終遊技であるかを判定する。その結果、CZ演出状態の最終遊技であると判定した場合にはステップS234-9に処理を移し、CZ演出状態の最終遊技でないと判定した場合にはステップS233-31に処理を移す。
【0288】
(ステップS234-9)
メインCPU200aは、次回ATフラグを通常演出状態に対応する値に設定するとともに、内部状態として、通常状態、高確状態または超高確状態のいずれかに設定する。
【0289】
図33は、状態別モジュール実行処理で実行される非有利待機演出状態処理(S235)を説明するフローチャートである。非有利演出状態処理は、演出状態が非有利演出状態であるときに実行される。
【0290】
(ステップS235-1)
メインCPU200aは、継続フラグがオンであるかを判定する。なお、継続フラグは、通常AT演出状態への移行(継続)が決定されている場合にオンとなる。その結果、継続フラグがオンしていると判定した場合にはステップS235-9に処理を移し、継続フラグがオンしていないと判定した場合にはステップS235-3に処理を移す。
【0291】
(ステップS235-3)
メインCPU200aは、
図16(a)に示した1回目用の継続抽選テーブルを参照して、継続抽選を行う。
【0292】
(ステップS235-5)
メインCPU200aは、継続抽選に当選したかを判定する。その結果、継続抽選に当選したと判定した場合にはステップS235-7に処理を移し、継続抽選に当選していないと判定した場合にはステップS235-9に処理を移す。
【0293】
(ステップS235-7)
メインCPU200aは、継続フラグをオンにする。
【0294】
(ステップS235-9)
メインCPU200aは、非有利待機演出状態の最終遊技(2遊技目)であるかを判定する。その結果、最終遊技であると判定した場合にはステップS235-11に処理を移し、最終遊技でないと判定した場合には当該非有利待機演出状態処理を終了する。
【0295】
(ステップS235-11)
メインCPU200aは、継続フラグがオンであるかを判定する。その結果、継続フラグがオンしていると判定した場合にはステップS235-13に処理を移し、継続フラグがオンしていないと判定した場合にはステップS235-15に処理を移す。
【0296】
(ステップS235-13)
メインCPU200aは、前回の遊技の遊技状態が非内部遊技状態であれば
図13(d)に示した設定変更時のモード抽選テーブルを参照し、前回の遊技の遊技状態が非内部遊技状態以外(RBB内部中遊技状態)であれば
図13(b)に示した非有利待機演出状態用のモード抽選テーブルを参照して、その後に移行される予定の通常演出状態のモードをモード抽選により決定する。
【0297】
(ステップS235-15)
メインCPU200aは、次回ATフラグを継続演出状態に対応する値に設定し、当該非有利待機演出状態処理を終了する。
【0298】
図34は、状態別モジュール実行処理で実行される有利待機演出状態処理(S236)を説明するフローチャートである。有利演出状態処理は、演出状態が有利演出状態であるときに実行される。なお、有利演出状態処理における各処理のうち、非有利演出状態処理と同一の処理に同一の符号を付し、その説明は省略する。
【0299】
(ステップS236-1)
メインCPU200aは、
図13(c)に示した有利待機演出状態用のモード抽選テーブルを参照して、その後に移行される予定の通常演出状態のモードをモード抽選により決定する。ここでは、モードDが必ず決定される。
【0300】
図35は、主制御基板200における回胴回転中処理(S240)を説明するフローチャートである。
【0301】
(ステップS240-1)
メインCPU200aは、ストップスイッチ120a、120b、120cの表示器(不図示)に対応するビットをオフ(消灯)するために停止表示器出力ビットオフ(出力イメージ)をセットする。ここで、停止表示器出力ビットは、3ビットのビット列で構成され、各ビットがそれぞれ3つのストップスイッチ120a、120b、120cの発光色に対応付けられており、青色=1、赤色=0で表される。
【0302】
(ステップS240-3)
メインCPU200aは、上記ステップS240-1でセットしたビットについて、出力イメージを更新する出力ポートイメージセット処理を実行する。
【0303】
(ステップS240-5)
メインCPU200aは、各種エラーの検出結果の確認を行うエラー確認処理を実行する。
【0304】
(ステップS240-7)
メインCPU200aは、インデックスフラグを参照し、回転しているリール110a、110b、110cのインデックスを取得する。なお、インデックスフラグは、リール110a、110b、110cが定速回転速度に到達した後にしか立たないので、換言すれば、インデックスフラグが立っているということは、リール110a、110b、110cが定速回転速度に到達していることも示すこととなる。
【0305】
(ステップS240-9)
メインCPU200aは、リール110a、110b、110c全てのインデックスフラグを検出済みでないかを判定する。その結果、全てのインデックスフラグを検出済みでないと判定した場合にはステップS240-1に処理を移し、全てのインデックスフラグを検出済みであると判定した場合にはステップS240-11に処理を移す。
【0306】
(ステップS240-11)
メインCPU200aは、停止または停止開始しているリール110a、110b、110cを示す停止回胴ビットを取得する。ここで、停止回胴ビットは、3ビットのビット列で構成され、各ビットがそれぞれ3つのリール110a、110b、110cのいずれかに対応付けられており、定速状態=1、加速状態、減速状態または停止状態=0で表される。
【0307】
(ステップS240-13)
メインCPU200aは、上記ステップS240-11で取得した停止回胴ビットを回胴回転中フラグとして保存する。
【0308】
(ステップS240-15)
メインCPU200aは、ストップスイッチ120a、120b、120cの表示器(不図示)に対応するビットをオン(消灯)するために停止表示器出力ビットオン(出力イメージ)をセットする。
【0309】
(ステップS240-17)
メインCPU200aは、入力ポート0のイメージを取得し、取得したイメージから、操作対象ビットを抽出する操作対象ビット抽出処理を実行する。ここで、操作対象ビットは、3ビットのビット列で構成され、各ビットがそれぞれ3つのストップスイッチ120a、120b、120cのいずれかに対応付けられており、操作されている=1、操作されていない=0で表される。
【0310】
(ステップS240-19)
メインCPU200aは、上記ステップS240-13で取得した回胴回転中フラグと、上記ステップS240-17で抽出した操作対象ビットとの論理積を演算する。ここで、リール110が回転中であり、かつ、そのリールに対応するストップスイッチ120が操作されていれば、すなわち、操作したストップスイッチ120が有効に回転しているリール110に対応していれば、論理積は1となる。
【0311】
(ステップS240-21)
メインCPU200aは、上記ステップS240-19で演算した論理積が0である、すなわち、回転しているリール110に対応したストップスイッチ120が操作されていないかを判定する。その結果、回転しているリール110に対応したストップスイッチ120が操作されていないと判定した場合にはステップS240-3に処理を移し、回転しているリール110に対応したストップスイッチ120が操作されていると判定した場合にはステップS240-23に処理を移す。
【0312】
(ステップS240-23)
メインCPU200aは、停止表示器出力ビットが含まれる出力イメージを取得し、取得した出力イメージと、上記ステップS240-19で演算した論理積との論理積を演算する。ここでは、操作されたストップスイッチ120が、赤色点灯中である場合に論理積のビットが0となり、青色点灯中である場合に論理積のビットが1となる。
【0313】
(ステップS240-25)
メインCPU200aは、上記ステップS240-23で演算した論理積が0であるか、すなわち、操作されたストップスイッチ120が赤色点灯中であるかを判定する。その結果、操作されたストップスイッチ120が赤色点灯中であると判定した場合にはステップS240-1に処理を移し、操作されたストップスイッチ120が赤色点灯中でないと判定した場合にはステップS240-27に処理を移す。
【0314】
(ステップS240-27)
メインCPU200aは、操作されたストップスイッチ120が有効でないかを判定する。その結果、操作されたストップスイッチ120が有効でないと判定した場合にはステップS240-1に処理を移し、操作されたストップスイッチ120が有効であると判定した場合にはステップS240-29に処理を移す。なお、ここでは、操作されたストップスイッチ120が1つであるか否かを判定している。そして、操作されたストップスイッチ120が1つであると判定した場合にはステップS240-29に処理を移し、操作されたストップスイッチ120が1つでない、すなわち、2つ以上であると判定した場合にはステップS240-1に処理を移す。
【0315】
(ステップS240-29)
メインCPU200aは、操作されたストップスイッチ120に対応するリール110を停止させるための各種パラメータを取得する停止制御回胴設定処理を実行する。
【0316】
(ステップS240-31)
メインCPU200aは、割込みを禁止する。
【0317】
(ステップS240-33)
メインCPU200aは、有効ラインA上に位置する図柄の図柄番号を押下基準位置として導出する押下基準位置取得処理を実行する。
【0318】
(ステップS240-35)
メインCPU200aは、リール110の滑りコマ数を決定する滑りコマ数取得処理を実行する。
【0319】
(ステップS250)
メインCPU200aは、操作されたストップスイッチ120に対応するリール110を停止させる回胴停止処理を実行する。なお、この回胴停止処理については後述する。
【0320】
図36は、主制御基板200における回胴停止処理(S250)を説明するフローチャートである。
【0321】
(ステップS250-1)
メインCPU200aは、上記ステップS240-35で導出した押下基準位置を取得する。
【0322】
(ステップS250-3)
メインCPU200aは、上記ステップS250-1で取得した押下基準位置に対して、上記ステップS240-37で決定した滑りコマ数を補正することにより、停止要求番号を算定する。
【0323】
(ステップS250-5)
メインCPU200aは、停止要求フラグを設定する(1にする)。停止要求フラグは、並行して動作するプログラムに対し、対象となるリール110の停止処理を要求するためのフラグであり、停止要求フラグを1とすることで、停止要求番号に対応する図柄を有効ラインA上に停止することが可能となる。かかる停止要求フラグおよび上記の停止要求番号は、並行して動作するプログラムにより読み出され、リール110の停止処理が行われる。なお、停止処理が完了すると、そのプログラムによって、停止要求フラグは0(OFF)にリセットされる。
【0324】
(ステップS250-7)
メインCPU200aは、割込みを許可する。
【0325】
(ステップS250-9)
メインCPU200aは、リール110の停止順序を示す停止情報コマンドを送信バッファにセットする。
【0326】
(ステップS250-11)
メインCPU200aは、ストップスイッチ120の表示器(不図示)に対応するビットをオフ(消灯)するために停止表示器出力ビットオフ(出力イメージ)をセットする。
【0327】
(ステップS250-13)
メインCPU200aは、上記ステップS250-11でセットしたビットについて、出力イメージを更新する出力ポートイメージセット処理を実行する。
【0328】
(ステップS250-15)
メインCPU200aは、表示図柄ビットを設定する表示図柄ビット設定処理を実行する。
【0329】
(ステップS250-17)
メインCPU200aは、次のリール110を停止させるための次回胴設定前処理を実行する。
【0330】
(ステップS250-19)
メインCPU200aは、全てのリール110の停止処理が終了済みでないかを判定する。その結果、全てのリール110の停止処理が終了済みでないと判定した場合にはステップS240に処理を移し、全てのリール110の停止処理が終了済みであると判定した場合にはステップS250-21に処理を移す。
【0331】
(ステップS250-21)
メインCPU200aは、いずれかのリール110について停止要求フラグがオンである、すなわち、全てのリール110が停止済みでないかを判定する。その結果、全てのリール110が停止済みでないと判定した場合にはステップS250-21に処理を移し、全てのリール110が停止済みであると判定した場合にはステップS250-23に処理を移す。
【0332】
(ステップS250-23)
メインCPU200aは、各種エラーの検出結果の確認を行うエラー確認処理を実行する。
【0333】
(ステップS250-25)
メインCPU200aは、操作対象ビットの情報を抽出する操作対象ビット抽出処理を実行する。
【0334】
(ステップS250-27)
メインCPU200aは、上記ステップS250-25で取得した操作対象ビットに基づいて、ストップスイッチ120が押下されているかを判定する。その結果、ストップスイッチ120が押下されていると判定した場合にはステップS250-23に処理を移し、ストップスイッチ120が押下されていないと判定した場合にはステップS260に処理を移す。
【0335】
(ステップS260)
メインCPU200aは、入賞した当選役を判定する表示判定処理を実行する。なお、この表示判定処理については後述する。
【0336】
図37は、主制御基板200における表示判定処理(S260)を説明するフローチャートである。
【0337】
(ステップS260-1)
メインCPU200aは、メイン払出表示部132のバッファをクリアする。
【0338】
(ステップS260-3)
メインCPU200aは、有効ラインA上に表示された図柄組み合わせと、有効ラインA上に表示許可された図柄組み合わせとが一致するか否かによって、表示判定異常が発生しているかを判定する表示判定異常検出処理を実行する。
【0339】
(ステップS260-5)
メインCPU200aは、表示判定異常(エラー)であることを示すエラーコード「EE」をセットする。
【0340】
(ステップS260-7)
メインCPU200aは、上記ステップS260-3の判定結果に基づき、表示判定異常であるかを判定する。その結果、表示判定異常であると判定した場合にはステップS112に処理を移し、表示判定異常でないと判定した場合にはステップS260-9に処理を移す。
【0341】
(ステップS260-9)
メインCPU200aは、有効ラインA上に停止(表示)された図柄組み合わせに基づいて、入賞した当選役を決定する表示図柄識別生成処理を実行する。
【0342】
(ステップS260-11)
メインCPU200aは、払出枚数の初期値として0をセットする。
【0343】
(ステップS260-13)
メインCPU200aは、小役が入賞したかを判定する。その結果、小役が入賞したと判定した場合にはステップS260-15に処理を移し、小役が入賞していないと判定した場合にはステップS260-35に処理を移す。
【0344】
(ステップS260-15)
メインCPU200aは、小役が入賞したことを示す入賞フラグをオンにする。
【0345】
(ステップS260-17)
メインCPU200aは、入賞した小役に応じた払出枚数を設定する払出枚数設定処理を実行する。
【0346】
(ステップS260-19)
メインCPU200aは、有利区間でないかを判定する。その結果、有利区間でないと判定した場合にはステップS270に処理を移し、有利区間であると判定した場合にはステップS260-21に処理を移す。
【0347】
(ステップS260-21)
メインCPU200aは、有利区間中の純増枚数をカウントする有利区間MYカウンタの値を取得する。
【0348】
(ステップS260-23)
メインCPU200aは、上記ステップS260-23で取得した有利区間MYカウンタの値に払出枚数を加算する。
【0349】
(ステップS260-25)
メインCPU200aは、当該遊技の投入枚数を取得する。
【0350】
(ステップS260-27)
メインCPU200aは、上記ステップS260-23で加算した値から投入枚数を減算する。
【0351】
(ステップS260-29)
メインCPU200aは、上記ステップS260-27の減算結果が負でないかを判定する。その結果、減算結果が負でないと判定した場合にはステップS260-33に処理を移し、減算結果が負であると判定した場合にはステップS260-31に処理を移す。
【0352】
(ステップS260-31)
メインCPU200aは、有利区間MYカウンタの値をクリアする(0にする)。
【0353】
(ステップS260-33)
メインCPU200aは、上記ステップS260-27で減算した値、または、上記ステップS260-31でクリアした値に、有利区間MYカウンタの値を更新する。
【0354】
(ステップS260-35)
メインCPU200aは、リプレイ役が入賞していなかを判定する。その結果、リプレイ役が入賞していないと判定した場合にはステップS270に処理を移し、リプレイ役が入賞していると判定した場合にはステップS260-37に処理を移す。
【0355】
(ステップS260-37)
メインCPU200aは、払出枚数に投入枚数をセットする。
【0356】
(ステップS260-39)
メインCPU200aは、再遊技作動中フラグをオンにする。
【0357】
(ステップS260-41)
メインCPU200aは、自動投入枚数をセットする。
【0358】
(ステップS270)
メインCPU200aは、メダルを払い出す払出処理を実行する。なお、この払出処理については後述する。
【0359】
図38は、主制御基板200における払出処理(S270)を説明するフローチャートである。
【0360】
(ステップS270-1)
メインCPU200aは、再遊技作動中フラグを取得する。
【0361】
(ステップS270-3)
メインCPU200aは、メダルの払い出しが開始されたことを示す払出開始コマンドを送信バッファにセットする。
【0362】
(ステップS270-5)
メインCPU200aは、上記ステップS270-1で取得した再遊技作動中フラグに基づいて、リプレイ役が入賞したかを判定する。その結果、リプレイ役が入賞したと判定した場合にはステップS270-41に処理を移し、リプレイ役が入賞していないと判定した場合にはステップS270-7に処理を移す。
【0363】
(ステップS270-7)
メインCPU200aは、メイン払出表示部132に0を表示するためのメイン表示器表示処理を実行する。
【0364】
(ステップS270-9)
メインCPU200aは、払い出しがない(払出枚数が0枚)を判定する。その結果、払い出しがないと判定した場合にはステップS270-35に処理を移し、払い出しがあると判定した場合にはステップS270-11に処理を移す。
【0365】
(ステップS270-11)
メインCPU200aは、貯留枚数が50枚以上であるかを判定する。その結果、貯留枚数が50枚以上であると判定した場合にはステップS270-13に処理を移し、貯留枚数が50枚以上でないと判定した場合にはステップS270-15に処理を移す。
【0366】
(ステップS270-13)
メインCPU200aは、メダル払出装置142からメダルを1枚払い出させるメダル払出装置制御処理を実行し、ステップS270-23に処理を移す。
【0367】
(ステップS270-15)
メインCPU200aは、払出開始間隔タイマをセットする。
【0368】
(ステップS270-17)
メインCPU200aは、払出開始タイマが0でない、すなわち、初回払出時であるかを判定する。その結果、初回払出時であると判定した場合にはステップS270-21に処理を移し、初回払出時でないと判定した場合にはステップS270-19に処理を移す。
【0369】
(ステップS270-19)
メインCPU200aは、払出開始間隔タイマが0になるまで待つタイマウェイト処理を実行する。
【0370】
(ステップS270-21)
メインCPU200aは、貯留枚数を1インクリメントする。
【0371】
(ステップS270-23)
メインCPU200aは、1枚のメダルが払い出されたことを示す払出実行コマンドを送信バッファにセットする。
【0372】
(ステップS270-25)
メインCPU200aは、既に払い出された払出枚数をメイン払出表示部132に表示するためのメイン表示器表示前処理を実行する。
【0373】
(ステップS270-27)
メインCPU200aは、ボーナス遊技状態でないかを判定する。その結果、ボーナス遊技状態でないと判定した場合にはステップS270-31に処理を移し、ボーナス遊技状態であると判定した場合にはステップS270-29に処理を移す。
【0374】
(ステップS270-29)
メインCPU200aは、ボーナス遊技状態において払い出されたメダルの枚数であるボーナス作動中獲得枚数を1インクリメントする。
【0375】
(ステップS270-31)
メインCPU200aは、払出枚数のメダルの払い出しが終了していないかを判定する。その結果、払い出しが終了していないと判定した場合にはステップS270-11に処理を移し、払い出しが終了していると判定した場合にはステップS270-33に処理を移す。
【0376】
(ステップS270-33)
メインCPU200aは、メダルの払い出しを終了するための払出終了処理を実行する。
【0377】
(ステップS270-35)
メインCPU200aは、オーバーエラーが検出されていないかを判定する。その結果、オーバーエラーが検出されていないと判定した場合にはステップS270-41に処理を移し、オーバーエラーが検出されていると判定した場合にはステップS270-37に処理を移す。
【0378】
(ステップS270-37)
メインCPU200aは、オーバーエラーを示すエラーコード「E5」をセットする。
【0379】
(ステップS270-39)
メインCPU200aは、エラー表示、警告音の要求、ならびに、エラー復帰待ちを行うエラーウェイト処理を実行する。
【0380】
(ステップS270-41)
メインCPU200aは、メダルの払い出しが終了したことを示す払出終了コマンドを送信バッファにセットする。
【0381】
(ステップS280)
メインCPU200aは、遊技状態の移行、有利区間を管理する処理等を行う遊技移行処理を実行する。なお、この遊技移行処理については後述する。
【0382】
図39は、主制御基板200における遊技移行処理(S280)を説明するフローチャートである。
【0383】
(ステップS280-1)
メインCPU200aは、再遊技作動中フラグを取得し、取得した再遊技作動中フラグに基づいて、次遊技が再遊技であることを示すリプレイ表示器(不図示)に対応するビットをオンまたはオフするために停止表示器出力ビットオフ(出力イメージ)をセットし、セットした出力イメージの出力ビットを更新するリプレイ表示器制御処理を実行する。
【0384】
(ステップS280-3)
メインCPU200aは、ボーナス役が入賞した場合に、ボーナス遊技状態を制御するための各種パラメータを設定する役物作動図柄表示処理を実行する。
【0385】
(ステップS281)
メインCPU200aは、演出状態、区間状態ごとのモジュールを実行する状態別モジュール実行処理を実行する。なお、状態別モジュール実行処理では、移行されている演出状態に対応するモジュール(処理)がメインROM200bから読み出されて実行される。以下では、本実施形態の特徴に関係するモジュールについて詳細に説明し、本実施形態の特徴と無関係のモジュールについては説明を省略する。
【0386】
(ステップS280-5)
メインCPU200aは、ボーナス遊技状態において、ボーナス作動中獲得枚数が所定枚数に到達した場合に、遊技状態を非内部遊技状態に移行させるボーナス作動終了処理を実行する。
【0387】
(ステップS280-7)
メインCPU200aは、有利区間を管理する有利区間更新処理を実行する。
【0388】
(ステップS280-9)
メインCPU200aは、次遊技がAT演出状態でないかを判定する。その結果、次遊技がAT演出状態でないと判定した場合にはステップS280-15に処理を移し、次遊技がAT演出状態であると判定した場合にはステップS280-11に処理を移す。
【0389】
(ステップS280-11)
メインCPU200aは、ボーナス遊技状態でないかを判定する。その結果、ボーナス遊技状態でないと判定した場合にはステップS280-15に処理を移し、ボーナス遊技状態であると判定した場合にはステップS280-13に処理を移す。
【0390】
(ステップS280-13)
メインCPU200aは、区間表示器160を点灯させるための有利ランプフラグをオンにセットする。
【0391】
(ステップS280-15)
メインCPU200aは、有利区間に関するコマンドである演出コマンドを送信バッファにセットする演出コマンド設定処理を実行する。
【0392】
(ステップS280-17)
メインCPU200aは、1遊技が終了したことを示す遊技終了コマンドを送信バッファにセットする。
【0393】
(ステップS280-19)
メインCPU200aは、外部信号を出力するための端子板信号出力処理を実行する。
【0394】
(ステップS280-21)
メインCPU200aは、上記ステップS280-7において有利区間を終了させるときに設定される演出用ウェイトタイマが0でないかを判定する。その結果、演出用ウェイトタイマが0でないと判定した場合にはステップS280-21に処理を移し、演出用ウェイトタイマが0であると判定した場合にはステップS280-23に処理を移す。
【0395】
(ステップS280-23)
メインCPU200aは、遊技状態を示す遊技状態コマンドを送信バッファにセットする。
【0396】
(ステップS280-25)
メインCPU200aは、次遊技の開始を示す遊技開始コマンドを送信バッファにセットし、ステップS200に処理を移す。
【0397】
図40は、状態別モジュール実行処理で実行される通常AT演出状態処理(S281)を説明するフローチャートである。通常AT演出状態処理は、演出状態が通常AT演出状態であるときに実行される。
【0398】
(ステップS281-1)
メインCPU200aは、通常AT演出状態における純増枚数に基づいて、通常AT演出状態の最終遊技であるかを判定する。その結果、通常AT演出状態の最終遊技であると判定した場合にはステップS281-3に処理を移し、通常AT演出状態の最終遊技でないと判定した場合には当該通常AT演出状態処理を終了する。
【0399】
(ステップS281-3)
メインCPU200aは、
図16(a)、
図16(b)に示した継続抽選テーブルを参照して継続抽選を行う。
【0400】
(ステップS281-5)
メインCPU200aは、継続抽選に当選したかを判定する。その結果、継続抽選に当選したと判定した場合にはステップS281-7に処理を移し、継続抽選に当選していないと判定した場合にはステップS281-9に処理を移す。
【0401】
(ステップS281-7)
メインCPU200aは、継続フラグをオンにし、ステップS281-17に処理を移す。
【0402】
(ステップS281-9)
メインCPU200aは、有利区間MYカウンタの値が400未満であるかを判定する。その結果、有利区間MYカウンタの値が400未満であると判定した場合にはステップS281-11に処理を移し、有利区間MYカウンタの値が400未満でないと判定した場合にはステップS281-15に処理を移す。
【0403】
(ステップS281-11)
メインCPU200aは、
図16(c)に示した有利継続抽選テーブルを参照して有利継続抽選を行う。
【0404】
(ステップS281-13)
メインCPU200aは、有利継続抽選に当選したかを判定する。その結果、有利継続抽選に当選したと判定した場合にはステップS281-17に処理を移し、有利継続抽選に当選していないと判定した場合にはステップS281-15に処理を移す。
【0405】
(ステップS281-15)
メインCPU200aは、次回ATフラグを非有利待機演出状態に対応する値に設定するとともに、上記ステップS280-7において遊技区間を非有利区間に設定するためのフラグを設定し、当該通常AT演出状態処理を終了する。
【0406】
(ステップS281-17)
メインCPU200aは、次回ATフラグを有利待機演出状態に対応する値に設定し、当該通常AT演出状態処理を終了する。
【0407】
ステップS200からステップS280までの一連の処理を通じて1遊技が実行される。以後は、ステップS200からステップS280までを繰り返すこととなる。
【0408】
次に、主制御基板200における電源断時退避処理およびタイマ割込み処理について説明する。
【0409】
(主制御基板200の電源断時退避処理)
図41は、主制御基板200における電源断時退避処理を説明するフローチャートである。メインCPU200aは、電源断検知回路を監視しており、電源電圧が所定値以下になると、割り込んで電源断時退避処理を実行する。
【0410】
(ステップS300-1)
電源断予告信号が入力されると、メインCPU200aは、レジスタを退避する。
【0411】
(ステップS300-3)
メインCPU200aは、電源断予告信号をチェックする。
【0412】
(ステップS300-5)
メインCPU200aは、電源断予告信号を検出しているかを判定する。その結果、電源断予告信号を検出していると判定した場合にはステップS300-11に処理を移し、電源断予告信号を検出していないと判定した場合にはステップS300-7に処理を移す。
【0413】
(ステップS300-7)
メインCPU200aは、レジスタを復帰させる。
【0414】
(ステップS300-9)
メインCPU200aは、割込みを許可するための処理を行い、当該電源断時退避処理を終了する。
【0415】
(ステップS300-11)
メインCPU200aは、出力ポートの出力を停止する出力ポートクリア処理を実行する。
【0416】
(ステップS300-13)
メインCPU200aは、別領域についての電源断時の退避処理を実行する。
【0417】
(ステップS300-15)
メインCPU200aは、メインRAM300cへのアクセスを禁止するために必要なRAMプロテクト設定処理を実行する。
【0418】
(ステップS300-17)
メインCPU200aは、電源断発生監視時間を設定すべく、ループカウンタのカウンタ値に所定の電源断検出信号検出回数をセットする。
【0419】
(ステップS300-19)
メインCPU200aは、上記ステップS300-17でセットしたループカウンタの値を1減算する。
【0420】
(ステップS300-21)
メインCPU200aは、ループカウンタのカウンタ値が0でないかを判定する。その結果、カウンタ値が0ではないと判定した場合にはステップS300-19に処理を移し、カウンタ値が0であると判定した場合には上記したCPU初期化処理(ステップS1000)に移行する。
【0421】
なお、実際に電源断が生じた場合には、ステップS300-19~ステップS300-21をループしている間にスロットマシン100の稼働が停止する。
【0422】
(主制御基板200のタイマ割込み処理)
図42は、主制御基板200におけるタイマ割込み処理を説明するフローチャートである。主制御基板200には、所定の周期(同時回し参考例では1.49ミリ秒、以下「1.49ms」という)毎にクロックパルスを発生させるリセット用クロックパルス発生回路が設けられている。そして、リセット用クロックパルス発生回路によって、クロックパルスが発生すると、割り込んで、以下のタイマ割込み処理が実行される。
【0423】
(ステップS400-1)
メインCPU200aは、レジスタを退避する。
【0424】
(ステップS400-3)
メインCPU200aは、割込みフラグをクリアする。
【0425】
(ステップS400-5)
メインCPU200aは、各種の入力ポートイメージを読み込み、最新のスイッチ状態を正確に取得するためのポート入力処理を実行する。
【0426】
(ステップS400-7)
メインCPU200aは、セットされた出力イメージを出力ポートに出力し、メインクレジット表示部130、メイン払出表示部132、投入枚数表示器、スタート表示器、ストップスイッチ120a、120b、120cの表示器、リプレイ表示器、区間表示器160を点灯制御するダイナミックポート出力処理を実行する。
【0427】
(ステップS400-9)
メインCPU200aは、タイマ割込み用フェーズを更新する。なお、タイマ割込み用フェーズは、0~3のいずれかであり、ここでは、タイマ割込み用フェーズが0、1、2の場合には1加算され、タイマ割込み用フェーズが3の場合には0に変更される。
【0428】
(ステップS400-11)
メインCPU200aは、送信バッファに格納されたコマンドを副制御基板202に送信するためのサブコマンド送信処理を行う。
【0429】
(ステップS400-13)
メインCPU200aは、ステッピングモータ152を制御するステッピングモータ制御処理を実行する。
【0430】
(ステップS400-15)
メインCPU200aは、メダル払出装置142へ出力する出力イメージを出力する出力ポートイメージ出力処理を実行する。
【0431】
(ステップS400-17)
メインCPU200aは、各種乱数を更新する乱数更新処理を実行する。
【0432】
(ステップS400-19)
メインCPU200aは、エラーに対応する外部信号(外部信号4、5)を外部に出力するためにエラーを検出する不正監視処理を実行する。
【0433】
(ステップS400-21)
メインCPU200aは、上記ステップS400-9で更新したタイマ割込み処理用フェーズに対応するモジュール(サブルーチン)を実行する。ここで、タイマ割込み処理用フェーズは0~3のいずれかに設定されており、タイマ割込み処理用フェーズ0~3それぞれに対応するモジュールが1つずつ設けられているため(合計4つ)、1つのモジュールは、タイマ割込み処理の4回に1回(5.96ms毎に)実行されることになる。例えば、各種タイマを減算する時間監視処理を実行するモジュールが1つのタイマ割込み処理用フェーズに対応付けられている。
【0434】
(ステップS400-23)
メインCPU200aは、試験信号を外部に出力する試験信号出力処理を実行する。
【0435】
(ステップS400-25)
メインCPU200aは、各種の入力ポートイメージを読み込み、最新のスイッチ状態を正確に取得するためのポート入力処理を実行する。
【0436】
(ステップS400-27)
メインCPU200aは、レジスタを復帰する。
【0437】
(ステップS400-29)
メインCPU300aは、割込みを許可し、当該タイマ割込み処理を終了する。
【0438】
<主制御基板のCPU周辺の構成>
図43は、メインCPU200a周辺の電気的な接続を説明するための図である。メインCPU200aは、CPUコア700とバスコントローラ702とを含む。CPUコア700は、BC端子から出力されるバス制御信号(Bus Cont)を通じてバスコントローラ702を制御し、メインROM200b、メインRAM200c、もしくは、入出力部704からデータを読み出し、または、メインRAM200cにデータを書き込む。なお、ここでは、メインCPU200aとして、Z80系CPUをベースとするエルイーテック(LETech)社が販売するマイクロプロセッサを用いている。
【0439】
例えば、メインROM200b、メインRAM200c、または、入出力部704からデータを読み出す場合、バスコントローラ702は、16ビットのアドレス(A[16])信号を出力し、デコーダ706a、706b、706cを通じてメインROM200b、メインRAM200c、または、入出力部704のいずれかを特定するとともに、リード(RD)信号を制御して、メインROM200b、メインRAM200c、または、入出力部704からデータ(D[8])信号を読み出す。また、メインRAM200c、または、入出力部704にデータを書き込む場合、バスコントローラ702は、アドレス(A[16])信号およびデータ(D[8])信号を出力し、デコーダ706b、706cを通じてメインRAM200c、または、入出力部704のいずれかを特定するとともに、ライト(WR)信号を制御して、メインRAM200c、または、入出力部704にデータ(D[8])信号を書き込む。
【0440】
ここでは、後述するように、入出力部704のアドレス空間を、メインROM200bおよびメインRAM200cのアドレス空間と一体化している。したがって、従来、メモリとI/Oのいずれをアクセスするかを特定するための信号を出力するメモリリクエスト(MREQ)端子およびI/Oリクエスト(IORQ)端子を設けていない。かかる2端子を任意の他の信号に割り当て直すことで、プログラム開発の自由度を高めることができる。
【0441】
また、CPUコア700には、割込処理の開始トリガとなる割り込み/待ち(INT/WAIT)信号、最優先で割込処理を実行できるマスク不可割込(NMI)信号、バス信号をハイインピーダンスに遷移可能なバスリクエスト(BUSREQ)信号等の外部信号も入力される。
【0442】
図44は、CPUコア700の内部構成を示したブロック図である。CPUコア700は、外部入力ユニット710、状態制御ユニット712、中央制御ユニット714、レジスタユニット716、算術論理演算装置(ALU)718を含む。外部入力ユニット710は、外部信号を受信し、その外部信号に基づいた制御情報を状態制御ユニット712および中央制御ユニット714に出力する。
【0443】
状態制御ユニット712は、内部状態(RESET、命令フェッチ、命令デコーダ、演算、メモリロード、メモリストア、HALT等)を管理および遷移させてCPUコア700の動作状態を決定するとともに、その内部状態に基づいた制御情報を中央制御ユニット714に出力する。
【0444】
中央制御ユニット714は、バスコントローラ702を経由して入力された入力データ(DI[8])からオペコード(命令)を抽出し、命令デコーダによってデコードしたコマンドに基づいてALU718を制御する。また、中央制御ユニット714は、デコードしたコマンドによりレジスタユニット716の各レジスタから必要な情報を取得したり、各レジスタを更新したりする。
【0445】
レジスタユニット716は、セレクタポート722a、722b、722c、入力側バンクセレクタ724、第1レジスタバンク726、第2レジスタバンク728、出力側バンクセレクタ730、アドレスポート732、個別レジスタ734を含む。なお、個別レジスタ734には、次に実行すべきプログラムのアドレスを示す16ビットのプログラムカウンタ(PC)、割込モード時に使用される8ビットのインタラプト(I)レジスタ、オペコードフェッチサイクルを計数する8ビットのリフレッシュ(R)レジスタ、割込の許可/禁止を制御する8ビットの割込許可(IFF)レジスタが含まれる。
【0446】
また、レジスタユニット716には、大役抽選に係る種々の乱数値(大当たり決定乱数、当たり図柄乱数、リーチグループ決定乱数、リーチモード決定乱数、変動パターン乱数、当たり決定乱数)を取得するための乱数発生器(図示せず)が対応付け、入力ポート(FE73h~FE9Ch)を介してラッチされた乱数値が取得される。
【0447】
乱数発生器は、システムクロック(外部入力を2分周したクロック)で動作し、所定の最大値未満の乱数を発生する。なお、乱数発生器は、乱数の最大値を設定可能な乱数発生器である最大値設定乱数発生器として、16ビットの最大値を設定可能な乱数発生が4チャンネル、8ビットの最大値を設定可能な乱数発生が8チャンネル準備されている。ここで、16ビットの最大値設定乱数発生器は、乱数更新周期が32~47クロックの範囲で選択でき、最大値の設定範囲が256~65535の範囲で設定できる。また、8ビットの最大値設定乱数発生器は、乱数更新周期が16~31クロックの範囲で選択でき、最大値の設定範囲が4チャンネルで16~255の範囲で設定でき、他の4チャンネルで64~255の範囲で設定できる。また、乱数の最大値が固定された乱数発生器である最大値固定乱数発生器として、16ビットの最大値を設定可能な乱数発生が4チャンネル、8ビットの最大値を設定可能な乱数発生が8チャンネル準備されている。ここで、16ビットの最大値固定乱数発生器は、乱数更新周期が1クロックに、最大値が65535に固定されている。また、8ビットの最大値固定乱数発生器は、乱数更新周期が1クロックに、最大値が255に固定されている。
【0448】
なお、乱数の種類が足りない場合、ハードウェア乱数生成部(乱数発生器)から取得した乱数値に、プログラム内において所定の数値を乗じ、また、除算することで他の乱数を生成する(ソフトウェア乱数生成部)ことも可能である。
【0449】
図45は、レジスタの構成を説明した図である。第1レジスタバンク726および第2レジスタバンク728は、いずれも、8ビットのレジスタ(Q、U、A、F、B、C、D、E、H、L)と、16ビットのレジスタ(IX、IY、SP)が設けられる。また、第1レジスタバンク726および第2レジスタバンク728のレジスタには、表レジスタと、裏レジスタとがある。メインCPU200aは、Fレジスタにおけるレジスタバンク指定レジスタRBの示すレジスタバンクの表レジスタのみにアクセスでき、裏レジスタにはアクセスできない。
【0450】
図45に示すレジスタのうち、Qレジスタは、遊技機用拡張仕様の8ビット専用レジスタである。かかるQレジスタはF0h固定で、F000h~F0FFhのメインRAM200cのアクセスに利用する。Uレジスタは、遊技機用拡張仕様の8ビット専用レジスタである。かかるUレジスタはFEh固定で、FE00h~FEFFhの入出力部704に接続された内蔵デバイス(タイマ、乱数発生器、外部入出力回路等へのアクセスに利用する。Aレジスタは、演算処理やデータ転送に使う8ビットのアキュムレータである。Fレジスタは、各種演算結果を保持する8ビットのフラグレジスタである。ここで、Fレジスタの各ビットは、
図45に示すように、最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Least Significant Bit)にかけて、Sは、演算結果が負のとき1にセットされるサインフラグであり、Zは、演算の結果、全ビットが0のとき1にセットされるゼロフラグ(第1ゼロフラグ)であり、TZは、データ転送命令(LD;ロード)の実行により、全ビットが0のとき1にセットされる(値の変わる)遊技機用拡張仕様の特定ビットフラグ(第2ゼロフラグ)であり、ティーゼットフラグと呼ぶ場合もある。Hは、プログラマーが関与できないハーフキャリーフラグであり、RBは、現在のレジスタバンク(第1レジスタバンク726=0、第2レジスタバンク728=1)を示すレジスタバンクモニタであり、P/Vは、パリティオーバーフローフラグであり、Nは、プログラマーが関与できない加減算フラグであり、Cは、演算の結果、桁上げまたはボロー発生時に1がセットされるキャリーフラグである。なお、Fレジスタは、AレジスタとペアレジスタAFを構成する。
【0451】
また、Bレジスタ、Cレジスタ、Dレジスタ、Eレジスタ、Hレジスタ、Lレジスタは、8ビットの汎用レジスタであり、それぞれ予め組み合わせが定められている16ビットのペアレジスタBC、DE、HLを構成する。IXレジスタ、IYレジスタは、インデックスアドレッシング用16ビット専用レジスタである。SP(スタックポインタ)レジスタは、16ビットであり、スタックポインタとなるアドレスを格納する。Q’レジスタ、A’レジスタ、F’レジスタ、B’レジスタ、C’レジスタ、D’レジスタ、E’レジスタ、H’レジスタ、L’レジスタ、IX’レジスタ、IY’レジスタは、Qレジスタ、Aレジスタ、Fレジスタ、Bレジスタ、Cレジスタ、Dレジスタ、Eレジスタ、Hレジスタ、Lレジスタ、IXレジスタ、IYレジスタの表レジスタとの交換命令によりデータ(内容)交換可能な裏レジスタであり、A’レジスタとF’レジスタでペアレジスタAF’を構成し、B’レジスタとC’レジスタでペアレジスタBC’を構成し、D’レジスタとE’レジスタでペアレジスタDE’を構成し、H’レジスタとL’レジスタでペアレジスタHL’を構成する。裏レジスタは、表レジスタと、入れ替え命令などによって互いにどちらかのレジスタを選択して入れ替えて使用することができる。一方、レジスタU、レジスタSPについては、裏レジスタを持たない単一のレジスタである。このように、裏レジスタは、割込処理の発生時に表レジスタのスタック領域として機能する。
【0452】
ところで、上述したように、主制御基板200においては、メインCPU200aが、メインROM200bに格納されたプログラムに基づきメインRAM200cと協働して遊技の進行を制御する。これらの機能部を実行するためのプログラムは、メインROM200bおよびメインRAM200cの所定の領域(使用領域)に配される。
【0453】
図46は、メモリマップを示す説明図である。メインROM200bには、0000h~3FFFh(12kbyte)のメモリ空間が割り当てられ、メインRAM200cには、F000h~F3FFh(1kbyte)のメモリ空間が割り当てられ、入出力部704には、FE00h~FEFFh(256byte)のメモリ空間が割り当てられている。なお、プログラムの命令コードはアセンブラ言語で記述されている。ここで、プログラムは、命令コードで構成されたものであり、コンピュータに読み出され、データやワークエリアと協働して所定の処理を実現することができる。
【0454】
メインROM200bの0000h~1DF3hのメモリ空間には使用領域が割り当てられている。使用領域は、遊技の進行を制御する遊技制御処理を実行するためのプログラムやデータを格納する領域である。具体的に、0000h~11FFh(4.5kbyte)に制限されたメモリ空間(制御領域)に、初期化手段300、ベット手段302、当選種別抽選手段304、リール制御手段306、判定手段308、払出制御手段310、遊技状態制御手段312、演出状態制御手段314、コマンド送信手段316を機能させて遊技の進行を制御する遊技制御処理を実行するためのプログラムの命令コードが格納され、1200h~1DF3h(3.0kbyte)に制限されたメモリ空間(データ領域)に、遊技制御処理のプログラムに用いられるデータが格納されている。また、1E00h~1FFFhのメモリ空間にはコメント領域が割り当てられ、3FC0h~3FFFhのメモリ空間にはプログラム管理領域が割り当てられている。また、2000h~3FBFhのメモリ空間には別領域(使用外領域)が割り当てられている。別領域は、後述するように、使用領域に格納することが定められていないプログラムやデータを格納する領域である。具体的に、2000h~3FBFhのメモリ空間には、遊技の進行に影響を及ぼさない、遊技機用試験処理やセキュリティ関連処理のうち一部または全部の処理を遂行するプログラムの命令コードおよびプログラムデータが格納されている。遊技機用試験処理は、回胴式遊技機用試験機の接続仕様書(第四版)に記載されているスロットマシン400の試験処理である。セキュリティ関連処理は、第三者の不正防止や不具合発見を目的とした異常状態を特定する処理であり、例えば、上述したバックアップフラグの判定やチェックサムの実行も含まれる。なお、別領域に記憶容量の制限はなく、
図46の例では、使用領域、コメント領域、および、プログラム管理領域以外の記憶領域に、自由に割り当てることができる。
【0455】
上記のように、メインCPU200aは、遊技制御処理のみならず、遊技機用試験処理、セキュリティ関連処理も遂行する場合がある。しかし、使用領域の記憶容量は予め定められており、例えば、
図46に示したように、制御領域が4.5kbyteに制限され、データ領域が3.0kbyteに制限されている。したがって、遊技制御処理のみならず、遊技機用試験処理、セキュリティ関連処理のプログラムやデータまでも使用領域に配すると、その分、遊技制御処理を行うための記憶領域が制限されてしまう。ここで、遊技制御処理を実行するためのプログラム(使用プログラム)やデータは、必ず使用領域に格納しなければならないが、遊技制御処理以外の遊技の進行に影響を及ぼさない(直接関係のない)処理(遊技機用試験処理、セキュリティ関連処理等)を実行するためのプログラム(別プログラム)やデータは使用領域および別領域のいずれにも格納することができる。そこで、セキュリティ関連処理に該当する処理であるバックアップフラグの判定処理やチェックサムの実行処理を実行するためのプログラムやデータの少なくとも一部を、使用領域とは異なる(使用領域以外の)記憶領域のうちの一部である別領域に記述している。
【0456】
このように使用領域で遂行される処理(ここでは、遊技制御処理)と、必ずしも使用領域で行わなくてよい処理(ここでは、セキュリティ関連処理)とが混在している場合には、遊技制御処理を実行するためのプログラム(使用プログラム)やデータを使用領域に格納し、使用領域で行わなくてよい、遊技制御処理以外の遊技の進行に影響を及ぼさない処理(セキュリティ関連処理)を実行するためのプログラム(別プログラム)やデータを別領域に格納することが望ましい。このように記憶領域を複数に区分することで、別領域に移動させたプログラムの分だけ使用領域の記憶領域(容量)に余裕が生じる。したがって、その分、使用領域を遊技制御処理(使用プログラム)に割り当てることが可能となる。
【0457】
ただし、上記のように記憶領域を、使用領域、別領域とで役割分担した場合においても、遊技機の公正さは担保されなくてはならない。そこで、遊技機の公正さを担保しつつ、使用領域と別領域とで適切に役割分担するために、以下の(1)~(6)の条件を規定する。
【0458】
条件(1)、別領域に配置するプログラムについては、遊技機の試験に必要な信号の出力(遊技機用試験処理)および不正防止(セキュリティ関連処理)を目的として使用され、遊技の公正を害さない(損なわない)ものであること。条件(2)、使用領域と別領域の制御領域およびデータ領域については、それぞれを明示的に区別された領域に配置すること。条件(3)、別領域に配置するプログラム(別プログラム)は、使用領域のプログラム(使用プログラム)から静的に呼び出された上で実行されること。また、その際のプログラムリストにおいては、呼び出し先アドレスが明らかに記載されていること。条件(4)、別領域に配置するプログラムは機能ごとにモジュール化し、呼び出された際には、使用領域で利用している全レジスタの内容を保護すること。条件(5)、使用領域または別領域から互いの領域にあるRAMへのアクセスは参照のみ可能とし、更新は不可とすること。条件(6)、別領域の制御領域から使用領域の制御領域にあるサブルーチンを呼び出すことは不可とすること。なお、使用領域に割込処理を行うサブルーチンを設けることから、別領域の制御領域を使用する際には、割込禁止にする必要が生じる。なお、遊技制御処理を適切に遂行するために、割込禁止を行ってから割込禁止を解除するまでの時間は、遊技制御処理における割込処理の間隔(例えば1.49msec)以内とならなければならない。したがって、別領域の制御領域を使用するサブルーチンを呼び出す場合、その1回の呼び出しにかかる総時間は、遊技制御処理の割込処理の間隔以内となるように設定することとなる。
【0459】
また、メインRAM200cのF000h~F1FFhのメモリ空間には使用領域が割り当てられている。具体的に、F000h~F13Fhのメモリ空間には、上記遊技制御処理のワークエリアが割り当てられ、タイマ、カウンタ、フラグ等の変数管理に用いられる。F1C0h~F1FFhのメモリ空間には、上記遊技制御処理のスタック領域が割り当てられている。また、メインRAM200cのF200h~F3FFhのメモリ空間には別領域が割り当てられている。具体的に、F210h~F22Fhのメモリ空間には、上記セキュリティ関連処理のうち一部または全部の処理のワークエリアが割り当てられ、タイマ、カウンタ、フラグ等の変数管理に用いられる。F230h~F246hのメモリ空間には、上記セキュリティ関連処理のうち一部または全部の処理のスタック領域が割り当てられている。
【0460】
また、FE00h~FEFFhのメモリ空間には入出力部704が割り当てられている。従来、入出力部704に対応するデバイスにアクセスするため、メモリ空間と独立して256バイトのI/O空間が設けられていた。これに対し、本実施形態では、MREQ、IORQの信号をなくし、メモリ、入出力部704へのアクセスを共通してRD、WR信号で行うこととした。また、入出力部704に接続されたデバイスにアクセスするための上位8ビットのアドレスを指定するハードウェアとしてのUレジスタを設け、ここに予め8ビットの上位アドレスを指定しておく。これにより、メモリ空間とは独立して設けられていたI/O空間を、メモリ空間に統合して一つのアドレス空間とし、IN命令、OUT命令を実行するとメモリ空間に割り当てられた入出力部704に対し、上位8ビットをUレジスタで指定し下位8ビットはIN命令、OUT命令のオペランドで指定した下位8ビットを用いてアクセス可能とした。
【0461】
本実施形態では、LDQ命令ではQレジスタを用いてメモリ空間(主にデータエリア、ワークエリア)をアクセスし、IN命令、OUT命令ではUレジスタを用いてデバイス(タイマ、乱数発生器、外部入出力回路等)のI/Oをアクセスするようにプログラムを記述できるようになる。かかる構成により、設計時にプログラムを把握し易くなる。また、メモリおよびI/Oを、16ビットのアドレスで特定してアクセスしていたものを下位8ビットのオペランドでアクセスすることが可能になり、プログラム容量を圧縮することができる。さらにQレジスタ、Q’レジスタ、Uレジスタと複数の上位指定レジスタを持つことにより、上位レジスタが1つだけの時よりも上位レジスタの使い回しによる入れ替えの回数が少なくなり、プログラム容量をさらに圧縮することができる。
【0462】
上記の例ではIN命令、OUT命令でI/O空間に対応するメモリ空間にアクセスしたが、IN命令、OUT命令で直接メモリ空間にアクセスしてもよい。このことは、例えばメモリ上の3つの256バイト領域をアクセスする場合にQレジスタ、Q’レジスタ、Uレジスタにそれぞれの上位8ビットを指定しておき、LDQ命令とIN命令OUT命令でそれぞれの領域をアクセスすることで実現できる。
【0463】
以下、上述した各処理(モジュール)について、それを実現するための具体的な命令コード(コマンド群)を説明する。ここでは、特に、汎用抽選処理と変数初期化処理を挙げて説明する。
【0464】
(汎用抽選処理)
汎用抽選処理は、汎用設定処理を行うCOM_PREモジュールと、戻りアドレス確認処理を実行するCOM_CHKモジュールと、COM_CHKモジュールを呼び出すRAD_CHKモジュールと、出玉に関連する汎用抽選に関する具体的な処理を実行するCOM_LOTモジュールとによって遂行される。このうち、COM_PREモジュールは、汎用モジュールである。汎用モジュールは、プログラムを実行する上で用いられる同一の処理をサブルーチン化したもので、特に他のモジュールから呼び出される頻度が高いモジュールを示す。汎用モジュールは、
図46で示したメモリマップ上の最も低いアドレス0000H近傍に配置されることが多い。これは、呼び出される頻度の高い汎用モジュールを0000H近傍に配置することで、呼び出しに用いられるコマンド「CALL」のみならず、他のコマンド「RST」を利用して呼び出せるからである。なお、ここでは、COM_PREモジュールをメモリマップ上の0028Hに配置する例を挙げて説明する。
【0465】
ここで、コマンド「RST」は、メモリマップのうち0000H近傍の低い数値のアドレスであり、8バイトずつ離れた複数のアドレス(0008H、0010H、0018H、0020H、0028H、0030H、0038H、0040H)のいずれかを呼び出すことができるコマンドである。コマンド「RST」は、呼び出しに用いられる通常のコマンド「CALL」と実行サイクルは「4」で等しいが、通常のコマンド「CALL」のコマンドサイズが「3」であるのに対し、コマンド「RST」のコマンドサイズは「1」である。したがって、コマンド「RST」を用いることでプログラムの短縮化を図ることができる。
【0466】
メインCPU200aは、メインROM200bからプログラムを読み出し、読み出したプログラムを遂行し、任意の処理において、サブルーチンとしてCOM_PREモジュールを呼び出し、COM_PREモジュール、RAD_CHKモジュール、COM_CHKモジュール、COM_LOTモジュールを遂行する。こうして、汎用抽選処理が実行される。
【0467】
図47は、COM_PREモジュール、RAD_CHKモジュール、COM_CHKモジュール、COM_LOTモジュールの具体的な処理を示したフローチャートである。かかる図におけるステップSの数値は、本図の説明においてのみ用いることとする。
【0468】
メインCPU200aは、
図47(a)のように、サブルーチンとしてCOM_PREモジュールを呼び出すと、スタックポインタ値をDEレジスタに一旦復帰させ(S1)、即座にDEレジスタの内容をスタック領域に退避させる(S2)。こうして、スタック領域の状態を維持しつつ、スタックポインタの値、すなわち、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持することができる。そして、メインCPU200aは、汎用抽選オフセット選択テーブルのアドレス(比較すべき戻りアドレスの初期値)をHLレジスタに設定し(S3)、RAD_CHKモジュールに移動する(S4)。
【0469】
メインCPU200aは、RAD_CHKモジュールにおいて、
図47(b)のように、参照アドレスを取得するための共通モジュールであるCOM_CHKモジュールを呼び出す(S5)。メインCPU200aは、COM_CHKモジュールにおいて、
図47(c)のように、今回の戻りアドレスとHLレジスタの値(比較すべき戻りアドレス)とを比較し(S6)、後程COM_LOTモジュールによって参照されるテーブルのアドレスである参照アドレスを設定するためにHLレジスタを2だけインクリメントする(S7)。ここで、ステップS6で比較した結果に基づき、今回の戻りアドレスがHLレジスタの値と一致しているか否か判定し(S8)、一致していなければ(S8におけるNO)、比較すべき戻りアドレスを設定するためにHLレジスタを2だけインクリメントし(S9)、ステップS6に戻って、今回の戻りアドレスとHLレジスタの値とが一致するまで比較処理を繰り返す。また、今回の戻りアドレスがHLレジスタの値と一致していれば(S8におけるYES)、参照アドレスを取得し(S10)、当該COM_CHKモジュールを終了して1段上のルーチン(RAD_CHKモジュール)に戻る(S11)。
【0470】
メインCPU200aは、RAD_CHKモジュールから、
図47(d)に示したCOM_LOTモジュールに移動すると、参照アドレスよって特定される値に基づいて汎用抽選に関する具体的な処理を実行し、COM_PREモジュールを呼び出したルーチンに戻る(S12)。
【0471】
図48は、COM_PREモジュール、RAD_CHKモジュール、COM_CHKモジュール、COM_LOTモジュールを実現するためのコマンドの一例を説明するための説明図である。このうち、
図48(a)は、COM_PREモジュールのコマンド群を示し、
図48(b)は、RAD_CHKモジュールおよびCOM_LOTモジュールのコマンド群を示し、
図48(c)は、COM_CHKモジュールのコマンド群を示す。
図47で示したフローチャートは、例えば、
図48に示したプログラムによって実現される。
【0472】
図48(a)の1行目のコマンド「ORG 0028H」によって、COM_PREモジュールの開始位置が0028Hに設定される。2行目の指標「COM_PRE:」は、当該COM_PREモジュールの先頭アドレスを示す。3行目のコマンド「POP DE」によってスタック領域に退避されていたデータがDEレジスタに復帰される。かかる3行目のコマンドが
図47(a)のステップS1に対応する。4行目のコマンド「PUSH DE」によって、DEレジスタの値がスタック領域に退避される。かかる4行目のコマンドが
図47(a)のステップS2に対応する。こうして、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持する。5行目のコマンド「LD HL,T_SEL_CLO」によって、汎用抽選オフセット選択テーブルのアドレス(比較すべき戻りアドレスの初期値)がHLレジスタに格納される。かかる5行目のコマンドが
図47(a)のステップS3に対応する。6行目のコマンド「JP RAD_CHK」によって、RAD_CHKモジュールの先頭アドレスを示す指標「RAD_CHK:」に移動する。かかる6行目のコマンドが
図47(a)のステップS4に対応する。
【0473】
なお、ここで、COM_PREモジュールからRAD_CHKモジュールに移動しているのは、以下の理由による。すなわち、コマンド「RST」で呼び出される汎用モジュールには、その数と占有する領域に制限があり(例えば、数は8個、領域は8H分)、有効利用するためには、その汎用モジュールのコマンド群を8H以内に収めなければならない。このように、汎用モジュールでは、最低限必要なコマンドのみを実行し、他の領域に移動して残りの処理を行う。ここでは、一旦、コマンド「RST」によってCOM_PREモジュールを呼び出し、コマンド「JP RAD_CHK」によって、RAD_CHKモジュールに移動し、RAD_CHKモジュール以降の処理において汎用抽選処理に必要な残りの処理を実行する。
【0474】
図48(b)の1行目の指標「RAD_CHK:」は、当該RAD_CHKモジュールの先頭アドレスを示す。2行目のコマンド「CALLF COM_CHK」によって、サブルーチンとしてCOM_CHKモジュールが呼び出される。かかる2行目のコマンドが
図47(b)のステップS5に対応する。3行目の指標「COM_LOT:」は、当該COM_LOTモジュールの先頭アドレスを示す。そして、汎用抽選に関する具体的な処理が実行され、4行目のコマンド「RET」によって、当該COM_LOTモジュールを終了し、COM_PREモジュールを呼び出したルーチンに戻る。かかる4行目のコマンドが、
図47(d)のステップS12に対応する。
【0475】
図48(c)の1行目の指標「COM_CHK:」は、当該COM_CHKモジュールの先頭アドレスを示す。2行目のコマンド「CP (HL),DE」によって、HLレジスタで示されるアドレスに格納された値(比較すべき戻りアドレス)と、DEレジスタに格納された値(今回の戻りアドレス)とを比較する。
【0476】
図49は、コマンド「CP (HL),DE」の処理を説明するための説明図である。仮に、
図49(a)に示すような処理における1行目のコマンド「RST COM_PRE」によって、
図48(a)に示したCOM_PREモジュールが呼び出されたとする。すると、今回の戻りアドレスは、その次のコマンドのアドレスとなる。したがって、
図48(c)の2行目のコマンド「CP (HL),DE」を実行する時点のDEレジスタには、
図49(a)の1行目のコマンド「RST COM_PRE」の次のコマンドのアドレスが設定されている。
【0477】
一方、
図49(b)に示す汎用抽選オフセットテーブルでは、比較すべき戻りアドレス(2バイト)と参照アドレス(2バイト)との組み合わせが、4バイト毎に複数連続して配置されている。したがって、
図48(c)の2行目のコマンド「CP (HL),DE」を実行する時点のHLレジスタには、初回、指標「T_SEL_CLO:」のアドレスが保持されている。ここで、コマンド「CP (HL),DE」を実行すると、HLレジスタに示されるアドレス(「T_SEL_CLO」)に格納された値、すなわち、「@ADT_HED_FLZ」(比較すべき戻りアドレス)と、DEレジスタの値、すなわち、
図49(a)の1行目のコマンド「RST COM_PRE」の次のコマンドのアドレス(今回の戻りアドレス)とが比較される。ここで、HLレジスタに示されるアドレス(「T_SEL_CLO」)に格納された値である「@ADT_HED_FLZ」は、
図49(a)の2行目の定義「@ADT_HED_FLZ EQU $」により、
図49(a)の1行目のコマンド「RST COM_PRE」の次のコマンドのアドレスを複製している。したがって、本例では、(HLレジスタに示されるアドレスに格納された値)=(DEレジスタの値)となり、コマンド「CP (HL),DE」を実行した結果、ゼロフラグに1が立つことになる。かかる
図48(c)の2行目のコマンドが
図47(c)のステップS6に対応する。
【0478】
図48(c)に戻って、3行目のコマンド「INC HL」によって、HLレジスタの値を1加算する。また、4行目のコマンド「INC HL」によって、HLレジスタの値をさらに1加算する。こうして、HLレジスタが2だけインクリメントされる。これは、
図49(b)を参照して理解できるように、偶数行目(例えば2行目)の比較すべき戻りアドレスを奇数行目(例えば3行目)の参照アドレスに変更することとなる。かかる
図48(c)の3、4行目のコマンドが
図47(c)のステップS7に対応する。
【0479】
図48(c)の5行目のコマンド「JR Z,COM_CHK01」によって、2行目のコマンド「CP (HL),DE」の結果がゼロフラグ=1(Z)であれば、9行目の指標「COM_CHK01:」に移動する。例えば、
図49の例によれば、(HLレジスタに示されるアドレス(「T_SEL_CLO」)に格納された値である「@ADT_HED_FLZ」)=(DEレジスタの値である今回の戻り値)となるので、初回からゼロフラグが1となり、指標「COM_CHK01:」に移動することになる。かかる5行目のコマンドが
図47(c)のステップS8に対応する。
【0480】
仮に、
図48(c)の5行目のコマンド「JR Z,COM_CHK01」の結果がゼロフラグ=1ではなく、5行目のコマンド「JR Z,COM_CHK01」によって移動しなかった場合、
図48(c)の6行目のコマンド「INC HL」によって、HLレジスタの値を1加算する。また、7行目のコマンド「INC HL」によって、HLレジスタの値をさらに1加算する。こうして、HLレジスタが2だけインクリメントされる。これは、
図49(b)を参照して理解できるように、奇数行目(例えば3行目)の参照アドレスを偶数行目(例えば4行目)の比較すべき戻りアドレスに変更すること、すなわち、比較の対象を、比較すべき戻りアドレス(2バイト)と、参照アドレス(2バイト)との次の組み合わせに変更することとなる。なお、比較すべき戻りアドレスと、参照アドレスとの次の組み合わせは、例えば、50組準備される。
図48(c)の8行目のコマンド「JR COM_CHK」によって、1行目の指標「COM_CHK:」に移動する。かかる6~8行目のコマンドが
図47(c)のステップS9に対応する。
【0481】
一方、
図48(c)の5行目のコマンド「JR Z,COM_CHK01」の結果がゼロフラグ=1であれば、指標「COM_CHK01:」に移動し、10行目のコマンド「LDIN DE,(HL)」によってHLレジスタで示されるアドレスに格納された2バイト長の値(参照アドレス)をDEレジスタに読み出し(ロードし)、HLレジスタの値を2加算する。そして、11行目のコマンド「LD HL,DE」によってDEレジスタに読み出した参照アドレスをHLレジスタに設定する。こうしてHLレジスタに参照アドレス(
図49の例では「T_HED_FLZ」)を設定することができる。かかる10、11行目のコマンドが、
図47(c)のステップS10に対応する。そして、12行目のコマンド「RET」によって、当該COM_CHKモジュールが終了し、1段上のルーチンに戻る。かかる12行目のコマンドが、
図47(c)のステップS11に対応する。
【0482】
(変数初期化処理)
変数初期化処理は、汎用設定処理を行うCOM_PRE2モジュールと、戻りアドレス確認処理を実行するCOM_CHKモジュールと、COM_CHKモジュールを呼び出すRAD_CHK2モジュールと、テーブル内容セット前処理を実行するTABLSETモジュールとによって遂行される。かかる変数初期化処理は、例えば、
図13に示した設定値切り替え処理の設定値切り替え時データテーブルセット処理S120-5や、
図17に示した遊技メダル投入処理210のエラーウェイト処理S210-11等、様々なモジュールから呼び出される。また、変数初期化処理のうち、COM_PRE2モジュールは、COM_PREモジュール同様、汎用モジュールである。なお、ここでは、COM_PRE2モジュールをメモリマップ上の0030Hに配置する例を挙げて説明する。
【0483】
メインCPU200aは、メインROM200bからプログラムを読み出し、読み出したプログラムを遂行し、任意の処理において、サブルーチンとしてCOM_PRE2モジュールを呼び出し、COM_PRE2モジュール、RAD_CHK2モジュール、COM_CHKモジュール、TABLSETモジュールを遂行する。ここでは、こうして、メインRAM200cの変数に所定の値(初期値)が設定される。
【0484】
図50は、COM_PRE2モジュール、RAD_CHK2モジュール、COM_CHKモジュール、TABLSETモジュールの具体的な処理を示したフローチャートである。かかる図におけるステップSの数値は、本図の説明においてのみ用いることとする。
【0485】
メインCPU200aは、
図50(a)のように、サブルーチンとしてCOM_PRE2モジュールを呼び出すと、スタックポインタ値をDEレジスタに一旦復帰させ(S1)、即座にDEレジスタの内容をスタック領域に退避させる(S2)。こうして、スタック領域の状態を維持しつつ、スタックポインタの値、すなわち、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持することができる。そして、メインCPU200aは、汎用抽選オフセット選択テーブル2のアドレス(比較すべき戻りアドレスの初期値)をHLレジスタに設定し(S3)、RAD_CHK2モジュールに移動する(S4)。
【0486】
メインCPU200aは、RAD_CHK2モジュールにおいて、
図50(b)のように、参照アドレスを取得するための共通モジュールであるCOM_CHKモジュールを呼び出す(S5)。メインCPU200aは、COM_CHKモジュールにおいて、
図50(c)のように、ステップS6~S11を遂行することで、後程TABLSETモジュールによって参照されるテーブルのアドレスである参照アドレスを取得する。かかる処理は、
図47(c)のステップS6~S11として既に説明したので、ここではその詳細な説明を省略する。参照アドレスが取得されると、当該COM_CHKモジュールを終了して1段上のルーチン(RAD_CHK2モジュール)に戻る。
【0487】
メインCPU200aは、TABLSETモジュールにおいて、
図50(d)のように、HLレジスタで示されるアドレスに格納された1バイト値をBレジスタに読み出す(S12)。かかる1バイト値はデータ数を示す。続いて、メインCPU200aは、HLレジスタに「1」を加えた値で示されるアドレスに格納された値で特定されるアドレスに、HLレジスタに「2」を加えた値で示されるアドレスに格納された値を転送し、HLレジスタの値に「2」を加えて次に転送するアドレスを設定する(S13)。続いて、メインCPU200aは、Bレジスタの値をデクリメント(「1」減算)し、デクリメントした結果が0であるか否か判定する(S14)。ここで、デクリメントした結果が0でなければ(S14におけるNO)、ステップS13からの処理を繰り返し、デクリメントした結果が0であれば(S14におけるYES)、当該TABLSETモジュールを終了して1段上のルーチンに戻る(S15)。
【0488】
図51は、COM_PRE2モジュール、RAD_CHK2モジュール、COM_CHKモジュール、TABLSETモジュールを実現するためのコマンドの一例を説明するための説明図である。このうち、
図51(a)は、COM_PRE2モジュールのコマンド群を示し、
図51(b)は、RAD_CHK2モジュールおよびTABLSETモジュールのコマンド群を示し、
図51(c)は、COM_CHKモジュールのコマンド群を示し、
図51(d)は、メインROM200bのプログラムデータにおける1バイトデータ群の配置を示し、
図51(e)は、メインRAM200cのワークエリアにおける1バイトデータ群の配置を示す。
図50で示したフローチャートは、例えば、
図51に示したプログラムによって実現される。
【0489】
図51(a)の1行目のコマンド「ORG 0030H」によって、COM_PRE2モジュールの開始位置が0030Hに設定される。2行目の指標「COM_PRE2:」は、当該COM_PRE2モジュールの先頭アドレスを示す。3行目のコマンド「POP DE」によってスタック領域に退避されていたデータがDEレジスタに復帰される。かかる3行目のコマンドが
図50(a)のステップS1に対応する。4行目のコマンド「PUSH DE」によって、DEレジスタの値がスタック領域に退避される。かかる4行目のコマンドが
図50(a)のステップS2に対応する。こうして、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持する。5行目のコマンド「LD HL,T_SEL_CLO_2」によって、汎用抽選オフセット選択テーブル2のアドレス(比較すべき戻りアドレスの初期値)がHLレジスタに格納される。かかる5行目のコマンドが
図50(a)のステップS3に対応する。6行目のコマンド「JP RAD_CHK2」によって、RAD_CHK2モジュールの先頭アドレスを示す指標「RAD_CHK2:」に移動する。かかる6行目のコマンドが
図50(a)のステップS4に対応する。
【0490】
なお、ここで、COM_PRE2モジュールからRAD_CHK2モジュールに移動しているのは、上述したCOM_PREモジュールからRAD_CHKモジュールに移動しているのと同理由による。ここでは、一旦、コマンド「RST」によってCOM_PRE2モジュールを呼び出し、コマンド「JP RAD_CHK2」によって、RAD_CHK2モジュールに移動し、RAD_CHK2モジュールにおいて変数初期化に必要な残りの処理を実行する。
【0491】
図51(b)の1行目の指標「RAD_CHK2:」は、当該RAD_CHK2モジュールの先頭アドレスを示す。2行目のコマンド「CALLF COM_CHK」によって、サブルーチンとして
図51(c)に示したCOM_CHKモジュールが呼び出され、HLレジスタに参照アドレス(例えば「T_ERR_RCV」)が設定される。かかるCOM_CHKモジュールは、
図48(c)を用いて既に説明したので、ここではその詳細な説明を省略する。かかる2行目のコマンドが
図50(b)のステップS5に対応する。
【0492】
図51(b)の3行目の指標「TABLSET:」は、当該TABLSETモジュールの先頭アドレスを示す。4行目のコマンド「PUSH BC」によって、BCレジスタの値がスタック領域に退避される。5行目のコマンド「DI」によって割込が禁止される。
【0493】
図51(b)の6行目のコマンド「LD B,(HL)」によって、HLレジスタで示されるアドレスに格納された1バイト値がBレジスタに読み出される。このとき、HLレジスタには、COM_CHKモジュールによって参照アドレス(例えば「T_ERR_RCV」)が設定されている。したがって、
図51(d)の2行目の1バイト値「(T_ERR_RCV_-T_ERR_RCV)/2」がデータ数(転送の繰り返し数)としてBレジスタに読み出されることとなる。なお、「T_ERR_RCV_」は、転送元となる1バイトデータ群の最終アドレスの次のアドレスであり、T_ERR_RCVは転送元となる1バイトデータ群の先頭アドレスなので、T_ERR_RCV_-T_ERR_RCVの値(データ数を示す1バイト値)の値が、1バイト値の総バイト数となり、その値を、アドレスと値との組み合わせ数である2で除算すると、データ数が導出される。
図51(d)の例では、データ数は、9/2=4となる。かかる6行目のコマンドが
図50(d)のステップS12に対応する。
【0494】
図51(b)の7行目の指標「TABLSET01:」は繰り返し処理の先頭アドレスを示す。8行目のコマンド「INLD AC,(HL)」および9行目のコマンド「LDQ (C),A」によって、HLレジスタに「1」を加えた値で示されるアドレスに格納された値で特定されるアドレスに、HLレジスタに「2」を加えた値で示されるアドレスに格納された値が格納され、HLレジスタの値に「2」が加えられて次に転送するアドレスが設定される。かかる8、9行目のコマンドが、
図50(d)のステップS13に対応する。
【0495】
例えば、HLレジスタがアドレス「T_ERR_RCV」の値であった場合、
図51(d)の3行目における2バイト変数「_ERR_NUM」の下位1バイト値がCレジスタに格納され、
図51(d)の3行目における「0」の値がAレジスタに格納される。
【0496】
また、
図51(b)の9行目のコマンド「LDQ (C),A」は、Qレジスタの値をアドレスの上位1バイトとし、Cレジスタの値をアドレスの下位1バイトとし、そのアドレスに、Aレジスタの値を格納するコマンドである。
【0497】
例えば、Cレジスタの値、すなわち「_ERR_NUM」の下位1バイトの値をアドレスの下位1バイトとし、そのアドレスに、Aレジスタの値、すなわち、「0」の値を格納する。
【0498】
ここで、
図51(d)、
図51(e)において、変数「_ERR_NUM」は、エラー番号を示し、変数「_CRE_TMR」は、クレジットボタン検出タイマを示し、変数「_CRE_FLG」は、クレジットボタン検出フラグを示し、変数「_SNS_OLD」はメダル通過センサービット前回状態を示す。
【0499】
続いて、
図51(b)の10行目のコマンド「DJNZ TABLSET01」によって、Bレジスタの値がデクリメント(「1」減算)され、デクリメントした結果が0でなければ、アドレス「TABLSET01」に移動し、デクリメントした結果が0であれば、当該コマンドの次のコマンドに処理を移す。ここでは、データ数が「4」なので、「TABLSET01」からの処理を4回繰り返すとBレジスタの値が0となる。かかる10行目のコマンドが、
図50(d)のステップS14に対応する。
【0500】
図51(b)の11行目のコマンド「EI」によって割込が許可される。12行目のコマンド「POP BC」によってスタック領域に退避されていたデータがBCレジスタに復帰される。そして、13行目のコマンド「RET」によって、1段上のルーチンに戻る。かかる13行目のコマンドが、
図50(d)のステップS15に対応する。
【0501】
(汎用抽選処理と変数初期化処理との共通化)
以上、説明したように、汎用抽選処理と変数初期化処理とは、戻りアドレス確認処理を実行するCOM_CHKモジュールを共有して呼び出している。したがって、汎用抽選処理および変数初期化処理それぞれに対してCOM_CHKモジュールを準備する必要がなく、その分、メインROM200bの容量を削減することができる。
【0502】
しかし、汎用抽選処理と変数初期化処理とでは、COM_CHKモジュールによって、参照アドレスを取得した後の具体的に処理を行うモジュールが異なる(COM_LOTモジュール、TABLSETモジュール)。したがって、上記のように、汎用抽選処理と変数初期化処理とが独立して遂行され、その途中で、共通のCOM_CHKモジュールを呼び出すといった構成にしている。具体的に、汎用抽選処理では、COM_PREモジュールおよびRAD_CHKモジュールを経由して確実にCOM_LOTモジュールに移行する流れで、RAD_CHKモジュールにおいて共通のCOM_CHKモジュールを呼び出す。一方、変数初期化処理では、COM_PRE2モジュールおよびRAD_CHK2モジュールを経由して確実にTABLSETモジュールに移行する流れで、RAD_CHK2モジュールにおいて共通のCOM_CHKモジュールを呼び出していた。換言すれば、COM_LOTモジュールとTABLSETモジュールとをそれぞれ独立して実行させるために、2つの汎用モジュール、COM_PREモジュールとCOM_PRE2モジュールを準備していた。
【0503】
ここで、メインROM200bの容量の更なる削減を検討する。例えば、汎用抽選処理と変数初期化処理とでは、共通のCOM_CHKモジュールによって取得すべき参照アドレスが異なる。したがって、参照アドレスの位置に応じて、その処理が汎用抽選処理であるか変数初期化処理であるかを判断できる。ここでは、共通のCOM_CHKモジュールを実行したことによる、「参照アドレス」に応じて、移行先をCOM_LOTモジュールかTABLSETモジュールに決定する。そうすると、事前にCOM_PREモジュールやCOM_PRE2モジュールを経由する必要がなくなる。したがって、COM_CHKモジュールのみならず、COM_PREモジュールおよびRAD_CHKモジュールも共通化できる。こうして、メインROM200bの容量の更なる削減が可能となる。なお、ここでは、RAD_CHKモジュールとCOM_CHKモジュールを統合してRAD_CHKモジュールとしている。また、COM_PREモジュールおよびRAD_CHKモジュールを合わせて第1モジュールとする。
【0504】
図52は、COM_PREモジュール、RAD_CHKモジュール、COM_LOTモジュール、TABLSETモジュールの他の処理を示したフローチャートである。かかる図におけるステップSの数値は、本図の説明においてのみ用いることとする。
【0505】
メインCPU200aは、
図52(a)のように、サブルーチンとして共通かつ汎用モジュールであるCOM_PREモジュール(第1モジュール)を呼び出すと、スタックポインタ値をDEレジスタに一旦復帰させ(S1)、即座にDEレジスタの内容をスタック領域に退避させる(S2)。こうして、スタック領域の状態を維持しつつ、スタックポインタの値、すなわち、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持することができる。そして、メインCPU200aは、汎用抽選オフセット選択テーブルのアドレス(比較すべき戻りアドレスの初期値)をHLレジスタに設定し(S3)、RAD_CHKモジュールに移動する(S4)。
【0506】
メインCPU200aは、共通モジュールであるRAD_CHKモジュール(第1モジュール)において、
図52(b)のように、今回の戻りアドレスとHLレジスタの値(比較すべき戻りアドレス)とを比較し(S5)、参照アドレスを設定するためにHLレジスタを2だけインクリメントする(S6)。ここで、ステップS5で比較した結果に基づき、今回の戻りアドレスがHLレジスタの値と一致しているか否か判定し(S7)、一致していなければ(S7におけるNO)、比較すべき戻りアドレスを設定するためにHLレジスタを2だけインクリメントし(S8)、ステップS5に戻って、今回の戻りアドレスとHLレジスタの値とが一致するまで比較処理を繰り返す。また、今回の戻りアドレスがHLレジスタの値と一致していれば(S7におけるYES)、参照アドレスを取得する(S9)。こうして、COM_PREモジュールを呼び出したプログラムの戻りアドレスに基づいて参照アドレス(特定アドレス)を抽出することができる。
【0507】
続いて、メインCPU200aは、テーブルのアドレスから所定の境界アドレスを減算する(S10)。本実施形態では、汎用抽選処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体と、変数初期化処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体との2つの集合体を区分し、一方のアドレスが他方のアドレスより大きくなるように設定する。ここでは、汎用抽選処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体が、変数初期化処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体より、そのアドレスが大きくなるように設定している。また、境界アドレスは、汎用抽選処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体と、変数初期化処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体との2つの集合体を区分するため、その境界に位置させたアドレスである。したがって、汎用抽選処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせについては、テーブルのアドレスから所定の境界アドレスを減算した結果が正または0となり(特定アドレスが境界アドレス以上となり)、変数初期化処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせについては、テーブルのアドレスから所定の境界アドレスを減算した結果が負となる(特定アドレスが境界アドレス未満となる)。
【0508】
メインCPU200aは、
図52(b)のように、減算したHLレジスタを復元するために、参照アドレスを取得する(S11)。メインCPU200aは、ステップS10の減算結果が負であれば(S12におけるYES)、TABLSETモジュール(第3モジュール)に移動し、減算結果が正または0であれば(S12におけるNO)、COM_LOTモジュール(第2モジュール)に移動する。
【0509】
メインCPU200aは、RAD_CHKモジュールから、
図52(c)に示したCOM_LOTモジュールに移動すると、参照アドレス(特定アドレス)によって特定される値に基づいて汎用抽選に関する具体的な処理を実行し、COM_PREモジュールを呼び出したルーチンに戻る(S13)。
【0510】
メインCPU200aはRAD_CHKモジュールから、TABLSETモジュールに移動すると、
図52(d)のように、HLレジスタで示されるアドレスに格納された1バイト値をBレジスタに読み出す(S14)。かかる1バイト値はデータ数を示す。続いて、メインCPU200aは、HLレジスタに「1」を加えた値で示されるアドレスに格納された値で特定されるアドレスに、HLレジスタに「2」を加えた値で示されるアドレスに格納された値を転送し、HLレジスタの値に「2」を加えて次に転送するアドレスを設定する(S15)。続いて、メインCPU200aは、Bレジスタの値をデクリメント(「1」減算)し、デクリメントした結果が0であるか否か判定する(S16)。ここで、デクリメントした結果が0でなければ(S16におけるNO)、ステップS15からの処理を繰り返し、デクリメントした結果が0であれば(S16におけるYES)、当該TABLSETモジュールを終了して1段上のルーチンに戻る(S17)。こうして、参照アドレス(特定アドレス)によって特定される値に基づいて変数初期化処理が実行される。
【0511】
図53は、COM_PREモジュール、RAD_CHKモジュール、COM_LOTモジュール、TABLSETモジュールを実現するためのコマンドの一例を説明するための説明図である。このうち、
図53(a)は、COM_PREモジュールのコマンド群を示し、
図53(b)は、RAD_CHKモジュールおよびCOM_LOTモジュールのコマンド群を示し、
図53(c)は、TABLSETモジュールのコマンド群を示す。
図52で示したフローチャートは、例えば、
図53に示したプログラムによって実現される。
【0512】
図53(a)の1行目のコマンド「ORG 0028H」によって、COM_PREモジュールの開始位置が0028Hに設定される。2行目の指標「COM_PRE:」は、当該COM_PREモジュールの先頭アドレスを示す。3行目のコマンド「POP DE」によってスタック領域に退避されていたデータがDEレジスタに復帰される。かかる3行目のコマンドが
図52(a)のステップS1に対応する。4行目のコマンド「PUSH DE」によって、DEレジスタの値がスタック領域に退避される。かかる4行目のコマンドが
図52(a)のステップS2に対応する。こうして、サブルーチンを呼び出した元のルーチンの戻りアドレス(今回の戻りアドレス)をDEレジスタに保持する。5行目のコマンド「LD HL,T_SEL_CLO」によって、汎用抽選オフセット選択テーブルのアドレス(比較すべき戻りアドレスの初期値)がHLレジスタに格納される。かかる5行目のコマンドが
図52(a)のステップS3に対応する。6行目のコマンド「JP RAD_CHK」によって、RAD_CHKモジュールの先頭アドレスを示す指標「RAD_CHK:」に移動する。かかる6行目のコマンドが
図52(a)のステップS4に対応する。
【0513】
図53(b)の1行目の指標「RAD_CHK:」は、当該RAD_CHKモジュールの先頭アドレスを示す。2行目のコマンド「CP (HL),DE」によって、HLレジスタで示されるアドレスに格納された値(比較すべき戻りアドレス)と、DEレジスタに格納された値(今回の戻りアドレス)とを比較する。
【0514】
図54は、メモリにおける変数の配置を説明するための説明図である。
図54(a)に示す汎用抽選オフセット選択テーブルでは、比較すべき戻りアドレスと参照アドレスとの組み合わせが、4バイト毎に複数連続して配置されている。したがって、
図53(b)の2行目のコマンド「CP (HL),DE」を実行する時点のHLレジスタには、初回、指標「T_SEL_CLO:」のアドレスが保持されている。ここで、コマンド「CP (HL),DE」を実行すると、HLレジスタに示されるアドレス(「T_SEL_CLO」)に格納された値、すなわち、「@ADT_SET_EPL」(比較すべき戻りアドレス)と、DEレジスタの値(今回の戻りアドレス)とが比較される。かかる
図53(b)の2行目のコマンドが
図52(b)のステップS5に対応する。
【0515】
図53(b)に戻って、3行目のコマンド「INC HL」によって、HLレジスタの値を1加算する。また、4行目のコマンド「INC HL」によって、HLレジスタの値をさらに1加算する。こうして、HLレジスタが2だけインクリメントされる。これは、
図54(a)に示すように、偶数行目(例えば2行目)の比較すべき戻りアドレスを奇数行目(例えば3行目)の参照アドレスに変更することとなる。かかる
図53(b)の3、4行目のコマンドが
図52(b)のステップS6に対応する。
【0516】
図53(b)の5行目のコマンド「JR Z,RAD_CHK01」によって、ゼロフラグが1(Z)であれば、9行目の指標「RAD_CHK01:」に移動する。例えば、
図54の例によれば、(HLレジスタに示されるアドレス(「T_SEL_CLO」)に格納された値である「@ADT_SET_EPL」)=(DEレジスタの値である今回の戻り値)となるので、初回からゼロフラグが1となり、指標「RAD_CHK01:」に移動することになる。かかる
図53(b)の5行目のコマンドが
図52(b)のステップS7に対応する。
【0517】
仮に、
図53(b)の5行目のコマンド「JR Z,COM_CHK01」の実行結果がゼロフラグ=1ではなく、コマンド「JR Z,COM_CHK01」によって移動しなかった場合、
図53(b)の6行目のコマンド「INC HL」によって、HLレジスタの値を1加算する。また、7行目のコマンド「INC HL」によって、HLレジスタの値をさらに1加算する。こうして、HLレジスタが2だけインクリメントされる。これは、
図54(a)に示すように、奇数行目(例えば3行目)の参照アドレスを偶数行目(例えば4行目)の比較すべき戻りアドレスに変更すること、すなわち、比較の対象を、比較すべき戻りアドレスと、参照アドレスとの次の組み合わせに変更することとなる。なお、比較すべき戻りアドレスと、参照アドレスとの次の組み合わせは、例えば、100組準備される。8行目のコマンド「JR RAD_CHK」によって、1行目の指標「RAD_CHK:」に移動する。かかる6~8行目のコマンドが
図52(b)のステップS8に対応する。
【0518】
一方、
図53(b)の5行目のコマンド「JR Z,COM_CHK01」の実行結果がゼロフラグ=1であれば、指標「RAD_CHK01:」に移動し、10行目のコマンド「LDIN DE,(HL)」によってHLレジスタで示されるアドレスに格納された2バイト長の値(参照アドレス)をDEレジスタに読み出し(ロードし)、HLレジスタの値を2加算する。そして、11行目のコマンド「LD HL,DE」によってDEレジスタに読み出した参照アドレスをHLレジスタに設定する。こうしてHLレジスタに参照アドレス(
図54の例では「T_SET_EPL」)を設定することができる。かかる10、11行目のコマンドが、
図52(b)のステップS9に対応する。
【0519】
図53(b)の12行目のコマンド「SUB HL,@END_TBL_SET」によって、HLレジスタに設定した参照するテーブルのアドレスから所定の境界アドレスが減算される。上述したように、ここでは、テーブルのアドレスから所定の境界アドレスを減算した結果が正か0であれば、そのテーブルのアドレスが汎用抽選処理に対応していることとなり、テーブルのアドレスから所定の境界アドレスを減算した結果が負であれば、そのテーブルのアドレスが変数初期化処理に対応していることとなる。かかる12行目のコマンドが、
図52(b)のステップS10に対応する。13行目のコマンド「LD HL,DE」によってDEレジスタに読み出した参照アドレスを再度HLレジスタに設定する。こうしてHLレジスタに参照アドレス(
図54の例では「T_SET_EPL」)をHLレジスタに復元できる。かかる13行目のコマンドが、
図52(b)のステップS11に対応する。
図53(b)の14行目のコマンド「JR C,TABLSET」によって、キャリーフラグ(c)が1であれば、すなわち、テーブルのアドレスから所定の境界アドレスを減算した結果が負であれば、TABLSETに移動する。一方、キャリーフラグ(c)が1でなければ、次の処理(指標「COM_LOT:」)に移行する。かかる14行目のコマンドが、
図52(b)のステップS12に対応する。
【0520】
ここでは、上述したように、汎用抽選処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体と、変数初期化処理に用いる、比較すべき戻りアドレスと参照アドレスとの組み合わせを複数並置した集合体との2つの集合体を区分し、一方のアドレスが他方のアドレスより大きくなるように設定している。したがって、テーブルのアドレスから所定の境界アドレスを減算した結果が正であるか負であるか、すなわち、境界アドレスより値が小さいアドレスであるか否かによって、汎用抽選処理か変数初期化処理かを分岐させている。
【0521】
図53(b)の15行目の指標「COM_LOT:」は、当該COM_LOTモジュールの先頭アドレスを示す。そして、参照アドレス(特定アドレス)によって特定される値に基づいて汎用抽選に関する具体的な処理が実行され、16行目のコマンド「RET」によって、当該COM_LOTモジュールを終了し、COM_PREモジュールを呼び出したルーチンに戻る。かかる15行目のコマンドが、
図52(c)のステップS13に対応する。
【0522】
図53(c)の1行目の指標「TABLSET:」は、当該TABLSETモジュールの先頭アドレスを示す。2行目のコマンド「PUSH BC」によって、BCレジスタの値がスタック領域に退避される。5行目のコマンド「DI」によって割込が禁止される。
【0523】
図53(c)の4行目のコマンド「LD B,(HL)」によって、HLレジスタで示されるアドレスに格納された1バイト値がBレジスタに読み出される。このとき、HLレジスタには、RAD_CHKモジュールによって参照アドレス(例えば「T_SET_EPL」)が設定されている。したがって、
図54(b)の2行目の1バイト値「(T_SET_EPL_-T_SET_EPL)/2」がデータ数(転送の繰り返し数)としてBレジスタに読み出されることとなる。なお、「T_SET_EPL_」は、転送元となる1バイトデータ群の最終アドレスの次のアドレスであり、T_SET_EPLは転送元となる1バイトデータ群の先頭アドレスなので、T_SET_EPL_-T_SET_EPLの値(データ数を示す1バイト値)が、1バイト値の総バイト数となり、その値を、アドレスと値との組み合わせ数である2で除算すると、データ数が導出される。
図54(b)の例では、データ数は、9/2=4となる。かかる4行目のコマンドが
図52(d)のステップS14に対応する。
【0524】
図53(c)の5行目の指標「TABLSET01:」は繰り返し処理の先頭アドレスを示す。6行目のコマンド「INLD AC,(HL)」および7行目のコマンド「LDQ (C),A」によって、HLレジスタに「1」を加えた値で示されるアドレスに格納された値で特定されるアドレスに、HLレジスタに「2」を加えた値で示されるアドレスに格納された値が格納され、HLレジスタの値に「2」が加えられて次に転送するアドレスが設定される。かかる6、7行目のコマンドが、
図52(d)のステップS15に対応する。
【0525】
例えば、HLレジスタがアドレス「T_SET_EPL」の値であった場合、
図54(b)の3行目における2バイト変数「_AT__NXT」の下位1バイト値がCレジスタに格納され、
図54(b)の3行目における値「@AT__MOD_EPS」がAレジスタに格納される。
【0526】
また、
図53(c)の7行目のコマンド「LDQ (C),A」は、Qレジスタの値をアドレスの上位1バイトとし、Cレジスタの値をアドレスの下位1バイトとし、そのアドレスに、Aレジスタの値を格納するコマンドである。
【0527】
例えば、Cレジスタの値、すなわち「_AT__NXT」の下位1バイトの値をアドレスの下位1バイトとし、そのアドレスに、Aレジスタの値、すなわち、「@AT__MOD_EPS」の値を格納する。
【0528】
続いて、
図53(c)の8行目のコマンド「DJNZ TABLSET01」によって、Bレジスタの値がデクリメント(「1」減算)され、デクリメントした結果が0でなければ、アドレス「TABLSET01」に移動し、デクリメントした結果が0であれば、当該コマンドの次のコマンドに処理を移す。ここでは、データ数が「4」なので、「TABLSET01」からの処理を4回繰り返すとBレジスタの値が0となる。かかる8行目のコマンドが、
図52(d)のステップS16に対応する。
【0529】
図53(c)の9行目のコマンド「EI」によって割込が許可される。10行目のコマンド「POP BC」によってスタック領域に退避されていたデータがBCレジスタに復帰される。そして、11行目のコマンド「RET」によって、1段上のルーチンに戻る。かかる11行目のコマンドが、
図52(d)のステップS17に対応する。こうして、参照アドレス(特定アドレス)によって特定される値に基づいて変数初期化処理が実行される。
【0530】
このように、
図48に示した汎用抽選処理と、
図51に示した変数初期化処理とを統合すると、
図53のように、さらに、メインROM200bの容量を削減することができる。具体的に、
図48の汎用抽選処理では、破線で示したように、
図48(b)のRAD_CHKモジュールにおける2行目のコマンド「CALLF COM_CHK」(2バイト)および
図48(c)のCOM_CHKモジュールにおける12行目のコマンド「RET」(1バイト)を削除でき、総バイト数を3バイト削減できる。また、
図51の変数初期化処理では、破線で示したように、
図51(a)のCOM_PRE2モジュール全てを削除できる。そうすると、3行目のコマンド「POP DE」(1バイト)、4行目のコマンド「PUSH DE」(1バイト)、5行目のコマンド「LD HL,T_SEL_CLO_2」(3バイト)、および、6行目のコマンド「JP RAD_CHK2」(3バイト)を削除できる。また、汎用抽選処理同様、
図51(b)のRAD_CHK2モジュールにおける2行目のコマンド「CALLF COM_CHK」(2バイト)も削除できる。したがって、総バイト数10バイトを削減できる。
【0531】
一方、汎用抽選処理と変数初期化処理とを統合した場合、破線で示したように、
図53(b)のRAD_CHKモジュールにおける12行目のコマンド「SUB HL,@END_TBL_SET」(3バイト)、13行目のコマンド「LD HL,DE」(2バイト)、および、14行目のコマンド「JR C,TABLSET」(2バイト)が追加され、総バイト数が7バイト増加する。したがって、
図48に示した汎用抽選処理と、
図51に示した変数初期化処理とを
図53のように統合することで、13バイト削減し、7バイト増加するので、合計6バイト削減できる。なお、
図43~
図46に示したメインCPU200aの場合、
図53(b)のRAD_CHKモジュールにおける12行目のコマンド「SUB HL,@END_TBL_SET」のコマンドサイズが2バイトとなるので、合計7バイト削減できる。こうして、コマンドの更なる短縮化を図り、遊技制御処理を行うための制御領域の容量を確保することが可能となる。
【0532】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【0533】
例えば、上述した実施形態においては、第1モジュールとしてCOM_PREモジュールおよびRAD_CHKモジュールを挙げ、第2モジュールとしてCOM_LOTモジュールを挙げ、第3モジュールとしてTABLSETモジュールを挙げて説明した。しかし、かかる場合に限らず、例えば、第1モジュールをRAD_CHKモジュール単体(COM_PREモジュールを除く)としてもよく、境界アドレスに対するアドレスの大小関係を逆にして、第2モジュールをTABLSETモジュール、第3モジュールをCOM_LOTモジュールとしてもよい。この他、様々なモジュールの組み合わせが考えられる。
【0534】
また、上述した実施形態においては、特定アドレスを参照アドレスとし、その参照アドレスが境界アドレス以上であれば、COM_LOTモジュール(第2モジュール)に移行し、参照アドレスが境界アドレス未満であれば、TABLSETモジュール(第3モジュール)に移行する例を挙げて説明した。しかし、かかる場合に限らず、特定アドレスを「比較すべき戻りアドレス」とし、その比較すべき戻りアドレスが境界アドレス以上であれば、COM_LOTモジュール(第2モジュール)に移行し、比較すべき戻りアドレスが境界アドレス未満であれば、TABLSETモジュール(第3モジュール)に移行するとしてもよい。例えば、
図54(a)の例では、6行目のコマンド「DEFW @ADT_HED_FLZ」を境界アドレスとする。このとき、比較すべき戻りアドレスが例えば「@ADT_SET_EPL」であれば、比較すべき戻りアドレスが境界アドレス未満となるので、TABLSETモジュール(第3モジュール)に移行し、比較すべき戻りアドレスが例えば「@ADT_HED_FLZ」であれば、比較すべき戻りアドレスが境界アドレス以上となるので、COM_LOTモジュール(第2モジュール)に移行することとなる。
【0535】
また、上述した実施形態では、主制御基板200と副制御基板202とが、遊技を進行するための機能部を分担するように配したが、主制御基板200の機能部を副制御基板202に配しても、副制御基板202の機能部を主制御基板200に配してもよく、また、全ての機能部を1の制御基板に纏めて配することもできる。
【0536】
また、上記した実施形態では、遊技価値としてのメダルを用いて遊技を行うようにしたが、遊技価値は電気的な情報であってもよい(所謂メダルレスであってもよい)。この場合、当選役が入賞したときに、当選役に対応する価値量を遊技者に電気的な情報で付与すればよい。
【0537】
また、上述した主制御基板200および副制御基板202が行う各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。
【符号の説明】
【0538】
100 スロットマシン(遊技機)
200 主制御基板
200a メインCPU
200b メインROM
200c メインRAM
202 副制御基板
202a サブCPU
202b サブROM
202c サブRAM