(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-25
(45)【発行日】2024-02-02
(54)【発明の名称】遊技機
(51)【国際特許分類】
A63F 7/02 20060101AFI20240126BHJP
【FI】
A63F7/02 326Z
(21)【出願番号】P 2022165448
(22)【出願日】2022-10-14
(62)【分割の表示】P 2018149234の分割
【原出願日】2018-08-08
【審査請求日】2022-10-14
(73)【特許権者】
【識別番号】391010943
【氏名又は名称】株式会社藤商事
(74)【代理人】
【識別番号】100100376
【氏名又は名称】野中 誠一
(72)【発明者】
【氏名】岩田 雄真
【審査官】森川 能匡
(56)【参考文献】
【文献】特開2014-087401(JP,A)
【文献】特開2009-018122(JP,A)
【文献】特開2010-167034(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 7/02
(57)【特許請求の範囲】
【請求項1】
所定の動作サイクルを有して間欠的に動作し、一又は複数の表示装置を使用した画像演出を中心的に制御する演出制御手段と、
前記演出制御手段が発行する画像コマンドリストに記載された各種の画像コマンドに基づいて動作して、表示装置の一フレーム分の画像データを生成して、表示装置に出力する画像生成手段と、を有して構成された遊技機であって、
前記画像コマンドリストに列記される画像コマンド
には、画像データ
を生成
するレンダリング動作
の動作内容を規定する描画コマンドと、CGデータ
をデコードするデコード動作
の動作内容を規定するデコードコマンドと、
割込み動作など、レンダリング動作やデコード動作以外の前記画像生成手段
の内部制御動作
を規定する制御コマンドとが含まれ、
前記描画コマンド、
前記デコードコマンド、及び
前記制御コマンドは、全て32ビットの整数倍の可変長で構成され、
前記画像生成手段には、
前記演出制御手段によって、前記画像コマンドリストの全部又は一部が、一画像コマンドずつ順番に書き込まれる、特定一の書込みレジスタと、
前記書込みレジスタに書込まれた画像コマンドが、自動的に蓄積されるFIFO(First In First Out)構造の画像コマンドバッファと、
が設けられていることを特徴とする遊技機。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、遊技動作に起因する抽選処理を行い、その抽選結果に対応する画像演出を実行する遊技機に関する。
【背景技術】
【0002】
パチンコ機などの弾球遊技機は、遊技盤に設けた図柄始動口と、複数の表示図柄による一連の図柄変動態様を表示する図柄表示部と、開閉板が開閉される大入賞口などを備えて構成されている。そして、図柄始動口に設けられた検出スイッチが遊技球の通過を検出すると入賞状態となり、遊技球が賞球として払出された後、図柄表示部では表示図柄が所定時間変動される。その後、7・7・7などの所定の態様で図柄が停止すると大当り状態となり、大入賞口が繰返し開放されて、遊技者に有利な遊技状態を発生させている。
【0003】
このような遊技状態を発生させるか否かは、図柄始動口に遊技球が入賞したことを条件に実行される大当り抽選で決定されており、上記の図柄変動動作は、この抽選結果を踏まえたものとなっている。例えば、抽選結果が当選状態である場合には、リーチアクションなどと称される演出動作を20秒前後実行し、その後、特別図柄を整列させている。一方、ハズレ状態の場合にも、同様のリーチアクションが実行されることがあり、この場合には、遊技者は、大当り状態になることを強く念じつつ演出動作の推移を注視することになる。そして、図柄変動動作の終了時に、停止ラインに所定図柄が揃えば、大当り状態であることが遊技者に保証されたことになる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
この種の遊技機では、各種の演出を豊富化したい要請が強い。
【0005】
この発明は、上記の課題に鑑みてなされたものであって、画像演出を豊富化できる遊技機を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の目的を達成するため、本発明は、所定の動作サイクルを有して間欠的に動作し、一又は複数の表示装置を使用した画像演出を中心的に制御する演出制御手段と、前記演出制御手段が発行する画像コマンドリストに記載された各種の画像コマンドに基づいて動作して、表示装置の一フレーム分の画像データを生成して、表示装置に出力する画像生成手段と、を有して構成された遊技機であって、前記画像コマンドリストに列記される画像コマンドには、画像データを生成するレンダリング動作の動作内容を規定する描画コマンドと、CGデータをデコードするデコード動作の動作内容を規定するデコードコマンドと、割込み動作など、レンダリング動作やデコード動作以外の前記画像生成手段の内部制御動作を規定する制御コマンドとが含まれ、前記描画コマンド、前記デコードコマンド、及び前記制御コマンドは、全て32ビットの整数倍の可変長で構成され、前記画像生成手段には、前記演出制御手段によって、前記画像コマンドリストの全部又は一部が、一画像コマンドずつ順番に書き込まれる、特定一の書込みレジスタと、前記書込みレジスタに書込まれた画像コマンドが、自動的に蓄積されるFIFO(First In First Out)構造の画像コマンドバッファと、が設けられている。
【発明の効果】
【0012】
上記した本発明の遊技機によれば、画像コマンドリストの処理に関し、画像生成手段と、画像生成手段が並列動作可能であるので、画像演出の内容を多様化でき、画像演出を豊富化することができる。
【図面の簡単な説明】
【0013】
【
図2】
図1のパチンコ機の遊技盤を図示した正面図である。
【
図3】実施例のパチンコ機の全体構成を示すブロック図である。
【
図4】演出制御部の回路構成を例示するブロック図である。
【
図5】複合チップの内部構成を説明する図面である。
【
図6】描画コマンドリストの発行と実行を説明する図面である。
【
図7】描画コマンドリストの発行と実行を説明する別の図面である。
【
図8】複合チップに内蔵されたサウンドエンジン(音声プロセッサ)の動作を説明する図面である。
【
図9】ホストCPUがサウンドエンジンを制御する手順を説明する図面である。
【
図10】ホストCPUと、DMAコントローラと、シリアルポートの動作概略を説明する図面である。
【
図11】ランプドライバの内部構成と動作を説明する図面である。
【
図12】モータドライバと、信号取得回路の動作を説明する図面である。
【
図13】ランプドライバへのシリアル伝送動作を説明する図面である。
【
図14】ランプドライバへの別のシリアル伝送動作を説明する図面である。
【
図15】演出制御部のメイン動作を説明するフローチャートである。
【
図16】演出制御部のタイマ割込み動作を説明するフローチャートである。
【
図17】画像コマンドリストの生成と発行を説明するフローチャートである。
【
図18】画像コマンドリストの生成と発行を説明する別のフローチャートである。
【
図19】サウンドエンジンの制御に関し、音声コマンドリストの生成と発行を説明するフローチャートである。
【
図21】3Dオブジェクトを特定する要素を説明する図面である。
【
図22】画像プロセッサが実行するパイプライン処理を説明するフローチャートである。
【
図23】ホストCPUによるコマンドリストの作成処理を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、実施例に基づいて本発明を詳細に説明する。
図1は、本実施例のパチンコ機GMを示す斜視図である。このパチンコ機GMは、島構造体に着脱可能に装着される矩形枠状の木製外枠1と、外枠1に固着されたヒンジ2を介して開閉可能に枢着される前枠3とで構成されている。この前枠3には、遊技盤5が、裏側からではなく、表側から着脱自在に装着され、その前側には、ガラス扉6と前面板7とが夫々開閉自在に枢着されている。
【0015】
ガラス扉6の外周には、LEDランプなどによる電飾ランプが、略C字状に配置されている。一方、ガラス扉6の上部左右位置と下側には、全3個のスピーカが配置されている。上部に配置された2個のスピーカは、各々、左右チャネルR,Lの音声を出力し、下側のスピーカは重低音を出力するよう構成されている。
【0016】
前面板7には、発射用の遊技球を貯留する上皿8が装着され、前枠3の下部には、上皿8から溢れ出し又は抜き取った遊技球を貯留する下皿9と、発射ハンドル10とが設けられている。発射ハンドル10は発射モータと連動しており、発射ハンドル10の回動角度に応じて動作する打撃槌によって遊技球が発射される。
【0017】
上皿8の外周面には、チャンスボタン11が設けられている。このチャンスボタン11は、遊技者の左手で操作できる位置に設けられており、遊技者は、発射ハンドル10から右手を離すことなくチャンスボタン11を操作できる。このチャンスボタン11は、通常時には機能していないが、ゲーム状態がボタンチャンス状態となると内蔵ランプが点灯されて操作可能となる。なお、ボタンチャンス状態は、必要に応じて設けられるゲーム状態である。
【0018】
上皿8の右部には、カード式球貸し機に対する球貸し操作用の操作パネル12が設けられ、カード残額を3桁の数字で表示する度数表示部と、所定金額分の遊技球の球貸しを指示する球貸しスイッチと、ゲーム終了時にカードの返却を指令する返却スイッチとが設けられている。
【0019】
図2に示すように、遊技盤5の表面には、金属製の外レールと内レールとからなるガイドレール13が環状に設けられ、その略中央には、中央開口HOが設けられている。そして、中央開口HOの下方には、不図示の可動演出体が隠蔽状態で収納されており、可動予告演出時には、その可動演出体が上昇して露出状態となることで、所定の信頼度の予告演出を実現している。ここで、予告演出とは、遊技者に有利な大当り状態が招来することを不確定に報知する演出であり、予告演出の信頼度とは、大当り状態が招来する確率を意味している。
【0020】
中央開口HOには、大型の液晶カラーディスプレイ(LCD)で構成されたメイン表示装置DS1が配置され、メイン表示装置DS1の右側には、小型の液晶カラーディスプレイで構成された可動式のサブ表示装置DS2が配置されている。メイン表示装置DS1は、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この表示装置DS1は、中央部に特別図柄表示部Da~Dcと右上部に普通図柄表示部19とを有している。そして、特別図柄表示部Da~Dcでは、大当り状態の招来を期待させるリーチ演出が実行されることがあり、特別図柄表示部Da~Dc及びその周りでは、適宜な予告演出などが実行される。
【0021】
遊技球が落下移動する遊技領域には、第1図柄始動口15a、第2図柄始動口15b、第1大入賞口16a、第2大入賞口16b、普通入賞口17、及び、ゲート18が配設されている。これらの入賞口15~18は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
【0022】
第1図柄始動口15aの上部には、導入口INから進入した遊技球がシーソー状又はルーレット状に移動した後に、第1図柄始動口15に入賞可能に構成された演出ステージ14が配置されている。そして、第1図柄始動口15に遊技球が入賞すると、特別図柄表示部Da~Dcの変動動作が開始されるよう構成されている。
【0023】
第2図柄始動口15bは、左右一対の開閉爪を備えた電動式チューリップで開閉されるように構成され、普通図柄表示部19の変動後の停止図柄が当り図柄を表示した場合には、所定時間だけ、若しくは、所定個数の遊技球を検出するまで、開閉爪が開放されるようになっている。
【0024】
なお、普通図柄表示部19は、普通図柄を表示するものであり、ゲート18を通過した遊技球が検出されると、普通図柄が所定時間だけ変動し、遊技球のゲート18の通過時点において抽出された抽選用乱数値により決定される停止図柄を表示して停止する。
【0025】
第1大入賞口16aは、前後方向に進退するスライド盤を有して構成され、第2大入賞口16bは、下端が軸支されて前方に開放する開閉板を有して構成されている。第1大入賞口16aや第2大入賞口16bの動作は、特に限定されないが、この実施例では、第1大入賞口16aは、第1図柄始動口15aに対応し、第2大入賞口16bは、第1図柄始動口15bに対応するよう構成されている。
【0026】
すなわち、第1図柄始動口15aに遊技球が入賞すると、特別図柄表示部Da~Dcの変動動作が開始され、その後、所定の大当り図柄が特別図柄表示部Da~Dcに整列すると、第1大当りたる特別遊技が開始され、第1大入賞口16aのスライド盤が、前方に開放されて遊技球の入賞が容易化される。
【0027】
一方、第2図柄始動口15bへの遊技球の入賞によって開始された変動動作の結果、所定の大当り図柄が特別図柄表示部Da~Dcに整列すると、第2大当りたる特別遊技が開始され、第2大入賞口16bの開閉板が開放されて遊技球の入賞が容易化される。特別遊技(大当り状態)の遊技価値は、整列する大当り図柄などに対応して種々相違するが、何れの遊技価値が付与されるかは、遊技球の図柄始動口15a,15bへの入賞時に実行される大当り抽選の抽選結果に基づいて予め決定される。
【0028】
典型的な大当り状態では、大入賞口16の開閉板が開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板が閉じる。このような動作は、最大で例えば15回まで継続され、遊技者に有利な状態に制御される。なお、特別図柄表示部Da~Dcの変動後の停止図柄が特別図柄のうちの特定図柄であった場合には、特別遊技の終了後のゲームが高確率状態(確変状態)となるという特典が付与される。
【0029】
ところで、本実施例では、大当り状態を決定する大当り抽選や、その他の抽選確率を、係員の設定操作に基づいて、複数段階の何れかに設定できるようになっている。係員による抽選確率の設定操作は、特別な設定キーSET(
図3)によって電源投入時に限り許可される。
【0030】
図3は、上記した各動作を実現するパチンコ機GMの全体回路構成を示すブロック図であり、
図4は、演出制御基板22について、やや詳細に記載したブロック図である。
【0031】
図3に示す通り、このパチンコ機GMは、AC24Vを受けて各種の直流電圧や、電源異常信号ABN1、ABN2やシステムリセット信号(電源リセット信号)SYSなどを出力する電源基板20と、遊技制御動作を中心統括的に担う主制御基板21と、主制御基板21から受けた制御コマンドCMDに基づいて各種の演出動作を統一的に実行する演出制御基板22と、主制御基板21から受けた制御コマンドCMD’に基づいて払出モータMを制御して遊技球を払い出す払出制御基板23と、遊技者の操作に応答して遊技球を発射させる発射制御基板24と、を中心に構成されている。
【0032】
上記の構成に対応して、主制御部基板21は、遊技盤中継基板31を経由して、遊技盤5の各遊技部品に接続されている。そして、遊技盤上の各入賞口16~18に内蔵された検出スイッチのスイッチ信号を受けて、必要な抽選処理を実行すると共に、電動式チューリップなどのソレノイド類を適宜に駆動している。
【0033】
演出制御基板22には、表示装置DS1,DS2に伝送される画像信号を中継する液晶インタフェイス基板(液晶IF基板)25が、配線ケーブルを使用することなく、雄雌コネクタで直結されている。また、液晶IF基板25には、遊技実績情報などを不揮発的に記憶する不揮発性メモリ26(強誘電体メモリFeRAM:Ferroelectric Random Access Memory)と、現在時刻を計時可能な時計回路27(RTCリアルタイムクロック)とが搭載されている。
【0034】
なお、主制御基板21が出力する制御コマンドCMDは、直接的に、演出制御基板22に伝送されるが、制御コマンドCMD’は、主基板中継基板32を経由して、払出制御基板23に伝送される。これらの制御コマンドCMD,CMD’は、何れも16ビット長であるが、8ビット長毎に2回に分けてパラレル送信されている。
【0035】
主制御基板21、演出制御基板22と払出制御基板23には、ワンチップマイコンによるコンピュータ回路が搭載されている。一方、演出制御基板22には、画像プロセッサ51、音声プロセッサ52、及び、ホストCPU50などを内蔵する単一電子素子(複合チップ40)たるコンピュータ回路が搭載されており、ホストCPU50が、音声演出と、ランプ演出と、役物演出と、画像演出を一元的に制御している(
図4参照)。なお、音声プロセッサ52が複合チップ40に内蔵されているので、以下の説明では、音声プロセッサ52を、特に、サウンドエンジン52と呼ぶことがある。また、画像プロセッサ51は、この機能を実現する複数の回路ブロック60~63によって実現される(
図5参照)。
【0036】
また、以下の説明において、制御基板21~23と液晶IF基板25に搭載された回路、及びその回路によって実現される動作を機能的に総称して、主制御部21、演出制御部22、及び払出制御部23と言う。なお、主制御部21に対して、演出制御部22と払出制御部23の全部又は一部がサブ制御部となる。
【0037】
ところで、このパチンコ機GMは、
図3の破線で囲む枠側部材GM1と、遊技盤5の背面に固定された盤側部材GM2とに大別されている。枠側部材GM1には、ガラス扉6や前面板7が枢着された前枠3と、その外側の木製外枠1とが含まれており、機種の変更に拘わらず、長期間にわたって遊技ホールに固定的に設置される。一方、盤側部材GM2は、機種変更に対応して交換され、新たな盤側部材GM2が、元の盤側部材の代わりに枠側部材GM1に取り付けられる。なお、枠側部材1を除く全てが、盤側部材GM2である。
【0038】
図3の破線枠に示す通り、枠側部材GM1には、電源基板20と、払出制御基板23と、発射制御基板24と、枠中継基板35と、CチャンネルのLEDランプ群を駆動するランプ駆動基板36と、Eチャンネルの役物モータ群を駆動するモータ駆動基板37と、が含まれており、これらの回路基板が、前枠3の適所に各々固定されている。
【0039】
一方、遊技盤5の背面には、盤側部材GM2として、主制御基板21、演出制御基板22、及び、液晶IF基板25が、表示装置DS1,DS2やその他の回路基板と共に固定されている。ここで、その他の回路基板には、DチャンネルのLEDランプ群を駆動するランプ駆動基板29と、Fチャンネルの役物モータ群を駆動するモータ駆動基板30と、枠中継基板34と、が含まれている。
【0040】
枠側のモータ駆動基板37や、盤側のモータ駆動基板30には、役物モータを駆動する複数のモータドライバDVjが配置される他、複数ビット長のパラレル信号を受けて、シリアル信号に変換して出力する信号取得回路GETが各々配置されている。そして、モータ駆動基板37の信号取得回路GETには、チャンスボタン11のスイッチ信号や、役物モータ毎に配置された原点センサのセンサ信号が、複数ビット長のパラレル信号として供給される。
【0041】
モータ駆動基板30についても同様であり、モータ駆動基板30の信号取得回路GETには、役物モータ毎に配置された原点センサのセンサ信号が、複数ビット長のパラレル信号として供給されるよう構成されている。
【0042】
詳しくは後述するが、本実施例の場合、CチャンネルのLEDランプ群、DチャンネルのLEDランプ群、Eチャンネルの役物モータ群、及び、Fチャンネルの役物モータ群は、全て、演出制御基板22のシリアルポート55からシリアル伝送される駆動データに基づいて駆動されている。ここで、Cチャンネル~Fチャンネルの称呼は、複合チップ40に内蔵されたシリアルポート55のチャネル番号#C~#Fに対応している。
【0043】
上記した駆動基板36,37を含んだ枠側部材GM1と、駆動基板29,30を含んだ盤側部材GM2とは、一箇所に集中配置された接続コネクタC1~C4によって電気的に接続されている。したがって、枠側部材GM1と盤側部材GM2は、一の操作で電気接続が完了し、一の操作で電気接続が遮断されることになる。
【0044】
電源基板20は、接続コネクタC2を通して、主基板中継基板32に接続され、接続コネクタC3を通して、電源中継基板33に接続されている。電源基板20には、交流電源の投入と遮断とを監視する電源監視部MNTが設けられている。電源監視部MNTは、交流電源が投入されたことを検知すると、所定時間だけシステムリセット信号SYSをLレベルに維持した後に、これをHレベルに遷移させる。
【0045】
また、電源監視部MNTは、交流電源の遮断を検知すると、電源異常信号ABN1,ABN2を、直ちにLレベルに遷移させる。電源異常信号ABN1,ABN2は、電源投入後に速やかにHレベルとなる。
【0046】
本実施例のシステムリセット信号は、交流電源に基づく直流電源によって生成されている。そのため、交流電源の投入(通常は電源スイッチのON)を検知してHレベルに増加した後は、直流電源電圧が異常レベルまで低下しない限り、Hレベルを維持する。したがって、直流電源電圧が維持された状態で、交流電源が瞬停状態となっても、システムリセット信号SYSがCPUをリセットすることはない。なお、電源異常信号ABN1,ABN2は、交流電源の瞬停状態でも出力される。
【0047】
主基板中継基板32は、電源基板20から出力される電源異常信号ABN1、バックアップ電源BAK、及びDC5V,DC12V,DC32Vを、そのまま主制御部21に出力している。一方、電源中継基板33は、電源基板20から受けたシステムリセット信号SYSや、交流及び直流の電源電圧を、そのまま演出制御部22に出力している。そして、演出制御部22は、受けたシステムリセット信号SYSに基づいて、基板各部に配置された電子素子を電源リセットしている。
【0048】
一方、払出制御基板24は、中継基板を介することなく、電源基板20に直結されており、主制御部21が受けると同様の電源異常信号ABN2や、バックアップ電源BAKを、その他の電源電圧と共に直接的に受けている。
【0049】
電源基板20が出力するシステムリセット信号SYSは、電源基板20に交流電源24Vが投入されたことを示す電源リセット信号であり、この電源リセット信号に基づいて、演出制御部22を構成する各回路素子が電源リセットされるようになっている。
【0050】
但し、このシステムリセット信号SYSは、主制御部21と払出制御部23には、供給されておらず、各々の回路基板21,24のリセット回路RSTにおいて電源リセット信号(CPUリセット信号)が生成されている。そのため、例えば、接続コネクタC2がガタついたり、或いは、配線ケーブルにノイズが重畳しても、主制御部21や払出制御部23のCPUが異常リセットされるおそれはない。
【0051】
主制御部21や払出制御部23に設けられたリセット回路RSTは、各々ウォッチドッグタイマを内蔵しており、各制御部21,24のCPUから、定時的なクリアパルスを受けない限り、各CPUは強制的にリセットされる。
【0052】
また、この実施例では、RAMクリア信号CLRは、主制御部21で生成されて主制御部21と払出制御部23のワンチップマイコンに伝送されている。ここで、RAMクリア信号CLRは、各制御部21,24のワンチップマイコンの内蔵RAMの全領域を初期設定するか否かを決定する信号であって、係員が操作する初期化スイッチSWのON/OFF状態に対応した値を有している。
【0053】
図3に示す通り、初期化スイッチSWは、抽選確率などを規定する設定キーSETと同様に、主制御部21に供給されている。これら初期化スイッチSWや設定キーSETの操作は、電源投入直後に実行される主制御部21の初期処理で認識され、抽選確率などの設定処理や内蔵RAMの初期化処理が実行される。
【0054】
その後、抽選確率などの設定値は、CPU割込み許可状態で開始される主制御部21の定常処理において、所定の制御コマンドの形式で演出制御部22に通知され、通知された設定値は、液晶IF基板25の不揮発性メモリ26に記憶される。先に説明した通り、設定キーSETは、大当り抽選などの当選確率を、複数段階の何れかに設定する用途で使用される。そして、設定キーSETの設定内容は、時計回路27から読み取った時刻情報と共に、不揮発性メモリ26に記憶される。
【0055】
以上の通り、抽選確率などの設定処理や、内蔵RAMの初期化処理は、電源投入直後に限り許容され、その後に開始される定常処理で実行されることはない。但し、主制御部21の定常処理中に、係員が設定キーSETを操作した場合には、その事実が主制御部21から演出制御部22に通知されるようになっている。
【0056】
そして、設定キーSETの操作通知を受けた演出制御部22では、不揮発性メモリ26に記憶内容を読み出して、表示装置DS1に画面表示するようになっている。定常処理中における設定キーSETの操作は、係員が、営業開始前に、抽選確率の設定履歴や、遊技実績履歴を確認したい場合の操作であり、不正行為の痕跡がないことを確認する場合などに活用される。
【0057】
そして、この設定キーSETの操作に対応して、初期化スイッチSWが操作された場合には、この通知を受けた演出制御部22では、不揮発性メモリ26の記憶内容を全て消去するようになっている。これは、例えば、その遊技機を転売するような場合に、営業秘密ともいうべき、抽選確率の設定履歴や、遊技実績履歴を消去するためである。
【0058】
主制御部21及び払出制御部23は、電源基板20から電源異常信号ABN1,ABN2を受けることによって、停電や営業終了に先立って、必要な終了処理を開始するようになっている。また、バックアップ電源BAKは、営業終了や停電により交流電源24Vが遮断された後も、主制御部21と払出制御部23のワンチップマイコンの内蔵RAMのデータを保持するDC5Vの直流電源である。したがって、主制御部21と払出制御部23は、電源遮断前の遊技動作を電源投入後に再開できることになる(電源バックアップ機能)。このパチンコ機では少なくとも数日は、各ワンチップマイコンのRAMの記憶内容が保持されるよう設計されている。
【0059】
先に説明した通り、演出制御基板22と液晶IF基板25とはコネクタ連結によって一体化されており、演出制御部22は、電源中継基板33を経由して、電源基板20から各レベルの直流電圧(5V,12V,32V)と、システムリセット信号SYSを受けている(
図3及び
図4参照)。
【0060】
また、演出制御部22は、主制御部21から制御コマンドCMDとストローブ信号STBとを受けている。そして、演出制御部22は、ランプ駆動基板29やランプ駆動基板36に搭載された多数のランプドライバDR1~DRn(
図10(a)参照)に、ランプ駆動データSPOc,SPCdをシリアル伝送することで、Cチャンネルのランプ群と、Dチャンネルのランプ群を駆動して、制御コマンドCMDに基づくランプ演出を実現している。
【0061】
また、演出制御部22は、モータ駆動基板30やモータ駆動基板37に搭載された多数のモータドライバDV1~DVm(
図11(a)参照)に、モータ駆動データSOe,SOfをシリアル伝送することで、Eチャンネルのモータ群と、Fチャンネルのモータ群を駆動して、制御コマンドCMDに基づく役物演出を実現している。
【0062】
特に限定されないが、本実施例の場合、クロック同期式のシリアル伝送方式を採っており、ランプ駆動基板36とランプ駆動基板29のランプドライバDRiは、クロック信号SPCKc,SPCKdに同期してランプ駆動信号SPOc,SPOdを受けている。また、モータ駆動基板37とモータ駆動基板30のモータドライバDVjは、シリアルクロックSCKe,SCKfに同期してモータ駆動信号SOe,SOfを受けている(
図4参照)。
【0063】
図4は、演出制御部22の内部構成をやや詳細に示すブロック図、
図5は、複合チップの内部構成を示すブロック図である。
図3や
図4に示す通り、演出制御部22は、画像演出、音声演出、ランプ演出、及び、役物演出を一元的に制御する複合チップ40と、複合チップ40による演出制御動作の作業領域などとして機能するDDR3SDRAM(Double-Data-Rate3 Synchronous Dynamic Random Access Memory)41と、一元的な演出動作を実現する制御プログラム、圧縮状態の音声データSND、及び圧縮状態の画像データIMGなどを不揮発的に記憶するCGROM42と、複合チップ40から受ける音声信号を増幅してスピーカSPを駆動するデジタルアンプ43と、入力バッファ44,45A,45Bと、出力バッファ46A,46Bと、信号切換部47A,47Bと、を中心に構成されている。
【0064】
なお、以下の説明では、便宜上、DDR3SDRAM41を、DDRメモリ又は外付けRAM(Random Access Memory)41と称し、CGROM42を、外付けROM(Read Only Memory)42と称することがある。
【0065】
本実施例の複合チップ40に接続可能なDDRメモリ41は、最高、8Gバイト長であるが、複合チップ40(ホストCPU50)から直接アクセス可能な領域は256Mバイトである。そこで、本実施例では、この256MバイトのDDRメモリ41の直接アクセス領域に、表示装置DS1,DS2の各一フレーム分の画像データを一時保存するフレームバッファFBを確保している。また、本実施例では、外付けROM42に記憶されている音声データSNDを、電源投入時に、DDRメモリ41の直接アクセス可能領域にコピーして、複合素子40からの高速アクセスを可能にしている。
【0066】
また、複合チップ40に接続可能な外付けROM42は、最高1Tバイト長(1,099,511,627,776 バイト=1,024 Gバイト)であるが、複合チップ40(ホストCPU50)から直接アクセス可能な領域は1Gバイトである。そこで、本実施例では、この1GMバイトの外付けROM42の直接アクセス領域に、演出動作を一元的に制御する演出制御プログラムと、演出制御プログラムが参照する演出制御データと、音声演出の基礎データである音声データSNDと、を不揮発的に記憶している。なお、演出制御データには、ランプ演出や役物演出を実現するための駆動データが含まれている。また、先に説明した通り、外付けROM42の音声データSNDは、電源投入時に、外付けROM42からDDRメモリ41に転送される。
【0067】
図4や
図5に示す通り、複合チップ40は、ホストCPU50と、表示装置DS1,DS2を駆動して画像演出を実現する画像プロセッサ51と、スピーカを駆動して音声演出を実現する音声プロセッサ52と、ホストCPU50を経由しない直接的なデータ伝送を実現するDMA(Direct Memory Access)コントローラ53と、パラレル信号を入出力するパラレルポート(PIO)54と、シリアル信号を入出力するシリアルポート(SIO)55と、メインメモリ(M1)56と、内蔵DRAM(M2)57などを中心的に内蔵している。なお、便宜上、パラレルポートと称するが、実際には、パラレル出力ポート(PO)と、パラレル入力ポート(PI)が含まれている。
【0068】
本実施例のシリアルポート55は、チャネル#Aからチャネル#Fまで、合計6チャネル存在するが、動作モードの設定に基づいて、シリアル出力ポートか又はシリアル入力ポートとして機能させることができる。そこで、本実施例では、チャネル#Cとチャネル#Dを、ランプ演出用のシリアル出力ポートとして使用している。一方、シリアルポート55のチャネル#Eと、チャネル#Fについては、モータ演出用のシリアル出力ポートとして機能させた後、動作モードを切換え、シリアル信号を受信するシリアル入力ポートとして使用している。
【0069】
このような内部構成を有する複合チップ40に対応して、入力バッファ44は、主制御部21から制御コマンドCMDとストローブ信号STBを受けると共に、電源基板20からシステムリセット信号SYSを受けている。そして、制御コマンドCMDとストローブ信号STBは、複合チップ40のパラレルポート54に伝送され、ストローブ信号STBに起因する割込み処理に基づいて、ホストCPU50が制御コマンドCMDを取得している。
【0070】
また、枠側入力バッファ45Aは、枠中継基板34を経由して、チャネル#Eのシリアル信号SNiを受け、盤側入力バッファ45Bは、モータ駆動基板30から、チャネル#Fのシリアル信号SNjを受けるよう構成され、各入力バッファ45A,45Bは、各シリアル信号SNi,SNjを複合チップ40のシリアルポート55に伝送している。なお、各シリアル信号SNi,SNjは、出力バッファ46A,46Bを経由して伝送されるチャネル#Eと、チャネル#FのシリアルクロックSCKe,SCKfに同期して、クロック同期式でシリアル伝送される。
【0071】
ここで、シリアル信号SNiには、枠側に配置された役物モータの回転位置を特定する原点信号と、チャンスボタン11が押下されたことを示すスイッチ信号とが含まれている。一方、シリアル信号SNjには、盤側に配置された役物モータの回転位置を特定する原点信号が含まれている。
【0072】
次に、枠側出力バッファ46Aと盤側出力バッファ46Bは、複合チップ40のシリアルポート55やパラレルポート54から受ける各種の信号を、各々、枠中継基板34とランプ駆動基板29に出力している。
【0073】
図示の通り、枠側出力バッファ46Aは、シリアルポート55からランプ駆動基板36に伝送されるチャネル#Cの信号群SPOc,SPCKc,OEcと、シリアルポート55からモータ駆動基板37に伝送されるチャネル#Eの信号群SOe,SCKe,SCKeと、パラレルポート54からモータ駆動基板37に伝送されるチャネル#EのラッチパルスLTeと、を中継している。
【0074】
一方、盤側出力バッファ46Bは、シリアルポート55からランプ駆動基板29に伝送されるチャネル#Dの信号群SPOd,SPCKd,OEdと、シリアルポート55からモータ駆動基板30に伝送されるチャネル#Fの信号群SOf,SCKf,SCKfと、パラレルポート54からモータ駆動基板30に伝送されるチャネル#FのラッチパルスLTfと、を中継している。
【0075】
信号切換器47は、モータ駆動基板37に伝送されるチャネル#EのシリアルクロックSCKeの最終伝送先を切り換える枠側切換器47Aと、モータ駆動基板30に伝送されるチャネル#FのシリアルクロックSCKfの最終伝送先を切り換える盤側切換器47Bとに区分される。枠側切換器47Aと、盤側切換器47Bは、各々、パラレルポート54から切換制御信号CTLe,CTfを受けて、シリアルクロックSCKe,SCKfの伝送先を切り換えている。
【0076】
本実施例では、チャネル#Eとチャネル#FのシリアルクロックSCKe,SCKfは、各々、モータ駆動基板37とモータ駆動基板30に伝送されが、切換制御信号CTLe,CTfが第1レベルであれば、各モータ駆動基板37,30において、モータドライバDVに供給され、切換制御信号CTLe,CTfが第2レベルであれば、信号取得回路GETに供給されるようになっている。
【0077】
次に、液晶IF基板25について説明すると、液晶IF基板25には、不揮発性メモリ(FeRAM)26と、時計回路27の他に、画像プロセッサ51から第1のLVDS(Low voltage differential signaling)信号を受ける信号分配器28Aと、画像プロセッサ51から第2のLVDS信号を受ける信号変換器28Bとが搭載されている。第1のLVDS信号と、第2のLVDS信号は、メイン表示装置DS1やサブ表示装置DS2の各一フレームを構築する画像信号であり、一のピクセルについて、RGB各8ビットのピクセルデータを、水平/垂直同期信号やピクセルクロック(ドットクロック)を含んで、各々、五対の差動信号線に対して複合チップ40から出力される。
【0078】
信号分配器28Aは、メイン表示装置DS1に伝送すべき第1のLVDS信号LVDS1を受けてRGB信号を復元した後、偶数ピクセル用の画像信号と、奇数ピクセル用のRGB信号に分配した後、各々を各五対のLVDSo,LVDSe信号に変換してメイン表示装置DS1に出力する回路である(
図5参照)。
【0079】
この信号分配器28Aの動作に基づき、メイン表示装置DS1に伝送されるLVDS信号(LVDSo,LVDSe)のドットクロックは、元のLVDS信号のドットクロックの周波数Fdが1/2に抑制され大幅に耐ノイズ性が向上するので、高画質(高解像度)で大型の表示装置を安定して駆動することができる。なお、メイン表示装置DS1には、LVDSo,LVDSe信号に基づいて、本来のドットクロック周波数FdのRGBデジタル信号を復元する第1復元回路38Aが内蔵されており、メイン表示装置DS1の表示画面には、画像プロセッサ51が生成した高画質の一フレーム画像が表示される。
【0080】
一方、信号変換器28Bは、サブ表示装置DS2に伝送すべき第2のLVDS信号LVDS2を五対の差動信号線で受け、これを一対の差動信号線に纏めて出力する回路である。これは、サブ表示装置DS2の縦横寸法が、メイン表示装置DS1より大幅に小型である一方で、垂直同期信号の周波数(1/60Hz)が共通するので、ピクセルクロックの周波数が低いことを考慮して、配線数を大幅に減少させるためである。
【0081】
本実施例では、一ピクセルを構成するRGBデータを各々8ビットで特定するので、ピクセルクロック一周期の第2のLVDS信号には、3×8ビットのRGBデータ、垂直同期信号VS、水平同期信号HS、及びデータイネーブル信号DEなどを含め合計28ビットのデータが含まれるが、信号変換器28Bでは、これら28ビットに、DCバランス用の制御データなどを加えた、合計36ビットを、一対の差動信号線に出力している。本実施例では、このような構成を採ることで、五対の信号線を、一対の信号線に大幅に抑制することができる。
【0082】
一対の信号線で伝送された複合画像信号は、サブ表示装置DS2に近接して配置された第2復元回路38Bにおいてパラレル変換された後、RGBデジタル信号に復元されて、サブ表示装置DS2に供給される。
【0083】
図5は、画像演出、音声演出、ランプ演出、及び役物演出を一元的に制御する複合チップ40の内部構造を、これに関連する外付けROM42やDDRメモリ41などと共に図示したものである。先に説明した通り、DDRメモリ41の直接アクセス可能な記憶領域には、フレームバッファFBが確保されると共に、電源投入時に、外付けROM42から転送された音声データSNDが記憶されている。
【0084】
ここで、フレームバッファFBは、各表示装置DS1,DS2の表示画面を特定する完成状態の画像データが一時保存される記憶領域である。本実施例のフレームバッファFBは、各表示装置DS1,DS2用に、各々、第1バッファと第2バッファのダブルバッファ構造になっており、各バッファは、垂直同期信号60Hzに基づき規定される所定の切換え周期(1/30秒)毎に、描画バンクと表示バンクに切換るよう構成されている。
【0085】
すなわち、ある動作周期で描画バンクとして機能する第1バッファに生成された画像データは、次の動作周期では表示バンクとして機能する第1バッファから表示装置DS1,DS2に出力される。但し、このような構成のフレームバッファFBの配置位置は、何ら、DDRメモリ41に限定されず、メインメモリ56や内蔵DRAM57に配置しても良い。
【0086】
次に、外付けROM42には、演出制御プログラムと、演出制御データと、画像データIMGと、音声データSNDと、が不揮発的に記憶されている。なお、音声データSNDには、一単位の音声演出を実現する多数の音声フレーズデータの他に、
図8に示す一群のSEQコードや一群のSACコードも含まれているが、これらについては、後で説明する。
【0087】
ところで、外付けROM42のアクセス速度が問題になる場合には、別途、プログラムROM58を配置して、ここに演出制御プログラムや演出制御データを配置しても良い。この場合には、複合チップ40のCPUインタフェイス回路66を経由して、プログラムROM58がアクセスされる。
【0088】
また、更に多くのデータを記憶可能な安価な素子として、NAND型フラッシュメモリで構成されたフラッシュSSD(solid state drive )などのSATA(Serial Advanced Technology Attachment )モジュール(HSSデバイス)59を使用しても良く、HSSデバイス59を、SerialATAに準拠したHSS(High Speed Serial )方式で高速アクセスする構成を採るのも好適である。この場合には、複合チップ40のHSSコントロータ70を経由して、HSSデバイス59がアクセスされる。
【0089】
図5に示す通り、複合チップ40は、
図4に示した内部回路などが内蔵されており、全ての演出動作を一元的に制御するホストCPU50と、全体として画像プロセッサ51として機能する各部60~63と、音声プロセッサ52として機能するサウンドエンジン52と、外付けROM42やDDRメモリ41などの外部素子と内部回路との間、及び、内部回路同士のDMA転送を実現するDMAコントローラ53と、パラレルデータの送受信を実現するパラレル入出力ポート(PIO)54と、シリアルデータの送受信を実現するシリアル入出力ポート(SIO)55と、3Mバイト程度の記憶容量を有するメインメモリ56と、256Mバイト程度の記憶容量を有する内蔵DRAM57と、画像コマンドリストLTの発行先として専用的に使用されるFIFO(First In First Out)構造の画像コマンドバッファ71と、画像コマンドバッファ71への中継レジスタであるコマンドライトレジスタCMwなどが内蔵されている。
【0090】
これら、複合チップ40の内部回路は、リセット制御回路67の動作に基づいて、各々、最適なタイミングで電源リセットされ、その後、クロック制御回路65が出力する動作クロックに基づいた速度で動作している。また、ホストCPU50の設定に基づいて機能する割込みコントローラ64によって、各種の割込み処理が実現される。なお、DDRメモリ41は、DDR3メモリコントローラ68を経由してアクセスされ、外付けROM42は、CGメモリコントローラ69を経由してアクセスされる。
【0091】
複合チップ40に内蔵されたメインメモリ56は、高速なランダムアクセスが可能であって、ホストCPU50のプログラム処理で必要となるスタック領域や、その他の作業領域として使用される。また、メインメモリ56の記憶領域(3Mバイト)の一部は、ホストCPUが発行する画像コマンドリストLTを記憶可能なコマンドメモリ56としても使用可能である。
【0092】
複合チップ40に内蔵された画像プロセッサ51は、詳細には、第1と第2のLDVS信号を、信号分配器28Aや信号変換器28Bに出力するディスプレイコントローラ63と、各表示装置DS1,DS2の一フレーム分の画像データを生成するレンダリングエンジン61と、圧縮状態の画像データを外付けROM42から読み出してデコードするCGデータデコーダ62と、ホストCPU50からの動作指示に基づき、画像プロセッサ51の各部を制御するVDPコントローラ60とを有して構成されている。
【0093】
そして、CGデータデコータ62によるデコード出力は、内蔵DRAM57に一時記憶されるよう構成されている。また、VDPコントローラに内蔵されたプリローダが機能して、圧縮状態の画像圧縮データ(以下、CGデータという)を、外付けROM42から先読み(プリロード)する場合には、先読みされたCGデータ(プリロードデータ)は、内蔵DRAM57に確保されたプリロードバッファ(
図7、
図18参照)に一時記憶される。
【0094】
図5に示す通り、VDPコントローラ60は、ホストCPU50からREAD/WRITE可能な各種の制御レジスタCRG(R/W)を有して構成され、書込み用の制御レジスタ(CRGW)に受ける動作指示に基づいて動作し、内部動作状態をステイタス情報として、読出し用の制御レジスタ(CRGR)に保持している。
【0095】
本実施例では、画像コマンドリストLTの発行先は、基本的に画像コマンドバッファ71であるが、追加的に、メインメモリ(コマンドメモリ)56や、内蔵DRAM57や、DDRメモリ41に、画像コマンドリストLT(後述する補助リストLT’)を発行することもできる。また、定型的な画像コマンドリストLT(補助リストLT’)について、予め、外付けROM42に記憶させておくこともできる。
【0096】
但し、何れの場合でも、VDPコントローラ60は、先ず、画像コマンドバッファ71から画像コマンドリストLTを読出し、そこに記載されているJUMP命令などに基づいて、メインメモリ56、内蔵DRAM57、DDRメモリ41、又は外付けROM42に記載されている画像コマンドリストLTの処理に移行することになる。
【0097】
何れにしても、画像コマンドリストLTとは、各表示装置DS1,DS2の各一フレームを特定する一群の描画コマンドなどを列記した指示リストである。本実施例の場合、画像コマンドリストLTに列記されるコマンド列は、(a) VDPコントローラ60の割込み動作などのVDP(Video Display Processor )制御に関する制御コマンドと、(b) レンダリングエンジン61の描画動作に関する描画コマンドと、(c) CGデータデコーダ62のデコード動作に関するデコードコマンドとに区分されるが、以下、これら三種類(a) ~(c) のコマンドを総称する場合には画像コマンドと称することにする。
【0098】
これら何れの画像コマンドも32ビットの整数倍の可変長であり、上記した三種類(a) ~(c) の画像コマンドが、適宜な順番で列記されて画像コマンドリストLTが完成状態となる。ホストCPU50が完成させた画像コマンドリストLTを、例えば、画像コマンドバッファ71に発行する場合には、ホストCPU50は、画像コマンドリストLTを構成するコマンド列について、一画像コマンドずつ順番に、コマンドライトレジスタCMwに書込むことになる。すると、コマンドライトレジスタCMwに書込まれた可変長の一画像コマンドは、内部構成に基づき、自動的に、FIFO(First In First Out)の形式で画像コマンドバッファ71に蓄積されるようになっている。
【0099】
このような内部動作に対応して、VDPコントローラ6は、画像コマンドバッファ71(画像コマンドFIFO)の管理機能を有しており、画像コマンドバッファ71の使用状態などのステイタス情報が、読出し用の制御レジスタ(CRGR)に保持されるよう構成されている。したがって、ホストCPUは、画像コマンドバッファ71(画像コマンドFIFO)がフル状態でないことを確認した上で、コマンドライトレジスタCMwに画像コマンドを書込むことになる。
【0100】
このようにして、画像コマンドバッファ71に蓄積された画像コマンド列は、VDPコントローラ60によって、FIFO(First In First Out)方式で自動的に読み出され、各画像コマンドの種別に応じて、(a) 制御コマンドは、VDPコントローラ60に配布され、(b) 描画コマンドは、レンダリングエンジン61に配布され、(c) デコードコマンドは、CGデータデコーダ62に配布される。
【0101】
そして、VDPコントローラ60、レンダリングエンジン61、及び、CGデータデコーダ62は、配布された画像コマンドリストLTに記載された画像コマンドに基づいた各々の動作を開始する。すなわち、VDPコントローラ60の制御動作に基づき、CGデータデコーダ62やレンダリングエンジン61によって、画像データの生成動作が開始され、最終的な画像データがフレームバッファFBに完成される。
【0102】
後述するように、本実施例のホストCPU50は、上記したバンク切換え周期と同じ動作周期Δ(=1/30秒)で間欠的に動作するが、上記した一連の動作は、ホストCPU50が、画像コマンドバッファ71に画像コマンドリストLTを発行した、その動作周期において実行される。
【0103】
以上、画像コマンドリストLTが画像コマンドバッファ71に発行される場合を説明したが、先に説明した通り、ホストCPU50は、メインメモリ(コマンドメモリ)56、内蔵DRAM57、又はDDRメモリ41に画像コマンドリストLTを発行することもできる。但し、この場合には、ある動作周期で発行した画像コマンドリストLTは、一又はそれ以上遅れた動作周期において実効化される。
【0104】
例えば、コマンドメモリ56を使用する場合には、
図6に示すように、書込み用と読み出し用に切り替えて使用する一対のリストバッファBUFa,BUFbを、コマンドメモリ56に確保する必要がある。そして、一方のリストバッファBUFa/BUFbに、次サイクルの画像コマンドリストLTを発行し、一動作周期後には、一対のリストバッファBUFa,BUFbの用途を切換えるようにしている。
【0105】
リストバッファBUFa,BUFbの切換え動作は、ホストCPU50が、画像コマンドバッファ71に発行する制御コマンドリストLTcによって実行され、ある動作周期(T)に発行される制御コマンドリストLTcは、第1リストバッファBUFaの画像コマンドリストLTを実行すべきことを特定するJUMP命令(JUMP_BUFa )と、制御コマンドリストLTcの最終行となるバンクフリップ待ち命令(WAIT_BANKFLIP )とで構成される。なお、このJUMP命令は、いわゆるCALL命令と同じであり、JUMP命令の実行後は、バンクフリップ待ち命令(WAIT_BANKFLIP )が実行される。
【0106】
バンクフリップ(Bank Flip )とは、フレームバッファFBにおける描画バンクと表示バンクの切換えを意味し、バンクフリップ待ち命令の実行によって、VDPコントローラ60の動作は、次のバンク切換えタイミングまで待機状態となる。バンクフリップ周期(=バンク切換え周期)は、垂直同期信号の周波数60Hzに対応して、1/60秒としても良いが、本実施例では、複合チップ40の各内部回路の動作時間を十分に確保するため、バンクフリップ周期を敢えて1/30秒(垂直同期信号の2回分)としている。先に説明した通り、このバンクフリップ周期(バンク切換え周期)は、ホストCPU50の動作周期Δと同じである。
【0107】
本実施例では、上記の構成を採るので、次の動作周期(T+Δ)は、1/30秒後となるが、次の動作周期(T+Δ)に発行される制御コマンドリストLTcは、第2リストバッファBUFaの画像コマンドリストLTを実行すべきことを指示するJUMP命令(JUMP_BUFb )と、制御コマンドリストLTcの最終行に記載されるバンクフリップ待ち命令(WAIT_BANKFLIP )とで構成される。したがって、この動作周期(T+Δ)では、前サイクルに発行された第2リストバッファBUFbの画像コマンドリストLTが実効化されることになる。
【0108】
以下、同じであり、リストバッファBUFa,BUFbの一方に、次サイクルの画像コマンドリストLTを発行すると共に、画像コマンドバッファ71にリストバッファBUFa,BUFbを切換える制御コマンドリストLTcを発行して画像演出動作が進行させる。この構成によれば、画像コマンドリストLTの発行処理と、画像コマンドリストLTに基づいた画像データの生成処理とを、一の動作周期(Δ)で終える必要がなくなり、画像データの生成処理時間に時間的な余裕が生じるので、表示装置の大型化や高画質化に対応することができる。
【0109】
なお、画像コマンドリストLTの最後には、画像コマンドバッファ71に記載されているバンクフリップ待ち命令(WAIT_BANKFLIP )への復帰を意味するJUMP命令(JUMP_CFIFO)が記載されており、
図6の矢印で示す動作が実現される。
【0110】
また、表示装置の大型化や高画質化により有効に対応するには、デコード動作に先行してプリローダを機能させて、外付けROM42のCGデータ(圧縮状態の画像圧縮データ)をプリロード動作するのも好適である。なお、プリロード動作を実現するには、後述するCGデータの転送期間(Δ~3Δ)などを特定した上で、VDPコントローラ60を先読み動作モードに設定する必要がある。また、画像コマンドリストLTには、プリロード転送を指示する特別なデコードコマンドDCpを記載する必要がある。
【0111】
この先読み動作モードでは、画像コマンドリストLTの発行先は、例えば、DDRメモリ41など、十分な記憶容量を有するメモリとし、複数N個のバッファ領域を確保する必要がある。以下、画像コマンドリストLTの発行先を、例えば、DDRメモリ41として、バッファ領域を3個とする場合(トリプルバッファBUFa~BUFc)について
図7に基づいて説明する。
【0112】
この場合は、トリプルバッファBUFa~BUFcを循環的に使用して、何れかの領域(BUFa~BUFc)に、次々回サイクル用の画像コマンドリストLTが発行され、画像コマンドバッファ71には、バンクフリップ待ち命令(WAIT_BANKFLIP )だけで構成された制御コマンドリストLTcが発行される。
【0113】
例えば、動作周期(T)では、次々回(T+2Δ)に実効化される画像コマンドリストLTが第1バッファBUFaに発行され、動作周期(T+Δ)では、T+3Δに実効化される画像コマンドリストLTが第2バッファBUFbに発行され、動作周期(T+2Δ)では、T+4Δに実効化される画像コマンドリストLTが第3バッファBUFbに発行される。そして、これらの画像コマンドリストLTの最終行は、画像コマンドバッファ71の先頭アドレスへのジャンプ命令(JUMP_CFIFO)となっている。
【0114】
また、ホストCPU50は、各動作周期において、実行されるべき画像コマンドリストLTの先頭アドレスを、VDPコントローラ60に指定する必要があり、具体的には、動作周期(T)では、画像コマンドリストLTが第1バッファBUFbに存在すると指定し、動作周期(T+Δ)では、画像コマンドリストLTが第3バッファBUFcに存在すると指定し、動作周期(T+2Δ)では、画像コマンドリストLTが第1バッファBUFaに存在すると指定している。
【0115】
先に説明した通り、何れの画像コマンドリストLTも、その最終行は、画像コマンドバッファ71の先頭アドレスへのジャンプ命令(JUMP_CFIFO)であり、画像コマンドバッファ71には、毎回、バンクフリップ待ち命令(WAIT_BANKFLIP )だけで構成された制御コマンドリストLTcが発行される。そのため、VDPコントローラ60は、トリプルバッファBUFa~BUFcを循環的に読み出して、必要な処理を実行した後、バンクフリップ待ち命令(WAIT_BANKFLIP )によって処理を終えることになる。なお、制御コマンドリストLTcは、常に同一内容であるので、必ずしも、毎回発行する必要はなく、一度だけ発行したのでも良い。
【0116】
ところで、先に説明した通り、画像コマンドリストLTには、プリロード転送を指示する特別なデコードコマンドDCpが記載されている場合がある。そして、先読み動作モードでは、新規に書込まれた画像コマンドリストLTは、その次の動作周期で解釈されるようになっている。
【0117】
したがって、動作周期(T)に書込まれた画像コマンドリストLTは、動作周期(T+Δ)において、VDPコントローラ60によって解釈されるが、この画像コマンドリストLTにプリロード転送を指示するデコードコマンドDCpが検出される場合には、VDPコントローラ60に内蔵されたプリローダは、動作周期(T+Δ)において、必要なCGデータを外付けROMから読出し、読み出したCGデータを、内蔵DRAM57に確保されたプリロードバッファBUFpに格納する(CGデータの転送期間Δ)。
【0118】
そして、プリロードバッファBUFpに読み出したCGデータは、トリプルバッファ(BUFa~BUFc)形式を採る場合には、次の動作周期(T+2Δ)で、プリロードバッファBUFpのCGデータが、CGデータデコーダ62によって伸張され、レンダリングエンジン61の画像生成処理に使用される。
【0119】
なお、3個のバッファ領域(トリプルバッファ)ではなく、4個のバッファ領域(クアドラブルバッファ)を確保した場合には、動作周期(T+Δ)から動作周期(T+2Δ)までがCGデータの先読み期間(転送期間2Δ)であり、5個のバッファ領域(クインティブルバッファ)を確保した場合には、動作周期(T+Δ)から動作周期(T+3Δ)までが先読み期間(転送期間3Δ)でとなる。
【0120】
以上の通り、先読み動作モードを採る場合には、一動作周期以上のCGデータ転送時間を確保できるので、アクセス速度に劣る外付けROM42を採用した場合でも、表示装置一フレーム用に大量のCGデータを転送することができ、表示装置の大型化や高画質化、及び、画像演出の高度化を実現することができる。また、表示装置の個数を3個以上に増やし、それぞれ異なる画像演出を実行する場合にも効果的である。
【0121】
続いて、
図8に基づいて、複合チップ40に内蔵されたサウンドエンジン(音声プロセッサ)52について説明する、
図8に示す通り、サウンドエンジン52は、ホストCPU50やVDPコントローラ60からアクセス可能な複数のコマンドレジスタ(RGi)80と、間欠的に動作して内部動作を制御するサウンドコントールモジュール81と、DDRメモリ41から読み出した圧縮状態の音声フレーズデータを伸張して、一又は複数チャンネルのデジタル音声(PCMデータ)を生成するメインジェネレータ84と、メインジェネレータ84が生成した複数チャンネルのデジタル音声をミキシングすると共に音声加工するマルチエフェクタ85と、マルチエフェクタ85の出力を受けて3本の伝送線に必要な音声情報をデジタルアンプ43に出力するオーディオインタフェイス86と、を有して構成され、各コマンドレジスタRGiへのアクセス動作を中継する中継レジスタ82及びコマンドインタフェイス部83を経由してホストCPU50などに接続されている。
【0122】
ここで、サウンドコントールモジュールSCM(以下、SCM81と略すことがある)には、一群のコマンドレジスタRGi~RGjに対する、一連の設定動作を自動的に実行するシーケンサSEQj(Sequencer )と、シンプルアクセスコントローラSACi(simple Access Controller)とが、各々、複数個設けられている。一群のコマンドレジスタRGi~RGjへの設定値を自動的に設定する点では、何れの動作も同じであるが、一まとまりの設定動作(ステップ動作)を終えた後、所定時間を待機して、次の一まとまりの設定動作(ステップ動作)に移行する間欠設定動作や、一連の設定動作を任意回数だけ繰返す反復設定動作などが可能である点で、シーケンサSEQの設定動作の方が、サウンドコントールモジュールSCMよりやや高度化されている。
【0123】
但し、シンプルアクセスコントローラSACは、外付けROM42に規定されている所定の定期SAC動作を、SCM81の動作周期の整数倍の周期で、定期的に繰り返し実行することができる。後述するように、シンプルアクセスコントローラSACの動作内容は、0~NのSACコード番号で特定されるが、最終のSACコード番号(N)で特定される定期SAC動作については、所定時間毎に、定期的に繰り返し実行されるよう内部制御される。
【0124】
そこで、本実施例では、この定期SAC動作によって、マルチエフェクタ85におけるイコライザ機能やコンプレッサ機能を繰り返し再設定するようにしている。そのため、ノイズなどの影響で、仮に、音質に関する設定内容が変化しても、その後の定期SAC動作に基づいて、開発者の意図した音質が確実に復元されることになる。なお、後述するように、本実施例では、SCM81の動作周期は32/48mSであり、この動作周期の512回毎に、定期SAC動作が実行される。
【0125】
このような定期SAC動作も可能なシンプルアクセスコントローラSACiや、設定動作がやや高度なシーケンサSEQjを、各々、有効に機能させるため、外付けROM42には、シンプルアクセスコントローラSACの動作(定期SAC動作を含む)を規定するSACコードや、シーケンサSEQの動作を規定するSEQコードが、各々、複数種類、記憶されている。なお、電源投入時のDMA転送動作により、DDRメモリ41は、外付けROM42と同じデータがコピーされるので、
図8では、この状態を図示している。
【0126】
SEQコードとSACコードは、何れも、コマンドレジスタRGiを特定する1バイト長のレジスタ番号と、そのコマンドレジスタRGiへの1バイト長の設定値とで一組となる一連2バイト長のデータ列であり、所定の終了コード(FFFFh)で完結している。但し、SEQコードについては、上記した間欠設定動作や反復設定動作を実現するため、一まとまりの設定動作(ステップ動作)の完了を示す中断コード(FFFEh)が含まれている。
【0127】
SEQコードは、一連M個のSEQデータで構成され(SEQコード=M×SEQデータ)、SACコードは、一連N個のSACコードで構成されている(SACコード=N×SACデータ)。そして、SEQコードやSACコードの一単位であるSEQデータやSACデータは、何れも、コマンドレジスタRGiを特定する1バイト長のレジスタ番号と、コマンドレジスタRGiへの1バイト長の設定値の一組である。先に説明した通り、外付けROM41には、このような構成のSEQコードやSACコードが、各々、複数種類記憶されており、本明細書では、これらを、SACコード群(一群のSEQコード)、SEQコード群(一群のSACコード)と称することがある。
【0128】
図5に示す通り、外付けROM42に格納されている音声データSNDには、一単位の音声演出を実現する音声フレーズデータの他に、上記したSACコード群やSEQコード群が含まれる。そして、一単位の音声演出を実現する音声フレーズデータは、一のフレーズ番号で特定され、終了コード(FFFFh)で完結する一のSACコードや一のSEQコードも、各々、一のSACコード番号や一のSEQコード番号で特定されるようになっている。
【0129】
そして、SEQj起動用の一群のコマンドレジスタRGjに、SEQコード番号やその他の動作条件を設定すれば、シーケンサSEQjを起動させることができる。また、SACi起動用の一群のコマンドレジスタRGiに、SACコード番号やその他の動作条件を設定すれば、シンプルアクセスコントローラSACiを起動させることができる。但し、定期SAC動作については、自動的に起動するので、SAC起動処理が不要である。
【0130】
先に説明した通り、一単位の音声演出を実現する多数の音声フレーズデータは、他のSACコード群やSEQコード群と共に、電源投入時に、外付けROM42からDDRメモリ41に転送される。そして、本実施例の場合、DDRメモリ41は、高速アクセスが可能なDDR3SDRAMで構成されているので、音声フレーズデータの高速アクセスが可能となり、サンプリング周波数を48kHz又はそれ以上とする高音質の音声フレーズデータを扱うことができる。
【0131】
以上を踏まえて、次に、サウンドコントールモジュール81(SCM81)について説明する。実施例のSCM81は、間欠的に動作を開始して、サウンドエンジン52の内部動作を制御している。具体的には、SCM81は、音声フレーズデータのサンプリング周波数(48kHz)に対応して、例えば、サンプリング周期(1/48kHz)の32倍であるサウンドエンジン動作周期(32/48mS)毎に、コマンドレジスタRGiの設定値を更新可能に構成されており、もし設定値が更新されると、更新後のコマンドレジスタRGiの設定値に基づいた内部動作が開始される。
【0132】
このSCM81が参照するコマンドレジスタRGiは、各々、1バイト長のレジスタ番号で特定されるよう構成されており、各コマンドレジスタRGiには、シーケンサSEQやシンプルアクセスコントローラSACを含んだ、サウンドエンジン52の内部動作を規定する設定値が設定されるか、或いは、サウンドエンジン52の内部動作状態を示すステイタス情報が記憶されるになっている。なお、先に説明したシーケンサSEQやシンプルアクセスコントローラSACの起動時のように、複数のコマンドレジスタRGi~RGjへの設定値に基づいて内部動作が規定される場合もあり、また、1バイト長のステイタス情報の1ビット又は複数ビットのフラグ値によって内部動作状態が特定される。
【0133】
次に、メインジェネレータ84には、DDRメモリ41から読み出した複数の圧縮状態のフレーズデータを独立的に伸張可能な複数チャンネルの音声デコーダと、音声デコーダの複数チャンネルのデコード出力を受けて、伸張状態の各フレーズデータについて、ボリューム設定や音量パン設定などを実行可能なトーンジェネレータが含まれている。
【0134】
また、マルチエフェクタ85には、トーンジェネレータが生成した複数チャンネルのデジタル音声を、最高3チャンネル(R0/L1 +R1/L1 +SUB0/SUB1 )のデジタル音声にミキシングするミキサと、デジタルフィルタ処理によって所望の周波数特性を実現するイコライザ機能や入出力ゲイン特性を変化させるコンプレッサ機能を実現するエフェクタと、最終音量を規定するトータルボリュームとが含まれている。
【0135】
一方、オーディオインタフェイス86は、最高3チャンネル(R0/L1 +R1/L1 +SUB0/SUB1 )のデジタル音声について、各チャンネルの左右チャンネル(R/L )を纏めた音声信号線SD0~SD2と、クロック信号線SCLKと、左右チャンネル(R/L )の何れを伝送中かを特定する制御信号線LROとの3線に出力する。例えば、第1チャンネル(R0/L0 )と、第2チャンネル(R1/L1 )と、第3チャンネル(SUB0/SUB1 )の音声信号を受ける3個のデジタルアンプ43が存在する場合には、オーディオインタフェイス86とデジタルアンプ43との伝送路は、各々、3線となる。但し、本実施例では、第3チャンネル(SUB0/SUB1 )の音声信号を使用しておらず、また、第2チャンネルはモノラル音声としている(R1=L1 )。
【0136】
次に、
図9は、中継レジスタ82と、コマンドインタフェイス部(音声コマンドFIFO)83の構成を示す図面である。この実施例では、ホストCPU50が、サウンドエンジン52の内部動作を規定するべく所定のコマンドレジスタRGiをWRITEアクセスする場合も、コマンドレジスタRGiからステイタス情報をREADアクセスする何れの場合も、中継レジスタ82を経由する間接アクセス方式を採っている。
【0137】
また、WRITEアクセス時には、後述するシステム制御アクセス時を除き、コマンドレジスタRGiへの書込みデータ(設定値)が、WRポインタとRDポインタで制御されるFIFO構造の音声コマンドバッファ83(音声コマンドFIFO)に自動的に蓄積されるようになっている。
【0138】
以下、この点を
図9(a)に基づいて更に説明すると、中継レジスタ82は、詳細には、アクセス対象となるコマンドレジスタRGiを特定する1バイト長のレジスタ番号を書込む第1中継レジスタMCRと、そのレジスタ番号のコマンドレジスタRGiに設定すべき設定値を書込む第2中継レジスタMCDと、第1中継レジスタMCRと第2中継レジスタMCDの各1バイトの要部データが転記される転記レジスタTRNと、に区分されている。
【0139】
ここで、転記レジスタTRNは2バイト長であり、第1と第2の中継レジスタMCR,MCDは、各々4バイト長である。そして、各中継レジスタMCR,MCDの要部である各1バイト部分(レジスタ番号/設定値)は、全体として2バイト長の転記レジスタTRNに接続されており、中継レジスタMCR,MCDへの書込み信号(WR*CS)に基づいて、自動的に転記されるよう構成されている。なお、WR*CSは、ホストCPU50から出力される書込み制御信号WRと、中継レジスタMCR,MCDを選択する内部チップセレクト信号CSの論理AND値を意味する。
【0140】
図9(b)は、この転記動作を説明する図面であり、第1中継レジスタMCRへのWRITEアクセスを示す第1書込み信号(WR*CS)と、第2中継レジスタMCDへのWRITEアクセスを示す第2書込み信号(WR*CS)と、第1書込み信号と第2書込み信号の論理OR信号とが示されている。そして、この実施例では、第1書込み信号か第2書込み信号のうち、先に発生した先行書込み信号(WR*CS)に基づいて、転記レジスタTRNへの1バイト(レジスタ番号又は設定値)の転記動作が実行されると共に、WRポインタが更新される。
【0141】
そして、その後に発生する後続書込み信号(WR*CS)に基づいて、転記レジスタTRNへの残り1バイト(レジスタ番号又は設定値)の転記動作が実行されると共に、後続書込み信号(WR*CS)の後段エッジに同期して、転記レジスタTRNの2バイトデータ(レジスタ番号+設定値)が、リングバッファ構造の音声コマンドバッファ83に書込まれるようになっている。なお、音声コマンドバッファ83の書込み先は、WRポインタで特定され、読出し先は、RDポインタで特定される。そして、音声コマンドバッファ(音声コマンドFIFO)83の段数は、例えば、511段(2バイト×511)である。
【0142】
本実施例は、上記の通りに構成されているので、ホストCPU50が、中継レジスタMCR,MCDに必要情報(レジスタ番号と設定値)を書込む毎に、その必要情報が自動的に音声コマンドバッファ(音声コマンドFIFO)83に蓄積されることになる。したがって、ホストCPU50は、サウンドエンジン52の内部動作を特に気にすることなく、自らのタイミングで中継レジスタMCR,MCDへの書込み動作を繰り返すことができる。但し、音声コマンドバッファ83の段数が511段であること、及び、サウンドエンジン動作周期(32/48mS)に対応して、音声コマンドバッファ83の読み出し周期が32/48mSであることを考慮すべきことは当然である。
【0143】
なお、ホストCPUは、任意のコマンドレジスタRGiに、任意の設定値を書込む直接WRITEアクセスだけでなく、SACi起動用の一群のコマンドレジスタRGiに、SACコード番号やその他の動作条件を設定するSAC起動動作や、SEQj起動用の一群のコマンドレジスタRGjに、SEQコード番号やその他の動作条件を設定すれSEQ起動動作も可能である。但し、何れの場合も、原則として、中継レジスタ82や音声コマンドバッファ83を経由する間接アクセス方式を採る必要がある。
【0144】
図9(c)に示す通り、音声コマンドバッファ83に蓄積された2バイト(レジスタ番号+設定値)単位のデータ群は、サウンドエンジン動作周期(32/48mS)で、SCM81によって読み出され、レジスタ番号で特定される所定のコマンドレジスタRGiに、所定の設定値が設定されることで、サウンドエンジン52内部動作が変化する。
【0145】
具体的には、例えば、所定のコマンドレジスタRGiに、特定の音声フレーズ番号が設定されることで、特定一単位の音声演出が開始される。また、所定のコマンドレジスタRGiに、音声ボリュームや音量パンを規定する設定値が設定されることで、その後の音声演出の音量や音量バランスが変化する場合もある。
【0146】
更にまた、所定のコマンドレジスタRGiに、SACコード番号やSEQコード番号などを設定することで、シンプルアクセスコントローラSACやシーケンサSEQが、一連のSACデータや一連のSEQデータに基づいた設定動作を開始する場合もある。
【0147】
以上の通り、コマンドレジスタRGiに設定値を書込む動作は、原則として、音声コマンドバッファ83を経由させ、SCM81に実行させている。しかし、SCM81は、サウンドエンジン動作周期(32/48mS)で間欠的に動作するので、迅速性に欠ける点に問題がある。そこで、サウンドエンジン52の内部エラーなどのステイタス情報の読出し動作(READアクセス)や、割込み制御など、サウンドエンジンの制御動作に関する設定(システム制御アクセス)については、音声コマンドバッファ83やSCM81を介在させることなく、ホストCPU50が直接アクセスする方式を採っている。
【0148】
すなわち、ホストCPU50が、サウンドエンジンの制御動作に関するコマンドレジスタRGiのレジスタ番号を、第1中継レジスタMCRに書き、システム制御設定値を第2中継レジスタMCDに書いた場合には(システム制御アクセス)、システム制御設定値が即座に該当するコマンドレジスタRGiに書込まれる。また、ホストCPU50が、所定のコマンドレジスタRGiをREADアクセスした場合は、第1中継レジスタMCRに書き込んだコマンドレジスタRGiから読み出されたステイタス情報が、第2中継レジスタMCDに取得される。
【0149】
以上、SCM81が機能してコマンドレジスタRGiの設定動作を実行する第1動作モード(通常制御モード)について説明したが、本実施例では、SCM81の動作をVDPコントローラ60が代用する第2動作モード(簡易制御モード)も可能である。この第2動作モードでは、サウンドエンジン52を第2動作モードに設定した状態で、ホストCPU50は、音声リストバッファLBUFに、コマンドレジスタRGiへの設定動作を規定した音声コマンドリストSLTを発行することになる。
【0150】
なお、音声リストバッファLBUFは、メインメモリ56、内蔵DRAM57、又はDDRメモリ41に予め確保されている必要がある。また、音声コマンドリストSLTは、コマンドレジスタRGiへの設定動作が必要となるタイミングで発行される。
【0151】
図8の上部に記載した音声リストバッファLBUFに示す通り、音声コマンドリストSLTは、コマンドレジスタRGiのレジスタ番号(1バイト)と、そのコマンドレジスタRGiへの設定値(1バイト)を組み合わせた2バイト長の音声コマンドを列記した音声コマンド列であり、その先頭には、列記されている音声コマンドのコマンド数が規定されている。
【0152】
そして、第2動作モード(簡易制御モード)では、音声リストバッファLBUFに発行された音声コマンドリストSLTは、VCPコントローラ60によって解読され、各音声コマンドが規定するレジスタ番号のコマンドレジスタRGiに、その音声コマンドが規定する設定値が設定される。すなわち、第2動作モードでは、SCM81の動作をVDPコントローラ60が代用するので、シンプルアクセスコントローラSACやシーケンサSEQが機能することがない。
【0153】
そのため、SAC起動動作を規定する音声コマンドや、SEQ起動動作を規定する音声コマンドを検出したVCPコントローラ60は、SACコード番号で規定される一群のSACデータや、SEQコード番号で規定される一群のSEQデータを、DDRメモリ41から読み出して、対応するコマンドレジスタRGi~RGjに設定することになる。なお、このVCPコントローラ60による設定動作でも、中継レジスタ82と音声コマンドバッファ83が使用される。
【0154】
以上説明した第2動作モード(簡易制御モード)を使用する場合には、ホストCPU50は、画像コマンドリストLTの発行と同様の手順で、コマンドリストバッファLBUFに音声コマンドリストSLTを発行することになる。そして、発行された音声コマンドリストは、バンクフリップ周期である一動作周期(Δ=1/30秒)後に、VDPコントローラ60に読み出されて、上記したコマンドレジスタRGiへの設定動作が実行される。
【0155】
一方、第1動作モードによる設定動作は、サウンドエンジン動作周期(32/48mS)毎に実行されるので、第2動作モードによる設定動作は、その簡易性の反面、迅速性に劣る欠点がある。そこで、この時間遅れが問題になる場合には、コマンドリストバッファLBUFに代えて、VDPコントローラ60に内蔵された制御レジスタCRGの音声コマンドリストレジスタCRGWSLに、一群の音声コマンド列(音声コマンドリストSLT)を書き込んで、第2動作モードを実行するのが好適である。
【0156】
実施例の音声コマンドリストレジスタCRGWSLは、1040バイト長であり、音声コマンド(2バイト)を、511個程度列記することができる。先に説明した通り、サウンドエンジン52に内蔵された音声コマンドバッファ(音声コマンドFIFO)83の段数は、例えば、511段(2バイト×511)であるので、ホストCPU50の書込み用の制御負担という意味では、音声コマンドリストレジスタCRGWSLと、音声コマンドバッファ83とは同等である。
【0157】
しかし、ホストCPU50が、音声コマンドリストレジスタCRGWSLに音声コマンドリストSLTを発行した後、VDPコントローラ60が、サウンドエンジン52へのWRITEアクセスを開始するに過ぎないので、迅速性においては、ホストCPU50による音声コマンドバッファ83のWRITEアクセスの方が優れている。
【0158】
続いて、
図10に基づいて、DMAコントローラ53について説明する。
図10(a)は、電源投入時の動作、
図10(b)は、ランプ演出や役物演出の駆動データ更新時の動作を示している。実施例のDMAコントローラ53は、独立して動作可能な14チャンネル(DMAチャネル#0~DMAチャネル#13)を有しているが、本実施例では、電源投入時にチャネル#0を機能させて、外付けROM42の音声データSNDを、DDRメモリ41にDMA転送している。
【0159】
具体的には、ホストCPU50は、DMAの使用チャンネルとしてDMAチャネル#0を特定した状態で、(1)転送元の先頭アドレス、(2)転送元からDMAコントローラ53に対する一回の読出しサイズ(バイト長)、(3)DMAコントローラ53へのREAD転送回数、(4)転送先の先頭アドレス、(5)DMAコントローラ53から転送先に対する一回の書込みサイズ(バイト長)、(6)転送先へのWRITE転送回数、などの動作内容を、先ずDMAコントローラ53の該当レジスタに特定する。
【0160】
次に、ホストCPU50が、DMAコントローラ53の該当レジスタ(チャネル0コントロールレジスタ)に動作開始を指示すると、上記した(1)~(6)の動作条件でDMA転送が開始され、転送元と転送先のアドレスが適宜に更新されつつ、読出しサイズと書込みサイズの転送動作が繰り返され、全ての転送動作が終わると、DMAコントローラ53の該当レジスタ(DMA割り込みステータスレジスタ)の完了フラグがセット状態になるようになっている。
【0161】
したがって、ホストCPU50は、(1)~(6)などの動作内容を指示して、動作開始を指示した後は、転送動作をDMAコントローラ53に任せ、全く別の処理を実行することができる。また、本実施例では、DMAコントローラ53に、一回の読出しサイズ、READ転送回数、一回の書込みサイズ、及び、書込み転送回数を各々設定できるので、転送元と転送先のアクセス速度の差を円滑に吸収することができ、また、転送元の読出し単位や、転送先の書込み単位が限定されている場合でも、適切な転送動作が実現される。
【0162】
次に、
図10(b)は、ランプ演出や役物演出の駆動データ更新時におけるDMAコントローラ53の動作を説明する図面である。本実施例では、ランプ演出は、3mS毎にランプ駆動データが更新されることで進行し、役物演出は、1mS毎にモータ駆動データが更新されることで進行するよう構成されている。そして、ランプ駆動データやモータ駆動データは、各々、外付けROM42のランプ駆動データテーブルLMPc,LMPdや、モータ駆動データテーブルMOTe,MOTfに不揮発的に格納されており、これらのデータテーブルLMP,MOTが、DMAコントローラ53の転送元となる。
【0163】
先に説明した通り、本実施例では、シリアルポート55のチャネル#C~チャネル#Fを、シリアル出力ポートに設定して、ランプ演出と役物演出を実現しているので、シリアルポート55のチャネル#C~チャネル#Fが、DMAコントローラ53にとっての転送先となる。
【0164】
また、シリアルポート55のチャネル#C~チャネル#Fには、16ビット単位の記憶領域64段で構成された送信FIFOc~送信FIFOfが各々設けられており、送信FIFOc~送信FIFOfに蓄積された駆動データが、FIFO(First In First Out)方式で自動的に読み出され、チャネル#C~チャネル#Fのシリアル出力ポートからシリアル送信されるようになっている。
【0165】
ここで、送信FIFOc~送信FIFOfへのデータ蓄積は、各チャネル#C~#Fのインタフェイス部に配置された中継レジスタITM(データレジスタ)を経由するようになっており、中継レジスタへの書込みデータが、送信FIFOに自動的に蓄積される構成を採っている。したがって、この実施例では、DMAコントローラ53にとってWRITE転送の転送先は、シリアルポート55のチャネル#C~チャネル#Fに配置されている中継レジスタITMとなり、READ転送の転送元が、駆動データテーブルLMP,MOTとなる。
【0166】
そして、データテーブルLMPcとデータテーブルLMPdのランプ駆動データ、及び、データテーブルMOTeとデータテーブルMOTeのモータ駆動データは、各々、DMAチャネル#10~DMAチャネル#13を経由して、外付けROM42からシリアルポート55のチャネル#C~#Fの中継レジスタITMにDMA転送されるよう構成されている。
【0167】
なお、データテーブルLMP,MOTからDMAコントローラ53(#10~#13)への転送は、32バイト毎に実行される一方、DMAコントローラ53(#10~#13)からシリアルポート55(#C~#F)の中継レジスタITMへの転送は、2バイト毎に実行される。すなわち、DMAコントローラ53(#10~#13)は、一の転送で受けた32バイトを、16回に分けて転送している。
【0168】
また、書込み転送の実行タイミングを規定する閾値が、予め、ホストCPU50によって各シリアルポート55(#C~#F)に設定されており、送信FIFO(送信FIFOc~送信FIFOf)の蓄積データ量が所定の閾値以下になると、シリアルポート55からDMAコントローラ53にDMA_Request信号が出力され、DMAコントローラ53は、DMA_Acknowledge信号を返信して、一単位(2バイト長)の書込み転送を実行している。なお、これらのHandshake 動作に、ホストCPU50が関与する必要がないので、DMAコントローラの転送動作を開始させたホストCPU50は、その転送動作を待機するだけで足りる。
【0169】
続いて、
図11~
図13に基づいて、シリアルポート55(#C~#F)と、シリアルポート55(#C~#F)を使用したシリアル伝送について説明する。先ず、シリアルポートの内部構成を示す
図11(a)に基づいて説明すると、シリアルポート55のチャネル#Eと#Fは、SPI通信モードで動作する一方、シリアルポート55のチャネル#Cと#Dは、LED駆動モードで動作するように設定されている。
【0170】
ここで、SPI通信モードとは、Motorola SPIに準拠して、マスター機器とスレーブ機器とのシリアル通信を可能にする動作モードであり、SPIモジュールが機能することで、チップセレクト(CS)と、シリアルクロック(SCK)と、シリアル入力データ(SI)と、シリアル出力データ(SO)とが使用可能となっている。但し、本実施例では、スレーブ機器を選択するチップセレクト信号(CS)を使用しない。また、以下の説明では、SPI通信モードでシリアル送信動作を実行する場合をSPI送信モードと称し、SPI通信モードでシリアル受信動作を実行する場合をSPI受信モードと称する。
【0171】
SPI送信モードで機能するシリアルポート55のチャネル#Eと#Fでは、各チャネル(#E,#F)の送信FIFOに蓄積されたシリアル出力データ(モータ駆動データ)が、シリアルクロックSCKに同期して、シリアル送信される。そして、送信FIFOの全てのモータ駆動データがシリアル送信され終わると、各チャネル(#E,#F)のステイタスレジスタ(不図示)が送信完了状態にセットされるようになっている。なお、
図10に関して説明した通り、送信FIFOには、Handshake 方式で、モータ駆動データテーブルMOTe,MOTfのモータ駆動データが自動的に転送される。
【0172】
一方、LED駆動モードは、上記したSPIモジュールに加えて、LEDドライバ用の追加モジュール(DR IF Moduleと表記)が機能する動作モードである。このLED駆動モードでは、シリアルクロック(SPCK)と、シリアル出力データ(SPO)と、OE信号(output enable )とが出力されるよう構成されている。OE信号は、一群のシリアル出力データ(ランプ駆動データSPO)がシリアル送信中であることを示す信号である。なお、このLED駆動モードでは、一ブロックのデータ送信完了毎にラッチ信号(LD)を出力させる動作も可能であるが、本実施例では、そのような動作態様を採っていない。
【0173】
LED駆動モードで機能するシリアルポート55のチャネル#Cと#Dでは、各チャネル(#C,#D)の送信FIFOに蓄積されたシリアル出力データ(ランプ駆動データ)が、シリアルクロックSCKに同期して、順次シリアル送信され、このシリアル送信中は、OE信号がアクティブレベルを維持する。
【0174】
また、このLED駆動モードの動作態様でも、送信FIFOの全てのモータ駆動データがシリアル送信され終わると、各チャネル(#C,#D)のステイタスレジスタ(不図示)が送信完了状態にセットされるようになっている。なお、チャネル#Cと#Dの送信FIFOには、Handshake 方式で、ランプ駆動データテーブルLMPc,LMPdのランプ駆動データが自動的に転送される。
【0175】
以上を踏まえて、モータ駆動データのシリアル伝送について説明を追加する。
図11(c)は、モータ駆動データテーブルMOTe,MOTfの構造を図示しており、
図11(d)と
図11(e)は、モータ駆動を説明する図面である。
【0176】
先に説明した通り、本実施例では、枠側と盤側のモータ駆動基板37,30に配置されたモータドライバDV(
図12(a)参照)に対して、モータ駆動データをシリアル送信する。モータ駆動基板37,30には、各々、複数のモータドライバDV1~DVnが配置されているが、
図12(a)~
図12(b)に示す通り、各モータドライバDViは、直列接続された4個のシフトレジスタSR1~SRE4と、各シフトレジスタの出力を受けて役物モータMiを駆動するドライバOUT1~OUT4と、を有して構成されている。
【0177】
そのため、シリアルポート(#E,#F)から、シリアルクロックSCKに同期して、モータ駆動データSOを出力すると、モータ駆動データSOが、順次、シフトレジスタSRiに転送されることなる。本実施例では、モータドライバDViの個数Nに対応するモータ駆動データが、モータ駆動テーブルMOTに記憶されており、全てのモータ駆動データの送信完了後に、パラレルポート54からラッチパルスLTe,LTfを出力することで、全てのモータドライバDVにモータ駆動データを取得させ、役物モータM1~Mnを歩進させている。
【0178】
役物モータM1~Mnは、例えば、ステッピングモータで構成されており、
図11(d)と
図11(e)には、ユニポーラ型ステッピングモータを、例えば、2相励磁する場合が示されている。このような構成の場合、役物モータMiの一個に伝送されるべきモータ駆動データは4ビットであり、枠側のモータ駆動基板37にK個の役物モータが配置される本実施例では、モータ駆動データ全体で4×Kビットとなる。また、盤側のモータ駆動基板30にL個の役物モータが配置される本実施例では、モータ駆動データ全体で4×Lビットとなる。
【0179】
ところで、本実施例では、DMA転送を採用するので、モータ駆動テーブルMOTe,MOTfからDMAコントローラ63(チャネル#12,#13)へのデータ転送、及び、DMAコントローラ63(チャネル#12,#13)からシリアルポート55(チャネル#E,#F)へのデータ転送は、何れも所定バイトを一単位として行う必要がある。
【0180】
本実施例では、例えば、2バイト単位にDMA転送を繰り返しており、DMA転送されるモータ駆動データの総ビット数は、16ビットの整数倍である必要がある。そこで、本実施例では、モータ駆動データテーブルMOTe,MOTfの先頭に、必要ビット(X,Y)のダミーデータDUMMY を追加することで、4×K+Xの値や、4×L+Yの値を16ビットの整数倍にしている。
【0181】
図11(c)は、この状態を図示しており、モータ駆動データテーブルMOTe,MOTfの先頭には、必要個数(X,Y)のダミーデータDUMMY が付加されている。そのため、シリアルポート(#E,#F)が出力するシリアルクロックSCKの個数は、4×K+X個、又は4×L+Y個となるが、先頭に送信されるX個又はY個のダミーデータDUMMY は、これを受け取るモータドライバが存在せず消滅するので何の問題も生じない。
【0182】
なお、4×K+Xビット、又は、4×L+Yビットのモータ駆動データは、ステッピングモータの一動作態様を特定するので、ユニポーラ型ステッピングモータを2相励磁する本実施例では、最低でも、第一動作態様から第四動作態様までの四態様が存在することになり(
図11(e)参照)、モータ駆動データテーブルMOTは、最低でも、この四態様を特定する第一区分データ~第四区分データが必要となり、これらが順番に送信されることになる(
図11(c)参照)。
【0183】
もっとも、このような動作は、複数個の役物モータが、規則的に同期回転する単純な動作に過ぎず、実際の役物演出では、特定の役物モータだけが不規則に移動する場合も多い。したがって、実際には、役物演出の種類毎に、多数のモータ駆動データテーブルMOTiが用意されており、ホストCPU50は、その時の役物演出に対応して、参照すべきモータ駆動テーブルMOTiを選択し、シリアル出力すべき一区分のモータ駆動データ(4×K+Xビット、又は、4×L+Yビット)を特定して、DMA転送動作とシリアル送信動作を開始させることになる。
【0184】
以上、SPI送信モードについて説明したが、シリアルポート55のチャネル#Eと#Fは、SPI受信モードで機能するタイミングもある。この場合は、シリアルデータの受信個数を、予めチャネル#Eと#Fの該当レジスタに設定した状態で、受信モードの動作を開始する。すると、受信データ個数に対応するシリアルクロックSCKが送信されるので、シリアルクロックSCKに同期してシリアルデータ(センサ信号など)を受信し、所定単位毎に、パラレルデータとしてホストCPU50が取得することになる。
【0185】
図11(d)は、シリアル受信動作を説明する図面であり、信号取得回路GETの回路構成も示されている。なお、図示した構成の信号取得回路GETが、枠側及び盤側には、一個又は複数個が連設して配置されている。何れにしても、一の信号取得回路GETは、8個のシフトレジスタを有して構成され、各シフトレジスタのパラレル端子ODには、8ビットのパラレル信号(A~H)が供給されている。そして、各シフトレジスタが、共通的に取得パルスLT(LTe,LTf)を受けることで、8ビット長のパラレル信号が8個のシフトレジスタに取得される。図示の通り、8個のシフトレジスタは、直列接続されているので、シリアルクロックSCKを受ける毎に、自己の保持データを下流側のシフトレジスタに転送することになる。
【0186】
枠側及び盤側の信号取得回路GETは、何れも上記の通りに動作をするので、本実施例では、パラレルポート54から、枠側又は盤側の全ての信号取得回路GETに対して、先ず、取得パルスLTe,LTfを出力し、その後、必要個数のシリアルクロックSCKを出力することで、必要なデータをシリアル受信している。
【0187】
なお、この実施例では、シリアルポート55のチャネル#Eと#FをSPI送信モードと、SPI受信モードで使用するので、パラレルポート54から枠側と盤側の切換器47A,47Bに対して、切換制御信号CTLe,CTfを出力して、シリアルクロックSCKe,SCKfの伝送先を切り換えている。
【0188】
すなわち、切換制御信号CTLe,CTfによって切換器47A,47Bの内部回路が切換ることで、SPI送信モードで機能するチャネル#Eと#FのシリアルクロックSCKe,SCKfは、モータドライバDVに伝送され、SPI受信モードで機能するチャネル#Eと#FのシリアルクロックSCKe,SCKfは、枠側と盤側の信号取得回路GET,GETに伝送される。
【0189】
続いて、
図13に基づいて、LED駆動モードで機能するシリアルポート55のチャネル#Cと#Dについて、
図13に基づいて説明する。この実施例では、枠側と盤側のランプ駆動基板3629には、
図13(b)に示すランプドライバDRが各々複数個搭載されている。
【0190】
このランプドライバDRは、RGB三色のLEDランプを各8個(合計24個)駆動できるよう構成されており、
図13(b)に示す通り、合計24個の出力端子(LEDR_1-8,LEDG_1-8,LEDB_1-8)と、各素子に固有のスレーブアドレスを規定する5ビットのアドレス端子(A0~A4)と、シリアルクロックSPCKc/SPCKdを受けるクロック端子SCLKと、ランプ駆動データSPOc/SPOdを受けるシリアル端子SDATAと、動作制御信号OEc/OEdを受ける制御端子SDENとを有して構成されている。
【0191】
図13(a)に示す通り、クロック端子SCLKとシリアル端子SDATAと制御端子SDENは、全てのランプドライバDR1~DRnに共通的に供給されている。また、
図13(a)には、32個のランプドライバDRiのアドレス端子(A0~A4)に、00000b~11111bのアドレス信号が供給されており、32個のランプドライバDRiのスレーブアドレスが、0~31である実施例が示されている。したがって、この構成では、RGB各色のLEDランプが、各々、256個(=32×8)配置できることになる。
【0192】
また、このランプドライバDRは、24個(RGB各色が8個)のLEDランプについて、各々、発光輝度を階調制御(Brightness Control)できるよう構成されており、8ビットで規定されるデューティ比を設定可能な24個を含め、合計で30個の内蔵レジスタ(R1~R30)が内蔵されている。各内蔵レジスタ(R1~R30)には、階調を規定するデューティ比など、8ビット長の設定データが設定される必要があり、各内蔵レジスタには、8ビット長のレジスタアドレス(00h~1Dh)が付与されている。
【0193】
したがって、ランプドライバDRが駆動対象とする24個のLEDランプの発光輝度を制御するには、そのランプドライバDRのスレーブアドレスを特定した状態で、合計30個の内蔵レジスタ(R1~R30)に、必要な設定データを伝送する必要がある。
【0194】
図13(c)は、ランプドライバDRの所定の内蔵レジスタに、8ビット長の設定データを書込む場合の動作手順を示すタイムチャートである。図示の通り、制御端子SDENをアクティブレベルに維持した状態で、クロック端子SCLKに供給されるシリアルクロックに同期して、スレーブアドレスをシリアル伝送し、その後、内蔵レジスタを特定するレジスタアドレスをシリアル伝送する必要がある。
【0195】
以上の動作の後、特定された内蔵レジスタに設定すべき設定データをシリアル伝送することになるが、このランプドライバDRでは、制御端子SDENがアクティブレベルである状態で、24個目のシリアルクロックの立ち上がりエッジで、それ以前に特定されている内蔵レジスタに、3番目に伝送された設定データが書込まれるよう構成されている(制御端子SDENへの信号を必要とする3線伝送方式)。
【0196】
以上、特定の内蔵レジスタに設定データを設定する場合を説明したが、全ての内蔵レジスタ(R1~R30)に設定データを設定する場合は、
図13(e)の動作となる。すなわち、制御端子SDENをアクティブレベルに設定した状態で、スレーブアドレスをシリアル伝送し、その後、先頭のレジスタアドレス(00h)をシリアル伝送した上で、その内蔵レジスタへの設定データをシリアル送信する。
【0197】
これらの動作によって、先頭の内蔵レジスタ(R0)への設定動作は完了するが、その後もシリアル伝送を継続すると、スレーブアドレスが内部動作よってインクリメントされ、その後、シリアル伝送された設定データが8ビットに達する毎に、各内蔵レジスタ(R1~R29)に、設定データが設定されることになる。
【0198】
実施例のランプドライバDRは、上記の通りに動作するので、1個のランプドライバDRに設定データを書込むには、合計で、256個のシリアルクロックを伝送すべきことになる。なお、この256個は、伝送データのビット数と同じであり、スレーブアドレス8ビット分と、レジスタアドレス8ビット分と、30個の内蔵レジスタに対する30×8ビット分の総数である。以上の動作に対応して、シリアルポート55のチャネル#Cとチャネル#Dは、
図13(d)のように動作する必要がある。
【0199】
ところで、実施例の複合チップでは、LED駆動モードで動作するシリアルポート55は、シリアル送信の一単位である1サンプルのビット長を規定する必要がある。また、LED駆動モードでは、上記した3線伝送方式に対応するべく、1フレームの単位で、Output Enable 信号として、OEc/OEd信号が出力されるよう構成されているので、1フレームを構成するサンプル数を特定する必要がある。
【0200】
図13(a)に示す通り、OEc/OEd信号は、ランプドライバDRの制御端子SDENに供給されており、このSDEN端子がHレベルであることが、ランプドライバDRの動作可能条件となる。そして、先に説明した通り、1個のランプドライバDRに伝送されるべきデータの総量は、256ビットである。
【0201】
そこで、以上の点を考慮して、本実施例では、1サンプルを16ビット長と、16個のサンプル(各16ビット長)で1フレームを構成している。
図11(b)は、この関係を図示したものであり、ランプ駆動データテーブルLMPc,LMPdには、16×16ビットの単位で、各ランプドライバDRに伝送すべきランプ駆動データが保存されている。なお、ランプ演出は、時間経過と共に進行するので、最低でも動作態様に対応するランプ駆動データテーブルLMPc,LMPdが用意されている。
【0202】
役物演出の場合と同様、ランプ演出においても、全てのLEDランプが同期的に点灯/消灯するとは限らず、特定一群のLEDランプだけが点灯/消灯する場合もある。そのため、実際には、多数のランプ駆動データテーブルLMPc,LMPdが用意されている。但し、何れのランプ駆動データテーブルLMPc,LMPdでも、1個のランプドライバDRに伝送すべきランプ駆動データは16×16ビット(32バイト)であり、モータ駆動データテーブルMOTe,MOTfの場合のようなダミーデータDUMMY は不要である。
【0203】
すなわち、モータ駆動データテーブルMOTe,MOTfからDMAコントローラ63(チャネル#10、#11)には、32バイト単位でDMA転送動作が実行され、DMAコントローラ63(チャネル#10、#11)からシリアルポート55(チャネル#C、#D)の送信FIFOに対しては、2バイト単位で、DMA転送動作が実行される。そして、送信FIFOのランプ駆動データのシリアル送信が完了すれば、各チャネル(#C,#D)のステイタスレジスタ(不図示)が送信完了状態にセットされる。
【0204】
以上、1個のモータドライバへの転送データ数が16×16ビットの場合を説明したが、モータ駆動データテーブルMOTe,MOTfからDMAコントローラ63へのデータ転送単位や、DMAコントローラ63から送信FIFOへのデータ転送単位に整合しない場合には、転送単位に整合するよう適宜なダミーデータDUMMY を付加すれば良い。
【0205】
また、
図13では、3線伝送方式について使用したが、ランプドライバの制御端子SDENを使用しない2線伝送方式を採用するのも好適である。この場合には、制御端子SDENを使用しないので、
図14(a)に示す通り、OEc/OEd信号は活用されない。
【0206】
この2線伝送方式では、伝送されるシリアルビット列が、
図14(c)に示すビット態様のスタート条件を満たすと、各ランプドライバDRiがアクティブ状態となる。但し、スタート条件(9ビット)、スレーブアドレス(8ビット)、レジスタアドレス(8ビット)、設定データ(8ビット)の区切り毎にBLANK ビットを出力する必要がある。そして、BLANK ビットの立ち上がりエッジで、各ビット列がランプドライバDRiに把握され、30個の内蔵レジスタの何れかにに設定データが取得される、
【0207】
この2線伝送方式の動作態様でも、先頭の内蔵レジスタのレジスタアドレスを送信した後は、レジスタアドレスが内部動作によって自動的にインクリメントされるので、一個のランプドライバDRの全ての内蔵レジスタ(30個)に設定データを設定するには、10+9+9+9×30=298ビットのシリアルデータの送信が必要となる。このように2線伝送方式の場合には、1個のランプドライバDRへの送信データ数が、スタートビット(9ビット)と、BLANK ビットの分だけ増加するが、複数のランプドライバに対して、一気にシリアルデータの伝送を終えることができる利点がある。
【0208】
すなわち、3線伝送方式の場合には、1個のランプドライバDRへの256ビットのシリアル伝送毎に、OE信号を出力し直す必要があるが、2線伝送方式では、N個のランプドライバDR1~DRnに対して、合計298×Nビットのデータを一気に出力することができるので、ホストCPU50の制御負担が軽減される。
【0209】
図14(d)は、LED駆動モードで機能するシリアルポート55のチャネル#Cや#Dにおいて、例えば、32個のランプドライバDR1~DR32を駆動する場合を図示しており、合計9536ビットのデータが、1サンプルを構成する16ビット毎に、596個のサンプルデータとして、シリアル伝送される状態を示している。
【0210】
この実施例の場合、1サンプルは、DMA転送の転送単位に一致しており(
図11(a)参照)、DMAコントローラ63からシリアルポート55の送信FIFOへの転送回数が596回である。なお、2線伝送方式では、OEc/OEd信号を活用しないことは先に説明した通りである。
【0211】
以上、シリアルポート55のチャネル#Cや#Dを、LED駆動モードで機能させる場合について説明したが、特に限定されず、SPI通信モードを使用することもできる。
図14(e)は、シリアルポート55のチャネル#Cや#Dを、SPI通信モードで機能させ、例えば、10個のランプドライバDR1~DR10を駆動する場合を図示している。
【0212】
この場合には、シリアル伝送すべき全データ数は、298×10ビットであるが、DMAコントローラ63からシリアルポート55の送信FIFOへの転送単位が16ビットであるので、12ビットのダミービットDUMMY を付加して、合計2992ビットとしている。
【0213】
そして、DMAコントローラ63からシリアルポート55の送信FIFOに対して、187回(=2992/16)のデータ転送が繰り返されつつ、合計2992ビットのシリアル伝送が一気に実行される。以上の通り、ダミービットDUMMY を付加することで、ランプドライバDRの配置個数に拘らず、シリアルポート55の送信FIFOへのDMA転送を活用したシリアル伝送が可能となる。なお、この点は、LED駆動モードであるか、SPI通信モードであるかを問わない。また、ダミービットDUMMY は、スタート条件を満たさないビット列であれば任意である。
【0214】
以上、演出制御部22の回路構成や回路動作を中心に説明したので、続いて、
図15~
図16に基づいて、演出制御部22の制御動作について説明する。演出制御部22の処理は、電源投入後に実行されるメイン処理(
図15(a))と、主制御部21から制御コマンドCMDを受けると起動される受信割込み処理(
図15(b)と、1mS毎に繰り返し起動されるタイマ割込み処理(
図6(a))と、を有して構成されている
【0215】
図15(a)は、電源投入後のホストCPU50の動作を示しており、先ず、複合チップ40の内蔵レジスタについて初期設定処理を実行して、その後の演出制御の準備を完了させる(ST10)。
図15(b)は、初期設定処理の一部を図示したものであり、先ず、DMAコントローラ63(チャネル#0)を使用して、外付けROM42に保存されている音声データSNDを、DDRメモリ41にDMA転送している。
【0216】
具体的には、
図10(a)に関して説明した通りであり、音声データSNDのDMA転送について、先ず、DMAの使用チャンネルとしてDMAチャネル#0を特定すると共に、MDA転送に必要な動作パラメータをDMAコントローラ63の該当レジスタに設定する(ST1)。設定される動作パラメータには、(1)外付けROM42における転送元の先頭アドレス、(2)転送元からDMAコントローラ53に対する一回の読出しサイズ(バイト長)、(3)外付けROM42からDMAコントローラ53へのREAD転送回数、(4)DDRメモリ41における転送先の先頭アドレス、(5)DMAコントローラ53から転送先に対する一回の書込みサイズ(バイト長)、(6)DMAコントローラ53からDDRメモリ41へのWRITE転送回数が含まれている。
【0217】
次に、ホストCPU50は、DMAコントローラ53の該当レジスタに動作開始を指示すると(ST2)、その後は、ステップST1の処理で設定した動作条件でDMA転送が開始され、転送元と転送先のアドレスが適宜に更新されつつ、読出しサイズと書込みサイズの転送動作が繰り返される。
【0218】
このDMA転送に、ホストCPU50が関与する必要はないので、続いて、外付けROMからCGデータの先読み動作(プリロード)を実行する場合には、ホストCPU50は、VDPコントローラ60の該当レジスタにその旨を設定する(ST2)。次に、ホストCPU50は、サウンドエンジン52に対して、定期SAC動作を指示する(ST4)。
【0219】
先に説明した通り、本実施例で実行される定期SAC動作は、マルチエフェクタ85におけるイコライザ機能やコンプレッサ機能を繰り返し再設定する動作であり、ステップST4の設定を受けたサウンドエンジン52は、この後、32/48×512mS毎に音質設定動作を繰り返すことになる。なお、サウンドエンジン52には複数のシンプルアクセスコントローラSACが内蔵されているので、複数種類の定期SAC動作を設定するのも好適である。
【0220】
初期設定処理(ST10)には、その他、バンクフリップ周期(1/30秒)など、VDPコントローラ60に関する動作パラメータの設定(ST5)が含まれているが、これらについては、
図17~
図19に関連して後述する。そして、最後に、電源投入後に開始される初期演出用の演出シナリオを特定して初期処理が終了する(ST6)。
【0221】
このような初期設定処理(ST10)が終わると、その後は、バンクフリップ周期(1/30秒)毎に、ステップST11~ST20の処理が無限ループ状に繰り返し実行される。そして、この無限ループ処理(ステップST11~ST20)の間に、主制御部21から制御コマンドCMDを受けることがあり、この場合には、受信割込み処理として、
図15(b)の処理が実行される。
【0222】
受信割込み処理では、受信した制御コマンドCMDが、先ず、受信バッファに格納される(ST22)。そして、格納された制御コマンドCMDは、無限ループ処理のステップST19の処理で読み出され、制御コマンドCMDに基づいた演出動作が開始される。また、制御コマンドCMDが抽選処理の結果を当選状態と特定している場合(ST23)には、その当選情報を時刻情報と共に、液晶IF基板25に配置されている不揮発性メモリ26に記憶する(ST24)。
【0223】
なお、設定キーSETが操作されたことを示す制御コマンドCMDを受けた場合には、不揮発性メモリ26に記憶されている遊技実績履歴を、表示装置DSP1に画面表示する履歴表示動作を起動させる。具体的には、履歴表示用の指令フラグFGを1にセットする(ST25)。
【0224】
この指令フラグFGは、ステップST19の処理で参照され、ステップST20などの処理を経て、必要な画像制御動作が実行される。また、この画像制御動作中に、初期化スイッチSWが操作されたことを示す制御コマンドCMDを受けた場合には、指令フラグFGが2にセットされ、その後、チャンスボタン11の押下を条件に、不揮発性メモリ26の記憶内容を全て消去する。なお、チャンスボタンの押下は、1mS毎のタイマ割込み処理において、リアルタイムに把握される(
図16のST42)。
【0225】
続いて、
図15(a)の無限ループ処理について説明する。無限ループ処理では、先ず、ステップST6の処理や、ステップST19の処理で特定された演出シナリオに基づいて、画像演出用の処理(ST11)が実行されるが、このコマンドリスト処理については、
図17において後述する。
【0226】
次に、演出開始からの経過時間と、ステップST20の処理で更新された演出シナリオとを対比して、音声演出の更新タイミングか否かが判定され(ST12)、音声演出の更新タイミングに達している場合には、音声コマンド列を、
図5や
図9に示す中継バッファ82に書き込む(ST13)。なお、この実施例では、音声コマンドリストSLTを使用しないので、ホストCPU50が中継バッファ82(MCR,MCD)を直接WRITEアクセスする。
【0227】
先に説明した通り、音声コマンドは、サウンドエンジン52のコマンドレジスタRGiのレジスタ番号(1バイト)と、そのレジスタRGiへの設定値(1バイト)を一組とする2バイト長である。そして、
図9に関して説明した通り、ホストCPU50は、レジスタ番号を含んだ4バイト長を第1中継レジスタMCRに書込むと共に、設定値を含んだ4バイト長を第2中継レジスタMCDに書込む。
【0228】
すると、中継レジスタ82から抽出された2バイト長(レジスタ番号+設定値)は、自動的に音声コマンドFIFOに蓄積されるので(
図9参照)、ホストCPU50は、一群の音声コマンド(音声コマンド列)を、同じ中継レジスタ82に繰り返し書込めば良いことなる。先に説明した通り、音声コマンドFIFOに蓄積された音声コマンド列は、サウンドエンジン52の動作周期(32/48mS)毎に、
図8に示すSCM(サウンドコントールモジュール)81によってFIFO方式で読み出され、コマンドレジスタRGiへの設定動作が実行される。
【0229】
以上のようにして音声演出を進行させた後、ランプ演出の更新タイミングか否かが判定され(ST14)、更新タイミングであれば、ホストCPU50は、ランプ駆動データテーブルLMPc,LMPdの参照位置を更新する(ST15)。なお、枠側と盤側のランプ演出の更新タイミングは必ずしも一致しないので、該当するランプ駆動データテーブルLMPc/LMPdの参照位置だけが更新される場合もある。また、
図11(b)に示すような規則的な更新に限らず、特定のLEDランプだけが点灯/消灯する場合があることも先に説明した通りである。
【0230】
次に、ホストCPU50は、ランプ駆動データテーブルLMPc/LMPdの参照位置で特定される一群のデータを、シリアルポート55のチャネル#C/#Dからシリアル送信するべく各部を制御する(ST16)。具体的な動作は、
図15(d)に示す通りであり、ランプドライバDR毎に、ランプ駆動データテーブルLMPの参照位置を特定し(ST33)、DMA転送に関し、必要な動作パラメータをDMAコントローラの該当レジスタに設定する(ST34)。
【0231】
図10(b)に関し説明した通り、必要な動作パラメータには、(1)ランプ駆動データテーブルLMPc/LMPdにおける転送元の先頭アドレス、(2)転送元からDMAコントローラ53(#10/#11)に対する一回の読出しサイズ(実施例では32バイト長)、(3)ランプ駆動データテーブルLMPc/LMPdからDMAコントローラ53(#10/#11)へのREAD転送回数(
図10(b)では1回)、(4)シリアルポート55のチャネル#C/#Dにおける転送先のアドレス(実施例では中継レジスタITMのアドレス)、(5)DMAコントローラ53(#10/#11)から転送先に対する一回の書込みサイズ(実施例では2バイト)、(6)DMAコントローラ53からシリアルポート55のチャネル#C/#DへのWRITE転送回数(
図10(b)では16回)が含まれている。
【0232】
また、ランプ駆動データのDMA転送に必要な動作パラメータには、
図10(b)に関して説明したシリアルポート55のチャネル#C/#Dの送信FIFOと、DMAコントローラ53(#10/#11)との間のHand Shake動作を実現する、送信FIFOの蓄積データ量に関する閾値も含まれる。
【0233】
そして、DMAコントローラの該当レジスタに所定値を設定して、DMAコントローラ53(#10/#11)の動作を開始させると共に(ST34)、シリアルポート55(チャネル#C/#D)の該当レジスタに所定値を設定することで、シリアル送信動作を開始させる(ST35)。なお、
図15(d)の実施例では、シリアルポート55(チャネル#C/#D)は、LED駆動モードで起動するよう、予め、該当レジスタが設定される必要がある(ST35)。
【0234】
その後の動作は、
図13(d)や、
図14(d)に示す通りであり、シリアルポート55(チャネル#C/#D)の送信FIFOが空になるまで、シリアル送信処理が実行される。ホストCPU50は、このシリアス送信処理に全く関与する必要がないので、その後、ホストCPU50は、所定のステイタスレジスタを参照して、シリアルポート55(チャネル#C/#D)の送信終了を待つことになる(ST36)。
【0235】
先に説明した通り、LED駆動モードでは、一フレーム(実施例では16サンプル=256ビット)の単位でOE信号が出力され、この一フレーム(256ビット)の処理で、一のランプドライバDRへのシリアル伝送処理が終わる。そこでホストCPUは、全ての処理が終わったか否かを判定し(ST37)、次のランプドライバDRへのシリアル伝送処理に移行すべき場合は、ステップST33の処理を実行する。
【0236】
以上、3線伝送方式におけるLED駆動モードについて説明したが、2線伝送方式を採る場合には、シリアルポート55(チャネル#C/#D)を、LED駆動モードで使用するか、SPI通信モードで使用するかに拘らず、全てのランプドライバDRに対して、必要なシリアルデータを一気にシリアル伝送するので、ステップST37の処理は不要である。
【0237】
但し、この場合には、ステップST34の処理において、(2)転送元からDMAコントローラ53(#10/#11)に対する一回の読出しサイズや、(5)DMAコントローラ53(#10/#11)から転送先に対する一回の書込みサイズが、例えば2バイト長とされる(
図10(c)参照)。
【0238】
そして、この設定に対応して、
図14(d)に示すLED駆動モードのランプ駆動では、(3)ランプ駆動データテーブルLMPc/LMPdからDMAコントローラ53(#10/#11)へのREAD転送回数や、(6)DMAコントローラ53からシリアルポート55のチャネル#C/#DへのWRITE転送回数が、各々、596回となり、全体で、2×596×8=9536ビットとなる(
図10(c)参照)。
【0239】
なお、
図14(e)に示すSPI通信モードのランプ駆動では、(3)READ転送回数と、(6)WRITE転送回数が、各々、187回となり、全体で、2×187×8=2992ビットとなる(
図10(c)参照)。
【0240】
以上のようにして、ステップST16の処理が終わると、次に、役物演出の更新タイミングか否かが判定される(ST17)。そして、更新タイミングに達している場合には、モータ駆動データテーブルMOTの参照位置が更新される(ST18)。但し、役物演出の進行は、1mS毎のタイマ割込みで実行されるので(
図16)、ホストCPU50は、次に、受信割込み処理で受信された制御コマンドを解析する(ST19)。
【0241】
そして、大当り抽選処理の結果を特定する変動パターンコマンドを受けた場合には、演出抽選などを経て、変動パターンコマンドの種類に応じた演出シナリオを特定する(ST19)。なお、この演出シナリオは、画像演出、ランプ演出、役物演出、及び音声演出の全てを、演出進行の時間情報と共に一元的に特定するものである。
【0242】
次に、演出開始からの経過時間に基づいて、演出シナリオの参照位置を更新した上で(ST20)、バンクフリップを待つ(ST21)。先に説明したように、本実施例では、バンプフリップタイミングを、表示装置の垂直同期信号の周期の2倍に設定しており、ステップST11の実行開始から1/30秒以内にステップST20までの処理が終わっていれば良いので、ステップST11~ST20の処理を適宜に複雑化することができる。また、本実施例では、バンプフリップ後、直ちにコマンドリスト処理(ST11)を実行して、画像コマンドリストを発行するので、VDPコントローラには、約1/30秒の処理時間が確保されることになる。
【0243】
続いて、
図16に基づいて、タイマ割込み処理について説明する。タイマ割込み処理では、各種のセンサ信号を繰り返し取得すると共に、必要時には役物演出を進行させている。そこで、先ず、モータ駆動データを更新すべきか否かが判定される(ST30)。そして、役物演出中でない場合には、ステップST31~ST36の処理がスキップされる。
【0244】
一方、何れか一以上の役物モータを移動させるべきタイミングであれば、先ず、シリアルポート55のチャネル#Eと#FをSPI送信モードに設定する。なお、実際には、枠側のモータ駆動基板37と、盤側のモータ駆動基板30の何れか一方だけが動作する場合も多く、以下に説明するステップST31~ST37の処理が、モータ駆動基板37かモータ駆動基板30に関して、何れか一方だけに実行されるか、或いは、ステップST31~ST37の処理が2回繰り返される。
【0245】
但し、以下の説明では、便宜上、モータ駆動基板37とモータ駆動基板30の全てのモータドライバDV~DVが同期的に機能すると簡略化し、全てのモータドライバDV~DVが纏めて制御される仮想事例について説明を続けることにする。
【0246】
このような仮想事例においては、ホストCPU50は、次に、パラレルポート54から第1レベルの切換制御信号CTLe,CTLfを出力する(ST32)。これは、その後に出力されるシリアルクロックSCKe,SCKfの伝送先を、モータ駆動基板37,30に搭載されているモータドライバDVとするためである。
【0247】
次に、役物モータを歩進させるべきタイミングであれば、モータ駆動データテーブルMOTe,MOTfの参照位置を更新する(ST33)。そして、モータ駆動データのDMA転送に必要な動作パラメータを、DMAコントローラ53(#12/#13)の該当レジスタに設定する(ST34)。
【0248】
ここで必要な動作パラメータには、(1)モータ駆動データテーブルMOTe/MOTfにおける転送元の先頭アドレス、(2)転送元からDMAコントローラ53(#12/#13)に対する一回の読出しサイズ(例えば2バイト長)、(3)モータ駆動データテーブルMOTe/MOTfからDMAコントローラ53(#12/#13)へのREAD転送回数、(4)シリアルポート55のチャネル#E/#Fにおける転送先のアドレス(実施例では中継レジスタITMのアドレス)、(5)DMAコントローラ53(#12/#13)から転送先に対する一回の書込みサイズ(例えば2バイト)、(6)DMAコントローラ53からシリアルポート55のチャネル#E/#FへのWRITE転送回数が含まれている。
【0249】
また、モータ駆動データのDMA転送に必要な動作パラメータには、
図10(b)に関して説明したシリアルポート55のチャネル#E/#Fの送信FIFOと、DMAコントローラ53(#12/#13)との間のHand Shake動作を実現する、送信FIFOの蓄積データ量に関する閾値も含まれる。
【0250】
以上の動作パラメータを設定した後、ホストCPU50は、DMAコントローラ53(#12/#13)を起動させると共に(ST34)、シリアルポート55のチャネル#E/#Fのシリアル送信を開始させる(ST35)。すると、その後は、DMAコントローラ53(#12/#13)のHand Shake動作に基づき、チャネル#E/#Fの送信FIFOにモータ駆動データが転送され、シリアル送信動作が繰り返される。
【0251】
そこで、ホストCPU50は、所定のステイタスレジスタを参照して、全てのモータ駆動データが転送され終わるのを待つ(ST36)。そして、送信完了が確認されたタイミングで、ホストCPU50は、パラレルポート54を通して各モータドライバに対してラッチパルスLTe,LTfを出力する(ST37)。モータドライバDV1~DVnは、ラッチパルスLTe,LTfを受けることで、取得したモータ駆動データを、役物モータM1~Mnに出力するので、役物モータM1~Mnが歩進することになる(
図12(a)、
図12(b)参照)。
【0252】
以上の処理が終わると、ホストCPU50は、シリアルポート55のチャネル#Eと#Fを、SPI受信モードに設定すると共に(ST38)、パラレルポート54から第2レベルの切換制御信号CTLe,CTLfを出力する(ST39)。これは、その後に出力されるクロック信号の伝送先を、モータ駆動基板37,30に搭載されている信号取得回路GET,GETとするためである。
【0253】
役物モータの駆動動作(ST30~ST37)の場合とは異なり、以下に説明するシリアル受信処理は、役物演出中であるか否かを問わず、1mS毎に、必ず実行される。そのため、本実施例では、信号取得回路GET,GETに供給されている各種のセンサ信号を、ほぼリアルタイムに把握できることになる。
【0254】
ステップST39の処理が終われば、ホストCPU50は、パラレルポート54を通して、各信号取得回路GET,GETに対して、取得パルスLTe,LTfを出力する(ST40)。
図12(c)に関して説明した通り、信号取得回路GET,GETは、取得パルスLTe,LTfに基づいて、各種のセンサ信号SNi,SNjを取得することになる。
【0255】
そこで、次に、ホストCPU50は、シリアルポート55(チャネル#Eと#F)のシリアル入力処理を開始させる(ST41)。具体的には、
図16(b)に示す通りであり、先ず、出力すべきシリアルクロックSCKe,SCKfの個数を特定した上で(ST43)、1ビットのダミーデータを、シリアルポート55(チャネル#Eと#F)の送信シフトレジスタに書込む(ST44)。
【0256】
すると、この書込み動作を契機として、シリアルポート55(チャネル#Eと#F)からは、指定された個数のシリアルクロックSCKe,SCKfの出力動作が開始される。
図12(d)に関し説明した通り、信号取得回路GET,GETは、シリアルクロックSCKe,SCKfに同期して、センサ信号SNi,SNjを1ビット毎に転送するので、シリアルポート55(チャネル#Eと#F)では、これを取得することになる。なお、シリアル受信されたセンサ信号は、1バイト又は2バイト単位で、チャネル#Eと#Fの受信バッファに一時保存される。
【0257】
そして、指定された個数のシリアルクロックSCKe,SCKfの出力処理の完了は、シリアルポート55(チャネル#Eと#F)の該当ステイタスレジスタによって確認されるので(ST45)、シリアル受信処理の完了を把握したホストCPU50は、受信バッファに一時保存されたセンサ信号SNi,SNjを、所定のバッファ領域に転記する(ST42)。そして、バッファ領域に転記されたセンサ信号SNi,SNjは、その後の画像演出、音声演出、役物演出において適宜に活用されることになる。
【0258】
続いて、
図17に基づいて、画像演出用のコマンドリスト処理(ST11)について説明する。
図17(a)は、コマンドリストをDDRメモリ41に発行する場合の画像制御を説明するフローチャートであり、画像演出に関する初期設定処理(ST10)についても補足的に記載している。なお、この実施例では、プリローダを使用しないので、
図15(c)のステップST3の処理は実行されない。
【0259】
以上を踏まえて説明すると、ホストCPU50は、電源投入後の初期設定処理(ST10)として、バンクフリップ周期を1/30秒とするべく、VDPコントローラ60の該当レジスタに、所定の設定値を書込む(ST50)。また、画像コマンドリストLTの開始アドレスを設定する(ST51)。
【0260】
先に説明した通り、本実施例では、画像コマンドリストLTを、コマンドメモリ56や、内蔵DRAM57や、DDRメモリ41に発行することもできるが、基本的な発行先は、必ず、画像コマンドバッファ71としている。
【0261】
そこで、ホストCPU50は、画像コマンドリストLTの発行先を規定する該当レジスタに、画像コマンドバッファ71の先頭アドレスに関するCBA情報とCBM情報を設定し(ST51)、これに続いて、コマンドリストの処理開始を、該当レジスタに許可設定する(ST52)。なお、CBM情報は、画像コマンドリストの発行先が、画像コマンドバッファ(内蔵レジスタ)71であるか、或いは、メインメモリ56、内蔵DRAM57、DDRメモリ41、又は外付けROM42の何れかであるかを特定するメモリ情報であり、CBA情報とは、特定されたメモリにおける相対アドレス値である。
【0262】
以上の設定処理(ST50~ST52)の結果、その後、バンクフリップが生じる毎に、VDPコントローラ60などの動作が初期化され、ホストCPU50が画像コマンドバッファ71に発行した画像コマンドリストLTについて、CBA情報/CBM情報に基づいて、VDPコントローラ60による読出し動作が繰り返されることになる。
【0263】
次に、ホストCPU50は、今サイクルの画像コマンドリストLTを作成する(ST53)。この画像コマンドリストLTは、画像演出の進行に応じて種々変化するが、何れの場合も、
図17(b)に示す通り、バンクフリップ待ちを意味するWAIT_BANKFLIP 命令で終了する。
【0264】
ところで、この画像コマンドリストLTの途中には、JUMP_DDR命令が記載されている場合がある。ここで、JUMP_DDR命令は、その後に処理を移行すべきDDRメモリ41の先頭アドレスと、先頭アドレス以降に記載されている画像コマンドリストLT’(以下、補助リストLT’と称する)のデータサイズを特定したJUMP命令であり(
図17(c)参照)、実質的には、RETURN命令を記載する必要のないSUBROUTINE_CALL 命令を意味する。なお、以下に説明するJUMP_BUFa 命令や、JUMP_BUFb 命令や、JUMP_CFIFO命令についても同様であり、ゼロの場合も含むデータサイズを特定して、JUMP先アドレスを具体的に特定している。
【0265】
この補助リストLT’は、画像演出の進行に拘らず、一定期間、繰り返される処理を記載したものであり、演出進行の所定タイミングで、DDRメモリ41に発行された後は、JUMP_DDR命令を経由して、繰り返し読み出されるようになっている。また、その後のタイミングで、DDRメモリ41に新たに発行された補助リストLT’についても、JUMP_DDR命令を経由して、繰り返し読み出されるようになっている。
【0266】
したがって、ステップST53の処理では、画像コマンドリストLTの作成に加えて、補助リストLT’が作成される場合や、作成した画像コマンドリストLTにJUMP_DDR命令が記載されている場合がある。何れにしても、ステップST53に続いて、ホストCPU50は、コマンドバッファ71に画像コマンドリストLTを発行し、必要に応じて、DDRメモリ41に補助リストLT’を発行して(ST54)、今サイクルの処理を終え、次回のバンクフリップを待つことになる(ST21)。
【0267】
一方、VDPコントローラ60は、今サイクルに発行された画像コマンドリストLTを、画像コマンドバッファ71から順番に読出し、CGデータデコーダ62やレンダリングエンジン61を機能させて、表示装置DS1,DS2の各一フレームを特定する画像データをフレームバッファFBの描画バンクに完成させる。そして、WAIT_BANKFLIP 命令に基づき、次回のバンクフリップを待つ。先に説明した通り、次回のバンクフリップでは、フレームバッファFBの描画バンクと表示バンクが切換るので、今回完成させた画像データは、次回のバンクフリップ後に表示装置DS1,DS2に表示されることになる。
【0268】
以上の通り、
図17(a)の実施例では、画像演出進行の一定期間、繰り返し使用される処理を、補助リストLT’に記載してDDRメモリ41に保存し、画像演出の進行に対応して、反復して活用するので、画像コマンドリストLTを作成するホストCPUの制御負担が軽減される。なお、ここでは、DDRメモリ41を例示したが、DDRメモリ41に替えて、コマンドメモリ56や、内蔵DRAM57や、外付けROM42を使用しても良いのは先に説明した通りである。なお、外付けROM42には、固定的な補助リストLT’が予め記憶されている必要がある。
【0269】
以上、発行した画像コマンドリストLTが、そのサイクルで読み出される実施例について説明したが、VDPコントローラ60に対する処理時間を確保するため、
図6に示した動作を実行する場合について
図17(b)に基づいて説明する。
【0270】
この場合には、初期設定処理(ST10)においてコマンドメモリ56に、一対のバッファ領域(BUFa,BUFb)を確保する必要がある(ST51’)。なお、バンクフリップ周期を1/30秒に設定すること(ST50)、画像コマンドリストLTの発行先として、画像コマンドバッファ71の先頭アドレスを設定すること(ST51)、及び、コマンドリストの処理開始を許可設定すること(ST52)については、
図17(a)の場合と同じである。
【0271】
以上の処理が終われば、ホストCPU50は、先ず、今サイクルで参照されるバッファ領域BUFa/BUFbに関して、今サイクルの画像コマンドリストLTを作成し、これを画像コマンドバッファ71に発行する(ST56)。この画像コマンドリストLTは、
図6の説明では、制御コマンドリストLTcと称したものであり、今回参照されるべきコマンドメモリ56のバッファ領域を特定したJUMP命令(JUMP_BUFa /JUMP_BUFb )と、バンクフリップ待ち命令(WAIT_BANKFLIP )だけが記載されものである。
【0272】
ステップST56の処理によって画像コマンドバッファ71に発行された画像コマンドリストLT(制御コマンドリストLTc)は、VDPコントローラ71によって、直ちに読み出され、前回サイクルで発行済みの画像コマンドリストLTの処理が開始される(
図5参照)。したがって、VDPコントローラ71に、十分な処理時間が確保される意味において、
図17(b)の処理は、
図17(a)の処理より優れている。
【0273】
次に、ホストCPU50は、次サイクルで処理される画像コマンドリストLTを作成する(ST57)。なお、
図5に関し説明した通り、この画像コマンドリストLTの最終行は、画像コマンドバッファ71のWAIT_BANKFLIP 命令への復帰を意味するJUMP命令(JUMP_CFIFO)である。
【0274】
次に、ホストCPU50は、画像コマンドリストLTの発行先をトグル的に切換え(ST58)、その発行先に、ステップST57の処理で作成した画像コマンドリストLTを発行する(ST59)。すなわち、一対のバッファ領域(BUFa,BUFb)の先頭アドレスの何れか一方を、今回の画像コマンドリストLTの発行先として選択し(ST58)、選択されたバッファ領域に画像コマンドリストLTを発行する(ST59)。
【0275】
なお、トグル的に切換えられたバッファ領域は、次サイクルのステップST56の処理で使用される(
図5参照)。また、ステップST59の処理で発行された画像コマンドリストLTが実効化されるのは、次サイクルである。そして、その後の処理は、
図17(a)の場合と同じであり、他の必要な処理(ST12~ST20)を実行した後、次回のバンクフリップを待つことになる(ST21)。
【0276】
続いて、
図7に関し先に説明した動作を実現する制御動作について、
図18(a)に基づいて説明する。なお、この実施例では、プリローダを機能させるので、
図15(c)のステップST3の処理が実行される。また、以下に説明する画像コマンドリストLTには、プリロード転送を指示する特別なデコードコマンドDCpが記載されている。
【0277】
そして、
図17の実施例と同様、バンクフリップ周期を1/30秒に設定するが(ST60)、DDRメモリ41に、画像コマンドリストLTを一時保存すための適当個数のリストバッファTG(#0,#1,・・・,#N)が確保される必要がある(ST61)。なお、
図7では、リストバッファTGを、BUFa、BUFb、BUFcと表記しているが、
図18(c)には、リストバッファTGの個数NがN=2のトリプルバッファTGについて、#0,#1,#2と図示している。なお、この実施例では、
図17のステップST51、及びステップST52の処理が、初期設定時において実行されることはなく、定常処理において個々的に実行される。
【0278】
定常処理では、最初に、WAIT_BANKFLIP コマンドのみで構成された画像コマンドリストである制御コマンドリストLTcを、コマンドバッファ71に発行する(ST62)。次に、ホストCPU50は、今サイクルで実効化されるべき画像コマンドリストLTについて、コマンドリスト開始アドレス(つまり、画像コマンドリストLTの先頭アドレス)を設定する(ST63)。
【0279】
具体的には、メモリ種別を特定するCBM情報として、DDRメモリ41であることを特定し、DDRメモリ41における相対アドレスを特定するCBA情報として、該当するリストバッファTGの先頭アドレスを特定する。なお、このステップST63の処理の容易化ため、リストバッファTG(#0,#1,・・・,#N)の先頭アドレスを記憶した先頭アドレスバッファ(
図18(c)参照)が用意されており、この先頭アドレスバッファを順番に読み出すことで、CBA/CBM情報が特定される。
【0280】
そして、画像コマンドリストLTの処理開始を許可することで(ST64)、ステップST63で特定された先頭アドレス以降の画像コマンドリストLTの処理が開始される(
図7参照)。例えば、ステップST63の処理で、リストバッファTG#1が選択されている場合には、VDPコントローラ71は、リストバッファTG#1に記載されている画像コマンドリストLTに基づいて、デコード及び描画の処理を実行し、JUMP_CFIFOの実行後、コマンドバッファ71に格納されている制御コマンドリストLTcのWAIT_BANKFLIP を実行して、バンクフリップを待つことになる(
図18(f)参照)。
【0281】
次に、ホストCPU50は、Nサイクル後に実効化されるべき画像コマンドリストLTを作成する(ST65)。なお、この画像コマンドリストLTの最後は、常に、コマンドバッファ71の制御コマンドリストLTcのWAIT_BANKFLIP 命令への復帰を意味するJUMP命令(JUMP CFIFO)が記載されている。
【0282】
次に、画像コマンドリストLTの発行先を更新し(ST65)、そのリストバッファTG(例えばTG#0)に、ステップST64の処理で作成した画像コマンドリストLTを発行する(ST66)。
図7に関して説明した通り、ステップST66の処理で、例えばリストバッファTG#0に発行された画像コマンドリストLTは、バンクフリップ後の次サイクルの処理で解釈され、デコードコマンドDCpが検出された場合には、必要なCGデータを内蔵DRAM57に確保されたプリロードバッファにプリロードする。そして、プリロードされたCGデータは、更にその次サイクルの処理で、CGデータデコーダ62によってデコードされ、レンダリングエンジン61による描画動作に活用される。
【0283】
ホストCPU50は、ステップST66の処理に続いて、次回サイクルの表示画面を特定する画像コマンドリストLTを作成し、ステップST66の処理で選択した発行先に発行する(ST67)。なお、
図7で説明した通り、この画像コマンドリストLTの最後には、JUMP_CFIFO命令が記載されている。したがって、JUMP_CFIFO命令の実行の後は、画像コマンドバッファ71の先頭アドレスに記載されているWAIT_BANKFLIP 命令が実行されバンクフリップを待つことになる。以上の通り、この実施例では、プリロード処理を有効活用することで、表示装置の大型化や高画質化に効果的に対応することができる。
【0284】
続いて、
図19に基づいて、サウンドエンジン52を簡易制御モード(第2動作モード)で機能させる場合について説明する。先に説明した通り、簡易制御モードでは、VDPコントローラ71が音声コマンドリストSLTに基づいて、サウンドエンジン52のコマンドレジスタRGiに対する設定動作を実行する。
【0285】
先ず、初期設定動作として、VDPコントローラ71の該当レジスタに、サウンドエンジン52を簡易制御モード(第2動作モード)で機能させることを設定した上で(ST10)、ステップST11~ST20の定常処理が繰り返される。
【0286】
図示の通り、定常処理では、ホストCPU50は、適宜な画像コマンドリストを作成し、適宜な発行先に発行した後(ST11)、音声演出の更新タイミングか否かを判定する(ST12)。そして、サウンドエンジン52のコマンドレジスタRGiへの設定動作を実行すべきタイミングであれば、設定動作を特定する音声コマンドリストSLTを作成する。
【0287】
図8の右上部に示す通り音声コマンドリストSLTは、一連の音声コマンドを列記したものであり、各音声コマンドは、1バイト長のレジスタ番号と、1バイト長の設定値とで構成されている。そして、音声コマンドリストSLTの先頭には、それ以降に列記される音声コマンドのコマンド数が記載されている。
【0288】
このような構成の音声コマンドリストSLTを完成させた後、ホストCPU50は、この音声コマンドリストSLTを、VDPコントローラ71の音声コマンドリストレジスタCRGWSLに発行する(ST71)。すると、
図8に関して先に説明した通り、VDPコントローラ71は、音声コマンドリストSLTに基づいて、所定の音声レジスタに所定の設定値を設定することになる。
【0289】
また、SACコード番号やSEQコード番号が認められる場合には、シンプルアクセスコントローラSACやシーケンサSEQに代わって、DDRメモリ41をアクセスして、中継レジスタ82を経由して、一連の設定動作を実行する。したがって、やや迅速性に欠けるものの、ホストCPU50は、音声演出を簡易に制御できることになる。
【0290】
ところで、本実施のレンダリングエンジン61は、グラフィックパイプライン処理(3Dモデルの陰影処理)が実行可能に構成されている。すなわち、実施例のレンダリングエンジン61には、プログラム可能な頂点シェーダVS(Vertex Shader )やピクセルシェーダPS(Pixel Shader)が、テッセレーション処理を実現するハルシェーダHS(Hull Shader )、テッセレータTESS(Tessellator )、及びドメインシェーダDS(Domain Shader )と共に内蔵されている。
【0291】
そこで、以下に説明する画像演出では、頂点シェーダVSやピクセルシェーダPSを有効活用して、影付きサイコロ立方体(3Dオブジェクト)を3D描写し、遊技者の操作に応答して適宜に回転させて大当り状態の予告演出を実現している。
【0292】
図20に基づいて、まず、サイコロ予告演出の演出内容を説明すると、サイコロ予告演出抽選に当選した場合には、例えば、
図20(a)のような、適宜なサイコロ目を3D描写した状態で、「90度回転を2回実行して、光の当っている正面に、サイコロ目「5」を出せ!」というサイコロMission が遊技者に対して与えられる。
【0293】
なお、回転軸は、
図22(b)に示すローカル座標のX軸、Y軸、Z軸の何れかであり、第1次ボタン操作で、何れかの回転軸が任意に特定され、続く第2次ボタン操作によって、時計方向か反時計方向かの回転方向が特定されるようになっている。
【0294】
図20(a)の状態で、第1回目の90度回転として、Z軸中心の反時計回転を選択した場合には、サイコロがゆっくり回転して、
図20(c)~
図20(e)の何れかの状態で停止する。なお、数字「5」が見えるまでは、往復運動なども含め、不規則にゆっくり回転するが、「5」が見え始めると、その後は素早く回転して停止する。その他、遊技操作とは無関係な不規則な高速回転を付加することで、数字「5」が見え始めるまでの時間を確保しても良い。後述するように、高速回転は、動画によって実現するのが好適である。
【0295】
図20(c)~
図20(e)の回転終了時を評価すると、
図20(c)では、光の当っている正面にサイコロ目「5」が出てしまったので、「2回実行して正面にサイコロ目「5」を出せ!」とのサイコロMission に失敗したことになる。
【0296】
なお、
図20(c)~
図20(e)の何れの状態で停止されるかは、サイコロMission に先行して実行されるMission 成否抽選によって予め決定されており、その成否結果は、大当り抽選結果を踏まえて抽選決定されるようになっている。
【0297】
次に、
図20(d)や
図20(e)では、光の当っている正面に傾斜状態のサイコロ目「5」が出たので、第2回目の90度回転によって、X軸中心の反時計回転又は時計回転を選択すれば、サイコロMission に成功することになる。
【0298】
同様に、
図20(a)の状態で、第1回目の90度回転として、X軸中心の時計回転を選択した場合には、Mission 成否抽選の抽選結果に基づいて、例えば、
図20(f)~
図20(h)の何れかの状態で停止し、Y軸中心の時計回転を選択した場合には、例えば、
図20(i)の状態で停止する。
【0299】
そして、
図20(f)や
図20(i)の停止状態では、第2回目の90度回転によって、サイコロMission に成功する可能性があるが、
図20(g)や
図20(h)の停止状態では、サイコロMission に失敗したことになる。
【0300】
このようなMission は、その後も、3Dオブジェクトを、サイコロ立方体から別の形状に変更し、且つ、敗者復活ステージなどを経て、適当回数繰り返される。そして、最終Mission に成功した場合には、大当り状態が最終報知されることになる。
【0301】
上記の動作を実現するため、本実施例では、サイコロMission 提示時の表示状態に応じて相違する複数の表示管理テーブルTBLが設けられており、例えば、サイコロ目「3」「2」「1」のサイコロMission では、第1回目の90度回転を特定するため、
図20(j)の管理テーブルTBLが選択される。
【0302】
なお、以下の説明では、便宜上、サイコロ上面を第1面(フェイス番号1)とし、サイコロ前面を第2面(フェイス番号2)、サイコロ正面を第3面(フェイス番号3)とする。また、第1面の背面を第6面(フェイス番号6)、第2第面の背面を第5面(フェイス番号5)、第3面の背面を第4面(フェイス番号4)とする(
図20(k)参照)。
【0303】
図20(j)に示す表示管理テーブルTBLは、第1回目の90度回転を実現するサイコロ立方体を描画するための頂点配列VT(n,m)を特定しており、HitXYやMisXYは、外付けROM42(CGメモリ)に記憶されている頂点配列VT(n,m)の先頭アドレスを特定している。
【0304】
なお、HitXYは、Mission 成否抽選に当選した場合に選択され、MisXYは、Mission 成否抽選のハズレ時に選択される頂点配列VT(n,m)を特定している。また、添字Xについて、X=0は、Z軸中心の回転に対応し、X=1は、X軸中心の回転に対応し、X=3は、Y軸中心の回転に対応し、何れも遊技者の指示に起因して特定される。
【0305】
外付けROM42に記憶されている頂点配列VT(n,m)は、頂点シェーダVSによって座標変換されるデータ列を配列要素とする配列である。後述するように、本実施例では、3Dオブジェクト(サイコロ立方体)を三角形ポリゴンに分解して、頂点合計がn個となるが、このn個の頂点毎に、各々、m個の配列要素を記憶して構成されている。
【0306】
そして、m個の配列要素には、ローカル座標上のポリゴン頂点のXYZ座標値と、ポリゴン頂点における法線ベクトル情報と、ポリゴン頂点におけるテクスチャ座標値とが含まれている。
【0307】
何ら限定されないが、実施例のテクスチャは、サイコロ六面に貼り付けられる画像であって、
図21(e)に示す通り、「1」~「6」の文字画像が、4方向に90度ずつ傾斜して合計24区画に区分されている。そして、各区画は、4点のテクスチャ座標値を持っている。
【0308】
そして、どの区画の文字画像を、サイコロ六面のどの面に配置するかが、頂点配列VT(n,m)のテクスチャ座標値として特定されている。なお、
図20や
図21(e)では、便宜上、文字画像を平面的に描いているが、実際には、凹凸模様も含んだ装飾性の高い立体文字画像となっている。
【0309】
このように、本実施例では、サイコロ六面の全体にテクスチャを貼り付け、サイコロ六面がテクスチャで隠れるので、頂点配列VT(n,m)の配列要素には、色情報を含んでいない。但し、サイコロ六面を特定色に着色し、これに重ねて、模様を含まない立体文字を、ブレンディング処理を経て描く場合には、頂点配列VT(n,m)の配列要素に色情報を含めても良い。
【0310】
この点はさて措き、次に、第1回目の90度回転操作に対応して、例えば、先頭アドレスHit01の頂点配列VT(n,m)が選択された場合について説明する。
図20(l)は、Hit01で特定される頂点配列VT(n,m)について、テクスチャ貼り付け動作を概念的に説明する図面であり、座標位置3a,2a,1a,6a,5b,4aのテクスチャ区画を、各々、サイコロ1面~サイコロ6面に貼り付けることが特定されている。
【0311】
このテクスチャ区画の特定は、実質的には、Mission 提示時のサイコロ画像における第5面のテクスチャの変更/決定に他ならず、他の第1面~第4面、及び第6面のテクスチャは、Hit0*,Mis0*,Hit1*,Mis1*,Hit2*,Mis2*の何れが選択された場合も、Mission 提示時のテクスチャと同じである。
【0312】
したがって、本実施例では、Mission 対象のサイコロ面(
図20では第5面)のテクスチャ座標値以外は共通する複数の頂点配列VT(n,m)・・・・VT(n,m)が存在することになる(
図21(l)(m)参照)。そのため、サイコロMission の実行時のための頂点配列VT(n,m)・・・・VT(n,m)を、予め、外付けROM42に記憶しておく必要は、特になく、頂点配列VT(n,m)の雛形に基づいて、ホストCPU50が、頂点配列VT(n,m)をリアルタイムに作成しても良い(
図23(b)参照)。
【0313】
図21は、頂点配列VT(n,m)と、頂点インデックス配列VTI(k)と、テクスチャと、を説明する図面である。
図21(a)に示す通り、サイコロ予告を実現する3Dオブジェクトは立方体であり、本実施例では、これを三角形ポリゴンで分解するので、立方体の6頂点(A~H)に対応して、ポリゴン12個の頂点総数は36=6×6個となる。なお、頂点1~頂点36は、レンダリングエンジン61の描画順を示しており、描画対象となるか否かを仕分けするカリング処理の逆順となっている。
【0314】
ここで、この36個の頂点に関する頂点配列VT(36,m)に、各m個の配列要素を記憶させても良いが、それでは、記憶データが重複する。そこで、本実施例では、同一面における重複点を除いた頂点配列VT(24,m)としている(
図21(c)参照)。
【0315】
例えば、
図21(b)では、第1面(上面)について、頂点1=頂点4、及び、頂点2=頂点6の重複関係があり、第2面(前面)でも頂点7=頂点10、及び、頂点8=頂点12の重複関係がある。そこで、本実施例では、これらの重複関係を考慮して、重複する12頂点を削除して、合計24頂点の頂点配列VT(24,m)としている。
【0316】
そして、本実施例では、削除した頂点を補完しつつ描画手順を特定するべく頂点インデックス配列VTI(36)を設けている。先に説明した通り、描画順は、カリング処理の逆順にするのが好適であるので、頂点配列VT(24,m)に対応して頂点インデックス配列VTI(36)を設けることで、X軸中心の回転、Y軸中心の回転、Z軸中心の回転の何れが選択された場合でも、最適な描画順序で、サイコロ立方体を描画することができる。
【0317】
頂点配列VT(n,m)や頂点インデックス配列VTI(k)が外付けROM42に格納されている場合について、サイコロ予告動作時における描画動作を、最初に概略説明すると以下の通りである。
【0318】
先ず、バンクフリップ毎に、頂点配列VT(n,m)と頂点インデックス配列VTI(k)のアドレス情報が、テクスチャ画像のアドレス情報などと共に、画像コマンドリストLTに記載されて、ホストCPU50からVDPコントローラ60に通知される(コマンドリストの発行)。なお、発行される画像コマンドリストLTには、サイコロの回転角度や配置位置が特定されている。
【0319】
次に、VDPコントローラ60を経由して、画像コマンドリストLTを受けたレンダリングエンジン61は、CGデータデコーダ62がデコードしたテクスチャ画像を使用しつつ、一連のパイプライン処理(
図22)を実行することになる。
【0320】
具体的には、頂点配列VT(n,m)と、頂点インデックス配列VTI(k)に基づいて構築されたサイコロ立方体を適宜に回転させ、回転により変形した六面に、テクスチャ座標に基づいてテクスチャ画像を貼り付け、カメラパラメータや光源位置などに基づいた適宜なシェーディング処理が実行される。
【0321】
頂点配列VT(n,m)に含まれる「ローカル座標系」のサイコロ立方体の座標要素は、先ず、ワールド変換行列に基づき、「ワールド座標系」に変換され、次に、ビュー変換行例に基づき「ビュー座標系」に変換され、最後に、プロジェクション変換行列(射影変換行列)に基づき、「プロジェクション座標(射影座標)系」に変換されて、3次元の変換行列処理を終える。
【0322】
これらの変換行列処理には、カメラパラメータ(位置、向き、注視点)や視野角などのパラメータが必要となるが、これらは、電源投入時の初期設定処理で設定されることで、ビュー変換行例と、プロジェクション変換行列は、予め特定されている。したがって、バンクフリップ毎に発行される画像コマンドリストでは、3次元の変換行列に関し、サイコロ立方体の回転角度と、配置位置だけが指示される。
【0323】
また、本実施例では、外付けROM42に格納されている頂点配列VT(n,m)と、頂点インデックス配列VTI(k)は、3D描画の実際の描画タイミングに先行して、プリロード処理によって、予め、内蔵DRAM57に取得されるよう構成されている。
【0324】
以上の概略説明を踏まえて、レンダリングエンジン61のサイコロ予告演出時の動作について説明する。
図22に示す通り、本実施例では、電源投入時の初期処理において、シェーダ(頂点シェーダVS、ピクセルシェーダPS、ハルシェーダHS、ドメインシェーダDS)の構成や、シェーダ動作に関する設定動作が実行されている(SS10)。
【0325】
また、画像プロセッサ51が先読み動作モードで機能して、
図7に説明したプリロード動作を実行するよう構成され(SS10)、内蔵ホストCPU50は、バンクフリップ周期(1/30秒)毎に、画像コマンドリストLTを画像プロセッサ51に発行し、これに対応して、画像プロセッサ51は、このバンクフリップ周期に同期してステップSS12~SS22の一連の動作を実行するよう構成されている。
【0326】
以下、一連の動作を説明すると、バンクフリップ後、画像プロセッサ51は、取得した画像コマンドリストLTに基づいて、最初に、静止画や、一連の動画の一フレームを、フレームバッファFBに生成する(SS12)。
【0327】
ここで、静止画は、背景画像など、サイコロ立方体の背景などを構成する画像であり、必要に応じて、キャラクタ画像や変動図柄なども追加的にスプライト描画される。また、必要に応じて動画も描画され、例えば、サイコロ立方体の回転開始に先行して、サイコロ立方体を遊技者が選択したX軸、Y軸、又はZ軸を中心に、サイコロ文字が読めない程度の高速で回転させるような場合に活用される。
【0328】
これは、グラフィックパイプライン処理は、GPUたる画像プロセッサ51の処理負担が非常に大きく、円滑な高速移動ができないので、サイコロ立方体を高速回転させる動画を活用するのである。したがって、サイコロ立方体の動画が再生されているタイミングでは、以下のパイプライン処理が実行されることはない。
【0329】
一方、サイコロ予告演出時であって、動画が再生されないか、又は、サイコロ立方体以外の動画が再生されているタイミングでは、画像コマンドリストLTに記載されているデコードコマンドに基づいて、テクスチャが外付けROMから読み出され、デコードされて内蔵DRAM57に配置される(SS13)。なお、この実施例では、サイコロ予告演出時に使用されるテクスチャは常に同一であるので、最初に内蔵DRAM57にデコードされたテクスチャ画像が繰り返し使用される。
【0330】
続いて、各種のシェーダが機能するグラフィックパイプライン処理(SS14~SS22)が開始されるが、画像コマンドリストLTには、頂点配列VT(n,m)や頂点インデックス配列VTI(k)によって特定される3Dオブジェクト(サイコロ立方体)を、フレームバッファとは別のオフスクリーンバッファ(一時バッファ)に生成するよう指示されている。
【0331】
グラフィックパイプライン処理では、最初に、3Dオブジェクト(サイコロ立方体)を特定する頂点配列VT(n,m)を取得し、配列要素たる座標データを、内部処理用に適宜なデータ形式にデータ変換(assemble)する(SS14)。また、このインプットアセンブラ処理において、頂点インデックス配列VTI(k)の使用が内部的に設定される。
【0332】
次に、画像コマンドリストLTに記載されている描画コマンドに基づいて頂点シェーダ処理が実行される(SS15)。具体的には、先ず、ローカル座標上のポリゴン頂点を、指定された回転角だけ回転させ、ワールド座標の指定された位置に移動させるワールド変換行列の行列演算を実行する。
【0333】
次に、カメラ位置、カメラ上向き情報、カメラ注視点などのカメラ情報に基づいたビュー変換行列の行列演算を実行して、ワールド座標の3Dオブジェクトの座標値をビュー座標に変換する。
【0334】
そして、最後に、視野角に基づいた射影変換行列(プロジェクション変換行列)の行列演算を実行して、射影座標(プロジェクション座標)に変換する。なお、これらの3次元の変換行列の行列演算に対応して、テクスチャ座標も適宜に変換される。
【0335】
次に、テッセレータ処理が実行される(SS16)。テッセレータ処理とは、頂点配列VT(n,m)で特定されるポリゴンを更に細分化して、3Dオブジェクトの凹凸形状のリアリティを高めるものであり、ハルシェーダHSとテッセレータTESSとドメインシェーダDSとが機能する。
【0336】
ハルシェーダHSは、再分割のための最適な制御点を算出し、テッセレータTESSは、算出された制御点に基づいてポリゴンを分割し、ドメインシェーダDSは、制御点に沿って頂点座標を算出する(
図21(f)参照)。
【0337】
なお、テッセレータ処理は、複雑な凹凸曲面が存在する3Dオブジェクトに対して特に有効である一方、本実施例の3Dオブジェクトは、単純な立方体であるので、本実施例では、テッセレータ処理(SS16)を実行しないのも好適である(破線参照)。
【0338】
続くスクリーンマッピング処理では、必要に応じて、視錐台カリング及び/又はクリッピング処理を実行した後の3Dオブジェクトを、三次元の射影座標から二次元のスクリーン座標に二次元写像する(SS17)。
【0339】
ここで、視錐台カリングとは、3Dオブジェクトが、カメラの視錐台の中にあるか否かを判定して、不要部分を排除する処理であるが、本実施例では特に必要とされない。また、クリッピング処理とは、描画を行う際に、特定の範囲からはみだした部分を表示しないようにする処理を意味し、例えば、3Dオブジェクの一部のみをズームアップ描画するような場合に使用される。
【0340】
次に、スクリーン座標に写像された3Dオブジェクトを表示画面のピクセルに対応させるラスタライザ処理を実行する(SS18)。具体的には、3Dオブジェクトを構成する各ポリゴンが、ピクセルの集合に割り当てられ、例えば、三角ポリゴンの場合、「三角形の形状」を実現する「ピクセルの並び」が特定される。なお、内外判定がされ、サイコロ裏面のように、見えない部分はクリッピングされる。
【0341】
次に、必要に応じて、早期Zカリング処理が実行される(SS19)。これはZバッファを設ける場合に、ZバッファのZ値(深度値)に基づいて、明らかに描く必要のないピクセルを早期に排除する処理である。
【0342】
次に、各ピクセル位置について色情報を特定するピクセルシェーダ処理が実行される(SS20)。この処理では、光源と各頂点との位置関係や、各頂点の法線情報に基づいて、明るさや陰影がピクセル位置毎に決定され、対応する色情報が特定される。なお、頂点と頂点の間の情報は、適宜な補間処理に基づいて特定される。
【0343】
ところで、本実施例では、3Dオブジェクトを二次元平面(スクリーン座標)に写像している関係から、上記のピクセルシェーダ処理では、同一ピクセル位置に、複数の色情報が特定される場合がある。そこで、ピクセルシェーダが特定した各ピクセル位置の色情報について、実際に描画する色情報を決定する(SS21)。
【0344】
具体的には、ZバッファのZ値に基づいたZテスト(深度テスト)が実行され、各ピクセルに描画すべき色情報が最終的に決定される。なお、3Dオブジェクトの全部ではなく、その一部だけを描画するような場合には、描画要否を特定するステンシル値に基づいたステンシルテストが、Zテストに先行して実行される。
【0345】
そして、このようにしてオフスクリーンバッファに構築した3Dオブジェクトの画像データ(ピクセル毎の色情報)が、適宜なブレンディング処理を経て、静止画や、動画一フレームが配置されているフレームバッファに上書きされる。
【0346】
特に限定されないが、フレームバッファには、3Dオブジェクトが優先的に描画され、3Dオブジェクトが重なる静止画は、事実上消去され、表示されない。指摘するまでもないが、静止画に重ねて描画されるサイコロ立方体は、陰影を伴う3Dオブジェクトであり、光の強く当るサイコロ正面と、光が余り当らないサイコロ上面と、光が殆ど当らないサイコロ前面と、が明度を区別して表現され、また、
図20では表示を省略している立方体の陰影もはっきり表示されている。
【0347】
続いて、以上の画像プロセッサ51の動作を実現する画像コマンドリストLTを生成する内蔵ホストCPU50のサイコロ予告演出時の動作を
図23に基づいて説明する。なお、
図23の処理に先行して、サイコロ予告演出抽選が実行されており、サイコロMission に対する遊技者の成否結果は、予め決定されている。
【0348】
先に説明した通り、サイコロ予告演出は、サイコロ立方体を90度ずつ回転させるため、合計2回のボタン操作を必要としており、各回のボタン操作は、回転軸を決定する第1次操作と、回転方向を決定する第2次操作に区分されている。
【0349】
以下、
図23について説明すると、内蔵ホストCPU50はバンクフリップ毎に間欠的に動作するが、先ず、サイコロ予告演出の実行中か否かが判定され(ST70)、サイコロ予告演出中でない場合には、ステップST71~ST77の処理をスキップする。
【0350】
一方、サイコロ予告演出中であれば、そのタイミングがサイコロ回転中か否かが判定される(ST71)。これは、Mission 提示タイミング又は第1回目又は第2回目のボタン操作の受け付けタイミングか、それとも、ボタン操作を受け付けた後の回転中かを判定するためである。
【0351】
そして、このタイミングがボタン操作を受け付けた後(サイコロ回転中)であれば、ステップST72~ST75)の処理がスキップされる。
【0352】
一方、サイコロが静止状態であれば、1回目又は2回目の回転動作が完了した静止状態か、又はMission 未提示状態かが判定される(ST72)。そして、Mission 未提示状態であれば(ST78:Yes)、遊技者へのMission を抽選決定し、抽選決定されたサイコロ目の表示状態に対応する表示管理テーブルTBLを特定し(ST80)、Mission 提示用のコマンドリストを生成する(ST81)。
【0353】
一方、Mission 提示後であって回転動作が完了している場合には、1回目の回転動作を完了したか、2回目の回転動作を完了したかに応じて、その後の報知動作を決定し(ST79)、報知動作を特定するコマンドリストを生成する(ST81)。なお、回転終了時の表示態様は、予め決定されているので(ST74)、予め特定されている表示態様に対応した報知動作となる。
【0354】
また、1回目の回転動作を完了している場合には、停止状態のサイコロ六面の表示文字態様に基づいて、新規の表示管理テーブルTBLを特定する(ST79)。そして、この表示管理テーブルTBLは、その後のステップST74の処理で使用される。
【0355】
一方、ステップST72の判定で、Mission 提示後であって、サイコロ立方体が静止状態であると判定されると、回転中心軸(X軸/Y軸/Z軸)と、回転方向について遊技者の操作を特定する(ST73)。なお、遊技者のボタン操作は、1mS毎のタイマ割込み処理(
図16には不図示)で取得され、適宜なワーク領域に記憶されている。
【0356】
次に、遊技者の操作とサイコロMission に対する遊技者の成否結果に応じて、サイコロ回転演出を特定する(ST74)。ここで、サイコロ回転演出の特定とは、表示管理テーブルTBLに基づいて、サイコロ六面の表示文字態様を決定することを意味する。
【0357】
ところで、
図20では、遊技者がMission 成功の可能性のある回転軸と回転方向を選択するとして説明したが、遊技者が、不合理な回転動作を選択した場合には、表示管理テーブルTBLの何れかをランダムに選択する。その結果、表示管理テーブルTBLからHitXYが選択される場合があるが、回転軸や回転方向を間違えている以上、HitXYによるサイコロ立方体を回転させてもMission 成功のおそれはない。
【0358】
また、遊技者が所定時間経由してもボタン操作をしない場合もあるが、その場合には、予め決定されているサイコロMission の成否結果に応じたサイコロ回転演出を選択する(ST75)。
【0359】
そして、何れの場合も、特定されたサイコロ六面の表示文字態様を実現する頂点配列VT(n,m)と、頂点インデックス配列VTI(k)について、外付けROMのアドレスを特定し、サイコロ回転中フラグFLGを1にセットする(ST75)。なお、サイコロ回転中フラグFLGは、ステップST71の処理で判定されるフラグである。
【0360】
次に、サイコロを移動させるに相応しい時間間隔(例えば0.5秒)毎にサイコロの回転角を0~90度の範囲で更新する(ST76)。ここで、回転角の更新は、最初はサイコロがゆっくり不規則に回転させ、その後、隠れていたサイコロ目の文字が出現した後は、素早く回転するよう回転角が不規則に更新される。そして、回転角が90度に達すると、サイコロ回転中フラグFLGを0にクリアすることで、その後、ST78の処理が実行できるようにする。
【0361】
次に、ステップST76の処理で更新した回転角に対応した画像コマンドリストLTを生成する(ST77)。このコマンドリストLTでは、3Dオブジェクトの回転角や配置位置を特定する描画コマンドと、頂点インデックス配列VTI(k)に基づいた描画を指示する描画コマンドと、テクスチャを読み出してデコードすることを指示するデコードコマンドと、が含まれている。
【0362】
また、第1回目又は第2回目のサイコロ回転の回転開始時の画像コマンドリストLTには、頂点配列VT(n,m)と頂点インデックス配列VTI(k)とをプリロードさせる制御コマンドが含まれている。そして、内蔵DRAM57にプリロードされた頂点配列VT(n,m)と頂点インデックス配列VTI(k)は、レンダリングエンジン61によるパイプライン処理において、第1回目又は第2回目のサイコロ回転が終わるまで、繰り返し内蔵DRAM57から読み出され使用される。
【0363】
以上のようにして、制御コマンドと、デコードコマンドと、描画コマンドと、を組み合わせたサイコロ予告演出用の画像コマンドリストを生成した後、その画像コマンドリストの先頭位置に、静止画や動画についてのコマンド列を追記することで画像コマンドリストLTを完成させる(ST82)。
【0364】
次に、内蔵ホストCPU50は、完成した画像コマンドリストLTを画像プロセッサ51に発行することで、今回のバンクフリップ後の処理を終える(ST83)。
【0365】
以上、頂点配列VT(n,m)と頂点インデックス配列VTI(k)を、外付けROMに予め記憶させておく構成について説明したが、特に限定されない。例えば、頂点配列VT(n,m)だけ、又は、頂点配列VT(n,m)と頂点インデックス配列VTI(k)をリアルタイムに生成しても良い。
【0366】
例えば、頂点配列VT(n,m)だけリアルタイム生成する場合の動作は、
図23(b)に示す通りであり、ステップST74の処理で、サイコロ六面の表示文字態様が決まれば、頂点配列VT(n,m)の雛形に、配列要素として、テクスチャ座標を記憶させることで頂点配列VT(n,m)を完成させる(ST75’)。
【0367】
そして、ステップST76の処理を経た後、リアルタイムに完成させた頂点配列VT(n,m)を含んだ描画コマンドを、画像コマンドリストLTに記載する(ST77’)。この場合、頂点インデックス配列VTI(k)に基づいた描画を指示する描画コマンドを使用しても良いが、頂点配列VT(n,m)だけに基づいた描画を指示する描画コマンドを使用しても良い。
【0368】
後者の場合には、頂点インデックス配列VTI(k)が不要となるが、重複頂点を排除できないので、頂点配列VT(24,m)ではなく、要素数の多い頂点配列VT(36,m)である必要がある(ST77’)。
【0369】
以上、サイコロ予告演出について詳細に説明したが、グラフィックパイプライン処理を使用する演出動作は、適宜に変更可能である。
【0370】
例えば、3Dオブジェクトと、立体的な静止画と、を重ねて一体的に立体画像を構築し、3Dオブジェクトだけを影付きで変形させるのも好適である。
【0371】
図24は、このような構成を採るカレンダ予告演出を説明する図面である。このカレンダ予告演出は、日めくりカレンダの基端部を構成する静止画1と、カレンダ紙面の固定部分を構成する静止画2と、背景を構成する静止画3と、風になびくカレンダ紙面を構成する3Dオブジェクトと、で構成されている(
図24(a)参照)。
【0372】
そして、カレンダ予告演出が開始されると、一枚目のカレンダ紙面(3Dオブジェクト)が、繰り返し、繰り返し、不規則に風になびいた後、破れて風に吹き飛ばされる演出が、グラフィックパイプライン処理によって実行される(
図24(b)~(f)参照)。
【0373】
そして、一枚目のカレンダ紙面が吹き飛ばされた後、大当り抽選の当選状態を、所定の信頼度で予告する紙面(静止画)が、新たに出現するようになっている(
図24(g)参照)。
【0374】
このような予告演出するため、この実施例では、一枚目のカレンダ紙面の輪郭を特定する多数の頂点配列VT(n,m)と、描画順を特定する頂点インデックス配列VTI(k)と共に用意している。すなわち、1枚目のカレンダ紙面は、風に吹かれて各種の変形態様を採るが、各変形態様を特定する頂点配列VT(n,m)が用意されている。
【0375】
例えば、風になびく演出を5秒継続させる場合には、1/30秒毎に変化する合計150個の頂点配列VT(n,m)が用意される。なお、一枚目のカレンダ紙面の裏面が現れるタイミングを設けないことで、頂点インデックス配列VTI(k)を単一に抑制することができる。
【0376】
また、一枚目のカレンダ紙面に貼り付けるべきテクスチャも単一であるが、頂点配列VT(n,m)の配列要素としてのテクスチャ座標は、風になびくカレンダ紙面の変形形状に対応して、頂点配列VT(n,m)毎に相違することになる。
【0377】
そして、内蔵ホストCPU50が、バンクフリップ毎に、画像コマンドリストLTにおいて、別々の頂点配列VT(n,m)を特定することで、風に吹かれてスムーズになびくカレンダ紙面を表現することができる。すなわち、動画を用意することなく動画同等の動きを実現することができる。
【0378】
しかも、図示例では、「12日」を表現するテクスチャを使用しているが、テクスチャを変更するだけで、自由に日付を変更することができ、更に、紙面にキャラクタを描くこともできる。これらと同等の動作を動画で実現するには、予告演出毎に動画データを用意する必要があり、グラフィックパイプライン処理を使用する本実施例では、テクスチャを用意するだけ良い。
【0379】
以上、グラフィックパイプライン処理を使用する2つの実施例を説明したが、記載内容は、何ら本発明を限定せず、各種の変更が可能である。例えば、一の画像コマンドリストLTで特定する3Dオブジェクトは、必ずしも単一個である必要はない。
【0380】
この点を
図24に関連して説明すれば、
図24(a)と同種の日めくりカレンダを左右に3個並べ、例えば、「7」「8」「7」の紙面を、いわゆるリーチ状態で並べた状態で、各紙面を風になびかせることもできる。
【0381】
この場合、各3Dオブジェクトの頂点配列VT(n,m)を適宜に設定することで、ごく自然な動作を実現することができる。すなわち、紙面が受ける光線に対応して3枚の紙面を自然に光らせ、且つ、風の受け方の違いに応じて3枚を自然になびかせることができる。
【0382】
以上、実施例について詳細に説明したが、具体的な記載内容は、特に本発明を限定するものではなく、適宜に修正変更される。また、上記した各実施例では、もっぱら弾球遊技機について説明したが、回胴遊技機など、画像演出を伴う他の遊技機においても好適に活用されることは勿論である。
【符号の説明】
【0383】
GM 遊技機
DS1、DS2 表示装置
50 画像演出制御手段
42 データ記憶手段
51 画像生成手段