(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明に係る遊技機の実施の形態としてパチンコ遊技機を例に挙げ、次の順序で説明する。
<1.パチンコ遊技機の構造>
<2.パチンコ遊技機の制御構成及び実施の形態のドライバ構成>
<3.主制御部の処理>
<4.演出制御部の処理>
[4−1:メイン処理]
[4−2:1msタイマ割込処理]
[4−3:コマンド解析処理]
[4−4:シナリオ登録・削除処理]
[4−5:シナリオ更新処理]
[4−6:LED駆動データ更新処理]
[4−7:音の登録処理]
[4−8:音再生処理]
<5.まとめ及び変形例>
【0011】
<1.パチンコ遊技機の構造>
まず
図1、
図2を参照して、本発明の実施の形態としてのパチンコ遊技機1の構成を概略的に説明する。
図1は実施の形態のパチンコ遊技機1の外観を示す正面側の斜視図であり、
図2は遊技盤の正面図である。
図1,
図2に示すパチンコ遊技機1は、主に「枠部」と「遊技盤部」から成る。
「枠部」は以下説明する前枠2,外枠2、ガラス扉5、操作パネル7を有して構成される。「遊技盤部」は
図2の遊技盤3から成る。以下の説明上で、「枠部」「枠側」とは前枠2,外枠2、ガラス扉5、操作パネル7の総称とする。また「盤部」「盤側」とは遊技盤3を示す。
【0012】
図1に示すようにパチンコ遊技機1は、木製の外枠4の前面に額縁状の前枠2が開閉可能に取り付けられている。図示していないが、この前枠2の裏面には遊技盤収納フレームが形成されており、その遊技盤収納フレーム内に
図2に示す遊技盤3が装着される。これにより遊技盤3の表面に形成した遊技領域3aが前枠2の開口部2aから
図1の遊技機前面側に臨む状態となる。
なお遊技領域3aの前側には、透明ガラスを支持したガラス扉5が設けられており、遊技領域3aは透明ガラスを介して前面の遊技者側に表出される。
【0013】
ガラス扉5は軸支機構6により前枠2に対して開閉可能に取り付けられている。そしてガラス扉5の所定位置に設けられた図示しない扉ロック解除用キーシリンダを操作することで、前枠2に対するガラス扉5のロック状態を解除し、ガラス扉5を前側に開放できる構造とされている。また扉ロック解除用キーシリンダの操作によっては、外枠4に対する前枠2のロック状態も解除可能な構成とされている。
またガラス扉5の前面側には、枠側の発光手段として装飾ランプ20wが各所に設けられている。装飾ランプ20wは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
【0014】
ガラス扉5の下側には操作パネル7が設けられている。この操作パネル7も、図示しない軸支機構により、前枠2に対して開閉可能とされている。
操作パネル7には、上受け皿ユニット8、下受け皿ユニット9、発射操作ハンドル10が設けられている。
【0015】
上受け皿ユニット8には、弾球に供される遊技球を貯留する上受け皿8aが形成されている。下受け皿ユニット9には、上受け皿8aに貯留しきれない遊技球を貯留する下受け皿9aが形成されている。
また上受け皿ユニット8には、上受け皿8aに貯留された遊技球を下受け皿9a側に抜くための球抜きボタン16が設けられている。下受け皿ユニット9には、下受け皿9aに貯留された遊技球を遊技機下方に抜くための球抜きレバー17が設けられている。
また上受け皿ユニット8には、図示しない遊技球貸出装置に対して遊技球の払い出しを要求するための球貸しボタン14と、遊技球貸出装置に挿入した有価価値媒体の返却を要求するためのカード返却ボタン15とが設けられている。
さらに上受け皿ユニット8には、パトライトスイッチ11、演出ボタン12、十字キー13が設けられている。パトライトスイッチ11や演出ボタン12は、所定の入力受付期間中に内蔵ランプが点灯されて操作可能となり、その内蔵ランプ点灯時に押下することにより演出に変化をもたらすことができる押しボタンとされる。また十字キー13は遊技者が演出状況に応じた操作や演出設定等のための操作を行う操作子である。
【0016】
発射操作ハンドル10は操作パネル7の右端部側に設けられ、遊技者が弾球のために
図3に示す発射装置32を作動させる操作子である。
また前枠2の上部の両側と、発射操作ハンドル10の近傍には、演出音を音響出力するスピーカ25が設けられている。
【0017】
次に
図2を参照して、遊技盤3の構成について説明する。遊技盤3は、略正方形状の木製合板または樹脂板を主体として構成されている。この遊技盤3には、発射された遊技球を案内する球誘導レール31が盤面区画部材として環状に装着されており、この球誘導レール31に取り囲まれた略円形状の領域が遊技領域3aとなっている。
【0018】
この遊技領域3aの略中央部には、主液晶表示装置32M(LCD:Liquid Crystal Display)が設けられ、また主液晶表示装置32Mの右側には副液晶表示装置32Sが設けられている。
主液晶表示装置32Mでは、後述する演出制御部51の制御の下、背景画像上で、たとえば左、中、右の3つの装飾図柄の変動表示が行われる。また通常演出、リーチ演出、スーパーリーチ演出などの各種の演出画像の表示も行われる。副液晶表示装置32Sも、同様に各種演出に応じた表示が行われる。
【0019】
また遊技領域3a内には、主液晶表示装置32M及び副液晶表示装置32Sの表示面の周囲を囲むように、センター飾り35Cが設けられている。
センター飾り35Cは、そのデザインにより装飾効果を発揮するだけでなく、周囲の遊技球から主液晶表示装置32M及び副液晶表示装置32Sの表示面を保護する作用を持つ。さらにセンター飾り35Cは、遊技球の打ち出しの強さまたはストローク長による遊技球の流路の左右打ち分けを可能とする部材としても機能する。即ち球誘導レール31を介して遊技領域3a上部に打ち出された遊技球の流下経路は、センター飾り35Cによって分割された左遊技領域3bと右遊技領域3cのいずれかを流下することとなる。いわゆる左打ちの場合、遊技球は左遊技領域3bを流下していき、右打ちの場合、遊技球は右遊技領域3cを流下していく。
【0020】
また左遊技領域3bの下方には、左下飾り35Lが設けられ、装飾効果を発揮するとともに左遊技領域3bとしての範囲を規定する。
同様に右遊技領域3cの下方には右下飾り35Rが設けられ、装飾効果を発揮するとともに左遊技領域3bとしての範囲を規定する。
なお、遊技領域3a(左遊技領域3b及び右遊技領域3c)内には、所要各所に釘49や風車47が設けられて遊技球の多様な流下経路を形成する。
また主液晶表示装置32Mの下方にはセンターステージ35Sが設けられており、装飾効果を発揮するとともに、遊技球の遊動領域として機能する。
なお図示していないが、センター飾り35Cには、適所に視覚的演出効果を奏する可動体役物が設けられている。
【0021】
遊技領域3aの右上縁付近には、複数個のLEDを配置して形成されたドット表示器による図柄表示部33が設けられている。
この図柄表示部33では、所定のドット領域により、第1特別図柄表示部、第2特別図柄表示部、及び普通図柄表示部が形成され、第1特別図柄、第2特別図柄、及び普通図柄のそれぞれの変動表示動作(変動開始および変動停止を一セットする変動表示動作)が行われる。
なお、上述した主液晶表示装置32Mは、図柄表示部33による第1、第2特別図柄の変動表示と時間的に同調して、画像による装飾図柄を変動表示する。
【0022】
センター飾り35Cの下方には、上始動口41(第1の特別図柄始動口)を有する入賞装置が設けられ、さらにその下方には下始動口42a(第2の特別図柄始動口)を備える普通変動入賞装置42が設けられている。
上始動口41及び下始動口42aの内部には、遊技球の通過を検出する検出センサ(
図3に示す上始動口センサ71,下始動口センサ72)が形成されている。
【0023】
上始動口41は、図柄表示部33における第1特別図柄の変動表示動作の始動条件に係る入賞口で、始動口開閉手段(始動口を開放または拡大可能にする手段)を有しない入賞率固定型の入賞装置となっている。
【0024】
下始動口42aを有する普通変動入賞装置42は、始動口開閉手段により始動口の遊技球の入賞率を変動可能な入賞率変動型の入賞装置として構成されている。即ち下始動口42aを開放または拡大可能にする左右一対の可動翼片(可動部材)42bを備えた、いわゆる電動チューリップ型の入賞装置である。
この普通変動入賞装置42の下始動口42aは、図柄表示部33における第2特別図柄の変動表示動作の始動条件に係る入賞口である。そして、この下始動口42aの入賞率は可動翼片42bの作動状態に応じて変動する。即ち可動翼片42bが開いた状態では、入賞が容易となり、可動翼片42bが閉じた状態では、入賞が困難又は不可能となるように構成されている。
【0025】
また普通変動入賞装置42の左右には、一般入賞口43が複数個設けられている。各一般入賞口42の内部には、遊技球の通過を検出する検出センサ(
図3に示す一般入賞口センサ74)が形成されている。
また右遊技領域3cの下部側には、遊技球が通過可能なゲート(特定通過領域)からなる普通図柄始動口44が設けられている。この普通図柄始動口44は、図柄表示部33における普通図柄の変動表示動作に係る入賞口であり、その内部には、通過する遊技球を検出するセンサ(
図3に示すゲートセンサ73)が形成されている。
【0026】
右遊技領域3c内の普通図柄始動口44から普通変動入賞装置42へかけての流下経路途中には第1特別変動入賞装置45(特別電動役物)が設けられている。
第1特別変動入賞装置45は、突没式の開放扉45bにより第1大入賞口45aを閉鎖/開放する構造とされている。また、その内部には第1大入賞口45aへの遊技球の通過を検出するセンサ(
図3の第1大入賞口センサ75)が形成されている。
第1大入賞口45aの周囲は、右下飾り35Rが遊技盤3の表面から膨出した状態となっており、その膨出部分の上辺及び開放扉45bの上面が右流下経路3cの下流案内部を形成している。従って、開放扉45bが盤内部側に引き込まれることで、下流案内部に達した遊技球は容易に第1大入賞口45に入る状態となる。
【0027】
また普通変動入賞装置42の下方には、第2特別変動入賞装置46(特別電動役物)が設けられている。第2特別変動入賞装置46は、下部が軸支されて開閉可能な開放扉46bにより、その内側の第2大入賞口46aを閉鎖/開放する構造とされている。また、その内部には第2大入賞口46aへの遊技球の通過を検出するセンサ(
図3の第2大入賞口センサ76)が形成されている。
開放扉46bが開かれることで第2大入賞口46aが開放される。この状態では、左遊技領域3b或いは右遊技領域3cを流下してきた遊技球は、高い確率で第2大入賞口50に入ることとなる。
【0028】
以上のように盤面の遊技領域には、入賞口として上始動口41、下始動口42a、普通図柄始動口44、第1大入賞口45a、第2大入賞口46a、一般入賞口43が形成されている。
本実施の形態のパチンコ遊技機1においては、これら入賞口のうち、普通図柄始動口44以外の入賞口への入賞があった場合には、各入賞口別に設定された入賞球1個当りの賞球数が遊技球払出装置55(
図3参照)から払い出される。
例えば、上始動口41および下始動口42aは3個、第1大入賞口45a、第2大入賞口46aは13個、一般入賞口43は10個などと賞球数が設定されている。
なお、これらの各入賞口に入賞しなかった遊技球は、アウト口48を介して遊技領域3aから排出される。
ここで「入賞」とは、入賞口がその内部に遊技球を取り込んだり、ゲートを遊技球が通過したりすることをいう。実際には入賞口ごとに形成されたセンサ(各入賞検出スイッチ)により遊技球が検出された場合、その入賞口に「入賞」が発生したものとして扱われる。この入賞に係る遊技球を「入賞球」とも称する。
【0029】
以上のような盤面において、センター飾り35C、左下飾り35L、右下飾り35R、センターステージ35S、第1特別変動入賞装置45、第2特別変動入賞装置46、さらには図示していない可動体役物には、詳細には図示していないが各所に、盤側の発光手段として装飾ランプ20bが設けられている。
装飾ランプ20bは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
【0030】
<2.パチンコ遊技機の制御構成及び実施の形態のドライバ構成>
次に本実施の形態のパチンコ遊技機1の制御系の構成について説明する。
図3はパチンコ遊技機1の内部構成の概略的なブロック図である。
本実施の形態のパチンコ遊技機1は、その制御構成を形成する基板として主に、主制御基板50、演出制御基板51、液晶制御基板52、払出制御基板53、発射制御基板54、電源基板58が設けられている。
【0031】
主制御基板50は、マイクロコンピュータ等が搭載され、パチンコ遊技機1の遊技動作全般に係る統括的な制御を行う。なお以下では、主制御基板50に搭載されたマイクロコンピュータ等を含めて主制御基板50の構成体を「主制御部50」と表記する。
演出制御基板51は、マイクロコンピュータ等が搭載され、主制御部50から演出制御コマンドを受けて、画像表示、発光、音響出力を用いた各種の演出動作を実行させるための制御を行う。なお以下では、演出制御基板51に搭載されたマイクロコンピュータ等を含めて演出制御基板51の構成体を「演出制御部51」と表記する。
【0032】
液晶制御基板52はマイクロコンピュータやビデオプロセッサ等が搭載され、演出制御部51からの表示制御コマンドを受けて、主液晶表示装置32M、副液晶表示装置32Sによる表示動作の制御を行う。
なお主液晶表示装置32M、副液晶表示装置32Sによる表示動作の制御を行う液晶制御基板として、主液晶制御基板、副液晶制御基板を独立して設けてもよい。
払出制御基板53は、パチンコ遊技機1に接続された遊技球払出装置55による賞球の払い出し制御を行う。
発射制御基板54は、遊技者のパチンコ遊技機1に設けられている発射装置56による遊技球の発射動作の制御を行う。
電源基板58は、外部電源(例えばAC24V)からAC/DC変換、さらにはDC/DC変換を行い、各部に動作電源電圧Vccを供給する。なお電源経路の図示は省略している。
【0033】
まず主制御部50及びその周辺回路について述べる。
主制御部50は、CPU100(以下「主制御CPU100」と表記)を内蔵したマイクロプロセッサ、ROM101(以下「主制御ROM101」と表記)、RAM102(以下「主制御RAM102」と表記)を搭載し、マイクロコンピュータを構成している。
主制御CPU100は制御プログラムに基づいて、遊技の進行に応じた各種演算及び制御処理を実行する。
主制御ROM101は、主制御CPU100による遊技動作の制御プログラムや、遊技動作制御に必要な種々のデータを記憶する。
主制御RAM102は、主制御CPU100が各種演算処理に使用するワークエリアや、各種入出力データや処理データのバッファ領域として用いられる。
なお図示は省略したが、主制御部50は、各部とのインターフェース回路、特別図柄変動表示に係る抽選用乱数を生成する乱数生成回路、各種の時間計数のためのCTC(Counter Timer Circuit)、主制御CPU100に割込み信号を与える割込コントローラ回路なども備えている。
【0034】
主制御部50は、上述のように盤面の遊技領域の各入賞手段(上始動口41、下始動口42a、普通図柄始動口44、第1大入賞口45a、第2大入賞口46a、一般入賞口43)に設けられるセンサの検出信号を受信する構成となっている。
即ち、上始動口センサ71、下始動口センサ72、ゲートセンサ73、一般入賞口センサ74、第1大入賞口センサ75、第2大入賞口センサ76のそれぞれの検出信号が主制御部50に供給される。
なお、これらのセンサ(71〜76)は、入球した遊技球を検出する検出スイッチにより構成されるが、具体的にはフォトスイッチや近接スイッチなどの無接点スイッチや、マイクロスイッチなどの有接点スイッチで構成することができる。
【0035】
主制御部50は、上始動口センサ71、下始動口センサ72、ゲートセンサ73、一般入賞口センサ74、第1大入賞口センサ75、第2大入賞口センサ76のそれぞれの検出信号の受信に応じて、処理を行う。例えば抽選処理、図柄変動制御、賞球払出制御、演出制御コマンド送信制御、外部データ送信処理などを行う。
【0036】
また主制御部50には、下始動口42の可動翼片42bを開閉駆動する普通電動役物ソレノイド77が接続され、主制御部50は遊技進行状況に応じて制御信号を送信して普通電動役物ソレノイド77の駆動動作を実行させ、可動翼片42bの開閉動作を実行させる。
さらに、主制御部50には、第1大入賞口45の開放扉45bを開閉駆動する第1大入賞口ソレノイド78と、第2大入賞口46の開放扉46bを開閉駆動する第2大入賞口ソレノイド79が接続されている。主制御部50は、いわゆる大当たり状況に応じて、第1大入賞口ソレノイド78又は第2大入賞口ソレノイド79を駆動制御して、第1大入賞口45又は第2大入賞口46の開放動作を実行させる。
【0037】
また主制御部50には、図柄表示部33が接続されており、図柄表示部33に制御信号を送信して、各種図柄表示(LEDの消灯/点灯/点滅)を実行させる。これにより図柄表示部33における第1特別図柄表示部80、第2特別図柄表示部81、普通図柄表示部82での表示動作が実行される。
【0038】
また主制御部50には、枠用外部端子基板57が接続される。主制御部50は、遊技進行に関する情報を、枠用外部端子基板57を介して図示しないホールコンピュータに送信可能となっている。遊技進行に関する情報とは、例えば大当り当選情報、賞球数情報、図柄変動表示実行回数情報などの情報である。ホールコンピュータとは、パチンコホールの遊技機を統括的に管理する管理コンピュータであり、遊技機外部に設置されている。
【0039】
また主制御部50には、払出制御基板53が接続されている。払出制御基板53には、発射装置56を制御する発射制御基板54と、遊技球の払い出しを行う遊技球払出装置55が接続されている。
主制御部50は、払出制御基板53に対し、払い出しに関する制御コマンド(賞球数を指定する払出制御コマンド)を送信する。払出制御基板53は当該制御コマンドに応じて遊技球払出装置55を制御し、遊技球の払い出しを実行させる。
また払出制御基板53は、主制御部50に対して、払い出し動作状態に関する情報(払出状態信号)を送信可能となっている。主制御部50側では、この払出状態信号によって、遊技球払出装置55が正常に機能しているか否かを監視する。具体的には、賞球の払い出し動作の際に、玉詰まりや賞球の払い出し不足といった不具合が発生したか否かを監視している。
【0040】
また主制御部50は、特別図柄変動表示に関する情報を含む演出制御コマンドを、演出制御部51に送信する。なお、主制御部50から演出制御部51への演出制御コマンドの送信は一方向通信により実行されるようにしている。これは、外部からの不正行為による不正な信号が演出制御部51を介して主制御部50に入力されることを防止するためである。
【0041】
続いて演出制御部51及びその周辺回路について説明する。
演出制御部51は、CPU200(以下「演出制御CPU200」と表記)を内蔵したマイクロプロセッサ、ROM201(以下「演出制御ROM201」と表記)、RAM202(以下「演出制御RAM202」と表記)を搭載し、マイクロコンピュータを構成している。
演出制御CPU200は演出制御プログラム及び主制御部50から受信した演出制御コマンドに基づいて、各種演出動作のための演算処理や各演出手段の制御を行う。演出手段とは、本実施の形態のパチンコ遊技機1の場合、主液晶表示装置32M、副液晶表示装置32S、装飾ランプ20w、20b、スピーカ59及び図示を省略した可動体役物となる。
演出制御ROM201は、演出制御CPU200による演出動作の制御プログラムや、演出動作制御に必要な種々のデータを記憶する。
演出制御RAM202は、演出制御CPU200が各種演算処理に使用するワークエリアや、テーブルデータ領域、各種入出力データや処理データのバッファ領域などとして用いられる。
なお図示は省略したが、演出制御部51は、各部とのインターフェース回路、演出のための抽選用乱数を生成する乱数生成回路、各種の時間計数のためのCTC、演出制御CPU200に割込み信号を与える割込コントローラ回路なども備えている。
この演出制御部51の主な役割は、主制御部50からの演出制御コマンドの受信、演出制御コマンドに基づく演出の選択決定、主液晶表示装置32M、副液晶表示装置32S側への演出制御コマンドの送信、スピーカ25による出力音制御、装飾ランプ20w,20b(LED)の発光制御、可動体役物の動作制御などとなる。
【0042】
演出制御部51は、主液晶表示装置32M、副液晶表示装置32S側への演出制御コマンドの送信を行うが、その演出制御コマンドは、液晶インターフェース基板66を介して液晶制御基板52に送られる。
【0043】
液晶制御基板52は、主液晶表示装置32M及び副液晶表示装置32Sの表示制御を行う。図示していないが、液晶制御基板52には、VDP(Video Display Processor)、画像ROM、VRAM(Video RAM)、液晶制御CPU、液晶制御ROM、液晶制御RAMを備えている。
VDPは、画像展開処理や画像の描画などの映像出力処理全般の制御を行う。
画像ROMには、VDPが画像展開処理を行う画像データ(演出画像データ)が格納されている。
VRAMは、VDPが展開した画像データを一時的に記憶する画像メモリ領域とされる。
液晶制御CPUは、VDPが表示制御を行うために必要な制御データを出力する。
液晶制御ROMには、液晶制御CPUの表示制御動作手順を記述したプログラムやその表示制御に必要な種々のデータが格納される。
液晶制御RAMは、ワークエリアやバッファメモリとして機能する。
【0044】
液晶制御基板52は、これらの構成により、演出制御基板51からの演出制御コマンドに基づいて各種の画像データを生成し、主液晶表示装置32M及び副液晶表示装置32Sに出力する。これによって主液晶表示装置32M及び副液晶表示装置32Sにおいて各種の演出画像が表示される。
【0045】
また演出制御部51は、光演出や音演出の制御を行う。このため演出制御部51には枠ドライバ部61、盤ドライバ部62及び音源IC(Integrated Circuit)59が接続されている。
枠ドライバ部61は、枠側の装飾ランプ部63のLEDについて発光駆動を行う。なお、装飾ランプ部63とは、
図1に示したように枠側に設けられている装飾ランプ20wを総括的に示したものである。
盤ドライバ部62は、盤側の装飾ランプ部64のLEDについて発光駆動を行う。なお、装飾ランプ部64とは、
図2に示したように盤側に設けられている装飾ランプ20bを総括的に示したものである。また本実施の形態の場合、盤ドライバ部62は、盤側に形成されている可動体役物を駆動する可動体役物モータ65の駆動も行う。可動体役物モータ65は例えばステッピングモータが用いられる。
【0046】
本実施の形態の場合、枠ドライバ部61は第1系統の駆動信号出力手段であり、盤ドライバ部62は第2系統の駆動信号出力手段である。詳しくは
図4を用いて後述するが、演出制御部51(演出制御CPU200)は、シリアルデータ送信チャネルch1,ch2を用いて、演出駆動データをシリアルデータとして第1系統及び第2系統の駆動信号出力手段(枠ドライバ部61及び盤ドライバ部62)に供給する。
なおこの例では盤ドライバ部62は、盤側に形成されている可動体役物を駆動する可動体役物モータ65の駆動も行うものとしているが、装飾ランプ部64の各LEDを発光駆動するドライバ部と、可動体役物モータ65を駆動するドライバ部が別体として設けられても良い。
【0047】
また演出制御部51は、スピーカ25により所望の音を出力させるべく、音源IC59に対する制御を行う。
音源IC59は、複数チャネル(後述する音チャネルaCH)のフレーズをミキシングして所定本数(チャネル数)の音声信号を得る。
図1に示したように、本例の場合、スピーカ25は複数設けられるため、音源IC59の出力チャネル数は例えばLch,Rchの2チャネルなど(ステレオ出力)が可能となる。上記のミキシングにより、演出制御部51より再生指示された複数チャネルのフレーズを同時再生可能とされる。
また音源IC59は、演出制御部51からの指示に従い、制御対象として指示されたフレーズについての音コントロールを行う。具体的に、演出制御部51は、ボリュームの変化指示やフェードイン再生/フェードアウト再生等の音響効果の付与指示に係る情報を音源IC59に対して与え、音源IC59はそれらの情報に従って制御対象として指定されたフレーズの再生制御を行う。
【0048】
本実施の形態で用いる音源IC59は、SUBボリュームの設定機能やパン機能(左右方向パン及び上下方向パン)も有するものとされる。
この場合の音源IC59が音出力を行うにあたって指示を要求する情報は、少なくとも「フレーズ番号」「1次ボリューム」「1次ボリューム遷移量」「2次ボリューム」「ループ回数」「SUB0ボリューム」「SUB1ボリューム」「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」とされる。すなわち、この場合の音源IC59には、これらの項目ごとにその指示値の入力を受け付けるレジスタが音チャネルaCHごとに設けられている。
なお、本実施の形態ではSUBボリュームは使用しないものとしている。従って上記の「SUB0ボリューム」「SUB1ボリューム」のレジスタには「0」をセットする(後述する
図31のステップS1202を参照)。
【0049】
音源IC59による出力音声信号はアンプ部67で増幅された後、スピーカ25に対して与えられる。
なお、
図3では図示の都合上、音源IC59の出力チャネル数を1つとしているが、実際にはアンプ部67及びスピーカ25は例えばLch、Rchに対応した出力チャネルがそれぞれ設けられ、ステレオによる音再生が可能とされる。
【0050】
なお、上記では音源IC59を演出制御基板51とは別体に設けるものとしたが、音源IC59は演出制御基板51と同一基板上に一体的に設けることもできる。
【0051】
また演出制御部51には、遊技者が操作可能な操作部60が接続され、操作部60からの操作検出信号を受信可能となっている。この操作部60は、
図1で説明したパトライトスイッチ11、演出ボタン12、十字キー13と、それらの操作検出機構のことである。
演出制御部51は、操作部60からの操作検出信号に応じて、各種演出制御を行うことができる。
【0052】
演出制御部51は、主制御部50から送られてくる演出制御コマンドに基づき、あらかじめ用意された複数種類の演出パターンの中から抽選によりあるいは一意に演出パターンを決定し、必要なタイミングで各種演出手段を制御する。これにより、演出パターンに対応する主・副液晶表示装置32M、32Sによる演出画像の表示、スピーカ25からの音再生、装飾ランプ部63、64(装飾ランプ20w、20b)におけるLEDの点灯点滅駆動、可動体役物モータ65による可動体役物の動作が実現され、時系列的に種々の演出パターンが展開されていく。これにより「演出シナリオ」が実現される。
【0053】
なお演出制御コマンドは、1バイト長のモード(MODE)と、同じく1バイト長のイベント(EVENT)からなる2バイト構成により機能を定義する。
MODEとEVENTの区別を行うために、MODEのBit7はON、EVENTのBit7をOFFとしている。
これらの情報を有効なものとして送信する場合、モード(MODE)およびイベント(EVENT)各々に対応してストローブ信号が出力される。すなわち、主制御CPU100は、送信すべきコマンドがある場合、演出制御部51にコマンドを送信するためのモード(MODE)情報の設定および出力を行い、この設定から所定時間経過後に1回目のストローブ信号の送信を行う。さらに、このストローブ信号の送信から所定時間経過後にイベント(EVENT)情報の設定および出力を行い、この設定から所定時間経過後に2回目のストローブ信号の送信を行う。
ストローブ信号は主制御CPU100により、演出制御CPU200が確実にコマンドを受信することが可能な所定期間アクティブ状態に制御される。
また演出制御部51(演出制御CPU200)は、ストローブ信号の入力に基づいて割込を発生させてコマンド受信割込処理用の制御プログラムを実行し、この割込処理において演出制御コマンドが取得される。
【0054】
続いて、上述した第1系統及び第2系統の駆動信号出力手段(枠ドライバ部61及び盤ドライバ部62)の構成を説明する。
図4に、演出制御部51に接続される枠ドライバ部61、盤ドライバ部62を示した。
【0055】
第1系統の駆動信号出力手段である枠ドライバ部61は、n個のLEDドライバ90が、演出制御CPU200のシリアルデータ出力チャネルch1に対して並列に接続されている。
シリアルデータ出力チャネルch1の信号線としては、リセット信号RESETを供給するリセット信号線、クロック信号CLKを供給するクロック線、演出駆動データとしてのシリアルデータDATAを供給するデータ線、イネーブル信号ENABLEを供給するイネーブル信号線が設けられている。これら各信号線は、それぞれ、枠ドライバ部61を構成するn個のLEDドライバ90に対して各信号を並列に供給するように接続されている。
枠ドライバ部61の各LEDドライバ90には、演出制御CPU200がスレーブアドレスとして用いるデバイスIDが設定されている。即ち個々のLEDドライバ90の識別子である。説明上、仮に、図示のように各LEDドライバ90のデバイスID(スレーブアドレス)をw1〜w(n)と表記する。
【0056】
また第2系統の駆動信号出力手段である盤ドライバ部62は、m個のLEDドライバ90が、演出制御CPU200のシリアルデータ出力チャネルch2に対して並列に接続されている。
シリアルデータ出力チャネルch2の信号線もチャネルch1と同様、リセット信号RESETを供給するリセット信号線、クロック信号CLKを供給するクロック線、演出駆動データとしてのシリアルデータDATAを供給するデータ線、イネーブル信号ENABLEを供給するイネーブル信号線が設けられている。これら各信号線は、それぞれ、盤ドライバ部62を構成するm個のLEDドライバ90に対して各信号を並列に供給するように接続されている。
盤ドライバ部62の各LEDドライバ90には、演出制御CPU200がスレーブアドレスとして用いるデバイスID(個々のLEDドライバ90の識別子)が設定されている。説明上、仮に、図示のように各LEDドライバ90のデバイスID(スレーブアドレス)をb1〜b(m)と表記する。
【0057】
枠ドライバ部61及び盤ドライバ部62における各LEDドライバ90としては、例えば24チャネルLEDドライバである「LV5236V(三洋半導体株式会社製)」を用いることができ、24個の電流出力端子を備える。従って1つのLEDドライバ90によっては、最大24個の系列のLED駆動電流を出力することができる。具体的には例えば8系列のR(赤)LED駆動電流出力、8系列のG(緑)LED駆動電流出力、8系列のB(青)LED駆動電流出力を行い、8個のフルカラーLEDの発光駆動が可能である。なお、ここでは1つの「系列」とは、1つの電流出力端子に対して接続される1つのLED、又は1つの電流出力端子に対して直列又は並列で接続される複数個のLEDの群を指している。
枠ドライバ部61におけるLEDドライバ90の数nは、枠側に配置されるLED系列数(装飾ランプ20wの系列数)によって決められる。従ってnは1の場合もあるし、2以上の場合もある。枠ドライバ部61は1又は複数のLEDドライバ90を有する。
また盤ドライバ部62におけるLEDドライバ90の数mは、盤側に配置されるLED系列数(装飾ランプ20bの系列数)によって決められる。従ってmは1の場合もあるし、2以上の場合もある。盤ドライバ部62は1又は複数のLEDドライバ90を有する。
【0058】
図5AにLEDドライバ90の要部の概略構成例を示す。
LEDドライバ90は、シリアルバスインターフェース91、アドレス設定部92、データバッファ/PWMコントローラ93、D/A変換器94、駆動電流源回路95−1〜95−24を備える。
駆動電流源回路95−1〜95−24は、上記の24系列の駆動電流出力を、それぞれ出力端子96−1〜96−24から行う電流源である
【0059】
このLEDドライバ90には、シリアルバスインターフェース91に対し、演出制御CPU200からのイネーブル信号ENABLE、クロック信号CLK、シリアルデータDATAが入力される。シリアルバスインターフェース91は、イネーブル信号ENABLEで規定される期間に、クロック信号CLKのタイミングでシリアルデータDATAを取り込む。シリアルバスインターフェース91は、取り込んだシリアルデータをパラレルデータに変換してデータバッファ/PWMコントローラ93に転送する。
なお演出制御CPU200はスレーブアドレスを指定してLED駆動データを送信してくる。
データバッファ/PWMコントローラ93は、シリアルバスインターフェース91から転送されたパラレルデータについて、スレーブアドレス確認を行う。パラレルデータに含まれるスレーブアドレスが、アドレス設定部92に設定された自己のスレーブアドレス(w1〜w(n)、b1〜b(m)のいずれか)と一致していることを確認した場合に、該パラレルデータに含まれるLED駆動データを有効なデータとして、指定されたレジスタに格納する。
【0060】
データバッファ/PWMコントローラ93は、各系列のLED駆動データを取り込んだら、そのLED駆動データで示された輝度情報(階調値)に応じた値を、24系列の各駆動制御値としてD/A変換器94に出力する。
D/A変換器94は、輝度情報に応じた値をアナログ信号に変換し、各電流源回路95−1〜95−24への制御信号とする。
【0061】
出力端子96−1〜96−24の全部(又は一部)には24系列のLED120が接続される。なお、図は簡略化して1系列の出力端子96に1つのLED120が接続された状態を示しているが、1系列の出力端子96に、複数のLEDが接続される構成(例えば直列接続)も当然あり得る。
各系列(出力端子96−1〜96−24)では、LED120及び抵抗Rの直列接続に対して電源電圧Vccが印加される。電流源回路95−1〜95−24によって各系列のLED120に電流が流され、発光が行われる。
即ち各電流源回路95−1〜95−24は、D/A変換器94から供給された信号に応じた電流量の駆動電流を、対応する系列のLED120に流すように動作する。
【0062】
このようなLED駆動制御を、1つの系列について具体的にいうと、データバッファ/PWMコントローラ93は、当該系列の階調値に応じたパルスデューティに相当するデジタルデータ列をD/A変換器94に出力し、D/A変換器94は、デジタルデータ列をアナログ信号としてのパルス信号に変換して当該系列の電流源回路95に供給する。電流源回路95はパルス信号のH/Lにより出力制御され、例えば0mAと5mAの電流出力を行う。例えばこのような動作で、結果的に階調値に応じた平均電流値となる駆動電流がLED120に流れることとなる。
なお、本実施の形態では、PWM駆動方式により、電流値が例えば0mAと5mAとされ、時間軸方向で(積分的に)階調制御がされるものとしているが、もちろん階調制御はこれに限らず、実際に電流値を階調に応じて変化させても良いことはいうまでもない。デューティ制御であろうと、レベル制御であろうと、あくまでも単位時間あたりの平均電流値が階調に応じたレベルとされることで適切な階調表現が可能となる。
【0063】
なお、本実施の形態の場合、盤ドライバ部62における一部のLEDドライバ90には、可動体役物を駆動する可動体役物モータ65が接続される。
図5Bに、或るLEDドライバ90の出力端子96−1〜96−24の全部(又は一部)に例えばステッピングモータ121が接続された例を示している。
図5Bは出力端子96−1〜96−24の部分のみを示しているが、LEDドライバ90の内部構成は
図5Aと同様である。
例えばステッピングモータ121が4相駆動のモータである場合、出力端子96−1〜96−4で1つのステッピングモータ121に対する励磁電流を流すように接続する。同様に、出力端子96−5〜96−8、出力端子96−9〜96−12、出力端子96−13〜96−16、出力端子96−17〜96−20、出力端子96−21〜96−24が、それぞれ1つのステッピングモータ121に励磁電流を流すように接続される。この場合、1つのLEDドライバ90で最大6個のステッピングモータ121を駆動できることとなる。
LEDドライバ90は与えられたコマンド(シリアルデータ)によって指示される電流を出力端子96−1〜96−24から出力する回路であることから、ステッピングモータやソレノイド等の物理的可動体駆動デバイスのドライバとしても使用することができる。そこで、一部のLEDドライバ90を
図5Bのようにステッピングモータ121のドライバとして用いる。可動体役物の動作は演出シナリオによって細かく設定され、それに応じて演出制御部51は駆動方向や駆動量などを制御するわけであるが、盤ドライバ部62におけるLEDドライバ90を利用して可動体役物を駆動することで、装飾ランプ部64の各装飾ランプ(LED20b)とともにシリアルデータによる可動体役物制御が可能となり、制御処理及び構成が効率化できる。
なお、1つのLEDドライバ90において、一部の出力端子がLED駆動に用いられ、他の一部の出力端子がステッピングモータやソレノイド等の駆動に用いられるという手法を採っても良い。
【0064】
以上のように、各LEDドライバ90は、演出制御CPU200から受信したシリアルデータDATAに応じて、指定された輝度で各LED120が発光されるように駆動することとなる。或いはLEDドライバ90の一部は、シリアルデータDATAに応じて、ステッピングモータ121を駆動する。
そして第1系統、第2系統の駆動信号出力手段(枠ドライバ部61、盤ドライバ部62)には、それぞれが1又は複数の演出手段に駆動信号を出力する複数のLEDドライバ90が含まれ、1つの系統内の各LEDドライバ90には、演出制御部51からのシリアルデータが、並列に送信される構成とされている。そして各LEDドライバ90は、自己のID(スレーブアドレス)が含まれる演出駆動データ(シリアルデータ)を取得する。
【0065】
<3.主制御部の処理>
以下、本実施の形態の制御処理につき説明する。まずここでは主制御部(主制御基板)50によるメイン処理について述べる。
図6は、主制御部50のメイン処理を示すフローチャートである。メイン処理が開始されるのは、停電状態からの復旧時のように初期化スイッチ(図示せず)が操作されることなく電源がON状態になる場合と、初期化スイッチがON操作されて電源がON状態になる場合とがある。いずれの場合でも、パチンコ遊技機1に電源が投入されると、電源基板58によって各制御基板に電圧が供給される。この場合に主制御部50(主制御CPU100)は
図6に示すメイン処理を開始する。
【0066】
この主制御側メイン処理において、主制御CPU100はステップS11で、まず遊技動作開始前における必要な初期設定処理を実行する。たとえば、最初に自らを割込み禁止状態に設定すると共に、所定の割込みモード(割込みモード2)に設定し、またマイクロコンピュータの各部を含めてCPU内部のレジスタ値を初期設定する。
次に主制御CPU100はステップS12で、図示してない入力ポートを介して入力されるRAMクリアスイッチの出力信号であるRAMクリア信号の状態(ON、OFF)を判定する。RAMクリア信号とは、RAMの全領域を初期設定するか否かを決定する信号である。RAMクリア信号としては通常、パチンコ店の店員が操作する初期化スイッチのON/OFF状態に対応した値を有している。
【0067】
RAMクリア信号がON状態であった場合、主制御CPU100は処理をステップS12からS16に進め、RAMの全領域のゼロクリアを行う。したがって、電源遮断時にセットされたバックアップフラグの値は、他のチェックサム値などと共にゼロとなる。
続いてステップS17で主制御CPU100は、RAM領域がゼロクリアされたことを報知するための「RAMクリア表示コマンド」を初期化コマンドとして各制御基板に送信する。そしてステップS18で、RAMクリア報知タイマに、RAMクリアされた旨を報知するための時間として、たとえば、30秒を格納する。
【0068】
次に主制御CPU100はステップS19で、タイマ割込み動作を起動する割込み信号を出力するCTCを初期設定して、CPUを割込み許可状態に設定する。
その後はステップS20、S21、S22の処理として、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、各種乱数更新処理を実行する。このステップS21の各種乱数更新処理では、特別図柄変動表示や普通図柄変動表示に使用される各種乱数の初期値(スタート値)変更のために使用する乱数や、変動パターンの選択に利用される変動パターン用乱数を更新する。
なお、特別図柄変動表示や普通図柄変動表示に使用される各種乱数とは、例えばインクリメント処理によって所定数値範囲を循環している大当り抽選に係る乱数(図柄抽選に利用される特別図柄判定用乱数)や、補助当り抽選に係る乱数(補助当りの当落抽選に利用される補助当り判定用乱数)などである。また初期値変更のために使用する乱数とは、特別図柄判定用初期値乱数、補助当り判定用初期値乱数などである。
【0069】
主制御RAM102には大当り抽選に係る図柄抽選、補助当り抽選、または変動パターン抽選などに利用される各種の乱数カウンタとして、特別図柄判定用乱数カウンタ初期値の生成用カウンタ、特別図柄判定用乱数カウンタ、補助当り判定用乱数カウンタ初期値の生成用カウンタ、補助当り判定用乱数カウンタ、変動パターン用乱数1カウンタ、変動パターン用乱数2カウンタなどが設けられている。これらのカウンタは、ソフトウェア的に乱数を生成する乱数生成手段としての役割を果たす。
ステップS21の各種乱数更新処理では、上述の特別図柄判定用乱数カウンタや補助当り判定用乱数カウンタの初期値を生成する2つの初期値生成用カウンタ、変動パターン用乱数1カウンタ、変動パターン用乱数2カウンタなどを更新して、上記各種のソフト乱数を生成する。たとえば、変動パターン用乱数1カウンタとして取り得る数値範囲が0〜238とすると、主制御RAM102の変動パターン用乱数1の値を生成するためのカウント値記憶領域から値を取得し、取得した値に1を加算してから元のカウント値記憶領域に格納する。このとき、取得した値に1を加算した結果が239であれば0を元の乱数カウンタ記憶領域に格納する。他の初期値生成用乱数カウンタも同様に更新する。CPU201は、間欠的に実行されるタイマ割込処理を行っている間を除いて、各種乱数更新処理を繰り返し実行するようになっている。
【0070】
以上はステップS12でRAMクリアスイッチONと判定された場合について述べた。RAMクリアスイッチOFFの場合を続いて説明する。例えば停電状態からの復旧時には、初期化スイッチ(RAMクリア信号)はOFF状態である。このような場合、主制御CPU100はステップS12からS13に処理を進め、バックアップフラグ値を判定する。なお、バックアップフラグは、電源遮断時にON状態に設定され、電源復帰後の最初のタイマ割込み処理でOFF状態にリセットされるよう構成されている。
したがって、電源投入時や停電状態からの復旧時である場合には、通常では、バックアップフラグがON状態のはずである。ただし、何らかの理由で電源遮断までに所定の処理が完了しなかったような場合には、バックアップフラグはリセット(OFF)状態になる。そこで、バックアップフラグがOFF状態である場合には、主制御CPU100は処理をステップS13からS16に進め、遊技機の動作を初期状態に戻す。
【0071】
一方、バックアップフラグがON状態であれば、主制御CPU100は処理をステップS13からS14に進め、チェックサム値を算出するためのチェックサム演算を実行する。ここで、チェックサム演算とは、主制御RAM102のワーク領域を対象とする8ビット加算演算である。
そして、チェックサム値が算出されたら、この演算結果を、主制御RAM102のSUM番地の記憶値と比較をする。このSUM番地には、電源遮断時に、同じチェックサム演算によるチェックサム値が記憶されている。そして、記憶された演算結果は、主制御RAM102の他のデータと共に、バックアップ電源によって維持されている。したがって、本来は、ステップS14の判定によって両者が一致するはずである。
しかし、電源遮断時にチェックサム演算が実行できなかった場合や、実行できても、その後、メイン処理のチェックサム演算の実行時までの間に、ワーク領域のデータが破損している場合もある。このような場合にはステップS14の判定結果は不一致となる。
判定結果の不一致によりデータ破損が検出された場合には、主制御CPU100はステップS14からS16の処理に進んでRAMクリア処理を実行し、遊技機の動作状態を初期状態に戻す。
【0072】
ステップS14でのチェックサム演算によるチェックサム値と、SUM番地の記憶値とが一致する場合には、主制御CPU100はステップS15に進み、バックアップデータに基づき、電源遮断前におけるスタックポインタを復帰し、電源遮断時の処理状態から遊技を開始するために必要な遊技復旧処理を実行する。
そしてステップS15の遊技復旧処理を終えると、ステップS19の処理に進み、CTCを初期設定してCPUを割込み許可状態に設定し、その後は、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、上述した各種乱数更新処理を実行する(ステップS20〜S22)。
【0073】
次に主制御CPU100のタイマ割込処理について説明する。
図7に主制御CPU100のタイマ割込処理を示している。この主制御タイマ割込処理は、CTCからの一定時間(4ms程度)ごとの割込みで起動され、上述したメイン処理実行中に割り込んで実行される。
【0074】
タイマ割込みが生じると、主制御CPU100はレジスタの内容をスタック領域に退避させた後、まず
図7のステップS51として電源基板58からの電源の供給状態を監視する電源異常チェック処理を行う。この電源異常チェック処理では、主に、電源が正常に供給されているかを監視する。ここでは、たとえば、電断が生じるなどの異常が発生した場合、電源復帰時に支障なく遊技を復帰できるように、電断時における所定の遊技情報をRAMに格納するバックアップ処理などが行われる。
【0075】
次にステップS52で、主制御CPU100は遊技動作制御に用いられるタイマを管理するタイマ管理処理を行う。パチンコ遊技機1の遊技動作制御に用いる各種タイマ(たとえば特別図柄役物動作タイマなど)のタイマ値は、この処理で管理(更新)される。
【0076】
ステップS53では、主制御CPU100は入力管理処理を行う。この入力管理処理では、パチンコ遊技機1に設けられた各種センサによる検出情報を入賞カウンタに格納する。ここでの各種センサによる検出情報とは、たとえば、上始動口センサ71、下始動口センサ72、ゲートセンサ(普通図柄始動口センサ)73、第1大入賞口センサ75、第2第入賞口センサ76、一般入賞口センサ74などの入賞検出スイッチから出力されるスイッチ信号のON/OFF情報(入賞検出情報)である。
このステップS53の処理により、各入賞口において入賞を検出(入賞が発生)したか否かが割込みごとに監視される。また上記「入賞カウンタ」とは、各々の入賞口ごとに対応して設けられ、入賞した遊技球数(入賞球数)を計数するカウンタである。本実施の形態では、主制御RAM102の所定領域に、上始動口41用の上始動口入賞カウンタ、下始動口42a用の下始動口入賞カウンタ、ゲート44用の普通図柄始動口入賞カウンタ、第1大入賞口45a用の第1大入賞口入賞カウンタ、第2大入賞口46a用の第2大入賞口入賞カウンタ、一般入賞口43用の一般入賞口用の入賞カウンタなどが設けられている。
またこの入力管理処理では、入賞検出スイッチからの検出情報が入賞を許容すべき期間中に入賞したか否かに基づいて、不正入賞があったか否かも監視される。たとえば大当り遊技中でないにもかかわらず第1、第2大入賞口センサ75,76が遊技球を検出したような場合は、これを不正入賞とみなして入賞検出情報を無効化し、その無効化した旨を外部に報知するべく後述のステップS55のエラー管理処理において所定のエラー処理が行われるようになっている。
【0077】
ステップS54では、主制御CPU100は各変動表示に係る乱数を定期的に更新するタイマ割込内乱数管理処理を行う。この定期乱数更新処理では、特別図柄判定用乱数や補助当り判定用乱数の更新(割込み毎に+1加算)と、乱数カウンタが一周するごとに、乱数カウンタのスタート値を変更する処理を行う。たとえば、特別図柄判定用乱数カウンタの値を所定範囲で更新(+1加算)し、特別図柄判定用乱数カウンタが1周するごとに、特別図柄判定用乱数カウンタ初期値の生成用カウンタの値を読み出し、その生成用カウンタの値を特別図柄判定用乱数カウンタに格納する。これにより、特別図柄判定用乱数カウンタのスタート値が上記の生成用カウンタの値に応じて変更されるので、更新周期は一定でありながらも特別図柄判定用乱数カウンタのカウント値はランダムになる。
【0078】
ステップS55では、主制御CPU100は、遊技動作状態の異常の有無を監視するエラー管理処理を行う。このエラー管理処理では、遊技動作状態の異常として、たとえば、基板間に断線が生じたか否かの監視や、不正入賞があったか否かの監視などをして、これらの動作異常(エラー)が発生した場合には、そのエラーに対応した所定のエラー処理を行う。
エラー処理としては、たとえば、所定の遊技動作(たとえば、遊技球の払い出し動作や遊技球の発射動作など)の進行を停止させたり、エラー報知用コマンドを演出制御部51に送信して、演出手段によりエラーが発生した旨を報知させたりする。
【0079】
ステップS56では、主制御CPU100は賞球管理処理を行う。この賞球管理処理では、ステップS53の入力管理処理で格納したデータを把握して、上述の入賞カウンタの確認を行い、入賞があった場合は、賞球数を指定する払出制御コマンドを払出制御基板53に送信する。
この払出制御コマンドを受信した払出制御基板53は、遊技球払出装置55を制御し、指定された賞球数の払い出し動作を行わせる。これにより、それぞれの入賞口に対応した賞球数が払い出されるようになっている。入賞口に対応した賞球数とは、入賞口別に設定された入賞球1個当りの所定の賞球数×入賞カウンタの値分の賞球数である。
【0080】
ステップS57では主制御CPU100は、普通図柄管理処理を行う。この普通図柄管理処理では、普通図柄変動表示における補助当り抽選を行い、その抽選結果に基づいて、普通図柄の変動パターンや普通図柄の停止表示態様を決定したり、所定時間毎に点滅を繰り返す普通図柄のデータ(普通図柄変動中のLED点滅表示用データ)を作成したり、普通図柄が変動中でなければ、停止表示用のデータ(普通図柄停止表示中のLED点滅表示用データ)を作成したりする。
【0081】
ステップS58では、主制御CPU100は、普通電動役物管理処理を行う。この普通電動役物管理処理では、ステップS57の普通図柄管理処理の補助当り抽選の抽選結果に基づき、普通電動役物ソレノイド77に対するソレノイド制御用の励磁信号の生成およびそのデータ(ソレノイド制御データ)の設定を行う。ここで設定されたデータに基づき、後述のステップS64のソレノイド管理処理にて、励磁信号が普通電動役物ソレノイド77に対して出力され、これにより可動翼片42bの動作が制御される。
ステップS59では、主制御CPU100は、特別図柄管理処理を行う。この特別図柄管理処理では、主に、特別図柄変動表示における大当り抽選を行い、その抽選結果に基づいて、特別図柄の変動パターン(先読み変動パターン、変動開始時の変動パターン)や特別停止図柄などを決定する。
ステップS60では、主制御CPU100は特別電動役物管理処理を行う。この特別電動役物管理処理では、主に、大当り抽選結果が「大当り」または「小当り」であった場合、その当りに対応した当り遊技を実行制御するために必要な設定処理を行う。
【0082】
ステップS61では、主制御CPU100は右打ち報知情報管理処理を行う。この右打ち報知情報管理処理では、例えば第1、第2第入賞口45a,46aが開放される機会や可動翼片42bが駆動される電サポ状態など、右打ちが有利な状況において右打ち指示報知を行う「発射位置誘導演出(右打ち報知演出)」を現出させるための処理を行う。右打ち指示とは、具体的には、右遊技領域3cを狙う旨を有技者に指示する演出動作であり、例えば主液晶表示装置32Mに「右打ち」を遊技者に促す画像を表示させたり、スピーカ25から右打ちメッセージ音声を発生させる。
右打ち報知演出が行われる場合、この右打ち報知情報管理処理において、演出制御コマンドとして、右打ち報知演出の実行指示する「右打ち指示コマンド」が演出制御部51に送信され、このコマンドを受けて、演出制御部51が、画像や音声による右打ち報知の実行制御を行う。
ステップS62では、主制御CPU100は、LED管理処理を行う。このLED管理処理は、図柄表示部33に対して普通図柄表示や第1,第2特別図柄表示のための表示データを出力する処理である。この処理により、普通図柄や特別図柄の変動表示および停止表示が行われる。なお、ステップS57の普通図柄管理処理で作成された普通図柄の表示データや、ステップS59の特別図柄管理処理中の特別図柄表示データ更新処理で作成される特別図柄の表示データは、このLED管理処理で出力される。
【0083】
ステップS63では、主制御CPU100は、外部端子管理処理を行う。この外部端子管理処理では、枠用外部端子基板57を通して、パチンコ遊技機1の動作状態情報をホールコンピュータや島ランプなどの外部装置に対して出力する。動作状態情報としては、大当り遊技が発生した旨(条件装置が作動した旨)、小当り遊技が発生した旨、図柄変動表示が実行された旨(特別図柄変動表示ゲームの開始または終了した旨)、入賞情報(始動口や大入賞口に入賞した旨や賞球数情報)などの情報が含まれる。
ステップS64では、主制御CPU100は、ソレノイド管理処理を行う。このソレノイド管理処理では、ステップS58の普通電動役物管理処理で作成されたソレノイド制御データに基づく普通電動役物ソレノイド77に対する励磁信号の出力処理や、ステップS60の特別電動役物管理処理で作成されたソレノイド制御データに基づく第1,第2大入賞口ソレノイド78,79に対する励磁信号の出力処理を行う。これにより、可動翼片42bや開放扉45b、46bが所定のパターンで動作し、下始動口42aや大入賞口45a、46bが開閉される。
【0084】
主制御CPU100は、以上のステップS51〜ステップS64の処理を終えた後、退避していたレジスタの内容を復帰させて、ステップS65で割込み許可状態に設定する。これにより、タイマ割込処理を終了して、割込み前の
図6の主制御側メイン処理に戻り、次のタイマ割込みが発生するまで主制御メイン処理を行う。
【0085】
<4.演出制御部の処理>
[4−1:メイン処理]
続いて演出制御部51の処理について説明する。演出制御部51の処理としては、主に、メインループ上で16ms毎に行われる処理(以下「16ms処理」ともいう)と、1ms毎に行われる割り込み処理(以下「1msタイマ割込処理」ともいう)がある。
まずここでは16ms処理を含むメイン処理について説明する。
図8は、演出制御部51のメイン処理を示している。演出制御部51(演出制御CPU200)は、遊技機本体に対して電源が投入されると、
図8のメイン処理を開始する。
このメイン処理において、演出制御CPU200は、まずステップS101で、遊技動作開始前における必要な初期設定処理を行う。例えば初期設定処理として、コマンド受信割込み設定、可動体役物の起点復帰処理、CTCの初期設定、タイマ割込みの許可、マイクロコンピュータの各部を含めてCPU内部のレジスタ値の初期設定などを行う。
【0086】
ステップS101の初期設定処理を終えると、正常動作時の処理としてステップS102〜S117の処理を繰り返し行う。
即ちこの例では、演出制御CPU200はステップS102でのIDチェックとステップS117での乱数更新を毎ループ行うと共に、16ms毎に、ステップS105〜S116の処理(16ms処理)を行う。
ステップS102のIDチェックでは、演出制御CPU200はシステム上で設定されている自己或いは接続各部のIDの確認を行う。もし何らかの原因により、ID異常が検出された場合は、ステップS103としてシステム停止処理を行う。
IDに問題のない通常時は、演出制御CPU200はステップS104以下の処理を行うことになる。即ち演出制御CPU200は、16ms処理の実行判断のための割込みカウンタの値が「15」より大きい値となっているか否かを判断する。この割込みカウンタは、後述する1msタイマ割込処理のステップS207でインクリメントされていくカウンタである。従って割込みカウンタの値が「15」より大きい場合とは、16ms処理のタイミングになっていることを意味する。
【0087】
演出制御CPU200は、割込みカウンタの値が「15」以下であるときは、ステップS104からS117に進み、演出用ソフト乱数の更新処理を行って1回のメイン処理を終え、再びステップS102からの処理を行う。
一方、割込みカウンタの値が「16」以上である場合は、演出制御CPU200はステップS105〜S116の処理を実行し、その後、ステップS117で演出用ソフト乱数の更新処理を行って1回のメイン処理を終え、再びステップS102からの処理を行うことになる。
【0088】
このように割込みカウンタでカウントされる16ms毎に、演出制御CPU200はステップS105からの16ms処理を行う。
その場合、まずステップS105では、割込みカウンタをゼロリセットする。以後、再び次の16ms処理までのカウントを行うためである。
【0089】
次にステップS106で演出制御CPU200は、エラー処理を行う。このエラー処理としては、RAMクリアエラー中、役物エラー中、右打ちエラー中などにおけるエラー処理タイマの処理、各種エラーが発生した際のエラー報知のためのシナリオ登録処理、エラー報知後のエラーシナリオのクリア処理などを行うこととなる。
特に本実施の形態の場合、該ステップS106では、所定のエラー検知に応じたボリュームMAXエラーフラグの設定処理も行う。ボリュームMAXエラーとは、その発生に応じて出力される音(エラー音)のボリュームをMAXにすべきとされたエラーを意味する。ボリュームMAXエラーが検知された場合、すなわちエラー音をMAXで出力すべきとされた場合は、ボリュームMAXエラーフラグとして例えば0x5Aを設定し、ボリュームMAXエラーが検知されない場合はボリュームMAXエラーフラグとして例えば0x00を設定する。
【0090】
次にステップS107では、演出制御CPU200はデモ処理を行う。このデモ処理では、再生音の制御、デモムービーの実行、役物原点補正のそれぞれについてのシナリオ登録や、そのコマンドセットなどの処理を行う。客待ち状態などでは、このデモ処理で設定されたシナリオが実行されることでデモムービー表示が実行される。
【0091】
ステップS108では、演出制御CPU200はコマンド解析処理を行う。このコマンド解析処理では、演出制御CPU200が、主制御部50から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。そして読み出した演出制御コマンドに対応した演出制御処理を行う。詳しくは
図10,
図11で後述する。
【0092】
ステップS109では、演出制御CPU200は入力検知処理を行う。この入力検知処理では、操作部60の操作子(パトライトスイッチ11、演出ボタン12、十字キー13)の操作による入力の検知を行い、入力を検知した場合、その操作に応じた処理を行う。
【0093】
ステップS110では、演出制御CPU200はシナリオ更新処理を行う。この処理ではメインシナリオの更新、サブシナリオの更新が行われる。その際には装飾ランプ部64,65の点灯パターン登録、再生する音の登録、可動体役物の駆動のためのモータ動作の登録なども行われる。詳しくは
図14,
図15を用いて後述する。
【0094】
ステップS111では、演出制御CPU200は音再生処理を行う。演出制御CPU200は、シナリオデータに基づきワークに音チャネルごとに登録されている音データに従って、フレーズ番号やボリューム等のデータを音源IC59に出力する。これによってスピーカ25からの効果音、音楽・音声等の再生出力が行われる。
なお、この音再生処理については
図31により後述する。
【0095】
ステップS112では、演出制御CPU200は役物エラー処理を行う。ここでは可動体役物の原点復帰がなされていないなどの位置エラー判定などを行う。
【0096】
ステップS113では演出制御CPU200は、LED駆動データ更新を行う。ここでは、シナリオデータに基づいてワークにランプチャネルとして登録されているランプデータに基づいて、LED出力データ(駆動データ)を作成する処理が行われる。詳しくは
図20を用いて後述する。LED出力データは、1msタイマ割込処理において所定のタイミングで各LEDドライバ90に対して出力される。
【0097】
ステップS114では、演出制御CPU200は、演出制御RAM202のワーク領域を対象としてチェックサム算出及びその保存を行い、またステップS115では、バックアップデータの保存を行う。
さらにステップS116ではシナリオ更新カウンタをゼロリセットする。シナリオ更新カウンタは後述の1msタイマ割込処理でインクリメントされるカウンタである。
【0098】
以上のような16ms処理が、
図8のメインループ処理において16ms経過毎に行われる。
【0099】
[4−2:1msタイマ割込処理]
次に
図9により1msタイマ割込処理を説明する。演出制御CPU200は、タイムカウントにより1ms毎に発生する割込要求に応じて、
図9の1msタイマ割込処理を実行する。
この1msタイマ割込処理においては、まずステップS201では主制御CPU100からのテストコマンドに応じたチェックサム算出中であるか否かを判断する。チェックサム算出中でなければ、演出制御CPU200はステップS202の入力処理に進む。
【0100】
ステップS202の入力処理とは、上述の
図8のステップS109の入力検知処理とともに操作子の操作による入力検知を行うための1ms毎の処理である。例えばこの入力処理では、操作子の操作検出信号について、信号波形にエッジが検出されたら入力カウンタをリセットし、その後、エッジが発生しない期間、入力カウンタをカウントアップしていく処理を行う。1msタイマ割込処理において、入力情報(入力信号波形のHまたはL)が検知され、またエッジ有無により、入力カウンタのリセット又はインクリメントが行われる。そしてメインループ処理(16ms処理)におけるステップS109で、入力カウンタの値が16以上となっており、前回とは入力情報が変化している場合に、入力変化を認識するようにしている。
このような入力処理(S202)及び入力検知処理(S109)により、ノイズ・チャタリングによる入力誤認識の防止がはかられる。また、入力カウンタを用いており、本実施の形態では例えば16ビットカウンタを用いて65535ms(約65秒)までなどをカウントできるようにしているため、いわゆる長押しの検出も可能となる。
【0101】
ステップS203では、演出制御CPU200はモータ動作更新処理を行う。この場合、演出制御CPU200は、シナリオデータに基づいてワーク(
図16Cで説明するモータデータ登録情報)にモータチャネルとして登録されているモータデータに基づいて、モータ駆動データを作成する処理を行う。これは可動体役物モータ65を駆動制御するために盤ドライバ部62のLEDドライバに出力するモータ駆動データである。なお、本実施の形態では、LED駆動データ更新は上記ステップS113により16ms毎に行われる一方、モータデータ更新は1ms毎に行われることになる。
ステップS204では、演出制御CPU200は、モータ駆動データを出力する。上述のように盤ドライバ部62の一部のLEDドライバ90には、可動体役物モータ65のステッピングモータ121等が接続されている。このステップS204では、これらステッピングモータ121に対する駆動データとしてのシリアルデータを、盤ドライバ部62の所定のLEDドライバ90(ステッピングモータ121等の可動体役物モータ65を駆動するLEDドライバ90)に対して出力することになる。
【0102】
ステップS205では、演出制御CPU200は、割込みカウンタの値に応じて各処理を実行する。割込みカウンタは上述の16ms処理のステップS105でゼロリセットされ、1msタイマ割込処理のステップS207でインクリメントされる。従って、1msタイマ割込処理でステップS205が実行される際には、割込みカウンタの値は0〜15のいずれかとなっている。
この割込みカウンタの値0〜15に応じて、ケース0〜ケース15としてステップS205の処理が規定される。例えば本実施の形態では、ケース0ではWDT(watchdog timer)クリア信号ON、及びLEDドライバ90の初期化処理を行う。ケース1〜3ではLEDドライバ90の初期化処理を行う。ケース8ではWDTクリア信号OFFを行う。ケース12〜15では、LEDドライバ90に対するLED駆動データの出力を行う。
LEDドライバ90の初期化とは、LEDドライバ90において使用しないレジスタにデフォルト値を出力する処理である。この初期化と、LED駆動データの出力は、1回の1msタイマ割込処理の際に、LEDドライバ90の2,3個に対して行われる。
【0103】
ステップS206では、演出制御CPU200は、液晶制御基板52に対する演出制御コマンドの出力を行う。例えば1回の1msタイマ割込処理において、1コマンド(2バイト)の送信を行う。つまりモード及びイベントとしての2バイトの演出制御コマンドが送信される。
その後、演出制御CPU200はステップS207で割込みカウンタのインクリメントを行い、またステップS208でシナリオ更新カウンタのインクリメントを行う。そしてシナリオ更新カウンタの値が100未満であれば、1msタイマ割込処理を終える。
なお、シナリオ更新カウンタは上述のように16ms処理のステップS116でゼロリセットされるため、通常はシナリオ更新カウンタの値が100以上となることはない。100以上となるのは、演算異常、処理応答異常などにより16ms処理が実行されない場合や、16ms処理内の或る処理の進行が停止しているような場合である。このような場合は、無限ループに入り、WDTによってタイムアップ処理が行われるのを待つことになる。
【0104】
1msタイマ割込処理に入った際に、ステップS201でチェックサム算出中と判断された場合は、演出制御CPU200は処理をステップS210に進め、WDTをクリアする。そしてステップS211で液晶制御基板52に対する演出制御コマンドの送信出力を行う。そしてステップS212で割込みカウンタをインクリメントして1msタイマ割込処理を終える。
【0105】
[4−3:コマンド解析処理]
続いて、16ms処理として
図8のステップS108で行われるコマンド解析処理について、
図10、
図11で説明する。演出制御CPU200は、ステップS108のコマンド解析処理として、主制御部50から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。この具体的な処理として、
図10のステップS301〜F308の処理を行う。
【0106】
演出制御部51には、主制御部50から送信されてきた演出制御コマンドを取り込むコマンド受信バッファが、例えば演出制御RAM202に用意される。演出制御CPU200は、まず
図10のステップS301で、コマンド受信バッファの読み出しアドレスを示すリードポインタと、書き込みアドレスを示すライトポインタの確認を行う。
ライトポインタは、コマンド受信に応じて更新され、それに応じてライトポインタで示されるアドレスに、受信した演出制御コマンドが格納されていく。リードポインタは、コマンド受信バッファからの読み出しを行った際に更新(ステップS302)される。従って、もしリードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されているということになる。そこでリードポインタ=ライトポインタでなければステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。この場合、次の読み出し(ロード)のためにリードポインタをインクリメントしておく。
【0107】
上述したように1つの演出制御コマンドは、モードとしての1バイトとイベントとしての1バイトの2バイトで形成されている。演出制御CPU200はステップS303で、ロードした1バイトのコマンドデータが、モードであるかイベントであるかを確認する。この確認は、8ビット(Bit0〜Bit7)のうちのBit7の値により行われる。
そしてモードであれば、コマンドの上位データ受信の処理として、ステップS304に進み、読み出したコマンドデータを、レジスタ「コマンドHIバイト」にセーブする。また「コマンドLOバイト」のレジスタをクリアする。そしてステップS301に戻る。
続いても、リードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されていることになるため、ステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。またリードポインタをインクリメントする。
そして読み出したコマンドがイベントであれば、コマンドの下位データ受信の処理として、ステップS303からS305に進み、読み出したコマンドデータを、レジスタ「コマンドLOバイト」にセーブする。
【0108】
モード及びイベントのコマンドデータが、レジスタ「コマンドHIバイト」「コマンドLOバイト」にセーブされることで、演出制御CPU200は1つのコマンドを取り込んだことになる。
そこで演出制御CPU200はステップS306で、取り込んだコマンドに応じた処理を行う。具体例は
図11で後述する。
【0109】
リードポインタ=ライトポインタとなるのは、演出制御CPU200がまだ取り込んでいない演出制御コマンドがコマンド受信バッファには存在しない場合である。そこで、新たな取り込みは不要であるため、ステップS307に進む。この場合、図柄コマンド待ちの状態で100ms経過したか否かを確認する。そのような事態となっていなければ、
図10のコマンド解析処理を終える。一方、図柄コマンド待ちの状態で100ms経過していたのであれば、ステップS308でコマンド欠落における図柄変動の処理を行うこととなる。
【0110】
上記のステップS306におけるコマンド対応処理の例を
図11で説明する。
図11Aは、コマンド対応処理としての基本処理を示している。2バイトの演出制御コマンドの受信に応じて、演出制御CPU200はまず
図11AのステップS321で、現在テストモード中であるか否かを確認する。テストモード中であれば、ステップS322ですべての演出シナリオのクリア、音出力の停止、装飾ランプ部63,64におけるLEDの消灯を行う。そしてステップS323でテストモードを終了する。
テストモード中でなければ、これらの処理は行わない。
そして演出制御CPU200は、ステップS330として、取り込んだ演出制御コマンドについての処理を行うことになる。
【0111】
演出制御コマンドとしては、例えば特別図柄変動パターン指定コマンド、特別図柄指定コマンド、保留球減算コマンド、保留球加算コマンド、エラー表示指定コマンド、大当たり開始指定コマンド・・・など多様に設定されている。ステップS330では、演出制御CPU200は、受信したコマンドに対応して、プログラムで規定された処理を行う。ここでは
図11B、
図11C、
図11D、
図11Eで、4つの演出制御コマンドを挙げて、具体的処理を例示する。
【0112】
図11Bは、ステップS330でのコマンド処理として、変動パターンコマンドを取り込んだ場合の処理S330aを示している。
この場合、演出制御CPU200は、ステップS331で、図柄コマンド待ち状態をセットする処理を行う。これは変動パターンコマンドと、図柄コマンドが順次受信されることで、演出制御CPU200が図柄の変動表示の制御を行うためである。
図11Cは、ステップS330でのコマンド処理として、図柄コマンドを取り込んだ場合の処理S330bを示している。
この場合、演出制御CPU200は、まずステップS332で、変動パターンコマンド受信済みであるか否かを確認する。受信していなければそのまま処理を終える。
図柄コマンドを受信した際に、既に変動パターンコマンド受信済みであれば、ステップS333に進み、まず役物原点補正の動作についてのシナリオ登録を行う。そしてステップS334で、変動開始処理を行う。この変動開始処理では、変動パターンコマンドや図柄コマンドに応じた図柄変動動作のシナリオ設定や、変動表示中に出現させるべき予告演出の実行有無及びその種別を抽選により決定し、決定した予告演出のシナリオ設定を行う。さらに、それらに同期する液晶表示のコマンド送信も行う。
この変動開始処理の実行後、演出制御CPU200は、ステップS335で変動パターンコマンドの削除を行う。
【0113】
図11Dは、ステップS330でのコマンド処理として、電源投入コマンドを取り込んだ場合の処理S330cを示している。
この場合、演出制御CPU200は、ステップS337で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS338でエラー解除コマンドの送信、ステップS339で役物エラー情報のクリア、ステップS340で役物動作の停止、ステップS341で電源投入のシナリオ登録、ステップS342で液晶制御基板52へ送信する電源投入コマンドのセットを順次行う。
【0114】
図11Eは、ステップS330でのコマンド処理として、RAMクリアコマンドを取り込んだ場合の処理S330dを示している。
この場合、演出制御CPU200は、ステップS343で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS344でエラー解除コマンドの送信、ステップS345でRAMクリアエラーセットと、エラー報知タイマのセットを行う。さらにステップS346で演出制御RAM202における抽選処理に関する情報のクリア、ステップS347で、シナリオに関する情報のクリアを行う。そしてステップS348で液晶制御基板52へ送信する電源初期投入表示(RAMクリア)コマンドのセットを行う。
【0115】
[4−4:シナリオ登録・削除処理]
次にシナリオ登録・削除処理について説明する。シナリオとは演出制御やエラー処理その他、各種の実行すべき動作を規定したデータである。実行すべきシナリオのデータは、シナリオ登録情報として演出制御RAM202のワーク領域に登録される。
図16Aに示すシナリオ登録情報の構造については後述するが、シナリオ登録情報としては、0〜63までの64個のシナリオチャネルが用意されている。この64個のシナリオチャネルに登録されたシナリオは同時に実行可能とされる。以下、シナリオチャネルを「sCH」で示す。
シナリオ登録処理とは、シナリオ登録情報における任意のシナリオチャネルsCHに、登録を要求されたシナリオ番号のシナリオを登録する処理である。原則的には、sCH0〜sCH63のシナリオチャネルは、どのチャネルが用いられても良い。
【0116】
以下説明するシナリオ登録は、例えばステップS106のエラー処理、ステップS107のデモ処理、ステップS108のコマンド解析処理などの処理過程において、必要時に呼び出され、実行される。例えば先に述べた
図11CのステップS333、
図11DのステップS341などが、シナリオ登録が実行される場合の一例となる。
【0117】
図12の処理として、演出制御CPU200は、コマンド或いはプログラム上で指定されるシナリオに対応したシナリオ番号と待機時間(delay)の値を、ワーク(シナリオ登録情報)に登録する処理を行う。
ステップS401で演出制御CPU200は、まず今回登録すべきシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、何もせずに処理を終える。
【0118】
シナリオ番号が適正であれば、演出制御CPU200はステップS402で変数Bをゼロに設定する。変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、空きチャネルを順次探索するために使用する変数である。さらに変数Bは、まだ探索(空きチャネルであるか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0119】
演出制御CPU200は、ステップS403で、「追加ポインタ」+Bのシナリオチャネルが空きであるか否かを確認する。追加ポインタとは、シナリオ登録を行った際に、後述のステップS407で設定されるポインタである。
図12の処理を開始する時点では、追加ポインタの値は、前回登録したシナリオチャネルの次のシナリオチャネルを示す値となっている。なお、追加ポインタの初期値(初期状態から
図12の処理が初めて行われる時の値)は0である。
「追加ポインタ」+Bのシナリオチャネルが空きでなければ、演出制御CPU200はステップS404で変数Bをインクリメントする。
ステップS405でB<64でなければ、この
図12の処理を終える。これは全シナリオチャネルについて探索を行ったが、空きチャネルがなくてシナリオ登録が不可能となる場合である。
まだ全シナリオチャネルの探索(空きチャネルであるか否かの確認)を行っていない時点では、ステップS405でB<64である。その場合はステップS406の確認処理を行い、「追加ポインタ」+Bの値がシナリオチャネルsCHの最大値を超えた値「64」以上となっていなければステップS403に戻る。
また「追加ポインタ」+Bの値が「64」以上となっていた場合は、ステップS407で追加ポインタの値の補正処理を行う。具体的には「追加ポインタ」+Bの値が「64」となった場合、追加ポインタの値を「64」減算する処理を行う。そしてステップS403に戻る。
【0120】
このステップS403〜S407の処理によれば、前回登録したシナリオチャネルの次のシナリオチャネルから、順次シナリオチャネルが空きか否かが確認されることになる。
つまり、ステップS404での変数Bのインクリメントにより、ステップS403が行われるたびに確認されるシナリオチャネルsCHが、順次1つずつ進行することとなる。
また、変数BはステップS402でゼロリセットされてからステップS404でインクリメントされるものであるため、ステップS405でB<64とはならない場合(つまり変数Bが64に達した場合)は、既にステップS403の処理が64回行われた場合である。これは全シナリオチャネルsCH0〜sCH63を調べたが、空きがなかったと判断された場合である。そのため登録不可能として
図12の処理を終えることとなる。
【0121】
また、「追加ポインタ」の値は、前回登録したシナリオチャネルの次のシナリオチャネルを示す値であるため、まだ全シナリオチャネルの空き確認を行っていないB<64の時点でも、「追加ポインタ」+Bの値(つまり次に確認しようとするシナリオチャネルsCHの番号)が「64」以上となることがある。具体的には、直前のステップS403の時点で「追加ポインタ」+Bの値が63であり、シナリオチャネルsCH63について確認した後、ステップS404で変数Bがインクリメントされた場合である。このままでは、次に存在しないシナリオチャネルsCH64を指定することとなる。
そこでステップS406でこの点を確認し、「追加ポインタ」+Bの値が「64」となっていたら、ステップS407では、次に確認するシナリオチャネルを「sCH0」に戻すために、追加ポインタの補正を行う。つまり追加ポインタの値を−64することで、「追加ポインタ」+Bの値が「0」となるようにする。これにより次のステップS403では、シナリオチャネルsCH0が空きであるか否か確認されるようにする。
【0122】
ある時点のステップS403の処理で、空きのシナリオチャネルが発見されたら、演出制御CPU200はステップS408に進み、その空きのシナリオチャネルに、シナリオ番号、及び待機時間(delay)をセットする。またその他のシナリオ管理に必要なデータをゼロクリアする。
そしてステップS409で、追加ポインタを、登録を行ったシナリオチャネル+1の値に更新する。つまり今回登録を行ったシナリオチャネルの次のシナリオチャネルの値を、追加ポインタとして記憶しておき、次回の登録処理に使用できるようにする。なお、本実施の形態ではシナリオチャネルはsCH0〜sCH63の64チャネルのため追加ポインタの最大値は63となる。
【0123】
この
図12の処理によれば、シナリオ登録の際に、前回登録を行ったシナリオチャネルの次のシナリオチャネルから、空きチャネルが探索される。追加ポインタの初期値は「0」であり、その後、登録に応じてステップS407で更新されていくが、この処理によれば、多くの場合、シナリオチャネルsCH0から順に使用されてシナリオ登録が行われる。そして、シナリオ登録の際には、前回の登録チャネルの次のシナリオチャネルから空きの確認が行われる。従って、殆どの場合、素早く空きチャネルが発見でき、シナリオ登録処理を効率的に実行することができる。これにより演出制御CPU200の処理負担は軽減される。
【0124】
なお、処理の変形例として、ステップS407で更新する追加ポインタの値は、登録を行ったシナリオチャネルの番号としておき、ステップS402では変数Bに1を代入してもよい。但しその場合、ステップS405ではB≦65であるか否かの判断を行うようにする。
【0125】
次にシナリオ削除処理について説明する。これはワークの或るシナリオチャネルに登録されているシナリオを削除する処理である。
図13Aは、或るシナリオをシナリオ登録情報から削除する場合の演出制御CPU200の処理を示している。
演出制御CPU200は、コマンド或いはプログラムグラム上で指定される、削除するシナリオ番号(後述のメインシナリオ番号(mcNo))の値に基づいて、
図13Aの処理を開始する。まずステップS421で演出制御CPU200は、削除要求にかかるシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、削除せずに処理を終える。
【0126】
シナリオ番号が適正であれば、演出制御CPU200はステップS422で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象のシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0127】
演出制御CPU200は、ステップS423で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号のものであるか否かを確認する。シナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号でなければ、ステップS424で変数Bをインクリメントし、ステップS425でB<64であることを確認して、ステップS423の処理を行う。
このステップS423,F424の処理によれば、シナリオチャネルsCH0からシナリオチャネルsCH63に向かって順に、削除対象のシナリオを探索していくこととなる。
ステップS423でシナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号であった場合は、ステップS426に進み、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオを削除する処理を行う。
以上により、要求された或るシナリオ番号のシナリオをワーク(シナリオ登録情報)から削除する処理が行われる。
なお、ステップS425でB<64ではないと判断される場合、つまり変数Bが64に達した場合は、シナリオチャネルsCH0〜sCH63の全てを探索したが、削除対象のシナリオが登録されていなかったということになるため、処理を終える。
【0128】
図13Bは、或る範囲のシナリオを削除する処理を示している。削除シナリオが範囲で指定された場合に、この処理が行われる。
演出制御CPU200は、コマンド或いはプログラム上で、或るシナリオ番号の範囲で削除指定された場合、まずステップS431で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象範囲に該当するシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象範囲に該当するシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0129】
演出制御CPU200は、ステップS432で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが、削除対象とされた範囲内のシナリオ番号であるか否かを確認する。そしてシナリオチャネルsCH(B)に登録されているシナリオが削除対象の範囲内のシナリオ番号であれば、ステップS433でシナリオチャネルsCH(B)に登録されているシナリオを削除する。そしてステップS434に進む。
シナリオチャネルsCH(B)に登録されているシナリオが、削除対象とされた範囲内のシナリオ番号ではなければ、ステップS433を行わずにステップS434に進む。
演出制御CPU200はステップS434では、変数Bをインクリメントし、ステップS435でB<64であることを確認して、ステップS432に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ範囲削除処理を終える。
以上により、シナリオ番号範囲の1又は複数のシナリオについて、ワーク(シナリオ登録情報)からの削除が行われる。
【0130】
図13Cは登録されているシナリオを全て削除する処理を示している。例えばシステム上の都合により、やむを得ずシナリオを削除する際に呼び出される処理である。なお、保護対象とされたシナリオは削除しないようにする。
演出制御CPU200は、シナリオ全削除が要求された場合、まずステップS441で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、保護対象のシナリオを登録したシナリオチャネルを確認するために使用する変数となる。さらに変数Bは、まだ確認(保護対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0131】
演出制御CPU200は、ステップS442で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが、保護対象のシナリオであるか否かを確認する。そして保護対象のシナリオであれば、削除せず、一方、保護対象のシナリオでなければ、ステップS443で、そのシナリオチャネルsCH(B)に登録されているシナリオを削除する。
そしてステップS444で変数Bをインクリメントし、ステップS445でB<64であればステップS442に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ全削除処理を終える。
以上により、ワークにシナリオ登録情報として登録されているシナリオについて、保護対象のシナリオを除く全シナリオの削除が行われる。
【0132】
[4−5:シナリオ更新処理]
続いてメイン処理の16ms処理のステップS110で行われるシナリオ更新処理について説明する。シナリオ更新処理では
図14、
図15で説明するようにメインシナリオとサブシナリオの更新が行われる。
【0133】
まずシナリオ登録情報の構造を
図16、
図17で説明する。
図16Aは、メインシナリオ及びサブシナリオとしてのシナリオ登録情報の構造を示している。このシナリオ登録情報は演出制御RAM202のワークエリアを用いて設定される。
先に述べたように本実施の形態では、シナリオ登録情報は、シナリオチャネルsCH0〜sCH63の64個のチャネルを有するものとされる。各シナリオチャネルsCHに登録されたシナリオについては同時に実行可能とされる。
【0134】
図示のように各シナリオチャネルsCHに登録できる情報としては、サブシナリオ更新処理で用いるサブシナリオタイマ(scTm)、音/モータサブシナリオテーブルの実行ラインを示すサブシナリオ実行ライン(scIx)、ランプサブシナリオテーブルの実行ラインを示すサブシナリオ実行ラインlmp(lmpIx)、シナリオ更新処理に用いるメインシナリオタイマ(msTm)、メインシナリオテーブルの実行ラインを示すメインシナリオ実行ライン(mcIx)、メインシナリオ番号(mcNo)、メインシナリオに付加可能なオプションデータであるメインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)、チェックサム(checkSum)がある。
【0135】
スピーカ25による音出力、装飾ランプ部63,64による発光、及び可動体役物モータ65による可動体役物の駆動による演出を開始するときには、待機時間(delay)とメインシナリオ番号(scNo)をシナリオチャネルsCH0〜sCH63のうちの空いているシナリオチャネルに登録する。
待機時間(delay)は、シナリオチャネルsCHに登録してからそのシナリオが開始されるまでの時間を示す。なおこの待機時間(delay)は16ms処理毎に1減算される。待機時間(delay)が0の場合に、登録されたデータに対応した処理が実行されることとなる。
【0136】
図18には、メインシナリオテーブルの一部として、シナリオ番号1,2,3の例を示している。各シナリオ番号のシナリオとしては、シナリオの各ライン(行)に時間データとしてメインシナリオタイマ(msTm)の値が記述されるとともに、サブシナリオ番号(scNo)、オプション(OPT)を記述することができる。即ちメインシナリオテーブルでは、メインシナリオタイマ(msTm)による時間として、実行されるべきサブシナリオ(及び場合によってはオプション)が指定される。またシナリオ最終行には、シナリオデータ終了コードD_SEEND、又はシナリオデータループコードD_SELOPが記述される。
なお、メインシナリオタイマ(msTm)の値は、メインシナリオの開始時から、16ms処理で行われるシナリオ更新の処理で+1されるため、「1」とは16msを示すものとなる。各シナリオ番号のシナリオテーブルは、或る行におけるメインシナリオタイマ(msTm)の時間を経過すると、次の行へ進むことになる。各行の時間データは、その行が終わるタイミングを示している。
例えばシナリオ番号2の場合、1500×16msの時間としてサブシナリオ番号2の動作が指定され、次の500×16msの時間としてサブシナリオ番号20の動作が指定され、次の2000×16msの時間としてサブシナリオ番号21の動作が指定されている。その次の行はシナリオデータ終了コードD_SEENDである。シナリオデータ終了コードD_SEENDの場合、シナリオ登録情報(ワーク)から、このシナリオが削除される(後述する
図14のステップS617参照)。
【0137】
次に
図16Bでランプデータ登録情報の構造を説明する。ランプデータ登録情報としては、ランプサブシナリオテーブルから選択されたシナリオ、即ち装飾ランプ部63,64による演出動作(点灯パターン)を示す情報が登録される。このランプデータ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、ランプデータ登録情報は、ランプチャネルdwCH0〜dwCH15の16個のチャネルを有するものとされる。各ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。従ってランプチャネルdwCH15に登録されたシナリオ(ランプサブシナリオ)が最も優先的に実行される。また例えばランプチャネルdwCH3、dwCH10にシナリオが登録されていれば、ランプチャネルdwCH10に登録されたシナリオが優先実行される。
なお、ランプチャネルdwCH0は主にBGM(Back Ground Music)に付随するランプ演出、ランプチャネルdwCH15はエラー関係のランプ演出に用いられ、ランプチャネルdwCH1〜dwCH14が通常演出に用いられる。
【0138】
各ランプチャネルdwCHに登録できる情報としては、図示のように、登録した点灯パターンの番号を示す登録点灯ナンバ(lmpNew)、実行する点灯パターンの番号を示す実行点灯ナンバ(lmpNo)、ランプサブシナリオの実行ラインを示すオフセット(offset)、実行時間(time)、チェックサム(checkSum)がある。
【0139】
図19Aにランプサブシナリオテーブルの一部として、ランプサブシナリオ番号1,2,3の例を示している。各番号のランプサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値が記述されるとともに、ランプチャネルと、各種の点灯パターンを示すランプナンバが記述される。また最終行には、ランプシナリオデータ終了コードD_LSENDが記述される。
【0140】
このランプサブシナリオテーブルにおいて、各ラインの時間データ(time)は、そのサブシナリオが開始されてからの、当該ラインが開始される時間を示している。
16ms毎にメインシナリオタイマ(msTm)と、テーブルの時間データを比較して、一致した場合に、そのラインのランプナンバが、
図16Bのランプデータ登録情報に登録される。登録されるランプチャネルdwCHは、当該ラインに示されたチャネルとなる。
例えば、上述の或るシナリオチャネルsCHにおいて、
図18に示したシナリオ番号2が登録され、サブシナリオ番号2が参照されるとする。
図19Aに示したランプサブシナリオ番号2では、1ライン目に時間データ(time)=0としてランプチャネル5(dwCH5)及びランプナンバ5が記述されている。この場合、メインシナリオタイマ(msTm)=0の時点で、まず当該1ライン目の情報が
図16Bのランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=5として登録される。シナリオ登録情報(
図16A)のサブシナリオ実行ラインlmp(lmpIx)の値は、次のラインの値(2ライン目)に更新される。これはランプチャネルdwCH5という比較的低い優先度で、点灯ナンバ5の点灯パターン動作の実行を行うための登録となる。
2ライン目については、500×16msとなった時点で同様の処理が行われる。即ちランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=6(つまり点灯ナンバ6の点灯パターンの指示)が登録される。
なお、時間データ(time)が連続する2ラインで同一の値であったら、その各ラインについての処理は同時に開始されることとなる。
後述するLED駆動データ更新処理では、このように更新されるランプデータ登録情報に基づいて、LED駆動データが作成される。
【0141】
次に
図16Cでモータデータ登録情報の構造を説明する。モータデータ登録情報としては、音/モータサブシナリオテーブル(
図19Bで後述)から選択されたシナリオを示す情報が登録される。このモータデータ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、モータデータ登録情報は、モータチャネルmCH0〜mCH7の8個のチャネルを有するものとされる。
各モータチャネルmCHに登録できる情報としては、図示のように、実行動作ナンバ(no)、登録動作ナンバ(noNew)、動作カウント(lcnt)、励磁カウンタ(tcnt)、実行ステップ(step)、動作ライン(offset)、親(移行元)/子(移行先)の属性(attribute)、親ナンバ(retNo)、戻りアドレス(retAddr)、ループ開始ポイント(roopAddr)、ループ回数(roopCnt)、エラーカウンタ(errCnt)、現在の入力情報(currentSw)、ソフト上のスイッチ情報(softSw)、ソフト上のカウント(softCnt)がある。
【0142】
また
図17は、音データ登録情報を示している。音データ登録情報としては、音/モータサブシナリオテーブル(
図19Bで後述)から選択されたシナリオを示す情報が登録される。この音データ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、音データ登録情報は、音チャネルaCH0〜aCH15の16個のチャネルを有するものとされる。この音チャネルaCH0〜aCH15のそれぞれは、音源IC59の入力チャネル(同じく16個)のそれぞれに対応するものである。
各音チャネルaCHに登録できる情報としては、図示のように、1次ボリューム遷移量(frzVq)、1次ボリューム(frzVl)、遷移量変化(rsv2)、ボリューム変化(rsv1)、フレーズ変化(rsv0)、ステレオ(frzSt)、ループ(frzLp)、フレーズ番号hi(frzHi)、フレーズ番号low(frzLo)、及び2次ボリューム(scdVl)がある。
【0143】
ここで、1次ボリュームとは、或るフレーズの再生開始を指示するシナリオデータ(後述するBGM、SE1、SE2、エラー)において、再生すべきフレーズのフレーズ番号の情報と共に記述されるボリューム情報である。
また、2次ボリュームとは、1次ボリュームとの掛け合わせで最終的な再生ボリュームを定めるボリューム情報となる。
1次ボリュームと2次ボリュームとの違いは、以下の通りである。
1次ボリュームは、上記のようにフレーズの再生開始を指示するシナリオデータにも記述されるのに対し、2次ボリュームは後述する音コントロール(音制御情報)のシナリオデータに記述される。
また、本実施の形態の場合、1次ボリュームによっては、1次ボリューム遷移量(frzVq)の情報と組み合わされることで、再生中のフレーズに対するボリューム制御が可能とされ、該1次ボリュームの制御によってフレーズのフェードイン再生/フェードアウト再生が可能とされる。後述もするように、これらフェードイン再生/フェードアウト再生の指示は、音コントロールとしてのシナリオデータに基づき実行される。
2次ボリュームは、通常はパチンコ遊技機1の裏側に設けられたボリュームスイッチの状態に応じた値に設定され、後述するようにエラー時や所望のフレーズを消音させたいとき等にMAX値とは異なる値が設定される。
2次ボリュームの変化指示は、音コントロールとしてのシナリオデータによっても可能とされる(この点についても後述する)。
【0144】
1次ボリューム遷移量frzVqは、1次ボリュームを変化させる時間(速さ)を表す情報となる。
遷移量変化rsv2は、1次ボリューム遷移量frzVqを変化させるか否かを表す情報であり、ボリューム変化rsv1は、フレーズ再生時に1次ボリュームを変化させるか否かを表す情報となる。また、フレーズ変化rsv0はフレーズ番号を書き替えるか否かを表す情報であり、ステレオfrzStはステレオ再生/モノラル再生の何れであるか、ループfrzLpは無限ループ再生かループ再生しないかの何れかをそれぞれ表す情報となる。
【0145】
図示するように、1次ボリューム遷移量、1次ボリューム、2次ボリュームのデータサイズはそれぞれ1バイト(8ビット)である。また、遷移量変化、ボリューム変化、フレーズ変化、ステレオ、ループの各情報は1ビットされる。さらに、フレーズ番号hiは3ビット、フレーズ番号lowは1バイトとされる。即ち、フレーズ番号の情報は11ビットで構成され、従って最大で2048個のフレーズの指定が可能とされる。
【0146】
ここで、本例において、ステレオ再生の場合は、隣接関係にある2つの音チャネルaCHを用いる。具体的には、偶数チャネルである音チャネルaCHnとその次の奇数チャネルである音チャネルaCHn+1とを使用する。
ステレオ再生を指示するシナリオデータには、ステレオ再生すべきフレーズを指定するためのフレーズ番号(指定情報としてはLchとRchとで共通の1つのフレーズ番号が用いられる)の情報と、ステレオ再生を指定するための情報とが記述され、該シナリオデータに基づき、音データ登録情報における偶数の音チャネルaCHnと奇数の音チャネルaCHn+1とにこれらフレーズ番号とステレオ再生の指示情報とが登録される(上述のフレーズ番号hi,lowとステレオfrzSt)。
【0147】
図19Bは、音/モータサブシナリオテーブルの一部として、音/モータサブシナリオ番号1,2の例を示している。
各番号の音/モータサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値(ms)が記述されるとともに、BGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションの情報が記述可能とされる。また最終行には、シナリオデータ終了コードD_SEENDが記述される。
この音/モータサブシナリオテーブルに関しては、サブシナリオタイマ(scTm)の値が当該音/モータサブシナリオテーブル中の或るラインに記述された時間データ(time)の値になったら(なお最初は0である)、そのラインに記述されたBGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションに応じた情報を音データ登録情報やモータデータ登録情報に登録することになる。
なお、各ラインの時間データ(time)は、当該ラインが終了するタイミングを示している。
【0148】
ここで、音/モータサブシナリオテーブルにおけるSE(SE1及びSE2)とは、BGMとエラー音以外の演出に係る音を意味する。いわゆる予告演出時の音(予告音)は、このSEに分類される。
SE1とSE2の区別は、その音を出力する演出の出現頻度による別としている。例えば予告音であれば、その音を使用する予告演出の出現頻度(信頼度)による区別となる。本例の場合、SE2はSE1よりも出現頻度が低い演出に係る音とされる。
【0149】
音/モータサブシナリオテーブルにおけるBGM、SE1、SE2、エラー音の各情報は、それぞれフレーズ番号と1次ボリュームの情報とを含む。
これら音/モータサブシナリオテーブルに記述されたBGM、SE1、SE2、エラー音の情報は、音データ登録情報における何れかの音チャネルaCHに登録されることになるが、本実施の形態では、これらBGM、SE1、SE2、エラー音の音の種別ごとに、その情報内容を登録する音チャネルaCHを予め定めておくものとしている。
具体的に、音/モータサブシナリオテーブルに記述されたBGMの情報については、音チャネルaCH0(ステレオの場合は加えてaCH1)に登録する。また、SE1の情報については音チャネルaCH2〜aCH9のうちの空きチャネルに登録し、SE2の情報については音チャネルaCH10〜aCH14うちの空きチャネルに登録する。さらに、エラー音の情報については音チャネルaCH15に登録する。
このように本実施の形態では、音の種別と、その音についての音関連の情報を登録する音チャネルaCHとの対応関係が予め定められている。
【0150】
また、音/モータサブシナリオテーブルにおける音コントロールの情報は、再生中のフレーズをコントロールするための情報を記述したものである。
本実施の形態の場合、当該音コントロールの情報は4バイトで構成され、下位3バイトがコントロール対象のフレーズを指定するための情報、上位1バイトがコントロール情報(音のコントロール内容を表す情報)とされている。
【0151】
ここで、本実施の形態では、音の種別と、その音についての情報を登録する音チャネルaCHとの対応を上述のように定めているが、このことは、BGMとしてのフレーズは音チャネルaCH0(ステレオの場合はaCH0及びaCH1)で再生され、SE1としてのフレーズは音チャネルaCH2〜aCH9の何れかで再生され、SE2としてのフレーズは音チャネルaCH10〜aCH14の何れかで再生され、エラー音としてのフレーズは音チャネルaCH15で再生されるということが一意に定まっていると換言できる。
このため、音コントロールの情報に基づき所定の種別の音(BGM/SE1/SE2/エラー音)をコントロールするとしたときは、音コントロールの情報を、その音に対応する音チャネルaCHに対して登録すればよい。
この点に鑑み本実施の形態の音コントロールの情報では、その下位3バイトの情報、即ちコントロール対象のフレーズを指定するための情報として、音チャネルaCHを指定する情報を記述する。つまり、コントロール対象とする音(フレーズ)が再生される音チャネルaCH(つまりBGM/SE1/SE2/エラー音の別に応じたaCH0(及びaCH1)/aCH2〜aCH9/aCH10〜aCH14/aCH15の別)を指定する情報が記述される。
【0152】
なお、音/モータサブシナリオテーブルに記述されるBGM、SE1、SE2、エラー音、音コントロールの各情報を音データ登録情報としてワークに登録するための具体的な処理については
図24〜
図28により後述する。
【0153】
ここで、上記のように本実施の形態では、音の種別と、その音についての情報を登録する音チャネルaCHとの対応関係を予め定めておくようにしたことで、或る種別の音が再生される音チャネルaCHが一意に定まるようにできる。これにより、再生中の或る種別の音を制御するとしたときは、ワークにおけるその種別の音と対応づけられた音チャネルaCHに対して制御情報を登録すれば済み、制御対象とする音を再生中の音チャネルaCHを探索する必要はないものとできる。
従って探索処理が省略される分、演出動作に係る制御負荷を軽減できる。
【0154】
また、上記のように本実施の形態では、再生中の音をコントロールするための音コントロールの情報を、コントロールの内容を表す情報と、制御対象とする音に対応する音チャネルaCHを表す情報とを組み合わせた情報としている。
このように音コントロール情報を、制御内容情報の登録先の音チャネルaCHの指定が可能な情報としたことでも、制御対象の音を再生中の音チャネルaCHを探索せずに済むものとできる。即ち、音コントロール情報をこのような構成とした点も、探索処理の省略、つまりは演出動作に係る制御負荷の軽減に寄与するものである。
【0155】
説明を
図19Bに戻す。
音/モータサブシナリオテーブルにおいて、モータのデータは、モータ1個につき1バイトでモータの動作パターン番号を示すように構成されている。
モータ番号に対応するモータチャネルに対して、この動作パターン番号がセットされる。
【0156】
図8のステップS111として説明した音再生処理では、
図14,
図15のシナリオ更新処理で更新される音データ登録情報に基づいて、再生出力が行われることになる。
また、
図9のステップS203のモータ動作更新処理では、
図14,
図15のシナリオ更新処理で更新されるモータデータ登録情報に基づいて、モータ駆動データが作成される。
【0157】
これまでで説明した各情報を用いて実行されるシナリオ更新処理について、
図14、
図15を参照して説明する。
図8の16ms処理のステップS110として実行される
図14のシナリオ更新処理では、演出制御CPU200はループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて、ステップS600〜S616の処理を行う。当該ループ処理の各回の処理対象のシナリオチャネルを「sCHn」として説明する。
【0158】
演出制御CPU200は、ステップS600でシナリオチャネルsCHnのメインシナリオ番号が0であるか否かを確認する。メインシナリオ番号が0である場合、当該シナリオチャネルsCHnは先の
図12のシナリオ登録処理でメインシナリオの登録が為されていないチャネルsCHとなるので、該シナリオチャネルsCHnの情報更新は不要である。従ってこの場合は、ステップS615以下の処理を実行して処理を終える。具体的に、ステップS615でシナリオチャネルsCHn関連のデータのチェックサムを算出し、保存した上で、ステップS616でシナリオチャネルsCHn関連のデータをバックアップ保存する。これでシナリオチャネルsCHnについての1回の処理を終える。
【0159】
一方、ステップS600でメインシナリオ番号が0でないとされた場合は、ステップS601に進み、シナリオチャネルsCHnの待機時間(delay)を確認する。待機時間(delay)=0でなければステップS602で待機時間(delay)の値を−1(デクリメント)する。そして、ステップS615及びS616の処理を実行して、シナリオチャネルsCHnについての1回の処理を終える。
【0160】
ステップS601で待機時間(delay)=0であることが確認された場合は、演出制御CPU200はステップS603に進み、シナリオチャネルsCHnに登録されているメインシナリオ番号(mcNo)と、メインシナリオ実行ライン(mcIx)に対応するメインシナリオテーブルのアドレスを特定する。
ステップS604では、当該特定したアドレスで示される、メインシナリオテーブルの或るメインシナリオ番号の実行ラインが、終了コードD_SEEND(
図18参照)が記述されている最終ラインであるか否かを確認する。
終了コードが記述された最終ラインで合った場合は、当該シナリオチャネルsCHnに登録されたシナリオで実行すべき処理は終了したことになるため、ステップS617で、そのシナリオチャネルsCHnに登録されているシナリオをシナリオ登録情報(ワーク)から削除する。
なお、この場合のシナリオ登録の削除は、シナリオ終了に応じた通常の削除である。先に
図13で説明したシナリオ削除は、この通常削除以外の、例えば未終了のシナリオをシナリオ登録情報(ワーク)から削除する処理であることを付言しておく。
【0161】
ステップS617でシナリオ削除を行った後は、ステップS615に進む。
【0162】
ステップS604で、メインシナリオテーブルの当該ラインが終了コードではない場合は、演出制御CPU200はステップS605に進み、まず当該シナリオチャネルsCHnのメインシナリオオプション(mcOpt)に、当該ラインのオプション(OPT)をセットする。次にステップS607で、ユーザオプション(userFn)に0を代入する。
そしてステップS608で当該シナリオチャネルsCHnで指定されるサブシナリオの更新を行う。サブシナリオの更新については
図15で後述する。
【0163】
ステップS609では、演出制御CPU200はメインシナリオタイマ(msTm)を+1(インクリメント)する。そしてステップS610では、メインシナリオタイマ(msTm)の値と、メインシナリオテーブルの該当ラインの時間データ(
図18参照:msTmで記述)を比較する。先に述べたように、メインシナリオテーブルの各ラインの時間データは、そのラインの終了タイミングを規定するものであるから、メインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上であれば、そのラインの処理は終了し、次のラインを対象とする。従って、ステップS610でメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上であるとされた場合は、ステップS611に進み、シナリオチャネルsCHnのメインシナリオ実行ライン(mcIx)を+1する。つまり次回は、次のラインが対象となるようにする。
また、ステップS610においてメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上ではないとされた場合は、ステップS615に進む。
【0164】
ステップS611でシナリオチャネルsCHnのメインシナリオ実行ライン(mcIx)を+1した後は、ステップS612で次のラインがループ指定であるか否かを確認する。
図18のメインシナリオテーブルにおいてシナリオ番号1では、最終ラインがシナリオデータループコードD_SELOPとされている例を示したが、このようにループ指定されていた場合は、ステップS613で、メインシナリオ実行ライン(mcIx)にループ行をセットする。
またステップS612で次のラインはループ指定ではないとされた場合は、ステップS613を経由せずステップS614に進む。
【0165】
演出制御CPU200は、ステップS614では、1つのラインの終了に応じたクリア処理を行う。即ちメインシナリオタイマ(msTm)、サブシナリオタイマ(scTm)、サブシナリオ実行ライン(scIx)、サブシナリオ実行ラインlmp(lmpIx)、メインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)をクリアする。
そしてステップS615のチェックサム処理、ステップS616のバックアップ処理を行ってシナリオチャネルsCHnについての1回の処理を終える。
シナリオ更新処理としては、ループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて以上の処理が実行されることになる。
【0166】
ステップS608で行われるサブシナリオ更新処理を
図15Aに詳細に示す。
メインシナリオタイマ(msTm)、シナリオチャネルsCHnと、メインシナリオテーブルに記述されたサブシナリオ番号(scNo)に基づいて、
図15Aのサブシナリオの更新処理が行われる。
【0167】
まずステップS621で演出制御CPU200は、シナリオチャネルsCHnが0〜63のいずれかを示しているか否か、つまり適正値であるか否かを確認する。シナリオチャネルsCHnが64以上であれば、更新処理不能として
図15の処理を終える。
シナリオチャネルsCHnが適正値であれば、演出制御CPU200はステップS622で、サブシナリオ番号(scNo)とサブシナリオ実行ラインlmp(lmpIx)に対応するランプサブシナリオテーブル(
図19A参照)のアドレスを特定する。
【0168】
演出制御CPU200はステップS623では、ランプチャネルカウント値を0をセットする。このランプチャンネルカウント値は、ランプデータ登録情報への点灯パターンナンバの登録がランプチャンネルdwCHの数(16)を超えて異常な回数行われてしまうことを防止するために演出制御CPU200が管理する値である。
【0169】
そして、演出制御CPU200はステップS624で、メインシナリオタイマ(msTm)とランプサブシナリオテーブルの時間データ(time)を比較する。ランプサブシナリオテーブルの時間データ(time)は、当該ライン(サブシナリオ実行ラインlmp(lmpIx)で示されるライン)が開始される時間(ms)を示している。従って、メインシナリオタイマの時間(実際にはmsTm×16msの時間)が、時間データ(time)以上となっていたら、そのラインについての処理を行う。その場合、ステップS625でランプチャネルカウント値が正常(ランプチャンネルdwCHの数である「16」以内)であるか否かを確認する。異常な値であれば処理を終える。正常な値であればステップS626で、現在のラインが、ランプシナリオデータ終了コードD_LSENDが記述されたラインであるか否かを確認する。
【0170】
ランプシナリオデータ終了コードD_LSENDが記述されたラインではなければ、演出制御CPU200はステップS627で、当該ラインに記述されているランプチャネル、ランプナンバを取得する。そしてステップS628で点灯パターンナンバの登録を行う。
点灯パターンナンバの登録処理を
図15Bに示している。この場合、まず演出制御CPU200はステップS651で、当該ラインに記述されているランプチャネルdwCHの値が正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
正常値であれば、ステップS652で、当該ラインに記述されているランプナンバが正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
ランプチャネルdwCH及びランプ番号のいずれもが正常値であれば、ステップS653でワークのランプデータ登録情報における、ランプチャネルdwCHに対応する領域に登録点灯ナンバ(lmpNew)と実行点灯ナンバ(lmpNo)をセットする。即ちランプサブシナリオテーブルの当該ラインから取得したランプナンバを、登録点灯ナンバ(lmpNew)にセットし、「0」を実行点灯ナンバ(lmpNo)にセットする。
以上の
図15Bの処理をステップS628で行ったら、演出制御CPU200はステップS629でサブシナリオ実行ラインlmp(lmpIx)の値を+1し、ステップS630でランプチャネルカウント値を+1してステップS624に戻る。
【0171】
ステップS624で、メインシナリオタイマの時間が、サブシナリオ実行ラインlmp(lmpIx)で示されるラインの時間データ(time)に達していない場合、及びステップS626でランプシナリオデータ終了コードD_LSENDが確認された場合は、演出制御CPU200の処理はステップS631へ進む。
【0172】
ステップS631では、メインシナリオテーブルに記述されているサブシナリオ番号と、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(scIx)に対応する音/モータサブシナリオテーブルのアドレスを特定する。
そして、ステップS632で、サブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上であるか否かを確認する。即ち、サブシナリオタイマ(scTm)の値が、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(sclx)で示されるラインの時間データ(time)の値以上であるか否かを確認する。
【0173】
ステップS632において、サブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上でなければ、そのラインに記述された情報についての登録処理は未だ実行するべきではないので、図のように音及びモータの登録を行わずにステップS640に進み、サブシナリオタイマ(scTm)の値をインクリメント(+1)して、この
図15Aの処理を終えることとなる。
【0174】
一方、ステップS632においてサブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上であれば、演出制御CPU200は処理をステップS633に進め、該当する音/モータサブシナリオ番号のテーブルの、サブシナリオ実行ライン(scIx)で示されるラインが、シナリオデータ終了コードD_SEENDが記述された行であるか否かを確認する。シナリオデータ終了コードD_SEENDが記述された行であれば処理を終了する。
シナリオデータ終了コードD_SEENDが記述された行でなければ、演出制御CPU200はステップS635で音の登録を行い、またステップS636でモータの登録を行う。これらステップS635,S636の登録処理としては、
図19Bに例示したような音/モータサブシナリオテーブルの該当サブシナリオ番号の該当ラインの情報を、
図17の音データ登録情報の音チャネルaCH、
図16Cのモータデータ登録情報のモータチャネルmCHにそれぞれ登録する処理を行う。
なお、ステップS635として実行される音の登録の詳細な処理内容については後述する(
図24〜
図28)。
【0175】
続いて、演出制御CPU200はステップS637で、当該ラインに記述されたソレノイド/ユーザオプションの情報を、シナリオ登録情報等に登録する。
そしてステップS638で、サブシナリオ実行ライン(scIx)の値として次のラインの値をセットする。さらにステップS640でサブシナリオタイマ(scTm)をインクリメントして処理を終える。
【0176】
図8のステップS110では、以上の
図14,
図15の処理が行われることとなる。この処理でワーク上のシナリオ登録情報、ランプデータ登録情報、モータデータ登録情報、音データ登録情報が逐次更新され、これに応じて演出制御が行われることで、シナリオに沿った演出動作が実現される。
【0177】
特に本実施の形態においては、第1のワークエリア(シナリオチャネルsCH0〜sCH63)には、演出種別を特定する演出データとしてシナリオ登録情報がセットされる。具体的にはメインシナリオ番号(mcNo)がセットされ、メインシナリオテーブル上のサブシナリオが特定される。さらに第1のワークエリアでは、音/モータサブシナリオテーブルの実行ラインを示すサブシナリオ実行ライン(scIx)、ランプサブシナリオテーブルの実行ラインを示すサブシナリオ実行ラインlmp(lmpIx)がセットされる。これらにより演出種別が特定される。
また実行する演出に応じた演出デバイスの動作データは第2のワークエリアにセットされる。第2のワークエリアとしてランプデータ登録情報をセットするランプチャネルdwCH1〜dwCH15、モータデータ登録情報をセットするモータチャネルmCH0〜mCH7、音データ登録情報をセットする音チャネルaCH0〜aCH15が用意されている。
即ち本実施の形態では、各種演出デバイスを用いた全体の演出データが第1のワークエリアにセットされ、その第1のワークエリアの演出データに基づき、第2のワークエリアで動作データがセットされることになる。
この場合、多様な演出設定のためには第1のワークエリアには、登録できる演出データ個数(シナリオ登録情報の個数)を比較的多くすることが好ましい。例えば演出データの登録チャネル数を多くしたい。そこでシナリオチャネルsCH0〜sCH63として64個のチャネルを用意する。
一方で、第2のワークエリアには、演出デバイスの動作を規定する動作データがセットされればよいため、動作データの登録可能数は、比較的少なくてもよい。特に、第2のワークエリアが、ランプ、モータ、音の個々の演出デバイスに対応して設けられているため、個々のデバイスについての登録可能数は、むやみに多くする必要はない。そこで第2のワークエリアとしては、ランプチャネルは16チャネル(dwCH1〜dwCH15)、モータチャネルは8チャネル(mCH0〜mCH7)、音チャネルは16チャネル(aCH0〜aCH15)としている。これらは、それぞれ対応する1つの演出デバイスについての動作データがセットされれば良いため、登録チャネル数は少なくても十分に多彩な演出動作に対応可能である。
このように、第1のワークエリアのチャネル数をN(例えばN=64),第2のワークエリアのチャネル数をM(例えばM=16、又はM=8)とすると、N>Mとなるように記憶領域を割り当てている。
これによって多彩な演出動作を可能としたまま、メモリが闇雲に消費されないようにしている。
【0178】
[4−6:LED駆動データ更新処理]
図8のステップS113のLED駆動データ更新処理を説明する。
この処理は、ランプデータ登録情報に登録されている点灯ナンバ(登録点灯ナンバ(lmpNew)、実行点灯ナンバ(lmpNo))に対応するランプデータテーブルを参照して、LED駆動データを作成する処理である。なお上述のように、ランプデータ登録情報の点灯ナンバには、元々はランプサブシナリオテーブルに記述された、点灯パターンを示すランプナンバがセットされる。ランプナンバは点灯パターンを示すナンバと述べたが、具体的には
図23Aで述べるランプデータテーブルのランプデータの番号を示すことになる。
【0179】
図20はLED駆動データ更新処理を示している。
演出制御CPU200はステップS701でそれまで出力データとしていたLED駆動データをクリアする。
そしてループ処理LP2として、ランプデータ登録情報のランプチャネルdwCH0〜dwCH15のそれぞれについて、ステップS702〜S720の処理が行われる。以下、処理対象のランプチャネルを「dwCHn」と表記して説明する。
【0180】
ステップS702では演出制御CPU200は、対象のランプチャネルdwCHnにおける実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致しているか否かを確認する。先の
図15BのステップS653のように点灯パターンナンバの登録が行われるため、実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)は最初は一致しない。一致していなければ点灯開始として、ステップS703で、実行点灯ナンバ(lmpNo)に登録点灯ナンバ(lmpNew)の値を代入する。またステップS704で、実行ライン(ofset)を0にセットし、また実行時間(time)を0にセットする。
なお実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致していれば、既に過去に以上のステップS703,S704の処理が行われたものであるため、これらの処理は不要である。
【0181】
或るランプチャネルdwCHに登録された情報については、登録後、このLED駆動データ更新処理の機会毎に、その情報が反映されて各LEDドライバ90に出力するLED駆動データが作成されていく。
図21Aは、
図16Bに示したワークのランプデータ登録情報において、ランプチャネルdwCH0、dwCH5、dwCH8に登録が行われている状態を示している。この図の状態は、
図21Bの時点t0の状態の一例である。
即ちランプチャネルdwCH0、dwCH5の情報については、時点t0より以前に、LED出力データに反映されている。ランプチャネルdwCH0については、既に実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致され、また実行ライン(ofset)は3(3ライン目)まで進んでいる。またランプチャネルdwCH5についても、既に実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致され、また実行ライン(ofset)は2(2ライン目)まで進んでいる。時点t0では、ランプチャネルdwCH8は登録直後であり、まだ実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致されていない。この後、上記ステップS703,S704の処理が行われることになる。
【0182】
なお前述したように本実施の形態では、ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。
図21Aに示すように、優先度の高いランプチャネルdwCH15はエラー報知用に使用される。ランプチャネルdwCH12,dwCH13,dwCH14等、優先度が高いランプチャネルは、連続予告や確定予告等、比較的信頼度の高い演出用などに用いられる。また優先度が中程度のランプチャネルは可動体演出用、優先度が比較的低いランプチャネルは、会話予告やステップアップ予告など比較的信頼度の低い演出用に用いられ、さらに優先度が低いランプチャネルは、通常変動、リーチ等に同期したランプ演出に用いられる。
このような優先度の設定のため、
図21Bのように複数のランプチャネルdwCHの動作が重なる場合、優先度の高いランプチャネルの点灯動作が実行される。例えば時点t0からは、ランプチャネルdwCH0、dwCH5に基づく点灯動作が制限され、dwCH8に基づく点灯が行われるようにLED出力データが生成される。優先度の低いランプチャネルの情報を反映させないようにするためには、後述するマスクデータが使用される。
【0183】
続いて
図20のステップS705では、演出制御CPU200は実行点灯ナンバ(lmpNo)の値が正常範囲であるか否かを確認する。正常範囲とは、
図23Aに示すランプデータテーブルのランプデータとして番号が存在する範囲である。
実行点灯ナンバ(lmpNo)が異常であれば、ステップS719に進む。なおランプチャネルdwCHnが登録されていない空きチャネルの場合も、ここでは異常としてステップS719に進む。
【0184】
実行点灯ナンバ(lmpNo)が正常であれば、ステップS706に進む。ステップS706では演出制御CPU200は、ランプチャネルdwCHnに登録された実行点灯ナンバ(lmpNo)、実行ライン(ofset)に対応する、ランプデータテーブルのアドレスを特定する。
またステップS707では、ランプチャネルdwCHnに登録された実行点灯ナンバ(lmpNo)、マスクデータテーブルのアドレスを特定する。
アドレスの特定のためには演出制御CPU200は、
図22のようなランプデータアドレステーブルを参照する。このランプデータアドレステーブルには、各点灯パターン、例えば全体点滅、右側点滅、左側点滅、役物点灯などを実現するためのランプデータ番号のアドレスが示されている。
図22の左端の数字は、
図19Aのランプサブシナリオテーブルで示されるランプナンバであり、例えばランプナンバ2のランプデータのアドレスの欄には、全体点滅の点灯パターンを行うためのランプデータ番号が記憶されたアドレスが記述されている。
また、マスクデータのアドレスの欄には、そのランプデータ番号の点灯パターンを実行する際に必要なマスクデータが記憶されたアドレスが記憶されている。例えば点灯ナンバ5の右側点滅の点灯パターンを行う際には、センターケースマスクが必要になるが、そのセンターケースマスクを行うためのマスクデータのアドレスが記述されている。
【0185】
図23Aにはランプデータテーブルの一部としてランプデータ1,2を示している。
各番号のランプデータにおける各ラインには、タイマ(frame)としての時間データと点灯データが記述されている。タイマ(frame)は各ラインの点灯データによるLED出力データの生成を行う時間を規定する。
点灯データは、各LEDドライバ90に対応して記述されている。先に
図4では、枠ドライバ部61にはn個、盤ドライバ部62にはm個のLEDドライバ90が存在するとしたが、以下では一例として、枠ドライバ部61には4個、盤ドライバ部62には5個の、合計9個のLEDドライバ90が存在すると仮定して説明する。
その場合、ランプデータの各ラインには、
図23Aに示すように、9個のLEDドライバ90のそれぞれに対応して点灯データが記述される。なお図では各LEDドライバ90との対応をLEDドライバ90のスレーブアドレスでw1〜w4、b1〜b5で示している。
点灯データとしては、
図4,
図5で説明した、LEDドライバ90の1つの出力端子96(1系列のLED駆動電流出力)に対して4ビット(0h〜Fh)が割り当てられ(「h」は16進表記を示す)、16階調の輝度を指定するようにされている。
図5で述べたように、LEDドライバ90には24個の出力端子96−1〜96−24がある。このため、1つの点灯データは、「FFFF000055550000AAAAAAAA(h)」のように、(4×24)ビットの情報となる。仮に図示のランプデータ1の1ライン目のように、LEDドライバ90(w1)についての点灯データが、「FFFF00000000000055550000(h)」であれば、LEDドライバ90(w1)の出力端子96−1〜96−4からは最大輝度「F」を発光させるための駆動電流を出力し、出力端子96−5〜96−16及び96−21〜96−24は非発光(最低輝度)、出力端子96−17〜96−20は輝度「5」としての駆動電流を出力することを指定する情報となる。
ランプデータにはこのような点灯データが、各LEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対して設定されて、かつそれらが各ライン毎に設定されることで、時系列的に変化する所定の発光パターンが示されることになる。(図では点灯データは一部のみに例示した。空欄部分は図示を省略したもので、実際には点灯データが記述される)
【0186】
図23Bにはマスクデータテーブルの例として、マスクデータ1〜5を示している。各マスクデータは、枠側の装飾ランプ20wの駆動についてのマスクのための、盤側の装飾ランプ20bの駆動についてのマスクのため、全体のマスクのため、センターケースのマスクのため、役物のマスクのためなどとして、必要なマスクパターンが記憶されている。
各マスクデータ1〜5は、それぞれ各LEDドライバ90(w1〜w4、b1〜b5)の各出力端子96−5〜96−24について、消灯を「0h」、マスク無しを「Fh」で示すデータとされている。
例えばマスクデータ1についてみると、枠ドライバ部61におけるLEDドライバ90(w1〜w4)については、「0000・・・・・00(h)」と、各出力端子96−5〜96−24について消灯が設定され、盤ドライバ部62のLEDドライバ90(b1〜b5)については、「FFFF・・・・・FF(h)」と、各出力端子96−5〜96−24についてマスク無しが設定されている。つまり枠側の装飾ランプ20wのみをマスクすることを指定するデータとなる。(なお、マスクデータ4,5はデータ値の図示を省略している)
【0187】
図20のステップS706,S707では、このようなランプデータテーブル、マスクデータテーブルにおいて、処理中のランプチャネルdwCHnに対応するアドレスを特定するものである。
続いてステップS708で演出制御CPU200は、ランプデータテーブルの該当ライン(現在対象のランプチャネルdwCHnの実行ライン(offset)で示されるライン)のタイマ(frame)を取得し、これを変数Dtimeに代入する。
【0188】
ステップS709で演出制御CPU200は、上記ステップS706,S707で特定した該当の点灯データとマスクデータを展開し、LED駆動データを生成していく。この処理については後述するが、現在処理中のランプチャネルdwCHnについての点灯データとマスクデータを、出力するLED駆動データに反映させる処理となる。
【0189】
ステップS710ではランプチャネルdwCHnの情報である実行時間(time)を+1する。
ステップS711では変数Dtimeと実行時間(time)を比較する。変数Dtimeには現在実行中のラインのタイマ(frame)が代入されている。実行時間(time)はLED駆動データ更新処理毎(16ms毎)に上記ステップS710で+1される。従ってDtime≦timeとなれば、現ラインの終了タイミングとなる。Dtime≦timeではなければ、まだ現在のラインの終了に至らないとしてステップS711からS719に進む。Dtime≦timeの場合は、現在のラインの終了としてステップS711からS712に進む。
演出制御CPU200はステップS712で実行時間(time)を0にリセットする。またステップS713で、実行ライン(offset)の値を+1する。つまり次のラインが対象となるようにする。
ステップS714では演出制御CPU200は、実行ライン(offset)に対応するランプデータテーブル該当ラインのアドレスを特定する。そしてステップS715,S717で、そのラインに終了コード(D_DTEND)が記述されているか、ループコード(LMP_LP)が記述されているかを確認する。
終了コード(D_DTEND)が記述されていた場合は、ステップS716で、当該ランプチャネルdwCHnの登録点灯ナンバを0に更新する。つまりワーク上で、当該ランプチャネルdwCHの登録に応じた処理が完了したことを示すようにする。
ループコード(LMP_LP)が記述されていた場合はステップS718で、実行ライン(offset)の値をループ先のアドレスに更新する。
【0190】
ステップS719では演出制御CPU200は、ランプチャネルdwCHnの時点のLED駆動データのチェックサムを算出する。またステップS720でバックアップ用データを保存する。
以上で、1つのランプチャネルdwCHnを対象としたLEDデータ更新を終える。ループ処理LP2として、以上の処理をランプチャネルdwCH0〜dwCH15まで順次行うことになる。
【0191】
各ランプチャネルdwCHnでのLED出力データの更新は、ステップS709で行われるが、これは次のような処理となる。
点灯データとマスクデータを展開してLED駆動データを生成する出力データバッファは、ランプデータテーブル及びマスクデータテーブルと同様に、各LEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対応して用意される。例えば1つのLEDドライバ90に対応する(4×24)ビットの情報の領域が、例えば9個のLEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対して設けられる。この場合、出力データバッファは9×(4×24)ビットのバッファ領域とされる。
【0192】
このような出力データバッファに対して、ステップS709では、マスクデータをアンド(論理積)で展開し、点灯データをオア(論理和)で展開する処理が行われる。これがループ処理(LP2)により、各ランプチャネルdwCH0〜dwCH15について順次ステップS709で行われる。
例えば
図21で示した時点t0の場合、出力データバッファは、ランプデータ2のマスクデータ(
図22参照:マスクなし)がアンド展開され、ランプデータ2の3ライン目の点灯データがオア展開された状態の後、ランプデータ5のマスクデータ(
図22参照:センターケースマスク)がアンド展開され、ランプデータ5の2ライン目の点灯データがオア展開された状態となっている。
上述の通りマスクデータは0h(=0000)が消灯、Fh(=1111)がマスクなしである。従ってマスクデータをアンドで展開するということは、その時点までの出力データバッファの値について、消灯(マスク)したいビットを「0」とし、マスクしないビットは変更しないということになる。
さらに点灯データをオアで展開するということは、処理中のランプチャネルdwCHの点灯データが、マスク後の出力データバッファに反映させるということになる。
この処理をランプチャネルdwCH0〜dwCH15について順次行うことで、高い番号のランプチャネルほど優先されたLED駆動データが出力データバッファ上に形成されることになる。
【0193】
以上のようなLEDデータ更新処理で生成されたLED駆動データは、先の
図9で説明した1msタイマ割込処理のステップS205(但し上述のケース12〜15の場合)で、実際に各LEDドライバ90に出力され、これによってシナリオデータに応じたランプ演出動作が実現される。
【0194】
[4−7:音の登録処理]
続いて、
図15のステップS635として実行する音の登録処理について説明する。
この音の登録処理は、
図19Bに例示した音/モータサブシナリオテーブルの記述内容(サブシナリオデータ)に応じた情報を、
図17の音データ登録情報の音チャネルaCHに登録する処理となる。
【0195】
図24は、音の登録処理を示している。
まず、演出制御CPU200はステップS800で、音/モータサブシナリオテーブルに音データが存在するか否かを判別する。即ち、音/モータサブシナリオテーブルの当該サブシナリオ番号の該当ラインの記述情報として、BGM/SE1/SE2/エラー音/音コントロールの何れかの情報が存在するか否かを判別する。
これらの音データが存在しない場合は処理を終える。
【0196】
一方、これら音データの何れかが存在する場合、演出制御CPU200は、ステップS801でBGMか否かを判別する。音データがBGMであった場合、演出制御CPU200はステップS806で音/モータサブシナリオテーブルの音データを音チャネルaCH0にセットする。即ち、音/モータサブシナリオテーブルの当該サブシナリオ番号の該当ラインに記述されたBGMの情報を、音データ登録情報における、当該BGMに対応づけられた音チャネルaCHとしての音チャネルaCH0に登録する。
先に説明したように、音データがBGM、SE1、SE2、エラー音の場合、その記述内容(つまりシナリオデータ)としては少なくとも再生すべきフレーズのフレーズ番号とその1次ボリュームの情報とが含まれ、従ってこれらの情報が音データ登録情報に登録される。
なお、BGMについてはステレオ再生が可能とされ、その場合は音/モータサブシナリオテーブルのBGMの情報でその指示が為される。前述もしたがBGMがステレオ再生される場合、音チャネルaCH0のみでなく音チャネルaCH1も使用される。この場合、これら音チャネルaCH0、aCH1の双方には、フレーズ番号(frzHi、frzLo)としてBGMの情報に記述された共通のフレーズ番号が登録されると共に、ステレオ(frzSt)の情報として「1」が記述される。
【0197】
ステップS806でBGMの音データをセットした場合、或いはステップS801で音データがBGMでないとされた場合、演出制御CPU200はステップS802で音データがエラー音か否かを判別し、エラー音であった場合はステップS807で音/モータサブシナリオテーブルの音データを音チャネルaCH15にセットする。即ち、エラー音に対応する音チャネルaCHとしての音チャネルaCH15にサブシナリオデータの記述内容に応じた情報を登録する。
【0198】
ステップS807でエラー音の音データをセットした場合、或いはステップS802で音データがエラー音でないとされた場合、演出制御CPU200はステップS803で音データがSE1か否かを判別し、SE1であった場合はステップS808でSE1の設定処理を行う。
そして、ステップS808でSE1の設定処理を実行した場合、或いはステップS803で音データがSE1でないとされた場合、演出制御CPU200はステップS804で音データがSE2か否かを判別し、SE2であった場合はステップS809でSE2の設定処理を行う。
さらに、ステップS809でSE2の設定処理を実行した場合、或いはステップS804で音データがSE2でないとされた場合、演出制御CPU200はステップS805で音データが音コントロールか否かを判別し、音コントロールであった場合はステップS810で音コントロールの設定処理を行う。
ステップS810で音コントロールの設定処理を実行した場合、或いはステップS805で音データが音コントロールでないとされた場合、演出制御CPU200は
図24に示す処理を終える。
【0199】
以下、上記のステップS808、S809、S810でそれぞれ実行するSE1の設定処理、SE2の設定処理、音コントロールの設定処理の内容を個別に説明する。
【0200】
まず
図25により、ステップS808、S809でそれぞれ実行するSE1の設定処理、SE2の設定処理の内容について説明する。
なお、これらSE1の設定処理、SE2の設定処理の内容は、音データの登録対象とする音チャネルaCH(対応音チャネルaCH)が異なる以外は共通であるため、当該
図25の一図での説明とする。
【0201】
まず演出制御CPU200はステップS901で、対応音チャネルaCHの再生状態を取得する。前述のように本実施の形態では音の種別ごとに登録を行うべき音チャネルaCHの対応が定められており、SE1の場合は音チャネルaCH2〜aCH9が、またSE2の場合は音チャネルaCH10〜aCH14がそれぞれ対応音チャネルaCHとなる。
従って、ステップS901の処理は、SE1の設定処理(S808)として実行される場合は音チャネルaCH2〜aCH9の再生状態を取得する処理となり、SE2の設定処理(S809)として実行される場合は音チャネルaCH10〜aCH14の再生状態を取得する処理となる。
各音チャネルaCHの再生状態の取得、即ちフレーズを再生中であるか否かの情報の取得は、音源IC59に音チャネルaCHごとに設けられた再生状態情報格納レジスタの値を取得することで行う。
【0202】
次に、ステップS902では演出制御CPU200は、設定音チャネルaCHをスタート音チャネルaCHに設定する。ここで、設定音チャネルaCHとは、音データ登録の対象とする音チャネルaCHを意味する。また、スタート音チャネルaCHとは、対応音チャネルaCHのうち最もチャネル番号の小さい音チャネルaCHを意味し、SE1の場合はaCH2、SE2の場合はaCH10が該当する。
以下のステップS903〜S911の処理により、スタート音チャネルaCHから順に空きチャネルを探索してSEの音データの登録を行うべく、ステップS902で設定音チャネルaCHをスタート音チャネルaCHに設定する。
【0203】
ステップS903では演出制御CPU200は、設定音チャネルaCHは再生中であるか否かを判別する。設定音チャネルaCHが再生中であれば、ステップS908で設定音チャネルaCHを+1するとともに、ステップS909で設定音チャネルaCHがエンドチャネルより大であるか否かを判別する。エンドチャネルとは、対応音チャネルaCHのうちチャネル番号が最も大きい音チャネルaCHを意味し、従ってSE1の場合は音チャネルaCH9より大であるか否か、SE2の場合は音チャネルaCH14より大であるか否かをそれぞれ判別することになる。
設定音チャネルaCHがエンドチャネルより大である場合は、対応音チャネルaCHに空きがないことから処理を終了する。
一方、設定音チャネルaCHがエンドチャネルより大でない場合はステップS903に戻る(つまり次の音チャネルaCHについて再生中か否かの判別が行われる)。
【0204】
ステップS903で設定音チャネルaCHは再生中でないとされた場合、演出制御CPU200はステップS904に進み、設定音チャネルaCHのワークに音データがないか否かを判別する。
設定音チャネルaCHに音データがある、つまり設定音チャネルaCHは空きではないとされた場合、演出制御CPU200はステップS908に進む。つまりこれにより、対応音チャネルaCH内における次の空きチャネルを探索するようにされる。
【0205】
一方、設定音チャネルaCHに音データがない、つまり設定音チャネルaCHが空きであるとされた場合、演出制御CPU200はステップS905に進み、ステレオ要求があるか否かを判別する。即ち、テーブルのSEの情報中におけるステレオ再生か否かを表す情報を参照して、当該SEの情報が、ステレオ再生の要求を伴うものであるか否かを判別する。なお、前述のようにステレオ再生を要求するシナリオデータには、LchとRchの個別のフレーズ番号は記述されず、共通の1つのフレーズ番号が記述されている。
ステレオ要求がない場合、演出制御CPU200はステップS910に進み、テーブルの音データを設定音チャネルaCHに対応したワークの領域にセットして処理を終了する。
【0206】
一方、ステレオ要求があった場合、演出制御CPU200はステップS906に進み、設定音チャネルaCHが偶数チャネルであるか否かを判別する。設定音チャネルaCHが偶数チャネルでなければ、演出制御CPU200はステップS908に進み、設定音チャネルaCHを+1する。即ち、次の音チャネルaCH以降で空きチャネルを探索する。
ここで、前述のように本例では、ステレオ再生は偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とを使用して行うものとされるので、ステレオ再生を要求するシナリオデータに応じては、該シナリオデータに記述されたフレーズ番号等の音データを偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とにセットすべきものとなる。このため、設定音チャネルaCHが偶数チャネルでなければ、上記のように次の音チャネルaCH以降で空きチャネルを探索する。
【0207】
一方、設定音チャネルaCHが偶数チャネルであれば、演出制御CPU200はステップS907に進み、設定音チャネルaCHの次の音チャネルaCHも空きチャネルであるか否か(再生中でないかも含めて空きチャネルであるか否か)を判別する。
設定音チャネルaCHの次の音チャネルaCHが空きチャネルでなければ、ステップS908に進む。つまり、対応音チャネルaCH内での次の空きチャネルを探索する。
一方、設定音チャネルaCHの次の音チャネルaCHが空きチャネルであれば、ステップS911に進んで、テーブルの音データを設定音チャネルaCHとその次の音チャネルaCHに対応したワークの領域にそれぞれセットし、処理を終了する。
【0208】
以上のSEの設定処理によって、サブシナリオテーブルに記述されたSE1又はSE2の音データが音データ登録情報における対応音チャネルaCHのうちの空きチャネルに登録される。
また、当該SE1又はSE2の情報がフレーズのステレオ再生を要求するものであった場合は、音源IC59がステレオ再生に偶数チャネルとその次の奇数チャネルとを使用することを要求する場合に対応して、対応音チャネルaCH内における偶数チャネルとその次の奇数チャネルとに適正に音データを登録できる。つまりこれにより、音源IC59の仕様に応じた適切な情報登録を行うことができる。
【0209】
続いて、
図24のステップS810として実行する音コントロールの設定処理について
図26〜
図28を参照して説明する。
図26は、ステップS810の音コントロールの設定処理を示している。
まず、演出制御CPU200はステップS1001で、音コントロールの情報の上位1バイトの値を確認する。
【0210】
図27は、音コントロールの情報のデータ構造例を示している。
本実施の形態の場合、音コントロールの情報は4バイトで構成され、その上位1バイトに音のコントロール内容を表すための情報(コントロール種別の情報)が記述され、下位3バイトに音のコントロール対象とする音チャネルaCHを指定するための情報(コントロール対象の情報)が記述される。
この上位1バイトのコントロール種別の情報によっては、フェードイン再生やフェードアウト再生、及び2次ボリュームの変化指示が可能とされる。
【0211】
図のように上位1バイトで表されるコントロール種別の情報としては、0x20〜0x70までがフェード系の情報とされ、0x80以上が2次ボリュームの変化指示の情報とされる。
具体的に、0x20〜0x70までのフェード系の情報としては、0x25(SFO1M)が「フェードアウトゆっくり 消音」、0x35(SFO2M)が「フェードアウト普通 消音」、0x45(SFO3M)が「フェードアウトはやく 消音」、0x20(SFO1)が「フェードアウトゆっくり 音小」、0x30(SFO2)が「フェードアウト普通 音小」、0x40(SFO3)が「フェードアウトはやく 音小」、0x50(SFI1)が「フェードインゆっくり」、0x60(SFI2)が「フェードイン普通」、0x70(SFI3)が「フェードインはやく」を表す。
ここで、「ゆっくり」「普通」「はやく」は、フェード制御におけるボリュームの遷移速度(speed)を意味する。またフェードアウトについての「消音」と「音小」の違いは、遷移後のボリュームが「0」か否かである。
【0212】
また、0x80以上の2次ボリュームの変化指示の情報としては、0x80(SVO8)、0x81(SVO0)、0x82(SVO2)、0x83(SVO4)がそれぞれ2次ボリューム=0x80(MAX)、0x00(0)、0x20、0x40を表す。そして、0x90(SVO8E)はエラー以外の全ての音チャネルaCH(aCH0〜aCH14)の2次ボリューム=0x80を表し、0x91(SVO0E)はエラー以外の全ての音チャネルaCHの2次ボリューム=0x00を表す。
【0213】
また、音コントロールの情報の下位3バイトは、0x110000(BG_T)が音チャネルaCH0(BGM)、0x220000(YK1_T)が音チャネルaCH2〜aCH9(SE1)、0x330000(YK2_T)が音チャネルaCH10〜aCH14(SE2)、0x440000(YKA_T)が音チャネルaCH2〜aCH14(SE1+SE2=全SE)、0x00−−−−(その他)が「−−−−」が示すフレーズを再生している音チャネルaCHを表す。
【0214】
図26のステップS1001では、演出制御CPU200は、上記のデータ構造とされる音コントロールの情報の上位1バイトの値の確認処理として、上位1バイトの値が80h(0x80)未満、80h以上90h未満、90h以上の何れであるかを確認する。これは、コントロール種別がフェード系、単純な2次ボリューム変化指示、エラー以外の全音チャネルaCHの指定を伴う2次ボリューム変化指示の何れかであるかを確認していることに相当する。
【0215】
80h以上90h未満の場合、演出制御CPU200はステップS1002で、音/モータサブシナリオテーブル(音コントロールの情報)の下位3バイトが示す音チャネルaCHの2次ボリュームを上位1バイトが示すボリューム値にセットして処理を終了する。
また、90h以上である場合、演出制御CPU200はステップS1003で音チャネルaCH0〜aCH14の2次ボリュームを上位1バイトが示すボリューム値にセットして処理を終了する。
【0216】
一方、上位1バイトが80h未満であった場合、演出制御CPU200はステップS1004で上位1バイトの値に応じたコントロールデータに変換する処理を行った上で、ステップS1005で音/モータサブシナリオテーブル(音コントロールの情報)の下位3バイトが示す音チャネルaCHに対応するワーク領域に変換後のコントロールデータをセットし、処理を終了する。
【0217】
ここで、上位1バイトが80h未満のフェード系のコントロール情報は、「フェードアウトゆっくり 消音」や「フェードインはやく」など、そのコントロール種別の違いのみを識別するための情報とされている。そこで、これらの上位1バイトのコントロール種別の情報を上記のステップS1004で音源IC59が対応動作を実行可能な情報に変換する。
【0218】
図28Aは、
図26のステップS1004の変換処理の内容を示している。
まず、演出制御CPU200はステップS1101で、変換テーブルから上位1バイトの値に対応する2バイトの値を取得する。そして、ステップS1102で、下位3バイトの値に基づき2バイトの値を取得する。
その上で、ステップS1103では、これらステップS1101とS1102とで取得した2バイトの値を連結する。
【0219】
図28Bは、上記のステップS1101、S1102の取得処理についての説明図である。
まず、ステップS1101の取得処理では、図のようにフェード系の上位2バイトの値(0x25〜0x70)ごとにその対応値(2バイト)を格納した変換テーブルを用いる。演出制御CPU200は該変換テーブルを参照して、上位1バイトの値に対応する2バイトの値を取得する。
そして、ステップS1102の取得処理では、音コントロールの下位3バイトの値に基づいて、コントロール対象がSE1、SE2以外(つまりaCH2〜aCH14以外:予告音以外)の場合と、SE1、SE2の場合とで、それぞれ図のような2バイトの値を取得する。すなわち、SE1、SE2以外の場合は0xD000、SE1、SE2の場合は0xC000である。
なお、後述もするが、このようにコントロール対象がSE1、SE2の何れかとされる場合とそうでない場合とで取得値を異ならせているのは、SE1とSE2のみフェード制御がモノラル指定とされているからである。
このように得られた各2バイトの値をステップS1103で連結して、4バイトのコントロールデータを得る。
【0220】
図28Cは、音コントロールのフェード系の情報と、その情報内容(値)に応じて
図28Aの変換処理で得られるコントロールデータとの対応関係を例示している。
ここで、本実施の形態では、
図28Aの変換処理で得られる計4バイトのコントロールデータを、そのまま音データ登録情報に設定(登録)する。この意味で図中では、
図28Aの変換処理で得られるコントロールデータのことを「音データ登録情報に設定するデータ」と示している。
この
図28Cによると、フェード系の音コントロールの情報として例えば上位1バイト=SFO1M(フェードアウトゆっくり 消音)、下位3バイト=BG_Tとされた情報については、上記の変換処理によって「0x2000D000」というコントロールデータに変換されることが分かる。また、例えば上位1バイト=SFO3M(フェードアウトはやく 消音)、下位3バイト=YK1_Tとされた音コントロールの情報については、「0xFF00C000」というコントロールデータに変換されている。
【0221】
図17を参照すると、音データ登録情報では、1バイト目が「1次ボリューム遷移量」、2バイト目が「1次ボリューム」、3バイト目が「遷移量変化」「ボリューム変化」「フレーズ変化」「ステレオ」「ループ」(ここまで各1ビット)及び「フレーズ番号hi」(3ビット)、4バイト目が「フレーズ番号low」とされている。
前述のように本実施の形態では変換後のコントロールデータをそのまま音データ登録情報にセットするので、例えば上記のSFO1M+BG_Tの音コントロール情報のコントロールデータ(0x2000D000)によると、音データ登録情報の登録内容は、
「1次ボリューム遷移量」=「0x20」
「1次ボリューム」=「0x00」
「遷移量変化」=「1」
「ボリューム変化」=「1」
「フレーズ変化」=「0」
「ステレオ」=「1」
「ループ」=「0」
「フレーズ番号hi」=「000」
「フレーズ番号low」=「0x00」
となる。
また、例えば上記のSFO3M+YK1_Tの音コントロール情報のコントロールデータ(0xFF00C000)によると、音データ登録情報の登録内容は、
「1次ボリューム遷移量」=「0xFF」
「1次ボリューム」=「0x00」
「遷移量変化」=「1」
「ボリューム変化」=「1」
「フレーズ変化」=「0」
「ステレオ」=「0」
「ループ」=「0」
「フレーズ番号hi」=「000」
「フレーズ番号low」=「0x00」
となる。
【0222】
なお、前者の例のようにコントロール対象がSE1,SE2以外の場合には、「ステレオ」に「1」(ステレオ)がセットされ、後者の例のようにコントロール対象がSE1(SE2も同様)の場合には、「ステレオ」に「0」(モノラル)がセットされることになる。この点からも理解されるように、前述したSEのフェード制御についてのモノラル指定が実現される。
【0223】
上記のように本実施の形態では、フェード系の音コントロールの情報について、そのコントロール種別の情報として単純にフェード制御の違いのみを表す情報を記述しておき、これを上記の変換処理により変換して音データ登録情報に登録可能なデータ(つまりは音源IC59がそのフェード制御の実行に要するデータ)に変換するものとしている。
ここで、「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御は、時間経過と共にボリュームを徐々に変化させるようなサブシナリオデータを用意しておくことで実現することも考えられるが、その場合は時間ごとのサブシナリオデータを保持させておくことになり、その分メモリ容量を要することになる。これに対し上記のような変換処理を行う本実施の形態によれば、サブシナリオデータとしては単に「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御の違いのみを表す情報を記述すればよく、一種のフェード制御に要するサブシナリオデータの数を1つに削減でき、結果、サブシナリオデータを保持するためのメモリ容量を削減できる。
【0224】
また、上記のような変換処理を行うものとすれば、仮に音源IC59の仕様が変更されたとしても、
図28Bに示した変換テーブルの内容を変更するのみで対応可能であり、サブシナリオデータの書き替えやプログラムの書き換えは行わずに済む。従って、音源IC59の仕様変更に柔軟に対応できると共に、音源IC59の仕様変更に対応するための作業負担も軽減できる。
また、フェードイン/アウトとして具体的なボリューム遷移量などを変更するとしたときにも、
図28Bに示した変換テーブルの内容を変更するだけでよく、同様にサブシナリオデータの書き替えやプログラムの書き換えは行わずに済み、変更に係る作業負担を軽減できる。
【0225】
ここで、
図29により、フェード系の音コントロールの情報の使用例について説明しておく。
この
図29の例では、音/モータサブシナリオテーブルにおける音/モータサブシナリオ番号001のサブシナリオデータとして、時間(time)=0でBGMを「フェードアウトはやく 音小」(SFO3+BG_T)の態様でフェードさせ、時間=0〜2000でSE1のフレーズ0001をボリューム0x80で再生させ、時間=2000〜5000でSE1のフレーズ0002をボリューム0x80でステレオ再生させ、時間=5000でBGMを「フェードインゆっくり」(SFI1+BG_T)の態様でフェードさせる情報が記述された場合を例示している。
なお図中にも記しているが、フレーズの終了タイミングはそのフレーズとしての音データが終了する時点となる。
【0226】
図14、
図15及び
図24〜
図28で説明したシナリオ更新処理、サブシナリオ更新処理、音データ登録処理が実行されることで、先ずは時間=0のラインに記述された音コントロールの情報(SFO3+BG_T)に応じたコントロールデータ、及び時間=0のラインに記述されたSE1の情報(0x00806001)が音データ登録情報にセットされる。なお確認のため述べておくと、
図14、
図15、及び
図24に示した処理によれば、これら同じ時間=0のラインに記述されたデータは、音データ登録情報に対して一度にセットされる(
図15の「音の登録処理(S635)」で一度にセットされる)。
図8のメイン処理における音再生処理(S111)によって、このように音データ登録情報にセットされた情報が順次音源IC59に出力されて、サブシナリオデータに応じた音出力が実現される。これにより、図中の下段に示すようなBGMのフェードアウトとフレーズ0001の再生が実現される。
【0227】
また、時間=2000となることに応じて、音データ登録情報に当該時間=2000のラインに記述されたSE2の情報(0x00807002)が登録され、この登録情報がステップS111の音再生処理で音源IC59に順次出力されることで、図中の下段に示すような時間=2000からのフレーズ0002の再生が開始される。
さらに、時間5000となることに応じて、音データ登録情報に当該時間=5000のラインに記述された音コントロールの情報(SFI1+BG_T)に応じたコントロールデータが登録され、この登録情報がステップS111の音再生処理で音源IC59に順次出力されることで、図中に示すような時間=5000におけるBGMのフェードインが実現される。
【0228】
ここで、音コントロールの情報によっては、
図27を参照して説明したように、指定の音チャネルCHaで再生されるフレーズの2次ボリュームの変化指示も行うことができる。
図30を参照して、2次ボリュームの変化指示によるボリューム制御例を説明する。
図30は、2次ボリュームにより所定種別の音を消音させる制御例についての説明図であり、具体的には、BGMの再生中にSE1のフレーズ0010を再生するシナリオが登録された場合に、2次ボリュームによりBGMを消音させる例を示している。
この例の場合には、サブシナリオテーブルの時間=0のラインが2つ存在しており、一方の時間=0のラインには音コントロールの情報として「SVO0+BG_T」(
図27を参照)が記述され、他方の時間=0のラインにはSE1の情報として「0x0080700A」(フレーズ0010を1次ボリューム0x80でステレオ再生)が記述されている。
なお、このように時間(time)を同じとするラインが2つ存在する場合は、先の
図14、
図15、及び
図24に示した処理によりそれらのラインの記述情報が順次音データ登録情報に登録されることになる。これらの登録情報に応じ、時間=0に対応して図のようなBGMの2次ボリュームによる消音と、SE1としてのフレーズ0010の再生とが開始される。
また、この図の例では時間=5000のラインに音コントロールの情報として「SVO8+BG_T」(2次ボリューム=0x80)が記述され、これにより、図のように時間=5000以降はBGMの消音状態が解除される。
【0229】
このように音コントロールの情報で指定音チャネルaCHの2次ボリュームを変化させることを可能とした本実施の形態によれば、或る種別の音を再生中であったときに後からプライオリティの高い別の音を再生すべきとされた場合において、該再生中の音を再生停止させる指示を行うことなく、簡易に高プライオリティの音のみが再生出力される状態を得ることができる。従って、音のプライオリティ制御を簡易に実現できる。
【0230】
ここで、上記ではBGMと他の音についてのプライオリティ制御について例示したが、本実施の形態では、SEとしての音をSE1とSE2とに分類している、即ち、SE1とSE2とを別々の音の種別として扱うものとしているので、これらSE1とSE2についても、同様に音コントロールの情報による2次ボリュームの制御によって音のプライオリティ制御を実現できる。
前述のように、これらSE1とSE2の分類は、その演出の出現頻度の別としている。従って、出現頻度の高い(つまり信頼度の低い)SE1の音を再生中に、後から出現頻度のより低い(信頼度のより高い)SE2の音を再生すべきとされた場合において、
図30の例と同様に音コントロールの情報による2次ボリュームの制御を行うことで、再生中のSE1を消音させて、SE2の方が優先的に出力されるようにすることができる。
【0231】
また、そもそも1次ボリュームのみでなく2次ボリュームによる音量制御を可能としたことで、
図30のような消音制御が適正に実現されるものとなる。
ここで、1次ボリュームのみを用いて、
図30のようなBGMの消音制御を実現しようとした場合には、音コントロールの情報により、例えば遷移速度を最速としたフェードアウトを行うことにより、再生中のBGMを消音させることが考えられる。
しかしながら、先に説明した通り、1次ボリュームは、フレーズの再生開始時にフレーズ番号と共に音源IC59にセットされるボリューム値となる。このため、上記のように音コントロールの情報を用いた1次ボリュームによる消音を行ったとしても、仮にその後、
図30中の「X」のようなタイミング(BGMを元音量に戻すべき時点よりも前のタイミング)で他のシナリオにより新たにBGMの再生開始が指示された場合には、該「X」の時点でBGMのボリュームは0x00以外の所要の音量とされてしまい、BGMが放音されてしまう。
これに対し、2次ボリュームによる音量制御も可能とした本実施の形態によれば、
図30で説明した通り、一度音コントロールの情報によりBGMの2次ボリュームを0x00に制御しておけば、該2次ボリュームを復帰させる音コントロールが行われるまでの間に新たなBGMの再生が開始されて1次ボリュームが0x00以外の音量に設定されても、出力音量としては0x00が維持されるようにできる。これにより、
図30に示したような音量制御を適正に実現することができる。
【0232】
[4−8:音再生処理]
続いて、
図8のステップS111として実行する音再生処理について説明する。
前述のように音再生処理は、音データ登録情報としてワークにセットされた情報に基づき音源IC59に音出力を実行させる処理となる。
【0233】
図31は、音再生処理についての説明図である。
まず、演出制御CPU200は、ループ処理LP3として、音データ登録情報の音チャネルaCH0〜aCH15のそれぞれについてステップS1200〜S1220の処理を行う。以下、処理対象とする音チャネルaCHを「aCHn」と表記して説明する。
【0234】
ステップS1200では演出制御CPU200は、ボリュームMAXエラーフラグを確認する。なお、ボリュームMAXエラーフラグは、先のステップS106のエラー処理(
図8参照)で設定されるフラグであり、前述のように0x5AがボリュームMAXエラーが発生中である旨を、また0x00が発生中ではない旨をそれぞれ表す。
ボリュームMAXエラーフラグが0x5Aであれば、ステップS1221に進みワークの2次ボリュームについて音チャネルaCH0〜14(エラー音以外)=0x00、音チャネルaCH15(エラー音)=0x80に書き換えを行い、ステップS1201に進む。
一方、ボリュームMAXエラーフラグが0x00であれば、ステップS1221によるワークの2次ボリュームの書き換えは行わずにステップS1201に進む。
【0235】
ステップS1201では演出制御CPU200は、対象の音チャネルaCHnに2次ボリュームの値を出力する。即ち、音データ登録情報の音チャネルaCHにセットされている2次ボリュームの値を、音源IC59における音チャネルaCHn用の2次ボリュームレジスタに出力する。
前述のように2次ボリュームの値は、通常はボリュームスイッチの状態に応じた値が音データ登録情報の全音チャネルaCHにセットされる。或いは、シナリオとして、或る音チャネルaCHの2次ボリュームの変化を指示する音コントロールの情報が記述されていた場合には、該音コントロールの情報に記述された2次ボリュームの値が、音データ登録情報における該音コントロールの情報で指示された音チャネルaCHにセットされている。また、ボリュームMAXエラーが発生中であれば、上記のステップS1221の処理によって音チャネルaCH0〜14には「0」が、音チャネルaCH15にはMAX値がセットされている。
【0236】
次いで、演出制御CPU200はステップS1202では、SUBボリューム0,1に値「0x00」を出力する。即ち、音チャネルaCHnの「SUBボリューム0」「SUBボリューム1」の各レジスタに値「0x00」を出力する。前述のように本実施の形態ではSUBボリュームは使用しないものである。
【0237】
ステップS1203では演出制御CPU200は、ワークの音チャネルaCHnに音データ(2次ボリューム以外の音データ)があるか否かを判別する。音データがなければ当該音チャネルaCHnについての処理は終了となる。
【0238】
一方、音データがあった場合は、ステップS1204に進んで差し替え要求であるか否かを判別する。
ここで、本実施の形態では、
図17に示した音データ登録情報の上位2バイト(「1次ボリューム遷移量」「1次ボリューム」)の値を用いて、フレーズの差し替え要求が可能とされている。具体的には、音データ登録情報の上位2バイトが所定値(例えば本例では「0x5A5A」であるとする)であれば、それをフレーズの差し替え要求と解釈するものである。
ステップS1204では、音チャネルaCHnにセットされたデータの上位2バイトが所定値「0x5A5A」であるか否かを判別することで、フレーズの差し替え要求であるか否かを判別する。
【0239】
差し替え要求である場合、演出制御CPU200はステップS1205でフレーズ番号の書き換えを行い、ステップS1206に進む。フレーズ番号の書き換えは、音チャネルaCHnにセットされたデータの「フレーズ番号hi」及び「フレーズ番号low」の値を音源IC59の音チャネルaCHnのフレーズ番号のレジスタに出力することで行う。
一方、差し替え要求でなければ、ステップS1205を経由せずステップS1206に進む。
【0240】
ステップS1206では演出制御CPU200は、遷移量変化要求又はボリューム変化要求があるか否かを判別する。即ち、音チャネルaCHnの遷移量変化frzVq又はボリューム変化rsv1の何れかに「1」がセットされているか否かを判別する。
ここで、音データ登録情報における遷移量変化frzVqの値は、フェード系の音コントロールの情報に基づいて音の登録処理(S635)が実行された場合には「1」がセットされ、フェード系以外(つまり2次ボリュームの変化指示)の音コントロールの情報やBGM、SE1、SE2、エラー音の情報に基づいて音の登録処理が実行された場合には「0」がセットされていることになる。
一方、ボリューム変化rsv1(1次ボリュームを変化させるか否か)は、フェード系の音コントロールの情報に基づいて音の登録処理が実行された場合と共に、BGM、SE1、SE2、エラー音の情報やフェード系の音コントロールの情報に基づいて音の登録処理が実行された場合に「1」がセットされる。そして、フェード系以外の音コントロールの情報に基づいて音の登録処理が実行された場合には「0」がセットされる。
これらの点からも理解されるように、フェード系の音コントロールの情報に基づく音データが登録されている場合のみでなく、BGM、SE1、SE2、エラー音の情報に基づく音データが登録されている場合にも、以降のステップS1209又はS1211により1次ボリューム遷移量と1次ボリュームの情報が音源IC59に対して出力されることになる。
【0241】
遷移量変化要求又はボリューム変化要求がある場合、演出制御CPU200はステップS1207に進み、音チャネルaCHnがステレオ再生であるか否か、つまりはステレオfrzStの値が「1」であるか否かを判別する。
音チャネルaCHnがステレオ再生でなければ、ステップS1209に進んで音源IC59の音チャネルaCHnに1次ボリューム遷移量と1次ボリュームを出力し、さらにステップS1210で音源IC59の音チャネルaCHnにパンポットの出力を行って、ステップS1213に進む。
ここで、パンポットの出力としては、音源IC59における音チャネルaCHn用の「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」の各レジスタにそれぞれ値を出力する。なお、本例では音源IC59のパン機能は使用しないものとされ、従ってステップS1210では全て「0」(0x00)を出力する。
【0242】
一方、音チャネルaCHnがステレオ再生であれば、ステップS1208に進んで音チャネルaCHnが偶数であるか否かを判別する。
音チャネルaCHnが偶数であれば、ステップS1211に進んで音チャネルaCHnと音チャネルaCHn+1とに1次ボリューム遷移量と1次ボリュームを出力し、ステップS1212で音チャネルaCHnと音チャネルaCHn+1とにパンポットの出力を行って、ステップS1213に進む。
【0243】
ここで、本実施の形態の場合、偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1の「左右パンポット」のレジスタをステレオ再生指示に用いる。具体的に、この場合の音源IC59は、偶数の音チャネルaCHn(ステレオ再生のLch側に該当)とその次の奇数の音チャネルaCHn+1(ステレオ再生のRch側に該当)の「左右パンポット」のレジスタにそれぞれ所定値がセットされることで、これら音チャネルaCHnと音チャネルaCHn+1とがステレオ再生であることを認識するように構成されている。より具体的に、この場合の音源IC59は、偶数の音チャネルaCHnの「左右パンポット」のレジスタに「0x81」がセットされ、且つその次の奇数の音チャネルaCHn+1の「左右パンポット」のレジスタに「0x82」がセットされることで、これら音チャネルaCHnと音チャネルaCHn+1とがステレオ再生である旨を認識するように構成されている。
このことに応じ、ステップS1212では、音チャネルaCHnと音チャネルaCHn+1とに対するパンポットの出力処理として、音チャネルaCHnの「左右パンポット」のレジスタには「0x81」を、音チャネルaCHn+1の「左右パンポット」のレジスタには「0x82」をそれぞれ出力する。
なお、前述のように本実施の形態では音源IC59のパン機能は使用しないので、ステップS1212では「左右パンポット」以外の「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」の各レジスタにはそれぞれ「0x00」を出力する。
【0244】
また、ステップS1208において、音チャネルaCHnが偶数でなかった場合は、ステップS1220に進み、ワークの音チャネルaCHnの音データをクリアし、当該音チャネルaCHnについての処理を終了する。
即ち、音チャネルaCHnがステレオ再生で且つ奇数であった場合には、当該音チャネルaCHnに登録されたフレーズ番号は音源IC59に出力されず(なお、1次ボリューム遷移量及び1次ボリュームについては偶数aCHnについての処理であるS1211で既に出力されている)、当該音チャネルaCHnの登録音データがクリアされることとなる。この場合の音源IC59は、偶数の音チャネルaCHnについての処理でセットされたフレーズ番号に基づき再生すべきLch・Rchのそれぞれのフレーズデータを特定するので、ワークの奇数の音チャネルaCHn+1に登録されたフレーズ番号の音源IC59への指示は不要である。
【0245】
また、先のステップS1206で、遷移量変化要求又はボリューム変化要求がなければ、演出制御CPU200は、ステップS1207〜S1212の処理は経ず、ステップS1213に進む。
【0246】
ステップS1213では演出制御CPU200は、フレーズ変化要求があるか否か、つまりはフレーズ変化rsv0の値が「1」であるか否かを判別する。
フレーズ変化要求がなければ、ステップS1220で音チャネルaCHnの音データをクリアして当該音チャネルaCHnについての処理を終了する。即ち、フレーズ変化要求がない場合はワークの音チャネルaCHnにセットされたフレーズ番号の音源IC59への出力(S1215)は行われない。
【0247】
一方、フレーズ変化要求があれば、ステップS1214で音チャネルaCHnがステレオ且つ奇数であるか否かを判別する。音チャネルaCHnがステレオ且つ奇数であれば、ステップS1220で音チャネルaCHnの音データをクリアして当該音チャネルaCHnについての処理を終了する。
【0248】
ステップS1214で音チャネルaCHnがステレオ且つ奇数でなければ、ステップS1215に進んで音チャネルaCHnにフレーズ番号を出力する。即ち、ワークの音チャネルaCHnに登録されたフレーズ番号hiとフレーズ番号lowとで成るフレーズ番号の情報を、音源IC59の音チャネルaCHn用のブレーズ番号レジスタに出力する。
【0249】
次のステップS1216では演出制御CPU200は、ループ要求があるか否か、つまりはループfrzLpの値が「1」であるか否かを判別する。ループ要求があれば、ステップS1217で音源IC59の音チャネルaCHnにループ回数0xFF(無限ループ)を出力してステップS1219に進み、ループ要求がなければステップS1218で音源IC59の音チャネルaCHnにループ回数0x00(ループなし)を出力してステップS1219に進む。
【0250】
ステップS1219では演出制御CPU200は、音チャネルaCHnを再生出力指示する。すなわち、音チャネルaCHnにセットしたデータに基づく再生指示を音源IC59に対して行う。
次いで演出制御CPU200は、ステップS1220でワークの音チャネルaCHnの音データをクリアして、当該音チャネルaCHnについての処理を終了する。
【0251】
演出制御CPU200は、以上で説明したステップS1201〜S1220の処理を、ループ処理LP3により音チャネルaCH0〜aCH15まで順次行う。これにより、ステップS111の音再生処理は終了となる。
このような音再生処理によって、音データ登録情報に登録された情報に基づく音出力が実行されて、シナリオに応じた音演出が実現される。
【0252】
ここで、上記のように本実施の形態では、偶数とその次の奇数の音チャネルaCHの「左右パンポット」のレジスタに所定値をセットすることで、音源IC59へのステレオ再生指示を行うものとしているが、このことで、音源IC59にステレオ再生/モノラル再生の指示を行うためのレジスタを設けずとも、ステレオ再生/モノラル再生の指示を適正に行うことができる。即ち、音源IC59のレジスタ数を削減することができる。また同時に、音源IC59に対するステレオ再生/モノラル再生の指示をパンポットの出力処理で実現できるので、ステレオ再生/モノラル再生の指示処理を別途に行う必要がなくなり、その分処理負担の軽減が図られる。
【0253】
ところで、
図31の音再生処理では、ステップS1200で都度ボリュームMAXエラーフラグを確認し、ボリュームMAXエラーの発生中であればステップS1221でワークの2次ボリュームの書き換えを行うものとしているが、その意義について
図32を参照して説明しておく。
【0254】
図32は、エラー発生に応じたボリューム制御についての説明図である。
図32AはボリュームMAXエラーの発生状態を表し、図のように時点t1〜t2の期間がボリュームMAXエラーの発生期間とされる。
図32B〜
図32Eは、それぞれ異なる再生期間でフレーズが再生された場合を表し、図のように
図32Bのケースではフレーズ再生期間が時点t0(時点t1よりも前の時点)〜時点tn(時点t1と時点t2の間の時点)、
図32Cのケースではフレーズ再生期間が時点tn〜時点t3(時点t2よりも後の時点)、
図32Dのケースではフレーズ再生期間が時点t0〜時点t3、
図32Eのケースではフレーズ再生期間が時点tn1〜時点tn2(時点tn1、tn2ともに時点t1〜t2の間の時点)とされる。なお、ここで言うフレーズとは、エラー音以外のフレーズを意味するものとする。
また、これら
図32B〜
図32Eの各ケースでは、シナリオとして、フレーズの2次ボリュームを制御する音コントロールの情報も記述されているとする。図中には、2次ボリュームの状態も併せて示している(図中「2次ボリューム状態」)。なお、「0x**」は、「0x00」よりも大きく「0x80」よりも小さい2次ボリュームの値を意味する。
前述のように、ワークの2次ボリュームの値は、通常はボリュームスイッチの状態に応じた値がセットされることになる。この図の例では、ボリュームスイッチの状態に応じた値が「0x80」であったものとする。
【0255】
図32Bのケースでは、時点t0に対応するタイミングで2次ボリュームを「0x**」に制御する音コントロール情報がワークに登録されたことに応じて、フレーズの2次ボリュームが時点t0に応じたタイミングで「0x80」から「0x**」に下げられる。仮に、ボリュームMAXエラーが発生しなければ、時点t0以降ではフレーズの2次ボリュームは「0x**」で維持されることになる。
しかしながら、この場合は時点t1でボリュームMAXエラーが発生したことに応じて、図のように時点t1に応じたタイミングで2次ボリュームが強制的に「0x00」に下げられる。これは、ボリュームMAXエラーの発生に応じて、
図31のステップS1221でワークの音チャネルaCH15以外の2次ボリュームの値が「0x00」に書き換えられるためである。
ボリュームMAXエラーが発生中である場合には、ステップS1221の書き換え処理が16msごとに都度行われる。このため、時点t1以降においてもワークの2次ボリューム(エラー音以外の音チャネルaCH)は都度「0x00」がセットされ、これが音源IC59に出力されることで2次ボリュームは「0x00」で維持される。
このとき、フレーズの再生が終了した時点tnでは、演出制御CPU200は、該フレーズに対応する音チャネルaCH(ワーク)の2次ボリュームの値としてボリュームスイッチの状態に応じた値をセットすることになる。従って、時点tnでは当該音チャネルaCHの消音状態が解除されてしまうことが懸念される。しかしながら、この場合としても、
図31に示した音再生処理においてステップS1221のボリューム書き換え処理が実行される、すなわち音源IC59に対する2次ボリュームの出力の直前となるタイミングでワークの2次ボリュームの値が書き換えられることで、音源IC59に対しては2次ボリュームとして「0x00」を指示することができる。これにより、ボリュームMAXエラー発生期間中において、2次ボリュームとして「0x00」より大きな値が設定されてフレーズが放音されてしまうことが確実に防止される。
【0256】
続いて、
図32Cのケースでは、エラーが発生する時点t1の後の時点tnにてフレーズの再生が開始される。この場合、時点t1までの期間では、ワークの2次ボリュームの値はボリュームスイッチ状態に応じた「0x80」であったが、時点t1以降の期間ではエラー発生に応じてステップS1221の処理によりワークの2次ボリュームの値が「0x00」に書き換えられる。
ここで、図中では反映されていないが、この場合はシナリオとしてフレーズの2次ボリュームを制御する音コントロール情報が記述されているので、フレーズの再生が開始される時点tnでは、ワークにおける該フレーズに対応する音チャネルaCHの2次ボリュームの値は、該音コントロール情報で指示された値にセットされることになる。しかしながらこの場合も、音再生処理においてステップS1221による書き換え処理が実行されることで、最終的に音源IC59に出力される2次ボリュームの値は「0x00」とすることができ、エラー発生中に2次ボリュームが「0x00」より大きい値に設定されてフレーズが放音されてしまうことが確実に防止される。
なお、この
図32Cのケースでは、時点t2以降もフレーズ再生期間となっているが、時点t2では、ワークの2次ボリュームの値はボリュームスイッチの状態に応じた値(この場合は「0x80」)にセットされる。また、時点t2では、ボリュームMAXエラーフラグが「0x00」に変化することに応じて該時点t2以降はステップS1221の書き換え処理は実行されないものとなる。これらの点より、時点t2以降は、音源IC59には「0x80」が出力され、結果、エラー解消後にはフレーズが適正に放音されることになる。
【0257】
また、
図32Dのケースでは、時点t0にてフレーズの再生が開始されると共に、音コントロールの情報により該フレーズの2次ボリュームが「0x80」から「0x**」に制御される。
この場合も、エラー発生期間である期間t1〜t2では、ステップS1221の処理によりワークの2次ボリュームの値が都度「0x00」に書き換えられ、従ってエラー発生期間中はフレーズが消音される。
時点t2では、ワークの2次ボリュームの値がボリュームスイッチの状態に応じた値(「0x80」)にセットされ、またボリュームMAXエラーフラグが「0x00」に変化することで該時点t2以降はステップS1221の書き換え処理が実行されないものとなることから、エラーが解消した時点t2以降はフレーズが適正に放音される。
【0258】
また、
図32Eのケースでは、時点t1までの期間では、ワークの2次ボリュームの値は「0x80」であったが、エラー発生に応じて時点t1以降の期間ではステップS1221の処理によりワークの2次ボリュームの値が「0x00」となる。
この
図32Eのケースでは、時点t1の後の時点tn1でフレーズの再生が開始されるが、当該時点tn1で音コントロールの情報により指示された2次ボリュームの値がワークにセットされたとしても、ステップS1221の処理によりワークの2次ボリュームの値が「0x00」に書き換えられることで、フレーズが放音されることはない。また、時点tn2でフレーズの再生期間が終了するとワークの2次ボリュームの値はボリュームスイッチに応じた値に書き換えられるが、ステップS1221の処理によりエラー発生期間中はワークの2次ボリュームの値が「0x00」に書き換えられるので、時点tn2〜時点t2の期間にフレーズが放音されることはない。
なお、この場合も、時点t2ではワークの2次ボリュームの値がボリュームスイッチの状態に応じた値(「0x80」)となり、またボリュームMAXエラーフラグが「0x00」に変化することで該時点t2以降はステップS1221の書き換え処理が実行されないことから、エラーが解消した時点t2以降では、2次ボリュームが「0x80」に復帰する。
【0259】
このようにして、
図31の音再生処理において都度ボリュームMAXエラーフラグを確認し(S1200)ボリュームMAXエラーの発生中であればワークの2次ボリュームの書き換えを行う(ステップS1221)ようにしたことで、ボリュームMAXエラーの発生中にエラー音以外の音を確実に消音することができる。
【0260】
<5.まとめ及び変形例>
以上で説明した演出制御CPU200の処理により、多様な演出動作を制御負荷の低減を図りつつ効率的に実現できる。また、演出制御に要するメモリ容量も削減することができる。
【0261】
なお、本発明は実施の形態で挙げた例に限らず多様な変形例や適用例が考えられるものである。
例えば、上記による説明では、本発明がパチンコ遊技機1のような弾球遊技機に適用される例を示したが、本発明は回胴式遊技機(いわゆるスロット機)にも好適に適用できるものである。