実施の形態1.
以下、本発明の一実施形態を図面を参照して説明する。まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機を正面からみた正面図である。なお、以下の実施の形態では、パチンコ遊技機を例に説明を行うが、本発明による遊技機はパチンコ遊技機に限られず、スロット機などの他の遊技機に適用することもできる。
パチンコ遊技機1は、縦長の方形状に形成された外枠(図示せず)と、外枠の内側に開閉可能に取り付けられた遊技枠とで構成される。また、パチンコ遊技機1は、遊技枠に開閉可能に設けられている額縁状に形成されたガラス扉枠2を有する。遊技枠は、外枠に対して開閉自在に設置される前面枠(図示せず)と、機構部品等が取り付けられる機構板と、それらに取り付けられる種々の部品(後述する遊技盤を除く。)とを含む構造体である。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿(上皿)3がある。打球供給皿3の下部には、打球供給皿3に収容しきれない遊技球を貯留する余剰球受皿4が設けられている。ガラス扉枠2の背面には、遊技盤6が着脱可能に取り付けられている。なお、遊技盤6は、それを構成する板状体と、その板状体に取り付けられた種々の部品とを含む構造体である。また、遊技盤6の前面には遊技領域7が形成されている。
また、打球供給皿3の下部には、打球発射装置が遊技球を発射する速さ(すなわち、遊技球を弾くバネの強さ)を調整する打球操作ハンドル(操作ノブ)5が設けられている。遊技者は、操作ノブ5を回転させることにより、打球発射装置から発射される遊技球の勢いを調整することが可能となる。具体的には、操作ノブ5を右に回転させていくことにより、打球発射装置から発射される遊技球の速さが徐々に増していき、所定の速さを超えると、発射された遊技球は打球レールを通って上方より遊技領域7の左側領域に入る。さらに操作ノブ5を右に回転させていくと、発射された遊技球は上方より遊技領域7の右側領域に入る。
遊技領域7の中央付近には、各々を識別可能な複数種類の演出用の飾り図柄を可変表示する複数の可変表示部を含む可変表示装置(飾り図柄表示装置)9が設けられている。可変表示装置9には、例えば「左」、「中」、「右」の3つの可変表示部(図柄表示エリア)がある。飾り図柄の可変表示を行う可変表示装置9は、図柄制御基板に搭載されている図柄制御用マイクロコンピュータによって制御される。
また、可変表示装置9には、始動入賞口14に入った有効入賞球数すなわち始動記憶数を表示する4つの飾り図柄始動記憶表示エリア(始動記憶表示エリア)18が設けられている。有効始動入賞がある毎に、表示色が変化する(例えば青色表示から赤色表示に変化)始動記憶表示エリアを1増やす。そして、可変表示装置9の可変表示が開始される毎に、表示色が変化している始動記憶数表示エリアを1減らす(すなわち表示色をもとに戻す)。この例では、図柄表示エリアと始動記憶表示エリアとが区分けされて設けられているので、可変表示中も始動記憶数が表示された状態にすることができる。なお、始動記憶表示エリアを図柄表示エリアの一部に設けるようにしてもよい。また、可変表示中は始動記憶数の表示を中断するようにしてもよい。また、この例では、始動記憶数の上限を4としているが、4以上であっても4以下であってもよい。なお、図1には示されていないが、特別図柄の始動記憶数を表示する表示器(特別図柄始動記憶表示器)が遊技領域7の所定位置に設けられているものとする。特別図柄始動記憶表示器は、4つのランプの点灯個数によって特別図柄の始動記憶数を表示するものであって、後述する遊技制御基板(主基板)に搭載された遊技制御用マイクロコンピュータによって表示制御される。
可変表示装置9の上部には、識別情報としての特別図柄を可変表示する特別図柄表示器(特別図柄表示装置)8が設けられている。この実施の形態では、特別図柄表示器8は、例えば0〜9の数字を可変表示可能な簡易で小型の表示器(例えば7セグメントLED)で実現されている。特別図柄表示器8は、遊技者に特定の停止図柄を把握しづらくさせるために、0〜99など、より多種類の数字を可変表示するように構成されていてもよい。また、可変表示装置9は、特別図柄表示器8による特別図柄の可変表示期間中に、装飾用(演出用)の図柄としての飾り図柄の可変表示を行う。すなわち、特別図柄表示器8における特別図柄の可変表示と可変表示装置9における飾り図柄の可変表示とは同期している。同期とは、図柄の変動開始時と変動終了時が同じであることをいう。
可変表示装置9の下方には、始動入賞口14としての可変入賞球装置15が設けられている。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。また、始動入賞口14の下部には開閉動作を行う可変入賞球装置15が設けられている。可変入賞球装置15は、ソレノイド16(図2参照)によって開状態とされる。
可変入賞球装置15の下部の左側には、特定遊技状態(大当り遊技状態)においてソレノイド241によって開状態とされる開閉板201が設けられている。また、可変入賞球装置15の下部の右側には、特定遊技状態においてソレノイド242によって開状態とされる開閉板202が設けられている。開閉可能な2つの開閉板201,202によって2つの大入賞口(特別可変入賞球装置)が形成される。左側の大入賞口を第1大入賞口といい、右側の大入賞口を第2大入賞口という。第1大入賞口に入賞し遊技盤6の背面に導かれた入賞球はカウントスイッチ231で検出される。同様に、第2大入賞口に入賞し遊技盤6の背面に導かれた入賞球はカウントスイッチ232で検出される。
この実施の形態では、大当り遊技中に第1大入賞口および第2大入賞口のいずれか一方が所定回数開放される。具体的には、大当りの種別として、大入賞口が2回開放される2ラウンドの大当りと、大入賞口が7回開放される7ラウンドの大当りと、大入賞口が15回開放される15ラウンドの大当りとが設けられている。そして、この実施の形態では、2ラウンドの大当りのときに第2大入賞口(右側の大入賞口)が開放され、7ラウンドの大当りのときに第1大入賞口(左側の大入賞口)が開放され、15ラウンドの大当りのときに第2大入賞口(右側の大入賞口)が開放される。
第1大入賞口(左側の開閉板201)の左方には、第1大入賞口が最初に開放される前に、大当り遊技において第1大入賞口を開放することを遊技者に報知するための第1大入賞口表示灯38が設けられている。また、第2大入賞口(右側の開閉板202)の右方には、第2大入賞口が最初に開放される前に、大当り遊技において第2大入賞口を開放することを遊技者に報知するための第2大入賞口表示灯39が設けられている。遊技者は、第1大入賞口表示灯38が点灯することによって第1大入賞口が開放されることを認識し、第2大入賞口表示灯39が点灯することによって第2大入賞口が開放されることを認識することができる。これにより、遊技者がいずれの大入賞口(特別可変入賞装置)が開放状態になるかについて認識できずに不利益を受けてしまうのを防止することができる。
ゲート32に遊技球が入賞しゲートスイッチ32aで検出されると、普通図柄表示器10の表示の可変表示が開始される。この実施の形態では、左右のランプ(点灯時に図柄が視認可能になる)が交互に点灯することによって可変表示が行われ、例えば、可変表示の終了時に左側のランプ(○)が点灯すれば当たりとなり、右側のランプ(×)が点灯すればはずれとなる。そして、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になる。普通図柄表示器10の近傍には、ゲート32に入った入賞球数を表示する4つのLEDによる表示部を有する普通図柄始動記憶表示器41が設けられている。ゲート32への入賞がある毎に、普通図柄始動記憶表示器41は点灯するLEDを1増やす。そして、普通図柄表示器10の可変表示が開始される毎に、点灯するLEDを1減らす。
遊技盤6には、複数の入賞口29,30が設けられ、遊技球の入賞口29,30への入賞は、それぞれ入賞口スイッチ29a,30aによって検出される。各入賞口29,30は、遊技媒体を受け入れて入賞を許容する領域として遊技盤6に設けられる入賞領域を構成している。なお、始動入賞口14や大入賞口も、遊技媒体を受け入れて入賞を許容する入賞領域を構成する。
遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった遊技球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cは、遊技機に設けられている装飾発光体の一例である。
そして、この例では、左枠ランプ28bの近傍に、賞球払出中に点灯する賞球LED51が設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れLED52が設けられている。上記のように、この実施の形態のパチンコ遊技機1には、発光体としてのランプやLEDが各所に設けられている。さらに、プリペイドカードが挿入されることによって球貸しを可能にするプリペイドカードユニット(以下、カードユニットという。)が、パチンコ遊技機1に隣接して設置される(図示せず)。
この実施の形態では、打球供給皿(上皿)3の表面に、遊技者が操作可能な操作手段としてのボタン300が設けられている。このボタン300は、後述する予告演出(図94参照)の実行中に遊技者によって操作される。なお、この実施の形態において、ボタン300のことをチャンスボタンと呼んでいる。チャンスボタン300が遊技者によって押されると、電極が接触することによりオン状態になって、オン信号(検出信号)が基板上に搭載されているマイクロコンピュータ(この実施の形態では図柄制御基板80aに搭載されている図柄制御用マイクロコンピュータ100a:図3参照)に出力される。なお、図1に示す例では、チャンスボタン300は打球供給皿3の表面に設けられているが、他の箇所(例えば打球操作ハンドル5の真上など)に設けられていてもよい。
打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。遊技球が始動入賞口14に入り始動口スイッチ14aで検出されると、図柄の可変表示を開始できる状態であれば、特別図柄表示器8において特別図柄の可変表示(変動)を開始するとともに、可変表示装置9において飾り図柄の可変表示(変動)を開始する。図柄の可変表示を開始できる状態でなければ、始動記憶数が4(上限値)に達していないことを条件に、始動記憶数を1増やす(つまり、始動記憶表示エリアを1増やす)。
特別図柄表示器8における特別図柄および可変表示装置9における飾り図柄の可変表示は、一定時間が経過したときに停止する。停止時の特別図柄が大当り図柄(特定表示結果)であると、大当り遊技状態(特定遊技状態)に移行する。すなわち、開閉板201,202のいずれか一方が、一定時間経過するまで、または、所定個数(例えば10個)の遊技球が入賞するまで開放する。開閉板201,202のいずれか一方が開放されてから一定期間経過するまで、または、所定個数の打球が入賞するまでが大当り遊技状態における1ラウンドである。所定個数の遊技球が大入賞口に入賞すると、または大入賞口が開放されてから一定期間経過すると、継続権が発生し特別可変入賞球装置の開放が再度行われる。上述したように、継続権の発生は、大当りの種別に応じて所定回数(例えば、2ラウンド、7ラウンド、15ラウンド)許容される。なお、大入賞口にV入賞領域を設け、大入賞口の開放中に打球がV入賞領域に入賞したことを条件に、継続権が発生するようにしてもよい。
この実施の形態では、特別図柄の停止図柄が大当り図柄になると決定されたときには、その後に大当りの種別が決定される。大当りの種別としては、上述したように、2ラウンドの大当りと、7ラウンドの大当りと、15ラウンドの大当りとが設けられているが、さらに、大当り遊技の終了後の遊技状態に応じて、確変大当りと、時短大当りと、通常大当りとが設けられている。確変大当りは、大当り遊技の終了後に遊技状態が確変状態(次に大当りとなる確率が通常遊技状態および時短状態よりも高い確率変動状態(高確率状態ともいう))に移行する大当りである。時短大当りは、大当り遊技の終了後に遊技状態が時短状態(特別図柄および飾り図柄の変動時間が短縮される時間短縮状態)に移行する大当りである。通常大当りは、大当り遊技の終了後に遊技状態が(大当り遊技の開始前に遊技状態が確変状態でない場合に限り)通常遊技状態に移行する大当りである。具体的に、この実施の形態では、2ラウンドの確変大当り、2ラウンドの時短大当り、7ラウンドの通常大当り、15ラウンドの通常大当り、15ラウンドの確変大当り、および15ラウンドの時短大当りが設けられている。
大当りの種別として確変大当りになると決定された場合は、大当り遊技の終了後に確変状態(遊技者にとって有利な特別遊技状態の一例)に制御される。特別遊技状態としての確変状態では、上述したように、特別図柄表示器8において可変表示される特別図柄の停止図柄が大当り図柄(特定表示結果:例えば、0〜9のうちの奇数)になる確率が通常状態および時短状態より高められる。また、この実施の形態では、大当り終了後の特別図柄の変動回数が所定回数(100回)になるまで、普通図柄表示器10において、停止図柄が当り図柄になる確率が通常状態より高められるとともに、可変入賞球装置15における開放時間と開放回数とのうちの一方または双方が通常状態よりも高められ、遊技者にとってさらに有利な状態になる。さらに、この実施の形態では、大当り終了後の特別図柄の変動回数が所定回数(100回)になるまで、特別図柄表示器8における特別図柄の可変表示時間(変動時間)が通常遊技状態よりも短縮される。その場合には、頻繁に特別図柄の可変表示が実行されるようになる。
なお、確変状態において、大当り終了後の特別図柄の変動回数が所定回数(100回)になるまで、普通図柄表示器10における普通図柄の可変表示時間(変動時間)が通常状態よりも短縮されるようにしてもよい。その場合には、始動入賞口14への始動入賞が起こりやすくなり、所定期間内での特別図柄表示器8における特別図柄の可変表示回数が増加して特別図柄が大当り図柄になる可能性が通常状態よりも高まり、遊技者にとってさらに有利な状態になる。
大当りの種別として時短大当りになると決定された場合は、大当り遊技の終了後に時短状態(遊技者にとって有利な特別遊技状態の一例)に制御される。特別遊技状態としての時短状態では、上述したように、大当りが発生する確率は高くならないが、特別図柄の可変表示時間(変動時間)が通常遊技状態よりも短縮される。このように、特別図柄の可変表示時間が短縮されることにより、頻繁に特別図柄の可変表示が実行されるようになり、所定時間当たりの大当り発生の可能性が高まる。さらに、時短状態では、普通図柄表示器10において、停止図柄が当り図柄になる確率が通常状態より高められるとともに、可変入賞球装置15における開放時間と開放回数とのうちの一方または双方が通常状態よりも高められ、遊技者にとってさらに有利な状態になる。
なお、時短状態において、普通図柄表示器10における普通図柄の可変表示時間(変動時間)が通常遊技状態よりも短縮されるようにしてもよい。その場合には、可変入賞球装置15の所定時間当たりの開放回数が高まり、遊技者にとってさらに有利な状態になる。なお、この実施の形態では、時短状態は、大当り終了後の特別図柄の変動回数が所定回数(100回)になるまで継続される。
次に、遊技状態の遷移について説明する。この実施の形態では、通常遊技状態または時短状態のときに確変大当りが発生すると、遊技状態が通常遊技状態または時短状態から確変状態に移行される。確変状態は、次に通常大当りまたは時短大当りが発生するまで継続される。確変状態のときに確変大当りが発生すると、その後も確変状態が継続される。ところで、確変状態のときは、上述したように、特別図柄の変動時間が短縮され、普通図柄の停止図柄が当り図柄になる確率が高められ、可変入賞球装置15における開放時間と開放回数とのうちの一方または双方が高められる特別状態となるが、このような特別状態は、大当り終了後からの特別図柄の変動回数が所定回数(100回)になるまでしか継続されない。
通常遊技状態または確変状態のときに時短大当りが発生すると、遊技状態が通常遊技状態または確変状態から時短状態に移行され、また、確変状態のときに通常大当りが発生すると、遊技状態が確変状態から時短状態に移行される。時短状態のときに時短大当りが発生すると、その後も時短状態が継続される。時短状態は、大当り終了後からの特別図柄の変動回数が所定回数(100回)になるまで継続される。時短状態のときは、確変状態のときと同様に、特別図柄の変動時間が短縮され、普通図柄の停止図柄が当り図柄になる確率が高められ、可変入賞球装置15における開放時間と開放回数とのうちの一方または双方が高められる特別状態となる。
以上のように、大当り終了後の特別図柄の変動回数が所定回数(100回)になるまでは、確変状態および時短状態のいずれのときでも特別状態となる。従って、遊技者は、確変状態または時短状態のどちらの状態に移行されたかについて特別図柄の変動時間などにもとづいて認識することができない。さらに、この実施の形態では、確変状態および時短状態のいずれのときも、大当り終了後の特別図柄の変動回数が所定回数になるまでは、可変表示装置9において通常遊技状態に制御されているときの通常の遊技演出(通常遊技演出)とは異なる態様の特別な遊技演出(特別遊技演出)が実行される。例えば、画面の背景や色が通常遊技状態のときと変わったり、チャンスモードのような特別なモードの演出が実行されたりする。従って、遊技者は、確変状態または時短状態のどちらの状態に移行されたかについて可変表示装置9において実行される遊技演出の態様にもとづいて認識することができない。
確変状態のときに、大当り終了後の特別図柄の変動回数が所定回数になると、確変状態(大当りになる確率が向上された状態)は維持されるが、特別状態は終了する。特別状態が終了すると、可変表示装置9において実行される遊技演出も特別遊技演出から通常遊技演出に切り替えられる。このように、通常遊技状態や時短状態よりも高い確率で特別図柄の停止図柄として大当り図柄が決定されるが、可変表示装置9において通常遊技演出が実行される状態を高確率潜伏状態という。また、時短状態のときに、大当り終了後の特別図柄の変動回数が所定回数になると、遊技状態が時短状態から通常遊技状態に移行され、その結果、特別状態も終了する。このときも、確変状態の場合と同様に、特別状態が終了すると、可変表示装置9において実行される遊技演出も特別遊技演出から通常遊技演出に切り替えられる。
以上のように、大当り終了後の特別図柄の変動回数が所定回数になると、確変状態および時短状態のいずれのときでも特別状態が終了し、また、可変表示装置9において実行される遊技演出も特別遊技演出から通常遊技演出に切り替えられる。従って、遊技者は、高確率潜伏状態または通常遊技状態のどちらの状態に移行されたかについて特別図柄の変動時間や遊技演出の態様などにもとづいて認識することができない。よって、遊技状態がいずれの状態に移行されたかについて遊技者に興味を持たせることができる。
なお、この実施の形態では、通常大当りのときは、「1」「5」「9」のいずれかの特別図柄が導出表示され、確変状態および時短状態のときは、「3」「7」のいずれかの特別図柄が導出表示されるものとする。また、通常大当りのときは、偶数の同一飾り図柄(例えば「2」)が揃った状態で導出表示され、確変状態および時短状態のときは、奇数の同一飾り図柄(例えば「7」)が導出表示されるものとする。従って、特別図柄および飾り図柄の停止図柄によって、遊技者が大当り遊技終了後に移行される遊技状態を認識することはできない。
次に、リーチ表示態様(リーチ)について説明する。この実施の形態におけるリーチ表示態様(リーチ)とは、停止した飾り図柄が大当り図柄の一部を構成しているときに未だ停止していない飾り図柄については可変表示(変動表示)が行われていること、および全てまたは一部の飾り図柄が大当り図柄の全てまたは一部を構成しながら同期して変動表示している状態である。
例えば、可変表示装置9の左、右の表示領域には大当り図柄の一部になる飾り図柄(例えば、「7」)が停止表示されている状態で中の表示領域は未だ変動表示が行われている状態、および表示領域の全てまたは一部の図柄が大当り図柄の全てまたは一部を構成しながら同期して変動表示している状態(例えば、左、中、右の表示領域の全てに変動表示が行われ、常に同一の図柄が揃っている状態で変動表示が行われている状態)がリーチ表示態様またはリーチになる。
また、リーチの際に、通常と異なる演出がランプや音で行われる。その演出と可変表示装置9におけるリーチ表示態様とをリーチ演出という。また、リーチの際に、キャラクタ(人物等を模した演出表示であり、図柄とは異なるもの)を表示させたり、可変表示装置9の背景(図柄およびキャラクタとは異なる地の色や模様など)の表示態様(例えば、色等)を変化させたりすることがある。
図2は、遊技制御基板(主基板)の構成例を示すブロック図である。なお、図2には、遊技機に搭載されている払出制御基板37、インタフェース基板66、中継基板77、音/ランプ制御基板80bおよび図柄制御基板80aも示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する基本回路(遊技制御手段に相当)53と、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ231,232および入賞口スイッチ29a,30aからの信号を基本回路53に与える入力ドライバ回路58と、可変入賞球装置15を開閉するソレノイド16、開閉板201を開閉するソレノイド241および開閉板202を開閉するソレノイド242を基本回路53からの指令に従って駆動する出力回路59とが搭載されている。
なお、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ231,232、および入賞口スイッチ29a,30aのスイッチは、センサと称されているものでもよい。すなわち、遊技球を検出できる遊技媒体検出手段(この例では遊技球検出手段)であれば、その名称を問わない。入賞検出を行う始動口スイッチ14a、カウントスイッチ231,232、および入賞口スイッチ29a,30aの各スイッチは、入賞領域への遊技球の入賞を検出する入賞検出手段でもある。なお、ゲート32のような通過ゲートであっても、賞球の払い出しが行われるものであれば、通過ゲートへ遊技球が進入することが入賞になり、通過ゲートに設けられているスイッチ(例えばゲートスイッチ32a)が入賞検出手段になる。
基本回路53は、ゲーム制御(遊技進行制御)用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段(変動データを記憶する変動データ記憶手段)としてのRAM55、プログラムに従って制御動作を行うCPU56、およびプログラムが正常に実行されているか否かを監視するウォッチドッグタイマ(WDT)60を有する遊技制御用マイクロコンピュータ560を含む。なお、この実施の形態では、CPU56とは、基本回路53のうち、プログラムに従って動作する中央処理装置(ROM54やRAM55などの記憶手段、I/Oポート部57などを除いた部分)を指し、後述するメイン処理や割込処理(タイマ割込処理や、シリアル通信回路505からの割り込み要求による割込処理)を実行する。また、遊技制御用マイクロコンピュータ560とは、基本回路53のうち、CPU56に加えて、ROM54やRAM55などの記憶手段、ウォッチドッグタイマ60、乱数回路503、シリアル通信回路505、I/Oポート部57などを含む部分を指し、各基板(払出制御基板37や音/ランプ制御基板80b)が搭載するマイクロコンピュータと各種データの送受信を行う。
なお、本実施の形態では、「マイクロコンピュータが送受信する」等の表現を用いるが、具体的には、例えば、データ送信を行う場合、CPUがシリアル通信回路の送信データレジスタにデータをセットし、シリアル通信回路が送信データレジスタにセットされたデータを送信する。また、CPUがI/Oポート部を介してデータを送信する。また、例えば、データ受信を行う場合、受信データがシリアル通信回路の受信データレジスタに書き込まれ、CPUが受信データレジスタから受信データを読み込む。また、CPUがI/Oポート部を介してデータを受信する。
なお、本実施の形態では、遊技制御用マイクロコンピュータ560が、払出制御基板37が搭載する払出制御用マイクロコンピュータ370とシリアル通信を行う場合を説明する。
この実施の形態では、図2に示すように、遊技制御用マイクロコンピュータ560にはウォッチドッグタイマ60が内蔵されている。ウォッチドッグタイマ60は、遊技制御用マイクロコンピュータ560がプログラムを正常に実行できなくなった場合に遊技制御用マイクロコンピュータ560をリセット状態にして再起動させる。ウォッチドッグタイマ60の詳しい内容については後述する(図38参照)。なお、図2に示す例では、ウォッチドッグタイマ60は、遊技制御用マイクロコンピュータ560に内蔵されているが、遊技制御用マイクロコンピュータ560に外付けされてもよい。
この実施の形態では、ROM54、ワークメモリとしての記憶手段であるRAM55およびI/Oポート部57は遊技制御用マイクロコンピュータ560に内蔵されている。すなわち、遊技制御用マイクロコンピュータ560は、1チップマイクロコンピュータである。1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54は外付けであっても内蔵されていてもよい。
なお、遊技制御用マイクロコンピュータ560においてCPU56がROM54に格納されているプログラムに従って制御を実行するので、以下、遊技制御用マイクロコンピュータ560が実行する(または、処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているマイクロコンピュータについても同様である。また、遊技制御手段は、遊技制御用マイクロコンピュータ560を含む基本回路53で実現されている。
また、RAM55は、その一部または全部が電源基板910において作成されるバックアップ電源によってバックアップされている不揮発性記憶手段としてのバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間(バックアップ電源としてのコンデンサが放電してバックアップ電源が電力供給不能になるまで)は、RAM55の一部または全部の内容は保存される。特に、少なくとも、遊技状態すなわち遊技制御手段の制御状態に応じたデータ(特別図柄プロセスフラグ等)と未払出賞球数を示すデータは、バックアップRAMに保存される。遊技制御手段の制御状態に応じたデータとは、停電等が生じた後に復旧した場合に、そのデータにもとづいて、制御状態を停電等の発生前に復旧させるために必要なデータである。また、制御状態に応じたデータと未払出賞球数を示すデータとを遊技の進行状態を示すデータと定義する。なお、この実施の形態では、RAM55の全部が、電源バックアップされているとする。
遊技制御用マイクロコンピュータ560のリセット端子には、電源基板910からのリセット信号が入力される。また、払出制御用マイクロコンピュータのリセット端子にも、電源基板910からのリセット信号が入力される。なお、リセット信号がハイレベルになると遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータは動作可能状態になり、リセット信号がローレベルになると遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータは動作停止状態になる。従って、リセット信号がハイレベルである期間は、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータの動作を許容する許容信号が出力されていることになり、リセット信号がローレベルである期間は、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータの動作を停止させる動作停止信号が出力されていることになる。なお、リセット回路をそれぞれの制御基板(主基板31を含む)に搭載してもよいし、複数の制御基板のうちの一つまたは複数にリセット回路を搭載し、そこからリセット信号を他の制御基板に供給するようにしてもよい。
さらに、基本回路53の入力ポートには、払出制御基板37を経由して、電源基板910からの電源電圧が所定値以下に低下したことを示す電源断信号が入力される。また、基本回路53の入力ポートには、RAMの内容をクリアすることを指示するためのクリアスイッチが操作されたことを示すクリア信号が入力される。
クリア信号は、電源基板910から払出制御基板37に入力され(図39参照)、払出制御基板37において分岐され、主基板31に供給される。なお、クリア信号が、電源基板910から主基板に入力され、主基板31において分岐され、払出制御基板37にも供給されるようにしてもよい。また、遊技制御用マイクロコンピュータ560が入力ポートを介して入力したクリア信号の状態を、出力ポートを介して払出制御基板37に出力してもよい。また、電源基板910においてクリア信号を分岐して主基板31および払出制御基板37に供給するようにしてもよい。さらに、電源断信号も、電源基板910において分岐され、主基板31および払出制御基板37に供給されるようにしてもよい。
なお、この実施の形態では、払出制御用マイクロコンピュータに内蔵されているRAMも電源バックアップされている。
この実施の形態では、音/ランプ制御基板80bに搭載されている音/ランプ制御手段(音/ランプ制御用マイクロコンピュータで構成される。)が、中継基板77を介して遊技制御用マイクロコンピュータ560からの演出制御コマンドを受信し、スピーカ(音出力装置)27の音出力制御や、各ランプ25,28a,28b,28cの表示制御等を行う。また、音/ランプ制御手段は、受信した演出制御コマンドを図柄制御基板80aに搭載されている図柄制御手段(図柄制御用マイクロコンピュータで構成される。)に転送する。また、受信した演出制御コマンドにもとづいてコマンド(演出内容コマンド)を生成し、生成したコマンドを図柄制御手段に送信する。図柄制御手段は、音/ランプ制御手段からのコマンドを受信し、飾り図柄を可変表示する可変表示装置9の表示制御を行う。このように、この実施の形態では、スピーカ27の音出力制御や、各ランプ25,28a,28b,28cの表示制御、可変表示装置9の表示制御が行われることによって、各種の遊技演出が実行される。
また、この実施の形態では、払出制御基板37に搭載されている払出制御手段(払出制御用マイクロコンピュータ370で構成される。)が、遊技制御用マイクロコンピュータ560からの賞球コマンドを受信し、球払出装置97に駆動信号を出力して球払出装置97に払出モータを回転させることにより、賞球の払出処理を実行させる。
図3は、中継基板、音/ランプ制御基板および図柄制御基板の回路構成例を示すブロック図である。図3に示すように、音/ランプ制御基板80bは、音/ランプ制御用CPU101bおよびRAMを含む音/ランプ制御用マイクロコンピュータ100bを搭載している。なお、RAMは外付けであってもよい。音/ランプ制御基板80bにおいて、音/ランプ制御用マイクロコンピュータ100bは、内蔵または外付けのROM(図示せず)に格納されたプログラムに従って動作し、中継基板77を介して入力される主基板31からのストローブ信号(演出制御INT信号)に応じて、入力ドライバ102および入力ポート103を介して演出制御コマンドを受信する。
演出制御コマンドおよび演出制御INT信号は、音/ランプ制御基板80bにおいて、まず、入力ドライバ102に入力する。入力ドライバ102は、中継基板77から入力された信号を音/ランプ制御基板80bの内部に向かう方向にしか通過させない(音/ランプ制御基板80bの内部から中継基板77への方向には信号を通過させない)信号方向規制手段としての単方向性回路でもある。
中継基板77には、主基板31から入力された信号を音/ランプ制御基板80bに向かう方向にしか通過させない(音/ランプ制御基板80bから中継基板77への方向には信号を通過させない)信号方向規制手段としての単方向性回路が搭載されている。単方向性回路として、例えばダイオードやトランジスタが使用される。図3には、ダイオードが例示されている。また、単方向性回路は、各信号毎に設けられる。
音/ランプ制御用マイクロコンピュータ100bは、ランプドライバ352に対してランプを駆動する信号を出力する。ランプドライバ352は、ランプを駆動する信号を増幅して天枠ランプ28a、左枠ランプ28b、右枠ランプ28c、ボタンランプ130などの枠側に設けられている各ランプに供給する。また、枠側に設けられている装飾ランプ25に供給する。
また、音/ランプ制御用マイクロコンピュータ100bは、音声合成用IC173に対して音番号データを出力する。音声合成用IC173は、音番号データに応じた音声や効果音を発生し増幅回路175に出力する。増幅回路175は、音声合成用IC173の出力レベルを、ボリューム176で設定されている音量に応じたレベルに増幅した音声信号をスピーカ27に出力する。音声データROM174には、音番号データに応じた制御データが格納されている。音番号データに応じた制御データは、所定期間(例えば飾り図柄の変動期間)における効果音または音声の出力態様を時系列的に示すデータの集まりである。
なお、ランプを駆動する信号および音番号データは、音/ランプ制御用マイクロコンピュータ100bとランプドライバ352および音声合成IC173との間で、双方向通信(信号受信側から送信側に応答信号を送信するような通信)によって伝達される。
また、音/ランプ制御用マイクロコンピュータ100bは、受信した演出制御コマンドを入出力ポート104を介して図柄制御基板80aに転送するとともに、受信した演出制御コマンドにもとづいてコマンドを生成し、生成したコマンドを入出力ポート104を介して図柄制御基板80aに送信する。
図3に示すように、図柄制御基板80aは、図柄制御用CPU101aおよびRAMを含む図柄制御用マイクロコンピュータ100aを搭載している。なお、RAMは外付けであってもよい。図柄制御基板80aにおいて、図柄制御用マイクロコンピュータ100aは、内蔵または外付けのROM(図示せず)に格納されたプログラムに従って動作し、音/ランプ制御基板80bからのストローブ信号(図柄制御INT信号)に応じて、入出力ポート702を介してコマンドを受信する。そして、図柄制御用マイクロコンピュータ100aは、受信したコマンドにもとづいて、VDP(ビデオディスプレイプロセッサ)109に、LCDを用いた可変表示装置9の表示制御を行わせる。
すなわち、図柄制御用マイクロコンピュータ100aは、受信したコマンドに従ってVDP109に対して画像の描画指示(展開指示)を行う。VDP109は、図柄制御用マイクロコンピュータ100aからの指示にもとづいてキャラクタROM(図示せず)から必要なデータを読み出し、読み出したデータをVRAM(図示せず)に展開する。
VRAMは、VDP109によって生成された画像データを展開するためのバッファメモリである。そして、VDP109は、VRAM内(図4に示すVRAM84のアドレス空間に確保されているフレームバッファ(描画領域、展開領域ともいう。))の画像データを可変表示装置9に出力する。これによって、画像が可変表示装置9の表示画面に表示される。
また、図柄制御用マイクロコンピュータ100aは、入力ポート703を介してチャンスボタン300からのオン信号を入力する。後述するように、図柄制御用マイクロコンピュータ100aは、チャンスボタン300からのオン信号に応じて可変表示装置9の表示制御を実行する。なお、この実施の形態では、チャンスボタン300からのオン信号は、図柄制御用マイクロコンピュータ100aに出力されるように構成されているが、音/ランプ制御用マイクロコンピュータ100bに出力されるように構成されていてもよい。この場合、図柄制御用マイクロコンピュータ100aにチャンスボタン300のオンに応じた可変表示装置9の表示制御を実行させるために、音/ランプ制御用マイクロコンピュータ100bは、チャンスボタン300からのオン信号の入力に応じて、チャンスボタン300のオンを示す信号(コマンド)を図柄制御用マイクロコンピュータ100aに出力するように構成される。
図4は、図柄制御基板80における画像表示制御に関わる部分の回路構成例を示すブロック図である。上述したように、可変表示装置9(液晶表示装置:LCD)の表示制御を実行する際に、図柄制御用CPU101aは、演出制御コマンドに応じた指令をVDP109に与える。なお、VDP109のことをGCL(Graphics Controller LSI)ともいう。VDP109は、CGROM83から必要なデータを読み出す。なお、CGROM83には、図柄や使用頻度の高いキャラクタ、背景などの画像データや、使用頻度の低いキャラクタの画像データなどが格納されている。CGROM83に格納されている使用頻度の高いキャラクタとは、例えば、可変表示装置9に表示される人物、動物、または、文字、図形もしくは記号等からなる画像である。なお、キャラクタには、実写による動画像(映像)や静止画像も含まれる。
VDP109は、入力したデータに従って可変表示装置9に表示するための画像データを生成し、R(赤),G(緑),B(青)信号および同期信号を可変表示装置9に出力する。可変表示装置9は、例えば、多数の画素(ピクセル)を用いたドットマトリクス方式による画面表示を行う。この実施の形態では、R,G,B信号がそれぞれ8ビットで表される。したがって、可変表示装置9は、VDP109からの指示に従って、R,G,Bそれぞれが256階調であり、約1670万色の多色表示を行うことができる。なお、R,G,B信号のビット数は8ビット以外のビット数であってもよく、また、R,G,B信号の各ビット数が互いに異なる数であってもよい。
図柄制御基板80aには、CGROM83やVRAM(SDRAM)84等の各種の記憶媒体が備えられている。VRAM84には、フレームバッファ、キャラクタのソースデータ、表示色の特定や変更等のために用いられるパレットデータ等の表示画像に関するデータが格納される。ソースデータは画像データであり、元画像のデータという意味で、ソースデータと表現する。
VDP109は、所定のパレットデータを一時的に保存するためなどに用いられるパレットデータバッファ85や、所定のCGデータを一時的に保存するためなどに用いられるCGデータバッファ86等の各種の記憶媒体の他、描画制御部91と、フレームバッファに書き込まれた画像データにもとづいて可変表示装置9に信号を出力するための表示信号制御部87と、ディジタル信号をアナログ信号に変換するDAC(ディジタルアナログコンバータ)88と、動画圧縮処理や伸張処理を行う動画圧縮伸張部89とを含む。描画制御部91は、例えば、アトリビュート解析部、VRAMアドレス生成部、クリッピング部および半透明輝度変調部を含む。アトリビュート解析部は、キャラクタを描画する際に使用されるパラメータの解析を行う。パラメータには、画像の描画順序、色数、拡大縮小率、パレット番号、座標等を指定するための情報が設定されている。なお、動画圧縮伸張部89は、VDP109によって制御されるように構成しても、図柄制御用CPU101aによって制御されるように構成してもよい。
VDP109の内部には、CGバスとVRAMバスとが設けられている。CGROM83とCGバスとの間には、CGバスインタフェース(CGバスI/F)93が設置されている。CGバスにはCPUI/F92も接続され、図柄制御用CPU101aは、CPUI/F92を介して、CGバスに接続されている部分をアクセスすることができる。具体的には、図柄制御用CPU101aは、CGバスに接続されている描画制御レジスタ95をアクセスすることができる。描画制御レジスタ95には、描画制御部91に対する図柄制御用CPU101aからの指令等が格納される。また、VRAM84とVRAMバスとの間にはVRAMI/F94が設置されている。なお、動画伸張部89は、VRAMバスを介してVRAM84をアクセスできるとともに、CGバスを介して描画制御レジスタ95をアクセスすることができる。
図5は、主基板31における回路構成および主基板31から音/ランプ制御基板80に送信される演出制御コマンドの信号線を示すブロック図である。図5に示すように、この実施の形態では、主基板31に搭載されている遊技制御用マイクロコンピュータ560は、演出制御信号送信用の8本の信号線CD0〜CD7を用いて、演出制御コマンドを音/ランプ制御基板80bに送信する。また、主基板31と音/ランプ制御基板80bとの間には、ストローブ信号を送受するための演出制御INT信号の信号線も配線されている。
主基板31には、図5に示すように、始動口スイッチ14aからの配線が接続されている。また、主基板31には、2つの大入賞口やその他の入賞口への遊技球の入賞等を検出するための各種スイッチ29a,30aからの配線も接続されている。さらに、主基板31には、可変入賞球装置15を開閉するソレノイド16および開閉板201,202を開閉するソレノイド241,242への配線が接続されている。
主基板31は、遊技制御用マイクロコンピュータ560、入力ドライバ回路58および出力回路59を搭載する。遊技制御用マイクロコンピュータ560は、クロック回路501、システムリセット手段として機能するリセット/割込みコントローラ502、乱数回路503a,503b、ゲーム制御用のプログラム等を記憶するROM54、ワークメモリとして使用されるRAM55、プログラムに従って動作するCPU56、CPU56に割込要求信号(タイマ割込による割込要求信号)を送出するCTC504、払出制御基板37などが備えるマイクロコンピュータと非同期シリアル通信を行うシリアル通信回路505およびI/Oポート部57を内蔵する。なお、図5には示されていないが、遊技制御用マイクロコンピュータ560には、ウォッチドッグタイマ60も内蔵されている。
なお、この実施の形態では、シリアル通信回路505を内蔵するマイクロコンピュータを搭載した基板(例えば、主基板31)とは異なる基板(例えば、払出制御基板37)のマイクロコンピュータとの通信にシリアル通信回路505を用いる場合を説明するが、シリアル通信回路505は、シリアル通信回路505を内蔵するマイクロコンピュータを搭載した基板が備える別のマイクロコンピュータとシリアル通信を行ってもよい。例えば、同じ構成の2つのマイクロコンピュータが同じ基板に搭載されている場合に、各マイクロコンピュータが内蔵するシリアル通信回路が相互にシリアル通信を行ってもよい。
クロック回路501は、システムクロック信号を27(=128)分周して生成した所定の周期の基準クロック信号CLKを、各乱数回路503a,503bに出力する。リセット/割込みコントローラ502は、ローレベルの信号が一定期間入力されたとき、CPU56および各乱数回路503a,503bに所定の初期化信号を出力して、遊技制御用マイクロコンピュータ560をシステムリセットする。
また、この実施の形態では、図5に示すように、遊技制御用マイクロコンピュータ560は、発生可能な乱数の値の範囲が異なる2つの乱数回路503a,503bを搭載する。乱数回路503aは、12ビットの疑似乱数を発生する乱数回路(以下、12ビット乱数回路ともいう)である。12ビット乱数回路503aは、12ビットで発生できる範囲(すなわち、0から4095までの範囲)の値の乱数を発生する機能を備える。また、乱数回路503bは、16ビットの疑似乱数を発生する乱数回路(以下、16ビット乱数回路ともいう)である。16ビット乱数回路503bは、16ビットで発生できる範囲(すなわち、0から65535までの範囲)の値の乱数を発生する機能を備える。なお、この実施の形態では、遊技制御用マイクロコンピュータ560が2つの乱数回路を内蔵する場合を説明するが、遊技制御用マイクロコンピュータ560は、3以上の乱数回路を内蔵してもよい。また、この実施の形態では、12ビット乱数回路503aおよび16ビット乱数回路503bを包括的に表現する場合、または、12ビット乱数回路503aと16ビット乱数回路503bとのうちいずれかを指す場合に、乱数回路503という。
次に、乱数回路503の構成について説明する。図6は、乱数回路503の構成例を示すブロック図である。なお、この実施の形態において、12ビット乱数回路503aと16ビット乱数回路503bとの基本的な構成は同じである。図6に示すように、乱数回路503は、カウンタ521、比較器522、カウント値順列変更回路523、クロック信号出力回路524、カウント値更新信号出力回路525、乱数値読取信号出力回路526、乱数更新方式選択信号出力回路527、セレクタ528、乱数回路起動信号出力回路530、乱数値記憶回路531、反転回路532、ラッチ信号生成回路533およびタイマ回路534とを含む。
この実施の形態では、乱数回路503は、複数種類の識別情報の可変表示の表示結果を特定の表示結果とするか否か(すなわち、特別図柄表示器8の特別図柄の停止図柄を大当り図柄とするか否か)を判定するための大当り判定用の乱数を発生する。そして、遊技制御用マイクロコンピュータ560のCPU56は、乱数回路503が発生した乱数にもとづいて特定の表示結果にすると判定すると、遊技状態を遊技者にとって有利な特定遊技状態(大当り遊技状態)に移行させる。
カウンタ521は、セレクタ528によって選択された所定の信号を入力し、セレクタ528から入力する信号に応答してカウント値Cを出力する。この場合、カウンタ521は、所定の初期値を入力し、カウント値Cを一定の規則に従って初期値から所定の最終値まで循環的に更新して出力する。また、カウンタ521は、カウント値Cを最終値まで更新すると、カウント値Cを最終値まで更新した旨を示す通知信号をCPU56に出力する。この実施の形態では、カウンタ521から通知信号が出力されると、CPU56によって初期値が更新される。
この実施の形態において、カウンタ521は、セレクタ528から信号を入力するごとに(セレクタ528からの信号における立ち上がりエッヂが入力されるごとに)、カウント値Cを「0」から「4095」まで1ずつカウントアップする。また、カウンタ521は、カウント値Cを「4095」までカウントアップすると、カウント値Cを最終値まで更新した旨を示す通知信号をCPU56に出力する。すると、CPU56は、カウンタ521から通知信号を入力し、初期値を更新する。そして、カウンタ521は、CPU56によって更新された初期値から「4095」まで、再びカウント値Cをカウントアップする。また、「4095」までカウントアップすると、カウンタ521は、再び「0」からカウントを開始する。そして、カウンタ521は、更新後の初期値の1つ前の値(最終値)までカウントアップすると、通知信号をCPU56に出力する。なお、この実施の形態では、比較器522は、後述するように、全てのカウント値を入力すると通知信号をカウンタ521に出力する。この場合、カウンタ521は、比較器522から通知信号を入力すると、カウント値をリセットして「0」にする。
なお、比較器522は、入力したカウント値が乱数最大値設定レジスタ535に設定されている乱数最大値より大きいか否かを判断し、カウント値が乱数最大値より大きい(乱数最大値を超えた)と判断すると、通知信号をカウンタ521に出力してもよい。この場合、例えば、比較器522は、カウント値が乱数最大値を超えたと判断すると、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力する前に、通知信号をカウンタ521に出力する。例えば、乱数最大値設定レジスタ535に乱数最大値「256」が設定されている場合を考える。この場合、カウンタ521が「0」から「256」までカウントアップし、さらにカウント値「257」を出力すると、比較器522は、入力したカウント値「257」が乱数最大値「256」を超えたと判断し、カウンタ521に通知信号を出力する。比較器522から通知信号を入力すると、カウンタ521は、クロック信号出力回路524からの乱数発生用クロック信号SI1の入力を待つことなく、カウント値を「258」に更新し出力する。以上の処理を繰り返し実行することによって、比較器522は、カウント値「257」から「4095」まで入力している間、カウント値が乱数最大値を超えていると判断して、繰り返しカウンタ521に通知信号を出力する。そして、カウンタ521は、比較器522から通知信号を入力している間、クロック信号出力回路524からの乱数発生用クロック信号SI1の入力を待つことなく、カウント値を繰り返し更新し出力する。そのようにすることによって、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力するまでの間に、「257」から「4095」までカウント値を高速にカウントアップさせるように制御し、「257」から「4095」までの乱数値を読み飛ばす(乱数値記憶回路531に記憶させない)ように制御する。
カウント値順列変更回路523は、カウント値順列変更レジスタ(RSC)536、更新規則選択レジスタ(RRC)542および更新規則メモリ543を含む。カウント値順列変更レジスタ536は、カウンタ521がカウントアップするカウント値Cの更新順である順列(初期値から最終値までの並び順)を変更させるためのカウント値順列変更データ「01h」を格納する。カウント値順列変更回路523は、カウント値順列変更レジスタ536に数値順列変更データ「01h」が格納されているとき、カウンタ521がカウントアップして更新するカウント値Cの順列を、カウント値順列変更データ「01h」が格納されていないときとは異なる順列に変更する。この場合、カウント値順列変更回路523は、数値順列変更データ「01h」が格納されているとき、カウント値の順列の変更に用いる更新規則を切り換える。また、カウント値の順列の変更に用いる更新規則を切り換えた後に、カウンタ521がカウント値の更新を開始すると、カウント値順列変更レジスタ536のカウント値順列変更データは、CPU56によって、「01h」から初期値である「0(=00h)」に戻される(クリアされる)。
なお、CPU56によってカウント値順列変更データをクリアするのでなく、乱数回路503側でカウント値順列変更データをクリアするようにしてもよい。例えば、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことにもとづいて、更新規則選択レジスタ(RRC)542にレジスタ値が設定されると、カウント値順列変更回路523は、カウント値順列変更レジスタ536のレジスタ値をクリアするようにしてもよい。
図7は、更新規則選択レジスタ542の例を示す説明図である。更新規則選択レジスタ542は、カウンタ521が出力するカウント値の並び順の並べ替え(順列の変更)に用いる更新規則を設定するレジスタである。この実施の形態では、更新規則選択レジスタ542にレジスタ値が設定されることによって、カウンタ521が出力するカウント値の順列の変更に用いる更新規則が設定される。図7に示すように、更新規則選択レジスタ542は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、更新規則選択レジスタ542は、ビット0〜ビット3が書込および読出ともに可能な状態に構成されている。また、更新規則選択レジスタ542は、ビット4〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、更新規則選択レジスタ542のビット4〜ビット7に値を書き込む制御を行っても無効とされ、ビット4〜ビット7から読み出す値は全て「0(=0000b)」である。
更新規則選択レジスタ542の値(レジスタ値)は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことに応じて、レジスタ値が「0(=00h)」から「15(=0Fh)」まで循環的に更新される。すなわち、カウント値順列変更レジスタ536にカウント値順列データ「01h」が書き込まれるごとに、更新規則選択レジスタ542のレジスタ値は、「0」から「1」ずつ加算され、「15」になると再び「0」に戻る。
図8は、更新規則メモリ543の例を示す説明図である。図8に示すように、更新規則メモリ543は、更新規則選択レジスタ542の値(レジスタ値)と、カウント値の更新規則とを対応付けて格納している。図8に示す例では、例えば、更新規則選択レジスタ542にレジスタ値1が設定されている場合、更新規則Bを用いて、カウンタ521が出力するカウント値の順列が変更されることが分かる。なお、図8において、更新規則Aは、カウンタ521がカウント値Cを更新する規則と同一の更新規則であり、レジスタ値「0」に対応づけて更新規則メモリ543に格納される。また、更新規則メモリ543には、カウンタ521がカウント値Cを更新する更新規則とは異なる更新規則B〜Pが、レジスタ値「1」〜「15」に対応づけて格納される。
カウント値順列変更回路523は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれている場合、まず、カウンタ521からカウント値の最終値「4095」が最初に入力されるまで、現在設定されている更新規則に従って、そのままカウント値を出力する。そして、カウント値順列変更回路523は、カウンタ521からカウント値の最終値「4095」を入力すると、カウント値の更新規則を変更する。なお、CPU56によって初期値が変更されている場合には、カウント値順列変更回路523は、カウンタ521から変更後の最終値(初期値の1つ前の値)まで入力すると、カウント値の更新規則を変更することになる。
カウント値順列変更回路523は、更新規則選択レジスタ542のレジスタ値に対応する更新規則を更新規則メモリ543から選択し、カウント値の順列の変更に用いる更新規則として設定する。また、カウント値順列変更回路523は、カウンタ521によって再び初期値「0」から順にカウント値の更新が開始されると、設定した更新規則に従って、カウント値の初期値から最終値までの順列を変更する。なお、CPU56によって初期値が変更されている場合には、カウント値順列変更回路523は、カウンタ521によって変更後の初期値から順にカウント値の更新が開始されると、設定した更新規則に従って、カウント値の初期値から最終値までの順列を変更することになる。そして、カウント値順列変更回路523は、変更した順列に従ってカウント値を出力する。
なお、この実施の形態では、後述する乱数最大値設定レジスタ535に乱数最大値が設定されていることによって、発生させる乱数の最大値が制限されている場合、カウント値順列変更回路523は、カウント値Cを乱数最大値以下に制限して順列を変更して出力する。例えば、乱数最大値設定レジスタ535に乱数最大値「256」が設定されているものとし、カウント値順列変更回路523が、更新規則Aから更新規則Bに変更して、カウント値の順列を変更するものとする。この場合、カウント値順列変更回路523は、比較器522の乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Bに従って、カウント値の順列を「256→255→・・・→0」に変更して出力する。なお、カウント値順列変更回路523が最大値以下のカウント値を出力するのではなく、カウント値順列変更回路523はカウント値に応じた値を出力し、比較器522が最大値以上か否かを判定して、最大値以上であるときは、乱数値を読み飛ばす(乱数値記憶回路531に記憶させない)ように制御する構成であってもよい。
以上のように、カウント値順列変更回路523は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれている場合、更新規則を切り替えて用いることによって、カウント値Cの順列を変更して出力する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。
図9は、カウント値順列変更回路523が、カウンタ521が出力するカウント値の順列を変更する場合の例を示す説明図である。図9に示すように、CPU56は、所定のタイミングで、カウント値順列変更データ「01h」をカウント値順列変更レジスタ536に書き込む。すると、更新規則選択レジスタ542のレジスタ値が1加算される。例えば、更新規則選択レジスタ542のレジスタ値が「0」から「1」に更新される。レジスタ値が更新されると、カウント値順列変更回路523は、カウンタ521から最初にカウント値の最終値「4095」が入力されるまで、更新前のレジスタ値「0」に対応する「更新規則A」に従ってカウント値を更新して出力する。このとき、カウント値順列変更回路523は、更新規則Aに従って、「0→1→・・・→4095」の順列でカウント値を出力する。
カウンタ521からカウント値の最終値「4095」が入力されると、カウント値順列変更回路523は、更新規則メモリ543から、更新後のレジスタ値「1」に対応する「更新規則B」を選択して設定する。カウント値順列変更回路523は、カウンタ521から再び初期値「0」以降のカウント値の入力を開始すると、選択設定した「更新規則B」に従って、カウント値の順列を変更して出力する。本例では、カウント値順列変更回路523は、順列を「0→1→・・・→4095」から「4095→4094→・・・→0」に変更して、カウント値を出力する。
その後、カウント値順列変更レジスタ536は、後述するように、カウント値順列変更回路523が切り替え後の更新規則に従ってカウント値の更新動作を開始したことに応じてリセットされる。そして、次にカウント値順列変更データ「01h」がカウント値順列変更レジスタ536に書き込まれるまで、カウント値順列変更回路523は、「4095→4094→・・・→0」のままの順列で、カウント値を出力し続ける。
CPU56によってカウント値順列変更データ「01h」がカウント値順列変更レジスタ536に再度書き込まれると、カウント値順列変更レジスタ536のレジスタ値が「1」から「2」に更新される。そして、カウンタ521からカウント値の最終値「4095」を入力すると、カウント値順列変更回路523は、更新規則メモリ543から、レジスタ値「2」に対応する「更新規則C」を選択して設定する。カウント値順列変更回路523は、カウンタ521から再び初期値「0」以降のカウント値の入力を開始すると、選択設定した「更新規則C」に従って、カウント値の順列を更新して出力する。本例では、カウント値順列変更回路523は、順列を「4095→4094→・・・→0」から「1→3→…→4095→0→・・・→4094」に変更して、カウント値を出力する。
以上のように、カウント値順列変更レジスタ536をリセットした後、カウント値順列データ「01h」をカウント値順列変更レジスタ536に再度書き込むことによって、カウント値の順列をさらに変更することができる。
図10は、カウント値順列変更レジスタ536の例を示す説明図である。カウント値順列変更レジスタ536は、カウンタ521がカウントアップするカウント値の順列を変更させるためのカウント値順列変更データ「01h」を設定するレジスタである。図10に示すように、カウント値順列変更レジスタ536は、読出可能な8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、カウント値順列変更レジスタ536は、ビット0だけが書込および読出ともに可能な状態に構成されている。すなわち、カウント値順列変更レジスタ536は、ビット1〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、カウント値順列変更レジスタ536のビット1〜ビット7に値を書き込む制御を行っても無効とされ、ビット1〜ビット7から読み出す値は全て「0(=0000000b)」である。
なお、カウント値順列変更レジスタ536の値は、カウント値順列変更回路523が切り替え後の更新規則に従ってカウント値の更新動作を開始したことに応じて、CPU56によってリセットされる。この場合、CPU56は、カウント値順列変更レジスタ536に書き込まれている値を、カウント値順列変更データ「01h」から初期値である「0(=00h)」に戻す。
比較器522は、ランダムRの最大値(乱数最大値)を指定するための乱数最大値設定データを格納する乱数最大値設定レジスタ(RMX)535を備える。比較器522は、乱数最大値設定レジスタ535に格納されている乱数最大値設定データに示される乱数最大値に従って、カウンタ521が更新するカウント値の更新範囲を制限する。この実施の形態では、比較器522は、カウンタ521から入力するカウント値と乱数最大値設定レジスタ535に格納されている乱数最大値設定データ(例えば「00FFh」)に示される乱数最大値(例えば「256」)とを比較する。そして、比較器522は、入力したカウント値が乱数最大値以下であると判断すると、入力したカウント値を乱数値記憶回路531に出力する。
この実施の形態では、比較器522は、具体的には、以下のような制御を行う。比較器522は、カウント値の初期値更新の際に、CPU56からカウント値の初期値をもらい、初期値から乱数最大値までのカウント値の個数を求める。例えば、カウント値の初期値が「157」であり乱数最大値が「256」である場合、比較器522は、初期値から乱数最大値までのカウント値の個数を「100個」と求める。また、比較器522は、カウント値順列変更回路523からカウント値を入力するに従って、初期値からカウント値をいくつ入力したかをカウントアップする。初期値からカウント値を入力した回数が「100回」に達すると、比較器522は、初期値「157」から最大値「256」までの全てのカウント値を入力したと判断する。そして、比較器522は、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。カウント値の個数で判断することによって、カウント値順列変更回路523によってカウント値の順列が変更されている場合であっても、比較器522は、カウント値の更新範囲を乱数最大値以下に制限し、全てのカウント値を入力した際にカウンタ521に通知信号を出力することができる。
カウント値の更新範囲を比較器522が制限する動作について説明する。なお、本例では、カウント値順列変更回路523が更新規則Aを選択し、乱数最大値設定レジスタ535に乱数最大値「256」が設定されている場合を説明する。
カウンタ521が「0」から「256」までカウント値を更新している間、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Aに従って、「0」から「256」までのカウント値をそのまま比較器522に出力する。この場合、カウント値順列変更回路523は、比較器522から乱数最大値「256」の値をもらい、カウンタ521から入力するカウント値が乱数最大値より大きいか否かを判断し、更新規則が変更されているとき(例えば、更新規則B)であっても、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、「257」から「4095」までのカウント値を比較器522に出力しない。カウンタ521は、例えば、初期値が「0」と設定されているときに、最終値「256」までカウント値を更新すると、通知信号をCPU56に出力する。通知信号を出力すると、CPU56によって、カウンタ521のカウント値の初期値が変更される。本例では、CPU56によって、初期値が「50」に変更されるものとする。
なお、カウント値が乱数最大値「256」より大きいか否かをカウント値順列変更回路523が判断するのでなく、比較器522が判定するようにしてもよい。この場合、例えば、比較器522は、カウント値が乱数最大値設定レジスタ535に設定されている乱数最大値より大きいか否かを判断し、カウント値が乱数最大値より大きいと判断すると、通知信号をカウンタ521に出力する。そして、比較器522は、カウント値が乱数最大値を超えたと判断すると、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力する前に、通知信号をカウンタ521に出力する。そのようにすることによって、比較器522は、クロック信号出力回路524が次に乱数発生用クロック信号SI1を出力するまでの間に、「257」から「4095」までカウント値を高速にカウントアップさせるようにカウンタ521を制御する。そのようにすることによって、カウント値順列変更回路523からの値が「257」未満のときだけカウント値を乱数値記憶回路531に出力するようにし、カウント値順列変更回路523からの値が「257」以上のときにはカウント値を高速で更新させるようにすることができる。
更新規則Aにもとづいて、カウント値順列変更回路523から、「0」から「255」までカウント値を入力している間、比較器522は、入力するカウント値が乱数最大値「256」以下であるので、入力したカウント値をそのまま乱数値記憶回路531に出力する。次に、カウント値順列変更回路523から入力するカウント値が「256」に達すると、比較器522は、入力したカウント値を乱数値記憶回路531に出力するとともに、初期値から最大値までの全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。具体的には、比較器522は、カウント値の初期値変更の際に、CPU56からカウント値の初期値(本例では、「0」)をもらい、初期値「0」から乱数最大値(本例では、「256」)までのカウント値の個数(本例では、「257個」)を求める。そして、カウント値順列変更回路523から入力したカウント値の個数が257個に達すると、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。なお、本例では、CPU56によって初期値が「50」に変更されるので、カウンタ521は、比較器522から通知信号を入力しても、カウント値をリセットするとなく、変更後の初期値「50」からカウント値の更新を行う。
カウンタ521が変更後の初期値「50」から「256」までカウント値を更新している間、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、更新規則Aに従って、「50」から「256」までのカウント値をそのまま比較器522に出力する。また、カウント値順列変更回路523は、乱数最大値設定レジスタ535に設定されている乱数最大値「256」にもとづいて、「257」から「4095」までのカウント値を比較器522に出力せず、カウンタ521の更新するカウント値が1周したとき(257回更新したとき)に、カウント値順列変更レジスタ536にカウント値順列変更データが書き込まれた場合には、カウント値順列変更回路523は、カウント値の順列を変更して出力する。例えば、更新規則が更新規則Bに変更された場合、カウント値順列変更回路523は、カウント値の順列を「256→255→・・・→50」に変更して出力する。
カウント値順列変更回路523から、「256」から「50」までカウント値を入力している間、比較器522は、入力したカウント値をそのまま乱数値記憶回路531に出力する。次に、カウント値順列変更回路523から入力するカウント値が「50」に達すると、比較器522は、入力したカウント値を乱数値記憶回路531に出力するとともに、初期値から最大値までの全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。具体的には、比較器522は、カウント値の初期値変更の際に、CPU56からカウント値の初期値(本例では、「50」)をもらい、初期値「50」から乱数最大値(本例では、「256」)までのカウント値の個数(本例では、「207個」)を求める。そして、カウント値順列変更回路523から入力したカウント値の個数が207個に達すると、全てのカウント値を入力した旨の通知信号をカウンタ521に出力する。
なお、カウント値順列変更回路523がカウント値の順列を変更した場合であっても、比較器522は、カウント値の個数が207個に達すると、通知信号をカウンタ521に出力する。そのようにすることによって、カウント値の順列が変更された場合であっても、初期値「50」から最大値「256」までの全てのカウント値を入力したことにもとづいて、通知信号をカウンタ521に出力できる。
比較器522から通知信号を入力すると、カウンタ521は、カウント値の初期値をリセットし「0」に戻す。そして、カウンタ521は、「0」からカウント値の更新を行う。カウンタ521の値が「0」から再び更新がされると、カウンタ521からのカウント値にもとづいて、カウント値順列変更回路523は「49」〜「0」までのカウント値を比較器522に出力し、比較器522はカウント値順列変更回路523からのカウント値の入力にもとづいて乱数値記憶回路531にカウント値を出力する。そして、カウンタ521は、最終値(本例では、「49」)までカウント値を更新すると、通知信号をCPU56に出力する。通知信号を出力すると、CPU56によって、カウンタ521のカウント値の初期値が再び変更される。
以上のような動作を繰り返すことにより、比較器522は、カウンタ521に、「0」から乱数最大値「256」まで連続的にカウント値をカウントアップさせ、「0」から「256」までの値を乱数値記憶回路531にランダムR(乱数値)として記憶させる。すなわち、比較器522は、カウント値の更新範囲を乱数最大値「256」以下に制限して、カウンタ521にカウント値を更新させる。
図11は、乱数最大値設定レジスタ535の例を示す説明図である。図11(a)は、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535の例を示す。また、図11(b)は、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535の例を示す。まず、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535について説明する。図11(a)に示すように、12ビット乱数回路503aにおいて、乱数最大値設定レジスタ535は、16ビットレジスタであり、初期値が「4095(=0FFFh)」に設定されている。乱数最大値設定レジスタ535は、ビット0〜ビット11が書込および読出ともに可能な状態に構成されている。また、乱数最大値設定レジスタ535は、ビット12〜ビット15が書込および読出ともに不可能な状態に構成されている。したがって、12ビット乱数回路503aにおいて、乱数最大値設定レジスタ535のビット12〜ビット15に値を書き込む制御を行っても無効とされ、ビット12〜ビット15から読み出す値は全て「0(=0000b)」である。
また、乱数最大値設定レジスタ535に設定される乱数最大値は、所定の下限値が定められている。この実施の形態では、乱数最大値設定レジスタ535に下限値「256」より小さい値を指定する乱数最大値設定データ「0000h」〜「00FEh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「4095」を指定する乱数最大値設定データ「0FFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「256」から「4095」までであり、CPU56は、下限値「256」より小さい値が設定されていると判断すると、乱数最大値を所定値「4095」に設定しなおす。なお、CPU56は、リセット/割込みコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ535を書込不可能に制御する。なお、CPU56により書込不可能に制御するのでなく、乱数最大値設定レジスタ535は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
次に、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535について説明する。図11(b)に示すように、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、16ビットレジスタであり、初期値が「65535(=FFFFh)」に設定されている。また、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、ビット0〜ビット15の全てのビットが書込および読出ともに可能な状態に構成されている。
また、乱数最大値設定レジスタ535に下限値「512」より小さい値を指定する乱数最大値設定データ「0000h」〜「01FEh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「65535」を指定する乱数最大値設定データ「FFFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「512」から「65535」までであり、CPU56は、下限値「512」より小さい値が設定されていると判断すると、乱数最大値を所定値「65535」に設定しなおす。なお、CPU56は、リセット/割込みコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ535を書込不可能に制御する。この場合、CPU56により書込不可能に制御するのでなく、乱数最大値設定レジスタ535は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
クロック信号出力回路524は、セレクタ528および反転回路532に出力するクロック信号の周期(すなわち、カウント値の更新周期)を指定するための周期設定データを格納する周期設定レジスタ(RPS)537を備える。クロック信号出力回路524は、周期設定レジスタ537に格納されている周期設定データに基づいて、遊技制御用マイクロコンピュータ560が搭載するクロック回路501から入力する基準クロック信号CLKを分周して、乱数回路503内部で乱数値の生成に用いるクロック信号(乱数発生用クロック信号SI1)を生成する。そのようにすることによって、クロック信号出力回路524は、クロック信号を所定回数入力したことを条件に、カウント値Cを更新させるための乱数発生用クロック信号SI1をカウンタ521に出力するように動作する。なお、周期設定データとは、クロック回路501から入力した基準クロック信号CLKを何分周させるかを設定するためのデータである。また、クロック出力回路524は、生成した乱数発生用クロック信号SI1をセレクタ528および反転回路532に出力する。例えば、周期設定レジスタ537に周期設定データ「0Fh(=16)」が書き込まれている場合、クロック信号出力回路524は、クロック回路501から入力する基準クロック信号CLKを16分周して乱数発生用クロック信号SI1を生成する。この場合、クロック信号出力回路524が生成する乱数発生用クロック信号SI1の周期は、「システムクロック信号の周期×128×16」となる。
図12は、周期設定レジスタ537の例を示す説明図である。図12に示すように、周期設定レジスタ537は、8ビットレジスタであり、初期値が「256(=FFh)」に設定されている。また、周期設定レジスタ537は、書込および読出ともに可能な状態に構成されている。
また、周期設定レジスタ537に設定される周期設定データの値は、所定の下限値が定められている。この実施の形態では、周期設定レジスタ537に下限値「システムクロック信号の周期×128×7」より小さい値を指定する周期設定データ「00h〜06h」が書き込まれた場合、CPU56は、周期設定レジスタ537に下限値「システムクロック信号の周期×128×7」を指定する周期設定データ「07h」を設定しなおす。すなわち、周期設定レジスタ537に設定可能な周期は「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」までであり、CPU56は、下限値より小さい値が設定されていると判断すると、周期設定データを設定しなおす。なお、CPU56は、リセット/割込みコントローラ502によって遊技制御用マイクロコンピュータ560がシステムリセットされるまで、周期設定データが書き込まれた周期設定レジスタ537を書込不可能に制御する。なお、CPU56により書込不可能に制御するのでなく、周期設定レジスタ537は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
なお、周期設定レジスタ537に下限値としての周期設定データを設定することなく、設定された周期設定データに基づいて、例えばクロック信号出力回路524が基準クロック信号CLKをそのままカウンタ521および反転回路532に出力するようにしてもよい。この場合、CPU56は、周期設定レジスタ537に設定される周期設定データの値を下限値と比較して設定しなおす処理を行う必要がなくなる。また、カウンタ521は、クロック信号出力回路524から基準クロック信号CLKを入力する毎にカウント値Cを更新することになる。
カウント値更新信号出力回路525は、カウント値更新データ「01h」を格納するカウント値更新レジスタ(RGN)538を備える。カウント値更新データとは、カウント値の更新を要求するためのデータである。カウント値更新信号出力回路525は、カウント値更新レジスタ538にカウント値更新データ「01h」が書き込まれたことに応じて、カウント値更新信号SI3をセレクタ528に出力する。
図13は、カウント値更新レジスタ538の例を示す説明図である。図13に示すように、カウント値更新レジスタ538は、読出不能な8ビットレジスタであり、ビット0のみが書込可能な状態に構成されている。したがって、カウント値更新レジスタ538のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数値読取信号出力回路526は、乱数値取込データ「01h」を格納する乱数値取込レジスタ(RLT)539を備える。乱数値取込データとは、乱数値記憶回路531へのカウント値の取込を要求するためのデータである。乱数値読取信号出力回路526は、乱数値取込レジスタ539に乱数値取込データ「01h」が書き込まれたことに応じて、乱数値の読み取りを要求するための乱数値読取信号をラッチ信号生成回路533に出力する。
図14は、乱数値取込レジスタ539の例を示す説明図である。図14に示すように、乱数値取込レジスタ539は、読出不能な8ビットレジスタである。また、乱数値取込レジスタ539は、ビット0だけが書込可能な状態に構成されている。すなわち、乱数値取込レジスタ539のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数更新方式選択信号出力回路527は、乱数更新方式選択データを格納する乱数更新方式選択レジスタ(RTS)540を備える。乱数更新方式選択データとは、ランダムRの値を更新する方式である各乱数更新方式のうち、いずれかの乱数更新方式を指定するためのデータである。乱数更新方式選択信号出力回路527は、乱数更新方式選択レジスタ540に乱数更新方式選択データが書き込まれたことに応じて、書き込まれた乱数更新方式選択データにより指定される乱数更新方式に対応する乱数更新方式選択信号を、セレクタ528およびラッチ信号生成回路533に出力する。
図15(A)は、乱数更新方式選択レジスタ540の例を示す説明図である。図15(A)に示すように、乱数更新方式選択レジスタ540は、8ビットレジスタであり、初期値が「00h」に設定されている。また、乱数更新方式選択レジスタ540は、ビット0〜ビット1が書込および読出ともに可能な状態に構成されている。また、乱数更新方式選択レジスタ540は、ビット2〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、乱数更新方式選択レジスタ540のビット2〜ビット7に値を書き込む制御を行っても無効とされ、ビット2〜ビット7から読み出す値は全て「0(=000000b)」である。
図15(B)は、乱数更新方式選択レジスタ540に書き込まれる乱数更新方式選択データの一例の説明図である。図15(B)に示すように、乱数更新方式選択データは、2ビットのデータから構成される。乱数更新方式選択データ「01b」は、第1の乱数更新方式を指定するために用いられる。また、乱数更新方式選択データ「10b」は、第2の乱数更新方式を指定するために用いられる。なお、この実施の形態では、第1の乱数更新方式とは、カウント値更新信号出力回路525からカウント値更新信号SI3が出力されたことをトリガとして、カウント値を更新する方式である。また、第2の乱数更新方式とは、クロック信号出力回路524から乱数発生用クロック信号SI1が出力されたことをトリガとして、カウント値を更新する方式である。また、乱数更新方式選択データ「01b」または「10b」が乱数更新方式選択レジスタ540に書き込まれた場合、乱数回路503は起動可能な状態となる。一方、乱数更新方式選択データ「00b」または「11b」が乱数更新方式選択レジスタ540に書き込まれた場合、乱数回路503は起動不能な状態となる。
セレクタ528は、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3、またはクロック信号出力回路524から出力される乱数発生用クロック信号SI1のいずれかを選択してカウンタ521に出力する。セレクタ528は、乱数更新方式選択信号出力回路527から第1の乱数更新方式に対応する乱数更新方式選択信号(第1の乱数更新方式選択信号ともいう)が入力されると、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3を選択してカウンタ521に出力する。一方、セレクタ528は、乱数更新方式選択信号出力回路527から第2の乱数更新方式に対応する乱数更新方式選択信号(第2の乱数更新方式選択信号ともいう)が入力されると、クロック信号出力回路524から出力される乱数発生用クロック信号SI1を選択してカウンタ521に出力する。なお、セレクタ528は、乱数更新方式選択信号出力回路527から第1の更新方式選択信号が入力されると、カウント値更新信号出力回路525から出力されるカウント値更新信号SI3に応じて、クロック信号出力回路524から出力される乱数発生用クロック信号SI1に同期した数値データの更新を指示する数値更新指示信号を、カウンタ521に出力してもよい。
乱数回路起動信号出力回路530は、乱数回路起動データ「80h」を格納する乱数回路起動レジスタ(RST)541を備える。乱数回路起動データとは、乱数回路503の起動を要求するためのデータである。乱数回路起動信号出力回路530は、乱数回路起動レジスタ541に乱数回路起動データ「80h」が書き込まれると、所定の乱数回路起動信号をカウンタ521およびクロック信号出力回路537に出力し、カウンタ521およびクロック信号出力回路524をオンにさせる。そして、カウンタ521によるカウント値の更新動作とクロック信号出力回路524による内部クロック信号の出力動作とを開始させることによって、乱数回路503を起動させる。
図16は、乱数回路起動レジスタ541の例を示す説明図である。図16に示すように、乱数回路起動レジスタ541は、8ビットレジスタであり、初期値が「00h」に設定されている。乱数回路起動レジスタ541は、ビット7だけが書込および読出ともに可能な状態に構成されている。また、乱数回路起動レジスタ541は、ビット0〜ビット6が書込および読出ともに不可能な状態に構成されている。すなわち、乱数回路起動レジスタ541のビット0〜ビット6に値を書き込む制御を行っても無効とされ、ビット0〜ビット6から読み出す値は全て「0(=000000b)」である。
乱数値記憶回路531は、例えば16ビットレジスタであり、遊技制御処理における大当り判定において用いられる乱数であるランダムRの値を格納する。乱数値記憶回路531は、ラッチ信号生成回路533からラッチ信号SLを入力したことに応じて、カウンタ521から比較器522を介して出力されるカウント値CをランダムRの値として格納する。そして、乱数値記憶回路531は、ラッチ信号生成回路533からラッチ信号SLを入力するごとに、カウンタ521が更新するカウント値Cを読み込んでランダムRの値を記憶する。
図17は、乱数値記憶回路531の一構成例を示す回路図である。乱数値記憶回路531は、図17に示すように、2個のAND回路201,203と、2個のNOT回路202,204と、16個のフリップフロップ回路2101〜2116と、16個のOR回路2201〜2216とを含む。
図17に示すように、AND回路201の入力端子は、ラッチ信号生成回路533の出力端子とNOT回路204の出力端子とに接続され、出力端子は、NOT回路202の入力端子とフリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16とに接続されている。NOT回路202の入力端子は、AND回路201の出力端子に接続され、出力端子は、AND回路203の一方の入力端子に接続されている。
AND回路203の入力端子は、NOT回路202の出力端子と遊技制御用マイクロコンピュータ560が搭載するCPU56とに接続され、出力端子は、NOT回路204の入力端子に接続されている。NOT回路204の入力端子は、AND回路203の出力端子に接続され、出力端子は、AND回路201の一方の入力端子とOR回路2201〜2216の一方の入力端子とに接続されている。
フリップフロップ回路2101〜2116の入力端子D1〜D16は、比較器522の出力端子に接続されている。フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16は、AND回路201の出力端子に接続され、出力端子Q1〜Q16は、OR回路2201〜2216の他方の入力端子に接続されている。
OR回路2201〜2216の入力端子は、NOT回路204の出力端子とフリップフロップ回路2101〜2116の出力端子とに接続され、出力端子は、遊技制御用マイクロコンピュータ560が搭載するCPU56に接続されている。
乱数値記憶回路531の動作について説明する。図18は、乱数値記憶回路531に各信号が入力されるタイミング、および乱数値記憶回路531が各信号を出力するタイミングを示すタイミングチャートである。図18に示すように、遊技制御用マイクロコンピュータ560が搭載するCPU56から出力制御信号SC(本例では、ハイレベル信号)が入力されていない場合(すなわち、AND回路203の一方の入力端子への入力がローレベルの場合)、ラッチ信号生成回路533からラッチ信号SLが入力されると(図18に示す例では、タイミングT1,T2,T7のとき)、AND回路201の2つの入力端子への入力はともにハイレベルとなる。そのため、AND回路201の出力端子から出力される信号SRはハイレベルとなる。そして、AND回路201から出力された信号SRは、フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16に入力される。
フリップフロップ回路2101〜2116は、クロック端子Clk1〜Clk16から入力される信号SRの立ち上がりエッヂに応答して、比較器522から入力端子D1〜D16を介して入力されるカウント値CのビットデータC1〜C16を乱数値のビットデータR1〜R16としてラッチして記憶する。また、フリップフロップ回路2101〜2116は、記憶するランダムRのビットデータR1〜R16を出力端子Q1〜Q16から出力する。
出力制御信号SCが入力されていない場合(図18に示す例では、タイミングT3までの期間およびタイミングT6以降の期間)、AND回路203の一方の入力端子への入力がローレベルとなるので、AND回路203の出力端子から出力される信号SGはローレベルとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ハイレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からハイレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がハイレベルとなるので、他方の入力端子に入力される信号がハイレベルであるかローレベルであるかに関わらず、OR回路2201〜2216はハイレベルの信号を出力する。すなわち、入力されるランダムRのビットデータR1〜R16の値が「0」であるか「1」であるかに関わらず、OR回路2201〜2216から出力される信号SO1〜SO16は、全てハイレベル(「1」)となる。そのようにすることによって、乱数値記憶回路531から出力される値は、常に「65535(=1111111111111111b)」となり、乱数値記憶回路531からランダムRを読み出すことができない状態となる。すなわち、乱数値記憶回路531から乱数を読み出そうとしても、乱数値記憶回路531から常に同じ値「65535」しか読み出せない状態となり、出力制御信号SCが入力されていない場合、乱数値記憶回路531は、読出不能(ディセイブル)状態となる。なお、16ビット乱数回路503bを用いる場合、乱数値としての値「65535」が用いられる可能性がある。この場合、遊技制御用マイクロコンピュータ560は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図37に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「ハズレ」と判定するように設定しておけばよい。
ラッチ信号生成回路533からラッチ信号SLが入力されていないときに、CPU56から出力制御信号SCが入力されると(図18に示す例では、タイミングT4からタイミングT6までの期間)、AND回路203の2つの入力端子への入力がともにハイレベルとなるので、AND回路203の出力端子から出力される信号SGはハイレベルとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ローレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からローレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がローレベルとなるので、他方の入力端子に入力される信号がハイレベルの場合、OR回路2201〜2216の出力端子からハイレベルの信号が出力される。また、OR回路2201〜2216の他方の入力端子に入力される信号がローレベルの場合、OR回路2201〜2216からローレベルの信号が出力される。すなわち、OR回路2201〜2216の他方の入力端子に入力されるランダムRのビットデータR1〜R16の値は、OR回路2201〜2216の出力端子からそのまま(すなわち、ビットデータR1〜R16の値が「1」のときは「1」が、「0」のときは「0」)出力される。そのようにすることによって、乱数値記憶回路531からのランダムRの読出が可能となる。すなわち、出力制御信号SCが入力されている場合、乱数値記憶回路531は、読出可能(イネイブル)状態となる。
ただし、CPU56から出力制御信号SCが入力される前に、ラッチ信号生成回路533からラッチ信号SLが入力されている場合、AND回路203の一方の入力端子への入力がローレベルとなるので、ラッチ信号SLが入力されている状態のままで、出力制御信号SCが入力されても(図18に示す例では、タイミングT3からタイミングT4の期間)、AND回路203の出力端子から出力される信号SGはローレベルのままとなる。AND回路203が出力する信号SGは、NOT回路204において反転され、ハイレベルの信号とされる。そして、OR回路2201〜2216の一方の入力端子に、NOT回路204からハイレベルの信号が入力される。
以上のように、OR回路2201〜2216の一方の入力端子への入力がハイレベルとなるので、他方の入力端子に入力される信号がハイレベルであるかローレベルであるかに関わらず、OR回路2201〜2216から出力される信号SO1〜SO16は全てハイレベルとなる。そして、出力制御信号SCが入力されているにも関わらず、乱数値記憶回路531からランダムRを読み出すことができない状態のままとなる。すなわち、ラッチ信号SLが入力されている場合、乱数値記憶回路531は、出力制御信号SCを受信不可能な状態となる。なお、16ビット乱数回路503bを用いる場合、乱数値としての値「65535」が用いられる可能性がある。この場合、遊技制御用マイクロコンピュータ560は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図37に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「ハズレ」と判定するように設定しておけばよい。
また、ラッチ信号生成回路533からラッチ信号SLが入力される前に、CPU56から出力制御信号SCが入力されている場合、AND回路201の一方の入力端子への入力がローレベルとなるので、出力制御信号SCが入力されているままの状態で、ラッチ信号SLが入力されても(図18に示す例では、タイミングT5)、AND回路201の出力端子から出力される信号SRはローレベルのままとなる。そのため、フリップフロップ回路2101〜2116のクロック端子Clk1〜Clk16に入力される信号SRは、ローレベルからハイレベルに立ち上がらず、フリップフロップ回路2101〜2116に格納されているランダムRのビットデータR1〜R16は、ラッチ信号SLが入力されているにも関わらず、記憶される乱数は更新されない。すなわち、出力制御信号SCが入力されている場合、乱数値記憶回路531は、ラッチ信号SLを受信不可能な状態となる。
反転回路532は、クロック信号出力回路524から入力する乱数発生用クロック信号SI1における信号レベルを反転させることによって、クロック信号の極性を反転させた反転クロック信号SI2を生成する。また、反転回路532は、生成した反転クロック信号SI2をラッチ信号生成回路533に出力する。
なお、乱数回路503は、反転回路532に代えて遅延回路を含んでもよい。この場合、遅延回路は、クロック信号出力回路524から入力する乱数発生用クロック信号SI1を遅延させることによって、クロック信号を遅延させた遅延クロック信号を生成する。また、遅延回路は、生成した遅延クロック信号をラッチ信号生成回路533に出力する。従って、ラッチ信号生成回路533は、乱数発生用クロック信号SI1を遅延させた遅延クロック信号に同期して、乱数値記憶回路531にラッチ信号を出力することになる。
ラッチ信号生成回路533は、セレクタおよびフリップフロップ回路等を用いて構成される。ラッチ信号生成回路533は、乱数値読取信号出力回路526からの乱数値読取信号と反転回路532からの反転クロック信号SI2とを入力し、乱数値記憶回路531に乱数値を記憶させるためのラッチ信号SLを出力する。また、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527からの乱数更新方式選択信号によって指定された乱数値更新方式に応じて、ラッチ信号SLを出力する。この場合、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第1の乱数更新方式選択信号が入力された場合、反転回路532から出力される反転クロック信号SI2を選択し、ラッチ信号SLとして乱数値記憶回路531に出力する。一方、ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力された場合、乱数値読取信号出力回路526から出力される乱数値読取信号を、反転回路532から出力される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SLとして乱数値記憶回路531に出力する。
タイマ回路534は、始動口14への遊技球の入賞を検出した旨の入賞検出信号SSを始動口スイッチ14aから入力する。また、タイマ回路534は、始動口スイッチ14aから入賞検出信号SSが継続して入力されている時間を計測する。そして、タイマ回路534は、計測時間が所定期間(例えば、3ms)になると、乱数値読取信号出力回路526の乱数値取込レジスタ539に乱数値取込データ「01h」を書き込む。例えば、タイマ回路534は、ハイレベルの信号が入力されたことに応じて起動するアップカウンタまたはダウンカウンタによって構成される。タイマ回路534は、始動口スイッチ14aからの入力がハイレベルとなっている間(すなわち、入賞検出信号SSが継続して入力されている間)、クロック回路501から順次入力する基準クロック信号CLKをアップカウントまたはダウンカウントする。そして、タイマ回路534は、アップカウントまたはダウンカウントするカウント値が3msに対応する値になると、始動口スイッチ14aから入賞検出信号SSが入力されたと判断して、乱数値取込データ「01h」を乱数値取込レジスタ539に書き込む。
次に、シリアル通信回路505の構成について説明する。シリアル通信回路505は、全二重方式、非同期方式および標準NRZ(ノンリターンゼロ)符号化を用いたデータフォーマットで、各制御基板(例えば、払出制御基板37)のマイクロコンピュータとシリアル通信を行う。シリアル通信回路505は、各制御基板のマイクロコンピュータに各種データ(例えば、賞球個数コマンドや演出制御コマンド)を送信する送信部と、各制御基板のマイクロコンピュータからの各種データ(例えば、賞球ACKコマンド)を受信する受信部とを含む。
図19は、シリアル通信回路505の送信部の構成例を示すブロック図である。また、図20は、シリアル通信回路505の受信部の構成例を示すブロック図である。シリアル通信回路505は、ボーレートレジスタ702、ボーレート生成回路703、2つのステータスレジスタ705,706、3つの制御レジスタ707,708,709、送信データレジスタ710、受信データレジスタ711、送信用シフトレジスタ712、受信用シフトレジスタ713、割り込み制御回路714、送信フォーマット/パリティ生成回路715および受信フォーマット/パリティチェック回路716を含む。また、図19に示すように、シリアル通信回路505の送信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタA705、制御レジスタ707,708,709、送信データレジスタ710、送信用シフトレジスタ712、割り込み制御回路714および送信フォーマット/パリティ生成回路715によって構成される。また、図20に示すように、シリアル通信回路505の受信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタ705,706、制御レジスタ707,708,709、受信データレジスタ711、受信用シフトレジスタ713、割り込み制御回路714および受信フォーマット/パリティチェック回路716によって構成される。
なお、シリアル通信回路505において、送信部と受信部とは、実際には、共通の回路を用いて構成される。そして、シリアル通信回路505は、上記に示したように、シリアル通信回路505の各構成要素を使い分けて用いることによって、送信回路又は受信回路として機能する。
まず、シリアル通信回路505が各制御基板が搭載するマイクロコンピュータと送受信するデータのデータフォーマットを説明する。図21は、シリアル通信505が各制御基板が搭載するマイクロコンピュータと送受信するデータのデータフォーマットの例を示す説明図である。図21に示すように、シリアル通信回路505が送受信するデータのデータフォーマットは、スタートビット、データおよびストップビットを1フレームとして構成される。また、シリアル通信回路505が送受信するデータのデータ長は、後述するシリアル通信回路設定処理において初期設定を行えば、8ビットまたは9ビットのいずれかに設定できる。図21(a)は、データ長を8ビットに設定した場合のデータフォーマットの例である。また、図21(b)は、データ長を9ビットに設定した場合のデータフォーマットの例である。
図21に示すように、シリアル通信回路505が送受信するデータのデータフォーマットは、ハイレベル(論理「1」)のアイドルラインのあとに、1フレームの始まりであることを示すスタートビット(論理「0」)を含む。また、データフォーマットは、スタートビットのあとに、8ビットまたは9ビットの送受信データを含む。そして、データフォーマットは、送受信データのあとに、1フレームの終わりであることを示すストップビット(論理「1」)を含む。
シリアル通信回路505は、図21に示すデータフォーマットに従って、送受信データの最下位ビット(ビット0)から先にデータを送受信する。また、後述するシリアル通信回路設定処理において初期設定を行えば、送受信データにパリティビットを付加するように設定することもできる。パリティビットを付加するように設定した場合、送受信データの最上位ビットがパリティビット(奇数パリティまたは偶数パリティ)として用いられる。例えば、データ長を8ビットに設定した場合、送受信データのビット7がパリティビットとして用いられる。また、例えば、データ長を9ビットに設定した場合、送受信データのビット8がパリティビットとして用いられる。
ボーレート生成回路703は、クロック回路501が出力するクロック信号およびボーレートレジスタ702に設定されている設定値(ボーレート設定値ともいう)にもとづいて、シリアル通信回路505が用いるボーレートを生成する。この場合、ボーレート生成回路703は、クロック信号およびボーレート設定値にもとづいて、所定の計算式を用いてボーレートを求める。例えば、ボーレート生成回路703は、式(1)を用いて、シリアル通信回路505が用いるボーレートを求める。
ボーレート=クロック周波数/(ボーレート設定値×16) 式(1)
図22は、ボーレートレジスタ702の例を示す説明図である。ボーレートレジスタ702は、ボーレート生成回路703が生成するボーレートの値を指定するための所定の設定値を設定するレジスタである。例えば、ボーレートレジスタ702が式(1)を用いてボーレートを求めるものとし、クロック周波数が3MHzであるとする。この場合、所望の目標ボーレートが1200bpsであるとすると、ボーレートレジスタ702に設定値「156」を設定する。すると、ボーレート生成回路703は、クロック周波数「3MHz」およびボーレート設定値「156」にもとづいて、式(1)を用いて、ボーレート「1201.92bps」を生成する。ボーレートレジスタ702は、16ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ボーレートレジスタ702は、ビット0〜ビット12が書込および読出ともに可能な状態に構成されている。また、ボーレートレジスタ702は、ビット13〜ビット15が書込および読出ともに不可能な状態に構成されている。したがって、ボーレートレジスタ702のビット13〜ビット15に値を書き込む制御を行っても無効とされ、ビット13〜ビット15から読み出す値は全て「0(=000b)」である。
図23(A)は、制御レジスタA707の例を示す説明図である。制御レジスタA707は、シリアル通信回路505の通信フォーマットを設定するレジスタである。この実施の形態では、制御レジスタA707の各ビットの値が設定されることによって、シリアル通信回路505の通信フォーマットが設定される。制御レジスタA707には、送受信データのデータ形式や各種通信方式等の通信フォーマットを設定するための通信フォーマット設定データが設定される。図23(A)に示すように、制御レジスタA707は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタA707は、ビット0〜ビット4が書込および読出ともに可能な状態に構成されている。また、制御レジスタA707は、ビット5〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、制御レジスタA707のビット5〜ビット7に値を書き込む制御を行っても無効とされ、ビット5〜ビット7から読み出す値は全て「0(=000b)」である。
図23(B)は、制御レジスタA707に設定される通信フォーマット設定データの一例の説明図である。図23(B)に示すように、制御レジスタA707のビット4(ビット名「M」)には、送受信するデータのデータ長を設定するための設定データが設定される。図23(B)に示すように、ビット4を「0」に設定することによって、送受信データのデータ長が8ビットに設定される。また、ビット4を「1」に設定することによって、送受信データのデータ長が9ビットに設定される。
制御レジスタA707のビット3(ビット名「WAKE」)には、スタンバイ状態の受信回路(シリアル通信回路505の受信部)をウエイクアップする(オンライン状態にさせる)ウエイクアップ方式を設定するための設定データが設定される。図23(B)に示すように、ビット3を「0」に設定することによって、アイドルラインを認識したときにウエイクアップするアイドルラインウエイクアップ方式が設定される。また、ビット3を「1」に設定することによって、所定のアドレスマークを認識することによってウエイクアップするアドレスマークウエイクアップ方式が設定される。
制御レジスタA707のビット2(ビット名「ILT」)には、受信データのアイドルラインの検出方式を選択するための設定データが設定される。図23(B)に示すように、ビット2を「0」に設定することによって、受信データに含まれるスタートビットの後からアイドルラインを検出する検出方式が設定される。また、ビット2を「1」に設定することによって、受信データに含まれるストップビットの後からアイドルラインを検出する検出方式が設定される。
制御レジスタA707のビット1(ビット名「PE」)には、パリティ機能を使用するか否かを設定するための設定データが設定される。図23(B)に示すように、ビット1を「0」に設定することによって、パリティ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、パリティ機能を使用するように設定される。
制御レジスタA707のビット0(ビット名「PT」)には、パリティ機能を使用すると設定した場合のパリティの種類を設定するための設定データが設定される。図23(B)に示すように、ビット0を「0」に設定することによって、パリティの種類として偶数パリティが設定される。また、ビット0を「1」に設定することによって、パリティの種類として奇数パリティが設定される。
図24(A)は、制御レジスタB708の例を示す説明図である。制御レジスタB708は、シリアル通信回路505の割り込み要求を許可するか否かを設定するレジスタである。この実施の形態では、制御レジスタB708の各ビットの値が設定されることによって、シリアル通信回路505からの割り込み要求を許可するか禁止するかが設定される。制御レジスタB708には、各種割り込み要求を許可するか否かを示す割り込み要求設定データが主として設定される。なお、制御レジスタB708には、割り込み要求設定データ以外に、シリアル通信回路505の各種設定を行うための設定データも設定される。図24(A)に示すように、制御レジスタB708は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタB708は、ビット0〜ビット7が書込および読出ともに可能な状態に構成されている。
図24(B)は、制御レジスタB708に設定される割り込み要求設定データの一例を示す説明図である。図24(B)に示すように、制御レジスタB708のビット7(ビット名「TIE」)には、データの送信時に行う割り込み要求である送信割り込み要求を許可するか否かを示す設定データが設定される。図24(B)に示すように、ビット7を「0」に設定することによって、送信割り込み要求を禁止するように設定される。また、ビット7を「1」に設定することによって、送信割り込み要求を許可するように設定される。
制御レジスタB708のビット6(ビット名「TCIE」)には、データの送信完了時に行う割り込み要求である送信完了割り込み要求を許可するか否かを示す設定データが設定される。図24(B)に示すように、ビット6を「0」に設定することによって、送信完了割り込み要求を禁止するように設定される。また、ビット6を「1」に設定することによって、送信完了割り込み要求を許可するように設定される。
制御レジスタB708のビット5(ビット名「RIE」)には、データの受信時に行う割り込み要求である受信割り込み要求を許可するか否かを示す設定データが設定される。図24(B)に示すように、ビット5を「0」に設定することによって、受信割り込み要求を禁止するように設定される。また、ビット5を「1」に設定することによって、受信割り込み要求を許可するように設定される。
制御レジスタB708のビット4(ビット名「ILIE」)には、受信データのアイドルラインを検出したときに行う割り込み要求であるアイドルライン割り込み要求を許可するか否かを示す設定データが設定される。図24(B)に示すように、ビット4を「0」に設定することによって、アイドルライン割り込み要求を禁止するように設定される。また、ビット4を「1」に設定することによって、アイドルライン割り込み要求を許可するように設定される。
制御レジスタB708のビット3(ビット名「TE」)には、送信回路(シリアル通信回路505の送信部)を使用するか否かを示す設定データが設定される。図24(B)に示すように、ビット3を「0」に設定することによって、送信回路を使用しないように設定される。また、ビット3を「1」に設定することによって、送信回路を使用するように設定される。
制御レジスタB708のビット2(ビット名「RE」)には、受信回路を使用するか否かを示す設定データが設定される。図24(B)に示すように、ビット2を「0」に設定することによって、受信回路を使用しないように設定される。また、ビット2を「1」に設定することによって、受信回路を使用するように設定される。
制御レジスタB708のビット1(ビット名「RWU」)には、受信回路のウエイクアップ機能を使用するか否かを示す設定データが設定される。図24(B)に示すように、ビット1を「0」に設定することによって、ウエイクアップ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ウエイクアップ機能を使用するように設定される。
制御レジスタB708のビット0(ビット名「SBK」)には、所定のブレークコード送信機能を使用するか否かを示す設定データが設定される。図24(B)に示すように、ビット1を「0」に設定することによって、ブレークコード送信機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ブレークコード送信機能を使用するように設定される。ビット1を「1」に設定すると、シリアル通信回路505は、ブレークコード(例えば、「0」を連続して含む信号)を制御基板(例えば払出制御基板37)が搭載するマイクロコンピュータに送信する。
図25(A)は、ステータスレジスタA705の例を示す説明図である。ステータスレジスタA705は、シリアル通信回路505の各種ステータスを確認するためのレジスタである。この実施の形態では、ステータスレジスタA705の各ビットの値を確認することによって、CPU56は、シリアル通信回路505の各種ステータスを確認することができる。図25(A)に示すように、ステータスレジスタA705は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタA705は、ビット0〜ビット7が読出のみ可能な状態に構成されている。したがって、ステータスレジスタA705のビット0〜ビット7に値を書き込む制御を行っても無効とされる。
本実施の形態では、後述するように、送信データレジスタ710に送信データが入っていない状態(送信データエンプティ)となったり、送信用シフトレジスタ712が格納する送信データの送信を完了すると、割り込み制御回路714によって、ステータスレジスタA705の対応するビットがセットされる。そして、CPU56は、ステータスレジスタA705にセットされた各ビットの値を読み出す。
図25(B)は、ステータスレジスタA705に格納されるステータス確認データの一例を示す図である。図25(B)に示すように、ステータスレジスタA705のビット7(ビット名「TDRE」)には、送信データレジスタ710に送信データが入っていない状態であること(送信データエンプティ)を示す送信データエンプティフラグが格納される。図25(B)に示すように、ビット7に「0」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが未だに転送されておらず、送信データレジスタ710に送信データが格納されたままの状態であることを示す。また、ビット7に「1」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが転送されており、送信データレジスタ710に送信データが入っていない状態(送信データエンプティ)であることを示す。
ステータスレジスタA705のビット6(ビット名「TC」)には、シリアル通信回路505からの送信データの送信を完了した旨を示す送信完了フラグが格納される。図25(B)に示すように、ビット6に「0」が格納されている場合、送信用シフトレジスタ712が格納する送信データの送信中の状態であり、シリアル通信回路505からの送信データの送信が完了していない状態であることを示す。また、ビット6に「1」が格納されている場合、送信用シフトレジスタ712が格納する送信データの転送を完了した状態であり、シリアル通信回路505からの送信データの送信が完了した状態であることを示す。
なお、送信データの送信を完了した状態となり、遊技制御用マイクロコンピュータ560は、送信先のマイクロコンピュータからの受信確認信号の待ち状態となる。この実施の形態では、後述する送信時割込の設定が行われると、シリアル通信回路505は、送信データの送信完了を検出すると、ステータスレジスタA705のビット6を「1」にするとともに、受信確認信号の待ち状態になったものとしてCPU56に割り込み要求(送信時割り込み要求という)を行う。
ステータスレジスタA705のビット5(ビット名「RDRF」)には、受信データレジスタ711に受信データが格納された状態であること(受信データフル)を示す受信データフルフラグが格納される。図25(B)に示すように、ビット5に「0」が格納されている場合、受信データレジスタ711に受信データが入っていない状態であることを示す。また、ビット5に「1」が格納されている場合、受信用シフトレジスタ713の値が受信データレジスタ711に転送され、受信データレジスタ711に受信データが格納されている状態であること(受信データフル)を示す。
なお、受信データレジスタ711に受信データが格納された状態となると、CPU56は、受信データを受信データレジスタ711から読み込んで受信処理を行える状態となる。この実施の形態では、シリアル通信回路505は、受信データフルを検出すると、ステータスレジスタA705のビット5を「1」にするとともに、受信処理が可能になったものとしてCPU56に割り込み要求(受信時割り込み要求という)を行う。
ステータスレジスタA705のビット4(ビット名「IDLE」)には、受信回路がアイドルラインを検出したことを示すアイドルライン検出フラグが格納される。図25(B)に示すように、ビット4に「0」が格納されている場合、シリアル通信回路505の受信部がアイドルラインを検出していない状態であることを示す。また、ビット4に「1」が格納されている場合、シリアル通信回路505の受信部がアイドルラインを検出した状態であることを示す。
ステータスレジスタA705のビット3(ビット名「OR」)には、CPU56が受信データレジスタ711が格納する受信データを読み込む前に、受信用シフトレジスタ713が次のデータを受信してしまったこと(オーバーラン)を示すオーバーランフラグが格納される。図25(B)に示すように、ビット3に「0」が格納されている場合、受信回路がオーバーランを検出していない状態であることを示す。また、ビット3に「1」が格納されている場合、受信回路がオーバーランを検出した状態であることを示す。
なお、オーバーランが発生すると、受信データレジスタ711内の受信データが読み込まれる前に受信用シフトレジスタ713に次の受信データが格納されてしまうので、受信データが上書きされてしまいCPU56が受信データを正しく読み込めなくなってしまう。そのため、各制御基板が搭載するマイクロコンピュータと正しく通信を行えなくなり、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、オーバーランを検出すると、ステータスレジスタA705のビット3を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット2(ビット名「NF」)には、受信データにノイズを検出したことを示すノイズエラーフラグが格納される。図25(B)に示すように、ビット2に「0」が格納されている場合、受信回路が受信データにノイズを検出していない状態であることを示す。また、ビット2に「1」が格納されている場合、受信回路が受信データにノイズを検出した状態であることを示す。
例えば、シリアル通信回路505は、受信データの各ビットを検出する際に、ボーレート生成回路703が生成したボーレートを用いて、所定ビット長の「1」または「0」を検出する。この場合、検出した「1」または「0」の長さが所定ビット長に満たない場合、シリアル通信回路505は、受信データにノイズが発生したものとしてノイズエラーを検出する。ノイズエラーが発生すると、ノイズによって正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、ノイズエラーを検出すると、ステータスレジスタA705のビット2を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット1(ビット名「FE」)には、受信データのストップビットの位置が「0」(本来、ストップビットは「1」)であることを検出したこと(フレーミングエラー)を示すフレーミングエラーフラグが格納される。図25(B)に示すように、ビット1に「0」が格納されている場合、受信回路が受信データにフレーミングエラーを検出していない状態であることを示す。また、ビット1に「1」が格納されている場合、受信回路がフレーミングエラーを検出した状態であることを示す。
フレーミングエラーが発生すると、受信データのストップビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、フレーミングエラーを検出すると、ステータスレジスタA705のビット1を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット0(ビット名「PF」)には、受信データから求めたパリティの値と、受信データに含まれるパリティの値とが一致しなかったこと(パリティエラー)を示すパリティエラーフラグが格納される。図25(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データにパリティエラーを検出していない状態であることを示す。また、ビット0に「1」が格納されている場合、受信回路がパリティエラーを検出した状態であることを示す。
パリティエラーが発生すると、受信データの各データビットまたはパリティビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、パリティエラーを検出すると、ステータスレジスタA705のビット0を「1」にするとともに、通信時にエラーが発生したものとしてCPU56に割り込み要求を行う。
図26(A)は、ステータスレジスタB706の例を示す説明図である。ステータスレジスタB706は、シリアル通信回路505の受信状態(受信ステータス)を確認するためのレジスタである。この実施の形態では、ステータスレジスタB706のビットの値を確認することによって、CPU56は、シリアル通信回路505の受信ステータスを確認することができる。図26(A)に示すように、ステータスレジスタB706は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタB706は、ビット0が読出のみ可能な状態に構成されている。したがって、ステータスレジスタA705のビット0に値を書き込む制御を行っても無効とされる。また、ステータスレジスタB706は、ビット1〜ビット7が書込および読出ともに不可能な状態に構成されている。したがって、ステータスレジスタA705のビット1〜ビット7に値を書き込む制御を行っても無効とされ、ビット1〜ビット7から読み出す値は全て「0(=0000b)」である。
図26(B)は、ステータスレジスタB706に格納されるステータス確認データの一例を示す図である。図26(B)に示すように、ステータスレジスタB706のビット0(ビット名「RAF」)には、受信回路が受信データを受信中であること(受信アクティブ)を示す受信アクティブフラグが格納される。図26(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データを受信中でないことを示す。また、ビット0に「1」が格納されている場合、受信回路が受信データを受信中であることを示す。なお、シリアル通信回路505は、スタートビットを検出すると、受信データの受信が開始されたものとして、ステータスレジスタB706のビット0を「1」にする。
図27(A)は、制御レジスタC709の例を示す説明図である。制御レジスタC709は、シリアル通信回路505の通信エラー時の割り込み要求を許可するか否かを設定するレジスタである。この実施の形態では、制御レジスタC709の各ビットの値が設定されることによって、シリアル通信回路505からの通信時の割り込み要求を許可するか禁止するかが設定される。制御レジスタC709には、通信エラー時の各種割り込み要求を許可するか否かを示すエラー割り込み要求設定データが主として設定される。なお、制御レジスタC709には、エラー割り込み要求設定データ以外に、データ長を9ビットに設定した場合の9ビット目のデータが格納される。シリアル通信回路505の各種設も設定される。図27(A)に示すように、制御レジスタC709は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタC709は、ビット0〜ビット3およびビット6,7が書込および読出ともに可能な状態に構成されている。また、制御レジスタC709は、ビット4,5が書込および読出ともに不可能な状態に構成されている。したがって、制御レジスタC709のビット4,5に値を書き込む制御を行っても無効とされ、ビット4,5から読み出す値は全て「0(=0000b)」である。
図27(B)は、制御レジスタC709に設定されるエラー割り込み要求設定データの一例を示す説明図である。図27(B)に示すように、制御レジスタC709のビット7(ビット名「R8」)には、データ長を9ビットに設定した場合の受信データの9ビット目のデータが格納される。また、制御レジスタC709のビット6(ビット名「T8」)には、データ長を9ビットに設定した場合の送信データの9ビット目のデータが格納される。
制御レジスタC709のビット3(ビット名「ORIE」)には、オーバーランを検出した場合に行う割り込み要求であるオーバーランフラグ割り込み要求を許可するか否かを示す設定データが設定される。図27(B)に示すように、ビット3を「0」に設定することによって、オーバーランフラグ割り込み要求を禁止するように設定される。また、ビット3を「1」に設定することによって、オーバーランフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット2(ビット名「NEIE」)には、ノイズエラーを検出した場合に行う割り込み要求であるノイズエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図27(B)に示すように、ビット2を「0」に設定することによって、ノイズエラーフラグ割り込み要求を禁止するように設定される。また、ビット2を「1」に設定することによって、ノイズエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット1(ビット名「FEIE」)には、フレーミングエラーを検出した場合に行う割り込み要求であるフレーミングエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図27(B)に示すように、ビット1を「0」に設定することによって、フレーミングエラーフラグ割り込み要求を禁止するように設定される。また、ビット1を「1」に設定することによって、フレーミングエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット0(ビット名「PEIE」)には、パリティエラーを検出した場合に行う割り込み要求であるパリティエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図27(B)に示すように、ビット0を「0」に設定することによって、パリティエラーフラグ割り込み要求を禁止するように設定される。また、ビット0を「1」に設定することによって、パリティエラーフラグ割り込み要求を許可するように設定される。
図28は、シリアル通信回路505が備えるデータレジスタの例を示す説明図である。データレジスタ701は、シリアル通信回路505が送受信するデータを格納するレジスタである。図28に示すように、データレジスタは、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、データレジスタ701は、ビット0〜ビット7が書込および読出ともに可能な状態に構成されている。
この実施の形態では、シリアル通信回路505が送信データを送信する場合、データレジスタは、送信データレジスタ710として用いられる。なお、データ長を9ビットに設定した場合、データレジスタおよび制御レジスタC709のビット6が送信データレジスタ710として用いられる。この場合、データレジスタのビット0〜ビット7が送信データレジスタ710のビット0〜ビット7として用いられ、制御レジスタC709のビット6が送信データレジスタ710のビット8として用いられる。
また、シリアル通信回路505が受信データを受信する場合、データレジスタは、受信データレジスタ711として用いられる。なお、データ長を9ビットに設定した場合、データレジスタおよび制御レジスタC709のビット7が受信データレジスタ711として用いられる。この場合、データレジスタのビット0〜ビット7が受信データレジスタ711のビット0〜ビット7として用いられ、制御レジスタC709のビット7が受信データレジスタ711のビット8として用いられる。
割り込み制御回路714は、CPU56に各種割り込み要求を行う。この実施の形態では、割り込み制御回路714は、制御レジスタB708のビット6(TCIE)が「1」に設定されている場合、送信データレジスタ710に送信データの送信を完了した状態となると、CPU56に割り込み信号を出力するとともに、ステータスレジスタA705のビット6(TC)に「1」を設定することによって割り込み要求を行う。なお、ステータスレジスタA705のビットの設定値により割込要因を識別可能とするのでなく、割り込み制御回路714は、割込要因毎に異なる割り込み信号をCPU56に出力するようにしてもよい。
また、割り込み制御回路714は、制御レジスタB708のビット5(RIE)が「1」に設定されている場合、受信データレジスタ711に受信データが格納されている状態になると(受信データフルを検出すると)、CPU56に割り込み信号を出力するとともに、ステータスレジスタA705のビット5(RDRF)に「1」を設定することによって割り込み要求を行う。
また、割り込み制御回路714は、制御レジスタC709のビット0〜3のいずれかが「1」に設定されている場合、各種通信エラーが発生すると、CPU56に割り込み信号を出力するとともに、通信エラーの種類に応じて、ステータスレジスタA705のビット0〜ビット3に「1」を設定することによって割り込み要求を行う。例えば、制御レジスタC709のビット3(ORIE)が「1」に設定されている場合、オーバーランを検出して割り込み要求を行うときに、ステータスレジスタA705のビット3(OR)に「1」を設定する。また、例えば、制御レジスタC709のビット2(NEIE)が「1」に設定されている場合、ノイズエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット2(NF)に「1」を設定する。また、例えば、制御レジスタC709のビット1(FEIE)が「1」に設定されている場合、フレーミングエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット1(FE)に「1」を設定する。また、例えば、制御レジスタC709のビット0(PEIE)が「1」に設定されている場合、パリティエラーを検出して割り込み要求を行うときに、ステータスレジスタA705のビット0(PF)に「1」を設定する。なお、複数の通信エラーを検出した場合、割り込み制御回路714は、複数の通信エラーにもとづいて割り込み要求を行うときに、ステータスレジスタA705の該当するビットをそれぞれ「1」に設定する。
送信フォーマット/パリティ生成回路715は、送信データのデータフォーマットを生成する。この実施の形態では、送信フォーマット/パリティ生成回路715は、送信データレジスタ710に格納される送信データにスタートビットおよびストップビットを付加してデータフォーマットを生成し、送信用シフトレジスタ712に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、送信フォーマット/パリティ生成回路715は、送信データにパリティビットを付加してデータフォーマットを生成する。
受信フォーマット/パリティチェック回路716は、受信データのデータフォーマットを検出する。この実施の形態では、受信フォーマット/パリティチェック回路716は、受信用シフトレジスタ713に格納される受信データからスタートビットおよびストップビットを検出し、受信データに含まれるデータ部分を検出して受信データレジスタ711に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、受信フォーマット/パリティチェック回路716は、受信データのパリティを求め、受信データに含まれるパリティと一致するか否かを検出する。また、求めた値が受信データに含まれるパリティと一致しない場合、受信フォーマット/パリティチェック回路716は、パリティエラーを検出する。なお、後述するシリアル通信回路設定処理において通信エラー時割り込み要求を許可する旨が設定されてる場合、割り込み制御回路714は、パリティエラーを検出すると、通信エラーの発生を割込原因としてCPU56に割り込み要求を行う。
図29は、遊技制御用マイクロコンピュータ560における記憶領域のアドレスマップの一例を示す説明図である。図29に示すように、遊技制御用マイクロコンピュータ560の記憶領域のうち、0000h番地〜1FFFh番地の領域は、ROM54に割り当てられている。また、7E00h番地〜7FFFh番地の領域は、RAM55に割り当てられている。さらに、FD00h番地〜FE00h番地の領域は、乱数最大値設定レジスタ535等の内蔵レジスタに割り当てられている。
また、図29に示すように、ROM54に割り当てられている0000h番地〜1FFFh番地の領域は、ユーザプログラムエリアとユーザプログラム管理エリアとを含む。0000h番地〜1F7Fh番地の領域のユーザプログラムエリアには、ユーザ(例えば、遊技機の製作者)により予め作成されたプログラム(ユーザプログラム)550が記憶される。また、1F80h番地〜1FFFh番地の領域のユーザプログラム管理エリアには、CPU56がユーザプログラム550を実行するために必要となるデータ(ユーザプログラム実行データ)が記憶される。また、RAM55に割り当てられている7E00h番地〜7FFFh番地の領域のうち、7E00h番地〜7EFFh番地の領域は未使用領域であり、7F00h番地〜7FFFh番地の領域はワークエリアとして用いられる。
図30は、ユーザプログラム管理エリアにおけるアドレスマップの一例を示す説明図である。図30に示すように、1F97h番地の領域には、乱数回路503のカウンタ521に入力される初期値を変更するための方式である初期値変更方式のうち、ユーザによって選択された初期値変更方式を指定するための初期値変更方式設定データが記憶される。また、1F98h番地および1F99h番地の領域には、RAM55に割り当てられた7F00h番地〜7FFFh番地のうち、ユーザによって予め指定されたRAM55における番地(指定RAM番地)を特定するためのRAM番地データが記憶される。この場合、指定RAM番地を示す値のうち、指定RAM番地の下位の値が1F98h番地に記憶され、指定RAM番地の上位の値が1F99h番地に記憶される。
図31は、初期値変更方式設定データの一例を示す説明図である。図31に示すように、初期値変更データは、8ビットのデータから構成される。初期値変更データ「00h」は、初期値変更方式として、初期値を変更しないことを指定するデータである。この実施の形態では、初期値変更データ「00h」が設定されている場合、乱数回路503のカウンタ521は、予め定められた初期値「0」から所定の最終値までカウント値を更新することになる。また、初期値変更データ「01h」は、初期値変更方式として、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560を識別するためのIDナンバにもとづく値に変更することを指定するデータである。この実施の形態では、初期値変更データ「01h」が設定されている場合、カウンタ521が更新するカウンタ値の初期値が「0」からIDナンバにもとづく値に変更され、カウンタ521は、変更後の初期値から所定の最終値までカウント値を更新することになる。
ユーザプログラムエリアに記憶されるユーザプログラム550について説明する。図32は、ユーザプログラム550の構成例を示す説明図である。図32に示すように、この実施の形態では、ユーザプログラム550は、複数種類のプログラムモジュールから構成される乱数回路設定プログラム551と、表示結果決定プログラム552と、カウント値順列変更プログラム554と、乱数値更新プログラム555と、シリアル通信回路設定プログラム556と、割込優先順位設定プログラム557とを含む。
乱数回路設定プログラム551は、乱数回路503にランダムRの値を更新させるための初期設定を行う乱数回路設定処理を実行させるためのプログラムである。すなわち、CPU56は、乱数回路設定プログラム551に従って処理を実行することにより、乱数回路初期設定手段として機能する。
図33は、乱数回路設定プログラム551の構成例を示す説明図である。図33に示すように、乱数回路設定プログラム551は、複数種類のプログラムモジュールとして、乱数最大値設定モジュール551aと、乱数更新方式選択モジュール551bと、周期設定モジュール551cと、乱数回路起動モジュール551dと、初期値変更モジュール551eと、乱数回路選択モジュール551fとを含む。
乱数最大値設定モジュール551aは、ユーザ(例えば、遊技機の製作者)によって予め設定されたランダムRの最大値を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、乱数最大値設定モジュール551aに従って処理を実行することによって、ユーザによって予め設定されたランダムRの最大値を指定する乱数最大値設定データを、乱数最大値設定レジスタ535に書き込む。そのようにすることによって、CPU56は、ユーザによって予め設定されたランダムRの最大値を乱数回路503に設定する。例えば、ユーザによってランダムRの最大値として予め「255」が設定された場合、CPU56は、乱数最大値設定レジスタ535に乱数最大値設定データ「00FFh」を書き込んで、ランダムRの最大値「255」を乱数回路503に設定する。
乱数更新方式選択モジュール551bは、ユーザによって選択された乱数更新方式(第1の乱数更新方式または第2の乱数更新方式)を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、乱数更新方式選択モジュール551bに従って処理を実行することによって、ユーザによって選択された乱数更新方式を指定する乱数更新方式選択データ「01b」または「10b」を乱数更新方式選択レジスタ540に書き込む。そのようにすることによって、CPU56は、ユーザによって選択された乱数更新方式を乱数回路503に設定する。よって、遊技制御用マイクロコンピュータ560は、第1の乱数更新方式又は第2の乱数更新方式のうちのいずれかを、乱数回路503が乱数更新に用いる乱数更新方式として選択する機能を備える。
周期設定モジュール551cは、ユーザによって予め設定された内部クロック信号の周期(すなわち、クロック信号出力回路524がセレクタ528および反転回路532にクロック信号を出力する周期)を乱数回路503に設定させるためのプログラムモジュールである。CPU56は、周期設定モジュール551cに従って処理を実行することによって、ユーザによって予め設定された内部クロック信号の周期を指定するための周期設定データを周期設定レジスタ537に書き込む。そのようにすることによって、CPU56は、ユーザによって予め設定された内部クロック信号の周期を乱数回路503に設定する。例えば、ユーザによって内部クロック信号の周期が予め「システムクロック信号の周期×128×16」と設定された場合、CPU56は、周期設定レジスタ537に周期設定データ「0Fh」を書き込んで、内部クロック信号の周期「システムクロック信号の周期×128×16」を乱数回路503に設定する。
乱数回路起動モジュール551dは、乱数回路503を起動させるためのプログラムモジュールである。CPU56は、乱数回路起動モジュール551dに従って処理を実行することによって、乱数回路起動データ「80h」を乱数回路起動レジスタ541に書き込むことにより、乱数回路503を起動させる。
初期値変更モジュール551eは、カウンタ521が更新するカウント値の初期値を変更させるためのプログラムモジュールである。CPU56は、初期値変更モジュール551eに従って処理を実行することによって、初期値変更手段として機能する。CPU56は、初期値変更モジュール551eを実行して、ユーザによって選択された初期値変更方式によって、カウンタ521が更新するカウント値の初期値を変更させる。そのようにすることによって、CPU56は、初期値変更方式を選択する機能を備える。
この実施の形態では、ユーザプログラム管理エリアの1F97h番地の領域に初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、カウント値の初期値を、遊技制御用マイクロコンピュータ560毎に付与された固有のIDナンバにもとづいて算出された値に変更させる。
例えば、遊技制御用マイクロコンピュータ560は、ROM54の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とを予め対応付けて記憶している。この場合、例えば、遊技制御用マイクロコンピュータ560のIDナンバが「100」であるとすると、IDナンバ「100」に所定値「50」を加算して求めた演算値「150」を、予めIDナンバに対応付けて記憶している。また、例えば、IDナンバ「100」に所定値「50」を減算して求めた演算値「50」を、予めIDナンバに対応付けて記憶している。また、例えば、予めIDナンバに対応づけて所定値だけを記憶していてもよい。そして、遊技制御用マイクロコンピュータ560のCPU56は、予め記憶される所定値(例えば、「50」)にIDナンバ(例えば、「100」を加算して求めた値「150」を、カウント値の初期値としてもよい。また、CPU56は、予め記憶される所定値(例えば、「50」)をIDナンバ(例えば、「100」)から減算して求めた値「50」を、カウント値の初期値としてもよい。なお、遊技制御用マイクロコンピュータ560は、データ書き込みが禁止されている記憶領域であれば、遊技制御用マイクロコンピュータ560のIDナンバを、ROM54の所定の記憶領域に記憶していてもよく、RAM55の所定の記憶領域(ただし、RAM55は遊技機の電力供給が停止されたときでも記憶内容が消去(クリア)されないことが条件となる)に記憶していてもよい。
そして、初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、予め記憶するIDナンバにもとづく演算値にカウント値の初期値を変更させる。そのようにすれば、乱数回路503が発生する乱数のランダム性をより向上させることができ、遊技制御用マイクロコンピュータ560のIDナンバを見ただけでは乱数の初期値を認識しにくくすることができる。そのため、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、大当り状態への移行条件を不正に成立させられてしまうことをより確実に防止することができ、セキュリティ性を向上させることができる。
また、例えば、初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバに所定値を加算して)求めた演算値にカウント値の初期値を変更させる。この場合、例えば、CPU56は、乱数を用いてランダムに変化させた値をIDナンバと演算することによって、演算に用いる値をランダムに更新し初期値を求めてもよい。そのようにすれば、乱数回路503が発生する乱数のランダム性をより向上させることができる。
乱数回路選択モジュール551fは、遊技制御用マイクロコンピュータ560が内蔵する各乱数回路503の中から、遊技制御処理を含むタイマ割込処理の実行時に用いる乱数回路を設定するためのプログラムモジュールである。CPU56は、乱数回路選択モジュール551fに従って処理を実行することによって、遊技制御用マイクロコンピュータ560が内蔵する2つの乱数回路(12ビット乱数回路503aおよび16ビット乱数回路503b)のうち、いずれの乱数回路をタイマ割込処理の実行時に用いるかを設定する。例えば、CPU56は、ROM54の所定の記憶領域に記憶された所定の設定値(ユーザによって予め設定された値)に従って、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aまたは16ビット乱数回路503bを設定する。
なお、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定してもよい。この場合、CPU56は、例えば、12ビット乱数回路503aが発生した乱数にもとづいて変動パターンを決定し、16ビット乱数回路503bが発生した乱数にもとづいて大当り判定を行うようにしてもよい。この実施の形態では、乱数値記憶回路531は、12ビット乱数回路503aと16ビット乱数回路503bとにそれぞれ存在する(すなわち、12ビット用の乱数を記憶する乱数値記憶回路と、16ビット用の乱数を記憶する乱数値記憶回路とが、別個に存在する)。また、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定した場合、CPU56は、12ビット乱数回路503aから読み出した乱数と、16ビット乱数回路503bから読み出した乱数とを、RAM55に設けられた別々のバッファ領域にそれぞれ格納する。そのため、12ビット乱数回路503aから乱数を読み出すタイミングと、16ビット乱数回路503bから乱数を読み出すタイミングとが同じであっても、2つの異なる乱数を抽出し別々のバッファ領域に格納することができる。
乱数値更新プログラム555は、乱数更新方式として第1の乱数更新方式が選択されているときに、乱数値記憶回路531に格納されているランダムRの値を更新させるためのプログラムである。CPU56は、乱数値更新プログラム555に従って処理を実行することによって、乱数値更新手段として機能する。CPU56は、第1の乱数更新方式が選択されているときに、乱数値更新プログラム555を実行して、カウント値更新データ「01h」をカウント値更新レジスタ538に書き込むことにより、カウンタ521にカウント値を更新させ、乱数値記憶回路531に格納されているランダムRの値を更新させる。なお、乱数更新方式として第2の乱数更新方式が選択されている場合には、クロック信号出力回路537が出力する乱数発生用クロック信号によって、カウンタ521にカウント値を更新させ、乱数値記憶回路531に格納さているランダムRの値を更新させることになる。
表示結果決定プログラム552は、特別図柄表示器8における表示結果を大当り図柄とするか否かを決定するためのプログラムである。CPU56は、表示結果決定プログラム552に従って処理を実行することによって、表示結果決定手段として機能する。
この実施の形態では、CPU56は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、表示結果決定プログラム552に従って処理を実行する。そして、CPU56は、乱数値記憶回路531から更新後のランダムRの値を読み出して、特別図柄表示器8における表示結果を大当り図柄とするか否かを決定する。
図34は、第1の乱数更新方式が選択されている場合に、CPU56がランダムRの値を更新させたりランダムRの値を読出したりする動作を示す説明図である。図34に示すように、第1の乱数更新方式が選択されている場合、CPU56は、カウント値更新データ「01h」をカウント値更新レジスタ538に書き込むことによって、乱数値記憶回路531が記憶するランダムRの値(例えば「2」)を更新させる。そして、CPU56は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、乱数値記憶回路531からランダムRの値(例えば「2」)を読み出す。
なお、乱数値記憶回路531が記憶するランダムRの値をさらに更新させる場合、前回更新時にランダムRの値を更新したときから、クロック回路501が出力するシステムクロック信号の周期以上の間隔を経過したときに、カウント値更新レジスタ538にカウント値更新データ「01h」を書き込まなければならない。なぜなら、更新後のランダムRの値を乱数値記憶回路531から読み出す時間を確保する必要があるからである。
図35は、第2の乱数更新方式が選択されている場合に、CPU56がランダムRの値を読出したりする動作を示す説明図である。図35に示すように、第2の乱数更新方式が選択されている場合、タイマ回路534は、乱数値取込データ「01h」を乱数値取込レジスタ539に書き込むことによって、カウンタ521が出力するカウント値(例えば「2」)を乱数値記憶回路531に取り込ませて、乱数値記憶回路531が記憶するランダムRの値を更新させる。そして、CPU56は、乱数値記憶回路531から更新後のランダムRの値(例えば「2」)を読み出す。
具体的には、第2の乱数更新方式が選択されている場合、カウンタ521は、乱数発生用クロック信号SI1を入力したことをトリガとしてカウント値Cを更新する。その後、乱数値取込データ「01h」が乱数値取込レジスタ539に書き込まれると、ラッチ信号生成回路533はラッチ信号SLを乱数値記憶回路531に出力する。そして、乱数値記憶回路531は、ラッチ信号SLを入力したことをトリガとしてカウンタ521が出力するカウント値を読み込んで記憶する。そして、CPU56は、乱数値記憶回路531が記憶するランダムRの値を読み出す。
なお、タイマ回路534が乱数値取込データ「01h」を乱数値取込レジスタ539に書き込まなければ、カウンタ521がカウント値を更新しても、乱数値記憶回路531は、カウンタ521が更新する乱数値を記憶しない。例えば、タイマ回路534が乱数値取込データ「01h」を乱数値取込レジスタ539に書き込み、カウンタ521が出力するカウント値「3」を乱数値記憶回路531に取り込ませて、乱数値記憶回路531が記憶するランダムRの値「3」を更新させたとする。この場合、タイマ回路534が乱数値取込データ「01h」を再び乱数値取込レジスタ539に書き込まなければ、カウンタ521が出力するカウント値が「3」から「4」や「5」に更新されても、乱数値記憶回路531が記憶する乱数値は更新されず、乱数値記憶回路531から読み出される乱数値は「3」のままである。
カウント値順列変更プログラム554は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込んで、乱数値記憶回路531が記憶するカウント値の順列を変更させるカウント値順列変更処理を実行するためのプログラムである。CPU56は、カウント値順列変更プログラム554に従って処理を実行することによって、数値データ順列変更手段として機能する。CPU56は、カウント値順列変更プログラム554を実行して、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込むことによって、カウント値順列変更回路523が出力し乱数値記憶回路531に入力されるカウント値の順列を変更させる。
シリアル通信回路設定プログラム556は、シリアル通信回路505に各制御基板に搭載されたマイクロコンピュータ(本例では、払出制御用マイクロコンピュータ)とシリアル通信させるための初期設定を行うシリアル通信回路設定処理を実行させるためのプログラムである。すなわち、CPU56は、シリアル通信回路設定プログラム556に従って処理を実行することにより、シリアル通信回路初期設定手段として機能する。
割込優先順位設定プログラム557は、シリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定するためのプログラムである。すなわち、CPU56は、割込優先順位設定プログラム556に従って処理を実行することにより、優先順位初期設定手段として機能する。
また、遊技制御用マイクロコンピュータ560は、図36に示すように、特図保留メモリ570と、大当り判定用テーブルメモリ571と、フラグメモリ572と、始動入賞口スイッチタイマメモリ573とを備える。
特図保留メモリ570は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示の実行条件は成立したが、未だ可変表示の開始条件が成立していない(例えば、特別図柄表示器8がまだ可変表示を実行中である)可変表示の実行条件の成立回数を含む保留データを記憶するためのメモリ(保存領域)である。特図保留メモリ570は、4つのエントリを備え、各エントリには、遊技球が可変入賞球装置15に入賞した順に、保留番号と、入賞に応じて乱数値記憶回路531から読み出したランダムRの値とが対応付けて格納される。また、特別図柄表示器8における特別図柄の可変表示が1回終了したり、大当り遊技状態が終了したりするごとに、特図保留メモリ570の最上位の情報にもとづいた可変表示の開始条件が成立し、特図保留メモリ570最上位の情報にもとづいた可変表示が実行される。この場合、特別図柄の可変表示の開始条件が成立すると、特図保留メモリ570の第2位以下に登録されている情報が1位ずつ繰り上がる。また、特別図柄の可変表示中に遊技球が可変入賞球装置15に新たに入賞した場合には、その新たな入賞にもとづいて乱数値記憶回路531から読み出されたランダムRの値が、特図保留メモリ570の空エントリに登録される。
大当り判定用テーブルメモリ571は、CPU56が特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いる複数の大当り判定テーブルを記憶する。具体的には、大当り判定用テーブルメモリ571は、図37(A)に示すように、確変状態以外の遊技状態(通常状態という)において用いられる通常時大当り判定テーブル571aを記憶する。また、大当り判定用テーブルメモリ571は、図37(B)に示すように、確変状態において用いられる確変時大当り判定テーブル571bを格納する。なお、図37に示す判定テーブルを用いて大当り判定を行う場合、乱数最大値設定レジスタ535に設定された乱数最大値によって大当りと判定する確率が大きく変化することになる。この場合、例えば、設定される乱数最大値が小さすぎると、通常時大当り判定テーブル571aを用いた場合と、確変時大当り判定テーブル571bを用いた場合とで、大当りと判定する確率の差が小さくなってしまい、遊技者の遊技に対する興味を減退させてしまうことになる。そのため、乱数回路503および乱数最大値に対応づけて、複数の判定テーブル(複数の通常時大当り判定用テーブル571aおよび複数の確変時大当り判定用テーブル571b)を大当り判定用テーブルメモリ571に記憶してもよい。そして、CPU56は、大当り判定用テーブルメモリ571が記憶する判定テーブルのうち、使用する乱数回路503および乱数最大値に対応する判定テーブル571a,571bを用いて、表示結果決定プログラム552に従って、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するようにしてもよい。そのようにすることによって、使用する乱数回路503の種類や乱数最大値が異なっても、大当りと判定する確率がある程度同じになるように制御することができる。
なお、この実施の形態では、16ビット乱数回路503bを用いることにする。すなわち、ステップS151の処理で16ビット乱数回路503bを用いることに決定されたとする。よって、ランダムRとして、16ビットで発生できる範囲(0から65535までの範囲)の値をとりうる。
フラグメモリ572には、遊技の進行を制御する遊技制御処理において用いられる各種のフラグが設定される。例えば、フラグメモリ572には、遊技状態が確変状態であることを示す確変フラグや、大当り状態であることを示す大当りフラグが設定される。
始動口スイッチタイマメモリ573は、始動口スイッチ14aから入力される入賞検出信号SSに応じて加算またはクリアされるタイマ値を記憶する。
次に、ウォッチドッグタイマ60について説明する。図38は、ウォッチドッグタイマの構成例を示すブロック図である。ウォッチドッグタイマ(WDT)60は、プログラム管理エリアのWDT設定(KWDT;図30では図示せず)61にデータが設定されることにより、ウォッチドッグタイマ60の動作許可/禁止の設定、および動作を許可した場合のクロックの周期の設定が行われる。この実施の形態では、ウォッチドッグタイマ60を動作させるために、ウォッチドッグタイマ60の動作許可の設定が行われる。また、ウォッチドッグタイマ60のタイムアウト時間が所定の時間(具体的には、後述するように電圧が比較的安定した状態でCPU56が電源断信号の状態を監視するための時間:図43から図45参照)になるように、カウントクロック選択回路65により選択されるクロックの周期が設定される。
WDT制御回路63は、ウォッチドッグタイマ60の動作を制御する回路である。WDT制御回路63は、プログラム管理エリアのWDT設定61に動作許可の設定が行われると、ウォッチドッグタイマ60の動作の制御を実行する。また、WDT制御回路63は、プログラム管理エリアのWDT設定61の設定値にもとづいて、カウントクロック選択回路65が選択するクロックの周期を設定する。カウントクロック選択回路65は、WDT制御回路63による設定に応じてクロック回路からのクロック信号を選択し、選択したクロック信号をカウントクロックとして15ビットアップカウンタに出力する。これにより、ウォッチドッグタイマ60におけるタイムアウト時間(タイムアップ時間)の設定が行われる。
ウォッチドッグタイマ60は、内蔵されているWDTクリアレジスタ(WCL)62に所定のデータが設定されることにより、ウォッチドッグタイマ60のカウントクリアおよびリスタートを実行する。具体的には、WDTクリアレジスタ62に「$55」がCPU56によって書き込まれ、次いで「$AA」がCPU56によって書き込まれ、次いで「$33」がCPU56によって書き込まれる。「$33」が書き込まれた後にWDT制御回路63がクリアおよびリスタートを実行する。すなわち、WDT制御回路63は、クリア&リスタート信号をOR回路64を介して15ビットアップカウンタ66に出力して、カウント値のクリアとカウントアップのリスタートを再開させる。「$55」「$AA」が書き込まれたときは、WDT制御回路63は、現在の動作を継続する。
なお、CPU56によるWDTクリアレジスタ62の設定は、後述するタイマ割込処理のWDTクリア処理(ステップS36)により定期的(2ms毎)に実行される。
15ビットアップカウンタ66は、カウントクロック選択回路65からのカウントクロックをカウントする。CPU56が正常にプログラムを実行しているときは、定期的にWDTクリアレジスタ62の設定が行われることになり、15ビットアップカウンタ66がタイムアウトする前にカウント値のクリアおよびリスタート(再度カウント開始)が実行されることになる。一方、CPU56が正常にプログラムを実行していないとき、具体的には、待機状態(無限ループ)に移行したとき(図46のステップS83のN、図55のステップS481の後)は、WDTクリアレジスタ62の設定が行われず、15ビットアップカウンタ66のカウント値が所定値(タイムアウト時間に相当)に達してタイムアウトとなる。タイムアウトになると、15ビットアップカウンタ66は、タイムアウト信号を出力制御回路67に出力する。出力制御回路67は、15ビットアップカウンタ66からのタイムアウト信号を遊技制御用マイクロコンピュータ560のリセット/割込みコントローラ502に出力する。
リセット/割込みコントローラ502は、ウォッチドッグタイマ60がタイムアウト信号を発生すると、このタイムアウト信号を受け付けることにより、ユーザリセットを発生し、ユーザプログラムのベクタテーブルで示されるアドレス(後述するメイン処理の先頭のアドレス)からユーザプログラムをCPU56に再実行させる。ウォッチドッグタイマ60によるユーザリセットを発生すると、CPU56は、外部デバイスへのリセット信号としてロウレベルの信号を出力する。このリセット信号は、ウォッチドッグタイマ60のOR回路64を介して15ビットアップカウンタ66に出力され、カウント値のクリアが行われる。
次に、電源基板910の構成を図39のブロック図を参照して説明する。電源基板910には、遊技機内の各電気部品制御基板や機構部品への電力供給を実行または遮断するための電源スイッチ914が設けられている。なお、電源スイッチ914は、遊技機において、電源基板910の外に設けられていてもよい。電源スイッチ914が閉状態(オン状態)では、交流電源(AC24V)がトランス911の入力側(一次側)に印加される。トランス911は、交流電源(AC24V)と電源基板910の内部とを電気的に絶縁するためのものであるが、その出力電圧もAC24Vである。また、トランス911の入力側には、過電圧保護回路としてのバリスタ918が設置されている。
電源基板910は、電気部品制御基板(主基板31、払出制御基板37等)と独立して設置され、遊技機内の各基板および機構部品が使用する電圧を生成する。この例では、AC24V、VSL(DC+30V)、VLP(DC+24V)、VDD(DC+12V)およびVCC(DC+5V)を生成する。また、バックアップ電源(VBB)すなわちバックアップRAMに記憶内容を保持させるための記憶保持手段となるコンデンサ916は、DC+5V(VCC)すなわち各基板上のIC等を駆動する電源のラインから充電される。また、+5Vラインとバックアップ+5V(VBB)ラインとの間に、逆流防止用のダイオード917が挿入される。なお、VSLは、整流平滑回路915において、整流素子でAC24Vを整流昇圧することによって生成される。VSLは、ソレノイド駆動電源となる。また、VLPは、ランプ点灯用の電圧であって、整流回路912において、整流素子でAC24Vを整流することによって生成される。
電源電圧生成手段としてのDC−DCコンバータ913は、1つまたは複数のレギュレータIC(図39では2つのレギュレータIC924A,924Bを示す)を有し、VSLにもとづいてVDDおよびVCCを生成する。レギュレータIC(スイッチングレギュレータ)924A,924Bの入力側には、比較的大容量のコンデンサ923A,923Bが接続されている。従って、外部からの遊技機に対する電力供給が停止したときに、VSL、VDD、VCC等の直流電圧は、比較的緩やかに低下する。
図39に示すように、トランス911から出力されたAC24Vは、そのままコネクタ922Bに供給される。また、VLPは、コネクタ922Cに供給される。VCC、VDDおよびVSLは、コネクタ922A,922B,922Cに供給される。
コネクタ922Aに接続されるケーブルは、主基板31に接続される。また、コネクタ922Bに接続されるケーブルは、払出制御基板37に接続される。従って、コネクタ922A,922Bには、VBBも供給されている。例えば、コネクタ922Cに接続されるケーブルは、音/ランプ制御基板80bに接続される。なお、図柄制御基板80aには、音/ランプ制御基板80bを経由して各電圧が供給される。
また、電源基板910には、押しボタン構造のクリアスイッチ921が搭載されている。クリアスイッチ921が押下されるとローレベル(オン状態)のクリア信号が出力され、コネクタ922Bを介して払出制御基板37に送信される。また、クリアスイッチ921が押下されていなければハイレベル(オフ状態)の信号が出力される。なお、クリアスイッチ921は、押しボタン構造以外の他の構成であってもよい。また、クリアスイッチ921は、遊技機において、電源基板910以外に設けられていてもよい。
さらに、電源基板910には、電気部品制御基板に搭載されているマイクロコンピュータに対するリセット信号を作成するとともに、電源断信号を出力する電源監視回路920と、電源監視回路920からのリセット信号を増幅してコネクタ922A,922B,922Cに出力するとともに、電源断信号を増幅してコネクタ922Bに出力する出力ドライバ回路925が搭載されている。なお、図柄制御用マイクロコンピュータ100aに対するリセット信号は、音/ランプ制御基板80bを経由して図柄制御基板80aに伝達される。
電源監視回路920は電源断信号を出力する電源監視手段とリセット信号を生成するリセット信号生成手段とを実現する回路であるが、電源監視回路920として、市販の停電監視リセットモジュールICを使用することができる。電源監視回路920は、遊技機において用いられる所定電圧(例えばVSL+30V)が所定値(例えば+22V)以下になった期間が、あらかじめ決められている時間(例えば56ms)以上継続すると電源断信号を出力する。具体的には、電源断信号をオン状態(ローレベル)にする。また、電源監視回路920は、例えば、VCCが+9V以下になると、リセット信号をローレベルにする。
なお、この実施の形態では、電源断信号を出力する機能とリセット信号を出力する機能とが1つの電源監視回路920で実現されているが、それらを別の回路で実現してもよい。その場合、リセット信号を出力する回路として、ウォッチドッグタイマ内蔵ICを使用することができる。
電源監視回路920は、遊技機に対する電力供給が停止する際には、電源断信号を出力(ローレベルにする)してから所定期間が経過したことを条件にリセット信号をローレベルにする。所定期間は、主基板31に搭載されている遊技制御用マイクロコンピュータ560および払出制御基板37に搭載されている払出制御用マイクロコンピュータ370が、後述する電源断処理を実行するのに十分な時間である。すなわち、電源監視回路920は、電圧低下検出信号としての電源断信号を出力した後、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370が、電源断処理を実行完了した後に、動作停止信号(リセット信号のローレベル)を出力する。また、電源監視回路920は、電圧低下検出信号を出力する第1の電源監視手段と動作停止信号を出力する第2の電源監視手段とを兼ねている。また、遊技機に対する電力供給が開始され、VSLが例えば+5.0Vを越えるとリセット信号をハイレベルにする。そして、VSLが例えば+22Vを超えると電源断信号を出力しない状態にする(ハイレベルにする)。
電源監視回路920からの電源断信号すなわち電源監視手段からの検出信号は、払出制御基板37において、入力ポート372gを介して払出制御用マイクロコンピュータ370に入力される。すなわち、払出制御用マイクロコンピュータ370は、入力ポート372gの入力信号を監視することによって遊技機への電力供給の停止の発生を確認することができる。また、主基板31において、電源監視回路920からの電源断信号は、払出制御基板37および主基板31に搭載されている入力ポートを介して遊技制御用マイクロコンピュータ560に入力される。すなわち、遊技制御用マイクロコンピュータ560は、入力ポートの入力信号を監視することによって遊技機への電力供給の停止の発生を確認することができる。
なお、この実施の形態では、電源監視手段が所定電位の電源の出力を監視し、外部から遊技機に供給される電力の供給停止に関わる検出条件として、遊技機の外部からの電圧(この実施の形態ではAC24V)から作成された所定の直流電圧が所定値以下になったこと(所定の直流電圧が所定期間基準値以下になった場合でもよい)を用いたが、検出条件は、それに限られず、外部のからの電力が途絶えたことを検出できるのであれば、他の条件を用いてもよい。例えば、交流波そのものを監視して交流波が途絶えたこと(交流波が所定期間、所定の電圧値となっていない場合でもよい)を検出条件としてもよいし、交流波をディジタル化した信号を監視して、ディジタル信号が平坦になったこと(ディジタル化した信号が所定期間平坦になった場合でもよい)をもって交流波が途絶えたことを検出条件としてもよい。
図40は、遊技制御手段における出力ポートの割り当ての例を示す説明図である。図40に示すように、音/ランプ制御基板80bに送信される演出制御コマンドの8ビットのデータ(演出制御信号)は出力ポート1から出力される。なお、図40に示された「論理」(例えば1がオン状態)と逆の論理(例えば0がオン状態)を用いてもよいが、特に、接続確認信号については、主基板31と払出制御基板37との間の信号線において断線が生じた場合やケーブル外れの場合(ケーブル未接続を含む)等に、払出制御用マイクロコンピュータ370では必ずオフ状態と検知されるように「論理」が定められる。具体的には、一般に、断線やケーブル外れが生ずると信号の受信側ではハイレベルが検知されるので、主基板31と払出制御基板37との間の信号線でのハイレベルが、遊技制御手段における出力ポートにおいてオフ状態になるように「論理」が定められる。従って、必要であれば、主基板31において出力ポートの外側に、信号を論理反転させる出力バッファ回路が設置される。
また、出力ポート2から、音/ランプ制御基板80bに送信される演出制御コマンドについての演出制御INT信号(取込信号)も出力される。演出制御INT信号は、演出制御コマンドの8ビットのデータを取り込む(受信する)ことを音/ランプ制御手段に指令するための信号である。また、出力ポート2から、大当りの種別を示す信号や遊技状態を示す信号、図柄確定回数を示す信号が情報出力回路(図示せず)を介して外部の装置(管理装置)に出力される。さらに、出力ポート2から、主基板31が接続されていることを示す接続確認信号も出力される。
また、出力ポート3から、開閉板201,202(第1大入賞口、第2大入賞口)を開閉するためのソレノイド(大入賞口扉ソレノイド)241,242、および可変入賞球装置15を開閉するためのソレノイド(普通電動役物ソレノイド)16に対する駆動信号が出力される。また、出力ポート3から、大入賞口表示灯38,39に対する制御信号も出力される。
なお、賞球コマンドを払出制御基板37に出力するためのポートが上記の出力ポートに割り当てられていてもよい。この場合、シリアル通信により賞球コマンドが送信されるので、1ビットのポートを割り当てればよい。
図41は、遊技制御手段における入力ポートのビット割り当ての例を示す説明図である。図41に示すように、入力ポート0のビット0〜5には、それぞれ、カウントスイッチ231,232、ゲートスイッチ32a、入賞口スイッチ29a,30a、始動口スイッチ14aの検出信号が入力される。また、入力ポート1のビット0,1には、それぞれ、払出制御基板37からの電源断信号およびクリアスイッチ921の検出信号が入力される。また、入力ポート1のビット2には、乱数回路503が正常に乱数を更新しているかどうかを確認するための乱数確認信号が入力される。
次に、電力供給開始時における各CPUおよびウォッチドッグタイマ60の動作について説明する。図42は、電力供給開始時における各CPUおよびウォッチドッグタイマの動作を示すタイミング図である。なお、図42は、電源がオン状態となってから所定の電源電圧(VSL)が正常に+30Vまで上昇する場合を示している。
図42に示すように、電源がオン状態になると、VSLの電圧値は上昇していく。電圧値が+9Vになると、電源監視回路902は、リセット信号をハイレベルにする。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、各CPU(CPU56、払出制御用CPU、音/ランプ制御用CPU101b、図柄制御用CPU101a)は動作可能状態となる。そして、CPU(メインCPU)56は、動作可能状態になると、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、メイン処理を開始する。その他のCPU(サブCPU)は、動作可能状態になると、直ちにメイン処理を開始する。
電圧値が+22Vになると、電源監視回路902は、電源断信号をオフ状態(ハイレベル)にする。このとき、図42に示す例では、CPU56は未だセキュリティチェック処理を実行している。CPU56は、セキュリティチェック処理を終了すると、メイン処理を開始する。メイン処理において、CPU56は、必要な初期設定を行った後、電源断信号がオフ状態であるか否かを確認する。図42に示す例では、電源断信号はすでにオフ状態になっている。電源断信号がオフ状態になっているときは、CPU56は、遊技制御処理の実行開始を遅らせるためのソフトウェア遅延処理を実行し、乱数回路503が正常に乱数を更新しているかどうかを確認するために乱数確認信号が入力されているか否かを確認する。乱数確認信号が入力されていれば、CPU56は、RAM55の記憶内容を初期化する初期化処理を実行する。なお、電力供給停止時に後述する電源断処理が実行され、その後に電力供給が再開されたときに所定の復旧条件が成立した場合には、RAM55に所定期間保持されているバックアップデータにもとづいて制御状態を復旧させる復旧処理が実行される。その後、CPU56は、後述するタイマ割込にもとづく遊技制御処理を開始する。
サブCPU(例えば払出制御用CPU)は、メイン処理を開始すると、初期化処理を実行し、その後にタイマ割込にもとづく制御処理(例えば払出制御処理)を開始する。なお、この実施の形態では、払出制御用マイクロコンピュータに内蔵されているRAMも電源バックアップされるとともに、電力供給停止時に払出制御用マイクロコンピュータは電源断処理を実行する。従って、遊技制御用マイクロコンピュータ560と同様に、払出制御用マイクロコンピュータにおいても、電力供給停止時に電源断処理が実行され、その後に電力供給が再開されたときに所定の復旧条件が成立した場合には、RAMに所定期間保持されているバックアップデータにもとづいて制御状態を復旧させる復旧処理が実行される。その他のサブCPU(音/ランプ制御用CPUなど)は、RAMが電源バックアップされていないので、復旧処理が実行されることはない。
遊技制御用マイクロコンピュータ560に内蔵されているウォッチドッグタイマ60は、内蔵レジスタにCPU56による初期設定が行われたことにもとづいてカウントアップする動作(タイムアウト時間を計測する動作)を開始する。その後に遊技制御処理が開始されると、CPU56は、遊技制御処理において、内部バスを介してウォッチドッグタイマ60のWDTクリアレジスタにデータを定期的に設定することにより、ウォッチドッグタイマ60のカウント値をクリアしリスタート(カウントの再開)させる処理を実行する。これにより、遊技制御処理の実行中に、ウォッチドッグタイマ60がタイムアウトしてリセットされてしまうことはない。なお、CPU56がソフトウェア遅延処理を実行している間にウォッチドッグタイマ60がタイムアウトしてしまわないように、ソフトウェア遅延処理の実行中においても、CPU56がウォッチドッグタイマ60のWDTクリアレジスタにデータを定期的に設定し、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理を実行する。
図42に示したように、CPU56においては、遊技制御処理を開始する前にソフトウェア遅延処理を実行しているため、遊技制御処理の実行開始を他のサブCPUにおける制御処理(例えば払出制御処理や音/ランプ制御処理など)が実行可能となる時期よりも遅延させることができる。その結果、CPU56が遊技制御処理にもとづいてサブCPUにコマンドを送信したときに、サブCPUにおける制御処理が開始されていないためにコマンドを取りこぼしてしまうのを回避することができる。
図43も、図42と同様に、電力供給開始時における各CPUおよびウォッチドッグタイマの動作を示すタイミング図である。ただし、図43は、電源がオン状態となってから所定の電源電圧(VSL)が正常に+30Vまで上昇しない場合、すなわち、電源電圧の立ち上がりが遅い場合を示している。
図43に示すように、電源がオン状態になると、VSLの電圧値は上昇していく。電圧値が+9Vになると、電源監視回路902は、リセット信号をハイレベルにする。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、各CPU(CPU56、払出制御用CPU、音/ランプ制御用CPU101b、図柄制御用CPU101a)は動作可能状態となる。そして、CPU(メインCPU)56は、セキュリティチェック処理を実行した後、メイン処理を開始し、その他のCPU(サブCPU)は、直ちにメイン処理を開始する。
CPU56は、セキュリティチェック処理を終了すると、メイン処理を開始する。メイン処理において、CPU56は、必要な初期設定を行った後、電源断信号がオフ状態であるか否かを確認する。このとき、図43に示す例では、電源電圧の立ち上がりが遅く、電圧値が+22Vに達していないため、電源断信号は未だオフ状態になっていない(オン状態のままである)。電源断信号がオン状態のとき、CPU56は、制御状態を待機状態(無限ループ)に移行させる。一方、サブCPU(例えば払出制御用CPU)は、メイン処理を開始すると、初期化処理を実行し、その後にタイマ割込にもとづく制御処理(例えば払出制御処理)を開始する。
図43に示すように、その後に電圧値が+22Vになると、電源監視回路902は、電源断信号をオフ状態(ハイレベル)にする。このとき、CPU56は待機状態に制御されている。
遊技制御用マイクロコンピュータ560に内蔵されているウォッチドッグタイマ60は、内蔵レジスタにCPU56による初期設定が行われたことにもとづいてカウントアップする動作を開始する。CPU56が待機状態のときは、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理が実行されない。従って、ウォッチドッグタイマ60のカウント値は所定値に達してタイムアウトとなる。タイムアウトになると、ウォッチドッグタイマ60は、タイムアウト信号を遊技制御用マイクロコンピュータ560のリセット/割込みコントローラ502に出力する。
リセット/割込みコントローラ502は、ウォッチドッグタイマ60がタイムアウト信号を発生すると、ユーザリセットを発生し、ユーザプログラムのベクタテーブルで示されるアドレス(メイン処理の先頭のアドレス)からプログラムをCPU56に再実行させる。ウォッチドッグタイマ60によるユーザリセットを発生すると、CPU56は、外部デバイスへのリセット信号としてロウレベルの信号を出力する。このリセット信号は、ウォッチドッグタイマ60のOR回路64を介して15ビットアップカウンタ66に出力され、ウォッチドッグタイマ60のカウント値のクリアされる。
CPU56は、ユーザリセットによりメイン処理が再開されると、必要な初期設定を実行した後、再び電源断信号がオフ状態であるか否かを確認する。このとき、図43に示す例では、電源断信号はオフ状態(ハイレベル)になっている。従って、上述したように、CPU56は、ソフトウェア遅延処理を実行し、乱数確認処理を実行し、初期化処理を実行した後に、タイマ割込にもとづく遊技制御処理を実行する。遊技制御処理が開始されると、CPU56は、遊技制御処理において、内部バスを介してウォッチドッグタイマ60のWDTクリアレジスタにデータを定期的に設定することにより、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理を実行する。また、CPU56がソフトウェア遅延処理を実行している間にウォッチドッグタイマ60がタイムアウトしてしまわないように、ソフトウェア遅延処理の実行中においても、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理を実行する。
図43に示したように、電源断信号を確認し、電源断信号がオフ状態でないときは所定時間(ウォッチドッグタイマ60のタイムアウト時間)おいてから再度電源断信号を確認するように構成されているので、比較的電圧が安定した状態で電源断信号の状態を監視することができるようになる。そして、図43に示した構成では、ソフトウェアによる処理で所定期間後の電源断信号の監視を実行しているわけではないので、そのためのプログラムを作成する必要がなく、プログラム容量が大きくなるわけではない。また、図43に示した構成では、遊技制御用マイクロコンピュータ560に内蔵されているウォッチドッグタイマ60(このウォッチドッグタイマ60は後述する電力供給時における瞬停を検出する場合にも利用される)を利用しているため、ハードウェアによる回路を特別に設けているわけではなく、特別な回路を設ける分のコストがかかってしまうこともない。
図44は、電力供給停止時における各CPUおよびウォッチドッグタイマの動作を示すタイミング図である。図44に示すように、VSLの電圧値が+30Vから徐々に低下し、電圧値が+22Vになると、電源監視回路902は電源断信号をオン状態(ローレベル)にする。電源断信号がオン状態になると、CPU56は、制御状態を復旧させるために必要なデータを電源バックアップされたRAM55に保存するための電源断処理を実行し、そして、制御状態を待機状態(無限ループ)に移行させる。その後、電圧値が+9Vに低下すると、電源監視回路902は、リセット信号をローレベルにする。リセット信号が入力されるリセット端子の入力レベルがローレベルになると、各CPU(CPU56、払出制御用CPU、音/ランプ制御用CPU101b、図柄制御用CPU101a)は動作停止状態となる。
ウォッチドッグタイマ60は、電源断処理が実行されているときもカウントアップしているが、ウォッチドッグタイマ60の動作可能電圧値(例えば+5V)まで電圧値が低下すると、動作を停止する。このとき、ウォッチドッグタイマ60はタイムアウトしていない。
なお、その後に、電力供給が再開されたときに、所定の復旧条件が成立している場合は、CPU56はRAM55の記憶内容にもとづいて復旧処理を実行する。なお、この実施の形態では、払出制御用CPUも電源断信号がオフ状態になったことにもとづいて電源断処理を実行する。
図45は、電力供給瞬停時における各CPUおよびウォッチドッグタイマの動作を示すタイミング図である。図45に示すように、VSLの電圧値が+30Vから徐々に低下し、電圧値が+22Vになると、電源監視回路902は電源断信号をオン状態(ローレベル)にする。電源断信号がオン状態になると、CPU56は、電源断処理を実行した後、制御状態を待機状態(無限ループ)に移行させる。その後も電圧値が徐々に低下していくが、図45に示す例では、電圧値が+9Vに至る前に電圧値が上昇していき、再び+30Vに戻っている。このとき、CPU56の制御状態は待機状態に維持されてしまう。
一方、ウォッチドッグタイマ60は、電源断処理が開始されたとき(正確には、遊技制御処理におけるクリアおよびリスタートの処理が実行されなくなった時点)からカウントを開始している。そして、制御状態が待機状態に移行された後もカウントを行っている。ウォッチドッグタイマ60は、カウント値が所定値になってタイムアウトすると、タイムアウト信号を遊技制御用マイクロコンピュータ560のリセット/割込みコントローラ502に出力する。
リセット/割込みコントローラ502は、ウォッチドッグタイマ60がタイムアウト信号を発生すると、ユーザリセットを発生し、ユーザプログラムのベクタテーブルで示されるアドレス(メイン処理の先頭のアドレス)からプログラムをCPU56に再実行させる。
CPU56は、ユーザリセットによりメイン処理が開始されると、必要な初期設定を実行した後、電源断信号がオフ状態であるか否かを確認する。このとき、図45に示す例では、電源断信号はオフ状態(ハイレベル)になっている。従って、CPU56は、ソフトウェア遅延処理を実行し、乱数確認処理を実行し、復旧処理を実行した後に、タイマ割込にもとづく遊技制御処理を実行する。遊技制御処理が開始されると、CPU56は、遊技制御処理において、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理を実行する。なお、ソフトウェア遅延処理の実行中においても、ウォッチドッグタイマ60のカウント値をクリアしリスタートさせる処理を実行する。
図45に示したように、電力供給の瞬停等が発生したことにもとづいて、制御状態が待機状態に移行されたとしても、ウォッチドッグタイマ60により所定期間経過後にユーザリセットをかけるように構成されているので、制御状態を待機状態から容易に復帰させることができる。
次に遊技制御用マイクロコンピュータ560の動作について説明する。図46および図47は、遊技機に対して電力供給が開始され遊技制御用マイクロコンピュータ560へのリセット信号がハイレベルになったことに応じて遊技制御用マイクロコンピュータ560のCPU56が実行するメイン処理を示すフローチャートである。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、遊技制御用マイクロコンピュータ560のCPU56は、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、ステップS1以降のメイン処理を開始する。メイン処理において、CPU56は、まず、必要な初期設定を行う。
初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1)。次に、マスク可能割込の割込モードを割込モード2に設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。なお、ステップS2では、遊技制御用マイクロコンピュータ560の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードに設定する。また、マスク可能な割込が発生すると、CPU56は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
次いで、内蔵デバイスレジスタの設定(初期化)を行う(ステップS4)。ステップS4の処理によって、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の設定(初期化)がなされる。また、ウォッチドッグタイマ60の内蔵レジスタ(WDT設定61)の設定も行われる。
この実施の形態で用いられる遊技制御用マイクロコンピュータ560は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)504も内蔵している。
次いで、CPU56は、遊技の進行を制御する遊技装置制御処理(遊技制御処理)の開始タイミングをソフトウェアで遅らせるためのソフトウェア遅延処理を実行する。具体的には、まず、ウェイトカウンタ1に、初期化ウェイト回数指定値1をセットする(ステップS81)。次いで、ウォッチドッグタイマ60のWDTクリアレジスタ62にデータを設定してクリアおよびリスタートさせる処理を実行する(ステップS82)。そして、入力ポート1のビット0の状態によって電源断信号がオフ状態であるか否かを確認する電源断信号確認処理を実行する(ステップS83)。遊技機に対する電力供給が開始されたときに、+30V電源などの各種電源の出力電圧は徐々に規定値に達するのであるが、ステップS83の処理によって、すなわち、電源断信号がオフ状態である(ハイレベルになっている)ことを確認することによりCPU56は電源電圧が安定したことを確認することができる。なお、ノイズなどの影響で誤検出してしまう可能性もあるため、電源断信号の確認は所定回数(例えば5回)連続して実行される。
電源断信号がオン状態(ローレベル)である場合には(ステップS83のN)、CPU56は、無限ループの処理を繰り返し実行させることにより制御状態を待機状態に移行させる。電源断信号がオフ状態(ハイレベル)である場合には(ステップS83のY)、CPU56は、ウェイトカウンタ2に、初期化ウェイト回数指定値2をセットする(ステップS84)。なお、ウェイトカウンタ1,2として、遊技制御用マイクロコンピュータ560が内蔵する汎用のレジスタが用いられる。そして、ウェイトカウンタ2の値が0になるまでウェイトカウンタ2の値を1ずつ減算する(ステップS85,S86)。ウェイトカウンタ2の値が0になったらウェイトカウンタ1の値を1減算し(ステップS87)、ウェイトカウンタ1の値が0になっていなければ(ステップS88)、ステップS82に戻る。ウェイトカウンタ1の値が0になっていれば、ソフトウェア遅延処理を終了する。
以上のようなソフトウェア遅延処理によって、ほぼ、[(初期化ウェイト回数指定値1)×(初期化ウェイト回数指定値2)×(ステップS83,S84の処理時間)]だけ、ソフトウェア遅延処理を実行しない場合に比べて、遊技制御処理の開始タイミングを遅延させることができる。換言すれば、所望の時間だけ遊技制御処理の開始タイミングを遅延させることができるように、初期化ウェイト回数指定値1,2の値が決定される。なお、初期化ウェイト回数指定値1,2の値は、ROM54に設定されている。また、ここで説明したソフトウェア遅延処理は一例であって、他の方法によってソフトウェア遅延処理を実現してもよい。また、遊技制御用マイクロコンピュータ560は、ステップS81,S84でセットされるウェイトカウンタ1およびウェイトカウンタ2の値を入力する手段を備えていてもよい。ウェイトカウンタ1およびウェイトカウンタ2は、遅延時間の長さを定めるパラメータである。従って、ウェイトカウンタ1およびウェイトカウンタ2の値を入力する手段を備えていれば、遅延時間の設定に関する汎用性を向上させることができる。
ソフトウェア遅延処理を終了すると、CPU56は、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の設定(初期化)(ステップS5)を行った後、RAM55をアクセス可能状態に設定する(ステップS6)。
次いで、CPU56は、クリアスイッチがオンされているか否か確認する(ステップS7)。なお、CPU56は、入力ポート1を介して1回だけクリア信号の状態を確認するようにしてもよいが、複数回クリア信号の状態を確認するようにしてもよい。例えば、クリア信号の状態がオフ状態であることを確認したら、所定時間(例えば、0.1秒)の遅延時間をおいた後、クリア信号の状態を再確認する。そのときにクリア信号の状態がオン状態であることを確認したら、クリア信号がオン状態になっていると判定する。また、このときにクリア信号の状態がオフ状態であることを確認したら、所定時間の遅延時間をおいた後、再度、クリア信号の状態を再確認するようにしてもよい。ここで、再確認の回数は、1回または2回に限られず、3回以上であってもよい。また、2回チェックして、チェック結果が一致していなかったときにもう一度確認するようにしてもよい。
ステップS7でクリアスイッチがオンでない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理(電源断処理))が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような電力供給停止時処理が行われていたことを確認した場合には、CPU56は、電力供給停止時処理が行われた、すなわち電力供給停止時の制御状態が保存されていると判定する。電力供給停止時処理が行われていないことを確認した場合には、CPU56は初期化処理を実行する。
電力供給停止時処理が行われていたか否かは、電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、電力供給停止時処理を実行したことに応じた値(例えば2)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域に電力供給停止時処理を実行したことを示すフラグをセットし、ステップS8において、そのフラグがセットされていることを確認したら電力供給停止時処理が行われたと判定してもよい。
電力供給停止時の制御状態が保存されていると判定したら、CPU56は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象になるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムにする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっている可能性があることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理(ステップS10〜S14の処理)を実行する。
チェック結果が正常であれば、CPU56は、遊技制御手段の内部状態と演出制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う。具体的には、ROM54に格納されているバックアップ時設定テーブルの先頭アドレスをポインタに設定し(ステップS91)、バックアップ時設定テーブルの内容を順次作業領域(RAM55内の領域)に設定する(ステップS92)。作業領域はバックアップ電源によって電源バックアップされている。バックアップ時設定テーブルには、作業領域のうち初期化してもよい領域についての初期化データが設定されている。ステップS91およびS92の処理によって、作業領域のうち初期化してはならない部分については、保存されていた内容がそのまま残る。初期化してはならない部分とは、例えば、電力供給停止前の遊技状態を示すデータ(特別図柄プロセスフラグなど)、出力ポートの出力状態が保存されている領域(出力ポートバッファ)、未払出賞球数を示すデータが設定されている部分などである。
また、CPU56は、ROM54に格納されているバックアップ時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS93)、ステップS15に移行する。なお、ステップS93において他の制御基板におけるマイクロコンピュータ(音/ランプ制御用マイクロコンピュータ100b、図柄制御用マイクロコンピュータ100a)の制御状態を復旧させるためのコマンド(復旧コマンド)が送信される。復旧コマンドとして、電力供給停止時の遊技状態に応じた遊技演出の実行を指定する通常表示コマンド(E401(H))、特別表示コマンド(E402(H))および高確率潜伏表示コマンド(E403(H))が設けられている(図62参照)。CPU56は、遊技状態に応じたフラグ(後述する確変フラグ、時短フラグおよび高確率潜伏状態フラグ)を確認し、電力供給停止時の遊技状態に応じた遊技演出の実行を指定する復旧コマンドを他の制御基板のマイクロコンピュータに送信する。他の制御基板のマイクロコンピュータは、そのような復旧コマンの受信にもとづいて各種の演出装置(電気部品)を用いて遊技状態に応じた遊技演出を実行する。なお、この実施の形態では、復旧コマンドは、音/ランプ制御用マイクロコンピュータ100bに送信された後に、音/ランプ制御用マイクロコンピュータ100bから図柄制御用マイクロコンピュータ100aに送信される。このとき、音/ランプ制御用マイクロコンピュータ100bは、遊技制御用マイクロコンピュータ560からの復旧コマンドをそのまま図柄制御用マイクロコンピュータ100aに送信してもよいし、遊技制御用マイクロコンピュータ560からの復旧コマンドを加工した後に図柄制御用マイクロコンピュータ100aに送信してもよい。
初期化処理では、CPU56は、まず、RAMクリア処理を行う(ステップS10)。なお、RAM55の全領域を初期化せず、所定のデータをそのままにしてもよい。また、ROM54に格納されている初期化時設定テーブルの先頭アドレスをポインタに設定し(ステップS11)、初期化時設定テーブルの内容を順次業領域に設定する(ステップS12)。
ステップS11およびS12の処理によって、例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄バッファ、総賞球数格納バッファ、特別図柄プロセスフラグ、賞球中フラグ、球切れフラグなど制御状態に応じて選択的に処理を行うためのフラグに初期値が設定される。また、出力ポートバッファにおける接続確認信号を出力する出力ポートに対応するビットがセット(接続確認信号のオン状態に対応)される。
また、CPU56は、ROM54に格納されている初期化時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS13)、その内容に従ってサブ基板を初期化するための初期化コマンドをサブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、可変表示装置9に表示される初期図柄を示すコマンドや払出制御基板37への初期化コマンド等を使用することができる。
また、CPU56は、各乱数回路503a,503bを初期設定する乱数回路設定処理を実行する(ステップS15a)。この場合、CPU56は、乱数回路設定プログラム551に従って処理を実行することによって、各乱数回路503a,503bにランダムRの値を更新させるための設定を行う。
また、CPU56は、シリアル通信回路505を初期設定するシリアル通信回路設定処理を実行する(ステップS15b)。この場合、CPU56は、シリアル通信回路設定プログラム556に従って処理を実行することによって、シリアル通信回路505に払出制御用マイクロコンピュータとシリアル通信させるための設定を行う。
シリアル通信回路505を初期設定すると、CPU56は、シリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定する(ステップS15c)。この場合、CPU56は、割込優先順位設定プログラム557に従って処理を実行することによって、割込処理の優先順位を初期設定する。
例えば、CPU56は、各割込処理のデフォルトの優先順位を含む所定の割込処理優先順位テーブルに従って、各割込処理の優先順位を初期設定する。図48は、割込処理優先順位テーブルの例を示す説明図である。この実施の形態では、CPU56は、図48に示す割込処理優先順位テーブルに従って、シリアル通信回路505において通信エラーが発生したことを割込原因とする割込処理を優先して実行するように初期設定する。この場合、例えば、CPU56は、通信エラーが発生したことを割込原因とする割込処理を優先して実行する旨を示す通信エラー時割込優先実行フラグをセットする。
なお、この実施の形態では、タイマ割込とシリアル通信回路505からの割り込み要求とが同時に発生した場合、CPU56は、タイマ割込による割込処理を優先して行う。
また、ユーザによって各割込処理のデフォルトの優先順位を変更することもできる。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された割込処理を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、割込処理の優先順位を設定する。
上記のステップS15a〜15cの処理は、ステップS4の内蔵デバイスレジスタの設定の処理において実行されてもよい。
また、上述したシリアル通信回路設定処理(ステップS15b)と割り込み優先順位の設定処理(ステップS15c)の実行順序を入れ替えてもよい。すなわち、割り込み優先順位の設定を行った後にシリアル通信回路設定処理(ステップS15b)を行うようにしてもよい。このような構成では、シリアル通信回路505の設定とタイマ割込の設定の前に割り込みの優先順位が決められることになる。
次いで、入力ポート1のビット2の状態によって乱数確認信号が入力されているか否かを確認する乱数確認処理を実行する(ステップS89)。この実施の形態において、乱数確認信号は、クロック信号出力回路537から出力されるクロック信号とされている。クロック信号出力回路537からクロック信号が出力されていなければ、乱数回路503において乱数を更新することができなくなるので、乱数回路503に異常が発生していると判断することができる。なお、乱数回路503が正常に動作しているかどうかを確認する別の処理として、クロック信号出力回路537から出力されるクロック信号をウォッチドッグタイマ(待機状態から復帰させるものとは別のウォッチドッグタイマ)に入力させ、そのウォッチドッグタイマはクロック信号出力回路537からのクロック信号が入力されなくなるとカウントを開始し、タイムアウトしたときに乱数回路503の異常を示す信号をCPU56に出力するようにしてもよい。また、乱数回路503から乱数を複数回抽出し、抽出した乱数値が同一の値であるか否かを判定する処理としてもよい。このような処理によれば、乱数値が同一値であれば、乱数回路503が乱数を更新していないと判断することができる。
CPU56は、乱数確認信号が入力されていないと判断した場合には(ステップS89のN)、乱数回路503の異常を報知する処理を実行する(ステップS90)。例えば、乱数回路503の異常を報知するためのランプ(図示せず)を点灯させる。また、音/ランプ制御基板80bに乱数回路503の異常を報知させるための演出制御コマンドを送信して、乱数回路503の異常を報知するエラー音を音声出力させたり、乱数回路503の異常を報知する所定の点灯パターンでランプを点灯させたりする。また、音/ランプ制御基板80bを介して図柄制御基板80aに乱数回路503の異常を報知させるためのコマンドを送信して、乱数回路503の異常を報知する画面表示を可変表示装置9において実行させたりする。
そして、CPU56は、所定時間(例えば2ms)ごとに定期的にタイマ割込がかかるように遊技制御用マイクロコンピュータ560に内蔵されているCTCのレジスタの設定を行なうタイマ割込設定処理を実行する(ステップS16)。すなわち、初期値として例えば2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、2msごとに定期的にタイマ割込がかかるとする。
タイマ割込の設定が完了すると、CPU56は、電源断信号が出力されたか否か(オン状態になったか否か)を検出する電源断処理(電源断検出処理)を実行する(ステップS18)。なお、電源断処理は、2ms毎に実行されるタイマ割込処理(遊技制御処理)において実行されてもよい。また、CPU56は、表示用乱数更新処理(ステップS19a)および初期値用乱数更新処理(ステップS19b)を繰り返し実行する。CPU56は、電源断処理、表示用乱数更新処理および初期値用乱数更新処理が実行されるときには割込禁止状態にして(ステップS17)、表示用乱数更新処理および初期値用乱数更新処理の実行が終了すると割込許可状態にする(ステップS20)。
ステップS20で割込許可状態に設定されると、次にステップS18の処理が実行されて割込禁止状態とされるまで、タイマ割込またはシリアル通信回路505からの割り込み要求を許可する状態となる。そして、割込許可状態に設定されている間に、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、後述するタイマ割込処理を実行する。また、割込許可状態に設定されている間に、シリアル通信回路505から割り込み要求が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、後述する各割込処理(通信エラー割込処理や、受信時割込処理、送信完了割込処理)を実行する。また、本実施の形態では、ステップS17からステップS20までのループ処理の前にステップS15bを実行することによって、タイマ割込または割り込み要求を許可する状態に設定される前に、割込処理の優先順位を設定または変更する処理が行われる。
なお、表示用乱数とは、特別図柄表示器8の表示を決定するための乱数である。この実施の形態では、表示用乱数として、特別図柄の変動パターンを決定するための変動パターン決定用乱数や、大当りを発生させない場合にリーチとするか否かを決定するためのリーチ判定用乱数が用いられる。また、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。
また、初期値用乱数更新処理とは、初期値用乱数を発生するためのカウンタのカウント値を更新する処理である。初期値用乱数とは、大当りの種類を決定するための判定用乱数(例えば、大当りを発生させる特別図柄を決定するための大当り図柄決定用乱数や、大当りの種別を決定するための大当り種別決定用乱数、普通図柄にもとづく当りを発生させるか否かを決定するための普通図柄当たり判定用乱数)を発生するためのカウンタ(判定用乱数発生カウンタ)等のカウント値の初期値を決定するための乱数である。後述する遊技制御処理(遊技制御用マイクロコンピュータが、遊技機に設けられている可変表示装置9、可変入賞球装置15、球払出装置97等の遊技用の装置を、自身で制御する処理、または他のマイクロコンピュータに制御させるために指令信号を送信する処理、遊技装置制御処理ともいう)において、判定用乱数発生カウンタのカウント値が1周すると、そのカウンタに初期値が設定される。
なお、表示用乱数更新処理および初期値用乱数更新処理が実行されるときに割込禁止状態にされるのは、表示用乱数更新処理および初期値用乱数更新処理が後述するタイマ割込処理でも実行される(すなわち、タイマ割込処理のステップS24,S25でも同じ処理が実行される)ことから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS19a,S19bの処理中にタイマ割込が発生してタイマ割込処理中で表示用乱数や初期値用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS19a,S19bの処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
以上のように、遊技店員等は、クリアスイッチ921をオン状態してクリア信号が出力される状態にしながら遊技機に対する電力供給を開始する(例えば電源スイッチ914をオンする)ことによって、容易に初期化処理を実行させることができる。すなわち、RAMクリア等を行うことができる。
次に、メイン処理における乱数回路設定処理(ステップS15a)を説明する。図49は、乱数回路設定処理を示すフローチャートである。乱数回路設定処理において、CPU56は、まず、乱数回路設定プログラム551に含まれる乱数回路選択モジュール551fに従って処理を実行し、遊技制御用マイクロコンピュータ560が内蔵する各乱数回路503a,503bの中から、遊技制御処理を含むタイマ割込処理の実行時に用いる乱数回路を設定する(ステップS151)。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定されたタイマ割込処理の実行時に用いる乱数回路503を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、12ビット乱数回路503aまたは16ビット乱数回路503bのいずれかを選択し、選択した乱数回路をタイマ割込処理の実行時に用いる乱数回路として設定する。なお、タイマ割込処理の実行時に用いる乱数回路として、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定してもよい。
上記のように、ステップS151において、更新可能な数値データの所定の範囲が異なる複数の乱数回路(12ビット乱数回路503aと16ビット乱数回路503b)について、それぞれ使用可能とするか否かを設定するので、タイマ割込処理の実行中に不要な乱数を処理することを防止することができ、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。例えば、遊技制御用マイクロコンピュータ560が、2つの乱数回路503a,503bのうちの一方が発生する乱数のみを用いて遊技制御処理を行う場合、遊技制御処理に用いない方の乱数回路における乱数を更新する処理を行わないようにでき、遊技制御用マイクロコンピュータ560の制御負担を軽減できる。
CPU56は、ステップS151で使用する乱数回路503を設定すると、例えば、乱数回路起動レジスタ541にデータを書き込まない等により、カウンタ521やクロック信号出力回路524の動作を停止させることで、使用しないように設定した方の乱数回路のカウンタ521がカウント値Cを更新しないようにする。また、例えば、使用しないように設定した方の乱数回路のカウンタ521はカウント値Cを更新するが、CPU56は出力制御信号SCを出力しないようにし、乱数値記憶回路531から乱数を読み出せないように制御してもよい。また、例えば、CPU56は、タイマ回路534に使用しないように設定した方の乱数回路の乱数値取込レジスタ539に乱数値取込データ「01h」を書き込ませないようにし、ラッチ信号生成回路533がラッチ信号SLを乱数値記憶回路531に出力しないように制御してもよい。
上記のように、使用する乱数回路503を設定するようにすることによって、使用する乱数回路503だけを設定することによって、生成する乱数の値の範囲を適切に設定することができる。また、タイマ割込処理の実行中に不要な乱数を処理することを防止することができ、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。例えば、大当りとする判定値として離れた値(例えば、「1」と「100」を含む判定テーブルを用いて大当り判定を行う場合、所定の大当り確率(例えば、100分の1)で大当りと判定するようにすると、16ビット乱数回路503bによる乱数を用いるよりも、12ビット乱数回路503aによる乱数を用いた方が、処理すべき判定値の種類の数が少なくて済み、遊技制御用マイクロコンピュータ560の制御負担が軽減される。
また、CPU56は、乱数回路設定プログラム551に含まれる乱数最大値設定モジュール551aに従って処理を実行し、ユーザによって予め設定された乱数最大値を指定する乱数最大値設定データを、乱数最大値設定レジスタ535に書き込む(ステップS152)。そのようにすることによって、ユーザによって予め設定されたランダムRの乱数最大値を乱数回路503に設定する。なお、タイマ割込実行時に用いる乱数回路として12ビット乱数回路503aを設定した場合、CPU56は、乱数最大値(「0」〜「4095」のうちのいずれかの値)を指定する乱数最大値設定データを、12ビット乱数回路503aの乱数最大値設定レジスタ535に書き込む。また、タイマ割込実行時に用いる乱数回路として16ビット乱数回路503bを設定した場合、CPU56は、乱数最大値(「0」〜「65535」のうちのいずれかの値)を指定する乱数最大値設定データを、16ビット乱数回路503bの乱数最大値設定レジスタ535に書き込む。
なお、この実施の形態では、乱数最大値として「0」〜「255」が設定された場合には、後述する乱数最大値再設定処理において乱数最大値を所定値に設定しなおすことになる。また、乱数最大値として「256」以上の値を書き込む制御を行った場合であっても、データ化けなどの原因によって「0」〜「255」の値が乱数最大値設定レジスタ535に設定されてしまった場合には、後述する乱数最大値再設定処理において乱数最大値を所定値に設定しなおす。
上記のように、ステップS152において、生成する乱数の最大値をあらかじめ乱数最大値設定レジスタ535に設定するので、タイマ割込処理の実行中に用いる乱数の範囲より大きい値の乱数を生成してしまうことを防止でき、乱数回路503および遊技制御用マイクロコンピュータ560の処理負担を軽減することができる。
また、CPU56は、ステップS152で乱数最大値設定レジスタ535に設定した乱数最大値が所定の下限値以下でないかを確認し、乱数最大値が下限値以下である場合には、乱数最大値設定レジスタ535に設定されている乱数最大値の再設定を行う乱数最大値再設定処理を実行する(ステップS153)。
また、CPU56は、乱数回路設定プログラム551に含まれる初期値変更モジュール551eに従って処理を実行し、乱数回路503のカウンタ521が更新するカウント値の初期値を変更させる初期値変更処理を実行する(ステップS154)。
また、CPU56は、乱数回路設定プログラム551に含まれる乱数更新方式選択モジュール551bに従って処理を実行し、乱数更新方式選択データを乱数更新方式選択レジスタ540に書き込む(ステップS155)。そのようにすることによって、乱数回路503の乱数更新方式を設定する。なお、この実施の形態では、CPU56は、乱数更新方式選択データ「10h」を乱数更新方式選択レジスタ540に書き込むものとする。すなわち、この実施の形態では、乱数回路503の乱数更新方式として第2の乱数更新方式が設定される。
また、CPU56は、乱数回路設定プログラム551に含まれる周期設定モジュール551cに従って処理を実行し、ユーザによって予め設定された乱数発生用クロック信号SI1の周期を指定する周期設定データ(基準クロック信号を何分周させるかを設定するためのデータ)を、周期設定レジスタ537に書き込む(ステップS156)。そのようにすることによって、ユーザによって予め設定された乱数発生用クロック信号SI1の周期を乱数回路503に設定する。
また、CPU56は、乱数回路503のカウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを設定する(ステップS157)。例えば、遊技制御用マイクロコンピュータ560は、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを示す設定値を、予めユーザによって設定されROM54の所定領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された所定の設定値に従って、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを設定する。この実施の形態では、CPU56は、ステップS157において、カウンタ521に入力する初期値を更新すると判定すると、所定の最終値までカウント値が更新されたとき(カウンタ521から通知信号を入力したとき)に初期値を更新する旨を示す初期値更新フラグをセットする。この実施の形態では、ステップS157において、所定の設定値に従って初期値更新フラグをセットする場合を説明する。そして、CPU56は、後述する乱数回路初期値更新処理において、初期値更新フラグがセットされていることにもとづいて、カウンタ521が出力するカウント値の初期値を更新する。
なお、CPU56によってカウント値の初期値を変更するのでなく、最終値までカウント値を更新したことにもとづいて、乱数回路503側でカウント値の初期値を所定値に変更するようにしてもよい。例えば、乱数回路503は、初期値を更新する旨を示す初期値更新データを格納する初期値更新データレジスタ、及び初期値の変更を行う初期値変更回路を備え、CPU56は、ステップS157において、初期値更新データを初期値更新データレジスタに設定する。この場合、カウンタ521は、最終値までカウント値を更新すると、通知信号を初期値変更回路に出力する。すると、初期値変更回路は、初期値更新データレジスタに初期値更新データが設定されているか否かを確認する。そして、初期値変更回路は、初期値更新データが設定されていることを確認すると、カウント値の初期値を所定値に変更する。なお、初期値変更回路は、後述するカウント値順列変更処理において、順列を変更したカウント値の初期値を変更してもよい。
また、CPU56は、乱数回路503のカウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が更新するカウント値の順列を変更するか否かを設定する(ステップS158)。例えば、遊技制御用マイクロコンピュータ560は、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が出力するカウント値の順列を変更するか否かを示す設定値を、予めユーザによって設定されROM54の所定領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された所定の設定値に従って、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が出力するカウント値の順列を変更するか否かを設定する。この実施の形態では、CPU56は、ステップS158において、カウンタ521が出力するカウント値の順列を変更すると判定すると、所定の最終値までカウント値が更新されたときにカウント値の順列を変更する旨を示すカウント値順列変更フラグをセットする。この実施の形態では、ステップS158において、所定の設定値に従ってカウント値順列変更フラグをセットする場合を説明する。そして、CPU56は、後述するカウント値順列変更処理において、カウント値順列変更フラグがセットされていることにもとづいて、カウンタ521が出力するカウント値の順列を変更する。
なお、CPU56の制御によってカウント値の順列を変更するのでなく、最終値までカウント値を更新したことにもとづいて、乱数回路503側でカウント値の順列変更するようにしてもよい。例えば、乱数回路503は、カウント値の順列を変更する旨を示す順列変更データを格納する順列変更データレジスタを備え、CPU56は、ステップS158において、順列変更データを順列変更データレジスタに設定する。この場合、カウンタ521が最終値までカウント値を更新すると、通知信号をカウント値順列変更回路523に出力し、通知信号を入力したカウント値順列変更回路523は、順列変更データレジスタに順列変更データが設定されているか否かを確認する。そして、カウント値順列変更回路523は、順列変更データが設定されていることを確認すると、カウント値の順列を変更する。
そして、CPU56は、乱数回路設定プログラム551に含まれる乱数回路起動モジュール551dに従って処理を実行し、乱数回路起動データ「80h」を乱数回路起動レジスタ541に書き込む(ステップS159)。そのようにすることによって、CPU56は、乱数回路503を起動させる。
次に、乱数回路設定処理における乱数最大値再設定処理(ステップS153)を説明する。図50は、乱数最大値再設定処理を示すフローチャートである。乱数最大値再設定処理において、CPU56は、乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む(ステップS153a)。なお、タイマ割込処理の実行時に用いる乱数回路として12ビット乱数回路503aを設定した場合、CPU56は、12ビット乱数回路503aの乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む。また、タイマ割込処理の実行時に用いる乱数回路として16ビット乱数回路503bを設定した場合、CPU56は、16ビット乱数回路503bの乱数最大値設定レジスタ535に設定されている乱数最大値を読み込む。
CPU56は、読み込んだ乱数最大値が所定の下限値以下であるか否かを判定する(ステップS153b)。12ビット乱数回路503aを設定した場合、12ビット乱数回路503aにおいて設定可能な乱数最大値が「256」から「4095」までであるので、CPU56は、12ビット乱数回路503aの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であるか否かを判定する。また、16ビット乱数回路503bを設定した場合、16ビット乱数回路503bにおいて設定可能な乱数最大値が「512」から「65535」までであるので、CPU56は、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「512」以下であるか否かを判定する。
読み込んだ乱数最大値が下限値以下である場合、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値に設定しなおす(ステップS153c)。12ビット乱数回路503aを設定した場合、12ビット乱数回路503aの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であると判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「4095」に設定しなおす。また、16ビット乱数回路503bを設定した場合、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「512」以下であると判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「65535」に設定しなおす。
以上のように、乱数最大値設定レジスタ535に設定した乱数最大値が所定の下限値以下となっている場合には、乱数最大値を所定値に設定しなおす。そのため、遊技制御用マイクロコンピュータ560の誤動作や、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、過度に小さい値が乱数の最大値として設定されてしまうことを防止することができる。従って、最小値から最大値までの値の範囲が過度に小さい乱数を生成する事態が発生することを防止することができる。
次に、乱数回路設定処理における初期値変更処理(ステップS154)を説明する。図51は、初期値変更処理を示すフローチャートである。初期値変更処理において、CPU56は、まず、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データを読み出し、ユーザによって選択された初期値変更方式を特定する。この場合、CPU56は、読み出した初期値変更方式設定データの値が「01h」であるか否かを判定することによって(ステップS154a)、ユーザによって選択された初期値変更方式を特定する。
初期値変更方式設定データの値が「01h」である場合、CPU56は、乱数回路503のカウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづいて設定された値に変更する(ステップS154b)。例えば、遊技制御用マイクロコンピュータ560は、ROM54の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とを予め対応付けて記憶している。そして、ステップS154bにおいて、CPU56は、予め記憶するIDナンバにもとづく演算値にカウント値の初期値を変更させる。また、例えば、ステップS154bにおいて、CPU56は、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバ(例えば、「100」)に所定値(例えば、「100」)を加算して)求めた演算値(例えば、「200」)にカウント値の初期値を設定する。また、カウンタ521に入力する初期値を変更すると、CPU56は、カウント値の初期値を変更した旨を示す初期値変更フラグをセットする(ステップS154c)。
なお、CPU56は、ステップS154bにおいてカウンタ521に入力する初期値を変更する際、乱数回路503の比較器522の乱数最大値設定レジスタ535の値を確認し、IDナンバにもとづいて設定された値が乱数最大値以上であるか否かを判断する。そして、IDナンバにもとづいて設定された値が乱数最大値以上であると判断すると、CPU56は、カウンタ521に入力する初期値を変更しない(例えば、初期値を「0」に設定しなおす)。そのようにすることによって、カウント値の初期値が乱数最大値以上の値に設定されてしまう事態を防止することができる。
ステップS154aにおいて、初期値変更方式設定データの値が「01h」でない場合(すなわち、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データの値が「00h」である場合)、CPU56は、カウント値の初期値の変更を行わず、そのまま初期値変更処理を終了し、ステップS155に移行する。
乱数回路設定処理が実行されることによって、遊技制御処理を含むタイマ割込処理の実行時に乱数回路503に各種信号が入力され、乱数回路503内で各種信号が生成される。図52は、乱数回路503に各信号が入力されるタイミング、および乱数回路503内で各信号が生成されるタイミングを示すタイミングチャートである。
図52に示すように、クロック回路501は、所定周期ごと(図52に示すタイミングT11,T21,・・・)に、出力端子の信号レベルをローレベルからハイレベルに立ち上げることによって、乱数回路503に基準クロック信号CLK(図52(A)参照)を入力する。
クロック信号出力回路524は、クロック回路501から供給された基準クロック信号CLKを分周し、乱数発生用クロック信号SI1(図52(B)参照)を生成する。例えば、クロック信号出力回路524は、タイミングT11,T12,・・・で出力端子の信号レベルをローレベルからハイレベルに立ち上げ、タイミングT21,T22,・・・で信号レベルをハイレベルからローレベルに立ち下げることによって、乱数発生用クロック信号SI1を出力する。
なお、図52に示す例では、説明を分かりやすくするために、クロック信号出力回路524が基準クロック信号CLKを2分周して乱数発生用クロック信号SI1を生成する場合を示している。しかし、実際の乱数回路では、周期設定レジスタ537に設定可能な周期は「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」まである。従って、実際の乱数回路では、クロック信号出力回路524は、「システムクロック信号の周期×128×7」から「システムクロック信号の周期×128×256」までの範囲で周期設定レジスタ537に設定される周期設定データ「07h」〜「FFh」に対応した分周比で、基準クロック信号CLKを分周し乱数発生用クロック信号SI1を生成する。クロック信号出力回路524によって生成された乱数発生用クロック信号SI1は、セレクタ528と反転回路532とに出力される。
この実施の形態では、乱数回路設定処理において、第2の乱数更新方式が設定されるので、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号がセレクタ528に入力される。セレクタ528は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力されると、クロック信号出力回路524から入力した乱数発生用クロック信号SI1を選択してカウンタ521に出力する。カウンタ521は、セレクタ528から供給される乱数発生用クロック信号SI1の立ち上がりエッヂが入力されるごとに、カウント値Cを更新してカウント値順列変更回路523に出力する。
反転回路532は、クロック信号出力回路524から入力した乱数発生用クロック信号SI1の信号レベルを反転させることによって、反転クロック信号SI2(図52(C)参照)を生成する。例えば、反転回路532は、タイミングT11,T12,・・・で出力端子の信号レベルをハイレベルからローレベルに立ち下げ、タイミングT21,T22,・・・で信号レベルをローレベルからハイレベルに立ち上げることによって、反転クロック信号SI2を出力する。また、反転回路532によって生成された反転クロック信号SI2は、ラッチ信号生成回路533に出力される。
ラッチ信号生成回路533には、入賞検出信号SS(図52(D)参照)がタイマ回路534に入力されてから所定時間(例えば3ミリ秒)が経過すると、乱数値読取信号出力回路526から乱数値読取信号が入力される。例えば、乱数値読取信号出力回路526の出力端子の信号レベルがローレベルからハイレベルに立ち上がることによって、ラッチ信号生成回路533に乱数値読取信号が入力される。ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力されたことに応じて、乱数値読取信号出力回路526から入力する乱数値読取信号を反転回路532から供給される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SL(図52(E)参照)を出力する。
以上のように、乱数回路503は、タイミングT11,T12,T13・・・においてカウント値Cを更新し、タイミングT11,T12,T13とは異なるタイミングT22においてラッチ信号SLを出力させ、乱数値記憶回路531に乱数値を記憶する。
次に、メイン処理におけるシリアル通信回路設定処理(ステップS15a)を説明する。図53は、シリアル通信回路設定処理を示すフローチャートである。シリアル通信回路設定処理において、CPU56は、まず、シリアル通信回路設定プログラム556に従って処理を実行し、シリアル通信回路505のボーレートを設定する(ステップS1511)。この場合、CPU56は、シリアル通信回路505のボーレートレジスタ702に、設定するボーレートに対応する設定値を書き込む。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された設定値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、設定値をボーレートレジスタ702に書き込む。例えば、CPU56によってボーレート設定値「156」が設定された場合、ボーレート生成回路703によって、式(1)およびクロック周波数「3MHz」を用いてボーレート「1201.92bps」が生成される。
また、CPU56は、シリアル通信回路505が送受信するデータのデータフォーマットを設定する(ステップS1512)。この場合、CPU56は、制御レジスタA707の各ビットの値を設定することによって、送受信データのデータ長(8ビットまたは9ビット)、パリティ機能の使用の有無を設定する。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタA707の各ビットの値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタA707の各ビットの値を設定する。
また、CPU56は、シリアル通信回路505が発生する各割込要求を許可するか否かを設定する(ステップS1513)。この場合、CPU56は、制御レジスタB708のビット5,6,7の値を設定することによって、送信時割り込み要求(データの送信時に行う割り込み要求である送信割り込み要求や、送信完了時に行う送信完了割り込み要求)および受信時割り込み要求を許可するか否かを設定する。なお、CPU56は、送信時割り込み要求と受信時割り込み要求との両方を許可するように設定することも可能であり、送信時割り込み要求と受信時割り込み要求とのいずれか一方のみを許可するように設定することも可能である。また、CPU56は、制御レジスタC709のビット0〜3の値を設定することによって、各通信エラー時割り込み要求を許可するか否かを設定する。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタB708および制御レジスタC709の各ビットの値を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタB708および制御レジスタC709の各ビットの値を設定する。
図54および図55は、ステップS18の電源断処理の一例を示すフローチャートである。電源断処理において、CPU56は、まず、電源断信号が出力されているか否か(オン状態になっているか否か)確認する(ステップS450)。オン状態でなければ、RAM55に形成されているバックアップ監視タイマの値を0クリアする(ステップS451)。オン状態であれば、バックアップ監視タイマの値を1増やす(ステップS452)。そして、バックアップ監視タイマの値が判定値(例えば2)と一致すれば(ステップS453)、ステップS454以降の電力供給停止時処理すなわち電力の供給停止のための準備処理を実行する。つまり、遊技の進行を制御する状態から遊技状態を保存させるための電力供給停止時処理(電源断時制御処理)を実行する状態に移行する。なお、「RAMに形成されている」とは、RAM内の領域であることを意味する。
バックアップ監視タイマと判定値とを用いることによって、判定値に相当する時間だけ電源断信号のオン状態が継続したら、電力供給停止時処理が開始される。すなわち、ノイズ等で一瞬電源断信号のオン状態が発生しても、誤って電力供給停止時処理が開始されるようなことはない。なお、バックアップ監視タイマの値は、遊技機への電力供給が停止しても、所定期間はバックアップ電源によって保存される。従って、メイン処理におけるステップS8では、バックアップ監視タイマの値が判定値と同じ値になっていることによって、電力供給停止時処理の処理結果が保存されていることを確認できる。
電力供給停止時処理において、CPU56は、パリティデータを作成する(ステップS454〜S463)。すなわち、まず、クリアデータ(00)をチェックサムデータエリアにセットし(ステップS454)、電力供給停止時でも内容が保存されるべきRAM領域の先頭アドレスに相当するチェックサム算出開始アドレスをポインタにセットする(ステップS455)。また、電力供給停止時でも内容が保存されるべきRAM領域の最終アドレスに相当するチェックサム算出回数をセットする(ステップS456)。
次いで、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する(ステップS457)。演算結果をチェックサムデータエリアにストアするとともに(ステップS458)、ポインタの値を1増やし(ステップS459)、チェックサム算出回数の値を1減算する(ステップS460)。そして、ステップS457〜S460の処理を、チェックサム算出回数の値が0になるまで繰り返す(ステップS461)。
チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転する(ステップS462)。そして、反転後のデータをチェックサムデータエリアにストアする(ステップS463)。このデータが、電源投入時にチェックされるパリティデータとなる。次いで、RAMアクセスレジスタにアクセス禁止値を設定する(ステップS471)。以後、内蔵RAM55のアクセスができなくなる。
さらに、CPU56は、ROM54に格納されているポートクリア設定テーブルの先頭アドレスをポインタにセットする(ステップS472)。ポートクリア設定テーブルにおいて、先頭アドレスには処理数(クリアすべき出力ポートの数)が設定され、次いで、出力ポートのアドレスおよび出力値データ(クリアデータ:出力ポートの各ビットのオフ状態の値)が、処理数分の出力ポートについて順次設定されている。
CPU56は、ポインタが指すアドレスのデータ(すなわち処理数)をロードする(ステップS473)。また、ポインタの値を1増やし(ステップS474)、ポインタが指すアドレスのデータ(すなわち出力ポートのアドレス)をロードする(ステップS475)。さらに、ポインタの値を1増やし(ステップS476)、ポインタが指すアドレスのデータ(すなわち出力値データ)をロードする(ステップS477)。そして、出力値データを出力ポートに出力する(ステップS478)。その後、処理数を1減らし(ステップS479)、処理数が0でなければステップS474に戻る。処理数が0であれば、すなわち、クリアすべき出力ポートを全てクリアしたら、タイマ割込を停止し(ステップS481)、ループ処理に入る。このようにループ処理に入ることにより制御状態が待機状態に移行されたことになる。
以上の処理によって、電力供給が停止する場合には、ステップS454〜S481の電力供給停止時処理が実行され、電力供給停止時処理が実行されたことを示すデータ(バックアップあり指定値およびチェックサム)がバックアップRAMへストアされ、RAMアクセスが禁止状態にされ、出力ポートがクリアされ、かつ、遊技制御処理を実行するためのタイマ割込が禁止状態に設定される。
この実施の形態では、RAM55がバックアップ電源によって電源バックアップ(遊技機への電力供給が停止しても所定期間はRAM55の内容が保存されこと)されている。この例では、ステップS452〜S479の処理によって、バックアップ監視タイマの値とともに、電源断信号が出力されたときのRAM55の内容にもとづくチェックサムもRAM55のバックアップ領域に保存される。遊技機への電力供給が停止した後、所定期間内に電力供給が復旧したら、遊技制御手段は、上述したステップS91〜S94の処理によって、RAM55に保存されているデータ(電力供給が停止した直前の遊技制御手段による制御状態である遊技状態を示すデータ(例えば、プロセスフラグの状態、大当り中フラグの状態、確変フラグの状態、出力ポートの出力状態等)を含む)に従って、遊技状態を、電力供給が停止した直前の状態に戻すことができる。なお、電力供給停止の期間が所定期間を越えたらバックアップ監視タイマの値とチェックサムとが正規の値とは異なるはずであるから、その場合には、ステップS10〜S14の初期化処理が実行される。
以上のように、電力供給停止時処理(電力の供給停止のための準備処理)によって、遊技状態を電力供給が停止した直前の状態に戻すためのデータが確実に変動データ記憶手段(この例ではRAM55の一部の領域)に保存される。よって、停電等による電源断が生じても、所定期間内に電源が復旧すれば、遊技状態を電力供給が停止した直前の状態に戻すことができる。
また、待機状態中においてウォッチドッグタイマ60がタイムアウトしたときはステップS1に戻る。この場合も、メイン処理において電源断信号がオフ状態であるか否かが確認される(ステップS83参照)。電源供給停止時処理が正常に実行されたときは、電力供給停止時処理が実行されたことを示すデータが設定されているので、ステップS91〜S93の遊技状態復旧処理が実行される。よって、ウォッチドッグタイマ60からのタイマアウト信号が入力されたときは、遊技の進行を制御する状態に戻る。従って、電源瞬断等が生じても、遊技制御処理が停止してしまうようなことはなく、自動的に、遊技制御処理が続行される。
なお、払出制御基板37に対して送信される接続確認信号は、出力ポートをクリアする処理によってオフ状態に設定される。また、ステップ92およびS12の作業領域の設定では、接続確認信号に対応した出力ポートバッファの内容が、接続確認信号のオン状態に対応した値に設定される。そして、ステップS31の賞球処理が実行されると、出力ポートバッファの内容が出力ポートに出力されるので、払出制御基板37への接続確認信号がオン状態になる。従って、接続確認信号は、主基板31の立ち上がり時に出力される(オン状態になる)ことになる。なお、電源瞬断等から復帰した場合も、接続確認信号が出力される。
なお、電源断処理の実行中は、タイマ割込を禁止に設定してもよい。電源断処理の実行中に割込禁止にすると、ステップS481の処理は不要となる。
なお、図54および図55に示した電源断処理は、メイン処理におけるステップS17において実行されていたが、以降に示すタイマ割込処理において実行するように構成されていてもよい。
次に、遊技制御処理について説明する。図56は、タイマ割込処理を示すフローチャートである。メイン処理の実行中に、具体的には、ステップS17〜S20のループ処理の実行中における割込許可になっている期間において、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、タイマ割込の発生に応じて起動されるタイマ割込処理において遊技制御処理を実行する。タイマ割込処理において、CPU56は、まず、スイッチ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ231,232および入賞口スイッチ29a,30aのスイッチの検出信号を入力し、それらの状態判定を行う(スイッチ処理:ステップS21)。具体的には、各スイッチの検出信号を入力する入力ポートの状態がオン状態であれば、各スイッチに対応して設けられているスイッチタイマの値を+1する。
次に、CPU56は、乱数回路設定処理において所定の最終値までカウント値が更新されたときに初期値を更新する旨の設定がされているか(ステップS157参照)を確認し、乱数回路503のカウンタ521に入力する初期値を更新する処理を行う(乱数回路初期値更新処理:ステップS22)。
次に、遊技制御に用いられる各判定用乱数を生成するための各カウンタのカウント値を更新する処理を行う(ステップS23)。また、CPU56は、初期値用乱数を生成するためのカウンタのカウント値を更新する処理を行う(初期値用乱数更新処理:ステップS24)。さらに、CPU56は、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行う(表示用乱数更新処理:ステップS25)。
図57は、各乱数を示す説明図である。各乱数は、以下のように使用される。
(1)ランダム1:特別図柄のはずれ図柄決定用
(2)ランダム2:大当りを発生させる特別図柄を決定する(大当り図柄決定用)。
(3)ランダム3:特別図柄の変動パターンを決定する(変動パターン決定用)
(4)ランダム4:大当りを発生させない場合にリーチとするか否かを決定する(リーチ判定用)
(5)ランダム5:普通図柄にもとづく当りを発生させるか否か決定する(普通図柄当り判定用)
(6)ランダム6:ランダム2の初期値を決定する(ランダム2初期値決定用)
(7)ランダム7:ランダム5の初期値を決定する(ランダム5初期値決定用)
(8)ランダム8:大当りの種別を決定する(大当り種別決定用)
(9)ランダム9:ランダム8の初期値を決定する(ランダム8初期値決定用)
図56に示された遊技制御処理におけるステップS23では、CPU56は、(2)の大当り図柄決定用乱数、(5)の普通図柄当り判定用乱数、(8)の大当り種別決定用乱数を生成するためのカウンタのカウントアップ(1加算)を行う。すなわち、それらが判定用乱数であり、それら以外の乱数が表示用乱数または初期値用乱数である。また、遊技効果を高めるために、上記(1)〜(9)の乱数以外の普通図柄に関する乱数等も用いられていてもよい。
判定用乱数更新処理、初期値更新処理および表示用乱数更新処理を行うと、CPU56は、乱数回路503のカウンタ521が出力するカウント値の順列をカウント値順列変更回路523に変更させるカウント値順列変更処理を行う(ステップS26)。この実施の形態では、乱数回路設定処理のステップS158でカウント値順列変更フラグがセットされているか否かによって、カウント値順列変更処理を実行するか否かが決定されている。そして、CPU56は、カウント値順列変更フラグがセットされていることにもとづいて、カウント値順列変更処理を実行する。
さらに、CPU56は、特別図柄プロセス処理を行う(ステップS27)。特別図柄プロセス処理では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS28)。普通図柄プロセス処理では、普通図柄表示器10の表示状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
次いで、CPU56は、特別図柄の変動に同期する飾り図柄に関する演出制御コマンドをRAM55の所定の領域に設定して演出制御コマンドを送出する処理を行う(飾り図柄コマンド制御処理:ステップS29)。なお、飾り図柄の変動が特別図柄の変動に同期するとは、変動時間(可変表示期間)が同じであることを意味する。
さらに、CPU56は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力する情報出力処理を行う(ステップS30)。
また、CPU56は、入賞口スイッチ29a,30a等の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS31)。具体的には、入賞口スイッチ29a,30a等がオンしたことにもとづく入賞検出に応じて、払出制御基板37に賞球個数を示す賞球個数コマンド等の払出指令コマンドを出力する。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、賞球個数を示す賞球個数コマンドの受信に応じて球払出装置97を駆動する。
そして、CPU56は、保留記憶数の増減をチェックする記憶処理を実行する(ステップS32)。また、遊技機の制御状態を遊技機外部で確認できるようにするための試験信号を出力する処理である試験端子処理を実行する(ステップS33)。また、CPU56は、2つの大入賞口表示灯38,39のどちらかに対して点灯を指示する制御信号(指令信号)を出力する出力設定処理を実行する(ステップS34)。なお、出力設定処理において、いずれかの大入賞口表示灯38,39の点灯を指示する設定値をバッファにセットし、出力処理(ステップS35)において、バッファにセットされた設定値にもとづく制御信号を出力するように構成されていてもよい。また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、CPU56は、出力ポート3のRAM領域におけるソレノイドに関する内容を出力ポートに出力する(ステップS35:出力処理)。また、CPU56は、内部バスを介してウォッチドッグタイマ60のWDTクリアレジスタ62にデータを設定することによってカウント値のクリアおよびリスタートを行わせるWDTクリア処理を実行する(ステップS36)。その後、CPU56は、割込許可状態に設定し(ステップS37)、処理を終了する。
この実施の形態では、遊技制御処理は定期的(例えば2msごと)に起動されることになる。なお、この実施の形態では、タイマ割込処理で遊技制御処理が実行されているが、タイマ割込処理では例えば割込が発生したことを示すフラグのセットのみがなされ、遊技制御処理はフラグがセットされたことにもとづいてメイン処理において実行されるようにしてもよい。
また、例えば、タイマ割込処理では遊技制御処理のうちスイッチ処理(ステップS21参照)、初期値用乱数更新処理(ステップS24参照)、飾り図柄コマンド制御処理(ステップS29参照)、及び後述する割込回数カウント処理(ステップS3201a,S3202参照)のみを実行するようにし、遊技制御処理のうちの他の処理をメイン処理において実行するようにしてもよい。この場合、遊技制御用マイクロコンピュータ560のCPU56は、メイン処理におけるステップS17からステップS20までのループ処理において、遊技制御処理のうち、ステップS22からステップS28(割込回数カウント処理を除く)、及びステップS31からステップS36(ステップS33を除く)の処理を実行する。また、遊技制御用マイクロコンピュータ560のCPU56は、タイマ割込処理において、割込回数(入賞検出信号を検出したあとにタイマ割込処理を実行した回数)をカウントした(ステップS3201a参照)あとに、タイマ割込処理の実行回数が所定回数(例えば、3回)に達したことを検出すると(ステップS3202参照)、乱数回路503から乱数値を読み出す条件が成立した(可変表示の実行条件が成立した)と判断し、乱数値の読み出し条件が成立した旨を示す乱数読出フラグをセットする。また、遊技制御用マイクロコンピュータ560のCPU56は、メイン処理において、特別図柄プロセス処理(ステップS27参照)における始動口スイッチ通過処理(ステップS312参照)の実行の際に、乱数読出フラグがセットされているか否かを判断し、乱数読出フラグがセットされていると判断すると、乱数回路503の乱数値記憶回路531に出力制御信号SCを出力し(ステップS3203参照)、乱数値記憶回路531から乱数値として記憶されているランダムRの値を読み出す(ステップS3204参照)。そして、CPU56は、メイン処理において、特別図柄プロセス処理(ステップS27参照)における特別図柄通常処理(ステップS300参照)の実行の際に、読み出した乱数値にもとづいて大当りとするか否かを決定することになる。なお、この実施の形態において、ステップS21〜S36の処理(ステップS30およびS33を除く)が、遊技の進行を制御する遊技制御処理に相当する。
次に、タイマ割込処理における乱数回路初期値更新処理(ステップS22)について説明する。図58は、乱数回路初期値更新処理を示すフローチャートである。乱数回路初期値更新処理において、CPU56は、乱数回路503のカウンタ521が出力するカウント値Cを最終値まで更新した旨を示す通知信号の状態を確認する(ステップS220)。通知信号がオン状態になっていることを検出した場合には、CPU56は、初期値更新フラグがセットされているか否かを確認する(ステップS221)。すなわち、CPU56は、乱数回路設定処理において、所定の最終値までカウント値が更新されたときに初期値を更新する旨の設定がなされたか否か(ステップS157参照)を確認する。
初期値更新フラグがセットされている場合、CPU56は、乱数回路503のカウンタ521が所定の最終値までカウント値を更新したときに、カウンタ521に入力する初期値を更新すると判断する。また、初期値更新フラグがセットされている場合、CPU56は、初期値変更フラグがセットされているか否かを確認する(ステップS222)。すなわち、CPU56は、カウント値の初期値が現在変更されているか否か(すなわち、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に変更されているか否か)を判断する。
初期値変更フラグがセットされている(すなわち、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に初期値が現在変更されている)場合、CPU56は、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値から元の値(例えば、「1」)にもどす(ステップS223)。そして、CPU56は、初期値変更フラグをリセットし(ステップS224)、初期値更新処理を終了する。
初期値変更フラグがセットされていない(すなわち、初期値が現在変更されていない)場合、CPU56は、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560のIDナンバにもとづく値に変更する(ステップS225)。この場合、例えば、遊技制御用マイクロコンピュータ560のIDナンバが「100」であるとすると、カウンタ521に入力する初期値を、IDナンバ「100」に所定値「100」を加算して求めた演算値「200」に変更する。また、例えば、カウンタ521に入力する初期値を、IDナンバ「100」に所定値「50」を減算して求めた演算値「50」に変更する。そして、CPU56は、初期値変更フラグをセットし(ステップS226)、初期値更新処理を終了する。
なお、乱数回路503の乱数の更新速度が高速の場合、通知信号がオンになったタイミングから初期値を変更するタイミングまでに次のカウント値に更新されてしまうおそれがあるが、例えば、クロック信号出力回路524がカウンタ521に出力するクロック信号の周波数を調整して、乱数回路503の乱数の更新速度を調整することにより、通知信号がオンになったタイミングから初期値を変更するタイミングまでに次のカウント値に更新されないようにすることも可能である。
なお、12ビット乱数回路503aおよび16ビット乱数回路503bの両方を設定した場合、ステップS225において、CPU56は、一方の乱数回路(例えば、12ビット乱数回路503a)から読み込んだ乱数を所定値としてIDナンバに加算して、カウンタ521に入力する初期値を求めてもよい。そして、CPU56は、他の一方(例えば、16ビット乱数回路503b)から読み込んだ乱数を、大当り判定用の乱数として用いてもよい。
なお、CPU56は、ステップS225においてカウンタ521に入力する初期値を更新する際、乱数回路503の比較器522の乱数最大値設定レジスタ535の値を確認し、IDナンバにもとづいて設定された値が乱数最大値以上であるか否かを判断する。そして、IDナンバにもとづいて設定された値が乱数最大値以上であると判断すると、CPU56は、カウンタ521に入力する初期値を所定値のまま更新しない(例えば、所定値「0」のまま更新しない)。そのようにすることによって、カウント値の初期値が乱数最大値以上の値に設定されてしまう事態を防止することができる。
なお、ステップS220において通知信号がオフ状態であると判断した場合、およびステップS221において初期値更新フラグがセットされていないと判断した場合、CPU56は、カウンタ521に入力する初期値を更新することなく、そのまま乱数回路初期値更新処理を終了し、ステップS23に移行する。
次に、タイマ割込処理におけるカウント値順列変更処理(ステップS26)について説明する。図59は、カウント値順列変更処理を示すフローチャートである。CPU56は、カウント値順列変更プログラム554に従って処理を実行することによって、カウント値順列変更処理を行う。カウント値順列変更処理において、CPU56は、乱数回路503のカウンタ521が出力するカウント値Cを最終値まで更新した旨を示す通知信号の状態を確認する(ステップS241)。通知信号がオン状態になっていることを検出した場合には、CPU56は、カウント値順列変更フラグがセットされているか否かを確認する(ステップS242)。すなわち、CPU56は、乱数回路設定処理において、所定の最終値までカウント値が更新されたときにカウンタ521が更新するカウント値の順列を変更する旨の設定がなされたか否か(ステップS158参照)を確認する。
カウント値順列変更フラグがセットされている場合、CPU56は、乱数回路503のカウンタ521が所定の最終値までカウント値を更新したときに、カウンタ521が更新するカウント値の順列を変更すると判断する。そして、CPU56は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込む(ステップS243)。すなわち、CPU56は、カウント値順列変更データ「01h」を書き込むことによって、乱数値記憶回路531に入力されるカウント値Cの順列をカウント値順列変更回路523に変更させる。
以上のように、カウント値順列変更処理において、乱数を所定の最終値まで更新したときに、カウンタ521が更新するカウント値の順列を変更するので、乱数回路503が生成する乱数のランダム性をより向上させることができる。
次に、メイン処理における特別図柄プロセス処理(ステップS27)を説明する。図60は、遊技制御用マイクロコンピュータ560のCPU56が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。遊技制御用マイクロコンピュータ560のCPU56は、遊技盤6に設けられている始動入賞口14に遊技球が入賞したことを検出するための始動口スイッチ14aがオンしていたら、すなわち遊技球が始動入賞口14に入賞する始動入賞が発生していたら(ステップS311)、始動口スイッチ通過処理(ステップS312)を行った後に、内部状態に応じて、ステップS300〜S308のうちのいずれかの処理を行う。
特別図柄通常処理(ステップS300):特別図柄の可変表示を開始できる状態(例えば、特別図柄表示器8において図柄の変動がなされておらず、特別図柄表示器8における前回の図柄変動が終了してから所定期間が経過しており、かつ、大当り遊技中でもない状態)になるのを待つ。特別図柄の可変表示が開始できる状態になると、特別図柄についての始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、遊技状態が確変状態または時短状態であるか否かを確認し、遊技状態が確変状態または時短状態のときは大当り終了後からの変動回数をカウントし、変動回数が所定回数(100回)になったか否かを判定する。変動回数が所定回数になったときは、遊技状態の移行制御を実行する。また、特図保留メモリ570に記憶されている乱数回路503が発生したランダムRにもとづいて、特別図柄の可変表示の表示結果を大当りとするか否か決定する。可変表示の表示結果を大当りにすると決定された場合は、大当りの種別を決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS301に移行するように更新する。
特別図柄停止図柄設定処理(ステップS301):特別図柄の可変表示後の停止図柄を決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS302に移行するように更新する。
変動パターン設定処理(ステップS302):変動パターンを決定し、その変動パターンにおける変動時間(可変表示時間:可変表示を開始してから表示結果が導出表示(停止表示)するまでの時間)を特別図柄の可変表示の変動時間とすることに決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS303に移行するように更新する。
特別図柄変動中処理(ステップS303):所定時間(ステップS302の変動時間タイマで示された時間)が経過すると、内部状態(特別図柄プロセスフラグ)をステップS304に移行するように更新する。
特別図柄停止処理(ステップS304):特別図柄表示器8における特別図柄を停止させる。そして、特別図柄の停止図柄が大当り図柄である場合には、内部状態(特別図柄プロセスフラグ)をステップS305に移行するように更新する。そうでない場合には、内部状態をステップS300に移行するように更新する。
大入賞口開放前処理(ステップS305):大入賞口を開放する制御を開始する。具体的には、カウンタ(例えば大入賞口に入った遊技球数をカウントするカウンタ)やフラグ(入賞口への入賞を検出する際に用いられるフラグ)を初期化するとともに、ソレノイド241,242を駆動して第1大入賞口または第2大入賞口を開放する。また、プロセスタイマによって大入賞口開放中処理の実行時間を設定する。そして、内部状態(特別図柄プロセスフラグ)をステップS306に移行するように更新する。
大入賞口開放中処理(ステップS306):大入賞口ラウンド表示の演出制御コマンドを音/ランプ制御基板80bに送出する制御や大入賞口の閉成条件(例えば、大入賞口に所定個数(例えば10個)の遊技球が入賞したこと)の成立を確認する処理等を行う。大入賞口の閉成条件が成立したときに、大当り種別(2ラウンド大当り、7ラウンド大当り、15ラウンド大当り)に応じた最高ラウンド数(2ラウンド、7ラウンド、15ラウンド)に達したか否かを判定し、最高ラウンド数に達していなければ、内部状態(特別図柄プロセスフラグ)をステップS305に移行するように更新し、最高ラウンド数に達していれば、内部状態をステップS307に移行するように更新する。
大当り終了処理(ステップS307):大当り遊技状態が終了したことを遊技者に報知する音声出力制御や表示制御等を音/ランプ制御手段や図柄制御手段に行わせるための制御を行う。そして、内部状態をステップS300に移行するように更新する。
図61は、この実施の形態で用いられる変動パターンの一例を示す説明図である。図61において、「EXT」とは、2バイト構成の演出制御コマンドにおける2バイト目のEXTデータを示す。また、「時間」は特別図柄の変動時間(識別情報の可変表示期間)を示す。
EXTデータが「00H」の変動パターンは、通常遊技状態および高確率潜伏状態のときの特別図柄表示器8における特別図柄の通常変動の変動パターンである。EXTデータが「01H」〜「06H」の変動パターンは、それぞれ、通常遊技状態および高確率潜伏状態のときのリーチを伴う変動パターンである。EXTデータが「01H」〜「03H」の変動パターンは、特別図柄の停止図柄をはずれ図柄とする場合に用いられる。また、EXTデータが「04H」〜「06H」の変動パターンは、特別図柄の停止図柄を大当り図柄とする場合に用いられる。なお、リーチAとリーチBとリーチCとは、それぞれ、異なる演出態様のリーチである。
EXTデータが「07H」の変動パターンは、確変状態(高確率潜伏状態を除く)および時短状態のときの特別図柄表示器8における特別図柄の通常変動の変動パターンである。EXTデータが「08H」〜「0DH」の変動パターンは、それぞれ、確変状態(高確率潜伏状態を除く)および時短状態のときのリーチを伴う変動パターンである。EXTデータが「08H」〜「0AH」の変動パターンは、特別図柄の停止図柄をはずれ図柄とする場合に用いられる。また、EXTデータが「0BH」〜「0DH」の変動パターンは、特別図柄の停止図柄を大当り図柄とする場合に用いられる。なお、リーチAとリーチBとリーチCとは、それぞれ、異なる演出態様のリーチである。確変状態(高確率潜伏状態を除く)および時短状態のときの通常変動の変動パターン(「07H」)は、通常遊技状態および高確率潜伏状態のときの通常変動の変動パターン(「00H」)よりも変動時間が短く設定されている。このような変動パターンが確変状態(高確率潜伏状態を除く)および時短状態のときに選択されることにより、特別図柄の変動時間が短縮されることになる。なお、リーチを伴う変動パターンの場合は、確変状態および時短状態のときであっても変動時間が短く設定されていない。
以上のように、遊技状態が通常遊技状態または高確率潜伏状態であるか確変状態(高確率潜伏状態を除く)または時短状態であるかによって変動パターンが分けられているので、変動パターンを指定する演出制御コマンドを受信した音/ランプ制御用マイクロコンピュータ100bは、変動パターンを指定する演出制御コマンドによって現在の遊技状態を把握することができる。同様に、音/ランプ制御用マイクロコンピュータ100bからのコマンドを受信した図柄制御用マイクロコンピュータ100aは、変動パターンを指定するコマンドによって現在の遊技状態を把握することができる。従って、音/ランプ制御用マイクロコンピュータ100bおよび図柄制御用マイクロコンピュータ100aは、コマンドによって遊技状態を把握し、把握した遊技状態に応じた遊技演出を実行することができる。
図62は、音/ランプ制御基板80bに送出される演出制御コマンドの内容の一例を示す説明図である。図62に示す例において、コマンド8000(H)〜800D(H)は、特別図柄の可変表示に対応して可変表示装置9において可変表示される飾り図柄の変動パターンを指定する演出制御コマンド(変動パターンコマンド)である。なお、変動パターンを指定する演出制御コマンドは、変動開始を指定するためのコマンドでもある。
コマンド8100(H)は、可変表示装置9の表示結果がはずれ図柄であることを指定する演出制御コマンド(はずれ指定コマンド)である。コマンド8101(H)は、可変表示装置9の表示結果が2ラウンドの確変大当りであることを指定する演出制御コマンド(2R確変大当り指定コマンド)である。コマンド8102(H)は、可変表示装置9の表示結果が2ラウンドの時短大当りであることを指定する演出制御コマンド(2R時短大当り指定コマンド)である。コマンド8103(H)は、可変表示装置9の表示結果が7ラウンドの通常大当りであることを指定する演出制御コマンド(7R通常大当り指定コマンド)である。コマンド8104(H)は、可変表示装置9の表示結果が15ラウンドの通常大当りであることを指定する演出制御コマンド(15R通常大当り指定コマンド)である。コマンド8105(H)は、可変表示装置9の表示結果が15ラウンドの確変大当りであることを指定する演出制御コマンド(15R確変大当り指定コマンド)である。コマンド8106(H)は、可変表示装置9の表示結果が15ラウンドの時短大当りであることを指定する演出制御コマンド(15R時短大当り指定コマンド)である。
なお、後述するように、2ラウンドの確変大当りおよび2ラウンドの時短大当りでは、7ラウンドの大当りや15ラウンドの大当りの場合と異なり、各ラウンドの演出が順に進行していくのではなく、突然、遊技状態が確変状態または時短状態(なお、確変状態(高確率潜伏状態を除く)および時短状態のいずれの場合も同じ演出態様の遊技演出が実行される。)に移行したように遊技者に見せる特別な演出が実行される。従って、2ラウンドの確変大当りのことを「突然確変大当り」または単に「突然確変」という。また、2ラウンドの時短大当りのことを「突然時短大当り」または単に「突然時短」という。
なお、コマンド8100(H)〜8106(H)は可変表示装置9の表示結果を指定する演出制御コマンドであるので、コマンド8100(H)〜8106(H)を表示結果コマンドという。
コマンドA000(H)は、可変表示装置9における飾り図柄の可変表示(変動)の停止を指定する演出制御コマンド(飾り図柄停止指定コマンド)である。
コマンドBXXX(H)は、大当り遊技開始から大当り遊技終了までの間に送出される演出制御コマンドである。そして、コマンドD000(H)〜EXXX(H)は、飾り図柄の変動および大当り遊技に関わらない可変表示装置9の表示状態に関する演出制御コマンドである。
コマンドB000(H)は、2ラウンドの大当り遊技が開始されることを指定する演出制御コマンド(ファンファーレ1コマンド)である。コマンドB001(H)は、7ラウンドの大当り遊技が開始されることを指定する演出制御コマンド(ファンファーレ2コマンド)である。コマンドB002(H)は、15ラウンドの大当り遊技が開始されることを指定する演出制御コマンド(ファンファーレ3コマンド)である。
なお、演出用のマイクロコンピュータは、ファンファーレコマンドにもとづいて大当り遊技の開始を報知するが、このとき、大当りの種別が7ラウンドの大当りであるか15ラウンドの大当りであるかについても報知することによって、大当りの種別に対応している大入賞口の開放位置(いずれの大入賞口が開放するか)についても遊技者に報知されることになる。ただし、ファンファーレコマンドとは別に、いずれの大入賞口が開放されるかを示すコマンドを演出用のマイクロコンピュータに送信し、演出用のマイクロコンピュータが、当該コマンドにもとづいて大入賞口の開放位置を報知する(例えば可変表示装置9の表示画面に大入賞口の開放位置を表示する)ように構成されていてもよい。この場合は、ファンファーレコマンドを図62に示すように大当りの種別に応じて分ける必要はない。また、2ラウンドの大当りが発生したときは、いずれの大入賞口が開放されるかを示すコマンドを演出用のマイクロコンピュータに送信しないようにし、演出用のマイクロコンピュータは、当該コマンドが送信されなかったときは、大入賞口の開放位置について遊技者に報知する制御を実行しないようにする。また、演出用のマイクロコンピュータは、大当りの種別を特定可能なファンファーレコマンドが送信されたときでも、表示結果コマンドにもとづいて大当りの種別が2ラウンドの大当りであると判断したときは、大入賞口の開放位置について遊技者に報知する制御を実行しないようにしてもよい。さらに、2ラウンドの大当りが発生したときに、いずれの大入賞口も開放されないことを示すコマンドを演出用のマイクロコンピュータに送信するように構成されていてもよい。
コマンドB1XX(H)は、大当り遊技中のラウンド中の表示を指定する演出制御コマンド(大入賞口開放中表示コマンド)である。なお、「XX」に表示するラウンド数が設定される。コマンドB2XX(H)は、各ラウンド中の大入賞口への入賞球数(カウントスイッチ231,232の入賞検出数)を指定する演出制御コマンド(カウント数指定コマンド)である。なお、「XX」に入賞球数(カウント数)が設定される。コマンドB3XX(H)は、大当り遊技中のラウンド後の表示(ラウンド間のインターバルの表示)を指定する演出制御コマンド(大入賞口開放後表示コマンド)である。なお、「XX」に表示するラウンド数が設定される。コマンドB400(H)は、大当り遊技が終了することを指定する演出制御コマンド(大当り終了指定コマンド)である。
コマンドD000(H)は、客待ちデモンストレーションを指定する演出制御コマンドである。また、コマンドE401(H)は、遊技状態が通常遊技状態(低確率状態)のときの遊技演出(通常遊技演出)の実行を指定する演出制御コマンド(通常表示コマンド)である。コマンドE402(H)は、遊技状態が確変状態(高確率状態)および時短状態のときの遊技演出(特別遊技演出)の実行を指定する演出制御コマンド(特別表示コマンド)である。コマンドE403(H)は、遊技状態が高確率潜伏状態のときの遊技演出(通常遊技演出)の実行を指定する演出制御コマンド(高確率潜伏表示コマンド)である。
音/ランプ制御基板80bに搭載されている音/ランプ制御用マイクロコンピュータ100bは、主基板31に搭載されている遊技制御用マイクロコンピュータ560から上述した演出制御コマンドを受信すると、図62に示された内容に応じてスピーカ27の音声出力制御を実行し、またランプの点灯制御を実行する。また、音/ランプ制御用マイクロコンピュータ100bは、受信した演出制御コマンドを図柄制御用マイクロコンピュータ100aに送信するとともに、受信した演出制御コマンドにもとづいてコマンドを生成し、生成したコマンドを図柄制御用マイクロコンピュータ100aに送信する。図柄制御用マイクロコンピュータ100aは、音/ランプ制御用マイクロコンピュータ100bからのコマンドを受信すると、受信コマンドに従って可変表示装置9の表示制御を実行する。
なお、図62に示された演出制御コマンド以外の演出制御コマンドも主基板31から音/ランプ制御基板80bに送信される。
図63は、始動口スイッチ通過処理(ステップS312)を示すフローチャートである。始動口スイッチ通過処理において、遊技制御用マイクロコンピュータ560のCPU56は、始動入賞カウンタが示す始動入賞記憶数(または特図保留メモリ570が記憶している始動入賞記憶数)が最大値である4に達しているかどうか確認する(ステップS3201)。始動入賞記憶数が4に達していなければ、CPU56は、タイマ割込処理を実行した回数を示す割込回数カウンタの値を1加算する(ステップS3201a)。すなわち、CPU56は、タイマ割込処理を実行した回数をカウントする処理を実行する。この実施の形態では、CPU56は、ステップS3201aを実行することによって、タイマ割込処理を実行するごとに、タイマ割込処理を実行した回数を示す割込回数カウンタをカウントアップする。割込回数カウンタの値を1加算すると、CPU56は、割込実行回数カウンタに示されるタイマ割込処理の実行回数が所定回数(例えば、3回)に達しているか否かを確認する(ステップS3202)。そして、CPU56は、遊技球が始動入賞口14に入賞したあと、割込実行回数カウンタが所定回数に達しているか否かを確認する。なお、遊技球が始動入賞口14に入賞したことを検出すると(すなわち、ステップS3202でYESと判定すると)、CPU56は、割込実行回数カウンタをリセットする。
ステップS3202において所定回数としてあらかじめ設定される値は、以下のように定められる。前述のように、乱数回路503のタイマ回路534は、始動口スイッチ14aから入賞検出信号SSが継続して入力されている時間を計測し、計測時間が所定期間になったことを検出すると、乱数値取り込みデータ「01h」を書き込む。この実施の形態では、タイマ回路534が計測する所定期間(例えば、3ms)が、所定回数のタイマ割込処理が実行される期間(例えば、2msごとのタイマ割込処理を3回実行する場合は6ms)よりも短くなるように、ステップS3202において用いる所定回数(例えば、3回)が設定される。そのように設定することによって、乱数を読み出してから、乱数値記憶回路531に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができ、前回乱数値記憶回路531から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。なお、タイマ回路534が入賞検出信号SSの入力時間を計測するのでなく、CPU56が入賞検出信号SSの入力時間を計測し、乱数値取り込みデータ「01h」を乱数値取込レジスタ539に書き込むようにしてもよい。
タイマ割込処理の実行回数が所定回数に達している場合、CPU56は、特定した乱数回路503の乱数値記憶回路531に出力制御信号SCを出力し、乱数値記憶回路531を読出可能(イネイブル)状態に制御する(ステップS3203)。
CPU56は、乱数回路503の乱数値記憶回路531から、乱数値として記憶されているランダムRの値を読み出す(ステップS3204)。また、CPU56は、読み出したランダムRの値を、始動入賞記憶数の値に対応した保存領域(特別図柄判定用バッファ(特図保留メモリ570))に格納する(ステップS3205)。また、CPU56は、ランダムRの値をバッファ領域に格納すると、乱数値記憶回路531への出力制御信号SCの出力を停止し、乱数値記憶回路531を読出不能(ディセイブル)状態に制御する(ステップS3206)。また、CPU56は、割込実行回数カウンタをリセットする(ステップS3207)。そして、CPU56は、所定のバッファ領域に格納したランダムRの値を特図保留メモリ570の空エントリの先頭にセットし(ステップS3208)、始動入賞カウンタのカウント数を1加算することで始動入賞記憶数を1増やす(ステップS3209)。
また、CPU56は、判定用乱数や表示用乱数などの各乱数(ソフトウェア乱数)の値を抽出し、それらを始動入賞記憶数の値に対応した保存領域(特別図柄判定用バッファ)に格納する(ステップS3210)。なお、乱数を抽出するとは、乱数を生成させるためのカウンタからカウント値を読み出して、読み出したカウント値を乱数値とすることである。ステップS3210では、図57に示された乱数のうち、ランダム1〜ランダム4,ランダム8が抽出される。
ステップS3201において始動入賞記憶するが最大値である4に達している場合、およびステップS3202においてタイマ割込処理の実行回数が所定回数に達してない場合、そのまま始動口スイッチ通過処理を終了する。
以上のように、始動口スイッチ通過処理において、乱数値記憶回路531からランダムRを読み出すにあたって、タイマ割込処理が所定回数実行されたこと(すなわち、タイマ割込処理が所定回数実行される間継続して入賞検出信号SSが入力されたこと)を条件に、乱数値記憶回路531から乱数を読み出す。そのため、乱数を読み出してから、乱数値記憶回路531に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができる。また、前回乱数値記憶回路531から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。
次に、特別図柄プロセス処理における特別図柄通常処理(ステップS300)について説明する。図64は、特別図柄通常処理を示すフローチャートである。特別図柄通常処理において、遊技制御用マイクロコンピュータ560のCPU56は、特別図柄の変動を開始することができる状態(例えば特別図柄プロセスフラグの値がステップS300を示す値となっている場合)には(ステップS51)、始動入賞記憶数(保留記憶数)の値を確認する(ステップS52)。具体的には、始動入賞記憶カウンタのカウント値を確認する。なお、特別図柄プロセスフラグの値がステップS300を示す値となっている場合とは、可変表示装置9において図柄の変動がなされていず、かつ、大当り遊技中でもない場合である。また、ステップS51で変動開始不可能である場合や、ステップS52で保留記憶数が0である場合には、CPU56は、そのまま特別図柄通常処理を終了する。
保留記憶数が0でなければ、保留記憶数=1に対応する保存領域に格納されている各乱数値(ランダムRや各判定用乱数、表示用乱数)を読み出してRAM55の乱数バッファ領域に格納するとともに(ステップS53)、保留記憶数の値を1減らし(始動入賞記憶カウンタの値を1減らし)、かつ、各保存領域の内容をシフトする(ステップS54)。すなわち、保留記憶数=n(n=2,3,4)に対応する保存領域に格納されている各乱数値を、保留記憶数=n−1に対応する保存領域に格納する。よって、各保留記憶数に対応するそれぞれの保存領域に格納されている各乱数値が抽出された順番は、常に、保留記憶数=1,2,3,4の順番と一致するようになっている。すなわち、この例では、CPU56は、可変表示の開始条件が成立する毎に、各保存領域の内容をシフトする処理を実行する。
次に、CPU56は、確変フラグまたは時短フラグがセットされているか否かを確認する(ステップS55A)。確変フラグは、遊技状態が確変状態に移行されてから特別図柄の変動回数が所定回数(100回)以下であることを示すフラグである。確変フラグは、確変状態に移行されたとき、すなわち、確変大当りが発生してその大当り遊技が終了するときにセットされ、確変状態に移行されてから特別図柄の変動回数が所定回数に達したときおよび確変状態に移行されてから特別図柄の変動回数が所定回数に達する前に時短大当りまたは通常大当りが発生してその大当り遊技が終了するときにリセットされる(図71の大当り終了処理等を参照)。また、時短フラグは、遊技状態が時短状態であることを示すフラグである。時短フラグは、時短状態に移行されたとき、すなわち、時短大当りが発生してその大当り遊技が終了したときおよび確変状態のときに通常大当りが発生してその大当り遊技が終了するときにセットされ、時短状態が終了するとき、すなわち、時短大当りに移行されてから特別図柄の変動回数が所定回数に達したときおよび時短状態に移行されてから特別図柄の変動回数が所定回数に達する前に通常大当りが発生してその大当り遊技が終了するときにリセットされる(図71の大当り終了処理等を参照)。
確変フラグまたは時短フラグがセットされていなければ(ステップS55AのN)、ステップS56Aの処理に移行する。確変フラグまたは時短フラグがセットされていれば(ステップS55AのY)、CPU56は、変動回数カウンタの値を−1する(ステップS55B)。変動回数カウンタは、遊技状態が確変状態または時短状態に移行された後の特別図柄の変動回数をカウントするカウンタである。この変動回数カウンタには、遊技状態が確変状態または時短状態に移行されるときに所定回数(100回)がセットされる(図71の大当り終了処理等を参照)。次いで、CPU56は、変動回数カウンタの値が0であるか否かを確認する(ステップS55C)。このとき、変動回数カウンタの値が0であるということは、遊技状態が確変状態または時短状態に移行されてから変動回数が所定回数に達したことを意味する。CPU56は、変動回数カウンタの値が0であるときは(ステップS55CのY)、確変フラグがセットされているか否かを確認し(ステップS55D)、確変フラグがセットされているときは、高確率潜伏状態フラグをセットする(ステップS55E)。高確率潜伏状態フラグは、大当りが発生する確率は高められているが遊技演出は通常遊技演出が実行される高確率潜伏状態、より具体的には、確変状態に移行された後に変動回数が100回以上となった状態であることを示すフラグである。次いで、CPU56は、確変フラグまたは時短フラグをリセットする(ステップS55F)。
なお、確変フラグまたは時短フラグがセットされているときは、CPU56は、普通図柄プロセス処理(ステップS28)において、普通図柄の停止図柄が当り図柄になる確率を高めるとともに、可変入賞球装置15における開放時間と開放回数とのうちの一方または双方を高める制御を実行する。
次いで、CPU56は、乱数バッファ領域に格納した大当り判定用乱数(ランダムR)を読み出し(ステップS56A)、読み出した大当り判定用乱数の値にもとづいて、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定する(ステップS56B)。この場合、CPU56は、遊技状態が通常遊技状態または時短状態であるとき(遊技状態が確変状態でないとき)は、通常時大当り判定テーブル(図37(A))を用いて大当りとするか否かを決定し、遊技状態が確変状態であるときは、確変時大当り判定テーブル(図37(B))を用いて大当りとするか否かを決定する。遊技状態が確変状態であるかどうかは、確変フラグまたは高確率潜伏状態フラグがセットされているか否かによって確認することができる。
なお、大当りの判定は、タイマ割込処理における特別図柄プロセス処理(ステップS27)の特別図柄通常処理(ステップS300)において実行されているが、メイン処理におけるループ処理が実行されているとき(例えばステップS17からステップS20の間)に実行されてもよい。
大当りにすると決定された場合は(ステップS56CのY)、CPU56は、大当りになることを示す大当りフラグをセットする(ステップS57A)。また、大当り種別決定用乱数(ランダム8)を保存領域から読み出して(ステップS57B)、読み出した大当り種別決定用乱数の値にもとづいて大当り種別(2ラウンド確変大当り、2ラウンド時短大当り、7ラウンド通常大当り、15ラウンド通常大当り、15ラウンド確変大当り、15ラウンド時短大当り)を決定する(ステップS57C)。そして、決定した大当り種別に応じてROM54に設けられているワーク設定テーブルを選択し、選択したワーク設定テーブルに設定されている表示灯指定値をRAM55に設定する(ステップS57D)。ワーク設定テーブルは、遊技制御を実行するための各種の指定値が設定されるテーブルである。CPU56は、遊技制御を実行するときにワーク設定テーブルに設定されている指定値を参照して各種の遊技制御を実行する。表示灯指定値は、2つの大入賞口表示灯38,39のうちいずれの表示灯を表示させるかを示す指定値である。上述したように、2ラウンド大当りおよび15ラウンド大当りのときは第2大入賞口が開放されるので、大当り種別として2ラウンド大当りまたは15ラウンド大当りが決定されたときは第2大入賞口表示灯39の点灯を指定する表示灯指定値が設定されたワーク設定テーブルが選択される。7ラウンド大当りのときは第1大入賞口が開放されるので、大当り種別として7ラウンド大当りが決定されたときは第1大入賞口表示灯38の点灯を指定する表示灯指定値が設定されたワーク設定テーブルが選択される。そして、選択されたワーク設定テーブルの表示灯指定値がRAM55に設定される。なお、RAM55に設定された表示灯指定値にもとづく大入賞口表示灯38,39の表示制御は、後述する図67のステップS389にて実行される。
次いで、CPU56は、大当りとするかはずれとするか、また大当りにすると決定された場合の大当りの種別に応じた表示結果指定コマンドを音/ランプ制御基板80bに送信する制御を実行する(ステップS58)。
具体的には、表示結果指定コマンドに応じたコマンド送信テーブルのアドレスをポインタにセットする。表示結果指定コマンドに応じたコマンド送信テーブルのアドレスがポインタにセットされると、飾り図柄コマンド制御処理(ステップS29)において表示結果指定コマンドが送信される。この実施の形態において、「演出制御コマンドを送信する」とは、このような処理が行われることを示す。なお、コマンド送信テーブルとは、図62に例示された各演出制御コマンドが設定されているROM54の領域である。また、ポインタは、その領域において、該当コマンドが格納されているアドレスを指定するために使用されるデータであり、RAM55に形成されている。
なお、演出制御コマンドに応じたコマンド送信テーブルのアドレスがポインタにセットされたことにもとづいて、飾り図柄コマンド制御処理(ステップS29)において、演出制御コマンドを送信する構成に限られるわけではなく、ステップS58等の処理において、演出制御コマンドを送信する構成であってもよい。この実施の形態におけるコマンド送信処理においても同様である。
そして、CPU56は、特別図柄プロセスフラグの値を特別図柄停止図柄設定処理に対応した値に更新する(ステップS59)。
なお、上記のステップS57Cでは、大当り種別決定用乱数の値にもとづいて大当り種別を決定するように構成されていたが、このような構成に限られず、特別図柄の大当り図柄と大当りの種別とを予め対応させておいて、大当り図柄決定用乱数(ランダム2)の値にもとづいて大当りの種別を決定するように構成されていてもよい。
図65は、特別図柄プロセス処理における特別図柄停止図柄設定処理(ステップS301)の例を示すフローチャートである。特別図柄停止図柄設定処理において、遊技制御用マイクロコンピュータ560のCPU56は、まず、大当りフラグがセットされているか否かを確認する(ステップS361)。大当りフラグがセットされていなければ、CPU56は、特別図柄判定用バッファに格納されているはずれ図柄決定用乱数(ランダム1)にもとづいて、特別図柄の停止図柄(はずれ図柄)を決定する(ステップS362)。また、CPU56は、特別図柄判定用バッファに格納されているリーチ判定用乱数(ランダム4)にもとづいて、リーチとするか否かを決定する(ステップS363)。
リーチとする(すなわち、リーチ態様とした後に飾り図柄の停止図柄を大当り図柄としない)と決定すると(ステップS364)、CPU56は、リーチフラグをセットする(ステップS365)。
大当りフラグがセットされていれば、CPU56は、特別図柄判定用バッファに格納されている大当り図柄決定用乱数(ランダム2)にもとづいて、特別図柄の停止図柄(大当り図柄)を決定する(ステップS366)。このとき、大当りの種別によって特別図柄の大当り図柄が異なるので、大当り種別に応じた大当り図柄を決定する必要がある。大当り種別に応じた大当り図柄を決定するために、大当り図柄を決定するために用いるテーブルを大当り種別に応じて切り替えるようにする。
そして、CPU56は、特別図柄プロセスフラグの値を変動パターン設定処理に対応した値に更新する(ステップS367)。
図67は、特別図柄プロセス処理における変動パターン設定処理(ステップS302)の例を示すフローチャートである。変動パターン設定処理において、遊技制御用マイクロコンピュータ560のCPU56は、大当りフラグ、リーチフラグ、確変フラグおよび時短フラグのセット状況に応じた変動パターンテーブルを用いることに決定する(ステップS371)。
具体的には、大当りフラグがセットされ、かつ、確変フラグも時短フラグもセットされていないときは、「04H」〜「06H」の変動パターンが設定された変動パターンテーブルを用いることに決定する。リーチフラグがセットされ、かつ、確変フラグも時短フラグもセットされていないときは、「01H」〜「03H」の変動パターンが設定された変動パターンテーブルを用いることに決定する。大当りフラグもリーチフラグもセットされておらず、かつ、確変フラグも時短フラグもセットされていないときは、「00H」の変動パターンが設定された変動パターンテーブルを用いることに決定する。大当りフラグがセットされ、かつ、確変フラグまたは時短フラグがセットされているときは、「0BH」〜「0DH」の変動パターンが設定された変動パターンテーブルを用いることに決定する。リーチフラグがセットされ、かつ、確変フラグまたは時短フラグがセットされているときは、「08H」〜「0AH」の変動パターンが設定された変動パターンテーブルを用いることに決定する。大当りフラグもリーチフラグもセットされておらず、かつ、確変フラグまたは時短フラグがセットされているときは、「07H」の変動パターンが設定された変動パターンテーブルを用いることに決定する。
なお、高確率潜伏状態フラグがセットされているときは、確変フラグも時短フラグもセットされていない場合である。この場合は、通常遊技状態のときの変動パターンを決定するための変動パターンテーブルが選択されることになる。従って、高確率潜伏状態のときは、特別図柄の通常変動の変動パターンとして通常遊技状態のときと同じ通常変動の変動パターンが決定されることになる。
次に、CPU56は、変動パターン決定用乱数(ランダム3)を読み出し、読み出した変動パターン決定用乱数の値にもとづき、ステップS371で決定した変動パターンテーブルを用いて変動パターンを決定する(ステップS372)。そして、決定した変動パターンを指定する変動パターンコマンドを音/ランプ制御基板80bの音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS373)。
次いで、CPU56は、特別図柄プロセスタイマに変動パターンの変動時間を設定し(ステップS374)、特別図柄プロセスタイマをスタートさせて特別図柄の変動時間の計測を開始する(ステップS375)。そして、CPU56は、特別図柄プロセスフラグの値を特別図柄変動処理に対応した値に更新する(ステップS376)。
図67は、特別図柄停止処理を示すフローチャートである。特別図柄停止処理において、CPU56は、特別図柄表示器8における特別図柄の変動を止めて、停止図柄を導出表示する(ステップS381)。また、CPU56は、可変表示装置9における飾り図柄の変動の停止を指定する飾り図柄変動停止指定コマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS382)。なお、飾り図柄停止指定コマンドを送信すると送信済みであることを示すフラグをセットし、以後の特別図柄停止処理においてそのフラグを確認したときは、ステップS381,S382の処理を実行しないように構成されているものとする。このような構成によって、飾り図柄停止指定コマンドが複数回送信されるのを回避することができる。
また、特別図柄プロセスタイマの値を−1する(ステップS383)。なお、このとき、特別図柄変動中処理(ステップS303)において、特別図柄プロセスタイマに特別図柄を停止表示させる特別図柄停止時間がセットされている。次いで、CPU56は、特別図柄プロセスタイマがタイムアウトしたか否かを判定する(ステップS384)。特別図柄プロセスタイマがタイムアウトしていなければ、そのまま処理を終了する。
特別図柄プロセスタイマがタイムアウトしていれば、大当りフラグがセットされているか否かを確認する(ステップS385)。大当りフラグがセットされていなければ、内部状態(特別図柄プロセスフラグ)をステップS300に応じた値に更新する(ステップS386)。
大当りフラグがセットされていれば、CPU56は、大入賞口の開放/閉鎖を制御するための時間を計測する大入賞口制御タイマに、大当り遊技が開始されることを遊技者に報知する演出(ファンファーレ演出)の実行時間(大当り表示時間)をセットする(ステップS387)。
なお、大当りの種別に応じて異なる大当り表示時間をセットするように構成されていてもよい。
次いで、CPU56は、大当りの種別に応じたファンファーレコマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS388)。このように、大当りの種別に応じたファンファーレコマンドを送信するように構成されているので、音/ランプ制御用マイクロコンピュータ100bおよび音/ランプ制御用マイクロコンピュータ100bからコマンドを受信する図柄制御用マイクロコンピュータ100aは、ファンファーレコマンドによって大当りの種別を認識することができる。従って、大当りの種別に応じて予め決められているいずれの大入賞口が開放するかについて可変表示装置9などの演出装置を用いて遊技者に報知することができる。例えば、大当り遊技が開始されるときに可変表示装置9の画面に「左の大入賞口(アタッカー)が開く」というような文字を表示したり、開放される大入賞口を示す矢印を表示したりする。
そして、CPU56は、RAM55に設定されている表示灯指定値(設定値)に応じて、大入賞口表示灯38,39の表示制御を実行する(ステップS389)。具体的には、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられており、CPU56は、ステップS389において出力ポートのRAM領域に大入賞口表示灯の点灯/消灯に関する内容を設定する。そして、ステップS34の出力設定処理において出力ポートのRAM領域に設定された内容を出力ポートに出力する。これにより、駆動指令の信号が出力ポートから大入賞口表示灯に出力され、大入賞口表示灯の表示制御が実行される。大入賞口表示灯38,39のいずれが点灯されたかによって、遊技者は、2つの大入賞口のいずれが開放されるかについて知ることができる。なお、この実施の形態では、大入賞口表示灯の表示制御は、大当り図柄が停止表示されてから大入賞口が開放されるまで行われる(ステップS408,S412参照)。そして、CPU56は、内部状態(特別図柄プロセスフラグ)をステップS305に応じた値に更新する(ステップS390)。
なお、大入賞口表示灯38,39の表示制御は、特別図柄停止処理にて実行(開始)される場合に限られるわけではない。例えば、大入賞口が最初に開放される前の大入賞口開放前処理にて実行(開始)するように構成されていてもよい。
図68は、特別図柄プロセス処理における大入賞口開放前処理(ステップS305)を示すフローチャートである。大入賞口開放前処理において、CPU56は、大入賞口制御タイマの値を−1し(ステップS401)。そして、大入賞口制御タイマの値が0であるか否かを確認する(ステップS402)。その値が0になっていなければ(ステップS402のN)、そのまま処理を終了する。大入賞口制御タイマの値が0になっていれば(ステップS402のY)、大当りが2ラウンド大当りであるか否かを判定する(ステップS403)。なお、大当りが2ラウンド大当りであるか否かは、例えば、大当りの種別が決定されたときに、大当りの種別を示すフラグをセットしておき、そのフラグを確認することによって実現することができる。
2ラウンド大当りでない場合、つまり、7ラウンド大当りまたは15ラウンド大当りである場合(ステップS403のN)、CPU56は、大入賞口の開放中(ラウンド中)におけるラウンド数に応じた表示状態を指定する大入賞口開放中表示コマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS404)。なお、ラウンド数は、大当り遊技中のラウンド数をカウントするラウンド数カウンタの値を確認することにより認識する。そして、CPU56は、ソレノイド241またはソレノイド242を駆動して大入賞口(開閉板201または開閉板202)を開放する制御を行うとともに(ステップS405)、ラウンド数カウンタの値を+1する(ステップS406)。なお、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられており、CPU56は、ステップS405において出力ポートのRAM領域におけるソレノイドのオン/オフに関する内容を、駆動するソレノイドの開閉状態に応じて設定する。そして、ステップS35の出力処理において出力ポートのRAM領域に設定された内容を出力ポートに出力する。これにより、駆動指令の信号が出力ポートから出力回路59に出力される。出力回路59は、駆動指令の信号に応じてソレノイドを駆動するための駆動信号をソレノイドに出力して、ソレノイドを駆動させる。以下、ソレノイドを開閉駆動させる処理では、このような動作が行われる。
また、大入賞口制御タイマに、各ラウンドにおいて大入賞口が開放可能な最大時間(ラウンド時間)セットする(ステップS407)。また、大入賞口表示灯を消灯する制御を実行する(ステップS408)。
ステップS403において2ラウンドの大当りであったときは(ステップS403のY)、CPU56は、ソレノイド242を駆動して第2大入賞口を開放するとともに(ステップS409)、ラウンド数カウンタの値を+1する(ステップS410)。また、大入賞口制御タイマにラウンド時間をセットする(ステップS411)。なお、15ラウンド用や7ラウンド用のラウンド時間と異なり、2ラウンド用のラウンド時間は、極めて短い時間であり、例えば0.1秒とされている。従って、2ラウンドの大当りでは、ラウンド中に大入賞口へ遊技球が入賞する可能性は低い。また、大入賞口表示灯を消灯する制御を実行する(ステップS412)。
そして、CPU56は、内部状態(特別図柄プロセスフラグ)をステップS306に応じた値に更新する(ステップS413)。
図69および図70は、特別図柄プロセス処理における大入賞口開放中処理(ステップS306)を示すフローチャートである。大入賞口開放中処理において、CPU56は、まず、大入賞口制御タイマの値を−1する(ステップS421)。そして、大当りの種別が2ラウンド大当りであるか否かを確認する(ステップS422)。
2ラウンド大当りであれば(ステップS422のY)、CPU56は、大入賞口制御タイマの値が0であるかどうかを確認し(ステップS423)、大入賞口制御タイマの値が0になっていないときは(ステップS423のN)、そのまま処理を終了する。大入賞口制御タイマの値が0になっているときは(ステップS423のY)、ソレノイド242を駆動して大入賞口(開閉板202)を閉鎖する制御を行う(ステップS424)。次いで、CPU56は、ラウンド数カウンタの値が2になっているかどうかを確認する(ステップS425)。
ラウンド数カウンタの値が2になっていなければ(ステップS425のN)、CPU56は、大入賞口制御タイマに、ラウンドが終了してから次のラウンドが開始するまでの時間(インターバル時間)をセットし(ステップS429)、特別図柄プロセスフラグの値をステップS305(大入賞口開放前処理)に応じた値に更新する(ステップS430)。なお、2ラウンド用のインターバル時間は、極めて短い時間であり、例えば0.1秒とされている。
ラウンド数カウンタの値が2になっていれば(ステップS425のY)、CPU56は、大当りの終了を指定する大当り終了指定コマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS426)。そして、大入賞口制御タイマに大当り終了を遊技者に報知する演出(エンディング演出)の実行時間(大当り終了時間)をセットし(ステップS427)、特別図柄プロセスフラグの値をステップS307(大当り終了処理)に応じた値に更新する(ステップS428)。
ステップS422において2ラウンド大当りでなければ(ステップS422のN)、CPU56は、大入賞口制御タイマの値が0であるかどうかを確認する(ステップS431)。大入賞口制御タイマの値が0になっていないときは(ステップS431のN)、カウントスイッチ231またはカウントスイッチ232がオンしたか否かを確認することにより、大入賞口への遊技球の入賞があったかどうかを確認する(ステップS432)。カウントスイッチ231またはカウントスイッチ232がオンしていなければ(ステップS432のN)、そのまま処理を終了する。カウントスイッチ231またはカウントスイッチ232がオンしていれば(ステップS432のY)、CPU56は、大入賞口への遊技球の入賞個数をカウントする入賞個数カウンタの値を+1する(ステップS433)。そして、ラウンド中の大入賞口への入賞球数を指定するカウント数指定コマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS434)。次いで、CPU56は、入賞個数カウンタの値が所定数(例えば10個)になっているか否かを確認する(ステップS435)。入賞個数カウンタの値が所定数になっていなければ(ステップS435のN)、そのまま処理を終了する。
大入賞口制御タイマの値が0になっているとき(ステップS431のY)、または入賞個数カウンタの値が所定数になっているとき(ステップS435のY)は、CPU56は、ソレノイド241またはソレノイド242を駆動して大入賞口(開閉板201または開閉板202)を閉鎖する制御を行う(ステップS436)。そして、入賞個数カウンタの値をクリアする(0にする)(ステップS437)。
次いで、CPU56は、15ラウンド大当りであるか否かを確認し(ステップS438)、15ラウンド大当りであるときは、ラウンド数カウンタの値が15であるか否かを確認する(ステップS440)。また、15ラウンド大当りでないときは、ラウンド数カウンタの値が7であるか否かを確認する(ステップS439)。ステップS440においてラウンド数カウンタの値が15でないとき(ステップS440のN)およびステップS439においてラウンド数カウンタの値が7でないときは(ステップS439のN)、CPU56は、大入賞口の開放後(ラウンドの終了後)におけるラウンド数に応じた表示状態を指定する大入賞口開放後表示指定コマンドを音/ランプ制御用マイクロコンピュータ100bに送信する制御を行う(ステップS441)。そして、大入賞口制御タイマに、ラウンドが終了してから次のラウンドが開始するまでの時間(インターバル時間)をセットし(ステップS442)、特別図柄プロセスフラグの値をステップS305(大入賞口開放前処理)に応じた値に更新する(ステップS443)。
ステップS440においてラウンド数カウンタの値が15であるとき(ステップS440のY)およびステップS439においてラウンド数カウンタの値が7であるときは(ステップS439のY)、CPU56は、大当り終了指定コマンドを送信する制御を行い(ステップS444)、大入賞口制御タイマに大当り終了時間をセットする(ステップS445)。そして、特別図柄プロセスフラグの値をステップS307(大当り終了処理)に応じた値に更新する(ステップS446)。
図71は、特別図柄プロセス処理における大当り終了処理(ステップS307)を示すフローチャートである。大当り終了処理において、CPU56は、まず、大入賞口制御タイマの値を−1する(ステップS501)。そして、大入賞口制御タイマの値が0であるか否かを確認する(ステップS502)。大入賞口制御タイマの値が0でなければ(ステップS502のN)、そのまま処理を終了する。
大入賞口制御タイマの値が0になっていれば(ステップS502のY)、大当りが確変大当りであったか否かを確認する(ステップS503)。確変大当りであった場合は(ステップS503のY)、確変フラグをセットする(ステップS504)。なお、すでにフラグがセットされていた場合はセットする必要はない。また、CPU56は、変動回数カウンタに100回をセットする(ステップS505)。そして、大当りフラグをリセットし(ステップS506)、内部状態(特別図柄プロセスフラグの値)をステップS300(特別図柄通常処理)に応じた値に更新する(ステップS507)。
ステップS503において確変大当りでなかった場合は、時短大当りであったか否かを確認する(ステップS508)。時短大当りであった場合は(ステップS508のY)、時短フラグをセットする(ステップS509)。なお、すでにフラグがセットされていた場合はセットする必要はない。次いで、確変フラグがセットされているか否かを確認し(ステップS510)、確変フラグがセットされていれば、そのフラグをリセットする(ステップS511)。その後、上述したステップS505〜S507の処理を実行する。
ステップS508において時短大当りでなかった場合は、大当りが通常大当りであったことになり、このときは、CPU56は、確変フラグがセットされているか否かを確認する(ステップS512)。確変フラグがセットされているときは、確変フラグをリセットし(ステップS513)、時短フラグをセットする(ステップS514)。その後、上述したステップS505〜S507の処理を実行する。
確変フラグがセットされていないときは、時短フラグがセットされているか否かを確認する(ステップS515)。時短フラグがセットされているときは、時短フラグをリセットする(ステップS516)。その後、上述したステップS506,S507の処理を実行する。
なお、上記のステップS503〜S505,S508〜S516の処理は、大当り終了処理にて実行するのではなく、特別図柄停止処理にて実行するようにしてもよい。また、所定の種別の大当りが発生したことにもとづく所定の遊技状態を終了させる処理、すなわち、ステップS511,S513,S516におけるフラグをリセットする処理についてのみ特別図柄停止処理にて実行するようにし、所定の種別の大当りが発生したことにもとづく所定の遊技状態に移行させる処理、すなわち、ステップS504,S509,S514におけるフラグをセットする処理については大当り終了処理にて実行するようにしてもよい。
次に、主基板31と払出制御基板37との間で送受信される払出制御信号および払出制御コマンドについて説明する。図72は、遊技制御手段から払出制御手段に対して出力される制御信号の内容の一例を示す説明図である。この実施の形態では、払出制御等に関する各種の制御を行うために、主基板31と払出制御基板37との間で制御信号として接続確認信号が送受信される。図72に示すように、接続確認信号は、主基板31の立ち上がり時(遊技制御手段が遊技制御処理を開始したとき)に出力され、払出制御基板37に対して主基板31が立ち上がったことを通知するための信号(主基板31の接続確認信号)である。また、接続確認信号は、賞球払出が可能な状態であることを示す。
払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560と同様に、シリアル通信回路375を内蔵する。また、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505と、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路375との間で、各種払出制御コマンドが送受信される。なお、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路375の構成及び機能は、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505の構成及び機能と同様である。
図73は、遊技制御手段と払出制御手段との間で送受信される制御コマンドの内容の一例を示す説明図である。この実施の形態では、払出制御等に関する各種の制御を行うために、主基板31と払出制御基板37とのマイクロコンピュータの間で各種制御コマンドが送受信される。
賞球個数コマンドは、払出要求を行う遊技球の個数(0〜15個)を指定するために出力されるコマンドである。この実施の形態では、始動口スイッチ14aで遊技球が検出されると4個の賞球払出を行い、入賞口スイッチ29a,30aのいずれかで遊技球が検出されると7個の賞球払出を行い、カウントスイッチ231,232で遊技球が検出されると15個の賞球払出を行う。よって、始動口スイッチ14aで遊技球が検出された場合、賞球数4個を通知するための賞球個数コマンド「04」が送信され、入賞口スイッチ29a,30aのいずれかで遊技球が検出された場合、賞球数7個を通知するための賞球個数コマンド「07」が送信され、カウントスイッチ231,232で遊技球が検出された場合、賞球数15個を通知するための賞球個数コマンド「0F」が送信される。なお、賞球個数コマンドを2バイトで構成してもよい。この場合、例えば、CPU56は、まず賞球個数コマンドの下位1バイトのデータを送信データレジスタ710に書き込む。そして、送信用シフトレジスタ712から賞球個数コマンドの下位1バイトのデータの送信が完了すると、シリアル通信回路505からの送信時割り込み要求に応じて、CPU56は、賞球個数コマンドの上位1バイトのデータを送信データレジスタ710に書き込み、送信用シフトレジスタ712から賞球個数コマンドの上位1バイトのデータが送信される。
賞球ACKコマンド「D2」は、払出制御手段が賞球個数コマンドを受信したことを遊技制御手段に通知するためのコマンドである。賞球ACKコマンドは、賞球個数コマンドを受信したことを示す受信確認信号に相当する。
図74は、図72に示す制御信号および図71に示す制御コマンドの送受信に用いられる信号線等を示すブロック図である。なお、図74には、電源断信号も示されている。図74に示すように、接続確認信号は、遊技制御用マイクロコンピュータ560によって出力回路67を介して出力され、入力回路373Aを介して払出制御用マイクロコンピュータ370に入力される。また、電源断信号は、出力回路373Bを介して出力され、入力回路68を介して遊技制御用マイクロコンピュータ560に入力される。また、賞球個数コマンドは、遊技制御用マイクロコンピュータ560が内蔵するシリアル回路505から出力され、払出制御用マイクロコンピュータ370が内蔵するシリアル回路375に入力される。また、賞球ACKコマンドは、払出制御用マイクロコンピュータ370が内蔵するシリアル回路375から出力され、遊技制御用マイクロコンピュータ560が内蔵するシリアル回路505に入力される。
接続確認信号および電源断信号は、それぞれ1ビットのデータであり、1本の信号線によって送信される。また、主基板31と払出制御基板37との間で、遊技制御用マイクロコンピュータ560への電源断信号の信号線と、払出制御に関わる制御信号(接続確認信号)の信号線とをまとめて配線することができる。よって、遊技機において、遊技制御用マイクロコンピュータ560への電源断信号に関する配線スペースを節減することができる。
なお、この実施の形態では、遊技制御用マイクロコンピュータ560が賞球個数コマンドを払出制御用マイクロコンピュータ370にシリアル送信し、払出制御用マイクロコンピュータ370が賞球ACKコマンドを遊技制御用マイクロコンピュータ560にシリアル送信する双方向通信を行う場合を説明するが、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とは一方向のシリアル通信を行ってもよい。例えば、遊技制御用マイクロコンピュータ560が賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する一方向のシリアル通信を行い、払出制御用マイクロコンピュータ370は賞球ACKコマンドを送信しないようにしてもよい。
図75は、払出制御信号および払出制御コマンドの出力の仕方の一例を示すタイミング図である。図75に示すように、入賞検出スイッチが遊技球の入賞を検出すると、遊技制御手段(遊技制御用マイクロコンピュータ560)は、入賞に応じて払い出される賞球数に応じた賞球個数コマンドを払出制御手段(払出制御用マイクロコンピュータ370)に送信する。なお、具体的には、遊技制御用マイクロコンピュータ560は、遊技球が遊技機に設けられている入賞領域に入賞したことを入賞検出スイッチの検出信号によって検知すると、あらかじめ決められた賞球数をバックアップRAMに形成されている総賞球数格納バッファの内容に加算する。そして、総賞球数格納バッファの内容が0でない値になったら、入賞に応じて払い出される賞球数に応じた賞球個数コマンドを払出制御用マイクロコンピュータ370に送信する。
また、この実施の形態では、始動口スイッチ14aで遊技球が検出されると4個の賞球払出を行い、入賞口スイッチ29a,30aのいずれかで遊技球が検出されると7個の賞球払出を行い、カウントスイッチ231,232で遊技球が検出されると15個の賞球払出を行う。具体的には、遊技制御用マイクロコンピュータ560は、払い出される賞球数に応じて、賞球数が4個の場合には賞球数が4個であることを示す賞球個数コマンド「04」を送信し、賞球数が7個の場合には賞球数が7個であることを示す賞球個数コマンド「07」を送信し、賞球数が15個の場合には賞球数が15個であることを示す賞球個数コマンド「0F」を送信する。
賞球個数コマンドの送信を完了すると、遊技制御用マイクロコンピュータ560のシリアル通信回路505は、図75に示すように、遊技制御用マイクロコンピュータ560のCPU56に対して送信時割り込み要求を行う。送信時割込要求によって、CPU56は、賞球個数コマンドの送信を完了した状態となったことを認識し、払出制御用マイクロコンピュータからの受信確認信号の待ち状態となる。
払出制御用マイクロコンピュータ370は、賞球個数コマンドの受信を確認すると、受信した賞球個数コマンドに示される賞球数を、払出制御用マイクロコンピュータ370の受信バッファに格納する。また、払出制御用マイクロコンピュータ370は、RAMの所定領域に設けられた賞球未払出個数カウンタに賞球数を加算する。そして、払出制御用マイクロコンピュータ370は、賞球ACKコマンド「D2」を、遊技制御用マイクロコンピュータ560に送信する。なお、払出制御用マイクロコンピュータ370は、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路375からの受信時割り込み要求にもとづく割込処理において賞球数を受信カウンタに格納するようにしてもよい。この場合、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路375は、賞球個数コマンドを受信すると、払出制御用マイクロコンピュータ370のCPUに受信時割り込み要求を行う。そして、払出制御用マイクロコンピュータ370のCPUは、シリアル通信回路375からの割り込み要求に応じて割込処理を実行することによって、賞球数を受信バッファに格納する。
賞球ACKコマンドを受信し、受信データレジスタ711に賞球ACKコマンドが格納された状態となると、遊技制御用マイクロコンピュータ560のシリアル通信回路505は、図75に示すように、遊技制御用マイクロコンピュータ560のCPU56に対して受信時割り込み要求を行う。受信時割込要求による割込処理を実行することによって、CPU56は、シリアル通信回路505がデータを受信したことを認識し、後述する賞球ACK待ち処理において受信データレジスタ711から賞球ACKコマンドを読み込む。
図76は、ステップS31の賞球処理の一例を示すフローチャートである。賞球処理において、遊技制御用マイクロコンピュータ560は、賞球個数加算処理(ステップS1201)と賞球制御処理(ステップS1202)とを実行する。そして、RAM55に形成されるポート0バッファの内容をポート0に出力する(ステップS1203)。なお、ポート0バッファの内容は、賞球制御処理において更新される。
遊技制御用マイクロコンピュータ560のCPU56は、メイン処理におけるステップS17からステップS19までのループ処理において、割り込み許可状態である間にシリアル通信回路505からの割り込み要求があると、シリアル通信回路505が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。図77は、シリアル通信回路505が割り込み要求に対して行う割り込み処理の一例を示す流れ図である。図77(a)は、シリアル通信回路505が通信エラーを割り込み原因として割り込み要求を行った場合に、CPU56が実行する通信エラー割込処理である。図77(b)は、シリアル通信回路505が受信データを受信したことを割り込み原因として割り込み要求を行った場合に、CPU56が実行する受信時割込処理である。図77(c)は、シリアル通信回路505が送信データの送信を完了したことを割り込み原因として割り込み要求を行った場合に、CPU56が実行する送信完了割込処理である。
CPU56は、いずれの割込処理を優先して実行する旨が初期設定されているか否かを判断する。例えば、CPU56は、いずれの割込処理を優先して実行する旨のフラグがセットされているか否かを判断する。この実施の形態では、CPU56は、通信エラー時割込優先実行フラグがセットされていることにもとづいて、シリアル通信回路505で通信エラーが発生したことを割込原因とする割込処理を優先して実行する。
シリアル通信回路505から割り込み要求があると、CPU56は、シリアル通信回路505のステータスレジスタA705の各ビットを確認し、割り込み原因を特定する。この場合、CPU56は、いずれの割込処理を優先して実行する旨が初期設定されているか否かを判断する。例えば、CPU56は、いずれの割込処理を優先して実行する旨のフラグがセットされているか否かを判断する。この実施の形態では、CPU56は、通信エラー時割込優先実行フラグがセットされていることにもとづいて、シリアル通信回路505で通信エラーが発生したことを割込原因とする割込処理を優先して実行する。
CPU56は、通信エラー時割込優先実行フラグがセットされていることにもとづいて、ステータスレジスタA705のビット0〜ビット3を優先的に確認し、割り込み原因を特定する。すなわち、CPU56は、シリアル通信回路505で通信エラー(オーバーラン、ノイズエラー、フレーミングエラーまたはパリティエラー)が発生したことを割り込み原因として割り込み要求したか否かを、他の割り込み原因(受信データの受信または送信データの送信完了)に優先して判断する。ステータスレジスタA705のビット0〜ビット3のうちいずれか1つまたは複数のビットが「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505で通信エラーが発生したことであると特定する。
割り込み原因がシリアル通信回路505で通信エラーが発生したことであると特定すると、CPU56は、図77(a)に示す通信エラー割込処理を他の割込処理(図77(b)および図77(c)に示す割込処理)に優先して実行する。この場合、CPU56は、シリアル通信回路505で通信エラーが発生していることを示す通信エラーフラグをセットする(ステップS41)。
なお、通信エラーを検出すると、CPU56は、演出制御手段に、シリアル通信回路505で通信エラーが発生したことを通知するために、通信エラー発生表示指定の演出制御コマンド(通信エラー表示コマンド)を送信する処理を行う。音/ランプ制御用CPUは、通信エラー表示コマンドを受信すると、音、表示、発光体などを用いた演出を行い、通信エラーが発生している旨の報知を行う。
なお、CPU56は、図77(a)の通信エラー割込処理において、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止するように構成されていてもよい。この場合、CPU56は、例えば、シリアル通信回路505の送信部の機能を停止させることによって、払出制御基板37が搭載する払出制御用マイクロコンピュータ370へのデータ送信を禁止するように制御する。また、CPU56は、図77(a)の通信エラー割込処理において、通信エラー発生表示指定の演出制御コマンド(通信エラー表示コマンド)を送信する処理を行うように構成されていてもよい。
割り込み原因がシリアル通信回路505で通信エラーが発生したことでなかった場合、CPU56は、ステータスレジスタAのビット5を確認する。すなわち、CPU56は、シリアル通信回路505が受信データを受信したことが割込原因であるか否かを判断する。ステータスレジスタAのビット5が「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505が受信データを受信したことであると特定する。
割り込み原因がシリアル通信回路505が受信データを受信したことであると特定すると、CPU56は、図77(b)に示す受信時割込処理を実行する。この場合、CPU56は、シリアル通信回路505が受信データを受信していることを示す受信時割込フラグをセットする(ステップS42)。
なお、ステップS42において、CPU56は、受信時割込フラグをセットするとともに、シリアル通信回路505の受信データレジスタ711からデータを読み込んでもよい。この場合、例えば、CPU56は、読み込んだ受信データが賞球ACKコマンドであるか否かを判断する。また、賞球ACKコマンドであると判断すると、CPU56は、賞球ACKコマンドを受信したことを示す賞球ACK受信フラグをセットする。なお、払出制御用マイクロコンピュータ370のCPUも、図77(b)の受信時割込処理と同様の処理を実行し、その場合、受信時割込処理を実行するときに、シリアル通信回路375の受信データレジスタからデータを読み込んでもよい。そして、この場合は、読み込んだ受信データが賞球コマンドであるか否かを判断し、賞球コマンドであると判断すると、賞球コマンドを受信したことを示すフラグをセットする。
また、割り込み原因がシリアル通信回路505で通信エラーが発生したことでなく、受信割込でもなかった場合、CPU56は、ステータスレジスタAのビット6を確認する。すなわち、CPU56は、シリアル通信回路505が送信データの送信を完了したことが割込原因であるか否かを判断する。ステータスレジスタAのビット6が「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505が送信データの送信を完了したことであると特定する。
割り込み原因がシリアル通信回路505が送信データの送信を完了したことであると特定すると、CPU56は、図77(c)に示す送信完了割込処理を実行する。この場合、CPU56は、シリアル通信回路505が送信データの送信を完了していることを示す送信時割込フラグをセットする(ステップS43)。
上記に示す処理を実行することによって、遊技制御用マイクロコンピュータ560のCPU56は、シリアル通信回路505からの割り込み要求があった場合に、割込原因を特定し、特定した割込原因に応じたフラグ(通信エラーフラグ、受信時割込フラグ又は送信時割込フラグ)をセットする。特定した割込原因に応じてフラグがセットされることによって、CPU56によって、シリアル通信回路505で通信エラーが発生した旨や、データを受信した旨、又はデータ送信を完了した旨が認識される。
なお、払出制御用マイクロコンピュータ370が搭載するCPUも、シリアル通信回路375からの割り込み要求があった場合に、図77に示す処理と同様の処理に従って、割り込み原因を特定し、特定した割込原因に応じたフラグをセットする。
例えば、遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に、一方向通信で賞球個数コマンドを送信する場合を考える。この場合、遊技制御用マイクロコンピュータ560が払出制御用マイクロコンピュータ370に、例えば2ms毎にタイマ割込が発生する構成となっていて、賞球個数コマンドを送信した後、次の割込処理を行って2ms後に再び賞球個数コマンドを送信したとする。また、払出制御用マイクロコンピュータ370は、例えば4ms毎にタイマ割込が発生する構成となっていて、4ms毎に賞球個数コマンドを受信できるものであるとする。すると、遊技制御用マイクロコンピュータ560が最初に送信した賞球個数コマンドを読み込んでいないのに、払出制御用マイクロコンピュータ370が次の賞球個数コマンドを受信してしまう事態が発生してしまうが、払出制御用マイクロコンピュータ370のCPUがシリアル通信回路375からの受信時割り込み要求に応じて賞球個数コマンドを受信するように設定すれば、遊技制御用マイクロコンピュータ560からの賞球個数コマンドを確実に受信することができる。
賞球個数加算処理では、図78に示す賞球個数テーブルが使用される。賞球個数テーブルは、ROM54に設定されている。賞球個数テーブルの先頭アドレスには処理数(この例では「4」)が設定され、その後に、スイッチオンバッファ(2バイトのスイッチオンバッファのうちの入力ポート0に対応する方)の下位アドレス、入賞により賞球を払い出すことになる入賞口の各スイッチについてのスイッチ入力ビット判定値、賞球数が、入賞口の各スイッチのそれぞれに対応して順次設定されている。なお、スイッチ入力ビット判定値は、入力ポート0における各スイッチの検出信号が入力されるビットに対応した値である。また、スイッチオンバッファの上位アドレスは固定的な値(例えば7F(H))である。また、賞球個数テーブルにおいて、4つのスイッチオンバッファの下位アドレスのそれぞれには、同じデータが設定されている。なお、この実施の形態では、ROM54およびRAM55のアドレスは16ビットで指定される。
図79は、賞球個数加算処理を示すフローチャートである。賞球個数加算処理において、CPU56は、賞球個数テーブルの先頭アドレスをポインタにセットする(ステップS1211)。そして、ポインタが指すアドレスのデータ(この場合には処理数)をロードする(ステップS1212)。次に、スイッチオンバッファの上位アドレス(8ビット)を2バイトのチェックポインタの上位1バイトにセットする(ステップS1213)。
そして、ポインタの値を1増やし(ステップS1214)、ポインタが指す賞球個数テーブルのデータ(この場合にはスイッチオンバッファの下位アドレス)をチェックポインタの下位1バイトにセットした後(ステップS1215)、ポインタの値を1増やす(ステップS1216)。次いで、チェックポインタが指すアドレスのデータ、すなわちスイッチオンバッファの内容をレジスタにロードし(ステップS1217)、ロードした内容と、ポインタが指す賞球個数テーブルのデータ(この場合にはスイッチ入力ビット判定値)との論理積をとる(ステップS1218)。この結果、スイッチオンバッファの内容がロードされたレジスタには、検査対象としているスイッチの検出信号に対応したビット以外の7ビットが0になる。そして、ポインタの値を1増やす(ステップS1219)。
ステップS1218における演算結果が0でなれば、すなわち、検査対象のスイッチの検出信号がオン状態であれば、ポインタが指す賞球個数テーブルのデータ(この場合には賞球個数)を賞球加算値に設定し(ステップS1220,S1221)、賞球加算値を、RAM55に形成されている16ビットの総賞球数格納バッファの内容に加算する(ステップS1222)。加算の結果、桁上げが発生した場合には、総賞球数格納バッファの内容を65535(=FFFF(H))に設定する(ステップS1223,1224)。
ステップS1225では処理数を1減らし、処理数が0であれば処理を終了し、処理数が0でなければステップS1214に戻る(ステップS1226)。また、ステップS1220において、ステップS1218における演算結果が0であること、すなわち、検査対象のスイッチの検出信号がオフ状態であることを確認したら、ステップS1225に移行する。
図80は、ステップS1202の賞球制御処理を示すフローチャートである。賞球制御処理では、CPU56は、ステップS1230の賞球異常検出処理を実行した後、賞球プロセスコードの値に応じて、ステップS1231〜S1235のいずれかの処理を実行する。
図81は、賞球プロセスコードの値が0の場合に実行される賞球送信待ち処理(ステップS1231)を示すフローチャートである。CPU56は、賞球送信待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1241)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、総賞球数格納バッファの内容を確認する(ステップS1242)。その値が0であれば処理を終了し、0でなければ、賞球プロセスコードの値を1にした後(ステップS1243)、処理を終了する。
図82は、賞球プロセスコードの値が1の場合に実行される賞球個数コマンド送信処理(ステップS1232)を示すフローチャートである。CPU56は、賞球送信処理において、通信エラーフラグがセットされているか否か確認する(ステップS1251)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止し、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御用マイクロコンピュータ370との通信を禁止するように制御する。この場合、CPU56は、例えば、シリアル通信回路505の送信部の機能を停止させることによって、払出制御基板37が搭載する払出制御用マイクロコンピュータ370へのデータ送信を禁止するように制御する。例えば、CPU56は、シリアル通信回路505の制御レジスタB708のビット3を「0」に設定し、送信回路を使用しないように設定することによって、払出制御用マイクロコンピュータ370へのデータ送信を禁止する。なお、例えば、CPU56は、図77(a)に示す通信エラー割込処理において、制御レジスタB708のビット3を「0」に設定し、払出制御用マイクロコンピュータ370へのデータ送信を禁止してもよい。払出制御用マイクロコンピュータ370へのデータ送信が禁止された後は、エラー状態を解除するためのエラー解除スイッチ(図示せず)が操作されたことにもとづいて通信エラーフラグがクリアされてエラー状態から復旧させたり、またはCPU56がシリアル通信回路505のデータレジスタの値を読み込むと通信エラーフラグがクリアされてエラー状態から自動復旧させるようにしてもよい。
通信エラーフラグがセットされていなければ、CPU56は、総賞球数格納バッファの内容が賞球コマンド最大値(この例では「15」)よりも小さいか否か確認する(ステップS1252)。総賞球数格納バッファの内容が賞球コマンド最大値以上であれば、賞球コマンド最大値を賞球個数バッファに設定する(ステップS1253)。また、総賞球数格納バッファの内容が賞球コマンド最大値よりも小さい場合には、総賞球数格納バッファの内容を賞球個数バッファに設定する(ステップS1254)。
その後、CPU56は、賞球個数バッファの内容を賞球個数コマンドとしてシリアル通信回路505の送信データレジスタ710に書き込み(ステップS1255)、賞球プロセスコードの値を2にした後(ステップS1256)、処理を終了する。この実施の形態では、賞球コマンド最大値は「15」である。従って、最大で「15」の払出数を指定する賞球個数コマンドが送信データレジスタ710に書き込まれる。その後、送信データレジスタ710に書き込まれた賞球個数コマンドは、送信用シフトレジスタ712に転送され、送信用シフトレジスタ712から払出制御用マイクロコンピュータに送信される。
図83は、賞球プロセスコードの値が2の場合に実行される賞球送信完了待ち処理(ステップS1233)を示すフローチャートである。CPU56は、賞球送信完了待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1261)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、送信時割込フラグがセットされているか否かを確認する(ステップS1262)。送信時割込フラグがセットされていれば、CPU56は、ステップS1263の処理に移行する。また、送信時割込フラグがセットされていなければ、CPU56は、そのまま処理を終了する。すなわち、CPU56は、賞球個数コマンド送信処理において送信データレジスタ710に書き込んだ賞球個数コマンドの送信をシリアル通信回路505が既に完了したか否かを判断し、賞球個数コマンドの送信を完了したことを確認すると、ステップS1263以降の処理を実行する。
送信時割込フラグがセットされていれば、CPU56は、送信時割込フラグをリセットする(ステップS1263)。そして、CPU56は、総賞球数格納バッファの内容から、賞球個数バッファの内容(払出制御手段に指令した賞球払出個数)を減算する(ステップS1264)。なお、遊技制御用マイクロコンピュータ560は、ステップS1255において賞球個数コマンドを送信データレジスタ710に書き込む前に、総賞球数格納バッファの内容から賞球払出個数を減算してもよい。
また、CPU56は、賞球タイマにACK受信完了判定時間値をセットする(ステップS1266)。そして、賞球プロセスコードの値を3にして(ステップS1267)、処理を終了する。なお、ACK受信完了判定時間値は、払出制御手段から賞球ACKコマンドを受信したか否かを監視するための時間値である。
図84は、賞球プロセスコードの値が3の場合に実行される賞球ACK待ち処理(ステップS1234)を示すフローチャートである。CPU56は、賞球ACK待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1271)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止し、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御用マイクロコンピュータ370との通信を禁止するように制御する。この場合、CPU56は、例えば、シリアル通信回路505の受信部の機能を停止させることによって、払出制御基板37からのデータ受信を禁止するように制御する。例えば、CPU56は、シリアル通信回路505の制御レジスタB708のビット2を「0」に設定し、受信回路を使用しないように設定することによって、払出制御基板37が搭載する払出制御用マイクロコンピュータ370からのデータ受信を禁止する。なお、例えば、CPU56は、図77(a)に示す通信エラー割込処理において、制御レジスタB708のビット2を「0」に設定し、払出制御用マイクロコンピュータ370からのデータ受信を禁止してもよい。払出制御用マイクロコンピュータ370へのデータ送信が禁止された後は、エラー状態を解除するためのエラー解除スイッチ(図示せず)が操作されたことにもとづいて通信エラーフラグがクリアされてエラー状態から復旧させたり、またはCPU56がシリアル通信回路505のデータレジスタの値を読み込むと通信エラーフラグがクリアされてエラー状態から自動復旧させるようにしてもよい。
通信エラーフラグがセットされていなければ、CPU56は、受信時割込フラグがセットされているか否かを確認する(ステップS1272)。すなわち、CPU56は、シリアル通信回路505が受信データを受信し、受信データレジスタ711にデータが格納されている状態になっているか否かを確認する。受信時割込フラグがセットされていれば、CPU56は、ステップS1273の処理に移行する。また、受信時割込フラグがセットされていなければ、CPU56は、ステップS1275の処理に移行する。
受信時割込フラグがセットされていれば、CPU56は、シリアル通信回路505の受信データレジスタ711からデータを読み込む(ステップS1273)。また、CPU56は、読み込んだデータが賞球ACKコマンドであるか否か(コマンド「D2」であるか否か)を判断する(ステップS1274)。
なお、図77(b)に示す受信時割込処理において、受信時割込フラグをセットするとともに既に受信データを受信データレジスタ711から読み込んでいる場合、ステップS1273,S1274において、CPU56は、賞球ACK受信フラグがセットされているか否かを判断してもよい。そして、賞球ACK受信フラグがセットされている場合、CPU56は、賞球ACKコマンドを受信したと判断するようにしてもよい。
ステップS1272で受信時割込フラグがセットされていなかった場合、またはステップS1274で読み込んだデータが賞球ACKコマンドでなかった場合、CPU56は、まだ払出制御用マイクロコンピュータ370から賞球ACKコマンドを受信していない状態であると判断する。この場合、CPU56は、賞球タイマの値を1減らし(ステップS1275)、その値が0でなければ処理を終了する(ステップS1276)。賞球タイマの値が0になったら、払出制御用マイクロコンピュータ370が賞球ACKコマンドを送信しなかったと判断して、再送信フラグをセットし(ステップS1277)、賞球プロセスコードの値を4にして(ステップS1278)、処理を終了する。なお、賞球プロセスコードの値が4になると、賞球再送信処理(ステップS1235)が実行される状態になる。また、再送信フラグがセットされると、賞球異常検出処理(ステップS1230)において、払出異常報知開始コマンドが音/ランプ制御基板80bに対して送信される。
ステップS1274において、受信データレジスタ711から読み込んだデータが賞球ACKコマンドであることを確認すると、CPU56は、受信時割込フラグをリセットして(ステップS1279)、賞球プロセスコードの値を0にする(ステップS1280)。また、通信が正常に完了したので、再送信フラグがセットされている場合には、再送信フラグをリセットする(ステップS1281,S1282)。
以上の処理によって、遊技制御手段は、払出条件の成立にもとづいて払い出される賞球としての遊技球の総数を特定可能に総賞球数格納バッファに記憶する。また、遊技制御手段は、総賞球数格納バッファに記憶されている賞球数にもとづいて払出制御手段に対して所定数の賞球の払出数を指定する払出指令コマンド(賞球個数コマンド)を送信する。ここで、所定数は、総賞球数格納バッファに記憶されている賞球数が15個以上であれば15であり、15個未満であれば、総賞球数格納バッファに記憶されている賞球数である。そして、賞球払出を指定する賞球個数コマンドを送信したときに、総賞球数格納バッファに記憶されている賞球数から賞球個数コマンドで指定した払出数を減算する減算処理を行う。なお、払出制御用マイクロコンピュータ370は、賞球個数コマンドを受信すると直ちに賞球ACKコマンドを送信するので、球払出装置97からの賞球払出に関わりなく賞球個数コマンドに関する通信を完了でき、遊技制御用マイクロコンピュータ560は、賞球個数コマンドで指定した払出数の賞球払出が完了する前に、連続的に次の賞球個数コマンドを送信することができる。
なお、この実施の形態では、払出条件の成立にもとづいて払い出される景品遊技媒体の総数を特定可能に記憶するために、総数そのものを記憶する総賞球数格納バッファを用いる場合を例示したが、各入賞領域への入賞数を記憶したり、賞球数が同じである入賞領域毎の入賞数(例えば4個の賞球数に対応した入賞口14、7個の賞球数に対応した入賞口29,30、15個の賞球数に対応した大入賞口への入賞数であって、未だ賞球払出が終了していない入賞数)を記憶するバッファなどを用いてもよい。その場合には、入賞領域毎の賞球数に応じた数が設定された賞球個数コマンドが遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に送信される。このような構成において、払出数の多い払出指令コマンドから送信していくように構成されていてもよい。例えば、15個の賞球数に対応した大入賞口への入賞が4つ、7個の賞球数に対応した入賞口29,30への入賞が1つ発生した状態のとき、最初に15個の賞球の払出数を指定する払出指令コマンドを4回送信し、その後に7個の賞球の払出数を指定する払出指令コマンドを送信する。さらには、賞球個数を示す賞球個数コマンドを送信するのではなく、入賞があったことまたは入賞数を示す払出指令コマンドを遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に送信するようにしてもよい。
図85は、賞球プロセスコードの値が4の場合に実行される賞球再送信処理(ステップS1235)を示すフローチャートである。CPU56は、賞球再送信処理において、通信エラーフラグがセットされているか否か確認する(ステップS1291)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、払出制御基板37が搭載する払出制御用マイクロコンピュータ370との通信を禁止し、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御用マイクロコンピュータ370との通信を禁止するように制御する。この場合、CPU56は、例えば、シリアル通信回路505の送信部の機能を停止させることによって、払出制御用マイクロコンピュータ370へのデータ送信を禁止するように制御する。例えば、CPU56は、シリアル通信回路505の制御レジスタB708のビット3を「0」に設定し、送信回路を使用しないように設定することによって、払出制御用マイクロコンピュータ370へのデータ送信を禁止する。
通信エラーフラグがセットされていなければ、CPU56は、賞球個数バッファの内容を賞球個数コマンドとしてシリアル通信回路505の送信データレジスタ710に再度書き込む(ステップS1292)。また、CPU56は、賞球タイマにACK受信完了判定時間値を再びセットする(ステップS1293)。そして、賞球プロセスコードの値を3にして(ステップS1294)、処理を終了する。
賞球プロセスコードの値が3に設定されることから、再度、賞球ACK待ち処理が実行される。再度実行される賞球ACK待ち処理において、再び賞球ACKコマンドを受信したことを検出できなかった場合には、具体的には、ステップS1276において賞球タイマがタイムアウトした場合には、再び賞球再送処理が実行されることになる。このように、遊技制御用マイクロコンピュータ560は、払出数データを受信したことを示す受信確認信号としての賞球ACKコマンドが受信できない場合には、賞球ACKコマンドが受信できるまで、賞球個数コマンドの再送を繰り返す。
図86は、ステップS230の賞球異常検出処理を示すフローチャートである。賞球異常検出処理において、CPU56は、再送信フラグがリセット状態からセット状態になったことを検出すると、払出異常報知開始コマンドを演出制御コマンドとして音/ランプ制御基板80bに対して(具体的には音/ランプ制御用マイクロコンピュータ100bに対して)送信する制御を行う(ステップS1301,S1302)。なお、CPU56は、賞球再送信処理を実行してから払出異常報知開始コマンドを送信するのでなく、払出異常報知開始コマンドを音/ランプ制御基板80bに送信してから賞球再送信処理を実行するようにしてもよい。
なお、音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドを送信する際に、CPU56は、演出制御コマンドの種類に応じたコマンド送信テーブル(あらかじめROM54にコマンド毎に設定されている)のアドレスをポインタにセットする。そして、演出制御コマンドに応じたコマンド送信テーブルのアドレスをポインタにセットして、飾り図柄コマンド制御処理(ステップS29)において演出制御コマンドを送信する。
また、CPU56は、再送信フラグがセット状態からリセット状態になったことを検出する(従って、セット状態が継続している場合には最初にリセット状態になったときにのみ検出される。)と、払出異常報知終了コマンドを音/ランプ制御基板80bに対して(具体的には音/ランプ制御用マイクロコンピュータ100bに対して)送信する制御を行う(ステップS1303,S1304)。
なお、この実施の形態では、CPU56は、再送信フラグがリセットされると、ステップS1304で払出異常報知終了コマンドを送信するが、送信しないように構成してもよい。その場合には、遊技制御用マイクロコンピュータ560の負担が軽減される。また、その場合には、音/ランプ制御用マイクロコンピュータ100bが、例えば所定時間後に、独自に払出異常報知を終了するように構成される。
次に、払出制御用マイクロコンピュータ370が各種コマンドを送受信する動作を説明する。図74に示すように、払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560と各種コマンドをシリアル通信するシリアル通信回路375を内蔵している。払出制御用マイクロコンピュータ370は、シリアル通信回路375を用いて、遊技制御用マイクロコンピュータ560から図73に示す賞球個数コマンドを受信する。また、賞球個数コマンドを受信すると、払出制御用マイクロコンピュータ370は、シリアル通信回路375を用いて、図73に示す賞球ACKコマンド「D2」を受信確認信号として送信する。
また、払出制御用マイクロコンピュータ370のCPUは、遊技制御用マイクロコンピュータ560のCPU56と同様に、割り込み許可状態である間にシリアル通信回路375からの割り込み要求があると、シリアル通信回路375が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。この実施の形態では、払出制御用マイクロコンピュータ370のCPUは、割り込み原因がシリアル通信回路375が受信データを受信したことであると特定すると、図77(b)と同様の処理に従って受信時割込処理を実行する。この場合、払出制御用マイクロコンピュータ370のCPUは、シリアル通信回路375が受信データを受信していることを示す受信時割込フラグをセットする。
図87は、払出制御用マイクロコンピュータ370のCPUが、主基板31の遊技制御手段(遊技制御用マイクロコンピュータ560)と通信を行う主制御通信処理を示すフローチャートである。主制御通信処理において、払出制御用マイクロコンピュータ370のCPUは、接続確認信号がオン状態であるか否かを確認する(ステップS541)。なお、接続確認信号がオン状態であるということは、電力供給がなされ遊技制御手段において遊技の進行を制御可能な状態であることを意味し、接続確認信号がオフ状態であるということは、電力供給停止時処理が開始され遊技制御手段において遊技の進行が不能な状態であることを意味する(接続確認信号は、電力供給停止時処理における出力ポートクリア処理でオフ状態にされる。)。
払出制御用マイクロコンピュータ370のCPUは、受信時割込フラグがセットされているか否かを確認する(ステップS542)。すなわち、払出制御用マイクロコンピュータ370のCPUは、シリアル通信回路375が受信データを受信し、シリアル通信回路375の受信データレジスタにデータが格納されている状態になっているか否かを確認する。
受信時割込フラグがセットされていれば、払出制御用マイクロコンピュータ370のCPUは、シリアル通信回路375の受信データレジスタからデータを読み込む(ステップS543)。また、払出制御用マイクロコンピュータ370のCPUは、読み込んだデータが賞球個数コマンドであるか否か(コマンド「04」、「07」または「0F」のいずれかであるか否か)を判断する(ステップS544)。
シリアル通信回路375の受信データレジスタから読み込んだデータが賞球個数コマンドであることを確認すると、払出制御用マイクロコンピュータ370のCPUは、受信時割込フラグをリセットして(ステップS545)、賞球個数コマンドが示す賞球数を賞球未払出個数カウンタに加算する(ステップS546)。そして、払出制御用マイクロコンピュータ370のCPUは、賞球ACKコマンドをシリアル通信回路505の送信データレジスタ710に書き込み(ステップS547)、処理を終了する。その後、送信データレジスタに書き込まれた賞球ACKコマンドは、シリアル通信回路375の送信用シフトレジスタに転送され、シリアル通信回路375の送信用シフトレジスタから遊技制御用マイクロコンピュータ560に送信される。
なお、払出制御用マイクロコンピュータ370のCPUは、球払出装置97を駆動制御して賞球未払出個数カウンタに記憶されている未払出個数の賞球の払い出しを行う払出制御処理を実行する。具体的には、賞球未払出個数カウンタの値が0でないことを確認すると、払出モータを駆動して賞球の払い出しを行う。そして、払い出された賞球の個数は払出カウントスイッチでカウントする。全ての未払出の賞球が払い出されるまで払出モータを駆動して払出処理が実行される。
次に、音/ランプ制御用マイクロコンピュータ100bの動作を説明する。図88は、音/ランプ制御用マイクロコンピュータ100bが実行するメイン処理を示すフローチャートである。遊技機に対する電力供給が開始され、リセット信号がハイレベルになると、音/ランプ制御用マイクロコンピュータ100bは、メイン処理を開始する。メイン処理では、音/ランプ制御用マイクロコンピュータ100bは、まず、RAM領域のクリアや各種初期値の設定、また演出制御の起動間隔を決めるためのタイマの初期設定等を行うための初期化処理を行う(ステップS781)。その後、音/ランプ制御用マイクロコンピュータ100bは、タイマ割込フラグの監視(ステップS782)の確認を行うループ処理に移行する。タイマ割込が発生すると、音/ランプ制御用マイクロコンピュータ100bは、タイマ割込処理においてタイマ割込フラグをセットする。メイン処理において、タイマ割込フラグがセットされていたら、音/ランプ制御用マイクロコンピュータ100bは、そのフラグをクリアし(ステップS783)、以下の音/ランプ制御処理を実行する。
タイマ割込は例えば2ms毎にかかる。すなわち、音/ランプ制御処理は、例えば2ms毎に起動される。また、この実施の形態では、タイマ割込処理ではフラグセットのみがなされ、具体的な音/ランプ制御処理はメイン処理において実行されるが、タイマ割込処理で音/ランプ制御処理を実行してもよい。
音/ランプ制御処理において、音/ランプ制御用マイクロコンピュータ100bは、まず、受信した演出制御コマンドを解析する(コマンド解析処理:ステップS784)。次いで、音/ランプ制御用マイクロコンピュータ100bは、演出内容決定処理を行う(ステップS785)。演出内容決定処理では、音/ランプ制御用マイクロコンピュータ100bは、演出制御コマンド(変動パターンコマンドや表示結果指定コマンド)にもとづいて、可変表示装置9を用いて行う演出内容(予告演出を行うか否かや、予告演出の種類)を決定する。また、音/ランプ制御用マイクロコンピュータ100bは、決定した演出内容を示す演出内容指定コマンドを生成する。
次いで、音/ランプ制御用マイクロコンピュータ100bは、音出力処理を行う(ステップS786)。この場合、音/ランプ制御用マイクロコンピュータ100bは、音声合成用IC173に対して音番号データ(例えば、変動パターンコマンドに示される変動パターンに対応する音番号データ)を出力する。そして、音声合成用IC173は、音番号データに応じた音声や効果音を発生し増幅回路175に出力する。
次いで、音/ランプ制御用マイクロコンピュータ100bは、ランプ表示処理を行う(ステップS787)。この場合、音/ランプ制御用マイクロコンピュータ100bは、プロセスデータ中に設定されているランプ制御実行データにもとづいてランプ制御を行う。
なお、プロセスデータは、プロセスタイマ設定値と演出制御実行データの組み合わせが複数集まったデータで構成されている。演出制御実行データは、ランプ制御実行データと音番号データを含む。ランプ制御実行データは、図柄の変動期間中におけるランプの表示状態を示すデータが設定されている。また、音番号データは、図柄の変動期間中における変動音や効果音などの出力タイミングを示すデータが設定されている。そして、図柄の変動期間中において、表示状態を切り替えるタイミング(例えば可変表示装置9において新たなキャラクタが登場するタイミング、ランプを点灯状態から消灯状態に切り替えるタイミング)が到来すると、演出制御手段は、プロセスデータにおける次の演出制御実行データに従って、ランプの表示状態やスピーカ27からの音声出力を制御する。プロセスタイマ設定値には、切替のタイミングに応じた時間が設定されている。
プロセスデータは、音/ランプ制御基板80bにおけるROMに格納されている。また、プロセスデータは、図柄の変動パターンのそれぞれに応じて用意されている。なお、このように、音/ランプ制御手段が、ROMに記憶されているプログラムおよびプロセスデータにもとづいて演出装置を制御し、複数の演出装置(この実施の形態ではスピーカ27やランプ)の制御に関わるプログラムが、音/ランプ制御基板80bに搭載されているROMに格納されている。そして、それらのプログラムを格納するROMを1つのROMとして構成することができる。
また、音/ランプ制御用マイクロコンピュータ100bは、乱数カウンタを更新する処理を実行する(ステップS788)。また、音/ランプ制御用マイクロコンピュータ100bは、主基板31から受信した演出制御コマンドや、ステップS785の演出内容決定処理で生成した演出内容指定コマンドを、図柄制御基板80aに送出する処理を行う(コマンド制御処理:ステップS789)。その後、ステップS782のタイマ割込フラグの確認を行う処理に戻る。
主基板31からの演出制御用のINT信号は音/ランプ制御用マイクロコンピュータ100bの割込端子に入力されている。例えば、主基板31からのINT信号がオン状態になると、音/ランプ制御用マイクロコンピュータ100bにおいて割込がかかる。そして、音/ランプ制御用マイクロコンピュータ100bは、割込処理において演出制御コマンドの受信処理を実行する。演出制御コマンドの受信処理において、音/ランプ制御用マイクロコンピュータ100bは、受信した演出制御コマンドデータをコマンド受信バッファに格納する。
なお、この実施の形態では、音/ランプ制御基板80bにおけるROMに格納されるプロセスデータ(以下、音/ランプ制御側プロセスデータともいう)は、プロセスタイマ設定値と、音番号データとランプ制御実行データとを含む演出制御実行データの組合せが複数集まったデータで構成されている。また、図柄制御基板80aにおけるROMに格納されるプロセスデータ(以下、図柄制御側プロセスデータともいう)は、プロセスタイマ設定値と、表示制御実行データのみを含む演出制御実行データの組合せが複数集まったデータで構成されている。
図89は、音/ランプ制御処理で用いる各乱数を示す説明図である。各乱数は、以下のように使用される。
(1)ランダム1:予告演出を実行するか否かを決定する(予告演出実行決定用)。この実施の形態では、可変表示装置9においてリーチ態様の飾り図柄の可変表示を行う際に、音/ランプ制御用マイクロコンピュータ100bは、例えば、ランダム1があらかじめ決められている判定値と一致した場合には、予告演出を行うと決定する。なお、音/ランプ制御用マイクロコンピュータ100bは、リーチ態様の可変表示を行うか否かに関わらず、ランダム1を用いて予告演出を行うか否かを決定してもよい。
(2)ランダム2:予告演出を行う場合に、可変表示装置9を用いて行う予告演出の種類を決定する(予告演出種類決定用)
図90は、図88に示された演出内容決定処理(ステップS785)を示すフローチャートである。演出内容決定処理において、音/ランプ制御用マイクロコンピュータ100bは、変動パターン受信フラグがセットされているか否か確認する(ステップS1851)。なお、変動パターン受信フラグは、音/ランプ制御メイン処理のコマンド解析処理(ステップS784)において、変動パターンコマンドを受信したと判定されたときにセットされる。
変動パターン受信フラグがセットされていれば、音/ランプ制御用マイクロコンピュータ100bは、変動パターン受信フラグをリセットし、受信した変動パターンコマンドにもとづいて飾り図柄の変動パターンを特定する。また、音/ランプ制御用マイクロコンピュータ100bは、特定した変動パターンにもとづいて、可変表示装置9を用いて実行すべき可変表示がリーチを伴う変動であるか否かを判定する(ステップS1852)。例えば、音/ランプ制御用マイクロコンピュータ100bは、受信した変動パターンコマンドに示される変動パターンがリーチを伴うパターンである場合(例えば、EXTデータ「01H」〜「06H」,「08H」〜「0DH」である変動パターンである場合)、音/ランプ制御用マイクロコンピュータ100bは、リーチを伴う変動であると判定する。なお、ステップS1851で変動パターン受信フラグがセットされていなかった場合には、音/ランプ制御用マイクロコンピュータ100bは、そのまま処理を終了する。
リーチを伴う変動であると判定した場合、音/ランプ制御用マイクロコンピュータ100bは、予告演出実行決定用乱数(ランダム1)にもとづいて、予告演出を行うか否かを決定する(ステップS1853)。例えば、音/ランプ制御用マイクロコンピュータ100bは、ランダム1が判定値と一致すると、可変表示装置9を用いた予告演出を行うと決定する。なお、ステップS1852でリーチを伴う変動でなかった場合には、音/ランプ制御用マイクロコンピュータ100bは、そのまま処理を終了する。
ステップS1854で予告演出を行わないと決定した場合、音/ランプ制御用マイクロコンピュータ100bは、変動パターンコマンドを受信しているとともに表示結果指定コマンドを受信している場合には、変動パターンコマンドおよび表示結果指定コマンドを図柄制御用マイクロコンピュータ100aに転送し、図柄制御用マイクロコンピュータ100aは、可変表示装置9を用いた飾り図柄の可変表示および遊技演出を実行することになる。この場合、音/ランプ制御用マイクロコンピュータ100bは、ステップS1854で予告演出を行わないと決定すると、予告演出を行わない旨を指定する通知コマンドを生成し、図柄制御用マイクロコンピュータ100aに送信する(ステップS1857)。
予告演出を行うことに決定すると(ステップS1854)、音/ランプ制御用マイクロコンピュータ100bは、予告演出種類決定用乱数(ランダム2)にもとづいて、可変表示装置9を用いて行わせる予告演出の種類を決定する(ステップS1855)。例えば、音/ランプ制御用マイクロコンピュータ100bは、ランダム2にもとづいて、予告演出において、飾り図柄をどの程度の速度で変動させるかや、飾り図柄をいずれの回転方向に変動させるか、可変表示装置9にいずれのキャラクタを登場させるかを決定する。なお、ステップS1854で予告演出を実行しないと決定した場合には、音/ランプ制御用マイクロコンピュータ100bは、ステップS1857の処理を実行した後、そのまま処理を終了する。
なお、この実施の形態では、変動パターンコマンドにもとづいてリーチであるか否かを特定して演出内容を決定する場合を説明するが、音/ランプ制御用マイクロコンピュータ100bは、表示結果指定コマンドにもとづいて非確変大当りまたは確変大当りであることを特定して、演出内容を決定してもよい。
また、音/ランプ制御用マイクロコンピュータ100bは、決定した演出内容(予告演出を行うか否かや、予告演出の種類)を示す演出内容指定コマンドを生成する。そして、音/ランプ制御用マイクロコンピュータ100bは、生成した演出内容指定コマンドを、図柄制御基板80aに対して送信する処理を行う(ステップS1856)。なお、音/ランプ制御用マイクロコンピュータ100bは、演出内容指定コマンドとともに、遊技制御用マイクロコンピュータ560から受信した表示結果指定コマンドおよび変動パターンコマンドを図柄制御基板80aに転送(送信)する。そして、図柄制御基板80aの図柄制御用マイクロコンピュータ100aは、音/ランプ制御用マイクロコンピュータ100bから受信した演出内容指定コマンド、表示結果指定コマンドおよび変動パターンコマンドにもとづいて、飾り図柄の可変変動および遊技演出を行う。この場合、図柄制御用マイクロコンピュータ100aは、受信した演出内容指定コマンドにもとづいてROMから表示制御実行データを読み出し、読み出した表示制御実行データにもとづいて、VDP109に可変表示装置9を用いた予告演出を行わせる。
なお、ステップS1856において、音/ランプ制御用マイクロコンピュータ100bは、演出内容指定コマンドを生成するのでなく、決定した演出内容を、変動パターンコマンドや表示結果指定コマンドに付加してもよい。例えば、音/ランプ制御用マイクロコンピュータ100bは、コマンドのヘッダ部分に演出内容を示す値を付加することによって、演出内容を変動パターンコマンドや表示結果指定コマンドに付加する。この場合、音/ランプ制御用マイクロコンピュータ100bは、変動パターンコマンドのみのヘッダ部分に演出内容を示す値を付加してもよい。そして、音/ランプ制御用マイクロコンピュータ100bは、演出内容を付加した変動パターンコマンドを、図柄制御基板80aに対して送信する処理を行ってもよい。また、音/ランプ制御用マイクロコンピュータ100bは、表示結果コマンドのみのヘッダ部分に演出内容を示す値を付加してもよい。そして、音/ランプ制御用マイクロコンピュータ100bは、演出内容を付加した表示結果コマンドを、図柄制御基板80aに対して送信する処理を行ってもよい。なお、予告演出を行わない場合には、音/ランプ制御用マイクロコンピュータ100bは、遊技制御用マイクロコンピュータ560から受信した変動パターンコマンドまたは表示結果コマンドをそのまま図柄制御用マイクロコンピュータ100aに転送することになる。
また、この実施の形態では、大当りか否か、確変大当りか否か、変動パターン、および予告の有無を示す情報を変動パターンコマンドまたは表示結果コマンドにまとめて付加し、付加したコマンドを図柄制御基板80aに対して送信する処理を行ってもよい。この場合は、1つのコマンドで済むため、図柄制御基板80aに対するコマンド数を削減することができる。
また、この実施の形態では、ステップS1856で送信テーブルのアドレスがセットされたことにもとづいて、音/ランプ制御メイン処理におけるコマンド制御処理(ステップS790参照)が実行されることによって、演出内容指定コマンドが図柄制御基板80aに送信される。
また、ステップS1856で決定した演出内容を変動パターンコマンドや表示結果指定コマンドに付加する場合、音/ランプ制御用マイクロコンピュータ100bは、決定した演出内容(例えば、背景色や登場するキャラクタ)を付加した変動パターンコマンドや表示結果指定コマンドを、図柄制御用マイクロコンピュータ100aに送信してもよい。そして、図柄制御用マイクロコンピュータ100aは、受信した変動パターンコマンドや表示結果指定コマンドにもとづいてROMから表示制御実行データを読み出し、読み出した表示制御実行データにもとづいて可変表示装置9を用いて演出を行ってもよい。
また、表示制御実行データおよびランプ制御実行データの両方を含むプロセスデータが、音/ランプ制御基板80bにおけるROMに格納されていてもよい。この場合、音/ランプ制御用マイクロコンピュータ100bは、決定した演出内容に応じた表示制御実行データをROMから抽出し、生成した演出内容指定コマンドとともに、図柄制御用マイクロコンピュータ100aに送信してもよい。そして、図柄制御用マイクロコンピュータ100aは、受信した表示制御実行データにもとづいて、可変表示装置9を用いて演出を行ってもよい。
また、表示制御実行データおよびランプ制御実行データの両方を含むプロセスデータが、音/ランプ制御基板80bにおけるROMに格納する場合に、音/ランプ制御用マイクロコンピュータ100bは、決定した演出内容に応じた表示制御実行データをROMから抽出して、図柄制御用マイクロコンピュータ100aに送信してもよい。そして、図柄制御用マイクロコンピュータ100aは、受信した表示制御実行データにもとづいて、可変表示装置9を用いて演出を行ってもよい。
以上に説明したように、この実施の形態では、音/ランプ制御用マイクロコンピュータ100bが、変動パターンコマンドにもとづいて、演出内容(予告演出を行うか否かや、予告演出の種類)を独自に決定する。また、音/ランプ制御用マイクロコンピュータ100bによって決定された演出内容に従って、図柄制御用マイクロコンピュータ100aが可変表示装置9を用いて遊技演出を実行する。そのため、遊技制御用マイクロコンピュータ560が演出内容を決定しなくて済む。従って、遊技制御用マイクロコンピュータ560の処理負担を軽減することができる。
なお、この実施の形態では、音/ランプ制御用マイクロコンピュータ100bは、飾り図柄の変動時間を示す飾り図柄変動時間指定コマンドを生成して、図柄制御基板80aに送信するようにしてもよい。また、図柄制御基板80aの図柄制御用マイクロコンピュータ100aは、演出内容指定コマンドを受信すると、受信した演出内容指定コマンドにもとづいて、VDP109に、可変表示装置9における飾り図柄の可変表示を実行させ、予告演出を行わせる。
また、この実施の形態では、主基板31からの演出制御コマンドを、まず音/ランプ制御基板80bで受信し、さらに音/ランプ制御基板80bから図柄制御基板80aに演出制御コマンドや演出内容指定コマンドが送出される場合を説明したが、主基板31からの演出制御コマンドを、まず図柄制御基板80aで受信するようにしてもよい。
また、図90に示した例では、変動パターンコマンドを受信したときに、リーチを伴う変動であるかどうかを判定し、リーチを伴う変動である場合に、予告演出の実行の有無などを決定するとともに、演出内容コマンドを生成する処理などを行っていた。しかし、このような構成に限られるわけではなく、例えば、変動パターンコマンドを受信したときに、大当り用の変動パターンであるかどうかを判定し、大当り用の変動パターンである場合に、予告演出の実行の有無などを決定するとともに、演出内容コマンドを生成する処理などを行うようにしてもよい。このような構成によっても、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。
次に、可変表示装置9に表示される画像表示例について説明する。図91は、リーチの際に飾り図柄がグラデーションをつけて段階的に変化する表示例を示す説明図である。図91(a)に示すように、可変表示装置9にて左中右の飾り図柄が可変表示されている場合において、所定のタイミングになったときに、図91(b)に示すように、左右の飾り図柄が「7」で停止されたことにより、リーチ状態になったものとする。なお、可変表示装置9の画面内の矢印は、飾り図柄が可変表示されている状態であることを示している。
その後、図91(c)に示すように、中の飾り図柄が「7」で一旦仮停止される。そして、図91(d)(e)に示すように、中の飾り図柄「7」が左側から右方向に段階的に消えていく。具体的には、「7」の飾り図柄が、左領域と中領域と右領域とに分割され、最初、左領域の色が薄くなり、次いで、左領域の色が消されるとともに中領域の色が薄くなっている。なお、この実施の形態において、「色が薄くなる」とは、領域内の所定の色を表示している画素数(ピクセル数、ドット数)の割合が小さくなることを示している。例えば、上下左右に並んでいる領域内の画素の全てが色を表示している状態から、色を表示している画素が所定の間隔で(例えば1つおきに)色を表示していない画素に切り替えられた状態(色を表示している画素が所定の間隔で間引かれた状態)になったことを示している。
そして、図91(f)(g)(h)に示すように、中の飾り図柄「7」が段階的に消えていくとともに、飾り図柄「7」の次の飾り図柄である「8」が左側から右方向に段階的に表示されていく。具体的には、「7」の右領域の色が薄くなったとき、「8」の左領域の色が薄く表示され、「7」の右領域の色が消されたときに、「8」の中領域の色が薄く表示される(少し濃くなる)とともに「8」の左領域の色が濃く表示される。そして、「8」の右領域の色が薄く表示されたとき、「8」の中領域および左領域の色が濃く表示される。このように、「8」の飾り図柄が左側から方向に段階的に濃くなっている。なお、この実施の形態において、「色が濃くなる」とは、領域内の所定の色を表示している画素数の割合が大きくなることを示している。例えば、上下左右に並んでいる領域内の画素の全てが色を表示していない状態から、色を表示していない画素が所定の間隔で(例えば1つおきに)色を表示している画素に切り替えられた状態になったことを示している。
次いで、飾り図柄「7」のとき(図91(d)(e))と同様に、飾り図柄「8」が左側から右方向に段階的に消えていく(図91(i)(j))。そして、図91(k)に示すように、「8」の右領域の色が薄くなったとき、「7」の左領域の色が薄く表示される。以後、図91(d)〜(k)に示したようなグラデーション(色の濃淡の段階的な変化)をつけた飾り図柄の可変表示が繰り返し行われ、可変表示(変動)の終了タイミングになると、中の飾り図柄として「7」または「8」が停止表示(導出表示)される。
図91に示したリーチ時のグラデーションをつけた可変表示態様をグラデーションリーチという。グラデーションリーチは、図61に示したリーチA、リーチB、リーチCのいずれであってもよい。
以上のように、中の飾り図柄「7」の表示画像が左側から右方向へと段階的に消去または表示されるとともに、中の飾り図柄「8」が左側から右方向へと段階的(徐々に)に表示または消去されるようにしているので、飾り図柄の表示画像をグラデーションをつけて段階的に変化させることができ、リーチ状態において遊技者にとってどちらの飾り図柄(「7」または「8」)が停止表示されるのかわかりにくくなり、リーチ状態における飾り図柄の可変表示の演出効果を向上させることができる。
なお、図91に示した例では、飾り図柄における色の濃さが変化する領域として、左領域、中領域および右領域の3つに分けられていたが、2つまたは4つ以上の領域に分けられていてもよい。また、色の濃さの段階(レベル)として、濃い色、薄い色および色なしとされていたが、より多段階にわけられていてもよい。分けられる領域の数が多くなり、また、色の濃さの段階が多段階になればなるほど、飾り図柄がなめらかに変化していくことになる。
また、2つの飾り図柄(「7」と「8」)が交互にグラデーションをつけて表示される例を示していたが、3つ以上の飾り図柄(例えば「6」「7」「8」)が順番にグラデーションをつけて表示されてもよい。また、飾り図柄は左側から右方向に段階的に消化されまた表示されるようにしていたが、右側から左方向に段階的に消去されまた表示されるようにしてもよい。
また、一方の飾り図柄が消えていくタイミングと他方の飾り図柄が表示されていくタイミングは、図91に示した例に限られない。例えば、図91の例では、「7」の左領域の色が消去され(図91(e))、その後に「7」の中領域の色が消去されるときに、「8」の左領域の色が薄く表示されているが(図91(f))、「7」の左領域の色が消去されたときに、「8」の左領域の色が薄く表示されるようにしてもよい。
また、前後に表示される飾り図柄(例えば「7」と「8」)の色は、同じ色であってもよい。しかし、前後の飾り図柄の色が同じ色であると、飾り図柄の変化がわかりにくくなるおそれがある。このため、飾り図柄の色が異なる色である方が好ましい。例えば、「7」を赤色にし、「8」を青色にすると、グラデーションをつけた表示を行っているときに、異なる図柄に変化しようとしていることがわかりやすくなる。その結果、リーチの際の遊技者の期待感を向上させることができるようになる。
図92は、飾り図柄がグラデーションをつけて段階的に変化する変形表示例を示す説明図である。図91に示した表示例では、飾り図柄の大きさは変化しなかったが、図92に示す表示例では、飾り図柄「7」が段階的に消去していくときに飾り図柄「7」が段階的(徐々)に小さくなっていき、飾り図柄「8」が段階的に表示されていくときに飾り図柄「8」が段階的(徐々)に大きくなっていく。このような画像表示によっても、演出効果を向上させることができ、遊技者の大当りに対する期待感を高めることができる。
なお、図92に示す例において、飾り図柄における色の濃さが変化する領域の数を細かく分け、色の濃さの段階を多段階にして、色がなめらかに変化するように構成されていてもよい。また、表示される前後の飾り図柄の色は、同じ色であっても異なる色であってもよい。また、色が変化する方向も左側から右側の方向に限らず、右側から左側の方向であってもよい。また、飾り図柄が段階的に消去されていくタイミングや表示されていくタイミングも、図92に示したタイミングに限られない。
図93は、飾り図柄がグラデーションをつけて段階的に変化する別の変形表示例を示す説明図である。図93には、以下の変形表示例が示されている。飾り図柄「7」が上側から下方向に段階的に消えていくとともに、飾り図柄「8」が上側から下方向に段階的に表示されていく変形表示例(上下方向)である。また、飾り図柄「7」が中心から同心円方向に段階的に消えていくとともに、飾り図柄「8」が中心から同心円方向に段階的に表示されていく変形表示例(同心円状)である。また、時計回りに中心からの線が回転するにつれて飾り図柄「7」が段階的に消えていくとともに、時計回りに中心からの線が回転するにつれて飾り図柄「8」が段階的に表示されていく変形表示例(回転方向)である。
なお、図93に示した上下方向の変形表示例は、上側から下方向に色が変化していくが、下側から上方向に色が変化していくものでもよい。また、同心円状の変形表示例は、中心から同心円方向に外側に向かって色が変化していくが、外側から中心に向かって色が変化していくものでもよい。また、回転方向の変形表示例は、時計回りに色が変化していくが、反時計回りに色が変化していくものでもよい。
また、拡大/縮小の変形表示例(図92)と、上下方向、同心円状または回転方向の変形表示例(図93)とを組み合わせて表示するようにしてもよい。また、飾り図柄における色の濃さが変化する領域の数を細かく分け、色の濃さの段階を多段階にして、色がなめらかに変化するように構成されていてもよい。また、表示される前後の飾り図柄の色は、同じ色であっても異なる色であってもよい。また、飾り図柄が段階的に消去されていくタイミングや表示されていくタイミングも、図93に示したタイミングに限られない。
図94は、予告演出の画像表示例を示す説明図である。この実施の形態では、大当りになることまたは大当りになる可能性が高い特定の演出が実行されることを遊技者に予告する予告演出が飾り図柄の可変表示中の所定のタイミングで実行される。
図94に示すように、予告演出の実行タイミングになると、遊技者にチャンスボタン300の連打を促すために、可変表示装置9の画面上に「ボタン連打!」という文字が表示される。このとき、予告用の画像である人物のキャラクタの画像が可変表示装置9の画面上に表示可能な状態となっている。しかし、チャンスボタン300が押されるまで、実際にはキャラクタの画像は画面に表示されない。
遊技者によってチャンスボタン300が押されなければ、そのまま人物のキャラクタの画像は画面に表示されない。一方、遊技者によってチャンスボタン300が押されると、チャンスボタン300が押される度に画面上の人物のキャラクタの画像が段階的に表示されていく。つまり、人物のキャラクタの画像の色が段階的に濃くなっていく。具体的には、キャラクタの画像の領域内において所定の色を表示している画素数の割合が大きくなっていく。
このように、チャンスボタン300が押される前は予告用のキャラクタの画像を表示させずに、チャンスボタン300が押される毎に段階的に予告用のキャラクタの画像をカットインしていくように表示させることができるようになり、予告演出の演出効果を向上させることができる。なお、後述するように、このような予告用の画像のカットイン表示は複雑な制御を必要とせずに実現することができる。
なお、予告用の画像は人物のキャラクタの画像に限られず、動物のキャラクタなどであってもよい。なお、ボタンを連打可能な期間はあらかじめ定められている。また、上記の例では、チャンスボタン300が連打されることにより予告用の画像が段階的に濃くなって表示されるようにしていたが、チャンスボタン300が1回押されたことにより予告用の画像が段階的に濃くなって表示されるようにしてもよい。この場合、画面に表示されるチャンスボタン300の操作を促す文字は、例えば「チャンスボタンを押せ!」などと表示される。
次に、図柄制御用マイクロコンピュータ100aの動作について説明する。図95は、図柄制御用マイクロコンピュータ100aの図柄制御用CPU101aが実行するメイン処理を示すフローチャートである。遊技機に対する電力供給が開始され、リセット信号がハイレベルになると、図柄制御用CPU101aは、メイン処理を開始する。メイン処理では、図柄制御用CPU101aは、まず、RAM領域のクリアや各種初期値の設定、また演出制御の起動間隔を決めるためのタイマの初期設定等を行うための初期化処理を行う(ステップS771)。
続いて、図柄制御用CPU101aは、VRAM84における記憶領域(格納領域)を、図100に示すような固定アドレスエリア155Aと自動転送エリア155Bとに設定するための指令を行う記憶領域設定指令処理を実行する(ステップS772)。なお、記憶領域設定指令処理の内容については後述する(図96参照)。
記憶領域設定指令処理を実行した後、図柄制御用CPU101aは、VRAM84の固定アドレスエリア155Aとなる記憶領域に、可変表示装置9における表示頻度が高くなるように設定された画像データを一時記憶させるための指令を行う事前転送指令処理を実行する(ステップS773)。
事前転送指令処理では、図柄制御用CPU101aからVDP109に対して、頻繁に使用する部品画像の画像データのCGROM83からVRAM84への転送が指示される。画像データの転送の指示は、転送する画像データが格納されているCGROM83におけるアドレスおよびVRAM84における画像をあらかじめ展開しておく領域(図100に示す固定アドレスエリア155A)のアドレス(固定アドレス)が指定されることにより行われる。VDP109は、図柄制御用CPU101aからの転送指示にもとづいて、CGROM83の所定のアドレスから画像データを読み出し、読み出した画像データをVRAM84における固定アドレスエリア155Aの所定のアドレスに転送する処理を実行する。
なお、部品画像とは、表示画面の一部に表示されるキャラクタの画像や識別情報(飾り図柄)の画像等のひとかたまりの画像である。部品画像には、主に背景画像を表示する際に用いられる静止画像、主にキャラクタを登場させたり変化させたりするような簡易的に動画表示を行う際に用いられるスプライト画像、また主に実写画像に代表される多色画像によるリアリティのある動画表示を行う際に用いられるムービー画像が含まれている。頻繁に使用する部品画像としては、例えば、背景画像、飾り図柄の画像、頻繁に使用する予告用の画像があげられる。
このように遊技機に対する電力供給が開始されたときに、頻繁に使用する部品画像の画像データをあらかじめCGROM83からVRAM84に転送しておけば、使用頻度の高い部品画像を表示する際にCGROM83からVRAM84に転送する処理が不要となるので、可変表示装置9の表示制御のための制御負担を軽減させることができる。なお、事前転送指令処理の詳しい内容については後述する(図97参照)。
その後、図柄制御用マイクロコンピュータ100aは、タイマ割込フラグの監視(ステップS774)の確認を行うループ処理に移行する。タイマ割込が発生すると、図柄制御用マイクロコンピュータ100aは、タイマ割込処理においてタイマ割込フラグをセットする。メイン処理において、タイマ割込フラグがセットされていたら、図柄制御用マイクロコンピュータ100aは、そのフラグをクリアし(ステップS775)、以下の演出制御処理を実行する。
タイマ割込は例えば2ms毎にかかる。すなわち、演出制御処理は、例えば2ms毎に起動される。また、この実施の形態では、タイマ割込処理ではフラグセットのみがなされ、具体的な演出制御処理はメイン処理において実行されるが、タイマ割込処理で演出制御処理を実行してもよい。
なお、後述するように可変表示装置9の表示画面が33.3ms毎に切り替えられる場合に、図柄制御用マイクロコンピュータ100aが表示更新指令処理にてVDP109への画像の展開を指示するデータを作成する処理(ステップS1841)を頻繁に実行する必要がなければ、タイマ割込は例えば33.3ms毎にかかるように設定されていてもよい。
演出制御処理において、図柄制御用マイクロコンピュータ100aは、まず、受信した演出制御コマンドを解析する(コマンド解析処理:ステップS776)。次いで、図柄制御用マイクロコンピュータ100aは、演出制御プロセス処理を行う(ステップS777)。演出制御プロセス処理では、制御状態に応じた各プロセスのうち、現在の制御状態(演出制御プロセスフラグ)に対応したプロセスを選択して可変表示装置9の表示制御を実行する。また、乱数カウンタを更新する処理を実行する(ステップS778)。その後、ステップS774のタイマ割込フラグの確認を行う処理に戻る。
なお、音/ランプ制御基板80bからのINT信号は図柄制御用マイクロコンピュータ100aの割込端子に入力されている。例えば、音/ランプ制御基板80bからのINT信号がオン状態になると、図柄制御用マイクロコンピュータ100aにおいて割込がかかる。そして、図柄制御用マイクロコンピュータ100aは、割込処理において演出制御コマンドや演出内容コマンドの受信処理を実行する。コマンドの受信処理において、図柄制御用マイクロコンピュータ100aは、受信したコマンドデータをコマンド受信バッファに格納する。
図96は、ステップS772にて実行される記憶領域設定指令処理の一例を示すフローチャートである。記憶領域設定指令処理において、図柄制御用CPU101aは、図100に示すような自動転送エリア155Bとなる記憶領域を設定するためのデータとして、STADDの設定データと、ENADDの設定データとを、ROM132から読み出す(ステップS161、S162)。そして、ステップS161、S162にて読み出した設定データに基づき、記憶領域設定コマンドとなる表示制御指令を作成して、VDP109に対して送信する(ステップS163)。
この実施の形態では、図100に示すように、VRAM84がフレームバッファ156と一時展開領域155Cと固定アドレスエリア155Aと自動転送エリア155Bとに分けられているが、フレームバッファ156と一時展開領域155CはVRAM84における予め定められた固定の領域に設定されているものとする。従って、記憶領域設定指令処理では、VRAM84におけるフレームバッファ156および一時展開領域155C以外の領域において、自動転送エリア155Bの先頭アドレスと末尾アドレスの設定を指示して、VDP109に自動転送エリア155Bの設定を行わせる。これにより、自動転送エリア155Bと固定アドレスエリア155Aの設定が行われる。なお、フレームバッファ156と一時展開領域155CがVRAM84に予め設定されていないものとし、図柄制御用CPU101aは、各領域(例えば、一時展開領域155C、固定アドレスエリア155A、自動転送エリア155B)の先頭アドレスと末尾アドレスの設定を指示して、VDP109に各領域の設定を行わせるように構成されていてもよい。
図97は、ステップS773などにて実行される事前転送指令処理の一例を示すフローチャートである。事前転送指令処理において、図柄制御用CPU101aは、まず、演出モードフラグに対応する事前転送設定テーブルをセットする(ステップS171)。
演出モードフラグは、現在の演出モードが複数の演出モードうちのいずれの演出モードであるかを示すフラグである。遊技機には、所定のタイミングで可変表示装置9の画面に表示される背景や音などを変更することができるものがある。例えば、桜の花びらが舞っている春モードと、太陽が照っている夏モードと、紅葉(もみじ)が舞っている秋モードと、雪が降っている冬モードとが所定のタイミングで切り替わるような遊技機である。このような春モード、夏モード、秋モードおよび冬モードを演出モードという。この実施の形態では、所定の変更条件が成立すると、演出モードが変更される(切り替えられる)(後述するステップS1864,S1865参照)。
事前転送設定テーブルは、複数種類の画像データのうちで、可変表示装置9における表示頻度が高くなるように設定された部品画像を示す画像データを、その部品画像が可変表示装置9の画面上に表示されることに先立ち、事前にCGROM83からVRAM84へと転送するよう指令するために用いられるテーブルである。この実施の形態では、事前転送設定テーブルは、例えば、3N+1個(Nは任意の自然数)のテーブルデータから構成されており、事前転送設定テーブルから読み出すテーブルデータは、事前転送カウンタにおけるカウント値である事前転送カウント値によって決定される。
事前転送設定テーブルには、事前にCGROM83からVRAM84へと転送すべき画像データを特定するためのテーブルデータとして、処理数、読出アドレス#1〜#N、書込アドレス#1〜#N、画像データ量#1〜#Nなどを示すデータが格納されている。ここで、可変表示装置9の画面上に各部品画像が表示される頻度は、パチンコ遊技機1における演出動作の態様によって差異が生じる。例えば、背景画像として、春モードでは桜の花びらが用いられ、夏モードでは太陽が用いられ、秋モードでは紅葉が用いられ、冬モードでは雪が用いられる。また、例えば、識別情報(飾り図柄)の画像として、春モードや秋モードでは「1」〜「9」の数字の図柄の画像が用いられ、夏モードや冬モードでは「A」〜「I」のアルファベットの図柄の画像が用いられる。したがって、演出モードが夏モードに設定されているにもかかわらず、春モードの場合に表示頻度が高くなるように設定されている部品画像の画像データをVRAM84に一時記憶させても、これらの画像データが用いられる機会はなくなってしまい、VRAM84の使用効率が低下する。そこで、この実施の形態では、演出モードに対応した事前転送設定テーブルを予め複数用意しておき、演出動作の態様に対応して表示頻度が高くなるように設定された部品画像を示す画像データが事前にCGROM83からVRAM84へと転送されるようにする。
演出モードフラグは、図柄制御用マイクロコンピュータ100aにおけるRAMに設けられている。事前転送設定テーブルは、図柄制御用マイクロコンピュータ100aにおけるROMに設けられている。例えば、演出モードフラグの値が“0”である場合には、パチンコ遊技機1における演出動作の態様が春モードであることに対応する事前転送設定テーブルを、VDP109に対して事前転送コマンドを送信するために用いるテーブルに決定する。また、演出モードフラグの値が“1”である場合には、パチンコ遊技機1における演出動作の態様が夏モードであることに対応する事前転送設定テーブルを、VDP109に対して事前転送コマンドを送信するために用いるテーブルに決定する。
続いて、図柄制御用CPU101aは、RAMに設けられた事前転送カウンタをクリアして、そのカウント値である事前転送カウント値を「0」に初期化する(ステップS172)。そして、事前転送カウント値が「0」であることに対応した事前転送設定テーブルのテーブルデータを読み出すことにより、処理数の設定を行う(ステップS173)。
この後、図柄制御用CPU101aは、事前転送カウント値を、例えば1加算するなどして更新する(ステップS174)。そして、ステップS174にて更新した事前転送カウント値に対応した事前転送設定テーブルのテーブルデータを読み出すことにより、CGROM83における画像データの読出位置を示す読出アドレスを特定する(ステップS175)。
また、図柄制御用CPU101aは、事前転送カウント値を、例えば1加算するなどして更新し(ステップS176)、更新後のカウント値に対応した事前転送設定テーブルのテーブルデータを読み出すことにより、VRAM84の固定アドレスエリア155Aとなる記憶領域にて画像データを一時記憶させる書込位置を示す書込アドレスを特定する(ステップS177)。
さらに、図柄制御用CPU101aは、事前転送カウント値を、例えば1加算するなどして更新し(ステップS178)、更新後のカウント値に対応した事前転送設定テーブルのテーブルデータを読み出すことにより、転送データ量を特定する(ステップS179)。こうして特定された読出アドレス、書込アドレス、転送データ量に基づき、図柄制御用CPU101aは事前転送コマンドを作成し、VDP109に対して送信する(ステップS180)。このときには、処理数を、例えば1減算するなどして更新する(ステップS181)。
続いて、ステップS181にて更新した処理数が、所定の終了判定値(例えば「0」)に達したか否かを判定する(ステップS182)。このとき、処理数が終了判定値に達していなければ(ステップS182のN)、ステップS174の処理に戻る。これに対して、処理数が終了判定値に達すれば(ステップS182のY)、事前転送カウンタをクリアして、そのカウント値を「0」に初期化してから(ステップS183)、事前転送指令処理を終了する。
図98は、コマンド解析処理(ステップS776)の具体例を示すフローチャートである。音/ランプ制御基板80bから受信された演出制御コマンドおよび演出内容コマンドは受信コマンドバッファに格納されるが、コマンド解析処理では、図柄制御用マイクロコンピュータ100aは、コマンド受信バッファに格納されているコマンドの内容を確認する。
コマンド解析処理において、図柄制御用マイクロコンピュータ100aは、まず、コマンド受信バッファに受信コマンドが格納されているか否か確認する(ステップS7611)。格納されているか否かは、コマンド受信個数カウンタの値と読出ポインタとを比較することによって判定される。両者が一致している場合が、受信コマンドが格納されていない場合である。コマンド受信バッファに受信コマンドが格納されている場合には、図柄制御用マイクロコンピュータ100aは、コマンド受信バッファから受信コマンドを読み出す(ステップS7612)。なお、読み出したら読出ポインタの値を+1しておく(ステップS7613)。
受信した演出制御コマンド等が変動パターン指定の演出制御コマンドであれば(ステップS7614)、図柄制御用マイクロコンピュータ100aは、そのコマンドのEXTデータを変動パターンデータ格納領域に格納する(ステップS7615)。この場合、図柄制御用マイクロコンピュータ100aは、変動パターンコマンドを受信したことを示す変動パターン受信フラグをセットする(ステップS7616)。そして、変動パターンコマンドにもとづいて遊技状態を判定する(ステップS7617)。具体的には、図61に示したように、変動パターンは、通常遊技状態および高確率潜伏状態のときの変動パターンと、確変状態および時短状態のときの変動パターンとが区別されている。従って、図柄制御用マイクロコンピュータ100aは、変動パターンコマンドのEXTデータによって、遊技状態が通常遊技状態/高確率潜伏状態であるか、または確変状態/時短状態であるかについて判断することができる。図柄制御用マイクロコンピュータ100aは、ステップS7617にて行った遊技状態の判定結果に応じて遊技演出の内容(態様)を変更する必要が生じたときは、遊技状態を示すデータを所定の記憶領域に記憶するとともに、遊技演出の内容を変更する(ステップS7618)。例えば、通常遊技状態/高確率潜伏状態のときの変動パターンから確変状態/時短状態のときの変動パターンに切り替わったときは、遊技演出を通常遊技演出から特別遊技演出に変更する。
なお、ステップS7614〜S7618の処理は、音/ランプ制御用マイクロコンピュータ100bが実行するコマンド解析処理においても実行される。
ステップS7611にて受信していることが確認された演出制御コマンド等が表示結果指定の演出制御コマンドであれば(ステップS7619)、図柄制御用マイクロコンピュータ100aは、そのコマンドのEXTデータを表示結果(特別図柄の表示結果)として表示結果格納領域に格納する(ステップS7620)。次いで、表示結果指定コマンドで指定された表示結果に応じた飾り図柄(左中右の図柄)の停止図柄を決定し、飾り図柄格納領域に格納する(ステップS7621)。なお、飾り図柄の停止図柄は、飾り図柄決定用乱数にもとづいて決定される。なお、変動パターンコマンドで指定される変動パターンがリーチを伴う変動パターンであるか否かを確認し、リーチを伴う変動パターンの場合には、飾り図柄の停止図柄としてリーチ図柄(例えば、左右の飾り図柄が同一図柄で、中の飾り図柄が異なる図柄)を決定する。
図柄制御用マイクロコンピュータ100aは、ステップS7612で読み出した受信コマンドがその他の演出制御コマンドである場合には、受信コマンドに対応するコマンド受信フラグをセットし、必要であれば受信コマンドを保存する(ステップS7622)。
例えば、受信コマンドが復旧コマンド(通常表示コマンド、特別表示コマンド、または高確率潜伏表示コマンド)であれば、復旧コマンドに応じた遊技状態を示すデータ(例えばフラグ)を記憶する。なお、このような処理は、音/ランプ制御用マイクロコンピュータ100bが実行するコマンド解析処理においても実行される。
図99は、VDP109に内蔵されているレジスタの一例を示す説明図である。図99に示すレジスタは、描画制御部91に設けられている。また、図柄制御用CPU101aは、CPUI/F92およびCGバスを介してコマンドをVDP109に送信することにより、レジスタにデータを書き込むことができる。
図99に示す例では、実行指示レジスタは、描画制御部91に対するVRAM84への描画実行指示(VRAM84の描画領域外に設定されているキャラクタ等のソースデータを描画領域に展開する指示)、データ転送指示(CGROM83からVRAM84の描画領域外にキャラクタ等のソースデータを転送する指示)、および復号の実行指示(CGROM83に格納されている符号化されているムービーデータを復号する指示)を設定するために用いられる。例えば、8ビットの実行指示レジスタのうちの3ビットが、描画実行指示、データ転送指示および復号の実行指示に割り当てられ、いずれかのビットが「1」になると、描画制御部91または動画伸張部89が、指示された動作を実行する。
描画水平座標レジスタおよび描画垂直座標レジスタは、図柄制御用CPU101aが、VRAM84における描画領域の左上の水平座標(X座標)および垂直座標(Y座標)を指定するために用いられる。水平サイズレジスタおよび垂直サイズレジスタは、描画領域の水平方向および垂直方向のサイズを指定するために用いられる。
アルファ値レジスタは、部品画像を構成する各画素のアルファ値(α値)を指定するために用いられる。アルファ値は、後述するように、画像データにおける各画素の透明度を示す情報である(図115および図116参照)。また、テスト値レジスタは、後述するアルファテスト処理(図121のステップS1009、図124(B)参照)においてアルファ値と比較されるテスト値(アルファ参照値ともいう)を指定するために用いられる。
CGROMアドレスレジスタは、VRAM84の描画領域外に転送されるキャラクタ等のデータのCGROM83における格納領域の先頭アドレスを指定するために用いられる。
VRAM水平座標レジスタおよびVRAM垂直座標レジスタは、CGROM83から転送されるキャラクタ等のソースデータのVRAM84における格納領域の水平座標および垂直座標(VRAM84における固定アドレスエリア155Aのアドレス)を指定するために用いられる。VRAM水平サイズレジスタおよびVRAM垂直サイズレジスタは、CGROM83から転送されるキャラクタ等のソースデータのVRAM84における格納領域の水平サイズおよび垂直サイズを指定するために用いられる。
映像データ転送モードレジスタは、CGROM83から転送されるムービーデータを復号した後、VRAM84の描画領域外にどのように展開するのかを指定するために用いられる。映像データ転送モードとして、例えば、ストリーム(一連の動画像を構成する各フレーム画像の集まり)における全てのフレーム画像をVRAM84に展開するモードや、ストリームのうちの所定数(例えば3つや4つ)のフレーム画像をVRAM84に展開するモードがある。
表示ON/OFFレジスタは、表示のオンまたはオフを指定するために用いられる。表示ON/OFFレジスタの設定値がオン状態になると、描画制御部91は、VRAM84における表示領域に展開されている画像データにもとづく画像信号を可変表示装置9に出力するように表示信号制御部87に指示する。表示領域レジスタは、VRAM84に確保されている2つの表示領域のうちのいずれの画像データにもとづく画像信号が可変表示装置9に出力されるのかを指定するためのレジスタである。なお、図柄制御用CPU101aは、表示領域レジスタにいずれかの表示領域を示すデータをセットすることによって、現在の表示領域(その時点で、その中の画像データにもとづく画像信号が可変表示装置9に出力される方の表示領域)を設定するとともに、表示領域レジスタの内容によって、現在の表示領域がいずれの表示領域であるのかを知ることができる。
なお、図99には示していないが、記憶領域設定指定処理(ステップS772)にて設定される自動転送エリア155Bの先頭アドレスと末尾アドレスとを指定するレジスタも設けられている。
図100は、VRAMにおけるアドレスマップの一例を示す説明図である。図100に示すように、VRAM84のアドレス空間には、可変表示装置9の表示画面に表示される画像データが描画(展開)されるフレームバッファ(描画領域または表示領域ともいう)156が所定の領域に確保され、CGROM83から転送される頻繁に使用する部品画像の画像データが一旦格納される記憶領域として固定アドレスエリア155Aが所定の領域に確保され、CGROM83から転送される頻繁に使用しない部品画像の画像データが一旦格納される記憶領域として自動転送エリア155Bが所定の領域に確保され、固定アドレスエリア155Aおよび自動転送エリア155Bに格納されている画像データをフレームバッファ156に描画(展開)する前に一時展開するための記憶領域として一時展開領域155Cが所定の領域に確保されている。
なお、一時展開領域155Cは、固定アドレスエリア155Aおよび自動転送エリア155Bに格納されている部品画像を構成する画像データの各画素の色データに対応してアルファ値を設定するために画像データを一時展開する記憶領域である。
頻繁に使用する部品画像の画像データは、ステップS773,S1814,S1867にて転送指示が行われることにもとづいて、あらかじめCGROM83からVRAM84の固定アドレスエリア155Aに転送されて格納される。つまり、図柄制御用CPU101aは、ステップS773,S1814,S1867の事前転送指令処理(図97)において頻繁に使用する複数の部品画像の画像データの転送指示を行うときに、画像データが格納されているCGROM83におけるアドレスおよびVRAM84における固定アドレスエリア155Aのアドレスを指定する。そして、VDP109は、図柄制御用CPU101aによって指定されたアドレスの画像データをCGROM83から順次読み出し、読み出した画像データを図柄制御用CPU101aによって指定された固定アドレスエリア155Aの所定のアドレスに格納する。その後に、図柄制御用CPU101aから頻繁に使用する部品画像の画像データの描画指示(ステップS204,S696)があったとき、VDP109は、CGROM83からその部品画像の画像データを読み出さずに、固定アドレスエリア155Aの所定のアドレスに格納されている画像データを、描画指示において指定されているフレームバッファ156の所定位置に展開する。
固定アドレスエリア155Aは等間隔に分割され、等間隔に分割された領域の先頭アドレスを固定アドレスという。CGROM83から転送される頻繁に使用する各部品画像の画像データは、各固定アドレスを先頭アドレスとして固定アドレスエリア155Aに格納される。
また、頻繁に使用する部品画像以外の部品画像の画像データ(頻繁に使用しない部品画像の画像データ)は、ステップS204,S696にて描画指示が行われたことにもとづいて、CGROM83からVRAM84の自動転送エリア155Bに転送されて格納される。つまり、図柄制御用CPU101aは、ステップS204,S696において頻繁に使用しない複数の部品画像の画像データの描画指示を行うときに、画像データが格納されているCGROM83におけるアドレスおよびVRAM84におけるフレームバッファ156のアドレスを指定する。そして、VDP109は、図柄制御用CPU101aによって指定されたアドレスの画像データをCGROM83から順次読み出し、読み出した画像データを自動転送エリア155Bの所定のアドレスに格納する。そして直ちに、VDP109は、VRAM84における自動転送エリア155Bに格納した画像データを、描画指示において指定されているフレームバッファ156の所定位置(所定のアドレス)に展開する。
図101は、部品画像をVRAM84の表示領域外から表示領域に展開する場合の展開の仕方の一例を示す説明図である。図101に示すように、VRAM84における元水平座標、元垂直座標、元水平サイズおよび元垂直サイズで特定される領域の部品画像(VRAM84における固定アドレスエリア155Aまたは自動転送エリア155Bの所定のアドレスに格納されている部品画像)が、展開先水平座標および展開先垂直座標で特定される位置に展開される。なお、展開とは、画像データを、VRAM84の指定された位置に書き込むことであり、描画とも呼ぶ。また、部品画像をVRAM84の表示領域(描画領域ともいう)外から表示領域に展開するということは、具体的には、VRAM84の表示領域外に格納されている部品画像のソースデータを、表示領域に書き込むことである。ソースデータはビットマップデータであり、符号化されている部品画像のデータについても、復号された後にソースデータとしてVRAM84の表示領域外に格納されている。
図102は、VRAMの使用方法の一例を示す説明図である。図100に示すように、VRAM84には、可変表示装置9の画面に相当する2つの表示領域(領域0,1)が確保されている。領域0,1を表示用データ記憶手段またはフレームバッファと呼ぶことがある。領域0,1には、所定のタイミング(例えば遊技機への電源投入時や可変表示の開始時等)において、可変表示装置9に表示される背景画像(背景画像も部品画像の一つである。)に相当する画像データが展開される。また、適宜、キャラクタや識別情報などの部品画像が、領域0,1に展開される。そして、領域0に部品画像が展開されているときには領域1の画像データにもとづく画像信号が可変表示装置9に出力され、領域1に部品画像が展開されているときには領域0の画像データにもとづく画像信号が可変表示装置9に出力される。領域0に部品画像が展開されているときには領域0が表示領域であり、領域1に部品画像が展開されているときには領域1が表示領域である。また、領域0から画像データが読み出されその画像データにもとづく画像信号が可変表示装置9に出力されているときには領域0が表示領域であり、領域1から画像データが読み出されその画像データにもとづく画像信号が可変表示装置9に出力されているときには領域1が表示領域である。このように、領域0,1は、ダブルバッファとして用いられる。
VRAM84における領域0,1以外の領域には、上述したように、部品画像のVRAM84の表示領域外の展開領域(固定アドレスエリア155A)が確保されている。CGROM83から固定アドレスエリア155Aへは、その時点で使用される可能性が高い、すなわちVRAM84の表示領域に展開される可能性が高い部品画像(具体的には部品画像のソースデータ)が格納される。
図103は、図95に示されたメイン処理における演出制御プロセス処理(ステップS777)を示すフローチャートである。演出制御プロセス処理では、図柄制御用マイクロコンピュータ100aは、演出制御プロセスフラグの値に応じてステップS1800〜S1806のうちのいずれかの処理を実行する。各処理において、以下のような処理が実行される。
飾り図柄通常処理(ステップS1800):変動パターンコマンドを受信しているか否かを確認する。変動パターンコマンドを受信していれば、図柄制御用マイクロコンピュータ100aは、演出制御プロセスフラグの値をステップS1802(飾り図柄変動開始処理)に対応した値に変更する。
飾り図柄変動開始処理(ステップS1802):変動パターンに応じて予め定められているプロセスデータを選択し、プロセスタイマをスタートさせるとともに、可変表示装置9の表示制御を開始する。その後、演出制御プロセスフラグの値をステップS1803に応じた値に更新する。
飾り図柄変動中処理(ステップS1803):変動パターンを構成する各変動状態(変動速度等)の切替タイミングを制御するとともに、変動時間の終了を監視する。その後、演出制御プロセスフラグの値をステップS1804に応じた値に更新する。
飾り図柄停止処理(ステップS1804):変動時間が経過したら、図柄の変動を停止し停止図柄(確定図柄)を表示する制御を行う。その後、大当りとする場合には、演出制御プロセスフラグの値をステップS1805に応じた値に更新する。そうでない場合には、演出制御プロセスフラグの値をステップS1800に応じた値に更新する。
大当り表示処理(ステップS1805):変動時間の終了後、大当り表示の制御を行う。その後、演出制御プロセスフラグの値をステップS1806に応じた値に更新する。
大当たり遊技中処理(ステップS1806):大当たり遊技中の制御を行う。例えば、大入賞口開放前表示や大入賞口開放時表示の演出制御コマンドを受信したら、ラウンド中やインターバル中の表示制御等を行う。また、大当り遊技を終了すると、大当り遊技を終了した旨を示す所定のエンディング表示を行う。その後、演出制御プロセスフラグの値をステップS1800に応じた値に更新する。
図104は、演出制御プロセス処理における飾り図柄通常処理(ステップS1800)を示すフローチャートである。飾り図柄通常処理において、図柄制御用マイクロコンピュータ100aの図柄制御用CPU101aは、コマンド無受信タイマがタイムアウトしているか否かを確認する(ステップS1811)。コマンド無受信タイマは、飾り図柄の変動の終了後および大当り遊技の終了後から変動パターンコマンドを受信していない期間を計測するタイマである。コマンド無受信タイマは、飾り図柄の変動停止時および大当り遊技の終了時にスタートされる。図柄制御用CPU101aは、コマンド無受信タイマがタイムアウトしているときは(ステップS1811のY)、デモ画面(デモンストレーション画面)を表示させる制御を実行する(ステップS1812)。
そして、図柄制御用CPU101aは、VDP109に対して固定アドレスエリア155Aに格納されている格納情報(頻繁に使用する部品画像の画像データ)をクリア(消去)する処理の実行を指示する(ステップS1813)。VDP109は、図柄制御用CPU101aからの画像データクリアの指示にもとづいて固定アドレスエリア155Aに格納されている画像データをクリアする。また、図柄制御用CPU101aは、ステップS772で説明したように、頻繁に使用する部品画像の画像データについてのCGROM83からVRAM84の固定アドレスエリア155Aへの転送を指示する事前転送指令処理(図97)を実行する(ステップS1814)。VDP109は、画像データの転送指示にもとづいて、あらかじめ頻繁に使用する部品画像の画像データをCGROM83から読み出し、読み出した画像データをVRAM84の固定アドレスエリア155Aに転送し、固定アドレスエリア155Aに再度格納する。そして、図柄制御用CPU101aは、コマンド無受信タイマをスタートさせる(ステップS1815)。このように、デモ画面が表示されるタイミングになると、VRAM84の固定アドレスエリア155Aに格納されている画像データをクリアし、再び画像データを固定アドレスエリア155Aに格納するようにしているので、固定アドレスエリア155Aに格納されている画像データを定期的に更新することができ、画像データが固定アドレスエリア155Aに長時間格納されていることによりデータ化けなどが発生したとしても、自動的に復帰させることができる。
図柄制御用CPU101aは、コマンド無受信タイマがタイムアウトしていないときは(ステップS1811のN)、変動パターン受信フラグがセットされているか否か確認する(ステップS1816)。変動パターン受信フラグは、変動パターンコマンドを受信したときにコマンド解析処理においてセットされる。
変動パターン受信フラグがセットされていれば、図柄制御用マイクロコンピュータ100aは、変動パターン受信フラグをリセットし(ステップS1817)、既に決定されている飾り図柄の停止図柄および変動パターンコマンドの内容にもとづいて飾り図柄の変動パターンを決定する(ステップS1818)。このとき、遊技状態を示すデータを所定の記憶領域に記憶されている遊技状態を示すデータを確認することにより現在の遊技状態を確認し、現在の遊技状態に応じた遊技演出(通常遊技演出または特別遊技演出)を実行するための飾り図柄の変動パターンを決定する。なお、例えば、通常遊技演出の場合は、飾り図柄を横スクロールさせることにより飾り図柄の可変表示を実行する変動パターン(演出パターン)とし、特別遊技演出の場合は、飾り図柄を縦スクロールさせることにより飾り図柄の可変表示を実行する変動パターン(演出パターン)とするというように決定されるものとする。
そして、演出制御プロセスフラグの値を飾り図柄変動開始処理に対応した値に変更する(ステップS1819)。
図105は、演出制御プロセス処理における飾り図柄変動開始処理(ステップS1802)を示すフローチャートである。飾り図柄変動開始処理において、図柄制御用マイクロコンピュータ100aの図柄制御用CPU101aは、まず、使用する飾り図柄の変動パターンに応じたプロセスデータを選択する(ステップS1821)。なお、このとき、音/ランプ制御用マイクロコンピュータ100bからの演出内容コマンドにもとづいて、予告演出の実行の有無を確認し、予告演出の実行が指定されていたときは、予告演出を含む表示制御を実行するためのプロセスデータが選択される。そして、図柄制御用CPU101aは、ステップS1821にて選択されたプロセスデータに設定されているプロセスタイマ設定値をプロセスタイマにセットして、プロセスタイマをスタートさせる(ステップS1822)。
その後、変動時間タイマ(飾り図柄の変動時間に応じたタイマ)をスタートし(ステップS1823)、演出制御プロセスフラグの値を飾り図柄変動中処理に対応した値にする(ステップS1824)。
図106は、演出制御プロセス処理における飾り図柄変動中処理(ステップS1803)を示すフローチャートである。飾り図柄変動中処理において、図柄制御用マイクロコンピュータ100aの図柄制御用CPU101aは、まず、プロセスデータに設定されている表示制御実行データの内容をロードし(ステップS1840)、その表示制御実行データの内容に従って所定の表示更新指令処理を実行する(ステップS1841)。表示更新指令処理の内容については後述する(図108参照)。
なお、図柄制御用CPU101aは、VDP109からのVブランク割込信号の入力を確認している。Vブランクは、VRAM84のフレームバッファ(表示領域)に展開された画像データを可変表示装置9に出力し終えてから、VRAM84のフレームバッファに次に展開された画像データを可変表示装置9に出力し始めるまでの期間をいう。VDP109は、Vブランク開始時に割込信号を図柄制御用CPU101aに出力してVブランク割込をかける。このように、Vブランク割込は、可変表示装置9に供給される垂直同期信号の周期と同周期でVDP109が発生する割込である。例えば、可変表示装置9の画面変更周波数(フレーム周波数)が30Hzである場合にはVブランク割込の発生周期は33.3msであり、フレーム周波数が60Hzである場合にはVブランク割込の発生周期は16.7msである。図柄制御用CPU101aは、VDP109からの割込信号を受け取るための割込端子(INT端子)を備えている。図柄制御用CPU101aは、割込端子の入力レベルがローレベルに立ち下がると、外部割込みとしてのVブランク割込の発生を検出する。そして、図柄制御用CPU101aは、Vブランク割込の発生を検出すると、Vブランク割込処理(図示せず)を実行する。
この実施の形態では、後述する表示更新指令処理において、図柄制御用CPU101aはVDP109に画像データの転送などを指示(指令)するコマンドを作成して設定し、Vブランク割込処理において、図柄制御用CPU101aは設定されたコマンドをVDP109に出力するように構成されている。但し、表示更新指令処理において、図柄制御用CPU101aはコマンドを作成し、Vブランク割込にもとづく画像表示の更新タイミングになったときに(なお、画像表示の更新タイミングになったかどうかは例えばVブランク割込があったときにセットされるフラグを確認することにより行われる)、作成したコマンドをVDP109に送信するように構成されていてもよい。
次いで、図柄制御用CPU101aは、プロセスタイマの値を−1する(ステップS1842A)。プロセスタイマの値が0になったら、すなわちプロセスタイマがタイムアウトしたら(ステップS1842B)、プロセスデータにおける表示制御実行データの切り替えを行う(ステップS1843A)。そして、図柄制御用CPU101aは、次のプロセスタイマ設定値をプロセスタイマに設定して、プロセスタイマをスタートさせる(ステップS1843B)。
そして、図柄制御用CPU101aは、変動時間タイマの値を−1し(ステップS1848)、変動時間タイマの値が0になっているかどうかを確認することによって、変動時間タイマがタイムアウトしたか否かを確認する(ステップS1849)。変動時間タイマがタイムアウトしていたら(ステップS1849)、演出制御プロセスフラグの値を飾り図柄停止処理に対応した値にする(ステップS1850)。
図107は、演出制御プロセス処理における飾り図柄停止処理(ステップS1804)を示すフローチャートである。飾り図柄停止処理において、図柄制御用CPU101aは、飾り図柄の停止を指示する演出制御コマンド(飾り図柄停止コマンド)を受信しているか否か確認する(ステップS1861)。飾り図柄停止コマンドを受信していれば、記憶されている停止図柄で飾り図柄を停止して導出表示させる制御を行う(ステップS1862)。
そして、ステップS1862で大当り図柄を表示した場合には(ステップS1863のY)、図柄制御用CPU101aは、演出制御プロセスフラグの値を大当り表示処理(ステップS1805)に対応した値に設定する(ステップS1870)。
ステップS1862で大当り図柄を表示しない場合(はずれ図柄を表示した場合、ステップS1863のN)には、図柄制御用CPU101aは、演出モードの変更条件が成立したか否かを確認する(ステップS1864)。この実施の形態では、演出モードとして、春モード、夏モード、秋モードおよび冬モードが設けられている。そして、演出モードが変更される(切り替わる)ための変更条件として、この実施の形態では、演出モードが変更されてから所定の変動回数(例えば100回)の変動が実行されたときおよび特定のリーチ(例えばグラデーションリーチ)が発生したときとしている。図柄制御用CPU101aは、変動パターンコマンドを受信する毎に変動回数をカウントする回数カウンタの値を更新し、回数カウンタの値が所定の変動回数を示す値になったときに演出モードの変更条件が成立したと判断する。また、図柄制御用CPU101aは、変動パターンコマンドの内容にもとづいて特定のリーチ(例えば変動時間の長いリーチC;スーパーリーチと呼ぶ)を伴う変動パターンであると判断したときに演出モードの変更条件が成立したと判断する。
演出モードの変更条件が成立し(ステップS1864のY)、演出モードが切り替えられるときは、切り替え後の演出モードに応じた演出モードフラグに変更する(ステップS1865)。また、演出モードが切り替えられるときは、頻繁に使用する部品画像(特に背景の画像)の画像データが変更されるので、図柄制御用CPU101aは、VDP109に対して固定アドレスエリア155Aに格納されている格納情報(頻繁に使用する部品画像の画像データ)をクリア(消去)する処理の実行を指示する(ステップS1866)。また、図柄制御用CPU101aは、演出モードに応じた頻繁に使用する部品画像の画像データについてのCGROM83からVRAM84への転送を指示する事前転送指令処理を実行する(ステップS1867)。これにより、演出モードに応じた頻繁に使用する部品画像の画像データが固定アドレスエリア155Aにあらかじめ格納されることになる。
そして、図柄制御用CPU101aは、次の演出制御コマンドの受信までの時間を監視するためにコマンド無受信タイマをスタートさせ(ステップS1868)、演出制御プロセスフラグの値を飾り図柄通常処理(ステップS1800)に対応した値に設定する(ステップS1869)。
図108は、ステップS1841にて実行される表示更新指令処理の一例を示すフローチャートである。表示更新指令処理において、図柄制御用CPU101aは、まず、飾り図柄の可変表示における表示態様がリーチとなるリーチ表示期間または予告演出実行期間であるか否かを判定する(ステップS691)。例えば、ステップS691において、図柄制御用CPU101aは、現在選択されているプロセスデータがリーチ演出に対応したプロセスデータであるか否かを判定することや、あるいは飾り図柄の変動時間を計測する変動時間タイマの値がリーチ演出の実行期間に対応した所定値となっているか否かを判定することなどにより、リーチ表示期間であるか否かを判定すればよい。また、図柄制御用CPU101aは、現在選択されているプロセスデータが予告演出に対応したプロセスデータであるか否かを判定することや、あるいは変動開始時に予告演出の実行タイミングを計測するタイマをスタートさせ、そのタイマが所定時間を計測したか否かを判定することにより、予告演出実行期間であるか否かを判定すればよい。
ステップS691にてリーチ表示期間または予告演出実行期間である場合には(ステップS691のY)、例えばRAMの変動パターンデータ格納領域に格納されている変動パターンのEXTデータにもとづいて、飾り図柄の変動パターンが、リーチを伴う変動パターンのうちでアルファテスト処理を実行する変動パターンであるか否かや、予告演出を伴う変動パターンのうちでアルファテスト処理を実行する変動パターンであるか否かを判定する(ステップS692)。この実施の形態では、図91や図94に示した表示態様のリーチ(例えばリーチB)を伴う変動パターンが、アルファテスト処理を実行する変動パターンである。このとき、アルファテスト処理を実行する変動パターンであれば(ステップS692のY)、所定のアルファテスト表示用指令処理を実行する(ステップS693)。
ステップS692にてアルファテスト処理を実行する変動パターンではない場合には(ステップS692のN)、飾り図柄の変動パターンが、リーチを伴う変動パターンのうちでアルファ合成処理を実行する変動パターンであるか否かを判定する(ステップS694)。この実施の形態では、図126に示す表示態様のリーチ(例えばリーチC)を伴う変動パターンが、アルファ合成処理を実行する変動パターンである。このとき、アルファ合成処理を実行する変動パターンであれば(ステップS694のY)、所定のアルファ合成表示用指令処理を実行する(ステップS695)。
ステップS691にてリーチ表示期間ではない場合や(ステップS691のN)、アルファテスト処理もアルファ合成処理も実行しない変動パターンである場合(ステップS692のN、ステップS694のN)、あるいはステップS693、S695の処理のいずれかを実行した後には、所定の各種更新対象指令処理を実行する(ステップS696)。
図109は、ステップS693にて実行されるアルファテスト表示用指令処理の一例を示すフローチャートである。アルファテスト表示用指令処理において、図柄制御用CPU101aは、まず、変動パターンのEXTデータにもとづいて、飾り図柄の変動パターンが、予告演出を伴う変動パターンのうちでアルファテスト処理を実行する変動パターンであるか否かを判定する(ステップS700)。
予告演出を伴う変動パターンでない場合は(ステップS700のN)、今回の表示対象となる飾り図柄を特定する(ステップS701)。例えば、ステップS701において、図柄制御用CPU101aは、プロセスデータの表示制御実行データの内容や、今回の可変表示における確定飾り図柄、変動時間タイマ値に基づいて特定される飾り図柄の可変表示を開始してからの経過時間などから、ステップS701の処理が実行されたタイミングにて表示対象となる飾り図柄を特定すればよい。
続いて、図柄制御用CPU101aは、ステップS701にて特定された飾り図柄を、ステップS701の処理を前回実行した際に表示対象とした飾り図柄と比較する(ステップS702)。そして、このときの比較結果から、表示対象となる飾り図柄に変更があったか否かを判定する(ステップS703)。なお、飾り図柄の可変表示が開始された後、ステップS701の処理が1回目に実行された場合には、前回に表示対象とした飾り図柄がないことから、表示対象となる飾り図柄に変更があった旨の判定がなされるようにすればよい。
ステップS703にて表示対象となる飾り図柄に変更があった場合には(ステップS703のY)、例えば処理数を「0」に設定するなどといった、処理数の初期設定を行う(ステップS704)。続いて、ステップS701にて特定した表示対象となる飾り図柄と対応付けられたアルファ値分布設定データを特定する(ステップS705)。そして、ステップS701にて特定した表示対象の飾り図柄と、ステップS705にて特定したアルファ値分布設定データとに基づき、アルファ値分布設定データの設定を指示するアルファ値分布設定コマンドを作成してVDP109に送信する(ステップS706)。なお、アルファ値分布設定データの具体例については後述する(図116参照)。
なお、ステップS706において、図柄制御用CPU101aが「コマンドを作成してVDP109に送信する」としているが、この実施の形態では、ステップS706において、図柄制御用CPU101aコマンドを作成して図柄制御用CPU101a内部のレジスタに設定しておき、画像表示の更新タイミングになったときに実行されるVブランク割込処理において、図柄制御用CPU101aが設定されたコマンドをVDP109に送信する。以下に示すステップS710,S717,S808,S828,S746,S750の処理においても同様である。
ステップS703にて表示対象となる飾り図柄に変更がない場合には(ステップS703のN)、処理数を復帰させるための設定を行う(ステップS707)。例えば、ステップS707の処理では、図109のフローチャートに示すアルファテスト表示用指令処理が前回実行された際にステップS711にて退避された処理数を、RAMの所定領域から読み出すことなどにより復帰させる。続いて、ステップS707にて復帰させた処理数を、例えば1加算するなどして更新する(ステップS708)。
ステップS706、S708の処理のいずれかを実行した後には、処理数に対応して、図110に示すようにアルファ参照値と比較関数とを決定する(ステップS709)。こうして決定されたアルファ参照値と、比較関数とに基づき、テスト実行コマンドを作成してVDP109に送信する(ステップS710)。この後、表示対象の飾り図柄と処理数を、例えばRAMの所定領域に記憶させてから(ステップS711)、アルファテスト表示用指令処理を終了する。
また、ステップS700において、予告演出を伴う変動パターンである場合は(ステップS700のY)、図柄制御用CPU101aは、ボタン有効期間であるか否かを確認する(ステップS712)。ボタン有効期間は、チャンスボタン300が押されたときにチャンスボタン300のオンを有効と判断する期間である。図109には示していないが、ボタン有効期間であるか否かは、図94に示した予告演出の実行開始タイミングになったとき(例えば、変動開始してから所定時間(例えば3秒)経過したとき;具体的には、飾り図柄変動開始処理において予告演出の実行タイミングを計測するタイマをスタートさせ、そのタイマが所定時間を計測したとき)にボタン有効期間を計測するタイマがスタートされ、このタイマがタイムアウトしていないかどうかにより判断される。なお、ボタン有効期間は、例えば5秒とされる。
図柄制御用CPU101aは、ボタン有効期間であることを確認したときは(ステップS712のY)、チャンスボタン300からオン信号が出力されているかどうかを確認することによりチャンスボタン300のオン状態を確認する(ステップS713)。そしてチャンスボタン300がオン状態のときは(ステップS714のY)、図柄制御用CPU101aは、チャンスボタン300のオンに応じてアルファ参照値(テスト値ともいう)を更新(変更)する(ステップS715)。具体的には、図柄制御用CPU101aは、予め定められた更新前のアルファ参照値(例えば1)を、更新後のテスト値に設定する。このように、図柄制御用CPU101aは、チャンスボタン300のオンを確認する度に、アルファ参照値を段階的に(徐々に)に変更していく。
その後、予告演出において表示するキャラクタと対応付けられたアルファ値分布設定データを特定する(ステップS716)。そして、ステップS716にて特定したアルファ値分布設定データとに基づき、アルファ値分布設定データの設定を指示するアルファ値分布設定コマンドを作成してVDP109に送信する(ステップS717)。なお、アルファ値分布設定コマンドは、予告演出の実行開始時に一度送信すれば、その後にVDP109に送信する必要がないので、アルファ値分布設定コマンドが送信された後は、ステップS716,S717の処理はスキップされる。
そして、ステップS715にて更新されたアルファ参照値と、予告演出を実行するときの比較関数を決定する(ステップS718)。こうして決定されたアルファ参照値と、比較関数とに基づき、テスト実行コマンドを作成してVDP109に送信する(ステップS710)。その後、アルファテスト表示用指令処理を終了する。なお、このときはステップS711を実行する必要はない。
なお、図110に示す比較関数は、アルファ値がアルファ参照値(テスト値)以下なら成立する(描画する)とする場合、あるいはアルファ値がアルファ参照値(テスト値)以上なら成立する(描画する)とする場合を例にあげているが、このような場合に限られるわけではない。例えば、アルファ値がアルファ参照値と等しいときに成立するとするもの、アルファ値がアルファ参照値と等しくないときに成立するとするもの、アルファ値がアルファ参照値よりも小なら成立するとするもの、アルファ値がアルファ参照値以下よりも大なら描画するとするものなどがある。さらに、アルファ値にかかわらず常に成立するとするもの、アルファ値にかかわらず常に成立しないとするものもある。これらの比較関数を用いてアルファテスト処理を実行してもよい。
図111は、ステップS695にて実行されるアルファ合成表示用指令処理の一例を示すフローチャートである。アルファ合成表示用指令処理において、図柄制御用CPU101aは、まず、RAMの所定領域に設けられた合成中フラグがオンであるか否かを判定する(ステップS721)。ここで、合成中フラグは、後述するステップS723の処理にてオン状態にセットされる一方、ステップS731の処理にてクリアされてオフ状態となる。
ステップS721にて合成中フラグがオフである場合には(ステップS721のN)、RAMの所定領域に設けられた経過時間タイマにタイマ初期値「0」を設定するなどして、経過時間タイマによる合成開始タイミングからの経過時間の計測をスタートさせる(ステップS722)。このときには、合成中フラグをオン状態にセットする(ステップS723)。ステップS721にて合成中フラグがオンである場合には(ステップS721のY)、経過時間タイマにおけるタイマ値である経過時間タイマ値を、例えば1加算するなどして更新する(ステップS724)。
ステップS723、S724の処理のいずれかを実行した後には、経過時間タイマ値が最大値である「200」よりも大きくなったか否かを判定する(ステップS725)。このとき、経過時間タイマ値が「200」よりも大きければ(ステップS725のY)、経過時間タイマをリセットしてタイマ初期値「0」に設定する(ステップS726)。これに対して、経過時間タイマ値が「200」以下であれば(ステップS725;No)、ステップS726の処理をスキップする。
この後、図柄制御用CPU101aは、現在選択されているプロセスデータや、経過時間タイマ値などに基づき、アルファ合成の種類が第1及び第2アルファ合成のいずれであるかを判定する(ステップS727)。ここで、第1アルファ合成では、連続する2つの飾り図柄のうち、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像をフェードアウトさせて行くと共に、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像をフェードインさせて行く合成画像を生成する。他方、第2アルファ合成では、連続する2つの飾り図柄のうち、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像をフェードインさせて行くと共に、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像をフェードアウトさせて行く合成画像を生成する。
例えば、ステップS727の処理において、図柄制御用CPU101aは、変動パターンにもとづくプロセスデータの表示制御実行データから、初期合成期間であるか、煽り合成期間であるか、最終合成期間であるかの判定を行う。ここで、初期合成期間は、合成開始タイミングから煽り合成の開始タイミングまでの期間である。煽り合成期間は、煽り合成の開始タイミングから最終合成の開始タイミングまでの期間である。最終合成期間は、最終合成の開始タイミングから合成終了タイミングまでの期間である。
そして、図柄制御用CPU101aが初期合成期間であると判定した場合には、経過時間タイマ値が「100」以下であるか否かを判定し、「100」以下であればアルファ合成の種類を第1アルファ合成とする一方、「100」よりも大きければアルファ合成の種類を第2アルファ合成とする。また、図柄制御用CPU101aが煽り合成期間であると判定した場合には、経過時間タイマ値が「20」以上「81」以下または「120」以上「181」以下の範囲内であるか否かを判定する。経過時間タイマ値がこの範囲内にない場合は、煽り合成が不能な期間であるとして、初期合成期間と同様にして、アルファ合成の種類を決定する。これに対して、経過時間タイマ値が上記の範囲内にある場合には、煽り合成が可能な期間であるとして、経過時間タイマ値が「181」であるか否かを判定し、「181」であれば経過時間タイマ値を「20」に設定する。また、経過時間タイマ値が「181」ではない場合には、さらに経過時間タイマ値が「81」であるか否かを判定し、「81」であれば経過時間タイマ値を「120」に設定する。この後、経過時間タイマ値が「20」以上「80」以下の範囲内であるか否かを判定し、この範囲内であればアルファ合成の種類を第1アルファ合成とする一方、この範囲内になければアルファ合成の種類を第2アルファ合成とする。
さらに、図柄制御用CPU101aが最終合成期間であると判定した場合には、可変表示装置9における「中」の可変表示部における確定飾り図柄が、表示順において後の飾り図柄(例えば「7」を示す飾り図柄)であるか、表示順において先の飾り図柄(例えば「6」を示す飾り図柄)であるかの判定を行う。そして、後順の飾り図柄が確定飾り図柄である場合には、アルファ合成の種類を第1アルファ合成とする一方、先順の飾り図柄が確定飾り図柄である場合には、アルファ合成の種類を第2アルファ合成とする。
ステップS727にてアルファ合成の種類が第1アルファ合成である場合には(ステップS727;第1)、所定の第1アルファ合成指令処理を実行する(ステップS728)。これに対して、アルファ合成の種類が第2アルファ合成である場合には(ステップS727;第2)、所定の第2アルファ合成指令処理を実行する(ステップS729)。この後、変動パターンにもとづくプロセスデータの表示制御実行データなどに基づき、合成終了タイミングとなったか否かを判定する(ステップS730)。そして、合成終了タイミングであれば(ステップS730のY)、合成中フラグをクリアしてから(ステップS731)、アルファ合成表示用指令処理を終了する。これに対して、合成終了タイミングでなければ(ステップS730のN)、ステップS731の処理をスキップして、アルファ合成表示用指令処理を終了する。
図112は、ステップS728にて実行される第1アルファ合成指令処理の一例を示すフローチャートである。第1アルファ合成指令処理において、図柄制御用CPU101aは、まず、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)に対して用いるブレンド率データを読み出すためのテーブルとしてブレンド率Aテーブルを設定するととともに、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)に対して用いるブレンド率データを読み出すためのテーブルとしてブレンド率Bテーブルを設定する(ステップS801)。また、図柄制御用CPU101aは、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)に対して用いる拡大率データを読み出すためのテーブルとして拡大率Aテーブルを設定するとともに、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)に対して用いる拡大率データを読み出すためのテーブルとして拡大率Bテーブルを設定する(ステップS802)。
ここで、この実施の形態では、ブレンド率Aテーブルと、ブレンド率Bテーブルと、拡大率Aテーブルと、拡大率Bテーブルと、拡大率Cテーブルとが、ROMの所定領域に記憶されている。
ブレンド率Aテーブルとブレンド率Bテーブルには、合成画像の生成を開始してからの経過時間TM(M=1、2、…、100)を示すデータと、ブレンド率を示すデータとしてのブレンド率データとが、対応付けて記憶されている。ブレンド率Aテーブルに記憶されているブレンド率データは、時間の経過に伴って、ブレンド率を「1」から「0」へと順次低下させて行く制御データである。ブレンド率Bテーブルに記憶されているブレンド率データは、時間の経過に伴って、ブレンド率を「0」から「1」へと順次向上させて行く制御データである。
拡大率Aテーブルと、拡大率Bテーブルと、拡大率Cテーブルには、経過時間TMと、拡大率を示すデータとしての拡大率データとが、対応付けて記憶されている。拡大率Aテーブルに記憶されている拡大率データは、時間の経過に伴って、拡大率を「1」から「0」へと順次低下させて行く制御データである。拡大率Bテーブルに記憶されている拡大率データは、時間の経過に伴って、拡大率を「0」から「1」へと順次向上させて行く制御データである。拡大率Cテーブルに記憶されている拡大率データは、時間の経過に伴って拡大率を変化させずに「1」のままとする制御データである。
続いて、図柄制御用CPU101aは、経過時間タイマ値が「100」以下であるか否かを判定し(ステップS803)、「100」以下であるときには(ステップS803のY)、このタイマ値に対応するブレンド率データと拡大率データとを、ステップS801、S802にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS804)。例えば、経過時間タイマ値が「0」であれば、ブレンド率Aテーブル、ブレンド率Bテーブルにおいて経過時間「T0」と対応付けられているブレンド率を示すブレンド率データや、拡大率Aテーブル、拡大率Bテーブルにおいて経過時間「T0」と対応付けられている拡大率を示す拡大率データを読み出す。
ステップS803にて、経過時間タイマ値が「100」より大きいときには(ステップS803のN)、前回までの処理とブレンド率、拡大率の向上あるいは低下方向が同一か否かを判別し(ステップS805)、方向が同一であれば(ステップS805のY)、経過時間タイマ値から「100」を減算した値に対応するブレンド率データと拡大率データとを、ステップS801、S802にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS806)。具体的には、経過時間タイマ値が「100」を超えて「101」となった場合、ステップS801、S802にて設定したブレンド率テーブルと拡大率テーブルからは、経過時間「T1」と対応付けられているブレンド率や拡大率を示すデータが読み出され、その後、経過時間「T2」、「T3」、…に対応するブレンド率や拡大率を示すデータが順次読み出されて行く。これにより、連続する2つの飾り図柄のうち、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像が完全にフェードアウトして、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像のみが表示されるようになった後、表示順が後の飾り図柄が消去されて表示順が先の飾り図柄が再び現れ、次第にフェードアウトして行きながら、消去された表示順が後の飾り図柄がフェードインして行くように、合成画像が生成されることになる。
ステップS805にて前回までの処理とブレンド率、拡大率の向上あるいは低下方向が異なっているときには(ステップS805のN)、「200」から経過時間タイマ値を減算した値に対応するブレンド率データと拡大率データとを、ステップS801、S802にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS807)。具体的には、経過時間タイマ値が「100」を超えて「101」となった場合、ステップS801、S802にて設定したブレンド率テーブルと拡大率テーブルからは、経過時間「T99」に対応するブレンド率や拡大率を示すデータが読み出され、その後、経過時間「T98」、「T97」、…に対応するブレンド率や拡大率を示すデータが順次読み出されて行く。これにより、連続する2つの飾り図柄のうち、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像が完全にフェードアウトして、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像のみが表示されるようになった後、ステップS806の場合とは反対に、表示順が先の飾り図柄がフェードインして行きながら、表示順が後の飾り図柄がフェードアウトして行くように、合成画像が生成されることになる。
ステップS804、S806、S807の処理のいずれかにて読み出されたブレンド率データや拡大率データに基づき、アルファ合成コマンドを作成してVDP109に送信する(ステップS808)。こうして、第1アルファ合成指令処理が終了する。
図113は、ステップS729にて実行される第2アルファ合成指令処理の一例を示すフローチャートである。第2アルファ合成指令処理において、図柄制御用CPU101aは、まず、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)に対して用いるブレンド率データを読み出すためのテーブルとしてブレンド率Bテーブルを設定するととともに、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)に対して用いるブレンド率データを読み出すためのテーブルとしてブレンド率Aテーブルを設定する(ステップS821)。また、図柄制御用CPU101aは、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)に対して用いる拡大率データを読み出すためのテーブルとして拡大率Bテーブルを設定するとともに、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)に対して用いる拡大率データを読み出すためのテーブルとして拡大率Aテーブルを設定する(ステップS822)。
続いて、図柄制御用CPU101aは、経過時間タイマ値が「100」以下であるか否かを判定し(ステップS823)、「100」以下であるときには(ステップS823のY)、このタイマ値に対応するブレンド率データと拡大率データとを、ステップS821、S822にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS824)。例えば、経過時間タイマ値が「0」であれば、ブレンド率Aテーブル、ブレンド率Bテーブルにおいて経過時間「T0」と対応付けられているブレンド率を示すブレンド率データや、拡大率Aテーブル、拡大率Bテーブルにおいて経過時間「T0」と対応付けられている拡大率を示す拡大率データを読み出す。
ステップS823にて、経過時間タイマ値が「100」より大きいときには(ステップS823のN)、前回までの処理とブレンド率、拡大率の向上あるいは低下方向が同一か否かを判別し(ステップS825)、方向が同一であれば(ステップS825;Yes)、経過時間タイマ値から「100」を減算した値に対応するブレンド率データと拡大率データとを、ステップS821、S822にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS826)。具体的には、経過時間タイマ値が「100」を超えて「101」となった場合、ステップS821、S822にて設定したブレンド率テーブルと拡大率テーブルからは、経過時間「T1」と対応付けられているブレンド率や拡大率を示すデータが読み出され、その後、経過時間「T2」、「T3」、…に対応するブレンド率や拡大率を示すデータが順次読み出されて行く。これにより、連続する2つの飾り図柄のうち、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像が完全にフェードアウトして、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像のみが表示されるようになった後、表示順が先の飾り図柄が消去されて表示順が後の飾り図柄が再び現れ、次第にフェードアウトして行きながら、消去された表示順が先の飾り図柄がフェードインして行くように、合成画像が生成されることになる。
ステップS825にて前回までの処理とブレンド率、拡大率の向上あるいは低下方向が異なっているときには(ステップS825のN)、「200」から経過時間タイマ値を減算した値に対応するブレンド率データと拡大率データとを、ステップS821、S822にて設定したブレンド率テーブルと拡大率テーブルとからそれぞれ読み出す(ステップS827)。具体的には、経過時間タイマ値が「100」を超えて「101」となった場合、ステップS821、S822にて設定したブレンド率テーブルと拡大率テーブルからは、経過時間「T99」に対応するブレンド率や拡大率を示すデータが読み出され、その後、経過時間「T98」、「T97」、…に対応するブレンド率や拡大率を示すデータが順次読み出されて行く。これにより、連続する2つの飾り図柄のうち、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)の画像が完全にフェードアウトして、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)の画像のみが表示されるようになった後、ステップS826の場合とは反対に、表示順が後の飾り図柄がフェードインして行きながら、表示順が先の飾り図柄がフェードアウトして行くように、合成画像が生成されることになる。
ステップS824、S826、S827の処理のいずれかにて読み出されたブレンド率データや拡大率データに基づき、アルファ合成コマンドを作成してVDP109に送信する(ステップS828)。こうして、第2アルファ合成指令処理が終了する。
なお、この実施の形態では、アルファ合成(アルファブレンド)として、第1アルファ合成と第2アルファ合成とを設けていたが、それ以外のアルファ合成を実行するようにしてもよい。例えば、飾り図柄の画像と背景画像とをアルファ合成することによって飾り図柄を背景からフェードインさせたり背景にフェードアウトさせたりするような場合や、キャラクタの画像と背景画像とをアルファ合成することによってキャラクタを背景からフェードインさせたり背景にフェードアウトさせたりするような場合などである。また、チャンスボタン300のオンに応じてブレンド率を変化させていくような構成であってもよい。この場合、時間の経過に応じてブレンド率データを変化させていく構成(例えば、図112のステップS803〜S807や図113のステップS823〜S827の処理)の代わりに、チャンスボタン300を確認し、ボタンのオンを検出する度にブレンド率テーブルのブレンド率データを変化させていく構成にすればよい。
図114は、ステップS696にて実行される各種更新対象指令処理の一例を示すフローチャートである。各種更新対象指令処理において、図柄制御用CPU101aは、まず、例えば現在選択されているプロセスデータの表示制御実行データなどから、表示を更新する対象となる部品画像を特定する(ステップS741)。続いて、ステップS741にて特定した部品画像が、VRAM84の固定アドレスエリア155Aに画像データを事前に転送する対象となる部品画像であるか否かの判定を行う(ステップS742)。
ステップS742にて事前転送の対象となる部品画像であると判定された場合には(ステップS742のY)、例えばプロセスデータの表示制御実行データなどから、VRAM84の固定アドレスエリア155Aにおける画像データの読出アドレスを特定する(ステップS743)。また、例えばプロセスデータの表示制御実行データなどから、部品画像の表示位置(表示座標)に対応したフレームバッファ156における画像データの書込アドレスを特定する(ステップS744)。さらに、更新対象となる部品画像を示す画像データのデータ量を特定する(ステップS745)。その後、ステップS743〜S745にて特定した固定アドレスエリア155Aにおける読出アドレス、フレームバッファ156における書込アドレス、画像データのデータ量に基づき、固定アドレス指定表示コマンドを作成してVDP109に送信する(ステップS746)。
ステップS742にて事前転送の対象となる部品画像ではないと判定された場合には(ステップS742のN)、例えばプロセスデータの表示制御実行データなどから、CGROM83における画像データの読出アドレスを特定する(ステップS747)。また、例えばプロセスデータの表示制御実行データなどから、部品画像の表示位置(表示座標)に対応したフレームバッファ156における画像データの書込アドレスを特定する(ステップS748)。さらに、更新対象となる部品画像を示す画像データのデータ量を特定する(ステップS749)。その後、ステップS747〜S749にて特定したCGROM83における読出アドレス、フレームバッファ156における書込アドレス、画像データのデータ量に基づき、自動転送表示コマンドを作成してVDP109に送信する(ステップS750)。
この後、全ての更新対象となる部品画像についての指令が完了したか否かを判定する(ステップS751)。そして、指令が完了していなければ(ステップS751のN)、ステップS741の処理に戻る。これに対して、全ての更新対象となる部品画像についての指令が完了すれば(ステップS751のY)、各種更新対象指令処理を終了する。
なお、VDP109は、図柄制御用CPU101aからのコマンド(固定アドレス指定表示コマンド、自動転送表示コマンドなど)にもとづいて、描画制御部91に設けられているレジスタにデータを設定する処理を行う。具体的には、CGROMアドレスレジスタに、部品画像の画像データのCGROM83における格納アドレス(読出アドレス)を設定し、VRAM水平座標レジスタ、VRAM垂直座標レジスタ、VRAM水平サイズレジスタおよびVRAM垂直サイズレジスタに、VRAM84における部品画像のソースデータの転送先に関する情報を設定し、実行指示レジスタに、データ転送(スプライト画像の場合)または復号の実行指示(ムービーデータの場合)を示す情報を設定する。
また、VDP109は、部品画像情報先頭アドレスレジスタに、部品画像を示す情報格納領域の先頭アドレスを設定し、描画水平座標レジスタおよび描画垂直座標レジスタに、描画領域の左上の水平座標および左上の垂直座標を示すデータを設定し、水平サイズレジスタおよび垂直サイズレジスタに、描画領域の水平方向のサイズおよび垂直方向のサイズを示すデータを設定し、実行指示レジスタに、フレームバッファ156への描画指示を示す情報を設定する。
VDP109における描画制御部91は、実行指示レジスタにデータ転送を示す情報が設定されたことを認識したら、CGROMアドレスレジスタに設定されているCGROM83のアドレスから画像データ(頻繁に使用しない部品画像の画像データ)を読み出し、読み出した画像データを、VRAM水平座標レジスタ、VRAM垂直座標レジスタ、VRAM水平サイズレジスタおよびVRAM垂直サイズレジスタに設定されている情報で特定されるVRAM84の自動転送エリア155Bの所定アドレスに格納する。
そして、VDP109における描画制御部91は、実行指示レジスタに描画指示を示す情報が設定されたことを認識したら、VRAM84におけるフレームバッファ以外の領域に格納されている画像データをフレームバッファに描画(展開)する。
また、VDP109は、図柄制御用CPU101aからのコマンド(アルファ値分布設定コマンド、テスト実行コマンド、アルファ合成コマンドなど)にもとづいて、描画制御部91に設けられているレジスタにデータを設定する処理を行う。具体的には、アルファ値レジスタにアルファ値を示す情報を設定するとともに、テスト値レジスタにテスト値(アルファ参照値)を示す情報を設定する(ステップS205)。このように設定されたアルファ値およびテスト値にもとづいて、VDP109は画像描画処理にてアルファテスト処理やアルファ合成処理を実行する。
なお、この実施の形態では、飾り図柄変動中処理(ステップS1803)においてプロセスデータにおける表示制御実行データにもとづいてVDP109にコマンドを送信し、VDP109の描画制御部91に設けられているレジスタにデータが設定されるように構成されている。しかし、このような構成に限られるわけではなく、Vブランク割込にもとづく処理(Vブランク割込処理)においてプロセスデータにおける表示制御実行データにもとづいてVDP109にコマンドを送信し、VDP109の描画制御部91に設けられているレジスタにデータが設定されるように構成されていてもよい。
次に、画像を構成する各画素の色データに対応して設定されるアルファ値について説明する。図115は、アルファ値分布設定データを示す説明図である。CGROM83には、各部品画像を構成する画像データの各画素の色データに加えて、部品画像の形を示すデータ(画像のサイズ、角度、変形態様)や、部品画像の各画素のアルファ値を示すアルファ値分布設定データが格納されている。アルファ値分布設定データは、各部品画像を構成する色データとは別にCGROM83に格納されている。アルファ値分布設定データは、画像データ(RGBの色データ)に対応つけてアルファ値を設定するためのフィルタの役割を果たす。アルファ値分布設定データは、例えば図91〜図94に示したような飾り図柄のグラデーションの表示やキャラクタのカットイン表示を実現するために用いられるデータであって、表示態様に応じて複数設けられている。
図115に示す例では、後述するアルファテスト処理により図91に示したようなグラデーションを付けた飾り図柄の可変表示を実行させるために用いられるアルファ値を示すアルファ値分布設定データの一例である。すなわち、飾り図柄「7」の部品画像の画像データに重ね合わされる(組み合わされる)アルファ値分布設定データが左領域、中領域および右領域に分割され、左領域の隣り合う画素のアルファ値αとして交互に0.3と0.4とが設定され、中領域の隣り合う画素のアルファ値αとして交互に0.4と0.5とが設定され、右領域の隣り合う画素のアルファ値として交互に0.5と0.6とが設定されている。このようにα値が設定されたアルファ値分布設定データが部品画像の画像データに重ね合わされることによって、アルファ値分布設定データの各画素(位置)に対応した部品画像の各画素(位置)の画像データ(色データ)に、アルファ値分布設定データに設定されているアルファ値αが設定されることになる。
なお、飾り図柄の部品画像の画像データに重ね合わされるアルファ値分布設定データをもっと細かく分割するとともに、分割した領域の画素に所定のアルファ値を異なる密度で設定すれば、より細かなグラデーションを付けた表示を実現することが可能である。
なお、図115では、図91に示すグラデーションをつけたように飾り図柄の色を左から右に変化させる場合のアルファ値分布設定データを示したが、図93に示すグラデーションをつけたように飾り図柄の色を上から下に(上下方向に)、同心円状に、回転方向に変化させるアルファ値分布設定データもCGROM83にそれぞれ設けられている。
図116は、VRAM84における描画領域以外の領域に展開されている1画素の画像データのデータ構造を示す説明図である。画像データは、CGROM83に格納されているときは、色データ(R,G,B)のみで構成されている。なお、上述したように、色データは、R(赤),G(緑),B(青)がそれぞれ8ビットで表される。したがって、R,G,Bそれぞれが256階調であり、約1670万色の多色表示を行うことができる。
画像データは、CGROM83からVRAM84における固定アドレスエリア155Aまたは自動転送エリア155Bに転送され、固定アドレスエリア155Aまたは自動転送エリア155Bに格納された画像データがVRAM84における一時展開領域155Cに一時展開されるときに、各画素の色データに対応してアルファ値(α)が設定される。つまり、VRAM84における一時展開領域155Cに一時展開されるときに、VDP109が、図柄制御用CPU101aによってアルファ値レジスタに設定された情報に従ってアルファ値を示すアルファ値分布設定データを選択し、選択したアルファ値分布設定データにもとづいて各画素の色データに対応してアルファ値αを設定し、アルファ値αを設定した画像データを一時展開領域155Cに展開する。図116に示すように、アルファ値αも8ビットで表される。
次に、VDP109の動作について説明する。図117は、VDP109が実行する転送制御処理の一例を示すフローチャートである。転送制御処理において、VDP109の描画制御部91は、まず、CPUI/F92を介して図柄制御用CPU101aから受信した表示制御指令となるコマンドがあるか否かを判定する(ステップS901)。図柄制御用CPU101aからの受信コマンドがなければ(ステップS901のN)、ステップS901の処理を繰り返し実行して待機する。
ステップS901にて受信コマンドがある場合には(ステップS901のY)、その受信コマンドが記憶領域設定コマンドであるか否かを判定する(ステップS902)。そして、記憶領域設定コマンドであれば(ステップS902のY)、所定の記憶領域設定処理を実行する一方(ステップS903)、記憶領域設定コマンドでなければ(ステップS902のN)、受信コマンドが事前転送コマンドであるか否かを判定する(ステップS904)。
ステップS904にて受信コマンドが事前転送コマンドであれば(ステップS904のY)、所定の事前転送処理を実行する一方(ステップS905)、事前転送コマンドでなければ(ステップS904のN)、受信コマンドが自動転送表示コマンドであるか否かを判定する(ステップS906)。ステップS906にて受信コマンドが自動転送表示コマンドであれば(ステップS906のY)、所定の自動転送制御処理を実行する(ステップS907)。ステップS906にて受信コマンドが自動転送表示コマンドではない場合や(ステップS906のN)、ステップS907の処理を実行した後には、ステップS901の処理に戻る。
図118は、ステップS903にて実行される記憶領域設定処理の一例を示すフローチャートである。記憶領域設定処理において、VDP109の描画制御部91は、まず、VRAM84をクリアして、その記憶内容を初期化する(ステップS921)。続いて、記憶領域設定コマンドに含まれるデータから、自動転送エリア155Bの先頭アドレスとなるアドレスSTADDを特定する(ステップS922)。そして、このとき特定したアドレスSTADDを、VDP109の内部レジスタにセットして格納する(ステップS923)。また、描画制御部91は、記憶領域設定コマンドに含まれるデータから、自動転送エリア155Bの最終アドレスとなるアドレスENADDを特定する(ステップS924)。そして、このとき特定したアドレスENADDを、VDP109の内部レジスタにセットして格納してから(ステップS925)、記憶領域設定処理を終了する。
図119は、ステップS905にて実行される事前転送処理の一例を示すフローチャートである。事前転送処理において、VDP109の描画制御部91は、まず、事前転送コマンドに含まれるデータから、CGROM83における画像データの読出アドレスを特定する(ステップS941)。続いて、事前転送コマンドに含まれるデータから、VRAM84の固定アドレスエリア155Aにおける画像データの書込アドレスを特定する(ステップS942)。また、事前転送コマンドに含まれるデータから、転送すべき画像データのデータ量を特定する(ステップS943)。そして、ステップS941〜S943にて特定した画像データの読出アドレス、書込アドレス、データ量に基づき、CGROM83から読み出した画像データを固定アドレスエリア155Aに転送するためにデータ転送の開始設定を行う(ステップS944)。例えば、ステップS944において、描画制御部91は、所定のDMA装置に、CGROM83の読出アドレス、VRAM84の書込アドレス、転送データ量として画像データのデータ量をセットして、DMA転送による画像データの転送開始を指示する。
この後、描画制御部91は、画像データの転送が完了したか否かを判定し(ステップS945)、完了していなければ(ステップS945のN)、ステップS945の処理を繰り返して待機する。他方、例えばDMA装置から所定の転送完了信号が出力されたことなどに基づき、ステップS945にて画像データの転送が完了したと判定されれば(ステップS945のY)、VDP109が備えるインデックステーブルに全ての部品画像の画像データの転送完了を登録してから(ステップS946)、事前転送処理を終了する。ステップS946の処理において、描画制御部91は、固定アドレスエリア155Aへと転送された画像データを特定可能とする「開始アドレス」、「水平サイズ」などのデータをインデックステーブルに書き込み、対応する「転送完了フラグ」を「オン」に設定する。
図120は、ステップS907にて実行される自動転送処理の一例を示すフローチャートである。自動転送処理において、VDP109の描画制御部91は、まず、自動転送表示コマンドに含まれるデータから、CGROM83における画像データの読出アドレスを特定する(ステップS961)。続いて、VRAM84の自動転送エリア155Bにおける画像データの書込アドレスを特定する(ステップS962)。例えば、ステップS962の処理において、描画制御部91は、インデックステーブルを参照して、自動転送エリア155Bのうちで、「転送完了フラグ」が「オン」となって有効な画像データが記憶されている領域以外の空き領域を特定する。こうして特定された空き領域のうちから、今回転送すべき画像データを記憶させる領域を決定し、その先頭アドレスを書込アドレスとして特定すればよい。
続いて、描画制御部91は、自動転送表示コマンドに含まれるデータから、転送すべき画像データのデータ量を特定する(ステップS963)。そして、ステップS961〜S963にて特定した画像データの読出アドレス、書込アドレス、データ量に基づき、CGROM83から読み出した画像データを自動転送エリア155Bに転送するためにデータ転送の開始設定を行う(ステップS964)。例えば、ステップS964において、描画制御部91は、所定のDMA装置に、CGROM83の読出アドレス、VRAM84の書込アドレス、転送データ量として画像データのデータ量をセットして、DMA転送による画像データの転送開始を指示する。
この後、描画制御部91は、画像データの転送が完了したか否かを判定し(ステップS965)、完了していなければ(ステップS965のN)、ステップS965の処理を繰り返して待機する。他方、例えばDMA装置から所定の転送完了信号が出力されたことなどに基づき、ステップS965にて画像データの転送が完了したと判定されれば(ステップS965のY)、VDP109が備えるインデックステーブルに全ての部品画像の画像データの転送完了を登録してから(ステップS966)、自動転送処理を終了する。ステップS966の処理において、描画制御部91は、自動転送エリア155Bへと転送された画像データを特定可能とする「開始アドレス」、「水平サイズ」などのデータをインデックステーブルに書き込み、対応する「転送完了フラグ」を「オン」に設定する。
図121は、VDP109が実行する描画処理の一例を示すフローチャートである。描画処理において、VDP109の描画制御部91は、まず、CPUI/F92を介して図柄制御用CPU101aから受信した表示制御指令となるコマンドがあるか否かを判定する(ステップS1001)。図柄制御用CPU101aからの受信コマンドがなければ(ステップS1001のN)、ステップS1001の処理を繰り返し実行して待機する。
ステップS1001にて受信コマンドがある場合には(ステップS1001のY)、その受信コマンドが固定アドレス指定表示コマンドであるか否かを判定する(ステップS1002)。そして、固定アドレス指定表示コマンドであれば(ステップS1002のY)、所定の固定アドレス指定表示処理を実行する一方(ステップS1003)、固定アドレス指定表示コマンドでなければ(ステップS1002のN)、受信コマンドが自動転送表示コマンドであるか否かを判定する(ステップS1004)。
ステップS1004にて受信コマンドが自動転送表示コマンドであれば(ステップS1004のY)、所定の自動転送表示処理を実行する一方(ステップS1005)、自動転送表示コマンドでなければ(ステップS1004のN)、受信コマンドがアルファ値分布設定コマンドであるか否かを判定する(ステップS1006)。ステップS1006にて受信コマンドがアルファ値分布設定コマンドであれば(ステップS1006のY)、所定のアルファテスト用描画処理を実行する一方(ステップS1007)、アルファ値分布設定コマンドでなければ(ステップS1006のN)、受信コマンドがテスト実行コマンドであるか否かを判定する(ステップS1008)。
ステップS1008にて受信コマンドがテスト実行コマンドであれば(ステップS1008のY)、所定のアルファテスト処理を実行する一方(ステップS1009)、テスト実行コマンドでなければ(ステップS1008のN)、受信コマンドがアルファ合成コマンドであるか否かを判定する(ステップS1010)。ステップS1010にて受信コマンドがアルファ合成コマンドであれば(ステップS1010のY)、所定のアルファ合成処理を実行する(ステップS1011)。ステップS1010にて受信コマンドがアルファ合成コマンドではない場合や(ステップS1010のN)、ステップS1111の処理を実行した後には、ステップS1101の処理に戻る。
図122は、ステップS1003にて実行される固定アドレス指定表示処理の一例を示すフローチャートである。固定アドレス指定表示処理において、VDP109の描画制御部91は、まず、固定アドレス指定表示コマンドに含まれるデータから、VRAM84の固定アドレスエリア155Aにおける画像データの読出アドレスを特定する(ステップS1021)。続いて、ステップS1021にて特定した読出アドレスに基づきインデックステーブルを参照し、読出対象となる画像データと対応付けられた「転送完了フラグ」が「オン」となっているか否かを判定する(ステップS1022)。
ステップS1022にて「転送完了フラグ」が「オン」である場合には(ステップS1022のY)、固定アドレス指定表示コマンドに含まれるデータから、フレームバッファ156における画像データの書込アドレスを特定するとともに、フレームバッファ156における画像データの書込アドレスから、一時展開領域155Cにおける画像データの書込アドレスを特定する(ステップS1023)。このとき、フレームバッファ156と一時展開領域155Cは、いずれも、可変表示装置9における1画面分の表示領域であり、所定位置だけアドレスがずれている(シフトしている)だけであって、表示領域の大きさは同一である。従って、描画制御部91は、フレームバッファ156における画像データの書込アドレスから、一時展開領域155Cにおける画像データの書込アドレスを容易に特定することができる。
この後、描画制御部91は、ステップS1021にて特定した読出アドレスから画像データを読み出し、ステップS1023にて特定した書込アドレスに書き込む(ステップS1024)。そして、一時展開領域155Cに画像データを書き込むことによる描画が完了したか否かを判定し(ステップS1025)、完了していなければ(ステップS1025のN)、読出アドレスと書込アドレスを更新した後(ステップS1026)、ステップS1024の処理に戻る。他方、ステップS1025にて描画が完了すれば(ステップS1025のY)、固定アドレス指定表示処理を終了する。
なお、図122には示していないが、アルファテスト処理やアルファ合成処理が実行されないときは、ステップS1024にて一時展開領域155Cに書き込まれた画像データを、一時展開領域155Cからフレームバッファ156にコピーすることで表示用データ(アルファテスト処理やアルファ合成処理が実行されない画像データ)の更新を行う。そして、フレームバッファ156にコピーされた表示用データは、表示信号制御部87によってフレームバッファ156から読み出され、階調データに変換されるなどして可変表示装置9に出力される。これにより、可変表示装置9の画面上に表示されることになる。一方、アルファテスト処理やアルファ合成処理が実行されるときは、後述するステップS1113やS1124にて一時展開領域155Cに書き込まれた画像データを、一時展開領域155Cからフレームバッファ156にコピーすることで表示用データ(アルファテスト処理やアルファ合成処理の実行後の画像データ)の更新を行う。なお、VRAM84に一時展開領域155Cを設けない構成のときや、アルファテスト処理やアルファ合成処理が実行されないときは、例えば、ステップS1024において固定アドレスエリア155Aから読み出した画像データを一時展開領域155Cに書き込む処理を行わずにフレームバッファ156に直接書き込むようにしてもよい。
また、ステップS1022にて「転送完了フラグ」が「オフ」である場合には(ステップS1022のNo)、所定の転送完了待ち時間が経過したか否かを判定する(ステップS1027)。このとき、転送完了待ち時間が経過していなければ(ステップS1027のN)、ステップS1022の処理に戻って待機する。これに対して、ステップS1027にて転送完了待ち時間が経過した場合には(ステップS1027のY)、例えばCPUI/F92を介して図柄制御用CPU101aに対して所定のエラー情報を送信することなどにより、エラーが発生した旨を通知してから(ステップS1028)、固定アドレス指定表示処理を終了する。なお、図柄制御用CPU101aは、VDP109からのエラー情報を受信すると、エラー状態が発生したことを報知する制御、例えばエラー画面を表示させたり、音/ランプ制御用CPU101bにエラーコマンドを送信することにより所定の点灯パターンでランプ等を点灯させたりする制御を実行する。後述するステップS1049においても同様である。
図123は、ステップS1005にて実行される自動転送表示処理の一例を示すフローチャートである。自動転送表示処理において、描画制御部91は、まず、自動転送表示コマンドに含まれるデータから、VRAM84の自動転送エリア155Bにおける画像データの読出アドレスを特定する(ステップS1041)。続いて、ステップS1041にて特定した読出アドレスに基づきインデックステーブルを参照し、読出対象となる画像データと対応付けられた「転送完了フラグ」が「オン」となっているか否かを判定する(ステップS1042)。
ステップS1042にて「転送完了フラグ」が「オン」である場合には(ステップS1042のY)、自動転送表示コマンドに含まれるデータから、フレームバッファ156における画像データの書込アドレスを特定するとともに、フレームバッファ156における画像データの書込アドレスから、一時展開領域155Cにおける画像データの書込アドレスを特定する(ステップS1043)。この後、描画制御部91は、ステップS1041にて特定した読出アドレスから画像データを読み出し、ステップS1043にて特定した書込アドレスに書き込む(ステップS1044)。そして、一時展開領域155Cに画像データを書き込むことによる描画が完了したか否かを判定し(ステップS1045)、完了していなければ(ステップS1045のN)、読出アドレスと書込アドレスを更新した後(ステップS1046)、ステップS1044の処理に戻る。他方、ステップS1045にて描画が完了すれば(ステップS1045のY)、描画に用いた画像データと対応付けてインデックステーブルに登録された「転送完了フラグ」をクリアして「オフ」とした後(ステップS1047)、自動転送表示処理を終了する。
なお、図123には示していないが、アルファテスト処理やアルファ合成処理が実行されないときは、ステップS1044にて一時展開領域155Cに書き込まれた画像データを、一時展開領域155Cからフレームバッファ156にコピーすることで表示用データ(アルファテスト処理やアルファ合成処理が実行されない画像データ)の更新を行う。そして、フレームバッファ156にコピーされた表示用データは、表示信号制御部87によってフレームバッファ156から読み出され、階調データに変換されるなどして可変表示装置9に出力される。これにより、可変表示装置9の画面上に表示されることになる。一方、アルファテスト処理やアルファ合成処理が実行されるときは、後述するステップS1113やS1124にて一時展開領域155Cに書き込まれた画像データを、一時展開領域155Cからフレームバッファ156にコピーすることで表示用データ(アルファテスト処理やアルファ合成処理の実行後の画像データ)の更新を行う。なお、VRAM84に一時展開領域155Cを設けない構成のときや、アルファテスト処理やアルファ合成処理が実行されないときは、ステップS1044において自動転送エリア155Bから読み出した画像データを一時展開領域155Cに書き込む処理を行わずにフレームバッファ156に直接書き込むようにしてもよい。
また、ステップS1042にて「転送完了フラグ」が「オフ」である場合には(ステップS1042のN)、所定の転送完了待ち時間が経過したか否かを判定する(ステップS1048)。このとき、転送完了待ち時間が経過していなければ(ステップS1048のN)、ステップS1042の処理に戻って待機する。これに対して、ステップS1048にて転送完了待ち時間が経過した場合には(ステップS1048のY)、例えばCPUI/F92を介して図柄制御用CPU101aに対して所定のエラー情報を送信することなどにより、エラーが発生した旨を通知してから(ステップS1049)、自動転送表示処理を終了する。
図124(A)は、ステップS1007にて実行されるアルファテスト用描画処理の一例を示すフローチャートである。アルファテスト用描画処理において、描画制御部91は、アルファ値分布設定コマンドに含まれるデータから表示対象の飾り図柄を特定し、特定された飾り図柄を示す画像データをVRAM84の固定アドレスエリア155Aから読み出して一時展開領域155Cに書き込む(ステップS1101)。続いて、描画制御部91は、アルファ値分布設定コマンドに含まれるデータから飾り図柄を示す演出画像に含まれる各画素におけるアルファ値を特定し、特定されたアルファ値を示すデータを一時展開領域155Cにおける各画素に対応したアドレスに書き込むことにより、各画素のアルファ値を設定する(ステップS1102)。こうしてアルファテスト用描画処理は終了する。
図124(B)は、ステップS1009にて実行されるアルファテスト処理の一例を示すフローチャートである。アルファテスト処理において、描画制御部91は、テスト実行コマンドに含まれるデータからアルファ参照値を特定し、特定されたアルファ参照値と各画素のアルファ値との比較演算を実行する(ステップS1111)。このときには、テスト実行コマンドに含まれるデータから特定される比較関数で「成立」となる表示条件を満たした画素を、可変表示装置9に表示させるものとしての表示対象画素に決定する(ステップS1112)。そして、ステップS1112にて決定された表示対象画素を、一時展開領域155Cからフレームバッファ156にコピーすることで表示用データ(アルファテスト処理後の画像データ)の更新を行った後(ステップS1113)、アルファテスト処理を終了する。こうしてフレームバッファ156にコピーされた表示対象画素の画素値を示すデータは、フレームバッファ156から更新後の表示用データとして読み出され、階調データに変換されるなどして可変表示装置9に出力される。これにより、表示対象画素が可変表示装置9の画面上に表示されることになる。
図124(C)は、ステップS1011にて実行されるアルファ合成処理の一例を示すフローチャートである。アルファ合成処理において、描画制御部91は、アルファ合成コマンドに含まれるデータから、表示順が先の飾り図柄(例えば「6」を示す飾り図柄)を特定し、特定された飾り図柄を示す画像データについて、VRAM84の固定アドレスエリア155Aから読み出した後、アルファ合成コマンドに含まれるデータから特定される拡大率データが示す拡大率で一時展開領域155Cに書き込む(ステップS1121)。続いて、描画制御部91は、ステップS1121にて一時展開領域155Cに書き込んだ表示順が先の飾り図柄を示す画像データについて、アルファ合成コマンドに含まれるデータから特定されるブレンド率データが示すブレンド率に対応したアルファ値の設定を行う(ステップS1122)。例えば、アルファ合成コマンドに含まれるデータに基づいて特定したブレンド率を表示順が先の飾り図柄を示す演出画像の各画素におけるアルファ値として、一時展開領域155Cにおける各画素に対応したアドレスに書き込む。
この後、描画制御部91は、アルファ合成コマンドに含まれるデータから、表示順が後の飾り図柄(例えば「7」を示す飾り図柄)を特定し、特定された飾り図柄を示す画像データについて、VRAM84の固定アドレスエリア155Aから読み出した後、一時展開領域155Cに記憶されている各画素のアルファ値や、アルファ合成コマンドに含まれるデータから特定されるブレンド率に基づき、アルファ合成コマンドに含まれるデータから特定される拡大率データが示す拡大率で、一時展開領域155Cに書き込む(ステップS1123)。例えば、ステップS1123の処理において、描画制御部91は、表示順が先の飾り図柄を示す演出画像Aについて既に一時展開領域155Cに書き込まれているアルファ値をα1、表示順が後の飾り図柄を示す演出画像Bについてアルファ合成コマンドにより通知されたブレンド率をα2として、各画素の色データを、(演出画像Aの色データ)×α1+(演出画像Bの色データ)×α2との演算を実行することなどにより特定する。描画制御部91は、こうして特定された各画素の色データを一時展開領域155Cに書き込むことなどにより、連続する2つの飾り図柄を合成して2つの飾り図柄が重なり合った合成画像を示す画像データを作成する。
ステップS1123の処理を実行した後には、一時展開領域155Cの記憶データをフレームバッファ156にコピーすることで表示用データ(アルファ合成処理後の画像データ)の更新を行ってから(ステップS1124)、アルファ合成処理を終了する。こうしてフレームバッファ156にコピーされたデータは、フレームバッファ156から更新後の表示用データとして表示信号制御部87によって読み出され、階調データに変換されるなどして可変表示装置9に出力される。これにより、連続する2つの飾り図柄を合成して2つの飾り図柄が重なり合った合成画像が可変表示装置9の画面上に表示されることになる。
次に、アルファテスト処理の具体的な適用例について説明する。
図91に示したグラデーションをつけた飾り図柄の画像表示は、以下のように実現される。例えば、飾り図柄「7」の部品画像の画像データに重ね合わされるアルファ値分布設定データが左領域、中領域および右領域に分割され、左領域の隣り合う画素のアルファ値αとして交互に0.3と0.4とが設定され、中領域の隣り合う画素のアルファ値αとして交互に0.4と0.5とが設定され、右領域の隣り合う画素のアルファ値として交互に0.5と0.6とが設定される。また、飾り図柄「8」の部品画像の画像データに重ね合わされるアルファ値分布設定データが左領域、中領域および右領域に分割され、左領域の隣り合う画素のアルファ値αとして交互に0.5と0.6とが設定され、中領域の隣り合う画素のアルファ値αとして交互に0.6と0.7とが設定され、右領域の隣り合う画素のアルファ値として交互に0.7と0.8とが設定される。
そして、図柄制御用CPU101aは、処理数を更新していくごとに(ステップS708参照)、アルファ値と比較されるアルファ参照値(テスト値)の値を徐々に変化させていく(ステップS709参照)。ここで、飾り図柄「7」の画像データに設定されたアルファ値αとアルファ参照値(テスト値)とを比較するときの比較関数は、アルファ値αがアルファ参照値以上なら成立するとする関数であり、飾り図柄「8」の画像データに設定されたアルファ値αとアルファ参照値(テスト値)とを比較するときの比較関数は、アルファ値αがアルファ参照値以下なら成立するとする関数であるものとする。
アルファ参照値が0.3以下のときは、「7」の全領域の画素のアルファ値がアルファ参照値以上であるので、「7」の全領域が表示されることになり、「8」の全領域の画素のアルファ値がアルファ参照値以上であるので、「8」の全領域が消去されることになる。また、アルファ参照値が0.3から0.4の間の値であるときは、「7」の左領域における半分の画素(1つおきの画素)のアルファ値がアルファ参照値以下であり、「7」の左領域のもう半分の画素のアルファ値がアルファ参照値以上であるので、「7」の左領域が薄い色で表示され、「7」の中領域および右領域の画素のアルファ値がアルファ参照値以上であるので、「7」の中領域および右領域が表示されることになる。また、「8」の全領域の画素のアルファ値がアルファ参照値以上であるので、「8」の全領域が消去されることになる。また、アルファ参照値が0.4から0.5の間の値であるときは、「7」の左領域の画素のアルファ値がアルファ参照値以下であるので、「7」の左領域が消去されることになり、「7」の中領域における半分の画素のアルファ値がアルファ参照値以下であり、「7」の中領域のもう半分の画素のアルファ値がアルファ参照値以上であるので、「7」の中領域が薄い色で表示され、「7」の右領域の画素のアルファ値がアルファ参照値以上であるので、「7」の右領域が表示されることになる。また、「8」の全領域の画素のアルファ値がアルファ参照値以上であるので、「8」の全領域が消去されることになる。
また、アルファ参照値が0.5から0.6の間の値であるときは、「7」の左領域および中領域の画素のアルファ値がアルファ参照値以下であるので、「7」の左領域および中領域が消去されることになり、「7」の右領域における半分の画素のアルファ値がアルファ参照値以下であり、「7」の右領域のもう半分の画素のアルファ値がアルファ参照値以上であるので、「7」の右領域が薄い色で表示されることになる。また、「8」の左領域における半分の画素のアルファ値がアルファ参照値以上であり、「8」の左領域のもう半分の画素のアルファ値がアルファ参照値以下であるので、「8」の左領域が薄い色で表示されることになり、「8」の中領域および右領域の画素のアルファ値がアルファ参照値以上であるので、「8」の中領域および右領域が消去されることになる。
また、アルファ参照値が0.6から0.7の間の値であるときは、「7」の全領域の画素のアルファ値がアルファ参照値以下であるので、「7」の全領域が消去されることになる。また、「8」の左領域の画素のアルファ値がアルファ参照値以下であるので、「8」の左領域が表示されることになり、「8」の中領域における半分の画素のアルファ値がアルファ参照値以上であり、「8」の中領域のもう半分の画素のアルファ値がアルファ参照値以下であるので、「8」の中領域が薄い色で表示されることになり、「8」の右領域の画素のアルファ値がアルファ参照値以上であるので、「8」の右領域が消去されることになる。
また、アルファ参照値が0.7から0.8の間の値であるときは、「7」の全領域の画素のアルファ値がアルファ参照値以下であるので、「7」の全領域が消去されることになる。また、「8」の左領域および中領域の画素のアルファ値がアルファ参照値以下であるので、「8」の左領域および中領域が表示されることになり、「8」の右領域における半分の画素のアルファ値がアルファ参照値以上であり、「8」の右領域のもう半分の画素のアルファ値がアルファ参照値以下であるので、「8」の右領域が薄い色で表示されることになる。
以上のような処理によって、図91の(c)〜(h)に示したような画像表示が実現される。
また、図94に示した予告演出用のキャラクタの画像表示は、例えば以下のように実現される。図柄制御用CPU101aは、予告演出実行期間になると(ステップS691のY)、アルファテスト処理を行う予告演出を実行するときは(ステップS692のY)、アルファテスト表示用指令処理(ステップS693)を実行する。アルファテスト表示用指令処理において、図柄制御用CPU101aは、予告演出で表示させるキャラクタの画像にアルファ値を設定するためのアルファ値分布設定データを特定し(ステップS716)、そのデータを示すアルファ値分布設定コマンドをVDP109に送信する(ステップS717)。また、ボタン有効期間内においてチャンスボタン300が押される度に予め設定されているアルファ参照値を更新していき(ステップS712〜S715)、そして、アルファ参照値と比較関数とを決定して、それらを示すテスト実行コマンドをVDP109に送信する(ステップS718,S710)。また、図柄制御用CPU101aは、各種更新対象指令処理(ステップS696)において、予告演出で表示するキャラクタの部品画像を特定し(ステップS741)、その部品画像の画像データの転送を指示するための自動転送表示コマンドをVDP109に送信する(ステップS750)。
VDP109は、自動転送表示コマンドの受信にもとづいて、自動転送制御処理(ステップS907)にてCGROM83からVRAM84の自動転送エリア155Bへのキャラクタの画像データの転送を実行する。また、アルファ値分布設定コマンドの受信にもとづいて、当該コマンドで特定されるキャラクタの画像データ(既に自動転送エリア155Bに格納されている)に対してアルファテスト描画処理(ステップS1007)を実行する。なお、このとき、キャラクタの画像データに対しては自動転送表示処理(ステップS1005)は実行されない。アルファテスト用描画処理において、VDP109は、自動転送エリア155Bに格納されているキャラクタの画像データを一時展開領域155Cに書き込むとともに、各画素のアルファ値を設定する(ステップS1101,S1102)。続いて、テスト実行コマンドの受信にもとづいて、VDP109は、アルファテスト処理(ステップS1009)を実行する。具体的には、以下のような処理が行われる。
例えば、人物のキャラクタ画像の各画素のアルファ値として、上下左右方向にアルファ値が0.2の画素とアルファ値が0.4の画素とアルファ値が0.6の画素とが順番に並ぶように各画素のアルファ値を設定する。そして、図柄制御用CPU101aは、テスト実行コマンドの内容にもとづいて、あらかじめ例えば0.7に設定されていたアルファ参照値(テスト値)を、チャンスボタン300がオンになるごとに、ステップS1847にて0.7から0.5に更新し、0.5から0.3に更新し、0.3から0.1に更新する。
ステップS1111にてアルファ値とアルファ参照値(テスト値)の比較を行うとき、チャンスボタン300が押される前は、テスト値が0.7であるので、キャラクタ画像の各画素のアルファ値は全てアルファ参照値以下となる。このとき、比較関数がアルファ値がアルファ参照値以上なら成立するとするものであれば、キャラクタ画像の全ての画素の色データが描画領域に描画しない(表示対象画素でない)と判定される(ステップS1112)。よって、キャラクタ画像は全く表示されないことになる。
チャンスボタン300が1回押されたとき、テスト値が0.7から0.5に更新されているので、キャラクタ画像の画素のうち1/3の画素だけアルファ参照値以上となる。従って、キャラクタ画像の1/3の画素の色データが描画領域に描画すると判定される(ステップS1112)。よって、キャラクタ画像の1/3の画素だけ表示される(2/3の画素が間引かれて表示されない)ことになる。このとき、表示画面にキャラクタ画像がうっすらと表示されている状態である。
チャンスボタン300が2回押されたとき、テスト値が0.5から0.3に更新されるので、キャラクタ画像の画素のうち2/3の画素がアルファ参照値以上となる。従って、キャラクタ画像の画素のうち2/3の画素の色データが描画領域に描画すると判定される(ステップS1112)。よって、キャラクタ画像の2/3の画素が表示されることになる。このとき、表示画面にキャラクタ画像が少し濃く表示されている状態である。
チャンスボタン300が3回押されると、テスト値が0.3から0.1に更新されるので、キャラクタ画像の各画素のアルファ値は全てアルファ参照値以上となる。従って、キャラクタ画像の全ての画素の色データが描画領域に描画すると判定される(ステップS1112)。よって、キャラクタ画像は完全に表示された状態となる。
次に、アルファ合成(アルファブレンド処理)について説明する。アルファ合成とは、2つの画像A,BをVRAM84上で合成するときに以下の数式を用いて合成するものである。
画像Aの色データ×(1.0−α)+画像Bの色データ×α
ここで、αは、画像Bのブレンド率(透明度)である。
例えば、画像Aの色が黄色である場合には、画像Aの色データは(rgb:1.0、1.0、0.0)となり、画像Bの色が空色がかった青色である場合には、画像Bの色データは(rgb:0.0、0.5,1.0)となる。また、画像Bのブレンド率(透明度)が0.5の場合には、α=0.5となる。これらの値を上記の数式に代入すると、rgb(1.0、1.0、0.0)×(1.0−0.5)+rgb(0.0、0.5,1.0)×0.5=rgb(0.5、0.5,0.0)×(rgb:0.0、0.25,0.5)=rgb(0.5、0.75、0.5)となる。
半透明(ブレンド率α=0.5)の画像A(黄色(rgb:1.0、1.0、0.0))に半透明(ブレンド率α=0.5)の画像B(空色がかった青色(rgb:0.0、0.5,1.0))が重ねて表現された色(黄色がかった半透明の空色(0.5、0.75、0.5))となる。
図125に示す例では、経過時間T1における飾り図柄「6」の画像データのブレンド率は、0.8で、飾り図柄「7」の画像データのブレンド率は、0.2である。また、飾り図柄「6」の画像データの拡大率は、1で、飾り図柄「7」の画像データの拡大率は、0.8である。このとき、飾り図柄「6」の画像の色が緑色(rgb:0.0、1.0、0.0)で、飾り図柄「7」の画像の色が赤色(rgb:1.0、0.0、0.0)であれば、合成画像は、原寸大の飾り図柄「6」の画像と、5分の1の大きさまで縮小された飾り図柄「7」とが重なり合った画像となり、この重なり合った部分の色は、透明度が0.8にまで低下した緑色と、透明度が0.2にまで低下した赤色とを混ぜ合わせたやや黄色がかった緑色(rgb:0.2、0.8、0.0)となる。また、飾り図柄「6」の重なり合っていない部分の色は、透明度が0.8にまで低下した緑色(rgb:0.0、0.8、0.0)となり、飾り図柄「7」の重なり合っていない部分の色は、透明度が0.2にまで低下した赤色(rgb:0.2、0.0、0.0)となる。このように、ブレンド率は、その画像のアルファ合成における透明度α値を示すものとなっている。なお、この実施の形態において、R,G,B信号の各々は、256段階の電圧の大小(8ビット)表現される。また、飾り図柄「6」および「7」以外の部分は透明とするが、別途指定した背景色の画像を表示するようにしてもよい。
以上に説明したように、この実施の形態では、遊技機への電源投入が開始されてからタイマ割込設定を行うまでに乱数回路503の初期設定(乱数回路設定処理)を行うとともに、乱数回路設定処理において、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづく値を乱数の初期値として設定する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。また、乱数のランダム性を向上させることができるので、乱数生成のタイミングを遊技者や遊技店に認識されにくくすることができ、無線信号を用いた取り込み信号を遊技機に対して発生させることによって、大当り状態などの特定遊技状態への移行条件を不正に成立させられてしまうことを防止することができる。
また、この実施の形態では、遊技制御処理に用いる各乱数のうち、大当りの種類を決定するための判定用乱数(大当り種別決定用乱数)として、ソフトウェア乱数を用いる。そして、大当りとするか否かを決定するための大当り判定用乱数のみを乱数回路503を用いて発生させる。例えば、大当り判定用乱数に加えて、大当り種別決定用乱数も乱数回路503を用いて発生させるようにすると、乱数回路503を用いて複数種類の乱数を発生させることとなり、乱数回路503の構成が必要以上に複雑化してしまう。この実施の形態では、大当り判定用乱数のみを乱数回路503を用いて発生させるので、乱数回路503の回路構成が複雑化することを防止することができる。
また、この実施の形態では、シリアル通信回路505が割り込み要求を行った場合に、通信エラーを割込原因とする場合の割込処理を優先的に実行し、通信を禁止状態に制御する。そのため、通信エラーが発生した状態で遊技機に搭載されている払出制御基板37の払出制御用マイクロコンピュータ370と通信を行うことを防止できる。よって、通信エラーによる誤動作を防止することができる。
例えば、シリアル通信回路505においてオーバーランが発生すると、受信データレジスタ711内の受信データが読み込まれる前に受信用シフトレジスタ713に次の受信データが格納されてしまうので、受信データレジスタ711の内容が上書きされてしまいCPU56が受信データを正しく読み込めなくなってしまう。そのため、各制御基板が搭載するマイクロコンピュータと正しく通信を行えなくなり、遊技制御用マイクロコンピュータ560が誤動作をする原因となる。この実施の形態では、オーバーランが発生すると、シリアル通信回路505が通信エラー時割込要求を行い、CPU56が通信を禁止状態に制御する。そのため、オーバーランの発生によって遊技制御用マイクロコンピュータ560が誤動作することを防止することができる。
また、例えば、シリアル通信回路505においてノイズエラーが発生すると、ノイズによって正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、ノイズエラーが発生すると、シリアル通信回路505が通信エラー時割込要求を行い、CPU56が通信を禁止状態に制御する。そのため、ノイズエラーの発生によってCPU56が誤動作することを防止することができる。
また、例えば、シリアル通信回路505においてフレーミングエラーが発生すると、受信データのストップビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、フレーミングエラーが発生すると、シリアル通信回路505が通信エラー時割込要求を行い、CPU56が通信を禁止状態に制御する。そのため、フレーミングエラーの発生によってCPU56が誤動作することを防止することができる。
また、例えば、シリアル通信回路505においてパリティエラーが発生すると、受信データの各データビットまたはパリティビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、CPU56が誤動作をする原因となる。この実施の形態では、パリティエラーが発生すると、シリアル通信回路505が通信エラー時割込要求を行い、CPU56が通信を禁止状態に制御する。そのため、パリティエラーの発生によってCPU56が誤動作することを防止することができる。
また、この実施の形態では、シリアル通信回路505において通信エラーが発生すると、払出制御基板37が搭載する払出制御用マイクロコンピュータ370への賞球個数コマンドの送信と、払出制御用マイクロコンピュータ370からの賞球ACKコマンドの受信とを禁止するように制御する。例えば、通信エラーの発生時に賞球個数コマンドを払出制御基板37が搭載する払出制御用マイクロコンピュータ370に送信してしまうと、誤った賞球個数コマンドが送信されてしまう可能性がある。そのため、誤った賞球個数コマンドに示される賞球数にもとづいて誤った数の遊技球が払い出されてしまう可能性があり、遊技結果に影響を及ぼす虞がある。この実施の形態では、通信エラーが発生すると、払出制御基板37が搭載する払出制御用マイクロコンピュータ370への賞球個数コマンドの送信を禁止するように制御するので、誤った賞球コマンドにもとづいて誤った数の遊技球の払出が行われ、遊技結果に影響を及ぼしてしまうことを防止することができる。
なお、シリアル通信回路505において通信エラーが発生すると、各制御基板が搭載するマイクロコンピュータからのデータの受信のみを防止するようにしてもよい。例えば、遊技制御手段と演出制御手段との間でシリアル通信を行う場合を考える。この場合、遊技制御用マイクロコンピュータ560と演出制御用マイクロコンピュータとの間で行われる通信は、遊技制御用マイクロコンピュータ560から演出制御用マイクロコンピュータへの演出制御コマンドの送信だけであり、演出制御用マイクロコンピュータから遊技制御用マイクロコンピュータ560へのコマンドの送信はない。すなわち、遊技制御用マイクロコンピュータ560と演出制御用マイクロコンピュータとの間では、一方向だけの通信が行われる。また、遊技制御用マイクロコンピュータ560から音/ランプ制御基板80bに誤った演出制御コマンドが送信されたとしても、可変表示装置9に誤った演出用の表示が行われるだけであり、誤った払出処理を実行してしまう場合と比較して、遊技結果に与える影響が小さい。
また、この実施の形態では、乱数回路503の反転回路532が極性を反転させた反転クロック信号SI2(または、遅延回路が遅延させた遅延クロック信号)を生成し、反転クロック信号SI2に同期して乱数の記憶を指示するためのラッチ信号を出力する。そのため、乱数を更新するタイミングと乱数値記憶回路531に乱数を記憶させるタイミングとをずらすことができ、生成した乱数を安定して確実に記憶させることができる。
なお、本実施の形態では、「シリアル通信回路505がCPU56に割り込み要求を行う」という表現を用いたが、具体的には、データの送受信や通信エラーの発生などの割込要因が発生したときに、シリアル通信回路505の割り込み制御回路714がステータスレジスタA705の対応するビット(割込要因に対応するビット)に設定値をセットするとともに、CPU56に割り込み信号(内部IRQ)を出力することによって、シリアル通信回路505による割り込み要求が行われる。例えば、通信エラーが発生したときに、シリアル通信回路505の割り込み制御回路714がステータスレジスタA705の対応するビット(通信エラーに対応するビット0〜3)に設定値をセットするとともに、CPU56に割り込み信号を出力することによって、シリアル通信回路505による通信エラー時の割り込み要求が行われる。
また、CPU56が、メイン処理にて電源断信号を確認し、電源断信号がオフ状態でないときは所定時間(タイムアウト時間)おいてから再度電源断信号を確認するように構成されているので、比較的電圧が安定した状態で電源断信号の状態を監視することができる。そして、ソフトウェアによる処理やハードウェアによる回路を特別に設けることなく、所定期間後の電源断信号の監視を実行しているので、プログラム容量が大きくせずに、また特別な回路を設ける分のコストをかけずに、所定期間後の電源断信号の監視する構成を実現することができる。
また、電源断信号がオン状態になったときに、電源断処理(電力供給停止時処理)を実行し、電力供給停止時処理において、制御状態を復旧させるためのデータとしてRAM55の記憶内容にもとづいてチェックデータを作成してRAM55に格納する処理を実行する。そして、電力供給が再開されたときに、RAM55に格納されているチェックデータにもとづいてRAM55の記憶内容が正常であるか否かの判定を行い、正常であると判定されたことを条件に、RAM55の記憶内容にもとづいて制御状態を電力供給停止前の状態に復旧させる復旧処理を実行するように構成されている。従って、RAM55に格納されている正常な記憶内容にもとづいて制御状態を復旧させることができる。
また、電力供給が開始されたときに、メイン処理の一部においてソフトウェア遅延処理を実行するように構成されているので、主基板31以外の他の制御基板におけるマイクロコンピュータの方が早く制御可能状態にすることができる。その結果、遊技制御用マイクロコンピュータ560以外のマイクロコンピュータが遊技制御用マイクロコンピュータ560からのコマンドを取りこぼしてしまうという事態が発生してしまうのを防止することができる。従って、演出制御のマイクロコンピュータ(図柄制御用CPU101aなど)は、復旧コマンドや演出制御コマンドを確実に受信することができ、電力供給停止時の遊技状態から確実に遊技演出を実行することができるようになり、また、払出制御用マイクロコンピュータ370は、賞球コマンドを確実に受信することができるので、払い出すべき賞球を確実に払い出すことができるようになる。
また、ソフトウェア遅延処理中に電源断信号を確認する処理を行っているので、RAM55の記憶内容が破壊され、電力供給停止時の状態に制御状態を復旧させることができなくなるのを防止することができる。すなわち、電力供給が開始され、ソフトウェア遅延処理の実行前または実行中にVSLが+22V以上に上昇し、ソフトウェア遅延処理中に電力供給が停止されるような場合において、仮にソフトウェア遅延処理中に電源断信号を確認しない構成であれば、ソフトウェア遅延処理後に実行される電源断処理(ステップS18;なお、タイマ割込処理において実行される電源断処理であってもよい。)において、チェックサムを作成してRAM55のデータを保存する処理を実行する前に(あるいは保存しないで)電力供給が完全に停止してしまうことも生じうる。しかし、ソフトウェア遅延処理中に電源断信号を確認する処理を行う構成であれば、電源電圧の低下に応じて電源断信号がオン状態となったことを認識することができ、電源断信号のオン状態を確認したときは、待機状態(無限ループ)に移行される。このとき、まだRAM55がアクセス可能に設定されていないため(ステップS6参照)、待機状態において電力供給が完全に停止してもRAM55の記憶内容が破壊されない。よって、RAM55のデータを確実に保護することができることになる。
また、確変状態に移行された後の変動回数が100回に達したときに、遊技状態として高確率潜伏状態に制御するように構成されているので、遊技者に高確率状態が継続されているかどうかについて興味を持たせることができる。また、遊技制御用マイクロコンピュータ560は、電力供給が停電状態から回復したときに、メイン処理において、演出用のマイクロコンピュータ(音/ランプ制御用マイクロコンピュータ100bや図柄制御用マイクロコンピュータ100a)に対して、制御状態を復旧させるための復旧コマンドとして通常表示コマンド、特別表示コマンドおよび高確率潜伏表示コマンドのいずれかを送信し、演出用のマイクロコンピュータは復旧コマンドにもとづいて遊技状態に応じた遊技演出を実行するように構成されているので、停電前の遊技状態に応じた遊技演出を演出用のマイクロコンピュータに実行させることができ、遊技者に不信感を与えなくすることができる。また、故意に電力供給が停止されるような不正行為が行われたとしても、電力供給回復時に潜伏高確率状態が不正者に悟られてしまうことはない。
なお、演出用のマイクロコンピュータは、変動パターンコマンドにより遊技状態を判定し、判定結果である現在の遊技状態を所定の記憶領域に記憶しているが、停電が発生したときは、演出用のマイクロコンピュータにおけるRAMは電源バックアップされていないので、電力供給回復時に遊技制御用マイクロコンピュータ560が演出用のマイクロコンピュータに対して復旧コマンドを送信する必要がある。なお、上記の実施の形態では、演出用のマイクロコンピュータは、変動パターンコマンドにもとづいて遊技状態を判定していたが、このような構成に限られず、例えば、遊技状態が変更(移行)される度に、遊技制御用マイクロコンピュータ560が遊技状態の変更を示すコマンドを演出用のマイクロコンピュータに送信する構成であってもよい。
また、大入賞口が2つ設けられ、大当り遊技が実行されるときは、2つの大入賞口のうちいずれか一方の大入賞口が開放され、そして、大入賞口が開放される前にいずれの大入賞口が開放されるかについて大入賞口表示灯によって遊技者に報知するとともに、可変表示装置9などの演出装置を用いて遊技者に報知するように構成されている。従って、遊技者がいずれの大入賞口が開放されるかについて認識できずに不利益を受けてしまうのを防止することができる。
また、図柄制御用CPU101aがCGROM83からVRAM84の自動転送エリア155Bへの画像データ(頻繁に使用しない画像データ)の転送の指示とVRAM84の自動転送エリア155Bからフレームバッファ156への画像データの転送の指示とをVDP109に行う構成であると、図柄制御用CPU101aがVDP109に対して2回指示を行わなければならないことになり、制御負担が増加してしまうことになる。しかし、この実施の形態では、使用頻度の低い画像データについて、図柄制御用CPU101aは、CGROM83の読出アドレスとフレームバッファ156の書込アドレスとを1回指定するだけで、自動的にVDP109がCGROM83からVRAM84への画像データの転送やVRAM84の自動転送エリア155Bからフレームバッファ156への画像データの転送(書込み)を行うので、図柄制御用CPU101aの制御負担が軽減されている。また、全ての画像データを上記のように自動的に転送させるように構成されている場合には、図柄制御用CPU101aの制御負担は軽減されるが、使用頻度の高い画像データがCGROM83からVRAM84に頻繁に転送され、無駄な処理が多くなってしまう。しかし、この実施の形態によれば、使用頻度の高い画像データはCGROM83からVRAM84への転送が不要なので、図柄制御用CPU101aの制御負担を軽減させるとともに、無駄な処理を実行しないようにすることができる。
なお、いずれの大入賞口が開放されるかについて大入賞口表示灯によって報知するタイミングは、大当り図柄が停止表示されているタイミングとしていたが、このような構成に限られず、大入賞口が開放される直前や大入賞口が開放された後(開放中)などであってもよい。また、演出用のマイクロコンピュータがファンファーレコマンドにもとづいて演出装置(可変表示装置9やランプ/LED、スピーカ27)を用いて大当りの種別を報知することにより、いずれの大入賞口が開放されるかについて報知するように構成されていたが、ファンファーレコマンド以外の演出制御コマンドにもとづいて、いずれの大入賞口が開放されるかについて報知するようにしてもよい。例えば、大当りの種別を指定可能な(大当りの種別に応じて分けられている)飾り図柄停止指定コマンド、大入賞口開放中表示コマンドまたは大入賞口開放後表示コマンドを送信し、演出用のマイクロコンピュータがそれらの演出制御コマンドにもとづいて、大入賞口の開放直前や開放後などに大当りの種別を報知することにより、いずれの大入賞口が開放されるかについて報知するようにしてもよい。また、大当りの種別に対応させて大入賞口のいずれが開放されるかについて報知するようにしていたが、大当りの種別と大入賞口の開放位置とを対応させないようにしてもよい。この場合は、いずれの大入賞口が開放されるかについて可変表示装置9の画面に表示するなどの方法によって遊技者に大入賞口の開放位置を報知するようにする。
また、上記の実施の形態では、大当りの種別によって予め開放される大入賞口が決まっていたが、大当りが発生する毎に乱数を用いるなどの方法によって開放される大入賞口を決定するように構成されていてもよい。また、ラウンド毎に異なる大入賞口を開放するように構成してもよく、この場合も、乱数を用いるなどの方法によって開放される大入賞口を決定する。
また、上記の実施の形態では、ウォッチドッグタイマ60は、遊技制御用マイクロコンピュータ560に内蔵されていたが、遊技制御用マイクロコンピュータ560に外付けされていてもよい。この場合、ウォッチドッグタイマ60のカウント値をクリアする処理において、WDTクリアレジスタ62に所定のデータを設定する代わりに、出力ポートから外付けのウォッチドッグタイマにクリア信号を出力するように構成されていればよい。
また、この実施の形態では、飾り図柄の可変表示中において、飾り図柄を複数の領域(例えば、左領域、中領域、右領域)に分割し、分割した領域の画素の画像データ(色データ)に対応付けて所定のアルファ値の密度を異ならせて設定し、アルファ値と比較されるテスト値を段階的に変化させ、アルファ値とテスト値とを比較し、比較結果に応じて各画素を描画するか否かを判定し、描画すると判定された画素の画像データをフレームバッファに描画するように構成されている。従って、飾り図柄の可変表示において飾り図柄の画像をグラデーションをつけて段階的に変化させることができ、飾り図柄の可変表示における演出効果を向上させることができる。
また、図91に示すようにリーチが発生したときに、最終停止図柄の飾り図柄の画像をグラデーションをつけて段階的に変化させることにより、大当りに対する期待感を高めることができ、遊技の興趣を向上させることができる。
また、図91〜図93に示すように、前面に表示されている飾り図柄が段階的に消去されていくと、消去された箇所から次の飾り図柄が段階的に表示されていくように構成されているので、演出効果を向上させることができるとともに、特にリーチ状態のときに特定遊技状態に対する期待感を高めることができるようになる。
また、図92に示すようにリーチが発生したときに、最終停止図柄の飾り図柄の画像をグラデーションをつけて段階的に変化させるとともに、飾り図柄の画像を拡大/縮小させることにより、演出効果を向上させるとともに、大当りに対する期待感をより一層高めることができる。
また、遊技者が操作可能なチャンスボタン300が設けられ、予告演出の実行時において、チャンスボタン300が押される度に、図94に示すように予告用画像が段階的に表示されるように構成されているので、チャンスボタン300が押される前は予告用画像を表示させずに、チャンスボタン300が押される毎に段階的に予告用画像をカットインしていくように表示させることができるようになり、予告演出の演出効果を向上させることができる。また、アルファテスト処理にてそのような予告用画像のカットイン表示を実現しているので、複雑な制御を必要をせずに実現することができる。
なお、上記の実施の形態において、VRAM84の固定アドレスエリア155Aや自動転送エリア155Bに格納された画像データを一時展開領域155Cに一時展開するときに、画像データの各画素にアルファ値を設定していたが、画像データを転送する処理(図119の事前転送処理および図120の自動転送制御処理)を実行するとき(CGROM83から画像データを読み出してVRAM84に転送するとき)に、画像データの各画素にアルファ値を設定して、VRAM84の固定アドレスエリア155Aや自動転送エリア155Bに展開するようにしてもよい。この場合は、固定アドレスエリア155Aや自動転送エリア155Bに格納されている画像データの各画素にアルファ値が既に設定されているので、一時展開領域155Cに画像データを一時展開することなくフレームバッファに画像データを直接展開するようにしてもよい。このような構成は、ステップS1023,S1043でフレームバッファ156の書込アドレスを特定し、ステップS1024,S1044で画像データをフレームバッファ156に直接書き込むことにより実現可能である。
また、CGROM83に格納されている部品画像の各画素のアルファ値を示すアルファ値分布設定データを用いて画像データ(RGBの色データ)にアルファ値が設定されていた。しかし、図柄制御用CPU101aが部品画像の各画素のアルファ値を指定し、VDP109が、図柄制御用CPU101aによって指定された各画素のアルファ値を画像データ(RGBの色データ)に設定するようにしてもよい。また、あらかじめ各画素の色データに対応つけてアルファ値が設定された画像データがCGROM83に格納されていてもよい。この場合、各画素の色データが同じ部品画像の画像データについて、アルファ値の異なる複数の画像データを格納しておく必要がある。
また、上記の実施の形態では、図柄制御用CPU101aが、各種対象指令処理において、更新対象の部品画像がVRAM84の固定アドレスエリア155Aに画像データを事前に転送する対象となる部品画像であるか否かの判定を行い(ステップS742)、事前転送の対象となる部品画像である場合には(ステップS742のY)、VRAM84の固定アドレスエリア155Aにおける更新対象の部品画像の画像データの読出アドレスを特定してVDP109に指定する(ステップS743、S746)ように構成されていたが、このような構成に限られず、更新対象の部品画像が事前転送の対象となる部品画像であるか否かにかかわらず(ステップS742を実行せずに)、全ての更新対象の部品画像の画像データに対して、CGROM83における更新対象の部品画像の画像データの読出アドレスを特定してVDP109に指定する(ステップS747、S750)ように構成されていてもよい。この場合、例えば、VDP109は、事前転送処理において、CGROM83から画像データを読み出して固定アドレスエリア155Aに格納するときに、CGROM83の読出アドレスと固定アドレスエリア155Aの書込アドレスとを対応付けてインデックステーブルに記憶しておく。そして、自動転送制御処理において、CGROM83の読出アドレスを特定したときに(ステップS961)、特定した読出アドレスに対応付けて記憶されている固定アドレスエリア155Aの書込アドレスが存在するか否かを判定し、書込アドレスが存在するときは、自動転送表示処理において、固定アドレスエリア155Aの書込アドレスから画像データを読み出して一時展開領域155Cに書き込むようにする(ステップS1044)。この場合、固定アドレス指定表示処理は不要となる。従って、図柄制御用CPU101aの処理負担を軽減させることができる。
また、VDP109は、自動転送制御処理において、CGROM83から画像データを読み出して自動転送エリア155Bに格納するときに、CGROM83の読出アドレスと自動転送エリア155Bの書込アドレスとを対応付けてインデックステーブルに記憶しておき、その後の自動転送制御処理において、CGROM83の読出アドレスを特定したときに(ステップS961)、特定した読出アドレスに対応付けて記憶されている自動転送エリア155Bの書込アドレスが存在するか否かを判定し、書込アドレスが存在するときは、自動転送表示処理において、自動転送エリア155Bの書込アドレスから画像データを読み出して一時展開領域155Cに書き込むようにしてもよい(ステップS1044)。このような構成によれば、低頻度の画像データについてのCGROM83からVRAM84への転送処理の負担を軽減することができる。
また、上記の実施の形態では、フレームバッファ156はVRAM84の所定の記憶領域として設けられていたが、VRAM84とは別の記憶手段であってもよい。また、フレームバッファ156がVRAM84と別の記憶手段である場合は、VRAM84の所定の記憶領域として設けられていた一時展開領域155Cも、フレームバッファ156が設けられている別の記憶手段に設けるようにしてもよい。
なお、図柄制御用CPU101aの起動時以外の事前転送処理(ステップS1814、S1867にもとづく事前転送処理)の実行前にも、VRAM84の自動転送エリア155Bの設定処理(ステップS772の記憶領域設定指令処理)を実行するように構成されていてもよい。このような構成によれば、データ化け等により自動転送エリア155Bの先頭アドレスや末尾アドレスを示すレジスタ値が変化してしまった場合でも、そのレジスタ値を復旧させることができる。その結果、自動転送エリア155Bに転送されるはずのデータが固定アドレスエリア155Aなどに転送されてしまうことを防止することができる。
また、遊技状態が通常遊技状態(潜伏確変状態も含む)のときと確変状態のときとで飾り図柄の種類が異なるように構成されていてもよい。例えば、通常遊技状態のときは「1」〜「9」の数字の図柄で、確変状態のときは「A」〜「I」のアルファベットの図柄であるとしてもよい。このような構成の場合に、図柄制御用CPU101aは、停電からの復旧時に受信する復旧コマンドにもとづいて、停電発生時の遊技状態を確認し、確認した遊技状態に応じた飾り図柄の画像データを事前転送する制御を実行する。また、遊技状態が通常遊技状態(潜伏確変状態も含む)のときと確変状態のときとで背景の画像が異なるように構成されている場合も、図柄制御用CPU101aは、停電からの復旧時に受信する復旧コマンドにもとづいて、停電発生時の遊技状態を確認し、確認した遊技状態に応じた背景の画像データを事前転送する制御を実行する。
実施の形態2.
実施の形態1では、演出装置を制御するマイクロコンピュータを搭載した制御基板として音/ランプ制御基板80bと図柄制御基板80aとが設けられ、主基板31の遊技制御用マイクロコンピュータ560が音/ランプ制御基板80bに搭載されている音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドを送信し、音/ランプ制御用マイクロコンピュータ100bが図柄制御基板80aに搭載されている図柄制御用マイクロコンピュータ100aに演出制御コマンドに応じたコマンドを送信するように構成されていた。しかし、この実施の形態2では、遊技制御用マイクロコンピュータ560が図柄制御用マイクロコンピュータ100aに演出制御コマンドを送信し、図柄制御用マイクロコンピュータ100aが音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドに応じたコマンドを送信する構成とされている。
図126は、中継基板77、音/ランプ制御基板80bおよび図柄制御基板80aの他の回路構成例を示すブロック図である。図126に示す回路構成を用いる場合、例えば、図柄制御基板80aが搭載する図柄制御用マイクロコンピュータ100aは、ステップS1851〜S1856と同様の処理に従って、変動パターンコマンドにもとづいて、演出内容(予告演出を行うか否かや、予告演出の種類)を決定する。そして、図柄制御用マイクロコンピュータ100aは、決定した演出内容に従って、VDP109に、可変表示装置9を用いた予告演出を行わせる。また、図柄制御用マイクロコンピュータ100aは、決定した演出内容を示す演出内容指定コマンドを生成して、音/ランプ制御基板80bに送信するようにしてもよい。そして、音/ランプ制御基板80bが搭載する音/ランプ制御用マイクロコンピュータ100bは、受信した演出内容指定コマンドに示される演出内容に従って、各ランプ25,28a,28b,28cの表示制御を行ったり、音出力装置27の音出力制御を行ってもよい。
また、この実施の形態では、各演出装置を別々の制御基板を用いて制御する場合として、音/ランプ制御基板80bと図柄制御基板80aとを用いる場合を説明したが、他の制御基板の組合せを用いて各演出装置を制御してもよい。例えば、音出力装置27を制御する音制御基板と、各ランプを制御するランプ制御基板と、可変表示装置9を制御する図柄制御基板とを用いて、各演出装置を制御してもよい。この場合、例えば、主基板31からの演出制御コマンドを、まず音制御基板で受信し、音制御基板に搭載される音制御用マイクロコンピュータが、受信した変動パターンコマンドにもとづいて演出内容(予告演出を行うか否かや、予告演出の種類)を決定してもよい(図88に示す処理と同じ内容の処理)。そして、音制御用マイクロコンピュータが、決定した演出内容を示すコマンドをランプ制御基板と図柄制御基板に送信するようにしてもよい(ランプ制御基板を介して図柄制御基板に送信する構成や図柄制御基板を介してランプ制御基板に送信する構成も含む)。また、音出力装置27および可変表示装置9を制御する音/図柄制御基板と、各ランプを制御するランプ制御基板とを用いて、各演出装置を制御してもよい。この場合、例えば、主基板31からの演出制御コマンドを、音/図柄制御基板で受信し、音/図柄制御基板に搭載される音/図柄制御用マイクロコンピュータが、受信した変動パターンコマンドにもとづいて演出内容を決定してもよい(図88に示す処理と同じ内容の処理)。そして、音/図柄制御用マイクロコンピュータが、決定した演出内容を示すコマンドをランプ制御基板に送信するようにしてもよい。なお、上記の制御基板の組み合わせに限られるわけではなく、主基板31から演出制御コマンドがランプ制御基板に送信され、ランプ制御基板から音/図柄制御基板にコマンドが送信される構成などであってもよい。
また、音制御用マイクロコンピュータが、表示結果指定コマンドにもとづいて飾り図柄のずれ数を特定し、変動パターンコマンドに示される基本時間と、飾り図柄のずれ数とにもとづいて、飾り図柄の変動時間を特定してもよい。そして、音制御用マイクロコンピュータは、決定した演出内容や変動時間を含むコマンドを生成し(または演出制御コマンドに付加し)、ランプ制御基板や図柄制御基板に送信してもよい。なお、主基板31からの演出制御コマンドを、まずランプ制御基板や図柄制御基板で受信し、ランプ制御基板や図柄制御基板が搭載するマイクロコンピュータが、演出内容を決定したり変動時間を特定してもよい。
実施の形態3.
上記に示した各実施の形態では、CPU56が通信エラー時の割込処理を他の割込処理に優先して実行する場合を説明したが、通信エラー時の割込処理以外の割込処理(例えば、受信時の割込処理)を優先して実行するようにしてもよい。以下、受信時の割込処理を優先して実行する第3の実施の形態を説明する。
なお、本実施の形態において、第1の実施の形態と同様の構成および処理をなす部分についてはその詳細な説明を省略し、主として第1の実施の形態と異なる部分について説明する。
この実施の形態では、CPU56は、図46および図47と同様の処理に従ってメイン処理を実行する。メイン処理において、ステップS1からステップS15bまでの処理(ステップS81〜S90,S91〜S93までの処理を含む)は、第1の実施の形態で示したそれらの処理と同様である。また、ステップS16からステップS20までの処理は、第1の実施の形態で示したそれらの処理と同様である。
ステップS15bのシリアル通信回路設定処理を実行し、シリアル通信回路505を初期設定すると、CPU56は、シリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定する(ステップS15c)。この実施の形態では、あらかじめ指定情報においてシリアル通信回路505が受信データを受信したことを割込原因とする割込処理が指定されている。そして、CPU56は、指定情報にもとづいて、受信データを受信したことを割込原因とする割込処理を優先して実行するように初期設定する。すなわち、この実施の形態では、図48に示す割込処理優先順位テーブルにおいて、シリアル通信回路505において通信エラーが発生したことを割込原因とする割込処理を優先して実行するようにデフォルトで設定されているが、CPU56は、ユーザによって設定された指定情報にもとづいて、受信データを受信したことを割込原因とする割込処理を優先して実行するように割込処理の優先順位を変更する。この場合、例えば、CPU56は、受信データを受信したことを割込原因とする割込処理を優先して実行する旨を示す受信時割込優先実行フラグをセットする。
遊技制御用マイクロコンピュータ560のCPU56は、メイン処理におけるステップS17からステップS20までのループ処理において、割り込み許可状態である間にシリアル通信回路505からの割り込み要求があると、図77に示す処理に従って、シリアル通信回路505が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。
CPU56は、いずれの割込処理を優先して実行する旨が初期設定されているか否かを判断する。例えば、CPU56は、いずれの割込処理を優先して実行する旨のフラグがセットされているか否かを判断する。この実施の形態では、CPU56は、受信時割込優先実行フラグがセットされていることにもとづいて、受信データを受信したことを割込原因とする割込処理を優先して実行する。
シリアル通信回路505から割り込み要求があると、CPU56は、シリアル通信回路505のステータスレジスタA705の各ビットを確認し、割り込み原因を特定する。この実施の形態では、CPU56は、ステータスレジスタA705のビット5を優先的に確認し、割り込み原因を特定する。すなわち、CPU56は、シリアル通信回路505が受信データを受信したことを割り込み原因として割り込み要求したか否かを、他の割り込み原因(通信エラーの発生または送信データの送信完了)に優先して判断する。ステータスレジスタAのビット5が「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505が受信データを受信したことであると特定する。
割り込み原因がシリアル通信回路505が受信データを受信したことであると特定すると、CPU56は、図77(b)に示す受信時割込処理を優先して実行する。この場合、CPU56は、シリアル通信回路505が受信データを受信していることを示す受信時割込フラグをセットする(ステップS42)。
以上に説明したように、この実施の形態では、遊技制御用マイクロコンピュータ560は、メイン処理において、割込許可状態に設定する前に、割込処理の優先順位を初期設定する。そのため、複数種類の割込原因に対応する割込処理のうち、優先して実行させるべき割込処理を確実に実行することができる。また、優先して実行させる割込処理を初期設定できるので、遊技制御用マイクロコンピュータ560に実行させるプログラムの自由度を向上させることができる。
例えば、賞球処理における受信処理(例えば、ステップS1234の賞球ACK待ち処理)において、ステータスレジスタA705の各ビットを確認し、シリアル通信回路505で通信エラーが発生しているか否かを判断するようなプログラムを組んでいる場合、通信エラーの発生を割込原因とする割込処理を実行しなくても、通信エラーの発生時にコマンドを受信しないように制御できる。従って、受信処理において通信エラーの発生を確認するようなプログラムを組んでいる場合には、データを受信したことを割込原因とする割込処理を優先して実行することによって、遊技制御用マイクロコンピュータ560のCPU56に実行させるプログラムの自由度を向上させることができる。
なお、本実施の形態では、「シリアル通信回路505がCPU56に受信時割り込み要求を行う」という表現を用いたが、具体的には、割込要因(本例では、データ受信)が発生したときに、シリアル通信回路505の割り込み制御回路714がステータスレジスタA705の対応するビット(データ受信に対応するビット5)に設定値をセットするとともに、CPU56に割り込み信号を出力することによって、シリアル通信回路505による受信時割り込み要求が行われる。
実施の形態4.
上記に示した各実施の形態では、CPU56が、シリアル通信回路505からの割り込み要求に対応する割込処理のうちいずれの割込処理に優先して実行するかを設定または変更する場合を説明したが、さらにタイマ割込とシリアル通信回路505からの割り込み要求とが同時に発生した場合に、いずれの割込処理を優先して実行するかを設定または変更できるようにしてもよい。以下、タイマ割込とシリアル通信回路505からの割り込み要求とのいずれを優先して割込処理を実行するかを設定または変更する第4の実施の形態を説明する。
なお、本実施の形態において、第1の実施の形態と同様の構成および処理をなす部分についてはその詳細な説明を省略し、主として第1の実施の形態と異なる部分について説明する。
まず、第4の実施の形態におけるメイン処理について第1の実施の形態の図46および図47を用いて説明する。
ステップS15bのシリアル通信回路設定処理を実行し、シリアル通信回路505を初期設定すると、CPU56は、タイマ割込の発生時に実行するタイマ割込処理、およびシリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定する(ステップS15c)。
例えば、CPU56は、各割込処理のデフォルトの優先順位を含む所定の割込処理優先順位テーブルに従って、各割込処理の優先順位を初期設定する。図127は、第4の実施の形態における割込処理優先順位テーブルの例を示す説明図である。この実施の形態では、CPU56は、図127に示す割込処理優先順位テーブルに従って、シリアル通信回路505において通信エラーが発生したことを割込原因とする割込処理を優先して実行するように初期設定する。すなわち、CPU56は、シリアル通信回路505からの割り込み要求による割込処理(本例では、通信エラー割込処理)を、タイマ割込処理に優先して実行するようにデフォルトで設定する。この場合、例えば、CPU56は、通信エラーが発生したことを割込原因とする割込処理を優先して実行する旨を示す通信エラー時割込優先実行フラグをセットする。
また、この実施の形態では、ステップS15cにおいて、図127に示す割込処理優先順位テーブルに従って割込処理の優先順位の初期設定が行われることによって、タイマ割込とシリアル通信回路505からの割り込み要求とが同時に発生した場合、シリアル通信回路505からの割り込み要求に対する割込処理を優先して行うことになる。
また、ユーザによって各割込処理のデフォルトの優先順位を変更することもできる。例えば、遊技制御用マイクロコンピュータ560は、ユーザ(例えば、遊技機の製作者)によって設定された割込処理を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、割込処理の優先順位を設定する。
例えば、あらかじめ記憶された指定情報においてタイマ割込処理が指定されている場合を説明する。この場合、CPU56は、指定情報にもとづいて、タイマ割込処理を、シリアル通信回路505からの割り込み要求に対する各割込処理(通信エラー時割込処理、受信時割込処理および送信完了割込処理)に優先して実行するように初期設定する。すなわち、図127に示す割込処理優先順位テーブルにおいて、シリアル通信回路505において通信エラーが発生したことを割込原因とする割込処理を優先して実行するようにデフォルトで設定されているが、CPU56は、ユーザによって設定された指定情報にもとづいて、タイマ割込処理を優先して実行するように割込処理の優先順位を変更する。この場合、例えば、CPU56は、タイマ割込処理を優先して実行する旨を示すタイマ割込優先実行フラグをセットする。
また、ステップS16からステップS20までの処理は、第1の実施の形態で示したそれらの処理と同様である。ステップS20で割込許可状態に設定されると、次にステップS17の処理が実行されて割込禁止状態とされるまで、タイマ割込またはシリアル通信回路505からの割り込み要求を許可する状態となる。そして、割込許可状態に設定されている間に、タイマ割込が発生すると、遊技制御用マイクロコンピュータ560は、後述するタイマ割込処理を実行する。また、割込許可状態に設定されている間に、シリアル通信回路505から割り込み要求が発生すると、遊技制御用マイクロコンピュータ560のCPU56は、後述する各割込処理(通信エラー割込処理や、受信時割込処理、送信完了割込処理)を実行する。また、本実施の形態では、ステップS17からステップS20までのループ処理の前にステップS15cを実行することによって、タイマ割込または割り込み要求を許可する状態に設定される前に、タイマ割込処理およびシリアル通信回路505からの割り込み要求による割込処理の優先順位を設定または変更する処理が行われる。
遊技制御用マイクロコンピュータ560のCPU56は、メイン処理におけるステップS17からステップS20までのループ処理において、割り込み許可状態である間にシリアル通信回路505からの割り込み要求があると、図77に示す処理に従って、シリアル通信回路505が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。また、CPU56は、メイン処理におけるステップS17からステップS20までのループ処理において、タイマ割込が発生すると、図56に示す処理に従ってタイマ割込処理を実行する。
この実施の形態では、タイマ割込とシリアル通信回路505からの割り込み要求が同時に発生した場合、CPU56は、いずれの割込処理を優先して実行する旨が初期設定されているか否かを判断する。例えば、CPU56は、いずれの割込処理を優先して実行する旨のフラグがセットされているか否かを判断する。例えば、CPU56は、タイマ割込優先実行フラグがセットされていることにもとづいて、タイマ割込処理を優先して実行する。
以上に説明したように、この実施の形態では、CPU56は、メイン処理において、割込許可状態に設定する前に、タイマ割込処理、およびシリアル通信回路505からの割り込み要求に対応する各割込処理の優先順位を初期設定する。そのため、タイマ割込処理や複数種類の割込原因に対応する割込処理のうち、優先して実行させるべき割込処理を確実に実行することができる。また、優先して実行させる割込処理を初期設定できるので、遊技制御用マイクロコンピュータ560のCPU56に実行させるプログラムの自由度を向上させることができる。
なお、上記の各実施の形態において、大当り種別として、2ラウンド確変大当り、2ラウンド時短大当り、7ラウンド通常大当り、15ラウンド通常大当り、15ラウンド確変大当りおよび15ラウンド時短大当りが設けられていたが、このような種別に限られるわけではない。例えば、大入賞口の開放時間が異なる大当りや、大当り中の大入賞口への1個の入賞に対する賞球個数が異なる大当りなどであってもよい。このような大当りも、大当り種別決定用乱数にもとづいて決定されることになる。
なお、図39に示す電源基板910の構成において、以下のような特徴的構成も開示されている。各基板に搭載されているマイクロコンピュータおよびウォッチドッグタイマ60の動作可能な駆動電圧値は+5Vであり、電源電圧が低下していくときにリセット信号がオフ状態になる(システムリセットがかかる)電圧値は+9Vであり、電源電圧が低下していくときに電源断信号がオン状態になる電圧値は+22Vである。ここで、AC+24Vの交流電圧が正常に供給されているときは、整流平滑回路915はVSL+30Vを出力し続ける。そして、電源監視回路920は、VSL+30Vを監視し、その電圧値が+22Vになったときに電源断信号をオン状態にする(出力する)。また、整流平滑回路915からVSL+30Vの電圧が供給されているときは、スイッチングレギュレータ924Bは、マイクロコンピュータ等の駆動電圧であるVCC+5Vを出力し続ける。なお、スイッチングレギュレータ924Bは、VSLの電圧値として+30V〜+7Vが供給されているときは、VCC+5Vを出力し続ける。従って、このときは、マイクロコンピュータ等は駆動可能な状態である。VSlが+5Vまで低下する前の+9Vでシステムリセットをかけるので、マイクロコンピュータが暴走するようなことがなくなり、RAMのデータが破壊されるようなことはない。また、VSL+22V〜+9Vの間に電源断処理におけるチェックサムの作成を終了させることができるので、RAMのデータが破壊されて復旧できなくなってしまう事態も発生することはない。
なお、上記の各実施の形態では、複数種類の演出装置(可変表示装置9やスピーカ27など)を複数の演出用のマイクロコンピュータ(図3に示す例では、音・ランプ制御用マイクロコンピュータ100bと図柄制御用マイクロコンピュータ100a)が制御するように構成されていたが、全ての演出装置を1つの演出用のマイクロコンピュータ(例えば演出制御用マイクロコンピュータ)が制御するように構成されていてもよい。
なお、上述した実施の形態では、以下の(1)〜(6)に示すような遊技機の特徴的構成も示されている。
(1)遊技制御用マイクロコンピュータは、数値更新手段が更新可能な数値データの所定の範囲が異なる乱数回路(例えば、12ビット乱数回路503aと16ビット乱数回路503b)を複数内蔵し、乱数回路初期設定手段は、初期設定において、遊技制御用マイクロコンピュータが内蔵する複数の乱数回路の中から使用可能な乱数回路を設定し(例えば、遊技制御用マイクロコンピュータ560がステップS151を実行する)、乱数回路初期設定手段により使用可能と設定された乱数回路以外の乱数回路の機能を停止させる乱数停止手段(例えば、遊技制御用マイクロコンピュータ560が、ステップS151で使用する乱数回路503を設定すると、使用しないように設定した方の乱数回路のカウンタ521がカウント値Cを更新しないように制御する部分)を備えるように構成されていてもよい。そのような構成によれば、更新可能な数値データの所定の範囲が異なる複数の乱数回路について、それぞれ使用可能とするか否かを設定するように構成されているので、使用する乱数回路だけを設定することによって、生成する乱数の値の範囲を適切に設定することができ、無駄に乱数を更新しないで済む。
(2)乱数回路初期設定手段は、初期設定において、数値データが更新される所定の範囲の最大値としての値が設定される数値最大値レジスタ(例えば、乱数最大値設定レジスタ535)に、数値更新手段により更新可能な数値データの範囲内において所定の最大値(例えば、乱数最大値)を設定する最大値設定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS152を実行する部分)と、最大値設定手段により設定された所定の最大値が、所定の下限値(例えば、12ビット乱数回路503aを設定した場合における「256」)以下であるか否かを判定する設定値判定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS153bを実行する部分)と、設定値判定手段によって数値最大値レジスタに設定された所定の最大値が所定の下限値以下であると判定されたときに、数値最大値レジスタに、数値更新手段により更新可能な数値データの範囲内の所定値(例えば、12ビット乱数回路503aを設定した場合における「4095」)を設定しなおす最大値再設定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS153cを実行する部分)とを含むように構成されていてもよい。そのような構成によれば、数値データが更新される所定の範囲の最大値としての値をあらかじめ設定するように構成されているので、タイマ割込処理の実行中に用いる乱数の範囲より大きい値の乱数を生成してしまうことを防止でき、乱数回路および遊技制御用マイクロコンピュータの処理負担を軽減することができる。また、設定された所定の最大値が所定の下限値以下である場合には、所定の最大値を設定しなおすように構成されているので、遊技制御用マイクロコンピュータの誤動作や、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、過度に小さい値が乱数の最大値として設定されてしまうことを防止することができる。
(3)遊技機は、所定周期のクロック信号を生成し、乱数回路に出力するクロック信号生成手段(例えば、クロック回路501)を備え、数値更新手段は、クロック信号を所定回数入力したことを条件に、数値データを更新し(例えば、クロック信号出力回路524が基準クロック信号CLKを16分周した乱数発生用クロック信号SIを入力すると、カウンタ521がカウント値Cを更新する部分)、乱数回路初期設定手段は、数値更新手段が数値データを更新する条件であるクロック信号の入力回数を設定する(例えば、遊技制御用マイクロコンピュータ560がステップS156を実行する)ように構成されていてもよい。そのような構成によれば、数値更新手段が数値データを更新する条件であるクロック信号の入力回数をあらかじめ設定するように構成されているので、乱数回路が生成する乱数のランダム性をより向上させることができる。
(4)遊技制御用マイクロコンピュータは、乱数回路初期設定手段によって設定される数値データの所定の初期値を、マイコン識別情報を用いて演算する数値演算手段(例えば、遊技用マイクロコンピュータにおけるステップS154bの処理を実行する際に、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバに所定値を加算して)演算値を求める部分)を含み、乱数回路初期設定手段は、数値演算手段による演算によって算出された値にもとづいて初期値を設定する(例えば、遊技用マイクロコンピュータがステップS154bの処理を実行する際に、求めた演算値をカウント値の初期値として設定する)ように構成されていてもよい。そのような構成によれば、マイコン識別情報を用いた演算によって算出された値にもとづいて初期値を設定するように構成されているので、乱数回路が生成する乱数のランダム性をより向上させることができる。そのため、マイコン識別情報を見ただけでは乱数の初期値を認識しにくくすることができ、セキュリティ性を向上させることができる。
(5)遊技機は、遊技領域における入賞領域に遊技媒体が入賞(例えば、特別可変入賞球装置20への遊技球の入賞)したことを検出して入賞検出信号(例えば、カウントスイッチ231,232の検出信号)を出力する入賞検出手段(例えば、カウントスイッチ231,232)を備え、乱数回路は、入賞検出手段からの入賞検出信号が入力されたことにもとづいて、数値更新手段が更新する数値データを乱数記憶手段に記憶させるためのラッチ信号を出力するラッチ信号出力手段(例えば、ラッチ信号生成回路533)を含み、ラッチ信号出力手段は、入賞検出手段から入賞検出信号が所定期間継続して入力されたことを条件(例えば、タイマ回路534が所定期間(例えば、3ms)を計測したときに、乱数値読取信号出力回路526から出力される乱数値読取信号を入力したこと)に、ラッチ信号を出力する(例えば、ラッチ信号生成回路533が、乱数値読取信号出力回路526から出力される乱数値読取信号を、反転回路532から出力される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SLとして乱数値記憶回路531に出力する部分)ように構成されていてもよい。そのような構成によれば、ラッチ信号が出力されたことにもとづいて乱数記憶手段が乱数を記憶するにあたって、所定期間に亘って継続して入賞検出信号が入力されたことを条件にラッチ信号を出力するように構成されているので、ノイズの発生を入力検出信号の入力と誤認識してラッチ信号を出力し、生成した乱数を記憶してしまうことを防止できる。また、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によってラッチ信号が出力され、不正なラッチ信号によって生成された乱数を記憶させられてしまう可能性を低減することができる。
(6)乱数読出手段は、タイマ割込処理実行手段によってタイマ割込処理が所定回数実行される間継続して、入賞検出手段から入賞検出信号が入力されたことを条件(例えば、遊技制御用マイクロコンピュータ560によるステップS3202の処理の実行の際に、割込回数カウンタに示されるタイマ割込処理の実行回数が所定回数(例えば、3回)に達していること)に、乱数記憶手段が記憶する乱数値を読み出し(例えば、CPU56が、乱数回路503の乱数値記憶回路531から、乱数値として記憶されているランダムRの値を読み出し)、所定期間(例えば、3ms)は所定回数のタイマ割込処理が実行される期間(例えば、6ms)よりも短いように構成されていてもよい。そのような構成によれば、乱数記憶手段から乱数を読み出すにあたって、タイマ割込処理が所定回数実行される間継続して入賞検出信号が入力されたことを条件に乱数記憶手段から乱数を読み出すように構成されているので、乱数を読み出してから、乱数記憶手段に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができる。そのため、前回乱数記憶手段から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。
さらに、上述した実施の形態では、以下の(1)〜(6)に示すような遊技機の特徴的構成も示されている。
(1)遊技の進行を制御する遊技制御処理(例えば、タイマ割込にもとづくステップS21〜S36の処理)を実行する遊技制御用マイクロコンピュータ(例えば、遊技制御用マイクロコンピュータ560)が搭載された遊技制御基板(例えば、遊技制御基板31)と、遊技演出に用いる第1の電気部品(例えば、可変表示装置9、スピーカ27、ランプなどのうちの少なくともいずれか一つ)を制御する第1電気部品制御マイクロコンピュータ(例えば、音/ランプ制御用マイクロコンピュータ100bまたは図柄制御用マイクロコンピュータ100a)が搭載された第1電気部品制御基板(例えば、音/ランプ制御基板80bまたは図柄制御基板80a)と、遊技演出に用いる第2の電気部品(例えば、可変表示装置9、スピーカ27、ランプなどのうちの少なくともいずれか一つ)を制御する第2電気部品制御マイクロコンピュータ(例えば、図柄制御用マイクロコンピュータ100aまたは音/ランプ制御用マイクロコンピュータ100b)が搭載された第2電気部品制御基板(例えば、図柄制御基板80aまたは音/ランプ制御基板80b)とを備え、遊技制御用マイクロコンピュータは、可変表示の開始条件が成立したときに、識別情報の可変表示の表示結果を特定の表示結果とするか否かを決定する表示結果決定手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS56Bを実行する部分)と、表示結果決定手段の決定結果にもとづいて識別情報の可変表示の変動パターンを選択し、選択した変動パターンを特定可能な変動パターンコマンドを第1電気部品制御マイクロコンピュータに送信する遊技制御側コマンド送信手段(例えば、遊技制御用マイクロコンピュータ560におけるステップS373を実行する部分)とを含み、第1電気部品制御マイクロコンピュータは、遊技制御用マイクロコンピュータから受信した変動パターンコマンドにもとづいて、遊技演出の内容を決定する演出内容決定手段(例えば、音/ランプ制御用マイクロコンピュータ100bにおけるステップS1853〜S1855を実行する部分)と、演出内容決定手段が決定した遊技演出の内容を特定可能なコマンド(例えば演出内容コマンド)を、第2電気部品制御マイクロコンピュータに送信する第1電気部品制御側コマンド送信手段(例えば、音/ランプ制御用マイクロコンピュータ100bにおけるステップS1856,S1857を実行する部分)とを含み、第2電気部品制御マイクロコンピュータは、第1電気部品制御側コマンド送信手段より送信されたコマンドに示される遊技演出の内容にもとづいて、第2の電気部品を用いた遊技演出を制御する(例えば、図柄制御用マイクロコンピュータ100aが演出内容コマンドにもとづいてステップS777の演出制御プロセス処理を実行する)遊技機である。このような構成によれば、遊技制御用マイクロコンピュータが演出内容を決定しなくて済むため、遊技制御用マイクロコンピュータの処理負担を軽減することができる。
(2)演出内容決定手段は、遊技制御用マイクロコンピュータから受信した変動パターンコマンドにもとづいて、識別情報の可変表示の表示結果が特定の表示結果になることを予告する予告演出を実行するか否かを決定し(例えば、変動パターンコマンドにもとづいてステップS1852〜S1855の処理を実行し)、第1電気部品制御側コマンド送信手段は、演出内容決定手段による決定結果に応じたコマンドを第2電気部品制御マイクロコンピュータに送信する(例えば、ステップS1856,S1857の処理を実行する)ように構成されていてもよい。このような構成によれば、遊技制御用マイクロコンピュータの制御負担を軽減することができる。
(3)第1電気部品制御マイクロコンピュータは、変動パターンコマンドにもとづいて、演出内容決定手段が決定した遊技演出の内容を特定可能な演出内容コマンドを生成するコマンド生成手段(例えば、音/ランプ制御用マイクロコンピュータ100bがステップS1856にて演出内容コマンドを生成する処理を実行する部分、または図柄/音制御用マイクロコンピュータが演出内容コマンドを生成する処理を実行する部分)を含み、第1電気部品制御側コマンド送信手段は、コマンド生成手段が生成した演出内容コマンドを送信し(例えば、音/ランプ制御用マイクロコンピュータ100bがステップS1856にて演出内容コマンドを送信し、または図柄/音制御用マイクロコンピュータが演出内容コマンドを送信し)、第2電気部品マイクロコンピュータは、第1電気部品制御側コマンド送信手段により送信された演出内容コマンドに示される遊技演出の内容にもとづいて、第2の電気部品を用いた遊技演出を制御する(例えば、図柄制御用マイクロコンピュータ100aが演出内容コマンドにもとづいてステップS777の処理を実行する、またはランプ制御用マイクロコンピュータが演出内容コマンドにもとづいてステップS777の処理を実行する)ように構成されていてもよい。このような構成によれば、遊技制御用マイクロコンピュータの制御負担を軽減することができる。
(4)第1電気部品制御マイクロコンピュータは、演出内容決定手段が決定した遊技演出の内容を、変動パターンコマンドに付加する演出内容付加手段(例えば、音/ランプ制御用マイクロコンピュータ100bが変動パターンコマンドに演出内容を示す情報(表示制御実行データなど)を付加する処理を実行する部分)を含み、第1電気部品制御側コマンド送信手段は、演出内容付加手段により遊技演出の内容が付加された変動パターンコマンドを送信し(例えば、音/ランプ制御用マイクロコンピュータ100bがステップS1856と同様の処理の実行し)、第2電気部品制御マイクロコンピュータは、第1電気部品制御側コマンド送信手段により送信された変動パターンコマンドに示される遊技演出の内容にもとづいて、第2の電気部品を用いた遊技演出を制御する(例えば、図柄制御用マイクロコンピュータ100aが演出内容コマンドにもとづいてステップS777の処理を実行する)ように構成されていてもよい。このような構成によれば、遊技制御用マイクロコンピュータの制御負担を軽減することができるとともに、第1電気部品制御マイクロコンピュータが送信するコマンド数を削減することができる。
なお、上記の実施の形態のパチンコ遊技機は、主として、始動入賞にもとづいて可変表示部に可変表示される特別図柄の停止図柄が所定の図柄になると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機であったが、始動入賞にもとづいて開放する電動役物の所定領域への入賞があると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機や、始動入賞にもとづいて可変表示される図柄の停止図柄が所定の図柄の組み合わせになると開放する所定の電動役物への入賞があると所定の権利が発生または継続するパチンコ遊技機であっても、本発明を適用できる。さらに、遊技メダルを投入して賭け数を設定し遊技を行うスロット機や、遊技メダルではなく遊技球を投入して賭け数を設定し遊技を行う遊技機などにも本発明を適用できる。