JP2020151204A - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP2020151204A
JP2020151204A JP2019052515A JP2019052515A JP2020151204A JP 2020151204 A JP2020151204 A JP 2020151204A JP 2019052515 A JP2019052515 A JP 2019052515A JP 2019052515 A JP2019052515 A JP 2019052515A JP 2020151204 A JP2020151204 A JP 2020151204A
Authority
JP
Japan
Prior art keywords
sound
scenario
cpu
data
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
Application number
JP2019052515A
Other languages
English (en)
Other versions
JP7232091B2 (ja
Inventor
山下 健一
Kenichi Yamashita
健一 山下
一寛 中村
Kazuhiro Nakamura
一寛 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Shoji Co Ltd
Original Assignee
Fuji Shoji Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Shoji Co Ltd filed Critical Fuji Shoji Co Ltd
Priority to JP2019052515A priority Critical patent/JP7232091B2/ja
Publication of JP2020151204A publication Critical patent/JP2020151204A/ja
Application granted granted Critical
Publication of JP7232091B2 publication Critical patent/JP7232091B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Slot Machines And Peripheral Devices (AREA)

Abstract

【課題】振動演出を行う遊技機について、部品点数の削減やコスト削減を図る。【解決手段】本発明に係る遊技機は、放音を行うスピーカ部と、スピーカ部の駆動制御を行う駆動制御手段とを備え、駆動制御手段は、遊技機における少なくとも一部である特定部が有する固有振動数の周波数成分を含んだ音信号に基づきスピーカ部を駆動制御して、特定部を振動させるものである。【選択図】図35

Description

本発明は、放音を行うスピーカ部を備えた遊技機の技術分野に関する。
例えば、スロットマシンやパチンコ遊技機等の遊技機には、放音を行うスピーカ部を備えて音による演出を行うものがある。また、遊技機には、音による演出以外にも、光や画像等の視覚的な演出や、振動を用いた触覚的な演出を行うものもある(例えば、下記特許文献1を参照)。
特開2015−112184号公報
ここで、振動を用いた演出を行う上では、振動源となるモータ等のアクチュエータを設ける構成が一般的であるが、音や光、画像等の演出手段以外に別途の演出手段を設けることになり、部品点数の増加やそれに伴うコストアップを助長することになる。
そこで、本発明では上記した問題点を克服し、振動演出を行う遊技機について、部品点数の削減やコスト削減を図ることを目的とする。
本発明に係る遊技機は、放音を行うスピーカ部と、前記スピーカ部の駆動制御を行う駆動制御手段と、を備え、前記駆動制御手段は、遊技機における少なくとも一部である特定部が有する固有振動数の周波数成分を含んだ音信号に基づき前記スピーカ部を駆動制御して、前記特定部を振動させるものである。
これにより、音出力に用いるスピーカを振動源として用いることができるため、振動源となるモータ等のアクチュエータを別途に設ける必要がなくなる。
上記した本発明に係る遊技機においては、前記駆動制御手段は、周波数掃引された前記音信号に基づき前記スピーカ部を駆動制御する構成とすることが可能である。
振動用の音の周波数を掃引(スイープ)することで、振動の振れ幅の調整が可能となる。
上記した本発明に係る遊技機においては、前記駆動制御手段は、周波数が往復掃引された音信号に基づきスピーカ部を駆動制御する構成とすることが可能である。
これにより、周波数の掃引は、周波数の上昇側の掃引と下降側の掃引とが組み合わされた往復掃引の形態で行われる。
上記した本発明に係る遊技機においては、前記駆動制御手段は、前記往復掃引として、0.05秒以下の往復期間による掃引が繰り返された前記音信号に基づき前記スピーカ部を駆動制御する構成とすることが可能である。
往復期間を長くする(つまり掃引速度を遅くする)と振動の振り幅が大きくなり、短くする(掃引速度を速くする)と振動の振り幅は小さくなる。
上記した本発明に係る遊技機においては、前面側が開口された箱状の本体ケースと、前記本体ケースに対して開閉自在に取り付けられ、閉状態において前記開口を閉塞する前面パネルとを備え、前記スピーカ部は、背面側の少なくとも一部が、前記閉状態において前記本体ケース内側に形成される閉空間に露呈されるように前記前面パネルに設けられた構成とすることが可能である。
これにより、スピーカ部背面側からの放音に応じて本体ケース内側の閉空間内における空気が振動し、遊技機の筐体全体を振動させることが可能とされる。
上記した本発明に係る遊技機においては、前記駆動制御手段は、可聴帯域の周波数成分を含む前記音信号に基づき前記スピーカ部を駆動制御して前記特定部を振動させる構成とすることが可能である。
これにより、遊技者に対し振動と同時に低音を知覚させることが可能とされる。
上記した本発明に係る遊技機においては、前記駆動制御手段は複数系統の音信号を同時再生可能とされ、前記特定部を振動させるための音である振動音と、エラー報知のための音であるエラー音と、前記振動音と前記エラー音以外の音である第三音とに少なくとも区分される音の種別ごとに、再生に用いる前記系統が定められており、前記駆動制御手段は、前記振動音の音信号を再生出力する際、前記複数系統のうち前記振動音と前記エラー音以外の前記系統をマスクする処理を行う構成とすることが可能である。
これにより、エラーが検出された場合における報知音の出力を可能としながら、振動音以外の音をマスクすることが可能とされる。
上記した本発明に係る遊技機においては、前記駆動制御手段は、エラーが検出された場合は、前記複数系統のうち前記エラー音の系統を除く全系統をマスクする処理を行う構成とすることが可能である。
これにより、エラー検出時には特定部が振動しないように図られる。
本発明によれば、設定値に基づく演出抽選が適正に行われるようにすることができる。
実施形態の遊技機の正面図である。 実施形態の遊技機の平面図(図2A)及び右側面図(図2B)である。 実施形態の遊技機が備える前面パネルの背面図である。 実施形態の遊技機が備える本体ケースの正面図である。 前面パネルを開状態とした際の遊技機の様子を模式的に表した斜視図である。 遊技機内部の制御構成の概略的なブロック図である。 遊技機が備える主制御基板の回路構成を示した図である。 原点検出に係る構成についての説明図である。 回転リール(回胴)に形成された図柄についての説明図である。 主制御側起動処理のフローチャートである。 動作停止エラー処理のフローチャートである。 設定変更処理のフローチャートである。 メインループ処理のフローチャートである。 主制御側のタイマ割込み処理のフローチャートである。 演出制御側メイン処理のフローチャートである。 実施形態の演出制御の1msタイマ割込処理のフローチャートである。 実施形態の演出制御におけるコマンド解析処理のフローチャートである。 実施形態の演出制御におけるコマンド対応処理のフローチャートである。 実施形態の演出制御におけるシナリオ登録処理のフローチャートである。 実施形態の演出制御におけるシナリオ削除処理のフローチャートである。 実施形態の演出制御におけるシナリオ更新処理のフローチャートである。 実施形態の演出制御におけるサブシナリオ更新処理のフローチャートである。 実施形態のシナリオ登録情報、ランプデータ登録情報、モータデータ登録情報の説明図である。 実施形態の音データ登録情報の説明図である。 実施形態のメインシナリオテーブルの説明図である。 実施形態のサブシナリオテーブルの説明図である。 実施形態の音の登録処理のフローチャートである。 実施形態のSEの設定処理のフローチャートである。 実施形態の音コントロールの設定処理のフローチャートである。 実施形態の音コントロールの情報のデータ構造についての説明図である。 フェード系の音コントロール情報の変換処理についての説明図である。 フェード系の音コントロールの情報の使用例についての説明図である。 2次ボリュームにより所定種別の音を消音させる制御例についての説明図である。 実施形態の音再生処理のフローチャートである。 振動用の音出力に係る処理過程の例を説明するフローチャートである。 エラー発生時におけるエラー音以外のマスクを実現するための処理例を示したフローチャートである。
以下、本発明に係る遊技機の実施形態について、次の順序で説明する。なお、実施形態では遊技機の一例としてスロットマシン(回胴式遊技機)を例に挙げる。

<1.回胴遊技機の機構構成>
<2.回胴遊技機の制御構成>
<3.回転リール>
<4.主制御側起動処理>
<5.設定変更処理>
<6.メインループ処理>
<7.タイマ割込み処理>
<9.演出制御側メイン処理及び割込み処理>
<10.演出制御に係る処理の詳細>
[10-1.コマンド解析処理]
[10-2.シナリオ登録・削除処理]
[10-3.シナリオ更新処理]
[10-4.音の登録処理]
[10-5.音再生処理]
<11.実施形態の振動演出>
<12.まとめ及び変形例>
<1.遊技機の機構構成>

先ず、図1〜図5を参照し、本技術に係る実施形態としての遊技機の一例であるスロットマシンの外観構成を説明する。
図1はスロットマシンの正面図、図2Aは平面図、図2Bは右側面図、図3は前面パネル2の背面図、図4は本体ケース1の正面図、図5は前面パネル2を開状態とした際のスロットマシンの様子を模式的に表した斜視図である。なお、図5では、本体ケース1内側に収容された各種の部品の図示は省略している。また、図2では、前面パネル2が閉状態とされた際のスロットマシンの様子を表している。
本実施形態のスロットマシンは、矩形箱状の本体ケース1と、各種の遊技部材を装着した前面パネル2とが、図示しないヒンジ機構を介して連結され、前面パネル2が本体ケース1に対して開閉自在に取り付けられている。本体ケース1は、前面側が開口されており(図5参照)、前面パネル2は、閉状態において本体ケース1の前面側の開口を閉塞する(図2参照)。本例において、本体ケース1は、背面部に開口は形成されておらず、従って前面パネル2が閉状態とされたときは、該前面パネル2によって前面側の開口が閉塞された本体ケース1内側に閉空間が形成される。
ここで、遊技機の前面側とは、使用時に遊技者と対向する側を意味する。
図4に示すように、本体ケース1の略中央には、3つの回転リール(回胴)4a、4b、4cを備える図柄回転ユニット3が配置されている。また、その下側に、メダル払出装置5が配置されている。
各回転リール4a、4b、4cには、後述する各種図柄、例えばBB(ビッグボーナス)やRB(レギュラーボーナス)用の図柄や、各種のフルーツ図柄、リプレイ図柄などが描かれている。
メダル払出装置5は、メダルを貯留するメダルタンク5aを有する。また払出ケース5b内に、図6で後述する払出モータ75、払出接続基板73、ホッパー基板74、メダル払出センサ76等が収納されている。
メダルタンク5aに貯留されたメダルは、払出モータ75の回転に基づいて、払出口5cから図面手前方向に向けて導出される。尚、限界量を越えて貯留されたメダルは、超過メダル導出部5dを通して、補助タンク6に落下するよう構成されている。
メダル払出装置5に隣接して電源基板41が配置される。また、図柄回転ユニット3の上方に主制御基板40が配置され、主制御基板40に隣接して回胴設定基板71が配置されている。
また図柄回転ユニット3の内部には、図6に示す回胴用LED(Light Emitting Diode)中継基板56と回胴中継基板53とが設けられ、図柄回転ユニット3に隣接して外部集中端子板70が配置されている。
さらに、本体ケース1においては、図柄回転ユニット3の側方に前面パネル2の開放(ドアの開放)を検知するためのドア開放センサ35が設けられている。
図1に示すように、前面パネル2の上部にはLCD(Liquid Crystal Display)ユニット7が配置されている。このLCDユニット7には、遊技動作を盛り上げるためなどに各種のキャラクタが表示される。
またLCDユニット7の下部には、回転リール4a、4b、4cを表出させる表示窓8が形成されている。この表示窓8を通しては、回転リール4a、4b、4cごとに各々3個程度の図柄が視認可能とされている。この場合、各回転リール4a、4b、4cが停止した際に表示窓8内で図柄が停止する位置としての図柄停止位置は3×3=9箇所となる。そして、合計9個の図柄停止位置のうち水平方向に並ぶ三つの図柄停止位置を結ぶラインが三本と、対角線方向に並ぶ三つの図柄停止位置を結ぶラインの二本の合計五本が仮想的な図柄停止ラインとなる。
また、図柄停止ラインのうちで、当選図柄(当選役)が揃ったか否かの判定に用いられる図柄停止ラインは有効ラインとされ、それ以外の図柄停止ラインは無効ラインとされる。有効ラインと無効ラインは、BBやRB、または、AT(アシストタイム)やART(アシストリプレイタイム)などの各種遊技状態に応じて、適宜変更される。即ち、例えば、通常ゲーム中は中段の1ラインが有効ラインとされるが、ボーナスゲーム中は上段と中段の2ラインが有効ラインに変更される場合などである。
なお、図柄回転ユニット3の内部には、回転リール4a、4b、4cが停止した状態において視認される9個の図柄それぞれを内側から照射可能な位置に回胴用LEDが配置されている(図1では不図示)。それぞれの回胴用LEDはそれぞれの回転リール4a、4b、4cの回転状態や停止状態、或いは各種演出に応じて点灯・消灯される。
表示窓8の下方には、遊技状態を示すLED群9や、遊技成果として払出されるメダル数を表示する払出表示部10や、貯留数表示部11が設けられている。
LED群9は、例えば、当ゲームに投入されたメダルの枚数を示すLED(ベット枚数表示LED)や再遊技状態を示すLED、回胴を回転させる準備が整ったことを示すLED(当ゲームの遊技に要する所定枚数のメダルの投入が完了したことを示すLED:遊技開始表示LED)、メダルの投入の受付状態を示すLEDなどで構成されている。
払出表示部10は、7セグメントLEDを2個連設して構成されており、払出メダル数を特定すると共に、何らかの異常事態の発生時には、異常内容を表示するエラー表示器としても機能する。
貯留数表示部11には、クレジット状態で貯留されているメダル数が表示される。
表示窓8の上方、左、右には、LED演出部15a、15b、15cが設けられている。LED演出部15a、15b、15cは、所定の絵柄、意匠が施され、内側に配置されたLEDによって光による演出が実行されるように構成されている。LED演出部15a、15b、15cで実行される演出は、例えば、BBやRBに当選したことを示す演出や、ATやART等の状態を示す演出、AT中やART中のアシスト演出等である。
尚、個々の説明は省略するが、前面パネル2には、演出や動作状態を提示するためのLEDとして他のLEDが各種配置されている。
前面パネル2の中央右側には、メダルを投入するメダル投入口12が設けられ、これに近接して、メダル投入口12に詰まったメダルを返却させるための返却ボタン13が設けられている。返却ボタン13の右側には、専用のキーを差し込むための鍵穴が設けられている。前面パネル2が本体ケース1に対して閉じた状態において、鍵穴に差し込まれたキーを右へ回すことにより前面パネル2が解錠され(以下「解錠動作」と表記)、前面パネル2の本体ケース1に対する開閉が可能となる。また、鍵穴に差し込まれたキーを左へ回すことにより、打ち止めやエラーによる遊技の中止状態が解除される(以下「中止解除動作」と表記)。
また、前面パネル2の中央左側には、クレジット状態のメダルやベット状態のメダルを払出すクレジット精算ボタン14と、クレジット状態のメダルを擬似的に三枚投入するマックス投入ボタン16とが設けられている。
また、前面パネル2には、回転リール4a、4b、4cの回転を開始させるためのスタートレバー17と、回転中の回転リール4a、4b、4cを停止させるための停止ボタン18a、18b、18cが設けられている。
遊技者がスタートレバー17を操作すると、通常は、3つの回転リール4a、4b、4cが正方向に回転を開始する。但し、内部当選状態を予告するために遊技中断状態を伴うリール演出(所謂フリーズ演出)を行う場合がある。リール演出は、回転リール4の回転による演出という意味で「回転演出」と表記できる。リール演出では、例えば、回転リール4a、4b、4cの全部または一部が、変則的に回転(いわゆる「演出回転」)した上で正方向の回転を開始する演出などが実行される。
リール演出の具体的な例としては、例えば、
・極めてゆっくり正方向に回転(正回転)して静止するスロー演出
・正回転と逆回転を繰り返した後に、所定時間だけ逆回転して静止する逆回転演出
・第1の所定時間だけ正回転と逆回転を繰り返した後に静止する第1の揺動演出
・第2の所定時間だけ正回転と逆回転を繰り返した後に静止する第2の揺動演出
・第2の所定時間だけ正回転と逆回転を繰り返した後に静止し、さらに、極めてゆっくり正回転した後に静止するスロー揺動演出
・第2の時間だけ正回転と逆回転を繰り返した後に静止し、さらに、所定時間だけ逆回転した後に静止する揺動逆回転演出
・所定速度で正回転または逆回転した後に所定の図柄に揃えて静止する演出
・現状の回転状態(或いは停止状態)を維持する演出
などが用意されている。そして、このようなリール演出時には、LCDユニット7におけるキャラクタ演出や、LEDランプを点滅させるランプ演出や、スピーカを駆動する音演出の全部または一部が適宜に選択されて実行される。
前面パネル2の下方には、メダルを蓄える横長の受け皿19と、払出装置5の払出口5cに連通するメダル導出口20とが設けられている。
また前面パネル2の上方左右にはスピーカ30a、30bが、下方左右にはスピーカ330c、30dが配置されている。本例では、上方のスピーカ30a、30bについては8Ω、10Wの中高域用スピーカが用いられ、下方のスピーカ30c、30dについては8Ω、30Wの中低域用スピーカが用いられている。
下方のスピーカ30c、30dについては、図3や図5を参照して分かるように、背面の少なくとも一部が表出している(本例では背面側の全体が表出している)。つまり、前面パネル2が閉状態とされたときには、これらスピーカ30c、30dは、それぞれ背面側の少なくとも一部が本体ケース1内側の閉空間に露呈される。
また、前面パネル2の背面側には、図1で示したメダル投入口12に投入されたメダルの選別を行うメダル選別装置21と、メダル選別装置21により不適正と判別されたメダルをメダル導出口20に案内する返却通路22とが設けられている(図3参照)。
また、前面パネル2の背面側上部には、基板ケース23が配置されている。この基板ケース23には、図6で述べる演出制御基板42、演出インターフェース基板43、液晶制御基板44、液晶インターフェース基板45などが収容されている。
またメダル選別装置21の側方には、図1に示す各種の遊技部材と主制御基板40との間の信号を中継する遊技中継基板60(図6で後述する)が設けられている。
<2.回胴遊技機の制御構成>

次に本実施の形態のスロットマシンの制御系の構成について説明する。
図6は、スロットマシンの内部の制御構成の概略的なブロック図である。本実施の形態のスロットマシンは、その制御構成が主制御基板40を中心に構成されている。
主制御基板40は、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)等を備えたマイクロコンピュータやインターフェースのための回路等が搭載され、スロットマシンの遊技動作全般に係る統括的な制御を行う。例えば主制御基板40が回転リール4a、4b、4cを含む各種の遊技部材の動作を制御するとともに、動作状況を把握する。また遊技動作に応じて演出を実行させる。
主制御基板40は、電源基板41、演出インターフェース基板43、回胴中継基板53、遊技中継基板60、外部集中端子板70、回胴設定基板71、払出接続基板73との間で各種信号(コマンドや検出信号等)のやりとりを行う。
電源基板41は、AC24Vを受けて、これを整流・平滑して直流電圧を得る。そして電源基板41はコンバータ回路を備えて各部に必要な電源電圧を生成する。図では主制御基板40を介して各部に与えられる主制御電源電圧V1、及び演出インターフェース基板43を介して各部に与えられる演出制御電源電圧V2を示している。
また電源基板41には電源遮断状態を検出する電源監視回路や、主制御基板40にバックアップ電源電圧を供給するバックアップ電源回路なども設けられている。さらに、電源基板41は、電源電圧の降下に応じて電源異常信号Evを生成し、それぞれ主制御基板40、演出インターフェース基板43に出力する(図示は省略)。
演出制御基板42は、マイクロコンピュータやインターフェースのための回路が搭載され、スロットマシンの演出動作に関する制御を行う。図示のように演出制御基板42は、マイクロコンピュータを構成するCPU42a、ROM42b、及びRAM42cを備えている。また、演出制御基板42は、不図示のカウンタ回路やタイマ回路を備えており、それらを用いて各種時間の計測を行う。
演出制御基板42は、音源IC(Integrated Circuit)42dを備えている。
音源IC42dは、複数の再生チャネル(後述する音チャネルaCH)のフレーズをミキシングして所定本数(所定の出力チャネル数)の音信号を得る。本例の場合、スピーカ30としては、上方のスピーカ30a、30bの組と、下方のスピーカ30c、30dの組が設けられ、各組がそれぞれLch、Rchの2チャネル出力に対応している。このため、音源IC42dの出力チャネル数は例えばLch,Rchの2チャネルとされている。
また、音源IC42dは、制御対象として指示されたフレーズについての音コントロールを行う。具体的に、演出制御基板42のCPU42aは、ボリュームの変化指示やフェードイン再生/フェードアウト再生等の音響効果の付加に係る指示情報を音源IC42dに対して与え、音源IC42dはそれらの情報に従って制御対象として指定されたフレーズの再生制御を行う。
本例で用いる音源IC42dは、SUBボリュームの設定機能やパン機能(左右方向パン及び上下方向パン)も有するものとされる。
この場合の音源IC42dが音出力を行うにあたって指示を要求する情報は、少なくとも「フレーズ番号」「1次ボリューム」「1次ボリューム遷移量」「2次ボリューム」「ループ回数」「SUB0ボリューム」「SUB1ボリューム」「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」とされる。すなわち、この場合の音源IC42dには、これらの項目ごとにその指示値の入力を受け付けるレジスタが音チャネルaCHごとに設けられている。
なお、本実施形態ではSUBボリュームは使用しないものとしている。従って上記の「SUB0ボリューム」「SUB1ボリューム」のレジスタには「0」をセットする(後述する図34のステップS1502を参照)。
音源IC42dが出力する音信号は、演出インターフェース基板43及びスピーカ中継基板47を介してスピーカ30(30a〜30d)に与えられる。
なお、音源IC42dは演出制御基板42に対して設けることに限らず、演出制御基板42とは別基板上に設けることもできる。
また、演出制御基板42は、演出インターフェース基板43を介して主制御基板40からのコマンドを受け取る。例えば主制御基板40は、演出制御基板42に対して、スピーカ30(30a〜30d)による音演出、LEDランプや冷陰極線管放電管によるランプ演出、LCDユニット7による図柄演出、役物などの可動体を用いた可動体演出を実現するための制御コマンドを出力し、演出制御基板42はその制御コマンドに応じた演出制御処理を行う。
ここで、以下、主制御基板40が演出制御基板42に対して出力する制御コマンドのことを「演出制御コマンド」と表記する。
本例において、演出制御コマンドは、1バイト長のモード(MODE)と、同じく1バイト長のイベント(EVENT)からなる2バイト構成により機能を定義する。
MODEとEVENTの区別を行うために、MODEのBit7はON、EVENTのBit7をOFFとしている。
これらの情報を有効なものとして送信する場合、モード(MODE)およびイベント(EVENT)各々に対応してストローブ信号が出力される。すなわち、主制御基板40(後述するCPU80a)は、送信すべきコマンドがある場合、演出制御基板42にコマンドを送信するためのモード(MODE)情報の設定および出力を行い、この設定から所定時間経過後に1回目のストローブ信号の送信を行う。さらに、このストローブ信号の送信から所定時間経過後にイベント(EVENT)情報の設定および出力を行い、この設定から所定時間経過後に2回目のストローブ信号の送信を行う。
ストローブ信号は主制御基板40により、演出制御基板42のCPU42aが確実にコマンドを受信することが可能な所定期間アクティブ状態に制御される。
また演出制御基板42のCPU42a)は、ストローブ信号の入力に基づいて割込を発生させてコマンド受信割込処理用の制御プログラムを実行し、この割込処理において演出制御コマンドが取得される。
演出制御基板42では、主制御基板40から内部抽選結果を特定する演出制御コマンド(遊技開始コマンド)受けると、内部抽選結果に対応してアシストタイム当選状態とするか否かのAT抽選を実行する。
なお、演出制御基板42は、AT抽選に当選した後の所定回数のゲーム(AT中)では、小役当選状態において、その図柄を所定の図柄停止ラインに整列できるよう、3つの回転リール4a、4b、4cの停止順序を遊技者に報知する制御を行う。
また演出制御基板42は、主制御基板40からのリール演出実行を示す演出制御コマンドを受けると、主制御基板40で実行するリール演出に対応する演出動作を開始する。
これらのような演出制御動作のため、演出制御基板42は、演出インターフェース基板43を通して各部と必要な通信を行う。
演出制御基板42は、演出インターフェース基板43、及び液晶インターフェース基板45を介して液晶制御基板44に接続されている。
液晶制御基板44は、LCDユニット7における画像表示による演出の制御を行う。この液晶制御基板44には、VDP(Video Display Processor)、画像ROM、VRAM(Video RAM)、液晶制御CPU、液晶制御ROM、液晶制御RAM等が搭載される。
VDPは、画像展開処理や画像の描画などの映像出力処理全般の制御を行う。
画像ROMには、VDPが画像展開処理を行う画像データ(演出画像データ)が格納されている。
VRAMは、VDPが展開した画像データを一時的に記憶する画像メモリ領域とされる。
液晶制御CPUは、VDPが表示制御を行うために必要な制御データを出力する。
液晶制御ROMには、液晶制御CPUの表示制御動作手順を記述したプログラムやその表示制御に必要な種々のデータが格納される。
液晶制御RAMは、ワークエリアやバッファメモリとして機能する。
このような液晶制御基板44は、演出制御基板42からの表示演出に関するコマンドを受け付け、それに応じて表示駆動信号を生成する。そして液晶インターフェース基板45を介してLCDユニット7に表示駆動信号を供給し、画像表示を実行させる。
また演出制御基板42は、演出インターフェース基板43を介して、LED基板48や回胴LED中継基板56を経由して各種のLEDによるランプ演出を実現している。
LED基板48には、例えば図1に示したLED演出部15a、15b、15cとしてのLEDが配置されている。
回胴LED中継基板56は、第1回胴LED基板50a、第2回胴LED基板50b、第3回胴LED基板50cについて演出制御基板42からのLED駆動信号を中継する。
第1回胴LED基板50aには、回転リール4aの図柄を内側から照射する回胴用LEDが配置されている。第2回胴LED基板50bには、回転リール4bの図柄を内側から照射する回胴用LEDが配置されている。また、第3回胴LED基板50cには、回転リール4cの図柄を内側から照射する回胴用LEDが配置されている。
また、演出制御基板42は、可動体駆動部102を制御して可動体演出を実現させる。可動体駆動部102は、スロットマシンが備える可動体(不図示)を駆動するモータやソレノイド等のアクチュエータと、アクチュエータの駆動回路(ドライバ回路)とを備えており、演出制御基板42は可動体駆動部102の制御を行うことで可動体を動作させて可動体演出を実現させる。
主制御基板40は、遊技中継基板60を介して、図6のようにスロットマシンの各種遊技部材に接続されている。
遊技表示基板61は、遊技状態を示すLED群9や、7セグメントLEDを有した払出表示部10や、同じく7セグメントLEDを有した貯留数表示部11を搭載している。主制御基板40は、遊技表示基板61に対して、遊技中継基板60を介して制御コマンドを送信し、遊技状態に応じた表示を実行させるように制御している。
始動スイッチ基板62には、スタートレバー17による始動スイッチが搭載されている。
停止スイッチ基板63には停止ボタン18a、18b、18cによる停止スイッチが搭載されている。
貯留メダル投入スイッチ基板64には、マックス投入ボタン16の投入スイッチが搭載されている。
精算スイッチ基板65には清算ボタン14の清算スイッチが搭載されている。
主制御基板40は、これらの基板(61、62、63、64、65)のスイッチによる遊技者操作の検出信号を、遊技中継基板60を介して受信する。
ドアセンサ66は、前面パネル2の前述した鍵穴に対して設けられたセンサである。ドアセンサ66によって、前述した遊技の中止解除動作を認識可能とされている。
メダル通過センサ67及びレバー検出センサ68は、メダル選別装置21に設けられている。メダル通過センサ67は、メダルの通過経路に沿って配置されそれぞれが例えばフォトインタラプタで構成された第一センサと第二センサとを備えており、選別された正規のメダルの通過を検出する。レバー検知センサ68は、例えばフォトマイクロセンサで構成され、メダル投入口12から投入されたメダルの通過に応じて動作するセンサレバーにより遮蔽されるセンサである。つまり、メダル投入口12から投入されたメダルは、レバー検知センサ68を通過した後に正規のメダルだけが選別された後、メダル通過センサ67によりその通過が検出される。
主制御基板40は、これらのセンサ(66、67、68)の検出信号を、遊技中継基板60を介して受信する。さらに、主制御基板40は、受信したセンサの検出信号により投入されたメダルの投入時間や通過方向を検出し、所定の規定に合致した場合にのみ投入メダルとして受け付け、それ以外の場合には投入メダルエラーとして処理する。
ブロッカーソレノイド69は、不正メダルの通過を阻止するブロッカーをON/OFFに駆動する。主制御基板40は、遊技中継基板60を介してブロッカーソレノイドを制御する。尚、本例においては、ブロッカーソレノイド69をOFFすることで投入メダルが排出される。
また、主制御基板40は、回胴中継基板53を経由して、回転リール4a、4b、4cを回転させる3つのステッピングモータ54(第1回胴ステッピングモータ54a、第2回胴ステッピングモータ54b、第3回胴ステッピングモータ54c)と接続されている。
さらに主制御基板40は、回胴中継基板53を経由して、回転リール4a、4b、4cの原点位置(後述する原点位置101)を検出するための3つのインデックスセンサ55(第1回胴インデックスセンサ55a、第2回胴インデックスセンサ55b、第3回胴インデックスセンサ55c)に接続されている。
主制御基板40は、ステッピングモータ54a、54b、54cを駆動または停止させることによって、回転リール4a、4b、4cの回転動作と、目的位置での停止動作を実現している。また主制御基板40は、インデックスセンサ55a、55b、55cの検出信号に基づき、回転リール4a、4b、4cの原点位置を検知できる。
また、主制御基板40は、払出接続基板73を介してメダル払出のための装置部にも接続されている。メダル払出のための装置部として、メダル払出制御を行うホッパー基板74と、払出モータ75と、メダル払出センサ76が設けられている。
ホッパー基板74は、主制御基板40からの払出制御信号に基づいて払出モータ75を回転させて、所定量のメダルを払出しする。
メダル払出センサ76は、払出メダルの通過を検出する。メダル払出センサ76による検出信号は、払出メダル枚数の不足や払出動作が行われないなどの払出異常状態の検出に用いられる。
また主制御基板40は、外部集中端子板70に接続されている。外部集中端子板70は、例えばホールコンピュータに接続されており、主制御基板40は、外部集中端子板70を通して、メダルの投入枚数やメダルの払出枚数などをホールコンピュータに出力している。
また主制御基板40は、回胴設定基板71にも接続されている。回胴設定基板71に対しては設定キーの操作に応じてON/OFFされる設定キースイッチ72aとリセットボタンの操作に応じてON/OFFされるリセットスイッチ72bとが設けられている。回胴設定基板71は、係員が上記の設定キーやリセットボタンを用いて設定した設定値vdを示す信号などを出力している。
ここで、設定値vdとは、当該スロットマシンで実行される抽選処理の当選確率、換言すれば、遊技者に有利な遊技状態に当選させるか否かの確率についての段階を表す値であり、遊技ホールの営業戦略に基づいて適宜に設定される。本例では、当選確率の段階は6段階とされ、設定値vdとしては設定「1」〜設定「6」までの6段階のうち任意の段階を表す値を設定可能とされている。この際、設定値vd自体の値としては、「0」〜「5」が割り当てられる。
本例では、設定値vdの値が大きいほど当選確率が高くされている。
ホールの係員等は、所定の操作により設定値vdの変更を行うことができる。具体的に、設定値vdの変更を行うにあたっては、先ず、前面パネル2を開放し、設定キースイッチ72aをONにしたまま(本例では設定キーを右に回したまま)で電源をONにする。すると、回胴設定基板71に対して設けられた表示器に現在設定されている段階を表す設定の値(「1」〜「6」の何れか)が表示され、この状態でリセットボタンを押す(リセットスイッチ72bがONとなる)ごとに表示値が+1される(表示値「6」の次は「1」に戻る)。さらに、このようなリセットボタンによる値の選択後、スタートレバー17を操作することで、設定値vdが選択した値に応じた値に確定され、その後、設定キースイッチ72aをOFFする(本例では設定キーを左に回す)ことで、設定値vdの変更が終了する。
なお、このような設定値vdの変更を可能とするために主制御基板40(後述するCPU80a)が行う設定変更処理については図12で後述する。
続いて、図7で主制御基板40の回路構成を説明する。
図示の通り、主制御基板40は、ワンチップマイコンによるコントローラ80と、8ビットパラレルデータを入出力するI/Oポート回路83と、カウンタ回路81と、各部とのインターフェース部を有して構成されている。
コントローラ80は、CPU80a、ROM80b、RAM80cの他、割込コントローラ80dやCTC(Counter/Timer Circuit) 80e等を内蔵している。なお、RAM80cには、不揮発性のメモリが用いられている。
CTC80eは、8ビットのカウンタやタイマを集積した回路であり、CPU80aの処理における周期的割り込みや一定周期のパルス出力作成機能(ビットレートジェネレータ)、時間計測の機能を付与するものである。本例では、CTC80eを利用して、CPU80aに1.49msの時間間隔でタイマ割込み(後述の図11)をかけている。
カウンタ回路81はハードウェア的に乱数値を生成する回路である。コントローラ80(CPU80a)はカウンタ回路81で生成された乱数値を利用して抽選処理を行う。
主制御基板40には、コントローラ80と図6に示した各基板等とのインターフェースが設けられる。
電源インターフェース82は電源基板41の電源回路との間のインターフェースである。
遊技インターフェース84は遊技中継基板60との間のインターフェースである。コントローラ80は、遊技インターフェース84を介して各種スイッチ、センサの検出信号の入力や、LED制御、ブロッカーソレノイド制御のためのコマンド送信を行う。
回胴モータ駆動部85は回胴中継基板53との間のインターフェースである。コントローラ80は、回胴モータ駆動部85によりステッピングモータ54a、54b、54cに対するモータ駆動信号の出力を行うと共に、回胴モータ駆動部85を経由して入力されるインデックスセンサ55a、55b、55cからの検出信号を取得する。
演出制御インターフェース86は、コントローラ80が演出インターフェース基板43を介して演出制御基板42へのコマンド送信を行うためのインターフェースである。具体的には例えば8ビットパラレルポートである。
払出接続インターフェース87は払出接続基板73とのインターフェースである。
外部インターフェース88は、外部集中端子板70を介したホールコンピュータとのインターフェースである。
回胴設定インターフェース89は、回胴設定基板71との間のインターフェースである。
<3.回転リール>

