以下、実施例に基づいて本発明を詳細に説明する。図1は、本実施例のパチンコ機GMを示す斜視図である。このパチンコ機GMは、島構造体に着脱可能に装着される矩形枠状の木製外枠1と、外枠1に固着されたヒンジ2を介して開閉可能に枢着される内枠3とで構成されている。この内枠3には、遊技盤5が、裏側からではなく、表側から着脱自在に装着され、その前側には、ガラス扉6と前面板7とが夫々開閉自在に枢着されている。なお、本明細書では、ガラス扉6と前面板7を総称して前扉部材と称する。そして、前扉部材(ガラス扉6や前面板7)が枢着された状態の内枠3を遊技枠と称することがある。
ガラス扉6の外周には、LEDランプなどによる電飾ランプが、略C字状に配置されている。一方、ガラス扉6の上部左右位置と下側には、全3個のスピーカが配置されている。上部に配置された2個のスピーカは、各々、左右チャンネルR,Lの音声を出力し、下側のスピーカは低音を出力するよう構成されている。
前面板7には、発射用の遊技球を貯留する上皿8が装着され、内枠3の下部には、上皿8から溢れ出し又は抜き取った遊技球を貯留する下皿9と、発射ハンドル10とが設けられている。発射ハンドル10は発射モータと連動しており、発射ハンドル10の回動角度に応じて動作する打撃槌によって遊技球が発射される。
上皿8の外周面には、チャンスボタン11が設けられている。このチャンスボタン11は、遊技者の左手で操作できる位置に設けられており、遊技者は、発射ハンドル10から右手を離すことなくチャンスボタン11を操作できる。このチャンスボタン11は、通常時には機能していないが、ゲーム状態がボタンチャンス状態となると内蔵ランプが点灯されて操作可能となる。なお、ボタンチャンス状態は、必要に応じて設けられるゲーム状態である。
また、チャンスボタン11の下方には、ロータリースイッチ型の音量スイッチVLSWが配置されており、遊技者が音量スイッチVLSWを操作することで、無音レベル(=0)から最高レベル(=7)まで、スピーカ音量を8段階に調整できるようになっている。なお、スピーカの音量は、係員だけが操作可能な設定スイッチ(不図示)によって初期設定されており、遊技者が音量スイッチVLSWを操作しない限り、初期設定音量が維持される。また、異常事態が発生したことを報知する異常報知音は、係員による初期設定音量や、遊技者の設定音量に拘らず最高音量で放音される。
上皿8の右部には、カード式球貸し機に対する球貸し操作用の操作パネル12が設けられ、カード残額を3桁の数字で表示する度数表示部と、所定金額分の遊技球の球貸しを指示する球貸しスイッチと、ゲーム終了時にカードの返却を指令する返却スイッチとが設けられている。
図2に示すように、遊技盤5の表面には、金属製の外レールと内レールとからなるガイドレール13が環状に設けられ、その略中央には、中央開口HOが設けられている。そして、中央開口HOの下方には、不図示の可動演出体が隠蔽状態で収納されており、可動予告演出時には、その可動演出体が上昇して露出状態となることで、所定の信頼度の予告演出を実現している。ここで、予告演出とは、遊技者に有利な大当り状態が招来することを不確定に報知する演出であり、予告演出の信頼度とは、大当り状態が招来する確率を意味している。
中央開口HOには、大型(例えば、横1280×縦1024ピクセル)の液晶カラーディスプレイで構成されたメイン表示装置DS1が配置され、メイン表示装置DS1の右側には、小型(例えば、横480×縦800ピクセル)の液晶カラーディスプレイで構成された可動式のサブ表示装置DS2が配置されている。メイン表示装置DS1は、メイン液晶表示部MONIと、LEDバックライト部BLとで構成され、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この表示装置DS1は、中央部に特別図柄表示部Da~Dcと右上部に普通図柄表示部19とを有している。そして、特別図柄表示部Da~Dcでは、大当り状態の招来を期待させるリーチ演出が実行されることがあり、特別図柄表示部Da~Dc及びその周りでは、適宜な予告演出などが実行される。
サブ表示装置DS2は、通常時には、その表示画面が遊技者に見やすい角度に傾斜した静止状態で画像情報を表示している。但し、所定の予告演出時には、遊技者に見やすい角度に傾斜角度を変えながら、図示の左側に移動する共に、所定の予告画像を表示するようになっている。
すなわち、実施例のサブ表示装置DS2は、単なる表示装置ではなく、予告演出を実行する可動演出体としても機能している。ここで、サブ表示装置DS2による予告演出は、その信頼度が高く設定されており、遊技者は、大きな期待感をもってサブ表示装置DS2の移動動作に注目することになる。なお、サブ表示装置DS2も、サブ液晶表示部MONIと、LEDバックライト部BLとで構成されている。
ところで、遊技球が落下移動する遊技領域には、第1図柄始動口15a、第2図柄始動口15b、第1大入賞口16a、第2大入賞口16b、普通入賞口17、及び、ゲート18が配設されている。これらの入賞口15~18は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
第1図柄始動口15aの上部には、導入口INから進入した遊技球がシーソー状又はルーレット状に移動した後に、第1図柄始動口15に入賞可能に構成された演出ステージ14が配置されている。そして、第1図柄始動口15に遊技球が入賞すると、特別図柄表示部Da~Dcの変動動作が開始されるよう構成されている。
第2図柄始動口15bは、左右一対の開閉爪を備えた電動式チューリップで開閉されるように構成され、普通図柄表示部19の変動後の停止図柄が当り図柄を表示した場合には、所定時間だけ、若しくは、所定個数の遊技球を検出するまで、開閉爪が開放されるようになっている。
なお、普通図柄表示部19は、普通図柄を表示するものであり、ゲート18を通過した遊技球が検出されると、普通図柄が所定時間だけ変動し、遊技球のゲート18の通過時点において抽出された抽選用乱数値により決定される停止図柄を表示して停止する。
第1大入賞口16aは、前後方向に進退するスライド盤を有して構成され、第2大入賞口16bは、下端が軸支されて前方に開放する開閉板を有して構成されている。第1大入賞口16aや第2大入賞口16bの動作は、特に限定されないが、この実施例では、第1大入賞口16aは、第1図柄始動口15aに対応し、第2大入賞口16bは、第1図柄始動口15bに対応するよう構成されている。
すなわち、第1図柄始動口15aに遊技球が入賞すると、特別図柄表示部Da~Dcの変動動作が開始され、その後、所定の大当り図柄が特別図柄表示部Da~Dcに整列すると、第1大当りたる特別遊技が開始され、第1大入賞口16aのスライド盤が、前方に開放されて遊技球の入賞が容易化される。
一方、第2図柄始動口15bへの遊技球の入賞によって開始された変動動作の結果、所定の大当り図柄が特別図柄表示部Da~Dcに整列すると、第2大当りたる特別遊技が開始され、第2大入賞口16bの開閉板が開放されて遊技球の入賞が容易化される。特別遊技(大当り状態)の遊技価値は、整列する大当り図柄などに対応して種々相違するが、何れの遊技価値が付与されるかは、遊技球の入賞タイミングに応じた抽選結果に基づいて予め決定される。
典型的な大当り状態では、大入賞口16の開閉板が開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板が閉じる。このような動作は、最大で例えば15回まで継続され、遊技者に有利な状態に制御される。なお、特別図柄表示部Da~Dcの変動後の停止図柄が特別図柄のうちの特定図柄であった場合には、特別遊技の終了後のゲームが高確率状態(確変状態)となるという特典が付与される。
図3(a)は、上記した各動作を実現するパチンコ機GMの全体回路構成を示すブロック図である。また、図3(b)は、払出制御基板25に配置された電源モニタ部MNIの回路構成を示す回路図であり、図3(c)は、本実施例で使用するメイン表示装置DS1の仕様を説明する図面である。
最初に、図3(c)に基づいて、実施例で使用するメイン表示装置DS1の仕様から説明する。先に説明した通り、この表示装置DS1は、横1280×縦1024ピクセルの液晶カラーディスプレイであるが、左右方向に隣接する奇数ピクセル(ODD)と偶数ピクセル(EVEN)を、別々のLVDS(Low Voltage Differential Signaling)伝送路を通して、受信部RV(RVa+RVb)で受ける構成となっている。そこで、本実施例では、このデュアルリンク仕様に対応して、第1の伝送路LVDS1を経由してODD信号を伝送し、第2の伝送路LVDS2を経由してEVEN信号を伝送している(図3(a)の右下部)。
また、この表示装置DS1では、表示装置DS1の内部動作を規定する動作クロックCK(図42参照)は、その周波数が40MHz~70MHzの範囲とするべく規定されている(典型値=54MHz)。この動作クロックCKは、後述するLVDSクロックCLKに対応するが、以下では、説明の便宜上、動作クロックCKの周波数は、典型値の54MHzであるとする。また、54MHzの動作クロックCKにおいて、一フレームの画像更新に要する更新時間FR(Frame Rate)を、ほぼ1/60秒に一致させる構成について説明する。
この表示装置DS1は、その仕様として、第1の伝送路LVDS1から受けたODD信号と、第2の伝送路LVDS2から受けたEVEN信号に基づき、表示画面の左右方向に隣接する2画素を、一の動作クロックCKで同時に処理するよう構成されている。この結果、水平方向一ラインの1280画素の画素データは、640/54MHz=11.85μSの動作時間で更新され、この動作が1024ライン分だけ繰り返されることで、一フレーム分1280×1024ピクセルの画像表示が更新されることになる。なお、第1ライン→第2ライン・・・→第1024ラインのように、一ラインごとにノンインタレース方式で画像が更新される。
但し、図3(c)に示す通り、表示装置DS1の仕様として、水平方向に、典型値としては、204クロック分の待機時間(ブランク期間)を設けること、及び、垂直方向に、典型値としては、42行分の待機時間(ブランク期間)を設けることが規定されている。したがって、これらのブランク期間を考慮した実際の画面更新周期FRは、上記した典型値に基づく計算において、(204+640)×(42+1024)/54MHz≒16.66mSとなるので、フレームレートFRは約1/60Hzとなる。
なお、水平方向の待機時間WThと、垂直方向の待機時間WTvには、各々、典型値に対する許容幅が規定されており、実際には、上記した典型値とは異なる値が選択可能である。但し、フレームレートFR=1/60秒とするため、(WTh+640)×(WTv+1024)/54MHz=1/60秒となるよう、水平/垂直方向の待機時間WTh/WTvを正確に設定する必要がある。
一方、この表示装置DS1では、水平同期信号HSと、垂直同期信号VSの受信が特に不要である一方、ODD信号とEVEN信号の伝送時には、Hレベルのデータ有効信号ENABの伝送が要求される。すなわち、伝送路LVDS1,LVDS2に対して、有意な信号(ODD/EVEN信号)を伝送しているタイミングでは、データ有効信号ENABがアクティブレベル(H)である必要がある。
そこで、本実施例では、上記したメイン表示装置DS1の仕様に基づき、演出制御基板23とメイン表示装置DS1とを、周波数54MHz(=ドットクロックDCKの1/2)のLVDSクロックCLKのデュアルリンク伝送路でLVDS接続している(図5、図14(a))。また、本実施例のVDP回路52では、メイン表示装置DS1の仕様を満たす水平方向ブランク期間WThと、垂直ブランク期間WTvを設けるとともに、画像データ(ODD/EVEN信号)の出力時は、データ有効信号ENABがアクティブレベル(Hレベル)になるようにしている。
すなわち、データ有効信号ENABは、図4(b)に示すように、水平同期周期THのうち、水平表示期間THdだけがHレベルとなるよう構成されている。したがって、データ有効信号ENABは、垂直同期周期TVのうち、垂直表示期間TVd以外は、必ずLレベルとなる。なお、水平方向ブランク期間WThと、垂直ブランク期間WTvは、各々の典型値(WTh=204/WTv=42)とは異なる値を採用しているが、具体的な設計値は、図15に基づいて後述する。
何れにしても、データ有効信号ENABは、差動信号ラインRA2/RB2を経由して、LVDSクロックCLKの各動作サイクルにおいて、離散的なDE信号として繰り返し伝送される。図4(b)や図4(c)に示すデータ有効信号ENABは、LVDS伝送された離散データであるDE信号を復調したものであり、離散的なDE信号を時間軸上に連続させたものである。なお、差動信号ラインRA2/RBでは、垂直同期信号VSと、水平同期信号HSについても、DE信号(データ有効信号ENAB)に続いて、繰り返し伝送されているが、実施例で使用するメイン表示装置DS1では、この同期信号VS,HSを活用していない。
もっとも、表示装置DS1では、水平同期信号HSや、垂直同期信号VSの伝送を何ら禁止していない。但し、これらの同期信号に規定された内部動作が実行されることはない。すなわち、表示ラインの水平改行タイミングは、受信した水平同期信号HSとは無関係に、データ有効信号ENABの立下りタイミングや、データ有効信号ENABの立上りタイミング後の動作クロックCK(LVDSクロックCLKに対応)の個数(実施例では640個=1280/2)などに基づいて、表示装置DS1の内部回路にとって最適なタイミングに規定される(図4(b)の下向き矢印)。
この点は、一フレーム分の画像表示後の垂直改行タイミングについても同様であり、所定パルス幅のデータ有効信号ENABの連続個数(実施例では1024個)などに基づいて、表示装置DS1の内部回路にとっての最適タイミングに規定され(図4(c)の下向き矢印)、受信した垂直同期信号VSには影響されない。このように、本実施例では、表示装置DS1に水平同期信号HSや垂直同期信号VSを伝送する必要がないので、同期信号HS,VSのパルス幅PWh/PWvや、フロントポートFPh/FPvや、バックポートBPh/BPvを最適に設定する必要がなくなり、演出制御部23やVDP回路52の制御負担が大きく軽減される。
また、表示装置DS1の内部動作としても、自らの内部構成に基づいた最適タイミングで、水平改行や垂直改行の動作が実行されるので、不自然な表示動作のおそれが解消される。因みに、外部から受ける水平同期信号HSや、垂直同期信号VSに基づいて動作する表示装置の場合には、同期信号HS,VSのパルス幅や、同期信号HS,VSに前後するフロントポーチ期間や、バックポーチ期間が不適切な場合には、正常な表示動作が損なわれるおそれがある。
ところで、図4(a)において、差動信号ラインRA0~RA3,RACLKを使用する第1の差動信号LVDS1は、奇数番目の画素を伝送しており(AサイドのODD信号)、差動信号ラインRB0~RB3,RBCLKを使用する第2の差動信号LVDS2は、偶数番目の画素を伝送している(BサイドのEVEN信号)。このように、本実施例では、二種類のODD信号とEVEN信号を、デュアルリンク伝送路で伝送することで、ドットクロックDCKの周波数を1/2に低下させることができ、その分だけ耐ノイズ性に優れ、また、伝送距離を上げることもできる。
一方、メイン表示装置DS1には、デュアルリンク伝送路で伝送されたODD信号と、EVEN信号の変換受信部RVが内蔵されており、二つのLVDS信号(ODD信号とEVEN信号)からRGB信号を復元して、一フレーム分(1280×1024ドット)の画像を表示している。先に説明した通り、RGB信号は、各々、8bitで構成されているので、メイン表示装置DS1には、諧調度28×28×28のフルカラー画像が表示される。
図5は、メイン液晶表示部MONIとLEDバックライト部BLで構成された表示装置DS1について、特に、液晶表示部MONIの内部構成を、VDP回路52の関連部分と共に図示したブロック図である。図示の通り、ODD信号は、第1のLVDSライン(Aサイド)を経由してLVDS-パラレル変換部RVaに伝送され、EVEN信号は、第2のLVDSライン(Bサイド)を経由してLVDS-パラレル変換部RVbに伝送される。そして、差動ラインRA0/RB0で伝送される各8ビット長のRGBデータのうち、画像データR0~R5,G0が注出され、差動ラインRA1/RB1からは、画像データG1~G5,B0~B1が注出される。
また、差動ラインRA2/RB2から、画像データB2~B5とDE信号とVS信号とHS信号が注出され、差動ラインRA3/RB3からは、画像データG6~G7,R6~R7,B6~B7が注出される。ここで、DE信号は、データ有効信号ENABに他ならない。また、注出されたVS信号と、HS信号が利用されないことは前記した通りである。
次に、差動ラインRACK/RBCKのLVDSクロックCLKは、PLL回路に供給されることで、LVDSクロックCLKと同一の周波数54MHzの動作クロックCKが生成される。この動作クロックCKは、液晶コントローラLCD_CTL の内部動作を規定するもので、液晶コントローラLCD_CTL は、液晶パネルLCDの左右方向に隣接する2個のRGB画素(8ビット×3×2)に対応する画像データを、一の動作クロックCKに同期してまとめて処理している。
そのため、横方向1280(=640×2)ドットの画素は、動作クロックCK640個分の処理時間11.85μS(=640/54MHz)で処理を完了することになる。なお、一の画素は、RGB三色の基本画素で構成されて、RGB三色の基本画素の画像データは、各々1バイト長であって諧調度28×28×28であるので、一ラインの全画素(1280ドット)の画像データは、全体として、3×1280バイト長となる。
図5に示す通り、液晶コントローラLCD_CNT は、1280本のソース信号ラインを、各々、28(=256)諧調の駆動信号で駆動するソースドライバSDVと、1024本のゲート信号ラインをON/OFF制御するゲートドライバGDVを適宜に制御している。具体的には、液晶コントローラLCD_CNT は、LVDS伝送路から注出したDE信号と、動作クロックCKとに基づいて、各部を適宜に動作させることで、フレームレートFR=1/60Hzの画像更新動作を実現している。先に確認した通り、DE信号は、VDP回路52が出力したデータ有効信号ENABに対応する。
本実施例の場合、ソースドライバSDVは、384本の出力端子を有するドライバ素子を10個配置して構成されている。先に説明した通り、液晶パネルLCDの一ライン全画素(1280ドット)は、RGB三色の基本画素で構成されて合計3×1280個であるので、これらを駆動するドライバ素子が10個必要となる。なお、これら10個のドライバ素子には、液晶コントローラLCD_CNT から画像データDATが順番に供給され、これがスタート信号SPや転送クロックDCLKに基づいて適宜に転送される。そして、ラッチ信号LTに同期して、アナログ変換された駆動信号が3840本のソース信号ラインに供給される。先に説明した通り、液晶パネルLCDの一ラインの全画素(1280ドット)が更新されるに要する時間は、11.85μS(=640/54MHz)である。
一方、液晶コントローラLCD_CNT は、ゲートドライバGDVに対して、ゲートスタート信号GSや、ゲートクロック信号GCLKを供給することで、駆動対象となるゲート信号ラインを更新している。ここで、ゲートドライバGDVは、256本の出力端子を有するドライバ素子を4個配置して構成されている。
なお、ゲート信号ラインの更新タイミングは、DE信号の立下りタイミングと、動作クロックCKに基づいて規定され、ゲート信号ラインの水平改行周期は、動作クロックCKでカウントして、典型値計算では、640+204クロックとされる(図3(c)参照)。また、DE信号の個数(1024)に基づいて、駆動対象のゲート信号ラインが初期状態にリセットされ、最適なタイミングで、ゲートスタート信号GSが出力され、ゲートクロック信号GCLKの出力が再開される。ゲート信号ラインの垂直改行周期は、動作クロックCKでカウントして、典型値計算では、42+1024クロックである(図3(c)参照)。但し、先に説明した通り、本実施例では、典型値とは異なる設計で表示装置DS1を動作させている(図15参照)。
ところで、上記の表示動作は、LEDバックライト部BLの点灯状態において、メイン液晶表示部MONIに電源電圧5Vが供給されていることが条件となる。そこで、本実施例では、液晶表示部MONIと、バックライト部BLを、整合的に動作させるべく、給電制御回路SPYを設けている。給電制御回路SPYは、演出インタフェイス基板22から三種類の直流電圧(3.3V,5V,12V)を受けると共に、複合チップ50の演出制御CPU63から、各種の給電制御信号(STBY,PWM,PS1,PS2)を受けている(図7(a)参照)。
そして、給電制御回路SPYは、最適なタイミングで、メイン液晶表示部MONIの電源電圧として、直流電圧5Vを給電している(図6(c)、図6(g)参照)。また、給電制御回路SPYは、バックライト部BLの電源電圧として、直流電圧12Vを給電制御すると共に、LEDバックライト部BLのBL_EN 端子と、PWM 端子を、適切なH/Lレベルに制御して、最適な点灯動作を実現している。
図6(a)は、給電制御回路SPYの回路構成と、バックライト部BL及び液晶表示部MONIとの関係を示す回路図である。図示の通り、この給電制御回路SPYは、トランジスタTr1とMOSトランジスタQ1を有する第1スイッチ回路と、トランジスタTr2とMOSトランジスタQ2を有する第2スイッチ回路と、トランジスタTr3とMOSトランジスタQ3を有する第3スイッチ回路と、トランジスタTr4とMOSトランジスタQ4を有する第4スイッチ回路と、各種の制御信号を受けるバッファ回路SBUFと、を中心に構成されている。
バッファ回路SBUFは、演出インタフェイス基板22から給電される直流電圧3.3Vを電源電圧とする高速シュミットバッファ(例えばTC74VHC9125)であり、非反転状態の入出力関係で動作している。すなわち、複合チップ50の演出制御CPU63は、電源電圧3.3Vに基づいて、理論上のH/L幅が、3.3Vの給電制御信号(STBY,PWM,PS1,PS2)を出力しており、これを受けたバッファ回路SBUFは、同一論理の制御信号(STBY,PWM,PS1,PS2)を出力している(図7(a)参照)。
図6(a)に示す通り、バッファ回路SBUFの4本の入力端子(STBY,PWM,PS1,PS2)は、全てプルダウン抵抗Rpdを経由してグランドに接続されており、接続コネクタの分離状態や、電源投入時など、各制御信号がHiZ(high impedance)状態の場合には、全ての制御信号がLレベルとなるよう構成されている。
次に、第1~第4スイッチ回路において、トランジスタTr1~Tr4は、全てNPN型のバイポーラトランジスタであって、スイッチング動作をするよう駆動される。すなわち、各トランジスタTr1/Tr2/Tr3/Tr4は、対応する制御信号PS1/STBY/PWM/PS2がHレベルの場合に、バイアス抵抗の分圧比に基づいてON動作する一方、制御信号PS1/STBY/PWM/PS2がLレベルの場合には、バイアス抵抗に電流が流れないことでOFF動作する。
ここで、トランジスタTr1/Tr4のOFF動作時には、各トランジスタTr1/Tr4のコレクタ出力が、いずれも3.3Vより高レベル(12V/5V)となる。また、MOSトランジスタQ1がON状態において、トランジスタTr2/Tr3のOFF動作時には、各トランジスタTr2/Tr3のコレクタ出力は、約12Vとなる。これらの意味において、各トランジスTr1~Tr4は、バイアス抵抗と共に、給電制御信号(STBY,PWM,PS1,PS2)の論理Hレベルを増加させるレベルシフト回路を構成している。
なお、トランジスタTr1~Tr4に対するバイアス抵抗は、各々、R11+R12、R21+R22、R31+R32、R41+R42であり、各バイアス抵抗の分圧比で規定される電圧が、トランジスタTr1~Tr4のベース端子に供給されている。
本実施例では、上記したレベルシフト回路(Tr1~Tr4)を設けるので、バックライトの発光輝度を上げる一方で、演出制御部23の消費電力を大きく抑制することができる。すなわち、バックライト部BLの電源電圧(12V)を可能な限り高レベルにする一方で、給電制御信号(STBY,PWM,PS1,PS2)の論理Hレベルを、任意の低レベル(3.3V)に設定することができる。
一方、MOSトランジスタQ1~Q4は、全てPch型であって、トランジスタTr1~Tr4のON/OFF状態に応じたスイッチング動作をして、ON動作時には、ソース端子Sとドレイン端子Dがほぼ導通状態となる。
具体的に確認すると、先ず、MOSトランジスタQ1は、そのソース端子Sに、演出インタフェイス基板22が給電する直流電圧12Vを受けており、Hレベルの制御信号PS1に基づいてトランジスタTr1がON動作すると、これに呼応して通電状態に移行するバイアス抵抗Rb1の両端電圧に基づいて、MOSトランジスタQ1もON動作して、ドレイン端子Dに直流電圧12Vを出力する。
この直流電圧12Vは、RCフィルタ回路とツェナーダイオードを経由して、バックライト部BLに給電される。RCフィルタ回路は、3.3kΩの抵抗と、47μFの導電性高分子コンデンサ(アルミ電解コンデンサの電解液の代わりに、導電性高分子と電解液とを融合させた電解質を配置したハイブリッドコンデンサ)で構成されている。
このハイブリッドコンデンサは、定格電圧(Rated Voltage )25Vであって、直径6.3mm高さ5.8mmの円筒形状の表面実装品SMD(Surface Mount Device)である。そして、5V給電時における静電容量は、公称値の(47μF)の-10%未満に維持される。また、等価直列抵抗ESRは、公称値で50mΩである。
通常の回路構成では、47μFの電解コンデンサに、MLCC(Multilayer Ceramic Capacitor)などセラミックコンデンサ(0.1μF)を並列接続するが、本実施例では、単一のハイブリッドコンデンサで、所望の平滑動作とデカップリング動作を実現しており、他の回路素子の配置スペースを消費しない。
因みに、導電性高分子コンデンサから、少なくとも半径20mmの範囲内に、他の平滑コンデンサやデカップリングコンデンサが配置されることはない。また、本実施例では、デカップリングコンデンサを表面実装し、通常の電解コンデンサのように、スルーホール実装法を採らないので、配置スペースを抑制できる利点もある。
また、表面実装された円筒形の頂面には、静電容量を示す数値「47」と、定格電圧25Vを示すランク記号「E」が記載され、また、マイナス極性の方向が、黒塗り記号で特定されているので、目視確認で、容易に基板上の部品チェックができる。
また、本実施例では、特に、MOSトランジスタQ1として、ソースSドレインD間のON抵抗が、25mΩ以上、35mΩ以下となる素子を使用している。そのため、例えば、駆動電流(ドレイン電流ID)2.5Aを定常的に流しても、MOSトランジスタQ1における電圧降下は、0.1V以下であり、また、損失電力も0.22W(=2.5*2.5*35/1000)程度に抑制される。なお、ON抵抗は、VGS=-10V,ID=-4.5Aにおけるパルス駆動での測定結果である。
また、トランジスタQ2とトランジスタQ3は、各々のソース端子SにトランジスタQ1のドレイン端子Dの電圧を受けている。したがって、MOSトランジスタQ1がON状態において、Hレベルの制御信号STBY/PWMに基づいてトランジスタTr2/Tr3がON動作すると、これに呼応して通電状態に移行するバイアス抵抗Rb2/Rb3の両端電圧に基づいて、MOSトランジスタQ2,Q3もON動作する。そのため、MOSトランジスタQ2,Q3のドレイン端子Dには、ON状態のトランジスタQ1を経由して、各々、直流電圧12Vが出力されることになる。
この直流電圧12Vは、MOSトランジスタQ2のドレイン端子Dから、制御信号STBYとして出力され、また、MOSトランジスタQ3のドレイン端子Dからは、制御信号PWMとして出力される。そして、制御信号STBYは、プルダウン抵抗Rpdによるプルダウン状態で、バックライト部BLのBL_EN 端子(back light enable )に供給され、制御信号PWMは、プルダウン抵抗Rpdによるプルダウン状態で、バックライト部BLのPWM 端子(pulse width modulation)に供給されている。
本実施例では、プルダウン抵抗Rpdを、何れも33kΩ程度に設定することで、直流電圧12V(STBY/PWM)に起因してプルダウン抵抗Rpdに流れる電流を、0.36mA程度に抑制している。そのため、MOSトランジスタQ2、Q3として高価な素子を選択する必要がなくなり、本実施例では、ソースSドレインD間のON抵抗が、2.5Ω以上、3.8Ω以下となる素子を使用している。なお、ON抵抗は、VGS=-4.5V,ID=-100mAにおけるパルス駆動での測定結果である。
次に、バックライト部BLについて説明すると、バックライト部BLは、縦横に整列配置されたN×M個の発光ダイオード(LED)と、負論理の駆動パルスを出力して、N×M個の発光ダイオードを同期的に点灯駆動するドライバDVLと、を有して構成されている。このドライバDVLは、内部動作を動作可能(enable)にするか否かを規定するBL_EN 端子と、負論理の駆動パルスのデューティ比を、10%~100%の範囲の正論理で規定するPWM 端子と、駆動パルスを出力する出力端子LED1~LEDnと、を有して構成されている。
先に説明した通り、BL_EN 端子には、給電制御回路SPYから制御信号STBYが供給され、PWM 端子には、制御信号PWMが供給されている。そして、制御信号STBYがHレベル(12V)の場合には、ドライバDVLの内部回路が動作して、出力端子LED1~LEDnから駆動パルスが出力可能となる。この駆動パルスは、制御信号PWMを論理反転させた負論理パルスとなる。
このように、実施例の駆動パルスは、PWM 端子に供給される制御信号PWMを論理反転させた負論理パルスであるので、制御信号PWMのデューティ比が100%に近いほど、出力端子LED1~LEDnのLレベル期間が長くなり、発光ダイオードに流れる平均電流が上がることで、バックライト光が明るくなる。一方、デューティ比が10%に近いほど、発光ダイオードの平均電流が下がることで、バックライト光が暗くなる。
したがって、制御信号(制御パルス)PWMのデューティ比を適宜に変更することで、バックライト光の発光強度を変更することもできる。例えば、遊技者が不在のデモ状態では、バックライト光を暗くすることもできる。但し、本実施例では、このような発光制御の煩雑さを回避するため、制御信号のデューティ比を100%に維持しており、制御信号PWMは、パルス状に変化することなく、動作状態では定常的にHレベル(12V)を維持している。そのため、ドライバDVLの出力端子LED1~LEDnは、バックライト部BLの動作状態では、定常的にLレベルを維持することになる。
ところで、BL_EN 端子と、PWM 端子は、何れも、プルダウン抵抗Rpdを経由してグランドに接続されている。したがって、MOSトランジスタQ2がOFF状態であって、制御信号STBYがHiZ状態の場合には、ドライバDVLが非動作状態となって、出力端子LED1~LEDnがHiZ状態となるので、全ての発光ダイオードは消灯状態となる。
また、MOSトランジスタQ3がOFF状態であって、制御信号PWMがHiZ状態の場合には、例え、制御信号STBYがHレベルであっても、デューティ比が0%に維持されることで、出力端子LED1~LEDnがHレベル(12V)を維持して全ての発光ダイオードは消灯状態となる。したがって、有意な画像データが転送されない電源投入時や、給電制御回路SPYの動作異常時には、バックライトが消灯することになり、その結果、不自然な画像表示が未然に回避される。バッファ回路SBUFの4本の入力端子とグランドの間に、プルダウン抵抗Rpdを接続するのも同じ意図に基づく。
続いて、トランジスタTr4とMOSトランジスタQ4を有する第4スイッチ回路と、メイン液晶表示部MONIとの関係について説明する。先に説明した通り、第4スイッチ回路のトランジスタTr4は、制御信号PS2のH/Lレベルに基づいてON/OFF動作する。
一方、MOSトランジスタQ4は、そのソース端子Sに、演出インタフェイス基板22が給電する直流電圧5Vを受けており、トランジスタTr1がON動作すると、これに呼応して通電状態に移行するバイアス抵抗Rb4の両端電圧に基づいて、MOSトランジスタQ4もON動作して、ドレイン端子Dに直流電圧5Vを出力する。
この直流電圧5Vは、RCフィルタ回路とツェナーダイオードを経由して、図5に示す液晶表示部MONIに給電され、液晶表示部MONIの電源電圧として活用される。本実施例では、特に、MOSトランジスタQ4として、ソースSドレインD間のON抵抗が、48mΩ以上、65mΩ以下となる素子を使用している。そのため、例えば、駆動電流(ドレイン電流ID)=1.5Aを定常的に流しても、MOSトランジスタQ1における電圧降下は、0.1V以下であり、また、損失電力も0.15W(=1.5*1.5*65/1000)程度に抑制される。なお、ON抵抗は、VGS=-4.5,ID=-2.5Aにおけるパルス駆動での測定結果である。
続いて、図6(b)~図6(j)に基づいて、給電制御回路SPYの回路動作について説明する。複合チップ50は、電源投入後、システムリセット信号SYSがLレベルを維持するアサート期間を経て、制御動作を開始する(図6(d)のタイミングT1)。そして、複合チップ50の演出制御CPU63は、タイミングT1から1000mS後に、制御信号PS1,PS2をHレベルに遷移させる(タイミングT2)。
すると、Hレベルの制御信号PS1に基づいて、MOSトランジスタQ1がON動作して、バックライト部BLへの直流12Vの給電が開始される。また、Hレベルの制御信号PS2に基づいて、MOSトランジスタQ4がON動作して、液晶表示部MONIへの直流5Vの給電が開始される。但し、このタイミングT2の時点では、制御信号STBY,PWMが共に、Lレベルのままであるので、バックライト部BLが発光することはない。したがって、液晶表示部MONIが如何に動作しても、不自然な画像が表示されるおそれはない。
次に、演出制御CPU63は、タイミングT2から5mS程度経過した後に、表示クロックと表示回路74の初期化動作を開始する。この制御内容については、後で詳述するが、これらの動作は、VDP回路52の動作を開始するまでの初期化動作の一つであり、この段階では、表示装置DS1に有意な画像信号が出力されることはない。
その後、演出制御CPU63は、表示レジスタを適宜に初期設定した後、表示回路74とLVDS回路80の動作を開始させる(タイミングT4)。そのため、タイミングT4以降は、有意な画像信号としてのLVDS信号が、表示装置DS1に1/60秒毎に繰り返し出力されることになる(図6(f)参照)。
但し、タイミングT4の時点では、制御信号PWMがLレベルを維持しているので、バックライト光が発光することはない。すなわち、演出制御CPU63は、タイミングT3で、制御信号STBYをHレベルに遷移させて、ドライバDVLを動作可能状態に制御するが、タイミングT4の時点は、まだ制御信号PWM=Lであって、駆動パルスのデューティ比が0%であることから、バックライト部BLの消灯状態が維持される。
一方、演出制御CPU63は、表示回路74とLVDS回路80の動作を開始させた後(図21のSS4)、300mS以上経過したタイミングT5の時点で、制御信号PWMをHレベルに遷移させ(図21のSS6)、バックライト部BLを、デューティ比100%の発光状態に遷移させる。そして、タイミングT5の動作を、例えば、タイマ割込み処理で実行する場合には、タイミングT5の時点では、液晶表示部MONIは、既に、有意な画像信号としてのLVDS信号を1/60秒毎に繰り返し受けているので、その画像信号に基づいた画像が表示されることになる。すなわち、図21のステップSS6の処理の後、直ちに定常処理(図22のST4~ST14)が開始されるので、タイミングT5の時点では、ディスプレイリストDLに基づく初期画面が表示される。
但し、図21に示すように、演出制御CPU63が、300mSの待機処理(図21のステップSS5)を実行する場合には、タイミングT5では、未だ、ディスプレイリストDLが発行されていないので、表示内容は、電源投入後のVRAM(フレームバッファFBa)に基づく画面となる。したがって、かかる点を考慮すると、電源投入後、VRAM(特にフレームバッファFBa,FBb)をゼロクリアするのが好適であるが、仮に、ゼロクリアしなくても、ランダムな画像が表示されるのは、遊技ホールの営業開始時のせいぜい一瞬であるので、何ら問題がない。すなわち、図21のステップSS6の処理の後、直ちに定常処理(図22のST4~ST14)が開始され、ディスプレイリストDLに基づく初期画面が表示される。
ところで、本実施例では、タイミングT2からタイミングT4までのプログラム実行時間が、20mS以内となるようプログラム設計されている。これは、実施例で使用する表示装置DS1は、液晶表示部MONIへの電源投入から、所定時間τ(例えば20mS)以内に画像信号(LVDS信号)の送信を開始すべきことを推奨しているからである。
本実施例において、制御信号PS2を使用して、液晶表示部MONIへの給電タイミングを、1秒程度遅らせるのも、上記の要請に基づくものであり、もし、電源投入と同時に液晶表示部MONIへの給電を開始すると、その後、所定時間τ(例えば20mS)以内にLVDS信号の送信を開始することは、アサート期間やプログラム実行時間(SP1~SP10の処理時間)から、とても無理である(タイミングT4参照)。
以上、メイン表示装置DS1について、詳細に説明したが、サブ表示装置DS2についても、動作内容は、実質的に同様であり、図6(b)の動作をすることで、サブ液晶表示部MONIとバックライト部BLが整合的に動作して不適切な表示が生じないよう構成されている。
また、サブ表示装置DS2は、VDP回路52から受ける水平同期信号HSと垂直同期信号VSに基づいて、図42に示すと同様の動作をしている。但し、サブ制御装置DS2も、水平同期信号HSや垂直同期信号VSに基づくことなく、データ有効信号ENABに基づいて動作する構成を採るのも好適である。なお、データ有効信号ENABは、サブ表示装置DS2に対しては、離散的なDE信号の形式ではなく、連続信号ENABとして伝送される(図14(a)右下部参照)。
次に、図3(a)に戻って、パチンコ機GMの全体回路構成を説明する。図3(a)に示す通り、このパチンコ機GMは、AC24Vを受けて各種の直流電圧(35V,12V,5V)をAC24Vと共に出力する電源基板20と、遊技制御動作を中心統括的に担う主制御基板21と、音声演出用の回路素子SNDを搭載した演出インタフェイス基板22と、主制御基板21から受けた制御コマンドCMDに基づいてランプ演出、音声演出、及び画像演出を統一的に実行する演出制御基板23と、演出制御基板23と表示装置DS1,DS2の間に位置する液晶インタフェイス基板24と、主制御基板21から受けた制御コマンドCMD’に基づいて払出モータMを制御して遊技球を払い出す払出制御基板25と、遊技者の操作に応答して遊技球を発射させる発射制御基板26と、を中心に構成されている。
なお、演出インタフェイス基板22と、演出制御基板23と、液晶インタフェイス基板24とは、配線ケーブルを経由することなく、雄型コネクタと雌型コネクタとを直結されている。そのため、各電子回路の回路構成を複雑高度化しても基板全体の収納空間を最小化できると共に、接続ラインを最短化することで耐ノイズ性を高めることができる。
図示の通り、主制御基板21が出力する制御コマンドCMD’は、払出制御基板25に伝送される。一方、主制御基板21が出力する制御コマンドCMDは、演出インタフェイス基板22を経由して演出制御基板23に伝送される。ここで、制御コマンドCMD,CMD’は、何れも16bit長であるが、8bit長毎に2回に分けてパラレル送信される。
主制御基板21と払出制御基板25には、ワンチップマイコンを含むコンピュータ回路が搭載されている。また、演出制御基板23には、VDP回路(Video Display Processor )52や内蔵CPU回路51などのコンピュータ回路が内蔵された複合チップ50が搭載されている。そこで、これらの制御基板21、25、23と、演出インタフェイス基板22や液晶インタフェイス基板24に搭載された回路、及びその回路によって実現される動作を機能的に総称して、本明細書では、主制御部21、演出制御部23、及び払出制御部25と言うことがある。なお、主制御部21に対して、演出制御部23と、払出制御部25がサブ制御部となる。
また、このパチンコ機GMは、図3(a)の破線で囲む枠側部材GM1と、遊技盤5の背面に固定された盤側部材GM2とに大別されている。枠側部材GM1には、ガラス扉6や前面板7が枢着された内枠3と、その外側の木製外枠1とが含まれており、機種の変更に拘わらず、長期間にわたって遊技ホールに固定的に設置される。一方、盤側部材GM2は、機種変更に対応して交換され、新たな盤側部材GM2が、元の盤側部材の代わりに枠側部材GM1に取り付けられる。なお、枠側部材1を除く全てが、盤側部材GM2である。
図3(a)の破線枠に示す通り、枠側部材GM1には、電源基板20と、バックアップ電源基板33と、払出制御基板25と、発射制御基板26と、枠中継基板36と、モータ/ランプ駆動基板37と、が含まれており、これらの回路基板が、内枠3の適所に各々固定されている。一方、遊技盤5の背面には、主制御基板21、演出制御基板23が、表示装置DS1,DS2やその他の回路基板と共に固定されている。そして、枠側部材GM1と盤側部材GM2とは、一箇所に集中配置された集中接続コネクタC1~C3によって電気的に接続されている。
電源基板20は、遊技ホールから配電される交流電圧AC24Vに基づいて、三種類の直流電圧(35V,12V,5V)を生成し、各直流電圧を、集中接続コネクタC2を経由して、演出インタフェイス基板22に配電している。また、三種類の直流電圧(35V,12V,5V)は、交流電圧AC24Vと共に、払出制御基板25に配電される。そして、払出制御基板25に配電された直流電圧(35V,12V,5V)は、バックアップ電源BAKと共に、集中接続コネクタC1を経由して、主制御基板21に配電されるよう構成されている。
直流35Vは、遊技球の発射動作に関し、球送りソレノイドや発射ソレノイドの駆動電源、及び、電動式チューリップ(可変入賞装置)や大入賞口16を開閉駆動する電磁ソレノイドの駆動電源として使用される。また、直流12Vは、各制御基板から制御されるLEDランプやモータの駆動電源、及びデジタルアンプの電源電圧として使用され、一方、直流5Vは、払出制御基板25や主制御基板21のワンチップマイコンの電源電圧、及び、各制御基板に搭載された論理素子の電源電圧として使用される。また、直流5Vは、演出インタフェイス基板22のDC/DCコンバータでレベル降下された後、レベル降下された各種レベルの電圧が、各種コンピュータ回路(複合チップ50や音声プロセッサ27など)の電源電圧として使用される。
バックアップ電源BAKは、電源遮断後、主制御部21と払出制御部25のワンチップマイコンの内蔵RAMのデータを保持するためのDC5Vの直流電源であり、例えば、電気二重層コンデンサで実現される。この実施例では、専用のバックアップ電源基板33が設けられており、バックアップ電源基板33に配置された電気二重層コンデンサは、払出制御基板25から受ける直流電圧5Vによって遊技動作中に充電されるよう構成されている。
一方、電源遮断後は、バックアップ電源BAKが、主制御部21と払出制御部25のワンチップマイコンの内蔵RAMのデータを保持するので、主制御部21と払出制御部25は、電源遮断前の遊技動作を電源投入後に再開できることになる。なお、バックアップ電源基板33には、少なくとも数日は、各ワンチップマイコンの内蔵RAMの記憶内容を保持可能な電気二重層コンデンサが配置されている。
ところで、本実施例では、従来の機器構成とは異なり、交流電圧AC24Vの異常低下を示す電源異常信号ABNは、電源基板20ではなく、払出制御基板25の電源モニタ部MNTにおいて生成されるよう構成されている。電源モニタ部MNTは、図3(b)に示す通り、電源基板20から受けるAC24Vを整流する全波整流回路と、全波整流回路の出力を受けて通電発光するフォトダイオードDと、電源基板20から受ける直流電圧5Vを電源とし、フォトダイオードDの発光に基づいてON動作するフォトトランジスTRと、フォトトランジスTRのON動作に基づいてHレベルの検出信号ABN(電源異常信号)を出力する出力部と、を有して構成されている。なお、フォトダイオードDと、フォトトランジスTRとで、フォトカプラPHを構成している。
上記の構成において、電源投入後、フォトカプラPHが速やかにON状態になることで、電源異常信号ABNが正常レベル(H)となる。しかし、その後、交流電源が何らかの理由(正常には電源遮断)で異常降下すると、フォトカプラPHがOFF状態に変化することで、電源異常信号ABNが異常レベル(L)に変化する。この電源異常信号ABNは、払出制御基板25のワンチップマイコンに伝送されると共に、集中接続コネクタC1を経由して、主制御基板21のワンチップマイコンにも伝送されるよう構成されている。したがって、異常レベルの電源異常信号ABNを受けた各ワンチップマイコンは、必要な情報を、各々の内蔵RAMに記憶するバックアップ処理を実行することになる。先に説明した通り、内蔵RAMの情報は、バックアップ電源BAKによって維持されるので、電源遮断前の遊技動作が電源投入後に再開可能となる。
図3(a)に示す通り、演出インタフェイス基板22には、音声プロセッサ27などの音声回路SNDが搭載され、演出制御基板23には、VDP回路52や内蔵CPU回路51などのコンピュータ回路が内蔵された複合チップ50が搭載されている。以下、内蔵CPU回路をCPU回路と略称することがある。
演出インタフェイス基板22には、電源投入時に、電源電圧の上昇を検知して各種のリセット信号RT3,RT4を生成するリセット回路RST3,RST4が搭載されている。先ず、リセット回路RST3は、電源基板20から配電された直流電圧12Vと5Vに基づいて、リセット信号RT3を生成している。そして、リセット信号RT3は、音声メモリ28だけを電源リセットして、そのまま演出制御基板23に伝送される。
演出制御基板23に伝送されたリセット信号RT3は、図7(a)に示す通り、ANDゲートG1において、WDT(Watch Dog Timer )回路58の出力とAND演算され、システムリセット信号SYSとして、CPU回路51やVDP回路52を電源リセットしている(図7(a)及び図7(d)参照)。
リセット回路RST3が生成するリセット信号RT3は、電源投入後、電源リセット信号として所定時間Lレベルを維持した後、Hレベルに上昇する。しかし、その後、直流電圧12V又は直流電圧5Vの何れか一以上が降下した場合(通常は電源遮断時)には、リセット信号RT3のレベル降下に対応して、システムリセット信号SYSもLレベルに降下するので、演出制御基板23のCPU回路51とVDP回路52は動作停止状態となる。
このシステムリセット信号SYSは、WDT回路58の出力(正常時にはHレベル)に基づいても変化するので、リセット信号RT3=Hの状態で、プログラム暴走時などに起因して、WDT回路58の出力がLレベルに降下することに対応して、システムリセット信号SYSもLレベルに変化して、CPU回路51やVDP回路52を異常リセットする(図7(d)参照)。
一方、リセット回路RST4は、電源基板20から配電された5Vを降下して生成された3.3Vに基づいて、リセット信号RT4を生成している。このリセット信号RT4は、電源投入時の電源リセット信号として、音声プロセッサ27を電源リセットしている。
図示の通り、リセット回路RST4には、演出制御基板23から返送されたシステムリセット信号SYSも供給されているので、CPU回路51やVDP回路52の異常リセット時には、これらの回路の異常リセットに同期して、音声プロセッサ27も異常リセットされる。この結果、音声演出は、画像演出やランプ演出と共に初期状態に戻ることになり、不自然な音声演出が継続するおそれがない。
次に、枠側部材GM1たる払出制御基板25と、盤側部材GM2たる主制御部21には、各々、リセット回路RST1,RST2が搭載されており、電源投入時に電源リセット信号が生成され、各コンピュータ回路が電源リセットされるよう構成されている。
このように、本実施例では、主制御部21と、払出制御部25と、演出インタフェイス基板22に、各々、リセット回路RST1~RST4を配置しており、システムリセット信号SYSが回路基板間で伝送されることがない。すなわち、システムリセット信号SYSを伝送する配線ケーブルが存在しないので、配線ケーブルに重畳するノイズによって、コンピュータ回路が異常リセットされるおそれが解消される。
但し、主制御部21や払出制御部25に設けられたリセット回路RST1,RST2は、各々ウォッチドッグタイマを内蔵しており、各制御部21,25のCPUから、定時的なクリアパルスを受けない場合には、各CPUは強制的にリセットされる。
また、主制御部21には、係員が操作可能な初期化スイッチSWが配置されており、電源投入時、初期化スイッチSWがON操作されたか否かを示すRAMクリア信号CLRが出力されるよう構成されている。このRAMクリア信号CLRは、主制御部21と払出制御部25のワンチップマイコンに伝送され、各制御部21,25のワンチップマイコンの内蔵RAMの全領域を初期設定するか否かを決定している。
また、先に説明した通り、主制御部21及び払出制御部25のワンチップマイコンは、払出制御部25に配置された電源モニタMNTから電源異常信号ABNを受けることによって、停電や営業終了に先立って、必要な終了処理を開始するようになっている。
図3(a)に示す通り、主制御部21は、払出制御部25から、遊技球の払出動作を示す賞球計数信号や、払出動作の異常に係わるステイタス信号CONや、動作開始信号BGNを受信している。ステイタス信号CONには、例えば、補給切れ信号、払出不足エラー信号、下皿満杯信号が含まれる。動作開始信号BGNは、電源投入後、払出制御部25の初期動作が完了したことを主制御部21に通知する信号である。
また、主制御部21は、遊技盤上の各入賞口16~18に内蔵された検出スイッチのスイッチ信号を受ける一方、電動式チューリップなどのソレノイド類を駆動している。ソレノイド類や検出スイッチは、主制御部21から配電された電源電圧VB(12V)で動作するよう構成されている。また、図柄始動口15への入賞状態などを示す各スイッチ信号は、電源電圧VB(12V)と電源電圧Vcc(5V)とで動作するインタフェイスICで、TTLレベル又はCMOSレベルのスイッチ信号に変換された上で、主制御部21に伝送される。
先に説明した通り、演出インタフェイス基板22は、集中接続コネクタC2を経由して、電源基板20から各レベルの直流電圧(5V,12V,35V)を受けている(図3(a)及び図7(a)参照)。直流電圧12Vは、デジタルアンプ29の電源電圧であると共に、LEDランプなどの駆動電圧として使用される。また、直流電圧35Vは、遊技枠の適所に配電されて可動物を往復移動させるソレノイドの駆動電圧として使用される。
一方、直流電圧5Vは、演出インタフェイス基板22各所の回路素子の電源電圧として供給されると共に、2つのDC/DCコンバータDC1,DC2に供給されて3.3Vと1.0Vが生成される(図7(a)参照)。生成された直流電圧3.3Vと1.0Vは、各々、I/O(入出力)用と、チップコア用の電源電圧として音声プロセッサ27に供給される。また、直流電圧3.3Vは、リセット回路RST4が生成する電源リセット信号RT4の基礎電圧となる。
演出インタフェイス基板22に配電された直流電圧5Vは、DC/DCコンバータDC1で生成された3.3Vと共に、演出制御基板23に配電される。そして、演出制御基板23に配電された直流電圧3.3Vは、電源電圧として、複合チップ50や、PROM53及びCGROM55に供給される。
図7(a)に示す通り、演出制御基板23には、2つのDC/DCコンバータDC3,DC4が配置されており、各々に供給される直流電圧5Vに基づいて、1.5Vと1.05Vを生成している。ここで、直流電圧1.05Vは、複合チップ50のチップコア用の電源電圧であり、直流電圧1.5Vは、DRAM54とのI/O(入出力)用の電源電圧である。したがって、直流電圧1.5Vは、電源電圧として、DRAM54にも供給される。
図3(a)に示す通り、演出インタフェイス基板22は、主制御部21から制御コマンドCMDとストローブ信号STBとを受けて、演出制御基板23に転送している。より詳細には、図7(a)に示す通りであり、制御コマンドCMDとストローブ信号STBは、入力バッファ40を経由して、演出制御基板23の複合チップ50(CPU回路51)に転送される。ここで、ストローブ信号STBは、受信割込み信号IRQ_CMD であり、演出制御CPU63は、受信割込み信号IRQ_CMD を受けて起動される割込み処理プログラム(割込みハンドラ)に基づいて、制御コマンドCMDを取得している。
図7(a)に示す通り、演出インタフェイス基板22の入力バッファ44は、枠中継基板35,36からチャンスボタン11や音量スイッチVLSWのスイッチ信号を受け、各スイッチ信号を演出制御基板23のCPU回路51に伝送している。具体的には、音量スイッチVLSWの接点位置(0~7)を示すエンコーダ出力の3bit長と、チャンスボタン11のON/OFF状態を示す1bit長をCPU回路51に伝送している。
また、演出インタフェイス基板22には、ランプ駆動基板30やモータランプ駆動基板31が接続されると共に、枠中継基板35,36を経由して、ランプ駆動基板37にも接続されている。図示の通り、ランプ駆動基板30に対応して、出力バッファ42が配置され、モータランプ駆動基板31に対応して、入力バッファ43aと出力バッファ43bが配置されている。なお、図7(a)では、便宜上、入力バッファ43aと出力バッファ43bを総称して、入出力バッファ43と記載している。入力バッファ43aは、可動演出体たる役物の現在位置(演出モータM1~Mnの回転位置)を把握する原点センサの出力SN0~SNnを受けて、演出制御基板23のCPU回路51に伝送している。
ランプ駆動基板30、モータランプ駆動基板31、及び、ランプ駆動基板37には、同種のドライバICが搭載されており、演出インタフェイス基板22は、演出制御基板23から受けるシリアル信号を、各ドライバICに転送している。シリアル信号は、具体的には、ランプ(モータ)駆動信号SDATAとクロック信号CKであり、駆動信号SDATAがクロック同期方式で各ドライバICに伝送され、多数のLEDランプや電飾ランプによるランプ演出や、演出モータM1~Mnによる役物演出が実行される。
本実施例の場合、ランプ演出は、三系統のランプ群CH0~CH2によって実行されており、ランプ駆動基板37は、枠中継基板35,36を経由して、CH0のランプ駆動信号SDATA0を、クロック信号CK0に同期して受けている。なお、シリアル信号として伝送される一連のランプ駆動信号SDATA0は、動作制御信号ENABLE0がアクティブレベルに変化したタイミングで、ドライバICからランプ群CH0に出力されることで一斉に点灯状態が更新される。
以上の点は、ランプ駆動基板30についても同様であり、ランプ駆動基板30のドライバICは、ランプ群CH1のランプ駆動信号SDATA1を、クロック信号CK1に同期して受け、動作制御信号ENABLE1がアクティブレベルに変化したタイミングで、ランプ群CH1の点灯状態を一斉に更新している。
一方、モータランプ駆動基板31に搭載されたドライバICは、クロック同期式で伝送されるランプ駆動信号を受けてランプ群CH2を駆動すると共に、クロック同期式で伝送されるモータ駆動信号を受けて、複数のステッピングモータで構成された演出モータ群M1~Mnを駆動している。なお、ランプ駆動信号とモータ駆動信号は、一連のシリアル信号SDATA2であって、クロック信号CK1に同期してシリアル伝送され、これを受けたドライバICは、動作制御信号ENABLE2がアクティブレベルに変化するタイミングで、ランプ群CH2やモータ群M1~Mnの駆動状態を更新する。
続いて、音声回路SNDについて説明する。図7(a)に示す通り、演出インタフェイス基板22には、演出制御基板23のCPU回路51(演出制御CPU63)から受ける指示に基づいて音声信号を再生する音声プロセッサ(音声合成回路)27と、再生される音声信号の元データである圧縮音声データなどを記憶する音声メモリ28と、音声プロセッサ27から出力される音声信号を受けるデジタルアンプ29と、が搭載されている。
音声プロセッサ27は、内部回路の異常動作時に、内部回路の設定値を自動的にデフォルト値(初期値)にリセットするWDT回路と、音声制御レジスタSRGとを内蔵して構成されている。そして、音声プロセッサ27は、演出制御CPU63から音声制御レジスタSRGに受ける動作パラメータ(音声コマンドによる設定値)に基づいて、音声メモリ28をアクセスして、必要な音声信号を再生して出力している。
図7(a)に示す通り、音声プロセッサ27と、音声メモリ28とは、26bit長の音声アドレスバスと、16bit長の音声データバスで接続されている。そのため、音声メモリ28には、1Gbit(=226×16)のデータが記憶可能となる。
音声制御レジスタSRGは、レジスタバンク1~レジスタバンク6に区分され、各々、00H~FFHのレジスタ番号で特定される。したがって、所定の設定動作は、レジスタバンクを特定した上で、演出制御CPU63が、所定のレジスタ番号(1バイト長)の音声制御レジスタSRGに、1バイト長の動作パラメータを書込むことで実現される。
本実施例の場合、音声制御レジスタSRGのレジスタ番号(00H~FFH)は、演出制御CPU63のアドレス空間CS3に対応しており、例えば、レジスタ番号XXHの音声制御レジスタSRGに、動作パラメータYYHを設定する場合には、演出制御CPU63は、アドレス空間CS3のゼロ番地にXXHを書込み、次に、1番地にYYHを書込むことになる。すなわち、演出制御CPU63は、そのデータバスにXXHとYYHを、この順番に書き出すことになる。なお、本明細書において、添え字Hや、0X/0xの接頭記号は、数値が16進数表示であることを示している。
また、本明細書において、アドレス空間CS0~CS7とは、揮発性の有無を含むメモリ種別や、データバス幅(8/16/32ビット)を、各々、規定可能なCPU回路51にとって外部メモリを意味する(内蔵メモリを除く)。このアドレス空間CS0~CS7は、異なるチップセレクト信号CS0~CS7で選択され、READ/WRITE アクセス時に機能するREAD/WRITE 制御信号がメモリ種別に対応して最適化できるよう設定可能に構成されている。なお、この設定動作は、バスステートコントローラ66に対して実行される。
図7(e)は、演出制御CPU63による音声レジスタSRGへの設定動作を図示したものであり、2bit長のアドレスバスA1-A0と、1バイト長のデータバスD7-D0の内容が示されている。なお、本実施例では、チップセレクト信号CS3は、アドレス空間CS3をアクセスする場合に、自動的にアクティブになるよう、電源投入時に設定されるが、この点は図9や図16に関して後述する。
何れにしても、本実施例の場合、音声メモリ28に記憶された圧縮音声データは、13bit長のフレーズ番号NUM(000H~1FFFH)で特定されるフレーズ(phrase)圧縮データであり、一連の背景音楽の一曲分(BGM)や、ひと纏まりの演出音(予告音)などが、最高8192種類(=213)、各々、フレーズ番号NUMに対応して記憶されている。そして、このフレーズ番号NUMは、演出制御CPU63から音声プロセッサ27の音声制御レジスタSRGに伝送される音声コマンドの設定値(動作パラメータ)によって特定される。
前記の通り、上記の構成を有する音声メモリ28は、リセット信号RT3で電源リセットされ、音声プロセッサ27は、リセット信号RT4で電源リセットされる。図7(c)に示す通り、リセット信号RT4は、電源投入後、所定のアサート期間ASRT(Lレベル区間)を経て、Hレベルに立ち上がるが、本実施例では、その後、音声プロセッサ27の内部回路が自動的に機能して、初期化シーケンス処理が実行されるよう構成されている。なお、この初期化シーケンス処理は、所定の手順で実行される内部動作であり、初期化シーケンス処理の動作中は、演出制御CPU63が音声レジスタSRGをアクセスすることはできない。
そして、内部動作たる初期化シーケンス処理が完了すると、CPU回路51に対する割込み信号IRQ_SND がLレベルに変化し、CPU回路51(演出制御CPU63)は、割込み信号IRQ_SND に基づき割込み処理プログラムを実行する。そして、所定の命令に基づいて割込み信号IRQ_SND がHレベルに戻されるが、その詳細については、図18(c)を参照して更に後述する。
図7(a)に示す通り、演出制御部23のCPU回路51のデータバスとアドレスバスは、液晶インタフェイス基板24に搭載された時計回路(real time clock )38と演出データメモリ39にも及んでいる。時計回路38は、CPU回路51のアドレスバスの下位4bitと、データバスの下位4bitに接続されており、チップセレクト信号CS4で時計回路38が選択された状態では、CPU回路51が、(4bit長アドレス値を有する)内部レジスタを任意にアクセスできるよう構成されている。
また、演出データメモリ39は、高速アクセス可能なメモリ素子SRAM(Static Random Access Memory )であって、CPU回路51のアドレスバスの16bitと、データバスの下位16bitに接続されており、チップセレクト信号CS4でチップ選択された状態では、SRAM(演出データメモリ)39に記憶されている遊技実績情報その他が、CPU回路51から適宜にR/Wアクセスされるようになっている。なお、チップセレクト信号CS4で選択されるアドレス空間CS4において、0番地から15番地までは時計回路38に付番されているので、SRAM39では使用しない。
時計回路38と演出データメモリ39は、不図示の二次電池で駆動されており、この二次電池は、遊技動作中、電源基板20からの給電電圧によって適宜に充電される。そのため、電源遮断後も、時計回路38の計時動作が継続され、また、演出データメモリ39に記憶された遊技実績情報が、永続的に記憶保持されることになる(不揮発性を付与)。なお、時計回路(RTC)38は、CPU回路51に対して、割込み信号IRQ_RTC を出力可能に構成されている(RTC割込み)。このRTC割込みには、日、曜日、時、分、秒が特定可能なアラーム割込みと、所定時間経過後に起動されるタイマ割込みが存在するが、本実施例では、毎日の営業終了時に、日々の遊技実績情報を更新するアラーム割込みを活用している。
図7(a)の右側に示す通り、演出制御基板23には、CPU回路51やVDP回路52を内蔵する複合チップ50と、CPU回路51の制御プログラムを記憶する制御メモリ(PROM)53と、大量のデータを高速にアクセス可能なDRAM(Dynamic Random Access Memory)54と、演出制御に必要な大量のCGデータを記憶するCGROM55と、が搭載されている。
図10に関して後述するように、制御メモリ(PROM)53は、本実施例では、チップセレクト信号CS0で選択されるアドレス空間CS0に位置付けされている。また、DDR(Double-Data-Rate 3)で構成されるDRAM(Dynamic Random Access Memory)54は、チップセレクト信号CS5で選択されるアドレス空間CS5に位置付けされている。
図8(a)は、演出制御部23を構成する複合チップ50について、関連する回路素子も含めて図示した回路ブロック図である。図示の通り、実施例の複合チップ50には、所定時間毎にディスプレイリストDLを発行するCPU回路51と、発行されたディスプレイリストDLに基づいて画像データを生成して表示装置DS1,DS2を駆動するVDP回路52とが内蔵されている。そして、CPU回路51とVDP回路52とは、互いの送受信データを中継するCPUIF回路56を通して接続されている。
なお、VDP回路52には、音声プロセッサ27と同等の機能を発揮する音声回路SNDが内蔵されているが、これから説明する最初の実施例では、音声回路SNDを活用していない。但し、最後に説明する実施例のように、VDP回路52に内蔵された音声回路SNDを活用すれば、音声メモリ28や音声プロセッサ27の配置が不要となる。
先ず、CPU回路51は、発振器OSC1の発振出力(例えば100/3MHz)をHCLKI 端子に受けて、これを周波数逓倍(例えば8逓倍)して、266.7MHz程度のCPU動作クロックとしている(図14(b)参照)。ここで、発振器OSC1は、スペクトラムス拡散波を出力するよう構成されることで、電波障害/電磁妨害を防止するEMI(Electromagnetic Interference)対策を図っている。
ところで、本実施例の場合、CPU動作クロックを、発振器OSC1ではなく、後述する発振器OSC2の出力に基づいて生成することも可能であり、発振器OSC1を不要にすることもできる。しかし、発振器を単一化する構成では、PLL回路の周波数逓倍比が、以下に説明するシステムクロックの場合と同じ固定値(例えば5)となるので、CPU動作クロックの周波数は、VDP回路52のシステムクロックと同一の200MHz(=40MHz×5)となる。
このような構成を採ると、内蔵CPU回路51とVDP回路52の動作周期が共通化される利点がある一方で、CPUの動作を可能な限り高速化したい要請に反する。すなわち、VDPの動作は、ある程度以上には高速化できないので、CPU動作の高速化の要請に確実に応えることはできない。そこで、本実施例では、VDP回路52とCPU回路51の各動作周期を各々最適化するべく、2つの発振器を設けている。また、別個の発振器OSC1を設けることで、上記したEMI対策の向上を図ることもできる。
以上を踏まえてVDP回路52について説明すると、VDP回路52は、発振器OSC1とは別の発振器OSC2の発振出力(40MHz)をPLLREF端子に受け、PLL(Phase Locked Loop )回路で、周波数逓倍した上で、VDP回路52のシステムクロックとしている。PLL回路の周波数逓倍比は、所定の設定端子への設定値で固定的に規定され、この実施例では、設定端子(3bit のPLLMD 端子)への設定値が固定値5であることから、VDP回路52のシステムクロックは、200MHz(=40MHz×5)となる(図14(b)参照)。
また、本実施例では、表示回路74A~74Cの動作を規定するドットクロックDCKA~DCKC、及び、外付けDRAM54のDDRクロックについても、発振器OSC2の発振出力(40MHz)に基づいて生成している。すなわち、発振器OSC2の出力(40MHz)は、VDP回路52全体のリファレンスクロックとして機能している。
図14や図15に関して後述するように、表示回路74A~74Cは、通常、仕様の異なる表示装置を各々駆動しているので、各表示回路74A~74Cの動作を規定するドットクロックDCKA~DCKCは、駆動対象となる表示装置の仕様に対応させる必要がある。かかる必要に基づき、本実施例では、表示回路74A~74Cは、専用発振回路DCLKA~DCLKCの出力クロック(DCLKAI~DCLKCI)の何れかを受けて、それをドットクロックDCKA~DCKCとすることもできるよう構成されている。
この構成を活用した場合には、後述する逓倍比や分周比の設計や、VDPレジスタRGijへの設定処理が不要となり、ドットクロックDCKA~DCKCの周波数を簡単に最適化することができる。すなわち、メイン表示装置DS1のドットクロック周波数FDOT1に対応して発振周波数FDOT1の専用発振回路DCLKAを設け、また、サブ表示装置DS2のドットクロック周波数FDOT2に対応して発振周波数FDOT2の専用発振回路DCLKBを設けることも可能である。
しかし、このような構成を採る場合には、表示装置の個数に対応して、専用発振回路が必要となり、機器構成が複雑化する。そこで、本実施例では、機器構成を簡素化するため、発振器OSC2の発振出力(40MHz)に基づいて、表示回路74A/74BのドットクロックDCKA/DCKBを生成している。具体的には、図14(b)に示す通り、メイン表示装置DS1を駆動する表示回路74Aについて、発振器OSC2の発振出力(40MHz)に、所定の逓倍処理(×108)と分周処理(1/40)を施すことで、周波数108MHzのドットクロックDCKAを生成している。
同様に、サブ表示装置DS2を駆動する表示回路74Bについても、発振器OSC2の発振出力(40MHz)に、所定の逓倍処理(×108)と分周処理(1/160)を施すことで、周波数Fdot=27MHzのドットクロックDCKBを生成している。これら逓倍比や分周比を設計することは、それなりに煩雑であり、専用の発振回路を設ける方が容易であるが、本実施例では、機器構成の簡素化を重視して、専用発振回路を設けていない。
何れにしても、ドットクロックDCKA~DCKCは、表示回路74A~74C毎に個々的に設定されるが、これらドットクロックDCKA~DCKCを総称する場合、本明細書では、「表示クロックDCK」と称する場合がある。また、以下の説明では、ドットクロックDCKAやDCKBを、便宜上、「ドットクロックDCK」と略称することがある。
なお、本実施例では、低速LVDS出力の構成を採らないので、表示回路74Aを経由して出力されるLVDS信号のLVDSクロックCLKについても、ドットクロックDCKAと同一の生成過程を経て、周波数108MHzとしている。但し、本実施例では、デュアルリンク伝送路を採るので、実際のLVDSクロックCLKの周波数は、図4に関して説明した通り54MHzとなる。なお、シングルリンク伝送路を採用する場合、LVDSクロックCLKの周波数は、108MHzである。
上記のように、本実施例では、発振器OSC2の発振出力(40MHz)が、システムクロック、ドットクロックDCK、及び、DDRクロックのリファレンスクロックとして活用される。そこで、この重要性を考慮して、発振器OSC2をVDP回路52と同じ電源電圧3.3Vで動作させると共に、出力イネーブル端子OEがHレベル(=3.3V)であることを条件に、リファレンスクロックを発振出力するよう構成されている。そして、万一、電源電圧3.3Vが所定レベル以下に低下した場合には、その後、正常な演出動作は望めないので、マスク不能の割込み(NMI)が生じるよう構成されている。
また、複合チップ50には、HBTSL 端子が設けられ、HBTSL 端子の論理レベルに基づいて、電源投入(CPUリセット)後に実行されるブートプログラム(初期設定プログラム)が、CGROM55に記憶されているか(HBTSL =H)、それ以外のメモリに記憶されているか(HBTSL =L)を特定している。図示の通り、この実施例では、HBTSL =Lレベルに設定されており、演出制御CPU63のアドレス空間CS0のゼロ番地が、CGROM以外に割り当てられ、具体的には、アドレス空間CS0は、制御メモリ53に割り当てられている。
一方、HBTSL 端子=Hレベルに設定されている場合(破線参照)は、演出制御CPU63のアドレス空間CS0のゼロ番地が、CGROM55に割り当てられる。この場合は、CGROM55のメモリ種別と、バス幅(64/32/16bit)とが、2bit長のHBTBWD端子と、4bit長のHBTRMSL 端子への入力値に基づいて各々特定されようになっている。なお、これらの点は、図39に基づいて更に後述する。
続いて、CPU回路51とVDP回路52について、互いの送受信データを中継するCPUIF回路56について説明する。図8(a)に示す通り、CPUIF回路56には、制御プログラムや必要な制御データを不揮発的に記憶する制御メモリ(PROM)53と、2Mバイト程度の記憶容量を有するワークメモリ(RAM)57とが接続され、各々、CPU回路51からアクセス可能に構成されている。先に説明した通り、制御メモリ(PROM)53は、チップセレクト信号CS0で選択されるアドレス空間CS0に位置付けられ、ワークメモリ(RAM)57は、チップセレクト信号CS6で選択されるアドレス空間CS6に位置付けられている。
このワークメモリ(RAM)57には、表示装置DS1,DS2の各一フレームを特定する一連の指示コマンドが記載されたディスプレイリストDLを、一次的に記憶するDLバッファBUFが確保されている。本実施例の場合、一連の指示コマンドには、CGROM55から画像素材(テクスチャ)を読み出してデコード(展開)するためのTXLOADコマンドなどのテクスチャロード系コマンドと、デコード(展開)先のVRAM領域(インデックス空間)を予め特定するなどの機能を有するSETINDEXコマンドなどのテクスチャ設定系コマンドと、デコード(展開)後の画像素材を仮想描画空間の所定位置に配置するためのSPRITEコマンドなどのプリミティブ描画系コマンドと、描画系コマンドによって仮想描画空間に描画された画像のうち、実際に表示装置に描画する描画領域を特定するためのSETDAVR コマンドやSETDAVF コマンドなどの環境設定コマンドと、インデックス空間を管理するインデックステーブルIDXTBLに関するインデックステーブル制御系コマンド(WRIDXTBL)が含まれる。
なお、図12(c)には、仮想描画空間(水平X方向±8192:垂直Y方向±8192)と、仮想描画空間の中で任意に設定可能な描画領域と、表示装置DS1,DS2に出力する画像データを一次保存するフレームバッファFBa,FBbにおける実描画領域と、の関係が図示されている。
次に、CPU回路51は、汎用のワンチップマイコンと同等の性能を有する回路であり、制御メモリ53の制御プログラムに基づき画像演出を統括的に制御する演出制御CPU63と、プログラムが暴走状態になるとCPUを強制リセットするウォッチドッグタイマ(WDT)と、16kバイト程度の記憶容量を有してCPUの作業領域として使用される内蔵RAM59と、CPU63を経由しないでデータ転送を実現するDMAC(Direct Memory Access Controller )60と、複数の入力ポートSi及び出力ポートSoを有するシリアル入出力ポート(SIO)61と、複数の入力ポートPi及び出力ポートPoを有するパラレル入出力ポート(PIO)62と、前記各部の動作を制御するべく設定値が設定される動作制御レジスタREGなどを有して構成されている。但し、外付けのWDT回路58を設けた本実施例では、CPU回路51に内蔵されたウォッチドッグタイマ(WDT)を活用していない。
なお、本明細書では、便宜上、入出力ポートとの表現を使用するが、演出制御部23において、入出力ポートには、独立して動作する入力ポートと出力ポートとが含まれている。この点は、以下に説明する入出力回路64pや入出力回路64sについても同様である。
パラレル入出力ポート62は、入出力回路64pを通して外部機器(演出インタフェイス基板22)に接続されており、演出制御CPU63は、入力回路64pを経由して、音量スイッチVLSWのエンコーダ出力3bitと、チャンスボタン11のスイッチ信号と、制御コマンドCMDと、割込み信号STBと、を受信するようになっている。エンコーダ出力3bitと、スイッチ信号1bitは、入出力回路64pを経由して、パラレル入出力ポート(PIO)62に供給されている。
同様に、受信した制御コマンドCMDは、入出力回路64pを経由して、パラレル入出力ポート(PIO)62に供給されている。また、ストローブ信号STBは、入出力回路64pを経由して、演出制御CPU63の割込み端子に供給されることで、受信割込み処理を起動させている。したがって、受信割込み処理に基づいて、制御コマンドCMDを把握した演出制御CPU63は、演出抽選などを経て、この制御コマンドCMDに対応する音声演出、ランプ演出、モータ演出、及び画像演出を統一的に制御することになる。
特に限定されないが、本実施例では、ランプ演出とモータ演出のために、VDP回路52のSMC回路(Serial Management Controller)78を使用している。SMC回路78は、LEDコントローラとMotorコントローラと、を内蔵した複合コントコントローラであり、クロック同期方式でシリアル信号を出力できるよう構成されている。また、Motorコントローラは、所定の制御レジスタ70への設定値に基づき、任意のタイミングでラッチパルスを出力可能に構成され、また、クロック同期方式でシリアル信号を入力可能に構成されている。
そこで、本実施例では、クロック信号に同期してモータ駆動信号やLED駆動信号を、SMC回路78から出力させる一方、適宜なタイミングで、ラッチパルスを、動作制御信号ENABLEとして出力するようにしている。また、演出モータ群M1~Mnからの原点センサ信号SN0~SNnをクロック同期方式でシリアル入力するよう構成されている。
図7(a)に関して説明した通り、クロック信号CK0~CK2、駆動信号SDATA0~SDATA2、及び、動作制御信号ENABLE0~ENABLE2は、出力バッファ41~43を経由して、所定の駆動基板30,31,37に伝送される。また、原点センサ信号SN0~SNnは、モータランプ駆動基板31から入出力バッファ43を経由して、SMC回路78にシリアル入力される。
但し、本実施例において、SMC回路78を使用することは必須ではない。すなわち、CPU回路51には、汎用のシリアル入出力ポートSIO61が内蔵されているので、これらを使用して、ランプ演出とモータ演出を実行することもできる。
具体的には、図8(a)の破線に示す通りであり、破線で示す構成では、シリアル入出力ポートSIO61に内部接続されている入出力回路64sを経由して、クロック信号CK0~CK2、駆動信号SDATA0~SDATA2が出力され、入出力回路64pを経由して動作制御信号ENABLE0~ENABLE2が出力される。なお、便宜上、入出力ポートや入出力回路と表現するが、実際に機能するのは、出力ポートや出力回路である。
ここで、シリアル出力ポートSOは、16段のFIFOレジスタを内蔵して構成されている(図50(a)参照)。そして、DMAC回路60は、演出制御CPU63から動作開始指示(図22(b)ST18参照)を受けて起動し、ランプ/モータ駆動テーブル(図22(b)参照)から、必要な駆動テータを順番に読み出し、シリアル出力ポートSOのFIFOレジスタにDMA転送するよう構成されている。FIFOレジスタに蓄積された駆動データは、クロック同期方式でシリアル出力ポートSOからシリアル出力される。なお、DMAC回路には、複数(例えば7)のDMAチャネルが存在するが、優先度に劣る第3のDMAチャネルでランプ駆動データをDMA転送し、最優先度の第1のDMAチャネルでモータ駆動データをDMA転送するよう構成されている。
CPU回路51に内蔵された動作制御レジスタREGは、レジス番号(アドレス値)が0xFF400000以降に付番された8bit、16bit、又は32bit長のレジスタであり、演出制御CPU63から適宜にWRITE/READアクセス可能に構成されている(図10参照)。そのためノイズなどの影響で、動作制御レジスタREGに、不合理な値に設定される可能性がある。
但し、例えば、意図的に無限ループ処理を実行させて外付けのWDT回路58を起動させることで、複合チップ50を異常リセットすることができる。この場合、動作制御レジスタREGの値が、電源投入後と同じデフォルト値(初期値)に戻され、且つ、VDP回路52についても、VDPレジスタRGijの値が、デフォルト値(初期値)に戻されることで異常状態が解消される。
図7(b)は、このリセット動作に関連する回路構成であって、本実施例に特徴的なリセット機構を説明する図面である。なお、本明細書において、RGijと表記するVDPレジスタは、CPU回路51に内蔵された動作制御レジスタREGではなく、VDP回路52の内部動作を制御する制御レジスタ群70(図10参照)の何れかを意味する。また、図7(b)に示すシステム制御回路520とは、VDPレジスタRGij(図10の制御レジスタ群70の何れか)への設定値に基づいて機能するVDP回路52の内部制御回路を意味する(図7(a)参照)。なお、VDPレジスタRGijは、演出制御CPU63のアドレスマップにおいて、チップセレクト信号CS7で選択されるアドレス空間CS7に位置付けられる。
以上を踏まえてリセット機構について説明すると、図7(b)に示す通り、複合チップ50は、論理反転されたシステムリセット信号SYSバーを受ける3個のORゲートG2~G4を経由して、内部回路がリセット可能に構成されている。但し、本実施例では、破線で示すように、内蔵WDTを有効化しないので、ORゲートG2の入端子と出力端子は、直結状態となる。
何れにしても、CPU回路51とVDP回路52の間に、パターンチェック回路CHKが設けられ、パターンチェック回路CHKは、パラレル入出力ポート(PIO)62から、所定のキーワード列(リセット用の暗号列)を受けることを条件に、リセット信号RSTを出力するよう構成されている。
そして、複合チップ50の内部回路は、(1)CPU回路51と、(2)VDP回路52の表示回路74と、(3)VDP回路52における表示回路以外とに三分されて、各々、ORゲートG2~G4から第1リセット経路~第3リセット経路のリセット信号を受けるよう構成されている。
先ず、入出力端子が直結状態のORゲートG2は、第1リセット経路に関連しており、システムリセット信号SYSバーに基づき、CPU回路51の全体をシステムリセットされるように構成されている。また、ORゲートG3は、第2リセット経路に関連しており、システムリセット信号SYSバーと、パターンチェック回路CHKからのリセット信号RSTとを受けて、OR論理に基づき、VDP回路52全体をリセット可能に構成されている。
この第2リセット経路は、電源投入時の電源リセット動作だけでなく、所定の異常を検出した演出制御CPU63が、VDP回路52の全体を異常リセットして初期状態に戻す用途で使用される。具体的には、VDP回路52の内部動作を示す所定のステイタスレジスタRGijに基づき、重大な異常が発生していると判断される場合には、パターンチェック回路CHKからリセット信号RSTを発生させることで、VDP回路52の全体を異常リセットしている。なお、表示回路74は、ORゲートG4を経由して、第2リセット経路→第3リセット経路で異常リセットされる。
一方、VDP回路52に内蔵された内部回路は、第4リセット経路で、必要時に個々的にリセットすることも可能に構成されている。個々的にリセット可能な内部回路には、図8(a)に示すインデックステーブルIDXTBL、データ転送回路72、プリローダ73、表示回路74、描画回路76、SMC回路78、及び、音声回路SNDや、図13に示すICM回路が含まれている。
個別的なリセット動作を実現する手法は、図7(b)の下部に記載の通りであり、例えば、表示回路74は、所定のVDPレジスタRGij(システムコマンドレジスタ)に、第1リセット値を書き込むことで、第4リセット経路4A→第3リセット経路を経てリセットされる。
また、VDP回路52の各内部回路(72,73,74,76,SND,・・・)は、(1)第1のVDPレジスタRGij(リセットRQレジスタ)に、対象回路を特定する設定値を書き込んだ後、(2)所定のVDPレジスタRGij(システムコマンドレジスタ)に、第2リセット値を書き込むことで、個々的にリセットされる(第4リセット経路4B)。なお、この実施例では使用しないが、音声回路SNDは、第4リセット経路4Bによるリセットだけでなく、所定のVDPレジスタ(回路設定コマンドレジスタ)に、リセット値を書き込むことでもリセット可能である(第4リセット経路4C)。
本実施例は、上記の構成を有するので、電源投入時やプログラム暴走時に、VDP回路52全体が自動的に初期状態に戻るだけでなく、必要に応じて、各部を初期状態に戻して異常事態の回復を図ることができる。例えば、一定期間、内蔵VRAM71に対してREAD/WRITE アクセスがない描画回路76のフリーズ時には、第4リセット経路4Bを経由して描画回路76が個別的に初期化される(図22(d)のST16a参照)。プリローダ73やデータ転送回路72についても、ほぼ同様であり、所定の異常時には、第4リセット経路4Bを経由してプリローダ73が初期化され(図29のST27参照)、第4リセット経路4Bを経由してデータ転送回路72が初期化される(図24や図29のST27参照)。
また、表示回路74については、1/60秒毎の表示タイミングに、表示データの生成が間に合わないアンダーラン(Underrun)異常が続くような場合に、第4リセット経路4A又は第4リセット経路4Bを経由して、表示回路74が個別的に初期化される(図22のST10c参照)。なお、これら個別的なリセット動作については、図22以降に記載したプログラム処理に関して更に後述する。
以上、本実施例に特徴的なリセット機構について説明したが、何れかのリセット経路1~4が機能して、複合チップ50の内部回路がリセットされると、その内部回路に対応するVDPレジスタRGijの設定値は、電源投入後と同じデフォルト値に戻る。
続いて、CPU回路51の内部構成に戻って、特徴的な回路構成の説明を続ける。図9は、CPU回路51の内部構成をやや詳細に示すブロック図である。CPU回路51は、先に説明した内蔵RAM59、DMAC回路60、SIO61、PIO62、WDT以外にも、多くの特徴的な回路を含んで構成されている。
先ず第1に、CPU回路51は、命令用のCPUフェッチバスと、データ用のCPUメモリアクセスバスとを別々に有してハーバード・アーキテクチャを実現している。そのため、CPUコア(演出制御CPU)63が命令をメモリから読むフェッチ動作と、メモリアクセス動作とが競合せず、フェッチ動作を連続させることで高速処理を実現している。
また、CPUコア63は、複数個(例えば15個)のレジスタバンクRB0~RB14を有して構成されており、その使用の有無を選択できるよう構成されている。そして、レジスタバンクRBiの使用を許可した動作状態では、割込み処理の開始時に、CPUの内蔵レジスタ(例えば19個)のレジスタ値(各32bit長)が、空き状態のレジスタバンクRBiに自動的に退避される。
また、割込み処理の終了時に所定の復帰命令を実行すると、例えば19個の退避データが、対応する内蔵レジスタに自動的に復帰される。したがって、通常の構成のように、割込み処理の開始時にPUSH命令を19回実行し、割込み処理の終了時にPOP命令を19回実行する手間が不要となり、高速処理が実現される。
また、実施例のCPU回路51は、命令キャッシュメモリ67と、オペランドキャッシュメモリ89と、キャッシュコントローラ69とを設けることで、ハーバードキャッシュ動作を実現しており、同一アドレスをアクセスする場合に、キャッシュ済みのデータを活用することでプログラム処理の更なる高速化を図っている。なお、バスブリッジ65と、周辺バス(1) 用のコントローラ、周辺バス(2) 用のコントローラ、及び、周辺バス(3) 用のコントローラとが設けられることで、内部バスと、周辺バス(1) 、周辺バス(2) 、及び周辺バス(3) とを適宜に接続している。
次に、図9の回路構成において、バスステートコントローラ66は、動作制御レジスタREGへの適宜な設定値に基づいて動作して、CPU回路51に接続された各種メモリデバイスとのメモリREAD動作やメモリWRITE 動作を最適化する部分である。メモリREAD動作やメモリWRITE 動作は、例えば、図40に例示した動作タイミングで実行されるが、アドレスバス(28Bit )から出力されるアドレスデータと、READデータバス(32Bit )に読み出されるREADデータと、WRITE データバス(32Bit )に書き出されるWRITE データと、チップセレクト信号CS0~CS7などの制御信号との動作タイミングが、動作制御レジスタREGへの設定値に基づいて、各メモリデバイスの特性に対応して適宜に規定される。
READデータバスとWRITE データバスが別々に設けられているので、上記したハーバード・アーキテクチャによる高速動作が実現される。なお、本明細書では、アドレスバス(28Bit )、READデータバス(32Bit )、及び、WRITE データバス(32Bit )について、図9に示す内部バスや、周辺バス(1) ~周辺バス(3) などと区別する意味で、外部バスと総称することがある。
図10は、チップセレクト信号CS0~CS7によって選択されるアドレス空間CS0~CS7を図示したものであり、バスステートコントローラ66を経由してアクセスされる演出制御CPU63にとってのアドレスマップを図示したものである。先ず、各アドレス空間CS0~CS7は、何れも、最大64Mバイトに(=0x4000000H=67108864)に規定されている。
先に説明した通り、アドレス空間CS0~CS7とは、揮発性の有無を含むメモリ種別や、データバス幅(8/16/32ビット)を、各々、規定可能なCPU回路51にとって外部メモリを意味する。そして、本実施例では、図9(b)や図10に示す通り、制御メモリ(PROM)53がアドレス空間CS0、音声プロセッサ27の音声制御レジスタSRGがアドレス空間CS3、時計回路38の内部レジスタやSRAM39がアドレス空間CS4、外付けDRAM(DDR)54がアドレス空間CS5、ワークメモリ57がアドレス空間CS6、VDPレジスタRGijがアドレス空間CS7に位置付けられている。なお、アドレス空間CS1,CS2についての説明は省略する。
ところで、図10から確認される通り、アドレス空間CS0~CS7は、アドレス値0x00000000~0x1FFFFFFF(キャッシュ有効空間)だけでなく、アドレス値0x20000000~0x3FFFFFFF(キャッシュ無効空間)にも確保されている。これは、アドレスビットA29=1のときには、CPU回路51の内部動作に基づいて、キャッシュ無効とする一方、アドレスビットA29=0のときにキャッシュ有効とすることで、キャッシュ機能の活用を任意選択できるようにしたものである。
そのため、本実施例では、全32bitのアドレス情報(ビットA31~A0)のうち、ビットA29の値が1又は0の何れであっても、残り31bit(ビットA31~A30とビットA28~A0)の値が同じであれば、同一のメモリの同一番地を指示することになる。例えば、0x18000000番地をREADアクセスしても、0x38000000番地をREADアクセスしても,ワークメモリ57のゼロ番地から同一データが読み出されることになる。なお、0x18000000番地をREADアクセスした場合には、読み出したデータがキャッシュに保存されるが、図9(b)は、キャッシュ有効/無効のアクセス動作を図示している。
もっとも、所定の動作制御レジスタREGへの設定値に基づいて、命令キャッシュ及び/又はオペランドキャッシュについて、キャッシュ動作を無効化することもできる。但し、本実施例では、電源投入後、命令キャッシュ及びオペランドキャッシュについて、キャッシュ動作を有効化した上で、必要に応じて、キャッシュ無効空間をアクセスすることで、キャッシュ動作を無効化している。
図10のメモリマップについて説明を続けると、0x40000000番地以降は、バスステートコントローラ66が機能しない内部メモリ空間であって、0xF0000000番地~0xFF3FFFFF番地は、キャッシュのアドレスアレイ空間に割り当てられている。また、0xFF400000番地~0xFFF7FFFF番地と、0xFFFC0000番地~0xFFFFFFFF番地は、内蔵周辺モジュールに割り当てられ、具体的には、CPU回路の動作制御レジスタREGに割り当てられている。なお、内蔵RAM59のアドレス範囲は、0xFFF80000~0xFFFBFFFFである。
CPU回路51の内部構成について説明を続けると、コンペアマッチタイマCMTと、マルチファンクションタイマユニットMTUは、CPU回路51に供給される外部信号をカウントしたり、或いは、内部クロックを逓倍又は分周した計数クロックをカウントして、カウント結果が所定値に達すると、割込み信号などを発生する回路である。特に限定されないが、本実施例では、マルチファンクションタイマユニットMTUを活用して、1mS割込み信号と、20μS割込み信号を発生させている。また、マルチファンクションタイマユニットMTUを活用して、CPUリセット後の経過時間を計測する計時タイマTMを実現している。
次に、割込みコントローラINTCは、VDP回路52やDMAC回路60やマルチファンクションタイマユニットMTUなどからの内部割込みと、IRQ_CMD 、IRQ_SND 、IRQ_RCT などの外部割込みを受けて、予め規定されている優先順位に基づいて、割込み処理(割込みハンドラ)を起動させる回路である。ここで、IRQ_CMD は、制御コマンドCMDを受信すべきコマンド受信割込み信号、IRQ_SND は、音声プロセッサ27が初期化シーケンスを終えたことを示す終了割込み信号、IRQ_RCT は、アラーム割込み信号である。
そして、本実施例では、割込み優先度は、コマンド受信割込みIRQ_CMD が最高レベルであり、以下、20μS割込み→1mS割込み→VDP回路からの割込み(IRQ0,IRQ1,IRQ2,IRQ3)→DMAC割込み→IRQ_SND →IRQ_RCT の順になっている(図18(d)参照)。なお、これらは何れも、マスク可能な割込みであり、マスク不能な割込みNMIは、先に説明した通り、発振器OSC2からリファレンスクロックが出力されていない場合に演出制御CPU63に出力される。
そして、何れの割込み処理でも、CPUの複数の内蔵レジスタのレジスタ値(各32bit長)は、空き状態の何れかのレジスタバンクRBiに、自動的に退避される。そして、割込み処理の最後に所定の復帰命令を実行すると、退避データが、対応する内蔵レジスタに自動的に復帰される。
続いて、DMAC回路60について説明する。実施例のDMAC回路60は、所定の動作制御レジスタREGへの設定値に基づいて、転送元(Source)から転送先(Destination )に対して、所定のDMA転送モードで、所定のデータ転送単位毎に、所定回数、データ転送を繰り返す回路である。なお、同一の内部構成を有する複数チャネルのDMAC0~DMACnが用意されており、並列的に動作可能となっている。但し、優先度が決まっており(チャネル0>・・・>チャネルn)、チャネル調停動作モードの並列動作時には、所定タイミングでのチャネル調停によって優先度の高いDMACiの動作が優先される。
DMAC回路60の活用としては、例えば、シリアル出力ポートSOが機能する実施例(図10(a)破線部参照)では、CPU回路51の動作制御レジスタREGには、ランプ/モータ駆動テーブルの先頭アドレス(転送元アドレスの先頭値)と、シリアル出力ポートSOの入力レジスタのアドレス(転送先アドレスの固定値)と、データ転送単位(8bit)と、転送回数と、が指定される。そして、所定の動作制御レジスタREGに動作開始指示を受けたDMAC回路60は、転送元アドレスを更新しつつ、所定の転送先アドレスに駆動データをDMA転送する。そして、全てのDMA転送が終われば、DMAC割込み(動作終了割込み)が生じるよう構成されている。
この点は、ディスプレイリストDLをDMAC回路60が発行する実施例(図25、図29(c))の場合もほぼ同様である。すなわち、演出制御CPU63は、CPU回路51の所定の動作制御レジスタREGに、転送元(DLバッファBUF)の先頭アドレスと、転送先(転送ポートTR_PORT )のアドレスと、DMA転送モードと、データ転送単位と、転送回数、その他の条件を設定することになる。なお、これらの点は、図25に関して更に後述する。
ところで、一般に、DMA転送モードには、DMA転送の単位動作(R動作/W動作)の途中でバス制御権を開放するなど、DMA動作がメモリバスを占有しないサイクルスチール転送モードと、複数のR動作やW動作を連続させるなど、指定された転送回数が完了するまでバス制御権を解放しないバースト転送(パイプライン転送)モードと、他のデバイスから受けるDMA転送要求(デマンド)がアクティブの間はDMA動作を継続するデマンド転送モードなどが考えられる。しかし、本実施例のDMAC回路60は、DMA転送時のリードアクセス起動(R動作)とライトアクセス起動(W動作)の間に、少なくとも1サイクルのメモリ開放期間を設けたサイクルスチール転送モードで機能することで、演出制御CPU63の動作に支障が出ないようにしている。
図11は、サイクルスチール転送動作(a1)と、パイプライン転送(a2)とを説明する図面である。図11(a1)に示す通り、サイクルスチール転送モードで機能するDMAC回路60は、1データ転送のリードアクセス起動(R)とライトアクセス起動(W)の間に、少なくとも1サイクル空けて動作しており、この空いたサイクルでは、演出制御CPU63のバス使用が可能となる。図11(a1)と図11(a2)の対比関係から明らかなように、パイプライン転送では、一サイクル(一オペランド転送)が終わるまでは、バスがCPUに開放されないのに対して、サイクルスチール転送モードでは、リードアクセス毎に、バスがCPUに開放されるので、CPUの動作が大きく遅れることがない。
そして、例えば、ディスプレイリストDLのVDP回路52への発行時に、DMAC回路60を使用する実施態様では、一サイクルのデータ転送単位(1オペランド)を、32×2bitに設定し、ディスプレイリストDLが格納されている内蔵RAM59のソースアドレスを適宜に増加しつつ(1オペランド転送毎に+8)、固定アドレスで特定されるデータ転送回路72の転送ポートレジスタTR_PORT (図13参照)に対して、DMA転送動作を実行している。
後述するように、実施例では、ディスプレイリストDLに、必要個数のNOP (no operation)コマンドを付加することで、全体のデータサイズを、固定値(例えば、4×64=256バイト、又はその整数倍)に調整しており、32bit×2回の一オペランド転送を32回(又はその整数倍)繰り返すことで、ディスプレイリストDLの発行を完了させている。なお、描画回路76がNOP コマンドを実行しても、no operation状態であって、事実上、何の変化も生じない。
また、DMA転送条件に関して動作モードを分類すると、一般に、単一オペランド転送(図11(b1)参照)と、連続オペランド転送(図11(b2)参照)と、ノンストップ転送(図11(b3)参照)とが考えられる。
ここで、単一オペランド転送とは、図11(b1)に示すように、DMA転送要求が与えられるたびに、1オペランドの転送を繰り返し、転送バイト数をカウントするバイトカウントがゼロになった時点で、DMA割込み要求が生じる動作モードを意味する。次に、連続オペランド転送とは、図11(b2)に示すように、1回のDMA要求で、バイトカウントがゼロになるまでDMA転送を繰り返す動作モードを意味する。
これら、連続オペランド転送(b2)や単一オペランド転送(b1)では、1オペランド転送が終了するごとにチャネル調停が行われ、優先順位の高いチャネルのDMA要求がないことを条件に、現在のチャネルの転送が継続される(チャネル調停動作モード)。そこで、本実施例では、ディスプレイリストDLのVDP回路への発行や、ランプ駆動データやモータ駆動データのDMA転送は、単一オペランド転送方式を採っている。そして、並列動作時には、例えば、モータデータ>ディスプレイリストDL>ランプデータの優先度のチャネル調停となるよう、最適チャネルのDMACiを使用している。
一方、ノンストップ転送とは、チャネル調停が実行されない動作モードであって、図11(b3)に記載の通り、1回のDMA要求で、バイトカウントがゼロになるまで連続的にDMA転送が繰り返される。本実施例では、電源投入時のメモリセクション初期化処理(図16のSP8)では、ノンストップ転送でプログラムやデータをDMA転送している。
以上、CPU回路51について説明したので、次に、VDP回路52について説明すると、VDP回路52には、画像演出を構成する静止画や動画の構成要素となる圧縮データを記憶するCGROM55と、4Gbit程度の記憶容量を有する外付けDRAM(Dynamic Random Access Memory)54と、メイン表示装置DS1と、サブ表示装置DS2とが接続されている。なお、DRAM54は、好適にはDDR3(Double-Data-Rate3 SDRAM )で構成される。
ここで、DRAM54が、発振器OSC2の発振出力(40MHz)に基づいて生成されたDDRクロックを受けることは、図14(b)に示す通りである。また、実施例のDRAM54は、リフレッシュカウンタ(Refresh Counter )を内蔵しており、初期設定時(図16のSP4)に、自己リフレッシュ機能(Self-Refresh Operation)が有効化されるので、演出制御CPU63によるリフレッシュ制御動作は不要である。
特に限定するものではないが、この実施例では、CGROM55は、62Gbit程度の記憶容量のNAND型フラッシュメモリで構成されたフラッシュSSD(solid state drive )で構成されており、シリアル伝送によって必要な圧縮データを取得するよう構成されている。そのため、パラレル伝送において不可避的に生じるスキュー(ビットデータ毎の伝送速度の差)の問題が解消され、極限的な高速伝送動作が可能となる。特に限定されないが、本実施例では、SerialATAに準拠したHSS(High Speed Serial )方式で、CGROM55を高速アクセスしている。
なお、SerialATAに準拠したHSS方式を採るか否かに拘らず、NAND型のフラッシュメモリは、ハードディスクより機械的に安定であり、且つ高速アクセスが可能である一方で、シーケンシャルアクセスメモリであるため、DRAMやSRAM(Static Random Access Memory )に比較すると、ランダムアクセス性に問題がある。そこで、本実施例では、一群の圧縮データ(CGデータ)を、描画動作に先行してDRAM54に読み出しておくプリロード動作を実行することで、描画動作時におけるCGデータの円滑なランダムアクセスを実現している。ちなみに、アクセス速度は、内蔵VRAM>外付けDRAM>CGROMの順番に遅くなる。
VDP回路52は、詳細には、VDP(Video Display Processor )の動作を規定する各種の動作パラメータが演出制御CPU63によって設定可能な制御レジスタ群70と、表示装置DS1,DS2に表示すべき画像データの生成時に使用される48Mバイト程度の内蔵VRAM(video RAM )71と、チップ内部の各部間のデータ送受信及びチップ外部とのデータ送受信を実行するデータ転送回路72と、内蔵VRAM71に関して、SourceやDestination のアドレス情報を特定可能なインデックステーブルIDXTBLと、描画動作に先行してCGROM55をREADアクセスするプリロード動作が実行可能なプリローダ73と、CGROM55から読み出した圧縮データをデコード(復号伸長/展開)するグラフィックスデコーダ(GDEC)75と、デコード(展開)後の静止画データや動画データを適宜に組み合わせて表示装置DS1,DS2の各一フレーム分の画像データを生成する描画回路76と、描画回路76の動作の一部として、適宜な座標変換によって立体画像を生成するジオメトリエンジン77と、描画回路76が生成したフレームバッファFBa,FBbの画像データを読み出して、適宜な画像処理を並列的に実行可能な3系統(A/B/C)の表示回路74A~74Cと、3系統(A/B/C)の表示回路74の出力を適宜に選択出力する出力選択部79と、出力選択部79が出力する画像データをLVDS信号に変換するLVDS部80と、シリアルデータ送受信可能なSMC回路78と、CPUIF回路56とのデータ送受信を中継するCPUIF部81と、CGROM55からのデータ受信を中継するCGバスIF部82と、外付けDRAM54とのデータ送受信を中継するDRAMIF部83と、内蔵VRAM71とのデータ送受信を中継するVRAMIF部84と、を有して構成されている(図8(a)参照)。なお、音声回路SNDも内蔵されている。
図8(b)には、CPUIF部81、CGバスIF部82、DRAMIF部83、及び、VRAMIF部84と、制御レジスタ群70、CGROM55、DRAM54、及び内蔵VRAM71との関係が図示されている。図示の通り、CGROM55から取得したCGデータは、例えば、プリロードデータとして、データ転送回路72及びDRAMIF部83を経由して、外付けDRAM54のプリロード領域に転送される。
但し、上記したプリロード動作は、何ら必須動作ではなく、また、データ転送先も、外付けDRAM54に限定されず、内蔵VRAM71であっても良い。したがって、例えば、プリロード動作を実行しない実施例では、CGデータは、データ転送回路72及びVRAMIF部84を経由して、内蔵VRAM71に転送される(図8(b))。
ところで、本実施例では、内蔵VRAM71には、CGROM55から読み出した圧縮データの展開領域、表示装置のW×H個の表示ピクセルの各ARGB情報(32bit=8×4)を特定する画像データを格納するフレームバッファ領域、及び、各表示ピクセルの深度情報を記憶するZバッファ領域などが必要となる。なお、ARGB情報において、Aは、8bitのαプレーンデータ、RGBは三原色の8bitデータを意味する。
ここで、内蔵VRAM71の上記した各領域は、演出制御CPU63がディスプレイリストDLに記載した各種の指示コマンド(前記したテクスチャやSPRITEなど)に基づいて間接的にアクセスされるが、そのREAD/WRITEアクセスにおいて、一々、内蔵VRAM71のDestination アドレスや、Sourceアドレスを特定するのでは煩雑である。そこで、本実施例では、CPUリセット後の初期処理において、描画動作で必要となる一次元または二次元の論理アドレス空間(以下、インデックス空間という)を確保して、各インデックス空間にインデックス番号を付与することで、インデックス番号に基づくアクセスを可能にしている。
具体的には、CPUリセット後、内蔵VRAM71を3種類のメモリ領域に大別すると共に、各メモリ領域に、必要数のインデックス空間を確保している。そして、インデックス空間とインデックス番号とを紐付けて記憶するインデックステーブルIDXTBL(図12(a)参照)を構築することで、その後のインデックス番号に基づく動作を実現している。
このインデックス空間は、(1) 初期処理後に追加することや、逆に、(2) 開放することも必要となる。そこで、これら追加/開放の演出制御CPU63の動作時に、追加/開放の処理が可能なタイミングか否か、また、追加/開放などの処理が実際に完了したか否か、などを判定可能なフラグ領域FGをインデックステーブルIDXTBLに設けている。なお、内蔵VRAM71は、以下に説明する2つのAAC領域(a1,a2) と、ページ領域(b) と、任意領域(c) の三種類のメモリ領域に大別され、この三種類のメモリ領域(a1,a2)(b)(c) に対応して、インデックステーブルIDXTBLが3区分されている(図12(a))。図示の通り、この実施例では、AAC領域(a) として、第一AAC領域(a1)と第二AAC領域(a2)が確保されているが、特に限定されるものではなく、何れか一方だけでも良い。なお、以下の説明では、第一と第二のAAC領域(a1,a2) を総称する場合には、AAC領域(a) と称する場合がある。
本実施例の場合、内蔵VRAM71は、(a) インデックス空間とそのインデックス番号が内部処理によって自動付与され、且つメモリキャッシュ機能を有するAAC領域と、(b) 例えば4096bit×128ラインの二次元空間を単位空間として、その整数倍の範囲でインデックス空間が確保可能なページ領域と、(c) 先頭アドレス(空間先頭アドレス)STxと水平サイズHxが任意に設定できる任意領域と、に区分可能に構成されている(図12(b)参照)。但し、VDP回路52の内部動作を円滑化するため、任意領域(c) において任意設定されるインデックス空間の空間先頭アドレスSTxは、その下位11bitが0であって、所定ビット(2048bit=256バイト)単位とする必要がある。
そして、CPUリセット後、各々に必要なアドレス空間の最大値と、領域先頭アドレス(下位11bit=0)を規定して、AAC領域(a1)と、第二AAC領域(a2)と、ページ領域(b) とが確保され、その残りのメモリ領域が任意領域(c) となる。VDP回路52の内部動作を円滑化するため、AAC領域のアドレス空間の最大値は、2048bit単位で規定され、ページ領域のアドレス空間の最大値は、上記した4096bit×128ラインの単位空間の整数倍とされる。
次に、このように確保された各領域(a1,a2)(b)(c) に必要個数のインデックス空間が設定される。なお、任意領域(c) を使用する場合、VDP回路52の内部動作を円滑化するため、二次元データを扱うインデックス空間の水平サイズHxは、256bitの倍数として、任意に設定可能である一方、その垂直サイズは固定値(例えば、2048ライン)となっている。
何れにしても、第一と第二のAAC領域(a1,a2) は、VDP回路52によって、インデックス空間とインデックス番号が自動的に付与されるので、例えば、テクスチャ設定系コマンドのSETINDEXコマンドによって、デコード先をAAC領域(a) に指定すれば、CGROM55からCGデータを読み出すTXLOAD(テクスチャロード)コマンドでは、CGROM55のSourceアドレスと、展開(デコード)後の水平・垂直サイズなどを指定するだけで足りることになる。そこで、本実施例では、予告演出時などに一時的に出現するキャラクタなどの静止画(テクスチャ)や、Iストリーム動画については、そのデコード先をAAC領域(a) にしている。
このAAC領域(a) は、いずれも、メモリキャッシュ機能が付与されているので、例えば、CGROM55の同一のテクスチャを複数回、AAC領域(a) に読み出すような場合には、二度目以降は、AAC領域(a) にキャッシュされているデコードデータが活用可能となり、余分なREADアクセスとデコード処理が抑制可能となる。もっとも、AAC領域(a) を使い切った場合には、古いデータが自動的に破壊されるので、本実施例では、AAC領域(a) を使用する場合、原則として第一AAC領域(a1)を使用することとし、繰り返し使用する特定のテクスチャだけを第二AAC領域(a2)に取得するようにしている。
繰り返し使用するテクスチャとして、例えば、所定の予告演出時に繰り返し出現するキャラクタや、背景画面を静止画で構築する場合の背景画などを例示することができる。このような場合、テクスチャ設定系コマンドのSETINDEXコマンドによって、デコード先を第二AAC領域(a2)に設定し、TXLOADコマンドによって、キャラクタや背景画などのテクスチャを第二AAC領域(a2)にデコードした後は、第二AAC領域(a2)を使用しないことで、デコード結果を保護する。
そして、その後、SETINDEXコマンドによって、デコード先を第二AAC領域(a2)に指定した上で、取得済みのテクスチャを再取得する同一のTXLOADコマンドを実行させると、取得済みのテクスチャがキャッシュヒットするので、CGROM55へのREADアクセスと、デコード処理に要する時間を削除することができる。後述するように、このようなキャッシュヒット機能は、プリロード領域に先読みされたプリロードデータでも発揮されるが、プリロード領域でキャッシュヒットするプリロードデータは、デコード前の圧縮データであるのに対して、AAC領域でキャッシュヒットするのはデコード後の展開データである点に意義がある。
ところで、テクスチャ(texture )とは、一般に、物の表面の質感・手触りなどを指す概念であるが、本明細書では、静止画を構成するスプライト画像データや、動画一フレームを構成する画像データや、三角形や四角形などの描画プリミティブ(primitive )に貼り付ける画像データだけでなく、デコード後の画像データも含む概念として使用している。そして、内蔵VRAM71の内部で、画像データをコピーする(以下、便宜上、移動と称する)場合には、テクスチャ設定系コマンドのSETINDEXコマンドによって、移動元の画像データをテクスチャとして設定した上で、SPRITEコマンドを実行することになる。
なお、SPRITEコマンドの実行により、移動元のSource画像データが、形式上は、図12(c)に示す仮想描画空間に描画されるが、表示装置に実際に描画される仮想描画空間内の描画領域と、フレームバッファとなるインデックス空間との対応関係を、予め環境設定コマンド(SETDAVR ,SETDAVF )や、テクスチャ設定系コマンド(SETINDEX)によって設定しておけば、例えば、SPRITEコマンドによる仮想描画空間への描画により、所定のインデックス空間(フレームバッファ)には、移動元のSource画像データが描画されることになる(図12(c)参照)。
何れにしても、本実施例では、内蔵VRAM71が、AAC領域(a1,a2) とページ領域(b) と任意領域(c) に大別され、各々に、適当数のインデックス空間を確保することができ、各インデックス空間は、各領域(a)(b)(c) ごとに独立のインデックス番号によって特定される。インデックス番号は、例えば、1バイト長であり、(内部回路によって自動付与されるAAC領域(a) を除いた)ページ領域(b) と任意領域(c) については、0~255の範囲で演出制御CPU63が、インデックス番号を自由に付与することができる。
そこで、本実施例では、図12(a)に示す通り、表示装置DS1用として、任意領域(c) に、一対のフレームバッファFBaを確保して、ダブルバッファ構造の双方に、インデックス番号255,254を付与している。すなわち、メイン表示装置DS1用のフレームバッファFBaとして、トグル的に切り換えて使用されるインデックス空間255と、インデックス空間254を確保している。特に限定されないが、このインデックス空間255,254は、表示装置DS1の横方向ピクセル数に対応して、水平サイズ1280としている。なお、各ピクセルは、ARGB情報32bitで特定されるので、水平サイズ1280は、32×1280=40960bit(256bitの倍数)を意味する。
また、表示装置DS2用として、任意領域(c) に、別の一対のフレームバッファFBbを確保して、ダブルバッファ構造の双方にインデックス番号252,251を付与している。すなわち、サブ表示装置DS2用のフレームバッファFBbとして、インデックス空間252と、インデックス空間251を確保している。このインデックス空間252,251は、表示装置DS2の横方向ピクセル数に対応して、水平サイズ480としている。この場合も、各ピクセルは、ARGB情報32bitで特定されるので、水平サイズ480は、32×480=15360bit(256bitの倍数)を意味する。
なお、フレームバッファFBa,FBbを任意領域(c) に確保するのは、任意領域(c) には、32バイト(=256bit=8ピクセル分)の倍数として、任意の水平サイズに設定することができ、上記のように、表示装置DS1,DS2の水平ピクセル数に一致させれば、確保領域に無駄が生じないからである。一方、ページ領域(b) には、128ピクセル×128ラインの単位空間の整数倍の水平/垂直サイズしか設定できない。
但し、任意領域(c)に確保される二次元のインデックス空間は、その垂直サイズが固定値(例えば、2048ライン)となっている。そのため、フレームバッファFBaにおいて、水平サイズ1280×垂直サイズ1024の領域だけが、メイン表示装置DS1にとって有効データ領域となる。この点は、サブ表示装置DS2についても同様であり、フレームバッファFBbにおいて、水平サイズ480×垂直サイズ800の領域だけが、サブ表示装置DS2にとって有効データ領域となる(図12(c),図22(e)参照)。
上記の点は更に後述するが、何れにしても、フレームバッファFBa,FBbは、描画回路76にとっての描画領域として、各ダブルバッファ(255/254 ,252/251 )が交互に使用され、また、表示回路74A,74Bにとっての表示領域として、各ダブルバッファ(255/254 ,252/251 )が交互に使用される。なお、本実施例では、表示ピクセルの深度情報を記憶するZバッファを使用しないので欠番(253)が生じるが、Zバッファを使用する場合には、任意領域(c) におけるインデックス番号253,250のインデックス空間253,250が、表示装置DS1と表示装置DS2のためのZバッファとなる。
また、本実施例では、フレームバッファFBa,FBbが確保された任意領域(c) に、追加のインデックス空間(メモリ領域)を確保する場合には、0から始まるインデック番号を付与するようにしている。何ら限定されないが、本実施例では、キャラクタやその他の静止画で構成された演出画像を、必要に応じて、適宜な回転姿勢で表示画面の一部に出現させる予告演出用の作業領域として、任意領域(c) に、インデックス空間(0)を確保している。
但し、作業領域の使用は必須ではなく、また、任意領域(c) に代えて、ページ領域(b) に作業領域としてのインデックス空間を確保しても良い。ページ領域(b) を使用すれば、水平サイズ128(=4096bit)×垂直サイズ128の正方形状の単位空間の倍数寸法のインデックス空間を確保できるので、小型の演出画像を扱うには好適である。
ところで、本実施例では、背景画も含め動画で構成されており、画像演出は、ほぼ動画のみで実現されている。特に、変動演出時には、多数(通常10個以上)の動画が同時に描画されている。これらの動画は、何れも、一連の動画フレームとして、圧縮状態でCGROM55に格納されているが、Iフレームのみで構成されたIストリーム動画と、IフレームとPフレームとで構成されたIPストリーム動画とに区分される。ここで、Iフレーム(Intra coded frame )とは、他画面とは独立して、入力画像をそのまま圧縮するフレームを意味する。一方、Pフレーム(Predictive coded frame)とは、前方向予測符号化を行うフレームを意味し、時間的に過去に位置するIフレームまたはPフレームが必要となる。
そこで、本実施例では、IPストリーム動画については、旧データの破壊が懸念されるAAC領域(a) ではなく、ページ領域(b) に展開している。すなわち、水平サイズ128×垂直サイズ128の倍数寸法のインデックス空間を確保可能なページ領域(b) に、多数のインデックス空間(IDX0~IDXN)を確保して、一連の動画フレームは、各動画MViに対応する、常に同一のインデックス空間IDXiを使用してデコードするようにしている。すなわち、動画MV1はインデックス空間IDX1に展開され、動画MV2はインデックス空間IDX2に展開され、以下同様に、動画MViはインデックス空間IDXiに展開されるよう構成されている。
動画MViについて、更に具体的に説明すると、SETINDEXコマンドによって、「IPストリーム動画MViのデコード先は、ページ領域(b) におけるインデックス番号iのインデックス空間(i)である」と予め指定した上で、IPストリーム動画MViの動画一フレームを取得するTXLOADコマンドを実行させている。
すると、TXLOADコマンドが特定するCGROM55上の動画一フレーム(一連の動画フレームの何れか)が、先ず、AAC領域(a) に取得され、その後、自動的に起動するGDEC(グラフィックスデコーダ)75によって、ページ領域(b) のインデックス空間(i)に、取得した動画一フレームがデコードされて展開されることになる。
一方、本実施例では、Iストリーム動画については、静止画と同一扱いとしており、SETINDEXコマンドによって、「Iストリーム動画MVjのデコード先は、第一AAC領域(a1)である」と指定して、TXLOADコマンドを実行させる。その結果、動画フレームは第一AAC領域(a1)に取得され、その後、自動的に起動するGDEC75が、第一ACC領域(a1)にデコードデータを展開している。先に説明した通り、AAC領域(a) のインデックス空間は、自動的に生成されるので、インデックス番号を指定する必要はない。なお、インデックス空間に必要となる展開ボリューム、つまり、デコードされたテクスチャ(動画フレーム)の水平サイズと垂直サイズは、展開先がAAC領域(a) か、ページ領域(b) かに拘らず、TXLOADコマンドによって特定される。
ところで、IPストリーム動画MViやIストリーム動画MVjは、一般にN枚の動画フレーム(IフレームやPフレーム)で構成されている。そのため、TXLOADコマンドでは、例えば、k枚目(1≦k≦N)の動画フレームが記憶されているCGROM55のSourceアドレスと、展開後の水平・垂直サイズなどを指定することになる。何ら限定されないが、静止画を殆ど使用しない実施例では、内蔵VRAM71のアドレス空間48Mバイトの大部分(30Mバイト程度)をページ領域(b) に割り当てている。そして、静止画を殆ど使用しない実施例では、AAC領域として、第一AAC領域(a1)だけを確保し、第二AAC領域(a2)を確保せず、また、前記したAAC領域のキャッシュヒット機能も活用しない。
なお、圧縮動画データのデコード処理を高速化するため、専用のGDEC(グラフィックスデコーダ)回路を設けることも考えられる。そして、専用のGDEC回路をVDP回路52に内蔵させれば、N枚の圧縮動画フレームで構成された圧縮動画データのデコード処理において、動画圧縮データの先頭アドレスをGDEC回路に指示すれば足りるので、N枚の圧縮動画フレームについて、1枚ごとに先頭アドレスを指定する必要がなくなる。
しかし、このような専用のGDEC回路を、圧縮アルゴリズム毎に複数個内蔵させるのでは、VDP回路52の内部構成が更に複雑化する。そこで、本実施例では、ソフトウェアGDECとし、IPストリーム動画、Iストリーム動画、静止画、その他α値などのデータについて、各圧縮アルゴリズムに対応するソフトウェア処理によってデコード処理を実現している。なお、ハードウェア処理とソフトウェア処理の処理時間差は、あまり問題にならず、処理時間が問題になるのは、もっぱら、CGROM55からのアクセス(READ)タイムである。
続いて、図8(a)に戻って説明を続けると、データ転送回路72は、VDP回路内部のリソース(記憶媒体)と外部記憶媒体を、転送元ポート又は転送先ポートとして、これらの間でDMA(Direct Memory Access)的にデータ転送動作を実行する回路である。図13は、このデータ転送回路72の内部構成を、関連する回路構成と共に記載したブロック図である。
図13に示す通り、データ転送回路72は、ルータ機能を有する統合接続バスICMを経由して、CGROM55、DRAM54、及び、内蔵VRAM71とデータを送受信するよう構成されている。なお、CGROM55とDRAM54は、CGバスIF部82や、DMAMIF部83を経由してアクセスされる。
一方、CPU回路51は、データ転送回路72に内蔵された転送ポートレジスタTR_PORT を経由して、描画回路76やプリローダ73にディスプレイリストDLを発行している。なお、CPU回路51とデータ転送回路72は、双方向に接続されているが、ディスプレイリストDLの発行時には、転送ポートレジスタTR_PORT は、ディスプレイリストDLを構成する一単位のデータを受け入れるデータ書き込みポートとして機能する。なお、転送ポートレジスタTR_PORT の書込み単位(一単位データ長)は、CPUバス制御部72dのFIFO構造に対応して32bitとなる。
図示の通り、演出制御CPU63は、CPUIF部81を経由して、転送ポートレジスタTR_PORT をWRITE アクセスできる一方、DMAC回路60を活用する場合には、DMAC回路60が、転送ポートレジスタTR_PORT を直接的にWRITE アクセスすることになる。そして、転送ポートレジスタTR_PORT に書込まれた一連の指示コマンド(つまり、ディスプレイリストDLを構成する指示コマンド列)は、32bit単位で、FIFO構造(32bit×130段)のFIFOバッファを内蔵したCPUバス制御部72dに、自動蓄積されるよう構成されている。
また、このデータ転送回路72は、3チャンネルChA~ChCの伝送経路で、データの送受信動作を実行しており、FIFO構造(64bit×N段)のFIFOバッファを有するChA制御回路72a(N=130段)と、ChB制御回路72b(N=1026段)と、ChC制御回路72c(N=130段)と、を有している。
そして、CPUバス制御部72dに蓄積された指示コマンド列(ディスプレイリストDL)は、演出制御CPU63によるデータ転送レジスタRGij(各種制御レジスタ70の一種)への設定値に基づき、描画回路76か、又はプリローダ73に転送される。矢印で示す通り、ディスプレイリストDLは、CPUバス制御部72dから、ChB制御回路72bのFIFOバッファを経由して描画回路76に転送され、ChC制御回路72cのFIFOバッファを経由してプリローダ73に転送されるよう構成されている。
なお、本実施例では、ChB制御回路72bと、ChC制御回路72cは、ディスプレイリストDLの転送動作に特化されており、CPUバス制御部72dのFIFOバッファに蓄積されたデータは、ChB制御回路72bか、ChC制御回路72cのFIFOバッファを経由して、各々、ディスプレイリストDLの一部として、描画回路76かプリローダ73のディスプレイリストアナライザ(Display List Analyzer )に転送される。
そして、描画回路76は、転送されたディスプレイリストDLに基づいた描画動作を開始する。一方、プリローダ73は、転送されたディスプレイリストDLに基づき、必要なプリロード動作を実行する。プリロード動作によってCGROM55のCGデータが、DRAM54に確保されたプリロード領域に先読みされ、TXLOADコマンドなどに関して、テクスチャのSourceアドレスを変更したディスプレイリストDL(以下、書換えリストDL’という)が、DRAM54に確保されたDLバッファ領域BUF’に保存される。
一方、CGROM55、DRAM54、及び、内蔵VRAM71などの記憶媒体の間のデータ転送には、ChA制御回路72aと、接続バスアクセス調停回路72eとが機能する。また、インデックステーブルIDXTBLのアドレス情報が必要になる内蔵VRAM71のアクセス時には、IDXTBLアクセス調停回路72fが機能する。具体的に確認すると、ChA制御回路72aは、例えば、(a)CGROM55の圧縮データを内蔵VRAM71に転送する場合や、(b)CGROM55の圧縮データをプリロード(先読み)して外付けDRAM54に転送する場合や、(c)プリロード領域の先読みデータを、内蔵VRAM71に転送する場合に機能する。
ここで、ChA制御回路72aは、ChB制御回路72bやChC制御回路72cと並行して動作可能に構成されており、上記した(a)~(c)の動作は、ディスプレイリストDLの発行動作(図22のST8,図27のPT11)や、書換えリストDL’の転送動作(図27のPT10)と並行して実行可能となる。また、ChB制御回路72bとChC制御回路72cも、同時実行可能であり、例えば、ChB制御回路72bが機能する図27のステップPT10の処理と、ChC制御回路72cが機能するステップPT11の処理は並行して実行可能である。但し、転送ポートレジスタTR_PORT は単一であるので、何れか一方(72b/72c)が転送ポートレジスタTR_PORT を使用しているタイミングでは、他方(72c/72b)は、転送ポートレジスタTR_PORT をアクセスすることはできない。
なお、ChA制御回路72aの動作時に、接続バスアクセス調停回路72eは、統合接続バスICMを経由する各記憶素子(CGROM55、DRAM54)とのデータ伝送を調停(Arbitration )している。一方、IDXTBLアクセス調停回路72fは、インデックステーブルIDXTBLに基づいてChA制御回路72aを制御することで、内蔵VRAM71とのデータ交信を調停している。なお、プリローダ73が機能する実施例の場合、DRAM54のDLバッファ領域BUF’に保存された書換えリストDL’は、接続バスアクセス調停回路72eと、ChB制御回路72bを経由して描画回路76に転送されることになる(図28(b)参照)。
上記の通り、本実施例のデータ転送回路72は、各種の記憶リソース(Resource)から任意に選択されたデータ転送元と、各種の記憶リソース(Resource)から任意に選択されたデータ転送先との間で、高速のデータ転送を実現している。図13から確認される通り、データ転送回路72が機能する記憶リソースには、内蔵VRAM71だけでなく、CPUIF部56、CGバスIF部82、DRAMIF部83を経由する外部デバイスも含まれる。
そして、CGROM55から1回に取得すべきデータ量(メモリシーケンシャルREAD)のように、ChA制御回路72aが機能する外部デバイスとのデータ転送量は、ChB制御回路72bやChC制御回路72cが機能するディスプレイリストDLの場合と比較して膨大であり、互いに、データ転送量が大きく相違する。
ここで、これら各種のデータ転送について、単位データ量や総転送データ量を、細かく設定可能に構成することも考えらえるが、これでは、VDP内部の制御動作が煩雑化し、円滑な転送動作が阻害される。そこで、本実施例では、データ転送の最低データ量Dminを一意に規定すると共に、総転送データ量を、最低データ量DTminの整数倍となるよう制限することで、高速で円滑なデータ転送動作を実現している。特に限定されないが、実施例のデータ転送回路72では、最低データ量Dmin(単位データ量)を、256バイトとし、総転送データ量を、この整数倍に制限することにしている。
したがって、32bit毎にCPUバス制御部72dのFIFOバッファに蓄積されたディスプレイリストDLの指示コマンド列は、その総量が最低データ量Dminに達したタイミングで、ChB制御回路72bやChC制御回路72cに転送され、各々のFIFOバッファに蓄積されることになる。
ディスプレイリストDLは、一連の指示コマンドで構成されているが、本実施例では、転送ポートレジスタTR_PORT の書込み単位(32bit)に対応して、ディスプレイリストDLは、コマンド長が、32bitの整数N倍(N>0)の指示コマンドのみで構成されている。したがって、データ転送回路72を経由して、ディスプレイリストDLの指示コマンドを受ける描画回路76やプリローダ73は、素早く円滑にコマンド解析処理(DL analyze)を開始することができる。なお、32bitの整数N倍のコマンド長は、その全てが有意ビットとは限らず、無意ビット(Don't care bit)も含んで、32bitの整数N倍という意味である。
次に、プリローダ73について説明する。先に概略説明した通り、プリローダ73は、データ転送回路72(ChC制御回路72c)から転送されたディスプレイリストDLを解釈して、TXLOADコマンドが参照しているCGROM55上のCGデータを、予め、DRAM54のプリロード領域に転送する回路である。また、プリローダ73は、このTXLOADコマンドに関し、CGデータの参照先を、転送後のアドレスに書換えた書換えリストDL’を、DRAM54のDLバッファBUF’に記憶する。なお、DLバッファBUF’や、プリロード領域は、CPUリセット後の初期処理時(図21のSS3)に、予め確保されている。
そして、書換えリストDL’は、描画回路76の描画動作の開始時に、データ転送回路72の接続バスアクセス調停回路72eや、ChB制御回路72bを経由して、描画回路76のディスプレイリストアナライザ(DL Analyzer )に転送される。そして、描画回路76は、書換えリストDL’に基づいて、描画動作を実行する。したがって、TXLOADコマンドなどに基づき、本来は、CGROM55から取得すべきCGデータが、プリロード領域に先読みされているプリロードデータとして、DRAM54のプリロード領域から取得される。この場合、プリロードデータは、上書き消去されない限り、繰り返し使用可能であり、プリロード領域にキャッシュヒットしたプリロードデータは、繰り返し再利用される。
本実施例では、十分な記憶容量を有する外付けDRAM54にプリロード領域を設定しているので、上記のキャッシュヒット機能が有効に機能する。また、外付けDRAM54の記憶容量が大きいので、例えば、複数フレーム分のCGデータを一気にプリロードする多重プリロードも可能である。すなわち、プリローダ73の動作期間に関し、CGデータの先読み動作を含んだ一連のプリロード動作の動作期間を、VDP回路52の間欠動作時の動作周期δの整数倍の範囲内で、適宜に設定することで多重プリロードが実現される。
但し、以下の説明では、便宜上、多重プリロードのない実施例について説明するので、実施例のプリローダ73は、一動作周期(δ)の間に、一フレーム分のプリロード動作を完了することにする。なお、図22に関し後述するように、本実施例では、VDP回路52の間欠動作時の動作周期δは、表示装置DS1の垂直同期信号の2倍周期である1/30秒である。
次に、描画回路76は、データ転送回路72を経由して転送されたディスプレイリストDLや書換えリストDL’の指示コマンド列を順番に解析して、グラフィックスデコーダ75やジオメトリエンジン77などと協働して、VRAM71に形成されたフレームバッファに、各表示装置DS1,DS2の一フレーム分の画像を描画する回路である。
上記の通り、プリローダ73を機能させる実施例では、書換えリストDL’のCGデータの参照先は、CGROM55ではなく、DRAM54に設定されたプリロード領域である。そのため、描画回路76による描画の実行中に生じるCGデータへのシーケンシャルアクセスを迅速に実行することができ、動きの激しい高解像度の動画についても問題なく描画することができる。すなわち、本実施例によれば、CGROM55として、安価なSATAモジュールを活用しつつ、複雑高度な画像演出を実行することができる。
ところで、プリローダ73を機能させるか否かに拘らず、ディスプレイリストDLや書換えリストDL’の転送時に、仮にデータ化けが発生しても、描画回路76は、これを検出することはできない。また、ノイズなどの影響で、描画回路76がフリーズして、内蔵VRAM71のREAD/WRITE アクセスが異常停止することも有り得る。そこで、本実施例では、描画回路76が不合理な指示コマンド(analyze 不能のビット並び)を検出した場合や、一定期間、内蔵VRAM71に対してREAD/WRITE アクセスがない場合には、描画異常割込みを発生させるよう構成されている(描画異常割込みが許可状態)。なお、この点は、図22(d)に関して後述する。
次に、図12に関して説明した通り、VRAM71の任意領域(c) に確保されたフレームバッファFBは、描画領域と読出領域に区分されたダブルバッファであり、2つの領域を、交互に用途を切り替えて使用する。また、本実施例では、2つの表示装置DS1,DS2が接続されているので、図12に示す通り、2区画のフレームバッファFBa/FBbが確保されている。したがって、描画回路76は、表示装置DS1用のフレームバッファFBaの描画領域(書込み領域)に、一フレーム分の画像データを描画すると共に、表示装置DS2用のフレームバッファFBaの描画領域(書込み領域)に、一フレーム分の画像データを描画することになる。なお、描画領域に、画像データが書込まれているとき、表示回路74は、他方の読出領域(表示領域)の画像データを読み出して、各表示装置DS1,DS2に出力する。
表示回路74は、フレームバッファFBa,FBbの画像データを読み出して、最終的な画像処理を施した上で出力する回路である(図14(a)参照)。最終的な画像処理には、例えば、画像を拡大/縮小するスケーラのスケーリング処理、微妙なカラー補正処理、画像全体の量子化誤差が最小化するディザリング処理が含まれている。そして、これらの画像処理を経たデジタルRGB信号(合計24bit)が、通常は、水平同期信号HSや垂直同期信号VSなどと共に出力される。
図14(a)に示す通り、本実施例では、上記の動作を並列的に実行する3系統の表示回路A/B/Cが設けられており、各表示回路74A~74Cは、各々に対応するフレームバッファFBa/FBb/FBcの画像データを読み出して、上記の最終画像処理を実行する。但し、本実施例では、表示装置は2個であるので、フレームバッファFBcは確保されておらず、表示回路74Cが機能することもない。
ここで、メイン表示装置DS1の仕様を確認すると、メイン表示装置DS1は、左右方向に隣接する奇数ピクセル(ODD)と偶数ピクセル(EVEN)を、別々のLVDS(Low Voltage Differential Signaling)伝送路を通して、受信部RV(RVa+RVb)で受ける必要がある。また、メイン表示装置DS1の動作クロックCKの周波数は、40~70MHz程度(典型値54MHz)にする必要があり、(WTh+640)×(WTv+1024)/54MHz≒1/60秒となるよう、水平/垂直方向の待機時間WTh/WTvを設定する必要がある。更に、メイン表示装置DS1に対して画像データ(ODD/EVEN信号)を出力するタイミングでは、アクティブレベルのデータ有効信号ENABを出力する必要がある。
そこで、表示回路74Aは、上記した全ての仕様を満たす信号を出力する必要がある。図15(a)~図15(e)は、表示回路74Aから出力される各種の信号を図示したものである。まず、ドットクロック(LVDSクロック)DCKの周波数を決定する必要があるが、本実施例では、メイン表示装置DS1を、典型値54MHzの動作クロックCKで動作させるので、これに対応して、(VDP回路52における)設計上のドットクロックDCKを、108MHz(=54×2)としている。
それは、横1280ドット×縦1024ラインの表示パネルLCD(図15(f)参照)において、左右に隣接する2つの画素が、54MHzの動作クロックCKに同期して一気に処理されるので、実質的には、108MHzのドットクロックDCKで動作するのと等価だからである。
そして、表示回路74Aの動作を規定する各種の動作パラメータは、周波数108MHzのドットクロックDCKに基づいて規定される。先ず、(WTh+640)×(WTv+1024)/54MHz≒1/60秒となるよう、水平/垂直方向の待機時間WTh/WTvを設定する必要があるが、表示回路74Aについての動作パラメータWTh,WTvとしては、(WTh+1280)×(WTv+1024)/108MHz≒1/60秒を満たす必要がある。
また、水平/垂直方向の待機時間WTh/WTvについて、表示装置DS1の仕様上の許容範囲も考慮する必要がある。そこで、本実施例では、水平待機時間WThを、108MHzのドットクロックDCKでカウントして、382クロックとし、垂直待機時間WTvを、59ラインとしている。したがって、一フレームの画像更新に要する時間は、(382+1280)×(59+1024)/108MHz=16.666mSとなり、フレームレートFR(Frame Rate)が1/60秒となる。
この関係は、表示装置DS1の更新周期FR[秒]を規定するものであり、後述するドットクロックDCKの周波数Fdot、水平同期のサイクル数THc、及び、垂直同期のライン数TVlを使用すると、FR=THc×TVl/Fdotとなる。ここで更新周期FRが長すぎると、フリッカなどの異常が生じるおそれがあり、一方、更新周期FRが短すぎると、表示装置が正常な更新処理を実行できないので、0.95/60<FR[秒]<1.05/60の範囲に規定すべきである。
この設定に対応して、データ有効信号ENABは、各ラインの画像更新動作において、382クロックに対応する待機時間WTh(=382/108MHz)は、Lレベルであり、その後、1280クロックに対応するアクティブ区間(=1280/108MHz)は、アクティブレベル(H)となる(図15(c))。なお、図15(d)と、図15(e)に示す通り、データ有効信号ENABのアクティブ区間では、一ライン1280ドットの画素について、所定の時間(11.85μS=1280/108MHz)で画像更新動作が完了するよう、画像データが出力される。すなわち、1280個のドットクロックDCKに同期して、1280個の画素データ(Pixel Data)が出力される。なお、表示装置DS1には、諧調度28×28×28のフルカラー画像が表示されるので、1画素の画素データは、3×8ビット長である。
ところで、本実施例では、メイン表示装置DS1では必要とはされないものの、垂直同期信号VSと水平同期信号HSを出力している。垂直同期信号VSは、垂直待機時間WTvの時間内に出力され、水平同期信号HSは、水平待機時間WThの時間内に出力される。なお、図15(a)と図15(b)には、理解の便宜上、各々の動作周期が示されている。また、図15(f)には、TH×TV(=1083×1662クロック)で特定される矩形枠の左上と右下の頂点に、〇印を示して「表示動作の開始」「表示動作の終了」と記載されているが、この〇印は、1/60秒ごとに開始される表示回路74Aの動作周期を規定する「Vブランク開始」を意味する。表示動作を規定する1083×1662クロックが、1/60秒に一致するので、「表示動作の開始」から「表示動作の終了」までの経過時間(表示回路74Aの動作周期)は1/60秒である。なお、「Vブランク開始」については、図22に基づいて後述する。
図14に戻って説明を続けると、実施例の出力選択部79は、表示回路74Aの出力信号を、108MHzのドットクロックDCKを2分周するデュアルリンクに分割して、各々、LVDS部80aと、LVDS部80bに伝送している(図14(a)、図5参照)。そして、各LVDS部80a,80bは、画像データ(合計24bitのデジタルRGB信号)を、第1と第2のLVDS信号に変換し、これにクロック信号(54MHz=108/2)を伝送する一対を加えて、全五対の差動信号LVDS1,LVDS2として、2つの経路を経由して、メイン表示装置DS1に出力している(図14(a)図4参照)。
先に説明した通り、メイン表示装置DS1では、一画素分のODD信号と、隣接する一画素分のEVEN信号とが、同じタイミングで処理されるので、実質的な動作クロックCKの周波数は、表示回路74Aが出力する108MHzのドットクロックDCKに一致する。
以上、メイン表示装置DS1に伝送すべき画像を生成する表示回路74Aについて説明したが、表示回路74Bは、サブ表示装置DS2に伝送すべき画像データを生成している。表示回路74Bが出力するデジタルRGB信号は、出力選択部79を経由してデジタルRGB部80cに供給され、垂直同期信号VSや水平同期信号HSと共に、サブ表示装置DS2に伝送される。
なお、同期信号VS,HSと共に、データ有効信号ENABもデジタルRGB部80cを経由して伝送されるが、これら各信号は、LVDS伝送路の場合のような離散値ではなく、連続信号として伝送されるのは勿論である(図14(a)参照)。
ところで、本実施例の場合、各表示回路74A~74Bには、表示タイミングに対して、表示データの生成が間に合わなかったUnderrun異常をカウントするアンダーランカウンタURCNTa~URCNTcが設けられている(図15参照)。そして、このアンダーランカウンタURCNTa~URCNTcのカウンタ値は、アンダーラン異常が発生するとVBLANK毎に自動的に加算されるよう構成されている。
次に、SMC回路78(Serial Management Controller)は、LEDコントローラとMotorコントローラとを内蔵した複合コントコントローラである。そして、外部基板に搭載したLED/Motorドライバ(シフトレジスタを内蔵するドライバIC)に対して、クロック信号に同期してLED駆動信号やモータ駆動信号を出力する一方、適宜なタイミングで、ラッチパルスを出力可能に構成されている。
上記したVDP回路52の内部回路及びその動作に関し、内部回路が実行すべき動作内容は、演出制御CPU63が、制御レジスタ群70に設定する動作パラメータ(設定値)で規定され、VDP回路52の実行状態は、制御レジスタ群70の動作ステイタス値をREADすることで特定できるようになっている。制御レジスタ群70は、演出制御CPU63のメモリマップ上、1Mバイト程度のアドレス空間(0~FFFFFH)にマッピングされた多数のVDPレジスタRGijを意味し、演出制御CPU63は、CPUIF部81を経由して動作パラメータのWRITE (設定)動作と、動作ステイタス値のREAD動作を実行するようになっている(図8(b)参照)。
制御レジスタ群70(VDPレジスタRGij)には、割り込み動作などシステム動作に関する初期設定値が書込まれる「システム制御レジスタ」と、内蔵VRAMにAAC領域(a) やページ領域(b) を確定する共に、インデックステーブルIDXTBLを構築又は変更などに関する「インデックステーブルレジスタ」と、演出制御CPU63とVDP回路52の内部回路との間のデータ転送回路72によるデータ転送処理に関する設定値などが書込まれる「データ転送レジスタ」と、グラフィックスデコーダ75の実行状況を特定する「GDECレジスタ」と、指示コマンドや描画回路76に関する設定値が書込まれる「描画レジスタ」と、プリローダ73の動作に関する設定値が書込まれる「プリローダレジスタ」と、表示回路74の動作に関する設定値が書込まれる「表示レジスタ」と、LEDコントローラ(SMC回路78)に関する設定値が書込まれる「LED制御レジスタ」と、Motorコントローラ(SMC回路78)に関する設定値が書込まれる「モータ制御レジスタ」と、音声回路SNDに関する設定値が書込まれる「音声制御レジスタSRG」と、が含まれている。但し、本実施例では、音声回路SNDを活用していない。
何れにしても、以下の説明では、制御レジスタ群70に含まれる一又は複数のレジスタRGijを、上記した個別名称で呼ぶ場合と、VDPレジスタRGijと総称することがあるが、何れにしても、演出制御CPU63は、所定のVDPレジスタRGijに、適宜な設定値を書込むことで、VDP回路52の内部動作を制御している。具体的には、演出制御CPU63は、適宜な時間間隔で更新するディスプレイリストDLと、所定のVDPレジスタRGijへの設定値に基づいて、所定の画像演出を実現している。なお、この実施例では、ランプ演出やモータ演出も含め、演出制御CPU63が担当するので、VDPレジスタRGijには、LED制御レジスタやモータ制御レジスタも含まれる。
続いて、上記したCPU回路51とVDP回路52とを内蔵した複合チップ50によって実現される、画像演出、音声演出、モータ演出、及び、ランプ演出の統一的な演出制御動作について説明する。
本実施例の場合、複合チップ50の動作は、電源投入や異常リセットによるパワーオンリセット動作(図16(a)参照)によって開始され、初期設定プログラム(ブートプログラム)Pinitによる初期設定処理(SP1~SP9)を経て、演出制御プログラムMain及び割込み処理プログラム(ベクタハンドラ)Voptによるメイン制御処理(SP10)に移行するよう構成されている。メイン制御処理については、図18(a)に、その導入部の処理内容が記載されており、本体部の処理内容が図22(a)に記載されている。なお、図18のステップSP27の処理は、図21(a)のステップSS1~SS3の処理を含んでいない。
以上を踏まえて、パワーオンリセット動作について図16(a)に基づいて説明する。電源投入時など、システムリセット信号SYSが所定の期間(アサート期間)Lレベルを維持すると、全ての動作制御レジスタREGや、全てのVDPレジスタRGijは、所定のデフォルト値に自動設定される。
そして、その後、システムリセット信号SYSがHレベル(ネゲートレベル)に変化すると(図6(d)のタイミングT1参照)、本実施例では、CPUリセット後の経過時間を計測するべく、計時タイマTM(図9(a))の動作を開始させる(SP1)。また、アドレス空間CS0の先頭番地からの32bitデータが、演出制御CPU63のプログラムカウンタPCに設定され、これに続く32bitデータが、スタックポインタSPに設定されるよう構成されている(SP1)。なお、図10や図17(c)では、プログラムカウンタPCやスタックポインタSPの初期値を記憶するメモリの先頭領域をベクタテーブルVECTと称している。
図16(b)に示す通り、このベクタテーブルVECTには、優先度と割込み要因などを特定するベクタ番号と、アドレス情報とが対応して記憶されている。ベクタ番号は、その番号が小さいほど優先度が高いが、例えば、ベクタ番号11は、マスク不能割込み(NMI)であって、アドレス情報として、NMI割込み時に実行される割込み処理プログラムの先頭アドレスが記憶されている。また、ベクタ番号64は、VDPからの内部割込み(VDP_IRQ0)であって、アドレス情報として、VDP_IRQ0割込み時に実行される割込み処理プログラムの先頭アドレスが記憶されている。
割込み優先度は、図18(d)に示す通りであるので、ベクタ番号64より小さいベクタ番号の欄には、制御コマンド受信割込みIRQ_CMD と、20μSタイマ割込みと、1mSタイマ割込みについて、割込み処理プログラムの先頭アドレスが各々記憶されていることになる。一方、ベクタ番号64より大きいベクタ番号の欄には、VDP_IRQ 1より優先度が低い割込み処理プログラム(IRQ_SND ,IRQ_RTC など)の先頭アドレスが各々記憶されている。
また、ベクタテーブルVECTにおいて、ベクタ番号0とベクタ番号1は、パワーオンリセット時にCPUのプログラムカウンタと、スタックポインタに自動設定されるべき、設定値が規定されている。図16(b)に示す通り、この実施例では、パワーオンリセット時(リセットアサート期間)の内部動作として、4バイトデータ「****」が、プログラムカウンタPCに設定され、4バイトデータ「++++」がスタックポインタSPに設定される。なお、「****」は、アドレス空間CS0に不揮発的に記憶されている初期設定プログラムPinit(図16のSP1~SP9)の先頭アドレス値であり、「++++」は、内蔵RAM59に確保された、LIFO(Last-In First-Out )方式で機能するスタック領域の先端又は終端のアドレス値である。
なお、本実施例では、レジスタバンクRBiを有効活用するので、割込み処理時に、スタック領域が消費されることなく、それほどのメモリ容量は必要とされない。すなわち、本実施例では、スタック領域は、専ら、関数処理や、サブルーチン処理において活用される。
以上の動作の結果、その後、演出制御CPU63は、アドレス値「****」以降に記載された初期設定プログラムPinitを実行することになる。但し、アドレス空間CS0のメモリREAD動作は、バスステートコントローラ66(図9)の動作を規定する動作制御レジスタREGのデフォルト値(初期値)に基づいて実行される。この動作制御レジスタREGの初期値は、リセットアサート期間(システムリセット信号SYSがLレベルを維持する図7(d)に示す期間)に自動的に設定される値であり、アドレス空間CS0を、如何なるメモリデバイスで構成しても、問題なくREADアクセスできるよう、最遅READアクセス動作(デフォルトアクセス動作)に設定されている。
そこで、このデフォルトアクセス動作を、最適なアクセス動作に変更するべく、最初に、アドレス空間CS0に対するバスステートコントローラ66(図9)の動作を規定する所定の動作制御レジスタREGに最適値を設定する(SP1)。すなわち、初期設定プログラムPinit(SP1~SP9)、演出制御プログラムMainB(SP10以下)、定数データなどを格納したPROM53をアクセスする場合のメモリREAD動作を、メモリデバイスに合わせて最適化するべく、バス幅やページアクセスの有無を設定すると共に、チップセレク信号CS0や、READ制御信号や、WRITE 制御信号その他の動作タイミングを最適設定する(図40参照)。
以上の設定の結果、ステップSP2以降の処理は、アドレス空間CS0に記憶されているプログラムを、最適にメモリREADして実行されることになる。そこで、次に、演出制御CPU63が、VDPレジスタRGijをアクセスする場合のREAD/WRITE アクセス動作を最適化するべく、VDPレジスタRGijに対するバスステートコントローラ66(図9)の動作を規定する所定の動作制御レジスタREGに最適値を設定する(SP2)。
先に説明した通り、本実施例では、VDPレジスタRGijは、演出制御CPU63のアドレス空間CS7に位置付けられているので、チップセレク信号CS7や、その他の制御信号の動作タイミングを最適設定するべく所定の動作制御レジスタREGに所定値を書込むことになる。
続いて、特定のVDPレジスタRGijのレジスタ値を読み出して、その値が所定値(デバイスコード)か否かを判定する(SP3)。これは、VDP回路52のシステムクロックが安定化したことの確認判定である。すなわち、VDP回路52は、PLLREF端子に供給される発振器OSC2の発振出力に基づいて動作するが、このVDP回路52が、CPU回路51からの指令(つまり、VDPレジスタRGijへの設定など)を正常に受け付け可能か否かの判定である。
そして、デバイスコードの読出し処理(SP3)によって、システムクロックが安定化したことが確認できれば、その後は、VDP回路52の正常動作を期待できるので、所定のVDPレジスタRGijに対する設定処理を実行する(SP4~SP6)。ステップSP4の処理では、先ず、演出制御CPU63からVDPレジスタRGijをアクセスする場合のエンディアン設定(ビッグ/リトル)や、データバス幅を設定し(SP40)、また、VDP回路からCPU回路への内部割込み(VDP_IRQ0,VDP_IRQ1,VDP_IRQ2,VDP_IRQ3)について、割込み有意レベル(H/L)を設定する(SP41)。
なお、本実施例では、設定値の最上位ビット(Most significant Bit)を、VDPレジスタRGijの最上位ビットに格納するビックエンディアンに設定し、データ32バス幅を32bitに設定するが、これらの設定値が、仮に、デフォルト値と同じであれば、これらの設定処理を省略することもできる(以下の処理も同様)。
また、ステップSP4の処理では、所定のシステム制御レジスタRGijへの設定値に基づいて、表示クロックの周波数が設定される(SP42~SP44)。具体的には、表示回路74Aと表示回路74Bについて、40MHzのリファレンスクロック(発振器OSC2の出力)を基礎にして、ドットクロックDCKAやDCKBを生成することを、各々、所定のシステム制御レジスタRGijに設定し(SP42)、このリファレンスクロックに対する逓倍比と分周比を表示回路毎に適宜に規定する(SP43)。また、表示回路74Bの動作開始を、表示回路74Aの動作開始に同期させるべく所定のシステム制御レジスタRGijに設定する(SP44)。更にまた、LVDSのサンプリングクロックを表示回路AのドットクロックDCKAと同一に設定する(SP43)。
これらの処理において、ドットクロックDCKは、表示回路74Aと表示回路74Bについて別々に設定され、表示回路74Aに適用されるメイン表示装置DS1用のドットクロックDCKAの周波数は、先に説明した通り、108MHzに設定される。一方、表示回路74Bに適用されるサブ表示装置DS2用のドットクロックDCKBの周波数は、横480×縦800ピクセルに対応して、27MHzに設定される。
また、ステップSP4の処理では、LVDS部80をデュアルリンク(一対のLVDS伝送路)として使用すると設定し(SP45)、また、所定のシステム制御レジスタRGijへの設定値に基づいて、LVDS部80の動作状態を、ゼロを出力するマスク状態(Defult状態)から、表示回路74の出力にしたがうマスク解除状態に切り替える(SP45)。なお、LVDS部80をシングルリンク(単一のLVDS伝送路)として使用する場合には、ステップSP45の処理において、その旨の設定をすることになる。
図6(f)に示すように、ステップSP45の処理の結果、LVDS部80の動作がdefult状態から非マスク状態に切り替わることで、その後、表示回路74が動作を開始したタイミングT4の後は(図21のSS4参照)、LVDS部80a,80bには、出力選択部79を経由して、ODD信号とEVEN信号が供給され、デュアルリンクを経由して、表示装置DS1にLVDS信号(LVDS1/LVDS2)が伝送されることになる(図14(a)参照)。なお、LVDSのサンプリングクロックは、表示回路AのドットクロックDCKAと同一の108MHzであると設定されるが、本実施例では、デュアルリンク構成を採るので、各デュアルリンクにおけるLVDSサンプリングクロックは、54MHzである(図4参照)。
また、ステップSP4の処理では、PLLREF端子(図8(a)参照)へのクロック信号(リファレンスクロック)に基づいてDDR(DRAM54)を機能させる旨を設定する(SP46)。なお、PLLREF端子に、発振器OSC2のリファレンスクロックが供給されることは、図8(a)に関して説明した通りである。また、DDR(DRAM54)に内蔵されたレジスタに、適宜な値を設定することで、DRAM54の自己リフレッシュ機能(Self-Refresh Operation)を有効化し、DRAM54が正常動作するためのその他の設定をする(SP47)。以上の処理によって、DRAM54は、正常に動作可能な状態になり、その後のPROM53からDRAM54へのデータ転送動作(SP8)や、DRAM54に転送された制御プログラムの実行(SP10)が、何ら問題なく実現されることになる。
続いて、図10に示すメモリマップを実現するべく、アドレス空間CS1~CS6を定義する(SP5)。先に説明した通り、アドレス空間CS3は、音声プロセッサ27の内部レジスタに付与され、アドレス空間CS4は、RTC38の内部レジスタやSRAM39のアドレス空間に付与され、アドレス空間CS5は、外付けDRAM(DDR)54に付与され、アドレス空間CS6は、内蔵CPUのワークメモリ57に付与される。
なお、VDPレジスタRGijが、アドレス空間CS7に割り当てられることは固定的に規定されているので、アドレス空間CS7の定義処理は不要である。また、アドレス空間CS0は、CPU回路51のメモリマップ0x000000000番地以降であることは予め固定的に規定されており、この規定を前提として、アドレス空間CS0が、CGROM55に確保されているか、その他のメモリデバイスに付与されるかは、HBTSL 端子のH/Lレベルで規定される。
先に説明した通り、本実施例では、HBTSL 端子=Lとなっており、CGROM55以外にアドレス空間CS0が定義されていることが示されている。そして、CGROM55以外である制御メモリ53の具体的なバス幅や、最適なアクセス動作については、ステップSP1において設定済みであるので、アドレス空間CS0についても、ステップSP5の処理は不要である。
続いて、ステップSP5の処理で定義されたアドレス空間CS1~CS6について、各アドレス空間CSiをアクセスする場合のバス幅やページアクセスの有無について、所定の動作制御レジスタREGに所定値を書込む(SP6)。また、チップセレク信号CSiその他を最適設定するべく、所定の動作制御レジスタREGに所定値を書込む(SP6)。これらの処理は、ステップSP1やSP2の処理と同様の内容であり、バスステートコントローラ66(図9)の動作を規定する動作制御レジスタへの書込み処理によって、チップセレク信号CSi、READ制御信号、WRITE 制御信号、その他の動作タイミングが最適に設定される。
続いて、既に動作を開始しているWDT回路58に関し、WDT回路58にクリア信号を出力することで、異常リセットを回避する(SP7)。これは、電源投入後、WDT回路58が自動的に動作を開始することを考慮したものであり、この後も、繰り返し同様の処理が実行される。なお、ステップSP9の処理は、サブルーチンSP7として制御メモリ53に格納されているが、ステップSP9の終了時までは、制御メモリ53のサブルーチンSP7が呼び出され、ステップSP9の終了後は、外付けDRAM54に転送された別のサブルーチンSP7’が呼び出されて実行される。
続いて、アドレス空間CS0に格納されているプログラムやデータのうち、図16(b)や図17(c)に示すベクタハンドラVopt(割込み処理プログラム)、エラー復帰処理プログラムPiram、演出制御プログラムMainB、初期値有り変数D、及び、定数データCを、外付けDRAM54や、内蔵RAM59に転送する(SP8)。なお、初期値有り変数Dとは、所定の変数領域に記憶されている初期値データを意味する。このメモリセクションの初期化処理(SP8)は、演出制御処理の高速化を図るため、プログラムやデータを転送する処理であり、アクセス速度に劣るROMへのアクセスを回避するための処理である。
そして、次に、レジスタバンクRBiを使用する旨の設定をする(SP9)。そのため、その後は、割込み処理時に、レジスタバンクRB0~RB14が機能することになり、割込み処理が迅速化されると共に、スタック領域の消費が緩和される。
以上の処理は、アドレス空間CS0である制御メモリ53に格納されている「初期設定プログラムPinit」の実行によって実現される(図17(c)参照)。そして、この初期設定プログラムPinitの実行が終われば、続いて、演出制御プログラムMainによるメイン制御処理を実行する(SP10)。ここで、メイン制御処理の実行とは、ステップSP8の転送処理によって、制御メモリ53から外付けDRAM54に転送された「演出制御プログラムMain」の実行を意味する(図16(b)参照)。
「演出制御プログラムMain」の処理は、図18(a)と図21の上部に示すメイン導入処理と、図21下部と図22(a)に示すメイン本体処理とに区分される。具体的な内容については、図18(a)、及び、図21~図22に基づいて説明するが、それに先行して、メモリセクションの初期化処理(SP8)について説明する。図17(a)に示す通り、メモリセクションの初期化処理(SP8)では、最初に複数チャネルのDMACを動作停止状態に初期設定する。なお、この処理は、念のための形式的な処理に過ぎない。
以上の処理が終われば、所定チャネルのDMACiを起動させて、制御メモリ53の記憶されているベクタハンドラVopt(割込み処理プログラム)を、内蔵RAM59に、ノンストップ転送方式(図11(b3)参照)でDMA転送する。本実施例では、割込み処理プログラムVoptを内蔵RAM59に転送するので、外付けDRAM54の異常時においても、適切な異常対応処理が可能となる。
その後の処理も同じであり、所定チャネルのDMACiを使用して、ノンストップ転送方式で実行され、エラー復帰処理プログラムPiramを内蔵RAM59にDMA転送する(SP62)。本実施例では、エラー復帰処理プログラムPiramを内蔵RAM59に転送するので、エラー復帰処理において、周辺回路を確実にリセット状態にすることができる。例えば、エラー復帰処理プログラムPiramを、内蔵RAM59以外の例えば外付けDRAM54に転送すると、エラー復帰処理時に、外付けDRAM54をリセット処理できないことになる。
次に、演出制御プログラムMainを、外付けDRAM54にDMA転送し(SP63)、定数データCを、外付けDRAM54にDMA転送する(SP64)。定数データには、演出抽選に使用する抽選データや、図22(b)に示す各種の駆動データテーブルにおける、ランプ駆動データやモータ駆動データが含まれる。また、初期値の有る変数Dを、外付けDRAM54にDMA転送するが(SP65)、これら何れも、所定チャネルのDMACiを使用したノンストップ転送方式で実行される。
最後に、外付けDRAMの変数領域Bの先頭にクリアデータを書込む(SP66)。この先頭アドレスを、仮にADbとすると、その後のDMA転送処理では、転送元アドレスをADbとし、転送先アドレスをADb+1と初期設定した後、各アドレス値ADb,ADb+1をインクリメント処理しつつ、このクリアデータを拡散させることで、変数領域Bのクリア処理を実行することになる(SP67)。
以上説明したステップSP61~SP66、及びステップSP67の処理は、何れも、類似の動作であり図17(b)に示す通りである。すなわち、先ず、所定チャネルのDMACiに関し、DMA転送条件として、(1)サイクルスチール転送モード、(2)ノンストップ転送方式を採り、(3)SourceとDestination のアドレス値をincrement 更新すると、設定する(SP68)。
次に、転送元Sourceアドレスと、転送先Destination アドレスの初期値を設定し(SP69)、転送サイズを設定し、割込み禁止などに設定した上で(SP70)、DMA転送の動作を開始させる(SP71)。なお、ステップSP68~SP71の設定は、何れも所定の動作制御レジスタREGへの設定動作によって実現される。
このメモリセクションの初期化処理では、DMA転送終了の割込みを禁止設定しているので(SP70)、DMA転送の動作を開始させた後は、所定の動作制御レジスタREGのステイタスフラグを、繰り返しREADアクセスして、DMA転送の終了を待つ(SP72)。但し、動作終了までの処理時間を考慮して、WDT回路58に対して、クリア信号を繰り返し出力する(SP73)。そして、DMA転送の終了時には、所定の動作制御レジスタREGへの設定動作に基づいてDMACiを停止設定する。
続いて、メイン制御処理の動作内容(メイン導入処理+メイン本体処理)について、図18(a)~図22に基づいて説明する。メイン制御処理(メイン導入処理+メイン本体処理)については、図18(a)と図21の上部に、メイン導入処理(SP20~SP27)が記載されており、メイン本体処理の一部である初期設定処理(SS1~SS6)が、図21の下部に記載されている。また、メイン本体処理の残部である定常処理(ST4~ST14)の内容は、図22に記載されている。
図18(a)に示す通り、メイン導入処理では、最初に、CGROM55について、そのバス幅やROMデバイスの種別を特定する(SP20)。具体的には、図19(a)に示す通りであり、CGROM55とのインタフェイスを司るCGバスの動作状態を特定する所定のVDPレジスタRGij(例えばCGバスStatusレジスタ)をREADアクセスして(SP80)、CGバスについて動作設定が可能か否かを判定する(SP81)。
ここで、CGバスStatusレジスタの値が1であれば、CGバスの内部回路がリセット動作中であることを意味し、VDPレジスタRGijへの設定値を受け付けることができないことを意味する。そこで、CGバスStatusレジスタの値が1から0に変化していることを確認した上で(SP81)、CGROMを構成するメモリデバイスに対応して規定可能なデバイス区間(SPA0~SPAn)毎に(1)各デバイス区間SPAiの有効/無効、(2)ROMデバイスの種別、(3)データバス幅などの動作パラメータを、所定のVDPレジスタRGijに設定する(SP82)。
図18(a)に示す通り、この実施例では、CGROM55を複数領域(デバイス区間)に区分できるようになっており、例えば、デバイス区間(SPA0~SPAn)毎に、メモリデバイスや、データバス幅を選択可能に構成されている。メモリデバイスとしては、例えば、(1)本実施例で採用するSATAモジュール(AHSI/F)、(2)パラレルI/F(Interface )形式を採るメモリ素子、(3)シーケンシャルI/F形式を採るメモリ素子などに大別されるが、大別されたメモリデバイスごとに、メモリデバイスを具体的に選択可能であり、且つ、データバス幅などを任意に規定できるようになっている。
次に、デバイス区間(SPA0~SPAn)毎に選択されたメモリデバイスとのメモリREAD動作を最適化するべく、所定の動作パラメータを、所定のVDPレジスタRGijに設定する(SP83)。動作パラメータには、チップセレクト信号と、その他の制御信号(READ制御信号など)との動作タイミングを規定する設定値が含まれている。また、シーケンシャルI/F形式を採るメモリ素子が選択された場合には、図19(b)も示す動作を実現するべく、アドレスラッチの出力タイミングや、読出しクロック数なども特定される。
したがって、種類の異なるメモリデバイスを組合せてCGROM55を構成することもできる。但し、本実施例では、SATAモジュールだけを使用してCGROM55を構成し、デバイス区間(SPA0)だけを有効化し、他のデバイス区間(SPA1~SPAn)を無効化している。
何れにしても、ステップSP82~SP83の設定処理が終われば、その設定処理の実効化を図るべく、所定のVDPレジスタRGijに所定値を書込む(SP84)。これは、CGバスの内部回路がステップSP82~SP83の設定処理に対応して動作できるまでに所定の時間を要することを考慮したものであり、内部回路の動作中は、前記したCGバスStatusレジスタ(SP80参照)の値が0となる。
したがって、その後は、CGバスStatusレジスタを繰り返しREADアクセスして(SP85)、Statusレジスタの値が1から0に戻ることを確認して処理を終える(SP86)。なお、所定回数の判定に拘らず、Statusレジスタの値が1から0に戻らない場合に、ステップSP66の処理を終えても良い。但し、その場合CGROMが正常にアクセスできない状態で遊技処理が始まるので、その後、何れかのタイミングでWDT回路58が起動して複合チップ50が異常リセット状態になる。そして、この場合は、再度、パワーオンリセット動作が実行されることになる。
一方、図18のステップSP20の処理が、正常に実行された後は、割込みコントローラINTCや、DMAC回路60や、マルチファンクションタイマユニットMTUなど、CPU回路51の内蔵回路をソフトウェア処理によって個々的に初期化する(SP21)。
次に、マルチファンクションタイマユニットMTUについて、所定のタイマ計測動作を開始させた後(SP22)、内部割込み及び内部割込みについて、所定の動作制御レジスタREGに許可設定値を書込んで割込み許可状態に設定する(SP23)。
その結果、その後は、図18(d)に示す各種の割込みが生じ得ることになる。通常、このタイミングでは、音声プロセッサ27は、その初期化シーケンスを終えているので、図7(c)に示す通り、終了割込み信号IRQ_SND はLレベルに降下している筈である。そのため、図18(c)に示す割込み処理が起動され、演出制御CPU63は、エラーフラグERRを1に初期設定すると共に、アドレス空間CS3をREADアクセスして(SP30)、音声プロセッサ27の所定の音声レジスタSRGの値を取得して、初期化シーケンスが正常に終了しているか否かを判定する(SP31)。
そして、万一、初期化シーケンスが正常に終了していない場合には、演出制御CPU63は、音声プロセッサ27の所定の音声レジスタSRGにリセットコマンドを書込むと共に(SP32)、1に初期設定されているエラーフラグERRを2にセットする(SP33)。このエラーフラグERRは、音声プロセッサ初期化処理(SP26)を実行するか否かを規定しており、エラーフラグERR=1がステップSP26の実行条件となっている。
一方、音声プロセッサ27は、リセットコマンドを受けたことに対応して、終了割込み信号IRQ_SND =Hレベルの状態で、再度、初期化シーケンスを開始し、初期化シーケンスが終われば、終了割込み信号IRQ_SND はLレベルに降下させる。この結果、図18(c)の処理が再実行されることになる。
以上、初期化シーケンスが正常に終了していない例外的な場合について説明したが、通常は、ステップSP31に続いて、ステップSP32の処理が実行され、演出制御CPU63は、所定の音声レジスタSRGに、所定値を書込むことで終了割込み信号IRQ_SND を、LレベルからHレベルに復帰させる(SP34)。
そして、最後に、所定の音声レジスタSRGに所定値を書込むことで、全ての音声レジスタSRGへのREAD/WRITE アクセスを許可する(SP35)。この処理の結果、その後の音声プロセッサ初期化処理(SP26)では、必要な設定処理を実行できることになる。
以上、ステップSP23の割込み許可設定に対応するMaskable Interruptの一例について説明したが、発振器OSC2の発振停止に基づくマスク不能割込み(Non Maskable Interrupt)は、任意のタイミングで起動可能である。先に説明した通り、内蔵CPU(演出制御CPU63)以外の回路の動作クロック(CPUシステムクロック)は、発振器OSC2の出力クロックをPLL(Phase Locked Loop )で周波数逓倍して生成されており、発振器OSC2の発振が停止されれば、その後のVDP回路52の正常動作は不可能である。
一方、演出制御CPU63の動作クロックは、発振器OSC1の出力クロックをPLLで逓倍して生成されており、プログラム処理は継続可能である。しかも、割込み処理プログラムは、内蔵RAM59に格納されている。そこで、演出制御CPU63は、異常事態の発生を音声やランプによって異常報知すると共に(SP28)、WDT回路58にクリア信号を出力し続ける(SP29)。異常報知は、例えば「異常事態が発生しました。至急、係員に連絡して下さい」との音声報知となる。なお、WDT回路58にクリア信号を出力し続けるのは、異常リセット動作を回避するためである。すなわち、発振器OSC1が動作を停止する重大な異常時には、仮に、異常リセット処理を繰り返しても、機器の正常復帰が望めないと考えられるからである。
以上、図18(b)と、図18(c)について説明したので、図18(a)に戻って説明を続ける。ステップSP24では、外付けDRAM54のプログラム領域を保護するため、必要領域を書込み禁止に設定する。次に、電源遮断時に電池で駆動されている時計回路38について、電源遮断時の正常動作を確認すると共に、念のためアラーム割込みについて再設定する(SP25)。
そして、エラーフラグERR=1であることを条件に、音声プロセッサ27の内蔵レジスタ(音声レジスタSRG)に、必要な設定値を書込んで初期化処理を実行する(SP26)。なお、エラーフラグERR=0の場合は、所定時間、エラーフラグERR=1となるまで待機するが、限界時間を超える場合には、WDT回路58を起動させるべく無限ループ処理に移行する。
次に、給電制御回路SPYを制御して、表示装置DS1の起動を準備し、また、VDPレジスタRGijに必要な設定値を書込んで、表示クロックDCK及び表示回路74を初期化する(SP27)。なお、ステップSP27の処理は、詳細には、図21のステップSP50~SP57の処理として示されている。
以上、音声プロセッサから終了割込み信号IRQ_SND を受ける実施例について説明したが、図18(c)の割込み処理を省略するのも好適である。図20は、変形実施例を示しており、終了割込み信号IRQ_SND に代えて、マルチファンクションタイマユニットMTUが生成する1msタイマ割込信号を活用している。
図20は、1msタイマ割込処理の一部を図示したものであり、初期状態がゼロである動作管理フラグFLGの値(0/1/2/3)に基づいて、4段階の動作を実現している。なお、音声プロセッサ27のIRQ_SND 出力端子は、開放状態とし、CPU回路51のIRQ_SND 入力端子は、Hレベルに固定されている。
1mSタイマ割込み処理において、先ず、ステップSP42の処理で、動作管理フラグFLG=0と判定される場合には、音声プロセッサ27の初期化シーケンスが正常終了していることを確認する(SP43)。そして、正常終了している場合には、所定の音声レジスタSRGに所定値を書込むことで割込み信号(IRQ_SND )をクリアさせ(SP46)、動作管理フラグFLGを1にする(SP47)。なお、ステップSP43とSP46の処理は、図18(c)のステップSP31とSP34の処理と同じである。
一方、初期化シーケンスが正常終了していない場合には、所定の音声レジスタSRGにリセットコマンドを書込むことで、音声プロセッサ27に初期化シーケンスを起動させ(SP44)、動作管理フラグFLGをゼロに戻す(SP45)。なお、ステップSP44の処理は、図18(c)のステップSP32の処理に対応している。
通常は、ステップSP47の処理を経て動作管理フラグFLG=1となるので、次の1msタイマ割込みでは、所定の音声レジスタに所定値を書込むことで全ての音声レジスタへのアクセスを許可し(SP48)、動作管理フラグFLG=2に設定する(SP49)。ステップSP48の処理は、図18(c)のステップSP35の処理に対応している。
次に、動作管理フラグFLG=2の1msタイマ割込みでは、図18(a)のステップSP26の場合と同様に、音声プロセッサ27の内蔵レジスタ(音声レジスタSRG)に、必要な設定値を書込んで初期化処理を実行し(SP50)、動作管理フラグFLG=3に設定する。
動作管理フラグFLG=3は、通常の音声制御状態を意味し、必要な音声レジスタSRGに、必要な動作パラメータを設定することで、音声制御を進行させる(SP52)。
以上、音声プロセッサ27の初期化シーケンスの正常終了を、割込み信号(IRQ_SND )に起因する割込み処理で確認する方法(図18(c)のSP31)と、1mSタイマ割込み処理で確認する方法(図20のSP43)について説明したが、これらの方法に、何ら限定されるものではない。例えば、図18のステップSP26の処理の一部として、音声プロセッサ27の初期化シーケンスが正常に終了したか否かを判定するのも好適である。
以上、メイン導入処理の概要(図18のSP20~SP26)について説明したので、以下、図21~22に基づいて、ステップSP27の処理(起動準備処理+初期化処理)の詳細と、メイン本体処理処理(SS1~SS6、及び、ST4~ST14)の動作を説明する。
図21に示す通り、演出制御CPU63は、ステップSP27の処理として、先ず、計時タイマTMを判定して、演出制御CPU63の動作開始(図6(d)のタイミングT1)から1秒経過したことを、WDT回路58にクリア信号を出力しつつ確認する(SP50)。これは、VDP回路52が実質的な動作を開始するまでは、表示装置DS1を非動作状態に維持するためである。また、WDT回路58にクリア信号を出力するので、WDT回路58の起動が確実に防止され、複合チップ50が異常リセットされるなど、ここまでの初期化処理が無駄になるおそれはない(この意義は、以下の待機処理においても同じである)。
次に、演出制御CPU63は、給電制御回路SPYへの制御信号PS1,PS2をLレベルからHレベルに遷移させる(SP51)。この処理は、図6(g)や、図6(h)に示すタイミングT2の動作であり、制御信号PS1,PS2は、その後もHレベルに維持される。
制御信号PS1がHレベルになると、MOSトランジスタQ1がON状態となり、バックライト部BLに電源電圧12Vが給電される。但し、このタイミングT2では、バックライト部BLのドライバDVLのBL_EN 端子とPWM 端子が、共にLレベルであるので、バックライト部BLが発光することはない。
また、制御信号PS2がHレベルになると、MOSトランジスタQ4がON状態となり、液晶表示部MONIに電源電圧5が給電される。但し、このタイミングT2では、バックライト部BLが消灯状態であるので、不自然な画像が表示されるおそれはない。
ステップSP51の処理が終われば、次に、演出制御CPU63は、所定のVDPレジスタRGijへの設定値に基づいて、リフレッシュモードを規定すると共に、内蔵VRAM71のリフレッシュ周期や、行アドレス(リフレッシュアドレス)の初期値を設定して、内蔵VRAM71の初期化処理を実行する(SP52)。
実施例のVRAM71は、DRAM(Dynamic Random Access Memory)で構成されており、メモリセルに蓄えられた電荷は、素子内部の漏れ電流によって徐々に失われる。そこで、本実施例では、例えば、一行ずつリフレッシュする分散リフレッシュ方式を採って、ステップSP52の処理で規定されたリフレッシュ周期で、素子内の全ての行(ROW)をリフレッシュしてメモリセルの電荷消失を未然防止している。したがって、VRAM71において、長時間アクセスされないメモリセルが存在しても、そのデータが消失するおそれはない。なお、リフレッシュモードは、分散リフレッシュ方式に限定されず、集中リフレッシュ方式を採ることもできる。
次に、VDPレジスタRGijに必要な設定値を書込んで、表示クロックDCKを初期化すると共に、表示回路74を初期化する(SP54)。なお、この処理は、該当する内部回路をハードウェアリセットする動作に他ならない。
続いて、給電制御回路SPYへの制御信号STBYをLレベルからHレベルに遷移させる(SP56)。この処理は、図6(i)に示すタイミングT3の動作であり、制御信号STBYのHレベルはその後も維持される。なお、このタイミングT3では、バックライト部BLのドライバDVLに、電源電圧12Vが給電済みであるので(タイミングT2)、ドライバDVLは、動作可能状態となる。但し、制御制御信号PWMは、依然としてLレベルを維持しているので、バックライト部BLが発光することはない。
次に、図16のステップSP4の処理の実効化や、図21のステップSP54の処理の実効化を、所定のVDPレジスタ(ステイタスレジスタSTS)RGijを、Readアクセスすることで確認する(SP57)。具体的には、先ず、ステイタスレジスタSTS(1)によって、図16のステップSP4の処理で設定された表示クロックが安定化していることを確認する。
次に、ステイタスレジスタSTS(2)によって、ステップSP54の処理に対応して、表示回路の初期化が正常に完了していることを確認する。続いて、ステップSP45の処理でデュアルリンク設定されているLVDS回路80について、各部LVDS1/LVDS2の初期化が正常に完了していることを、ステイタスレジスタSTS(3)によって確認する。そして、全ての初期化が正常に完了していることが確認されると、メイン導入処理が終わる(SP57)。
続いて、その後の処理について、プリローダが機能しない実施例に関して説明する。図21~図22(a)に示す通り、メイン本体処理は、CPUリセット後に実行されるVDP初期設定処理(SS1~SS6)と、その後、1/30秒毎に繰り返し実行される定常処理(ST4~ST14)とに区分される。
そして、定常処理(ST4~ST14)は、割込みカウンタVCNTが、VCNT≧2となったタイミングで開始されるので(ST4)、定常処理の動作周期δは、1/30秒となる。この動作周期δは、演出制御CPU63の制御に基づいて間欠動作するVDP回路52について、その実質的な動作周期δに他ならない。なお、判定条件を、VCNT≧2とするのは、定常処理(ST4~ST14)が異常に長引いて、VCNT=2のタイミングを見逃す可能性を考慮したものであるが、VCNT=3となる事態が発生しないよう設計されている。
以上を踏まえてVDP初期設定処理について説明する。図21に示す通り、本実施例では、VDP初期設定処理において、記憶容量48Mバイトの内蔵VRAM71を、適切な記憶容量を有するACC領域(a) と、ページ領域(b) と、任意領域(c) と、に適宜に切り分ける(SS1)。具体的には、ACC領域(a1,a2) と、ページ領域(b) について、各々の領域先頭アドレスと必要な総データサイズを、所定のインデックステーブルレジスタRGijに設定する(SS1)。すると、確保されたACC領域(a1,a2) と、ページ領域(b) には含まれない残余領域が任意領域(c) となる。
ここで、第一と第二のACC領域(a1,a2) と、ページ領域(b) の領域先頭アドレスは、各々の下位11bitが0でなくてはならないが、2048bit単位で任意に選択可能である(1番地=1バイトとして、256番地ごとの選択)。また、総データサイズも、単位サイズの整数倍の範囲で任意に選択される。特に限定されないが、ACC領域(a) の単位サイズは、2048bit、ページ領域(b) の単位サイズは、512kbitである。
このように本実施例では、ACC領域(a1,a2) と、ページ領域(b) の領域設定に一定の条件を設けるが、それは、メモリ容量が限られている内蔵VRAM71について、可能な限り無駄領域を排除する一方で、VDP回路52の内部動作の円滑化を図るためである。すなわち、内蔵VRAM71の記憶容量を無闇に増加させると、製造コストの高騰やチップ面積の大型化が懸念される一方、無駄領域を完全に排除するような自由な領域設定を認めると、内部処理が煩雑化して、VRAMアクセスの処理時間を短縮化できないためである。なお、以下に説明するインデックス空間の確保に、一定の制約を設けるのも同じ理由による。
以上を踏まえて説明を続けると、ステップSS1の処理に続いて、ページ領域(b) と、任意領域(c) について、必要なインデックス空間IDXiを確保する(SS2)。具体的には、所定のインデックステーブルレジスタRGijに、必要な情報を設定することで、各領域(b)(c)のインデックス空間IDXiを確保する。
例えば、ページ領域(b) にインデックス空間IDXiを設ける場合には、任意のインデックス番号iに対応して、任意の水平サイズHxと、任意の垂直サイズWxの倍数情報(単位空間に対する縦横の倍数情報)が、所定のインデックステーブルレジスタRGijに設定される(SS2)。
先に説明した通り、ページ領域(b) のインデックス空間IDXiは、水平サイズ128×垂直サイズ128ラインを単位空間としており、また、1ピクセルは32bitの情報で特定されるので、水平サイズHxと垂直サイズWxの設定に基づいて、データサイズ(bit長)=32×128×Hx×128×Wxのインデックス空間IDXiが確保されたことになる。なお、ページ領域(b) のインデックス空間IDXiの先頭アドレス(空間先頭アドレス)は、内部的に自動付与される。
また、任意領域(c) にインデックス空間IDXiを設ける場合には、任意のインデックス番号iに対応して、任意の先頭アドレス(空間先頭アドレス)STxと、任意の水平サイズHxの倍数情報が、所定のインデックステーブルレジスタRGijに設定される(SS2)。ここで、任意とは、所定条件を前提とするもので、水平サイズHxは256bit単位で任意決定され、先頭アドレスSTxの下位11bitは0であって、2048bit単位で任意決定される。先に説明した通り、任意領域の垂直サイズは、2048ラインに固定化されるので、水平サイズHxの設定に基づいて、先頭アドレスSTx以降には、データサイズ(bit長)=2048×Hxのインデックス空間が確保されたことになる。
具体的には、メイン表示装置DS1のフレームバッファFBaとして、水平サイズ1280×垂直ライン2048の一対のインデックス空間が、各々インデックス番号を特定して、一又は複数の所定のインデックステーブルレジスタRGijに設定され、サブ表示装置DS2のフレームバッファFBbとして、水平サイズ480×垂直ライン2048の一対のインデックス空間が、各々インデックス番号を特定して、一又は複数の所定のインデックステーブルレジスタRGijに設定される。なお、もし、表示装置の水平ピクセル数が、256bit/32bitの整数倍に一致しない場合には、各インデックス空間の水平サイズを、その表示装置の水平ピクセル数より大きく、且つ、256/32=8の整数倍となる値に設定して、無駄なメモリ領域の発生を最小限に抑制する。
以上のように、ページ領域(b) と、任意領域(c) について、必要なサイズ情報やアドレス情報を所定のインデックステーブルレジスタRGijに各々設定することで、必要個数のインデックス空間IDXiが生成される(SS2)。そして、この設定処理(SS2)に対応して、各インデックス空間IDXiのアドレス情報やサイズ情報を特定するインデックステーブルIDXTBLが自動的に構築される。図12(a)に示す通り、インデックステーブルIDXTBLには、各インデックス空間IDXiの先頭アドレスが、その他の必要情報と共に記憶されており、VDP回路52内部でのデータ転送時や、外部記憶リソース(Resource)からのデータ取得時に参照される(図13参照)。なお、AAC領域(a) のインデックス空間IDXiは、必要時に自動生成され、自動消滅するので、ステップSS2の設定処理は不要である。
図12(a)(b)に示す通り、任意領域(c) には、各一対のフレームバッファFBaとFBbが確保され、各々、インデックス番号が付与されている。Zバッファを使用しない実施例では、フレームバッファFBaとして、インデックス番号255,254が付与された、一対のインデックス空間255,254が確保される。また、フレームバッファFBbとして、インデックス番号252,251が付与された、一対のインデックス空間252,251が確保される。なお、本実施例では、任意領域(c) に、インデックス番号0の作業領域(インデックス空間0)も確保されている。
また、本実施例では、ページ領域(a) に、IPストリーム動画のデコード領域となる必要個数のインデックス空間IDXiを確保し、インデックス番号iを付与することにしている。但し、初期的には、背景動画(IPストリーム動画)のためのインデックス空間IDX0だけを確保している。そして、画像演出(変動演出や予告演出)における必要性に応じて、インデックステーブルレジスタRGijへの設定処理や、ディスプレイリストDLの指示コマンドに基づいて、ページ領域(a) のインデックス空間IDXjを増やし、その後、不要になれば、そのインデックス空間IDXjを開放するようにしている。すなわち、図12(a)は、定常動作時のインデックステーブルIDXTBLを示している。
なお、ACC領域(a) のインデックス空間は、ディスプレイリストDLに記載されている指示コマンドに基づいて、必要時に自動的に生成され、インデックステーブルIDXTBLには、自動生成されたインデックス空間IDXjの先頭アドレスや、その他の必要情報が自動設定される。本実施例では、このAAC領域(a) を、静止画その他のテクスチャのデコード領域として使用している。
インデックス空間を確保する上記の動作は、もっぱら、制御レジスタ群70に含まれるインデックステーブルレジスタRGijへの設定動作によって実現されるが、ステップSS1~SS2の処理に続いて、他のVDPレジスタRGijに、必要な設定動作(SS3)を実行することで、図30~図31に示すVDP回路52の定常動作(間欠動作)を可能にしている。
本実施例において、必要な設定処理(SS3)には、少なくともSS30~SS39が含まれている。なお、ステップSS30~SS37は、何ら処理の順番を限定せず、以下の説明順序に拘わらず、任意の順番で実行することができる。
本実施例では、先ず、表示回路74の動作を規定する所定の表示レジスタRGijに、所定の動作パラメータ(ライン数と画素数)を書込むことで、各表示装置DS1,SD2について表示ライン数と水平画素数を設定する(SS30)。本実施例の場合、メイン表示装置DS1の水平画素数は、1280ドットであり、表示ライン数は1024行である。また、サブ表示装置DS2の水平画素数は、480ドットであり、表示ライン数は80行である。ステップSS34の設定処理の結果、各フレームバッファFBa,FBbにおいて、表示回路74A,74BがREADアクセスすべき有効データ領域(図22(e)の破線部)の縦横寸法が、特定されることになる。
次に、表示回路74の動作を規定する所定の表示レジスタRGijに、所定の動作パラメータ(THc,WTh)を書込むことで、各表示装置DS1,SD2について、水平周期THのサイクル数THcと、水平待機時間WThを設定する(SS31)。また、所定の表示レジスタRGijに、所定の動作パラメータ(TVl,WTv)を書込むことで、各表示装置DS1,SD2について、垂直周期TVのライン数TVlと、垂直待機時間WTvを設定する(SS32)。
図15に関して説明した通り、メイン表示装置DS1については、水平周期THのサイクル数THc=1662、垂直周期TVのライン数TVl=1083と設定される。また、水平待機時間WTh=382、垂直待機時間WTv=59ラインと設定される。一方、サブ表示装置DS2については、例えば、水平周期THのサイクル数THc=519、垂直周期TVのライン数TVl=867と設定され、水平待機時間WTh=39、垂直待機時間WTv=67ラインと設定される。なお、THc-WTh=519-39=480、TVl-WTv=867-67=800であり、サブ表示装置のピクセル数(横480×縦800)に整合する。
何れにしても、図16のステップSP4の処理によってドットクロックDCKの周波数Fdot(=108MHz)が決定され、また、ステップSS30~SS32の処理によって、メイン表示装置DS1について、水平周期THのサイクル数THc(=1662)と、垂直周期TVのライン数TVl(=1083)が規定された結果、一フレームの表示期間が、THc×TVl/Fdotと確定されることになる。具体的には、一フレームの表示期間は、1083×1662/108MHz=16.667mSであり、フレームレートFRが1/60秒であると確定される。
なお、サブ表示装置DS2についても、例えば、ドットクロックDCKの周波数Fdot=27MHz、水平周期THのサイクル数THc=519、及び、垂直周期TVのライン数TVl=867に基づいて、519×867/27MHz=16.66mSと確定される。
次に、本実施例では、サブ表示装置DS2に関して、所定の表示レジスタRGijに、水平周期信号HSのパルス幅と、パルス立上りエッジのVブランク開始タイミングからのサイクル数の設定する(SS33)。また、サブ表示装置DS2に関して、垂直周期信号VSのパルス幅と、パルス立上りエッジのVブランク開始タイミングからのサイクル数の設定する(SS34)。
先に説明した通り、メイン表示装置DS1は、水平同期信号HSや垂直同期信号VSを必要としないので、メイン表示装置DS1に対する上記の処理(SS33~SS34)は不要である。但し、ステップSS33~SS34の設定処理を省略した場合には、電源リセット時に設定されたデフォルト値が機能するので、実際には、表示装置74Aも、水平同期信号HSや垂直同期信号VSを出力することになる。
デフォルト値によれば、例えば、Vブランク開始タイミングから16クロック後にアクティブレベルとなる、パルス幅40クロック分の水平同期信号HSが出力され、Vブランク開始タイミングに同期してアクティブレベルとなる、パルス幅3ライン分の垂直同期信号VSが出力される。
この動作は、メイン表示装置DS1に対して、水平待機時間WTh=382クロックの間に、水平フロントポーチHPv=16、パルス幅PWh=40、水平バックポーチBPv=326の水平同期信号HSが出力され、また、垂直待機時間WTv=59ラインの間に、垂直フロントポーチHPv=0、パルス幅PWv=3、垂直バックポーチBPv=56の垂直同期信号VSが出力されることを意味する。但し、メイン表示装置において、これらの同期信号が無視されることは前記した通りである。
なお、デフォルト値に基づく同期信号HS,VSが出力されるのを防ぐため、水平同期信号HSや垂直同期信号VSを出力しないよう、所定のシステム制御レジスタRGijに設定する構成を採っても良い。このようなマスク設定を設けた場合には、VDP回路52の水平同期信号HSの出力端子や、垂直同期信号VSの出力端子は、Hレベル又はLレベルの固定値を維持することができる。
続いて、所定のシステム制御レジスタRGijに、Vブランク割込みを許可すると設定する(SS35)。この結果、本実施例では、16.667mS=1/60秒ごとに生じるVブランク開始タイミングに対応して、図22(c)に示すVBLANK開始割込みが生じることなる。このVブランク割込みタイミングは、演出制御CPU63の定常処理(ST5~ST14)の開始タイミングを規定するとともに、表示回路74A,74Bにとっての表示期間の開始タイミング(直前の表示期間の終了タイミング)を意味する。
次に、所定の表示レジスタRGijに、所定の動作パラメータ(アドレス値)を書込んで、各フレームバッファFBa,FBbについて、垂直表示開始位置と水平表示開始位置を特定する(SS36)。その結果、ステップSS34の処理で縦横寸法が特定された有効データ領域が、フレームバッファFBa,FBb上に確定されることになる。ここで、垂直表示開始位置と水平表示開始位置は、各インデックス空間における相対アドレス値であって、図22(e)に示す実施例では、表示開始位置は(0,0)となっている。
ここで、「表示領域」とは、表示回路74A,74Bが、表示装置DS1,DS2を駆動するために、画像データを読み出すべきインデックス空間(フレームバッファFBa,FBb)を意味し、各々ダブルバッファ構造であるフレームバッファFBa,FBbにおけるダブルバッファの何れか一方を意味する。もっとも、表示回路74A,74Bが、実際に画像データを読み出すのは、表示領域(0)又は表示領域(1)における、ステップSS30とステップSS36で特定された「有効データ領域」に限定される。
次に、メイン表示装置DS1を駆動する表示回路74Aに関する表示レジスタRGij(DSPAINDEX )と、サブ表示装置DS2を駆動する表示回路74Bに関する表示レジスタRGij(DSPBINDEX )に、各々、「表示領域(0)」と「表示領域(1)」を設定して、各表示領域を定義する(SS37)。
何ら限定されないが、本実施例では、フレームバッファFBaについて、VRAM任意領域(c) におけるインデックス番号254のインデックス空間254を「表示領域(0)」と定義し、VRAM任意領域(c) におけるインデックス番号255のインデックス空間255を、「表示領域(1)」と定義している(SS37)。
また、フレームバッファFBbについて、VRAM任意領域(c) におけるインデックス番号251のインデックス空間251を「表示領域(0)」とし、VRAM任意領域(c) におけるインデックス番号252のインデックス空間252を「表示領域(1)」としている(SS37)。なお、「表示領域」を初期処理(SS3)において定義することは、特に限定されず、動作周期δ毎に、表示回路74が画像データをREADアクセスすべきインデックス空間(表示領域)をトグル的に切換えても良い。なお、フレームバッファFBaと、フレームバッファFBbについて、各々の表示領域(0)と表示領域(1)を、このタイミングでゼロクリアするのも好適であり、この場合には、表示装置に不自然な画像が表示されることがない。
本実施例では、以上の処理(SS30~SS37)を含んだ初期設定が終われば、次に、所定のシステム制御レジスタRGijへの設定値が、その後、ノイズなどの影響で変更されないよう、第1種の禁止設定レジスタRGijに、所定の禁止値を設定している(第1の禁止設定SS38)。
ここで、今後の書込みが禁止される設定値には、(1) 表示装置DS1,DS2の表示クロックDCKに関する設定値、(2) LVDSのサンプリングクロックに関する設定値、(3) 出力選択回路79の選択動作に関する設定値、(4) 複数の表示装置DS1,DS2の同期関係(表示回路74Bが表示回路74Aの動作周期に従属すること)などが含まれている。なお、第1の禁止設定を解除するソフトウェア処理は存在するが、本実施例では使用していない。但し、必要に応じて使用するのも好適である。
次に、第2種の禁止設定レジスタRGijに、所定の禁止値を設定することで、初期設定系のVDPレジスタRGijについて書込み禁止設定をしている(第2の禁止設定SS39)。ここで、禁止設定されるレジスタには、ステップSP4や、ステップSS30~SS37に係るVDPレジスタRGijが含まれている。
一方、第3種の禁止設定レジスタRGijに、所定の禁止値を設定することで、ステップSS1~SS3の設定処理に関するVDPレジスタを含んだ、多数のVDPレジスタへの禁止設定も可能である(第3の禁止設定)。但し、本実施例では原則として使用しない。何れにしても、第2の禁止設定や、第3の禁止設定は、所定の解除レジスタRGijに、解除値を書込むことで任意に解除可能であり、定常動作中に設定値を変更することも可能となる。
以上の処理が終われば、次に、図21のステップSP52の処理で、リフレッシュ周期を規定した内蔵VRAM71の初期化終了について、ステイタスレジスタ(4)を参照して、動作が安定していること(初期化の正常終了)を確認する(SS40)。
以上の処理によって、内蔵VRAM71と、表示回路74と、LVDS回路30の全てが、正常に初期化処理を終えたことが、ステイタスレジスタ(1)~(4)の値に基づいて確認されるので、次に、所定の表示レジスタRGij(DSPACTL/DSPBCTL )に規定値を書込むことで、表示回路74A,74Bの動作を開始させ(SS4a)、また、所定のシステム制御レジスタRGij(SYSDSPLVDS1MD/SYSDSPLVDS2MD )に規定値を書込むことで、表示回路74Aからの出力データをLVDS回路80(LVDS1/LVDS2 )から出力させる(SS4b)。
この動作は、図6(e)のタイミングT4の処理に他ならず、本実施例では、タイミングT2から所定時間τ(例えば20mS)以内に、ステップSS4a~SS4bの処理が実行されるようプログラム設計されている。そして、表示回路74A,74BとLVDS回路80の動作開始(タイミングT4)に対応して、計時タイマTMをゼロから再始動させる(SS4c)。なお、ステップSS4a~SS4bの処理手順は、必ずしも、限定されない。仮に、ステップSS4a~SS4bの処理を逆順に実行しても、LVDS回路80から、せいぜい一瞬だけ無為な画像データが出力されるに過ぎず、しかも、バックライト部BLが消灯しているので何の問題もない。
何れにしても、本実施例では、上記のステップSS4a~SS4bの処理に対応して、表示回路74は、1/60秒ごとVブランク開始状態となり、また、LVDS回路(LVDS1/LVDS2 )80が動作することで、図15に示す表示動作が繰り返されることになる。なお、図15において、〇印で示す表示動作の開始タイミング、及び表示動作の終了タイミングは、Vブランク開始タイミングを示している。
そして、このVブランク開始タイミングに基づいて、表示回路74の動作における水平基準点TH0(=水平基準時刻)と、垂直基準点(=垂直基準時刻)TV0が規定されることになり、表示回路74は、水平基準点TH0から水平待機時間WThを経過するまで、表示装置の各ピクセルに対応する画像データを出力しないで待機する。同様に、表示回路74は、垂直基準点TV0から、垂直待機時間WTvを経過するまで、表示装置の各ピクセルに対応する画像データを出力しないで待機するよう構成されている。
また、表示回路74Bは、表示装置74Aに同期して動作するので(図16のSP4)、サブ表示装置DS2についての表示動作の開始と終了タイミングも、メイン表示装置DS1のタイミングと同じである。したがって、サブ表示装置DS2に対するフレーム周期(519×867/27)は、サブ表示装置DS2に対するフレーム周期(1083×1662/108)より短く設定されることで、Vブランク開始時には、サブ表示装置DS2の更新処理が完了しているよう設定される。
以上の意義を有するステップSS4の処理が終われば、次に、計時タイマTMに基づいて300mS経過するのを待ち(SS5)、その後、給電制御回路SPYへの制御信号PWMをLレベルからHレベルに遷移させる(SS6)。その結果、バックライト部BLは、発光状態となり、これ以前に動作を開始している液晶表示部MONIは、表示回路74Aから受ける画像データに基づいて表示動作を開始する。なお、このタイミングでは、ディスプレイリストが発行されていないので、VRAMの内容がそのまま表示されることは先に説明した通りである。そこで、ステップSS5~SS6の処理を、タイマ割込み処理に委ねるのも好適であり(破線参照)、このような構成を採ると、タイミングT5の時点では、ディスプレイリストDLが発行済みとなるので、表示装置DS1には、所定の初期画面が表示されることになる。
続いて、メイン本体処理の残部であって、所定時間毎に繰り返し実行される定常処理について図22に基づいて説明する。図22に示す通り、演出制御CPU63の動作は、メイン制御処理(a)と、1mS毎に起動するタイマ割込み処理(b)と、制御コマンドCMDを受けて起動する受信割込み処理(不図示)と、表示装置DS1のVブランク(垂直帰線期間)の開始タイミングに生じるVBLANK信号を受けて起動するVBLANK割込み処理(c)と、動作フリーズ時や不合理な指示コマンド検出時に生じる描画異常割込み処理(d)と、を含んで構成されている。なお、20μS割込み処理については説明を省略する。
受信割込み処理では、主制御部21から受けた制御コマンドCMDを、メイン制御処理(ST13)において参照できるよう、所定の受信バッファに記憶して処理を終える。また、VBLANK割込み処理(図22(b))では、VBLANK割込み毎に、割込みカウンタVCNTをインクリメントし(ST15)、メイン制御処理の開始タイミングでは、割込みカウンタVCNTの値に基づいて、1/30秒の動作開始タイミングを把握した上で、割込みカウンタVCNTをゼロクリアしている(ST4)。
一方、タイマ割込み処理には、図22(b)に示す通り、原点センサ信号など取得を取得してモータ演出を進行させる処理(ST18)と、ランプ演出の進行処理(ST19)と、が含まれている。ランプ演出やモータ演出は、全ての演出動作を一元管理する演出シナリオに基づいて制御されており、演出カウンタENが管理する演出開始時に達すれば、演出シナリオ更新処理(ST11)において、モータ駆動テーブルやランプ駆動テーブルが特定されるようになっている。
そして、その後は、特定されたモータ駆動テーブルに基づいてモータ演出が進行し、特定されたモータ駆動テーブルに基づいてランプ演出が進行することになる。先に説明した通り、ステップST18の動作時に、DMAC回路(第1と第2のDMAチャンネル)60が機能する実施例もある。なお、モータ演出は、1mS毎に進行するが、ランプ演出は、1mSより長い適宜なタイミングで進行する。
一方、図22(d)に示す通り、描画異常割込み処理では、描画回路76の動作状態を示すステイタスレジスタRGijをREADアクセスして、割込み原因を特定する。具体的には、(1) 異常な指示コマンドの検出(ビット化け)による描画異常割込みか、(2) 描画回路76の動作異常(フリーズ)による描画異常割込みかを特定する(ST16a)。そして、異常な指示コマンドの検出に基づく描画異常割込みである場合には、所定のシステム制御レジスタRGijに、所定値を書き込むことで、描画回路76を初期化する(ST16b)。この動作は、図7(b)に示すリセット経路4Bの個別リセット動作に他ならない。
次に、個別リセット動作の正常終了を、所定のステイタスレジスタRGijで確認した後、描画回路76の動作を規定する一群の動作パラメータを所定の描画レジスタRGijに再設定して処理を終える(ST16c)。そして、戻り先アドレスを記憶するスタック領域を調整した後(割込み処理後の戻り先アドレスを消去する開放処理)、ステップST13の処理に移行させる(ST16c)。
一方、描画回路76の動作異常に基づく描画異常割込みの場合には、無限ループ処理に移行させることで(ST16d)、WDT回路58を起動させ、複合チップ50全体をリセットする。なお、CPU回路51をリセットしたくない場合には、所定のキーワード列をパターンチェック回路CHKに出力して、リセット信号RSTによってVDP回路52だけをリセットしても良い(図7(b)参照)。この場合には、VDP回路52のリセット動作の正常終了を確認した後、ステップST4やST13の処理に移行させる。なお、可能な限り制御コマンドCMDの読み落しを回避するためには、他の場合も含め、ステップST4より、ステップST13に移行される方が良い。
複合チップ50全体をリセットすると、それまでの演出が消滅して、演出制御が完全に初期状態(電源投入状態)に戻るが、VDP回路52だけをリセットする場合には、VDP回路52のリセット動作が完了するまで、所定の待機時間は生じるものの、一連の演出制御を継続させることができる。なお、演出制御CPU63は、画像演出、ランプ演出、及び、音声演出を統一的に制御しているので、各演出に不自然なズレが生じることもない。
なお、以上説明したステップSS1~SS3の初期設定処理は、VDPレジスタRGijのレジスタアドレス値と、そのレジスタRGijへの設定値とを対応させた初期値設定テーブルSETTABLE(図36参照)に基づいて実行される。以上、初期設定処理について説明したので、次に、定常処理(ST4~ST14)を説明する前に、演出制御CPU63によって制御されるVDP回路52の定常動作(間欠動作)について図30(a)及び図31(b)に基づいて概略的に説明しておく。
VDP回路52の間欠動作は、図30や図31に示す通りであり、プリローダ73を使用しない実施例では、図30(a)に示すように、演出制御CPU63が完成させたディスプレイリストDLiは、その動作周期(T1)で、描画回路76に発行され、描画回路76はディスプレイリストDLiに基づく描画動作によって、フレームバッファFBa,FBbに、画像データを完成させる。そして、フレームバッファFBa,FBbに完成された画像データは、次の動作周期T1+δに、表示回路74が表示装置DS1,DS2に出力することで、その後の、表示装置DS1,DS2の描画動作に基づき、遊技者が感知する表示画面となる。
一方、プリローダ73を使用する実施例では、図31(a)に示すように、演出制御CPU63が完成させたディスプレイリストDLiは、その動作周期(T1)で、プリローダ73に発行され、プリローダ73は、ディスプレイリストDLiを解釈して、必要な先読み動作を実行すると共に、ディスプレイリストDLiの一部を書き換えて、書換えリストDL’を完成させる。なお、先読みされたCGデータと書換えリストDL’は、DRAM54の適所に格納される。
次に、描画回路76は、その次の動作周期(T1+δ)で、DRAM54から書換えリストDL’を取得し、書換えリストDL’に基づく描画動作によって、フレームバッファFBa,FBbに、画像データを完成させる。そして、フレームバッファFBa,FBbに完成された画像データは、更にその次の動作周期(T1+2δ)で、表示回路74が表示装置DS1,DS2に出力することで、その後の表示装置DS1,DS2の描画動作に基づき、遊技者が感知する表示画面となる。
以上、VDP回路52の間欠動作について概略的に説明したが、上記した図30~図31の動作を実現するため、演出制御CPU63は、初期処理(SS1~SS3)の後、割込みカウンタVCNTの値を繰り返し参照して、動作開始タイミングに達するのを待ち、動作開始タイミング(一つ飛びのVブランク開始タイミング)に達すれば、割込みカウンタVCNTをゼロクリアする(ST4)。
その後、定常動作を開始するが、本実施例では、最初に、定常動作を開始すべき動作開始条件を満たしているか否かを判定する(ST5)。なお、この判定タイミングは、図30~図31に記載のT1,T1+δ、T1+2δ、・・・・のタイミング、つまり、表示装置DS1の垂直帰線期間(VBLANK)の開始タイミングである。なお、表示装置DS2の表示タイミングは、表示装置DS1の表示タイミングに従属するよう、初期設定(ST3)時に設定されている。
垂直帰線期間(VBLANK)の開始タイミングで判定される動作開始条件は、プリローダ73を活用するか否かで異なるので、先ず、プリローダ73を活用しない実施例(図22)について説明する。この場合は、本来、図30(a)のタイムチャートに示す通りにVDPの内部動作が進行するよう、回路構成やプログラムが設計されている。すなわち、動作周期(T1)で完成されたディスプレイリストDL1に基づき、描画回路76は、その動作周期中(T1~T1+δ)に、描画動作を終える筈である。しかし、例えば、図30(a)の動作周期(T1+2δ)で完成されたディスプレイリストDL3のように、その動作周期中(T1+2δ~T1+3δ)に、描画動作を終わらない場合も無いとは言えない。また、表示回路74に関して、表示タイミングに対して、表示データの生成が間に合わないUnderrun異常が生じている可能性も無くはない。
ステップST5の判定処理は、かかる事態を考慮したのであり、演出制御CPU63は、描画回路76の動作状態を示すステイタスレジスタRGij(制御レジスタ群70の一種)をアクセスして、ステップST5のタイミングで、描画回路76が、必要な動作を終えているか否かと、Underrun異常の有無を判定する。なお、Underrun異常の有無は、アンダーランカウンタURCNTa~URCNTcに基づいて判定される。また、プリローダ73を活用しない実施例では、例えば、図30(a)のタイミングT1+δでは、描画回路76に関する描画レジスタのステイタス情報をREADアクセスして、ディスプレイリストDL1に基づく描画動作が終わっていることを確認する。
そして、動作開始条件を満たさない場合(異常/不適合)には、異常回数をカウントする異常フラグERをインクリメントして、ステップST6~ST8処理をスキップする。異常フラグERは、その他の重大異常フラグABNと共に、ステップST9やST10の処理で判定され、重大異常フラグABNがリセット状態である前提において、連続異常回数が多くない場合(ER≦2)には、正常時と同様に、演出コマンド解析処理を実行する(ST13)。
Underrun異常時の場合も、同様に、ステップST6~ST8処理をスキップする。そして、所定のシステム制御レジスタRGijに、所定のクリア値を書込むことで、表示クロックDCK(周波数)と表示回路74を初期化する(ST10c)。そして、この初期化処理の正常終了を確認した後、表示クロックDCKの周波数や、表示回路74の動作を規定する一群のシステム制御レジスタRGijの値を、規定値に再設定した上で(ST10c)、演出コマンド解析処理を実行する(ST13)。
演出コマンド解析処理(ST13)では、主制御基板21から制御コマンドCMDを受けているか否かを判定し、制御コマンドCMDを受けた場合には、その制御コマンドCMDを解析して必要な処理を実行する(ST13)。ここで、必要な処理には、変動演出の開始を指示する制御コマンドCMDに基づく新規の変動演出の開始準備処理や、エラー発生を示す制御コマンドCMDに基づくエラー報知の開始処理が含まれる。続いて、WDT回路にクリアパルスを出力して(ST14)、ステップST4の処理に戻る。
以上、軽微なUnderrun異常時や、動作開始条件が不適合の場合であって、異常フラグERがER≦2である場合について説明したが、このような場合には、その動作周期では、表示回路74が読み出す表示領域をトグル切換える処理(ST6)や、ディスプレイリストの作成処理(ST7)がスキップされ、且つ、演出シナリオが進行しないことになる(ST8~ST12参照)。これは、不完全な状態のフレームバッファFBa,FBbの画像データを出力させないためである。そのため、例えば、図30(a)の動作周期(T1+3δ)では、画像演出が進行せず、元の画面(DL2に基づく画面)が再表示されるフレーム落ちが生じる。
ここで、フレーム落ちを回避するため、動作開始条件が成立するまで待機する構成も考えられる。しかし、演出制御CPU63が実行すべき制御処理(ST6~ST12)は数多く、各々の処理時間を確保する必要があるので、本実施例では、動作開始条件を満たさない場合にフレーム落ちを生じさせている。
但し、フレーム落ちが生じたとしても、割込み処理(図22(b))によって進行するランプ演出やモータ演出と比較して、1/30~2/30秒程度、画像演出の進行が遅れるだけであり、これに遊技者が気付くことはない。しかも、フレーム落ち時には、演出カウンタENの更新処理を含んだ演出シナリオ処理(ST11)や、音声進行処理(ST12)も合わせてスキップされるので、その後に開始されるリーチ演出や予告演出や役物演出において、画像演出、音声演出、ランプ演出、及びモータ演出などの開始タイミングがずれるおそれはない。
すなわち、演出シナリオでは、画像演出、音声演出、ランプ演出、モータ演出の開始タイミングと、その後に実行すべき演出内容を一元的に管理しており、正常時に限り更新される演出カウンタENによって、開始タイミングを制御しているので、各種の演出の同期が外れることはない。例えば、爆発音と、爆発画像と、役物移動と、ランプフラッシュ動作を複合した演出動作がある場合、フレーム落ちが生じた後であっても、上記した各演出動作は正しく同期して開始される。
以上、比較的軽微な異常時について説明したが、重大異常フラグABNがセット状態である場合や、連続異常回数が多い場合(ER>2)や、繰り返しUnderrun異常が生じる場合には、ステップST10の判定の後、無限ループ状態としている(ST10b)。その結果、WDT回路58の計時動作が進行して、演出制御CPU63を含んだ複合チップ50は、異常リセットされ、その後、初期処理(SS1~SS3)が再実行されることで、異常事態発生の根本原因の解消が期待される。
なお、このリセット動作は、WDT回路58が起動して実行されるので、CPU回路51も含め複合チップ50全体がリセット状態となる(図7(b))。そこで、CPU回路51のリセットを回避するべく、演出制御CPU63が、所定のキーワード列(例えば1バイトデータ3個)をパターンチェック回路CHKに出力して、リセット信号RSTをVDP回路52に出力するのも好適である(図36のST100参照)。この場合も、VDP回路52のリセット動作の正常終了を確認した後(ST101)、ステップST4やST13の処理に移行させることになる。
何れにしても、この異常時には、音声回路SNDも合わせ異常リセットされるので、画像演出、音声演出、ランプ演出、モータ演出は、全て初期状態に戻ることになる。但し、これらのリセット動作は、主制御部21や払出制御部25には、何の影響も与えなので、大当り状態の消滅や、賞球の消滅のような事態が発生するおそれはない。
以上、異常事態について説明したが、実際には、軽微な場合も含め上記した異常が発生することは殆どなく、ステップST5の処理の後、所定の表示レジスタRGij(DSPACTL /DSPBCTL)への設定に基づき、表示回路74Aと表示回路74Bが読み出すべき画像データを記憶するフレームバッファFBa,FBbの「表示領域」をトグル的に切り換える(ST6)。先に説明した通り、「表示領域(0)」と「表示領域(1)」は、予め初期処理において定義されているので(ST3)、ステップST6の処理では、フレームバッファFBa,FBbについて、今回の「表示領域」が、表示領域(0)/表示領域(1)の何れであるかを特定する。
このステップST6が実行されることで、表示回路74Aは、インデックス空間254(表示領域(0))と、インデックス空間255(表示領域(1))から、動作周期δ毎に、交互に画像データを読み出して表示装置DS1を駆動することになる。同様に、表示回路74Bは、インデックス空間251(表示領域(0))と、インデックス空間252(表示領域(1))から、動作周期δ毎に、交互に画像データを読み出してサブ表示装置DS2を駆動することになる。なお、表示回路74が実際にREADアクセスするのは、表示領域(0)/表示領域(1)における有効データ領域に限定されるのは先に説明した通りである。
何れにしても、本実施例では、動作周期毎に「表示領域」が切り替わるので、表示回路74A,74Bは、直前の動作周期で描画回路76が完成させた画像データについて、表示装置DS1,DS2への出力処理を開始することになる。但し、ステップST5の処理は、メイン表示装置DS1の垂直帰線期間(Vブランク)の開始時から開始されるので、実際には、垂直帰線期間が完了してから画像データの出力処理が開始されることになる。図30(a)において、表示回路の欄に示す矢印は、この出力処理の動作周期を示している。
以上のような意義を有するステップST6の処理が終われば、演出制御CPU63は、続いて、次の動作周期で、表示回路74が表示装置に出力するべき画像データを特定したディスプレイリストDLを完成させる(ST7)。特に限定されないが、この実施例では、RAM59のリストバッファ領域(DLバッファBUF)を確保し、そこにディスプレイリストDLを完成させている(図13参照)。
ディスプレイリストDLは、一連の指示コマンドを、適宜な順番で列記して構成され、EODL(End Of DL )コマンドを記載して終わるよう構成されている。そして、本実施例では、データ転送回路72、描画回路76、プリローダ73の円滑な動作を実現するべく、EODLコマンドを含む全ての指示コマンドを、コマンド長が32bitの整数N倍(N>0)の指示コマンドだけに限定している。なお、32bitの整数N倍で構成された指示コマンドに、無意ビット(Don't care bit)も含んで良いことは先に説明した通りである。
このように、実施例のディスプレイリストDLは、コマンド長が32bitの整数N倍(N>0)の指示コマンドだけで構成されているので、ディスプレイリストDL全体のデータボリューム値(データ総量)は、必ず、コマンド長の最小単位(32bit=4バイト)の整数倍となる。更に、本実施例では、データ転送回路72の最低データ量Dminを考慮して、ディスプレイリストDLのデータボリューム値を、最低データ量Dminの整数倍(1以上)であって、且つ、指示コマンドの最小単位(4バイト)の整数倍となるよう調整している。例えば、Dmin=256バイトであれば、ディスプレイリストDLのデータボリューム値は、256バイト、512バイト・・・の何れかの値に調整される。
ここで、演出内容の複雑さに応じて、適宜に、256バイトか、又は512バイトに調整するのも好適であるが、本実施例では、表示装置が二個であり、サブ表示装置DS2はそれほど複雑な画像演出を実行させないことを考慮して、ディスプレイリストDLのデータボリューム値を、常に、256バイトに調整している。
もっとも、この手法は、何ら限定されず、表示装置が三個以上になる場合や、サブ表示装置DS2も含め複雑な画像演出を実行する遊技機の場合には、512バイト又は、768バイトに調整される。また、通常の演出時は、ディスプレイリストDLのデータボリューム値を256バイトに調整し、特別な演出を実行する場合に限り、ディスプレイリストDLのデータボリューム値を、512バイト又は、768バイトに調整するのも好適である。
但し、本実施例の場合には、ディスプレイリストDLのデータボリューム値は、各動作周期δにおいて、予め規定された所定バイト長(256バイト)に調整される。調整手法としては、32bit長のEODLコマンドの後に、不足領域を補填する32bit長のNOP (No Operation)コマンドを埋める簡易手法(A)か、或いは、不足領域を32bit長のNOP コマンドで埋めた後、最後に32bit長のEODLコマンドを記載する標準手法(B)が考えられる。なお、ディスプレイリストDLのデータボリューム値(データ総量)を全く調整することなくEODLコマンドで終結させ、データ転送回路72の動作時に、ダミーデータを付加的に転送して、最低データ量Dminの整数倍の転送量を確保する無調整手法(C)も考えられる。
ここで、標準手法(B)を採る場合には、最初、コマンドカウンタCNTを規定値(256バイトに対応する64-1)に初期設定し、DLバッファ領域BUFに、有意な指示コマンドを書き込むごとに、コマンドカウンタCNTを適宜に減算し、一連の有意な指示コマンドの書き込みが終われば、コマンドカウンタCNTがゼロになるまで、NOP コマンドを記載し、最後にEODLコマンドを記載する手法が考えられる。本実施例の場合、指示コマンドは、そのコマンド長が32bitの整数N倍(N>0)のものに限定されているので、上記の処理は容易であり、コマンドカウンタCNTの減算処理は、整数Nに対応した減算処理となる。
一方、簡易手法(A)を採る場合には、ディスプレイリストDLの作成時、最初に、リストバッファ領域(DLバッファBUF)の全てをNOP コマンドで埋めれば足りるので、一見、標準手法(B)より優れているように思われる。また、簡易性の観点では、無調整手法(C)も優れているように思われる。しかし、本実施例では、基本的に標準手法(B)を採っており、ディスプレイリストDLの先頭からEODLコマンドまでの実データ量、つまり、EODLコマンドまでのデータ量が、常に、データ転送回路72の最低データ量Dminの整数倍となるよう調整している。
これは、プリローダ73を活用する実施例を考慮したものであり、もし、簡易手法(A)や無調整手法(C)を採用すると、EODLコマンドまでのディスプレイリストDLの実データ量が、ランダムな値となり、プリローダ73が書き換えた書換えリストDL’のDRAM54への転送時や、DRAM54から描画回路76への書換えリストDL’の転送時に支障が生じるからである。なお、書換えリストDL’のDRAM54への転送時には、データ転送回路72のChA制御回路72aが機能し、書換えリストDL’の描画回路76への転送時には、ChB制御回路72bが機能するが(図28参照)、何れの場合もEODLコマンドまでの書換えリストDL’しか転送しないことになる。
以上、ディスプレイリストDLのデータボリューム値を調整する標準手法(B)の利点を説明したが、プリローダ73を使用しない実施例では、発行されたディスプレイリストDLは、描画回路76によって処理されるだけであるので、簡易手法(A)や無調整手法(C)の使用が何ら禁止されない。
但し、以下の説明では、プリローダ73の使用の有無に拘らず、原則として標準手法(B)を採ることを前提に、図23に基づいて、ディスプレイリストDLの詳細について説明する。
特に限定されないが、本実施例では、ディスプレイリストDLに、先ず、メイン表示装置DS1に関する指示コマンド列(L11~L16)を記載し、その後、サブ表示装置DS2に関する指示コマンド列(L17~L20)を記載するようにしている。また、標準手法(B)を採用して、ディスプレイリストDLのデータボリューム値を固定長(256バイト)に調整している。なお、図23は、事実上、演出制御CPU63が、RAM59のリストバッファ領域に、指示コマンドを書き込む手順や、ディスプレイリストDLに基づく描画回路76の動作を示したものともなっている。
図23に示す通り、ディスプレイリストDLの先頭では、環境設定系の指示コマンド(SETDAVR )を記載して、表示装置DS1のフレームバッファFBaについて、インデックス空間IDX上の左上基点アドレス(X,Y)を規定する(L11)。図12(a)に関して説明した通り、本実施例では、表示装置DS1用として、任意領域(c) に、一対のフレームバッファFBaが確保されている。そして、通常は、表示回路74にとっての有効データ領域に対応して、基点アドレス(X,Y)=(0,0)とすることで、フレームバッファFBaの先頭位置から描画回路76に活用される。
図12(c)では、その下方左側の実描画領域にL11と付しているが、これは、指示コマンドL11によって、フレームバッファFBa上の実描画領域が、フレームバッファFBaの基点アドレス(0,0)位置から始まると特定されたことを意味している。ただし、実描画領域の縦横寸法や、その実描画領域を具体的に特定するインデックス番号は、未だ未確定であり、後述する指示コマンド(SETINDEX)L13によって確定する。なお、指示コマンドL11ではZバッファの使用の有無も指定される。
次に、環境設定系の指示コマンド(SETDAVF )によって、仮想描画空間上に、左上基点座標(Xs,Ys)と、右下対角点座標(Xe,Ye)を設定して、W×H寸法の描画領域を定義する(L12)。ここで、仮想描画空間とは、描画用の指示コマンド(SPRITEコマンドなど)によって描画可能な、X方向±8192、Y方向±8192の仮想的な二次元空間である(図12(c)参照)。
この指示コマンドL12(SETDAVF )によって、仮想描画空間は、描画内容が実際に表示装置DS1に反映される描画領域と、その他の非描画領域に区分される。また、指示コマンドL12(SETDAVF )は、指示コマンドL11で開始位置(基点アドレス)が規定された実描画領域と、仮想描画空間上の描画領域とを対応付けることになる。
この点を言い換えると、指示コマンドL12によって、(インデックス空間は未定の)フレームバッファFBaには、仮想描画空間上の描画領域に対応する、基点アドレスから始まるW×Hの実描画領域が定義されることになる。したがって、指示コマンドL12で指定する描画領域は、フレームバッファFBaの水平サイズと同一か、それ以下とする必要がある。通常、描画領域や実描画領域は、表示回路74にとっての有効データ領域(図22(e))と同寸法となるよう定義される。
そして、描画回路76が指示コマンドL11,L12を実行した後は、仮想描画空間に描画された描画内容のうち、描画領域に含まれるものだけが、フレームバッファFBaの実描画領域に反映されることになる。したがって、描画領域からはみ出した部分や、図12(c)において作業領域と記載された部分の描画内容は、そのままでは、フレームバッファに反映されることはない。なお、仮想描画空間に作業領域を確保する場合には、仮想描画空間の非描画領域が使用される。
次に、今回の動作周期において、描画回路76が、これから完成させるディスプレイリストDLに基づいて描画する描画内容を何処に描画すべきかを規定する(L13)。具体的には、ダブルバッファ構成の表示装置DS1のフレームバッファFBaについて、今回のディスプレイリストDLに基づく描画内容の「書込み領域」となるインデックス空間IDXが特定される(L13)。具体的には、テクスチャ設定系のコマンドであるSETINDEXコマンドによって、(1) フレームバッファFBaは、任意領域に確保されていること、及び、(2) 「書込み領域」となるインデックス空間IDXNの任意領域上のインデックス番号Nが特定される。
この指示コマンドL13によって、例えば、N=255と特定された場合には、仮想描画空間上に定義された描画領域に対応する実描画領域は、具体的には、ダブルバッファ構造のフレームバッファFBaにおけるインデックス空間IDX255であると定義されたことになる。
本実施例の場合、フレームバッファFBaのインデックス番号は、255又は254であり(図12(a))、トグル的に切り換えた何れかが指定される(L13)。なお、このインデックス番号は、メイン制御処理のステップST6で指定された表示領域(0)/(1)ではない方のインデック番号である。例えば、ステップST6の処理において、表示回路74に対して、表示領域(0)が指定されている場合には、表示領域(1)が、描画回路76にとっての「書込み領域」となる。
以上の通り、指示コマンドL11と指示コマンドL12とで、実描画領域(W×Hの論理空間)と描画領域(W×Hの仮想空間)との対応関係が、一般的に定義された後、インデックス空間IDXを具体的に特定する指示コマンドL13(SETINDEX)によって、W×Hの仮想空間が、特定のインデックス空間IDXにおけるW×Hの論理空間であると対応付けられたことになる。
この点を言い換えると、今後、一連の指示コマンドに基づいて、W×Hの仮想空間に仮想的に描画される内容は、仮想空間と内蔵VRAM71の実アドレスとの対応関係を規定するVDP内部の変換テーブルに基づいて、内蔵VRAM71(フレームバッファ)の画像データとなる。
続いて、「書込み領域」として、特定されたインデックス空間IDXを、例えば、黒色で塗りつぶすフレームバッファ・クリア処理を実行する指示コマンドが記載される(L14,L15)。これは、二動作期間前にフレームバッファFBaに書き込まれた画像データの消去処理に他ならない。
具体的には、環境設定コマンドの一種であるSETFCOLOR コマンドによって、例えば黒色を選択し、プリミティブ描画系コマンドであるRECTANGLE コマンドによって矩形領域を塗り潰すべく規定する。なお、RECTANGLE コマンドでは、仮想描画空間に設定された描画領域(フレームバッファFBaに対応する仮想空間)について、その左上端点と、右下端点のXY座標が指定される(図12(c)参照)。
以上の処理によって、描画準備処理が完了するので、次に、静止画や動画一フレームなど、適宜なテクスチャを、仮想描画空間に描画するための指示コマンドを列記する。典型的には、先ず、テクスチャの展開先となるインデックス空間IDXを、テクスチャ設定系のSETINDEXコマンドで特定した上で、テクスチャロード系の指示コマンドであるTXLOADコマンドを記載して、CGROM55から読み出す所定のテクスチャを、所定のインデックス空間IDXに展開するようディスプレイリストDLに記載する。
先に説明した通り、本実施例では、背景動画が、IPストリーム動画で構成されている。そこで、例えば、背景動画について、これを展開すべきインデックス空間IDXを、テクスチャ設定系のSETINDEXコマンドで、ページ領域(b) のインデックス空間IDX0と特定した上で、テクスチャロード系のTXLOADコマンドを記載する。なお、TXLOADコマンドでは、今回LOADすべき動画フレームについて、CGROM55の先頭アドレス(テクスチャのSourceアドレス)と、展開後のデータサイズ(水平×垂直)を特定する必要がある。
VDP回路52において、上記のTXLOADコマンドが実行されると、背景動画の一動画フレーム(テクスチャ)は、先ず、AAC領域(a) に取得され、その後、自動的に起動するGDEC75によって、ページ領域(b) のインデックス空間IDX0に展開される。次に、この一動画フレームを仮想描画空間に描画することになる。この場合に、SETINDEXコマンド(テクスチャ設定系)によって、「ページ領域(b) のインデックス空間IDX0が、その後の処理対象のテクスチャである」と設定しても良いが、TXLOADコマンドに連続して処理する場合には、このSETINDEXコマンドの記載を省略することができる。
何れにしても、「ページ領域(b) のインデックス空間IDX0が、その後の処理対象のテクスチャである」と特定されている状態で、次に、αブレンド処理のためのパラメータを設定するなど、適宜な描画間演算系の指示コマンドを記載する。なお、αブレンド処理とは、既に描画領域(フレームバッファFBa)に記載されている画像と、これから上書きする画像との透明化/半透明化処理に関するものある。したがって、背景動画の動画フレームのように、第一枚目の描画動作では、描画間演算系の指示コマンドの使用は不要である。
続いて、プリミティブ描画系の指示コマンドであるSPRITEコマンドによって、「ページ領域(b) のインデックス空間IDX0のテクスチャ(背景動画の一動画フレーム)」を、仮想描画空間の適所(矩形のDestination 領域)に描画するべくSPRITEコマンドを記載する。なお、SPRITEコマンドには、仮想描画空間のDestination 領域について、その左上端点と、右下端点を特定する必要がある。
このDestination 領域は、予め、指示コマンドL11,L12によって、実描画領域(FBa)に対応付けられた描画領域(仮想描画空間上に定義された仮想空間)の全体又はその一部である。但し、背景動画は、通常、表示画面全体に描画するので、このような場合のDestination 領域は、描画領域の全体又はそれ以上となる。なお、Destination 領域が、描画領域の全体より大きい場合とは、例えば、背景動画がズームアップされる場合である。
以上の処理によって、背景動画の動画フレームの描画が終わったので、続いて、テクスチャロード系、テクスチャ設定系、描画間演算系、プリミティブ描画系コマンドなどの指示コマンドを適宜な順番で列記して、背景動画に重ねて、各種のテクスチャを描画するべくディスプレイリストDLを構成することになる。先に説明したように、変動演出時では、多数の動画が必要となるので、その場合には、内蔵VRAM71のページ領域(b) について、インデックス空間IDXを増加するべく、インデックステーブル制御系の指示コマンド(NEWPIX)を記載することになる。
例えば、二つ目のIPストリーム動画に関し、NEWPIXコマンドによって、ページ領域(b) に、追加のインデックス空間IDX1を確保した後、このインデックス空間IDX1を特定して(SETINDEX)、二つ目の動画の一フレームの展開を指示し(TXLOAD)、展開したテクスチャを描画領域の適所に配置する(SPRITE)。通常、この場合のDestination 領域は、描画領域の一部となる。
以下、同様であり、NEWPIXコマンドによって、次々、インデックス空間IDXkを確保した後、適宜なαブレンド処理を実行しつつ、複数のIPストリームを描画領域に描画すれば、描画領域への描画内容は、実描画領域であるフレームバッファFBaに画像データとして順次蓄積されることになる。複数N個のIPストリーム動画が描画されている演出時には、ページ領域(b) において、複数N個のインデックス空間が機能している。
そして、一連の変動演出が終了したような場合には、ページ領域(b) に確保した多数のインデックス空間IDX1~IDXkのうち、不要と思われるインデックス空間IDXを開放するべく、DELPIXコマンドによって不要なインデックス空間IDXを削除すれば良い。
なお、静止画やIストリーム動画を描画する場合には、SETINDEXコマンドによって、これらのテクスチャのデコード先が、AAC領域(a) であると指定した上で、TXLOADコマンドを実行させれば、AAC領域(a) に取得されたテクスチャは、その後、自動的に起動するGDEC75によってACC領域(a) に展開される。そして、展開されたテクスチャは、SPRITEコマンドによって、描画領域の適所に描画すれば良い。なお、キャッシュヒット機能を活用するか否かに応じて、第一AAC領域(a1)か、第二AAC領域(a2)が使用される。
ここまでの説明では、各テクスチャは、直接的に、メイン表示装置用DS1の描画領域に描画されるが、必ずしも、このような動作に限定されない。例えば、既に表示装置DS1用に確保されている描画領域に重複しない状態で、適宜な描画領域を設け(図12(c))、この描画領域を内蔵VRAM71の作業領域に対応付ければ、中間的な描画領域を構築して、適宜な演出画像を完成させることができる。ここで、表示装置DS1用の描画領域と重複しない状態とするのは、重複領域については、後の対応付け設定が優先され、その領域への描画内容がフレームバッファFBaに反映されないからである。
図12(c)に示す通り、本実施例の作業領域は、任意領域(c) におけるインデックス空間IDX0である。そして、この作業領域を使用する演出タイミングでは、先行して、演出画像用の描画領域(図12(c)参照)を、作業領域(インデックス空間IDX0の実描画領域)に対応付けるための指示コマンド列(SETDAVR ,SETDAVF ,SETINDEX)を記載しておく。図12(c)に示す通り、演出画像用の描画領域は、メイン表示装置DS1用の描画領域に含まれない領域に確保される。
そして、その後は、フレームバッファFBaに関する指示コマンド列L16と同様の指示コマンドを列記して、インデックス空間IDX0に、適宜な演出画像を完成させれば良い。本実施例の場合、演出画像は、静止画で構成されるので、デコードデータは第一AAC領域(a1)に展開されるよう指示コマンド(SETINDEX)が記載され、次に、インデックス空間IDX0の描画領域の適所をDestination とするプリミティブ描画系の指示コマンド(SPRITE)が使用されることになる。なお、このような動作は、演出内容に応じて、一回又は複数回繰り返される。
そして、演出画像を完成させたインデックス空間IDX0をテクスチャと位置付けた後(SETINDEX)、SPRITEコマンドによって、メイン表示装置用DS1の描画領域の適所に、インデックス空間IDX0の演出画像(テクスチャ)を描画すれば良い。このような場合、インデックス空間IDX0の演出画像を、三角形の描画プリミティブ(primitive )に分解し、適宜な角度に回転させた上で、描画領域に描画することが考えられる。なお、テクスチャの回転角度は、例えば、予告演出の信頼度などに対応付けられる。
以上、メイン表示装置DS1の一フレームを完成させるための指示コマンド列(L11~L16)について説明したが、サブ表示装置DS2の一フレームを完成させるための指示コマンド列(L17~L12)についても、同様である。すなわち、フレームバッファFBbの開始XY座標を特定し(L17)を定義し(通常はX=0,Y=0)、図12(c)に示す仮想描画空間上に、サブ表示装置DS2のための描画領域を定義する(L18)。
ところで、本実施例では、メイン表示装置DS1用の画像データの生成を終えた後、サブ表示装置DS2用の生成処理に移行するので、サブ表示装置DS2用の描画領域が、メイン表示装置DS1用の描画領域と重複しても何の問題もなく、描画領域を自由に設定することができる。そのため、ディスプレイリストDLの生成プログラムの開発時、例えば、SPRITEコマンドで、新規に設定された描画領域に適宜なテクスチャを貼り付けるような場合、SPRITEコマンドの動作パラメータ(Destination 領域)の設定その他を、ある程度、定型化することができる。
このような任意の描画領域の定義が終われば(L18)、次に、ダブルバッファ構成の表示装置DS2のフレームバッファFBbについて、今回のディスプレイリストDLに基づく描画内容の「書込み領域」となるインデックス空間IDXを特定する(L19)。このインデックス空間IDXのインデックス番号は、フレームバッファFBbに関し、メイン制御処理のステップST6で指定された表示領域(0)/(1)に対応しない方のインデック番号である。
そして、その後、サブ表示装置DS2についての指示コマンド列L20~L22が、メイン表示装置DS1に関する指示コマンド列L14~L16と同様に列記される。また、インデックス空間IDX0に完成させた演出画像を使用することもできる。
以上、ディスプレイリストDLを構成するL11~L22の指示コマンドは、本実施例では、全て、コマンド長が32ビットの整数倍のものに限定されている。そして、先に説明した通り、本実施例のディスプレイリストDLのデータボリューム値(データ総量)を、固定長(256バイト)に調整しており、ダミーコマンドたる必要数のNOP コマンド(L23)を付加した上で、EODLコマンド(L24)で終結させている。すなわち、図23の実施例では、前記した標準手法(B)を採っている。
但し、標準手法(B)を採る場合でも、全ての動作周期において、ディスプレイリストDLのデータ総量を256バイトと固定化することは必ずしも必須ではない。すなわち、別の実施例では、NOP コマンドを除くディスプレイリストDLのデータ総量が、256バイトを超える場合(例えば、特別な演出期間)には、ディスプレイリストDLのデータ総量は、NOP コマンドを付加することで、512バイト又はそれ以上のN×256バイトに調整される。なお、標準手法(B)を採る場合、N×256バイトの最後はEODLコマンドで終端されることは先に説明した通りである。
以上、ディスプレイリストDLの構成について詳細に説明したが、演出制御CPU63は、完成させた固定バイト長のディスプレイリストDLをVDP回路に発行することになる(ST7~ST8)。図24は、演出制御CPU63が、転送回路72の転送ポートレジスタTR_PORT を直接WRITE アクセスして、描画回路76にディスプレイリストDLを発行するDL発行処理(図22のST8)を説明するフローチャートである。なお、転送ポートレジスタTR_PORT は、データ転送回路72の動作内容を規定するデータ転送レジスタRGijの一種である。
DL発行処理を実現するには、先ず、データ転送回路72の動作内容を規定する複数のデータ転送レジスタRGijに、必要な設定値を設定する必要がある。具体的には、データ転送回路72の転送動作態様と、データ転送回路72内部の伝送経由と、を所定のデータ転送レジスタRGijに特定する。設定内容は、特に限定されないが、ここでは、CPUIF部56からChB制御回路72bを経由すること、及び、CPUバス制御部72dに関し、そのFIFOバッファの残量をチェックしながらデータ転送動作を実行すると設定する(ST20)。なお、以下の説明では、ChB制御回路72bを、便宜上、「転送回路ChB」と略すことがある。
次に、転送総サイズを、所定のデータ転送レジスタRGijに設定する。先に説明した通り、本実施例では、ディスプレイリストDLのデータ総量を256バイトの整数倍に調整しているので、その値を設定する。なお、データ総量=256×Nは、データ転送回路72の最低データ量Dminの整数N倍にもなっている。通常、倍数Nは、1又は2であるが、以下の説明では、N=1として説明することにする。
ここで、転送ポートレジスタTR_PORT (以下、転送ポートと略すことがある)は、32bit長のレジスタであるので、演出制御CPU63は、32bit毎に、転送ポートTR_PORT に対して、レジスタWRITE 動作を実行することになる。そこで、レジスタWRITE 回数を管理する管理カウンタCNの値を64の初期設定する(ST21)。なお、無調整手法(C)を採る場合は、このタイミングで、最低データ量Dminの整数倍のデータ転送量を決定して、管理カウンタCNを設定することになる。
以上の処理で初期設定が完了するので、次に、転送回路ChBを経由するデータ転送動作を開始状態に設定すると共に(ST22)、描画回路76の動作を規定する所定の描画レジスタRGijへの設定値に基づいて、描画動作を開始させる(ST23)。この結果、その後、演出制御CPU63が、転送ポートTR_PORT にレジスタWRITE 動作する指示コマンド列について、描画回路76(ディスプレイリストアナライザ)による迅速かつ円滑なAnalyze 処理が担保される。
なお、迅速かつ円滑なAnalyze 処理には、ディスプレイリストDLに列記する指示コマンドが、コマンド長32bit整数倍の指示コマンドに限定されている点も有効に寄与する。図30(a)におけるタイミングt1,t2,t3,t4は、ステップST23の動作タイミングを示している。なお、ディスプレイリストDLの発行処理(ST8)は、素早く終わるので、図30~図31では発行処理の要する時間幅を記載していない。
続いて、ステップST22の設定が機能したか否かを確認する(ST24)。これは、データ転送回路72の各部の初期設定は、演出制御CPU63によるレジスタWRITE 動作(設定動作)より処理時間がかかるので、不完全な状態のデータ転送回路72に対して、その後の指示を与えないためである。そして、万一、所定時間、待機しても動作開始状態にならない場合には、重大異常フラグABNをセットしてDL発行処理を終える(ST25)。その結果、その後、WDT回路58が機能して、複合チップ50は異常リセットされる(ST10)。
なお、演出制御CPU63は、CPU回路51のリセットを回避するべく、所定のキーワード列をパターンチェック回路CHKに出力して、リセット信号RSTに基づいてVDP回路52だけを異常リセットしても良いのは前述した通りである。
但し、通常は、ステップST22の設定は、迅速に完了するので、続いて、CPUバス制御部72dのFIFOバッファ(32bit×130段)について、FIFOバッファが満杯でないことを確認した上で(ST26)、ディスプレイリストDLを構成する先頭行から順番に、一行ごとに転送ポートTR_PORT に指示コマンドを書込む(ST28)。
そして、管理カウンタCNをデクリメントしつつ(ST29)、管理カウンタCNがゼロになるまで、ステップST26~ST29の処理を繰り返す(ST30)。この実施例の場合、データ転送回路72には、最低データ量Dminが規定されているので、FIFOバッファに最低データ量Dminが蓄積されたタイミングで、データ転送動作が実行されることになり、間欠的な転送動作となる。
何れにしても、本実施例では、迅速にDL発行処理(ST28)が完了するが、万一、ノイズなどの影響でVDPレジスタRGijへの設定内容が矛盾したような場合には、ステップST26の判定において、所定時間待機してもFIFOバッファFullの状態が解消されない場合もあり得る。そして、そのような場合には、所定のVDPレジスタRGijに初期化データをセットして、描画回路76とデータ転送回路72を初期化した上で、重大異常フラグABNをセットしてDL発行処理を終える(ST27)。
ところで、このタイミングでは、データ転送回路72や、描画回路76は、既に動作を開始しており、ある程度の処理を終えているので、描画回路76の初期化処理には、描画レジスタRGijの内容を維持した状態で、(1) ディスプレイリストDLによって設定される可能性のある全ての内部パラメータを初期値に設定すること、(2) 全ての内部制御回路を初期状態に設定すること、(3) GDEC75を初期化すること、(4) AAC領域のキャッシュ状態を初期化することが含まれている。同様に、データ転送回路72の初期化処理には、FIFOバッファのクリアなど、それまでのデータ転送全体の初期化処理が含まれている。この結果、データ転送回路72の動作状態を示すステイタス情報が所定値(データ転送全体初期化中を示す値)に変化する。
なお、上記したステップST27の初期化処理では、描画レジスタRGijの内容を維持したが、所定の描画レジスタについては、その内容を初期化しても良い。初期値にクリアされる所定の描画レジスタには、(a) 描画実行開始を設定する実行制御レジスタ(図24のST23参照)、(b) 描画回路76の実行状況を示すステイタスレジスタ、及び、(c) 現在処理しているディスプレイリストの位置を特定するステイタスレジスタが含まれる。
何れにしても、重大異常フラグABNをセットした結果、その後、WDT回路58や演出制御CPU63が機能して、複合チップ50か、又はVDP回路52が異常リセットされるので(ST10a)、描画回路76やデータ転送回路72を初期化する処理は必ずしも必須ではない。一方、描画回路76やデータ転送回路72を初期化する場合には、その結果、異常回復が期待できるので、重大異常フラグABNをセットすることなく、ステップST20の処理に戻ってDL発行処理を再実行するのも好適である。
この点は、ステップST25の処理においても同様であり、データ転送回路72や描画回路76を初期化した上で、重大異常フラグABNをセットすることなく、ステップST20の処理に戻るもの好適である。但し、このような場合には、DL発行処理の再実行回数をカウントし、再実行回数が限界値を越えれば、重大異常フラグABNをセットしてDL発行処理を終えることになる。
図24(b)は、正常な動作状態について、確認的に図示したものである。図示の通り、発行されたディスプレイリストDLは、列記された指示コマンドの順番に、描画回路76(ディスプレイリストアナライザ)によって解析され、各指示コマンドに基づく動作が実行される。この動作は、ディスプレイリストDLの発行処理や、データ転送回路72のデータ転送動作(ST26~ST30)に並行して実行される。
例えば、指示コマンド(TXLOAD)が実行されることで、CGROM55から必要なテクスチャが読み出されてAAC領域(a) に取得され、その後、GDEC75が自動的に起動してデコード動作が実行され、デコード後のデータが所定のインデックス空間に展開される。また、指示コマンドによっては、ジオメトリエンジン77その他が機能するが、何れにしても、描画回路76の各部が協働することで、ディスプレイリストDLに対応する画像データがフレームバッファFBa,FBbに完成されることになる。
続いて、DMAC回路60を介在させてディスプレイリストDLを発行する場合を、図25に基づいて説明する。何ら限定されないが、DMAC回路60に内蔵された第1~第4のDMAチャンネルのうち、第3のDMAチャンネルを使用することにする。
図25の実施例では、先ず、所定のデータ転送レジスタRGijと、所定の描画レジスタRGijに各々クリア値を設定して、データ転送回路72と、描画回路76を初期化する(ST20)。この処理は、図24のステップST27のエラー処理と同じであり、FIFOバッファを含んだデータ転送回路72の内部回路が初期化され、データ転送の進行状態を示すデータ転送レジスタのステイタスビットが初期値となり、データ転送全体を初期化中であることを示すビットが所定値となる。
描画回路76についても同様であり、上記した(1) 内部パラメータを初期値に設定すること、(2) 内部制御回路を初期状態に設定すること、(3) GDEC75を初期化すること、(4) AAC領域のキャッシュ状態を初期化する処理が含まれている。また、描画回路の初期化処理(図25のST20)においても、前記した所定の描画レジスタRGijを初期化しても良い。なお、図24の処理において、このような初期化処理を最初に実行しても良い。
図25の処理では、次に、初期化処理が正常に完了したことを、データ転送回路72と描画回路76の動作状態を特定する所定のステイタスレジスタRGijをREADして確認する(ST21)。そして、万一、初期化できない場合には、重大異常フラグABNをセットして処理を終える(ST22)。但し、このような事態は、実際にはほぼ発生しない。
次に、データ転送回路72の転送動作態様と、データ転送回路72内部の伝送経由とを、所定のデータ転送レジスタRGijに設定する。設定内容は、特に限定されないが、ここでは、CPUIF部56からChB制御回路72bを経由すること、及び、CPUバス制御部72dへの転送プロトコルに関し、DMAC回路60への設定に従うと設定する(ST23)。
次に、転送総サイズを、所定のデータ転送レジスタRGijに設定する。図24の場合と同様、データ総量=256となる。なお、無調整手法(C)を採る場合は、このタイミングで、最低データ量Dminの整数倍の転送総サイズを決定して設定することになる。次に、所定の描画レジスタRGijへの設定値に基づいて、描画回路76の描画動作を開始させる(ST25)。図30(a)におけるタイミングt1,t2,t3,t4は、ステップST25の動作タイミングでもある。そして次に、DMAC回路60の動作を開始させた上で(ST26)、データ転送回路72のデータ転送動作を開始させる(ST27)。
DMAC回路60の動作を開始処理は、図25(b)に示す通りであり、先ず、DMAC転送を禁止した状態で、一サイクルのデータ転送単位(1オペランド)の転送が完了するのを待つ(ST40)。詳細な動作内容は、図26に示す処理と同じであり、DMAC転送を禁止設定する処理(ST53)と、その後の待機処理(ST54)に区分される。
このような処理を設けるのは、(1) 他の実施例では、メイン制御処理やタイマ割込み処理(図22)で、DMAC回路60(第3のDMAチャンネル)を使用する可能性があること、及び、(2) 図22のステップST5の処理を設けない他の実施例において、ディスプレイリストDLの発行を開始したDMAC回路60が、その動作周期(δ)内ではDL発行動作を終了できない場合もあり得ることなどを考慮したものである。
上記のような例外事態において、動作中のDMAC回路60に対して、新規の設定値(矛盾する設定値など)を追加的に設定すると、正常なDMA動作が全く担保されず、深刻なトラブルが懸念されるが、ステップST40の処理を設けることで、その後の設定値に基づく正常動作が担保される。すなわち、本実施例を一部変更した変更実施例でも、先行するトラブルに拘らず、その後の正常なDMA動作を実現することができる。
以上のような意義を有するステップST40の処理を実行すれば、次に、DMAC回路60の動作条件を設定する(ST41)。具体的には、図9に示す通り、サイクルスチール転送モードを選択し、一オペランド転送を32bit転送×2回とする。また、Sourceアドレスは、RAM59のリストバッファ領域(DLバッファBUF)のアドレスであるので順次増加と認識すべきこと、一方、Destination アドレスは、転送ポートTR_PORT であるため固定値とすべきことを規定する。
次に、RAM59のDLバッファBUFの先頭アドレスを、DMAC回路60の動作を規定する所定の動作制御レジスタREGに設定すると共に(ST42)、転送先アドレスである転送ポートTR_PORT のアドレスを設定する(ST43)。また、転送総サイズ、つまり、ディスプレイリストDLのデータ総量を256バイトに設定した上で(ST44)、DMAC回路60のDMA動作を開始させる(ST45)。
ところで、ここまでの説明は、指示コマンドの実質ビット長が、全て32bitの整数倍であることを前提にした。しかし、ディスプレイリストDLや指示コマンドの構成は必ずしも限定されないので、以下、このような場合について説明する。
例えば、前記した無調整手法(C)を採る場合も含め、ディスプレイリストDLのデータ総量Xが、32bitの整数倍ではない任意値Xである場合には、ステップST44の処理では、この任意値Xを、適切な転送量MODに調整した上で、転送総サイズの設定処理を実行する。ここで、適切な転送量MODは、一オペランド転送についての設定内容と、データ転送回路72の最低データ量Dmin(バイト)とに基づいて規定される。
具体的には、一オペランド転送設定がNバイト×M回であれば、転送量MODは、N×M(バイト)の整数倍であって、且つ、Dmin(バイト)の整数倍の値に調整される。例えば、N×M=8×4、Dmin=256であれば、任意値X(=300)バイトは、転送量MOD(=512)バイトに調整される。
以上、一般論も含め説明したが、DMAC回路60のDMA動作は、図9に示すようなサイクルスチール転送動作が開始され、CPUの動作を特に阻害することなく、ディスプレイリストDLが、実施例の場合には32ビット毎に、転送ポートTR_PORT に転送される。そして、転送されたデータは、転送回路ChBを経由して、描画回路76に転送される。
このような動作を実現するため、本実施例では、ステップST45の処理に続いて、データ転送回路72の転送動作を開始させて処理を終える(ST27)。その後、データ転送回路72は、DMAC回路60から最低データ量Dminを一単位として、ディスプレイリストDLの指示コマンド列を受け、これを描画回路76に転送する。そして、描画回路76は、ディスプレイリストDLの指示コマンドに基づいて描画動作を実行する。したがって、ステップST27の処理の後、演出制御CPU63は、図22のステップST11の処理を開始することができ、VDP回路52による描画動作(DMAC回路60によるDL発行処理)と並行して、音声演出やランプ演出やモータ演出を制御することができる。
図25(c)は、この動作内容を図示したものである。DMA転送に先行して、描画回路の動作を開始しており(ST25)、描画回路76のディスプレイリストアナライザは、迅速かつ円滑にAnalyze 処理を実行し、その他、GDEC75やジオメトリエンジン77などの動作に基づき、フレームバッファFBa,FBbには、各表示装置DS1,DS2について、各一フレーム分の画像データが生成される。
ところで、DL発行処理をステップST27の処理で終える図25の構成は、必ずしも、限定されない。例えば、図32~図33のように、音声演出、ランプ演出、及びモータ演出を、他のCPUが制御する場合には、ステップST27の処理の後、DMAC回路60やデータ転送回路72の正常動作を確認するのが好ましい。図26は、図25のステップST27に続く動作であり、正常動作の確認処理を説明するフローチャートである。
先ず、所定のステイタスレジスタを参照して、DMAC回路60の転送動作が正常に終了していることを確認する(ST50)。また、データ転送回路72が転送動作を終了していることを確認する(ST51)。通常、このような経路で、図25のDL発行処理が完了する。
一方、所定時間待機しても.DMAC回路60の動作が完了していない場合、或いは、データ転送回路72が転送動作を完了していない場合には、描画回路76とデータ転送回路72について、所定のVDPレジスタRGijにクリア値を設定して、DL発行処理を初期化する(ST52)。これは、ディスプレイリストDLの発行処理が正常に終了していないことに基づく動作であり、具体的には、図24のステップST27のエラー処理や、図25のステップST20の初期処理と同じ内容である。
すなわち、この場合も、描画回路76は、既に動作を開始しており、ある程度の処理を終えているので、描画回路76の初期化処理には、(1) ディスプレイリストDLによって設定される可能性のある全ての内部パラメータを初期値に設定すること、(2) 全ての内部制御回路を初期状態に設定すること、(3) GDEC75を初期化すること、(4) AAC領域のキャッシュ状態を初期化することが含まれる。
次に、新規のDMA転送動作を禁止した上で(ST53)、実行中の一オペランドの転送動作が終わるのを待つ(ST54)。先に説明した通り、本実施例では、32bit転送×2回を一オペランドとしており、動作中のDMAC回路60をいきなり初期化することを避けるためである。
そして、この準備作業が終われば、DMAC回路60の動作を規定する所定の動作制御レジスタREGにクリア値を設定して、DMAC回路60を初期化する(ST52)。そして、重大異常フラグABNをセットしてDL発行処理を終える。なお、この場合、ステップST52やST55の処理によって、異常回復が期待できるので、重大異常フラグABNをセットすることなく、図25のステップST20に戻って、DL発行処理を再実行するのも好適である。但し、DL発行処理(ST23~ST27)の再実行回数をカウントし、再実行回数が限界値を越えれば、重大異常フラグABNをセットしてDL発行処理を終える必要がある。
続いて、プリローダ73を使用する場合のメイン制御処理について、図27に基づいて説明する。図27の処理は、図22の処理に類似しているが、先ず、開始条件判定(ST5’)の内容が相違する。すなわち、プリローダを使用する実施例では、各動作周期の開始時に、描画回路76とプリローダ73のステイタス情報をREADアクセスして、ディスプレイリストDL1に基づく描画動作が終わっていること、及び、ディスプレイリストDL2に基づくプリロード動作が終わっていること確認する(ST5’)。
図31(a)のタイムチャートに示す通り、プリローダ76は、例えば、動作周期(T1)に発行されたディスプレイリストDL1に基づき、その動作周期中(T1~T1+δ)に、先読み動作(プリロード動作)を終えている筈である。また、描画回路76は、例えば、動作周期(T1+δ)で指示された動作開始指令に基づき、その動作周期中(T1+δ~T1+2δ)に、ディスプレイリストDL1に基づく描画動作を終えている筈である。
そこで、(ST5’)では、描画回路76とプリローダ73に関するVDPレジスタRGijのステイタス情報をREADアクセスして、上記の正常動作を確認するのである。図31(a)には、動作周期T1,T1+δ,T1+2δ,T1+4δの判定タイミングでは正常動作が確認されるが、動作周期T1+3δの判定タイミングでは、プリロード動作が終了していない状態が示されている。
そして、このような異常時には、異常フラグERをインクリメントした上で(ER=ER+1)、ステップST9の処理に移行させている。そのため、図22の実施例の場合と同様に、フレーム落ちが生じる。すなわち、表示領域の切換え処理(ST6)がスキップされるので、同じ画面が再表示される。図30(a)に示す動作期間(T1+3δ~T1+4δ)は、その動作状態を示している。
また、ステップST5’の判定において、開始条件を満たさない場合には、描画回路76に対して、書換えリストDL’に基づく描画動作の開始指示(PT10)が実行されないので、描画回路76は非動作状態であり、また、新規のディスプレイリストが生成されることもない。なお、図31(a)において、タイミングt0,t2,t4は、描画動作の開始指示(PT10)の動作タイミング、より正確には、図28のステップST26のタイミングを示している。
以上、ステップST5’の判定が不適合の場合を説明したが、通常の場合は、フレームバッファFBa,FBbの表示領域をトグル的に切換えた後(ST6)、描画回路76に対して、書換えリストDL’に基づく描画動作を開始させる(PT10)。具体的な内容は、図28に示す通りであり、描画回路76は、演出制御CPU63の制御に基づき、データ転送回路72(転送回路ChB)を経由して、外付けDRAM54のDLバッファBUF’から書換えリストDL’を取得して描画動作を実行することになる。
この動作を実現する図28のフローチャートを説明することに先行して、プリローダ73の動作を確認すると、プリローダ73は、一動作周期前に取得したディスプレイリストDLに基づき、CGROM55の先読み動作(プリロード)を完了しており、先読みされたデータは、外付けDRAM54に確保されたプリロード領域に既に格納済みである。また、ディスプレイリストDLに記載されているテクスチャロード系のコマンド(TXLOAD)については、そのSourceアドレスがプリロード領域のアドレスに書換えられ、書換えリストDL’として、外付けDRAM54のDLバッファBUF’に格納されている。
なお、この書換え処理において、ディスプレイリストDLのデータ総量に変化はなく、書換えリストDL’のデータ総量は、ディスプレイリストDLと同じである。また、ディスプレイリストDLは、標準手法(B)で作成されており、書換えリストDL’の最後は、ディスプレイリストDLの場合と同様にEODLコマンドである。
以上を踏まえて、図28について説明すると、演出制御CPU63は、先ず、所定のデータ転送レジスタRGijと、所定の描画レジスタRGijに各々クリア値を設定して、データ転送回路72と、描画回路76を初期化する(ST20)。この処理は、図25のST20の処理と同一内容である。次に、この初期化処理が正常に終了したことを確認し(ST21)、万一、所定時間経過しても初期化が完了しない場合には、重大異常フラグABNをセットして処理を終える(ST22)。
通常は、データ転送回路72と描画回路76の初期化は正常に終了するので、続いて、データ転送回路72内部の伝送経由を、所定のデータ転送レジスタRGijに設定する(ST23)。具体的には、外付けDRAM54から、ChB制御回路72bを経由して描画回路76にデータを転送すると設定する(ST23)。次に、書換えリストDL’が格納されている外付けDRAM54のDLバッファBUF’について、その先頭アドレスを、所定のデータ転送レジスタRGijに設定する(ST24)。
また、この書換えリストDL’について、転送総サイズを、所定のデータ転送レジスタRGijに設定する(ST25)。先に説明した通り、書換えリストDL’のデータ総量は、ディスプレイリストDLのデータ総量と同じであり、具体的には、例えば、256バイトである。
次に、所定の描画レジスタRGijへの設定値に基づいて、描画回路76の描画動作を開始させる(ST26)。図30(a)におけるタイミングt1,t2,t3,t4は、ステップST26の動作タイミングでもある。そして、次に、所定のデータ転送レジスタRGijへの設定値に基づいて、データ転送回路60の動作を開始させて処理を終える(ST27)。その後、演出制御CPU63は、データ転送回路72や描画回路の動作に特に関与せず、次回の動作周期で実効化されるディスプレイリストの生成処理(ST7)に移行する。
一方、ステップST26のタイミングで動作を開始する描画回路76は、書換えリストDL’に基づいた描画動作を実行して、フレームバッファFBa,FBbに、書換えリストDL’に基づいた画像データを生成する。なお、この動作において、描画回路76は、CGROM55をREADアクセスすることなく、もっぱら、プリロード領域をREADアクセスするので、一連の描画動作を迅速に完了することができる。
以上、ステップPT10の処理内容を説明したので、図27に戻って説明を続けると、ステップPT11の処理の後、プリローダ73を活用する実施例では、次サイクルで実効化されるディスプレイリストDLを、標準手法(B)に基づいて作成する(ST7)。例えば、図31(a)に示す動作周期(T1)では、次サイクルである動作周期(T1+δ)において、描画回路76に参照されるディスプレイリストDLを作成する。
次に、演出制御CPU63は、作成後のディスプレイリストDLを、描画回路76ではなく、プリローダ73に発行する(PT11)。具体的な動作内容は、図29に示す通りである。先に、プリローダ73を使用しない実施例(図22)に関し、演出制御CPU63が、ディスプレイリストDLを、直接的に、描画回路76に発行する場合(図24)と、DMAC回路60を経由して発行する場合(図25)を示しているが、図29には、発行先がプリローダ73である点を除いて、ほぼ同じ動作が図29(b)と図29(c)に示されている。
図29(a)は、図29(b)の動作を説明するフローチャートであり、図24のフローチャートとほぼ同じである。但し、CPUIF部56からChC制御回路72cを経由すること、及び、CPUバス制御部72dに関し、そのFIFOバッファの残量をチェックしながらデータ転送動作を実行すると設定する(ST20)。なお、以下の説明では、ChC制御回路72cを、便宜上、「転送回路ChC」と略すことがある。
次に、転送総サイズ(標準手法(B)で調整された例えば256バイト)を、所定のデータ転送レジスタRGij設定し、管理カウンタCNを64に初期設定する(ST21)。次に、転送回路ChCを経由するデータ転送動作を開始状態に設定すると共に(ST22)、プリローダ73の動作を規定するプリロードレジスタRGijへの設定値に基づいて、プリロード動作を開始させる(ST23)。
この結果、その後、プリローダ73は、演出制御CPU63が、転送ポートTR_PORT に書込む指示コマンド毎に、必要な解析(Analyze )処理を実行し、CGROM55をREADアクセスすべき指示コマンド(TXLOAD)を検出すると、そのテクスチャをプリロードして、DRAM54のプリロード領域に保存する。また、テクスチャのSourceアドレスを変更した書換えリストDL’をDRAM54のDLバッファ領域BUF’に保存する。
なお、図31(a)におけるタイミングt1,t3,t5は、事実上、図29のステップST23の動作タイミングを示している。但し、この実施例においても、ディスプレイリストDLの発行処理の途中で、何らかの異常が発生すれば、ステップST25やステップST27の処理を実行する。具体的には、データ転送回路72や、プリローダ73の動作を初期化して、可能な範囲でディスプレイリストDLの発行処理(ST20~ST30)を再実行する。プリローダ73の初期化処理には、未完成状態の書き換えリストDL’の消去や、新規にプリロードデータを記憶したプリロード領域のクリア処理が含まれる。
以上、プリローダ73を使用する場合と、使用しない場合について詳細に説明したが、具体的な動作内容は、特に限定されない。図30(b)は、演出制御CPU63が生成したディスプレイリストを、生成したその動作周期ではなく、一動作周期δ遅れて描画回路76に発行する実施例を示している。このような実施例の場合には、描画回路76は、一動作周期(δ)のほぼ全時間を使用できるので、フレーム落ちの可能性が低減される。
また、図31(b)は、演出制御CPU63が生成したディスプレイリストを、生成したその動作周期ではなく、一動作周期遅れてプリローダ73に発行する実施例を示している。この場合は、プリローダ73は、一動作周期(δ)のほぼ全時間を使用してプリドード動作を実行することができるので、この場合も、フレーム落ちの可能性が低減される。
なお、ここまでの説明では、複合チップ50を使用することにしているが、必ずしも、演出制御CPU63とVDP回路52を、一素子に集積化する必要はない。更にまた、上記の実施例では、演出制御全体を、単一のCPU(演出制御CPU63)で制御しているが、上流側のCPUと、下流側の演出制御CPU63が互いに協働して、演出制御動作を実行しても良い。
図32~図33は、このような実施例を示すブロック図である。図示の通り、この実施例では、上流側の演出制御CPUが、音声演出と、ランプ演出と、モータ演出を制御している。一方、下流側のCPU回路51は、演出制御CPUから受ける制御コマンドCMD’に基づいて、画像演出だけを制御している。
このような構成を採る場合には、CPU回路51は、図22(a)のステップST12の処理と、図22(b)の処理を実行する必要がなく、十分に時間をかけて複雑なディスプレイリストDLを生成することができ、より複雑で高度な3D(Dimension )などの画像演出を実現することができる。このような場合には、ディスプレイリストが大型化するが、その場合には、ディスプレイリストDLのデータ総量は、ダミーコマンドを付加することで、512バイト又はそれ以上のN×256バイトに調整される。
また、下流側のCPU回路51の動作は、画像演出制御に特化されるので、ディスプレイリストDLの発行後、描画動作が完了するのを確認することもできる。図24の下方は、この場合の動作制御例を示しており、限界時間を超えても描画動作が完了しない場合には、重大異常フラグABNをセットして処理を終える(ST32)。なお、下流側のCPU回路51の処理は、画像演出制御だけであるので、簡易的には、描画動作の完了を無限ループ状に待機するのでも良い。
このような構成を採る場合、図22(a)の開始条件判定(ST5)を所定時間繰り返すことができる。このように構成しても、描画動作完了の遅れが、それほど長くなければ、表示領域(0)と表示領域(1)の切り換えが遅れるだけの問題しか生じない。すなわち、図34(a)に示す動作周期T1+3δのように、表示動作が二回繰り返される一動作周期の中で、前半だけ、フレーム落ち状態となり、後半は、正常なフレームが表示される。
この点は、プリローダを使用する場合も同様であり、図27(a)の開始条件判定(ST5’)を所定時間繰り返すことができる。そして、多少の遅れであれば、図34(b)に示す動作周期T1+3δのように、前半だけ、フレーム落ち状態となり、後半は、正常なフレームが表示される。但し、描画動作の完了が大幅に遅れると、図30(a)の動作周期T1+3δと同様に、完全なフレーム落ちが生じることになり、万一、このような事態が継続すると、WDT回路58が起動することになる。この点は、プリローダを使用しない場合も同様である。
また、CPU回路51の制御動作が画像演出制御に特化される場合、DMA転送を採用する実施例では、図26の下方に示す通り、描画回路76の描画動作の完了と、データ転送回路72の動作完了と、DMAC回路60の動作完了が判定される(ST50’~ST52’)。そして、何れかの動作が正常に終了しない場合には、データ転送回路72と、描画回路76の動作を初期化し、ステップST53~ST55の処理と同様の処理(ST55’~ST57’)が実行される。なお、この場合も、所定回数だけ、DL発行処理を再実行するのが好適である。
以上、メイン表示装置DS1及びサブ表示装置DS2のフレームバッファFBa,FBbとして、各表示装置の水平ピクセル数に完全一致する水平サイズのインデックス空間を構築する実施例について説明した。図35(a)は、この関係を確認的に図示したものであり、仮想描画空間上の描画領域(W×H)と、インデックス空間上の有効データ領域(実描画領域W×H)とが、何れも、表示装置の水平/垂直ピクセル数に一致する場合を示している。
このような対応関係において、ディスプレイリストDLによる仮想描画空間への描画動作は、必ずしも、描画領域(W×H)に限定されないので、例えば、図35(a)上部の左傾斜線で示すように、描画領域(W×H)を超える描画画像(W’×H’)について、その描画位置を時間的に移動させることで、図35(a)下部の右傾斜線で示す実描画領域W×Hへの描画内容を、縦/横/斜めに適宜に移動させることが可能となる。
また、このような演出を実行するため、例えば、図35(b)に示すように、表示装置の水平ピクセル数より大きい水平サイズWのインデックス空間を設けても良い。この場合には、ディスプレイリストDLの指示コマンドL12(SETDAVF )で定義される仮想描画空間上の描画領域W×Hは、表示装置の水平/垂直ピクセル数に対応する実描画領域w×hより大きく設定される。なお、図35(b)の下部には、実描画領域w×hが、右傾斜線で示されている。
そして、実描画領域w×hの縦横寸法は、図21のステップSS30の処理で、表示装置の表示ライン数と水平画素数として特定され、また、実描画領域w×hの左上端点は、図21のステップSS36の処理で、垂直/水平表示開始位置として、所定の表示レジスタに設定される。
一方、インデックス空間における基点アドレス(X,Y)は、ディスプレイリストの指示コマンドL11によって、所定の描画レジスタに設定される。先に説明した通り、具体的には、環境設定系の指示コマンドL11(SETDAVR )によって、インデックス空間IDX上の左上基点アドレスが、例えば(0,0)と規定される。そして、実描画領域w×hの左上端点を、定常処理において適宜に移動させれば、図35(b)下部の右傾斜線で示す実描画領域W×Hの描画内容は、縦/横/斜めに適宜に移動することになる。
図21に関して説明した通り、ステップSS30~SS37に係るVDPレジスタRGijについては、初期設定後に、書込み禁止設定がされているが(第2の禁止設定SS39)、上記の演出を実行するタイミングでは、所定のVDPレジスタRGijに解除値を書込むことで、この禁止設定が解除される。
ところで、上記の実施例では、第1種や第2種の禁止設定レジスタを活用して、所定のシステム制御レジスタRGijや初期設定系の所定のVDPレジスタRGijを、画一的に書込み禁止状態に設定して(図21のSS38,SS39参照)、これらのレジスタへの設定値が、その後、ノイズなどの影響で変更されないようにした。しかし、このような書込み禁止設定をすることなく、重要なシステム制御レジスタRGijの設定値については、所定時間毎に設定処理を繰り返すのも好適である。
図36は、このような場合の処理を説明する図面であり、初期設定処理(SS1~SS3)において設定すべき設定値は、制御メモリ53(PROGMROM)に記憶された設定値テーブルSETTABLEに纏められている。なお、図21のステップSS1~SS3では、説明を省略しているが、(a) 初期値設定テーブルSETTABLEに基づいて初期設定処理を実行すること、及び、(b) 初期値設定テーブルSETTABLEの内容については、図21の実施例も、以下に説明する内容と実質的に同じである。
そして、何れの実施例でも、設定値テーブルSETTABLEは、VDPレジスタRGijのレジスタアドレス値と、そのレジスタRGijへの設定値を一組みとした複数組(N組)で構成されている。特に限定されないが、レジスタアドレス値は16bit長、設定値は32bit長に固定化されており、各々が固定長であることで、初期値設定テーブルSETTABLEのデータ容量は、6×Nバイト(=48t×Nbit)長、VDPレジスタRGijはN個となっている。
但し、図21の実施例では、初期値設定テーブルSETTABLEが一回だけREADアクセスされ、全N個のVDPレジスタRGijが一回だけ初期設定されるのに対して、図36の実施例では、全N個のVDPレジスタRGijは、一回だけ初期設定されるN1個のVDPレジスタRGijと、一回目の初期設定の後、1/30秒毎に繰り返し初期設定されるN2個のVDPレジスタRGijとに区分される。但し、図36の実施例においても、ステップSS5~SS6の処理は、電源投入後に一回実行されるだけである。
そして、図36の実施例では、繰り返し初期設定される設定値には、(1)DMA転送動作についての設定値、(2)VRAMに対する設定値、(3)割込みに関する設定値、(4)表示回路74に関する設定値、及び、(5)描画回路76に関する設定値が含まれている。
(1)DMA転送動作に関する設定値は、例えば、ステップST41で規定する動作条件の前提条件となる設定値であり、図25(c)や図29(c)における動作条件の違いに拘わらず固定的に適用される基本設定値である。具体的には、(a) DAMC回路60に内蔵されたFIFOバッファ(N段)がどれだけ開放されると、転送元に転送要求をするかの閾値(例えば全体の1/2段)、(b) 転送先や転送元とハンドシェイク動作をするか否か(例えばNo)などの設定値が含まれる。
また、(2)VRAMの設定値には、リフレッシュ動作のリフレッシュ周期が含まれている。内蔵VRAM71は、このリフレッシュ周期で動作することで、記憶データの自然放電が防止される。次に、(3)割込みに関する設定値には、割込み要求要因となるエラー種別や、割込み信号の出力端子(内蔵CPUの内部端子)を特定する値であり、例えば、(a) 描画回路76がフリーズすればCPU回路51に対して描画異常割込みが発生すること(割込み許可状態、図22(d)参照)、(b) 表示装置DS1のVBLANK開始時に、CPU回路51に対してVBLANK開始割込みが発生すること(図22(c)参照)などの設定値が含まれている。
なお、本実施例は、CPU回路51とVDP回路52とが統合された複合チップ50を使用するが、別チップとする場合には、VDP回路52が割込み信号を出力する出力端子は、CPU回路51の外部割込み入力端子に接続される。
また、(4)表示回路に関する設定値には、(a) 各フレームバッファの水平/垂直開始位置(SS36参照)、(b) 各表示装置の水平同期信号に関する設定値、(c) 各表示装置の垂直同期信号に関する設定値、(d) スケーラについての設定値、(e) 各表示装置の水平画素数と表示ライン数の設定値(SS30)などが含まれている。
(5)描画回路76に関する設定値には、描画異常割込みが発生するまでのフリーズ時間の設定値が含まれている。この設定値は、例えば、垂直同期信号の周期の整数倍として設定される。図22(d)において説明した通り、ここで規定されたフリーズ期間、描画回路76がVRAMをアクセスしない場合には、描画回路76が個別的にリセットされ(ST16b)、描画回路76に対する動作パラメータが再設定される(ST16c)。
上記の通り、この実施例では、重要な設定値については、所定時間毎に繰り返し再設定されるので、ノイズなどの影響で、万一、設定値のビット化けが生じても、その異常が直ちに回復される。また、この実施例では、図21の実施例の場合のように、第1種や第2種の禁止設定レジスタRGijを書込み禁止状態に禁止設定しないので、やや煩雑な禁止解除処理を経ることなく、自由に書換え処理を実行することができる。
以上、ここまで実施例では、(1a)所定のフリーズ時間を経過する描画回路76の動作フリーズ状態か、(1b)描画回路76が、ディスプレイリストDLに不合理な指示コマンドを検出した場合には、VDP回路52の描画回路76からCPU回路51に対して、描画異常割込みが生じる構成について説明した(図22(d)参照)。そして、描画異常割込み時には、割込み原因を判定した上で(図22(d)のST16a)、その判定結果に応じた処理を実行する構成(ST16c~ST16d)を採った。
しかし、本発明者の実験によれば、ノイズの多い過酷な動作条件下でも、描画異常割込みが生じることは殆ど無い。そこで、制御負担を軽減化するためには、割込み原因判定処理(ST16a)を設けることなく、画一的に無限ループ処理に移行させるか(図27(b)参照)、パターンチェック回路CHK(図7(b)参照)を機能させるのも好適である(図27(c)のST17a参照)。
この場合には、その後、所定時間後にWDT回路58が起動して、複合チップ50全体がリセットされるか、或いは、その後、直ちにVDP回路52だけがリセットされることになる(図7(b)参照)。なお、リセットキーワードの出力処理(ST17a)に基づき、VDP回路52がリセットされた場合には、そのリセット動作の正常終了を確認すると共に、戻り番地を記憶するスタック領域を整理した後(ST17b)、例えば、ステップST4かST13の処理に移行させることになる。
また、本実施例では、異常判定処理(図22や図27のST5)を設けて描画回路76の動作完了を1/30秒毎に判定しているので、更に制御負担を軽減するべく、実質的に何も実行しない描画異常割込み処理(図27(d))を設けても良い。図27(d)に示す通り、この構成では、描画異常割込み時、直ちにIRET(Interrupt Return)命令を実行してメイン制御処理に戻るので、描画回路76のフリーズ状態などは、そのまま継続されることになる。しかし、本実施例では、図22や図27のステップST5の処理で、フレーム落ち回数を、異常フラグERでカウントしており、いずれWDT回路58か、パターンチェック回路CHKが起動するので、図27(d)の構成は、図27(b)や図27(c)の構成と実質的に同じである。
また、制御負担を更に軽減化するため、初期設定時(図21のステップSS3参照)に、VDP回路52を描画異常割込み禁止状態に設定するのも好適である。なお、電源投入時のデフォルト状態が、描画異常割込み禁止状態である構成を採る場合には、(a) 異常割込みの許可/禁止を規定する許否値を設定すべき所定のシステム制御レジスタRGijを書込み禁止状態に設定するか、或いは、(b) 所定時間毎に、前記のシステム制御レジスタRGijに禁止値を繰り返し書込むことになる。
この構成は、一見、図27(b)や図27(b)の構成より優れているようにも思われる。しかし、この種の遊技機の全機種について、(a) 描画異常割込みを、画一的に禁止状態に設定する構成より、(b) 画一的に許可状態に設定した上で、機種毎に図22(d)の構成を採るか、図27(b)~(d)の何れかの構成を採るかを選択する方が、制御プログラムの汎用化の観点からは優れている。なお、前者の構成(a) では、機種毎に、初期設定ルーチン(図21のステップSS3参照)などを変える必要性(煩雑さ)が生じる。
なお、更なる変更実施例として、複合チップ50に内蔵された音声回路SNDを活用するのも好適である。図37は、このような実施例を示すブロック図である。図37を、図7と対比すれば明らかな通り、この実施例では、音声プロセッサ27と、音声メモリ28が不要となり、且つ、CPU回路51のデータバス(8bit分)とアドレスバス(2bit分)について、音声回路への外部配線が不要となる。また、アンダーフロー信号UFの伝送線も存在しないので、このUF伝送線に重畳するノイズによって、複合チップが誤って異常リセットされるおそれも回避される。
また、この実施例では、音声メモリ28を排除することに対応して、音声メモリ28に記憶すべき音声データを、CGROM53に格納している。図38(d)は、CGROM53の記憶内容を図示したものであり、CGROM53には、サウンドROMヘッダ情報と、フレーズヘッダ情報HDと、一群の音声データを圧縮した多数のフレーズデータPHと、音声回路SNDの動作を規定する多数のサウンドコマンドSCMDと、が固定的に記憶されている。
図示の通り、サウンドROMヘッダ情報は、先頭番地SNDstから記憶されており、これに続いて、データサイズHDvlのフレーズヘッダ情報HDが、先頭番地HDstから記憶されている。また、データサイズPHvlのフレーズデータPHが、先頭番地PHstから記憶され、データサイズSCMDvlのサウンドコマンドSCMDが、先頭番地SCMDstから記憶されている。
ここで、サウンドROMヘッダ情報とは、具体的には、フレーズヘッダHD領域の先頭アドレスHDstと、フレーズヘッダHD領域のデータサイズHDvlと、フレーズデータ領域PHの先頭アドレスPHstと、フレーズデータ領域PHのデータサイズPHvlと、サウンドコマンド領域SCMの先頭アドレスSCMDstと、サウンドコマンド領域SCMDのデータサイズSCMDvlと、を意味する。そして、これらの情報は、電源投入時に音声回路SNDの内部回路に取得されるようになっている(ステップSD4参照)。
また、フレーズヘッダ情報HDとフレーズデータPHは、電源投入時に、外付けDRAM54に転送することで、その後のREADアクセスの迅速化を図っている(ステップSD6)。このように、本実施例では、音声プロセッサ27と、音声メモリ28を排除して、小型化と製造コストの抑制を図ると共に、安価で大容量化が容易である一方、アクセス速度の遅いCGROM53の弱点を克服している。
以上を踏まえて、電源投入時の初期設定処理について図38(a)に基づいて説明する。なお、これらの処理は、図21のステップSS3の処理の一部として実行される。
図7(b)に関して説明した通り、電源投入時やWDT58が起動する異常リセット時には、リセット経路2の経路で音声回路SNDがハードウェアリセットされる(ステップSD1)。また、演出制御CPU63が、音声回路SNDの異常を検出した場合には、リセット経路4B又は4Cの経路で音声回路SNDがハードウェアリセットされる(ステップSD1)。なお、演出制御CPU63がパターンチェック回路CHKを機能させることで、音声回路SNDが、他の回路(72,73,74・・)と共にハードウェアリセットされる場合もある(ステップSD1)。
これら何れの場合でも、次に、演出制御CPU63は、リセット動作が正常に完了したことを確認した上で(ステップSD2)、最初に、サウンドデータ領域の先頭アドレスSNDstを、音声回路SNDのシステム制御レジスタRGijに設定する(ステップSD3)。次に、所定のシステム制御レジスタに所定値を設定することで、サウンドROMヘッダ情報HDを内部回路に記憶させる。なお、サウンドROMヘッダ情報HDは、前記した6要素(HDst,HDvl,PHst,PHvl,SCMDst,SCMDvl)であり、図38(c)に記載の通りである。
そして、ここまでの処理が正常に動作したことを確認し、万一、正常に終了できない場合には、リセット経路4B又は4Cの経路で、音声回路を個別的にリセットする。但し、通常は、正常終了を確認できるので、続いて、データ転送回路72を利用して、フレーズヘッダ情報HDと、フレーズデータPHを外付けDRAM54に転送する(ステップSD6)。なお、データ転送回路72には、転送先の先頭アドレスBGNと、転送元の先頭アドレスHDstと、転送データ総量HDvl+FDvlなどが適宜に指定される。
次に、フレーズヘッダ情報HDとフレーズデータPHは、CGROM55ではなく、外付けDRAM54に存在することを、所定のシステム制御レジスタRGijに設定した上で(ステップSD7)、外付けDRAM54に転送した一群のデータの先頭アドレスBGN(サウンドRAM先頭アドレス)を、所定のシステム制御レジスタに設定する(ステップSD8)。その後、その他の初期設定処理を終えることで(ステップSD9)、音声制御動作が可能となる。
先に説明した通り、サウンドROMヘッダ情報、つまり、6個の情報(HDst,HDvl,PHst,PHvl,SCMDst,SCMDvl)は、音声回路SNDの内部回路に保存されているので(ステップSD4)、その後、演出制御CPU63は、フレーズデータなどの必要な情報を、サウンドRAM先頭アドレスBGNとの相対値で指示することができ、この指示を受けた音声回路SNDは、相対アドレス値を絶対アドレス値に変換して、必要な音声処理を実行することになる。フレーズデータなどの音声データは、CGROM55ではなく、外付けDRAM54からREADアクセスされるので、複雑高度な音声演出であっても、これを円滑に実現することができる。
以上、各種の実施例について詳細に説明したが、弾球遊技機や回胴遊技機などに限定されないだけでなく、具体的な記載内容についても、何ら本発明を限定しない。特に、バックライト部BLと液晶表示部MONIについて、給電制御回路の回路構成や動作タイミング(図6)、及び、これに対応する図21の制御処理は、一例を例示したに過ぎず、何ら本発明を限定せず、適宜に変更可能である。
例えば、実施例では、制御信号PS1,PS2を使用したが、バックライト部BLとして、BL_EN 端子と、PWM 端子を有するドライバDVLを使用する場合には、制御信号PS1は、特段必要とされない。また、制御信号STBY,PWMを使用するので、制御信号PS2についても省略可能である。制御信号PS1,PS2を省略した場合には、電源電圧12Vと5Vは、電源投入時からバックライト部BLと液晶表示部MONIに供給されることになる。
但し、電源投入後、素早く(例えば20mS以内)、有意な画像信号の伝送を要求する仕様の液晶表示部MONIに応えるには、制御信号PS2を使用して電源電圧5Vの給電開始タイミングを遅らせるのが好適である。図47は、このような実施例を説明するタイムチャートであり、制御信号PS1を省略する一方、表示回路74からの出力を、LVDS回路80が出力し始めるタイミングT4に同期して、液晶表示部MONIに電源電圧5Vの給電を開始する実施例を示している。そして、この場合も、例えば、タイマ割込みを利用して、タイミングT4から更に300mS遅れてバックライト部BLが点灯すれば、フレームバッファFBa,FBbをゼロクリアしなくても、不自然な画像が表示されるおそれがなくなる。
また、ここまでの実施例では、バックライト点灯までに、かなりの待機時間(>1000+300mS)を設けているが、1000mSの待機時間を排除すると共に、表示回路74からの出力を、LVDS回路80が出力し始めるタイミングを、可能な限り早めるのも好適である。例えば、図48に示すように、LVDS回路のDual Link 設定や、その他の設定を行うステップSP45の動作に続いて、表示回路74やLVDS回路80(LVDS1/LVDS2 )の動作を開始させるステップSS4(SS4a+SS4b)の処理を実行するのも好適である。なお、先に説明した通り、ステップSS4aとSS4bの実行順序は、任意である。
この場合には、ステップSS3の処理を実行することなく、ステップSS4の処理を実行するので、無意味な画像信号が伝送されることになるが、バックライト部BLが消灯している限り、特段の問題は生じない。すなわち、バックライト部BLが消灯している状態では、ステップSP41~SP44の処理を先行させる限り、ステップSP4~SP10で実行される表示動作に関する各処理は、適宜な順番に入れ替えることができる。
特に、LVDS回路80(LVDS1/LVDS2 )についてのデュアルリンク設定その他の設定処理(SP41)については、図16のステップSP4のタイミングではなく、図21のステップSP54のタイミングでまとめて行うことが考えられる。まとめて行う設定処理には、デュアルリンク構成のLVDS回路80について、LVDS1回路/LVDS2回路から出力すべきデータが、表示回路74の出力(ODD/EVEN)であることの設定が含まれる。また、このステップSP54の実行タイミングから、表示回路74とLVDS回路80の動作を開始すべきことを、所定の表示レジスタRGij(DSPACTRL)や、所定のシステム制御レジスタRGij(SYSDSPLVDS1MD 、SYSDSPLVDS2MD )に設定しても良い。
また、ステップSP54のレジスタ設定タイミングで、表示回路74のデータをLVDS出力する旨を、所定のシステム制御レジスタRGij(SYSDSPLVDSLNK 、SYSDSPLVDS1CFG1 、SYSDSPLVDS2CFG1 )に設定し(SP4参照)、その後、ステップSS4のタイミングで表示回路74とLVDS回路80の動作を開始するよう構成するのも好適である。なお、図47のタイミングT4の直前に、ステップSP42~SP44、及びステップSP46の処理を実行した上でLVDS回路80の出力動作(SS4)を開始しても良い。
但し、外付けDRAM(DDR)54に関するステップSP46~SP47の処理は、必ず、ステップSP8の処理に先行させる必要があることは前記した通りである。
また、パワーオンリセット動作に関し、図16に示すパワーオンリセット動作は、制御メモリ53の0x00000000番地以降に確保されたベクタテーブルVECTの情報に基づいて起動されたが、HBTSL 端子=Hレベルに設定すると共に、CGROM55の先頭領域にベクタテーブルVECTを配置するのも好適である。図39(a)や図39(b)は、このような場合のアドレスマップを図示したものであり、演出制御CPU63のアドレス空間CS0は、CGROM55の一部(先頭領域)に確保されている。
なお、CGROM55の本体部は、演出制御CPU63からアクセスされることはなく(アクセス不可)、専らVDP回路52からアクセスされるので、アドレス空間CSiに位置付けられることない。先に説明した通り、CGROM55の本体部を、複数のメモリデバイスで構成することもでき、このような場合には、図18(a)のステップSP20の処理によって、SPA0~SPA1のデバイス区間に区分することで、メモリデバイスの特性に適合した最適なREADアクセスが可能となる。
何れにしても、HBTSL 端子=Hレベルに設定されている場合には、これに対応して、CGROM55のメモリ種別と、バス幅(64/32/16bit)とが、2bit長のHBTBWD端子と、4bit長のHBTRMSL 端子への固定的な入力値に基づいて予め特定されている必要がある。
そして、この実施例では、ベクタテーブルVECTに続いて、CGROM55からのREADアクセスを最適化するためのバスパラメータをCGROM55の先頭領域に記憶されておく必要がある。なお、必須ではないが、演出制御プログラムの違法解析を困難にするため難読化した場合に、それを解読するための難読化パラメータを記憶させておくのも好適である。
このような構成を採った場合には、電源リセット後、リセットアサート期間に、以下の動作1~動作4がプログラム処理を経ることなく自動的に実行される。先ず、HBTRMSL 端子への入力値に基づいてアドレス空間CS0のバス幅が特定され、また、BTBWD 端子への入力値に基づいてメモリ種別が自動的に特定され、所定のVDPレジスタRGijに各々設定される(動作1)。この場合のメモリ種別は、パラレルI/F(Interface )形式を採るメモリ素子、シーケンシャルI/F形式を採るメモリ素子に大別される。
次に、CGROM55に記憶されている難読化パラメータをロードし、難読化を解除するために必要な情報が内部回路内に自動設定される(動作2)。また、CGROM55に記憶されているバスパラメータが自動的にVDPレジスタRGijに取得される(動作3)。なお、この動作3は、図19のステップSP63のプログラム処理に対応する動作であり、内部回路によって自動的に実行される。
そして最後に、動作1~3で設定されたバスパラメータを実効化するべく、図19のステップSP64のプログラム処理に対応する動作が内部回路によって、自動的に実行される(動作4)。そして、バスパラメータの設定が実効化されたタイミングで、ベクタテーブルの情報に基づいてプログラムカウンタPCと、スタックポインタSPの値が自動的に設定され、ブートプログラム(初期設定プログラム)の実行が開始される。
この図39(a)に示す構成によれば、図16(a)のステップSP1のプログラム処理も不要となり、自動的に動作1~動作4が実行されるので、プログラム処理負担が大きく軽減される。そして、この場合も、初期設定プログラムPinitの動作に基づいて、ベクタハンドラVopt以降のプログラムやデータが適宜なRAM領域に転送される。
なお、ベクタハンドラVopt以降のプログラムやデータは、必ずしもCGROM55の先頭領域に記憶させておく必要はなく、例えば、制御メモリ53に記憶させておくのでも良い(図39(b))。また、ベクタハンドラVopt以降のプログラムやデータは、必ずしもRAM領域に転送する必要はなく、転送しない場合には、初期化設定プログラムにおけるメモリセクション初期化処理(図16のSP8)が不要となる。
また、Vブランクタイミングと、有意な画像データの送信終了タイミングとを必ずしも一致させる必要はない。すなわち、図15(f)に示す表示領域の左下端点(〇印)のタイミングで、画像データの送信を終了させることは何ら必要ない。要するに、表示装置側から要求される待機時間WTh/WRvの仕様や、水平/垂直同期信号HS/Vsの仕様を満たせば、それで足りる。
図41(a)は、このような実施例を説明する図面であり、例えば、表示回路74Aの動作を示している。この実施例でも、メイン表示装置DS1の仕様に対応して、ドットクロックDCKの周波数Fdotは、108MHzと規定される。また、フレームレートFRを1/60秒に一致させるために、THc×TVl/Fdot=1/60とする必要があり、ここでも、図15(f)の場合と同様に、水平同期のサイクル数THcを1662クロック、垂直同期のライン数TVlを1083ラインとしている。
また、図示の実施例では、一般の表示装置にも対応できるよう、表示装置の仕様に対応して、水平同期信号HSと垂直同期信号VSを出力している。図示例では、水平同期信号HSのパルス幅が100クロック分であり、水平フロントポーチFPhは、110(=10+100)クロック、水平バックポーチBPhは172クロックに設計されている。また、垂直同期信号VSのパルス幅は、10ライン分であり、垂直フロントポーチFPvは20(=10+10)ライン、垂直バックポーチBPvは291ラインに設計されている。
但し、図41(a)(b)に示す実施例では、〇印で示すVブランク開始タイミングより先に出力動作を終えるため、垂直待機時間WTvを49ライン、水平待機時間WThを372クロックとしている。したがって、この実施例によれば、一フレームの画像更新処理が終わった後、10ライン分の時間(154μS)経過後にVブランク開始タイミングが到来することになり、如何なる動作条件でも画像更新処理が確実化される(図41(b)参照)。
このような動作は、特に、他の表示回路に同期して付随的に動作する表示回路、例えば、表示回路74Aの動作に付随する表示回路74Bや表示回路74Cにおいて、好適に機能する。図41(c)~図41(e)は、この点を説明する図面であり、表示回路74BにおけるVブランク周期T2が、表示回路74AにおけるVブランク周期T1より長い場合を図示している(T1<T2)。
このような場合に、表示回路74AにおけるVブランク周期T1を表示回路74Aに付随させて動作させると、表示回路74Bにおける画像データの出力の完了前に、Vブランクが開始されることになり、画像欠損や不自然な表示動作が生じるおそれがある(図41(d))。一方、表示回路74Bを独立的に動作させたのでは、表示回路74Aの動作と同期する描画回路の動作タイミングと整合が取れなくなる。
そこで、表示回路74Aの動作に付随する表示回路74BのVブランク周期T2が、表示回路74AのVブランク周期T1より長い場合には、図41(a)(b)の場合と同様に、表示装置Bにおいて画像データの出力後に、十分な余裕時間が生じるよう、待機時間(垂直ブランク期間)を短く設定すればよい。この場合、待機時間を極端に短く設定しない限り、通常の液晶表示装置では、問題なく表示動作が実現される。
なお、例えば、表示回路74Aの動作に付随する表示回路74BのVブランク周期T3が、表示回路74AのVブランク周期T1より短い場合にも、Vブランク周期T3の後に余分の待機期間が生じるが、全体としての待機時間を極端に長くならない限り、問題なく表示動作が実現される。
以上、本発明の実施例について詳細に説明したが、具体的な記載内容は何ら本発明を限定しない。例えば、実施例では、もっぱらデュアルリンク伝送路(一対のLVDS伝送路)について説明したが、機器構成を簡略化するには、シングルリンク伝送路(単一のLVDS伝送路)を採用するのも好適である。
シングルリンク伝送路の場合、ドットクロックDCKの周波数が、108MHzであれば、LVDSクロックCLKの周波数も108MHzとなる。なお、この場合も、ドットクロックDCKとLVDSクロックCLKは、発振器OSC2を共通の供給元とし、且つ、同一生成過程で生成するのが好適である。
また、前記の実施例とは相違して、VDP回路52のシステムクロックと、CPU回路51のCPU動作クロックの供給元を、単一の発振器OSC2に共通化するのも回路構成の簡素化する上で好適である。そして、共通の設定端子(3bit のPLLMD 端子)の設定値に基づいて、PLL回路の逓倍比を共通設定する構成を採れば、周波数設定処理が不要となり更に効果的である。
この場合、CPU動作クロックを高速化したい要請にはやや反するが、VDP回路52の内部回路が許容する最高周波数のシステムクロックを採用し、これと同じ周波数のCPU動作クロックとするのが好適である。
例えば、発振器OSC2の発振周波数が40MHzの場合、設定端子(3bit のPLLMD 端子)への設定値を5にすることで、システムクロックとCPU動作クロックを共通的に200MHz(=40MHz×5)に設定できる。この構成によれば、発振器OSC1が不要となり、回路構成を簡素化できだけでなく、やや煩雑なVDPレジスタへの設定処理も不要となる。なお、VDP回路52と、CPU回路51の動作周期が一致するメリットもある。
最後に動画演出について整理しておく。先に説明した通り、本実施例では、変動演出の殆どは、静止画でなく、動画を使用して実現される。また、変動演出中は、暗転予告など特別な場合を除いて、複数の動画が並列的に動作している。
<初期処理>
動画演出を実行するため、本実施例では、電源投入後の初期処理において、AAC領域やページ領域が確保され(図21のSS1)、ページ領域内に、インデックス番号で特定される一又は複数のインデックス空間が確保される。
具体的には、単位空間4096ビット×128ラインの基本サイズの整数N倍のページ領域が一又は複数個確保され、各々に、一意のインデックス番号が付与される(図21のSS2)。本実施例では、1ピクセルを32ビット(ARGB8888)で表現するので、ページ領域の単位空間は、128ピクセル×128ラインとなる。
なお、先に説明した通り、ページ領域内のインデックス空間は、必要に応じて開放することも、追加することもできるので、変動演出の必要時に、ページ領域内に新規のインデックス空間を生成しても良い。
ところで、本実施例では、初期処理で確保されるAAC領域は、静止画やIストリーム動画のデコード領域として使用される。この場合、画像素材(テクスチャ)のメモリリードを指定するロードコマンドTXLOADで、テクスチャ(動画一フレームや静止画)の展開後のサイズを規定すると、デコード領域の先頭アドレスと、水平サイズが自動的にAAC領域に確保される。
<定常動作時のIPストリーム動画の再生>
上記の初期処理の後、適宜なタイミングで一又は複数の動画演出が実行される。ここで、IPストリーム動画の再生を指示するディスプレイリストDLには、以下のコマンドCM1~CM5が、描画回路への指示コマンドとして必要となる。
図43(a)は、ディスプレイリストDLの要部を図示したものであり、図23の指示コマンド列L16を再掲したものである。以下、デコード領域として、ページ領域を使用する実施例を説明するが、任意領域を使用することもでき、この場合は、ページ領域を任意領域と読み替えれば良い。但し、ページ領域のインデックス空間は、任意の水平サイズ×垂直サイズが2048ラインであり垂直方向に無駄が生じる。
(1)テクスチャコマンドSETINDEX(CM1)
先ず、テクスチャコマンドSETINDEX(CM1)によって、デコード領域として、任意領域を使用するか、ページ領域を使用するかを指定するが、IPストリーム動画の場合、実施例では、ページ領域のインデックス空間iを使用する。より具体的には、必要な動作パラメータを付加したテクスチャコマンドSETINDEXをディスプレイリストDLに記載して、「ページ領域」と、「テクスチャ」と、を選択し、使用するインデックス空間を特定するインデックス番号iを規定する。
なお、任意領域を使用する場合には、テクスチャコマンドSETINDEXで、「任意領域」と、「テクスチャ」と、を選択し、任意領域のインデックス空間を特定するインデックス番号iを規定する。
(2)ロードコマンドTXLOAD(CM2)
次に、素材のメモリリードを指定するロードコマンドTXLOAD(CM2)によって、必要なテクスチャ(動画を構成する単位フレーム)をCGROMからロードすることを指定する。具体的には、必要な動作パラメータを付加したロードコマンドTXLOADを、ディスプレイリストDLに記載する。すると、VDP回路52では、指定されたテクスチャを、CGROMの所定領域からロードし、これをデコードしたデコードデータを、ページ領域のインデックス空間iに展開することになる。
ロードコマンドTXLOADに付加される動作パラメータには、(1) テクスチャ(動画を構成する単位フレーム)を、先頭フレームとしてデコードするか、継続フレームとしてデコードするかの区別、(2) テクスチャの展開後の水平サイズ、(3) テクスチャの展開後の垂直サイズ、(4) テクスチャのソースアドレス(テクスチャが記憶されているCGROMの先頭アドレス)、が含まれている。
(3)基本情報セットコマンドSETTXATR(CM3)
次に、ディスプレイリストDLに、必要な動作パラメータを付加した基本情報セットコマンドSETTXATR(CM3)を記載して、テクスチャのカラーモードが、ARGB8888モード(1ピクセルが32ビット長)であるなど、このテクスチャの基本情報を設定する。
また、ピクセル間のブレンド処理についても必要な情報を設定する。ブレンド処理とは、各ピクセルの色を規定するRGB値や、透過度などを規定するα値について、フレームバッファなどへの描画済のピクセルとの混合演算を意味する。本実施例では、変動演出時、常に、複数の動画が並列動作しているので、透過度などに関するαブレンド演算が必要となる。
(4)画素間ブレンド演算系のコマンド(CM4)
そのため、ディスプレイリストDLには、必要な動作パラメータを付加した画素間ブレンド演算系のコマンド(CM4)が記載され、必要な動作パラメータによって、αブレンド演算式、その他が特定される。
(5)スプライトコマンドSPRITE(CM5)
続いて、インデックス空間iに展開されたテクスチャを、仮想描画空間(図12(c)参照)の適所に貼り付けるべく、必要な動作パラメータを付加したスプライトコマンドSPRITE(CM5)を、ディスプレイリストDLに記載する。このスプライトコマンドSPRITEでは、テクスチャの貼り付け先を特定する仮想描画空間の左上頂点(X0、Y0)と、右下頂点(X1、Y1)と、が指定される。
また、この左上頂点(X0、Y0)と右下頂点(X1、Y1)で特定される矩形領域に貼り付けるべきテクスチャについて、テクスチャUV座標空間でのUV値、つまり、(U0,V0)と(U1,V1)が指定される。なお、貼り付けるべきテクスチャは、既に、テクスチャコマンドSETINDEXで特定されているので、改めて、テクスチャそのものを特定する必要はない。
また、スプライトコマンドSPRITEに代えて、三角ポリゴンコマンドTRIANGLEを使用して、テクスチャを傾斜して描画することもできる。但し、三角ポリゴンコマンドTRIANGLEについては、傾斜/回転予告演出に関して、後述する。
<定常動作時のIストリーム動画の再生>
Iストリーム動画の場合は、静止画の再生の場合と同様、AAC領域にデコード対象のテクスチャ(Iストリーム動画を構成する単位フレーム)をロードすれば足りる。すなわち、テクスチャコマンドSETINDEX(CM1)は、不要であり、ディスプレイリストDLの構成は、以下の通りである。なお、通常、コマンドCM3やコマンドCM4も必要となるが、説明の冗長さを回避するため記載を省略している。
(1)ロードコマンドTXLOAD(CM2)
ディスプレイリストDLに、動作パラメータを付加したロードコマンドTXLOADを記載して、テクスチャ(Iストリーム動画を構成する単位フレーム)を、CGROMの所定領域からAAC領域にロードすると指定する。すると、VDP回路52は、ロードしたテクスチャを自動的にデコードして、デコードデータをAAC領域の自動確保空間に展開する。(2)スプライトコマンドSPRITE(CM5)
続いて、AAC領域の自動確保空間に展開されたテクスチャを、仮想描画空間の適所に貼り付けるべく、必要な動作パラメータを付加したスプライトコマンドSPRITEを、ディスプレイリストDLに記載する。先に説明した通り、スプライトコマンドSPRITEでは、テクスチャの貼り付け先を特定する仮想描画空間の左上頂点と、右下頂点と、が指定される。
なお、スプライトコマンドSPRITEに代えて、三角ポリゴンコマンドTRIANGLEを使用して、テクスチャを、傾斜姿勢で描画することもできる。
また、テクスチャを拡大縮小したい場合には、スプライトコマンドSPRITEに先行して、補完コマンドSETTXSMPLNG を記載すれば良い。補完コマンドSETTXSMPLNG によって、テクスチャのサンプリング方法(ポイントサンプリング/バイリニアフィルタリング)を特定すれば、テクスチャを拡大/縮小時の補完処理が特定される。
拡大処理や縮小処理は、スプライトコマンドSPRITEが指定する仮想描画空間の左上頂点と、右下頂点に基づいて自動的に実行される。すなわち、左上頂点と右下頂点で規定される矩形空間の大きさに基づいて、自動的に拡大又は縮小される。そして、ポイントサンプリングを選択した場合、拡大処理は、単純に、モザイク状に実行され、縮小処理は、画素の間引きによって実行される。一方、バイリニアフィルタリングを選択した場合には、不特定のピクセルの情報は、特定済みの周囲のピクセスの情報の加重平均値となる。
<保留画像の微少変動演出や拡大/縮小演出>
ところで、本実施例の遊技機では、図柄始動口への入賞球が4個を超えると、変動演出が保留状態となり、保留個数を示す保留画像(静止画スプライトやIストリーム又はIPストリーム動画)が表示装置に表示される。
この場合、大当りか否かの抽選結果を示唆するように、保留画像を上下左右に微妙に変動させたり、回転させたり、拡大/縮小することが演出上好ましい。このような構成を採ると、一の静止画や動画を用意するだけで、多彩な演出が可能となり、CGデータ量を抑制することができる。
保留画像(静止画スプライトやストリーム動画)の回転は、三角ポリゴンコマンドTRIANGLEによって実行される。一方、微少変動や拡大/縮小演出は、保留画像(静止画スプライトやストリーム動画)を、スプライトコマンドSPRITEによる貼り付け位置の指定や、貼り付け領域の指定によって実現される。そして、拡大/縮小時のディスプレイリストには、スプライトコマンドSPRITEに先行して、補完コマンドSETTXSMPLNG を記載される必要がある。
<セリフ予告>
セリフ予告演出とは、セリフ文字の表示を開始した後、所定時間遅れてセリフ音の音声演出を開始する予告演出を意味する。音声演出をあえて遅らせることで、先行して表示される文字表示のインパクトを高めることができる。
このセリフ動画演出において、一群のセリフ文字は、1文字ずつ、又は、一単位ずつ、順番に表示される。なお、一群のセリフ文字の表示開始に先行して、キャラクタ画像が表示される場合もある。また、セリフ文字の表示開始後、所定時間の無音期間を設けた上で、セリフ音の出力を開始するのも好適である。
また、セリフ文字の表示後にキャラクタ画像を表示するようにしてもよく、その場合にはセリフ文字の表示を開始した後、所定時間遅れてセリフ音の音声演出を開始し、その後キャラクタ画像が表示されるという流れとなる。この場合、先行して行われるセリフ文字に対応する音声演出は、その後表示されるキャラクタ画像に対応したものとすることが好適である。また、音声演出の実行後、所定時間の無音期間を設けた上で、キャラクタ画像を表示するようにしてもよい。
セリフ予告演出が、IPストリーム動画で実行される場合、音声演出に先行して発行されるディスプレイリストDLには、少なくとも、以下のコマンドが記載されている。
先ず、テクスチャコマンドSETINDEX(CM1)で、テクスチャ(例えば、IPストリーム動画の構成フレーム)のロード先を、例えば、ページ領域に設定する。
次に、TXLOADコマンド(CM2)で、テクスチャ(動画を構成する単位フレーム)をCGROMからページ領域にロードし、αブレンド演算に関する必要な情報をセットし(CM3,CM4)、最後に、ページ領域にロードしたテクスチャを、スプライトコマンドSPRITE(CM5)で、仮想描画空間の所定矩形領域に貼り付ける。ここで、貼り付け先の矩形領域を適宜に移動させることで、動画再生位置を変化させるもの好適である。
なお、セリフ予告演出が、IPストリーム動画で実行される場合は、ロードコマンドTXLOADと、補完コマンドSETTXSMPLNG と、スプライトコマンドSPRITEが使用される。なお、拡大/縮小の処理がない場合には、補完コマンドSETTXSMPLNG が省略される。
<暗転予告>
暗転予告とは、一連の変動演出中に、表示画面全体が、突然それまでの表示態様から変化して、画面全体又はほぼ全体が真っ暗になる暗転画像が出現する演出を意味する。この予告演出には、先行する動画演出を終了させた後、所定時間、暗転画像を表示するディスプレイリストDLが発行された後、先行動画の発展予告として、後続する発展動画演出が開始される第1態様と、暗転画像を表示するディスプレイリストDLを使用することなく、発展動画演出の開始時に、その動画の一部として暗転画像が出現する第2態様とが含まれる。
また、暗転画像の表示中に当選期待度を示唆する所定演出を実行するように構成してもよい。更にまた、暗転画像は表示画面のほぼ全体が真っ暗になるものに限らず、それまでの表示画面の視認性を低下させる視認性低下画像であってもよい。具体的には透過性を有する黒色画像である。
図43(b)は、第1態様の暗転画像を実現するディスプレイリストDLの構成を図示したものである。先ず、任意領域に確保したフレームバッファFBaについて、インデックス空間上の端点アドレスを特定する(L11)。表示装置DS1の描画領域を仮想描画空間に定義する(L12)。具体的には、仮想描画空間の左上基点と、右下基点の座標を所定レジスタに設定する。
次に、今サイクルで使用するフレームバッファFBaのインデックス番号をトグル的に切換えて特定する(L13)。また、SETFCOLOR コマンドにより黒色を設定し(L14)、矩形描画コマンド(RECTANGLE )を使用して、表示装置DS1の描画領域全体を黒色で塗りつぶすべく指定する(L15)。
これは、図23に示すL11~L15までの指示コマンドと全く同じであり、通常なら、その後、図43(a)のコマンドが列記されるが、暗転画像の場合には、その後、必要な個数のNOP コマンドを記載した後、EODLコマンドを記載して、EODLコマンドを含んだ全データ量を4×64バイトの整数倍に調整する。
なお、暗転画像に重ねて一又は複数の動画演出をするのも好適であり、この場合には、図43(a)に記載した指示コマンドCM1~CM5が追加的に記載される。
なお、第2態様の暗転予告の場合には、先行する動画演出も、これに継続する発展動画演出も、各演出を実現する動画フレームは、図43(a)に記載した指示コマンドCM1~CM5によって特定される。
<ズームUP/DOWN 予告>
ズーム予告とは、適当なキャラクタが、ズームアップ又はズームダウンされつつ、表示画面上を適宜に移動する演出を意味する(図44(a)参照)。このようなズーム予告は、キャラクタを描いた静止画でも実現できるが、本実施例では、顔の表情を変え、且つ、体全体に動きのあるキャラクタを使用するので、動画演出としている。
なお、図44(a)では、ズーム予告に登場するキャラクタを、便宜上、静止画の如き「A」で表現しているが、実際には「A」の部分には、表情や手足に動きのある人物/動物キャラクタが描かれる。
以上を踏まえて説明を続けると、例えば、30fps(frames per second )の3秒動画は、ズーム予告キャラクタが、ズームアップされ、その後、ズームダウンされる30×3=90枚の動画フレームFR1~FR2n-1で構成される。
そして、90枚の各動画フレームFRiを描画するディスプレイリストDLは、図23や図43(a)のように構成されるので、ロードされたテクスチャ(ズーム予告キャラクタを描いた動画フレーム)は、スプライトコマンドSPRITEよって、仮想描画空間の適所に貼り付けられる。そのため、貼り付け位置の指定を適宜に移動させるだけで、ズーム予告キャラクタを、表示画面で移動させることができる。なお、ズームアップ/ダウンの動作は、動画として実現されているので、拡大/縮小の制御は、ディスプレイリストにおいて不要である。
一方、ズーム予告キャラクタを一枚の静止画で実現する場合には、スプライトコマンドSPRITEよって、仮想描画空間の左上頂点と右下頂点で規定される矩形空間を、適宜に拡大又は縮小すれば良い。
<傾斜/回転予告>
傾斜/回転予告とは、例えば、図44(a)に示すような直立状態の元画像FR1~FR2n-1を、適宜に傾斜ないし回転させる演出を意味する。図44(b)では、例えば、ズームアップされるN枚の動画フレームFR1~FRnを、順次、時計方向に回転させている。
このような傾斜/回転予告を実現するには、矩形状の画像(静止画や動画フレームFRiを構成するテクスチャ)を三角形ポリゴンに分割し、各三角形ポリゴンを、三角ポリゴンコマンドTRIANGLE(CM5)で、仮想描画空間の適所に、直立状態又は傾斜状態で、貼り付ける必要がある。
なお、以下の説明では、矩形画像(静止画や動画フレームFRi)について、便宜上、拡大/縮小を実行しない場合を説明するが、座標位置を適宜に設定することで、拡大や縮小も可能である。この場合には、CGデータ量を増加させることなく、更に多様な演出が可能となる。
さて、図45(c)には、4頂点を有する水平W×垂直Hピクセルで構成された矩形画像(静止画や動画フレームFRi)が、第1ポリゴンと第2ポリゴンに分割された状態が示されている。そして、この実施例では、単一の三角ポリゴンコマンドTRIANGLEの実行によって、4頂点をまとめて直立状態又は傾斜状態で描画する。
但し、そのような動作を実現するため、三角ポリゴンコマンドTRIANGLEに付加すべき動作パラメータには、一の三角ポリゴンコマンドで描画すべき多角形の頂点数(情報1)、形状だけかテクスチャを含むかの設定(情報2)、三角ポリゴンのポリゴン描画方法(情報3)、仮想描画空間上での各頂点のXY座標(情報4)、情報4に対応するテクスチャのUV座標空間でのUV値(情報5)、が含まれている。
本実施例では、一の三角ポリゴンコマンドで、矩形状の4頂点を描画し、これにテクスチャ(動画フレーム)を貼り付けるので、頂点数=4と特定する情報1と、テクスチャを含むことを特定する情報2と、4頂点についてのXY座標値である情報4と、UV値である情報5とが規定されることになる。
なお、描画方法には、(1)全ての三角ポリゴンに共通の頂点を設定する三角形ファン描画と、(2)最終描画辺と、これに続いて指定された頂点で囲まれた三角形を描画する三角形ストリップ描画と、(3)三角ポリゴンを独立的に描画する三角リスト描画とが選択可能である。
図45(c)に示す通り、三角形ストリップ描画手法では、頂点0→頂点1→頂点3の順番で描画され、これに続いて、頂点3→頂点1→頂点2の順番で描画される。一方、三角形ファン描画手法では、共通頂点の頂点1が選択され、頂点1→頂点3→頂点0の順番で描画され、これに続いて、頂点1→頂点2→頂点3の順番で描画される。
但し、ここで問題にする矩形画像は、立体的な3D画像でなく、二次元の2D画像であるので、不要部分を消去するカリング(culling )処理が問題にならず、何れを選択しても大差はないが、本実施例では、三角形ストリップ描画を選択している。なお、本明細書では、矩形画像との用語を使用するが、透明部分を含んで矩形であって、必ずしも、画像輪郭が矩形状となるとは限らないのは言うまでもない。
以上を踏まえて、三角ポリゴンコマンドTRIANGLEの動作パラメータを算出する演出制御CPU63の動作を図45(a)に基づいて説明する。先ず、水平W×垂直Hピクセルで構成された矩形画像の中心を、仮想描画空間の原点に配置した場合の4頂点を特定する(ST61)。
図12(c)に示す通り、仮想描画空間において、X座標は原点から右方向が正であり、Y座標は、原点から下方向が正であるので、4頂点の座標(x,y)は、頂点0(-W/2,-H/2)と、頂点1(W/2,-H/2)と、頂点2(W/2,H/2)と、頂点3(-W/2,H/2)となる。
次に、図45(b)の回転行列を使用する行列演算によって、原点位置にある矩形画像を時計方向に回転角度θだけ回転した後の4頂点を算出する(ST62)。なお、回転行列における時計方向は、仮想描画空間では、半時計方向になるので、回転角度は、実際には-θである。この回転角度は、動画進行に拘わらず、常に直立状態のテクスチャからの回転角度となる。すなわち、例え、テクスチャを回転角度θ1で定速回転させる場合でも、回転角度は、一定値θ1ではなく、例えば、θ1→2*θ1→3*θ1→4*θ1→5*θ1・・・のように順次増加させる必要がある。
次に、ステップST62の処理で算出した4頂点(X,Y)を、任意の移動先に移動させる(ST63)。具体的には、矩形画像の中心点の移動先の座標値が(X0,Y0)であれば、4頂点について、各々、X=X+X0、Y=Y+Y0の演算を実行して、回転後の4頂点の座標を確定する。
そして、最後に、三角ポリゴンコマンドTRIANGLEの動作パラメータ(4)を付加し、これに対応して、直立状態の矩形画像(テクスチャ)について、4頂点のUV座標系の座標値である動作パラメータ(5)を付加する。情報(1)~(4)についても同様である。
なお、仮想描画空間上での各頂点のXY座標である動作パラメータ(4)は、動画進行に応じて適宜に変化し、矩形画像(テクスチャ)の表示内容も変化するが、本実施例では、直立状態のテクスチャの縦横寸法が、変わらないので、動作パラメータ(4)は、常に同じである。
本実施例では、以上の演算が、傾斜/回転予告演出のディスプレイの発行毎に毎回実行される。この点は、演出制御CPU63にとって、やや煩雑であり、テクスチャの回転角度と配置位置だけをVDP回路52に指定することも考えられる。
しかし、そのような構成を採ると、VDP回路52において、回転行列演算をする必要が生じ、計算負荷が増加する。そこで、他にも複雑な算術演算が必要であるVDP回路52の計算負担を軽減化するべく、本実施例では、演出制御CPU63が、座標位置を計算している。
但し、演出制御CPU63が行列計算を実行するには、三角関数の演算ルーチン(三角関数用のライブラリ)をメモリ53に配置しておく必要があるだけでなく、それなりの処理時間を要するので、計算処理を高速化する工夫を設けるのが好ましい。
図45(d)は、計算負荷を軽減した実施例であり、矩形画像の中心点から各頂点までの距離(半径r)と、原点位置に配置した場合のテクスチャ4頂点の基準角度α(図45(e)参照)と、に基づいて必要な計算を実行する実施例を示している。
先ず、水平W×垂直Hピクセルで構成された矩形画像の中心を、仮想描画空間の原点に配置した場合のテクスチャ4頂点の半径rと、基準角度αを特定する(ST71)。
次に、4頂点について、回転角度θだけ半時計方向に回転させた場合の座標値を図45(f)の変換式に基づいて算出する(ST72)。なお、図45(f)の変換式の算出過程は、図46に示されている。
次に、ステップST72の処理で算出した4頂点(X,Y)の移動先の座標値が(X0,Y0)であれば、4頂点について、各々、X=X+X0、Y=Y+Y0の演算を実行して、回転後の4頂点の座標を確定する(ST73)。
そして、最後に、動作パラメータ(1)~(5)を付加して、三角ポリゴンコマンドTRIANGLEを完成し、ディスプレイリストDLに追加記載する(ST74)。
ところで、図45~図46では、直立状態で縦長の矩形画像(テクスチャ)を例示しているが、テクスチャを正方形に形成すれば、ルート記号SQRを使用して、H=W=r*SQR(2)となり、図45(f)の変換式が簡素化される。また、Cos(θ)=Sin(90+θ)の関係があるので、図45(f)の変換式を半径rと回転角θと、Sin関数値だけで表現することができる。
そこで、回転角度-180度~0度~180度について、各々のSin関数値を記憶するSINテーブルAngle Table (図46(c)参照)を用意しておくのが好適であり、この場合には、三角関数の演算ルーチンをメモリ53に配置しておく必要がなくなり、且つ、三角関数計算の処理速度を高速化することができる。
なお、本発明は、具体的な記載内容に限定されないが、好適には、前記データ生成処理(SS4a)、及び前記データ出力処理(SS4b)に先行して、前記表示回路の動作を規定する表示クロックの周波数(Fdot)が規定されるべきである。また、前記データ出力処理(SS4b)に先行して、前記LVDS回路についての設定処理が実行されるのも好適である。また、前記LVDS信号は、単一のLVDS伝送路、又は、一対のLVDS伝送路を経由して、前記表示回路に伝送されるのが好適である。
何れの構成でも、前記表示装置は、前記LVDS信号に基づいて、前記表示画面を構成する一群の表示素子を駆動する表示駆動回路(MONI)と、前記表示画面を照明する照明回路(BL)と、を有して構成され、前記データ生成処理(SS4a)と前記データ出力処理(SS4b)は、前記照明回路(BL)が照明動作を開始する以前に実行されるのが好適である。ここで、前記画像制御手段は、前記照明回路(BL)の動作を複数の制御信号で制御するのが好適である。
また、前記画像制御手段は、前記照明動作の開始に先行して、前記表示駆動回路(MONI)が一ラインの表示素子の描画に要する水平周期(TH)を、前記表示回路の動作を規定する表示クロックの水平サイクル数(THc)に基づいて規定するのが好適である。前記水平周期(TH)は、画像データが伝送されるタイミングと、画像データが伝送されないタイミングとに区分されるのが好適であり、前記照明動作の開始に先行して、前記画像制御手段は、前記表示駆動回路(MONI)の動作に関する所定のライン数(TVl)を規定しており、前記ライン数(TVl)は、前記水平周期(TH)と、前記表示駆動回路(MONI)が一フレーム分の画像を更新するに要する更新周期(FR)と、前記表示回路の動作を規定する表示クロックの周波数(Fdot)とに基づいて、FR=THc×TVl/Fdotと規定されるのが好適である。
次に、図49は、モータ演出を実現する更に別の実施例を説明する図面であり、ここでは、SMC回路78や、入出力回路64sを使用することなくモータ演出を実行している。そして、このモータ演出は、4個のステッピングモータMO1~MO4を駆動する4個のモータドライバDV1~DV4と、原点センサなどのセンサ信号SENをCPU回路51にシリアル伝送するセンサ基板86などによって実現される。
モータドライバDV1~DV4の動作内容は、演出制御プログラムを実行するCPU回路51の演出制御CPU63によって統括制御されるが、モータドライバDV3~DV4については、演出制御CPU63の指示に基づいて動作するモータコントローラ(Motor Controller)85によって駆動制御される。なお、本明細書において駆動制御とは、回転位置を進める回転駆動と、停止位置を維持する停止駆動を含む概念である。
先に説明した通り、複合チップ50のVDP回路52には、SMC回路78(Serial Motor Controller )が内蔵されており、このSMC回路78を活用してモータドライバDV1~DV4を駆動するのも好適であるが、本実施例では、より高性能なモータコントローラ85を使用することで、演出制御CPU63の制御負担を大幅に軽減するだけでなく、高速で高度なモータ演出を実現している。
すなわち、本実施例では、ステッピングモータMO3~MO4を、適宜に回転駆動して、役物を急発進又は急停止させる予告演出や、自然落下を超えるスピードで役物を移動させる予告演出を実行するが、これらの斬新なモータ演出を実行しても、脱調などのトラブルが生じない駆動制御を実現している。ここで、脱調とは、モータドライバDVが出力する歩進パルス(ステッピングモータが受ける入力パルス信号)に対応して、モータが正常に回転しない現象を意味し、過負荷や速度変化の急変時に生じることがある。
以下、上記の効果を実現する図49の回路構成について、詳細に説明する。先ず、ステッピングモータMO1~MO4は、全てバイポーラ型のステッピングモータを採用しており、A相及びB相のモータ巻線に双方向の駆動電流を流している(バイポーラ駆動)。引用文献5や引用文献6では、専ら、駆動回路を簡素化することを目的として、ユニポーラ型のモータを使用しているが、本実施例では、同じ消費電力でもユニポーラ型より高い出力トルクが得られるバイポーラ型のモータを採用している。
上記の構成に対応して、各モータを駆動するモータドライバDV1~DV4は、全て、バイポーラ駆動が可能な駆動回路を内蔵している。また、100%駆動モードにおいて、最大電流MAXと最小電流MAX-δとの間で、定電流制御を実行可能な内部回路を有している。そして、モータドライバDV1~DV2は、CPU回路51に内蔵されたSIOポート61(シリアルポート)と、PIOポート62(パラレルポート)によって制御され、モータドライバDV3~DV4は、モータコントローラ85によって制御されている。なお、モータコントローラ85は、CPU回路51に内蔵されたSIOポート61と、PIOポート62と、コンペアマッチタイマCMTとによって制御されている。
図50(a)は、CPU回路51に内蔵されたSIOポート61の内部構成を図示したものである。ここで、SIOポート61は、SPI(Serial Peripheral Interface )方式、つまり、シフトクロックSCKに同期した三線式のシリアル送受信動作が実行可能に構成されている。そして、このSIOポート(シリアルポート)61は、合計6個の同一回路(CH0~CH5)で構成されており、CH0のシリアルポートSIO_0 と、モータドライバDV1~DV2及びセンサ基板86とは、第1のSPI通信路で接続されている。一方、CH1のシリアルポートSIO_1 と、モータコントローラ85とは、第2のSPI通信路で接続されている。
先ず、SIOポート61の内部構成について説明すると、図50(a)に示す通り、SIOポート61は、CH0~CH5とも、シリアルデータTXDを送信する8ビット長の送信シフトレジスタSCTSR と、シリアルデータRXDを受信する8ビット長の受信シフトレジスタSCRSR と、送信データを最高16バイト蓄積可能な16段のFIFOデータレジスタSCFTDRと、受信データを最高16バイト蓄積可能な16段のFIFOデータレジスタSCFRDRと、任意の周波数のシフトクロックSCKを生成可能なボーレートジェネレータBGN と、演出制御CPU63が設定した各種の制御パラメータに基づいて、SIOポート61の内部回路を動作させる送受信コントローラCTL と、演出制御CPU63が送受信コントローラCTL をアクセスするとき、各種データを中継するインタフェイス回路BUSIF と、を有して構成されている。
本実施例では、演出制御CPU63が、FIFOデータレジスタSCFTDRに格納したN*8ビットの送信データは、8ビット長のシリアル送信処理が終わるごとに、自動的に、送信シフトレジスタSCTSR に転送され、FIFOデータレジスタSCFTDRが空になるまでシリアル送信処理が継続されるよう初期的に動作設定されている。また、受信シフトレジスタSCRSR にシリアル受信される受信データは、8ビットに達する毎に、FIFOデータレジスタSCFRDRに蓄積されるよう初期的に動作設定されている。
なお、送受信コントローラCTLは、オーバランエラーBRI、フレーミングエラーやパリティエラーを示す受信エラーERI、受信FIFOデータフルRXI、送信FIFOデータエンプティTXlなどを示す各種の割込み信号が、演出制御CPU63に対して出力可能に構成されている。
以下、CH0のシリアルポート61を、SIO_0 と表記し、CH1のシリアルポートをSIO_1 と表記して説明を続ける。図50(b)は、シリアルポートSIO_0 と、モータドライバDV1~DV2及びセンサ基板86と、の接続関係を図示したものである。
シリアルポートSIO_0 は、演出制御CPU63が送受信コントローラCTL に設定した動作パラメータに基づいて動作する。具体的には、送信シフトレジスタSCTSR は、演出制御CPU63がFIFOデータレジスタSCFTDRに格納した最高2×8ビット長の駆動データSDATAを、8ビット毎にシフトクロックSCKに同期してシリアル送信する。この実施例では、シリアルポートSIO_0 のボーレートは、例えば、250kbpsに設定されており、16ビット長の駆動データSDATAの送信時間は、16/(250*103)=0.064mSとなる。
モータMO1,MO2は、本実施例では、二相励磁されているが、各8ビットの駆動データSDATAは、各モータMO1,MO2の一ステップ分の歩進動作を指示する4ビットの励磁データ(PHASE指示)と、モータ巻線A/Bに流す駆動電流を規定する4ビットの設定値(電流指示値)と、で構成されている。
そして、各モータドライバDV1,DV2は、シリアルポートSIO_0 から受けた駆動データSDATA(8ビット)に含まれる励磁データ(4ビット)に対応する駆動信号を、PIOポート62から受ける歩進クロックLATCHに同期して、各モータMO1,MO2に出力して、駆動データSDATAで指示された電流指示値(4ビット)に対応する駆動電流で駆動する。電流指示値(4ビット長)によって、0%を含む16通りの電流指示が可能であり、電流指示値に基づく駆動電流に比例して出力トルクが増加する。この意味では、電流指示値は、トルク設定を意味する。
本実施例では、駆動データSDATAと、歩進クロックLATCHとは、1mS毎に出力されるので、モータMO1,MO2は、最速で1mS毎にステップ回転することになる。そして、駆動データSDATAは、1mS毎に更新可能であるので、モータMO1,MO2は、最速で1秒間に1000ステップ歩進動作することになる。
一方、各モータMO1,MO2をゆっくり回転させたい場合には、未更新の同一駆動データSDATAを複数回連続して出力するか、或いは、駆動データSDATAやシフトクロックSCKを出力しない待機期間を設ける。なお、同一の駆動データを複数N回連続して出力する場合には、2回目からN-1回目までの停止駆動時の電流指示値を、1回目の電流指示値より減少させるのが好適である。それは、駆動電流に比例して出力トルクが増加する一方で、駆動電流に対応して、消費電力も大きく増加するので、停止駆動時の無駄な消費電力を抑制するためである。
ところで、本実施例では、1mS毎に16個のシフトクロックSCKが出力されるが、16個のシフトクロックSCKは、図49や図50(b)に示す通り、モータドライバDV1と、モータドライバDV2と、センサ基板86に共通的に供給される。
図51(a)に示すように、センサ基板86には、図51(b)に内部構成を示すシフトレジスタ90が搭載されており、ラッチ信号LOADを受けた後、シフトレジスタ90は、シフトクロックSCKに同期して合計8ビットのセンサ信号SENをシリアル送信する。したがって、本実施例では、シリアルポートSIO_0 が1mS毎に出力する合計16個のシフトクロックSCKのうち、先頭8個のシフトクロックSCKに基づいて、8ビット長のセンサ信号SENが、シリアルポートSIO_0 に取得されることになる。センサ信号SENには、各モータMO1,MO2の回転軸上の基準点が、所定の原点位置を通過したことを示す原点センサ信号や、役物が所定位置に達したいことを示すセンサ信号CHKが含まれている。
次に、図50(c)は、シリアルポートSIO_1 と、モータコントローラ85と、の接続関係を図示したものである。この実施例では、モータコントローラ85が、ドライバDV3とドライバDV4に、各々、歩進クロック(パルス信号)を出力しており、モータMO3,MO4は、受けた歩進クロックに同期してステップ回転している。また、各モータMO3,MO4の回転位置や、役物が目的位置に達したことを示すセンサ信号CHKが、モータドライバ85に取得されるよう構成されている。
モータコントローラ85は、シリアルポートSIO_1 から受けるシフトクロックSCKに同期して、各種の制御データMOSIをシリアルポートSIO_1 から受ける一方で、センサ信号MISOをシリアルポートSIO_1 にシリアル送信している。また、このモータコントローラ85は、コンペアマッチタイマCMTが生成する動作中信号SSを受けている。この動作中信号SSは、モータコントローラ85とシリアルポートSIO_1 とがシリアル送受信動作を実行中であることを示している。
図49の左上部に記載の通り、コンペアマッチタイマCMTは、演出制御CPU63の制御に基づいて、基準クロックのカウント動作を開始し、その計数値が、所定の上限値MXに達すると、コンペアマッチ割込み信号を出力するよう構成され、割込み信号を受けた演出制御CPU63は、コンペアマッチタイマCMTのカウント動作を終了させている。
上記の動作は、演出制御CPU63の制御に基づき、1mS毎に繰り返し実行され、カウント動作中であることを示す動作中信号SSは、論理反転されてモータコントローラ85に伝送されている。ここで、動作中信号SSのパルス幅は、CH1のシリアルポートSIO_1 が、シリアル送受信処理に要する時間に対応して、1mS以内の最適値に決定されている。この意味において、動作中信号SSは、シリアルポートSIO_1 の動作中信号でもあり、そのパルス幅は、基準クロックのパルス周期と、コンペアマッチ動作の上限値MXの積で決まる。
特に限定されないが、シリアルポートSIO_1 についても、シフトクロックSCKのボーレートが、250kbpsに設定されている。そして、間欠的にシリアル送信される制御データMOSIは、本実施例では、FIFOデータレジスタSCFTDRの蓄積容量に対応して、最高、16*8ビットに制限しており、駆動データMOSIの送信時間は、最大でも、16*8/(250*103)=0.512msとなるよう制限されている。なお、原点センサ信号の取得に、32個のシフトクロックSCKを要するので、シリアル受信の動作時間は、32/(250*103)=0.128mSとなる。なお、本実施例では、動作周期1mSを考慮して、一回のシリアル送信を16*8ビット長に制限としているが、ボーレートを高めることで、それ以上に設定することもできる。
制御データMOSIには、ステッピングモータMO3,MO4の一連の動作を規定する一連の指示データINS1と、駆動巻線に流す駆動電流の最大値MAXを規定する電流指示データINS2とが、含まれている。そして、電流指示データINS2に基づいて生成された2値信号SETx、SETyが設定回路LMTに供給され、設定回路LMTが出力する所定レベルのアナログ信号に基づいて、モータドライバDV3,DV4が、100%駆動モードにおいて、最小値MAX-δと、最大値MAXの範囲内で定電流制御動作を実行するようになっている。なお、100%未満の駆動モード(待機動作モード)を採ることもできるが、この点については後述する。
一般に、ステッピングモータを高速回転させると、駆動電流の切り替え時の立ち上がりが遅れることで、出力トルクが低下するが、本実施例では、敢えて、モータの最大定格電圧(24V)より10V以上も高いモータ駆動電圧(35V)を与える一方で、このモータ駆動電流をチョッピングする定電流制御を実行することで、安定した高速回転を実現している。
図52(a)は、モータドライバDV1,DV2の内部構成を示すブロック図である。図示の通り、モータドライバDV1,DV2は、シリアルポートSIO_0 からシフトクロックSCKを受けるSCK 端子と、PIOポート62から歩進クロックLATCHを受けるRCK 端子と、シリアルポートSIO_0 から制御データSDATAを受けるSI端子と、PIOポート62からリセット信号RESETを受けるSCLR端子及びSTANDBY 端子と、100%定電流制御における最大電流MAXを規定するアナログ信号を受けるVREF_A端子及びVREF_B端子と、定電流制御用の内部クロックの周波数を規定する信号を受けるOSCM端子と、モータ駆動電圧35Vを受けるVM端子と、VM端子から受けた直流電圧35Vを降圧させて生成した定電圧5Vを出力するVCC 端子と、定電流制御用の電流検出抵抗RS_A/RS_B(例えば0.33Ω)が接続されるRS_A端子及びRS_B端子と、ステッピングモータのA相巻線に駆動電流を出力するOUT_A ±端子と、ステッピングモータのB相巻線に駆動電流を出力するOUT_B ±端子と、Lレベルの電圧を受けることで、内部回路が動作可能となるG-端子と、を有して構成されている。
直流電圧35Vを受けるVM端子には、図示の通り、33μFの導電性高分子コンデンサが接続されている。先に説明した通り、本明細書において、導電性高分子コンデンサとは、アルミ電解コンデンサの電解液の代わりに、導電性高分子と電解液とを融合させた電解質を配置したハイブリッドコンデンサを意味する。そして、この導電性高分子コンデンサは、定格電圧(Rated Voltage )50Vであって、直径6.3mm、高さ7.7mmの円筒形状の表面実装品である。
そして、5V給電時における静電容量は、公称値の(33μF)の-10%未満に維持される。また、等価直列抵抗ESRは、公称値で40mΩである。
一般的な回路構成とは異なり、図52のドライバDV1,DV2では、電解コンデンサにセラミックコンデンサを並列接続することなく、モータドライバ(DV1,DV2)毎に、単一のコンデンサを配置することで、所望の平滑機能とデカップリング動作を実現しており、他の回路素子の配置スペースを消費しない。すなわち、導電性高分子コンデンサから、少なくとも半径20mmの範囲内に、追加して平滑コンデンサやデカップリングコンデンサが配置されることはない。
また、表面実装された円筒形の頂面には、静電容量を示す数値「33」と、定格電圧50Vを示す記号「H」が記載され、また、マイナス極性の方向が、黒塗り記号で特定されているので、目視確認で、容易に基板上の部品チェックができる。
図示の通り、モータドライバDV1,DV2は、RS_A端子やRS_B端子の電圧に基づいて出力トルクを制御するトルク制御部(torque control、VREF comp 、Bridge A NF level set )と、8ビット長のシフトレジスタ(shift register)と、定電圧生成部(VCC_REG )と、中央制御部(Main control Logic)と、内部クロックなどの発振部(oscillator、Internal oscillator )と、ブリッジ駆動回路(Motor output stage Bridge A/B )と、過熱検出回路(TSD )と、過電流検出回路(ISD )と、35V電源のパワーオンリセット回路(POR )と、を内蔵して構成されている。
上記の回路構成を有するモータドライバを駆動するため、SI端子に供給される制御データSDATA(8ビット)は、一ステップ分の歩進動作を指示する励磁データ(4ビットPHASE指示)と、モータ巻線A/Bに流す駆動電流を規定する電流指示値(4ビット)と、で構成されている。
また、SCLR端子とSTANDBY 端子には、電源投入時にLレベルのリセット信号RESETを受けた後は、Hレベルに維持されるので、内部回路は定常的に動作可能状態となる。図示の通り、G-端子は、定常的にLレベルであるので、前記のリセット動作が電源投入後に可能となる。
また、VREF_A端子及びVREF_B端子には、VCC 端子から出力される定電圧5Vを分圧した指示電圧が供給されており、本実施例では、100%駆動モードにおいて、定電流制御における最大電流MAXが、例えば、545mAに規定されている。
先に説明したように、制御データSDATAに含まれる電流指示値は、4ビット長であって、最大電流値は、0%を含んだ16段階に設定できる。そのため、この設定値に基づいて、実際の最大電流は、MAX値の100%以外にも、MAX値の94%、MAX値の86%、・・・MAX値の5%の電流値に設定可能となる。そのため、以下に説明する定電流制御の説明において、任意%駆動モードにおける最大電流を、特に、電流上限値NFと称することにする。例えば、N%駆動モードにおける電流上限値NFは、最大電流MAXに対して、MAX*N/100の関係となる。
先に説明した通り、本実施例では、1mSの動作周期において、同一の駆動データを複数N回連続して出力する低速回転時には、1回目とN回目の電流指示値を100%とし、2回目からN-1回目までの電流指示値を、例えば、25%に抑制して消費電力を抑制している。この場合、電流上限値NKが最大電流MAXに対して、NF=0.25*MAXとなるので消費電力が大幅(6.2%程度)に抑制される。
図52に示す通り、OSCM端子には、定電圧5Vを供給する抵抗2.7KΩと、グランドラインに連結されたコンデンサ330pFと、が接続されることで、定電流制御を管理する内部クロックの周波数が、1578kHz程度に設定されている。内部クロックの周波数は、駆動電流の検出周期を規定しており、モータ駆動電流を定電流制御するためには、後述する制御手法1では、1300kHz~1800kHzに設定するのが好適である。
先に説明した通り、モータ駆動電流は、100%駆動モードにおける定電流制御として、最大値MAXと最小値MAX-δとの間で増減制御される。ここで、定電流制御周期(チョッピング周期Tchop)は、適宜に設定可能であるが、この種のモータ演出において、モータ駆動電流を定電流制御するためには、後述する制御手法1において、チョッピング周期Tchop=8~12μSとするのが好適であり、本実施例では、定電流制御のチョッピング周期Tchopを10μSにしている。
図52(b)~(c)に示す通り、本実施例では、100%駆動モードでは、チョッピング周期の開始時から、モータ駆動電流が増加を始め、MAX値=545mAに至った後は、次のチョッピング周期の開始まで減少を続けることになる。なお、100%駆動モード未満の駆動モードにすれば、MAX値が適宜に低下することで、消費電力が抑制されることは先に説明した通りである。
次に、図52(d)と図52(e)は、駆動巻線A/Bを駆動するBridgeA駆動回路と、BridgeB駆動回路を示す回路図であり、ブリッジ駆動回路(Motor output stage Bridge A/B )の内部構成と、電流検出抵抗RS_A/RS_Bと、モータ駆動電圧35Vと、を示している。図示の通り、何れの駆動回路も、高圧側のP型MOSトランジスタU1,U2と、低圧側のN型MOSトランジスタL1,L2とで、バイポーラ駆動を実現するHブリッジを構成している。
実施例の場合、バイポーラ型ステッピングモータのA相巻線とB相巻線は、何れも、一相当たりの巻線インダクタンス値が、例えば4.2mH、その内部抵抗21Ωである。そのため、モータ駆動電圧を35Vとした場合、各巻線に流れる定常電流(飽和状態の直流電流)は、35/21=1.7Aとなり、このモータの定格電流(1A)を大幅に超える。しかし、本実施例では、最大電流を545mAに抑制する定電流制御を実行することで、トルク低下を回避して、ステッピングモータの高速回転を実現している。
図53(a)は、ブリッジ駆動回路(Motor output stage Bridge A/B )の動作を説明する図面であり、一のチョッピング周期Tchopにおける、コイル充電動作CHARGEと、コイルSLOW放電動作と、コイルFAST放電動作と、を示す図面である。図示の通り、SLOW放電は、低電圧側のトランジスタL1,L2を経由してコイル電流を放電させる動作であり、一方、FAST放電は、CHRGE動作時にOFF状態であったトラジスタをON遷移させる一方、ON状態であったトランジスタをOFF遷移させる動作である。
電流リップルが小さく、且つ、平均電流が大きい点では、FAST放電よりSLOW放電の方が優れているが、SLOW放電を採ると、ある速度以上の高速動作では、これに追随した正常動作が担保されない。そこで、本実施例では、ステッピングモータを高速回転させる目的から、平均電流が高いSLOW放電と、高速動作に適したFAST放電と、を組み合わせることで、コイル放電電流を最適化している。
なお、本実施例では、ステッピングモータをバイポーラ駆動するので、トランジスタの動作状態は、図52(a)の右向きの駆動電流を実現する図52(b)のON/OFF状態と、左向きの駆動電流を実現する図52(c)のON/OFF状態とに、適宜に切り替わることになる。
以上を踏まえて、図53(a)に示す充電動作と放電動作について更に説明すると、CHARGE動作時には、Hブリッジの対角位置の高圧側と低圧側のトランジスタU1,L2がON動作し、逆対角位置のトラジスタU2,L1がOFF状態となる。仮に、コイル巻線のインダクタンスLが4.2mH、内部抵抗Rが21Ωであるとすると、コイルの時定数の逆数R/Lは、5000となる(時定数は、0.2mS)。
そのため、CHARGE動作開始時のコイル初期電流をI0とし、モータ駆動電圧35VをEとすると、CHARGE動作開始からの経過時間tにおけるコイル電流Iは、I=E/R+(I0-E/R)*EXP(-5000*t)となり、仮にI0=0.5[A]なら、I≒1.67-1.17*EXP(-5000+t)[A]となる。なお、電流検出抵抗RS_A/RS_Bは、例えば0.33Ωであって、内部抵抗R=21Ωより格段に低いので無視できる。
一方、SLOW放電開始時のコイル初期電流をI0とすると、SLOW放電動作開始からの経過時間tにおけるコイル電流Iは、I=I0*EXP(-5000*t)となり、仮にI0=0.5[A]なら、I≒0.5*EXP(-5000+t)[A]となる。また、FAST放電開始時のコイル初期電流をI0とすると、FAST放電動作開始からの経過時間tにおけるコイル電流Iは、I=-E/R+(I0+E/R)*EXP(-5000*t)となり、仮にI0=0.5[A]なら、I≒-1.67+2.17*EXP(-5000+t)[A]となる。
図53(c)は、SLOW放電とFAST放電について、各々の放電曲線を示しており、初期電流I0=0.5[A]から急激に電流が減少するFAST放電と、破線に示すように、ゆっくり電流が減少するSLOW放電と、が示されている。因みに、この実施例では、ステッピングモータをバイポーラ駆動するので、FAST放電動作によって、コイル駆動電流の方向が切り替わるが、FAST放電では、その放電動作開始後、0.12mS程度で、0.5Aから-0.5Aにコイル駆動電流が移行することになる。
なお、本実施例では、100%駆動モードにおける最大電流MAXを545mAに設定しているが、図53(c)では、大型矢印で示す最大電流の振幅幅を、作図の便宜上、±500mAとしている。また、500mAとこれに極めて近い最低電流との間で実行される定電流制御については、その振幅幅を小型矢印で図示している。
図54(a)は、図53(a)で説明したCHARGE動作、SLOW動作、及びFAST動作を組み合わせた定電流制御動作を説明するタイムチャートであり、駆動電流Ioutの増減状態を示している。
図54(a)は、図52のモータドライバDV1,DV2で採用した制御方法1を図示したものであり、一のチョッピング周期Tchopにおいて、CHARGE→SLOW→FASTの順番で制御を推移させている。図示の動作において、チョッピング周期Tchopは、図52(b)の場合と同様、周波数1.6MHz程度の内部クロックの16個分であって10μSとしている。先に説明した通り、制御方法1を採る場合には、チョッピング周期Tchopを8~12μS程度とするのが好適である。
図示の制御手法1では、CHARGE動作において、駆動電流Ioutが電流上限値NFに達した後、SLOW動作に移行し、この実施例では、残りクロック数が6個に達したタイミングで、FAST動作に移行させている。この制御方法1は、FAST動作の動作時間を固定的に確保できるメリットがある。なお、図57に示すモータドライバDV3,DV4においても、この制御方法1を採用しても良いのは勿論である。
次に、図54(b)は、一のチョッピング周期Tchopにおいて、CHARGE→FAST→SLOWの順番で制御を推移させる制御方法2を示している。図示の動作において、チョッピング周期Tchopは、周波数1.18MHz程度の内部クロックの16個分であって13.56μSとしている。特に限定されないが、制御手法2を採用する場合、この種のモータ制御では、定電流制御周期(チョッピング周期)を、6~25μS程度とするのが好適である。
そして、CHARGE動作において、駆動電流Ioutが電流上限値NFに達した後、先ず、FAST動作に移行し、所定の閾値THまで降下すると、その後は、SLOW動作に移行させている。この制御方法2は、SLOW動作の開始電流を、閾値THによって固定化することができ、必要な平均電流を確保できるメリットがある。但し、電流上限値や、閾値の検出遅れを避けるため、内部クロックは、640kHz~2400kHzとすべきである。
なお、この制御方法2では、必ずしも、閾値THを固定的に設定する必要はなく、所定の平均電流が維持されるよう、電流減衰状況などに対応して、適宜に閾値THを変更させるのが好適である。この制御方法2は、図57に示すモータドライバDV3,DV4で採用されているが、図52に示すモータドライバDV1,DV2でも、制御方法1に代えて、制御方法2を採用しても良いのは勿論である。
図55は、モータドライバDV1,DV2にシリアル送信される制御データSDATAの構成を説明するため、モータドライバの一部を詳細に図示したものである。具体的には、図55には、図52のトルク制御部(torque control、VREF comp 、Bridge A NF level set )と、8ビット長のシフトレジスタ(shift register)と、中央制御部(Main control Logic)と、を注出して図示している。
先に説明した通り、制御データSDATAには、一ステップ分の歩進動作を指示する励磁データ(PHASE指示値4ビット)と、モータ巻線A/Bに流す駆動電流を規定する電流指示値(4ビット)と、が含まれる。そして、これら8ビットデータは、パラレル変換されて記憶レジスタ(storage register)に保存された後、歩進クロックLATCHに同期して、入力回路(Logic input Gate)にラッチされると共に、中央制御部(Motor Control Logic )に供給される。
そして、中央制御部(Motor Control Logic )は、励磁データ(4ビット)に基づいてPHASE信号を生成すると共に、電流指示値(4ビット)に基づいて、定電流制御における電流上限値NFを規定する。ここで、電流上限値NFは、100%駆動モードでは、最大電流MAXに一致するが、100%未満の駆動モードでは、駆動モードに対応した電流上限値となる。
出力トルクは、コイル巻線に流れる駆動電流に対応するので、駆動電流が高いほど、出力トルクが高まる点で好適であるが、停止状態を維持するためには、それほどの出力トルクを要しない。そこで、本実施例では、先に説明した通り、必要に応じて、電流上限値NFを切り替えて無駄な消費電力を抑制している。
また、制御データSDATAに含まれる4ビット長の励磁データによって、2相励磁、1-2相励など適宜な励磁モードを採ることができるが、本実施例では、ステッピングモータMO1~MO2を2相励磁している。明らかなように、同一の励磁データが、繰り返しシリアル送信された場合には、ステッピングモータはステップ移動(歩進)せず、その停止状態を維持するべく停止駆動される。そのため、先に説明した通り、この停止駆動時には、電流指示値(4ビット)を低下させて消費電力を抑制している。
なお、停止駆動は、励磁データ(PHASE指示値4ビット)のシリアル送信が途絶えた後も、上限値NFに基づく定電流制御として実行される。また、励磁データの送信が途絶えた後、歩進クロックLATCHだけが定期的に供給される場合も、記憶レジスタ(storage register)に保存されている励磁データと電流指示値に基づいた定電流制御によって停止駆動が繰り返される。
図56は、シリアルポートSIO_0 からモータドライバDV1/DV2が受ける駆動データDATA、シフトクロックSCK、及び、歩進クロックLATCHと、モータドライバDV1~DV2がステッピングモータMO1/MO2に出力するA相とB相の駆動電流Ioutとの関係を図示したものである。駆動電流は、図53で説明した制御方法1によって定電流制御されており、チョッピング周期Tchop=10μSでの定電流制御の動作状態がノコギリ歯状に示されている。
PHASE信号は、励磁データ(4ビット)の推移に対応して、A相とB相について、図示例では、HH:電流ベクトルA→LH:電流ベクトルB→LL:電流ベクトルC→HL:電流ベクトルDと推移しており、時計回転CWを実現している。また、電流指示値(4ビット)は、全て1111であり、ステッピングモータMO1/MO2は、このタイミングでは100%駆動モードで動作している。
先に説明した通り、シリアルポートSIO_0 は、ボーレート250kbpsの速度でシフトクロックSCKを出力しているので、励磁データ(4ビット)及び電流指示値(4ビット)のシリアル送信は、32μSで完了する。一方、PIOポート62は、1mS毎に、歩進クロックLATCHを出力するので、図56に電流ベクトルA、電流ベクトルB、電流ベクトルC、電流ベクトルDの間には、各々、実際には、968μS程度(=1000-32)の大きな隙間が存在することになる。
図57は、モータドライバDV3~DV4の内部構成を示すブロック図である。図示の通り、このモータドライバDV3/DV4は、励磁方式の設定データ(3ビット)を受けるDMODE0~DMODE2端子と、回転方向の指定を受けるCW/CCW端子と、歩進クロックを受けるCLK 端子と、リセット信号を受けるRESET 端子と、モータ駆動動作の許可/禁止の許否指令を受けるENABLE端子と、モータ駆動電流を検出するための検出抵抗(例えば0.33Ω)が接続されるRSA 端子及びRSB 端子と、定電流制御における電流上限値NFを規定する設定電圧を受けるVREFA 端子及びVREFB 端子と、モータ駆動電圧35Vを受けるVM端子と、内部で生成した定電圧5Vを出力するVCC 端子と、内部クロックを規定するためのOSCM端子と、PHASE信号の進行をモニタ可能なMO端子と、内部エラー状態をモニタ可能なLO端子と、駆動電流Ioutを出力するOUTA±端子及びOUTB±端子と、を有して構成されている。
そして、モータドライバDV3/DV4は、OSCM端子への接続素子に基づいて内部クロックを生成する発振回路(Motor Oscillator,OSC-Clock Converter )と、VM端子に受ける駆動電圧35Vに基づいて定電圧5Vを生成する定電圧回路(VCC Regulator )と、VREFA 端子やVREFB 端子に受ける電圧に基づいて、定電流制御の上限電流NFを規定する電流制御回路(Current Reference Setting ,Current Level Set )と、外部から受ける各種の指令に対応した内部信号を生成する信号復元回路(Signal Decode Logic )と、A相とB相のモータ駆動電流Ioutを監視する一対の監視回路(Current Comp)と、駆動巻線A/Bを駆動する一対の駆動回路(H-bridge)と、過熱検出回路(TSD )と、過電流検出回路(ISD )と、35V電源のパワーオンリセット回路(Power-On Reset)と、各部の動作を制御する中央制御部(Motor Control logic )と、を有して構成されている。
図示の通り、直流電圧35Vを受けるVM端子には、図52の場合と同じ33μFの導電性高分子コンデンサ、すなわち、アルミ電解コンデンサの電解液の代わりに導電性高分子と電解液とを融合させた電解質を配置したハイブリッドコンデンサが接続されている。図52の場合と同様、この導電性高分子コンデンサも、定格電圧(Rated Voltage )50Vであって、直径6.3mm、高さ7.7mmの円筒形状の表面実装品である。そして、モータドライバ(DV3,DV4)毎に、単一のコンデンサを配置するだけで、所望のデカップリング動作を実現することができる。静電容量を示す数値「33」と、定格電圧50Vを示す記号「H」、マイナス極性を示す黒塗り記号についても、図52に関して説明した通りである。
一方、OSCM端子には、定電圧5Vに接続された抵抗5.1kΩと、グランドに接続されたコンデンサ270pFが接続されており、定電流制御を管理する内部クロックの周波数が1.18MHzに設定されている。そのため、本実施例では、チョッピング周波数が、例えば、1.18/16=73.75kHzとなり、チョッピング周期13.56μSで定電流制御が実行されることになる。
また、VREFA 端子とVREFB 端子には、モータコントローラ85から受ける電流上限値の設定信号SETx、SETy(図49参照)に対応した電圧が、設定回路LMTを経由して、共通的に供給されるよう構成されている(図49参照)。具体的には、設定回路LMTの電子スイッチSWのON動作時の設定電圧が0.78Vであるのに対して、電子スイッチSWのOFF動作時の設定電圧が0.1685Vとなるよう分圧回路が設定されている。
モータドライバDV3/DV4では、この設定電圧0.78/0.16Vに対応して、定電流制御における電流上限値NFが決まるよう構成されており、この実施例では、電流上限値NFは、A相及びB相について、スイッチ回路SWのON/OFFに対応して、共通的に473mA/102mA程度となる。
上記の回路構成に対応して、本実施例では、例えば、モータ演出中の定電流制御では、電流上限値NFが473mAとなるモータを駆動制御する一方、例えば、モータ演出の開始前の待機動作中は、電流上限値NFが、それまでの1/4以下である102mAとなる待機制御することで、無駄な消費電力を抑制している。因みに、待機制御時の消費電力は、原理上、駆動制御時の4.65%程度となる。
次に、励磁方式を規定するDMODE0~DMODE2端子には、3ビット長の設定データを供給可能に構成されている。そして、このモータドライバDV3/DV4では、駆動電流Ioutを矩形状に変化させる2相励磁(図58(a)参照)だけでなく、0%駆動状態を挿入してパルス波形をやや緩和する1-2相励磁(図58(b)参照)や、電流上限値NFを+100%駆動と-100%駆動の間で多段階に変化させることで、駆動電流Ioutを略正弦波状に変化させるマイクロステップ励磁動作を指定することもできるよう構成されている。
ここで、駆動電流Ioutを正弦波に近づけるほど、ステッピングモータが滑らか回転するので、この点では優れている。しかし、精密機械とは異なり、この種の遊技機における役物演出では、精密機械ほどの滑らかな回転は不要と解される。また、ステップ角を小さくして、円滑に回転するより、ステップ角を大きくとって、高速回転を実行した方がモータ演出としては効果的である。
そこで、本実施例では、DMODE0~DMODE2端子に供給する設定データに基づいて、ステッピングモータを2相励磁又は1-2相励磁している。ここで、モータを高速回転するためには、ステップ角が大きい2相励磁の方が、1-2相励磁より有利である。また、設定データは、ソフトウェア処理による制御値としても良いが、本実施例では、ハードウェアによる固定値としており、2相励磁か1-2相励磁かは、遊技機の機種毎に規定している。
但し、以下の説明では、モータドライバDV3/DV4のDMODE0~DMODE2端子には、所定の設定データ(001)が固定的に供給されることで、モータコントローラ85から歩進クロックCLKを受ける毎に、ステッピングモータを2相励磁することにする。すなわち、モータドライバDV3/DV4は、図58(a)の動作をすることにする。
次に、CW/CCW端子と、CLK 端子と、ENABLE端子には、各々、モータコントローラ85から、1ビット長の方向指示データと、ステッピングモータを一ステップ歩進させるための歩進クロックCLKと、駆動動作を許可する許可信号ENABLEとが、適宜に供給されている。なお、RESET 端子は、定常的にLレベルであることで、内部のNOT回路を経由することで常に動作可能状態となっている(図49参照)。
図58(a)と、図58(b)は、2相励磁動作と、1-2相励磁動作時における歩進クロックCLKと、A相巻線とB相巻線の駆動電流Ioutを図示したものである。なお、時計方向回転CWを指示された場合、ドライバ内部回路は、歩進クロックCLKに対応して、駆動電流Ioutが時間軸の右方向に推移するよう動作する。一方、反時計方向回転CCWを指示された場合には、ドライバ内部回路は、歩進クロックCLKに対応して、駆動電流Ioutが時間軸の左方向に推移するよう動作する。すなわち、歩進クロックCLKを受ける毎に、駆動電流Iout(a),Iout(b)の電流レベルや電流方向が推移する。図示の通り、2相励磁では、歩進クロックCLKを受ける毎に電流方向が変化し、1-2相励磁や不図示のマイクロステップ励磁では、歩進クロックCLKを受ける毎に電流レベルが変化する。
ここで、歩進クロックCLKは、適宜なタイミングで、モータコントローラ85から、適宜な速度で供給されるが、歩進クロックCLKは、ステッピングモータのステップ角θに対応しており、歩進クロックCLKを受ける毎に、ステッピングモータは、一ステップ角θ[度Degree]だけ回転する。したがって、N個の歩進クロックCLKを受けると、N*θ[度]だけ回転することになり、ステッピングモータは、歩進クロックCLKの個数に対応する角度だけ回転することになる。
ここで、N個の歩進クロックCLKが、時間Tを要して供給された場合、N*θ[度]の回転に、時間T[秒]を要したことになり、回転角速度は、N*θ/T[Degree per Second ]となる。本実施例で使用するステッピングモータは2相励磁され、ステップ角θは、例えば、7.5度であるので、モータ一回転には、48個(=360/7.5)の歩進クロックCLKを要することになる。
したがって、歩進クロックCLKのパルス速度がV[PPS(Pulse Per Second)]の場合、モータ一回転に要する48個のパルスCLKは、48/V[S]で供給されるので、このモータは、一分間に、60*V/48回転することになり、モータ回転数rpm(rotations per minute)に換算すると、60*V/48[rpm]となる。
ところで、このモータドライバDV3/DV4においても、電流上限値NFに基づいて定電流制御が実行される。しかし、図57に関して説明した通り、電流上限値NFは、この実施例では、可動演出中である駆動制御中か、可動演出開始前の待機制御中かに応じて、473mA/102mAの何れかとなり、モータコントローラ85によって適宜に変更されるよう構成されている。
図58(c)は、例えば、待機制御中から駆動制御に移行する場合の定電流制御の動作を示しており、何れの制御状態でも、図54(b)に示す制御方法2に基づいて、CHARGE→FAST→SLOWの定電流制御が実行されることが示されている。一方、図58(d)は、例えば、駆動制御中から待機制御に移行する場合を示しており、この場合も、図54(b)に示す制御方法2に基づいて、CHARGE→FAST→SLOWの定電流制御が実行される。
なお、歩進クロックCLKが途絶えても、モータドライバDV3/DV4は、所定の上限電流NFに基づく定電流制御を継続するので、モータMO3,MO4は、停止状態を維持する停止駆動がされる。
次に、図59は、モータドライバDV3/DV4の動作を制御するモータコントローラ85の内部構成を示すブロック図である。モータコントローラ85は、4個のモータドライバを制御する同一構成の4個の内部回路(図59の破線で囲んだ回路)を4個内蔵して構成されている。4個のモータドライバを制御する場合には、各モータドライバは4個のステッピングモータを駆動するが、各モータの回転軸を、本明細書では、便宜上、X軸、Y軸、Z軸、U軸と称している。
この表現に対応して、モータコントローラ85には、図59において破線で囲んだ、同一構成のX軸用回路、Y軸用回路、Z軸用回路、及び、U軸用回路が含まれるが、この実施例では、X軸用回路とY軸用回路だけを使用している。
ここで、X軸用回路は、ステッピングモータMO3を駆動するモータドライバDV3を駆動制御し、Y軸用回路は、ステッピングモータMO4を駆動するモータドライバDV4を駆動制御している。そして、X軸用回路とY軸用回路の動作内容は、シリアルポートSIO_1 を経由して、演出制御CPU63によって演出制御される。
以上を踏まえて、図59の回路構成について確認すると、モータコントローラ85は、シフトクロックSCKに同期して、シリアルポートSIO_1 から制御データMOSIをシリアル受信する一方、センサ信号MISOをシリアルポートSIO_1 にシリアル送信している。また、PIOポート62からリセット信号RESETを受けると共に、コンペアマッチタイマCMTからは、有効期間がLレベルとなる動作中信号SSを受けている。
また、モータコントローラ85のX軸用回路は、モータドライバDV3に対して、歩進クロックOUTx(CLK)と、上限電流を規定する設定信号SETxと、回転方向(CW/CCW)を規定する方向指示データDIRxと、動作許可信号ENABLExを送信している。一方、モータコントローラ85のY軸用回路は、モータドライバDV4に対して、歩進クロックOUTy(CLK)と、上限電流を規定する設定信号SETyと、回転方向を規定する方向二値信号DIRyと、動作許否指令ENABLEyを送信している。
ここで、動作許可信号ENABLEx,ENABLEyがLレベルであると、モータドライバDV3/DV4に内蔵された駆動回路のHブリッジを構成する4個のMOSトランジスタの出力が全てHiZ状態になり、モータ駆動が禁止される。したがって、演出制御CPU63は、ステッピングモータMO3/MO4によるモータ演出開始に先行して、モータコンローラ85に所定の制御データを送信して、モータコントローラ85からモータドライバDV3/DV3に、Hレベルの動作許可信号ENABLEx,ENABLEyが出力されるよう制御する必要がある。もっとも、煩雑さを解消するためには、上記の動作を電源投入時に一回だけ実行すれば足りるので、以下では、そのような実施例について説明する。
さて、図59に戻ってモータドライバ85について説明を続けると、モータコントローラ85は、CPU回路51との間で、SPI(Serial Peripheral Interface )通信も、I2C(Inter-Integrated Circuit)通信も可能に構成されているが、本実施例では、最初に説明した通り、SPI通信によってシリアル送受信動作を実行している。
そして、モータコントローラ85は、I2C通信時に機能するSCL 端子SDA 端子と、デバイス選択番号を受けるDS0-DS1 端子と、動作中信号SSを受けるSS端子と、シフトクロックSCKを受けるSCK 端子と、制御データMOSIを受けるMOSI端子と、センサ信号MISOを出力するMISO端子と、複数のモータ(X/Y/Z/U軸の全部又は一部)の同時スタートを示すCSTA端子と、割込みが起動したことを示すINT 端子と、リセット信号を受けるRST 端子と、内部動作を規定する基準クロックを受けるCLK 端子と、シリアル通信動作モードがSPIかI2Cかを規定するIFSEL 端子と、を有して構成されている。
図示の通り、DS0-DS1 端子は、例えば、00に固定されているので、このモータコントローラ85に付与されたデバイス番号は、0ということになる。実施例のモータコントローラ85は、一のシリアルポートSIO_1 に、複数個が並列的に接続可能に構成されており、デバイス番号は、何れか一のモータコンローラを特定する用途で使用される。
また、この実施例では、IFSEL 端子がHレベルに固定されることで、モータコントローラ85は、SPIモードで動作する。したがって、この実施例では、SCL 端子と、SDA 端子は機能させない。但し、I2Cモードで動作させても良いのは勿論であり、I2Cモードでも以下の動作は実現可能である。
図示の通り、CLK 端子には、発振回路が生成した周波数9.8MHz程度の基準クロックが供給されている。また、RST端子には、PIOポート62からリセット信号RESETが供給され、SS端子には、コンペアマッチタイマCTMから動作中信号SSが供給されるよう構成されている。なお、SCK 端子とMOSI端子には、シリアルポートSIO_1 の対応回路からシフトクロックSCKと、制御データMISOが出力され、MISO端子からシリアルポートSIO_1 の受信シフトレジスタSCRSR に対して、センサデータMISOがシリアル伝送される。
続いて、モータコントローラ85のX軸用回路について説明する。図59に示す通り、X軸用回路は、モータドライバDV3に歩進クロックCLKを出力するOUTx端子と、方向指示データを出力するDIRx端子と、動作許可信号ENABLExを出力するP2x 端子と、上限電流の設定信号SETxを出力するP3x 端子とを有して構成されている。
また、X軸用回路は、モータMO3によって駆動される役物が、原点位置か否かを示す原点センサ信号を受けるP0x 端子と、この役物が目的位置に達したか否かを示す目的位置センサ信号を受けるP1x 端子と、を有している。
なお、Y軸用回路は、上記したX軸用回路と同一構成であり、モータドライバが、DV3からDV4に代わり、ステッピングモータが、MO3からMO4に代わるだけである。なお、本実施例では、Z軸用回路と、U軸用回路を使用していないが、これらを使用すれば、4個のステッピングモータを、同期的又は独立的に駆動制御することができる。
上記したP0x 端子、P1x 端子、P2x 端子、P3x 端子に対応して、モータコントローラ85には、入出力動作が可能な汎用入出力ポートが内蔵されており、また、演出制御CPU63からの指令に基づいて、汎用入出力ポートに必要な入出力動作を実行させる汎用ポート制御回路が内蔵されている。汎用入出力ポートは、入力ポートとしても、出力ポートとしても使用可能であるので、本実施例では、P0x 端子とP1x 端子が、汎用入力ポートP0,P1の入力端子となり、P2x 端子とP3x 端子が、汎用出力ポートP2,P3の出力端子となるよう初期設定している。
また、モータコンローラ85には、OUTx端子から出力する歩進クロックCLKの出力クロック数や、出力クロック周期(歩進クロックCLKのクロック速度)などを任意に設定可能な複数のレジスタが、含まれている。歩進クロックCLKのクロック速度でモータ回転速度が決まり、歩進クロックCLKの出力パルス数で回転角度が決まるが、モータコントローラ85は、演出制御CPU63の指示に基づき、任意個数の歩進クロックを、任意のクロック速度で、出力できるよう構成されている。
なお、先に説明した通り、モータドライバDV3/DV4は、歩進クロックCLK毎に、一ステップだけモータMO3を回転させるので、出力クロック数によってモータMO3の回転角度が規定され、また、歩進クロックCLKのク出力周期に対応して、モータMO3の回転速度が変わる。
ところで、モータコンローラ85によれば、加速制御や減速制御も任意であり、加減速制御を伴わない矩形駆動(図60(a))だけでなく、図60(b)に示す台形駆動も可能である。図60(a)に示す矩形駆動は、モータの回転速度が比較的遅い場合に採用され、回転開始から回転終了まで、歩進クロックCLKのパルス速度(パルス出力周期に対応)が、常に起動パルス速度に一致する。なお、矩形駆動は、その制御が簡単であってCPUによるプログラム処理でも対応可能であるので、モータMO3,MO43だけでなく、シリアルポートSIO_を経由するモータMO1,MO2の駆動にも活用されている。
一方、図60(b)に示す台形駆動は、モータの回転速度が速い場合に採用され、歩進クロックCLKのパルス速度が、起動パルス速度から徐々に直線的に速くなり、目標値である運転パルス速度に達する。その後、運転パルス速度で必要量だけ回転した後、歩進クロックCLKのパルス速度が、運転パルス速度から徐々に直線的に遅くなり、起動パルス速度に至ってモータが停止する。この台形駆動によれば、モータ回転の急発進や急停止が回避されるので、脱調などの不正常動作を未然に回避することができる。
図示の通り、パルス速度は、三以上の複数段階で直線的に増加し、三以上の複数段階で直線的に減少している。このような台形駆動は、図60(b)に示す通り、歩進クロックCLKのパルス周期を複雑に変化させる必要があり、CPUのプログラム処理では、実現が容易でない。そこで、本実施例では、モータコントローラ85を活用することで、CPUの制御負担を増加させることなく、モータMO3,MO4の急発進や急停止が回避した状態で、各モータの高速回転を実現している。後述するように、本実施例では、所定の演出時には、所定の役物を、自然落下より高速で降下/上昇させている。
図60(c)に示す通り、矩形駆動では、出力パルス数だけでなく、開始終了速度FL、目標速度FH、加速レート、及び、減速レートなどの動作パラメータを特定する必要があるが、これらの動作パラメータは、演出制御CPU63によって、以下に説明する内蔵レジスタに設定される。
モータコンローラ85の内蔵レジスタは、図59に示す通り、第1種レジスタN個と、第2種レジスタM個と、第1種レジスタへの設定値を事前に設定可能なプリレジスタN個とが含まれている。そして、第1種レジスタに基づくモータ動作が完了すると、これに対応するプリレジスタの事前設定値が、第1種レジスタに自動的に転送され、新たなモータ動作が開始可能状態となる。したがって、本実施例では、第1種レジスタに動作パラメータを設定した後、継続するモータ動作についても、プリレジスタに動作パラメータを設定することで、一連のモータ動作を素早く設定することができる。
ここで、第1種レジスタとプリレジスタには、目標速度FHを設定するレジスタRFH(R1)、加速レートを規定するレジスタRUR(R2)、減速レートを規定するレジスタRDR(R3)、スローダウンポイントを規定するレジスタRDP(R4)、出力パルス数を規定するレジスタRWV(R5)、及び、動作モード(R6)、を指定可能な6個のレジスタが、各々、含まれている。なお、スローダウンポイントとは減速処理を開始するタイミングを意味するが、レジスタRDPには、減速動作を実行するパルス数を規定することになる。なお、スローダウンポイントを規定するレジスタRDPと、減速レートを規定するレジスタRDRとは択一的に使用され、減速レートを規定した場合には、スローダウンポイントが自動的に決定される。
第1種レジスタとプリレジスタには、上記した動作パラメータを設定できるので、途中停止後の動作モードだけでなく、再回転動作における目標速度、加速レート、減速レート、出力パルス数などを、プリレジスタに予約設定することができる。
次に、第2種レジスタには、モータ回転開始時の初速度FLと停止前の最終速度FLを規定するレジスタRFLや、モータの動作モードを設定可能なレジスタRMDや環境設定レジスタRENVが含まれている。ここで、モータの動作モードには、CW[Clockwise ]方向への連続移動(MD1)、CCW[counterclockwise]方向への連続移動(MD2)、CW方向への相対移動(MD3)、CCW方向への相対移動(MD4)、センサ検出までCW方向に移動するCW位置決め移動(MD5)、センサ検出までCCW方向に移動するCCW位置決め移動(MD6)、タイマで規定されて時間だけ移動するタイマ移動(MD7)、が含まれており、モード設定レジスタRMDに所定の動作パラメータを設定することで、(MD1)~(MD7)の何れかのモータ動作が規定される。
本実施例において、動作モード(MD5)や動作モード(MD6)において検出対象となるセンサには、役物が原点位置に位置するか否かを示す原点センサと、役物が目的位置に位置するか否かを示す目的位置センサとが含まれる。したがって、本実施例によれば、原点位置に向かう復帰動作や、目的位置に向かう進行動作が、一の動作モードとして規定可能となる。なお、動作モード(MD5)や動作モード(MD6)では、速度レジスタRFHで設定された運転速度で回転を続け、その後、センサ信号を検出すると、パルス数レジスタRWVに設定された個数だけパルスを出力して停止する。
一方、動作モード(MD3)や動作モード(MD4)の相対移動では、その運転速度は、速度レジスタRFHで規定され、パルス数レジスタRWVに設定された個数だけパルスを出力して停止する。この場合、矩形駆動だけでなく、台形駆動も可能であり、台形駆動の場合には、加速レートレジスタRURで設定された態様で回転を開始し、速度レジスタRFHで規定された運転速度で回転した後、減速レートレジスタRDRで設定された態様で運転を終了する。なお、台形駆動において、加速制御だけを除いた動作(瞬時スタート+減速停止)や、減速制御だけを除いた動作(加速スタート+瞬時停止)も可能である。
また、動作モード(MD1)や動作モード(MD2)に規定する連続移動では、速度レジスタRFHで規定された運転速度で回転を続け、停止コマンドを受けることで回転を終了する。そして、何れの動作モードでも、スタートコマンドを受けることで、その動作を開始する。すなわち、モータコンローラ85は、演出制御CPU63から、スタートマンドや、停止コマンドを含んだ各種のコマンドを受けて動作するよう構成されている。
ここで、演出制御CPU63が、モータコンローラ85に対して出力可能なコマンドには、停止コマンド(CM0)の他に、スタート態様が異なる複数のスタートコマンド(CM1)と、スタート態様が異なる複数の残量スタートコマンド(CM2)と、変更態様が異なる複数の速度変更コマンド(CM3)と、汎用出力ポートから所定データを出力する出力コマンド(CM4)、が含まれている。本実施例では、この出力コマンド(CM4)を使用して、汎用出力ポートP2、P3には、許可信号ENABLExと、電流上限値の設定信号SETxが出力される。
なお、動作モード(MD3)や動作モード(MD4)に規定する相対移動の動作モードでは、内蔵された残パスカウンタRESTによって、残りパルス数が管理されている。そして、演出制御CPU63は、残パスカウンタRESTから残りパルス数を読み出すことで、適宜なタイミングでモータを途中停止させることもできる。残量スタートコマンドは、この途中停止後の再スタートを規定するものである。
また、第2種レジスタに含まれる環境設定レジスタRENVには、図60(d)に関して後述するカウントダウン制御を実現するカウントアップ時間TCUPと、カウントダウン時間TCDWとが設定可能に構成されている。カウントアップ時間TCUPと、カウントダウン時間TCDWは、何れも、4つの選択肢からその一つが選択可能になっている。
以上、演出制御CPU63がWRITE アクセス可能な各種のレジスタについて説明したが、モータコンローラ85の動作内容を示すステイタスレジスタその他も設けられており、これらのレジスタを、適宜にREADアクセスすることで、演出制御CPUは、モータコンローラ85の動作状態を把握することができる。
図61(a)は、演出制御CPU63によって1mS毎に実行されるタイマ割込みの処理内容を示すものであり、図22(b)の内容を詳細化したものである。また、図62は、図61(a)の処理に基づく、モータコントローラ85へのシリアル伝送手順を説明するタイムチャートである。
1msタイマ割込み処理では、先ず、パルス状のラッチ信号LOADをセンサ基板86に出力すると共に、歩進クロックLATCHを、モータドライバDV1,DV2に出力する(RT1)。すると、ラッチパルスLOADを受けたセンサ基板86のシフトレジスタ90は、センサ信号をラッチする。また、歩進クロックLATCHを受けたモータドライバDV1,DV2は、前回のタイマ割込みで取得した8ビットデータ(電流指示値+PHASE設定)に基づいて、モータMO1,MO2を回転駆動/停止駆動する。
次に、演出制御CPU63は、シリアルポートSIO_0 のデータレジスタSCFRDRに取得済の前回データを、メモリの所定エリアに格納する(R2)。このように、本実施例では、前回のタイマ割込みによりシリアル受信したシリアルデータを、次回のタイマ割込み時にメモリ取得するので、電源投入後の最初の取得データ(RT2)は、当然に無視される。なお、最初に説明した通り、受信シフトレジスタSCRSR にシリアル受信されたシリアルデータは、8ビットに達するごとに、自動的に、FIFO構造のFIFOデータレジスタSCFRDRに蓄積されるよう初期設定されている。
続いて、モータMO1やMO2によるモータ演出中か否かが判定される(RT3)。そして、モータMO1及び/又はMO2によるモータ演出中であれば、モータMO1,MO2をステップ回転させるための駆動データSDATA(16ビット)を、シリアルポートSIO_0 のFIFOデータレジスタSCFTDRに設定する(RT4)。駆動データSDATA(16ビット)は、モータMO1やMO2に対して、各々、PHASE設定値(4ビット)と電流指示値(4ビット)の8ビットで構成されるので、全体で16ビットとなる。
先に説明した通り、駆動データSDATAは、必ずしも、1mS毎に更新される必要はなく、モータの回転速度が遅い場合には、同一のPHASE設定値が複数N回使用される。この場合、N回のPHASE設定値は、常に同一であるが、2回目からN-1回目までの電流指示値は、例えば25%駆動の抑制レベルとするのが好適である。この抑制レベルでは、電力消費が原理的に1/16=6.25%となる。
また、後述する図60(d)の動作を実現するには、一連の回転動作を開始するに先立って、停止状態を維持するPHASE設定値(最終回転時の送信値)と、上限レベルの電流指示値(100%駆動)と、で構成された駆動データSDATAを、FIFOデータレジスタSCFTDRに設定する。
例えば、モータMO1とMO2が同期して回転を開始する場合には、前記した各8ビットで合計16ビットの駆動データSDATAが、FIFOデータレジスタSCFTDRに用意される。そして、回転開始に先行して、この駆動データSDATAが複数回シリアル送信されることで、上限レベルの停止駆動が実行される。なお、この動作は、役物の慣性を吸収して脱調などのトラブルを未然防止するためであるので、低速でスタートする役物や、軽量の役物には不要である。
一方、モータMO1やMO2によるモータ演出中でなければ、停止状態のモータMO1,MO2について、停止駆動用の駆動データSDATAを、FIFOデータレジスタSCFTDRに設定する(RT5)。停止駆動用の駆動データSDATAとは、停止状態を維持するPHASE設定値(前回の送信値)と、抑制レベルの電流指示値(例えば25%駆動)と、で構成される。
この場合も、図60(d)の動作を実現するには、いきなり抑制レベルの電流指示値を送信するのではなく、停止状態を維持するPHASE設定値(前回の送信値)と、上限レベルの電流指示値(100%駆動)と、で構成された駆動データSDATAを、適当回数だけ先行して送信して、上限レベルの停止駆動が実行される。この動作も、役物の慣性を吸収するためであるので、ゆっくり停止する役物や、軽量の役物には不要となる。
続いて、演出制御CPU63は、シリアルポートSIO_0 のFIFOデータレジスタSCFTDRに設定した駆動データSDATA(16ビット)に関して、シリアルポートSIO_0 のシリアル送受信処理を開始させる(RT6)。その結果、シリアルポートSIO_0 は、FIFOデータレジスタSCFTDRが空になるまで、合計16個のシフトクロックSCKを出力し、このシフトクロックSCKに同期して、16ビットの送信データ(駆動データSDATA)がモータドライバDV1,DV2に転送される。
なお、図56において説明した通り、このタイミングで送信した駆動データSDATAは、次回のタイマ割込みで出力される歩進クロックLATCHによって実効化される。
また、シフトクロックSCKは、センサ基板86にも供給されるので、最初の8個のシフトクロックSCKに同期して、センサ信号SENが、シリアルポートSIO_0 の受信シフトレジスタSCRSR にシリアル受信され、受信データは、FIFOデータレジスタSCFRDRに蓄積される。合計16個のシフトクロックSCKが出力されるので、蓄積データは、合計16ビット長であるが、最初の8ビットだけが有意なセンサ信号SENであり、残りの8ビットは、無為な00Hである(図51(b)参照)
この実施例では、ボーレート250kbpsとしているので、シフトクロックSCKの16個分は、約16/250k=0.064mSであり、タイマ割込みの動作周期1mSにおいて、極めて短時間で処理を終わることになる(図63の上段部分参照)。また、演出制御CPU63は、シリアル送信の処理を開始させるだけであって(R6)、シリアル送信の完了を待たないので、ステップR1~R6の処理は、ごく一瞬で終わることになる。なお、シリアル受信されたデータを、次回のタイマ割込み処理に委ねる点も処理時間の短縮に寄与している。
ところで、CH0のモータ演出が終了した後は、図61の破線で示すように、ステップRT5の処理を実行することなく、ステップRT4とRT6の処理をスキップしても良い。この場合には、最終のPHASE設定値と電流設定値と、に基づいた定電流制御によって、各モータMO1,MO2が繰り返し停止駆動される。
以上のシリアルポートSIO_0 の処理が終われば、演出制御CPU63は、コンペアマッチタイマCMTを機能させて、パルス幅が、例えば0.8mS程度の動作中信号SSの出力を開始させる(RT7)。図49の左上部に記載の通り、コンペアマッチタイマCMTは、クロック信号のカウント動作の開始に対応して、動作中信号SSをHレベルに遷移させ、その後、カウント結果が、所定の上限値MXに達するとCMT割込みを発生させるよう初期設定されている。
そして、CMT割込み処理において、演出制御CPU63が、コンペアマッチタイマCMTのカウント動作を停止することで、動作中信号SSがHレベルからLレベルに戻る。以上の通り、動作中信号SSについても、演出制御CPU63は、立上りエッジと、立下りエッジにしか関与しないので、他の演出制御処理の処理時間を奪うなどの悪影響を与えるおそれはない。
動作中信号SSをHレベルに立上げた後、演出制御CPU63は、モータコントローラ85からセンサ信号MISOを取得する(RT8)。図62(a)は、この取得手順を示すタイムチャートであり、8個のシフトクロックSCKに同期して、デバイス番号S7~S6=00、動作種別S5~S4=11、読出し対象UZYX軸S3~S0=0010、又はS3~S0=0001とすることで、デバイス番号00のモータコントローラ85における、X軸かY軸のセンサ信号を取得する旨を規定する。
次に、その後の8個のシフトクロックSCKに同期して、X軸であるモータMO3の関するセンサ信号(又は、Y軸であるモータMO4関するセンサ信号)を取得する。すなわち、図62(a)の動作を二回繰り返すことで、X軸とY軸のセンサ信号を取得する。なお、図59に示す通り、汎用入出力ポートのうち、入力ポートに設定されているのは、ポートP0(P0x 端子、P0y 端子)と、ポートP1(P1x 端子,P1y 端子)だけであるので、受信データD7~D0のうち有意データは、D1,D0だけである。そして、演出制御CPUは、取得したセンサ信号D1,D0を、メモリの適所に保存して、その後のモータ演出に活用する。
但し、先に説明したように、演出制御CPU63がモータコントローラ85に指定できる動作モードには、センサ検出までCW方向に移動するCW位置決め移動(MD5)や、センサ検出までCCW方向に移動するCCW位置決め移動(MD6)の動作モードが含まれているので、演出制御CPU63は、特に、センサ信号を把握する必要はなく、したがって、ステップRT8の処理を省略することもできる。
何れにしても、次に、演出制御CPU63は、モータMO3やMO4によるモータ演出中か否かに基づいて、モータMO3,MO4のモータ動作を規定する最高8×16ビットの制御データMOSIを、シリアルポートSIO_1 のFIFOデータレジスタSCFTDRに設定する(RT9)。モータ演出中であれば、これを実現する演出回転駆動用の制御データがFIFOデータレジスタSCFTDRに設定されるが、モータ演出中でなければ、定電流制御における上限値NFを抑制するための待機停止駆動用の制御データが設定される。
以上のようにして、ステップRT8~RT9の処理が終われば、次に、シリアルポートSIO_1 のシリアル送信処理を開始させる(RT10)。図62(b)と、図62(c)は、シリアルポートSIO_1 から、モータコントローラ85に制御データMOSIをシリアル送信する場合の手順を図示したものである。
先ず、図62(b)は、許可信号ENABLEや設定信号SETを、汎用出力ポートP2,P3から出力する場合の出力手順を示すタイムチャートである。図示の通り、8個のシフトクロックSCKに同期して、デバイス番号S7~S6=00、動作種別S5~S4=10、書込み対象UZYX軸S3~S0=0010、又はS3~S0=0001とすることで、デバイス番号00のモータコントローラ85における、X軸用(モータドライバDV3)か、Y軸用(モータドライバDV4)の制御信号を出力する旨を規定する。
次に、その後の8個のシフトクロックSCKに同期して、モータドライバDV3の関する制御信号(又は、モータドライバDV4関する制御信号)を出力する。この場合の、図62(b)の動作を二回繰り返すことで、X軸とY軸の制御信号の出力が完了する。なお、図59に示す通り、汎用入出力ポートのうち、出力ポートに設定されているのは、ポートP2(P2x 端子、P2y 端子)と、ポートP3(P3x 端子,P3y 端子)だけであるので、出力データD7~D0のうち有意データは、D3(=SET)と、D2(=ENABLE)だけである。
先に説明した通り、本実施例では、設定信号SETのH/Lレベルに応じて、定電流制御の電流上限値NFが、回転駆動用のHレベルと、停止駆動用のLレベルの二段階に制御されており、役物演出中はSET=Hレベルに制御され、演出待機中はSET=Lに制御される。
次に、図62(c)は、モータコントローラ85の動作を規定するコマンドの送信処理や、内蔵レジスタへの動作パラメータの設定処理を説明するタイムチャートである。モータコントローラ85の動作を規定する各種のコマンド(CM1)~(CM4)は、何れも8ビット構成であるので、図62(c)の上段部分の処理で完了する。すなわち、コマンドを送信する場合は、先ず、8個のシフトクロックSCKに同期して、デバイス番号S7~S6=00、動作種別S5~S4=00、コマンド対象UZYX軸S3~S0=00**、をシリアル送信することで、デバイス番号00のモータコントローラ85における、X軸(MO3)及び/又はY軸(MO4)に対するコマンドが送信されることを予告する。
次に、これに続く、8個のシフトクロックSCKに同期して、8ビット長のコマンドデータを送信する。なお、S3~S0=0001であれば、X軸(MO3)に関するコマンドとなり、S3~S0=0010であれば、Y軸(MO4)に関するコマンドとなり、S3~S0=0011であれば、X軸及びY軸(MO3+MO4)に対するコマンドとなる。
以上、コマンド送信について説明したが、各種のレジスタに動作パラメータを設定する場合には、レジスタ番号が8ビット長、動作パラメータが16ビット長であることに対応して、図62(c)の上段部分に続いて下段部分の処理が必要となる。具体的に説明すると、レジスタへの動作パラメータの設定時には、先ず、8個のシフトクロックSCKに同期して、デバイス番号S7~S6=00、動作種別S5~S4=00、コマンド対象UZYX軸S3~S0=00**、をシリアル送信することで、デバイス番号00のモータコントローラ85における、X軸(MO3)及び/又はY軸(MO4)に対するレジスタ設定値が送信されることを予告する。
次に、8個のシフトクロックSCKに同期して、8ビット長のレジスタ番号を送信する。そして、その後は、16個のシフトクロックに同期して、レジスタ番号で特定されたレジスタへの設定値(16ビット長の動作パラメータ)をシリアル送信することになる。
図63の下段には、シリアルポートSIO_1 におけるシリアル受信処理と、これに続くシリアル送信処理が記載されている。X軸とY軸のシリアル受信に合計16*2個のシフトクロックSCKを要し、8*16ビットの制御データMOSIのシリアル送信にシフトクロックSCKを8*16個を要するので、ボーレート250kbpsで動作させた場合の処理時間は、10*16/250k=0.645mSであり、タイマ割込みの一周期1mSの半分ぐらいの時間で全ての処理が終わることになる。
但し、演出制御CPU63は、シリアル送信の処理を開始させるだけで処理を終え(R11)、シリアル送信完了を待たないので、ステップR7~R11の処理は、ごく一瞬で終わることになる。
図64(a)は、モータドライバDV3,DV4によって駆動されるステッピングモータMO3,MO4と、モータMO3,MO4によって回転駆動されるスパイラルシャフトBARと、スパイラルシャフトBARのネジ山に対応するネジ溝GVがガイド溝と共に設けられた役物AMUと、役物AMUのガイド溝GVを把持して役物AMUの直線移動を案内する案内部材GDとが、図示されている。
役物AMUのガイド溝GVは、案内部材GDによって直線移動可能に保持されているので、役物AMUは、スパイラルシャフトBARの回転に対応して、直線移動することになる。ここで、スパイラルシャフトBAR及び案内部材GDは、遊技盤の左右位置において、上下方向に隠蔽状態で配置されており、遊技盤の左右上部には、原点位置の役物AMUが隠蔽状態で待機している。なお、図示例では2つの役物AMU,AMUが分離状態であり、独立的に移動可能であるが、2つの役物を連結状態にするのも好適である。
先に説明した通り、ステッピングモータMO3,MO4は、何れも2相励磁されてステップ角θは7.5度である。そして、360/7.5=48より、各モータMO3,MO4は、48個の歩進クロックCLKを受けることで一回転することになる。一方、モータMO3,MO4の回転に対応して回転するスパイラルシャフトBARの回転ピッチは、24mmであり、モータ一回転に対応して、役物AMUは、L=24mm移動することになる。
したがって、移動距離TOTAL[mm]を実現するには、モータの回転数TOTAL/L=TOTAL/24[回]が必要であり、この回転に必要な歩進クロックCLKのステップ数は、TOTAL/24*48=TOTAL*2となる。ここで、歩進クロックCLKのパルス速度を、PS[PPS:pulse per second]とすると、ステップ数TOTAL*2を出力するに要する時間は、TOTAL*2/PS[秒]となる。
本実施例では、歩進クロックCLKのパルス速度PSは、2900pps程度までは安定して出力可能である。例えば、パルス速度PS=2900ppsの場合、移動距離TOTAL[mm]を実現するに要する時間T[秒]は、TOTAL*2/PS=TOTAL/1450[秒]・・・(式1)となる。なお、パルス速度PS=2900ppsに対応する役物の移動速度は、本実施例では、2900/48*24=1450mm/Sであって、1m/S以上である。
ところで、自由落下は物質の重量に関係せず、落下距離=1/2*g*t2の関係が成立する。ここで、g=重力加速度、t=落下時間である。したがって、例えば、30cmの自由落下に要する時間Tは、0.3=1/2*g*T2より、T=SQR(0.6/9.8)≒0.247秒となる。ここで、TOTAL=300[mm]として、役物AMUの移動時間を計算すると、上記した式1より、TOTAL/1450≒0.207[秒]となり、本実施例によれば、移動距離30cm程度であれば、自由落下より高速度で役物AMUを移動できることが確認される。なお、自由落下において、51cm通過時の落下速度が1m/Sである。
図64(b)は、モータMO3及び/又はモータMO4によるモータ演出の一例を説明する図面であり、役物AMUが、突然、自由落下速度を超える速度で落下して、跳ね返って停止する動作を示している。この動作は、(1)原点復帰動作と、(2)待機動作と、(3)急落下動作と、(4)バウントアップ動作と、(5)バウンドダウン動作とで構成されている。
先ず、原点復帰動作は、センサ検出までCCW方向に移動する動作モード(MD6)を使用してもよいが、ここでは、CCW方向に位置決め移動する動作モード(MD4)を使用している。次に、急落下動作は、CW方向に位置決め移動する動作モード(MD3)を使用している。なお、センサ検出までCW方向に移動する動作モード(MD5)を使用しても良いのは勿論である。
何れにしても、急落下動作(3)の運転速度は、2900ppsに設定されるので、自由落下より速い速度で役物AMUが移動する。なお、パルス数レジスタRWVに設定されるパルス数は、600パルスであり、移動距離TOTALは、600/48*24=300mmである。また、台形駆動が採用され、所定の加速レートと、減速レートが規定されることで、最適な加速時間と減速時間が確保される。そのため、高速移動しても脱調などのトラブルは生じない。
続く、バウンドアップ動作(4)とバウンドダウン動作(5)には、CCW方向に位置決め移動する動作モード(MD4)と、CW方向に位置決め移動する動作モード(MD3)が使用される。これらの運転速度は、500pps程度で低速であるので、矩形駆動を採用しており、各々のステップ数は、50パルスであって、25mm程度の跳ね返り動作を演出している。
以上の通り、本実施例では、モータコントローラ85を活用することで、演出制御CPU63の制御負担が軽減されると共に、複雑高度なモータ演出が可能となる。また、役物を高速移動させても、加速時間や減速時間を確保することで、脱調などの事態を未然防止することができる。
但し、実施例で使用するモータドライバDV3,DV4は、そのVREFA 端子やVREFB 端子について、図57のような回路構成を採るので、モータドライバDV1,DV2の場合とは異なり、出力電流Ioutの上限値NFを複数段階に制御することはできない。その一方で、上限電流の設定回路LMTを設けるので、1ビット長の設定信号SETによって電子スイッチSWをON/OFF制御することで、任意のタイミングで上限電流NFを制御することができる(図57参照)。
そこで、本実施例では、モータMO3やモータMO4による役物演出の実行時だけ上限電流NFをHレベル(473mA)にし、それ以外の待機状態では、電子スイッチSWをOFF設定して、上限電流NFをLレベル(102mA)に維持している。
また、別の実施例では、役物演出中も適宜に上限電流NFを制御することで、無駄な消費電力を抑制している。具体的には、モータコントローラ85の環境設定レジスタRENVを活用して、図60(d)に記載のカウントダウン制御を実行している。先に説明した通り、環境設定レジスタRENVには、カウントアップ時間TCUPと、カウントダウン時間TCDWとが設定可能に構成されている。
そこで、本実施例では、スタートコマンドの発行時には、これに合わせて、設定信号SETをHレベルに遷移させて、上限電流NFをHレベル(473mA)に設定すると共に、カウントアップ時間TCUPを設定して、TCUPカウントダウン動作を開始させている。このモータコントローラ85では、カウントダウン動作が完了するまでは、スタートコマンドが実効化されないよう構成されており、所定の待機時間(カウントダウン時間)を経た後に、一連のパルス列を出力し始める。
一方、スタートコマンドの発行に対応して、設定信号SETは、直ちにHレベルに遷移するので、対応するステッピングモータMO3/MO4は、上限電流NFが低いそれまでの待機モードから、上限電NFが高い駆動モードに移行することになる。但し、このタイミングでは、未だ、新規の歩進クロックCLKが出力されていないので、モータMO3/MO4は停止状態を維持するが、停止状態における駆動が、低電流駆動から高電流駆動に移行することになる(図58(c)参照)。
そして、その後、新規の歩進クロックCLKが出力されたタイミングで、モータMO3/MO4は、安定した高電流駆動状態でステップ回転することになる。回転開始時には、必ず規定レベルの出力トルクが必要であるところ、本実施例では、事前に高電流駆動を開始しているので、出力トルクの不足がなく、慣性の大きい役物であっても円滑に起動させることができる。
その後、モータMO3/MO4が所定の回転動作を終えた後、停止コマンドが発行されるが、これに合わせて、環境設定レジスタRENVのカウントダウン時間TCDWを設定して、TCDWカウントダウン動作を開始させる。そして、演出制御CPU63は、その後、1mS毎に環境設定レジスタRENVをREADアクセスして、TCDWカウントダウン動作が終わったことが確認されれば、設定信号SETをLレベルに遷移させて上限電流NFをLレベル(102mA)に降下させる。なお、TCDWカウントダウン動作の終了に対応して割込み処理を起動させるのも好適であり、この場合には、1mS毎に環境設定レジスタRENVをREADアクセスする必要がない。
何れにしても、上記のカウントダウン制御は、役物の慣性が大きい場合にも、停止状態を確実に安定化させるためであり、所定時間だけ高電流状態でモータを停止駆動することで、役物の停止状態が安定化する。なお、カウントダウン制御は、主として役物AMUの慣性を吸収する目的で実行されるので、環境設定レジスタRENVに設定するカウントアップ時間TCUPや、カウントダウン時間TCDWは、役物AMUの重量などに対応して適宜に設定される。また、スタートコマンドに対応して、カウントアップ時間TCUPを設定する上記の方法に代えて、スタートコマンドの発行前に、カウントアップ時間TCUPを設定することもでき、この場合には、スタートコマンドの発行に対応して、歩進クロックCLKの出力が開始される。
以上、本発明の実施例について説明したが、具体的な記載内容は、特に本発明を限定しない。例えば、CPU回路51は、モータドライバ85を介することなく、直接、ドライバDV3,DV4を制御しても良い。また、図63では、スパイラルシャフトBARの回転に対応して、役物AMUが直線移動する例を説明したが、何ら限定されず、円形歯車であるラックと、円形歯車に歯合する平板材であるピニオンと、を利用した伝達機構を利用してもよい。また、役物の移動は、必ずしも直線移動に限定されない。役物を回転移動させても良いし、非直線的な役物の往復移動、例えば、円弧軌道に沿った往復移動も好適である。
また、加速時間及び減速時間を有して、高速運転に好適な台形駆動と、低速運転に好適な即スタート及び即停止の定速運転(矩形駆動)について説明したが、特に限定されない。例えば、加速時間だけゼロの定速スタート運転や、減速時間だけゼロの即停止運転も好適である。また、モータコントローラ85が介在する台形駆動について説明したが、例えば、図50(b)の構成において、演出制御CPU63が、矩形駆動だけでなく台形駆動を実行しても良い。定速スタート運転や即停止運転についても同様である。