以下、図面を用いて、本発明の実施例に係るパチンコ機(遊技台)について詳細に説明する。
<全体構成>
まず、図1を用いて、本発明の実施例に係るパチンコ機100の全体構成について説明する。なお、同図はパチンコ機100を正面(遊技者側)から見た状態を示す略示正面図である。
パチンコ機100は、遊技領域104を覆う閉状態および該遊技領域104を開放する開状態のうちの一方から他方に開閉状態を変化可能な上扉150と、この上扉150の奥側に視認可能に配設された遊技盤(盤面)102を備えている。この遊技盤102には、遊技球(以下、単に球と称する場合がある。)を遊技盤102の中央に位置する遊技領域104に案内するための外レール106と内レール108を配設している。
遊技領域104の中央やや上側には、横長の装飾図柄表示装置110を配設し、遊技領域104の右下には、普通図柄表示装置112と、特別図柄表示装置114と、普通図柄保留ランプ116と、特別図柄保留ランプ118と、高確中ランプ120を配設している。さらに、図示は省略するが、遊技盤102の上下及び左右の遊技盤端部付近には複数の演出用ランプが配設されている。なお、以下、普通図柄を普図、特別図柄を特図と称する場合がある。
装飾図柄表示装置110は、装飾図柄(図2(b)参照)を表示するための表示装置であり、本実施例では液晶表示装置によって構成する。この装飾図柄表示装置110は、左図柄表示領域110a、中図柄表示領域110b、右図柄表示領域110cの3つの表示領域に分割し、各々の表示領域110a、110b、110cに異なった装飾図柄を表示することを可能としている。シャッタ160は、装飾図柄表示装置110の前面で装飾図柄表示装置110を遮蔽または表示するために、左図柄表示領域110a及び右図柄表示領域110cの外側から中図柄表示領域110b方向(矢印A及びB方向)に可動する可動物である。
普図表示装置112は、普図(図2(c)参照)の表示を行うための表示装置であり、本実施例では7セグメントLEDによって構成する。特図表示装置114は、特図(図2(a)参照)の表示を行うための表示装置であり、本実施例では7セグメントLEDによって構成する。
普図保留ランプ116は、保留している普図変動遊技(詳細は後述)の数を示すためのランプであり、本実施例では、普図変動遊技の開始を2つまで保留することを可能としている。特図保留ランプ118は、保留している特図変動遊技(詳細は後述)の数を示すためのランプであり、本実施例では、特図変動遊技の開始を4つまで保留することを可能としている。
高確中ランプ120は、遊技状態が高確率状態であること、または高確率状態になることを示すためのランプであり、遊技状態を低確率状態から高確率状態にする場合に点灯し、高確率状態から低確率状態にする場合に消灯する。
また、これらの表示装置やランプ等の周囲には、一般入賞口122と、普図始動口124と、第1特図始動口126と、第2特図始動口128と、可変入賞口130を配設している。
一般入賞口122は、本実施例では左右に2つずつ配設しており、この一般入賞口122への入球を所定の球検出センサ(図示省略)が検出した場合(一般入賞口122に入賞した場合)、払出装置を駆動し、所定の個数(本実施例では10個)の球を賞球として後述する貯留皿144に排出する。貯留皿144に排出した球は遊技者が自由に取り出すことが可能であり、これらの構成により、入賞に基づいて賞球を遊技者に払い出すようにしている。なお、一般入賞口122に入球した球は、パチンコ機100の裏側に誘導した後、遊技島側に排出する。本実施例では、入賞の対価として遊技者に払い出す球を賞球、遊技者に貸し出す球を貸球と区別して呼ぶ場合があり、賞球と貸球を総称して球(遊技球)と呼ぶ。
普図始動口124は、ゲートやスルーチャッカーと呼ばれる、遊技領域104の所定の領域を球が通過したか否かを判定するための装置で構成しており、本実施例では左右に1つずつ配設している。普図始動口124を通過した球は一般入賞口122に入球した球と違って、遊技島側に排出することはない。球が普図始動口124を通過したことを所定の球検出センサが検出した場合、パチンコ機100は、普図表示装置112による普図変動遊技を開始する。
第1特図始動口126は、本実施例では中央に1つだけ配設している。この第1特図始動口126への入球を所定の球検出センサが検出した場合、払出装置を駆動し、所定の個数(本実施例では3個)の球を賞球として後述する貯留皿144に排出するとともに、特図表示装置114による特図変動遊技を開始する。なお、第1特図始動口126に入球した球は、パチンコ機100の裏側に誘導した後、遊技島側に排出する。
第2特図始動口128は、電動チューリップ(電チュー)と呼ばれ、本実施例では第1特図始動口126の真下に1つだけ配設している。この第2特図始動口128は、左右に開閉自在な羽根を備え、羽根の閉鎖中は球の入球が不可能であり、普図変動遊技に当選し、普図表示装置112が当たり図柄を停止表示した場合に羽根が所定の時間間隔、所定の回数で開閉する。第2特図始動口128への入球を所定の球検出センサが検出した場合、払出装置を駆動し、所定の個数(本実施例では5個)の球を賞球として後述する貯留皿144に排出するとともに、特図表示装置114による特図変動遊技を開始する。なお、第2特図始動口128に入球した球は、パチンコ機100の裏側に誘導した後、遊技島側に排出する。
可変入賞口130は、大入賞口またはアタッカーと呼ばれ、本実施例では遊技領域104の中央部下方に1つだけ配設している。この可変入賞口130は、開閉自在な扉部材を備え、扉部材の閉鎖中は球の入球が不可能であり、特図変動遊技に当選し、特図表示装置114が大当たり図柄を停止表示した場合に扉部材が所定の時間間隔(例えば、開放時間29秒、閉鎖時間1.5秒)、所定の回数(例えば15回)で開閉する。可変入賞口130への入球を所定の球検出センサが検出した場合、払出装置を駆動し、所定の個数(本実施例では15球)の球を賞球として後述する貯留皿144に排出する。なお、可変入賞口130に入球した球は、パチンコ機100の裏側に誘導した後、遊技島側に排出する。
さらに、これらの入賞口や始動口の近傍には、風車と呼ばれる円盤状の打球方向変換部材132や、遊技釘134を複数個、配設していると共に、内レール108の最下部には、いずれの入賞口や始動口にも入賞しなかった球をパチンコ機100の裏側に誘導した後、遊技島側に排出するためのアウト口136を設けている。
遊技盤102の下方には、発射モータによって回動する発射杆138と、この発射杆138の先端部に取り付けられて球を遊技領域104に向けて打ち出す発射槌140と、この発射槌140によって打ち出す球を外レール106に導くための発射レール142と、球を一時的に貯留すると共に、貯留している球を順次、発射レール142に供給するための貯留皿144と、遊技者による押下操作が可能であり、所定の時期にその操作を検出した場合に上述の装飾図柄表示装置110などによる演出表示を変化させるためのチャンスボタン(以下、演出ボタンと言うことがある)146を配設している。
また、発射杆138および発射槌140の下方には、発射杆138を制御して遊技領域104に向けて球の発射強度の操作を行うための操作ハンドル148を配設していると共に、貯留皿144の下方には、貯留皿144に貯留できない溢れ球を貯留するための下皿151を設けている。
また、演出用のスピーカとして、上扉150の上部に2つの上部スピーカ(図示省略)を配設すると共に、遊技盤102左下側内部に1つの下部スピーカ(図示省略)を配設している。上部スピーカは、直前の上部スピーカダクトに接続され、下部スピーカは、操作ハンドル148の下方で前方に向けて開口する下部スピーカダクトに接続されている。
さらに、装飾用のランプ370として、遊技盤102の所定箇所(例えば、内レール108の内周側に沿った箇所)に複数種類の盤ランプを配設すると共に、上扉150の所定箇所に複数種類の枠ランプ(詳細は後述する)を配設している。
このパチンコ機100は、遊技者が貯留皿144に貯留している球を発射レールの発射位置に供給し、遊技者の操作ハンドル148の操作量に応じた強度で発射モータを駆動し、発射杆138および発射槌140によって外レール106、内レール108を通過させて遊技領域104に打ち出す。そして、遊技領域104の上部に到達した球は、打球方向変換部材132や遊技釘134などによって進行方向を変えながら下方に落下し、入賞口(一般入賞口122、可変入賞口130)や始動口(第1特図始動口126、第2特図始動口128)に入賞するか、いずれの入賞口や始動口にも入賞することなく、または普図始動口124を通過するのみでアウト口136に到達する。
<制御部>
次に、図3を用いて、このパチンコ機100の制御部の回路構成について詳細に説明する。なお、同図は主制御部、副制御部、払出制御部、発射制御部、および電源管理部の回路ブロック図である。
パチンコ機100の制御部は、大別すると、遊技の中枢部分を制御する主制御部300と、主制御部300が送信するコマンド信号(以下、単にコマンドと呼ぶ)に応じて、主に演出の制御を行う副制御部350と、主制御部300が送信するコマンドに応じて、主に遊技球の払い出しに関する制御を行う払出制御部400と、遊技球の発射制御を行う発射制御部450と、パチンコ機100に供給される電源を、パチンコ機100に搭載した電気部品に送電するための所定の電力を生成する電源管理部500によって構成している。
<主制御部>
まず、パチンコ機100の主制御部300について説明する。
主制御部300は、主制御部300の全体を制御する基本回路302を備えており、この基本回路302には、CPU304と、制御プログラムや各種データを記憶するためのROM306と、一時的にデータを記憶するためのRAM308と、各種デバイスの入出力を制御するためのI/O310と、時間や回数などを計測するためのカウンタ・タイマ312と、を搭載している。なお、ROM306やRAM308については他の記憶手段を用いてもよく、この点は後述する副制御部350や払出制御部400についても同様である。この基本回路302のCPU304は、水晶発信器314aが出力する所定周期のクロック信号をシステムクロックとして入力して動作する。
また、基本回路302には、水晶発信器314aが出力するクロック信号を受信する度に0〜65535の範囲で数値を変動させるハードウェア乱数カウンタとして使用しているカウンタ回路316(この回路には2つのカウンタを内蔵しているものとする)と、上扉150および下扉(図示省略)の開放/閉鎖を検出する扉開放センサ、内枠(図示省略)の開放/閉鎖を検出する内枠開放センサ、各始動口、入賞口の入り口および可変入賞口の内部に設けた球検出センサなどを含む各種センサ318が出力する信号を受信し、増幅結果や基準電圧との比較結果をカウンタ回路316および基本回路302に出力するためのセンサ回路320と、特図表示装置114の表示制御を行うための表示回路322と、普図表示装置112の表示制御を行うための表示回路324と、各種状態表示部326(普図保留ランプ116、特図保留ランプ118など)の表示制御を行うための表示回路328と、第2特図始動口128や可変入賞口130などを開閉駆動する各種ソレノイド330を制御するためのソレノイド回路332を接続している。
なお、第1特図始動口126に球が入賞したことを球検出センサ318が検出した場合には、センサ回路320は球を検出したことを示す信号をカウンタ回路316に出力する。この信号を受信したカウンタ回路316は、第1特図始動口126に対応するカウンタのそのタイミングにおける値をラッチし、ラッチした値を、第1特図始動口126に対応する内蔵のカウンタ値記憶用レジスタに記憶する。また、カウンタ回路316は、第2特図始動口128に球が入賞したことを示す信号を受信した場合も同様に、第2特図始動口128に対応するカウンタのそのタイミングにおける値をラッチし、ラッチした値を、第2特図始動口128に対応する内蔵のカウンタ値記憶用レジスタに記憶する。
さらに、基本回路302には、情報出力回路334を接続しており、主制御部300は、この情報出力回路334を介して、外部のホールコンピュータ(図示省略)等が備える情報入力回路550にパチンコ機100の遊技情報(例えば、遊技状態)を出力する。
また、主制御部300には、電源管理部500から主制御部300に供給している電源の電圧値を監視する電圧監視回路336を設けており、この電圧監視回路336は、電源の電圧値が所定の値(本実施例では9v)未満である場合に電圧が低下したことを示す低電圧信号を基本回路302に出力する。
また、主制御部300には、電源が投入されると起動信号を出力する起動信号出力回路338を設けており、CPU304は、この起動信号出力回路から起動信号を入力した場合に、遊技制御を開始する(後述する主制御部メイン処理を開始する)。
また、主制御部300には、副制御部350にコマンドを送信するための出力インタフェースと、払出制御部400にコマンドを送信するための出力インタフェースをそれぞれ設けており、副制御部350には、主制御部300からコマンドを受信するための入力インタフェースを設け、払出制御部400には、主制御部300からコマンドを受信するための入力インタフェースを設けている。この構成により、主制御部300と、副制御部350および払出制御部400との通信を可能としている。なお、主制御部300と副制御部350および払出制御部400との情報通信は一方向の通信であり、主制御部300は副制御部350および払出制御部400にコマンド等の信号を送信できるように構成しているが、副制御部350および払出制御部400からは主制御部300にコマンド等の信号を送信できないように構成している。
<副制御部>
次に、パチンコ機100の副制御部350について説明する。
副制御部350は、主に主制御部300が送信したコマンド等に基づいて副制御部350の全体を制御する基本回路352を備えており、この基本回路352には、CPU354と、制御プログラムや各種データを記憶するためのROM356と、一時的にデータを記憶するためのRAM358と、各種デバイスの入出力を制御するためのI/O360と、時間や回数などを計測するためのカウンタ・タイマ362を搭載している。この基本回路352のCPU354は、水晶発信器364が出力する所定周期のクロック信号をシステムクロックとして入力して動作する。
また、基本回路352には、上部スピーカおよび下部スピーカ等の各種スピーカ366(およびアンプ)の制御を行うための音源IC368と、枠ランプ、盤ランプなどの各種ランプ370の制御を行うための表示回路390と、各種演出用ソレノイド等374(可動演出装置とも言う)の制御を行うためのソレノイド回路376と、装飾図柄表示装置(液晶表示装置)110の制御を行うための液晶制御回路378と、シャッタ160を可動させるためのモータ382の制御を行うためのモータ回路380と、演出ボタン146の操作を検出した場合に基本回路352に検出信号を出力する演出ボタン検出回路364を接続している。
また、副制御部350には、電源が投入されると起動信号を出力する起動信号出力回路(図示省略)を設けており、CPU354は、この起動信号出力回路から起動信号を入力した場合に、演出制御を開始する。
<払出制御部、発射制御部、電源管理部>
次に、図3に示すパチンコ機100の払出制御部400、発射制御部450、および電源管理部500について説明する。
払出制御部400は、主に主制御部300が送信したコマンド等の信号に基づいて払出装置402を制御すると共に、払出センサ404が出力する制御信号に基づいて賞球または貸球の払い出しが完了したか否かを検出すると共に、インタフェース部406を介して、パチンコ機100とは別体で設けられたカードユニット552との通信を行う。発射制御部450は、払出制御部400が出力する、発射許可または停止を指示する制御信号や、操作ハンドル148内に設けた発射強度出力回路が出力する、遊技者による操作ハンドル148の操作量に応じた発射強度を指示する制御信号に基づいて、発射杆および発射槌を駆動する発射モータ452の制御や、貯留皿144から発射レールに球を供給する球送り装置454の制御を行う。
電源管理部500は、パチンコ機100に外部から供給される交流電源を直流化し、所定の電圧に変換して主制御部300、払出制御部400などの各制御部や払出装置402などの各装置に供給する。さらに、電源管理部500は、外部からの電源が断たれた後も所定の部品(例えば主制御部300のRAM308など)に所定の期間(例えば10日間)電力を供給するための蓄電装置(例えばコンデンサ)と、この蓄電装置よりも静電容量が小さく、所定の部品(例えば主制御部300の基本回路302全体)に供給している電力が、静電気ノイズ、人的なミス、遊技台に供給される電力の低下などが原因で変動し、低下している場合に、ある程度の電力を補うための蓄電装置(例えばコンデンサ)をさらに備えている。この蓄電装置により、所定の部品(例えば主制御部300)に供給される電力が電断時、復電時などに不安定になっても、ある程度安定してその所定の部品は動作できるように構成している。また、電源管理部500を構成する電源基板には遊技店の店員などが操作可能な操作部(RAMクリアスイッチ)を備えており、電源投入時にこの操作部が操作されていることを検出した場合には、各制御部の基本回路302および352に、RAM308および358を初期化することを指令するRAMクリア信号を出力するようにしている。
<主制御部のデータテーブル>
次に、パチンコ機100の主制御部300のROM306が記憶しているデータテーブルについて説明する。図4(a)に示す大当たり判定テーブルは、RAM308に設けた遊技状態格納領域に記憶している特図抽選状態の種類と、抽選データと、を対応付けして記憶したデータテーブルである。
主制御部300の基本回路302は、この大当たり判定テーブルを用いて特図変動遊技を当選(大当たり)とするか、不当選(外れ)とするかの決定、すなわち大当たり判定を行う。なお、特図抽選状態の情報は、特図変動遊技を所定の低確率で当選と判定する低確率状態を示す情報、および低確率よりも高い高確率で特図変動遊技を当選と判定する高確率状態を示す情報などを含むが、以下、これらを単に低確率状態および高確率状態と称する。また、遊技状態格納領域に記憶する情報には別の情報もあるが、これらの情報については後述する。
大当たり判定テーブルの抽選データは、第1特図始動口126または第2特図始動口128に球が入賞したことを所定の球検出センサが検出した場合に開始する特図変動遊技の結果を決定するために使用する抽選データである。例えば、特図抽選状態が低確率状態の場合、取得した特図当選乱数値(乱数値については後述する)が10001〜10187であるときは、特図変動遊技の当選と判定してRAM308に設けた大当たりフラグの格納領域に大当たりとなることを示す情報を設定する(以下、大当たりフラグの格納領域に大当たりの情報を設定することを「大当たりフラグをオンに設定する」という)。一方、取得した特図当選乱数値が10001〜10187以外の数値である場合には、特図変動遊技の外れと判定して上述の大当たりフラグの格納領域に外れとなることを示す情報を設定する(以下、大当たりフラグの格納領域に外れの情報を設定することを「大当たりフラグをオフに設定する」という)。なお、本実施例では、特図当選乱数値の取り得る数値範囲は0〜65535(数値範囲の大きさは65536)、低確率状態における抽選データが示す数値範囲は10001〜10187(数値範囲の大きさは187)であるから、低確率状態の第1特図始動口126または第2特図始動口128への球の入賞に基づく特図変動遊技の当選確率は、約1/350.4(=187/65536)である。これに対して、高確率状態における抽選データが示す数値範囲は20001〜21871(数値範囲の大きさは1871)であるから、高確率状態の第1特図始動口126または第2特図始動口128への球の入賞に基づく特図変動遊技の当選確率は約1/35.0(=1871/65536)であり、特図変動遊技の当選確率は、低確率状態よりも高確率状態の方が高くなるように設定している。
図4(b)に示す高確率状態移行判定テーブルは、上述の大当たり判定の結果、大当たりと判定した場合に使用する抽選データを記憶したデータテーブルである。
主制御部300の基本回路302は、この高確率状態移行判定テーブルを用いて、特図変動遊技の終了後に大当たり遊技を開始するか、または特別大当たり遊技を開始するかの判定、すなわち確変移行判定を行う。例えば、取得した特図乱数値(乱数値については後述する)が11〜74の数値である場合には、RAM308に設けた確変(確率変動)フラグの格納領域に、特図変動遊技の終了後に特別大当たり遊技を開始することを示す情報を設定する(ここで、確変フラグの格納領域に特別大当たり遊技開始の情報を設定することを確変フラグをオンに設定するという)。一方、取得した特図乱数値が11〜74の数値以外である場合には、上述の確変フラグの格納領域に、大当たり遊技を開始することを示す情報を設定する(ここで、確変フラグの格納領域に大当たり遊技開始の情報を設定することを確変フラグをオフに設定するという)。なお、本実施例では、特図乱数値の取り得る数値範囲は0〜127(数値範囲の大きさは128)、抽選データの移行判定乱数の範囲は11〜74(数値範囲の大きさは64)であるから、大当たり判定の結果が当選である場合に確変移行判定の結果を当選にする確率、すなわち特別大当たりを開始する確率は1/2(=64/128)である。
図4(c)に示すタイマ番号決定テーブルは、上述の大当たりフラグと、抽選データと、特図表示装置114による特図の変動表示を開始してから停止表示をするまでの変動時間を示すタイマ番号と、を対応付けして記憶したデータテーブルである。
主制御部300の基本回路302は、このタイマ番号決定テーブルと、上述の大当たり判定結果(大当たりフラグの値)および後述する特図タイマ乱数値(乱数値については後述する)に基づいて、タイマ番号を選択する。例えば、大当たりフラグがオフで、取得した特図タイマ乱数値が0〜60235の数値である場合には、タイマ番号としてタイマ1(変動時間5秒)を選択し、大当たりフラグがオンで、取得した特図タイマ乱数値が0〜15535の数値である場合には、タイマ番号としてタイマ2(変動時間10秒)を選択する。なお、本実施例では、特図タイマ乱数値の取り得る数値範囲は0〜65535(数値範囲の大きさは65536)、上述の大当たり判定結果が不当選の場合は、タイマ1のタイマ乱数の範囲は0〜60235(数値範囲の大きさは60236)であるから、タイマ番号としてタイマ1(変動時間5秒)を選択する確率は60236/65536である。また、タイマ番号として、タイマ2(変動時間10秒)を選択する確率は4250/65536、タイマ3(変動時間20秒)を選択する確率は800/65536、タイマ3(変動時間40秒)を選択する確率は250/65536である。一方、大当たり判定結果が当選の場合は、タイマ2のタイマ乱数の範囲は0〜15535(数値範囲の大きさは15536)であるから、タイマ番号としてタイマ2(変動時間10秒)を選択する確率は15535/65536である。また、タイマ番号として、タイマ3(変動時間20秒)を選択する確率は9000/65536、タイマ4(変動時間40秒)を選択する確率は38000/65536、タイマ5(変動時間50秒)を選択する確率は3000/65536である。
<副制御部のデータテーブル>
次に、パチンコ機100の副制御部350のROM356が記憶しているデータテーブルについて説明する。
図5はTC(Time Chart)テーブルの一例を示したものである。このTCテーブルは、TC情報(液晶情報)のTC番号と、TCデータ(演出時間情報、各種レイヤテーブルのレイヤ番号)と、を対応付けして記憶したデータテーブルである。なお、TCテーブルの右側欄外には、TC情報の名称を参考までに記載しており、例えば、TCテーブルに記憶した複数のTC情報のうち、TC番号10〜32のTC情報は、後述する予告TC情報であり、より詳細には、TC番号10のTC情報は共通予告TC情報、TC番号11のTC情報はキャラ予告TC情報、TC番号16のTC情報は背景予告TC情報、TC番号31は図柄停止中(前)予告TC情報、TC番号32は図柄停止中(後)予告TC情報である。また、TC番号40のTC情報は、スベリTC情報である。
副制御部350の基本回路352は、このTCテーブルを参照し、TC情報のTC番号に基づいて、TCデータ(演出時間情報、各種レイヤテーブルのレイヤ番号)を取得する。例えば、TC情報のTC番号が31の場合には、TC番号31に対応するTCデータ、すなわち、演出時間情報2800(ms)、ボタンのレイヤ番号−1、サウンドのレイヤ番号−1、サウンド2のレイヤ番号35、枠ランプのレイヤ番号10、盤ランプのレイヤ番号11、盤ランプ2のレイヤ番号−1を取得する。
図6(a)はボタン制御用のレイヤテーブルの一例を、同図(b)はサウンド制御用のレイヤテーブルの一例を、同図(c)は枠ランプ制御用のレイヤテーブルの一例を、同図(d)は盤ランプ制御用のレイヤテーブルの一例をそれぞれ示したものである。これらのレイヤテーブルは、レイヤ番号と、レイヤデータ(切替時間情報、デバイス番号、液晶情報、処理区分情報)と、を対応付けして記憶したデータテーブルである。
副制御部350の基本回路352は、このレイヤテーブルを参照し、上述のTCテーブルを用いて取得した各種レイヤテーブルのレイヤ番号と、対象レイヤの種別(本実施例ではボタンレイヤ、サウンドレイヤ、サウンド2レイヤ、枠ランプレイヤ、盤ランプレイヤ、盤2ランプレイヤの6種類)毎に区分けしてRAM358に設けた各レイヤ管理領域に記憶した先頭位置情報およびオフセット情報に基づいて、レイヤデータ(切替時間情報、デバイス番号、液晶情報、処理区分情報)を取得する。例えば、TCテーブルを用いて取得したサウンド2のレイヤ番号が35で、サウンド2レイヤ管理領域に記憶した先頭位置情報がレイヤテーブル(サウンド)の先頭アドレスで、オフセット情報が0の場合には、図6(b)に示すレイヤテーブル(サウンド)の2行目のレイヤ番号35に対応するレイヤデータ、すなわち、切替時間情報0(ms)、デバイス番号26、液晶情報−1、処理区分情報0を取得する。また、上述のTCテーブルを用いて取得した枠ランプのレイヤ番号が5で、枠ランプレイヤ管理領域に記憶した先頭位置情報がレイヤテーブル(枠ランプ)の先頭アドレスで、オフセット情報が4の場合には、図6(c)に示すレイヤテーブル(枠ランプ)の5行目のレイヤ番号5に対応する行からさらに後方の9行目に対応するレイヤデータ、すなわち、切替時間情報2900(ms)、デバイス番号18、液晶情報12、処理区分情報0を取得する。
図7(a)はトラック情報テーブルの一例を示したものである。このトラック情報テーブルは、チャネル情報と、トラック情報と、を対応付けして記憶したデータテーブルである。
副制御部350の基本回路352は、このトラック情報テーブルを参照し、後述するサウンドリストを用いて取得したチャネル情報に基づいて、トラック情報を取得する。例えば、サウンドリストを用いて取得したチャネル情報が2の場合には、トラック情報として0を取得する。
図7(b)はサウンドテーブルの一例を示したものである。このサウンドテーブルは、デバイス番号と、サウンドリストのアドレスと、を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、このサウンドテーブルを参照し、上述のTCテーブルを用いて取得したサウンドレイヤ(サウンドレイヤ、サウンド2レイヤ)のデバイス番号に基づいて、後述するサウンドリストを記憶した記憶領域の先頭アドレスを取得する。例えば、上述のTCテーブルを用いて取得したサウンドレイヤのデバイス番号が28の場合には、サウンドリストのアドレスとして、サウンドリスト14を記憶した記憶領域の先頭アドレスを取得する。
図8(a)〜(c)はサウンドリストの一例を示したものであり、同図(a)はサウンドリスト00の一例を、同図(b)はサウンドリスト01の一例を、同図(c)はサウンドリスト14の一例を示したものである。このサウンドリストは、開始時間情報と、サウンドデータ(開始時間情報、チャネル情報、フレーズ情報、ボリューム情報、パン情報)と、を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、このサウンドリストを参照し、制御対象の種別(本実施例ではボタン、サウンド、サウンド2、枠ランプ、盤ランプ、盤ランプ2の6種類)毎に区分けしてRAM358に設けた各管理領域に記憶した先頭位置情報およびオフセット情報に基づいて、サウンドデータ(開始時間情報、チャネル情報、フレーズ情報、ボリューム情報、パン情報)を取得する。例えば、サウンド管理領域に記憶した先頭位置情報がサウンドリスト00の先頭アドレスで、サウンド管理領域に記憶したオフセット情報が0の場合には、図8(a)に示すサウンドリスト00の1行目に対応するサウンドデータ、すなわち、開始時間情報0ms、チャネル情報2、フレーズ情報274、ボリューム情報100、パン情報64を取得する。また、サウンド管理領域に記憶した先頭位置情報がサウンドリスト14の先頭アドレスで、サウンド管理領域に記憶したオフセット情報が0の場合には、図8(c)に示すサウンドリスト14の1行目に対応するサウンドデータ、すなわち、開始時間情報0ms、チャネル情報1、フレーズ情報90、ボリューム情報100、パン情報64を取得する。
図9(a)、(b)はポート定義テーブルの一例を示したものであり、同図(a)は枠ランプ制御用のポート定義テーブルの一例を、同図(b)は盤ランプ制御用のポート定義テーブルの一例を示したものである。このポート定義テーブルは、ポート情報と、セグメント番号と、ポート番号と、を対応付けして記憶したテーブルである。
図10(a)〜(d)はランプリストの一例を示したものであり、同図(a)はランプリスト00の一例を、同図(b)はランプリスト01の一例を、同図(c)はランプリスト18の一例を、同図(d)はランプリスト19の一例を、示したものである。このランプリストは、ポート情報と、点灯データ(開始時間情報、点灯情報)と、を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、このランプリストを参照し、上述の枠ランプ管理領域、盤ランプ管理領域、または盤ランプ2管理領域に記憶した点灯先頭位置情報および点灯オフセット情報と、ポート情報に基づいて、点灯データ(開始時間情報、点灯情報)を取得する。例えば、枠ランプ管理領域に記憶した点灯先頭位置情報がランプリスト00の先頭アドレスで、枠ランプ管理領域に記憶した点灯オフセット情報が0で、ポート情報が0の場合には、図10(a)に示すランプリスト00の1行目に対応する点灯データ、すなわち、開始時間情報0ms、点灯情報0(消灯)を取得する。また、枠ランプ管理領域に記憶した点灯先頭位置情報がランプリスト18の先頭アドレスで、枠ランプ管理領域に記憶した点灯オフセット情報が3で、ポート情報が1の場合には、図10(c)に示すランプリスト18の3行目に対応する行から3行さらに後方の6行目に対応する点灯データ、すなわち、開始時間情報10ms、点灯情報0(消灯)を取得する。
図11(a)〜(d)はデューティリストの一例を示したものであり、同図(a)はデューティリスト00の一例を、同図(b)はデューティリスト01の一例を、同図(c)はデューティリスト23の一例を、同図(d)はデューティリスト24の一例を、示したものである。このデューティリストは、ポート情報と、デューティデータ(開始時間情報、デューティ情報)と、を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、このデューティリストを参照し、上述の枠ランプ管理領域、盤ランプ管理領域、または盤ランプ2管理領域に記憶したデューティ先頭位置情報およびデューティオフセット情報と、ポート情報に基づいて、デューティデータ(開始時間情報、デューティ情報)を取得する。例えば、枠ランプ管理領域に記憶したデューティ先頭位置情報がデューティリスト00の先頭アドレスで、枠ランプ管理領域に記憶したデューティオフセット情報が0で、ポート番号が0の場合には、図11(a)に示すデューティリスト00の1行目に対応するデューティデータ、すなわち、開始時間情報−1、デューティ情報−1を取得する。また、枠ランプ管理領域に記憶したデューティ先頭位置情報がデューティリスト24の先頭アドレスで、枠ランプ管理領域に記憶したデューティオフセット情報が6で、ポート情報が4の場合には、図11(d)に示すデューティリスト24の15行目に対応する行から6行さらに後方の21行目に対応するデューティデータ、すなわち、開始時間情報48ms、デューティ254(全点灯)を取得する。
図12(a)は背景演出選択テーブルの一例を示したものであり、同図(b)は背景演出選択テーブルの他の例を示したものである。同図(a)の背景演出選択テーブルは、2種類の乱数値の範囲と、実行する処理を対応付けして記憶したテーブルであり、同図(b)の背景演出選択テーブルは、停止予定の左図柄、停止予定の右図柄、実行する処理を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、同図(a)の背景演出選択テーブルを用いた場合には、乱数値に基づいて実行する処理を選択し、同図(b)の背景演出選択テーブルを用いた場合には、停止予定の左図柄、停止予定の右図柄に基づいて実行する処理を選択する。例えば、同図(a)の背景演出選択テーブルの検索列0(同図右側)の乱数値の範囲を用いるとともに、取得した乱数値が20であった場合には、乱数値は0〜41の数値範囲であることから、実行する処理として背景演出TC取得処理1を選択する。また、同図(a)の背景演出選択テーブルの検索列1(同図左側)の乱数値の範囲を用いるとともに、取得した乱数値が100であった場合には、乱数値は59〜127の数値範囲であることから、実行する処理として背景演出TC取得処理2を選択する。一方、同図(b)の背景演出選択テーブルを用いるとともに、停止予定の左図柄が6、停止予定の右図柄が5であった場合には、実行する処理として背景演出TC取得処理1を選択する。
図12(c)は背景演出TC取得用テーブル1の一例を示したものであり、同図(d)は背景演出TC取得用テーブル2の一例を示したものである。同図(c)の背景演出TC取得用テーブル1は、検索行と、背景演出TCを対応付けして記憶したテーブルであり、同図(d)の背景演出TC取得用テーブル2は、キャラクタと、背景演出TCを対応付けして記憶したテーブルである。
副制御部350の基本回路352は、同図(c)の背景演出TC取得用テーブル1を用いた場合には、検索行に基づいて背景演出TCを選択し、同図(d)の背景演出TC取得用テーブル2を用いた場合には、キャラクタの種類に基づいて実行する処理を選択する。例えば、背景演出TC取得用テーブル1を用いるとともに、検索行が2であった場合には、背景演出TCとしてTC_01を選択する。また、背景演出TC取得用テーブル2を用いるとともに、キャラクタが犬であった場合には、背景演出TCとしてTC_12を選択する。
図13はTC変更テーブルの一例を示したものである。このTC変更テーブルは、TC番号と、変更後のTC番号を対応付けして記憶したテーブルである。
副制御部350の基本回路352は、このTC変更テーブルを参照し、TC番号の変更を行う。例えば、TC番号52は、TC変更テーブルによってTC番号152に変更し、TC番号70は、TC変更テーブルによって−1に変更する。
<副制御部メイン処理>
次に図14を用いて第1実施形態にかかる副制御部メイン処理について説明する。同図は、副制御部350で実行されているメイン処理のフローチャートであり、副制御部350は、電源の投入後、電源の遮断などがない限りこのメイン処理を繰り返し実行する。
ステップS101では、遊技台の制御に必要な所定の関数エントリ(以下、エントリとは、関数の先頭アドレスをメモリ等へ登録することを意味し、単に登録と言うことがある。)処理を行う。具体的には、遊技台において遊技を進めるためには複数の関数(以下、処理又はプログラムと言うことがある)を所定のタイミングで実行する必要がある。例えば、本実施例では、可動物に関する処理、ランプに関する処理、音に関する処理、演出に関する処理、表示に関する処理、入出力インタフェースに関する処理等、遊技の実行に関する複数の処理がある。また、上記のそれぞれの処理は、さらに複数の処理から構成されている。例えば、可動物(例えば、シャッタ160)に関する処理は、可動物の初期化を行う可動物初期化処理、可動物の動作態様についてのコマンドを受信する可動物可動設定処理、可動物を制御する可動物可動処理等の複数の処理から構成される。なお、本実施例において関数とは、1または複数の処理をモジュール化したもので、呼び出し命令などによって実行されるものである。換言すれば、サブルーチンのことを指す。具体的には、C言語では「()」命令、Z-80アセンブリ言語では「CALL」命令などで呼び出される(これらは一例であり、これらの命令には限定されない)。関数を呼び出す場合は、モジュール化した1または複数の処理の先頭アドレスをプログラムカウンタにロードして行うことが一般的である。
上述したステップS101の関数エントリ処理は、これら複数の関数の各先頭アドレスを前述した副制御部350のRAM358等のメモリに登録して処理ごとにグループ化して関数テーブルを生成する処理である。つまり、各処理の初期化に関する初期化処理の各先頭アドレスは初期設定関数テーブルに登録され、各処理の動作態様に関する設定処理の各先頭アドレスはコマンド受信関数テーブルに登録され、各処理の表示に関する制御処理の先頭アドレスは表示装置制御関数テーブルに登録され、各処理の動作制御に関する制御処理は演出制御関数テーブルに登録される。なお、上記の処理によっては登録の必要がない処理もあり、その場合は登録されない。例えば、音に関する処理では、表示に関する処理は必要ないので、表示装置制御関数テーブルに音に関する処理の先頭アドレスは登録されない。なお、本実施例で記載した関数エントリ処理、各種処理、関数テーブルは遊技に関する処理の一部であり、本実施例に例示したものに限定されるものではない。例えば、表示装置の表示に合わせて音を鳴らしたい場合は、表示装置制御関数テーブルに音に関する処理の先頭アドレスを登録しても構わない。
ステップS102では、ステップS101で生成した関数テーブルの中から所定の関数テーブルを呼び出すための引数を設定する。本実施例では、引数として初期設定関数テーブルを設定する例を示す。
ステップS103では、ステップS101で生成した関数テーブルの中からステップS102で設定した引数に対応する関数テーブルを呼び出し、その関数テーブルに登録されている関数の先頭アドレスを呼び出して実行する。後で説明するが、ステップ103では、関数テーブルに登録されている全ての関数(プログラム)の先頭アドレスを呼び出したか否か判定し、全ての関数の先頭アドレスを呼び出すまで、先頭アドレスの呼び出し処理を繰り返し実行する。
上述したステップS101〜S103の処理によって、まず遊技台の遊技に関する処理ごとに必要な複数の関数テーブルを生成し、その関数テーブルに関数の先頭アドレスを登録する。その後引数に設定した関数テーブルを呼び出し、その関数テーブルに登録されている全ての関数の先頭アドレスを連続して呼び出して実行する。なお、本実施例では、関数テーブルに登録されている関数の実行は、関数テーブル毎に登録されている関数を連続して実行するようにしたが、実行する関数に優先順位を付して任意の順番で実行しても好ましい。
ステップS104〜S110は、ステップS102〜S103と同様の処理を引数に設定された関数テーブルごとに実行する。次に、ステップS104〜S110の処理について簡単に説明する。
ステップS104では、更新のタイミングか否かを判断する。更新のタイミングでない場合、再度コマンド受信関数テーブルの呼び出し処理を繰り返し実行する。更新のタイミングと判断した場合、ステップS105へ進む。更新タイミングは、液晶表示装置の描画を変更するタイミングで、後で説明する描画完了割り込みの割込み回数により決定され、本実施例では、描画完了割り込みが2回行われた場合に更新タイミングとなる。
ステップS105では、引数にコマンド受信関数テーブルを設定し、ステップS106に進む。
ステップS106では、上述したステップS101で生成した関数テーブルの中からコマンド受信関数テーブルを呼び出し、そのコマンド受信関数テーブルに登録されている全ての関数の先頭アドレスを呼び出して実行する。
ステップS107では、引数に装飾図柄表示装置110の制御を行う表示装置制御関数テーブルを設定し、ステップS108に進む。
ステップS108では、上述したステップS101で生成した関数テーブルの中から表示装置制御関数テーブルを呼び出し、その表示装置制御関数テーブルに登録されている全ての関数の先頭アドレスを呼び出して実行する。
ステップS109では、引数に演出制御関数テーブルを設定し、ステップS110に進む。
ステップS110では、ステップS101で生成した関数テーブルの中から演出制御関数テーブルを呼び出し、その演出制御関数テーブルに登録されている全ての関数の先頭アドレスを呼び出して実行した後、ステップS104へ戻り、ステップS104〜S110の処理を繰り返す。
なお、先にも述べたが、上述で示した関数テーブルは1例であり、遊技台の機能ごとに必要な関数テーブルが異なることは言うまでもない。例えば、表示制御関数テーブルは、表示装置に関する処理の関数エントリ処理で生成されて呼び出される関数テーブルであり、その他の関数エントリ処理では生成、呼び出しをされない。
また、遊技毎(若しくは突発的に)に様々な割り込み処理が発生し、上記以外の関数テーブルが引数に設定されることがある。その場合には、その割り込み処理で呼び出された関数テーブルに登録されている関数の先頭アドレスが呼び出されて実行される。例えば、演出ボタン146が押下されると、引数に演出ボタン関数テーブルが設定され、演出ボタン関数テーブルが呼び出される。そして、その関数テーブルに登録されている関数の先頭アドレスが実行される。この割り込み処理については、図18を用いて後で説明する。
次に、図15は、関数エントリ処理のフローチャートである。同図を用いて、上述した副制御部メイン処理におけるステップS101の関数エントリ処理について説明する。関数エントリ処理は、遊技台の遊技に関する処理ごとに所定の関数エントリ処理(本実施例では、図15に示す6種類の関数エントリ処理がある)がある。その関数エントリ処理では機能ごとに区分された複数の関数テーブルを生成し、その関数テーブルに必要な関数の先頭アドレスを登録する。
ステップS201では、シャッタ(図示省略)等の可動物に関する関数エントリ処理を行い、ステップS202に進む。
ステップS202では、各種ランプ370等のランプに関する関数エントリ処理を行い、ステップS203に進む。
ステップS203では、スピーカ366等の音に関する関数エントリ処理を行い、ステップS204に進む。
ステップS204では、装飾図柄表示装置110等の表示装置に関する関数エントリ処理を行い、ステップS205に進む。
ステップS205では、演出装置に関する関数エントリ処理を行い、ステップ206に進む。
ステップS206では、入出力インタフェースに関する関数エントリ処理を行い、関数エントリ処理を終了する。
なお、上述の関数エントリ処理の他、遊技台の処理に必要な関数エントリ処理を適宜追加、削除してもよいことは言うまでもない。
ステップS201〜S206に記載した関数エントリ処理により、遊技台の処理に必要な関数テーブルを生成すると共に、その関数テーブルに必要な関数の先頭アドレスを全て登録する。
次に図16を用いて、関数エントリ処理について詳細に説明する。同図は、関数エントリ処理のうち可動物に関する関数エントリ処理のフローチャートである。なお、ランプに関する関数エントリ処理、音に関する関数エントリ処理、表示装置に関する関数エントリ処理、演出装置に関する関数エントリ処理、入出力インタフェースに関する関数エントリ処理の流れも基本的には同じである。ただし、それぞれの関数エントリ処理ごとに必要な関数が異なるため、関数テーブルに登録する関数の先頭アドレスが異なることは言うまでもない。
ステップS301では、初期設定処理で実行する関数の先頭アドレスを初期設定関数テーブルに登録する。本実施例では、初期設定処理で実行する関数は10個あり、全ての関数の先頭アドレスを初期設定関数テーブルに登録し、ステップS302に進む。
ステップS302では、コマンド受信処理で実行する関数の先頭アドレスをコマンド受信関数テーブルに登録し、ステップS303に進む。
ステップS303では、表示装置処理で実行する関数の先頭アドレスを表示装置制御関数テーブルに登録し、ステップS304に進む。なお、可動物に関する処理では、ここでは何も登録されない。
ステップS304では、演出制御処理で実行する関数の先頭アドレスを演出制御関数テーブルに登録し、ステップS305に進む。
ステップ305では、描画完了割り込みで実行する関数の先頭アドレスを描画完了関数テーブルに登録し、ステップS306に進む。なお、可動物に関する処理では、ここでは何も登録されない。
ステップS306では、データ転送完了割り込みで実行する関数の先頭アドレスをデータ転送完了関数テーブルに登録し、ステップS307に進む。
ステップS307では、描画イベント割込みで実行する関数の先頭アドレスを描画イベント関数テーブルに登録し、ステップS308に進む。なお、可動物に関する処理では、ここでは何も登録されない。
ステップS308では、主制御ストローブ割込みで実行する関数の先頭アドレスを主制御ストローブ関数テーブルに登録し、ステップS309に進む。
ステップS309では、演出ボタン割り込み処理で実行する関数の先頭アドレスを演出ボタン関数テーブルに登録し、ステップS310に進む。
ステップS310では、0.3msタイマ割り込みで実行する関数の先頭アドレスを0.3msタイマ関数テーブルに登録し、ステップS311に進む。
ステップS311では、1msタイマ割り込みで実行する関数の先頭アドレスを1msタイマ関数テーブルに登録し、ステップS312に進む。
ステップS312では、入出力インタフェースエラー割込みで実行する関数の先頭アドレスを入出力インタフェースエラー関数テーブルに登録し、ステップS313に進む。
ステップS313では、入出力インタフェース受信割込みで実行する関数の先頭アドレスを入出力インタフェース受信関数テーブルに登録し、ステップS314に進む。
ステップS314では、入出力インタフェース送信割込みで実行する関数の先頭アドレスを入出力インタフェース送信関数テーブルに登録する。
ステップS315では、登録した関数につき、10を超えていないかを判定する。10を超えていた場合、ステップS316に進み、エラー表示を行う。なお、1つの関数の先頭アドレスを登録する度に、先頭アドレスの登録数と予め設定している上限値(本実施例では10)を比較し、先頭アドレスの登録数が上限値よりも多くなった場合にはエラー表示をするようにしてもよく、上述したステップS302〜S314でも同じように、それぞれの関数エントリ処理が終わる度に関数テーブルに登録した関数の先頭アドレスの登録数と上限値を比較し、先頭アドレスの登録数が上限値よりも多くなった場合にはエラー表示する構成にしても好ましい。なお、本実施例においては、エラー処理の具体例としてエラー表示を行ったが、単に登録を行わないという処理にしても好ましい。
なお、前述したが、図16に記載した関数の先頭アドレスの登録は1例であり、同図に記載されている全ての関数の先頭アドレスを登録する必要はなく、また、割り込み処理については、それぞれの割り込みを受信した場合にのみ対応する関数テーブルを呼び出し、必要な関数の先頭アドレスを登録すれば良い。
なお、各登録(エントリ)処理につき、共通エントリ処理という1つのサブルーチンを用意し、関数テーブルに登録する際には、登録したい関数を引数として設定し、共通エントリ処理を呼び出すという構成にしても好ましい。
図17は、前述した副制御部メイン処理におけるステップS103の関数呼出処理の流れを示すフローチャートである。同図を用いて、関数呼出処理について詳細に説明する。
まず、ステップS401は、前述したステップS102で引数に設定された関数テーブル(例えば、初期設定関数テーブル)を参照し、ステップS402に進む。
ステップS402では、参照した関数テーブルに登録されている関数の先頭アドレスを呼び出し、ステップS403に進む。
ステップS403では、関数テーブルに登録されている関数の全ての先頭アドレスを呼び出したか否か判断し、全ての先頭アドレスを呼び出していない場合、ステップS404へ進み、その関数テーブルの次の関数の先頭アドレスを参照する。本実施例では、初期設定関数テーブルに登録されている全ての関数を呼び出した場合、次にコマンド受信関数テーブルに登録されている関数の先頭アドレスを参照する。また、全ての関数の先頭アドレスを呼び出した場合は関数呼出処理を終了する。
ステップS404では、その関数テーブルの次の関数の先頭アドレスを参照し、ステップS402に戻って、その先頭アドレスを呼び出す。全ての関数の先頭アドレスを呼び出すまでステップS402〜S404の処理を繰り返し実行する。なお、本実施例では、それぞれの関数テーブルには10個の関数の先頭アドレスが登録されている。
このように、本実施例においては、1回の関数テーブルの参照で、関数テーブルに登録されている複数の関数の先頭アドレスを呼び出す構成をとっている。このように、遊技に関する複数の処理を行う制御手段と、を備えた遊技台において、この制御手段は、前記処理を行う複数の関数の各々の先頭アドレスを保存するアドレステーブルと、このアドレステーブルに保存されている先頭アドレスに対する各々の関数を1回の関数テーブルの参照で連続して実行する処理実行手段とを備えたものとしても好ましい。
次に図18を用いてフレームワークとアプリケーションソフトの構造について説明する。同図は第1実施形態にかかるフレームワーク側とアプリケーション側のソフトウェア構造を表す概略イメージ図である。
まず、上述した副制御部メイン処理におけるステップS101の関数エントリ処理により、処理ごとに複数の関数テーブルが生成され、その関数テーブルに必要な関数の先頭アドレスが登録される。本実施例では、可動物に関する処理、ランプに関する処理、音に関する処理、演出に関する処理、表示装置に関する処理、入出力インタフェースに関する処理の6つの処理毎に必要な関数テーブルが生成される。また、可動物に関する処理の関数テーブルには、機能ごとに分けられた初期設定関数テーブル、コマンド受信関数テーブル、演出制御関数テーブル等があり、それぞれの関数テーブルに10個の関数の先頭アドレスが登録される。
次に、上述した副制御部メイン処理におけるステップS103で説明したように、フレームワーク側で設定した引数に対応する関数テーブルがアプリケーション側から呼び出され、その関数テーブルに登録されている関数の先頭アドレスが全て実行される。本実施例では、まず初期設定関数テーブルに登録されている関数の先頭アドレス(10個)が全て実行された後、次のコマンド受信関数テーブルに登録されている関数の先頭アドレス(10個)が全て実行される。さらに次に設定された引数に対応する関数テーブルについても登録されている関数の先頭アドレスの呼び出し、実行が同様に行われる。以下、副制御部のメイン処理は、遊技台の供給電源が遮断されるまで、上述の関数テーブルの呼出処理を繰り返し実行する。また、なんらかの割り込み処理を受信した場合には、対応する割り込み関数テーブルを呼び出して実行する。例えば、副制御部350のCPU354は、演出ボタン146が押下された場合、割り込みコマンドを受信し、後述する演出ボタン割り込み処理を開始する。
次に図19を用いて、その他の割り込み処理について説明する。同図(a)は、描画完了割り込み処理のフローチャートであり、同図(b)は、データ転送完了割り込み処理のフローチャートであり、同図(c)は、描画イベント割込み処理のフローチャートであり、同図(d)は、主制御ストローブ割込み処理のフローチャートであり、同図(e)は、演出ボタン割り込み処理のフローチャートであり、同図(f)は、0.3msタイマ割り込み処理のフローチャートであり、同図(g)は、1msタイマ割り込み処理のフローチャートであり、同図(h)は、入出力インタフェースエラー割込み処理のフローチャートであり、同図(i)は、入出力インタフェース受信割込み処理のフローチャートであり、同図(j)は、入出力インタフェース送信割込み処理のフローチャートである。この各割り込み処理は、副制御部300のCPU354がそれぞれの条件で発生する割り込み処理のコマンドを受信した場合に実行される処理である。
図19(a)に示す描画完了割り込み処理は、液晶制御回路378に接続された図示しないVDP(Video−Display−Processor)が描画をVRAM(Video−RAM)に出力した場合に割り込まれる処理で、図14で説明したステップS106の更新タイミングを決定する要因となる割込みである。具体的には描画完了割り込みが2回発生すると更新タイミングをHにする。この描画完了割り込み処理は、引数に描画完了関数テーブルを設定した場合に、描画完了関数テーブルを参照し、登録されている関数の先頭アドレスを全て呼び出して実行する。
同図(b)に示すデータ転送完了割込み処理は、図示しないVDPのVRAMに対する画像データの転送が終了した際に行われる割り込み処理である。VDPは画像データを生成し、その画像データは図示しないVRAMに転送される。そのVRAMに保存された画像データに基づいて液晶表示装置に画像が表示される。副制御部のCPU354は、図示しないVDPがVRAMに画像を転送している間は、その処理が完了するまで待っている。このデータ転送完了割り込み処理は、引数にデータ転送完了関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(c)に示す描画イベント割込み処理は、転送、描画エラーなどにより画像データの転送を中止する場合に、CPU354に対しVDPから出力される割り込み信号である。この描画イベント割込み処理は、引数に描画イベント関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(d)に示す主制御ストローブ割込み処理は、主制御部300から送信された情報(ストローブ信号)を受信した場合に割り込まれる処理で、主制御部300からの情報をコマンドとしてコマンド記憶部(図示省略)に記憶する処理である。この主制御ストローブ割込み処理は、引数に主制御ストローブ関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(e)に示す演出ボタン割り込み処理は、演出ボタン146が押下された場合に割り込まれる処理で、この割込みのタイミングで演出ボタン146押下時の演出を設定する。この演出ボタン割り込み処理は、引数に演出ボタン関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(f)に示す0.3msタイマ割り込み処理は、0.3ms毎に表示装置110制御用の割込みをする処理である。この0.3msタイマ割り込み処理は、引数に0.3msタイマ関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(g)に示す1msタイマ割り込み処理は、1ms毎に割り込みをする処理である。この1msタイマ割り込み処理は、引数に1msタイマ関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(h)に示す入出力インタフェースエラー割込み処理は、入出力インタフェースで入出力されるデータにノイズが乗った等でエラーと判断された場合に行われる処理で、そのエラー判断されたデータを破棄する処理を行う。この入出力インタフェースエラー割込み処理は、引数に入出力インタフェースエラー関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(i)に示す入出力インタフェース受信割込み処理は、入出力インタフェースにデータが入力された場合に発生する割込み処理である。この入出力インタフェース受信割込み処理は、引数に入出力インタフェース受信関数テーブルを設定し、この関数テーブルを参照して登録されている全ての関数の先頭アドレスを呼び出して実行する。
同図(j)に示す入出力インタフェース送信割込み処理は、入出力インタフェースからデータが出力された場合に発生する割込み処理である。この入出力インタフェース送信割込み処理は、引数に入出力インタフェース送信関数テーブルを設定し、この関数テーブルを参照して登録あれている全ての関数の先頭アドレスを呼び出して実行する。
なお、上記の各割り込み処理は1例であり、例えば遊技台の処理、演出を追加、削除した場合、適宜必要な割り込みが追加、削除されることは言うまでもない。
したがって、アプリケーション側で処理を追加した場合でもフレームワークのプログラムを修正しなくていいので、フレームワークの開発を効率よく行うことができる。
また、新たな演出装置(例えば、可動物2など)を追加した場合、フレームワーク側は関数エントリ処理にこの新たに追加した可動物2に関する関数エントリ処理の呼び出し処理だけを追加すればよく、大きなプログラムの設計変更をしなくて済むので開発工程の効率化と削減をできるという効果がある。
次に図20を用いて第2実施形態にかかるアプリケーションソフトの構造につて説明する。同図は第2実施形態にかかる可動物に関する処理の概略イメージ図である。第2実施形態は、所定の処理に1msのタイマ関数テーブルを設けて、その処理の実行タイミングをカウントできるところに特徴がある。本実施例は関数エントリ処理S101で、関数テーブルに1msタイマ関数テーブルを生成している。1msタイマ関数テーブルは、タイマによるカウント処理が必要な処理、例えば可動物可動位置判定処理や、可動物可動停止処理等にタイマ属性を付加している。同図に示すように、例えば、可動物可動位置判定処理に1msタイマ関数テーブル(2)、可動物可動停止処理に1msタイマ関数テーブル(1)と記載されている。この可動物可動位置判定処理の1msタイマ関数テーブル(2)とは、1msタイマ関数テーブルが2回呼び出されたら(2ms毎に)可動物可動位置判定処理を1回呼び出して実行することを意味する。可動物可動停止処理の1msタイマ関数テーブル(1)とは、1msタイマ関数テーブルが1回呼び出されたら(1ms毎に)、可動物可動停止処理を1回呼び出して実行することを意味する。
図21は、第2実施形態にかかる副制御部メイン処理の関数呼出処理のフローチャートである。第2実施形態の処理の流れについて同図を用いて詳細に説明する。
まず、ステップS501では、ステップS102で引数により参照された関数テーブルが1msタイマ関数テーブルか否かを判定する。引数が1msタイマ関数テーブルである場合、ステップS502に進んで、引数で設定された関数テーブルを参照する。一方、引数により参照された関数テーブルが1msタイマ関数テーブルでない場合は、ステップS507へ進んで、その1msタイマ関数テーブルでない引数で設定された他の関数テーブルを参照する。
ステップS502では、引数に設定された関数テーブル(例えば、可動物可動位置判定処理を実行する関数テーブル)を参照し、ステップS503に進む。
ステップS503では、関数呼出タイミングか否かを判定する。例えば、可動物可動位置判定処理を実行する関数テーブルに登録されている関数の先頭アドレスを呼び出す場合、1msタイマ関数テーブルが呼び出された回数が2回目の場合、ステップS504に進み、その可動物可動位置判定処理を実行する関数テーブルに登録されている関数の先頭アドレスを呼び出す。1msタイマ関数テーブルが呼び出された回数が1回目の場合、その可動物可動位置処理の関数テーブルに登録されている関数の先頭アドレスは呼び出さずに、ステップS505に進み、登録されている全ての関数の先頭アドレスを呼び出したか否かを判定する。また、可動物可動停止処理の場合、1msタイマ関数テーブルを1回呼び出す毎に実行されるので、引数で参照されるたびに、その処理の関数テーブルに登録されている関数の先頭アドレスが呼び出されることになる。
ステップS504では、その関数テーブルの関数の先頭アドレスが呼び出される。
ステップS505では、その関数テーブルに登録されている全ての関数の先頭アドレスに対して呼び出すか否かを判定したかを判断する。全ての関数の先頭アドレスに対して呼び出すか否かを判断した場合は、その関数呼出処理を終了し、まだ呼び出すか否かを判断していない関数の先頭アドレスがある場合、ステップS506へ進む。
ステップS506では、次の関数の先頭アドレスを参照し、ステップS503へ進み、その関数の関数呼出タイミングか否かを判定する。
ステップS507では、1msタイマ関数テーブルを参照しない引数に設定された関数テーブル(例えば、コマンド受信関数テーブル)を参照し、ステップS508に進む。
ステップS508では、その関数テーブルに登録されている関数の先頭アドレスを呼び出して実行し、ステップS509に進む。
ステップS509では、全ての関数の先頭アドレスを呼び出したか否か判定し、全ての関数の先頭アドレスを呼び出した場合、その関数呼出処理を終了する。
まだ呼び出していない関数がある場合、ステップS510に進み、次の関数の先頭アドレスを参照する。その関数テーブルに登録されている全ての関数の先頭アドレスを呼び出すまで繰り返す。
なお、本実施例では、1msタイマ関数テーブルを生成したが、これは1msに限らないことは言うまでもない。
このように1msタイマ関数テーブルを生成して、呼び出す関数にタイマ属性を付加することで、別途タイマ割り込み処理(例えば2ms等)の登録項目を作成しなくて済み、副制御部300のCPU354の処理負担の軽減とROM356、RAM358等のメモリ容量が削減できるという効果がある。
次に図22を用いて第3実施形態にかかるアプリケーションソフトの構造について説明する。同図は第3実施形態にかかる表示装置に関する処理の概略イメージ図である。第3実施形態は、所定の処理の処理開始条件としてトリガ関数テーブルを設け、このトリガ関数テーブルに登録されている条件を満たした場合に所定の処理が開始されるところに特徴がある。
本実施例では、表示装置初期化処理、演出ボタン表示設定処理にトリガ関数テーブルを設定している。トリガ関数テーブルは、所定の処理の終了とタイマ数を処理開始条件としており、所定の処理終了、所定のタイマ数を経過した後、当該処理を実施するように設定できる。例えば、同図では、表示装置初期化処理にトリガ関数テーブル(初期設定処理、32ms)が設定されており、表示装置初期化処理は、初期設定処理が終了してから32ms後に実行される。また、演出ボタン表示設定処理にトリガ関数テーブル(演出ボタン割り込み処理、100ms)が設定されており、演出ボタン表示設定処理は、演出ボタン146が押下された後、演出ボタン割り込み処理を受信してから100ms後に実行される。このトリガ関数テーブルは、タイマをカウントするために1msタイマ割り込み処理の中で呼び出されるようにされている。
図23は、第3実施形態にかかる1msタイマ割り込み処理のフローチャートである。1msタイマ割り込み処理は、副制御部メイン処理の中で割込みにより実行される処理である。
ステップS601では、引数として1msタイマ関数テーブルを設定し、ステップS602に進む。
ステップS602では、1msタイマ関数テーブルを呼び出し、その1msタイマ関数テーブルに登録されている関数の先頭アドレスを呼び出して実行する。
ステップS603では、引数としてトリガ関数テーブルを設定し、ステップS604に進む。
ステップS604では、トリガ関数テーブルを呼び出して実行し、1msタイマ割り込み処理を終了させる。
図24は、第3実施形態にかかる関数呼出処理のフローチャートである。
ステップS701では、上述した副制御部メイン処理におけるステップS102で設定された引数により参照された関数テーブルがトリガ関数テーブルか否かを判定する。参照関数テーブルがトリガ関数テーブルである場合、ステップS702に進み、参照関数テーブルがトリガ関数テーブルでない場合、ステップS709に進む。
ステップS702では、引数に設定された関数テーブル(ここでは、トリガ関数テーブル)を参照し、ステップS703に進む。
ステップS703では、関数呼出条件(本実施例では所定の処理の終了)が終了しているか否かを判断する。例えば、本実施例では、初期設定処理が終了しているか否かを判断し、初期設定処理が終了している場合、ステップS704に進み、初期設定処理が終了していない場合はステップS707に進む。
ステップS704では、関数呼出条件であるタイマが経過しているか否かを判断する。例えば、本実施例では、タイマ数が32msを経過しているか否かを判断する。経過している場合、ステップS705に進み、経過していない場合、ステップS707に進む。
ステップS705では、表示装置初期化処理の関数テーブルに登録されている関数の先頭アドレスを呼び出して実行し、ステップS706に進む。
ステップS706では、表示装置初期化処理の関数テーブルに登録されている全ての関数の先頭アドレスに対して呼び出すか否かを判定したか判断する。全ての関数の先頭アドレスに対して呼び出すか否かを判断した場合は、その関数呼出処理を終了し、まだ呼び出すか否かを判断していない関数の先頭アドレスがある場合、ステップS708に進む。
ステップS708では、表示装置初期化処理の関数テーブルに登録されている次の関数の先頭アドレスを参照して、ステップS703に進んで、全ての関数の先頭アドレスを呼び出すまで、ステップS703〜S708の関数呼出処理を繰り返す。
ステップS709では、トリガ関数テーブルを参照しない引数に設定された関数テーブル(例えば、表示装置表示設定処理のコマンド受信関数テーブル)を参照し、ステップS710に進む。
ステップS710では、その関数テーブルに登録された関数の先頭アドレスを呼び出して実行し、ステップS711に進む。
ステップS711では、その関数テーブルに登録されている全ての関数の先頭アドレスを呼び出したか否かを判定する。全ての関数の先頭アドレスを呼び出している場合、関数呼出処理を終了し、呼び出していない関数の先頭アドレスがある場合、ステップS712に進み、その関数テーブルの次の関数の先頭アドレスを参照してステップS710に進む。
その関数テーブルに登録されている全ての関数の先頭アドレスを呼び出すまでステップS710〜S712の関数呼出処理を繰り返す。
したがって、所定の処理の実行終了とタイマ数を後処理の処理開始トリガとして用いているため、関数テーブルに別途ウェイト処理の関数を設けたり、タイマ関数を設けるよりも使用するメモリ容量を削減することができるという効果がある。
なお、本実施例では関数呼出条件を所定の処理の終了としたが、これに限定されるものではない。例えば、所定の処理の開始を関数呼出条件とする等、いずれの処理を条件として設定してもよい。
次に図25を用いて第4実施形態にかかるアプリケーションソフトの構造につて説明する。同図は第4実施形態にかかる表示装置に関する処理の概略イメージ図である。第4実施形態は、トリガ関数テーブルへの関数の登録(関数エントリ処理)が、所定の割り込み処理を受信した場合に行われるところに特徴がある。従って、同図に示すように所定の割込み処理を受信する前は、トリガ関数テーブルには関数が登録(エントリ)されていない。
次に図26は、第4実施形態における演出ボタン割り込み処理のフローチャートである。同図を用いてトリガ関数テーブルへの関数の登録について説明する。
ステップS801では、引数として演出ボタン関数テーブルを設定し、ステップS802に進む。
ステップS802では、演出ボタン関数テーブルに登録されている関数の先頭アドレスを実行し、ステップS803に進む。
ステップS803では、演出ボタン表示設定処理を実行する関数の先頭アドレスをトリガ関数テーブルに登録し、演出ボタン割り込み処理を終了する。
上述の処理によりトリガ関数テーブルに演出ボタン表示設定処理を実行する関数の先頭アドレスを登録することができる。
図27は、第4実施形態にかかる関数呼出処理のフローチャートである。
ステップS901では、ステップS102の引数により参照された関数テーブルがトリガ関数テーブルか否かを判定する。参照された関数テーブルがトリガ関数テーブルである場合、ステップS902に進み、参照された関数テーブルがトリガ関数テーブルでない場合、ステップS908に進む。
ステップS902では、引数に設定された関数テーブル(例えば、トリガ関数テーブル)を参照し、ステップS903に進む。
ステップS903では、関数呼出条件であるタイマ数が経過しているか否か判定する。タイマ数が経過している場合、ステップS904に進み、タイマ数が経過していない場合、ステップS906に進む。
ステップS904では、その関数テーブルに登録されている関数の先頭アドレスを呼び出して実行する。
ステップS905では、呼び出した関数の先頭アドレスを消去する。
ステップS906では、関数テーブルに登録されている全ての関数の先頭アドレスに対して呼び出すか否かを判定したかを判断する。全ての関数の先頭アドレスに対して呼び出すか否かを判断した場合は、その関数呼出処理を終了し、まだ呼び出すか否かを判断していない関数の先頭アドレスがある場合、ステップS907に進み、次の関数の先頭アドレスを参照しステップS903に進む。全ての関数の先頭アドレスを呼び出すまでステップS903〜S907を繰り返し実行する。
なお、本発明に係る遊技台は、パチンコ遊技機に限定されるものではなく、例えば、遊技球(例えば、パチンコ玉)を遊技媒体としたスロットマシン(いわゆるパチロット)等にも適用可能である。さらに、このスロットマシンはメダルを遊技媒体としていてもよい。上記スロットマシンは、「複数種類の図柄が施された複数のリールと、複数のリールの回転を開始させるスタートスイッチと、複数のリールのそれぞれに対応して設けられ、複数のリールの回転を個別に停止させるストップスイッチと、予め定められた複数種類の入賞役の内部当選の当否を抽選により判定する抽選手段と、この抽選手段の判定結果とストップスイッチの操作に基づいて、リールを停止させるリール停止制御手段と、停止時の複数のリールにより表示された図柄の組合せが抽選手段により内部当選した入賞役の図柄組合せであるか否かによって、当該入賞役への入賞を判定する判定手段と、を備えるスロットマシン」である。但し、上記実施例に示されるようなスロットマシンの構造等に限定されるものではない。
なお、本実施例では、遊技ごとに区分された処理ごとに関数テーブルを生成したが、これに限定されず、例えば、遊技で使用する演出種類(戦闘演出、恋愛演出、修行演出など)ごとに区分して関数テーブルを生成しても好ましい。
なお、本実施例では、全て実行する関数テーブルをプログラム開始時に生成したが、これに限定されず、アプリケーション製作担当者が関数テーブルのファイルを共有してアプリケーションを開発することで関数テーブルを作成してもよい。この場合、関数の登録処理は行われないが、この構成でも処理を追加するなどの変更を加えた場合でも、フレームワークに変更を生じることがないため、開発工程を削減できるという効果がある。
したがって、遊技に関する複数の処理を行う制御手段と、を備えた遊技台において、前記制御手段は、前記処理を行う複数の関数の各々の先頭アドレスを保存するアドレステーブルと、前記アドレステーブルに保存されている前記各々の先頭アドレスに対する各々の処理を連続して実行する処理実行手段と、を備えているので、フレームワークに変更を生じさせないため開発工程を削減することができるという効果がある。
また、制御手段は、複数の関数の各々の先頭アドレスをアドレステーブルに保存する登録手段を含んでいるので、先頭アドレスをその都度生成、登録することで、アドレステーブルを変更しなくて済み、各開発者が個別に処理を設計できるという効果がある。
また、登録手段は、所定の規定値に基づいて先頭アドレスをアドレステーブルに登録するかしないかを判断し、この規定値を設けたことで各開発者が自由に設計した場合でも簡単に処理負荷に対するデバックを行うことができるという効果がある。
また、制御手段は、遊技の進行毎に区分された複数のアドレステーブルを備えているので、各状況に応じた処理設計を行うことができるという効果がある。
また、処理実行手段は、複数のアドレステーブルに共通の処理としているので、プログラムのメモリ容量を削減できるという効果がある。
また、遊技に関する複数の処理を行う制御手段と、複数の関数の先頭アドレスを保存するアドレステーブルと、前記アドレステーブルに保存されている先頭アドレスに対する各々の処理を実行する処理実行手段と、先頭アドレスをアドレステーブルに保存する登録手段と、を備えているので、新たな演出装置(例えば、可動物2など)を追加した場合でも、フレームワーク側はこの関数エントリ処理に可動物2に関する関数エントリ処理の呼び出し処理を追加すればよいだけなので、開発工程の削減につながるという効果がある。
また、処理実行手段は、アドレステーブルに保存されている先頭アドレスに対する各々の処理を連続して実行するので、1回の関数テーブルの参照で、その関数テーブルに登録されている複数の関数を連続して全て呼び出せるという効果がある。
また、アドレステーブルは、さらに複数の処理の実行条件が保存可能であり、登録手段は、先頭アドレスに加えて、実行条件をアドレステーブルに保存することができるので、実行条件を設定したことで、アドレステーブルを増やさなくても済み、プログラムのメモリ容量を削減することができるという効果がある。
また、実行条件は、少なくとも複数の処理の実行回数、複数の処理のうちの所定の処理の実行終了のいずれかを含んでいるので、特定の処理が2回行われた場合に行いたい処理などを設定できるという効果がある。
また、登録手段は、遊技台の電源投入に基づいて、処理実行手段が実行される前に実行されるようにしているので、その後の全ての処理に対してアドレステーブルを使用した処理を行うことができるという効果がある。