以下、本発明の好ましい実施例について、添付図面を参照して説明する。本実施例では、遊技機の一例としてパチンコ遊技機、特に、第1種パチンコ遊技機を用いて説明する。なお、本発明を第3種パチンコ遊技機やスロットマシン等の他の遊技機に用いることは、当然に可能である。
図1は、第1実施例におけるパチンコ遊技機Pの遊技盤の正面図である。遊技盤1の周囲には、打球が入賞することにより5個から15個の遊技球が払い出される複数の入賞口2が設けられている。また、遊技盤1の中央には、複数種類の識別情報としての図柄などを表示する液晶(LCD)ディスプレイ3が設けられている。このLCDディスプレイ3の表示画面は横方向に3分割されており、3分割された各表示領域において、それぞれ図柄の変動表示が行われる。
LCDディスプレイ3の下方には、図柄作動ゲート(第1種始動口)4が設けられ、打球がこの図柄作動ゲート4を通過することにより、前記したLCDディスプレイ3の変動表示が開始される。図柄作動ゲート4の下方には、特定入賞口(大入賞口)5が設けられている。この特定入賞口5は、LCDディスプレイ3の変動後の表示結果が予め定められた図柄の組み合わせの1つと一致する場合に、大当たりとなって、打球が入賞しやすいように所定時間(例えば、30秒経過するまで、あるいは、打球が10個入賞するまで)開放される入賞口である。この特定入賞口5内には、Vゾーン5aが設けられており、特定入賞口5の開放中に、打球がVゾーン5a内を通過すると、継続権が成立して、特定入賞口5の閉鎖後、再度、その特定入賞口5が所定時間(又は、特定入賞口5に打球が所定個数入賞するまで)開放される。この特定入賞口5の開閉動作は、最高で16回(16ラウンド)繰り返し可能にされており、開閉動作の行われ得る状態が、いわゆる所定の遊技価値の付与された状態(特別遊技状態)である。
図2は、かかるパチンコ遊技機Pの電気的構成を示したブロック図である。パチンコ遊技機Pの制御部Cは、演算装置であるCPU11と、そのCPU11により実行される各種の制御プログラムや固定値データを記憶したROM12と、各種のデータ等を一時的に記憶するためのメモリであるRAM13とを備えている。図5から図7に示すフローチャートのプログラムは、制御プログラムの一部としてROM12内に記憶されている。
CPU11は、演算を行うALUのほか、アキュームレータ(以下「Acc」と称す)11aや複数の内部レジスタ11b、フラグレジスタ11cを備えている。RAM13内に設けられるカウンタ等の値は、一旦、CPU11の内部レジスタ11bへロードされ(読み込まれ)、その内部レジスタ11b内で更新された後に、RAM13の元のカウンタ内へセイブされて(書き込まれて)、更新される。
なお、68系の8ビットCPU11では、ペアになっている2バイト(16ビット)の内部レジスタ11bの値を、連続したアドレスの2バイトのメモリ(RAM13内)へ1命令でセイブする(書き込む)ことができる。バスライン14のデータバスは8ビットで構成されるので、この場合の書き込みは、上位バイト、下位バイトの順に行われる。また、80系の8ビットCPUでは、68系のCPU11とは逆に、ペアになっている2バイト(16ビット)の内部レジスタの値を、連続したアドレスの2バイトのメモリへ、下位バイト上位バイトの順に1命令でセイブすることができる。
RAM13は、乱数カウンタ13aと、初期値カウンタ13bと、初期値メモリ13cとを備えている。乱数カウンタ13aは、大当たりの発生を決定するためのカウンタであり、図6の乱数更新処理(S6)によって、「0〜630(0〜276h)」の範囲で、2ms毎に1カウントずつ更新される。このため乱数カウンタ13aは2バイトで構成されている。打球が図柄作動ゲート4を通過したときに取得した乱数カウンタ13aの値が例えば「7」であると、大当たりが発生する。大当たりが発生すると、大当たりコマンドが制御部Cから後述する表示装置Dへ送られる。表示装置Dは、この大当たりコマンドに基づいて、LCDディスプレイ3の変動表示を大当たりの状態に制御する。
初期値カウンタ13bは、乱数カウンタ13aの更新の初期値をカウントするためのカウンタであり、乱数カウンタ13aと同様に2バイトで構成されている。この初期値カウンタ13bの値は、図7の初期値カウンタ更新処理(S21)によって、乱数カウンタ13aの更新範囲と同じ「0〜630(276h)」の範囲で、1カウントずつ更新される。
図7の初期値カウンタ更新処理は、図5のリセット割込処理における残余時間の間、即ち、効果音処理(S19)の終了後、次のリセット割込処理が発生するまでの間に、繰り返し実行される(S21)。リセット割込処理は2ms毎に実行されるが、1回のリセット割込処理において実行されるS1からS19までの各処理の処理時間は遊技の状況に応じて変化するので、リセット割込処理の残余時間は、一定な時間ではなく、遊技の状況に応じて変化する不定な時間となる。「ぶら下げ基板」ではこの不定な時間を把握することはできないので、かかる不定な時間内に繰り返し更新される初期値カウンタ13bの値を乱数カウンタ13aの更新の初期値として使用することにより、「ぶら下げ基板」による大当たり発生のタイミングの把握を不可能にしている。
初期値メモリ13cは、乱数カウンタ13aの更新の初期値を記憶するためのメモリであり、乱数カウンタ13aと同様に2バイトで構成されている。本実施例では、乱数カウンタ13aの更新の初期値は、乱数カウンタの一回りの更新毎に変更される。よって、更新された乱数カウンタ13aの値が初期値メモリ13cの値と一致すると、乱数カウンタ13aの一回りの更新が終了したことになるので、両値13a,13cの一致を契機として、そのときの初期値カウンタ13bの値が乱数カウンタ13aおよび初期値メモリ13cに書き込まれて、乱数カウンタ13aの更新の初期値が変更される。従って、乱数カウンタ13aの更新の初期値を変更しても、乱数の一様性(連続で取得した場合に同じ値を取ることがなく、しかも、すべての値が同じ確率で取り出せること)のある乱数値を得ることができるのである。
これらのCPU11、ROM12、RAM13は、バスライン14を介して互いに接続されており、バスライン14は、また、入出力ポート15にも接続されている。この入出力ポート15は表示装置Dや他の入出力装置16と接続されている。制御部Cは、入出力ポート15を介して、表示装置Dや他の入出力装置16へ動作コマンドを送り、それら各装置を制御する。LCDディスプレイ3の変動表示や特定入賞口5の開閉動作も、この動作コマンドに基づいて制御される。
表示装置Dは、CPU21と、プログラムROM22と、ワークRAM23と、ビデオRAM24と、キャラクタROM25と、画像コントローラ26と、入出力ポート27と、LCDディスプレイ3とを備えている。表示装置DのCPU21は、制御部Cから出力される動作コマンドに応じて、LCDディスプレイ3の表示制御(変動表示)を行うものであり、プログラムROM22には、このCPU21により実行されるプログラムが記憶されている。ワークRAM23は、CPU21によるプログラムの実行時に使用されるワークデータが記憶されるメモリである。
ビデオRAM24は、LCDディスプレイ3に表示されるデータが記憶されるメモリであり、このビデオRAM24の内容を書き換えることにより、LCDディスプレイ3の表示内容が変更される。即ち、各表示領域における図柄の変動表示は、ビデオRAM24の内容が書き換えられることにより行われる。キャラクタROM25は、LCDディスプレイ3に表示される図柄などのキャラクタデータを記憶するメモリである。画像コントローラ26は、CPU21、ビデオRAM24、入出力ポート27のそれぞれのタイミングを調整して、データの読み書きを介在するとともに、ビデオRAM24に記憶される表示データをキャラクタROM25を参照して所定のタイミングでLCDディスプレイ3に表示させるものである。
次に、図3および図4を参照して、図5のリセット割込処理の実行契機となるユーザーリセット割込の発生タイミングについて説明する。このユーザーリセット割込は、2ms毎であって、且つ、CPU11によりオペコードフェッチ信号が出力されるタイミング、即ち、CPU11のLIR端子の出力がHiからLowになるタイミングで発生するように構成されている。
オペコードフェッチ信号が出力されている間は、CPU11によりROM12からオペコードのリードが行われているため、RAM13への書き込みが行われることはない。よって、かかるオペコードフェッチ信号に同期してユーザーリセット割込を発生させることにより、リセット割込処理の残余時間の間において初期値カウンタ13bの値を繰り返し更新しても、次のリセット割込処理が発生する時には、その初期値カウンタ13bの値を書き換えることがなく本来の更新範囲外の値としてしまうことはない。
CPU11のリセット端子RESには、リセットIC31が接続されている。リセットIC31の出力(A)は、パチンコ遊技機Pの電源投入後所定時間が経過するとLowからHiへ立ち上がり、以降は、パチンコ遊技機Pの電源がオフされるまでHiを維持する。CPU11は、リセット端子RESへの入力がLowからHiへ立ち上がりHiを維持している間、動作を継続する。
また、CPU11には、8.1920MHzの発振子(クロック)32が接続されている。クロック32の出力はCPU11内で4分周され、Eクロック端子から488.3ns周期の矩形状の発振波が出力される(B)。更に、ICLK端子からは、そのEクロックを4096分周した2ms周期の矩形波が出力される(C)。
リセットIC31の出力端は、HC74で構成されるDフリップフロップ33のCLR端子にも接続されている。Dフリップフロップ33のCK端子は、CPU11のICLK端子と接続されており、PR端子およびD端子はVcc(+5V)に接続されているので、CPU11のICLK端子の出力が立ち上がるまでは、Dフリップフロップ33のQ出力はLow(G)、Qバー出力はHi(D)を維持している。CPU11のICLK端子の出力が一旦LowからHiへ立ち上がると(C)、Dフリップフロップ33のQ出力はHi(G)、Qバー出力はLow(D)となり、Dフリップフロップ33は、パチンコ遊技機Pの電源がオフされるまで、この出力を維持する。
Dフリップフロップ33のQバー出力端は、2入力オア回路34の一方の入力端に接続されている。また、オア回路34のもう一つの入力端はCPU11のICLK端子に接続されている。よって、オア回路34の出力端からは、Dフリップフロップ33のQバー出力がLow(D)となってから以降、ICLK端子の出力(C)と同じ2ms周期の矩形波が出力される(E)。
一方、CPU11のEクロック端子はインバータ35の入力端と接続され、そのインバータ35の出力端は、HC74で構成されるDフリップフロップ36のCK端子および2入力オア回路37の一方の入力端に接続されている。Dフリップフロップ36のPR端子はVccに、CLR端子は前記したDフリップフロップ33のQ出力端に、D端子はHC4020で構成されるバイナリカウンタ38のQ7出力端に、Q出力端はオア回路37の入力端に、それぞれ接続されている。更に、オア回路37の出力端は、カウンタ38のCK端子に接続されている。
Dフリップフロップ36のCLR端子に入力されるDフリップフロップ33のQ出力は、CPU11のICLK端子の出力がLowからHiへ一旦立ち上がると(C)、以降はHiを維持する(G)。Dフリップフロップ36のPR端子にはVccが入力されているので、その後は、CPU11のEクッロク端子の出力(B)が反転されたインバータ35の出力(F)の立ち上がり毎に、D端子へ入力されるカウンタ38のQ7出力(I)の状態がDフリップフロップ36のQ端子から出力される(J)。よって、オア回路37は、Dフリップフロップ36のQ端子の出力がLowの間は(J)、Eクロックの反転出力(F)を出力し(H)、Dフリップフロップ36のQ端子の出力がHiの間は(J)、Hiを出力する(H)。
カウンタ38のQ7端子は、Dフリップフロップ36のD端子と接続される他、2入力オア回路39の一つの入力端に接続されている。このオア回路39の他方の入力端にはオア回路34の出力端が接続されている。カウンタ38のQ7出力は、CLR端子への出力がHiになっている間(E)、Lowを維持する(I)。そして、CLR端子への出力がLowになった状態で(E)、CK端子へ64回立ち下がりクロックが入力されると(H)、Hiとなり(I)、そのQ7端子のHi出力は、CLR端子へHiが入力されるまで維持される(E,I)。
オア回路39からは、オア回路34の出力およびカウンタ38のQ7出力が共にLowである場合に(E,I)、Lowが出力される(K)。よって、オア回路39の出力は、オア回路34の出力がLowとなった後(E)、カウンタ38のCK端子へ64回立ち下がりクロックが入力されるまで(H)、Low出力を維持する(K)。即ち、オア回路39からは、2ms毎に(C,E)、カウンタ38のCK端子へ64回立ち下がりクロックが入力されるまでの間(H)、Lowが出力される。
なお、従来技術においては、このオア回路39の出力端がCPU11のURES端子に接続されており、オア回路39からLow出力されるタイミングでユーザーリセット割込が発生するように構成されていた。よって、このオア回路39の出力がLowを維持する期間が(K)、ユーザーリセット割込の発生を確定させるための期間になっていた。
オア回路39の出力端は、タイミング回路40のインバータ41の入力端と、HC74で構成されるDフリップフロップ42のD端子に接続されている。タイミング回路40は、ユーザーリセット割込をオペコードフェッチに同期するタイミングで発生させるための回路である。オア回路39からは2ms毎にLowが出力されるので(K)、タイミング回路40では、そのLow出力を入力した後の最初のオペコードフェッチのタイミングで、CPU11のURES端子へLowを出力し(N)、ユーザーリセット割込を発生させるのである。
タイミング回路40のインバータ41の入力端は、前記した通り、オア回路39の出力端に接続されており、そのインバータ41の出力端は、Dフリップフロップ42のPR端子に接続されている。Dフリップフロップ42のCLR端子はVccに接続されているので、CPU11のURES端子に接続されるDフリップフロップ42のQ端子からは、オア回路39からHi出力されている間(K)、Hiが出力され(N)、ユーザーリセット割込は発生しない。
CPU11のLIR端子はインバータ43の入力端に接続され、そのインバータ43の出力端はDフリップフロップ42のCK端子に接続されている。オペコードフェッチがあるとLIR端子の出力はHiからLowへ立ち下がるので、オペコードフェッチの度に、インバータ43からDフリップフロップ42のCK端子へはLowからHiへの立ち上がり信号が出力される(M)。
ここで、オア回路39からLowが出力されると(K)、Dフリップフロップ42のPR端子へHiが入力される(L)。CLR端子にはVccが入力されているので、CPU11からオペコードフェッチ信号が出力されLIR端子の出力がHiからLowへ立ち下がると、Dフリップフロップ42のCK端子への入力がLowからHiへ立ち上がり(M)、その時のD端子へ入力されているLow出力が(K)、Dフリップフロップ42のQ端子から出力されて(N)、CPU11のURES端子へ入力される。これにより、ユーザーリセット割込がオペコードフェッチのタイミングで発生するのである。
なお、このようにユーザーリセット割込の発生タイミングを最初のオペコードフェッチのタイミングまで遅延させるように構成しても、オア回路39は確実に2ms毎にLow信号を出力するので(K)、その遅延分が累積してしまうことはない。従って、ユーザーリセット割込を2ms毎に実行することができるのである。
次に、上記のように構成されたパチンコ遊技機Pで実行される各処理を、図5から図7のフローチャートを参照して説明する。図5は、パチンコ遊技機Pの制御部Cにおいて、2ms毎に実行されるリセット割込処理のフローチャートである。パチンコ遊技機Pの主な制御は、このリセット割込処理によって実行される。なお、このリセット割込処理は、電源投入時におけるリセット割込の発生時、および、前記したユーザーリセット割込の発生時に実行される。
リセット割込処理では、まず、スタックポインタを設定し(S1)、RAM13の所定エリアに書き込まれているパターンのチェックを行う(S2)。チェックの結果、所定エリアに所定のパターンが書き込まれていれば、RAM13に異常はなく正常であるので(S2:正常)、処理をS3へ移行する。一方、S2のチェックの結果、所定エリアに所定のパターンが書き込まれていなければ、電源投入後のリセット割込により最初に実行されたリセット割込処理であるか、或いは、RAM13に異常があるので(S2:異常)、この場合には処理をS22へ移行して、一旦、RAM13の内容をクリアした後、RAM13内へ初期値を書き込んで(S22)、次のリセット割込処理の発生を待機する。
S3の処理ではタイマ割込の設定を行う(S3)。ここで設定されるタイマ割込としては、LCDディスプレイ3の表示を制御するコマンドを表示装置Dへ送信するためのストローブ信号を発生させるタイマ割込などがある。タイマ割込の設定後は、各割込を許可状態とする(S4)。割込の許可後は、特別図柄変動処理(S15)や、表示データ作成処理(S17)、ランプ・情報処理(S18)などにより、前回のリセット割込処理において更新された出力データを一度に各ポートへ出力するポート出力処理を実行する(S5)。ポート出力処理の実行後は、後述する乱数更新処理(S6)を実行して、乱数カウンタ13aの値を「+1」更新し、更に、記憶タイマ減算処理を実行する(S7)。記憶タイマ減算処理は、大当たり判定の保留球が所定数以上あり、且つ、LCDディスプレイ3において図柄の変動表示中である場合に、図柄の変動表示時間の短縮を行うものである。
スイッチ読込処理(S8)は、各スイッチの値を読み込むことにより、遊技領域1へ打ち込まれた打球の入賞口2や大入賞口5(Vゾーン5aを含む)への入賞、図柄作動ゲート4の通過、更には賞球や貸球を検出するための処理である。カウント異常監視処理(S9)は、S8のスイッチ読込処理によって読み込まれたスイッチデータに異常があるか否かを監視するための処理である。例えば、大入賞口5が開放され、打球のVゾーン5aの通過を検出するVカウントスイッチで打球が検出されたにも拘わらず、Vゾーン5a以外の大入賞口5への入賞を検出する10カウントスイッチで1球の打球も検出できない場合には、10カウントスイッチが抜き取られるか故障するなどして、10カウントスイッチに何らかの異常が発生している。また、賞球を払い出すモータを駆動したにも拘わらず、1球の賞球も払い出されない場合には、賞球の払出装置に何らかの異常が発生している。このようにカウント異常監視処理(S9)では、スイッチ読込処理(S8)によって読み込まれたスイッチデータに基づいて、上記のような異常の有無を監視している。
図柄カウンタ更新処理(S10)では、LCDディスプレイ3で行われる変動表示の結果、停止表示される図柄を決定するためのカウンタの更新処理が行われる。また、図柄チェック処理(S11)では、図柄カウンタ更新処理(S10)で更新されたカウンタの値に基づいて、特別図柄変動処理(S15)で使用される大当たり図柄や、はずれ図柄、更にはリーチ図柄などが決定される。
S3からS11までの処理において、エラーが発生していなければ(S12:正常)、普通図柄変動処理(S13)によって、7セグメントLEDの変動表示を行うと共に、その変動表示の結果、当たりが発生した場合には普通電動役物(図示せず)を所定時間開放する当たり処理を実行する。その後、状態フラグをチェックし(S14)、LCDディスプレイ3の図柄の変動表示中であれば(S14:図柄変動中)、特別図柄変動処理(S15)によって、打球が図柄作動ゲート4を通過するタイミングで読みとられた乱数カウンタ13aの値に基づいて、大当たりか否かの判定が行われると共に、LCDディスプレイ3の表示図柄の変動処理を実行する。一方、状態フラグをチェックした結果、大当たり中であれば(S14:大当り中)、大入賞口5を開放するなどの大当たり処理(S16)を実行する。更に、状態フラグをチェックした結果、図柄の変動中でも大当たり中でもなければ(S14:その他)、S15及びS16の処理をスキップして、S17の表示データ作成処理へ移行する。なお、S12の処理において、エラーが確認された場合には(S12:エラー)、S13〜S16の各処理をスキップして、S17の表示データ作成処理へ移行する。
表示データ作成処理(S17)では、図柄の変動表示以外にLCDディスプレイ3に表示されるデモデータや、7セグメントLEDの表示データなどが作成され、ランプ・情報処理(S18)では、保留球のランプデータをはじめ、各種のランプデータが作成される。効果音処理(S19)では、遊技の状況に応じた効果音データが作成される。なお、これらの表示データおよび効果音データは、前記したポート出力処理(S5)やタイマ割込処理によって各装置へ出力される。
効果音処理(S19)の終了後は、次のリセット割込処理が発生するまでの残余時間の間、S10と同一の処理である図柄カウンタ更新処理(S20)と、初期値カウンタ更新処理(S21)とを繰り返し実行する。S1〜S19の各処理の実行時間は遊技の状態に応じて変化するので、次のリセット割込処理(次のユーザーリセット割込)が発生するまでの残余時間は、一定の時間ではなく、遊技の状態に応じて変化する。よって、かかる残余時間を使用して図柄カウンタ更新処理(S20)を繰り返し実行することにより、停止図柄をランダムに変更することができる。また、かかる残余時間を使用して初期値カウンタ更新処理(S21)を繰り返し実行することにより、乱数カウンタ13aの更新の初期値となる初期値カウンタ13bの値を「ぶら下げ基板」で把握不可能にすることができる。
図6は、乱数更新処理のフローチャートである。乱数更新処理(S6)では、CPU11の内部レジスタ11bを介して、乱数カウンタ13aの値を「0〜630(0〜276h)」の範囲内で「+1」ずつ更新すると共に、制御部Cで使用される他の乱数の更新を行っている。
まず、2バイトで構成される乱数カウンタ13aの値を2バイトの内部レジスタ11bへ書き込む(S31)。内部レジスタ11bの値を1加算し(S32)、加算後の内部レジスタ11bの値が「631」以上であるか否か、即ち、乱数カウンタ13aの更新範囲の値を超えている否かを調べる(S33)。加算後の内部レジスタ11bの値が「631」以上であれば(S33:Yes)、更新範囲の値を超えているので、内部レジスタ11bの値を「0」クリアする(S34)。一方、加算後の内部レジスタ11bの値が「630」以下であれば(S33:No)、更新範囲内の値であるので、S34の処理をスキップして、S35の処理へ移行する。
S35の処理では、更新後の内部レジスタ11bの値と初期値メモリ13cの値とが比較される。初期値メモリ13cには乱数カウンタ13aの更新の初期値が記憶されているので、両値が等しい場合には(S35:Yes)、乱数カウンタ13aの更新は一回り終了したということである。よって、かかる場合には、2バイトの初期値カウンタ13bの値を内部レジスタ11bへ書き込み(S36)、その内部レジスタ11bの値を初期値メモリ13c及び乱数カウンタ13aへ書き込んで(S37,S38)、乱数カウンタ13aの更新の初期値を変更する。
一方、更新後の内部レジスタ11bの値と初期値メモリ13cの値とが等しくない場合には(S35:No)、乱数カウンタ13aの更新は未だ一回り終了していないので、S36及びS37の処理をスキップして、S32からS34の処理で更新された内部レジスタ11bの値を乱数カウンタ13aへ書き込み(S38)、乱数カウンタ13aの更新を行う。その後は、制御部Cで使用される他の乱数の更新処理を行って(S39)、この乱数更新処理を終了する。
図7は、リセット割込処理の残余時間の間に繰り返し実行される初期値カウンタ更新処理のフローチャートである。初期値カウンタ更新処理(S21)では、CPU11の内部レジスタ11bを介して、乱数カウンタ13aの更新の初期値をカウントする初期値カウンタ13bの値を、乱数カウンタ13aの更新範囲の「0〜630(0〜276h)」の範囲内で「+1」ずつ更新する。
まず、2バイトで構成される初期値カウンタ13bの値を2バイトの内部レジスタ11bへ書き込む(S41)。内部レジスタ11bの値を1加算し(S42)、加算後の内部レジスタ11bの値が「631」以上であるか否か、即ち、乱数カウンタ13aの更新範囲の値を超えている否かを調べる(S43)。加算後の内部レジスタ11bの値が「631」以上であれば(S43:Yes)、乱数カウンタ13aの更新範囲の値を超えているので、内部レジスタ11bの値を「0」クリアする(S44)。一方、加算後の内部レジスタ11bの値が「630」以下であれば(S43:No)、乱数カウンタ13aの更新範囲内の値であるので、S44の処理をスキップして、S45の処理へ移行する。S45の処理では、更新された内部レジスタ11bの値を、68系CPU11の2バイト書き込み命令によって上位バイト下位バイトの順に初期値カウンタ13bへ書き込むのである。
前記した通り、初期値カウンタ更新処理は、リセット割込処理において、次のリセット割込が発生するまでの残余時間の間に繰り返し実行される(S21)。このため、S45の処理によって内部レジスタ11bの上位バイトが初期値カウンタ13bへ書き込まれた後であって下位バイトの書き込み前に2msが経過して、次のユーザーリセット割込が発生するタイミングが到来する場合がある。ユーザーリセット割込は、割込の優先順位が最も高く、割込処理の開始を禁止できないノンマスカブルな割込である。しかし、前記した通り、ユーザーリセット割込の発生は、タイミング回路40によって、2msの経過後の最初のオペコードフェッチのタイミングまでに遅延されるので、CPU11による書き込み命令の実行中に、ユーザーリセット割込が発生してリセット割込処理が実行されることはない。よって、リセット割込処理の残余時間の間に、初期値カウンタ13bの値を繰り返し更新しても、初期値カウンタ13bの値を本来の更新範囲内の値である「0〜630(0〜276h)」の範囲内に維持することができるのである。
次に、図8および図9を参照して、第2実施例のタイミング回路50について説明する。第1実施例のタイミング回路40はオペコードフェッチ信号(LIR端子の出力)を利用してユーザーリセット割込を発生させるように構成したが、第2実施例のタイミング回路50は、リード信号(R/Wバー端子のHi出力)を利用してユーザーリセット割込を発生させている。
ここで、リード信号は、CPU11によってROM12,RAM13などのメモリに記憶されるデータが読み出されている場合に出力される信号であり、R/Wバー端子からHiの信号として出力される。一方、ライト信号は、CPU11によってRAM13などのメモリへデータの書き込みが行われている場合に出力される信号であり、R/Wバー端子からLowの信号として出力される。詳細には、Eクロック端子の出力がHiレベルである場合に、リード信号およびライト信号は有効となる。このため本実施例では、アンド回路53によってEクロック端子とR/Wバー端子との出力のアンド論理をとって、Dフリップフロップ54のCK端子へ入力するように構成している(図8参照)。
よって、リード信号が出力されている間は(アンド回路53からHi信号が出力されている間は)、CPU11によりROM12やRAM13等のデータが読み込まれており、RAM13への書き込みは行われていない。従って、かかるリード信号に同期してユーザーリセット割込を発生させることにより、リセット割込処理の残余時間の間において、初期値カウンタ13bの値を繰り返し更新しても(図5のS21)、次のリセット割込処理が発生する時には、その初期値カウンタ13bの値を書き換えることがなく本来の更新範囲外の値としてしまうことはない。なお、前記した第1実施例と同一の部分には同一の符号を付し、その説明は省略し、異なる部分のみ説明する。
オア回路39の出力端は、タイミング回路50のインバータ51の入力端と、HC74で構成されるDフリップフロップ52のD端子に接続されている。タイミング回路50は、リード信号が出力されている間に、ユーザーリセット割込を発生させるための回路である。言い換えれば、タイミング回路50は、ライト信号が出力されている間に、ユーザーリセット割込の発生を禁止するための回路でもある。
タイミング回路50のインバータ51の入力端は、前記した通り、オア回路39の出力端に接続されており、そのインバータ51の出力端は、Dフリップフロップ52のPR端子に接続されている。Dフリップフロップ52のCLR端子はVccに接続されているので、CPU11のURES端子に接続されるDフリップフロップ52のQ端子からは、オア回路39からHi出力されている間(K)、Hiが出力され(Q)、ユーザーリセット割込は発生しない。
CPU11のR/Wバー端子は、2入力アンド回路53の一つの入力端に接続され、そのアンド回路53の他の入力端はCPU11のEクロック端子に接続されている。更に、アンド回路53の出力端はDフリップフロップ52のCK端子に接続されている。CPU11からリード信号が出力されR/Wバー端子の出力がHiとなった状態で、Eクロックの出力がLowからHiへ立ち上がると(B)、アンド回路53からDフリップフロップ52のCK端子へLowからHiへの立ち上がり信号が出力される(P)。
ここで、オア回路39からLowが出力されていると(K)、Dフリップフロップ52のPR端子へHiが入力される(L)。CLR端子にはVccが入力されているので、R/Wバー端子からHiが出力された状態でEクロックの出力がLowからHiへ立ち上がると(B)、Dフリップフロップ52のCK端子への入力がLowからHiへ立ち上がり(P)、その時のD端子へ入力されているLow出力が(K)、Dフリップフロップ52のQ端子からCPU11のURES端子へ出力される(Q)。これにより、リード信号が出力されているタイミングでユーザーリセット割込が発生する。従って、初期値カウンタ13bへの書き込み中に、次のリセット割込処理の実行が開始されることはない。
なお、このようにユーザーリセット割込の発生タイミングを、オア回路39の出力がLowとなった後であって、最初のリード信号が出力され、且つ、Eクロック端子の出力が立ち上がるタイミングまで遅延させるように構成しても、オア回路39は確実に2ms毎にLow信号を出力するので(K)、その遅延分が累積してしまうことはない。従って、第2実施例においても、ユーザーリセット割込を2ms毎に発生させ、リセット割込処理を2ms毎に実行することができる。
上記各実施例において、請求項1記載の読出手段としてはスイッチ読込処理(S8)が該当し、第1更新手段としては乱数更新処理(S6、図6)が該当し、第2更新手段としては初期値カウンタ更新処理(S21、図7)が該当し、定期処理としてはリセット割込処理(図5)のS1〜S19の処理が該当し、所定の処理としてはリセット割込処理(図5)のS20及びS21の処理が該当し、判断手段としては乱数更新処理(図6)のS35の処理が該当し、第1記憶実行手段としては乱数更新処理(図6)のS36の処理が該当し、第2記憶実行手段としては乱数更新処理(図6)のS37及びS38の処理が該当する。
以上、実施例に基づき本発明を説明したが、本発明は上記実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
以下に本発明の変形例を示す。請求項1記載の遊技機の制御装置において、遊技の制御主体となるCPUを備え、そのCPUからライト信号が出力されている間、前記禁止手段は前記割込処理の新たな発生を禁止することを特徴とする遊技機の制御装置1。
請求項1記載の遊技機の制御装置において、遊技の制御主体となるCPUを備え、そのCPUからリード信号が出力されている間に、前記禁止手段は前記割込処理の新たな発生を許容することを特徴とする遊技機の制御装置2。リード信号が出力されている間は、CPUによりメモリのリードが行われメモリへのライトは行われていない。よって、割込処理におけるライト処理の実行時に、その割込処理の新たな発生を禁止することができる。
請求項1記載の遊技機の制御装置において、遊技の制御主体となるCPUを備え、そのCPUからオペコードフェッチ信号が出力されている間に、前記禁止手段は前記割込処理の新たな発生を許容することを特徴とする遊技機の制御装置3。オペコードフェッチ信号が出力されている間は、CPUによりオペコードのリードが行われメモリへのライトは行われていない。よって、割込処理におけるライト処理の実行時に、その割込処理の新たな発生を禁止することができる。
請求項1記載の遊技機の制御装置、または、遊技機の制御装置1乃至3において、前記割込処理はノンマスカブルなリセット割込処理またはノンマスカブルなユーザーリセット割込処理で構成されていることを特徴とする遊技機の制御装置4。
請求項1記載の遊技機の制御装置、または、遊技機の制御装置1乃至4において、乱数カウンタと、その乱数カウンタの値を前記割込処理によって更新する第1更新手段と、所定の契機により前記乱数カウンタの値を読み出す読出手段とを備え、その読出手段により読み出された前記乱数カウンタの値が予め定められた値の1つと一致する場合に、遊技者に所定条件下で所定の遊技価値を付与するものであり、更新中の前記乱数カウンタの初期値を記憶する初期値メモリと、その初期値メモリおよび乱数カウンタに書き込まれる値であって前記乱数カウンタの次回の更新の初期値をカウントする少なくとも2バイトで構成された初期値カウンタと、その初期値カウンタの値を読み出して前記乱数カウンタの更新の範囲内で更新し、更新後の値をその初期値カウンタへ書き込む第2更新手段と、その第2更新手段を前記割込処理によって次回のその割込処理が発生するまでの残余時間の間に繰り返し実行する繰返手段とを備えていることを特徴とする遊技機の制御装置5。
遊技機の制御装置5において、前記初期値カウンタの値は、前記乱数カウンタの値が前記初期値メモリの値と一致する場合に、前記乱数カウンタおよび初期値メモリに書き込まれることを特徴とする遊技機の制御装置6。