以下、本発明の遊技機を実施例に基づいて更に詳細に説明する。図17は、実施例に係るパチンコ機の全体構成を図示したブロック図である。図示のパチンコ機は、遊技動作を中心的に制御する主制御基板1と、液晶ディスプレイ8に表示されたキャラクタや図柄を変動させる図柄制御基板2と、スピーカを駆動して音声演出を実現する音声制御基板3と、ランプ類の点滅動作させてランプ演出を実現するランプ制御基板4と、遊技球を払出す払出制御基板5と、払出制御基板5に制御されて遊技球を発射する発射制御基板7と、AC24Vを受けて装置各部に直流電圧を供給する電源基板6とを中心に構成されている。
主制御基板1、図柄制御基板2、音声制御基板3、ランプ制御基板4、及び払出制御基板5は、それぞれワンチップマイコンを備えるコンピュータ回路で構成されており、各サブ制御基板2〜5は、主制御基板1からの制御コマンドに基づいて上記した個別的な制御動作を実現している。なお、この実施例の場合には、制御コマンドは2バイト長であり、一方向のパラレル通信方式によって伝送されているが、特にこの構成に限定されるものではない。
図18は、音声制御基板3の回路構成を示すブロック図である。図示の通り、音声制御基板3は、ワンチップマイコン10と、ワンチップマイコン10から出力される音声アナログ信号(効果音BGMと背景音SEのミキシング音)を増幅するアンプ11と、ウォッチドッグタイマ(WDT)12とを中心的に備えている。
ワンチップマイコン10は、主制御基板1からの制御コマンドを受ける入力ポート13と、ウォッチドッグタイマ12にクリアパルスを出力する出力ポート14と、音声制御基板3の動作を制御するCPUコア15と、システムクロックに基づいて各種の信号を出力するTPU(Timer Pulse Unit)16と、TPU16からの内部割込み信号CH0,CH1や主制御基板1からのストローブ信号STB(外部割込み信号)を受ける割込みコントローラ17と、ソフトウェア的に復元されたPCM音声データを受けて音声アナログ信号を出力するD/Aコンバータ18と、制御プログラムやADPCMデータ(adaptive differential pulse code modulation)を固定的に記憶するROM(Read Only Memory)19と、制御プログラムの作業領域(ワークエリア)として使用されるRAM(Random Access Memory)20とを中心に構成されている。
なお、出力ポート14から出力されるべきクリアパルスが所定時間以上途絶えると、ウォッチドッグタイマ12からCPUコア15に対してリセット信号が出力され、CPUコア15がリセット状態となって制御プログラムを最初から再実行されることになる。
図18に示すように、割込みコントローラ17には、TPU16からの内部割込み信号CH0,CH1と、主制御基板1からのストローブ信号STBとが供給されるが、これらは共に禁止(マスク)可能な割込み信号となっている。ここで、ストローブ信号STBは、主制御基板1から制御コマンドと共に出力される信号であり、割込みコントローラ17にはIRQ(Interrupt Request)信号として供給され、これを受けた割込みコントローラ17は、CPUコア15に割込み信号INTを供給する共に、割込み処理ルーチンを特定する割込みベクトルを出力している。
TPU16のチャネル0とチャネル1からは、それぞれ内部割込み信号が出力されるよう設定されているが、チャネル1からの割込み信号CH1は4mS毎に発せられるよう設定され、チャネル0からの割込み信号CH0は、制御プログラムによって個々的に設定されたサンプリング周期(τ)毎に発せられるように設定されている。ここでサンプリング周期とは、D/Aコンバータ18から出力される音声アナログ信号の出力間隔(τ)を意味する。
そして、D/Aコンバータ18から出力される個々の音声メッセージに応じて、適宜にサンプリング周期を変更できるよう、サンプリング周期(τ)は制御プログラムによって個々的に設定される。例えば、8KHz、16KHz、32KHzのサンプリング周波数で取得されてROM19に記憶されている音声データ(ADPCMデータ)を再現する場合には、それぞれ125μS、62.5μS、31.25μSの時間間隔(τ)で割込み信号CH0が発せられることにより、そのADPCMデータがPCMデータに変換され、サンプリング周波数に対応するタイミングでD/Aコンバータ18から出力されることになる。
これらの点に関連して、TPU16の動作を更に詳細に説明する。TPU16(日立製作所)には、TCNT(タイマ・カウンタ)と、TGR(タイマ・ジェネラル・レジスタ)と、TSR(タイマ・ステイタス・レジスタ)と、TIER(タイマ・インターラプト・レジスタ)その他が、各チャネル毎に設けられている。そして、この実施例では、TGR(タイマ・ジェネラル・レジスタ)にタイマ上限値を設定しておき、TCNT(タイマ・カウンタ)のカウントアップ動作を開始させ、システムクロックの同期してカウントアップされたTCNT値がTGRの上限値に一致すると、TPU16のTSR(タイマ・ステイタス・レジスタ)のTGFフラグがオン状態になるようになっている。なお、この動作に合わせて、TCNT(タイマ・カウンタ)はゼロクリアされる。
ここで、TIER(タイマ・インターラプト・レジスタ)が割込み許可状態に設定されている場合には、チャネル0又はチャネル1の内部割込みが発生し、割込みコントローラ17に伝えられることになる。なお、割込みコントローラ17は、割り込み優先度に応じて、CPUコア15に対して割込み信号INTを発生するが、CPUコア15が割込み受け付け状態EI(Enable Interrupt)であれば、割込みベクトルで特定されるアドレスに記憶されている割込み処理プログラムが実行されることになる。
したがって、例えば、8KHz、16KHz、32KHzのサンプリング周波数の音声データを再現する場合には、システムクロックの周波数が20MHzである実施例では、チャネル0のTGR(タイマ・ジェネラル・レジスタ)に、それぞれ、タイマ上限値として、20000/8、20000/16、20000/328を設定すれば良いことになる。すると、TCNTがゼロクリアされた後、カウントアップ動作の開始がソフト的に指示された場合、その後、20MHzの速度でTCNTの値が更新され、上記した所定回数のカウントアップ動作の後に、TPU16のTSR(タイマ・ステイタス・レジスタ)のTGFフラグがオン状態となる。
先に説明したように、TGFフラグがオン状態となると、TIER(タイマ・インターラプト・レジスタ)がオン状態であることを条件に、CPUコア15に割込み信号INTが出力されるが、TPU16のTSR(タイマ・ステイタス・レジスタ)のTGFフラグは、割込み処理プログラムにおいて、オン状態からオフ状態に戻されることになる。その他、TPU16のTIER(タイマ・インターラプト・レジスタ)や、割込みコントローラ17のIER(IRQ・イネーブル・レジスタ)についても、ソフト的にオン状態又はオフ状態にされて、割込み動作が適宜に管理されている。
この実施例では、このようなTPU16のチャネル0(CH0)からの内部割込みを利用して、音声演出を実現している。図19は、図6に示すメインルーチン(詳細は後述する)のうち、チャネル0の割込みに関する部分を抽出したフローチャートである。図示の通り、電源投入時のように、CPUがリセットされた後は、CPUが割込み受け付け禁止状態(DI状態disenable interrupt)となり、(1)TGRにカウンタ上限値(8KHzに対応する値)が設定されると共に、(2)TCNTがゼロクリアされた後にカウントアップ動作が開始され、(3)チャネル0のTIER(タイマ・インターラプト・イネーブル・レジスタ)がオン状態に設定される(ST4)。
この結果、CPUが割込み許可状態(EI状態enable interrupt)に設定された後(ST5)、125μS(=1/8KHz)毎にチャネル0の内部割込みが生じることになる。但し、最初の段階で、ワークエリアのSNDDATA番地に無音データが格納されており(ST3)、また、BGM音やSE音のためのSNDFLG番地が00Hに設定されているので(ST3)、D/Aコンバータなどの音声回路は無音状態で駆動される。SNDDATA番地やSNDFLG番地の意義については後述するが、本実施例は、音声演出をしない場合でも、必ず音声回路を無音状態で駆動しており、かかる特徴的な構成によってノイズなどによる異常音の発生を有効に防止している。
すなわち、音声回路を非駆動状態(例えば、チャネル0の割込みを発生させない状態)に維持している場合には、ノイズなどの影響でD/Aコンバータの入力値が異常レベルに維持されて、かなりの時間にわたって大音響が出力され続ける弊害も考えられるが、本実施例では、定常的にチャネル0の割込みが発生しているので、不要時にはSNDDATA番地が繰返し無音データに書き直されることになり(図14のSTOUT11’他)、このようなトラブルがあり得ない。
図1〜図5は、主制御基板1から受信する制御コマンドと、音声制御基板3から発せられる音声情報との関係を説明するため参照テーブルを例示したものである。この実施例では、主制御基板1から伝送されてくる2バイト長の制御コマンドに対応して、スピーカSPからは効果音(SE)と背景音(BGM)をミキシングした音声情報が出力されるが、最初に、この一連の処理を概略的に説明する。
図1(a)に示すように、受信した2バイト長の制御コマンドに対応して、1バイト長のFiコマンド(完全情報Full Intelligence Command)が特定される。ここでFiコマンドとは、一連の音声情報を完全に特定するものであり、例えば、図柄始動口への入賞に合わせて液晶ディスプレイ8において図柄変動の動作が開始される場合には、その図柄変動の動作に合わせて、(1)「今回は期待できるよ!」→(2)・・・・(無音状態)→(3)「ほーらリーチだ!」→(4)・・・・(無音状態)→(5)「やったー!。大当りー!!」のような一連の効果音SEを、背景音BGM(通常は音楽)と共に特定するものである。
Fiコマンドは、上記のような区分情報(1)〜(5)を組合せて構成されているが、区分情報はSiコマンド(Semi Intelligence Command)で特定されるようになっている。すなわち、Fiコマンドは、Siコマンドの組合せによって構成されており、複数個のSiコマンドの組合せによって、(1)「今回は期待できるよ!」、(2)・・・(無音状態)、(3)「ほーらリーチだ!」、(4)・・・・(無音状態)、(5)「やったー!。大当りー!!」の一連の音声情報が特定されることになる。
図2は、Fiコマンドと、Siコマンドと、サウンドNOの関係を概略的に図示したものである。図2(a)及び図2(b)に示すように、一つのFiコマンドに対して、背景音(BGM)用のSiコマンドと効果音(SE)用のSiコマンドとが特定される。例えばコマンド番号01HのFiコマンドの場合には、効果音としては、一連の10個のSiコマンド番号(50H,23H,50H,24H,41H,50H,4BH,4CH,5CH,50H)の組合せが特定され、背景音としては、一連の7個のSiコマンド番号(01H,51H,02H,51H,10H,0FH,51H)の組合せが特定されることになる。なお、Hは16進数を意味する。
各Siコマンドは、その再生時間と共に規定されており、図2(a)に例示する効果音(SE)の場合には、
(1)9.4秒の再生時間を要するSiコマンド50H(無音)
(2)0.7秒の再生時間を要するSiコマンド23H
(3)12.7秒の再生時間を要するSiコマンド50H(無音)
(4)1.0秒の再生時間を要するSiコマンド24H
(5)0.8秒の再生時間を要するSiコマンド41H
(6)3.6秒の再生時間を要するSiコマンド50H(無音)
(7)2.0秒の再生時間を要するSiコマンド4BH
(8)0.8秒の再生時間を要するSiコマンド4CH
(9)11.27秒の再生時間を要するSiコマンド5CH
(10)0.004秒の再生時間を要するSiコマンド50H(無音)
によってFiコマンド1が実効化されることを意味している。そして、一連のSiコマンドのうち、現在どのSiコマンドを実行すべきかは、SE用の進行カウンタCNT SEによって指示される。
これらの点は、背景音の場合も同様であり、図2(b)に例示する背景音(BGM)の場合には、
(1)9.4秒の再生時間を要するSiコマンド01H
(2)0.7秒の再生時間を要するSiコマンド51H(無音)
(3)12.7秒の再生時間を要するSiコマンド02H
(4)3.6秒の再生時間を要するSiコマンド51H(無音)
(5)4.8秒の再生時間を要するSiコマンド10H
(6)9.1秒の再生時間を要するSiコマンド0FH
(7)0.004秒の再生時間を要するSiコマンド51H(無音)
によってFiコマンド01Hが実効化されることを意味している。そして、一連のSiコマンドのうち、現在どのSiコマンドを実行すべきかは、BGM用の進行カウンタCNT BGによって指示される。
各Siコマンドは、更に、音声パーツであるサウンドNO及びその再生時間の組合せを特定するよう構成されている。例えば、図2(a)の例では、Siコマンド5CHは、0.6秒の再現時間を要するサウンドNO47H→0.6秒の再現時間を要するサウンドNO47H→・・・→1.1秒の再現時間を要するサウンドNO47H→・・・→2秒の再現時間を要するサウンドNO56Hの組合せで実効化される。このように、サウンドNOとその再生時間とは必ずしも固定的ではなく、再生時間は適宜に変更される。そして、一連のサウンドNOのうち、現在どのサウンドNOを実行すべきかは進行カウンタPT CNTによって指示される。なお、図2においてENDCDは、データの終了を意味するコードであり、再生時間がmS(ミリ秒)の単位であって、且つ**/4の形式で特定されているのは、後述するタイマ割込み処理が4mS毎に発生することに因るものである。
以上の通り、この実施例では、制御コマンドからFiコマンドが特定され、FiコマンドによってSiコマンドの組合せが特定され、各SiコマンドはサウンドNOの組合せを特定するよう構成されている。図3〜図5は、Fiコマンド番号の特定から音声信号の再現までの関係をより詳細に図示したものであり、図3は、Fiコマンド番号と、これを実効化する一連のSiコマンドの関係を示している。また、図4は、Siコマンドと、これを実効化する一連のサウンドNOの関係を示しており、図5は、サウンドNOと、これに対応する音声データ(ADPCMデータ)の格納位置との関係を示している。
以下、これらの点を踏まえて音声制御基板3の制御プログラムについて説明する。本実施例では、音声制御基板3の制御プログラムは、電源投入後に実行を開始されるメインルーチン(図6)と、所定時間(4mS)毎に起動されるタイマ割込み処理ルーチン(図7)と、サンプリング周期(τ)毎にD/AコンバータにPCMデータを供給するサウンド出力割込みルーチン(図14)と、主制御基板1からストローブ信号STBを受けて開始される受信割込みルーチン(図15)と、プログラムの暴走などに起因して開始される異常割込みルーチン(不図示)とで構成されている。
なお、タイマ割込み(図7)、サウンド出力割込み(図14)、受信割込み(図15)が開始されるとCPUは割込み禁止状態となるが、この実施例では、割込み処理ルーチン内ではCPUを割込み許可状態に戻さないので、メインルーチンの実行中に何れかの割込み処理が開始されると、その後は、メインルーチンでEI命令を実行しない限り(ST5)、他の割込み信号は保留されることになる。
また、タイマ割込み(図7)、サウンド出力割込み(図14)の最後では、それぞれフラグWDFLG1とフラグWDFLG2とをオン状態にセットして、各割込み処理が少なくとも一度実行されたことがメインルーチン(図6)で把握できるようにしている。
更にまた、タイマ割込み(図7)、サウンド出力割込み(図14)の最後では、TPU16のTSR(タイマ・ステイタス・レジスタ)のTGFフラグを、オン状態からオフ状態にしている。したがって、この段階ではゼロクリアされているTPU16のTCNT(タイマ・カウンタ)のカウントアップ動作が、内部モジュール再設定処理(図19のST5)によって開始されて、再度、TGR(タイマ・ジェネラル・レジスタ)の値に達するまで、CH0の割込みは生じないことになる。
先ず、図6を参照しつつメインルーチンから説明する。電源が投入されたり、或いは、ウォッチドッグタイマ12からリセット信号を受けると、CPUはリセット状態となり、CPUは、自らを割込み受け付け禁止状態(DI)にした後、検査データDiが全て一致するか否かをチェックする(ST1)。ここで、検査データDiとは、特定複数のROM(AD1、AD2、・・・、ADn番地)の記憶データを、RAMエリアのn個の番地にコピーしたものである。
そして、チェック処理として、RAMエリアに格納されている前記n個の検査データが、ROM(AD1、AD2、・・・、ADn番地)の記憶データと全て一致するか否かを判定する。ここで、検査データDiの一つでも不一致となる場合には、音声制御基板3を構成するワンチップマイコン10のRAM20をゼロクリアするが(ST2)、一方、検査データDiが全て一致する場合には、ステップST2の処理をスキップする。
次に、D/Aコンバータ18への出力データを格納するSNDDATA番地に80H(無音データ)が格納され、効果音SEや背景音BGMの出力を禁止するべくフラグ値(SNDFLG番地の値)を00Hに設定する。また、内蔵モジュールの初期化などを行うと共に、検査データDiの設定処理を行う(ST3)。この設定処理は、先に説明した検査データDiに対応するものであり、例えば、図16(a)に示す通り、固定的に記憶されている特定複数番地のROM(AD1、AD2、・・・、ADn番地)のデータを、作業領域(ワークエリア)として使用しないRAMのn個の番地にコピーすることで実行される。
このようにして検査データDiの設定が完了すると、次に、音声出力処理が実行された後(ST4)、CPUが割込み許可状態(EI:enable interrupt)に設定されると共にワンチップマイコン10の内蔵モジュールが初期状態に再設定される(ST5)。
CPUがEI命令を実行したことにより、これ以降は、CH0の内部割込みを含むマスク可能な割込み信号が受け付けられる。但し、電源投入後に、SNDDATA番地には無音データが格納されているので(ST3)、125μS経過後(1/8K)に生じる音声出力用の割込み処理(図14)では、D/Aコンバータ18から無音が出力される(図14のSTOUT1参照)。なお、SE音用とBGM音用のフラグ値(SNDFLG番地の値)が00Hに設定されているので(ST3)、D/Aコンバータ18から無音が出力された後、SNDDATA番地には、再度、無音データが格納される(図14のSTOUT11’参照)。
ステップST5の処理に続いて、サウンドNOの実効化を管理しているサウンド制御用作業テーブル(図13参照)に関する処理が行われる(ST6)。具体的には、図12に記載の通りであり、図13に示す制御用作業テーブルSNDCTBL(BGM用)及びSNDCTBL(SE用)について、ステップST92〜ST97の処理が行われる。先ず、作業テーブルSNDCTBLにおいてサウンドNOを記憶しているSNDNO番地のデータと、SNDNOCS番地のデータの反転データとが比較され、一致すれば以降の処理においてSNDNO番地のデータをサウンドNOとして使用する(ST92)。
一方、両者が不一致なら、SNOBUP番地のデータとSNOBUPC番地のデータの反転データとが一致することを条件にバックアップ領域SNOBUP番地のデータをサウンドNOとして使用する(ST92)。なお、いずれのデータも使用できない場合は無音処理を施してスピーカから音が出ないようにしている。
前記の通り、作業領域に、第1の情報とその第1の情報を反転して得られる第2の情報を格納し、その第1と第2の情報とにより作業領域に格納されたデータの正当性チェックをおこなっている。このように、データ(サウンドNO)の正当性を厳しくチェックするのは、本実施例の場合には、メインルーチンの実行中にデータ受信割込み(図15)が生じるだけでなく、4mS毎のタイマ割込み(図7)と、音声出力割込み(図14)とが平行して実行され、各々において複雑なタイミングでサウンドNOについての制御処理を行うため、ノイズなどの影響でデータの不整合が生じる可能性があるからである。
続いて、作業テーブルSNDCTBLのSNOBUP番地、SNDNOCS番地、SNOBUPC番地に、サウンドNOやその反転データを格納する(ST93)。また、作業テーブルSNDCTBLのADFLG番地、SNDADR番地、SNDFLG番地、SNDNO番地、DELTA番地、XN番地、ADFLG番地、SNDADR番地のデータを、この順番で取得する(ST94)。ここで、ADFLG番地とSNDADR番地のデータを2度取得するのは、ステップST94の処理中に、タイマ割込み(図7)や音声出力割込み(図14)が生じて、格納データが変化する可能性があるからである。したがって、最初と最後のデータが一致しない限り、全てのデータを取得し直すことになる。
次に、(SNDFLG+SNDNO+DELTA+ADFLG+XN+SNDADR H+SNDADR L)の16bit加算演算によってチェックサムを算出し、その反転データをB CS番地に格納する(ST95)。なお、SNDADR Hは、4バイト長のアドレス値(SNDADR番地から4バイト)の上位2バイト、SNDADR Lはその下位2バイトを意味する。その他、作業テーブルSNDCTBLのB DELTA番地、B XN番地、B ADFLG番地、B SNDADR番地、B SNDNO番地、B SNDFLG番地にバックアップデータを記憶する。これもステップST94の処理中に、タイマ割込み(図7)や音声出力割込み(図14)が生じて、格納データが変化する可能性があることを考慮したものである。
続いて、サウンドNOに対応するアドレス情報その他の情報を、図5(a)の参照テーブルSNDTBLに基づいて取得し、作業テーブルSNDCTBLのSNDSTR番地、SNDEND番地、SNDLOOP番地、SMPFRQ番地に記憶する(ST96)。
このステップST92〜ST96の処理は、制御用作業テーブルSNDCTBL(BGM用)及びSNDCTBL(SE用)について行われるが、制御用作業テーブルSNDCTBLの内容を更新するのは、メインルーチンの実行中(主としてST4〜ST8)にも、サンプリング周期(τ)毎に、音声情報の出力処理(図14)が進行しているからである。
以上のようにしてステップST6の処理が終われば、ステップST3の処理で設定された検査データのチェック処理を行う(ST7)。具体的には図16(b)に示す通りであり、ステップST1の場合と同様に、RAMエリアに格納されている前記n個の検査データが、ROM(AD1、AD2、・・・、ADn番地)の記憶データと全て一致するか否かを先ず判定する。
ここで、不一致のデータが一つでも存在する場合には、無限ループ処理に突入させる。この場合、CPUを割込み受付禁止状態(DI)に設定した上で無限ループ処理に突入させるのが好適である。検査データに異常が見つかった以上、この状態で音声出力割込み処理(図14)が起動されると、異常音が発せられる可能性があるからである。
何れにしても、無限ループ処理に入ったことによって、ウォッチドッグタイマ12に対するクリアパルスは供給されなくなり、やがてCPUがリセットされることになる。そして、その後は、検査データが不一致であるとしてRAMクリア処理(ST2)に移行することになる。
一方、検査データチェック処理(ST7)が正常に終了すると、次に、ウォッチドッグタイマ処理を実行する(ST8)。具体的内容は、図16(c)に示す通りであり、ウォッチドッグ用のフラグWDFLG1とWDFLG2とが共にオン状態であるか否かを判定し(S100,S101)、何れのフラグもオン状態であれば、フラグWDFLG1とWDFLG2とをオフ状態に戻した後(S102)、ウォッチドッグタイマ12に対してクリアパルスを出力する(S103)。
図7のステップST27や、図14のステップSTOUT12に示すように、ウォッチドッグ用のフラグWDFLG1,WDFLG2は、割込み処理の終了時にオン状態にセットされるので、各割込み処理が共に実行済みであれば、ステップS102からS103の処理に移行して、ウォッチドッグタイマ12をクリアすることになる。但し、少なくとも何れか一方の割込み処理が未実行の場合には、何もしないでステップST8のウォッチドッグ処理を終えることになる。したがって、何れか一方の割込み処理が未実行である状態が所定時間以上続くと、ウォッチドッグタイマ12からCPUコア15に対してCPUリセット信号が出力されることになる。
このように、この実施例では、図7や図14の割込み処理が正常に実行されているか否かをメインルーチン(図6)において常時チェックしているので、ノイズなどの影響でプログラムが暴走したような場合にも、音声制御基板の動作状態を迅速に初期状態に復帰させることができ、異常音がスピーカから発生することが防止される。
以上のようにしてウォッチドッグ処理(ST8)が終われば、新規の制御コマンドを受信していることを条件に、コマンド変換処理と乱数振分け処理とを行う(ST9)。また、新規の制御コマンドを受信していた場合には、COM_WRT番地に5AHを記憶する(ST9)。ここでコマンド変換処理とは、主制御基板1からの制御コマンドを循環的に記憶しているRING_BUFFER領域(受信バッファ図15(b)参照)をチェックして、もし新規の制御コマンドが検出された場合には、図1(a)のような変換テーブルを参照して、制御コマンドをFiコマンドに変換する処理である。また、乱数振分け処理とは、図1(b)のような抽選テーブルを参照して、Fiコマンドを変更する処理である。
乱数振分け処理では、具体的には、コマンド変換処理によって決定されたFiコマンドと、乱数値RNDとによってFiコマンドを変更する。ここで、乱数値RNDは、例えば0〜255(=RND MAX)までの数値である。したがって、図1(b)の例では、コマンド変換処理によって決定されたFiコマンドが11Hの場合には、0≦乱数値RND≦68又は79≦乱数値RND≦255であればFiコマンド=11Hのままであるが、69≦乱数値RND≦78であればFiコマンド=83Hと変更されることになる。
次に、乱数値RNDを更新する(ST10)。この実施例では、乱数値RNDは0〜255(=RND MAX)の数値であるから、その数値範囲内で乱数値RNDをインクリメント(+1)することで更新される。続いて、サウンドNO書込み完了フラグRCMDFLGの値がチェックされ、このフラグRCMDFLGがセットされていなければ、新規に出力すべき音声情報がないと判断してステップST5の処理に戻る(ST11)。なお、サウンドNO書込み完了フラグRCMDFLGは、タイマ割込み処理(図7)において、新規の制御コマンドに対応するサウンドNOが決定された際にセットされている(図9(a)ST58参照)。
そのため、ステップST11の判定において、サウンドNO書込み完了フラグRCMDFLGがセットされていることが確認された場合には、サウンドNO解析処理を実行することになる(ST12)。具体的には、タイマ割込み処理(図7)において書込まれているサウンドNOを作業領域RCMDにコピーすると共に、そのサウンドNOに対応する各種の情報をサウンド制御用の作業テーブルSNDCTBLの該当欄に記憶する(ST12)。
また、サウンドNO解析処理(ST12)では、サウンドNOの正当性も判定されるので、正当でないと判定された場合にはステップST5に戻り、正当であると判定された場合に限り、次の音声出力起動処理(ST14)に移行する。なお、サウンドNOが正当でないのは、複数の割込み処理が重層的に実行されることがあるためと考えられるが、このような場合には音声出力起動処理がスキップされるので、異常な音声情報が出力されることが防止される。
ステップST13の判定において、サウンドNOが正当であると判定された場合には、音声出力起動処理として、抽出されているサウンドNOに対応する一連の音声データのサンプリング周期(τ)を特定して、このサンプリング周期(τ)毎にTPU16から内部割込み信号CH0が出力されるよう設定する(ST14)。具体的には、TGR(タイマ・ジェネラル・レジスタ)に所定値を上限値として設定し、TCNTをゼロクリアした後、カウントアップ動作を開始させ、CH0からの内部割込みを許可するべく、TIER(タイマ・インターラプト・イネーブル・レジスタ)をオン状態にする(図19参照)。
その後、ステップST5の処理に戻るが、TPU16から内部割込み信号CH0が出力されるよう設定されたことにより、以降は、サンプリング周期(τ)毎に内部割込みが生じ、特定されたサウンドNOに対応する音声データがサンプリング周期(τ)毎に出力されることになる(図14参照)。なお、複数回のCH0の割込み処理(図14)によって一連の音声データの出力が完了すると、図14の割込み処理において、無音処理が施されるので(図14の破線部参照)、それ以降は、連続的に無音がD/Aコンバータ18から出力されることになる。なお、無音処理において、サンプリング周波数が16KHzに設定されるので、62.5μS(=1/16KHz)の時間周期で無音が出力される。
これら音声出力処理について図19を参照しつつ確認する。ステップST14の処理でゼロクリアされたTCNT(タイマ・カウンタ)がカウンタ上限値に達してゼロクリアされると、音声出力用のCH0の割込み処理(図14)が実行される。そして、この割込み処理を終えた後に、TIER(タイマ・インターラプト・イネーブル・レジスタ)が再度オン状態とされ(図19のST5)、TCNT(タイマ・カウンタ)のカウントアップ動作が再開される(図19のST5)。したがって、サウンドNOで特定されるサンプリング周期(τ)毎にその後も繰返しCH0の割込みが実行されることになる。
このようにして一連の音声データが出力された後は、図14の無音処理ではサンプリング周波数が16KHzに設定されるので、その後は、新たな制御コマンドに対応する音声演出が開始されるまで、16KHzのサンプリング周波数の無音データがD/Aコンバータ18から繰返し出力される。
以上説明したように、電源投入後はステップST5〜ST14までの処理が無限ループ状に繰り返されるが、そのようなメインルーチンの処理に平行して、図7に示すタイマ割込み処理が行われる。タイマ割込み処理では、Siコマンドの再生時間を管理しているBGM用変数TIME BG,及びSE用変数TIME SEがゼロになるまでデクリメント(−1)される(ST20)。また、サウンドNOの再生時間を管理しているBGM用変数PT1、及びSE用変数PT2がゼロになるまでデクリメントされる(ST20)。図2に関して先に説明したように、Siコマンド及びサウンドNOは、その再生時間が特定されて抽出されているが、その特定された再生時間を実現するべく各変数TIME BG,TIME SE,PT1,PT2がデクリメントされるのである。なお、タイマ割込みの割込み周期が4mSであることから、例えば、9.4秒の再生時間を実現するのに、9400/4=2350回の割込み処理を要することになる。
続いて、作業領域COM_WRTの値が05Hであるか否かが判定される(ST21)。図6のステップST9において説明した通り、新規の制御コマンドを取得した場合には、作業領域COM_WRTに05Hが書込まれている。そこで、作業領域COM_WRT=05Hの場合には、Fiコマンド用の作業領域とSiコマンド用の作業領域とを初期設定した後(ST22)、コマンドバッファ領域であるCOM_SND(不図示)に記憶されているFiコマンドを、Fiコマンド記憶領域であるCOM_NUMに格納する(ST23)。
Fiコマンド用とSiコマンド用の作業領域は、図7(b)と図7(c)に示すデータ構造をしており、Fiコマンド用の作業領域には、記憶領域COM NUMが設けられている。また、ステップST20で問題となるSiコマンド用の時間変数TIME BG,TIME SEは、Fiコマンド用の作業領域に設けられており、サウンドNO用の時間変数PT1,PT2はSiコマンド用の作業領域に設けられている。
ステップST23の処理が終われば、Fiコマンド記憶領域COM NUMの記憶内容をビット反転させてバッファ領域BUP NUMに記憶させると共に、新規の制御コマンドに対する初期処理が終わったことを示すべくCOM WRT番地にゼロを格納する(ST24)。なお、COM WRT番地=0(COM WRT≠05H)の場合にはステップST22〜ST24の処理はスキップされる。
続いて、Fiコマンドの展開処理が行われる(ST25)。Fiコマンド展開処理の詳細は図8に示す通りであるが、簡略化して説明すると、COM NUMに格納されているFiコマンドと、Si進行カウンタとに基づいて、これから実効化すべきSiコマンドが特定される。なお、Si進行カウンタとは、Fiコマンド用作業領域中のCNT BG及びCNT SEの値であり、1つのFiコマンドに対して、BGM(背景音)用SiコマンドとSE(報知音)用Siコマンドとが特定される。そして、特定されたBGM(背景音)用SiコマンドとSE(報知音)用Siコマンドとは、それぞれ、図7(c)のBGM用エリアと、SE用エリアのPT NUMに格納される。
以上の処理によって、これから実効化すべきSiコマンドが特定されたので、次に、そのSiコマンドについてデータ展開処理が行われる(ST26)。Siコマンドデータ展開処理の詳細は、図9に示す通りであるが、簡略化して説明すると、SiコマンドとサウンドNO進行カウンタPT CNTとに基づいて、これから実効化すべきサウンドNOが特定される。ここで進行カウンタとは、BGM用エリアのPT CNT、及びSEエリア2のPT CNTの値であり、1つのFiコマンドに対して、BGM用とSE用のサウンドNOが特定される。そして、特定された2種類のサウンドNOは、それぞれ、図7(d)に示すRCMDBF1とRCMDBF2に格納される。
図8は、Fiコマンド展開処理(図7のST25)の具体的内容を示すフローチャートである。先ずFiコマンド用の作業領域(図7(b)参照)についてのエラー確認処理(ST30)が実行される。具体的には、(1)COM NUMの値とBUP NUMの反転値との比較、(2)COM NUMに記憶されているFiコマンドが所定の数値範囲内か否かの正当性チェック、(3)CNT BGの値とBUP BGの反転値との比較、(4)CNT SEの値とBUP SEの反転値との比較などが行われ、一つでも異常が検出されたらFiコマンド用の作業領域(図7(b))を初期設定して処理を終える。このように、本実施例では、Fiコマンドの展開処理に先だって異常判定が行われるので、異常な音声情報が出力されることがない。
次に、変数TIME BGの値がゼロになったか否かが判定される(ST31)。変数TIME BGは、BGM用のSiコマンドの再生時間を管理するものであり、図7(a)のステップST20において4mS毎にデクリメントされる変数である。したがって、TIME BG=0の場合には、次に実効化すべきSiコマンドを特定するべくステップST32の処理に移行する。具体的には、COM NUM番地の格納データ(Fiコマンド)に対応する一群のSiコマンドのうち、BGM進行カウンタCNT BGに対応するデータDx(Siコマンド)を取得する(ST32)。
そして、そのSiコマンドがエンドコードENDCD(図3参照)であるか否かが判定され(ST33)、エンドコードENDCDでなければ、そのSiコマンドの再生時間を、時間変数TIME BGの初期値として設定する。次に、ステップST32で取得したデータDxが継続コードであるか否かが判定され(ST35)、継続コードでなければ、Siコマンド用の作業領域(図7(c))のうち、BGM用作業エリア1を初期設定する(ST36)。具体的には、図7(c)に示すSEMIDT番地からの4番地(PT TIME,PT NUM,PT CT)に00Hを格納すると共に、続く2番地(PT NUM BP,PT CNT BP)に0FFHを格納する。
その後、ステップST32の処理で取得したSiコマンド(Dx)をBGM用作業エリア1のPT NUM番地に格納すると共に、Siコマンド(Dx)の反転データをBGM作業エリア1のPT NUM BPに格納する(ST37)。そして、BGM進行カウンタCNT BGの値をインクリメント(+1)すると共に、BGM進行カウンタCNT BGの反転データをBUP BG番地に格納する(ST38)。なお、反転データを格納するのは、これから実効化しようとするSiコマンドや、サウンドNOを特定するBGM進行カウンタの値の正当性を必要時にチェックできるようにするためである。
以上の処理によって、Siコマンド用の作業領域(図7(c))のうち、BGM用エリアの処理が終わるので、次に、SE用エリアの処理に移行する。ステップST39〜ST46の具体的な処理内容は、上記したステップST31〜ST38の処理内容と実質的に同じであり、SE用エリア(SEMIDT+6番地から始まる6番地分)に必要なデータが格納される。また、SE進行カウンタCNT SEの値もインクリメント(+1)される(ST46)。
続いて、図7のSiコマンドデータ展開処理(ST26)について、図9に示すフローチャートに基づいて説明する。先ず、Siコマンドのエラーチェック処理が行われる(ST50)。具体的には、図7(c)に示すBGM用エリアにおける(1)PT NUM番地のデータとPT NUM BP番地の反転データとの対比、(2)PT CNT番地のデータとPT CNT BP番地の反転データとの対比や、また、SE用エリアにおける(3)PT NUM番地のデータとPT NUM BP番地の反転データとの対比、(4)PT CNT番地のデータとPT CNT BP番地の反転データとの対比などの処理が行われ、異常が検出されたらBGM用エリアとSE用エリアを初期設定して処理を終える。
次に、レジスタR3をゼロクリアすると共に、Siコマンド用の作業領域(図7(b))のうち、BGM用エリアについての初期処理を行う(ST51)。その結果、最初はBGM用エリアについての作業が行われることになり、先ずBGM用のサウンドNOの再生時間を管理する時間変数PT1の値がゼロか否かが判定される(ST52)。時間変数PT1は、図9(a)のステップST56の処理で初期値設定され、タイマ割込み毎に図7(a)のステップST20の処理でデクリメント(−1)されている。そして、PT1=0である場合とは、現在のサウンドNOを実行し終わり、次のサウンドNOの実行に移行すべき時であるから、ステップST53以下の処理を実行する。
先ず、図4(a)に図示するような指示テーブルPARTS COMのアドレスリストから、BGM用エリア(図7(c))のPT NUM番地に格納されたSiコマンドに対応するPARTS COMiのアドレス情報を抽出する(ST53)。次に、抽出されたPARTS COMiエリア(図4(b)参照)に記憶されている一群のサウンドNOデータから、図7(c)のサウンドNO進行カウンタPT CNTに対応するサウンドNOデータDzを抽出する(ST54)。
そして、抽出されたデータDzがエンドコードENDCDでない場合には、ステップ54の処理によって特定されたサウンドNOの再生時間を、図7(c)のBGM用エリアのPT TIME番地に初期設定する(ST56)。また、データDzが継続コードでない場合には、抽出したサウンドNO(Dz)を、図7(d)に図示する作業領域RCMDBF1番地に格納すると共に、書込み完了フラグRCMDFLGの該当ビットを1にセットする(ST58)。
また、図7(c)のBGMエリア1の、サウンドNO進行カウンタPT CNTの値をインクリメントすると共に、その反転データをPT CNT BP番地に格納する(ST59)。以上の処理によって、図7(c)のBGMエリア1に対する処理が終わるので、次に、ステップST51の処理でゼロリセットされているレジスタR3の値をチェックして(ST70)、レジスタR3に05Hに書込んだ後、SE用エリアについての初期処理を行って(ST71)ステップST52の処理に戻る。
その結果、続いてSR用エリア2について、上記したBGM用エリア用の作業と同一の作業が行われることになる。すなわち、PT2=0であれば、PARTS COMiエリア(図4(b)参照)に記憶されている一群のサウンドNOデータから、図7(c)SE用エリア1のサウンドNO進行カウンタPT CNTに対応するサウンドNOデータDzを抽出する(ST54)。そして、ステップ54の処理によって特定されたサウンドNOの再生時間を、図7(c)のSE用エリアのPT TIME番地に初期設定し(ST56)、サウンドNO(Dz)を、図7(d)に図示する作業領域RCMDBF2番地に格納すると共に、書込み完了フラグRCMDFLGの該当ビットを1にセットする(ST58)。なお、ステップST58の処理は、詳細には、図9(b)に示す通りであり、図9(c)は、図7(d)を転記したものである。
続いて、図10のフローチャートについて説明する。図10は、図6のサウンドNO解析処理(ST12)の内容を詳細に図示したものである。サウンドNO解析処理では、先ず、図9(c)に示すサウンドNO書込み完了フラグRCMDFLGの該当ビットをチェックして、サウンドNO第1バッファRCMDBF1(図9(c)参照)にサウンドNOが格納されているか判定する(ST70)。ここで、判定結果がYesなら、受信バッファ1であるRCMDBF1のデータを作業領域RCMD番地にコピーすると共に、サウンドNO書込み完了フラグRCMDFLGの該当ビットをリセットして作業終了を示す(ST71)。
一方、サウンドNO書込み完了フラグRCMDFLGのチェックにより、受信バッファ1が空であると判定されると、サウンドNO書込み完了フラグRCMDFLGの該当ビットをチェックして、サウンドNO第2バッファRCMDBF2にサウンドNOが格納されているか判定する(ST72)。そして、判定結果がYesなら、受信バッファ2であるRCMDBF2のデータを作業領域RCMD番地にコピーすると共に、サウンドNO書込み完了フラグRCMDFLGの該当ビットをリセットして作業終了を示す(ST72)。
このように、受信バッファ1と受信バッファ2とを順番にチェックするのは、一度に処理できる音声情報は一つであるためである。すなわち、受信バッファ1に格納されているサウンドNOをRCMD番地に格納し、その後の音出力起動(ST11)からステップST4〜ST8の処理を経た上で(この間に一度だけCH0の内部割込み処理が実行され受信バッファ1に対応する音声が出力される可能性がある)、改めて、受信バッファ2に格納されているサウンドNOをRCMD番地に格納するのである。なお、図6のステップST11では、「サウンドNO書込み完了」と判定されたのに、図10のステップST70及びST72の判定が共にNOである場合は、異常状態であるのでキャリーフラグCYを1にセットして処理を終える(ST80)。
但し、通常の場合には、受信バッファ1又は受信バッファ2に格納されていたサウンドNOがRCMD番地にコピーされるので(ST71,ST73)、次に、そのサウンドNOの値が所定の数値範囲内のものであるか否かが判定される(ST74)。例えば、サウンドNOが、0≦サウンドNO≦SNDmaxの数値範囲に割り振られている場合には、SNDmaxより大きいサウンドNOはエラーと判定されて、ステップST80に移行する。このような判定処理を設けているので、異常な音声が出力されたり、プログラムが暴走することが未然に防止される。
サウンドNOが所定の数値範囲を越えていない判定された場合には、更に、サウンドNOの値がチェックされ、正常ならばキャリーフラグCY=0とし、異常ならばキャリーフラグCY=1にする(ST75)。サウンドNOのチェックには、図5に示す参照テーブルSNDTBLを参照する処理も含まれており、サウンドNOに対応する参照テーブルSNDTBLの該当番地の内容がゼロであれば、ADPCMデータは存在しないことから、異常としてキャリーフラグCY=1とされる。
ステップST75の処理が終われば、次に、キャリーフラグCYの値に基づいてサウンドNOの値が異常か否かが判定され(ST76)、正常ならば当該サウンドNOを再生する際のサンプリング周波数を取得する(ST77)。詳細には、図11(a)に示す通りであり、背景音(BGM)用と効果音(SE)用に確保されているサウンド制御用の作業テーブルSNDCTBL(図11(b)、図13)のうち、何れを使用するかを決定し(ST80)、何れか一方の作業テーブルSNDCTBLの該当欄にサウンドNOを格納する(ST81)。なお、背景音(BGM)用と効果音(SE)用のサウンド制御用作業テーブルSNDCTBLのうち、いずれを使用すべきかはサウンドNOから特定できる。すなわち、図5(b)(c)に示すように、サウンドNOからそれがBGM音に関するものであるか、SE音に関するものであるか特定できるようになっており(BGM1+2番地、SE1+2番地を参照)、以降の処理も含め、特定された一方のサウンド制御用作業テーブルSNDCTBLが使用される。
ステップST81の処理が終われば、サウンドNOに対応する音声データ(ADPCMデータ)が格納されている位置を特定して、そのヘッダー情報から音声データの開始番地や終了番地などの情報を、サウンド制御用作業テーブルSNDCTBLの該当欄に格納する(ST82)。また、音声データのヘッダー情報からサウンドフラグ(BGM/SE)と、繰返し再生LOOPの有無の情報と、サンプリング周波数とを取得して、サウンド制御用作業テーブルSNDCTBLの該当欄に格納する(ST83)。そして最後に、データチェック処理を行うが(ST84)、その処理内容は、図12のフローチャートに記載の通りであり、図6のステップST6に関する処理と同一である。
図14は、音声出力用の割込み処理(TPU16のCH0の内部割込み)を説明するフローチャートである。例えば、図6ステップST14の処理によって、サンプリング周波数8KHzの音声データを再現するべく指示された場合には、125μS毎にこのCH0の割込み処理が実行され、またサンプリング周波数16KHzの音声データを再現すべき場合には、62.5μS毎にCH0の割込み処理が実行される。なお、この内部割込みは、禁止(マスク)可能な割込みであるから、CPUがEI状態であることを条件に受け付けられることになり(ST5参照)、要するに、無限ループ処理(主としてST5〜ST11)を一巡することが実行の条件となる。
以上を踏まえて図14について説明する。音声出力割込み(SND_INT)では、先ず、SNDDATA番地の内容をD/Aコンバータ18に出力する(STOUT1)。SNDDATA番地には、先の割込み処理(SND_INT)におけるステップSTOUT11の処理によってSE音とBGM音のミキシングされたPCMデータ(8ビット長)が格納されているので、そのPCMデータをD/Aコンバータ18に出力することになる。なお、D/Aコンバータ18では、受けたPCMデータをアナログ信号に変換して出力する。
次に、背景音BGM用のSNDFLG番地(図13)の内容を参照する(STOUT2)。そして、SNDFLG番地の格納値が00Hであれば、ステップSTOUT3〜5の処理をスキップする。一方、00H以外の値であれば、サウンド制御用(BGM)の作業テーブルSNDCTBLのSNDADR番地に記憶されているアドレス値を取得して圧縮音声データ(ADPCMデータ)を取得し(STOUT3)、また、SNDADR番地に記憶されているアドレス値(サウンドデータ変換中のデータのアドレス)を次のアドレス値に更新する(STOUT4)。なお、更新後のアドレス値が最終アドレス値を越えた場合には、破線部に示すように、SNDFLG番地に00Hを格納する処理を含んだ無音処理を実行する。
次に、ステップSTOUT3の処理で取得したADPCMデータをPCMデータ(背景音BGM)に変換して一時記憶する(STOUT5)。この実施例では8ビットのPCMデータが4ビットのADPCMデータに圧縮されているので、その復元を行い一時記憶する。
以上の処理によって背景音(BGM)が復元できたので、次に、効果音SE用のSNDFLG番地(図13)の内容を参照する(STOUT6)。そして、SNDFLG番地の格納値が00Hであれば、背景音BGM、又は、背景音BGM及び効果音SEを、無音データにしてSNDDATA番地に格納した後、ステップSTOUT12の処理に移行する(STOUT11’)。すなわち、BGM用のSNDFLGが00Hであれば、背景音BGMを無音データとし、SE用のSNDFLGが00Hであれば、効果音SEを無音データとする。したがって、次回の音声出力割込みでは、背景音BGMのみ、効果音SEのみ、或いは、完全な無音の何れかが出力されることになる(STOUT1参照)。
一方、効果音SE用のSNDFLG番地(図13)の格納値が00H以外の値であれば、効果音(SE)についての復元処理を行う。具体的には、サウンド制御用(SE)の作業テーブルSNDCTBLのSNDADRに記憶されているアドレス値を取得して圧縮音声データ(ADPCMデータ)を取得し(STOUT7)、SNDADR番地に記憶されているアドレス値(サウンドデータ変換中のデータのアドレス)を次のアドレス値に更新する(STOUT8)。
そして、更新後のアドレス値が最終アドレス値を越えた場合には、破線部に示すように、SNDFLG番地に00Hを格納する処理を含んだ無音処理を実行する。その後、ステップSTOUT7の処理で取得したADPCMデータをPCMデータ(効果音SE)変換した後(STOUT9)、一時記憶されている背景音BGMとミキシングして(STOUT10)、そのミキシング音を作業領域SNDDATA(不図示)に格納する(STOUT11)。なお、このミキシング音は、次回の音声割込み時にD/Aコンバータに出力されることになる(STOUT1参照)。
最後に、音声出力用の割込み処理が正常に終了することを示すべく、ワークエリアのフラグ値WDFLG2をオン状態にする。また、TPU16のTSR(タイマ・ステイタス・レジスタ)のTGFフラグをオン状態からオフ状態に戻して割込み処理を終える(STOUT12)。
続いて、図15を参照しつつ、主制御基板1から制御コマンドを受信するための受信割込みについて説明する。先に説明したように、主制御基板1は、制御コマンド出力時にストローブ信号STBを合わせて出力しており、そのストローブ信号の受信に起因して図15の処理が開始される。なお、この割込みも禁止(マスク)可能割込みであるから、メインルーチン(主としてST5〜ST11)の一巡を条件に受け付けられる。
受信割込みでは、コマンド入力ポート13から連続して2回データを受信し、その2回のデータが一致するか否かを先ず判定している(同一チェック)。これは、雑音などの影響でビット化けした制御コマンドデータを受信しないためであり、この同一性チェックが、7回連続でOKであることを条件に、次の受け付け処理に移行するようにしている(STIN1、STIN2)。
ステップSTIN2の判定がYesとなると、次に、今回受信した制御コマンドが、直前に受信した制御コマンドと対比され、一致する場合にはそのまま処理を終える(STIN3)。これは、主制御基板1から同一の制御コマンドが連続して出力されることがあり得ないので、何らかの誤動作であると判断して受信した制御コマンドを廃棄するのである。
一方、新規に受信した制御コマンドが、直前に受信した制御コマンドと異なる場合には、書込みポインタWR POINTの示す番地に制御コマンドを格納する(STIN4)。また、書込みポインタWR POINTの値を更新する(STIN5)。図15(b)に示すように制御コマンドを格納する受信バッファは、リングバッファ構造になっており、書込みポインタWR POINTの値は循環的に更新される。なお、受信バッファに格納された制御コマンドは、図6のステップST6の処理において読み出される。読み出し時には読出しポインタRD POINTが用いられ、この読出しポインタRD POINTも循環的に更新されて使用される。
最後に本発明が好適に適用される弾球遊技機について確認的に説明する。図20は、本実施例のパチンコ機22を示す斜視図であり、図21は、同パチンコ機22の側面図である。なお、パチンコ機21は、カード式球貸し機22に電気的に接続された状態で、パチンコホールの島構造体の長さ方向に複数個が配設されている。
図示のパチンコ機21は、島構造体に着脱可能に装着される矩形枠状の木製外枠23と、外枠23に固着されたヒンジHを介して開閉可能に枢着される前枠24とで構成されている。この前枠24には、遊技盤25が裏側から着脱自在に装着され、その前側には、ガラス扉26と前面板27とが夫々開閉自在に枢着されている。
前面板27には発射用の遊技球を貯留する上皿28が装着され、前枠24の下部には、上皿28から溢れ出し又は抜き取った遊技球を貯留する下皿29と、発射ハンドル30とが設けられている。発射ハンドル30は発射モータと連動しており、発射ハンドルの回動角度に応じて動作する打撃槌31(図23参照)によって遊技球が発射される。
上皿28の右部には、カード式球貸し機22に対する球貸し操作用の操作パネル32が設けられ、この操作パネル32には、カード残額を3桁の数字で表示するカード残額表示部32aと、所定金額分の遊技球の球貸しを指示する球貸しスイッチ32bと、ゲーム終了時にカードの返却を指令する返却スイッチ32cとが設けられている。ガラス扉26の上部には、大当り状態を示す大当りLEDランプP1が配置されている。また、この大当りLEDランプP1に近接して、補給切れ状態や下皿の満杯状態を示す異常報知LEDランプP2,P3が設けられている。
図22に示すように、遊技盤25には、金属製の外レールと内レールとからなるガイドレール33が環状に設けられ、その内側の遊技領域25aの略中央には、液晶カラーディスプレイ8が配置されている。また、遊技領域25aの適所には、図柄始動口35、大入賞口36、複数個の普通入賞口37(大入賞口36の左右に4つ)、2つの通過口であるゲート38が配設されている。これらの入賞口35〜38は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
液晶ディスプレイ8は、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この液晶ディスプレイ8は、中央部に特別図柄表示部Da〜Dcと右上部に普通図柄表示部39を有している。普通図柄表示部39は普通図柄を表示するものであり、ゲート38を通過した遊技球が検出されると、表示される普通図柄が所定時間だけ変動し、遊技球のゲート38の通過時点において抽選された抽選用乱数値により決定される停止図柄を表示して停止するようになっている。
図柄始動口35は、左右1対の開閉爪35aを備えた電動式チューリップで開閉され、普通図柄表示部39の変動後の停止図柄が当り図柄を表示した場合には、開閉爪35aが所定時間だけ開放されるようになっている。図柄始動口35に遊技球が入賞すると、特別図柄表示部Da〜Dcの表示図柄が所定時間だけ変動し、図柄始動口35への遊技球の入賞タイミングに応じた抽選結果に基づいて決定される停止図柄パターンで停止する。
大入賞口36は、前方に開放可能な開閉板36aで開閉制御されるが、特別図柄表示部Da〜Dcの図柄変動後の停止図柄が「777」などの当り図柄のとき、「大当り」と称する特別遊技が開始され、開閉板36aが開放されるようになっている。大入賞口36の内部に特定領域36bがあり、この特定領域36bを入賞球が通過すると、遊技者に有利な特別遊技が継続される。
大入賞口36の開閉板36aが開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板36aが閉じる。このとき、遊技球が特定領域36bを通過していない場合には特別遊技が終了するが、特定領域36bを通過していれば、最大で例えば15回まで特別遊技が継続され、遊技者に有利な状態に制御される。さらに、変動後の停止図柄が特別図柄のうちの一定図柄(以下、特定図柄)であった場合には、特別遊技の終了後に高確率状態に移行するという特典が付与される。
図23に示すように、前枠24の裏側には、遊技盤25を裏側から押さえる裏機構板40が着脱自在に装着されている。この裏機構板40には開口部40aが形成され、その上側に賞球タンク41と、これから延びるタンクレール42とが設けられている。裏機構板40の側部には、タンクレール42に接続された払出装置43が設けられ、裏機構板40の下側には払出装置43に接続された通路ユニット44が設けられている。払出装置43から払出された遊技球は、通路ユニット44を経由して上皿排出口28a(図20)から上皿28に払出されることになる。
裏機構板40の開口部40aには、遊技盤25の裏側に装着された裏カバー45と、入賞口35〜37に入賞した遊技球を排出する入賞球排出樋(不図示)とが嵌合されている。この裏カバー45に装着されたケースCA1の内部に主制御基板1が配設され、その前側に図柄制御基板2が配設されている(図21参照)。主制御基板1の下側で、裏カバー45に装着されたケースCA2の内部にランプ制御基板4が設けられ、隣接するケースCA3の内部に音声制御基板3が設けられている。
これらケースCA2,CA3の下側で、裏機構板40に装着されたケースCA4の内部には、電源基板6と払出制御基板5が設けられている。この電源基板6には、電源スイッチ53と初期化スイッチ54とが配置されている。これら両スイッチ53,54に対応する部位は切欠かれ、両スイッチを指で同時に操作可能になっている。発射ハンドル30の後側に装着されたケースCA5の内部には、発射制御基板7が設けられている。そして、これらの回路基板1〜7は夫々独立して構成され、電源基板6と発射制御基板7を除く制御基板2〜6には、ワンチップマイコンを備えるコンピュータ回路が搭載されている。
以上、本発明の一実施例について具体的に説明したが、本発明の遊技機は、上記した各実施例の構成に限らず適宜変更可能である。例えば、上記の実施例では、主制御基板と複数のサブ制御基板とをそれぞれ別の基板構成として、主制御基板からの制御コマンドを一方向通信によって伝送したが、例えば、図24の構成も含め、任意の組合せ構成が可能である。図24では、矢印が制御コマンドなどの信号の伝送方向を示しており、例えば、図24(b)のように、確認信号(ACK)を返送するようにしても良い。また、音声制御基板を独立した回路基板に構成する必要はなく、図24(b)(c)のように、他の制御部との複合基板としても良い。