続いて、回転リール4a、4b、4cについて説明する。
図8は、回転リール4a、4b、4cに対する原点検出に係る構成についての説明図である。原点検出とは、各回転リール4a、4b、4cに設けられた特定の位置、即ち、原点の検出である。
なお、原点検出に係る構成は、回転リール4a〜4cのそれぞれについて同様であるため、ここでは代表して一つの回転リールを回転リール4として図示している。図8Aは原点検出に係る構成を斜視図により示し、図8Bは回転リール4に形成された被検出部93dと原点位置101との関係を概略断面図により示している。
図8Aには、ステッピングモータ54が備えるロータ54rの中心軸である回転軸Raを一点鎖線により示している。回転リール4は、回転軸Raの軸周りに回転駆動されるリールドラム90と、リールドラム90の内側に配置されたバックライト部91と、リールドラム90を直接的または間接的に支持するベース体92とを備えている。
ベース体92は、例えば合成樹脂で構成され、略板状に形成されたベース板92bと、ベース板92bから回転軸Raに沿った方向に突出する突出部92tを有している。ベース板92bは、リールドラム90の左右方向の一方側(ここでは右側)に沿って配置されている。ステッピングモータ54は、ロータ54r(回転軸Ra)を左右方向の一方側(ここでは左側)に向けた状態で、ベース体92の一面側(ここでは左面側)に固定されている。
この場合、突出部92tは、ベース板92bから左側方向に突出している。
リールドラム90は、二つのリールフレーム93、94と、これらリールフレーム930、94の外周に円筒状に装着される帯状のリールシート95とを有して構成されている。リールフレーム93、94は、例えば光透過性を有しないかまたは光透過率が極めて低い黒色の合成樹脂製で構成されており、それぞれ外周部がリム部93r、94rとして形成されている。リールフレーム93のリム部93r、リールフレーム94のリム部94rは、それぞれリールシート95の左右の縁部に沿う円環状に形成されている。
リールフレーム93は、ステッピングモータ54のロータ54rに着脱自在に固定されたハブ部93hと、リム部93rとハブ部93hとの間を半径方向に連結する複数のスポーク部93sとを有している。
ここで、本例の場合、リールフレーム94は、リールフレーム94に対して直接的には連結されておらず、リールフレーム94のリム部94rはリールシート95を介してリールフレーム93のリム部93rに支持されている(勿論、リム部94rとリム部93rとの間を周方向の1または複数箇所で例えば一体に連結することもできる)。
リールシート95は、例えば無色透明の合成樹脂製シートにより一定幅の帯状に形成され、リールフレーム93、94のリム部93r、94rに巻き付けられ、例えば接着剤により貼着されている。この図では図示を省略したが、リールシート95上には、複数の図柄が印刷により形成されている。
リールシート95における図柄形成領域は光透過率が比較的高くされており、バックライト部91におけるLEDが点灯したときに発光するようになっている。
インデックスセンサ55は、例えば透過型フォトセンサにより構成され、図のように本例ではベース板92bからリールドラム90に突出する突出部92tの先端部分に装着されている。インデックスセンサ55は、発光面、受光面がリールフレーム93の半径方向において互いに対向するように配置された発光部551と受光部552を有している。
本例の場合、リールドラム93の所定のスポーク部93sには、インデックスセンサ55と対向する向きに突出する被検出部93dが形成されている。この被検出部93dは、リールドラム90の回転に伴い、インデックスセンサ55の発光部551と受光部552との間の空間を通過する位置に形成されている。
このような構成により、透過型フォトセンサとしてのインデックスセンサ55によっては、リールドラム90(回転リール4)の回転の一周回につき1回、発光部551と受光部552との間を被検出部93dが通過することに伴うONパルスの出現する検出信号が得られる。
ここで、図8Bに示すように、被検出部93dは、回転方向R(正回転方向)に平行な方向おける両エッジ(端部)のうち一方のエッジが原点位置101と同じ回転角度に位置するように位置決めされている。具体的に、本例の被検出部93dは、正回転方向(R)への回転進行方向側のエッジが原点位置101と同じ回転角度に位置するように位置決めされている。
なお、原点検出のための構成は、上記で説明したものに限定されるべきものではない。例えば、突起状の被検出部93dに代えて、特開2014−33743号公報に開示されているような切欠部による被検出部を設けた構成とすることもできる。この場合、インデックスセンサ55の発光部551と受光部552は、回転リール4の回転に伴い切欠部が到来したときに発光部551の発した光が受光部552で受光されるように配置すればよい。
インデックスセンサ55としては、透過型のフォトセンサに限らず、反射型のフォトセンサを用いることもできる。
続いて、回転リール4a、4b、4cを回転させる各ステッピングモータ54a、54b、54cの駆動方式と回転リール4a、4b、4cに形成された図柄との関係について、その一例を説明する。
本実施形態において、ステッピングモータ54a、54b、54cはユニポーラ駆動のステッピングモータとされ、それぞれセンタータップされた2つの駆動巻線を有している。本実施形態の場合、ステッピングモータ54a、54b、54cの駆動は、例えば、1相励磁と2相励磁とを交互に繰り返す1−2相励磁によって行われる。1−2相励磁による駆動方法は、1相励磁や2相励磁の駆動方法と比較して、ステップ角を半分にしたなめらかな駆動を実現できる。1−2相励磁の励磁パターン(励磁データ)の更新周期はタイマ割込み処理の周期である1.49msとされる。
図9は、回転リール4a、4b、4cに形成された図柄についての説明図である。
本例において、回転リール4a、4b、4cの表面には、回転方向に沿って21コマ分の図柄が配置されている。回転リール4a、4b、4cのそれぞれにおいて、図柄の種類は10種類(赤7、白7、バー、キャラ、チェリー、すいか、ベル、リプレイ、はずれ1、はずれ2)とされ、それらが所定の順序で配列されている。図中では、回転リール4aに形成された21コマの図柄をそれぞれ図柄4a1、4a2、・・・、4a21と表している。同様に、回転リール4bに形成された21コマの図柄を図柄4b1、4b2、・・・、4b21、回転リール4cに形成された21コマの図柄を図柄4c1、4c2、・・・、4c21と表している。各図柄の符号の末尾に付した番号は、その図柄の番号を表している。
回転リール4a、4b、4cにおいて、各図柄は等間隔で配置され、図中では図柄の切れ目位置を破線で表している。回転リール4a、4b、4cにおいては、所定の図柄切れ目位置が原点位置101とされている。本例における原点位置101は、それぞれ1番目の図柄である図柄4a1、4b1、4c1と、21番目の図柄である図柄4a21、4b21、4c21との間の図柄切れ目位置にそれぞれ設定されている。
図中の矢印Rは、定常回転中(正方向回転中)における回転リール4a、4b、4cの回転方向を表している。このことから理解されるように、各図柄に付した番号は、原点位置101を起点として、定常回転中において図柄が遷移する順番を表している。
ここで、本例においては、ステッピングモータ54a、54b、54cが1回転すると回転リール4a、4b、4cがそれぞれ1/63回転するようにステッピングモータ54a、54b、54cと回転リール4a、4b、4cとの間の回転比が設定されている。換言すれば、回転リール4a、4b、4cを1回転させるにはステッピングモータ54a、54b、54cを63回転させることを要する。
本例においては、ステッピングモータ54a、54b、54cを1回転させるために必要な駆動ステップ数は8ステップとなるため、回転リール4a、4b、4cを1回転させるために必要なステッピングモータ54a、54b、54cの駆動ステップ数は8×63=504とされている。
本例における回転リール4a、4b、4cには21コマの図柄が等間隔で形成されているため、図柄1コマ当たりのステップ数は504÷21=24ステップである。
これに応じ、各図柄については、ステップ位置として計24の位置を検出可能とされている。ここで、図柄中のステップ位置は、後の図11で説明するタイマ割込み処理ごとに図柄ステップ数がデクリメント(−1)されていくことで検出可能とされる。すなわち、各図柄中で検出可能なステップ位置は、24番(先頭ステップ位置)〜1番(最終ステップ位置)の24個である。その図柄の最終ステップ位置(1番)に到達した状態から図柄ステップ数が更にデクリメントされると、図柄ステップ数は24番(=0番)へと戻る。
また、各図柄については、24(0)番〜1番のステップ位置のうち所定のステップ位置がその図柄の停止を許可すべき位置(停止許可ステップ位置)として定められている。具体的には、8番のステップ位置が図柄の停止許可ステップ位置として定められている。回転リール4の停止時には停止図柄が決定され、該停止図柄で回転リール4を停止させるが、この際、回転リール4を停止させる位置は停止図柄中のどのステップ位置でも良いわけではなく、8番のステップ位置に達したことに応じて停止を許可するように定められている。
<4.主制御側起動処理>

図10のフローチャートを参照して、主制御基板40(コントローラ80)におけるCPU80aが実行する主制御側起動処理について説明する。
この主制御側起動処理は、電源投入時とコントローラ80におけるウォッチドッグタイマ(WDT)のタイムアウト時のそれぞれで発生するリセット信号に応じてCPU80aが実行するものである。すなわち、主制御側起動処理は、スロットマシンの電源投入に伴うコントローラ80の起動時と、コントローラ80の動作が何らかの不具合により所定時間以上停滞したことに伴う再起動時に実行されるものである。
図10において、主制御基板40のCPU80aは、ステップS101の割込みモード設定処理として割込み処理のモードを初期モードに設定する処理を行い、続くステップS102でRAM80cのスタックポインタ先頭アドレスを所定のアドレス(例えば8000)にセット(初期化)する。
次いで、CPU80aは、ステップS103の乱数設定処理として、使用乱数回路とラッチ方法の選択、及び乱数ラッチ割込みの禁止設定を行う。具体的には、4つの乱数回路(0〜3)のうちから一つの乱数回路(例えば0)を、またラッチ方向としてハードラッチを選択すると共に、乱数を取り込んだときの割込要求を禁止する設定を行う。
その上で、CPU80aはステップS104で割込み禁止設定、続くステップS105でRAM80cへのアクセス禁止設定、さらに続くステップS106でサブブートタイマの設定(本例では約1秒)をそれぞれ行った上で、ステップS107で電源異常か否かを判定する。なお、電源異常か否かの判定は、前述した電源基板41より電源異常信号Evが入力されているか否かを判別することで行う。
電源異常である場合、CPU80aは先のステップS101から処理をやり直し、電源異常でない場合、CPU80aはステップS108に進んでWDTをクリアした上で、ステップS109でサブブートタイマの値を確認する。サブブートタイマの値が0以外である場合、CPU80aはステップS107から処理をやり直し、サブブートタイマの値が0であればステップS110に進む。すなわち、ステップS107で電源異常と判定されない限り、ステップS106のサブブートタイマ設定処理で設定した時間が経過するまでステップS108のWDTのクリア処理を繰り返して待機するループが形成されている。
ステップS110でCPU80aは、外部クロック異常か否かの判定処理として、外部より入力されるクロックが異常であるか否かを判定する。外部クロック異常である場合、CPU80aは後の図11に示す動作停止エラー処理を実行する。
外部クロック異常でない場合、CPU80aはステップS111に進んでRAMアクセス許可設定(RAM80cへのアクセスを許可)を行った上で、ステップS112で各種センサ、スイッチからの信号入力を行う。具体的には、前述したドア開放センサ35による検出信号と設定キースイッチ72aからの信号を入力する。
続くステップS113でCPU80aは、ドア開放センサ35による検出信号に基づいてドア(前面パネル2)が開放状態であるか否かを判定する。
ドアが開放状態でない場合、CPU80aはステップS115に進む。
また、ドアが開放状態である場合、CPU80aはステップS114に進んで、設定キースイッチ72aがONか否かを判定する。設定キースイッチがONでない、即ちドアが開放されているものの設定キーON操作が行われていない場合、CPU80aはステップS115に進む。
なお、上記説明から理解されるように、ステップS113でドアが開放状態でなければ、ステップS114における設定キースイッチ72aのON/OFF判定が行われない。つまり、この場合における設定キー操作は無効扱いとされる。このようにドアが開放されていない場合の設定キー操作を無効扱いとすることで、設定値vdを改竄する不正行為の防止を図っている。
ステップS115でCPU80aは、設定値vdが適正範囲内の値であるか否かを判定する。ここで、RAM80cにおいては、設定値vdを格納するための領域が予め設定されており、ステップS115では当該RAM80cの所定の領域に格納されている設定値vdを読み出し、該設定値vdが適正範囲内の値であるか否か(つまり本例では設定「1」〜設定「6」に対応した「0」〜「5」の範囲内か否か)を判定する。
設定値vdが適正範囲内の値であれば、CPU80aはステップS116でチェックサムが正常か否かを判定する。
ここで、電源遮断時には、CPU80aは、RAM80cの所定の対象領域についてチェックサムを算出し、RAM80cにおける所定領域(上記の対象領域とは異なる領域)に格納する処理を行っている。ステップS116の処理では、RAM80cにおける上記対象領域について同様にチェックサムを算出し、算出したチェックサムが電源遮断時に上記の所定領域に格納したチェックサムと一致するか否かを判定する。
双方のチェックサムが一致している(チェックサムが正常である)場合、上記対象領域における格納データについて、電源遮断前との同一性が証明されたことになる。しかし、電源遮断時にチェックサム算出が実行できなかった場合や、実行できても、その後、ステップS116でのチェックサム算出の実行時までの間に上記対象領域のデータが破損又は改竄されている場合もある。このような場合には、ステップS116の判定結果は不一致となる。
ステップS116において、双方のチェックサムが一致し正常と判定した場合、CPU80aはステップS117に進みスタックポインタが正常であるか否かを判定し、正常と判定した場合は電断復帰処理を実行する。
図示による説明は省略するが、電断復帰処理においては、RAM80cの格納情報に基づいて、電源遮断前の状態に復帰(いわゆるホットスタート)するための各種設定が行われる。CPU80aは、当該電断復帰処理を実行したことに応じ、後述するメインループ処理(図13)に移行する。
ここで、CPU80aは、先のステップS110で外部クロック異常と判定した場合、又はステップS115で設定値vdが適正範囲内の値でないと判定した場合、又はステップS116でチェックサムが正常でないと判定した場合、又はステップS117でスタックポインタが正常でないと判定した場合は、図11に示す動作停止エラー処理を実行する。
図11に示す動作停止エラー処理において、CPU80aは、ステップS201で割込み禁止設定を行い、続くステップS202でタイマ割込み禁止設定、INT割込み許可設定を行った上で、ステップS203でRAM80cへのアクセスを禁止する設定を行う。
そして、続くステップS204でCPU80aは割込み許可設定を行い、その後は、ステップS205のエラー表示処理を繰り返し実行する(無限ループ)。なお、当該エラー表示処理としては、例えば前述した払出表示部10に所定のエラーコードを表す値を表示させるための処理を行う。
このように、図10の起動処理において外部クロック、設定値vd、チェックサム、スタックポインタの異常がそれぞれ検知された場合には、エラー表示処理を無限に繰り返す動作停止エラー処理が実行される。
このような動作停止エラー処理が実行されると、スロットマシンにおけるゲームの進行はもはや不能となる。この意味で、当該動作停止エラー処理はゲームの進行を不能化する不能化処理と換言することができる。
ここで、上記により説明した主制御側起動処理が実行されることで、例えば設定値vdの不正な書き替えが行われる等により起動時にRAM82cに不適正な設定値vdが保持(記憶)されていた場合には、動作停止エラー処理によりゲームの進行が不能化される。
但し、ステップS113及びS114の判定処理により設定変更操作が検知されて設定変更処理が実行された場合には、後の説明からも理解されるように、当該設定変更処理の終了後にはCPU80aはメインループ処理に移行するため、ゲームの進行が可能な状態になる。
このことから理解されるように、本例のスロットマシンにおいては、設定値vdを変更する操作が行われることを条件に、ゲーム進行の不能化状態が解除される。
ここで、本例において、CPU80aは、上記した設定値vdやチェックサム等の各種の異常(エラー)が検出された場合には、エラーを通知するためのエラーコマンドとしての演出制御コマンドを演出制御基板42に対して送信する。
<5.設定変更処理>

