【文献】
広井 誠,「レンジ・コーダを用いて圧縮率を改善する LZ77符号によるファイルの圧縮とその改良」,「Interface June 2006」,日本,CQ出版株式会社,2006年 6月 1日,第32巻第6号,p.182-191,特に第182頁の「LZ符号の基礎知識」、第183頁の「LZSS符号 スライド辞書と最長一致法を使用」参照。
【文献】
「RGB565,RGB555形式の組み込み機器用画像の正しい作成方法(1)」,OPTPiX Labs Blog,[online],2011年11月16日,特に「1.まずはおさらいから」を参照。[2021年1月25日検索],URL,https://www.webtech.co.jp/blog/optpix_labs/format/942/
(58)【調査した分野】(Int.Cl.,DB名)
照明部を備えた遊技機の記憶部に格納された圧縮データをRGB形式のデータに変換して前記照明部の駆動ドライバに送出するデータ伸長プログラムであって、前記遊技機上で実行されたとき、
前記圧縮データはLZSS法によって圧縮されており、一致(不一致)フラグは1ビットで構成されるとともに、データ圧縮時に前記一致(不一致)フラグとともに格納されたポイント情報及び元のデータは共に15ビットで構成されており、前記遊技機に前記圧縮データをRGB555形式へ伸長させるステップと、
前記遊技機に前記RGB555形式へ伸長されたデータをさらにRGB888形式へ変換させて、前記照明部の駆動ドライバへ送出させるステップと
を実行することを特徴とするプログラム。
【背景技術】
【0002】
スロットマシンやぱちんこ機等の遊技機(以下、「遊技機」と総称する)では、筐体に設置された照明部を使って非遊技状態におけるデモ演出や遊技状態におけるゲームでの演出などを行うものが多く存在する。
【0003】
遊技機は、その大別的な制御構造として、主制御基板(以下、「メイン制御基板」と言う)と周辺制御基板(以下、「サブ制御基板」と言う)とで構成されており、従来、遊技開始後にメイン制御基板で判定された抽せん結果等に基づいて、遊技機の演出を制御することを主な役目とするサブ制御基板によって、液晶画面や照明部等を介し様々な演出処理が行われている。
【0004】
特に、照明部の制御については、主としてRGBの原色を有する発光素子(LEDなど)を前提として、RGB空間上のこれらの情報値を制御するための様々な画像処理が工夫されてきた。
【0005】
例えば、特許文献1には、LEDなどの発光素子を平面状に配置して構成される画像表示装置に用いられる発明が開示されている。
【0006】
より具体的には、RGBの原色を有する発光素子と単色の発光素子とを格子状に配列して構成した画像表示部に表示する画像を生成する画像処理装置において、入力画像データから着目した画素位置の周辺の空間周波数を検出して高周波数検出信号を出力する高周波数検出部と、前記入力画像データに含まれる第一のRGBデータから輝度データを算出する輝度算出部と、前記第一のRGBデータから第二のRGBデータ及び白色データを生成するRGBW変換部と、前記着目した画素位置について前記高周波数検出信号の前記空間周波数が高いことを示す場合は、前記着目した画素位置における前記輝度データの合成割合を前記着目した画素位置における前記白色データの合成割合に対して大きくして合成した単色用データを生成する単色用データ生成部と、前記高周波数検出信号の前記空間周波数が低いことを示す場合に、前記RGBの原色を有する発光素子に表示するデータにおける前記第二のRGBデータの合成割合を前記第一のRGBデータの合成割合に対して大きくする3in1用データ生成部とを備えることを特徴とする画像処理装置が開示されている。
【0007】
また、RGBデータは、例えば各色を1バイトずつ割り当てて表現されたり(最大で1677万7216色)、3色で2バイトに割り当てて表現されたり(最大で65536色)するが、これらのデータを圧縮及び伸長する様々な方式は、従来LZ(Lempel Ziv)法など様々な方式が提案されている。
【0008】
LZ法はユニバーサル符号化と呼ばれるものに分類され、現代において最も代表的な圧縮伸長方式である。LZ法では辞書テーブルを使って繰り返し出現する文字列を辞書の登録番号等で置き換える方式が採用されており、多くのLZ系の手法では辞書を動的に生成しながら入力文字列を先頭から順次処理していくものである。辞書テーブルそれ自体はハフマン符号化によってコーディングされることが多い。
【0009】
ここで、LZ系の手法においては、例えば、圧縮率の向上やメモリ使用率の低減を目指そうとするとバイト単位での処理ではなくビット処理(ビット演算)が必須となっており、かかるビット処理の工夫についてもこれまで様々な提案がなされてきた。例えば、スライド辞書を用いたLZSS(Lempel-Ziv-Storer-Szymanski)方式等によるデータ圧縮方式に関し、スライド辞書型アルゴリズムの効率化を達成する方式が提案されている(特許文献2)。
【0010】
すなわち、特許文献2には、入力バッファ(10)中の入力データを辞書バッファ(12)中の符号化済データの部分列の内、最長一致するものの格納位置と一致長で指定して符号化し、符号化済みの入力データは辞書バッファ(12)に移して新たな符号化済みデータとして次の入力データを符号化するデータ圧縮方式に於いて、代表的なサンプルデータを相異なる部分列に分けたとき、所定閾値以上の出現頻度をもつ部分列を抽出し、該抽出した部分列を一列に並べて初期値文字列を予め作成する初期値作成手段(14)と、該初期値作成手段(14)で作成した初期値文字列を、符号化又は復号化に先立って最初に前記辞書バッファ(12)に固定的に設定して符号化済又は復号化済データと見做し、該初期値文字列および新たに設定した符号化済又は復号化済データの中から前記入力バッファ(10)の入力データと最長一致する部分列を検索して格納位置と一致長で指定して符号化又は復号化する符号化復号化手段(16)と、を備えたことを特徴とするデータ圧縮方式が開示されている。
【0011】
また、LZW(Lempel-Ziv-Welch)方式に基づく辞書構築型圧縮画像ファイルの途中アクセスを可能とし、メモリの使用を最小限に抑えた上で、高速な伸長を実現し得る画像表示装置が提案されている(特許文献3)。
【0012】
すなわち、特許文献3には、辞書構築型の圧縮データを伸長装置にて伸長し、この伸長された画像データを表示手段にて表示する画像表示装置において、構築した辞書内容をリセットすべく圧縮画像ファイル内の任意位置に予め入力されたコードであるクリアコードを、伸長する際に検出するクリアコード検出部と、そのクリアコードが存在する圧縮画像ファイル内での位置と、クリアコードを抽出した時点での伸長装置における構築辞書への辞書番号を表現する可変長コードのビット長、処理中の先頭バイトの値、及びこの先頭バイトのうち未処理のビットとを含むステータス情報を抽出するステータス情報抽出部と、上記検出及び抽出したクリアコード及びそのステータス情報を格納するための情報格納部とを備え、かつ、圧縮データの部分伸長要求があったときに、部分伸長開始位置に最寄りのクリアコードを情報格納部に格納されたそのステータス情報から検索する格納情報検索部と、上記格納情報検索部により検索されて求められた圧縮画像ファイル上のオフセット位置へアクセスし、該当ステータス情報を上記情報格納部からロードして伸長装置へセットし、このオフセット位置から上記部分伸長開始位置を求めるべくビットシフトを行った後に、この部分伸長開始位置から伸長を開始する部分伸長開始部とを備えていることを特徴とする画像表示装置が開示されている。
【発明を実施するための形態】
【0020】
本発明にかかる遊技機におけるデータ圧縮処理及び伸長処理等を実施するための形態について、図面を参照しながら説明する。なお、以下の実施形態の説明では、遊技機として例示的にスロットマシンを取り上げて説明するが、本発明はこれに限定されるものではなく、表示部を備えるぱちんこ機やその他の遊技機にも適用可能である。
【0021】
図1に、本発明の一実施形態における遊技機の外観を示す。
図1(A)は、遊技機の正面図であり、
図1(B)は、遊技機の右側面図である。
【0022】
図1(A)及び(B)に示すように、遊技機100は、その機構上大きく分けると、前面が開口した筐体101と、筐体101の開口面にヒンジ等によって開閉可能に取り付けられていた前面扉102とを備えている。前面扉102の前面部分には、後述するように遊技者が遊技を行うためのボタン類や表示部等が配置されている。
【0023】
遊技機100の前面に位置する前面扉102の上部には、ディスプレイ部1021と、照明部(
図1において明確には指示されていないが、ディスプレイ部1021の一部又は全部を照明部に替えてもよい。あるいは、前面扉102の下部ないし下段の任意の位置ないし領域に設置することもできる)と、スピーカ部(
図1において不図示)とが配置されている。また、前面扉102の中段上部には、表示窓103が設けられている。遊技者は、この表示窓103から筐体101の内部に収納されている複数の回転リールの外周面を目視することができる。
【0024】
回転リールは、より詳細には、それぞれが回転可能に設けられている第1回転リール1041と第2回転リール1042と第3回転リール1043とからなり、各リールの外周面には、所定の複数の図柄が付されている。遊技者は、表示窓103から第1回転リール1041、第2回転リール1042、及び第3回転リール1043の各外周面に付された縦3個の図柄を見ることができ、第1回転リールから第3回転リールまでの縦3個ずつ計9個の図柄を視認することができるようになっている。
【0025】
前面扉102の中段に位置し、前面に突出して設けられた卓の上面には、遊技媒体(メダル)投入口105と、MAXBETボタン106と、ステータス表示部(
図1において不図示)とが配置されている。
また、突起して設けられた卓の前面には、スタートレバー107、1BETボタン108、精算ボタン109、第1回転リール停止ボタン110、第2回転リール停止ボタン101、第3回転リール停止ボタン102が配置されている。また、前面扉102の最下部には、遊技媒体(メダル)の払出口を備えた遊技媒体(メダル)トレイ198が取り付けられている。
【0026】
前面扉102の上部に配置されたディスプレイ部1021は、典型的には、液晶ディスプレイ(LCD)であり、遊技者への画像等による演出を表示や情報提示等を行う。
また、ディスプレイ部1021の左右の任意の位置にスピーカ部や照明部を備えることもできる(
図1において、不図示)。また、ディスプレイ部1021の一部又は全部を照明部に置き換えることもできる。ディスプレイ部1021、スピーカ部、及び照明部によって、遊技の演出効果を高めることができる。
【0027】
筐体101内部に設けられている回転リールは、典型的には、上述の通り3個(第1回転リール1041、第2回転リール1042、第3回転リール1043)で構成され、リール状の形状に形成され、ステッピング(パルス)モータから成る回転リール駆動部により、それぞれ回動可能に配置されている。回動中の回転リールは、第1回転リール停止ボタン110、第2回転リール停止ボタン111、第3回転リール停止ボタン112の押下により、それぞれ独立して停止させることができる。また、各回転リール停止ボタンの内部には、ランプが内蔵されており、回胴停止ボタンの操作が可能な状態で、内蔵されているランプが点灯する。また、回転リール停止ボタンが押下されたときには、ランプは消灯し、回転リール停止ボタンの操作を受け付ないように構成されている。
【0028】
なお、回転リールの数は、3個を超える構成(例えば、4個)としても良い。
【0029】
第1回転リール1041、第2回転リール1042、及び第3回転リール1043の図柄を確認可能な表示窓には、遊技者が投入したメダルの枚数(ベット数)に応じて回転リールの図柄が有効となる並びである有効ラインが設定されている。
【0030】
後述する抽せん処理により決定した成立役、及び、それに対応する回転リールの図柄の組み合わせは、予め規定されており、有効ライン上に所定の図柄の組み合わせが揃ったかどうかを判断して、図柄の組み合わせが有効ライン上に揃ったときに入賞と判定される。
【0031】
前面扉102の中段に位置し、突出して設けられた卓の上面に設けられているメダル投入口105は、遊技開始前に所定枚数のメダルを投入するためのものであり、メダル投入口105にメダルを投入するか、BETボタン押下の後、スタートレバー107を操作すると、第1回転リール1041、第2回転リール1042、及び第3回転リール1043が回動し、遊技が開始されて入賞抽せんが行われる。
【0032】
1BETボタン108は、遊技機100内部に貯留しているメダル1枚を自動的に投入して、1枚のメダルを1回のゲームにベットするためのものである。1BETボタン108を押下することにより、メダル投入口105からメダルを1枚投入する必要がなくなる。また、2枚のメダルをベットする場合には、1BETボタン108を2回押下する。3枚のメダルを一度にベットする場合には、以下の、MAXBETボタン106を押下すると便利である。
【0033】
MAXBETボタン106は、遊技機100内部に貯留しているメダルを自動的に3枚投入して、3枚のメダルを1回のゲームに対してベットするためのものである。このMAXBETボタン106により、メダル投入口105から3枚のメダルを投入したり、1BETボタン108を3回押下したりする必要はなくなる。
【0034】
精算ボタン109は、内部貯留(クレジット)されたメダルをメダル払出口からメダルトレイ198に払い出して精算するためのものである。
【0035】
図2に、本発明の他の実施形態にかかる遊技機の外観を説明する。
図2(A)に示された遊技機200は、特徴的なLED照明部240を備えており、
図2(B)にその拡大図が示されている。
図2(C)は、LED照明部の他の形状バリエーションである。
【0036】
図2(A)に示されるように、遊技200は、その正面上部の筐体縁に沿って独特な形状を有するLED照明部240を備える。LED照明部240の形状そのものは本発明の本質ではなく、様々な形状を採用することができる。その他の部材201、203、205、210〜212、2041〜2043は、
図1における101、103、105、110〜112、1041〜1043にそれぞれ対応するので説明を省略する。
【0037】
また、本発明はこれに限定されるものではないが、LED照明部240の表面は平面であっても凹凸が有するものであっても良い。凹凸を有するものとしては、例えば岩肌や樹木をモチーフにした凹凸加工などが挙げられ、その表面に多数のLED発光素子が設置される。
【0038】
図2(B)に示されるLED照明部240には、一例として、その表面領域2401〜2403にLED発光素子が埋め込まれている様子が示されている。LED発光素子が埋め込まれる領域は、LED照明部240表面の全域であっても、複数の隙間を有する複数の領域であっても良い。
【0039】
図2(C)に示されるLED照明部250は、LED照明部240とは異なる他の形状を有する他のバリエーションである。本発明はLED照明部の個別の形状に制限されることなく、円形、楕円形、矩形状等、様々な形状を採用することができる。
【0040】
図2(C)において、LED照明部250には、LED発光素子2501以降の素子が埋め込まれている様子が表わされている。同図中、LED照明部250には、22×7のLED発光素子が表わされているが、本発明はこれらに制限されるものではなく、任意の大きさのLED発光素子を任意に配列することができる。
【0041】
図3に、本発明の一実施形態における遊技機の機能ブロックを説明する。後述する遊技機100の一連の特徴的動作は、以下に説明するハードウェアの個々の動作、及びこれらのハードウェアとソフトウェアとの協調動作によって実現されている。
【0042】
遊技機は、一実施形態における制御構成として、配線(ハーネス)を介して接続されたメイン制御基板31とサブ制御基板32とからなり、筐体101内部に収納されている。
メイン制御基板31は、一種のボードコンピュータであり、演算処理、遊技機100のデバイス制御等を行うCPU311と、プログラムの作業領域としてデータの一時的な記憶等を行う書き換え可能なRAM312と、遊技機100の制御プログラム及び遊技抽せん処理用の抽せんテーブル等を記憶したROM313と、データ通信バス等の制御を行う制御部314と、ボタンやスイッチ等からの入力や各種LED等への出力、及び回転リールユニット等の駆動を行う入出力部315とを備えている。
【0043】
メイン制御基板31の主な機能は、抽せん処理、回転リールの制御等を行うことであり、遊技機に関する規則及び規格等に基づいた処理動作を行うように設計されている。
【0044】
サブ制御基板32は、一種のボードコンピュータであり、演算処理、ディスプレイ部381の制御等を行うCPU321と、プログラムの作業領域としてデータの一時的な記憶等を行う書き換え可能なRAM322と、ディスプレイ部381、照明部382、スピーカ部383の制御を行うプログラム及び各種データを記憶したROM323と、データ通信バス等の制御を行う制御部324と、照明等の駆動を行う入出力部325と、ディスプレイ部381の駆動を行うディスプレイ駆動部326と、スピーカ382から音声や効果音等を発生させるための音源を格納した音源IC327とを備えている。
【0045】
また、サブ制御基板32の他の重要な機能は、メイン制御基板で判定された抽せん結果に基づく演出等である。具体的には、サブ制御基板32のROM323には、ディスプレイ381、照明部382、及びスピーカ部383によって様々な演出を行うための画像データ等からなる演出データも格納されており、メイン制御基板31から出力される信号によって、ROM内部に格納されている演出データから演出内容を決定して、演出内容に基づいて、ディスプレイ部381、照明部382、及びスピーカ部383の駆動処理を行う。
【0046】
上述したような、ディスプレイ部381、照明部382、及びスピーカ部383によってなされる演出は、コンピュータプログラムとしてROM323等に記憶されており、CPU321によって、適宜、RAM322等へ呼び出され実行されることにより実現される。
【0047】
次に、メイン制御基板31の入出力系統について説明する。
図3に示すように、まず、メイン制御基板31は、入出力部315を介して、BETボタン351(1BETボタン及びMAXBETボタンを含む)、精算ボタン352、スタートレバー353、第1回転リール停止ボタン354、第2回転リール停止ボタン355、第3回転リール停止ボタン356の押下を読み出し可能に構成されている。
【0048】
また、メイン制御基板31には、入出力部315を介して、ステータス表示部36のウエイトLED361、投入可能LED362、再遊技LED363、スタートLED364、投入枚数LED365、払出枚数7セグLED366、貯留メダル数7セグLED367が接続されており、各種LEDの点灯制御、各表示器に出力するべき数字の表示制御を行うように構成されている。
【0049】
また、セレクター部357は、図示しない投入センサとソレノイドとを含み、メダル投入口105内に設けられている投入センサからの信号を入出力部315介して読み出し、投入されたメダルの枚数のカウント及び投入されたメダルの真贋等のチェックを行う。
また、セレクター部357のソレノイドは、例えば、規定枚数のメダルが投入されたとき、或いは、スタートレバー107が操作されたとき、メダルを投入しても、メダルが返却されるように作動してメダルが投入されないように機能する。
【0050】
電源ボックス37の設定キー371は、遊技中の抽せんにおける抽せんテーブルの各役の当せん確率に段階を設けて、設定毎の出玉率を変更する機能を有する。当せん確率の設定は、一例として6段階の設定が可能となっている。メイン制御基板31は、入出力部315を介して設定キー371によって設定された設定値を管理することが可能となっている。より具体的には、設定キーをONにすることでメイン制御基板が設定変更可能モードとなり、セレクトスイッチ372が押下されることによりメイン制御基板に押下された信号が送られ、メイン制御基板において管理されている設定値がインクリメント(またはデクリメント)される。また、電源ボックス37のセレクトスイッチ372は、設定キー371によって設定可能(設定ON)状態にした場合に設定値を順送り(又は逆送り)に変更するためのスイッチであり、設定不可(OFF)状態には、遊技機にエラー等が発生した場合にメイン制御基板31のCPU311等の初期化を行うこともできる。電源スイッチ373は、遊技機に電力を供給するためものである。
【0051】
回転リールユニット33は、第1回転リール1041、第2回転リール1042、及び第3回転リール1043をそれぞれ回転させるためのステッピングモータを備えた第1回転リール駆動部331、第2回転リール駆動部332、第3回転リール駆動部333を有し、各回転リールを独立して回転及び/又は停止するよう制御可能である。また、各回転リールの回転中の位置を検出するための第1回転リール位置センサ334、第2回転リール位置センサ335及び第3回転リール位置センサ336、並びに、それぞれのセンサに対応するインデックス(
図3において不図示)が設けられている。
【0052】
例えば、回転中の第1回転リールの所定の位置を第1回転リール位置センサ334で検出し、第1回転リール位置センサ334により検出した第1回転リールの所定の位置(インデックスの位置)からステッピングモータを駆動したパルス数をカウントすることにより、第1回リールの位置情報を取得ことができる。同様に、第2回転リール及び第3回転リールについても、第2回転リール位置センサ335及び第3回転リール位置センサ336によりそれぞれの回転リールの位置情報を得ることができる。
このようにして、後述する抽せん処理の結果に基づく図柄の表示を制御することができる。
【0053】
ホッパーユニット34は、入賞時にメダルを払い出すためのものであり、図示しないがホッパー駆動部と払出しセンサによって所定の枚数のメダルが払い出される。
【0054】
この他、外部中継端子(
図3において不図示)が設けられ、メイン制御基板31と外部に設けられている遊技データを表示するためのデータランプ(
図3において不図示)とを接続し、メイン制御基板31からの信号をデータランプへ送信するための端子としての機能を果たす。
【0055】
また、本発明の実施に必要なプログラムないしソフトウェアは、通常、ROM313、323等のメモリにインストールないし格納され、プログラムないしソフトウェアの実行時には、必要に応じてRAM312、322等のメモリにその全部又は一部のソフトウェアモジュールとして読み出され、CPU311、321において演算実行される。
【0056】
なお、演算実行は必ずCPU等の中央処理部で行われる必要はなく、図示しないディジタルシグナルプロセッサ(DSP)等の補助演算装置を採用することもできる。
【0057】
[抽せん処理]
遊技機100における抽せん処理は、一例として、スタートレバーの操作時にメイン制御基板31のROM313に格納されているプログラム及びテーブルに基づいて実行される。ROM313には、抽せん処理プログラムの他、当せん確率テーブル、 シンボルテーブルおよび入賞シンボル組合せテーブル等が格納されている。当せん確率テーブルは、乱数発生部(不図示)で発生させる乱数を区分して、各種当せん及び「当せんなし(外れ)」に対応付けられて記憶している。発生させた乱数データと当せん率テーブル等とを参照することにより遊技に対する各種当せんあるいは外れが決定される。
【0058】
このとき、抽せん処理の結果が外れの場合は、所定の図柄が揃わないように制御されたり、逆に、抽せん処理の結果が入賞の場合は、停止ボタンが所定のタイミングで押下されることなどを条件に所定の図柄が揃うように制御されたりする場合もある。そして、各種当せん後、所定の図柄が揃えば入賞図柄に相当するメダルが払い出される。
【0059】
[本発明の基本概念]
(データ構造等の前提例)
次に、本発明の一実施形態にかかる遊技機における圧縮伸長処理の基本概念を説明する。本発明にかかる遊技機の照明部(240、250、382等)には、一実施形態において多数のLED発光素子が採用される。これらのLED発光素子を駆動するためのドライバでは、基本的にRGB形式の情報に基づいた駆動制御が行われる。RGB形式情報は、一例として、各色につき1バイトずつ、計3バイト長(計1677万色)で表現されるデータ形式である。この場合、0≦R,G,B≦255(0xFF)となる。なお、0≦R,G,B≦1で表わす場合には、RGB各値を0xFFで割った大きさで表現される。
さらに本発明の一実施形態にかかる遊技機で取り扱われるLED発光素子駆動用のデータは、1以上の演出の単位(フレームの集まり)ごとに時系列的に配置される個々のフレームを特定する番号(IDなど)を管理する「シーケンスデータ」と、全ての演出に使用される全てのフレームにおける個々のLED発光素子の色情報(上述のRGB形式の情報)の並びを管理する「パターンデータ」(これも個別のIDで管理される)とで構成されており、いずれのデータも遊技機内のROMに格納されている。
なお、上記シーケンスデータと上記パターンデータとを合わせて「ランプデータ」あるいは「ランプ」ということもある。ランプデータも固有のID等で管理されている。ランプは1の演出を構成するということもできる。
そして、ID等で特定されるランプデータに基づいて演出処理を実施するときには、(1)当該ランプデータ再生時にシーケンスデータを読み出して再生すべきパターンIDを決定し、(2)パターンIDが決定したらROMから対応するパターンデータを読み出してデコード処理を行う(デコードされたデータはRAM上に展開される)。これら(1)及び(2)の処理は、順次再生されるフレームごとに処理される。
本発明の一実施形態にかかる圧縮伸長処理は、上記パターンデータに対して適用すると好適である。
【0060】
(基本概念)
本発明の基本概念は、LED駆動ドライバレベルではRGB各8ビットで取り扱われるLEDデータの色データ(以下、RGB888という)をまずRGB各5ビット(以下、RGB555という)に落とし、1画素に対する色データを15ビットで表現させ、1ビットをLZSS圧縮で用いる一致(不一致)フラグデータ(後述)に割り当てることするものである。
このように構成することで、1画素に対する色データとLZSS法に必要な一致(不一致)フラグデータとをビット端数なしの2バイトで表現することができ一種の正規化が図られるので、圧縮伸長に関わるビットのための余分なデータ量の増加を抑制できる。更に具体的な例を挙げると、圧縮対象のデータが仮に圧縮の効かないデータであったとしても圧縮(符号化)前のデータ量を越えることがないという利点がある。
併せて、具体的な効果等は後述するがRGB888形式の画素データをRGB555形式のデータに落とし込んだだけでもビットを切り詰めた分の圧縮効果が見込まれるが、本発明の基本概念をさらに適用すると従前のLZSS法よりも高い圧縮効果が多くのデータに対して期待できる。これは、2バイト毎に1ビットの未使用ビット(一致(不一致)フラグのために予約できる領域である)が確実に存在するという前提があるためこのデータ構造を利用することで高効率な圧縮が可能になるものである。
さらに、2バイト毎に1ビットの未使用ビット(一致(不一致)フラグのために予約できる領域である)が確実に存在するという前提は、フラグのビット位置がずれないのでビット単位の処理が複雑にならないという利点もある。
【0061】
(本発明の一実施形態において採用される圧縮方式)
本発明の一実施形態において採用される好適な圧縮伸長手法はLZSS法であるが、念のために本手法の基本的な動作フローを説明する。LZSS法(符号化)は、LZ77符号化やLZ78符号化の改良手法であるので、まずは、LZ77符号化及びLZ78符号化(総称してLZ符号化という)の概略から説明する。
【0062】
(LZ符号化の圧縮処理フロー)
(A1)スライド辞書のメモリを確保する(あるいは、先頭ポインタを確保)
(A2)圧縮対象データを先頭から走査して辞書中から一致するデータパターンを検索する
(A3)一致するデータパターンのうち、最も長いデータパターンの辞書における位置及び長さ(ポイント情報という)を抽出し、エンコード情報として出力する。一致するデータパターンがなかった場合には、(0,0)を出力する
(A4)次に続くデータを1つそのまま出力する
(A5)処理済みデータ文字列を辞書に追加する
(A6)圧縮対象データ文字列がなくなるまで(A2)〜(A5)を繰り返す
【0063】
(LZ符号化の伸長処理フロー)
(B1)圧縮データからポイント情報を読み込む
(B2)ポイント情報に示された辞書中の位置(開始位置)から決められた長さ分のデータを出力する。出力データは辞書に追加する
(B3)次のデータを1つ読み込みそのまま出力し、辞書にも追加する
(B4)圧縮データがなくなるまで(B1)〜(B3)を繰り返す
【0064】
LZSS法の前身といえるLZ符号化は上記の処理を経て圧縮処理及び伸長処理を実施するが、辞書に一致パターンがない場合にポイント情報として(0,0)を出力し、さらに「次のデータ1つ」を出力しなければならない点は、圧縮率への貢献度としては高いものとは言えないため、ポイント情報と元のデータとをフラグビットを用いて区別する改良手法が試みられた。これがLZSSの基本的考え方であり、上記フラグビットが一致(不一致)フラグである。
すなわち、LZSS法に基づく圧縮処理フロー及び伸長処理フローは次のようになる。
【0065】
(LZSS符号化の圧縮処理フロー)
(C1)スライド辞書のメモリを確保する(あるいは、先頭ポインタを確保)
(C2)圧縮対象データを先頭から走査して辞書中から一致するデータパターンを検索する
(C3)一致するデータパターンのうち、最も長いデータパターンの辞書における位置及び長さ(ポイント情報という)を抽出する。一致長が最小値以下の場合は不一致フラグ(1ビット長の0)と元のデータを出力する
(C4)一致長が最小値よりも大きい場合は一致フラグ(1ビット長の1)とポイント情報を出力する
(C5)処理済みデータ文字列を辞書に追加する
(C6)圧縮対象データ文字列がなくなるまで(A2)〜(A5)を繰り返す
【0066】
(LZSS符号化の伸長処理フロー)
(D1)圧縮データから一致(不一致)フラグ(1ビット)を読み込む
(D2)フラグビットが0(不一致)の場合はデータ値を読み込みそのまま出力し、辞書に追加する
(D3)フラグビットが1(一致)の場合はポイント情報を読み込み、ポイント情報に示された開始位置から決められた長さだけ出力し、辞書に追加する
(D4)圧縮データがなくなるまで(D1)〜(D3)を繰り返す
【0067】
[圧縮・伸長処理手順の具体例]
次に、
図4〜
図5のフローチャートを用いて、本発明の一実施形態にかかる遊技機におけるデータ圧縮及びデータ伸長のための処理手順、並びに、本発明の一実施形態における遊技機の照明演出処理手順を説明する。
【0068】
図4は、本発明の一実施形態にかかる遊技機に照明演出用のLEDデータの色データを圧縮して格納する処理手順を説明するフローチャートである。この圧縮データには、照明部のLED発光素子を所定の色合いで発光させるための色情報が含まれており、元々は本発明の一実施形態にかかる遊技機とは無関係なコンピュータ上で、RGB形式に基づいて加工ないし編集して作成されたものである。RGB形式に基づいて加工ないし編集される画素データは、照明部(例えば、240や250)の各LED発光素子に対する画素値の時系列の変化として生成される。
図6を参照して、その概念を説明する。
【0069】
図6(A)は、照明部240上の各LED発光素子を発光させるための画素値を時系列的に生成して管理するための論理データ構造例である。601aは、ある時刻の照明部240上の各LED発光素子の画素値の集合(1フレーム分)を表わしている。物理的には、照明部240上の全LED発光素子にナンバリングし、ナンバリングされたメモリ空間上に画素値を格納することになる。例えば、各LED発光素子を3バイト長のRGB値(ただし、0≦R,G,B≦0xFF)で表わすものとすると、601aに対応する物理メモリ上のデータ構造は、
FLAME0[0]=0xFFFFFF
FLAME0[1]=0x80C0FF
FLAME0[2]=0x80C0FF
FLAME0[3]=0x80C0FF
・・・・・・
などとなる(配列は、照明部240上のLED発光素子の個数分用意される)。なお、上記FLAME0をある時刻における照明部240のフレームデータなどというものとする。
【0070】
601b〜601iは、601aから所定時間ごとの照明部240上の各LED発光素子の画素値の集合(フレームデータ)である。例えば、1秒間に25回の頻度で照明部240上の画素値を更新することとすると、601a〜601iは、40msごとの照明部240のフレームデータとなる。
【0071】
これらのフレームデータは演出ごとに任意の時間長のものを生成することができ、演出の種類によって異なるもの(異なるランプデータ)を用意することができる。
【0072】
図6(B)は、照明部250上の各LED発光素子を発光させるための画素値を時系列的に生成して管理するための論理データ構造例である。602aは、ある時刻の照明部250上の各LED発光素子の画素値の集合を表わしている。物理的には、照明部250上の全LED発光素子にナンバリングし、ナンバリングされたメモリ空間上に画素値が格納される。
【0073】
602b〜602iは、602aから所定時間ごとの照明部250上の各LED発光素子の画素値の集合(フレームデータ)である。これらのフレームデータは演出ごとに任意の時間長のものを生成することができ、演出の種類によって異なるもの(異なるランプデータ)を用意することができる。
【0074】
図4では、本発明の一実施形態にかかる遊技機とは別体のコンピュータ(以下、「PC等」ともいう)上で編集ないしデザインされたRGB形式の発光素子ごとの画素データを圧縮処理して本発明の一実施形態にかかる遊技機内のROM等に書込む処理手順例を説明している。以下、詳述する。
【0075】
図4において処理を開始すると(ステップS401)、ステップS402に進み、PC等上の処理プログラムで使用される変数やカウンタ等の初期化が行われる。例えば、ステップS403以降でカウントされるフレーム枚数や1フレーム上の発光素子数をカウントするための変数及び/又はカウンタ、並びに、圧縮処理において必要な各変数・カウンタ等である。
【0076】
次に、ステップS403へ進み、
図7を参照して例示したフレームデータ(1つの照明演出として区切りとなる複数のフレーム)に対する処理がどの程度完了したかが判断され、同ステップにおいて全フレームに対する変換処理が終了した(Yes)場合には、1つの照明演出として区切りとなるフレームデータに対する変換処理は終了する(ステップS410)。
【0077】
ステップS403において、Noの場合には、ステップS404へ進み、1フレーム上の各発光素子に対応するRGBデータをRGB888からRGB555へ変換する(なお、ここで処理されるフレームが既に処理されたフレームと同一の場合にはステップS409へスキップさせることもできる)。
【0078】
(RGBビットの落とし込み例)
ここで、RGB888からRGB555へビットを落とし込む方法には様々なものがあるので、以下に例示する。基本は復元方法も同時に定義する必要がある点である。
1)パターン1(単純なシフトまたはマスク処理を行う)
RGB888からRGB555へ変換する場合には、RGBそれぞれの値を右へ3ビットシフト処理させる(/8と同義)。RGB555からRGB888へ復元する場合には、RGBそれぞれの値を左へ3ビットシフト処理させる(*8と同義)。
計算が簡素で速いというメリットがある一方でLEDの最大輝度値(255)が出ないというデメリットがある。
2)パターン2(値255を最大値とするように均等割りを行う)
RGB888からRGB555へ変換する場合には、RGBそれぞれの値にN*31/255の計算を適用する。RGB555からRGB888へ復元する場合には、RGBそれぞれの値にN*255/31の計算を適用する。
LEDの最大輝度値(255)を出せるというメリットがある一方で色の諧調が均一にならないというデメリットがある。
【0079】
(RGB888への復元する場合のさらなる工夫)
本発明の一実施形態においては、遊技機のハードウェアとしての出力結果としてのRGB888が良好なものとなるように、液晶ディスプレイ用のガンマ補正を施すとリニアに復号可能となる(つまり、元の数値にできる限り近しい値に復号できる)。同じRGB値を入力値とできる液晶デバイスに比して、本発明の一実施形態にかかる遊技機が想定しているLEDは、RGB値に対して輝度の立ち上がりが強い傾向にあるためこのような対策が有効となることが発明者によって見いだされた。
【0080】
次に、ステップS405へ進み、1フレーム上の全発光素子に対する圧縮処理が終了したかどうかが判断される。なお、最初に同ステップに来たときは、照明演出として区切りとなるフレームデータにおける第1フレームの最初の発光素子に対する変換処理がなされるとき(つまり、フレームカウンタも発光素子カウンタもゼロの場合)である。
【0081】
ステップS405において、Yesの場合は、1フレーム上の全発光素子に対する変換処理が終了しているので、ステップS409へ進み、処理対象となるフレームカウンタ(ないしポインタ)をインクリメントして、ステップS403へ復帰する。
ステップS405において、Noの場合は、1フレーム上の全発光素子に対する圧縮処理は完了していないので、ステップS406へ進み、カウンタ等によって管理されている同フレーム上の圧縮処理対象となっている発光素子に対するRGBデータの圧縮処理が実施される。
【0082】
ステップS406では、圧縮処理対象となっている1以上の連続する発光素子に対するRGBデータの圧縮処理が行われる。
【0083】
ステップS407では、圧縮処理を施されたデータが、メモリに書き込まれる。この場合のメモリは、PC上のメモリであっても、遊技機に搭載されるROMであっても差し支えないが、一般的には、1処理分の情報を逐次ROMへ書き込むということは稀であり、この場合には、PC上のメモリ(RAMなど)へいったんバッファされることになる。そして、その場合、PC上のメモリへバッファされた画素データは、ある程度蓄積されると一塊のデータとしてPCから遊技機用ROMへの書き込みが行われる。
図4には明示していないが、1フレームごとにまとまった画素データをROMへ書き込む場合はステップS409において実施することができるし、処理の最後にまとめてROMへ書き込む場合は、ステップS410の直前に実施することもできる。
【0084】
次に、ステップS408へ進み、処理対象となっている発光素子に対するRGBデータを管理しているカウンタ(ないしポインタ)を1以上進め(そのとき置き換えられた辞書中の文字列長によって進める長さは異なる)、ステップS405へ復帰する。
【0085】
上記処理フローにおいて、ポイント情報の長さを15ビットになるようにすれば、処理単位となる元のRGBデータ(15ビット)と一致することになり、また、一致した場合も不一致だった場合も出力コードは2バイト単位となるのでメモリの使用量及び(伸長時の)処理速度の両面で良好な圧縮伸長性能を発揮することとなる。
【0086】
なお、ランプにおけるシーケンスデータに関してもシーケンス内で同じパターンデータが登場する場合は当該パターンデータを重複して持たないようにするなどのデータ容量削減は可能である。
【0087】
(圧縮効率例)
下表に、RGB888形式からRGB555形式にビットを落とし込んだ後(これは単純にビットが短くなる分当然にデータ容量は削減される)、このRGB555形式のデータに対して従来のLZSS法による圧縮を適用した場合と、本発明の一実施形態にかかる圧縮を適用した場合の圧縮データ容量を対比して示す。
【表1】
上表のように、本発明の一実施形態にかかる圧縮を適用した場合には、従来のLZSS法による圧縮を適用した場合よりも、さらに良好な結果が得られていることが容易に理解できるであろう。
【0088】
図5は、本発明の一実施形態にかかる遊技機の処理手順を説明するフローチャートである。
図5では、一例として、遊技機の電源投入後にメイン制御基板31及び/又はサブ制御基板32のROMに格納されたプログラムが、適宜RAM等の作業領域に読み込まれて実行されることにより実施される。より具体的には、遊技機の稼働中に照明演出(典型的には、区切りとなる複数のフレームデータの集まりごとに管理されている)を行う場合の遊技機内の処理例を示している。
【0089】
図5においてランプデータに対する伸長処理を開始すると(ステップS501)、ステップS502に進み、遊技機上の処理プログラムで使用される変数やカウンタ等の初期化が行われる。例えば、ステップS504以降でカウントされるフレーム枚数や1フレーム上の発光素子数をカウントするための変数及び/又はカウンタ、並びに、伸長処理において必要な各変数・カウンタ等である。
【0090】
次に、ステップS503へ進み、
図7を参照して例示したフレームデータ(1つの照明演出として区切りとなる複数のフレーム。例示的に、ランプデータ)に対する処理がどの程度完了したかが判断され、同ステップにおいて全フレームに対する変換処理が終了した(Yes)場合には、1つの照明演出として区切りとなるフレームデータ(ランプデータ)に対する変換処理は終了する(ステップS511)。
【0091】
ステップS503において、Noの場合には、ステップS504へ進み、1フレーム上の全発光素子に対する伸長処理が終了したかどうかが判断される。なお、最初に同ステップに来たときは、照明演出として区切りとなるフレームデータにおける第1フレームの最初の発光素子に対する伸長処理がなされるとき(つまり、フレームカウンタも発光素子カウンタもゼロの場合)である。
【0092】
ステップS504において、Yesの場合は、1フレーム上の全発光素子に対する伸長処理が終了しているので、ステップS508へ進み、1フレーム上の各発光素子についてRGB555からRGB888への変換がなされ、さらにステップS509へ進み、RGB値へ変換後の発光素子の画素データがLEDドライバへ送出され、LEDドライバにより照明部が発光する。そして、ステップS510へ進み、処理対象となるフレームカウンタ(ないしポインタ)をインクリメントして、ステップS503へ復帰する。
ステップS504において、Noの場合は、1フレーム上の全発光素子に対する変換は完了していないので、ステップS505へ進み、カウンタ等によって管理されている同フレーム上の伸長処理対象となっている発光素子に対するデータの伸長処理が実施される。
【0093】
ステップS505では、伸長処理対象となっている発光素子に対するRGB値(RGB555)への伸長処理が行われる。
【0094】
ステップS506では、RGB555形式に変換されたデータが、遊技機内(例えば、サブ制御基板上)のバッファメモリに書き込まれる。そして、ステップS507へ進み、処理対象となっている発光素子に対応するデータ値を管理しているカウンタ(ないしポインタ)を適宜進め、ステップS504へ復帰する。
【0095】
なお、
図5において、バッファメモリへ送出する処理(ステップS506)やRGB888形式へ変換後の発光素子の画素データがLEDドライバへ送出される処理(ステップS508)は、これらのタイミングでしか実施できないものではなく、実装上適宜のタイミングで実施させることができる。
【0096】
また、本発明の一実施形態においては、ステップS503(においてNo)〜ステップS510までの処理時間は、概ね100ms〜25ms程度(10〜40フレーム/秒程度)であり、この処理速度が維持されることによって、なめらかなLED照明演出が実現される。
【0097】
上記処理フローにおいて、ポイント情報の長さを15ビットになるようにすれば、処理単位となる元のRGBデータ(15ビット)と一致することになり、また、一致した場合も不一致だった場合も入力コードは2バイト単位となるのでメモリの使用量及び処理速度の両面で良好な性能を発揮することとなる。
【0098】
以上、具体例に基づき、本発明にかかる遊技機におけるデータ圧縮処理方法及びデータ伸長処理方法等の実施形態を説明したが、本発明の実施形態としては、遊技機を実施するための方法又はプログラムの他、プログラムが記録された記憶媒体(一例として、光ディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、磁気テープ、ハードディスク、メモリカード)等としての実施態様をとることも可能である。
【0099】
また、プログラムの実装形態としては、コンパイラによってコンパイルされるオブジェクトコード、インタプリタにより実行されるプログラムコード等のアプリケーションプログラムに限定されることはなく、オペレーティングシステムに組み込まれるプログラムモジュール等の形態であっても良い。
【0100】
さらに、プログラムは、必ずしも制御基板上のCPUにおいてのみ、全ての処理が実施される必要はなく、必要に応じて基板に付加された拡張ボードや拡張ユニットに実装された別の処理ユニット(DSP等)によってその一部又は全部が実施される構成とすることもできる。
【0101】
本明細書(特許請求の範囲、要約、及び図面を含む)に記載された構成要件の全て及び/又は開示された全ての方法又は処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。
【0102】
また、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一又は均等となる特徴の一例にすぎない。
【0103】
さらに、本発明は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本発明は、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された全ての新規な特徴又はそれらの組合せ、あるいは記載された全ての新規な方法又は処理のステップ、又はそれらの組合せに拡張することができる。