以下、実施例に基づいて本発明を更に詳細に説明する。図1〜図4は、実施例に係るスロットマシンSLを図示したものである。本スロットマシンSLは、矩形箱状の本体ケース1と、各種の遊技部材を装着した前面パネル2とが、ヒンジ3を介して連結され、前面パネル2が本体ケース1に対して開閉可能に構成されている(図2)。そして、図1は前面パネル2の正面図、図2はスロットマシンSLの右側面図(a)と平面図(b)、図3は前面パネル2の背面図、図4は本体ケース1の内部正面図を示している。
図4に示す通り、本体ケース1の略中央には、3つの回転リール4a〜4cを備える図柄回転ユニット4が配置され、その下側に、メダル払出装置5が配置されている。各回転リール4a〜4cには、BB図柄、RB図柄、各種のフルーツ図柄、及びリプレイ図柄などが描かれている。メダル払出装置5には、メダルを貯留するメダルホッパー5aと、払出モータMと、メダル払出制御基板55と、払出中継基板63と、払出センサ(不図示)などが設けられている。ここで、メダルは、払出モータMの回転に基づいて、払出口5bから図面手前に向けて導出される。なお、限界量を越えて貯留されたメダルは、オーバーフロー部5cを通して、補助タンク6に落下するよう構成されている。
上記のメダル払出装置5に隣接して電源基板62が配置され、また、図柄回転ユニット4の上部に主制御基板50が配置され、主制御基板50に隣接して回胴設定基板54が配置されている。なお、図柄回転ユニット4の内部には、回胴LED中継基板58と回胴中継基板57とが設けられ、図柄回転ユニット4に隣接して外部集中端子板56が配置されている。
図1に示すように、前面パネル2の上部には液晶表示ユニット7が配置されている。この表示ユニット7には、各種のキャラクタを表示することで遊技動作を効果的に盛り上げている。液晶表示ユニット7の下部には、回転リール4a〜4cに対応する3つの表示窓8a〜8cが配置されている。表示窓8a〜8cを通して、各回転リール4a〜4cの回転方向に、各々3個程度の図柄が見えるようになっており、合計9個の図柄の水平方向の三本と、対角線方向の二本が仮想的な停止ラインとなる。
このような表示窓8aの左側には、遊技状態を示すLED群9が設けられ、その下方には、遊技成果として払出されるメダル数を表示する払出表示部10や、クレジット状態のメダル数を表示する貯留数表示部11が設けられている。
払出表示部10は、7セグメントLEDを2個連設して構成されており、払出メダル数を特定すると共に、何らかの異常事態の発生時には、異常内容を表示するエラー表示器としても機能している。
前面パネル2の垂直方向中央には、メダルを投入するメダル投入口12が設けられ、これに隣接して、メダル投入口12に詰まったメダルを返却させるための返却ボタン13が設けられている。また、クレジット状態のメダルを払出すクレジット精算ボタン14と、メダル投入口12へのメダル投入に代えてクレジット状態のメダルを擬似的に一枚投入する投入ボタン15と、クレジット状態のメダルを擬似的に三枚投入するマックス投入ボタン16とが設けられている。
これらの遊技部材の下方には、回転リール4a〜4cの回転を開始させるスタートレバー17と、回転中の回転リール4a〜4cを停止させるためのストップボタン18a〜18cが設けられている。
遊技者がスタートレバー17を操作すると、通常は、3つの回転リール4a〜4cが、正方向に正常回転を開始するが、内部当選状態を予告するリール演出時には、回転リール4a〜4cの全部又は一部が、変則的に回転した上で正常回転を開始する。
リール演出として、この実施例では、例えば、図12(a)に例示する6種類の変則回転が用意されている。具体的な演出内容は、適宜に変更されるが、例えば、(1)極めてゆっくり正方向に回転して静止するスロー演出、(2)正転と逆転を繰り返した後に、所定時間だけ逆方向に回転して静止する逆回転演出、(3)T1時間だけ正転と逆転を繰り返した後に静止するガタガタ演出1、(4)T2時間だけ正転と逆転を繰り返した後に静止するガタガタ演出2、(5)T2時間だけ正転と逆転を繰り返した後に静止し、更に、極めてゆっくり正転した後に静止するガタガタスロー演出、(6)T2時間だけ正転と逆転を繰り返した後に静止し、更に、所定時間だけ逆転した後に静止するガタガタ逆回転演出、などが用意されている。
そして、このようなリール演出時には、液晶表示(LCD)ユニット7におけるキャラクタ演出や、LEDランプを点滅させるランプ演出や、スピーカを駆動する音声演出の全部又は一部が適宜に選択されて実行される。なお、リール演出の具体的な制御方法などについては更に詳細に後述する。
図1に示す通り、前面パネル2の下方には、メダルを蓄える横長の受け皿19と、払出装置5の払出口5bに連通するメダル導出口20とが設けられている。なお、メダル導出口20の左右にはスピーカSPが配置されている。
図3に示すように、前面パネル2の裏側には、メダル投入口12に投入されたメダルの選別を行うメダル選別装置21と、メダル選別装置21により不適正と判別されたメダルをメダル導出口20に案内する返却通路22とが設けられている。また、前面パネル3の裏側上部には、演出制御基板51、演出インタフェイス基板52、及び液晶制御基板61などを収容する基板ケース23が配置されている。そして、メダル選別装置21の上部には、図1に示す各種の遊技部材と主制御基板50との間の信号を中継する遊技中継基板53が設けられている。
図5は、実施例に係るスロットマシンSLの回路構成を示すブロック図である。図示の通り、このスロットマシンSLは、回転リール4a〜4cを含む各種の遊技部材の動作を制御する主制御基板50と、主制御基板50から受けた制御コマンドに基づいて演出動作を実現する演出制御基板51と、交流電圧(24V)を直流電圧(5V,12V,24V)に変換して装置各部に供給する電源基板62とを中心に構成されている。
主制御基板50は、演出制御基板51に対して、スピーカSPによる音声演出、LEDランプや冷陰極線管放電管によるランプ演出、及び、液晶表示ユニット7による図柄演出を実現するための制御コマンドを出力している。そして、演出制御部51では、主制御基板50から、内部抽選結果を特定する制御コマンド(遊技開始コマンド)受けると、内部抽選結果に対応してアシストタイム当選状態とするか否かのAT抽選を実行している。
また、演出制御部51は、主制御基板50から、リール演出を実行することを示す制御コマンド(フリーズコマンド)を受けた場合には、主制御基板50で実行するリール演出に対応する適宜な演出動作を開始する。
これらの動作のため、演出制御基板51は、演出インタフェイス基板52を通して、液晶制御基板61に接続されており、液晶制御基板61は、液晶表示(LCD)ユニット7における適宜な図柄演出を実現している。
また、演出制御基板51は、演出インタフェイス基板52と共に、LED基板59やインバータ基板60や回胴LEDドライブ基板58を経由して、各種のLEDや冷陰極線管放電管におけるランプ演出を実現している。更にまた、演出制御基板51は、演出インタフェイス基板52を通してスピーカSPを駆動して音声演出を実現している。
なお、演出制御基板51においてAT抽選に当選した後の所定回数のゲーム(AT中)では、小役当選状態において、その図柄を停止ラインに整列できるよう、3つの回転リールの停止順序を遊技者に報知している。
主制御基板50は、遊技中継基板53を通して、スロットマシンの各種遊技部材に接続されている。具体的には、スタートレバー17の始動スイッチ、ストップボタン18a〜18cの停止スイッチ、投入ボタン15,16の投入スイッチ、清算ボタン14の清算スイッチ、前面パネル2の開閉を認識するドアセンサ、上流側センサS0を構成するレバー検知センサ、メダル通過センサS1,S2を構成するフォトインタラプタPH1,PH2、不正メダルの通過を阻止するブロッカーをON/OFF制御するブロッカーソレノイド30、及び、各種LED素子9〜11などに接続されている。
本実施例のメダル選別装置21は、上流側センサS0(レバー検知センサ)と、メダル通過センサS1,S2(フォトインタラプタPH1,PH2)と、ブロッカーソレノイド30と、を内蔵して構成されており、メダル投入口12に近接して最上流位置に上流側センサS0が配置され、ブロッカーを経由して、その下流位置に一対のメダル通過センサS1,S2が近接して配置されている(図6参照)。
上流側センサS0は、具体的には、メダル表面で押圧されて揺動するレバーLVと、レバーLVの揺動に対応してON/OFF動作するフォトインタラプタPHと、を有して構成されている。そして、上流側センサS0は、メダル表面がレバーLVを押圧するメダル通過時にはON状態となり、メダルの通過後にOFF状態に復帰するよう構成されている。
ブロッカーは、上記した上流側センサS0の下流位置に配置され、ブロッカーソレノイド30の通電時にはメダルの通過を許可する導入姿勢となり、非通電時には、メダルの通過を拒否する返却姿勢となる。
図5に示す通り、主制御基板50は、回胴中継基板57を経由して、回転リール4a〜4cを回転させる3つのステッピングモータ、及び、回転リール4a〜4cの基準位置を検出するためのインデックスセンサに接続されている。そして、ステッピングモータを駆動又は停止させることによって、回転リール4a〜4cの回転動作と、目的位置での停止動作を実現している。
また、主制御基板50は、払出中継基板63を通してメダル払出装置5にも接続されている。メダル払出装置5には、メダル払出制御基板55と、メダル満杯センサと、メダル払出センサと、払出モータMとが設けられており、メダル払出制御基板55は、主制御基板50からの制御コマンドに基づいて払出モータMを回転させて、所定量のメダルを払出している。
メダル満杯センサは、補助収納庫にメダルが満杯状態になったオーバーフロー異常を検出し、メダル払出センサは、払出メダル枚数が不足する不足異常や、遊技機による払出動作を伴わない異常払出を検出している。その他、主制御基板50は、外部集中端子板56と、回胴設定基板54にも接続されている。外部集中端子板56は、例えばホールコンピュータHCに接続されており、主制御基板50は、外部集中端子板56を通して、メダルの投入枚数やメダルの払出枚数などを出力している。
また、回胴設定基板54は、係員が設定キーで設定した設定値を示す設定キー信号などを出力している。ここで、設定値とは、当該遊技機で実行される抽選処理の当選確率などを、設定1から設定6まで6段階で規定するもので、遊技ホールの営業戦略に基づいて適宜に設定される。例えば、最高ランクに設定された遊技機は、メダル払出枚数の期待値が最高レベルであるため、遊技者にとって最も有利である。
図6は、主制御基板50の回路構成を図示したものである。図示の通り、主制御基板50は、ワンチップマイコン64と、8bitパラレルデータを入出力するI/Oポート回路65と、ハードウェア的に乱数値を生成するカウンタ回路66と、演出制御基板51などの外部基板とのインタフェイス回路とを中心に構成されている。ここで、ワンチップマイコン64は、Z80相当品のCPUコア64a、ROM、RAMなどの他に、CTC(Counter/Timer Circuit) 64bや、割込みコントローラ64cなどを内蔵している。
CTC64bは、8bitのカウンタやタイマを集積した回路であり、Z80システムに、周期的割り込みや一定周期のパルス出力作成機能(ビットレートジェネレータ)や時間計測の機能を付与するものである。そこで、本実施例では、CTC64bを利用して、Z80CPU64aに1.5mSの時間間隔τでタイマ割込み(図10(a))をかけている。
インタフェイス回路としては、電源回路とのインタフェイス回路67、遊技中継基板53とのインタフェイス回路68と、回胴モータ駆動回路69と、演出制御基板51とのインタフェイス回路70などが設けられている。そして、電源遮断時(電断時)には、インタフェイス回路67を通して、Z80CPU64aに電圧降下割込みをかけている。
インタフェイス回路70は、演出制御基板51に制御コマンドを出力するための8ビットパラレルポートであり、回胴モータ駆動回路69は、回転リール4a〜4cのステッピングモータの駆動信号を生成する回路である。回転リール4a〜4cを回転させる3つのステッピングモータは、各々、2組の駆動巻線を有する二相モータであって、1相励磁と2相励磁とを繰り返す1−2相励磁によって駆動されている(図13(c)参照)。
図13(d)は、1−2相励磁における回転子(矢印)の回転位置を示す原理図である。なお、固定子は、4個であるとし、各々、A、B、Aバー、Bバーの信号Φ4〜Φ1で駆動されていると簡略化している。この原理図において、励磁ポインタPTが0〜7の範囲で循環すると、矢印で示す回転子は、0→1→2→3→4→5→6→7→0の位置に、間欠的に移動することになり、0→2→4→6→0の位置に間欠移動する2相励磁と比較するとステップ角を半分にすることができる。
本実施例では、各回転リールに21種類の図柄が等間隔に描かれており、有効ライン上の図柄を、次の図柄に変更するためのステッピングモータの基準回転角度が、ステップ角θsの24倍に設定されている。ここで、21種類の図柄に対応して、図柄一個分の基準回転角度は、360°/21であるので、ステップ角θsを、θs=360°/21/24としている。
図6に示す通り、主制御基板50のインタフェイス回路68は、遊技中継基板53を経由してメダル選別装置21が接続されている。そして、上流側センサS0のセンサ信号S0は、入力回路IN0に入力され、メダル通過センサS1とメダル通過センサS2のセンサ信号S1,S2は、入力回路IN1、IN2に入力されている。また、ブロッカーソレノイド30の通電状態は、出力回路によって制御されている。
図7は、カウンタ回路66をより詳細に例示した回路図である。図示のカウンタ回路66は、スタートレバー17のON操作を示す始動スイッチ信号SGを受ける入力部24と、2つのD型フリップフロップ25a,25bによる信号取得部25と、ハードウェア乱数の下位8ビット(LOW)を生成するICカウンタ26Lと、ハードウェア乱数の上位8ビット(HI)を生成するICカウンタ26Hとを中心に構成されている。そして、ICカウンタ26H,26Lの各出力端子(QA〜QH)は、データバスを通して、ワンチップマイコン64(CPUコア64a)に接続されている。
入力部24は、抵抗とコンデンサによるローパスフィルタと、シュミットトリガ型のインバータとで構成されている。そのため、負論理の始動スイッチ信号SGは、論理変換されて信号取得部25に供給される。
信号取得部25は、直列接続された2つのD型フリップフロップ25a,25bで構成されている。そして、各クロック端子CLKには、基準パルスΦが供給されており、基準パルスΦの立ち上がりエッヂのタイミングで、D入力端子のデータが取得されてQ出力端子に出力される。したがって、始動スイッチ信号SGがLレベルに変化した後、2つ目の基準パルスΦの立ち上がりエッヂで、各ICカウンタ26L,26Hのロック端子RCLKが、Hレベルに立ち上がる。
基準パルスΦは、専用の発振回路によって、システムクロックとは別に発振させるのが好ましいが、簡易的には、ワンチップマイコン64を動作させるシステムクロックを基準パルスΦに代用しても良い。
2つのICカウンタ26は、いずれも、8ビットのバイナリカウンタと8ビットの出力レジスタとを内蔵している。そして、クロック端子CCLKに供給されるクロック信号を2進カウントする一方、ロック端子RCLKに保持信号を受けると、その瞬間のバイナリカウンタのカウンタ値が、内蔵する出力レジスタに記憶されるようになっている。なお、出力レジスタに記憶されたカウンタ値は、出力イネーブル端子OEがLレベルであることを条件に、外部出力端子(QA〜QH)に出力される。
図示の通り、このカウンタ回路66では、電源電圧値(DC5V)が正常値である限り、基準パルスΦが、NANDゲートを経由して下位ICカウンタ26Lのクロック端子CCLKに供給される。一方、上位ICカウンタ26Hには、下位ICカウンタ26Lの桁上げ信号RCOが供給されている。そのため、2つのICカウンタ26は、全体として16ビットカウンタとして機能することになり、2つの内部カウンタは、0000H〜FFFFH(10進数65535)カウンタ値の間で循環することになる。なお、添字Hは、以下の場合も含め、16進数を意味する。
先に説明した通り、始動スイッチ信号SGがLレベルに変化すると、これに対応して、各ICカウンタ26L,26Hのロック端子RCLKがHレベルに立ち上がり、内部のバイナリカウンタの値が出力レジスタに保持される。一方、各ICカウンタ26L,26Hの出力イネーブル端子OEには、ワンチップマイコン64からチップセレクト信号CS0,CS1が供給されている。そのため、ワンチップマイコン64は、必要時に、チップセレクト信号CS0,CS1をLレベルに変化させることによって、ICカウンタ26L,26Hに内蔵の出力レジスタが保持するデータQA〜QHを取得できることになる。
図8は、電源基板62の回路構成を示すブロック図である。この電源基板62は、交流24Vを受けて脈流電圧に変換する整流部80と、脈流電圧を直流5Vに変換する第1電圧変換部81と、脈流電圧を直流12Vに変換する第2電圧変換部82と、脈流電圧を直流24Vに変換する第3電圧変換部83と、第1電圧変換部81の出力電圧を蓄電する蓄電部84と、電源遮断状態を検出して検出信号RESを出力する電源監視部85とで構成されている。
蓄電部84は、大容量(1ファラッド程度)のコンデンサCと、過電流用の制限抵抗r1、r2と、逆方向電流を阻止するダイオードDとで構成されている。なお、制限抵抗r1は75Ω程度、制限抵抗r2は10Ω程度である。コンデンサCの両端電圧は、バックアップ電源として、ワンチップマイコン64に供給されている。
このバックアップ電源は、ワンチップマイコン64に内蔵されたSRAM(static ram)に供給されており、電源電圧の遮断状態でも、通常7〜8日はRAM(Random Access Memory)の記憶内容を保持するようにしている。なお、RAMの記憶容量は、この実施例では、遊技機のワークエリアとして使用される512バイト程度である。
電源監視部85は、交流入力電圧24Vの電圧レベルと、直流電源電圧5Vの電圧レベルとを監視している。そして、何れか一方のレベルが所定値を下回ると、検出信号RESがLレベルに変化するよう構成されている。瞬停や停電などの異常時には、先ず、交流入力電圧の電圧降下に対応して、検出信号RESが素早く出力される。
この検出信号RESは、主制御基板50のインタフェイス回路67(図6)に供給されて、正論理の電源異常信号ALMと、負論理の電源異常信号ALMバーとなる。そして、正論理の電源異常信号ALMがI/Oポート回路65に供給される一方、負論理の電源異常信号ALMバーは、ワンチップマイコン64の割込み端子NMI(Non Maskable Interrupt)に供給される。したがって、CPUコア64aが割込み許可状態であるか否かに拘らず、負論理の電源異常信号ALMバーに基づいて、電圧降下に対応するNMI割込み処理(図10(b))が開始されることになる。
図6のインタフェイス回路67には電源リセット回路も内蔵されている。そして、電源投入時には、インタフェイス回路67で生成されたリセット信号が、ワンチップマイコン64のリセット端子RST1に供給される。その結果、CPUコア64aがリセット状態となり、ROMの先頭アドレス以降の制御プログラムの実行が開始されることになる。
続いて、主制御基板50のワンチップマイコン64(以下、主制御部50という)が実現する制御動作を説明する。図9〜図10は、主制御部50が実行する制御プログラムを説明するフローチャートである。主制御部50の制御プログラムは、電源投入時に開始される無限ループ状のメイン処理(図9(a))と、CTCからの定期割込みで一定時間τ毎に起動されるマスク可能な(Maskable Interrupt)タイマ割込み処理(図10(a))と、電断時に電源基板62からの検出信号RESで起動されるマスク不能の(Non Maskable Interrupt)NMI割込み処理(図10(b))とで構成されている。
そこで、先ず、図9(a)に示すメイン処理から説明する。電源が投入されると適宜な初期処理(ST1)の後、電断前に実行されていた処理を再開してホットスタートするか、或いは、ステップST2の処理に移行してコールドスタートする。
例えば、営業開始前に係員が設定キーを操作して、抽選処理の当選確率などを設定した場合には、コールドスタート処理となるが、そのような係員の操作が無く、且つ、異常が検出されない場合には、遊技動作をホットスタートするべく、図10(b)に示す電断復帰処理が実行される。なお、この電断復帰処理の実行には、NMI割込み処理(図10(b)参照)で保存されるチェックサム値(ST53)、バックアップフラグの値(ST54)、及び、スタックポインタの値(ST52)が不合理な値でないことが条件となる。
NMI割込み処理(図10(b))において保存された上記の各値が正常値である場合には、スタックポインタの値を復帰させ(ST20)、タイマ割込みについての動作パラメータを設定する(ST21)。
次に、正常値であることが確認されたチェックサム値や、バックアップフラグの値をクリアする(ST22)。これは、その後、電源が遮断されることなくCPUが異常リセットされた場合に、遊技機をコールドスタートさせるためである。
続いて、3つの回転リール4a〜4cの回転動作を各々制御する3つの回胴制御フラグFG1〜FG3のbit2(回胴センサONフラグF2)を全てクリアする(ST23)。図11(b)に示す通り、回胴制御フラグFGjは、各々、1バイト長であり(j=1〜3)、bit7のMSBからbit0のLSBまで、回胴停止中フラグF7、回胴起動中フラグF6、回胴起動済みフラグF5、停止ボタン検出フラグF4、停止命令フラグF3、回胴センサONフラグF2、リール演出中フラグF1、及び、制御中フラグF0となっている。
各フラグF7〜F0の意義は、図11(c)に図示する通りであり、制御中フラグF0は、回転リール4が回転制御動作中であることを示しており、スタートレバー17のON操作による回転開始から、ストップボタン18のON操作による完全停止状態までの間はF0=1となる。リール演出中フラグF1は、回転リールを変則回転させるリール演出中であることをF1=1で示している。回胴起動中フラグF6は、回転リールを正常回転させる初期動作として、回転リールが加速回転中であることをF6=1で示している。回胴起動済みフラグF5は、加速回転を終えた回転リールが定常回転していることをF5=1で示している。
また、停止ボタン検出フラグF4は、遊技者がストップボタン18をON操作したことが検出されるとF4=1となり、停止命令フラグF3は、その後のスベリ制御を経て、所定の図柄を有効ラインに停止させた後にF3=1となる。F3=1の状態では、当該回転リールを回転駆動するステッピングモータに、同一駆動データが繰返し供給されることで、回転リールの回転慣性力に拘らず停止状態が確実に維持される。
回胴停止中フラグF7は、同一駆動データが繰返し供給される停止状態(F3=1)から、ステッピングモータが駆動されない自由状態に変更した場合にF7=1となる。
また、回胴センサONフラグF2は、各回転リールが回転を開始した後、基準位置に達する毎に、インデックスセンサのON動作に対応してF2=1にセットされる(図16のSP60,SP61参照)。この回胴センサONフラグF2は、遊技者による停止操作を受け付けるか否かを規定しており、ステップST23の処理で、回胴センサONフラグF2がゼロクリアされたことで、電源復帰後に回転を再開した回転リールが基準位置に達して、インデックスセンサがON動作するまでは、停止操作が無視されることになる。そのため、回転リールの慣性力によって、電源遮断時に、回転リールの停止位置が、本来の位置からずれた場合であっても、電源復帰後は、正しい停止制御が実現される。
一方、電源復帰後にインデックスセンサがON動作すると、これに対応して、図柄ステップ数や図柄カウンタDUjが初期設定されるので(図16のSP62参照)、仮に、停電時が停止操作を受けた後のタイミングであっても、再設定された図柄ステップ数や図柄カウンタDUjに基づく正確な停止制御が可能となる。
以上のような意義を有する回胴制御フラグFGjの第2ビット(回胴センサONフラグF2)のクリア処理(ST23)が終われば、上記したリール演出中フラグF1の値を判定する(ST24)。回転リール4a〜4cの個数に対応して、3個の回胴制御フラグFG1〜FG3が存在するので、リール演出中フラグF1の3個存在するが、何れか1つでもF1=1であれば、電源遮断時に何れかの回転リールでリール演出中であったことになる。
そこで、そのような場合には、図9(b)の電断復帰処理を終えた後に、中断されたリール演出を再開するのではなく、最初からリール演出をやり直すため、リセットフラグRESETを1にセットする(ST25)。
また、演出制御基板51(以下、演出制御部51という)にも、電源遮断時に実行していた演出動作を再開しないことを指示するべく、送信バッファにキャンセルコマンドをセットして、ステップST33の処理に移行する(ST26)。送信バッファにセットされたキャンセルコマンドは、図10(a)に示すタイマ割込み処理のコマンド出力処理(ST44)において、演出制御部51に送信される。
このように、本実施例では、電源遮断時に中断したリール演出を途中から再開するのではなく、最初からやり直すので、演出制御部51では、例えば、液晶表示ユニット7を使用して、回転リールの変則動作に正しく同期したキャラクタ演出を実行することができ、遊技者に違和感を与えることがない。
以上、電源遮断時が何れかの回転リールがリール演出中であった場合(何れかのF1=1)について説明したが、何れの回転リールにおいてもリール演出が実行されていなかった場合(全てのF1=0)には、次に、3つの回転リール4a〜4cを独立的に制御するリール変数jを1に初期設定する(ST27)。この実施例では、リール変数jを1→2→3と増加させつつ、左回転リール4a→中回転リール4b→右回転リール4cの順番に回転リールを制御している。
そのため、リール変数j=1の場合には、左回転リール4aについて、以下の制御動作が実行される。すなわち、左回転リール4aについての回胴制御フラグFG1について、その制御中フラグF0がFO=1か否かが判定されることで、電断時に左回転リール4aが回転制御動作中であったか否かが判定される(ST28)。そして、制御中フラグF0がF0=1であって、左回転リール4aが回転制御動作中であった場合には、更に、回胴停止中フラグF7、停止ボタン検出フラグF4、停止命令フラグF3が判定される(ST29)。
この場合、制御中フラグF0がF0=1であるにも拘らず、F1=0で且つF7=F4=F3=0である場合とは、電断時が、左回転リール4aが起動動作中(F6=1)であったか、定常回転動作中(F5)であったことを意味する(図11(c)の矢印参照)。そこで、そのような場合には、左回転リール4aの回胴制御フラグFG1を01Hに設定する(ST30)。その結果、起動動作中(F6=1)又は定常回転動作中(F5=1)であった左回転リール4aは、その後、電源遮断前の動作パラメータ(図柄ステップ数、図柄カウンタ、エラータイマなど)に基づく動作を、一旦再開するものの、電源復帰後の初回のタイマ割込みでは、ステップSP10→SP11→SP12→SP34→SP35→SP36→SP53の経路を経て、回転開始時からの回転動作をやり直すことになる。
一方、F7、F4、F3の何れか一以上が1の場合には、その後、電断前の回転制御を再開することになる。F7、F4、F3の何れか一以上が1の場合とは、図11(c)に示す「停止操作検出」以後の領域を意味し、要するに、電断時がストップボタン18aの操作後であることを意味する。そのため、このような停止ボタン検出フラグF4=1場合には、電源復帰後は、左回転リール4aの停止制御動作が再開される。すなわち、左回転リール4aに対して、電源復帰後に、例えば、スベリ制御が再開される。
以上のようにして、左回転リール4aについての電断復帰処理が終われば、次に、リール変数jをインクリメントして(ST31)、中回転リール4bについての電断復帰処理が、上記と同様に実行され、続いて、右回転リール4cについての電断復帰処理が実行される。したがって、電断時に、例えば、中回転リール4bと右回転リール4cが既に停止済みであれば(制御中フラグF0=0)、電断復帰後に各回転リール4b,4cが回転を開始することはなく停止状態を維持する。
何れにしても、インクリメント後のリール変数jが、j=4となれば、電断前の出力ポートのレベルを復帰させた後に全レジスタの値を復帰させて、電断時の実行アドレスにジャンプして遊技動作を再開する(ST33,ST34)。なお、電断時の実行アドレスは、NMI割込み時に、スタック領域に保存されており、スタック領域を指示するスタックポインタは、電断時に保存され(ST52)、電源復帰時に復帰されている(ST20)。
また、電断時がメイン処理の実行中であった場合には、CPU割込み許可状態で処理が再開される。一方、電断時がタイマ割込み処理中であった場合には、CPU割込み禁止状態でタイマ割込み処理が再開されるが、そのタイマ割込み処理を終えると、CPUは、自動的にCPU割込み許可状態となる。したがって、この後は、タイマ割込み処理(図10(a))が定時的に実行されることになり、電断前に回転していた回転リールについては、その回転動作が再開されることになる(ST42,ST46参照)。
以上、図9(b)に示す電断復帰処理(ホットスタート処理)について説明したので、続いて、ステップST2以降のコールドスタート処理について説明する。ステップST2の処理に移行すると、主制御部50では、一連のメインループ処理(ST2〜ST17)を定常的に繰返す。そして、最初に、RAMのワークエリアを適宜にクリアし、また、遊技制御を管理する各種のフラグを適宜に初期設定する(ST2)。次に、そのゲームにおける遊技状態フラグを生成する(ST3)。ここで、遊技状態フラグとは、現在のゲームが、「ボーナスゲーム中」か、「ボーナス内部当選中」か、「通常ゲーム中」か、などの遊技状態を特定するフラグである。
続いて、メダル投入口12から実際に投入されたメダル、及び、投入ボタン15、16の押下によって擬似的に投入されたメダルについての投入メダル管理処理が実行される(ST4)。投入メダル管理処理(ST4)では、遊技者が投入又は擬似投入したメダルを検出して、その投入枚数を判定し、その後、スタートレバー17がON操作されるとサブルーチン処理を終了する。この場合、メダルが1枚投入される毎に、そのことを示す制御コマンド(投入コマンド)が送信バッファにセットされ、図10(a)に示すタイマ割込み処理のコマンド出力処理(ST44)において、演出制御部51に送信される。なお、このタイミングでは、遊技者による清算動作を示す清算コマンドなどが送信されることもある。
スタートレバー17がON操作されてメダル投入管理処理が終わると、スタートレバー17がON操作に対応して、始動スイッチ信号SGがLレベルに変化し、その瞬間のカウンタ値が、各ICカウンタ26H,26Lに内蔵された出力レジスタに保持記憶される(図7参照)。そこで、スタートレバー17がON操作されると、ICカウンタ26H,26Lに記憶されている乱数値が取得される(ST5)。具体的には、ワンチップマイコン64は、チップセレクト信号CS0,CS1をLレベルに変化させて、カウンタ回路66に保持されているカウンタ値を取得し、これが、乱数値RND(数値範囲:0〜65535)としてRAMの該当番地に記憶される。
次に、記憶した乱数値RNDに基づいて内部抽選処理(図柄抽選処理)を実行する(ST6)。この図柄抽選処理では、ボーナス図柄への当選か否か、小役図柄への当選か否か、再遊技を示すリプレイ図柄への当選か否かが決定され、決定された抽選結果を示す制御コマンド(遊技開始コマンド)が送信バッファにセットされ、タイマ割込み処理のコマンド出力処理(ST44)によって演出制御部51に送信される。なお、小役図柄としては、例えば、「チェリー図柄」、「ベル図柄」、「スイカ図柄」、「チャンス図柄」などを例示することができる。
このような当選確率の内部抽選処理(ST6)が終われば、次に、リール演出を実行するか否かを決定するリール演出抽選処理を実行する(ST7)。リール演出抽選処理において選出可能な演出は、内部抽選処理(ST6)の結果に対応して、例えば、図12(a)のように規定されている。先に説明した通り、この実施例では、6種類のリール演出が用意されているが、何れの演出が選出可能かは、内部当選状態に対応して規定されており、例えば、スイカA図柄や、チャンスA図柄、BB図柄の何れかに内部当選状態であれば、所定の当選確率に基づいて、「極めてゆっくり正方向に回転して静止するスロー演出」が選出可能となる。その他、「逆回転演出」、「ガタガタ演出1」、「ガタガタ演出2」、「ガタガタスロー演出」、「ガタガタ逆回転演出」についても同様であり、内部当選状態などに対応して所定確率で選出可能となる。そして、リール演出抽選に当選した場合には、リール演出特定フラグRFの該当ビットが1にセットされる。何ら限定されないが、6種類のリール演出に対応して、リール演出特定フラグRFのBit1〜Bit6の何れかがセットされる。また、リール演出内容を特定する制御コマンド(フリーズコマンド)が送信バッファにセットされ、図10(a)に示すタイマ割込み処理のコマンド出力処理(ST44)において、演出制御部51に送信される。
リール演出抽選(ST7)が終われば、回転リール4a〜4cの回転を開始させるべく、回胴開始設定処理を実行する(ST8)。回胴開始設定処理は、リール演出抽選に当選しているか否かによって動作内容が異なっており、リール演出抽選に当選していない場合には(リール演出特定フラグRF=0)、図11(c)のタイムチャートに示す加速回転動作を開始するべく回胴制御フラグFGをFG=01Hに設定する。そして、その後は、タイマ割込み処理(図10(a))の回胴回転制御処理(ST42)に基づいて、3つの回転リール4a〜4cが加速回転を開始する。
一方、リール演出抽選に当選している場合には(リール演出特定フラグRF≠0)、図11(c)のタイムチャートに示す演出回転(変則回転)を実行する。すなわち、この実施例では、回胴開始設定処理(ST8)において、一連の変則回転動作(リール演出)を管理している。なお、リール演出を実現する具体的な制御方法は後述する。
ところで、図12(a)に示す通り、この実施例では、例えば「ガタガタ演出2」のリール演出が実行された場合には、チェリーA図柄か、チェリーB図柄に内部当選していることになる。そのため、遊技者としては、何れのチェリー図柄に内部当選しているかを推理した上で、目標のチェリー図柄が有効ライン上に揃うよう、停止操作をすることになる。そして、チェリー図柄の回転リールへの配置態様によっては、推理が当った場合であって、且つ、停止タイミングが適切な場合に限り、内部当選状態が実効化されて所定のメダルが払出される。なお、遊技者の推理が外れても、また、停止タイミングの適否に拘らず、内部当選状態が実効化されるようチェリー図柄を配置しても良いのは勿論である。
上記のようなリール演出を経て回転リール4a〜4cが加速回転を開始するか、或いは、リール演出を実行することなく回転リール4a〜4cが加速回転を開始すると、回転開始コマンドを演出制御部51に送信するべく、回転開始コマンドを送信バッファにセットした後、回胴停止処理(ST9)に移行する。
そして、ストップボタン18a〜18cが押されたら、停止受付コマンドを演出制御部51に送信するべく、停止受付コマンドを送信バッファにセットし、内部抽選処理(ST6)の当否結果に沿うように、対応する回転リール4a〜4cを停止制御する(ST9)。すなわち、内部抽選処理(ST6)の結果、何らかの内部当選状態であれば、遊技者の適切な停止操作を条件として、当選結果に合うよう回転リール4a〜4cの図柄を整列させる。但し、遊技者がストップボタンを押すタイミングや、停止操作の順番が不適切である場合には、ハズレ状態の図柄で停止される。この結果、折角の小役当選も無駄になるが、ボーナス当選については、次回のゲーム以降も持ち越される。但し、リール演出が実行された場合には、その示唆に沿って正しい停止操作を実行すれば、メダルの取りこぼしが回避可能となる。
なお、この回胴停止処理(ST9)では、各回転リール4a〜4cについての停止制御が完了する毎に、停止位置を示す制御コマンド(停止結果コマンド)を演出制御部51に送信するべく、停止結果コマンドが送信バッファにセットされる。
このようにして、3回の停止操作と停止制御動作が完了して全ての回転リール4a〜4cが停止したら、有効ライン上に、当選図柄(当選役)が揃ったか否かが判定され、その結果を示す制御コマンド(入賞情報コマンド)を演出制御部51に送信するべく、入賞情報コマンドが送信バッファにセットされる(ST10)。また、当選図柄が揃っている場合には、必要数のメダルが払出されると共に、メダル払出を示す制御コマンド(払出コマンド)を演出制御部51に送信するべく、払出コマンドが送信バッファにセットされる(ST11)。
次に、リプレイ当選状態か否か判定され(ST12)、リプレイ当選状態であれば、再遊技動作の開始処理(ST15)を実行した後、ステップST2に移行する。
リプレイ当選状態でない場合には、現在がボーナスゲーム中か否か判定され(ST13)、ボーナスゲーム中であれば、対応する処理(ST16)を実行してステップST2に移行する。
一方、ステップST13の判定がNOの場合には、ボーナス図柄が揃っているか否か判定され(ST14)、ボーナス図柄が揃っている場合には、ボーナスゲームの開始処理(ST17)を実行した後、ステップST2に移行する。
続いて、図10(a)に基づいて、所定時間毎(τ)に起動されるタイマ割込み処理について説明する。タイマ割込み処理では、CPUのレジスタが退避された後(ST40)、各種スイッチ信号やセンサ信号を受ける入力ポートのデータが取得され記憶される(ST41)。なお、センサ信号には、上流側センサのセンサ信号S0や、メダル通過センサのセンサ信号S1,S2が含まれており、その他、メダル払出センサ、メダル通過センサ、メダル満杯センサ、インデックスセンサ、ドアセンサなどのセンサ信号のデータも含めてメモリに記憶される。
次に、回転リールの回転についての回転制御動作が実行され(ST42)、各種のタイマ変数が更新される(ST43)。回転制御動作(ST42)については、後で詳述する。なお、更新されるタイマ変数には、後述する動作タイマATj(AT1〜AT3)や、モータ出力タイマTMj(TM1〜TM3)が含まれており、各々、ゼロになるまで、タイマ割込み毎にデクリメント処理される。
続いて、送信バッファ(コマンドバッファ)に格納させている制御コマンドについて、コマンド出力処理(ST44)を実行する。ここで、コマンド出力処理とは、送信バッファに設定されている制御コマンドを1バイト毎に演出制御部51に伝送する処理であり、伝送される制御コマンドには、図9(a)に示す各種の制御コマンドが含まれている。
コマンド出力処理(ST44)が終われば、払出したメダルなどの情報をホールコンピュータに伝送し(ST45)、各種ランプの表示動作を更新すると共に、回転リールを駆動するステッピングモータに励磁データΦ1〜Φ4を出力する(ST46)。ここで、表示更新されるランプには、遊技開始LEDや、メダル投入許可LEDや、投入枚数LEDが含まれている。
次に、ステップST40の処理で退避したレジスタをCPUに復帰させて(ST47)タイマ割込み処理を終える。
続いて、図10(b)に示すNMI割込みについて説明する。CPUのNMI端子に、アクティブレベルの電源異常信号ALMバーが供給されると、無条件でNMI割込み処理が起動される。そして、最初に、I/Oポート回路65から正論理の電源異常信号ALMを取得し、これがアクティブレベルであることを確認する(ST50)。ここで、もし、アクティブレベルでない場合には、ノイズなどによる誤動作であると判断して、割込み処理を終える。
一方、電源異常信号ALMがアクティブレベルである場合には、電源電圧が降下していると判断して、CPUのレジスタをスタック領域に退避し、また、スタック領域を特定するスタックポインタSPを所定領域に記憶する(ST51,ST52)。なお、NMI割込み処理が開始された後は、CPUは割込み禁止状態であって、タイマ割込みが実行されないので、ステッピングモータへの駆動データΦ1〜Φ4は、それ以前の駆動データのままで停止状態となる。
次に、そのタイミングにおける各種の出力ポートの出力値を記憶すると共に、RAMの所定領域についてチェックサム演算を実行して、その演算結果(チェックサム値)を所定領域に記憶する(ST53)。また、バックアップフラグをONレベルにセットする(ST54)。なお、チェックサム値やバックアップフラグの値は、電源投入時に、その正当性が判定されることは、図9に関して説明した通りである。
次に、その後のRAMアクセスを禁止するべく、ワンチップマイコンを設定し、出力ポートをOFF状態に設定する(ST55)。その結果、ステッピングモータは、停止状態から非励磁状態の待機状態となる。続いて、所定の時間消費を経た上で、その後の処理をROMのゼロ番地にジャンプさせる。
その結果、電源リセット時(CPUリセット時)と同様の処理を実行することになる。具体的には、電源異常信号ALMが異常レベルである限り、繰り返しCPUを割込み禁止状態に設定し(ST100)、ワンチップマイコンの各部を初期設定する処理を繰り返す(ST101)。
なお、交流電源が瞬間的に低下した後に復帰する瞬低時には、例外的に、電源異常信号ALMが正常レベルに復帰する可能性もあるが、そのような例外時にも、図9(b)の電断復帰処理を経て、NMI割込み前の遊技動作が再開される。
ところで、図10(c)は、NMI割込み処理の終了時、例えば、ステップST56のサブルーチン処理の終了時のスタック領域を図示したものである。図示の通り、スタック領域の下部使用領域(破線矢印の領域)には、NMI割込み時に実行中の処理に至るまでに、ネスティング(Nesting) された複数のサブルーチンの戻り番地が記憶されている。なお、NMI割込みは、任意のタイミングで起動されるので、スタック領域の下部使用領域の内容を確定することはできない。
但し、NMI割込みがリール演出中に起動されたと仮定すると、NMI割込み時には、図12(b)のステップST61〜ST66の処理か、或いは、タイマ割込み処理(図10(a))の何れかが実行されていたと特定することができる。そして、このNMI割込み時の戻り番地に続いて、ステップST51の処理で退避されたレジスタの値が保存され、ステップポインタSPは、レジスタ保存領域の先頭アドレスを指示している(図10(c)の矢印参照)。
したがって、ステップST52の命令では、図10(c)の矢印のアドレス値がRAMの他の記憶領域(ワーク領域)に記憶されたことになる。そして、電源復帰後には、ワーク領域に記憶されたアドレス値がスタックポインタSPに復帰されることで(図9(b)のST20)、図10(c)の状態がCPUに把握可能となり、ステップST51の処理で退避されたレジスタの値が、図9(b)のステップST34の処理でレジスタに戻される。
続いて、リール演出を実現する回胴開始設定処理(ST8)と、その後の回胴駆動処理について、図11〜図16に基づいて詳細に説明する。なお、回転リール4a〜4cの回転動作(変則回転や定常回転)は、図9(a)に示すメインルーチン(ST8〜ST9)と、図10(a)に示すタイマ割込みルーチンとが協働すること(cooperation) で実現されている。
図11(a)に示す通り、回胴開始設定処理(ST8)では、最初に、ウェイトタイマ処理を実行して、ゲーム時間間隔が所定時間を超えるまで待機する(ST35)。ゲーム時間間隔は適宜に設定されるが、例えば、4.1秒に設定されることで、運が悪い場合でも、メダルを過大に消費することが防止される。
続いて、リール演出に当選しているか否か、リール演出特定フラグRFの値を判定する(ST36)。そして、リール演出特定フラグRFがRF=0であって、リール演出に当選していない場合には、各1バイト長の回胴制御フラグFG1〜FG3を、全て01Hに設定して(ST38)、回胴開始コマンドを送信バッファにセットして処理を終える(ST39)。回胴制御フラグFG1〜FG3が01Hに設定されたことで、その後のタイマ割込み処理の回胴回転処理(ST42)では、3つの回転リール4a〜4cについて、図11(c)に示す加速回転動作(図16のSP53以降)が開始される。
一方、リール演出に当選したことで、リール演出特定フラグRFがRF≠0の場合には、リール演出処理を実行する(ST37)。リール演出処理については、最初に、その概要を図12(b)のフローチャートに基づいて説明する。
この実施例では、6種類のリール演出が用意されており(図12(a))、各リール演出の内容は、6種類のリール演出テーブルTr1〜Tr6によって特定されている(図12(c))。そして、どのリール演出テーブルが選択されるかは、リール演出特定フラグRFの該当Bitによって特定されるようになっている。例えば、スイカA図柄、チャンスA図柄、又はBB図柄に内部当選の状態では、リール演出として、「スロー演出」に当選する可能性がある。そして、「スロー演出」に当選した場合には、リール演出特定フラグRFのBit1が「1」にセットされて、リール演出テーブルTr1に規定された「スロー演出」が実現される。
リール演出テーブルTr1〜Tr6は、図12(c)に示す通り、回転リール4a〜4cの動作を具体的に規定するモータ動作テーブルTmと、そのモータ動作テーブルTmによって実行されるリール演出の演出時間とが対応して記憶されている。そして、リール演出の演出時間は、動作タイマATの値によって規定される。例えば、「スロー演出」は、図13(a)に示すSLOW動作と、HOLD動作とで実現され、SLOW動作とHOLD動作の演出時間は、動作タイマATの初期値(3000、500)によって規定されている。
動作タイマATは、タイマ割込み処理において、タイマ割込み周期τ(=1.5mS)毎にゼロになるまでデクリメントされることで、演出時間を管理しているので、結局、「スロー演出」は、4.5秒(=3000×1.5mS)のSLOW動作と、0.75秒(=500×1.5mS)のHOLD動作とで実現されることになる。
なお、どのモータ動作テーブルTmを使用するかは、行ポインタKで規定され、各リール演出テーブルTr1〜Tr6の最終行にNULLデータが記憶されることで、それ以上のリール演出がないことを特定している。リール演出テーブルTr1〜Tr6の行ポインタKで特定されるモータ動作テーブルTmは、例えば、図13(a)に示す5種類であり、各モータ動作テーブルによって、SHAKE動作と、STAY動作と、SLOW動作と、HOLD動作と、REVERSE動作とが特定されている。なお、行ポインタKは、説明の都合上、1から開始されることにしているが、実際には、0から開始するのが好ましい。
各モータ動作テーブルには、モータ駆動態様(ステイタス)と、割込み数TMと、動作数CTとが規定されており、どの動作を実行するかは、行ポインタLで規定されている。ここで、モータ駆動態様は、正方向への回転動作(正転)と、逆方向への回転動作(逆転)と、待機動作と、停止動作と、ループ動作とに区分される。
ループ動作とは、割込み数のTM欄に規定される行番号の位置に戻ることを意味する。また、停止動作とは、二相モータの駆動巻線全てをON駆動すること(全相ON)を意味し、待機動作とは、二相モータの駆動巻線全てをOFF駆動すること(全相OFF)を意味する。本実施例では、停止動作時に、それまでの励磁データΦ1〜Φ4を維持し続けるのではなく、敢えて、全相ON駆動(Φ1〜Φ4=0FH)に移行させるので、停止動作時には、必ず、1ステップ角θs程度の追加移動が生じることになり、結果的に、よりスムーズな停止動作が実現される。また、停止動作の後は、全相OFF駆動(Φ1〜Φ4=00H)して自由回転可能の待機動作に制御している。なお、行ポインタLについても、説明の都合上、1から開始されることにしているが、実際には、0から開始するのが好ましい。
割込み数TMは、励磁データテーブル(図13(b))を管理する励磁ポインタPTの更新周期を規定し、動作数CTは、行ポインタLが規定する該当行の動作を何回実行するかを規定している。図13(b)に示す通り、励磁データテーブルは、回転リールを駆動する二相ステッピングモータを1−2相励磁するための励磁データΦ1〜Φ4を規定しており、駆動データの推移は、励磁ポインタPTの推移(0〜7)に対応して、図13(c)のように変化する。なお、停止動作時には、全相ON駆動とされ(Φ1〜Φ4=0FH)、待機動作時には全相OFF駆動とされる(Φ1〜Φ4=00H)ことは前記した通りである。
モータ動作テーブルについて具体的に説明すると、例えば、モータ動作テーブルSHAKEが使用されるリール演出時には、行ポインタL=1の状態で、6回のタイマ割込みを経て、励磁ポインタPTがインクリメントされ、ステッピングモータが1ステップ角θsだけ正方向に歩進する(正転)。そして、そのような正転動作が一回実行されると(CT=1)、行ポインタLがインクリメントされて、行ポインタL=2の正転動作に移行する。
行ポインタL=2の正転動作時には、3回のタイマ割込みを経て、励磁ポインタPTがインクリメントされ、ステッピングモータが1ステップ角θsだけ正方向に歩進し(正転)、このような正転動作を二回実行すると(CT=2)、行ポインタLがインクリメントされる。行ポインタL=3の正転動作時には、16回のタイマ割込みを経て、励磁ポインタPTがインクリメントされ、ステッピングモータが1ステップ角θsだけ正方向に歩進し(正転)、このような正転動作を1回実行すると(CT=1)、行ポインタLがインクリメントされる。
以上の動作から明らかな通り、一連の正転動作は、回転速度Vで回転リールの回転が開始された後、回転速度が二倍になり、その後、回転速度が6/16Vに低下して動作を終える。その後の逆転動作も同様であり、回転速度Vで回転リールの逆回転が開始された後、回転速度が2V(二倍)の逆回転となり、その後、回転速度が6/16Vに低下して逆転動作を終える。そして、モータ動作テーブルSHAKEでは、最終行に1行目へのループ処理が規定されているので、上記した正転動作と逆転動作と無限ループ状に繰り返されることになる。
なお、このようなSHAKE動作が、リール演出テーブルTr2で選択された場合には、上記した無限ループ状の正転動作と逆転動作とが、動作タイマAT=5000の分だけ繰り返されるので、結局、SHAKE動作の継続時間は7.5秒(=1.5*5000mS)となる。
ところで、図12(c)に示す6種類のリール演出テーブルTr1〜Tr6は、何れも、最終動作としてHOLD動作が実行されるよう構成されている。HOLD動作の具体的内容は、図13(a)に示す通りであり、二相モータの駆動巻線の全てをON駆動する停止動作が所定時間(実施例では、0.75秒=1.5*500mS)だけ継続される。したがって、何れのリール演出を実行した場合でも、リール演出を終えた回転リールは、全相ON駆動された停止状態に拘束され、その後の加速回転動作(回転起動動作)が適切に開始されることになる。
以上の動作を実現するのがリール演出処理(ST37)であり、図12(b)のフローチャートは、その概略を示している。リール演出処理では、先ず、リール演出特定フラグRFに対応してリール演出テーブルTr(図12(c))が選択され、これに対応するキャラクタ演出を特定するフリーズコマンドが送信バッファにセットされる(ST60)。なお、フリーズコマンドは、その後のタイマ割込み(図10(a))時に、演出制御部51に伝送される(ST44)。
また、ステップST60の処理では、リセットフラグRESETがゼロリセットされると共に、リール演出テーブルTr(図12(c))の行ポインタKがゼロに初期設定され、回胴制御フラグFGが03Hに初期設定される(ST60)。
図9(b)に関して説明した通り、リセットフラグRESETは、電断復帰処理を終えた後に、中断されたリール演出を最初からやり直すために使用されるが、ここでは、リセットフラグRESET=0とすることで、リール演出処理のやり直し動作を回避している(ST64参照)。
以上のようにしてステップST60の初期処理が終われば、次に、行ポインタKをインクリメントし、選択されているリール演出テーブルTr(図12(c))のK行目を参照して、図13(a)のモータ動作テーブルの何れかが選択する(ST61)。続いて、モータ動作テーブル用の行ポインタLが1に初期設定され、モータ出力タイマTMが、1に初期設定する(ST62)。
次に、リール演出テーブルTrのK行目を参照して、選択されたモータ動作テーブルによるリール演出の動作時間を、動作タイマATに初期設定し(ST63)、リセットフラグRESETが1でないことを条件に(ST64)、動作タイマATがゼロになるのを待機する(ST65)。リセットフラグRESETは、ゼロに初期設定されており(ST60)、また、初期設定された動作タイマATは、タイマ割込み処理の定期更新処理(ST43)によってゼロになるまでデクリメントされるので、動作タイマATの初期設定値に対応する時間が経過すると、動作タイマAT=0となる。
そこで、動作タイマAT=0となると、K+1行目がNULLデータでないことを条件に、ステップST61の処理に移行させる。したがって、その後は、インクリメントされたリール演出テーブルTrの行ポインタKが示すモータ動作テーブルが規定する動作が実行されることになる。そして、このような動作を繰り返して行ポインタKが更新されると、やがて、K+1行目がNULLデータとなるので、そのタイミングでリール演出を終了することになる(ST66)。
以上、リセットフラグRESET=0である通常時のリール演出動作の概要について説明したので、次に、このリール演出動作中(ST61〜ST66)に電源電圧が遮断された場合について説明する。
この電断時には、NMI割込みによって、スタック領域は図10(c)の保存状態となり、バックアップ電源によって、この保存状態が電断後も維持され、また、RAMのワークエリアに記憶された各動作パラメータについても、その値が維持される。維持される動作パラメータには、行ポインタK、行ポインタL、動作タイマAT、モータ出力タイマTM、使用中のリール演出テーブルTrやモータ動作テーブルTmを特定するフラグ、リセットフラグRESET、回胴制御フラグFGなどが含まれる。なお、回胴制御フラグFGのリール演出中フラグF1(第1ビット)F1と、制御中フラグF0(第0ビット)は共に1である(ST60参照)。
そして、電断後に電源が投入されると、図9のステップST1→ST20からステップST24の処理に移行する。そして、ステップST24の処理によって、リール演出中フラグF1が判定されるが、この時、リール演出中フラグF1がF1=1であることから、リセットフラグRESETが1にセットされる(ST25)。
その後、電断復帰処理(図9(b))を終えて、電断時の処理位置に戻るが、その復帰アドレス位置は、ステップST61〜ST66のループ処理中(図12(b))の何れかの命令の先頭アドレスか、或いは、タイマ割込み処理中(図10(a))の何れかの命令の先頭アドレスであり、特定することのできないランダムなアドレス位置となる。
しかし、復帰アドレス位置が何処であっても、何れ、ステップST64の処理を実行することになるので、ステップST25の処理で1にセットされたリセットフラグRESETに基づいて、ステップST60の処理に移行することになる(ST64)。その結果、リール演出は、完全に初期状態に戻され(ST60)、電断によって中断されたリール演出が最初からやり直されることになる。
また、ステップST60の処理でセットされたフリーズコマンドは、演出制御部51に速やかに送信されるので(ST44)、これを受けた演出制御部51では、リール演出に対応する適宜なキャラクタ演出を、最初からやり直すことになり、互いに関連するリール演出とキャラクタ演出とが同期して開始されることになる。
なお、必ずしも、電断によって中断されたリール演出を、最初から再開させる必要はなく、中断されたリール演出を消滅させても良い。この場合には、2相励磁されるステッピングモータを、全相ON状態の停止制御に設定した上で(ST67)、リール演出を終える。すると、その後は、リール演出(ST37)から、ステップST38の処理(図11(a))に移行して、回胴制御フラグFGiが01Hにセットされることで、後述する起動回転が開始される。なお、電源復帰時に演出制御部51には、キャンセルコマンドが送信されているので(ST26)、主制御部50において、リール演出を消滅させても何の問題も生じない。
ところで、図13(b)に示すリール演出動作は、3つの回転リール4a〜4cが、全く同一の動作を実行する場合である。しかし、本実施例では、演出のバリエーションを豊富化するために、実際には、3つの回転リール4a〜4cを独立的に制御している。すなわち、本実施例では、図12(a)に示すリール演出種別表が、回転リール4a〜4c毎に、最大で3種類が用意されている。したがって、左回転リール4aが「スロー演出」を実行している一方で、中回転リールが「逆回転演出」を実行し、右回転リールが「ガタガタ演出1」を実行するような演出も可能となる。また、3つの回転リールのうち、その一部だけがリール演出を開始し、他の回転リールが停止状態を維持する演出も可能となる。なお、リール演出を実行しない場合には、リール演出種別表に、その旨が明記されている。
図14(a)は、このような動作を可能にする本実施例のリール演出処理(ST37)の詳細を示すフローチャートである。先ず、リール演出特定フラグRFに対応して、3つの回転リール4a〜4cについて、各々のリール演出動作に対応するリール演出テーブルTriを特定する(ST70)。そして、リール演出を実行する場合には、フリーズコマンドを送信バッファにセットする。また、全ての回転リール4a〜4cについてリール演出を実行する場合には、各回転リールについて、行ポインタK1〜K3と、動作タイマAT1〜AT3をゼロに初期設定し、リセットフラグRESETをゼロに初期設定した状態で、回胴制御フラグFG1〜FG3を03Hに初期設定する(ST70)。一方、リール演出を実行しない回転リールについては、その回胴制御フラグFGを00Hに初期設定する。
ここで、設定値03Hは、その回胴制御フラグFGについて、制御中フラグF0と、リール演出中フラグF1とが1にセットされたことを意味し、これからリール演出が開始されることを意味する。一方、設定値00Hは、その回胴制御フラグFGについて、制御中フラグF0がF0=0であることを意味するので、その回転リールは停止状態を維持する(図16のSP11参照)。
以上の初期設定が終われば、この実施例では、左回転リール4a→中回転リール4b→右回転リール4cの順番にリール演出を開始し、各回転リール4a〜4cのリール演出が終了するのを待機する(ST74)。
具体的には、先ず、リセットフラグRESETの値を判定する(ST71)。図12(b)に関して説明した通り、リール演出中に電断した後の電断復帰時であれば、リール演出中フラグF1がF1=1であるので、リセットフラグRESETが1にセットされている(ST26)。そのため、このような場合には、ステップST71からステップST70の処理に戻ることで、中断したリール演出を最初からやり直すことになる。但し、中断したリール演出をキャンセルする場合には、ステッピングモータを、全相ON状態の停止制御に設定した上で(ST75)、リール演出を終える。
一方、ステップST71の判定において、リセットフラグRESET=0である通常時には、左回転リール4aのリール演出中フラグF1を判定する(ST72)。ここで、リール演出中フラグF1=0であれば、左回転リール4aについて、もともとリール演出を実行しないか、或いは、実行したリール演出が完了したことを意味するので、ステップST72’の処理に移行する。一方、リール演出中フラグF1=1であれば、次に、動作タイマAT1の値を判定する(ST73)。動作タイマAT1は、リール演出テーブルTriの特定行(=K1行)のリール演出について、その継続時間を意味している。したがって、動作タイマAT1≠0の場合には、ステップST72’の処理に移行する。
一方、動作タイマAT1=0であって、リール演出テーブルTriの特定行(=K1行)のリール演出が終わった場合や、ステップST70の処理で動作タイマAT1=0に初期設定された直後である場合には、ステップST600の手順で、左回転リール4aについて、リール演出テーブルTri(図12(c)参照)の設定処理を実行する。
具体的には、先ず、リール演出テーブルTriについての行ポインタK1をインクリメントし(ST601)、インクリメント後の行ポインタK1が有効データを特定しているか否かを判定する(ST602)。図12(c)に示す通り、リール演出テーブルTr1の最終行には、無効データNULLが記憶されている。したがって、ステップST602の判定で、NULLデータが検出される場合は、一連のリール演出が終わったことを意味する。そこで、NULLデータが検出された場合には、左回転リール4aの回胴制御フラグFG1について、そのリール演出中フラグF1をゼロクリアしてサブルーチン処理を終える(ST603)。
一方、ステップST602の判定で有効データが検出される場合には、更新後の行ポインタK1が示すモータ動作テーブルTmを特定する(ST604)。次に、モータ動作テーブルTm(図13(a)参照)の行ポインタL1を、1に初期設定すると共に、モータ出力タイマTM1を1に初期設定し、動作数カウンタCT1をゼロに初期設定する(ST605)。
モータ出力タイマTMは、タイマ割込み処理(図10(a))の割込み回数を規定することで、励磁ポインタPTの更新周期を規定している。ここで、励磁ポインタPTの更新タイミングは、ステッピングモータへの励磁データΦ1〜Φ4の更新タイミングを意味するので(図13(b)参照)、結局、モータ出力タイマTMの初期値は、モータの回転速度を規定することになり、要するに、モータ出力タイマTMの初期設定値が大きいほど、モータの回転速度が遅いことになる。
例えば、図13(a)に示すモータ動作テーブルSHAKEにおける1行目の正転動作は、割込み数=6と規定されているので、割込み周期τ(=1.5mS)の6倍(=9ms)の時間を経過して、ステッピングモータが1ステップ角θsだけ回転することになる。先に説明した通り、この実施例では、各ステッピングモータのステップ角θsが、θs=360°/504に設定されているので、結局、動作テーブルSHAKEにおける1行目の正転動作は、θs/(6*τ)≒79°/秒程度の低速回転となる。
また、モータ動作テーブルTm(図13(a))の動作数カウンタCTは、モータ動作テーブルの特定行(=L行)の動作を何回実行するかを規定している。例えば、図13(a)に示すモータ動作テーブルSHAKEにおける2行目の正転動作は、割込み数=3、動作数=2と規定されているので、θs/(3*τ)≒159°/秒程度の回転を、3*2*τ=9mS継続することになる。
この意味において、割込み数は、モータ出力タイマTMの初期設定値としてモータの回転速度を規定し、動作数は、ステップ角θsを単位とする回転角度を規定することになり、また、割込み数*動作数の値は、割込み数で決まる定速回転の継続時間(回転時間)を規定することになる。なお、この実施例では、モータ動作テーブルに、回転速度と回転角度を規定しているが、回転速度と回転時間を規定しているのと同じである。
以上のような意義を有する割込み数や動作数に関連して、モータ出力タイマTM1と動作数カウンタCT1の初期設定処理(ST605)が終われば、次に、リール演出テーブルTri(図12(c)参照)について、その行ポインタK1が示すタイマ値を、動作タイマAT1に初期設定してサブルーチン処理を終える(ST606)。なお、動作タイマAT1は、リール演出テーブルTriの特定行(=K1行)のリール演出について、その継続時間を意味しており、タイマ割込み処理の定期更新処理(ST43)においてゼロになるまでデクリメントされる。
以上のようにして、左回転リール4aについての処理が終われば、中回転リール4bや右回転リール4cについても同様の処理(ST72’〜ST73’,ST72”〜ST73”)を実行する。そして、3つの回転リール4a〜4cについて上記の制御処理が終われば、全ての回転リールについて、その回胴制御フラグFG1〜FG3のリール演出中フラグF1が、全てゼロであるか否かを判定する(ST74)。
先に説明した通り、回胴制御フラグFG1〜FG3のリール演出中フラグF1は、対応する回転リールについてのリール演出が終わったタイミングでゼロクリアされる(ST603)。したがって、ステップST74の処理は、3つの回転リール4a〜4cについてのリール演出中フラグF1が全て終わるまで待機することを意味し、全てのリール演出が終われば、図14(a)に示すサブルーチン処理を終えることになる。
以上、メインループ処理(ST2〜ST17)の回胴開始設定処理(ST8)において実行されるリール演出処理(ST37)について詳細に説明したので、続いて、モータ動作テーブル(図13(a)参照)に基づいて初期設定されたモータ出力タイマTMによって時間管理される回胴回転制御処理(ST42)について説明する。図10(a)に示す通り、回胴回転制御処理(ST42)は、タイマ割込み処理の一部として、所定時間(τ=1.5mS)毎に間欠的に実行され、その詳細は、図15に示す通りである。
図15に示す通り、回胴回転制御処理では、最初に、回転リールを管理するリール変数jを1に初期設定する(SP10)。図14に関して説明した通り、この実施例では、リール変数jを1→2→3と増加させつつ、左回転リール4a→中回転リール4b→右回転リール4cの順番に制御している。
次に、回胴制御フラグFGjの制御中フラグF0の値に基づいて、リール変数jで特定される回転リールが制御動作中か否かを判定する(SP11)。ここで、F0=0であって、制御動作中でない場合には、リール変数を更新するが(SP26)、制御中フラグF0=1の場合には、3つの回転リールについてのリール演出中フラグF1が全てゼロであるか否かを判定する(SP12)。ここで、何れかの回転リールについてリール演出中フラグF1がF1=1であれば、ステップSP13以降の処理を実行するが、3つの回転リールについてのリール演出中フラグF1が全てゼロである場合には、その後の回胴回転制御処理に移行させる。その後の回胴回転制御処理とは、回転開始時の加速回転動作→定常回転動作→停止操作後のスベリ回転動作→停止制御動作などを意味し、図16に関して後述する。
ステップSP12の判定において、何れかの回転リールについてリール演出中フラグF1がF1=1であれば、リール変数jで特定される回転リールについてのモータ出力タイマTMjの値をデクリメントし(SP13)、デクリメント後のモータ出力タイマTMjがゼロか否かを判定する(SP14)。先に説明した通り、モータ出力タイマTMjは、タイマ割込み処理(図10(a))の割込み回数を規定することで、励磁ポインタPTの更新周期を規定している。
そして、デクリメント後のモータ出力タイマTMjがゼロでない場合には、何もしないでステップSP26の処理に移行する。但し、リール演出の開始時や、モータ動作テーブルTmの変更時には、モータ出力タイマTMj=1と初期設定されるので(図14(b)のST605)、そのような場合には、デクリメント後のモータ出力タイマTMjがゼロとなる。そこで、モータ出力タイマTMj=0の場合には、図14(b)のステップST604の処理で特定されているモータ動作テーブルTmについて、そのLj行目を参照して、行ポインタLjが示す行に規定されている割込み数を、モータ出力タイマTMjに設定する(SP15)。なお、行ポインタLjは、図14(b)のステップST605の処理で1に初期設定された後、動作数カウンタCTが満了する毎に、インクリメントされる(図15のSP25参照)。
次に、図14(b)のステップST604の処理で特定されているモータ動作テーブルTmについて、行ポインタLjが示す行に規定されている動作態様(ステイタス)を特定する(SP16)。そして、動作態様が停止状態であると特定される場合には、励磁データΦ1〜Φ4=00Hを出力バッファに設定する(SP17)。そして、出力バッファに設定された励磁データは、タイマ割込み処理(図10(a))のデータ出力処理(ST46)で出力されるが、励磁データΦ1〜Φ4=00Hが出力された場合には、ステッピングモータが自由回転可能な非駆動状態になる。
また、モータ動作テーブルTmにおける行ポインタLjによって、動作態様(ステイタス)が、正転動作又は逆転動作であると特定される場合には、励磁データΦ1〜Φ4を特定する励磁ポインタPTjの値を、インクリメント又はデクリメントして更新する(SP18)。図13(b)に示す通り、励磁ポインタPTjは、0〜7の範囲で循環的に更新される。そして、更新後の励磁ポインタPTjが指示する励磁データΦ1〜Φ4が出力バッファに設定される(SP19)。そして、その後、この励磁データΦ1〜Φ4がデータ出力処理(ST46)において出力されることで、ステッピングモータが正方向又は逆方向に1ステップ角θsだけ歩進することになる。
次に、モータ動作テーブルTmにおける行ポインタLjによって、動作態様(ステイタス)が、待機状態であると特定される場合には、励磁データΦ1〜Φ4=0FHを出力バッファに設定する(SP20)。そして、その後、この励磁データΦ1〜Φ4がデータ出力処理(ST46)において出力されることで、ステッピングモータは、全相が駆動状態となって停止する。なお、初めて全相駆動状態に移行する停止開始時には、ステッピングモータが、それまでの回転位置から微妙に移動することで、円滑な停止動作が担保される。
また、モータ動作テーブルTmにおける行ポインタLjによって、動作態様(ステイタス)がループ指定であると特定される場合には、行ポインタLjを書き替えることで、モータ動作テーブルの開始行を特定した上で、ステップSP15の処理に移行する(SP21)。
一方、ステップSP18〜SP20の処理によって必要な処理が実行された場合には、モータ出力タイマTMj=0となっていること(SP14参照)に対応して、動作数カウンタCTjをインクリメントして更新する(SP22)。
そして、更新後の動作数カウンタCTjが、満了値に一致するか否かを判定し、一致しない場合には、ステップSP26の処理に移行する(SP23)。一方、更新後の動作数カウンタCTjが、満了値に一致する場合には、動作数カウンタを再度ゼロに初期設定し(SP24)、行ポインタLjをインクリメントして更新する(SP25)。なお、動作数カウンタCTjの満了値は、モータ動作テーブルTmの該当行の動作を何回実行するかを規定する値であって、モータ動作テーブルTmにおける行ポインタLjの指示行に規定されている(図13(a)参照)。
以上の処理によって、リール変数jが指定する特定の回転リールについてリール演出の一単位の動作が終わるので、次に、リール変数jをインクリメントして更新し(SP26)、全ての回転リールの処理が終わるまで、ステップSP11〜SP26の処理を繰り返す。先に説明した通り、リール変数jが1→2→3と更新されることで、左回転リール4a→中回転リール4b→右回転リール4cの順番に、リール演出の一単位の動作が実行される。
したがって、次回のタイマ割込み時には、回胴回転制御処理として、再度、リール変数jが1に初期設定されて(SP10)、左回転リール4a→中回転リール4b→右回転リール4cの順番に、リール演出の次の一単位の動作が実行されることになる。このような一単位の動作が繰り返された後、全てのリール演出が完了したか否かは、メインループ処理(ST2〜ST17)中の回胴設定処理(ST8)、より具体的には、リール演出処理(ST37)における図14(b)のステップST602の処理で判定されている。
そして、全てのリール演出が完了したタイミングでは、3つの回胴制御フラグFG1〜FG3のリール演出中フラグF1が、全てゼロとなる(図14(b)のST603参照)。なお、制御中フラグF0は全て1のままである(図14(a)のST70参照)。そのため、全てのリール演出が完了した後は、タイマ割込み処理(図14(a)の回胴回転制御処理)におけるステップSP12の判定がYesとなり、その後のタイマ割込み処理(図10(a))では、通常の回胴回転制御動作(ST42)が実行されることなる。
また、メインループ処理(ST2〜ST17)では、図11(a)に示すリール演出処理(ST37)を終えたことで、回胴制御フラグFG1〜FG3を01Hに設定する(ST38)。また、演出制御部51に回転開始コマンドを伝送するべく、回転開始コマンドを送信バッファに格納した上で(ST38)、回胴開始設定処理(図9のST8)を終える。
ステップST38の処理によって、3つの回胴制御フラグFG1〜FG3がFGj=01Hに設定されるので、回転リール4a〜4cの動作状態を規定する各種フラグ(F7〜F0)のうち、制御中フラグF0だけが1となる。なお、ステップST38の処理は、リール演出を実行するか否かに拘らず実行される。
図16は、3つの回胴制御フラグFG1〜FG3がFGj=01Hに設定された後の回胴回転制御動作を説明するフローチャートである。なお、図16の処理は、図15のフローチャートの処理を含んでおり、ステップSP10〜SP12とステップSP26〜SP27の処理は共通している。また、図15のステップSP13〜SP26の処理は、図16では、リール演出中処理(SP33)としてサブルーチン化されている。
以上を踏まえて図16の処理を説明すると、回胴制御フラグFG1〜FG3がFGj=01Hの状態では、ステップSP34以下の処理が実行され、リール変数jで規定される1バイト長の回胴制御フラグFGjについて、回胴停止中フラグF7と、回胴起動中フラグF6と、回胴起動済みフラグF5と、停止ボタン検出フラグF4と、停止命令フラグF3の値が、この順番に判定される(SP34〜SP38)。
図11(c)に示す通り、回胴停止中フラグF7は、制御対象の回転リールが停止励磁後であるか否かを規定しており、回胴起動中フラグF6は、当該回転リールが回転開始時の加速回転中であるか否かを規定し、回胴起動済みフラグF5は、当該回転リールが加速回転後の定常回転中であるか否かを規定している。また、停止ボタン検出フラグF4は、制御対象の回転リールに対応するストップボタン18のON操作が行われたか否かを規定し、停止命令フラグF3は、当該回転リールについてスベリ制御が完了したか否かを規定している。
先に説明した通り、ここでは、回胴制御フラグFG1〜FG3がFGj=01Hである場合を説明しているので、SP34→SP35→SP36の判定を経て、最初に、励磁ポインタPTjのLSB(Least Significant Bit) をゼロクリアする(SP53)。
図13(b)に示す通り、励磁ポインタPTjは、図13(c)に示す8種類の励磁データΦ1〜Φ4を指示している。図示の通り、本実施例では、回転リール4a〜4cを駆動する3個のステッピングモータを二相モータとし、この二相モータを1−2相励磁している。そして、2組の励磁巻線について、1相励磁と2相励磁とを交互に繰り返しており、励磁ポインタPTjのLSBがLSB=0の場合には2相励磁モード、LSB=1の場合には1相励磁モードとなっている。したがって、ステップSP53の処理を経ることで、励磁ポインタPTjは、2相励磁モードになったことになる。
次に、回胴制御フラグFGjの回胴起動中フラグF6をF6=1とすると共に、回胴センサONフラグF2をF2=0とする(SP54)。なお、ステップST38の処理でゼロに設定した回胴センサONフラグF2を、敢えてF2=0に再設定するのは、定常回転を開始した後であっても(F2=1)、回転異常時にはステップSP53以下の処理を再実行するためである。
ステップSP54の処理が終われば、図柄ステップ数カウンタを24に初期設定する(SP55)。この実施例では、回転リールに描かれた図柄を一個移動する(基準回転角度だけ回転させる)ために、ステッピングモータを24ステップ駆動するので、この動作に対応して、図柄ステップ数カウンタをゼロまでデクリメントすることで(SP63,SP64)、各図柄の回転移動を把握している。
次に、各々1バイト長のエラータイマETjと、図柄カウンタDUjをゼロに初期設定し、行ポインタNjと、モータ出力タイマTMjを1に初期設定する(SP56)。ここで、エラータイマETjは、励磁ポインタPTjを所定回数(例えば21*24+α)更新したにも拘らず、インデックスセンサによって回転リール4の基準位置を検出できない回転異常(回転停止状態)を検出するために使用される。
また、図柄カウンタDUjは、回転リールに描かれた各図柄の現在位置を把握するために使用される。すなわち、インデックスセンサがON動作する毎に、図柄カウンタDUjをゼロクリアし(SP62)、ステッピングモータを24ステップ駆動する毎に、つまり、図柄一個分(基準回転角度)の回転毎に、図柄カウンタDUjをインクリメントすることで(SP66)各図柄の現在位置を把握している。
また、行ポインタNjは、回転開始時の加速回転を実現するタイムテーブルTBL(図16の上段参照)の使用欄を特定するために使用される。なお、説明の都合上、行ポインタNjの初期値を1にしているが、実際にはゼロに初期設定するのが好適である。モータ出力タイマTMjは、割込み回数をカウントして、ステッピングモータの歩進タイミングなどを規定する用途で使用される。
以上の初期設定が終われば、ステップSP43に移行して、モータ出力タイマTMjをデクリメントし、デクリメント後のモータ出力タイマTMjの値がゼロか否かを判定する(SP44)。先に説明した通り、回転起動時には、MYj=1に初期設定されているので(SP56)、続いて、タイムテーブルTBLについて、行ポインタNjが指定するタイマ値を取得して、モータ出力タイマTMjに設定し(SP45)、行ポインタNjをインクリメントして更新する(SP46)。初期設定されたモータ出力タイマTMj(SP45参照)は、その後の割り込み処理毎にデクリメントされ、TMj=0となるまで、ステップSP45の処理移行が待機される。
ところで、図16に示すタイムテーブルTBLは、回転起動時の回転リールの加速回転動作を規定しており、割込み周期τ毎に更新される行ポインタNjによって(SP46)、TMj=0のタイミングで、モータ出力タイマTMjを再設定することで(SP45)、ステッピングモータの加速回転を実現している。また、1相駆動と2相駆動とが交互に繰り返される1−2相駆動において(図13(c)参照)、回転トルクに劣る1相駆動を一割込み周期τで終えて、回転トルクに勝る2相駆動に移行させることで、円滑な加速回転を実現している。
すなわち、図示のタイムテーブルTBLでは、タイマ値を、最小値→回転待機数→最小値→回転待機数→最小値→回転待機数・・・・と推移させることで、一瞬の1相励磁を挟んで2相励磁を繰り返すことで回転リールの加速回転を実現している。なお、実施例では、最小値が割込み周期τ(=1.5mS)に対応する1であり、回転待機数は1より大きな値である。
また、実施例では、回転待機数を段階的に減少させることで、極めて遅い低速回転から漸次、回転速度を高めている。因みに、回転初期は、2ステップ角2*θsを、時間34*τを要して回転させており、回転角速度は、θs/17/τ(≒28[°/S])である。そして、その後の回転角速度を、θs/4.5/τ → θs/2.5/τ → θs/2/τ → θs/1.5/τと増加させることで、定常回転角速度θs/τ(≒476[度/S])に向けた円滑な加速動作が実現されている。なお、タイムテーブルTBLの最終欄には、全相励磁(Φ1〜Φ4=0FH)の停止動作を実現する極めて大きな数値(151)が格納されている。
このような構成に対応して、ステップSP47では、インクリメント後の行ポインタNjの値に基づいて、起動時の加速回転制御を終えたか否かを判定している。そして、加速回転制御中であれば、ステップSP48の処理をスキップして励磁ポインタPTjをインクリメントし(SP49)、インクリメント後の励磁ポインタPTjに対応する励磁データΦ1〜Φ4を出力バッファに設定する(SP50)。そして、リール変数jを更新して、次の回転リールについて上記と同様の処理を行う(SP26)。
ところで、励磁ポインタPTjは、その回転リールの回転開始時に、LSBがゼロにされているので(SP53)、ステップSP49の処理でインクリメントされた後の励磁ポインタPTjは、そのLSBが必ず1となっている。したがって、各回転リールは、必ず、1相励磁状態で回転が開始されることになり、円滑な回転起動動作が担保される。
このようにして全ての回転リール4a〜4cについての初回動作が終わると、次のタイマ割込みでは、回転起動中フラグF6がF6=1であることから(SP54参照)、ステップSP34→SP35→SP43の処理が実行される。そして、初回の設定処理(SP45)でモータ出力タイマTMjに設定されるタイマ値が1であることから、ステップSP44→SP45→SP46→SP47→SP49の処理を経て、2相励磁用の励磁データΦ1〜Φ4が出力バッファに設定される(SP50)。
そして、ステップSP45の処理でモータ出力タイマTMjに設定されたタイマ値に対応する割込み回数を経ると、やや回転速度の上がった次の駆動動作に移行する。なお、次の回転角速度は、θs/4.5/τである。各回転リールについて、その後の処理も同じであり、行ポインタNjの増加に対応して、回転角速度が、θs/4.5/τ → θs/2.5/τ → θs/2/τ → θs/1.5/τと漸次増加する。
そして、ステップSP46の処理によって、行ポインタNjが最終行(=26)に達すると、回胴起動中フラグF6をクリアする一方、回胴起動済みフラグF5を1に設定し、行ポインタNjが指示するタイマ値(=151)を、モータ出力タイマTMjに設定する(SP48)。なお、回胴起動中フラグF6=0、回胴起動済みフラグF5=1と設定されてことにより(SP48)、その後、回転異常が生じない限り、モータ出力タイマTMjの値は、停止操作後に実行されるステップSP40の処理まで変化することはない。
回胴起動中フラグF6=0、回胴起動済みフラグF5=1と設定された後のタイマ割込み処理では、毎回、ステップSP34→SP35→SP36→SP37→SP57の経路で判定処理が進む。そして、励磁ポインタPTjのLSBの値に基づいて、1相励磁か2相励磁かが判定され(SP57)、もし1相励磁であれば、1バイト長のエラータイマETjをインクリメントし(SP58)、インクリメント後のエラータイマETjの値が所定値(1バイト長の最大値255)を超えたてオーバーフローしたか否かを判定する(SP59)。
先に説明した通り、本実施例の回転リール4は、順次更新される励磁データΦ1〜Φ4を、21*24回(=504)受けて一回転するよう設定されている。そのため、励磁ポインタPTjのLSBについて、LSB=1の状態が252回(=504/2)検出されたタイミングでは、回転リールは一回転しているはずである。また、本実施例では、インデックスセンサがON状態となる毎に、エラータイマETjをゼロクリアしているので(SP61)、本来、エラータイマが252を超えることはない。
そこで、エラータイマETjがオーバーフローして、再度ゼロになった場合には、回転リールが正常に回転していないと判断して、ステップSP53の処理に移行させる。その結果、その後は、タイムテーブルTBLに基づく起動回転が再実行されることになる。その起動回転は、駆動トルクが高い超低速回転(回転角速度28°/S)から開始されるので、モータ異常が自動回復することを期待することができる。
一方、ステップSP59の判定で、エラータイマETj≠0と判定される場合には、インデックスセンサがON状態に変化したか否かを判定する(SP60)。インデックスセンサのセンサ出力は、タイマ割込み毎に取得されており(図10のST41)、OFF状態からON状態に変化したか否かが判定される。そして、回転リールが基準位置を通過して、インデックスセンサがON状態に変化している場合には、エラータイマETjをゼロクリアし、回胴センサONフラグF2を1にセットする(SP61)。また、図柄ステップ数カウンタを24に初期設定すると共に、図柄カウンタをゼロクリアしてステップSP49の処理に移行させる(SP62)。
一方、インデックスセンサがON状態に変化していない場合には、24に初期設定されている図柄ステップ数カウンタをデクリメントし(SP63)、これがゼロであるか否かを判定する(SP64)。先に説明した通り、図柄ステップ数カウンタは、回転リール4が一図柄分だけ回転したか否かを判定するものであり、基準回転角度(=24*θs)だけ回転したと判定される場合には、図柄ステップ数カウンタを24に再設定し(SP65)、図柄カウンタDUjをインクリメントする(SP66)。そして、インクリメント後の図柄カウンタDUjが21に達した後には、これをゼロクリアすることで、回転リールに描かれ図柄を常時把握できるようにしている(SP67〜SP68)。すなわち、回転リールが基準位置に達すると、インデックスセンサがON動作して、図柄カウンタDUjがゼロとなり、その後、一図柄分の基準回転角度の回転毎に図柄カウンタDUjがインクリメントされるので、結局、図柄カウンタDUjは、基準位置(インデックスセンサ位置)に存在する図柄の図柄番号0〜20を、リアルタイムに特定していることになる。
ステップSP68やSP62の処理を終えた後は、励磁ポインタPTjを更新して、更新後の励磁ポインタPTjが示す励磁データΦ1〜Φ4が出力バッファに設定された後に(SP49〜SP50)、別の回転リールについての回転制御処理に移行する(SP26)。以上の通り、回胴起動中フラグF6=0、回胴起動済みフラグF5=1と設定された後のタイマ割込み処理では、タイマ割込み毎に励磁ポインタPTjが更新されることで、励磁データΦ1〜Φ4が更新されるので、各回転リール4a〜4cは、角速度θs/τで定常回転することなる。なお、この定常回転では、1相駆動と2相駆動とが同一時間間隔(τ)で繰り返される。
このような定常回転を繰り返していると、やがて、遊技者がストップボタン18をON操作することで、ON操作されたストップボタンに対応する回転リールの停止信号検出フラグF4がセットされる。なお、この状態では、回胴起動済みフラグF5はF5=1のままである。
そのため、その後のタイマ割込み処理では、毎回、ステップSP34→SP35→SP36→SP37→SP38の経路で判定処理が進む。そして、停止命令フラグF3の値が判定される。ストップボタン18のON操作後は、内部抽選状態の当り図柄を有効ラインに停止させる制御、或いは、外れ図柄を停止させる制御が、メイン処理(図9(a))の回胴停止処理(ST9)において実行される。そして、停止させるべき図柄が有効ラインに達した段階で、停止命令フラグF3がF3=1にセットされるよう構成されている。なお、高速回転である定常回転中の回転リールの慣性力を考慮して、回転停止までに余裕のあるタイミングで停止命令フラグF3=1となる。
そのため、停止命令フラグF3=1となっている場合には、回転リールを実際に停止して良いか否かを図柄ステップ数カウンタや図柄カウンタDUjから判定して(SP69)、実際の停止タイミングまで待機する(SP63以下参照)。そして、停止タイミングに達した場合には、停止させるべき回転リールの回胴制御フラグFGjについて、その回胴停止中フラグF7を1にセットして、ステップSP39に移行する(SP70)。
ステップSP39では、最初にモータ出力タイマTMjの値がゼロか否かを判定する。先に説明した通り、モータ出力タイマTMjには、起動回転終了時に、タイムテーブルTBLの最終タイマ値(=151)が設定されて、その値が維持されている。そのため、次に、モータ出力タイマTMjをデクリメントして、ステッピングモータを全相ON駆動するため、励磁データΦ1〜Φ4を0FHに設定する。
続いて、モータ出力タイマTMjの値がゼロか否かを判定し(SP41)、TMj≠0であれば、別の回転リールについて回転制御処理を実行すべく、ステップSP26の処理に移行する。
タイムテーブルTBLの最終タイマ値は、151であったことから、励磁データΦ1〜Φ4を0FHに設定する全相ON駆動は、151回のタイマ割込みで継続されることになり、結局、151*τ(≒0.2秒)の間、ステッピンモータの駆動巻線の全相が励磁され続けることで、回転リールの停止状態を維持することになる。本実施例では、このような全相ON駆動を採るために、高速回転する定常回転時の慣性力に拘らず、回転リールを目的位置に停止させ静止させることができる。
なお、このような全相ON駆動を開始した後、タイマ割込みでは、ステップSP10→SP11→SP12→SP34→SP39の経路を経て、モータ出力タイマTMjがデクリメントされる(SP40)。そのため、やがて約0.2秒後には、モータ出力タイマTMj=0となり、その時には、制御中のステッピングモータを全相OFF駆動するべく、励磁データΦ1〜Φ4を00Hに設定し、回胴制御フラグFGjの制御中フラグF0をゼロに設定する(SP42)。その結果、その回転リールについては、非駆動状態に移行して完全停止状態となる(図11参照)。なお、回胴制御フラグFGjの制御中フラグF0がF0=0となったので、その後のタイマ割込み処理の回胴回転制御処理(ST42)では、当該回転リールについて制御処理が実行されることはない。
以上の通り、本実施例では、3つの回転リールに対応して各1バイト長の回胴制御フラグFG1〜FG3を用意し、起動回転時(加速回転開始時)から完全停止時までの回転動作を円滑に制御しており、むやみにメモリ領域を浪費することがない。また、メモリ領域を浪費することなく、リール演出動作を可能にする構成を実現しており、しかも、3つの回転リールを独立して制御することもでき、遊技者をより効果的に盛り上げることができる。
また、回転開始時の起動回転や、回転停止時の停止動作を工夫することで、メモリ領域を浪費することなく、円滑な過渡動作を実現している。更に、回転異常時や、停電からの復帰時にも、回転リールの円滑な回転動作が担保されている。
以上、本発明の実施例について詳細に説明したが、具体的な記載内容は特に本発明を限定するものではない。例えば、実施例では、メイン処理とタイマ割込み処理で処理内容を分担してリール演出を実現しているが、分担内容は、適宜な変更が可能である。
図17〜図18は、リール演出を実現する別の手法を例示したものであり、ここでは、リール演出の起動処理だけをメイン処理(図9)の回胴開始設定処理(ST8)が担当し、その後のリール演出については、全てタイマ割込み処理(図10(a))の回胴回転制御処理(ST42)が担当している。
以下、具体的に説明すると、図17の実施例では、回胴開始設定処理(ST8)におけるリール演出処理(ST37)において、初期設定処理(ST60A〜ST60B)の後は、リセットフラグRESETがゼロであることを条件に(ST67)、全ての回転リールについてリール演出中フラグF1がゼロになるのを待機する(ST68)。
そして、電断復帰時にリセットフラグRESETが1にセットされたような場合には、ステップST67からステップST60Aに移行し、初期設定処理を再実行することで、リール演出を最初からやり直す。なお、電源遮断によって中断したリール演出をキャンセルしても良いのは先の実施例の場合と同様である(ST69参照)。
ところで、初期設定処理では、リール演出特定フラグRFに対応したリール演出テーブルTriを、3つの回転リール4a〜4cについて特定する(ST60A)。次に、リール演出を実行することを明示するべく、回胴制御フラグFG1〜FG3を03Hに設定し、動作タイマAT1〜AT3と、行ポインタK1〜K3と、リセットフラグRESETとをゼロクリアする(ST60B)。なお、FG1〜FG3=03Hが、制御中フラグF0と、リール演出中フラグF1とが1であることを意味することは先の実施例の場合と同じである。
この初期設定によって、その後のタイマ割込み処理(図10(a))の回胴回転制御処理(ST42)では、図18の動作を実行することで、リール演出が実行される。そして、全てのリール演出が終われば、回胴回転制御処理(ST42)において、リール演出中フラグF1が全てゼロとなるよう、構成されている(図18のSP86参照)。したがって、ステップST60Bの初期設定を終えた後は、リセットフラグRESETがゼロであることを条件に(ST67)、全ての回転リールについて、リール演出フラグF1がゼロになるのを待機することになる(ST68)。
タイマ割込み処理に含まれる回胴回転制御処理(ST42)は、具体的には、図18に示す通りであり、リール変数jが特定する回転リールについて、その制御中フラグF0がF0=1であって(SP81)、且つ、3つの回転リール4a〜4cについて、何れかのリール演出中フラグF1がF1=1であることを条件に、ステップSP83〜SP89の処理が実行される。なお、3つの回転リール4a〜4cについて、全てのリール演出中フラグF1がF1=0である場合、つまり、全くリール演出を実行しないか、開始したリール演出が全て終了した場合には、他の回胴回転制御処理に移行する(SP82)。したがって、この実施例でも、図16の実施例の場合と同様に、特定の回転リールだけを使用してリール演出を実行することも可能となる。
ステップSP83の処理では、リール変数jが特定する回転リールについて、リール演出中フラグF1がF1=1であるか否かを判定し、F1=1であれば、動作タイマATjの値を判定する(SP84)。動作タイマATjは、図17(a)や図17(b)に示すリール演出処理(ST37)において、ゼロに初期設定されているので(図17(b)のST60B)、動作開始時であれば、リール変数jが特定する回転リールについて、リール演出のテーブル設定処理が実行されることになる(SP85)。
このテーブル設定処理(SP85)は、図14(b)の処理と同じであり、リール演出テーブルTriについての行ポインタK1をインクリメントし(ST601)、インクリメント後の行ポインタKjが有効データを特定しているか否かを判定する(ST602)。そして、リール演出テーブルTr1の最終行に記憶されているNULLデータが検出される場合は、その回転リールについてのリール演出中フラグF1をゼロクリアしてサブルーチン処理を終える(ST603)。
一方、ステップST602の判定で有効データが検出される場合には、更新後の行ポインタKjが示すモータ動作テーブルTmを特定する(ST604)。次に、モータ動作テーブルTmの行ポインタLjを、1に初期設定すると共に、モータ出力タイマTMjを1に初期設定し、動作数カウンタCTjをゼロに初期設定する(ST605)。次に、リール演出テーブルTri(図12(c)参照)について、その行ポインタKjが示すタイマ値を、動作タイマATjに初期設定してサブルーチン処理を終える(ST606)。
以上のようにして、ステップSP85のサブルーチン処理が終われば、次に、テーブル設定処理において、リール演出中フラグF1をゼロクリアされたか否かを判定し、リール演出中フラグF1がF1=1であれば、リール演出中処理(SP87)に移行してリール演出を開始又は続行する(SP86)。一方、リール演出中フラグF1がF1=0であれば、当該回転リールについては、リール演出が終わったことを意味するので、ステップSP87のリール演出中処理(SP87)をスキップして、リール変数jを更新する(SP88)。
なお、ステップST606の処理で初期設定された動作タイマATjは、タイマ割込み毎に定期更新処理(ST43)においてデクリメントされるので、動作タイマATjがゼロになるまでは、行ポインタKjが特定するモータ動作テーブルTmに規定されたリール演出中処理(SP87)の実行を継続する(SP84)。また、ステップSP87のリール演出中処理(SP87)は、図19に示す通りであり、図15のステップSP13〜SP25の処理と同じである。
ところで、上記した各実施例では、電源異常時にはNMI割込み処理(図10(b))を実行していた。しかし、必ずしも、このような構成に限定されるものではなく、タイマ割込み処理(図10(a))において電源異常信号を監視するのも好適である。
図20は、このような場合の実施例であり、データ出力処理(ST46)に続いて、電断監視処理(ST47)を実行している。なお、電断監視処理(ST47)は、タイマ割込み処理の何処に配置しても良い。
タイマ割込み処理中のいずれの箇所に配置した場合でも、電断監視処理(ST47)の内容は、NMI割込み処理(図10(b))の内容とほぼ同じである。但し、タイマ割込み処理中に実行される電断監視処理(ST47)では、レジスタを保存する必要がないので、レジスタ退避処理(図10(b)のST51)を除く、ステップST50〜ST56の処理を実行している(図20(b)参照)。
図20(c)は、参考のために、ステップST56の処理終了時のスタック領域の内容を図示したものである。図示の通り、スタック領域には、タイマ割込み処理(図20(a))に先行してネスティングされたサブルーチンの戻り番地と、タイマ割込み処理後の戻り番地と、ステップST40の処理で退避されたレジスタと、電源異常信号を検出することなく電断監視処理(ST47)を終えた後の戻り番地とが、その順番にPUSH処理(格納)されている。なお、電断監視処理(ST47)後の戻り番地とは、図示のプログラム構成の場合には、レジスタ復帰処理(ST48)の先頭アドレス(AA番地)に他ならない。
この実施例でも、電源復帰後には、図9(b)と同様の電断復帰処理が同様に実行される。但し、この実施例の電断復帰処理では、電断監視処理(ST47)にレジスタ退避処理が存在しないことに対応して、レジスタ復帰処理(ST34)が存在しない。すなわち、図9(b)に示すステップST34の処理が不要となる。
そして、リール演出中に電源が遮断した場合には、電源復帰後は、レジスタ復帰処理(ST34)が存在しない電断復帰処理(図9(b))を経て、図11や図17に示すリール演出処理(ST37)に復帰する。なお、この点は、リセットフラグRESETを使用する限り、NMI割込みによって電源異常に対応するか(図10(b))、それとも、タイマ割込み処理時に電源異常を監視するか(図20(b))に拘らず同じである。
このように、ここまでの実施例では、もっぱら、リセットフラグRESETを使用することで、電断復帰後に、リール演出を再開またはキャンセルしていた。しかし、タイマ割込み処理において電源異常を監視する限り(図20(b)参照)、リセットフラグRESETを使用する構成や、これに類する構成は、必ずしも必須ではない。
図21(b)は、リセットフラグRESETを不要にしたリール演出処理(ST37)を例示するものであり、図17(b)のリール演出処理に対応している。なお、図21(a)は、図17(a)と同一であり、説明の都合上、併記している。
図17(b)と図21(b)を対比すれば明らか通り、ステップST60Aの処理は、図17(b)のステップ60Aと同じである。但し、図21(b)のステップST60Bの処理では、リセットフラグRESETの設定処理が存在せず、また、これに対応して、図21(b)の構成では、図17(b)のステップST67の判定処理が存在しない。
そして、リール演出処理におけるステップST68の処理は、具体的には、図21(c)や図21(d)のように構成される。なお、主制御部50のCPUコアは、Z80CPU相当であるので、これに対応するニーモニックで表示している。また、図示のプログラムにおいて、F1a、F1b、F1cは、各々、左回転リール4a、中回転リール4b、右回転リール4cのリール演出中フラグであり、具体的には、各フラグF1a〜F1cの格納アドレスを示している。また、「LD HL,****」の命令における「****」は、連続配置された3つのリール演出中フラグF1a、F1b、F1cの先頭アドレス(F1aの格納アドレス)を示している。
以上を踏まえて、リール演出中に電源異常が生じた場合を説明する。図21(b)のようにリール演出処理(ST37)が構成されている場合には、図21(c)や図21(d)のように構成されたステップST68の処理実行中に、ランダムなタイミングでタイマ割込みが生じる。そして、その時の電源異常信号が異常レベルであれば、図20(b)の処理を経て、遊技機が電断する。
この電断後の状態を図20(c)に関して確認すると、スタック領域には、ネスティングされたサブルーチンの戻り番地として、最上位にBB番地が記憶され、これに続いて、リール演出処理後の戻り番地、タイマ割込み後の戻り番地、ST40の処理で退避されたレジスタ、及び、電断監視処理後の戻り番地(AA番地)が記憶される。なお、BB番地は、図21(a)に示すステップST38の処理の先頭アドレスであり、タイマ割込み後の戻り番地は、図21(c)や図21(d)に示すステップST68の処理の何れかのアドレスである。
そして、リセットフラグRESETを使用しない電断復帰処理は、例えば、図22(a)のように構成される。図22(a)の電断復帰処理では、リール演出中フラグF1の何れかが1であると(ST24)、図21のステップST60AとST60Bの場合と同様の初期設定処理を実行した上で(ST25A,ST25B)、ステップST33の処理に移行する。
すると、電断前の出力ポートが復帰された後(ST3)、POP命令が実行されることで、20(c)に示すスタック領域の最上位に記憶されているAA番地に処理が移行し、レジスタ復帰処理(ST48)の実行によってCPUのレジスタが電断前の状態に復帰する。
なお、電断前に復帰するCPUのレジスタには、CPUのフラグレジスタ、Aレジスタ、Bレジスタ、Hレジスタ、及びLレジスタが含まれているのは勿論である。そして、タイマ割込み処理のRETI命令が実行されることで、割込み許可状態で、図21(b)のステップST68の処理に移行する。
ステップST68の処理は、図21(c)や図21(d)に例示する無限ループ処理であるが、電断復帰後に、動作パラメータが全て初期状態に戻されているので(ST25A,ST25B)、その後のタイマ割込みの回胴回転制御処理(ST42)では、リール演出を最初からやり直されることになる(図18参照)。
なお、この実施例では、タイマ割込み処理(図10(a))において電源異常を監視し、しかも、リール演出中は、図21(b)のステップST68の処理でリール演出中フラグF1を監視しているので、仮に、リール演出中に電断しても、電断復帰後に、回胴回転制御処理(ST42)の動作途中から処理が再開されるおそれがなく、プログラムの暴走や誤動作が確実に防止される。
これに対して、NMI割込みによって電源異常に対応する場合や、図12(b)の構成を採る場合には、例えば、Kj=0の状態で、図12(b)のステップST61や、図18(b)のステップST604の処理を実行すると、プログラムが暴走するおそれがある。一方、Kj←Kj+1の処理位置を変更すると、リール演出テーブルTrの第一行目の動作がスキップされるおそれがある。
以上、電断によって中断したリール演出を最初からやり直す構成について説明したが、中断したリール演出を再開することなく消滅されるには、図22(b)の構成を採ることができる。
図22(b)に示す通り、リール演出中フラグF1の何れかが1であると(ST24)、全てのリール演出中フラグF1a〜F1cをゼロクリアし(ST25)、キャンセルコマンドをセットした上で(ST6)、ステップST33の処理に移行する。なお、図9のステップST34に対応する処理は存在しない。
そして、復帰したステップ68の処理では、F1a=F1b=F1c=0であることから、リール演出処理(ST37)が終了し、図21(a)のステップST38の処理に移行する。なお、この場合には、リール演出処理(ST37)を終える前に、ステッピングモータの駆動巻線の全相をON駆動して拘束された停止状態を生成しておくのも、その後の起動処理のためには好適である。
以上、各種の実施例を説明したので、最後に、本発明の実施態様を整理しておく。リール演出処理(ST37)の具体的構成は、予告演出を実現する一連の変則動作の進行を全てメイン処理が担当する図12(b)の構成(構成A)と、初期設定だけをメイン処理が担当し、その後の一連の変則動作の進行をタイマ割込み処理が担当する図17(b)の構成(構成B)とに大別される。
上記何れの構成であっても、リセットフラグRESETを使用すれば、電断復帰後にリール演出を再開又はキャンセルすることができるが、後者の構成Bを採れば、タイマ割込み処理の定時処理において電源異常に対応する限り、リセットフラグRESETが不要にすることができる利点がある。
そして、何れの構成を採っても、電断前に実行していたリール演出を中途半端に再開して、液晶表示ユニット7で再開されるキャラクタ演出と非同期となるという弊害が解消される。すなわち、リール演出を最初から同期して再開するか、或いは、中断したリール演出をキャンセルすることができる。
特に、図20〜図22の構成を採る場合には、稀にしか実行されないリール演出において、電断が生じるという極めて稀な事態(事実上ゼロ%)のために、定常的に図17(b)の判定処理(ST67)を繰り返すという無駄が排除できる利点がある。