CPU80aは、図10に示すステップS114で設定キースイッチ72aがONであると判定した場合(ドアが開放状態で且つ設定キーON操作が行われている場合)には、図12に示す設定変更処理を実行する。
図12に示す設定変更処理において、CPU80aは、先ずステップS301で設定変更時RAMクリア処理を実行する。即ち、RAM80cにおける設定変更時に対応して定められた領域(設定値vdの格納領域は含まれていない)をクリアする処理を行う。
そして、次のステップS302でCPU80aは、割込み設定処理として、設定変更処理時に対応した割込みモードの設定を行う。
続くステップS303でCPU80aは、RAM80cに格納されている設定値vdを読み出した上で、ステップS304で設定値vdがMAX(本例では設定「6」に対応した「5」)以上なら0クリアする処理を行う。これは、後述するステップS311でリセットボタン操作に応じて設定値vdが+1されたことに伴い設定値vdが「5」以上なったときに、設定値vdが「0」(設定「1」に対応する値)に戻されるようにするためである。
続くステップS305でCPU80aは、設定値コマンドをセットする。設定値コマンドとは、RAM80cに格納されている設定値vdを演出制御基板42のCPU42aに対して通知するためのコマンドである。コマンドのセットは、演出制御インターフェース86(図7参照)における送信バッファに対して行う。
このように送信バッファにセットされたコマンドは、後述するタイマ割込み処理(図14)のコマンド出力処理(S505)において演出制御基板42側に送信される。
ステップS305のコマンドセット処理を実行したことに応じ、CPU80aは、ステップS306の設定値表示処理として、前述した回胴設定基板71に対して設けられた表示器に現在の設定値vdに応じた値を表示させるための処理を行う。なお、ここで言う現在の設定値vdとは、ステップS305でセットしたコマンドにおいて指定した設定値vdを意味する。
そして、CPU80aは、続くステップS307の乱数更新処理として、先のステップS103で0ラッチした乱数についての更新処理を行い、次のステップS308で1タイマ割込み分の待機処理を行った上で、ステップS309に処理を進める。
ステップS309でCPU80aは、スタートレバー17(始動スイッチ)のON/OFFを確認する。これは、設定値vdの確定操作の有無を確認していることに相当する。
スタートレバー17がOFFであれば、CPU80aはステップS310に進んでリセットボタン(リセットスイッチ72b)のON/OFF、即ち設定値vdの送り操作の有無を確認し、リセットボタンがOFFであればステップS307の乱数更新処理に戻る。
これにより、スタートレバー17による設定値vdの確定操作、又はリセットボタンによる設定値vdの送り操作の何れかが行われるまで、乱数更新(S307)と1タイマ割込み分の待機処理(S308)とが繰り返し行われる。
ステップS310において、リセットボタンがONであれば、CPU80aはステップS311に進んで設定値vdをインクリメント(+1)した上で、先のステップS304に戻る。
また、ステップS311において、スタートレバー17がONであれば、CPU80aはステップS312に進み、現在の設定値vd(つまり直近のステップS306で表示させた設定値vd)をRAM82cの所定領域にセットする(記憶させる)。
ステップS312で設定値vdをRAM82cにセットすると、CPU80aはステップS313で設定値確定ドットの表示、即ち回胴設定基板71に設けられた表示器に設定値vdが確定した旨を表す表示を行わせる(例えば、当該表示器に表示中の数値情報を点滅表示させる、或いは表示輝度を上昇させるなど)。
そして、CPU80aは、続くステップS314及びステップS315により、設定値vdの変更終了操作を待機する処理を実行する。即ち、ステップS314で1タイマ割込み分待機する処理を実行した上で、ステップS315で設定キースイッチ72aのON/OFFを確認し、ONである場合にはステップS314に戻る。
設定キースイッチ72aがOFFであれば、CPU80aはステップS316に進み、先のステップS313で確定表示を実行させた表示器における数値表示をクリアさせた上で、ステップS317で設定変更終了コマンドをセットする。この設定変更終了コマンドは、演出制御基板42側に対して設定値vdの変更処理が終了した旨を通知するためのコマンドである。
ステップS317のコマンドセット処理を実行したことに応じ、この図に示す設定変更処理は終了となる。
CPU80aは、設定変更処理を終了したことに応じて、図13に示すメインループ処理に移行する。
<6.メインループ処理>

図13は、主制御基板40のCPU80aが実行するメインループ処理のフローチャートである。
CPU80aは、メインループ処理として、ステップS401〜S417で表す一連の処理を繰返す。メインループ処理は、1ゲームごとに繰り返し実行されるものである。
尚、1ゲームの期間は、スタートレバー17の操作受け付けが可能となる契機の発生から停止ボタン18a,18b,18cの操作に応じて回転中の回転リール4a,4b,4cが全て停止されるまでの期間である。後の説明から理解されるように、本例の場合、スタートレバー17の操作受け付けが可能となる契機は、1枚目のメダルがベット(マックス投入ボタン16や再遊技時の疑似投入によるベットも含む)されたタイミングである。
メインループ処理において、CPU80aは、先ずステップS401で、RAM初期化処理を実行する。すなわち、RAM80cのワークエリアにおける所定領域(1ゲームごとにクリアするものとして定められた領域)を0クリアする。
続くステップS402でCPU80aは、現在のゲームにおける遊技状態フラグを生成する。遊技状態フラグとは、現在のゲームの遊技状態を特定するフラグである。遊技状態は、「ボーナスゲーム中」や「ボーナス内部当選中」や「通常ゲーム中」などの遊技の各種状態を示す。さらに、ステップS402では、現在のゲームの直前のゲームでリプレイに当選したか否かを表す再遊技作動フラグを生成する。再遊技作動フラグの値は、リプレイ当選を表す「1」(ON)、又はリプレイ非当選を表す「0」(OFF)の何れかを設定する。
さらに、CPU80aは次のステップS403で遊技メダル投入処理を実行する。即ち、メダル投入口12から実際に投入されるメダル、或いは、マックス投入ボタン16の押下や再遊技の当選により擬似的に投入されるメダルについての管理やクレジット(貯留メダル)の管理を行う処理である。
なお、ステップS403の遊技メダル投入処理は、スタートレバー17がON操作されたか否かの判定処理を含んでおり、スタートレバー17がON操作されたことを条件として処理が終了する。
ステップS403の遊技メダル投入処理が終了すると、CPU80aはステップS404で内部抽選用乱数抽出処理を実行する。具体的には、カウンタ回路81に保持されているカウンタ値を取得する。取得したカウンタ値は、乱数値としてRAM80cの所定の番地に保持される。
そして、続くステップS405でCPU80aは、設定値vdが適正範囲内の値であるか否かを判定する。具体的には、RAM82cに格納されている設定値vdが設定「1」〜設定「6」の何れかに対応した値であるか、つまりは「0」〜「5」の範囲内の値であるか否かを判定する。
設定値vdが適正範囲内の値でなければ、CPU80aは先の図11により説明した動作停止エラー処理を実行する。
即ち、CPU80aは、上記のステップS405の処理によって1ゲームごとにRAM82aに記憶されている設定値vdが適正範囲内の値か否かを判定し、適正範囲内の値でない場合には、遊技動作の進行を停止してゲーム進行を不能化している。
一方、設定値vdが適正範囲内の値であれば、CPU80aはステップS406に進み、記憶された乱数値に基づいて内部抽選処理(図柄抽選処理)を実行する。図柄抽選処理では、ボーナス図柄への当選か否か、小役図柄への当選か否か、再遊技を示すリプレイ図柄への当選か否かが決定され、決定された抽選結果を示す制御コマンド(「遊技開始コマンド」)が演出制御インターフェース86における送信バッファにセットされ、タイマ割込み処理のコマンド出力処理(S505)によって演出制御基板42側に送信される。即ち、各図柄に当選したか否かが演出制御基板42側に通知される。
なお、小役図柄としては、例えば、「チェリー図柄」(4a10、4b3、4c9)、「ベル図柄」(4a4、4b5、4c3等)、「すいか図柄」(4a9、4b12、4c1等)などを例示することができる。
また、当該図柄抽選処理では、抽選結果に基づいて、「期待感演出コマンド」が上記送信バッファにセットされる。期待感演出コマンドとは、例えば、遊技開始時など1ゲーム中の所定タイミングで実行される期待感演出の内容を指示するためのコマンドである。
ステップS406の内部抽選処理を実行したことに応じて、CPU80aはステップS407でリール演出を実行するか否かを決定するリール演出抽選処理を実行する。なお、リール演出抽選処理において選出可能な演出は、内部抽選処理の結果に対応して定められている。例えば、「すいか図柄」等の所定の図柄に内部当選状態であれば、所定の当選確率に基づいて「極めてゆっくり正方向に回転して静止するスロー演出」等の所定のリール演出が選出可能とされている。
ステップS407のリール演出抽選処理を実行したことに応じて、CPU80aはステップS408で停止図柄決定初期化処理を実行し、停止操作が行われた回転リール4についての停止位置を決定(算出)する際に用いられる各種データの初期化を実行した上で、次のステップS409で回転リール4a〜4cの回転を開始させるべく回胴回転開始設定処理を実行する。
ステップS409の回胴回転開始設定処理は、リール演出抽選に当選しているか否かによって処理内容が異なっている。
ここで、リール演出は様々なタイミングで実行され、例えば、スタートレバー17の操作に応じて実行される。スタートレバー17の操作のタイミングで実行されるリール演出に当選している場合には、スタートレバー17の操作に応じてリール演出が実行された上で回転リール4a、4b、4cが一旦停止し、その後に改めて回転リール4a、4b、4cが起動(加速回転)されて一定速度による定常回転状態に遷移する。
リール演出抽選に当選している場合、ステップS409の回胴回転開始設定処理においては、回転リール4a、4b、4cを演出回転させた後に改めて定常回転状態に向けて起動させるための各種の設定処理が実行される。
一方、リール演出抽選に当選していない場合、ステップS409の回胴回転開始設定処理では回転リール4a、4b、4cを定常回転状態(一定速による回転状態)に向けて起動させるための各種の設定処理が実行される。
ところで、遊技者は、スタートレバー17の操作に応じて或るリール演出が実行された場合には、そのリール演出の種類に応じた所定の図柄に内部当選していることを推理できる。遊技者は、このような推理から目標とした図柄が図柄停止ライン上に揃うように停止操作を行う。推理が当った場合であって、且つ、停止タイミングが適切な場合に限り、内部当選状態が実効化されて所定のメダルが払出される。
CPU80aは、ステップS409の回胴回転開始設定処理を実行したことに応じ、ステップS410で回胴停止処理を実行する。
回胴停止処理では、停止ボタン18a、18b、18cの操作に応じて、回転リール4a、4b、4cの停止図柄を決定するための処理や、回転リール4a、4b、4cを停止図柄で停止させるための各種データの設定処理が行われる。また、回胴停止処理では、図柄停止ライン上に停止された図柄の照合処理も行われる。
上記の回胴停止処理においては、内部抽選処理(S406)の当否結果に沿うように、回転リール4a、4b、4cのうち対応する回転リール4を停止制御する。すなわち、内部抽選処理の結果、何らかの内部当選状態であれば、遊技者の適切な停止操作を条件として、当選結果に合うよう回転リール4a、4b、4cの図柄を整列させる。但し、遊技者が停止ボタン18を押すタイミングや、停止操作の順番が不適切である場合には、ハズレ状態の図柄で停止される。この結果、折角の小役当選も無駄になるが、ボーナス当選については、次回のゲーム以降も持ち越される。
CPU80aは、続くステップS411で入賞判定処理を実行する。すなわち、ステップS410の回胴停止処理における上記の照合処理の結果に基づき、図柄停止ライン上に当選図柄(当選役)が揃ったか否かを判定すると共に、当該判定結果に応じたメダルの払出枚数を算出する。
ステップS411の入賞判定処理では、図柄停止ライン上に当選図柄が揃ったか否かの判定結果を示す制御コマンド(入賞情報コマンド)を演出制御基板42に送信するべく、入賞情報コマンドを演出制御インターフェース86における送信バッファにセットする処理も行われる。
また、入賞判定処理では、当該ゲームの入賞情報に応じた払出数をRAM82cの所定領域にセットする処理も行われる。
さらに、続くステップS412でCPU80aは、メダル払出枚数監視処理として、メダル払出センサ76の検出信号に基づき払出メダル枚数をカウントすると共に、メダル払出に応じてクレジット枚数の値を更新する処理を行う。この際、RAM82cに上記の払出数がセットされている場合には、クレジット枚数の値を1ずつインクリメントし、クレジットがオーバーフローする場合は払出制御信号をONにしてメダル払出装置5にメダルを払い出させる。払い出しが完了すると払出制御信号をOFFとしてメダル払出枚数監視処理を終える。
ここで、メダル払出枚数監視処理では、メダル払出やクレジット枚数のインクリメントを示す制御コマンド(払出コマンド)を演出制御基板42に送信するべく、払出コマンドを演出制御インターフェース86における送信バッファにセットする処理も行われる。払出コマンドのセットは、クレジット枚数の値をインクリメントするごと、及びホッパーからメダルが1枚払い出されるごとに行う。
ステップS412に続くステップS413でCPU80aは、再遊技設定処理を実行する。再遊技設定処理では、リプレイ当選状態か否かを判定し、リプレイ当選状態であれば、再遊技動作の開始処理として、少なくとも再遊技動作フラグをセットする処理を実行し、ステップS414に進む。リプレイ当選状態でない場合には、再遊技動作の開始処理は実行せず(つまり再遊技動作フラグをセットせず)にステップS414に進む。なお、再遊技動作フラグは、前述したステップS403の遊技メダル投入処理において、再遊技に応じた投入処理を実行するか否かを判定するために用いられる。
ステップS414でCPU80aは、現在がボーナスゲーム中か否かを判定する。ボーナスゲーム中であれば、CPU80aはステップS416のボーナス作動中処理としてボーナス作動中である場合に対応した所定処理を実行した上で、先のステップS401に戻る。
一方、現在がボーナスゲーム中でなかった場合、CPU80aはステップS415でボーナス図柄が揃っているか否かを判定し、ボーナス図柄が揃っている場合には、ステップS417のボーナス作動開始処理としてボーナス開始時に対応した各種の設定処理を実行した上で、ステップS401に戻る。
ボーナス図柄が揃っていなかった場合、CPU80aはステップS417のボーナス作動開始処理をパスしてステップS401に戻る。
<7.タイマ割込み処理>

図14は、主制御基板40のCPU80aが実行するタイマ割込み処理のフローチャートである。当該タイマ割込み処理は1.49msごとに起動される。
図14において、先ずCPU80aは、ステップS501でレジスタの値を退避させた上で(レジスタ退避処理)、ステップS502で各種スイッチ信号やセンサ信号を受ける入力ポートのデータを取得し、例えばRAM80cの所定領域に記憶させる(ポート入力処理)。尚、センサ信号には、メダル通過センサ67やメダル払出センサ76、第1回胴インデックスセンサ55a、第2回胴インデックスセンサ55b及び第3回胴インデックスセンサ55cの各インデックスセンサ55、及びドアセンサ66等からの検出信号が含まれる。また、ポート入力処理では、カウンタ回路81からの乱数値の取り込みも行われる。
次に、CPU80aはステップS503で回胴回転制御処理を実行する。回胴回転制御処理は、図13のメインループ処理における回胴回転開始設定処理(S409)や回胴停止処理(S410)での設定データに基づいて、起動回転から停止までの回転リール4の駆動を実現するためにステッピングモータ54a、54b、54cに出力すべき励磁データを出力バッファにセットする処理となる。
続くステップS504でCPU80aは、定期更新処理として各種の対象タイマについての更新処理を実行する。特に、本例の場合、当該定期更新処理では、後の図17により説明するクレジット投入検出処理(S605)でセットされるクレジット投入間隔タイマ(S810)、及び図18により説明する再遊技メダル投入処理(S610)でセットされる投入間隔タイマ(S904)などの更新が行われる。
ステップS504の定期更新処理を実行したことに応じ、CPU80aはステップS505でコマンド出力処理を実行する。すなわち、演出制御インターフェース86における送信バッファにセットされている制御コマンドを1バイト毎に演出制御基板42に出力する。
続くステップS506でCPU80aは、表示・モータ出力処理として各種ランプの表示動作を更新すると共に、ステップS503でセットしたステッピングモータ54a、54b、54cごとの励磁データを回胴モータ駆動部85に出力させる。ステッピングモータ54に励磁データが出力されると、各ステッピングモータは励磁データに応じた所定の励磁状態となり、励磁データが更新されていくことで回転リール4の回転や停止が行われる。
さらに、CPU80aは、次のステップS507で異常監視処理を実行し、ステップS508で外部情報信号出力処理を実行する。ステップS507の異常監視処理では、前述したレバー検知センサ68やメダル払出センサ76、ドア開放センサ35の検出信号に基づく異常の有無の判定と判定結果に応じた処理(例えば、エラー通知のための演出制御コマンドのセット処理を含む)を実行する。また、ステップS508の外部情報信号出力処理は、前述した外部集中端子板70を介した情報出力に係る処理であり、具体的には、払出したメダルなどの情報をホールコンピュータに出力する処理を実行する。
続くステップS509でCPU80aは、先のステップS501の処理で退避したレジスタの値を復帰させる。ステップS509のレジスタ復帰処理を実行したことに応じ、CPU80aはタイマ割込み処理を終える。
<9.演出制御側メイン処理及び割込み処理>

