以下、本発明に係る遊技機の一実施形態を、パチンコ遊技機を例にして、図1〜図22を参照して具体的に説明する。なお、以下の説明において、上下左右の方向を示す場合は、図示正面から見た場合の上下左右をいうものとする。
<遊技機:外観構成>
まず、図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参照)が設けられている。
一方、特別図柄1始動口42の右側には、大入賞口44が配設され、その内部には入賞球を検出する大入賞口スイッチ44a(図3参照)が設けられている。そして、上記液晶表示装置41の右上部にはゲートからなる普通図柄始動口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とで構成されたワンチップマイクロコンピュータを搭載している。なお、乱数回路630の詳細は後述することとする。
そして、このように構成される主制御基板60には、払出モータMを制御して遊技球を払出す払出制御基板70が接続されている。そしてさらには、特別図柄1始動口42への入賞を検出する特別図柄1始動口スイッチ42aと、特別図柄2始動口43への入賞を検出する特別図柄2始動口スイッチ43aと、普通図柄始動口45の通過を検出する普通図柄始動口スイッチ45aと、一般入賞口46への入賞を検出する一般入賞口スイッチ46aと、大入賞口44への入賞を検出する大入賞口スイッチ44aとが接続されている。また、主制御基板60には、特別図柄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、大入賞口スイッチ44aからの信号を受信した場合は、遊技者に幾らの遊技球を払い出すかを決定し、その決定した情報を含む払出制御コマンドを払出制御基板70に送信することで、払出制御基板70が遊技者に遊技球を払出すこととなる。なお、この抽選処理についての詳細は後述することとする。
払出制御基板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)は、リセットされる前に設定された値が保持され、そのまま初期値として、ハードウェア乱数を更新することとなる。それゆえ、本実施形態によれば、イリーガルアクセスリセットからの復帰を迅速に行うことができ、また、ハードウェア乱数は新たな初期値から更新が開始することとなるため、乱数回路の信頼性を保つことができる。
<主制御基板処理>
次に、主制御ROM610内に格納されているプログラムの概要を図14〜図22を用いて説明する。
<メイン処理>
まず、パチンコ遊技機1に電源が投入されると、電源基板130(図3参照)の電圧生成部1300にて生成された直流電圧が各制御基板に投入された旨の電源投入信号が送られ、その信号を受けて、主制御CPU600(図3参照)は、図14に示す主制御メイン処理を行う。主制御CPU600は、まず、最初に自らを割込み禁止状態に設定すると共に(ステップS1)、当該主制御CPU600内のレジスタ値(内部機能レジスタ6304)等の初期設定を行う(ステップ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とは、図15に示す電圧監視処理の動作が実行されたか否かを示すデータである。
このバックアップフラグBFLがOFF状態(ステップS7:OFF)であれば、後述する図15に示す電圧監視処理の動作が実行されていないこととなり、主制御CPU600は、主制御RAM620内の全領域を全てクリアする処理を行う(ステップS11)。一方、バックアップフラグBFLがON状態(ステップS7:ON)であれば、後述する図15に示す電圧監視処理の動作が実行されていることとなるため、主制御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は、ループ処理を行う。
<タイマ割込み処理>
続いて、図15を参照して、上述したメイン処理を中断させて、4ms毎に開始されるタイマ割込みプログラムについて説明する。このタイマ割込みが生じると、主制御CPU600内のレジスタ群の内容を主制御RAM620のスタック領域に退避させる退避処理を実行し(ステップS20)、その後電圧監視処理を実行する(ステップS21)。この電圧監視処理は、電源基板130(図3参照)から出力される電圧異常信号ALARMのレベルを判定し、電圧異常信号ALARMが「L」レベル(異常レベル)であれば、主制御RAM620内に記憶されているデータのバックアップ処理、すなわち、当該データのチェックサム値を算出し、その算出したチェックサム値をバックアップデータとして主制御RAM620内に保存する処理を行う。
次いで、主制御CPU600は、上記電圧監視処理(ステップS21)が終了すると、各遊技動作の時間を管理しているタイマのタイマ減算処理を行う(ステップS22)。ここで減算されたタイマは、大入賞口44(図2参照)の開放時間、普通図柄の変動時間、特別図柄の変動時間等の遊技演出時間、不正情報タイマ等を管理するために使用されるものである。
そして続いて、主制御CPU600には、特別図柄1始動口スイッチ42a(図3参照)と、特別図柄2始動口スイッチ43a(図3参照)と、普通図柄始動口スイッチ45a(図3参照)と、一般入賞口スイッチ46a(図3参照)と、大入賞口スイッチ44a(図3参照)を含む各種スイッチ類のON/OFF信号が入力され、主制御RAM620内の作業領域にON/OFF信号レベルや、その立ち上がり状態が記憶される(ステップS23)。なお、このスイッチ入力処理は、不正入賞があった場合に、立ち上がり状態を無効(入賞無効)にする処理も行い、賞球を払出すために上記大入賞口スイッチ44a,一般入賞口スイッチ46aに何個の遊技球が入賞したのかのカウントも行っている。
次いで、主制御CPU600は、乱数管理処理を行う(ステップS24)。具体的には、実際に使用している図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)。この特別図柄処理では、特別図柄の当否抽選を実行し、その抽選の結果に基づいて特別図柄の変動パターンや特別図柄の停止表示態様(停止特別図柄)を決定する。なお、この特別図柄処理の詳細については、後述することとする。
次いで、主制御CPU600は、LED管理処理を実行する(ステップS29)。このLED管理処理は、処理の進行状態に応じて、特別図柄表示装置47や普通図柄表示装置48への出力データを生成したり、当該データに基づく制御信号を出力したりする処理である。
次いで、主制御CPU600は、大入賞口44(図2参照)等の開閉動作を実現するソレノイドの駆動処理を実行し(ステップS30)、割込み許可状態に戻し(ステップS31)、主制御RAM620のスタック領域に退避させておいたレジスタの内容を復帰させタイマ割込みを終える(ステップS32)。これにより、割込み処理ルーチンからメイン処理(図14参照)に戻ることとなる。
<普通図柄処理>
次に、図16を参照して、上記普通図柄処理(図15のステップS27)について詳細に説明する。
図16に示すように、普通図柄処理は、先ず、ゲートからなる普通図柄始動口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)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行することとなる。
一方、普通図柄当たり作動フラグに5AHが設定されていなければ(ステップS104:OFF)、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値を確認する(ステップS105)。そして、普通図柄動作ステータスフラグが00Hであれば、主制御CPU600は、普通図柄の変動開始前の状態であると判断し、ステップS106に進み、普通図柄の始動保留球数が0か否かを確認する(ステップS106)。
主制御CPU600は、普通図柄の始動保留球数が格納されている主制御RAM620領域を確認した上で、0であると判断した場合(ステップS106:=0)は、普通図柄の表示データの更新を行った後(ステップS113)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。一方、0でないと判断した場合(ステップS106:≠0)は、普通図柄の始動保留球数を1減算する(ステップS107)。
その後、主制御CPU600は、図22(a)に示す普通図柄当たり判定テーブルNPP_TBLを用いて主制御RAM620領域に格納されている普通図柄の始動保留球数に対応した乱数値の当たり判定を行う。すなわち、主制御CPU600は、遊技状態を示す普通図柄確変フラグがOFFであれば、当該乱数値が、図22(a)に示す普通図柄当たり判定テーブルNPP_TBL(通常状態)の下限値(図示では、249)以上で上限値(図示では、250)以下か否かを判定し、下限値以上で上限値以下であれば、普通図柄当たり判定フラグに5AHをセットし、ONにする。それ以外の場合は、普通図柄当たり判定フラグをOFFにする。
一方、遊技状態を示す普通図柄確変フラグがONであれば、当該乱数値が、図22(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)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。
他方、主制御CPU600は、上記ステップS105にて、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値が01Hであれば、主制御CPU600は、普通図柄が変動中であると判断し、ステップS114に進み、普通図柄変動タイマが0か否かを確認する(ステップS114)。普通図柄変動タイマが0でなければ(ステップS114:≠0)、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。そして、普通図柄変動タイマが0であれば(ステップS114:=0)、主制御CPU600は、上記ステップS105にて用いた普通図柄動作ステータスフラグに02Hを設定し、普通図柄の当否抽選結果を一定時間維持させるために、普通図柄変動タイマに例えば約600msの時間が設定される(ステップS115)。
主制御CPU600は、上記ステップS115の処理を終えた後、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。
一方、主制御CPU600は、上記ステップS105にて、普通図柄の挙動を示す処理状態、すなわち、普通図柄動作ステータスフラグの値が02Hであれば、主制御CPU600は、普通図柄が確認時間中(普通図柄の変動が終了して停止中)であると判断し、ステップS116に進み、普通図柄変動タイマが0か否かを確認する(ステップS116)。普通図柄変動タイマが0でなければ(ステップS116:≠0)、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。そして、普通図柄変動タイマが0であれば(ステップS116:=0)、主制御CPU600は、上記ステップS105にて用いた普通図柄動作ステータスフラグに00Hを設定し(ステップS117)、普通図柄当たり判定フラグがONに設定(5AHが設定)されているかを確認する(ステップS118)。
これにより、普通図柄当たり判定フラグがOFFに設定(5AHが設定されていない)されていれば(ステップS118:OFF)、主制御CPU600は、普通図柄の表示データの更新を行い(ステップS113)、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。そして、普通図柄当たり判定フラグがONに設定(5AHが設定)されていれば(ステップS118:ON)、主制御CPU600は、ステップS104にて用いられる普通図柄当たり作動フラグをON(5AHを設定)に設定した(ステップS119)後、普通図柄処理を終了し、図15に示すステップS28の特別図柄処理に移行する。
<特別図柄処理>
次に、図17〜図21を参照して、上記特別図柄処理(図15のステップS28)について詳細に説明する。図17に示すように、特別図柄処理は、先ず、特別図柄1始動口42(図2参照)の特別図柄1始動口スイッチ42a(図3参照)において、遊技球の入球(入賞球)を検出したか否かを確認し(ステップS200)、さらに、特別図柄2始動口43(図2参照)の特別図柄2始動口スイッチ43aにおいて、遊技球の入球(入賞球)を検出したか否かを確認する(ステップS201)。
<特別図柄処理:始動口チェック処理>
この処理について、図18を用いて詳しく説明すると、主制御CPU600は、特別図柄1始動口42又は特別図柄2始動口43に遊技球が入球(入賞)したか否かを確認、すなわち、特別図柄1始動口42の特別図柄1始動口スイッチ42a又は特別図柄2始動口43の特別図柄2始動口スイッチ43aのレベルを確認する(ステップS300)。これにより、遊技球の入球(入賞)を検出しなければ(ステップS300:NO)、図15に示すステップS28の処理を終える。
一方、遊技球の入球(入賞)を検出すれば(ステップS300:YES)、主制御CPU600は、特別図柄の変動契機となる始動保留球数が所定数、主制御RAM620内の始動保留記憶領域に格納されているか否かを確認する(ステップS301)。その始動保留球数が、4未満であれば(ステップS301:≠MAX)、当該始動保留球数を1加算(+1)する(ステップS302)。
次いで、主制御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内の始動保留記憶領域に格納する(ステップ303)。
次いで、主制御CPU600は、現在の遊技状態(特別図柄大当たり判定フラグがONに設定されているか否か等)を確認し、先読み禁止状態か否かを判定する(ステップS304)。そして、先読み禁止状態でなければ(ステップS304:NO)、主制御CPU600は、上記ステップS303にて主制御RAM620内の始動保留記憶領域に格納した特別図柄の当否抽選に用いられる大当たり判定用乱数値を取得し(ステップS305)、さらに、図示しない始動口入賞時乱数判定テーブルを取得する(ステップS306)。
次いで、主制御CPU600は、上記ステップS305にて取得した大当たり判定用乱数値及びステップS306にて取得した始動口入賞時乱数判定テーブルを用いて、大当たり抽選を行い、さらに、上記ステップS303にて主制御RAM620内の始動保留記憶領域に格納した特別図柄用乱数値を用いて、大当たりの種類(15R確変大当り、15R非確変大当たり等)を決定し、変動パターン用乱数値を用いて、変動パターンを決定し、それに応じた特別図柄始動口入賞コマンドを生成する(ステップS307)。
次いで、主制御CPU600は、上記生成された特別図柄始動口入賞コマンドに応じた下位バイトの始動保留加算コマンドを生成する(ステップS308)。
一方、主制御CPU600は、上記ステップS308の処理を終えるか、又は、上記ステップS301にて特別図柄1又は2の始動保留球数が4以上であるか(ステップS301:=MAX)、あるいは、先読み禁止状態であれば(ステップS304:YES)、増加した始動保留球数に応じた上位バイトの始動保留加算コマンドを生成する(ステップS309)。
次いで、主制御CPU600は、上記ステップS308にて生成した下位バイトの始動保留加算コマンドと、上記ステップS309にて生成した上位バイトの始動保留加算コマンドとを結合した上で、演出制御コマンド(始動保留加算コマンド)として、演出制御基板90(図3参照)に送信する処理を行う(ステップS60)。
<特別図柄処理>
かくして、図17に示すステップS200及びステップS201の処理を終えると、主制御CPU600は、特別図柄小当たり作動フラグがONに設定されているか、すなわち、特別図柄小当たり作動フラグに5AHが設定されているかを確認する(ステップS202)。特別図柄小当たり作動フラグに5AHが設定されていれば(ステップS202:ON)、特別図柄が小当たり中であると判断し、特別図柄の表示データの更新を行った後(ステップS208)、図15に示すステップS28の特別図柄処理を終了する。
一方、特別図柄小当たり作動フラグに5AHが設定されていなければ(ステップS202:OFF)、特別図柄大当たり作動フラグがONに設定されているか、すなわち、特別図柄大当たり作動フラグに5AHが設定されているかを確認する(ステップS203)。特別図柄大当たり作動フラグに5AHが設定されていれば(ステップS203:ON)、特別図柄が大当たり中であると判断し、特別図柄の表示データの更新を行った後(ステップS208)、図15に示すステップS28の特別図柄処理を終了する。
一方、特別図柄大当たり作動フラグに5AHが設定されていなければ(ステップS203:OFF)、特別図柄の挙動を示す処理状態、すなわち、特別図柄動作ステータスフラグの値を確認する(ステップS204)。より詳しく説明すると、主制御CPU600は、特別図柄動作ステータスフラグの値が00H又は01Hであれば、特別図柄変動待機中(特別図柄の変動が行われておらず次回の変動のための待機状態であることを示す)であると判定し、特別図柄変動開始処理を行う(ステップS205)。
<特別図柄処理:特別図柄変動開始処理>
この処理について、図19を用いて詳しく説明すると、主制御CPU600は、特別図柄始動保留球数が0か否かを確認する(ステップS400)。すなわち、主制御RAM620内の特別図柄始動保留記憶領域を確認し、特別図柄始動保留球数が0であると主制御CPU600が判断した場合は(ステップS400:=0)、特別図柄動作ステータスフラグの値が00Hか否かを確認する(ステップS401)。特別図柄動作ステータスフラグの値が00Hであれば(ステップS401:YES)、図17に示すステップS205の特別図柄変動開始処理を終了する。
一方、特別図柄動作ステータスフラグの値が00Hでなければ(ステップS401:NO)、主制御CPU600は、演出制御コマンド(客待ちデモコマンド)を演出制御基板90(図3参照)に送信し(ステップS402)、特別図柄動作ステータスフラグに00Hをセットした上で(ステップS403)、図17に示すステップS205の特別図柄変動開始処理を終了する。
他方、特別図柄始動保留球数が0でないと判断した場合(ステップS400:≠0)、主制御CPU600は、特別図柄始動保留球数を1減算(−1)し(ステップS404)、演出制御コマンド(始動保留減算コマンド)を演出制御基板90(図3参照)に送信する(ステップS405)。
次いで、主制御CPU600は、図16に示すステップS111の処理と同様、特別図柄始動保留球数に対応した特別図柄の当否抽選に用いられる乱数値(図18のステップS303にて格納した大当たり判定用乱数値)が格納されている主制御RAM620内の記憶領域をシフトし(ステップS406)、特別図柄始動保留4に対応した特別図柄の当否抽選に用いられる乱数値が格納されていた主制御RAM620の領域に0を設定する(ステップS407)。
次いで、主制御CPU600は、図18のステップS303にて主制御RAM620内の特別図柄始動保留記憶領域に格納した大当たり判定用乱数値を用いて当たり判定を行う。具体的には、大当たり判定用乱数値と、図22(b)に示す特別図柄大当たり判定テーブルSDH_TBLに格納されている判定値とを比較、又は、図22(c)に示す特別図柄小当たり判定テーブルSDP_TBLに格納されている判定値とを比較して、特別図柄の当たり判定を行う。すなわち、特別図柄大当たり判定テーブルSDH_TBLには、図22(b)に示すように、遊技状態が通常状態の場合、下限値として10001,上限値として10164が格納され、遊技状態が確変状態(当たり抽選確率が通常より高確率状態である確率変動状態)の場合、下限値として10001,上限値として11640が格納されている。そのため、遊技状態が通常状態で、大当たり判定用乱数値が10001〜10164の場合、特別図柄は大当たりとなり、それ以外の乱数値はハズレとなる。そして、遊技状態が確変状態で、大当たり判定用乱数値が10001〜11640の場合、特別図柄は大当たりとなり、それ以外の乱数値はハズレとなる。また、特別図柄小当たり判定テーブルSDP_TBLには、図22(c)に示すように、下限値として20001,上限値として20164が格納されている。そのため、大当たり判定用乱数値が20001〜20164の場合、特別図柄は小当たりとなり、それ以外の乱数値はハズレとなる。このようにして、図18のステップS303にて主制御RAM620内の特別図柄始動保留記憶領域に格納した大当たり判定用乱数値の当たり判定が行われる(ステップS408)。
次いで、主制御CPU600は、図18のステップS303にて主制御RAM620内の特別図柄始動保留記憶領域に格納した特別図柄用乱数値を用いて、特別図柄の停止図柄を生成する(ステップS409)。
次いで、主制御CPU600は、通常状態、時短状態、潜伏確変状態、確変状態のいずれかの遊技状態に移行する準備を行う(ステップS410)。
次いで、主制御CPU600は、図18のステップS303にて主制御RAM620内の特別図柄始動保留記憶領域に格納した変動パターン用乱数値を用いて特別図柄の変動パターンの生成を行う(ステップS411)。この際、特別図柄変動タイマに変動時間が設定される。
次いで、主制御CPU600は、特別図柄変動中フラグに5AHを設定し、ON状態にする(ステップS412)。
次いで、主制御CPU600は、液晶表示装置41(図2参照)に表示される特別図柄の特別図柄指定コマンドを生成し(ステップS413)、その生成した特別図柄指定コマンドを演出制御コマンドとして演出制御基板90(図3参照)に送信する処理を行う(ステップS414)。
次いで、主制御CPU600は、特別図柄動作ステータスフラグに02Hを設定し(ステップS415)、図17に示すステップS205の特別図柄変動開始処理を終了する。
他方、主制御CPU600は、図17に示すステップS204にて、特別図柄動作ステータスフラグの値が02Hであれば、特別図柄変動中(特別図柄が現在変動中であることを示す)であると判定し、特別図柄変動中処理を行う(ステップ206)。
<特別図柄処理:特別図柄変動中処理>
この処理について、図20を用いて詳しく説明すると、主制御CPU600は、まず、図19のステップS411にて特別図柄変動タイマに設定された変動時間が経過したか、すなわち、0になったか否かを確認する(ステップS500)。特別図柄変動タイマが0でなければ(ステップS500:NO)、主制御CPU600は、図17に示すステップS206の特別図柄変動中処理を終了する。
一方、特別図柄変動タイマが0であれば(ステップS500:YES)、主制御CPU600は、演出制御コマンド(変動停止コマンド)を演出制御基板90(図3参照)に送信する(ステップS501)。そして、主制御CPU600は、特別図柄動作ステータスフラグに03Hを設定し、特別図柄変動中フラグに00Hを設定する。そしてさらに、主制御CPU600は、特別図柄の当否抽選結果を一定時間維持するために、特別図柄変動タイマに例えば約500msの時間を設定する(ステップS502)。その後、主制御CPU600は、図17に示すステップS206の特別図柄変動中処理を終了する。
他方、主制御CPU600は、図17に示すステップS204にて、特別図柄動作ステータスフラグの値が03Hであれば、特別図柄確認中(特別図柄の変動が終了して停止中であることを示す)であると判定し、特別図柄確認時間中処理を行う(ステップS207)。
<特別図柄処理:特別図柄確認中処理>
この処理について、図21を用いて詳しく説明すると、主制御CPU600は、まず、図18のステップS411にて特別図柄変動タイマに設定された変動時間が経過したか、すなわち、0になったか否かを確認する(ステップS600)。特別図柄変動タイマが0でなければ(ステップS600≠0)、主制御CPU600は、図17に示すステップS207の特別図柄確認時間中処理を終了する。
一方、特別図柄変動タイマが0であれば(ステップS600=0)、主制御CPU600は、特別図柄動作ステータスフラグに01Hを設定し(ステップS601)、特別図柄大当たり判定フラグがONに設定されているか(5AHが設定されているか)を確認する(ステップS602)。特別図柄大当たり判定フラグがONに設定されていれば(5AHが設定されていれば)(ステップS602:YES)、特別図柄大当たり判定フラグに00Hを設定し、図17のステップS203にて使用する特別図柄大当たり作動フラグに5AHを設定し、そして普通図柄時短フラグに00Hを設定し、普通図柄確変フラグに00Hを設定し、さらに、特別図柄時短フラグに00Hを設定し、特別図柄確変フラグに00Hを設定し、後述する特別図柄時短回数カウンタ及び特別図柄確変回数カウンタに00Hを設定する処理を行う(ステップS603)。その後、主制御CPU600は、図17に示すステップS207の特別図柄確認時間中処理を終了する。
他方、特別図柄大当たり判定フラグがONに設定されていなければ(5AHが設定されていなければ)(ステップS602:NO)、主制御CPU600は、特別図柄小当たり判定フラグがONに設定されているか(5AHが設定されているか)を確認する(ステップS604)。特別図柄小当たり判定フラグがONに設定されていれば(5AHが設定されていれば)(ステップS604:YES)、特別図柄小当たり判定フラグに00Hを設定し、図17のステップS202にて使用する特別図柄小当たり作動フラグに5AHを設定する(ステップS605)。
主制御CPU600は、上記ステップS605の処理を終えた後、又は、特別図柄小当たり判定フラグがONに設定されていなければ(5AHが設定されていなければ)(ステップS604:NO)、特別図柄時短回数カウンタの値が0か否かを確認する(ステップS606)。
特別図柄時短回数カウンタの値が0でなければ(ステップS606:NO)、特別図柄時短回数カウンタの値を1減算(−1)し(ステップS607)、主制御CPU600は、再度、特別図柄時短回数カウンタの値が0か否かを確認する(ステップS608)。そして、特別図柄時短回数カウンタの値が0であれば(ステップS608:YES)、普通図柄時短フラグに00Hを設定すると共に、普通図柄確変フラグに00Hを設定し、さらに、普通図柄時短フラグに00Hを設定する(ステップS609)。
上記ステップS609の処理を終えた後、又は、特別図柄時短回数カウンタの値が0(ステップS606:YES)、あるいは、特別図柄時短回数カウンタの値が0でなければ(ステップS608:NO)、主制御CPU600は、特別図柄確変回数カウンタの値が0か否かを確認する(ステップS610)。特別図柄確変回数カウンタの値が0であれば(ステップS610:YES)、主制御CPU600は、図17に示すステップS207の特別図柄確認時間中処理を終了する。
一方、特別図柄確変回数カウンタの値が0でなければ(ステップS610:NO)、主制御CPU600は、特別図柄確変回数カウンタの値を1減算(−1)し(ステップS611)、再度、特別図柄確変回数カウンタの値が0か否かを確認する(ステップS612)。特別図柄確変回数カウンタの値が0でなければ(ステップS612:NO)、主制御CPU600は、図17に示すステップS207の特別図柄確認時間中処理を終了する。
一方、特別図柄確変回数カウンタの値が0であれば(ステップS612:YES)、主制御CPU600は、普通図柄時短フラグに00Hを設定し、普通図柄確変フラグに00Hを設定し、特別図柄時短フラグに00Hを設定し、特別図柄確変フラグに00Hを設定する処理を行い(ステップS613)、図17に示すステップS207の特別図柄確認時間中処理を終了する。
<特別図柄処理>
このようにして、主制御CPU600は、図17に示す特別図柄変動開始処理(ステップS205)、又は、特別図柄変動中処理(ステップS206)、あるいは、特別図柄確認時間中処理(ステップS207)を終えると、特別図柄の表示データの更新を行った後(ステップS208)、図15に示すステップS28の特別図柄処理を終える。
しかして、以上説明した本実施形態によれば、異常リセットからの復帰を迅速に行うことができると共に、乱数回路の信頼性を保つことができる。
なお、本実施形態においては、ハードウェア乱数を使用するにあたって、ハード的にラッチされたハードウェア乱数を用いた例を示したがそれに限らず、ソフト的にラッチされたハードウェア乱数を用いても良い。すなわち、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内に保持(ラッチ)しておいても良い。