実施の形態1.
以下、本発明の実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機を正面からみた正面図である。なお、以下の実施の形態では、パチンコ遊技機を例に説明を行うが、本発明による遊技機はパチンコ遊技機に限られず、遊技に応じてあらかじめ決められた個数の遊技媒体が景品として払い出されるスロット機などの他の遊技機に適用することもできる。
パチンコ遊技機1は、縦長の方形状に形成された外枠(図示せず)と、外枠の内側に開閉可能に取り付けられた遊技枠とで構成される。また、パチンコ遊技機1は、遊技枠に開閉可能に設けられている額縁状に形成されたガラス扉枠2を有する。遊技枠は、外枠に対して開閉自在に設置される前面枠(図示せず)と、機構部品等が取り付けられる機構板と、それらに取り付けられる種々の部品(後述する遊技盤を除く。)とを含む構造体である。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿(上皿)3がある。打球供給皿3の下部には、打球供給皿3に収容しきれない遊技球を貯留する余剰球受皿4と遊技球を発射する打球操作ハンドル(操作ノブ)5が設けられている。ガラス扉枠2の背面には、遊技盤6が着脱可能に取り付けられている。なお、遊技盤6は、それを構成する板状体と、その板状体に取り付けられた種々の部品とを含む構造体である。また、遊技盤6の前面には遊技領域7が形成されている。
遊技領域7の中央付近には、それぞれが演出用の飾り図柄を可変表示する複数の可変表示部を含む可変表示装置(飾り図柄表示装置)9が設けられている。可変表示装置9には、例えば「左」、「中」、「右」の3つの可変表示部(図柄表示エリア)がある。可変表示装置9は、特別図柄表示器8による特別図柄の可変表示期間中に、装飾用(演出用)の図柄としての飾り図柄の可変表示を行う。飾り図柄の可変表示を行う可変表示装置9は、図柄制御基板に搭載されている演出制御用マイクロコンピュータによって制御される。可変表示装置9の下部には、始動入賞口14に入った有効入賞球数すなわち保留記憶(始動記憶または始動入賞記憶ともいう。)数を表示する4つの特別図柄保留記憶表示器18が設けられている。特別図柄保留記憶表示器18は、保留記憶数を入賞順に4個まで表示する。特別図柄保留記憶表示器18は、始動入賞口14に始動入賞があるごとに、点灯状態のLEDの数を1増やす。そして、特別図柄保留記憶表示器18は、特別図柄表示器8で可変表示が開始されるごとに、点灯状態のLEDの数を1減らす(すなわち1つのLEDを消灯する)。具体的には、特別図柄保留記憶表示器18は、特別図柄表示器8で可変表示が開始されるごとに、点灯状態をシフトする。なお、この例では、始動入賞口14への入賞による始動記憶数に上限数(4個まで)が設けられているが、上限数を4個以上にしてもよい。
可変表示装置9の上部には、識別情報としての特別図柄を可変表示する特別図柄表示器(特別図柄表示装置)8が設けられている。この実施の形態では、特別図柄表示器8は、例えば0〜9の数字を可変表示可能な簡易で小型の表示器(例えば7セグメントLED)で実現されている。特別図柄表示器8は、遊技者に特定の停止図柄を把握しづらくさせるために、0〜99など、より多種類の数字を可変表示するように構成されていてもよい。また、可変表示装置9は、特別図柄表示器8による特別図柄の可変表示期間中に、装飾用(演出用)の図柄としての飾り図柄の可変表示を行う。
可変表示装置9の下方には、始動入賞口14としての可変入賞球装置15が設けられている。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。また、始動入賞口14の下部には開閉動作を行う可変入賞球装置15が設けられている。可変入賞球装置15は、ソレノイド16によって開状態とされる。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態とされる開閉板20が設けられている。開閉板20は大入賞口(可変入賞球装置)を開閉する手段である。開閉板20から遊技盤6の背面に導かれた入賞球はカウントスイッチ23で検出される。
ゲート32に遊技球が入賞しゲートスイッチ32aで検出されると、普通図柄表示器10の表示の可変表示が開始される。この実施の形態では、左右のランプ(点灯時に図柄が視認可能になる)が交互に点灯することによって可変表示が行われ、例えば、可変表示の終了時に右側のランプが点灯すれば当たりとなる。そして、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になる。普通図柄表示器10の近傍には、ゲート32に入った入賞球数を表示する4つのLEDによる表示部を有する普通図柄始動記憶表示器41が設けられている。ゲート32への入賞がある毎に、普通図柄始動記憶表示器41は点灯するLEDを1増やす。そして、普通図柄表示器10の可変表示が開始される毎に、点灯するLEDを1減らす。
遊技盤6には、複数の入賞口(普通入賞口)29,30,33,39が設けられ、遊技球の入賞口29,30,33,39への入賞は、それぞれ入賞口スイッチ29a,30a,33a,39aによって検出される。各入賞口29,30,33,39は、遊技媒体を受け入れて入賞を許容する領域として遊技盤6に設けられる入賞領域を構成している。なお、始動入賞口14や大入賞口も、遊技媒体を受け入れて入賞を許容する入賞領域を構成する。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった遊技球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。さらに、遊技領域7における各構造物(大入賞口等)の周囲には装飾LEDが設置されている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cおよび装飾用LEDは、遊技機に設けられている装飾発光体の一例である。
そして、この例では、左枠ランプ28bの近傍に、賞球払出中に点灯する賞球LED51が設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れLED52が設けられている。上記のように、この実施の形態のパチンコ遊技機1には、発光体としてのランプやLEDが各所に設けられている。さらに、プリペイドカードが挿入されることによって球貸しを可能にするプリペイドカードユニット(以下、単に「カードユニット」ともいう。)が、パチンコ遊技機1に隣接して設置される(図示せず)。
カードユニットには、例えば、使用可能状態であるか否かを示す使用可表示ランプ、カードユニットがいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器、カードユニット内にカードが投入されていることを示すカード投入表示ランプ、記録媒体としてのカードが挿入されるカード挿入口、およびカード挿入口の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニットを解放するためのカードユニット錠が設けられている。
打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。遊技球が始動入賞口14に入り始動口スイッチ14aで検出されると、図柄の可変表示を開始できる状態であれば、可変表示装置9において飾り図柄が可変表示(変動)を始める。図柄の可変表示を開始できる状態でなければ、始動入賞記憶数を1増やす。
可変表示装置9における飾り図柄の可変表示は、一定時間が経過したときに停止する。停止時の飾り図柄の組み合わせが大当り図柄(特定表示結果)であると、大当り遊技状態に移行する。すなわち、開閉板20が、一定時間経過するまで、または、所定個数(例えば10個)の遊技球が入賞するまで開放する。
停止時の可変表示装置9における飾り図柄の組み合わせが確率変動を伴う大当り図柄(確変図柄)の組み合わせである場合には、次に大当りとなる確率が高くなる。すなわち、確変状態という遊技者にとってさらに有利な状態となる。
遊技球がゲート32に入賞すると、普通図柄表示器10において普通図柄が可変表示される状態になる。また、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定時間だけ開状態になる。さらに、確変状態では、普通図柄表示器10における停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置15の開放時間と開放回数が高められる。
図2は、主基板31における回路構成の一例を示すブロック図である。なお、図2には、遊技機に搭載されている払出制御基板37、図柄制御基板80a、インタフェース基板66、中継基板77および音/ランプ制御基板80bも示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する遊技制御用マイクロコンピュータ560およびI/Oポート部57を含む制御回路53と、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aからの信号を遊技制御用マイクロコンピュータ560に与える入力ドライバ回路58と、可変入賞球装置15を開閉するソレノイド16、および特別可変入賞球装置20を開閉するソレノイド21を遊技制御用マイクロコンピュータ560からの指令に従って駆動するソレノイド回路59とが搭載されている。
なお、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a等のスイッチは、センサと称されているものでもよい。すなわち、遊技球を検出できる遊技媒体検出手段(この例では遊技球検出手段)であれば、その名称を問わない。入賞検出を行う始動口スイッチ14a、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aの各スイッチは、入賞領域への遊技球の入賞を検出する入賞検出手段でもある。なお、ゲート32のような通過ゲートであっても、賞球の払い出しが行われるものであれば、通過ゲートへ遊技球が進入することが入賞になり、通過ゲートに設けられているスイッチ(例えばゲートスイッチ32a)が入賞検出手段になる。また、この実施の形態では、最終ラウンド以外のラウンドでは、常に継続権(次ラウンドに進む権利)が発生するが、大入賞口内にV入賞領域を設け、V入賞領域に遊技球が入賞したことを条件に継続権を発生させるようにしてもよい。
遊技制御用マイクロコンピュータ560は、ゲーム制御(遊技進行制御)用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段(変動データを記憶する変動データ記憶手段)としてのRAM55、およびプログラムに従って制御動作を行うCPU56を含む。CPU56は、遊技制御用マイクロコンピュータ560のうち、プログラムに従って動作する中央処理装置(ROM54やRAM55などの記憶手段などを除いた部分)を意味する。また、遊技制御用マイクロコンピュータ560は、CPU56に加えて、ROM54やRAM55などの記憶手段、乱数回路503、シリアル通信回路505などを含む部分を意味する。この実施の形態では、ROM54およびRAM55は遊技制御用マイクロコンピュータ560に内蔵されている。すなわち、遊技制御用マイクロコンピュータ560は、1チップマイクロコンピュータである。1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54は外付けであっても内蔵されていてもよい。また、I/Oポート部56は、遊技制御用マイクロコンピュータ560に内蔵されていてもよい。
なお、遊技制御用マイクロコンピュータ560においてCPU56がROM54に格納されているプログラムに従って制御を実行するので、遊技制御用マイクロコンピュータ560が実行する(または、処理を行う)またはCPU56が実行するということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているマイクロコンピュータについても同様である。また、遊技制御手段は、遊技制御用マイクロコンピュータ560で実現されている。
また、RAM55は、その一部または全部が電源基板910において作成されるバックアップ電源によってバックアップされている不揮発性記憶手段としてのバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間(バックアップ電源としてのコンデンサが放電してバックアップ電源が電力供給不能になるまで)は、RAM55の一部または全部の内容は保存される。特に、少なくとも、遊技状態すなわち遊技制御手段の制御状態に応じたデータ(特別図柄プロセスフラグ等)と未払出賞球数を示すデータは、バックアップRAMに保存される。遊技制御手段の制御状態に応じたデータとは、停電等が生じた後に復旧した場合に、そのデータにもとづいて、制御状態を停電等の発生前に復旧させるために必要なデータである。また、制御状態に応じたデータと未払出賞球数を示すデータとを遊技の進行状態を示すデータと定義する。なお、この実施の形態では、RAM55の全部が、電源バックアップされているとする。
遊技制御用マイクロコンピュータ560のリセット端子には、電源基板910からのリセット信号が入力される。また、払出制御用マイクロコンピュータのリセット端子にも、電源基板910からのリセット信号が入力される。つまり、電源基板910には、遊技制御用マイクロコンピュータ560や払出制御用マイクロコンピュータ等に供給されるリセット信号を生成するリセット回路が搭載されている。なお、リセット信号がハイレベルになると遊技制御用マイクロコンピュータ560や払出制御用マイクロコンピュータ等は動作可能状態になり、リセット信号がローレベルになると遊技制御用マイクロコンピュータ560や払出制御用マイクロコンピュータ等は動作停止状態になる。従って、リセット信号がハイレベルである期間は、遊技制御用マイクロコンピュータ560や払出制御用マイクロコンピュータ等の動作を許容する許容信号が出力されていることになり、リセット信号がローレベルである期間は、遊技制御用マイクロコンピュータ560や払出制御用マイクロコンピュータ等の動作を停止させる動作停止信号が出力されていることになる。なお、リセット回路をそれぞれの電気部品制御基板(電気部品を制御するためのマイクロコンピュータが搭載されている基板)に搭載してもよいし、複数の電気部品制御基板のうちの一つまたは複数にリセット回路を搭載し、そこからリセット信号を他の電気部品制御基板に供給するようにしてもよい。
さらに、遊技制御用マイクロコンピュータ560の入力ポートには、電源基板910からの電源電圧が所定値以下に低下したことを示す電源断信号が入力される。すなわち、電源基板910には、遊技機において使用される所定電圧(例えば、DC30VやDC5Vなど)の電圧値を監視して、電圧値があらかじめ定められた所定値にまで低下すると(電源電圧の低下を検出すると)、その旨を示す電源断信号を出力する電源監視回路が搭載されている。また、遊技制御用マイクロコンピュータ560の入力ポートには、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などの枠側に設けられている各ランプに供給する。また、枠側に設けられている装飾ランプ25に供給する。
また、音/ランプ制御用マイクロコンピュータ100bは、音声合成用IC173に対して音番号データを出力する。音声合成用IC173は、音番号データに応じた音声や効果音を発生し増幅回路175に出力する。増幅回路175は、音声合成用IC173の出力レベルを、ボリューム176で設定されている音量に応じたレベルに増幅した音声信号をスピーカ27に出力する。音声データROM174には、音番号データに応じた制御データが格納されている。音番号データに応じた制御データは、所定期間(例えば飾り図柄の変動期間)における効果音または音声の出力態様を時系列的に示すデータの集まりである。
音/ランプ制御用マイクロコンピュータ100bは、受信した演出制御コマンドを入出力ポート104を介して図柄制御基板80aに転送したり、受信した演出制御コマンドにもとづいてコマンドを生成し、生成したコマンドを入出力ポート104を介して図柄制御基板80aに送信する。
図3に示すように、図柄制御基板80aは、図柄制御用CPU101aおよびRAMを含む図柄制御用マイクロコンピュータ100aを搭載している。なお、RAMは外付けであってもよい。図柄制御基板80aにおいて、図柄制御用マイクロコンピュータ100aは、内蔵または外付けのROM(図示せず)に格納されたプログラムに従って動作し、音/ランプ制御基板80bから入出力ポート702を介してコマンドを受信する。そして、図柄制御用マイクロコンピュータ100aは、受信したコマンドにもとづいて、VDP(ビデオディスプレイプロセッサ)109に、LCDを用いた可変表示装置9の表示制御を行わせる。
すなわち、図柄制御用マイクロコンピュータ100aは、受信したコマンドに従ってVDP109に対して画像の描画指示(展開指示)を行う。VDP109は、図柄制御用マイクロコンピュータ100aからの指示にもとづいてキャラクタROM(図示せず)から必要なデータを読み出し、読み出したデータをVRAM(図示せず)に展開する。
VRAMは、VDP109によって生成された画像データを展開するためのバッファメモリである。そして、VDP109は、VRAM内の画像データを可変表示装置9に出力する。これによって、画像が可変表示装置9の表示画面に表示される。
図4は、払出制御基板37および球払出装置97などの払出に関連する構成要素を示すブロック図である。図4に示すように、払出制御基板37には、払出制御用CPU371を含む払出制御用マイクロコンピュータ(電気部品制御用マイクロコンピュータの一例)370が搭載されている。この実施の形態では、払出制御用マイクロコンピュータ370は、1チップマイクロコンピュータであり、少なくともRAMが内蔵されている。払出制御用CPU371、RAM(図示せず)、払出制御用プログラムを格納したROM(図示せず)およびI/Oポート等は、払出制御手段を構成する。すなわち、払出制御手段は、払出制御用CPU371、RAMおよびROMを有する払出制御用マイクロコンピュータ370と、I/Oポートとで実現される。また、I/Oポートは、払出制御用マイクロコンピュータ370に内蔵されていてもよい。払出制御用マイクロコンピュータ370におけるRAMの少なくとも一部は、電源基板910に搭載されているバックアップ電源によって電源バックアップされている。ただし、この実施の形態では、全てのRAM領域が電源バックアップされているとする。よって、遊技機に対して電力供給がなされていないときにも、所定期間(バックアップ電源としてのコンデンサが放電してバックアップ電源が電力供給不能になるまで)は、RAMの記憶内容は保存される。
球切れスイッチ187、満タンスイッチ48および払出個数カウントスイッチ301からの検出信号は、中継基板72を介して払出制御基板37のI/Oポート372iに入力される。また、払出モータ位置センサ295からの検出信号は、中継基板72を介して払出制御基板37のI/Oポート372hに入力される。払出モータ位置センサ295は、払出モータ289の回転位置を検出するための発光素子(LED)と受光素子とによるセンサであり、遊技球が詰まったこと、すなわちいわゆる球噛みを検出するために用いられる。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、球切れスイッチ187からの検出信号が球切れ状態を示していたり、満タンスイッチ48からの検出信号が満タン状態を示していると、球払出処理を停止する。
入賞口への遊技球の入賞があると、シリアル通信回路505から、出力回路67を介して、払い出すべき賞球個数を示す賞球個数信号(払出数データ)が出力(送信)される。また、電力供給開始時に、初期化コマンドまたは復旧コマンドが、I/Oポート部57および出力回路67を介して出力(送信)される。
賞球個数信号は、入力回路373Aを介して払出制御用マイクロコンピュータ370に入力される。払出制御用マイクロコンピュータ370は、I/Oポート372eを介して賞球個数信号を入力すると、賞球個数信号が示す個数の遊技球を払い出すために球払出装置97を駆動する制御を行う。賞球個数信号は、払出数を指定する払出指令信号に相当する。初期化コマンドおよび復旧コマンドは、入力回路373Aを介してI/Oポート372eに入力される。払出制御用マイクロコンピュータ370は、I/Oポート372eを介して初期化コマンドまたは復旧コマンドを入力すると、所定の制御を行う。
また、電源基板910から、電源電圧が所定値以下の低下したことを示す電源断信号が、入力ポート372gに入力される。なお、クリアスイッチが操作されたことを示すクリア信号は、払出制御用マイクロコンピュータ370には入力されない。
払出制御用マイクロコンピュータ370は、出力ポート372bを介して、賞球払出数を示す賞球情報信号および貸し球数を示す球貸し個数信号をターミナル基板(枠用外部端子基板と盤用外部端子基板とを含む)160に出力する。なお、出力ポート372bの外側に、ドライバ回路が設置されているが、図4では記載省略されている。
また、払出制御用マイクロコンピュータ370は、出力ポート372cを介して、7セグメントLEDによるエラー表示用LED374にエラー信号を出力する。なお、払出制御基板37の入力ポート372fには、エラー状態を解除するためのエラー解除スイッチ375からの検出信号が入力される。エラー解除スイッチ375は、ソフトウェアリセットによってエラー状態を解除するために用いられる。
さらに、払出制御用マイクロコンピュータ370からの払出モータ289への駆動信号は、出力ポート372aおよび中継基板72を介して球払出装置97の払出機構部分における払出モータ289に伝えられる。なお、出力ポート372aの外側に、ドライバ回路(モータ駆動回路)が設置されているが、図4では記載省略されている。
遊技機に隣接して設置されているカードユニット50には、カードユニット制御用マイクロコンピュータが搭載されている。また、カードユニット50には、使用可表示ランプ、連結台方向表示器、カード投入表示ランプおよびカード挿入口が設けられている。インタフェース基板(中継基板)66には、打球供給皿3の近傍に設けられている度数表示LED60、球貸し可LED61、球貸しスイッチ62および返却スイッチ63が接続される。
インタフェース基板66からカードユニット50には、遊技者の操作に応じて、球貸しスイッチ62が操作されたことを示す球貸しスイッチ信号および返却スイッチ63が操作されたことを示す返却スイッチ信号が与えられる。また、カードユニット50からインタフェース基板66には、プリペイドカードの残高を示すカード残高表示信号および球貸し可表示信号が与えられる。カードユニット50と払出制御基板37の間では、接続信号(VL信号)、ユニット操作信号(BRDY信号)、球貸し要求信号(BRQ信号)、球貸し完了信号(EXS信号)およびパチンコ機動作信号(PRDY信号)が入力ポート372jおよび出力ポート372dを介して送受信される。カードユニット50と払出制御基板37の間には、インタフェース基板66が介在している。よって、接続信号(VL信号)等の信号は、図4に示すように、インタフェース基板66を介してカードユニット50と払出制御基板37の間で送受信されることになる。
この実施の形態では、カードユニット50が遊技機とは別体として遊技機に隣接して設置されている場合を例にするが、カードユニット50は遊技機と一体化されていてもよい。また、コイン投入に応じてその金額に応じた遊技球が貸し出されるような場合でも本発明を適用できる。
次に、電源基板910の構成を図5のブロック図を参照して説明する。電源基板910には、遊技機内の各電気部品制御基板や機構部品への電力供給を実行または遮断するための電源スイッチ914が設けられている。なお、電源スイッチ914は、遊技機において、電源基板910の外に設けられていてもよい。電源スイッチ914が閉状態(オン状態)では、交流電源(AC24V)がトランス911の入力側(一次側)に印加される。トランス911は、交流電源(AC24V)と電源基板910の内部とを電気的に絶縁するためのものであるが、その出力電圧もAC24Vである。また、トランス911の入力側には、過電圧保護回路としてのバリスタ918が設置されている。
電源基板910は、電気部品制御基板(主基板31、払出制御基板37および音/ランプ制御基板80b等)と独立して設置され、遊技機内の各基板および機構部品が使用する電圧を生成する。この例では、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つまたは複数のスイッチングレギュレータ(図5では2つのレギュレータIC924A,924Bを示す。)を有し、VSLにもとづいてVDDおよびVCCを生成する。レギュレータIC(スイッチングレギュレータ)924A,924Bの入力側には、比較的大容量のコンデンサ923A,923Bが接続されている。従って、外部からの遊技機に対する電力供給が停止したときに、VSL、VDD、VCC等の直流電圧は、比較的緩やかに低下する。
図5に示すように、トランス911から出力されたAC24Vは、そのままコネクタ922Bに供給される。また、VLPは、コネクタ922Cに供給される。VCC、VDDおよびVSLは、コネクタ922A,922B,922Cに供給される。
コネクタ922Aに接続されるケーブルは、主基板31に接続される。また、コネクタ922Bに接続されるケーブルは、払出制御基板37に接続される。従って、コネクタ922A,922Bには、VBBも供給されている。例えば、コネクタ922Cに接続されるケーブルは、音/ランプ制御基板80bに接続される。なお、図柄制御基板80aには、音/ランプ制御基板80bを経由して各電圧が供給される。
また、電源基板910には、押しボタン構造のクリアスイッチ921が搭載されている。電源基板910に搭載されているので、電源基板910から主基板31に亘る電源系統を一系統にすることができ、クリアスイッチ921からのクリア信号の配線と電源系統とを分離しやすくすることができる。クリアスイッチ921が押下されるとローレベル(オン状態)のクリア信号が出力され、コネクタ922Bを介して主基板31に出力される。また、クリアスイッチ921が押下されていなければハイレベル(オフ状態)の信号が出力される。なお、クリアスイッチ921は、押しボタン構造以外の他の構成であってもよい。また、クリアスイッチ921は、遊技機において、電源基板910以外に設けられていてもよい。
さらに、電源基板910には、電気部品制御基板に搭載されているマイクロコンピュータに対するリセット信号を作成するとともに、電源断信号を出力する電源監視回路920と、電源監視回路920からのリセット信号を増幅してコネクタ922A,922B,922Cに出力するとともに、電源断信号を増幅してコネクタ922Bに出力する出力ドライバ回路925が搭載されている。なお、図柄制御用マイクロコンピュータに対するリセット信号は、音/ランプ制御基板80bを経由して図柄制御基板80aに伝達される。また、リセット回路をそれぞれの電気部品制御基板に搭載した場合に、リセット信号をハイレベルにすることになる電圧値を異ならせるようにしてもよい(例えば、主基板31における場合を最も高くして、遊技制御用マイクロコンピュータ560に対するリセット信号がハイレベルになるタイミングを最も遅くする。)
電源監視回路920は電源断信号を出力する電源監視手段とリセット信号を生成するリセット信号生成手段とを実現する回路であるが、電源監視回路920として、市販の停電監視リセットモジュールICを使用することができる。
電源監視回路920は、遊技機に対する電力供給が停止する際には、電源断信号を出力(ローレベルにする)してから所定期間が経過したことを条件にリセット信号をローレベルにする。所定期間は、主基板31に搭載されている遊技制御用マイクロコンピュータ560および払出制御基板37に搭載されている払出制御用マイクロコンピュータ370が、後述する電源断処理を実行するのに十分な時間である。すなわち、電源監視回路920は、電圧低下検出信号としての電源断信号を出力した後、遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370が、電源断処理を実行完了した後に、動作停止信号(リセット信号のローレベル)を出力する。また、遊技機に対する電力供給が開始され、VCCが例えば+4.5Vを越えるとリセット信号をハイレベルにする。
電源監視回路920からの電源断信号すなわち電源監視手段からの検出信号は、払出制御基板37において、入力ポート372gを介して払出制御用マイクロコンピュータ370に入力される。すなわち、払出制御用マイクロコンピュータ370は、入力ポート372gの入力信号を監視することによって遊技機への電力供給の停止の発生を確認することができる。また、電源監視回路920からの電源断信号は、主基板31に搭載されている入力ポートを介して遊技制御用マイクロコンピュータ560に入力される。すなわち、遊技制御用マイクロコンピュータ560は、入力ポートの入力信号を監視することによって遊技機への電力供給の停止の発生を確認することができる。
なお、この実施の形態では、電源監視手段(電源監視回路920)が所定電位の電源の出力を監視し、外部から遊技機に供給される電力の供給停止に関わる検出条件として、遊技機の外部からの電圧(この実施の形態ではAC24V)から作成された所定の直流電圧が所定値以下になったことを用いたが、検出条件は、それに限られず、外部のからの電力が途絶えたことを検出できるのであれば、他の条件を用いてもよい。例えば、交流電圧(AC24V)を直流電圧に変換する途中における全波整流波形の有無を監視し、その波形が所定期間以上検出できなかった場合に電源断信号を出力するようにしてもよい。また、交流電圧を直接監視し、交流電圧波形が所定期間以上検出できなかった場合に電源断信号を出力するようにしてもよい。すなわち、電源監視回路の監視対象は、電圧に限られず、全波整流波形でも半波整流波形でもよく、遊技機への供給電圧が低下していることを検出可能なものであればよい。さらに、交流波をディジタル化した信号を監視して、ディジタル信号が平坦になったことをもって交流波が途絶えたことを検出条件としてもよい。また、例えば、+12V電源電圧や+5V電源電圧を監視して、その電圧が所定値にまで低下したことを検出して電源断信号を出力するようにしてもよい。ただし、+12Vで動作するスイッチの誤動作を防止するために、+12V以上の電圧を監視することが好ましい。
また、この実施の形態では、電源監視手段が電源基板910に搭載されているが、電源監視手段を払出制御基板37に搭載してもよい。払出制御基板37に搭載した場合には、電源監視手段から遊技制御用マイクロコンピュータ560および払出制御用マイクロコンピュータ370への電源断信号の経路が短くなり、電源断信号に対してノイズが乗る可能性を低減できる。
図6は、主基板31における回路構成および主基板31から音/ランプ制御基板80に送信される演出制御コマンドの信号線を示すブロック図である。図6に示すように、この実施の形態では、主基板31に搭載されている遊技制御用マイクロコンピュータ560は、演出制御信号送信用の8本の信号線CD0〜CD7を用いて、演出制御コマンドを音/ランプ制御基板80bに送信する。また、主基板31と音/ランプ制御基板80bとの間には、ストローブ信号を送受するための演出制御INT信号の信号線も配線されている。なお、遊技制御用マイクロコンピュータ560は、I/Oポート部57(図6において図示せず)を介して演出制御コマンドを送信する。
主基板31には、図6に示すように、始動口スイッチ14a等(図6では始動口スイッチ14aのみを示す。)からの配線が接続されている。また、主基板31には、大入賞口である特別可変入賞球装置20や、その他の入賞口への遊技球の入賞等を検出するための各種スイッチ29a,30a,33a,39aからの配線も接続されている。さらに、主基板31には、可変入賞球装置15を開閉するソレノイド16、および特別可変入賞球装置20を開閉するソレノイド21への配線が接続されている。
遊技制御用マイクロコンピュータ560は、クロック回路501、システムリセット手段として機能するリセットコントローラ502、乱数回路503a,503b、ゲーム制御用のプログラム等を記憶するROM54、ワークメモリとして使用されるRAM55、プログラムに従って動作するCPU56、CPU56に割込要求信号を送出するCTC504、および払出制御基板37等と非同期シリアル通信を行うシリアル通信回路505を内蔵する。
クロック回路501は、システムクロック信号を27(=128)分周して生成した所定の周期の基準クロック信号CLKを、各乱数回路503a,503bに出力する。リセットコントローラ502は、ローレベルの信号が一定期間入力されたとき、CPU56および各乱数回路503a,503bに所定の初期化信号を出力して、遊技制御用マイクロコンピュータ560をシステムリセットする。
また、この実施の形態では、図6に示すように、遊技制御用マイクロコンピュータ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の構成について説明する。図7は、乱数回路503の構成例を示すブロック図である。なお、この実施の形態において、12ビット乱数回路503aと16ビット乱数回路503bとの基本的な構成は同じである。図7に示すように、乱数回路503は、カウンタ521、比較器522、カウント値順列変更回路523、クロック信号出力回路524、カウント値更新信号出力回路525、乱数値読取信号出力回路526、乱数更新方式選択信号出力回路527、セレクタ528、乱数回路起動信号出力回路530、乱数値記憶回路531、反転回路532、ラッチ信号生成回路533およびタイマ回路534とを含む。
この実施の形態では、乱数回路503は、複数種類の識別情報の可変表示の表示結果を特定の表示結果とするか否か(例えば、特別図柄表示器8の停止図柄を大当り図柄とするか否か)を判定するための大当り判定用の乱数を発生する。そして、CPU56は、乱数回路503が発生した乱数にもとづいて特定の表示結果とすると判定すると、遊技状態を遊技者にとって有利な特定遊技状態(例えば、大当り遊技状態)に移行させる。なお、乱数回路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」が格納されていないときとは異なる順列に変更する。「h」は、16進数であることを示す。この場合、カウント値順列変更回路523は、数値順列変更データ「01h」が格納されているとき、カウント値の順列の変更に用いる更新規則を切り換える。また、カウント値の順列の変更に用いる更新規則を切り換えた後に、カウンタ521がカウント値の更新を開始すると、カウント値順列変更レジスタ536のカウント値順列変更データは、CPU56によって、「01h」から初期値である「0(=00h)」に戻される(クリアされる)。
なお、CPU56によってカウント値順列変更データをクリアするのでなく、乱数回路503側でカウント値順列変更データをクリアするようにしてもよい。例えば、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことにもとづいて、更新規則選択レジスタ(RRC)542にレジスタ値が設定されると、カウント値順列変更回路523は、カウント値順列変更レジスタ536のレジスタ値をクリアするようにしてもよい。
図8は、更新規則選択レジスタ(RRC)542の例を示す説明図である。更新規則選択レジスタ542は、カウンタ521が出力するカウント値の並び順の並べ替え(順列の変更)に用いる更新規則を設定するレジスタである。この実施の形態では、更新規則選択レジスタ542にレジスタ値が設定されることによって、カウンタ521が出力するカウント値の順列の変更に用いる更新規則が設定される。図8に示すように、更新規則選択レジスタ542は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、更新規則選択レジスタ542は、ビット0〜ビット3が書込および読出ともに可能な状態に構成されている。また、更新規則選択レジスタ542は、ビット4〜ビット7が書込および読出ともに不可能な状態に構成されている。従って、更新規則選択レジスタ542のビット4〜ビット7に値を書き込む制御を行っても無効とされ、ビット4〜ビット7から読み出す値は全て「0(=0000b)」である。「b」は、2進数であることを示す。
更新規則選択レジスタ542の値(レジスタ値)は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれたことに応じて、レジスタ値が「0(=00h)」から「15(=0Fh)」まで循環的に更新される。すなわち、カウント値順列変更レジスタ536にカウント値順列データ「01h」が書き込まれるごとに、更新規則選択レジスタ542のレジスタ値は、「0」から「1」ずつ加算され、「15」になった後「0」に戻る。
図9は、更新規則メモリ543の例を示す説明図である。図9に示すように、更新規則メモリ543は、更新規則選択レジスタ542の値(レジスタ値)と、カウント値の更新規則とを対応付けて格納している。図9に示す例では、例えば、更新規則選択レジスタ542にレジスタ値1が設定されている場合、更新規則Bを用いて、カウンタ521が出力するカウント値の順列が変更されることが分かる。なお、図9において、更新規則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は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」が書き込まれている場合、更新規則を切り替えて用いることによって、カウント値Cの順列を変更して出力する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。
図10は、カウント値順列変更回路523が、カウンタ521が出力するカウント値の順列を変更する場合の例を示す説明図である。図10に示すように、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に再度書き込むことによって、カウント値の順列をさらに変更することができる。
図11は、カウント値順列変更レジスタ(RSC)536の例を示す説明図である。カウント値順列変更レジスタ536は、カウンタ521がカウントアップするカウント値の順列を変更させるためのカウント値順列変更データ「01h」を設定するレジスタである。図11に示すように、カウント値順列変更レジスタ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に格納されている乱数最大値設定データ(例えば「0100h」)で示される乱数最大値(例えば「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」)までカウント値を更新すると、カウンタ521は、通知信号をCPU56に出力する。通知信号を出力すると、CPU56によって、カウンタ521のカウント値の初期値が再び変更される。
以上のような動作を繰り返すことによって、比較器522は、カウンタ521に、「0」から乱数最大値「256」まで連続的にカウント値をカウントアップさせ、「0」から「256」までの値を乱数値記憶回路531にランダムR(乱数値)として記憶させる。すなわち、比較器522は、カウント値の更新範囲を乱数最大値「256」以下に制限して、カウンタ521にカウント値を更新させる。
図12は、乱数最大値設定レジスタ(RMX)535の例を示す説明図である。図12(a)は、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535の例を示す。また、図12(b)は、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535の例を示す。まず、12ビット乱数回路503aが搭載する乱数最大値設定レジスタ535について説明する。図12(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」〜「00FFh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「4095」を指定する乱数最大値設定データ「0FFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「256」から「4095」までであり、CPU56は、下限値「256」より小さい値が設定されていると判断すると、乱数最大値を所定値「4095」に設定しなおす。なお、CPU56は、リセットコントローラ502によって遊技制御用マイクロコンピュータ560(具体的にはCPU56)がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ535を書込不可能に制御する。また、CPU56により書込不可能に制御するのでなく、乱数最大値設定レジスタ535は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
次に、16ビット乱数回路503bが搭載する乱数最大値設定レジスタ535について説明する。図12(b)に示すように、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、16ビットレジスタであり、初期値が「65535(=FFFFh)」に設定されている。また、16ビット乱数回路503bにおいて、乱数最大値設定レジスタ535は、ビット0〜ビット15の全てのビットが書込および読出ともに可能な状態に構成されている。
また、乱数最大値設定レジスタ535に下限値「256」より小さい値を指定する乱数最大値設定データ「0000h」〜「00FFh」が書き込まれた場合、CPU56は、乱数最大値設定レジスタ535に、初期値「65535」を指定する乱数最大値設定データ「FFFFh」を設定しなおす。すなわち、乱数最大値設定レジスタ535に設定可能な乱数最大値は「256」から「65535」までであり、CPU56は、下限値「256」より小さい値が設定されていると判断すると、乱数最大値を所定値「65535」に設定しなおす。なお、CPU56は、リセットコントローラ502によって遊技制御用マイクロコンピュータ560(具体的にはCPU56)がシステムリセットされるまで、乱数最大値設定データが書き込まれた乱数最大値設定レジスタ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(=15)」が書き込まれている場合、クロック信号出力回路524は、クロック回路501から入力する基準クロック信号CLKを16分周して乱数発生用クロック信号SI1を生成する。この場合、クロック信号出力回路524が生成する乱数発生用クロック信号SI1の周期は、「システムクロック信号の周期×128×16」となる。なお、クロック信号出力回路524は、基準クロック信号CLKを、(周期設定レジスタ537に設定されている値+1)分周する。
図13は、周期設定レジスタ(RPS)537の例を示す説明図である。図13に示すように、周期設定レジスタ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(具体的にはCPU56)がシステムリセットされるまで、周期設定データが書き込まれた周期設定レジスタ537を書込不可能に制御する。また、CPU56により書込不可能に制御するのでなく、周期設定レジスタ537は、データが書き込まれた後にリセット信号を入力するまで書込不可能となるように形成されていてもよい。
なお、周期設定レジスタ537に下限値としての周期設定データを設定することなく、設定された周期設定データにもとづいて、例えばクロック信号出力回路524が基準クロック信号CLKをそのままカウンタ521および反転回路532に出力するようにしてもよい。この場合、CPU56は、周期設定レジスタ537に設定される周期設定データの値を下限値と比較して設定しなおす処理を行う必要がなくなる。また、カウンタ521は、クロック信号出力回路524から基準クロック信号CLKを入力する毎にカウント値Cを更新することになる。
カウント値更新信号出力回路525は、カウント値更新データ「01h」を格納するカウント値更新レジスタ(RGN)538を備える。カウント値更新データとは、カウント値の更新を要求するためのデータである。カウント値更新信号出力回路525は、カウント値更新レジスタ538にカウント値更新データ「01h」が書き込まれたことに応じて、カウント値更新信号SI3をセレクタ528に出力する。
図14は、カウント値更新レジスタ538の例を示す説明図である。図14に示すように、カウント値更新レジスタ538は、読出不能な8ビットレジスタであり、ビット0のみが書込可能な状態に構成されている。従って、カウント値更新レジスタ538のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数値読取信号出力回路526は、乱数値取込データ「01h」を格納する乱数値取込レジスタ(RLT)539を備える。乱数値取込データとは、乱数値記憶回路531へのカウント値の取込を要求するためのデータである。乱数値読取信号出力回路526は、乱数値取込レジスタ539に乱数値取込データ「01h」が書き込まれたことに応じて、乱数値の読み取りを要求するための乱数値読取信号をラッチ信号生成回路533に出力する。
図15は、乱数値取込レジスタ539の例を示す説明図である。図15に示すように、乱数値取込レジスタ539は、読出不能な8ビットレジスタである。また、乱数値取込レジスタ539は、ビット0だけが書込可能な状態に構成されている。すなわち、乱数値取込レジスタ539のビット1〜ビット7に値を書き込む制御を行っても無効とされる。
乱数更新方式選択信号出力回路527は、乱数更新方式選択データを格納する乱数更新方式選択レジスタ(RTS)540を備える。乱数更新方式選択データとは、ランダムRの値を更新する方式である各乱数更新方式のうち、いずれかの乱数更新方式を指定するためのデータである。乱数更新方式選択信号出力回路527は、乱数更新方式選択レジスタ540に乱数更新方式選択データが書き込まれたことに応じて、書き込まれた乱数更新方式選択データによって指定される乱数更新方式に対応する乱数更新方式選択信号を、セレクタ528およびラッチ信号生成回路533に出力する。
図16(A)は、乱数更新方式選択レジスタ540の例を示す説明図である。図16(A)に示すように、乱数更新方式選択レジスタ540は、8ビットレジスタであり、初期値が「00h」に設定されている。また、乱数更新方式選択レジスタ540は、ビット0〜ビット1が書込および読出ともに可能な状態に構成されている。また、乱数更新方式選択レジスタ540は、ビット2〜ビット7が書込および読出ともに不可能な状態に構成されている。従って、乱数更新方式選択レジスタ540のビット2〜ビット7に値を書き込む制御を行っても無効とされ、ビット2〜ビット7から読み出す値は全て「0(=000000b)」である。
図16(B)は、乱数更新方式選択レジスタ540に書き込まれる乱数更新方式選択データの一例の説明図である。図16(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を起動させる。
図17は、乱数回路起動レジスタ541の例を示す説明図である。図17に示すように、乱数回路起動レジスタ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の値を記憶する。
図18は、乱数値記憶回路531の一構成例を示す回路図である。乱数値記憶回路531は、図18に示すように、2個のAND回路201,203と、2個のNOT回路202,204と、16個のフリップフロップ回路2101〜2116と、16個のOR回路2201〜2216とを含む。
図18に示すように、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の動作について説明する。図19は、乱数値記憶回路531に各信号が入力されるタイミング、および乱数値記憶回路531が各信号を出力するタイミングを示すタイミングチャートである。図19に示すように、遊技制御用マイクロコンピュータ560が搭載するCPU56から出力制御信号SC(この実施の形態では、ハイレベル信号)が入力されていない場合(すなわち、AND回路203の一方の入力端子への入力がローレベルの場合)、ラッチ信号生成回路533からラッチ信号SLが入力されると(図19に示す例では、タイミング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が入力されていない場合(図19に示す例では、タイミング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」が用いられる可能性がある。この場合、CPU56は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図38に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「はずれ」と判定するように設定しておけばよい。
ラッチ信号生成回路533からラッチ信号SLが入力されていないときに、CPU56から出力制御信号SCが入力されると(図19に示す例では、タイミング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が入力されても(図19に示す例では、タイミング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」が用いられる可能性がある。この場合、CPU56は、値「65535」を読み込んだとしても、その値が乱数であるのか読出不能状態であるのかを判断することができない。そのため、図38に示す各大当り判定用の判定テーブルにおいて、あらかじめランダムRが「65535」である場合には「はずれ」と判定するように設定しておけばよい。
また、ラッチ信号生成回路533からラッチ信号SLが入力される前に、CPU56から出力制御信号SCが入力されている場合、AND回路201の一方の入力端子への入力がローレベルとなるので、出力制御信号SCが入力されているままの状態で、ラッチ信号SLが入力されても(図19に示す例では、タイミング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に出力する。
ラッチ信号生成回路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(ノンリターンゼロ)符号化を用いたデータフォーマットで、各電気部品制御マイクロコンピュータ(例えば、払出制御用マイクロコンピュータ370)とシリアル通信を行う。シリアル通信回路505は、各制御基板に各種データ(例えば、賞球個数信号)を送信する送信部と、各制御基板からの各種データ(例えば、賞球ACKコマンド)を受信する受信部とを含む。
図20は、シリアル通信回路505の送信部の構成例を示すブロック図である。また、図21は、シリアル通信回路505の受信部の構成例を示すブロック図である。シリアル通信回路505は、ボーレートレジスタ702、ボーレート生成回路703、2つのステータスレジスタ705,706、3つの制御レジスタ707,708,709、送信データレジスタ710、受信データレジスタ711、送信用シフトレジスタ712、受信用シフトレジスタ713、割り込み制御回路714、送信フォーマット/パリティ生成回路715および受信フォーマット/パリティチェック回路716を含む。また、図20に示すように、シリアル通信回路505の送信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタA705、制御レジスタ707,708,709、送信データレジスタ710、送信用シフトレジスタ712、割り込み制御回路714および送信フォーマット/パリティ生成回路715によって構成される。また、図21に示すように、シリアル通信回路505の受信部は、これらの構成要素のうち、ボーレートレジスタ702、ボーレート生成回路703、ステータスレジスタ705,706、制御レジスタ707,708,709、受信データレジスタ711、受信用シフトレジスタ713、割り込み制御回路714および受信フォーマット/パリティチェック回路716によって構成される。
なお、シリアル通信回路505において、送信部と受信部とは、実際には、共通の回路を用いて構成される。そして、シリアル通信回路505は、上記に示したように、シリアル通信回路505の各構成要素を使い分けて用いることによって、送信回路または受信回路として機能する。
まず、シリアル通信回路505が各制御基板と送受信するデータのデータフォーマットを説明する。図22は、シリアル通信505が各制御基板と送受信するデータのデータフォーマットの例を示す説明図である。図22に示すように、シリアル通信回路505が送受信するデータは、スタートビット、データおよびストップビットを含む1フレームとして構成される。また、シリアル通信回路505が送受信するデータのデータ長は、後述するシリアル通信回路設定処理において初期設定を行えば、8ビットまたは9ビットのいずれかに設定できる。図22(a)には、データ長を8ビットに設定した場合のデータフォーマットの例が示されている。また、図22(b)には、データ長を9ビットに設定した場合のデータフォーマットの例が示されている。
図22に示すように、シリアル通信回路505が送受信するデータは、ハイレベル(論理「1」)のアイドルデータの後に出力される、1フレームの始まりであることを示すスタートビット(論理「0」)を含む。また、スタートビットに続いて、8ビットまたは9ビットの送受信データを含む。そして、送受信データに続いて、1フレームの終わりであることを示すストップビット(論理「1」)を含む。
シリアル通信回路505は、図22に示すデータフォーマットに従って、送受信データの最下位ビット(ビット0)からデータを送受信する。また、後述するシリアル通信回路設定処理において初期設定を行えば、送受信データにパリティビットを付加するように設定することもできる。パリティビットを付加するように設定した場合、送受信データの最上位ビットがパリティビット(奇数パリティまたは偶数パリティ)として用いられる。例えば、データ長を8ビットに設定した場合、送受信データのビット7がパリティビットとして用いられる。また、例えば、データ長を9ビットに設定した場合、送受信データのビット8がパリティビットとして用いられる。
ボーレート生成回路703は、クロック回路501が出力するクロック信号およびボーレートレジスタ702に設定されている設定値(ボーレート設定値ともいう)にもとづいて、シリアル通信回路505が用いるボーレートを生成する。この場合、ボーレート生成回路703は、クロック信号およびボーレート設定値にもとづいて、所定の計算式を用いてボーレートを求める。例えば、ボーレート生成回路703は、式(1)を用いて、シリアル通信回路505が用いるボーレートを求める。
ボーレート=クロック周波数/(ボーレート設定値×16) 式(1)
図23は、ボーレートレジスタ(SIBR)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)」である。
図24(A)は、制御レジスタA(SICL1)707の例を示す説明図である。制御レジスタA707は、シリアル通信回路505の通信フォーマットを設定するレジスタである。この実施の形態では、制御レジスタA707の各ビットの値が設定されることによって、シリアル通信回路505の通信フォーマットが設定される。制御レジスタA707には、送受信データのデータ形式や各種通信方式等の通信フォーマットを設定するための通信フォーマット設定データが設定される。図24(A)に示すように、制御レジスタA707は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタA707のビット0〜ビット4が書込および読出ともに可能である。また、制御レジスタA707のビット5〜ビット7が書込および読出ともに不可能である。従って、制御レジスタA707のビット5〜ビット7に値を書き込む制御を行っても無効とされ、ビット5〜ビット7から読み出す値は全て「0(=000b)」である。
図24(B)は、制御レジスタA707に設定される通信フォーマット設定データの一例の説明図である。図24(B)に示すように、制御レジスタA707のビット4(ビット名「M」)には、送受信するデータのデータ長を設定するための設定データが設定される。図24(B)に示すように、ビット4を「0」に設定することによって、送受信データのデータ長が8ビットに設定される。また、ビット4を「1」に設定することによって、送受信データのデータ長が9ビットに設定される。
制御レジスタA707のビット3(ビット名「WAKE」)には、スタンバイ状態の受信回路(シリアル通信回路505の受信部)をウエイクアップする(オンライン状態にさせる)ウエイクアップ方式を設定するための設定データが設定される。図24(B)に示すように、ビット3を「0」に設定することによって、アイドルラインを認識したときにウエイクアップするアイドルラインウエイクアップ方式が設定される。また、ビット3を「1」に設定することによって、所定のアドレスマークを認識することによってウエイクアップするアドレスマークウエイクアップ方式が設定される。
制御レジスタA707のビット2(ビット名「ILT」)には、受信データのアイドルデータの検出方式を選択するための設定データが設定される。図24(B)に示すように、ビット2を「0」に設定することによって、受信データに含まれるスタートビットの後からアイドルデータを検出する検出方式が設定される。また、ビット2を「1」に設定することによって、受信データに含まれるストップビットの後からアイドルデータを検出する検出方式が設定される。
制御レジスタA707のビット1(ビット名「PE」)には、パリティ機能を使用するか否かを設定するための設定データが設定される。図24(B)に示すように、ビット1を「0」に設定することによって、パリティ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、パリティ機能を使用するように設定される。
制御レジスタA707のビット0(ビット名「PT」)には、パリティ機能を使用すると設定した場合のパリティの種類を設定するための設定データが設定される。図24(B)に示すように、ビット0を「0」に設定することによって、パリティの種類として偶数パリティが設定される。また、ビット0を「1」に設定することによって、パリティの種類として奇数パリティが設定される。
図25(A)は、制御レジスタB(SICL2)708の例を示す説明図である。制御レジスタB708は、シリアル通信回路505の割り込み要求を許可するか否かが設定されるレジスタである。この実施の形態では、制御レジスタB708の各ビットの値が設定されることによって、シリアル通信回路505からの割り込み要求を許可するか禁止するかが設定される。制御レジスタB708には、各種割り込み要求を許可するか否かを示す割り込み要求設定データが主として設定される。なお、制御レジスタB708には、割り込み要求設定データ以外に、シリアル通信回路505の各種設定を行うための設定データも設定される。図25(A)に示すように、制御レジスタB708は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタB708のビット0〜ビット7は、書込および読出ともに可能である。
図25(B)は、制御レジスタB708に設定される割り込み要求設定データの一例を示す説明図である。図25(B)に示すように、制御レジスタB708のビット7(ビット名「TIE」)には、データの送信時に行う割り込み要求である送信割り込み要求を許可するか否かを示す設定データが設定される。図25(B)に示すように、ビット7を「0」に設定することによって、送信割り込み要求を禁止するように設定される。また、ビット7を「1」に設定することによって、送信割り込み要求を許可するように設定される。
制御レジスタB708のビット6(ビット名「TCIE」)には、データの送信完了時に行う割り込み要求である送信完了割り込み要求を許可するか否かを示す設定データが設定される。図25(B)に示すように、ビット6を「0」に設定することによって、送信完了割り込み要求を禁止するように設定される。また、ビット6を「1」に設定することによって、送信完了割り込み要求を許可するように設定される。
制御レジスタB708のビット5(ビット名「RIE」)には、データの受信時に行う割り込み要求である受信割り込み要求を許可するか否かを示す設定データが設定される。図25(B)に示すように、ビット5を「0」に設定することによって、受信割り込み要求を禁止するように設定される。また、ビット5を「1」に設定することによって、受信割り込み要求を許可するように設定される。
制御レジスタB708のビット4(ビット名「ILIE」)には、受信データのアイドルラインを検出したときに行う割り込み要求であるアイドルライン割り込み要求を許可するか否かを示す設定データが設定される。図25(B)に示すように、ビット4を「0」に設定することによって、アイドルライン割り込み要求を禁止するように設定される。また、ビット4を「1」に設定することによって、アイドルライン割り込み要求を許可するように設定される。
制御レジスタB708のビット3(ビット名「TE」)には、送信回路(シリアル通信回路505の送信部)を使用するか否かを示す設定データが設定される。図25(B)に示すように、ビット3を「0」に設定することによって、送信回路を使用しないように設定される。また、ビット3を「1」に設定することによって、送信回路を使用するように設定される。
制御レジスタB708のビット2(ビット名「RE」)には、受信回路を使用するか否かを示す設定データが設定される。図25(B)に示すように、ビット2を「0」に設定することによって、受信回路を使用しないように設定される。また、ビット2を「1」に設定することによって、受信回路を使用するように設定される。
制御レジスタB708のビット1(ビット名「RWU」)には、受信回路のウエイクアップ機能を使用するか否かを示す設定データが設定される。図25(B)に示すように、ビット1を「0」に設定することによって、ウエイクアップ機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ウエイクアップ機能を使用するように設定される。
制御レジスタB708のビット0(ビット名「SBK」)には、所定のブレークコード送信機能を使用するか否かを示す設定データが設定される。図25(B)に示すように、ビット1を「0」に設定することによって、ブレークコード送信機能を使用しないように設定される。また、ビット1を「1」に設定することによって、ブレークコード送信機能を使用するように設定される。ビット1を「1」に設定すると、シリアル通信回路505は、ブレークコード(例えば、「0」を連続して含む信号)を制御基板(払出制御基板37)に送信する。
図26(A)は、ステータスレジスタA(SIST1)705の例を示す説明図である。ステータスレジスタA705は、シリアル通信回路505の各種ステータスを確認するためのレジスタである。この実施の形態では、ステータスレジスタA705の各ビットの値を確認することによって、CPU56は、シリアル通信回路505の各種ステータスを確認することができる。図26(A)に示すように、ステータスレジスタA705は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタA705のビット0〜ビット7は、読出のみ可能である。従って、ステータスレジスタA705のビット0〜ビット7に値を書き込む制御を行っても無効とされる。
図26(B)は、ステータスレジスタA705に格納されるステータス確認データの一例を示す図である。図26(B)に示すように、ステータスレジスタA705のビット7(ビット名「TDRE」)には、送信データレジスタ710に送信データが入っていない状態であること(送信データエンプティ)を示す送信データエンプティフラグが格納される。図26(B)に示すように、ビット7に「0」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが未だに転送されず、送信データレジスタ710に送信データが格納されたままの状態であることを示す。また、ビット7に「1」が格納されている場合、送信データレジスタ710から送信用シフトレジスタ712に送信データが転送され、送信データレジスタ710に送信データが入っていない状態(送信データエンプティ)であることを示す。
ステータスレジスタA705のビット6(ビット名「TC」)には、シリアル通信回路505からの送信データの送信を完了した旨を示す送信完了フラグが格納される。図26(B)に示すように、ビット6に「0」が格納されている場合、送信用シフトレジスタ712が格納する送信データの送信中の状態であり、シリアル通信回路505からの送信データの送信が完了していない状態であることを示す。また、ビット6に「1」が格納されている場合、送信用シフトレジスタ712が格納する送信データの転送を完了した状態であり、シリアル通信回路505からの送信データの送信が完了した状態であることを示す。
なお、送信データの送信を完了した状態となり、CPU56は、送信先の制御基板からの受信確認信号の待ち状態となる。この実施の形態では、後述する送信時割込の設定が行われると、シリアル通信回路505は、送信データの送信完了を検出すると、ステータスレジスタA705のビット6を「1」にするとともに、受信確認信号の待ち状態になったとしてCPU56に割り込み要求(送信時割り込み要求という)を行う。すなわち、CPU56の割り込み受付入力(IRQ入力)に対して、割り込み要求レベルであるローレベルの信号を出力する。なお、ローレベルの信号は、遊技制御用マイクロコンピュータ560が内蔵する割り込みコントローラを介してCPU56のIRQ入力に与えられる。
ステータスレジスタA705のビット5(ビット名「RDRF」)には、受信データレジスタ711に受信データが格納された状態であること(受信データフル)を示す受信データフルフラグが格納される。図26(B)に示すように、ビット5に「0」が格納されている場合、受信データレジスタ711に受信データが入っていない状態であることを示す。また、ビット5に「1」が格納されている場合、受信用シフトレジスタ713の値が受信データレジスタ711に転送され、受信データレジスタ711に受信データが格納されている状態であること(受信データフル)を示す。
なお、受信データレジスタ711に受信データが格納された状態となると、CPU56は、受信データを受信データレジスタ711から読み込んで受信処理を行える状態となる。この実施の形態では、シリアル通信回路505は、受信データフルを検出すると、ステータスレジスタA705のビット5を「1」にするとともに、受信処理が可能になったとしてCPU56に割り込み要求(受信時割り込み要求という)を行う。
ステータスレジスタA705のビット4(ビット名「IDLE」)には、受信回路がアイドルラインを検出したことを示すアイドルライン検出フラグが格納される。図26(B)に示すように、ビット4に「0」が格納されている場合、シリアル通信回路505の受信部がアイドルラインを検出していない状態であることを示す。また、ビット4に「1」が格納されている場合、シリアル通信回路505の受信部がアイドルラインを検出した状態であることを示す。
ステータスレジスタA705のビット3(ビット名「OR」)には、CPU56が受信データレジスタ711が格納する受信データを読み込む前に、受信用シフトレジスタ713が次のデータを受信してしまったこと(オーバーラン)を示すオーバーランフラグが格納される。図26(B)に示すように、ビット3に「0」が格納されている場合、受信回路がオーバーランを検出していない状態であることを示す。また、ビット3に「1」が格納されている場合、受信回路がオーバーランを検出した状態であることを示す。
なお、オーバーランが発生すると、受信データレジスタ711内の受信データが読み込まれる前に受信用シフトレジスタ713に次の受信データが格納されてしまうので、受信データが上書きされてしまいCPU56が受信データを正しく読み込めなくなる。そのため、各制御基板と正しく通信を行えなくなり、遊技制御用マイクロコンピュータ560が誤動作をする原因になる。この実施の形態では、シリアル通信回路505は、オーバーランを検出すると、ステータスレジスタA705のビット3を「1」にするとともに、通信時にエラーが発生したとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット2(ビット名「NF」)には、受信データにノイズを検出したことを示すノイズエラーフラグが格納される。図26(B)に示すように、ビット2に「0」が格納されている場合、受信回路が受信データにノイズを検出していない状態であることを示す。また、ビット2に「1」が格納されている場合、受信回路が受信データにノイズを検出した状態であることを示す。
例えば、シリアル通信回路505は、受信データの各ビットを検出する際に、ボーレート生成回路703が生成したボーレートを用いて、所定ビット長の「1」または「0」を検出する。この場合、検出した「1」または「0」の長さが所定ビット長に満たない場合、シリアル通信回路505は、受信データにノイズが発生したとしてノイズエラーを検出する。ノイズエラーが発生すると、ノイズによって正しい受信データを受信できない可能性が高く、遊技制御用マイクロコンピュータ560が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、ノイズエラーを検出すると、ステータスレジスタA705のビット2を「1」にするとともに、通信時にエラーが発生したとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット1(ビット名「FE」)には、受信データのストップビットの位置が「0」(本来、ストップビットは「1」)であることを検出したこと(フレーミングエラー)を示すフレーミングエラーフラグが格納される。図26(B)に示すように、ビット1に「0」が格納されている場合、受信回路が受信データにフレーミングエラーを検出していない状態であることを示す。また、ビット1に「1」が格納されている場合、受信回路がフレーミングエラーを検出した状態であることを示す。
フレーミングエラーが発生すると、受信データのストップビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、遊技制御用マイクロコンピュータ560が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、フレーミングエラーを検出すると、ステータスレジスタA705のビット1を「1」にするとともに、通信時にエラーが発生したとしてCPU56に割り込み要求を行う。
ステータスレジスタA705のビット0(ビット名「PF」)には、受信データから求めたパリティの値と、受信データに含まれるパリティの値とが一致しなかったこと(パリティエラー)を示すパリティエラーフラグが格納される。図26(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データにパリティエラーを検出していない状態であることを示す。また、ビット0に「1」が格納されている場合、受信回路がパリティエラーを検出した状態であることを示す。
パリティエラーが発生すると、受信データの各データビットまたはパリティビットを正しく受信できなかった状態であるので、正しい受信データを受信できない可能性が高く、遊技制御用マイクロコンピュータ560が誤動作をする原因となる。この実施の形態では、シリアル通信回路505は、パリティエラーを検出すると、ステータスレジスタA705のビット0を「1」にするとともに、通信時にエラーが発生したとしてCPU56に割り込み要求を行う。
図27(A)は、ステータスレジスタB(SIST2)706の例を示す説明図である。ステータスレジスタB706は、シリアル通信回路505の受信状態(受信ステータス)を確認するためのレジスタである。この実施の形態では、ステータスレジスタB706のビットの値を確認することによって、CPU56は、シリアル通信回路505の受信ステータスを確認することができる。図27(A)に示すように、ステータスレジスタB706は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、ステータスレジスタB706のビット0は、読出のみ可能である。従って、ステータスレジスタA705のビット0に値を書き込む制御を行っても無効とされる。また、ステータスレジスタB706のビット1〜ビット7は、書込および読出ともに不可能である。従って、ステータスレジスタA705のビット1〜ビット7に値を書き込む制御を行っても無効とされ、ビット1〜ビット7から読み出す値は全て「0(=0000000b)」である。
図27(B)は、ステータスレジスタB706に格納されるステータス確認データの一例を示す図である。図27(B)に示すように、ステータスレジスタB706のビット0(ビット名「RAF」)には、受信回路が受信データを受信中であること(受信アクティブ)を示す受信アクティブフラグが格納される。図27(B)に示すように、ビット0に「0」が格納されている場合、受信回路が受信データを受信中でないことを示す。また、ビット0に「1」が格納されている場合、受信回路が受信データを受信中であることを示す。なお、シリアル通信回路505は、スタートビットを検出すると、受信データの受信が開始されたとして、ステータスレジスタB706のビット0を「1」にする。
図28(A)は、制御レジスタC(SICL3)709の例を示す説明図である。制御レジスタC709は、シリアル通信回路505の通信エラー時の割り込み要求を許可するか否かを設定するレジスタである。この実施の形態では、制御レジスタC709の各ビットの値が設定されることによって、シリアル通信回路505からの通信時の割り込み要求を許可するか禁止するかが設定される。制御レジスタC709には、通信エラー時の各種割り込み要求を許可するか否かを示すエラー割り込み要求設定データが主として設定される。なお、制御レジスタC709には、エラー割り込み要求設定データ以外に、データ長を9ビットに設定した場合の9ビット目のデータが格納される。シリアル通信回路505の各種設定を行うための設定データも設定される。図28(A)に示すように、制御レジスタC709は、8ビットレジスタであり、初期値が「0(=00h)」に設定されている。また、制御レジスタC709のビット0〜ビット3およびビット6,7は、書込および読出ともに可能である。また、制御レジスタC709のビット4,5は、書込および読出ともに不可能である。従って、制御レジスタC709のビット4,5に値を書き込む制御を行っても無効とされ、ビット4,5から読み出す値は全て「0(=00b)」である。
図28(B)は、制御レジスタC709に設定されるエラー割り込み要求設定データの一例を示す説明図である。図28(B)に示すように、制御レジスタC709のビット7(ビット名「R8」)には、データ長を9ビットに設定した場合の受信データの9ビット目のデータが格納される。また、制御レジスタC709のビット6(ビット名「T8」)には、データ長を9ビットに設定した場合の送信データの9ビット目のデータが格納される。
制御レジスタC709のビット3(ビット名「ORIE」)には、オーバーランを検出した場合に行う割り込み要求であるオーバーランフラグ割り込み要求を許可するか否かを示す設定データが設定される。図28(B)に示すように、ビット3を「0」に設定することによって、オーバーランフラグ割り込み要求を禁止するように設定される。また、ビット3を「1」に設定することによって、オーバーランフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット2(ビット名「NEIE」)には、ノイズエラーを検出した場合に行う割り込み要求であるノイズエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図28(B)に示すように、ビット2を「0」に設定することによって、ノイズエラーフラグ割り込み要求を禁止するように設定される。また、ビット2を「1」に設定することによって、ノイズエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット1(ビット名「FEIE」)には、フレーミングエラーを検出した場合に行う割り込み要求であるフレーミングエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図28(B)に示すように、ビット1を「0」に設定することによって、フレーミングエラーフラグ割り込み要求を禁止するように設定される。また、ビット1を「1」に設定することによって、フレーミングエラーフラグ割り込み要求を許可するように設定される。
制御レジスタC709のビット0(ビット名「PEIE」)には、パリティエラーを検出した場合に行う割り込み要求であるパリティエラーフラグ割り込み要求を許可するか否かを示す設定データが設定される。図28(B)に示すように、ビット0を「0」に設定することによって、パリティエラーフラグ割り込み要求を禁止するように設定される。また、ビット0を「1」に設定することによって、パリティエラーフラグ割り込み要求を許可するように設定される。
図29は、シリアル通信回路505が備えるデータレジスタ(SIDA)を示す説明図である。データレジスタ701は、シリアル通信回路505が送受信するデータを格納するレジスタである。図29に示すように、データレジスタは、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」を設定することによって割り込み要求を行う。なお、割り込みの禁止設定がなされている場合(例えば、制御レジスタB708のビット6(TCIE)が「0」に設定されている場合)でも、割り込み制御回路714は送信データの送信を完了した状態になるとステータスレジスタA705のビット6(TC)に「1」を設定するが、すなわち、制御レジスタB708のビットは割り込みの許可/禁止に関わらず設定されるが、ここでは、ステータスが設定されるレジスタ(ステータスレジスタA705など)のビットをセットするとともに、CPU56に割り込み信号を出力することが、CPU56に割り込み要求を行うことであるとする。
また、割り込み制御回路714は、制御レジスタB708のビット5(RIE)が「1」に設定されている場合、受信データレジスタ711に受信データが格納されている状態になると(受信データフルを検出すると)、CPU56に割り込み信号を出力するとともに、ステータスレジスタA705のビット5(RDRF)に「1」をすることによって割り込み要求を行う。
また、割り込み制御回路714は、制御レジスタC709のビット0〜3のいずれかが「1」に設定されている場合、各種通信エラーが発生すると、CPU56に割り込み信号を出力する。また、割り込み制御回路714は、通信エラーの種類に応じて、ステータスレジスタ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」に設定する。
なお、CPU56は、ステータスが設定されるレジスタ(ステータスレジスタA705など)の各ビットの状態に応じて割込原因を特定することができる。そして、割込原因に応じてあらかじめ決められているアドレスから設定されているプログラムを実行する。
送信フォーマット/パリティ生成回路715は、送信データのデータフォーマットを生成する。この実施の形態では、送信フォーマット/パリティ生成回路715は、送信データレジスタ710に格納される送信データにスタートビットおよびストップビットを付加してデータフォーマットを生成し、送信用シフトレジスタ712に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、送信フォーマット/パリティ生成回路715は、送信データにパリティビットを付加してデータフォーマットを生成する。
受信フォーマット/パリティチェック回路716は、受信データのデータフォーマットを検出する。この実施の形態では、受信フォーマット/パリティチェック回路716は、受信用シフトレジスタ713に格納される受信データからスタートビットおよびストップビットを検出し、受信データに含まれるデータ部分を検出して受信データレジスタ711に転送する。また、制御レジスタA707のビット1(PE)に「1」が設定され、パリティ機能を使用する旨が設定されている場合、受信フォーマット/パリティチェック回路716は、受信データのパリティを求め、受信データに含まれるパリティと一致するか否かを検出する。
図30は、遊技制御用マイクロコンピュータ560における記憶領域のアドレスマップの一例を示す説明図である。図30に示すように、遊技制御用マイクロコンピュータ560の記憶領域のうち、0000h番地〜1FFFh番地の領域は、ROM54に割り当てられている。また、7E00h番地〜7FFFh番地の領域は、RAM55に割り当てられている。さらに、FD00h番地〜FDFFh番地の領域は、乱数最大値設定レジスタ535等の内蔵レジスタに割り当てられている。
また、図30に示すように、ROM54に割り当てられている0000h番地〜1FFFh番地の領域は、ユーザプログラムエリアとユーザプログラム管理エリアとを含む。0000h番地〜1F7Fh番地の領域のユーザプログラムエリアには、ユーザ(例えば、遊技機の設計者)によってあらかじめ作成されたプログラム(ユーザプログラム)550が記憶される。また、1F80h番地〜1FFFh番地の領域のユーザプログラム管理エリアには、CPU56がユーザプログラム550を実行するために必要となるデータ(ユーザプログラム実行データ)が記憶される。また、RAM55に割り当てられている7E00h番地〜7FFFh番地の領域のうち、7E00h番地〜7EFFh番地の領域は未使用領域であり、7F00h番地〜7FFFh番地の領域はワークエリアとして用いられる。
図31は、ユーザプログラム管理エリアにおけるアドレスマップの一例を示す説明図である。図31に示すように、1F97h番地の領域には、カウンタ521に入力される初期値を変更するための方式である初期値変更方式のうち、ユーザによって選択された初期値変更方式を指定するための初期値変更方式設定データが記憶される。また、1F98h番地および1F99h番地の領域には、RAM55に割り当てられた7F00h番地〜7FFFh番地のうち、ユーザによってあらかじめ指定されたRAM55における番地(指定RAM番地)を特定するためのRAM番地データが記憶される。この場合、指定RAM番地を示す値のうち、指定RAM番地の下位の値が1F98h番地に記憶され、指定RAM番地の上位の値が1F99h番地に記憶される。
図32は、初期値変更方式設定データの一例を示す説明図である。図32に示すように、初期値変更データは、8ビットのデータから構成される。初期値変更データ「00h」は、初期値変更方式として、初期値を変更しないことを指定するデータである。この実施の形態では、初期値変更データ「00h」が設定されている場合、乱数回路503のカウンタ521は、あらかじめ定められた初期値「0」から所定の最終値までカウント値を更新することになる。また、初期値変更データ「01h」は、初期値変更方式として、カウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560を識別するためのIDナンバにもとづく値に変更することを指定するデータである。この実施の形態では、初期値変更データ「01h」が設定されている場合、カウンタ521が更新するカウンタ値の初期値が「0」からIDナンバにもとづく値に変更され、カウンタ521は、変更後の初期値から所定の最終値までカウント値を更新することになる。
ユーザプログラムエリアに記憶されるユーザプログラム550について説明する。図33は、ユーザプログラム550の構成例を示す説明図である。図33に示すように、この実施の形態では、ユーザプログラム550は、複数種類のプログラムモジュールから構成される乱数回路設定プログラム551と、表示結果決定プログラム552と、カウント値順列変更プログラム554と、乱数値更新プログラム555と、シリアル通信回路設定プログラム556と、割込優先順位設定プログラム557とを含む。
乱数回路設定プログラム551は、乱数回路503にランダムRの値を更新させるための初期設定を行う乱数回路設定処理を実行させるためのプログラムである。すなわち、CPU56は、乱数回路設定プログラム551に従って処理を実行することによって、乱数回路設定手段として機能する。
図34は、乱数回路設定プログラム551の構成例を示す説明図である。図34に示すように、乱数回路設定プログラム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が更新するカウント値の初期値を変更させる。そのようにすることによって、遊技制御用マイクロコンピュータ560は、初期値変更方式を選択する機能を備えることになる。
この実施の形態では、ユーザプログラム管理エリアの1F97h番地の領域に初期値変更方式設定データ「01h」が記憶されている場合、CPU56は、カウント値の初期値を、遊技制御用マイクロコンピュータ560毎に付与された固有のIDナンバにもとづいて算出された値に変更させる。
例えば、CPU56は、ROM54(RAM55でも可)の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とをあらかじめ対応付けて記憶している。この場合、例えば、遊技制御用マイクロコンピュータ560のIDナンバが「100」であるとすると、IDナンバ「100」に所定値「50」を加算して求めた演算値「150」を、あらかじめIDナンバに対応付けて記憶している。また、例えば、IDナンバ「100」に所定値「50」を減算して求めた演算値「50」を、あらかじめIDナンバに対応付けて記憶している。また、例えば、あらかじめIDナンバに対応づけて所定値だけを記憶していてもよい。そして、CPU56は、あらかじめ記憶する所定値(例えば、「50」)にIDナンバ(例えば、「100」)を加算して求めた値「150」を、カウント値の初期値としてもよい。また、CPU56は、あらかじめ記憶する所定値(例えば、「50」)をIDナンバ(例えば、「100」)から減算して求めた値「50」を、カウント値の初期値としてもよい。
そして、初期値変更方式設定データ「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における表示結果を大当り図柄とするか否かを決定するためのプログラムである。遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、表示結果決定プログラム552に従って処理を実行することによって、表示結果決定手段として機能する。
この実施の形態では、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、表示結果決定プログラム552に従って処理を実行する。そして、CPU56は、乱数値記憶回路531から更新後のランダムRの値を読み出して、特別図柄表示器8における表示結果を大当り図柄とするか否かを決定する。
図35は、第1の乱数更新方式が選択されている場合に、CPU56がランダムRの値を更新させたりランダムRの値を読出したりする動作を示す説明図である。図35に示すように、第1の乱数更新方式が選択されている場合、CPU56は、カウント値更新データ「01h」をカウント値更新レジスタ538に書き込むことによって、乱数値記憶回路531が記憶するランダムRの値(例えば「2」)を更新させる。そして、CPU56は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示を実行するための条件(実行条件)が成立したことに応じて、乱数値記憶回路531からランダムRの値(例えば「2」)を読み出す。
なお、乱数値記憶回路531が記憶するランダムRの値をさらに更新させる場合、前回更新時にランダムRの値を更新したときから、クロック回路501が出力するシステムクロック信号の周期以上の間隔を経過したときに、カウント値更新レジスタ538にカウント値更新データ「01h」を書き込まなければならない。なぜなら、更新後のランダムRの値を乱数値記憶回路531から読み出す時間を確保する必要があるからである。
図36は、第2の乱数更新方式が選択されている場合に、CPU56がランダムRの値を読出したりする動作を示す説明図である。図36に示すように、第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が記憶するカウント値の順列を変更させるカウント値順列変更処理を実行するためのプログラムである。遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、カウント値順列変更プログラム554に従って処理を実行することによって、数値データ順列変更手段として機能する。CPU56は、カウント値順列変更プログラム554を実行して、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込むことによって、カウント値順列変更回路523が出力し乱数値記憶回路531に入力されるカウント値の順列を変更させる。
シリアル通信回路設定プログラム556は、シリアル通信回路505に各制御基板に搭載されたマイクロコンピュータ(この実施の形態では、払出制御用マイクロコンピュータ)とシリアル通信させるための初期設定を行うシリアル通信回路設定処理を実行させるためのプログラムである。すなわち、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、シリアル通信回路設定プログラム556に従って処理を実行することによって、シリアル通信回路設定手段として機能する。
割込優先順位設定プログラム557は、シリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定するためのプログラムである。すなわち、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、割込優先順位設定プログラム556に従って処理を実行することによって、優先順位初期設定手段として機能する。
また、遊技制御用マイクロコンピュータ560は、図37に示すように、特図保留メモリ570と、大当り判定用テーブルメモリ571と、フラグメモリ572と、始動入賞口スイッチタイマメモリ573とを備える。それらのメモリは、具体的にはROM54またはRAM55に形成されている。
特図保留メモリ570は、遊技球が可変入賞球装置15に入賞して特別図柄の可変表示の実行条件は成立したが、未だ可変表示の開始条件が成立していない(例えば、特別図柄表示器8がまだ可変表示を実行中である)可変表示の実行条件の成立回数を含む保留データを記憶するためのメモリである。特図保留メモリ570は、4つのエントリを備え、各エントリには、遊技球が可変入賞球装置15に入賞した順に、保留番号と、入賞に応じて乱数値記憶回路531から読み出したランダムRの値とが対応付けて格納される。また、特別図柄表示器8における特別図柄の可変表示が1回終了したり、大当り遊技状態が終了したりするごとに、特図保留メモリ570の最上位の情報にもとづいた可変表示の開始条件が成立し、特図保留メモリ570最上位の情報にもとづいた可変表示が実行される。この場合、特別図柄の可変表示の開始条件が成立すると、特図保留メモリ570の第2位以下に登録されている情報が1位ずつ繰り上がる。また、特別図柄の可変表示中に遊技球が可変入賞球装置15に新たに入賞した場合には、その新たな入賞にもとづいて乱数値記憶回路531から読み出されたランダムRの値が、特図保留メモリ570の空エントリに登録される。
大当り判定用テーブルメモリ571は、CPU56が特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いる複数の大当り判定テーブルを記憶する。具体的には、大当り判定用テーブルメモリ571は、図38(A)に示すように、確変状態以外の遊技状態(通常状態という)において用いられる通常時大当り判定テーブルを記憶する。また、大当り判定用テーブルメモリ571は、図38(B)に示すように、確変状態において用いられる確変時大当り判定テーブルを格納する。なお、図38に示す判定テーブルを用いて大当り判定を行う場合、乱数最大値設定レジスタ535に設定された乱数最大値によって大当りと判定する確率が大きく変化することになる。この場合、例えば、設定される乱数最大値が小さすぎると、通常時大当り判定テーブルを用いた場合と、確変時大当り判定テーブルを用いた場合とで、大当りと判定する確率の差が小さくなってしまい、遊技者の遊技に対する興味を減退させてしまうことになる。そのため、乱数回路503および乱数最大値に対応づけて、複数の判定テーブル(複数の通常時大当り判定用テーブルおよび複数の確変時大当り判定用テーブル)を大当り判定用テーブルメモリ571に記憶してもよい。そして、CPU56は、大当り判定用テーブルメモリ571が記憶する判定テーブルのうち、使用する乱数回路503および乱数最大値に対応する判定テーブルを用いて、表示結果決定プログラム552に従って、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するようにしてもよい。そのようにすることによって、使用する乱数回路503の種類や乱数最大値が異なっても、大当りと判定する確率がある程度同じになるように制御することができる。
なお、この実施の形態では、16ビット乱数回路503bを用いることにする。すなわち、ステップS151の処理で16ビット乱数回路503bを用いることに決定されたとする。よって、ランダムRとして、16ビットで発生できる範囲(0から65535までの範囲)の値をとりうる。
フラグメモリ572には、遊技の進行を制御する遊技制御処理において用いられる各種のフラグが設定される。例えば、フラグメモリ572には、遊技状態が確変状態であることを示す確変フラグや、大当り状態であることを示す大当りフラグが設定される。
始動口スイッチタイマメモリ573は、始動口スイッチ14aから出力される入賞検出信号SSに応じて加算またはクリアされるタイマ値を記憶する。
次に遊技機の動作について説明する。図39および図40は、遊技機に対して電力供給が開始され遊技制御用マイクロコンピュータ560へのリセット信号がハイレベルになったことに応じてCPU56が実行するメイン処理を示すフローチャートである。リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、CPU56は、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、ステップS1以降のメイン処理を開始する。メイン処理において、CPU56は、まず、必要な初期設定を行う。
初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1)。次に、マスク可能割込の割込モードを設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。なお、ステップS2では、CPU56の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードに設定する。また、マスク可能な割込が発生すると、CPU56は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
次いで、内蔵デバイスレジスタの設定(初期化)を行う(ステップS4)。ステップS4の処理によって、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の設定(初期化)がなされる。
この実施の形態で用いられる遊技制御用マイクロコンピュータ560は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)504も内蔵している。
次に、RAM55をアクセス可能状態に設定し(ステップS5)、クリア信号のチェック処理に移行する。
次いで、CPU56は、例えば電源基板910に搭載されているクリアスイッチ921からクリア信号が出力されているか否か確認する(ステップS7)。クリア信号が出力されていない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような電力供給停止時処理が行われていたことを確認した場合には、CPU56は、電力供給停止時処理が行われた、すなわち電力供給停止時の制御状態が保存されていると判定する。電力供給停止時処理が行われていないことを確認した場合には、CPU56は初期化処理を実行する。
電力供給停止時処理が行われていたか否かは、電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、電力供給停止時処理を実行したことに応じた値(例えば2)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域に電力供給停止時処理を実行したことを示すフラグをセットし、ステップS8において、そのフラグがセットされていることを確認したら電力供給停止時処理が行われたと判定してもよい。
電力供給停止時の制御状態が保存されていると判定したら、CPU56は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象になるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムにする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっている可能性があることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理(ステップS10〜S14aの処理)を実行する。
チェック結果が正常であれば、CPU56は、遊技制御手段の内部状態と音/ランプ制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う。具体的には、ROM54に格納されているバックアップ時設定テーブルの先頭アドレスをポインタに設定し(ステップS91)、バックアップ時設定テーブルの内容を順次作業領域(RAM55内の領域)に設定する(ステップS92)。作業領域はバックアップ電源によって電源バックアップされている。バックアップ時設定テーブルには、作業領域のうち初期化してもよい領域についての初期化データが設定されている。ステップS91およびS92の処理によって、作業領域のうち初期化してはならない部分については、保存されていた内容がそのまま残る。初期化してはならない部分とは、例えば、電力供給停止前の遊技状態を示すデータ(特別図柄プロセスフラグなど)、出力ポートの出力状態が保存されている領域(出力ポートバッファ)、未払出賞球数を示すデータが設定されている部分などである。
また、CPU56は、ROM54に格納されているバックアップ時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS93)、その内容に従ってサブ基板(音/ランプ制御基板80b)に、電力供給が復旧したことを示す復旧コマンドを送信する処理を実行する(ステップS94)。また、払出制御基板37に搭載されている払出制御用マイクロコンピュータ370に復旧コマンドを送信する(ステップS95)。そして、ステップS15に移行する。なお、この実施の形態では、遊技状態復旧処理を実行してから復旧コマンドを送信しているが、復旧コマンドを送信してから遊技状態復旧処理を実行するようにしてもよい。
ステップS91〜S95の処理を実行した場合にはRAMクリア処理を行わないので、また、バックアップRAM領域の記憶内容は保存されていたはずであるから、遊技制御処理の実行状態は電力供給停止時前の状態に復旧されることになる。
初期化処理では、CPU56は、まず、RAM55の内容をクリアするRAMクリア処理を行う(ステップS10)。なお、RAM55の全領域を初期化せず、所定のデータをそのままにしてもよい。また、ROM54に格納されている初期化時設定テーブルの先頭アドレスをポインタに設定し(ステップS11)、初期化時設定テーブルの内容を順次業領域に設定する(ステップS12)。
ステップS11およびS12の処理によって、例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄バッファ、総賞球数格納バッファ、特別図柄プロセスフラグ、賞球中フラグ、球切れフラグなど制御状態に応じて選択的に処理を行うためのフラグに初期値が設定される。
また、CPU56は、ROM54に格納されている初期化時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS13)、その内容に従ってサブ基板(音/ランプ制御基板80b)を初期化するための初期化コマンドをサブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、可変表示装置9に表示される初期図柄を示すコマンド等を使用することができる。
次いで、CPU56は、払出制御基板37に搭載されている払出制御用マイクロコンピュータ370に初期化コマンドを送信する(ステップS14a)。
また、CPU56は、各乱数回路503a,503bを初期設定する乱数回路設定処理を実行する(ステップS15)。この場合、CPU56は、乱数回路設定プログラム551に従って処理を実行することによって、各乱数回路503a,503bにランダムRの値を更新させるための設定を行う。
また、CPU56は、シリアル通信回路505を初期設定するシリアル通信回路設定処理を実行する(ステップS15a)。この場合、CPU56は、シリアル通信回路設定プログラム556に従って処理を実行することによって、シリアル通信回路505に払出制御用マイクロコンピュータとシリアル通信させるための設定を行う。
シリアル通信回路505を初期設定すると、CPU56は、シリアル通信回路505の割り込み要求に応じて実行する割込処理の優先順位を初期設定する(ステップS15b)。この場合、CPU56は、割込優先順位設定プログラム557に従って処理を実行することによって、割込処理の優先順位を初期設定する。
例えば、CPU56は、各割込処理のデフォルトの優先順位を含む所定の割込処理優先順位テーブルに従って、割込処理の優先順位を初期設定する。図41は、割込処理優先順位テーブルの例を示す説明図である。この実施の形態では、CPU56は、図41に示す割込処理優先順位テーブルに従って、シリアル通信回路505において通信エラーが発生したことを割込原因とする割込処理を優先して実行するように初期設定する。この場合、例えば、CPU56は、通信エラーが発生したことを割込原因とする割込処理を優先して実行する旨を示すエラー時割込優先実行フラグをセットする。なお、遊技制御処理を実行するためのタイマ割込処理も、割込処理の優先順位の設定対象である。
また、ユーザによって各割込処理のデフォルトの優先順位を変更することもできる。例えば、CPU56は、ユーザ(例えば、遊技機の製作者)によって設定された割込処理を指定する指定情報を、あらかじめROM54の所定の記憶領域に記憶している。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、割込処理の優先順位を設定する。
そして、CPU56は、所定時間(例えば2ms)ごとに定期的にタイマ割込がかかるように遊技制御用マイクロコンピュータ560(具体的にはCPU56)に内蔵されているCTCのレジスタの設定を行なうタイマ割込設定処理を実行する(ステップS16)。すなわち、初期値として例えば2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、2msごとに定期的にタイマ割込がかかるとする。
タイマ割込の設定が完了すると、CPU56は、表示用乱数更新処理(ステップS18)を繰り返し実行する。CPU56は、表示用乱数更新処理が実行されるときには割込禁止状態にして(ステップS17)、表示用乱数更新処理の実行が終了すると割込許可状態にする(ステップS19)。なお、表示用乱数とは、特別図柄表示器8に表示される図柄を決定するための乱数であり、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。
また、CPU56は、表示用乱数を発生するためのカウンタのカウント値を繰り返し更新するとともに、初期値用乱数を発生するためのカウンタのカウント値を繰り返し更新するようにしてもよい。その場合、後述する遊技制御処理(遊技制御用マイクロコンピュータが、遊技機に設けられている可変表示装置9、可変入賞球装置15、球払出装置97等の遊技用の装置を、自身で制御する処理、または他のマイクロコンピュータに制御させるために指令信号を送信する処理、遊技装置制御処理ともいう)において、初期値用乱数を発生するためのカウンタのカウント値を+1する処理が実行される。初期値用乱数とは、大当り図柄決定用乱数、確変決定用乱数、普通図柄当り判定用乱数を発生するためのカウンタ(判定用乱数発生カウンタ)等のカウント値の初期値を決定するための乱数(ソフトウェア乱数)である。遊技制御処理において、CPU56は、判定用乱数発生カウンタ等のカウント値があらかじめ決められている更新最終値まで更新されたとき(例えば、カウント値が1周したとき)に、初期値決定用乱数の値を、判定用乱数発生カウンタに、更新初期値として設定する。そのように、初期値決定用乱数にもとづいて判定用乱数の所定の初期値を設定するように構成されている場合には、特定遊技状態の種類(例えば、特別図柄表示器8に表示させる特別図柄の他、大当り遊技におけるラウンド数、大当り遊技終了後に確変状態に移行させるか否かなど)を決定するために用いる判定用乱数のランダム性を向上させることができる。
なお、表示用乱数更新処理が実行されるときに割込禁止状態にされるのは、表示用乱数更新処理が後述するタイマ割込処理でも実行されることから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS18の処理中にタイマ割込が発生してタイマ割込処理中で表示用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS18の処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
また、遊技店員等は、クリアスイッチ921をオン状態してクリア信号が出力される状態にしながら遊技機に対する電力供給を開始する(例えば電源スイッチ914をオンする)ことによって、容易に初期化処理を実行させることができる。すなわち、RAMクリア等を行うことができる。
次に、メイン処理における乱数回路設定処理(ステップS15)を説明する。図42は、乱数回路設定処理を示すフローチャートである。乱数回路設定処理において、CPU56は、乱数回路設定プログラム551に含まれる乱数回路選択モジュール551fに従って処理を実行し、遊技制御用マイクロコンピュータ560が内蔵する各乱数回路503a,503bの中から、遊技制御処理を含むタイマ割込処理の実行時に用いる乱数回路を設定する(ステップS151)。ユーザ(例えば、遊技機の製作者)によって設定されたタイマ割込処理の実行時に用いる乱数回路503を指定する指定情報は、あらかじめROM54の所定の記憶領域に記憶されている。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、12ビット乱数回路503aまたは16ビット乱数回路503bのいずれかを選択し、選択した乱数回路をタイマ割込処理の実行時に用いる乱数回路として設定する。なお、この実施の形態では、大当り判定に用いられる乱数として、16ビット乱数回路503bが発生する乱数を用いるが、12ビット乱数回路503aと16ビット乱数回路503bとの双方について説明を行う。
上記のように、ステップS151において、更新可能な数値データの所定の範囲が異なる複数の乱数回路(12ビット乱数回路503aと16ビット乱数回路503b)について、それぞれ使用可能とするか否かを設定するので、タイマ割込処理の実行中に不要な乱数を処理することを防止することができ、遊技制御用マイクロコンピュータ560(具体的にはCPU56)の制御負担を軽減することができる。例えば、遊技制御用マイクロコンピュータ560が、2つの乱数回路503a,503bのうちの一方が発生する乱数のみを用いて遊技制御処理を行う場合、遊技制御処理に用いない方の乱数回路から乱数を読み出す処理等を行わないようにでき、遊技制御用マイクロコンピュータ560の制御負担を軽減できる。
CPU56は、ステップS151で使用する乱数回路503を設定すると、例えば、カウンタ521やクロック信号出力回路524の動作を停止させることによって、使用しないように設定した方の乱数回路のカウンタ521がカウント値Cを更新しないようにする。また、例えば、CPU56は、使用しないように設定した方の乱数回路のカウンタ521はカウント値Cを更新するが、CPU56は出力制御信号SCを出力しないようにし、乱数値記憶回路531から乱数を読み出せないように制御してもよい。また、例えば、CPU56は、使用しないように設定した方の乱数回路の乱数値取込レジスタ539に乱数値取込データ「01h」を書き込まないようにし、ラッチ信号生成回路533がラッチ信号SLを乱数値記憶回路531に出力しないように制御してもよい。
上記のように、使用する乱数回路503を設定するようにすることによって、使用する乱数回路503だけを設定することによって、生成する乱数の値の範囲を適切に設定することができる。また、タイマ割込処理の実行中に不要な乱数を処理することを防止することができ、遊技制御用マイクロコンピュータ560(具体的にはCPU56)の制御負担を軽減することができる。例えば、大当りとする判定値として離れた値(例えば、「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およびCPU56の処理負担を軽減することができる。
また、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)。カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを示す設定値は、あらかじめユーザによって設定されROM54の所定領域に記憶されている。そして、CPU56は、ROM54の所定の記憶領域に記憶された所定の設定値に従って、カウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521に入力する初期値を更新するか否かを設定する。この実施の形態では、CPU56は、ステップS157において、カウンタ521に入力する初期値を更新すると判定すると、所定の最終値までカウント値が更新されたとき(カウンタ521から通知信号を入力したとき)に初期値を更新する旨を示す初期値更新フラグをセットする。
なお、CPU56によってカウント値の初期値を変更するのでなく、最終値までカウント値を更新したことにもとづいて、乱数回路503側でカウント値の初期値を所定値に変更するようにしてもよい。例えば、乱数回路503は、初期値を更新する旨を示す初期値更新データを格納する初期値更新データレジスタ、および初期値の変更を行う初期値変更回路を備え、CPU56は、ステップS157において、初期値更新データを初期値更新データレジスタに設定する。この場合、カウンタ521は、最終値までカウント値を更新すると、通知信号を初期値変更回路に出力する。すると、初期値変更回路は、初期値更新データレジスタに初期値更新データが設定されているか否かを確認する。そして、初期値変更回路は、初期値更新データが設定されていることを確認すると、カウント値の初期値を所定値に変更する。なお、初期値変更回路は、後述するカウント値順列変更処理において、順列を変更したカウント値の初期値を変更してもよい。
また、CPU56は、乱数回路503のカウンタ521によって所定の最終値までカウント値が更新されたときに、カウンタ521が更新するカウント値の順列を変更するか否かを設定する(ステップS158)。カウンタ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)を説明する。図43は、乱数最大値再設定処理を示すフローチャートである。乱数最大値再設定処理において、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において設定可能な乱数最大値が「256」から「65535」までであるので、CPU56は、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」よりも小さいか否かを判定する。
読み込んだ乱数最大値が下限値よりも小さい場合には、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値に設定しなおす(ステップS153c)。12ビット乱数回路503aを設定した場合には、12ビット乱数回路503aの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」以下であると判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「4095」に設定しなおす。また、16ビット乱数回路503bを設定した場合、16ビット乱数回路503bの乱数最大値設定レジスタ535から読み込んだ乱数最大値が下限値「256」よりも小さいと判定すると、CPU56は、乱数最大値設定レジスタ535に設定される乱数最大値を所定値「65535」に設定しなおす。
以上のように、乱数最大値設定レジスタ535に設定した乱数最大値が所定の下限値よりも小さくなっている場合には、乱数最大値を所定値に設定しなおす。そのため、遊技制御用マイクロコンピュータ560の誤動作や、無線信号を用いた取り込み信号を遊技機に対して発生させるなどの行為によって、過度に小さい値が乱数の最大値として設定されてしまうことを防止することができる。従って、最小値から最大値までの値の範囲が過度に小さい乱数を生成する事態が発生することを防止することができる。
なお、この実施の形態では、ステップS152において、ユーザによってあらかじめ設定された乱数最大値を指定する乱数最大値設定データが、乱数最大値設定レジスタ535に書き込まれている。何らかの原因で書き込まれたはずの乱数最大値が変わった(所定の下限値よりも小さくなった)場合でも、乱数最大値は所定の下限値よりも小さいまま放置されることはない。また、ステップS152の処理を実行しないようにしてもよい。その場合でも、ステップS153の処理で、乱数最大値は所定の下限値よりも小さいまま放置されることはない。
次に、乱数回路設定処理における初期値変更処理(ステップS154)を説明する。図44は、初期値変更処理を示すフローチャートである。初期値変更処理において、CPU56は、まず、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データを読み出し、ユーザによって選択された初期値変更方式を特定する。この場合、CPU56は、読み出した初期値変更方式設定データの値が「01h」であるか否かを判定することによって(ステップS154a)、ユーザによって選択された初期値変更方式を特定する。
初期値変更方式設定データの値が「01h」である場合、CPU56は、乱数回路503のカウンタ521に入力する初期値を、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづいて設定された値に変更する(ステップS154b)。例えば、CPU56は、ROM54の所定の記憶領域に、遊技制御用マイクロコンピュータ560のIDナンバと、IDナンバにもとづいて所定の演算を行って求めた演算値とをあらかじめ対応付けて記憶している。そして、ステップS154bにおいて、CPU56は、記憶されているIDナンバにもとづく演算値にカウント値の初期値を変更させる。また、例えば、ステップS154bにおいて、CPU56は、遊技制御用マイクロコンピュータ560のIDナンバと所定値とを演算して(例えば、IDナンバ(例えば、「100」)に所定値(例えば、「100」)を加算して)求めた演算値(例えば、「200」)にカウント値の初期値を設定する。また、カウンタ521に入力する初期値を変更すると、遊技制御用マイクロコンピュータ560は、カウント値の初期値を変更した旨を示す初期値変更フラグをセットする(ステップS154c)。
なお、CPU56は、ステップS154bにおいてカウンタ521に入力する初期値を変更する際、乱数回路503の比較器522の乱数最大値設定レジスタ535の値を確認し、IDナンバにもとづいて設定された値が乱数最大値以上であるか否かを判断する。そして、IDナンバにもとづいて設定された値が乱数最大値以上であると判断すると、CPU56は、カウンタ521に入力する初期値を変更しない(例えば、初期値を「0」のまま変更しない)。そのようにすることによって、カウント値の初期値が乱数最大値以上の値に設定されてしまう事態を防止することができる。
ステップS154aにおいて、初期値変更方式設定データの値が「01h」でない場合(すなわち、ユーザプログラム実行データエリアの1F97h番地の領域に記憶されている初期値変更方式設定データの値が「00h」である場合)、CPU56は、カウント値の初期値の変更を行わず、そのまま初期値変更処理を終了し、ステップS155に移行する。
乱数回路設定処理が実行されることによって、遊技制御処理を含むタイマ割込処理の実行時に乱数回路503に各種信号が入力され、乱数回路503内で各種信号が生成される。図45は、乱数回路503に各信号が入力されるタイミング、および乱数回路503内で各信号が生成されるタイミングを示すタイミングチャートである。
図45に示すように、クロック回路501は、所定周期ごと(図45に示すタイミングT11,T21,・・・)に、出力端子の信号レベルをローレベルからハイレベルに立ち上げることによって、乱数回路503に基準クロック信号CLK(図45(A)参照)を入力する。
クロック信号出力回路524は、クロック回路501から供給された基準クロック信号CLKを分周し、乱数発生用クロック信号SI1(図45(B)参照)を生成する。例えば、クロック信号出力回路524は、タイミングT11,T12,・・・で出力端子の信号レベルをローレベルからハイレベルに立ち上げ、タイミングT21,T22,・・・で信号レベルをハイレベルからローレベルに立ち下げることによって、乱数発生用クロック信号SI1を出力する。
なお、図45に示す例では、説明を分かりやすくするために、クロック信号出力回路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(図45(C)参照)を生成する。例えば、反転回路532は、タイミングT11,T12,・・・で出力端子の信号レベルをハイレベルからローレベルに立ち下げ、タイミングT21,T22,・・・で信号レベルをローレベルからハイレベルに立ち上げることによって、反転クロック信号SI2を出力する。また、反転回路532によって生成された反転クロック信号SI2は、ラッチ信号生成回路533に出力される。
ラッチ信号生成回路533には、入賞検出信号SS(図45(D)参照)がタイマ回路534に入力されてから所定時間(例えば3ミリ秒)が経過すると、乱数値読取信号出力回路526から乱数値読取信号が入力される。例えば、乱数値読取信号出力回路526の出力端子の信号レベルがローレベルからハイレベルに立ち上がることによって、ラッチ信号生成回路533に乱数値読取信号が入力される。ラッチ信号生成回路533は、乱数更新方式選択信号出力回路527から第2の乱数更新方式選択信号が入力されたことに応じて、乱数値読取信号出力回路526から入力する乱数値読取信号を反転回路532から供給される反転クロック信号SI2の立ち上がりエッヂに同期させて、ラッチ信号SL(図45(E)参照)を出力する。
以上のように、乱数回路503は、タイミングT11,T12,T13・・・においてカウント値Cを更新し、タイミングT11,T12,T13とは異なるタイミングT22においてラッチ信号SLを出力させ、乱数値記憶回路531に乱数値を記憶する。
次に、メイン処理におけるシリアル通信回路設定処理(ステップS15a)を説明する。図46は、シリアル通信回路設定処理を示すフローチャートである。シリアル通信回路設定処理において、CPU56は、まず、シリアル通信回路設定プログラム556に従って処理を実行し、シリアル通信回路505のボーレートを設定する(ステップS1511)。この場合、CPU56は、シリアル通信回路505のボーレートレジスタ702に、設定するボーレートに対応する設定値を書き込む。ユーザ(例えば、遊技機の製作者)によって設定された設定値を指定する指定情報は、あらかじめROM54の所定の記憶領域に記憶されている。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、設定値をボーレートレジスタ702に書き込む。例えば、CPU56によってボーレート設定値「156」が設定された場合、ボーレート生成回路703によって、式(1)およびクロック周波数「3MHz」を用いてボーレート「1201.92bps」が生成される。
また、CPU56は、シリアル通信回路505が送受信するデータのデータフォーマットを設定する(ステップS1512)。この場合、CPU56は、制御レジスタA707の各ビットの値を設定することによって、送受信データのデータ長(8ビットまたは9ビット)、パリティ機能の使用の有無を設定する。例えば、ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタA707の各ビットの値を指定する指定情報は、あらかじめROM54の所定の記憶領域に記憶されている。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタA707の各ビットの値を設定する。
また、CPU56は、シリアル通信回路505が発生する各割込要求を許可するか否かを設定する(ステップS1513)。この場合、CPU56は、制御レジスタB708のビット5,6の値を設定することによって、送信時割り込み要求および受信時割り込み要求を許可するか否かを設定する。また、CPU56は、制御レジスタC709のビット0〜3の値を設定することによって、各通信エラー時割り込み要求を許可するか否かを設定する。ユーザ(例えば、遊技機の製作者)によって設定された制御レジスタB708および制御レジスタC709の各ビットの値を指定する指定情報は、あらかじめROM54の所定の記憶領域に記憶されている。そして、CPU56は、ROM54の所定の記憶領域に記憶された指定情報に従って、制御レジスタB708および制御レジスタC709の各ビットの値を設定する。
次に、遊技制御処理について説明する。図47は、タイマ割込処理を示すフローチャートである。メイン処理の実行中に、具体的には、ステップS17〜S19のループ処理の実行中における割込許可になっている期間において、タイマ割込が発生すると、CPU56は、タイマ割込の発生に応じて起動されるタイマ割込処理において遊技制御処理を実行する。タイマ割込処理において、CPU56は、まず、電源断信号が出力されたか否か(オン状態になったか否か)を検出する電源断処理を実行する(ステップS20)。電源断処理では、CPU56は、電源断信号がオン状態であれば、データが保存されていることを示す実行状態情報を電源バックアップされているRAMに保存するとともに、パリティデータを作成して電源バックアップされているRAMに保存する。
次いで、入力ドライバ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23および入賞口スイッチ29a,30a,33a,39a等のスイッチの検出信号を入力し、それらの状態判定を行う(スイッチ処理:ステップS21)。具体的には、各スイッチの検出信号を入力する入力ポートの状態がオン状態であれば、各スイッチに対応して設けられているスイッチタイマの値を+1する。
次に、CPU56は、乱数回路設定処理において所定の最終値までカウント値が更新されたときに初期値を更新する旨の設定がされているか否か(ステップS157参照)を確認し、乱数回路503のカウンタ521に入力する初期値を更新する処理を行う(初期値更新処理:ステップS22)。
次に、遊技制御に用いられる各判定用乱数を生成するための各カウンタのカウント値を更新する処理を行う(ステップS23:判定用乱数更新処理)。判定用乱数とは、大当り図柄等を決定するための乱数(ソフトウェア乱数)である。この実施の形態では、図48に示すように、ソフトウェア乱数として、
ランダム1:はずれを発生させる特別図柄を決定するためのはずれ図柄決定用乱数
ランダム2:大当りを発生させる特別図柄を決定するための大当り図柄決定用乱数
ランダム3:特別図柄の変動パターンを決定するための変動パターン決定用乱数
ランダム4:普通図柄にもとづく当りを発生させるか否か決定するための普通図柄当り判定用乱数
ランダム5:確変状態に制御するか否かを決定するための確変決定用乱数
が用いられる。
この実施の形態では、ランダム2,4,5が判定用乱数であり、ランダム1,3は表示用乱数である。
なお、CPU56は、所定の更新初期値(例えば、ランダム2についての0)から所定の更新最終値(例えば、ランダム2についての9)まで循環的に更新する。循環的とは、カウンタの値が更新最終値を越えたら更新初期値に戻すという意味である。また、大当りとするか否か決定するための大当り判定用乱数として、乱数値記憶回路531に格納されているランダムRの値が使用される。
また、この実施の形態では、ランダム2にもとづいて大当り図柄を決定し、ランダム5にもとづいて確変状態に移行させるか否か決定するが、1つの乱数にもとづいて大当り図柄と確変状態に移行させるか否かと決定するようにしてもよい。例えば、ランダム2のみを用いる場合には、ランダム2の値が「7」であれば大当り図柄を「7」にするとともに確変状態に移行させることに決定し、それ以外の値であれば、大当り図柄をランダム2の値に応じたものにするとともに確変状態に移行させないことに決定する。そのような制御を行うことによって、CPU56が使用するデータを減らすことができ、その結果、CPU56の負担を軽くすることができる。
また、図48に例示したソフトウェア乱数の他に、他のソフトウェア乱数を用いてもよい。例えば、大当り遊技におけるラウンド数を抽選によって決定するためのラウンド数決定用乱数や、大当り遊技中の1ラウンドの最大入賞球数を決定するための賞球個数抽選用乱数や大当り遊技中の各ラウンドにおける大入賞口への入賞に対する賞球個数を決定するための大当り中賞球個数抽選用乱数などを用いてもよい。また、1つのソフトウェア乱数によって、大当り図柄を決定するとともに、ラウンド数を抽選によって決定するようにしてもよい。さらに、確変大当りとすることに決定された場合に、通常のラウンド数(例えば、15ラウンド)の通常確変大当り遊技を行うのか、ラウンド数が少なく(例えば2ラウンド)、かつラウンドの時間が極めて短いいわゆる突然確変大当り遊技を行うのかを決定するためにソフトウェア乱数を用いてもよい。その場合に、1つのソフトウェア乱数によって、通常確変大当り遊技を行うのか突然確変大当り遊技を行うのかを決定するとともに、大当り図柄を決定するようにしてもよい。
さらに、CPU56は、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行う(表示用乱数更新処理:ステップS24)。
次いで、CPU56は、乱数回路503のカウンタ521が出力するカウント値の順列をカウント値順列変更回路523に変更させるカウント値順列変更処理を行う(ステップS25)。この実施の形態では、乱数回路設定処理のステップS158でカウント値順列変更フラグがセットされているか否かによって、カウント値順列変更処理を実行するか否かが決定されている。そして、CPU56は、カウント値順列変更フラグがセットされていることにもとづいて、カウント値順列変更処理を実行する。
さらに、CPU56は、特別図柄プロセス処理を行う(ステップS26)。特別図柄プロセス制御では、遊技状態に応じて特別図柄表示器8および大入賞口を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理を選び出して実行する。そして、特別図柄プロセスフラグの値を、遊技状態に応じて各処理中に更新する。また、普通図柄プロセス処理を行う(ステップS27)。普通図柄プロセス処理では、普通図柄表示器10の表示状態および可変入賞球装置15の開閉状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理を選び出して実行される。そして、普通図柄プロセスフラグの値を、遊技状態に応じて各処理中に更新する。
次いで、CPU56は、特別図柄の変動に同期する飾り図柄に関する演出制御コマンドをRAM55の所定の領域に設定して演出制御コマンドを送出する処理を行う(演出制御コマンド制御処理:ステップS28)。なお、飾り図柄の変動が特別図柄の変動に同期するとは、変動時間(可変表示期間)が同じであることを意味する。
さらに、CPU56は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力する情報出力処理を行う(ステップS29)。
また、CPU56は、入賞口スイッチ29a,30a,33a,39a等の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS30)。具体的には、入賞口スイッチ29a,30a,33a,39a等がオンしたことにもとづく入賞検出に応じて、払出制御基板37に賞球個数を示す賞球個数信号等の払出指令コマンドを出力する。払出制御基板37に搭載されている払出制御用マイクロコンピュータ370は、賞球個数を示す賞球個数信号の受信に応じて球払出装置97を駆動する。
また、遊技機の制御状態を遊技機外部で確認できるようにするための試験信号を出力する処理である試験端子処理を実行する(ステップS31)。また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、CPU56は、ソレノイドに関する出力ポートのRAM領域におけるソレノイドに関する内容を出力ポートに出力する(ステップS32:出力処理)。その後、CPU56は、割込許可状態に設定し(ステップS33)、処理を終了する。
以上の制御によって、この実施の形態では、遊技制御処理は定期的(例えば2msごと)に起動されることになる。なお、この実施の形態では、タイマ割込処理で遊技制御処理が実行されているが、タイマ割込処理では例えば割込が発生したことを示すフラグのセットのみがなされ、遊技制御処理はフラグがセットされたことにもとづいてメイン処理において実行されるようにしてもよい。
また、例えば、タイマ割込処理では遊技制御処理のうちスイッチ処理(ステップS21)、演出制御コマンド制御処理(ステップS28)、および後述する割込回数カウント処理(ステップS3201a,S3202)のみを実行するようにし、遊技制御処理のうちの他の処理をメイン処理において実行するようにしてもよい。この場合、CPU56は、メイン処理におけるステップS17からステップS19までのループ処理において、遊技制御処理のうち、ステップS22〜ステップS27、およびステップS29〜ステップS33の処理を実行する。また、タイマ割込処理では遊技制御処理のうちスイッチ処理(ステップS21)、および後述する割込回数カウント処理(ステップS3201a,S3202)のみを実行するようにし、遊技制御処理のうちの他の処理をメイン処理において実行するようにしてもよい。
また、ステップS21〜S30の処理(ステップS29を除く)が、遊技の進行を制御する遊技制御処理に相当する。
次に、タイマ割込処理における初期値更新処理(ステップS22)について説明する。図49は、初期値更新処理を示すフローチャートである。初期値更新処理において、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)、初期値更新処理を終了する。
なお、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に入力する初期値を更新することなく、そのまま初期値更新処理を終了し、ステップS24に移行する。
次に、タイマ割込処理におけるカウント値順列変更処理(ステップS25)について説明する。図50は、カウント値順列変更処理を示すフローチャートである。CPU56は、カウント値順列変更プログラム554に従って処理を実行することによって、カウント値順列変更処理を行う。カウント値順列変更処理において、CPU56は、乱数回路503のカウンタ521が出力するカウント値Cを最終値まで更新した旨を示す通知信号の状態を確認する(ステップS241)。通知信号がオン状態になっていることを検出した場合には、CPU56は、カウント値順列変更フラグがセットされているか否かを確認する(ステップS242)。すなわち、CPU56は、乱数回路設定処理において、所定の最終値までカウント値が更新されたときにカウンタ521が更新するカウント値の順列を変更する旨の設定がなされたか否か(ステップS158参照)を確認する。
カウント値順列変更フラグがセットされている場合、CPU56は、乱数回路503のカウンタ521が所定の最終値までカウント値を更新したときに、カウンタ521が更新するカウント値の順列を変更すると判断する。そして、遊技制御用マイクロコンピュータ560は、カウント値順列変更レジスタ536にカウント値順列変更データ「01h」を書き込む(ステップS243)。すなわち、CPU56は、カウント値順列変更データ「01h」を書き込むことによって、乱数値記憶回路531に入力されるカウント値Cの順列をカウント値順列変更回路523に変更させる。
以上のように、カウント値順列変更処理において、乱数を所定の最終値まで更新したときに、カウンタ521が更新するカウント値の順列を変更するので、乱数回路503が生成する乱数のランダム性をより向上させることができる。
次に、メイン処理における特別図柄プロセス処理(ステップS26)を説明する。図51は、CPU56が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。CPU56は、遊技盤6に設けられている始動入賞口14に遊技球が入賞したことを検出するための始動口スイッチ14aがオンしていたら、すなわち遊技球が始動入賞口14に入賞する始動入賞が発生していたら(ステップS311)、始動口スイッチ通過処理(ステップS312)を行った後に、内部状態に応じて、ステップS300〜S307のうちのいずれかの処理を行う。
特別図柄通常処理(ステップS300):特別図柄の可変表示を開始できる状態(例えば、特別図柄表示器8において図柄の変動がなされていず、特別図柄表示器8における前回の図柄変動が終了してから所定期間が経過し、かつ、大当り遊技中でもない状態)になるのを待つ。特別図柄の可変表示が開始できる状態になると、特別図柄についての始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、乱数回路503が生成し特図保留メモリ570に記憶されているランダムRにもとづいて、特別図柄の可変表示の結果を大当りとするか否か決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS301に対応した値に更新する。
特別図柄停止図柄設定処理(ステップS301):特別図柄の可変表示後の停止図柄を決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS302に対応した値に更新する。
変動パターン設定処理(ステップS302):変動パターンを決定し、その変動パターンにおける変動時間(可変表示時間:可変表示を開始してから表示結果が導出表示(停止表示)するまでの時間)を特別図柄の可変表示の変動時間とすることに決定する。また、決定した特別図柄の変動時間を計測する変動時間タイマをスタートさせる。そして、内部状態(特別図柄プロセスフラグ)をステップS303に対応した値に更新する。
特別図柄変動中処理(ステップS303):所定時間(ステップS302の変動時間タイマで示された時間)が経過すると、内部状態(特別図柄プロセスフラグ)をステップS304に対応した値に更新する。
特別図柄停止処理(ステップS304):音/ランプ制御基板80bに対して、飾り図柄の停止を指示するための飾り図柄停止指定コマンドを送信する。また、特別図柄表示器8における特別図柄を停止させる。そして、特別図柄の停止図柄が大当り図柄である場合には、内部状態(特別図柄プロセスフラグ)をステップS305に対応した値に更新する。そうでない場合には、内部状態をステップS300に対応した値に更新する。なお、飾り図柄停止指定コマンドを送信しない構成にしてもよい。この場合、音/ランプ制御基板80bにおける音/ランプ制御用CPU101bは、主基板31からの変動パターンコマンドにもとづいて変動時間タイマに変動時間を設定するとともに、その変動時間タイマを更新していくことで飾り図柄の変動時間を独自に監視し、その変動時間が経過したと判定したときに飾り図柄を停止する処理を行う。
大入賞口開放前処理(ステップS305):大入賞口を開放する制御を開始する。具体的には、カウンタ(例えば大入賞口に入った遊技球数をカウントするカウンタ)やフラグ(入賞口への入賞を検出する際に用いられるフラグ)を初期化するとともに、ソレノイド21を駆動して大入賞口を開放する。また、プロセスタイマによって大入賞口開放中処理の実行時間を設定し、大当り中フラグをセットする。そして、内部状態(特別図柄プロセスフラグ)をステップS306に対応した値に更新する。
大入賞口開放中処理(ステップS306):大入賞口ラウンド表示の演出制御コマンドを音/ランプ制御基板80bに送出する制御や大入賞口の閉成条件(例えば、大入賞口に所定個数(例えば10個)の遊技球が入賞したこと)の成立を確認する処理等を行う。大入賞口の閉成条件が成立したら、大当り遊技状態継続の条件が成立し、かつ、まだ残りラウンドがある場合には、内部状態をステップS305に対応した値に更新する。全てのラウンドを終えた場合には、内部状態をステップS307に対応した値に更新する。
大当り終了処理(ステップS307):大当り遊技状態が終了したことを遊技者に報知する表示制御を音/ランプ制御手段を介して図柄制御手段に行わせるための制御を行う。そして、内部状態をステップS300に対応した値に更新する。
図52は、音/ランプ制御基板80bに送出される演出制御コマンドの内容の一例を示す説明図である。図52に示す例において、コマンド8001(H)〜8009(H)は、特別図柄の可変表示に対応して可変表示装置9において可変表示される飾り図柄の変動パターンを指定する演出制御コマンド(変動パターンコマンド)である。なお、変動パターンを指定する演出制御コマンドは、変動開始を指定するためのコマンドでもある。
コマンド9000(H)は、可変表示装置9の表示結果が確変大当り図柄であることを指定する演出制御コマンド(確変大当り指定コマンド)である。コマンド9001(H)は、可変表示装置9の表示結果が非確変大当り図柄(通常大当り図柄)であることを指定する演出制御コマンド(通常大当り指定コマンド)である。コマンド9002(H)は、可変表示装置9の表示結果がはずれ図柄であることを指定する演出制御コマンド(はずれ指定コマンド)である。例えば大当り中に再抽選演出を行う場合、確変大当りでも確変大当り図柄が表示結果とはならないので、表示結果の指定でなく、大当りとするか否か、および大当りの種類を指定する演出制御コマンドを送信してもよい。
なお、コマンド9000(H)〜9002(H)は可変表示装置9の表示結果を指定する演出制御コマンドであるので、コマンド9000(H)〜9002(H)を表示結果コマンドという。
コマンドA000(H)は、可変表示装置9における飾り図柄の可変表示(変動)の停止を指定する演出制御コマンド(飾り図柄停止指定コマンド)である。
コマンドBXXX(H)は、大当り遊技開始から大当り遊技終了までの間に送出される演出制御コマンドである。そして、コマンドD000(H)〜EXXX(H)は、飾り図柄の変動および大当り遊技に関わらない可変表示装置9の表示状態に関する演出制御コマンドである。
コマンドB000(H)は、大当り遊技が開始されることを指定する演出制御コマンド(大当り開始指定コマンド)である。コマンドB1XX(H)は、大当り遊技中のラウンド中の表示を指定する演出制御コマンド(大入賞口開放時表示コマンド)である。なお、「XX」に表示するラウンド数が設定される。コマンドB2XX(H)は、大当り遊技中のラウンド後の表示(ラウンド間のインターバルの表示)を指定する演出制御コマンド(大入賞口開放後表示コマンド)である。なお、「XX」に表示するラウンド数が設定される。コマンドB300(H)は、大当り遊技の終了を指定する演出制御コマンド(大当り終了指定コマンド)である。
コマンドD000(H)は、客待ちデモンストレーションを指定する演出制御コマンドである。また、コマンドE000(H)は、遊技状態が確変状態(高確率状態)になったことを指定する演出制御コマンド(確変状態指定コマンド)である。コマンドE001(H)は、遊技状態が時短状態になったことを指定する演出制御コマンド(時短状態指定コマンド)である。コマンドE002(H)は、遊技状態が確変状態でも時短状態でもない状態になったことを指定する演出制御コマンド(通常状態指定コマンド)である。
音/ランプ制御基板80bに搭載されている音/ランプ制御用マイクロコンピュータ100bは、主基板31に搭載されている遊技制御用マイクロコンピュータ560から上述した演出制御コマンドを受信すると、図52に示された内容に応じてスピーカ27の音声出力制御を実行するとともに、ランプの点灯制御を実行する。また、音/ランプ制御用マイクロコンピュータ100bは、受信した演出制御コマンドを図柄制御用マイクロコンピュータ100aに送信したり、受信した演出制御コマンドにもとづいてコマンドを生成し、生成したコマンドを図柄制御用マイクロコンピュータ100aに送信する。図柄制御用マイクロコンピュータ100aは、音/ランプ制御用マイクロコンピュータ100bからのコマンドを受信すると、受信コマンドに従って可変表示装置9の表示制御を実行する。
なお、図52に示された演出制御コマンド以外の演出制御コマンドも主基板31から音/ランプ制御基板80bに送信される。
図53は、始動口スイッチ通過処理(ステップS312)を示すフローチャートである。始動口スイッチ通過処理において、遊技制御用マイクロコンピュータ560のCPU56は、始動入賞カウンタが示す始動入賞記憶数(または特図保留メモリ570が記憶している始動入賞記憶数)が最大値である4に達しているかどうか確認する(ステップS3201)。始動入賞記憶数が4に達していなければ、CPU56は、タイマ割込処理を実行した回数を示す割込実行回数カウンタの値を1加算する(ステップS3201a)。すなわち、CPU56は、タイマ割込処理を実行した回数をカウントする処理を実行する。この実施の形態では、CPU56は、ステップS3201aを実行することによって、タイマ割込処理を実行するごとに、タイマ割込処理を実行した回数を示す割込実行回数カウンタをカウントアップする。割込実行回数カウンタの値を1加算すると、CPU56は、割込実行回数カウンタに示されるタイマ割込処理の実行回数が所定回数(例えば、3回)に達しているか否かを確認する(ステップS3202)。なお、タイマ割込処理の実行回数が所定回数に達すると、ステップS3207で、CPU56は、割込実行回数カウンタをリセットする。そして、CPU56は、遊技球が始動入賞口14に入賞したあと、割込実行回数カウンタが所定回数に達しているか否かを確認する。
ステップ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では、図48に示された乱数のうち、ランダム1〜ランダム3,ランダム5が抽出される。
ステップS3201において始動入賞記憶数が最大値である4に達している場合、およびステップS3202においてタイマ割込処理の実行回数が所定回数に達してない場合、そのまま始動口スイッチ通過処理を終了する。
以上のように、始動口スイッチ通過処理において、乱数値記憶回路531からランダムRを読み出すにあたって、タイマ割込処理が所定回数実行されたこと(すなわち、タイマ割込処理が所定回数実行される間継続して入賞検出信号SSが入力されたこと)を条件に、乱数値記憶回路531から乱数を読み出す。そのため、乱数を読み出してから、乱数値記憶回路531に記憶される乱数の値が更新される前に再び乱数を読み出してしまうことを防止することができる。また、前回乱数値記憶回路531から読み出した乱数と同じ値の乱数を再び読み出してしまうことを防止することができる。
次に、特別図柄プロセス処理における特別図柄通常処理(ステップS300)について説明する。図54は、特別図柄通常処理を示すフローチャートである。特別図柄通常処理において、遊技制御用マイクロコンピュータ560のCPU56は、特別図柄の変動を開始することができる状態(例えば特別図柄プロセスフラグの値がステップS300を示す値となっている場合)には、始動入賞記憶数(保留記憶数)の値を確認する(ステップS51)。具体的には、始動入賞記憶カウンタのカウント値を確認する。なお、特別図柄プロセスフラグの値がステップS300を示す値となっている場合とは、可変表示装置9において図柄の変動がなされていず、かつ、大当り遊技中でもない場合である。また、ステップS51で始動入賞記憶数が0である場合には、CPU56は、そのまま特別図柄通常処理を終了する。
始動入賞記憶数が0でなければ、始動入賞記憶数=1に対応する保存領域(特別図柄判定用バッファ)に格納されている各乱数値(ランダムRや各判定用乱数、表示用乱数)を読み出してRAM55の乱数バッファ領域に格納するとともに(ステップS52)、始動入賞記憶数の値を1減らし(始動入賞記憶カウンタの値を1減らし)、かつ、各保存領域の内容をシフトする(ステップS53)。すなわち、始動入賞記憶数=n(n=2,3,4)に対応する保存領域に格納されている各乱数値を、始動入賞記憶数=n−1に対応する保存領域に格納する。よって、各始動入賞記憶数に対応するそれぞれの保存領域に格納されている各乱数値が抽出された順番は、常に、始動入賞記憶数=1,2,3,4の順番と一致するようになっている。すなわち、この例では、CPU56は、可変表示の開始条件が成立する毎に、各保存領域の内容をシフトする処理を実行する。
そして、特別図柄プロセスフラグの値を特別図柄停止図柄設定処理(ステップS301)に対応した値に更新する(ステップS54)。
図55は、特別図柄停止図柄設定処理を示すフローチャートである。特別図柄停止図柄設定処理において、遊技制御用マイクロコンピュータ560のCPU56は、乱数バッファ領域から大当り判定用乱数(ランダムR)を読み出し(ステップS61)、大当り判定モジュールを実行する(ステップS62)。大当り判定モジュールは、あらかじめ決められている大当り判定値と大当り判定用乱数とを比較し、それらが一致したら大当りとすることに決定する処理を実行するプログラムである。大当りとすることに決定した場合には(ステップS63)、ステップS81に移行する。なお、大当りとするか否か決定するということは、大当り遊技状態に移行させるか否か決定するということであるが、特別図柄表示器8および可変表示装置9において停止図柄を大当り図柄とするか否か決定するということでもある。
ステップS62,S63では、確変フラグがセットされていない場合、CPU56は、遊技状態が確変状態以外の通常状態であると判断し、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、通常時大当り判定テーブル(図38(A)参照)を用いる。また、確変フラグがセットされている場合、CPU56は、遊技状態が確変状態であると判断し、特別図柄表示器8の表示結果を大当り図柄とするか否かを判定するために用いるテーブルとして、確変時大当り判定テーブル(図38(B)参照)を用いる。そして、大当り判定用乱数の値が、テーブルに設定されている大当り判定値(図38(A),(B)における左欄に記載されている値)と一致するか否か判定する。
大当りとしないことに決定した場合には、CPU56は、乱数バッファ領域からはずれ図柄決定用乱数を読み出し(ステップS64)、はずれ図柄決定用乱数にもとづいてはずれ図柄を決定する(ステップS65)。そして、ステップS87に移行する。大当りとすることに決定した場合には、ステップS81に移行する。
ステップS81では、CPU56は、大当りフラグをセットする。そして、乱数バッファ領域から大当り図柄決定用乱数を読み出し(ステップS82)、大当り図柄決定用乱数にもとづいて大当り図柄を決定する(ステップS83)。また、確変決定用乱数を読み出し(ステップS84)、確変決定用乱数にもとづいて確変大当りとするか否か決定する(ステップS85)。確変大当りとする場合には、確変大当りフラグをセットし(ステップS86)、ステップS87に移行する。確変大当りとしない場合には、そのままステップS87に移行する。
ステップS87では、特別図柄プロセスフラグの値を変動パターン設定処理(ステップS302)に対応した値に更新する。
図56は、特別図柄プロセス処理における変動パターン設定処理を示すフローチャートである。変動パターン設定処理において、CPU56は、乱数バッファ領域から変動パターン決定用乱数を読み出す(ステップS101)。そして、変動パターンテーブルから変動パターンを選択する(ステップS102)。ステップS102では、変動パターン決定用乱数と一致する数値に対応するデータを変動パターンテーブルから抽出し、そのデータが示す変動パターンを選択する。
次いで、CPU56は、確変大当りとすることに決定されている場合には確変大当り指定の演出制御コマンド(確変大当り指定コマンド)を送信し、確変大当りとしないことに決定されている場合には通常大当り指定の演出制御コマンド(通常大当り指定コマンド)を送信し、大当りとすることに決定されていない場合にははずれ指定の演出制御コマンド(はずれ指定コマンド)を送信するように制御する(ステップS103)。
次いで、CPU56は、ステップS102で選択した変動パターンに応じた変動パターンコマンドを演出制御用マイクロコンピュータ100に送信する制御を行う(ステップS104)。また、特別図柄の変動を開始する(ステップS105)。また、RAM55に形成されている変動時間タイマに、変動パターンの変動時間に応じた値を設定する(ステップS106)。そして、特別図柄プロセスフラグの値を特別図柄変動中処理(ステップS303)に対応した値に更新する(ステップS107)。
図57は、特別図柄プロセス処理における特別図柄変動中処理を示すフローチャートである。特別図柄変動中処理において、CPU56は、変動時間タイマを1減算し(ステップS121)、変動時間タイマがタイムアウトしたら(ステップS122)、特別図柄プロセスフラグの値を特別図柄停止処理(ステップS304)に対応した値に更新する(ステップS123)。変動時間タイマがタイムアウトしていない場合には、そのまま処理を終了する。
次に、主基板31と払出制御基板37との間で送受信される払出制御信号および払出制御コマンドについて説明する。この実施の形態では、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505と、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376(図59参照)との間で、各種払出制御コマンドが送受信される。なお、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376は、例えば遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505と同様に構成されている。図58は、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370との間で送受信される制御信号(コマンド)の内容の一例を示す説明図である。
賞球個数信号は、払出要求を行う遊技球の個数(0〜15個)を指定するために出力されるコマンドである。賞球ACKコマンド「D2」は、払出制御手段が賞球個数信号を受信したことを遊技制御手段に通知するためのコマンドである。賞球ACKコマンドは、賞球個数信号を受信したことを示す受信確認信号に相当する。初期化コマンドは、電力供給が開始されたときに、遊技制御用マイクロコンピュータ560が初期化処理を実行したことを示すコマンドである。復旧コマンドは、電力供給が開始されたときに、遊技制御用マイクロコンピュータ560が遊技状態復旧処理を実行したことを示すコマンドである。
図59は、図58に示すコマンドの送受信に用いられる信号線等を示すブロック図である。図59に示すように、賞球個数信号は、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505から出力され、出力回路67および入力回路373Aを介して、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376に入力される。また、賞球ACKコマンドは、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376から出力され、出力回路373Bおよび入力回路68を介して、遊技制御用マイクロコンピュータ560が内蔵するシリアル通信回路505に入力される。
また、初期化コマンドおよび復旧コマンドは、出力回路67および入力回路373Aを介して、払出制御用マイクロコンピュータ370に入力される。
なお、この実施の形態では、初期化コマンドおよび復旧コマンドは、遊技制御用マイクロコンピュータ560の出力ポートから出力されるパラレルデータである。遊技制御用マイクロコンピュータ560は、初期化コマンドおよび復旧コマンドを出力するときに、例えば、初期化コマンドおよび復旧コマンドのデータ(図58参照)とともに、取込信号に相当する払出制御INT信号(図示せず)を出力する。払出制御INT信号は、払出制御用マイクロコンピュータ370の割込端子に入力され、払出制御用マイクロコンピュータ370は、払出制御INT信号の入力にもとづく割込処理によって初期化コマンドおよび復旧コマンドを受信する。
また、この実施の形態では、賞球個数信号および賞球ACKコマンドは、シリアル信号である。しかし、賞球個数信号および賞球ACKコマンドを、初期化コマンドおよび復旧コマンドの場合と同様に、払出制御INT信号を伴うパラレルデータとして送受信してもよい。その場合には、賞球個数信号および賞球ACKコマンドは、I/Oポートを介して送受信される。そして、払出制御用マイクロコンピュータ370は、払出制御INT信号の入力にもとづく割込処理によって賞球個数信号を受信する。また、初期化コマンドおよび復旧コマンドを、シリアル信号で送信してもよい。
さらに、この実施の形態では、払出制御に関して、賞球個数信号および賞球ACKコマンドを使用する双方向通信が実行されるが、賞球ACKコマンドを使用せずに、主基板31から払出制御基板37に対する単方向通信を行うようにしてもよい。
図60は、払出制御信号および払出制御コマンドの出力の仕方の一例を示すタイミング図である。図60に示すように、入賞検出スイッチが遊技球の入賞を検出すると、遊技制御手段(遊技制御用マイクロコンピュータ560)は、入賞に応じて払い出される賞球数に応じた賞球個数信号を払出制御手段(払出制御用マイクロコンピュータ370)に送信する。なお、具体的には、遊技制御用マイクロコンピュータ560は、遊技球が遊技機に設けられている入賞領域に入賞したことを入賞検出スイッチの検出信号によって検知すると、あらかじめ決められた賞球数をバックアップRAMに形成されている総賞球数格納バッファの内容に加算する。そして、総賞球数格納バッファの内容が0でない値になったら、入賞に応じて払い出される賞球数に応じた賞球個数信号を払出制御用マイクロコンピュータ370に送信する。
また、この実施の形態では、始動口スイッチ14aで遊技球が検出されると4個の賞球払出を行い、入賞口スイッチ33a,39a,29a,30aのいずれかで遊技球が検出されると7個の賞球払出を行い、カウントスイッチ23で遊技球が検出されると15個の賞球払出を行う。具体的には、遊技制御用マイクロコンピュータ560は、払い出される賞球数に応じて、賞球数が4個の場合には賞球数が4個であることを示す賞球個数信号「04」を送信し、賞球数が7個の場合には賞球数が7個であることを示す賞球個数信号「07」を送信し、賞球数が15個の場合には賞球数が15個であることを示す賞球個数信号「0F(H)」を送信する。なお「H」は16進数であることを示す。
賞球個数信号の送信を完了すると、遊技制御用マイクロコンピュータ560のシリアル通信回路505は、図60に示すように、遊技制御用マイクロコンピュータ560のCPU56に対して送信時割り込み要求を行う。送信時割込要求によって、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、賞球個数信号の送信を完了した状態となったことを認識し、払出制御用マイクロコンピュータ370からの受信確認信号の待ち状態となる。
払出制御用マイクロコンピュータ370は、賞球個数信号の受信を確認すると、受信した賞球個数信号に示される賞球数を、払出制御用マイクロコンピュータ370の賞球払出予定総数カウンタに格納する(図78参照)。そして、払出制御用マイクロコンピュータ370は、賞球ACKコマンド「D2」を、遊技制御用マイクロコンピュータ560に送信する。なお、この実施の形態では、払出制御用マイクロコンピュータ370は、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376からの受信時割り込み要求にもとづく割込処理において受信時割込フラグをセットし、図78に示す主制御通信処理において受信時割込フラグがセットされていたら賞球数を賞球払出予定総数カウンタに格納するが、シリアル通信回路376からの受信時割り込み要求にもとづく割込処理において賞球数を賞球払出予定総数カウンタに格納するようにしてもよい。この場合、払出制御用マイクロコンピュータ370が内蔵するシリアル通信回路376は、賞球個数信号を受信すると、払出制御用マイクロコンピュータ370のCPUに受信時割り込み要求を行う。そして、払出制御用マイクロコンピュータ370のCPUは、シリアル通信回路376からの割り込み要求に応じて割込処理を実行することによって、賞球数を賞球払出予定総数バッファに格納する。なお、払出制御用マイクロコンピュータ370は、シリアル通信回路376からの受信時割り込み要求にもとづく割込処理において、受信した賞球個数信号に示される賞球数を賞球未払出個数カウンタに格納するようにしてもよい。
賞球ACKコマンドを受信し、受信データレジスタ711に賞球ACKコマンドが格納された状態となると、遊技制御用マイクロコンピュータ560のシリアル通信回路505は、図60に示すように、遊技制御用マイクロコンピュータ560のCPU56に対して受信時割り込み要求を行う。受信時割込要求による割込処理を実行することによって、CPU56は、シリアル通信回路505がデータを受信したことを認識し、後述する賞球ACK待ち処理において受信データレジスタ711から賞球ACKコマンドを読み込む。
図61は、ステップS30の賞球処理の一例を示すフローチャートである。賞球処理において、CPU56は、賞球個数加算処理(ステップS1201)と賞球制御処理(ステップS1202)とを実行する。そして、RAM55に形成されるポートバッファの内容を出力ポートに出力する(ステップS1203)。なお、ポートバッファの内容は、賞球制御処理において更新される。
CPU56は、メイン処理におけるステップS17からステップS19までのループ処理において、割り込み許可状態である間にシリアル通信回路505からの割り込み要求があると、シリアル通信回路505が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。図62は、シリアル通信回路505が割り込み要求に対して行う割り込み処理の一例を示すフローチャートである。図62(a)は、シリアル通信回路505が通信エラーを割り込み原因として割り込み要求を行った場合に、遊技制御用マイクロコンピュータ560(具体的にはCPU56)が実行する通信エラー割込処理である。図62(b)は、シリアル通信回路505が受信データを受信したことを割り込み原因として割り込み要求を行った場合に、遊技制御用マイクロコンピュータ560(具体的にはCPU56)が実行する受信時割込処理である。図62(c)は、シリアル通信回路505が送信データの送信を完了したことを割り込み原因として割り込み要求を行った場合に、遊技制御用マイクロコンピュータ560(具体的には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は、図62(a)に示す通信エラー割込処理を他の割込処理(図62(b)および図62(c)に示す割込処理)に優先して実行する。この場合、CPU56は、シリアル通信回路505で通信エラーが発生していることを示す通信エラーフラグをセットする(ステップS41)。
なお、通信エラーを検出すると、CPU56は、音/ランプ制御用マイクロコンピュータ100bに、シリアル通信回路505で通信エラーが発生したことを通知するために、通信エラー発生表示指定の演出制御コマンド(通信エラー表示コマンド)を送信する処理を行う。音/ランプ制御用マイクロコンピュータ100bは、通信エラー表示コマンドを受信すると、音、表示、発光体などを用いた演出を行い、通信エラーが発生している旨の報知を行う。
また、通信エラー割込処理において、CPU56は、払出制御基板37との通信を禁止するように制御したり、シリアル通信回路505の送受信機能を停止させる。
割り込み原因がシリアル通信回路505で通信エラーが発生したことでなかった場合、CPU56は、ステータスレジスタAのビット5を確認する。すなわち、CPU56は、シリアル通信回路505が受信データを受信したことが割込原因であるか否かを判断する。ステータスレジスタAのビット5が「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505が受信データを受信したことであると特定する。
割り込み原因がシリアル通信回路505が受信データを受信したことであると特定すると、CPU56は、図62(b)に示す受信時割込処理を実行する。この場合、CPU56は、シリアル通信回路505が受信データを受信していることを示す受信時割込フラグをセットする(ステップS42)。なお、CPU56は、受信時割込フラグをセットするだけでなく、シリアル通信回路505の受信データレジスタ711からデータを読み込み、読み込んだデータをRAM55の所定領域に格納するようにしてもよい。
また、割り込み原因がシリアル通信回路505で通信エラーが発生したことでなかった場合、CPU56は、ステータスレジスタAのビット6を確認する。すなわち、CPU56は、シリアル通信回路505が送信データの送信を完了したことが割込原因であるか否かを判断する。ステータスレジスタAのビット6が「1」であると判断すると、CPU56は、割り込み原因がシリアル通信回路505が送信データの送信を完了したことであると特定する。
割り込み原因がシリアル通信回路505が送信データの送信を完了したことであると特定すると、CPU56は、図62(c)に示す送信時割込処理を実行する。この場合、CPU56は、シリアル通信回路505が送信データの送信を完了していることを示す送信時割込フラグをセットする(ステップS43)。
図63は、遊技制御手段における入力ポートのビット割り当ての例を示す説明図である。図63に示すように、入力ポート0のビット1〜7には、それぞれ、カウントスイッチ23、ゲートスイッチ32a、入賞口スイッチ33a、39a,29a,30a、始動口スイッチ14aの検出信号が入力される。また、入力ポート1のビット0,1には、それぞれ、電源監視基板910からの電源断信号、電源基板910からのクリアスイッチ921の検出信号(クリア信号)が入力される。
賞球個数加算処理では、図64に示す賞球個数テーブルが使用される。賞球個数テーブルは、ROM54に設定されている。賞球個数テーブルの先頭アドレスには処理数(この例では「6」)が設定され、その後に、スイッチオンバッファの下位アドレス、入賞により賞球を払い出すことになる入賞口の各スイッチについてのスイッチ入力ビット判定値、賞球数が、入賞口の各スイッチのそれぞれに対応して順次設定されている。なお、スイッチ入力ビット判定値は、入力ポートにおける各スイッチの検出信号が入力されるビットに対応した値である。また、スイッチオンバッファの上位アドレスは固定的な値(例えば7F(H))である。また、賞球個数テーブルにおいて、6つのスイッチオンバッファの下位アドレスのそれぞれには、同じデータが設定されている。なお、この実施の形態では、ROM54およびRAM55のアドレスは16ビットで指定される。
図65は、賞球個数加算処理を示すフローチャートである。賞球個数加算処理において、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に移行する。
図66は、ステップS1202の賞球制御処理を示すフローチャートである。賞球制御処理では、CPU56は、ステップS1230の賞球異常検出処理を実行した後、賞球プロセスコードの値に応じて、ステップS1231〜S1235のいずれかの処理を実行する。
図67は、賞球プロセスコードの値が0の場合に実行される賞球送信待ち処理(ステップS1231)を示すフローチャートである。CPU56は、賞球送信待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1241)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、遊技制御用マイクロコンピュータ560は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御基板37との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、総賞球数格納バッファの内容を確認する(ステップS1242)。その値が0であれば処理を終了し、0でなければ、賞球プロセスコードの値を1にした後(ステップS1243)、処理を終了する。
図68は、賞球プロセスコードの値が1の場合に実行される賞球個数信号送信処理(ステップS1232)を示すフローチャートである。CPU56は、賞球個数信号送信処理において、通信エラーフラグがセットされているか否か確認する(ステップS1251)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御基板37との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、総賞球数格納バッファの内容が賞球コマンド最大値(この例では「15」)よりも小さいか否か確認する(ステップS1252)。総賞球数格納バッファの内容が賞球コマンド最大値以上であれば、賞球コマンド最大値を賞球個数バッファに設定する(ステップS1253)。また、総賞球数格納バッファの内容が賞球コマンド最大値よりも小さい場合には、総賞球数格納バッファの内容を賞球個数バッファに設定する(ステップS1254)。
その後、CPU56は、賞球個数バッファの内容を賞球個数信号としてシリアル通信回路505の送信データレジスタ710に書き込み(ステップS1255)、賞球プロセスコードの値を2にした後(ステップS1256)、処理を終了する。この実施の形態では、賞球コマンド最大値は「15」である。従って、最大で「15」の払出数を指定する賞球個数信号が送信データレジスタ710に書き込まれる。その後、送信データレジスタ710に書き込まれた賞球個数信号は、送信用シフトレジスタ712に転送され、送信用シフトレジスタ712から払出制御用マイクロコンピュータ370に送信される。
図69は、賞球プロセスコードの値が2の場合に実行される賞球送信完了待ち処理(ステップS1233)を示すフローチャートである。CPU56は、賞球送信完了待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1261)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、払出制御基板37との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、送信時割込フラグがセットされているか否かを確認する(ステップS1262)。送信時割込フラグがセットされていれば、CPU56は、ステップS1263の処理に移行する。また、送信時割込フラグがセットされていなければ、CPU56は、そのまま処理を終了する。すなわち、CPU56は、賞球個数信号送信処理において送信データレジスタ710に書き込んだ賞球個数信号の送信をシリアル通信回路505が既に完了したか否かを判断し、賞球個数信号の送信を完了したことを確認すると、ステップS1263以降の処理を実行する。
送信時割込フラグがセットされていれば、CPU56は、送信時割込フラグをリセットする(ステップS1263)。そして、CPU56は、総賞球数格納バッファの内容から、賞球個数バッファの内容(払出制御手段に指令した賞球払出個数)を減算する(ステップS1264)。
なお、ここでは、賞球個数信号の送信が完了したときに賞球個数バッファの内容を減算するが、払出制御用マイクロコンピュータ370から賞球ACKコマンドを受信したときに賞球個数バッファの内容を減算するようにしてもよい。すなわち、図70に示すステップS1279の直前または直後に、賞球個数バッファの内容を減算するようにしてもよい。さらに、賞球個数バッファの内容を、払出制御用マイクロコンピュータ370に対して賞球個数信号(賞球個数コマンド)を送信する直前または直後に減算するようにしてもよい。すなわち、図68に示すステップS1255の直前または直後に、賞球個数バッファの内容を減算するようにしてもよい。また、ここで例示した場合に限られず、賞球個数信号の送信に関連した他の時期に賞球個数バッファの内容を減算するようにしてもよい。
また、CPU56は、賞球タイマにACK受信完了判定時間値をセットする(ステップS1266)。そして、賞球プロセスコードの値を3にして(ステップS1267)、処理を終了する。なお、ACK受信完了判定時間値は、払出制御手段から賞球ACKコマンドを受信したか否かを監視するための時間値である。
図70は、賞球プロセスコードの値が3の場合に実行される賞球ACK待ち処理(ステップS1234)を示すフローチャートである。CPU56は、賞球ACK待ち処理において、通信エラーフラグがセットされているか否か確認する(ステップS1271)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、CPU56は、払出制御基板37との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、受信時割込フラグがセットされているか否かを確認する(ステップS1272)。すなわち、CPU56は、シリアル通信回路505が受信データを受信し、受信データレジスタ711にデータが格納されている状態になっているか否かを確認する。受信時割込フラグがセットされていれば、CPU56は、ステップS1273の処理に移行する。また、受信時割込フラグがセットされていなければ、CPU56は、ステップS1275の処理に移行する。
受信時割込フラグがセットされていれば、CPU56は、シリアル通信回路505の受信データレジスタ711からデータを読み込む(ステップS1273)。また、CPU56は、読み込んだデータが賞球ACKコマンドであるか否か(コマンド「D2」であるか否か)を判断する(ステップS1274)。
ステップ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(具体的にはCPU56)は、賞球個数信号で指定した払出数の賞球払出が完了する前に、連続的に次の賞球個数信号を送信することができる。
なお、この実施の形態では、払出条件の成立にもとづいて払い出される景品遊技媒体の総数を特定可能に記憶する景品遊技媒体数データ記憶手段として、総数そのものを記憶する総賞球数格納バッファが例示されたが、景品遊技媒体の総数を特定可能に記憶する景品遊技媒体数記憶手段は、各入賞領域への入賞数を記憶したり、賞球数が同じである入賞領域毎の入賞数(例えば4個の賞球数に対応した入賞口14、7個の賞球数に対応した入賞口33,39,29,30、15個の賞球数に対応した大入賞口への入賞数であって、未だ賞球払出が終了していない入賞数)を記憶するものであってもよい。その場合には、入賞領域毎の賞球数に応じた数が設定された賞球個数信号が遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に送信される。さらには、賞球個数を示す賞球個数信号を送信するのではなく、入賞があったことまたは入賞数を示す払出指令コマンドを遊技制御用マイクロコンピュータ560から払出制御用マイクロコンピュータ370に送信するようにしてもよい。
図71は、賞球プロセスコードの値が4の場合に実行される賞球再送信処理(ステップS1235)を示すフローチャートである。CPU56は、賞球再送信処理において、通信エラーフラグがセットされているか否か確認する(ステップS1291)。すなわち、CPU56は、まず、シリアル通信回路505で通信エラーが発生しているか否かを確認する。通信エラーフラグがセットされている場合、CPU56は、そのまま処理を終了する。すなわち、シリアル通信回路505で通信エラーが発生している状態であるので、遊技制御用マイクロコンピュータ560(具体的にはCPU56)は、払出制御基板37との通信を禁止するように制御する。
通信エラーフラグがセットされていなければ、CPU56は、賞球個数バッファの内容を賞球個数信号としてシリアル通信回路505の送信データレジスタ710に再度書き込む(ステップS1292)。また、CPU56は、賞球タイマにACK受信完了判定時間値を再びセットする(ステップS1293)。そして、賞球プロセスコードの値を3にして(ステップS1294)、処理を終了する。
賞球プロセスコードの値が3に設定されることから、再度、賞球ACK待ち処理が実行される。再度実行される賞球ACK待ち処理において、再び賞球ACKコマンドを受信したことを検出できなかった場合には、具体的には、ステップS1276において賞球タイマがタイムアウトした場合には、再び賞球再送処理が実行されることになる。このように、CPU56は、払出数データを受信したことを示す受信確認信号としての賞球ACKコマンドが受信できない場合には、賞球ACKコマンドが受信できるまで、賞球個数信号の再送を繰り返す。
図72は、ステップS230の賞球異常検出処理を示すフローチャートである。賞球異常検出処理において、CPU56は、再送信フラグがリセット状態からセット状態になったことを検出すると、払出異常報知開始コマンドを演出制御コマンドとして音/ランプ制御基板80bに対して(具体的には音/ランプ制御用CPU100bに対して)送信する制御を行う(ステップS1301,S1302)。なお、CPU56は、賞球再送信処理を実行してから払出異常報知開始コマンドを送信するのでなく、払出異常報知開始コマンドを音/ランプ制御基板80bに送信してから賞球再送信処理を実行するようにしてもよい。
なお、音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドを送信する際に、CPU56は、演出制御コマンドの種類に応じたコマンド送信テーブル(あらかじめROM54にコマンド毎に設定されている)のアドレスをポインタにセットする。そして、演出制御コマンドに応じたコマンド送信テーブルのアドレスをポインタにセットして、演出制御コマンド制御処理(ステップS28)において演出制御コマンドを送信する。
また、CPU56は、再送信フラグがセット状態からリセット状態になったことを検出する(従って、セット状態が継続している場合には最初にリセット状態になったときにのみ検出される。)と、払出異常報知終了コマンドを音/ランプ制御基板80bに対して(具体的には音/ランプ制御用マイクロコンピュータ100bに対して)送信する制御を行う(ステップS1303,S1304)。
なお、この実施の形態では、CPU56は、再送信フラグがリセットされると、ステップS1304で払出異常報知終了コマンドを送信するが、送信しないように構成してもよい。その場合には、遊技制御用マイクロコンピュータ560(具体的にはCPU56)の負担が軽減される。また、その場合には、音/ランプ制御用マイクロコンピュータ100bが、例えば所定時間後に、独自に払出異常報知を終了するように構成される。
次に、払出制御用マイクロコンピュータ370の動作について説明する。図73は、払出制御用マイクロコンピュータ370における払出制御用CPU371が実行するメイン処理を示すフローチャートである。払出制御用マイクロコンピュータ370は、遊技制御用マイクロコンピュータ560と同様のシリアル通信回路376(図59参照)も内蔵している。遊技機に対して電源が投入され、リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、払出制御用CPU371は、まず、必要な初期設定を行う。すなわち、払出制御用CPU371は、まず、割込禁止に設定する(ステップS701)。次に、割込モードを割込モード2に設定し(ステップS702)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS703)。
また、払出制御用CPU371は、内蔵デバイスレジスタの初期化を行い(ステップS704)、CTCおよびPIOの初期化を行う(ステップS705)。
この実施の形態では、内蔵CTCのうちの一つのチャネルがタイマモードで使用される。従って、ステップS704の内蔵デバイスレジスタの設定処理およびステップS705の処理において、使用するチャネルをタイマモードに設定するためのレジスタ設定、割込発生を許可するためのレジスタ設定および割込ベクタを設定するためのレジスタ設定が行われる。
なお、タイマモードに設定されたチャネル(この実施の形態ではチャネル3)に設定される割込ベクタは、タイマ割込処理の先頭アドレスに相当するものである。具体的には、Iレジスタに設定された値と割込ベクタとでタイマ割込処理の先頭アドレスが特定される。タイマ割込処理では、払出手段を制御する払出制御処理(少なくとも主基板からの賞球払出に関する指令信号に応じて球払出装置97を駆動する処理を含み、球貸し要求に応じて球払出装置97を駆動する処理が含まれていてもよい。)が実行される。
この実施の形態では、払出制御用マイクロコンピュータ370でも割込モード2が設定される。従って、内蔵CTCのカウントアップにもとづく割込処理を使用することができる。また、CTCが送出した割込ベクタに応じた割込処理開始アドレスを設定することができる。
CTCのチャネル3(CH3)のカウントアップにもとづく割込は、払出制御用CPU371の内部クロック(システムクロック)をカウントダウンしてレジスタ値が「0」になったら発生する割込であり、タイマ割込として用いられる。具体的には、払出制御用CPU371の動作クロックを分周したクロックがCTCに与えられ、クロックの入力によってレジスタの値が減算され、レジスタの値が0になるとタイマ割込が発生する。
また、払出制御用CPU371は、RAMをアクセス可能状態に設定する(ステップS706)。
次いで、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS707)。保護処理が行われていたか否かは、電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、バックアップRAM領域のデータ保護処理を実行したことに応じた値(例えば10)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域にデータ保護処理を実行したことを示すフラグをセットし、ステップS707において、そのフラグがセットされていることを確認したらバックアップありと判定してもよい。
バックアップありと判定したら、払出制御用CPU371は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS708)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象となるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、払出制御用CPU371は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムとする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS710では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっていることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、払出制御状態復旧処理を実行せず、初期化処理(ステップS715,S716の処理)を実行する。初期化処理によって、RAMの記憶内容が初期化され、払出制御処理が初期状態から開始される。
チェック結果が正常であれば、バックアップRAM領域のデータが保存されていたことになる。そこで、払出制御用CPU371は、払出制御状態復旧処理を行う。具体的には、RAMの作業領域に復旧時の値を設定する(ステップS709)。復旧時の値を設定するとは、例えばRAMに非バックアップ領域が含まれている場合に、その領域に初期値(例えば0)を設定するような処理である。そして、RAMにおけるバックアップRAM領域をクリアしない。よって、払出制御処理の実行状態が、電力供給停止時前の状態に復旧されることになる。なお、この実施の形態では、RAMの全領域がバックアップされているので、ステップS709の処理を省略してもよい。
また、払出制御用CPU371は、遊技球の払出処理を禁止することを示す払出停止フラグをセットする(ステップS711)。さらに、払出停止フラグのリセットタイミングを決めるための監視タイマに、所定値(払出停止フラグのリセットタイミングまでの時間に相当する値)をセットする(ステップS712)。そして、ステップS717に移行する。
初期化処理では、払出制御用CPU371は、まず、RAMの内容をクリアするRAMクリア処理を行う(ステップS715)。また、RAM領域のフラグやカウンタ(作業領域)などに初期値を設定する(ステップS716)。
そして、払出制御用CPU371は、所定時間(例えば2ms)ごとに定期的にタイマ割込がかかるように払出制御用マイクロコンピュータ370(具体的には払出制御用CPU371)に内蔵されているCTCのレジスタの設定を行なうタイマ割込設定処理を実行する(ステップS717)。この実施の形態では、2msごとに定期的にタイマ割込がかかるとする。
そして、初期設定処理のステップS701において割込禁止に設定されているので、払出制御用CPU371は、割込許可状態に設定する(ステップS718)。その後、タイマ割込の発生を監視するループ処理に入る。
ループ処理では、払出制御用CPU371は、電源断信号が出力された否かを監視する電源断処理を実行する(ステップS719)。電源断処理は、遊技制御用マイクロコンピュータ560のCPU56が実行する電源断処理と同様の処理である。すなわち、電源断信号がオン状態であれば、データが保存されていることを示す実行状態情報を電源バックアップされているRAMに保存するとともに、パリティデータを作成して電源バックアップされているRAMに保存する。そのような処理を実行することによって、賞球未払出個数カウンタの値の電源バックアップされているRAMへの保存が確実化される。
上記のように、払出制御用CPU371の内蔵CTCが繰り返しタイマ割込を発生するように設定される。そして、タイマ割込が発生すると、払出制御用CPU371は、ステップS752以降のタイマ割込処理を実行する。なお、払出制御用CPU371は、例えばステップS715の処理とステップS716の処理との間で、シリアル通信回路376を初期設定する処理を行うが、図73では記載省略されている。シリアル通信回路376を初期設定する処理は、CPU56がステップS15aで実行したシリアル通信回路設定処理と同様である。
図74は、払出制御用CPU371が実行するタイマ割込処理の例を示すフローチャートである。タイマ割込処理では、払出制御用CPU371は、ステップS752以降の払出制御処理を実行する。
払出制御処理では、払出制御用CPU371は、入力判定処理を行う(ステップS752)。入力判定処理は、遊技球を検出するスイッチ等の状態を検出して検出結果をRAMの所定の1バイト(入力状態フラグと呼ぶ。)に反映する処理である。
次に、払出制御用CPU371は、払出モータ制御処理を実行する(ステップS753)。払出モータ制御処理では、払出モータ289を駆動すべきときには、払出モータφ1〜φ4のパターンを出力ポートに出力するための処理を行う。
また、払出制御用CPU371は、カードユニット50と通信を行うプリペイドカードユニット制御処理を実行する(ステップS754)。次いで、払出制御用CPU371は、主基板31の遊技制御用マイクロコンピュータ560と通信を行う主制御通信処理を実行する(ステップS755)。さらに、カードユニット50からの球貸し要求に応じて貸し球を払い出す制御を行い、また、主基板からの賞球個数信号が示す個数の賞球を払い出す制御を行う賞球球貸し制御処理を実行する(ステップS756)。
そして、払出制御用CPU371は、各種のエラーを検出するエラー処理を実行する(ステップS757)。また、遊技機外部に出力される賞球情報や球貸し情報を出力するための情報出力処理を実行する(ステップS758)。また、エラー処理の結果等に応じてエラー表示LED374に所定の表示を行うとともに、賞球LEDおよび球切れLEDを点灯するための表示制御処理を実行する(ステップS759)。
また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、払出制御用CPU371は、出力ポートバッファを出力ポートに出力する(ステップS760:出力処理)。出力ポートバッファの内容は、払出モータ制御処理(ステップS753)、プリペイドカード制御処理(ステップS754)、主制御通信処理(ステップS755)、情報出力処理(ステップS758)および表示制御処理(ステップS759)で更新される。
さらに、払出制御用CPU371は、払出停止フラグをリセットするための払出停止フラグ制御処理(ステップS761)を実行する。その後、払出制御用CPU371は、割込許可状態に設定し(ステップS762)、処理を終了する。
また、払出制御用マイクロコンピュータ370(具体的には払出制御用CPU371)は、遊技制御用マイクロコンピュータ560(具体的にはCPU56)と同様に、割り込み許可状態である間にシリアル通信回路376からの割り込み要求があると、シリアル通信回路376が割り込み要求を行った割り込み原因に応じた割り込み処理を実行する。この実施の形態では、払出制御用CPU371は、割り込み原因がシリアル通信回路376が受信データを受信したことであると特定すると、図62(b)に示す処理と同様の処理に従って受信時割込処理を実行する。この場合、払出制御用CPU371は、シリアル通信回路376が受信データを受信していることを示す受信時割込フラグをセットする。なお、CPU56の場合と同様に、払出制御用CPU371は、受信時割込フラグをセットするだけでなく、シリアル通信回路376の受信データレジスタからデータを読み込み、読み込んだデータをRAMの所定領域に格納するようにしてもよい。
図75は、払出制御INT信号にもとづく払出制御INT信号割込処理を示すフローチャートである。払出制御INT信号割込処理において、払出制御用CPU371は、遊技制御用マイクロコンピュータ560からのコマンドを入力するために割り当てられている入力ポートから受信データを入力する(ステップS751)。そして、入力した受信データが初期化コマンドのデータであれば、初期化コマンドを受信したことを示す初期化コマンド受信フラグをセットする(ステップS752,S753)。また、入力した受信データが復旧コマンドのデータであれば、復旧コマンドを受信したことを示す復旧コマンド受信フラグをセットする(ステップS754,S755)。その後、払出制御用CPU371は、割込許可状態に設定し(ステップS756)、処理を終了する。
図76は、払出停止フラグ制御処理を示すフローチャートである。払出停止フラグ制御処理において、払出制御用CPU371は、監視タイマの値を−1する(ステップS741)。そして、監視タイマの値が0になったら、すなわち監視タイマがタイムアウトしたら、払出停止フラグをリセットする(ステップS742,S743)。払出停止フラグがリセットされたことによって、遊技球の払出が許可された状態になる。また、払出制御用CPU371は、初期化禁止フラグをセットする(ステップS744)。
監視タイマがタイムアウトしていない場合には、払出制御用CPU371は、初期化禁止フラグがセットされていないことを条件に(ステップS745)、初期化コマンドを受信したか否か確認する(ステップS746)。初期化コマンドを受信した場合には、RAMの内容をクリアするRAMクリア処理を行う(ステップS747)。また、RAM領域のフラグやカウンタ(作業領域)などに初期値を設定する(ステップS747)。RAMの内容がクリアされるので、払出停止フラグがセットされていた場合には、払出停止フラグはリセットされる。
この実施の形態では、電力供給開始時に、RAMのバックアップ領域の記憶内容が保存されていたことに応じて、払出制御処理の実行状態が電力供給停止時前の状態に復旧されると、払出停止フラグがセットされて遊技球の払出が禁止された状態になる。そして、遊技制御用マイクロコンピュータ560は、電力供給開始時に、クリアスイッチ921が押下されないことを条件に、RAMのバックアップ領域の記憶内容が保存されていたことに応じて、遊技制御処理の実行状態が電力供給停止時前の状態に復旧されたときには、初期化コマンドを出力しない(図40におけるステップS91〜S95の処理を実行したらステップS15に移行する)。
逆に、クリアスイッチ921が押下されたときには、遊技制御用マイクロコンピュータ560は、初期化コマンドを出力する(図40におけるステップS14a参照)。
払出制御用マイクロコンピュータ370は、初期化コマンドを受信すると、直ちに初期化処理(ステップS747,S748)を実行する。よって、クリアスイッチ921からのクリア信号が払出制御用マイクロコンピュータ370に入力されていなくても、遊技制御用マイクロコンピュータ560が初期化処理を実行したときに、払出制御用マイクロコンピュータ370は、直ちに初期化処理を実行できる。また、払出停止フラグをリセットして払出可能状態に設定した後には、初期化処理は実行されないので、例えば、ノイズ等に起因して初期化コマンドが誤って受信されたとしても、初期化処理が実行されてしまうことはない。
また、払出制御用マイクロコンピュータ370は、払出制御処理の実行状態を電力供給停止時前の状態に復旧させたときに、払出停止フラグをセットして払出処理を実行しないようにする。そのような制御を行わないと、払出制御用マイクロコンピュータ370は、バックアップRAM領域に保存されていた賞球未払出個数カウンタの値にもとづいて遊技球の払出を再開してしまう。そのときに、クリアスイッチ921が押下されていた場合には、遊技球の払出を再開すべきではないが、遊技制御用マイクロコンピュータ560が初期化コマンドを送信する前に幾つかの遊技球を払い出してしまう可能性がある。しかし、この実施の形態では、払出制御処理の実行状態を電力供給停止時前の状態に復旧させたときに、まず、払出処理を実行しないように制御するので、そのような可能性がなくなる。また、払出制御用マイクロコンピュータ370は、初期化コマンドを受信すると直ちに初期化処理を実行するので、遊技制御用マイクロコンピュータ560と払出制御用マイクロコンピュータ370とが確実に整合した初期化処理を実行することができる。
なお、この実施の形態では、払出制御用マイクロコンピュータ370は、初期化コマンドを受信することなく監視タイマがタイムアウトしたら払出停止フラグをリセットするので、遊技制御用マイクロコンピュータ560は、遊技制御処理の実行状態を電力供給停止時前の状態に復旧させたときに復旧コマンドを出力しなくてもよい。
図77は、ステップS753の払出モータ制御処理を示すフローチャートである。払出モータ制御処理において、払出制御用マイクロコンピュータ370は、払出停止フラグがセットされていなければ(ステップS520)、払出モータ制御コードの値に応じて、ステップS521〜S526のいずれかの処理を実行する。払出停止フラグがセットされている場合には、ステップS521〜S526の処理を実行しない。
払出モータ制御コードの値が0の場合に実行される払出モータ通常処理(ステップS521)では、払出動作カウンタに0でない値が設定されていたら、払出制御用マイクロコンピュータ370は、ポインタを、ROMに格納されているテーブルの先頭アドレスにセットする。払出モータ通常処理設定テーブルには、球払出時の払出モータ289を回転させるための各ステップの励磁パターン(払出モータφ1〜φ4)のデータが順次設定されている払出モータ励磁パターンテーブルが格納されている。そして、払出モータ制御コードの値を1にする。
払出モータ制御コードの値が1の場合に実行される払出モータ起動準備処理(ステップS522)では、払出制御用マイクロコンピュータ370は、出力ポートの出力状態に対応した出力ポートバッファに励磁パターンの初期値を設定する等の処理を行う。そして、払出モータ制御コードの値を2にする。
払出モータ制御コードの値が2の場合に実行される払出モータスローアップ処理(ステップS523)では、払出制御用マイクロコンピュータ3701は、払出モータ289を滑らかに回転開始させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔に近づくような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポートの出力状態に対応した出力ポートバッファに設定する。読み出しに際して、ポインタが指すアドレスの払出モータ励磁パターンテーブルの内容を読み出すとともに、ポインタの値を+1する。そして、定速処理に移行すべき時期になると、払出モータ制御コードの値を3にする。
払出モータ制御コードの値が3の場合に実行される払出モータ定速処理(ステップS524)では、払出制御用マイクロコンピュータ370は、定期的に払出モータ励磁パターンテーブルの内容を読み出して出力ポートの出力状態に対応した出力ポートバッファに設定する。また、払出動作カウンタの値が所定値(例えば1)になったら、払出モータ制御コードの値を4にする。
払出モータ制御コードの値が4の場合に実行される払出モータブレーキ処理(ステップS525)では、払出制御用マイクロコンピュータ370は、払出モータ289を滑らかに停止させるために、定速処理の場合よりも長い間隔で、かつ、徐々に定速処理の場合の時間間隔から遠ざかるような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポートの出力状態に対応した出力ポートバッファに設定する。そして、払出モータ289を停止すべき時期になると、払出モータ制御コードの値を0にする。
なお、払出モータブレーキ処理において、最終的に、払出モータ289の回転は停止されるのであるが、停止時には、払出モータ通常処理において、停止時払出モータ励磁パターンを、繰り返し、出力ポートの出力状態に対応した出力ポートバッファに設定する。停止時払出モータ励磁パターンは、払出モータφ1〜φ4のうちの少なくとも1相が励磁されているパターンである。払出モータ289に与えられる励磁パターンが停止時払出モータ励磁パターンの1種類である(変化しない)ことから、払出モータ289は回転しない。しかも、払出モータ289は励磁されているので、容易には回転しない。よって、例えば遊技店に設置されている遊技機に振動を与えるような行為がなされても、遊技球が払い出されてしまうことはない。払出モータ289の回転が停止しているときに励磁を解除すると、払出モータ289は拘束されないので、外部から与えられる振動に応じて払出モータ289が回転方向に振動してしまい、遊技球を払い出してしまう可能性がある。また、払出モータ289の回転は停止されるときに、払出動作カウンタの値は0になっているように、払出モータブレーキ処理が開始される。払出動作カウンタの減算は、後述する払出モータ停止待ち処理において実行される。
払出モータ制御コードの値が5の場合に実行される球噛み時払出モータブレーキ処理(ステップS526)では、払出制御用マイクロコンピュータ370は、球噛みを解除するための回転の場合に、払出モータ289を滑らかに停止させるために、徐々に定速処理の場合の時間間隔から遠ざかるような時間間隔で、払出モータ励磁パターンテーブルの内容を読み出して出力ポートの出力状態に対応した出力ポートバッファに設定する。なお、球噛み時払出モータブレーキ処理は、球噛み等が発生したことが検出されると実行される。
図78は、ステップS755の主制御通信処理を示すフローチャートである。主制御通信処理では、払出制御用CPU371は、受信時割込フラグがセットされているか否かを確認する(ステップS542)。すなわち、払出制御用CPU371は、シリアル通信回路376が受信データを受信し、シリアル通信回路376の受信データレジスタにデータが格納されている状態になっているか否かを確認する。
受信時割込フラグがセットされていれば、払出制御用CPU371は、シリアル通信回路376の受信データレジスタからデータを読み込む(ステップS543)。また、払出制御用CPU371は、読み込んだデータが賞球個数信号であるか否か(コマンド「04」、「07」または「0F」のいずれかであるか否か)を判断する(ステップS544)。
シリアル通信回路376の受信データレジスタから読み込んだデータが賞球個数信号であることを確認すると、払出制御用CPU371は、受信時割込フラグをリセットして(ステップS545)、賞球個数信号が示す賞球数を、RAMの所定領域に設けられた賞球払出予定総数カウンタに格納する(ステップS546)。そして、払出制御用CPU371は、賞球ACKコマンドをシリアル通信回路376の送信データレジスタ710に書き込み(ステップS547)、処理を終了する。その後、送信データレジスタに書き込まれた賞球ACKコマンドは、シリアル通信回路376の送信用シフトレジスタに転送され、シリアル通信回路376の送信用シフトレジスタから遊技制御用マイクロコンピュータ560に送信される。なお、賞球払出予定総数カウンタは、RAMに形成されている。
なお、ステップS546の処理を、賞球個数信号が示す賞球数を賞球未払出個数カウンタに加算する処理に代えてもよい。そのように変更した場合には、後述する賞球払出数上乗せ制御(図81参照)において、ステップS694の処理に代えて、賞球未払出個数カウンタの値と前回賞球払出予定総数カウンタの値とが比較され、ステップS697の処理に代えて、前回賞球払出予定総数カウンタに賞球未払出個数カウンタの値を設定する処理が実行される。また、図80に示す賞球球貸し処理において、ステップS604の処理は実行されず、賞球未払出個数カウンタの値および前回賞球払出予定総数カウンタの値は、払出動作が終了したときに(図83におけるステップS641参照)、初期化される。
また、この実施の形態では、遊技機に対する電力供給が開始されたときに、遊技制御用マイクロコンピュータ560が出力する初期化コマンドや復旧コマンドは、主制御通信処理とは別の割込処理によって受信される。つまり、払出制御用マイクロコンピュータ370の外部割込端子には、払出制御INT信号の信号線が接続される。遊技制御用マイクロコンピュータ560から払出制御INT信号が入力されると、払出制御用CPU371は、払出制御INT信号にもとづく割込処理を実行する。その割込処理において、払出制御用CPU371は、初期化コマンドや復旧コマンドのデータを入力するために割り当てられている入力ポートからデータを入力する。そして、例えば、入力したデータが初期化コマンドのデータであれば、初期化コマンドを受信したことを示すフラグをセットし、入力したデータが復旧コマンドのデータであれば、復旧コマンドを受信したことを示すフラグをセットする。
なお、初期化コマンドや復旧コマンドがシリアル通信で送受信される場合には、主制御通信処理で、初期化コマンドや復旧コマンドを受信するようにしてもよい。
図79は、払出制御用CPU371が払出制御処理において使用するカウンタの一例を示す説明図である。この実施の形態では、賞球個数指令で指定された個数が累積加算された数である賞球払出予定総数が格納される賞球払出予定総数カウンタと、後述する加算処理(上乗せ処理)が実行される前の賞球払出予定総数が格納される前回賞球払出予定総数カウンタと、賞球払出時の払出モータ289の回転数に相当する値が設定される払出動作カウンタと、賞球の連続払出時の賞球数が設定される賞球未払出個数カウンタと、貸し球数が設定される貸し球未払出個数カウンタとが使用される。なお、それらのカウンタは、RAMに形成される。また、各カウンタは、16ビット(2バイト)のカウンタである。
また、払出動作カウンタは、払出モータ289の回転数を決めるために使用される。賞球未払出個数カウンタおよび貸し球未払出個数カウンタの値は、払出個数カウントスイッチ301がオン(遊技球がスイッチを通過)すると−1される。よって、賞球未払出個数カウンタおよび貸し球未払出個数カウンタは、最後に払出モータ289によって払い出された遊技球が払出個数カウントスイッチ301を通過することを検出することによって(カウント値が0になる)、賞球払出および球貸しが完了したことを判定するために使用される。
なお、払出モータ289の回転数を決めるために、払出動作カウンタではなく、払出数に応じた回転時間を決める払出動作タイマを用いてもよい。払出動作タイマを用いる場合には、駆動量データ記憶手段が保持しているデータ(この場合には払出動作タイマのタイマ値)を払出駆動手段(この例では払出モータ289)の駆動量に応じた分減算する駆動量更新手段は、時間経過に応じて払出動作タイマのタイマ値を減ずる処理を実行するものに相当する。
図80は、ステップS756の賞球球貸し制御処理を示すフローチャートである。賞球球貸し制御処理において、払出制御用CPU371は、払出停止フラグがセットされていなければ(ステップS599)、賞球払出数上乗せ制御を実行する(ステップS600)。賞球払出数上乗せ制御とは、払出予定の賞球数に対して、新たに受信した賞球個数指令による個数を加算するための処理である。払出停止フラグがセットされている場合には、ステップS600以降の処理を実行しない。
次いで、払出制御用CPU371は、払出個数カウントスイッチ301の検出信号がオン状態になったことを確認したら(ステップS601)、球貸し動作中フラグにもとづいて球貸し中であるか否か判定する(ステップS602)。球貸し中であれば球貸し未払出個数カウンタの値を1減らし(ステップS603)、球貸し中でなければ賞球未払出個数カウンタの値を1減らす(ステップS604)。その後、払出制御コードの値に応じてステップS610〜S612のいずれかの処理を実行する。
図81は、賞球払出数上乗せ制御を示すフローチャートである。賞球払出数上乗せ制御において、払出制御用CPU371は、賞球払出予定総数カウンタ(PA)の上位バイトをレジスタにロードする(ステップS690A)。そして、上位バイトの上位6ビットが全て0であるか否か確認する(ステップS690B)。上位6ビットのうち「1」のビットが1つでもあれば、上位6ビットを0クリアして、賞球払出予定総数カウンタ(PA)にストアする(ステップS690C)。
この実施の形態では、賞球払出予定総数カウンタ(PA)の上限値を、16ビットのうちの下位10ビットで表される値(10進数で、1023)とする。この実施の形態では、遊技制御用マイクロコンピュータ560は、ステップS694の判定処理を実行する前に、賞球払出予定総数カウンタ(PA)における所定ビット数(この例では、16ビット)のうちの所定記憶上限値(この例では、1023)を越える数に対応するビット(この例では上位6ビット)が記憶値を有することに対応する有効値(この例では1)を示しているか否か確認し、有効値を示しているときには、当該ビットを、記憶値を有していないことに対応する無効値(この例では0)に変更し、判定処理でデータが一致していないと判定したときにステップS695の加算処理を実行する。不正行為によって賞球払出予定総数カウンタ(PA)が増やされたとしても、所定記憶上限値を越える数に対応するビットの値が無効値にされる。その結果、不正行為を受けにくくすることができる。
次に、払出制御用CPU371は、各種のエラー状態が各ビットに反映されているエラーフラグにおいてエラー状態を示しているビットがあるか否か判定し、エラー状態を示しているビットがある場合には(ただし、後述するプリペイドカードユニット未接続エラーのビット(図86参照)は対象外)、何もせずに処理を終了する(ステップS691)。また、球貸し動作中フラグがセットされているか否か判定し、セットされている場合には、何もせずに処理を終了する(ステップS692)。賞球球貸し制御処理は2ms毎に実行されるので、賞球払出数上乗せ制御も2ms毎に実行されのであるが、ステップS691の処理によって、エラー状態では、ステップS693以降の処理は実行されない。なお、ステップ692の判定により、球貸し処理の実行中に、ステップS693以降の処理が実行されることはない。
さらに、払出制御用CPU371は、払出動作カウンタの値が0でないか否か判定する(ステップS693)。0でない場合には、ステップS694以降の処理を実行する。しかし、0であれば、ステップS694以降の処理は実行されない。
ステップS694において、払出制御用CPU371は、賞球払出予定総数カウンタ(PA)の内容が、前回賞球払出予定総数カウンタ(PB)の内容と同じか否か確認する。同じでなければ、ステップS695以降の賞球払出数上乗せ処理(以下、上乗せ処理または加算処理という。)を実行する。前回賞球払出予定総数カウンタ(PB)には、賞球払出処理開始時および上乗せ処理(前回の上乗せ処理)が実行されたときに、賞球払出予定総数カウンタ(PA)の内容が設定されている。また、遊技制御手段から賞球個数指令を受信すると、賞球個数指令で指示された個数が賞球払出予定総数カウンタ(PA)に加算される(図78参照)。従って、賞球払出予定総数カウンタ(PA)の内容が、前回賞球払出予定総数カウンタ(PB)の内容と異なっているということは、新たに、遊技制御手段から賞球個数指令を受信したことを意味する、そこで、ステップS691〜S693の上乗せ禁止条件が成立していない場合には、ステップS695以降の上乗せ処理を行う。
ステップS695において、払出制御用CPU371は、賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容との差分に相当する値を、払出動作カウンタに加算することによって払出動作カウンタを更新する(ステップS695)。また、賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容との差分を、賞球未払出個数カウンタに加算する(ステップS696)。さらに、賞球払出予定総数カウンタ(PA)の内容を、前回賞球払出予定総数カウンタ(PB)に設定することによって前回賞球払出予定総数カウンタ(PB)を更新する(ステップS697)。なお、この実施の形態では、払出モータ289から1個の遊技球が払い出されるときに払出動作カウンタの値が1減算されるので、払出動作カウンタに対する加算値と、賞球未払出個数カウンタに対する加算値とは、同じ値である。また、払出動作カウンタに対して加算が行われることによって、払出モータ297は、加算された値(加算値)に応じた分だけ余分に回転することになる。その結果、払出モータ297が停止するまでに、加算値に応じた分だけ余分に遊技球が払い出される。つまり、遊技球1個当たりの払出に要する時間が短くなる。
なお、ステップS697において、賞球払出予定総数カウンタ(PA)の内容を、前回賞球払出予定総数カウンタ(PB)に設定するのではなく、賞球払出予定総数カウンタ(PA)および前回賞球払出予定総数カウンタ(PB)の内容を0にクリアするようにしてもよい。すなわち、増加判定手段がデータが増加したことを判定したときに、増加数特定手段が、景品遊技媒体数データ記憶手段に記憶されている増加分のデータを払出動作カウンタに移す(ステップS695)とともに、景品遊技媒体数データ記憶手段(この例では賞球払出予定総数カウンタ(PA))および前回景品遊技媒体数データ記憶手段(この例では前回賞球払出予定総数カウンタ(PB))の記憶内容を初期化するようにしてもよい。そのように構成されている場合には、景品遊技媒体数データ記憶手段および景品遊技媒体数データ記憶手段の記憶容量を増大させないようにすることができる。
また、この実施の形態では、1つの球払出装置97によって賞球個数指令にもとづく遊技球の払い出しと貸出要求にもとづく遊技球の払い出しとがなされるので、球貸し処理が実行されているときには、賞球払出処理は実行できない。従って、球貸し処理を行っているときに上乗せ処理を行っても、賞球払出が実行されないので意味のない処理を行ってしまうことになる。しかし、球貸し処理を行っているときには上乗せ処理を禁止することによって、無意味な処理が実行されないようにして上乗せ処理の効率化を図ることができる。
同様に、エラー状態(ただし、後述するプリペイドカードユニット未接続エラーのビット(図86参照)は対象外)では、賞球払出処理は実行できない。従って、エラー状態において上乗せ処理を行っても、賞球払出が実行されないので意味のない処理を行ってしまうことになる。しかし、エラー状態では上乗せ処理を禁止することによって、無意味な処理が実行されないようにして上乗せ処理の効率化を図ることができる。なお、上乗せ処理は、エラー解除スイッチ375からの操作信号にもとづいてエラー状態が解除されたときに一括して実行される(エラー状態において受信した全ての賞球個数指令にもとづく増加数を加算する)ことになる。
図82は、払出制御コードが0の場合に実行される払出開始待ち処理(ステップS610)を示すフローチャートである。払出開始待ち処理において、払出制御用CPU371は、エラービット(ただし、後述するプリペイドカードユニット未接続エラーのビット(図86参照)は対象外)がセットされていたら、以降の処理を実行しない(ステップS620)。
エラービットがセットされていない場合(プリペイドカードユニット未接続エラーのビットはセットされている場合がある)には、払出制御用CPU371は、VL信号がオン状態であるか否か確認する(ステップS621)。オフしている場合には、ステップS631に移行する。なお、VL信号がオンであるか否か確認するときに、プリペイドカードユニット未接続エラーのビットを確認するようにしてもよい。また、このような制御によって、カードユニット50との間の通信が正常に行えないときにカードユニット50からの要求に応じた遊技球の払出を行わないようにすることができるとともに、不必要に遊技球の払出(入賞領域に遊技媒体が入賞したときの遊技球の払出)を停止させないようにすることができる。つまり、VL信号がオンであるか否かの確認の処理は払出開始待ち処理においてのみ実行され、払出モータ停止待ち処理等では実行されないので、入賞領域に遊技媒体が入賞したときの遊技球の払出すなわち賞球払出が開始されると、VL信号がオフしても賞球払出は中断されない。なお、このことは球貸しの場合も同様である。また、払出モータ停止待ち処理等でもVL信号がオンであるか否か確認し、VL信号がオフした場合には直ちに遊技球の払出を中断するようにしてもよい。
VL信号がオン状態である場合には、BRDY信号がオン状態でなければ(ステップS622)、ステップS631以降の賞球払出のための処理を実行する。BRDY信号がオン状態であって、さらに、球貸し要求信号であるBRQ信号がオン状態になっていたら球貸し動作中フラグをセットする(ステップS623,S624)。そして、球貸し未払出個数カウンタに「25」をセットし(ステップS625)、払出動作カウンタに「25」をセットする(ステップS626)。
払出動作カウンタは、払出モータ制御処理(ステップS753)において参照される。すなわち、払出モータ制御処理では、払出動作カウンタにセットされている値に対応した回転数分だけ払出モータ289を回転させる制御が実行される。
その後、払出制御用CPU371は、払出モータ制御処理で実行される処理を選択するための払出モータ制御コードに、払出モータ起動準備処理(ステップS522)に応じた値(具体的は「1」)をセットし(ステップS627)、払出制御コードの値を1にして(ステップS628)、処理を終了する。
ステップS631では、払出制御用CPU371は、賞球払出予定総数カウンタ(PA)の内容が0であるか否かを確認する(ステップS631)。0であれば処理を終了する。賞球払出予定総数カウンタ(PA)には、主制御通信処理において、主基板31の遊技制御手段から賞球個数指令を受けたときに、0でない値(賞球個数指令が示す数)が加算されている。賞球払出予定総数カウンタ(PA)の内容が0でない場合には、払出動作カウンタに賞球払出予定総数カウンタ(PA)の内容を設定し(ステップS632)、賞球未払出個数カウンタに賞球払出予定総数カウンタ(PA)の内容を設定する(ステップS633)。また、賞球払出予定総数カウンタ(PA)の内容を前回賞球払出予定総数カウンタ(PB)に設定する(ステップS634)。そして、賞球動作中フラグをセットし(ステップS635)、ステップS627に移行する。
図83は、払出制御コードが1の場合に実行される払出モータ停止待ち処理(ステップS611)を示すフローチャートである。払出モータ停止待ち処理において、払出制御用CPU371は、払出モータ289の払出動作が終了したか否か確認する(ステップS641)。払出制御用CPU371は、例えば、払出モータ制御処理における払出モータブレーキ処理(ステップS525)が終了するときにその旨のフラグをセットし、ステップS641において、そのフラグを確認することによって、払出モータ289の払出動作が終了したか否かを確認することができる。払出動作が終了していない場合には、払出制御用CPU371は、払出モータ位置センサ295がオンしたら払出動作カウンタの値を−1する(ステップS644)。なお、ステップS641において、払出動作カウンタの値が0になっているか否か判定し、払出動作カウンタの値が0になっていれば払出動作が終了していると判定するようにしてもよい。
払出モータ289の払出動作が終了した場合には、払出制御用CPU371は、払出制御監視タイマに払出通過監視時間をセットする(ステップS642)。払出通過監視時間は、最後の払出球が払出モータ289によって払い出されてから払出個数カウントスイッチ301を通過するまでの時間に、余裕を持たせた時間である。そして、払出制御コードの値を2にして(ステップS643)、処理を終了する。
図84,図85は、払出制御コードの値が2の場合に実行される払出通過待ち処理(ステップS612)を示すフローチャートである。払出通過待ち処理では、賞球払出が行われているときには、賞球未払出個数カウンタの値が0になっていれば正常に払出が完了したと判定される。なお、払出処理の開始時に、払出モータ289の回転量を決めるための払出動作カウンタに設定された値と賞球未払出個数カウンタに設定された値とは対応し、また、ここでの制御が実行されるときには払出動作カウンタの値は払出モータ289の停止(払出モータ289としては払出完了)に相当する0になっているので、賞球未払出個数カウンタの値が0になっていない場合には、払出モータ289によって所定数の払い出しがなされたはずであるにもかかわらず、球払出装置97の下部に設けられている払出個数カウントスイッチ301では所定数未満の払い出ししか検出できなかったことになる。すなわち、正常に払出が完了していないことになる。
そして、賞球未払出個数カウンタの値が0になっていない場合には、エラー状態でなければ、遊技球の再払出動作を試みる。再払出動作において払出個数カウントスイッチ301によって遊技球が実際に払い出されたことが検出されたら正常に払出が完了したと判定される。
また、球貸し払出が行われているときには、球貸し未払出個数カウンタの値が0になっていれば正常に払出が完了したと判定される。球貸し未払出個数カウンタの値が0になっていない場合には、エラー状態でなければ、遊技球または球貸し残数(球貸し未払出個数カウンタの値に相当)の再払出動作を試みる。
以上の説明の具体的な処理として、払出通過待ち処理において、払出制御用CPU371は、払出制御タイマの値が0でなければ、払出制御タイマの値を−1する(ステップS651)。そして、払出制御タイマの値が0になっていなければ(ステップS652)、すなわち払出制御タイマがタイムアウトしていなければ処理を終了する。
払出制御タイマがタイムアウトしていれば(ステップS652)、球貸し払出処理(球貸し動作)を実行していたか否か判定する(ステップS653)。球貸し動作を実行していたか否かは、RAMに形成されている払出制御状態フラグにおける球貸し動作中ビットがセットされているか否かによって確認される。球貸し動作を実行していない場合、すなわち、賞球払出処理(賞球動作)を実行していた場合には、払出制御用CPU371は、賞球未払出個数カウンタの値を確認する(ステップS654)。賞球未払出個数カウンタの値が0になっている場合には、正常に賞球払出処理が完了したとして、以下の処理を行う。
すなわち、賞球払出予定総数カウンタ(PA)の内容から、前回賞球払出予定総数カウンタ(PB)に設定されている値を減算する(ステップS671)。そして、前回賞球払出予定総数カウンタ(PB)の内容を0にクリア(初期化)する(ステップS672)。
また、払出制御状態フラグにおける払出球検知ビット、再払出動作中ビット、賞球動作中フラグおよび球貸し動作中ビットをリセットし(ステップS655)、払出制御コードを0にして(ステップS656)、処理を終了する、なお、再払出動作中ビットは、再払出処理を実行する際に用いられる制御ビットである。
なお、ステップS671において、賞球払出予定総数カウンタ(PA)の内容を0クリアせずに、前回賞球払出予定総数カウンタ(PB)の内容が減算されるようにするのは、払出通過待ち処理の実行中に、新たな賞球個数指令を受信して賞球払出予定総数カウンタ(PA)の内容が増加している場合があることを考慮してのことである。
また、図84には明示されていないが、払出通過待ち処理の実行中では、上乗せ処理は実行されない(図81に示すステップS693で「Y」にならないので)。実行してしまうと、前回賞球払出予定総数カウンタ(PB)の内容が更新されたにも関わらず、ステップS672の初期化処理が実行されることによって、前回賞球払出予定総数カウンタ(PB)の内容が0にされてしまい、賞球払出数が正確にならないことがあるからである。また、賞球未払出個数カウンタの値が増えてしまって(ステップS696参照)、ステップS654のチェック処理が正常に実行できないからである。ただし、払出制御タイマの値が0にならないうちは、払出通過待ち処理の実行中に上乗せ処理を実行するようにしてもよい。その場合には、上乗せ処理が実行されたときには、払出制御コードを1に更新する。また、この実施の形態では、払出センサ(払出個数カウントスイッチ301)が最後の遊技球を検出したときに払出モータ289を停止させるのではなく、払出モータ289が最後の遊技球を払い出したときに払出モータ289を停止させる。よって、払出モータ289の駆動によって新たな遊技球が払い出されている可能性はない。すなわち、迅速な賞球払出を実現するために実行される賞球毎に区切らない連続払出制御の精度が高くなる。
払出制御用CPU371は、賞球未払出個数カウンタの値が0になっていない場合には、エラーフラグ(具体的には、払出スイッチ異常エラー1ビット、払出スイッチ異常エラー2ビットおよび払出ケースエラービットのうちのいずれか1ビットまたは複数ビット)がセットされていないことを条件として(ステップS659)、再払出動作を実行する。なお、エラーフラグがセットされている場合には、再払出動作を実行しない。
再払出処理を実行するために、払出制御用CPU371は、まず、再払出動作中ビットがセットされているか否か確認する(ステップS661)。セットされていなければ、再払出動作中ビットをセットし(ステップS662)、払出動作カウンタに賞球未払出数個数カウンタまたは球貸し未払出数個数カウンタの値に相当する値をセットする(ステップS663)。その後、払出制御コードを1にして(ステップS667)、処理を終了する。
ステップS661において、再払出動作中ビットがセットされていることを確認したら、払出制御用CPU371は、再払出処理を実行しても遊技球が払い出されなかった(払出個数カウントスイッチ301が遊技球を検出しなかった)として、エラーフラグにおける払出ケースエラービットをセットする(ステップS666)。その際に、再払出動作中ビットをリセットしておく(ステップS665)。そして、処理を終了する。
以上のように、再払出処理(補正払出処理)において再払出動作を行っても遊技球が正しく払い出されない場合には、遊技球の払出動作不良として、払出個数カウントスイッチ未通過エラービット(払出ケースエラービット)がセットされる。
ステップS653で球貸し払出処理(球貸し動作)を実行していたことを確認すると、払出制御用CPU371は、球貸し未払出個数カウンタの値が0になっているか否か確認する(ステップS657)。0になっていれば、正常に球貸し払出処理が完了したとしてステップS655に移行する。
球貸し未払出個数カウンタの値が0になっていなければ、エラーフラグ(具体的には、払出スイッチ異常エラー1ビット、払出スイッチ異常エラー2ビットおよび払出ケースエラービットのうちのいずれか1ビットまたは複数ビット)がセットされていないことを条件として(ステップS658)、再払出処理を実行する。なお、エラーフラグがセットされている場合には、再払出処理を実行しない。
次に、エラー処理について説明する。図86は、エラーの種類とエラー表示用LED374の表示との関係等を示す説明図である。なお、RAMに形成されているエラーフラグ(例えば1バイト)において、図86に示すエラーのそれぞれに対応したビットが存在する。
図86に示すように、払出個数カウントスイッチ301の断線または払出個数カウントスイッチ301の部分において球詰まりが発生した場合には、払出スイッチ異常検知エラー1として、エラー表示用LED374に「2」を表示する制御を行う。なお、払出個数カウントスイッチ301の断線または払出個数カウントスイッチ301の部分において球詰まりが発生したことは、払出個数カウントスイッチ301の検出信号がオフ状態にならなかったことによって判定される。
遊技球の払出動作中でないにも関わらず払出個数カウントスイッチ301の検出信号がオン状態になった場合には、払出スイッチ異常検知エラー2として、エラー表示用LED374に「3」を表示する制御を行う。払出モータ289の回転異常または遊技球が払い出されたにも関わらず払出個数カウントスイッチ301の検出信号がオン状態にならない場合には、払出ケースエラーとして、エラー表示用LED374に「4」を表示する制御を行う。払出個数カウントスイッチ301の検出信号がオン状態にならないことの具体的な検出方法は既に説明したとおりである。
また、下皿満タン状態すなわち満タンスイッチ48がオン状態になった場合には、満タンエラーとして、エラー表示用LED374に「6」を表示する制御を行う。補給球の不足状態すなわち球切れスイッチ187がオン状態になった場合には、球切れエラーとして、エラー表示用LED374に「7」を表示する制御を行う。
さらに、カードユニット50からのVL信号がオフ状態になった場合には、プリペイドカードユニット未接続エラーとして、エラー表示用LED374に「8」を表示する制御を行う。不正なタイミングでカードユニット50と通信がなされた場合には、プリペイドカードユニット通信エラーとして、エラー表示用LED374に「9」を表示する制御を行う。なお、プリペイドカードユニット通信エラーは、プリペイドカードユニット制御処理(ステップS754)において検出される。
以上のエラーのうち、払出スイッチ異常検知エラー2、払出ケースエラーまたは賞球REQ信号エラーが発生した後、エラー解除スイッチ375が操作されエラー解除スイッチ375から操作信号が出力されたら(オン状態になったら)、払出制御手段は、エラーが発生する前の状態に復帰する。
図87は、賞球払出制御において使用されるカウンタの内容の変化の一例を示す説明図である。賞球払出予定総数カウンタ、前回賞球払出予定総数カウンタ、払出動作カウンタおよび賞球未払出個数カウンタは、初期化処理(具体的には、ステップS709等の払出制御状態復旧処理を実行しない場合のステップS715の処理)で0にクリアされている。その後、例えば、15個の賞球個数指令を受信した場合には、主制御通信処理において、賞球払出予定総数カウンタの値が15になる。そして、賞球払出処理が開始されるときに、前回賞球払出予定総数カウンタ、払出動作カウンタおよび賞球未払出個数カウンタに15が設定される(ステップS632〜S634参照)。その後、払出モータ位置センサ295がオンする度に払出動作カウンタの値が1減算され、払出個数カウントスイッチ301がオンする度に賞球未払出個数カウンタの値が1減算される。その間に、例えば、10個の賞球個数指令を受信した場合には、主制御通信処理において、賞球払出予定総数カウンタに10が加算されて25になる。
すると、賞球払出数上乗せ制御における上乗せ処理(ステップS695,S696)によって、賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容の差分(この例では10)が、払出動作カウンタおよび賞球未払出個数カウンタに加算される。よって、払出動作カウンタおよび賞球未払出個数カウンタの値は18になる。また、前回賞球払出予定総数カウンタ(PB)の内容は、賞球払出予定総数カウンタ(PA)の内容と同じにされる(ステップS695〜S697参照)。
その後、賞球未払出個数カウンタの値が0になって賞球払出が終了すると、賞球払出予定総数カウンタ(PA)の内容(この例では25)から前回賞球払出予定総数カウンタ(PB)の内容が減算されるとともに(この例では減算結果は0)、前回賞球払出予定総数カウンタ(PB)がクリアされる。
図88は、賞球払出制御において使用されるカウンタの内容の他の変化例を示す説明図である。賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容とがともに15であって、かつ、賞球払出中に、10個の賞球個数指令を受信したとする。すると、主制御通信処理において、賞球払出予定総数カウンタに10が加算されて25になる。
そして、払出動作カウンタの値が所定値(例えば1)になったときに実行される上乗せ処理によって、賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容の差分(この例では10)が、払出動作カウンタおよび賞球未払出個数カウンタに加算される。よって、払出動作カウンタおよび賞球未払出個数カウンタの値は11になる。また、前回賞球払出予定総数カウンタ(PB)の内容は、賞球払出予定総数カウンタ(PA)の内容と同じにされる。
賞球払出処理が継続されているときに、上乗せ処理の禁止条件が成立したとする(ステップS691,S692参照)。従って、上乗せ処理は実行されないが、その間に、15個の賞球個数指令と10個の賞球個数指令とを受信したとする。すると、主制御通信処理において、賞球払出予定総数カウンタに15および10が加算されて50になる。
上乗せ処理の禁止条件が解除されると、上乗せ処理によって、賞球払出予定総数カウンタ(PA)の内容と前回賞球払出予定総数カウンタ(PB)の内容の差分(この例では25)が、払出動作カウンタおよび賞球未払出個数カウンタに加算され、払出動作カウンタおよび賞球未払出個数カウンタの値は26になる。また、前回賞球払出予定総数カウンタ(PB)の内容は、賞球払出予定総数カウンタ(PA)の内容と同じにされる。
その後、賞球未払出個数カウンタの値が0になって賞球払出が終了すると、賞球払出予定総数カウンタ(PA)の内容(この例では50)から前回賞球払出予定総数カウンタ(PB)の内容が減算されるとともに(この例では減算結果は0)、前回賞球払出予定総数カウンタ(PB)がクリアされる。
なお、この実施の形態では、CPU56は、遊技機への電源投入が開始されてからタイマ割込設定を行うまでに乱数回路503の初期設定(乱数回路設定処理)を行うとともに、乱数回路設定処理において、遊技制御用マイクロコンピュータ560固有のIDナンバにもとづく値を乱数の初期値として設定する。そのため、乱数回路503が生成する乱数のランダム性を向上させることができる。また、乱数のランダム性を向上させることができるので、乱数生成のタイミングを遊技者や遊技店に認識されにくくすることができ、無線信号を用いた取り込み信号を遊技機に対して発生させることによって、大当り状態などの特定遊技状態への移行条件を不正に成立させられてしまうことを防止することができる。
また、この実施の形態では、シリアル通信回路505が割り込み要求を行った場合に、通信エラーを割込原因とする場合の割込処理を優先的に実行し、通信を禁止状態に制御する。そのため、通信エラーが発生した状態で遊技機に搭載されている払出制御基板37と通信を行うことを防止できる。よって、通信エラーによる誤動作を防止することができる。
実施の形態2.
図89は、第2の実施の形態における賞球払出数上乗せ制御を示すフローチャートである。この実施の形態では、払出制御用CPU371は、払出動作カウンタの値が、所定値(例えば1)になったか否か判定する(ステップS693B)。所定値になったときには、ステップS694以降の処理を実行する。しかし、所定値になったときでなければ、ステップS694以降の処理は実行されない。
その他の制御は、第1の実施の形態の制御と同じである。なお、ステップS694以降の処理は、払出動作カウンタの値が所定値に更新されたタイミング(例えば2から1に変化したとき)において実行され、所定値になっている状態において常に実行されるわけではない。
この実施の形態では、上乗せ処理は、払出動作カウンタの値が所定値に更新されたタイミングにおいてのみ実行される。よって、データが増加したか否かの判定(ステップS694の処理)の回数を減らすことができ、判定処理の負担を軽減することができる。
実施の形態3.
図90は、第3の実施の形態における賞球払出数上乗せ制御を示すフローチャートである。第1の実施の形態および第2の実施の形態とは異なり、この実施の形態では、払出制御用CPU371は、賞球払出予定総数カウンタ(PA)の上位バイトをレジスタにロードするが(ステップS690A)、上位バイトの上位6ビットが全て0であるか否か確認することなく、上位6ビットを0クリアして、賞球払出予定総数カウンタ(PA)にストアする(ステップS690C)。その他の制御は、第1の実施の形態の制御と同じである。
実施の形態4.
図91は、第4の実施の形態における賞球払出数上乗せ制御を示すフローチャートである。この実施の形態では、払出制御用CPU371は、払出動作カウンタの値が、所定値(例えば1)になったか否か判定する(ステップS693B)。所定値になったときには、ステップS694以降の処理を実行する。しかし、所定値になったときでなければ、ステップS694以降の処理は実行されない。その他の制御は、第3の実施の形態の制御と同じである。
実施の形態5.
図92は、第5の実施の形態における払出停止フラグ制御処理を示すフローチャートである。第5の実施の形態では、払出制御用CPU371は、遊技制御用マイクロコンピュータから賞球個数信号を受信したか否か確認する(ステップS742B)。そして、賞球個数信号を受信したら、払出停止フラグをリセットする(ステップS743)。払出停止フラグがリセットされたことによって、遊技球の払出が許可された状態になる。
賞球個数信号を受信していない場合には、払出制御用CPU371は、初期化禁止フラグがセットされていないことを条件に(ステップS745)、初期化コマンドを受信したか否か確認する(ステップS746)。初期化コマンドを受信した場合には、RAMの内容をクリアするRAMクリア処理を行う(ステップS747)。また、RAM領域のフラグやカウンタ(作業領域)などに初期値を設定する(ステップS748)。RAMの内容がクリアされるので、払出停止フラグがセットされていた場合には、払出停止フラグはリセットされる。その他の制御は、第1〜第4の実施の形態の制御と同じである。
なお、払出制御用CPU371は、例えば、主制御通信処理(図78参照)において、遊技機への電力供給が開始されてから最初に賞球個数信号を受信した場合に、その旨を示すフラグをセットする。払出制御用CPU371は、そのフラグがセットされたことを検出したら、賞球個数信号を受信したと判定する。
払出制御用マイクロコンピュータ370は、初期化コマンドを受信すると、直ちに初期化処理(ステップS747,S748)を実行する。よって、クリアスイッチ921からのクリア信号が払出制御用マイクロコンピュータ370に入力されていなくても、遊技制御用マイクロコンピュータ560が初期化処理を実行したときに、払出制御用マイクロコンピュータ370は、直ちに初期化処理を実行できる。
また、払出制御用マイクロコンピュータ370は、払出制御処理の実行状態を電力供給停止時前の状態に復旧させたときに、払出停止フラグをセットして払出処理を実行しないようにする。よって、クリアスイッチ921が押下されているにも関わらず、遊技制御用マイクロコンピュータ560が初期化コマンドを送信する前に払出制御用マイクロコンピュータ370が幾つかの遊技球を払い出してしまう可能性がなくなる。また、復旧処理に関連して、払出制御用マイクロコンピュータ370が、払出制御処理を開始すべき時期に、直ちに払出制御処理を開始できるようになる。
なお、この実施の形態では、払出制御用マイクロコンピュータ370は、初期化コマンドを受信することなく賞球個数信号を受信したら払出停止フラグをリセットするので、遊技制御用マイクロコンピュータ560は、遊技制御処理の実行状態を電力供給停止時前の状態に復旧させたときに復旧コマンドを出力しなくてもよい。また、払出制御用マイクロコンピュータ370は、メイン処理(図73参照)において、監視タイマをセットする処理(ステップS712)を実行しなくてよい。
実施の形態6.
図93は、第6の実施の形態における払出停止フラグ制御処理を示すフローチャートである。第6の実施の形態では、払出制御用CPU371は、遊技制御用マイクロコンピュータから復旧コマンドを受信したか否か確認する(ステップS742C)。具体的には、復旧コマンド受信フラグがセットされているか否か確認する。そして、復旧コマンド受信フラグがセットされていたら、復旧コマンド受信フラグをリセットするとともに(ステップS742D)、払出停止フラグをリセットする(ステップS743)。払出停止フラグがリセットされたことによって、遊技球の払出が許可された状態になる。
復旧コマンド受信フラグがセットされていない場合には、払出制御用CPU371は、初期化禁止フラグがセットされていないことを条件に(ステップS745)、初期化コマンドを受信したか否か確認する(ステップS746)。初期化コマンドを受信した場合には、RAMの内容をクリアするRAMクリア処理を行う(ステップS747)。また、RAM領域のフラグやカウンタ(作業領域)などに初期値を設定する(ステップS748)。RAMの内容がクリアされるので、払出停止フラグがセットされていた場合には、払出停止フラグはリセットされる。その他の制御は、第1〜第4の実施の形態の制御と同じである。ただし、払出制御用マイクロコンピュータ370は、メイン処理(図73参照)において、監視タイマをセットする処理(ステップS712)を実行しなくてよい。
この実施の形態でも、払出制御用マイクロコンピュータ370は、払出制御処理の実行状態を電力供給停止時前の状態に復旧させたときに、払出停止フラグをセットして払出処理を実行しないようにする。よって、クリアスイッチ921が押下されているにも関わらず、遊技制御用マイクロコンピュータ560が初期化コマンドを送信する前に払出制御用マイクロコンピュータ370が幾つかの遊技球を払い出してしまう可能性がなくなる。また、復旧処理に関連して払出制御用マイクロコンピュータ370が早めに払出制御処理を開始できるようになる。
なお、上記の各実施の形態では、所定時間内に初期化コマンドを受信しないことを条件に遊技球の払出を許可するか(図76参照)、賞球個数コマンドを受信したことを条件に遊技球の払出を許可するか(図92参照)、または、復旧コマンドを受信したことを条件に遊技球の払出を許可するようにしたが(図93参照)、それらの条件のうち2つまたは3つの条件のいずれかが成立したら、遊技球の払出を許可するようにしてもよい。また、払出停止フラグ制御処理において、初期化コマンド、復旧コマンドおよび賞球個数信号のうち、いずれかのコマンド(または信号)を最初に受信したときに、遊技球の払出を許可するようにしてもよい。なお、その場合に、いずれかのコマンドを受信したときに初期化禁止フラグをセットする。
次に、音/ランプ制御手段の動作を説明する。図94は、音/ランプ制御用マイクロコンピュータ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に格納されるプロセスデータ(以下、図柄制御側プロセスデータともいう)は、プロセスタイマ設定値と、表示制御実行データのみを含む演出制御実行データの組合せが複数集まったデータで構成されている。
図95は、音/ランプ制御処理で用いる各乱数を示す説明図である。各乱数は、以下のように使用される。
(1)ランダム1:予告演出を実行するか否かを決定する(予告演出実行決定用)。この実施の形態では、可変表示装置9においてリーチ態様の飾り図柄の可変表示を行う際に、音/ランプ制御用マイクロコンピュータ100bは、例えば、ランダム1があらかじめ決められている判定値と一致した場合には、予告演出を行うと決定する。なお、音/ランプ制御用マイクロコンピュータ100bは、リーチ態様の可変表示を行うか否かに関わらず、ランダム1を用いて予告演出を行うか否かを決定してもよい。
(2)ランダム2:予告演出を行う場合に、可変表示装置9を用いて行う予告演出の種類を決定する(予告演出種類決定用)
図96は、ステップS785の演出内容決定処理を示すフローチャートである。演出内容決定処理において、音/ランプ制御用マイクロコンピュータ100bは、変動パターン受信フラグがセットされているか否か確認する(ステップS1851)。なお、変動パターン受信フラグは、音/ランプ制御メイン処理のコマンド解析処理(ステップS784)において、変動パターンコマンドを受信したと判定されたときにセットされる。
変動パターン受信フラグがセットされていれば、音/ランプ制御用マイクロコンピュータ100bは、変動パターン受信フラグをリセットし、受信した変動パターンコマンドにもとづいて飾り図柄の変動パターンを特定する。また、音/ランプ制御用マイクロコンピュータ100bは、特定した変動パターンにもとづいて、可変表示装置9を用いて実行すべき可変表示がリーチを伴う変動であるか否かを判定する(ステップS1852)。例えば、音/ランプ制御用マイクロコンピュータ100bは、受信した変動パターンコマンドに示される変動パターンがリーチを伴うパターンである場合(例えば、EXTデータ「02(H)」〜「09(H)」である変動パターンである場合)、音/ランプ制御用マイクロコンピュータ100bは、リーチを伴う変動であると判定する。なお、ステップS1851で変動パターン受信フラグがセットされていなかった場合には、音/ランプ制御用マイクロコンピュータ100bは、そのまま処理を終了する。
リーチを伴う変動であると判定した場合、音/ランプ制御用マイクロコンピュータ100bは、予告演出実行決定用乱数(ランダム1)にもとづいて、予告演出を行うか否かを決定する(ステップS1853)。例えば、音/ランプ制御用マイクロコンピュータ100bは、ランダム1が判定値と一致すると、可変表示装置9を用いた予告演出を行うと決定する。なお、ステップS1852でリーチを伴う変動でなかった場合には、ステップS1857に移行する。
予告演出を行わないと決定した場合(ステップS1854)、音/ランプ制御用マイクロコンピュータ100bは、変動パターンコマンドを受信しているとともに表示結果指定コマンドを受信している場合には、変動パターンコマンドおよび表示結果指定コマンドを図柄制御用マイクロコンピュータ100aに転送し、図柄制御用マイクロコンピュータ100aは、可変表示装置9を用いた飾り図柄の可変表示および遊技演出を実行することになる。この場合、音/ランプ制御用マイクロコンピュータ100bは、ステップS1854で予告演出を行わないと決定すると、予告演出を行わない旨を指定する演出内容指定コマンドを生成し、図柄制御用マイクロコンピュータ100aに送信する(ステップS1857)。
予告演出を行うことに決定すると(ステップS1854)、音/ランプ制御用マイクロコンピュータ100bは、予告演出種類決定用乱数(ランダム2)にもとづいて、可変表示装置9を用いて行わせる予告演出の種類を決定する(ステップS1855)。例えば、音/ランプ制御用マイクロコンピュータ100bは、ランダム2にもとづいて、予告演出において、飾り図柄をどの程度の速度で変動させるかや、飾り図柄をいずれの回転方向に変動させるか、可変表示装置9にいずれのキャラクタを登場させるかを決定する。
なお、この実施の形態では、変動パターンコマンドにもとづいてリーチであるか否かを特定して演出内容を決定する場合を説明するが、音/ランプ制御用マイクロコンピュータ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で送信テーブルのアドレスがセットされたことにもとづいて、音/ランプ制御メイン処理におけるコマンド制御処理(ステップS789参照)が実行されることによって、演出内容指定コマンドが図柄制御基板80aに送信される。
また、ステップS1855で決定した演出内容を変動パターンコマンドや表示結果指定コマンドに付加する場合、音/ランプ制御用マイクロコンピュータ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で受信するようにしてもよい。
また、図96に示す例では、変動パターンコマンドを受信したときに、リーチを伴う変動であるかどうかを判定し、リーチを伴う変動である場合に、予告演出の実行の有無などを決定するとともに、演出内容コマンドを生成する処理などを行っていた。しかし、このような構成に限られるわけではなく、例えば、変動パターンコマンドを受信したときに、大当り用の変動パターンであるかどうかを判定し、大当り用の変動パターンである場合に、予告演出の実行の有無などを決定するとともに、演出内容コマンドを生成する処理などを行うようにしてもよい。このような構成によっても、遊技制御用マイクロコンピュータ560の制御負担を軽減することができる。
次に、図柄制御手段の動作を説明する。図97は、図柄制御用マイクロコンピュータ100aが実行するメイン処理を示すフローチャートである。遊技機に対する電力供給が開始され、リセット信号がハイレベルになると、図柄制御用マイクロコンピュータ100aは、メイン処理を開始する。メイン処理では、図柄制御用マイクロコンピュータ100aは、まず、RAM領域のクリアや各種初期値の設定、また演出制御の起動間隔を決めるためのタイマの初期設定等を行うための初期化処理を行う(ステップS771)。その後、図柄制御用マイクロコンピュータ100aは、タイマ割込フラグの監視(ステップS772)の確認を行うループ処理に移行する。タイマ割込が発生すると、図柄制御用マイクロコンピュータ100aは、タイマ割込処理においてタイマ割込フラグをセットする。メイン処理において、タイマ割込フラグがセットされていたら、図柄制御用マイクロコンピュータ100aは、そのフラグをクリアし(ステップS773)、以下の図柄制御処理を実行する。
タイマ割込は例えば2ms毎にかかる。すなわち、図柄制御処理は、例えば2ms毎に起動される。また、この実施の形態では、タイマ割込処理ではフラグセットのみがなされ、具体的な図柄制御処理はメイン処理において実行されるが、タイマ割込処理で図柄制御処理を実行してもよい。
図柄制御処理において、図柄制御用マイクロコンピュータ100aは、まず、受信した演出制御コマンドを解析する(コマンド解析処理:ステップS774)。次いで、図柄制御用マイクロコンピュータ100aは、図柄制御プロセス処理を行う(ステップS775)。図柄制御プロセス処理では、制御状態に応じた各プロセスのうち、現在の制御状態(図柄制御プロセスフラグ)に対応したプロセスを選択して可変表示装置9の表示制御を実行する。また、乱数カウンタを更新する処理を実行する(ステップS776)。その後、ステップS772のタイマ割込フラグの確認を行う処理に戻る。
音/ランプ制御基板80bからのINT信号は図柄制御用マイクロコンピュータ100aの割込端子に入力されている。例えば、音/ランプ制御基板80bからのINT信号がオン状態になると、図柄制御用マイクロコンピュータ100aにおいて割込がかかる。そして、図柄制御用マイクロコンピュータ100aは、割込処理において演出制御コマンドや演出内容コマンドの受信処理を実行する。コマンドの受信処理において、図柄制御用マイクロコンピュータ100aは、受信したコマンドデータをコマンド受信バッファに格納する。
図98は、コマンド解析処理(ステップS774)の具体例を示すフローチャートである。音/ランプ制御基板80bから受信された演出制御コマンドおよび演出内容指定コマンドは受信コマンドバッファに格納されるが、コマンド解析処理では、図柄制御用マイクロコンピュータ100aは、コマンド受信バッファに格納されているコマンドの内容を確認する。
コマンド解析処理において、図柄制御用マイクロコンピュータ100aは、まず、コマンド受信バッファに受信コマンドが格納されているか否か確認する(ステップS7611)。格納されているか否かは、コマンド受信個数カウンタの値と読出ポインタとを比較することによって判定される。両者が一致している場合が、受信コマンドが格納されていない場合である。コマンド受信バッファに受信コマンドが格納されている場合には、図柄制御用マイクロコンピュータ100aは、コマンド受信バッファから受信コマンドを読み出す(ステップS7612)。なお、読み出したら読出ポインタの値を+1しておく(ステップS7613)。
受信した演出制御コマンド等が変動パターン指定の演出制御コマンドであれば(ステップS7614)、図柄制御用マイクロコンピュータ100aは、そのコマンドのEXTデータを変動パターンデータ格納領域に格納する(ステップS7615)。この場合、図柄制御用マイクロコンピュータ100aは、変動パターンコマンドを受信したことを示す変動パターン受信フラグをセットする(ステップS7616)。
なお、ステップS7614〜S7616の処理は、音/ランプ制御用マイクロコンピュータ100bが実行するコマンド解析処理においても実行される。
ステップS7611にて受信していることが確認された演出制御コマンド等が表示結果指定の演出制御コマンドであれば(ステップS7619)、図柄制御用マイクロコンピュータ100aは、そのコマンドのEXTデータを表示結果(特別図柄の表示結果)として表示結果格納領域に格納する(ステップS7620)。次いで、表示結果指定コマンドで指定された表示結果に応じた飾り図柄(左中右の図柄)の停止図柄を決定し、飾り図柄格納領域に格納する(ステップS7621)。なお、飾り図柄の停止図柄は、飾り図柄決定用乱数にもとづいて決定される。なお、変動パターンコマンドで指定される変動パターンがリーチを伴う変動パターンであるか否かを確認し、リーチを伴う変動パターンの場合には、飾り図柄の停止図柄としてリーチ図柄(例えば、左右の飾り図柄が同一図柄で、中の飾り図柄が異なる図柄)を決定する。
図柄制御用マイクロコンピュータ100aは、ステップS7612で読み出した受信コマンドがその他の演出制御コマンドである場合には、受信コマンドに対応するコマンド受信フラグをセットし、必要であれば受信コマンドを保存する(ステップS7622)。
例えば、受信コマンドが復旧コマンドであれば、復旧コマンドに応じた遊技状態を示すデータ(例えばフラグ)を記憶する。なお、このような処理は、音/ランプ制御用マイクロコンピュータ100bが実行するコマンド解析処理においても実行される。
図99は、図97に示されたメイン処理における図柄制御プロセス処理(ステップS775)を示すフローチャートである。図柄制御プロセス処理では、図柄制御用マイクロコンピュータ100aは、図柄制御プロセスフラグの値に応じてステップS1800〜S1805のうちのいずれかの処理を実行する。各処理において、以下のような処理が実行される。
飾り図柄通常処理(ステップS1800):変動パターンコマンドを受信しているか否かを確認する。変動パターンコマンドを受信していれば、図柄制御用マイクロコンピュータ100aは、図柄制御プロセスフラグの値をステップS1801(飾り図柄変動開始処理)に対応した値に変更する。
飾り図柄変動開始処理(ステップS1801):変動パターンに応じて予め定められているプロセスデータを選択し、プロセスタイマをスタートさせるとともに、可変表示装置9の表示制御を開始する。その後、図柄制御プロセスフラグの値をステップS1802(飾り図柄変動中処理)に応じた値に更新する。
飾り図柄変動中処理(ステップS1802):変動パターンを構成する各変動状態(変動速度等)の切替タイミングを制御するとともに、変動時間の終了を監視する。その後、図柄制御プロセスフラグの値をステップS1803(飾り図柄停止処理)に応じた値に更新する。
飾り図柄停止処理(ステップS1803):変動時間が経過したら、図柄の変動を停止し停止図柄(確定図柄)を表示する制御を行う。その後、大当りとする場合には、図柄制御プロセスフラグの値をステップS1804(大当り表示処理)に応じた値に更新する。そうでない場合には、図柄制御プロセスフラグの値をステップS1800に応じた値に更新する。
大当り表示処理(ステップS1804):変動時間の終了後、大当り表示の制御を行う。その後、図柄制御プロセスフラグの値をステップS1805(大当り遊技中処理)に応じた値に更新する。
大当たり遊技中処理(ステップS1805):大当たり遊技中の制御を行う。例えば、大入賞口開放前表示や大入賞口開放時表示の演出制御コマンドを受信したら、ラウンド中やインターバル中の表示制御等を行う。また、大当り遊技を終了すると、大当り遊技を終了した旨を示す所定のエンディング表示を行う。その後、図柄制御プロセスフラグの値をステップS1800に応じた値に更新する。
ここでは、演出装置を制御するマイクロコンピュータを搭載した制御基板として音/ランプ制御基板80bと図柄制御基板80aとが設けられ、主基板31の遊技制御用マイクロコンピュータ560が音/ランプ制御基板80bに搭載されている音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドを送信し、音/ランプ制御用マイクロコンピュータ100bが図柄制御基板80aに搭載されている図柄制御用マイクロコンピュータ100aに演出制御コマンドに応じたコマンドを送信するように構成されている場合について説明した。しかし、遊技制御用マイクロコンピュータ560が図柄制御用マイクロコンピュータ100aに演出制御コマンドを送信し、図柄制御用マイクロコンピュータ100aが音/ランプ制御用マイクロコンピュータ100bに演出制御コマンドに応じたコマンドを送信するように構成されていてもよい。
図100は、音/ランプ制御基板80bに送出される演出制御コマンドの内容の他の例を示す説明図である。図52に示す例では、表示結果コマンドとして、確変大当り指定コマンド、通常大当り指定コマンドおよびはずれ指定コマンドが使用されていた。図100に示す例では、表示結果コマンドとして、左中右の飾り図柄の停止図柄を指定する演出制御コマンド(91XX(H)、92XX(H)、93XX(H))が使用される。
図100に示す演出制御コマンドを使用する場合、飾り図柄の確変大当り図柄(確変大当りにすることに決定された場合に可変表示装置9に停止表示される飾り図柄の組み合わせ。例えば「7」「7」「7」)と、飾り図柄の非確変大当り図柄(通常大当り図柄:通常大当りにすることに決定された場合に可変表示装置9に停止表示される飾り図柄の組み合わせ。例えば「7」「7」「7」以外の左中右の飾り図柄が揃った組み合わせ)とが決められている。遊技制御用マイクロコンピュータ560は、特別図柄停止図柄設定処理(図55参照)において、特別図柄の停止図柄を決定したときに、飾り図柄の停止図柄も決定し、決定した飾り図柄の停止図柄を、左中右の飾り図柄の停止図柄を指定する演出制御コマンド(91XX(H)、92XX(H)、93XX(H))で音/ランプ制御用マイクロコンピュータ80bに対して送信する。音/ランプ制御用マイクロコンピュータ80bは、それらの演出制御コマンドを図柄制御用マイクロコンピュータ80aに送信する。図柄制御用マイクロコンピュータ80aは、それらの演出制御コマンドに従って、飾り図柄の可変表示時間が経過したときに、可変表示装置9に、飾り図柄の停止図柄を導出表示する。
図101は、中継基板77、音/ランプ制御基板80bおよび図柄制御基板80aの他の回路構成例を示すブロック図である。図101に示す回路構成を用いる場合、例えば、図柄制御基板80aが搭載する図柄制御用マイクロコンピュータ100aは、ステップS1851〜S1856と同様の処理に従って、変動パターンコマンドにもとづいて、演出内容(予告演出を行うか否かや、予告演出の種類)を決定する。そして、図柄制御用マイクロコンピュータ100aは、決定した演出内容に従って、VDP109に、可変表示装置9を用いた予告演出を行わせる。また、図柄制御用マイクロコンピュータ100aは、決定した演出内容を示す演出内容指定コマンドを生成して、音/ランプ制御基板80bに送信するようにしてもよい。そして、音/ランプ制御基板80bが搭載する音/ランプ制御用マイクロコンピュータ100bは、受信した演出内容指定コマンドに示される演出内容に従って、各ランプ25,28a,28b,28cの表示制御を行ったり、音出力装置27の音出力制御を行ってもよい。
また、この実施の形態では、各演出装置を別々の制御基板を用いて制御する場合として、音/ランプ制御基板80bと図柄制御基板80aとを用いる場合を説明したが、他の制御基板の組合せを用いて各演出装置を制御してもよい。例えば、音出力装置27を制御する音制御基板と、各ランプを制御するランプ制御基板と、可変表示装置9を制御する図柄制御基板とを用いて、各演出装置を制御してもよい。この場合、例えば、主基板31からの演出制御コマンドを、まず音制御基板で受信し、音制御基板に搭載される音制御用マイクロコンピュータが、受信した変動パターンコマンドにもとづいて演出内容(予告演出を行うか否かや、予告演出の種類)を決定してもよい(図96に示す処理と同じ内容の処理)。そして、音制御用マイクロコンピュータが、決定した演出内容を示すコマンドをランプ制御基板と図柄制御基板に送信するようにしてもよい(ランプ制御基板を介して図柄制御基板に送信する構成や図柄制御基板を介してランプ制御基板に送信する構成も含む)。また、音出力装置27および可変表示装置9を制御する音/図柄制御基板と、各ランプを制御するランプ制御基板とを用いて、各演出装置を制御してもよい。この場合、例えば、主基板31からの演出制御コマンドを、音/図柄制御基板で受信し、音/図柄制御基板に搭載される音/図柄制御用マイクロコンピュータが、受信した変動パターンコマンドにもとづいて演出内容を決定してもよい(図96に示す処理と同じ内容の処理)。そして、音/図柄制御用マイクロコンピュータが、決定した演出内容を示すコマンドをランプ制御基板に送信するようにしてもよい。なお、上記の制御基板の組み合わせに限られるけわではなく、主基板31から演出制御コマンドがランプ制御基板に送信され、ランプ制御基板から音/図柄制御基板にコマンドが送信される構成などであってもよい。
また、音制御用マイクロコンピュータが、表示結果指定コマンドにもとづいて飾り図柄のずれ数を特定し、変動パターンコマンドに示される基本時間と、飾り図柄のずれ数とにもとづいて、飾り図柄の変動時間を特定してもよい。そして、音制御用マイクロコンピュータは、決定した演出内容や変動時間を含むコマンドを生成し(または演出制御コマンドに付加し)、ランプ制御基板や図柄制御基板に送信してもよい。なお、主基板31からの演出制御コマンドを、まずランプ制御基板や図柄制御基板で受信し、ランプ制御基板や図柄制御基板が搭載するマイクロコンピュータが、演出内容を決定したり変動時間を特定してもよい。
なお、上記の各実施の形態のパチンコ遊技機は、主として、始動入賞にもとづいて可変表示装置9に可変表示される特別図柄の停止図柄が所定の図柄の組み合わせになると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機であったが、始動入賞にもとづいて開放する電動役物の所定領域への入賞があると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機や、始動入賞にもとづいて可変表示される図柄の停止図柄が所定の図柄の組み合わせになると開放する所定の電動役物への入賞があると所定の権利が発生または継続するパチンコ遊技機であっても、本発明を適用できる。さらに、主基板と払出制御基板とを備えた構成を有していれば、スロット機にも本発明を適用できる。