(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明に係る遊技機の実施の形態としてパチンコ遊技機を例に挙げ、次の順序で説明する。
<1.パチンコ遊技機の構造>
<2.パチンコ遊技機の制御構成及び第1の実施の形態のドライバ構成>
<3.主制御部の処理>
<4.演出制御部の処理>
[4−1:メイン処理]
[4−2:1msタイマ割込処理]
[4−3:コマンド解析処理]
[4−4:シナリオ登録・削除処理]
[4−5:シナリオ更新処理]
[4−6:LED駆動データ更新処理]
[4−7:第1の実施の形態のLED出力処理]
[4−8:LEDドライバ初期化処理]
<5.第2の実施の形態>
<6.変形例>
【0012】
<1.パチンコ遊技機の構造>
まず
図1、
図2を参照して、本発明の実施の形態としてのパチンコ遊技機1の構成を概略的に説明する。
図1は実施の形態のパチンコ遊技機1の外観を示す正面側の斜視図であり、
図2は遊技盤の正面図である。
図1,
図2に示すパチンコ遊技機1は、主に「枠部」と「遊技盤部」から成る。
「枠部」は以下説明する前枠2,外枠
4、ガラス扉5、操作パネル7を有して構成される。「遊技盤部」は
図2の遊技盤3から成る。以下の説明上で、「枠部」「枠側」とは前枠2,外枠
4、ガラス扉5、操作パネル7の総称とする。また「盤部」「盤側」とは遊技盤3を示す。
【0013】
図1に示すようにパチンコ遊技機1は、木製の外枠4の前面に額縁状の前枠2が開閉可能に取り付けられている。図示していないが、この前枠2の裏面には遊技盤収納フレームが形成されており、その遊技盤収納フレーム内に
図2に示す遊技盤3が装着される。これにより遊技盤3の表面に形成した遊技領域3aが前枠2の開口部2aから
図1の遊技機前面側に臨む状態となる。
なお遊技領域3aの前側には、透明ガラスを支持したガラス扉5が設けられており、遊技領域3aは透明ガラスを介して前面の遊技者側に表出される。
【0014】
ガラス扉5は軸支機構6により前枠2に対して開閉可能に取り付けられている。そしてガラス扉5の所定位置に設けられた図示しない扉ロック解除用キーシリンダを操作することで、前枠2に対するガラス扉5のロック状態を解除し、ガラス扉5を前側に開放できる構造とされている。また扉ロック解除用キーシリンダの操作によっては、外枠4に対する前枠2のロック状態も解除可能な構成とされている。
またガラス扉5の前面側には、枠側の発光手段として装飾ランプ20wが各所に設けられている。装飾ランプ20wは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
【0015】
ガラス扉5の下側には操作パネル7が設けられている。この操作パネル7も、図示しない軸支機構により、前枠2に対して開閉可能とされている。
操作パネル7には、上受け皿ユニット8、下受け皿ユニット9、発射操作ハンドル10が設けられている。
【0016】
上受け皿ユニット8には、弾球に供される遊技球を貯留する上受け皿8aが形成されている。下受け皿ユニット9には、上受け皿8aに貯留しきれない遊技球を貯留する下受け皿9aが形成されている。
また上受け皿ユニット8には、上受け皿8aに貯留された遊技球を下受け皿9a側に抜くための球抜きボタン16が設けられている。下受け皿ユニット9には、下受け皿9aに貯留された遊技球を遊技機下方に抜くための球抜きレバー17が設けられている。
また上受け皿ユニット8には、図示しない遊技球貸出装置に対して遊技球の払い出しを要求するための球貸しボタン14と、遊技球貸出装置に挿入した有価価値媒体の返却を要求するためのカード返却ボタン15とが設けられている。
さらに上受け皿ユニット8には、
演出スイッチ11、演出ボタン12、十字キー13が設けられている。
演出スイッチ11や演出ボタン12は、所定の入力受付期間中に内蔵ランプが点灯されて操作可能となり、その内蔵ランプ点灯時に押下することにより演出に変化をもたらすことができる押しボタンとされる。また十字キー13は遊技者が演出状況に応じた操作や演出設定等のための操作を行う操作子である。
【0017】
発射操作ハンドル10は操作パネル7の右端部側に設けられ、遊技者が弾球のために
図3に示す発射装置
56を作動させる操作子である。
また前枠2の上部の両側と、発射操作ハンドル10の近傍には、演出音を音響出力するスピーカ25が設けられている。
【0018】
次に
図2を参照して、遊技盤3の構成について説明する。遊技盤3は、略正方形状の木製合板または樹脂板を主体として構成されている。この遊技盤3には、発射された遊技球を案内する球誘導レール31が盤面区画部材として環状に装着されており、この球誘導レール31に取り囲まれた略円形状の領域が遊技領域3aとなっている。
【0019】
この遊技領域3aの略中央部には、主液晶表示装置32M(LCD:Liquid Crystal Display)が設けられ、また主液晶表示装置32Mの右側には副液晶表示装置32Sが設けられている。
主液晶表示装置32Mでは、後述する演出制御部51の制御の下、背景画像上で、たとえば左、中、右の3つの装飾図柄の変動表示が行われる。また通常演出、リーチ演出、スーパーリーチ演出などの各種の演出画像の表示も行われる。副液晶表示装置32Sも、同様に各種演出に応じた表示が行われる。
【0020】
また遊技領域3a内には、主液晶表示装置32M及び副液晶表示装置32Sの表示面の周囲を囲むように、センター飾り35Cが設けられている。
センター飾り35Cは、そのデザインにより装飾効果を発揮するだけでなく、周囲の遊技球から主液晶表示装置32M及び副液晶表示装置32Sの表示面を保護する作用を持つ。さらにセンター飾り35Cは、遊技球の打ち出しの強さまたはストローク長による遊技球の流路の左右打ち分けを可能とする部材としても機能する。即ち球誘導レール31を介して遊技領域3a上部に打ち出された遊技球の流下経路は、センター飾り35Cによって分割された左遊技領域3bと右遊技領域3cのいずれかを流下することとなる。いわゆる左打ちの場合、遊技球は左遊技領域3bを流下していき、右打ちの場合、遊技球は右遊技領域3cを流下していく。
【0021】
また左遊技領域3bの下方には、左下飾り35Lが設けられ、装飾効果を発揮するとともに左遊技領域3bとしての範囲を規定する。
同様に右遊技領域3cの下方には右下飾り35Rが設けられ、装飾効果を発揮するとともに左遊技領域3bとしての範囲を規定する。
なお、遊技領域3a(左遊技領域3b及び右遊技領域3c)内には、所要各所に釘49や風車47が設けられて遊技球の多様な流下経路を形成する。
また主液晶表示装置32Mの下方にはセンターステージ35Sが設けられており、装飾効果を発揮するとともに、遊技球の遊動領域として機能する。
なお図示していないが、センター飾り35Cには、適所に視覚的演出効果を奏する可動体役物が設けられている。
【0022】
遊技領域3aの右上縁付近には、複数個のLEDを配置して形成されたドット表示器による図柄表示部33が設けられている。
この図柄表示部33では、所定のドット領域により、第1特別図柄表示部、第2特別図柄表示部、及び普通図柄表示部が形成され、第1特別図柄、第2特別図柄、及び普通図柄のそれぞれの変動表示動作(変動開始および変動停止を一セットする変動表示動作)が行われる。
なお、上述した主液晶表示装置32Mは、図柄表示部33による第1、第2特別図柄の変動表示と時間的に同調して、画像による装飾図柄を変動表示する。
【0023】
センター飾り35Cの下方には、上始動口41(第1の特別図柄始動口)を有する入賞装置が設けられ、さらにその下方には下始動口42a(第2の特別図柄始動口)を備える普通変動入賞装置42が設けられている。
上始動口41及び下始動口42aの内部には、遊技球の通過を検出する検出センサ(
図3に示す上始動口センサ71,下始動口センサ72)が形成されている。
【0024】
上始動口41は、図柄表示部33における第1特別図柄の変動表示動作の始動条件に係る入賞口で、始動口開閉手段(始動口を開放または拡大可能にする手段)を有しない入賞率固定型の入賞装置となっている。
【0025】
下始動口42aを有する普通変動入賞装置42は、始動口開閉手段により始動口の遊技球の入賞率を変動可能な入賞率変動型の入賞装置として構成されている。即ち下始動口42aを開放または拡大可能にする左右一対の可動翼片(可動部材)42bを備えた、いわゆる電動チューリップ型の入賞装置である。
この普通変動入賞装置42の下始動口42aは、図柄表示部33における第2特別図柄の変動表示動作の始動条件に係る入賞口である。そして、この下始動口42aの入賞率は可動翼片42bの作動状態に応じて変動する。即ち可動翼片42bが開いた状態では、入賞が容易となり、可動翼片42bが閉じた状態では、入賞が困難又は不可能となるように構成されている。
【0026】
また普通変動入賞装置42の左右には、一般入賞口43が複数個設けられている。各一般入賞口42の内部には、遊技球の通過を検出する検出センサ(
図3に示す一般入賞口センサ74)が形成されている。
また右遊技領域3cの下部側には、遊技球が通過可能なゲート(特定通過領域)からなる普通図柄始動口44が設けられている。この普通図柄始動口44は、図柄表示部33における普通図柄の変動表示動作に係る入賞口であり、その内部には、通過する遊技球を検出するセンサ(
図3に示すゲートセンサ73)が形成されている。
【0027】
右遊技領域3c内の普通図柄始動口44から普通変動入賞装置42へかけての流下経路途中には第1特別変動入賞装置45(特別電動役物)が設けられている。
第1特別変動入賞装置45は、突没式の開放扉45bにより第1大入賞口45aを閉鎖/開放する構造とされている。また、その内部には第1大入賞口45aへの遊技球の通過を検出するセンサ(
図3の第1大入賞口センサ75)が形成されている。
第1大入賞口45aの周囲は、右下飾り35Rが遊技盤3の表面から膨出した状態となっており、その膨出部分の上辺及び開放扉45bの上面が右流下経路3cの下流案内部を形成している。従って、開放扉45bが盤内部側に引き込まれることで、下流案内部に達した遊技球は容易に第1大入賞口45aに入る状態となる。
【0028】
また普通変動入賞装置42の下方には、第2特別変動入賞装置46(特別電動役物)が設けられている。第2特別変動入賞装置46は、下部が軸支されて開閉可能な開放扉46bにより、その内側の第2大入賞口46aを閉鎖/開放する構造とされている。また、その内部には第2大入賞口46aへの遊技球の通過を検出するセンサ(
図3の第2大入賞口センサ76)が形成されている。
開放扉46bが開かれることで第2大入賞口46aが開放される。この状態では、左遊技領域3b或いは右遊技領域3cを流下してきた遊技球は、高い確率で第2大入賞口50に入ることとなる。
【0029】
以上のように盤面の遊技領域には、入賞口として上始動口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から排出される。
ここで「入賞」とは、入賞口がその内部に遊技球を取り込んだり、ゲートを遊技球が通過したりすることをいう。実際には入賞口ごとに形成されたセンサ(各入賞検出スイッチ)により遊技球が検出された場合、その入賞口に「入賞」が発生したものとして扱われる。この入賞に係る遊技球を「入賞球」とも称する。
【0030】
以上のような盤面において、センター飾り35C、左下飾り35L、右下飾り35R、センターステージ35S、第1特別変動入賞装置45、第2特別変動入賞装置46、さらには図示していない可動体役物には、詳細には図示していないが各所に、盤側の発光手段として装飾ランプ20bが設けられている。
装飾ランプ20bは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
【0031】
<2.パチンコ遊技機の制御構成及び第1の実施の形態のドライバ構成>
次に本実施の形態のパチンコ遊技機1の制御系の構成について説明する。
図3はパチンコ遊技機1の内部構成の概略的なブロック図である。
本実施の形態のパチンコ遊技機1は、その制御構成を形成する基板として主に、主制御基板50、演出制御基板51、液晶制御基板52、払出制御基板53、発射制御基板54、電源基板58が設けられている。
【0032】
主制御基板50は、マイクロコンピュータ等が搭載され、パチンコ遊技機1の遊技動作全般に係る統括的な制御を行う。なお以下では、主制御基板50に搭載されたマイクロコンピュータ等を含めて主制御基板50の構成体を「主制御部50」と表記する。
演出制御基板51は、マイクロコンピュータ等が搭載され、主制御部50から演出制御コマンドを受けて、画像表示、発光、音響出力を用いた各種の演出動作を実行させるための制御を行う。なお以下では、演出制御基板51に搭載されたマイクロコンピュータ等を含めて演出制御基板51の構成体を「演出制御部51」と表記する。
【0033】
液晶制御基板52はマイクロコンピュータやビデオプロセッサ等が搭載され、演出制御部51からの表示制御コマンドを受けて、主液晶表示装置32M、副液晶表示装置32Sによる表示動作の制御を行う。
なお主液晶表示装置32M、副液晶表示装置32Sによる表示動作の制御を行う液晶制御基板として、主液晶制御基板、副液晶制御基板を独立して設けてもよい。
払出制御基板53は、パチンコ遊技機1に接続された遊技球払出装置55による賞球の払い出し制御を行う。
発射制御基板54
は、パチンコ遊技機1に設けられている発射装置56による遊技球の発射動作の制御を行う。
電源基板58は、外部電源(例えばAC24V)からAC/DC変換、さらにはDC/DC変換を行い、各部に動作電源電圧Vccを供給する。なお電源経路の図示は省略している。
【0034】
まず主制御部50及びその周辺回路について述べる。
主制御部50は、CPU100(以下「主制御CPU100」と表記)を内蔵したマイクロプロセッサ、ROM101(以下「主制御ROM101」と表記)、RAM102(以下「主制御RAM102」と表記)を搭載し、マイクロコンピュータを構成している。
主制御CPU100は制御プログラムに基づいて、遊技の進行に応じた各種演算及び制御処理を実行する。
主制御ROM101は、主制御CPU100による遊技動作の制御プログラムや、遊技動作制御に必要な種々のデータを記憶する。
主制御RAM102は、主制御CPU100が各種演算処理に使用するワークエリアや、各種入出力データや処理データのバッファ領域として用いられる。
なお図示は省略したが、主制御部50は、各部とのインターフェース回路、特別図柄変動表示に係る抽選用乱数を生成する乱数生成回路、各種の時間計数のためのCTC(Counter Timer Circuit)、主制御CPU100に割込み信号を与える割込コントローラ回路なども備えている。
【0035】
主制御部50は、上述のように盤面の遊技領域の各入賞手段(上始動口41、下始動口42a、普通図柄始動口44、第1大入賞口45a、第2大入賞口46a、一般入賞口43)に設けられるセンサの検出信号を受信する構成となっている。
即ち、上始動口センサ71、下始動口センサ72、ゲートセンサ73、一般入賞口センサ74、第1大入賞口センサ75、第2大入賞口センサ76のそれぞれの検出信号が主制御部50に供給される。
なお、これらのセンサ(71〜76)は、入球した遊技球を検出する検出スイッチにより構成されるが、具体的にはフォトスイッチや近接スイッチなどの無接点スイッチや、マイクロスイッチなどの有接点スイッチで構成することができる。
【0036】
主制御部50は、上始動口センサ71、下始動口センサ72、ゲートセンサ73、一般入賞口センサ74、第1大入賞口センサ75、第2大入賞口センサ76のそれぞれの検出信号の受信に応じて、処理を行う。例えば抽選処理、図柄変動制御、賞球払出制御、演出制御コマンド送信制御、外部データ送信処理などを行う。
【0037】
また主制御部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の開放動作を実行させる。
【0038】
また主制御部50には、図柄表示部33が接続されており、図柄表示部33に制御信号を送信して、各種図柄表示(LEDの消灯/点灯/点滅)を実行させる。これにより図柄表示部33における第1特別図柄表示部80、第2特別図柄表示部81、普通図柄表示部82での表示動作が実行される。
【0039】
また主制御部50には、枠用外部端子基板57が接続される。主制御部50は、遊技進行に関する情報を、枠用外部端子基板57を介して図示しないホールコンピュータに送信可能となっている。遊技進行に関する情報とは、例えば大当り当選情報、賞球数情報、図柄変動表示実行回数情報などの情報である。ホールコンピュータとは、パチンコホールの遊技機を統括的に管理する管理コンピュータであり、遊技機外部に設置されている。
【0040】
また主制御部50には、払出制御基板53が接続されている。払出制御基板53には、発射装置56を制御する発射制御基板54と、遊技球の払い出しを行う遊技球払出装置55が接続されている。
主制御部50は、払出制御基板53に対し、払い出しに関する制御コマンド(賞球数を指定する払出制御コマンド)を送信する。払出制御基板53は当該制御コマンドに応じて遊技球払出装置55を制御し、遊技球の払い出しを実行させる。
また払出制御基板53は、主制御部50に対して、払い出し動作状態に関する情報(払出状態信号)を送信可能となっている。主制御部50側では、この払出状態信号によって、遊技球払出装置55が正常に機能しているか否かを監視する。具体的には、賞球の払い出し動作の際に、玉詰まりや賞球の払い出し不足といった不具合が発生したか否かを監視している。
【0041】
また主制御部50は、特別図柄変動表示に関する情報を含む演出制御コマンドを、演出制御部51に送信する。なお、主制御部50から演出制御部51への演出制御コマンドの送信は一方向通信により実行されるようにしている。これは、外部からの不正行為による不正な信号が演出制御部51を介して主制御部50に入力されることを防止するためである。
【0042】
続いて演出制御部51及びその周辺回路について説明する。
演出制御部51は、CPU200(以下「演出制御CPU200」と表記)を内蔵したマイクロプロセッサ、ROM201(以下「演出制御ROM201」と表記)、RAM202(以下「演出制御RAM202」と表記)を搭載し、マイクロコンピュータを構成している。
演出制御CPU200は演出制御プログラム及び主制御部50から受信した演出制御コマンドに基づいて、各種演出動作のための演算処理や各演出手段の制御を行う。演出手段とは、本実施の形態のパチンコ遊技機1の場合、主液晶表示装置32M、副液晶表示装置32S、装飾ランプ20w、20b、及び図示を省略した可動体役物となる。
演出制御ROM201は、演出制御CPU200による演出動作の制御プログラムや、演出動作制御に必要な種々のデータを記憶する。
演出制御RAM202は、演出制御CPU200が各種演算処理に使用するワークエリアや、テーブルデータ領域、各種入出力データや処理データのバッファ領域などとして用いられる。
なお図示は省略したが、演出制御部51は、各部とのインターフェース回路、演出のための抽選用乱数を生成する乱数生成回路、各種の時間計数のためのCTC、演出制御CPU200に割込み信号を与える割込コントローラ回路、音響演出のための音源ICなども備えている。
この演出制御部51の主な役割は、主制御部50からの演出制御コマンドの受信、演出制御コマンドに基づく演出の選択決定、主液晶表示装置32M、副液晶表示装置32S側への演出制御コマンドの送信、スピーカ45の出力音制御、装飾ランプ20w,20b(LED)の発光制御、可動体役物の動作制御などとなる。
【0043】
演出制御部51は、主液晶表示装置32M、副液晶表示装置32S側への演出制御コマンドの送信を行うが、その演出制御コマンドは、液晶インターフェース基板66を介して液晶制御基板52に送られる。
【0044】
液晶制御基板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は、ワークエリアやバッファメモリとして機能する。
【0045】
液晶制御基板52は、これらの構成により、演出制御基板51からの演出制御コマンドに基づいて各種の画像データを生成し、主液晶表示装置32M及び副液晶表示装置32Sに出力する。これによって主液晶表示装置32M及び副液晶表示装置32Sにおいて各種の演出画像が表示される。
【0046】
また演出制御部51は、光演出や音演出の制御を行う。このため演出制御部51には枠ドライバ部61、盤ドライバ部62が接続されている。
枠ドライバ部61は、枠側の装飾ランプ部63のLEDについて発光駆動を行う。なお、装飾ランプ部63とは、
図1に示したように枠側に設けられている装飾ランプ20wを総括的に示したものである。
盤ドライバ部62は、盤側の装飾ランプ部64のLEDについて発光駆動を行う。なお、装飾ランプ部64とは、
図2に示したように盤側に設けられている装飾ランプ20bを総括的に示したものである。また本実施の形態の場合、盤ドライバ部62は、盤側に形成されている可動体役物を駆動する可動体役物モータ65の駆動も行う。可動体役物モータ65は例えばステッピングモータが用いられる。
【0047】
本実施の形態の場合、枠ドライバ部61は第1系統の駆動信号出力手段であり、盤ドライバ部62は第2系統の駆動信号出力手段である。詳しくは
図4を用いて後述するが、演出制御部51(演出制御CPU200)は、シリアルデータ送信チャネルch1,ch2を用いて、演出駆動データをシリアルデータとして第1系統及び第2系統の駆動信号出力手段(枠ドライバ部61及び盤ドライバ部62)に供給する。
なおこの例では盤ドライバ部62は、盤側に形成されている可動体役物を駆動する可動体役物モータ65の駆動も行うものとしているが、装飾ランプ部64の各LEDを発光駆動するドライバ部と、可動体役物モータ65を駆動するドライバ部が別体として設けられても良い。
【0048】
また演出制御部51は、音源ICで発生させた音声信号をスピーカ部59に出力する。スピーカ部59とは、
図1で説明したスピーカ25及びそのスピーカの駆動回路(パワーアンプ等)を含んだ部位として示している。演出制御部51は遊技進行状況や主・副液晶表示装置32M、32Sの表示に対応させて、音楽やキャラクタ音声、効果音、メッセージ音等の音声信号をスピーカ部59に出力し、スピーカ25から音響出力させる。
【0049】
また演出制御部51には、遊技者が操作可能な操作部60が接続され、操作部60からの操作検出信号を受信可能となっている。この操作部60とは、
図1で説明した
演出スイッチ11、演出ボタン12、十字キー13と、それらの操作検出機構のことである。
演出制御部51は、操作部60からの操作検出信号に応じて、各種演出制御を行うことができる。
【0050】
演出制御部51は、主制御部50から送られてくる演出制御コマンドに基づき、あらかじめ用意された複数種類の演出パターンの中から抽選によりあるいは一意に演出パターンを決定し、必要なタイミングで各種演出手段を制御する。これにより、演出パターンに対応する主・副液晶表示装置32M、32Sによる演出画像の表示、スピーカ部59(スピーカ25)からの音の再生、装飾ランプ部63、64(装飾ランプ20w、20b)におけるLEDの点灯点滅駆動、可動体役物モータ65による可動体役物の動作が実現され、時系列的に種々の演出パターンが展開されていく。これにより「演出シナリオ」が実現される。
【0051】
なお演出制御コマンドは、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)は、ストローブ信号の入力に基づいて割込を発生させてコマンド受信割込処理用の制御プログラムを実行し、この割込処理において演出制御コマンドが取得される。
【0052】
続いて、第1の実施の形態としてのドライバ構成を説明する。上述した第1系統及び第2系統の駆動信号出力手段(枠ドライバ部61及び盤ドライバ部62)の構成である。
図4に演出制御部51に接続される枠ドライバ部61、盤ドライバ部62を示した。
【0053】
第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)と表記する。
【0054】
また第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)と表記する。
【0055】
枠ドライバ部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を有する。
【0056】
図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から行う電流源である
【0057】
このLEDドライバ90には、シリアルバスインターフェース91に対し、演出制御CPU200からのイネーブル信号ENABLE、クロック信号CLK、シリアルデータDATAが入力される。シリアルバスインターフェース91は、イネーブル信号ENABLEで規定される期間に、クロック信号CLKのタイミングでシリアルデータDATAを取り込む。シリアルバスインターフェース91は、取り込んだシリアルデータをパラレルデータに変換してデータバッファ/PWMコントローラ93に転送する。
なおシリアルデータの形式については
図26で後述するが、演出制御CPU200はスレーブアドレスを指定してLED駆動データを送信してくる。
データバッファ/PWMコントローラ93は、シリアルバスインターフェース91から転送されたパラレルデータについて、スレーブアドレス確認を行う。パラレルデータに含まれるスレーブアドレスが、アドレス設定部92に設定された自己のスレーブアドレス(w1〜w(n)、b1〜b(m)のいずれか)と一致していることを確認した場合に、該パラレルデータに含まれるLED駆動データを有効なデータとして、指定されたレジスタに格納する。
【0058】
データバッファ/PWMコントローラ93は、各系列のLED駆動データを取り込んだら、そのLED駆動データで示された輝度情報(階調値)に応じた値を、24系列の各駆動制御値としてD/A変換器94に出力する。
D/A変換器94は、輝度情報に応じた値をアナログ信号に変換し、各電流源回路95−1〜95−24への制御信号とする。
【0059】
出力端子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に流すように動作する。
【0060】
このようなLED駆動制御を、1つの系列について具体的にいうと、データバッファ/PWMコントローラ93は、当該系列の階調値に応じたパルスデューティに相当するデジタルデータ列をD/A変換器94に出力し、D/A変換器94は、デジタルデータ列をアナログ信号としてのパルス信号に変換して当該系列の電流源回路95に供給する。電流源回路95はパルス信号のH/Lにより出力制御され、例えば0mAと5mAの電流出力を行う。例えばこのような動作で、結果的に階調値に応じた平均電流値となる駆動電流がLED120に流れることとなる。
なお、本実施の形態では、PWM駆動方式により、電流値が例えば0mAと5mAとされ、時間軸方向で(積分的に)階調制御がされるものとしているが、もちろん階調制御はこれに限らず、実際に電流値を階調に応じて変化させても良いことはいうまでもない。デューティ制御であろうと、レベル制御であろうと、あくまでも単位時間あたりの平均電流値が階調に応じたレベルとされることで適切な階調表現が可能となる。
【0061】
なお、本実施の形態の場合、盤ドライバ部62における一部のLEDドライバ90には、可動体役物を駆動する可動体役物モータ65が接続される。
図5Bに、或るLEDドライバ90の出力端子96−1〜96−24の全部(又は一部)に例えばステッピングモータ121が接続された例を示している。
図5Bは出力端子96−1〜96−24の部分のみを示しているが、LEDドライバ90の内部構成は
図5Aと同様である。
LEDドライバ90は与えられたコマンド(シリアルデータ)によって指示される電流を出力端子96−1〜96−24から出力する回路であることから、ステッピングモータやソレノイド等の物理的可動体駆動デバイスのドライバとしても使用することができる。そこで、一部のLEDドライバ90を
図5Bのようにステッピングモータ121のドライバとして用いる。可動体役物の動作は演出シナリオによって細かく設定され、それに応じて演出制御部51は駆動方向や駆動量などを制御するわけであるが、盤ドライバ部62におけるLEDドライバ90を利用して可動体役物を駆動することで、装飾ランプ部64の各装飾ランプ(LED20b)とともにシリアルデータによる可動体役物制御が可能となり、制御処理及び構成が効率化できる。
なお、1つのLEDドライバ90において、一部の出力端子がLED駆動に用いられ、他の一部の出力端子がステッピングモータやソレノイド等の駆動に用いられるという手法を採っても良い。
【0062】
以上のように、各LEDドライバ90は、演出制御CPU200から受信したシリアルデータDATAに応じて、指定された輝度で各LED120が発光されるように駆動することとなる。或いはLEDドライバ90の一部は、シリアルデータDATAに応じて、ステッピングモータ121を駆動する。
そして第1系統、第2系統の駆動信号出力手段(枠ドライバ部61、盤ドライバ部62)には、それぞれが1又は複数の演出手段に駆動信号を出力する複数のLEDドライバ90が含まれ、1つの系統内の各LEDドライバ90には、演出制御部51からのシリアルデータが、並列に送信される構成とされている。そして各LEDドライバ90は、自己のID(スレーブアドレス)が含まれる演出駆動データ(シリアルデータ)を取得する。
このようなドライバ構成において、後述するが本実施の形態では、演出制御部51(演出制御CPU200)は、一送信単位のシリアルデータを、第1系統、第2系統の駆動信号出力手段(枠ドライバ部61と盤ドライバ部62)に対して略同時的に出力し、該送信単位のシリアルデータについての、枠ドライバ部61、盤ドライバ部62に対する送信完了後に、次の一送信単位のシリアルデータを、枠ドライバ部61、盤ドライバ部62に対して略同時的に出力する送信処理を行うものである。
【0063】
<3.主制御部の処理>
以下、本実施の形態の制御処理につき説明する。まずここでは主制御部(主制御基板)50によるメイン処理について述べる。
図6は、主制御部50のメイン処理を示すフローチャートである。メイン処理が開始されるのは、停電状態からの復旧時のように初期化スイッチ(図示せず)が操作されることなく電源がON状態になる場合と、初期化スイッチがON操作されて電源がON状態になる場合とがある。いずれの場合でも、パチンコ遊技機1に電源が投入されると、電源基板58によって各制御基板に電圧が供給される。この場合に主制御部50(主制御CPU100)は
図6に示すメイン処理を開始する。
【0064】
この主制御側メイン処理において、主制御CPU100はステップS11で、まず遊技動作開始前における必要な初期設定処理を実行する。たとえば、最初に自らを割込み禁止状態に設定すると共に、所定の割込みモード(割込みモード2)に設定し、またマイクロコンピュータの各部を含めてCPU内部のレジスタ値を初期設定する。
次に主制御CPU100はステップS12で、図示してない入力ポートを介して入力されるRAMクリアスイッチの出力信号であるRAMクリア信号の状態(ON、OFF)を判定する。RAMクリア信号とは、RAMの全領域を初期設定するか否かを決定する信号である。RAMクリア信号としては通常、パチンコ店の店員が操作する初期化スイッチのON/OFF状態に対応した値を有している。
【0065】
RAMクリア信号がON状態であった場合、主制御CPU100は処理をステップS12からS16に進め、RAMの全領域のゼロクリアを行う。したがって、電源遮断時にセットされたバックアップフラグの値は、他のチェックサム値などと共にゼロとなる。
続いてステップS17で主制御CPU100は、RAM領域がゼロクリアされたことを報知するための「RAMクリア表示コマンド」を初期化コマンドとして各制御基板に送信する。そしてステップS18で、RAMクリア報知タイマに、RAMクリアされた旨を報知するための時間として、たとえば、30秒を格納する。
【0066】
次に主制御CPU100はステップS19で、タイマ割込み動作を起動する割込み信号を出力するCTCを初期設定して、CPUを割込み許可状態に設定する。
その後はステップS20、S21、S22の処理として、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、各種乱数更新処理を実行する。このステップS21の各種乱数更新処理では、特別図柄変動表示や普通図柄変動表示に使用される各種乱数の初期値(スタート値)変更のために使用する乱数や、変動パターンの選択に利用される変動パターン用乱数を更新する。
なお、特別図柄変動表示や普通図柄変動表示に使用される各種乱数とは、例えばインクリメント処理によって所定数値範囲を循環している大当り抽選に係る乱数(図柄抽選に利用される特別図柄判定用乱数)や、補助当り抽選に係る乱数(補助当りの当落抽選に利用される補助当り判定用乱数)などである。また初期値変更のために使用する乱数とは、特別図柄判定用初期値乱数、補助当り判定用初期値乱数などである。
【0067】
主制御RAM102には大当り抽選に係る図柄抽選、補助当り抽選、または変動パターン抽選などに利用される各種の乱数カウンタとして、特別図柄判定用乱数カウンタ初期値の生成用カウンタ、特別図柄判定用乱数カウンタ、補助当り判定用乱数カウンタ初期値の生成用カウンタ、補助当り判定用乱数カウンタ、変動パターン用乱数1カウンタ、変動パターン用乱数2カウンタなどが設けられている。これらのカウンタは、ソフトウェア的に乱数を生成する乱数生成手段としての役割を果たす。
ステップS21の各種乱数更新処理では、上述の特別図柄判定用乱数カウンタや補助当り判定用乱数カウンタの初期値を生成する2つの初期値生成用カウンタ、変動パターン用乱数1カウンタ、変動パターン用乱数2カウンタなどを更新して、上記各種のソフト乱数を生成する。たとえば、変動パターン用乱数1カウンタとして取り得る数値範囲が0〜238とすると、主制御RAM102の変動パターン用乱数1の値を生成するためのカウント値記憶領域から値を取得し、取得した値に1を加算してから元のカウント値記憶領域に格納する。このとき、取得した値に1を加算した結果が239であれば0を元の乱数カウンタ記憶領域に格納する。他の初期値生成用乱数カウンタも同様に更新する。CPU201は、間欠的に実行されるタイマ割込処理を行っている間を除いて、各種乱数更新処理を繰り返し実行するようになっている。
【0068】
以上はステップS12でRAMクリアスイッチONと判定された場合について述べた。RAMクリアスイッチOFFの場合を続いて説明する。例えば停電状態からの復旧時には、初期化スイッチ(RAMクリア信号)はOFF状態である。このような場合、主制御CPU100はステップS12からS13に処理を進め、バックアップフラグ値を判定する。なお、バックアップフラグは、電源遮断時にON状態に設定され、電源復帰後の最初のタイマ割込み処理でOFF状態にリセットされるよう構成されている。
したがって、電源投入時や停電状態からの復旧時である場合には、通常では、バックアップフラグがON状態のはずである。ただし、何らかの理由で電源遮断までに所定の処理が完了しなかったような場合には、バックアップフラグはリセット(OFF)状態になる。そこで、バックアップフラグがOFF状態である場合には、主制御CPU100は処理をステップS13からS16に進め、遊技機の動作を初期状態に戻す。
【0069】
一方、バックアップフラグがON状態であれば、主制御CPU100は処理をステップS13からS14に進め、チェックサム値を算出するためのチェックサム演算を実行する。ここで、チェックサム演算とは、主制御RAM102のワーク領域を対象とする8ビット加算演算である。
そして、チェックサム値が算出されたら、この演算結果を、主制御RAM102のSUM番地の記憶値と比較をする。このSUM番地には、電源遮断時に、同じチェックサム演算によるチェックサム値が記憶されている。そして、記憶された演算結果は、主制御RAM102の他のデータと共に、バックアップ電源によって維持されている。したがって、本来は、ステップS14の判定によって両者が一致するはずである。
しかし、電源遮断時にチェックサム演算が実行できなかった場合や、実行できても、その後、メイン処理のチェックサム演算の実行時までの間に、ワーク領域のデータが破損している場合もある。このような場合にはステップS14の判定結果は不一致となる。
判定結果の不一致によりデータ破損が検出された場合には、主制御CPU100はステップS14からS16の処理に進んでRAMクリア処理を実行し、遊技機の動作状態を初期状態に戻す。
【0070】
ステップS14でのチェックサム演算によるチェックサム値と、SUM番地の記憶値とが一致する場合には、主制御CPU100はステップS15に進み、バックアップデータに基づき、電源遮断前におけるスタックポインタを復帰し、電源遮断時の処理状態から遊技を開始するために必要な遊技復旧処理を実行する。
そしてステップS15の遊技復旧処理を終えると、ステップS19の処理に進み、CTCを初期設定してCPUを割込み許可状態に設定し、その後は、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、上述した各種乱数更新処理を実行する(ステップS20〜S22)。
【0071】
次に主制御CPU100のタイマ割込処理について説明する。
図7に主制御CPU100のタイマ割込処理を示している。この主制御タイマ割込処理は、CTCからの一定時間(4ms程度)ごとの割込みで起動され、上述したメイン処理実行中に割り込んで実行される。
【0072】
タイマ割込みが生じると、主制御CPU100はレジスタの内容をスタック領域に退避させた後、まず
図7のステップS51として電源基板58からの電源の供給状態を監視する電源異常チェック処理を行う。この電源異常チェック処理では、主に、電源が正常に供給されているかを監視する。ここでは、たとえば、電断が生じるなどの異常が発生した場合、電源復帰時に支障なく遊技を復帰できるように、電断時における所定の遊技情報をRAMに格納するバックアップ処理などが行われる。
【0073】
次にステップS52で、主制御CPU100は遊技動作制御に用いられるタイマを管理するタイマ管理処理を行う。パチンコ遊技機1の遊技動作制御に用いる各種タイマ(たとえば特別図柄役物動作タイマなど)のタイマ値は、この処理で管理(更新)される。
【0074】
ステップ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のエラー管理処理において所定のエラー処理が行われるようになっている。
【0075】
ステップS54では、主制御CPU100は各変動表示に係る乱数を定期的に更新するタイマ割込内乱数管理処理を行う。この定期乱数更新処理では、特別図柄判定用乱数や補助当り判定用乱数の更新(割込み毎に+1加算)と、乱数カウンタが一周するごとに、乱数カウンタのスタート値を変更する処理を行う。たとえば、特別図柄判定用乱数カウンタの値を所定範囲で更新(+1加算)し、特別図柄判定用乱数カウンタが1周するごとに、特別図柄判定用乱数カウンタ初期値の生成用カウンタの値を読み出し、その生成用カウンタの値を特別図柄判定用乱数カウンタに格納する。これにより、特別図柄判定用乱数カウンタのスタート値が上記の生成用カウンタの値に応じて変更されるので、更新周期は一定でありながらも特別図柄判定用乱数カウンタのカウント値はランダムになる。
【0076】
ステップS55では、主制御CPU100は、遊技動作状態の異常の有無を監視するエラー管理処理を行う。このエラー管理処理では、遊技動作状態の異常として、たとえば、基板間に断線が生じたか否かの監視や、不正入賞があったか否かの監視などをして、これらの動作異常(エラー)が発生した場合には、そのエラーに対応した所定のエラー処理を行う。
エラー処理としては、たとえば、所定の遊技動作(たとえば、遊技球の払い出し動作や遊技球の発射動作など)の進行を停止させたり、エラー報知用コマンドを演出制御部51に送信して、演出手段によりエラーが発生した旨を報知させたりする。
【0077】
ステップS56では、主制御CPU100は賞球管理処理を行う。この賞球管理処理では、ステップS53の入力管理処理で格納したデータを把握して、上述の入賞カウンタの確認を行い、入賞があった場合は、賞球数を指定する払出制御コマンドを払出制御基板53に送信する。
この払出制御コマンドを受信した払出制御基板53は、遊技球払出装置55を制御し、指定された賞球数の払い出し動作を行わせる。これにより、それぞれの入賞口に対応した賞球数が払い出されるようになっている。入賞口に対応した賞球数とは、入賞口別に設定された入賞球1個当りの所定の賞球数×入賞カウンタの値分の賞球数である。
【0078】
ステップS57では主制御CPU100は、普通図柄管理処理を行う。この普通図柄管理処理では、普通図柄変動表示における補助当り抽選を行い、その抽選結果に基づいて、普通図柄の変動パターンや普通図柄の停止表示態様を決定したり、所定時間毎に点滅を繰り返す普通図柄のデータ(普通図柄変動中のLED点滅表示用データ)を作成したり、普通図柄が変動中でなければ、停止表示用のデータ(普通図柄停止表示中のLED点滅表示用データ)を作成したりする。
【0079】
ステップS58では、主制御CPU100は、普通電動役物管理処理を行う。この普通電動役物管理処理では、ステップS57の普通図柄管理処理の補助当り抽選の抽選結果に基づき、普通電動役物ソレノイド77に対するソレノイド制御用の励磁信号の生成およびそのデータ(ソレノイド制御データ)の設定を行う。ここで設定されたデータに基づき、後述のステップS64のソレノイド管理処理にて、励磁信号が普通電動役物ソレノイド77に対して出力され、これにより可動翼片42bの動作が制御される。
ステップS59では、主制御CPU100は、特別図柄管理処理を行う。この特別図柄管理処理では、主に、特別図柄変動表示における大当り抽選を行い、その抽選結果に基づいて、特別図柄の変動パターン(先読み変動パターン、変動開始時の変動パターン)や特別停止図柄などを決定する。
ステップS60では、主制御CPU100は特別電動役物管理処理を行う。この特別電動役物管理処理では、主に、大当り抽選結果が「大当り」または「小当り」であった場合、その当りに対応した当り遊技を実行制御するために必要な設定処理を行う。
【0080】
ステップS61では、主制御CPU100は右打ち報知情報管理処理を行う。この右打ち報知情報管理処理では、例えば第1、第2第入賞口45a,46aが開放される機会や可動翼片42bが駆動される電サポ状態など、右打ちが有利な状況において右打ち指示報知を行う「発射位置誘導演出(右打ち報知演出)」を現出させるための処理を行う。右打ち指示とは、具体的には、右遊技領域3cを狙う旨を有技者に指示する演出動作であり、例えば主液晶表示装置32Mに「右打ち」を遊技者に促す画像を表示させたり、スピーカ25から右打ちメッセージ音声を発生させる。
右打ち報知演出が行われる場合、この右打ち報知情報管理処理において、演出制御コマンドとして、右打ち報知演出の実行指示する「右打ち指示コマンド」が演出制御部51に送信され、このコマンドを受けて、演出制御部51が、画像や音声による右打ち報知の実行制御を行う。
ステップS62では、主制御CPU100は、LED管理処理を行う。このLED管理処理は、図柄表示部33に対して普通図柄表示や第1,第2特別図柄表示のための表示データを出力する処理である。この処理により、普通図柄や特別図柄の変動表示および停止表示が行われる。なお、ステップS57の普通図柄管理処理で作成された普通図柄の表示データや、ステップS59の特別図柄管理処理中の特別図柄表示データ更新処理で作成される特別図柄の表示データは、このLED管理処理で出力される。
【0081】
ステップS63では、主制御CPU100は、外部端子管理処理を行う。この外部端子管理処理では、枠用外部端子基板57を通して、パチンコ遊技機1の動作状態情報をホールコンピュータや島ランプなどの外部装置に対して出力する。動作状態情報としては、大当り遊技が発生した旨(条件装置が作動した旨)、小当り遊技が発生した旨、図柄変動表示が実行された旨(特別図柄変動表示ゲームの開始または終了した旨)、入賞情報(始動口や大入賞口に入賞した旨や賞球数情報)などの情報が含まれる。
ステップS64では、主制御CPU100は、ソレノイド管理処理を行う。このソレノイド管理処理では、ステップS58の普通電動役物管理処理で作成されたソレノイド制御データに基づく普通電動役物ソレノイド77に対する励磁信号の出力処理や、ステップS60の特別電動役物管理処理で作成されたソレノイド制御データに基づく第1,第2大入賞口ソレノイド78,79に対する励磁信号の出力処理を行う。これにより、可動翼片42bや開放扉45b、46bが所定のパターンで動作し、下始動口42aや大入賞口45a、46bが開閉される。
【0082】
主制御CPU100は、以上のステップS51〜ステップS64の処理を終えた後、退避していたレジスタの内容を復帰させて、ステップS65で割込み許可状態に設定する。これにより、タイマ割込処理を終了して、割込み前の
図6の主制御側メイン処理に戻り、次のタイマ割込みが発生するまで主制御メイン処理を行う。
【0083】
<4.演出制御部の処理>
[4−1:メイン処理]
続いて演出制御部51の処理について説明する。演出制御部51の処理としては、主に、メインループ上で16ms毎に行われる処理(以下「16ms処理」ともいう)と、1ms毎に行われる割り込み処理(以下「1msタイマ割込処理」ともいう)がある。
まずここでは16ms処理を含むメイン処理について説明する。
図8は、演出制御部51のメイン処理を示している。演出制御部51(演出制御CPU200)は、遊技機本体に対して電源が投入されると、
図8のメイン処理を開始する。
このメイン処理において、演出制御CPU200は、まずステップS101で、遊技動作開始前における必要な初期設定処理を行う。例えば初期設定処理として、コマンド受信割込み設定、可動体役物の起点復帰処理、CTCの初期設定、タイマ割込みの許可、マイクロコンピュータの各部を含めてCPU内部のレジスタ値の初期設定などを行う。
【0084】
ステップ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処理のタイミングになっていることを意味する。
【0085】
演出制御CPU200は、割込みカウンタの値が「15」以下であるときは、ステップS104からS117に進み、演出用ソフト乱数の更新処理を行って1回のメイン処理を終え、再びステップS102からの処理を行う。
一方、割込みカウンタの値が「16」以上である場合は、演出制御CPU200はステップS105〜S116の処理を実行し、その後、ステップS117で演出用ソフト乱数の更新処理を行って1回のメイン処理を終え、再びステップS102からの処理を行うことになる。
【0086】
このように割込みカウンタでカウントされる16ms毎に、演出制御CPU200はステップS105からの16ms処理を行う。
その場合、まずステップS105では、割込みカウンタをゼロリセットする。以後、再び次の16ms処理までのカウントを行うためである。
次にステップS106で演出制御CPU200は、エラー処理を行う。このエラー処理としては、RAMクリアエラー中、役物エラー中、右打ちエラー中などにおけるエラー処理タイマの処理、各種エラーが発生した際のエラー報知のためのシナリオ登録処理、エラー報知後のエラーシナリオのクリア処理などを行うこととなる。
次にステップS107では、演出制御CPU200はデモ処理を行う。このデモ処理では、再生音の制御、デモムービー実行や役物原点補正のシナリオ登録や、そのコマンドセットなどの処理を行う。客待ち状態などでは、このデモ処理で設定されたシナリオが実行されることでデモムービー表示が実行される。
【0087】
ステップS108では、演出制御CPU200はコマンド解析処理を行う。このコマンド解析処理では、演出制御CPU200が、主制御部50から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。そして読み出した演出制御コマンドに対応した演出制御処理を行う。詳しくは
図10,
図11で後述する。
ステップS109では、演出制御CPU200は入力検知処理を行う。この入力検知処理では、操作部60の操作子(
演出スイッチ11、演出ボタン12、十字キー13)の操作による入力の検知を行い、入力を検知した場合、その操作に応じた処理を行う。
ステップS110では、演出制御CPU200はシナリオ更新処理を行う。この処理ではメインシナリオの更新、サブシナリオの更新が行われる。その際には装飾ランプ部64,65の点灯パターン登録、再生する音の登録、可動体役物の駆動のためのモータ動作の登録なども行われる。詳しくは
図14,
図15を用いて後述する。
ステップS111では、演出制御CPU200は音再生処理を行う。演出制御CPU200は、シナリオデータに基づいてワークに音チャネルとして登録されている音データに基づいて、フレーズ番号やボリューム等のデータを音源ICに出力する。これによってスピーカ部59からの効果音、音楽・音声等の再生出力が行われる。
ステップS112では、演出制御CPU200は役物エラー処理を行う。ここでは可動体役物の原点復帰がなされていないなどの位置エラー判定などを行う。
【0088】
ステップS113では演出制御CPU200は、LED駆動データ更新を行う。ここでは、シナリオデータに基づいてワークにランプチャネルとして登録されているランプデータに基づいて、LED出力データ(駆動データ)を作成する処理が行われる。詳しくは
図20を用いて後述する。LED出力データは、1msタイマ割込処理において所定のタイミングで各LEDドライバ90に対して出力される。
ステップS114では、演出制御CPU200は、演出制御RAM202のワーク領域を対象としてチェックサム算出及びその保存を行い、またステップS115では、バックアップデータの保存を行う。
さらにステップS116ではシナリオ更新カウンタをゼロリセットする。シナリオ更新カウンタは後述の1msタイマ割込処理でインクリメントされるカウンタである。
以上のような16ms処理が、
図8のメインループ処理において16ms経過毎に行われる。
【0089】
[4−2:1msタイマ割込処理]
次に
図9により1msタイマ割込処理を説明する。演出制御CPU200は、タイムカウントにより1ms毎に発生する割込要求に応じて、
図9の1msタイマ割込処理を実行する。
この1msタイマ割込処理においては、まずステップS201では主制御CPU100からのテストコマンドに応じたチェックサム算出中であるか否かを判断する。チェックサム算出中でなければ、演出制御CPU200はステップS202の入力処理に進む。
【0090】
ステップS202の入力処理とは、上述の
図8のステップS109の入力検知処理とともに操作子の操作による入力検知を行うための1ms毎の処理である。例えばこの入力処理では、操作子の操作検出信号について、信号波形にエッジが検出されたら入力カウンタをリセットし、その後、エッジが発生しない期間、入力カウンタをカウントアップしていく処理を行う。1msタイマ割込処理において、入力情報(入力信号波形のHまたはL)が検知され、またエッジ有無により、入力カウンタのリセット又はインクリメントが行われる。そしてメインループ処理(16ms処理)におけるステップS109で、入力カウンタの値が16以上となっており、前回とは入力情報が変化している場合に、入力変化を認識するようにしている。
このような入力処理(S202)及び入力検知処理(S109)により、ノイズ・チャタリングによる入力誤認識の防止がはかられる。また、入力カウンタを用いており、本実施の形態では例えば16ビットカウンタを用いて65535ms(約65秒)までなどをカウントできるようにしているため、いわゆる長押しの検出も可能となる。
【0091】
ステップ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)に対して出力することになる。
【0092】
ステップ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個に対して行われる。
【0093】
ステップS206では、演出制御CPU200は、液晶制御基板52に対する演出制御コマンドの出力を行う。例えば1回の1msタイマ割込処理において、1コマンド(2バイト)の送信を行う。つまりモード及びイベントとしての2バイトの演出制御コマンドが送信される。
その後、演出制御CPU200はステップS207で割込みカウンタのインクリメントを行い、またステップS208でシナリオ更新カウンタのインクリメントを行う。そしてシナリオ更新カウンタの値が100未満であれば、1msタイマ割込処理を終える。
なお、シナリオ更新カウンタは上述のように16ms処理のステップS116でゼロリセットされるため、通常はシナリオ更新カウンタの値が100以上となることはない。100以上となるのは、演算異常、処理応答異常などにより16ms処理が実行されない場合や、16ms処理内の或る処理の進行が停止しているような場合である。このような場合は、無限ループに入り、WDTによってタイムアップ処理が行われるのを待つことになる。
【0094】
1msタイマ割込処理に入った際に、ステップS201でチェックサム算出中と判断された場合は、演出制御CPU200は処理をステップS210に進め、WDTをクリアする。そしてステップS211で液晶制御基板52に対する演出制御コマンドの送信出力を行う。そしてステップS212で割込みカウンタをインクリメントして1msタイマ割込処理を終える。
【0095】
[4−3:コマンド解析処理]
続いて、16ms処理として
図8のステップS108で行われるコマンド解析処理について、
図10、
図11で説明する。演出制御CPU200は、ステップS108のコマンド解析処理として、主制御部50から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。この具体的な処理として、
図10のステップS301〜F308の処理を行う。
【0096】
演出制御部51には、主制御部50から送信されてきた演出制御コマンドを取り込むコマンド受信バッファが、例えば演出制御RAM202に用意される。演出制御CPU200は、まず
図10のステップS301で、コマンド受信バッファの読み出しアドレスを示すリードポインタと、書き込みアドレスを示すライトポインタの確認を行う。
ライトポインタは、コマンド受信に応じて更新され、それに応じてライトポインタで示されるアドレスに、受信した演出制御コマンドが格納されていく。リードポインタは、コマンド受信バッファからの読み出しを行った際に更新(ステップS302)される。従って、もしリードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されているということになる。そこでリードポインタ=ライトポインタでなければステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。この場合、次の読み出し(ロード)のためにリードポインタをインクリメントしておく。
【0097】
上述したように1つの演出制御コマンドは、モードとしての1バイトとイベントとしての1バイトの2バイトで形成されている。演出制御CPU200はステップS303で、ロードした1バイトのコマンドデータが、モードであるかイベントであるかを確認する。この確認は、8ビット(Bit0〜Bit7)のうちのBit7の値により行われる。
そしてモードであれば、コマンドの上位データ受信の処理として、ステップS304に進み、読み出したコマンドデータを、レジスタ「コマンドHIバイト」にセーブする。また「コマンドLOバイト」のレジスタをクリアする。そしてステップS301に戻る。
続いても、リードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されていることになるため、ステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。またリードポインタをインクリメントする。
そして読み出したコマンドがイベントであれば、コマンドの下位データ受信の処理として、ステップS303からS305に進み、読み出したコマンドデータを、レジスタ「コマンドLOバイト」にセーブする。
【0098】
モード及びイベントのコマンドデータが、レジスタ「コマンドHIバイト」「コマンドLOバイト」にセーブされることで、演出制御CPU200は1つのコマンドを取り込んだことになる。
そこで演出制御CPU200はステップS306で、取り込んだコマンドに応じた処理を行う。具体例は
図11で後述する。
【0099】
リードポインタ=ライトポインタとなるのは、演出制御CPU200がまだ取り込んでいない演出制御コマンドがコマンド受信バッファには存在しない場合である。そこで、新たな取り込みは不要であるため、ステップS307に進む。この場合、図柄コマンド待ちの状態で100ms経過したか否かを確認する。そのような事態となっていなければ、
図10のコマンド解析処理を終える。一方、図柄コマンド待ちの状態で100ms経過していたのであれば、ステップS308でコマンド欠落における図柄変動の処理を行うこととなる。
【0100】
上記のステップS306におけるコマンド対応処理の例を
図11で説明する。
図11Aは、コマンド対応処理としての基本処理を示している。2バイトの演出制御コマンドの受信に応じて、演出制御CPU200はまず
図11AのステップS321で、現在テストモード中であるか否かを確認する。テストモード中であれば、ステップS322ですべての演出シナリオのクリア、音出力の停止、装飾ランプ部63,64におけるLEDの消灯を行う。そしてステップS323でテストモードを終了する。
テストモード中でなければ、これらの処理は行わない。
そして演出制御CPU200は、ステップS330として、取り込んだ演出制御コマンドについての処理を行うことになる。
【0101】
演出制御コマンドとしては、例えば特別図柄変動パターン指定コマンド、特別図柄指定コマンド、保留球減算コマンド、保留球加算コマンド、エラー表示指定コマンド、大当たり開始指定コマンド・・・など多様に設定されている。ステップS330では、演出制御CPU200は、受信したコマンドに対応して、プログラムで規定された処理を行う。ここでは
図11B、
図11C、
図11D、
図11Eで、4つの演出制御コマンドを挙げて、具体的処理を例示する。
【0102】
図11Bは、ステップS330でのコマンド処理として、変動パターンコマンドを取り込んだ場合の処理S330aを示している。
この場合、演出制御CPU200は、ステップS331で、図柄コマンド待ち状態をセットする処理を行う。これは変動パターンコマンドと、図柄コマンドが順次受信されることで、演出制御CPU200が図柄の変動表示の制御を行うためである。
図11Cは、ステップS330でのコマンド処理として、図柄コマンドを取り込んだ場合の処理S330bを示している。
この場合、演出制御CPU200は、まずステップS332で、変動パターンコマンド受信済みであるか否かを確認する。受信していなければそのまま処理を終える。
図柄コマンドを受信した際に、既に変動パターンコマンド受信済みであれば、ステップS333に進み、まず役物原点補正の動作についてのシナリオ登録を行う。そしてステップS334で、変動開始処理を行う。その後、変動開始に応じてステップS335で変動パターンコマンドの削除を行う。
【0103】
図11Dは、ステップS330でのコマンド処理として、電源投入コマンドを取り込んだ場合の処理S330cを示している。
この場合、演出制御CPU200は、ステップS337で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS338でエラー解除コマンドの送信、ステップS339で役物エラー情報のクリア、ステップS340で役物動作の停止、ステップS341で電源投入のシナリオ登録、ステップS342で液晶制御基板52へ送信する電源投入コマンドのセットを順次行う。
【0104】
図11Eは、ステップS330でのコマンド処理として、RAMクリアコマンドを取り込んだ場合の処理S330dを示している。
この場合、演出制御CPU200は、ステップS343で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS344でエラー解除コマンドの送信、ステップS345でRAMクリアエラーセットと、エラー報知タイマのセットを行う。さらにステップS346で演出制御RAM202における抽選処理に関する情報のクリア、ステップS347で、シナリオに関する情報のクリアを行う。そしてステップS348で液晶制御基板52へ送信する電源初期投入表示(RAMクリア)コマンドのセットを行う。
【0105】
[4−4:シナリオ登録・削除処理]
次にシナリオ登録・削除処理について説明する。シナリオとは演出制御やエラー処理その他、各種の実行すべき動作を規定したデータである。実行すべきシナリオのデータは、シナリオ登録情報として演出制御RAM202のワーク領域に登録される。
図16Aに示すシナリオ登録情報の構造については後述するが、シナリオ登録情報としては、0〜63までの64個のシナリオチャネルが用意されている。この64個のシナリオチャネルに登録されたシナリオは同時に実行可能とされる。以下、シナリオチャネルを「sCH」で示す。
シナリオ登録処理とは、シナリオ登録情報における任意のシナリオチャネルに、登録を要求されたシナリオ番号のシナリオを登録する処理である。原則的には、sCH0〜sCH63のシナリオチャネルは、どのチャネルが用いられても良い。
【0106】
以下説明するシナリオ登録は、例えばステップS106のエラー処理、ステップS107のデモ処理、ステップS108のコマンド解析処理などの処理過程において、必要時に呼び出され、実行される。例えば先に述べた
図11CのステップS333、
図11DのステップS341などが、シナリオ登録が実行される場合の一例となる。
【0107】
図12の処理として、演出制御CPU200は、コマンド或いはプログラム上で指定されるシナリオに対応したシナリオ番号と待機時間(delay)の値を、ワーク(シナリオ登録情報)に登録する処理を行う。
ステップS401で演出制御CPU200は、まず今回登録すべきシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、何もせずに処理を終える。
【0108】
シナリオ番号が適正であれば、演出制御CPU200はステップS402で変数Bをゼロに設定する。変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、空きチャネルを順次探索するために使用する変数である。さらに変数Bは、まだ探索(空きチャネルであるか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0109】
演出制御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に戻る。
【0110】
このステップS403〜S407の処理によれば、前回登録したシナリオチャネルの次のシナリオチャネルから、順次シナリオチャネルが空きか否かが確認されることになる。
つまり、ステップS404での変数Bのインクリメントにより、ステップS403が行われるたびに確認されるシナリオチャネルsCHが、順次1つずつ進行することとなる。
また、変数BはステップS402でゼロリセットされてからステップS404でインクリメントされるものであるため、ステップS405でB<64とはならない場合(つまり変数Bが64に達した場合)は、既にステップS403の処理が64回行われた場合である。これは全シナリオチャネルsCH0〜sCH63を調べたが、空きがなかったと判断された場合である。そのため登録不可能として
図12の処理を終えることとなる。
【0111】
また、「追加ポインタ」の値は、前回登録したシナリオチャネルの次のシナリオチャネルを示す値であるため、まだ全シナリオチャネルの空き確認を行っていないB<64の時点でも、「追加ポインタ」+Bの値(つまり次に確認しようとするシナリオチャネルsCHの番号)が「64」以上となることがある。具体的には、直前のステップS403の時点で「追加ポインタ」+Bの値が63であり、シナリオチャネルsCH63について確認した後、ステップS404で変数Bがインクリメントされた場合である。このままでは、次に存在しないシナリオチャネルsCH64を指定することとなる。
そこでステップS406でこの点を確認し、「追加ポインタ」+Bの値が「64」となっていたら、ステップS407では、次に確認するシナリオチャネルを「sCH0」に戻すために、追加ポインタの補正を行う。つまり追加ポインタの値を−64することで、「追加ポインタ」+Bの値が「0」となるようにする。これにより次のステップS403では、シナリオチャネルsCH0が空きであるか否か確認されるようにする。
【0112】
ある時点のステップS403の処理で、空きのシナリオチャネルが発見されたら、演出制御CPU200はステップS408に進み、その空きのシナリオチャネルに、シナリオ番号、及び待機時間(delay)をセットする。またその他のシナリオ管理に必要なデータをゼロクリアする。
そしてステップS409で、追加ポインタを、登録を行ったシナリオチャネル+1の値に更新する。つまり今回登録を行ったシナリオチャネルの次のシナリオチャネルの値を、追加ポインタとして記憶しておき、次回の登録処理に使用できるようにする。なお、本実施の形態ではシナリオチャネルはsCH0〜sCH63の64チャネルのため追加ポインタの最大値は63となる。
【0113】
この
図12の処理によれば、シナリオ登録の際に、前回登録を行ったシナリオチャネルの次のシナリオチャネルから、空きチャネルが探索される。追加ポインタの初期値は「0」であり、その後、登録に応じてステップS407で更新されていくが、この処理によれば、多くの場合、シナリオチャネルsCH0から順に使用されてシナリオ登録が行われる。そして、シナリオ登録の際には、前回の登録チャネルの次のシナリオチャネルから空きの確認が行われる。従って、殆どの場合、素早く空きチャネルが発見でき、シナリオ登録処理を効率的に実行することができる。これにより演出制御CPU200の処理負担は軽減される。
【0114】
なお、処理の変形例として、ステップS407で更新する追加ポインタの値は、登録を行ったシナリオチャネルの番号としておき、ステップS402では変数Bに1を代入してもよい。但しその場合、ステップS405ではB≦65であるか否かの判断を行うようにする。
【0115】
次にシナリオ削除処理について説明する。これはワークの或るシナリオチャネルに登録されているシナリオを削除する処理である。
図13Aは、或るシナリオをシナリオ登録情報から削除する場合の演出制御CPU200の処理を示している。
演出制御CPU200は、コマンド或いはプログラムグラム上で指定される、削除するシナリオ番号(後述のメインシナリオ番号(mcNo))の値に基づいて、
図13Aの処理を開始する。まずステップS421で演出制御CPU200は、削除要求にかかるシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、削除せずに処理を終える。
【0116】
シナリオ番号が適正であれば、演出制御CPU200はステップS422で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象のシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0117】
演出制御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の全てを探索したが、削除対象のシナリオが登録されていなかったということになるため、処理を終える。
【0118】
図13Bは、或る範囲のシナリオを削除する処理を示している。削除シナリオが範囲で指定された場合に、この処理が行われる。
演出制御CPU200は、コマンド或いはプログラム上で、或るシナリオ番号の範囲で削除指定された場合、まずステップS431で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象範囲に該当するシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象範囲に該当するシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0119】
演出制御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又は複数のシナリオについて、ワーク(シナリオ登録情報)からの削除が行われる。
【0120】
図13Cは登録されているシナリオを全て削除する処理を示している。例えばシステム上の都合により、やむを得ずシナリオを削除する際に呼び出される処理である。なお、保護対象とされたシナリオは削除しないようにする。
演出制御CPU200は、シナリオ全削除が要求された場合、まずステップS441で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、保護対象のシナリオを登録したシナリオチャネルを確認するために使用する変数となる。さらに変数Bは、まだ確認(保護対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
【0121】
演出制御CPU200は、ステップS442で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが、保護対象のシナリオであるか否かを確認する。そして保護対象のシナリオであれば、削除せず、一方、保護対象のシナリオでなければ、ステップS443で、そのシナリオチャネルsCH(B)に登録されているシナリオを削除する。
そしてステップS444で変数Bをインクリメントし、ステップS445でB<64であればステップS442に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ全削除処理を終える。
以上により、ワークにシナリオ登録情報として登録されているシナリオについて、保護対象のシナリオを除く全シナリオの削除が行われる。
【0122】
[4−5:シナリオ更新処理]
続いてメイン処理の16ms処理のステップS110で行われるシナリオ更新処理について説明する。シナリオ更新処理では
図14、
図15で説明するようにメインシナリオとサブシナリオの更新が行われる。
【0123】
まずシナリオ登録情報の構造を
図16、
図17で説明する。
図16Aは、メインシナリオ及びサブシナリオとしてのシナリオ登録情報の構造を示している。このシナリオ登録情報は演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、先にも述べたようにシナリオ登録情報は、シナリオチャネルsCH0〜sCH63の64個のチャネルを有するものとされる。各シナリオチャネルsCHに登録されたシナリオについては同時に実行可能とされる。
【0124】
図示のように各シナリオチャネルsCHに登録できる情報としては、サブシナリオ更新処理で用いるサブシナリオタイマ(scTm)と前回時間(scPrevTm)、音/モータサブシナリオテーブルの実行ラインを示すサブシナリオ実行ライン(scIx)、ランプサブシナリオテーブルの実行ラインを示すサブシナリオ実行ラインlmp(lmpIx)、シナリオ更新処理に用いるメインシナリオタイマ(msTm)、メインシナリオテーブルの実行ラインを示すメインシナリオ実行ライン(mcIx)、メインシナリオ番号(mcNo)、メインシナリオに付加可能なオプションデータであるメインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)、チェックサム(checkSum)がある。
【0125】
スピーカ部59による音出力、装飾ランプ部63,64による発光、及び可動体役物モータ65による可動体役物の駆動による演出を開始するときには、待機時間(delay)とメインシナリオ番号(scNo)をシナリオチャネルsCH0〜sCH63のうちの空いているシナリオチャネルに登録する。
待機時間(delay)は、シナリオチャネルsCHに登録してからそのシナリオが開始されるまでの時間を示す。なおこの待機時間(delay)は16ms処理毎に1減算される。待機時間(delay)が0の場合に、登録されたデータに対応した処理が実行されることとなる。
【0126】
図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参照)。
【0127】
次に
図16Bでランプデータ登録情報の構造を説明する。ランプデータ登録情報としては、ランプサブシナリオテーブルから選択されたシナリオ、即ち装飾ランプ部63,64による演出動作(点灯パターン)を示す情報が登録される。このランプデータ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、ランプデータ登録情報は、ランプチャネルdwCH0〜dwCH15の16個のチャネルを有するものとされる。各ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。従ってランプチャネルdwCH15に登録されたシナリオ(ランプサブシナリオ)が最も優先的に実行される。また例えばランプチャネルdwCH3、dwCH10にシナリオが登録されていれば、ランプチャネルdwCH10に登録されたシナリオが優先実行される。
なお、ランプチャネルdwCH0は主にBGM(Back Ground Music)に付随するランプ演出、ランプチャネルdwCH15はエラー関係のランプ演出に用いられ、ランプチャネルdwCH1〜dwCH14が通常演出に用いられる。
【0128】
各ランプチャネルdwCHに登録できる情報としては、図示のように、登録した点灯パターンの番号を示す登録点灯ナンバ(lmpNew)、実行する点灯パターンの番号を示す実行点灯ナンバ(lmpNo)、ランプサブシナリオの実行ラインを示すオフセット(offset)、実行時間(time)、チェックサム(checkSum)がある。
【0129】
図19Aにランプサブシナリオテーブルの一部として、ランプサブシナリオ番号1,2,3の例を示している。各番号のランプサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値が記述されるとともに、ランプチャネルと、各種の点灯パターンを示すランプナンバが記述される。また最終行には、ランプシナリオデータ終了コードD_LSENDが記述される。
【0130】
このランプサブシナリオテーブルにおいて、各ラインの時間データ(time)は、そのサブシナリオが開始されてからの、当該ラインが開始される時間を示している。
16ms毎にメインシナリオタイマ(msTm)と、テーブルの時間データを比較して、一致した場合に、そのラインのランプナンバが、
図16Bのランプデータ登録情報に登録される。登録されるランプチャネルdwCHは、当該ラインに示されたチャネルとなる。
例えば、上述の或るシナリオチャネルsCHにおいて、
図18に示したシナリオ番号2が登録され、サブシナリオ番号2が参照されるとする。
図19Aに示したランプサブシナリオ番号2では、1ライン目に時間データ(time)=0としてランプチャネル5(dwCH5)及びランプナンバ5が記述されている。この場合、メインシナリオタイマ(msTm)=0の時点で、まず当該1ライン目の情報が
図16Bのランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=5として登録される。シナリオ登録情報のサブシナリオ実行ラインlmp(lmpIx)の値は、次のラインの値(2ライン目)に更新される。これはランプチャネルdwCH5という比較的低い優先度で、点灯ナンバ5の点灯パターン動作の実行を行うための登録となる。
2ライン目については、500×16msとなった時点で同様の処理が行われる。即ちランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=6(つまり点灯ナンバ6の点灯パターンの指示)が登録される。
なお、時間データ(time)が連続する2ラインで同一の値であったら、その各ラインについての処理は同時に開始されることとなる。
後述するLED駆動データ更新処理では、このように更新されるランプデータ登録情報に基づいて、LED駆動データが作成される。
【0131】
次に
図16Cでモータデータ登録情報の構造を説明する。モータデータ登録情報としては、音/モータサブシナリオテーブルから選択されたシナリオを示す情報が登録される。このモータデータ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、モータデータ登録情報は、モータチャネルmCH0〜mCH7の8個のチャネルを有するものとされる。
各モータチャネルmCHに登録できる情報としては、図示のように、実行動作ナンバ(no)、登録動作ナンバ(noNew)、動作カウント(lcnt)、励磁カウンタ(tcnt)、実行ステップ(step)、動作ライン(offset)、親(移行元)/子(移行先)の属性(attribute)、親ナンバ(retNo)、戻りアドレス(retAddr)、ループ開始ポイント(roopAddr)、ループ回数(roopCnt)、エラーカウンタ(errCnt)、現在の入力情報(currentSw)、ソフト上のスイッチ情報(softSw)、ソフト上のカウント(softCnt)がある。
【0132】
また
図17は、音データ登録情報を示している。音データ登録情報としては、音/モータサブシナリオテーブルから選択されたシナリオを示す情報が登録される。この音データ登録情報も演出制御RAM202のワークエリアを用いて設定される。
本実施の形態では、音データ登録情報は、音チャネルaCH0〜aCH15の16個のチャネルを有するものとされる。
各音チャネルaCHに登録できる情報としては、図示のように、ボリューム遷移量(frzVq)、ボリューム(frzVl)、遷移量変化(rsv2)、ボリューム変化(rsv1)、フレーズ変化(rsv0)、ステレオ(frzSt)、ループ(frzLp)、フレーズ番号hi(frzHi)、フレーズ番号low(frzLo)がある。
【0133】
図19Bに音/モータサブシナリオテーブルの一部として、音/モータサブシナリオ番号1,2の例を示している。各番号の音/モータサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値(ms)が記述されるとともに、BGM、予告音、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションの情報が記述される。また最終行には、シナリオデータ終了コードD_SEENDが記述される。
この音/モータサブシナリオテーブルに関しては、サブシナリオタイマ(scTm)が0になったら(なお最初は0である)、この音/モータサブシナリオテーブルの時間データ(time)の値をサブシナリオタイマ(scTm)にセットする。なお、各ラインの時間データ(time)は、当該ラインが終了するタイミングを示している。サブシナリオタイマ(scTm)には、絶対時間を記述するが、従って、セットする時間データ値は、(当該ラインの時間データ)−(前回ラインの時間データ)の値である。
当該ラインのBGMのデータは、BGMのフレーズ番号やボリューム値等の音データ登録情報に登録する情報で構成され、音データ登録情報における音チャネルaCH0(ステレオの場合は加えてaCH1)にセットされる。
当該ラインの予告音のデータは、予告音のフレーズ番号やボリューム値等の音データ登録情報に登録する情報で構成され、音チャネルaCH2〜aCH14の空いているところにセットされる。
当該ラインのエラー音のデータは、エラー音のフレーズ番号やボリューム値等の音データ登録情報に登録する情報で構成され、音チャネルaCH15にセットされる。
音コントロールのデータは、下位6バイトでチャネル情報、上位2バイトでコントロール情報とされている。
モータのデータは、モータ1個につき1バイトでモータの動作パターン番号を示すように構成されている。モータ番号に対応するモータチャネルに動作パターン番号がセットされる。
【0134】
図9のステップS203として説明したモータ動作更新処理では、
図14,
図15のシナリオ更新処理で更新されるモータデータ登録情報に基づいて、モータ駆動データが作成される。
また
図8のステップS111の音再生処理では、
図14,
図15のシナリオ更新処理で更新される音データ登録情報に基づいて、再生出力が行われる。
【0135】
以上の各情報を用いたシナリオ更新処理について、
図14、
図15で説明する。
図8の16ms処理のステップS110として実行される
図14のシナリオ更新処理では、演出制御CPU200はループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて、ステップS601〜S616の処理を行う。当該ループ処理の各回の処理対象のシナリオチャネルを「sCHn」として説明する。
【0136】
演出制御CPU200は、ステップS601でシナリオチャネルsCHnの待機時間(delay)を確認する。待機時間(delay)=0でなければステップS602で待機時間(delay)の値を−1(デクリメント)する。そしてステップS615でシナリオチャネルsCHn関連のデータのチェックサムを算出し、保存する。またステップS616でシナリオチャネルsCHn関連のデータをバックアップ保存する。これでシナリオチャネルsCHnについての1回の処理を終える。
【0137】
一方、ステップS601で待機時間(delay)=0であることが確認された場合は、演出制御CPU200はステップS603に進み、シナリオチャネルsCHnに登録されているメインシナリオ番号(mcNo)と、メインシナリオ実行ライン(mcIx)に対応するメインシナリオテーブルのアドレスを特定する。
ステップS604では、当該特定したアドレスで示される、メインシナリオテーブルの或るメインシナリオ番号の実行ラインが、終了コードD_SEEND(
図18参照)が記述されている最終ラインであるか否かを確認する。
終了コードが記述された最終ラインで合った場合は、当該シナリオチャネルsCHnに登録されたシナリオで実行すべき処理は終了したことになるため、ステップS617で、そのシナリオチャネルsCHnに登録されているシナリオをシナリオ登録情報(ワーク)から削除する。
なお、この場合のシナリオ登録の削除は、シナリオ終了に応じた通常の削除である。先に
図13で説明したシナリオ削除は、この通常削除以外の、例えば未終了のシナリオをシナリオ登録情報(ワーク)から削除する処理であることを付言しておく。
【0138】
ステップS604で、メインシナリオテーブルの当該ラインが終了コードではない場合は、演出制御CPU200はステップS605に進み、まず当該シナリオチャネルsCHnのメインシナリオオプション(mcOpt)に、当該ラインのオプション(OPT)をセットする。次にステップS606で、シナリオ番号が0であるか否かを確認し、0でなければステップS607で、ユーザオプション(userFn)に0を代入する。
そしてステップS608で当該シナリオチャネルsCHnで指定されるサブシナリオの更新を行う。サブシナリオの更新については
図15で後述する。
【0139】
ステップS609では、演出制御CPU200はメインシナリオタイマ(msTm)を+1(インクリメント)する。そしてステップS610では、メインシナリオタイマ(msTm)の値と、メインシナリオテーブルの該当ラインの時間データ(
図18参照:msTmで記述)を比較する。先に述べたように、メインシナリオテーブルの各ラインの時間データは、そのラインの終了タイミングを規定する。従ってメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上であれば、そのラインの処理は終了し、次のラインを対象とする。その場合ステップS610からS611に進み、シナリオチャネルsCHnのメインシナリオ実行ライン(mcIx)を+1する。つまり次回は、次のラインが対象となるようにする。
またその場合、ステップS612で次のラインがループ指定であるか否かを確認する。
図18のメインシナリオテーブルにおいてシナリオ番号1では、最終ラインがシナリオデータループコードD_SELOPとされている例を示したが、このようにループ指定されていた場合は、ステップS613で、メインシナリオ実行ライン(mcIx)にループ行をセットする。
【0140】
演出制御CPU200は、ステップS614では、1つのラインの終了に応じたクリア処理を行う。即ちメインシナリオタイマ(msTm)、サブシナリオタイマ(scTm)、前回時間(scPrevTm)、サブシナリオ実行ライン(scIx)、サブシナリオ実行ラインlmp(lmpIx)、メインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)をクリアする。
そしてステップS615のチェックサム処理,ステップS616のバックアップ処理を行ってシナリオチャネルsCHnについての1回の処理を終える。
シナリオ更新処理としては、ループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて以上の処理が実行されることになる。
【0141】
ステップS608で行われるサブシナリオ更新処理を
図15Aに詳細に示す。
メインシナリオタイマ(msTm)、シナリオチャネルsCHnと、メインシナリオテーブルに記述されたサブシナリオ番号(scNo)に基づいて、
図15Aのサブシナリオの更新処理が行われる。
【0142】
まずステップS621で演出制御CPU200は、シナリオチャネルsCHnが0〜63のいずれかを示しているか否か、つまり適正値であるか否かを確認する。シナリオチャネルsCHnが64以上であれば、更新処理不能として
図15の処理を終える。
シナリオチャネルsCHnが適正値であれば、演出制御CPU200はステップS622で、サブシナリオ番号(scNo)とサブシナリオ実行ラインlmp(lmpIx)に対応するランプサブシナリオテーブル(
図19A参照)のアドレスを特定する。
【0143】
演出制御CPU200はステップS623では、ランプデータ登録情報の更新のため、まずランプチャネルdwCHに0をセットする。つまりまずランプチャネルdwCH0を指定した状態とする。
そしてステップS624で、メインシナリオタイマ(msTm)とランプサブシナリオテーブルの時間データ(time)を比較する。ランプサブシナリオテーブルの時間データ(time)は、当該ライン(サブシナリオ実行ラインlmp(lmpIx)で示されるライン)が開始される時間(ms)を示している。従って、メインシナリオタイマの時間(実際にはmsTm×16msの時間)が、時間データ(time)以上となっていたら、そのラインについての処理を行う。その場合、ステップS625でランプチャネルdwCHの値が正常(dwCH0〜dwCH15の範囲内)であるか否かを確認する。異常な値であれば処理を終える。正常な値であればステップS626で、現在のラインが、ランプシナリオデータ終了コードD_LSENDが記述されたラインであるか否かを確認する。
【0144】
ランプシナリオデータ終了コード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でランプチャネルdwCHの値を+1してステップS624に戻る。
【0145】
ステップS624で、メインシナリオタイマの時間が、サブシナリオ実行ラインlmp(lmpIx)で示されるラインの時間データ(time)に達していない場合、及びステップS626でランプシナリオデータ終了コードD_LSENDが確認された場合は、演出制御CPU200の処理はステップS631へ進む。
ステップS631ではサブシナリオタイマ(scTm)が0であるか否かを確認する。0でなければ、音及びモータの登録を行わずにステップS639へ進む。この場合ステップS640でサブシナリオタイマ(scTm)の値をデクリメントして、この
図15Aの処理を終えることとなる。
【0146】
ステップS631の時点でサブシナリオタイマ(scTm)=0であれば、演出制御CPU200は処理をステップS632に進め、メインシナリオテーブルに記述されているサブシナリオ番号と、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(scIx)に対応する音/モータサブシナリオテーブルのアドレスを特定する。
そしてステップS633では演出制御CPU200は、該当する音/モータサブシナリオ番号のテーブルの、サブシナリオ実行ライン(scIx)で示されるラインが、シナリオデータ終了コードD_SEENDが記述された行であるか否かを確認し、シナリオデータ終了コードD_SEENDが記述された行であれば処理を終了する。
シナリオデータ終了コードD_SEENDが記述された行でなければ、演出制御CPU200はステップS634で、サブシナリオタイマ(scTm)に、当該ラインの時間データ(time)から前回時間(scPrevTm)を減算した値を代入する。また前回時間(scPrevTm)には、当該ラインの時間データ(time)を代入する。
【0147】
そして演出制御CPU200はステップS635で音の登録を行い、またステップS636でモータの登録を行う。詳述は避けるが、
図19Bに例示した音/モータサブシナリオテーブルの該当サブシナリオ番号の該当ラインの情報を、
図16Cのモータデータ登録情報の任意のモータチャネル、及び
図17の音データ登録情報の任意の音チャネルに登録する処理を行う。またステップS637でそのラインに記述されたソレノイド/ユーザオプションの情報も、シナリオ登録情報等に登録する。
そしてステップS638で、サブシナリオ実行ライン(scIx)の値として次のラインの値をセットする。そしてステップS639でサブシナリオタイマ(scTm)が0でなければ、ステップS640でサブシナリオタイマ(scTm)をデクリメントして処理を終える。
【0148】
図8のステップS110では、以上の
図14,
図15の処理が行われることとなる。この処理でワーク上のシナリオ登録情報、ランプデータ登録情報、モータデータ登録情報、音データ登録情報が逐次更新され、これに応じて演出制御が行われることで、シナリオに沿った演出動作が実行される。
【0149】
[4−6:LED駆動データ更新処理]
図8のステップS113のLED駆動データ更新処理を説明する。
この処理は、ランプデータ登録情報に登録されている点灯ナンバ(登録点灯ナンバ(lmpNew)、実行点灯ナンバ(lmpNo))に対応するランプデータテーブルを参照して、LED駆動データを作成する処理である。なお上述のように、ランプデータ登録情報の点灯ナンバには、元々はランプサブシナリオテーブルに記述された、点灯パターンを示すランプナンバがセットされる。ランプナンバは点灯パターンを示すナンバと述べたが、具体的には
図24Aで述べるランプデータテーブルのランプデータの番号を示すことになる。
【0150】
図20はLED駆動データ更新処理を示している。
演出制御CPU200はステップS701でそれまで出力データとしていたLED駆動データをクリアする。
そしてループ処理LP2として、ランプデータ登録情報のランプチャネルdwCH0〜dwCH15のそれぞれについて、ステップS702〜S720の処理が行われる。以下、処理対象のランプチャネルを「dwCHn」と表記して説明する。
【0151】
ステップS702では演出制御CPU200は対象のランプチャネルdwCHnにおける実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致しているか否かを確認する。先の
図15BのステップS653のように点灯パターンナンバの登録が行われるため、最初は一致していない。一致していなければ点灯開始として、ステップS703で、実行点灯ナンバ(lmpNo)に登録点灯ナンバ(lmpNew)の値を代入する。またステップS704で、実行ライン(ofset)を0にセットし、また実行時間(time)を0にセットする。
なお実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致していれば、既に過去に以上のステップS703,S704の処理が行われたものであるため、これらの処理は不要である。
【0152】
或るランプチャネルdwCHに登録された情報については、登録後、このLED駆動データ更新処理の機会毎に、その情報が反映されて各LEDドライバ90に出力するLED駆動データが作成されていく。
図22Aは、
図16Bに示したワークのランプデータ登録情報において、ランプチャネルdwCH0、dwCH5、dwCH8に登録が行われている状態を示している。この図の状態は、
図22Bの時点t0の状態の一例である。
即ちランプチャネルdwCH0、dwCH5の情報については、時点t0より以前に、LED出力データに反映されている。ランプチャネルdwCH0については、既に実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致され、また実行ライン(ofset)は3(3ライン目)まで進んでいる。またランプチャネルdwCH5についても、既に実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致され、また実行ライン(ofset)は2(2ライン目)まで進んでいる。時点t0では、ランプチャネルdwCH8は登録直後であり、まだ実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致されていない。この後、上記ステップS703,S704の処理が行われることになる。
【0153】
なお前述したように本実施の形態では、ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。
図22Aに示すように、優先度の高いランプチャネルdwCH15はエラー報知用に使用される。ランプチャネルdwCH12,dwCH13,dwCH14等、優先度が高いランプチャネルは、連続予告や確定予告等、比較的信頼度の高い演出用などに用いられる。また優先度が中程度のランプチャネルは可動体演出用、優先度が比較的低いランプチャネルは、会話予告やステップアップ予告など比較的信頼度の低い演出用に用いられ、さらに優先度が低いランプチャネルは、通常変動、リーチ等に同期したランプ演出に用いられる。
このような優先度の設定のため、
図22Bのように複数のランプチャネルdwCHの動作が重なる場合、優先度の高いランプチャネルの点灯動作が実行される。例えば時点t0からは、ランプチャネルdwCH0、dwCH5に基づく点灯動作が制限され、dwCH8に基づく点灯が行われるようにLED出力データが生成される。優先度の低いランプチャネルの情報を反映させないようにするためには、後述するマスクデータが使用される。
【0154】
続いて
図20のステップS705では、演出制御CPU200は実行点灯ナンバ(lmpNo)の値が正常範囲であるか否かを確認する。正常範囲とは、
図24Aに示すランプデータテーブルのランプデータとして番号が存在する範囲である。
実行点灯ナンバ(lmpNo)が異常であれば、ステップS719に進む。なおランプチャネルdwCHnが登録されていない空きチャネルの場合も、ここでは異常としてステップS719に進む。
【0155】
実行点灯ナンバ(lmpNo)が正常であれば、ステップS706に進む。ステップS706では演出制御CPU200は、ランプチャネルdwCHnに登録された実行点灯ナンバ(lmpNo)、実行ライン(ofset)に対応する、ランプデータテーブルのアドレスを特定する。
またステップS707では、ランプチャネルdwCHnに登録された実行点灯ナンバ(lmpNo)、マスクデータテーブルのアドレスを特定する。
アドレスの特定のためには演出制御CPU200は、
図23のようなランプデータアドレステーブルを参照する。このランプデータアドレステーブルには、各点灯パターン、例えば全体点滅、右側点滅、左側点滅、役物点灯などを実現するためのランプデータ番号のアドレスが示されている。
図23の左端の数字は、
図19Aのランプサブシナリオテーブルで示されるランプナンバであり、例えばランプナンバ2のランプデータのアドレスの欄には、全体点滅の点灯パターンを行うためのランプデータ番号が記憶されたアドレスが記述されている。
また、マスクデータのアドレスの欄には、そのランプデータ番号の点灯パターンを実行する際に必要なマスクデータが記憶されたアドレスが記憶されている。例えば点灯ナンバ5の右側点滅の点灯パターンを行う際には、センターケースマスクが必要になるが、そのセンターケースマスクを行うためのマスクデータのアドレスが記述されている。
【0156】
図24Aにはランプデータテーブルの一部としてランプデータ1,2を示している。
各番号のランプデータにおける各ラインには、タイマ(frame)としての時間データと点灯データが記述されている。タイマ(frame)は各ラインの点灯データによるLED出力データの生成を行う時間を規定する。
点灯データは、各LEDドライバ90に対応して記述されている。先に
図4では、枠ドライバ部61にはn個、盤ドライバ部62にはm個のLEDドライバ90が存在するとしたが、以下では一例として、枠ドライバ部61には4個、盤ドライバ部62には5個の、合計9個のLEDドライバ90が存在すると仮定して説明する。
その場合、ランプデータの各ラインには、
図24Aに示すように、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)のそれぞれに対して設定されて、かつそれらが各ライン毎に設定されることで、時系列的に変化する所定の発光パターンが示されることになる。(図では点灯データは一部のみに例示した。空欄部分は図示を省略したもので、実際には点灯データが記述される)
【0157】
図24Bにはマスクデータテーブルの例として、マスクデータ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はデータ値の図示を省略している)
【0158】
図20のステップS706,S707では、このようなランプデータテーブル、マスクデータテーブルにおいて、処理中のランプチャネルdwCHnに対応するアドレスを特定するものである。
続いてステップS708で演出制御CPU200は、ランプデータテーブルの該当ライン(現在対象のランプチャネルdwCHnの実行ライン(offset)で示されるライン)のタイマ(frame)を取得し、これを変数Dtimeに代入する。
【0159】
ステップS709で演出制御CPU200は、上記ステップS706,S707で特定した該当の点灯データとマスクデータを展開し、LED駆動データを生成していく。この処理については後述するが、現在処理中のランプチャネルdwCHnについての点灯データとマスクデータを、出力するLED駆動データに反映させる処理となる。
【0160】
ステップ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)の値をループ先のアドレスに更新する。
【0161】
ステップS719では演出制御CPU200は、ランプチャネルdwCHnの時点のLED駆動データのチェックサムを算出する。またステップS720でバックアップ用データを保存する。
以上で、1つのランプチャネルdwCHnを対象としたLEDデータ更新を終える。ループ処理LP2として、以上の処理をランプチャネルdwCH0〜dwCH15まで順次行うことになる。
【0162】
各ランプチャネルdwCHnでのLED出力データの更新は、ステップS709で行われるが、これは次のような処理となる。
図25Aは点灯データとマスクデータを展開してLED駆動データを生成する出力データバッファを模式的に示している。
出力データバッファは、ランプデータテーブル及びマスクデータテーブルと同様に、各LEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対応して用意される。図示する1つのマスは、1つのLEDドライバ90に対応し、(4×24)ビットの情報のバッファとなる。
【0163】
このような出力データバッファに対して、ステップS709では、マスクデータをアンド(論理積)で展開し、点灯データをオア(論理和)で展開する処理が行われる。これがループ処理(LP2)により、各ランプチャネルdwCH0〜dwCH15について順次ステップS709で行われる。
例えば
図22で示した時点t0の場合、出力データバッファは、ランプデータ2のマスクデータ(
図23参照:マスクなし)がアンド展開され、ランプデータ2の3ライン目の点灯データがオア展開された状態の後、ランプデータ5のマスクデータ(
図23参照:センターケースマスク)がアンド展開され、ランプデータ5の2ライン目の点灯データがオア展開された状態となっている。
上述の通りマスクデータは0h(=0000)が消灯、Fh(=1111)がマスクなしである。従ってマスクデータをアンドで展開するということは、その時点までの出力データバッファの値について、消灯(マスク)したいビットを「0」とし、マスクしないビットは変更しないということになる。
さらに点灯データをオアで展開するということは、処理中のランプチャネルdwCHの点灯データが、マスク後の出力データバッファに反映させるということになる。
この処理をランプチャネルdwCH0〜dwCH15について順次行うことで、高い番号のランプチャネルほど優先されたLED駆動データが出力データバッファ上に形成されることになる。
【0164】
[4−7:第1の実施の形態のLED出力処理]
上述のようにLEDデータ更新処理で生成されたLED駆動データは、
図9の1msタイマ割込処理のステップS205(但し上述のケース12〜15の場合)で、実際に各LEDドライバ90に出力される。
本実施の形態では、LED駆動データの出力は、1回の1msタイマ割込処理の際に、LEDドライバ90の2,3個に対して行われる。さらに本実施の形態では、演出制御CPU200は、LED駆動データの一送信単位のシリアルデータを、第1系統、第2系統の駆動信号出力手段(枠ドライバ部61と盤ドライバ部62)に対して略同時的に出力する。
例えば
図25Bに示すように、1msタイマ割込処理のステップS205のケース12では、枠ドライバ部61のLEDドライバ90(w1,w2,w3)と、盤ドライバ部62のLEDドライバ90(b1,b2,b3)にLED駆動データの送信を行う。LEDドライバ90のw1とb1、w2とb2、w3とb3に対する送信は同時的に行われる。
またケース
13では、枠ドライバ部61のLEDドライバ90(w4)と、盤ドライバ部62のLEDドライバ90(b4,b5)にLED駆動データの送信を行う。LEDドライバ90のw4とb4に対する送信は同時的に行われる。
【0165】
図26は、LEDドライバ90にLED駆動データを送信する場合のシリアルデータ構造を示している。例えばLEDドライバ90(w1)などの1つのLEDドライバ90に対して送信するシリアルデータ構造である。
例えば
図25Bに示した、各LEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対しては、この
図26の構造のシリアルデータでLED駆動データが送信される。なおこの
図26は、
図4、
図5で説明したシリアルデータDATA及びイネーブル信号ENABLEを示している。
このシリアルデータは、イネーブル信号ENABLEがONとされた期間に、1バイト毎順次送信が行われる。つまり当該構造のシリアルデータは、各1バイトが一送信単位となる。
【0166】
当該シリアルデータDATAは、1バイトのスレーブアドレス、1バイトのデータ設定開始レジスタアドレス(SX)、各1バイトの、アドレス(SX)への書込データ、アドレス(SX+1)への書き込みデータ、・・・アドレス(SX+23)への書き込みデータの合計26バイトで構成される。
このようなシリアルデータDATAは、イネーブル信号ENABLEで規定される期間に、LEDドライバ90に取り込まれる。
【0167】
「スレーブアドレス」は各LEDドライバ90のデバイスIDであり、w1〜w4、又はb1〜b5の別を識別する1バイトコードである。
「データ設定開始レジスタアドレス(SX)」は、LEDドライバ90内のデータ取り込みのためのレジスタの先頭を指定する情報である。例えば
図5のデータバッファ/PWMコントローラ93の内部レジスタの指定情報である。本実施の形態で採用するLEDドライバ90は、シリアルデータ取り込みのために例えばレジスタアドレス00h〜2Chのレジスタ(各8ビット)が用意される。そのうちのレジスタアドレス15h〜2Chの24個のレジスタ(各8ビット)は、24個の出力端子96−1〜96−24に対応した点灯データ(PWM階調指示データ)を入力するレジスタ(階調値設定部)とされている。そのため「データ設定開始レジスタアドレス(SX)」としてはレジスタアドレス15hを指定する。
「アドレス(SX)への書込データ」としては、「データ設定開始レジスタアドレス(SX)」で指定されたレジスタアドレス(本実施の形態では「15h」)のレジスタへの書き込みデータ、即ち出力端子96−1に対応するLED駆動データがセットされる。
「アドレス(SX+1)への書込データ」としては、「データ設定開始レジスタアドレス(SX)」で指定されたレジスタアドレス+1(本実施の形態では「16h」)のレジスタへの書き込みデータ、即ち出力端子96−2に対応するLED駆動データがセットされる。
以下同様であり、「アドレス(SX+23)への書込データ」としては、「データ設定開始レジスタアドレス(SX)」で指定されたレジスタアドレス+23(本実施の形態では「2Ch」)のレジスタへの書き込みデータ、即ち出力端子96−24に対応するLED駆動データがセットされる。
【0168】
なお、これら書き込みデータは8ビット構造であるが、上述のように1つの点灯データは「0h(=0000)」〜「Fh(=1111)」の4ビット構造である。4ビットで16階調の輝度を表す。一方、PWM階調指示データを入力するレジスタアドレス15h〜2Chの各レジスタ(各8ビット)は、8ビットで256階調に対応可能である。
本実施の形態の場合、点灯データは16階調のデータとするため、レジスタアドレス15h〜2Chの各レジスタへの8ビットの書き込みデータとしては、上位4ビットに、点灯データをセットするようにしている。この点については後述する。
また、
図9のステップS205ではケース0〜3でLEDドライバ90の初期化を行うと述べたが、これは具体的には、使用しないレジスタアドレス00h〜14hのレジスタにデフォルト値をセットする送信処理となる。この点についても後述する。
【0169】
図21で、1msタイマ割込処理のステップS205(ケース12,13)で行われるLED駆動データ出力処理を説明する。
演出制御CPU200はステップS801で、スタート値に対応するシリアルデータ出力チャネルch1、ch2のLED駆動データ(
図25Aの出力データバッファ)の先頭アドレスを特定する。
スタート値とは、最初に送信するLEDドライバ90の値である。例えば
図25Bのケース12の場合、スタート値は「1」で、シリアルデータ出力チャネルch1、ch2からそれぞれ、LEDドライバ90(w1)、LEDドライバ90(b1)に対して最初に送信を行うため、ここでは
図25Aの出力データバッファにおいてw1用のLED駆動データが格納された先頭アドレスと、b1用のLED駆動データが格納された先頭アドレスを特定することになる。
またケース13の場合は、スタート値は「4」で、同様の意味で、
図25Aの出力データバッファにおいてw4用のLED駆動データが格納された先頭アドレスと、b4用のLED駆動データが格納された先頭アドレスを特定する。
【0170】
次にステップS802で演出制御CPU200は、スタート値に対応する、シリアルデータ出力チャネルch1、ch2のスレーブアドレスを特定する。ケース12の場合は「w1,b1」を示すアドレスコードであり、ケース13の場合は、「w4,b4」を示すアドレスコードである。
【0171】
そしてループ処理LP3として、ドライバナンバ個数分、ステップS803〜S815の処理をループして実行する。
図25Bの例では、ケース12の場合、ドライバナンバ個数は「3」(つまり1つのシリアルデータ出力チャネルにつき3つのLEDドライバ90に送信を行う)であるため3回ループ処理する。ケース13の場合は、ドライバナンバ個数とは「2」となる(シリアルデータ出力チャネルch2は2つのLEDドライバ90に送信を行うため)。
【0172】
ステップS803では、演出制御CPU200はシリアルデータ出力チャネルch1,ch2におけるイネーブル信号ENABLEをONとする。
そしてステップS804で演出制御CPU200は、シリアルデータ出力チャネルch1,ch2のシリアルデータDATAの出力として、最初の一送信単位(1バイト)のデータ送信、即ちこの場合は
図26のシリアルデータ構造に示した先頭1バイトのスレーブアドレスを送信出力する。シリアルデータ出力チャネルch1,ch2については並行して同時的にデータ送信を行う。
その一送信単位の送信を行ったら、ステップS805,S806で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
【0173】
シリアルデータ出力チャネルch1,ch2についての送信出力完了が確認されたら、演出制御CPU200はステップS807で、次の一送信単位(1バイト)のデータ送信として、データ設定開始レジスタアドレス(SX)(本例の場合15h)を送信出力する。この場合も、シリアルデータ出力チャネルch1,ch2について並行して同時的にデータ送信を行う。
その一送信単位の送信を行ったら、ステップS808,S809で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
【0174】
ステップS808,S809でシリアルデータ出力チャネルch1,ch2についての送信出力完了が確認されたら、演出制御CPU200はステップS810で、一送信単位(1バイト)のデータ送信として、レジスタアドレス(SX=15h)〜(SX+23=2Ch)への書込データ(=LED駆動データ)を送信出力する。
まずはレジスタアドレス(15h)への1バイトのLED駆動データ送信を、シリアルデータ出力チャネルch1,ch2について並行して同時的に行う。そしてステップS811,S812で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
送信完了を確認したら、ステップS813で、合計24バイト、つまりレジスタアドレス15h〜2ChまでのLED駆動データ送信完了が確認されるまで、1バイトずつ、ステップS810の送信を実行していく。従って、次はレジスタアドレス(16h)への1バイトのLED駆動データ送信を、シリアルデータ出力チャネルch1,ch2について行う。さらにその送信確認後、レジスタアドレス(17h)へのLED駆動データ送信が行われる。以降も、送信完了待機→レジスタアドレス(18h)へのLED駆動データ送信→送信完了待機→レジスタアドレス(19h)へのLED駆動データ送信→送信完了待機・・・→レジスタアドレス(2Ch)へのLED駆動データ送信→送信完了待機という処理が行われていく。
【0175】
LED駆動データについて24バイトの送信出力が完了したら、
図26の構造の1つのLEDドライバ90に対するシリアルデータ出力が完了したことになる。そこでステップS814でイネーブル信号ENABLEをオフとし、次にステップS815で対象とするスレーブアドレスを+1する。そしてループ処理の1回を終える。
図27は、以上の1回のループ処理で送信されるデータを示している。シリアルデータ出力チャネルch1,ch2において図示のように並列的にスレーブアドレス、データ設定開始レジスタアドレス、LED駆動データLPDT1,LPDT2・・・LPDT24が順次送信される。
このような送信が行われ、LEDドライバ90にLED駆動データがセットされる。LEDドライバ90側では、各レジスタ(15h〜2Ch)に書き込まれたLED駆動データLPDT1,LPDT2・・・LPDT24に示される発光輝度(0h〜Fhの16階調)基づいて、各出力端子96−1〜96−24からの電流量が制御され、各出力端子96−1〜96−24に接続された各系列のLED120の発光が行われる。
【0176】
ケース12の場合は、続いて2回目のループ処理として、LEDドライバ90(w2)、LEDドライバ90(b2)について、同様にステップS803〜S815の処理が行われる。さらにその後、3回目のループ処理として、LEDドライバ90(w3)、LEDドライバ90(b3)について、同様にステップS803〜S815の処理が行われる。その3回のループ処理で
図21のLED駆動データ出力が完了する。
ケース13の場合は、1回目のループ処理として、LEDドライバ90(w4)、LEDドライバ90(b4)について、ステップS803〜S815の処理が行われる。その後2回目のループ処理では、LEDドライバ90(b5)のみについてステップS803〜S815の処理が行われる。その2回のループ処理で
図21のLED駆動データ出力が完了する。
以上により
図25Bに示したような、9個の各LEDドライバ90へのシリアルデータ出力が実行される。なお、搭載されるLEDドライバ90の数や、1回の1msタイマ割込処理で送信するLEDドライバ90の数などが異なれば、当然ループ回数が異なる場合もある。
また以上の例は2つのシリアルデータ出力チャネルch1,ch2を用いる例で述べているが、3以上のシリアルデータ出力チャネルを利用する場合も、それらが並行して同時的にシリアルデータ送信が行われるようにすれば良い。
【0177】
以上の
図21の処理のように、本実施の形態では、演出制御CPU200は、第1系統(シリアルデータ出力チャネルch1)と第2系統(シリアルデータ出力チャネルch2)の駆動信号出力手段(枠ドライバ部61と盤ドライバ部62)には、一送信単位のシリアルデータを同時的に送信する。そして当該送信の完了後、次の一送信単位のシリアルデータを、第1系統と第2系統の駆動信号出力手段に対して略同時的に送信する。このような処理で、LED駆動データを各LEDドライバ90へ送信していく。
これにより全体のシリアルデータ送信動作に要する時間を短縮でき、もって演出制御CPU200の処理負担を軽減できる。
【0178】
この理由を説明する。
図28は演出制御CPU200がシリアルデータ送信に使用するクロック信号CLK、送信データ、TDRE(送信データエンプティフラグ)、及び送信データの送信データレジスタへの書込タイミングを示している。
送信データとは、上述のスレーブアドレス、データ設定開始レジスタアドレス、LED駆動データLPDT1,LPDT2・・・LPDT24に相当する。ここでは1送信単位としての8ビットをデータd0〜d7として示している。
【0179】
演出制御CPU200は、
図21のステップS804,S807,S810のそれぞれで一送信単位の8ビットデータを送信する場合、各シリアルデータ出力チャネルch1,ch2における送信データレジスタに8ビットの送信データを書き込む。送信データレジスタへ書き込まれた送信データは、クロック信号CLKのタイミング毎に1ビットずつ送信出力される。
ここで、TDREは、送信データレジスタに送信データを書き込むと「0」となり、送信データレジスタに有効なデータが存在していることを示す。そして送信データレジスタのデータが実際に送信出力(送信用シフトレジスタへのロード)されて送信が開始されると「1」になり、送信データレジスタに有効なデータが存在しないことを示す。
従って演出制御CPU200の送信処理としては、TDREが「1」となったことを確認して、8ビットの送信データを送信データレジスタへ書き込み、その次の8ビットの送信データの書き込みは、次にTDREが「1」となるまで待機する。即ち
図28に待機時間TWとして示す期間は、次の送信データの処理ができないことになる。
【0180】
シリアルデータ送信に関し、従来は、1つのシリアルデータ出力チャネルから例えば第1系統の駆動信号出力手段に一送信単位(8ビット)のシリアルデータを送信し、当該送信の完了後、次の送信チャネルから第2系統の駆動信号出力手段に一送信単位(8ビット)のシリアルデータを送信していく、というように送信動作を行っていた。例えば
図21のステップS804〜S806に相当する処理は、従来通常は、
(ST1)ch1からスレーブアドレス出力(送信データレジスタへの書込)
(ST2)送信出力完了待機
(ST3)ch1からデータ設定開始レジスタアドレス出力(送信データレジスタへの書込)
(ST4)送信出力完了待機
(ST5)ch1からLED駆動データLPDT1出力(送信データレジスタへの書込)
(ST6)送信出力完了待機
(ST7)ch1からLED駆動データLPDT2出力
(ST8)送信出力完了待機
・・・中略・・・
(ST51)ch1からLED駆動データLPDT24出力
(ST52)送信出力完了待機
(ST53)ch2からスレーブアドレス出力
(ST54)ch2送信出力完了待機
(ST55)ch2からデータ設定開始レジスタアドレス出力
(ST56)送信出力完了待機
(ST57)ch2からLED駆動データLPDT1出力
(ST58)送信出力完了待機
(ST59)ch2からLED駆動データLPDT2出力
(ST60)送信出力完了待機
・・・中略・・・
(ST103)ch2からLED駆動データLPDT24出力
(ST104)送信出力完了待機
というように行っていた。
この場合、シリアルデータ出力チャネルch1,ch2のそれぞれで一送信単位の送信毎に待ち時間が発生し、送信処理効率が悪い。
これに対して本実施の形態では、
(S804)ch1、ch2からスレーブアドレス出力(送信データレジスタへの書込)
(S805,S806)ch1、ch2送信出力完了待機
というように、同時的に両シリアルデータ出力チャネルch1,ch2での送信処理を行うようにすることで、処理が効率化される。
ステップS807〜S809の処理、及びステップS810〜S812の処理についても同様である。
【0181】
そして、1つのLEDドライバ90に対する送信は1ループ処理において1つの送信チャネル毎に26バイト分(26回の送信データレジスタへの書込)となる。各シリアルデータ出力チャネルch1,ch2について、同時的な処理を実行しなければ、総待機時間は、1回のループ処理期間でほぼ(52×TW)となる。これが本実施の形態の場合、1回のループ処理期間でのほぼ(26×TW)と、著しく短縮できる。
1msタイマ割込処理で行われるLED駆動データ出力処理において、このようにシリアルデータ出力処理が効率化できることで、演出制御CPU200の処理負担は大きく軽減される。
【0182】
また本実施の形態では、シリアルデータ送信されるLED駆動データは、発光輝度(階調)を示すデータとされ、上記のように例えば4ビットで16階調の発光駆動を実現する。このような階調制御を可能とすることで、より多様な演出効果を実現することができる。
本実施の形態では16階調とする例を述べたが、もちろんより多階調としても良い。
【0183】
また本実施の形態のパチンコ遊技機1は、枠部(前枠2、外枠4及びガラス扉5)と、この枠部に取り付けられる遊技盤部(遊技盤3)とを備えている。そして第1系統の駆動信号出力手段(枠ドライバ部61)は、前枠2に設けられた演出手段である装飾ランプ部63(装飾ランプ20w)にLED駆動信号を出力する複数のドライバ回路(LEDドライバ90)で構成され、第2系統の駆動信号出力手段(盤ドライバ部62)は、遊技盤3に設けられた演出手段である装飾ランプ部64(装飾ランプ20b)にLED駆動信号を出力する複数のドライバ回路(LEDドライバ90)で構成されている。
このような構成により、枠ドライバ部61のLEDドライバ90はすべて枠側の装飾ランプ20wに対応し、また盤ドライバ部62のLEDドライバ90はすべて盤側の装飾ランプ20bに対応することとなり、これにより配線の容易化、効率化、演出制御設定の容易性などを実現できる。
【0184】
ところで本実施の形態では、ステップS810では、上述のように4ビット構造とされている点灯データを8ビットに変換したものを一送信単位のシリアルデータとして出力している。
このビット変換について
図29で説明する。
図29Aは1つのLEDドライバ90に送信する4×24ビットの点灯データの例を示している。即ち
図25Aの出力データバッファの1マス分に相当するデータの例である。先頭の「F8h」(図では「h」を省略)は、LEDドライバ90のレジスタアドレス15h、16hに送信すべき点灯データである、つまり「Fh」はLEDドライバ90のレジスタアドレス15hに書き込む、出力端子96−1についての階調値としての点灯データであり、「8h」は、レジスタアドレス16hに書き込む、出力端子96−2についての階調値としての点灯データである。次の「0Fh」は、同様にレジスタアドレス17h、18hに対応する。以下同様で、最後の「00h」は、レジスタアドレス2Bh、2Chに対応する。
【0185】
ここで
図29Aの「F8h」「0Fh」・・・「00h」のように、演出制御CPU200の内部処理単位としての8ビット単位で区切って考えた場合に、上位4ビット(例えば「F8h」のうちの「Fh」)は、奇数レジスタアドレス(例えばレジスタアドレス15h)に対する点灯データで、下位4ビット(例えば「F8h」のうちの「8h」)は偶数レジスタアドレス(例えばレジスタアドレス16h)に対する点灯データとなる。
なお、ここでの「奇数レジスタアドレス」「偶数レジスタアドレス」というのはLEDドライバ90のレジスタ設計に応じた一例である。あくまで送信先を、レジスタアドレス15h〜2Chとした場合として便宜的に述べているにすぎない。
この場合に、奇数レジスタアドレス(15h、17h・・・2Bh)への点灯データについては、演出制御CPU200は、8ビットデータの下位4ビットをマスクして、それをLEDドライバ90に送信する。一方、偶数レジスタアドレス(16h、18h・・・2Ch)への点灯データについては、演出制御CPU200は、8ビットデータの上位4ビットをマスクして、それを4ビットシフトしたものをLEDドライバ90に送信する。つまり結果的に4ビットの点灯データを8ビットに変換して送信する。
【0186】
このビット変換として、「F8h」の場合を
図29B、
図29Cに示した。
図29Bは、点灯データ「Fh」をレジスタアドレス15hに送信する場合の処理を示している。
図25Aの出力データバッファから取り出す点灯データは、各4ビットの2つ点灯データである「F8h」=「11111000」となる。このデータに対し、下位4ビットをマスクする。例えばマスクデータ「F0h」=「11110000」を用いてアンドをとる。これにより、図示のように、レジスタアドレス15hに送信するシリアルデータ「11110000」=「F0h」が得られることになる。この場合、出力端子96−1からは最大階調値(F0h)の駆動電流出力が行われることとなる。
一方、
図29Cは、点灯データ「8h」をレジスタアドレス16hに送信する場合の処理を示している。上記のとおり
図25Aの出力データバッファから取り出した点灯データは「F8h」=「11111000」である。このデータに対し、上位4ビットをマスクする。例えばマスクデータ「0Fh」=「00001111」を用いてアンドをとる。これにより、図示のように「00001000」というデータが得られる。さらにこの場合、当該データを4ビットシフトすることで、レジスタアドレス16hに送信するシリアルデータ「10000000」=「80h」が得られることになる。この場合、出力端子96−1からは中間的な階調値(80h)の駆動電流出力が行われることとなる。
【0187】
以上のように、本実施の形態では、演出制御部51は、例えば演出制御ROM201に第1ビット数(例えば8ビット)より少ないビット数である第2ビット数(例えば4ビット)の発光輝度情報(点灯データ)をランプデータテーブルなどの形式で記憶する。そして演出制御CPU200は、第2ビット数の発光輝度情報を、第1ビット数に変換してLED駆動データを生成し、そのLED駆動データを発光駆動信号出力手段であるLEDドライバ90にシリアルデータとして送信する。
LEDドライバ90のレジスタアドレス15h〜2Chが、8ビットのPWMデータを入力可能とされていることは、8ビットの点灯データとすれば256階調のLED発光制御が可能である。しかしながら、本実施の形態の遊技機の発光演出に用いる装飾ランプ20w、20bに対する制御としては、256階調は必要ではない。具体的には「00h」「10h」「20h」・・・「F0h」の16階調で十分である。
そこで本実施の形態では、点灯データを4ビット構造として、16階調表現を行うようにする。そしてLEDドライバ90への出力時には、4ビットを8ビットに変換して送信する。
【0188】
このようにすることで、演出制御部51は内部ROM(演出制御ROM201)に記憶する点灯データのデータ容量を大幅に削減でき、メモリ容量消費を抑制できることになる。
また、近年の汎用的なLEDドライバは、256階調などの高性能タイプのものの方が生産量が多く、価格的にも有利であることが多い。そのため、例えば16階調が必要な場合に、16階調の制御能力を持つLEDドライバを採用するよりも、256階調のLEDドライバを採用する方が、コストメリットが得られ、又、安定的入手性もよい。これにより製造上及びコスト的なメリットが得られる。
また上述したように、演出制御CPU200は、4ビットの点灯データを8ビットにおける上位4ビットに配置して、8ビットのLED駆動データ(送信するシリアルデータ)を生成する。
このように上位4ビット配置により、16階調のLED駆動データを生成でき、またその処理は例えば
図29B、
図29Cの例のように、非常に簡易な処理である。このためビット数変換の処理負担はほとんど問題とならない。
【0189】
なお上記例では、8ビットに変換した点灯データを「00h」「10h」「20h」・・・「F0h」とするとしたが、次のような例も考えられる。
この場合、4ビットの点灯データが「Fh」のときの、8ビットのシリアルデータ「F0h」が制御上の最大輝度となるが、LEDドライバ90は「FFh」まで対応できる。そこで、8ビットのシリアルデータの「F0h」の下位4ビットを「1111」に変換して「FFh」(=11111111)を送信するようにしてもよい。つまり送信するシリアルデータは「00h」「10h」「20h」・・・「E0h」「FFh」とする。このようにすると、LEDドライバ90の発光駆動能力上での最大輝度の発光を実行させることが可能となる。
また、「00h」以外の「10h」「20h」・・・「F0h」について、下位4ビットを「1111」に変換し、「1Fh」「2Fh」・・・「FFh」として送信してもよい。これにより、各階調での発光輝度を上げ、演出効果を向上させることができる。
また、ここまでは4ビットの点灯データを8ビットとする例で述べたが、これは一例である。第1ビット数(例えば8ビット)はLEDドライバ側の設計に応じて決められる。また第2ビット数(例えば4ビット)は、表現したい階調に応じて設定すればよい。例えば2階調なら1ビット、4階調なら2ビット、8階調なら3ビット・・・とすれば良い。
また本実施の形態では、シリアルデータ出力としてLED駆動データ送信を行うものであるが、この第2ビット数の点灯データを第1ビット数に変換して発光駆動ドライバに送信するという処理は、パラレルデータ出力、或いは無線送信出力などにも応用でき、その場合に送信先の階調能力と、求める階調表現の差がある場合に、送信元のデータ記憶容量の低減効果を得ることができる。
【0190】
[4−8:LEDドライバ初期化処理]
図9のステップS205では割込みカウンタの値が「0」〜「3」であるケース0〜3でLEDドライバ90の初期化を行うと述べたが、これは、使用しないレジスタアドレス00h〜14hのレジスタにデフォルト値をセットする送信処理となる。
ここで、上述のようにLEDドライバ90のレジスタアドレス15h〜2Chは、それぞれ出力端子96−1〜96−24に対応する点灯データ(階調値)が書き込まれるレジスタとされているが、レジスタアドレス00h〜14hの各レジスタは以下のようにデータが書き込まれる。
【0191】
00h:8ビット中の3ビットでPWMの周期設定データがセットされ、1ビットでマスタ/スレーブ設定データがセットされる。
01h:8ビット中の3つのビットで1階調あたりのフェードインスピード、3つのビットでフェードアウトスピードの各設定データがセットされる。
02h:8ビット中の5ビットで赤LEDの電流値データがセットされる。
03h:8ビット中の5ビットで緑LEDの電流値データがセットされる。
04h:8ビット中の5ビットで青LEDの電流値データがセットされる。
05h:8ビット中の6つのビットで、出力端子96−1〜96−6のオン/オフ設定データがセットされる。
06h:8ビット中の6つのビットで、出力端子96−7〜96−12のオン/オフ設定データがセットされる。
07h:8ビット中の6つのビットで、出力端子96−13〜96−18のオン/オフ設定データがセットされる。
08h:8ビット中の6つのビットで、出力端子96−19〜96−24のオン/オフ設定データがセットされる。以上のレジスタアドレス05h〜08hのレジスタは、出力端子96−1〜96−24のそれぞれについてのオン/オフ設定部となる。
09h〜0Eh:それぞれのレジスタ(8ビット)に、4つの出力端子について、各2ビットで「PWM出力優先」「フェード出力優先」「強制オン/オフ出力優先」のいずれかが選択設定される。09h〜0Ehの6個のレジスタにより24個の出力端子96−1〜96−24に対応する。
0Fh〜11h:3つのレジスタ(合計24ビット)で、24個の出力端子96−1〜96−24のフェード機能の有効/無効を設定する。
12h〜14h:3つのレジスタ(合計24ビット)で、24個の出力端子96−1〜96−24の強制オン/オフ設定をする。
【0192】
LEDドライバ90の初期化処理では、これらのレジスタ(00h〜14h)にデフォルト値を設定する。デフォルト値は以下のとおりである。なお「0x」は「h」と同様、16進表記を示す。レジスタアドレスの値と、データ値(デフォルト値)の区別のため、「0x」と「h」を使い分けている。
00h:0x00・・・PWM周期の初期設定
01h:0x00・・・フェードイン・フェードアウトのスロープなし
02h:0x1F・・・赤LED電流値の初期設定
03h:0x1F・・・緑LED電流値の初期設定
04h:0x1F・・・青LED電流値の初期設定
05h:0x77・・・出力端子96−1〜96−6のオン設定
06h:0x77・・・出力端子96−7〜96−12のオン設定
07h:0x77・・・出力端子96−13〜96−18のオン設定
08h:0x77・・・出力端子96−19〜96−24のオン設定
09h:0x00・・・PWM出力優先
0Ah:0x00・・・PWM出力優先
0Bh:0x00・・・PWM出力優先
0Ch:0x00・・・PWM出力優先
0Dh:0x00・・・PWM出力優先
0Eh:0x00・・・PWM出力優先
0Fh:0x00・・・フェード機能無効
10h:0x00・・・フェード機能無効
11h:0x00・・・フェード機能無効
12h:0x00・・・強制オン/オフ設定を全てオフ
13h:0x00・・・強制オン/オフ設定を全てオフ
14h:0x00・・・強制オン/オフ設定を全てオフ
【0193】
以上のようなデフォルト値の設定を、
図9の1msタイマ割込処理のステップS205(ケース0〜3)で各LEDドライバ90(w1〜w4、b1〜b5)に対して行う。
図30に、LEDドライバ初期化処理の一例を示している。この処理は、割込みカウンタ=0〜3のときに呼び出される処理となる。
また各LEDドライバ90(w1〜w4、b1〜b5)に対して、数回(例えば4回)に分けて初期化を行う。例えば1回の1msタイマ割込処理のステップS205で、3個又は2個のLEDドライバ90に対して初期化を行うようにされる。
【0194】
図30は1つのLEDドライバ90に対する初期化処理として示している。
ステップS901で演出制御CPU200は、割込みカウンタの値(ケース0〜15のいずれか)に応じて処理分けを行う。ケース0〜3のいずれかであれば、初期化を行うLEDドライバ90を特定し、そのLEDドライバ90に対してステップS902以下の処理に進むことになる。ケース0〜3以外では、初期化は行わないためステップS902以降の処理は行われない。
【0195】
あるLEDドライバ90に対して初期化を行う場合は、演出制御CPU200はステップS902で、そのLEDドライバ90に対応してイネーブル信号(ENABLE)をオンとする。そしてステップS902で、当該対象のLEDドライバ90のスレーブアドレスを出力する。
さらに演出制御CPU200はステップS904で、データ設定開始レジスタアドレスを出力する。この場合、レジスタアドレス「00h」〜「14h」への書き込みとなるため、データ設定開始レジスタアドレス=00hとする。
そして演出制御CPU200はステップS905で、順次各レジスタアドレス「00h」〜「14h」に対応するデフォルト値のデータ送信を行う。この処理で、対象としているLEDドライバ90の各レジスタアドレス「00h」〜「14h」に上述のデフォルト値が書き込まれる。つまりそのLEDドライバ90は初期設定される。
以上が完了したら、ステップS906でイネーブル信号(ENABLE)をオフとし、ステップS907でスレーブアドレスを+1する。つまり次のLEDドライバ90を指定できる状態とする。そして1つのLEDドライバ90に対する初期化処理を終える。
【0196】
ここで本実施の形態の場合、上述してきたようにシリアルデータ出力チャネルch1,ch2としての2系統のシリアルデータ出力を行う。
図30は1つのLEDドライバ90に対する初期化処理として示したが、この
図30の処理により、例えば9個の各LEDドライバ90(w1〜w4、b1〜b5)について順次1つずつ初期化を行っても良い。例えば1msタイマ割込処理のケース0のときにLEDドライバ90(w1,w2)、ケース1のときにLEDドライバ90(w3,w4)、ケース2のときにLEDドライバ90(b1,b2)、ケース3のときにLEDドライバ90(b3,b4,b5)として処理を割り当てることも可能である。
【0197】
しかし、シリアルデータ出力チャネルch1,ch2を用いて略同時的な送信を行うことで、枠ドライバ部61、盤ドライバ部62の各LEDドライバ90(w1〜w4、b1〜b5)についての初期化処理を効率化できる。即ち上述したLED駆動データ送信と同様の手法を採ることができる。その場合の処理例を
図31に示す。
なお、例えば
図25BのLED駆動データの出力の例のように、初期化する各LEDドライバ90のタイミングを割り当てるとする。
即ち、
図25Bのケース12を、例えばケース0と考え、1msタイマ割込処理のステップS205のケース0では、枠ドライバ部61のLEDドライバ90(w1,w2,w3)と、盤ドライバ部62のLEDドライバ90(b1,b2,b3)について初期化データの送信を行う。LEDドライバ90のw1とb1、w2とb2、w3とb3に対する送信は同時的に行われる。
また、
図25Bのケース13を、例えばケース1と考え、ケース1では、枠ドライバ部61のLEDドライバ90(w4)と、盤ドライバ部62のLEDドライバ90(b4,b5)に初期化データの送信を行う。LEDドライバ90のw4とb4に対する送信は同時的に行われる。
【0198】
図31の処理として、演出制御CPU200はステップS951で、シリアルデータ出力チャネルch1、ch2のスレーブアドレスを特定する。上記の
図25Bと同様とする例に則して言えば、ケース0の場合は「w1,b1」を示すアドレスコードであり、ケース1の場合は、「w4,b4」を示すアドレスコードである。
【0199】
そしてループ処理LP5として、ドライバナンバ個数分、ステップS952〜S964の処理をループして実行する。
図25Bと同様とする例の場合、ケース0のときは、ドライバナンバ個数は「3」(つまり1つのシリアルデータ出力チャネルにつき3つのLEDドライバ90に送信を行う)であるため3回ループ処理する。ケース1の場合は、ドライバナンバ個数とは「2」となる(シリアルデータ出力チャネルch2は2つのLEDドライバ90に送信を行うため)。
【0200】
ステップS952では、演出制御CPU200はシリアルデータ出力チャネルch1,ch2におけるイネーブル信号ENABLEをONとする。
そしてステップS953で演出制御CPU200は、シリアルデータ出力チャネルch1,ch2のシリアルデータDATAの出力として、最初の一送信単位(1バイト)のデータ送信、即ちこの場合は
図26のシリアルデータ構造に示した先頭1バイトのスレーブアドレスを送信出力する。シリアルデータ出力チャネルch1,ch2については並行して同時的にデータ送信を行う。
その一送信単位の送信を行ったら、ステップS954,S955で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
【0201】
シリアルデータ出力チャネルch1,ch2についての送信出力完了が確認されたら、演出制御CPU200はステップS956で、次の一送信単位(1バイト)のデータ送信として、データ設定開始レジスタアドレス(SX)を送信出力する。レジスタアドレス00h〜14hへの書込であるため、SX=00hとする。そしてこの場合も、シリアルデータ出力チャネルch1,ch2について並行して同時的にデータ送信を行う。
その一送信単位の送信を行ったら、ステップS957,S958で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
【0202】
ステップS957,S958でシリアルデータ出力チャネルch1,ch2についての送信出力完了が確認されたら、演出制御CPU200はステップS959で、一送信単位(1バイト)のデータ送信として、レジスタアドレス(00h)〜(14h)へのデフォルトデータを送信出力する。
まずはレジスタアドレス(00h)への1バイトのデフォルトデータ送信を、シリアルデータ出力チャネルch1,ch2について並行して同時的に行う。そしてステップS960,S961で、各シリアルデータ出力チャネルch1,ch2についての送信出力完了を待機する。
送信完了を確認したら、ステップS962でレジスタアドレス00h〜14hまでのデフォルトデータ送信完了が確認されるまで、1バイトずつ、ステップS959の送信を実行していく。従って、次はレジスタアドレス(01h)への1バイトのデフォルトデータ送信を、シリアルデータ出力チャネルch1,ch2について行う。さらにその送信確認後、レジスタアドレス(02h)へのデフォルトデータ送信が行われる。以降も、送信完了待機→レジスタアドレス(03h)へのデフォルトデータ送信→送信完了待機→レジスタアドレス(04h)へのデフォルトデータ送信→送信完了待機・・・→レジスタアドレス(14h)へのデフォルトデータ送信→送信完了待機という処理が行われていく。
【0203】
レジスタアドレス00h〜14hへのデフォルトデータの送信出力が完了したら、ステップS963でイネーブル信号ENABLEをオフとし、次に対象とするスレーブアドレスを+1する。そしてループ処理の1回を終える。
【0204】
ケース0の場合は、続いて2回目のループ処理として、LEDドライバ90(w2)、LEDドライバ90(b2)について、同様にステップS952〜S964の処理が行われる。さらにその後、3回目のループ処理として、LEDドライバ90(w3)、LEDドライバ90(b3)について、同様にステップS952〜S964の処理が行われる。その3回のループ処理で
図31のLEDドライバ初期化処理が完了する。
ケース1の場合は、1回目のループ処理として、LEDドライバ90(w4)、LEDドライバ90(b4)について、ステップS952〜S964の処理が行われる。その後2回目のループ処理では、LEDドライバ90(b5)のみについてステップS952〜S964の処理が行われる。その2回のループ処理で
図31のLEDドライバ初期化処理が完了する。
以上により
図25Bに示したような、9個の各LEDドライバ90へのデフォルトデータの出力による初期化が実行される。なお、搭載されるLEDドライバ90の数や、1回の1msタイマ割込処理で送信するLEDドライバ90の数などが異なれば、当然ループ回数が異なる場合もある。
また以上の例は2つのシリアルデータ出力チャネルch1,ch2を用いる例で述べているが、3以上のシリアルデータ出力チャネルを利用する場合も、それらが並行して同時的にシリアルデータ(デフォルトデータ)送信が行われるようにすれば良い。
【0205】
以上の
図31の処理のように、LEDドライバ90の初期化処理に関しても、第1系統(シリアルデータ出力チャネルch1)と第2系統(シリアルデータ出力チャネルch2)の駆動信号出力手段(枠ドライバ部61と盤ドライバ部62)について、一送信単位のシリアルデータを同時的に送信する。そして当該送信の完了後、次の一送信単位のシリアルデータを、第1系統と第2系統の駆動信号出力手段に対して略同時的に送信する。このような処理で、LEDドライバ90の初期化処理を行うことで、初期化処理全体に要する時間を短縮でき、もって演出制御CPU200の処理負担を軽減できる。
【0206】
本実施の形態では以上のように初期設定データとしてのデフォルトデータのシリアルデータ送信により各LEDドライバ90の初期化を行うが、これにより、各LEDドライバ90は、LED駆動データで示される階調値に応じて、出力端子96−1〜96−24に接続されたLED120の消灯、点灯、及び点灯時の発光輝度を実現するための発光駆動信号を出力する状態に設定されることとなる。
つまり出力端子96−1〜96−24についてのオン/オフ設定部であるレジスタアドレス05h〜08hに対して初期化処理により常時、上述のデフォルト値(=オンデータ)がセットされ、出力端子96−1〜96−24は全てオンとされ、さらにレジスタアドレス09h〜14hのデフォルト値設定により、PWM優先とされ、フェード機能、強制オン/オフ機能は無効化される。このため各LEDドライバ90は、階調値設定部であるレジスタアドレス15h〜2Chに書き込まれた階調値(点灯データの値)に基づくPWM制御を行って、出力端子96−1〜96−24からの階調に応じた電流量の発光駆動電流を流す状態となる。
【0207】
即ち、
図9のステップS205のケース12〜ケース15の場合に行われる
図21のLED駆動データ出力処理では、レジスタアドレス15h〜2Chに書き込まれるLED駆動データとしての「00h」「10h」「20h」・・・「F0h」の16階調のデータの送信が行われるが、このLED駆動データ送信時には「00h」「10h」「20h」・・・「F0h」の16階調のデータを送信するのみで、消灯(00h)から階調制御された点灯(10h〜F0h)が実行されることとなる。
これを演出制御CPU200側から見ると、0h〜Fhの点灯データにより、消灯、点灯、及び点灯時の発光輝度制御の全てが実行できるということである。
これにより演出制御CPU200では、LED発光制御を簡易な点灯データ設定で実現可能であり、処理負担は少なく、また制御のために必要なデータ容量も点灯データのみと少なくでき、演出制御ROM201等の容量消費の低減も実現される。
【0208】
まとめると、演出制御部51は、オン/オフ設定部であるレジスタアドレス05h〜08hが常時オン設定となる処理を行うとともに、遊技状態に応じて、階調値を含むLED駆動データを生成してLEDドライバ90に送信し、階調値を階調値設定部であるレジスタアドレス15h〜2Chに設定する処理を行うことで、LED駆動データ送信時には「00h」・・・「F0h」の16階調のデータを送信するのみで、消灯から階調制御された点灯までを実行制御できる。
なお上記例では、実施の形態ではオン/オフ設定部であるレジスタアドレス05h〜08hが常時オン設定とする処理として、16ms毎の初期化処理を行うが、16階調のデータを送信するのみで消灯から階調制御された点灯までを制御するには、あくまでレジスタアドレス05h〜08hが常時オン設定とされていればよい。従って例えば演出制御CPU200は、例えば電源投入時の最初に初期化処理を行ってレジスタアドレス05h〜08hをオン設定とするのみでもよい。これもオン/オフ設定部が常時オン設定となる処理の一例である。
【0209】
また以上の実施の形態では、LEDドライバ90は、遊技状態に応じて変化するLED駆動データが設定される第1レジスタ(レジスタアドレス15h〜2Ch)と、LEDドライバ90の動作を規定する、遊技状態に応じては変化しない固定データ(初期化データ)が設定される第2レジスタ(レジスタアドレス00h〜14h)とを有する。そして演出制御部51は、所定周期毎(1msタイマ割込処理のケース12〜15の機会毎)に第1レジスタのLED駆動データの設定を行うとともに、所定周期毎(1msタイマ割込処理のケース0〜3の機会毎)に第2レジスタの固定データの設定を行う。個々のLEDドライバ90から見れば、16ms毎に第2レジスタに初期化データが設定され、同じく16ms毎に第1レジスタにLED駆動データ(階調値)が設定される。
【0210】
本実施の形態の場合、遊技中にはレジスタアドレス00h〜14hの設定値は、常時、上述のデフォルト値である。従って初期化処理として上述のデフォルト値を第2レジスタに設定する処理は、起動時の1回などでもよい。ところが、ノイズ等でレジスタアドレス00h〜14hの設定値が破壊・消失されることがあり、すると、LEDドライバ90の動作が、LED駆動データで意図した動作とはならない場合が生ずる。これに対して本実施の形態では、初期化処理を周期的に行うことで、レジスタアドレス00h〜14hの設定値が破壊された場合でも、直ぐに修復し、本来の初期化状態とできる。それにより、常時、LED駆動データに基づく正確なLED発光動作が実行される。このようにLED駆動データに基づく発光駆動信号の出力動作を安定的に正常な状態に保つことができる。
【0211】
<5.第2の実施の形態>
続いて、第2の実施の形態としてのドライバ構成を説明する。なお第1の実施の形態と同様となる構成や処理については省略し、異なる点のみ説明する。
図32には、第1の実施の形態における
図4と同様の形式で、演出制御部51(演出制御CPU200)と、LEDドライバ130の接続構成を示した。
なお、この例は、演出制御CPU200は3つのシリアルデータ出力チャネルch1,ch2,ch3を使用する例とした。LEDドライバ130としては、3系統(枠ドライバ部61、盤ドライバ部62A、62B)設けられる。
シリアルデータ出力チャネルch1によって、枠ドライバ部61としての複数のLEDドライバ130に対するシリアルデータ送信が行われる。
シリアルデータ出力チャネルch2によって、盤ドライバ部62Aとしての複数のLEDドライバ130に対するシリアルデータ送信が行われる。
シリアルデータ出力チャネルch3によって、盤ドライバ部62Bとしての複数のLEDドライバ130に対するシリアルデータ送信が行われる。
【0212】
各シリアルデータ出力チャネルch1,ch2,ch3の信号線としては、ラッチ信号LATCHを供給するラッチ信号線、クロック信号CLKを供給するクロック線、イネーブル信号ENABLEを供給するイネーブル信号線、演出駆動データとしてのシリアルデータDATAを供給するデータ線が設けられている。
ラッチ信号LATCH、クロック信号CLK、イネーブル信号ENABLE線は、枠ドライバ部61(或いは盤ドライバ部62A、62B)を構成する複数のLEDドライバ130に対して並列に供給される。一方、シリアルデータDATAは、枠ドライバ部61(或いは盤ドライバ部62A、62B)を構成する複数のLEDドライバ130のうちの先頭のLEDドライバ130に供給され、順次後段のLEDドライバ130に転送していくようにされる。
即ち1つの系統内の各LEDドライバ130は、シリアルデータDATAの入出力が順次直列接続されており、演出制御CPU200からのシリアルデータDATAは、1つの系統内の先頭のLEDドライバ130から終端のLEDドライバ130に順次転送され、各LEDドライバ130は、演出制御CPU200からのラッチ信号に基づいて、シリアルデータDATAを取り込む構成とされている。
【0213】
枠ドライバ部61及び盤ドライバ部62A、62Bにおける各LEDドライバ130としては、例えば16ビット定電流LEDドライバである「BD7851FP(ローム株式会社製)」を用いることができ、例えば16個の定電流出力端子を備える。
従って1つのLEDドライバ130によっては、最大16系列のLED駆動電流を出力することができる。1つの「系列」とは、1つの電流出力端子に対して直列又は並列で接続される1又は複数のLEDの群を指している。
枠ドライバ部61におけるLEDドライバ130の数は、枠側に配置されるLED系列数(装飾ランプ20wの系列数)によって決められる。
また盤ドライバ部62A、62BにおけるLEDドライバ130の数は、盤側に配置されるLED系列数(装飾ランプ20bの系列数)によって決められる。
【0214】
図33にLEDドライバ130の要部の概略構成例を示す。
LEDドライバ90は、16ビットシフトレジスタ131、ラッチ部132、出力ゲート部133及び定電流出力端子139−1〜139−16を備える。
定電流出力端子139−1〜139−16の全部(又は一部)には16系列のLED120が接続される。なお、図は簡略化して1系列の定電流出力端子139に1つのLED120が接続された状態を示しているが、1系列の定電流出力端子139に、複数のLEDが接続される構成(例えば直列接続)も当然あり得る。
【0215】
このLEDドライバ130には、シフトレジスタ131に対し、シリアルデータDATAが端子134に供給され、またクロック信号CLKが端子135に入力される。
なお、各系統の先頭のLEDドライバ130の端子134には、演出制御CPU200からのシリアルデータDATAが供給される。各系統の2つ目以降のLEDドライバ130の端子134は、1つ前のLEDドライバ130の端子136が接続される。
シフトレジスタ131は例えば16段のDフリップフロップ回路から成り、クロック信号CLKのタイミングで、端子134からのシリアルデータDATAを取り込むと共に、各Dフリップフロップ回路に保持していたデータを後段にシフトさせていく。なお、16段目のDフリップフロップ回路の出力は、端子136から、次のLEDドライバ130の端子134から、そのシフトレジスタ131に供給される。
【0216】
また各LEDドライバ130には、演出制御CPU200からのラッチ信号LATCHが端子137からラッチ部132に供給される。ラッチ部132は、ラッチ信号LATCHが入力されたタイミングで、シフトレジスタ131における16個の各Dフリップフロップ回路の値をラッチする。16ビットのデータがラッチされることになる。
ラッチ部132でラッチされた16ビットのデータは、出力ゲート部133に供給される。
なお、各系統のLEDドライバ130は、シリアルデータDATAが順次転送される構成をとっている。演出制御CPU200は、終端のLEDドライバ130に対するLED駆動データ(16ビット)、その前のLEDドライバ130に対するLED駆動データ(16ビット)・・・先頭のLEDドライバ130に対するLED駆動データ(16ビット)を順次連続して出力する。そして先頭のLEDドライバ130に対する16ビットのLED駆動データを転送したタイミングで、系統内の全LEDドライバ130に対して並列にラッチ信号LATCHを出力することで、各LEDドライバ130は、自己に供給された16ビットのLED駆動データをラッチ部132に取り込むことができる。
【0217】
出力ゲート部は、端子138からのイネーブル信号ENABLEがONの場合、ラッチ部132でラッチされた16ビットのデータに基づいて、定電流出力端子139−1〜139−16のそれぞれからLED120の発光のための電流出力を行う。ラッチされた16ビットの各ビットは、16個の定電流出力端子139−1〜139−16のそれぞれに対する電流出力制御値となる。
このような構成により、各LEDドライバ130は、接続された最大16系統のLED120を駆動する。
【0218】
この第2の実施の形態では、演出制御CPU200は、一送信単位のシリアルデータを、第1系統、第2系統、第3系統の駆動信号出力手段(枠ドライバ部61と盤ドライバ部62A、62B)に対して略同時的に出力する。
この第2の実施の形態としてのLED出力処理を
図34で説明する。
第1の実施の形態で述べた場合と同様、LEDデータ更新処理で生成されたLED駆動データが、所定のタイミングで各LEDドライバ130に出力される。
【0219】
演出制御CPU200はステップS851で、各シリアルデータ出力チャネルch1,ch2,ch3におけるLED駆動データ(例えば第1の実施の形態の
図25Aの出力データバッファに相当する出力データバッファ)の先頭アドレスを特定する。なお、第1の実施の形態では1つのLEDドライバ90に対するLED駆動データは4×24ビットの例としたが、第2の実施の形態では1つのLEDドライバ130に対するLED駆動データは例えば16ビットとなる。
次にステップS852で演出制御CPU200は、全シリアルデータ出力チャネルch1,ch2,ch3のラッチ信号LATCHをオフとする。さらにステップS853で全シリアルデータ出力チャネルch1,ch2,ch3のイネーブル信号ENABLEをオンとする。
【0220】
そしてループ処理LP4としてステップS854〜S859の処理を必要回数繰り返す。
説明上、仮に、LEDドライバ130の数が、枠ドライバ部61は5個、盤ドライバ部62Aは3個、盤ドライバ部62Bは6個であるとする。つまりシリアルデータ出力チャネルch1は5個のLEDドライバ130に送信を行い、シリアルデータ出力チャネルch2は3個のLEDドライバに送信を行い、シリアルデータ出力チャネルch3は6個のLEDドライバ130に送信を行うものとする。
なお、送信データレジスタへの書き込みは8ビットずつ行われる一方、1つのLEDドライバ130には16ビットのデータを送信する。従って1つのLEDドライバ130に対して2回の送信が必要となる。従って送信データレジスタへの書込は、シリアルデータ出力チャネルch1では10回、シリアルデータ出力チャネルch2では6回、シリアルデータ出力チャネルch3では12回となる。
そしてループ処理LP4としては、最もLEDドライバ130の数の多い(6個)、シリアルデータ出力チャネルch3の送信回数(=12回)だけ、ループすることとなる。
【0221】
当該ループ処理LP4としては、演出制御CPU200は、ステップS854でシリアルデータ出力チャネルch1の一送信単位の送信として、シリアルデータDATAの出力(送信データレジスタへの8ビットの書き込み)を行う。
また略同時に、ステップS855でシリアルデータ出力チャネルch2のシリアルデータDATAの出力(送信データレジスタへの8ビットの書き込み)を行い、さらに略同時にステップS856でシリアルデータ出力チャネルch3のシリアルデータDATAの出力(送信データレジスタへの8ビットの書き込み)を行う。
このように各シリアルデータ出力チャネルch1,ch2,ch3では、それぞれの系統のシリアルデータDATA(16ビット×LEDドライバ数)の送信が、同時に実行される。
そしてステップS857,S858,S859で演出制御CPU200は、各シリアルデータ出力チャネルch1,ch2,ch3におけるシリアルデータDATAの送信完了を待機する。
送信完了となったら、再びステップS854,S855,S856の処理を行う。
【0222】
なお、LEDドライバ130の数の違いにより、他よりも先に全データ出力を完了するシリアルデータ出力チャネルが発生する。上記例の場合、シリアルデータ出力チャネルch1はステップS854を10回行うことで完了し、シリアルデータ出力チャネルch2はステップS855を6回行うことで完了し、シリアルデータ出力チャネルch3はステップS856を12回行うことで完了する。
従ってこの例では、シリアルデータ出力チャネルch1,ch2については、完了後のループ回数目ではステップS854,S855のシリアルデータ出力は行わない場合が生ずる。
なお、実際のシリアルデータ送信中以外は、シフトレジスタ136でのデータシフトが行われないようにクロック信号CLKの制御(例えばマスク等)を行うことは当然である。
【0223】
送信完了(上記例の場合、ループ処理LP4として12回ループ完了)となったら、ステップS860で、全シリアルデータ出力チャネルch1,ch2,ch3のラッチ信号LATCHをオンとする。これにより、すべてのLEDドライバ130において、シリアルデータDATA(16ビットのLED駆動データ)が取り込まれる。当該ラッチを行ったら、ステップS861で、全シリアルデータ出力チャネルch1,ch2,ch3のラッチ信号LATCHをオフとする。
この時点で、イネーブル信号ENABLEはオンである。例えば各LEDドライバ130の出力ゲート部133は、端子138からのイネーブル信号ENABLEがオフの場合に、ラッチ部132にラッチされたLED駆動データにより定電流出力端子139−1〜139−16を駆動するものとされている。そこで演出制御CPU200はステップS862でイネーブル信号ENABLEをオフとする。これによって、各LEDドライバ130は、今回書き込まれたLED駆動データに基づいて、接続されたLED120の発光駆動を行うこととなる。
【0224】
この第2の実施の形態では、演出制御CPU200は、第1系統(シリアルデータ出力チャネルch1)、第2系統(シリアルデータ出力チャネルch2)、第3系統(シリアルデータ出力チャネルch3)の駆動信号出力手段(枠ドライバ部61、盤ドライバ部62A、62B)には、シリアルデータを同時的に送信する。
そして当該送信の完了後、各LEDドライバ130にラッチを実行させる。
これにより全体のシリアルデータ送信動作に要する時間を短縮でき、もって演出制御CPU200の処理負担を軽減できる。
【0225】
例えば従来は、
図34のステップS854〜S860に相当する処理は、
(ST1)ch1のシリアルデータ送信(送信データレジスタへの書込)
(ST2)ch1送信出力完了待機
・・・以上を所要回数ループ
(STx)ch1ラッチ信号LATCHオン
(STx+1)ch2のシリアルデータ送信(送信データレジスタへの書込)
(STx+2)ch2送信出力完了待機
・・・以上を所要回数ループ
(STy)ch2ラッチ信号LATCHオン
(STy+1)ch3のシリアルデータ送信(送信データレジスタへの書込)
(STx+2)ch3送信出力完了待機
・・・以上を所要回数ループ
(STz)ch3ラッチ信号LATCHオン
というように行っていた。
この場合、シリアルデータ出力チャネルch1,ch2,CH3のそれぞれで待ち時間が発生し、送信処理効率が悪い。
これに対して本実施の形態では、
(S854,S855,S856)ch1、ch2、ch3からシリアルデータ送信開始
(S857,S858,S859)ch1、ch2、ch3の送信出力完了待機
(S860)全チャネルラッチ信号LATCHオン
というように、同時的に両シリアルデータ出力チャネルch1,ch2,ch3での送信処理を行うようにすることで、処理が効率化される。
【0226】
特にこの第2の実施の形態の場合は、1つの系統の駆動信号出力手段(枠ドライバ部61、盤ドライバ部62A、62B)に対するシリアルデータは、その系統に含まれるLEDドライバ130の数×16ビットの単位となる。
従って最もLEDドライバ130の数の多い駆動信号出力手段へのシリアルデータ転送完了までが全体の待機時間となる。即ち、上記例では最もLEDドライバ130の数が多いシリアルデータ出力チャネルch3に必要な時間内で、全てのシリアルデータ出力チャネルch1,ch2,ch3へのデータ送信が完了できる。
これにより、個別の駆動信号出力手段への出力及び待機を行うことに比べて、シリアルデータ送信に要する全体の時間は著しく短縮できる。
【0227】
なお、望ましくは、各系統の駆動信号出力手段におけるLEDドライバ130の数は、同数とするとよい。或いはダミードライバを設けて同数としても良い。すると、演出制御CPU200は、3つのシリアルデータ出力チャネルch1,ch2,ch3から同時にシリアルデータ送信を開始し、同時に送信完了でき、その直後のタイミングでラッチさせることができ、処理も容易となる。
また
図34では、ステップS857〜S859の全シリアルデータ出力チャネルでの送信完了確認後に、ステップS860で全系統のラッチを実行させるものとしたが、実際には、シリアルデータ出力が完了したシリアルデータ出力チャネルからラッチオンとしていっても良い。
【0228】
またこの第2の実施の形態は、第1系統の駆動信号出力手段(枠ドライバ部61)は、前枠2に設けられた演出手段である装飾ランプ部63(装飾ランプ20w)にLED駆動信号を出力する複数のドライバ回路(LEDドライバ90)で構成される。第2系統の駆動信号出力手段(盤ドライバ部62A)、及び第3系統の駆動信号出力手段(盤ドライバ部62B)は、遊技盤3に設けられた演出手段である装飾ランプ部64(装飾ランプ20b)にLED駆動信号を出力する複数のドライバ回路(LEDドライバ90)で構成されている。
このような構成により、枠ドライバ部61のLEDドライバ90はすべて枠側の装飾ランプ20wに対応し、また盤ドライバ部62A、62BのLEDドライバ90はすべて盤側の装飾ランプ20bに対応することとなり、これにより配線の容易化、効率化、演出制御設定の容易性などを実現できる。
【0229】
<6.変形例>
以上実施の形態について説明してきたが本発明は実施の形態で挙げた例に限らず多様な変形例や適用例が考えられる。
LED等による装飾ランプ部63,64としては枠側に1系統(1つのシリアルデータ出力チャネル)、盤側に1系統又は2系統の例を挙げたが、もちろんこれに限られない。枠側の装飾ランプ部63について複数系統を設けても良いし、盤側の装飾ランプ部64において3系統以上を設けても良い。
また1つの系統に盤側の装飾ランプ20bと枠側の装飾ランプ20wが混在していてもよい。
【0230】
またLED発光駆動だけではなく、他の駆動制御のためのシリアルデータ送信、例えばステッピングモータやソレノイド等の可動体の駆動モータのドライバに対するシリアルデータ送信にも本発明は適用できる。
また本発明はパチンコ遊技機1のような弾球遊技機に適用する例を示したが、回胴式遊技機(いわゆるスロット機)にも適用できる。