以下、本発明の好適な実施の形態を図面に基づいて説明する。
図1は、本発明の一実施形態の遊技装置の説明図である。
本実施形態の遊技装置は、遊技者が保有する遊技媒体数(遊技球数)もしくはそれに変換可能な金銭の額等の有価価値を記憶する記憶媒体が挿入されるカードユニット70及び実際に遊技を実行し遊技媒体を払出可能な遊技機10を備える。
遊技機10は、本体枠(外枠)11と前面枠12を備え、該前面枠12は本体枠(外枠)11にヒンジ13を介して開閉回動可能に組み付けられている。上記前面枠12の前面側に形成された収納部(図示省略)に、遊技盤50(図3参照)が収納されている。また、前面枠12には、遊技盤50の前面を覆うカバーガラス(透明部材)を備えたガラス枠15が取り付けられている。
ガラス枠15のカバーガラスの周囲には、内部にランプやLED等からなる発光装置を備えた装飾部材16が設けられている。ガラス枠15の上方にも内部に発光装置を備えた照明ユニット17が設けられている。これらの発光装置が所定の態様に従って発光されることによって、遊技の演出効果を高める装飾発光や遊技状態を示す発光がなされる。
さらに、照明ユニット17の右側には、遊技機10のエラー発生や前面枠12の開放をホール店員に通知するためのエラー報知LED18が設けられている。ガラス枠12の下部左側には、音響(例えば、効果音)を発するスピーカ19が設けられている。
前面枠12の下部には開閉パネル20と固定パネル30が設けられ、開閉パネル20には、図示しない打球発射装置に遊技球を供給する上皿21が設けられ、該上皿21の上縁部には、遊技者からの操作入力を受け付けるためのセレクトスイッチ22及び操作スイッチ23が設けられている。また、固定パネル30には灰皿31、下皿32及び打球発射装置の操作部33等が設けられている。さらに、下皿32には、該下皿32に貯まった遊技球を排出するための下皿球抜き機構34が設けられている。
この実施形態の遊技装置にあっては、遊技者が上記操作部33を回動操作することによって、打球発射装置が、上皿21から供給される遊技球を発射する。また、遊技者がセレクトスイッチ22を操作することによって、遊技盤の中央に設けられている表示装置61(図3参照)における変動表示ゲームの演出内容を選択することができる。さらに、遊技者が操作スイッチ23を操作することによって、表示装置61で実行される変動表示ゲームにおいて、遊技者の操作を介入させた演出を行わせることができる。
上皿21の右上部には、遊技者が遊技媒体を借り受ける際に操作する球貸ボタン26、及び、カードユニット70からプリペイドカードを排出させるために操作する排出ボタン27が設けられている。また、これらのボタン26、27の間には、プリペイドカードの残高を表示する残高表示部28が設けられている。
遊技機10の左側に隣接して配置されているカードユニット70の下部には、プリペイドカード又は会員カード等のカードが挿入可能なカード挿入口71が設けられている。プリペイドカード又は会員カード等のカードには、当該カードの識別情報、当該カードの所有者(遊技者)の会員情報、及び残高等が記憶されている。会員情報には、カードの所有者の住所、氏名、年齢、及び職業等が含まれる。
カード挿入口71にプリペイドカード又は会員カード等のカードが挿入された場合、内部のカードリーダ・ライタによって、カードに記憶された情報が読み出される。そして、読み出された情報のうちカード残高が、遊技機10の残高表示部28及びカードユニット70の中央付近に設けられた残高表示部72に表示される。
残高表示部72の上方には、紙幣を挿入可能な紙幣挿入口73が設けられており、紙幣挿入口73に挿入された紙幣の金額は、カードに残高として記憶される。紙幣挿入口73の上方には、動作表示部74が設けられている。動作表示部74は、カードユニット70の動作状態に対応して発光色が変化される。
次に、図2を用いて遊技機10の裏面側の構成を説明する。図2は、本実施形態の遊技機10の背面図である。
遊技機10の裏面側、具体的には、前面枠12の背部には、中央に略正方形状の開口部を有する枠状の裏機構盤40が取り付けられている。裏機構盤40の上部には、島設備に設けられた補給装置(図示省略)から補給された遊技球を貯留すると共に、貯留した遊技球を流下させる球貯留ユニット41が配設されている。裏機構盤40の側部(図2の右側)には、球貯留ユニット41から流下してきた遊技球を、遊技機前面に配設された上皿21及び下皿32に払い出す球排出ユニット42が配設されている。
裏機構盤40の中央部には、遊技を統括的に制御する遊技制御装置100と、遊技制御装置100から送信される演出制御指令に基づいて変動表示ゲームの演出を制御する演出制御装置150とが配設され、遊技制御装置100には、検査装置に接続される検査装置接続端子107が配設されている。
裏機構盤40の下部には、遊技制御装置100から送信されるデータに基づいて球排出ユニット42の動作を制御する払出制御装置200と、電源装置160とが配設されている。払出制御装置200には、検査装置に接続される検査装置接続端子217及び払出制御装置200に発生したエラーの種類を数字で表示するエラーナンバー表示器43が配設されている。また、電源装置160の右側には、遊技機10をカードユニット70に接続するためのカードユニット接続端子170が配設されている。
次に、遊技盤50について、図3を用いて説明する。図3は、本実施形態の遊技盤50の正面図である。
遊技盤50の表面には、ガイドレール53で囲われた略円形状の遊技領域51が形成されている。遊技領域51は、遊技盤50の四方に各々設けられた樹脂製のサイドケース52及びガイドレール53によって構成される。
遊技領域51には、ほぼ中央に表示装置61を備えたセンターケース60が配置されている。表示装置61は、センターケース60に設けられた凹部に、センターケース60の前面より奥まった位置に取り付けられている。すなわち、センターケース60は表示装置61の表示領域の周囲を囲い、表示装置61の表示面よりも前方へ突出するように形成されている。
表示装置61は、例えば、LCD(液晶表示器)、CRT(ブラウン管)等の表示画面を有する装置で構成されている。表示画面の画像を表示可能な領域(表示領域)には、複数の識別情報(特別図柄)や特図変動表示ゲームを演出するキャラクタが表示される。表示画面は1つであるが、複数(例えば3つ)の変動表示領域を有するとみることができ、
各変動表示領域には、識別情報として割り当てられた特別図柄が変動表示(可変表示)して特図変動表示ゲームが行われる。その他、表示画面には遊技の進行に基づく画像(例えば、大当たり表示、ファンファーレ表示、エンディング表示等)が表示される。
センターケース60の左側には、普通図柄始動ゲート54が設けられている。センターケース60の左下側には、三つの一般入賞口55が配置され、センターケース60の右下側には、一つの一般入賞口55が配置されている。また、センターケース60の下側には、始動入賞口56が、またその直下には開閉可能な普通変動入賞装置57aを備える始動入賞装置57が配設されている。
さらに、始動入賞装置57の下方には、表示装置61の変動結果によって遊技球を受け入れない状態と受け入れ易い状態とに変換可能な特別変動入賞装置(大入賞口)58が配設される。また、遊技盤50の右上には、セグメント型表示器などからなる普図表示器62と、特図表示器63と、特図変動表示ゲーム及び普図変動表示ゲームの未処理回数を表示する発光表示ユニット64が設けられている。普図表示器62は、遊技球が普通図柄始動ゲート54を通過した場合に行われる変動表示ゲームが表示される。特図表示器63には、遊技球が始動入賞口56または始動入賞装置57に入賞した場合に行われる変動表示ゲームが表示される。
本実施形態の遊技機10では、図示しない発射装置から遊技領域51に向けて遊技球(パチンコ球)が打ち出されることによって遊技が行われる。打ち出された遊技球は、遊技領域51内の各所に配置された障害釘や風車等の方向転換部材によって転動方向を変えながら遊技領域51を流下し、普通図柄始動ゲート54、一般入賞口55、始動入賞口56、始動入賞装置57又は特別変動入賞装置58に入賞するか、遊技領域51の最下部に設けられたアウト口59へ流入し遊技領域から排出される。
なお、始動入賞装置57の状態には、普通変動入賞装置57aの開閉によって、遊技球が入賞しやすい状態と遊技球が入賞しにくい状態とがある。通常、普通変動入賞装置57aは閉状態であり、始動入賞装置57は、遊技球が入賞しにくい状態にされている。普通図柄始動ゲート54を遊技球が通過することによって、普図表示器62で普図変動表示ゲームが実行され、普図変動表示ゲームの結果、当たり状態が発生すると、普通変動入賞装置57aが開状態に変換され、始動入賞装置57は遊技球が入賞し易い状態となる。
一般入賞口55への遊技球の入賞は、一般入賞口55に設けられた一般入賞口スイッチ55a〜55n(図4参照)によって検出される。始動入賞口56への遊技球の入賞は特図始動スイッチ56a(図4参照)によって、始動入賞装置57への遊技球の入賞は特図始動スイッチ57bによって検出される。この遊技球の通過タイミングによって抽出された特別図柄乱数カウンタ値は、遊技制御装置100内の特図記憶領域(RAMの一部)に特別図柄入賞記憶として所定回数(例えば、最大で4回分)を限度に記憶される。そして、この特別図柄入賞記憶の記憶数は、発光表示ユニット64及び表示装置61の特別図柄入賞記憶数表示部(複合記憶表示部)に表示される。遊技制御装置100は、特別図柄入賞もしくはその記憶に基づいて、特図表示器63で特図変動表示ゲームを行うとともに、表示装置61にて演出表示としての飾り特図変動表示ゲームを行う。
始動入賞口56または始動入賞装置57に遊技球の入賞があると、表示装置61で、前述した数字等で構成される特別図柄(識別情報)が左(第一特別図柄)、右(第二特別図柄)、中(第三特別図柄)の順に変動表示を開始して、特図変動表示ゲームに関する画像が表示される。つまり、表示装置61では、特別図柄入賞記憶の記憶数に対応する特別図柄変動表示ゲームが行われ、興趣向上のために多様な表示を演出する。
始動入賞口56または始動入賞装置57への入賞が所定のタイミングでなされたとき(具体的には、入賞検出時の当たり乱数値が当たり値であるとき)には特図変動表示ゲームの結果として表示図柄により特定の結果態様(特別結果態様)が導出されて、大当たり状態となる。具体的には、表示装置61の特別図柄入賞記憶表示部では、当たり図柄である一桁の特別図柄で停止して、表示装置61は、三つの特別図柄が揃った状態(大当り図柄)で停止する。これに応じて、特別変動入賞装置58は、内蔵されている大入賞口ソレノイド58b(図4参照)が駆動されることによって、所定の時間だけ遊技球を受け入れない閉状態から遊技球を受け入れやすい開状態に変換され、遊技者は多くの賞球を獲得することができるという特典が付与される。
特別変動入賞装置58への遊技球の入賞は、カウントスイッチ58a(図4参照)によって検出される。普通図柄始動ゲート54への遊技球の通過は、普図始動スイッチ54a(図4参照)で検出される。この遊技球の通過タイミングによって抽出された普通図柄乱数カウンタ値は、遊技制御装置100内の普図記憶領域(RAMの一部)に普通図柄入賞記憶として所定回数(例えば、最大で4回分)を限度に記憶される。そして、この普図入賞記憶の記憶数は、表示装置61の図示しない普図入賞記憶数表示部に表示される。
普図入賞記憶があると、遊技制御装置100は、普図入賞記憶に基づいて普図入賞記憶数表示部で普図変動表示ゲームを開始する。すなわち、普通図柄始動ゲート54への通過検出が所定のタイミングでなされたとき(具体的には、通過検出時の普図乱数カウンタ値が当たり値であるときには)には、普図入賞記憶数表示部に表示される普通図柄が当たり状態で停止し、当たり状態となる。このとき、普通変動入賞装置57aは、内蔵されている普電ソレノイド57c(図4参照)が駆動されることにより、所定の時間だけ開放するように変換され、遊技球の始動入賞装置57への入賞が許容される。なお、普通変動入賞装置57aの開放時間は、例えば、確率変動状態及び変動時間短縮状態では2.9秒間、通常遊技状態では0.5秒間として、遊技状態に応じて開放態様が変化するように制御することができる。
このようにして、一般入賞口55、始動入賞口56、57又は特別変動入賞装置58に遊技球が入賞すると、入賞した入賞口の種類に応じた数の賞球が払出制御装置200によって制御される払出ユニット42から、前面枠12の上皿21又は下皿32に排出される。
図4は、本実施形態の遊技装置の制御システムのブロック図である。
遊技機10は遊技制御装置100を備え、遊技制御装置100は、遊技用マイコン110、入力I/F(Interface)105、出力I/F(Interface)106及び検査装置接続端子107を備え、上記遊技用マイコン110は、CPU111、ROM(Read Only Memory)112及びRAM(Random Access Memory)113を備える。
CPU111は、遊技を統括的に制御する主制御装置であって、遊技制御を司る。ROM112は、遊技制御のための不変の情報(プログラム、固定データ等)を記憶している。RAM113は、遊技制御時にCPUの作業領域を提供するワークエリアとして利用される。
遊技制御装置100には検査装置接続端子107が設けられており、検査装置接続端子107からは、遊技用マイコン110に設定された識別番号を出力することができる。これによって、検査装置接続端子107に検査装置を接続すると、検査装置は遊技機10を識別することができる。また、遊技制御装置100は外部情報端子108に接続されており、遊技機10に関する情報を、外部情報端子108を介して、遊技店に設置された情報収集端末や遊技場内部管理装置(図示省略)に出力する。
遊技制御装置100には、各種検出装置(特図始動スイッチ56a,57b、普図始動スイッチ54a、カウントスイッチ58a、一般入賞口スイッチ55a〜55n、オーバーフロースイッチ32a、枠開放スイッチ12a及び球切れスイッチ41a)からの検出信号が入力される。オーバーフロースイッチ32aは、下皿32に遊技球が所定数以上貯留されていることを検出する。枠開放スイッチ12aは、前面枠12が開いたことを検出する。球切れスイッチ41aは、球貯留ユニット41に配設され、球貯留ユニット41に貯留される遊技球が所定数以下になることを検出する。
遊技制御装置100に入力された上記各種検出装置からの検出信号は、入力I/F105を介してCPU111に入力され、CPU111はこれらの信号に基づいて大当り抽選等、種々の処理を行う。また、CPU111は、出力I/F106を介して、発光表示ユニット64、普図表示器62、特図表示器63、普電SOL(ソレノイド)90、大入賞口SOL(ソレノイド)38、払出制御装置200及び演出制御装置150に指令信号を送信して、遊技を統括的に制御する。
さらに、遊技制御装置100は、球払出ユニット42の払出モータ42aを制御する払出制御装置200へ払出し指令信号を送信するとともに、演出制御装置150へ、変動開始コマンド、客待ちデモコマンド、ファンファーレコマンド、確率情報コマンド、及びエラー指定コマンド等を、演出制御指令信号として送信する。
次に、払出制御装置200及び演出制御装置150について説明する。演出制御装置150は、遊技制御装置100から入力される各種信号に基づいて、エラー報知LED18、スピーカ19及び表示装置61を制御する。
払出制御装置200は、遊技制御装置100からの賞球払出し指令信号に従って、払出ユニット42の払出モータ42aを駆動させ、賞球を払い出させるための制御を行う。また、払出制御装置200は、カードユニット70からの貸球要求信号に基づいて遊技制御装置100から送信される払出指令信号に従って、払出ユニット42の払出モータ42aを駆動させ、貸球を払い出させるための制御を行う。
払出制御装置200は、遊技用マイコン210、入力I/F(Interface)215、出力I/F(Interface)216及び検査装置接続端子217を備え、遊技用マイコン210は、CPU211、ROM212及びRAM213を備える。
CPU211は、払い出しを統括的に制御する制御装置であって、払出制御を司る。ROM212は、払出制御のための不変の情報(プログラム、データ等)を記憶している。RAM213は、払出制御時にワークエリアとして利用される。
CPU211には、入力I/F215を介して払出ユニット42内の払出球検出スイッチ42b、オーバーフロースイッチ32a、付勢検出スイッチとしての枠開放スイッチ12a、球切れスイッチ41a、エラー解除スイッチ44からの信号が入力される。また、CPU211は、出力I/F216を介して、払出ユニット42内の払出モータ42a、発射制御装置180、エラーナンバー表示器43等の駆動信号を出力する。
エラー解除スイッチ44は、払出制御装置200にエラーが発生した場合に、遊技店の店員等が発生したエラーの原因を解消した際に、遊技店の店員等によって操作され、エラー状態を解除するためのスイッチである。発射制御装置180は、遊技球を遊技領域51内に発射するための発射装置を制御する。エラーナンバー表示器43は、払出制御装置200の裏面側に配設され、払出制御装置200で発生したエラーの種類を特定可能に表示する。
なお、遊技制御装置100、演出制御装置150、及び払出制御装置200は、電源装置160に接続される。電源装置160は、バックアップ電源161、RAMクリアスイッチ162を備える。バックアップ電源161は、停電時においても、遊技制御装置100、演出制御装置150、及び払出制御装置200に電源を供給する(演出制御装置150には供給しなくてもよい)。RAMクリアスイッチ162は、遊技制御装置100内のRAM113及び払出制御装置200内のRAM213に記憶されている情報を強制的に初期化するスイッチである。
また、遊技機10に設けられている球貸ボタン26が操作されると、カードユニット70は、プリペイドカード又は会員カード等のカードに記憶されている有価価値から貸し出される遊技球分の有価価値を減算して、減算された有価価値の値を遊技機10の残高表示部28に表示する。また、遊技機10に設けられている排出ボタン27が操作されると、カードユニット70は、カード挿入口71に挿入されているカードを排出する。
図5は、上記遊技制御装置100を構成する遊技用マイクロコンピュータ(遊技用演算処理装置)110のより具体的な構成を示すブロック図、図6は乱数生成回路の具体的な構成を示すブロック図である。従来の遊技用マイクロコンピュータは、乱数生成回路が外付けの回路として構成され、接続されていたのに対し、この実施例の遊技用マイクロコンピュータは乱数生成回路を内蔵している点に大きな特徴がある。
この実施例の遊技用マイクロコンピュータ110は、遊技制御を行う遊技制御ブロック110Aと情報管理を行う管理ブロック110Bとに区分され、以下に説明する各回路ブロックを構成する素子が1つ半導体基板上に半導体集積回路(アミューズメントチップ)として形成されている。
遊技制御ブロック110Aは、CPUコア111、プログラムROM112、ワークRAM113、外部バスインターフェース114、バス切換え回路115、復号化・ROM書込み回路116、ミラードRAM117、割込制御回路としての割込みコントローラ118、ブートブロック119、リセット割込み制御回路120、アドレスデコーダ121、出力制御回路122、クロックジェネレータ123、乱数生成回路124及びHWパラメータROM125などの機能ブロックを含む。これらの機能ブロックおよび管理ブロック110B間は、CPUバス126によって接続されている。
CPUコア111は、各種のレジスタ群、演算・論理部(ALU)、命令レジスタ(IR)、デコーダ、プログラムカウンタ(PC)、スタックポインタ(SP)、これらを結ぶデータバス、アドレスバス及び各種制御部をコア内に含み、例えば、Z80アーキテクチャで構成される。CPUコア111は、プログラムROM112に格納されている遊技制御プログラムをロードして実行することによって、遊技機10の制御に必要な各種機能をソフト的に実現する。
ワークRAM113は、CPUコア111の主記憶に相当し、例えば、S−RAM等の高速半導体デバイスで構成される。また、ワークRAM113は、遊技ブロック110Aにおける遊技プログラムに基づく処理を実行する際にワークエリア(作業領域)として用いられる。なお、ワークRAM113は、遊技用マイクロコンピュータ110の端子群の一つに割り当てられた専用の端子を用いてバッテリバックアップ機能を付与できるようになっており、遊技機10の電源オフ後もその記憶内容を保持する。また、ワークRAM113は、そのチップイネーブルの禁止及び許可が、図示しないプロテクト回路によってコントロールされるようになっており、チップイネーブルの禁止状態中(遊技機10への電源非供給時)は読み出しおよび書き込みのいずれも行うことができない。
外部バスインターフェース114は、外部デバイスとの間で、メモリリクエスト信号、入出力リクエスト信号、メモリ書込信号又はメモリ読出信号及びモード信号等の各種信号の入出力制御を行うための回路である。バス切換え回路115は、図示しない外部バスとチップ内部の上記CPUバス126との間で、アドレス信号およびデータ信号の入出力を可能にするためバスの切換えを行う回路である。例えば、メモリリクエスト信号MREQ又は入出力リクエスト信号IORQをアクティブにした状態でメモリ書込み信号WRをアクティブにすると、所定の外部I/Oに外部データ信号を書き込むことができ、メモリ読出し信号RDをアクティブにすると、所定の外部I/Oから外部データ信号を取り込むことができるようになる。
復号化・ROM書込み回路116は、暗号化されて送られて来たデータを復号したり電気的に書込み可能なプログラムROM112やHWパラメータROM125の書込みに必要な電圧を生成したりタイミングを制御したりする回路である。例えば、モード信号MODEをアクティブにした状態で、外部アドレス信号を順次インクリメントしながら外部データ信号を外から与えると、プログラムROM112への書込モードとなって遊技機の製造メーカ又は第三者機関による遊技プログラムの書き込みが可能になる。ただし、プログラムROM112への遊技プログラムの書き込みが終了後に、後述のHWパラメータROM125の所定領域に書込終了コードを記録すると、それ以降はプログラムROM112への遊技プログラムの書き込みができないようになる。
ミラードRAM117は、クロックの立ち下がり時にユーザワークエリアに記憶された情報を複製した情報を記憶する(CPUコアがZ80の場合には、クロックの立ち上がり時に処理を実行するため、同期して動くことがないようにしている)。
割込制御回路118は、外部からの割込み要求信号に応答してCPUコア111に対して割込み要求を行ったり、チップ内部の回路(例えば乱数生成回路)に対して制御信号を送ったりする回路である。また、リセット割込制御回路120は、外部から入力されるリセット信号に応答してCPUコア111をシステムリセットするとともに、遊技用マイクロコンピュータ110の内部の各種リソースを初期状態に設定する信号を生成する回路である。
ブートブロック119は、ブートプログラムを格納するROMを備え、遊技用マイクロコンピュータ110のシステムリセット時にこのブートプログラムが立ち上がって、所定の簡易チェックを行う。そして、ブートROMが正常であれば、プロテクト設定処理を実行した後、遊技プログラムの所定アドレス(CPU111のアドレス空間内における所定アドレス(一般に当該アドレス空間の先頭番地0000h))に処理を渡す。
アドレスデコーダ121は、CPUバス126のアドレス情報をデコードして、そのデコード結果に応じて、出力制御回路122を制御する。クロックジェネレータ123は、外部から供給されるシステムクロックMCLKと乱数用のクロックEXCLKに基づいて、CPUコア111を含む遊技用マイクロコンピュータ110内の各ブロックに供給する動作クロックとカウンタ用のクロックを生成する。
乱数生成回路124は、大当りの判定等に使用される乱数を生成する回路であり、従来の遊技用マイクロコンピュータでは、外付けの回路として構成されていたものを内蔵するとともに、特有の機能を追加したものである。この乱数生成回路124については図6を用いて後に詳しく説明する。HWパラメータROM125は、プログラムROM112へのプログラムの書き込みを禁止するための前記書込終了コードを記録したり、ユーザーシステム(ハードウェア)に特有のパラメータを設定できるようにするためのもので、電気的に書き込み可能なメモリ(例えばEPROM,EEPROM,フラッシュメモリ等)により構成されている。
管理ブロック110Bは、管理用プログラムROM131、管理用ワークRAM132、バスモニタ回路133、IDプロパティメモリ134、管理用制御回路135、外部通信制御回路136及びこれらの回路ブロック間を接続するローカルバス137を含むとともに、バスモニタ回路133がローカルバス137と遊技制御ブロック110AのCPUバス126の両方に接続されることにより、CPUバス126を介してCPUコア111との間でデータの送受信が行えるように構成されている。
管理用ワークRAM132は、バスモニタ回路133を介して読み込まれた遊技制御ブロック110Aの情報を一時的に保持するための記憶領域として使用される。バスモニタ回路133は、CPUバス126の状態を監視し、CPUバス126がCPUコア111によって使用されていないときは、必要に応じてCPUバス126を介して遊技制御ブロック110AのプログラムROM112やユーザワークRAM113等をアクセスし、所要のデータ(遊技プログラムやユーザワークRAM113の内容等)を管理ブロック113Bに取り込む。
IDプロパティメモリ134には、遊技用マイクロコンピュータ110の識別や正当性の判定のために使用する固有ID(固有情報)が書き込まれており、この固有IDは、バス137および外部通信制御回路136を介して遊技機外部の管理装置(ホールコンピュータ)で読み取ることができる。これによって、管理装置で遊技機の固有IDを監視することができる。具体的には、予め遊技機に設定された固有IDと、管理装置によって読み取られた固有IDとが一致しない場合は、管理装置は、各種信号の入出力を不可能にする。すると、遊技制御装置100に接続された各種装置(例えば、大入賞口ソレノイド58b及び普通変動入賞口ソレノイド57c)や従属制御装置とCPUコア111との信号の入出力が不可能となり、例えば、スイッチが操作できなくなったり、装飾用ランプが点灯しなかったりして、遊技機に異常が発生したことが明確となる。
また、IDプロパティメモリ134には、この固有IDに加えて、遊技種別コード、ランクコード、メーカ番号、機種コード及び検査番号等の各情報が書き込まれている。なお、遊技種別コードは、パチンコ遊技機やスロットルマシン等を区別するための情報であって、例えば、パチンコ遊技機の場合は“P”、スロットルマシンの場合は“G”で表される。ランクコードは、遊技機1の機種ランクコード(第1種、第2種等を区別するためのコード)、メーカ番号当該遊技機1の製造メーカを識別するためのメーカID(又はメーカコード)である。機種コードは、製造メーカが設定する当該遊技機1の製品コードである。検査番号(又は検定コード)は、第三者機関による検査に合格した遊技機1に付与される番号である。
さらに、IDプロパティメモリ134には、ROMとRAMが内蔵され、ROMの内容がRAMコピーされる。つまり、固有ID、遊技種別コード、ランクコード、メーカ番号、機種コード及び検査番号がROMに格納されていてそれらがRAMにコピーされる。コピーのタイミングは、遊技機の電源投入時又は遊技用マイクロコンピュータ110のシステムリセット時であって、例えば、システムリセット直後に管理ブロック110Bで実行される初期化処理の中で行うようにされる。
制御回路135は、管理ブロック110Bの動作を制御するもので、バッファメモリを有している。制御回路135は、例えば、バスモニタ回路133を介してCPUコア11の動作を監視し、非動作中に遊技ブロック110AのユーザワークRAM113に記憶された内容をミラードRAM117へコピーする。また、検査装置からの要求に応答して管理ブロック110BのIDプロパティメモリ134の内容を外部へ転送したり、プログラム要求に応答してバスモニタ回路133を介してユーザプログラムROM112内のプログラムを外部へ転送したりする。バッファメモリは、転送時のタイミング調節のために用いられる。
外部通信制御回路136は、遊技機の外部に設けられた情報収集端末装置やID検査装置と通信を行う。例えば、情報収集端末装置が接続されている場合は、その情報収集端末装置からの要求に応答して、管理用ワークRAM132やIDプロパティメモリ134の記憶内容を要求元の情報収集端末装置に転送し、ID検査装置が接続されている場合は、そのID検査装置からの要求に応答して、少なくともIDプロパティメモリ134に記憶されている固有IDの情報を要求元のID検査装置に転送する。
次に、図6を用いて、本実施例の遊技用マイクロコンピュータ110に内蔵されている乱数生成回路124の詳細と該回路に関連した回路(クロックジェネレータ123)について説明する。
クロックジェネレータ123は、外部から供給される乱数用のクロックEXCLKを分周する分周回路231と、システムクロックMCLKを分周する分周回路232と、分周回路232で分周されたクロックをさらに分周してCPUコア111に対して所定の周期でタイマ割込みをかける信号を生成するCTC(カウンタ・タイマ・サーキット)回路233とを備える。上記分周回路231と分周回路232でそれぞれ分周されたクロックφ1,φ2は、乱数生成回路124に供給される。なお、この実施例では、分周回路231と232の分周比は同一(共に1/2分周)である。
乱数生成回路124は、乱数生成回路全体を制御する乱数制御回路240と、CPUバス126を介してCPUコア111によって乱数の初期値が設定される乱数初期値設定レジスタ241と、乱数回路起動レジスタ242およびカウンタ回路243を備える。乱数回路起動レジスタ242にCPUコア111によって所定の値が設定されると、乱数制御回路240が乱数生成の制御を開始するように構成されている。カウンタ回路243の計数範囲は、HWパラメータROMに所定の値を設定することで計数上限値を8ビット(FFh)から16ビット(FFFFh)の範囲で選択することができる。また、乱数制御回路240は、分周回路231と232で分周されたクロックφ1,φ2の周波数の大小を判定しクロックを切り換えたり遮断したりする選択回路252を内蔵しており、いずれか一方のクロックに基づいてカウンタ回路243をカウント動作させる。複数種類の乱数が必要な場合は、複数のカウンタ回路243を設けるとともに、乱数初期値設定レジスタ241にはカウンタ回路毎に異なる初期値を設定するように構成することができる。
さらに、乱数生成回路124は、前記カウンタ回路243の値を取り込んで保持する3個のラッチレジスタ245,247,249と、始動入賞検出信号を擬似的に発生させてこれらのラッチレジスタへカウンタ回路243の値をラッチさせるトリガ信号を生成するラッチレジスタトリガ回路244,246,248を備える。ラッチレジスタトリガ回路244,246,248は、レジスタによって構成することができる。ラッチレジスタ245,247,249は、通常は乱数制御回路240が生成するラッチ信号に基づいてカウンタ回路243の値をラッチするが、CPUコア111がラッチレジスタトリガ回路244,246,248に所定の値を設定した場合にも、ラッチトリガ信号が生成されて、ラッチレジスタ245,247,249にカウンタ回路243の値がラッチされる。
この実施例においては、図7に示すように、上記分周回路231または232で分周されたクロックφ1(またはφ2)の立ち上がりによってカウンタ回路243を更新(カウントアップ)させる一方、クロックφ1(φ2)の反転信号すなわち位相が180°異なるクロック/φ1(/φ2)をラッチタイミング信号とすることによって、カウンタ回路の値が変化するタイミングでカウンタ値のラッチ動作がなされないようにしている。
乱数制御回路240には、割込みコントローラ118からのラッチ信号LAT0,LAT1,LAT2が入力されており、ラッチ信号LAT0,LAT1,LAT2の入力に基づいてラッチレジスタ245,247,249へカウンタをラッチさせるための制御信号を生成する。この実施例では、割込みコントローラ118に特図始動スイッチ56aと57bからの始動入賞検出信号DET0,DET1が入力されており、始動入賞が検出される度にカウンタ回路243の値がラッチレジスタ245,247のいずれかにラッチされる。具体的には、割込みコントローラ118は、カウンタ回路243に供給されるクロック信号にて256個のクロック(25.6μs:EXCLK又はMCLK=20MHz入力時)にわたって連続して始動入賞検出信号DETを検出したタイミングで乱数制御回路240にラッチ信号LATを出力する。そして、乱数制御回路240はラッチ信号LATが入力されたタイミングでカウンタ値をラッチするのではなく、ラッチ信号LATが入力された直後のクロック信号の立ち上がりでラッチレジスタ245,247,249のうちいずれか対応するレジスタにカウンタ値をラッチさせる。
特に限定されるものではないが、この実施例では、DET0(LAT0)には始動口スイッチ1の信号が入力され、該信号が入力されるとラッチレジスタ245にカウンタ値がラッチされる。DET1(LAT1)には始動口スイッチ2の信号が入力され、該信号が入力されるとラッチレジスタ247にカウンタ値がラッチされるようにしている。割込みコントローラ118の3つの入力のうちひとつDET2(LAT2)およびラッチレジスタ249は、遊技領域に3個の始動入賞口が設けられる遊技機に対応できるようにするため設けられており、この実施例の遊技機においては予備として扱われる。
なお、割込みコントローラの代わりに、外部から書き込み可能なコントロールレジスタを設けて、コントロールレジスタへの書込みに応じてカウンタ値のラッチ信号を生成するように構成しても良い。また、コントロールレジスタを設けた場合には、始動入賞検出信号DET0,DET1によってコントロールレジスタの所定のビットをセットし、それによって割込みコントローラ118に割込み信号が入力され、割込みコントローラ118によって上記と同様な制御を行うように構成しても良い。
さらに、上記乱数生成回路124は、CPUコア111に対して乱数生成回路124の内部の状態を知らせるためのステータスレジスタ250と、乱数生成回路124を初期化させる乱数回路初期化レジスタ251を備える。ステータスレジスタ250には、ラッチレジスタ245,247,249へのカウンタ値のラッチを許可または禁止するラッチ許可フラグが設けられており、このフラグをセットすることによってカウンタ値のラッチを許可し、フラグをクリアすることによってラッチを禁止できる。この実施例では、上記ラッチ許可フラグは、各ラッチレジスタ245,247,249に対応してそれぞれ設けられており、レジスタごとにラッチの許可/禁止を制御できるように構成されている。なお、ステータスレジスタ250は、乱数制御回路240によって書き換えが行われ、CPU111はリードのみ可能でライトは行えないようになっている。これにより、プログラムを書き換えてCPUよって不正な乱数値を取得させるような不正行為を防止することができる。
図8には、乱数制御回路240によるラッチレジスタへのカウンタ値のラッチ制御手順が示されている。この制御では、先ずラッチ信号LAT0,LAT1,LAT2のいずれかが入力されているか否かを判定し(ステップS101)、ラッチ信号LAT0,LAT1,LAT2のいずれかが入力されている場合には、ステータスレジスタ250のラッチ許可フラグがセットされているか判定する(ステップS102)。ラッチ信号の入力がない場合あるいはラッチ信号があってもラッチ許可フラグがセットされていない場合には当該制御を終了し、ステップS102でラッチ許可フラグがセットされていると判定すると、カウンタ回路243よりカウンタの値を読み出して対応するラッチレジスタ(245,247,249のいずれか)に格納する(ステップS103,S104)。続いて、ステータスレジスタ250の対応するラッチ許可フラグを禁止状態にして当該制御を終了する(ステップS105)。
図9には、乱数制御回路240によるラッチデータ読込み時の制御手順が示されている。この制御では、先ずCPUコア111によるラッチレジスタ(245,247,249のいずれか)のデータ読込みがあったか否かを判定し(ステップS111)、データ(カウンタ値)の読込みがあった場合には、当該ラッチレジスタのデータをクリアし、ステータスレジスタ250の対応するラッチ許可フラグを許可状態にセットして当該制御を終了する(ステップS112,S113)。ラッチレジスタのデータを読み込んでからクリアしてラッチ許可フラグを許可状態にセットすることにより、回路の故障等何らかの不具合でラッチレジスタへのカウンタ値のラッチが行われなくなった場合にも、取得済みのカウンタ値を重複して取得するおそれがなくなる。これにより、直前にカウンタ値保持手段に保持されていた値が大当りに相当するものであった場合に、続けて大当りが発生するのを防止することができる。
この実施例では、上記乱数制御回路240によるラッチレジスタへのカウンタ値のラッチは、外部からの始動入賞検出信号DET0,DET1によって行なわれる。一方、始動入賞検出信号DET0またはDET1がマイクロコンピュータに入力されると、CPUコア111は、そのプログラム処理によって所定の条件が成立した場合に、ラッチレジスタ245または247のデータ(カウンタ値)を大当り判定用の乱数値として読み込む。そして、カウンタの値がラッチレジスタにラッチされてからCPUにより読み込まれるまでは、ステータスレジスタ250のラッチ許可フラグがラッチ禁止状態にされる。
そのため、上記のような制御を行うことによって、仮に乱数制御回路240へ入力されるラッチ信号LAT0,LAT1,LAT2にノイズがのったとしても、誤ってカウンタ回路243のカウンタ値がラッチレジスタにラッチされる(上書きされる)ことはなく、CPUが誤ったカウンタ値(乱数値)を読み込むこともない。
また、乱数生成回路が外付け回路として接続されていた従来の遊技制御回路では、遊技者が不正な操作によって本来の始動入賞検出信号と異なるタイミングでラッチ信号を与えると、誤ったカウンタ値(乱数値)がCPUに読み込まれるおそれがあったものが、この実施例では、不正に始動入賞検出信号DET0,DET1を入力してカウンタ値をラッチレジスタにラッチさせたとしても、そのラッチデータはCPUによって読み込まれることはなく、その後、正規に発生した始動入賞検出信号DET0,DET1によってカウンタ値がラッチレジスタにラッチされて、CPUによって読み込まれる。その結果、不正行為による誤った乱数値の取得を困難にすると共に、始動入賞に基づいてラッチされたカウンタ値を確実に遊技制御で使用できるようになる。
図10には、乱数制御回路240によるハード乱数クロック監視制御の手順が示されている。この制御では、クロックジェネレータ123へ外部から供給される乱数用クロックEXCLKが入力されているか判定する(ステップS121)。ここで、EXCLKが入力されている場合には、EXCLKの周波数とMCLKの周波数を比較してEXCLKの周波数の方が高いか否かを判定し、高い場合にはEXCLKの周波数がMCLKの周波数の1.5倍よりも小さいか否かを判定する(ステップS122,S123)。
そして、両方の条件を満たしている場合にのみ、クロックジェネレータ123でEXCLKが1/2分周されたクロックφ1を、カウンタ回路243へ供給してカウンタ値を更新させる(ステップS124)。条件を満たしていない場合には、MCLKがカウンタ回路243へ供給され、システムの動作とカウンタ回路の動作が同一のクロックで行われる。なお、上記ステップS122,S123の判定は、実際にはクロックジェネレータ123で分周されたクロックφ1とφ2に基づいて行われる。EXCLKの周波数がMCLKの周波数よりも大きいか否かは、それぞれのクロックを計数するカウンタを設け、それぞれ同一時間動作させてカウンタ値の大小を判定することで知ることができる。
上記のようにクロックEXCLKとMCLKが所定の条件を満たす場合にのみ乱数値を与えるカウンタ回路243を更新動作させることにより、不正を行おうとするものがクロック入力端子に不正な操作を行なって不正な乱数値を取得しようとしてもそれを防止することができる。また、クロックφ1とφ2の周波数を比較して、周波数の高い方のクロックを選択してカウンタ回路243に供給するため、乱数を生成するカウンタ回路243の更新タイミングを特定することが困難となり、不正が行われにくくすることができる。
なお、クロックφ1とφ2の周波数を比較して、周波数の高い方のクロックを選択してカウンタ回路243に供給し、周波数の低い方のクロックをカウンタ回路243以外の回路に動作用クロックとして供給するように構成しても良い。周波数の高い方のクロックでカウンタ回路243を計数動作させ、周波数の低い方のクロックでそのカウンタ値をラッチレジスタへラッチさせることで、逆の場合よりも、不正な操作で、狙った値をラッチさせることを困難にすることができる。
この実施例では、ステップS122,S123で条件を満たしていないと判定された場合には、MCLKをカウンタ回路243に供給するようにしたが、条件を満たしていないと判定された場合には、MCLK及びEXCLKの供給をカウンタ回路に行わないようにし、カウンタ回路を不能動化するようにしてもよい。
なお、このようにした場合には、不正を行おうとする者が、カウンタ回路の更新タイミングやカウンタ回路の動作が停止する条件を解析して、カウンタ値が所定の大当たり値となったタイミングでカウンタ回路の動作が停止する条件を成立させることで、ラッチ回路に常に大当り乱数をラッチさせて大当り遊技を連続して発生させる不正行為がなされるおそれがある。しかるに、本実施形態の遊技機においては、遊技者がそのような不正行為を行ったとしても、後述の電源投入時乱数監視処理(図14)や割込み処理中における乱数監視処理(図19)によって、CPUが不正な大当り乱数を読み込まないようにして不正行為による大当りの発生を防止できるようになっている。
なお、乱数生成回路にクロック選択用レジスタを設けてHWパラメータROMを介してクロック選択用レジスタに所定の値を設定することで、EXCLKとMCLKのいずれかを選択できるようにしてもよい。
次に、上記遊技制御装置100の遊技用マイクロコンピュータ(遊技用マイコンと称する)110によって実行される遊技制御について説明する。
遊技用マイコン110による制御処理は、主に図11および図12に示すメイン処理と、所定時間周期(例えば2msecごと)に行われる図14に示すタイマ割込み処理とからなる。
メイン処理は、電源が投入されることで開始される。このメイン処理においては、図11に示すように、まず、割込み禁止する処理(ステップS1)を行なってから、割込みが発生したときに実行するジャンプ先のベクタアドレスを設定する割込みベクタ設定処理(ステップS2)、割込みが発生したときにレジスタ等の値を退避する領域の先頭アドレスであるスタックポインタを設定するスタックポインタ設定処理(ステップS3)、割込み処理のモードを設定する割込みモード設定処理(ステップS4)を行う。
次に、RAMやEEPROM等の読出し書込み可能なRWM(リードライトメモリ)のアクセス許可をし、全出力ポートをオフ(出力が無い状態)に設定する(ステップS5,S6)。それから、電源投入時乱数監視処理S90(図13参照)を実行してから、エラー報知フラグ1または2が設定されているか否か判定する(ステップS7)。ここで、フラグが設定されている(Yes)と判定すると図12のステップS27へジャンプする。なお、エラー報知フラグ1は後述の電源投入時乱数監視処理S90(図13参照)の中で乱数値に異常が見つかった際に設定され、エラー報知フラグ2は後述のタイマ割込み処理中の乱数監視処理S650(図17参照)の中で乱数値に異常が見つかった際に設定される。
一方、ステップS7で、フラグが設定されていない(No)と判定するとステップS8へ移行して、電源装置160内のバックアップ用メモリのクリアスイッチ162がオンしているか否かを判定する。ステップS8の判定で、クリアスイッチがオフであれば、ステップS9へ移行して、RWM内の停電検査領域のデータをチェックした後、停電復旧か否かおよびチェックサムと呼ばれるデータの正常/異常を調べるためのコードを検査する(ステップS10,S11)。
ステップS10で停電復旧であると判定しステップS11でチェックサムが正常と判定した場合は、ステップS12で、読出し書込み可能なRWMに停電復旧時の初期値を設定してから、遊技枠の状態に係るデータを記憶しているメモリ領域をクリアし、他の制御装置へ停電復旧コマンドを送信する処理(ステップS13,S14)を行なって、図12のステップS18へ移行する。一方、ステップS10で停電復旧でないと判定またはステップS11でチェックサムが異常と判定した場合は、ステップS15で、使用中の読出し書込み可能なRWMをクリアする。それから、RWMに電源投入時の初期値をセーブしてから、他の制御装置へ電源投入コマンドを送信する処理(ステップS16,S17)を行なって、図12のステップS18へ移行する。
また、上記ステップS8で、クリアスイッチがオンと判定した場合は、ステップS15へジャンプして使用中の読出し書込み可能なRWMをクリアし、RWMに電源投入時の初期値をセーブしてから、他の制御装置へ電源投入コマンドを送信する処理(ステップS16,S17)を行なって、図12のステップS18へ移行する。
ステップS18では割込みタイマを起動し、次のステップS18で、乱数生成回路内の乱数回路起動レジスタ242(図6参照)に回路を起動させるためのコードをセットして乱数生成回路124を起動させる。その後、一旦割込みを禁止して(ステップS19)、大当たり判定用乱数などの乱数の初期値を更新して乱数の時間的な規則性を崩すための初期値乱数更新処理(ステップS20)を行う。それから、停電検査領域のデータをチェックする処理(ステップS21)を行う。そして、停電が発生したか否かの判定(ステップS22)を行い、停電が発生していない場合(No)には、上述の割込みを禁止する処理(ステップS19)に戻り、ステップS20〜S22の処理を繰り返し行う。
一方、ステップS22において、停電が発生していると判定した場合(Yes)は、一旦割込みを禁止する処理(ステップS23)、全出力ポートをオフにする処理(ステップS24)、停電検査領域をクリアする処理(ステップS25)を行う。その後さらに、停電復旧検査領域に停電復旧検査領域チェックデータをセーブする処理(ステップS26)、RWMの電源遮断時のチェックサムを算出する処理(ステップS27)を行なった後、RWMへのアクセスを禁止する処理(ステップS30)を行なってから、遊技機の電源が遮断されるのを待つ。このように、停電復旧検査領域にチェックデータをセーブするとともに、電源遮断時のチェックサムを算出することで、電源の遮断の前にRWMに記憶されていた情報が正しくバックアップされているか否かを電源再投入時に判断することができる。
ステップS7で、フラグが設定されている(Yes)と判定した場合には、ステップS28へ移行してエラー報知コマンドを演出制御装置150へ送信する。これによって、エラー報知LED18、スピーカ31等によるエラー報知が行われる。その後、エラー報知フラグ1,2をクリア(ステップS29)してから、ステップS30へ進みRWMへのアクセスを禁止して待機する。従って、電源立ち上げ後、図11のステップS90で乱数値に異常が見つかってエラー報知フラグ1が設定されると、ステップS7からステップS27へジャンプするため、通常の処理(ステップS8〜S27)が実行されず、ステップS19の割込み許可もなされないため、遊技のための制御が実行されないことになり遊技を行うことができないようになる。
なお、エラー報知フラグ1は電源遮断時にセーブ(バックアップ)されないため、ステップS29では、エラー報知フラグ2のみをクリアするようにしても良い。また、図11のメイン処理のステップS90の電源投入時乱数監視処理を省略する場合には、ステップS29の処理すなわちエラー報知フラグ2のクリアをしないようにすることで、遊技中に同一乱数値が続けて発生するエラーが発生した場合に、電源を再投入しただけでは遊技機が正常に立ち上がって遊技制御を開始しないつまり遊技機を不能動化することができる。
ここで、図11のメイン処理中における電源投入時乱数監視処理S90の具体的な手順の一例を、図13のフローチャートを用いて説明する。
電源投入時乱数監視処理S90では、乱数生成回路124内の乱数回路起動レジスタ242に起動のためのデータ(起動コード)をセットする(ステップS91)。これにより、乱数生成回路124が起動される。その後、ラッチトリガレジスタ244,246,248にラッチ動作を行わせるためのデータ(トリガコード)をセットする(ステップS92)。これにより、乱数生成回路124においては、そのときのカウンタ回路243の値がラッチレジスタ245,247,249にラッチされる。そこで、CPU111はラッチレジスタ245,247,249の値(1回目)を取得する(ステップS93)。
その後、再度ラッチトリガレジスタ244,246,248にトリガコードをセットし(ステップS94)、そのときのカウンタ回路243の値をラッチレジスタ245,247,249にラッチさせた後、ラッチレジスタ245,247,249の値(2回目)を取得する(ステップS95)。それから、ステップS93とステップS95で取得した1回目と2回目の値を比較し(ステップS96)、一致している(Yes)と判定するとエラー報知フラグ1を設定して当該電源投入時乱数監視処理を終了する(ステップS97)。ステップS96で、1回目と2回目の値が一致していない(No)と判定した場合には、ステップS97をスキップつまりエラー報知フラグ1を設定せずに当該電源投入時乱数監視処理を終了する。
なお、ステップS91とS92との間、およびステップS93とS94との間にはそれぞれカウンタ回路243の値が更新される最小時間以上のディレイを入れるのが望ましい。ただし、1回目と2回目のカウンタ値の取得(ステップS93とS95)は、カウンタ回路243の値が一巡する前に行うのが良い。一巡すると正常な場合であっても同一の値を取得するおそれがあるからである。図13のような電源投入時乱数監視処理を実行することにより、カウンタ回路243に大当りに相当する値が入っている状態で電源が遮断され、その後カウンタ回路等が故障した状態で電源が再投入されたような場合に、カウンタ値が更新されないことで、連続した大当りが発生してしまうのを回避することができる。
次に、図14のタイマ割込み処理について説明する。このタイマ割込み処理は、クロックジェネレータ123内のCTC回路233で生成される周期的なタイマ割込み信号が入力されることで、例えば2msごとに開始される。遊技用マイコン110にタイマ割込みが発生すると、図14のタイマ割込み処理が開始される。
タイマ割込み処理が開始されると、まず所定のレジスタに保持されている値をRAMに移すレジスタ退避の処理(ステップS31)を行う。次に、各種センサ(特図始動スイッチ56a、57b、普図始動スイッチ54a、枠開放スイッチ12a、球切れスイッチ41aなど)からの入力を取り込む入力処理(ステップS32)を行う。それから、各種処理でセットされた出力データに基づき、ソレノイド(大入賞口SOL10b、普電SOL7b)等のアクチュエータの駆動制御を行うための出力処理(ステップS33)を行う。遊技球の入賞及び通過を検出するスイッチからの入力は、上記ステップS32の入力処理にて入力ポートの読み込みを2msごとに行い、チャタリングの除去を行った状態を解析し、スイッチのレベル状態が0から1に変化した時にスイッチのオンとする。
さらに、ステップS32の入力処理では、入力ポート状態を取得する際のスイッチの入力に対するチャタリング除去の方法として、1割込み毎に入力ポートよりスイッチのポート状態を読み込み、解析するスイッチのポート状態を摘出し、2割込み分の連続するデータが一致していればその状態を正常なポート状態とする。そして、その状態をレベル状態の確定とし、レベル状態を更新する。データが一致していなければ前回のレベル状態を継続する。また、レベル状態の変化により立ち上がりエッジを更新する。この時、更新した立ち上がりエッジがRAMに記憶される。以上の処理が遊技球の入賞及び通過を検出するスイッチの全てにおいて行われる。
次に、各種処理で送信バッファにセットされたコマンドを演出制御装置150や払出制御装置200等に出力するコマンド送信処理(ステップS34)、乱数更新処理(ステップS35)を行う。この乱数更新処理(ステップS35)では、特図変動表示ゲームの当たりはずれを判定するための大当たり判定用乱数や、特図変動表示ゲームの大当たり図柄を判定するための大当り図柄乱数の更新(取込み)を行う。また、普図変動表示ゲームの当たりはずれを判定するための当たり乱数や、特図変動表示ゲームでの変動パターンを決定するための変動パターン乱数の更新(取込み)も行う。
次に、特図始動スイッチ56a、57b、普図始動スイッチ54a、入賞口スイッチ55a…55n、カウントスイッチ58aから正常な信号の入力があるか否かの監視や、エラーの監視を行う入賞口スイッチ/エラー監視処理(ステップS36)を行う。また、特図変動表示ゲームに関する処理を行う特図ゲーム処理(ステップS37)、普図変動表示ゲームに関する処理を行う普図ゲーム処理(ステップS38)を行う。
次に、遊技機10に設けられ、遊技に関する各種情報を表示するセグメントLEDを所望の内容を表示するように駆動するセグメントLED編集処理(ステップS39)を行う。それから、外部の管理装置に出力する信号を出力バッファにセットする外部情報編集処理(ステップS40)を行う。続いて、割込みの終了を宣言する処理(ステップS41)を行い、待避したレジスタのデータを復帰する処理(ステップS42)を行った後、割込みを許可する処理(ステップS43)を行なって、タイマ割込み処理を終了する。
次に、図14のタイマ割込み処理における特図ゲーム処理(ステップS37)の詳細を、図15を用いて説明する。
図15に示すように、特図ゲーム処理では、まず、始動入賞口56および第2の始動入賞口を有する普通変動入賞装置57への入賞(特図始動SW1,SW2)の監視と、入賞検出に基づき各種乱数値の取得および記憶を行う始動口スイッチ監視処理(ステップS361)を実行する。始動口スイッチ監視処理は、始動入賞口56の入賞の監視を行う始動口SW1監視処理(始動口スイッチ1監視処理)と普通変動入賞装置57への入賞の監視を行う始動口SW2監視処理(始動口スイッチ2監視処理)からなる。その後、特別変動入賞装置58内のカウントスイッチ58aからの入力の監視と入力数の計数を行うカウントスイッチ監視処理(ステップS362)を実行する。
次に、特図変動表示ゲームの実行に関する各処理で設定されるゲーム処理タイマがタイムアップしたか否かを判定する(ステップS363)。ここで、ゲーム処理タイマがタイムアップしていないと判定した場合(No)は、特図変動表示ゲームの制御に関する特図変動制御処理(ステップS375)を行って特図ゲーム処理を終了する。また、ゲーム処理タイマがタイムアップしたか否かの判定(ステップS363)において、ゲーム処理タイマがタイムアップしていると判定した場合(Yes)は、ゲームを合理的に進行させるために設けたゲーム処理番号に基づき次に実行する処理を選択するゲーム分岐処理(ステップS364)を行う。
ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「0」であると判定した場合は、特別図柄の変動開始を監視し、特別図柄の変動開始の設定や演出の設定、又は特図普段処理を行うために必要な情報の設定を行う特図普段処理(ステップS365)を行う。また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「1」であると判定した場合は、特図変動表示ゲームの前半変動時間に係る情報の設定を行う特図前半変動開始処理(ステップS366)を行う。なお、前半変動時間とは、特図変動表示ゲームの開始からリーチ状態が発生するまでの期間である。一方、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「2」であると判定した場合は、特図変動表示ゲームの後半変動時間に係る情報の設定を行う特図後半変動開始処理(ステップS367)を行う。なお、後半変動時間とは、リーチ状態の発生から特図変動表示ゲームの終了までの期間である。
また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「3」であると判定した場合は、表示装置61で実行される飾り特図変動表示ゲームの変動中の図柄の更新や図柄を仮停止した後に再変動させるなどの制御を行う特図変動中処理(ステップS368)を行う。また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「4」であると判定した場合は、特図変動ゲームにおいて最終的な図柄の停止タイミングを設定したりする特図表示中処理(ステップS369)を行う。
さらに、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「5」であると判定した場合は特別遊技状態(大当り)における効果音や照明ユニット17の発光駆動、所定のインターバル(例えば1秒)を挟んだ特別変動入賞装置58(大入賞口)の複数回の開放動作処理などを行うファンファーレ/インターバル中処理(ステップS370)を行う。
また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「6」であると判定した場合は大入賞口開放中処理(ステップS371)を行う。この大入賞口開放中処理(ステップS371)では、特別遊技状態が最終ラウンドでなければファンファーレ/インターバル中処理(ステップS370)を行うために必要な情報の設定を、また特別遊技状態が最終ラウンドであれば、特別遊技状態の終了画面のコマンドの設定や次の大入賞口残存球処理(ステップS372)を行うために必要な情報の設定を行う。
また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「7」であると判定した場合は、大入賞口を閉鎖した後に大入賞口内に残存する全ての遊技球がカウントスイッチ58aで検出されるまで時間を設定する大入賞口残存球処理(ステップS372)を行う。また、ゲーム分岐処理(ステップS364)において、ゲーム処理番号が「8」であると判定した場合は、特別遊技状態を終了する処理を行うとともに、前記特図普段処理(ステップS365)を行うために必要な情報を設定する大当り終了処理(ステップS373)を行う。
さらに、ゲーム処理番号に基づく上述の各処理を行った後、設定された各種データをセーブするテーブルデータセーブ処理(ステップS374)を行なってから、ゲーム処理タイマの更新などの処理を行う特図変動制御処理(ステップS375)を行なって特図ゲーム処理を終了する。
次に、図15の特図ゲーム処理中の始動口スイッチ監視処理(ステップS361)において実行される始動口SW2監視処理(始動口スイッチ2監視処理)の第1発明の第1の実施例の詳細を、図16を用いて説明する。
始動口SW2監視処理(始動口スイッチ2監視処理)では、まず、普通変動入賞装置57が作動中であるか否か、すなわち普通変動入賞装置57が作動して遊技球の入賞が可能な開状態となっているか否かの判定(ステップS611)を行う。この判定において、普通変動入賞装置が作動中である場合(Yes)は、ステップS613へジャンプして始動口スイッチ2(57b)がオンであるか否かの判定を行う。また、ステップS611において、普通変動入賞装置が作動中でないと判定した場合(No)は、次のステップで不正入賞数が上限値であるか否かの判定(ステップS612)を行う。
なお、上記ステップS613での始動口スイッチの判定では、前述した図14のステップS32の入力処理でRAMに記憶された始動口スイッチに対応する立ち上がりエッジの有無を調べ、更新した立ち上がりエッジが「あり」の時は、スイッチの状態がオンであると判定し、更新した立ち上がりエッジが「なし」の時は、スイッチの状態がオフであると判定する。
普通変動入賞装置57は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数するようになっている。そして、不正入賞数が上限値であるか否かの判定(ステップS612)では、このように計数された不正入賞数が所定の上限値以上であるかが判定される。この判定において、不正入賞数が上限値である場合(Yes)は、始動口SW監視処理を終了する。すなわち、この場合は始動記憶を発生させないようにする。また、ステップS612において、不正入賞数が上限値でないと判定した場合(No)は、ステップS613で、始動口スイッチ2(57b)がオンであるか否かの判定を行う。
ステップS613で始動口スイッチ2がオンでないと判定された場合には、始動口SW2監視処理を終了する。一方、ステップS613で始動口スイッチ2がオンであると判定された場合には、ステップS614へ進んで、普通変動入賞装置57への遊技球の入賞回数を更新する始動口信号出力回数更新処理(ステップS614)を行う。
次に、始動記憶数が上限値であるか否かの判定(ステップS615)が行われ、この判定において、始動記憶数が上限値でない場合(No)は、次のステップS616で始動記憶数をインクリメント(+1)した後、ラッチレジスタ(245,247,249)の値を大当り乱数値として取得しRAM(113)の所定領域に記憶する処理(ステップS617)を行う。このとき、RAM(113)には、今回乱数値記憶領域と前回乱数値記憶領域とを設けておいて、ステップS617では、先ず今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにする。また、RAM(113)には、乱数値一致回数カウンタ記憶領域を設けておいて一致回数を記憶する。
従って、遊技用マイコン110は、カウンタ手段としてのカウンタ回路243が計数したカウンタ値を取り込んで保持するカウンタ値保持手段と、始動入賞検出手段の検出結果に基づき所定条件が成立している場合に、カウンタ値保持手段が保持しているカウンタ値を取得するカウンタ値取得手段と、カウンタ値取得手段により取得されたカウンタ値を記憶する始動入賞記憶手段とを備える。 遊技用マイコン110は、上記ステップS617の後、大当り図柄乱数を取得しRAMに記憶する処理(ステップS618)、変動パターン乱数を取得しRAMに記憶する処理(ステップS619)を行う。さらに、演出制御装置150へ送信する飾り特図始動記憶数コマンドを送信回路に設定する処理(ステップS620)および乱数監視処理(ステップS650)を実行して始動口SW2監視処理を終了する。
また、上記ステップS615の判定で、始動記憶数が上限値であると判定した場合(Yes)、すなわちこれ以上始動記憶を記憶できない場合は、ステップS621へ移行して、ラッチレジスタ(245,247,249)の値を取得すなわち読出しだけ行なって始動口SW2監視処理を終了する。始動記憶数が上限値である場合にも、ラッチレジスタ(245,247,249)の値を取得することで、図9のラッチデータ読込み時制御処理で説明したように、次に始動入賞が検出されたときにカウンタ回路からラッチレジスタへのカウンタ値の取込みが可能にされる。
また、図15の始動口スイッチ監視処理(ステップS361)では、上記した始動口スイッチ2監視処理に続いて始動口SW1監視処理(始動口スイッチ1監視処理)が実行される。始動口スイッチ1監視処理は始動口スイッチ2監視処理とほぼ同様である。
始動口スイッチ2監視処理と始動口スイッチ1監視処理の差異は、始動口スイッチ1監視処理では図16の始動口スイッチ2監視処理のステップS611の普通変動入賞装置57が作動中であるか否かの判定、ステップS612の不正入賞数が上限値であるか否かの判定を行わないようにし、さらに、ステップ613で、始動口スイッチ2(57b)ではなく始動口スイッチ1(56a)がオンであるか否かの判定を行うようにした点にある。
次に、図16の始動口SW2監視処理のステップS650で実行される乱数監視処理の詳細を、図17を用いて説明する。
図17の乱数監視処理では、先ず図16のステップS617で取得した今回乱数値が前回乱数値記憶領域内の前回乱数値と一致しているか否か判定する(ステップS651)。そして、一致している(Yes)と判定すると乱数一致回数カウンタを更新(+1)する(ステップS652)。その後、乱数一致回数カウンタの値が所定の上限値に達したか否か判定する(ステップS653)。ここで、乱数一致回数カウンタの値が所定の上限値に達した(Yes)と判定すると、エラー報知コマンドを設定し、さらにエラー報知フラグ2を設定する(ステップS654,S655)。さらに、エラー報知LED18の点灯データを出力ポートに設定(ステップS656)してから、乱数一致回数カウンタの値を初期化(ステップS657)して当該乱数監視処理を終了する。
なお、ステップS652で乱数一致回数カウンタの値を更新(+1)し、ステップS65で、乱数一致回数カウンタの値が所定の上限値に達したか否か判定しているのは、たまたま連続して同一のカウンタ値を乱数として読み込む偶然性を排除するためである。
ステップS651で今回乱数値が前回乱数値と一致していないと判定した場合は、ステップS651からステップS657へジャンプして、乱数一致回数カウンタの値を初期化して当該乱数監視処理を終了する。また、ステップS653で今回乱数値が乱数一致回数カウンタの値が所定の上限値に達していないと判定した場合は、ステップS654〜S657をスキップして、当該乱数監視処理を終了する。
従って、遊技用マイコン110は、始動入賞記憶手段に記憶するために新たにカウンタ値を取得するごとに取得したカウンタ値が始動入賞記憶手段に記憶されていたカウンタ値と一致しているか否かを判定するカウンタ値判定手段を備え、2つのカウンタ値が所定回数連続して一致していると判定された場合に、異常状態の報知を行うように指示する報知指令を異常報知手段としてのエラー報知LED18に送出する機能を有する。
上記のような処理を行うことにより、カウンタ回路が動作しないままCPUが同一の乱数値を取得し続けたような場合に、エラー報知フラグ2が設定されるとともに、エラー報知LED18が点灯されることとなる。そのため、遊技店の係員がエラーの発生を検知することができる。
また、上記乱数のエラーが発生した状態のまま電源を遮断すると、エラー報知フラグ2がメモリにバックアップされ、電源を再投入した際にメイン処理(図11)のステップS7でエラー報知フラグが設定されていると判定してステップS28へ移行し、エラー報知コマンドを送信した後、エラー報知フラグがクリアされるので、エラーの発生が報知されるとともに、エラーの原因が除去されていれば再度電源を投入することで、正常な状態に復帰することができる。
図18には、図15の始動口スイッチ監視処理(ステップS361)において実行される始動口SW2監視処理(始動口スイッチ2監視処理)の第1発明の第2の実施例が示されている。図18の始動口スイッチ2監視処理と図16の始動口スイッ2監視処理との差異は、図16の始動口スイッチ2監視処理ではステップS615の始動記憶数が上限値か否かの判定で上限値(Yes)と判定した場合に実行するラッチレジスタの値の取得処理(ステップS621)が、図18の始動口スイッチ2監視処理ではステップS615の始動記憶数が上限値か否かの判定の前に行うようにしている点にある。
この実施例の始動口スイッチ2監視処理(始動口SW2監視処理)においても、始動入賞記憶が上限数に達すると、カウンタ値保持手段としてのラッチレジスタが保持しているカウンタ値が大当り乱数等として取得されるため、次に始動入賞が検出されたときにカウンタ回路からラッチレジスタへのカウンタ値の取込みが許可されて、始動入賞記憶数が上限数よりも少なくなったときに所望のカウンタ値がカウンタ値保持手段へ取り込まれるようになる。また、始動入賞記憶数が上限数に達していれば、取得したカウンタ値が始動入賞記憶手段(RAM)に記憶されないため、誤ったカウンタ値による判定が回避される。さらに、この実施例では、始動記憶数が上限値か否かの判定前に、ラッチレジスタの値の取得が行われるため、ラッチレジスタから読み出されたカウンタ値を、始動入賞記憶手段に記憶されるまで所定の領域(バッファ)に保持することとなり、図16の実施例のように単にカウンタ値を読み出すだけでどこにも保持しないという空読みを回避し、一見無駄に見える処理をすることによる不具合をなくすことができる。
次に、図15の始動口スイッチ監視処理(ステップS361)において実行される始動口SW2監視処理(始動口スイッチ2監視処理)の第1発明の第3の実施例を、図19および図20を用いて説明する。第3の実施例においては、CPU111に対する割込み処理の1つとして、図19に示すような乱数ラッチ割込み処理を設ける。そして、この割り込み処理中で更新されるハードラッチ信号の入力回数を図20の始動口スイッチ監視処理中で監視して異常があった場合に、ラッチレジスタへカウンタ回路のカウンタ値をラッチし直すようにする点に特徴がある。
この実施例では、割込みコントローラ118へ始動入賞検出信号(DET0〜DET2)が入力されたことに基づいて、割込みコントローラ118から乱数制御回路240へ供給されるラッチを指示する信号(ハードラッチ信号)LAT0〜LAT2がCPU111へ入力されると、図19の乱数ラッチ割込み処理が開始されるようになっている。乱数制御回路240へ供給されるハードラッチ信号LAT0〜LAT2の代わりに、乱数制御回路240からラッチレジスタへ出力される信号を割込み信号としてCPU111へ入力して処理を開始するようにしても良い。
この乱数ラッチ割込み処理が開始されると、先ず割込みを禁止して遊技用マイコン110内の各種レジスタが保持している値をRAM113内のスタック領域へ退避してから、ハードラッチ信号入力回数を更新(インクリメント)する(ステップS81〜S83)。その後、割込みの終了を宣言してステップS82で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS84〜S86)。
図20の始動口SW2監視処理(始動口スイッチ2監視処理)では、まず、普通変動入賞装置57が作動中であるか否か、すなわち普通変動入賞装置57が作動して遊技球の入賞が可能な開状態となっているか否かの判定(ステップS631)を行う。この判定において、普通変動入賞装置が作動中である場合(Yes)は、ステップS633へジャンプして始動口スイッチ2(57b)がオンであるか否かの判定を行う。また、ステップS631において、普通変動入賞装置が作動中でないと判定した場合(No)は、次のステップで不正入賞数が上限値であるか否かの判定(ステップS632)を行う。
普通変動入賞装置57は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数するようになっている。そして、不正入賞数が上限値であるか否かの判定(ステップS632)では、このように計数された不正入賞数が所定の上限値以上であるかが判定される。この判定において、不正入賞数が上限値である場合(Yes)は、始動口SW監視処理を終了する。すなわち、この場合は始動記憶を発生させないようにする。また、ステップS632において、不正入賞数が上限値でないと判定した場合(No)は、ステップS633で、始動口スイッチ2(57b)がオンであるか否かの判定を行う。
ステップS633で始動口スイッチ2がオンでないと判定された場合には、始動口SW2監視処理を終了する。一方、ステップS633で始動口スイッチ2がオンであると判定された場合には、ステップS634へ進んで、ラッチレジスタの値の取得処理(ステップS634)を行う。次に、普通変動入賞装置57への遊技球の入賞回数を更新する始動口信号出力回数更新処理を行う。
続いて、始動記憶数が上限値であるか否かの判定(ステップS636)が行われ、この判定において、始動記憶数が上限値の場合は当該監視処理から抜け、始動記憶数が上限値でない場合は、次のステップS637で、始動口スイッチ回数とハードラッチ信号入力回数を比較してハードラッチ信号入力回数が異常か否かの判定を行う。ここで、ハードラッチ信号入力回数の異常とは、始動口スイッチ回数に比べてハードラッチ信号入力回数がかなり多い場合である。ノイズによって誤った始動検出信号が入力されたり、遊技者が不正に大当りを発生させるために、偽の始動検出信号を入力させたような場合に、始動口スイッチ回数に比べてハードラッチ信号入力回数が多くなるので、ステップS637の判定を入れることで上記のようなノイズによる誤動作や不正を防止することができる。
ステップS637で異常と判定された場合(Yes)は、次のステップS638でラッチレジスタトリガ回路244,246,248(図6参照)のいずれかをセットして、ソフトウェア処理でラッチ信号を発生させる。このラッチ信号によってカウンタ回路243の値がラッチレジスタ245,247,249のいずれかにラッチされる。ステップS639では、このラッチレジスタの値を取得しステップS640へ進む。一方、ステップS637で異常でないと判定された場合(No)は、ステップS640へジャンプする。そして、ステップS640では、ステップS634で取得したレジスタの値またはステップS639で取得したレジスタの値を大当り乱数としてRAMに記憶する。この際、先ず今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにする。
その後、ステップS641で始動記憶数を更新(インクリメント)してから、大当り図柄乱数を取得しRAMに記憶する処理(ステップS642)、変動パターン乱数を取得しRAMに記憶する処理(ステップS643)を行い、さらに、演出制御装置150へ送信する飾り特図始動記憶数コマンドを送信回路に設定する処理(ステップS644)および乱数監視処理S650(図17参照)を行なって始動口SW2監視処理を終了する。
また、図15の始動口スイッチ監視処理(ステップS361)では、上記した始動口スイッチ2監視処理に続いて始動口SW1監視処理(始動口スイッチ1監視処理)が実行される。始動口スイッチ1監視処理は始動口スイッチ2監視処理とほぼ同様である。
始動口スイッチ2監視処理と始動口スイッチ1監視処理の差異は、始動口スイッチ1監視処理では図20の始動口スイッチ2監視処理のステップS631の普通変動入賞装置57が作動中であるか否かの判定、ステップS632の不正入賞数が上限値であるか否かの判定を行わないようにし、さらに、ステップ633で、始動口スイッチ2(57b)ではなく始動口スイッチ1(56a)がオンであるか否かの判定を行うようにした点にある。
図21には、第2発明、第3発明の実施例において、前記タイマ割込み処理(図14)とは別個に外部からの信号入力に基づいて実行される割込み処理の1つとしての乱数ラッチ割込み処理の手順が示されている。
この乱数ラッチ割込み処理は、割込みコントローラ118に始動入賞検出信号(DET0〜DET2)が入力されたことに基づいて、割込みコントローラ118から乱数制御回路240へ供給されるラッチを指示する信号(ハードラッチ信号)LAT0〜LAT2がCPU111へ入力されることで開始されるようになっている。乱数制御回路240へ供給されるハードラッチ信号LAT0〜LAT2の代わりに、乱数制御回路240からラッチレジスタへ出力される信号を割込み信号としてCPU111へ入力して処理を開始するようにしても良い。
この乱数ラッチ割込み処理が開始されると、先ず割込みを禁止して遊技用マイコン110内の各種レジスタが保持している値をRAM113内のスタック領域へ退避してから、ラッチレジスタ(245,247,249)の値を取得し、取得した値をRAM内のバッファ領域であるラッチ乱数領域に記憶する(ステップS51〜S54)。なお、ステップS54では、先ず今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにする。その後、割込みの終了を宣言してステップS52で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS55〜S57)。
次に、図15の特図ゲーム処理の始動口SW監視処理(ステップS361)において実行される第2発明、第3発明の実施例における始動口スイッチ2監視処理(ステップS361)の詳細を、図22を用いて説明する。
始動口SW2監視処理(始動口スイッチ2監視処理)では、まず、普通変動入賞装置57が作動中であるか否か、すなわち普通変動入賞装置57が作動して遊技球の入賞が可能な開状態となっているか否かの判定(ステップS611)を行う。この判定において、普通変動入賞装置が作動中である場合(Yes)は、ステップS613へジャンプして始動口スイッチ2(57b)がオンであるか否かの判定を行う。また、ステップS611において、普通変動入賞装置が作動中でないと判定した場合(No)は、次のステップで不正入賞数が上限値であるか否かの判定(ステップS612)を行う。
普通変動入賞装置57は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数するようになっている。そして、ステップS612では、このように計数された不正入賞数が所定の上限値以上であるか否かが判定される。この判定において、不正入賞数が上限値である場合(Yes)は、始動口SW2監視処理を終了する。すなわち、この場合は始動記憶を発生させないようにする。また、ステップS612において、不正入賞数が上限値でないと判定した場合(No)は、ステップS613で、始動口スイッチ2(57b)がオンであるか否かの判定を行う。
ステップS613で始動口スイッチ2がオンでないと判定された場合には、始動口SW2監視処理を終了する。一方、ステップS613で始動口スイッチ2がオンであると判定された場合には、ステップS614へ進んで、始動入賞口56および普通変動入賞装置57への遊技球の入賞回数を更新する始動口信号出力回数更新処理(ステップS614)を行う。
次に、始動記憶数が上限値であるか否かの判定(ステップS615)が行われ、この判定において、始動記憶数が上限値でない場合(No)は、次のステップS616で始動記憶数をインクリメント(+1)した後、図21のステップS54でRAM内のラッチ乱数領域に記憶した値を大当り乱数値として同じくRAM(113)内の所定の領域に記憶する(ステップS617)。そして、ラッチ乱数領域には所定のハズレ値(固定値)を記憶する(ステップS618)。
なお、前記ステップS54で、今回取得した値を今回乱数値記憶領域に記憶せずに、今回乱数値記憶領域とは異なるRAM内の所定領域に一時的に記憶し、ステップS617で、今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにするようにしてもよい。また、ステップS618では、ハズレ値を記憶する代わりに、記憶値を「オール0」にクリアあるいは「オール1」等の固定値に設定するように構成してもよい。このように、乱数値として記憶してからラッチ乱数領域に固定値を記憶することで、回路の故障等何らかの不具合で乱数ラッチ割込み処理が行われなくなった場合にも、取得済みのカウンタ値が重複して乱数値として記憶されるのを防止することができる。これにより、直前にラッチ乱数領域に保持されていた値が大当りに相当するものであった場合に、続けて大当りが発生するのを防止することができる。なお、ステップS618は省略してもよい。
その後、大当り図柄乱数を取得しRAMに記憶する処理(ステップS619)、変動パターン乱数を取得しRAMに記憶する処理(ステップS620)を行う。さらに、演出制御装置150へ送信する飾り特図始動記憶数コマンドを送信回路に設定する処理(ステップS621)および乱数監視処理S650(図17参照)を行なって始動口SW2監視処理を終了する。また、上記ステップS615の判定で、始動記憶数が上限値であると判定した場合(Yes)、すなわちこれ以上始動記憶を記憶できない場合も始動口SW2監視処理を終了する。
また、図15の始動口スイッチ監視処理(ステップS361)では、上記した始動口スイッチ2監視処理に続いて始動口SW1監視処理(始動口スイッチ1監視処理)が実行される。始動口スイッチ1監視処理は始動口スイッチ2監視処理とほぼ同様である。
始動口スイッチ2監視処理と始動口スイッチ1監視処理の差異は、始動口スイッチ1監視処理では図22の始動口スイッチ2監視処理のステップS611の普通変動入賞装置57が作動中であるか否かの判定、ステップS612の不正入賞数が上限値であるか否かの判定を行わないようにし、さらに、ステップ613で、始動口スイッチ2(57b)ではなく始動口スイッチ1(56a)がオンであるか否かの判定を行うようにした点にある。
外部からの始動検出信号の入力に基づいて乱数生成回路124においてカウンタ回路243の値をラッチレジスタ245,247,249にラッチさせ、その後タイマ割込み処理でラッチレジスタに保持されている値を乱数値として取得するようにした場合、始動検出信号の入力からタイマ割込み処理開始までの間に、乱数生成回路124内でノイズが発生しそのノイズによって誤ってカウンタ回路243の値がラッチレジスタ245,247,249のいずれかにラッチされると、ノイズでラッチレジスタに取り込まれたカウンタ値がCPUによって乱数値として取得されるおそれがある。
しかるに、上記実施例のように、始動検出信号の入力に基づいてCPUによって実行される図16の乱数ラッチ割込み処理によりラッチレジスタに保持されている値を乱数値として取得し、その後のタイマ割込み処理で実行される始動口スイッチ2監視処理で既に取得している乱数値を正規の乱数値として記憶することで、始動検出信号の入力からタイマ割込み処理開始までの間に発生したノイズによってラッチされた誤った乱数値が判定に使用されるのを防止することができる。
図23には、第4発明の実施例において前記タイマ割込み処理(図14)とは別個に外部からの信号入力に基づいて実行される割込み処理の1つとしての乱数ラッチ割込み処理の手順が示されている。なお、図23のフローチャートは、遊技盤に2つの始動入賞口(図3では56と57)が設けられており、それぞれの始動入賞口への入賞によって種類の異なる変動表示ゲームを実行するように遊技制御が設定されている場合に、1回のタイマ割込みによる処理が終了して次のタイマ割込み処理が開始されるまでの間(実施例では2msec)に続けて始動入賞が発生した場合に、入賞順序を区別して記憶することができるようにしたものである。以下の説明では、始動入賞口56を「始動口1」と称し、始動入賞装置57を「始動口2」と称する。また、各始動入賞口に対応してラッチレジスタ245,247も始動口1用と始動口2用に固定されている。このようにすることで、例えば、始動口1への入賞で特図1が変動し、始動口2への入賞で特図2が変動するようにし、特図1と特図2とで付与される遊技価値が異なるような遊技制御をする場合に、入賞順を正確に判定することにより誤った遊技価値を付与することを防止できる。
この乱数ラッチ割込み処理は、割込みコントローラ118に始動入賞検出信号DET0またはDET1が入力されたことに基づいて、割込みコントローラ118から乱数制御回路240へ供給されるラッチを指示する信号(ハードラッチ信号)LAT0またはLAT1がCPU111へ入力されることで開始されるようになっている。乱数制御回路240へ供給されるハードラッチ信号LAT0,LAT1の代わりに、乱数制御回路240からラッチレジスタへ出力される信号を割込み信号としてCPU111へ入力して処理を開始するようにしても良い。
この乱数ラッチ割込み処理が開始されると、先ず割込みを禁止して遊技用マイコン110内の各種レジスタが保持している値をRAM113内のスタック領域へ退避してから、対応するラッチレジスタ245または247の値を取得する(ステップS51〜S53)。続いて、ラッチレジスタ245に対応するステータスレジスタ250のラッチ許可フラグを参照してラッチレジスタ245がラッチ禁止になっているか否かを判定する(ステップS54)。始動入賞に基づいてカウンタ値のラッチがあった場合に禁止フラグがセットされるためである。
ステップS54で、「ラッチ禁止」になっている(Yes)と判定すると、次のステップS55で始動口1の始動口番号を取得し、「ラッチ禁止」になっていない(No)と判定すると、ステップS56で始動口2の始動口番号を取得する。始動口番号はROMに格納されていてもよいし、プログラムの初期化処理においてRAMの所定領域に格納されていてもよい。その後、RAM(113)内に用意されている図24に示すような始動口入賞情報記憶領域の「先始動口入賞情報領域」と「後始動口入賞情報領域」を調べてデータが「0」か否かを判定する(ステップS57)。
ここで、データが共に「0」の場合(Yes)には、ステップS55で取得した始動口番号を、図24の「先始動口入賞情報領域」の「始動口番号情報」の欄に記憶し(ステップS58)、ステップS53で取得したラッチレジスタの値を図24の「先始動口入賞情報領域」の「乱数(上位)」と「乱数(下位)」欄に分けて記憶する(ステップS59)。一方、ステップS57でデータが「0」でないと判定した場合(No)には、ステップS60へ移行して、ステップS55またはS56で取得した始動口番号情報が「先始動口入賞情報領域」の「始動口番号情報」と一致しているか否かを判定する。ここで、番号が一致していれば、ステップS53で取得したラッチレジスタの値を「先始動口入賞情報領域」の「乱数(上位)」と「乱数(下位)」欄に上書きする(ステップS61)。これにより、ノイズによってラッチレジスタがカウンタ値をラッチしていた場合にも、この乱数ラッチ割込み処理で取得したラッチレジスタの値を記憶することができる。
また、ステップS60で番号が一致していないと判定した場合(No)には、ステップS55で取得した始動口番号を、図24の「後始動口入賞情報領域」の「始動口番号情報」の欄に記憶し(ステップS62)、ステップS53で取得したラッチレジスタの値を図24の「後始動口入賞情報領域」の「乱数(上位)」と「乱数(下位)」欄に分けて記憶する(ステップS63)。その後、ステップS64で割込みの終了を宣言してから、ステップS52で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS65,S66)。上記のような処理を行なうことによって、始動口1と始動口2に連続して遊技球が入賞した場合にも、その順序に従ってラッチレジスタにラッチされたカウンタ値を各乱数値として正確に記憶することができる。
次に、図15の特図ゲーム処理の中で実行される第4発明の実施例における始動口スイッチ監視処理(ステップS361)の詳細を、図25〜図27を用いて説明する。
図25に示すように、始動口SW監視処理(始動口スイッチ監視処理)では、まず、図24の「先始動口入賞情報領域」と「後始動口入賞情報領域」にデータが記憶されているか否か判定する(ステップS601)。ここで、データが記憶されていなければ当該監視処理を終了し、データが記憶されている場合には、次のステップS602で、「先始動口入賞情報領域」の「始動口番号情報」が始動口1か否かを判定する。そして、「始動口番号情報」が始動口1の場合には、始動口SW1監視処理S610(図26)を実行してから始動口SW2監視処理S630(図27)を実行し、「始動口番号情報」が始動口1でないつまり始動口2の場合には、始動口SW2監視処理S630(図27)を実行してから始動口SW1監視処理S610(図26)を実行する。始動口SW1監視処理S610(図26)と始動口SW2監視処理S630(図27)との違いは、始動口SW1監視処理S610(図26)には、始動口SW2監視処理S630(図27)において最初に行なわれるステップS611の判定とステップS612の判定が存在しない点である。そこで、先ず始動口SW2監視処理S630について説明する。
始動口SW2監視処理S630では、図27に示すように、先ず普通変動入賞装置57が作動中であるか否か、すなわち普通変動入賞装置57が作動して遊技球の入賞が可能な開状態となっているか否かの判定(ステップS611)を行う。この判定において、普通変動入賞装置が作動中である場合(Yes)は、ステップS613へジャンプして始動口スイッチ(56a,57b)がオンであるか否かの判定を行う。また、ステップS611において、普通変動入賞装置が作動中でないと判定した場合(No)は、次のステップで不正入賞数が上限値であるか否かの判定(ステップS612)を行う。
普通変動入賞装置57は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数するようになっている。そして、ステップS612では、このように計数された不正入賞数が所定の上限値以上であるか否かが判定される。この判定において、不正入賞数が上限値である場合(Yes)は、始動口SW2監視処理を終了する。すなわち、この場合は始動記憶を発生させないようにする。また、ステップS612において、不正入賞数が上限値でないと判定した場合(No)は、ステップS613で、始動口スイッチ(56a,57b)がオンであるか否かの判定を行う。
ステップS613で始動口スイッチがオンでないと判定された場合には、始動口SW2監視処理を終了する。一方、ステップS613で始動口スイッチがオンであると判定された場合には、ステップS614へ進んで、始動入賞口56および普通変動入賞装置57への遊技球の入賞回数を更新する始動口信号出力回数更新処理を行う。
次に、始動記憶数が上限値であるか否かの判定(ステップS615)が行われ、この判定において、始動記憶数が上限値であると判定した場合(Yes)、すなわちこれ以上始動記憶を記憶できない場合は、始動口SW2監視処理を終了する。
また、上記ステップS615で、始動記憶数が上限値でないと判定した場合(No)は、次のステップS616で始動記憶数をインクリメント(+1)した後、図24の「先始動口入賞情報領域」の乱数領域に記憶されている値を大当り乱数値として同じくRAM(113)内の今回乱数値記憶領域に記憶する(ステップS617)。具体的には、先ず今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにする。そして、「後始動口入賞情報領域」に記憶されている値を「先始動口入賞情報領域」にシフトして記憶し、シフト後の「後始動口入賞情報領域」をクリア(記憶値を「0」に)する(ステップS618,S619)。
ここで、「先始動口入賞情報領域」と「後始動口入賞情報領域」にそれぞれ有意な値が記憶されていた場合には、「後始動口入賞情報領域」の記憶値が「先始動口入賞情報領域」にシフトされ、「後始動口入賞情報領域」がクリアされる。「先始動口入賞情報領域」にのみ有意な値が記憶されていた場合には、「後始動口入賞情報領域」の値はもともと「0」であり、それが「先始動口入賞情報領域」にシフトされることで「先始動口入賞情報領域」がクリアされる。また、始動口SW1監視処理を行ってから始動口SW2監視処理を行う場合には、始動口SW1監視処理でシフト後に「後始動口入賞情報領域」がクリアされ、始動口SW2監視処理で「後始動口入賞情報領域」の値(「0」)が「先始動口入賞情報領域」にシフトされることで、「先始動口入賞情報領域」がクリアされる。
上記処理の後、大当り図柄乱数を取得しRAMに記憶する処理(ステップS620)、変動パターン乱数を取得しRAMに記憶する処理(ステップS621)を行い、さらに、演出制御装置150へ送信する飾り特図始動記憶数コマンドを送信回路に設定する処理(ステップS622)および乱数監視処理S650(図17参照)を行なって始動口SW2監視処理を終了する。
上記のように、始動口入賞情報記憶領域の値を読み出して大当り乱数値として記憶した後にクリアすることで、取得済みの乱数値を重複して取得するおそれがなくなる。これにより、直前に始動口入賞情報記憶領域に記憶されていた乱数値が大当りに相当するものであった場合に、続けて大当りが発生するのを防止することができる。また、「後始動口入賞情報領域」の値を「先始動口入賞情報領域」にシフトした後に「後始動口入賞情報領域」をクリアすることにより、「先始動口入賞情報領域」の情報をクリアする動作を省け、カウンタ値(乱数)の読出し動作が簡略化され、処理速度が高速化されるとともに、プログラム容量を低減することができる。また、一度取得されたカウンタ値(乱数)を再度取得するという誤動作を防止することができる。
図28には、第5発明の第1実施例において前記タイマ割込み処理(図14)とは別個に外部からの信号入力に基づいて実行される割込み処理の1つとしての乱数ラッチ割込み処理の手順が示されている。
この乱数ラッチ割込み処理は、割込みコントローラ118に始動入賞検出信号(DET0〜DET2)が入力されたことに基づいて、割込みコントローラ118から乱数制御回路240へ供給されるラッチを指示する信号(ハードラッチ信号)LAT0〜LAT2がCPU111へ入力されることで開始されるようになっている。乱数制御回路240へ供給されるハードラッチ信号LAT0〜LAT2の代わりに、乱数制御回路240からラッチレジスタへ出力される信号を割込み信号としてCPU111へ入力して処理を開始するようにしても良い。
この乱数ラッチ割込み処理が開始されると、先ず割込みを禁止して遊技用マイコン110内の各種レジスタが保持している値をRAM113内のスタック領域へ退避する(ステップS51,S52)。それから、RAM113等に設けられているソフトタイマからなるディレイ用タイマを更新(+1)し、そのディレイ用タイマがタイムアップしたか否かを判定する(ステップS53,S54)。ここで、ディレイ用タイマがタイムアップしていないときは再びステップS53へ戻ってタイマを更新する。そして、ディレイ用タイマがタイムアップしたときは、ステップS55へ進んで、ラッチレジスタ(245,247,249)に保持されているカウンタ値を取得し、取得した値をRAM内のバッファ領域であるラッチ乱数領域に記憶する。
次に、ステップS55で取得したカウンタ値をディレイ用タイマの値に加算し、加算した値をディレイ用タイマにセットする(ステップS56,S57)。その後、割込みの終了を宣言してステップS52で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS55〜S57)。ステップS55で取得するカウンタ値は毎回異なるので、上記ステップS56,S57のように、取得したカウンタ値をディレイ用タイマの値に加算した値をディレイ用タイマにセットすることで、ステップS53,S54を抜けるのに要する時間すなわち遅延時間をランダムにすることができる。これにより、ラッチレジスタのカウンタ値を不正に取得させようとしても、取得タイミングを特定することが困難になり不正行為を防止することができる。
次に、図15の特図ゲーム処理の始動口スイッチ監視処理(ステップS361)において実行される第5発明の実施例における始動口スイッチ監視処理(ステップS361)の詳細を、図29を用いて説明する。
始動口SW2監視処理(始動口スイッチ2監視処理)では、まず、普通変動入賞装置57が作動中であるか否か、すなわち普通変動入賞装置57が作動して遊技球の入賞が可能な開状態となっているか否かの判定(ステップS611)を行う。この判定において、普通変動入賞装置が作動中である場合(Yes)は、ステップS613へジャンプして始動口スイッチ2(57b)がオンであるか否かの判定を行う。また、ステップS611において、普通変動入賞装置が作動中でないと判定した場合(No)は、次のステップで不正入賞数が上限値であるか否かの判定(ステップS612)を行う。
普通変動入賞装置57は、閉状態では遊技球が入賞不可能であり、開状態でのみ遊技球が入賞可能である。よって、閉状態で遊技球が入賞した場合は何らかの異常や不正が発生した場合であり、このような閉状態で入賞した遊技球があった場合はその数を不正入賞数として計数するようになっている。そして、ステップS612では、このように計数された不正入賞数が所定の上限値以上であるか否かが判定される。この判定において、不正入賞数が上限値である場合(Yes)は、始動口SW監視処理を終了する。すなわち、この場合は始動記憶を発生させないようにする。また、ステップS612において、不正入賞数が上限値でないと判定した場合(No)は、ステップS613で、始動口スイッチ2(57b)がオンであるか否かの判定を行う。
ステップS613で始動口スイッチ2がオンでないと判定された場合には、始動口SW2監視処理を終了する。一方、ステップS613で始動口スイッチ2がオンであると判定された場合には、ステップS614へ進んで、始動入賞口56および普通変動入賞装置57への遊技球の入賞回数を更新する始動口信号出力回数更新処理を行う。
次に、始動記憶数が上限値であるか否かの判定(ステップS615)が行われ、この判定において、始動記憶数が上限値でない場合(No)は、次のステップS616で始動記憶数をインクリメント(+1)した後、図28のステップS55で取得しRAM内のラッチ乱数領域に記憶した値を、大当り乱数値として同じくRAM(113)内の所定の領域に記憶する。この際、先ず今回乱数値記憶領域の値を前回乱数値記憶領域にシフトしてから、今回取得した値を今回乱数値記憶領域に格納するようにする(ステップS617)。そして、ラッチ乱数領域には所定のハズレ値(固定値)を記憶する(ステップS618)。ハズレ値を記憶する代わりに、記憶値を「オール0」にクリアあるいは「オール1」に設定するように構成してもよい。このように、乱数値として記憶してからラッチ乱数領域に固定値を記憶することで、回路の故障等何らかの不具合で乱数ラッチ割り込み処理が行われなくなった場合にも、取得済みのカウンタ値が重複して乱数値として記憶されるのを防止することができる。これにより、直前にラッチ乱数領域に保持されていた値が大当りに相当するものであった場合に、続けて大当りが発生するのを防止することができる。
その後、大当り図柄乱数を取得しRAMに記憶する処理(ステップS619)、変動パターン乱数を取得しRAMに記憶する処理(ステップS620)を行う。さらに、演出制御装置150へ送信する飾り特図始動記憶数コマンドを送信回路に設定する処理(ステップS621)および乱数監視処理S650(図17参照)を行なって始動口SW監視処理を終了する。また、上記ステップS615の判定で、始動記憶数が上限値であると判定した場合(Yes)、すなわちこれ以上始動記憶を記憶できない場合は、始動口SW2監視処理を終了する。
また、図15の始動口スイッチ監視処理(ステップS361)では、上記した始動口スイッチ2監視処理に続いて始動口SW1監視処理(始動口スイッチ1監視処理)が実行される。始動口スイッチ1監視処理は始動口スイッチ2監視処理とほぼ同様である。
始動口スイッチ2監視処理と始動口スイッチ1監視処理の差異は、始動口スイッチ1監視処理では図29の始動口スイッチ2監視処理のステップS611の普通変動入賞装置57が作動中であるか否かの判定、ステップS612の不正入賞数が上限値であるか否かの判定を行わないようにし、さらに、ステップ613で、始動口スイッチ2(57b)ではなく始動口スイッチ1(56a)がオンであるか否かの判定を行うようにした点にある。
外部からの始動検出信号の入力に基づいて乱数生成回路124においてカウンタ回路243の値をラッチレジスタ245,247,249にラッチさせ、その後タイマ割込み処理でラッチレジスタに保持されている値を乱数値として取得するようにした場合、始動検出信号の入力からタイマ割込み処理開始までの間に、乱数生成回路124内でノイズが発生しそのノイズによって誤ってカウンタ回路243の値がラッチレジスタ245,247,249のいずれかにラッチされると、ノイズでラッチレジスタに取り込まれたカウンタ値がCPUによって乱数値として取得されるおそれがある。
しかるに、上記実施例のように、始動検出信号の入力に基づいてCPUによって実行される図28の乱数ラッチ割込み処理によりラッチレジスタに保持されている値を乱数値として取得し、その後のタイマ割込み処理で実行される始動口スイッチ2監視処理で既に取得している乱数値を正規の乱数値として記憶することで、始動検出信号の入力からタイマ割込み処理開始までの間に発生したノイズによってラッチされた誤った乱数値が判定に使用されるのを防止することができる。
図30には、第5発明の第2の実施例における乱数ラッチ割込み処理の手順が示されている。
図28の乱数ラッチ割込み処理においては、ラッチレジスタから取得したカウンタ値を乱数として格納するとともにディレイ用タイマに加算しているのに対し、図30の乱数ラッチ割込み処理は、ディレイ用タイマに加算する値と乱数として使用する値を別のラッチレジスタから取得するようにしたものである。なお、この実施例を適用するに当たっては、ラッチレジスタトリガ回路244,246,248にデータがセットされると、カウンタ回路243の値を対応するラッチレジスタにラッチさせるためのトリガ信号が生成されるとともに、このトリガ信号がCPU111にも供給されて当該乱数ラッチ割込み処理を実行させるための擬似始動入賞検出信号とされるように構成されていることが必要である。
この乱数ラッチ割込み処理が開始されると、先ず割込みを禁止して遊技用マイコン110内の各種レジスタが保持している値をRAM113内のスタック領域へ退避する(ステップS61,S62)。次に、ステータスレジスタ250のラッチレジスタ(ラッチ1)247に対応するラッチ許可フラグを参照して、ラッチされているデータ(カウンタ値)が有るか否かを判定する(ステップS63)。最初に乱数ラッチ割込み処理が開始された際にはデータなし(No)と判定され、次のステップS64でラッチレジスタ(ラッチ0)245にラッチされているカウンタ値を取得して、その値をディレイ用タイマにセットする(ステップS65)。
それから、ディレイ用タイマを更新(+1)し、そのディレイ用タイマがタイムアップしたか否かを判定する(ステップS66,S67)。ここで、ディレイ用タイマがタイムアップしていないときは再びステップS66へ戻ってタイマを更新する。そして、ディレイ用タイマがタイムアップしたときは、ステップS68へ進んで、ラッチレジスタトリガ回路246にデータをセットしてラッチレジスタ(ラッチ1)247にカウンタ値をラッチさせるためのトリガ信号を発生させる。その後、割込みの終了を宣言してステップS62で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS71〜S73)。
上記ステップS68でトリガ信号を発生させると、乱数生成回路124でカウンタ回路243の値がラッチレジスタ(ラッチ1)247にラッチされるとともに、CPU111に擬似始動入賞検出信号が供給されて、再度図30の乱数ラッチ割込み処理が開始される。そして、ステップS63でデータ有り(Yes)と判定されて、ステップS69へ移行し、ラッチレジスタ(ラッチ1)247が保持しているカウンタ値を取得し、取得した値をRAM内のバッファ領域であるラッチ乱数領域に記憶する。その後、割込みの終了を宣言してステップS62で退避したレジスタの値を元のレジスタに復帰させた後、割込みを許可して処理を終了する(ステップS71〜S73)。
この実施例では、ステップS64で取得するカウンタ値が毎回異なるので、取得したカウンタ値をディレイ用タイマの値に加算した値をディレイ用タイマにセットすることで、ステップS66,S67を抜けるのに要する時間すなわち遅延時間をランダムにすることができる。また、ディレイ用タイマがタイムアップすると擬似始動入賞検出信号が生成されて他のラッチレジスタにカウンタ回路の値がラッチされ、それが乱数として取得される。これにより、ラッチレジスタのカウンタ値を不正に取得させようとしても、取得タイミングを特定することが困難になり不正行為を防止することができる。
なお、図30は、始動入賞検出信号DET0が入力されそれに基づいてカウンタ回路243の値をラッチレジスタ(ラッチ0)245にラッチさせるハードラッチ信号LAT0が生成された場合のフローチャートである。始動入賞検出信号DET1が入力された場合には、図30のステップS63、S68、S69における「ラッチ1」を「ラッチ0」に、またステップS64における「ラッチ0」を「ラッチ1」に置き換えた同様のフローチャートに従った処理を行うことで対応することができる。
以上本発明者によってなされた発明を実施形態に基づき具体的に説明したが、今回開示した実施形態は、全ての点で例示であって制限的なものではない。また、本発明の範囲は前述した発明の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び内容の範囲での全ての変更が含まれることが意図される。
例えば、前記実施形態では、ステータスレジスタ250にラッチ許可フラグを設けてラッチレジスタへのカウンタ値のラッチを制御するようにしているが、ラッチ信号が入力された際に、カウンタの値を転送する先のラッチレジスタの値を読み出してその値を確認し、値が「0000h」の場合にカウンタの値をレジスタに格納させ、レジスタの値が「0000h」でない場合にはカウンタの値をレジスタに格納させないようにすることで、ラッチレジスタの上書きを防止するように構成しても良い。このようにすれば、ステータスレジスタを省略することができる。
また、ステータスレジスタにラッチの禁止/許可を示すフラグを設けることにより、ノイズにより誤ったタイミングでカウンタ回路の値をラッチレジスタに防止することができるので、図22および図23によるソフトウェア処理を適用した場合、乱数生成回路124には、ステータスレジスタ250のラッチ許可フラグを使用したハードウェアによるカウンタ値の誤ラッチ防止を省略するようにしても良い。ただし、ハードウェアによるカウンタ値の誤ラッチ防止とソフトウェアによるカウンタ値の誤ラッチ防止の両方を適用することでよりノイズに強い遊技用マイコンを実現することができる。