以下、本発明の実施例について詳細に説明する。図1は、本実施例のパチンコ機GMを示す斜視図である。このパチンコ機GMは、島構造体に着脱可能に装着される矩形枠状の木製外枠1と、外枠1に固着されたヒンジ2を介して開閉可能に枢着される前枠3とで構成されている。この前枠3には、遊技盤5が、裏側からではなく表側から着脱自在に装着され、その前側には、ガラス扉6と前面板7とが夫々開閉自在に枢着されている。
ガラス扉6の外周には、LEDランプなどによる電飾ランプが、略C字状に配置されている。前面板7には発射用の遊技球を貯留する上皿8が装着され、前枠3の下部には、上皿8から溢れ出し又は抜き取った遊技球を貯留する下皿9と、発射ハンドル10とが設けられている。発射ハンドル10は発射モータと連動しており、発射ハンドル10の回動角度に応じて動作する打撃槌によって遊技球が発射される。
上皿8の外周面には、チャンスボタン11が設けられている。このチャンスボタン11は、遊技者の左手で操作できる位置に設けられており、遊技者は、発射ハンドル10から右手を離すことなくチャンスボタン11を操作できる。このチャンスボタン11は、通常時には機能していないが、ゲーム状態がボタンチャンス状態となると内蔵ランプが点灯されて操作可能となる。なお、ボタンチャンス状態は、必要に応じて設けられるゲーム状態である。
上皿8の右部には、カード式球貸し機に対する球貸し操作用の操作パネル12が設けられ、カード残額を3桁の数字で表示する度数表示部と、所定金額分の遊技球の球貸しを指示する球貸しスイッチと、ゲーム終了時にカードの返却を指令する返却スイッチとが設けられている。
図2に示すように、遊技盤5には、金属製の外レールと内レールとからなるガイドレール13が環状に設けられ、その内側の遊技領域5aの略中央には、液晶カラーディスプレイDISPが配置されている。また、遊技領域5aの適所には、図柄始動口15、大入賞口16、複数個の普通入賞口17(大入賞口16の左右に4つ)、通過口であるゲート18が配設されている。これらの入賞口15〜18は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
液晶ディスプレイDISPは、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この液晶ディスプレイDISPは、中央部に特別図柄表示部Da〜Dcと右上部に普通図柄表示部19を有している。そして、特別図柄表示部Da〜Dcでは、大当り状態の招来を期待させるリーチ演出が実行されたり、特別図柄表示部Da〜Dc及びその周りでは、当否結果を不確定に報知する予告演出などが実行される。
普通図柄表示部19は普通図柄を表示するものであり、ゲート18を通過した遊技球が検出されると、普通図柄が所定時間だけ変動し、遊技球のゲート18の通過時点において抽出された抽選用乱数値により決定される停止図柄を表示して停止するようになっている。
図柄始動口15は、左右1対の開閉爪15aを備えた電動式チューリップで開閉されるよう例えば構成され、普通図柄表示部19の変動後の停止図柄が当り図柄を表示した場合には、開閉爪15aが所定時間だけ、若しくは、所定個数の遊技球を検出するまで開放されるようになっている。
図柄始動口15に遊技球が入賞すると、特別図柄表示部Da〜Dcの表示図柄が所定時間だけ変動し、図柄始動口15への遊技球の入賞タイミングに応じた抽選結果に基づいて決定される停止図柄で停止する。なお、特別図柄表示部Da〜Dc及びその周りでは、一連の図柄演出の間に、予告演出が実行される場合がある。
大入賞口16は、例えば前方に開放可能な開閉板16aで開閉制御されるが、特別図柄表示部Da〜Dcの図柄変動後の停止図柄が「777」などの大当り図柄のとき、「大当りゲーム」と称する特別遊技が開始され、開閉板16aが開放されるようになっている。なお、特別遊技のラウンド数として、8ラウンド、16ラウンドなど各種の遊技態様が設けられている。ここで、規定ラウンド数が多いほど遊技者に有利である。
大入賞口16の開閉板16aが開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板16aが閉じる。このような動作は、最大で上記した規定ラウンド数の特別遊技が継続され、遊技者に有利な状態に制御される。なお、特別図柄表示部Da〜Dcの変動後の停止図柄が特別図柄のうちの特定図柄であった場合には、特別遊技の終了後のゲームが高確率状態(以下、確変状態という)となるという特典が付与される。
図3は、上記した各動作を実現するパチンコ機GMの全体回路構成を示すブロック図である。図中の一点破線は、主に、直流電圧ラインを示している。
図示の通り、このパチンコ機GMは、AC24Vを受けて各種の直流電圧やシステムリセット信号(電源リセット信号)SYSなどを出力する電源基板20と、遊技制御動作を中心統括的に担う主制御基板21と、主制御基板21から受けた制御コマンドCMDに基づいてランプ演出及び音声演出を実行する演出制御基板22と、演出制御基板22から受けた制御コマンドCMD’に基づいて液晶ディスプレイDISPを駆動する液晶制御基板23と、主制御基板21から受けた制御コマンドCMD”に基づいて払出モータMを制御して遊技球を払い出す払出制御基板24と、遊技者の操作に応答して遊技球を発射させる発射制御基板25と、を中心に構成されている。
但し、この実施例では、主制御基板21が出力する制御コマンドCMDは、コマンド中継基板26と演出インタフェイス基板27を経由して、演出制御基板22に伝送される。また、演出制御基板22が出力する制御コマンドCMD’は、演出インタフェイス基板27を経由して、液晶制御基板23に伝送され、主制御基板21が出力する制御コマンドCMD”は、主基板中継基板28を経由して、払出制御基板24に伝送される。
これら主制御基板21、演出制御基板22、液晶制御基板23、及び払出制御基板24には、ワンチップマイコンを備えるコンピュータ回路がそれぞれ搭載されている。そこで、これらの制御基板21〜24に搭載された回路、及びその回路によって実現される動作を機能的に総称して、本明細書では、主制御部21、演出制御部22、液晶制御部23、及び払出制御部24と言うことがある。なお、演出制御部22、液晶制御部23、及び払出制御部24の全部又は一部がサブ制御部である。
ところで、このパチンコ機GMは、図3の破線で囲む枠側部材GM1と、遊技盤5の背面に固定された盤側部材GM2とに大別されている。枠側部材GM1には、ガラス扉6や前面板7が枢着された前枠3と、その外側の木製外枠1とが含まれており、機種の変更に拘わらず、長期間にわたって遊技ホールに固定的に設置される。一方、盤側部材GM2は、機種変更に対応して交換され、新た盤側部材GM2が、元の盤側部材の代わりに枠側部材GM1に取り付けられる。なお、枠側部材1を除く全てが、盤側部材GM2である。
図3の破線枠に示す通り、枠側部材GM1には、電源基板20と、払出制御基板24と、発射制御基板25と、枠中継基板32とが含まれており、これらの回路基板が、前枠3の適所に各々固定されている。一方、遊技盤5の背面には、主制御基板21、演出制御基板22、液晶制御基板23が、液晶ディスプレイDISPやその他の回路基板と共に固定されている。そして、枠側部材GM1と盤側部材GM2とは、一箇所に集中配置された接続コネクタC1〜C4によって電気的に接続されている。
電源基板20は、接続コネクタC2を通して、主基板中継基板28に接続され、接続コネクタC3を通して、電源中継基板30に接続されている。そして、主基板中継基板28は、電源基板20から受けたシステムリセット信号SYS、RAMクリア信号DEL、電圧降下信号、バックアップ電源BAK、DC12V、DC32Vを、そのまま主制御部21に出力している。同様に、電源中継基板30も、電源基板20から受けたシステムリセット信号SYSや、交流及び直流の電源電圧を、そのまま演出インタフェイス基板27に出力している。なお、演出インタフェイス基板27は、受けたシステムリセット信号SYSを、そのまま演出制御部22と液晶制御部23に出力している。
一方、払出制御基板24は、中継基板を介することなく、電源基板20に直結されており、主制御部21が受けると同様の、システムリセット信号SYS、RAMクリア信号DEL、電圧降下信号、バックアップ電源BAKを、その他の電源電圧と共に直接的に受けている。
ここで、電源基板20が出力するシステムリセット信号SYSは、電源基板20に交流電源24Vが投入されたことを示す電源リセット信号であり、この電源リセット信号によって各制御部21〜24のワンチップマイコンその他のIC素子が電源リセットされるようになっている。
主制御部21及び払出制御部24が、電源基板20から受けるRAMクリア信号DELは、各制御部21,24のワンチップマイコンの内蔵RAMの全領域を初期設定するか否かを決定する信号であって、係員が操作する初期化スイッチSWTのON/OFF状態に対応した値を有している。
主制御部21及び払出制御部24が、電源基板20から受ける電圧降下信号は、交流電源24Vが降下し始めたことを示す信号であり、この電圧降下信号を受けることによって、各制御部21、24では、停電や営業終了に先立って、必要な終了処理を開始するようになっている。また、バックアップ電源BAKは、営業終了や停電により交流電源24Vが遮断された後も、主制御部21と払出制御部24のワンチップマイコンの内蔵RAMのデータを保持するDC5Vの直流電源である。したがって、主制御部21と払出制御部25は、電源遮断前の遊技動作を電源投入後に再開できることになる(電源バックアップ機能)。このパチンコ機では少なくとも数日は、各ワンチップマイコンのRAMの記憶内容が保持されるよう設計されている。
一方、演出制御部22と液晶制御部23には、上記した電源バックアップ機能が設けられていない。しかし、先に説明した通り、演出制御部22と液晶制御部23には、電源中継基板30と演出インタフェイス基板27を経由して、システムリセット信号SYSが共通して供給されており、他の制御部21,24と、ほぼ同期したタイミングで電源リセット動作が実現される。
図示の通り、主制御部21は、主基板中継基板28を経由して、払出制御部25に制御コマンドCMD”を送信する一方、払出制御部25からは、遊技球の払出動作を示す賞球計数信号や、払出動作の異常に係わるステイタス信号CONを受信している。ステイタス信号CONには、例えば、補給切れ信号、払出不足エラー信号、下皿満杯信号が含まれる。
また、主制御部21は、直接的に、或いは、遊技盤中継基板29を経由して、遊技盤5の各遊技部品に接続されている。そして、遊技盤上の各入賞口16〜18に内蔵された検出スイッチのスイッチ信号を受ける一方、電動式チューリップなどのソレノイド類を駆動している。図示の通り、入賞スイッチ信号SGは、直接、主制御部21に伝送され、その他のスイッチ信号は、遊技盤中継基板29を経由して、主制御部21に伝送されている。
図4は、主制御部21のワンチップマイコン21Aの内部構成の一部を図示したものである。ここでは、図柄始動口15の検出スイッチSWから入賞スイッチ信号SGを受ける部分も含めて図示している。図示の通り、ワンチップマイコン21Aは、Z80CPU(Zilog社)相当のCPUコア(以下CPUという)と、Z80CTC(counter timer circuit )相当のカウンタ・タイマ回路CTCと、ROM及びRAMのメモリ回路と、ウォッチドッグタイマWDTと、乱数生成回路GNRと、入力ポートINPとを内蔵して構成されている。
図4に示す通り、検出スイッチSWからの入賞スイッチ信号SGは、バッファ回路BUFを経由して、ワンチップマイコン21Aの乱数生成回路GNRに供給されている。また、入力ポートINPには、大入賞口16や普通入賞口17やゲート18などの検出スイッチからのスイッチ信号が供給されている。
ところで、バッファ回路BUFは、オープンコレクタ型の出力部を有し、入力側が12Vにプルアップされ、出力側が5Vにプルアップされている。そして、遊技球が図柄始動口15を通過して検出スイッチSWが入賞状態(ON状態)となると、バッファ回路BUFは、正論理のON信号として、入賞スイッチ信号SGを出力する。
ここで、入賞スイッチ信号SGのパルス幅(遊技球の通過時間T)は、遊技球の通過速度と、遊技球を検知する検出スイッチSWの検出範囲とで規定される。例えば、検出スイッチSWによる遊技球の検出範囲がhである場合に、初速度0の遊技球がt=0から自然落下すると仮定すると、t=Tのタイミングの落下速度Vが、V=gTとなり(g:重力加速度)、1/2mV2=mghの関係から、パルス幅T=SQR(2h/g)となり、仮にh=3mmであればパルス幅はT≒24.7mS、h=5mmであればT≒31.9mSとなる。
図4及び図5(a)に示す通り、乱数生成回路GNRは、入賞スイッチ信号SGなどのスイッチ信号を受けてラッチパルスLTを出力するラッチ制御回路30と、システムクロックCLK及び外部クロックXCLKを2分周する分周回路31と、2分周された2種類のクロック信号の何れか一方を更新クロックΦとして選択する選択回路32と、更新クロックΦに基づいて動作するN個の数列生成部33からなる数列生成群33Gと、ラッチ制御回路30から受けるラッチパルスLTに基づいて数列生成部33の生成値を取得する複数のラッチ回路34からなるラッチ群34Gと、各部の動作を規定する制御パラメータや各部の動作状態を示す動作ステイタスを保持する制御レジスタ群35Gと、数列生成部33の動作異常を検出する異常検出回路36と、を含んで構成されている。
なお、図4には図5には記載していないが、乱数生成回路GNRの各部の動作は、ワンチップマイコン21AのCPUコアとは別の専用プロセッサによって制御されている。但し、本明細書でCPUと称する場合には、ワンチップマイコン21AのCPUコアを意味し、専用プロセッサを意味しない。
ラッチ制御回路30は、複数M個のスイッチ信号が供給可能に構成され、M種類のラッチパルスLTが独立的に出力可能に構成されている。そして、このラッチ制御回路30の構成に対応して、ラッチ群34Gを構成するラッチ回路34の個数は、数列生成部33の個数のM倍であるN×M個である。また、このN×M個のラッチ回路34に対応して、ラッチ回路34からラッチデータを受けるラッチレジスタ35(図5(a)の35b,35d参照)も合計N×M個存在する。
したがって、本実施例の乱数生成回路GNRによれば、図柄始動口15や普通入賞口17のスイッチ信号を含んだ合計M種類のスイッチ信号に基づいて、M×N個の乱数値を生成することもでき、抽選処理の豊富化によって遊技内容を豊富化することができる。但し、この実施例では、便宜上、ラッチ制御回路30に供給されるスイッチ信号は、入賞スイッチ信号SGだけであると簡素化している。
上記した通り、ラッチ群34Gを構成するN×M個のラッチ回路34は、数列生成群33Gを構成するN個の数列生成部33と、M種類のスイッチ信号とに対応している。そして、制御レジスタ群35Gには、N×M個のラッチ回路34に対応して、N×M個のラッチレジスタ(35b,35dなど)が設けられ、N個の数列生成部33に対応してN個の乱数レジスタ(35a,35cなど)が設けられている。
例えば、図5(a)に示す乱数レジスタ35aや乱数レジスタ35cは、合計N個の乱数レジスタの一部であり、また、図5(a)に示すラッチレジスタ35bやラッチレジスタ35dは、合計N×M個のラッチレジスタの一部である。
そして、CPUは、ラッチレジスタ35bやラッチレジスタ35dなど、所望のラッチレジスタをアクセスすることで、ラッチ回路34にラッチされた数列生成部33の生成値を取得できるように構成されている。なお、この実施例では、ラッチレジスタ(35bや35dなど)の記憶値がCPUに読み出されると、ラッチレジスタ(35bや35dなど)の記憶値は、自動的にゼロクリアされるよう構成されている。
また、本実施例の制御レジスタ群35Gには、N個の乱数レジスタ(35aや35cなど)を含むので、CPUが、乱数レジスタ35aや乱数レジスタ35cなどの乱数レジスタをアクセスすることで、N個の数列生成部33が生成する数値列の瞬時値を、何時でも把握できることになる。したがって、本実施例によれば、ラッチレジスタ(35b、35dなど)をアクセスして抽選用乱数値を特定できるだけでなく、乱数レジスタ(35a、35cなど)をアクセスして抽選用乱数値を特定することもできる。
また、CPUは、制御レジスタ群35Gに適宜な制御パラメータを書込むことで、乱数生成回路GNRの動作内容を制御することができる。また、異常検出回路36やラッチ制御回路30の動作状態など、乱数生成回路GNRの内部動作状態は、制御レジスタ群35Gの一部であるステイタスレジスタ35eのステイタス値をCPUが読み出すことで把握可能に構成されている。
ここで、ステイタスレジスタ35eのステイタス値には、N個の数列生成部33についてのNビットのエラー情報が含まれている。そのため、CPUは、ステイタスレジスタ35eのステイタス値(エラー情報)を読み出すことで、全ての数列生成部33について、その異常の有無を確認することができる。
また、このNビットのステイタス値(エラー情報)は、CPUの読み出し動作に対応してゼロクリアされ、正常状態を示す値(=0)に変更されるよう構成されている。そのため、CPUは、ステイタスレジスタ35eのステイタス値(エラー情報)を、例えば、定期的に繰り返し読み出すことで、異常事態が自然復帰したか、或いは、自然復帰しない致命的な異常事態であるかを判断することができる。なお、異常検出回路36が検出する数列生成部33の異常には、動作停止などの深刻なエラーだけでなく、更新クロックΦの周波数のずれなどの軽微なエラーも含まれている。
また、ステイタスレジスタ35eのステイタス値には、N×M個のラッチレジスタ(35bや35dなど)が、ラッチデータを保持しているか否かのラッチ情報も含まれている。このラッチ情報は、N×M個のラッチレジスタ毎に、ラッチデータの有無が1ビット(0/1)で規定され、合計でN×Mビットとなる。
そして、このステイタス値(ラッチ情報)は、読み書き可能に構成されており、CPUは、ステイタスレジスタ35eから所定のラッチレジスタ(35bや35dなど)に対するラッチ情報を読み出すことで、そのラッチレジスタが有意なデータを保持しているか否かを判定することができる。
そして、有意なデータを保持しているラッチレジスタ(35bや35dなど)から、CPUがラッチデータを読み出すことで、CPUは、抽選処理用の乱数値を取得できることになる。なお、ラッチレジスタ(35bや35dなど)から、ラッチデータを読み出すと、当該ラッチレジスタのデータが自動的にゼロクリアされることは前記した通りである。
ところで、ラッチ情報についてのステイタス値は、書込み可能にも構成されており、所定のラッチレジスタについてのステイタス値(ラッチ情報)として、ゼロを書込むことで、当該ラッチレジスタのラッチデータを意図的にゼロクリアすることもできるよう構成されている。
この構成は、ラッチレジスタ(35bや35dなど)から、抽選用の乱数値を取得する場合であって、且つ、ラッチレジスタを上書き禁止モード(図6(f))で機能させる場合に特に意義を有する。なお、上書き禁止モードでは、後述するように、ラッチレジスタ(35bや35dなど)がゼロクリアされていない限り、その後のラッチパルスLTに拘わらず、ラッチデータを取得できない。一方、抽選用の乱数値を読み出すと、ラッチレジスタが自動的にゼロクリアされるので、その後は、次のラッチパルスLTに同期してラッチデータが一度だけ取得される。
そのため、抽選用の乱数値が読み出された後も、入賞スイッチ信号SGがONレベルを維持する場合には、ラッチレジスタには、同じ入賞スイッチ信号SGに対する次のラッチデータが書き込まれ、その後の上書きが禁止されることになる。なお、入賞スイッチ信号SGのパルス幅が20〜30mSであると仮定すると、このような事態は当然に発生し、今回の入賞スイッチ信号SGがOFFレベルに戻った後も、ラッチレジスタが上書き禁止状態を継続することになる。なお、この上書き禁止状態では、当該ラッチレジスタに対するステイタスレジスタ35eのステイタス値(ラッチ情報)はON状態(=1)である。
そこで、例えば、今回の入賞スイッチ信号SGがOFF状態に遷移したタイミングで、CPUが、当該ラッチレジスタに対するステイタスレジスタ35eのステイタス値(ラッチ情報)として、ゼロを書込むことで、当該ラッチレジスタのデータをゼロクリアすれば、その後のラッチ動作が可能となり、上記の弊害を解消することができる。
図5に戻って説明を続けると、図5(a)に示す通り、入賞スイッチ信号SGは、ラッチ制御回路30だけでなく、制御レジスタ群35Gを構成する信号入力レジスタ35fにも供給されており、CPUは、信号入力レジスタ35fをアクセスすることで、いつでも、入賞スイッチ信号SGのレベルを把握できるようになっている。なお、信号入力レジスタ35fは、この実施例では、入賞スイッチ信号SGのON/OFF状態を記憶するRSフリップフロップで構成されている(図6(B)、図6(C)参照)。
次に、数列生成群33Gを構成するN個の数列生成部33は、詳細には、X個の8ビット長の数列生成部CT8と、Y個の16ビット長の数列生成部CT16とに区分され(N=X+Y)、各々、更新クロックΦの立上りエッジに同期して数値列を更新している。また、全N個の数列生成部33は、任意に設定された数値範囲で数値列を生成する可変長の数列生成部VCTと、規定の数値範囲(0〜2n−1)で数値列を生成する固定長の数列生成部FCTとに各々細分されている。
ここで、8ビット固定長の数列生成部FCT8は、0〜255の数値範囲の数値列を生成し、16ビット固定長の数列生成部FCT16は、0〜65535の数値範囲の数値列を生成するが、ランダムな初期値から出発して、所定の出現パターンに基づき、飛び飛びの数値を採りながら、28個又は216個の数値を出現されて固定の数値範囲を一巡する。そして、その後は、別の初期値から出発して、別の出現パターンに基づいて同じ動作を繰り返す。
このような固定長の数列生成部FCTは、ワンチップマイコン21Aが電源リセットされると、直ちに、ランダムな初期値から更新動作を開始する。そして、CPUがWDTなどに基づいて異常リセットされても更新動作が停止されることなく、上記のランダムな更新動作を繰り返すので、数値列を推定することが事実上不可能となっている。すなわち、何らかの方法で、数値列の出現パターンや初期値を知ることができ、且つ、大当り抽選の抽選値Hitを知ることができた場合に、意図的にCPUを異常リセットさせても無駄であり、仮に、ワンチップマイコン21Aを電源リセットさせても、電源リセットからCPUが数列生成部33の数値を取得するまでの時間は、正確には一定化しないので、意図的に大当り状態を出現させることは不可能である。
以上、固定長の数列生成部FCTについて説明したが、可変長の数列生成部VCTは、規定の制御レジスタ35に任意に設定した最大値を上限値として、0〜最大値の任意の数値範囲で数値列を生成する。数値列の生成動作は、固定長の数列生成部FCTと同じであり、可変長の数列生成部VCTについても、ランダムな初期値から出発して、所定の出現パターンに基づき飛び飛びの数値を採りながら、設定された数値範囲を一巡する。そして、その後は、別の初期値から出発して、別の出現パターンに基づいて同じ動作を繰り返す。
可変長の数列生成部VCTは、ワンチップマイコン21Aが電源リセットされない限り、CPUが異常リセットされても更新動作が停止されることなく、上記のランダムな更新動作を繰り返す。この点では、固定長の数列生成部FCTの動作と同じである。しかし、ワンチップマイコン21Aが電源リセットされた場合には、可変長の数列生成部VCTは、規定の制御レジスタ35に最大値を設定した後に更新動作を開始する点で、固定長の数列生成部FCTより、ややセキュリティレベルが下がる。
但し、その反面、可変長の数列生成部VCTによれば、生成する数値列の数値範囲を適宜に設定して、抽選処理における当選確率を正確に規定できる利点がある。可変長の数列生成部VCTによれば、生成する数値列の数値範囲の最大値を、例えば199に設定するだけで、当選確率を正確に1/200にすることができる。また、固定長の数列生成部FCTは更新クロックΦを受ける毎に、その立上りエッジに同期して数値列を更新するが、可変長の数列生成部VCTは、規定個数(適宜な素数で規定)の更新クロックを受けるまでは、それまでの数値を維持し、最後の更新クロックΦの立上りエッジに同期して数値列を更新するので、この意味でのランダム性が高まる。
そこで、本実施例では、可変長の数列生成部VCTと固定長の数列生成部FCTのこれらの特徴を考慮して、大当り抽選用の乱数値RNDとしては、16ビット固定長の数列生成部FCT16を使用し、大当り状態において非確変当りか確変当りかを規定する図柄抽選や、特別遊技のラウンド数などの細部についての抽選決定には、8ビット可変長の数列生成部VCT8を使用している。なお、何ら限定されないが、本実施例では8ビット可変長の数列生成部VCT8は、最大値を199に設定することで、0〜199の数値範囲としている。
先に説明した通り、可変長の数列生成部VCTは、固定長の数列生成部FCTよりややセキュリティレベルが下がるが、8ビット可変長の数列生成部VCT8は、大当り抽選に当選した後の細部決定に使用されるに過ぎないので、本実施例によれば、8ビット可変長の数列生成部VCT8を使用しても、16ビット固定長の数列生成部FCT16による極めて高いセキュリティレベルが確実に維持される。
図5(c)に示す通り、固定長の数列生成部FCT16/FCT8は、更新レジスタR1と、各々適宜な加算値を保持する複数の加算値レジスタR2・・・R2と、複数の加算値レジスタR2・・・R2の何れか一個を選択するアドレス情報を生成するカウンタCTと、選択された加算値レジスタR2と更新レジスタR1の各保有値を加算する加算器ADとを有して構成されている。ここで、加算値レジスタR2・・・R2の個数は2X個であり、カウンタCTのY個の出力ビットのうち、任意に選択されたXビット(Y>X)が、加算値レジスタR2・・・R2を選択するアドレス情報として使用される。
なお、図5(c)では、説明の便宜上、ハードウェアとして加算器ADや2X個の加算値レジスタR2・・・R2が存在するよう記載しているが、好適には、加算器ADの機能は、専用プロセッサによって実現される。また、実際の加算値レジスタR2は、乱数生成回路GNRのメモリ(不図示)に記憶された加算値で代用される。
そして、加算器ADの加算結果が、更新レジスタR1に保存されるよう構成されており、選択される加算値レジスタR2は、更新クロックΦに同期して変更される。また、加算器ADは、16ビット長又は8ビット長の加算器であり、更新クロックΦに同期して機能している。したがって、更新レジスタR1の値がDA1で、その時に選択された加算値レジスタR2の値がDA2である場合には、R1←DA1+DA2の演算が、16ビット長又は8ビット長の加算演算として実行される。
本実施例では、各加算値レジスタR2・・・R2の保有値を適宜に設定することで、28個又は216個の更新クロックΦを受けると、それまでに生成された数値列が数値範囲(0〜216−1又は28−1)を一巡するよう構成されている。そして、更新レジスタR1は、電源投入時や、28個又は216個の更新クロックΦを受けた後に、適宜な初期値に変更されることで、『ランダムな初期値から出発して、所定の出現パターンに基づき飛び飛びの数値を採りながら、設定された数値範囲を一巡する動作』を実現している。また、28個又は216個の更新クロックΦを受けた後に、カウンタCTのY個の出力ビットのうち(Y>X)、選択されるXビットが適宜に変更されることで、加算値レジスタR2・・・R2の選択順序が変わり、出現パターンが変更される。
可変長の数列生成部VCT16/VCT8についても基本構成は同じであるが、更新タイミングを規定するカウンタCT’が付加されている(破線部参照)。カウンタCTは、更新クロックΦを規定回数(適宜な素数に設定)受けることを条件に、そのキャリ信号CYによって加算器ADを動作させており、この結果、規定個数の更新クロックΦを受けるまでは、それまでの数値を維持する変則動作が実現される。
また、可変長の数列生成部VCT16/VCT8には、加算結果が設定された数値範囲(0〜MAX)に含まれるよう補正部AMが設けられ(破線部参照)、加算器ADの出力ビットのうち、上限値MAXを超えない必要ビット部分だけが使用される。そして、加算結果SUMが上限値MAXを超える場合には、SUM←SUM−MAXの補正演算が実行される。
以上、数列生成部33について、内部構成の一例を極めて簡略化して説明したが、実際には、セキュリティレベルを上げるべく更に複雑な構成になっている。
図5(a)に示す通り、16ビット固定長の数列生成部41aには、専用プロセッサに制御されて16ビット長の数値のビット並びを適宜に入れ替える転置回路42が接続されている。そして、固定長の数列生成部FCT41aや転置回路42は、16ビットの転置パターンやランダムな初期値を付与する計数制御部40aに制御されて動作している。なお、計数制御部40aは、制御レジスタ群35Gの所定の制御レジスタに設定された制御パラメータに基づいて動作し、数列生成部41aの異常状態は、ステイタスレジスタ35eのステイタス値(エラー情報)として記憶される。
図5(a)に示す通り、転置回路42の出力は、16ビットラッチ回路34と共に、制御レジスタ群35Gの乱数レジスタ35aにも供給されており、CPUは何時でも乱数レジスタ35aの16ビット値を取得できるようになっている。
8ビット可変長の数列生成部41b(VCT8)についても同様であり、8ビット可変長の数列生成部41b(VCT8)は、計数制御部40bに制御されて、所定の数値範囲(0〜199)で数値列を生成し、一巡毎にランダムな初期値に基づいて更新動作を繰り返している。この計数制御部40bも、制御レジスタ群35Gの所定の制御レジスタに設定された制御パラメータ(最大値など)に基づいて数列生成部41bの更新動作を制御し、数列生成部41bの異常状態は、ステイタスレジスタ35eのステイタス値(エラー情報)として記憶される。
また、8ビット長の数列生成部41bの出力は、8ビットラッチ回路34と共に、制御レジスタ群35Gの乱数レジスタ35cにも供給されており、CPUは何時でも乱数レジスタ35cの数値を取得できるようになっている。
図4に示す通り、分周回路31には、CPUの動作を規定するシステムクロックCLKだけでなく、システムクロックCLKとは無関係に動作する外部クロックXCLKが供給可能に構成されている。2つのクロック信号CLK,XCLKは、何れも分周回路31で2分周されて選択回路32に供給され、制御レジスタ35への設定値に基づいて、何れか一方のクロック信号が、16ビット固定長の数列生成部41a(FCT16)用の更新クロックΦとして選択される。なお、16ビット可変長の数列生成部VCT16や、8ビット長の数列生成部FCT8/VCT8については、システムクロックCLKが更新クロックΦとして使用される。
ところで、本実施例では、16ビット固定長の数列生成部41a(FCT16)が、外部クロックXCLKを使用している状態で、異常検出回路36が数列生成部FCT16の異常動作を検知すると、外部クロックXCLKに代えて、自動的にシステムクロックCLKを使用するよう構成されている。そのため、外部クロックXCLKに異常が生じても、数列生成部FCT16が更新動作を継続できるだけでなく、外部クロックXCLKを悪用した不正行為を未然防止することができる。先に説明した通り、数列生成部FCT16の異常動作は、更新クロックΦの停止だけでなく、例えば、外部クロックXCLKの周波数の異常な低下なども含まれる。
何れにしても、外部クロックXCLKは、システムクロックCLKと非同期とすべきであるが、その周波数は、内部動作の安定化の観点から、システムクロックCLKと同程度の周波数とすべきであり、好ましくは、システムクロックCLKの周波数の0.8〜1.6倍の程度の周波数に設定される。なお、特に限定されないが、実施例の場合には、システムクロックCLKの周波数は20MHz程度である。
本実施例では、上記の通り、外部クロックXCLKが使用可能であるが、セキュリティ上の観点から数列生成部FCT16の更新動作をシステムクロックCLKに同期させないため、外部クロックXCLKを更新クロックΦとして使用するのが好適である。一方、外部クロックXCLKの発振回路を省略する簡易構成を採りたいとの観点からは、システムクロックCLKを更新クロックΦに使用するのが好適である。
そこで、本実施例では、遊技機の機種毎に何れの動作態様を採るかを、任意に選択できるようジャンパー線J1,J2を設け(図4参照)、以下の3つの動作態様(a)〜(c)を任意に選択可能にしている。
例えば、ジャンパー線J2を切断する機種(a)では、外部クロックXCLKが数列生成部FCT16用の更新クロックΦに選択され、ジャンパー線J1を切断する機種(b)では、システムクロックCLKが更新クロックΦに選択されるよう制御レジスタ35に制御パラメータが設定される。また、ジャンパー線J1,J2を維持した状態で、外部クロックXCLKを供給することなく、その入力端子INをプルダウンする機種(c)では(破線部参照)、外部クロックXCLKが数列生成部FCT16用の更新クロックΦに選択されるよう、制御レジスタ35に制御パラメータが設定される。なお、この第3の機種(c)では、外部クロックXCLKが供給されていない以上、実際には、バイパス経路Bypassを通過したシステムクロックCLKが使用されるのは勿論である。
第3の機種(c)では、万一、バイパス経路Bypass上の配線パターンなどに異常が生じた場合でも、数列生成部FCT16の異常動作を検出した異常検出回路36によって、自動的にノーマル経路NormalのシステムクロックCLKが使用されるので、引き続き数列生成部FCT16を正常に動作させることができる。この場合、動作移行時に周波数の変化がないので極めて自然な移行動作を実現することができる。そこで、本実施例は、第3の機種(c)として構成されている。したがって、全ての数列生成部33の更新クロックΦは、システムクロックCLKを2分周したものとなる。
次に、図5と図6に基づいてラッチ制御回路30と、ラッチレジスタ(35bや35dなど)の動作について説明する。なお、このラッチ制御回路30には、複数のスイッチ信号が供給可能であるが、先に説明した通り、入賞スイッチ信号SGだけが供給されているとする(M=1)。但し、他のスイッチ信号が供給されている場合(M≠1)でも以下と同様の動作が実現される。
図6Aに示す通り、この実施例では、入賞スイッチ信号SGのON/OFFレベルは、更新クロックΦの立下りエッジで判定され(図6A(b)参照)、更新クロックΦの立上りエッジで、全N個の数列生成部33の生成値が、各々の出現パターンに基づいて更新される(図6A(c)参照)。なお、数列生成部33の種類毎に、数値列の数値範囲や更新タイミングが異なるだけでなく、出現する数値列の出現パターンや、出現パターンの初期値が各々相違するので、N個の数列生成部33の数値列は、原則として各々相違する。
このような数列生成部33の更新動作に並行して、ラッチ制御回路30は、入賞スイッチ信号SGが連続して所定時間ONレベルを維持するか否かを判定しており、例えば、更新クロックΦで計測して128回連続してONレベルを維持することを条件にラッチパルスLTを出力するよう構成されている(図6A(d)参照)。本実施例は、このような判定動作を設けているので、スパイク状のノイズを入賞スイッチ信号SGであると誤認するおそれがない。
本実施例の場合、図4に示すバイパス経路Bypassを通過する20MHz程度のシステムクロックCLKが2分周されて更新クロックΦとなるので、更新クロックΦは10MHz程度である。したがって、ラッチパルスLTが出力される場合には、少なくとも、入賞スイッチ信号SGが連続して128/106=128μS程度、継続してONレベルを維持したことが担保され、ノイズによる影響を排除することができ、また、ノイズを悪用した不正遊技を排除することができる。
このようにしてラッチ制御回路30で生成されたラッチパルスLTは、ラッチ群34Gを構成するN×M個のラッチ回路34に供給され、各ラッチ回路34は、自らに対応する数列生成部33の生成値を、ラッチパルスLTに同期して取得保持し、これをそのままN×M個のラッチレジスタ(図5の35bや35dなど)に出力する(図6A(e)(f)参照)。
但し、本実施例の場合、更新クロックΦは、10MHz程度であり、入賞スイッチ信号SGのパルス幅Tは、30mS程度であるため、数列生成部33の生成値がラッチ回路34にラッチされた後も、引き続き入賞スイッチ信号SGはON状態を維持することになる。したがって、その後も、128μS程度の時間間隔で、繰り返しラッチパルスLTがラッチ回路に出力される。
このような動作を考慮して、本実施例では、ラッチレジスタ(35bや35d)を上書き禁止モード(図6A(e))で使用するか、上書き許可モード(図6A(f))で使用するかを、任意に選択可能に構成している。上書き禁止モードとは、ラッチレジスタ(35bや35dなど)のラッチデータが、CPUに読み取られてクリアされるまでは、ラッチ回路34の出力データを受け付けない動作モードを意味する。このような動作モードを採る場合には、CPUによるラッチレジスタの数値取得タイミングが遅れた場合でも、入賞スイッチ信号SGのONエッジに近接したタイミングにおける数列生成部33の生成値を取得できる意義がある。なお、図6A(e)には、最初に取得された数値Xが抽選用乱数値に使用されることを示している。そして、数値Xが取得されたことで、ラッチレジスタ(35bや35d)がゼロクリアされ、ステイタスレジスタ35eのステイタス値もゼロとなる(図6A(g))。
これに対して上書き許可モードとは、ラッチ回路34の出力データが常に受け付けられる動作モードであり、ラッチ回路34がラッチパルスLTを受ける毎に、ラッチレジスタ(35bや35dなど)が、新規の数値を取得し直す動作モードを意味する。このような動作モードを採る場合には、CPUの取得タイミングが遅れた場合、入賞スイッチ信号SGのONエッジから大きく(例えば数10mS程度)離れたタイミングの数値を取得することになる。
この場合には、例え、違法遊技者が、最適タイミング狙って入賞スイッチ信号SGをON動作させたとしても、実際に取得される数値を、違法遊技者の意図する値に近づけることはできない点が利点である。なお、図6A(f)には、最初に取得された数値Xが、次に、数値Yに置き換わり、その後も次々と変化して、最終的にラッチされた数値が抽選用乱数値に使用されることを示している。なお、図示例では、数値Yが取得されたことで、ラッチレジスタ(35bや35d)がゼロクリアされ、ステイタスレジスタ35eのステイタス値もゼロとなることを示している(図6A(g))。
上書き禁止モードも、上書き許可モードも、各々、十分に意義を有しているが、本実施例では、ラッチレジスタ(図5の35bや35dなど)を使用することなく、16ビット乱数レジスタ35aと8ビット乱数レジスタ35cに基づいて、抽選用乱数値を特定している。それは、ラッチレジスタ(図5の35bや35dなど)がゼロクリアされた後も、ラッチパルスLTに基づいて、ラッチレジスタにラッチデータが保存されることに対応して、ステイタスレジスタ35eのステイタス値がセットされ、このステイタス値を、新規の入賞スイッチ信号SGであると誤認するおそれがあるためである。
但し、この問題は、入賞スイッチ信号SGのONエッジを監視するだけで十分に解消できるので、上書きモードや上書き禁止モードで機能するラッチレジスタの意義が否定される訳ではなく、各々、優れた効果を発揮することに変わりはない。
以上を確認した上で、乱数レジスタ35a,35cに基づいて、抽選用乱数値を特定する実施例について説明する。なお、実施例では、乱数レジスタ35a,35cに基づいて抽選用乱数値を特定するが、16ビットラッチ回路34の出力を受けるラッチレジスタ35b(一個又は複数個)、及び/又は、8ビットラッチ回路34の出力を受けるラッチレジスタ35d(一個又は複数個)を、CPUがアクセスして抽選用乱数値を特定してもよく、むしろ、その方が典型的である。
何れにしても、16ビット長の乱数レジスタ35aは,図5(b)に示す通り、16ビット長のDラッチ50と、各8ビット長のバスバッファ51L,51Hと、負論理ORゲート52と、を有して構成されている。乱数レジスタ35aは、このように、1バイト単位で数値を保持するが、この構成に関連して、乱数レジスタ35aには、連続する2つのアドレス値NN,NN+1が付番されている。
なお、これらの点は、16ビット長のラッチレジスタ35bについても同様であり、16ビット長のDラッチと、各8ビット長のバスバッファ2個と、負論理ORゲートとを有して構成され、連続する2つのアドレス値NN’,NN’+1が付番されている。なお、乱数レジスタ35aやラッチレジスタ35bが、2バイトデータを1バイト毎に扱うのは、Z80相当のCPUのデータバスD0−D7が1バイト幅であるためであり、また、CPUに内蔵された汎用レジスタ群W,A,B,C,D,E,H,Lが各々1バイトデータを扱う構成になっているためである(図5(a)参照)。
なお、汎用レジスタ群のうち、IX,IYのデータ幅は16ビット長であり、プログラムカウンタPCからアドレスバスA0−A15に出力されるアドレスデータも16ビット長である。そして、上記したアドレス値NN,NN’は、アドレスバスA0−A15を経由してアドレスデコーダ37に供給されることで、適宜なデコード信号DECが生成され、何れかの制御レジスタ35がデコード信号DECによって選択されることになる。なお、この実施例では、アドレスバスA0−A15の下位8ビットA0−A7が、データバスD0−D7と共用されている。
さて、図5(b)に示す乱数レジスタ35aに説明を戻すと、NN番地と、NN+1番地に付番されたバスバッファ51L,51Hは、アドレスデコーダ37が出力する選択信号によって選択される。なお、一方の選択信号は、アドレスバスA0−A15の値が、NNの場合にアクティブレベル(Lレベル)となり、他方の選択信号は、アドレスバスA0−A15の値が、NN+1の場合にアクティブレベル(Lレベル)となる。そして、2つの選択信号は、負論理ORゲート52に供給されるので、負論理ORゲート52が出力するデコード信号DECは、2つの選択信号の何れか、或いは、双方がLレベルの時にLレベルとなる。
Dラッチ50は、図5(c)に示す回路構成を16個設けて構成されている。そして、Dラッチ50は、転置回路42が出力する転置処理後の数値CT0−CT15とデコード信号DECとを受けて動作している。具体的には、デコード信号DECを共通的に受ける16個のMOSトランジスタQ1と、NOTゲート(16個)を経由してデコード信号DECを受ける16個のMOSトランジスタQ2と、MOSトランジスタQ2のソース端子とドレイン端子を接続するNOTゲート(2×16個)とを有して構成されている。
Dラッチ50は、上記の通りに構成されているので、デコード信号DECがHレベルの場合には、トランジスタQ1がON状態で、トランジスタQ2がOFF状態となり、逆に、デコード信号DECがLレベルの場合には、トランジスタQ1がOFF状態で、トランジスタQ2がON状態となる。
そのため、デコード信号DECがHレベルの場合には、転置回路42の出力である16ビット長の数値CTi(IN)が、トランジスタQ1と2つのNOTゲートを通過して、そのレベルのままで出力信号CTi(OUT)となる。一方、デコード信号DECがLベルになると、トランジスタQ1がOFF状態となるので、転置回路42の出力は伝送されず、MOSトランジスタQ1の浮遊容量に蓄積されている直前の入力データが、トランジスタQ2を通過して出力される。
したがって、この回路構成によれば、デコード信号DECをLレベルに遷移させることで、バスバッファ51L,51Hに伝送する数値CTiを固定化することができる。言い換えると、デコード信号DEC=Lの状態で、CPUがバスバッファ51L,51Hをアクセスすれば、同一の数値の上位バイトと下位バイトを安定して取得できることになる。
以上、16ビット長の乱数レジスタ35aについて説明したが、8ビット長の乱数レジスタ35cの回路構成も、基本的に乱数レジスタ35aと同じである。すなわち、乱数レジスタ35cは、8ビット長のDラッチと、8ビット長のバスバッファと、負論理ORゲートと、を有して構成されている。但し、乱数レジスタ35cは、転置回路を経由することなく8ビット長の数列生成部41bの値を受けており、これを保持するバスバッファが単一個であることに対応して、乱数レジスタ35cには、単一のアドレス値が付番されている。
続いて、ラッチパルスLT(図6A(d))を出力するラッチ制御回路30の要部について説明する。ラッチ制御回路30は、図6Cに示すノイズ除去回路を含んで構成されており、ノイズ除去回路は、2つの128進カウンタCT1,CT2と、入賞スイッチ信号SGを正論理と負論理で受ける2つのANDゲートG1,G2と、NOTゲートG3とで構成されている。ここで、2つのANDゲートG1,G2には、各々、更新クロックΦが供給されている。
そして、カウンタCT1のキャリ出力CYは、ラッチパルスLTとして各ラッチ回路34に供給され、各カウンタCT1,CT2のキャリ出力CY,CYは、信号入力レジスタ35fのセット端子Sとリセット端子Rとに供給されている。図6Cに示す通り、本実施例では、信号入力レジスタ35fの1ビット分は、RSフリップフロップで構成されている。
そして、入賞スイッチ信号SGは、ANDゲートG1と共に、カウンタCT1のクリア端子CLRに供給されているので、入賞スイッチ信号SGがLレベルであると、カウンタCT1のカウント値はゼロ状態を維持することになる。一方、入賞スイッチ信号SGは、NOTゲートG3を経由して、ANDゲートG2と共に、カウンタCT2のクリア端子に供給されている。
本実施例のノイズ除去回路(図6C)は、上記の通りに構成されているので、入賞スイッチ信号SG=Hであれば、カウンタCT1が更新クロックΦに基づいてカウントアップされ、128個目の更新クロックΦを受けると、ラッチパルスLTたるキャリ信号CYが出力される。そして、その後も、128個目の更新クロックΦを受ける毎に、ラッチパルスLTが繰り返し出力される(図6A(d)参照)。
また、カウンタCT1のキャリ信号CYは、信号入力レジスタ35f(RSフリップフロップ)のセット端子Sにも供給されているので、連続して128個の更新クロックΦを受けることを条件に、信号入力レジスタ35fの記憶値がHレベルとなる。なお、図6Bは、入賞スイッチ信号SGと、更新クロックΦと、信号入力レジスタ35fの記憶値との関係を図示したものである。
ところで、このようなカウンタCT1のカウント動作中に、入賞スイッチ信号SG=Lとなると、カウンタ動作が初期状態に戻るので、結局、更新クロック128個分の間、入賞スイッチ信号SGが継続してHレベルであることを条件に、信号入力レジスタ35fがHレベルになり、ラッチパルスLTが出力されることになる。したがって、入賞スイッチ信号SGに誤認される可能性のあるスパイクノイズの影響が排除される。図6Bには、入賞スイッチ信号SG=Lの状態で、Hレベルのノイズが重畳される状態を図示しているが、このようなHレベルのノイズによってラッチパルスLTが出力されたり、信号入力レジスタ35fの記憶値が変化するおそれはない。
次に、信号入力レジスタ35fに記憶された入賞スイッチ信号SGも、やがて、数10mS後にはLレベルに戻る。そして、入賞スイッチ信号SGがOFFレベルに遷移した後は、カウンタCT2が計数動作を開始して、128個目の更新クロックΦを受けると、カウンタCT2からキャリ信号CYが出力される。このキャリ信号CYは、信号入力レジスタ35f(RSフリップフロップ)のリセット端子Rに供給されているので、カウンタCT2からのキャリ信号CYの出力に同期して、信号入力レジスタ35fの記憶値がLレベルに戻ることになる。
このように、本実施例では、入賞スイッチ信号SGがHレベルである場合だけでなくLレベルである場合にも、それが所定時間(更新クロック128個分)継続することを条件に、信号入力レジスタ35fに取得するので、ノイズによる悪影響を確実に排除することができる。
すなわち、入賞スイッチ信号SGがONレベルになった後に、スパイクノイズが重畳しても、入賞スイッチ信号SGがOFFレベルになったと誤認されるおそれがなく、したがって、入賞スイッチ信号SGのON遷移から、相当遅れて信号入力レジスタ35fがアクセスされても、その遅れが大きく(例えば30mS以上で)ない限り、入賞スイッチ信号SGを読み落とすことがない。なお、図6Bには、入賞スイッチ信号SG=Hの状態で、Lレベルのノイズが重畳される状態を図示しているが、このようなLレベルのノイズによって、信号入力レジスタ35fの記憶値が変化するおそれはない。
以上、ノイズの影響を排除して入賞スイッチ信号SGのレベルを把握できる構成を説明したが、本実施例では、CPUのソフウェア処理を全く使用することなく、ノイズ除去効果を達成することに大きな価値がある。
すなわち、プログラム処理によって上記と同様の動作を実現することは可能ではあるが、そのような手法を採るとCPUの処理負担が増して肝心の遊技制御に悪影響が及ぶ。また、この種の遊技機では、主制御部のROMの使用容量に厳しい制限があるので、ROMの記憶容量を無駄使いすることも問題があるが、本実施例によれば、ROMの記憶容量を全く消費することなく、上記した優れた耐ノイズ性能を発揮する。
続いて、図7に基づいて、CPUが、16ビット長の乱数レジスタ35aの数値を読み出すread動作について説明する。図7(b)は、システムクロックCLKが2分周されて生成された更新クロックΦを示しており、更新クロックΦの立上りエッジで、16ビット長の固定長の数列生成部FCT16である数列生成部41a(図5(a)参照)が更新されることを示している。図7(a)は、数列生成部41aの数値を示しており、説明の便宜上、出現パターンが単純なインクリメント更新(+1)であって、M→M+1と更新されることにしている。
また、以下の説明では、一例として、16ビットデータのロード命令LD WA,(HL)について説明する。なお、このロード命令の実行に先行して、HLレジスタには、乱数レジスタ35aの先頭アドレス値である16ビットデータNNが記憶されている。
ロード命令LD WA,(HL)は、HLレジスタが指示するアドレス値NNに付番されたレジスタの記憶値(乱数レジスタ35aの下位1バイト記憶値)をAレジスタに取得すると共に、NN+1に付番されたレジスタの記憶値(乱数レジスタ35aの上位1バイト記憶値)をWレジスタに取得する命令である。このロード命令は、1バイト長のオペコードと、1バイト長のオペランドに区分される2バイト命令であり、システムクロックCLKを4サイクル使用して実行を終えるよう構成されている。
すなわち、図7(c)〜図7(e)に示す通り、第1サイクル(M1サイクル)で、この命令(LD WA,(HL))の1バイト目が記憶されているメモリのアドレス値(プログラムカウンタPCH・PCLの値)がアドレスバスA0−A15に出力され、CPUにオペコードが取得された後、第2サイクルで、この命令の2バイト目が記憶されているメモリのアドレス値(プログラムカウンタPCH・PCLの値)がアドレスバスA0−A15に出力されてCPUにオペランドが取得される。
そして、その後の第3サイクルでは、アドレスバスA0−A15に16ビットアドレス値NNが出力されて、乱数レジスタ35aの下位1バイト記憶値がAレジスタに取得され、第4サイクルでは、アドレスバスA0−A15に16ビットアドレス値NN+1が出力されて、乱数レジスタ35aの上位1バイト記憶値がWレジスタに取得される。なお、図7(f)〜図7(h)は、CPUからコントロールバスに出力される制御信号であり、各々、M1サイクルであることを示すM1信号(f)、メモリリクエスト信号MREQ(g)、メモリリード信号RD(h)を示している。
また、図7(i)は、乱数レジスタ35aの負論理ORゲート52から出力されるデコード信号DECを示している。先に説明した通り、デコード信号DECは、アドレスバスA0−A15に出力されるアドレス値NNのアドレスデコード値と、アドレス値NN+1のアドレスデコード値の負論理OR値であるから、上記した4サイクルの命令実行中の第3サイクルと第4サイクルだけがLレベルとなり、それ以外のタイミングでは、Hレベルとなる。
そのため、乱数レジスタ35aのDラッチ50は、上記した4サイクル動作中の第2サイクルまではON状態であって、転置回路42からの数値CTiをバスバッファ51L,51Hに伝えるが、その後の第3サイクルと第4サイクルは、OFF状態となって、転置回路42からの数値CTiを遮断することになる。したがって、第2サイクルの終了時における転置回路42の出力値が、第3サイクルと第4サイクルの間は、変化することなく維持されることになる。
このように、本実施例では、乱数レジスタ35aにDラッチ50を設け、そのON/OFF状態をデコード信号DECで制御するので、16ビット長の乱数レジスタ35aなどの制御レジスタに付番されたアドレス情報を、連続してアドレスバスA0−A15に出力する限り、その時の数値を正確に取得することができる。したがって、例えば、+1の出現パターンを採っている16ビット長の数値列が、数値01FFHの状態から0200Hに更新されるタイミングで、乱数レジスタ35aがアクセスされたとしても、CPUに取得される値は、01FFHか0200Hである正常な数値を転置させた値であり、02FFHのような中途半端な数値が転置されて取得されるおそれはない。
なお、この動作は、更新クロックΦをシステムクロックCLKから生成するのではなく、外部クロックXCLKから生成した場合も同様に保障される。すなわち、図7(j)に示すように、より高速で、システムクロックと同期しない更新クロックΦを使用した場合でも、デコード信号DECによるDラッチの開閉制御によって、正常な数値であるA+1を転置させた値を取得することができる。
これに対して、制御レジスタに付番されたアドレス情報を、アドレスバスA0−A15に連続して出力しないロード命令を使用すると上記のような安定動作が保証されない。図8は、ロード命令LD A,(DE) とロード命令LD W,(HL) を連続される場合を例示している。なお、これらの命令に先行して、DEレジスタにはアドレス値NNが格納され、HLレジスタにはアドレス値NN+1が格納されている。また、説明の都合上、16ビット長の数値列は、+1の出現パターンを採っていることにする。
このような状態で、ロード命令LD A,(DE) と、ロード命令LD W,(HL) とを連続させても、ロード命令LD A,(DE) の実行後に、不可避的にロード命令LD W,(HL) の命令フェッチサイクル(M1)が入るので、デコード信号DECをLレベルに維持させることができず、その結果として、MやM+1のような正常なアドレス値を転置させた値ではなく、数値Mの下位バイトと、数値M+1の上位バイトを組み合わせた中途半端な数値が転置されてCPUに取得されることになる。
このような場合には、特に、発生する数値列の数値範囲(0〜MAX)が、固定範囲(0〜216)でない場合(MAX<216−1)には、不合理な乱数値RNDを取得してしまうおそれもある。例えば、数値列の上限値MAXがMAX=1150Hの場合に、仮に、10FFHから1134Hへの更新時に乱数値が取得されると、取得された乱数値は、11FFHとなって上限値MAXを超えてしまう。
以上、乱数生成回路GNRについて詳細に説明したので、続いて、図4に示すCPUによって実行される主制御部21の遊技動作を説明する。図9及び図10は、主制御部21の制御プログラムを示すフローチャートであり、電源電圧の復旧や投入に基づいて起動されるシステムリセット処理(図9)と、所定時間毎(4mS)に起動されるマスク可能なタイマ割込み処理(図10)とで構成されている。
以下、図9を参照しつつ、システムリセット処理プログラム(メイン処理)について説明する。メイン処理が開始されるのは、停電状態からの復旧時のように初期化スイッチSWTがOFF状態で電源がON状態になる場合と、遊技ホールの開店時のように、初期化スイッチSWTがON操作されて電源がON状態になる場合とがある。なお、ウォッチドッグタイマWDTが起動してCPUが強制的にリセットされる場合もある。
何れの場合でも、Z80CPUは、最初に、CPU内部のスタックポインタSPの値を、スタック領域の最終アドレスに対応して初期設定する(ST1)。次に、ワンチップマイコンの乱数生成回路GNRの制御レジスタ群35Gを含んだ各種レジスタの値を初期設定する(ST2)。
ステップST2の初期設定処理が終われば、入力ポートINPからRAMクリア信号DELを取得する(ST3)。RAMクリア信号DELとは、ワンチップマイコン21Aの内蔵RAMの全領域を初期設定するか否かを決定する信号であって、係員が操作する初期化スイッチSWTのON/OFF状態に対応した値を有している。
次にRAMクリア信号DELのレベルが判定されるが(ST4)、RAMクリア信号DELがON状態であったと仮定すると、内蔵RAMの全領域がゼロクリアされる(ST8)。次に、RAM領域がゼロクリアされたことを報知するための制御コマンドを出力する(ST9)。
次に、タイマ割込み動作(図10)を起動する割込み信号INTを出力するCTCを初期設定する(ST10)。そして、CPUを割込み禁止状態にセットした状態で(ST11)、必要なカウンタがあれば、これについて更新処理を実行し(ST12)、その後、CPUを割込み許可状態に戻して(ST13)、ステップST11に戻る。
但し、本実施例では、乱数生成回路GNRから多数の乱数値を取得できるので、ステップST11〜ST13の処理を全て排除することができる。そのため、ST11〜ST13の分だけ、ROMの記憶容量を節約することができ、他の制御処理を豊富化することができる。
次に、ステップST4の判定処理に戻って説明すると、CPUがウォッチドッグタイマWDTなどによって強制的にリセットされた場合や、停電状態からの復旧時には、RAMクリア信号DELはOFF状態である。そして、このような場合には、ステップST4の判定に続いて、バックアップフラグBFLの内容が判定される(ST5)。バックアップフラグBFLとは、電源監視処理(ST20)においてバックアップ処理が実行されたことを示すデータであり、この実施例では、電源遮断時にバックアップフラグBFLが5AHとされ、電源復帰後のステップST20の処理でゼロクリアされる。
そのため、電源投入時や、停電状態からの復旧時である場合には、バックアップフラグBFLの内容が5AHの筈である。但し、何らかの理由でプログラムが暴走状態となり、ウォッチドッグタイマによるCPUリセット動作が生じたような場合には、バックアップフラグBFL=00Hである。したがって、BFL≠5AH(通常はBFL=00H)となる場合には、ステップST5からステップST8の処理に移行させて遊技機の動作を初期状態に戻す。
一方、バックアップフラグBFL=5AHであれば、チェックサム値を算出するためのチェックサム演算を実行する(ST6)。ここで、チェックサム演算とは、内蔵RAMのワーク領域を対象とする8ビット加算演算である。そして、チェックサム値が算出されたら、この演算結果を、RAMのSUM番地の記憶値と比較をする(ST7)。
SUM番地には、電圧降下時に実行される電源監視処理(ST20)において、同じチェックサム演算によるチェックサム値が記憶されている。なお、記憶された演算結果は、内蔵RAMの他のデータと共に、バックアップ電源によって維持されている。したがって、本来は、ステップST7の判定によって両者が一致する筈である。
しかし、電源降下時にチェックサム演算の実行できなかった場合や、実行できても、その後、メイン処理のチェックサム演算(ST6)の実行時までの間に、ワーク領域のデータが破損している場合もあり、このような場合にはステップST7の判定結果は不一致となる。
そこで、判定結果の不一致によりデータ破損が検出された場合には、ステップST8の処理に移行させてRAMクリア処理を実行し、遊技機の動作を初期状態に戻す。一方、ステップST7の判定において、チェックサム演算(ST8)によるチェックサム値と、SUM番地の記憶値とが一致する場合には、上記したステップST10の処理に移行することになる。
続いて、上記したメイン処理を中断させて、4mS毎に開始されるタイマ割込み処理プログラム(図10)を説明する。タイマ割込みが生じると、CPUのレジスタを保存することなく、直ちに電源監視処理を実行する(ST20)。これは、タイマ割込み処理が起動されるタイミングが、ステップST13の直後に固定されているためである。
電源監視処理(ST20)では、電源基板20から供給されている電圧降下信号のレベルを判定し、異常レベルであれば、バックアップフラグBAKFLGを5AHに設定し、チェックサム値を算出して、SUM番地に記憶した上で、電源が遮断されるのを待つ。
次に、普通図柄処理ST28における抽選処理で使用される当り用カウンタRGを更新する乱数作成処理を実行する(ST21)。当り用カウンタRGは、所定数値範囲内でインクリメント(+1)され、更新後のカウンタの値は、当り判定用乱数値として当否抽選処理で活用される。具体的には、当り用カウンタRGの値は、遊技球がゲート18を通過した場合に、普通図柄処理(ST18)における当り抽選処理で当り用カウンタRGが使用される。
ところで、特別図柄処理(ST32)における大当り抽選処理に使用される抽選用乱数値RNDについては、乱数生成回路GNRから取得するので、ソフトウェア処理で更新されることはない。したがって、この意味でも、本実施例では、ROMの記憶容量を節約することができ、他の制御処理を豊富化することができる。
なお、本明細書では、乱数生成回路GNRに関する説明の便宜上、当り用カウンタRGについて、ステップST21の処理で更新しているが、本実施例の乱数生成回路GNRからは、更新クロックΦを共通化するものの、数値が全く関連しない多数の乱数値を取得できるので、実際には、ステップST21の処理を排除するのが好ましく、そうすれば、ROMの記憶容量を更に節約することができる。
何れにしても、次に、遊技動作の時間を管理しているタイマについてタイマ減算処理を行う(ST22)。減算されるタイマは、大入賞口16の開放時間や、その他の遊技演出時間を管理するものである。
このようなタイマ減算処理が終わると、図柄始動口15やゲート18の検出スイッチを含む各種スイッチ類のスイッチ信号を取得して記憶する(ST23)。なお、図柄始動口15に関する入賞スイッチ信号SGは、乱数生成回路GNRの信号入力レジスタ35fをアクセスして取得する。一方、その他の検出スイッチによるスイッチ信号は、ワンチップマイコンの入力ポートINPから取得する。但し、入賞スイッチ信号SG以外のスイッチ信号についても、乱数生成回路GNRの信号入力レジスタ35fを経由させることができ、その方が好ましいことは前述した通りである。
そして、何れのスイッチ信号も、今回の取得値と前回の取得値とを対比して、ON状態に遷移したか、或いは、OFF状態に遷移したかが判定され記憶される。従来の遊技機では、ノイズ対策として、スイッチ信号のON遷移やOFF遷移の判定に、複数回の割込み処理に跨った重複判定を要したが、本実施例では、乱数生成回路GNRにノイズ除去回路(図6C)を設けているので、入賞スイッチ信号SGについての重複判定は全く不要である。
すなわち、従来は、割込み処理毎に繰り返し判定して、例えばOFF→ON→ONと推移したことを条件に、入賞スイッチ信号SGがON遷移したと判定していたが、本実施例では、単純にOFF→ONの変化をステップST23の処理で確認できれば、それだけで、入賞スイッチ信号SGがON遷移したと判定することができる。なお、信号入力レジスタ35fを経由させれば、他のスイッチ信号についても同様の判定で足りることになる。
このように、本実施例では、スイッチ信号がON遷移した2×τ後には、そのスイッチ信号がON遷移したと判定できるので、例えば、制御内容を複雑高度化するべく、割込み周期を大幅に長く設定しても(τ>>4mS)、入賞スイッチ信号SGやその他のスイッチ信号を読み落とすおそれがない。また、重複判定をしなくて良い分だけ、制御プログラムを簡素化でき、その分だけROMの消費量を抑制できる。
さて、このようなスイッチ入力処理(ST23)が終わると、エラー管理処理を実行する(ST24)。エラー管理処理とは、遊技球の補給が停止したり、遊技球が詰まっていないかなど、機器内部に異常が生じていないかの判定を意味する。
また、乱数生成回路GNRに異常が発生していないかの判定を意味する。先に説明した通り、N個全ての数列生成部33・・・33について、その異常の有無は、ステイタスレジスタ35eに記憶されている。したがって、CPUは、ステイタスレジスタ35eを読み出すだけで、数列生成部33が正常に動作しているかを判定することができる。そして、ステイタスレジスタ35eを読み出す毎に、ステイタス値は正常レベルに戻るので、複数回の割込み処理で、数列生成部33に異常が認められる場合には、その異常を報知して制御動作を停止するようにしている(ST40)。
エラー管理処理(ST24)が終われば、次に、払出制御部33向けの制御コマンドを作成した後(ST25)、この段階で生成されている制御コマンドを該当するサブ制御部に伝送する(ST26)。
続いて、現在が当り中の動作モードでないことを条件に、普通図柄処理を実行する(ST28)。普通図柄処理とは、普通電動役物を作動させるか否かの判定を意味し、ステップST23のスイッチ入力結果によって遊技球がゲートを通過していると判定された場合に、乱数生成処理(ST21)で更新された当り用カウンタRGを、当り当選値と対比する。そして、対比結果が当選状態であれば当り中の動作モードに変更する。また、当り中となれば、普通電動役物の作動に向けた処理を行う(ST30)。
次に、必要な制御コマンドを該当するサブ制御部に伝送し(ST31)、特別図柄処理を行う(ST32)。特別図柄処理とは、大入賞口16など特別電動役物を作動させるか否かの判定であり、大当り抽選処理を含んだ処理である。
具体的な処理としては、ステップST23のスイッチ入力結果によって入賞スイッチ信号SGがON遷移したと判定された場合には、乱数生成回路GNRの乱数レジスタ35aの数値を取得して、大当り抽選用の乱数値RNDとして記憶する。この場合の取得処理としては、単一の命令(フェッチサイクルが単一)で、2バイトデータを取得できるロード命令が使用される。例えば、図7に説明したロード命令LD AW,(HL)が使用され、これに先行して、乱数レジスタ35aを特定するレジスタ番号NN,NN+1についてのロード命令LD HL,NNが使用される。
また、乱数レジスタ35cの数値を取得して、図柄抽選用の乱数値RND’として記憶する。先に説明した通り、この実施例では、大当り抽選用の乱数値RNDは、数値範囲(0〜65535)の16ビットデータであり、図柄抽選用の乱数値RND’は、数値範囲(0〜199)の8ビットデータである。したがって、乱数レジスタ35cのアクセスは、1バイト用のロード命令であるLD A,(DE) が使用される。
そして、このタイミングで、図柄演出処理(図柄表示部Da〜Dcの図柄変動処理)が終了しており、且つ、抽選保留状態の先行する入賞スイッチ信号SGが存在しない場合には、乱数値RNDに基づいて大当り抽選処理を実行し、乱数値RND’に基づいて図柄抽選を実行する(ST32)。大当り抽選処理の当選状態では、図柄抽選処理によって確変当りか否か、及び、特別遊技のラウンド数が決定され、大当り抽選処理の外れ状態では、図柄抽選処理によって外れ図柄が決定される。
また、ステップST32の処理では、変動動作後の停止図柄の特定を含んで、変動パターンコマンドが抽選決定される。変動パターンコマンドとは、演出制御部22に伝送される演出動作用の制御コマンドであり、画像制御部23における図柄変動動作を規定したものである。この変動パターンコマンドは、大当り抽選の当否結果だけでなく、リーチ演出などの演出動作の総時間を特定してコマンドバッファに格納される。なお、コマンドバッファに格納された変動パターンコマンドは、その後のステップST35のタイミングで演出制御部22に伝送される。
一方、このタイミングが、図柄演出処理中であれば、大当り抽選処理が待機状態(抽選保留状態)となり、実行中の図柄演出が終了し、これに続く大当り抽選に伴う図柄演出が終了すれば、そのタイミングにおけるステップST32の処理として、保存状態の大当り抽選用の乱数値RNDや、乱数値RND’を使用した抽選処理が実行される。
何れにしても、特別図柄処理(ST32)の大当り抽選処理によって当選状態となれば、大当り中の動作モードに変わり、大入賞口など特別電動役物の作動に向けた処理を行う(ST34)。
次に、ステップST32の処理で生成された変動パターンコマンドが演出制御部22に伝送され(ST35)、タイマ割込みが終わる。その結果、メインルーチン(不図示)の処理に戻ることになるが、所定時間(4mS)経過すると、再度ステップST11の処理が開始されるので、ステップST20〜35の処理は、4mS毎に繰り返されることになる。
以上説明した実施例では、入賞スイッチ信号SGのON遷移を信号入力レジスタ35fの値に基づいて判定し(ST23)、入賞スイッチ信号SGがON遷移した場合には、各々、単一の命令で、乱数レジスタ35a,35cから2種類の乱数値RND,RND’を取得しており(ST32)、ラッチレジスタ35b,35dやステイタスレジスタ35eをアクセスしない点で、プログラム負担が最小化されている。しかも、入賞スイッチ信号SGのON遷移した直近のタイミングにおける数列生成部33の生成値を取得できる点でも優れている。
しかし、このような構成に限定されるものではなく、適宜に変更可能である。例えば、上書き禁止モードや上書き許可モードに設定されたラッチレジスタ(35b,35dなど)から、複数種類の乱数値RND,RND’・・・を取得するのも好適である。なお、この場合にも16ビット長のラッチレジスタ(35b)については、LD WA,(HL)などの命令で、2バイト長の乱数値を一気に取得される。
また、入賞スイッチ信号SGのON遷移については、必ずしも、信号入力レジスタ35fの値に基づいて判定する必要はなく、例えば、ステイタスレジスタ35eのステイタス値(ラッチ情報)に基づいて判定しても良い。すなわち、本実施例では、信号入力レジスタ35fに対すると同様の確実なノイズ対策を施した上で、ラッチパルスLTが出力されるので(図6A(d)参照)、ステイタスレジスタ35eに加えて、信号入力レジスタ35fをアクセスする必要は特にない。
但し、入賞スイッチ信号SGのON状態が継続されている状態で、ラッチレジスタ(35b,35dなど)を重複してアクセスしてしまう動作を防止するには、入賞スイッチ信号SGのONエッジに対応してラッチレジスタ(35b,35dなど)をアクセスするのが好ましい。すなわち、入賞スイッチ信号SGのONエッジを検出するために、ステイタスレジスタ35eに加えて、信号入力レジスタ35fをアクセスするのが好ましい。
なお、信号入力レジスタ35fをアクセスする構成を採る場合には、入賞スイッチ信号SGのOFFエッジを検出時に、ステイタスレジスタ35eのステイタス値(ラッチ情報)をクリアすることもでき、ラッチレジスタ(35b,35dなど)を上書き禁止モードで使用しても、何の問題も生じない。
以上、本発明の実施例について詳細に説明したが、具体的な回路構成やプログラム処理は、適宜に変更可能であり、特に本発明を限定するものではない。例えば、図5(b)の回路構成では、Dラッチ50は、ORゲート52の出力によって制御されているが、ORゲート52を省略して、制御信号MREQや制御信号RDによってDラッチ50を制御しても良い。
また、16ビット固定長/可変長の数列生成部FCT16や、8ビット固定長/可変長の数列生成部VCT8の用途は、上記したものに限定されず、各種の活用が可能である。例えば、特別図柄抽選処理(ST32)において、先の実施例で使用した数列生成部VCT8と同一又は別の数列生成部VCT8を使用して、その数列生成部VCT8が生成する数値に基づいて、変動パターンコマンドを抽選決定することができる。
この場合、変動パターンコマンドの個数と、数列生成部VCT8が生成する数値列の数値範囲を同一に設定すれば、各変動パターンの当選率を同一にすることができる。逆に、変動パターンコマンドの個数より数列生成部VCT8の数値範囲を広げれば、各変動パターンの当選率を非同一にすることで、変動パターン毎に、当選率を適宜に振分け設定することもできる。
また、このような振分け抽選を想定すると、16ビット可変長の数列生成部FCT16が生成する数値に基づいて、変動パターンコマンドの決定や、非確変当りか確変当りかを規定する図柄抽選を実行するのも好適である。数列生成部FCT16を使用すると、生成される数値範囲が広いので、例えば、1000程度の数値範囲の乱数値に基づいて、細かな振分け抽選が可能になる。
また、図10の実施例では、説明の便宜上、ソフトウェアカウンタ(当り用カウンタRG)に基づいて、普通図柄処理(ST28)を実施したが、乱数生成回路GNRからの取得値を使用するのが好適であることは先に説明した通りである。
この場合、普通図柄処理ST28での抽選処理で使用される乱数値として、数列生成部CT8や数列生成部CT16が生成する固定長/可変長の数値が活用される。そして、8ビット可変長や16ビット可変長の数値は、例えば、普通図柄表示部19に表示する普通図柄を決定する用途や、その他の用途で使用される。
その他の用途としては、例えば、電動式チューリップ(電チュー)の開放パターンの抽選決定が考えられる。この場合、電チューの開放パターンとして、開放回数(3回/4回)や、開放時間(3秒/5秒)などを適宜に組み合わせた多数の種類が用意され、普通図柄処理ST28での当選時に、その何れかが抽選決定される。
また、実施例では、信号入力レジスタ35fの記憶値に基づいて、入賞スイッチ信号SGのON/OFF状態を判定したが、入賞スイッチ信号SGを、通常の入力ポートINPに供給する構成を採れば、入力ポートINPからの取得値に基づいて、入賞スイッチ信号SGのON/OFF状態を判定することができる。
このような場合には、必ずしも、乱数生成回路GNRに入賞スイッチ信号SGを供給する必要はなく、入賞スイッチ信号SGがON状態であると判定される場合に、乱数レジスタ35a,35cの数値を取得して抽選用乱数値とすれば良い。なお、入力ポートINPから取得した入賞スイッチ信号SGが、ON状態又はOFF状態であると判定するに当って、ノイズ対策として、複数回の割込み処理において、入賞スイッチ信号SGが同一レベルであることを条件としても良い。
何れにしても、乱数生成回路GNRに入賞スイッチ信号SGを供給しない構成を採ると、ラッチ回路34Gやラッチレジスタ35b、35dは機能しないが、本実施例では、数列生成部41a,41bの出力を受ける乱数レジスタ35a,35cが設けられているので問題が生じない。
ところで、図10に示す実施例では、特別図柄処理(ST32)において、乱数生成回路GNRの乱数レジスタ35a,35cの数値を取得して抽選処理を実行したが、乱数レジスタ35a,35cに代えて、ラッチレジスタ35b,35dの数値を活用しても良いのは勿論である。そして、この場合には、図10に示す実施例と同様、図柄始動口15に関する入賞スイッチ信号SGは、乱数生成回路GNRの信号入力レジスタ35fをアクセスして取得するのが好ましい(ST23参照)。
図11は、ラッチレジスタ35b,35dの数値を取得して抽選処理を実行する実施例を説明する図面であり、図6(A)と図6(B)のタイムチャートを、上書き禁止モード及び上書き許可モードについて纏めたものである。なお、図示例では、入賞スイッチ信号SGがOFF状態となってから、ラッチレジスタ35b,35dの値が、CPUに取得されるが(図11の右端下部read参照)、特に限定されない。
以上を踏まえて説明すると、入賞スイッチ信号SG(図11(a))がON状態であると、ラッチパルスLTは、例えば、更新クロックΦの128個(=128τ)毎に出力される(図11(d))。また、入賞スイッチ信号SGのON/OFFレベルは、例えば、更新クロックΦの128個分程度(≒128τ)の遅延時間を経て、信号入力レジスタ35fに記憶される。なお、更新クロックΦの周波数が10MHzであれば、遅延時間は、ほぼ12.8μSである。
そのため、信号入力レジスタ35fを定時的に繰り返しアクセスして、その記憶値のONエッジを確認し、直ちに、ラッチレジスタ35b,35dのラッチデータを読み出す構成を採る場合(図10のST23,ST32参照)には、入賞スイッチ信号SWのONエッジに極めて近いタイミング(+12.8μS)の乱数値を取得することができる。この点は、動作モードが、上書き禁止モードであるか、上書き許可モードであるかに拘わらず、図11(f)や図11(g)に示す数列生成部41の更新値(数値Xや数値Y)が、抽選用の乱数値としてCPUに取得される。
なお、図11(d)、図11(e)、図11(f)の関係から確認される通り、上書き禁止モードでは、CPUの乱数値を取得タイミングが如何に遅れても、最初のラッチパルスLTのタイミングの更新値Xが取得される。
なお、ここでは、信号入力レジスタ35fを定時的に繰り返しアクセスして、その記憶値のONエッジを確認して特別図柄処理(ST32)を実行する構成を説明したが、何ら限定されず、信号入力レジスタ35fの記憶値のOFFエッジを確認することを条件に、特別図柄処理(ST32)を実行しても良い。
上書き禁止モードを採る場合には、このような構成でも、入賞スイッチ信号SWのONエッジに極めて近いタイミング(+12.8μS)の乱数値(数値X)を取得することができる。一方、上書き許可モードを採る場合には、入賞スイッチ信号SWのOFFエッジに極めて近いタイミングの乱数値(数値Z)を取得することができる。
そして、信号入力レジスタ35fの記憶値のOFFエッジを確認する構成を採る場合には、上書き禁止モードであるか、上書き許可モードであるかに拘わらず、入賞スイッチ信号SG(図11(a))が確実に立下った後に、ステイタスレジスタのステイタス値(ラッチ情報)がOFFレベルとなるので(図11(h)のreadタイミング参照)、入賞スイッチ信号SGのON時間が如何に長くても、ラッチレジスタ(35b,35dなど)を重複してアクセスしてしまうおそれがない。すなわち、CPUによる乱数取得タイミング(図11のread)の後は、ラッチパルスLTが出力されることがないので、ステイタスレジスタ35eのステイタス値(ラッチ情報)が改めてON状態となることはなく、したがって、乱数取得処理の重複実行のおそれがない。
また、本発明の適用は、弾球遊技機に限定されるものではなく、回胴遊技機を含む各種の遊技機に適用可能である。
上記の目的を達成するため、本発明は、所定のスイッチ信号に起因して抽選処理を実行し、抽選結果に対応した遊技制御動作を実行する遊技機であって、前記抽選処理を含んだ遊技制御動作を実行する主制御手段は、制御プログラムや固定データを不揮発的に記憶するROMと、作業データを揮発的に記憶するRAMと、抽選処理用の乱数値を生成する乱数生成手段と、システムクロックを受けて動作するCPUと、が内蔵されたワンチップマイコンを有して構成され、前記乱数生成手段は、システムクロック又はその他の外部クロックに基づいて更新動作を繰り返して数値を更新する数値更新手段と、前記スイッチ信号がON状態の場合に、数値更新手段の数値を取得可能な乱数取得手段と、を有し、前記スイッチ信号を受ける信号取得手段のスイッチ信号がON状態の場合に、前記乱数取得手段又は数値更新手段から数値を取得するよう構成され、前記数値更新手段は、0〜2n−1の数値範囲で数値を更新する第1回路と、0〜2n−1の数値範囲内であって、予め設定された最大値MAXを超えない0〜MAXの数値範囲で数値を更新する第2回路と、を有して構成され、前記信号取得手段が受けるスイッチ信号を所定時間毎に繰り返し判定する判定手段と、前記判定手段がスイッチ信号のON状態を判定することに基づいて、前記抽選処理を実行する抽選手段とを、設け、前記抽選処理は、第1回路の生成値に基づいて実行される第1処理と、第2回路の生成値に基づいて実行される第2処理とを含んで構成され、第1処理の結果と第2処理の結果とに基づいて特別遊技状態の制御動作が実行されるよう構成され、第1回路は、更新クロックを受ける毎に、数値を更新する一方、第2回路は、更新クロックを所定回数受ける毎に、数値を更新するよう構成されている。