続いて、演出制御基板42のCPU42aが実行する各種の処理を説明する。
先ずは、CPU42aが実行する演出制御側メイン処理を図15のフローチャートを参照して説明する。
図15において、スロットマシンの電源が投入されると、CPU42aはステップS601〜S607の一連の処理で表す演出初期設定処理を実行する。そして、当該演出初期設定処理の実行後、CPU42aはステップS608〜S620の処理として示す、第一の周期(本例では16msの周期)による周期的ループ処理(演出制御側のメインループ処理)に移行する。
先ず、演出初期設定処理において、CPU42aは、先ずステップS601で割込み禁止設定を行った上で、ステップS602で自らの設定を初期設定とし、続くステップS603でWDTの値を0クリアし、さらに続くステップS604で音、モータ、入出力、シナリオデータの各種データの初期化処理を行う。当該初期化処理では、LCDユニット7におけるキャラクタ演出や、LEDランプを点滅させるランプ演出や、スピーカを駆動する音演出などの各種の演出を行うためにRAM42cに記憶された値を初期化する処理を実行する。
次に、CPU42aはステップS605でバックアップ復帰処理を実行し、続くステップS606でWDTの値を0クリアした上で、ステップS607で割込み許可設定を行う。これにより、演出初期設定処理が終了する。
ステップS605のバックアップ復帰処理では、チェックサムや電断フラグの確認処理が行われる。すなわち、RAM42cの所定の対象領域におけるデータ内容に基づき生成したチェックサムと、電源遮断時にRAM42cの上記対象領域におけるデータ内容に基づき算出・記憶されたチェックサムとの確認処理や、電源遮断時にチェックサムをRAM82cの所定領域に記憶したか否かを表す電断フラグについての確認処理が行われる。CPU80aは、上記の確認処理の結果に基づき、バックアップ復帰可能か否かを判定し、バックアップ復帰可能であれば、電断前の演出状態に対応した演出シナリオをRAM42aのワーク領域にセットし、バックアップ復帰処理を終える。一方、バックアップ復帰可能でないと判定した場合、CPU42aはRAM42cの値を初期化した上で、RAM42cのワーク領域にデモ状態の演出シナリオをセットしてバックアップ復帰処理を終える。
なお、本例では、バックアップ復帰不能でRAM42cを初期化した場合には、RAM42(ワーク領域)に格納する設定値vdとして「1」を表す値(つまり最低段階を表す値)をセットする。
上記したステップS601〜S607の演出初期設定処理が終了したことに応じ、CPU42aはステップS608〜S620の処理として示す16ms周期のメインループ処理に移行する。
先ず、ステップS608でCPU42aは、割込みカウンタの値が15より大であるか否かを判定する。割込みカウンタは、以下で説明するステップS609で0リセットされると共に、後述する1ms周期のタイマ割込み処理で逐次インクリメント(+1)される値である。
割込みカウンタの値が15より大でなければ、CPU42aはステップS620に進み、演出抽選に係る乱数の更新を行った上で、ステップS608に戻る。
一方、割込みカウンタの値が15より大であれば、CPU42aはステップS609に進んで割込みカウンタの値を0リセットした上で、ステップS610のWDTのクリア処理を実行し、続くステップS611で演出制御基板42に対する各種入力を検知する処理を実行する。
さらに、CPU42aは続くステップS612のエラー処理、さらに続くステップS613のデモ処理としてそれぞれ所定の処理を実行し、ステップS614に進む。
ここで、ステップS612のエラー処理において、CPU42aは、各種エラーが発生した際のエラー報知のためのシナリオ登録処理、エラー報知後のエラーシナリオのクリア処理などを行う。特に、本実施形態の場合、ステップS612でCPU42aは、所定のエラー検知に応じたボリュームMAXエラーフラグの設定処理も行う。ボリュームMAXエラーとは、その発生に応じて出力される音(エラー音)のボリュームをMAXにすべきとされたエラーを意味する。ボリュームMAXエラーが検知された場合、すなわちエラー音をMAXで出力すべきとされた場合は、ボリュームMAXエラーフラグとして例えば0x5Aを設定し、ボリュームMAXエラーが検知されない場合はボリュームMAXエラーフラグとして例えば0x00を設定する。
ステップS614でCPU42aは、コマンド解析処理を実行する。コマンド解析処理では、主制御基板40のCPU80から受信した演出制御コマンドの解析を行うと共に、解析したコマンドの内容に応じた処理を実行する。
なお、当該コマンド解析処理において、コマンドの内容ごとに実行すべき処理の例については図17及び図18を参照して改めて説明する。
CPU42aは、ステップS614のコマンド解析処理を実行したことに応じ、ステップS615でシナリオ更新処理を実行する。シナリオ更新処理では、ステップS614のコマンド解析処理で解析したコマンドの内容に基づき、CPU42aが実行する処理内容(演出内容)を決定する。さらに、シナリオ更新処理では、CPU42aが実行すべき処理内容に基づいて、シナリオ番号(シナリオデータ)の更新を実行する。シナリオ番号は、CPU42aが実行する演出を一意に特定可能な数値とされる。
なお、一つのシナリオ番号から特定される一つの演出を複数繋げて一連の演出を実現する場合には、ステップS615のシナリオ更新処理において、演出ごとに設定された演出継続時間と経過時間を比較し、所定のタイミングで次のシナリオ番号に更新する処理が行われる。
ここで、ステップS615のシナリオ更新処理については後に改めて説明する。
なお、スロットマシンとしては、演出制御基板42のCPU42aがATモードやARTモードに移行するか否かの抽選を行う構成であってもよい。
この場合、ATモードやARTモードに移行するか否かの抽選処理は、例えば、ステップS614のコマンド解析処理とステップS615のシナリオ更新処理との間において実行すればよい。この抽選処理では、主制御基板40側から受信しRAM42cに記憶させた設定値vdに基づいてATモードやARTモードに移行させるか否かの抽選を行うことで、ATモードやARTモードの当選確率が設定値vdに対応した確率となるようにされる。
続いて、CPU42aは、ステップS616の音再生処理を実行する。この音再生処理においてCPU42aは、シナリオデータに基づきワークに音チャネルごとに登録されている音データに従って、フレーズ番号やボリューム等のデータを音源IC42dに出力する。これによってスピーカ25からの効果音、音楽・音声等の再生出力が行われる。
なお、この音再生処理については後に改めて説明する。
ステップS616に続くステップS617でCPU42aは、可動体エラー処理を実行する。ここでは可動体駆動部102が駆動対象とする可動体の原点復帰がなされていないなどの位置エラー判定などを行う。
ステップS617に続くステップS618でCPU42aは、液晶・LED処理を実行する。この液晶・LED処理では、液晶制御基板44に係る処理として、該液晶制御基板44にシナリオ番号に応じた所定の動作を実行させるための制御値をRAM42cのワーク領域にセットする処理を実行する。また、LEDに係る処理として、LED基板48及び第1回胴LED基板50a〜第3回胴LED基板50cにおける各LEDを駆動するための駆動データ(LED駆動データ)の生成処理を行う。本例では、後述する図22のサブシナリオ更新処理により、RAM42cのワーク領域(ワークエリア)には、LED基板48等におけるLEDにシナリオ番号に応じた所定の動作を実行させるための制御値がセットされる(後述する「ランプデータ登録情報」:図23B参照)。CPU42aはステップS618において、このようにワーク領域にセットされた制御値に基づき、LED駆動データを生成する。
なお、生成したLED駆動データをLED基板48、回胴LED中継基板56に出力する処理は、後述する1ms周期の割込み処理において行われる(ステップS705参照)。
ここで、本例では、可動体駆動部102の制御値(モータ制御値)についてのワーク領域へのセット処理や、セットした値の出力処理は、後述する1ms周期の割込み処理において行われる(ステップS705参照)。
ステップS618に続くステップS619でCPU42aは、シナリオ更新カウンタをゼロリセットする。シナリオ更新カウンタは、後述の1msタイマ割込処理(図16)でインクリメントされるカウンタである。
ステップS619でシナリオ更新カウンタをゼロリセットしたことに応じ、CPU42aは先に説明したステップS620の乱数更新処理を実行してステップS608に戻る。
上記で説明したステップS608〜S620の処理により、割込みカウンタの値が15より大となるごと、即ち16msの周期でステップS609〜S619の処理が逐次実行される。
なお、スロットマシンとしては、演出制御基板42のCPU42aがATモードやARTモードに移行するか否かの抽選を行う構成であってもよい。
この場合、ATモードやARTモードに移行するか否かの抽選処理は、例えば、ステップS614のコマンド解析処理とステップS615のシナリオ更新処理との間において実行すればよい。この抽選処理では、主制御基板40側から受信しRAM42cに記憶させた設定値vdに基づいてATモードやARTモードに移行させるか否かの抽選を行うことで、ATモードやARTモードの当選確率が設定値vdに対応した確率となるようにされる。
次に、図16を参照し、1msタイマ割込処理を説明する。CPU42aは、タイムカウントにより1ms毎に発生する割込要求に応じて、図16の1msタイマ割込処理を実行する。
この1msタイマ割込処理において、まずステップS701では主制御CPU100からのテストコマンドに応じたチェックサム算出中であるか否かを判断する。チェックサム算出中でなければ、CPU42aはステップS702の入力処理に進む。
ステップS702の入力処理とは、上述した図15のステップS611の入力検知処理とともに操作子の操作による入力検知を行うための1ms毎の処理である。例えばこの入力処理では、操作子の操作検出信号について、信号波形にエッジが検出されたら入力カウンタをリセットし、その後、エッジが発生しない期間、入力カウンタをカウントアップしていく処理を行う。1msタイマ割込処理において、入力情報(入力信号波形のHまたはL)が検知され、またエッジ有無により、入力カウンタのリセット又はインクリメントが行われる。そしてメインループ処理(16ms処理)におけるステップS611で、入力カウンタの値が16以上となっており、前回とは入力情報が変化している場合に、入力変化を認識するようにしている。
このような入力処理(S702)及び入力検知処理(S611)により、ノイズ・チャタリングによる入力誤認識の防止がはかられる。また、入力カウンタを用いており、本実施の形態では例えば16ビットカウンタを用いて65535ms(約65秒)までなどをカウントできるようにしているため、いわゆる長押しの検出も可能となる。
ステップS703では、CPU42aはモータ動作更新処理を行う。この場合、CPU42aは、シナリオデータに基づいてワーク(図23Cで説明するモータデータ登録情報)にモータチャネルとして登録されているモータデータに基づいて、モータ駆動データを作成する処理を行う。即ち、可動体駆動部102におけるドライバ回路に出力するモータ駆動データである。なお、本実施形態では、LED駆動データの更新は上記ステップS618により16ms毎に行われる一方、モータデータ更新は1ms毎に行われることになる。
ステップS704では、CPU42aは、モータ駆動データを出力する。即ち、可動体駆動部102におけるドライバ回路に対しモータ駆動データを出力する。
ステップS705では、CPU42aは、割込みカウンタの値に応じて各処理を実行する。割込みカウンタは上述の16ms処理のステップS609でゼロリセットされ、1msタイマ割込処理のステップS707でインクリメントされる。従って、1msタイマ割込処理でステップS705が実行される際には、割込みカウンタの値は0〜15のいずれかとなっている。
この割込みカウンタの値0〜15に応じて、ケース0〜ケース15としてステップS705の処理が規定される。例えば本実施形態では、ケース0ではWDT(watchdog timer)クリア信号ON、及びLEDドライバの初期化処理を行う。ケース1〜3ではLEDドライバの初期化処理を行う。ケース8ではWDTクリア信号OFFを行う。ケース12〜15では、LEDドライバに対するLED駆動データの出力を行う。
ここで、LEDドライバの初期化とは、LED基板48や第1〜第3回胴LED基板50a〜50cにおけるLEDのドライバ回路において使用しないレジスタにデフォルト値を出力する処理である。この初期化と、LED駆動データの出力は、1回の1msタイマ割込処理の際に、ドライバ回路の2,3個に対して行われる。
ステップS706では、CPU42aは、液晶制御基板52に対する制御コマンドの出力を行う。例えば1回の1msタイマ割込処理において、1コマンド(2バイト)の送信を行う。つまりモード及びイベントとしての2バイトの制御コマンドが送信される。
その後、CPU42aはステップS707で割込みカウンタのインクリメントを行い、またステップS708でシナリオ更新カウンタのインクリメントを行う。そしてシナリオ更新カウンタの値が100未満であれば、1msタイマ割込処理を終える。
なお、シナリオ更新カウンタは上述のように16ms処理のステップS619でゼロリセットされるため、通常はシナリオ更新カウンタの値が100以上となることはない。100以上となるのは、演算異常、処理応答異常などにより16ms処理が実行されない場合や、16ms処理内の或る処理の進行が停止しているような場合である。このような場合は、無限ループに入り、WDTによってタイムアップ処理が行われるのを待つことになる。
1msタイマ割込処理に入った際に、ステップS701でチェックサム算出中と判断された場合は、CPU42aは処理をステップS710に進めて、WDTをクリアする。そしてステップS711で液晶制御基板44に対する制御コマンドの送信出力を行う。そしてステップS712で割込みカウンタをインクリメントして1msタイマ割込処理を終える。
<10.演出制御に係る処理>
[10-1.コマンド解析処理]

続いて、16ms処理(図15)におけるステップS614で行われるコマンド解析処理について、図17、図18で説明する。CPU42aは、ステップS614のコマンド解析処理として、主制御基板40から供給される演出制御コマンドがコマンド受信バッファに格納されているか否かを監視し、演出制御コマンドが格納されていればこのコマンドを読み出す。この具体的な処理として、図17のステップS801〜S808の処理を行う。
演出制御基板42には、主制御基板40から送信されてきた演出制御コマンドを取り込むコマンド受信バッファが、例えばRAM42cに用意される。CPU42aは、まず図17のステップS801で、コマンド受信バッファの読み出しアドレスを示すリードポインタと、書き込みアドレスを示すライトポインタの確認を行う。
ライトポインタは、コマンド受信に応じて更新され、それに応じてライトポインタで示されるアドレスに、受信した演出制御コマンドが格納されていく。リードポインタは、コマンド受信バッファからの読み出しを行った際に更新(ステップS802)される。従って、もしリードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されているということになる。そこでリードポインタ=ライトポインタでなければステップS802に進み、CPU42aはコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。この場合、次の読み出し(ロード)のためにリードポインタをインクリメントしておく。
上述したように1つの演出制御コマンドは、モードとしての1バイトとイベントとしての1バイトの2バイトで形成されている。CPU42aはステップS803で、ロードした1バイトのコマンドデータが、モードであるかイベントであるかを確認する。この確認は、8ビット(Bit0〜Bit7)のうちのBit7の値により行われる。
そしてモードであれば、コマンドの上位データ受信の処理として、ステップS804に進み、読み出したコマンドデータを、レジスタ「コマンドHIバイト」にセーブする。また「コマンドLOバイト」のレジスタをクリアする。そしてステップS801に戻る。
続いても、リードポインタ=ライトポインタでなければ、まだ読み出していない演出制御コマンドがコマンド受信バッファに格納されていることになるため、ステップS802に進み、CPU42aはコマンド受信バッファにおいてリードポインタで示されるアドレスから1バイトのコマンドデータをロードする。またリードポインタをインクリメントする。
そして読み出したコマンドがイベントであれば、コマンドの下位データ受信の処理として、ステップS803からS805に進み、読み出したコマンドデータを、レジスタ「コマンドLOバイト」にセーブする。
モード及びイベントのコマンドデータが、レジスタ「コマンドHIバイト」「コマンドLOバイト」にセーブされることで、CPU42aは1つのコマンドを取り込んだことになる。
そこでCPU42aはステップS806で、取り込んだコマンドに応じた処理を行う。具体例は図18で後述する。
リードポインタ=ライトポインタとなるのは、CPU42aがまだ取り込んでいない演出制御コマンドがコマンド受信バッファには存在しない場合である。そこで、ステップS801でリードポインタ=ライトポインタであった場合には、新たな取り込みは不要であるため、CPU42aは図示のようにコマンド解析処理(S614)を終える。
上記のステップS806におけるコマンド対応処理の例を図18で説明する。
図18Aは、コマンド対応処理としての基本処理を示している。2バイトの演出制御コマンドの受信に応じて、CPU42aはまず図18AのステップS821で、現在テストモード中であるか否かを確認する。テストモード中であれば、ステップS822ですべての演出シナリオのクリア、音出力の停止、LED基板48等におけるLEDの消灯を行う。そしてステップS823でテストモードを終了する。
テストモード中でなければ、これらの処理は行わない。
そしてCPU42aは、ステップS830として、取り込んだ演出制御コマンドについての処理を行うことになる。
演出制御コマンドとしては、例えば前述した遊技開始コマンドや期待感演出コマンド、
各種のエラーを通知するためのコマンド・・・など多様に設定されている。ステップS830では、CPU42aは、受信したコマンドに対応して、プログラムで規定された処理を行う。ここでは図18B、図18Cで、2つの演出制御コマンドを挙げて、具体的処理を例示する。
図18Bは、ステップS830でのコマンド処理として、電源投入コマンドを取り込んだ場合の処理S830aを示している。
この場合、CPU42aは、ステップS837でRAM42cのクリア処理を行う。例えばコマンド受信/送信バッファの内容や、チェックサムの記憶領域のクリアを行う。
そしてステップS838でエラー解除コマンドの送信、ステップS839で可動体エラー情報のクリア、ステップS840で可動体動作の停止、ステップS841で電源投入のシナリオ登録、ステップS842で液晶制御基板44へ送信する電源投入コマンドのセットを順次行う。
図18Cは、ステップS830でのコマンド処理として、RAMクリアコマンドを取り込んだ場合の処理S830bを示している。
この場合、CPU42aは、ステップS843でRAM42cのクリア処理を行う。例えばコマンド受信/送信バッファの内容やチェックサムの記憶領域のクリアを行う。
そしてステップS844でエラー解除コマンドの送信、ステップS845でRAMクリアエラーセットと、エラー報知タイマのセットを行う。さらにステップS846でRAM42cにおける抽選処理に関する情報のクリア、ステップS847で、シナリオに関する情報のクリアを行う。そしてステップS848で液晶制御基板44へ送信する電源初期投入表示(RAMクリア)コマンドのセットを行う。
[10-2.シナリオ登録・削除処理]

