(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
本発明の実施例について以下の順序で説明する。
A.装置構成:
B.制御機構の構成:
C.制御ソフトウェア構成:
C1.モジュール構成:
C2.演出制御の基本概念:
C3.イベントモジュールの機能:
C4.演出モジュールの機能:
C5.サウンドモジュールの機能:
C6.ランプモジュールの機能:
D.演出制御処理:
D1.メイン処理:
D2.イベント処理:
D3.演出データ処理:
D4.サウンド処理:
D5.ランプ処理:
E.効果:
F.第2実施例:
F1.遊技機の構成:
F2.遊技機の制御:
G.変形例:
H.本実施形態におけるプログラム構造と従来技術との違い:
【0023】
A.装置構成:
図1は実施例におけるスロットマシン10の外観を示す説明図である。スロットマシン10は、遊技媒体であるメダル(遊技メダル)を用いてゲームを行うことができる。「遊技媒体」とは、遊技場(ホール)において1回ごとのゲームについて投資または掛ける対象、およびゲームの結果に応じた特典として払い出しの対象となる物を意味する。本実施例は、スロットマシンを例にとって説明するが、本実施例は、パチンコ機などの遊技機として構成してもよい。
【0024】
図の左側にはスロットマシン10の正面図を示し、右側にA−A断面図を示した。図の煩雑化を避けるため、A−A断面図では、スロットマシン10のドア部分のみを示してある。スロットマシン10は、上方に大型(本実施例では画面サイズが19インチ程度となっている)の液晶パネル21を備えている。液晶パネル21の下部には3つの円筒形のリール22が配置されている。これらのリール22には、ゲーム用の図柄が描かれており、それぞれ図中の左右方向を回転軸として回転可能となっている。スロットマシン10の正面は、大型の透明カバー11で覆われている。
【0025】
遊技者が、メダルを投入して、始動レバー15を操作すると、リール22が回転し始める。遊技者が、3つの停止ボタン16をそれぞれ操作すると、ボタンの位置に対応したリール22の回転を停止させることができる。投入したメダル数、および回転が停止した時の図柄の配列に応じて、スロットマシン10はメダルを払い出す。
【0026】
スロットマシン10は、遊技中に種々の演出を行うため、スピーカ40やランプ30を備えている。スピーカ40は、上部および下部にそれぞれ左右の4カ所に設けられているが、上部のスピーカについては図示されていない。ランプ30は、スロットマシン10の左右および上部に設けられている。ランプ30は、多数のLEDと、それを覆う透明樹脂製のレンズで構成されている。ランプ30は、遊技状況に応じて点灯し、例えば、大当たりが出た場合などには鮮やかに点灯して、大当たりの発生を周囲にアピールする演出を行う。
【0027】
B.制御機構の構成:
図2は制御機構の構成を示す説明図である。スロットマシン10はメイン制御基板100、サブ制御基板200の分散処理によって制御される。メイン制御基板100は、内部にCPU101、ROM102、RAM103を備えており、スロットマシン10の全体処理を制御する。この制御を実行するため、メイン制御基板100には、種々の情報が入出力される。図中には、その一部を示した。
【0028】
入力される情報としては、例えば、始動レバー15および停止ボタン16の動作状態、メダル満タンセンサ50、エラー解除センサ51、扉開放センサ52などのセンサ出力がある。メダル満タンセンサ50は、遊技機内のメダルの貯留数が所定数量を超えた場合にエラー信号をメイン制御基板100に出力する。エラー解除センサ51は、スロットマシン10の動作にエラーが生じた際に、係員の操作に応じてエラーをリセットするためのスイッチからの出力信号である。扉開放センサ52は、スロットマシン10の前面扉が開放されたことを報知するためのセンサ出力である。
【0029】
リール22からは、各リールの停止位置情報を表す信号が出力される。また、メイン制御基板100からリール22には、各リールを回転させるモータの起動及び停止を制御する駆動パルス信号が出力される。
【0030】
電源ユニット18は、メイン制御基板100を含めた各種基板に電力を供給するための機構である。電力の供給とともに、停電などの異常が発生した際に、バックアップ処理を行わせるため、停電予測信号をメイン制御基板100に出力する。
【0031】
ホッパ装置19は、特典としてメダルを払い出すための機構である。リールの停止状態によって成立した役に応じて、内部に貯留されているメダルをステッピングモータによって払い出し口から払い出すことができる。メイン制御基板100からホッパ装置19には、メダルの払い出し動作を行うための制御信号が出力される。ホッパ装置19には、払い出されたメダルを1枚ずつ検出する払出センサが設けられており、メダル1枚ごとの払出メダル信号がメイン制御基板100に出力される。
【0032】
スロットマシン10は、遊技状態に応じて音声出力、ランプ点灯、画像表示などの演出を行う。これらの演出は、サブ制御基板200によって制御される。メイン制御基板100が遊技状態を表すコマンドを出力すると、サブ制御基板200は、これに応じた演出を実行するのである。この意味で、サブ制御基板200は、メイン制御基板100からのコマンドに応じて作動する下位の制御基板であると言える。本実施例では、不正を回避するため、メイン制御基板100とサブ制御基板200は単方向の信号線で接続されており、サブ制御基板200からメイン制御基板100への信号伝達は行われない。
【0033】
サブ制御基板200は、内部にCPU201、ROM202、RAM203等を備えるマイクロコンピュータとして構成されている。CPU201は、ROM202に記憶されたプログラムおよびデータを用いて、RAM203を活用しながら種々の演出制御処理を実行する。CPU201は、ランプ30に点灯パターンを表すランプデータを出力することによって、その点灯状態を制御することができる。
【0034】
サブ制御基板200には、またLCD21を制御するためのVDP(Video
Display
Processor)204が備えられている。VDP204は、CPU201からのコマンドに従
って、画像をビットマップ展開し、LCD21に画像を表示するための表示データを生成する。表示データの生成は、種々の方法で行うことが可能であるが、本実施例では、予め用意されたキャラクタデータを活用する方法を採った。
【0035】
キャラクタデータとは、LCD21にまとまった単位として表示されるイメージ(以下、このイメージをスプライトと呼ぶ)を表すための64ピクセルなどの規定サイズの矩形のビットマップデータである。画面上には種々の大きさのスプライトが存在する。小さなスプライトは、一つのキャラクタデータで表現することができるし、人物など比較的大きいスプライトの場合には、例えば、横2×縦3などで配置した合計6個のキャラクタデータで表現することができる。背景画像のように更に大きいスプライトであれば、更に多数のキャラクタデータを用いて表現することができる。キャラクタデータの数および配置は、スプライトごとに任意に指定可能である。スプライトおよびキャラクタデータのサイズ等は任意に設定可能である。本実施例では、定型的な大きさのキャラクタデータを配置してスプライトを構成するものとしたが、キャラクタデータは、各スプライトの大きさに応じた不統一なサイズとしてもよい。
【0036】
CPU201は、画像に表示すべき複数のスプライトおよびその位置をVDP204に指示する。VDP204は、指定されたスプライトに対応するキャラクタデータをROM202から読み出し、指定された位置に展開して、表示データを生成するのである。
【0037】
画面上に複数のスプライトが配置されている場合には、順次、バッファ上にスプライトごとのデータが展開される。後から展開されるスプライトのデータは既に展開済みのデータに上書きされるため、複数のスプライトが配置される時は、後から展開されるスプライトほど優先的に表示されることになる。
【0038】
VDP204は、画像を展開する上で有用な種々の機能を有している。かかる機能の一つとしてレイヤ機能が挙げられる。VDP204は、スプライトを予め用意された複数のレイヤごとに展開することができるのである。この機能を利用すれば、画像の表示の有無および表示の優先度を指定することによって、スプライト間の重なり具合を容易に制御することができる利点がある。
【0039】
VDP204の上述の処理を制御するための表示制御CPU、およびキャラクタデータを格納するためのキャラROMをサブ制御基板200に更に設ける構成をとってもよい。
この場合には、サブ制御基板200のCPU201は、表示制御CPUに、表示すべき画像を表す識別コード等を出力すればすむ。表示制御CPUが、この識別コードを解析して、表示すべきスプライトおよび位置を特定し、VDP204に指示を出すことになる。また、キャラクラタデータ専用のキャラROMを設けることにより、キャラクタデータの読み出し速度を向上させることができ、画像表示を円滑に行うことが可能となる。
【0040】
サブ制御基板200には、音声を出力するための音源IC205が用意されている。CPU201が再生すべき音声を表す音源コマンドを音源IC205に出力すると、音源IC205は、音源コマンドに対応した音源データをROM202から読み出し、アンプ206を介してスピーカ40から音声を出力することができる。音源データを格納しておくための専用のROMを音源IC205に接続しておく構成としてもよい。
【0041】
本実施例では、音声は4チャンネルでスピーカ40に出力可能である。ここに図示した4つのスピーカは、それぞれチャンネルを模式的に表しているものであり、
図1で説明した物理的な4個のスピーカに対応している訳ではない。アンプ206内には、チャンネルごとに、増幅回路206aと、ボリューム206vが用意されている。後述する通り、ボリューム206vは、CPU201が個別に調整可能となっている。こうすることにより、例えば、BGMを演奏中に、そのチャンネルのボリュームを落として、他のチャンネルから流れる効果音を一時的に優先させるなどの演出を比較的容易に実現することが可能となる。
【0042】
C.制御ソフトウェア構成:
C1.モジュール構成:
図3は制御ソフトウェア構成を示す説明図である。本実施例では、各モジュールは、サブ制御基板のCPU201が実行するコンピュータプログラムによってソフトウェア的に構成されているが、一部または全部をハードウェア的に構成しても構わない。
【0043】
システムモジュール210内の主基板コマンドバッファ211は、メイン制御基板100から送信される主基板コマンドを受信し、コマンド解析モジュール220に受け渡す。
本実施例では、主基板コマンドは2バイトの情報であり、4ビットずつ4回に分けて出力される。主基板コマンドバッファ211は、この4回の信号を受信して2バイトのコマンドに再構成し、コマンド解析モジュール220に受け渡すのである。
【0044】
主基板コマンドには、遊技状態やスロットマシン10の動作状態のうち演出に関係のある内容を表す情報が含まれる。例えば、扉開放その他のセンサ出力(
図2参照)や、始動レバー15や停止ボタン16の操作、リールの回転や停止、停止時の役の成否などが挙げられる。ここに挙げたコマンドは例示であり、遊技機の機種や、演出内容に応じて種々のコマンドを含めることができる。例えば、本実施例をパチンコ機に適用する場合には、始動入賞口等への入賞の有無や、抽選の結果などを主基板コマンドに含めることができる。
【0045】
コマンド解析モジュール220は、主基板コマンドの内容を解析し、有効なコマンドか否かを判断する。有効なコマンドと判断された場合には、イベントモジュール230に受け渡す。
【0046】
イベントモジュール230は、受け取ったコマンドに基づいて、システムイベントおよびユーザイベントを生成する。システムイベントとは、遊技中のユーザの操作と無関係に、スロットマシン10の動作状態に応じて種々の処理を行うための管理状態を言う。本実施例では、システムイベントで管理する状態としては、優先度の高い順に、「設定変更中、各種異常報知、扉開放状態、リール空回し、パワーセーブ、通常遊技、デモ」などが挙げられる。これらは一例に過ぎず、更に多くの管理状態を対象としてもよい。
【0047】
ユーザイベントとは、遊技中の演出表示に関するイベントであり、例えば、始動レバー15の操作、停止ボタン16の操作、リールの停止状態などがあげられる。イベントモジュール230は、これらのイベントに応じて、演出番号を特定し、演出モジュール240に受け渡す。演出番号とは、音声出力、ランプ、LCDなどによって実現される演出内容を表す識別情報である。
【0048】
演出モジュール240は、演出番号に基づいて、液晶コマンド、音声動作番号、ランプ動作番号を決定する。演出番号とこれらの液晶コマンド等との関係は、演出データとして予め規定され、ROM202に格納されている。演出データの内容、および液晶コマンド等の決定方法については後述する。液晶コマンドは、液晶コマンドバッファ212を介して、VDP204に受け渡される。液晶コマンド、音声動作番号、ランプ動作番号のうちシステムイベントに起因するものは、演出モジュール240によらず、イベントモジュール230によって指定されることもある。
【0049】
演出データの選択、および演出データに基づく動作情報(液晶コマンド、音声動作番号、ランプ動作番号)の出力を行う点で、本実施例のイベントモジュール230および演出モジュール240は、本発明における演出スケジューラ部に相当する機能を果たす。本実施例では、2つのモジュールで演出スケジューラ部を構成しているが、両者を統合した単一のモジュールで演出スケジューラ部を構成してもよい。
【0050】
VDP204は、この液晶コマンドバッファ212に基づき表示データを生成して、LCD21に出力する。表示データは、先に
図2で説明した通り、液晶コマンドで指定されたキャラクタデータを指定された位置に展開する方法で生成する。
【0051】
サウンドモジュール250は、音声動作番号に基づいて音源コマンドを生成する。音源コマンドの生成方法については後で詳述し、ここでは概要のみを示す。
本実施例では、音声動作番号と、生成すべき音源コマンドとの関係は、予めスケジュールデータとして規定され、ROM202に記憶されている。サウンドモジュール250は、このスケジュールデータを参照して音源コマンドを生成するのである。図示を省略したが、サウンドモジュール250には、スケジュールデータを参照して音源コマンドを生成するためのスケジューラが複数、設けられている。サウンドモジュール250は、これらの複数のスケジューラを統合制御して、4チャンネル分の出力に対応する音源コマンドを生成することができる。音源IC205は、この音源コマンドで指定された音源データをROM202から読み出し、スピーカ40から音声出力する。
【0052】
ランプモジュール260は、ランプ動作番号に基づいて、ランプを点灯・点滅させるためのランプデータを生成する。ランプデータの生成方法については後で詳述し、ここでは概要のみを示す。
本実施例では、ランプ動作番号と、生成すべきランプデータとの関係は、予めスケジュールデータとして規定され、ROM202に記憶されている。ランプモジュール260は、このスケジュールデータを参照してランプデータを生成するのである。図示を省略したが、ランプモジュール260には、スケジュールデータを参照してランプデータを生成するためのスケジューラが複数、設けられている。ランプモジュール260は、これらの複数のスケジューラを統合制御してランプデータを生成することができる。ランプデータは、出力ポートイメージワーク213を介してランプ30に出力され、各ランプを点灯・点滅させる。
【0053】
C2.演出制御の基本概念:
図4は演出制御の基本概念を示す説明図である。サウンドモジュール250の機能を例にとって示した。先に説明した通り、サウンドモジュール250は、音声動作番号に基づいて音源コマンドを生成する。音源コマンドの生成は、スケジューラ252[1]〜252[4]等によって実現される。各スケジューラは、予め用意されたスケジュールデータ255を参照して音源コマンドを生成する。スケジュールデータ255の構造は後述する。サウンドモジュールメイン251は、各スケジューラの起動を制御し、参照すべきスケジュールデータを指定する。
【0054】
図示したスケジューラ252[1]〜[4]は本実施例で設けられているスケジューラの一部である。スケジューラは、音源コマンドの生成を並行して実行する必要のある本数分用意される。本実施例では、各スケジューラによって出力される音声、即ち並列処理するそれぞれの音声を、画像表示のレイヤ構造に対応させ、「レイヤ」と称することもある。スケジューラは、レイヤごとに一つ設けられることになる。
【0055】
本実施例で設けられるレイヤは、優先度の高い順に次の通りである。音声についてのレイヤ構造は、下記に限定されるものではなく、この中の一部を省略してもよいし、この他のレイヤを追加してもよい。
システム効果音(設定変更等) 禁止;
通常異常効果音 禁止;
扉開放効果音(エラー報知、ドア等) 禁止;
機能効果音2(払い出し、BET等) 許可;
機能効果音1(払い出し、BET等) 許可;
企画特殊効果音(ボーナスBGM等) 許可;
企画演出効果音(演出からの音声番号設定) 許可;
【0056】
「禁止」、「許可」とは、各レイヤを使用する際に、他のレイヤの音声出力を禁止するか、許可するかの指定である。例えば、「システム効果音」レイヤを使用して音声を出力する際には、その他のレイヤの音声出力が禁止されるため、システム効果音のみが出力されることになる。「企画演出効果音」レイヤを使用する場合には、このレイヤの音声と、他のレイヤの音声とが合成された音声が出力される。
【0057】
スケジューラ252[1]〜252[4]から出力された音源コマンドは、本実施例で設けられている4つのチャンネルCh1〜Ch4のいずれかから出力される。各チャンネルの音声は、ボリューム260v[1]〜[4]を介してスピーカ40[1]〜[4]から出力される。もっとも、ここに図示したスピーカ40[1]〜[4]は、各チャンネルCh1〜Ch4の出力を模式的に表したものであり、スロットマシン10に設けられた物理的ないずれか一つのスピーカと対応していることを意味している訳ではない。
【0058】
スケジューラ252と出力チャンネルとの対応関係は、チャンネルCh1〜Ch4に対応づけて設けられたチャンネル管理用ワーク253[1]〜253[4]によって管理される。図の右下にチャンネル管理用ワーク253のデータ構造を例示した。このワーク253では、レイヤ番号、フレーズ番号、ステレオ再生フラグ、出力ボリューム、ループ属性が格納されている。
【0059】
レイヤ番号は、各チャンネルを使用するレイヤを規定する。図の例では、チャンネルCh4は、レイヤ#3が使用していることを表している。レイヤ番号を変更することによって、チャンネルとスケジューラとの対応関係を切り換えることができる。例えば、スケジューラ252[4]は、図中の例では、チャンネルCh2と割り当てられているが、チャンネル管理用ワーク253[4]のレイヤ番号を「#4」に変更すれば、チャンネルCh4に割り当てられる。同様に、チャンネル管理用ワーク253[1]、253[2]のレイヤ番号を「#4」に変更すれば、それぞれチャンネルCh1、Ch2に割り当てられることになる。
フレーズ番号は、各レイヤから出力される一連の音声のうち、現在、どのフレーズが再生されているのかを示す情報である。ステレオ再生フラグは、ステレオ出力するか否かを表している。出力ボリュームはチャンネルごとのボリュームである。ループ属性は、繰り返し再生するか否かの指定である。これらの情報は、サウンドモジュールメイン251によって指定される。
【0060】
本実施例の構成は、出力ボリュームに関わらず音源コマンドを生成する機能と、出力先、および出力間の優劣やボリュームを調整する機能とを分離した構成と言える。前者がスケジューラ252の機能であり、後者がサウンドモジュールメイン251の機能である。
こうすることにより、複数のスケジューラ252には、スケジューラ間の優劣等を考慮することなく再生すべきスケジュールデータを指定しさえすればよいため、その動作制御が簡素なものとできる利点がある。また、スケジューラの処理負荷も軽減する。更に、音声出力の過程で、柔軟に出力チャンネルや優先度、ボリュームを調整できる利点もある。
【0061】
例えば、音声出力中に、サウンドモジュールメイン251が、各チャンネルのレイヤ番号を変更することにより、各チャンネルから出力されるレイヤを容易に切り換えることができる。レイヤ1、2をそれぞれチャンネルCh1、Ch2から出力している途中で、出力先のチャンネルを入れ替えることが可能となるのである。この結果、チャンネルCh1がボリューム大、Ch2がボリューム小に設定されている場合には、大小のボリュームバランスを変えることなく、今まで大きく再生されていた音声を小さく出力し、小さく再生されていた音声を大きく出力することを容易に実現することできる。
【0062】
また、別の例として、一部のレイヤの出力ボリュームを0とすることにより、特定のレイヤの音声を容易に消去させることができ、一時的に特定のレイヤの音声のみを出力することができる。この間も、ボリューム0とされたレイヤは、音声の再生だけは継続的に行っているから、ボリュームを復帰させれば、従前の続きの音声が違和感なく出力されるという利点がある。
【0063】
図中では、サウンドモジュール250について、演出制御の基本概念を示した。本実施例では、ランプモジュール260についても同様の構成を採用している。つまり、ランプモジュール内にも、ランプデータを生成するための複数のスケジューラが設けられており、レイヤ構造を採用している。ランプモジュール用のレイヤは、優先度の高い順に次の通りである。
設定変更;
エラー報知;
扉開放報知;
機能表示2(告知等);
機能表示1(払い出し等);
遊技演出;
ランプについてのレイヤ構造は、これに限定されるものではなく、この中の一部を省略してもよいし、この他のレイヤを追加してもよい。
【0064】
ランプについては、全て「禁止」扱いである。つまり、上述のレイヤの中で最も優先度の高いもののみが出力される。従って、サウンドモジュールと異なり、出力間のボリューム調整の機能も設けられていない。もっとも、ランプについても、サウンドと同様、他のレイヤの出力を「許可」するとともに、各レイヤの出力強度を調整するボリューム相当の機能を設けても良い。例えば、演出用のレイヤを複数設けておき、これらを共に出力許可扱いとしておけば、両者の重ね合わせ、およびその出力強度の調整によって、多様な演出を容易に実現することができる利点がある。
【0065】
以上で、スロットマシン10の制御機構のモジュール構成および演出制御の基本概念について説明した。次に、各モジュールの機能について、データ構造を示しながら、より詳細に説明する。
【0066】
C3.イベントモジュールの機能:
図5はシステムイベントの生成を示す説明図である。イベントモジュール230は、先に
図3で説明した通り、主基板コマンドに基づいて、システムイベントおよびユーザイベントを生成し、管理する機能;これらのイベントに応じて、演出番号を特定し、演出モジュール240に受け渡す機能;およびシステムイベントに基づいて液晶コマンド、音声動作番号、ランプ動作番号を設定する機能を奏する。
破線枠内に本実施例でシステムイベントとして管理する状態SEを示した。下側に行くほど優先度が高くなる。制御の便宜上、「電源投入」もシステムイベントと同じ扱いとしている。
【0067】
イベントモジュール230がイベントの処理に使用するワーク231を左側に示した。
このワークでは、管理すべきイベントの数に対応したイベント情報[1]〜[n]が格納されている。イベント情報[1]〜[n]は、「電源投入」を除く各システムイベントSEと対応しており、各イベントが「ON」、「OFF」、「ONからOFFへの切り換え」、「OFFかONへの切り換え」のいずれの状態にあるかを管理している。例えば、遊技者による操作がなされないまま所定時間経過したことが主基板コマンドその他の情報によって検出されると、イベントモジュール230は、「デモ」に移行すべきと判断し、これに対応するイベント情報[1]を「OFFかONへの切り換え」に設定する。
【0068】
ワーク231における「効果音停止レイヤ」および「ランプ停止レイヤ」は、上述のイベントの発生/停止等に応じて、出力を停止させるべきサウンドレイヤ番号、ランプレイヤ番号を格納する。図の煩雑化を回避するため、図示を省略したが、「効果音停止レイヤ」、「ランプ停止レイヤ」等のワーク231も、それぞれ並行して指定できるよう必要数だけ設けられている。
ワーク231における「サウンド起動レイヤ」および「サウンド起動パターン」は、イベント発生/停止等に応じて、サウンドを出力させるべきレイヤ、および出力させるべきサウンドのパターンをそれぞれ番号で指定する。サウンドパターンの番号とは、
図3中の音声動作番号を意味する。ワーク231における「ランプ起動レイヤ」および「ランプ起動パターン」も同様に、起動させるべきランプレイヤおよびランプの点灯パターンをそれぞれ番号で指定する。ランプの点灯パターンの番号とは、
図3中のランプ動作番号を意味する。上述の「デモ」起動の時には、サウンドレイヤ[1]で効果音[1]、ランプレイヤ[1]でランプ[1]を起動させることになる。
【0069】
ワーク231における「パワーセーブ監視タイマ」は無操作期間を監視するために使用されるタイマである。このタイマで指定された時間が経過すると、通常遊技からデモ状態に移行したと判断される。ワーク231における「リール空回し警告タイマ」は、停止ボタン16が操作されることなくリールが回転し続けた時間を監視するためのタイマである。このタイマで指定された時間が経過すると、「リール空回し警告中」イベントに応じて、LCD21にエラー表示がなされる。
【0070】
ワーク231における「効果音停止レイヤ」、「ランプ停止レイヤ」等は、動作番号テーブル232、およびレイヤ情報テーブル233によって与えられる。これらのテーブルは、予め規定され、ROM202に格納されている。動作番号テーブル232は、イベントごとに、起動すべき音声動作番号(図中の効果音[0]〜[n])、およびランプ動作番号(図中のランプ[0]〜[n])を格納している。レイヤ情報テーブル233は、イベントごとに、音声を出力すべきレイヤ(図中のサウンドレイヤ[0]〜[n])、およびランプレイヤ[0]〜[n]を格納している。イベントモジュール230は、イベントの状態に応じて、動作番号テーブル232およびレイヤ情報テーブル233を参照し、その結果をワーク231に反映させるという処理を実行する。
【0071】
この他に、先に
図3で説明した通り、システムモジュール210は、例えば、始動レバー15の操作、停止ボタン16の操作、リールの停止状態、およびシステムイベント情報などに応じて演出番号を特定する。本実施例では、予めこれらの各種イベントと演出番号との関係を規定した演出抽選テーブルを参照することによって、遊技状態に応じた演出番号を特定する方法を採った。
【0072】
また、更に、システムモジュール210は、所定のタイミングで、画面設定コマンドをVDP204に出力する。これは、画面設定等に関するコマンドであり、こうすることで、ノイズなどの影響で演出表示に支障が生じた場合でも、速やかに復旧することが可能となる。
【0073】
システムモジュール210は、この他、遊技中に行われる基本的な操作に連動した音声出力やランプ表示を行わせるための音声動作番号、ランプ動作番号の出力を行う。出力される音声としては、例えば、「メダル投入音」、「ウェイト音」、「回胴回転開始音」、「リール停止音」、「払い出し音」などが挙げられる。ランプ表示としては、ベット時、レバーON時、リール停止時の表示などが挙げられる。本実施例では、これらの音声動作番号、ランプ動作番号は、システムイベントの管理で使用するワーク231のサウンド起動レイヤ、サウンド起動パターン、ランプ起動レイヤ、ランプ起動パターンに書き込まれる。これらの音声、ランプ出力は、システムイベントに応じた音声、ランプ出力とは別のレイヤとして管理される。
【0074】
C4.演出モジュールの機能:
図6は演出モジュール240の機能を示す説明図である。演出モジュール240は、イベントモジュール230から演出番号を受け取り、VDP204、サウンドモジュール250およびランプモジュール260に出力するコマンドを設定する。図中には、このコマンドを設定するために参照される演出データ241の構造を示した。
【0075】
本実施例では、演出データ241は、イベントモジュール230から指定される演出番号ごとに用意され、ROM202に格納されている。演出データ241と演出番号との対応関係は、演出管理テーブルに規定されている。図の左側に示す通り、演出管理テーブルは、演出データの格納アドレスを示す、演出管理ポインタを備えている。演出管理ポインタは、演出番号に対応する数だけ用意されているが、ここでは5つのみを例示した。図の例では、例えば、演出管理ポインタ[1]は、最初は、演出データ241の先頭アドレスA1を格納していることになる。演出データの処理が実行されるにつれ、演出管理ポインタ[1]の値は、順次、A1、A2と移行していく。
【0076】
本実施例では、演出番号は、演出管理ポインタのアドレス値を用いるものとした。図の例では、演出番号01H、02H等は、それぞれ演出管理ポインタ[1]、[2]等の格納アドレスを表している。もっとも、演出番号はアドレス値に限らず、任意の識別情報を用いることができる。この場合には、演出管理テーブルを、演出番号と演出管理ポインタとを対応づけた構成とすればよく、演出モジュール240は、演出番号をキーとして演出管理ポインタを検索した上で、演出データの処理を行うようにすればよい。もっとも、演出管理ポインタのアドレス値を演出番号として用いれば、演出管理テーブルのデータ量を軽減できるとともに、上述の検索も不要となるため、演出データの処理に要する負荷を軽減できる利点がある。
【0077】
演出データ241は、図示する通り、一つ一つのコマンドは、原則としてファンクションとパラメータから構成される。ファンクションとは、演出モジュール240が実行すべき機能である。本実施例で用いるファンクションの例を以下に示す。パラメータは、ファンクションの処理内容を具体的に指示する変数である。パラメータを指定する必要がないファンクションを設けても良い。
(1) 主基板コマンド受信チェック…所定の主基板コマンドを受信したか否かをチェックする。チェック対象となる主基板コマンドは、パラメータで指定する。
(2) ジャンプ…パラメータで指定されたアドレスを演出管理ポインタにセットする。
演出モジュール240は、指定されたアドレスにジャンプして演出データの処理を継続することになる。
(3) コール…次のファンクションのポインタ値を待避した上で、パラメータで指定されたアドレスを演出管理ポインタにセットする。演出モジュール240は、一時的にパラメータで指定されたアドレスに移行して演出データの処理を行った後、上述の待避したポインタ値に基づき、従前の処理に復帰することができる。
(4) リターン…コール先から復帰するための指示である。コールで待避したポインタ値を、演出管理テーブルに設定する機能を有する。
(5) タイマセット…待ち時間用のタイマの値を設定する。このタイマ値は、処理中に順次、減算される。タイマ値が0となった時に指定された待ち時間が経過したことを表す。
(6) タイマウェイト…設定されたタイマが0となるまで待って、演出データの処理を継続する。
(7) メモリ参照…所定のイベントの発生有無が設定された条件を満たすか否かを判断し、満たしたか否かによって、次に行う処理を分岐する。イベントの発生有無は、パラメータが示すイベント用メモリの値を参照することによって監視する。
(8) 演出終了…演出番号をクリアし、実行終了する。この際、演出管理ポインタに演出データの先頭アドレスを書き込むことによって、リセットしておく。
(9) 液晶コマンドセット…液晶に送信するコマンドを設定する。
(10) 音声動作番号セット…サウンドモジュール250に出力する音声動作番号を設定する。
(11) ランプ動作番号セット…ランプスケジュール260に出力するランプ動作番号を設定する。
【0078】
図中の例では、アドレスA2において「コール」ファンクションが指定されている。演出モジュール240は、このパラメータで指定されたアドレスA31を次に実行する。図の例では、アドレスA31において液晶コマンドをセットし、A32において音声動作番号、A33においてランプ動作番号をセットして、A3nでリターンする。演出コマンドは、これらの処理を終了すると、「コール」が指定されたアドレスA2に復帰し、次のアドレスA3の処理に移行する。
【0079】
このように、コールファンクションを活用することによって、アドレスA31〜A3nで指定された一連のブロックBL3の内容を演出データの種々の部分に取り込むことが可能となる。こうすることによって、演出データの容量を低減できるとともに、その作成負荷を軽減することができる。また、こうすることで、次に示す通り、スロットマシン10に特有の効果も有する。スロットマシン10では、遊技中に種々の抽選等が行われ、その結果に応じて遊技の展開が変わってくる。遊技者の中には、抽選中の演出内容の微妙な違いを見つけて、抽選結果等を推測することができる者もいる。これに対し、本発明では、コールによって、汎用的な演出内容を種々の場面で活用することができるため、こうした微妙な違いを解消することができ、抽選結果等を予測しづらくすることができ、遊技の興趣が損なわれるのを抑制することができるのである。
【0080】
このように「コール」ファンクションを用いることが可能ではあるが、本実施例の演出データ241は、インタプリタのプログラムとは異なるものである。上述の通り、演出データ241で使用する主たるファンクションは、「液晶コマンドセット」、「音声動作番号セット」、「ランプ動作番号セット」など、他のスケジューラへの指示内容を設定するものであり、演出モジュール240が実現できる非常に限定的な機能を具体的に指示するものに過ぎないからである。
【0081】
図中の例では、次にアドレスA3でタイマウェイトが実行される。ここでは、パラメータPrm[031]で指定された時間が経過するまで、演出データの処理が待たれる。後述する通り、本実施例では、タイマ割り込みによって処理が繰り返し実行される。従って、演出モジュール240は、タイマウェイトファンクションでは、パラメータPrm[031]の値が0でなければ、以降の処理を行うことなく演出データの処理を一旦終了し、この値が0であれば、次のアドレスのファンクションに移行するという処理を行う。
【0082】
図中の例では、アドレスA11でメモリ参照、即ち条件分岐が実行されている。ここでは、所定のボタンが押されたか否かを条件とする場合を例示した。主基板から受け渡されるコマンドに基づいて、ボタンが押されるというイベントの発生が検出されると、演出モジュール240はアドレスA11の次のアドレスの処理に移行する。このイベントが発生するまではパラメータPrm[112]で指定されるアドレスに移行する。
【0083】
本実施例では、パラメータPrm[112]に、自己のアドレスA11を指定することにより、ボタンが押されるまで処理が先に進まないような構成とした。この結果、本実施例の演出データ241は、開始アドレスA1から条件分岐A11までを一連のブロックBL1として捉えることができる。演出データ241では、この処理内では、液晶コマンド、音声動作番号、ランプ動作番号が相互に抵触しないように指定される。
【0084】
本実施例では、先に
図5で示したワーク231と同じ形式のワークを利用して、音声動作番号等の指定を行っている。システムイベントが使用するワーク231と演出モジュール240が使用するワークとは別に用意されており、演出モジュール240は、演出データの指定に従って、音声動作番号等をそれぞれワークに格納する。また、演出モジュール240が指定するレイヤも、システムモジュール用のレイヤ(
図5参照)とは別に設けられている。演出モジュール用のワークにおいても、これらのレイヤの中から、音声動作番号、ランプ動作番号を並行して複数指定可能となっている。
【0085】
条件分岐のアドレスA11以降も同様に演出データは、ファンクションおよびパラメータによって規定される。図中の例では、条件分岐のアドレスA11以降、演出終了(アドレスAn)に至るまで、条件分岐は設けられていない例を示した。この範囲は、上述のブロックBL1とは別のブロックBL2となるため、ブロックBL1との抵触を考慮することなく、液晶コマンド(アドレスA22)や音声動作番号(アドレスA21)などが指定可能である。これらの設定に代えて、コールファンクションによって、ブロックBL3等を取り込むようにしてもよい。
【0086】
演出データでは、条件分岐とコールファンクションとを組み合わせて用いても良い。例えば、演出内容を切り換えるための乱数を発生させ、その乱数の値に応じて異なるアドレスをコールすればよい。
図6の例では、アドレスA2において、「乱数値≦Th1?」という条件を付せば、この条件を満たす時にアドレスA31〜A3nの演出が実行されることになる。また、アドレスA2の次(アドレスA2+1)において、「Th1<乱数値≦Th2?」という条件を付して、アドレスA41(図示しない)をコールすれば、乱数の値に応じて、アドレスA31以降とは異なる演出が実行される。このように、乱数に応じた条件分岐で異なるアドレスをコールすれば、乱数によって演出内容をランダムに切り換えることができ、遊技の興趣を高めることが可能となる。以下、このように演出内容を切り換えることを、本明細書では、「演出抽選」と呼ぶものとする。
【0087】
演出抽選の適用例としては、例えば、次の態様が挙げられる。
(1)子役の告知を行う(音、表示、ランプの演出抽選);
(2)内部あたり時の効果音を切り換える(音の演出抽選);
(3)時間帯によって表示の背景を切り換える(表示の演出抽選);
(4)リーチ態様によってテンパイ時の効果音を切り換える(音の演出抽選);
(5)変動開始音の出力タイミングを遅らせる(音の演出抽選);
(6)アシストタイム抽選を表示する(表示の演出抽選);
(7)メインで表示されるキャラクター以外のサブキャラを表示させる(表示の演出抽選);
(8)予告音の出力(音の演出抽選);
(9)内部当たり告知を数ゲームにわたって行う(表示の演出抽選);
(10)入賞した役によってリール停止時のバックライトを変化させる(ランプの演出抽選)
【0088】
上述の例では、演出抽選によって表示、音、ランプの全てを切り換える場合もあれば、一部のみを切り換える場合もある。全てを切り換える場合には、コールファンクションで呼び出された演出データ内で、表示、音、ランプの内容を全て指定すればよい。一部のみを切り換える場合には、コールファンクションで呼び出された演出データ内で、切り換えの対象となる部分のみを指定し、その他の部分はコールファンクションからリターンしてきた後に統一して指定すればよい。
【0089】
上述の通り、演出抽選は、あくまでもサブ制御基板200の制御処理によって、演出内容を切り換えるものであり、遊技自体に影響を与えるものではない。しかし、このように演出抽選を可能とすることによって、メイン制御基板100から出力されるコマンドの種類よりも多彩な演出を実現することができ、興趣をより高めることができる。
【0090】
C5.サウンドモジュールの機能:
図7はサウンドモジュール250の機能を示す説明図である。サウンドモジュール250は、ROM202に格納されたスケジュールデータ255を参照しながら、音声出力を行う。先に
図4で説明した通り、サウンドモジュール250は、複数のスケジューラ252を併用してこれらの処理を行う。各スケジューラ252は、音声用のサウンドレイヤと対応づけて設けられている。また、各スケジューラ252には、動作管理用のワーク252Wがそれぞれ用意されている。ワーク252Wの内容は後述する。
【0091】
演出モジュール240から音声動作番号を受け取ると、サウンドモジュール250は、音声動作番号テーブルを参照して、実行すべきスケジュールデータ255を特定する。音声動作番号テーブルは、音声動作番号に対して、サウンドポインタおよびサウンドレイヤを対応づけたテーブルである。本実施例では、音声動作番号は、音声動作番号テーブルの格納アドレスを用いるものとした。音声動作番号は、任意の識別情報を用いることが可能であるが、先に演出番号(
図6参照)で説明したのと同じく、格納アドレスを用いた方が音声動作番号テーブルの容量低減およびテーブル参照時の処理負荷軽減という利点がある。
【0092】
サウンドポインタは、スケジュールデータ255の格納アドレスを指定している。本実施例では、サウンドポインタ[1]には、アドレスSA1が格納されていることになる。
【0093】
スケジュールデータ255は、演出データ(
図6参照)と同様、ファンクションとパラメータによって構成されている。スケジュールデータ255で使用されるファンクションは次の通りである。
(1) タイマセット…パラメータで設定された時間をワーク252Wのタイマにセットする。
(2) フレーズ再生…パラメータで設定されたフレーズ番号が示すフレーズデータを再生する。フレーズデータの内容については後述する。
(3) フレーズ消音…パラメータで設定されたフレーズデータを再生しているチャンネルの再生を停止する。
(4) チャンネル消音…パラメータで設定されたチャンネルの再生を停止する。
(5) スケジューラ停止…処理を停止し、使用していたチャンネルを解放する。
(6) コール…次のファンクションのポインタ値を待避した上で、パラメータで指定されたアドレスをサウンドポインタにセットする。
(7) リターン…コール先から復帰する。
(8) ジャンプ…パラメータで指定されたアドレスをサウンドポインタに設定する。
(9) ループ…ループからループエンドまでの間のファンクションを、パラメータで指定された回数だけ繰り返し実行する。
(10) ループエンド…ループの終了を表す。
【0094】
図中の例では、アドレスSA2において、コールファンクションが規定されている。サウンドモジュール250は、演出データ(
図6)で示したのと同じように、アドレスSA31(図示せず)以降の一連のブロックを実行した後、アドレスSA2の次のアドレスSA3の処理を行う。
【0095】
アドレスSA3では、フレーズ再生が規定されている。サウンドモジュール250は、パラメータで指定されたフレーズ番号00Hに対応するフレーズデータ255Fを読み込み、これを再生する。
【0096】
図の右側にフレーズデータ255Fの構造例を示した。フレーズ番号は、各フレーズデータに付された識別情報である。本実施例では、任意の識別情報を用い得る形としたが、フレーズデータ255Fの格納アドレスをフレーズ番号として用いてもよい。この場合には、フレーズデータ255Fからフレーズ番号を省略することもできる。
【0097】
チャンネルは、フレーズ再生時の出力チャンネルの指定である。左右パンポット、上下パンポットとは、スロットマシン10に備えられた4つのスピーカの左右/上下の出力バランスである。ボリュームは、出力ボリュームである。曲番号は、再生すべき音声の識別番号である。この番号が音源IC205に受け渡されると、音源IC205は、これに対応する音源データをROM202から読み出し、音声を再生する。ループは、音声を繰り返し再生するか否かの指定である。ステレオは、ステレオ出力するか否かの指定である。
【0098】
スケジュールデータ255は、上述のように「コール」ファンクションを用いることが可能ではあるが、本実施例のスケジュールデータ255は、インタプリタのプログラムとは異なるものである。上述の通り、スケジュールデータ255で使用する主たるファンクションは、「フレーズ再生」など、音声の出力という非常に限定的な機能を具体的に指示するものに過ぎないからである。つまり、予め用意された「フレーズ再生」などの各機能を、実行するタイミング、実行する回数などを規定しているに過ぎないからである。
【0099】
各スケジューラ252には、動作管理用のワーク252Wが対応づけられている。ワーク252Wには、図中に示す種々の情報が格納される。
動作状態は、各レイヤが動作中か否かを示している。
音声番号は、動作中のスケジュールデータ255の番号を表している。本実施例では、スケジュールデータ255の先頭アドレスを用いるものとした。
サウンドポインタは、スケジューラ252が実行しているスケジュールデータ255のアドレスである。図中の例では、処理が進むにつれ、サウンドポインタの値は、順次、SA2、SA3と移行する。
タイマ値は、次のファンクションを実行するまでの待ち時間を表す。スケジュールデータ255で待ち時間が指定された時に設定され、時間の経過とともに、順次、減算される。サウンドモジュール250は、この値が0となった時に次のファンクションを実行する。
【0100】
コールネスト数、ループネスト数は、スケジュールデータ255およびフレーズ番号で多重的に指定されたコール、ループのネスト数を表している。つまり、例えば、アドレスSA2のコールファンクション(第1コール)で呼び出されるアドレスSA31以降の処理において、更にコールファンクション(第2コール)によって別のアドレスのスケジュールデータ255を呼び出すと、コールネスト数は2となる。第2コールを終えて、第1コールに復帰すると、コールネスト数は1に減じられる。ループも同様である。コール戻りアドレスはコール先からの戻りアドレスでありコールネスト数に応じて設けられる。ループ先頭アドレスは、ループ範囲の先頭アドレスであり、ループ回数は、ループの繰り返し回数である。ループ先頭アドレス等は、ループネスト数に応じて設けられる。
【0101】
C6.ランプモジュールの機能:
図8はランプモジュール260の機能を示す説明図である。ランプモジュール260は、ROM202に格納されたスケジュールデータ265を参照しながら、ランプ出力、即ちランプの点灯・点滅制御を行う。ランプモジュール260も、複数のスケジューラ262を併用してこれらの処理を行う。各スケジューラ262は、ランプ用のランプレイヤと対応づけて設けられている。また、各スケジューラ262には、動作管理用のワーク262Wがそれぞれ用意されている。ワーク262Wの内容は後述する。
【0102】
演出モジュール240からランプ動作番号を受け取ると、ランプモジュール260は、ランプ動作番号テーブルを参照して、実行すべきスケジュールデータ265を特定する。
ランプ動作番号テーブルは、ランプ動作番号に対して、ランプポインタおよびランプレイヤを対応づけたテーブルである。本実施例では、ランプ動作番号は、ランプ動作番号テーブルの格納アドレスを用いるものとした。ランプ動作番号は、任意の識別情報を用いることが可能であるが、先に演出番号(
図6参照)で説明したのと同じく、格納アドレスを用いた方がランプ動作番号テーブルの容量低減およびテーブル参照時の処理負荷軽減という利点がある。
【0103】
ランプポインタは、スケジュールデータ265の格納アドレスを指定している。本実施例では、ランプポインタ[1]には、アドレスLA1が格納されていることになる。
【0104】
スケジュールデータ265は、演出データ(
図6参照)と同様、ファンクションとパラメータによって構成されている。スケジュールデータ265で使用されるファンクションは次の通りである。
(1) タイマセット…パラメータで設定された時間をワーク252Wのタイマにセットする。
(2) 階調パターン設定…パラメータで設定された階調パターンデータアドレスを設定し、ワーク262W内の階調データタイマをクリアすることによって、階調データの実行を指示する。
(3) ジャンプ…パラメータで指定されたアドレスをランプポインタに設定する。
(4) スケジューラ停止…処理を停止する。
(5) ループ…ループからループエンドまでの間のファンクションを、パラメータで指定された回数だけ繰り返し実行する。
(6) ループエンド…ループの終了を表す。
【0105】
図中の例では、アドレスLA2において、コールファンクションが規定されている。ランプモジュール260は、演出データ(
図6)で示したのと同じように、アドレスLA31(図示せず)以降の一連のブロックを実行した後、アドレスLA2の次のアドレスLA3の処理を行う。
【0106】
アドレスLA3では、階調パターン設定が規定されている。ランプモジュール260は、パラメータで指定されたアドレスLA11に格納されている階調パターンデータ266を設定する。ランプスケジューラ262には、それぞれ階調スケジューラ263が対応づけて設けられており、指定された階調データ1でランプを点灯させ、タイマ値で指定された時間が経過すると、階調データ2でランプを点灯させる。ここでは、2通りの階調データが指定されている例を示したが、3つ以上指定されている場合も、タイマ値の時間間隔で順次、階調データを切り換えつつ、ランプを点灯させる。階調パターン設定をアドレスLA12以降も複数用意しておくことにより、階調データ間の切り換えタイマ値を変化させつつ、種々の階調パターンでランプを点灯させることが可能となる。階調パターンデータ内に、ループを設けることも可能である。階調スケジューラ263は、アドレスLA11〜LA1nの一連の処理を実行すると、ランプの点灯を終了する。ランプスケジューラ262は、スケジュールデータ265のアドレスLA3の処理に復帰し、次のアドレスの処理を停止(アドレスLAn)に至るまで実行する。
【0107】
各スケジューラ262には、動作管理用のワーク262Wが対応づけられている。ワーク262Wには、図中に示す種々の情報が格納される。
スケジューラステータスは、スケジューラが起動中か否かを示す。
動作パターンナンバーは、動作中のスケジュールデータ265の番号を表している。本実施例では、スケジュールデータ265の先頭アドレスを用いるものとした。
スケジューラタイマは、次のファンクションを実行するまでの待ち時間を表す。スケジュールデータで待ち時間が指定された時に設定され、時間の経過とともに、順次、減算される。ランプ260は、この値が0となった時に次のファンクションを実行する。
階調データタイマは、階調パターンデータ266の実行時に、次の階調データを実行するまでの待ち時間を表す。図の例で、アドレスLA11に規定された階調データを実行する際には、階調データタイマに、設定されたタイマ値が0になると、階調データ1から階調データ2に移行し、再びタイマ値が0になると、アドレスLA11の処理を終了してアドレスLA12の処理に移行する。
【0108】
ランプポインタは、スケジューラ262が実行しているスケジュールデータ265のアドレスである。図中の例では、処理が進むにつれ、ランプポインタの値は、順次、LA1、LA2、LA3と移行する。
階調データポインタは、階調スケジューラ263が実行している階調パターンデータ266のアドレスである。図中の例では、処理が進むにつれ、階調データポインタの値は、順次、LA11、LA12と移行する。
ループ回数は、ループの繰り返し回数であり、ループ先頭アドレスは、ループ範囲の先頭アドレスである。サウンドの場合と同様、ループにネストを許容してもよい。
【0109】
D.演出制御処理:
本実施例では、以上で説明した各モジュールの機能によって、演出制御が実行される。
以下では、演出制御の処理内容を示す。それぞれの処理は、ソフトウェア的には先に説明した各モジュールが連動して実現するものであり、ハードウェア的にはサブ制御基板200のCPU201が実行する処理である。
【0110】
D1.メイン処理:
図9はメイン処理のフローチャートである。左側に定常処理、右側にタイマ更新処理を示した。定常処理は16msecの周期で繰り返し実行され、タイマ更新処理は2msecの周期で繰り返し実行される。それぞれの周期は、任意に設定可能である。
【0111】
定常処理には、電源投入後の一連の処理を示した。電源が投入されると、CPU201は、割り込みを禁止し(ステップS10)、起動処理として種々のレジスタ設定等を行う(ステップS11)。起動処理が終了すると、割り込みを許可して(ステップS12)、メイン処理ルーチンに入る。
【0112】
メイン処理ルーチンでは、イベント処理(ステップS30)、演出データ処理(ステップS40)、サウンド処理(ステップS50)、ランプ処理(ステップS60)、および液晶へのコマンド出力(ステップS70)を16msec周期で繰り返し実行する。これらの処理は、それぞれイベントモジュール230、サウンドモジュール250、演出モジュール240、ランプモジュール260の機能に相当する処理である。
【0113】
メイン処理ルーチンの実行中には、先に説明した通り、種々のタイマが使用される。図の中央に示したタイマテーブルTWは、メイン処理ルーチンで使用される種々のタイマ値を、それぞれタイマ[1]〜タイマ[n]に対応づけて格納するテーブルである。メイン処理ルーチンにおいて、各モジュールは、タイマテーブルTWを参照することによって、処理に必要なタイマ値を更新することができる。
【0114】
タイマテーブルのタイマ[1]〜タイマ[n]の値は、2msec周期で実行されるタイマ更新処理によって更新される。右側にタイマ更新処理のフローチャートを示した。この処理では、CPU201は処理対象のタイマ[i]が0でない場合には(ステップS21)、タイマ値を1だけ減算し(ステップS22)、そうでない場合には、減算処理をスキップする。CPU201は、処理対象のタイマ[i]を、タイマ[1]〜タイマ[n]に順次、切り換えながら全タイマについて終了するまで(ステップS23)、繰り返し実行する。タイマ更新処理を実行することによって、タイマテーブルTWに格納されたタイマ[1]〜タイマ[n]の値は、2msec周期で、値0になるまで順次、減算させることとなる。メイン処理ルーチンの各モジュールは、タイマテーブルTWの値が0になっているか否かを監視することで、指定した時間が経過したか否かを判断することができる。
【0115】
本実施例では、このようにタイマテーブルの値をメイン処理ルーチンの各モジュールが必要に応じてポーリングするという構成を採用した。時間の監視は、かかる方法に限定されるものではなく、タイマ更新処理において、タイマテーブルのタイマ[1]〜タイマ[n]のいずれかの値が0となった時に、そのタイマに対応するモジュールに時間経過を知らせる通知を発する構成を採用してもよい。
【0116】
D2.イベント処理:
図10はイベント処理のフローチャートである。イベントモジュール230が実行する処理であり、メイン処理ルーチンのステップS30に相当する処理である。
【0117】
この処理では、CPU201は、まず主基板コマンドを読み込み(ステップS41)、その内容を解析する(ステップS42)。そして、主基板コマンドに応じてシステムイベントを作成する(ステップS43)。つまり、
図5に示したワーク231に対し、各イベント情報を設定することでスロットマシン10がどのような状態にあるかを表すとともに、その結果に応じて、効果音停止レイヤ等を設定して、演出表示以外の種々の動作を設定する。
【0118】
CPU201は、優先度の高いイベントから順に、この処理を実行し、途中で「ON→OFF」、または「OFF←ON」に切り換えられるイベントが生じた場合には、以後のイベントについての処理をスキップする(ステップS44)。切り換えられるイベントがない場合には、全イベントについて上述の処理を実行する(ステップS45)。
【0119】
これらの処理が終了すると、CPU201は、演出番号の設定(ステップS46)、液晶コマンド設定(ステップS47)、サウンドパターン起動(ステップS48)、ランプレイヤ起動(ステップS49)を順次実行する。
演出番号の設定(ステップS46)とは、先に
図5で説明した通り、例えば、始動レバー15の操作、停止ボタン16の操作、リールの停止状態、およびシステムイベント情報などに応じて、演出番号を特定する処理である。
液晶コマンド設定(ステップS47)とは、ノイズなどの影響で演出表示に支障が生じた場合の対策として、画面設定等に関する画面設定コマンドをVDP204に出力する処理である。
サウンドパターン起動(ステップS48)およびランプレイヤ起動(ステップS49)とは、遊技中に行われる基本的な操作に連動した音声出力やランプ表示を行わせるための音声動作番号、ランプ動作番号の出力を行う。出力される音声としては、例えば、「メダル投入音」、「ウェイト音」、「回胴回転開始音」、「リール停止音」、「払い出し音」などが挙げられる。ランプ表示としては、ベット時、レバーON時、リール停止時の表示などが挙げられる。
【0120】
D3.演出データ処理:
図11は演出データ処理のフローチャートである。演出モジュール240が実行する処理であり、メイン処理ルーチンのステップS40に相当する処理である。
【0121】
CPU201は、演出番号を読み込み(ステップS41)、演出番号が正常か否かを判断する(ステップS42)。ノイズ等の影響で、正常でない演出番号が指定されている場合には(ステップS42)、CPU201は、演出データ処理を終了する。この際、読み込んだ演出番号は破棄される。
【0122】
演出番号が正常な場合には(ステップS42)、CPU201は、演出管理テーブル(
図6参照)を参照し(ステップS43)、演出番号に対応した演出管理ポインタ値を得る。この演出管理ポインタ値が異常の場合には(ステップS44)、CPU201は、スケジューラを停止して(ステップS46)、処理を終了する。
【0123】
演出管理ポインタ値が正常の場合には(ステップS44)、そのポインタで指定された演出データを読み込み、そこに規定されたファンクションを実行する(ステップS45)。演出データの構造およびファンクションの種類は、
図6で説明した通りである。この処理によって、遊技状態に応じた演出を実現するための液晶コマンド、音声動作番号、ランプ動作番号が設定され、ワーク231(
図5参照)に格納される。CPU201は、条件分岐、タイムウェイトなどの処理によって演出データの処理の中断が指示される場合、または演出終了が指示されるまで、この処理を継続する(ステップS47)。
【0124】
以上の処理を終了すると、
図9に示した通り、演出データに従って指定された音声動作番号、ランプ動作番号は、次に示すサウンド処理、ランプ処理に受け渡される。また液晶コマンドはメイン処理ルーチンにおいて、VDP204に出力される(
図9のステップS70)。
【0125】
D4.サウンド処理:
図12はサウンド処理のフローチャートである。サウンドモジュール250が実行する処理であり、メイン処理ルーチンのステップS50に相当する処理である。
【0126】
CPU201は、複数のスケジューラ252に対して、処理対象となるスケジューラを順次切り換えながら、ステップS51〜S54の処理を実行する。まず、CPU201は、処理対象となる音声動作番号に応じて、スケジューラの起動中、または新たに起動が必要か否かを判断する(ステップS51)。スケジューラが起動中でなく、新たに起動する必要もない場合には、処理対象を次のスケジューラに切り換えて順次処理を行う。起動の要否は、演出データ処理(
図11)で設定されたワーク231を参照することで判断できる。また、スケジューラが既に起動中か否かは、サウンドスケジューラ252が使用するワーク252W(
図7参照)の動作状態を参照することによって判断できる。
【0127】
スケジューラ252が起動中または新規起動と判断された場合には(ステップS51)、スケジューラ252に対応づけられたワーク252Wを参照し、タイマ値が0となっているか否かを判断する(ステップS52)。タイマ値が0でない場合には、処理の待ち時間中であることを意味するため、CPU201は、そのスケジューラ252に対しては、何も処理を行うことなく、処理対象を次のスケジューラに切り換える。
【0128】
タイマ値が0の場合には、スケジューラが次のファンクションを実行すべきタイミングにあることを意味する。従って、CPU201は、スケジューラの更新(ステップS53)、即ちスケジューラポインタを一つ進める処理を行う。そして、新たなポインタで指定されたスケジュールデータを読み込み、そのファンクションに従った処理を実行する。この処理において、先に
図7で説明した通り、フレーズ再生が指定されていると、音源コマンドとして、フレーズデータ255Fに従った曲番号が出力され、音源IC205が音声を再生する。CPU201は、以上の処理を全スケジューラについて順次、実行する(ステップS54)。
【0129】
次に、CPU201は、起動中のスケジューラのうち、最優先のスケジューラを選択する(ステップS55)。図の右側に本実施例におけるサウンドレイヤ構造254を示した。先に
図4で説明した通り、本実施例では#1〜#8までの8つのサウンドレイヤを有している。下に行くほど優先度が高いレイヤとなっている。仮に、図中に○をつけたレイヤ#1,#2、#5が起動中であるものとする。この時、ステップS55の処理では、起動中のレイヤのうち、最も優先度が高いレイヤ#5が選択されることになる。
【0130】
CPU201は、こうして選択したレイヤについて他のスケジューラの発音が禁止されているか否かを判断する(ステップS56)。禁止されている場合には、CPU201は、他のスケジューラのボリュームをオフとし(ステップS57)、許可されている場合には、全スケジューラのボリュームはフレーズデータ255Fで指定されたボリューム値としておく(ステップS58)。
【0131】
図の例では、レイヤ#5は、他のレイヤの発音が禁止されている。従って、レイヤ#1、#2の出力ボリュームは0とされる。このボリューム調整は、フレーズデータ255Fで指定されたチャンネルに対応するチャンネル管理用ワーク253(
図4参照)の出力ボリュームを0とすることによって実現できる。レイヤ#1、#2は出力ボリュームが0とされたものの、動作を停止された訳ではないため、そのまま音声出力は継続して行われる。従って、出力ボリュームを復帰させさえすれば、従前の出力の続きを違和感なく出力させることが可能となる。
【0132】
本実施例では、最優先のレイヤの禁止/許可のみを参照して、他のレイヤの音声出力の可否を制御しているが、複数のレイヤの禁止/許可を参照するものとしてもよい。例えば、最優先のレイヤと2番目のレイヤを参照し、いずれか一方が禁止の時は他のレイヤを消音するという制御を行っても良い。こうすることで、優先度の高いレイヤが「許可」、2番目のレイヤが「禁止」となっている場合でも、3番目以降のレイヤを消音することが可能となる。
図12中に示したレイヤ構造では、優先度の低いレイヤ#1〜#4は許可、優先度の高いレイヤ#5〜#8は禁止というように、一定以上の優先度のレイヤは一律「禁止」と設定されているが、複数のレイヤの禁止/許可を参照することにより、各レイヤの禁止/許可が柔軟に設定可能となる。例えば、必ず出力させておくことが好ましいが、他のレイヤの発音を禁止するほどの情報ではない音声がある場合には、最優先のレイヤに設定しつつ、「許可」と設定しておけばよい。
【0133】
以上の処理によって、複数のスケジューラを並行して使用しながら音声出力を行うことができる。また、優先度および禁止/許可の設定によって、他のレイヤを再生し続けたまま、一部のレイヤの音声のみを出力することができる。複数のスケジューラを起動することによって、例えば、BGMを再生しながら、始動レバーの操作等の効果音を一時的にBGMにミキシングして流すなど、多様な演出を容易に実現することが可能となる。
【0134】
D5.ランプ処理:
図13はランプ処理のフローチャートである。ランプモジュール260が実行する処理であり、メイン処理ルーチンのステップS60に相当する処理である。
【0135】
CPU201は、サウンド処理(
図12)と同様、スケジューラの起動(ステップS61)、タイマ値の判定(ステップS62)を行う。スケジューラが起動中または新規起動の状態にあり、タイマ値が0の場合には、CPU201はスケジューラを更新し(ステップS63)、新たなランプポインタ(
図8のワーク262W)で指定されたスケジュールデータのファンクションを実行する。この処理において、階調パターン設定(
図8)が設定されている時には、指定された階調パターンデータ266に基づいて階調パターンがランプ30に出力される。CPU201は、以上の処理を、各レイヤに含まれる全スケジューラ、即ちランプスケジューラおよび階調データスケジューラについて実行し(ステップS64)、更に、全レイヤについて実行する(ステップS65)。
【0136】
次にCPU201は、起動中のスケジューラのうち、最優先のスケジューラを選択する(ステップS66)。図の右側に本実施例におけるランプレイヤ構造264を示した。先に
図8で説明した通り、本実施例では#1〜#6までの6つのサウンドレイヤを有している。下に行くほど優先度が高いレイヤとなっている。仮に、図中に○をつけたレイヤ#1,#2、#5が起動中であるものとする。この時、ステップS66の処理では、起動中のレイヤのうち、最も優先度が高いレイヤ#5が選択されることになる。
【0137】
CPU201は、こうして選択したレイヤについてのみランプデータを出力する(ステップS67)。他のレイヤについては、スケジューラは階調データを再生しているが、ランプに送信されることなく出力が遮断されることになる。他のレイヤのスケジューラは処理を停止している訳ではないため、最優先のレイヤの処理が停止すれば、次に優先度の高いレイヤの階調データが従前の続きとして違和感なく出力される。
【0138】
最優先のレイヤのみを出力するのは、ランプについては、複数のレイヤを重畳させると、概して規則性のない違和感のある点灯パターンとなりやすいからである。ランプの階調データ次第では、最優先のレイヤ以外のレイヤも併せて出力可能としてもよい。また、優先度に応じて、階調データに強弱をつけて重畳してもよい。このように重畳した出力を許容する場合には、音声出力の場合と同様、レイヤごとに重畳の禁止、許可を設定してもよい。
【0139】
E.効果:
以上で説明した本実施例のスロットマシン10によれば、サブ制御基板200での演出制御において、多様な演出を比較的容易に実現できる利点がある。
まず、音声、ランプのそれぞれについて、複数のスケジューラを並行して用いることによって、音声、ランプのそれぞれで多種多様な演出効果を実現することが可能となる。
また、LCD、音声、ランプを統合制御する演出データと、音声、ランプのそれぞれの出力を制御するためのスケジュールデータとを階層的に用いるため、音声、ランプで実現される種々の演出の組合せによって、さらに多種多様な演出を容易に実現することが可能となる。
【0140】
F.第2実施例:
F1.遊技機の構成:
図14は第2実施例としてのパチンコ機に用いられる遊技盤70の正面図である。遊技盤70は、パチンコ機の外枠(図示せず)に取り付けられており、中央に遊技領域71を備えている。遊技者は、図示しないハンドルを操作して遊技領域71内に遊技球を打ち込み、入賞口に入賞させる遊技を行うことができる。
【0141】
本実施例のパチンコ機はいわゆる第二種と呼ばれるタイプに当たる。遊技盤70の中央には、機械的抽選、即ち遊技球の動きに基づいて大当りか否かを決める抽選方法を実行する可変入賞装置80が備えられている。可変入賞装置80の上部には、図示するように第1可動片81、第2可動片82がそれぞれ左右一対に備えられている。図の状態は、可変入賞装置80内に遊技球が入り込めるように第1可動片81、第2可動片82が開いた状態を示している。普段は、第1可動片81は矢印Bに示すようにスライドして開口部を塞ぐように閉じている。この時、第2可動片82は矢印Cに示すように内部に隠れている。
遊技球が遊技領域71の下部の始動入賞口72に入賞すると、図示するように第1可動片81、第2可動片82が開口状態となる。
【0142】
開口中に可変入賞装置80内に入り込んだ遊技球は、矢印Dに示すように、左右に円弧状に設けられた流路83内を、左右から中央に延びるアーム84上に向かって転がり落ちる。可変入賞装置80は、全体が矢印Aに示すように左右に揺動するため、遊技球はアーム84上で左右に不安定に転がった後、駆動装置85駆動装置85駆動装置85駆動装置85駆動装置85適当なタイミングで落下する。落下タイミングによっては、遊技球は、一般入賞口86に入り、V入賞口87に入る。アーム84および駆動装置85が、大当りか否かを決める振分機構として機能することになる。V入賞口87に入賞すると「大当り」となり、第1可動片81、第2可動片82が、所定のパターンで開閉を繰り返す「大当り遊技」が開始される。
【0143】
可変入賞装置80には、落下する遊技球と干渉しない程度に前面にシフトした位置に、UFOを形取った演出用の駆動装置85として設けられている。駆動装置85は、UFOの動きを模して、矢印Eに示すように前後左右方向に8の字を描くように曲線的に移動するとともに、矢印Fに示すようにロール運動する。遊技者は、駆動装置85が落下する遊技球に干渉するかのように感じて、ハラハラドキドキすると同時に、現実の物が移動することによって、表示やランプでは得られないリアルな演出効果を得ることができる。
【0144】
遊技領域71の中央には、LCD73が備えられており、遊技中に種々の演出画面(装飾図柄と呼ぶこともある)が表示される。始動入賞口への入賞時、大当りの発生時などにも、それぞれ遊技状態に応じた演出画面が表示される。LCD73は、遊技者から見て駆動装置85よりも奥に設置されている。駆動装置85は、LCD73の表示と連動させて駆動してもよい。
【0145】
F2.遊技機の制御:
パチンコ機の制御機構の構成は、スロットマシン10と同様である。先に
図2で説明した通り、メイン制御基板100とサブ制御基板200によって遊技およびそのための演出が制御される。スロットマシン10では、表示の制御もサブ制御基板200で行っていたが、パチンコ機では、表示制御用の基板を別途設けてもよい。この場合には、
図3で示した演出モジュール240における表示関連の機能、液晶コマンドバッファ212およびVDP204の機能を液晶表示制御用の基板で実現することになる。
【0146】
図15はパチンコ機の制御ソフトウェア構成を示す説明図である。スロットマシン10と同じモジュールには同一の符号を付したため、説明を省略する。本実施例のパチンコ機は、
図14に示した駆動装置85の動作を制御するためのモジュールが追加されている点が、実施例(
図3)と相違する。
【0147】
駆動装置85はランプ等と同様、出力ポートイメージワーク214を介して駆動装置モジュール270に接続されており、イベントモジュール230Aおよび駆動装置モジュール270によって制御される。駆動装置85を駆動するステッピングモータの動作が制御対象となる。具体的な制御項目は、次の通りである。
(1)移動量…ステッピングモータの回転ステップ角;
(2)移動時間…現在の位置から次の位置まで移動させるための時間;
(3)移動速度…モータの回転速度;
(4)励磁方法…1−1相励磁、1ー2相励磁、2−2相励磁の区別;
(5)台形駆動…回転開始、停止時にステップ関数的に速度を変化させるのではなく、所定の角加速度で回転速度を変化させる;
(6)回転方向…モータの回転方向;
(7)原点位置まで戻すための復帰動作の実行指示;
(8)メカエンド停止の指示;
ここでメカエンド停止とは、駆動装置85の可動範囲が機械的に制限されている時に、可動範囲の限界位置に付勢した状態で停止させることを意味する。
【0148】
駆動装置85の制御方法は、ランプ等と同様である。演出モジュール240Aは、コマンドを解析して駆動装置85の動作態様を決定し、動作態様を表す駆動装置動作番号を駆動装置モジュール270に出力する。駆動装置モジュール270は、駆動装置動作番号に応じたスケジュールデータを参照する。駆動装置85用のスケジュールデータには、上述した制御項目(1)〜(8)等を指定するためのファンクションおよびパラメータが用意されている。また、コール、条件分岐、演出抽選も同様に設けられている。
【0149】
駆動装置85についても、
図4に示したように、複数のスケジューラが並行して稼働可能である。各スケジューラからステッピングモータへの信号出力は、
図4に示したのと同じく、複数チャンネルの出力強さによって調整される。
【0150】
このようにランプ、サウンドと同様の制御機構を設けることにより、駆動装置85に多彩な動きを行わせることができる。
例えば、機械的に当たり/はずれを決める際に、遊技球に干渉するかのうように見える演出を行うために8の字状に移動させる他、当たり時には派手な飛行をしたり、はずれ時には墜落させたりというように、種々の演出効果を考慮した動きをさせてもよい。8の字状に移動させるスケジューラと、当たり時の演出動作を実現するスケジューラ、はずれ時の演出動作を実現するスケジューラを並行して稼働しつつ、抽選結果に応じてそれぞれの出力を調整すればよい。駆動装置85の演出動作と、表示、ランプ、サウンドを連動させるよう演出データを規定しておいてもよい。こうすることで、統一感のある演出を実現することができる。
【0151】
第2実施例においても、表示、サウンド、ランプ、駆動装置85を対象とした演出抽選を行うことができる。演出抽選は、実施例と同様、乱数に基づいて演出データのコールファンクションを使い分けることによって行うことも可能である(
図6参照)。これに対し、本実施例では、演出データではなく、スケジュールデータで演出抽選を行う方法を採った。
【0152】
スケジュールデータでの演出抽選は、演出データと同様の方法によって実現可能である。つまり、スケジュールデータ内で、条件分岐とコールファンクションを用い、演出抽選用の乱数に応じて、異なるスケジュールデータをコールするように規定しておけばよい。
この方法では、表示、サウンド、ランプ、駆動装置85が独立して演出抽選を行う結果、その組み合わせによって実現される演出態様は非常に多彩となり、より興趣を高めることができる利点がある。
ただし、表示、サウンド、ランプ、駆動装置85の演出抽選の結果に関わらず、違和感のない演出を実現するためには、これらの演出が同時に終了することが好ましい。従って、本実施例では、演出抽選の選択対象となるスケジュールデータは、同一時間で演出が終了する内容となっている。もっとも、同一時間で演出が終了することは必須の要件ではなく、これらの演出時間がまちまちとなっていても構わない。
【0153】
スケジュールデータでの演出抽選には、演出内容が多彩になる他、表示、サウンド、ランプ、駆動装置85の出力状況に応じて抽選態様を切り換えることができる利点もある。
例えば、演出抽選が指示された時点で、駆動装置85が8の字状の振り分け動作を実行中であり、他の動作が制限されている時には、駆動装置モジュール270は駆動装置85に関する演出抽選を禁止してもよい。
同様に、表示、サウンド、ランプについても、演出抽選が指示された時の状況に応じて、演出抽選を禁止してもよい。また、演出抽選禁止において、一部のスケジュールデータを選択禁止とすることにより、演出抽選を一部禁止としてもよい。
【0154】
以上で説明した第2実施例の遊技機においても、第1実施例と同様、多彩な演出を実現することができる。また駆動装置85に対しても同様の制御方法を採用することにより、駆動装置85を演出装置の一種として扱うことができ、その動作によって、より興趣に富んだ演出を実現することが可能となる。
【0155】
G.変形例:
以上の実施例では、LCDについては、サブ制御基板200が液晶コマンドを出力する構成をとっているが、液晶コマンドについても、サウンドモジュール等と同じく、スケジューラデータを処理するモジュールを設けても良い。また、演出の制御は3階層以上のデータ構造で実現してもよい。例えば、実施例において、ランプスケジューラ262(
図8参照)が起動する際に、階調スケジューラ263を用いて階調データを出力している。階調スケジューラ263は、ランプスケジューラ262が使用しているスケジュールデータ265とは異なる階調パターンデータ266を参照して稼働するモジュールである。この意味で、ランプについては、演出データ、スケジュールデータ、階調パターンデータの3階層で制御されているとも言える。このように、演出の制御は3階層、またはそれ以上の階層構造のデータで制御してもよい。
【0156】
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
(1) 本実施例では、ソフトウェアで実現している処理の一部または全部をハードウェアによって実現してもよいし、その逆も可能である。
(2) 本実施例では、スロットマシン10への適用例を示したが、本発明はパチンコ機その他の遊技機への適用も可能である。また、第2実施例でパチンコ機に適用した構成をスロットマシン10に適用することも可能である。
【0157】
G.変形例:
以上の実施例では、LCDについては、サブ制御基板200が液晶コマンドを出力する構成をとっているが、液晶コマンドについても、サウンドモジュール等と同じく、スケジューラデータを処理するモジュールを設けても良い。また、演出の制御は3階層以上のデータ構造で実現してもよい。例えば、実施例において、ランプスケジューラ262(
図8参照)が起動する際に、階調スケジューラ263を用いて階調データを出力している。階調スケジューラ263は、ランプスケジューラ262が使用しているスケジュールデータ265とは異なる階調パターンデータ266を参照して稼働するモジュールである。この意味で、ランプについては、演出データ、スケジュールデータ、階調パターンデータの3階層で制御されているとも言える。このように、演出の制御は3階層、またはそれ以上の階層構造のデータで制御してもよい。
【0158】
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
(1) 本実施例では、ソフトウェアで実現している処理の一部または全部をハードウェアによって実現してもよいし、その逆も可能である。
(2) 本実施例では、スロットマシン10への適用例を示したが、本発明はパチンコ機その他の遊技機への適用も可能である。また、第2実施例でパチンコ機に適用した構成をスロットマシン10に適用することも可能である。
【0159】
H.本実施形態におけるプログラム構造と従来技術との違い:
最後に、本実施形態におけるプログラム構造と従来技術との違いを図面を参照して説明する。
【0160】
[従来技術における構成]
先ず、従来技術におけるプログラム構造の概要について説明する。
図16は、従来構造のプログラムによりランプ処理プログラムを実現した場合の一例である。この
図16に示したプログラムコードでは、「処理1」という特定の処理を「A」という変数または値に基づいて実行するというプログラムコード、「処理2」という特定の処理を「B」という変数または値に基づいて実行するというプログラムコード、・・・等が実行すべき順序で並べられた構造となっている。
【0161】
そして、このプログラムコードにより使用されるデータテーブルが、例えば
図17に示すようなアドレスに予め格納されている構成となっている。
【0162】
このような従来構造のプログラムを実行した場合、
図18のフローチャートにより示すような処理が実行される。
この処理では、まずランプ処理データテーブルの先頭データ「A」を読み込み(ステップS101)、読み込んだデータ「A」に基づいて「処理1」が実行される(ステップS102)。そして、次にランプ処理データテーブルのアドレス+01Hに格納されたデータ「B」を読み込み、読み込んだデータ「B」に基づいて「処理2」が実行される(ステップS104)。
【0163】
このようにして順次、データ「C」に基づいて「処理3」が実行され(ステップS105、S106)、データ「D」に基づいて「処理4」が実行され(ステップS107、S108)、データ「E」に基づいて「処理4」が実行される(ステップS109、S110)。
【0164】
次に、このようにして実現される従来技術による処理の具体例を参照して説明する。
例えば、従来技術として
図19に示すような構成のデータテーブルを用いた処理が行われる場合について説明する。
【0165】
この
図19に示したデータテーブルの構成では、各ブロックが、タイマ値と、ランプAの点灯を制御するデータ、駆動物aの動作を制御するデータとから構成されている。そして、この
図19に示したデータは、
図20に示すようなビット構成となっている。
【0166】
このような構成の従来のデータテーブルに基づく処理の流れを
図21のフローチャートに示す。
この処理では、先ずランプ処理テーブルの最初のデータが読み込まれる(ステップS201)。つまり、ここでは、第1ブロックのタイマ値「1000ms」、ランプA点灯データ「10000000B」が読み込まれ、駆動物a制御データ「00000001B」が読み込まれる。
【0167】
そして、読み込まれたタイマ値「1000ms」が設定され(ステップS202)、ランプA点灯データ「10000000B」の出力(ステップS203)、駆動物a制御データ「00000001B」の出力(ステップS204)が行われる。この処理により、ランプA1が点灯し、駆動物a1が駆動される。
【0168】
そして、タイマ値として設定した時間である「1000ms」が経過すると(ステップS205)、データが終了していなければ(ステップS206)、データテーブルのポインタが更新され(ステップS207)、再度ランプ処理データテーブルの次のブロックのデータが読み込まれることとなる(ステップS201)。
上記のような処理が
図19に示したデータテーブルのデータが終了するまで行われる。
【0169】
このような処理が行われることにより、
図22に示すような制御が実行される。
つまり、第1ブロックのデータによりランプA1の点灯、駆動物a1の駆動が1000ms行われ、次に第2ブロックのデータによりランプA2の点灯、駆動物a2の駆動が500ms行われ、最後に、第nブロックのデータによりランプA1、A2の点灯、駆動物a1、a2の駆動が1300ms行われて処理は終了する。
【0170】
このように従来構造のデータテーブルを用いた処理では、制御プログラムは、データテーブルの構造に依存するため、データテーブルのデータ構造が変更された場合には、制御プログラム自体を変更することが必要となる。
【0171】
例えば、ランプA3、駆動物a3という制御対象を追加した場合、
図20に示したような構成のデータの空きビットにランプA3、駆動物a3の制御を指示するフラグを設定することとなる。しかし、制御プログラムにも、制御データの何ビット目かのデータを読み込んでランプA3、駆動物a3の制御を指示するという処理を追加する必要が発生してしまう。具体的には、
図21に示したフローチャートにおけるステップS203、S204の処理を変更する必要が発生する。
【0172】
このように従来構造のデータテーブルでは、制御対象が変更された場合には、制御プログラム自体を変更する必要が発生する。そのため、ある機種用に制御プログラムを開発した場合でも、別の機種の開発を行う場合には制御プログラムを、そのデータ構造から変更しなければならなくなり大きな開発工数が必要となってしまう。また、制御プログラムを変更することに伴い、変更後の制御プログラムのバグ等の不具合の有無の検証、発見した不具合の修正、再度の検証等膨大な工数が必要となる場合がある。
【0173】
[本実施形態における構成]
次に、本実施形態の遊技機におけるプログラムとデータ構成について説明する。
本実施形態におけるプログラムとデータ構成の概念図を
図23に示す。ここでは、制御プログラムがランプ処理プログラムの場合を用い、f1〜f4というファンクションが予め用意されているものとして説明する。
【0174】
この
図23に示したプログラム構成では、ランプ処理プログラム(ランプ用出力スケジューラ)は、指定されたスケジュールデータに基づいてデータがなくなるまで処理を実行するという部分90と、各ファンクションf1〜f4により指定されるf1〜f4処理については、汎用的な個別機能モジュール91〜94とにより構成されている。
【0175】
そして、ランプ処理スケジュールデータとして、例えば、
図24に示すようなスケジュールデータが指定されたものとして説明する。
【0176】
このような場合において、本実施形態におけるランプ処理プログラムにより実行される処理の流れを
図25のフローチャートを参照して説明する。
【0177】
まず、ランプ処理プログラムでは、
図24に示したスケジュールデータの最初のファンクションf1とパラメータAを読み込む(ステップS301)。
【0178】
そして、読み込んだファンクションが処理1を指示するものであると判定した場合(ステップS302においてYes)、ランプ処理プログラムでは、処理1の個別機能モジュールに対してパラメータAによる処理の実行を指示し、処理1が実行される(ステップS303)。
【0179】
そして、スケジュールデータが終了していなければ(ステップS310)、スケジュールデータの次のファンクションおよびパラメータを読み込み(ステップS301)、読み込んだファンクションが処理1〜4のいずれを指定するのかを判定し(ステップS302、S304、S306、S308)、処理1〜4のうちの該当する処理を実行するよう対応する機能別モジュールに対して処理の実行を指示する(ステップS303、S305、S307、S308)。
【0180】
上記で説明したように、本実施形態のプログラム構成では、スケジュールデータがファンクションとパラメータとにより構成され、ランプ処理プログラムが、指定されたスケジュールデータを実行する部分90と、各ファクションにより指定された処理を実行する個別機能モジュール91〜94とにより独立して構成されている。
【0181】
そのため、新たな機能が必要となった場合でも、その機能を実現するための個別機能モジュールを作成し、その機能を指定するファンクションを設けることによりランプ処理プログラムの大幅な変更が必要とならない。
【0182】
例えば、新たな機種の制御のためにファンクションf5という機能が必要となった場合でも、f5処理のための個別機能モジュールを作成し、
図23に示したプログラム構成に追加して登録するだけの変更でよい。
【0183】
そして、ファンクションf1〜f4という処理は、ランプ処理プログラム(ランプの出力スケジューラ)専用に用いられる機能ではなく、音声装置等の他の演出装置を制御するための処理プログラム(例えば、音声の出力スケジューラ)においても共通に使用可能な汎用性が高い処理とすることも可能である。
【0184】
このように、本実施形態のプログラム構成では、プログラムの機能を、汎用性の高い機種共通部分と機種個別部分とに切り分け、機種共通部分はどの機種でも対応可能な処理としてプログラムし、機種個別に関わる部分については新たにファンクションを設け、このファンクションを実行する個別機能モジュールを新たに登録することが可能な構成となっている。
【0185】
そのため、変更後のプログラムの不具合の有無を検証する場合でも、新たに追加した個別機能モジュールと、新たなファンクションに関する部分のみを検証すればよく、従来から登録されていた個別機能モジュール等については検証が不要となる。よって、本実施形態のようなプログラム構成を用いることにより、従来構造のプログラムを用いた場合と比較して、制御対象が変化した場合の変更が少なくてすみ拡張性が大幅に向上する。
【0186】
つまり、新たな機能を実現するためのプログラムを汎用性を持たせたプログラムから切り離すことで、将来的に変化する機種についても少ない工数で簡単に拡張することが可能となる。