以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図1はパチンコ遊技機を正面からみた正面図である。なお、以下の実施の形態では、パチンコ遊技機を例に説明を行うが、本発明による遊技機はパチンコ遊技機に限られず、スロット機などの他の遊技機に適用することもできる。
パチンコ遊技機1は、縦長の方形状に形成された外枠(図示せず)と、外枠の内側に開閉可能に取り付けられた遊技枠とで構成される。また、パチンコ遊技機1は、遊技枠に開閉可能に設けられている額縁状に形成されたガラス扉枠2を有する。遊技枠は、外枠に対して開閉自在に設置される前面枠(図示せず)と、機構部品等が取り付けられる機構板と、それらに取り付けられる種々の部品(後述する遊技盤を除く。)とを含む構造体である。
図1に示すように、パチンコ遊技機1は、額縁状に形成されたガラス扉枠2を有する。ガラス扉枠2の下部表面には打球供給皿(上皿)3がある。打球供給皿3の下部には、打球供給皿3に収容しきれない遊技球を貯留する余剰球受皿4と遊技球を発射する打球操作ハンドル(操作ノブ)5が設けられている。ガラス扉枠2の背面には、遊技盤6が着脱可能に取り付けられている。なお、遊技盤6は、それを構成する板状体と、その板状体に取り付けられた種々の部品とを含む構造体である。また、遊技盤6の前面には遊技領域7が形成されている。
遊技領域7の中央付近には、それぞれが識別情報としての図柄を可変表示する複数の可変表示部を含む可変表示装置(特別図柄表示装置)9が設けられている。可変表示装置9には、例えば「左」、「中」、「右」の3つの可変表示部(図柄表示エリア)がある。また、可変表示装置9には、始動入賞口14に入った有効入賞球数すなわち始動記憶数を表示する4つの特別図柄始動記憶表示エリア(始動記憶表示エリア)18が設けられている。有効始動入賞がある毎に、表示色が変化する(例えば青色表示から赤色表示に変化)始動記憶表示エリアを1増やす。そして、可変表示装置9の可変表示が開始される毎に、表示色が変化している始動記憶数表示エリアを1減らす(すなわち表示色をもとに戻す)。この例では、図柄表示エリアと始動記憶表示エリアとが区分けされて設けられているので、可変表示中も始動記憶数が表示された状態にすることができる。なお、始動記憶表示エリアを図柄表示エリアの一部に設けるようにしてもよい。また、可変表示中は始動記憶数の表示を中断するようにしてもよい。また、この例では、始動記憶表示エリアが可変表示装置9に設けられているが、始動記憶数を表示する表示器(特別図柄始動記憶表示器)を可変表示装置9とは別個に設けてもよい。
可変表示装置9の下方には、始動入賞口14としての可変入賞球装置15が設けられている。始動入賞口14に入った入賞球は、遊技盤6の背面に導かれ、始動口スイッチ14aによって検出される。また、始動入賞口14の下部には開閉動作を行う可変入賞球装置15が設けられている。可変入賞球装置15は、ソレノイド16によって開状態とされる。
可変入賞球装置15の下部には、特定遊技状態(大当り状態)においてソレノイド21によって開状態とされる開閉板20が設けられている。開閉板20は大入賞口(可変入賞球装置)を開閉する手段である。開閉板20から遊技盤6の背面に導かれた入賞球のうち一方(V入賞領域:特別領域)に入った入賞球はVカウントスイッチ22で検出され、開閉板20からの入賞球はカウントスイッチ23で検出される。遊技盤6の背面には、大入賞口内の経路を切り換えるためのソレノイド21Aも設けられている。
ゲート32に遊技球が入賞しゲートスイッチ32aで検出されると、普通図柄表示器10の表示の可変表示が開始される。この実施の形態では、左右のランプ(点灯時に図柄が視認可能になる)が交互に点灯することによって可変表示が行われ、例えば、可変表示の終了時に右側のランプが点灯すれば当たりとなる。そして、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定回数、所定時間だけ開状態になる。普通図柄表示器10の近傍には、ゲート32に入った入賞球数を表示する4つのLEDによる表示部を有する普通図柄始動記憶表示器41が設けられている。ゲート32への入賞がある毎に、普通図柄始動記憶表示器41は点灯するLEDを1増やす。そして、普通図柄表示器10の可変表示が開始される毎に、点灯するLEDを1減らす。
遊技盤6には、複数の入賞口29,30,33,39が設けられ、遊技球の入賞口29,30,33,39への入賞は、それぞれ入賞口スイッチ29a,30a,33a,39aによって検出される。各入賞口29,30,33,39は、遊技媒体を受け入れて入賞を許容する領域として遊技盤6に設けられる入賞領域を構成している。なお、始動入賞口14や大入賞口も、遊技媒体を受け入れて入賞を許容する入賞領域を構成する。遊技領域7の左右周辺には、遊技中に点滅表示される装飾ランプ25が設けられ、下部には、入賞しなかった遊技球を吸収するアウト口26がある。また、遊技領域7の外側の左右上部には、効果音を発する2つのスピーカ27が設けられている。遊技領域7の外周には、天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cが設けられている。さらに、遊技領域7における各構造物(大入賞口等)の周囲には装飾LEDが設置されている。天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cおよび装飾用LEDは、遊技機に設けられている装飾発光体の一例である。
そして、この例では、左枠ランプ28bの近傍に、賞球払出中に点灯する賞球LED51が設けられ、天枠ランプ28aの近傍に、補給球が切れたときに点灯する球切れLED52が設けられている。上記のように、この実施の形態のパチンコ遊技機1には、発光体としてのランプやLEDが各所に設けられている。さらに、プリペイドカードが挿入されることによって球貸しを可能にするプリペイドカードユニット(以下、「カードユニット」という。)が、パチンコ遊技機1に隣接して設置される(図示せず)。
カードユニットには、例えば、使用可能状態であるか否かを示す使用可表示ランプ、カードユニットがいずれの側のパチンコ遊技機1に対応しているのかを示す連結台方向表示器、カードユニット内にカードが投入されていることを示すカード投入表示ランプ、記録媒体としてのカードが挿入されるカード挿入口、およびカード挿入口の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニットを解放するためのカードユニット錠が設けられている。
打球発射装置から発射された遊技球は、打球レールを通って遊技領域7に入り、その後、遊技領域7を下りてくる。遊技球が始動入賞口14に入り始動口スイッチ14aで検出されると、図柄の可変表示を開始できる状態であれば、可変表示装置9において特別図柄が可変表示(変動)を始める。図柄の可変表示を開始できる状態でなければ、始動記憶数を1増やす。
可変表示装置9における特別図柄の可変表示は、一定時間が経過したときに停止する。停止時の特別図柄の組み合わせが大当り図柄(特定表示結果)であると、大当り遊技状態に移行する。すなわち、開閉板20が、一定時間経過するまで、または、所定個数(例えば10個)の遊技球が入賞するまで開放する。そして、開閉板20の開放中に遊技球がV入賞領域に入賞しVカウントスイッチ22で検出されると、継続権が発生し開閉板20の開放が再度行われる。継続権の発生は、所定回数(例えば15ラウンド)許容される。
停止時の可変表示装置9における特別図柄の組み合わせが確率変動を伴う大当り図柄(確変図柄)の組み合わせである場合には、次に大当りとなる確率が高くなる。すなわち、確変状態という遊技者にとってさらに有利な状態となる。
遊技球がゲート32に入賞すると、普通図柄表示器10において普通図柄が可変表示される状態になる。また、普通図柄表示器10における停止図柄が所定の図柄(当り図柄)である場合に、可変入賞球装置15が所定時間だけ開状態になる。さらに、確変状態では、普通図柄表示器10における停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置15の開放時間と開放回数が高められる。すなわち、可変入賞球装置15の開放時間と開放回数は、確変状態中に普通図柄の停止図柄が当り図柄である場合等に高められる。
図2は、主基板31における回路構成の一例を示すブロック図である。なお、図2には、払出制御基板37および演出制御基板80等も示されている。主基板31には、プログラムに従ってパチンコ遊技機1を制御する基本回路(遊技制御用マイクロコンピュータに相当:遊技制御手段)53と、ゲートスイッチ32a、始動口スイッチ14a、Vカウントスイッチ22、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aからの信号を基本回路53に与える入力ドライバ回路58と、可変入賞球装置15を開閉するソレノイド16、開閉板20を開閉するソレノイド21および大入賞口内の経路を切り換えるためのソレノイド21Aを基本回路53からの指令に従って駆動するソレノイド回路59とが搭載されている。
なお、ゲートスイッチ32a、始動口スイッチ14a、Vカウントスイッチ22、カウントスイッチ23、入賞口スイッチ29a,30a,33a,39a等のスイッチは、センサと称されているものでもよい。すなわち、遊技球を検出できる遊技媒体検出手段(この例では遊技球検出手段)であれば、その名称を問わない。入賞検出を行う始動口スイッチ14a、Vカウントスイッチ22、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aの各スイッチは、入賞検出手段でもある。なお、入賞検出手段は、複数の入賞口に別個に入賞したそれぞれの遊技球をまとめて検出するものであってもよい。また、ゲートスイッチ32aのような通過ゲートであっても、賞球の払い出しが行われるものであれば、通過ゲートへ遊技球が進入することが入賞になり、通過ゲートに設けられているスイッチ(例えばゲートスイッチ32a)が入賞検出手段になる。さらに、この実施の形態では、V入賞領域に入賞した遊技球はVカウントスイッチ22のみで検出されるので、大入賞口に入賞した遊技球数は、Vカウントスイッチ22による検出数とカウントスイッチ23による検出数との和になる。しかし、V入賞領域に入賞した遊技球が、Vカウントスイッチ22で検出されるとともにカウントスイッチ23でも検出されるようにしてもよい。その場合には、大入賞口に入賞した遊技球数は、カウントスイッチ23による検出数に相当する。
また、始動口スイッチ14a、カウントスイッチ23、および入賞口スイッチ29a,30a,33a,39aの各スイッチには、スイッチコモン電圧(例えば+12V)が供給されているが、主基板31には、スイッチコモン電圧を監視するスイッチコモン監視回路71が搭載されている。スイッチコモン監視回路71が、スイッチコモン電圧が所定値まで低下したことを検出すると、基本回路53に入力されるスイッチコモン監視信号をオフ状態にする。
また、基本回路53から与えられるデータに従って、大当りの発生を示す大当り情報、可変表示装置9における図柄の可変表示開始に利用された始動入賞球の個数を示す有効始動情報、確率変動が生じたことを示す確変情報等の情報出力信号をホールコンピュータ等の外部装置に対して出力する情報出力回路64が搭載されている。
遊技制御用マイクロコンピュータで実現される基本回路53は、ゲーム制御(遊技制御)用のプログラム等を記憶するROM54、ワークメモリとして使用される記憶手段(変動データを記憶する変動データ記憶手段)としてのRAM55、プログラムに従って制御動作を行うCPU56およびI/Oポート部57を含む。この実施の形態では、ROM54およびRAM55はCPU56に内蔵されている。すなわち、CPU56は、1チップマイクロコンピュータである。1チップマイクロコンピュータは、少なくともRAM55が内蔵されていればよく、ROM54およびI/Oポート部57は外付けであっても内蔵されていてもよい。なお、CPU56はROM54に格納されているプログラムに従って制御を実行するので、以下、CPU56が実行する(または、処理を行う)ということは、具体的には、CPU56がプログラムに従って制御を実行することである。このことは、主基板31以外の他の基板に搭載されているCPUについても同様である。また、遊技制御手段は、遊技制御用マイクロコンピュータで実現される基本回路53で実現されているが、主として、遊技制御用マイクロコンピュータにおけるプログラムに従って制御を実行するCPU56で実現される。
また、RAM55は、遊技機が備える電源基板(図示せず)において作成されるバックアップ電源によってその一部がバックアップされている不揮発性記憶手段としてのバックアップRAMである。すなわち、遊技機に対する電力供給が停止しても、所定期間(バックアップ電源が電力供給不能になるまで)は、RAM55の一部の内容は保存される。この例では、少なくとも、遊技状態すなわち遊技制御手段の制御状態に応じたデータ(特別図柄プロセスフラグ等)は、バックアップRAM領域(RAM55における電源バックアップされている領域:遊技制御バックアップ用記憶手段の一例)に保存される。遊技制御手段の制御状態に応じたデータとは、停電等が生じた後に復旧した場合に、そのデータにもとづいて、制御状態を停電等の発生前に復旧させるために必要なデータである。また、この例では、未払出賞球数を示すデータは、非バックアップRAM領域(RAM55における電源バックアップされていない領域:遊技制御用記憶手段の一例)に保存される。なお、未払出賞球数を示すデータがバックアップRAMに保存されるようにしてもよい。
また、電源基板からのリセット信号および電源断信号が基本回路53(具体的には入力ポート)に入力される。さらに、クリアスイッチ921からのクリア信号が入力ドライバ回路58に入力される。
遊技球を打撃して発射する打球発射装置は払出制御基板37上の回路によって制御される発射モータ94を含み、発射モータ94が回転することによって遊技球を遊技領域7に向けて発射する。発射モータ94を駆動するための駆動信号は、タッチセンサ基板91を介して発射モータ94に伝達される。そして、遊技者が操作ノブ(打球ハンドル)5に触れていることはタッチセンサで検出され、タッチセンサからの信号がタッチセンサ基板91に搭載されているタッチセンサ回路(遊技者が操作ノブ5に触れているか否かを検出するための検出回路等を含む回路)を介して払出制御基板37に伝達される。払出制御基板37上の回路は、タッチセンサ回路からの信号がオフ状態を示している場合には、発射モータ94の駆動を停止する。なお、操作ノブ5には、弾発力を調節するものであり、遊技者が接触する部分であるタッチリングが組み付けられている。タッチセンサ基板91は、遊技機において、タッチリングと払出制御基板37との間に配置され、かつ、タッチリングの近傍に配置されている。具体的には、タッチリングとタッチセンサ基板91との間の配線長は、タッチセンサ基板91と払出制御基板37との間の配線長よりも短い。
なお、この実施の形態では、演出制御基板80に搭載されている演出制御手段が、遊技盤6に設けられている普通図柄始動記憶表示器41および装飾ランプ25の表示制御を行うとともに、枠側に設けられている天枠ランプ28a、左枠ランプ28bおよび右枠ランプ28cの表示制御を行う。また、演出制御基板80に搭載されている演出制御手段は、特別図柄を可変表示する可変表示装置9および普通図柄を可変表示する普通図柄表示器10の表示制御も行う。
また、この実施の形態で用いられているCPU56は、ソフトウェアで割込禁止に設定できないマスク不能割込(NMI)を発生させるために使用されるマスク不能割込端子(NMI端子)と、CPU56の外部から割込(外部割込;ソフトウェアで割込禁止にできるマスク可能割込)を発生させるために使用される割込端子(INT端子)とを有する。しかし、この実施の形態では、マスク不能割込および外部割込を使用しない。そこで、NMI端子およびINT端子を、抵抗を介してVcc(+5V)にプルアップしておく。従って、NMI端子およびINT端子の入力レベルは常にハイレベルになり、端子オープン状態に場合に比べて、ノイズ等によってNMI端子およびINT端子の入力レベルが立ち下がって割込発生状態になる可能性が低減する。
次に遊技機の動作について説明する。図3および図4は、主基板31における遊技制御手段が実行するメイン処理を示すフローチャートである。遊技機に対して電源が投入され、リセット信号が入力されるリセット端子の入力レベルがハイレベルになると、CPU56は、プログラムの内容が正当か否かを確認するための処理であるセキュリティチェック処理を実行した後、ステップS1以降のメイン処理を開始する。メイン処理において、CPU56は、まず、必要な初期設定を行う。
初期設定処理において、CPU56は、まず、割込禁止に設定する(ステップS1)。次に、割込モードを割込モード2に設定し(ステップS2)、スタックポインタにスタックポインタ指定アドレスを設定する(ステップS3)。そして、内蔵デバイスレジスタの初期設定を行う(ステップS4)。
次いで、CPU56は、内蔵デバイス(内蔵周辺回路)であるCTC(カウンタ/タイマ)およびPIO(パラレル入出力ポート)の初期設定(ステップS5)を行った後、RAM55をアクセス可能状態に設定する(ステップS6)。
この実施の形態で用いられるCPU56は、I/Oポート(PIO)およびタイマ/カウンタ回路(CTC)も内蔵している。また、CTCは、2本の外部クロック/タイマトリガ入力CLK/TRG2,3と2本のタイマ出力ZC/TO0,1を備えている。
この実施の形態で用いられているCPU56には、マスク可能な割込のモードとして以下の3種類のモードが用意されている。なお、マスク可能な割込が発生すると、CPU56は、自動的に割込禁止状態に設定するとともに、プログラムカウンタの内容をスタックにセーブする。
割込モード0:割込要求を行った内蔵デバイスがRST命令(1バイト)またはCALL命令(3バイト)をCPUの内部データバス上に送出する。よって、CPU56は、RST命令に対応したアドレスまたはCALL命令で指定されるアドレスの命令を実行する。リセット時に、CPU56は自動的に割込モード0になる。よって、割込モード1または割込モード2に設定したい場合には、初期設定処理において、割込モード1または割込モード2に設定するための処理を行う必要がある。
割込モード1:割込が受け付けられると、常に0038(h)番地に飛ぶモードである。
割込モード2:CPU56の特定レジスタ(Iレジスタ)の値(1バイト)と内蔵デバイスが出力する割込ベクタ(1バイト:最下位ビット0)から合成されるアドレスが、割込番地を示すモードである。すなわち、割込番地は、上位アドレスが特定レジスタの値とされ下位アドレスが割込ベクタとされた2バイトで示されるアドレスである。従って、任意の(飛び飛びではあるが)偶数番地に割込処理を設置することができる。各内蔵デバイスは割込要求を行うときに割込ベクタを送出する機能を有している。
よって、割込モード2に設定されると、各内蔵デバイスからの割込要求を容易に処理することが可能になり、また、プログラムにおける任意の位置に割込処理を設置することが可能になる。さらに、割込モード1とは異なり、割込発生要因毎のそれぞれの割込処理を用意しておくことも容易である。上述したように、この実施の形態では、初期設定処理のステップS2において、CPU56は割込モード2に設定される。
次いで、CPU56は、クリアスイッチ921からのクリア信号の状態を1回だけ確認する(ステップS7)。その確認においてオンを検出した場合には、CPU56は、通常の初期化処理を実行する(ステップS10〜ステップS15)。
クリア信号がオンの状態でない場合には、遊技機への電力供給が停止したときにバックアップRAM領域のデータ保護処理(例えばパリティデータの付加等の電力供給停止時処理)が行われたか否か確認する(ステップS8)。この実施の形態では、電力供給の停止が生じた場合には、バックアップRAM領域のデータを保護するための処理が行われている。そのような保護処理が行われていたことを確認した場合には、CPU56はバックアップありと判定する。そのような保護処理が行われていないことを確認した場合には、CPU56は初期化処理を実行する。
保護処理が行われていたか否かは、後述する電力供給停止時処理においてバックアップRAM領域に保存されるバックアップ監視タイマの値が、バックアップRAM領域のデータ保護処理を実行したことに応じた値(例えば2)になっているか否かによって確認される。なお、そのような確認の仕方は一例であって、例えば、電力供給停止時処理においてバックアップフラグ領域にデータ保護処理を実行したことを示すフラグをセットし、ステップS8において、そのフラグがセットされていることを確認したらバックアップありと判定してもよい。
バックアップありと判定したら、CPU56は、バックアップRAM領域のデータチェック(この例ではパリティチェック)を行う(ステップS9)。この実施の形態では、クリアデータ(00)をチェックサムデータエリアにセットし、チェックサム算出開始アドレスをポインタにセットする。また、チェックサムの対象となるデータ数に対応するチェックサム算出回数をセットする。そして、チェックサムデータエリアの内容とポインタが指すRAM領域の内容との排他的論理和を演算する。演算結果をチェックサムデータエリアにストアするとともに、ポインタの値を1増やし、チェックサム算出回数の値を1減算する。以上の処理が、チェックサム算出回数の値が0になるまで繰り返される。チェックサム算出回数の値が0になったら、CPU56は、チェックサムデータエリアの内容の各ビットの値を反転し、反転後のデータをチェックサムとする。
電力供給停止時処理において、上記の処理と同様の処理によってチェックサムが算出され、チェックサムはバックアップRAM領域に保存されている。ステップS9では、算出したチェックサムと保存されているチェックサムとを比較する。不測の停電等の電力供給停止が生じた後に復旧した場合には、バックアップRAM領域のデータは保存されているはずであるから、チェック結果(比較結果)は正常(一致)になる。チェック結果が正常でないということは、バックアップRAM領域のデータが、電力供給停止時のデータとは異なっていることを意味する。そのような場合には、内部状態を電力供給停止時の状態に戻すことができないので、電力供給の停止からの復旧時でない電源投入時に実行される初期化処理(ステップS10〜S15の処理)を実行する。
チェック結果が正常であれば、CPU56は、遊技制御手段の内部状態と表示制御手段等の電気部品制御手段の制御状態を電力供給停止時の状態に戻すための遊技状態復旧処理を行う。具体的には、ROM54に格納されているバックアップ時設定テーブルの先頭アドレスをポインタに設定し(ステップS91)、バックアップ時設定テーブルの内容を順次作業領域(RAM55内の領域)に設定する(ステップS92)。作業領域はバックアップ電源によって電源バックアップされている。バックアップ時設定テーブルには、作業領域のうち初期化してもよい領域についての初期化データが設定されている。ステップS91およびS92の処理によって、作業領域のうち初期化してはならない部分については、保存されていた内容がそのまま残る。初期化してはならない部分とは、例えば、電力供給停止前の遊技状態を示すデータ(特別図柄プロセスフラグなど)が設定されている部分である。
また、CPU56は、ROM54に格納されているバックアップ時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS93)、その内容に従ってサブ基板(払出制御基板37および演出制御基板80)に、電力供給が復旧した旨を示す制御コマンド(復旧コマンド)が送信されるように制御する(ステップS94)。そして、ステップS15に移行する。
初期化処理では、CPU56は、まず、RAMクリア処理を行う(ステップS10)。なお、RAM55の全領域を初期化せず、所定のデータ(例えば大当り判定用乱数を生成するためのカウンタのカウント値のデータ)をそのままにしてもよい。例えば、大当り判定用乱数を生成するためのカウンタのカウント値のデータをそのままにした場合には、不正な手段によって初期化処理が実行される状態になったとしても、大当り判定用乱数を生成するためのカウンタのカウント値が大当り判定値に一致するタイミングを狙うことは困難である。また、ROM54に格納されている初期化時設定テーブルの先頭アドレスをポインタに設定し(ステップS11)、初期化時設定テーブルの内容を順次作業領域に設定する(ステップS12)。ステップS11およびS12の処理によって、例えば、普通図柄判定用乱数カウンタ、普通図柄判定用バッファ、特別図柄左中右図柄バッファ、総賞球数格納バッファ、特別図柄プロセスフラグ、賞球中フラグ、球切れフラグ、払出停止フラグなど制御状態に応じて選択的に処理を行うためのフラグに初期値が設定される。
また、CPU56は、ROM54に格納されている初期化時コマンド送信テーブルの先頭アドレスをポインタに設定し(ステップS13)、その内容に従ってサブ基板を初期化するための初期化コマンドをサブ基板に送信する処理を実行する(ステップS14)。初期化コマンドとして、可変表示装置9に表示される初期図柄を示すコマンド等がある。
そして、ステップS15において、CPU56は、所定時間(本例では2ms)毎に定期的にタイマ割込がかかるようにCPU56に内蔵されているCTCのレジスタの設定を行なう。すなわち、初期値として例えば2msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、時間定数レジスタに2msに相当する値が設定され、2ms毎に定期的にタイマ割込がかかるとする。
初期化処理の実行(ステップS10〜S15)が完了すると、CPU56は、割込禁止状態にして(ステップS16)、表示用乱数更新処理を行ったあと(ステップS17)、ランダム1初期値決定用乱数およびランダム6初期値決定用乱数の更新処理を実行する(ステップS18)。
次いで、CPU56は、割込許可状態にしたあと(ステップS19)、NOP(ノンオペレーション)処理を実行する(ステップS20)。NOP処理を実行したあと、CPU56は、割込禁止状態にして(ステップS21)、ランダム3初期値決定用乱数の更新処理を行い(ステップS22)、割込許可状態にし(ステップS23)、ステップS16に戻る。
上記のように、本例では、メインルーチンで、表示用乱数と初期値決定用乱数の更新処理を繰り返し実行する。ただし、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にNOP処理を実行し、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にタイマ割込がかかりやすいようにしている。
NOP処理とは、所定期間中は実質的な制御を何ら行わない状態とするための処理であり、具体的にはプログラムカウンタを所定数(例えば「1」)加算するのみの処理(プログラムカウンタ更新処理)である。すなわち、NOP処理(プログラムカウンタ更新処理)にてプログラムカウンタの加算のみを行っている場合には、メインルーチンにおいて実質的な制御は何ら実行されない。なお、「プログラムカウンタ」は、実行する処理プログラムが記憶された記憶手段のプログラム領域のアドレスを示す値が設定されているカウンタである。
なお、本例では、ステップS23にて割込許可状態にしたあと、ステップS16に戻って割込禁止状態とするまでの間には、ジャンプ命令などが実行される。このため、ステップS23で割込許可状態とされたあとステップS16にて割込禁止状態となるまでの間にタイマ割込が発生し、遊技制御処理が実行されることがあり得る。
なお、表示用乱数とは、可変表示装置9に表示される図柄を決定するための乱数であり、表示用乱数更新処理とは、表示用乱数を発生するためのカウンタのカウント値を更新する処理である。
また、初期値決定用乱数更新処理とは、初期値決定用乱数を発生するためのカウンタのカウント値を更新する処理である。初期値決定用乱数とは、大当りとするか否かを決定するための乱数を発生するためのカウンタ(大当り決定用乱数発生カウンタ)等のカウント値の初期値を決定するための乱数である。
後述する遊技制御処理(遊技制御用マイクロコンピュータが、遊技機に設けられている可変表示装置9、可変入賞球装置15、球払出装置97等の遊技用の装置を、自身で制御する処理、または他のマイクロコンピュータに制御させるために指令信号を送信する処理、遊技装置制御処理ともいう)において、大当り決定用乱数発生カウンタのカウント値が1周すると、そのカウンタに初期値が設定される。
なお、表示用乱数更新処理および初期値決定用乱数更新処理が実行されるときに割込禁止状態にされるのは、表示用乱数更新処理および初期値決定用乱数更新処理が後述するタイマ割込処理でも実行されることから、タイマ割込処理における処理と競合してしまうのを避けるためである。すなわち、ステップS17,S18,S22の処理中にタイマ割込が発生してタイマ割込処理中で表示用乱数や初期値決定用乱数を発生するためのカウンタのカウント値を更新してしまったのでは、カウント値の連続性が損なわれる場合がある。しかし、ステップS17,S18,S22の処理中では割込禁止状態にしておけば、そのような不都合が生ずることはない。
次に、遊技制御処理について説明する。
図5は、2msタイマ割込処理を示すフローチャートである。メイン処理の実行中に、具体的には、ステップS16〜S23のループ処理の実行中に、2msタイマ割込が発生すると、CPU56は、タイマ割込の発生に応じて起動されるタイマ割込処理において遊技制御処理を実行する。
遊技制御処理において、CPU56は、まず、電源断信号が出力されたか否か(オン状態になったか否か)を検出する電源断処理(電源断検出処理)を実行する(ステップS30)。
次いで、CPU56は、入力ドライバ回路58を介して、ゲートスイッチ32a、始動口スイッチ14a、カウントスイッチ23および入賞口スイッチ29a,30a,33a,39a等のスイッチの検出信号を入力し、それらの状態判定を行う(スイッチ処理:ステップS31)。具体的には、各スイッチの検出信号を入力する入力ポートの状態がオン状態であれば、各スイッチに対応して設けられているスイッチタイマの値を+1する。
この実施の形態では、スイッチ処理(ステップS31)にて入賞検出またはゲート通過に関わる各スイッチの検出信号のオン状態が確認された継続時間(具体的には2ms毎の確認回数)が設定され、所定時間継続すると、確かにスイッチがオンしたと判定されスイッチオンに対応した処理が開始される。
また、スイッチコモン監視信号にもとづいて所定の報知処理を行う短絡報知処理を実行する(ステップS32)。
次に、CPU56は、遊技制御に用いられる大当り判定用乱数などの各判定用乱数を生成するための各カウンタのカウント値を更新する処理を行う(ステップS33)。また、ランダム1初期値決定用乱数、およびランダム6初期値決定用乱数を生成するためのカウンタのカウント値を更新する処理を行う(ステップS34)。さらに、ランダム3初期値決定用乱数を生成するためのカウンタのカウント値を更新する処理を行う(ステップS35)。そして、表示用乱数を生成するためのカウンタのカウント値を更新する処理を行う(ステップS36)。
さらに、CPU56は、特別図柄プロセス処理を行う(ステップS37)。特別図柄プロセス制御では、遊技状態に応じてパチンコ遊技機1を所定の順序で制御するための特別図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、特別図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。また、普通図柄プロセス処理を行う(ステップS38)。普通図柄プロセス処理では、普通図柄表示器10の表示状態を所定の順序で制御するための普通図柄プロセスフラグに従って該当する処理が選び出されて実行される。そして、普通図柄プロセスフラグの値は、遊技状態に応じて各処理中に更新される。
次いで、CPU56は、特別図柄に関する演出制御コマンドをRAM55の所定の領域に設定して演出制御コマンドを送出する処理を行う(特別図柄コマンド制御処理:ステップS39)。また、普通図柄に関する演出制御コマンドをRAM55の所定の領域に設定して演出制御コマンドを送出する処理を行う(普通図柄コマンド制御処理:ステップS40)。
さらに、CPU56は、例えばホール管理用コンピュータに供給される大当り情報、始動情報、確率変動情報などのデータを出力する情報出力処理を行う(ステップS41)。
また、CPU56は、入賞口スイッチ29a,30a,33a,39a等の検出信号にもとづく賞球個数の設定などを行う賞球処理を実行する(ステップS42)。具体的には、入賞口スイッチ29a,30a,33a,39a等がオンしたことにもとづく入賞検出に応じて、払出制御基板37に賞球個数を示す賞球個数信号等の払出制御信号を出力する。払出制御基板37に搭載されている払出制御用CPUは、賞球個数を示す賞球個数信号等の払出制御信号に応じて球払出装置97を駆動する。
そして、CPU56は、始動入賞記憶数の増減をチェックする記憶処理を実行する(ステップS43)。また、遊技機の制御状態を遊技機外部で確認できるようにするための試験信号を出力する処理である試験端子処理を実行する(ステップS44)。また、この実施の形態では、出力ポートの出力状態に対応したRAM領域(出力ポートバッファ)が設けられているのであるが、CPU56は、出力ポートバッファにおけるソレノイドに関する内容を出力ポートに出力する(ステップS45:ソレノイド出力処理)。その後、割込許可状態に設定し(ステップS46)、処理を終了する。
図6は、各乱数を示す説明図である。各乱数は、以下のように使用される。
(1)ランダム1:大当りを発生させるか否か決定する(大当り判定用、大当り決定用)
(2)ランダム2−1〜2−3(ランダム2):特別図柄の左中右のはずれ図柄決定用(特別図柄決定用、はずれ図柄決定用)
(3)ランダム3:大当りを発生させる特別図柄の組合せを決定する(特別図柄決定用、大当り図柄決定用)
(4)ランダム4:特別図柄の変動パターンを決定する(変動パターン決定用)
(5)ランダム5:大当りを発生させない場合にリーチとするか否かを決定する(リーチ判定用)
(6)ランダム6:普通図柄にもとづく当りを発生させるか否か決定する(普通図柄当り判定用)
(7)ランダム7:ランダム1の初期値を決定する(ランダム1初期値決定用)
(8)ランダム8:ランダム3の初期値を決定する(ランダム3初期値決定用)
(9)ランダム9:ランダム6の初期値を決定する(ランダム6初期値決定用)
図5に示された遊技制御処理におけるステップS33では、CPU56は、(1)の大当り判定用乱数、(3)の大当り図柄決定用乱数、および(6)の普通図柄当り判定用乱数を生成するためのカウンタのカウントアップ(1加算)を行う。すなわち、それらが判定用乱数であり、それら以外の乱数が表示用乱数または初期値決定用乱数である。なお、遊技効果を高めるために、上記(1)〜(9)の乱数以外の乱数等も用いられている。
なお、ランダム2−2を生成するためのカウンタは、ランダム2−1を生成するためのカウンタの桁上げ(「11」になって初期値「0」に戻るとき)が生ずるとカウントアップされ、ランダム2−3を生成するためのカウンタは、ランダム2−2を生成するためのカウンタの桁上げが生ずるとカウントアップされる。
図7は、判定用乱数更新処理(ステップS33)を示すフローチャートである。判定用乱数更新処理において、CPU56は、まず、ランダム1(大当り判定用乱数)を生成するためのカウンタを1加算する(ステップS401)。そして、そのカウンタのカウント値が「631」よりも小さいかどうか判定する(ステップS402)。小さくなければ、すなわち、631に達していればその値を「0」に戻す(ステップS403)。さらに、CPU56は、ランダム1を生成するためのカウンタのカウント値がランダム1用初期値バッファに設定されている値と一致したか否か確認する(ステップS404)。一致していたら、ランダム7を生成するためのカウント値を読み出して初期値決定用乱数を抽出し、その乱数値をランダム1を生成するためのカウンタに設定するとともに(ステップS405)、ランダム1用初期値バッファにも格納する(ステップS406)。
ステップS404〜S406の処理によって、ランダム1を生成するためのカウンタのカウント値は、1周するたびに(631カウントするたびに)、設定値(初期値)が変更される。従って、ランダム1のランダム性がより増して、大当りの発生をねらった遊技を行いにくくなる。その結果、不正行為も効果的に防止することができる。
次いで、CPU56は、ランダム3(大当り図柄決定用乱数)を生成するためのカウンタを1加算する(ステップS407)。そして、そのカウンタのカウント値が「12」に達しているかどうか判定する(ステップS408)。達していれば、その値を「0」に戻す(ステップS409)。さらに、CPU56は、ランダム3を生成するためのカウンタのカウント値がランダム3用初期値バッファに設定されている値と一致したか否か確認する(ステップS410)。一致していたら、ランダム8を生成するためのカウント値を読み出して初期値決定用乱数を抽出し、その乱数値をランダム3を生成するためのカウンタに設定するとともに(ステップS411)、ランダム3用初期値バッファにも格納する(ステップS412)。
ステップS410〜S412の処理によって、ランダム3を生成するためのカウンタのカウント値は、1周するたびに(12カウントするたびに)、設定値(初期値)が変更される。従って、ランダム3のランダム性がより増して、特定の大当り図柄(すなわち、確変大当りなどの特定の種類の大当りの発生)をねらった遊技を行いにくくなる。その結果、不正行為も効果的に防止することができる。
さらに、CPU56は、また、ランダム6(普通図柄判定用乱数)を生成するためのカウンタを1加算する(ステップS413)。そして、そのカウンタのカウント値が「14」に達しているかどうか判定する(ステップS414)。達していれば、その値を「3」に戻す(ステップS415)。すなわち、ランダム6を生成するためのカウンタのカウント値がとりうる範囲は、3〜13である。さらに、CPU56は、ランダム6を生成するためのカウンタのカウント値がランダム6用初期値バッファに設定されている値と一致したか否か確認する(ステップS416)。一致していたら、ランダム9を生成するためのカウント値を読み出して初期値決定用乱数を抽出し、その乱数値をランダム6を生成するためのカウンタに設定するとともに(ステップS417)、ランダム6用初期値バッファにも格納する(ステップS418)。
ステップS416〜S418の処理によって、ランダム6を生成するためのカウンタのカウント値は、1周するたびに(3〜13の11カウントするたびに)、設定値(初期値)が変更される。従って、ランダム6のランダム性がより増して、特定の当りの発生をねらった遊技を行いにくくなる。その結果、不正行為も効果的に防止することができる。
図8は、ランダム1およびランダム6初期値決定用乱数更新処理(ステップS18,S34)を示すフローチャートである。ランダム1およびランダム6初期値決定用乱数更新処理において、CPU56は、ランダム7(ランダム1初期値決定用乱数)を生成するためのカウンタを1加算する(ステップS421)。そして、そのカウンタのカウント値が「631」に達しているかどうか判定する(ステップS422)。達していれば、その値を「0」に戻す(ステップS423)。
また、CPU56は、ランダム9(ランダム6初期値決定用乱数)を生成するためのカウンタを1加算する(ステップS424)。そして、そのカウンタのカウント値が「14」に達しているかどうか判定する(ステップS425)。達していれば、その値を「3」に戻す(ステップS426)。
図9は、ランダム3初期値決定用乱数更新処理(ステップS22,S35)を示すフローチャートである。ランダム3初期値決定用乱数更新処理において、CPU56は、ランダム8(ランダム3初期値決定用乱数)を生成するためのカウンタを1加算する(ステップS427)。そして、そのカウンタのカウント値が「12」に達しているかどうか判定する(ステップS428)。達していれば、その値を「0」に戻す(ステップS429)。
図10は、表示用乱数更新処理を示すフローチャートである。表示用乱数更新処理において、CPU56は、ランダム4(変動パターン決定用乱数)を生成するためのカウンタを1加算する(ステップS431)。そして、そのカウンタのカウント値が「150」に達しているかどうか判定する(ステップS432)。達していれば、その値から「150」を減算する(ステップS433)。
次いで、ランダム5(リーチ判定用乱数)を生成するためのカウンタを1加算する(ステップS434)。そして、そのカウンタのカウント値が「14」に達しているかどうか判定する(ステップS435)。達していれば、その値から「14」を減算する(ステップS436)。
次に、CPU56は、ランダム2−1(左のはずれ特別図柄決定用乱数)を生成するためのカウンタのアドレスをポインタにセットする(ステップS437)。また、そのカウンタの最大判定値をセットし(ステップS438)、カウンタ更新処理サブルーチンをコールする(ステップS439)。そして、キャリーフラグが立っていれば(ステップS440)、ランダム2−2(中のはずれ特別図柄決定用乱数)を生成するためのカウンタのアドレスをポインタにセットする(ステップS441)。また、そのカウンタの最大判定値をセットし(ステップS442)、カウンタ更新処理サブルーチンをコールする(ステップS443)。キャリーフラグが立っていれば(ステップS444)、ランダム2−3(右のはずれ特別図柄決定用乱数)を生成するためのカウンタのアドレスをポインタにセットする(ステップS445)。また、そのカウンタの最大判定値をセットし(ステップS446)、カウンタ更新処理サブルーチンをコールする(ステップS447)。なお、キャリーフラグは、カウンタ更新処理において、カウント値の桁上げが生じたときに(カウント値が0に戻されたときに)セットされる。
以上のように、左中右のはずれ特別図柄決定用乱数を生成するためのカウンタについては、カウンタ更新処理サブルーチンにおいてカウントアップが実行される。このように、共通のサブルーチン(モジュール)をコールすることによって、プログラム容量は節減される。ただし、大当りの発生、大当り図柄の決定および普通図柄の決定に関するランダム1,3,6,7,8については、遊技者の利益に直結するので、共通のサブルーチンを使用せずに、それぞれ、個別にカウンタの更新処理が行われる。
図11は、カウンタ更新処理サブルーチンを示すフローチャートである。カウンタ更新処理サブルーチンにおいて、CPU56は、ポインタにもとづいて更新処理対象のカウンタを特定し(ステップS461)、そのカウンタのカウント値を1加算する(ステップS462)。そして、カウント値が最大値よりも小さいかどうか確認する(ステップS463)。すなわち、最大値になったか否か確認する。最大値になっていれば、カウンタの値を「0」に戻す(ステップS464)。このとき、CPU56の内部処理として減算処理が行われているので、キャリーフラグがセットされる。
図12は、CPU56が実行する特別図柄プロセス処理のプログラムの一例を示すフローチャートである。図12に示す特別図柄プロセス処理は、図5のフローチャートにおけるステップS37の具体的な処理である。CPU56は、特別図柄プロセス処理を行う際に、変動短縮タイマ減算処理(ステップS310)を行い、遊技盤6に設けられている始動入賞口14に遊技球が入賞したことを検出するための始動口スイッチ14aがオンしていたら、すなわち遊技球が始動入賞口14に入賞する始動入賞が発生していたら(ステップS311)、始動口スイッチ通過処理(ステップS312)を行った後に、内部状態に応じて、ステップS300〜S308のうちのいずれかの処理を行う。変動短縮タイマは、特別図柄の変動時間が短縮される場合に、変動時間を設定するためのタイマである。
なお、始動口スイッチ通過処理(ステップS312)では、CPU56は、始動入賞記憶数が最大値である4に達しているかどうか確認し、始動入賞記憶数が4に達していなければ始動入賞記憶数を1増やし、大当り判定用乱数等の各乱数の値を抽出し、それらを始動入賞記憶数の値に対応した保存領域(特別図柄判定用バッファ)に格納する処理を行う。なお、乱数を抽出するとは、乱数を生成させるためのカウンタからカウント値を読み出して、読み出したカウント値を乱数値とすることである。ステップS312では、図6に示された乱数のうち、ランダム1〜ランダム5が抽出される。
特別図柄通常処理(ステップS300):特別図柄の可変表示を開始できる状態になるのを待つ。特別図柄の可変表示が開始できる状態になると、始動入賞記憶数を確認する。始動入賞記憶数が0でなければ、特別図柄の可変表示の結果、後述する大当り判定モジュールによって大当りとするか否か決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS301に移行するように更新する。
特別図柄停止図柄設定処理(ステップS301):特別図柄の可変表示後の左中右図柄の停止図柄を決定する。本例では、特別図柄の可変表示の結果を大当りとするときには、大当り図柄決定用乱数(ランダム3)の値に応じて大当り図柄を決定する。一方、特別図柄の可変表示の結果をはずれ(リーチを含む)とするときには、はずれ図柄決定用乱数(ランダム2)の値に応じてはずれ図柄(リーチ図柄を含む)を決定する。そして、内部状態(特別図柄プロセスフラグ)をステップS302に移行するように更新する。
変動パターン設定処理(ステップS302):特別図柄の可変表示の変動パターン(可変表示態様)を、ランダム4の値に応じて決定する。また、変動時間タイマをスタートさせる。このとき、演出制御基板80に対して、左中右最終停止図柄と変動態様(変動パターン)を指令する情報とが送信される。そして、内部状態(特別図柄プロセスフラグ)をステップS303に移行するように更新する。
特別図柄変動処理(ステップS303):所定時間(ステップS302の変動時間タイマで示された時間)が経過すると、内部状態(特別図柄プロセスフラグ)をステップS304に移行するように更新する。
特別図柄停止処理(ステップS304):可変表示装置9において表示される全図柄が停止されるように制御する。具体的には、特別図柄停止を示す演出制御コマンドが送信される状態に設定する。そして、停止図柄が大当り図柄の組み合わせである場合には、内部状態(特別図柄プロセスフラグ)をステップS305に移行するように更新する。そうでない場合には、内部状態をステップS300に移行するように更新する。
大入賞口開放前処理(ステップS305):大入賞口を開放する制御を開始する。具体的には、カウンタやフラグを初期化するとともに、ソレノイド21を駆動して大入賞口を開放する。また、プロセスタイマによって大入賞口開放中処理の実行時間を設定し、大当り中フラグをセットする。そして、内部状態(特別図柄プロセスフラグ)をステップS306に移行するように更新する。
大入賞口開放中処理(ステップS306):大入賞口ラウンド表示の演出制御コマンドを演出制御基板80に送出する制御や大入賞口の閉成条件の成立を確認する処理等を行う。最後の大入賞口の閉成条件が成立したら、内部状態をステップS307に移行するように更新する。
特定領域有効時間処理(ステップS307):V入賞スイッチ22の通過の有無を監視して、大当り遊技状態継続条件の成立を確認する処理を行う。大当り遊技状態継続の条件が成立し、かつ、まだ残りラウンドがある場合には、内部状態をステップS305に移行するように更新する。また、所定の有効時間内に大当り遊技状態継続条件が成立しなかった場合、または、全てのラウンドを終えた場合には、内部状態をステップS308に移行するように更新する。
大当り終了処理(ステップS308):大当り遊技状態が終了したことを遊技者に報知する表示制御を演出制御手段に行わせるための制御を行う。そして、特別図柄停止処理(ステップS304)にて停止表示された停止図柄が確変図柄であった場合には、遊技状態を確変状態に移行(例えば確変状態であるか否かを示す確変フラグのセット)させたあと、内部状態をステップS300に移行するように更新する。なお、特別図柄停止処理(ステップS304)にて停止表示された停止図柄が時短状態となるものとしてあらかじめ定められていた時短図柄(例えば左中右図柄が「1,1,1」で揃った図柄)であった場合には、遊技状態を時短状態に移行(例えば時短状態であるか否かを示す確変フラグのセット)させたあと、内部状態をステップS300に移行するように更新する。
ここで、大当り判定モジュールについて説明する。大当り判定モジュールでは、ランダム1の値と比較される大当り判定値が設定されている大当り判定テーブルが用いられる。この実施の形態では、低確率時(非確変時)では大当り判定値は「3」、「7」であり、高確率時(確変時)では大当り判定値は「3」、「7」、「79」、「103」、「107」である。
大当り判定モジュール(大当り判定処理)では、CPU56は、まず、そのときの遊技の制御状態が確変中であるか否か判定し、確変中であれば、大当り判定テーブル中の高確率時のテーブルを使用することに決定する処理を行う。一方、確変中でなければ、大当り判定テーブル中の低確率時のテーブルを使用することに決定する処理を行う。
そして、CPU56は、抽出されているランダム1の値に一致する値が大当り判定テーブル中にあるか否か判定し、一致する値があれば大当りとすることにし、一致する値がなければ大当りとしないことに決定する処理を行う。
上記のようにして、大当りとするか否かを決定する。大当りとすることに決定した場合には、CPU56は、特別図柄停止図柄設定処理(ステップS301)にて、抽出されている大当り図柄決定用乱数(ランダム3)の値に応じて大当り時の特別図柄の可変表示後の左中右図柄の停止図柄を決定する。本例では、抽出されている大当り図柄決定用乱数の値と同じ数値が停止図柄として決定されるものとする。すなわち、抽出されている大当り図柄決定用乱数の値(「0」〜「11」のいずれか)と同じ数値(「0」〜「11」のいずれか)が左中右で揃う大当り図柄とされる。
そして、本例では、左中右図柄の停止図柄が奇数図柄で揃った場合には確変大当り(非確変状態から確変状態に移行する大当り)となり、左中右図柄の停止図柄が偶数図柄で揃った場合には非確変大当り(非確変状態から確変状態に移行しない大当り)となる。すなわち、大当り図柄の種類に応じて、大当り遊技状態の種類(確変大当り、非確変大当り)が決定される。よって、大当り図柄決定用乱数は、大当りの種類を決定するための乱数としての役割も担っている。なお、大当り遊技状態の種類は、確変大当りと非確変大当りだけでなく、例えば時短大当りなどの他の種類が用意されていてもよい。
図13は、タイマ割込の発生時のランダム1初期値決定用乱数とランダム3初期値決定用乱数との関係を示すタイミング図である。図13に示すように、メインルーチンにおけるステップS18とステップS22との間でタイマ割込が発生したときは、遊技機の電源投入時からのステップS18の実行回数の総数がステップS22の実行回数の総数よりも1回多く、ステップS34とステップS35の実行回数の総数は同数であるため、ランダム1初期値決定用乱数の更新回数がランダム3初期値決定用乱数の更新回数よりも1多いことになる。
一方、図13に示すように、メインルーチンにおけるステップS22が実行されたあとステップS18が実行される前にタイマ割込が発生したときは、遊技機の電源投入時からのステップS18とステップS22の実行回数の総数が同数であり、ステップS34とステップS35の実行回数の総数も同数であるため、ランダム1初期値決定用乱数の更新回数とランダム3初期値決定用乱数の更新回数とが同数となる。
上述した実施の形態では、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、NOP処理を行うようにし、ステップS18とステップS22との間に頻繁にタイマ割込が発生するように制御している。このため、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが常に同期している状態となることを防止することができ、タイマ割込が発生したときのランダム1初期値決定用乱数とランダム3初期値決定用乱数との関係をランダムにすることができる。
以上に説明したように、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、NOP処理を行う構成としたので、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間でタイマ割込処理が高頻度で実行されるようにすることができ、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期している状態でランダム1およびランダム3の初期値が変更されてしまうことを防止することができる。このため、不正に始動入賞信号を送り込むような不正行為により、大当りを不正に発生させたり、確変大当りなどの特定の種類の大当りを不正に発生させることを回避することができる。
すなわち、メインルーチン内の処理の全てを割込禁止状態で行う構成とし、そのメインルーチン内でランダム1初期値決定用乱数とランダム3初期値決定用乱数とを行う構成とすると、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とがメインルーチンにおいて常にセットで更新されることとなり、電源投入時からの更新回数の総数が常に同数の状態でタイマ割込が発生することになる。
また、例えば、遊技が何ら行われていない状態であれば、タイマ割込処理の実行期間はほぼ一定の時間(例えば1.6ms)となるとともに、メインルーチンの一周期もほぼ一定の時間(例えば0.2ms)となる。このため、メインルーチンが実行されるタイマ割込の発生間隔(例えば2ms)における余り時間も一定の時間(例えば0.4ms)となり、各タイマ割込の発生間隔における1回の余り時間で実行されるメインルーチンの回数(例えば(0.4ms/0.2ms)=2回)を算出することができる。
従って、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とがメインルーチンにおいて常にセットで更新される場合には、電源投入時(乱数更新処理の開始時)からの経過時間によって、タイマ割込発生時におけるランダム1初期値決定用乱数およびランダム3初期値決定用乱数の更新回数の総数を不正行為者が知ることができてしまう可能性がある。
さらに、ランダム1とランダム3の更新範囲にもとづいて、各乱数の初期値変更が同時になされるタイミングを算出することも可能となる。
よって、例えば、不正基板等の不正手段を遊技機に搭載し、ランダム1初期値決定用乱数の値が大当り判定値と一致しているときに、ランダム1の初期値の変更タイミングが到来するときを狙って、不正基板等の不正手段によって、CPU56における遊技制御用マイクロコンピュータに対して不正に始動入賞信号を送り込むことにより、不正に大当りを生じさせることが可能になってしまう。
また、大当り図柄の種類によって確変大当りであるか非確変大当りであるかが決定される場合には、ランダム1初期値決定用乱数の値が大当り判定値と一致しているとともに、ランダム3初期値決定用乱数の値が確変図柄を示す値であるときに、ランダム1の初期値とランダム3の初期値の変更タイミングが同時に到来するときを狙って、不正基板等の不正手段によって、CPU56における遊技制御用マイクロコンピュータに対して不正に始動入賞信号を送り込むことにより、不正に確変大当りを生じさせることが可能になってしまう。
これに対して、上述した実施の形態では、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間でタイマ割込処理が高頻度で実行されるようにすることができ、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期している状態でランダム1およびランダム3の初期値が変更されてしまうことを防止することができるため、不正に始動入賞信号を送り込むような不正行為にもとづく大当りや確変大当りの発生を防止することができるのである。
なお、上述した実施の形態では、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、NOP処理を行う構成としていたが、NOP処理を行うことなく、割込許可状態とするだけであってもよい。このように構成した場合であっても、ステップS19での割込許可処理とステップS21での割込禁止処理が制御プログラム上に連続して記載されていない限りタイマ割込がかかる余地があるため、メイン処理におけるランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にタイマ割込を発生させることができるようになり、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間に遊技制御処理が実行されるようにすることができる。よって、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とがタイマ割込の発生時に同期した状態となっていることを回避することができ、不正行為にもとづく大当りの発生や特定の種類の大当りの発生を防止することができる。ただし、NOP処理を行う構成とした場合には、メイン処理におけるランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間でタイマ割込が発生する可能性を高めることができるようになり、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間でより確実に遊技制御処理が実行されるようにすることができる。
また、上述した実施の形態では、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、NOP処理を行う構成としていたが、NOP処理に限らず、タイマ割込を誘発するための遅延処理を実行するようにして、メイン処理におけるランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にタイマ割込を発生させるようにしてもよい。
図14は、メインルーチンにて遅延処理を行う場合におけるメイン処理の一部を示すフローチャートである。図14に示すように、メイン処理にて、CPU56は、ステップS19にて割込許可状態としたあと、遅延期間を決定するために例えば抽選によってカウント値Kを決定する(ステップS20a)。次いで、CPU56は、遅延カウンタのカウント値を1加算し(ステップS20b)、遅延カウンタのカウント値がKになったら(ステップS20cのY)、遅延期間が終了したとしてステップS21に移行する。すなわち、遅延カウンタのカウント値を0から1ずつ加算していき、ステップS20aにて決定されたカウント値Kに到達したらステップS21に移行する。
上記のように、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、遅延期間を設ける構成とした場合であっても、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間にタイマ割込の発生を誘発することができ、1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間に遊技制御処理がより確実に実行されるようにすることができる。
また、上記のように、遅延時間を抽選により決定し、遅延時間をランダムに決める構成としたので、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間でランダムにタイマ割込が発生するようにすることができ、ランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間に遊技制御処理がランダムに実行されるようにすることができる。
なお、上記の例における遅延時間を、例えば5msなどのタイマ割込が複数回発生するような時間とするようにしてもよい。また、NOP処理と遅延処理とを共に行う構成としてもよく、その場合にさらにNOP処理の実行時間と遅延処理による遅延時間との合計がタイマ割込が複数回発生するような時間となるようにしてもよい。このように構成すれば、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間でタイマ割込が複数回発生するようにすることができ、ランダム1初期値決定用乱数の値とランダム3初期値決定用乱数の値のずれを大きくすることができる。
また、上述した実施の形態では、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、ほぼ一定の期間で処理が完了するNOP処理を行う構成としていたが、あらかじめ定められた条件によって処理期間が異なる処理(実行期間変動処理)を実行するようにして、メイン処理におけるランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にタイマ割込が発生する可能性(確率)を変化させるようにしてもよい。「実行期間変動処理」としては、例えば、桁上げの発生の有無によって処理期間が異なる処理、具体的には上述したはずれ図柄決定用乱数更新処理(ステップS437〜S447参照)が考えられる。
図15は、メインルーチンにて、実行期間変動処理としてはずれ図柄決定用乱数更新処理(図10に示した表示用乱数更新処理の一部:ステップS437〜S447)を行う場合におけるメイン処理の一部を示すフローチャートである。図15に示すように、メイン処理にて、CPU56は、ステップS19にて割込許可状態としたあと、実行期間変動処理としてはずれ図柄決定用乱数更新処理(ステップS437〜S447参照)を実行し(ステップS20d)、ステップS21に移行する。なお、ステップS20dでのはずれ図柄決定用乱数更新処理では、左図柄用乱数(ランダム2−1)の更新にて桁上げが発生しなかった場合(ステップS440のN)、中図柄用乱数(ランダム2−2)の更新にて桁上げが発生しなかった場合(ステップS444のN)、または、左中右図柄用の乱数の全てを更新した場合(ステップS447のあと)に、ステップS21に移行する。
すなわち、この例では、左図柄用乱数(ランダム2−1)の更新によっては桁上げが発生しなかった場合と、左図柄用乱数(ランダム2−1)の更新によって桁上げが発生したがその後の中図柄用乱数(ランダム2−2)の更新によっては桁上げが発生しなかった場合と、左図柄用乱数(ランダム2−1)の更新によって桁上げが発生したあとさらに中図柄用乱数(ランダム2−2)の更新によっても桁上げが発生した場合とで、処理の実行期間が異なることになる。
上記のように、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間を割込許可状態とするとともに、その割込許可状態としているときに、あらかじめ定められた条件(例えば、桁上げの有無、桁上げが生じた回数)によって処理期間が異なる処理(実行期間変動処理)を実行する構成とした場合には、割込許可状態となっている期間を変化させることができ、メイン処理におけるランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理との間にタイマ割込が発生する可能性(確率)を変化させることができる。従って、メイン処理におけるランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間でランダムにタイマ割込が発生するようにすることができ、ランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理との間に遊技制御処理がランダムに実行されるようにすることができる。
なお、上記の例では、「実行期間変動処理」として、はずれ図柄決定用乱数更新処理(ステップS437〜S447参照)を行う構成としていたが、実行期間変動処理が中断されて遊技制御処理が実行されることになるため、遊技制御処理では実行されない処理を実行期間変動処理として実行するようにすることが好ましい。すなわち、実行期間変動処理としてのはずれ図柄決定用乱数更新処理が中断された状態で遊技制御処理が実行され、その遊技制御処理内でもはずれ図柄決定用乱数更新処理が実行されてしまうと、乱数更新処理の実行回数と乱数の更新値との間で整合がとれなくなってしまう可能性がある。そのようなことを回避するために、遊技制御処理では実行されない処理を実行期間変動処理として実行するようにすることが好ましい。例えば、大当り予告を行うか否かの判定に用いる予告判定用乱数の更新処理を、桁上げの有無などによって処理期間が異なるように構成し、遊技制御処理内では実行することなく実行期間変動処理として実行するようにすればよい。また、例えば、はずれ図柄決定用乱数更新処理(ステップS437〜S447参照)をタイマ割込処理におけるステップS36内では行わないようにし、「実行期間変動処理」としてメイン処理内でのみ行うようにしてもよい。
また、上述した実施の形態では、ランダム1初期値決定用乱数の更新とランダム3初期値決定用乱数の更新を、ともに乱数発生カウンタのカウント値を1加算していくことで実行する構成としていたが、少なくともいずれか一方の更新処理において、ランダムな数値に更新していくようにしてもよい。例えば、ランダム1初期値決定用乱数とランダム3初期値決定用乱数のうち少なくともいずれか一方について、数値をランダムに発生する乱数発生カウンタが示す数値に更新していくように構成すればよい。具体的には、ランダム1初期値決定用乱数をランダムに更新することとする場合には、例えばステップS421にてランダム1初期値決定用乱数を生成するためのカウンタ(ランダム1初期値決定用乱数発生用カウンタ)に加算する数値を、別途設けられている乱数発生用カウンタ(例えば遊技制御処理内およびメイン処理内で値が更新されるカウンタ)の示す数値とするようにすればよい。また、ランダム3初期値決定用乱数をランダムに更新することとする場合には、例えばステップS427にてランダム3初期値決定用乱数を生成するためのカウンタ(ランダム3初期値決定用乱数発生用カウンタ)に加算する数値を、別途設けられている乱数発生用カウンタ(例えば遊技制御処理内およびメイン処理内で値が更新されるカウンタ)の示す数値とするようにすればよい。上記のように構成すれば、ランダム1初期値決定用乱数とランダム3初期値決定用乱数のうちの少なくともいずれか一方のランダム性を向上させることができる。
なお、上述した実施の形態において、タイマ割込の発生にもとづく遊技制御処理にて、ランダム1初期値決定用乱数更新処理とランダム3初期値決定用乱数更新処理のいずれか一方のみを行うようにしてもよい。このように構成すれば、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期しないようにすることができる。また、上述した実施の形態において、タイマ割込の発生にもとづく遊技制御処理にて、ランダム1初期値決定用乱数更新処理における更新数とランダム3初期値決定用乱数更新処理の更新数とをランダムにする(すなわちランダムな値を加算、もしくはランダムな値に更新)ようにしてもよい。さらに、上記の処理を共に行うようにしてもよい。
また、上述した実施の形態では、メインルーチンにおける1回のループ処理(ループが1周する間に実行される処理)にて、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理とが1回ずつ実行され、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが1ずつ加算される構成としていたが、メインルーチン(メイン処理)における1回のループ処理において、ランダム1初期値決定用乱数の更新処理(第1初期値用数値データを更新する処理)のみを行う場合と、ランダム3初期値決定用乱数の更新処理(第2初期値用数値データを更新する処理)のみを行う場合と、ランダム1初期値決定用乱数の更新処理とランダム3初期値決定用乱数の更新処理とを共に行う場合とをランダムに実行するようにしてもよい。このように構成すれば、例えば、1回目のループ処理と2回目のループ処理にてランダム1初期値決定用乱数の更新処理のみが実行され、3回目のループ処理でランダム3初期値決定用乱数の更新処理のみが実行されるなどのようにして、各初期値決定用乱数が更新されていくことになる。このように構成すれば、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期しないようにすることができる。また、上記のように更新対象の乱数をランダムに選択するのではなく、あらかじめ定められた順番(結果としてランダムな順番とするために、規則的な順番でないことが望ましい)に従って更新対象の乱数が選択されるようにしてもよい。
また、上述した実施の形態において、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とを更新する処理にて、一方の初期値決定用乱数の更新によって桁上がりが発生したときにのみ、他方の初期値決定用乱数を更新するように構成してもよい。例えば、ステップS18でのランダム1初期値決定用乱数の更新処理(第1初期値用数値データを更新する処理)にて桁上がりが発生したときにのみ、その後のステップS22にてランダム3初期値決定用乱数を更新(第2初期値用数値データを更新する処理)することとし、ステップS18でのランダム1初期値決定用乱数の更新処理にて桁上がりが発生しなかったときには、その後のステップS22ではランダム3初期値決定用乱数の更新を行わないようにすればよい。上記のように構成すれば、一方の初期値決定用乱数の更新による桁上げの有無に応じて、他方の初期値決定用乱数の更新を実行するか否か決定することができ、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期してしまうことを回避することができるため、ランダム1初期値決定用乱数とランダム3初期値決定用乱数とが同期している状態でランダム1およびランダム3の初期値が変更されてしまうことを防止することができる。
上述した実施の形態では、2ms毎に発生するタイマ割込によって起動されるタイマ割込処理で遊技制御処理が実行されているが、メイン処理にて遊技制御処理を実行するとともに、遊技制御処理の余り時間で上述したステップS16〜ステップS23のうちの必要な処理(例えばステップS17,S18,S22)を実行するようにしてもよい。この場合、例えば、メイン処理にて、遊技制御処理が終了したあと、遊技制御処理の開始時から所定期間(例えば2ms)が経過したか否かを計測するためのカウンタを確認するループ処理を実行し、2msが経過していればループ処理を抜け出して次の遊技制御処理を開始するようにすればよい。そして、そのループ処理内で、上述したステップS16〜ステップS23の処理を実行するようにすればよい。さらに、ステップS18でのランダム1初期値決定用乱数の更新処理(第1初期値用数値データを更新する処理)を終了したあと、ステップS22でのランダム3初期値決定用乱数の更新処理(第2初期値用数値データを更新する処理)が開始する前に、ループ処理において所定期間が経過したか否かを確認するようにすればよい。なお、上記の例の場合には、タイマ割込処理によっては乱数更新はなされないため、ループ処理にてステップS16,S19〜S21,S23の処理を行う必要はない。
なお、上述した実施の形態では、低確率時(非確変時)では大当り判定値は「3」、「7」であり、高確率時(確変時)では大当り判定値は「3」、「7」、「79」、「103」、「107」であるとしていたが、大当り判定値は、例えば「3」〜「7」の5個のような連続した複数の数値を含むとしてもよい。
この場合、具体的には、「3」〜「7」の連続した5個の数値を大当り判定値とした場合には、遊技制御手段は、大当り判定処理にて、大当り判定用乱数の値が「3」以上であるか否かと、大当り判定用乱数の値が「7」以下であるか否かとの2回の比較処理によって大当りとするか否かを決定することができる。これに対し、不連続の5個の数値を大当り判定値とした場合には、遊技制御手段は、大当り判定処理にて、大当り判定用乱数の値が5個の大当り判定値にそれぞれ一致するか否かという5回の比較処理によって大当りとするか否かを決定することになる。
上記のように、連続した複数の数値を含む大当り判定値を用いる構成とした場合には、大当り判定用乱数の値がある範囲に入っているか否かを判定することで大当り判定を行うことができるため、大当りとするか否かの判定処理の制御負担を軽減させることができる。
また、上述した実施の形態では、ランダム1の更新範囲に含まれる数値の総数を631個とし、ランダム3の更新範囲に含まれる数値の総数を12個としていたが、各個数(総数)は一例であり、どのような値であってもよい。
上記の各実施の形態のパチンコ遊技機は、主として、始動入賞にもとづいて可変表示部9に可変表示される特別図柄の停止図柄が所定の図柄の組み合わせになると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機であったが、始動入賞にもとづいて開放する電動役物の所定領域への入賞があると所定の遊技価値が遊技者に付与可能になるパチンコ遊技機や、始動入賞にもとづいて可変表示される図柄の停止図柄が所定の図柄の組み合わせになると開放する所定の電動役物への入賞があると所定の権利が発生または継続するパチンコ遊技機であっても、本発明を適用できる。さらに、遊技媒体が遊技球であるパチンコ遊技機に限られず、遊技媒体がコイン(メダル)等のスロット機等においても、乱数を用いて大当り(ビッグボーナス)とするか否かの決定や大当り時の表示図柄を決定する場合には本発明を適用することができる。