上記課題を解決するために、請求項1記載の遊技機用表示制御装置は、遊技機に設けられ、遊技に基づく情報を表示する表示手段での表示内容を制御する表示制御プログラムを格納するプログラム格納手段と、前記表示制御プログラムのプログラムコードに従って各種パラメータを演算し、フレーム毎の画面情報を作成する演算手段と、前記表示手段に表示される画像データを格納する画像データ格納手段と、前記画面情報に基づいて必要な画像データを読み出し、前記表示手段に表示する画面データを作成する画面データ作成手段と、前記画面データに従って表示信号を前記表示手段に出力する表示信号出力手段と、を備え、前記演算手段を複数の演算部で構成し、当該複数の演算部のそれぞれが1フレーム分の画面情報を作成するとともに、前記複数の演算部のうちの一の演算部をマスタとし、当該マスタが、各演算部が順にフレーム毎の画面情報を作成するよう、自身を含め各演算部が前記画面情報を作成する順番を決定することを特徴とする。請求項1記載の遊技機用表示制御装置によれば、複数の演算部が各フレームの表示に必要なプログラムコードの担当部分に従って各種パラメータを演算し画面情報の担当部分を作成して画面情報の担当部分を合成することにより各フレームの画面情報を作成するのではなく、各演算部が順に(演算部が2つであれば交互に)フレーム毎に各フレームの表示に必要なプログラムコードに従って各種パラメータを演算して各フレームの画面情報を作成するので、マルチプロセッサ方式を採用しながらも、表示制御プログラムの設計段階での負担を減らし、ディスプレイリストを作成するときにフレーム単位で各プロセッサに作成処理を割り振るだけの簡単な制御で、余計な処理を極力増やすことなく、負荷を分散することができる。この手法では、何れかの演算部をマスタとし、後は各フレームの画面情報を演算する順番さえ決めてあれば、各演算部が順にフレーム毎に各フレームの表示に必要なプログラムコードに従って各種パラメータを演算して各フレームの画面情報を作成することができるとともに、その演算結果の画面情報に対して何らかの処理を施す必要もないという利点がある。
図1は、本発明の実施例1に係る遊技機用表示制御装置を搭載する遊技機の一例としてのパチンコ遊技機1の正面模式図である。このパチンコ遊技機1は、台枠に取り付けられた透明ガラス板でなる前面扉2と、台枠の内側に配置されて前面扉2によって覆われる遊技盤3と、遊技盤3の左右斜め下方に配置された一対のスピーカ4と、遊技盤3の上方位置等に配置された装飾ランプ類5と、遊技盤3の下方に設けられた貯留皿6と、貯留皿6の右方(図1で見て)に設けられた発射ハンドル7とを含んで構成されている。
遊技盤3は、遊技盤3のほぼ中央位置に配設された遊技機用表示装置10と、遊技機用表示装置10の左方に設けられた通過ゲート11と、遊技盤3上に植設された多数本(図示は4本)の釘12と、いわゆる電動チューリップ(以下、電チューと略記する)である始動入賞装置13と、始動入賞装置13の下方に設けられた大入賞装置14と、大入賞装置14の下方に設けられた玉排出口15と、遊技盤3の左縁寄り中程に配置されたLED(Light Emitting Diode)でなる普図(普通図柄)表示部16と、普図表示部16の下方に連設された4つのLEDでなる普図保留表示部17とを含んで構成されている。
発射ハンドル7は、発射停止ボタン71を備える回転操作部材でなり、発射停止ボタン71を押圧することなしに回転操作されると、その回転操作量を表す回転操作信号を発射制御回路150(図2参照)に出力する。なお、発射停止ボタン71を押圧しているときは、発射ハンドル7の回転操作量に関わらず回転操作信号は出力されない。
遊技機用表示装置10は、特図(特別図柄)の抽選結果により決定された3桁のアラビア数字等のキャラクタでなる特図を上下2段または1段に表示して遊技者に特図の抽選結果を報知する液晶表示装置(本発明の表示手段に相当)8と、液晶表示装置8の窓枠下辺に配設された4つのLEDでなる特図(特別図柄)保留表示部9とから構成されている。
通過ゲート11は、賞球がないゲートであり、通過ゲート11に玉を通過させると、普図の抽選処理が行われる。普図表示部16では、普図の抽選結果に基づいて図柄変動(LEDの点滅動作)が行われ、所定時間経過後に点灯表示すれば当たりとなり、後述する始動入賞装置13の可動羽根を所定時間開放する。普図の図柄変動中や始動入賞装置13の開放動作中に新たな普図の抽選処理が行われると、その抽選結果は一時記憶(保留)され、普図保留表示部17は、最大4つまで保留できる普図の抽選結果の数に応じて点灯表示する。先の図柄変動や開放動作が終了すると、普図表示部16では保留された普図の抽選結果に基づいて新たな図柄変動を開始する。
始動入賞装置13は、開口部に一対の可動羽根を有する、いわゆる電チューと呼ばれる可変入賞装置でなる。始動入賞装置13は、普図表示部16にて当たり表示がなされると、可動羽根を所定時間開放する。始動入賞装置13に玉が入賞すると、特図の抽選処理が行われる。液晶表示装置8では、特図の抽選結果に基づいて図柄変動が行われる。詳しくは、3桁の図柄が同時に変動を開始し、所定時間経過後に停止し、3つの同じ数字が並べば大当たりとなり、大当たり処理が行われる。特図の図柄変動中や大当たり処理中に新たな特図の抽選処理が行なわれると、その抽選結果は一時記憶(保留)され、特図保留表示部9は、最大4つまで保留できる特図の抽選結果の数に応じて点灯表示する。先の図柄変動や大当たり処理が終了すると、液晶表示装置8では保留された特図の抽選結果に基づいて新たな図柄変動を開始する。
大入賞装置14は、いわゆるアタッカーと呼ばれる可変入賞装置であり、開口部と蓋部材とから構成され、蓋部材が移動することにより開口部の閉鎖状態と開放状態とを呈する。大入賞装置14は、大当たりに当選すると、1回の大当たり処理で、例えば、開放してから10個入賞または25秒経過で閉鎖するまでの処理を1ラウンドとして、15ラウンド継続する処理を行う。
玉排出口15は、遊技盤3の最下部に開口されており、遊技盤3の盤面上を流下し終わった玉を遊技機外部に排出する。
図2を参照すると、パチンコ遊技機1は、主回路110を搭載する主制御基板100と、主回路110に接続された特図保留表示部9,普図表示部16および普図保留表示部17と、主回路110に接続され装飾ランプ類5ならびにアンプ40およびスピーカ4を制御する副制御回路120の搭載された副制御基板と、副制御回路120に接続され液晶表示装置8を制御する表示制御回路130(本発明の遊技機用表示制御装置に相当)の搭載された表示制御基板と、主回路110に接続され払出装置141を制御する払出制御回路140の搭載された払出制御基板と、払出制御回路140に接続され発射ハンドル7からの回転操作信号に基づいて発射装置151を制御する発射制御回路150の搭載された発射制御基板と、通過ゲート11に併設され主回路110に接続されたゲート通過検出器161と、始動入賞装置12に併設され主回路110に接続された始動入賞検出器162と、大入賞装置14に併設され主回路110に接続された大入賞検出器163と、主回路110に接続され電チューである始動入賞装置13の可動羽根を開閉する電チューソレノイド166と、主回路110に接続され大入賞装置14を開閉する大入賞ソレノイド167と、各基板に所定電圧を供給する電源回路168とを含んで構成されている。
なお、パチンコ遊技機1を制御する各回路が搭載された各基板はパチンコ遊技機1の背面側に配置されており、表示制御回路130の搭載された表示制御基板は液晶表示装置8の背面側に配置されている。
主回路110は、CPU(Central Processing Unit)111,プログラム格納用のROM(Read Only Memory)112,ワークエリアや各種カウンタ等が割り当てられるRAM(Random Access Memory)113,I/O(Input/Output)114等を備える。
なお、その他の各基板の各回路も、個別にCPUやメモリを備える構成が一般的であるが、図2では省略している。
副制御回路120は、主回路110より入力される音声制御信号に応じてアンプ40を介してスピーカ4より音声を出力させる。また、副制御回路120は、主回路110より入力されるランプ制御信号に応じて装飾ランプ類5の点灯/消灯を制御する。
払出制御回路140は、主回路110より入力される賞球払出信号に応じて払出装置141を制御し、貯留皿6に所定数の賞球を払い出させる。
発射制御回路150は、遊技者による発射ハンドル7の回転操作に応じて発射装置151を作動させる。発射ハンドル7の回転操作量に応じて、発射装置151による玉の発射強度(玉の飛距離)を調節することが可能となっている。発射装置151より発射された玉は、遊技盤3上へと放出され自重によって流下する。
表示制御回路130は、副制御回路120から入力される表示制御コマンドに応じて液晶表示装置8に画像を表示させるための処理を実行する。
図3(a)は、表示制御回路130の構成を示す回路ブロック図である。表示制御回路130は、デュアルコアプロセッサでなる表示制御用CPU(本発明の演算手段に相当)131と、表示制御用CPU131に第1バス132を介して接続されたRAM133と、表示制御用CPU131に第1バス132を介して接続されたプログラムROM(本発明のプログラム格納手段に相当)134と、表示制御用CPU131に第1バス132を介して接続されたVDP(Video Display Processor)(画像処理用LSI(Large Scaled Integration)、本発明の画面データ作成手段,表示信号出力手段に相当)135と、VDP135に第2バス136を介して接続されたキャラクタROM(本発明の画像データ格納手段に相当)137と、VDP135に第2バス136を介して接続されたVRAM(Video Random Access Memory)138とを備えて構成されている。
表示制御用CPU131は、図3(b)にさらに詳細に示すように、第1CPUコア(本発明の演算部に相当)131aと、第2CPUコア(本発明の演算部に相当)131bと、第1CPUコア131aおよび第2CPUコア131bを並列に接続する内部バス131cと、内部バス131cに接続されたローカルバスコントローラ131dと、内部バス131cに接続されたメモリバスコントローラ131eと、内部バス131cに接続されたPCI(Peripheral Component Interconnect)コントローラ131fとを備えて構成されている。ローカルバスコントローラ131dは32ビットのローカルバスを介してプログラムROM134に接続され、メモリバスコントローラ131eは32ビットのメモリバスを介してRAM133に接続され、PCIコントローラ131fは32ビットのPCIバスを介してVDP135に接続されている。上記ローカルバス,メモリバスおよびPCIバスを総称して、第1バス132(図3(a)参照)という。
第1CPUコア131aおよび第2CPUコア131bは、図3(c)にさらに詳細に示すように、演算処理部131gと、内部バス131hと、キャッシュメモリ131iと、SRAM(Static Random Access Memory)131jとを備えて構成されている。
表示制御用CPU131は、副制御回路120からの表示制御コマンドに基づいてプログラムROM134に格納された制御プログラムを実行する。3Dポリゴン等の表示制御コマンドに基づいて制御プログラムを実行させるには、シングルプロセッサを採用する場合に1GHzほどの周波数が必要になるが、1GHzほどの周波数では表示制御用CPU131の発熱量も多く、パチンコ遊技機1の背面側に表示制御基板を配置したときに十分に冷却することが難しい。そこで、本実施例1では、表示制御用CPU131として、例えば440MHzの周波数の2つのCPUコア、すなわち第1CPUコア131aおよび第2CPUコア131bを1チップにパッケージしたデュアルコアプロセッサを採用している。
表示制御用CPU131としてデュアルコアプロセッサを採用した場合、前記特許文献1に記載されているように、1フレームに表示する画像データ,表示する場所,透過率・回転角度・拡大率等が記載されたディスプレイリスト(本発明の画面情報に相当)の作成処理内の、第1CPUコア131aおよび第2CPUコア131bがそれぞれ担当する部分のプログラムコードに従って各種パラメータを演算し、その演算結果のディスプレイリストを合成して1フレーム全体のディスプレイリストを作成することも可能であるが、その場合には第1CPUコア131aおよび第2CPUコア131bが1フレームのどの担当部分のプログラムコードに従って各種パラメータを演算するのかを予め設計しておく必要があり、また第1CPUコア131aの演算結果のディスプレイリストと第2CPUコア131bの演算結果のディスプレイリストとを合成する処理も発生するため、あまり合理的とはいえない。
そこで、本実施例1では、第1CPUコア131aおよび第2CPUコア131bが交互にフレーム毎に各フレームの表示に必要なプログラムコードに従って各種パラメータを演算して各フレームのディスプレイリストを作成する手法を採用している。この手法であれば、事前に第1CPUコア131aおよび第2CPUコア131bに1フレーム内での担当部分を割り振ったり、演算後に合成処理したりすることも必要なく、第1CPUコア131aおよび第2CPUコア131bは交互にフレーム毎に演算結果のディスプレイリストをRAM133に記憶していくだけでよいので、シンプルな設計で第1CPUコア131aおよび第2CPUコア131bの処理負荷を継続的に分散することができるようになる。
プログラムROM134は、プログラムコードおよび各種パラメータ(座標データ,色情報,テキスチャ値等)からなる制御プログラムを格納する。例えば、プログラムROM134として32〜128M(Mega)ビットのROMを使用した場合、プログラムコードの容量は数100K(Kilo)ビット程度で、残りは各種パラメータが格納されている。なお、プログラムROM134には、割り込みタイプに対応したサブルーチンが格納されており、第1CPUコア131aに割込み処理が発生すると、第1CPUコア131aは、所定アドレスに格納されたサブルーチンを実行する。具体的には、垂直同期信号V-syncの入力時に垂直同期信号割込み処理(V-sync INT処理)(図10参照)を実行し、コマンドの入力時にコマンド割込み処理(CMD INT処理)(図11参照)を実行する。
図4は、プログラムROM134に格納されている表示用パラメータのテーブルを示す図である。図4に示すように、表示用パラメータとしては、起動用,待機用,変動表示用および大当たり用の4種類がある。例えば変動表示用パラメータとしては、通常状態用,確変状態用および時短状態用の3種類がある。確変状態用パラメータとしては、ハズレ,ハズレリーチおよび当たりの3種類がある。ハズレリーチパターンとしては、A,B,C,D,E,F,Gの8パターンがある。パターンDとしては、背景,キャラクタ,図柄の3つがあり、キャラクタDには、コード,時間,位置,倍率,回転,透過度,座標,順の項目がある。ここで、コードは、3Dで構成されるキャラクタの部品を指しており、時間の経過とともにキャラクタがどう移動するのか、どのように変形するのか等をそのキャラクタのベースとなる位置やそのキャラクタの部分を構成するポリゴンの1要素の動きに基づいて各種パラメータが設定されている。表示制御用CPU131は、図4のような階層構造のテーブルから作成すべきディスプレイリストの構成要素となる各種パラメータを読み込んで演算し、そのフレームのディスプレイリストを作成する。
なお、前出の特許文献1に記載された手法を採用する場合、表示用パラメータを設計する段階で複数あるCPUの各々にどの部分を担当させて演算させるのかを予め設定しておく必要があるため、表示用パラメータのデータ容量が増えてしまうとともに、表示用パラメータを設計するボリュームもずっと多くなってしまう。しかし、本実施例1は、この段階ではマルチプロセッサ方式であることを意識せず、シングルプロセッサ方式である場合と同様にプログラムの設計を行なうことができる。つまり、本実施例1の方式であれば、シングルプロセッサ方式で設計された表示用パラメータであっても実行することが可能なので、パチンコ遊技機の開発途中でシングルプロセッサ方式からマルチプロセッサ方式への転向が発生しても、表示制御装置としてプログラムの大掛かりな設計変更をすることなく対応することが可能である。
RAM133は、表示制御用CPU131が受信した情報や演算結果などを一時的に記憶しておく記憶手段であり、図5は、RAM133のメモリマップを示す図である。図5を参照すると、RAM133には、プログラムコード展開領域133a,コマンド書込み領域133b,コマンド解析結果展開領域133c,第1作成領域(第1CPU用ディスプレイリスト作成領域1)133d,第2作成領域(第1CPU用ディスプレイリスト作成領域2)133e,第3作成領域133f(第2CPU用ディスプレイリスト作成領域1),第4作成領域133g(第2CPU用ディスプレイリスト作成領域2),内部カウンタ133h,CPUフラグ133j,第1作成フラグ133k,第2作成フラグ133l,転送フラグ133m等が設けられている。内部カウンタ133hは、電源起動時より定期的(VDP135から出力される垂直同期信号V-syncによる割込みが発生する毎)に+1だけインクリメントされるカウンタである。CPUフラグ133jは、第1CPUコア131aが各種処理を実行・指示するときに参照するフラグである。第1作成フラグ133kおよび第2作成フラグ133lは、第1CPUコア131aおよび第2CPUコア131bがディスプレイリスト(本発明の画面情報に相当)を作成中に1となり、それ以外では0となるフラグである。転送フラグ133mは、第1CPUコア131aおよび第2CPUコア131bにより作成されたディスプレイリストのDMA(Direct Memory Access)転送中に1となり、それ以外のときに0となるフラグである。RAM133は、例えば、DDR−SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)で構成されている。なお、RAM133は、表示制御用CPU131に内蔵された構成であってもよい。
キャラクタROM137には、表示内容に対応した図柄やキャラクタ等の圧縮された画像データが格納されている。
VRAM138は、表示制御用CPU131から転送された情報や、VDP135の演算結果などを一時的に記憶しておく記憶手段であり、図6は、VRAM138のメモリマップを示す図である。VRAM138は、図柄やキャラクタ等の画像データを第1フレームバッファ138aおよび第2フレームバッファ138bに展開(解凍,拡大,縮小等)するためのメモリである(図7(a)参照)。図6を参照すると、VRAM138には、画像データ展開領域,第1保持領域(ディスプレイリスト保持領域1)138d,第2保持領域(ディスプレイリスト保持領域2),第1フレームバッファ138a,第2フレームバッファ138b等が設けられている。なお、VRAM138は、VDP135に内蔵された構成であってもよい。
画像処理用LSIであるVDP135は、表示制御用CPU131の指示に従い、フレーム単位の画面データを作成して液晶表示装置8に出力する処理を行なっており、図7(a)は、VDP135がキャラクタROM137から画像データを読み出してフレームバッファに展開し、液晶表示装置8に出力する過程を示す。VDP135は、図7(a)に示すように、RAM133からVRAM138に転送された各フレームのディスプレイリストに従って必要な画像データを圧縮された状態で格納されているキャラクタROM137から読み出し、圧縮された画像データをデコーダとして解凍しながらVRAM138上の画像データ展開領域138cに展開し、さらにディスプレイリストに従ってVRAM138上の第1フレームバッファ138aおよび第2フレームバッファ138bに描画していく。詳しくは、VDP135は、図7(b)に示すように、解凍された画像データをディスプレイリストの指示に従って回転や拡大させる等して第1フレームバッファ138aおよび第2フレームバッファ138b上に描画していき、フレーム単位の画面データを作成する。
また、VDP135は、インターフェース(I/F)回路(図示せず)を介して液晶表示装置8に接続されている。VDP135は、第1フレームバッファ138aへの画像データの描画中には、第2フレームバッファ138b上に作成済みの画面データをデジタルRGB(Red, Green, Blue)信号(本発明の表示信号に相当)として液晶表示装置8に出力し、第2フレームバッファ138bへの画像データの描画中には、第1フレームバッファ138a上に作成済みの画面データをデジタルRGB信号として液晶表示装置8に出力する。
図8は、各CPUコア131a,131b共通のメイン処理を示すフローチャートである。各CPUコア131a,131bは、メイン処理では、初期化処理を実行し、ディスプレイリストの作成指示を受信すると、画面情報作成処理(図9参照)を実行する。
図9は、各CPUコア131a,131b共通の画面情報作成処理を示すフローチャートである。画面情報作成処理では、各CPUコア131a,131bは、ディスプレイリストの作成指示の内容を解析し、解析結果に基づいて、プログラムROM134から必要な各種パラメータを読み込み、所定フレームに描画する画像の画像コードやその画像を描画する位置(座標),表示倍率,回転角,透過率などを演算し、演算結果をまとめたディスプレイリストを作成して、RAM133に書き込む。
図10は、第1CPUコア131aの垂直同期信号割込み処理(V-sync INT処理)を示すフローチャートである。垂直同期信号割込み処理(V-sync INT処理)では、第1CPUコア131aは、VDP135に対し表示切替指示および描画指示を出し、コマンド解析処理(図12参照)および作成指示処理(図13参照)を実行し、転送処理(図17参照)を起動して、CPUフラグ133jを変更する。
図11は、第1CPUコア131aのコマンド割込み処理(CMD INT処理)を示すフローチャートである。コマンド割込み処理(CMD INT処理)では、第1CPUコア131aは、受信したコマンドをRAM133に書き込む。
図12は、第1CPUコア131aのコマンド解析処理を示すフローチャートである。コマンド解析処理では、第1CPUコア131aは、RAM133にコマンドの書込みがあれば、コマンドを解析し、解析結果をRAM133に展開する。なお、コマンドとしては、「電源OFF」,「待機画面表示」,「大当たり画面表示」などの様々な種類があり、それぞれのコマンドに対応して動作する。特に、表示に関するコマンドを受けた時、それぞれの表示に対応した表示パターンファイルをプログラムROM134から読み込んでRAM133に展開し、表示制御用CPU131にディスプレイリストを作成させる。
図13は、第1CPUコア131aの作成指示処理を示すフローチャートである。作成指示処理では、第1CPUコア131aは、第1CPUコア131aおよび第2CPUコア131bにディスプレイリストの作成を交互に行わせるために、CPUフラグ133jが1または3であれば、自身のメイン処理(図8参照)にディスプレイリストの作成を指示し、CPUフラグ133jが2または4であれば、第2CPUコア131bのメイン処理(図8参照)にディスプレイリストの作成を指示する。
図14は、第1CPUコア131aの転送処理を示すフローチャートである。転送処理では、第1CPUコア131aは、RAM133に書き込まれた最古のディスプレイリストをVDP135を介してVRAM138へDMA転送方式で転送させる。
図15は、VDP135のメイン処理を示すフローチャートである。メイン処理では、VDP135は、初期化処理を実行し、1フレーム期間(33.3ms)毎に、第1CPUコア131aに垂直同期信号V-syncを送信する。
図16は、VDP135の描画処理を示すフローチャートである。描画処理では、VDP135は、描画指示を受けると、VRAM138に書き込まれているディスプレイリストのうち、第1CPUコア131aに指示された方のディスプレイリストに従って必要な画像データをキャラクタROM137より読み込み、拡大,回転,透過処理などを行って、第1フレームバッファ138aまたは第2のフレームバッファ138bの所定位置に描画していき、表示する画面データを作成する。
図17は、VDP135の表示処理を示すフローチャートである。表示処理では、VDP135は、表示切替指示があるたびに第1フレームバッファ138aまたは第2のフレームバッファ138bを切り替えながら、第1フレームバッファ138aまたは第2のフレームバッファ138bに書き込まれた画面データに基づいてデジタルRGB信号をI/F回路(図示せず)を介して液晶表示装置8に出力する。
図18は、本実施例1における表示制御用CPU131およびVDP135のタイムチャートを示す。
図19は、シングルプロセッサ方式のCPUで処理した場合のCPUおよびVDPのタイムチャートを示す。
次に、このように構成された実施例1に係る遊技機用表示制御装置の動作について説明する。
パチンコ遊技機1の電源起動後、第1CPUコア131aおよび第2CPUコア131bは、メイン処理(図8参照)において、初期化処理を実行する(図8のS101)。詳しくは、第1CPUコア131aおよび第2CPUコア131bは、プログラムROM134に格納された制御プログラムからプログラムコードを読み出して解凍し、RAM133上のプログラムコード展開領域133aに展開(初期ロード)する。また、第1CPUコア131aは、VDP135に対し液晶表示装置8の解像度,ドットクロックに関する情報,キャラクタROM137へのリードタイミングに関する情報等の、VDP135の処理に必要な情報を送信する。
プログラムコードの初期ロードの完了後、第1CPUコア131aが表示制御回路130全体を制御することになり、第1CPUコア131aおよび第2CPUコア131bは、第1CPUコア131の作成指示処理(図13参照)からディスプレイリストの作成指示があるかどうかを判定し(図8のS102)、ディスプレイリストの作成指示がなければ(図8のS102:NO)、ディスプレイリストの作成指示があるまで待機する。
第1CPUコア131aおよび第2CPUコア131bの初期化処理(図8のS101)と同時に、VDP135は、メイン処理(図15参照)において、初期化処理を実行する(図15のS501)。
次に、VDP135は、タイマをリセットし(図15のS502)、1フレーム期間(33.3ms)の経過時に(図15のS503:YES)、第1CPUコア131aに垂直同期信号V-syncを送信する(図15のS504)。以降、VDP135は、1フレーム期間(33.3ms)間隔で第1CPUコア131aに垂直同期信号V-syncの送信を繰り返す。
第1CPUコア131aは、VDP135から定期的(1フレーム期間(33.3ms)間隔)に垂直同期信号V-syncが送信されると、サブルーチンである垂直同期信号割込み処理(V-sync INT処理)(図10参照)を実行する。
垂直同期信号割込み処理(V-sync INT処理)(図10参照)を実行すると、第1CPUコア131aは、RAM133上の内部カウンタ133hを+1だけインクリメントして更新する(図10のS301)。
次に、第1CPUコア131aは、VDP135の描画フラグ(VDP135の出力端子の1つ)が0であるかどうかに基づいてVDP135の描画処理(図16参照)が完了しているかどうかを判定する(図10のS302)。VDP135の描画処理(図16参照)が完了していなければ(図10のS302:NO)、第1CPUコア131aは、垂直同期信号割込み処理(V-sync INT処理)を直ちに終了する。
VDP135の描画処理(図16参照)が完了していれば(図10のS302:YES)、第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、次の指示対象となるCPUコアの第1作成フラグ133kまたは第2作成フラグ133lが0であるかどうかに基づいて画面情報作成処理(図9参照)が完了しているかどうかを判定する(図10のS303)。詳しくは、RAM133上のCPUフラグ133jが1または3のときは第1作成フラグ133kを、2または4のときは第2作成フラグ133lを確認し、0であれば画面情報作成処理が完了していると判定する。次の指示対象となるCPUコアの画面情報作成処理(図9参照)が完了していなければ(図10のS303:NO)、第1CPUコア131aは、垂直同期信号割込み処理(V-sync INT処理)を直ちに終了する。
次の指示対象となるCPUコアの画面情報作成処理(図9参照)が完了していれば(図10のS303:YES)、第1CPUコア131aは、RAM133上の転送フラグ133mに基づいて転送処理(図14参照)が完了しているかどうかを判定する(図10のS304)。転送処理(図14参照)が完了していなければ(図10のS304:NO)、第1CPUコア131aは、垂直同期信号割込み処理(V-sync INT処理)を直ちに終了する。
転送処理(図14参照)が完了していれば(図10のS304:YES)、第1CPUコア131aは、VDP135に対し表示切替指示を出す(図10のS305)。詳しくは、第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが1または3であれば第1フレームバッファ138aに、CPUフラグ133jが2または4であれば第2フレームバッファ138bに書き込まれた画面データに基づいて表示するように指示する。
VDP135は、第1フレームバッファ138aまたは第2フレームバッファ138bの何れかに書き込まれた画面データに基づいて、常に表示処理(図17参照)を継続している。1画面分の信号出力は16.6ms(1/60s)で完了するので、表示切替指示があるまで同じフレームバッファの画面データに基づいてI/F回路(図示せず)を介してデジタルRGB信号を液晶表示装置8に向けて出力(1フレーム期間に2回出力)し続ける(図17のS521)。そして、第1CPUコア131aから表示切替指示があると(図17のS522:YES)、VDP135は、指示に従って出力元とするフレームバッファをもう一方に切り替える(図17のS523)。
表示切替指示を出した後、第1CPUコア131aは、VRAM138上の第1保持領域138dまたは第2保持領域138eに書き込まれているディスプレイリストを指示してVDP135に対し描画指示を出す(図10のS306)。詳しくは、第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが1または3であれば第2保持領域138eに書き込まれているディスプレイリストに基づいて第2フレームバッファ138bに描画するように指示を出し、CPUフラグ133jが2または4であれば第1保持138dに書き込まれているディスプレイリストに基づいて第1フレームバッファ138aに描画するように指示を出す。
VDP135は、描画処理(図16参照)において、第1CPUコア131aから描画指示があるかどうかを判定し(図16のS511)、描画指示がなければ(図16のS511:NO)、描画処理を直ちに終了する。描画指示があれば(図16のS511:YES)、VDP135は、描画フラグを1に変更し(図16のS512)、VRAM138上の第1保持領域138dまたは第2保持領域138eに書き込まれているディスプレイリストのうち、第1CPUコア131aに指示された方のディスプレイリストに従って必要な画像データをキャラクタROM137より読み込み(図16のS513)、拡大,回転,透過処理などを行って、第1CPUコア131aに指示された方の第1フレームバッファ138aまたは第2フレームバッファ138bの所定位置に描画していき、表示する画面データを作成する(図16のS514)。そして、VDP135は、画面データの作成が完了すると、描画フラグを0に変更して(図16のS515)、描画処理を終了する。
ところで、第1CPUコア131aは、主回路110からのコマンドが副制御回路120を介して送信されることにより、サブルーチンであるコマンド割込み処理(CMD INT処理)(図11参照)を実行する。
コマンド割込み処理(CMD INT処理)(図11参照)では、第1CPUコア131aは、受信したコマンドをRAM133上のコマンド書込み領域133bに書き込む(図11のS311)。
垂直同期信号割込み処理(V-sync INT処理)において描画指示を出した後、第1CPUコア131aは、コマンド解析処理(図12参照)を実行する(図10のS307)。
詳しくは、コマンド解析処理(図12参照)では、第1CPUコア131aは、RAM133上のコマンド書込み領域133bにコマンドの書込みがあるか否かを確認する(図12のS321)。コマンドの書込みがなければ(図12のS321:NO)、第1CPUコア131aは、RAM133上のコマンド解析結果展開領域133cに展開されている解析結果と内部カウンタ133hに基づいて、何れの表示パターンの何フレーム目のディスプレイリストを作成する、という次の処理を抽出して(図12のS324)、コマンド解析処理を終了する。コマンドの書込みがあれば(図12のS321:YES)、第1CPUコア131aは、RAM133上のプログラムコード展開領域133aにあるプログラムコードに従って受信したコマンドを解析し(図12のS322)、その解析結果をRAM133上のコマンド解析結果展開領域133cに展開する(図12のS323)。コマンドが新たな図柄変動の開始コマンドであれば、第1CPUコア131aは、その解析結果から変動パターン(変動時間込み)や停止図柄をRAM133上のコマンド解析結果展開領域133cに展開する(内部カウンタ133hに紐付ける)。その変動パターンの中で、第1CPUコア131aは、まずは最初のフレームの画面データを作成するためのディスプレイリストを作成する、という次の処理を抽出する(図12のS324)。
なお、パチンコ遊技機は、図柄の変動表示を開始する段階で決定されている変動時間を厳守して図柄を停止表示しなければならない。そのため、VDP135から定期的に垂直同期信号V-syncが入力される毎に内部カウンタ133hを必ず更新すると共に、コマンドの解析結果を展開する段階で、例えばある変動パターンが選択されたのであれば、内部カウンタ133hがいくつのときにその変動パターンの中のどのフレームを表示するかを紐付けし、今現在の内部カウンタ133hに紐付けられた処理を抽出しなければならない。
コマンド解析処理(図12参照)の実行後、第1CPUコア131aは、作成指示処理(図13参照)を実行する(図10のS308)。
詳しくは、作成指示処理(図13参照)では、第1CPUコア131aは、ディスプレイリストの作成を交互に行わせるために、先に抽出した次のフレームの処理情報を、CPUフラグ133jに従って第1CPUコア131aまたは第2CPUコア131bの何れかに送信する。すなわち、CPUフラグ133jが1または3であれば(図13のS331:YES)、第1CPUコア131aは、自身のメイン処理(図8参照)に作成を指示し(図13のS332)、CPUフラグ133jが2または4であれば(図13のS331:NO)、第1CPUコア131aは、第2CPUコア131bのメイン処理(図8参照)に作成を指示し(図13のS333)、作成指示処理を終了する。
第1CPUコア131aの作成指示処理(図13参照)からのディスプレイリストの作成指示を第1CPUコア131aが受信すると(図8のS102:YES)、第1CPUコア131aは、画面情報作成処理(図9参照)を実行する(図8のS103)。
画面情報作成処理(図9参照)では、第1CPUコア131aは、第1作成フラグ133kを0から1に変更する(図9のS201)。次に、第1CPUコア131aは、コマンド解析処理により抽出された次の処理の指示内容を解析し(図9のS202)、その解析結果に基づいてプログラムROM134から所定フレームのディスプレイリストを作成するのに必要な各種パラメータを読み込む(図9のS203)。続いて、第1CPUコア131aは、所定フレームに描画する画像の画像コードやその画像を描画する位置(座標),表示倍率,回転角,透過率などの各種パラメータを演算し(図9のS204)、その演算結果をまとめたディスプレイリストを作成し(図9のS205)、RAM133上の第1作成領域133dまたは第2作成領域133eに書き込む(図9のS206)。第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが1であれば作成したディスプレイリストを第1作成領域133dに書き込み、CPUフラグ133jが3であれば第2作成領域133eに書き込む。ディスプレイリストの書込みが完了したならば、第1CPUコア131aは、第1作成フラグ133kを0に変更する(図9のS207)。
第1CPUコア131aの作成指示処理(図13参照)からのディスプレイリストの作成指示を第2CPUコア131bが受信すると(図8のS102:YES)、第2CPUコア131bは、画面情報作成処理(図9参照)を実行する(図8のS103)。
画面情報作成処理(図9参照)では、第2CPUコア131bは、第2作成フラグ133lを0から1に変更する(図9のS201)。次に、第2CPUコア131bは、コマンド解析処理により抽出された次の処理の指示内容を解析し(図9のS202)、その解析結果に基づいてプログラムROM134から所定フレームのディスプレイリストを作成するのに必要な各種パラメータを読み込む(図9のS203)。続いて、第2CPUコア131bは、所定フレームに描画する画像の画像コードやその画像を描画する位置(座標),表示倍率,回転角,透過率などの各種パラメータを演算し(図9のS204)、その演算結果をまとめたディスプレイリストを作成し(図9のS205)、RAM133上の第3作成領域133fまたは第4作成領域133gに書き込む(図9のS206)。第2CPUコア131bは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが2であれば作成したディスプレイリストを第3作成領域133fに書き込み、CPUフラグ133jが4であれば第4作成領域133gに書き込む。ディスプレイリストの書込みが完了したならば、第2CPUコア131bは、第2作成フラグ133lを0に変更する(図9のS207)。
作成指示処理(図13参照)の後、第1CPUコア131aは、ディスプレイリストの転送処理を起動する(図10のS309)。
転送処理(図14参照)が起動されると、第1CPUコア131aは、転送フラグ133mを1に変更し(図14のS341)、RAM133上の第1作成領域133dないし第4作成領域133gに書き込まれたディスプレイリストを、VDP135を介してVRAM138上の第1保持領域138dまたは第2保持領域138eへDMA転送方式で転送させる(図14のS342)。詳しくは、第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが1であれば第2作成領域133eのディスプレイリストを第1保持領域138dへ、CPUフラグ133jが2であれば第4作成領域133gのディスプレイリストを第2保持領域138eへ、CPUフラグ133jが3であれば第1作成領域133dのディスプレイリストを第1保持領域138dへ、CPUフラグ133jが4であれば第3作成領域133fのディスプレイリストを第2保持領域138eへ転送させる。ディスプレイリストのDMA転送が完了したならば、第1CPUコア131aは、転送フラグ133mを0に変更する(図14のS343)。
転送処理(図14参照)を起動した後、第1CPUコア131aは、CPUフラグ変更を実施する(図10のS310)。詳しくは、第1CPUコア131aは、RAM133上のCPUフラグ133jを確認し、CPUフラグ133jが1であればCPUフラグ133jを2に変更し、CPUフラグ133jが2であればCPUフラグ133jを3に変更し、CPUフラグ133jが3であればCPUフラグ133jを4に変更し、CPUフラグ133jが4であればCPUフラグ133jを1に変更する。
CPUフラグ133jを変更した後、第1CPUコア131aは、垂直同期信号割込み処理(V-sync INT処理)を終了する。
図18は、本実施例1における第1CPUコア131aおよび第2CPUコア131bによるディスプレイリストの作成タイミングと、RAM133上の各作成領域とVRAM138上の各保持領域および各フレームバッファの書込みおよび読出しタイミングとを1つのタイムチャートとして示したものであり、この図18により第1CPUコア131aおよび第2CPUコア131bならびにVDP135の動作の流れを説明する。なお、図18中の数字0〜10(CPUフラグは除く)は、コマンド解析処理により抽出された所定の変動パターンにおける連続するフレームのフレーム番号(初期値は0)を示しており、特定フレームについてディスプレイリストが作成されてから表示されるまでを把握可能に表している。
第1CPUコア131aは、VDP135から1フレーム期間(33.3ms)間隔で送信される垂直同期信号V-syncを入力する度に、サブルーチンである垂直同期信号割込み処理(V-sync INT処理)を実行する。図18において、例えば(左から数えて)5回目の垂直同期信号V-syncを入力したとき、第1CPUコア131aは、垂直同期信号割込み処理(V-sync INT処理)を開始し、RAM133上の内部カウンタ133hを更新する。次に、第1CPUコア131aは、VDP135の出力端子により描画処理が完了していることを確認し、CPUフラグ133jが1なので、RAM133上の第1作成フラグ133kが0である(第1CPUコア131aのディスプレイリスト作成処理が完了している)ことを確認し、RAM133上の転送フラグ133mが0である(ディスプレイリストの転送処理が完了している)ことを確認する。さらに、第1CPUコア131aは、CPUフラグ133jが1なので、VDP135に対し、表示信号の出力元となるフレームバッファをVRAM138上の第1フレームバッファ138aに切り替えるように指示するとともに、VRAM138上の第2保持領域138eに記憶されているディスプレイリストに基づいて第2フレームバッファ138bに画面データを作成するように指示する。続けて、第1CPUコア131aは、RAM133上のコマンド解析結果展開領域133cから次の処理は4番フレームのディスプレイリスト作成であることを抽出し、CPUフラグ133jが1なので、第1CPUコア131aのメイン処理に対し4番フレームの表示内容(各種パラメータ)を演算してRAM133上の第1作成領域133dに4番フレームのディスプレイリストを作成するように指示する。その後、第1CPUコア131aは、CPUフラグ133jが1なので、RAM133上の第2作成領域133eに記憶されているディスプレイリストをVRAM138上の第1保持領域138dに転送するための転送処理を起動し、CPUフラグ133jを2に変更して、垂直同期信号割込み処理(V-sync INT処理)を終了する。
つまり、5回目の垂直同期信号V-syncを入力した後、第1CPUコア131aが4番フレームのディスプレイリストを第1作成領域133dに作成し、第2作成領域133eに記憶されている2番フレームのディスプレイリストが第1保持領域138dに転送され、VDP135が第2保持領域138eに記憶されている1番フレームのディスプレイリストに基づいて必要な画像データをキャラクタROM137から読み出し、第2フレームバッファ138bに描画して1番フレームの画面データを作成し、第1フレームバッファ138aに作成された0番フレームの画面データが液晶表示装置8(LCD)に表示される。
同様に、6回目の垂直同期信号V-syncを入力した後は、第2CPUコア131bが5番フレームのディスプレイリストを第3作成領域133fに作成し、第4作成領域133gに記憶されている3番フレームのディスプレイリストが第2保持領域138eに転送され、VDP135が第1保持領域138dに記憶されている2番フレームのディスプレイリストに基づいて第1フレームバッファ138aに2番フレームの画面データを作成し、第2フレームバッファ138bに作成された1番フレームの画面データが液晶表示装置8(LCD)に表示される。
次の7回目の垂直同期信号V-syncを入力したとき、第2CPUコア131bは5番フレームのディスプレイリスト作成を完了していないが、このとき第1CPUコア131aの画面情報作成処理が完了しているので、次の処理を行なうことが可能である。つまり、2つのCPUコアに交互に画面情報作成処理を行なわせることによって、各CPUコアにおける画面情報作成処理が1フレーム期間(33.3ms)で完了しなくても、2フレーム期間(66.6ms)内に完了できれば、表示装置においてフレーム欠けが発生することもなく、きれいに連続した動画として表示することができる。
なお、図18の0番フレームに注目して見ると、最初の垂直同期信号V-syncを入力したときに第1CPUコア131aがディスプレイリストの作成を開始し、5回目の垂直同期信号V-syncを入力したときに液晶表示装置8に出力されているので、本実施例1では、フレームのディスプレイリストの作成指示が出力されてから実際にそのフレームが表示されるまでに4フレーム期間(133.3ms)必要である。
ところで、図19は、シングルコアプロセッサである1つの表示制御用CPUで処理した場合のタイムチャートを例示する。シングルコアプロセッサで処理する場合、RAM上のディスプレイリストの作成領域は2つ(本実施例1では4つ)でよい。なお、図19には、図18と比較し易くするため、図18における第1CPUコア131aおよび第2CPUコア131bによる画面情報作成処理のタイムチャートも併せて示す。
CPUが1つしかない場合にディスプレイリストの作成が1フレーム期間(33.3ms)以内に完了していないと、内部カウンタの更新だけ行って新たなディスプレイリストの作成指示を出すことができない。
詳しくは、図19のように、表示制御用CPUは、1回目の垂直同期信号V-syncを入力したときに0番フレームのディスプレイリストの作成を開始し、この作成が1フレーム期間(33.3ms)以上かかってしまうと、2回目の垂直同期信号V-syncを入力したときに次の1番フレームのディスプレイリストの作成を指示することができず、0番フレームのディスプレイリストの作成が2フレーム期間(66.6ms)以内に完了していれば、3回目の垂直同期信号V-syncを入力したときに内部カウンタに従って2番フレームのディスプレイリストの作成を指示することになる。つまり、1番フレームのディスプレイリストは作成されないので、表示装置において1番フレームの画面は表示されず、フレーム欠けが発生してしまう。
このように、図19では、0番フレーム、5番フレームおよび7番フレームのディスプレイリストの作成が1フレーム期間で完了しなかったために、表示装置では1番フレーム、6番フレームおよび8番フレームが表示されず、ディスプレイリストの作成が完了していないとVDPに表示切替指示も出せないため、2番フレームや3番フレームが2フレーム期間(66.6ms)表示されることになってしまう。つまり、きれいに連続した動画として表示することができなくなってしまう。
図19の例において、VDP135から出力される垂直同期信号V-syncの間隔を長くすることによりフレーム欠けを防止することは可能であるが、それにより1秒間に表示できるフレーム数が少なくなってしまい、やはりきれいな動画として表示することはできない。
ところで、実施例1では、表示制御用CPU131として、第1CPUコア131aおよび第2CPUコア131bを1つのチップにパッケージしたデュアルコアプロセッサを使用するようにしたが、図20(a)に示すように、表示制御用CPU131を、別体の第1CPU131cと第2CPU131dとを第1バス132に並列的に接続することによって構成し、マルチプロセッサ方式を実現するようにしてもよい。
また、図20(b)に示すように、表示制御用CPU131を、第1CPUコア131aと第2CPUコア131bとをモノリシックな基板131e上に一体に形成したマルチコアプロセッサで構成し、これを第1バス132に接続するようにして、マルチプロセッサ方式を実現するようにしてもよい。
なお、本実施例1に係る遊技機用表示制御装置を配設するパチンコ遊技機1の動作については、パチンコ遊技機1が遊技機の単なる一例であり、また本発明とは直接関係がないので、詳しい説明を割愛する。
実施例1によれば、マルチプロセッサ方式を採用しながらも、簡単な制御で、余計な処理を極力増やすことなく、負荷を分散できる。具体的には、第1CPUコア131aおよび第2CPUコア131bが交互にフレーム毎に各フレームの表示に必要なプログラムコードに従って各種パラメータを演算して各フレームのディスプレイリストを作成するので、マルチプロセッサ方式を採用しながらも、プログラムの設計段階での負担を減らし、ディスプレイリストを作成するときにフレーム単位で各プロセッサに作成処理を割り振るだけの簡単な制御で、余計な処理を極力増やすことなく、負荷を分散することができる。
以上、本発明の実施例1を説明したが、これはあくまでも例示にすぎず、本発明はこれに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。
例えば、実施例1では、表示制御用CPU131として、2つの演算部(第1CPUコア131aおよび第2CPUコア131b)を使用するようにしたが、表示装置の解像度がさらに向上するなどして2つの演算部でも処理が間に合わないような場合に3つ以上の演算部を使用することもできる。3つ以上の演算部を使用しても、何れかの演算部をマスタとし、後は各フレームのディスプレイリスト(画面情報)を演算する順番さえ決めれば、各演算部が順にフレーム毎に各フレームの表示に必要なプログラムコードに従って各種パラメータを演算して各フレームのディスプレイリスト(画面情報)を作成することができる。このようにすれば、各演算部が1フレームのディスプレイリスト(画面情報)の作成処理に要する期間が1フレーム期間に対して大幅に長くなることを許容することができ、さらなる負荷の分散化を図ることもできる。
また、実施例1では、表示装置を液晶表示装置8としたが、PDP(Plasma Display Panel),有機EL(Electroluminescence),SED(Surface-conduction Electron-emitter Display),CRT(Cathode Ray Tube)等のその他の表示装置であっても、本発明が同様に適用できることはもちろんである。
さらに、実施例1では、第1CPUコア131aおよび第2CPUコア131bの負荷を軽減するために、PCIコントローラ131fによるDMA転送を使用するようにしたが、第1CPUコア131aおよび第2CPUコア131bが交互にフレーム毎に、RAM133上のディスプレイリストをVDP135に転送するなど、他の転送方式を採用するようにしてもよいことはいうまでもない。