以下、本発明に係る遊技機の一実施形態を、パチンコ遊技機を例にして、図1〜図33を参照して具体的に説明する。なお、以下の説明において、上下左右の方向を示す場合は、図示正面から見た場合の上下左右をいうものとする。
<遊技機:外観構成>
まず、図1及び図2を参照して、本実施形態に係るパチンコ遊技機の外観構成を説明する。
図1に示すように、パチンコ遊技機1は、木製の外枠2の前面に矩形状の前面枠3を開閉可能に取り付け、その前面枠3の裏面に取り付けられている遊技盤収納フレーム(図示せず)内に遊技盤4が装着された構成からなる。遊技盤4は、図2に示す遊技領域40を前面に臨ませた状態で装着され、図1に示すようにこの遊技領域40の前側に透明ガラスを支持したガラス扉枠5が設けられている。なお、上記遊技領域40は、遊技盤4の面上に配設された球誘導レール6(図2参照)で囲まれた領域からなるものである。
一方、パチンコ遊技機1は、図1に示すように、ガラス扉枠5の下側に前面操作パネル7が配設され、その前面操作パネル7には上受け皿ユニット8が設けられ、この上受け皿ユニット8には、排出された遊技球を貯留する上受け皿9が一体形成されている。また、この前面操作パネル7には、球貸しボタン11及びプリペイドカード排出ボタン12(カード返却ボタン12)が設けられている。そして、上受け皿9の上皿表面部分には、内蔵ランプ(図示せず)点灯時に押下することにより演出効果を変化させることができる押しボタン式の演出ボタン装置13が設けられている。また、この上受け皿9には、当該上受け皿9に貯留された遊技球を下方に抜くための球抜きボタン14が設けられている。
また一方、図1に示すように、前面操作パネル7の右端部側には、発射ユニットを作動させるための発射ハンドル15が設けられ、その発射ハンドル15の左側近傍及び前面枠3の上部両側面側には、BGM(Background music)あるいは効果音を発するスピーカ16が設けられている。そして、上記前面枠3の周枠には、LEDランプ等の装飾ランプが配設されている。
他方、上記遊技盤4の遊技領域40には、図2に示すように、略中央部にLCD(Liquid Crystal Display)等からなる液晶表示装置41が配設されている。この液晶表示装置41は、表示エリアを左、中、右の3つのエリアに分割し、独立して数字やキャラクタ、文字(キャラクタの会話や歌詞テロップ等)あるいは図柄(装飾図柄)の変動表示が可能なものである。
一方、液晶表示装置41の真下には、特別図柄1始動口42が配設され、その内部には入賞球を検出する特別図柄1始動口スイッチ42a(図3参照)が設けられている。液晶表示装置41の右下部側には、特別図柄2始動口43が配設され、その内部には入賞球を検出する特別図柄2始動口スイッチ43a(図3参照)が設けられている。そしてさらに、この特別図柄2始動口43は、図2に示すように、開閉部材43bを備えており、この開閉部材43bが開放した場合に遊技球が入賞し易い状態となる。この開閉部材43bは、後述する普通図柄の抽選に当選した場合に、所定回数、所定時間開放するもので、普通電動役物ソレノイド43c(図3参照)によって開閉動作が制御されている。なお、以下では、このような開閉部材43b及び普通電動役物ソレノイド43cを合せた装置を普通電動役物と称することがある。
一方、特別図柄1始動口42の右側には、図2に示すように、入賞装置44が配設されている。この入賞装置44は、後述する特別図柄の抽選に当選したとき、すなわち大当たりしたことにより発生する特別遊技状態の際、開閉扉44aにて閉止されている図示しない大入賞口が開放するように開閉扉44aが特別電動役物ソレノイド44b(図3参照)によって駆動制御され、遊技球が大入賞口(図示せず)に入球可能となる。なお、この大入賞口(図示せず)に入球した遊技球は入賞球として大入賞口(図示せず)内部に設けられている大入賞口スイッチ44cによって検出される。
一方、特別図柄の抽選に当選していないとき、すなわち、特別遊技状態でない場合は、特別電動役物ソレノイド44b(図3参照)によって開閉扉44aが駆動制御され、大入賞口(図示せず)が閉止される。これにより、大入賞口(図示せず)内に遊技球が入球することができなくなる。なお、以下では、このような開閉扉44a及び特別電動役物ソレノイド44bを合せた装置を特別電動役物と称することがある。
他方、液晶表示装置41の右上部には、図2に示すように、ゲートからなる普通図柄始動口45が配設され、その内部には、遊技球の通過を検出する普通図柄始動口スイッチ45a(図3参照)が設けられている。また、上記入賞装置44の右側及び上記特別図柄1始動口42の左側には、一般入賞口46が夫々配設され(図示では、右側に1つ、左側に3つ)、その内部には、夫々、遊技球の通過を検出する一般入賞口スイッチ46a(図3参照)が設けられている。
また、上記遊技盤4の遊技領域40の右下周縁部には、7セグメントが3個並べて構成されており、そのうち2個の7セグメントが特別図柄表示装置47であり、他の7セグメントは特別図柄1や特別図柄2等の保留球数等を表示するものである。この特別図柄表示装置47は、図2に示すように、特別図柄1表示装置47aと特別図柄2表示装置47bとで構成されており、その特別図柄1表示装置47aの左側には、2個のLEDからなる普通図柄表示装置48が設けられている。なお、上記遊技盤4の遊技領域40には、図示はしないが複数の遊技釘が配設され、遊技球の落下方向変換部材としての風車49が配設されている。
<遊技機:制御装置>
次に、上記のような外観構成からなるパチンコ遊技機1内に設けられる遊技の進行状況に応じて電子制御を行う制御装置を、図3を用いて説明する。この制御装置は、図3に示すように、遊技動作全般の制御を司る主制御基板60と、その主制御基板60からの制御コマンドに基づいて遊技球を払出す払出制御基板70と、画像と光と音についての制御を行うサブ制御基板80とで主に構成されている。なお、サブ制御基板80は、図3に示すように、演出制御基板90と、装飾ランプ基板100と、液晶制御基板120とで構成されている。
主制御基板60は、主制御CPU600と、一連の遊技制御手順を記述した遊技プログラム等を格納した主制御ROM610と、作業領域やバッファメモリ等として機能する主制御RAM620と、ハードウェア乱数を更新する乱数回路630と、システムリセット信号や、ウォッチドックタイマ(図示せず)リセット信号、イリーガルアクセスリセット信号等のリセット信号を制御するリセットコントローラ640と、PWM信号を生成するPWM回路650とで構成されたワンチップマイクロコンピュータを搭載している。
そして、このように構成される主制御基板60には、払出モータMを制御して遊技球を払出す払出制御基板70が接続されている。そしてさらには、特別図柄1始動口42への入賞を検出する特別図柄1始動口スイッチ42aと、特別図柄2始動口43への入賞を検出する特別図柄2始動口スイッチ43aと、普通図柄始動口45の通過を検出する普通図柄始動口スイッチ45aと、一般入賞口46への入賞を検出する一般入賞口スイッチ46aと、開閉扉44aによって開放又は閉止される大入賞口(図示せず)の入賞を検出する大入賞口スイッチ44cとが接続されている。またさらには、開閉部材43bの動作を制御する普通電動役物ソレノイド43cと、開閉扉44aの動作を制御する特別電動役物ソレノイド44bと、特別図柄1表示装置47aと、特別図柄2表示装置47bと、普通図柄表示装置48とが接続されている。
このように構成される主制御基板60は、特別図柄1始動口スイッチ42a又は特別図柄2始動口スイッチ43aあるいは普通図柄始動口スイッチ45aからの信号を主制御CPU600にて受信すると、遊技者に有利な特別遊技状態を発生させるか(いわゆる「当たり」)、あるいは、遊技者に有利な特別遊技状態を発生させないか(いわゆる「ハズレ」)の抽選を行い、その抽選結果である当否情報に応じて特別図柄の変動パターンや停止図柄あるいは普通図柄の表示内容を決定し、その決定した情報を特別図柄1表示装置47a又は特別図柄2表示装置47bあるいは普通図柄表示装置48に送信する。これにより、特別図柄1表示装置47a又は特別図柄2表示装置47bあるいは普通図柄表示装置48に抽選結果が表示されることとなる。そしてさらに、主制御基板60、すなわち、主制御CPU600は、その決定した情報を含む演出制御コマンドを生成し、演出制御基板90に送信する。なお、主制御基板60、すなわち、主制御CPU600が、一般入賞口スイッチ46a、大入賞口スイッチ44cからの信号を受信した場合は、遊技者に幾らの遊技球を払い出すかを決定し、その決定した情報を含む払出制御コマンドを払出制御基板70に送信することで、払出制御基板70が遊技者に遊技球を払出すこととなる。なお、この抽選処理についての詳細は後述することとする。
また、抽選を行った結果、普通図柄の抽選に当選した場合、PWM回路650にて生成されるPWM信号によって開閉部材43bが所定回数、所定時間開放するように普通電動役物ソレノイド43cが駆動制御される。一方、特別図柄の抽選に当選した場合、PWM回路650にて生成されるPWM信号によって特別電動役物ソレノイド44bが大入賞口(図示せず)を開放するように制御される。なお、この処理並びにPWM回路650の詳細は後述することとする。
払出制御基板70は、上記主制御基板60(主制御CPU600)からの払出制御コマンドを受信し、その受信した払出制御コマンドに基づいて払出モータ信号を生成する。そして、その生成した払出モータ信号にて、払出モータMを制御し、遊技者に遊技球を払出す。そしてさらに、払出制御基板70は、遊技球の払出動作を示す賞球計数信号や払出動作の異常に係るステイタス信号を送信し、遊技者の操作に応答して遊技球を発射させる発射制御基板71の動作を開始又は停止させる発射制御信号を送信する処理を行う。
演出制御基板90は、上記主制御基板60(主制御CPU600)からの演出制御コマンドを受けて各種演出を実行制御する演出制御CPU900と、演出制御手順を記述した制御プログラム等が格納されているフラッシュメモリからなる演出制御ROM910と、作業領域やバッファメモリ等として機能する演出制御RAM920とで構成されている。そしてさらに、演出制御基板90は、所望のBGMや効果音を生成する音LSI930と、BGMや効果音等の音データ等が予め格納されている音ROM940とが搭載されている。
このように構成される演出制御基板90には、ランプ演出効果を現出するLEDランプ等の装飾ランプが搭載されている装飾ランプ基板100が接続され、さらに、内蔵されているランプ(図示せず)点灯時に遊技者が押下することにより演出効果を変化させることができる押しボタン式の演出ボタン装置13が接続され、BGMや効果音等を発するスピーカ16が接続されている。またさらに、演出制御基板90には、液晶表示装置41を制御する液晶制御基板120が接続されている。
かくして、このように構成される演出制御基板90は、主制御基板60(主制御CPU600)より送信される大当たり抽選結果(大当たりかハズレの別)に基づく特別図柄変動パターン、現在の遊技状態、始動保留球数、抽選結果に基づき停止させる装飾図柄等に必要となる基本情報を含んだ演出制御コマンドを演出制御CPU900にて受信する。そして、演出制御CPU900は、受信した演出制御コマンドに対応した演出パターンを、演出制御ROM910内に予め格納しておいた多数の演出パターンの中から抽選により決定し、その決定した演出パターンを実行指示する制御信号を演出制御RAM920内に一時的に格納する。
そして、演出制御CPU900は、演出制御RAM920に格納しておいた演出パターンを実行指示する制御信号のうち、音に関する制御信号を音LSI930に送信する。これを受けて音LSI930は、当該制御信号に対応する音データを音ROM940より読み出し、スピーカ16に出力する。これにより、スピーカ16より上記決定された演出パターンに対応したBGMや効果音が発せられることとなる。
また、演出制御CPU900は、演出制御RAM920に格納しておいた演出パターンを実行指示する制御信号のうち、光に関する制御信号を装飾ランプ基板100に送信する。これにより、装飾ランプ基板100が、ランプ演出効果を現出するLEDランプ等の装飾ランプを点灯又は消灯する制御を行うため、上記決定された演出パターンに対応したランプ演出が実行されることとなる。
さらに、演出制御CPU900は、演出制御RAM920に格納しておいた演出パターンを実行指示する制御信号のうち、画像に関する液晶制御コマンドを液晶制御基板120に送信する。これにより、液晶制御基板120が、当該液晶制御コマンドに基づく画像を表示させるように液晶表示装置41を制御することにより、上記決定された演出パターンに対応した画像が液晶表示装置41に表示されることとなる。なお、液晶制御基板120には演出内容に沿った画像を表示するための種々の画像データが記憶されており、さらに、演出出力全般の制御を担うVDP(Video Display Processor)が搭載されている。
ところで、上記説明した各基板への電源供給は、図3に示す電源基板130より供給されている。この電源基板130は、電圧生成部1300と、電圧監視部1310と、システムリセット生成部1320とを含んで構成されている。この電圧生成部1300は、遊技店に設置された図示しない変圧トランスから供給される外部電源である交流電圧AC24Vを受けて複数種類の直流電圧を生成するもので、その生成された直流電圧は、図示はしないが各基板に供給されている。
また、電圧監視部1310は、上記交流電圧AC24Vの電圧を監視するもので、この電圧が遮断されたり、停電が発生したりして電圧異常を検出した場合に電圧異常信号ALARMを主制御基板60に出力するものである。なお、電圧異常信号ALARMは、電圧異常時には「L」レベルの信号を出力し、正常時には「H」レベルの信号を出力する。
また、一方、システムリセット生成部1320は、電源投入時のシステムリセット信号を生成するもので、その生成されたシステムリセット信号は、図示はしないが各基板に出力されている。
ここで、上記説明した制御装置のうち、本発明の特徴部分は、主制御基板60に関する部分であるため、この点につき、図4〜図13を参照して具体的に説明する。まず、主制御基板60が備える乱数回路630について詳述する。
<乱数回路>
乱数回路630は、図4に示すように、16ビット乱数生成回路6300A(B)と、8ビット乱数生成回路6301A(B)と、16ビットカスタム乱数生成回路6302A(B)と、8ビットカスタム乱数生成回路6303A(B)とを有している。
<乱数回路:16ビット乱数生成回路>
この16ビット乱数生成回路6300A(B)は、主に、所定のクロック信号CLKに基づいて、0〜65535(0000h〜FFFFh)の数値範囲のハードウェア乱数をそれぞれ更新するものである。そして、このように更新されたハードウェア乱数は、内部機能レジスタ6304内にある16ビット乱数値レジスタRNDF16RG0_A(B)に格納される。
具体的には、図6(a)に示すように、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数は、16ビット乱数値レジスタRNDF16RG0_Aに格納され、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数は、16ビット乱数値レジスタRNDF16RG0_Bに格納される。なお、これら16ビット乱数値レジスタRNDF16RG0_A(B)は、読み出しのみ可能なレジスタである。
一方、上記16ビット乱数生成回路6300A(B)は、図5(a)に示すように、加算回路6310_16A(B)と、更新値レジスタ6311_16A(B)と、乱数エラー検出回路6312_16A(B)とで主に構成されている。この加算回路6310_16A(B)は、所定のクロック信号CLKに基づいて、0〜65535(0000h〜FFFFh)の数値範囲のハードウェア乱数を更新するもので、更新値レジスタ6311_16A(B)は、加算回路6310_16A(B)にて更新されたハードウェア乱数を格納するものである。そしてこのように更新値レジスタ6311_16A(B)にて格納されたハードウェア乱数値が、16ビット乱数値レジスタRNDF16RG0_A(B)に格納されることとなる。
一方、乱数エラー検出回路6312_16A(B)は、16ビット乱数生成回路6300A(B)のエラー(異常)をそれぞれ検出するもので、この検出されたエラー(異常)データが内部機能レジスタ6304内にある乱数エラーステータスレジスタRNDERR(図10参照)に格納されることとなる。なお、この乱数エラーステータスレジスタRNDERRについては後述することとする。
ところで、16ビット乱数生成回路6300A(B)は、図5(a)に示すように、さらに、初期値設定レジスタRNDINIを有している。この初期値設定レジスタRNDINIは、図6(e)に示すように、8ビットからなり、初期値設定レジスタRNDINIの7ビット目が16ビット乱数値レジスタRNDF16RG0_Aに対応し、6ビット目が16ビット乱数値レジスタRNDF16RG0_Bに対応している。すなわち、初期値設定レジスタRNDINIの7ビット目に0が設定されると、加算回路6310_16A(図5(a)参照)の初期値には0が設定され、これにより、16ビット乱数値レジスタRNDF16RG0_Aの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、16ビット乱数生成回路6300Aをリセットすると、加算回路6310_16Aの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、16ビット乱数値レジスタRNDF16RG0_Aには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
他方、初期値設定レジスタRNDINIの6ビット目に0が設定されると、加算回路6310_16B(図5(a)参照)の初期値には0が設定され、これにより、16ビット乱数値レジスタRNDF16RG0_Bの初期値には0が設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、16ビット乱数生成回路6300Bをリセットすると、加算回路6310_16Bの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、16ビット乱数値レジスタRNDF16RG0_Bには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
ところで、16ビット乱数値レジスタRNDF16RG0_A(B)は、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。すなわち、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)は、主制御CPU600だけをリセットし、16ビット乱数生成回路6300A(B)等の内部機能はリセットしない。そのため、16ビット乱数生成回路6300A(B)(更新値レジスタ6311_16A(B))は、リセットされる前に設定された値が保持され、そのまま初期値になる。それゆえ、16ビット乱数生成回路6300A(B)(更新値レジスタ6311_16A(B))には、初期値としてリセットされる前の値がそのまま初期値として格納されることとなる。これにより、主制御CPU600にて、16ビット乱数生成回路6300A(B)(更新値レジスタ6311_16A(B))を読み出し、その初期値から16ビット乱数生成回路6300A(B)(加算回路6310_16A(B))にてハードウェア乱数を更新させれば、再びシステムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)が発生するか否かを確認することで、そのリセットの要因が、16ビット乱数生成回路6300A(B)にあるか否かの検証が可能となる。なお、これら16ビット乱数値レジスタRNDF16RG0_A(B)は、主制御CPU600にて1バイト読み出し命令で2回に分けて読み出した際、更新値レジスタ6311_16A(B)より、更新中のハードウェア乱数値が読み出される可能性があるため、1回に16ビットの値を読み出す2バイト読み出し命令で読み出した方が好ましい。
<乱数回路:8ビット乱数生成回路>
一方、8ビット乱数生成回路6301A(B)は、主に、所定のクロック信号CLKに基づいて、0〜255(00h〜FFh)の数値範囲のハードウェア乱数をそれぞれ更新するものである。そして、このように更新されたハードウェア乱数は、内部機能レジスタ6304内にある8ビット乱数値レジスタRNDF08RG0_A(B)に格納される。
具体的には、図6(b)に示すように、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数は、8ビット乱数値レジスタRNDF08RG0_Aに格納され、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数は、8ビット乱数値レジスタRNDF08RG0_Bに格納される。なお、これら8ビット乱数値レジスタRNDF08RG0_A(B)は、読み出しのみ可能なレジスタである。
一方、上記8ビット乱数生成回路6301A(B)は、図5(a)に示すように、加算回路6310_8A(B)と、更新値レジスタ6311_8A(B)と、乱数エラー検出回路6312_8A(B)とで主に構成されている。この加算回路6310_8A(B)は、所定のクロック信号CLKに基づいて、0〜255(00h〜FFh)の数値範囲のハードウェア乱数を更新するもので、更新値レジスタ6311_8A(B)は、加算回路6310_8A(B)にて更新されたハードウェア乱数を格納するものである。そしてこのように更新値レジスタ6311_8A(B)にて格納されたハードウェア乱数値が、8ビット乱数値レジスタRNDF08RG0_A(B)に格納されることとなる。
一方、乱数エラー検出回路6312_8A(B)は、8ビット乱数生成回路6301A(B)のエラー(異常)をそれぞれ検出するもので、この検出されたエラー(異常)データが内部機能レジスタ6304内にある乱数エラーステータスレジスタRNDERR(図10参照)に格納されることとなる。なお、この乱数エラーステータスレジスタRNDERRについては後述することとする。
ところで、8ビット乱数生成回路6301A(B)は、図5(a)に示すように、さらに、初期値設定レジスタRNDINIを有している。この初期値設定レジスタRNDINIは、図6(e)に示すように、8ビットからなり、初期値設定レジスタRNDINIの5ビット目が8ビット乱数値レジスタRNDF08RG0_Aに対応し、4ビット目が8ビット乱数値レジスタRNDF08RG0_Bに対応している。すなわち、初期値設定レジスタRNDINIの5ビット目に0が設定されると、図5(a)に示すように、加算回路6310_8Aの初期値には0が設定され、これにより、8ビット乱数値レジスタRNDF08RG0_Aの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、8ビット乱数生成回路6301Aをリセットすると、加算回路6310_8Aの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、8ビット乱数値レジスタRNDF08RG0_Aには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
他方、初期値設定レジスタRNDINIの4ビット目に0が設定されると、図5(a)に示すように、加算回路6310_8Bの初期値には0が設定され、これにより、8ビット乱数値レジスタRNDF08RG0_Bの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、8ビット乱数生成回路6301Bをリセットすると、加算回路6310_8Bの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、8ビット乱数値レジスタRNDF08RG0_Bには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
ところで、8ビット乱数値レジスタRNDF08RG0_A(B)は、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。すなわち、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)は、主制御CPU600だけをリセットし、8ビット乱数生成回路6301A(B)等の内部機能はリセットしない。そのため、8ビット乱数生成回路6301A(B)(更新値レジスタ6311_8A(B))は、リセットされる前に設定された値が保持され、そのまま初期値になる。それゆえ、8ビット乱数生成回路6301A(B)(更新値レジスタ6311_8A(B))には、初期値としてリセットされる前の値がそのまま初期値として格納されることとなる。これにより、主制御CPU600にて、8ビット乱数生成回路6301A(B)(更新値レジスタ6311_8A(B))を読み出し、その初期値から8ビット乱数生成回路6301A(B)(加算回路6310_8A(B))にてハードウェア乱数を更新させれば、再びシステムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)が発生するか否かを確認することで、そのリセットの要因が、8ビット乱数回路6301A(B)にあるか否かの検証が可能となる。
<乱数回路:16ビットカスタム乱数生成回路>
一方、16ビットカスタム乱数生成回路6302A(B)は、主に、所定のクロック信号CLKに基づいて、0〜65535(0000h〜FFFFh)の数値範囲のハードウェア乱数をそれぞれ更新するものである。そして、このように更新されたハードウェア乱数は、内部機能レジスタ6304内にある16ビットカスタム乱数値レジスタRNDV16RG0_A(B)に格納される。
具体的には、図6(c)に示すように、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数は、16ビットカスタム乱数値レジスタRNDV16RG0_Aに格納され、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数は、16ビットカスタム乱数値レジスタRNDV16RG0_Bに格納される。なお、これら16ビットカスタム乱数値レジスタRNDV16RG0_A(B)は、読み出しのみ可能なレジスタである。
一方、上記16ビットカスタム乱数生成回路6302A(B)は、図5(b)に示すように、加算回路6320_16A(B)と、更新値レジスタ6321_16A(B)と、乱数エラー検出回路6322_16A(B)と、最大値設定回路6323_16A(B)で主に構成されている。この加算回路6320_16A(B)は、所定のクロック信号CLKに基づいて、0〜65535(0000h〜FFFFh)の数値範囲のハードウェア乱数を更新するもので、更新値レジスタ6321_16A(B)は、加算回路6320_16A(B)にて更新されたハードウェア乱数を格納するものである。そしてこのように更新値レジスタ6321_16A(B)にて格納されたハードウェア乱数値が、16ビットカスタム乱数値レジスタRNDV16RG0_A(B)に格納されることとなる。
一方、乱数エラー検出回路6322_16A(B)は、16ビットカスタム乱数生成回路6302A(B)のエラー(異常)をそれぞれ検出するもので、この検出されたエラー(異常)データが内部機能レジスタ6304内にある乱数エラーステータスレジスタRNDERR(図10参照)に格納されることとなる。なお、この乱数エラーステータスレジスタRNDERRについては後述することとする。
また、最大値設定回路6323_16A(B)は、16ビットカスタム乱数生成回路6302A(B)(加算回路6320_16A(B))の最大値を設定できるもので、内部機能レジスタ6304内にある16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_A(B)(図7(a)参照)に設定された値を設定するものである。
具体的に示せば、これら16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_A(B)は、図7(a)に示すように、読み書きすることができると共に、255〜65535(00FFh〜FFFFh)の数値範囲を設定することができるもので、初期値には65535(FFFFh)が設定される。そして、16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_Aは、最大値設定回路6323_16Aに対応し、16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_Bは、最大値設定回路6323_16Bに対応している。これにより、16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_A(B)にて設定された値が、最大値設定回路6323_16A(B)に反映され、16ビットカスタム乱数生成回路6302A(B)(加算回路6320_16A(B))の最大値として設定されることとなる。なお、このように最大値が設定されると、16ビットカスタム乱数生成回路6302A(B)(加算回路6320_16A(B))は、ハードウェア乱数の更新を開始する。このようにすれば、任意のタイミングでハードウェア乱数の更新を開始することができるため、乱数値の出現の偏りを低減させることができる。
一方、この16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_A(B)に、何らかの要因で発生したアクセス異常によって255(FFh)より小さい値が設定された際、最大値設定回路6323_16A(B)は、最小値である255(FFh)を、最大値として設定する。このようにすれば、ハードウェア乱数の設定に関する異常が発生したとしても、遊技を継続させることができ、もって、遊技の処理に対して乱数回路を効率的に使用することができる。またさらには、異常値が設定された際、異常値が設定されたか否かを検証せずとも、正常値(最小値である255)が設定され、その後の動作が継続されるため、異常処理に対する制御負荷を低減させることができる。なお、16ビットカスタム乱数生成回路最大値設定レジスタRND16MX_A(B)には、設定された値が格納されているため、当該値を主制御CPU600にて読み出すことで、異常を検出することもできる。
ところで、16ビットカスタム乱数生成回路6302A(B)は、図5(b)に示すように、さらに、初期値設定レジスタRNDINIを有している。この初期値設定レジスタRNDINIは、図6(e)に示すように、8ビットからなり、初期値設定レジスタRNDINIの3ビット目が16ビットカスタム乱数値レジスタRNDV16RG0_Aに対応し、2ビット目が16ビットカスタム乱数値レジスタRNDV16RG0_Bに対応している。すなわち、初期値設定レジスタRNDINIの3ビット目に0が設定されると、図5(b)に示すように、加算回路6320_16Aの初期値には0が設定され、これにより、16ビットカスタム乱数値レジスタRNDV16RG0_Aの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、16ビットカスタム乱数生成回路6302Aをリセットすると、加算回路6320_16Aの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、16ビットカスタム乱数値レジスタRNDV16RG0_Aには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
他方、初期値設定レジスタRNDINIの2ビット目に0が設定されると、図5(b)に示すように、加算回路6320_16Bの初期値には0が設定され、これにより、16ビットカスタム乱数値レジスタRNDV16RG0_Bの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、16ビットカスタム乱数生成回路6302Bをリセットすると、加算回路6320_16Bの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、16ビットカスタム乱数値レジスタRNDV16RG0_Bには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
ところで、16ビットカスタム乱数値レジスタRNDV16RG0_A(B)は、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。すなわち、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)は、主制御CPU600だけをリセットし、16ビットカスタム乱数生成回路6302A(B)等の内部機能はリセットしない。そのため、16ビットカスタム乱数生成回路6302A(B)(更新値レジスタ6321_16A(B))は、リセットされる前に設定された値が保持され、そのまま初期値になる。それゆえ、16ビットカスタム乱数生成回路6302A(B)(更新値レジスタ6321_16A(B))には、初期値としてリセットされる前の値がそのまま初期値として格納されることとなる。これにより、主制御CPU600にて、16ビットカスタム乱数生成回路6302A(B)(更新値レジスタ6321_16A(B))を読み出し、その初期値から16ビットカスタム乱数生成回路6302A(B)(加算回路6320_16A(B))にてハードウェア乱数を更新させれば、再びシステムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)が発生するか否かを確認することで、そのリセットの要因が、16ビットカスタム乱数生成回路6302A(B)にあるか否かの検証が可能となる。なお、これら16ビットカスタム乱数値レジスタRNDV16RG0_A(B)は、主制御CPU600にて1バイト読み出し命令で2回に分けて読み出した際、更新値レジスタ6321_16A(B)より、更新中のハードウェア乱数値が読み出される可能性があるため、1回に16ビットの値を読み出す2バイト読み出し命令で読み出した方が好ましい。
<乱数回路:8ビットカスタム乱数生成回路>
一方、8ビットカスタム乱数生成回路6303A(B)は、主に、所定のクロック信号CLKに基づいて、0〜255(00h〜FFh)の数値範囲のハードウェア乱数をそれぞれ更新するものである。そして、このように更新されたハードウェア乱数は、内部機能レジスタ6304内にある8ビットカスタム乱数値レジスタRNDV08RG0_A(B)に格納される。
具体的には、図6(d)に示すように、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数は、8ビットカスタム乱数値レジスタRNDV08RG0_Aに格納され、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数は、8ビットカスタム乱数値レジスタRNDV08RG0_Bに格納される。なお、これら8ビットカスタム乱数値レジスタRNDV08RG0_A(B)は、読み出しのみ可能なレジスタである。
一方、上記8ビットカスタム乱数生成回路6303A(B)は、図5(b)に示すように、加算回路6320_8A(B)と、更新値レジスタ6321_8A(B)と、乱数エラー検出回路6322_8A(B)と、最大値設定回路6323_8A(B)で主に構成されている。この加算回路6320_8A(B)は、所定のクロック信号CLKに基づいて、0〜255(00h〜FFh)の数値範囲のハードウェア乱数を更新するもので、更新値レジスタ6321_8A(B)は、加算回路6320_8A(B)にて更新されたハードウェア乱数を格納するものである。そしてこのように更新値レジスタ6321_8A(B)にて格納されたハードウェア乱数値が、8ビットカスタム乱数値レジスタRNDV08RG0_A(B)に格納されることとなる。
一方、乱数エラー検出回路6322_8A(B)は、8ビットカスタム乱数生成回路6303A(B)のエラー(異常)をそれぞれ検出するもので、この検出されたエラー(異常)データが内部機能レジスタ6304内にある乱数エラーステータスレジスタRNDERR(図10参照)に格納されることとなる。なお、この乱数エラーステータスレジスタRNDERRについては後述することとする。
また、最大値設定回路6323_8A(B)は、8ビットカスタム乱数生成回路6303A(B)(加算回路6320_8A(B))の最大値を設定できるもので、内部機能レジスタ6304内にある8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_A(B)(図7(b)参照)に設定された値を設定するものである。
具体的に示せば、これら8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_A(B)は、図7(b)に示すように、読み書きすることができると共に、15〜255(0Fh〜FFh)の数値範囲を設定することができるもので、初期値には15(0Fh)が設定される。そして、8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_Aは、最大値設定回路6323_8Aに対応し、8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_Bは、最大値設定回路6323_8Bに対応している。これにより、8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_A(B)にて設定された値が、最大値設定回路6323_8A(B)に反映され、8ビットカスタム乱数生成回路6303A(B)(加算回路6320_8A(B))の最大値として設定されることとなる。なお、このように最大値が設定されると、8ビットカスタム乱数生成回路6303A(B)(加算回路6320_8A(B))は、ハードウェア乱数の更新を開始する。このようにすれば、任意のタイミングでハードウェア乱数の更新を開始することができるため、乱数値の出現の偏りを低減させることができる。
一方、この8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_A(B)に、何らかの要因で発生したアクセス異常によって15(0Fh)より小さい値が設定された際、最大値設定回路6323_8A(B)は、最小値である15(0Fh)を、最大値として設定する。このようにすれば、ハードウェア乱数の設定に関する異常が発生したとしても、遊技を継続させることができ、もって、遊技の処理に対して乱数回路を効率的に使用することができる。またさらには、異常値が設定された際、異常値が設定されたか否かを検証せずとも、正常値(最小値である15)が設定され、その後の動作が継続されるため、異常処理に対する制御負荷を低減させることができる。なお、8ビットカスタム乱数生成回路最大値設定レジスタRND08MX_A(B)には、設定された値が格納されているため、当該値を主制御CPU600にて読み出すことで、異常を検出することもできる。
ところで、8ビットカスタム乱数生成回路6303A(B)は、図5(b)に示すように、さらに、初期値設定レジスタRNDINIを有している。この初期値設定レジスタRNDINIは、図6(e)に示すように、8ビットからなり、初期値設定レジスタRNDINIの1ビット目が8ビットカスタム乱数値レジスタRNDV08RG0_Aに対応し、0ビット目が8ビットカスタム乱数値レジスタRNDV08RG0_Bに対応している。すなわち、初期値設定レジスタRNDINIの1ビット目に0が設定されると、図5(b)に示すように、加算回路6320_8Aの初期値には0が設定され、これにより、8ビットカスタム乱数値レジスタRNDV08RG0_Aの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、8ビットカスタム乱数生成回路6303Aをリセットすると、加算回路6320_8Aの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、8ビットカスタム乱数値レジスタRNDV08RG0_Aには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
他方、初期値設定レジスタRNDINIの0ビット目に0が設定されると、図5(b)に示すように、加算回路6320_8Bの初期値には0が設定され、これにより、8ビットカスタム乱数値レジスタRNDV08RG0_Bの初期値が0に設定されることとなる。
一方、1が設定されると、上記システムリセット生成部1320(図3参照)にて生成されたシステムリセット信号がリセットコントローラ640(図3参照)にて制御され、8ビットカスタム乱数生成回路6303Bをリセットすると、加算回路6320_8Bの初期値には初期値設定レジスタRNDINIにてランダムに生成される値が設定されることとなる。これにより、8ビットカスタム乱数値レジスタRNDV08RG0_Bには、システムリセットにてリセットされる毎に異なる初期値が格納されることとなる。
ところで、8ビットカスタム乱数値レジスタRNDV08RG0_A(B)は、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。すなわち、システムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)は、主制御CPU600だけをリセットし、8ビットカスタム乱数生成回路6303A(B)等の内部機能はリセットしない。そのため、8ビットカスタム乱数生成回路6303A(B)(更新値レジスタ6321_8A(B))は、リセットされる前に設定された値が保持され、そのまま初期値になる。それゆえ、8ビットカスタム乱数生成回路6303A(B)(更新値レジスタ6321_8A(B))には、初期値としてリセットされる前の値がそのまま初期値として格納されることとなる。これにより、主制御CPU600にて、8ビットカスタム乱数生成回路6303A(B)(更新値レジスタ6321_8A(B))を読み出し、その初期値から8ビットカスタム乱数生成回路6303A(B)(加算回路6320_8A(B))にてハードウェア乱数を更新させれば、再びシステムリセット信号以外のリセット信号(例えば、イリーガルアクセスリセット信号)が発生するか否かを確認することで、そのリセットの要因が、8ビットカスタム乱数生成回路6303A(B)にあるか否かの検証が可能となる。
<乱数回路:乱数ラッチ回路>
一方、乱数回路630は、図4に示すように、さらに、16ビット乱数ラッチ1回路6330A(B)と、16ビット乱数ラッチ2回路6331A(B)と、16ビット乱数ラッチ3回路6332A(B)と、8ビット乱数ラッチ1回路6340A(B)と、8ビット乱数ラッチ2回路6341A(B)と、8ビット乱数ラッチ3回路6342A(B)と、16ビットカスタム乱数ラッチ1回路6350A(B)と、16ビットカスタム乱数ラッチ2回路6351A(B)と、16ビットカスタム乱数ラッチ3回路6352A(B)と、8ビットカスタム乱数ラッチ1回路6360A(B)と、8ビットカスタム乱数ラッチ2回路6361A(B)と、8ビットカスタム乱数ラッチ3回路6362A(B)とを有している。
<乱数回路:16ビット乱数ラッチ1回路>
この16ビット乱数ラッチ1回路6330A(B)は、特別図柄1始動口スイッチ42aの信号、又は、乱数ラッチステータスレジスタLATST1のラッチ信号を受信すると、16ビット乱数生成回路6300A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビット乱数ラッチ1回路6330Aは、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ1回路6330Bは、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビット乱数ラッチ1回路6330A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビット乱数ラッチレジスタRNDF16RG1_A(B)に格納される。具体的には、図8(a)に示すように、16ビット乱数ラッチ1回路6330Aに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG1_Aに格納され、16ビット乱数ラッチ1回路6330Bに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG1_Bに格納される。なお、この16ビット乱数ラッチレジスタRNDF16RG1_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:16ビット乱数ラッチ2回路>
一方、16ビット乱数ラッチ2回路6331A(B)は、特別図柄2始動口スイッチ43aの信号、又は、乱数ラッチステータスレジスタLATST2のラッチ信号を受信すると、16ビット乱数生成回路6300A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビット乱数ラッチ2回路6331Aは、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ2回路6331Bは、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビット乱数ラッチ2回路6331A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビット乱数ラッチレジスタRNDF16RG2_A(B)に格納される。具体的には、図8(a)に示すように、16ビット乱数ラッチ2回路6331Aに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG2_Aに格納され、16ビット乱数ラッチ2回路6331Bに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG2_Bに格納される。なお、この16ビット乱数ラッチレジスタRNDF16RG2_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:16ビット乱数ラッチ3回路>
また一方、16ビット乱数ラッチ3回路6332A(B)は、普通図柄始動口スイッチ45aの信号、又は、乱数ラッチステータスレジスタLATST3のラッチ信号を受信すると、16ビット乱数生成回路6300A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビット乱数ラッチ3回路6332Aは、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ3回路6332Bは、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビット乱数ラッチ3回路6332A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビット乱数ラッチレジスタRNDF16RG3_A(B)に格納される。具体的には、図8(a)に示すように、16ビット乱数ラッチ3回路6332Aに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG3_Aに格納され、16ビット乱数ラッチ3回路6332Bに保持(ラッチ)されたハードウェア乱数は、16ビット乱数ラッチレジスタRNDF16RG3_Bに格納される。なお、この16ビット乱数ラッチレジスタRNDF16RG3_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビット乱数ラッチ1回路>
他方、8ビット乱数ラッチ1回路6340A(B)は、特別図柄1始動口スイッチ42aの信号、又は、乱数ラッチステータスレジスタLATST1のラッチ信号を受信すると、8ビット乱数生成回路6301A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビット乱数ラッチ1回路6340Aは、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ1回路6340Bは、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビット乱数ラッチ1回路6340A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビット乱数ラッチレジスタRNDF08RG1_A(B)に格納される。具体的には、図8(b)に示すように、8ビット乱数ラッチ1回路6340Aに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG1_Aに格納され、8ビット乱数ラッチ1回路6340Bに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG1_Bに格納される。なお、この8ビット乱数ラッチレジスタRNDF08RG1_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビット乱数ラッチ2回路>
一方、8ビット乱数ラッチ2回路6341A(B)は、特別図柄2始動口スイッチ43aの信号、又は、乱数ラッチステータスレジスタLATST2のラッチ信号を受信すると、8ビット乱数生成回路6301A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビット乱数ラッチ2回路6341Aは、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ2回路6341Bは、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビット乱数ラッチ2回路6341A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビット乱数ラッチレジスタRNDF08RG2_A(B)に格納される。具体的には、図8(b)に示すように、8ビット乱数ラッチ2回路6341Aに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG2_Aに格納され、8ビット乱数ラッチ2回路6341Bに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG2_Bに格納される。なお、この8ビット乱数ラッチレジスタRNDF08RG2_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビット乱数ラッチ3回路>
また一方、8ビット乱数ラッチ3回路6342A(B)は、普通図柄始動口スイッチ45aの信号、又は、乱数ラッチステータスレジスタLATST3のラッチ信号を受信すると、8ビット乱数生成回路6301A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビット乱数ラッチ3回路6342Aは、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ3回路6342Bは、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビット乱数ラッチ3回路6342A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビット乱数ラッチレジスタRNDF08RG3_A(B)に格納される。具体的には、図8(b)に示すように、8ビット乱数ラッチ3回路6342Aに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG3_Aに格納され、8ビット乱数ラッチ3回路6342Bに保持(ラッチ)されたハードウェア乱数は、8ビット乱数ラッチレジスタRNDF08RG3_Bに格納される。なお、この8ビット乱数ラッチレジスタRNDF08RG3_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:16ビットカスタム乱数ラッチ1回路>
他方、16ビットカスタム乱数ラッチ1回路6350A(B)は、特別図柄1始動口スイッチ42aの信号、又は、乱数ラッチステータスレジスタLATST1のラッチ信号を受信すると、16ビットカスタム乱数生成回路6302A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビットカスタム乱数ラッチ1回路6350Aは、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ1回路6350Bは、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビットカスタム乱数ラッチ1回路6350A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビットカスタム乱数ラッチレジスタRNDV16RG1_A(B)に格納される。具体的には、図8(c)に示すように、16ビットカスタム乱数ラッチ1回路6350Aに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG1_Aに格納され、16ビットカスタム乱数ラッチ1回路6350Bに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG1_Bに格納される。なお、この16ビットカスタム乱数ラッチレジスタRNDV16RG1_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:16ビットカスタム乱数ラッチ2回路>
一方、16ビットカスタム乱数ラッチ2回路6351A(B)は、特別図柄2始動口スイッチ43aの信号、又は、乱数ラッチステータスレジスタLATST2のラッチ信号を受信すると、16ビットカスタム乱数生成回路6302A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビットカスタム乱数ラッチ2回路6351Aは、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ2回路6351Bは、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビットカスタム乱数ラッチ2回路6351A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビットカスタム乱数ラッチレジスタRNDV16RG2_A(B)に格納される。具体的には、図8(c)に示すように、16ビットカスタム乱数ラッチ2回路6351Aに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG2_Aに格納され、16ビットカスタム乱数ラッチ2回路6351Bに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG2_Bに格納される。なお、この16ビットカスタム乱数ラッチレジスタRNDV16RG2_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:16ビットカスタム乱数ラッチ3回路>
また一方、16ビットカスタム乱数ラッチ3回路6352A(B)は、普通図柄始動口スイッチ45aの信号、又は、乱数ラッチステータスレジスタLATST3のラッチ信号を受信すると、16ビットカスタム乱数生成回路6302A(B)にて0〜65535(0000h〜FFFFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、16ビットカスタム乱数ラッチ3回路6352Aは、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ3回路6352Bは、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように16ビットカスタム乱数ラッチ3回路6352A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある16ビットカスタム乱数ラッチレジスタRNDV16RG3_A(B)に格納される。具体的には、図8(c)に示すように、16ビットカスタム乱数ラッチ3回路6352Aに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG3_Aに格納され、16ビットカスタム乱数ラッチ3回路6352Bに保持(ラッチ)されたハードウェア乱数は、16ビットカスタム乱数ラッチレジスタRNDV16RG3_Bに格納される。なお、この16ビットカスタム乱数ラッチレジスタRNDV16RG3_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビットカスタム乱数ラッチ1回路>
他方、8ビットカスタム乱数ラッチ1回路6360A(B)は、特別図柄1始動口スイッチ42aの信号、又は、乱数ラッチステータスレジスタLATST1のラッチ信号を受信すると、8ビットカスタム乱数生成回路6303A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビットカスタム乱数ラッチ1回路6360Aは、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ1回路6360Bは、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビットカスタム乱数ラッチ1回路6360A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビットカスタム乱数ラッチレジスタRNDV08RG1_A(B)に格納される。具体的には、図8(d)に示すように、8ビットカスタム乱数ラッチ1回路6360Aに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG1_Aに格納され、8ビットカスタム乱数ラッチ1回路6360Bに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG1_Bに格納される。なお、この8ビットカスタム乱数ラッチレジスタRNDV08RG1_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビットカスタム乱数ラッチ2回路>
一方、8ビットカスタム乱数ラッチ2回路6361A(B)は、特別図柄2始動口スイッチ43aの信号、又は、乱数ラッチステータスレジスタLATST2のラッチ信号を受信すると、8ビットカスタム乱数生成回路6303A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビットカスタム乱数ラッチ2回路6361Aは、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ2回路6361Bは、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビットカスタム乱数ラッチ2回路6361A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビットカスタム乱数ラッチレジスタRNDV08RG2_A(B)に格納される。具体的には、図8(d)に示すように、8ビットカスタム乱数ラッチ2回路6361Aに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG2_Aに格納され、8ビットカスタム乱数ラッチ2回路6361Bに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG2_Bに格納される。なお、この8ビットカスタム乱数ラッチレジスタRNDV08RG2_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:8ビットカスタム乱数ラッチ3回路>
一方、8ビットカスタム乱数ラッチ3回路6362A(B)は、普通図柄始動口スイッチ45aの信号、又は、乱数ラッチステータスレジスタLATST3のラッチ信号を受信すると、8ビットカスタム乱数生成回路6303A(B)にて0〜255(00h〜FFh)の数値範囲で更新されたハードウェア乱数を保持(ラッチ)するものである。なお、8ビットカスタム乱数ラッチ3回路6362Aは、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ3回路6362Bは、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)する。
ところで、このように8ビットカスタム乱数ラッチ3回路6362A(B)にて保持(ラッチ)されたハードウェア乱数は、内部機能レジスタ6304内にある8ビットカスタム乱数ラッチレジスタRNDV08RG3_A(B)に格納される。具体的には、図8(d)に示すように、8ビットカスタム乱数ラッチ3回路6362Aに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG3_Aに格納され、8ビットカスタム乱数ラッチ3回路6362Bに保持(ラッチ)されたハードウェア乱数は、8ビットカスタム乱数ラッチレジスタRNDV08RG3_Bに格納される。なお、この8ビットカスタム乱数ラッチレジスタRNDV08RG3_A(B)は、読み出しのみ可能なレジスタで、初期値として0が設定される。
<乱数回路:乱数ラッチステータスレジスタLATSTS1〜3>
ところで、このような16ビット乱数ラッチ1回路6330A(B)と、16ビット乱数ラッチ2回路6331A(B)と、16ビット乱数ラッチ3回路6332A(B)と、8ビット乱数ラッチ1回路6340A(B)と、8ビット乱数ラッチ2回路6341A(B)と、8ビット乱数ラッチ3回路6342A(B)と、16ビットカスタム乱数ラッチ1回路6350A(B)と、16ビットカスタム乱数ラッチ2回路6351A(B)と、16ビットカスタム乱数ラッチ3回路6352A(B)と、8ビットカスタム乱数ラッチ1回路6360A(B)と、8ビットカスタム乱数ラッチ2回路6361A(B)と、8ビットカスタム乱数ラッチ3回路6362A(B)は、内部機能レジスタ6304内にある乱数ラッチステータスレジスタLATSTS1〜3にて、ハードウェア乱数が保持(ラッチ)されているかどうかを確認することができる。
<乱数回路:乱数ラッチステータスレジスタLATSTS1>
具体的には、図9に示すように、乱数ラッチステータスレジスタLATSTS1は、8ビットからなり、最下位ビットから順に、乱数ラッチステータスレジスタLATSTS1_0〜7で構成される。そしてさらに、乱数ラッチステータスレジスタLATSTS1は、読み書きでき、初期値には0が設定される。なお、最下位ビット(0ビット目)に対応する乱数ラッチステータスレジスタLATSTS1_0は、8ビットカスタム乱数ラッチ1回路6360Bに対応し、1ビット目に対応する乱数ラッチステータスレジスタLATSTS1_1は、8ビットカスタム乱数ラッチ1回路6360Aに対応し、2ビット目に対応する乱数ラッチステータスレジスタLATSTS1_2は、16ビットカスタム乱数ラッチ1回路6350Bに対応し、3ビット目に対応する乱数ラッチステータスレジスタLATSTS1_3は、16ビットカスタム乱数ラッチ1回路6350Aに対応し、4ビット目に対応する乱数ラッチステータスレジスタLATSTS1_4は、8ビット乱数ラッチ1回路6340Bに対応し、5ビット目に対応する乱数ラッチステータスレジスタLATSTS1_5は、8ビット乱数ラッチ1回路6340Aに対応し、6ビット目に対応する乱数ラッチステータスレジスタLATSTS1_6は、16ビット乱数ラッチ1回路6330Bに対応し、最上位ビット(7ビット目)に対応する乱数ラッチステータスレジスタLATSTS1_7は、16ビット乱数ラッチ1回路6330Aに対応している。
かくして、このように構成される乱数ラッチステータスレジスタLATSTS1を主制御CPU600にて読み出すと、0か1の値を読み出すことができる。すなわち、乱数ラッチステータスレジスタLATSTS1_0〜7の何れか又は全ての値が0であれば、それに対応する8ビットカスタム乱数ラッチ1回路6360B、8ビットカスタム乱数ラッチ1回路6360A、16ビットカスタム乱数ラッチ1回路6350B、16ビットカスタム乱数ラッチ1回路6350A、8ビット乱数ラッチ1回路6340B、8ビット乱数ラッチ1回路6340A、16ビット乱数ラッチ1回路6330B、16ビット乱数ラッチ1回路6330Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていないと判断でき、乱数ラッチステータスレジスタLATSTS1_0〜7の何れか又は全ての値が1であれば、それに対応する8ビットカスタム乱数ラッチ1回路6360B、8ビットカスタム乱数ラッチ1回路6360A、16ビットカスタム乱数ラッチ1回路6350B、16ビットカスタム乱数ラッチ1回路6350A、8ビット乱数ラッチ1回路6340B、8ビット乱数ラッチ1回路6340A、16ビット乱数ラッチ1回路6330B、16ビット乱数ラッチ1回路6330Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていると判断できる。
一方、乱数ラッチステータスレジスタLATSTS1は、主制御CPU600にて、乱数ラッチステータスレジスタLATSTS1_0〜7の何れか又は全ての値に「1」が書き込まれた際、ラッチ信号をそれに対応する8ビットカスタム乱数ラッチ1回路6360B、8ビットカスタム乱数ラッチ1回路6360A、16ビットカスタム乱数ラッチ1回路6350B、16ビットカスタム乱数ラッチ1回路6350A、8ビット乱数ラッチ1回路6340B、8ビット乱数ラッチ1回路6340A、16ビット乱数ラッチ1回路6330B、16ビット乱数ラッチ1回路6330Aに送信する。これにより、8ビットカスタム乱数ラッチ1回路6360Bがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ1回路6360Aがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ1回路6350Bがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ1回路6350Aがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ1回路6340Bがラッチ信号を受信すると、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ1回路6340Aがラッチ信号を受信すると、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ1回路6330Bがラッチ信号を受信すると、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ1回路6330Aがラッチ信号を受信すると、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)することとなる。
他方、乱数ラッチステータスレジスタLATSTS1_0〜7の何れか又は全ての値に「0」が書き込まれた際、当該乱数ラッチステータスレジスタLATSTS1_0〜7の何れか又は全てがクリアされる。これにより、それに対応する8ビットカスタム乱数ラッチ1回路6360B、8ビットカスタム乱数ラッチ1回路6360A、16ビットカスタム乱数ラッチ1回路6350B、16ビットカスタム乱数ラッチ1回路6350A、8ビット乱数ラッチ1回路6340B、8ビット乱数ラッチ1回路6340A、16ビット乱数ラッチ1回路6330B、16ビット乱数ラッチ1回路6330Aの何れか又は全ては、保持(ラッチ)しているハードウェア乱数をクリアする。このようにすれば、特別図柄1始動口スイッチ42aを受信することによってハードウェア乱数を保持(ラッチ)する場合、従来であれば始動保留球数が上限値(例えば4個)に達している場合であっても、ハードウェア乱数を保持(ラッチ)してしまうため、その都度、保持(ラッチ)した乱数を取得しなければならなかったが、不要な場合は取得せず乱数ラッチステータスレジスタLATSTS1に「0」を設定するだけで、保持(ラッチ)したハードウェア乱数がクリアされる。そのため、処理を簡素化することができる。
<乱数回路:乱数ラッチステータスレジスタLATSTS2>
一方、乱数ラッチステータスレジスタLATSTS2は、図9に示すように、8ビットからなり、最下位ビットから順に、乱数ラッチステータスレジスタLATSTS2_0〜7で構成される。そしてさらに、乱数ラッチステータスレジスタLATSTS2は、読み書きでき、初期値には0が設定される。なお、最下位ビット(0ビット目)に対応する乱数ラッチステータスレジスタLATSTS2_0は、8ビットカスタム乱数ラッチ2回路6361Bに対応し、1ビット目に対応する乱数ラッチステータスレジスタLATSTS2_1は、8ビットカスタム乱数ラッチ2回路6361Aに対応し、2ビット目に対応する乱数ラッチステータスレジスタLATSTS2_2は、16ビットカスタム乱数ラッチ2回路6351Bに対応し、3ビット目に対応する乱数ラッチステータスレジスタLATSTS2_3は、16ビットカスタム乱数ラッチ2回路6351Aに対応し、4ビット目に対応する乱数ラッチステータスレジスタLATSTS2_4は、8ビット乱数ラッチ2回路6341Bに対応し、5ビット目に対応する乱数ラッチステータスレジスタLATSTS2_5は、8ビット乱数ラッチ2回路6341Aに対応し、6ビット目に対応する乱数ラッチステータスレジスタLATSTS2_6は、16ビット乱数ラッチ2回路6331Bに対応し、最上位ビット(7ビット目)に対応する乱数ラッチステータスレジスタLATSTS2_7は、16ビット乱数ラッチ2回路6331Aに対応している。
かくして、このように構成される乱数ラッチステータスレジスタLATSTS2を主制御CPU600にて読み出すと、0か1の値を読み出すことができる。すなわち、乱数ラッチステータスレジスタLATSTS2_0〜7の何れか又は全ての値が0であれば、それに対応する8ビットカスタム乱数ラッチ2回路6361B、8ビットカスタム乱数ラッチ2回路6361A、16ビットカスタム乱数ラッチ2回路6351B、16ビットカスタム乱数ラッチ2回路6351A、8ビット乱数ラッチ2回路6341B、8ビット乱数ラッチ2回路6341A、16ビット乱数ラッチ2回路6331B、16ビット乱数ラッチ2回路6331Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていないと判断でき、乱数ラッチステータスレジスタLATSTS2_0〜7の何れか又は全ての値が1であれば、それに対応する8ビットカスタム乱数ラッチ2回路6361B、8ビットカスタム乱数ラッチ2回路6361A、16ビットカスタム乱数ラッチ2回路6351B、16ビットカスタム乱数ラッチ2回路6351A、8ビット乱数ラッチ2回路6341B、8ビット乱数ラッチ2回路6341A、16ビット乱数ラッチ2回路6331B、16ビット乱数ラッチ2回路6331Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていると判断できる。
一方、乱数ラッチステータスレジスタLATSTS2は、主制御CPU600にて、乱数ラッチステータスレジスタLATSTS2_0〜7の何れか又は全ての値に「1」が書き込まれた際、ラッチ信号をそれに対応する8ビットカスタム乱数ラッチ2回路6361B、8ビットカスタム乱数ラッチ2回路6361A、16ビットカスタム乱数ラッチ2回路6351B、16ビットカスタム乱数ラッチ2回路6351A、8ビット乱数ラッチ2回路6341B、8ビット乱数ラッチ2回路6341A、16ビット乱数ラッチ2回路6331B、16ビット乱数ラッチ2回路6331Aに送信する。これにより、8ビットカスタム乱数ラッチ2回路6361Bがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ2回路6361Aがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ2回路6351Bがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ2回路6351Aがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ2回路6341Bがラッチ信号を受信すると、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ2回路6341Aがラッチ信号を受信すると、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ2回路6331Bがラッチ信号を受信すると、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ2回路6331Aがラッチ信号を受信すると、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)することとなる。
他方、乱数ラッチステータスレジスタLATSTS2_0〜7の何れか又は全ての値に「0」が書き込まれた際、当該乱数ラッチステータスレジスタLATSTS2_0〜7の何れか又は全てがクリアされる。これにより、それに対応する8ビットカスタム乱数ラッチ2回路6361B、8ビットカスタム乱数ラッチ2回路6361A、16ビットカスタム乱数ラッチ2回路6351B、16ビットカスタム乱数ラッチ2回路6351A、8ビット乱数ラッチ2回路6341B、8ビット乱数ラッチ2回路6341A、16ビット乱数ラッチ2回路6331B、16ビット乱数ラッチ2回路6331Aの何れか又は全ては、保持(ラッチ)しているハードウェア乱数をクリアする。このようにすれば、特別図柄2始動口スイッチ43aを受信することによってハードウェア乱数を保持(ラッチ)する場合、従来であれば始動保留球数が上限値(例えば4個)に達している場合であっても、ハードウェア乱数を保持(ラッチ)してしまうため、その都度、保持(ラッチ)した乱数を取得しなければならなかったが、不要な場合は取得せず乱数ラッチステータスレジスタLATSTS2に「0」を設定するだけで、保持(ラッチ)したハードウェア乱数がクリアされる。そのため、処理を簡素化することができる。
<乱数回路:乱数ラッチステータスレジスタLATSTS3>
具体的には、図9に示すように、乱数ラッチステータスレジスタLATSTS3は、8ビットからなり、最下位ビットから順に、乱数ラッチステータスレジスタLATSTS3_0〜7で構成される。そしてさらに、乱数ラッチステータスレジスタLATSTS3は、読み書きでき、初期値には0が設定される。なお、最下位ビット(0ビット目)に対応する乱数ラッチステータスレジスタLATSTS3_0は、8ビットカスタム乱数ラッチ3回路6362Bに対応し、1ビット目に対応する乱数ラッチステータスレジスタLATSTS3_1は、8ビットカスタム乱数ラッチ3回路6362Aに対応し、2ビット目に対応する乱数ラッチステータスレジスタLATSTS3_2は、16ビットカスタム乱数ラッチ3回路6352Bに対応し、3ビット目に対応する乱数ラッチステータスレジスタLATSTS3_3は、16ビットカスタム乱数ラッチ3回路6352Aに対応し、4ビット目に対応する乱数ラッチステータスレジスタLATSTS3_4は、8ビット乱数ラッチ3回路6342Bに対応し、5ビット目に対応する乱数ラッチステータスレジスタLATSTS3_5は、8ビット乱数ラッチ3回路6342Aに対応し、6ビット目に対応する乱数ラッチステータスレジスタLATSTS3_6は、16ビット乱数ラッチ3回路6332Bに対応し、最上位ビット(7ビット目)に対応する乱数ラッチステータスレジスタLATSTS3_7は、16ビット乱数ラッチ3回路6332Aに対応している。
かくして、このように構成される乱数ラッチステータスレジスタLATSTS3を主制御CPU600にて読み出すと、0か1の値を読み出すことができる。すなわち、乱数ラッチステータスレジスタLATSTS3_0〜7の何れか又は全ての値が0であれば、それに対応する8ビットカスタム乱数ラッチ3回路6362B、8ビットカスタム乱数ラッチ3回路6362A、16ビットカスタム乱数ラッチ3回路6352B、16ビットカスタム乱数ラッチ3回路6352A、8ビット乱数ラッチ3回路6342B、8ビット乱数ラッチ3回路6342A、16ビット乱数ラッチ3回路6332B、16ビット乱数ラッチ3回路6332Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていないと判断でき、乱数ラッチステータスレジスタLATSTS3_0〜7の何れか又は全ての値が1であれば、それに対応する8ビットカスタム乱数ラッチ3回路6362B、8ビットカスタム乱数ラッチ3回路6362A、16ビットカスタム乱数ラッチ3回路6352B、16ビットカスタム乱数ラッチ3回路6352A、8ビット乱数ラッチ3回路6342B、8ビット乱数ラッチ3回路6342A、16ビット乱数ラッチ3回路6332B、16ビット乱数ラッチ3回路6332Aの何れか又は全てにハードウェア乱数が保持(ラッチ)されていると判断できる。
一方、乱数ラッチステータスレジスタLATSTS3は、主制御CPU600にて、乱数ラッチステータスレジスタLATSTS3_0〜7の何れか又は全ての値に「1」が書き込まれた際、ラッチ信号をそれに対応する8ビットカスタム乱数ラッチ3回路6362B、8ビットカスタム乱数ラッチ3回路6362A、16ビットカスタム乱数ラッチ3回路6352B、16ビットカスタム乱数ラッチ3回路6352A、8ビット乱数ラッチ3回路6342B、8ビット乱数ラッチ3回路6342A、16ビット乱数ラッチ3回路6332B、16ビット乱数ラッチ3回路6332Aに送信する。これにより、8ビットカスタム乱数ラッチ3回路6362Bがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビットカスタム乱数ラッチ3回路6362Aがラッチ信号を受信すると、8ビットカスタム乱数生成回路6303Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ3回路6352Bがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビットカスタム乱数ラッチ3回路6352Aがラッチ信号を受信すると、16ビットカスタム乱数生成回路6302Aにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ2回路6342Bがラッチ信号を受信すると、8ビット乱数生成回路6301Bにて更新されたハードウェア乱数を保持(ラッチ)し、8ビット乱数ラッチ2回路6342Aがラッチ信号を受信すると、8ビット乱数生成回路6301Aにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ3回路6332Bがラッチ信号を受信すると、16ビット乱数生成回路6300Bにて更新されたハードウェア乱数を保持(ラッチ)し、16ビット乱数ラッチ3回路6332Aがラッチ信号を受信すると、16ビット乱数生成回路6300Aにて更新されたハードウェア乱数を保持(ラッチ)することとなる。
他方、乱数ラッチステータスレジスタLATSTS3_0〜7の何れか又は全ての値に「0」が書き込まれた際、当該乱数ラッチステータスレジスタLATSTS3_0〜7の何れか又は全てがクリアされる。これにより、それに対応する8ビットカスタム乱数ラッチ3回路6362B、8ビットカスタム乱数ラッチ3回路6362A、16ビットカスタム乱数ラッチ3回路6352B、16ビットカスタム乱数ラッチ3回路6352A、8ビット乱数ラッチ3回路6342B、8ビット乱数ラッチ3回路6342A、16ビット乱数ラッチ3回路6332B、16ビット乱数ラッチ3回路6332Aの何れか又は全ては、保持(ラッチ)しているハードウェア乱数をクリアする。このようにすれば、普通図柄始動口スイッチ45aを受信することによってハードウェア乱数を保持(ラッチ)する場合、従来であれば始動保留球数が上限値(例えば4個)に達している場合であっても、ハードウェア乱数を保持(ラッチ)してしまうため、その都度、保持(ラッチ)した乱数を取得しなければならなかったが、不要な場合は取得せず乱数ラッチステータスレジスタLATSTS3に「0」を設定するだけで、保持(ラッチ)したハードウェア乱数がクリアされる。そのため、処理を簡素化することができる。
<乱数回路:乱数エラーステータスレジスタRNDERR>
ところで、内部機能レジスタ6304内には、上記した乱数エラーステータスレジスタRNDERRがあるが、この点について、図10及び図11を参照して詳しく説明する。
乱数エラーステータスレジスタRNDERRは、図10に示すように、8ビットからなり、最下位ビット(0ビット目)から7ビット目まで順に乱数エラーステータスレジスタRNDERR0〜RNDERR7で構成される。そして、乱数エラーステータスレジスタRNDERRは、読み出し可能で、初期値には0が設定される。なお、最下位ビット(0ビット目)に対応する乱数エラーステータスレジスタRNDERR0は、8ビットカスタム乱数生成回路6303Bに対応し、1ビット目に対応する乱数エラーステータスレジスタRNDERR1は、8ビットカスタム乱数生成回路6303Aに対応し、2ビット目に対応する乱数エラーステータスレジスタRNDERR2は、16ビットカスタム乱数生成回路6302Bに対応し、3ビット目に対応する乱数エラーステータスレジスタRNDERR3は、16ビットカスタム乱数生成回路6302Aに対応し、4ビット目に対応する乱数エラーステータスレジスタRNDERR4は、8ビット乱数生成回路6301Bに対応し、5ビット目に対応する乱数エラーステータスレジスタRNDERR5は、8ビット乱数生成回路6301Aに対応し、6ビット目に対応する乱数エラーステータスレジスタRNDERR6は、16ビット乱数生成回路6300Bに対応し、最上位ビット(7ビット目)に対応する乱数エラーステータスレジスタRNDERR7は、16ビット乱数生成回路6300Aに対応する。
このように構成される乱数エラーステータスレジスタRNDERRは、主制御CPU600にて読み出すと、0か1の値を読み出すことができる。すなわち、乱数エラーステータスレジスタRNDERR0〜7の何れか又は全ての値が0であれば、それに対応する8ビットカスタム乱数生成回路6303B、8ビットカスタム乱数生成回路6303A、16ビットカスタム乱数生成回路6302B、16ビットカスタム乱数生成回路6302A、8ビット乱数生成回路6301B、8ビット乱数生成回路6301A、16ビット乱数生成回路6300B、16ビット乱数生成回路6300Aの何れか又は全てがエラー(異常)状態でないと判断できる。そして、乱数エラーステータスレジスタRNDERR0〜7の何れか又は全ての値が1であれば、それに対応する8ビットカスタム乱数生成回路6303B、8ビットカスタム乱数生成回路6303A、16ビットカスタム乱数生成回路6302B、16ビットカスタム乱数生成回路6302A、8ビット乱数生成回路6301B、8ビット乱数生成回路6301A、16ビット乱数生成回路6300B、16ビット乱数生成回路6300Aの何れか又は全てがエラー(異常)状態であると判断できる。
かくしてこのようにエラー(異常)が検出されると、主制御CPU600は、このエラー(異常)内容を演出制御コマンドとして演出制御基板90に送信する。これを受けて演出制御基板90(演出制御CPU900)は、このエラー(異常)内容を表示する液晶制御コマンドを液晶制御基板120に送信する。これにより、液晶制御基板120が、当該液晶制御コマンドに基づく画像を表示させるように液晶表示装置41を制御することにより、液晶表示装置41にエラー(異常)内容が表示されることとなる。
しかしながら、このように複数のハードウェア乱数回路が存在していた場合、単純に全てのエラー(異常)を表示させると、図11(a)に示すように液晶表示装置41の表示画面一杯になってしまい、処理負荷が増大してしまう。そこで、本実施形態においては、複数のエラー(異常)を表示させるのではなく、図11(b)に示すように、一つの表示態様で表示させる。
すなわち、例えば、図11(b)に示すように、「エラー1」は、ハードウェア乱数回路に異常が生じたことを示すエラー番号を示すものであり、どのハードウェア乱数回路に異常が生じたとしても共通のエラー番号となる。一方、乱数回路異常1は、16ビット乱数生成回路6300A(B)に異常が生じたことを示すものであり、そして、図示はしていないが、乱数回路異常2は、8ビット乱数生成回路6301A(B)に異常が生じたことを示し、乱数回路異常3は、16ビットカスタム乱数生成回路6302A(B)に異常が生じたことを示し、乱数回路異常4は、8ビットカスタム乱数生成回路6303A(B)に異常が生じたことを示し、乱数回路異常5は、16ビット乱数生成回路6300A(B)と16ビットカスタム乱数生成回路6302A(B)に異常が生じたことを示す。というように、16ビット乱数生成回路6300A(B)と、8ビット乱数生成回路6301A(B)と、16ビットカスタム乱数生成回路6302A(B)と、8ビットカスタム乱数生成回路6303A(B)との全てのエラー(異常)の組合せに対応する乱数回路異常番号をテーブル化しておき主制御ROM610内に予め格納しておく。
このようにすれば、主制御CPU600は、乱数エラーステータスレジスタRNDERRよりデータを読み出した際、例えば、乱数エラーステータスレジスタRNDERR7〜RNDERR6が「1」であれば、16ビット乱数生成回路6300A(B)にエラー(異常)が生じていることが分かる。そこで、主制御CPU600は、主制御ROM610内に予め格納しておいたテーブルから、16ビット乱数生成回路6300A(B)にエラー(異常)が生じている際、どの番号のエラー(異常)を表示させるのかを確認し、「乱数回路異常1」を表示させる演出制御コマンドを演出制御基板90に送信する。これを受けて演出制御基板90(演出制御CPU900)は、このエラー(異常)内容を表示する液晶制御コマンドを液晶制御基板120に送信する。これにより、液晶制御基板120が、当該液晶制御コマンドに基づく画像を表示させるように液晶表示装置41を制御することにより、液晶表示装置41に、図11(b)に示すような画面が表示されることとなる。
しかして、本実施形態によれば、ハードウェア乱数回路が増加しても、制御に負荷をかけることなく複数のハードウェア乱数回路の異常を検出し報知することができる。
なお、図4に示す符号6370は、特別図柄1始動口スイッチ42a信号、特別図柄2始動口スイッチ43a信号、普通図柄始動口スイッチ45a信号、乱数ラッチステータスレジスタLATSTS1〜3からの信号を各ラッチ回路に振り分けるように制御するラッチ信号制御回路である。
<メモリ空間アドレスマップ>
次に、図12及び図13を用いて主制御基板60が備えるメモリに関する説明を行う。主制御基板60において、メモリ空間アドレスマップとして0000H番地〜FFFFH番地まで備えており、メモリ空間アドレス0000H番地〜01FFH番地までが主制御RAM620(図3参照)のメモリ空間で、メモリ空間アドレス1000H番地〜1072H番地までが内部機能レジスタ6304のメモリ空間で、メモリ空間アドレス8000H番地〜A7FFH番地までが主制御ROM610(図3参照)のメモリ空間で、それ以外のアドレス番地(0200H番地〜0FFFH番地,1073H番地〜7FFFH番地,A800H番地〜FFFFH番地)が未使用領域650a〜650cのメモリ空間でアクセス禁止領域になっている。
主制御ROM610領域は、図12に示すように、メモリ空間アドレス8000H番地〜A7FFH番地のうち、メモリ空間アドレス8000H番地〜A6FFH番地までが一連の遊技制御手順を記述した遊技プログラムを格納できるプログラム領域610aで、メモリ空間アドレスA700H番地〜A77FH番地までがプログラムのタイトル,バージョン,メーカ情報等を格納するROMコメント領域610bで、メモリ空間アドレスA780H番地〜A7A7H番地までが割込みが発生した際の先頭アドレス等を設定するベクターテーブル領域610cで、メモリ空間アドレスA7A8H番地〜A7FFH番地までがユーザシステム(ハードウェア)特有のパラメータを設定できるHWパラメータ領域610dで構成されている。このHWパラメータ領域610dでは、図13に示すようにプログラムエンドアドレスが設定できるようになっている。
すなわち、図13(a)に示すように、プログラムエンドアドレスHPRGENDは、16ビットで構成されてなり、図12に示すメモリ空間アドレス8000H番地〜A6FFH番地のプログラム領域610aの最終アドレス番地を設定することができるものである。すなわち、例えば、プログラムエンドアドレスHPRGENDに8852Hがハード的に設定されたとすると、図13(b)に示すように、プログラム領域610aは、メモリ空間アドレス8000H番地〜8852H番地までが使用可能領域となり、メモリ空間アドレス8853H番地〜A6FFH番地までが使用禁止領域となる。そのため、主制御CPU600が、プログラム領域610aの最終アドレス番地(8852H番地)を超えてアドレス番地を指定し、その領域にアクセスした場合は、リセットコントローラ640にてイリーガルアクセスリセット信号を発生させることとなる。これにより、上述したように、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、当該イリーガルアクセスリセット信号にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。
そのため、従来であれば、主制御CPU600が、プログラム領域610aの最終アドレス番地(例えば、8852H番地)を超えてアドレス番地を指定しアクセスすることで発生したイリーガルアクセスリセット信号であっても、乱数回路をリセットしてしまうため、当該乱数回路の設定が再度され、イリーガルアクセスリセットからの復帰に少なからず時間がかかってしまうという問題があった。しかしながら、本実施形態によれば、イリーガルアクセスリセット時は、主制御CPU600だけリセットし、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)等の内部機能はリセットしない。そのため、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、リセットされる前に設定された値が保持され、そのまま初期値として、ハードウェア乱数を更新することとなる。それゆえ、本実施形態によれば、イリーガルアクセスリセットからの復帰を迅速に行うことができ、また、ハードウェア乱数は新たな初期値から更新が開始することとなるため、乱数回路の信頼性を保つことができる。
また、リセットコントローラ640は、図12に示すメモリ空間アドレス8000H番地〜A7FFH番地までの主制御ROM610領域に対し主制御CPU600がデータ書込みしようとアクセスした際、イリーガルアクセスリセット信号を発生させる。これにより、上述したように、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、当該イリーガルアクセスリセット信号にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。
そのため、従来であれば、主制御CPU600が主制御ROM610領域に対してデータ書込みしようとアクセスすることで発生したイリーガルアクセスリセット信号であっても、乱数回路をリセットしてしまうため、当該乱数回路の設定が再度され、イリーガルアクセスリセットからの復帰に少なからず時間がかかってしまうという問題があった。しかしながら、本実施形態によれば、イリーガルアクセスリセット時は、主制御CPU600だけリセットし、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)等の内部機能はリセットしない。そのため、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、リセットされる前に設定された値が保持され、そのまま初期値として、ハードウェア乱数を更新することとなる。それゆえ、本実施形態によれば、イリーガルアクセスリセットからの復帰を迅速に行うことができ、また、ハードウェア乱数は新たな初期値から更新が開始することとなるため、乱数回路の信頼性を保つことができる。
また一方、リセットコントローラ640は、図12に示すメモリ空間アドレスA700H番地〜A77FH番地までのROMコメント領域610bに対しアクセスした際、イリーガルアクセスリセット信号を発生させる。これにより、上述したように、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、当該イリーガルアクセスリセット信号にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。
そのため、従来であれば、主制御CPU600がROMコメント領域610bに対してアクセスすることで発生したイリーガルアクセスリセット信号であっても、乱数回路をリセットしてしまうため、当該乱数回路の設定が再度され、イリーガルアクセスリセットからの復帰に少なからず時間がかかってしまうという問題があった。しかしながら、本実施形態によれば、イリーガルアクセスリセット時は、主制御CPU600だけリセットし、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)等の内部機能はリセットしない。そのため、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、リセットされる前に設定された値が保持され、そのまま初期値として、ハードウェア乱数を更新することとなる。それゆえ、本実施形態によれば、イリーガルアクセスリセットからの復帰を迅速に行うことができ、また、ハードウェア乱数は新たな初期値から更新が開始することとなるため、乱数回路の信頼性を保つことができる。
他方、リセットコントローラ640は、図12に示すメモリ空間アドレス0200H番地〜0FFFH番地,1073H番地〜7FFFH番地,A800H番地〜FFFFH番地の未使用領域650a〜650cに対しアクセスした際、イリーガルアクセスリセット信号を発生させる。これにより、上述したように、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、当該イリーガルアクセスリセット信号にてリセットされると、リセットされる前に設定された値が保持され、そのまま初期値となる。
そのため、従来であれば、主制御CPU600がメモリ空間アドレス0200H番地〜0FFFH番地,1073H番地〜7FFFH番地,A800H番地〜FFFFH番地の未使用領域650a〜650cに対してアクセスすることで発生したイリーガルアクセスリセット信号であっても、乱数回路をリセットしてしまうため、当該乱数回路の設定が再度され、イリーガルアクセスリセットからの復帰に少なからず時間がかかってしまうという問題があった。しかしながら、本実施形態によれば、イリーガルアクセスリセット時は、主制御CPU600だけリセットし、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)等の内部機能はリセットしない。そのため、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)は、リセットされる前に設定された値が保持され、そのまま初期値として、ハードウェア乱数を更新することとなる。それゆえ、本実施形態によれば、イリーガルアクセスリセットからの復帰を迅速に行うことができ、また、ハードウェア乱数は新たな初期値から更新が開始することとなるため、乱数回路の信頼性を保つことができる。
<PWM回路>
次に、主制御基板60が備えるPWM回路650について図14〜図17を参照して具体的に説明する。
PWM回路650は、図14に示すように、パルス信号発生0回路6500と、パルス信号発生1回路6501と、パルス信号発生2回路6502と、パルス信号発生3回路6503とを備えている。このパルス信号発生0回路6500は、内部機能レジスタ6304内にあるPWM周期設定レジスタPULCYC0及びPWMデューティ設定レジスタPULDTYBにより設定された周期及びデューティ比に基づいて、PWM信号0を生成する。
また、パルス信号発生1回路6501は、内部機能レジスタ6304内にあるPWM周期設定レジスタPULCYC1及びPWMデューティ設定レジスタPULDTYBにより設定された周期及びデューティ比に基づいて、PWM信号1を生成する。そして、パルス信号発生2回路6502は、内部機能レジスタ6304内にあるPWM周期設定レジスタPULCYC2及びPWMデューティ設定レジスタPULDTYAにより設定された周期及びデューティ比に基づいて、PWM信号2を生成する。さらに、パルス信号発生3回路6503は、内部機能レジスタ6304内にあるPWM周期設定レジスタPULCYC3及びPWMデューティ設定レジスタPULDTYAにより設定された周期及びデューティ比に基づいて、PWM信号3を生成する。
ところで、このPWM周期設定レジスタPULCYC0〜3は、図15(a)に示すように、それぞれ、8ビットからなり、読み書きでき、初期値には0が設定される。なお、PWM周期設定レジスタPULCYC0が、PWM信号0に対応し、PWM周期設定レジスタPULCYC1が、PWM信号1に対応し、PWM周期設定レジスタPULCYC2が、PWM信号2に対応し、PWM周期設定レジスタPULCYC3が、PWM信号3に対応している。
より詳しく説明すると、このPWM周期設定レジスタPULCYC0〜3は、図15(a)に示すように、図4に示す所定のクロック信号CLKが20MHzであった場合、PWM周期設定レジスタPULCYC0〜3に「00h」が設定されると、PWM信号0〜3の周期が0.1msecの周期となり、「01h」が設定されると、0.2msecとなる。というように、設定値が「01h」増える毎に、0.1msec毎、PWM信号0〜3の周期が長くなるようになっている。
また、PWMデューティ設定レジスタPULDTYAは、図15(b)に示すように、8ビットからなり、読み書きでき、初期値には0が設定される。なお、PWMデューティ設定レジスタPULDTYAの4ビット目から7ビット目(最上位ビット)のPULDTY3がPWM信号3に対応し、PWMデューティ設定レジスタPULDTYAの0ビット目(最下位ビット)から3ビット目のPULDTY2がPWM信号2に対応している。
一方、PWMデューティ設定レジスタPULDTYBは、図15(c)に示すように、8ビットからなり、読み書きでき、初期値には0が設定される。なお、PWMデューティ設定レジスタPULDTYBの4ビット目から7ビット目(最上位ビット)のPULDTY1がPWM信号1に対応し、PWMデューティ設定レジスタPULDTYBの0ビット目(最下位ビット)から3ビット目のPULDTY0がPWM信号0に対応している。
しかして、このPWMデューティ設定レジスタPULDTYA(PULDTY3,PULDTY2),PULDTYB(PULDTY1,PULDTY0)は、図15(b),(c)に示すように、PWM信号0〜3のデューティ比をそれぞれ設定することができる。すなわち、PWMデューティ設定レジスタPULDTYAのPULDTY3を用いて説明すれば、PULDTY3に「0000B」が設定されると、PWM信号3のデューティ比が0%、「0001B」が設定されると、PWM信号3のデューティ比が10%、「0010B」が設定されると、PWM信号3のデューティ比が20%、「0011B」が設定されると、PWM信号3のデューティ比が25%、「0100B」が設定されると、PWM信号3のデューティ比が30%、「0101B」が設定されると、PWM信号3のデューティ比が35%、「0110B」が設定されると、PWM信号3のデューティ比が40%、「0111B」が設定されると、PWM信号3のデューティ比が50%、「1000B」が設定されると、PWM信号3のデューティ比が60%、「1001B」が設定されると、PWM信号3のデューティ比が65%、「1010B」が設定されると、PWM信号3のデューティ比が70%、「1011B」が設定されると、PWM信号3のデューティ比が75%、「1100B」が設定されると、PWM信号3のデューティ比が80%、「1101B」が設定されると、PWM信号3のデューティ比が85%、「1110B」が設定されると、PWM信号3のデューティ比が90%、「1111B」が設定されると、PWM信号3のデューティ比が100%となるようになっている。
このようにして、PWMデューティ設定レジスタPULDTYAのPULDTY2に上記示したデータと同一のデータが設定されると、上記設定値に応じたPWM信号3のデューティ比とPWM信号2のデューティ比が同一となり、PWMデューティ設定レジスタPULDTYBのPULDTY1に上記示したデータと同一のデータが設定されると、上記設定値に応じたPWM信号3のデューティ比とPWM信号1のデューティ比が同一となり、PWMデューティ設定レジスタPULDTYBのPULDTY0に上記示したデータと同一のデータが設定されると、上記設定値に応じたPWM信号3のデューティ比とPWM信号0のデューティ比が同一となる。
かくして、PWM回路650は、このPWM周期設定レジスタPULCYC0〜3、PWMデューティ設定レジスタPULDTYA,PULDTYBに、周期及びデューティ比が設定されると、その設定された周期及びデューティ比に基づくPWM信号0〜3を生成することができる。すなわち、PWM周期設定レジスタPULCYC0に周期が設定、PWMデューティ設定レジスタPULDTYBのPULDTY0にデューティ比が設定されると、パルス信号発生0回路6500は、その設定された周期及びデューティ比に基づきPWM信号0を生成する。そして、パルス信号発生1回路6501は、PWM周期設定レジスタPULCYC1に周期が設定、PWMデューティ設定レジスタPULDTYBのPULDTY1にデューティ比が設定されると、その設定された周期及びデューティ比に基づきPWM信号1を生成する。そしてさらに、パルス信号発生2回路6502は、PWM周期設定レジスタPULCYC2に周期が設定、PWMデューティ設定レジスタPULDTYAのPULDTY2にデューティ比が設定されると、その設定された周期及びデューティ比に基づきPWM信号2を生成する。また、パルス信号発生3回路6503は、PWM周期設定レジスタPULCYC3に周期が設定、PWMデューティ設定レジスタPULDTYAのPULDTY3にデューティ比が設定されると、その設定された周期及びデューティ比に基づきPWM信号3を生成する。
ここで、より具体的に図16を用いて説明すれば、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに「0000B」が設定されると、図15(b),(c)に示すようにデューティ比が0%となるから、PWM周期設定レジスタPULCYC0〜3にどのような値が設定されても、図16(a)に示すように、「L」レベルのPWM信号0〜3がPWM回路650にて生成されることとなる。
また、PWM周期設定レジスタPULCYC0〜3全てに「13h」が設定されると、図14(a)に示すように、周期が2.0msecとなり、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに「0011B」が設定されると、デューティ比が25%となるから、図16(b)に示すようなPWM信号0〜3がPWM回路650にて生成されることとなる。すなわち、タイミングt1〜t3の期間(2.0msec)を1周期とし、その周期内でタイミングt1〜t2の期間(0.5msec)「H」レベルの信号が生成され、タイミングt2〜t3の期間(1.5msec)「L」レベルの信号が生成される。そして、次の周期(タイミングt3〜t5)においても、タイミングt3〜t4の期間(0.5msec)「H」レベルの信号が生成され、タイミングt4〜t5の期間(1.5msec)「L」レベルの信号が生成され、前回の周期と同一の信号が繰り返し生成されることとなる。
さらに、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに「1111B」が設定されると、図15(b),(c)に示すようにデューティ比が100%となるから、PWM周期設定レジスタPULCYC0〜3にどのような値が設定されても、図16(c)に示すように、「H」レベルのPWM信号0〜3がPWM回路650にて生成されることとなる。
かくして、このように生成されたPWM信号0〜3のうち、いずれかの信号、例えば、PWM信号0が普通電動役物ソレノイド43cを制御し、PWM信号1が特別電動役物ソレノイド44bを制御することとなる。すなわち、PWM信号0が「H」レベルの際、普通電動役物ソレノイド43cは作動を停止し、「L」レベルの際、作動を開始することとなる。また、PWM信号1が「H」レベルの際、特別電動役物ソレノイド44bは作動を停止し、「L」レベルの際、作動を開始することとなる。このようにすれば、遊技者の肉眼視において、開閉部材43bの開放動作又は開閉扉44aの大入賞口(図示せず)の開放動作に影響が出ないように、短い周期で普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bの作動/停止を繰り返すことができる。それゆえ、従来問題となっている普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bが常時作動することにより、熱をもってしまい耐久度が減少するという問題を解決することができる。
また、本実施形態によれば、周期とデューティ比を設定するだけでPWM信号を生成することができるため、ソフトウェアプログラムによるタイマ計測によって一定周期でパルス幅をもった信号にて普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bを制御する必要がなくなる。それゆえ、制御負荷を低減させることができる。
さらに、ソフトウェアプログラムによるタイマ計測によってPWM信号を生成する際、タイマ割込みの周期によるPWM信号しか生成することができないが、本実施形態によれば、様々な周期のPWM信号を生成することができる。それゆえ、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bの性能にあった制御を行うことができる。よって、本実施形態によれば、電力消費を効率的に抑えることができ、もって、省電力効果を発揮させることができる。
一方、本実施形態においては、周期とデューティ比が異なる複数のPWM信号を生成することができるため、普通電動役物ソレノイド43c,特別電動役物ソレノイド44bの性能が異なるものであっても、より的確にその性能にあった制御を行うことができる。
ところで、PWM回路650は、図16(b)に示すような一定周期のパルス幅をもったPWM信号0〜3を生成し、所定のタイミングで、PWM周期設定レジスタPULCYC0〜3、PWMデューティ設定レジスタPULDTYA,PULDTYBに新たな周期とデューティ比が設定されると、図17に示すようなタイミングで、新たな周期とデューティ比に基づく、PWM信号0〜3を生成する。すなわち、図17に示すように、PWM周期設定レジスタPULCYC0〜3全てに「13h」が設定されていると、PWM回路650は、周期が2.0msecのPWM信号0〜3を生成し、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに「0011B」が設定されていると、PWM回路650は、デューティ比が25%のPWM信号0〜3を生成する。すなわち、タイミングt10〜t12の期間(2.0msec)を1周期とし、その周期内でタイミングt10〜t11の期間(0.5msec)「H」レベルの信号が生成され、タイミングt11〜t12の期間(1.5msec)「L」レベルの信号が生成される。そして、次の周期(タイミングt12〜t15)においても、タイミングt12〜t13の期間(0.5msec)「H」レベルの信号が生成され、タイミングt13〜t15の期間(1.5msec)「L」レベルの信号が生成される。
この際、タイミングt14で、PWM周期設定レジスタPULCYC0〜3全てに新たに「27h」が設定されると、PWM回路650は、周期が4.0msecで、デューティ比が25%のPWM信号0〜3を周期が2.0msecで、デューティ比が25%のPWM信号0〜3の周期の立ち上りのタイミング(タイミングt15参照)で生成する。すなわち、タイミングt15〜t18の期間(4.0msec)を1周期とし、その周期内でタイミングt15〜t16の期間(1.0msec)「H」レベルの信号が生成され、タイミングt16〜t18の期間(3.0msec)「L」レベルの信号が生成される。
またこの際、タイミングt17で、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに新たに「0111B」が設定されると、PWM回路650は、周期が4.0msecで、デューティ比が25%のPWM信号0〜3を周期が4.0msecで、デューティ比が50%のPWM信号0〜3の周期の立ち上りのタイミング(タイミングt18参照)で生成する。すなわち、タイミングt18〜t20の期間(4.0msec)を1周期とし、その周期内でタイミングt18〜t19の期間(2.0msec)「H」レベルの信号が生成され、タイミングt19〜t20の期間(2.0msec)「L」レベルの信号が生成される。
しかして、このように、新たなPWM信号0〜3を生成する際、現在のPWM信号0〜3の周期の立ち上りで生成するようにすれば、現在のPWM信号0〜3が途中で途切れることなく、新たな周期のPWM信号0〜3が生成されることとなるから、PWM信号0〜3の動作を安定させることができ、もって、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bの動作を安定させることができる。
<主制御基板処理>
次に、主制御ROM610内に格納されているプログラムの概要を図18〜図33を用いて説明する。
<メイン処理>
まず、パチンコ遊技機1に電源が投入されると、電源基板130(図3参照)の電圧生成部1300にて生成された直流電圧が各制御基板に投入された旨の電源投入信号が送られ、その信号を受けて、主制御CPU600(図3参照)は、図18に示す主制御メイン処理を行う。主制御CPU600は、まず、最初に自らを割込み禁止状態に設定する(ステップS1)。
次いで、主制御CPU600は、当該主制御CPU600内のレジスタ値(内部機能レジスタ6304)等の初期設定を行う。この際、主制御CPU600は、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに新たに「1111B」を設定する。これにより、図15(b),(c)に示すようにデューティ比が100%となるから、PWM周期設定レジスタPULCYC0〜3にどのような値が設定されても、図16(c)に示すように、「H」レベルのPWM信号0〜3がPWM回路650にて生成されることとなる。それゆえ、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bは停止状態となる(ステップS2)。
続いて、主制御CPU600は、電源基板130(電圧監視部1310)より出力されている電圧異常信号ALARM(図3参照)を2回取得し、その2回取得した電圧異常信号ALARMのレベルが一致するか否かを確認した上で図示しない当該主制御CPU600の内部レジスタ内に格納し、その電圧異常信号ALARMのレベルを確認する(ステップS3)。そして電圧異常信号ALARMのレベルが「L」レベルであれば(ステップS4:YES)、ステップS3の処理に戻り、電圧異常信号ALARMのレベルが「H」レベルであれば(ステップS4:NO)、ステップS5の処理に進む。すなわち、主制御CPU600は、電圧異常信号ALARMが正常レベル(すなわち「H」レベル)に変化するまで同一の処理を繰り返す(ステップS3〜S4)。このように、電圧異常信号ALARMを2回取得することで、正確な信号を読み込むことができる。
次いで、主制御CPU600は、主制御RAM620(図3参照)へのデータ書込みを許可する(ステップS5)。このように、電圧異常信号ALARMの正常レベル(正常値)を検出するまで主制御RAM620へのデータ書き込みを禁止することにより、電源基板130に供給される交流電圧AC24Vが安定して供給される前に、不安定な信号が主制御RAM620にアクセスし、主制御RAM620に記憶されているデータを書き換えてしまうという事態を防止することができる。
次いで、主制御CPU600は、演出制御基板90に液晶表示装置41に待機画面を表示させるような処理コマンド(演出制御コマンド)を送信し(ステップS6)、バックアップフラグBFLの内容を判定する(ステップS7)。なお、このバックアップフラグBFLとは、図19に示す電圧監視処理の動作が実行されたか否かを示すデータである。
このバックアップフラグBFLがOFF状態(ステップS7:OFF)であれば、後述する図19に示す電圧監視処理の動作が実行されていないこととなり、主制御CPU600は、主制御RAM620内の全領域を全てクリアする処理を行う(ステップS11)。一方、バックアップフラグBFLがON状態(ステップS7:ON)であれば、後述する図19に示す電圧監視処理の動作が実行されていることとなるため、主制御CPU600は、チェックサム値を算出するためのチェックサム演算を行う(ステップS8)。なお、チェックサム演算とは、主制御RAM620の作業領域を対象とする8ビット加算演算である。
そして、主制御CPU600は、上記チェックサム値が算出されたら、この演算結果を主制御RAM620内のSUM番地の記憶値と比較する処理を行う(ステップS9)。そして、記憶された演算結果は、主制御RAM620内に記憶されている他のデータと共に、電源基板130にて生成されるバックアップ電源によって維持されている。
このSUM番地の記憶値と上記ステップS8の処理にて算出されたチェックサム値が不一致(ステップS9:NO)であれば、主制御CPU600は、主制御RAM620内の全領域を全てクリアする処理を行う(ステップS11)。そして一致(ステップS9:YES)していれば、主制御CPU600は、主制御RAM620内に記憶されているデータに基づいて電源遮断時の遊技動作に復帰させる処理を行う(ステップS10)。
次いで、主制御CPU600は、ステップS10及びステップS11の処理後、その内部に設けられている一定周期のパルス出力を作成する機能や時間計測の機能等を有するCTC(Counter Timer Circuit)の設定を行う。すなわち、主制御CPU600は、4ms毎に定期的にタイマ割込みがかかるように上記CTCの時間定数レジスタを設定する(ステップS12)。そしてその後、主制御CPU600は、ループ処理を行う。
<タイマ割込み処理>
続いて、図19を参照して、上述したメイン処理を中断させて、4ms毎に開始されるタイマ割込みプログラムについて説明する。このタイマ割込みが生じると、主制御CPU600内のレジスタ群の内容を主制御RAM620のスタック領域に退避させる退避処理を実行し(ステップS20)、その後電圧監視処理を実行する(ステップS21)。この電圧監視処理は、電源基板130(図3参照)から出力される電圧異常信号ALARMのレベルを判定し、電圧異常信号ALARMが「L」レベル(異常レベル)であれば、主制御RAM620内に記憶されているデータのバックアップ処理、すなわち、当該データのチェックサム値を算出し、その算出したチェックサム値をバックアップデータとして主制御RAM620内に保存する処理を行う。
次いで、主制御CPU600は、上記電圧監視処理(ステップS21)が終了すると、各遊技動作の時間を管理している各種タイマ(後述する普通図柄変動タイマ、普通図柄役物タイマ等)のタイマ減算処理を行う(ステップS22)。
そして続いて、主制御CPU600には、特別図柄1始動口スイッチ42a(図3参照)と、特別図柄2始動口スイッチ43a(図3参照)と、普通図柄始動口スイッチ45a(図3参照)と、一般入賞口スイッチ46a(図3参照)と、大入賞口スイッチ44c(図3参照)を含む各種スイッチ類のON/OFF信号が入力され、主制御RAM620内の作業領域にON/OFF信号レベルや、その立ち上がり状態が記憶される(ステップS23)。なお、このスイッチ入力処理は、不正入賞があった場合に、立ち上がり状態を無効(入賞無効)にする処理も行い、賞球を払出すために上記大入賞口スイッチ44c,一般入賞口スイッチ46aに何個の遊技球が入賞したのかのカウントも行っている。
次いで、主制御CPU600は、乱数管理処理を行う(ステップS24)。具体的には、実際に使用している図4に示す乱数回路、すなわち、実際に使用している図4に示す乱数回路、すなわち、16ビット乱数生成回路6300A(B)、8ビット乱数生成回路6301A(B)、16ビットカスタム乱数生成回路6302A(B)、8ビットカスタム乱数生成回路6303A(B)のエラー(異常)が液晶表示装置41に表示されるように、使用していない乱数回路に対応する乱数エラーステータスレジスタRNDERR(図10参照)のビットをマスク処理する。すなわち、例えば、実際に使用している乱数回路が、16ビット乱数生成回路6300A(B)であった場合、それに対応する乱数エラーレジスタRNDERR7〜RNDERR6の情報のみが必要でそれ以外の情報は不要である。そこで、主制御CPU600にて、乱数エラーステータスレジスタRNDERRを読み出し、その8ビットデータとマスクデータとの論理積をとるようにする。
具体的には、主制御CPU600にて、乱数エラーステータスレジスタRNDERRを読み出した際、読み出したデータが「11000011B」であった場合、必要なデータは上位2ビットだけであるため、マスクデータ「11000000B」と論理積をとれば、論理積後のデータは、「11000000B」となる。そのため、主制御CPU600は、実際に使用している乱数回路のうち、16ビット乱数生成回路6300A(B)にエラー(異常)が生じていることが分かる。そしてその後、主制御CPU600は、上述したように主制御ROM610内に予め格納しておいたテーブルから、16ビット乱数生成回路6300A(B)にエラー(異常)が生じている際、どの番号のエラー(異常)を表示させるのかを確認し、その番号を表示させる演出制御コマンドを演出制御基板90に送信する。これを受けて演出制御基板90(演出制御CPU900)は、このエラー(異常)内容を表示する液晶制御コマンドを液晶制御基板120に送信する。これにより、液晶制御基板120が、当該液晶制御コマンドに基づく画像を表示させるように液晶表示装置41を制御することにより、液晶表示装置41に、当該エラー(異常)内容が表示されることとなる(図11(b)参照)。このようにすれば、実際に使用している乱数回路のエラー(異常)だけを報知することができ、より制御に負荷をかけることなくエラー(異常)を報知することができる。
次いで、主制御CPU600は、エラー管理処理を行う(ステップS25)。なお、エラー管理処理は、遊技球の補給が停止したり、あるいは、遊技球が詰まったりなど、機器内部に異常が生じていないかの判定を含むものである。
次いで、主制御CPU600は、賞球管理処理を実行する(ステップS26)。この賞球管理処理は、払出制御基板70(図3参照)に払出し動作を行わせるための払出制御コマンドを出力している。
次いで、主制御CPU600は、普通図柄処理を実行する(ステップS27)。この普通図柄処理は、普通図柄の当否抽選を実行し、その抽選結果に基づいて普通図柄の変動パターンや普通図柄の停止表示状態を決定したりするものである。なお、この普通図柄処理の詳細については、後述することとする。
次いで、主制御CPU600は、普通電動役物管理処理を実行する(ステップS28)。この普通電動役物管理処理は、普通図柄処理(ステップS27)の抽選結果に基づき、普通電動役物開放遊技発生に必要な普通電動役物ソレノイド43cの制御に関する信号(普通電動役物ソレノイドフラグ)が生成される。なお、この普通電動役物管理処理の詳細については、後述することとする。
次いで、主制御CPU600は、特別図柄処理を実行する(ステップS29)。この特別図柄処理では、特別図柄の当否抽選を実行し、その抽選の結果に基づいて特別図柄の変動パターンや特別図柄の停止表示態様(停止特別図柄)を決定する。なお、この特別図柄処理の詳細については、後述することとする。
次いで、主制御CPU600は、特別電動役物管理処理を実行する(ステップS30)。この特別電動役物管理処理では、主に、大当たり抽選結果が「大当たり」又は「小当たり」であった場合、その当りに対応した当り遊技を実行制御するために必要な設定処理を行う。この際、特別電動役物ソレノイド44bの制御に関する信号も生成される。なお、この特別電動役物管理処理の詳細については、後述することとする。
次いで、主制御CPU600は、LED管理処理を実行する(ステップS31)。このLED管理処理は、処理の進行状態に応じて、特別図柄表示装置47や普通図柄表示装置48への出力データを生成したり、当該データに基づく制御信号を出力したりする処理である。
次いで、主制御CPU600は、ソレノイド駆動処理を行う(ステップS32)。この際、主制御CPU600は、普通電動役物管理処理(ステップS28)にて生成された普通電動役物ソレノイド43cの制御に関する信号を確認すると共に、特別電動役物管理処理(ステップS30)にて生成された特別電動役物ソレノイド44bの制御に関する信号を確認する。そしてこの信号が、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bを作動させる指令を伴う信号であれば、PWM周期設定レジスタPULCYC0〜3、PWMデューティ設定レジスタPULDTYA,PULDTYB(図15参照)に、周期とデューティ比を設定する。これにより、PWM回路650は、その設定された周期とデューティ比に基づき、例えば、図16(b)に示すようなPWM信号0〜3を生成する。そして、その生成されたPWM信号0〜3によって、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bの作動/停止が制御され、開閉部材43bが開放又は大入賞口(図示せず)が開放するように開閉扉44aが動作することとなる。
一方、普通電動役物管理処理(ステップS28)にて生成された普通電動役物ソレノイド43cの制御に関する信号又は特別電動役物管理処理(ステップS30)にて生成された特別電動役物ソレノイド44bの制御に関する信号が、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bを停止させる指令を伴う信号であれば、主制御CPU600は、PWMデューティ設定レジスタPULDTYAのPULDTY3,PULDTY2、並びに、PWMデューティ設定レジスタPULDTYBのPULDTY1,PULDTY0全てに新たに「1111B」を設定する。これにより、図15(b),(c)に示すようにデューティ比が100%となるから、PWM周期設定レジスタPULCYC0〜3にどのような値が設定されても、図16(c)に示すように、「H」レベルのPWM信号0〜3がPWM回路650にて生成されることとなる。それゆえ、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bは停止され、開閉部材43bが閉止又は大入賞口(図示せず)が閉止するように開閉扉44aが動作することとなる。
かくして、このように、電源投入時の初期設定にて、PWM周期設定レジスタPULCYC0〜3、PWMデューティ設定レジスタPULDTYA,PULDTYB(図15参照)に値を設定し、PWM回路650を起動、すなわち、「H」レベルのPWM信号0〜3を生成させておき(ステップS2参照)、実際に、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bを作動させる際に、パルス幅を有するPWM信号0〜3を生成するようにすれば、普通電動役物ソレノイド43c又は特別電動役物ソレノイド44bの作動を制御する際の動作を安定させることができる。
次いで、主制御CPU600は、割込み許可状態に戻し(ステップS33)、主制御RAM620のスタック領域に退避させておいたレジスタの内容を復帰させタイマ割込みを終える(ステップS34)。これにより、割込み処理ルーチンからメイン処理(図18参照)に戻ることとなる。
<普通図柄処理>
次に、図20を参照して、上記普通図柄処理(図19のステップS27)について詳細に説明する。
図20に示すように、普通図柄処理は、先ず、ゲートからなる普通図柄始動口45において、遊技球の通過を検出したか否かを確認、すなわち、普通図柄始動口45の普通図柄始動口スイッチ45aの信号レベルを確認する(ステップS100)。そして遊技球の通過を検出した場合(ステップS100:YES)、主制御CPU600は、普通図柄の始動保留球数が例えば4以上か否かを判断するため、普通図柄の始動保留球数が格納されている主制御RAM620領域を確認する(ステップS101)。その際、普通図柄の始動保留球数が4未満であれば(ステップS101:≠MAX)、普通図柄の始動保留球数を1加算する(ステップS102)。その後、主制御CPU600は、普通図柄の当否抽選に用いられる図4に示す8ビット乱数ラッチ3回路6342A(B)又は8ビットカスタム乱数ラッチ3回路6362A(B)に保持(ラッチ)されている乱数値を、図8(b)に示す8ビット乱数ラッチレジスタRNDF08RG3_A(B)又は図8(d)に示す8ビットカスタム乱数ラッチレジスタRNDV08RG3_A(B)から読み出し、その読み出した乱数値を普通図柄の始動保留球数が格納されている主制御RAM620領域に格納した上で(ステップS103)、ステップS104の処理に進む。
一方、ステップS100にて、遊技球の通過を検出しなかった場合(ステップS100:NO)、ステップS101にて、普通図柄の始動保留球数が4以上であると判断した場合(ステップS101:=MAX)には、ステップS102〜S103の処理は行わず、ステップS104の処理に進む。
主制御CPU600は、ステップS104の処理に進むと、普通図柄当たり作動フラグがONに設定されているか、すなわち、普通図柄当たり作動フラグに5AHが設定されているかを確認する(ステップS104)。普通図柄当たり作動フラグに5AHが設定されていれば(ステップS104:ON)、普通図柄が当たり中であると判断し、普通図柄の表示データの更新を行った後(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行することとなる。
一方、普通図柄当たり作動フラグに5AHが設定されていなければ(ステップS104:OFF)、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値を確認する(ステップS105)。そして、普通図柄動作ステータスフラグが00Hであれば、主制御CPU600は、普通図柄の変動開始前の状態であると判断し、ステップS106に進み、普通図柄の始動保留球数が0か否かを確認する(ステップS106)。
主制御CPU600は、普通図柄の始動保留球数が格納されている主制御RAM620領域を確認した上で、0であると判断した場合(ステップS106:=0)は、普通図柄の表示データの更新を行った後(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。一方、0でないと判断した場合(ステップS106:≠0)は、普通図柄の始動保留球数を1減算する(ステップS107)。
その後、主制御CPU600は、図27(a)に示す普通図柄当たり判定テーブルNPP_TBLを用いて主制御RAM620領域に格納されている普通図柄の始動保留球数に対応した乱数値の当たり判定を行う。すなわち、主制御CPU600は、遊技状態を示す普通図柄確変フラグがOFFであれば、当該乱数値が、図27(a)に示す普通図柄当たり判定テーブルNPP_TBL(通常状態)の下限値(図示では、249)以上で上限値(図示では、250)以下か否かを判定し、下限値以上で上限値以下であれば、普通図柄当たり判定フラグに5AHをセットし、ONにする。それ以外の場合は、普通図柄当たり判定フラグをOFFにする。
一方、遊技状態を示す普通図柄確変フラグがONであれば、当該乱数値が、図27(a)に示す普通図柄当たり判定テーブルNPP_TBL(確変状態)の下限値(図示では、4)以上で上限値(図示では、250)以下か否かを判定し、下限値以上で上限値以下であれば、普通図柄当たり判定フラグに5AHをセットし、ONにする。それ以外の場合は、普通図柄当たり判定フラグをOFFにセットする処理を行う(ステップS108)。
そして、主制御CPU600は、上記乱数抽選処理にて決定した抽選結果に基づいて、停止図柄(普通図柄停止図柄)を決定する(ステップS109)。
次いで、主制御CPU600は、普通図柄の変動時間を短くする普通図柄時短フラグがONに設定されているかを確認し、ONに設定されていれば、普通図柄変動タイマにそれに応じた変動時間を設定し、OFFに設定されていれば、普通図柄変動タイマに通常の変動時間を設定する処理を行う(ステップS110)。
次いで、主制御CPU600は、普通図柄の始動保留球数に対応した普通図柄の当否抽選に用いられる乱数値が格納されている主制御RAM620領域の記憶領域をシフトする(ステップS111)。すなわち、普通図柄の始動保留球数を最大で4個保留できるとすると、普通図柄の始動保留球数4に対応した普通図柄の当否抽選に用いられる乱数値を普通図柄の始動保留球数3に対応した普通図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620領域にシフトし、普通図柄の始動保留球数3に対応した普通図柄の当否抽選に用いられる乱数値を普通図柄の始動保留球数2に対応した普通図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620領域にシフトし、普通図柄の始動保留球数2に対応した普通図柄の当否抽選に用いられる乱数値を普通図柄の始動保留球数1に対応した普通図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620領域にシフトするという処理を行う。
この処理の後、主制御CPU600は、上記ステップS105にて用いた普通図柄動作ステータスフラグに01Hを設定し、普通図柄の始動保留球数4に対応した普通図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620の領域に00Hを設定する処理を行う(ステップS112)。
そして、主制御CPU600は、上記ステップS112の処理を終えた後、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。
他方、主制御CPU600は、上記ステップS105にて、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値が01Hであれば、主制御CPU600は、普通図柄が変動中であると判断し、ステップS114に進み、普通図柄変動タイマが0か否かを確認する(ステップS114)。普通図柄変動タイマが0でなければ(ステップS114:≠0)、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。そして、普通図柄変動タイマが0であれば(ステップS114:=0)、主制御CPU600は、上記ステップS105にて用いた普通図柄動作ステータスフラグに02Hを設定し、普通図柄の当否抽選結果を一定時間維持させるために、普通図柄変動タイマに例えば約600msの時間が設定される(ステップS115)。
主制御CPU600は、上記ステップS115の処理を終えた後、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。
一方、主制御CPU600は、上記ステップS105にて、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値が02Hであれば、主制御CPU600は、普通図柄が確認時間中(普通図柄の変動が終了して停止中)であると判断し、ステップS116に進み、普通図柄変動タイマが0か否かを確認する(ステップS116)。普通図柄変動タイマが0でなければ(ステップS116:≠0)、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。そして、普通図柄変動タイマが0であれば(ステップS116:=0)、主制御CPU600は、上記ステップS105にて用いた普通図柄動作ステータスフラグに00Hを設定し(ステップS117)、普通図柄当たり判定フラグがONに設定(5AHが設定)されているかを確認する(ステップS118)。
これにより、普通図柄当たり判定フラグがOFFに設定(5AHが設定されていない)されていれば(ステップS118:OFF)、主制御CPU600は、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。そして、普通図柄当たり判定フラグがONに設定(5AHが設定)されていれば(ステップS118:ON)、主制御CPU600は、ステップS104にて用いられる普通図柄当たり作動フラグをON(5AHを設定)に設定した(ステップS119)後、普通図柄処理を終了し、図19に示すステップS28の処理に移行する。
<普通電動役物管理処理>
次に、図21を参照して、上記普通電動役物管理処理(図19のステップS28)について詳細に説明する。
図21に示すように、主制御CPU600は、まず、普通図柄当たり作動フラグに5AHが設定されているかを確認する(ステップS200)。普通図柄当たり作動フラグに5AHが設定されていなければ(ステップS200:OFF)、普通図柄が当り中でないと判断し、普通電動役物管理処理を終了し、図19に示すステップS29の処理に移行する。
一方、普通図柄当たり作動フラグに5AHが設定されていれば(ステップS200:ON)、主制御CPU600は、普通電動役物が作動中か否かを確認する(ステップS201)。具体的には、後述する普通電動役物作動中フラグを確認する。普通電動役物作動中フラグに「1」が設定されていると、普通電動役物が作動中であると判断し(ステップS201:YES)、後述する普通電動役物入賞カウンタを確認する(ステップS202)。この普通電動役物入賞カウンタは、特別図柄2始動口スイッチ43a(図3参照)にて検出された入賞球をカウントするもので、図19に示すスイッチ入力処理(ステップS23)にて管理されている。
普通電動役物入賞カウンタの値が最大数以上であれば、普通図柄役物タイマに0を設定し、最大数より小さければ、何もせず、ステップS203の処理に進む。
一方、普通電動役物作動中フラグに「0」が設定されていると、主制御CPU600は、普通電動役物が作動中でないと判断し(ステップS201:NO)、ステップS202の処理をせず、ステップS203の処理に進む。
次いで、主制御CPU600は、普通図柄役物タイマの値を確認する(ステップS203)。普通図柄役物タイマの値が「0」であれば(ステップS203:=0)、主制御CPU600は、普通電動役物動作ステータスフラグに従って、各設定値をセットする。具体的には、普通電動役物動作ステータスフラグに00Hが設定されていると、普通電動役物の動作開始前の状態であると判断し、普通電動役物タイマに20msを設定することで、普通電動役物の開始インターバル時間を設定する。そして、普通電動役物動作ステータスフラグに01Hを設定し、ステップS205の処理に移行する。
一方、普通電動役物動作ステータスフラグに01Hが設定されていると、主制御CPU600は、普通電動役物の動作開始インターバル終了時であると判断し、普通電動役物タイマに、開閉部材43bの開放延長機能の作動/未作動に応じた値が設定される。そして、普通電動役物入賞カウンタに0を設定し、普通電動役物動作ステータスフラグに02Hを設定し、ステップS205の処理に移行する。
また、普通電動役物動作ステータスフラグに02Hが設定されていると、主制御CPU600は、普通電動役物の動作終了時であると判断し、普通電動役物ソレノイドフラグに「0」を設定し、普通電動役物作動中フラグに「0」を設定し、普通電動役物タイマに20msを設定することで、普通電動役物の終了インターバル時間を設定する。そして、普通電動役物有効タイマに1sを設定し、普通電動役物動作ステータスフラグに03Hを設定し、ステップS205の処理に移行する。
また一方、普通電動役物動作ステータスフラグに03Hが設定されていると、主制御CPU600は、普通電動役物の動作終了インターバル終了時であると判断し、普通電動役物入賞カウンタに「0」を設定し、普通図柄当たり作動フラグに00Hを設定し、普通電動役物動作ステータスフラグに00Hを設定し、ステップS205の処理に移行する。
他方、主制御CPU600は、普通図柄役物タイマの値が「0」でなければ(ステップS203:≠0)、ステップS204の処理をせず、ステップS205の処理に移行する。
次いで、主制御CPU600は、普通電動役物動作ステータスフラグを確認し、02Hが設定されていなければ(ステップS205:NO)、普通電動役物管理処理を終了し、図19に示すステップS29の処理に移行する。
一方、02Hが設定されていれば(ステップS205:YES)、普通電動役物ソレノイドフラグに「1」を設定し、普通電動役物作動中フラグに「1」を設定し(ステップS206)、普通電動役物管理処理を終了し、図19に示すステップS29の処理に移行する。なお、この普通電動役物ソレノイドフラグの値が「1」であれば、図19に示すソレノイド駆動処理(ステップS32)にて、PWM回路650は、PWM信号0〜3のうち、普通電動役物ソレノイド43cに割当てられたいずれかの信号のみ図16(b)に示すようなPWM信号を生成する。これにより、この生成されたPWM信号0〜3の何れか1つの信号によって普通電動役物ソレノイド43cの作動/停止が制御され、もって、開閉部材43bが開放するように動作することとなる。また、普通電動役物ソレノイドフラグの値が「0」であれば、図19に示すソレノイド駆動処理(ステップS32)にて、PWM回路650は、図16(c)に示すようなPWM信号0〜3を生成する。これにより、普通電動役物ソレノイド43cが停止制御され、開閉部材43bが閉止するように動作することとなる。
<特別図柄処理>
次に、図22〜図26を参照して、上記特別図柄処理(図19のステップS29)について詳細に説明する。図22に示すように、特別図柄処理は、先ず、特別図柄1始動口42(図2参照)の特別図柄1始動口スイッチ42a(図3参照)において、遊技球の入球(入賞球)を検出した否かを確認し(ステップS300)、さらに、特別図柄2始動口43(図2参照)の特別図柄2始動口スイッチ43aにおいて、遊技球の入球(入賞球)を検出したか否かを確認する(ステップS301)。
<特別図柄処理:始動口チェック処理>
この処理について、図23を用いて詳しく説明すると、主制御CPU600は、特別図柄1始動口42又は特別図柄2始動口43に遊技球が入球(入賞)したか否かを確認、すなわち、特別図柄1始動口42の特別図柄1始動口スイッチ42a又は特別図柄2始動口43の特別図柄2始動口スイッチ43aのレベルを確認する(ステップS400)。これにより、遊技球の入球(入賞)を検出しなければ(ステップS400:NO)、特別図柄処理を終え、図19に示すステップS30の処理に移行する。
一方、遊技球の入球(入賞)を検出すれば(ステップS400:YES)、主制御CPU600は、特別図柄の変動契機となる始動保留球数が所定数、主制御RAM620内の始動保留記憶領域に格納されているか否かを確認する(ステップS401)。その始動保留球数が、4未満であれば(ステップS401:≠MAX)、当該始動保留球数を1加算(+1)する(ステップS402)。
次いで、主制御CPU600は、特別図柄停止の際用いられる乱数値及び変動パターン用乱数値を図4に示す8ビット乱数ラッチ1回路6340A(B),8ビット乱数ラッチ2回路6341A(B),8ビットカスタム乱数ラッチ1回路6360A(B),8ビットカスタム乱数ラッチ2回路6361A(B)にて保持(ラッチ)されている乱数値を、図8(b)に示す8ビット乱数ラッチレジスタRNDF08RG1_A(B),8ビット乱数ラッチレジスタRNDF08RG2_A(B)、又は、図8(d)に示す8ビットカスタム乱数ラッチレジスタRNDV08RG1_A(B),8ビットカスタム乱数ラッチレジスタRNDV08RG2_A(B)から読み出し、その読み出した乱数値を特別図柄の変動契機となる始動保留球数が格納されている主制御RAM620内の始動保留記憶領域に格納する。そしてさらに、主制御CPU600は、大当たり判定用乱数値として、図4に示す16ビット乱数ラッチ1回路6330A(B),16ビット乱数ラッチ2回路6331A(B),16ビットカスタム乱数ラッチ1回路6350A(B),16ビットカスタム乱数ラッチ2回路6351A(B)にて保持(ラッチ)されている乱数値を、図8(a)に示す16ビット乱数ラッチレジスタRNDF16RG1_A(B),16ビット乱数ラッチレジスタRNDF16RG2_A(B),図8(c)に示す16ビットカスタム乱数ラッチレジスタRNDV16RG1_A(B),RNDV16RG2_A(B)から読み出し、その読み出した乱数値を特別図柄の変動契機となる始動保留球数が格納されている主制御RAM620内の始動保留記憶領域に格納する(ステップ403)。
次いで、主制御CPU600は、現在の遊技状態(特別図柄大当たり判定フラグがONに設定されているか否か等)を確認し、先読み禁止状態か否かを判定する(ステップS404)。そして、先読み禁止状態でなければ(ステップS404:NO)、主制御CPU600は、上記ステップS403にて主制御RAM620内の始動保留記憶領域に格納した特別図柄の当否抽選に用いられる大当たり判定用乱数値を取得し(ステップS405)、さらに、図示しない始動口入賞時乱数判定テーブルを取得する(ステップS406)。
次いで、主制御CPU600は、上記ステップS405にて取得した大当たり判定用乱数値及びステップS406にて取得した始動口入賞時乱数判定テーブル(図示せず)を用いて、大当たり抽選を行い、さらに、上記ステップS403にて主制御RAM620内の始動保留記憶領域に格納した特別図柄用乱数値を用いて、大当たりの種類(15R確変大当り、15R非確変大当たり等)を決定し、変動パターン用乱数値を用いて、変動パターンを決定し、それに応じた特別図柄始動口入賞コマンドを生成する(ステップS407)。
次いで、主制御CPU600は、上記生成された特別図柄始動口入賞コマンドに応じた下位バイトの始動保留加算コマンドを生成する(ステップS408)。
一方、主制御CPU600は、上記ステップS408の処理を終えるか、又は、上記ステップS401にて特別図柄1又は2の始動保留球数が4以上であるか(ステップS401:=MAX)、あるいは、先読み禁止状態であれば(ステップS404:YES)、増加した始動保留球数に応じた上位バイトの始動保留加算コマンドを生成する(ステップS409)。
次いで、主制御CPU600は、上記ステップS408にて生成した下位バイトの始動保留加算コマンドと、上記ステップS409にて生成した上位バイトの始動保留加算コマンドとを結合した上で、始動保留加算コマンド(演出制御コマンド)として、演出制御基板90(図3参照)に送信する処理を行う(ステップS410)。
<特別図柄処理>
かくして、図22に示すステップS300及びステップS301の処理を終えると、主制御CPU600は、特別図柄小当たり作動フラグがONに設定されているか、すなわち、特別図柄小当たり作動フラグに5AHが設定されているかを確認する(ステップS302)。特別図柄小当たり作動フラグに5AHが設定されていれば(ステップS302:ON)、特別図柄が小当たり中であると判断し、特別図柄の表示データの更新を行った後(ステップS308)、特別図柄処理を終え、図19に示すステップS30の処理に移行する。
一方、特別図柄小当たり作動フラグに5AHが設定されていなければ(ステップS302:OFF)、特別図柄大当たり作動フラグがONに設定されているか、すなわち、特別図柄大当たり作動フラグに5AHが設定されているかを確認する(ステップS303)。特別図柄大当たり作動フラグに5AHが設定されていれば(ステップS303:ON)、特別図柄が大当たり中であると判断し、特別図柄の表示データの更新を行った後(ステップS308)、特別図柄処理を終え、図19に示すステップS30の処理に移行する。
一方、特別図柄大当たり作動フラグに5AHが設定されていなければ(ステップS303:OFF)、特別図柄の挙動を示す処理状態、すなわち、特別図柄動作ステータスフラグの値を確認する(ステップS304)。より詳しく説明すると、主制御CPU600は、特別図柄動作ステータスフラグの値が00H又は01Hであれば、特別図柄変動待機中(特別図柄の変動が行われておらず次回の変動のための待機状態であることを示す)であると判定し、特別図柄変動開始処理を行う(ステップS305)。
<特別図柄処理:特別図柄変動開始処理>
この処理について、図24を用いて詳しく説明すると、主制御CPU600は、特別図柄始動保留球数が0か否かを確認する(ステップS500)。すなわち、主制御RAM620内の特別図柄始動保留記憶領域を確認し、特別図柄始動保留球数が0であると主制御CPU600が判断した場合は(ステップS500:=0)、特別図柄動作ステータスフラグの値が00Hか否かを確認する(ステップS501)。特別図柄動作ステータスフラグの値が00Hであれば(ステップS501:YES)、図22に示すステップS305の特別図柄変動開始処理を終了する。
一方、特別図柄動作ステータスフラグの値が00Hでなければ(ステップS501:NO)、主制御CPU600は、演出制御コマンド(客待ちデモコマンド)を演出制御基板90(図3参照)に送信し(ステップS502)、特別図柄動作ステータスフラグに00Hをセットした上で(ステップS503)、図22に示すステップS305の特別図柄変動開始処理を終了する。
他方、特別図柄始動保留球数が0でないと判断した場合(ステップS500:≠0)、主制御CPU600は、特別図柄始動保留球数を1減算(−1)し(ステップS504)、演出制御コマンド(始動保留減算コマンド)を演出制御基板90(図3参照)に送信する(ステップS505)。
次いで、主制御CPU600は、図20に示すステップS111の処理と同様、特別図柄始動保留球数に対応した特別図柄の当否抽選に用いられる乱数値(図23のステップS403にて格納した大当たり判定用乱数値)が格納されている主制御RAM620内の記憶領域をシフトし(ステップS506)、特別図柄始動保留4に対応した特別図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620の領域に0を設定する(ステップS507)。
次いで、主制御CPU600は、図23のステップS403にて主制御RAM620内の特別図柄始動保留記憶領域に格納した大当たり判定用乱数値を用いて当たり判定を行う。具体的には、大当たり判定用乱数値と、図27(b)に示す特別図柄大当たり判定テーブルSDH_TBLに格納されている判定値とを比較、又は、図27(c)に示す特別図柄小当たり判定テーブルSDP_TBLに格納されている判定値とを比較して、特別図柄の当たり判定を行う。すなわち、特別図柄大当たり判定テーブルSDH_TBLには、図27(b)に示すように、遊技状態が通常状態の場合、下限値として10001,上限値として10164が格納され、遊技状態が確変状態(当たり抽選確率が通常より高確率状態である確率変動状態)の場合、下限値として10001,上限値として11640が格納されている。そのため、遊技状態が通常状態で、大当たり判定用乱数値が10001〜10164の場合、特別図柄は大当たりとなり、それ以外の乱数値はハズレとなる。そして、遊技状態が確変状態で、大当たり判定用乱数値が10001〜11640の場合、特別図柄は大当たりとなり、それ以外の乱数値はハズレとなる。また、特別図柄小当たり判定テーブルSDP_TBLには、図27(c)に示すように、下限値として20001,上限値として20164が格納されている。そのため、大当たり判定用乱数値が20001〜20164の場合、特別図柄は小当たりとなり、それ以外の乱数値はハズレとなる。このようにして、図23のステップS403にて主制御RAM620内の特別図柄始動保留記憶領域に格納した大当たり判定用乱数値の当たり判定が行われる(ステップS508)。
次いで、主制御CPU600は、図23のステップS403にて主制御RAM620内の特別図柄始動保留記憶領域に格納した特別図柄用乱数値を用いて、特別図柄の停止図柄を生成する(ステップS509)。
次いで、主制御CPU600は、通常状態、時短状態、潜伏確変状態、確変状態のいずれかの遊技状態に移行する準備を行う(ステップS510)。
次いで、主制御CPU600は、図23のステップS403にて主制御RAM620内の特別図柄始動保留記憶領域に格納した変動パターン用乱数値を用いて特別図柄の変動パターンの生成を行う(ステップS511)。この際、特別図柄変動タイマに変動時間が設定される。
次いで、主制御CPU600は、特別図柄変動中フラグに5AHを設定し、ON状態にする(ステップS512)。
次いで、主制御CPU600は、液晶表示装置41(図2参照)に表示される特別図柄の特別図柄指定コマンドを生成し(ステップS513)、その生成した特別図柄指定コマンドを演出制御コマンドとして演出制御基板90(図3参照)に送信する処理を行う(ステップS514)。
次いで、主制御CPU600は、特別図柄動作ステータスフラグに02Hを設定し(ステップS515)、図22に示すステップS305の特別図柄変動開始処理を終了する。
他方、主制御CPU600は、図22に示すステップS304にて、特別図柄動作ステータスフラグの値が02Hであれば、特別図柄変動中(特別図柄が現在変動中であることを示す)であると判定し、特別図柄変動中処理を行う(ステップ306)。
<特別図柄処理:特別図柄変動中処理>
この処理について、図25を用いて詳しく説明すると、主制御CPU600は、まず、図24のステップS511にて特別図柄変動タイマに設定された変動時間が経過したか、すなわち、0になったか否かを確認する(ステップS600)。特別図柄変動タイマが0でなければ(ステップS600:NO)、主制御CPU600は、図22に示すステップS306の特別図柄変動中処理を終了する。
一方、特別図柄変動タイマが0であれば(ステップS600:YES)、主制御CPU600は、演出制御コマンド(変動停止コマンド)を演出制御基板90(図3参照)に送信する(ステップS601)。そして、主制御CPU600は、特別図柄動作ステータスフラグに03Hを設定し、特別図柄変動中フラグに00Hを設定する。そしてさらに、主制御CPU600は、特別図柄の当否抽選結果を一定時間維持するために、特別図柄変動タイマに例えば約500msの時間を設定する(ステップS602)。その後、主制御CPU600は、図22に示すステップS306の特別図柄変動中処理を終了する。
他方、主制御CPU600は、図22に示すステップS304にて、特別図柄動作ステータスフラグの値が03Hであれば、特別図柄確認中(特別図柄の変動が終了して停止中であることを示す)であると判定し、特別図柄確認時間中処理を行う(ステップS307)。
<特別図柄処理:特別図柄確認中処理>
この処理について、図26を用いて詳しく説明すると、主制御CPU600は、まず、図24のステップS511にて特別図柄変動タイマに設定された変動時間が経過したか、すなわち、0になったか否かを確認する(ステップS700)。特別図柄変動タイマが0でなければ(ステップS700≠0)、主制御CPU600は、図22に示すステップS307の特別図柄確認時間中処理を終了する。
一方、特別図柄変動タイマが0であれば(ステップS700=0)、主制御CPU600は、特別図柄動作ステータスフラグに01Hを設定し(ステップS701)、特別図柄大当たり判定フラグがONに設定されているか(5AHが設定されているか)を確認する(ステップS702)。特別図柄大当たり判定フラグがONに設定されていれば(5AHが設定されていれば)(ステップS702:YES)、特別図柄大当たり判定フラグに00Hを設定し、図22のステップS303にて使用する特別図柄大当たり作動フラグに5AHを設定し、そして普通図柄時短フラグに00Hを設定し、普通図柄確変フラグに00Hを設定し、さらに、特別図柄時短フラグに00Hを設定し、特別図柄確変フラグに00Hを設定し、後述する特別図柄時短回数カウンタ及び特別図柄確変回数カウンタに00Hを設定する処理を行う(ステップS703)。その後、主制御CPU600は、図22に示すステップS307の特別図柄確認時間中処理を終了する。
他方、特別図柄大当たり判定フラグがONに設定されていなければ(5AHが設定されていなければ)(ステップS702:NO)、主制御CPU600は、特別図柄小当たり判定フラグがONに設定されているか(5AHが設定されているか)を確認する(ステップS704)。特別図柄小当たり判定フラグがONに設定されていれば(5AHが設定されていれば)(ステップS704:YES)、特別図柄小当たり判定フラグに00Hを設定し、図22のステップS302にて使用する特別図柄小当たり作動フラグに5AHを設定する(ステップS705)。
主制御CPU600は、上記ステップS705の処理を終えた後、又は、特別図柄小当たり判定フラグがONに設定されていなければ(5AHが設定されていなければ)(ステップS704:NO)、特別図柄時短回数カウンタの値が0か否かを確認する(ステップS706)。
特別図柄時短回数カウンタの値が0でなければ(ステップS706:NO)、特別図柄時短回数カウンタの値を1減算(−1)し(ステップS707)、主制御CPU600は、再度、特別図柄時短回数カウンタの値が0か否かを確認する(ステップS708)。そして、特別図柄時短回数カウンタの値が0であれば(ステップS708:YES)、普通図柄時短フラグに00Hを設定すると共に、普通図柄確変フラグに00Hを設定し、さらに、普通図柄時短フラグに00Hを設定する(ステップS709)。
上記ステップS709の処理を終えた後、又は、特別図柄時短回数カウンタの値が0(ステップS706:YES)、あるいは、特別図柄時短回数カウンタの値が0でなければ(ステップS708:NO)、主制御CPU600は、特別図柄確変回数カウンタの値が0か否かを確認する(ステップS710)。特別図柄確変回数カウンタの値が0であれば(ステップS710:YES)、主制御CPU600は、図22に示すステップS307の特別図柄確認時間中処理を終了する。
一方、特別図柄確変回数カウンタの値が0でなければ(ステップS710:NO)、主制御CPU600は、特別図柄確変回数カウンタの値を1減算(−1)し(ステップS711)、再度、特別図柄確変回数カウンタの値が0か否かを確認する(ステップS712)。特別図柄確変回数カウンタの値が0でなければ(ステップS712:NO)、主制御CPU600は、図22に示すステップS307の特別図柄確認時間中処理を終了する。
一方、特別図柄確変回数カウンタの値が0であれば(ステップS712:YES)、主制御CPU600は、普通図柄時短フラグに00Hを設定し、普通図柄確変フラグに00Hを設定し、特別図柄時短フラグに00Hを設定し、特別図柄確変フラグに00Hを設定する処理を行い(ステップS713)、図22に示すステップS307の特別図柄確認時間中処理を終了する。
<特別図柄処理>
このようにして、主制御CPU600は、図22に示す特別図柄変動開始処理(ステップS305)、又は、特別図柄変動中処理(ステップS306)、あるいは、特別図柄確認時間中処理(ステップS307)を終えると、特別図柄の表示データの更新を行った後(ステップS308)、特別図柄処理を終え、図19に示すステップS30の処理に移行する。
<特別電動役物管理処理>
次に、図28〜図33を参照して、上記特別電動役物管理処理(図19のステップS30)について詳細に説明する。
図28に示すように、主制御CPU600は、まず、特別図柄小当たり作動フラグがONに設定されているか、すなわち、特別図柄小当たり作動フラグに5AHが設定されているかを確認する(ステップS800)。特別図柄小当たり作動フラグに5AHが設定されていれば(ステップS800:ON)、特別図柄が小当たり中であると判断し、小当たり遊技に係る入賞装置44の一連の動作を制御するための小当たり処理を行い(ステップS801)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
一方、特別図柄小当たり作動フラグに5AHが設定されていなければ(ステップS800:OFF)、特別図柄大当たり作動フラグがONに設定されているか、すなわち、特別図柄大当たり作動フラグに5AHが設定されているかを確認する(ステップS802)。特別別図柄大当たり作動フラグに5AHが設定されていれば(ステップS802:ON)、特別図柄が大当たり中であると判断し、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
一方、特別図柄大当たり作動フラグに5AHが設定されていなければ(ステップS802:OFF)、特別電動役物の動作状態、すなわち、特別電動役物動作ステータスフラグの値を確認する(ステップS803)。より詳しく説明すると、特別電動役物動作ステータスフラグに00Hが設定されていれば、開始処理中(大当たり遊技開始前の待機状態であることを示す)であると判定し、大当たり開始処理(ステップS804)を行う。そして、特別電動役物動作ステータスフラグに01Hが設定されていれば、作動開始処理中(ラウンド遊技開始前の待機状態であることを示す)であると判定し、特別電動役物作動開始処理(ステップS805)を行う。また、特別電動役物動作ステータスフラグに02Hが設定されていれば、作動中(ラウンド遊技が実行中であることを示す)であると判定し、特別電動役物作動中処理(ステップS806)を行う。またさらに、特別電動役物動作ステータスフラグに03Hが設定されていれば、継続判定中(次回のラウンド遊技を継続させるか否かの判定中であることを示す)であると判定し、特別電動役物作動継続判定処理(ステップS807)を行う。そして、特別電動役物動作ステータスフラグに04Hが設定されていれば、終了処理中(大当たり遊技終了時の終了処理中であることを示す)であると判定し、大当たり終了処理(ステップS808)を行う。
このようにして、ステップS804〜ステップS808の何れかの処理を終えると、主制御CPU600は、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
ここで、ステップS804〜ステップS808の処理について、図29〜図33を参照して具体的に説明する。
<特別電動役物管理処理:大当たり開始処理>
まず、図29を用いて大当たり開始処理(ステップS804)について説明する。
図29に示すように、主制御CPU600は、大当たり遊技を開始する際に必要な大当たり開始時の設定処理を行う(ステップS900)。具体的には、役物連続作動装置作動フラグに5AHを設定し、特別電動役物動作ステータスフラグに01Hを設定し、連続回数カウンタに01Hを設定する。この役物連続作動装置作動フラグは、役物連続作動装置の作動状態を指定するためのフラグで、当該フラグがON状態(=5AH)である場合には役物連続作動装置が作動中(ラウンド遊技継続可)である旨を示し、当該フラグがOFF状態(≠5AH)である場合には、役物連続作動装置が非作動(ラウンド遊技継続不可)である旨を示す。また、連絡回数カウンタは、ラウンド遊技機の連続実行回数、すなわち、現在のラウンド数を記憶するためのカウンタである。なお、本実施形態においては、現在、連続回数カウンタに01Hが設定されているため、現在のラウンド数は1R目であることを示している。
次いで、主制御CPU600は、主制御ROM610内に格納されている大当たり開始テーブル(図示せず)を取得する(ステップS901)。そして、主制御CPU600は、この取得した大当たり開始テーブル(図示せず)を参照し、特別図柄判定データ(大当たり種別)に応じて、最大ラウンド数(規定ラウンド数)、ラウンド表示LED番号を主制御RAM620内に格納し、特別図柄役物動作タイマに開始インターバル時間を設定する(ステップS902)。
ところで、この大当たり開始テーブル(図示せず)には、特別図柄判定データ(ここでは大当たり種別)と、最大ラウンド数(規定ラウンド数)、開始インターバル時間、及びラウンド表示LED番号とが関連付けて格納されており、これにより、特別図柄判定データに応じて、最大ラウンド数、開始インターバル時間、及びラウンド表示LED番号が決定されることとなる。なお、開始インターバル時間とは、大当たりが確定した後、入賞装置44が作動するまでのインターバル区間であって、オープニング演出が行われる区間を定めた時間幅(1回目のラウンド遊技が行われる前の初回演出時間)を示す。また、ラウンド表示LED番号は、今回の大当り遊技の最大ラウンド数(規定ラウンド数)を示すもので、例えば、図2に示す普通図柄表示装置48の図示左側に位置するLEDを点灯又は消灯させることにより、最大ラウンド数(規定ラウンド数)を報知する。
次いで、主制御CPU600は、大当たり演出の開始を指示する大当たり開始インターバルコマンド(演出制御コマンド)を演出制御基板90に送信した後(ステップS903)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
<特別電動役物管理処理:特別電動役物作動開始処理>
次に、図30を用いて特別電動役物作動開始処理(ステップS805)について説明する。
図30に示すように、主制御CPU600は、特別図柄役物動作タイマの値を確認する(ステップS1000)。特別図柄役物動作タイマが0でなければ(ステップS1000:NO)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
一方、特別図柄役物動作タイマが0であれば(ステップS1000:YES)、大入賞口(図示しない)開放前インターバル時間(初回のラウンドの場合は、開始インターバル時間)が経過したと判断し、大入賞口開放開始動作に伴い、大入賞口開放コマンド(演出制御コマンド)を演出制御基板90に送信する(ステップS1001)。大入賞口開放コマンドは、ラウンド遊技開始情報(ラウンド演出の開始指示情報)や現在のラウンド数情報を含み、演出制御基板90側において、ラウンド数に対応するラウンド演出を現出させる際に利用される。
次いで、主制御CPU600は、主制御ROM610内に格納されている図示しない大入賞口動作時間設定テーブルを取得する(ステップS1002)。そして、主制御CPU600は、この大入賞口動作時間設定テーブル(図示せず)を参照して、特別図柄判定データ(大当たり種別)と現在のラウンド数とに対応する大入賞口開放動作時間を特別図柄役物動作タイマに設定する(ステップS1003)。なお、この大入賞口動作時間設定テーブル(図示せず)には、特別図柄判定データと現在のラウンド数とに関連付けられた大入賞口開放動作時間が格納されており、特別図柄判定データと現在のラウンド数とに対応する大入賞口開放動作時間が決定されるようになっている。
次いで、主制御CPU600は、大入賞口(図示せず)への入賞球数をカウントする大入賞口入賞数カウンタに00Hを設定、すなわち、クリアする(ステップS1004)。なお、大入賞口(図示せず)への入賞球数のカウントは、図19に示すステップS23にて行われている。
次いで、主制御CPU600は、大入賞口開閉動作設定処理を行う(ステップS1005)。この大入賞口開閉動作設定処理では、大当たり種別に応じた大入賞口(図示せず)の開閉動作制御に必要な設定処理を行う。具体的には、主制御CPU600は、ステップS1003にて設定された開放時間分、大入賞口(図示せず)を開放するために必要な特別電動役物ソレノイド44bを制御するためのデータを作成し、主制御RAM620内に格納する。そして、この作成されたデータに基づいて、PWM回路650は、図19に示すソレノイド駆動処理(ステップS32)にて、PWM信号0〜3のうち、特別電動役物ソレノイド44bに割当てられたいずれかの信号のみ図16(b)に示すようなPWM信号を生成する。これにより、特別電動役物ソレノイド44bが、この生成されたPWM信号0〜3の何れか1つの信号によって制御され、もって、開閉扉44aが動作し、大入賞口(図示せず)が開放時間分開放することとなる。一方、PWM回路650は、大入賞口(図示せず)を閉止する場合、図19に示すソレノイド駆動処理(ステップS32)にて、図16(c)に示すようなPWM信号0〜3を生成するため、特別電動役物ソレノイド44bが停止し、開閉扉44aが大入賞口(図示せず)を閉止することとなる。
次いで、主制御CPU600は、特別図柄電動役物動作ステータスフラグに02Hを設定し(ステップS1006)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
<特別電動役物管理処理:特別電動役物作動中処理>
次に、図31を用いて特別電動役物作動中処理(ステップS806)について説明する。
図31に示すように、主制御CPU600は、大入賞口最大入賞数確認処理を行う(ステップS1100)。この大入賞口最大入賞数確認処理では、大入賞口(図示せず)への入賞球数をカウントし、その入賞球数が最大入賞数に達したか否かを確認する。大入賞口(図示せず)への入賞球数が最大入賞数に達した場合は、特別図柄役物動作タイマをゼロクリアし、大入賞口開放動作時間を強制的にゼロにする。これにより、大入賞口(図示せず)の最大開放時間が経過していない場合であっても、入賞球数が最大入賞数に達した場合は、大入賞口(図示せず)が開閉扉44aによって閉止されることとなる。
次いで、主制御CPU600は、大入賞口開閉動作設定処理を行う(ステップS1101)。この大入賞口開閉動作設定処理は、図30にて説明したステップS1005の処理と同様である。ただ、この際、特別電動役物動作タイマが0であれば、特別電動役物ソレノイド44bを停止させるためのデータを作成し、主制御RAM620内に格納する。これにより、PWM回路650は、図19に示すソレノイド駆動処理(ステップS32)にて、図16(c)に示すようなPWM信号(PWM信号0〜3の何れか1つを生成)を生成するため、特別電動役物ソレノイド44bが停止し、開閉扉44aが大入賞口(図示せず)を閉止することとなる。よって、ステップS1003にて設定された開放時間が経過した場合か、又は、入賞球数が最大入賞数に達して特別図柄変動タイマがゼロクリアされた場合には、特別電動役物ソレノイド44bの作動が停止し、大入賞口(図示せず)が開閉扉44aによって閉止されることとなる。
次いで、主制御CPU600は、特別図柄役物動作タイマが0か否かを判定する(ステップS1102)。0でなければ(ステップS1102:NO)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
一方、特別図柄役物動作タイマが0であれば(ステップS1102:YES)、主制御CPU600は、今回のラウンド遊技における大入賞口(図示せず)の開放が終了したと判断し、ラウンド終了コマンド(演出制御コマンド)を演出制御基板90に送信する(ステップS1103)。このラウンド終了コマンドには、今回の大当り種別情報、ラウンド遊技終了情報(ラウンド終了演出の開始指示情報)、及び、現在のラウンド数情報を含み、演出制御基板90側において、ラウンド遊技機間のインターバル時間中におけるラウンド終了演出を現出させる際に利用される。
次いで、主制御CPU600は、ラウンド遊技が終了した際の各種設定処理を行う(ステップS1104)。具体的には、特別電動役物動作ステータスフラグに03Hを設定し、特別図柄動作タイマに残存球排出時間(例えば、1980ms)を設定する。
次いで、主制御CPU600は、上記処理を終えた後、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
<特別電動役物管理処理:特別電動役物作動継続判定処理>
次に、図32を用いて特別電動役物作動継続判定処理(ステップS807)について説明する。
図32に示すように、主制御CPU600は、特別図柄役物動作タイマが0か否かを判定する(ステップS1200)。ここでの特別図柄役物動作タイマには、大入賞口閉止後の残存球排出時間が設定されている(図31に示すステップS1104)ため、残存球排出時間が経過したか否かが判定されることとなる。
特別図柄役物動作タイマが0でなければ(ステップS1200:NO)、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。一方、特別図柄役物動作タイマが0であれば(ステップS1200:YES)、連続回数カウンタを取得して、現在のラウンド数が規定ランド数の最大ラウンド数に達したか否かを判定する(ステップS1201)。
現在のラウンド数が規定ランド数の最大ラウンド数に達していなければ(ステップS1201:NO)、連続回数カウンタをインクリメント(+1)し(ステップS1202)、主制御ROM610内に格納されている特別電動役物終了インターバル設定テーブル(図示せず)を取得する(ステップS1203)。そして、主制御CPU600は、その取得した特別電動役物終了インターバル設定テーブル(図示せず)を参照し、特別図柄判定データとインクリメント後の連続回数カウンタとに対応する開放前インターバル時間を特別図柄役物動作タイマに設定する(ステップS1204)。なお、この特別電動役物終了インターバル設定テーブル(図示せず)には、特別図柄判定データと連続回数カウンタとに関連付けられた開放前インターバル時間が格納されており、これにより、特別図柄判定データ(今回の大当り種別)と連続回数カウンタの現在値(ステップS1202にてインクリメントした後の連続回数カウンタ値)とに対応する開放前インターバル時間が決定されるようになっている。
次いで、主制御CPU600は、ラウンド継続時の各種設定処理を行う(ステップS1205)。具体的には、今回のラウンド遊技が終了して次回のラウンド遊技を開始させるための処理として、特別電動役物作動フラグに00Hを設定し、特別電動役物動作ステータスフラグに00Hを設定する。
この処理を終えた後、主制御CPU600は、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
他方で、現在のラウンド数が規定ランド数の最大ラウンド数に達していれば(ステップS1206:NO)、主制御CPU600は、主制御ROM610内に格納されている役物連続作動装置作動終了インターバル設定テーブル(図示せず)を取得する(ステップS1206)。そして、主制御CPU600は、その取得した役物連続作動装置作動終了インターバル設定テーブル(図示せず)を参照し、特別図柄判定データとインクリメント後の連続回数カウンタとに対応する終了インターバル時間を特別図柄役物動作タイマに設定する(ステップS1207)。なお、この役物連続作動装置作動終了インターバル設定テーブル(図示せず)には、特別図柄判定データ(大当たり種別)と終了インターバル時間とが関連付けて格納されており、これにより、特別図柄判定データに応じて終了インターバル時間が決定されるようになっている。
ところで、終了インターバル時間とは、最終ラウンドのラウンド遊技が終了して残存球排出時間が経過した後、大当たり遊技が終了するまでのインターバル区間であって、エンディング演出が行われる区間を定めた時間幅を示す。この終了インターバル時間中は、後述するステップS1208にて特別電動役物作動フラグがOFF状態(=00H)に設定されるため、終了インターバル時間内は、開放前インターバル時間内と同じく、大入賞口(図示せず)への入賞を無効とする大入賞口入賞無効期間となる。
次いで、主制御CPU600は、ラウンド継続終了時の各種設定処理を行う(ステップS1208)。具体的には、最大ラウンド到達時の設定処理として、特別電動役物作動フラグに00Hを設定し(OFF状態に設定し)、特別電動役物動作ステータスフラグに04Hを設定する。
次いで、主制御CPU600は、エンディング演出の開始を指示する大当たり終了コマンド(演出制御コマンド)を演出制御基板90に送信する(ステップS1209)。この大当たり終了コマンドには、今回の大当り種別情報と大当たり当選時の遊技状態情報とが含まれ、演出制御基板90により、大当たり遊技後の演出モードを決定する際にも利用される。それゆえ、この大当たり終了コマンドは、遊状態指定コマンドの役割も担っている。演出制御基板90は、大当たり終了コマンド(演出制御コマンド)に含まれる情報に基づき、演出モードを決定することで、大当たり終了後の遊技状態と、その遊技状態に係る演出モードとの整合性を取ることができるようになっている。
かくして、上記の処理を終えた後、主制御CPU600は、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
<特別電動役物管理処理:大当たり終了処理>
次に、図33を用いて大当たり終了処理(ステップS808)について説明する。
図33に示すように、主制御CPU600は、特別図柄役物動作タイマが0か否かを判定する(ステップS1300)。特別図柄役物動作タイマには、上記終了インターバル時間が設定されているので、ここでの判定処理では、終了インターバル時間が経過しかたか否かが判定されることとなる。
特別図柄役物動作タイマが0でなければ、主制御CPU600は、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
一方、特別図柄役物動作タイマが0であれば、大当たり遊技後の遊技状態を特定するため各移行状態のバッファを各状態フラグに格納する(ステップS1301)。
次いで、主制御CPU600は、特別図柄大当たり作動フラグ,役物連続作動装置作動フラグ,連続回数カウンタ,ラウンド表示LED番号等をクリアし、さらに、特別電動役物動作ステータフラグに00Hを設定し、大当たり終了時の各種設定処理を行う(ステップS1302)。
次いで、主制御CPU600は、遊技状態報知情報を更新する遊技状態報知情報更新処理を行う(ステップS1303)。具体的には、特別図柄時短状態フラグがON状態(=5AH)かOFF状態(≠5AH)かを確認し、ON状態の場合、遊技状態報知LEDを点灯させるデータを主制御RAM620内に格納する。
次いで、主制御CPU600は、上記処理を終えた後、特別電動役物管理処理を終え、図19に示すステップS31の処理に移行する。
しかして、以上説明した本実施形態によれば、省電力効果を発揮させつつ制御負荷を低減させることができる。
なお、本実施形態においては、ハードウェア乱数を使用するにあたって、ハード的にラッチされたハードウェア乱数を用いた例を示したがそれに限らず、ソフト的にラッチされたハードウェア乱数を用いても良い。すなわち、16ビット乱数値レジスタRNDF16RG0_A(B)(図6(a)参照)、8ビット乱数値レジスタRNDF08RG0_A(B)(図6(b)参照)、16ビットカスタム乱数値レジスタRNDV16RG0_A(B)(図6(c)参照)、8ビットカスタム乱数値レジスタRNDV08RG0_A(B)(図6(d)参照)を所定のタイミング(例えば、図15に示すステップS24の乱数管理処理内)で主制御CPU600にて読み出し、主制御RAM620内に保持(ラッチ)しておいても良い。
また、本実施形態におけるPWM信号0〜3は、4つ全て出力させる必要はなく、普通電動役物ソレノイド43cや特別電動役物ソレノイド44bに割当てられた信号のみ、状況に合せて出力するようにしても良い。