次にシナリオ登録・削除処理について説明する。シナリオとは演出制御やエラー処理その他、各種の実行すべき動作を規定したデータである。実行すべきシナリオのデータは、シナリオ登録情報としてRAM42cのワーク領域に登録される。図23Aに示すシナリオ登録情報の構造については後述するが、シナリオ登録情報としては、0〜63までの64個のシナリオチャネルが用意されている。この64個のシナリオチャネルに登録されたシナリオは同時に実行可能とされる。以下、シナリオチャネルを「sCH」で示す。
シナリオ登録処理とは、シナリオ登録情報における任意のシナリオチャネルsCHに、登録を要求されたシナリオ番号のシナリオを登録する処理である。原則的には、sCH0〜sCH63のシナリオチャネルは、どのチャネルが用いられても良い。
以下説明するシナリオ登録は、例えばステップS612のエラー処理、ステップS613のデモ処理、ステップS614のコマンド解析処理などの処理過程において、必要時に呼び出され、実行される。例えば先に述べた図18BのステップS841などが、シナリオ登録が実行される場合の一例となる。
図19の処理として、CPU42aは、コマンド或いはプログラム上で指定されるシナリオに対応したシナリオ番号と待機時間(delay)の値を、ワーク(シナリオ登録情報)に登録する処理を行う。
ステップS901でCPU42aは、まず今回登録すべきシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、何もせずに処理を終える。
シナリオ番号が適正であれば、CPU42aはステップS902で変数Bをゼロに設定する。変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、空きチャネルを順次探索するために使用する変数である。さらに変数Bは、まだ探索(空きチャネルであるか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
CPU42aは、ステップS903で、「追加ポインタ」+Bのシナリオチャネルが空きであるか否かを確認する。追加ポインタとは、シナリオ登録を行った際に、後述のステップS907で設定されるポインタである。図19の処理を開始する時点では、追加ポインタの値は、前回登録したシナリオチャネルの次のシナリオチャネルを示す値となっている。なお、追加ポインタの初期値(初期状態から図19の処理が初めて行われる時の値)は0である。
「追加ポインタ」+Bのシナリオチャネルが空きでなければ、CPU42aはステップS904で変数Bをインクリメントする。
ステップS905でB<64でなければ、この図19の処理を終える。これは全シナリオチャネルについて探索を行ったが、空きチャネルがなくてシナリオ登録が不可能となる場合である。
まだ全シナリオチャネルの探索(空きチャネルであるか否かの確認)を行っていない時点では、ステップS905でB<64である。その場合はステップS906の確認処理を行い、「追加ポインタ」+Bの値がシナリオチャネルsCHの最大値を超えた値「64」以上となっていなければステップS903に戻る。
また「追加ポインタ」+Bの値が「64」以上となっていた場合は、ステップS907で追加ポインタの値の補正処理を行う。具体的には「追加ポインタ」+Bの値が「64」となった場合、追加ポインタの値を「64」減算する処理を行う。そしてステップS903に戻る。
このステップS903〜S907の処理によれば、前回登録したシナリオチャネルの次のシナリオチャネルから、順次シナリオチャネルが空きか否かが確認されることになる。
つまり、ステップS904での変数Bのインクリメントにより、ステップS903が行われるたびに確認されるシナリオチャネルsCHが、順次1つずつ進行することとなる。
また、変数BはステップS902でゼロリセットされてからステップS904でインクリメントされるものであるため、ステップS905でB<64とはならない場合(つまり変数Bが64に達した場合)は、既にステップS903の処理が64回行われた場合である。これは全シナリオチャネルsCH0〜sCH63を調べたが、空きがなかったと判断された場合である。そのため登録不可能として図19の処理を終えることとなる。
また、「追加ポインタ」の値は、前回登録したシナリオチャネルの次のシナリオチャネルを示す値であるため、まだ全シナリオチャネルの空き確認を行っていないB<64の時点でも、「追加ポインタ」+Bの値(つまり次に確認しようとするシナリオチャネルsCHの番号)が「64」以上となることがある。具体的には、直前のステップS903の時点で「追加ポインタ」+Bの値が63であり、シナリオチャネルsCH63について確認した後、ステップS904で変数Bがインクリメントされた場合である。このままでは、次に存在しないシナリオチャネルsCH64を指定することとなる。
そこでステップS906でこの点を確認し、「追加ポインタ」+Bの値が「64」となっていたら、ステップS907では、次に確認するシナリオチャネルを「sCH0」に戻すために、追加ポインタの補正を行う。つまり追加ポインタの値を−64することで、「追加ポインタ」+Bの値が「0」となるようにする。これにより次のステップS903では、シナリオチャネルsCH0が空きであるか否か確認されるようにする。
ある時点のステップS903の処理で、空きのシナリオチャネルが発見されたら、CPU42aはステップS908に進み、その空きのシナリオチャネルに、シナリオ番号、及び待機時間(delay)をセットする。またその他のシナリオ管理に必要なデータをゼロクリアする。
そしてステップS909で、追加ポインタを、登録を行ったシナリオチャネル+1の値に更新する。つまり今回登録を行ったシナリオチャネルの次のシナリオチャネルの値を、追加ポインタとして記憶しておき、次回の登録処理に使用できるようにする。なお、本実施の形態ではシナリオチャネルはsCH0〜sCH63の64チャネルのため追加ポインタの最大値は63となる。
この図19の処理によれば、シナリオ登録の際に、前回登録を行ったシナリオチャネルの次のシナリオチャネルから、空きチャネルが探索される。追加ポインタの初期値は「0」であり、その後、登録に応じてステップS907で更新されていくが、この処理によれば、多くの場合、シナリオチャネルsCH0から順に使用されてシナリオ登録が行われる。そして、シナリオ登録の際には、前回の登録チャネルの次のシナリオチャネルから空きの確認が行われる。従って、殆どの場合、素早く空きチャネルが発見でき、シナリオ登録処理を効率的に実行することができる。これによりCPU42aの処理負担は軽減される。
なお、処理の変形例として、ステップS907で更新する追加ポインタの値は、登録を行ったシナリオチャネルの番号としておき、ステップS902では変数Bに1を代入してもよい。但しその場合、ステップS905ではB≦65であるか否かの判断を行うようにする。
次にシナリオ削除処理について説明する。これはワークの或るシナリオチャネルに登録されているシナリオを削除する処理である。
図20Aは、或るシナリオをシナリオ登録情報から削除する場合のCPU42aの処理を示している。
CPU42aは、コマンド或いはプログラムグラム上で指定される、削除するシナリオ番号(後述のメインシナリオ番号(mcNo))の値に基づいて、図20Aの処理を開始する。まずステップS921でCPU42aは、削除要求にかかるシナリオ番号が正常であるか否かを確認する。シナリオ番号があり得ない番号の場合は、削除せずに処理を終える。
シナリオ番号が適正であれば、CPU42aはステップS922で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象のシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
CPU42aは、ステップS923で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号のものであるか否かを確認する。シナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号でなければ、ステップS924で変数Bをインクリメントし、ステップS925でB<64であることを確認して、ステップS923の処理を行う。
このステップS923,S924の処理によれば、シナリオチャネルsCH0からシナリオチャネルsCH63に向かって順に、削除対象のシナリオを探索していくこととなる。
ステップS923でシナリオチャネルsCH(B)に登録されているシナリオが削除対象のシナリオ番号であった場合は、ステップS926に進み、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオを削除する処理を行う。
以上により、要求された或るシナリオ番号のシナリオをワーク(シナリオ登録情報)から削除する処理が行われる。
なお、ステップS925でB<64ではないと判断される場合、つまり変数Bが64に達した場合は、シナリオチャネルsCH0〜sCH63の全てを探索したが、削除対象のシナリオが登録されていなかったということになるため、処理を終える。
図20Bは、或る範囲のシナリオを削除する処理を示している。削除シナリオが範囲で指定された場合に、この処理が行われる。
CPU42aは、コマンド或いはプログラム上で、或るシナリオ番号の範囲で削除指定された場合、まずステップS931で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、削除対象範囲に該当するシナリオが登録されたチャネルを探索するために使用する変数となる。さらに変数Bは、まだ探索(削除対象範囲に該当するシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
CPU42aは、ステップS932で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが、削除対象とされた範囲内のシナリオ番号であるか否かを確認する。そしてシナリオチャネルsCH(B)に登録されているシナリオが削除対象の範囲内のシナリオ番号であれば、ステップS933でシナリオチャネルsCH(B)に登録されているシナリオを削除する。そしてステップS934に進む。
シナリオチャネルsCH(B)に登録されているシナリオが、削除対象とされた範囲内のシナリオ番号ではなければ、ステップS933を行わずにステップS934に進む。
CPU42aはステップS934では、変数Bをインクリメントし、ステップS935でB<64であることを確認して、ステップS932に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ範囲削除処理を終える。
以上により、シナリオ番号範囲の1又は複数のシナリオについて、ワーク(シナリオ登録情報)からの削除が行われる。
図20Cは登録されているシナリオを全て削除する処理を示している。例えばシステム上の都合により、やむを得ずシナリオを削除する際に呼び出される処理である。なお、保護対象とされたシナリオは削除しないようにする。
CPU42aは、シナリオ全削除が要求された場合、まずステップS941で変数Bをゼロに設定する。この場合の変数Bは、sCH0〜sCH63のシナリオチャネルのうちで、保護対象のシナリオを登録したシナリオチャネルを確認するために使用する変数となる。さらに変数Bは、まだ確認(保護対象のシナリオが登録されているか否かの確認)をしていないシナリオチャネルが残っているか否かを判断するための変数を兼ねている。
CPU42aは、ステップS942で、B領域、つまりシナリオチャネルsCH(B)に登録されているシナリオが、保護対象のシナリオであるか否かを確認する。そして保護対象のシナリオであれば、削除せず、一方、保護対象のシナリオでなければ、ステップS943で、そのシナリオチャネルsCH(B)に登録されているシナリオを削除する。
そしてステップS944で変数Bをインクリメントし、ステップS945でB<64であればステップS942に戻る。変数Bが64に達していたら、全シナリオチャネルsCH0〜sCH63について処理を完了したことになるため、このシナリオ全削除処理を終える。
以上により、ワークにシナリオ登録情報として登録されているシナリオについて、保護対象のシナリオを除く全シナリオの削除が行われる。
[10-3.シナリオ更新処理]

続いて、16ms処理(図15)のステップS615で行われるシナリオ更新処理について説明する。シナリオ更新処理では図21、図22で説明するようにメインシナリオとサブシナリオの更新が行われる。
まずシナリオ登録情報の構造を図23、図24で説明する。図23Aは、メインシナリオ及びサブシナリオとしてのシナリオ登録情報の構造を示している。このシナリオ登録情報はRAM42cのワークエリアを用いて設定される。
先に述べたように本実施形態では、シナリオ登録情報は、シナリオチャネルsCH0〜sCH63の64個のチャネルを有するものとされる。各シナリオチャネルsCHに登録されたシナリオについては同時に実行可能とされる。
図示のように各シナリオチャネルsCHに登録できる情報としては、サブシナリオ更新処理で用いるサブシナリオタイマ(scTm)、音/モータサブシナリオテーブルの実行ラインを示すサブシナリオ実行ライン(scIx)、ランプサブシナリオテーブルの実行ラインを示すサブシナリオ実行ラインlmp(lmpIx)、シナリオ更新処理に用いるメインシナリオタイマ(msTm)、メインシナリオテーブルの実行ラインを示すメインシナリオ実行ライン(mcIx)、メインシナリオ番号(mcNo)、メインシナリオに付加可能なオプションデータであるメインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)、チェックサム(checkSum)がある。
スピーカ30(30a〜30d)による音出力、LED基板48等におけるLEDによる発光、及び可動体駆動部102による可動体の駆動による演出を開始するときには、待機時間(delay)とメインシナリオ番号(scNo)をシナリオチャネルsCH0〜sCH63のうちの空いているシナリオチャネルに登録する。
待機時間(delay)は、シナリオチャネルsCHに登録してからそのシナリオが開始されるまでの時間を示す。なおこの待機時間(delay)は16ms処理毎に1減算される。待機時間(delay)が0の場合に、登録されたデータに対応した処理が実行されることとなる。
図25には、メインシナリオテーブルの一部として、シナリオ番号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の場合、シナリオ登録情報(ワーク)から、このシナリオが削除される(後述する図21のステップS1017参照)。
次に図23Bでランプデータ登録情報の構造を説明する。ランプデータ登録情報としては、ランプサブシナリオテーブルから選択されたシナリオ、即ちLED基板48や第1〜第3回胴LED50a〜50cにおけるLEDによる演出動作(点灯パターン)を示す情報が登録される。このランプデータ登録情報もRAM42cのワークエリアを用いて設定される。
本実施形態では、ランプデータ登録情報は、ランプチャネルdwCH0〜dwCH15の16個のチャネルを有するものとされる。各ランプチャネルdwCH0〜dwCH15には優先順位が設定されており、ランプチャネルdwCH0からdwCH15に向かって順にプライオリティが高くなる。従ってランプチャネルdwCH15に登録されたシナリオ(ランプサブシナリオ)が最も優先的に実行される。また例えばランプチャネルdwCH3、dwCH10にシナリオが登録されていれば、ランプチャネルdwCH10に登録されたシナリオが優先実行される。
なお、ランプチャネルdwCH0は主にBGM(Back Ground Music)に付随するランプ演出、ランプチャネルdwCH15はエラー関係のランプ演出に用いられ、ランプチャネルdwCH1〜dwCH14が通常演出に用いられる。
各ランプチャネルdwCHに登録できる情報としては、図示のように、登録した点灯パターンの番号を示す登録点灯ナンバ(lmpNew)、実行する点灯パターンの番号を示す実行点灯ナンバ(lmpNo)、ランプサブシナリオの実行ラインを示すオフセット(offset)、実行時間(time)、チェックサム(checkSum)がある。
図26Aにランプサブシナリオテーブルの一部として、ランプサブシナリオ番号1,2,3の例を示している。各番号のランプサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値が記述されるとともに、ランプチャネルと、各種の点灯パターンを示すランプナンバが記述される。また最終行には、ランプシナリオデータ終了コードD_LSENDが記述される。
このランプサブシナリオテーブルにおいて、各ラインの時間データ(time)は、そのサブシナリオが開始されてからの、当該ラインが開始される時間を示している。
16ms毎にメインシナリオタイマ(msTm)と、テーブルの時間データを比較して、一致した場合に、そのラインのランプナンバが、図23Bのランプデータ登録情報に登録される。登録されるランプチャネルdwCHは、当該ラインに示されたチャネルとなる。
例えば、上述の或るシナリオチャネルsCHにおいて、図25に示したシナリオ番号2が登録され、サブシナリオ番号2が参照されるとする。図26Aに示したランプサブシナリオ番号2では、1ライン目に時間データ(time)=0としてランプチャネル5(dwCH5)及びランプナンバ5が記述されている。この場合、メインシナリオタイマ(msTm)=0の時点で、まず当該1ライン目の情報が図23Bのランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=5として登録される。シナリオ登録情報(図23A)のサブシナリオ実行ラインlmp(lmpIx)の値は、次のラインの値(2ライン目)に更新される。これはランプチャネルdwCH5という比較的低い優先度で、点灯ナンバ5の点灯パターン動作の実行を行うための登録となる。
2ライン目については、500×16msとなった時点で同様の処理が行われる。即ちランプデータ登録情報のランプチャネルdwCH5に、登録点灯ナンバ(lmpNew)=6(つまり点灯ナンバ6の点灯パターンの指示)が登録される。
なお、時間データ(time)が連続する2ラインで同一の値であったら、その各ラインについての処理は同時に開始されることとなる。
前述した液晶・LED処理(S618)では、このように更新されるランプデータ登録情報に基づいて、LED駆動データが作成される。
次に図23Cでモータデータ登録情報の構造を説明する。モータデータ登録情報としては、音/モータサブシナリオテーブル(図26Bで後述)から選択されたシナリオを示す情報が登録される。このモータデータ登録情報もRAM42cのワークエリアを用いて設定される。なお、ここでのモータとは、可動体駆動部102が有する可動体駆動のためのアクチュエータの一例である。
本実施形態では、モータデータ登録情報は、モータチャネルmCH0〜mCH7の8個のチャネルを有するものとされる。
各モータチャネルmCHに登録できる情報としては、図示のように、実行動作ナンバ(no)、登録動作ナンバ(noNew)、動作カウント(lcnt)、励磁カウンタ(tcnt)、実行ステップ(step)、動作ライン(offset)、親(移行元)/子(移行先)の属性(attribute)、親ナンバ(retNo)、戻りアドレス(retAddr)、ループ開始ポイント(roopAddr)、ループ回数(roopCnt)、エラーカウンタ(errCnt)、現在の入力情報(currentSw)、ソフト上のスイッチ情報(softSw)、ソフト上のカウント(softCnt)がある。
また図24は、音データ登録情報を示している。音データ登録情報としては、音/モータサブシナリオテーブル(図26Bで後述)から選択されたシナリオを示す情報が登録される。この音データ登録情報もRAM42cのワークエリアを用いて設定される。
本実施形態では、音データ登録情報は、音チャネルaCH0〜aCH15の16個のチャネルを有するものとされる。この音チャネルaCH0〜aCH15のそれぞれは、音源IC42dの入力チャネル(同じく16個)のそれぞれに対応するものである。
各音チャネルaCHに登録できる情報としては、図示のように、1次ボリューム遷移量(frzVq)、1次ボリューム(frzVl)、遷移量変化(rsv2)、ボリューム変化(rsv1)、フレーズ変化(rsv0)、ステレオ(frzSt)、ループ(frzLp)、フレーズ番号hi(frzHi)、フレーズ番号low(frzLo)、及び2次ボリューム(scdVl)がある。
ここで、1次ボリューム(第1ボリューム)とは、或るフレーズの再生開始を指示するシナリオデータ(後述するBGM、SE1、SE2、エラー)において、再生すべきフレーズのフレーズ番号の情報と共に記述されるボリューム情報である。
また、2次ボリューム(第2ボリューム)とは、1次ボリュームとの掛け合わせで最終的な再生ボリュームを定めるボリューム情報となる。
1次ボリュームと2次ボリュームとの違いは、以下の通りである。
1次ボリュームは、上記のようにフレーズの再生開始を指示するシナリオデータにも記述されるのに対し、2次ボリュームは後述する音コントロール(音制御情報)のシナリオデータに記述される。
また、本実施形態の場合、1次ボリュームによっては、1次ボリューム遷移量(frzVq)の情報と組み合わされることで、再生中のフレーズに対するボリューム制御が可能とされ、該1次ボリュームの制御によってフレーズのフェードイン再生/フェードアウト再生が可能とされる。後述もするように、これらフェードイン再生/フェードアウト再生の指示は、音コントロールとしてのシナリオデータに基づき実行される。
2次ボリュームは、通常はスロットマシンの裏側に設けられたボリュームスイッチの状態に応じた値に設定され、後述するようにエラー時や所望のフレーズを消音させたいとき等にMAX値とは異なる値が設定される。
2次ボリュームの変化指示は、音コントロールとしてのシナリオデータによっても可能とされる(この点についても後述する)。
1次ボリューム遷移量frzVqは、1次ボリュームを変化させる時間(速さ)を表す情報となる。
遷移量変化rsv2は、1次ボリューム遷移量frzVqを変化させるか否かを表す情報であり、ボリューム変化rsv1は、フレーズ再生時に1次ボリュームを変化させるか否かを表す情報となる。また、フレーズ変化rsv0はフレーズ番号を書き替えるか否かを表す情報であり、ステレオfrzStはステレオ再生/モノラル再生の何れであるか、ループfrzLpは無限ループ再生かループ再生しないかの何れかをそれぞれ表す情報となる。
図示するように、1次ボリューム遷移量、1次ボリューム、2次ボリュームのデータサイズはそれぞれ1バイト(8ビット)である。また、遷移量変化、ボリューム変化、フレーズ変化、ステレオ、ループの各情報は1ビットされる。さらに、フレーズ番号hiは3ビット、フレーズ番号lowは1バイトとされる。即ち、フレーズ番号の情報は11ビットで構成され、従って最大で2048個のフレーズの指定が可能とされる。
ここで、本例において、ステレオ再生の場合は、隣接関係にある2つの音チャネルaCHを用いる。具体的には、偶数チャネルである音チャネルaCHnとその次の奇数チャネルである音チャネルaCHn+1とを使用する。
ステレオ再生を指示するシナリオデータには、ステレオ再生すべきフレーズを指定するためのフレーズ番号(指定情報としてはLchとRchとで共通の1つのフレーズ番号が用いられる)の情報と、ステレオ再生を指定するための情報とが記述され、該シナリオデータに基づき、音データ登録情報における偶数の音チャネルaCHnと奇数の音チャネルaCHn+1とにこれらフレーズ番号とステレオ再生の指示情報とが登録される(上述のフレーズ番号hi,lowとステレオfrzSt)。
図26Bは、音/モータサブシナリオテーブルの一部として、音/モータサブシナリオ番号1,2の例を示している。
各番号の音/モータサブシナリオとしては、シナリオの各ライン(行)に時間データ(time)の値(ms)が記述されるとともに、BGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションの情報が記述可能とされる。また最終行には、シナリオデータ終了コードD_SEENDが記述される。
この音/モータサブシナリオテーブルに関しては、サブシナリオタイマ(scTm)の値が当該音/モータサブシナリオテーブル中の或るラインに記述された時間データ(time)の値になったら(なお最初は0である)、そのラインに記述されたBGM、SE1、SE2、エラー音、音コントロール、モータ、ソレノイド/ユーザオプションに応じた情報を音データ登録情報やモータデータ登録情報に登録することになる。
なお、各ラインの時間データ(time)は、当該ラインが終了するタイミングを示している。
ここで、音/モータサブシナリオテーブルにおけるSE(SE1及びSE2)とは、BGMとエラー音以外の演出に係る音を意味する。いわゆる予告演出時の音(予告音)は、このSEに分類される。
SE1とSE2の区別は、その音を出力する演出の出現頻度による別としている。例えば予告音であれば、その音を使用する予告演出の出現頻度(信頼度)による区別となる。本例の場合、SE2はSE1よりも出現頻度が低い演出に係る音とされる。
音/モータサブシナリオテーブルにおけるBGM、SE1、SE2、エラー音の各情報は、それぞれフレーズ番号と1次ボリュームの情報とを含む。
これら音/モータサブシナリオテーブルに記述されたBGM、SE1、SE2、エラー音の情報は、音データ登録情報における何れかの音チャネルaCHに登録されることになるが、本実施形態では、これらBGM、SE1、SE2、エラー音の音の種別ごとに、その情報内容を登録する音チャネルaCHを予め定めておくものとしている。
具体的に、音/モータサブシナリオテーブルに記述されたBGMの情報については、音チャネルaCH0(ステレオの場合は加えてaCH1)に登録する。また、SE1の情報については音チャネルaCH2〜aCH9のうちの空きチャネルに登録し、SE2の情報については音チャネルaCH10〜aCH14うちの空きチャネルに登録する。さらに、エラー音の情報については音チャネルaCH15に登録する。
このように本実施形態では、音の種別と、その音についての音関連の情報を登録する音チャネルaCHとの対応関係が予め定められている。
また、音/モータサブシナリオテーブルにおける音コントロールの情報は、再生中のフレーズをコントロールするための情報を記述したものである。
本実施形態の場合、当該音コントロールの情報は4バイトで構成され、下位3バイトがコントロール対象のフレーズを指定するための情報、上位1バイトがコントロール情報(音のコントロール内容を表す情報)とされている。
ここで、本実施形態では、音の種別と、その音についての情報を登録する音チャネルaCHとの対応を上述のように定めているが、このことは、BGMとしてのフレーズは音チャネルaCH0(ステレオの場合はaCH0及びaCH1)で再生され、SE1としてのフレーズは音チャネルaCH2〜aCH9の何れかで再生され、SE2としてのフレーズは音チャネルaCH10〜aCH14の何れかで再生され、エラー音としてのフレーズは音チャネルaCH15で再生されるということが一意に定まっていると換言できる。
このため、音コントロールの情報に基づき所定の種別の音(BGM/SE1/SE2/エラー音)をコントロールするとしたときは、音コントロールの情報を、その音に対応する音チャネルaCHに対して登録すればよい。
この点に鑑み本実施形態の音コントロールの情報では、その下位3バイトの情報、即ちコントロール対象のフレーズを指定するための情報として、音チャネルaCHを指定する情報を記述する。つまり、コントロール対象とする音(フレーズ)が再生される音チャネルaCH(つまりBGM/SE1/SE2/エラー音の別に応じたaCH0(及びaCH1)/aCH2〜aCH9/aCH10〜aCH14/aCH15の別)を指定する情報が記述される。
なお、音/モータサブシナリオテーブルに記述されるBGM、SE1、SE2、エラー音、音コントロールの各情報を音データ登録情報としてワークに登録するための具体的な処理については図27〜図31により後述する。
ここで、上記のように本実施形態では、音の種別と、その音についての情報を登録する音チャネルaCHとの対応関係を予め定めておくようにしたことで、或る種別の音が再生される音チャネルaCHが一意に定まるようにできる。これにより、再生中の或る種別の音を制御するとしたときは、ワークにおけるその種別の音と対応づけられた音チャネルaCHに対して制御情報を登録すれば済み、制御対象とする音を再生中の音チャネルaCHを探索する必要がないものとできる。
従って探索処理が省略される分、演出動作に係る制御負荷を軽減できる。
また、上記のように本実施形態では、再生中の音をコントロールするための音コントロールの情報を、コントロールの内容を表す情報と、制御対象とする音に対応する音チャネルaCHを表す情報とを組み合わせた情報としている。
このように音コントロール情報を、制御内容情報の登録先の音チャネルaCHの指定が可能な情報としたことでも、制御対象の音を再生中の音チャネルaCHを探索せずに済むものとできる。即ち、音コントロール情報をこのような構成とした点も、探索処理の省略、つまりは演出動作に係る制御負荷の軽減に寄与するものである。
説明を図26Bに戻す。
音/モータサブシナリオテーブルにおいて、モータのデータは、モータ1個につき1バイトでモータの動作パターン番号を示すように構成されている。
モータ番号に対応するモータチャネルに対して、この動作パターン番号がセットされる。
図15のステップS616として説明した音再生処理では、図21,図22のシナリオ更新処理で更新される音データ登録情報に基づいて、再生出力が行われることになる。
また、図16のステップS703のモータ動作更新処理では、図21,図22のシナリオ更新処理で更新されるモータデータ登録情報に基づいて、モータ駆動データが作成される。
これまでで説明した各情報を用いて実行されるシナリオ更新処理について、図21、図22を参照して説明する。
図15の16ms処理のステップS615として実行される図21のシナリオ更新処理では、CPU42aはループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて、ステップS1000〜S1016の処理を行う。当該ループ処理の各回の処理対象のシナリオチャネルを「sCHn」として説明する。
CPU42aは、ステップS1000でシナリオチャネルsCHnのメインシナリオ番号が0であるか否かを確認する。メインシナリオ番号が0である場合、当該シナリオチャネルsCHnは先の図19のシナリオ登録処理でメインシナリオの登録が為されていないチャネルsCHとなるので、該シナリオチャネルsCHnの情報更新は不要である。従ってこの場合は、ステップS1015以下の処理を実行して処理を終える。具体的に、ステップS1015でシナリオチャネルsCHn関連のデータのチェックサムを算出し、保存した上で、ステップS1016でシナリオチャネルsCHn関連のデータをバックアップ保存する。これでシナリオチャネルsCHnについての1回の処理を終える。
一方、ステップS1000でメインシナリオ番号が0でないとされた場合は、ステップS1001に進み、シナリオチャネルsCHnの待機時間(delay)を確認する。待機時間(delay)=0でなければステップS1002で待機時間(delay)の値を−1(デクリメント)する。そして、ステップS1015及びS1016の処理を実行して、シナリオチャネルsCHnについての1回の処理を終える。
ステップS1001で待機時間(delay)=0であることが確認された場合は、CPU42aはステップS1003に進み、シナリオチャネルsCHnに登録されているメインシナリオ番号(mcNo)と、メインシナリオ実行ライン(mcIx)に対応するメインシナリオテーブルのアドレスを特定する。
ステップS1004では、当該特定したアドレスで示される、メインシナリオテーブルの或るメインシナリオ番号の実行ラインが、終了コードD_SEEND(図25参照)が記述されている最終ラインであるか否かを確認する。
終了コードが記述された最終ラインで合った場合は、当該シナリオチャネルsCHnに登録されたシナリオで実行すべき処理は終了したことになるため、ステップS1017で、そのシナリオチャネルsCHnに登録されているシナリオをシナリオ登録情報(ワーク)から削除する。
なお、この場合のシナリオ登録の削除は、シナリオ終了に応じた通常の削除である。先に図20で説明したシナリオ削除は、この通常削除以外の、例えば未終了のシナリオをシナリオ登録情報(ワーク)から削除する処理であることを付言しておく。
ステップS1017でシナリオ削除を行った後は、ステップS1015に進む。
ステップS1004で、メインシナリオテーブルの当該ラインが終了コードではない場合は、CPU42aはステップS1005に進み、まず当該シナリオチャネルsCHnのメインシナリオオプション(mcOpt)に、当該ラインのオプション(OPT)をセットする。次にステップS1007で、ユーザオプション(userFn)に0を代入する。
そしてステップS1008で当該シナリオチャネルsCHnで指定されるサブシナリオの更新を行う。サブシナリオの更新については図22で後述する。
ステップS1009では、CPU42aはメインシナリオタイマ(msTm)を+1(インクリメント)する。そしてステップS1010では、メインシナリオタイマ(msTm)の値と、メインシナリオテーブルの該当ラインの時間データ(図25参照:msTmで記述)を比較する。先に述べたように、メインシナリオテーブルの各ラインの時間データは、そのラインの終了タイミングを規定するものであるから、メインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上であれば、そのラインの処理は終了し、次のラインを対象とする。従って、ステップS1010でメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上であるとされた場合は、ステップS1011に進み、シナリオチャネルsCHnのメインシナリオ実行ライン(mcIx)を+1する。つまり次回は、次のラインが対象となるようにする。
また、ステップS1010においてメインシナリオタイマ(msTm)の値がメインシナリオテーブルの当該ラインに記述された時間データ以上ではないとされた場合は、ステップS1015に進む。
ステップS1011でシナリオチャネルsCHnのメインシナリオ実行ライン(mcIx)を+1した後は、ステップS1012で次のラインがループ指定であるか否かを確認する。図25のメインシナリオテーブルにおいてシナリオ番号1では、最終ラインがシナリオデータループコードD_SELOPとされている例を示したが、このようにループ指定されていた場合は、ステップS1013で、メインシナリオ実行ライン(mcIx)にループ行をセットする。
またステップS1012で次のラインはループ指定ではないとされた場合は、ステップS1013を経由せずステップS1014に進む。
CPU42aは、ステップS1014では、1つのラインの終了に応じたクリア処理を行う。即ちメインシナリオタイマ(msTm)、サブシナリオタイマ(scTm)、サブシナリオ実行ライン(scIx)、サブシナリオ実行ラインlmp(lmpIx)、メインシナリオオプション(mcOpt)、ユーザオプション(userFn)、待機時間(delay)をクリアする。
そしてステップS1015のチェックサム処理、ステップS1016のバックアップ処理を行ってシナリオチャネルsCHnについての1回の処理を終える。
シナリオ更新処理としては、ループ処理LP1として、シナリオチャネルsCH0〜sCH63のそれぞれについて以上の処理が実行されることになる。
ステップS1008で行われるサブシナリオ更新処理を図22Aに詳細に示す。
メインシナリオタイマ(msTm)、シナリオチャネルsCHnと、メインシナリオテーブルに記述されたサブシナリオ番号(scNo)に基づいて、図22Aのサブシナリオの更新処理が行われる。
まずステップS1021でCPU42aは、シナリオチャネルsCHnが0〜63のいずれかを示しているか否か、つまり適正値であるか否かを確認する。シナリオチャネルsCHnが64以上であれば、更新処理不能として図22の処理を終える。
シナリオチャネルsCHnが適正値であれば、CPU42aはステップS1022で、サブシナリオ番号(scNo)とサブシナリオ実行ラインlmp(lmpIx)に対応するランプサブシナリオテーブル(図26A参照)のアドレスを特定する。
CPU42aはステップS1023では、ランプチャネルカウント値を0をセットする。このランプチャンネルカウント値は、ランプデータ登録情報への点灯パターンナンバの登録がランプチャンネルdwCHの数(16)を超えて異常な回数行われてしまうことを防止するためにCPU42aが管理する値である。
そして、CPU42aはステップS1024で、メインシナリオタイマ(msTm)とランプサブシナリオテーブルの時間データ(time)を比較する。ランプサブシナリオテーブルの時間データ(time)は、当該ライン(サブシナリオ実行ラインlmp(lmpIx)で示されるライン)が開始される時間(ms)を示している。従って、メインシナリオタイマの時間(実際にはmsTm×16msの時間)が、時間データ(time)以上となっていたら、そのラインについての処理を行う。その場合、ステップS1025でランプチャネルカウント値が正常(ランプチャンネルdwCHの数である「16」以内)であるか否かを確認する。異常な値であれば処理を終える。正常な値であればステップS1026で、現在のラインが、ランプシナリオデータ終了コードD_LSENDが記述されたラインであるか否かを確認する。
ランプシナリオデータ終了コードD_LSENDが記述されたラインではなければ、CPU42aはステップS1027で、当該ラインに記述されているランプチャネル、ランプナンバを取得する。そしてステップS1028で点灯パターンナンバの登録を行う。
点灯パターンナンバの登録処理を図22Bに示している。この場合、まずCPU42aはステップS1051で、当該ラインに記述されているランプチャネルdwCHの値が正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
正常値であれば、ステップS1052で、当該ラインに記述されているランプナンバが正常値であるか否かを判別する。正常値でなければ登録を行わずに処理を終える。
ランプチャネルdwCH及びランプ番号のいずれもが正常値であれば、ステップS1053でワークのランプデータ登録情報における、ランプチャネルdwCHに対応する領域に登録点灯ナンバ(lmpNew)と実行点灯ナンバ(lmpNo)をセットする。即ちランプサブシナリオテーブルの当該ラインから取得したランプナンバを、登録点灯ナンバ(lmpNew)にセットし、「0」を実行点灯ナンバ(lmpNo)にセットする。
以上の図22Bの処理をステップS1028で行ったら、CPU42aはステップS1029でサブシナリオ実行ラインlmp(lmpIx)の値を+1し、ステップS1030でランプチャネルカウント値を+1してステップS1024に戻る。
ステップS1024で、メインシナリオタイマの時間が、サブシナリオ実行ラインlmp(lmpIx)で示されるラインの時間データ(time)に達していない場合、及びステップS1026でランプシナリオデータ終了コードD_LSENDが確認された場合は、CPU42aの処理はステップS1031へ進む。
ステップS1031では、メインシナリオテーブルに記述されているサブシナリオ番号と、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(scIx)に対応する音/モータサブシナリオテーブルのアドレスを特定する。
そして、ステップS1032で、サブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上であるか否かを確認する。即ち、サブシナリオタイマ(scTm)の値が、現在処理中のシナリオチャネルsCHnに登録されているサブシナリオ実行ライン(sclx)で示されるラインの時間データ(time)の値以上であるか否かを確認する。
ステップS1032において、サブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上でなければ、そのラインに記述された情報についての登録処理は未だ実行するべきではないので、図のように音及びモータの登録を行わずにステップS1040に進み、サブシナリオタイマ(scTm)の値をインクリメント(+1)して、この図22Aの処理を終えることとなる。
一方、ステップS1032においてサブシナリオタイマ(scTm)の値がテーブルの時間データ(time)の値以上であれば、CPU42aは処理をステップS1033に進め、該当する音/モータサブシナリオ番号のテーブルの、サブシナリオ実行ライン(scIx)で示されるラインが、シナリオデータ終了コードD_SEENDが記述された行であるか否かを確認する。シナリオデータ終了コードD_SEENDが記述された行であれば処理を終了する。
シナリオデータ終了コードD_SEENDが記述された行でなければ、CPU42aはステップS1035で音の登録を行い、またステップS1036でモータの登録を行う。これらステップS1035,S1036の登録処理としては、図26Bに例示したような音/モータサブシナリオテーブルの該当サブシナリオ番号の該当ラインの情報を、図24の音データ登録情報の音チャネルaCH、図23Cのモータデータ登録情報のモータチャネルmCHにそれぞれ登録する処理を行う。
なお、ステップS1035として実行される音の登録の詳細な処理内容については後述する(図27〜図31)。
続いて、CPU42aはステップS1037で、当該ラインに記述されたソレノイド/ユーザオプションの情報を、シナリオ登録情報等に登録する。
そしてステップS1038で、サブシナリオ実行ライン(scIx)の値として次のラインの値をセットする。さらにステップS1040でサブシナリオタイマ(scTm)をインクリメントして処理を終える。
図15のステップS615では、以上の図21,図22の処理が行われることとなる。この処理でワーク上のシナリオ登録情報、ランプデータ登録情報、モータデータ登録情報、音データ登録情報が逐次更新され、これに応じて演出制御が行われることで、シナリオに沿った演出動作が実現される。
ここで、本実施形態においては、第1のワークエリア(シナリオチャネルsCH0〜sCH63)には、演出種別を特定する演出データとしてシナリオ登録情報がセットされる。具体的にはメインシナリオ番号(mcNo)がセットされ、メインシナリオテーブル上のサブシナリオが特定される。さらに第1のワークエリアでは、音/モータサブシナリオテーブルの実行ラインを示すサブシナリオ実行ライン(scIx)、ランプサブシナリオテーブルの実行ラインを示すサブシナリオ実行ラインlmp(lmpIx)がセットされる。これらにより演出種別が特定される。
また実行する演出に応じた演出デバイスの動作データは第2のワークエリアにセットされる。第2のワークエリアとしてランプデータ登録情報をセットするランプチャネルdwCH1〜dwCH15、モータデータ登録情報をセットするモータチャネルmCH0〜mCH7、音データ登録情報をセットする音チャネルaCH0〜aCH15が用意されている。
即ち本実施の形態では、各種演出デバイスを用いた全体の演出データが第1のワークエリアにセットされ、その第1のワークエリアの演出データに基づき、第2のワークエリアで動作データがセットされることになる。
この場合、多様な演出設定のためには第1のワークエリアには、登録できる演出データ個数(シナリオ登録情報の個数)を比較的多くすることが好ましい。例えば演出データの登録チャネル数を多くしたい。そこでシナリオチャネルsCH0〜sCH63として64個のチャネルを用意する。
一方で、第2のワークエリアには、演出デバイスの動作を規定する動作データがセットされればよいため、動作データの登録可能数は、比較的少なくてもよい。特に、第2のワークエリアが、ランプ、モータ、音の個々の演出デバイスに対応して設けられているため、個々のデバイスについての登録可能数は、むやみに多くする必要はない。そこで第2のワークエリアとしては、ランプチャネルは16チャネル(dwCH1〜dwCH15)、モータチャネルは8チャネル(mCH0〜mCH7)、音チャネルは16チャネル(aCH0〜aCH15)としている。これらは、それぞれ対応する1つの演出デバイスについての動作データがセットされれば良いため、登録チャネル数は少なくても十分に多彩な演出動作に対応可能である。
このように、第1のワークエリアのチャネル数をN(例えばN=64),第2のワークエリアのチャネル数をM(例えばM=16、又はM=8)とすると、N>Mとなるように記憶領域を割り当てている。
これによって多彩な演出動作を可能としたまま、メモリが闇雲に消費されないようにしている。
[10-4.音の登録処理]

続いて、図22のステップS1035として実行する音の登録処理について説明する。
この音の登録処理は、図26Bに例示した音/モータサブシナリオテーブルの記述内容(サブシナリオデータ)に応じた情報を、図24の音データ登録情報の音チャネルaCHに登録する処理となる。
図27は、音の登録処理を示している。
まず、CPU42aはステップS1100で、音/モータサブシナリオテーブルに音データが存在するか否かを判別する。即ち、音/モータサブシナリオテーブルの当該サブシナリオ番号の該当ラインの記述情報として、BGM/SE1/SE2/エラー音/音コントロールの何れかの情報が存在するか否かを判別する。
これらの音データが存在しない場合は処理を終える。
一方、これら音データの何れかが存在する場合、CPU42aは、ステップS1101でBGMか否かを判別する。音データがBGMであった場合、CPU42aはステップS1106で音/モータサブシナリオテーブルの音データを音チャネルaCH0にセットする。即ち、音/モータサブシナリオテーブルの当該サブシナリオ番号の該当ラインに記述されたBGMの情報を、音データ登録情報における、当該BGMに対応づけられた音チャネルaCHとしての音チャネルaCH0に登録する。
先に説明したように、音データがBGM、SE1、SE2、エラー音の場合、その記述内容(つまりシナリオデータ)としては少なくとも再生すべきフレーズのフレーズ番号とその1次ボリュームの情報とが含まれ、従ってこれらの情報が音データ登録情報に登録される。
なお、BGMについてはステレオ再生が可能とされ、その場合は音/モータサブシナリオテーブルのBGMの情報でその指示が為される。前述もしたがBGMがステレオ再生される場合、音チャネルaCH0のみでなく音チャネルaCH1も使用される。この場合、これら音チャネルaCH0、aCH1の双方には、フレーズ番号(frzHi、frzLo)としてBGMの情報に記述された共通のフレーズ番号が登録されると共に、ステレオ(frzSt)の情報として「1」が記述される。
ステップS1106でBGMの音データをセットした場合、或いはステップS1101で音データがBGMでないとされた場合、CPU42aはステップS1102で音データがエラー音か否かを判別し、エラー音であった場合はステップS1107で音/モータサブシナリオテーブルの音データを音チャネルaCH15にセットする。即ち、エラー音に対応する音チャネルaCHとしての音チャネルaCH15にサブシナリオデータの記述内容に応じた情報を登録する。
ステップS1107でエラー音の音データをセットした場合、或いはステップS1102で音データがエラー音でないとされた場合、CPU42aはステップS1103で音データがSE1か否かを判別し、SE1であった場合はステップS1108でSE1の設定処理を行う。
そして、ステップS1108でSE1の設定処理を実行した場合、或いはステップS1103で音データがSE1でないとされた場合、CPU42aはステップS1104で音データがSE2か否かを判別し、SE2であった場合はステップS1109でSE2の設定処理を行う。
さらに、ステップS1109でSE2の設定処理を実行した場合、或いはステップS1104で音データがSE2でないとされた場合、CPU42aはステップS1105で音データが音コントロールか否かを判別し、音コントロールであった場合はステップS1110で音コントロールの設定処理を行う。
ステップS1110で音コントロールの設定処理を実行した場合、或いはステップS1105で音データが音コントロールでないとされた場合、CPU42aは図27に示す処理を終える。
以下、上記のステップS1108、S1109、S1110でそれぞれ実行するSE1の設定処理、SE2の設定処理、音コントロールの設定処理の内容を個別に説明する。
まず図28により、ステップS1108、S1109でそれぞれ実行するSE1の設定処理、SE2の設定処理の内容について説明する。
なお、これらSE1の設定処理、SE2の設定処理の内容は、音データの登録対象とする音チャネルaCH(対応音チャネルaCH)が異なる以外は共通であるため、当該図28の一図での説明とする。
まずCPU42aはステップS1201で、対応音チャネルaCHの再生状態を取得する。前述のように本実施形態では、音の種別ごとに登録を行うべき音チャネルaCHの対応が定められており、SE1の場合は音チャネルaCH2〜aCH9が、またSE2の場合は音チャネルaCH10〜aCH14がそれぞれ対応音チャネルaCHとなる。
従って、ステップS1201の処理は、SE1の設定処理(S1108)として実行される場合は音チャネルaCH2〜aCH9の再生状態を取得する処理となり、SE2の設定処理(S1109)として実行される場合は音チャネルaCH10〜aCH14の再生状態を取得する処理となる。
各音チャネルaCHの再生状態の取得、即ちフレーズを再生中であるか否かの情報の取得は、音源IC42dに音チャネルaCHごとに設けられた再生状態情報格納レジスタの値を取得することで行う。
次に、ステップS1202ではCPU42aは、設定音チャネルaCHをスタート音チャネルaCHに設定する。ここで、設定音チャネルaCHとは、音データ登録の対象とする音チャネルaCHを意味する。また、スタート音チャネルaCHとは、対応音チャネルaCHのうち最もチャネル番号の小さい音チャネルaCHを意味し、SE1の場合はaCH2、SE2の場合はaCH10が該当する。
以下のステップS1203〜S1211の処理により、スタート音チャネルaCHから順に空きチャネルを探索してSEの音データの登録を行うべく、ステップS1202で設定音チャネルaCHをスタート音チャネルaCHに設定する。
ステップS1203ではCPU42aは、設定音チャネルaCHは再生中であるか否かを判別する。設定音チャネルaCHが再生中であれば、ステップS1208で設定音チャネルaCHを+1するとともに、ステップS1209で設定音チャネルaCHがエンドチャネルより大であるか否かを判別する。エンドチャネルとは、対応音チャネルaCHのうちチャネル番号が最も大きい音チャネルaCHを意味し、従ってSE1の場合は音チャネルaCH9より大であるか否か、SE2の場合は音チャネルaCH14より大であるか否かをそれぞれ判別することになる。
設定音チャネルaCHがエンドチャネルより大である場合は、対応音チャネルaCHに空きがないことから処理を終了する。
一方、設定音チャネルaCHがエンドチャネルより大でない場合はステップS1203に戻る(つまり次の音チャネルaCHについて再生中か否かの判別が行われる)。
ステップS1203で設定音チャネルaCHは再生中でないとされた場合、CPU42aはステップS1204に進み、設定音チャネルaCHのワークに音データがないか否かを判別する。
設定音チャネルaCHに音データがある、つまり設定音チャネルaCHは空きではないとされた場合、CPU42aはステップS1208に進む。つまりこれにより、対応音チャネルaCH内における次の空きチャネルを探索するようにされる。
一方、設定音チャネルaCHに音データがない、つまり設定音チャネルaCHが空きであるとされた場合、CPU42aはステップS1205に進み、ステレオ要求があるか否かを判別する。即ち、テーブルのSEの情報中におけるステレオ再生か否かを表す情報を参照して、当該SEの情報が、ステレオ再生の要求を伴うものであるか否かを判別する。なお、前述のようにステレオ再生を要求するシナリオデータには、LchとRchの個別のフレーズ番号は記述されず、共通の1つのフレーズ番号が記述されている。
ステレオ要求がない場合、CPU42aはステップS1210に進み、テーブルの音データを設定音チャネルaCHに対応したワークの領域にセットして処理を終了する。
一方、ステレオ要求があった場合、CPU42aはステップS1206に進み、設定音チャネルaCHが偶数チャネルであるか否かを判別する。設定音チャネルaCHが偶数チャネルでなければ、CPU42aはステップS1208に進み、設定音チャネルaCHを+1する。即ち、次の音チャネルaCH以降で空きチャネルを探索する。
ここで、前述のように本例では、ステレオ再生は偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とを使用して行うものとされるので、ステレオ再生を要求するシナリオデータに応じては、該シナリオデータに記述されたフレーズ番号等の音データを偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1とにセットすべきものとなる。このため、設定音チャネルaCHが偶数チャネルでなければ、上記のように次の音チャネルaCH以降で空きチャネルを探索する。
一方、設定音チャネルaCHが偶数チャネルであれば、CPU42aはステップS1207に進み、設定音チャネルaCHの次の音チャネルaCHも空きチャネルであるか否か(再生中でないかも含めて空きチャネルであるか否か)を判別する。
設定音チャネルaCHの次の音チャネルaCHが空きチャネルでなければ、ステップS1208に進む。つまり、対応音チャネルaCH内での次の空きチャネルを探索する。
一方、設定音チャネルaCHの次の音チャネルaCHが空きチャネルであれば、ステップS1211に進んで、テーブルの音データを設定音チャネルaCHとその次の音チャネルaCHに対応したワークの領域にそれぞれセットし、処理を終了する。
以上のSEの設定処理によって、サブシナリオテーブルに記述されたSE1又はSE2の音データが音データ登録情報における対応音チャネルaCHのうちの空きチャネルに登録される。
また、当該SE1又はSE2の情報がフレーズのステレオ再生を要求するものであった場合は、音源IC42dがステレオ再生に偶数チャネルとその次の奇数チャネルとを使用することを要求する場合に対応して、対応音チャネルaCH内における偶数チャネルとその次の奇数チャネルとに適正に音データを登録できる。つまりこれにより、音源IC42dの仕様に応じた適切な情報登録を行うことができる。
続いて、図27のステップS1110として実行する音コントロールの設定処理について図29〜図31を参照して説明する。
図29は、ステップS1110の音コントロールの設定処理を示している。
まず、CPU42aはステップS1301で、音コントロールの情報の上位1バイトの値を確認する。
図30は、音コントロールの情報のデータ構造例を示している。
本実施形態の場合、音コントロールの情報は4バイトで構成され、その上位1バイトに音のコントロール内容を表すための情報(コントロール種別の情報)が記述され、下位3バイトに音のコントロール対象とする音チャネルaCHを指定するための情報(コントロール対象の情報)が記述される。
この上位1バイトのコントロール種別の情報によっては、フェードイン再生やフェードアウト再生、及び2次ボリュームの変化指示が可能とされる。
図のように上位1バイトで表されるコントロール種別の情報としては、0x20〜0x70までがフェード系の情報とされ、0x80以上が2次ボリュームの変化指示の情報とされる。
具体的に、0x20〜0x70までのフェード系の情報としては、0x25(SFO1M)が「フェードアウトゆっくり 消音」、0x35(SFO2M)が「フェードアウト普通 消音」、0x45(SFO3M)が「フェードアウトはやく 消音」、0x20(SFO1)が「フェードアウトゆっくり 音小」、0x30(SFO2)が「フェードアウト普通 音小」、0x40(SFO3)が「フェードアウトはやく 音小」、0x50(SFI1)が「フェードインゆっくり」、0x60(SFI2)が「フェードイン普通」、0x70(SFI3)が「フェードインはやく」を表す。
ここで、「ゆっくり」「普通」「はやく」は、フェード制御におけるボリュームの遷移速度(speed)を意味する。またフェードアウトについての「消音」と「音小」の違いは、遷移後のボリュームが「0」か否かである。
また、0x80以上の2次ボリュームの変化指示の情報としては、0x80(SVO8)、0x81(SVO0)、0x82(SVO2)、0x83(SVO4)がそれぞれ2次ボリューム=0x80(MAX)、0x00(0)、0x20、0x40を表す。そして、0x90(SVO8E)はエラー以外の全ての音チャネルaCH(aCH0〜aCH14)の2次ボリューム=0x80を表し、0x91(SVO0E)はエラー以外の全ての音チャネルaCHの2次ボリューム=0x00を表す。
また、音コントロールの情報の下位3バイトは、0x110000(BG_T)が音チャネルaCH0(BGM)、0x220000(YK1_T)が音チャネルaCH2〜aCH9(SE1)、0x330000(YK2_T)が音チャネルaCH10〜aCH14(SE2)、0x440000(YKA_T)が音チャネルaCH2〜aCH14(SE1+SE2=全SE)、0x00−−−−(その他)が「−−−−」が示すフレーズを再生している音チャネルaCHを表す。
図29のステップS1301では、CPU42aは、上記のデータ構造とされる音コントロールの情報の上位1バイトの値の確認処理として、上位1バイトの値が80h(0x80)未満、80h以上90h未満、90h以上の何れであるかを確認する。これは、コントロール種別がフェード系、単純な2次ボリューム変化指示、エラー以外の全音チャネルaCHの指定を伴う2次ボリューム変化指示の何れかであるかを確認していることに相当する。
80h以上90h未満の場合、CPU42aはステップS1302で、音/モータサブシナリオテーブル(音コントロールの情報)の下位3バイトが示す音チャネルaCHの2次ボリュームを上位1バイトが示すボリューム値にセットして処理を終了する。
また、90h以上である場合、CPU42aはステップS1303で音チャネルaCH0〜aCH14の2次ボリュームを上位1バイトが示すボリューム値にセットして処理を終了する。
一方、上位1バイトが80h未満であった場合、CPU42aはステップS1304で上位1バイトの値に応じたコントロールデータに変換する処理を行った上で、ステップS1305で音/モータサブシナリオテーブル(音コントロールの情報)の下位3バイトが示す音チャネルaCHに対応するワーク領域に変換後のコントロールデータをセットし、処理を終了する。
ここで、上位1バイトが80h未満のフェード系のコントロール情報は、「フェードアウトゆっくり 消音」や「フェードインはやく」など、そのコントロール種別の違いのみを識別するための情報とされている。そこで、これらの上位1バイトのコントロール種別の情報を上記のステップS1304で音源IC42dが対応動作を実行可能な情報に変換する。
図31Aは、図29のステップS1304の変換処理の内容を示している。
まず、CPU42aはステップS1401で、変換テーブルから上位1バイトの値に対応する2バイトの値を取得する。そして、ステップS1402で、下位3バイトの値に基づき2バイトの値を取得する。
その上で、ステップS1403では、これらステップS1401とS1402とで取得した2バイトの値を連結する。
図31Bは、上記のステップS1401、S1402の取得処理についての説明図である。
まず、ステップS1401の取得処理では、図のようにフェード系の上位2バイトの値(0x25〜0x70)ごとにその対応値(2バイト)を格納した変換テーブルを用いる。CPU42aは該変換テーブルを参照して、上位1バイトの値に対応する2バイトの値を取得する。
そして、ステップS1402の取得処理では、音コントロールの下位3バイトの値に基づいて、コントロール対象がSE1、SE2以外(つまりaCH2〜aCH14以外:予告音以外)の場合と、SE1、SE2の場合とで、それぞれ図のような2バイトの値を取得する。すなわち、SE1、SE2以外の場合は0xD000、SE1、SE2の場合は0xC000である。
なお、後述もするが、このようにコントロール対象がSE1、SE2の何れかとされる場合とそうでない場合とで取得値を異ならせているのは、SE1とSE2のみフェード制御がモノラル指定とされているからである。
このように得られた各2バイトの値をステップS1403で連結して、4バイトのコントロールデータを得る。
図31Cは、音コントロールのフェード系の情報と、その情報内容(値)に応じて図31Aの変換処理で得られるコントロールデータとの対応関係を例示している。
ここで、本実施形態では、図31Aの変換処理で得られる計4バイトのコントロールデータを、そのまま音データ登録情報に設定(登録)する。この意味で図中では、図31Aの変換処理で得られるコントロールデータのことを「音データ登録情報に設定するデータ」と示している。
この図31Cによると、フェード系の音コントロールの情報として例えば上位1バイト=SFO1M(フェードアウトゆっくり 消音)、下位3バイト=BG_Tとされた情報については、上記の変換処理によって「0x2000D000」というコントロールデータに変換されることが分かる。また、例えば上位1バイト=SFO3M(フェードアウトはやく 消音)、下位3バイト=YK1_Tとされた音コントロールの情報については、「0xFF00C000」というコントロールデータに変換されている。
図24を参照すると、音データ登録情報では、1バイト目が「1次ボリューム遷移量」、2バイト目が「1次ボリューム」、3バイト目が「遷移量変化」「ボリューム変化」「フレーズ変化」「ステレオ」「ループ」(ここまで各1ビット)及び「フレーズ番号hi」(3ビット)、4バイト目が「フレーズ番号low」とされている。
前述のように本実施の形態では変換後のコントロールデータをそのまま音データ登録情報にセットするので、例えば上記のSFO1M+BG_Tの音コントロール情報のコントロールデータ(0x2000D000)によると、音データ登録情報の登録内容は、
「1次ボリューム遷移量」=「0x20」
「1次ボリューム」=「0x00」
「遷移量変化」=「1」
「ボリューム変化」=「1」
「フレーズ変化」=「0」
「ステレオ」=「1」
「ループ」=「0」
「フレーズ番号hi」=「000」
「フレーズ番号low」=「0x00」
となる。
また、例えば上記のSFO3M+YK1_Tの音コントロール情報のコントロールデータ(0xFF00C000)によると、音データ登録情報の登録内容は、
「1次ボリューム遷移量」=「0xFF」
「1次ボリューム」=「0x00」
「遷移量変化」=「1」
「ボリューム変化」=「1」
「フレーズ変化」=「0」
「ステレオ」=「0」
「ループ」=「0」
「フレーズ番号hi」=「000」
「フレーズ番号low」=「0x00」
となる。
なお、前者の例のようにコントロール対象がSE1,SE2以外の場合には、「ステレオ」に「1」(ステレオ)がセットされ、後者の例のようにコントロール対象がSE1(SE2も同様)の場合には、「ステレオ」に「0」(モノラル)がセットされることになる。この点からも理解されるように、前述したSEのフェード制御についてのモノラル指定が実現される。
上記のように本実施形態では、フェード系の音コントロールの情報について、そのコントロール種別の情報として単純にフェード制御の違いのみを表す情報を記述しておき、これを上記の変換処理により変換して音データ登録情報に登録可能なデータ(つまりは音源IC42dがそのフェード制御の実行に要するデータ)に変換するものとしている。
ここで、「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御は、時間経過と共にボリュームを徐々に変化させるようなサブシナリオデータを用意しておくことで実現することも考えられるが、その場合は時間ごとのサブシナリオデータを保持させておくことになり、その分メモリ容量を要することになる。これに対し上記のような変換処理を行う本実施の形態によれば、サブシナリオデータとしては単に「フェードアウトゆっくり 消音」「フェードインはやく」等のフェード制御の違いのみを表す情報を記述すればよく、一種のフェード制御に要するサブシナリオデータの数を1つに削減でき、結果、サブシナリオデータを保持するためのメモリ容量を削減できる。
また、上記のような変換処理を行うものとすれば、仮に音源IC42dの仕様が変更されたとしても、図31Bに示した変換テーブルの内容を変更するのみで対応可能であり、サブシナリオデータの書き替えやプログラムの書き換えは行わずに済む。従って、音源IC42dの仕様変更に柔軟に対応できると共に、音源IC42dの仕様変更に対応するための作業負担も軽減できる。
また、フェードイン/アウトとして具体的なボリューム遷移量などを変更するとしたときにも、図31Bに示した変換テーブルの内容を変更するだけでよく、同様にサブシナリオデータの書き替えやプログラムの書き換えは行わずに済み、変更に係る作業負担を軽減できる。
また、本実施形態では、フェード制御に係るボリュームの遷移速度指示情報(1次ボリューム遷移量)に関して、該遷移速度指示情報により指示可能な遷移速度の階調を、音源IC42dで実現可能な遷移速度の階調よりも少ないものとしている。具体的に、本例において音源IC42dに出力・設定されるボリューム遷移速度の情報は8ビット(1バイト)であり、従って音源IC42dで実現可能な遷移速度の階調は256階調であるのに対し、サブシナリオデータの音コントロールの情報で指定可能な遷移速度の階調は、前述のように「早く」「ふつう」「ゆっくり」の3階調のみとしている。
このようにサブシナリオデータ(演出進行データ)に記述するボリューム遷移速度指示情報の階調を音源IC42dで実現可能な遷移速度の階調よりも少なくしていることで、演出進行データに記述するボリューム遷移速度指示情報のビット数をその分少なくできる。従って、演出進行データのデータ量を削減でき、演出進行データの保持に係るメモリ容量の削減を図ることができる。
なお、ボリューム遷移速度指示情報が指示可能な階調は音源IC42dで実現可能な遷移速度の階調よりも少なければよく、必ずしも上記で例示した3階調に限定されるべきではない。
また、上記のように音コントロールの情報には、フェードインやフェードアウトの指示情報が記述されるが、この音コントロールの情報は、前述のようにサブシナリオテーブルにおいて時間の情報と対応づけて格納された情報である。また、サブシナリオテーブルは、このような音コントロールの情報のみでなく、時間に対応して再生すべきフレーズの情報も格納されたものとなる(図26Bの「BGM」「SE1」「SE2」「エラー音」を参照)。
ここで、この点からも理解されるように、本実施形態のサブシナリオテーブルは、時間に対応して「出力すべき音を指定する情報」(フレーズ再生指示情報)と「再生中のフレーズのフェードイン及び/又はフェードアウトを指示するための情報」(音制御情報)とを格納した情報とされる。
このようなサブシナリオテーブルの情報に基づき音に関する演出制御を実行する本実施形態によれば、フレーズのフェードインやフェードアウトは、サブシナリオテーブル(演出進行データ)に対して前記音制御情報を記述しておくことで実現される。フェードインやフェードアウトの制御は時間経過に応じて音量を変化させるものであるため、演出進行データとして時間ごとにボリュームの変化指示情報を記述しておくことも考えられるが、その場合には演出進行データ量が増大傾向となってメモリ容量の増大化を招く。また、演出進行データに基づく処理も増大傾向となるため制御負荷の増大化を招く。
これに対し、上記のように演出進行データに対してフェードインやフェードアウトを指示するための音制御情報を記述しておくことでフレーズのフェード制御を実現する本実施形態によれば、演出進行データ量を削減でき、また制御負荷を低減できる。
また、本例では、フェードイン、フェードアウトを指示する音制御情報が、ボリュームの遷移速度のみでなく遷移後のボリュームの指示情報も含むものとしたが、当該音制御情報として、これら遷移速度指示情報、遷移後のボリューム指示情報の双方を含むことは必須ではない。即ち、少なくともそれらの情報の何れか一方を含む情報とすることができる。例えば、遷移後のボリュームが「0」や「MAX」などの所定値に固定されている音源IC42dを用いる場合には、遷移後のボリューム指示情報は不要であるし、遷移速度が所定値に固定されている音源IC42dを用いる場合は遷移速度の指示情報は不要である。
ここで、図32により、フェード系の音コントロールの情報の使用例について説明しておく。
この図32の例では、音/モータサブシナリオテーブルにおける音/モータサブシナリオ番号001のサブシナリオデータとして、時間(time)=0でBGMを「フェードアウトはやく 音小」(SFO3+BG_T)の態様でフェードさせ、時間=0〜2000でSE1のフレーズ0001をボリューム0x80で再生させ、時間=2000〜5000でSE1のフレーズ0002をボリューム0x80でステレオ再生させ、時間=5000でBGMを「フェードインゆっくり」(SFI1+BG_T)の態様でフェードさせる情報が記述された場合を例示している。
なお図中にも記しているが、フレーズの終了タイミングはそのフレーズとしての音データが終了する時点となる。
図21、図22及び図27〜図31で説明したシナリオ更新処理、サブシナリオ更新処理、音データ登録処理が実行されることで、先ずは時間=0のラインに記述された音コントロールの情報(SFO3+BG_T)に応じたコントロールデータ、及び時間=0のラインに記述されたSE1の情報(0x00806001)が音データ登録情報にセットされる。なお確認のため述べておくと、図21、図22、及び図27に示した処理によれば、これら同じ時間=0のラインに記述されたデータは、音データ登録情報に対して一度にセットされる(図22の「音の登録処理(S1035)」で一度にセットされる)。
図15のメイン処理における音再生処理(S616)によって、このように音データ登録情報にセットされた情報が順次音源IC42dに出力されて、サブシナリオデータに応じた音出力が実現される。これにより、図中の下段に示すようなBGMのフェードアウトとフレーズ0001の再生が実現される。
また、時間=2000となることに応じて、音データ登録情報に当該時間=2000のラインに記述されたSE2の情報(0x00807002)が登録され、この登録情報がステップS141の音再生処理で音源IC42dに順次出力されることで、図中の下段に示すような時間=2000からのフレーズ0002の再生が開始される。
さらに、時間5000となることに応じて、音データ登録情報に当該時間=5000のラインに記述された音コントロールの情報(SFI1+BG_T)に応じたコントロールデータが登録され、この登録情報がステップS141の音再生処理で音源IC42dに順次出力されることで、図中に示すような時間=5000におけるBGMのフェードインが実現される。
ここで、音コントロールの情報によっては、図30を参照して説明したように、指定の音チャネルCHaで再生されるフレーズの2次ボリュームの変化指示も行うことができる。
図33を参照して、2次ボリュームの変化指示によるボリューム制御例を説明する。
図33は、2次ボリュームにより所定種別の音を消音させる制御例についての説明図であり、具体的には、BGMの再生中にSE1のフレーズ0010を再生するシナリオが登録された場合に、2次ボリュームによりBGMを消音させる例を示している。
この例の場合には、サブシナリオテーブルの時間=0のラインが2つ存在しており、一方の時間=0のラインには音コントロールの情報として「SVO0+BG_T」(図30を参照)が記述され、他方の時間=0のラインにはSE1の情報として「0x0080700A」(フレーズ0010を1次ボリューム0x80でステレオ再生)が記述されている。
なお、このように時間(time)を同じとするラインが2つ存在する場合は、先の図21、図22、及び図27に示した処理によりそれらのラインの記述情報が順次音データ登録情報に登録されることになる。これらの登録情報に応じ、時間=0に対応して図のようなBGMの2次ボリュームによる消音と、SE1としてのフレーズ0010の再生とが開始される。
また、この図の例では時間=5000のラインに音コントロールの情報として「SVO8+BG_T」(2次ボリューム=0x80)が記述され、これにより、図のように時間=5000以降はBGMの消音状態が解除される。
このように音コントロールの情報で指定音チャネルaCHの2次ボリュームを変化させることを可能とした本実施形態によれば、或る種別の音を再生中であったときに後からプライオリティの高い別の音を再生すべきとされた場合において、該再生中の音を再生停止させる指示を行うことなく、簡易に高プライオリティの音のみが再生出力される状態を得ることができる。従って、音のプライオリティ制御を簡易に実現できる。
ここで、上記ではBGMと他の音についてのプライオリティ制御について例示したが、本実施形態では、SEとしての音をSE1とSE2とに分類している、即ち、SE1とSE2とを別々の音の種別として扱うものとしているので、これらSE1とSE2についても、同様に音コントロールの情報による2次ボリュームの制御によって音のプライオリティ制御を実現できる。
前述のように、これらSE1とSE2の分類は、本例ではその演出の出現頻度の別としている。従って、出現頻度の高い(つまり信頼度の低い)SE1の音を再生中に、後から出現頻度のより低い(信頼度のより高い)SE2の音を再生すべきとされた場合において、図33の例と同様に音コントロールの情報による2次ボリュームの制御を行うことで、再生中のSE1を消音させて、SE2の方が優先的に出力されるようにすることができる。
また、そもそも1次ボリュームのみでなく2次ボリュームによる音量制御を可能としたことで、図33のような消音制御が適正に実現されるものとなる。
ここで、1次ボリュームのみを用いて、図33のようなBGMの消音制御を実現しようとした場合には、音コントロールの情報により、例えば遷移速度を最速としたフェードアウトを行うことにより、再生中のBGMを消音させることが考えられる。
しかしながら、先に説明した通り、1次ボリュームは、フレーズの再生開始時にフレーズ番号と共に音源IC42dにセットされるボリューム値となる。このため、上記のように音コントロールの情報を用いた1次ボリュームによる消音を行ったとしても、仮にその後、図33中の「X」のようなタイミング(BGMを元音量に戻すべき時点よりも前のタイミング)で他のシナリオにより新たにBGMの再生開始が指示された場合には、該「X」の時点でBGMのボリュームは0x00以外の所要の音量とされてしまい、BGMが放音されてしまう。
これに対し、2次ボリュームによる音量制御も可能とした本実施形態によれば、図33で説明した通り、一度音コントロールの情報によりBGMの2次ボリュームを0x00に制御しておけば、該2次ボリュームを復帰させる音コントロールが行われるまでの間に新たなBGMの再生が開始されて1次ボリュームが0x00以外の音量に設定されても、出力音量としては0x00が維持されるようにできる。これにより、図33に示したような音量制御を適正に実現することができる。
また、1次ボリュームのみでなく2次ボリュームによる音量制御を可能としたことによっては、音量制御に係る制御負荷の軽減が図られる。
すなわち、これまでの説明からも理解されるように1次ボリュームはシナリオデータ(演出進行データ)に記述されるボリューム情報であるので、仮に1次ボリュームのみで音量制御を行うとすると、音量制御に必ずシナリオデータの登録処理が必要とされ、その分、CPU42aの負荷が増大する傾向となってしまう。
これに対し、1次ボリュームのみでなく2次ボリュームによる音量制御を可能とした本実施形態によれば、音量制御は演出進行データに依らず行うことができるため、1次ボリュームのみを用いた音量制御、即ち演出進行データのみに基づく音量制御を行う場合との比較で演出進行データに基づく処理を削減できる。従って、制御負荷の低減が図られる。また、保持すべき演出進行データの量も少なくできるため、メモリ容量の削減も図られる。
特に、本実施形態では、操作に応じた音量制御(例えば前述したスロットマシン裏側のボリュームスイッチの操作に応じた音量制御)についても2次ボリュームを用いて行うものとしている。このことで、操作に応じた音量制御に係る制御負荷の軽減も図られる。
すなわち、操作に応じた音量制御を1次ボリュームのみを用いて行うとした場合は、操作に応じて毎回シナリオによって1次ボリュームをコントロールすることになるので、制御負荷の増大化を助長するが、上記のように操作に応じた音量制御も2次ボリュームを用いて行うものとした本実施形態によれば、操作に応じた音量制御にあたりシナリオデータに基づく処理を省略でき、この点でも制御負荷の軽減を図ることができる。
[10-5.音再生処理]

続いて、図15のステップS615として実行する音再生処理について説明する。
前述のように音再生処理は、音データ登録情報としてワークにセットされた情報に基づき音源IC42dに音出力を実行させる処理となる。
図34は、音再生処理についての説明図である。
まず、CPU42aは、ループ処理LP3として、音データ登録情報の音チャネルaCH0〜aCH15のそれぞれについてステップS1500〜S1520の処理を行う。以下、処理対象とする音チャネルaCHを「aCHn」と表記して説明する。
ステップS1500ではCPU42aは、ボリュームMAXエラーフラグを確認する。なお、ボリュームMAXエラーフラグは、先のステップS612のエラー処理(図8参照)で設定されるフラグであり、前述のように0x5AがボリュームMAXエラーが発生中である旨を、また0x00が発生中ではない旨をそれぞれ表す。
ボリュームMAXエラーフラグが0x5Aであれば、ステップS1521に進みワークの2次ボリュームについて音チャネルaCH0〜14(エラー音以外)=0x00、音チャネルaCH15(エラー音)=0x80に書き換えを行い、ステップS1501に進む。
一方、ボリュームMAXエラーフラグが0x00であれば、ステップS1521によるワークの2次ボリュームの書き換えは行わずにステップS1501に進む。
ステップS1501ではCPU42aは、対象の音チャネルaCHnに2次ボリュームの値を出力する。即ち、音データ登録情報の音チャネルaCHにセットされている2次ボリュームの値を、音源IC42dにおける音チャネルaCHn用の2次ボリュームレジスタに出力する。
前述のように2次ボリュームの値は、通常はボリュームスイッチの状態に応じた値が音データ登録情報の全音チャネルaCHにセットされる。或いは、シナリオとして、或る音チャネルaCHの2次ボリュームの変化を指示する音コントロールの情報が記述されていた場合には、該音コントロールの情報に記述された2次ボリュームの値が、音データ登録情報における該音コントロールの情報で指示された音チャネルaCHにセットされている。また、ボリュームMAXエラーが発生中であれば、上記のステップS1521の処理によって音チャネルaCH0〜14には「0」が、音チャネルaCH15にはMAX値がセットされている。
次いで、CPU42aはステップS1502では、SUBボリューム0,1に値「0x00」を出力する。即ち、音チャネルaCHnの「SUBボリューム0」「SUBボリューム1」の各レジスタに値「0x00」を出力する。前述のように本実施の形態ではSUBボリュームは使用しないものである。
ステップS1503ではCPU42aは、ワークの音チャネルaCHnに音データ(2次ボリューム以外の音データ)があるか否かを判別する。音データがなければ当該音チャネルaCHnについての処理は終了となる。
一方、音データがあった場合は、ステップS1504に進んで差し替え要求であるか否かを判別する。
ここで、本実施の形態では、図24に示した音データ登録情報の上位2バイト(「1次ボリューム遷移量」「1次ボリューム」)の値を用いて、フレーズの差し替え要求が可能とされている。具体的には、音データ登録情報の上位2バイトが所定値(例えば本例では「0x5A5A」であるとする)であれば、それをフレーズの差し替え要求と解釈するものである。
ステップS1504では、音チャネルaCHnにセットされたデータの上位2バイトが所定値「0x5A5A」であるか否かを判別することで、フレーズの差し替え要求であるか否かを判別する。
差し替え要求である場合、CPU42aはステップS1505でフレーズ番号の書き換えを行い、ステップS1506に進む。フレーズ番号の書き換えは、音チャネルaCHnにセットされたデータの「フレーズ番号hi」及び「フレーズ番号low」の値を音源IC42dの音チャネルaCHnのフレーズ番号のレジスタに出力することで行う。
一方、差し替え要求でなければ、ステップS1505を経由せずステップS1506に進む。
ステップS1506ではCPU42aは、遷移量変化要求又はボリューム変化要求があるか否かを判別する。即ち、音チャネルaCHnの遷移量変化frzVq又はボリューム変化rsv1の何れかに「1」がセットされているか否かを判別する。
ここで、音データ登録情報における遷移量変化frzVqの値は、フェード系の音コントロールの情報に基づいて音の登録処理(S1035)が実行された場合には「1」がセットされ、フェード系以外(つまり2次ボリュームの変化指示)の音コントロールの情報やBGM、SE1、SE2、エラー音の情報に基づいて音の登録処理が実行された場合には「0」がセットされていることになる。
一方、ボリューム変化rsv1(1次ボリュームを変化させるか否か)は、フェード系の音コントロールの情報に基づいて音の登録処理が実行された場合と共に、BGM、SE1、SE2、エラー音の情報やフェード系の音コントロールの情報に基づいて音の登録処理が実行された場合に「1」がセットされる。そして、フェード系以外の音コントロールの情報に基づいて音の登録処理が実行された場合には「0」がセットされる。
これらの点からも理解されるように、フェード系の音コントロールの情報に基づく音データが登録されている場合のみでなく、BGM、SE1、SE2、エラー音の情報に基づく音データが登録されている場合にも、以降のステップS1509又はS1511により1次ボリューム遷移量と1次ボリュームの情報が音源IC42dに対して出力されることになる。
遷移量変化要求又はボリューム変化要求がある場合、CPU42aはステップS1507に進み、音チャネルaCHnがステレオ再生であるか否か、つまりはステレオfrzStの値が「1」であるか否かを判別する。
音チャネルaCHnがステレオ再生でなければ、ステップS1509に進んで音源IC42dの音チャネルaCHnに1次ボリューム遷移量と1次ボリュームを出力し、さらにステップS1510で音源IC42dの音チャネルaCHnにパンポットの出力を行って、ステップS1513に進む。
ここで、パンポットの出力としては、音源IC42dにおける音チャネルaCHn用の「左右パンポット」「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」の各レジスタにそれぞれ値を出力する。なお、本例では音源IC42dのパン機能は使用しないものとされ、従ってステップS1510では全て「0」(0x00)を出力する。
一方、音チャネルaCHnがステレオ再生であれば、ステップS1508に進んで音チャネルaCHnが偶数であるか否かを判別する。
音チャネルaCHnが偶数であれば、ステップS1511に進んで音チャネルaCHnと音チャネルaCHn+1とに1次ボリューム遷移量と1次ボリュームを出力し、ステップS1512で音チャネルaCHnと音チャネルaCHn+1とにパンポットの出力を行って、ステップS1513に進む。
ここで、本実施形態の場合、偶数の音チャネルaCHnとその次の奇数の音チャネルaCHn+1の「左右パンポット」のレジスタをステレオ再生指示に用いる。具体的に、この場合の音源IC42dは、偶数の音チャネルaCHn(ステレオ再生のLch側に該当)とその次の奇数の音チャネルaCHn+1(ステレオ再生のRch側に該当)の「左右パンポット」のレジスタにそれぞれ所定値がセットされることで、これら音チャネルaCHnと音チャネルaCHn+1とがステレオ再生であることを認識するように構成されている。より具体的に、この場合の音源IC42dは、偶数の音チャネルaCHnの「左右パンポット」のレジスタに「0x81」がセットされ、且つその次の奇数の音チャネルaCHn+1の「左右パンポット」のレジスタに「0x82」がセットされることで、これら音チャネルaCHnと音チャネルaCHn+1とがステレオ再生である旨を認識するように構成されている。
このことに応じ、ステップS1512では、音チャネルaCHnと音チャネルaCHn+1とに対するパンポットの出力処理として、音チャネルaCHnの「左右パンポット」のレジスタには「0x81」を、音チャネルaCHn+1の「左右パンポット」のレジスタには「0x82」をそれぞれ出力する。
なお、前述のように本実施形態では音源IC42dのパン機能は使用しないので、ステップS1512では「左右パンポット」以外の「左右パンポット遷移量」「上下パンポット」「上下パンポット遷移量」の各レジスタにはそれぞれ「0x00」を出力する。
また、ステップS1508において、音チャネルaCHnが偶数でなかった場合は、ステップS1520に進み、ワークの音チャネルaCHnの音データをクリアし、当該音チャネルaCHnについての処理を終了する。
即ち、音チャネルaCHnがステレオ再生で且つ奇数であった場合には、当該音チャネルaCHnに登録されたフレーズ番号は音源IC42dに出力されず(なお、1次ボリューム遷移量及び1次ボリュームについては偶数aCHnについての処理であるS1511で既に出力されている)、当該音チャネルaCHnの登録音データがクリアされることとなる。この場合の音源IC42dは、偶数の音チャネルaCHnについての処理でセットされたフレーズ番号に基づき再生すべきLch・Rchのそれぞれのフレーズデータを特定するので、ワークの奇数の音チャネルaCHn+1に登録されたフレーズ番号の音源IC42dへの指示は不要である。
また、先のステップS1506で、遷移量変化要求又はボリューム変化要求がなければ、CPU42aは、ステップS1507〜S1512の処理は経ず、ステップS1513に進む。
ステップS1513ではCPU42aは、フレーズ変化要求があるか否か、つまりはフレーズ変化rsv0の値が「1」であるか否かを判別する。
フレーズ変化要求がなければ、ステップS1520で音チャネルaCHnの音データをクリアして当該音チャネルaCHnについての処理を終了する。即ち、フレーズ変化要求がない場合はワークの音チャネルaCHnにセットされたフレーズ番号の音源IC42dへの出力(S1515)は行われない。
一方、フレーズ変化要求があれば、ステップS1514で音チャネルaCHnがステレオ且つ奇数であるか否かを判別する。音チャネルaCHnがステレオ且つ奇数であれば、ステップS1520で音チャネルaCHnの音データをクリアして当該音チャネルaCHnについての処理を終了する。
ステップS1514で音チャネルaCHnがステレオ且つ奇数でなければ、ステップS1515に進んで音チャネルaCHnにフレーズ番号を出力する。即ち、ワークの音チャネルaCHnに登録されたフレーズ番号hiとフレーズ番号lowとで成るフレーズ番号の情報を、音源IC42dの音チャネルaCHn用のフレーズ番号レジスタに出力する。
次のステップS1516ではCPU42aは、ループ要求があるか否か、つまりはループfrzLpの値が「1」であるか否かを判別する。ループ要求があれば、ステップS1517で音源IC42dの音チャネルaCHnにループ回数0xFF(無限ループ)を出力してステップS1519に進み、ループ要求がなければステップS1518で音源IC42dの音チャネルaCHnにループ回数0x00(ループなし)を出力してステップS1519に進む。
ステップS1519ではCPU42aは、音チャネルaCHnを再生出力指示する。すなわち、音チャネルaCHnにセットしたデータに基づく再生指示を音源IC42dに対して行う。
次いでCPU42aは、ステップS1520でワークの音チャネルaCHnの音データをクリアして、当該音チャネルaCHnについての処理を終了する。
CPU42aは、以上で説明したステップS1501〜S1520の処理を、ループ処理LP3により音チャネルaCH0〜aCH15まで順次行う。これにより、ステップS615の音再生処理は終了となる。
このような音再生処理によって、音データ登録情報に登録された情報に基づく音出力が実行されて、シナリオに応じた音演出が実現される。
ここで、上記のように本実施形態では、偶数とその次の奇数の音チャネルaCHの「左右パンポット」のレジスタに所定値をセットすることで、音源IC42dへのステレオ再生指示を行うものとしているが、このことで、音源IC42dにステレオ再生/モノラル再生の指示を行うためのレジスタを設けずとも、ステレオ再生/モノラル再生の指示を適正に行うことができる。即ち、音源IC42dのレジスタ数を削減することができる。また同時に、音源IC42dに対するステレオ再生/モノラル再生の指示をパンポットの出力処理で実現できるので、ステレオ再生/モノラル再生の指示処理を別途に行う必要がなくなり、その分処理負担の軽減が図られる。
なお、上記では「左右パンポット」の項目を用いてステレオ/モノラル再生の指示を行う場合を例示したが、ステレオ/モノラル再生の指示は「左右パンポット」以外の所定の音量制御に係る項目(音量制御項目)を用いて行われればよく、これによってステレオ/モノラル再生の指示は当該所定の音量制御項目についての指示情報の出力処理が兼ねるものとなるため、別途にステレオ/モノラル再生の指示情報を出力する処理を不要とでき、制御負荷の軽減が図られる。
また、上記説明からも理解されるように、本実施形態では、音源IC42dは、連続した2つのチャネルのうち番号の若いチャネル側にセットされたフレーズ番号の情報(再生フレーズ指示情報)に基づきステレオ再生されるべきLch側とRch側のフレーズを取得し、それらのフレーズについてのステレオ再生を行うように構成されている。そして、これに対応し、CPU42aは、前記のステレオ再生指示と共に、前記番号の若いチャネル側に対してフレーズ番号の情報をセットするものとしている。
このような構成とすることで、フレーズのステレオ再生の実現にあたり、奇数チャネル側(番号が若くない側のチャネル)への再生フレーズ指示情報の出力処理が不要となり、従って制御負荷のさらなる低減が図られる。
ここで、図34の音再生処理では、ステップS1500で都度ボリュームMAXエラーフラグを確認し、ボリュームMAXエラーの発生中であればステップS1521でワークの2次ボリュームの書き換えを行うものとしている。すなわち、ボリュームMAXエラーが発生中である場合には、ステップS1521の書き換え処理が16msごとに都度行われることになり、ワークの2次ボリューム(エラー音以外の音チャネルaCH)は都度「0x00」がセットされる。これにより、ボリュームMAXエラー中には、エラー音以外の音チャネルaCHが消音状態で維持されることになる。
<11.実施形態の振動演出>

本実施形態のスロットマシンでは、スピーカ30c、30d(中低音用のスピーカ)からの出力音を利用して、スロットマシンの少なくとも一部を振動させる振動演出が行われる。
具体的に、本例では、音源IC42dが読み出し可能なメモリにおいて、SEのフレーズデータとして振動用のフレーズデータが格納されており、該振動用のフレーズデータとしては、スロットマシンの少なくとも一部である特定部が有する固有振動数の周波数成分を含んだ音データが格納される。より具体的に、本例では、振動演出としてスロットマシンの筐体(本体ケース1と前面パネル2とで形成される筐体)全体を振動させる演出を行うものとされ(つまり特定部=筐体全体)、振動用のフレーズデータとしては、該筐体の固有振動数の周波数成分を含んだ音データが用いられる。
本例において、スロットマシンの筐体の固有振動数は約85Hzとされている。
また、本例では、振動用のフレーズデータとしては、周波数掃引(スイープ)された音データを用いる。具体的に、本例における振動用のフレーズデータは、55Hz〜100Hzの範囲内で周波数掃引された音データが用いられる。
さらに、掃引としては、往復掃引が行われる。具体的に本例では、上記した55Hz〜100Hzの掃引範囲内で周波数の上昇/下降が繰り返される音データが用いられる。
ここで、往復掃引の周期、すなわち周波数が55Hzから100Hzを経て再び55Hzに戻るまでの往復期間の長さは0.05秒以下としている。具体的に、該往復期間の長さは0.03秒(55Hz→100Hz=0.015秒と、100Hz→55Hz=0.015秒の合計)とし、振動用のフレーズデータとしてはこのような往復期間長による往復掃引が所定秒間(例えば1秒間や2秒間等)繰り返された音データが用いられる。
本実施形態において、振動用に出力する音には上記のように55Hz〜100Hzの周波数成分が含まれるが、可聴帯域の下限周波数は20Hzであり、従って本実施形態では振動用の音として可聴帯域の周波数成分を含む音が用いられる。
先の図5等を参照して説明したように、本例のスロットマシンにおいては、前面パネル2が閉状態において、スピーカ30c、30dの背面側の少なくとも一部は本体ケース1内側に形成される閉空間に露呈されている。このため、上記のような振動用のフレーズデータに基づく音がスピーカ30c、30dより出力されることで、スピーカ30c、30d背面側からの放音に応じて該閉空間内における空気が振動し、スロットマシンの筐体全体を振動させることが可能とされる。
従って、振動対象部としての特定部が筐体全体とされる場合において、スピーカ30c、30d背面から特定部まで振動伝達のための管路を形成したり、共鳴子を設けたりする必要がなくなり、特定部を振動させるための構成の簡易化、及びコスト削減を図ることができる。
また、本実施形態では、周波数掃引された音を出力するが、このような掃引を行うことで振動の振れ幅の調整が可能となり、振動の振幅調整の容易化が図られる。
さらに、本実施形態では往復掃引を行うが、これにより周波数の上昇側、下降側何れか片方のみの片側掃引とする場合と比較して安定した振動を発生させることができる。
また、本実施形態では振動用の音が可聴帯域の周波数成分を含むが、これにより、遊技者に対し振動と同時に低音を知覚させることが可能となり、振動演出の迫力感を増すことができる。
図35のフローチャートを参照し、振動用の音出力に係るCPU42aの処理過程の例を説明する。
先ず、演出制御基板42におけるCPU42aは、ステップF01で、振動契機の演出制御コマンドを受信する。振動契機の演出制御コマンドの例としては、前述した期待感演出コマンド等を挙げることができる。この期待感演出コマンドは、前述のように、遊技開始時など1ゲーム中の所定タイミングで実行される期待感演出の内容を指示するためのコマンドである。
次いで、CPU42aはステップF02において、コマンド解析及びコマンド対応処理を行う。つまり、このステップF02において、ステップF01で受信した振動契機の演出制御コマンドについてのコマンド解析処理(ステップS614)やコマンド対応処理(ステップS806)が行われる(図15,図17,図18参照)。このとき、振動契機の演出制御コマンドについての各コマンド処理(S830:図18A参照)においては、振動音の出力に対応したシナリオの登録処理が含まれており、従ってステップF02の処理が実行されることで、RAM42cのワークには、所定のタイミングで振動用のフレーズデータを所定時間再生出力するためのシナリオデータが登録される。
続くステップF03でCPU42aは、登録シナリオに基づく音データ登録情報のセット処理を行う。すなわち、ステップF02の処理で登録されたシナリオデータについて、図21や図22で示したシナリオ更新処理(S615)やサブシナリオの更新処理(S1008)を実行することで、RAM42cのワークにおける音データ登録情報(図24)に振動用のフレーズの再生出力に係る音データがセットされる。
ここで、本例では、振動用のフレーズはSE(SE1、SE2の何れであってもよい)の音種別に分類しており、従って該フレーズの再生出力に係る音データは、音データ登録情報におけるSEの音チャネルaCH(本例では音チャネルaCH2〜aCH14の何れか)に対してセットされる。
さらに、次のステップF04でCPU42aは、音再生処理(S616:図15及び図34参照)を行う。これにより、音データ登録情報にセットされた音データに基づき、音源IC42dがフレーズの再生出力を行い、この結果、ステップF05と示すように、振動用の音出力がスピーカ30c、30dを介して行われる。
ここで、上記のように振動用のフレーズを再生出力するにあたり、本例では、エラー音の音チャネルaCH以外の音チャネルaCHをマスクする。具体的には、振動用のフレーズの音データをセットしたSEの音チャネルaCH(音チャネルaCH2〜aCH14の何れか:ステレオ再生とする場合は2チャネル分)、及びエラー音の音チャネルaCHである音チャネルaCH15を除いた全ての音チャネルaCHをマスクする。このマスクについては、ワークの音データ登録情報における該当する音チャネルaCHの2次ボリュームを「0x00」にすることで実現できる。
具体的に、このような2次ボリュームによるマスクは、振動用の音出力を指示するシナリオデータから参照される音/モータサブシナリオテーブル(図26参照)として、振動用のフレーズの再生出力期間に同期して対象の音チャネルaCHの2次ボリューム=「0x00」とすることを指示する音コントロールの情報を格納したテーブルを用意しておくことで実現できる。
或いは、マスクのための2次ボリュームの設定は、上記のようにシナリオに基づき行うことに限定されない。例えば、ステップS616の音再生処理において、音データ登録情報に振動用のフレーズデータがセット中か否かを確認し、セット中であれば、該フレーズデータがセット中の音チャネルaCHとエラー音の音チャネルaCHを除いた全ての音チャネルaCHの2次ボリュームとして「0x00」をセットする処理を設けることで、振動用のフレーズデータの再生出力中に振動音とエラー音以外の音がマスクされるようにすることができる。
ここで、確認のため述べておくと、ステップS616の音再生処理は、16msごとに繰り返し実行される処理である。
なお、振動音の出力の際に他の音チャネルaCHの音をマスクすることは必須ではない。
また、本例では、振動用のフレーズの再生出力中にボリュームMAXエラーが生じた際には、振動用のフレーズの音チャネルaCHを含む、エラー音以外の全ての音チャネルaCHがマスクされる。これは、ステップS616の音再生処理において、ステップS1500及びS1521の処理が設けられていることにより実現される。なお、これらステップS1500及びS1521の処理内容については既に説明済みであるため重複説明は避ける。
なお、対象とする音チャネルaCHのマスクの形態としては上記で例示した消音の形態に限らず、音量を「0x00」以外の音量に下げる小音の形態とすることもできる。
また、エラー発生時におけるエラー音以外のマスクは、シナリオにより実現することもできる。
図36のフローチャートは、その場合におけるCPU42aの処理の流れを表している。
先ず、CPU42aはステップF11で、エラー通知の演出制御コマンドを受信し、続くステップF12でコマンド解析及びコマンド対応処理を実行する。このステップF12の処理により、エラー音出力のシナリオ登録が行われる。本例の場合、各種エラーが発生した際のエラー報知のためのシナリオ登録処理は、ステップS612のエラー処理(図15参照)において行われる。この場合、登録されたシナリオから参照される音/モータサブシナリオテーブルには、エラー音のフレーズの再生出力に係る音データと共に、該エラー音の出力期間に同期してエラー音以外の音チャネルaCHの2次ボリュームを「0x00」とする音コントロールの情報が格納されている。
次いで、CPU42aはステップF13で、登録シナリオに基づく音データ登録情報のセット処理を行う。上記のようにこの場合のシナリオから参照される音/モータサブシナリオテーブルには、エラー音以外の音チャネルaCHの2次ボリュームを「0x00」とする音コントロールの情報が格納されているため、このステップF13のセット処理が行われることで、音データ登録情報においては、エラー音以外の音チャネルaCHの2次ボリュームの値として「0x00」がセットされ、出力音のマスクが施される。
続くステップF14でCPU42aは音再生処理(S616)を行う。これにより、ステップF15と示すように、エラー音の再生出力が行われる。このとき、音再生処理が上記した音データ登録情報に基づき実行されることで、エラー音以外の音チャネルaCHは消音状態に制御される。
<12.まとめ及び変形例>

以上で説明してきたように実施形態の遊技機(スロットマシン)は、放音を行うスピーカ部(スピーカ30c、30d)と、スピーカ部の駆動制御を行う駆動制御手段(演出制御基板42)と、を備え、駆動制御手段は、遊技機における少なくとも一部である特定部が有する固有振動数の周波数成分を含んだ音信号に基づきスピーカ部を駆動制御して、特定部を振動させている。
これにより、音出力に用いるスピーカを振動源として用いることができるため、振動源となるモータ等のアクチュエータを別途に設ける必要がなくなる。
従って、部品点数削減や、それに伴うコスト削減を図ることができる。
また、実施形態の遊技機においては、駆動制御手段は、周波数掃引された音信号に基づきスピーカ部を駆動制御している。
振動用の音の周波数を掃引することで、振動の振れ幅の調整が可能となる。
従って、振動の振幅調整の容易化を図ることができる。
さらに、実施形態の遊技機においては、駆動制御手段は、周波数が往復掃引された音信号に基づきスピーカ部を駆動制御している。
これにより、周波数の掃引は、周波数の上昇側の掃引と下降側の掃引とが組み合わされた往復掃引の形態で行われる。
従って、周波数の上昇側、下降側何れか片方のみの片側掃引とする場合と比較して安定した振動を発生させることができる。
さらにまた、実施形態の遊技機においては、駆動制御手段は、往復掃引として、0.05秒以下の往復期間による掃引が繰り返された音信号に基づきスピーカ部を駆動制御している。
往復期間を長くする(つまり掃引速度を遅くする)と振動の振り幅が大きくなり、短くする(掃引速度を速くする)と振動の振り幅は小さくなる。
掃引の往復期間を適切に設定することで、振動の大きさの適正化を図ることができる。
また、実施形態の遊技機においては、前面側が開口された箱状の本体ケース(同1)と、本体ケースに対して開閉自在に取り付けられ、閉状態において開口を閉塞する前面パネル(同2)とを備え、スピーカ部は、背面側の少なくとも一部が、閉状態において本体ケース内側に形成される閉空間に露呈されるように前面パネルに設けられている。
これにより、スピーカ部背面側からの放音に応じて本体ケース内側の閉空間内における空気が振動し、遊技機の筐体全体を振動させることが可能とされる。
従って、振動対象部としての特定部が筐体全体とされる場合において、スピーカ部背面から特定部まで振動伝達のための管路を形成したり、共鳴子を設けたりする必要がなくなり、特定部を振動させるための構成の簡易化、及びコスト削減を図ることができる。
さらに、実施形態の遊技機においては、駆動制御手段は、可聴帯域の周波数成分を含む音信号に基づきスピーカ部を駆動制御して特定部を振動させている。
これにより、遊技者に対し振動と同時に低音を知覚させることが可能とされる。
従って、振動演出の迫力感を増すことができる。
さらにまた、実施形態の遊技機においては、駆動制御手段は複数系統の音信号を同時再生可能とされ、特定部を振動させるための音である振動音と、エラー報知のための音であるエラー音と、振動音とエラー音以外の音である第三音とに少なくとも区分される音の種別ごとに、再生に用いる系統が定められており、駆動制御手段は、振動音の音信号を再生出力する際、複数系統のうち振動音とエラー音以外の系統をマスクする処理を行っている。
これにより、エラーが検出された場合における報知音の出力を可能としながら、振動音以外の音をマスクすることが可能とされる。
従って、マスクによる振動演出の強調を図りながら、エラーの確実な報知を実現することができる。
また、実施形態の遊技機においては、駆動制御手段は、エラーが検出された場合は、複数系統のうちエラー音の系統を除く全系統をマスクする処理を行っている。
これにより、エラー検出時には特定部が振動しないように図られる。
従って、エラー報知が行われているにも拘わらず演出のための振動が行われてしまうという事態の発生防止を図ることができ、遊技者の混乱防止を図ることができる。
なお、本発明は上記で例示した具体例に限定されず、多様な変形例や適用例が考えられるものである。
例えば、上記では、本発明がスロットマシンに適用される例を示したが、本発明は図柄を変位させる表示が可能な可変表示手段を備える遊技機に広く好適に適用できる。可変表示手段としては、上記した回転リール4を備えたものに限らず、液晶ディスプレイなどの表示画面上で図柄としての画像を変位可能に表示するように構成されたものであってもよい。
また、本発明は、例えばパチンコ遊技機等、スロットマシン以外の遊技機にも好適に適用できる。
パチンコ遊技機の場合、筐体は木製の外枠と該外枠に対し開閉自在に取り付けられた前枠とで構成され、筐体背面が閉塞されていない構造とされるため、前枠に設けたスピーカ部の放音に基づき筐体全体を振動させる構成は採り難い。パチンコ遊技機の場合には、筐体全体ではなく特定の一部を振動させる構成を採ることが考えられる。その場合、振動伝達の効率化を図るため、スピーカ部から上記特定の一部(特定部)まで管路を形成することもできる。また、この際、特許文献1に開示されるような共鳴子を設けて特定部のみを選択的且つ効率的に振動させるようにしてもよい。
また、上記では可聴帯域の周波数成分を含む音信号により振動を発生させる例を挙げたが、可聴帯域よりも低い周波数成分を含む音信号を用いて振動を発生させることもできる。また、周波数の掃引は、可聴帯域から非可聴帯域、又は非可聴帯域から可聴帯域に周波数を変化させる態様で行うこともできる。
1 本体ケース、
2 前面パネル、
3 図柄回転ユニット、
4a〜4c 回転リール(回胴)、
16 マックス投入ボタン、
17 スタートレバー、
18a〜18c 停止ボタン、
30a〜30d スピーカ、
40 主制御基板、
42 演出制御基板、
42a CPU、
42b ROM、
42c RAM、
42d 音源IC、
43 演出インターフェース基板、
47 スピーカ中継基板、
80 コントローラ、
80a CPU、
80c RAM、
72a 設定キースイッチ、
72b リセットスイッチ

Claims (8)

  1. 放音を行うスピーカ部と、
    前記スピーカ部の駆動制御を行う駆動制御手段と、を備え、
    前記駆動制御手段は、
    遊技機における少なくとも一部である特定部が有する固有振動数の周波数成分を含んだ音信号に基づき前記スピーカ部を駆動制御して、前記特定部を振動させる
    遊技機。
  2. 前記駆動制御手段は、
    周波数掃引された前記音信号に基づき前記スピーカ部を駆動制御する
    請求項1に記載の遊技機。
  3. 前記駆動制御手段は、
    周波数が往復掃引された前記音信号に基づき前記スピーカ部を駆動制御する
    請求項2に記載の遊技機。
  4. 前記駆動制御手段は、
    前記往復掃引として、0.05秒以下の往復期間による掃引が繰り返された前記音信号に基づき前記スピーカ部を駆動制御する
    請求項3に記載の遊技機。
  5. 前面側が開口された箱状の本体ケースと、
    前記本体ケースに対して開閉自在に取り付けられ、閉状態において前記開口を閉塞する前面パネルとを備え、
    前記スピーカ部は、背面側の少なくとも一部が、前記閉状態において前記本体ケース内側に形成される閉空間に露呈されるように前記前面パネルに設けられた
    請求項1から請求項4の何れかに記載の遊技機。
  6. 前記駆動制御手段は、
    可聴帯域の周波数成分を含む前記音信号に基づき前記スピーカ部を駆動制御して前記特定部を振動させる
    請求項1から請求項5の何れかに記載の遊技機。
  7. 前記駆動制御手段は複数系統の音信号を同時再生可能とされ、
    前記特定部を振動させるための音である振動音と、エラー報知のための音であるエラー音と、前記振動音と前記エラー音以外の音である第三音とに少なくとも区分される音の種別ごとに、再生に用いる前記系統が定められており、
    前記駆動制御手段は、
    前記振動音の音信号を再生出力する際、前記複数系統のうち前記振動音と前記エラー音以外の前記系統をマスクする処理を行う
    請求項1に記載の遊技機。
  8. 前記駆動制御手段は、
    エラーが検出された場合は、前記複数系統のうち前記エラー音の系統を除く全系統をマスクする処理を行う
    請求項7に記載の遊技機。
JP2019052515A 2019-03-20 2019-03-20 遊技機 Active JP7232091B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019052515A JP7232091B2 (ja) 2019-03-20 2019-03-20 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019052515A JP7232091B2 (ja) 2019-03-20 2019-03-20 遊技機

Publications (2)

Publication Number Publication Date
JP2020151204A true JP2020151204A (ja) 2020-09-24
JP7232091B2 JP7232091B2 (ja) 2023-03-02

Family

ID=72556675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019052515A Active JP7232091B2 (ja) 2019-03-20 2019-03-20 遊技機

Country Status (1)

Country Link
JP (1) JP7232091B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022094350A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094352A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094353A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094351A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009089741A (ja) * 2007-10-03 2009-04-30 Actuni Co Ltd 遊技媒体収容箱、及び遊技媒体管理システム
JP2010075400A (ja) * 2008-09-25 2010-04-08 Universal Entertainment Corp 遊技機
JP2012202841A (ja) * 2011-03-25 2012-10-22 Sii Nanotechnology Inc カンチレバーの振動特性測定方法
JP2015112184A (ja) * 2013-12-10 2015-06-22 株式会社三洋物産 遊技機
JP2018051456A (ja) * 2016-09-27 2018-04-05 オムロンヘルスケア株式会社 超音波振動子駆動装置およびメッシュ式ネブライザ
JP2018064867A (ja) * 2016-10-21 2018-04-26 サミー株式会社 遊技機

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009089741A (ja) * 2007-10-03 2009-04-30 Actuni Co Ltd 遊技媒体収容箱、及び遊技媒体管理システム
JP2010075400A (ja) * 2008-09-25 2010-04-08 Universal Entertainment Corp 遊技機
JP2012202841A (ja) * 2011-03-25 2012-10-22 Sii Nanotechnology Inc カンチレバーの振動特性測定方法
JP2015112184A (ja) * 2013-12-10 2015-06-22 株式会社三洋物産 遊技機
JP2018051456A (ja) * 2016-09-27 2018-04-05 オムロンヘルスケア株式会社 超音波振動子駆動装置およびメッシュ式ネブライザ
JP2018064867A (ja) * 2016-10-21 2018-04-26 サミー株式会社 遊技機

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022094350A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094352A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094353A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP2022094351A (ja) * 2020-12-14 2022-06-24 株式会社大都技研 遊技台
JP7166032B2 (ja) 2020-12-14 2022-11-07 株式会社大都技研 遊技台
JP7166029B2 (ja) 2020-12-14 2022-11-07 株式会社大都技研 遊技台
JP7166030B2 (ja) 2020-12-14 2022-11-07 株式会社大都技研 遊技台
JP7166031B2 (ja) 2020-12-14 2022-11-07 株式会社大都技研 遊技台

Also Published As

Publication number Publication date
JP7232091B2 (ja) 2023-03-02

Similar Documents

Publication Publication Date Title
JP7232091B2 (ja) 遊技機
JP2013017525A (ja) 遊技機
JP2013017523A (ja) 遊技機
JP2018191739A (ja) 遊技機
JP7345924B2 (ja) 遊技機
JP2015062764A (ja) スロットマシン及び遊技機
JP2018191735A (ja) 遊技機
JP2010075477A (ja) 遊技機
JP2014158728A (ja) スロットマシン及び遊技機
JP6234894B2 (ja) 遊技機
JP2014144265A (ja) 遊技機
JP7345925B2 (ja) 遊技機
JP6188509B2 (ja) 遊技機
JP2018191736A (ja) 遊技機
JP6234820B2 (ja) 遊技機
JP6188582B2 (ja) 遊技機
JP6322319B2 (ja) 遊技機
JP2016039944A (ja) 遊技機
JP6140230B2 (ja) 遊技機
JP2015062762A (ja) スロットマシン及び遊技機
JP6230551B2 (ja) 遊技機
JP6173223B2 (ja) 遊技機
JP6173142B2 (ja) 遊技機
JP6427617B2 (ja) 遊技機
JP6234948B2 (ja) 遊技機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221018

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20221018

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: 20230207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230217

R150 Certificate of patent or registration of utility model

Ref document number: 7232091

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150