以下、本発明の好適な実施の形態を図面に基づいて説明する。
図1は、本発明の一実施形態の遊技機の説明図である。
本実施形態の遊技機10は前面枠12を備え、該前面枠12は本体枠(外枠)11にヒンジ13を介して開閉回動可能に組み付けられている。遊技盤30(図2参照)は前面枠12の表側に形成された収納部(図示省略)に収納されている。また、前面枠(内枠)12には、遊技盤30の前面を覆うカバーガラス(透明部材)14を備えたガラス枠15が取り付けられている。
また、ガラス枠15の上部には、内部にランプ及びモータを内蔵した照明装置(ムービングライト)16や払出異常報知用のランプ(LED)17が設けられている。また、ガラス枠15の左右には内部にランプ等を内蔵し装飾や演出のための発光をする枠装飾装置18や、音響(例えば、効果音)を発するスピーカ(上スピーカ)19aが設けられている。さらに、前面枠12の下部にもスピーカ(下スピーカ)19bが設けられている。
また、前面枠12の下部には、図示しない打球発射装置に遊技球を供給する上皿21、遊技機10の裏面側に設けられている球払出装置から払い出された遊技球が流出する上皿球出口22、上皿21が一杯になった状態で払い出された遊技球を貯留する下皿23及び打球発射装置の操作部24等が設けられている。さらに、上皿21の上縁部には、遊技者からの操作入力を受け付けるための操作スイッチを内蔵した演出ボタン25が設けられている。さらに、前面枠12下部右側には、前面枠12を開放したり施錠したりするための鍵26が設けられている。
この実施形態の遊技機10においては、遊技者が上記操作部24を回動操作することによって、打球発射装置が、上皿21から供給される遊技球を遊技盤30前面の遊技領域32に向かって発射する。また、遊技者が演出ボタン25を操作することによって、表示装置41(図2参照)における変動表示ゲーム(飾り特図変動表示ゲーム)において、遊技者の操作を介入させた演出等を行わせることができる。さらに、上皿21上方のガラス枠15の前面には、遊技者が隣接する球貸機から球貸しを受ける場合に操作する球貸ボタン27、球貸機のカードユニットからプリペイドカードを排出させるために操作する排出ボタン28、プリペイドカードの残高を表示する残高表示部(図示省略)等が設けられている。
次に、図2を用いて遊技盤30の一例について説明する。図2は、本実施形態の遊技盤30の正面図である。
遊技盤30の表面には、ガイドレール31で囲われた略円形状の遊技領域32が形成されている。遊技領域32は、遊技盤30の四隅に各々設けられた樹脂製のサイドケース33及びガイドレール31に囲繞されて構成される。遊技領域32には、ほぼ中央に表示装置41を備えたセンターケース40が配置されている。表示装置41は、センターケース40に設けられた凹部に、センターケース40の前面より奥まった位置に取り付けられている。即ち、センターケース40は表示装置41の表示領域の周囲を囲い、表示装置41の表示面よりも前方へ突出するように形成されている。
表示装置41は、例えば、LCD(液晶表示器)、CRT(ブラウン管)等の表示画面を有する装置で構成されている。表示画面の画像を表示可能な領域(表示領域)には、複数の識別情報(特別図柄)や特図変動表示ゲームを演出するキャラクタや演出効果を高める背景画像等が表示される。表示装置41の表示画面においては、識別情報として割り当てられた複数の特別図柄が変動表示(可変表示)されて、特図変動表示ゲームに対応した飾り特図変動表示ゲームが行われる。また、表示画面には遊技の進行に基づく演出のための画像(例えば、大当たり表示画像、ファンファーレ表示画像、エンディング表示画像等)が表示される。
遊技領域32のセンターケース40の左側には、普通図柄始動ゲート(普図始動ゲート)34が設けられている。センターケース40の左下側には、三つの一般入賞口35が配置され、センターケース40の右下側には、一つの一般入賞口35が配置されている。
これら一般入賞口35、…には、各一般入賞口35に入った遊技球を検出するための入賞口スイッチ35a〜35n(図3参照)が配設されている。
また、センターケース40の下方には、特図変動表示ゲームの開始条件を与える始動入賞口36が設けられ、その直下には上部に逆「ハ」の字状に開いて遊技球が流入し易い状態に変換する一対の可動部材37b、37bを備えるとともに内部に第2始動入賞口を有する普通変動入賞装置(普電)37が配設されている。
普通変動入賞装置37の一対の開閉部材37b,37bは、常時は遊技球の直径程度の間隔をおいた閉じた閉状態(遊技者にとって不利な状態)を保持している。ただし、普通変動入賞装置37の上方には、始動入賞口36が設けられているので、閉じた状態では遊技球が入賞できないようになっている。
そして、普図変動表示ゲームの結果が所定の停止表示態様となった場合には、駆動装置としての普電ソレノイド37c(図3参照)によって、逆「ハ」の字状に開いて普通変動入賞装置37に遊技球が流入し易い開状態(遊技者にとって有利な状態)に変化させられるようになっている。
さらに、普通変動入賞装置37の下方には、特図変動表示ゲームの結果によって遊技球を受け入れない状態と受け入れ易い状態とに変換可能な特別変動入賞装置(大入賞口)38が配設されている。
特別変動入賞装置38は、上端側が手前側に倒れる方向に回動して開放可能になっているアタッカ形式の開閉扉38cを有しており、補助遊技としての特図変動表示ゲームの結果如何によって大入賞口を閉じた状態(遊技者にとって不利な閉塞状態)から開放状態(遊技者にとって有利な状態)に変換する。
即ち、特別変動入賞装置38は、例えば、駆動装置としての大入賞口ソレノイド38b(図3参照)により駆動される開閉扉38cによって開閉される大入賞口を備え、特別遊技状態中は、大入賞口を閉じた状態から開いた状態に変換することにより大入賞口内への遊技球の流入を容易にさせ、遊技者に所定の遊技価値(賞球)を付与するようになっている。
なお、大入賞口の内部(入賞領域)には、当該大入賞口に入った遊技球を検出する検出手段としてのカウントスイッチ38a(図3参照)が配設されている。
特別変動入賞装置38の下方には、入賞口などに入賞しなかった遊技球を回収するアウト口39が設けられている。
また、遊技領域32の外側(例えば、遊技盤30の上部)には、特図変動表示ゲームをなす第1特図変動表示ゲームや第2特図変動表示ゲーム及び普図始動ゲート34への入賞をトリガとする普図変動表示ゲームを一箇所で実行する一括表示装置50が設けられている。
一括表示装置50は、7セグメント型の表示器(LEDランプ)等で構成された第1特図変動表示ゲーム用の第1特図変動表示部(特図1表示器)及び第2特図変動表示ゲーム用の第2特図変動表示部(特図2表示器)と、普図変動表示ゲーム用の変動表示部(普図表示器)と、同じくLEDランプで構成された各変動表示ゲームの始動記憶数報知用の記憶表示部を備える。また、一括表示装置50には、遊技状態を報知する表示部、エラーを表示するエラー表示部、大当り時のラウンド数(特別変動入賞装置38の開閉回数)を表示するラウンド表示部が設けられている。
特図1表示器と特図2表示器における特図変動表示ゲームは、例えば変動表示ゲームの実行中、即ち、表示装置41において飾り特図変動表示ゲームを行っている間は、中央のセグメントを点滅駆動させて変動中であることを表示する。そして、ゲームの結果が「はずれ」のときは、はずれの結果態様として例えば中央のセグメントを点灯状態にし、ゲームの結果が「当り」のときは、当りの結果態様(特別結果態様)としてはずれの結果態様以外の結果態様(例えば「3」や「7」の数字等)を点灯状態にしてゲーム結果を表示する。
本実施形態の遊技機10では、図示しない発射装置から遊技領域32に向けて遊技球(パチンコ球)が打ち出されることによって遊技が行われる。打ち出された遊技球は、遊技領域32内の各所に配置された障害釘や風車等の方向転換部材によって転動方向を変えながら遊技領域32を流下し、普図始動ゲート34、一般入賞口35、始動入賞口36、普通変動入賞装置37又は特別変動入賞装置38に入賞するか、遊技領域32の最下部に設けられたアウト口39へ流入し遊技領域から排出される。そして、一般入賞口35、始動入賞口36、普通変動入賞装置37又は特別変動入賞装置38に遊技球が入賞すると、入賞した入賞口の種類に応じた数の賞球が、払出制御装置200によって制御される払出ユニットから、前面枠12の上皿21又は下皿23に排出される。
一方、普図始動ゲート34内には、該普図始動ゲート34を通過した遊技球を検出するための非接触型のスイッチなどからなるゲートスイッチ34a(図3参照)が設けられており、遊技領域32内に打ち込まれた遊技球が普図始動ゲート34内を通過すると、ゲートスイッチ34aにより検出されて普図変動表示ゲームが行われる。
また、普図変動表示ゲームを開始できない状態、例えば、既に普図変動表示ゲームが行われ、その普図変動表示ゲームが終了していない状態や、普図変動表示ゲームが当って普通変動入賞装置37が開状態に変換されている場合に、普図始動ゲート34を遊技球が通過すると、普図始動記憶数の上限数未満でならば、普図始動記憶数が加算(+1)されて普図始動記憶が1つ記憶されることとなる。この普図始動入賞の記憶数は、一括表示装置50の始動入賞数報知用の記憶表示部56に表示される。
また、普図始動記憶には、普図変動表示ゲームの当りはずれを決定するための当り判定用乱数値が記憶されるようになっていて、この当り判定用乱数値が判定値と一致した場合に、当該普図変動表示ゲームが当りとなって特定の結果態様(特定結果)が導出されることとなる。
普図変動表示ゲームは、一括表示装置50に設けられた変動表示部(普図表示器)で実行されるようになっている。普この図表示器は、普通識別情報(普図、普通図柄)として点灯状態の場合に当たりを示し、消灯状態の場合にはずれを示すLEDから構成され、このLEDを点滅表示することで普通識別情報の変動表示を行い、所定の変動表示時間の経過後、LEDを点灯又は消灯することで結果を表示するようになっている。
なお、普通識別情報として例えば数字、記号、キャラクタ図柄などを用い、これを所定時間変動表示させた後、停止表示させることにより行うように構成しても良い。この普図変動表示ゲームの停止表示が特定結果となれば、普図の当りとなって、普通変動入賞装置37の一対の可動部材37bが所定時間(例えば、0.3秒間)開放される開状態となる。これにより、普通変動入賞装置37の内部の第2始動入賞口へ遊技球が入賞し易くなり、第2特図変動表示ゲームが実行される回数が多くなる。
普図始動ゲート34への通過検出時に抽出した普図乱数値が当たり値であるときには、普図表示器53に表示される普通図柄が当たり状態で停止し、当たり状態となる。このとき、普通変動入賞装置37は、内蔵されている普電ソレノイド37c(図3参照)が駆動されることにより、可動部材37bが所定の時間(例えば、0.3秒間)だけ開放する状態に変換され、遊技球の入賞が許容される。
始動入賞口36への入賞球及び普通変動入賞装置37への入賞球は、それぞれは内部に設けられた始動口1スイッチ36aと始動口2スイッチ37aによって検出される。始動入賞口36へ入賞した遊技球は第1特図変動表示ゲームの始動入賞球として検出され、所 定の上限数(例えば、4個)を限度に記憶されるとともに、普通変動入賞装置37へ入賞した遊技球は第2特図変動表示ゲームの始動入賞球として検出され、所定の上限数(例えば、4個)を限度に記憶される。
また、この始動入賞球の検出時にそれぞれ大当り乱数値や大当り図柄乱数値、並びに各変動パターン乱数値が抽出され、抽出された乱数値は、遊技制御装置100(図3参照)内の特図記憶領域(RAMの一部)に特図始動記憶として各々所定回数(例えば、最大で4回分)を限度に記憶される。そして、この特図始動記憶の記憶数は、一括表示装置50の始動入賞数報知用の記憶表示部に表示されるとともに、センターケース40の表示装置41においても表示される。
遊技制御装置100は、始動入賞口36若しくは普通変動入賞装置37への入賞、又はそれらの始動記憶に基づいて、一括表示装置50に設けられた特図1表示器または特図2表示器(変動表示装置)で第1または第2特図変動表示ゲームを行う。
第1特図変動表示ゲーム及び第2特図変動表示ゲームは、複数の特別図柄(特図、識別情報)を変動表示したのち、所定の結果態様を停止表示することで行われる。また、表示装置41にて各特図変動表示ゲームに対応して複数種類の識別情報(例えば、数字、記号、キャラクタ図柄など)を変動表示させる飾り特図変動表示ゲームが実行されるようになっている。
そして、特図変動表示ゲームの結果として、特図1表示器若しくは特図2表示器の表示態様が特別結果態様となった場合には、大当りとなって特別遊技状態(いわゆる、大当り状態)となる。また、これに対応して表示装置41の表示態様も特別結果態様となる。
表示装置41における飾り特図変動表示ゲームは、例えば前述した数字等で構成される飾り特別図柄(識別情報)が左(第一特別図柄)、右(第二特別図柄)、中(第三特別図柄)の順に変動表示を開始して、所定時間後に変動している図柄を順次停止させて、特図変動表示ゲームの結果を表示することで行われる。また、表示装置41では、特図始動記憶数に対応する飾り特別図柄による変動表示ゲームを行うとともに、興趣向上のためにキャラクタの出現など多様な演出表示が行われる。
なお、特図1表示器、特図2表示器は、別々の表示器でも良いし同一の表示器でも良いが、各々独立して、また、同時には実行しないように各特図変動表示ゲームが表示される。また、表示装置41も、第1特図変動表示ゲームと第2特図変動表示ゲームで別々の表示装置や別々の表示領域を使用するとしても良いし、同一の表示装置や表示領域を使用するとしても良いが、各々独立して、また、同時には実行しないように飾り特図変動表示ゲームが表示される。また、遊技機10に特図1表示器、特図2表示器を備えずに、表示装置41のみで特図変動表示ゲームを実行するようにしても良い。
また、第2特図変動表示ゲームは、第1特図変動表示ゲームよりも優先して実行されるようになっている。即ち、第1特図変動表示ゲームと第2特図変動表示ゲームの始動記憶がある場合であって、特図変動表示ゲームの実行が可能となった場合は、第2特図変動表示ゲームが実行されるようになっている。
また、第1特図変動表示ゲーム(第2特図変動表示ゲーム)が開始可能な状態で、且つ、始動記憶数が0の状態で、始動入賞口36(若しくは、普通変動入賞装置37)に遊技球が入賞すると、始動権利の発生に伴って始動記憶が記憶されて、始動記憶数が1加算されるととともに、直ちに始動記憶に基づいて、第1特図変動表示ゲーム(第2特図変動表示ゲーム)が開始され、この際に始動記憶数が1減算される。
一方、第1特図変動表示ゲーム(第2特図変動表示ゲーム)が直ちに開始できない状態、例えば、既に第1若しくは第2特図変動表示ゲームが行われ、その特図変動表示ゲーム が終了していない状態や、特別遊技状態となっている場合に、始動入賞口36(若しくは、普通変動入賞装置37)に遊技球が入賞すると、始動記憶数が上限数未満ならば、始動記憶数が1加算されて始動記憶が1つ記憶されることになる。そして、始動記憶数が1以上となった状態で、第1特図変動表示ゲーム(第2特図変動表示ゲーム)が開始可能な状態(前回の特図変動表示ゲームの終了若しくは特別遊技状態の終了)となると、始動記憶数が1減算されるとともに、記憶された始動記憶に基づいて第1特図変動表示ゲーム(第2特図変動表示ゲーム)が開始される。
なお、以下の説明において、第1特図変動表示ゲームと第2特図変動表示ゲームを区別しない場合は、単に特図変動表示ゲームと称する。
なお、特に限定されるわけではないが、上記始動入賞口36内の始動口1スイッチ36a、普通変動入賞装置37内の始動口2スイッチ37a、ゲートスイッチ34a、一般入賞口スイッチ35a〜35n、カウントスイッチ38aには、磁気検出用のコイルを備え該コイルに金属が近接すると磁界が変化する現象を利用して遊技球を検出する非接触型の磁気近接センサ(以下、近接スイッチと称する)が使用されている。遊技機10のガラス枠15等に設けられた前枠開放検出スイッチ63や前面枠(遊技枠)12等に設けられた遊技枠開放検出スイッチ64には、機械的な接点を有するマイクロスイッチを用いることができる。
図3は、本実施形態のパチンコ遊技機10の制御システムのブロック図である。
遊技機10は遊技制御装置100を備え、遊技制御装置100は、遊技を統括的に制御する主制御装置(主基板)であって、遊技用マイクロコンピュータ(以下、遊技用マイコンと称する)111を有するCPU部110と、入力ポートを有する入力部120と、出力ポートやドライバなどを有する出力部130、CPU部110と入力部120と出力部130との間を接続するデータバス140などからなる。
上記CPU部110は、アミューズメントチップ(IC)と呼ばれる遊技用マイコン(CPU)111と、入力部120内の近接スイッチ用のインタフェースチップ(近接I/F)121からの信号(始動入賞検出信号)を論理反転して遊技用マイコン111に入力させるインバータなどからなる反転回路112と、水晶振動子のような発振子を備え、CPUの動作クロックやタイマ割込み、乱数生成回路の基準となるクロックを生成する発振回路(水晶発振器)113などを有する。遊技制御装置100及び該遊技制御装置100によって駆動されるソレノイドやモータなどの電子部品には、電源装置400で生成されたDC32V,DC12V,DC5Vなど所定のレベルの直流電圧が供給されて動作可能にされる。
電源装置400は、24Vの交流電源から上記DC32Vの直流電圧を生成するAC−DCコンバータやDC32Vの電圧からDC12V,DC5Vなどのより低いレベルの直流電圧を生成するDC−DCコンバータなどを有する通常電源部410と、遊技用マイコン111の内部のRAMに対して停電時に電源電圧を供給するバックアップ電源部420と、停電監視回路や初期化スイッチを有し遊技制御装置100に停電の発生、回復を知らせる停電監視信号や初期化スイッチ信号、リセット信号などの制御信号を生成して出力する制御信号生成部430などを備える。
この実施形態では、電源装置400は、遊技制御装置100と別個に構成されているが、バックアップ電源部420及び制御信号生成部430は、別個の基板上あるいは遊技制御装置100と一体、即ち、主基板上に設けるように構成してもよい。遊技盤30及び遊技制御装置100は機種変更の際に交換の対象となるので、実施例のように、電源装置400若しくは主基板とは別の基板にバックアップ電源部420及び制御信号生成部430を設けることにより、交換の対象から外しコストダウンを図ることができる。
上記バックアップ電源部420は、電解コンデンサのような大容量のコンデンサ1つで構成することができる。バックアップ電源は、遊技制御装置100の遊技用マイコン111(特に内蔵RAM)に供給され、停電中あるいは電源遮断後もRAMに記憶されたデータが保持されるようになっている。制御信号生成部430は、例えば通常電源部410で生成された32Vの電圧を監視してそれが例えば17V以下に下がると停電発生を検出して停電監視信号を変化させるとともに、所定時間後にリセット信号を出力する。また、電源投入時や停電回復時にもその時点から所定時間経過後にリセット信号を出力する。
初期化スイッチ信号は初期化スイッチがオン状態にされたときに生成される信号で、遊技用マイコン111内のRAM111C及び払出制御装置200内のRAMに記憶されている情報を強制的に初期化する。特に限定されるわけではないが初期化スイッチ信号は電源投入時に読み込まれ、停電監視信号は遊技用マイコン111が実行するメインプログラムのメインループの中で繰り返し読み込まれる。リセット信号は強制割込み信号の一種であり、制御システム全体をリセットさせる。
遊技用マイコン111は、遊技を統括的に制御する制御手段を構成している。具体的には、遊技用マイコン111は、CPU(中央処理ユニット:マイクロプロセッサ)111A、読出し専用のROM(リードオンリメモリ)111B及び随時読出し書込み可能なRAM(ランダムアクセスメモリ)111Cを備える。
ROM111Bは、遊技制御のための不変の情報(プログラム、固定データ、各種乱数の判定値等)を不揮発的に記憶し、RAM111Cは、遊技制御時にCPU111Aの作業領域や各種信号や乱数値の記憶領域として利用される。ROM111B又はRAM111Cとして、EEPROMのような電気的に書換え可能な不揮発性メモリを用いてもよい。
また、ROM111Bは、例えば、特図変動表示ゲームの実行時間、演出内容、リーチ状態の発生の有無などを規定する変動パターンを決定するための変動パターンテーブルを記憶している。
変動パターンテーブルとは、始動記憶として記憶されている変動パターン乱数1〜3をCPU111Aが参照して変動パターンを決定するためのテーブルである。また、変動パターンテーブルには、結果がはずれとなる場合に選択されるはずれ変動パターンテーブル、結果が15R当りや2R当りとなる場合に選択される大当り変動パターンテーブル等が含まれる。さらに、これらのパターンテーブルには、後半変動パターンテーブル、前半変動パターンテーブルが含まれている。
また、リーチ(リーチ状態)とは、表示状態が変化可能な表示装置を有し、該表示装置が時期を異ならせて複数の表示結果を導出表示し、該複数の表示結果が予め定められた特別結果態様となった場合に、遊技状態が遊技者にとって有利な遊技状態(特別遊技状態)となる遊技機10において、複数の表示結果の一部がまだ導出表示されていない段階で、既に導出表示されている表示結果が特別結果態様となる条件を満たしている表示状態をいう。また、別の表現をすれば、リーチ状態とは、表示装置の変動表示制御が進行して表示結果が導出表示される前段階にまで達した時点でも、特別結果態様となる表示条件からはずれていない表示態様をいう。そして、例えば、特別結果態様が揃った状態を維持しながら複数の変動表示領域による変動表示を行う状態(いわゆる全回転リーチ)もリーチ状態に含まれる。また、リーチ状態とは、表示装置の表示制御が進行して表示結果が導出表示される前段階にまで達した時点での表示状態であって、表示結果が導出表示される以前に決定されている複数の変動表示領域の表示結果の少なくとも一部が特別結果態様となる条件を満たしている場合の表示状態をいう。
よって、例えば、特図変動表示ゲームに対応して表示装置に表示される飾り特図変動表示ゲームが、表示装置における左、中、右の変動表示領域の各々で所定時間複数の識別情報を変動表示した後、左、右、中の順で変動表示を停止して結果態様を表示するものである場合、左、右の変動表示領域で、特別結果態様となる条件を満たした状態(例えば、同一の識別情報)で変動表示が停止した状態がリーチ状態となる。またこの他に、すべての変動表示領域の変動表示を一旦停止した時点で、左、中、右のうち何れか二つの変動表示領域で特別結果態様となる条件を満たした状態(例えば、同一の識別情報となった状態、ただし特別結果態様は除く)をリーチ状態とし、このリーチ状態から残りの一つの変動表示領域を変動表示するようにしても良い。
そして、このリーチ状態には複数のリーチ演出が含まれ、特別結果態様が導出される可能性が異なる(信頼度が異なる)リーチ演出として、ノーマルリーチ、スペシャル1リーチ、スペシャル2リーチ、スペシャル3リーチ、プレミアリーチ等が設定されている。なお、信頼度は、リーチなし<ノーマルリーチ<スペシャル1リーチ<スペシャル2リーチ<スペシャル3リーチ<プレミアリーチの順に高くなるようになっている。また、このリーチ状態は、少なくとも特図変動表示ゲームで特別結果態様が導出される場合(大当りとなる場合)における変動表示態様に含まれるようになっている。即ち、特図変動表示ゲームで特別結果態様が導出されないと判定すると(はずれとなる場合)における変動表示態様に含まれることもある。よって、リーチ状態が発生した状態は、リーチ状態が発生しない場合に比べて大当りとなる可能性の高い状態である。
ここで、CPU111Aは、始動記憶手段としてのRAM111Cに記憶された始動記憶に基づく特図変動表示ゲームにおいてリーチ状態を発生可能なリーチ状態発生手段をなす。
CPU111Aは、ROM111B内の遊技制御用プログラムを実行して、払出制御装置200や演出制御装置300に対する制御信号(コマンド)を生成したりソレノイドや表示装置の駆動信号を生成して出力して遊技機10全体の制御を行う。
また、図示しないが、遊技用マイコン111は、特図変動表示ゲームの大当り判定用乱数や大当りの図柄を決定するための大当り図柄用乱数、特図変動表示ゲームでの変動パターン(各種リーチやリーチ無しの変動表示における変動表示ゲームの実行時間等を含む)を決定するための変動パターン乱数、普図変動表示ゲームの当たり判定用乱数等を生成するための乱数生成回路と、発振回路113からの発振信号(原クロック信号)に基づいてCPU111Aに対する所定周期(例えば、4ミリ秒)のタイマ割込み信号や乱数生成回路の更新タイミングを与えるクロックを生成するクロックジェネレータを備えている。
また、CPU111Aは、後述する特図ゲーム処理における始動口スイッチ監視処理(ステップA1)や特図普段処理(ステップA9)にて、ROM111Bに記憶されている複数の変動パターンテーブルの中から、何れか一の変動パターンテーブルを取得する。具体的には、CPU111Aは、特図変動表示ゲームの遊技結果(大当り或いははずれ)や、現在の遊技状態としての特図変動表示ゲームの確率状態(通常確率状態或いは高確率状態)、現在の遊技状態としての普通変動入賞装置37の動作状態(通常動作状態或いは時短動作状態)、始動記憶数などに基づいて、複数の変動パターンテーブルの中から、何れか一の変動パターンテーブルを選択して取得する。
払出制御装置200は、図示しないが、CPU、ROM、RAM、入力インタフェース、出力インタフェース等を備え、遊技制御装置100からの賞球払出し指令(コマンドやデータ)に従って、払出ユニットの払出モータを駆動させ、賞球を払い出させるための制御を行う。また、払出制御装置200は、カードユニットからの貸球要求信号に基づいて払出ユニットの払出モータを駆動させ、貸球を払い出させるための制御を行う。
遊技用マイコン111の入力部120には、始動入賞口36内の始動口1スイッチ36a、普通変動入賞装置37内の始動口2スイッチ37a、普図始動ゲート34内のゲートスイッチ34a、一般入賞口スイッチ35a〜35n、カウントスイッチ38aに接続され、これらのスイッチから供給されるハイレベルが11Vでロウレベルが7Vのような負論理の信号が入力され、0V−5Vの正論理の信号に変換するインタフェースチップ(近接I/F)121が設けられている。近接I/F121は、入力の範囲が7V−11Vとされることで、近接スイッチのリード線が不正にショートされたり、スイッチがコネクタから外されたり、リード線が切断されてフローティングになったような異常な状態を検出することができ、異常検知信号を出力するように構成されている。
近接I/F121の出力はすべて第2入力ポート122へ供給されデータバス140を介して遊技用マイコン111に読み込まれるとともに、主基板100から中継基板70を介して図示しない試射試験装置へ供給されるようになっている。また、近接I/F121の出力のうち始動口1スイッチ36aと始動口2スイッチ37aの検出信号は、第2入力ポート122の他、反転回路112を介して遊技用マイコン111へ入力されるように構成されている。反転回路112を設けているのは、遊技用マイコン111の信号入力端子が、マイクロスイッチなどからの信号が入力されることを想定し、かつ負論理、即ち、ロウレベル(0V)を有効レベルとして検知するように設計されているためである。
従って、始動口1スイッチ36aと始動口2スイッチ37aとしてマイクロスイッチを使用する場合には、反転回路112を設けずに直接遊技用マイコン111へ検出信号を入力させるように構成することができる。つまり、始動口1スイッチ36aと始動口2スイッチ37aからの負論理の信号を直接遊技用マイコン111へ入力させたい場合には、近接スイッチを使用することはできない。上記のように近接I/F121は、信号のレベル変換機能を有する。このようなレベル変換機能を可能にするため、近接I/F121には、電源装置400から通常のICの動作に必要な例えば5Vのような電圧の他に、12Vの電圧が供給されるようになっている。
また、入力部120には、遊技機10の前面枠12等に設けられた不正検出用の磁気センサスイッチ61及び振動センサスイッチ62からの信号及び上記近接I/F121により変換された始動入賞口36内の始動口1スイッチ36a、普通変動入賞装置37内の始動口2スイッチ37a、ゲートスイッチ34a、一般入賞口スイッチ35a〜35n、カウントスイッチ38aからの信号を取り込んでデータバス140を介して遊技用マイコン111に供給する第2入力ポート122が設けられている。第2入力ポート122が保持しているデータは、遊技用マイコン111が第2入力ポート122に割り当てられているアドレスをデコードすることによってイネーブル信号CE1をアサート(有効レベルに変化)することよって、読み出すことができる。後述の他のポートも同様である。
さらに、入力部120には、遊技機10のガラス枠15等に設けられた前枠開放検出スイッチ63及び前面枠(遊技枠)12等に設けられた遊技枠開放検出スイッチ64からの信号及び払出制御装置200からの払出異常を示すステータス信号や払出し前の遊技球の不足を示すシュート球切れスイッチ信号、オーバーフローを示すオーバーフロースイッチ信号を取り込んでデータバス140を介して遊技用マイコン111に供給する第1入力ポート123が設けられている。オーバーフロースイッチ信号は、下皿23に遊技球が所定量以上貯留されていること(満杯になったこと)を検出したときに出力される信号である。
また、入力部120には、電源装置400からの停電監視信号や初期化スイッチ信号、リセット信号などの信号を遊技用マイコン111等に入力するためのシュミットトリガ回路124が設けられており、シュミットトリガ回路124はこれらの入力信号からノイズを除去する機能を有する。電源装置400からの信号のうち停電監視信号と初期化スイッチ信号は、一旦第1入力ポート123に入力され、データバス140を介して遊技用マイコン111に取り込まれる。つまり、前述の各種スイッチからの信号と同等の信号として扱われる。遊技用マイコン111に設けられている外部からの信号を受ける端子の数には制約があるためである。
一方、シュミットトリガ回路124によりノイズ除去されたリセット信号RSTは、遊技用マイコン111に設けられているリセット端子に直接入力されるとともに、出力部130の各ポートに供給される。また、リセット信号RSTは出力部130を介さずに直接中継基板70に出力することで、試射試験装置へ出力するために中継基板70のポート(図示省略)に保持される試射試験信号をオフするように構成されている。また、リセット信号RSTを中継基板70を介して試射試験装置へ出力可能に構成するようにしてもよい。なお、リセット信号RSTは入力部120の各ポート122,123には供給されない。リセット信号RSTが入る直前に遊技用マイコン111によって出力部130の各ポートに設定されたデータはシステムの誤動作を防止するためリセットする必要があるが、リセット信号RSTが入る直前に入力部120の各ポートから遊技用マイコン111が読み込んだデータは、遊技用マイコン111のリセットによって廃棄されるためである。
出力部130は、データバス140に接続され払出制御装置200へ出力する4ビットのデータ信号とデータの有効/無効を示す制御信号(データストローブ信号)及び演出制御装置300へ出力するデータストローブ信号SSTBを生成する第1出力ポート131と、演出制御装置300へ出力する8ビットのデータ信号を生成する第2出力ポート132とを備える。遊技制御装置100から払出制御装置200及び演出制御装置300へは、パラレル通信でデータが送信される。また、出力部130には、演出制御装置300の側から遊技制御装置100へ信号を入力できないようにするため、即ち、片方向通信を担保するために第1出力ポート131からの上記データストローブ信号SSTB及び第2出力ポート132からの8ビットのデータ信号を出力する単方向のバッファ133が設けられている。なお、第1出力ポート131から払出制御装置200へ出力する信号に対してもバッファを設けるようにしてもよい。
さらに、出力部130には、データバス140に接続され図示しない認定機関の試射試験装置へ変動表示ゲームの特図図柄情報を知らせるデータや大当りの確率状態を示す信号などを中継基板70を介して出力するバッファ134が実装可能に構成されている。このバッファ134は遊技店に設置される実機(量産販売品)としてのパチンコ遊技機の遊技制御装置(主基板)には実装されない部品である。なお、前記近接I/F121から出力される始動口スイッチなど加工の必要のないスイッチの検出信号は、バッファ134を通さずに中継基板70を介して試射試験装置へ供給される。
一方、磁気センサスイッチ61や振動センサスイッチ62のようにそのままでは試射試験装置へ供給できない検出信号は、一旦遊技用マイコン111に取り込まれて他の信号若しくは情報に加工されて、例えば遊技機が遊技制御できない状態であることを示すエラー信号としてデータバス140からバッファ134、中継基板70を介して試射試験装置へ供給される。なお、中継基板70には、上記バッファ134から出力された信号を取り込んで試射試験装置へ供給するポートや、バッファを介さないスイッチの検出信号の信号線を中継して伝達するコネクタなどが設けられている。中継基板70上のポートには、遊技用マイコン111から出力されるチップイネーブル信号CEも供給され、該信号CEにより選択制御されたポートの信号が試射試験装置へ供給されるようになっている。
また、出力部130には、データバス140に接続され特別変動入賞装置38を開成させるソレノイド(大入賞口ソレノイド)38bや普通変動入賞装置37の可動部材37bを開成させるソレノイド(普電ソレノイド)37cの開閉データと、一括表示装置50のLEDのカソード端子が接続されているデジット線のオン/オフデータを出力するための第3出力ポート135、一括表示装置50に表示する内容に応じてLEDのアノード端子が接続されているセグメント線のオン/オフデータを出力するための第4出力ポート136、大当り情報など遊技機10に関する情報を外部情報端子71へ出力するための第5出力ポート137が設けられている。外部情報端子71から出力された遊技機10に関する情報は、例えば遊技店に設置された情報収集端末や遊技場内部管理装置(図示省略)に供給される。
さらに、出力部130には、第3出力ポート135から出力される大入賞口ソレノイド38bの開閉データ信号を受けてソレノイド駆動信号や普電ソレノイド37cの開閉データ信号を受けてソレノイド駆動信号を生成し出力する第1ドライバ(駆動回路)138a、第3出力ポート135から出力される一括表示装置50の電流引き込み側のデジット線のオン/オフ駆動信号を出力する第2ドライバ138b、第4出力ポート136から出力される一括表示装置50の電流供給側のセグメント線のオン/オフ駆動信号を出力する第3ドライバ138c、第5出力ポート137から管理装置等の外部装置へ供給する外部情報信号を外部情報端子71へ出力する第4ドライバ138dが設けられている。
上記第1ドライバ138aには、32Vで動作するソレノイドを駆動できるようにするため、電源電圧としてDC32Vが電源装置400から供給される。また、一括表示装置50のセグメント線を駆動する第3ドライバ138cには、DC12Vが供給される。デジット線を駆動する第2ドライバ138bは、表示データに応じたデジット線を電流で引き抜くためのものであるため、電源電圧は12V又は5Vのいずれであってもよい。12Vを出力する第3ドライバ138cによりセグメント線を介してLEDのアノード端子に電流を流し込み、接地電位を出力する第2ドライバ138bによりカソード端子よりセグメント線を介して電流を引き抜くことで、ダイナミック駆動方式で順次選択されたLEDに電源電圧が流れて点灯される。外部情報信号を外部情報端子71へ出力する第4ドライバ138dは、外部情報信号に12Vのレベルを与えるため、DC12Vが供給される。なお、バッファ134や第3出力ポート135、第1ドライバ138a等は、遊技制御装置100の出力部130、即ち、主基板ではなく、中継基板70側に設けるようにしてもよい。
さらに、出力部130には、外部の検査装置500へ各遊技機の識別コードやプログラムなどの情報を送信するためのフォトカプラ139が設けられている。フォトカプラ139は、遊技用マイコン111が検査装置500との間でシリアル通信によってデータの送受信を行なえるように双方通信可能に構成されている。なお、かかるデータの送受信は、通常の汎用マイクロプロセッサと同様に遊技用マイコン111が有するシリアル通信端子を利用して行なわれるため、入力ポート122,123のようなポートは設けられていない。
次に、遊技制御装置100において行われる遊技制御について説明する。
遊技制御装置100の遊技用マイコン111のCPU111Aでは、普図始動ゲート34に備えられたゲートスイッチ34aからの遊技球の検出信号の入力に基づき、普図の当たり判定用乱数値を抽出してROM111Bに記憶されている判定値と比較し、普図変動表示ゲームの当たり外れを判定する処理を行う。そして、普図表示器53に、識別図柄を所定時間変動表示した後、停止表示する普図変動表示ゲームを表示する処理を行う。この普図変動表示ゲームの結果が当たりの場合は、普図表示器53に特別の結果態様を表示するとともに、普電ソレノイド37cを動作させ、普通変動入賞装置37の開閉部材37b、37bを所定時間(例えば、0.3秒間)上述のように開放する制御を行う。
なお、普図変動表示ゲームの結果がはずれの場合は、普図表示器53にはずれの結果態様を表示する制御を行う。
また、始動入賞口36に備えられた始動口1スイッチ36aからの遊技球の検出信号の入力に基づき始動入賞(始動記憶)を記憶し、この始動記憶に基づき、第1特図変動表示ゲームの大当たり判定用乱数値を抽出してROM111Bに記憶されている判定値と比較し、第1特図変動表示ゲームの当たり外れを判定する処理を行う。従って、CPU111Aは、乱数値の取得条件検出手段および乱数値取得手段として機能する。
また、普通変動入賞装置37に備えられた始動口2スイッチ37aからの遊技球の検出信号の入力に基づき始動記憶を記憶し、この始動記憶に基づき、第2特図変動表示ゲームの大当たり判定用乱数値を抽出してROM111Bに記憶されている判定値と比較し、第2特図変動表示ゲームの当たり外れを判定する処理を行う。
そして、遊技制御装置100のCPU111Aは、上記の第1特図変動表示ゲームや第2特図変動表示ゲームの判定結果を含む制御信号(演出制御コマンド)を、演出制御装置300に出力する。そして、一括表示装置50の特図1表示器や特図2表示器に、識別図柄を所定時間変動表示した後、停止表示する特図変動表示ゲームを表示する処理を行う。従って、CPU111Aは、乱数値を判定して遊技に係わる決定処理を行う遊技結果決定手段として機能する。
また、演出制御装置300は、遊技制御装置100からの制御信号に基づき、表示装置41で特図変動表示ゲームに対応した飾り特図変動表示ゲームを表示する処理を行う。
さらに、演出制御装置300では、遊技制御装置100からの制御信号に基づき、スピーカ19a,19bからの音の出力、各種LEDの発光を制御する処理等を行う。
そして、遊技制御装置100のCPU111Aは、特図変動表示ゲームの結果が当たりの場合は、特図1表示器や特図2表示器に特別結果態様を表示するとともに、特別遊技状態を発生させる処理を行う。
特別遊技状態を発生させる処理においては、CPU111Aは、例えば、大入賞口ソレノイド38bにより特別変動入賞装置38の開閉扉38cを開放させ、大入賞口内への遊技球の流入を可能とする制御を行う。
そして、大入賞口に所定個数(例えば、10個)の遊技球が入賞するか、大入賞口の開放から所定時間(例えば、25秒又は1秒)が経過するかの何れかの条件が達成されるまで大入賞口を開放することを1ラウンドとし、これを所定ラウンド回数(例えば、15回又は2回)継続する(繰り返す)制御(サイクル遊技)を行う。
また、特図変動表示ゲームの結果がはずれの場合は、特図1表示器や特図2表示器にはずれの結果態様を表示する制御を行う。
また、遊技制御装置100は、特図変動表示ゲームの結果態様に基づき、特別遊技状態の終了後に、遊技状態として確変状態を発生可能となっている。
この確変状態は、特図変動表示ゲームにて当り結果となる確率が、通常確率状態に比べて高い状態(高確率状態)である。また、第1特図変動表示ゲーム及び第2特図変動表示ゲームのどちらの特図変動表示ゲームの結果態様に基づき確変状態となっても、第1特図変動表示ゲーム及び第2特図変動表示ゲームの両方が確変状態となる。
また、遊技制御装置100は、特図変動表示ゲームの結果態様に基づき、特別遊技状態の終了後に、遊技状態として時短状態を発生可能となっている。
この時短状態においては、普図変動表示ゲーム及び普通変動入賞装置37を時短動作状態とする制御を行う。具体的には、時短状態においては、上述の普図変動表示ゲームの実行時間が第1の変動表示時間よりも短い第2の変動表示時間となるように制御され(例えば、10秒が1秒)、これにより、単位時間当りの普通変動入賞装置37の開放回数が実質的に多くなるように制御される。また、時短状態においては、普図変動表示ゲームが当り結果となって普通変動入賞装置37が開放される場合に、開放時間が通常状態の第1開放時間よりも長い第2開放時間となるように制御される(例えば、0.3秒が1.7秒)。また、時短状態においては、普図変動表示ゲームの1回の当り結果に対して、普通変動入賞装置37の開放回数が1回の第1開放回数ではなく、2回以上の複数回(例えば、3回)の第2開放回数に設定される。
なお、普図変動表示ゲームの実行時間を第2の変動表示時間(例えば、1秒)とする制御と、普通変動入賞装置37の開放態様を開放時間が第2開放時間(例えば、1.7秒)とし、且つ、普図変動表示ゲームの1回の当り結果に対する開放回数が第2開放回数(例えば、3回)とする制御は、何れか一方のみを行っても良いし、両方を行っても良い。また、時短動作状態においては、普図変動表示ゲームの当り結果となる確率が通常動作状態より高くなるように制御してもよい。
これにより、普通変動入賞装置37に遊技球が入賞し易くなり、第2特図変動表示ゲームの始動が容易となる。
なお、確変状態と普図変動表示ゲーム及び普通変動入賞装置37の時短動作状態は、それぞれ独立して発生可能であり、両方を同時に発生することも可能であるし、一方のみを発生させることも可能である。
次に、図4を用いて、図3の遊技機制御システムを構成する遊技用マイコン111の構成について説明する。図4には遊技用マイコン111のブロック構成図が示されている。遊技用マイコン111は、いわゆるアミューズチップ用のIC(以下、遊技用演算処理装置600と称する)として製造され、遊技制御を行う遊技領域部600Aと情報管理を行う情報領域部600Bとに区分することができる。
このうち遊技領域部600Aは、CPUコア601、ユーザプログラムROM602及びHWパラメータROM603(総称して、ROM)、ユーザワークRAM604及びミラードRAM605(総称して、RAM)、外部バスインタフェース(I/F)606、バス切り換え回路607、乱数生成回路608、クロックジェネレータ609、リセット/割込制御回路610、アドレスデコーダ611、出力制御回路612、ブートブロック613、復号化・ROM書込回路614、並びにバス615などにより構成される。この実施例の遊技用演算処理装置600においては、乱数生成回路608がオンチップの回路として形成されているが、乱数生成回路608はチップ外部に別個のICとして形成されていてもよい。
CPUコア601は、各種のレジスタ群、演算・論理部(ALU)、命令レジスタ(IR)、デコーダ、プログラムカウンタ(PC)、スタックポインタ(SP)、これらを結ぶデータバス、アドレスバス及び各種制御部をコア内に含み、例えば、Z80アーキテクチャで構成される。CPUコア601(111A)は、ユーザプログラムROM602(111B)に格納されている遊技制御プログラムや演出制御プログラムをロードして実行することによって、遊技機10の制御に必要な各種機能をソフト的に実現する。ユーザプログラムROM602に格納されている制御プログラムは、遊技用演算処理装置600が遊技制御装置100に備わる遊技用マイコン111である場合には、遊技の制御を行う遊技制御プログラムであり、遊技用演算処理装置600が払出制御装置200の遊技用マイコンである場合には、遊技球の払出しを行う球払出装置を制御する払出制御プログラムである。
HWパラメータROM603は、正当性確認情報を格納するメモリである。正当性確認情報とは、遊技用演算処理装置600の正当なものであるかのチェックを行うための情報であり、例えば、パチンコ遊技機10の一意な識別子を示す固有ID、メーカコード(パチンコ遊技機の製造メーカ毎に割り振られた固有の製造メーカの一意な識別子)、パチンコ遊技機のランク(1種、2種等)を示すランクコード、製造メーカがパチンコ遊技機の種類に設定する機種コード、検査番号を示す検査コード、電源投入時にRAMをバックアップするか否かを示すRAMバックアップコード、貸出料金設定スイッチによって設定された貸出料金等である。また、HWパラメータROM603には、最初に貸出情報要求を送信した検査装置の一意な識別子である固有IDが一つのみ記憶される。第3者機関又はパチンコ遊技機の製造メーカがユーザプログラムROM602にプログラムを書き込む際に、正当性確認情報がHWパラメータROM603に書き込まれる。
遊技用演算処理装置600の正当性のチェックを行う場合、遊技用演算処理装置600の電源立ち上がり時に、遊技用演算処理装置600自身が演算した演算値と、正当性確認情報(すなわち、第3者機関等によって予め設定された結果値)とを比較判定することで、遊技用演算処理装置600が正規のものであるか否かチェックする構成になっている。
ユーザワークRAM604(111C)は、遊技領域部600Aにおけるプログラムに基づく処理を実行する際にワークエリア(作業領域)として用いられるものである。ミラードRAM605は、クロックの立ち下がり時にユーザワークエリアに記憶された情報を複製した情報を記憶する(CPUコアがZ80の場合には、クロックの立ち上がり時に処理を実行するため、同期して動くことがないようにしている。)。
外部バスインタフェース606は、メモリリクエスト信号MREQ、入出力リクエスト信号IORQ、メモリ書込み信号WR、メモリ読み出し信号RD及びモード信号MODEなどのインタフェースをとるものであり、また、バス切り換え回路607は、16ビットのアドレス信号A0〜A15や8ビットのデータ信号D0〜D7のインタフェースをとるものである。例えば、MODE信号を[H]レベルにした状態で、アドレス信号A0〜A15を順次にインクリメントしながら、データ信号D0〜D7を加えると、ユーザプログラムROM602への書き込みモードとなってパチンコ遊技機1の製造メーカ又は第3者機関によるプログラムの書き込みが可能になる。
なお、書き込みモードはプログラムの書き込みを可能にするものであり、ブートブロック613に記憶されるブートプログラムを書き込みできるようにするものではない。また、ユーザプログラムROM602へのプログラムの書き込みが終了すると、HWパラメータROM603の所定領域に書込終了コードが記録(例えば、所定のコード若しくは所定ビットを物理的に切断することで記録)されるようになっており、HWパラメータROM603に書込終了コードが記録されている場合には、ユーザプログラムROM602への新たなプログラムの書き込みができないようになっている。
乱数生成回路608は、遊技の実行過程において遊技制御に係わる乱数(乱数は、当りの決定や停止時の図柄の決定等に使用)を生成するもので、数学的手法(例えば、合同法あるいはM系列法等)を利用して一様性乱数を生成するほか、カウンタ方式で乱数を生成する機能を有している。なお、遊技用演算処理装置600が払出制御装置200に備わる遊技用マイコン211である場合には、乱数生成回路608はなくてもよい。
クロックジェネレータ609は、内部クロック信号を生成するとともに、生成されたクロック信号をさらに分周して遊技制御に必要なタイミングに係わる信号を発生させる(詳細は図48にて後述)。リセット/割込制御回路(割込み信号発生手段)610は図示しない割込み信号発生回路からのリセット割込み信号RSTを検出してCPUコア601や乱数更新コントローラ608aに知らせる。アドレスデコーダ611は内蔵デバイス及び内蔵コントロール/ステータスレジスタ群のロケーションをメモリマップドI/O方式及びI/OマップドI/O方式によりデコードする。
出力制御回路612はアドレスデコーダ611からの信号制御を行って外部端子より8ビットのチップセレクト信号(CS0〜CS7)を外部に出力する。ブートブロック613は、ブートプログラムを記憶し、電源投入時にユーザワークRAM604に記憶された情報を初期化する。
復号化・ROM書込回路614は、ユーザプログラムROM602及びHWパラメータROM603への書込みモードの際に使用されるもので、モード信号MODEが[H]レベルになっている間、バス切り換え回路607を介してアドレス信号A0〜A15やデータ信号D0〜D7を取り込み、そのデータ信号D0〜D7に含まれる情報(暗号化されたプログラム及び暗号化された変更後の固有ID)を復号化処理した後、バス615を介してユーザプログラムROM602及びHWパラメータROM603に出力する(書き込む)ものである。バス615はデータバス、アドレスバス及び制御バスを含むものであり、バス615には情報領域部600Bも接続されている。
遊技用演算処理装置600における情報管理を行う情報領域部600Bは、HPGプログラムROM616、IDプロパティメモリ617、バスモニタ回路618、HPGワークRAM619、制御回路620、外部通信制御回路621、バス622、及び遊技領域600Aから延びるバス615の一部を含んで構成される。
情報領域部600B内のHPGプログラムROM616は、各種検査動作を行うHPGプログラムが格納される。IDプロパティメモリ617には、検査装置(図示省略)から外部通信制御回路621を介して受信した要求に基づいて、HWパラメータROM603に記憶されている情報を検査装置にすぐに出力できるように、遊技用演算処理装置600の電源投入時(システムリセット時)にHWパラメータに記憶されている情報を複製して記憶する。なお、IDプロパティメモリ617は、遊技領域600A側及び情報領域部600B側の双方よりアクセスが可能な構成になっている。
バスモニタ回路618は、情報領域部600B側より遊技領域部600A側のバス615の状態監視及び制御を行う。ここでの制御とは、HWパラメータROM603の内容をIDプロパティメモリ617に複写する際のタイミング制御や、ユーザプログラムROM602に格納されたプログラムを外部に出力する際(遊技領域部600A側のバス615を開放してユーザプログラムROM602からプログラムを読み込んで情報領域部600B側より外部に出力する際)のタイミング制御である。なお、プログラムは、外部通信制御回路621で暗号化されてから出力される。HPGワークRAM619は、情報領域部600Bにおけるプログラムに基づく処理を実行する際にワークエリア(作業領域)として用いられる。
制御回路620は情報領域部600B側を制御するもので、バッファメモリを有している。制御回路620は、例えば、バスモニタ回路618を介してCPUコア601の動作を監視し、非動作中に遊技領域部600AのユーザワークRAM604に記憶された内容をミラードRAM605へコピーする。また、検査装置からの要求に応答して情報領域部600BのIDプロパティメモリ617の内容を外部へ転送したり、プログラム要求に応答してバスモニタ回路618を介してユーザプログラムROM602内のプログラムを外部へ転送したりする。制御回路620のメモリは、転送時のタイミング調節のために用いられる。
外部通信制御回路621は検査装置との通信を行うもので、例えば、外部からの指令に基づいて遊技用演算処理装置600内に格納されている情報(例えば、固有ID、プログラム、実払出数等)を暗号化した後、外部へ転送する等の処理を行う。遊技用演算処理装置600では、遊技領域部600Aと情報領域部600Bがバスモニタ回路618を介して独立して動作する。すなわち、情報領域部600B側は遊技領域部600AにおけるCPUコア601の作動に関係なく(プログラム実行に関係なく)動作可能である。なお、遊技領域部600A及び情報領域部600Bを夫々構成する各種デバイスは共通の半導体基板上に実装しワンチップ化してパッケージングされる。
次に、遊技用演算処理装置600内に設けられ、当り乱数等の生成に使用される乱数生成回路およびクロックジェネレータについて、詳細に説明する。
図5は、本発明の実施形態の遊技用演算処理装置600における乱数生成回路608の詳細を示すブロック図である。遊技用演算処理装置600には、乱数生成回路608の他、電源装置400内のリセット信号生成回路からのリセット信号RSTを入力とし乱数生成回路608や遊技用演算処理装置600に対する割込み信号を生成するリセット割込み制御回路610、外部の水晶発振回路113から供給される原クロック信号CLKに基づいて遊技用演算処理装置600内で使用する複数のクロック信号を生成するクロックジェネレータ609が設けられている。
クロックジェネレータ609は、CTC回路609aと分周回路609bとを備えており、分周回路609bは、遊技用演算処理装置600の外部の水晶発振回路113から入力された原クロック信号CLKを分周し、原クロック信号の周期の2倍の周期のクロック信号φ1を生成して乱数生成回路608のコントローラ608aへ供給するとともに、原クロック信号CLKよりも周期の長いクロック信号φ2を生成しCTC回路609aに入力する。CTC(Counter/Timer Circuit)回路609aは、分周回路609bからのクロック信号φ2に基づいて、CPU601に対して所定周期(例えば、2ミリ秒)のタイマ割込み信号(CTC1)および乱数コントローラ608aへ供給する乱数更新のトリガを与える信号CTC2を発生する。従って、CTC回路609aから乱数コントローラ608aへ供給される信号CTC2は、乱数値を更新させる更新指令信号とみなせる。なお、CTC回路609aは、発生する信号CTC1,CTC2の周期を自由に設定できるように構成されている。
乱数生成回路(乱数生成手段)608は、乱数更新コントローラ608a、第1乱数ブロック608b、第2乱数ブロック608c、第3乱数ブロック608d、第4乱数ブロック608e、第5乱数ブロック608f、第6乱数ブロック608g、及び乱数回路608hにより構成される。このうち、第2乱数ブロック608c〜第6乱数ブロック608gは第1乱数ブロック608bと同様な構成とされ、乱数回路608hは乱数カウンタとワークエリア等CPU111Aが操作不能な回路のみからなる完全ハード乱数回路として構成されている。
そして、この実施例では、例えば第1乱数ブロック608bは大当り乱数(特図)の生成に、第2乱数ブロック608cは当り乱数(普図)の生成に、第3乱数ブロック608dは大当り図柄乱数1の生成に、第4乱数ブロック608eは大当り図柄乱数2の生成に、それぞれ使用される。
乱数更新コントローラ(更新制御手段)608aは、遊技制御の実行過程において遊技価値(例えば、大当り)を付与するか否か等の判定や制御状態を決定するのに用いる乱数の生成のための演算処理を行うもので、一様性乱数を生成する数学的手法(例えば、合同法あるいはM系列法等)を利用して乱数を生成する。また、乱数更新コントローラ608aには、リセット割込み制御回路610からの割込み信号、クロックジェネレータ609を構成する信号発生手段としてのCTC回路609aおよび分周回路609bからの信号(CTC2,φ1)が入力可能となっている。
なお、特に限定されるものではないが、本実施例の乱数生成回路608は、後述のように、クロックジェネレータ609内のCTC回路609aからの信号CTC2の入力とCPU601による乱数更新トリガレジスタ(608b3)への設定のいずれによっても乱数の更新処理が行なえるように構成されている。従って、信号CTC2の入力とCPU601による乱数更新トリガレジスタ(608b3)の書込みがそれぞれ更新指令となる。また、乱数生成回路608は、後述のように、カウンタ方式すなわちカウンタ値を−1ずつ更新することで乱数を生成するモードと、M系列乱数を生成するモードのいずれかを選択できるように構成されている。
第1乱数ブロック608bは、CTC更新許可レジスタ608b1、タップ設定レジスタ608b2、乱数更新トリガレジスタ608b3、最大値設定レジスタ(範囲情報記憶手段)608b4、スタート値設定レジスタ608b5、一周完了報知レジスタ608b6、乱数カウンタ608b7、ワークエリア608b8、乱数更新中報知レジスタ608b9、乱数更新コントローラ608aによって乱数の更新異常が検出された場合に異常(エラー)の発生をCPU601へ知らせるための更新エラー報知レジスタ608b10、乱数回路リセットレジスタ608b11、乱数カウンタ608b7の周回数を計数する周回カウンタ608b12、分周信号φ1の入力回数を計数する回数カウンタ608b13、電源投入(システムリセット時を含む)ごとに異なる値を発生する初期値用カウンタ608b14、乱数生成回路内のレジスタの更新状態等を示す設定情報記憶手段としてのソフト乱数ステータスレジスタ608b15などにより構成される。
上記更新エラー報知レジスタ608b10は、この実施例では、各乱数ブロック608b〜608g毎に設けられているが、共通の更新異常報知レジスタとしてもよい。そして、その場合、更新異常報知レジスタを6ビットで構成して各ビットを乱数ブロック608b〜608gに対応させて、それぞれのブロックの更新異常を識別可能に記憶させるように構成しても良い。
上記レジスタのうち、ワークエリア(更新手段)608b8と初期値用カウンタ608b14は、CPUコア601すなわちユーザプログラムによってアクセスすることが不能なレジスタである。乱数カウンタ608b7は、乱数更新コントローラ608aとユーザプログラムの双方からアクセスすることが可能なレジスタで、タップ設定レジスタ608b2の設定前であれば、ユーザプログラムは乱数更新コントローラ608aによるアクセスの許可を条件にアクセスすることができるようになっている。
なお、第2乱数ブロック608c、第3乱数ブロック608d、及び第4乱数ブロック608eに関しては、第1乱数ブロック608bと同様の構成を有するため説明は省略する。複数の乱数ブロックを備えることにより、遊技制御で使用する複数の乱数を並行して生成することができる。本実施形態においては、特図変動表示ゲームにおいて大当りを発生させるか否かを決定する大当り乱数(特図1、特図2に共通)、特図1および特図2の各変動表示ゲームにおける大当り停止図柄を決定する大当り図柄乱数1,2、普図変動表示ゲームにおいて当りを発生させるか否かを決定する当り乱数を並行して生成するようにしているが、変動パターン決定する変動パターン乱数などを生成するようにしてもよい。
CTC更新許可レジスタ608b1は、乱数カウンタ608b7の更新を許可/不可の何れかに設定するものであり、「許可」に設定されていれば、CTC回路609aからの信号CTC2をトリガにして乱数カウンタ608b7が更新されることとなる。タップ設定レジスタ608b2は、「カウンタモード」の場合において、乱数カウンタ608b7を作動させるものであり、電源投入時は「0」となっており、このとき、乱数カウンタ608b7は作動しないようになっている。そして、タップ設定レジスタ608b2に「0
」以外の値が書き込まれることによって、乱数カウンタ608b7が作動するようになっている。また、「乱数モード」の場合、タップ設定レジスタ608b2に書き込まれた値によって、M系列の漸化式の種類が決定される。従って、タップ設定レジスタ608b2が乱数値の更新を開始するか否かを示す起動情報を記憶する起動情報記憶手段として機能する。
乱数更新トリガレジスタ608b3は、CPUコア601から直接書込みが可能なレジスタであり、CPUコア601が例えば割込み処理で所定値を書き込むと、乱数更新コントローラ608aがそれを認知して乱数カウンタ608b7を更新するように構成されている。なお、このとき、CTC更新許可レジスタ608b1の設定が「許可」/「不可」の何れの場合でも乱数カウンタ608b7が更新される。従って、乱数更新トリガレジスタ608b3が乱数値の更新を指示する更新指示記憶手段として機能する。
最大値設定レジスタ608b4は、乱数カウンタ608b7の最大値とモードを設定するものである。最大値は8以上4095以下の値に設定される。また、モードは「乱数モード」か「カウンタモード」の何れかに設定される。そして、設定された最大値をNとした場合、「乱数モード」において乱数カウンタ608b7は1〜Nの範囲で更新され、「カウンタモード」において乱数カウンタ608b7は0〜Nの範囲で更新される。従って、最大値設定レジスタ608b4が乱数生成回路608の更新範囲情報を記憶する範囲情報記憶手段として機能する。本実施形態では、普図当り乱数の最大値は例えば250に設定され、特図大当り図柄乱数1,2の最大値は例えば200に設定される。なお、最大値設定レジスタ608b4は、最大値を設定するのではなく、ビット単位で更新範囲を設定するようにしてもよい。
スタート値設定レジスタ608b5は、ユーザプログラムによってCPUコア601が乱数カウンタ608b7の更新スタート値(開始値)を設定(格納)するためのものである。乱数カウンタ608b7が所定の周期を1周したときに、乱数更新コントローラ608aによってこのスタート値が乱数カウンタ608b7に設定される。具体的には、例えば、最大値設定レジスタ608b4において設定された最大値Nよりも大きな値をスタート値Sとして設定した場合には、乱数カウンタ608b7が所定の周期を1周したときに最大値Nをスタート値Sで除した際の余り値が乱数カウンタ608b7に設定される。従って、スタート値設定レジスタ608b5が乱数値の開始値を記憶する開始値記憶手段として機能し、乱数更新コントローラ608aが開始値設定手段として機能する。
一周完了報知レジスタ608b6は、乱数カウンタ608b7が所定の周期を1周したことを報知するものであり、CPUコア601がスタート値設定レジスタ608b5にスタート値を設定するとオンに設定され、オンに設定された後、乱数カウンタ608b7が所定の周期を1周してスタート値設定レジスタ608b5のスタート値が乱数カウンタ608b7に再設定されると、一周完了報知レジスタ608b6はオフに設定される。そして、周回カウンタ608b12が、乱数カウンタ608b7の周回数を計数する。
乱数カウンタ608b7は、12次(12ビット)の乱数列で構成され、タップ設定レジスタ608b2に所定の値が書き込まれるまでは、データを設定して乱数の電源投入時におけるスタート値を変更することができる。故に、乱数カウンタ608b7の範囲は、「乱数モード」であれば1〜4095の間の値を取りうることになり、「カウンタモード」であれば、0〜4095の間の値をとり得ることになる。また、「乱数モード」では、カウンタ値が一周するまで、同じ乱数値が生成されないようになっている。
ワークエリア608b8は、バックアップ電源によりバックアップされたRAMもしくは不揮発性のメモリで構成され、乱数カウンタ608b7の更新用バッファおよびバックアップエリアとして機能するものであり、ワークエリア608b8で乱数の更新がなされ更新された値が乱数カウンタ608b7に格納される。従って、ワークエリア608b8が乱数の更新手段として機能し、乱数カウンタ608b7が乱数値記憶手段として機能する。ワークエリア608b8はCPUからの読込みが不能なレジスタとされ、これにより誤って更新中の不確定な値がCPUに取り込まれるのを防止することができる。また、ワークエリア608b8は複数のエリアに分割されており、そのうちひとつのエリアには停電発生時に停電直前の初期値用カウンタ608b14の値が保持される。以下、このエリアをバックアップエリアと称し、乱数値の入る乱数更新エリアと区別する。
ワークエリア608b8の乱数値は、CTC回路609aからの信号CTC2または乱数更新トリガレジスタ608b3の書込みにより乱数の更新が指令されると、最大値設定レジスタ608b4で示される範囲の値となるまで更新され続ける。そして、このワークエリア608b8の値が更新されている間は、「乱数モード」であっても「カウンタモード」であっても、乱数カウンタ608b7には「0」が設定される。従って「乱数モード」の場合には、更新範囲内の数値(1〜N)に属しない「0」が乱数カウンタ608b7に設定されていると、乱数カウンタ608b7が更新中であることが示される。従って、乱数カウンタ608b7の値は、乱数値を更新中であるか否かを示す更新中情報とみなすことができる。また、「カウンタモード」では、ワークエリア608b8の中でダウンカウント方式によりカウント値を更新(−1)する。
乱数更新中報知レジスタ608b9は、乱数が更新中であることを報知するものであり、信号発生手段としてのCTC回路609aや乱数更新トリガレジスタ608b3により乱数カウンタ608b7が更新されている間はオンに設定され、更新中でなければオフに設定される。従って、乱数更新中報知レジスタ608b9が乱数値を更新中であるか否かを示す更新中情報が記憶される更新中情報記憶手段として機能する。
更新エラー報知レジスタ608b10は、乱数カウンタ608b7の値が更新されなかった場合に、乱数更新コントローラ608aによってエラーを示す値が設定され、CPU601がこのレジスタの値を読み込むことで乱数更新エラーが発生しているか否か知ることができるようになっている。従って、更新エラー報知レジスタ608b10が乱数生成回路608での乱数値の更新に異常が発生したことを示す更新異常情報が記憶される更新異常情報記憶手段として機能する。更新エラーすなわちワークエリア608b8の値が更新されたか否かは乱数更新コントローラ608aによって判定することができる。この実施例では、更新エラー報知レジスタ608b10は、乱数モードとカウンタモードのそれぞれに対応して設けられた更新異常検出処理によって共通のフラグが設定されるように構成されている。ただし、これに限定されず、乱数モードとカウンタモードの更新異常検出処理によって別個のフラグを設定するように構成しても良い。
乱数回路リセットレジスタ608b11は、乱数更新エラーが発生した場合に乱数生成回路608を外部からリセットするためのもので、CPU601がこのレジスタに所定の値を書き込むと、乱数更新コントローラ608aはリセット指令があったと判定して回路内部をリセット状態にする。回数カウンタ608b13は、分周信号φ1の入力回数を計数する。
初期値用カウンタ608b14は、分周回路609bからの分周信号φ1が入力される毎に乱数更新コントローラ608aの割込み処理によって更新(+1)されるようになっており、電源遮断時に初期値用カウンタ608b14の値がワークエリア608b8に格納され、電源投入時(システムリセット時を含む)にその値が復帰されることで電源投入ごとに異なる値を発生する初期値発生回路として機能する。なお、本実施形態においては、原クロック信号CLKを2分周して原クロック信号の周期の2倍の周期のクロック信号φ1を生成しているが、クロック信号φ1の周期はそれに限定されるものでない。
次に、乱数更新コントローラ608aによる乱数生成回路608内の制御手順について説明する。図6には、乱数更新コントローラによるメイン処理の前半部分のフローチャートが、また、図7には乱数更新コントローラによるメイン処理の後半部分のフローチャートが示されている。このメイン処理は、電源投入及びシステムリセット毎に開始され電源がオンされている間連続して実行されるループ処理であり、乱数更新コントローラ608aによる処理には、このメイン処理のほか、クロックジェネレータ609からの信号φ1、CTC2の入力による割込み処理や電源遮断検出時に実行される緊急割込み処理がある。前述した初期値用カウンタ608b14の値のワークエリア608b8(バックアップエリア)への格納は、電源遮断検出時の緊急割込み処理によって行うようにすることができる。
乱数更新コントローラ608aは、リセット割込み制御回路610によるリセット割込み信号もしくは電源投入時のパワーオンリセット信号に基づき、図6の制御フローを開始し、先ず、ワークエリア608b8に記憶されている値を除いて、他の記憶領域やレジスタに記憶されている値を初期化する(ステップS100)。このとき、周回カウンタ608b12の値を「0」に設定する。また、この初期化処理で、ワークエリア608b8のバックアップエリアに記憶されている初期値用カウンタの値を、初期値用カウンタ608b14に復帰させるようにすることができる。
次に、ワークエリア608b8のバックアップエリアに記憶されている初期値用カウンタの値を乱数カウンタ608b7に取り込む(ステップS101)。続いて、乱数カウンタ608b7のユーザプログラムによる変更を許可し(ステップS102)、タップ設定レジスタ608b2の設定を待つ(ステップS103)。乱数カウンタ608b7の変更が許可され、タップ設定レジスタ608b2に「0」の値が書き込まれることによって、CTC2信号または乱数更新トリガレジスタ608b3への所定値の書込みによる乱数カウンタ608b7の更新が可能とされる。従って、初期値用カウンタ608b14とステップS101とが、電源投入及びシステムリセット毎にランダムな値を生成して前記乱数カウンタの1周目の周回初期値として設定する第1攪拌手段として機能することとなる。
その後、乱数更新コントローラ608aは、乱数カウンタ608b7の変更を禁止し(ステップS104)、このときの乱数カウンタ608b7の値をワークエリア608b8に記憶(ステップS105)し、ユーザーによって設定された乱数カウンタの値を所定の範囲内の値に補正するための乱数カウンタ初期値補正処理(ステップS106)を実行してから、回数カウンタ608b13を「0」に設定する(ステップS107)。なお、乱数カウンタ608b7の変更が禁止されるまでの間は、CPUコア601(図4)によって乱数カウンタ608b7に任意の値を直接書き込むことが可能である。また、乱数カウンタ608b7の変更が禁止されても乱数更新コントローラ608aによる更新はいつでも可能である。
乱数カウンタ初期値補正処理S106では、ワークエリア608b8内の初期値用カウンタの値が最大値設定レジスタ608b4に設定されている最大値よりも大きいか否か判定し、ワークエリア608b8の値が最大値よりも大きい(Yes)と判定すると、ワークエリア608b8内の乱数カウンタの値を最大値以下にする補正を行なう。具体的には、ワークエリア608b8内の乱数カウンタの値を最大値で割った余りを算出して補正した値とする。そして、補正後の値(もしくは最大値よりも小さい場合は補正されていない値)が、ワークエリア608b8のバックアップエリアに格納されている前回の初期値(電源遮断時に格納した初期値用カウンタ608b14の値)と一致しているか否か判定し、一致していない(No)と判定するとスワークエリア608b8の値を乱数カウンタ608b7に格納する。
また、補正後の値(もしくは最大値よりも小さい場合は補正されていない値)が、前回の初期値と一致している(Yes)と判定すると、ワークエリア608b8内の初期値用カウンタの値をM系列更新してからワークエリア608b8の値を乱数カウンタ608b7に格納する。これにより、乱数カウンタの値が前回と同じ初期値から更新開始されるのを回避して、遊技者による不正な大当り乱数の取得を防止することができる。
ユーザプログラムによって周期的に更新される乱数カウンタの周回初期値として不適切な値(所定の範囲外の値)が記憶されるおそれがあるが、不適切な値(所定の範囲外の値)が記憶された場合には、上記乱数カウンタ初期値補正処理による補正が行われて、所定の範囲内の値に設定し直され、乱数カウンタの周回の初期値には常に所定の範囲内の適切な値が設定されるので、所定の正しい確率で遊技の決定処理を行うことができる。
図6のステップS107で回数カウンタ608b13を「0」に設定した後は、CTC回路609aによるCTC信号(CTC2)が発生(検出)したか否かを判定する(ステップS108)。このCTC回路609aによるCTC信号が発生したか否かの判定(ステップS108)において、CTC回路609aによるCTC信号が発生した場合(Yes)は、CTC使用モードか否か、具体的には、CTC更新許可レジスタ608b1が「許可」に設定されているか否かの判定(ステップS109)を行う。
そして、このCTC使用モードか否かの判定(ステップS109)において、CTC使用モードの場合(Yes)は、ステップS111へ進む。一方、このCTC使用モードか否かの判定(ステップS109)において、CTC使用モードでない場合、すなわち、CTC更新許可レジスタ608b1が「不可」に設定されている場合(No)は、乱数更新トリガレジスタ608b3に所定値が書き込まれているか否かの判定(ステップS110)を行う。
また、CTC回路609aによるCTC信号が発生したか否かの判定(ステップS108)において、CTC回路609aによるCTC信号が発生していない場合(No)は、ステップS109をスキップして、乱数更新トリガレジスタ608b3に所定値が書き込まれているか否かの判定(ステップS110)を行う。この判定(ステップS110)において、乱数更新トリガレジスタ608b3に所定値が書き込まれている場合(Yes)は、ステップS111へ進む。一方、ステップS110の判定において、乱数更新トリガレジスタ608b3に所定値が書き込まれていないと判定した場合(No)は、ステップS108へ戻る。
次に、乱数更新中報知レジスタ608b9をオンに設定(ステップS111)した後、乱数カウンタ608b7の値を「0」に設定(ステップS112)し、分周回路609bからの分周信号φ1の入力を待つ(ステップS113)。それから、最大値設定レジスタ608b4に設定されたモードが「乱数モード」であるか「カウンタモード」であるかの判定(ステップS114)を行う。この判定(ステップS114)において、最大値設定レジスタ608b4に設定されたモードが「カウンタモード」の場合、ワークエリア608b8の値が「0」より大きいか否かの判定(ステップS115)を行う。
そして、ワークエリア608b8の値が「0」より大きいか否かの判定(ステップS115)において、ワークエリア608b8の値が「0」(=No)と判定した場合は、ワークエリア608b8の値を最大値に設定する(ステップS116)。一方、このワークエリア608b8の値が「0」より大きいか否かの判定(ステップS115)において、ワークエリア608b8の値が「0」より大きい(Yes)と判定した場合は、ワークエリア608b8の値をデクリメント(−1更新)する(ステップS117)。
その後、スタート値設定レジスタ608b5に次回に設定されるスタート値(開始値)が格納されているか否かを示すソフト乱数ステータスレジスタ608b15の情報(スタート値設定ビット)がオフになっているか判定する(ステップS118)。ここで、フラグがオフになっていないつまり新しいスタート値が格納されていない状態の場合(No)は、ステップS121へジャンプする。また、ステップS118で、スタート値設定ビットがオフになっている(Yes)と判定すると、次のステップS119で、スタート値設定レジスタ608b5に設定されているスタート値とワークエリア608b8に記憶されている初期値用カウンタの値とを比較して前回の値と一致しているか否か判定する。
そして、ステップS119で一致している(Yes)と判定した場合は、ステップS121へジャンプし、ステップS119で、一致していない(No)と判定すると、次のステップS120でソフト乱数ステータスレジスタ608b15のスタート値設定ビットをオンに設定してステップS121へ進む。
ステップS121では、周回カウンタ608b12の値をインクリメント(+1更新)し、次のステップS160へ進み、カウンタモード更新異常監視処理を実行する。従って、乱数更新コントローラ608aは更新異常検出手段として機能する。なお、ステップS160のカウンタモード更新異常監視処理については、図8を用いて後に詳しく説明する。
その後、周回カウンタの値が乱数カウンタの最大値に1足した値以上か否かの判定を行う(ステップS122)。そして、周回カウンタの値が乱数カウンタ608b7の最大値に1足した値以上の場合(ステップS122;Yes)は、周回カウンタの値を「0」に設定する(ステップS123)。一方、この周回カウンタの値が乱数カウンタ608b7の最大値に1足した値以上か否かの判定(ステップS122)において、周回カウンタの値が乱数カウンタ608b7の最大値に1足した値以上でない場合(ステップS122;No)は、図7のステップS147へ進む(符合B)。
次に、スタート値設定レジスタ608b5において乱数更新のスタート値の取得及び最大値以下にする補正を行う(ステップS124)。当り乱数カウンタよりも初期値乱数カウンタの方が範囲が大きい場合に、当り乱数カウンタのとり得ない値を初期値乱数カウンタからスタート値として取得して設定した場合を考慮したものである。
具体的には、このとき、最大値よりも取得したスタート値の方が大きい場合には、最大値をスタート値で除した際の余り値をスタート値とする補正を行う。その後、ワークエリア608b8にスタート値を取り込み(ステップS125)、次のステップS126でソフト乱数ステータスレジスタ608b15のスタート値設定ビットをオフに設定してスタート値設定レジスタ608b5の値を設定したことを記憶してから、一周完了報知レジスタ608b6をオンに設定する(ステップS127)。
従って、スタート値設定レジスタ608b5とステップS122〜S125とが、乱数カウンタに1周目の周回初期値が設定された後、乱数カウンタが更新されて当該周回の周回初期値に達する毎に、当該乱数カウンタの新たな周回初期値を設定する第2攪拌手段として機能することとなる。このように、乱数カウンタの周回の初期値は少なくとも一巡する毎に第2攪拌手段によって設定された周回初期値に置換されるので、乱数カウンタの値を外部から割り出すことは難しく、不正行為を未然に防止することができる。
次に、符合Bに従って、ステップS127から移行したステップS147で回数カウンタ608b13の値が規定値に達したか否かの判定を行う。ここで、規定値(規定更新時間)は、例えば、「カウンタモード」の場合は規定値が「2」、「乱数モード」の場合であって最大値が「17」以上の場合は規定値が「20」、「乱数モード」の場合であって最大値が「16」以下の場合は規定値が「200」に設定される。これらの規定値(規定更新時間)のデータは、遊技用マイコン111のROM111Bに予め記憶されている。
従って、乱数カウンタ608b7の更新が開始されると、分周回路609bから乱数更新コントローラ608aへ分周信号入力ごとに乱数を更新するのではなく、入力される分周信号が所定回数検出されるまでは、乱数カウンタ608b7を更新しないことになり、さらに、その検出回数がある程度のまとまった数に固定されることになる。言い換えれば、「カウンタモード」の場合は、乱数カウンタ608b7を更新するために、分周信号が2回発生する時間(規定更新時間)を要することになる。また、「乱数モード」の場合であって乱数カウンタの最大値が「17」以上の場合は、乱数カウンタ608b7を更新するために、分周信号が20回発生する時間を要することになり、「乱数モード」の場合であって乱数カウンタの最大値が「16」以下の場合は、乱数カウンタ608b7を更新するために、分周信号が200回発生する時間を要することになる。
回数カウンタ608b13の値が規定値に達したか否かの判定(ステップS147)において、回数カウンタの値が規定値に達していない場合(No)は、分周信号を待ち(ステップS150)、回数カウンタの値をインクリメント(+1)して(ステップS151)、ステップS147へ戻る。一方、回数カウンタの値が規定値に達したか否かの判定(ステップS147)において、回数カウンタの値が規定値に達した場合(Yes)は、ワークエリア608b8の値を乱数カウンタ608b7に設定し(ステップS148)、乱数更新中報知レジスタ608b9をオフに設定し(ステップS149)、図6のステップS107に戻る。
また、最大値設定レジスタ608b4に設定されたモードが「乱数モード」であるか「カウンタモード」であるかの判定(ステップS114)において、最大値設定レジスタ608b4に設定されたモードが「乱数モード」の場合、符号Aに従ってステップS128へ進む。そして、ワークエリア608b8にてM系列乱数を更新し(ステップS128)、ワークエリア608b8のM系列乱数に基づく値が最大値よりも大きいか否かの判定を行う(ステップS129)。
この判定(ステップS129)において、ワークエリア608b8のM系列乱数に基づく値が最大値よりも大きい場合(Yes)は、分周信号を検出したか否かの判定(ステップS130)を行う。そして、この判定(ステップS130)において、分周信号を検出した場合(Yes)は、回数カウンタ608b13の値を1インクリメントし(ステップS131)、ステップS124へ戻る。一方、この分周信号を検出したか否かの判定(ステップS130)において、分周信号を検出していない場合(No)は、ステップS128へ戻る。
また、ステップS129の判定において、ワークエリア608b8のM系列乱数に基づく値が最大値よりも大きくない場合(No)は、ステップS132へ移行して、タップ設定レジスタ608b2に次回に設定されるタップ値(インデックス)が格納されているか否かを示すステータスレジスタのタップ設定ビットがオフになっているか判定する(ステップS132)。ここで、タップ設定ビットがオフになっていないつまり新しいタップ値が格納されていない状態の場合(No)は、ステップS135へジャンプする。
また、ステップS132の判定において、タップ設定ビットがオフになっている場合(Yes)は、ステップS133へ移行して、タップ設定レジスタ608b2に設定されているタップ値が前回のタップ値と一致しているか否か判定する。ここで、タップ値が前回と一致している場合(Yes)はステップS135へジャンプする。ステップS133の判定で、タップ値が前回と一致していない場合(No)は、次のステップS134でタップ設定ビットをオンにしてからステップS135へ移行する。
ステップS135では、ソフト乱数ステータスレジスタ608b15のスタート設定ビ
ットがオフになっているか否か判定し、スタート値設定ビットがオフになっていない場合(No)は、ステップS138へジャンプする。また、ステップS135でスタート値設定ビットがオフになっている(Yes)と判定すると、次のステップS136で、ワークエリア608b8に記憶されている初期値用カウンタの値とスタート値設定レジスタ608b5に設定されているスタート値とを比較して前回の値と一致しているか否か判定する。そして、一致している場合(Yes)は、ステップS138へジャンプし、ステップS136で、一致していない(No)と判定すると、次のステップS137でステータスレジスタのフラグをオンに設定してステップS138へ進む。
ステップS138では、周回カウンタ608b12の値をインクリメント(+1更新)する。その後、乱数モード更新異常監視処理(S160’)を実行してから、周回カウンタの値が最大値以上か否かの判定を行う(ステップS139)。この判定(ステップS139)において、周回カウンタの値が最大値以上の場合(Yes)は、周回カウンタの値を「0」に設定する(ステップS140)。一方、周回カウンタの値が最大値以上か否かの判定(ステップS139)において、周回カウンタの値が最大値以上でない場合(No)は、ステップS147へ進む。乱数モード更新異常監視処理(S160’)は、図6のステップS160のカウンタモード更新異常監視処理(詳細は図8)と類似した処理である。
ステップS140で周回カウンタの値を「0」に設定した後は、スタート値設定レジスタ608b5においてスタート値の取得及び最大値以下にする補正を行う(ステップS141)。具体的には、このとき、最大値よりも取得したスタート値の方が大きい場合に、最大値をスタート値で除した際の余り値をスタート値とする補正を行う。その後、タップ設定レジスタ608b2に設定されているタップ値に応じた特性多項式(乱数計算式)を設定(ステップS142)し、ソフト乱数ステータスレジスタ608b15のタップ設定ビットをオフに設定する(ステップS143)。
続いて、ワークエリア608b8にスタート値を取り込み(ステップS144)、次のステップS145でステータスレジスタのスタート設定ビットをオフに設定してステップS146へ進む。ステップS146では、一周完了報知レジスタ608b6をオンに設定し、ステップS147へ進み、回数カウンタが規定値か否か判定する。そして、この判定において、回数カウンタ608b13の値が規定値に達した(Yes)と判定した場合は、前述したように、ワークエリア608b8の値を乱数カウンタ608b7に設定し(ステップS148)、乱数更新中報知レジスタ608b9をオフに設定し(ステップS149)、図6のステップS107に戻る。
図8には、図6のステップS160で行なわれるカウンタモード更新異常監視処理の具体的な手順の一例が示されている。
カウンタモード更新異常監視処理では、先ずワークエリア608b8内の乱数値が前回の値と一致しているか否かの判定が行われる(ステップS161)。ここで、一致している(Yes)と判定した場合は、ステップS167へ移行して更新エラー報知レジスタ608b10のフラグをオンしてから、乱数回路リセットレジスタ608b11のフラグがCPU601によってオンされたか否か判定する(ステップS168)。そして、オンされていなければ該ステップS168を繰り返し実行することでオンされるまで待機し、乱数回路リセットレジスタ608b11のフラグがオンされた(ステップS168:Yes)と判定すると、符号Dに従って、図6のフローチャートのステップS100へ戻って初期化処理からやり直す。正常な更新が実行されていればワークエリア608b8内の乱数値が前回の値と一致していることはないためである。なお、ステップS168で待機中に電源が遮断され、再投入された場合も、パワーオンリセットによりS100に戻り順次処理が行われる。
一方、ステップS161で、乱数値が前回の値と一致していない(No)と判定した場合はステップS162へ進んで、周回カウンタ608b12の値が「最大値+1」よりも大きいか否かの判定が行われる。ここで、大きい(Yes)と判定した場合は、ステップS167へ移行して更新エラー報知レジスタ608b10のフラグをオンしてから、乱数回路リセットレジスタ608b11のフラグがオンされたか否か判定する(ステップS168)。そして、オンされていなければ該ステップS168を繰り返し実行することでオンされるまで待機し、乱数回路リセットレジスタ608b11のフラグがオンされた(Yes)と判定すると、ステップS100へ戻って初期化処理からやり直す。乱数更新の範囲は最大値設定レジスタ608b4の設定値によって規定されており、正常な更新が実行されていれば周回カウンタ608b12の値が「最大値+1」よりも大きくなることはないためである。
ステップS162で、周回カウンタ608b12の値が「最大値+1」よりも小さい(No)と判定した場合は、ステップS163へ進んで、ワークエリア608b8の値が「スタート値」か否かの判定が行われる。ここで、ワークエリア608b8の値が「スタート値」である(Yes)と判定した場合は、ステップS164で周回カウンタ608b12の値が「最大値+1」か否かの判定が行われる。そして、周回カウンタ608b12の値が「最大値+1」でない(No)と判定した場合は、ステップS167へ移行して更新エラー報知レジスタ608b10のフラグをオンしてから、乱数回路リセットレジスタ608b11のフラグがオンされたか否か判定する(ステップS168)。そして、オンされていなければ該ステップS168を繰り返し実行することでオンされるまで待機し、乱数回路リセットレジスタ608b11のフラグがオンされた(Yes)と判定すると、ステップS100へ戻って初期化処理からやり直す。
正常な更新処理が実行されていれば周回カウンタ608b12の値が「最大値+1」となった場合には、ワークエリア608b8の値に「スタート値」が設定される(ステップS125参照)ので、ワークエリア608b8の値が「スタート値」であるにもかかわらず、周回カウンタ608b12の値が「最大値+1」でないのは、誤ってあるいは不正によりワークエリア608b8に「スタート値」が設定されたと考えられるためである。ステップS164で周回カウンタ608b12の値が「最大値+1」である(Yes)と判定した場合は、ステップS165へ進む。また、ステップS163でワークエリア608b8の値が「スタート値」でない(No)と判定した場合は、ステップS164をスキップしてステップS165へ移行する。
ステップS165では、周回カウンタ608b12の値が「最大値+1」か否か判定し、周回カウンタ608b12の値が「最大値+1」である(Yes)と判定した場合は、ステップS166へ進んで、ワークエリア608b8の値が「スタート値」か否かの判定が行われる。ここで、ワークエリア608b8の値が「スタート値」である(ステップS166:Yes)と判定した場合は、当該更新異常監視処理から抜ける。一方、ステップS166で、ワークエリア608b8の値が「スタート値」でない(No)と判定した場合は、ステップS167へ移行して更新エラー報知レジスタ608b10のフラグをオンしてから、乱数回路リセットレジスタ608b11のフラグがオンされたか否か判定する(ステップS168)。そして、オンされていなければ該ステップS168を繰り返し実行することでオンされるまで待機し、乱数回路リセットレジスタ608b11のフラグがオンされた(Yes)と判定すると、ステップS100へ戻って初期化処理からやり直す。
正常な更新処理が実行されていれば周回カウンタ608b12の値が「最大値+1」となった場合には、ワークエリア608b8の値に「スタート値」が設定される(ステップS125参照)ので、周回カウンタ608b12の値が「最大値+1」であるにもかかわらず、ワークエリア608b8の値が「スタート値」でないのは、誤動作で周回カウンタ608b12の値が「最大値+1」になってもワークエリア608b8に「スタート値」が設定されなかったと考えられるためである。ステップS165で周回カウンタ608b12の値が「最大値+1」でない(No)と判定した場合は、ステップS166をスキップして当該更新異常監視処理から抜ける。
図7のステップS160’で行なわれる乱数モード更新異常監視処理の具体的な手順は、図8に示されているカウンタモード更新異常監視処理の具体的な手順とほぼ同じである。カウンタモード更新異常監視処理との違いは、ステップS162,S164,S165における「最大値+1」が「最大値」となる点のみである。図7に示されているように、乱数モードによる更新処理では、周回カウンタ608b12の値が「最大値」となった場合に、ワークエリア608b8の値に「スタート値」を設定するためである(ステップS139〜S144)。
次に、上記乱数生成回路を内蔵した遊技制御装置100の遊技用マイクロコンピュータ(遊技用マイコン)111によって実行される制御について説明する。
遊技用マイコン111による制御処理は、ループ処理として繰り返されるメインルーチンであるメイン処理(主に図9及び図10参照)と、メイン処理に対する割込みルーチンとして、所定時間周期(例えば4ms)で行われるタイマ割込み処理(図13参照)とからなる。
〔メイン処理〕
先ず、メイン処理について説明する。
メイン処理は、電源が投入されることで開始される。このメイン処理においては、図6に示すように、まず、割込み禁止する処理(ステップS1)を行なってから、割込みが発生したときに実行するジャンプ先のベクタアドレスを設定する割込みベクタ設定処理(ステップS2)、割込みが発生したときにレジスタ等の値を退避する領域の先頭アドレスであるスタックポインタを設定するスタックポインタ設定処理(ステップS3)、割込み処理のモードを設定する割込みモード設定処理(ステップS4)を行う。
次に、払出制御装置(払出基板)200のプログラムが正常に起動するのを待つため例えば4msの時間待ちを行う(ステップS5)。これにより、電源投入の際に仮に遊技制御装置100が先に立ち上がって払出制御装置200が立ち上がる前にコマンドを払出制御装置200へ送ってしまい、払出制御装置200がコマンドを取りこぼすのを回避することができる。その後、RAMやEEPROM等の読出し書込み可能なRWM(リードライトメモリ)のアクセス許可をし、全出力ポートをオフ(出力が無い状態)に設定する(ステップS6,S7)。また、シリアルポート((遊技用マイコン111に予め搭載されているポート)この実施例では、払出制御装置200や演出制御装置300とパラレル通信を行っているため使用しない))を使用しない状態に設定する処理を行う(ステップS8)。
続いて、電源装置400内の初期化スイッチがオンしているか否か判定する(ステップS9)。ここで、初期化スイッチがオフ(ステップS9;No)と判定すると、ステップS10で、RWM内の停電検査領域のデータをチェックした後、停電復旧か否かの判定を行う(ステップS11)。このステップS11で停電復旧である(ステップS11;Yes)と判定すると、ステップS12へ進みチェックサムと呼ばれるデータを算出する処理及び算出されたチェックサムが正常か異常かを判定する(ステップS13)。
また、ステップS9で初期化スイッチがオン(ステップS9;Yes)と判定された場合、ステップS11で停電復旧でない(ステップS11;No)と判定された場合及びステップS13でチェックサムが正常でない(ステップS13;No)と判定された場合は、図7のステップS20へジャンプする。
また、ステップS13でチェックサムが正常(ステップS13;Yes)と判定した場合は、図7のステップS14へ移行して、RWM(リードライトメモリ:実施例ではRAM)内の初期化すべき領域に停電復旧時の初期値をセーブ(格納)してから、エラーや不正監視に係る領域をリセットする(ステップS15)。次に、RWM内の遊技状態を記憶する領域を調べて遊技状態が高確率状態であるか否かを判定する(ステップS16)。ここで、高確率でないと(ステップS16;No)と判定した場合は、ステップS17,S18をスキップしてステップS19へ移行する。
また、ステップS16で高確率であると(ステップS16;Yes)と判定した場合は、ステップS17で高確率の報知フラグを設定してから、例えば一括表示装置50に設けられる高確率報知LED(エラー表示器58)をオン(点灯)に設定(ステップS18)してステップS19へ移行する。ステップS19では、後述の特図ゲーム処理を合理的に実行するために用意されている処理番号に対応する電源復旧時のコマンドを演出制御装置300へ送信する処理を行なってステップS23へ進む。
一方、ステップS9,S11,S13からステップS20へジャンプした場合には、先ずCPUが使用するRAM内の作業領域をリセットしてから、初期化すべき領域に電源投入時の初期値をセーブする(ステップS21)。それから、ステップS22で電源投入時のコマンドを演出制御装置300へ送信する処理を行なってステップS23へ進む。ステップS23では、遊技用マイコン111(クロックジェネレータ)内のタイマ割込み信号及び乱数更新トリガ信号(CTC)を発生するCTC(Counter/Timer Circuit)回路を起動する処理を行う。
なお、CTC回路は、遊技用マイコン111内のクロックジェネレータに設けられている。クロックジェネレータは、水晶発振器113からの発振信号(原クロック信号)を分周する分周回路と、分周された信号に基づいてCPU111Aに対して所定周期(例えば、4ミリ秒)のタイマ割込み信号及び乱数生成回路へ供給する乱数更新のトリガを与える信号CTCを発生するCTC回路とを備えている。
上記ステップS23のCTC起動処理の後は、乱数生成回路を起動設定する処理を行う(ステップS24)。具体的には、乱数生成回路内の所定のレジスタ(CTC更新許可レジスタ)へ乱数生成回路を起動させるためのコード(指定値)の設定、最大値設定レジスタへの最大値(更新モードを含む)の設定、タップ設定レジスタへのタップ設定などがCPU111Aによって行われる。それから、ステップS25で、電源投入時の乱数生成回路内の所定のレジスタ(ソフト乱数レジスタ1〜n)の値を、対応する各種初期値乱数(特図ゲームの大当りを決定する乱数(大当り乱数)、大当りの停止図柄を決定する乱数(大当り図柄乱数1、大当り図柄乱数2)、普図ゲームの当たりを決定する乱数(当り乱数))の初期値(スタート値)としてRWMの所定領域にセーブしてから、割込みを許可する(ステップS26)。なお、上記大当り図柄乱数は、特別遊技状態におけるラウンド数および特別遊技終了後に付与される時短回数、確率変動状態の決定に係る乱数である。
本実施例で使用するCPU111A内の乱数生成回路においては、電源投入毎にソフト乱数レジスタの初期値が変わるように構成されているため、この値をCPU側で生成する各種初期値乱数の初期値(スタート値)とすることで、ソフトウェアで生成される乱数の規則性を崩すことができ、遊技者による不正な乱数の取得を困難にすることができる。
続いて、乱数生成回路の更新エラーを監視する乱数エラー監視処理(ステップS27)、各種初期値乱数の値を更新して乱数の規則性を崩すための初期値乱数更新処理(ステップS28)を行う。
上記ステップS28の初期値乱数更新処理の後、電源装置400から入力されている停電監視信号をポート及びデータバスを介して読み込んでチェックして停電が発生したか否かの判定(ステップS29)を行い、停電が発生していない場合(ステップS29;No)には、ステップS27に戻り、上記初期値乱数更新処理〜停電監視信号のチェック(ループ処理)を繰り返し行う。乱数エラー監視処理(ステップS27)の前に割込みを許可する(ステップS26)ことによって、乱数エラー監視処理および初期値乱数更新処理中にタイマ割込みが発生すると割込み処理が優先して実行されるようになり、タイマ割込みが乱数エラー監視処理および初期値乱数更新処理によって待たされることで割込み処理が圧迫されるのを回避することができる。
また、停電もしくは電源遮断が発生しない限りステップS27〜S29のループを繰り返し実行しており、その間に後述のタイマ割込み処理(図13)による処理が周期的に実行される。そして、各割込み処理の所要時間が毎回異なることにより、1回の割込みから次の割込みまでのステップS27〜S29のループを繰り返し回数が毎回異なるようになり、それによって、初期値乱数更新処理により生成される初期値乱数が毎回異なることになる。
上記ステップS29において、停電が発生していると判定した場合(ステップS29;Yes)は、一旦割込みを禁止する処理(ステップS30)、全出力ポートをオフにする処理(ステップS31)を行う。その後さらに、停電復旧検査領域に停電復旧検査領域チェックデータをセーブする処理(ステップS32)、RWMの電源遮断時のチェックサムを算出する処理(ステップS33)を行なった後、RWMへのアクセスを禁止する処理(ステップS34)を行なってから、遊技機の電源が遮断されるのを待つ。このように、停電復旧検査領域にチェックデータをセーブするとともに、電源遮断時のチェックサムを算出することで、電源の遮断の前にRWMに記憶されていた情報が正しくバックアップされているか否かを電源再投入時に判断することができる。
〔乱数エラー監視処理〕
次に、上述のメイン処理における乱数エラー監視処理(ステップS27)の詳細について説明する。
図11に示すように、乱数エラー監視処理では、先ず乱数生成回路608内の前記更新エラー報知レジスタ608b15の値を読み込んで更新エラーが発生しているかを確認する(ステップS271)。そして、更新エラーが発生していない(ステップS272;No)と判断した場合には何もせずに当該乱数エラー監視処理から抜ける。一方、更新エラーが発生している(ステップS272;Yes)と判断した場合には、RWM内に設けられている更新エラーフラグをオンに設定する処理(ステップS273)、初期値設定フラグをオンに設定する処理(ステップS274)を順次行う。更新エラーフラグは次の図12の初期値乱数更新処理の中で、また初期値設定フラグは図14の乱数更新処理1の中でそれぞれ参照される。
なお、ステップS272で更新エラーが発生している(ステップS272;Yes)場合に、乱数回路リセットレジスタ608b11のフラグをオンすることで再起動を行い、それでも更新エラーが解消されない場合に、S273、S274を実行するようにしてもよい。また、更新エラーが発生した場合に、一括表示装置50のエラーを表示するエラー表示部(LED)を点灯するようにしてもよい。
また、乱数回路エラー報知コマンドを送信するようにしてもよい。このコマンドは、演出制御装置300(図3参照)へ送信されるコマンドで、このコマンドを受信すると、演出制御装置300は例えば表示装置41においてエラー発生を示す表示が行われる。エラー発生を示す表示は、遊技店の店員が認識できればよく、例えば液晶表示器の所定位置(隅部等)に所定の記号を表示することで、遊技に影響を与えないようにすることが望ましい。
〔初期値乱数更新処理〕
次に、上述のメイン処理における初期値乱数更新処理(ステップS28)の詳細について説明する。
図12に示すように、初期値乱数更新処理では、先ずRWM内の前記更新エラーフラグを読み込んでフラグ(更新エラーフラグ)の状態を確認する(ステップS281)。そして、更新エラーフラグがオンしていない(ステップS282;No)と判断した場合には何もせずに当該乱数エラー監視処理から抜ける。一方、更新エラーフラグがオンしている(ステップS272;Yes)と判断した場合には、特図の大当り乱数をインクリメント(更新(+1))する処理(ステップS283)、普図の当り初期値乱数をインクリメント(更新(+1))する処理(ステップS284)、大当り図柄初期値乱数1をインクリメント(更新(+1))する処理(ステップS285)、大当り図柄初期値乱数2をインクリメント(更新(+1))する処理(ステップS286)を順次行う。
なお、各乱数更新処理では、上限値がそれぞれ設けられ、上限値に達すると0となり、0から上限値の間で順次更新(+1)する処理が行なわれる。従って、遊技用マイコン111のCPU111Aによるメイン処理は、周回初期値として用いられる値を生成する置換カウンタを更新する置換カウンタ更新手段と、更新異常情報記憶手段としての更新エラー報知レジスタを参照し、第1乱数生成手段としての乱数生成回路608での乱数値の更新に異常が発生したか否かを判定する異常判定手段として機能する。
ここで、「大当り図柄初期値乱数1」は、特図1の大当り停止図柄を決定する乱数の初期値となる乱数、「大当り図柄初期値乱数2」は、特図2の大当り停止図柄を決定する乱数の初期値乱数のことである。また、「当り初期値乱数」は普図変動ゲームの当りを決定する乱数の初期値となる乱数のことである。このように、メイン処理の中で時間が許す限り乱数をインクリメントし続けることによって、乱数のランダム性を高めることができるようにしている。大当り乱数は、特図1および特図2の変動表示ゲームに共通の乱数である。
〔タイマ割込み処理〕
次に、タイマ割込み処理について説明する。
図13に示すように、タイマ割込み処理は、クロックジェネレータ内のCTC回路で生成される周期的なタイマ割込み信号がCPU111Aに入力されることで開始される。遊技用マイコン111Aにおいてタイマ割込みが発生すると、図13のタイマ割込み処理が開始される。
タイマ割込み処理が開始されると、まず所定のレジスタに保持されている値をRWMに移すレジスタ退避の処理(ステップS41)を行う。なお、本実施例において遊技用マイコンとして使用しているZ80系のマイコンでは、当該処理を表レジスタに保持されている値を裏レジスタに退避することで置き換えることができる。次に、各種センサ(始動口1スイッチ36a、始動口2スイッチ37a、普図のゲートスイッチ34a、カウントスイッチ38aなど)からの入力の取込み、即ち、各入力ポートの状態を読み込む入力処理(ステップS42)を行う。それから、各種処理でセットされた出力データに基づき、ソレノイド(大入賞口SOL38b、普電SOL37c)等のアクチュエータの駆動制御などを行うための出力処理(ステップS43)を行う。
次に、各種処理で送信バッファにセットされたコマンドを演出制御装置300や払出制御装置200等に出力するコマンド送信処理(ステップS44)、乱数更新処理1(ステップS45)、乱数更新処理2(ステップS46)を行う。その後、始動口1スイッチ36a、始動口2スイッチ37a、普図のゲートスイッチ34a、入賞口スイッチ35a…35n、カウントスイッチ38aから正常な信号の入力があるか否かの監視や、エラーの監視(前面枠やガラス枠が開放されていないかなど)を行う入賞口スイッチ/エラー監視処理(ステップS47)を行う。また、特図変動表示ゲームに関する処理を行う特図ゲーム処理(ステップS48)、普図変動表示ゲームに関する処理を行う普図ゲーム処理(ステップS49)を行う。
次に、遊技機10に設けられ、特図変動ゲームの表示や遊技に関する各種情報を表示するセグメントLEDを所望の内容を表示するように駆動するセグメントLED編集処理(ステップS50)、磁気センサスイッチ61や振動センサスイッチ62からの検出信号をチェックして異常がないか判定する磁石不正監視処理(ステップS51)を行う。それから、外部の各種装置に出力する信号を出力バッファにセットする外部情報編集処理(ステップS52)を行う。続いて、割込み要求をクリアして割込みの終了を宣言する処理(ステップS53)を行い、ステップS41で退避したレジスタのデータを復帰する処理(ステップS54)を行った後、割込みを許可する処理(ステップS55)を行なって、タイマ割込み処理を終了する。
〔乱数更新処理1〕
次に、上述のタイマ割込み処理における乱数更新処理1(ステップS45)の詳細について説明する。
乱数更新処理1は、図12の初期値乱数更新処理の対象となっている大当り乱数、当り乱数、大当り図柄乱数1、大当り図柄乱数2の初期値(スタート値)を更新するための処理であり、遊技用マイコン111が備える乱数生成回路(図4:608)内のレジスタ(スタート値設定レジスタ608b5)に設定する初期値を更新する。
図14に示すように、乱数更新処理1においては、先ずRWM内の前記更新エラーフラグを読み込んでフラグ(更新エラーフラグ)の状態を確認する(ステップS451)。そして、更新エラーフラグがオンしていない(ステップS452;No)と判断した場合には何もせずに当該乱数更新処理1から抜ける。一方、更新エラーフラグがオンしている(ステップS452;Yes)と判断した場合には、初期値設定フラグの状態を確認する(ステップS451)。そして、初期値設定フラグがオンしていない(ステップS453;No)と判断した場合にはステップS459へジャンプする。
また、初期値設定フラグがオンしている(ステップS453;Yes)と判断した場合にはステップS454へ進み、前記初期値乱数更新処理(図12)で更新される大当り初期値乱数の値をRWM内の所定の領域(大当り用のソフト乱数カウンタ)にセーブする。続いて、当り初期値乱数の値、大当り図柄初期値乱数1の値、大当り図柄初期値乱数2の値を順次RWM内の対応する領域にセーブ(ステップS455,S456,S457)。それから、初期値設定フラグをオフ設定(ステップS458)して、ステップS459へ進む。上記のように、乱数更新処理1では、更新エラーフラグがオンしていると図10のステップS28の初期値乱数更新処理で更新される各種乱数の初期値乱数を、1度だけRWMにセーブすることとなる。ここで、乱数生成回路608により更新される初期値乱数を使用するようにしてもよい。
ステップS459では、ステップS454の処理で大当り初期値乱数の値がセーブされたRWM内の大当り乱数を読み込んで更新(+1)する処理を行う。そして、次のステップS460で、該大当り乱数が一巡したか判定し、一巡していない(ステップS460:No)と判定すると、更新結果を元の場所にセーブする(ステップS461)。また、大当り乱数が一巡した(ステップS460:Yes)と判定すると、ステップS462へ移行して初期値乱数更新処理(図12)で更新される大当り初期値乱数の値をセーブして、ステップS463へ進む。
ステップS463では、ステップS455の処理で当り初期値乱数の値がセーブされたRWM内の当り乱数を読み込んで更新(+1)する処理を行う。そして、次のステップS464で、該当り乱数が一巡したか判定し、一巡していない(ステップS464:No)と判定すると、更新結果を元の場所にセーブする(ステップS465)。また、当り乱数が一巡した(ステップS464:Yes)と判定すると、ステップS466へ移行して初期値乱数更新処理(図12)で更新される当り初期値乱数の値をセーブして、ステップS467へ進む。
ステップS467では、ステップS456の処理で大当り図柄初期値乱数1の値がセーブされたRWM内の大当り図柄乱数1を読み込んで更新(+1)する処理を行う。そして、次のステップS468で、該大当り図柄乱数1が一巡したか判定し、一巡していない(ステップS468:No)と判定すると、更新結果を元の場所にセーブする(ステップS469)。また、大当り図柄乱数1が一巡した(ステップS468:Yes)と判定すると、ステップS470へ移行して初期値乱数更新処理(図12)で更新される大当り図柄初期値乱数1の値をセーブして、ステップS471へ進む。
ステップS471では、ステップS457の処理で大当り図柄初期値乱数2の値がセーブされたRWM内の大当り図柄乱数2を読み込んで更新(+1)する処理を行う。そして、次のステップS472で、該大当り図柄乱数2が一巡したか判定し、一巡していない(ステップS472:No)と判定すると、更新結果を元の場所にセーブする(ステップS473)。また、大当り図柄乱数2が一巡した(ステップS472:Yes)と判定すると、ステップS474へ移行して初期値乱数更新処理(図12)で更新される大当り図柄初期値乱数2の値をセーブして、当該乱数更新処理1から抜ける。
ステップS458で初期値設定フラグがオンされると、次のタイマ割込みで再度当該乱数更新処理1が開始されて、ステップS452で更新エラーフラグがオンされていると判定しても、ステップS453で初期値設定フラグがオフと判定されてステップS459へジャンプするため、それぞれの乱数が一巡するまでは、タイマ割込みがかかる度に各乱数の更新(+1)処理が行われる。
従って、CPU111Aの割込み処理は、割込みタイマのタイムアップに基づいて乱数値の更新を行う第2乱数生成手段、所定の最小値と最大値の範囲内で循環して乱数カウンタを更新する乱数カウンタ更新手段、乱数カウンタが更新されて周回初期値に達する毎に、乱数カウンタの新たな周回初期値を設定する攪拌手段として機能する。
上記のように、乱数更新処理1における乱数の更新が、更新エラーフラグがオンになっている場合に実行されるのは、乱数生成回路608が正常に更新を行っている間は図17のステップA205で乱数生成回路の乱数値をロードし、更新エラーが発生すると乱数更新処理1で更新された乱数がロードされるためである。また、乱数更新処理1があることによって、乱数生成回路で更新異常が発生した場合に、乱数生成回路608の乱数値を使用せずに遊技制御を継続して実行することができるようになる。
乱数更新処理1では、図10のステップS28の初期値乱数更新処理で更新されている各種乱数の初期値乱数を開始値として更新するようにしたので、乱数カウンタの開始値をランダムにすることができる。これによって、特定の遊技状態(大当り状態)が発生する乱数カウンタの更新タイミングを割り出すことが難しくなり、不正行為を行うことが著しく困難になる。
また、乱数更新処理1で更新される各種乱数の更新範囲は、乱数生成回路で更新される乱数値と同じ範囲(本実施形態では、普図当り乱数の最大値は例えば0〜250に設定され、特図大当り図柄乱数1,2の最大値は例えば0〜200)で更新するようにしたので、大当りや当りか否かを判定する際に使用する判定値の数を変更する必要がなく、異常発生前と異常発生時とで共通の判定処理を使用することができる。
また、各種乱数の更新範囲は、異常発生前と異常発生時とで同じ確率で抽選を行うことができればよく、例えば、乱数の更新範囲を10倍とし、判定値の数を10倍とするようにしてもよい。
図13のタイマ割込み処理における乱数更新処理2(ステップS46)は、特図1,特図2の変動表示ゲームにおける変動パターンを決定するための変動パターン乱数1,2,3を更新する処理であり、本実施例では、乱数生成回路(図4:608)を使用しないでユーザプログラムによって更新するようにしているので、説明は省略する。ただし、乱数生成回路608内の乱数ブロック608f,608g,608h等を使用して更新することも可能である。その場合、上述した大当り乱数と同様な方法で更新することができる。また、乱数生成回路で更新エラーが発生した場合の処理も上記と同様にすることができる。さらに、乱数生成回路608内のタップ設定レジスタ608b2に設定するタップ値を更新しながら、変動パターン乱数1,2,3を更新するようにしても良い。
〔特図ゲーム処理〕
次に、上述のタイマ割込み処理における特図ゲーム処理(ステップS48)の詳細について説明する。
特図ゲーム処理では、始動口1スイッチ36a及び始動口2スイッチ37aの入力の監視と、特図変動表示ゲームに関する処理全体の制御、特図の表示の設定を行う。
図15に示すように、特図ゲーム処理では、先ず、始動口1スイッチ36a及び始動口2スイッチ37aの入賞を監視する始動スイッチ監視処理(ステップA1)を行う。
始動口スイッチ監視処理では、始動入賞口36、第2始動入賞口をなす普通変動入賞装置37に遊技球の入賞があると、各種乱数(大当り乱数など)の抽出を行い、当該入賞に基づく特図変動表示ゲームの開始前の段階で入賞に基づく遊技結果を事前に判定する遊技結果事前判定を行う。なお、始動口スイッチ監視処理(ステップA1)の詳細については、後に図16を用いて説明する。
次に、カウントスイッチ監視処理(ステップA2)を行う。このカウントスイッチ監視処理では、特別変動入賞装置38内に設けられたカウントスイッチ38aのカウント数を監視する処理を行う。
次に、特図ゲーム処理タイマを更新(−1)して、当該ゲーム処理タイマがタイムアップしたか否かをチェックして(ステップA3)、特図ゲーム処理タイマがタイムアップした(ステップA4;Yes)と判定すると、特図ゲーム処理番号に対応する処理に分岐させるために参照する特図ゲームシーケンス分岐テーブルをレジスタに設定する処理(ステップA5)を行って、当該テーブルを用いて特図ゲーム処理番号に対応する処理の分岐先アドレスを取得する処理(ステップA6)を行う。
そして、分岐処理終了後のリターンアドレスをスタック領域に退避させる処理(ステップA7)を行った後、ゲーム処理番号に応じてゲーム分岐処理(ステップA8)を行う。
ステップA8にて、ゲーム処理番号が「0」の場合は、特図変動表示ゲームの変動開始を監視し、特図変動表示ゲームの変動開始の設定や演出の設定や、特図変動中処理を行うために必要な情報の設定等を行う特図普段処理(ステップA9)を行う。
また、ステップA8にて、ゲーム処理番号が「1」の場合は、特図の停止表示時間の設定や、特図表示中処理を行うために必要な情報の設定等を行う特図変動中処理(ステップA10)を行う。
さらに、ステップA8にて、ゲーム処理番号が「2」の場合は、特図変動表示ゲームの遊技結果が大当りであれば、大当りの種類(2R大当りor15R大当り)に応じたファンファーレコマンドの設定や、各大当り(2R大当りor15R大当り)の大入賞口開放パターンに応じたファンファーレ時間の設定や、ファンファーレ/インターバル中処理を行うために必要な情報の設定等を行う特図表示中処理(ステップA11)を行う。
また、ステップA8にて、ゲーム処理番号が「3」の場合は、大入賞口の開放時間の設定や開放回数の更新、大入賞口開放中処理を行うために必要な情報の設定等を行うファンファーレ/インターバル中処理(ステップA12)を行う。
また、ステップA8にて、ゲーム処理番号が「4」の場合は、大当りラウンドが最終ラウンドでなければインターバルコマンドを設定する一方で最終ラウンドであれば大当り終了画面のコマンドを設定する処理や、大入賞口残存球処理を行うために必要な情報の設定等を行う大入賞口開放中処理(ステップA13)を行う。
また、ステップA8にて、ゲーム処理番号が「5」の場合は、大当りラウンドが最終ラウンドであれば大入賞口内にある残存球が排出されるための時間を設定する処理や、大当り終了処理を行うために必要な情報の設定等を行う大入賞口残存球処理(ステップA14)を行う。
また、ステップA8にて、ゲーム処理番号が「6」の場合は、特図普段処理(ステップA9)を行うために必要な情報の設定等を行う大当り終了処理(ステップA15)を行う。
その後、分岐処理にて準備したテーブルの各データをRWMの作業領域にセーブする(ステップA16)。
そして、特図1表示器51の変動を制御するためのテーブルを準備した後(ステップA17)、特図1表示器51に係る図柄変動制御処理(ステップA18)を行う。その後、特図2表示器52の変動を制御するためのテーブルを準備した後(ステップA19)、特図2表示器52に係る図柄変動制御処理(ステップA20)を行う。
一方、ステップA4にて、特図ゲーム処理タイマがタイムアップしていない(ステップA4;No)と判定すると、処理をステップA17に移行して、それ以降の処理を行う。
〔始動口スイッチ監視処理〕
次に、上述の特図ゲーム処理における始動口スイッチ監視処理の詳細について説明する。
図16に示すように、始動口スイッチ監視処理では、先ず、始動入賞口36(第1始動口)による始動口入賞演出コマンドを設定するテーブルを準備し(ステップA111)、さらに、第1始動口による保留の情報を設定するテーブルを準備した後(ステップA112)、特図始動口スイッチ共通処理(ステップA113)を行う。
なお、ステップA113における特図始動口スイッチ共通処理の詳細については、後に図17を用いて説明する。
次に、普通電動役物(普通変動入賞装置37)が作動中である、即ち、普通変動入賞装置37が作動して遊技球の入賞が可能な開状態となっているか否かをチェックして(ステップA114)、普通電動役物が作動中である(ステップA115;Yes)と判定すると、処理をステップA118に移行して、それ以降の処理を行う。一方、ステップA115にて、普通電動役物が作動中でない(ステップA115;No)と判定すると、普通変動入賞装置37への不正入賞数が不正発生判定個数以上であるかをチェックして(ステップA116)、不正入賞数が不正発生判定個数以上であるか否かを判定する処理(ステップA117)を行う。
普通変動入賞装置37は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数する。そして、このように計数された不正入賞数が所定の不正発生判定個数(上限値)以上であるかが判定される。
ステップA117にて、不正入賞数が不正判定個数以上でない(ステップA117;No)と判定すると、普通変動入賞装置37(始動口2)による始動口入賞演出コマンドを設定するテーブルを準備する(ステップA118)。
その後、始動口2による保留の情報を設定するテーブルを準備した後(ステップA119)、特図始動口スイッチ共通処理(ステップA120)を行って、始動口スイッチ監視処理を終了する。
また、ステップA117にて、不正入賞数が不正判定個数以上であると判定された場合も(ステップA117;Yes)、始動口スイッチ監視処理を終了する。即ち、第2始動記憶をそれ以上発生させないようにする。
〔特図始動口スイッチ共通処理〕
次に、上述の始動口スイッチ監視処理における特図始動口スイッチ共通処理(ステップA113、A120)の詳細について説明する。
特図始動口スイッチ共通処理は、始動口1スイッチ36aや始動口2スイッチ37aの入力があった場合に、各々の入力について共通して行われる処理である。
図17に示すように、特図始動口スイッチ共通処理では、CPU111Aは、先ず始動口1スイッチ36a及び始動口2スイッチ37aのうち、監視対象の始動口スイッチ(例えば、始動口1スイッチ36a等)に入力があるか否かをチェックして(ステップA201)、監視対象の始動口スイッチに入力がない(ステップA202;No)と判定すると、特図始動口スイッチ共通処理を終了する。一方、ステップA202にて、監視対象の始動口スイッチに入力がある(ステップA202;Yes)と判定すると、当該監視対象の始動口スイッチの始動口入賞フラグをセーブする(ステップA203)。
その後、予めROM111B内に記憶されている更新エラーフラグの状態(0または1)とロードアドレスとの対応を示すテーブル(大当り乱数アドレステーブル)を参照して、更新エラーフラグの状態(0または1)に対応したロードアドレスを取得する(ステップA204)。そして、取得したロードアドレスに格納されている値を大当り乱数としてロード(大当り乱数の抽出)する(ステップA205)。
大当り乱数アドレステーブルには、更新エラーフラグの「0」に対応して乱数生成回路608内の乱数カウンタ608b7のアドレスが格納され、更新エラーフラグの「1」に対応してRAM111C(RWM)内の大当り乱数領域のアドレスが格納されているため、ステップS205では、更新エラーフラグが「0」のときは乱数カウンタ608b7の値がロードされ、更新エラーフラグが「1」のときはRAM111C内の大当り乱数領域の値がロードされることとなる。従って、RAM111Cが取得アドレステーブルを記憶した記憶手段として機能する。
その後、始動口1スイッチ36a及び始動口2スイッチ37aのうち、監視対象の始動口スイッチ(例えば、始動口1スイッチ36a等)への入賞の回数に関する情報が遊技機10の外部の管理装置に対して出力された回数(始動口信号制御出力回数)をロードする(ステップA206)。そして、ロードした値を更新(+1)し、出力回数がオーバーフローするか否かをチェックして(ステップA207)、出力回数がオーバーフローしない(ステップA208;No)と判定すると、更新後の値をRWMの始動口信号出力回数領域にセーブして(ステップA209)、処理をステップA209に移行する。一方、ステップA207にて、出力回数がオーバーフローしないと判定された場合は(ステップA208;Yes)、ステップA209をスキップしてステップA210に移行する。
そして、ステップA210にて、始動口1スイッチ36a及び始動口2スイッチ37aのうち、監視対象の始動口スイッチ(例えば、始動口1スイッチ36a等)に対応する更新対象の特図保留(始動記憶)数が上限値未満か否かをチェックして、特図保留数が上限値未満か否かを判定する処理(ステップA211)を行う。
ステップA211にて、特図保留数が上限値未満でない(ステップA211;No)と判定すると、ステップA202に係る始動口スイッチの入力が始動口1スイッチ36aの入力であるか否かをチェックして(ステップA212)、始動口1スイッチ36aの入力である(ステップA213;Yes)と判定すると、飾り特図保留数コマンド(オーバーフローコマンド)を準備し(ステップA214)、コマンド設定処理(ステップA215)を行って、特図始動口スイッチ共通処理を終了する。
また、ステップA213にて、始動口1スイッチ36aの入力でない(ステップA212;No)と判定された場合は、ステップA214〜A215をスキップして当該特図始動口スイッチ共通処理を終了する。
一方、ステップA211にて、特図保留数が上限値未満である(ステップA211;Yes)と判定すると、ステップA216へ移行して更新対象の特図保留数(例えば、特図1保留数等)を更新(+1)する処理を行った後、始動口1スイッチ36a及び始動口2スイッチ37aのうち、監視対象の始動口スイッチ(例えば、始動口1スイッチ36a等)の飾り特図保留数コマンド(MODE)を準備した後(ステップA217)、特図保留数に対応する飾り特図保留数コマンド(ACTION)を準備して(ステップA218)、コマンド設定処理(ステップA219)を行う。
それから、特図保留数に対応する乱数セーブ領域のアドレスを算出する処理(ステップA220)を行った後、算出したアドレスを用いて大当り乱数をRWMの乱数セーブ領域にセーブする(ステップA221)。
その後、予めROM内に記憶されている始動口スイッチごとの更新エラーフラグの状態(0または1)とロードアドレスとの対応を示すテーブル(大当り図柄乱数アドレステーブル)を取得する(ステップA222)。そして、該テーブルより、更新エラーフラグの状態(0または1)に対応したロードアドレスを取得する(ステップA223)。そして、取得したロードアドレスに格納されている値を大当り図柄乱数として大当り図柄乱数をRWMの乱数セーブ領域にセーブする(ステップA224)。大当り図柄乱数アドレステーブルには、更新エラーフラグの「0」に対応して乱数生成回路608内の乱数カウンタ608b7のアドレスが格納され、更新エラーフラグの「1」に対応してRAM111C(RWM)内の大当り図柄乱数領域のアドレスが格納されているため、ステップS224では、更新エラーフラグが「0」のときは乱数カウンタ608b7の値がセーブされ、更新エラーフラグが「1」のときはRAM111C内の大当り図柄乱数領域の値がセーブされることとなる。
次に、RWM内の変動パターン乱数1領域から変動パターン乱数1を抽出(ロード)し、抽出した値をRWMの変動パターン乱数1セーブ領域にセーブする処理(ステップA225)、RWM内の変動パターン乱数2領域から変動パターン乱数2を抽出(ロード)し、抽出した値をRWMの乱数セーブ領域にセーブする処理(ステップA226)、RWM内の変動パターン乱数3領域から変動パターン乱数3を抽出(ロード)し、抽出した値をRWMの乱数セーブ領域にセーブする処理(ステップA227)を行う。
続いて、始動口への入賞による始動記憶に基づく特図変動表示ゲームの開始タイミングより前に当該始動記憶に対応した結果関連情報の判定を行う特図保留情報判定処理(ステップA228)を実行して、特図始動口スイッチ共通処理を終了する。
なお、普図ゲートスイッチ(34a)がオンした場合にも、図13の普図ゲーム処理S49の中で、普図の当り乱数に関して上記(図17)と同様な処理により、乱数生成回路608が生成した当り乱数(正常時)、またはプログラムにより生成されるRAM内の当り乱数(更新異常発生時)の取得が行われるようになっている。
次に、上記実施例の遊技機の変形例について説明する。
図18には、第1の変形例における乱数エラー監視処理の手順が示されている。このフローチャートは、上記実施例における図11の乱数エラー監視処理を変更したものである。
図18に示すように、第1の変形例の乱数エラー監視処理では、先ず乱数生成回路608内の前記更新エラー報知レジスタ608b15の値を読み込んで更新エラーが発生しているかを確認する(ステップS271)。そして、更新エラーが発生していない(ステップS272;No)と判断した場合には何もせずに当該乱数エラー監視処理から抜ける。一方、更新エラーが発生している(ステップS272;Yes)と判断した場合には、ステップS275へ進み、特図ゲーム処理(図15)中の特図普段処理(A9)を実行中か否か判定する。そして、特図普段処理(A9)を実行中でない(ステップS275;No)と判断した場合には何もせずに当該乱数エラー監視処理から抜ける。
一方、特図普段処理(A9)を実行中である(ステップS275;Yes)と判断した場合には、ステップS276へ進み、割込み禁止処理をした後、乱数回路エラー報知コマンドを送信する(ステップS277)。このコマンドは、演出制御装置300(図3参照)へ送信されるコマンドで、このコマンドを受信すると、演出制御装置300は例えば表示装置41においてエラー発生のメッセージの表示を行う。また、ステップS276の割込み禁止処理が実行されることにより、図13のタイマ割込み処理が実行されなくなる。また、コマンド送信後は、符号「3」に従って、メイン処理(図10)のステップS31へジャンプするようになっている。これにより、全出力ポートをオフにする処理等が実行され、遊技制御が不能動化されることとなる。
特図普段処理(A9)は、特図変動表示ゲームの変動開始の設定や演出の設定や、特図変動中処理を行うために必要な情報の設定等を行う処理であり、この処理が実行されているということは、大当り遊技中ではないことを意味している。仮に、大当り遊技中に乱数生成回路608における更新エラーの発生で遊技の進行が中断されてしまうとすると、遊技者に不利益を与えることとなって望ましくない。そこで、この変形例では、更新エラーが発生しても特図普段処理(A9)の実行中は何もせず、特図普段処理(A9)の実行中でないときに更新エラーが発生した場合に、割込み禁止処理を行うとともに、乱数回路エラー報知コマンドを送信するようにしたものである。
一方、この第1の変形例における乱数エラー監視処理には、図11の乱数エラー監視処理中のステップS273およびS274に相当する処理がないので、図12の初期値乱数更新処理中におけるステップS281およびS282は不要とされる。また、同様の理由から、第1の変形例を適用した場合、図14の乱数更新処理1中のステップS453〜S458は不要とされる。また、図14のステップS451,S452は、図18のステップS271,S272と同様な内容、すなわち更新エラー報知レジスタ608b15の確認と、更新エラーの発生の確認とすればよい。
図19には、第2の変形例における乱数エラー監視処理の手順が示されている。この変形例の乱数エラー監視処理は、図18の第1変形例の乱数エラー監視処理中のステップS275およびS276を省略して、更新エラーが発生している(ステップS272;Yes)と判断した場合には、ステップS277へ進み、乱数回路エラー報知コマンドを送信するようにしたものである。また、コマンド送信後は、メイン処理(図10)のステップS33へジャンプせず、乱数エラー監視処理から抜けるようにしている。この第2変形例に従うと、割込み禁止処理を実行しないので、図13のタイマ割込み処理は引き続き実行される。つまり、更新エラーの発生で遊技の進行が中断されることはない。
上述の説明から、上記実施形態には、始動領域が設けられた遊技領域と、前記始動領域への遊技球の通過に応じて補助遊技を実行し、前記補助遊技が特別な結果になった場合に遊技者に特典を付与する遊技制御装置と、を備えた遊技機において、
前記遊技制御装置は、所定の時間毎に乱数値の更新を行う第1乱数生成手段および第2乱数生成手段と、前記第1乱数生成手段での乱数値の更新に異常が発生したか否かを検出する更新異常検出手段と、前記第1乱数生成手段での更新に異常が発生したことを示す更新異常情報が記憶される更新異常情報記憶手段と、所定の乱数取得条件が発生したことを検出する取得条件検出手段と、前記取得条件検出手段によって前記所定の乱数取得条件の発生が検出された場合に、前記第1乱数生成手段から乱数値を取得する乱数値取得手段と、前記乱数値取得手段によって取得された乱数値を判定して遊技に係わる決定処理を行う遊技結果決定手段と、を備え、
前記乱数値取得手段は、前記取得条件検出手段によって前記所定の乱数取得条件の発生が検出されると、前記更新異常情報記憶手段を参照し、前記更新異常情報記憶手段に前記第1乱数生成手段での乱数値の更新に異常が発生したことを示す更新異常情報が記憶されている場合には、前記第2乱数生成手段から乱数値を取得する発明が含まれることが分かる。
以上本発明者によってなされた発明を実施形態に基づき具体的に説明したが、今回開示した実施形態は、全ての点で例示であって制限的なものではない。例えば、前記実施形態では、乱数生成回路608で乱数値が更新されなかった場合にエラーを示す値が設定される更新エラー報知レジスタ608b10や、一周完了報知レジスタ608b6、乱数更新中を報知するレジスタ608b9、スタート値設定レジスタ608b5に次回に設定される値(開始値)が記憶されているか否かを示すスタート値設定ビットやタップ設定ビットを記憶するソフト乱数ステータスレジスタ608b15を別々のレジスタとして設けているが、これらのレジスタを1つのステータスレジスタとして構成するようにしても良い。このようにすれば、レジスタの数を減らすことができる。また、このステータスレジスタには、カウンタモードにおける更新エラーと乱数モードにおける更新エラーとを区別して設定できるようにしてもよい。
また、前記実施形態では、6つの乱数生成ブロックのうち1つで乱数更新エラーが発生すると、プログラムによる乱数生成処理に切り替えるようにした実施例について説明したが、いずれかの乱数生成ブロックで乱数更新エラーが発生したら未使用の乱数生成ブロックに切り替えて制御を継続するようにしても良い。また、乱数生成回路がブロックの切り替えが不能なアーキテクチャである場合には特に重要な乱数(大当り乱数や普図当り乱数)については2つの乱数生成ブロックで並行して乱数更新処理を行って一方の乱数生成ブロックから乱数をロードし、その乱数生成ブロックで乱数更新エラーが発生した場合には他方の乱数生成ブロックから乱数をロードするように、ユーザプログラムを構成するようにしても良い。
さらに、前記実施形態では、本発明をパチンコ遊技機に適用したものを説明したが、本発明はパチンコ遊技機に限定されず、アレンジボール遊技機、雀球遊技機、及びスロットマシンなどの遊技機にも適用可能である。