JP2017121526A - 遊技機 - Google Patents
遊技機 Download PDFInfo
- Publication number
- JP2017121526A JP2017121526A JP2017044907A JP2017044907A JP2017121526A JP 2017121526 A JP2017121526 A JP 2017121526A JP 2017044907 A JP2017044907 A JP 2017044907A JP 2017044907 A JP2017044907 A JP 2017044907A JP 2017121526 A JP2017121526 A JP 2017121526A
- Authority
- JP
- Japan
- Prior art keywords
- data
- sound
- scenario
- channel
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 278
- 238000000034 method Methods 0.000 claims description 519
- 230000008569 process Effects 0.000 claims description 514
- 230000000694 effects Effects 0.000 claims description 417
- 238000004519 manufacturing process Methods 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 12
- 230000005284 excitation Effects 0.000 description 139
- 102100020870 La-related protein 6 Human genes 0.000 description 76
- 108050008265 La-related protein 6 Proteins 0.000 description 76
- 239000004973 liquid crystal related substance Substances 0.000 description 55
- 230000008859 change Effects 0.000 description 44
- 230000007704 transition Effects 0.000 description 39
- 230000002441 reversible effect Effects 0.000 description 26
- 238000001514 detection method Methods 0.000 description 25
- 238000012217 deletion Methods 0.000 description 23
- 230000037430 deletion Effects 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 12
- 238000005034 decoration Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 239000011521 glass Substances 0.000 description 12
- 230000005856 abnormality Effects 0.000 description 10
- 238000012508 change request Methods 0.000 description 10
- 238000012790 confirmation Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 8
- 238000009877 rendering Methods 0.000 description 8
- 238000005562 fading Methods 0.000 description 7
- 239000000758 substrate Substances 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000004397 blinking Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 101100364301 Schizosaccharomyces pombe (strain 972 / ATCC 24843) rsv1 gene Proteins 0.000 description 4
- 101100364302 Schizosaccharomyces pombe (strain 972 / ATCC 24843) rsv2 gene Proteins 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 101000739146 Homo sapiens Protein SFI1 homolog Proteins 0.000 description 3
- 102100037271 Protein SFI1 homolog Human genes 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 244000145845 chattering Species 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000010304 firing Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000002250 progressing effect Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 102100036464 Activated RNA polymerase II transcriptional coactivator p15 Human genes 0.000 description 2
- 101000713904 Homo sapiens Activated RNA polymerase II transcriptional coactivator p15 Proteins 0.000 description 2
- 229910004444 SUB1 Inorganic materials 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100365603 Phytophthora infestans (strain T30-4) SFI2 gene Proteins 0.000 description 1
- 229910018497 SFO2 Inorganic materials 0.000 description 1
- 101100267932 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) YRB1 gene Proteins 0.000 description 1
- 241000722921 Tulipa gesneriana Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000011120 plywood Substances 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 239000011347 resin Substances 0.000 description 1
- 229920005989 resin Polymers 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Pinball Game Machines (AREA)
Abstract
【解決手段】演出制御手段は、実行すべき演出種別を特定する演出データを第1のワークエリアの空き領域にセットする演出データ設定処理と、第1のワークエリアにセットされた演出データに基づいて、演出デバイスの動作を特定する動作データを第2のワークエリアにセットする動作データ設定処理とを行う。この場合に第2のワークエリアは、複数の演出デバイスのそれぞれに対応して複数設けられ、それぞれに対応する演出デバイスの動作データがセットされる。第1のワークエリアには複数の第2のワークエリアへセットする動作データを特定する演出データがセットされる。第1のワークエリアには所定上限数の演出データ、第2のワークエリアには所定上限数より少ない上限数の動作データが記憶可能とされる。
【選択図】図16
Description
<1.パチンコ遊技機の構造>
<2.パチンコ遊技機の制御構成及び実施の形態のドライバ構成>
<3.主制御部の処理>
<4.演出制御部の処理>
[4−1:メイン処理]
[4−2:1msタイマ割込処理]
[4−3:コマンド解析処理]
[4−4:シナリオ登録・削除処理]
[4−5:シナリオ更新処理]
[4−6:LED駆動データ更新処理]
[4−7:音の登録処理]
[4−8:音再生処理]
[4−9:モータの登録処理]
[4−10:モータ動作更新処理]
[4−11:モータ出力処理]
[4−12:モータ押し込み動作]
<5.まとめ及び変形例>
まず図1、図2を参照して、本発明の実施の形態としてのパチンコ遊技機1の構成を概略的に説明する。
図1は実施の形態のパチンコ遊技機1の外観を示す正面側の斜視図であり、図2は遊技盤の正面図である。
図1,図2に示すパチンコ遊技機1は、主に「枠部」と「遊技盤部」から成る。
「枠部」は以下説明する前枠2,外枠4、ガラス扉5、操作パネル7を有して構成される。「遊技盤部」は図2の遊技盤3から成る。以下の説明上で、「枠部」「枠側」とは前枠2,外枠4、ガラス扉5、操作パネル7の総称とする。また「盤部」「盤側」とは遊技盤3を示す。
なお遊技領域3aの前側には、透明ガラスを支持したガラス扉5が設けられており、遊技領域3aは透明ガラスを介して前面の遊技者側に表出される。
またガラス扉5の前面側には、枠側の発光手段として装飾ランプ20wが各所に設けられている。装飾ランプ20wは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
操作パネル7には、上受け皿ユニット8、下受け皿ユニット9、発射操作ハンドル10が設けられている。
また上受け皿ユニット8には、上受け皿8aに貯留された遊技球を下受け皿9a側に抜くための球抜きボタン16が設けられている。下受け皿ユニット9には、下受け皿9aに貯留された遊技球を遊技機下方に抜くための球抜きレバー17が設けられている。
また上受け皿ユニット8には、図示しない遊技球貸出装置に対して遊技球の払い出しを要求するための球貸しボタン14と、遊技球貸出装置に挿入した有価価値媒体の返却を要求するためのカード返却ボタン15とが設けられている。
さらに上受け皿ユニット8には、演出スイッチ11、演出ボタン12、十字キー13が設けられている。演出スイッチ11や演出ボタン12は、所定の入力受付期間中に内蔵ランプが点灯されて操作可能となり、その内蔵ランプ点灯時に押下することにより演出に変化をもたらすことができる押しボタンとされる。また十字キー13は遊技者が演出状況に応じた操作や演出設定等のための操作を行う操作子である。
また前枠2の上部の両側と、発射操作ハンドル10の近傍には、演出音を音響出力するスピーカ25が設けられている。
主液晶表示装置32Mでは、後述する演出制御部51の制御の下、背景画像上で、たとえば左、中、右の3つの装飾図柄の変動表示が行われる。また通常演出、リーチ演出、スーパーリーチ演出などの各種の演出画像の表示も行われる。副液晶表示装置32Sも、同様に各種演出に応じた表示が行われる。
センター飾り35Cは、そのデザインにより装飾効果を発揮するだけでなく、周囲の遊技球から主液晶表示装置32M及び副液晶表示装置32Sの表示面を保護する作用を持つ。さらにセンター飾り35Cは、遊技球の打ち出しの強さまたはストローク長による遊技球の流路の左右打ち分けを可能とする部材としても機能する。即ち球誘導レール31を介して遊技領域3a上部に打ち出された遊技球の流下経路は、センター飾り35Cによって分割された左遊技領域3bと右遊技領域3cのいずれかを流下することとなる。いわゆる左打ちの場合、遊技球は左遊技領域3bを流下していき、右打ちの場合、遊技球は右遊技領域3cを流下していく。
同様に右遊技領域3cの下方には右下飾り35Rが設けられ、装飾効果を発揮するとともに左遊技領域3bとしての範囲を規定する。
なお、遊技領域3a(左遊技領域3b及び右遊技領域3c)内には、所要各所に釘49や風車47が設けられて遊技球の多様な流下経路を形成する。
また主液晶表示装置32Mの下方にはセンターステージ35Sが設けられており、装飾効果を発揮するとともに、遊技球の遊動領域として機能する。
なお図示していないが、センター飾り35Cには、適所に視覚的演出効果を奏する可動体役物が設けられている。
この図柄表示部33では、所定のドット領域により、第1特別図柄表示部、第2特別図柄表示部、及び普通図柄表示部が形成され、第1特別図柄、第2特別図柄、及び普通図柄のそれぞれの変動表示動作(変動開始および変動停止を一セットする変動表示動作)が行われる。
なお、上述した主液晶表示装置32Mは、図柄表示部33による第1、第2特別図柄の変動表示と時間的に同調して、画像による装飾図柄を変動表示する。
上始動口41及び下始動口42aの内部には、遊技球の通過を検出する検出センサ(図3に示す上始動口センサ71,下始動口センサ72)が形成されている。
この普通変動入賞装置42の下始動口42aは、図柄表示部33における第2特別図柄の変動表示動作の始動条件に係る入賞口である。そして、この下始動口42aの入賞率は可動翼片42bの作動状態に応じて変動する。即ち可動翼片42bが開いた状態では、入賞が容易となり、可動翼片42bが閉じた状態では、入賞が困難又は不可能となるように構成されている。
また右遊技領域3cの下部側には、遊技球が通過可能なゲート(特定通過領域)からなる普通図柄始動口44が設けられている。この普通図柄始動口44は、図柄表示部33における普通図柄の変動表示動作に係る入賞口であり、その内部には、通過する遊技球を検出するセンサ(図3に示すゲートセンサ73)が形成されている。
第1特別変動入賞装置45は、突没式の開放扉45bにより第1大入賞口45aを閉鎖/開放する構造とされている。また、その内部には第1大入賞口45aへの遊技球の通過を検出するセンサ(図3の第1大入賞口センサ75)が形成されている。
第1大入賞口45aの周囲は、右下飾り35Rが遊技盤3の表面から膨出した状態となっており、その膨出部分の上辺及び開放扉45bの上面が右流下経路3cの下流案内部を形成している。従って、開放扉45bが盤内部側に引き込まれることで、下流案内部に達した遊技球は容易に第1大入賞口45に入る状態となる。
開放扉46bが開かれることで第2大入賞口46aが開放される。この状態では、左遊技領域3b或いは右遊技領域3cを流下してきた遊技球は、高い確率で第2大入賞口50に入ることとなる。
本実施の形態のパチンコ遊技機1においては、これら入賞口のうち、普通図柄始動口44以外の入賞口への入賞があった場合には、各入賞口別に設定された入賞球1個当りの賞球数が遊技球払出装置55(図3参照)から払い出される。
例えば、上始動口41および下始動口42aは3個、第1大入賞口45a、第2大入賞口46aは13個、一般入賞口43は10個などと賞球数が設定されている。
なお、これらの各入賞口に入賞しなかった遊技球は、アウト口48を介して遊技領域3aから排出される。
ここで「入賞」とは、入賞口がその内部に遊技球を取り込んだり、ゲートを遊技球が通過したりすることをいう。実際には入賞口ごとに形成されたセンサ(各入賞検出スイッチ)により遊技球が検出された場合、その入賞口に「入賞」が発生したものとして扱われる。この入賞に係る遊技球を「入賞球」とも称する。
装飾ランプ20bは、例えばLEDによる発光動作として、演出用の発光動作、エラー告知用の発光動作、動作状態に応じた発光動作などを行う。
次に本実施の形態のパチンコ遊技機1の制御系の構成について説明する。図3はパチンコ遊技機1の内部構成の概略的なブロック図である。
本実施の形態のパチンコ遊技機1は、その制御構成を形成する基板として主に、主制御基板50、演出制御基板51、液晶制御基板52、払出制御基板53、発射制御基板54、電源基板58が設けられている。
演出制御基板51は、マイクロコンピュータ等が搭載され、主制御部50から演出制御コマンドを受けて、画像表示、発光、音響出力を用いた各種の演出動作を実行させるための制御を行う。なお以下では、演出制御基板51に搭載されたマイクロコンピュータ等を含めて演出制御基板51の構成体を「演出制御部51」と表記する。
なお主液晶表示装置32M、副液晶表示装置32Sによる表示動作の制御を行う液晶制御基板として、主液晶制御基板、副液晶制御基板を独立して設けてもよい。
払出制御基板53は、パチンコ遊技機1に接続された遊技球払出装置55による賞球の払い出し制御を行う。
発射制御基板54は、遊技者のパチンコ遊技機1に設けられている発射装置56による遊技球の発射動作の制御を行う。
電源基板58は、外部電源(例えばAC24V)からAC/DC変換、さらにはDC/DC変換を行い、各部に動作電源電圧Vccを供給する。なお電源経路の図示は省略している。
主制御部50は、CPU100(以下「主制御CPU100」と表記)を内蔵したマイクロプロセッサ、ROM101(以下「主制御ROM101」と表記)、RAM102(以下「主制御RAM102」と表記)を搭載し、マイクロコンピュータを構成している。
主制御CPU100は制御プログラムに基づいて、遊技の進行に応じた各種演算及び制御処理を実行する。
主制御ROM101は、主制御CPU100による遊技動作の制御プログラムや、遊技動作制御に必要な種々のデータを記憶する。
主制御RAM102は、主制御CPU100が各種演算処理に使用するワークエリアや、各種入出力データや処理データのバッファ領域として用いられる。
なお図示は省略したが、主制御部50は、各部とのインターフェース回路、特別図柄変動表示に係る抽選用乱数を生成する乱数生成回路、各種の時間計数のためのCTC(Counter Timer Circuit)、主制御CPU100に割込み信号を与える割込コントローラ回路なども備えている。
即ち、上始動口センサ71、下始動口センサ72、ゲートセンサ73、一般入賞口センサ74、第1大入賞口センサ75、第2大入賞口センサ76のそれぞれの検出信号が主制御部50に供給される。
なお、これらのセンサ(71〜76)は、入球した遊技球を検出する検出スイッチにより構成されるが、具体的にはフォトスイッチや近接スイッチなどの無接点スイッチや、マイクロスイッチなどの有接点スイッチで構成することができる。
さらに、主制御部50には、第1大入賞口45の開放扉45bを開閉駆動する第1大入賞口ソレノイド78と、第2大入賞口46の開放扉46bを開閉駆動する第2大入賞口ソレノイド79が接続されている。主制御部50は、いわゆる大当たり状況に応じて、第1大入賞口ソレノイド78又は第2大入賞口ソレノイド79を駆動制御して、第1大入賞口45又は第2大入賞口46の開放動作を実行させる。
主制御部50は、払出制御基板53に対し、払い出しに関する制御コマンド(賞球数を指定する払出制御コマンド)を送信する。払出制御基板53は当該制御コマンドに応じて遊技球払出装置55を制御し、遊技球の払い出しを実行させる。
また払出制御基板53は、主制御部50に対して、払い出し動作状態に関する情報(払出状態信号)を送信可能となっている。主制御部50側では、この払出状態信号によって、遊技球払出装置55が正常に機能しているか否かを監視する。具体的には、賞球の払い出し動作の際に、玉詰まりや賞球の払い出し不足といった不具合が発生したか否かを監視している。
演出制御部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)の発光制御、可動体役物の動作制御などとなる。
VDPは、画像展開処理や画像の描画などの映像出力処理全般の制御を行う。
画像ROMには、VDPが画像展開処理を行う画像データ(演出画像データ)が格納されている。
VRAMは、VDPが展開した画像データを一時的に記憶する画像メモリ領域とされる。
液晶制御CPUは、VDPが表示制御を行うために必要な制御データを出力する。
液晶制御ROMには、液晶制御CPUの表示制御動作手順を記述したプログラムやその表示制御に必要な種々のデータが格納される。
液晶制御RAMは、ワークエリアやバッファメモリとして機能する。
枠ドライバ部61は、枠側の装飾ランプ部63のLEDについて発光駆動を行う。なお、装飾ランプ部63とは、図1に示したように枠側に設けられている装飾ランプ20wを総括的に示したものである。
盤ドライバ部62は、盤側の装飾ランプ部64のLEDについて発光駆動を行う。なお、装飾ランプ部64とは、図2に示したように盤側に設けられている装飾ランプ20bを総括的に示したものである。
また可動体役物モータ65は、盤側に形成されている1又は複数の可動体役物を駆動する1又は複数の各モータを総括的に示している。また本実施の形態の場合、盤ドライバ部62は、可動体役物モータ部65のモータの駆動も行う。可動体役物モータ部65のモータには例えばステッピングモータが用いられる。
なおこの例では盤ドライバ部62は、盤側に形成されている可動体役物を駆動する可動体役物モータ部65のモータの駆動も行うものとしているが、装飾ランプ部64の各LEDを発光駆動するドライバ部と、可動体役物モータ部65のモータを駆動するドライバ部が別体として設けられても良い。
各モータには原点位置が規定されている。原点位置は、例えば役物が図2の盤面に通常は表出しない位置などとされる。
モータが原点位置にあるか否かを演出制御基板51側で確認できるようにするため、各モータには原点スイッチ68が設けられている。例えばフォトインターラプタが用いられる。この原点スイッチ68の情報が演出制御CPU200によって検知される構成とされている。詳しくは図35、図37で述べる。
音源IC59は、複数チャネル(後述する音チャネルaCH)のフレーズをミキシングして所定本数(チャネル数)の音声信号を得る。図1に示したように、本例の場合、スピーカ25は複数設けられるため、音源IC59の出力チャネル数は例えばLch,Rchの2チャネルなど(ステレオ出力)が可能となる。上記のミキシングにより、演出制御部51より再生指示された複数チャネルのフレーズを同時再生可能とされる。
また音源IC59は、演出制御部51からの指示に従い、制御対象として指示されたフレーズについての音コントロールを行う。具体的に、演出制御部51は、ボリュームの変化指示やフェードイン再生/フェードアウト再生等の音響効果の付与指示に係る情報を音源IC59に対して与え、音源IC59はそれらの情報に従って制御対象として指定されたフレーズの再生制御を行う。
この場合の音源IC59が音出力を行うにあたって指示を要求する情報は、少なくとも「フレーズ番号」「1次ボリューム」「1次ボリューム遷移量」「2次ボリューム」「ループ回数」「SUB0ボリューム」「SUB1ボリューム」「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」とされる。すなわち、この場合の音源IC59には、これらの項目ごとにその指示値の入力を受け付けるレジスタが音チャネルaCHごとに設けられている。
なお、本実施の形態ではSUBボリュームは使用しないものとしている。従って上記の「SUB0ボリューム」「SUB1ボリューム」のレジスタには「0」をセットする(後述する図32のステップS1202を参照)。
なお、図3では図示の都合上、音源IC59の出力チャネル数を1つとしているが、実際にはアンプ部67及びスピーカ25は例えばLch、Rchに対応した出力チャネルがそれぞれ設けられ、ステレオによる音再生が可能とされる。
演出制御部51は、操作部60からの操作検出信号に応じて、各種演出制御を行うことができる。
MODEとEVENTの区別を行うために、MODEのBit7はON、EVENTのBit7をOFFとしている。
これらの情報を有効なものとして送信する場合、モード(MODE)およびイベント(EVENT)各々に対応してストローブ信号が出力される。すなわち、主制御CPU100は、送信すべきコマンドがある場合、演出制御部51にコマンドを送信するためのモード(MODE)情報の設定および出力を行い、この設定から所定時間経過後に1回目のストローブ信号の送信を行う。さらに、このストローブ信号の送信から所定時間経過後にイベント(EVENT)情報の設定および出力を行い、この設定から所定時間経過後に2回目のストローブ信号の送信を行う。
ストローブ信号は主制御CPU100により、演出制御CPU200が確実にコマンドを受信することが可能な所定期間アクティブ状態に制御される。
また演出制御部51(演出制御CPU200)は、ストローブ信号の入力に基づいて割込を発生させてコマンド受信割込処理用の制御プログラムを実行し、この割込処理において演出制御コマンドが取得される。
図4に、演出制御部51に接続される枠ドライバ部61、盤ドライバ部62を示した。
シリアルデータ出力チャネルch1の信号線としては、リセット信号RESETを供給するリセット信号線、クロック信号CLKを供給するクロック線、演出駆動データとしてのシリアルデータDATAを供給するデータ線、イネーブル信号ENABLEを供給するイネーブル信号線が設けられている。これら各信号線は、それぞれ、枠ドライバ部61を構成するn個のLEDドライバ90に対して各信号を並列に供給するように接続されている。
枠ドライバ部61の各LEDドライバ90には、演出制御CPU200がスレーブアドレスとして用いるデバイスIDが設定されている。即ち個々のLEDドライバ90の識別子である。説明上、仮に、図示のように各LEDドライバ90のデバイスID(スレーブアドレス)をw1〜w(n)と表記する。
シリアルデータ出力チャネルch2の信号線もチャネルch1と同様、リセット信号RESETを供給するリセット信号線、クロック信号CLKを供給するクロック線、演出駆動データとしてのシリアルデータDATAを供給するデータ線、イネーブル信号ENABLEを供給するイネーブル信号線が設けられている。これら各信号線は、それぞれ、盤ドライバ部62を構成するm個のLEDドライバ90に対して各信号を並列に供給するように接続されている。
盤ドライバ部62の各LEDドライバ90には、演出制御CPU200がスレーブアドレスとして用いるデバイスID(個々のLEDドライバ90の識別子)が設定されている。説明上、仮に、図示のように各LEDドライバ90のデバイスID(スレーブアドレス)をb1〜b(m)と表記する。
枠ドライバ部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を有する。
LEDドライバ90は、シリアルバスインターフェース91、アドレス設定部92、データバッファ/PWMコントローラ93、D/A変換器94、駆動電流源回路95−1〜95−24を備える。
駆動電流源回路95−1〜95−24は、上記の24系列の駆動電流出力を、それぞれ出力端子96−1〜96−24から行う電流源である
なお演出制御CPU200はスレーブアドレスを指定してLED駆動データを送信してくる。
データバッファ/PWMコントローラ93は、シリアルバスインターフェース91から転送されたパラレルデータについて、スレーブアドレス確認を行う。パラレルデータに含まれるスレーブアドレスが、アドレス設定部92に設定された自己のスレーブアドレス(w1〜w(n)、b1〜b(m)のいずれか)と一致していることを確認した場合に、該パラレルデータに含まれるLED駆動データを有効なデータとして、指定されたレジスタに格納する。
D/A変換器94は、輝度情報に応じた値をアナログ信号に変換し、各電流源回路95−1〜95−24への制御信号とする。
各系列(出力端子96−1〜96−24)では、LED120及び抵抗Rの直列接続に対して電源電圧Vccが印加される。電流源回路95−1〜95−24によって各系列のLED120に電流が流され、発光が行われる。
即ち各電流源回路95−1〜95−24は、D/A変換器94から供給された信号に応じた電流量の駆動電流を、対応する系列のLED120に流すように動作する。
なお、本実施の形態では、PWM駆動方式により、電流値が例えば0mAと5mAとされ、時間軸方向で(積分的に)階調制御がされるものとしているが、もちろん階調制御はこれに限らず、実際に電流値を階調に応じて変化させても良いことはいうまでもない。デューティ制御であろうと、レベル制御であろうと、あくまでも単位時間あたりの平均電流値が階調に応じたレベルとされることで適切な階調表現が可能となる。
例えばステッピングモータ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駆動に用いられ、他の一部の出力端子がステッピングモータやソレノイド等の駆動に用いられるという手法を採っても良い。
そして第1系統、第2系統の駆動信号出力手段(枠ドライバ部61、盤ドライバ部62)には、それぞれが1又は複数の演出手段に駆動信号を出力する複数のLEDドライバ90が含まれ、1つの系統内の各LEDドライバ90には、演出制御部51からのシリアルデータが、並列に送信される構成とされている。そして各LEDドライバ90は、自己のID(スレーブアドレス)が含まれる演出駆動データ(シリアルデータ)を取得する。
以下、本実施の形態の制御処理につき説明する。まずここでは主制御部(主制御基板)50によるメイン処理について述べる。
図6は、主制御部50のメイン処理を示すフローチャートである。メイン処理が開始されるのは、停電状態からの復旧時のように初期化スイッチ(図示せず)が操作されることなく電源がON状態になる場合と、初期化スイッチがON操作されて電源がON状態になる場合とがある。いずれの場合でも、パチンコ遊技機1に電源が投入されると、電源基板58によって各制御基板に電圧が供給される。この場合に主制御部50(主制御CPU100)は図6に示すメイン処理を開始する。
次に主制御CPU100はステップS12で、図示してない入力ポートを介して入力されるRAMクリアスイッチの出力信号であるRAMクリア信号の状態(ON、OFF)を判定する。RAMクリア信号とは、RAMの全領域を初期設定するか否かを決定する信号である。RAMクリア信号としては通常、パチンコ店の店員が操作する初期化スイッチのON/OFF状態に対応した値を有している。
続いてステップS17で主制御CPU100は、RAM領域がゼロクリアされたことを報知するための「RAMクリア表示コマンド」を初期化コマンドとして各制御基板に送信する。そしてステップS18で、RAMクリア報知タイマに、RAMクリアされた旨を報知するための時間として、たとえば、30秒を格納する。
その後はステップS20、S21、S22の処理として、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、各種乱数更新処理を実行する。このステップS21の各種乱数更新処理では、特別図柄変動表示や普通図柄変動表示に使用される各種乱数の初期値(スタート値)変更のために使用する乱数や、変動パターンの選択に利用される変動パターン用乱数を更新する。
なお、特別図柄変動表示や普通図柄変動表示に使用される各種乱数とは、例えばインクリメント処理によって所定数値範囲を循環している大当り抽選に係る乱数(図柄抽選に利用される特別図柄判定用乱数)や、補助当り抽選に係る乱数(補助当りの当落抽選に利用される補助当り判定用乱数)などである。また初期値変更のために使用する乱数とは、特別図柄判定用初期値乱数、補助当り判定用初期値乱数などである。
ステップS21の各種乱数更新処理では、上述の特別図柄判定用乱数カウンタや補助当り判定用乱数カウンタの初期値を生成する2つの初期値生成用カウンタ、変動パターン用乱数1カウンタ、変動パターン用乱数2カウンタなどを更新して、上記各種のソフト乱数を生成する。たとえば、変動パターン用乱数1カウンタとして取り得る数値範囲が0〜238とすると、主制御RAM102の変動パターン用乱数1の値を生成するためのカウント値記憶領域から値を取得し、取得した値に1を加算してから元のカウント値記憶領域に格納する。このとき、取得した値に1を加算した結果が239であれば0を元の乱数カウンタ記憶領域に格納する。他の初期値生成用乱数カウンタも同様に更新する。CPU201は、間欠的に実行されるタイマ割込処理を行っている間を除いて、各種乱数更新処理を繰り返し実行するようになっている。
したがって、電源投入時や停電状態からの復旧時である場合には、通常では、バックアップフラグがON状態のはずである。ただし、何らかの理由で電源遮断までに所定の処理が完了しなかったような場合には、バックアップフラグはリセット(OFF)状態になる。そこで、バックアップフラグがOFF状態である場合には、主制御CPU100は処理をステップS13からS16に進め、遊技機の動作を初期状態に戻す。
そして、チェックサム値が算出されたら、この演算結果を、主制御RAM102のSUM番地の記憶値と比較をする。このSUM番地には、電源遮断時に、同じチェックサム演算によるチェックサム値が記憶されている。そして、記憶された演算結果は、主制御RAM102の他のデータと共に、バックアップ電源によって維持されている。したがって、本来は、ステップS14の判定によって両者が一致するはずである。
しかし、電源遮断時にチェックサム演算が実行できなかった場合や、実行できても、その後、メイン処理のチェックサム演算の実行時までの間に、ワーク領域のデータが破損している場合もある。このような場合にはステップS14の判定結果は不一致となる。
判定結果の不一致によりデータ破損が検出された場合には、主制御CPU100はステップS14からS16の処理に進んでRAMクリア処理を実行し、遊技機の動作状態を初期状態に戻す。
そしてステップS15の遊技復旧処理を終えると、ステップS19の処理に進み、CTCを初期設定してCPUを割込み許可状態に設定し、その後は、割込みが発生するまで割込禁止状態と割込許可状態とを繰り返すとともに、その間に、上述した各種乱数更新処理を実行する(ステップS20〜S22)。
このステップS53の処理により、各入賞口において入賞を検出(入賞が発生)したか否かが割込みごとに監視される。また上記「入賞カウンタ」とは、各々の入賞口ごとに対応して設けられ、入賞した遊技球数(入賞球数)を計数するカウンタである。本実施の形態では、主制御RAM102の所定領域に、上始動口41用の上始動口入賞カウンタ、下始動口42a用の下始動口入賞カウンタ、ゲート44用の普通図柄始動口入賞カウンタ、第1大入賞口45a用の第1大入賞口入賞カウンタ、第2大入賞口46a用の第2大入賞口入賞カウンタ、一般入賞口43用の一般入賞口用の入賞カウンタなどが設けられている。
またこの入力管理処理では、入賞検出スイッチからの検出情報が入賞を許容すべき期間中に入賞したか否かに基づいて、不正入賞があったか否かも監視される。たとえば大当り遊技中でないにもかかわらず第1、第2大入賞口センサ75,76が遊技球を検出したような場合は、これを不正入賞とみなして入賞検出情報を無効化し、その無効化した旨を外部に報知するべく後述のステップS55のエラー管理処理において所定のエラー処理が行われるようになっている。
エラー処理としては、たとえば、所定の遊技動作(たとえば、遊技球の払い出し動作や遊技球の発射動作など)の進行を停止させたり、エラー報知用コマンドを演出制御部51に送信して、演出手段によりエラーが発生した旨を報知させたりする。
この払出制御コマンドを受信した払出制御基板53は、遊技球払出装置55を制御し、指定された賞球数の払い出し動作を行わせる。これにより、それぞれの入賞口に対応した賞球数が払い出されるようになっている。入賞口に対応した賞球数とは、入賞口別に設定された入賞球1個当りの所定の賞球数×入賞カウンタの値分の賞球数である。
ステップS59では、主制御CPU100は、特別図柄管理処理を行う。この特別図柄管理処理では、主に、特別図柄変動表示における大当り抽選を行い、その抽選結果に基づいて、特別図柄の変動パターン(先読み変動パターン、変動開始時の変動パターン)や特別停止図柄などを決定する。
ステップS60では、主制御CPU100は特別電動役物管理処理を行う。この特別電動役物管理処理では、主に、大当り抽選結果が「大当り」または「小当り」であった場合、その当りに対応した当り遊技を実行制御するために必要な設定処理を行う。
右打ち報知演出が行われる場合、この右打ち報知情報管理処理において、演出制御コマンドとして、右打ち報知演出の実行指示する「右打ち指示コマンド」が演出制御部51に送信され、このコマンドを受けて、演出制御部51が、画像や音声による右打ち報知の実行制御を行う。
ステップS62では、主制御CPU100は、LED管理処理を行う。このLED管理処理は、図柄表示部33に対して普通図柄表示や第1,第2特別図柄表示のための表示データを出力する処理である。この処理により、普通図柄や特別図柄の変動表示および停止表示が行われる。なお、ステップS57の普通図柄管理処理で作成された普通図柄の表示データや、ステップS59の特別図柄管理処理中の特別図柄表示データ更新処理で作成される特別図柄の表示データは、このLED管理処理で出力される。
ステップS64では、主制御CPU100は、ソレノイド管理処理を行う。このソレノイド管理処理では、ステップS58の普通電動役物管理処理で作成されたソレノイド制御データに基づく普通電動役物ソレノイド77に対する励磁信号の出力処理や、ステップS60の特別電動役物管理処理で作成されたソレノイド制御データに基づく第1,第2大入賞口ソレノイド78,79に対する励磁信号の出力処理を行う。これにより、可動翼片42bや開放扉45b、46bが所定のパターンで動作し、下始動口42aや大入賞口45a、46bが開閉される。
[4−1:メイン処理]
続いて演出制御部51の処理について説明する。演出制御部51の処理としては、主に、メインループ上で16ms毎に行われる処理(以下「16ms処理」ともいう)と、1ms毎に行われる割り込み処理(以下「1msタイマ割込処理」ともいう)がある。
まずここでは16ms処理を含むメイン処理について説明する。
図8は、演出制御部51のメイン処理を示している。演出制御部51(演出制御CPU200)は、遊技機本体に対して電源が投入されると、図8のメイン処理を開始する。
このメイン処理において、演出制御CPU200は、まずステップS101で、遊技動作開始前における必要な初期設定処理を行う。例えば初期設定処理として、コマンド受信割込み設定、可動体役物の起点復帰処理、CTCの初期設定、タイマ割込みの許可、マイクロコンピュータの各部を含めてCPU内部のレジスタ値の初期設定などを行う。
即ちこの例では、演出制御CPU200はステップS102でのIDチェックとステップS117での乱数更新を毎ループ行うと共に、16ms毎に、ステップS105〜S116の処理(16ms処理)を行う。
ステップS102のIDチェックでは、演出制御CPU200はシステム上で設定されている自己或いは接続各部のIDの確認を行う。もし何らかの原因により、ID異常が検出された場合は、ステップS103としてシステム停止処理を行う。
IDに問題のない通常時は、演出制御CPU200はステップS104以下の処理を行うことになる。即ち演出制御CPU200は、16ms処理の実行判断のための割込みカウンタの値が「15」より大きい値となっているか否かを判断する。この割込みカウンタは、後述する1msタイマ割込処理のステップS207でインクリメントされていくカウンタである。従って割込みカウンタの値が「15」より大きい場合とは、16ms処理のタイミングになっていることを意味する。
一方、割込みカウンタの値が「16」以上である場合は、演出制御CPU200はステップS105〜S116の処理を実行し、その後、ステップS117で演出用ソフト乱数の更新処理を行って1回のメイン処理を終え、再びステップS102からの処理を行うことになる。
その場合、まずステップS105では、割込みカウンタをゼロリセットする。以後、再び次の16ms処理までのカウントを行うためである。
特に本実施の形態の場合、該ステップS106では、所定のエラー検知に応じたボリュームMAXエラーフラグの設定処理も行う。ボリュームMAXエラーとは、その発生に応じて出力される音(エラー音)のボリュームをMAXにすべきとされたエラーを意味する。ボリュームMAXエラーが検知された場合、すなわちエラー音をMAXで出力すべきとされた場合は、ボリュームMAXエラーフラグとして例えば0x5Aを設定し、ボリュームMAXエラーが検知されない場合はボリュームMAXエラーフラグとして例えば0x00を設定する。
なお、この音再生処理については図32により後述する。
さらにステップS116ではシナリオ更新カウンタをゼロリセットする。シナリオ更新カウンタは後述の1msタイマ割込処理でインクリメントされるカウンタである。
次に図9により1msタイマ割込処理を説明する。演出制御CPU200は、タイムカウントにより1ms毎に発生する割込要求に応じて、図9の1msタイマ割込処理を実行する。
この1msタイマ割込処理においては、まずステップS201では主制御CPU100からのテストコマンドに応じたチェックサム算出中であるか否かを判断する。チェックサム算出中でなければ、演出制御CPU200はステップS202の入力処理に進む。
このような入力処理(S202)及び入力検知処理(S109)により、ノイズ・チャタリングによる入力誤認識の防止がはかられる。また、入力カウンタを用いており、本実施の形態では例えば16ビットカウンタを用いて65535ms(約65秒)までなどをカウントできるようにしているため、いわゆる長押しの検出も可能となる。
モータ動作更新処理については図36〜図43で後述する。
ステップS204では、演出制御CPU200は、モータ駆動データを出力する。上述のように盤ドライバ部62の一部のLEDドライバ90には、可動体役物モータ部65のステッピングモータ121等が接続されている。このステップS204では、これらステッピングモータ121に対する駆動データとしてのシリアルデータを、盤ドライバ部62の所定のLEDドライバ90(ステッピングモータ121を駆動するLEDドライバ90)に対して出力することになる。
モータ出力処理については図44で後述する。
この割込みカウンタの値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個に対して行われる。
その後、演出制御CPU200はステップS207で割込みカウンタのインクリメントを行い、またステップS208でシナリオ更新カウンタのインクリメントを行う。そしてシナリオ更新カウンタの値が100未満であれば、1msタイマ割込処理を終える。
なお、シナリオ更新カウンタは上述のように16ms処理のステップS116でゼロリセットされるため、通常はシナリオ更新カウンタの値が100以上となることはない。100以上となるのは、演算異常、処理応答異常などにより16ms処理が実行されない場合や、16ms処理内の或る処理の進行が停止しているような場合である。このような場合は、無限ループに入り、WDTによってタイムアップ処理が行われるのを待つことになる。
続いて、16ms処理として図8のステップS108で行われるコマンド解析処理について、図10、図11で説明する。演出制御CPU200は、ステップS108のコマンド解析処理として、主制御部50から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。この具体的な処理として、図10のステップS301〜F308の処理を行う。
ライトポインタは、コマンド受信に応じて更新され、それに応じてライトポインタで示されるアドレスに、受信した演出制御コマンドが格納されていく。リードポインタは、コマンド受信バッファからの読み出しを行った際に更新(ステップS302)される。従って、もしリードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されているということになる。そこでリードポインタ=ライトポインタでなければステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。この場合、次の読み出し(ロード)のためにリードポインタをインクリメントしておく。
そしてモードであれば、コマンドの上位データ受信の処理として、ステップS304に進み、読み出したコマンドデータを、レジスタ「コマンドHIバイト」にセーブする。また「コマンドLOバイト」のレジスタをクリアする。そしてステップS301に戻る。
続いても、リードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されていることになるため、ステップS302に進み、演出制御CPU200はコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。またリードポインタをインクリメントする。
そして読み出したコマンドがイベントであれば、コマンドの下位データ受信の処理として、ステップS303からS305に進み、読み出したコマンドデータを、レジスタ「コマンドLOバイト」にセーブする。
そこで演出制御CPU200はステップS306で、取り込んだコマンドに応じた処理を行う。具体例は図11で後述する。
図11Aは、コマンド対応処理としての基本処理を示している。2バイトの演出制御コマンドの受信に応じて、演出制御CPU200はまず図11AのステップS321で、現在テストモード中であるか否かを確認する。テストモード中であれば、ステップS322ですべての演出シナリオのクリア、音出力の停止、装飾ランプ部63,64におけるLEDの消灯を行う。そしてステップS323でテストモードを終了する。
テストモード中でなければ、これらの処理は行わない。
そして演出制御CPU200は、ステップS330として、取り込んだ演出制御コマンドについての処理を行うことになる。
この場合、演出制御CPU200は、ステップS331で、図柄コマンド待ち状態をセットする処理を行う。これは変動パターンコマンドと、図柄コマンドが順次受信されることで、演出制御CPU200が図柄の変動表示の制御を行うためである。
図11Cは、ステップS330でのコマンド処理として、図柄コマンドを取り込んだ場合の処理S330bを示している。
この場合、演出制御CPU200は、まずステップS332で、変動パターンコマンド受信済みであるか否かを確認する。受信していなければそのまま処理を終える。
図柄コマンドを受信した際に、既に変動パターンコマンド受信済みであれば、ステップS333に進み、まず役物原点補正の動作についてのシナリオ登録を行う。そしてステップS334で、変動開始処理を行う。この変動開始処理では、変動パターンコマンドや図柄コマンドに応じた図柄変動動作のシナリオ設定や、変動表示中に出現させるべき予告演出の実行有無及びその種別を抽選により決定し、決定した予告演出のシナリオ設定を行う。さらに、それらに同期する液晶表示のコマンド送信も行う。
この変動開始処理の実行後、演出制御CPU200は、ステップS335で変動パターンコマンドの削除を行う。
この場合、演出制御CPU200は、ステップS337で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS338でエラー解除コマンドの送信、ステップS339で役物エラー情報のクリア、ステップS340で役物動作の停止、ステップS341で電源投入のシナリオ登録、ステップS342で液晶制御基板52へ送信する電源投入コマンドのセットを順次行う。
この場合、演出制御CPU200は、ステップS343で演出制御RAM202のクリア処理を行う。例えばコマンド受信/送信バッファ、操作部60についての入力情報バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS344でエラー解除コマンドの送信、ステップS345でRAMクリアエラーセットと、エラー報知タイマのセットを行う。さらにステップS346で演出制御RAM202における抽選処理に関する情報のクリア、ステップS347で、シナリオに関する情報のクリアを行う。そしてステップS348で液晶制御基板52へ送信する電源初期投入表示(RAMクリア)コマンドのセットを行う。
次にシナリオ登録・削除処理について説明する。シナリオとは演出制御やエラー処理その他、各種の実行すべき動作を規定したデータである。実行すべきシナリオのデータは、シナリオ登録情報として演出制御RAM202のワーク領域に登録される。図16Aに示すシナリオ登録情報の構造については後述するが、シナリオ登録情報としては、0〜63までの64個のシナリオチャネルが用意されている。この64個のシナリオチャネルに登録されたシナリオは同時に実行可能とされる。以下、シナリオチャネルを「sCH」で示す。
シナリオ登録処理とは、シナリオ登録情報における任意のシナリオチャネルsCHに、登録を要求されたシナリオ番号のシナリオを登録する処理である。原則的には、sCH0〜sCH63のシナリオチャネルは、どのチャネルが用いられても良い。
ステップS401で演出制御CPU200は、まず今回登録すべきシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、何もせずに処理を終える。
「追加ポインタ」+Bのシナリオチャネルが空きでなければ、演出制御CPU200はステップS404で変数Bをインクリメントする。
ステップS405でB<64でなければ、この図12の処理を終える。これは全シナリオチャネルについて探索を行ったが、空きチャネルがなくてシナリオ登録が不可能となる場合である。
まだ全シナリオチャネルの探索(空きチャネルであるか否かの確認)を行っていない時点では、ステップS405でB<64である。その場合はステップS406の確認処理を行い、「追加ポインタ」+Bの値がシナリオチャネルsCHの最大値を超えた値「64」以上となっていなければステップS403に戻る。
また「追加ポインタ」+Bの値が「64」以上となっていた場合は、ステップS407で追加ポインタの値の補正処理を行う。具体的には「追加ポインタ」+Bの値が「64」となった場合、追加ポインタの値を「64」減算する処理を行う。そしてステップS403に戻る。
つまり、ステップS404での変数Bのインクリメントにより、ステップS403が行われるたびに確認されるシナリオチャネルsCHが、順次1つずつ進行することとなる。
また、変数BはステップS402でゼロリセットされてからステップS404でインクリメントされるものであるため、ステップS405でB<64とはならない場合(つまり変数Bが64に達した場合)は、既にステップS403の処理が64回行われた場合である。これは全シナリオチャネルsCH0〜sCH63を調べたが、空きがなかったと判断された場合である。そのため登録不可能として図12の処理を終えることとなる。
そこでステップS406でこの点を確認し、「追加ポインタ」+Bの値が「64」となっていたら、ステップS407では、次に確認するシナリオチャネルを「sCH0」に戻すために、追加ポインタの補正を行う。つまり追加ポインタの値を−64することで、「追加ポインタ」+Bの値が「0」となるようにする。これにより次のステップS403では、シナリオチャネルsCH0が空きであるか否か確認されるようにする。
そしてステップS409で、追加ポインタを、登録を行ったシナリオチャネル+1の値に更新する。つまり今回登録を行ったシナリオチャネルの次のシナリオチャネルの値を、追加ポインタとして記憶しておき、次回の登録処理に使用できるようにする。なお、本実施の形態ではシナリオチャネルはsCH0〜sCH63の64チャネルのため追加ポインタの最大値は63となる。
図13Aは、或るシナリオをシナリオ登録情報から削除する場合の演出制御CPU200の処理を示している。
演出制御CPU200は、コマンド或いはプログラムグラム上で指定される、削除するシナリオ番号(後述のメインシナリオ番号(mcNo))の値に基づいて、図13Aの処理を開始する。まずステップS421で演出制御CPU200は、削除要求にかかるシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、削除せずに処理を終える。
このステップS423,F424の処理によれば、シナリオチャネルsCH0からシナリオチャネルsCH63に向かって順に、削除対象のシナリオを探索していくこととなる。
ステップS423でシナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号であった場合は、ステップS426に進み、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオを削除する処理を行う。
以上により、要求された或るシナリオ番号のシナリオをワーク(シナリオ登録情報)から削除する処理が行われる。
なお、ステップS425でB<64ではないと判断される場合、つまり変数Bが64に達した場合は、シナリオチャネルsCH0〜sCH63の全てを探索したが、削除対象のシナリオが登録されていなかったということになるため、処理を終える。
演出制御CPU200は、コマンド或いはプログラム上で、或るシナリオ番号の範囲で削除指定された場合、まずステップS431で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象範囲に該当するシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象範囲に該当するシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
シナリオチャネルsCH(B)に登録されているシナリオが、削除対象とされた範囲内のシナリオ番号ではなければ、ステップS433を行わずにステップS434に進む。
演出制御CPU200はステップS434では、変数Bをインクリメントし、ステップS435でB<64であることを確認して、ステップS432に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ範囲削除処理を終える。
以上により、シナリオ番号範囲の1又は複数のシナリオについて、ワーク(シナリオ登録情報)からの削除が行われる。
演出制御CPU200は、シナリオ全削除が要求された場合、まずステップS441で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、保護対象のシナリオを登録したシナリオチャネルを確認するために使用する変数となる。さらに変数Bは、まだ確認(保護対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
そしてステップS444で変数Bをインクリメントし、ステップS445でB<64であればステップS442に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ全削除処理を終える。
以上により、ワークにシナリオ登録情報として登録されているシナリオについて、保護対象のシナリオを除く全シナリオの削除が行われる。
続いてメイン処理の16ms処理のステップS110で行われるシナリオ更新処理について説明する。シナリオ更新処理では図14、図15で説明するようにメインシナリオとサブシナリオの更新が行われる。
先に述べたように本実施の形態では、シナリオ登録情報は、シナリオチャネルsCH0〜sCH63の64個のチャネルを有するものとされる。各シナリオチャネルsCHに登録されたシナリオについては同時に実行可能とされる。
待機時間(delay)は、シナリオチャネルsCHに登録してからそのシナリオが開始されるまでの時間を示す。なおこの待機時間(delay)は16ms処理毎に1減算される。待機時間(delay)が0の場合に、登録されたデータに対応した処理が実行されることとなる。
なお、メインシナリオタイマ(msTm)の値は、メインシナリオの開始時から、16ms処理で行われるシナリオ更新の処理で+1されるため、「1」とは16msを示すものとなる。各シナリオ番号のシナリオテーブルは、或る行におけるメインシナリオタイマ(msTm)の時間を経過すると、次の行へ進むことになる。各行の時間データは、その行が終わるタイミングを示している。
例えばシナリオ番号2の場合、1500×16msの時間としてサブシナリオ番号2の動作が指定され、次の500×16msの時間としてサブシナリオ番号20の動作が指定され、次の2000×16msの時間としてサブシナリオ番号21の動作が指定されている。その次の行はシナリオデータ終了コードD_SEENDである。シナリオデータ終了コードD_SEENDの場合、シナリオ登録情報(ワーク)から、このシナリオが削除される(後述する図14のステップS617参照)。
本実施の形態では、ランプデータ登録情報は、ランプチャネルdwCH0〜dwCH15の16個のチャネルを有するものとされる。各ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。従ってランプチャネルdwCH15に登録されたシナリオ(ランプサブシナリオ)が最も優先的に実行される。また例えばランプチャネルdwCH3、dwCH10にシナリオが登録されていれば、ランプチャネルdwCH10に登録されたシナリオが優先実行される。
なお、ランプチャネルdwCH0は主にBGM(Back Ground Music)に付随するランプ演出、ランプチャネルdwCH15はエラー関係のランプ演出に用いられ、ランプチャネルdwCH1〜dwCH14が通常演出に用いられる。
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駆動データが作成される。
本実施の形態では、モータデータ登録情報は、モータチャネルmCH0〜mCH7の8個のチャネルを有するものとされる。
各モータチャネルmCHに登録できる情報としては、図示のように、実行動作ナンバ(no)、登録動作ナンバ(noNew)、動作カウント(lcnt)、励磁カウンタ(tcnt)、実行ステップ(step)、動作ライン(offset)、親(移行元)/子(移行先)の属性(attribute)、親ナンバ(retNo)、戻りアドレス(retAddr)、ループ開始ポイント(roopAddr)、ループ回数(roopCnt)、エラーカウンタ(errCnt)、現在の入力情報(currentSw)、ソフト上のスイッチ情報(softSw)、ソフト上のカウント(softCnt)がある。
各番号の音/モータサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値(ms)が記述されるとともに、BGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションの情報が記述可能とされる。また最終行には、シナリオデータ終了コードD_SEENDが記述される。
この音/モータサブシナリオテーブルに関しては、サブシナリオタイマ(scTm)の値が当該音/モータサブシナリオテーブル中の或るラインに記述された時間データ(time)の値になったら(なお最初は0である)、そのラインに記述されたBGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションに応じた情報を音データ登録情報やモータデータ登録情報に登録することになる。
なお、各ラインの時間データ(time)は、当該ラインを開始するタイミングを示している。
モータ番号に対応するモータチャネルに対して、この動作パターン番号がセットされる。
また、音/モータサブシナリオテーブルに記述されるモータの情報をモータデータ登録情報としてワークに登録する具体的な処理については図33により後述する。
本実施の形態では、音データ登録情報は、音チャネルaCH0〜aCH15の16個のチャネルを有するものとされる。この音チャネルaCH0〜aCH15のそれぞれは、音源IC59の入力チャネル(同じく16個)のそれぞれに対応するものである。
各音チャネルaCHに登録できる情報としては、図示のように、1次ボリューム遷移量(frzVq)、1次ボリューム(frzVl)、遷移量変化(rsv2)、ボリューム変化(rsv1)、フレーズ変化(rsv0)、ステレオ(frzSt)、ループ(frzLp)、フレーズ番号hi(frzHi)、フレーズ番号low(frzLo)、及び2次ボリューム(scdVl)がある。
また、2次ボリュームとは、1次ボリュームとの掛け合わせで最終的な再生ボリュームを定めるボリューム情報となる。
1次ボリュームと2次ボリュームとの違いは、以下の通りである。
1次ボリュームは、上記のようにフレーズの再生開始を指示するシナリオデータにも記述されるのに対し、2次ボリュームは後述する音コントロール(音制御情報)のシナリオデータに記述される。
また、本実施の形態の場合、1次ボリュームによっては、1次ボリューム遷移量(frzVq)の情報と組み合わされることで、再生中のフレーズに対するボリューム制御が可能とされ、該1次ボリュームの制御によってフレーズのフェードイン再生/フェードアウト再生が可能とされる。後述もするように、これらフェードイン再生/フェードアウト再生の指示は、音コントロールとしてのシナリオデータに基づき実行される。
2次ボリュームは、通常はパチンコ遊技機1の裏側に設けられたボリュームスイッチの状態に応じた値に設定され、後述するようにエラー時や所望のフレーズを消音させたいとき等にMAX値とは異なる値が設定される。
2次ボリュームの変化指示は、音コントロールとしてのシナリオデータによっても可能とされる(この点についても後述する)。
遷移量変化rsv2は、1次ボリューム遷移量frzVqを変化させるか否かを表す情報であり、ボリューム変化rsv1は、フレーズ再生時に1次ボリュームを変化させるか否かを表す情報となる。また、フレーズ変化rsv0はフレーズ番号を書き替えるか否かを表す情報であり、ステレオfrzStはステレオ再生/モノラル再生の何れであるか、ループfrzLpは無限ループ再生かループ再生しないかの何れかをそれぞれ表す情報となる。
ステレオ再生を指示するシナリオデータには、ステレオ再生すべきフレーズを指定するためのフレーズ番号(指定情報としてはLchとRchとで共通の1つのフレーズ番号が用いられる)の情報と、ステレオ再生を指定するための情報とが記述され、該シナリオデータに基づき、音データ登録情報における偶数の音チャネルaCHnと奇数の音チャネルaCHn+1とにこれらフレーズ番号とステレオ再生の指示情報とが登録される(上述のフレーズ番号hi,lowとステレオfrzSt)。
音/モータサブシナリオテーブルにおけるSE(SE1及びSE2)とは、BGMとエラー音以外の演出に係る音を意味する。いわゆる予告演出時の音(予告音)は、このSEに分類される。
SE1とSE2の区別は、その音を出力する演出の出現頻度による別としている。例えば予告音であれば、その音を使用する予告演出の出現頻度(信頼度)による区別となる。本例の場合、SE2はSE1よりも出現頻度が低い演出に係る音とされる。
これら音/モータサブシナリオテーブルに記述されたBGM、SE1、SE2、エラー音の情報は、音データ登録情報における何れかの音チャネルaCHに登録されることになるが、本実施の形態では、これらBGM、SE1、SE2、エラー音の音の種別ごとに、その情報内容を登録する音チャネルaCHを予め定めておくものとしている。
具体的に、音/モータサブシナリオテーブルに記述されたBGMの情報については、音チャネルaCH0(ステレオの場合は加えてaCH1)に登録する。また、SE1の情報については音チャネルaCH2〜aCH9のうちの空きチャネルに登録し、SE2の情報については音チャネルaCH10〜aCH14うちの空きチャネルに登録する。さらに、エラー音の情報については音チャネルaCH15に登録する。
このように本実施の形態では、音の種別と、その音についての音関連の情報を登録する音チャネルaCHとの対応関係が予め定められている。
本実施の形態の場合、当該音コントロールの情報は4バイトで構成され、下位3バイトがコントロール対象のフレーズを指定するための情報、上位1バイトがコントロール情報(音のコントロール内容を表す情報)とされている。
このため、音コントロールの情報に基づき所定の種別の音(BGM/SE1/SE2/エラー音)をコントロールするとしたときは、音コントロールの情報を、その音に対応する音チャネルaCHに対して登録すればよい。
この点に鑑み本実施の形態の音コントロールの情報では、その下位3バイトの情報、即ちコントロール対象のフレーズを指定するための情報として、音チャネルaCHを指定する情報を記述する。つまり、コントロール対象とする音(フレーズ)が再生される音チャネルaCH(つまりBGM/SE1/SE2/エラー音の別に応じたaCH0(及びaCH1)/aCH2〜aCH9/aCH10〜aCH14/aCH15の別)を指定する情報が記述される。
従って探索処理が省略される分、演出動作に係る制御負荷を軽減できる。
このように音コントロール情報を、制御内容情報の登録先の音チャネルaCHの指定が可能な情報としたことでも、制御対象の音を再生中の音チャネルaCHを探索せずに済むものとできる。即ち、音コントロール情報をこのような構成とした点も、探索処理の省略、つまりは演出動作に係る制御負荷の軽減に寄与するものである。
また、図9のステップS203のモータ動作更新処理では、図14,図15のシナリオ更新処理で更新されるモータデータ登録情報に基づいて、モータ駆動データが作成される。
図8の16ms処理のステップS110として実行される図14のシナリオ更新処理では、演出制御CPU200はループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて、ステップS600〜S616の処理を行う。当該ループ処理の各回の処理対象のシナリオチャネルを「sCHn」として説明する。
ステップS604では、当該特定したアドレスで示される、メインシナリオテーブルの或るメインシナリオ番号の実行ラインが、終了コードD_SEEND(図18参照)が記述されている最終ラインであるか否かを確認する。
終了コードが記述された最終ラインで合った場合は、当該シナリオチャネルsCHnに登録されたシナリオで実行すべき処理は終了したことになるため、ステップS617で、そのシナリオチャネルsCHnに登録されているシナリオをシナリオ登録情報(ワーク)から削除する。
なお、この場合のシナリオ登録の削除は、シナリオ終了に応じた通常の削除である。先に図13で説明したシナリオ削除は、この通常削除以外の、例えば未終了のシナリオをシナリオ登録情報(ワーク)から削除する処理であることを付言しておく。
そしてステップS608で当該シナリオチャネルsCHnで指定されるサブシナリオの更新を行う。サブシナリオの更新については図15で後述する。
また、ステップS610においてメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上ではないとされた場合は、ステップS615に進む。
またステップS612で次のラインはループ指定ではないとされた場合は、ステップS613を経由せずステップS614に進む。
そしてステップS615のチェックサム処理、ステップS616のバックアップ処理を行ってシナリオチャネルsCHnについての1回の処理を終える。
シナリオ更新処理としては、ループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて以上の処理が実行されることになる。
メインシナリオタイマ(msTm)、シナリオチャネルsCHnと、メインシナリオテーブルに記述されたサブシナリオ番号(scNo)に基づいて、図15Aのサブシナリオの更新処理が行われる。
シナリオチャネルsCHnが適正値であれば、演出制御CPU200はステップS622で、サブシナリオ番号(scNo)とサブシナリオ実行ラインlmp(lmpIx)に対応するランプサブシナリオテーブル(図19A参照)のアドレスを特定する。
点灯パターンナンバの登録処理を図15Bに示している。この場合、まず演出制御CPU200はステップS651で、当該ラインに記述されているランプチャネルdwCHの値が正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
正常値であれば、ステップS652で、当該ラインに記述されているランプナンバが正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
ランプチャネルdwCH及びランプ番号のいずれもが正常値であれば、ステップS653でワークのランプデータ登録情報における、ランプチャネルdwCHに対応する領域に登録点灯ナンバ(lmpNew)と実行点灯ナンバ(lmpNo)をセットする。即ちランプサブシナリオテーブルの当該ラインから取得したランプナンバを、登録点灯ナンバ(lmpNew)にセットし、「0」を実行点灯ナンバ(lmpNo)にセットする。
以上の図15Bの処理をステップS628で行ったら、演出制御CPU200はステップS629でサブシナリオ実行ラインlmp(lmpIx)の値を+1し、ステップS630でランプチャネルカウント値を+1してステップS624に戻る。
そして、ステップS632で、サブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上であるか否かを確認する。即ち、サブシナリオタイマ(scTm)の値が、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(sclx)で示されるラインの時間データ(time)の値以上であるか否かを確認する。
シナリオデータ終了コードD_SEENDが記述された行でなければ、演出制御CPU200はステップS635で音の登録を行い、またステップS636でモータの登録を行う。これらステップS635,S636の登録処理としては、図19Bに例示したような音/モータサブシナリオテーブルの該当サブシナリオ番号の該当ラインの情報を、図17の音データ登録情報の音チャネルaCH、図16Cのモータデータ登録情報のモータチャネルmCHにそれぞれ登録する処理を行う。
なお、ステップS635として実行される音の登録の詳細な処理内容については図24〜図28で後述し、また、ステップS636として実行されるモータの登録の詳細な処理内容については図33で後述する。
そしてステップS638で、サブシナリオ実行ライン(scIx)の値として次のラインの値をセットする。さらにステップS640でサブシナリオタイマ(scTm)をインクリメントして処理を終える。
また実行する演出に応じた演出デバイスの動作データは第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となるように記憶領域を割り当てている。
これによって多彩な演出動作を可能としたまま、メモリが闇雲に消費されないようにしている。
そして演出制御CPU200は、ワークエリアにシナリオ登録情報として登録された演出データに記憶されている1又は複数の指定情報を処理対象として、その指定情報に応じた処理を順次実行する(図14のステップS603〜S616)。また演出データ上に記憶された終了情報(終了コード(D_SEEND))が処理対象となったことに応じて、該演出データ(シナリオ)をワークエリアのシナリオ登録情報から削除する処理を行う(図14のステップS617)。
このように、処理がメインシナリオテーブルの終了コードの行に達した際に、即座にワークエリアからのシナリオ削除処理を行うことで、ワークエリアの有効利用や処理の効率化、処理負担の削減を図ることができる。
例えば通常、シナリオ登録情報上のシナリオ削除には、終了コードに応じて当該シナリオチャネルsCHにフラグを立て、その後、シナリオ削除処理としてフラグが立てられたシナリオチャネルsCHの内容を削除するような処理を行う。これに対して、本実施の形態では、そのような独立したシナリオ削除処理は、図13で説明したような特殊な場合(例えばコマンド等で特に削除が指定されたような場合)に限り、通常の終了、即ちシナリオに関する処理の終了に応じた終了の際には、自動的にステップS617で削除されるようにしている。従って、ワークからのシナリオ削除処理が効率的に実行される。またワークエリア上の終了シナリオの管理(例えば上記フラグ設定)も必要なくなる。
以上のように終了コードに応じたシナリオ削除を行うことによって、処理の効率化とメモリの有効利用が促進される。
つまりメインシナリオテーブルからサブシナリオテーブルが導かれる階層構造が採用されており、実際の個々の演出デバイスとして、発光デバイス(装飾ランプ部63,64)、音デバイス(音源IC59)、モータデバイス(可動体役物モータ部65)の動作はサブシナリオテーブルで規定される。演出制御CPU200は、メインシナリオテーブルを特定するのみで、複数の演出デバイスを統合制御できることになり、複数の演出デバイスを用いた多様な演出動作を簡易に管理及び実行制御できる。これにより演出制御CPU200の処理負担を軽減しつつ多様な演出が実現できる。
また階層構造を持つことで、例えばサブシナリオテーブルの組み合わせを変えたメインシナリオテーブルを多数持つなどして、多様なシナリオを簡易に設定できるとともに、そのためのメモリ容量を削減できる。
図8のステップS113のLED駆動データ更新処理を説明する。
この処理は、ランプデータ登録情報に登録されている点灯ナンバ(登録点灯ナンバ(lmpNew)、実行点灯ナンバ(lmpNo))に対応するランプデータテーブルを参照して、LED駆動データを作成する処理である。なお上述のように、ランプデータ登録情報の点灯ナンバには、元々はランプサブシナリオテーブルに記述された、点灯パターンを示すランプナンバがセットされる。ランプナンバは点灯パターンを示すナンバと述べたが、具体的には図23Aで述べるランプデータテーブルのランプデータの番号を示すことになる。
演出制御CPU200はステップS701でそれまで出力データとしていたLED駆動データをクリアする。
そしてループ処理LP2として、ランプデータ登録情報のランプチャネルdwCH0〜dwCH15のそれぞれについて、ステップS702〜S720の処理が行われる。以下、処理対象のランプチャネルを「dwCHn」と表記して説明する。
なお実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が一致していれば、既に過去に以上のステップS703,S704の処理が行われたものであるため、これらの処理は不要である。
図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の処理が行われることになる。
このような優先度の設定のため、図21Bのように複数のランプチャネルdwCHの動作が重なる場合、優先度の高いランプチャネルの点灯動作が実行される。例えば時点t0からは、ランプチャネルdwCH0、dwCH5に基づく点灯動作が制限され、dwCH8に基づく点灯が行われるようにLED出力データが生成される。優先度の低いランプチャネルの情報を反映させないようにするためには、後述するマスクデータが使用される。
実行点灯ナンバ(lmpNo)が異常であれば、ステップS719に進む。なおランプチャネルdwCHnが登録されていない空きチャネルの場合、つまり実行点灯ナンバ(lmpNo)と登録点灯ナンバ(lmpNew)が「0」の場合も、ここでは異常としてステップS719に進む。
なお、このステップS705では、登録点灯ナンバ(lmpNew)の値が正常範囲であるか否かを確認するようにしてもよい。
またステップS707では、ランプチャネルdwCHnに登録された実行点灯ナンバ(lmpNo)、マスクデータテーブルのアドレスを特定する。
アドレスの特定のためには演出制御CPU200は、図22のようなランプデータアドレステーブルを参照する。このランプデータアドレステーブルには、各点灯パターン、例えば全体点滅、右側点滅、左側点滅、役物点灯などを実現するためのランプデータ番号のアドレスが示されている。図22の左端の数字は、図19Aのランプサブシナリオテーブルで示されるランプナンバであり、例えばランプナンバ2のランプデータのアドレスの欄には、全体点滅の点灯パターンを行うためのランプデータ番号が記憶されたアドレスが記述されている。
また、マスクデータのアドレスの欄には、そのランプデータ番号の点灯パターンを実行する際に必要なマスクデータが記憶されたアドレスが記憶されている。例えば点灯ナンバ5の右側点滅の点灯パターンを行う際には、センターケースマスクが必要になるが、そのセンターケースマスクを行うためのマスクデータのアドレスが記述されている。
各番号のランプデータにおける各ラインには、タイマ(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)のそれぞれに対して設定されて、かつそれらが各ライン毎に設定されることで、時系列的に変化する所定の発光パターンが示されることになる。(図では点灯データは一部のみに例示した。空欄部分は図示を省略したもので、実際には点灯データが記述される)
各マスクデータ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はデータ値の図示を省略している)
続いてステップS708で演出制御CPU200は、ランプデータテーブルの該当ライン(現在対象のランプチャネルdwCHnの実行ライン(offset)で示されるライン)のタイマ(frame)を取得し、これを変数Dtimeに代入する。
ステップ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)の値をループ先のアドレスに更新する。
以上で、1つのランプチャネルdwCHnを対象としたLEDデータ更新を終える。ループ処理LP2として、以上の処理をランプチャネルdwCH0〜dwCH15まで順次行うことになる。
点灯データとマスクデータを展開してLED駆動データを生成する出力データバッファは、ランプデータテーブル及びマスクデータテーブルと同様に、各LEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対応して用意される。例えば1つのLEDドライバ90に対応する(4×24)ビットの情報の領域が、例えば9個のLEDドライバ90(w1〜w4、b1〜b5)のそれぞれに対して設けられる。この場合、出力データバッファは9×(4×24)ビットのバッファ領域とされる。
例えば図21で示した時点t0の場合、出力データバッファは、ランプデータ2のマスクデータ(図22参照:マスクなし)がアンド展開され、ランプデータ2の3ライン目の点灯データがオア展開された状態の後、ランプデータ5のマスクデータ(図22参照:センターケースマスク)がアンド展開され、ランプデータ5の2ライン目の点灯データがオア展開された状態となっている。
上述の通りマスクデータは0h(=0000)が消灯、Fh(=1111)がマスクなしである。従ってマスクデータをアンドで展開するということは、その時点までの出力データバッファの値について、消灯(マスク)したいビットを「0」とし、マスクしないビットは変更しないということになる。
さらに点灯データをオアで展開するということは、処理中のランプチャネルdwCHの点灯データが、マスク後の出力データバッファに反映させるということになる。
この処理をランプチャネルdwCH0〜dwCH15について順次行うことで、高い番号のランプチャネルほど優先されたLED駆動データが出力データバッファ上に形成されることになる。
このようにすることで、ワーク、つまりランプデータ登録情報の各ランプチャネルdwCH上で、実行予定の点灯パターンと、実行中(ステップS706〜S718のLED駆動データ更新処理中)の点灯パターンを容易に管理・区別できる。
このような処理により、ワーク上での登録点灯ナンバ(lmpNew)、実行点灯ナンバ(lmpNo)の処理が容易で演出制御CPU200の処理負担も削減でき、その上で、実行予定、実行中の点灯パターンが明確に管理でき、ステップS705では、実行点灯ナンバ(lmpNew)を参照して処理を分岐し、冗長な処理を回避できる。
またステップS702で、登録点灯ナンバ(lmpNew)と実行点灯ナンバ(lmpNo)が一致していなければ、ステップS703で実行点灯ナンバ(lmpNo)に登録点灯ナンバ(lmpNew)の値を代入するという処理を採用することで、ランプデータ登録情報以外を参照せずに実行点灯ナンバ(lmpNo)を更新でき、これも処理負担削減に有効である。
このように、演出制御CPU200の処理負担の軽減が図られている。
続いて、図15のステップS635として実行する音の登録処理について説明する。
この音の登録処理は、図19Bに例示した音/モータサブシナリオテーブルの記述内容(サブシナリオデータ)に応じた情報を、図17の音データ登録情報の音チャネルaCHに登録する処理となる。
まず、演出制御CPU200はステップS800で、音/モータサブシナリオテーブルに音データが存在するか否かを判別する。即ち、音/モータサブシナリオテーブルの当該サブシナリオ番号の該当ラインの記述情報として、BGM/SE1/SE2/エラー音/音コントロールの何れかの情報が存在するか否かを判別する。
これらの音データが存在しない場合は処理を終える。
先に説明したように、音データがBGM、SE1、SE2、エラー音の場合、その記述内容(つまりシナリオデータ)としては少なくとも再生すべきフレーズのフレーズ番号とその1次ボリュームの情報と、ループ再生やステレオ再生の有無に関する情報とが含まれ、従ってこれらの情報が音データ登録情報に登録される。
なお、BGM、SE1、SE2についてはステレオ再生が可能とされ、その場合は音/モータサブシナリオテーブルのBGM、SE1、SE2の情報でその指示が為される。例えばBGMがステレオ再生される場合、音チャネルaCH0のみでなく音チャネルaCH1も使用される。この場合、これら音チャネルaCH0、aCH1のうち、偶数チャネルである音チャネルaCH0に、フレーズ番号(frzHi、frzLo)としてBGMの情報に記述されたフレーズ番号が登録されると共に、ステレオ(frzSt)の情報として「1」が記述される。またループ再生をする場合には、ループ(frzLp)の情報として「1」が記述される。
そして、ステップS806でSE1の設定処理を実行した場合、或いはステップS805で音データがSE1でないとされた場合、演出制御CPU200はステップS807で音データがSE2か否かを判別し、SE2であった場合はステップS808でSE2の設定処理を行う。
さらに、ステップS808でSE2の設定処理を実行した場合、或いはステップS807で音データがSE2でないとされた場合、演出制御CPU200はステップS809で音データが音コントロールか否かを判別し、音コントロールであった場合はステップS810で音コントロールの設定処理を行う。
ステップS810で音コントロールの設定処理を実行した場合、或いはステップS805で音データが音コントロールでないとされた場合、演出制御CPU200は図24に示す処理を終える。
なお、これらSE1の設定処理、SE2の設定処理の内容は、音データの登録対象とする音チャネルaCH(対応音チャネルaCH)が異なる以外は共通であるため、当該図25の一図での説明とする。
従って、ステップS901の処理は、SE1の設定処理(S806)として実行される場合は音チャネルaCH2〜aCH9の再生状態を取得する処理となり、SE2の設定処理(S808)として実行される場合は音チャネルaCH10〜aCH14の再生状態を取得する処理となる。
各音チャネルaCHの再生状態の取得、即ちフレーズを再生中であるか否かの情報の取得は、音源IC59に音チャネルaCHごとに設けられた再生状態情報格納レジスタの値を取得することで行う。
以下のステップS903〜S911の処理により、スタート音チャネルaCHから順に空きチャネルを探索してSEの音データの登録を行うべく、ステップS902で設定音チャネルaCHをスタート音チャネルaCHに設定する。
設定音チャネルaCHがエンドチャネルより大である場合は、対応音チャネルaCHに空きがないことから処理を終了する。
一方、設定音チャネルaCHがエンドチャネルより大でない場合はステップS903に戻る(つまり次の音チャネルaCHについて再生中か否かの判別が行われる)。
設定音チャネルaCHに音データがある、つまり設定音チャネルaCHは空きではないとされた場合、演出制御CPU200はステップS908に進む。つまりこれにより、対応音チャネルaCH内における次の空きチャネルを探索するようにされる。
前述のように本例では、ステレオ再生は偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とを使用する。このためステレオ再生を要求するシナリオデータに応じては、連続した偶数・奇数の空きチャネルを探索することを行う。そこでステップS906で設定音チャネルaCHが偶数チャネルでなければ、次の音チャネルaCH以降で空きチャネルを探索するようにしている。
またステップS906で設定音チャネルaCHが偶数チャネルであれば、演出制御CPU200はステップS907に進み、設定音チャネルaCHの次の音チャネルaCHも空きチャネルであるか否か(再生中でないかも含めて空きチャネルであるか否か)を判別する。
設定音チャネルaCHの次の音チャネルaCHが空きチャネルでなければ、ステップS908に進む。つまり、対応音チャネルaCH内での次の空きチャネルを探索する。
設定音チャネルaCHの次の音チャネルaCHが空きチャネルであれば、連続する偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とが使用できることになる。そこでステップS911に進んで、テーブルの音データを設定音チャネルaCHに対応したワークの領域にセットし、処理を終了する。本実施の形態では、連続する偶数、奇数の音チャネル(aCHn、aCHn+1)のうち、偶数の音チャネルaCHnのみに音データをセットする。
ところが奇数チャネルである場合は、上記のようにステレオ使用されている2つの音チャネル(aCHn、aCHn+1)のうちの奇数チャネルである可能性がある。ステレオ使用される奇数チャネルには音データをセットしないため、上記ステップS904で空きチャネルと判断されることから、ステレオ使用にかかる音チャネルの確認が必要となる。
そこでステップS910で偶数チャネルではないと判断された場合、ステップS912に進んで、1つ前の偶数チャネルがモノラル再生中であるか否かを確認する。
もし1つ前の偶数チャネルがステレオ再生中であれば、現在の設定音チャネルaCHは使用できないため、ステップS908に進む。
1つ前の偶数チャネルがモノラル再生中であれば、ステップS911に進み、テーブルの音データを設定音チャネルaCHに対応したワークの領域にセットして処理を終了する。
また、当該SE1又はSE2の情報がフレーズのステレオ再生を要求するものであった場合は、音源IC59がステレオ再生に偶数チャネルとその次の奇数チャネルとを使用することを要求する場合に対応して、対応音チャネルaCH内における偶数チャネルとその次の奇数チャネルを用いるようにし、偶数チャネルに音データを登録できる。つまりこれにより、音源IC59の仕様に応じた適切な情報登録を行うことができる。
図26は、ステップS810の音コントロールの設定処理を示している。
まず、演出制御CPU200はステップS1001で、音コントロールの情報の上位1バイトの値を確認する。
本実施の形態の場合、音コントロールの情報は4バイトで構成され、その上位1バイトに音のコントロール内容を表すための情報(コントロール種別の情報)が記述され、下位3バイトに音のコントロール対象とする音チャネルaCHを指定するための情報(コントロール対象の情報)が記述される。
この上位1バイトのコントロール種別の情報によっては、フェードイン再生やフェードアウト再生、及び2次ボリュームの変化指示が可能とされる。
具体的に、0x20〜0x70までのフェード系の情報としては、0x25(SFO1M)が「フェードアウトゆっくり 消音」、0x35(SFO2M)が「フェードアウト普通 消音」、0x45(SFO3M)が「フェードアウトはやく 消音」、0x20(SFO1)が「フェードアウトゆっくり 音小」、0x30(SFO2)が「フェードアウト普通 音小」、0x40(SFO3)が「フェードアウトはやく 音小」、0x50(SFI1)が「フェードインゆっくり」、0x60(SFI2)が「フェードイン普通」、0x70(SFI3)が「フェードインはやく」を表す。
ここで、「ゆっくり」「普通」「はやく」は、フェード制御におけるボリュームの遷移速度(speed)を意味する。またフェードアウトについての「消音」と「音小」の違いは、遷移後のボリュームが「0」か否かである。
また、90h以上である場合、演出制御CPU200はステップS1003で音チャネルaCH0〜aCH14の2次ボリュームを上位1バイトが示すボリューム値にセットして処理を終了する。
まず、演出制御CPU200はステップS1101で、変換テーブルから上位1バイトの値に対応する2バイトの値を取得する。そして、ステップS1102で、下位3バイトの値に基づき2バイトの値を取得する。
その上で、ステップS1103では、これらステップS1101とS1102とで取得した2バイトの値を連結する。
まず、ステップ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バイトのコントロールデータを得る。
ここで、本実施の形態では、図28Aの変換処理で得られる計4バイトのコントロールデータを、そのまま音データ登録情報に設定(登録)する。この意味で図中では、図28Aの変換処理で得られるコントロールデータのことを「音データ登録情報に設定するデータ」と示している。
この図28Cによると、フェード系の音コントロールの情報として例えば上位1バイト=SFO1M(フェードアウトゆっくり 消音)、下位3バイト=BG_Tとされた情報については、上記の変換処理によって「0x2000D000」というコントロールデータに変換されることが分かる。また、例えば上位1バイト=SFO3M(フェードアウトはやく 消音)、下位3バイト=YK1_Tとされた音コントロールの情報については、「0xFF00C000」というコントロールデータに変換されている。
前述のように本実施の形態では変換後のコントロールデータをそのまま音データ登録情報にセットするので、例えば上記の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」
となる。
ここで、「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御は、時間経過と共にボリュームを徐々に変化させるようなサブシナリオデータを用意しておくことで実現することも考えられるが、その場合は時間ごとのサブシナリオデータを保持させておくことになり、その分メモリ容量を要することになる。これに対し上記のような変換処理を行う本実施の形態によれば、サブシナリオデータとしては単に「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御の違いのみを表す情報を記述すればよく、一種のフェード制御に要するサブシナリオデータの数を1つに削減でき、結果、サブシナリオデータを保持するためのメモリ容量を削減できる。
また、フェードイン/アウトとして具体的なボリューム遷移量などを変更するとしたときにも、図28Bに示した変換テーブルの内容を変更するだけでよく、同様にサブシナリオデータの書き替えやプログラムの書き換えは行わずに済み、変更に係る作業負担を軽減できる。
この図29の例では、音/モータサブシナリオテーブルにおける音/モータサブシナリオ番号001のサブシナリオデータとして、時間(time)=0でBGMを「フェードアウトはやく 音小」(SFO3+BG_T)の態様でフェードさせ、時間=0でSE1のフレーズ0001をボリューム0x80での再生を開始させ、時間=2000でSE1のフレーズ0002をボリューム0x80でのステレオ再生を開始させ、時間=5000でBGMを「フェードインゆっくり」(SFI1+BG_T)の態様でフェードさせる情報が記述された場合を例示している。
なお図中にも記しているが、フレーズの終了タイミングはそのフレーズとしての音データが終了する時点となる。
図8のメイン処理における音再生処理(S111)によって、このように音データ登録情報にセットされた情報が順次音源IC59に出力されて、サブシナリオデータに応じた音出力が実現される。これにより、図中の下段に示すようなBGMのフェードアウトとフレーズ0001の再生が実現される。
さらに、時間5000となることに応じて、音データ登録情報に当該時間=5000のラインに記述された音コントロールの情報(SFI1+BG_T)に応じたコントロールデータが登録され、この登録情報がステップS111の音再生処理で音源IC59に順次出力されることで、図中に示すような時間=5000におけるBGMのフェードインが実現される。
図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の消音状態が解除される。
前述のように、これらSE1とSE2の分類は、その演出の出現頻度の別としている。従って、出現頻度の高い(つまり信頼度の低い)SE1の音を再生中に、後から出現頻度のより低い(信頼度のより高い)SE2の音を再生すべきとされた場合において、図30の例と同様に音コントロールの情報による2次ボリュームの制御を行うことで、再生中のSE1を消音させて、SE2の方が優先的に出力されるようにすることができる。
ここで、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に示したような音量制御を適正に実現することができる。
続いて、図8のステップS111として実行する音再生処理について説明する。
前述のように音再生処理は、音データ登録情報としてワークにセットされた情報に基づき音源IC59に音出力を実行させる処理となる。
まず、演出制御CPU200は、ループ処理LP3として、音データ登録情報の音チャネルaCH0〜aCH15のそれぞれについてステップS1200〜S1220の処理を行う。以下、処理対象とする音チャネルaCHを「aCHn」と表記して説明する。
ボリュームMAXエラーフラグが0x5Aであれば、ステップS1221に進みワークの2次ボリュームについて音チャネルaCH0〜14(エラー音以外)=0x00、音チャネルaCH15(エラー音)=0x80に書き換えを行い、ステップS1201に進む。
一方、ボリュームMAXエラーフラグが0x00であれば、ステップS1221によるワークの2次ボリュームの書き換えは行わずにステップS1201に進む。
前述のように2次ボリュームの値は、通常はボリュームスイッチの状態に応じた値が音データ登録情報の全音チャネルaCHにセットされる。或いは、シナリオとして、或る音チャネルaCHの2次ボリュームの変化を指示する音コントロールの情報が記述されていた場合には、該音コントロールの情報に記述された2次ボリュームの値が、音データ登録情報における該音コントロールの情報で指示された音チャネルaCHにセットされている。また、ボリュームMAXエラーが発生中であれば、上記のステップS1221の処理によって音チャネルaCH0〜14には「0」が、音チャネルaCH15にはMAX値がセットされている。
ここで、本実施の形態では、図17に示した音データ登録情報の上位2バイト(「1次ボリューム遷移量」「1次ボリューム」)の値を用いて、フレーズの差し替え要求が可能とされている。具体的には、音データ登録情報の上位2バイトが所定値(例えば本例では「0x5A5A」であるとする)であれば、それをフレーズの差し替え要求と解釈するものである。
ステップS1204では、音チャネルaCHnにセットされたデータの上位2バイトが所定値「0x5A5A」であるか否かを判別することで、フレーズの差し替え要求であるか否かを判別する。
一方、差し替え要求でなければ、ステップS1205を経由せずステップS1206に進む。
ここで、音データ登録情報における遷移量変化rsv2の値は、フェード系の音コントロールの情報に基づいて音の登録処理(S635)が実行された場合には「1」がセットされ、フェード系以外(つまり2次ボリュームの変化指示)の音コントロールの情報やBGM、SE1、SE2、エラー音の情報に基づいて音の登録処理が実行された場合には「0」がセットされていることになる。
一方、ボリューム変化rsv1(1次ボリュームを変化させるか否か)は、フェード系の音コントロールの情報に基づいて音の登録処理が実行された場合と共に、BGM、SE1、SE2、エラー音の情報やフェード系の音コントロールの情報に基づいて音の登録処理が実行された場合に「1」がセットされる。そして、フェード系以外の音コントロールの情報に基づいて音の登録処理が実行された場合には「0」がセットされる。
これらの点からも理解されるように、フェード系の音コントロールの情報に基づく音データが登録されている場合のみでなく、BGM、SE1、SE2、エラー音の情報に基づく音データが登録されている場合にも、以降のステップS1209又はS1211により1次ボリューム遷移量と1次ボリュームの情報が音源IC59に対して出力されることになる。
音チャネルaCHnがステレオ再生でなければ、ステップS1209に進んで音源IC59の音チャネルaCHnに1次ボリューム遷移量と1次ボリュームを出力し、さらにステップS1210で音源IC59の音チャネルaCHnにパンポットの出力を行って、ステップS1213に進む。
ここで、パンポットの出力としては、音源IC59における音チャネルaCHn用の「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」の各レジスタにそれぞれ値を出力する。例えばモノラル再生の場合は、ステップS1210では左右パンポットレジスタに0x40(左右均等の音量)、左右パンポット遷移量レジスタに0x00(未使用)、上下パンポットレジスタに0x40(上下均等の音量)、上下パンポット遷移量レジスタに0x00(未使用)を出力する。
音チャネルaCHnが偶数であれば、ステップS1211に進んで音チャネルaCHnと音チャネルaCHn+1とに1次ボリューム遷移量と1次ボリュームを出力し、ステップS1212で音チャネルaCHnと音チャネルaCHn+1とにパンポットの出力を行って、ステップS1213に進む。
このことに応じ、ステップS1212では、音チャネルaCHnと音チャネルaCHn+1とに対するパンポットの出力処理として、音チャネルaCHnの「左右パンポット」のレジスタには「0x81」を、音チャネルaCHn+1の「左右パンポット」のレジスタには「0x82」をそれぞれ出力する。例えばステレオル再生の場合は、音チャネルaCHn、aCHn+1についての各左右パンポットレジスタに0x81,0x82(ステレオ)、各左右パンポット遷移量レジスタに0x00(未使用)、各上下パンポットレジスタに0x40(上下均等の音量)、各上下パンポット遷移量レジスタに0x00(未使用)を出力する。
即ち、音チャネルaCHnがステレオ再生で且つ奇数チャネルであった場合には、当該音チャネルaCHnにはフレーズ番号は登録されていないため、当該音チャネルaCHnについてのフレーズ番号の音源IC59への出力は行われず、当該音チャネルaCHnの登録音データがクリアされることとなる。なお、1次ボリューム遷移量及び1次ボリュームについては偶数aCHnについての処理であるS1211で既に出力されている。
この場合の音源IC59は、偶数の音チャネルaCHnについての処理でセットされたフレーズ番号に基づき再生すべきLch・Rchのそれぞれのフレーズデータを特定する。
フレーズ変化要求がなければ、ステップS1220で音チャネルaCHnの音データをクリアして当該音チャネルaCHnについての処理を終了する。即ち、フレーズ変化要求がない場合はワークの音チャネルaCHnにセットされたフレーズ番号の音源IC59への出力(S1215)は行われない。
即ち、音チャネルaCHnがステレオ再生で且つ奇数チャネルであった場合には、当該音チャネルaCHnにはフレーズ番号は登録されていないため、フレーズ番号の音源IC59への出力は行われない。音源IC59は、偶数の音チャネルaCHnについての処理でセットされたフレーズ番号でフレーズデータを特定するためである。
次いで演出制御CPU200は、ステップS1220でワークの音チャネルaCHnの音データをクリアして、当該音チャネルaCHnについての処理を終了する。
このような音再生処理によって、音データ登録情報に登録された情報に基づく音出力が実行されて、シナリオに応じた音演出が実現される。
図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」であったものとする。
しかしながら、この場合は時点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」より大きな値が設定されてフレーズが放音されてしまうことが確実に防止される。
ここで、図中では反映されていないが、この場合はシナリオとしてフレーズの2次ボリュームを制御する音コントロール情報が記述されているので、フレーズの再生が開始される時点tnでは、ワークにおける該フレーズに対応する音チャネルaCHの2次ボリュームの値は、該音コントロール情報で指示された値にセットされることになる。しかしながらこの場合も、音再生処理においてステップS1221による書き換え処理が実行されることで、最終的に音源IC59に出力される2次ボリュームの値は「0x00」とすることができ、エラー発生中に2次ボリュームが「0x00」より大きい値に設定されてフレーズが放音されてしまうことが確実に防止される。
なお、この図32Cのケースでは、時点t2以降もフレーズ再生期間となっているが、時点t2では、ワークの2次ボリュームの値はボリュームスイッチの状態に応じた値(この場合は「0x80」)にセットされる。また、時点t2では、ボリュームMAXエラーフラグが「0x00」に変化することに応じて該時点t2以降はステップS1221の書き換え処理は実行されないものとなる。これらの点より、時点t2以降は、音源IC59には「0x80」が出力され、結果、エラー解消後にはフレーズが適正に放音されることになる。
この場合も、エラー発生期間である期間t1〜t2では、ステップS1221の処理によりワークの2次ボリュームの値が都度「0x00」に書き換えられ、従ってエラー発生期間中はフレーズが消音される。
時点t2では、ワークの2次ボリュームの値がボリュームスイッチの状態に応じた値(「0x80」)にセットされ、またボリュームMAXエラーフラグが「0x00」に変化することで該時点t2以降はステップS1221の書き換え処理が実行されないものとなることから、エラーが解消した時点t2以降はフレーズが適正に放音される。
この図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」に復帰する。
続いて、図15のステップS636として実行するモータの登録処理について説明する。
このモータの登録処理は、図19Bに例示した音/モータサブシナリオテーブルの記述内容(サブシナリオデータ)に応じた情報を、図16Bのモータデータ登録情報(ワーク)のモータチャネルmCHに登録する処理となる。
本例ではモータデータ登録情報としてモータチャネルmCH0〜mCH7の8チャネルを用意しており、最大8個のモータを駆動制御できる。即ち図3に示した可動体役物モータ部65としては、図5Bに示したステッピングモータ121を最大8個使用することができる。
図33AにおけるMT(n)は、最大8個のモータのそれぞれに対応するモータナンバとしている(n=0〜7)。なお、個々のステッピングモータ121に割り当てられたモータナンバMT0〜MT7は、モータチャネルmCH0〜mCH7にも対応することになる。また図19Bの音/モータサブシナリオテーブルにおけるモータに関する内容とした「モータ0〜3」及び「モータ4〜7」の合計8バイトは、各1バイトが、モータナンバMT0〜MT7の各モータの動作パターン番号を示すことになる。なお動作パターン番号としては1から255までの255種類がある。
以下、モータナンバMT(n)のステッピングモータ121を、「モータMT(n)」と表記する。
演出制御CPU200はステップS1501で、音/モータサブシナリオテーブルにモータMT(n)についてのデータが記述されているか否かを確認する。図15のステップS636の処理は、図14のシナリオ更新処理のステップS608で行われるため、ステップS1501は、現在参照中のシナリオチャネルsCHnで指示されている音/モータサブシナリオテーブルの1バイトの「モータn」の内容を確認する処理となる。
そして「モータn」の内容が「0」、つまり記述がなければ次のモータの処理に進む。
「モータn」の内容が「0」でなく、何らかの情報、つまりモータMT(n)についての動作パターン番号が記述されていれば、ステップS1502でモータ動作パターンの登録処理を行う。
以上の動作をモータMT0〜MT7に対して繰り返す。
演出制御CPU200はステップS1510で、現在処理対象のモータナンバMT(n)が正常であるか否かを確認する。何らかの原因で正常でないナンバであったり、或いは不使用のモータナンバであった場合、そのままステップS1502としての処理を終える。例えばステッピングモータ121を6個しか搭載していないパチンコ遊技機でモータナンバMT6,MT7が不使用の場合などは、モータナンバMT6,MT7に対応する処理は行わないこととなる。
動作パターン番号とは、モータ動作テーブルとして演出制御ROM201又は演出制御RAM202の不揮発性メモリ領域などに記憶されているテーブルの番号に相当する。図34にモータ動作テーブルの例を示している。各モータ動作テーブルの内容については後述するが、図34Aには初期動作のためのモータの動作パターンを示したモータ動作テーブル1、図34Bにはリトライ動作のためのモータの動作パターンを示したモータ動作テーブル71、図34Cには往復動作のためのモータの動作パターンを示したモータ動作テーブル72、図34Dには役物を「出現→10回揺動→戻る」という動作をさせるためのモータの動作パターンを示したモータ動作テーブルxを例示している。
例えばこのように、モータ動作テーブルとしては、テーブル番号1、2・・・71、72・・x・・が付されたテーブルデータが用意されており、1つのモータ動作テーブルでは、各行で示している複数のエントリ(制御項目)により一連の動作パターンが規定されている。そして音/モータサブシナリオテーブルには、「モータn」としてこのようなモータ動作テーブルが動作パターン番号として示されている。
従ってステップS1511では、指定された動作パターン番号が、モータ動作テーブルとして用意されている番号であるか否かを確認する。
もし用意されていない番号であれば、そのままステップS1502としての処理を終える。動作パターン番号が正常、即ち用意されているモータ動作テーブルの番号に該当すれば、ステップS1512に進む。
この場合、登録動作ナンバ(noNew)に、音/モータサブシナリオテーブルに記述されていた動作パターン番号(モータ動作テーブルの番号)を書き込むことになる。実行動作ナンバ(no)は、実際に実行される際に動作パターン番号に更新されるもので、この時点では「0」をセットする。
つまり、モータデータ登録情報(ワーク)の各モータチャネルmCHに、音/モータサブシナリオテーブルの内容に応じて、モータ動作テーブルの番号が登録されることになる。
図34A〜図34Dに例示しているように、モータ動作テーブルはオプション(OPT)、スピード(SPEED)、ステップ(STEP)の3つの内容で1つの行(1つの制御項目)が構成されるテーブルとなっている。オプション(OPT)は制御種別、スピード(SPEED)及びステップ(STEP)は制御種別で示される制御内容についての指示値を示している。
この構造により1つの行(1つの制御項目)が1つの制御処理を規定する情報とされ、原則的には各行の処理が順次行われるという形式で一連の動作パターンが指定される。
動作系オプションの場合、スピード(SPEED)はモータ駆動スピードを示す指示値とされ、またステップ(STEP)はモータ動作範囲(ステッピングモータのステップ数)を示す指示値とされる。
一方、非動作系オプションの場合、スピード(SPEED)は次に移行する行(進行行数)やリンク先、ループ回数など、次の処理を指定する指示値とされる。ステップ(STEP)は通常は使用されない。
このように指示値であるスピード(SPEED)は、動作系オプションと非動作系オプションとで共有されるが、その指示内容の意味は異なるものとなっている。
cw_all・・・正転動作:原点SWオン時/オフ時とも動作
cw_on ・・・正転動作:原点SWオン時停止、原点SWオフ時動作
cw_off・・・正転動作:原点SWオン時動作、原点SWオフ時停止
ccw_all・・・逆転動作:原点SWオン時/オフ時とも動作
ccw_on ・・・逆転動作:原点SWオン時停止、原点SWオフ時動作
ccw_off・・・逆転動作:原点SWオン時動作、原点SWオフ時停止
stop・・・停止動作(励磁なし)
keep・・・停止動作(励磁あり)
cw_on2・・・正転動作:原点SWオン時停止、原点SWオフ時動作
cw_off2・・・正転動作:原点SWオン時動作、原点SWオフ時停止
ccw_on2・・・逆転動作:原点SWオン時停止、原点SWオフ時動作
ccw_off2・・・逆転動作:原点SWオン時動作、原点SWオフ時停止
cw_btn・・・正転動作:ボタン押下時動作、非押下時停止
ccw_btn・・・逆転動作:ボタン押下時動作、非押下時停止
sys_ck1・・・原点SWオフ:次行へ移動、原点SWオン:指定行数(SPEED値)移動
sys_ck2・・・原点SWオフ:指定行数(SPEED値)移動、原点SWオン:次行へ移動
sys_ck3・・・原点SWオフ:次行へ移動、原点SWオン:指定行数(SPEED値)移動
sys_ck4・・・原点SWオフ:指定行数(SPEED値)移動、原点SWオン:次行へ移動
roop_s・・・ループ開始ポイント:ループ回数=SPEED値
roop_e・・・ループ終了ポイント
link・・・リンク命令:リンク先はSPEED値に示される番号のモータ動作テーブル
err_cnt・・・エラーカウンタ+1
sys_err・・・エラーコマンドなし
sys_erc・・・エラーコマンドあり
nor_end・・・通常終了:原点チェックなし
chk_end・・・チェック終了:原点チェックを行い、原点でなければエラー
図35A、図35Bは、1つの可動体に設けられる原点スイッチ68を模式的に示している。本例のパチンコ遊技機1に搭載される各可動体には、それぞれこのような原点スイッチ68が形成されている。
図35Aのようにモータに取り付けられた回転体80の一部には遮蔽板81が形成されている。図35Bのように発光素子D1と受光素子PDが対向配置されたフォトインタラプタ82が用いられ、その発光素子D1と受光素子PDの間隙を遮蔽板81が位置できるように構成される。モータによって駆動される可動体役物が原点位置とされる範囲(原点内)にあるときは、図35Bのように遮蔽板81が発光素子D1と受光素子PDの間隙に位置して発光素子D1からの光を遮蔽するが、回転体80が原点外となる回転位置状態となるときは、遮蔽板81がはずれ、発光素子D1からの光が受光素子PDに受光される状態となる。
受光素子PD(例えばフォトトランジスタ)は、受光に応じて導通する。従って受光時には電源Vccラインから抵抗R2を介した電流を流し、コレクタ電圧が低下するが、非受光時には、コレクタ電圧が上昇する。結果としてコレクタ端から取り出される原点スイッチ信号SWgは、図35Dのようにモータが原点内にあるときはHレベル、原点外ではLレベルとなる信号となる。
上記の各オプション(OPT)に基づく処理では、この原点スイッチ信号SWgに基づいてモータが原点内にあるか原点外となっているかを判定して、所定の処理を行う。なお、各オプション(OPT)の処理で用いる原点スイッチオン/オフの判定は、実際の制御動作では、この原点スイッチ信号SWgから生成したスイッチ情報(図37で後述)を用いる。
図34Aのモータ動作テーブル1では、初期動作処理としての動作パターンが規定されている。この動作パターンは次のようになる。
1行目のsys_ck1(システムチェック1)では、原点内にいるか否かをチェックする。
原点内であれば、スピード(SPEED:この場合、進行行数)で指定される「7」行先のlink(リンク命令)に移行する。
原点外であれば次の行である2行目に移行する。2行目ではccw_on(逆転動作)により原点に向けて移動される。ここではスピード(SPEED)で指定される「6」により、動作カウント(lcnt)(図16C参照)の6カウント間隔で1ステップの駆動が、ステップ(STEP)で示される「8」回行われる。なお動作カウント(lcnt)は1ms毎に更新されるため、この2行目の動作は、ステッピングモータを、6msに1ステップの速さで8ステップ分、原点に向けて戻すように駆動するものとなる。
なお、従って動作系オプションの場合、1行の処理に要する時間は、SPEED×STEP×1msとなる。
原点内であれば、スピード(SPEED:この場合、進行行数)で指定される「2」行先の6行目のccw_all(逆転動作)に移行する。
原点外であれば次の行である5行目のlink(リンク命令)に移行する。この5行目のlink(リンク命令)では、モータ動作テーブル71(図34B)が指定されているため、モータ動作テーブル71のリトライ動作を実行することになる。モータ動作テーブル71のリトライ動作が通常終了(nor_end)したら、この5行目のlink(リンク命令)が終了したことになり、次の6行目に進む。
さらに次の7行目では、同じくccw_all(逆転動作)として、ステッピングモータを、6msに1ステップの速さ(低速)で8ステップ分、原点に向けて戻すように駆動する。
この6行目、7行目は、原点内であることの確認後に、さらに押し込む動作となり、この押し込み動作は高速→低速の2段階で行われる。
モータ動作テーブル72では往復動作としての動作パターンが規定されており、これが通常終了(nor_end)したら、モータ動作テーブル1の8行目のlink(リンク命令)が終了したことになり、次の9行目に進む。9行目はnor_end(通常終了)とされており、ここでモータ動作テーブル1としての初期動作処理が終了される。
説明は省略するが、図34B、図34C、図34Dのモータ動作テーブルや、図示しない他の多数のモータ動作テーブルも、各行で、オプション(OPT)、スピード(SPEED)、ステップ(STEP)に基づいて動作が指定されて、一連の動作パターンが規定される。
以上のモータ動作テーブルの各行の動作を実行するために、ワークのモータデータ登録情報(図16C)上で、各モータチャネルmCHの内容が随時更新される。具体的には図9の1msタイマ割込処理のステップS203でモータ動作更新処理が行われる。このステップS203のモータ動作更新処理を図36〜図41で説明する。
なお、以降の説明では、モータ動作テーブルのオプション(OPT)に記述されたデータを「D_OPT」、スピード(SPEED)に記述されたデータを「D_SPEED」、ステップ(STEP)に記述されたデータを「D_STEP」と表記する。
上述のように、モータMT0〜MT7はモータデータ登録情報のモータチャネルmCH0〜mCH7に対応しているため、ループ処理LP5は、各モータチャネルmCH0〜mCH7についてそれぞれ行われる処理となる。以下では、その時点での処理対象のモータチャネルを「mCHn」と表記して説明する。
モータチャネルmCHnに最初にモータ動作パターンの登録が行われる時点では、図33のステップS1513で説明したように、登録動作ナンバ(noNew)に動作パターン番号が代入されるが、実行動作ナンバ(no)=0とされる。つまり登録後、当該モータチャネルmCHnの処理が開始されるまでは、実行動作ナンバ(no)と登録動作ナンバ(noNew)は一致しない。
一致していなければ動作開始として、ステップS1602で、当該モータチャネルmCHnに対応する励磁出力データをクリアし、ステップS1603で実行動作ナンバ(no)に登録動作ナンバ(noNew)の値を代入する。
また演出制御CPU200はステップS1604で、当該モータチャネルmCHnの動作カウント(lcnt)、動作ライン(ofset)、実行ステップ(step)、ループ開始ポイント(roopAddr)、ループ回数(roopCnt)、親ナンバ(retNo)、戻りアドレス(retAddr)、エラーカウンタ(errCnt)をそれぞれ0にセットする。また親(移行元)/子(移行先)の属性(attribute)に、親を示す「5A」の値をセットする。
なおステップS1601で実行動作ナンバ(no)と登録動作ナンバ(noNew)が一致していれば、既に過去に以上のステップS1602〜S1603の処理が行われたものであるため、これらの処理は不要である。
励磁出力データは、各モータチャネルmCH毎に4バイトのデータとして励磁出力データバッファにセットされ、それがシリアルデータ送信でLEDドライバ90に送信される。このステップS1606では、励磁出力データバッファ上の当該モータチャネルmCHnに対応する4バイトのデータをクリアする処理となる。
演出制御CPU200はステップS1602ではモータチャネルmCHnに対応する励磁出力データをクリアする。またステップS1621で実行動作ナンバ(no)と登録動作ナンバ(noNew)を「0」にセットする。そしてステップS1622で入力更新処理、ステップS1623でスイッチ情報作成処理を行う。入力更新処理、スイッチ情報作成処理については、ステップS1613,S1614の説明(図37)で述べるが、原点スイッチ信号を確認する処理である。
即ち実行動作ナンバ(no)で示されるモータ動作テーブルにおける、動作ライン(ofset)で示される行のデータ「D_OPT」「D_SPEED」「D_STEP」を取得する。最初はステップS1604で動作ライン(ofset)=0とされているため、指定されたモータ動作テーブルの先頭の行のデータ「D_OPT」「D_SPEED」「D_STEP」を取得する。例えば仮に実行動作ナンバ(no)=72とされていたとしたら、図34Cのモータ動作テーブル72の先頭行の「cw_off」「6」「8」を「D_OPT」「D_SPEED」「D_STEP」として取得することになる。
非動作系オプションのデータであったら、ステップS1619で、その非動作系オプションに応じた処理(後述)を行う。
動作系オプションのデータであったら、ステップS1610〜S1618の処理を行う。
上述のように動作系オプションの場合、「D_SPEED」の値は、ステッピングモータの1ステップ駆動の間隔を示している。仮に「D_SPEED」=6としたら、6回に1回、1ステップ駆動を行う。動作カウント(lcnt)は、最初にステップS1604で「0」とされた後、後述のステップS1616でインクリメントされる値であり、つまり1msタイマ割込処理毎に+1される。
従って、動作カウント(lcnt)=「D_SPEED」−1となったら、励磁出力データの更新タイミングとなる。
励磁出力データの更新タイミングとなっていたら、演出制御CPU200はステップS1611に進み、モータデータ登録情報上で実行ステップ(step)を+1する。実行ステップ(step)は、モータ動作テーブルから取得した「D_STEP」で示されるステップ回数に達したか否かをカウントする変数となる。
次にステップS1612で演出制御CPU200は、「D_OPT」で示される動作系オプションに応じた処理(後述)を行う。
これらの処理を図37に示している。
図37Aに入力更新処理を示す。演出制御CPU200はまずステップS1631で入力情報と原点スイッチ信号SWgが一致しているか否かを確認する。
原点スイッチ信号SWgは図35Cで説明したように、原点スイッチ68から得られる信号である。入力情報とは、演出制御CPU200が原点スイッチ信号SWgをスイッチカウント間隔に同期して取り込んだ情報である。
図37Cに信号波形を示す。スイッチカウントとは、間隔Tで更新される変数であり、間隔Tは、モータ動作中は「D_SPEED」×1ms、モータ停止中は1msとなる。
エッジが生じた場合、つまり原点スイッチ信号SWgが変化した場合は、演出制御CPU200はステップS1632で、入力情報に原点スイッチ信号SWgの値を代入する。そしてステップS1633でスイッチカウント=0とする。
一方、ステップS1631で入力情報と原点スイッチ信号SWgが一致している場合は、既に直近の原点スイッチ信号SWgの変化を入力情報に反映した後となる。その場合は、ステップS1634でスイッチカウント=FFhでなければ、ステップS1635でスイッチカウントを+1する。スイッチカウント=FFhであれば、スイッチカウントは更新しない。従ってスイッチカウントの値は、00h〜FFhの値をとる。
まずステップS1641で入力情報とスイッチ情報が一致しているか否かを確認する。スイッチ情報とは、演出制御CPU200が原点スイッチ68の情報として実際に確認する情報となる。
入力情報とスイッチ情報が一致していれば、既に入力情報がスイッチ情報に反映されているとして特に処理は行わない。
入力情報とスイッチ情報が一致していないときは、ステップS1642で、スイッチカウントが更新タイミングを越えているか否かを確認する。そして越えていた場合に、ステップS1643でスイッチ情報を更新する。即ち入力情報の値をスイッチ情報に代入する。
つまりこの場合、入力情報が変化してから4回連続してその情報を維持したときに、原点スイッチが変化したとみなすこととなる。このような処理により、原点スイッチ68で発生するチャタリングによって、演出制御CPU200が確認する原点内であるか否かの情報(=スイッチ情報)が不安定になることがないようにし、正確な原点判定を行うことができるようにしている。
図36の上述のステップS1622,S1623の処理も以上と同様となる。
「D_STEP」≦実行ステップ(step)でなければ、まだモータ動作テーブルの現在の行で指定されたモータ駆動動作が完了していないことになるため、ステップS1616に進んで、動作カウント(lcnt)をインクリメントし、現在のモータチャネルmCHnの処理を終え、ループ処理LP5として次のモータチャネルmCHの処理に移る。
「D_STEP」≦実行ステップ(step)であれば、現在の行で指定されたモータ駆動動作が完了したことになるため、ステップS1617に進んで、動作カウント(lcnt)=0、実行ステップ(step)=0とクリアし、ステップS1618で、次回は次の行についての処理を行うようにするため動作ライン(ofset)を+1する。
以上が、各モータチャネルmCHnについて行われる。
演出制御CPU200はステップS1651で励磁カウンタ(tcnt)に対応した励磁出力データをセットする。そしてステップS1652でモータデータ登録情報(図16C)の励磁カウンタ(tcnt)の値を+1する。
このcw_allは原点スイッチのオン/オフに関わらず正転動作を行うオプションデータである。そのため特に原点判断を行わずに励磁出力データを励磁出力データバッファにセットする処理となる。
図43Aに励磁データテーブルの一例を示す。
励磁データテーブルは、4バイトの励磁データを配置したテーブルとされ、当該4バイトはMSB側からの4ビットずつが、モータMT0、MT1・・・MT7に対応される情報となっている。そして各モータについて、励磁カウンタ値0,1,2,3に応じて対応バイトに励磁データが配置されている。
例えばモータMT0についてみてみると、励磁カウンタ値0,1,2,3について「0x60000000」「0x50000000」「0x90000000」「0xA0000000」の各4バイト値が対応されている。
モータMT0については、これらの4バイトのうちのMSB側4ビットが励磁出力データとして機能する。即ち「6h」「5h」「9h」「Ah」である。
「6h」=0110、「5h」=0101、「9h」=1001、「Ah」=1010であり、この0110、0101、1001、1010の値自体が、4相駆動ステッピングモータの励磁駆動信号となる。
即ちモータMT0としてのステッピングモータ121を順方向に回転させる場合、対応するLEDドライバ90に、0110(6h)→0101(5h)→1001(9h)→1010(Ah)→0110(6h)→0101(5h)・・・の順で励磁出力データを送信すればよい。
またステッピングモータ121を逆方向に回転させる場合、LEDドライバ90に、逆の順序で、1010(Ah)→1001(9h)→0101(5h)→0110(6h)→1010(Ah)→1001(9h)・・・の順で励磁出力データを送信すればよい。
モータMT2については、さらに次の4ビットが励磁出力データとして機能し、同様に「6h」「5h」「9h」「Ah」が設定されている。
以下、モータMT3、MT4、MT5は、それぞれ順次対応する4ビットに同様に「6h」「5h」「9h」「Ah」が設定されている。
この例では、モータMT6,MT7は不使用としており、モータMT6,MT7に対応する情報は全て「0x00000000」としているが、もし使用する場合は、モータMT6についても、それぞれ対応する4ビットが用いられる。
励磁出力データバッファを図43Bに模式的に示している。
励磁出力データバッファは例えば4バイト(32ビット)の領域として確保され、各モータについて4ビットづつ励磁出力データが格納されるように割り当てられている。
例えばビット0〜3にはモータMT1の励磁出力データdMT1、ビット4〜7にはモータMT0の励磁出力データdMT0、ビット8〜11にはモータMT3の励磁出力データdMT3、ビット12〜15にはモータMT2の励磁出力データdMT2、ビット16〜19にはモータMT5の励磁出力データdMT5、ビット20〜23にはモータMT4の励磁出力データdMT4、ビット24〜27にはモータMT7の励磁出力データdMT7、ビット28〜31にはモータMT6の励磁出力データdMT6が、それぞれ格納される。
例えば、上述の図38AのステップS1651で、モータMT0(モータチャネルmCH0)について処理され、励磁カウンタ(tcnt)=0であったとして、図43Aの励磁データテーブルから「0x60000000」が取り出されたとする。また、この時点で、モータMT2(モータチャネルmCH2)について、励磁カウンタ(tcnt)=2であったとして、励磁データテーブルから「0x00900000」が取り出されていたとする。他のモータMT1、MT3〜MT7は、全て励磁出力データがクリアされているとする(例えば図36のステップS1602,S1606、或いは後述の図41DのステップS1732でクリアが行われる)。つまりモータMT1、MT3〜MT7の励磁出力データは「0x00000000」である。
これらが論理和されて、各4ビットの励磁出力データdMT0〜dMT7が図43Cのように励磁出力データバッファにセットされる。モータMT0の励磁出力データdMT0は、ビット4〜7に配置されるが、このビット4〜7には、「0x60000000」「0x00000000」「0x00900000」「0x00000000」・・・「0x00000000」の各MSB側の4ビットの論理和がセットされるため、結局「6h」としての「0110」がセットされることになる。またモータMT2の励磁出力データdMT2は、ビット12〜15に配置されるが、このビット4〜7には「9h」としての「1001」がセットされる。他は「0000」となる。
図38Bは「D_OPT」=cw_on(正転動作)の場合を示している。
この場合、演出制御CPU200はステップS1651で原点スイッチを確認する。つまり図37で説明したスイッチ情報の「0」「1」を確認する。
スイッチ情報=0(原点外)であれば、ステップS1656で、励磁カウンタ(tcnt)に対応した励磁出力データをセットする(励磁出力データバッファにセットするデータとする)。そしてステップS1657でモータデータ登録情報(図16C)の励磁カウンタ(tcnt)の値を+1する。
スイッチ情報=1(原点内)であれば、ステップS1658で、動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1659で、次の行についての処理を行うようにするため動作ライン(ofset)を+1する。この場合、図中「M」として示すように、図36のステップS1608に戻って、次の行に対する処理を行うことになる。
このcw_onに対応する図38Bの処理により、モータが原点内にあるときは停止状態で、原点外にあるときに正転動作させるという制御が行われる。
この場合、演出制御CPU200はステップS1661で原点スイッチ(スイッチ情報)を確認する。
スイッチ情報=1(原点内)であれば、ステップS1664で、励磁カウンタ(tcnt)に対応した励磁出力データをセットする(励磁出力データバッファにセットするデータとする)。そしてステップS1665で励磁カウンタ(tcnt)の値を+1する。
スイッチ情報=0(原点外)であれば、ステップS1662で、動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1663で動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行に対する処理を行う。
このcw_offに対応する図38Cの処理により、モータが原点外にあるときは停止状態で、原点内にあるときに正転動作させるという制御が行われる。
演出制御CPU200はステップS1667で励磁カウンタ(tcnt)の補数に対応した励磁出力データを励磁出力データバッファにセットするデータとする。つまり励磁カウンタ(tcnt)=0の場合は励磁データテーブルの励磁カウンタ=3のデータ、励磁カウンタ(tcnt)=1の場合は励磁データテーブルの励磁カウンタ=2のデータ、励磁カウンタ(tcnt)=2の場合は励磁データテーブルの励磁カウンタ=1のデータ、励磁カウンタ(tcnt)=3の場合は励磁データテーブルの励磁カウンタ=0のデータを取り出す。
そしてステップS1668で励磁カウンタ(tcnt)の値を+1する。
このccw_allは原点スイッチのオン/オフに関わらず逆転動作を行うオプションデータである。そのため特に原点判断を行わずに、励磁カウンタ(tcnt)の補数に対応した励磁出力データを励磁出力データバッファにセットする処理となる。
この場合、演出制御CPU200はステップS1671で原点スイッチ(スイッチ情報)を確認する。
スイッチ情報=0(原点外)であれば、ステップS1672で、励磁カウンタ(tcnt)の補数に対応した励磁出力データバッファにセットするデータとする。そしてステップS1673で励磁カウンタ(tcnt)の値を+1する。
スイッチ情報=1(原点内)であれば、ステップS1674で、動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1675で、次の行についての処理を行うようにするため動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行に対する処理を行う。
このccw_onに対応する図39Bの処理により、モータが原点内にあるときは停止状態で、原点外にあるときに逆転動作させるという制御が行われる。
この場合、演出制御CPU200はステップS1676で原点スイッチ(スイッチ情報)を確認する。
スイッチ情報=1(原点内)であれば、ステップS1679で、励磁カウンタ(tcnt)の補数に対応した励磁出力データを励磁出力データバッファにセットするデータとする。そしてステップS1680で励磁カウンタ(tcnt)の値を+1する。
スイッチ情報=0(原点外)であれば、ステップS1677で、動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1678で、動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行に対する処理を行う。
このccw_offに対応する図39Cの処理により、モータが原点外にあるときは停止状態で、原点内にあるときに逆転動作させるという制御が行われる。
この場合、演出制御CPU200はステップS1681で、当該行の規定ステップ動作済みであるか否かを確認する。動作済みであればステップS1682で動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1683で動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行に対する処理を行う。
動作済みでなければ、ステップS1684で操作部60のボタン押下中であるか否かを確認し。ボタン押下中であればステップS1685で、励磁カウンタ(tcnt)に対応した励磁出力データを励磁出力データバッファにセットするデータとする。そしてステップS1686で励磁カウンタ(tcnt)の値を+1する。
このcw_btnに対応する図40Aの処理により、ボタン押下時は正転動作、非押下時は停止状態とさせる制御が行われる。
この場合、演出制御CPU200はステップS1691で、当該行の規定ステップ動作済みであるか否かを確認する。動作済みであればステップS1692で動作カウント(lcnt)=0とし、また実行ステップ(step)=0とする。そしてステップS1693で動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行に対する処理を行う。
動作済みでなければ、ステップS1694で操作部60のボタン押下中であるか否かを確認し。ボタン押下中であればステップS1695で、励磁カウンタ(tcnt)の補数に対応した励磁出力データを励磁出力データバッファにセットするデータとする。そしてステップS1696で励磁カウンタ(tcnt)の値を+1する。
このccw_btnに対応する図40Bの処理により、ボタン押下時は逆転動作、非押下時は停止状態とさせる制御が行われる。
演出制御CPU200はステップS1701で、モータデータ登録情報の属性(attribute)を参照して、現在実行中のモータ動作テーブルが親であるか否かを確認する。
親の場合はステップS1702で、ループ開始ポイントとして、動作ライン(ofset)+1の行を代入する。つまり、この「D_OPT」=roop_sの行の次の行をループ開始ポイントとする。そしてステップS1703で、「D_SPEED」の値をループ回数と設定する。そしてステップS1704で、動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行からの処理を行う。この場合、次の行からループ終了行までがループ回数だけ繰り返されることとなる。
ステップS1701で親ではない場合は、ループ設定を行わずにステップS1704で、動作ライン(ofset)を+1し、図36のステップS1608に戻って、次の行からの処理を通常に行う。
演出制御CPU200はステップS1711で、モータデータ登録情報の属性(attribute)を参照して、現在実行中のモータ動作テーブルが親であるか否かを確認する。
親の場合はステップS1712で、ループ回数=0となっているか否かを確認する。ループ回数は上述の図41AのステップS1730で「D_SPEED」の値がセットされ、次のステップS1713で−1されるため、ループ回数=0とは「D_SPEED」で指示されたループ回数が終了したことを意味する。
ループ回数=0でなければ、ステップS1713でループ回数の値を−1し、ステップS1714で再度ループ回数=0であるか否かを確認する。ループ回数=0でなければ、ステップS1716で動作ライン(ofset)にループ開始ポイント(図41AのステップS1702参照)の値を代入する。即ち、引き続きループ処理を行うため、ループ開始行に戻るようにする。そして図36のステップS1608に戻って、ループ開始行からの処理を行う。
ステップS1711で親ではない場合、ステップS1712でループ回数=0の場合、或いはステップS1714でループ回数=0の場合は、ステップS1715で動作ライン(ofset)を+1し、図36のステップS1608に戻る。つまり当該ループ終了ポイントの行の次の行から処理が行われるようにする。
演出制御CPU200はステップS1721で、モータデータ登録情報の属性(attribute)を参照して、現在実行中のモータ動作テーブルが親であるか否かを確認する。
親の場合はステップS1722で、モータデータ登録情報の現在対象のモータチャネルmCHnの親ナンバ(retNo)に、実行動作ナンバ(no)の値を書き込む。またステップS1723で、戻りアドレス(retAddr)に、動作ライン(ofset)+1の値を書き込む。
次にステップS1724で実行動作ナンバ(no)及び登録動作ナンバ(noNew)に「D_SPEED」の値を書き込む。link(リンク命令)の場合、「D_SPEED」はリンク先のモータ動作テーブルの番号が示しているためである。
そしてステップS1725で動作ライン(ofset)=0とし、ステップS1726で属性(attribute)を、子(リンク先)であることを示す「0」として図36のステップS1608に戻る。これにより、リンク先のモータ動作テーブルの先頭行からの処理が行われることになる。
なお、ステップS1721で子と判断された場合は、何もせずに図36のステップS1608に戻る。
演出制御CPU200はステップS1731で、モータデータ登録情報の属性(attribute)を参照して、現在実行中のモータ動作テーブルが親であるか否かを確認する。
親の場合はステップS1731で励磁出力データをクリアし、またステップS1733でモータ動作に関するデータ、ここでは具体的には当該モータチャネルmCHnにおいて励磁カウント(tcnt)以外のモータ動作に関するデータをクリアする。なお、モータ動作に関するデータとは、図16Cの実行動作ナンバ(no)からエラーカウンタ(errCnt)までの12種のデータをいう。
一方、子の場合は、親のモータ動作テーブルに戻るための処理を行う。即ち演出制御CPU200はステップS1734で実行動作ナンバ(no)及び登録動作ナンバ(noNew)に親ナンバ(retNo)の値を書き込む。またステップS1735で動作ライン(ofset)に戻りアドレス(retAddr)の値を書き込む。ステップS1736で属性(attribute)を、親であることを示す「5A」とする。そしてステップS1737で親ナンバ(retNo)と戻りアドレス(retAddr)をクリアし、図36のステップS1608に戻る。
これにより、図41Cでリンク元となったモータ動作テーブルの行(ステップS1723で戻りアドレス(retAddr)に書き込まれた、「D_OPT」=linkの行の次の行)から処理が行われる。
また図41C、図41Dの処理により、親→子へのモータ動作テーブルのリンク設定及び子のモータ動作テーブル終了時の親のモータ動作テーブルへの復帰が可能となる。
図41Cのように親(リンク元)の場合には、まずリンク先からの復帰のために親ナンバ(retNo)と戻りアドレス(retAddr)を当該モータチャネルmCHnにセットした後、リンク先のモータ動作テーブルを実行動作ナンバ(no)及び登録動作ナンバ(noNew)とし、そのリンク先のモータ動作テーブルの各行に応じた処理が実行されるようにしている。リンク先の子のモータ動作テーブルでは、nor_end(通常終了)の行から、ステップS1734〜S1737の処理によりにおいて親のモータ動作テーブルの「D_OPT」=linkの行の次の行に復帰する。
このように複数のモータ動作テーブルをリンク付けすることができ、用意したモータ動作テーブルを効率的に利用できる。換言すれば無駄に行数を増やさない効率的なモータ動作テーブルを設定でき、メモリ容量の削減にもつながる。
演出制御CPU200はステップS1741で原点スイッチ(スイッチ情報)を確認し、スイッチ情報=0(原点外)であれば、ステップS1742でモータMT(n)のエラーセットを行う。
ステップS1743では当該モータチャネルmCHnについての励磁出力データをクリアし、ステップS1744で当該モータチャネルmCHnにおいて励磁カウント(tcnt)以外のモータ動作に関するデータをクリアする。そして図36の「C」(ループLP5内処理の終了)に進む。
このchk_end(チェック終了)の処理により、原点内であることの確認を伴って動作パターンを終了することが行われる。
演出制御CPU200はステップS1751でモータMT(n)のエラーカウンタ(errCnt)を+1する。
ステップS1752ではエラーカウンタの値を確認し、2を越えていたらステップS1753でモータMT(n)のエラーセットを行う。
そしてステップS1754で当該モータチャネルmCHnについての励磁出力データをクリアし、ステップS1755で当該モータチャネルmCHnにおいて励磁カウント(tcnt)以外のモータ動作に関するデータをクリアする。そして図36の「C」(ループLP5内処理の終了)に進む。
このerr_cnt(エラーカウンタ+1)の処理により、エラーカウンタの値に応じてモータエラーがセットされる。
演出制御CPU200はステップS1761でモータMT(n)のエラーセットを行う。
そしてステップS1762で当該モータチャネルmCHnについての励磁出力データをクリアし、ステップS1763で当該モータチャネルmCHnのモータ動作に関するデータ(実行動作ナンバ(no)からエラーカウンタ(errCnt)までの12種のデータ)をクリアする。そして図36の「C」(ループLP5内処理の終了)に進む。
図42Dは「D_OPT」=sys_erc(エラーコマンドあり)の場合を示している。
演出制御CPU200はステップS1771でモータMT(n)のエラーセットを行う。
そしてステップS1772でモータMT(n)のエラーを示すエラーコマンドをセットする。ステップS1773では当該モータチャネルmCHnについての励磁出力データをクリアし、ステップS1774で当該モータチャネルmCHnのモータ動作に関するデータ(実行動作ナンバ(no)からエラーカウンタ(errCnt)までの12種のデータ)をクリアする。そして図36の「C」(ループLP5内処理の終了)に進む。
この図42C、図42Dのsys_err、sys_ercの指定により、エラーコマンドの有無を指定したエラー設定が可能となる。
演出制御CPU200はステップS1781で、原点スイッチ(スイッチ情報)を確認する。
スイッチ情報=0(原点外)であれば、ステップS1782で動作ライン(ofset)を+1する。
スイッチ情報=1(原点内)であれば、ステップS1783で動作ライン(ofset)に、(ofset+D_SPEED)の値を書き込む。
このsys_ck1の処理により、現在原点外にあるときは処理行を次の行に進め、現在原点内にあるときは処理行を「D_SPEED」で指定された行数だけ進めることになる。これによってモータの原点内外に応じた処理を1つのモータ動作テーブル内で場合分けして規定できる。これも容量の少ない効率的なモータ動作テーブルの実現に寄与している。
演出制御CPU200はステップS1791で、原点スイッチ(スイッチ情報)を確認する。
スイッチ情報=1(原点内)であれば、ステップS1793で動作ライン(ofset)を+1する。
スイッチ情報=0(原点外)であれば、ステップS1792で動作ライン(ofset)に、(ofset+D_SPEED)の値を書き込む。
このsys_ck2の処理により、現在原点内にあるときは処理行を次の行に進め、現在原点外にあるときは処理行を「D_SPEED」で指定された行数だけ進めることになる。これによってモータの原点内外に応じた処理を1つのモータ動作テーブル内で場合分けして規定できる。これも容量の少ない効率的なモータ動作テーブルの実現に寄与している。
即ちモータ動作テーブルは、上述のように、モータ駆動を伴う制御内容を示す動作系処理情報(動作系オプション)の制御項目と、モータ駆動を伴わない制御内容を示す非動作系処理情報(非動作系オプション)の制御項目とを含む複数の制御項目(各行の内容)が実行順に記憶されている。演出制御CPU200は、このように複数の制御項目により一連のモータ動作パターンが示されるモータ動作テーブルを参照し、各制御項目において示されている動作系オプション又は非動作系オプションに従った処理を実行することで、モータ動作制御を行う。
またモータ動作テーブルの制御項目は、動作系オプションと非動作系オプションとの何れであるかを識別する動作種別データ(OPT)と、動作種別に関する具体的な動作内容を特定する動作内容データ(SPEED、STEP)とを含む。
また動作系オプションの制御項目では、モータの回転方向及び回転量が「D-OPT」「STEP」により規定されている。
また非動作系オプションの制御項目では、次に実行すべき処理を指定する情報として、モータ動作テーブルで規定された順番に従わずに次に実行すべき制御項目を指定する情報が含まれている。例えばlink、roop_s、roop_e、sys_ck1〜sys_ck4等である。
また非動作系オプションの制御項目には、例えばsys_ck1〜sys_ck4のように可動体役物の位置検出スイッチ(原点スイッチ68)を判定し、判定結果に応じて、それ以降の動作を変更させる情報が規定されている。
また動作系オプション、非動作系オプションの混在により、モータ動作テーブルには精密・多様な動作パターンを規定できる。
また、非動作系オプションには、次に実行すべき処理を指定する情報、モータ動作テーブルで規定された順番に従わずに例えばリンク先にジャンプする情報や、行の進行(他の制御項目にジャンプする情報)などが含まれることで、モータ動作テーブルの各行や、他のモータ動作テーブルを有効に利用でき、モータ動作テーブル全体の容量を過大にすることなく、精密・多様な動作パターンを規定できる。
また、非動作系オプションには原点スイッチ68の判定結果でそれ以降の動作を変更させる情報が規定されていることで、モータ(可動体役物)の状況に応じた制御動作を規定でき、適切なモータ動作を実行させることができる。
またモータ動作テーブルには、上述のスピード(SPEED)のように、動作系オプションと非動作系オプションとで共有される指示値が設けられ、演出制御CPU200は、動作系オプションと非動作系オプションの各制御内容により、指示値(D_SPEED)であるの内容を判別して処理を行う。このように指示値を共有することもモータ動作テーブルのデータ量削減に有効である。
つまり本例のモータ動作テーブルを用いたモータ制御方式によれば、演出制御CPU200の処理負担の軽減、メモリ領域の有効利用を実現しつつ、多様なモータ動作演出が可能となる。
なお、このようなモータ動作テーブルを用いたモータ制御方式は、実施の形態のパチンコ遊技機1だけでなく、他の遊技機の可動体制御、例えばスロット遊技機のリール制御などに用いることも好適である。
このようにすることで、ワーク、つまりモータデータ登録情報の各モータチャネルmCH上で、実行予定のモータ動作テーブルと、実行中(ステップS1680〜S1618の処理中)のモータ動作テーブルを容易に管理・区別できる。
このような処理により、ワーク上での登録動作ナンバ(noNew)、実行動作ナンバ(no)の処理が容易で演出制御CPU200の処理負担も削減でき、その上で、実行予定、実行中のモータ動作テーブルが明確に管理でき、ステップS1607では、実行動作ナンバ(no)を参照して処理を分岐し、冗長な処理を回避できる。
またステップS1601で、登録動作ナンバ(noNew)と実行動作ナンバ(no)が一致していなければ、ステップS1603で実行動作ナンバ(no)に登録動作ナンバ(noNew)の値を代入するという処理を採用することで、モータデータ登録情報以外を参照せずに実行動作ナンバ(no)を更新でき、これも処理負担削減に有効である。
このように、演出制御CPU200の処理負担の軽減が図られている。
続いて図9の1msタイマ割込処理のステップS204で行われるモータ出力処理について図44で説明する。
ここでは、図43に示した例のようにモータMT0〜MT5の6個のステッピングモータ121が搭載されており、モータMT6,MT7は未使用であるとする。そしてモータMT0〜MT5が、図5Bのように或る1つのLEDドライバ90に接続されているとして説明する。
演出制御CPU200は、ループ処理LP6としてステッピングモータ121が接続されたLEDドライバ90の個数分、ステップS1801〜S1808を行う。上記のように1つのLEDドライバ90が6個のステッピングモータ12の駆動に用いられているとすると、ループ回数は1回となる。
レジスタとしては、レジスタアドレスが00h〜2Chとされた各8ビットのレジスタ空間が用意されている。このうちステッピングモータ121の駆動のためにレジスタアドレス00h〜14hが用いられる。
なおレジスタアドレス15h〜2Chは、それぞれ出力端子96−1〜96−24に対応するLED用の点灯データ(階調値)が書き込まれるレジスタとされており、モータ駆動の場合は用いなくてよい。
レジスタアドレス00h〜14hの各レジスタは以下のようにデータが書き込まれる。
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の強制オン/オフ設定をする。
さらに演出制御CPU200はステップS1803で、データ設定開始レジスタアドレスを出力する。この場合、レジスタアドレス「00h」〜「14h」への書き込みとなるため、データ設定開始レジスタアドレス=00hとする。
なおLEDドライバ90側では、送信されてくるデータを、データ設定開始レジスタアドレスで示されたレジスタから連続するレジスタアドレスに順次格納していく。
まずステップS1804では、レジスタアドレス00h〜11hへのデータ転送を行う。
この場合、転送するデータは次のようになる。なおレジスタアドレスの値と、転送するデータ値の区別のため、「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:0xAA・・・強制オン/オフ設定優先
0Ah:0xAA・・・強制オン/オフ設定優先
0Bh:0xAA・・・強制オン/オフ設定優先
0Ch:0xAA・・・強制オン/オフ設定優先
0Dh:0xAA・・・強制オン/オフ設定優先
0Eh:0xAA・・・強制オン/オフ設定優先
0Fh:0x00・・・フェード機能無効
10h:0x00・・・フェード機能無効
11h:0x00・・・フェード機能無効
このような設定を行った上で、演出制御CPU200は図43Cで説明した励磁出力データdMT0〜dMT5を転送する。
即ちステップS1805で、レジスタアドレス12hへモータMT0、MT1の励磁出力データdMT0、dMT1の8ビットを転送する。
ステップS1806では、レジスタアドレス13hへモータMT2、MT3の励磁出力データdMT2、dMT3の8ビットを転送する。
ステップS1807では、レジスタアドレス14hへモータMT4、MT5の励磁出力データdMT4、dMT5の8ビットを転送する。
このようなモータ出力処理によっては、LEDドライバ90の出力端子96−1〜96−24について強制オン/オフ設定優先とされた上で、強制オン/オフ設定のためのレジスタアドレス12h〜14hに、励磁出力データdMT0〜dMT5がセットされることになる。励磁出力データdMT0〜dMT5は図43で説明したようにそれぞれ4ビットデータとされているが、その4ビットの「0」が強制オフ、「1」が強制オンを指示する情報となり、当該4ビットが、図5Bで説明した4つの出力端子を駆動する信号となる。
ある時点で、励磁出力データdMT0=0110(6h)で、励磁出力データdMT1=0000であったとすると、上記ステップS1805で励磁出力データdMT0=0110が転送され、レジスタアドレス12hに「01100000」がセットされる。
この場合、「0110」により出力端子96−2、96−3が強制オンとなり、励磁駆動電流がステッピングモータ121に流される。
つまり、1つのモータにつき4ビットの励磁出力データが、そのまま4相ステッピングモータの駆動制御信号となり、上記の順序で励磁出力データが与えられることでステッピングモータ121に対する4相励磁駆動が実現される。
その一方で、モータ動作についての動作情報の登録に応じた出力データの生成処理及び出力処理を、第1の期間よりも短い、1msタイマ割込処理としての第2の期間ごとに実行する(図9のステップS203,F204,図36、図44)。
モータ動作に関しては、なるべく短い期間で細かく動作制御することで、役物の円滑な動きや精密な動作が可能となり、演出効果を向上させることができる。但し、モータデータ登録情報のモータチャネルmCHへの動作情報の登録も1msタイマ割込処理で行うようにすると処理負担が大きくなる。そこで登録処理については16ms処理で行うことで演出制御CPU200の処理負担を軽減している。また、これによって、音出力動作、発光動作についてのワーク(ランプチャネルdwCH、音チャネルaCH)への動作情報登録と同時的に処理できるようにし、処理効率向上をはかっている。
また、発光動作及び音出力動作についての動作情報の登録に応じた出力データの生成処理は、16ms処理(第1の期間)ごとに実行している(図8のステップS113,F111、図20、図31)。これらについてはモータほどの短インターバルでの処理の必要性はないとして、第1の期間ごととすることで、むやみに処理負担を増大させないようにしている。
なお、図8,図9の説明で述べたが、図8の16ms処理が行われるのは1msタイマ割込処理で割込カウンタが16までカウントされた時点である。つまりここでいう第1の期間の処理は、第2の期間の割込処理が所定回数行われたときに実行される処理である。第1,第2の期間をこのような関係とすることで、各処理期間の管理を個別に実行しなくてよく、これも演出制御CPU200の処理負担軽減に寄与する。
ここでモータ押し込み動作の制御について説明する。
図34A、図34C、図34Dに例示した各モータ動作テーブルでは原点内でモータの押し込み動作を行うことが規定されている。
例えば図34Aのモータ動作テーブル1では、6行目のccw_all(逆転動作)として、ステッピングモータを、3msに1ステップの速さ(高速)で58ステップ分、原点に向けて戻すように駆動する。さらに7行目では、同じくccw_all(逆転動作)として、ステッピングモータを、6msに1ステップの速さ(低速)で8ステップ分、原点に向けて戻すように駆動する。この6行目、7行目は、原点内であることの確認後に、さらに原点へ押し込む動作となり、この押し込み動作は高速→低速の2段階で行われる。
図34Cのモータ動作テーブル72の11行目、12行目も同様であり、図34Cのモータ動作テーブルxの11行目、12行目も同様である。
このような押し込み動作を実行させることで、原点内での役物の基準位置を精密に規定し、動作時には設定したモータステップ数で設計上の動作を安定させて実行させることができる。そして特に押し込みを高速→低速の2段階で行うことで、モータの中のギア負担の軽減、跳ね返りを想定したうえでの最終停止位置の安定化等の効果が得られる。
図45の各図は横軸を時間とし、役物が原点に戻る場合の動作を示している。各図において時点tonは原点スイッチ信号SWg(演出制御CPU200からみれば実際には図37Cのスイッチ情報)がオンとなるタイミングで、時点tspはストッパ到達タイミングとしている。ストッパ到達タイミングとは、ステッピングモータ121が、時点ton以降にモータステップ数xだけ駆動された時点である。つまり可動体役物は、原点範囲内に達したことの検出時点からxモータステップの駆動でストッパ位置に達する構造とされているとしている。
なお原点スイッチ68は、ストッパ位置を含む原点範囲に可動体である役物が位置していることを検出する原点スイッチ信号SWgを図35で説明した構成で出力する。
この場合、時点tspでストッパ位置に到達するが、ストッパ到達時は低速駆動されていることでモータ機構に与える負担、衝撃を和らげることができる。そしてその後もまだ低速駆動が実行されることで、ストッパ到達時の役物の跳ね返りや、設計上の誤差などがあっても、確実に役物をストッパに押しつけた状態とすることができる。特にこの場合、低速でストッパに到達し、また押し込みが行われるため跳ね返りが小さくなり、また押し込みで最終的な役物位置を安定させやすい。
この場合、時点tspでストッパ位置に到達するが、その後、低速駆動に切り替えられて押し込みが実行されることで、ストッパ到達時の役物の跳ね返りや、設計上の誤差などがあっても、確実に役物をストッパに押しつけた状態とすることができる。また最終的な押し込みは低速であることから最終的な役物位置を安定させやすい。
これにより可動体役物をスローダウンさせてストッパ位置に停止させることができ、また上述の押し込みによる確実な位置制御が実現される。
また、例2〜例4は、原点スイッチオンタイミング以降に、高速と低速のモータ駆動制御を行っている。さらに図45の例1〜例4はいずれも、第1のモータ駆動制御と第2のモータ駆動制御の合計モータステップ数は、モータが原点範囲に入った状態からストッパ位置に達するまでの駆動量(必要モータステップ数x)を越える駆動量(モータステップ数x+α)のモータ駆動制御を行うようにして押し込みを行っている。
このようにすることで跳ね返り等があっても原点内での役物の停止位置を安定させることができる。特に上下に動く役物で、上部が原点である場合、ストッパ位置に達しても自重による跳ね返りは大きくなるが、以上の例のように最終的には第2の速度で押し込みを行うことで停止位置を安定化できる。
なお、ここではモータ駆動速度を2段階で行う例を示したが、3段階以上にしてもよい。いずれにしても押し込み制御の最終段階では、低速な駆動制御を行うことが好適である。
以上で説明した演出制御CPU200の処理により、多様な演出動作を制御負荷の低減を図りつつ効率的に実現できる。また、演出制御に要するメモリ容量も削減することができる。
例えば、上記による説明では、本発明がパチンコ遊技機1のような弾球遊技機に適用される例を示したが、本発明は回胴式遊技機(いわゆるスロット機)にも好適に適用できるものである。即ち演出制御CPU200による上述の各種演出制御は、スロット機での発光演出、音演出、可動体演出に好適に適用できる。
また、可動体役物モータ部65においては可動体を駆動するモータとしてステッピングモータ121の例を挙げたが、他の駆動機構、例えばソレノイドを用いることもできる。ソレノイドを用いる場合も、上述のモータ制御と同様にソレノイド制御を行うことができる。例えば図15のステップS636のモータの登録に続いてソレノイドの登録を行う。また1msタイマ割込処理のステップS203(図9)で、図36の処理に続いてソレノイド動作更新処理を行い、ソレノイド動作テーブルのデータに基づいて励磁出力データを設定していく処理を行って、ソレノイドのドライバに励磁出力データを送信すればよい。
また、実施の形態では、モータドライバとしてLEDドライバ90を利用する例を述べたが、もちろんこれは一例である。各モータの駆動のために専用のモータドライバを用いてもよいことは言うまでもない。
2 前枠
3 遊技盤
3a 遊技領域
4 外枠
5 ガラス扉
6 軸支機構
7 操作パネル
8 上受け皿ユニット
9 下受け皿ユニット
10 発射操作ハンドル
11 演出スイッチ
12 演出ボタン
13 十字キー
14 球貸しボタン
15 カード返却ボタン
20w,20b 装飾ランプ
25 スピーカ
31 球誘導レール
32M 主液晶表示装置
32S 副液晶表示装置
33 図柄表示部
41 上始動口
42 普通変動入賞装置
42a 下始動口
43 一般入賞口
44 ゲート
45 第1特別変動入賞装置
46 第2特別変動入賞装置
50 主制御基板50
51 演出制御基板51
52 液晶制御基板
53 払出制御基板
54 発射制御基板
58 電源基板
59 音源IC
60 操作部
61 枠ドライバ部
62 盤ドライバ部
63,64 装飾ランプ部
65 可動体役物モータ部
67 アンプ部
200 演出制御CPU
201 演出制御ROM
202 演出制御RAM
Claims (1)
- 遊技動作を統括的に制御すると共に、遊技動作に関連する制御コマンドを出力する主制御手段と、
上記制御コマンドに基づいて、複数種類の演出デバイスを動作させることにより遊技動作に関する報知を実行する演出制御手段と、
を有し、
上記演出制御手段は、上記制御コマンドに基づいて、実行すべき演出種別を特定する演出データを第1のワークエリアの空き領域にセットする演出データ設定処理と、
上記第1のワークエリアにセットされた演出データに基づいて、演出デバイスの動作を特定する動作データを第2のワークエリアにセットする動作データ設定処理と、
上記第1のワークエリアにセットされた演出データに基づいて実行された演出が終了することに応じて、上記第1のワークエリアにおける当該演出データをセットした領域を空き領域にする処理と、
を行い、
上記第2のワークエリアは、複数の演出デバイスのそれぞれに対応して複数設けられており、それぞれの第2のワークエリアには、対応する演出デバイスの動作データがセットされ、
上記第1のワークエリアには、複数の上記第2のワークエリアへセットする動作データを特定する演出データがセットされ、
上記第1のワークエリアには所定上限数の演出データ、上記第2のワークエリアには上記所定上限数より少ない上限数の動作データが、それぞれ記憶可能となるように記憶領域が割り当てられている遊技機。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017044907A JP6283757B2 (ja) | 2017-03-09 | 2017-03-09 | 遊技機 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017044907A JP6283757B2 (ja) | 2017-03-09 | 2017-03-09 | 遊技機 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015207904A Division JP6110460B2 (ja) | 2015-10-22 | 2015-10-22 | 遊技機 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017121526A true JP2017121526A (ja) | 2017-07-13 |
JP6283757B2 JP6283757B2 (ja) | 2018-02-21 |
Family
ID=59306343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017044907A Active JP6283757B2 (ja) | 2017-03-09 | 2017-03-09 | 遊技機 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6283757B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019063183A (ja) * | 2017-09-29 | 2019-04-25 | サミー株式会社 | 遊技機 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004188021A (ja) * | 2002-12-12 | 2004-07-08 | Daiman:Kk | 遊技機 |
JP2005137897A (ja) * | 2003-10-17 | 2005-06-02 | Heiwa Corp | 遊技機 |
JP2011177444A (ja) * | 2010-03-03 | 2011-09-15 | Daito Giken:Kk | 遊技台 |
JP2012245388A (ja) * | 2012-09-18 | 2012-12-13 | Newgin Co Ltd | 遊技機 |
-
2017
- 2017-03-09 JP JP2017044907A patent/JP6283757B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004188021A (ja) * | 2002-12-12 | 2004-07-08 | Daiman:Kk | 遊技機 |
JP2005137897A (ja) * | 2003-10-17 | 2005-06-02 | Heiwa Corp | 遊技機 |
JP2011177444A (ja) * | 2010-03-03 | 2011-09-15 | Daito Giken:Kk | 遊技台 |
JP2012245388A (ja) * | 2012-09-18 | 2012-12-13 | Newgin Co Ltd | 遊技機 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019063183A (ja) * | 2017-09-29 | 2019-04-25 | サミー株式会社 | 遊技機 |
JP7041340B2 (ja) | 2017-09-29 | 2022-03-24 | サミー株式会社 | 遊技機 |
Also Published As
Publication number | Publication date |
---|---|
JP6283757B2 (ja) | 2018-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5799036B2 (ja) | 遊技機 | |
JP6082243B2 (ja) | 遊技機 | |
JP2014151153A (ja) | 遊技機 | |
JP5627044B2 (ja) | 遊技機 | |
JP5535302B1 (ja) | 遊技機 | |
JP6199572B2 (ja) | 遊技機 | |
JP5951706B2 (ja) | 遊技機 | |
JP5738334B2 (ja) | 遊技機 | |
JP5873449B2 (ja) | 遊技機 | |
JP5797675B2 (ja) | 遊技機 | |
JP6283757B2 (ja) | 遊技機 | |
JP6254134B2 (ja) | 遊技機 | |
JP6279214B2 (ja) | 遊技機 | |
JP6110460B2 (ja) | 遊技機 | |
JP6163523B2 (ja) | 遊技機 | |
JP6163521B2 (ja) | 遊技機 | |
JP6185003B2 (ja) | 遊技機 | |
JP5816206B2 (ja) | 遊技機 | |
JP6130683B2 (ja) | 遊技機 | |
JP2015166027A (ja) | 遊技機 | |
JP6209578B2 (ja) | 遊技機 | |
JP6130681B2 (ja) | 遊技機 | |
JP6163132B2 (ja) | 遊技機 | |
JP5970388B2 (ja) | 遊技機 | |
JP6130682B2 (ja) | 遊技機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171226 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180129 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6283757 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |