<本実施例に係るスロットマシンの概要>
以下、図面を参照しながら、本発明の実施例に係るスロットマシンについて説明する。図1は、本実施例に係るスロットマシン10の外観を正面から示している。スロットマシン10は、図1中及び図2に示す前面ドア部11と、図3に示す筐体部12とを、前面ドア部11を前にして前後に組み合わせて構成されている。そして、前面ドア部11は、ヒンジ装置を介して筐体部12により支持され、筐体部12に対して閉じた状態で施錠が可能となっている。
前面ドア部11の表側(正面側)には、図1中に示すように、上下方向の中段に操作部14が配置され、この操作部14の上部に回胴表示部15が配置されている。さらに、前面ドア部11の下部には、矩形に開口した遊技メダル払出口16、及び、遊技メダル払出口16から放出された遊技メダルを受け入れる受け皿17が配置されており、更に回胴表示部15の上方には演出部18が配置されている。また、操作部14の下方には、機種に固有の名称やデザイン画などが描かれた透光性の下部パネル19が設けられている。
これらのうち操作部14には、遊技メダル投入口21、遊技メダル返却ボタン22、錠前部23、停止ボタン部24、スタートレバー25などが設けられている。さらに、操作部14の上部には、メイン入力部26とサブ入力部27が設けられており、メイン入力部26には、図示は省略するが、清算ボタン、1枚投入ボタン、3枚投入ボタン(所謂MAX(マックス)ベットボタン)が設けられている。さらに、サブ入力部27には、図示は省略するが、十字キーや、サブ入力スイッチなどが設けられている。
遊技メダル投入口21は、遊技媒体としての遊技メダルを、ガイドを介して投入するためのものであり、遊技メダル返却ボタン22は、遊技メダルセレクター(後述する)に滞留した遊技メダルを返却させるときに使用されるものである。また、錠前部23は、前面ドア部11の開錠の際に所定の鍵を挿し込んで使用されるものであり、停止ボタン部24は、後述する3つの回胴(第1回胴51C、第2回胴51R、第3回胴51L)の回転を停止させるときに使用されるものである。
停止ボタン部24には、3つの停止ボタン(第1停止ボタン24C、第2停止ボタン24R、第3停止ボタン24L)が設けられている。これらの停止ボタン24C,24R,24Lは、各回胴51C、51R、51Lに対応付けられており、停止ボタン24C,24R,24Lを個々に押圧操作することで、対応する回胴51C、51R、51Lが停止するようになっている。なお、本実施例では、第1回胴51C〜第3回胴51Lの並びは、スロットマシン10の正面から見て左から第3回胴51L、第1回胴51C、第2回胴51Rの順となっており、停止ボタン24C,24R,24Lの並びも左から第3停止ボタン24L、第1停止ボタン24C、第2停止ボタン24Rの順になっている。また、スタートレバー25は、回胴の回転及び設定値の確定(後述する)を行うときにも使用される。
メイン入力部26における清算ボタンは、投入された遊技メダルの払戻し及び貯留装置(後述する)に貯留されている遊技メダルを清算するときに使用される。1枚投入ボタンは、貯留されている遊技メダルを1枚ずつ投入するときに使用され、3枚投入ボタンは、貯留されている遊技メダルの枚数及び投入に係る規定数(後述する)を超えない範囲で、貯留されている遊技メダルを最大3枚投入するときに使用される。サブ入力部27におけるサブ入力スイッチは、演出に係る操作を行うためのものであり、演出部18に設けられた液晶画面などの表示内容の切替えや、演出に係る入力のために使用される。
さらに、操作部14には、図示は省略するが、LEDの発光の有無や、7セグメント(7セグ)表示器の表示態様などによって遊技内容を示す各種の表示部が設けられている。この遊技の状況を示す各種の表示部としては、獲得枚数表示部、貯留枚数表示部、再遊技表示部、投入表示部、打止表示部、遊技開始表示部、投入枚数表示部などがある。これらの各種の表示部の近傍には、各表示部がどのような情報の表示機能を担ったものかが判るよう、文字の印刷などが行われている。さらに、これらの表示部のうち、獲得枚数表示部及び貯留枚数表示部は、7セグ表示器を用いて数字や文字等を表示する機能を有するものであり、その他の表示部はLEDの点灯の有無や点灯の態様によりにより所定の情報を表示するものである。そして、各表示部に光源として用いられているLEDについて、以下では、獲得枚数表示LED、貯留枚数表示LED、再遊技表示LED、投入表示LED、打止表示LED、遊技開始表示LED、投入枚数表示LEDと称する場合がある。
また、各種の表示部のうち、獲得枚数表示部は、状況に応じて、獲得枚数に応じた遊技メダルの枚数の表示、設定の切り替え時の表示、及びエラーコードの表示の何れかの用途に用いられる。貯留枚数表示部は、貯留装置に貯留されている遊技メダルの枚数を表示するものであり、再遊技表示部は、再遊技の作動の有無を表示するものである。さらに、投入表示部は、遊技メダルの投入受付けが可能である旨の表示を行い、打止表示部は、貯留されている遊技メダルの清算時である旨の表示を行う。遊技開始表示部は、遊技の開始が可能な状態において、スタートレバー25の操作受付が可能である旨の表示を行う。さらに、投入枚数表示部は、投入された遊技メダルの枚数の表示を行い、再遊技作動時には、前回遊技と同数の遊技メダル枚数を表示する。
前述の停止ボタン部24には、第1停止ボタン24C、第2停止ボタン24R、第3停止ボタン24Lの3つの停止ボタンが設けられている。また、回胴表示部15には、矩形に開口した表示窓を透明パネルで塞いだ回胴表示パネル28が備えられており、この回胴表示パネル28を透して、図3中に示すように筐体部12に収納された第1回胴51C〜第3回胴51Lの3つの回胴(リール)を視認できるようになっている。また、演出部18には、液晶表示装置などが設けられており、遊技に伴う演出などの表示が演出部18で行われる。
また、前面ドア部11には、演出に用いられる各種の光源(LED)が設けられている。これらの演出用の光源としては、図示は省略するが、3枚投入表示LED、停止ボタンLED、サブ入力表示LEDなどを挙げることができる。これらのうち、3枚投入表示LEDは、前述のメイン入力部26に配置された3枚投入ボタンを内側から照らすものであり、3枚投入ボタンを用いた演出内容の表示に利用される。また、停止ボタンLEDは、停止ボタン24C,24R,24Lを内側から照らすものであり、停止ボタン24C,24R,24Lを用いた演出内容の表示に利用される。さらに、サブ入力表示LEDは、前述のサブ入力部27に配置されたサブ入力スイッチを内側から照らすものであり、サブ入力スイッチを用いた演出内容の表示に利用される。
これら以外にも、演出用の光源としては、図示略は省略するが、回胴上部LED、回胴下部LED、サイドLED、チャンスLED、左ウイングLED、左下サークルLED、右ウイングLED、右下サークルLED、左上サークルLED、上部LED、右上サークルLED、ARランプLED、下部パネル照明LED、左ミニLED、右ミニLED、V字LEDなどがある。何れの光源も、その配置や機能に応じて、演出内容の表示に用いられるものである。
図2は、前面ドア部11の背面側を示している。前面ドア部11の背面側には、各種基板、遊技メダルを取扱う機器、各種センサ等が配置されている。これらのうち、各種基板としては、サブ制御基板31、画像制御基板32、画像表示接続基板33、音声基板34、演出ロム(ROM)基板35、スイッチセンサ基板36、表示基板37、ドア中継端子板38、回胴照明基板39、及び下パネル照明基板40などが設けられている。
これらのうち、サブ制御基板31は、演出用の画像、各種ソレノイド、各種LED及び効果音を制御するための基板である。そして、サブ制御基板31は、専用基板ケースに収納され、当該基板ケースを前面ドア部11にねじ止めすることにより、前面ドア部11に装着されている。
画像制御基板32は、後述する音声基板及び演出ロム基板を搭載し、サブ制御基板31と画像表示接続基板33との間を中継し、演出用の画像及び効果音を制御するための基板である。そして、画像制御基板32は、専用基板ケースに収納され、当該基板ケースを前面ドア部11にねじ止めすることにより、前面ドア部11に装着されている。
画像表示接続基板33は、画像制御基板32と演出部18の液晶表示器との間を中継している基板であり、前面ドア部11に設けられたねじ穴にねじ止めして固定されている。音声基板34は、演出用の音声データが保存されたロムを取り付けた基板であり、画像制御基板32に設けられたねじ穴にねじ止めして固定されている。演出ロム(ROM)基板35は、演出用の画像データが保存されたロムを取り付けた基板であり、画像制御基板32に設けられたねじ穴にねじ止めして固定されている。
スイッチセンサ基板36は、サブ制御基板31と、後述する2つのソレノイド(第1ソレノイド、第2ソレノイド)との間を中継し、LEDによる演出内容を表示、又は液晶画面の切り替え及び入力をするための基板である。そして、スイッチセンサ基板36は、専用基板ケースに設けたねじ穴にねじ止めして固定されている。
表示基板37は、前述の獲得枚数表示LED、貯留枚数表示LED、再遊技表示LED、投入表示LED、打止表示LED、遊技開始表示LED及び投入枚数表示LEDを取り付けた基板であり、前面ドア部11に設けられたフックにはめ込んで固定されている。ドア中継端子板38は、主制御基板(後述する)と、前面ドア部11の各所に配置された各種センサ、ブロッカ及び表示基板37との間を中継している基板である。そして、ドア中継端子板38は、専用基板ケースに収納し、当該基板ケースを前面ドア部11にねじ止めすることにより、前面ドア部11に装着されている
回胴照明基板39は、第1回胴51C〜第3回胴51Lを照らすためのLEDを取り付けた基板であり、前面ドア部11に設けられたフックにはめ込んで固定されている。下パネル照明基板40は、下部パネル19を照らすためのLEDを取り付けた上下2分割構造の基板であり、前面ドア部11に設けられたフックにはめ込んで固定されている。下パネル照明基板40は、下部パネルを照らすためにLEDを取り付けた基板であり、前面ドア部11に設けられたフックにはめ込んで固定されている。
続いて、前面ドア部11に設けられた各種センサ等の機器としては、スタートレバーセンサ41、3枚投入ボタンセンサ42、1枚投入/清算ボタンスイッチ43、遊技メダルセレクター44、投入センサ45、セレクタ通路センサ46、ブロッカ47、遊技メダル返却通路48、停止ボタンセンサ49、スピーカ50などがある。このうちスタートレバーセンサ41は、スタートレバー25の操作を検知するためのものであり、3枚投入ボタンセンサ42は、3枚投入ボタンの操作を検知するためのものである。
また、1枚投入/清算ボタンスイッチ43は、1枚投入ボタン及び清算ボタンスイッチを搭載した装置である。遊技メダルセレクター44は、後述する投入センサ45、セレクタ通路センサ46及びブロッカ47取り付けた装置であり、また、投入された遊技メダルが受付可能範囲のものか否かの選別を行う装置でもある。上述の投入センサ45は、遊技メダルの投入を検知するためのセンサであり、セレクタ通路センサ46は遊技メダルの通過を検知するためのセンサである。さらに、ブロッカ47は、遊技状態に応じ遊技メダルを返却するための装置であり、遊技メダル返却通路48は、遊技メダルが返却されるときの通路となるものである。そして、停止ボタンセンサ49は、停止ボタン24C〜24Lの操作を検知するためのセンサであり、スピーカ50は効果音を出力ために複数設けられているものである。
また、図示は省略するが、前面ドア部11には、ソレノイド1及びソレノイド2、十字キー基板が設けられている。このうち、ソレノイド1及びソレノイド2は、サブ入力スイッチを振動させるための装置である。また、十字キー基板は、液晶画面の切り替え及び入力をするための基板であり、専用基板ケースに基板を収納し、当該専用ケースをねじ止めして固定されている。
図3は、筐体部12の正面側を示している。筐体部12には、主制御基板61、設定ユニット62、遊技メダル払出装置63、電源ユニット64等が配置されている。これらのうち、主制御基板61は、スロットマシン10に対する入出力を総括して遊技を司る制御を行うとともに、符号は省略するが、後述する打止スイッチ、設定表示LED及びモニタLED等を取り付けた基板である。この主制御基板61は、専用基板ケースである主基板ケース65に基板を収納し、当該主基板ケース65を専用止め具で固定して、筐体部12に装着している。設定表示LED66は、理論上の当り易さを規定する設定値を表示するものである。打止スイッチは、上側又は下側の何れかに設定して打ち止め機能及び自動清算機能のいずれかを選択するものであるが、本実施例では打ち止め機能及び自動清算機能を搭載していないため、この打止スイッチは使用されていない。したがって、打止スイッチが遊技の結果に影響を与えることはない。なお、主基板ケース65にはICタグ封印シール(図示略)が貼付されており、このICタグ封印シールは、内部にICタグが埋め込まれた封印紙である。
また、筐体部12には、ドアスイッチ60が設けられており、このドアスイッチ60は、
前面ドア部11の開閉を検知するためのスイッチである。また、前述の設定ユニット62は、後述する設定ドアスイッチ67、設定キースイッチ68及び設定/リセットボタン69を収納した箱である。これらのうち、設定ドアスイッチ67は、設定ユニット62の筐体の一部を構成し設定ユニット62を閉じる設定ドアについて、その開閉を検知するためのスイッチである。設定キースイッチ68は、スロットマシンにおける設定の切り替え及び設定の確認を行うためのスイッチであり、設定/リセットボタン69は、前述の設定値の選択又はエラーの解除を行うためのボタンである。
さらに、筐体部12には、外部集中端子板70が設けられており、この外部集中端子板70は、メダル投入信号出力、メダル払出信号出力、外部信号出力1〜外部信号出力5を外部に出力するとともに、モニタLED(7個)が取り付けられた基板である。そして、この外部集中端子板70は、筐体部12に設けたフックにはめ込んで、筐体部12に固定されている。
前述の遊技メダル払出装置63は、入賞、貯留装置の清算又は投入された遊技メダルの払戻しの際に遊技メダルを排出するための装置である。遊技メダル払出装置63には、払出しセンサ(図示略)が備えられており、この払出しセンサは、払い出された遊技メダルを検知するためのセンサである。
さらに、筐体部12には、遊技メダル補助収納庫71が設けられており、この遊技メダル補助収納庫71は、遊技メダル払出装置63の貯留容量を超えた遊技メダルを収納するための収納庫である。遊技メダル補助収納庫71には、満杯検知電極(図示略)が備えられており、この満杯検知電極は、遊技メダル補助収納庫の満杯状態を検知するための電極である。
前述の電源ユニット64は、電源スイッチ72を収納した箱であり、電源スイッチ72は、主電源のON・OFFを行うためのスイッチである。そして、この電源スイッチ72をOFFからONすることにより、電源ユニット64を介して、制御基板等を含む各種機器に所定の電力が供給される。
また、筐体部12には、前述の第1回胴51C〜第3回胴51Lが設けられている。この回胴51C〜51Lは、外周面に描かれた図柄を回転させるための装置である。各回胴51C〜51Lの内側には、回胴センサ(図示略)が設けられており、この回胴センサは回転中の回胴の基準位置を、回胴に設けられインデックスとなる部分(以下ではこの部分を「インデックス」と称する場合がある)に基づいて検知するためのセンサである。
さらに、筐体部12には、図示は省略するが、BL(バックライト)中継基板、回胴装置基板、バックライトLED、LEDバックライト基板等が設けられている。これらのうち、BL中継基板は、サブ制御基板31と後述するLEDバックライト基板や回胴センサ等との間を中継している基板である。このBL中継基板は、専用基板ケースに基板を収納し、当該基板ケースを専用止め具で固定することで、筐体部12に装着されている。
また、回胴装置基板は、各回胴51C〜51Lを回転又は停止させるために、主制御基板61と回胴ステッピングモータ(後述する)及び回胴センサとの間を中継している基板であるとともに、また、主制御基板61と前述の満杯検知電極、ドアスイッチ60、遊技メダル払出装置63、外部集中端子板70及び電源ユニット64との間を中継している基板でもある。この回胴装置基板は、専用基板ケースに基板を収納し、当該基板ケースを専用止め具で固定することで、筐体部12に装着されている。バックライトLEDは、各回胴51C〜51Lの内側に配置され、回胴51C〜51L上の図柄を背面から照らすためのLEDである。LEDバックライト基板は、上述バックライトLEDを搭載した基板である。
<回胴の回転に係る機構>
次に、前述した第1回胴51C〜第3回胴51Lを回転させるための機構について説明する。各回胴51C〜51Lの外周面にはリールテープが装着されており、リールテープには所定数の図柄が描かれている。本実施例では、図柄の数は各々20個である。全ての回胴の大きさは同一に設定されており、回転軸は同一直線状に位置している。さらに、各回胴51C〜51Lは、図3中に示す回胴回転装置54に連結されて回胴回転装置54と一体化されており、この回胴回転装置54により、回転軸をスロットマシン10の左右方向に向けた状態で回転駆動される。
回胴回転装置54は、第1回胴51C〜第3回胴51Lを回転させるための装置であり、スタートレバー25を操作することにより作動し、第1回胴51C〜第3回胴51Lを回転させる機能を有している。そして、この回胴回転装置54は、遊技者が直接操作する場合のほかには作動させることはできないようになっている。
回胴回転装置54は、図示は省略するが、回胴ステッピングモータ、リールブッシュ、回胴センサ及び回胴装置基板等により構成され、後述するように、コンピュータプログラムにより制御される。第1回胴51C〜第3回胴51Lの各回胴は、円筒状のリールブッシュを介して、回胴ステッピングモータのステンレス製の軸に凹凸組込みされ、ねじ及び樹脂ワッシャーを介して回胴ステッピングモータの軸に固定されている。そして、回胴ステッピングモータの軸を第1回胴51C〜第3回胴51Lの軸として使用し、回胴ステッピングモータを金属製などのモータフレームにねじにより固定し、また、回胴回転装置54の骨格となる金属製などのリールフレームに、上記モータフレームを挿入してラッチ(ここではプランジャやグロメットを備えた所謂スナップラッチ)により固定しているため、回胴回転装置54が作動しても、第1回胴51C〜第3回胴51Lが動揺しない(回転方向や軸方向などに揺れ動くことがない)ようになっている。
第1回胴51C〜第3回胴51Lを停止させる際には、回胴回転装置54が回転停止装置として機能する。すなわち、回転停止装置は、回胴を停止させる機能と図柄の組合せを表示する機能とを有している。このうち回胴を停止させる機能は、前述の停止ボタン24C,24R,24Lの個々の押圧操作があると、押圧操作された停止ボタンに対応する回胴を停止させる機能である。また、図柄の組合せを表示する機能は、上述の回胴を停止させる機能により3個の第1回胴51C〜第3回胴51Lをすべて停止させ、第1回胴51C〜第3回胴51Lによる図柄の組合せを表示する機能である。
さらに、回転停止装置は、停止ボタン24C,24R,24L、停止ボタンセンサ、ドア中継端子板、回胴ステッピングモータ、回胴センサ及び回胴装置基板で構成され、プログラムの制御により、遊技者が停止ボタンを操作すると作動し、それ以外では作動しない構成となっている。ここで、各回胴51C〜51Lには、回転角度の指標となるインデックスが形成されており、このインデックスと、各回胴51C〜51Lに描かれた各図柄のとの位置関係に基づいて、回胴回転停止時の図柄の位置が制御される。
<遊技を行う手順及び遊技メダル投入時の処理>
次に、遊技を行う手順及び遊技メダル投入時の処理について説明する。遊技メダル投入時の処理においては、遊技メダルセレクター44(図2参照)が遊技メダル受付状態になっている場合は、遊技メダル投入口21(図1参照)より遊技メダルを投入することができる。遊技メダルを投入すると、投入枚数に応じて前述の投入枚数表示LEDが点灯し、規定数の遊技メダルを投入することによりスタートレバー25が有効に操作可能となる。そして、スタートレバー25が有効に操作可能となることにより、スタートレバー25の操作に基づく役抽選、フリーズ抽選(後述するフリーズ演出のための抽選)、回胴駆動状態の更新等の処理が実行できるようになる。
なお、遊技状態ごとの最大規定数を超えて投入すると、以降の遊技メダルは貯留装置に貯留される。貯留装置は、スロットマシン10の制御上、遊技メダルを所定枚数(ここでは50枚)まで貯留可能とする機能を果たすものである。ただし、貯留されている遊技メダルの枚数が最大枚数である50枚を超える場合は、遊技メダルセレクター44が遊技メダル返却状態になり、遊技メダル投入口21より投入された遊技メダルは、遊技メダル払出口16(図1参照)から受け皿17へ返却される。貯留装置は「クレジット」とも呼ばれ、具体的には遊技メダルを電気的に記憶(RWMに記憶)するものを指す。
回胴回転については、規定数の遊技メダルを投入後、スタートレバー25を操作し、回胴回転装置54を作動させることにより回胴を回転させることができる。ただし、清算ボタン、停止ボタン24C〜24L、1枚投入ボタン又は3枚投入ボタンのいずれかを操作している状態では、スタートレバー25を操作しても回胴51C〜51Lを回転させることはできない。
スタートレバー25を操作すると、回胴51C〜51Lが加速回転を始め、所定の回転数に(ここでは79.90回転/分)に達すると定速状態となる。スタートレバー25が操作されると、遊技メダルセレクター44は遊技メダル返却状態となる。前回の遊技で回胴51C〜51Lが回転し始めてから最小遊技時間である所定時間(ここでは4.1秒)が経過していない場合に、スタートレバー25を操作しても、回胴51C〜51Lは回転しない。前回の遊技で回胴が回転し始めてから4.1秒経過に回胴51C〜51Lが回転を始める。ただし、後述するような遊技演出(フリーズ演出など)による遊技待機中の場合は、遊技待機終了後に回胴が回転を始める。
回胴51C〜51Lが回転を始め、回胴51C〜51Lのすべてが正常回転(ここでは定速かつ脱調していない状態の回転)していることを検知すると、停止ボタン24C〜24Lの操作が受付可能な状態になる。ただし、回胴51C〜51Lのすべてが正常回転していることが検出されない場合は、正常回転するまで停止ボタン24C〜24Lの操作が受付可能な状態にならない。スタートレバー25を操作した後から、回胴51C〜51Lがすべて停止するまでの間に遊技メダル投入口21より投入された遊技メダルは、遊技メダル払出口16から受け皿17へ返却される。
回胴回転の停止においては、回転している回胴51C〜51Lを任意に選択し、それに対応した停止ボタン24C〜24Lを操作することにより、回胴51C〜51Lを停止させることができる。ただし、清算ボタン、スタートレバー25、すでに停止している回胴に対応する停止ボタン、1枚投入ボタン又は3枚投入ボタンのいずれかを操作している状態では、停止ボタンを操作しても回転中の回胴を停止させることはできない。
停止ボタン24C〜24Lが操作されると、それに対応した回胴が所定時間(ここでは190ms)以内に停止する。残りの回転しているいずれかの回胴も同様に、任意に選択した回胴に対応した停止ボタンを操作して停止させる。停止ボタンを操作し続けた場合は、残りの停止ボタンを操作しても、それに対応した回胴は停止しない。スタートレバー25を操作した後、停止ボタン24C〜24Lを操作しない限り回転中の回胴51C〜51Lは停止しない。
図柄の組合せの表示判定においては、回胴51C〜51Lがすべて停止したとき、投入に係る規定数に応じた有効ライン上で入賞又は役物作動に係る図柄の組合せの表示判定を行う。ただし、3番目の停止である第3停止時にスタートレバー25又はいずれかの停止ボタン24C〜24Lを操作し続けた場合は、操作解除後に、規定数に応じた有効ライン上で入賞又は作動に係る図柄の組合せの表示判定を行う。ここで、図示は省略するが、本実施例のスロットマシン10において投入可能な規定数は、役物作動時の遊技においては2枚、それ以外の遊技においては3枚であり、有効ラインは、回胴表示部15(図1参照)の上段、中段及び下段のうち、中段における横並びの1ラインのみである。そして、規定数に応じた有効ライン上に、入賞に係る図柄の組合せが表示された場合は、該当する場合の制御を実行し、役物作動又は役物連続作動装置に係る図柄の組合せが表示された場合は、役物作動又は役物連続作動装置に係る図柄の組合せが表示された場合の制御が実行される。
入賞に係る図柄の組合せが表示された場合、規定数ごとの当該入賞に係る図柄の組合せに対応した枚数分の遊技メダルが払い出され、遊技者によって獲得される。なお、獲得される遊技メダルは、前述の貯留装置に貯留される。ただし、貯留されている遊技メダルの枚数が50枚を超える場合は、超える獲得枚数分を遊技メダル払出口16から受け皿17へ払い出す。遊技メダルの獲得中に遊技メダル投入口21より投入された遊技メダルは、遊技メダル払出口16から受け皿17へ返却される。規定数ごとの当該入賞に係る図柄の組合せに対応した枚数分の遊技メダルがすべて獲得されると、遊技メダルセレクター44は遊技メダル受付状態になる。そして、前述の遊技メダル投入時の処理が実行される。本実施例においては、1回の入賞により獲得することができる遊技メダルの枚数の上限は8枚を超えることはないようになっている。そして、1回の入賞により獲得することができる遊技メダルの枚数は、投入された遊技メダル枚数の15倍を超えることはないようになっている。
役物の作動に係る図柄の組合せが表示された場合においては、該当する役物に応じた処理が実行される。本実施例では、役物として(抽選される役として)、所謂、普通役物、第一種特別電動役物、第二種特別電動役物、第一種特別電動役物に係る役物連続作動装置、の各々が作動することとなる図柄の組合せに該当するものは設けられていないが、再遊技が作動することとなる図柄の組合せ、及び、第二種特別役物に係る役物連続作動装置が作動することとなる図柄の組合せは設けられている。そして、これらに該当する図柄の組合せが表示された場合は、該当する処理を実行する。
一方、入賞及び作動に係る図柄が表示されなかった場合においては、遊技メダルセレクター44は遊技メダル受付状態になる。そして、前述の遊技メダル投入時の処理が実行される。
続いて、規定数ごとの入賞に係る図柄の組合せ及び当該図柄の組合せが表示された場合に獲得することができる遊技メダルの枚数について説明する。入賞に係る図柄の組合せ、及び、対応して獲得することができる遊技メダルの枚数は、規定数ごとにあらかじめ定められている。入賞に係る図柄の組合せを表示することなく、遊技メダルを獲得することはできないようになっている。また、入賞に係る条件装置が作動することなく、入賞に係る図柄の組合せが表示されることはないようになっている。
そして、役物及び役物連続作動装置未作動時における入賞に係る図柄の組合せ及び遊技メダル獲得枚数は、規定数3枚時についてのみが定められており、入賞に係る図柄の組合せ(1図柄又は2図柄のみ規定されたものを含む)の数としては、本実施例では37種類が設けられている。このうち獲得枚数が8枚のものは1種類、3枚のものは12種類設けられており、残りは獲得枚数が1枚である。さらに、第二種特別役物作動時における入賞に係る図柄の組合せ及び遊技メダル獲得枚数は、規定数2枚時についてのみが定められており、入賞に係る図柄の組合せ(1図柄又は2図柄のみ規定されたものを含む)の数としては、本実施例では37種類が設けられている。このうち獲得枚数が2枚のものは13種類設けられており、残りは獲得枚数が1枚である。
続いて、規定数ごとの作動に係る図柄の組合せについて説明する。再遊技、役物及び役物連続作動装置の作動に係る図柄の組合せは、規定数ごとにあらかじめ定められている。再遊技、役物及び役物連続作動装置等の作動に係る条件装置が作動せず(未作動時)に、再遊技、役物及び役物連続作動装置の作動に係る図柄の組合せが表示されることはないようになっている。
そして、役物及び役物連続作動装置未作動時における作動に係る図柄の組合せ及び作動名称は、規定数3枚時についてのみが定められており、作動に係る図柄の組合せ(2図柄のみ規定されたものを含む)の数としては、本実施例では13種類が設けられている。このうち作動名称が第二種特別役物に係る役物連続作動装置であるものが1種類設けられており、残りは作動名称が再遊技である。そして、作動に係る図柄の組合せが表示された場合には、その後に作動名称に応じた遊技制御が実行されることになる。
続いて、再遊技を行うことができることとなる図柄の組合せ、当該図柄の組合せが表示されたときの効果及び当該図柄の組合せは表示された場合の処理について説明する。回胴51C〜51Lがすべて停止したときに、有効ライン上に表示した図柄の組合せが再遊技に係る図柄の組合せであれば、再遊技が作動する。また、本実施例のスロットマシン10には、再遊技に係る条件装置が作動する確率が変動する遊技が設けられている。
再遊技に係る条件装置の作動する確率の変動契機は、第二種特別役物に係る役物連続作動装置の作動に係る条件装置が作動したとき、第二種特別役物に係る役物連続作動装置が作動することとなる図柄の組合せが有効ライン上に表示されたとき、及び、第二種特別役物に係る役物連続作動装置の作動が終了したとき、である。再遊技を行うことができることとなる図柄の組合せが表示された場合の処理としては、自動的に前回の遊技と同数の遊技メダルが投入された状態となり、スタートレバー25が操作可能になる。再遊技に係る図柄の組合せが表示されてから遊技メダル投入口21より投入された遊技メダルは貯留装置に貯留される。そして、その後は、前述した通常時(ここでは再遊技以外の場合)と同様に、回胴回転についての制御、回胴回転の停止についての制御、及び、回胴の組合せの表示判定についての制御が実行される。
続いて、第二種特別役物について説明する。第二種特別役物に係る役物連続作動装置が作動すると、同時に第二種特別役物に係る役物連続作動装置作動時の第二種特別役物が作動する。また、第二種特別役物に係る役物連続作動装置の作動時において、第二種特別役物の作動が終了すると、ただちに第二種特別役物に係る役物連続作動装置作動時の第二種特別役物が再度動作する。以上のように第二種特別役物が作動すると、前述した通常時(ここでは第二種特別役物に係る遊技以外の場合)と同様に、遊技メダル投入時の処理、及び、回胴回転についての制御による遊技を行う。
さらに、回胴回転の停止の制御に際しては、遊技者が、回転している回胴を任意に選択し、それに対応した停止ボタンを操作することにより、回胴を停止させることができる。ただし、清算ボタン、スタートレバー、すでに停止している回胴に対応する停止ボタン、1枚投入ボタン又は3枚投入ボタンのいずれかを操作している状態では、停止ボタンを操作しても回転中の回胴を停止させることはできない。第1回胴51C及び第3回胴51Lに対応した停止ボタン24C,24Lを操作した場合、対応する回胴の回転は、前述の場合と同様に、所定時間(ここでは190ms)以内に停止する。しかし、第2回胴51Rに対応した第2停止ボタン24Rを操作した場合、対応する第2回胴51Rの回転は、第1回胴51C及び第3回胴51Lの場合とは異なる所定時間(ここでは75ms)以内に停止する。
いずれかの停止ボタンを操作し続けた場合は、残りの停止ボタンを操作してもそれに対応した回胴は停止しないようになっている。スタートレバー25を操作した後は、停止ボタンを操作しない限り回転中の回胴は停止しない。そして、図柄の組合せの表示判定については、前述した通常時と同様に、回胴の組合せの表示判定についての制御が実行される。尚、本実施形態では、停止ボタンの操作を有効的に受け付けた後に、次の停止ボタンが有効的に受け付けられるまでに約200msの待機時間(回胴停止受付待機時間ともいう。)を設けている。つまり、全リール(51C〜51L)が回転している場合に、例えば左停止ボタン(第2停止ボタン24R)が操作された後は200ms後に中又は右の停止ボタン(第1停止ボタン24C又は第3停止ボタン24L)が受付可能となる。
第二種特別役物の作動終了については、第二種特別役物は、前述の遊技メダル投入時の処理から図柄の組合せの表示判定についての制御までを1回行った場合に作動を終了する。なお、作動終了後には、第二種特別役物に係る役物連続作動装置(後述する)の作動を伴って同様の遊技を繰り返す場合と、前述した通常時と同様に、遊技メダル投入時の処理に移る場合とがある。
続いて、第二種特別役物に係る役物連続作動装置について説明する。第二種特別役物に係る役物連続作動装置未作動時の遊技において、回胴がすべて停止したときに、有効ライン上に表示した図柄の組合せが第二種特別役物に係る役物連続作動装置の作動に係る図柄の組合せであれば、前述の第二種特別役物に係る遊技を実行する。第二種特別役物に係る役物連続作動装置の作動終了の契機は、遊技メダル獲得枚数が40枚を超えた場合である。そして、その後は、前述した通常時と同様に、遊技メダル投入時の処理に移る場合とがある。
<主制御基板における主要動作>
次に、本実施例に係るスロットマシン10の主制御手段として機能する主制御基板61について、主要動作を図4〜図8に基づき説明する。先ず、主制御基板61は、図示は省略するが、CPU(メインCPU)が、例えば外付けのROM(プログラムROM)に記憶された制御プログラムに基づき、CPUの内蔵RWMや、主制御基板61上に実装された外付けRWM等を用いて、乱数抽せんや、各種機器の制御などを実行するものである。さらに、主制御基板61は、画像等を用いた演出に係る制御を行うサブ制御基板31に対し、遊技状態や抽せん結果に応じたコマンド(「メインコマンド」、「サブ制御コマンド」、「サブメインコマンド」などともいう)を送信する機能を有している。そして、主制御基板61に対しては、前述の電源ユニット64から電力が供給される。ここで、上述の乱数抽せんとしては、先述した再遊技、役物、役物連続作動装置等の役抽選や、フリーズ抽選等の演出抽選などを例示できる。また、主制御手段は、主制御基板61のほか、メインCPUや、メインCPUと協働して主制御基板61の各種機能を実現する外付けROMや外付RWM等の周辺機器等を包含する概念のものである。
<<主制御基板における電源投入時の処理>>
電源ユニット64を介して主制御基板61のCPUに電源投入があると、図4に示す電源投入時の処理が実行され、割込みモードのセット(S1)が実行される。なお、図示を省略するが、電源投入に伴い、所定のレジスタに対する初期値の設定が行われている。続いて、メインCPUの機能設定(S2)、RWMチェック(S3)が行われる。RWMチェック(S3)においては、チェックサムの算出と、電源断処理が済んでいることを示す電源断処理済フラグとによって、前回の電源断時のバックアップが正常か否かを判断するための電源断復帰データの生成が行われる。
さらに、ドアスイッチ信号、設定ドアスイッチ信号及び設定キースイッチ信号の状態をチェックし(S4)、すべてのスイッチ信号がONの場合は(S4:YES)、設定変更装置処理を行う。ここで、本実施形態においてはすべてのスイッチ信号がONの場合とは、前述の扉(前面ドア部11)が開放、設定ユニット62(図3参照)の設定ドアが開放、設定キースイッチ68がONとなっている場合である。
一方、少なくとも何れかのスイッチ信号がONではなかった場合は(S4:NO)、電源断復帰データの確認の処理(S5)に移行する。この電源断復帰データの確認の処理(S5)においては、前回の電源断の際に電源断処理(後述する)が行われており、かつ、前回の電源断の際に所定のRWMエリアについて演算されたチェックサムの値が、正常であれば、正常と判定し、その他の場合は異常と判定する。
上述のS5において電源断復帰データが異常と判定した場合は(S5:NO)、エラー表示を実行し(S6)、獲得枚数表示LEDに対応するエラーコードを表示し、遊技機の動作を停止する。上述のS5において電源断復帰データが正常と判定した場合は、スタックポインタ内の値を電源断時の状態に復帰させる(S7)。さらに、RWMエリアの初期化を行い(S8)、電源断復帰データに応じてRWMエリアの未使用領域を初期化する。
さらに、入力ポートを読み込み(S9)、タイマ割込み用の割込みタイマを起動し(S10)、電源断時の処理へ復帰する(S11)。この電源断時の処理への復帰(S11)においては、電源断処理済みフラグのクリア後、電源断時に発生したインターバル割込みの処理へ復帰する。
<<設定変更装置処理>>
図5は、前述の設定変更装置処理を示すものである。この設定変更装置処理においては、スタックポインタをセットし(S21)、設定変更装置の作動を開始する。さらに、電源断復帰データに応じたRWMエリアの初期化を行い(S22)、タイマ割込み用の割込みタイマを起動する(S23)。そして、設定値が所定の範囲内であるかチェックし(S24)、範囲外の場合は設定値に1をセットする。続いて、設定変更装置作動中表示を行い(S25)、得枚数表示LEDに設定変更装置作動中であることを示す「−−」を表示し、設定表示LEDに設定値を表示する。
さらに、設定/リセットボタン信号に係る判定の処理(S26)を行い、ドアスイッチ信号及び設定ドアスイッチ信号がONの状態で、設定/リセットボタン信号がOFFからONになった場合は(S26:YES)、設定値の更新の処理(S27)に移行し、その他の場合はスタートレバー25に係る判定の処理(S28)へ移行する。
設定値の更新の処理(S27)においては、設定値を1加算する。ただし、加算した結果、値が最大設定値(ここでは6)を超えた場合は、設定値は1に戻る。スタートレバー25に係る判定の処理(S28)においては、スタートレバーセンサ信号がOFFからONになった場合は(S28:YES)、設定キースイッチ68に係る判定の処理(S29)へ移行し、その他の場合は(S28:NO)、設定/リセットボタン信号に係る判定の処理(S26)へ移行する。
設定キースイッチ68に係る判定の処理(S29)においては、ドアスイッチ信号及び設定ドアスイッチ信号がONの状態で、設定キースイッチ信号がONからOFFになった場合は(S29:YES)、設定変更装置作動中表示クリアの処理(S30)へ移行し、その他の場合(S29:NO)はS29の処理を繰り返す。設定変更装置作動中表示クリアの処理(S30)においては、獲得枚数表示LEDに「00」を表示し、設定表示LEDを消灯する。その後、後述する遊技進行メイン処理へ移行する。
<<遊技進行メイン処理>>
次に、遊技進行メイン処理について、図6に基づき説明する。遊技進行メイン処理においては、スタックポインタをセットし(S41)、遊技開始セットの処理(S42)において、以下の処理を行う。すなわち、この遊技開始セットの処理(S42)においては、遊技状態をセットする。さらに、満杯検知信号をチェックし、遊技メダル補助収納庫71が満杯の場合は獲得枚数表示LEDにその旨を表すエラーコードを表示し、遊技を停止する。
遊技メダル補助収納庫71が満杯でない場合又はエラーが解除された場合は、遊技メダル投入の受け付けを行う。この遊技メダル投入の受け付けにおいては、再遊技未作動時の場合は、ブロッカ信号をON(通過可能状態)にして遊技メダル投入の受付を開始する。再遊技作動時の場合は、貯留装置へ遊技メダルの投入が可能であればブロッカ信号をONにし、そうでない場合はブロッカ信号のONは行わず、自動投入動作を行う。
すなわち、図6中に示すように、遊技メダルの有無をチェックし(S43)、遊技メダルがない場合には(S43:NO)、遊技メダル投入待ち時の表示(メダルが投入可能なことの報知)の処理(S44)に移行し、遊技メダルがある場合は(S43:YES)、遊技状態のチェックの処理(S45)へ移行する。ここで、遊技メダルがあるとは、遊技を行うための規定数を満たすために、遊技メダルが賭け設定(ベット)されている状態を示す。遊技メダル投入待ち時の表示の処理(S44)においては、ドアスイッチ信号及び設定ドアスイッチ信号がONの状態で、設定キースイッチ信号がOFFからONになった場合に、設定表示LEDに設定値を表示し遊技を停止する。ドアスイッチ信号及び設定ドアスイッチ信号がONの状態で、設定キースイッチ信号がONからOFFになると、設定表示LEDを消灯し、遊技状態のチェックの処理(S45)へ移行する。
遊技状態のチェックの処理(S45)においては、遊技状態のチェックを行い、再遊技作動時でない場合は(S45:NO)、ブロッカ信号をON(通過可能状態)にして遊技メダル投入の受付を開始し、スタートレバーチェックの処理(S47)へ移行する。再遊技作動時の場合は(S45:YES)、貯留装置へ遊技メダルの投入が可能であれば(S46:YES)、ブロッカ信号をONにしてスタートレバーチェックの処理(S47)へ移行し、貯留装置へ遊技メダルの投入が可能でない場合は(S46:NO)、ブロッカ信号のONは行わずに自動投入動作を行い(S46a)、スタートレバーチェックの処理(S47)へ移行する。
続いて、スタートレバーチェックの処理(S47)においては、スタートレバー25の受付チェックとして、以下の処理を順に行う。すなわち、セレクタ通路に遊技メダルが滞留しているか否かを表すセレクタ通路センサ滞留フラグをチェックし、遊技メダルが滞留している場合は、獲得枚数表示LEDに対応するエラーコードを表示し遊技を停止する。その他の場合又はエラーが解除された場合は、投入センサ異常検出データをチェックし、異常入力を検出している場合は、獲得枚数表示LEDに対応するエラーコードを表示し、遊技を停止する。
さらに、その他の場合(異常入力を検出してない場合)又はエラーが解除された場合は、払出センサ異常検出データをチェックし、異常入力を検出している場合は、獲得枚数表示LEDにH0を表示し遊技を停止する。さらに、その他の場合(異常入力を検出していない場合)又はエラーが解除された場合は、オーバーフロー検出データをチェックし、遊技メダル補助収納庫が満杯の場合は、獲得枚数表示LEDにFEを表示し遊技を停止する。その他の場合(遊技メダル補助収納庫が満杯でない場合)又はエラーが解除された場合は、更に以下の処理に移行する。
すなわち、投入された遊技メダル枚数と規定数を比較し、規定数と一致した場合には次の処理(スタートレバー受付とするか否かを決める処理)へ移行し、その他の場合はスタートレバー受付不可として、スタートレバー受付に係る判定の処理(S48)へ移行する。さらに、上述のスタートレバー受付とするか否かを決める処理では、停止ボタン24C〜24L、清算ボタン及び各投入ボタンの操作がない状態で、かつスタートレバーセンサ信号がOFFからONに変化した場合は、スタートレバー受付となり、その他の場合はスタートレバー非受付となる。
スタートレバー受付に係る判定の処理(S48)において、スタートレバー受付でないと判定した場合は(S48:NO)、遊技メダルの有無に係るチェックの処理(S43)へ戻り、スタートレバー受付の場合は(S48:YES)、内蔵乱数の取り込みを行い、内部抽せん処理(S49)、遊技演出処理(S50)へ移行する。内部抽せん処理(S49)においては、条件装置(再遊技、入賞役、役物、役物連続作動装置)や図柄制御番号等を決定する内部抽せん処理を行う。また、遊技演出処理(S50)においては、フリーズ演出等の遊技演出に係る処理が行われる。なお、遊技演出については後述する。
遊技演出処理(S50)の終了の際には、最小遊技時間が経過したのかのチェックを行い、最小遊技時間が経過している場合は、新たに最小遊技時間をセットし、回胴回転開始処理(S51)へ移行する。最小遊技時間が経過していない場合は、最小遊技時間が経過するまで待機する。回胴回転開始処理(S51)においては、回胴の回転に係る機構の制御が行われるが、これについては後述する。
続いて、引き込みポイント(ずらしコマ数)作成要求があるか否かを判定し(S52)、作成要求がある場合(S52:YES)には引き込みポイントの作成を行い(S53)、その他の場合は(S52:NO)、回転停止受付チェックの処理(S54)へ移行する。上述のS53での引き込みポイントの作成においては、先ず、全ての図柄位置に対する引き込みポイントに初期値をセットし、図柄数に応じた分の引き込みポイントを作成し、対応した図柄番号の記憶領域にコピーする。
回転停止受付チェックの処理(S54)においては、回胴停止受付待機時間が経過し、かつすべての回胴センサ信号がONになっている場合は、回胴停止受付を可にし、その他の場合は、回胴停止受付を不可にする。この後、停止ボタン受付チェック(S55)を行い、停止ボタン24C〜24Lの操作を受け付けた場合は(S55:YES)、停止ボタン受付の処理(S56)へ移行し、その他の場合は全回胴停止チェックの処理(S57,S58)へ移行する。
停止ボタン受付の処理(S56)においては、回胴51C〜51Lの停止位置を決定する。全回胴停止チェックの処理(S57,S58)においては、すべての回胴51C〜51Lが停止し、かつ、スタートレバー25及び停止ボタン24C〜24Lの操作が終了しているかのチェックを行う。そして、S58の全回胴停止の判定の処理において、肯定の判定がされた場合は(S58:YES)、表示判定の処理(S59)へ移行し、その他の場合は回胴回転開始処理(S51)に戻る。
表示判定処理(S59)においては、以下の処理を順に行う。すなわち、表示判定を行った結果、図柄の組合せ表示が異常の場合は、獲得枚数表示LEDに対応するエラーコードを表示し、遊技の動作を停止する。
さらに、セレクタ通路センサ滞留フラグをチェックし、セレクタ通路センサに遊技メダルが滞留している場合は、獲得枚数表示LEDに対応するエラーコードを表示し、遊技を停止する。その他の場合(遊技メダルが滞留していない場合)又はエラーが解除された場合は投入センサ異常検出データをチェックし、異常入力を検出している場合は、獲得枚数表示LEDに対応するエラーコードを表示し、遊技を停止する。その他の場合(異常入力を検出していない場合)又はエラーが解除された場合は払出センサ異常検出データをチェックし、異常入力を検出している場合は、獲得枚数表示LEDにH0を表示し遊技を停止する。その他の場合(異常入力を検出していない場合)又はエラーが解除された場合は、入賞による遊技メダル払出しの処理(S60)に移行する。
入賞による遊技メダル払出しの処理(S60)においては、入賞による遊技メダル払出がある場合は、遊技メダルを払出す。さらに、遊技状態の終了をチェックし(S61)、終了の場合は遊技状態に応じた終了処理を行ってから、遊技進行メインの処理を再度実行する。なお、役物や連続作動装置に入賞が発生していても、対応する図柄の組合せが揃っていない場合は、これらの入賞に係るフラグは持ち越す。また、再遊技や小役の条件装置に係るフラグはクリアする。
<<主制御基板におけるインターバル割込み処理>>
次に、インターバル割込み処理について、図7に基づき説明する。インターバル割込み処理は、図4に示す電源投入時の処理で起動された割込みタイマ(S10参照)や、図5に示す設定変更装置処理において起動された割込みタイマ(S23参照)に基づき、所定周期(ここでは2.235ms)ごとに繰り返し実行されるものである。
このインターバル割込み処理においては、割込み開始時の処理(S71)として、レジスタを退避し、割込みフラグのクリアを行う。さらに、電源断検知信号の有無の判定(S72)を行い、電源断検知信号を検出した場合には(S72:YES)、後述する電源断処理を実行する。電源断検知信号を検出しなかった場合には(S72:NO)、タイマ計測の処理(S73)を行い、1バイトタイマ、2バイトタイマの順にタイマ計測を行う。さらに、入力ポートデータ作成の処理(S74)において、所定の入力ポート(0〜2)を読み込み、各ポートにおける信号の、レベルデータ、立ち上がりデータ及び立ち下がりデータを保存する。
続いて、回胴駆動管理の処理(S75)を実行し、第1回胴51C、第2回胴51R及び第3回胴51Lの回転駆動制御を行う。さらに、ポート出力の処理(S76)において、各回胴のモータ信号、ブロッカ信号、ホッパモータ駆動信号及び投入枚数表示LED信号の出力データを出力し、入力エラーチェックの処理(S77)において、異常入力のチェックを行う。さらに、制御コマンド送信処理(S78)において、サブ制御基板31への制御コマンド(サブ制御コマンド)の送信を行い、外部信号出力処理(S79)において、外部集中端子板70へ信号出力データを出力する。主制御基板61からサブ制御基板31への制御コマンド(サブ制御コマンド)は、1バイトからなる第1コマンドと、1バイトからなる第2コマンドで構成されている。
続いて、LED表示処理(S80)において、貯留枚数表示LED、獲得枚数表示LED、設定表示LED、遊技開始表示LED、打止表示LED、投入表示LED及び再遊技表示LEDの出力データを出力する。さらに、3枚投入LEDの管理(S81)、ソフト乱数管理処理(S82)、内蔵乱数のチェックの処理(S83)を行い、S83で内蔵乱数に係る異常を検知した場合(S84:YES)は、エラー表示の処理(S86)へ移行し、その他の場合は割込み終了時の処理(S85)へ移行する。エラー表示の処理(S86)においては、獲得枚数表示LEDに対応するエラーコードを表示して、遊技の動作を停止する。割込み終了時の処理(S85)においては、レジスタを復帰し、割込みを許可する。そして、遊技進行メイン処理の元の位置へ復帰する。
<<主制御基板における電源断処理>>
次に、前述の電源断処理について、図8に基づき説明する。電源断処理においては、ブロッカ信号及びホッパモータ駆動信号のクリア(S91)、スタックポインタの保存(S92)、電源断処理済みフラグのセット(S93)、コマンド送信履歴フラグのクリア(S94)、RWMチェックサムセット(S95)が順に実行される。スタックポインタの保存の処理(S92)においては、裏レジスタの退避も行われている。また、RWMチェックサムセットの処理(S95)においては、全RWMエリアのチェクサムデータを算出し、保存する。さらに、RWMの書込み禁止の処理(S96)が行われ、メインCPUへの供給電圧が低下してリセットされるのを待つリセット待ちの状態となる(S97)。
電源断処理の実行の契機としては、メインCPUのNMI端子に電圧低下を示す電源断信号が入力されたことに基づきノンマスカブル割込み(NMI)を発生させるハードウェア的なものと、割込処理で、電圧低下が検知された際に立てた電源断フラグを確認して行うソフトウェア的なものなどがある。本実施例の主制御手段においては、前述のように電源断検知信号の有無の判定(S72)が行われており、電源断フラグの確認を行うソフトウェア的な手法が採用されているが、NMIによるハードウェア的な手法を採用することも可能である。また、NMI端子に入力される電源断信号に基づき、電源断フラグを設定し、電源断処理の実行契機としても良い。
<回胴の回転に係る機構の制御>
<<回胴の加速及び定速処理>>
次に、前述の第1回胴51C〜第3回胴51Lの回転に係る機構の制御について説明する。各回胴51C〜51Lに係る制御は、主には、前述の回胴駆動管理の処理(図7中のS75)により行われる。先ず、回胴の加速及び定速処理について、各回胴51C〜51Lには、φ3、φ2、φ1、φ0の4相のステッピングモータを使用し、1−2相励磁方式で駆動を行う。1ステップは1.071°であり、336ステップで1回転する。また、1回胴の図柄数は20で、1図柄のステップ数は16.8ステップとなっている。
励磁データの出力は、第1回胴51C〜第3回胴51Lについて個別に割当てられた出力ポートの下位4ビットを使用して行う。各出力ポートの下位4ビットの励磁データ出力相は、何れも共通であり、0ビット目がφ0、1ビット目がφ1、2ビット目がφ2、3ビット目がφ3となっている。出力を行う励磁データ出力相の順番は、例えば0ビット目のφ0を先頭として表すと、φ0、φ0・φ1、φ1、φ1・φ2、φ2、φ2・φ3、φ3、φ3・φ0の順で繰り返される。
各回胴51C〜51Lは、以下に説明する各種のデータ、即ち、回胴駆動状態番号、回胴駆動パルス出力カウンタ、加速時の回胴駆動パルス切替え回数、1図柄のステップ番号、図柄番号(通過位置用)、図柄番号(停止位置用)、回胴回転不良検出カウンタ、回胴駆動パルスデータ検索用カウンタ、回胴回転開始待機カウンタ、などを用いて管理されている。各回胴の駆動状態は、割込み(2.235ms)ごとに回胴駆動管理モジュールでチェックを行い、条件に応じて励磁データを出力する。
上述の各種のデータのうち、回胴駆動状態番号は、0〜5の値を持っており、0は停止中又は揺れ変動中、1は回転開始待機、2は減速中、3は減速開始、4は定速中、5は加速中をそれぞれ表している。また、回胴駆動パルス出力カウンタは、励磁を切り替える割込み回数を表しており、加速時の回胴駆動パルス切替え回数は、回胴の立ち上がりパターン(割込み回数)テーブルのオフセットを表しており、1図柄のステップ番号は、1図柄のステップ数を表している。
さらに、図柄番号(通過位置用)は、中段を通過している図柄番号(0〜20)を表しており、その値がFFH(Hは16進数表記であることを表す)である場合は、回胴センサ未通過であることを表している。図柄番号(停止位置用)は、中段に表示させる図柄番号(0〜20)を表しており、その値がFFHである場合は、図柄番未設定であることを表している。回胴回転不良検出カウンタは、回胴の回転不良を検出するカウンタであり、センサ通過後のステップ数/2の値を出力する。
回胴駆動パルスデータ検索用カウンタは、下位3ビットが回胴駆動パルス(励磁データ)テーブルのオフセットを表し、回胴回転開始待機カウンタは、最小遊技時間経過から回胴回転開始までの割込み回数を表している。なお、これらの各種データは、各回胴の各々に対応して生成されるものである。
回胴51C〜51Lの回転の方向について、回胴51C〜51Lの加速及び定速処理において、出力を行う励磁データ出力相の順番は、前述のように各回胴で常に同一のサイクルとなるので、すべての回胴51C〜51Lにおいて、回胴は常に同方向で回転する。
遊技の結果に対する影響について、励磁出力の順番及び加速処理(回胴の回転の速さが一定になるまでの処理)は、遊技機の内部的及び外部的要因に一切影響されないよう制御が行われているため、回胴の回転の方向及び回胴の回転の速さが一定になるまでの過程が、遊技の結果に影響を及ぼすことはないといえる。
<<回胴の加速及び定速処理の詳細>>
<<<スタートレバーの受付>>>
続いて、回胴の加速及び定速処理の詳細について説明する。スタートレバー25の受付けにおいて、スタートレバー25は、投入枚数が前述の規定数ではない場合、遊技メダル投入動作が行われている場合、又はその他の前面ドア部11の各種ボタンが操作されている場合は受付不可となる。また、スタートレバー25が受付可能な場合のみ、前述の遊技開始表示LEDが点灯する。
スタートレバー25を受け付ける(スタートレバーセンサ信号がOFFからONになる)と、以下の処理が実行される。すなわち、遊技演出抽せん当せん時は、実行する遊技演出の内容が定まる遊技演出番号を定め遊技演出を行う。遊技演出は、代表的には、回胴51C〜51Lを用いて行われるフリーズ演出(後述する)である。
さらに、前述の回胴回転開始待機カウンタのセットをする。そして、遊技演出終了時でない場合は、回胴駆動パルスデータ検索用カウンタを補正し、回胴回転開始特の全回胴の励磁出力を1相にする。前述の最小遊技時間(4.1秒)が経過していない場合は、経過するまで待機する。
続いて、回胴51C〜51Lの加速を開始するために、回胴51C〜51Lを制御する各RWMに所定のデータをセットする。具体的には、各回胴51C〜51Lについて、回胴駆動状態番号には回転開始待機を示す1、回胴駆動パルス出力カウンタには1、(加速時の)回胴駆動パルス切替え回数には10、図柄番号(通過位置用)には回胴センサ未通過であることを表すFFH、図柄番号(停止位置用)には、図柄番未設定であることを表すFFH、そして、回胴回転不良検出カウンタには0がセットされる。
<<<回胴の回胴回転開始待機処理(ランダム遅延時間の設定)>>>
続いて、回胴51C〜51Lにランダム遅延時間を設定する回胴回転開始待機処理について説明する。この回胴回転開始待機処理では、回胴駆動状態番号が1(回転開始待機)の状態においては、割込みごとに回胴回転開始待機カウンタの値を1減算し、所定条件(後述する)が満たされるまで待機し、その後、回胴駆動状態番号5(加速中)にする。また、遊技演出中は、待機中に回胴の駆動演出(揺れ変動)を行う。なお、回胴駆動状態番号が0(停止中又は揺れ変動中)である場合も、回胴の駆動演出(揺れ変動)を行う。
回胴回転開始待機カウンタのセットについては、遊技演出終了時とその他の場合とで態様が異なる。遊技演出終了時の場合においては、ランダム遅延による図柄の再配置を行うために、各回胴ごとに設定した乱数値+1に補正値を加算した値である2〜337を各回胴の回胴回転開始待機カウンタにセットする。つまり、回胴回転開始待機カウンタにセットした値に応じてリールの加速処理が遅延する。なお、ランダム遅延は、回胴51C〜51Lの作動開始のタイミングをランダムに遅延させるものである。
回胴駆動状態番号が4(定速中)の場合においての1周の回胴回転に要する時間は、336ステップ分の励磁切替えが割込みごと(2.235ms)に行われることから、750.960msとなる。そのため、各回胴ごとに設定した乱数値の範囲を0〜335の336通りとし、各回胴ごとに設定した乱数値(第1回胴回転開始待機乱数〜第3回胴回転開始待機乱数)による遅延時間の範囲を0.000ms〜748.725とする。さらに、揺れ変動が図柄の再配置に影響を及ぼすことがないようにするための補正値を1としている。また、各乱数は、更新方法及び更新タイミングが異なることから、同期することはなく、1つの乱数値からその他の乱数値を容易に推定できないようになっている。
図9(a)は、回胴を用いた遊技演出を実行した後、所定のタイミング(スタートレバー25の受け付けや、所定時間の経過など)から、全ての回胴51C〜51Lが加速を終えて定速中の状態になるまでの状態を示している。図9(a)中においては、最上段から順に第1回胴、第2回胴、第3回胴の動作を示しており、各回胴について、下から揺れ変動、加速、定速の順に動作態様の変化を縦に並べて示している。さらに、各回胴について共通に横軸には、遊技演出中から、ランダム遅延による図柄の再配置が行われる状態を時系列に並べて示している。
例えば、図中の最上段に示す第1回胴については、遊技演出中に揺れ変動が実行され、所定のタイミングを基準に遊技演出の期間を終え、ランダム遅延時間の計時を行う。そして、図中に示すように、ランダム遅延時間が終わると、揺れ変動の状態から加速の段階に移り、その後定速の段階に移行する。図中の中段に示す第2回胴については、第1回胴と同様に遊技演出中に揺れ変動が実行され、第1回胴と共通のタイミングを基準に遊技演出の期間を終え、ランダム遅延時間に入る。ここでは、第2回胴のランダム遅延時間は、第1回胴よりも長くなっており、第1回胴が定速の段階に達した後に加速の段階に移り、その後定速の段階に移行している。
図中の下段に示す第3回胴については、他の回胴と同様に遊技演出中に揺れ変動が実行され、他の回胴と共通のタイミングを基準にランダム遅延時間に入る。第3回胴のランダム遅延時間は、第1回胴よりも長く、第2回胴よりも短くなっており、第1回胴が定速の段階に達し、第2回胴が揺れ変動を行っている状態で加速の段階に移り、第2回胴が加速の段階に移ったタイミングとほぼ同じタイミングで定速の段階に移行している。そして、各回胴のランダム遅延時間の関係が上述のような関係となった場合には、第1回胴51C、第3回胴51L、第2回胴51Rの順で揺れ変動を終えて回転を開始することになる。
このような遊技演出終了時の回胴回転開始待機カウンタのセット態様とは異なるその他の場合のセット態様は、割込みにより回胴回転開始待機カウンタを1減算して0になると回胴駆動状態番号を5にして加速処理を行うものである。
前述の所定条件について、本実施例では、揺れ変動フラグON及び揺れ変動カウンタ2〜5の場合は、回胴回転開始待機カウンタが1になるまで待機することが規定されている。その他の場合、回胴回転開始待機カウンタが0になるまで待機するようになっている。なお、揺れ変動フラグ及び揺れ変動カウンタについては後述する。
<<<回胴の加速処理>>>
続いて、回胴の加速処理における動作について説明する。各回胴において加速処理は同一である。回胴駆動状態番号が5(加速中)の状態においては、割込みごとに回胴駆動パルス出力カウンタを1減算し、0になったときに、以下の処理を行う。先ず、回胴駆動パルスデータ検索用カウンタを1加算し、下位3ビットの値(0〜7)をもとに回胴駆動パルステーブルから取り出したデータにより励磁出力を行い、回胴を1ステップ移動させる。加速時の回胴駆動パルス切替え回数を1減算し、0でなければその数値をもとに回胴立ち上がりパターンテーブルよりデータを取り出し、回胴駆動パルス出力カウンタにセットする。そして、加速時の回胴駆動パルス切替え回数が0になったら、回胴駆動状態を4(定速中)にする。
回胴の加速時間については、回胴回転開始から励磁切替え時間は、回転開始からのステップ数に応じて規定されている。そして、本実施例では、回転開始からの+1ステップ目の励磁切替え時間は50割込みに相当する111.75ms、+2ステップ目では14割込みに相当する31.290ms、+3ステップ目では3割込みに相当する6.705ms、+4〜8ステップ目では2割込みに相当する4.470ms、定速に達する+9ステップ目では1割込みに相当する2.235msとなっている。
<<<回胴の定速処理>>>
続いて、回胴の定速処理について説明する。回胴の定速処理における動作について、回胴駆動状態番号が4(定速中)の状態においては、割込みごとに以下の処理を行う。さらに、回胴駆動パルス出力カウンタを1減算し、回胴駆動パルス出力カウンタが0であることを確認して、再度回胴駆動パルス出力カウンタに1をセットする。また、回胴駆動パルスデータ検索用カウンタが偶数の場合は回胴回転不良検出カウンタを1加算する。さらに、回胴駆動パルスデータ検索用カウンタを1加算し、下位3ビットの値(0〜7)をもとに回胴駆動パルステーブルから取り出したデータにより励磁出力を行い、回胴を1ステップ移動させる。そして、回胴センサ信号がOFFからONになり、回胴の原点位置を検出すると、1図柄のステップ番号に4、図柄番号(通過位置用)に0、回胴回転不良検出カウンタに0をセットする。
回胴の原点位置を検出できない場合(回胴センサ信号がOFFからONになる場合以外)、割込みごとに1図柄のステップ番号を1減算する。1図柄のステップ番号減算した結果が0となる場合は1図柄のステップ番号を16にセットし、図柄番号(通過位置用)に1加算する。さらに、図柄番号(通過位置用)を1加算した結果が20を超えた場合は図柄番号(通過位置用)に0をセットする。
回胴の定速処理における回転速度の設計について、定速状態での1周の回胴回転に要する時間、定速時において336ステップ分の励磁切替えが割込みごと(2.235ms)に行われることから750.96msとなる。よって、定速状態での設計回転速度は、79.90回転/分となる。
<<<回胴が回転不良を生じた場合の処理>>>
続いて、回胴が回転不良した場合の処理について説明する。回胴回転中において、回胴回転不良により回胴センサを遮るイニシャライズ(インデックス)の通過が遅れることがある。このような状態になると1回の回胴回転に要する割込み数が336回を超えることになり、正確な図柄位置を検出できなくなる場合がある。そこで、(回胴)回転不良検出カウンタを用いて回胴回転不良の検査を行っている。
回転不良検出カウンタは、回胴駆動状態番号が4(定速中)の場合においては、回胴駆動パルスデータ検索用カウンタが偶数の場合に1加算され、通常0〜167の範囲でカウントがされるが、回胴センサを遮るイニシャライズの通過が確認されなかった場合は、そのまま167を超えてカウントがされる。
回胴回転不良の検出については、以下の処理を行う。すなわち、回胴回転不良検出カウンタが184以上となった場合に回胴回転不良であると判断する。当該回胴を再加速させるために、回胴を制御する各RWMにデータをセットする。具体的には、各回胴について、回胴駆動状態番号には加速中を示す5、回胴駆動パルス出力カウンタには1、(加速時の)回胴駆動パルス切替え回数には10、図柄番号(通過位置用)には回胴センサ未通過であることを表すFFH、図柄番号(停止位置用)には、図柄番未設定であることを表すFFH、そして、回胴回転不良検出カウンタには0がセットされる。
<<遊技演出>>
続いて、回胴51C〜51Lを用いて行われる前述の遊技演出について説明する。スタートレバー25の受付時において、遊技演出抽せん当せん時は、遊技の進行を遅延し所定の時間待機する回胴駆動の演出(遊技演出)を行う。この遊技演出としては、代表的にはフリーズ演出がある。遊技演出中は、前述の各種データ(回胴駆動状態番号、回胴駆動パルス出力カウンタ、加速時の回胴駆動パルス切替え回数、等の一連のデータ)により管理し、割込み(2.235ms)ごとに前述の回胴駆動制御モジュールでチェックを行い、条件に応じて励磁データを出力する。尚、遊技演出をスタートレバー25の受付時に抽せんにより実行するか否か定めたが、前回遊技の結果に応じて実行するか否か定めるようにしてもよい。
<<<遊技演出中の回胴の加速、定速及び減速処理>>>
以下に、遊技演出中の回胴の加速及び定速処理の詳細を示す。スタートレバー25の受付け時において、遊技演出抽せんに当せんしていれば、遊技演出として以下の処理を行う。なお、遊技演出中におけるスタートレバーの操作受付可能時の待機中に係る処理として、以下の処理を実行する場合もある。
すなわち、回胴回転開始待機カウンタのセットをする。遊技演出抽せん当せん時は、回胴駆動パルスデータ検索用カウンタを補正し、回胴回転開始時の全回胴の励磁出力を1相にする。
最小遊技時間が経過していない場合は、経過するまで待機する。さらに、回胴の加速を開始するために、前述の加速開始時のデータを、回胴を制御するRWMにセットする。具体的には、回胴駆動状態番号には回転開始待機を示す1、回胴駆動パルス出力カウンタには1、(加速時の)回胴駆動パルス切替え回数には10、図柄番号(通過位置用)には前述の回胴センサを未通過であることを表すFFH、図柄番号(停止位置用)には、図柄番未設定であることを表すFFH、そして、回胴回転不良検出カウンタには0がセットされる。そして、遊技演出中に係る前述の、回胴の回胴回転開始待機処理、回胴の加速処理、回胴の定速処理、回胴が回転不良した場合の処理、を行う。
続いて、遊技演出中の回胴の減速処理の詳細について説明する。停止ボタン24C〜24Lを受け付けると、表示させる図柄番号を図柄番号(停止位置用)にセットし、回胴駆動状態番号に3(減速開始)をセットする。遊技演出中に係る回胴の減速開始処理では、回胴駆動状態番号が3(減速開始)の状態においては、1図柄のステップ番号が13、かつ図柄番号(通過位置用)と図柄番号(停止位置用)が一致した場合は、回胴駆動状態番号に2(減速中)、回胴駆動パルス出力カウンタに35(78.23ms)をセットし、励磁出力を2相(φ0・φ3)ONにする。
遊技演出中に係る回胴の減速中処理では、回胴駆動状態番号が2(減速中)の状態においては、励磁出力は2相(φ0・φ3)ONを出力し、割込みごとに回胴駆動パルス出力カウンタを1減算し、減算した結果0になった場合は、回胴駆動状態番号に0(揺れ変動中)をセットし、励磁出力を1相(φ0)ONにする。
遊技演出中に係る回胴の揺れ変動中処理では、回胴駆動状態番号が0(揺れ変動中)の状態においては、回胴の駆動演出(揺れ変動)を行う。また、スタートレバーが操作受付可能な状態、かつスタートレバーセンサ信号がOFFからONになる、又は入力検知時間経過により回胴駆動状態番号を1(回転開始待機)にする。
<<<通常遊技中の回胴の減速処理>>>
続いて、通常遊技中の回胴の減速処理の詳細について説明する。停止ボタン24C〜24Lを受け付けると、表示させる図柄番号を図柄番号(停止位置用)にセットし、回胴駆動状態番号に3(減速開始)をセットする。通常遊技中に係る回胴の減速開始処理では、回胴駆動状態番号が3(減速開始)の状態においては、1図柄のステップ番号が13、かつ図柄番号(通過位置用)と図柄番号(停止位置用)が一致した場合は、回胴駆動状態番号に2(減速中)をセットする。
通常遊技中に係る回胴の減速中処理では、回胴駆動状態番号が2(減速中)の状態においては、励磁出力は4相ONを出力し、回胴駆動パルス出力カウンタの値を85から割込みごとに1減算し、減算した結果0になって約190ms(=85×2.235ms)が経過した場合は、回胴駆動状態番号に0(ここでは停止中)をセットし、励磁出力をOFFする。
<<<揺れ変動>>>
続いて、揺れ変動のための制御態様について説明する。揺れ変動は、揺れ変動フラグ及び揺れ変動カウンタをもとに、揺れ変動駆動データテーブルから取得する回胴の駆動データにより、2相(φ0・φ3)ON、又は1相(φ0)ONの励磁出力を行う回胴の駆動演出である。以下に揺れ変動カウンタ、減速終了フラグ、揺れ変動フラグ及び取得する回胴駆動データの取得の詳細を示す。
揺れ変動カウンタについて、揺れ変動カウンタは、揺れ変動の制御用のインクリメントカウンタであり、割込み発生時に0〜179の範囲で更新する。減速終了フラグについて、減速終了フラグは、遊技演出中において、減速中が終了したことを示すフラグであり、回胴駆動状態番号が2(減速中)の状態が終了したときに、制御回胴(制御対象となっている回胴)の減速終了フラグがONとなり、遊技演出中に、回胴駆動状態番号が5(加速中)の状態が開始したときに制御回胴の減速終了フラグがOFFとなる。
揺れ変動フラグについて、揺れ変動フラグは、遊技演出中において、揺れ変動を開始することができることを示すフラグであり、制御回胴の減速終了フラグがON、かつ揺れ変動カウンタが0のときに、制御回胴の揺れ変動フラグがONとなり、回胴駆動状態番号が5(加速中)の状態が開始したときに制御回胴の揺れ変動フラグがOFFとなる。揺れ変動フラグがONのときに、揺れ変動カウンタの値に応じて、揺れ変動駆動データテーブルから対応する回転駆動データを取得する。
<<<遊技演出中の回胴に係る制御態様の一例>>>
続いて、遊技演出中の回胴の制御態様の一例について説明する。図9(b)は、遊技演出中の加速から遊技演出終了後の全ての回胴(第1回胴51C〜第3回胴51L)が定速中の状態になるまでのタイムチャートを示している。
図9(b)中においては、最上段から順に第1回胴、第2回胴、第3回胴の動作を示しており、各回胴について、上から停止ボタンセンサ信号、回胴の回転、回胴駆動状態、遊技機の状態の欄を縦に並べて示している。さらに、停止ボタンセンサ信号の欄及び回胴の回転の欄については、線図により、ONとOFFの状態、及び、回転と停止の状態をそれぞれ表すようになっている。また、回胴駆動状態については、いずれの回胴も、加速中、定速中、減速開始、減速中、揺れ変動中、回胴回転開始待機、加速中、及び定速中の状態に順に変化する。さらに、遊技機の状態については、遊技演出、遊技演出及び揺れ変動、揺れ変動、遊技中の順に変化する。また、ここでは、第1回胴、第2回胴、第3回胴の金で停止する場合を示している。
例えば、図中の最上段に示す第1回胴については、遊技機の状態が遊技演出の状態であり、回胴駆動状態が加速中から定速中に移行した後に、停止ボタン24Cが操作されて停止ボタンセンサ信号がOFFからONに変化すると、回胴駆動状態が、図中に示すように、減速開始に変化する。その後、回胴駆動状態が、減速開始から減速中、揺れ変動中、回胴回転開始待機、加速中、定速中へと変化する。このうち、回胴駆動状態が、減速開始から減速中の間は、遊技機の状態が遊技演出中であり、揺れ変動中は遊技機の状態が遊技演出及び揺れ変動中であり、回胴回転開始待機は、遊技機の状態が揺れ変動中であり、加速中及び定速中は、遊技機の状態が遊技中となっている。
図中の中段に示す第2回胴については、第1回胴よりも後に、停止ボタンセンサ信号がONとなり、定速中の回転駆動状態の期間が、第1回胴よりも長くなっている。これに伴い、減速開始及び減速中の期間の開始が第1回胴よりも遅れ、回胴駆動状態が揺れ変動中となる期間が、第1回胴よりもその分短くなっている。さらに、図9(b)に示す例では、前述のランダム遅延時間が、第1回胴、第3回胴、第2回胴の順で短く(第1回胴が最も短く)なっており、第2回胴の回胴駆動状態が、回胴回転開始待機を経て加速中に移行するタイミングが、第1回胴よりも早くなっている。
図中の下段に示す第3回胴については、第2回胴よりも後に、停止ボタンセンサ信号がONとなり、定速中の回転駆動状態の期間が、第2回胴よりも長くなっている。これに伴い、減速開始及び減速中の期間の開始が第2回胴よりも遅れ、回胴駆動状態が揺れ変動中となる期間が、第2回胴よりもその分短くなっている。さらに、図9(b)に示す例では、第3回胴の回胴駆動状態が、回胴回転開始待機を経て加速中に移行するタイミングは、第2回胴よりも遅く、第1回胴よりも早くなっている。ここで、回胴駆動状態が減速開始から減速中を終える期間は、各回胴で共通になっている。また、回胴駆動状態が揺れ変動中となるタイミング(遊技機の状態が遊技演出及び揺れ変動から揺れ変動のみとなるタイミングと同じ)は、各回胴で共通になっている。
<<<遊技演出に係る制御の主要動作>>>
続いて、遊技演出に係る制御の主要動作について説明する。図10は、遊技演出に係る制御の主要動作のフローチャートを示している。遊技演出に係る処理が開始されると、入力検知時間経過フラグ初期化の処理(S101)において、入力検知時間経過フラグをOFFにする。その後、遊技演出中の条件装置検索番号セットの処理(S112)が実行され、遊技演出に要する所定の条件装置検索番号をセットする。ここでは、所定の条件装置検索番号として、所定の入賞及び再遊技条件装置検索番号がセットされる。
続いて、回胴回転開始(S113)から全回胴停止の判定(S122)までの処理が行われる。これらの処理(S113〜S122)をまとめて回胴停止管理処理として捉えることもできる。そして、本実施形態では、これらのS113からS132までの処理において、停止ボタン24C〜24Lの操作に対して所定時間(この例では20秒)の受付待機の時間を設けている点や、自動停止の機能を備えている点に特徴を有している。
すなわち、回胴回転開始の処理(S113)の後、引込みポイント作成要求があるか否かを判定し(S114)、引込みポイント作成要求がある場合(S114:YES)は、引込みポイントの作成を行い(S115)、停止ボタン24C〜24Lに係る入力検知時間(ここでは20秒)をセットする(S116)。上述のS114で引込みポイント作成要求がない場合は(S114:NO)、入力検知時間のセットの処理(S116)を行う。
さらに、入力検知時間が経過したか否かを判定し(S117)、入力検知時間が経過していなければ(S117:NO)、回転停止受付チェックの処理(S118)を行い、入力検知時間が経過していれば(S117:YES)、後述する停止ボタン受付の処理(S129)へ飛ぶ。回転停止受付チェックの処理(S118)においては、停止ボタン24C〜24Lの受付に係る処理や、停止ボタン24C〜24Lが所定時間(ここでは20秒間)操作されなかった場合に実行される回胴51C〜51Lの自動停止係る処理を行う。そして、停止ボタン操作があったか否かが判定され(S119)、操作があった場合には(S119:YES)、停止ボタン受付の処理(S120)を行う。一方、停止ボタン操作がなかった場合には(S119:NO)、入力検知時間経過の判定処理(S117)へ戻る。
続いて、全回胴停止チェックの処理(S121)を行い、回胴51C〜51Lを停止させるための処理を実行する。さらに、全回胴停止の判定処理(S122)により、全回胴が停止したことが判定されれば(S122:YES)、続く入力検知時間セットの処理(S103)において、入力検知時間(20001.02ms)をセットする。なお、上述のS122で、全回胴の停止がされていないことが判定されれば(S122:NO)、引込みポイント作成要求があるか否かの判定処理(S114)へ戻る。入力検知時間チェックの処理(S104)においては、入力検知時間の経過のチェックを行い、経過している場合は(S104:YES)、遊技演出チェックの処理(S106)へ移行し、その他の場合は(S104:NO)、スタートレバー受付チェック(S105)の処理へ移行する。
スタートレバー受付チェック(S105)においては、スタートレバー25が操作受付可能な状態、かつスタートレバーセンサ信号がOFFからONである場合は(S105:YES)、遊技演出チェック処理(S106)に移行し、その他の場合は(S105:NO)、スタート入力検知時間チェックの処理(S104)へ移行する。
遊技演出チェック処理(S106)においては、遊技演出の終了判定及び遊技演出番号の更新を行う。
さらに、遊技演出終了判定(S107)において、遊技演出が終了の場合は(S107:YES)、回胴回転開始待機カウンタセットの処理(S108)へ移行し、その他の場合は(S107:NO)、入力検知時間経過フラグ初期化の処理(S101)へ移行する。回胴回転開始待機カウンタセットの処理(S108)においては、ランダム遅延に係る値をセットするための回胴回転開始待機カウンタのセットを行う。なお、回胴の回転について、前述の回転停止装置を作動させる場合を除き、停止する機能はない。
<フリーズ演出についての具体的説明>
<<フリーズ演出が行われる期間>>
次に、本実施例のスロットマシン10において遊技演出として実行される「フリーズ演出」について説明する。このフリーズ演出は、遊技の進行を所定期間一時停止状態にして遅延させるものであり、この意味で遅延演出ということもできる。図11はフリーズ演出の概要を説明するためのものであり、図11(a)は、回胴(本実施例では第1回胴51C〜第3回胴51Lのいずれか)が回転開始してから定速回転を経て停止するまでの状態を概略的に示している。回胴は、図中左端に示すように、スタートレバー25のON操作及び役抽選を経て回転を開始し、回転速度を徐々に上げて加速期間を終え、回胴制御上の「定速」に達する。その後、対応する停止ボタン(本実施例では第1停止ボタン24C〜第3停止ボタン24Lのいずれか)が操作されて停止入力(ストップ入力)があると、回胴が減速を開始して回転速度を徐々に落とし、回転停止に伴って入賞判定が行われる。
このような回胴の回転速度の変化の過程において、フリーズ演出は、回転開始から定速回転に達するまでの加速期間を利用して行われている。図11(b1)及び(b2)は、このような加速期間中に行われるフリーズ演出の態様を、回胴回転速度の面から例示するものである。これらのうち図11(b1)の例では、加速(演出用の加速)開始後、定速及び原則を経て一旦停止し、更に作動と停止を複数回繰り返す揺れ変動を行った後、再び加速(本加速)を開始して回胴制御上の「定速」に達する。この例では、演出用の加速の開始から、本加速により定速に達するまでが、回胴制御上の加速期間に相当する。また、上述の一旦停止から揺れ変動を行っている状態を「仮停止」ともいう。
また、図11(b2)の例では、加速(演出用の加速)開始後、回胴制御上の「定速」に至らない程度の一定速度で回胴を回転させ、その後停止までには至らない速度まで減速を行い、再度の加速を経て定速に達した後、減速して一旦停止する。その後、再び加速(本加速)を開始して定速回転を行う。なお、図11(b1),(b2)に示す例では、演出用の加速の開始から、本加速により定速回転が行われるまでの期間が数分(例えば2分)程度になる場合もある。また、ここで説明したフリーズ演出における加減速の態様は例示であり、フリーズ演出に係る加減速の態様としては、例示したもの以外にも種々のものを採用することが可能である。
<<フリーズ演出の分類>>
さらに、フリーズ演出に関しては以下のように分類して捉えることができる。すなわち、フリーズ演出は、遊技者がフリーズ演出の実行を容易に認識できるものと、認識できない(又は認識し難い)ものとに分けることができる。このうち、フリーズ演出の実行を容易に認識できるものには、スタートレバー25の操作に回胴を応答させないものや、応答はさせるが通常の遊技時の回胴の動作態様とは異なる態様で回胴を作動させるリール演出(回胴演出)を行うもの、などがある。スタートレバー25の操作に回胴を応答させないものとしては、スタートレバー25を操作しても回胴が作動開始しないものや、作動開始までに所定期間(例えば10秒間)を要するもの、などがある。
リール演出を行うものとしては、回胴上の図柄の位置検出を伴わないものと伴うものとがあり、図柄の位置検出を伴わないものとしては、スタートレバー25や3枚投入ボタン等の入力機器の操作に伴って回胴に所定の動作をさせるようなものがある。また、図柄の位置検出を伴うものとしては、例えば不揃いな出目(図柄の組合せ)が表示されている状態から特定の揃った出目(「777」など)を表示するものがある。なお、これらのような遊技者がフリーズ演出の実行を容易に認識できるものをまとめて、リール演出を行うものとして分類することも可能である。
一方、遊技者がフリーズ演出の実行を容易に認識できない(又は認識し難い)ものは、擬似遊技を行うものと称することができる。この擬似演出を行うものとしては、停止ボタン(本実施例では第1停止ボタン24C〜第3停止ボタン24L)の操作を伴うもの、揺れ変動を伴うもの、ランダム遅延を伴うもの、図柄の位置検出を伴うもの、及びこれらを組み合わせたもの、などがある。このうち、ランダム遅延は、回胴の作動開始のタイミングをランダムに遅らせることなどを意味している。
前述のようにフリーズ演出は、回胴の回転速度が、回胴制御上の「定速」に達するまでの期間を利用して行うものであり、フリーズ演出中に停止ボタンの操作を行う場合には、この停止操作が、演出ではない遊技制御上の回胴停止(前述の回転停止装置による回胴の停止ともいえる)に該当するのか否かの区別がつきにくくなることも考えられる。このため、停止ボタンの操作を伴うフリーズ演出においては、停止ボタンが操作された場合には揺れ変動を実行して回胴の作動状態を維持し、遊技制御上の停止との区別を明確化することもある。
また、図柄の位置検出を伴うものについては、停止ボタンの操作と組み合わせることで、遊技者が特定出目(「777」など)を揃えるのを補助しているとの誤解が生じることも考えられる。このため、更に前述の揺れ変動を組み合わせることで、回胴を停止させない制御態様を実行し、遊技制御上の回胴停止との区別を明確化することもある。
<<フリーズ演出の具体例>>
続いて、このようなフリーズ演出の具体的な態様について説明する。フリーズ演出は、各種の遊技上の操作、演出期間、リールの回転態様、停止時間の態様、などの点において多様性を有している。そして、フリーズ演出としては、例えば、遊技媒体(遊技メダル等)の受付け、予めクレジット(貯留)された遊技媒体の賭け枚数(ベット数)を定めるためのベットスイッチ(本実施例では1枚投入ボタン、3枚投入ボタン)の操作の受付け、遊技を開始するためのスタートスイッチ(ここでは本実施例のスタートレバー25及びスタートレバーセンサ41を含む意味)の操作の受付け、又は、リール(本実施例では回胴51C〜51L)の停止操作の受付け、等に関する機能を一時停止状態にすることが挙げられる。
フリーズ演出としては、前述した遊技の進行に関わる全ての機能に関して一時停止状態にしてもよいし、スタートスイッチの操作の受付けは有効にするが、ストップスイッチの操作の受付けは一時停止状態とする等の一部の機能に関してのみ一時停止状態としてもよい。
遊技の進行を一時停止状態にする態様としては、遊技者の操作に基づく制御処理(通過センサによる遊技媒体の投入検出処理、ベットスイッチの操作に基づいた賭け枚数設定処理、スタートスイッチの操作に基づいたリール回転処理または役抽選処理、リール停止スイッチ操作に基づいたリール停止処理)を行わないことが挙げられる。
スタートスイッチの操作に基づいて行われるフリーズ演出に関しては、スタートスイッチが操作されたときに所定期間はリールの回転を行わずに所定期間の経過後にリールの回転を行う場合や、スタートスイッチが操作されたときに所定期間は役抽選とリールの回転を行わずに所定期間の経過後に役抽選とリールの回転を行う場合や、スタートスイッチが操作されたときに所定期間は役抽選を行うがリールの回転は行わずに所定期間の経過後にリールの回転を行う場合や、スタートスイッチが操作されて役抽選が行われた後に所定期間を設定し所定期間中はリールの回転や停止を行う場合が挙げられる。
ストップスイッチの操作に基づいて行われるフリーズ演出に関しては、ストップスイッチの操作の受付けに基づいて行うフリーズ演出と、ストップスイッチの操作の結果、特定の図柄がリール上に停止表示されたことに基づいて行うフリーズ演出とにおいて、フリーズ演出のための制御処理が異なる。
ストップスイッチの操作の受付けに基づいて行うフリーズ演出の制御処理については、回転しているリール停止制御処理を行わないことが挙げられる。これにより所定期間においては、遊技者が回転しているリールを停止できなくなり、所定期間が経過してストップスイッチが操作されたことにより停止制御処理を行うので、ストップスイッチの停止受付けからリール停止までのタイミングを遅延させることができる。
ストップスイッチの操作の結果、特定の図柄がリール上に停止表示されたことに基づいて行うフリーズ演出の制御処理については、最後に操作されるストップスイッチ以外のストップスイッチの操作で特定の図柄がリール上に停止表示されたときは、次に停止するストップスイッチの停止制御を所定期間行わず、最後のストップスイッチの操作で特定の図柄がリール上に停止表示されたときは、次の遊技を開始するベットスイッチの操作に基づいた賭け枚数設定処理、通過センサによる遊技媒体の投入検出処理、または、リプレイが有効ライン上に停止したときに行う自動賭け枚数設定処理に基づく制御処理を所定期間行わないことが挙げられる。
フリーズ演出を行う所定期間は、遊技者の操作に基づく遊技進行制御を一時停止させるが、遊技の進行に関わらない遊技機動作は実行可能である。例えば、ストップスイッチの操作に基づく停止制御処理は行わないが、リールの回転態様は任意に設定することができる。
所定期間におけるリールの回転態様として、リールを通常回転とは逆方向に回転すること、リールを所定図柄数回転し特定の図柄組合せを停止すること、複数のリールのうち所定のリールを停止状態にして他のリールを回転状態にすること、リールの回転速度を変化すること、または、遊技者の操作に起因してリールの動作を変化することが挙げられる。
フリーズ演出を行う所定間隔は、所定の条件(遊技者の操作、抽選等)によって変化させることができる。ここで、所定の条件とは、遊技者による操作(スタートスイッチ、ベットスイッチ、ストップスイッチ、清算スイッチ)に基づく信号の検出や抽選による所定の結果が挙げられる。また、変化させることとは一時停止期間を短くすることや長くすることが挙げられる。
一時停止期間を短くする制御処理として、一時停止期間を強制終了すること、または、一時停止期間よりも短い期間に書き換えることが挙げられる。そして、一時停止期間を長くする制御処理として、一時停止期間の後に他の期間を付加すること、または、一時停止期間よりも長い期間に書き換えることが挙げられる。また、フリーズ演出に基づく一時停止期間は、最大時間が定められたものでなく、遊技者の操作に基づき一定の結果が得られるまで継続してもよい。
フリーズ演出を行う一時停止期間は、ウェイト期間(最小遊技時間)の経過後に設定してもよいし、ウェイト期間を含んで設定してもよい。ウェイト期間を含んだ場合は、ウェイト期間中にフリーズ演出が終了するか否かを判断して、終了する場合は、ウェイト期間後にフリーズ演出期間を設定する態様やフリーズ演出終了後に残りのウェイト期間を再開する態様が挙げられる。または、予めウェイト期間よりも長い期間のフリーズ演出期間を設けることで、このような判断処理を省略することも可能である。
フリーズ演出として、あたかも通常の遊技を進行しているかのような擬似遊技フリーズ演出(前述の擬似遊技に相当)を行うことが挙げられる。擬似遊技フリーズ演出は、スタートスイッチが操作されたことに基づいたスタートスイッチ受付け処理からリール回転開始処理までの間にフリーズ演出期間を定め、フリーズ演出期間中は、通常の遊技のようにスタートスイッチの操作に基づいてリール回転制御を行い、ストップスイッチの操作に基づいてリール停止制御を行う。但し、図6中にS49,S59,S60で示すような、スタートスイッチの操作に基づく役抽選処理やストップスイッチの操作に基づく入賞判定処理または払出し制御処理は行わない。
擬似遊技フリーズ演出では、ストップスイッチが操作されたタイミング、特定のリールが回転したタイミング、又は、全てのリールが停止したタイミングで上下に揺動する動きを行ってもよい。これにより、通常の遊技であるか擬似遊技フリーズ演出であるかを示唆することができる。
<<擬似遊技フリーズ演出の他の例>
擬似遊技フリーズ演出の手法としては、前述の例の他に、例えば、図12(a),(b)及び図13に示す手法1〜3のように、図柄位置を参照する制御を行って、擬似的に一旦特定の図柄の組合せ(「777」など)を表示するようなものもある。
すなわち、図12(a)〜(c)は、最上段から、スタートレバー25の状態、左回胴(第3回胴51L)、中回胴(第1回胴51C)、右回胴(第2回胴51R)の状態、停止ボタン24C〜24Lの状態を示すタイムチャートである。そして、各回胴の状態については、下から停止、加減速、定速の状態に分類されている。
図12(a)に示す手法1においては、スタートレバー25が操作され、スタートレバー25がONになったことが検出されると、各回胴の状態が、停止から加減速(ここでは加速)へと移行する。そして、停止ボタン24C〜24Lの状態は無効の状態となっており、停止ボタン24C〜24Lを操作しても、回胴の制御には反映されない。さらに、最上段のスタートレバーの欄に示すように、遊技機の状態が回胴演出中(遊技演出中)となり、各回胴については、演出図柄を揃える制御の実行中となる。そして、すべての各回胴の状態が加減速(ここでは減速)から停止の状態へと移行し、演出図柄として例えば「777」などの図柄の組合せが表示されて、演出図柄を揃える制御が終了する。
さらに、各回胴ごとにランダムな遅延時間(前述のランダム遅延時間)を設定し、このランダム遅延時間の経過後、各回胴の状態を停止から加減速(ここでは加速)、更には加減速から加速を経て、定速へ移行させる。そして、ランダム遅延時間が最も長い回胴(ここでは中回胴)が最後に定速に達すると、すべての回胴について、ランダムウェイト時間(ランダム遅延時間)による再配置が完了する。
このように手法1においては、回胴演出終了後、回胴の回転の速さが一定となるまでの間に十分にランダムなウェイト時間(ランダム遅延時間)を設ける。例えば、回胴の回転の回数が1分間にx回転(≦80回転)である場合において、最大ウェイト時間をtMAX[sec](=60/x[sec])と設定した場合には、0〜tMAX[sec]の範囲で抽せんにより、ランダム遅延時間を決定する。そして、回胴演出終了時にすべての回胴が停止し、この全停止後、各回胴が回転を開始するまでの間において、回胴ごとに異なるランダム遅延時間を設ける。当該時間経過後、全ての回胴の回転の速度が一定になってから回転停止装置を有効にする。
続いて、図12(b)に示す手法2においては、回胴演出終了時にすべての回胴が停止し、この全停止後、各回胴が回転を開始する順序を決定する。ここでは、左回胴、中回胴、右回胴の順に決定した例を示す。なお、この順序は固定のものであってもよい。さらに、一の回胴(ここでは左回胴)が回転を開始し、停止から加減速(ここでは加速)の状態を経て定速になったときから、次の回胴(ここでは中回胴)が回転を開始するまでの間において、回胴ごとに異なるランダム遅延時間を設ける。ランダム遅延時間の設定は、前述の手法1と同様に行うことができる。
つまり、回胴演出終了後、各回胴が回転を開始する順序は決定された順序に従うが、各回胴毎に、回転を開始して定速に達してからランダム遅延時間が開始される。そして、当該ランダム遅延該時間の経過後、全ての回胴の回転の速度が一定になってから回転停止装置を有効にする。なお、この手法2は、各回胴が回転を開始する順序は決定された順序に従うが、回転停止装置を有効とするまでの間にランダム遅延時間が設定される態様であるともいえる。
続いて、図13に示す手法3においては、回胴演出終了後、各回胴の位置を、前回の遊技終了時の回胴停止位置へ戻して停止する制御を行い、図中最上段に示すように回胴を全停止させてから、全回胴を回転開始する。そして、全ての回胴の回転の速度が加減速を経て定速になってから、回転停止装置を有効にする。
<遊技演出に係る制御の主要動作に係る変形例>
ここで、図14に基づき、前述の遊技演出に係る制御の主要動作(図10参照)に基づく変形例を説明する。なお、図10に示す例と同様の処理には同一符号を付し、その説明省略する。図14に示す例では、回胴停止管理の処理(S102)が行われ、この回胴停止管理の処理(S102)では以下の処理が行われる。
すなわち、本実施例の回胴停止管理の処理(S102)では、回胴回転開始処理を行い、停止ボタンLEDを赤色に点灯させる。そして、遊技演出を開始させる準備のためにリール(51C〜51L)の駆動を自動で行い、特定のリール停止状態とし、準備状態を示す特定の出目(図柄の組合せ)とするための回胴51C〜51Lの駆動制御を実行する。
さらに、全回胴停止チェックを行い、すべての回胴が停止かつスタートレバー及び停止ボタン操作が終了している場合は、回胴停止管理の処理(S102)を終え、図10に示す例と同様に入力検知時間セットの処理(S103)、入力検知時間チェックの処理(S104)、スタートレバー受付チェックの処理(S105)を行う。
遊技演出実行の処理(S106−1)では遊技演出に係る処理を実行するとともに、遊技演出の終了判定等を行う。遊技演出に係る各種の処理としては、例えば、入力検知時間経過又はスタートレバー25の立ち上がりを検出すると、回胴51C〜51Lが事前に駆動された状態から特定の図柄組合せ(例えば「7」の図柄が揃った図柄の組み合わせや、いずれの図柄もそろっていない「はずれ」の図柄の組合せ)を表示させる。そして、停止した図柄の組合せにより遊技演出の継続を示唆したり、後述するAT(アシストタイム)や、ATの延長などの特典を遊技者に付与してもよい。また、例えば、後述する擬似遊技の継続の有無や継続回数を決定してもよい。
さらに、遊技演出実行処理(S106−1)の後、図10に示す例と同様に、遊技演出終了判定の処理(S107)、回胴回転開始待機カウンタセットの処理(S108)を行う。
<サブ制御手段の概要>
次に、前述の主制御基板61からのコマンド(以下では「サブ制御コマンド」と称する。また、主にバッファの説明等において「サブメインコマンド」と称する場合もある。)に基づいた制御を行うことが可能なサブ制御手段の概要について説明する。先ず、主制御基板61からサブ制御コマンドを送信する方法として、主制御基板61にコマンドバッファ(RWM(RAM)であり複数のアドレスを備える)を備え、当該コマンドバッファに記憶されたサブ制御コマンドを、インターバル割込(図7参照)の周期(2.235ms)で順次送信している。サブ制御手段(副制御手段と称することもある)は、図15(a)に示すように、サブメイン制御手段としてのサブ制御基板31(「サブメイン基板」や「遊技管理基板」と称することもある)と、サブサブ制御手段としての画像制御基板32(「サブサブ基板」と称することもある)とを備えており、このうちサブ制御基板31は、サブメインCPU81やサブ制御ROM82(図中では「ROM」を「ロム」と記載している)などが搭載されている。そして、サブメインCPU81は、主制御基板61からのコマンドに基づき、サブ制御ROM82に記憶されたプログラムに従って、各種LED等の光源や、画像制御基板32を制御する。
ここで、サブメイン制御手段は、サブ制御基板31のほか、サブメインCPU81、サブメインCPU81と協働してサブ制御基板31の各種機能を実現するサブ制御ROM82や後述する各種RAM等の周辺機器を包含する概念のものである。さらに、サブメイン制御手段は演出制御手段、第1演出制御手段と称することもある。また、上述の「RAM」の用語は、主制御基板61に係る説明で用いている「RWM」と同義であるが、以下では主制御基板61に係る説明との区別を容易にするため、サブ制御手段(サブメイン制御手段及びサブサブ制御手段)については「RAM」の用語を用いる。
画像制御基板32は、サブサブCPU83、画像制御ROM84、画像チップ85(VDP)、キャラクタROM86、サウンドチップ87、サウンドROM88などを備えている。これらのうち、画像チップ85は、キャラクタROM86に記憶された画像データを用いて液晶表示器(LCD)を制御するものであり、サウンドチップ87は、サウンドROM88に記憶されたサウンドデータを用いてスピーカの制御を行うものである。そして、画像制御基板32は、画像制御ROM84に記憶された制御プログラムに基づき、画像チップ85やサウンドチップ87を制御する。さらに、画像制御基板32の主要な機能の一つとして、AT(アシストタイム)の遊技に係る報知がある。このATに係る報知は、入賞役、再遊技役が当選したときに、遊技者にとって有利な結果を表示させるための、停止操作情報(押し順ナビ)を報知するものである。
ここで、サブサブ制御手段は、画像制御基板32のほか、サブサブCPU83、サブサブCPU83と協働して画像制御基板32の各種機能を実現する周辺機器を包含する概念のものである。また、サブサブ制御手段のことを、画像制御手段や第2演出制御手段と称する場合もある。
画像制御基板32は、サブ制御基板31から送信されてくる画像制御コマンド(サウンド系コマンドを含むサブサブコマンド)の情報に基づいて処理を行う。電断復帰時において、サブ制御基板31は画像制御基板32に画像制御コマンドを送信するので、画像制御基板32においては、電断復帰時のための特別な電断復帰処理は必要がないようになっている。サウンドチップ87のチャンネル数は32であるが、サブ制御基板31と画像制御基板32とで使用チャンネルが重複しないように、サブ制御基板31は1〜16チャンネルを使用し、画像制御基板32は17〜32チャンネルを使用する。
サブ制御手段の起動について、以下のタイミングで、サブ制御基板31が画像制御基板32に対してリセット信号を送る。これにより、サブサブCPU83にパワーオンリセットが発生し、画像チップ85、サウンドチップ87及びその他の周辺回路もリセットされる。リセット発生タイミングとしては、電源投入時、瞬断発生時、シリアル通信異常時、ウォッチドッグ異常時、主制御基板61からの設定変更開始コマンド受信時、及び、サブ制御基板31の暴走時を挙げることができる。ここで、シリアル通信異常となるのは、後述するように、画像制御基板32からの受信データが正常ではない場合に、再試行に係るリトライ処理を所定回数行っても、正常なデータ受信ができない場合である(図16のS607、S609,S610等参照)。また、ウォッチドッグ異常となるのは、後述するように、リセット後、所定時間(ここでは30秒)経過しても後述する暴走監視信号(トグル信号)が切り替わらない場合や、起動後、所定時間(ここでは約3秒)暴走監視信号の切り替わりがない場合である(図17参照)。
電源投入に伴うサブ制御手段のパワーオンリセットの際には、詳細は後述するが、割込み禁止、ハードウェア設定、RAM初期化、VDP(画像チップ85)初期化、シリアル通信可能化、暴走監視信号(トグル信号)出力開始、準備中表示の各処理の後、メインループ処理が実行される(図17〜図20参照)。メインループ処理よりも前の処理の順序は任意に設定できる。また、暴走監視信号出力開始は、少なくともシリアル通信可能状態及びVDP初期化の双方がされた後に実行される。さらに、準備中表示は、液晶表示器に「画面準備中」などの表示を行うものであり、サブ制御基板から画像制御基板が表示指示のコマンドを受信するまで継続される。
また、前述のようなリセット後は冷始動(コールドスタート)がされ、各種ハードウェア設定及びRAM初期化処理を確実に行う。そして、コールドスタート(後述する)の際には、いかなる場合(状況)からでも、リセットにより確実に起動時手続きを行うものとなっている。なお、このコールドスタートに対しウォームスタートの始動態様もあり、このウォームスタートにおいては、正常にバックアップされたデータに基づき電断復帰の処理が行われる。
サブ制御基板31のサブメインCPU81から、画像制御基板32のサブサブCPU83へ送出するデータは2バイト構成(チェックサムのみ1バイト)となっており、通信方式にはシリアル通信が使用されている。通信フォーマットは、調歩同期式、8ビットデータ、パリティあり(偶数パリティ)、ストップビットが1ビット、データ転送速度が例えば38400[bits/sec]である。
<サブ制御基板及び画像制御基板間のデータ送受信の手続き>
次に、サブ制御基板31と画像制御基板32との間のデータ送受信の手続きについて説明する。図16に示すように、サブ制御基板31から画像制御基板32への送信が開始されると、リトライ回数に0をセットし(S601)、1バイトごとのコマンドデータの連続送信が行われる(S6021〜S602n)。図16中では、第1バイトから第nバイトまでのコマンドデータが連続送信されることを示しており、図中に示すように、各コマンドデータの最上位ビット(MSB)は0になっている。さらに、最後の第nバイトのコマンドデータの後には、チェックサムデータが送信され、チェックサムデータのMSBは1となっている。このチェックサムデータは、第1バイトから第nバイトまでのデータの和に、更にコマンド数を表す値nを加算したものである。第1バイトから第nバイトまでのデータと、チェックサムデータとを合わせたものが1パケットのデータとなっている。つまり、チェックサムデータを送信することにより、画像制御基板32が1パケット分の送信がなされたことを把握できようになっている。
なお、1回の連続送信(チェックサムを送信するまで)における最大送信バイト数は、チェックサムを含んで15バイトである。ゆえに、2コマンド(4バイト)以上で構成されるコマンド群が、画像制御基板32側における画像表示の1フレーム(例えば約16ms周期又は約32ms周期など)を跨いで送信されることがある。
画像制御基板32においては、サブ制御基板31からMSBが1であるデータを受信すると、それ以前に受信している第1コマンドから第nコマンドに係るデータのチェックサム値とコマンド数の和により得られる値と、MSBが1であるデータとを比較する(S621)。比較の結果が一致であった場合には、一連のコマンド受信が正常と判定し(S621:正常)、一致しない場合はコマンド受信が異常であったと判定する(S621:異常)。そして、異常と判定した場合には、図中の右側に示すように、受信エラー発生の処理が実行され、受信エラーあったことを示す所定の値が、サブ制御基板31に送信される(S624)。一方、画像制御基板32におけるS621において正常と判定した場合には(S621:正常)、受信コマンドが保存され(S622)、ACK送信(肯定応答の送信)として、受信したチェックサムの値が、サブ制御基板31に送信される(S623)。このようにすることにより、サブ制御基板31の側で、画像制御基板32へのコマンド送信に異常がなかったか否かを判断できる。
サブ制御基板31においては、チェックサム送信(S603)の後、受信待ち時間の計測が開始される(S604)。そして、受信待ち時間が、上限である所定値(ここでは50ms)に達したか否かを判定し(S605)、所定値に達していなければ(S605:50ms未満)、画像制御基板32からのデータ受信があったか否かを判定する(S606)。受信待ち時間が所定値に達していれば(S205:50ms以上)、リトライ回数の値に1を加算し(S609)、リトライ回数が所定値(ここでは「3」)よりも大きいか否かを判定する(S610)。そして、リトライ回数が所定値以下であれば、後述する復旧手続き処理(S611)を行い、第1コマンドの送信の処理(S6021)に戻る。一方、S610でリトライ回数が所定値を超えていれば、サブメインCPU81をリセットするためのリセット要求設定を行い(S612)、データ送信の処理を終える。
画像制御基板32からのデータ受信があったか否かの判定処理(S606)の結果、画像制御基板32からのデータ受信がなければ(S606:NO)、受信待ち時間が経過したか否かの判定の処理(S605)に戻り、データ受信があれば(S606:YES)、受信データが正常を示すACK信号であったか否かを判定する(S607)。正常なACK信号であれば(S607:正常ACK)、送信完了の設定を行い(S608)、データ送信の処理を終える。一方、正常なACK信号でなければ(S607:その他)、前述のリトライ回数の判定に係る処理(S609以降)を実行する。なお、データ通信手続きに関して、サブメインCPU81が送信動作中以外に、データ受信・受信エラーが発生した場合、これらのエラーは無視される。
次に、前述の復旧手続き処理(S611)について説明する。復旧手続き処理(S611)においては、図15(b)に示すように、全てのビットの値を「1」としたダミーのチェックサムデータが画像制御基板32に送信される(S626)。そして、待ち時間の計測が開始され(S627)、所定時間(ここでは50ms)が経過するのを待って(S628)、復旧手続き処理(S611)を終える。
<サブ制御基板による画像制御基板の暴走監視>
次に、サブ制御基板31による、画像制御基板32の暴走を監視するための制御について説明する。画像制御基板32の暴走を監視は、画像制御基板32からサブ制御基板31に対して出力される暴走監視信号(トグル信号)を用いて行われる。ずなわち、画像制御基板32のサブサブCPU83(画像制御側)において、表示制御切替え毎(画像制御の1フレーム毎)に、図17中の最上段に示すように、暴走監視信号のLO/HIを反転する。図17中の上から2段目の信号の変化により示すようにパワーオンリセット(電源投入等)後は、画像制御基板32は、ブート期間を介し、シリアル通信可能となり、且つVDP初期化完了(表示領域設定済み)となってから、L/Hの反転を開始する。
サブ制御基板31のサブメインCPU81(遊技管理側)においては、図17中の上から3段目に示すように、リセット後に起動監視が有効な状態(開始された状態)となる。そして、ここではブート期間を含めて、暴走監視信号の切替わりを4回検出すると(図中に1〜4の数字を記載して示す)、サブサブCPU83の表示準備完了と判断し、起動監視が無効の状態(終わった状態)となる。ただし、約30秒経過しても表示準備完了と判断できない場合は、異常と判断する。
サブ制御基板31においては、サブサブCPU83の表示準備完了と判断した後は、ウォッチドッグタイマ(WDT)による監視が有効となり、シリアル通信が許可される。さらに、サブ制御基板31において、サブサブCPU83の表示準備完了と判断した後は、常時、暴走監視信号を監視し、約3200ms以上信号の切り替わりを検出しなかった場合、図17中の最下段に示すように、異常を検出した(異常検出)と判断する。異常と判断した場合は、サブサブCPU83をリセットし、その後の遊技状態に応じて、所定のコマンドをサブサブCPU83に送信し、表示を復帰させる。
<サウンド関連コマンドの取り扱い>
次に、サウンド関連コマンドの取り扱いについて説明する。前述のように画像制御コマンドには、音制御のための情報を有するサウンド系コマンドが含まれる。このようなサウンド関連コマンドに関しては、他の表示指示コマンドとは別のバッファを設けて別の時系列でコマンド処理を行うことにより、画像系の処理落ち、ローディング待ち等で、サウンドの出力も遅れてしまうことが回避されている。サウンドに関しては、サブメインCPU81から3チャンネル(ステレオ)のみを制御するようになっており、それ以外のチャンネル番号に係る要求は無視される。
図18(a)は、サウンドコマンドデータの処理のイメージを示している。図中の左端に示すようにサブメインCPU81からのシリアルデータの受信(シリアル受信)があると、FIFO式(コマンドが格納された順序に従って処理を行う方式)のシリアル通信インタフェースであるシリアルポート(SCIF)に受信データが格納される。ここでは、4つのコマンドデータの受信の後に、チェックサムデータ(MSB=1)が受信され、更に1バイトのデータが受信された状態を示している。
シリアルポートに受信されたデータは、図中でシリアルポートの右側に示す受信バッファに移される。ここで、図18(a)の受信バッファの図では、既存のデータを網掛けして示しており、既存のデータに上述の新たなデータが追加される状態を示している。また、シリアルポートのデータと受信バッファのデータとの対応関係は、矢印によって示している。
受信バッファのデータは、図中で更に右側に示すコマンドバッファ(共通コマンドバッファ)に移される。このコマンドバッファでは、受信バッファのデータが、コマンドにおける上位バイトと下位バイトに振り分けられる。この際、受信バッファにおける、チェックサムデータの後の1バイトのみのデータは無視され廃棄されるように構成されている。 本実施形態では、チェックサムデータを受信した後に画像制御基板32からサブ制御基板31に対し応答信号(ACK信号)を送信するまで(又はサブ制御基板31が所定時間経過を確認するまで)サブ制御基板31は新たなデータを送信しないように構成している。つまり、このようにチェックサムデータ受信後、即座に新たなデータを受信した場合は、意図していないデータ(ノイズ等)と判定し、当該データに基づいた処理を実行しないための処理を行っている。また、受信バッファのデータとコマンドバッファのデータとの対応関係は、矢印によって示している。ここで、シリアルポートからコマンドバッファまでのデータの移行は、受信データフル割込みの実行ごとに行われる。本実施形態では、サブサブ制御手段における受信データフル割込みは、サブ制御基板31から送信されたデータを画像制御基板32のシリアルポートに備えられたレシーブシフトレジスタに格納し、格納したデータをレシーブデータレジスタへ転送し格納されたことを契機に実行されるものとする。
また、コマンドバッファ中の2バイトのコマンドデータは、所定ビットの値の違いに応じて、図中の右端上段に示す画像コマンド系バッファ、及び、下段に示すサウンド系コマンドバッファの専用コマンドバッファに振り分けられる。図18(b)はサウンドコマンドデータ構造を示している。サウンドコマンドデータにおいては、最上位のビット15から最下位のビット0のうち、ビット15からビット12を用いて表される値が「0001」(1系コマンドとも呼ばれる。)となっている。このうちのビット12の「1」の値が、サウンドコマンドであることを示しており、画像系のコマンドではビット15からビット12を用いて表される値が「0010」(2系コマンド)、「0011」(3系コマンド)、等となっている。つまり、ビット15からビット12の値を判定することで、画像系コマンドとサウンド系コマンドとの識別が可能となっている。ここで、コマンドバッファのデータと、画像コマンド系バッファ又はサウンド系コマンドバッファのデータとの対応関係は、破線の矢印及び実線の矢印によって示している。ここで、共通のコマンドバッファから画像系コマンドバッファ又はサウンド系コマンドバッファへのデータの移行は、画像制御基板32におけるVブランク(垂直帰線)期間(1フレームの表示制御切替え周期)に合わせて行われる。また、画像系のコマンドとは、画像にサウンドが対応付られたコマンドも含んでいる。
なお、サウンドコマンドデータのビット12に隣接するビット11からビット9までは、コマンド種類の指定に用いられており、この3ビットの値の違いによって、サウンドチップ初期化のコマンドであるのか、サウンドの再生/停止に係るコマンドであるのか、サウンドの特性(音量や広がりなど)に係るコマンドであるのか、等といったことが識別できるようになっている。また、図示や説明を省略するが、画像コマンドデータに関しても同様に、所定のビットの値によって、コマンドの種類指定や、コマンドの内容を表すようになっている。
<サブ制御基板における制御の主要動作>
<<プログラム開始処理>>
次に、サブ制御基板31において、電源投入から電源断までの間に実行される各制御のうち、主要なものについて具体例を説明する。先ず、電源投入時やリセット時に実行されるプログラム開始処理(パワーオンリセット処理)について、図19に基づき説明する。プログラム開始処理が開始されると、仮スタックポインタセット(S631)、割込禁止(S632)を実行し、更にサブメインCPU81の初期設定やメモリーコントロールのためのMCU設定処理(S633)、クリア処理のためのRAM初期化処理(S634)、チェック処理のためのRAM初期化処理(S635)、絶対8ビット空間復帰(S636)、サブシステム初期化処理(S637)の各サブルーチンを順に実行する。
これらのうち、クリア処理のためのRAM初期化処理(S634)は、RAMの所定の領域に0セットするためのものであり、チェック処理のためのRAM初期化処理(S635)は、例えばチェックサムの実行などによって、システム領域やバックアップ領域の初期化チェックを行うものである。チェック処理のためのRAM初期化処理(S635)において行われるチェック処理につては後述する。また、絶対8ビット空間は、高速なアクセスが可能な記憶領域であり、電源断後にデータが消去されないよう、外部RAMでのバックアップ対象となっているものである。
前述のサブシステム初期化処理(S637)においては、音量スイッチによる音量設定、DCユニット起動、電源投入時の処理、表示初期化若しくは表示復帰、RAMクリア直後の処理、音量に係るミュート解除などを実行する。このサブシステム初期化処理(S637)の後、コールドスタートであったか否かの判定を行い(S638)、コールドスタートであると判定した場合には(S638:YES)、コールドスタートフラグをクリアし(S642)、スタックポインタ初期値をセットした後(S643)、後述するメインループ処理へ移行する。
一方、S638において、コールドスタートでないと判定した場合には(S638:NO)、バックアップ電源からバックアップ電力の供給を受けていた外部RAM(外付けRAM)からスタック情報を復帰させ(S639)、スタックポインタの復帰(S640)及びレジスタの復帰(S641)を順に実行する。そして、復帰モードに応じた復帰を行い、データ初期化を伴う通常復帰の場合であれば後述するメインループ処理へ移行し、データバックアップを伴う完全復帰の場合には、電源断が発生した際の処理へ戻る。ここで、復帰モードは、電源断処理の際の処理に応じて決まるものであるが、復帰モードの決定については後述する。
ここで、コールドスタートであったか否かの判定処理(S638)においては、前述のチェック処理のためのRAM初期化処理(S635)で算出したチェックサム値と、電源断時に算出していたチェックサム値とが一致しているか否かを判定し、一致していなければコールドスタートであったと判定し、一致していればコールドスタートではなかったと判定する。つまり、RAMの値に異常があると判定したとき(みなしたとき)は(S638:NO)、スタックポインタを初期値にセットする(S643)などの初期化処理を実行した後に、メインループ処理へ移行するようにしている。
<<メインループ処理>>
次に、前述のメインループ処理について、図20に基づき説明する。メインループ処理においては、ウォッチドッグタイマクリアの処理(S651)、ウォッチドッグ動作開始処理(S652)を行う。ウォッチドッグタイマは、サブメインCPU81において暴走監視手段として機能するものであり、メインループ処理が開始されて直ぐに一旦クリアされた後(S651)、ウォッチドッグ動作開始処理(S652)により、ウォッチドッグタイマに係る計時が開始される。そして、正常であればウォッチドッグタイマがタイムアップとなる前に処理が終了してウォッチドッグタイマクリア(S651)を行うが、何らかの原因でウォッチドッグタイマがタイムアップとなった場合には、所定の処理を行ってプログラム開始処理を実行する。ウォッチドッグタイマクリアの処理は(S651)、それ以前にウォッチドッグタイマの起動によって開始されている計時の値をクリアするものである。なお、このようなウォッチドッグタイマに係る処理の詳細については後述する。
さらに、割込み許可(S653)を行い、ランプパターン・サウンド制御処理(S654)、液晶ユニット監視処理(S655)、アンプ状態監視処理(S656)を順に実行する。これらのうちランプパターン・サウンド制御処理(S654)においては、所定のチャンネルについてのサウンド制御や、各種LEDに係る制御を実行する。液晶ユニット監視処理(S655)においては、画像制御基板32(サブサブ基板)の状態監視(サブサブ状態監視処理)を実行されるが、サブサブ状態監視処理については後述する。
続いて、フレーム毎実行処理(S657)、ウォッチドッグタイマのクリア(S658)、1コマンド処理(S659)、残余時間処理(S660)を順に実行する。さらに、1フレーム終了の判定を行い(S661)、終了していない場合には(S661:NO)、1コマンド処理(S659)へ戻ってループ処理を行い、終了している場合には(S661:YES)、ウォッチドッグタイマクリア(S651)に戻る。上述の1フレーム終了の判定処理(S661)においては、画像制御基板32側における画像表示の1フレーム(例えば約16msなど)に合せて、16msが経過したか否かを判定する。この16msの経過は、後述する1ms間隔のタイマ割込み処理(図25(a)参照)が16回実行されたか否かを監視することにより判定する。
すなわち、メインループ処理内には、1コマンド処理(S659)を含むループ処理(以下では「メインループ内ループ処理」と称する)がさらに設けられており、このメインループ内ループ処理(S659〜S661)は、1msタイマの計時を利用し、所定時間(ここではメインループ処理全体で16ms)が経過するまで繰り返される。さらに、メインループ内ループ処理(S659〜S661)においては、主制御基板61からのコマンドの処理を行う1コマンド処理が、メインループ内ループ処理(S659〜S661)において繰り返し実行される。
さらに、上述の1コマンド処理(S659)は、主制御基板61から受信したサブメインコマンドに基づき、AT(アシストタイム)抽選、サブ制御基板31の遊技状態の移行抽選などを行うためのものである。また、1コマンド処理(S659)においては、コマンド処理として、系統が異なるようなコマンドを受信していた場合には、それぞれのコマンドに対して、受信コマンドバッファを分けて設け、系統に応じたコマンド処理を実行する。
すなわち、主制御基板61からのサブメインコマンドには、コマンドの持つ意味や、コマンド送信の基準となる制御周期の違い等の事情によって、第1系統コマンドと第2系統コマンドとに分けることができる。このうち第1系統コマンドとしては、停止ボタンの操作に基づき停止位置情報を有するもの、ベットボタンの操作に基づきベット数を示す情報を有するもの、遊技メダルの払出終了の情報を有するもの、エラー等の情報を有するものなどがある。この第1系統コマンドは、主制御手段において所定契機に基づいてコマンドバッファに記憶される。
一方、第2系統コマンドは、第1系統コマンド以外のコマンドであるが、具体的には、第2系統コマンドとして、停止ボタン24C〜24Lの操作の有無や、各種の遊技メダル投入ボタン(1ベットボタン、MAX(マックス)ベットボタン)の操作の有無を示すコマンド、スタートレバー25の操作の有無を示すコマンドなどが挙げられる。これらのコマンドは、本実施形態では、以下の例1〜例3に示すように用いることで、遊技を進行するための操作とは異なるコマンドとして機能させている。
すなわち、例1として次のような制御態様がある。前述のATが開始される遊技開始時に、MAXベットボタンが操作されたタイミングに基づいてAT中のキャラクタが選択される。このとき、サブ制御手段としての画像制御基板32は所定時間毎(例えば約2秒毎)にキャラクタとして戦士→天使→悪魔→戦士→・・・のように順次所定のオブジェクトを表示する演出を出力する。そして、MAXベットボタンの操作が有る旨のコマンド(第2系統コマンド)を受信したタイミングで表示されていたキャラクタを選択可能にしている。
尚、ATが開始する遊技開始時に前回遊技がリプレイであったとき(自動ベット(自動投入動作)の処理済みのとき)でも当該MAXベットボタンに基づいて選択させることもできる。このとき、MAXベットボタンに基づくベット数を示すコマンド(第1系統コマンド)を送信することなく、MAXベットボタンの操作の有無を示すコマンド(第2系統コマンド)を送信する。一方、ATが開始する遊技開始時に前回遊技が小役やハズレであったとき(自動ベットの処理が行なわれていないとき)には、MAXベットボタンに基づくベット数を示すコマンドと、MAXベットボタンの操作の有無を示すコマンドを送信し、MAXベットボタンの操作の有無を示すコマンドに基づいてキャラクタを選択させることもできる。もちろん、MAXベットボタンに基づくベット数を示すコマンドに基づいて選択しても良い。
また、例2として次のような制御態様がある。リール(回胴51C〜51L)が停止しているときに、左停止ボタン24Lが操作されたことに基づいてAT中の演出として戦士のキャラクタが選択可能であり、リールが停止しているときに右停止ボタン24Rが操作されたことに基づいてAT中の演出として悪魔のキャラクタが選択可能にしている。
また、例3として次のような制御態様がある。前述のようなフリーズ演出を実行しているときに、前述のスタートスイッチが操作されたことに基づいて、フリーズ演出中にATに関する演出処理(例えば、ATゲーム数の決定、ATゲーム数の表示など)が実行され、フリーズ演出に係る遊技中であってもサブ制御手段では演出制御処理を実行可能にしている。
つまり、上述の例1〜例3のように、MAXベットボタンや停止ボタン24C〜24Lの操作が遊技の進行(主制御手段の進行)に直接影響を与えるものではなく、主としてサブ制御手段(ここではサブメインCPU81やサブサブCPU83)の制御処理に影響を与えるものとして機能するようにもしている。このようなとき、MAXベットボタンや停止ボタン24C〜24Lが操作されたか否かを常時監視し、監視した結果を常にコマンドバッファに記憶させることは、コマンドバッファを圧迫することになる。また、第1系統コマンドと異なり、コマンドバッファに記憶させるタイミングよって遊技の進行に遅延や不具合などが生じるものでもない。さらに、遊技制御上も、不正行為検出上も、第1系統コマンドと同じ扱いを行わなくても足りると考えられるものである。このため本実施例においては、主制御基板61において、インターバル割込みの周期の十倍程度の周期(約20ms以上)で、第2系統コマンドのコマンドバッファ記憶処理が行われている。このことによって、主制御基板61からサブ制御基板31へのコマンド送信頻度の最適化を図っている。さらに、主制御基板61からサブ制御基板31において、第2系統コマンドに係る処理を第1系統コマンドと同等の頻度で行う(第1系統コマンドに基づく処理を実行した後に第2系統コマンドに基づく処理を実行する)ことにより、コマンドに係る処理によって処理能力の多くが割かれてしまうことを防止している。例えば、遊技者が停止ボタン24C〜24LやBET(ベット)ボタンを連打するようなことがあった場合、これら操作毎にコマンドが記憶、送信されると、遊技の進行に関する第1系統のコマンドに基づく処理が実行されなくなることを防止している。
尚、これらの例はあくまでも例示であり、例えば例1に記載のMAXベットボタンの操作の有無を示すコマンドに替えてスタートレバー25の操作の有無を示すコマンドを採用すること等ができる。
また、メインループ内ループ処理で行われる1コマンド処理(S659)では、第1系統コマンド、第2系統コマンドの順序での処理(いずれも2バイトのコマンドデータに対する処理)を実行しており、第1系統コマンドに係る処理を実行した後に、第2系統コマンドに係る処理を実行する。例えば、第1系統コマンドがあり、第2系統コマンドがある場合には、第1系統コマンドに基づく処理(2バイトのコマンドデータに対する処理)を実行した後に、第2系統コマンドに基づく処理(2バイトのコマンドデータに対する処理)を実行し一連の処理が終了する。また、第1系統コマンドがあり、第2系統コマンドがない場合には、第1系統コマンドに基づく処理を実行した後に、第2系統コマンドバッファにコマンドがない(コマンドバッファが空)と判定した後に一連の処理が終了する。さらに、第1系統コマンドがなく、第2系統のコマンドがある場合には、第1系統コマンドバッファにコマンドがないと判定した後に第2系統のコマンドに基づく処理を実行し、一連の処理が終了する。つまり、第1系統コマンド処理、第2系統コマンド処理は、それぞれの系統に属する1つのコマンド処理(2バイトのコマンドデータに対する処理)を実行する一連の処理であって、これをメインループ処理内のループ処理(メインループ内ループ処理)で実行している。
尚、本実施形態では第1系統コマンドと第2系統コマンドとのそれぞれに対応したコマンドバッファを備えているが、1つのコマンドバッファを採用することもできる。
前述のアンプ状態監視処理(S656)は、各スピーカ50に係る状態を監視する処理である。すなわち、各スピーカ50が正常に動作していれば、出玉に係る不正行為があった場合に、演出音(演出用のサウンド)エラー音、警報音等を介して、遊技店員等が異変を察知することが可能である。しかし、各スピーカ50が正常に動作していなければ、上述のような音出力を介して異変を察知することが難しくなるため、スピーカ50に係るアンプの状態監視が行われている。なお、アンプ状態監視処理(S656)の詳細については後述する。
また、本実施例においては、フレーム毎実行処理(S657)において、電源投入直後の1回のみ、サブ制御ROM82が正規なものか否かを判定するための部分チェックサムの処理を実行するが、この部分チェックサム処理については後述する。フレーム毎実行処理(S657)においては、電源ONから電源OFFまでの時間を計時する。この計時には4バイトカウンタが用いられており、電源ONから電源OFFの時間を、複数回数分記憶できる記憶領域を備えている。さらに、前述の1コマンド処理(S659)に関しては、本処理中に電断が生じた場合、電力供給が再開する電断復帰時には、バックアップを伴う前述の完全復帰で、電断検出場所(電断発生時の処理位置)に戻るようになっている。
<<ウォッチドッグタイマに係る処理>>
次に、前述のウォッチドッグタイマに係る処理について、図21に基づき説明する。ウォッチドッグタイマに係る処理には、図21(a)に示すWDT(ウォッチドッグタイマ)監視処理と、図21(b)に示すWDT割込み処理とが含まれている。このうち図21(a)に示すWDT監視処理においては、WDTがタイムアップしたか否かの判定処理(S671)を行い、タイムアップしていなければ(S671:NO)、WDT監視処理を終了する。タイムアップしていれば(S671:YES)、WDT割込み処理要求を行い(S672)、WDT監視処理を終了する。
上述のS532でWDT割込み処理要求が行われたことに伴い、図21(b)に示すWDT割込み処理が実行される。このWDT割込み処理は、WDTが一定時間(例えば500ms)経過してタイムアップしたことを契機に実行される。さらに、WDT割込み処理においては、WDTを停止し(S676)、WDT割込みが実行された回数(累積値)の更新を行う(S677)。そして、WDTによるコールドスタート回数(累積値)をカウントし(S678)、プログラム開始処理(図19参照)の実行に移る。本実施形態では、WDT割込みが実行された回数とコールドスタート回数とをRAM(外部RAM)に記憶することにより、製品の回収時や製品の開発段階において、どの事象により初期化処理が実行されたかを把握できるようにしている。
<<サブサブ状態監視処理>>
次に、前述のサブサブ状態監視処理について、図22に基づき説明する。サブサブ状態監視処理においては、VDPトグル信号無効タイマ減算(S681)を実行される。前述のように、画像制御基板32からサブ制御基板31に対して周期的にトグル信号(図17の暴走監視信号を指す)が送られており、サブメイン制御手段は、トグル信号をVDPトグル信号無効タイマの値とともに監視することにより、画像制御手段(サブサブ制御手段)がどのような状態であるのかを判定できるようになっている。
そして、トグル信号とVDPトグル信号無効タイマの値とを用いてサブサブ状態判定の処理(S682)を行い、図中の左側から右側へ分岐して示すように、画像制御手段の状態が、リセット直後のリセットイネーブルの状態であるのか、トグル信号の切替る回数が4回に達していないサブサブ起動待ち中であるのか、サブサブ起動待ち時間(ここでは3200ms)が経過していない起動中であるのか、或いは、異常が生じている状態であるのかを判定する。
電源投入直後のように、サブサブ状態がリセットイネーブル中の場合には、イネーブルチェックタイマ減算の処理(S683)を行い、リセットイネーブル時間が経過したか否かの判定の処理(S684)を行う。リセットイネーブル時間が経過していなければ(S684:NO)、サブサブ状態監視処理を抜ける。リセットイネーブル時間が経過していれば(S684:YES)、サブサブリセットディセーブルとする処理(S685)を行い、サブサブ状態をサブサブ起動待ち中へ移行させる(S686)。さらに、サブサブ起動待ち時間(ここでは30s。図17参照。)をセットし(S687)、サブサブステータス監視タイマをクリアする(S688)。そして、トグル信号の切替え回数であるトグル切替回数の情報をクリアし(S689)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、判定結果がサブサブ起動待ち中の場合、サブサブ起動待ち時間の減算を行い(S691)、トグル信号の切替りが4回検出されたか否かの判定処理が行われる(S692)。トグル切替りの回数が4回検出されていれば(S692:YES)、SCI(シリアル通信ポート)送受信動作許可(S693)、サブサブ起動完了フラグセット(S694)、コマンド送信許可フラグ及びコマンド受付許可フラグのON(S695)を行う。さらに、ゴト行為やドア開放などのエラーを検知中であるか否かの判定の処理(S696)を行い、検知中であれば(S696:YES)サウンドコマンド受付禁止フラグをONする(S697)。そして、サブサブ状態を起動中とし(S698)、モニタLED点灯の処理(S699)を行う。
ここで、サブサブ起動待ち中でコマンド送信許可フラグ及びコマンド受付許可フラグのONとなると(S695)、サブメイン制御手段は、サウンド系に関するコマンドは出力可能状態(音出力可能状態)と判断し、出力するコマンドがある場合にはコマンドの送信を開始する。サウンド系に関するコマンドとは、サブメイン制御手段で管理しているサウンドであって、画像が伴わないサウンドを指す。例えば、同一図柄が有効ライン又は無効ライン上にテンパイ(例えば3つの同一当り図柄が揃って当りとなる場合に2つの図柄が揃い、残り1つが変動中の状態であること。)したときに出力されるテンパイ音や、非AT時の変則押し(第1停止操作が中停止ボタン24C又は右停止ボタン24R)のときに出力されるペナルティ音、遊技状態に応じて出力される各種BGM(通常時BGM、AT時BGM、ボーナス時BGM)などを備えている。つまり、ゴト行為やドア開放などのエラーを検知していないときには、これらコマンドが送信されて出力要求が行われることによって遊技に基づいたサウンドが画像よりも先に出力される。
一方、ゴト行為やドア開放などのエラーを検知しているときには、エラーの報知を行うため、エラーに応じたサウンドが出力される。具体的には、ドア(前面ドア部11)が開放している旨のコマンドを主制御手段から受信したときに、後述するバッファ(サブメインコマンドリングバッファ)にドアが開放している旨を音声で報知するサウンド系に関するコマンドをセットし、ドアが開放している旨を画像で報知する画像系に関するコマンドはセットしない。その後、画像系コマンドが受信できる状態になったと判定したときに、まだドアが開放していれば、バッファ(サブメインコマンドリングバッファ)にドアが開放している旨を音声で報知するサウンド系に関するコマンドと、ドアが開放している旨を画像で報知する画像系に関するコマンドをセットする。もちろん、画像系コマンドが受信できる状態になったと判定したときに、まだドアが開放していればドアが開放している旨を画像で報知する画像系に関するコマンドをセットしても良い。また、通常時(アイドル中等)の場合であれば、ドアが開放している旨を音声で報知するサウンド系に関するコマンドと、ドアが開放している旨を画像で報知する画像系に関するコマンドとを両方セットする。
尚、サブサブ状態がサブサブ起動待ち中のときには、サブメイン制御手段からの画像コマンドを受信するまでに画像表示部(演出部18)には「画像準備中」や「ローディング中」などの表示を行うことにより画像制御手段が復帰中であることを報知している。本実施形態では、サブメイン制御手段からのコマンドに基づくものではなく、画像制御手段が、これらの表示用データを常駐データとして出力するようにしている。
また、前述のモニタLED点灯の処理(S699)における「モニタLED点灯」は、サブ制御基板31に搭載されているLEDを指している。この種のLEDは、本実施形態では、サブサブ状態を示すLEDとして機能するだけでなく、当該LEDによりRT状態(ボーナスを持ち越している状態)か非RT状態(ボーナス遊技中又は通常遊技中)かを示すランプ(表示体)としても機能している。
一方、前述のトグル切替り回数に係る処理(S692)において、トグル切替りの回数が4回検出されていない場合には(S692:NO)、サブサブ起動待ち時間が経過したか否かの判定処理(S700)を行い、サブサブ起動待ち時間が経過していなければ(S700:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S700:YES)、VDP起動失敗回数を加算する処理を行い(S701)、サブサブリセット要求をONし(S702)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、判定結果が起動中の場合、上述の場合と同様に、サブサブ起動待ち時間(ここでは3200ms。図17参照。)が経過したか否かの判定処理(S711)を行い、サブサブ起動待ち時間が経過していなければ(S711:NO)、サブサブ状態監視処理を抜ける。この起動中の状態は、正常に画像の出力を行うことが可能な状態である。サブサブ起動待ち時間が経過していれば(S711:YES)、VDP起動失敗回数を加算する処理を行い(S712)、サブサブリセット要求をONし(S713)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、判定結果が異常の場合、サブサブリセット要求をON(S716)、サブサブ状態監視処理を抜ける。
<<アンプ状態監視処理>>
次に、前述のアンプ状態監視処理(アンプ監視処理)について、図23に基づき説明する。アンプ状態監視処理は、スピーカ50のコーン紙に巻かれたコイル線がフレーム部と接触して過電流が流れることにより、異常か否かを検出するものである。異常の検出が一定期間あった場合にサブサブに対してリセット信号を送信し、サブサブは初期化処理が実行される。
このアンプ状態監視処理においては、図23中に示すように、画像制御手段が起動中の状態にあるか否かを判定し(S721)、起動中の状態でなければ(S721:NO)、アンプ状態監視処理を抜ける。画像制御手段が起動中の状態であれば(S721:YES)、アンプ状態の読み込みを行う(S722)。続いて、アンプ状態の判定処理(S723)を行い、アンプ状態が異常を示すLOであれば(S723:YES)、LOの検出回数を示すLO検出カウンタを更新(+1)する(S724)。アンプ状態は、スピーカ50やアンプに何らかの異常が発生した場合に変化する信号を、所定の入力ポートに入力し、その入力ポートの状態を監視することで検出される。通常は、アンプ状態はHIを示しているが、異常があった場合にはLOに変化する。
さらに、所定時間(ここでは160ms)を超えたか否かの判定処理(S725)を行い、所定時間を超えていれば(S725:YES)、サブサブリセット要求をONし(S726)、LO検出カウンタをクリアし(S727)、アンプ状態監視処理を抜ける。これらの処理により、画像制御基板32にリセット信号が送信され、画像制御手段におけるリセット処理が実行さされることとなる。前述のLO検出カウンタは16ms周期のカウントが可能となっており、LO検出カウンタの10回の更新があると160msが経過したことになる。この160msの経過を待つことにより、ノイズ等の影響が排除される。
前述のアンプ状態の判定処理(S723)において、アンプ状態が正常を示すHIであれば(S723:NO)、LO検出カウンタをクリアし(S727)、アンプ状態監視処理を抜ける。
<<部分チェックサム処理>>
次に、前述のメインループ処理におけるフレーム毎実行処理(図20中のS657参照)において行われる部分チェックサム処理について説明する。図24に示すように、部分チェックサムの算出が開始されると、サム値取得アドレスに所定値(ここでは10000)をセットし(S731)、サム算出用変数に、メインループ関数の先頭アドレスの下位2バイトを加算する(S732)。さらに、サム算出用変数に、テーブルデータの先頭アドレスの下位2バイトを加算する(S733)。そして、サム値取得アドレスが80000番地未満であるか否かの判定処理が実行され(S734)、80000番地未満であれば(S734:YES)、サム値取得アドレスの内容2バイトを、サム算出用変数に加算し(S735)、サム値取得アドレスに10000を加算し(S736)、サム値取得アドレスが80000番地にたしたか否かの判定(S734)部に戻る。
これらの処理によって、10000番地と10001番地の値の合計、20000番地と20001番地の値の合計、といったように10000番地から80000番地まで10000番地ごとに、前後の番地の合計値が算出される。
上述のS734において、サム値取得アドレスが80000番地未満でないと判定された場合には(S734:NO)、サム値が正常であるか否かの判定処理が行われ(S737)、サム値が正常である場合には(S737:YES)、正常起動に対応した処理が実行される。サム値が正常でない場合には(S737:NO)、無限ループの処理が行われ(S738)、ウォッチドッグタイマのタイムアップによるリセット待ちの状態となる。
<<1ms割込み処理におけるサブサブコマンド送信処理>>
次に、サブメイン制御手段において行われるタイマ割込み処理(1ms割込み)について、特にサブサブコマンド送信処理に係る事項を図25(a)に基づき説明する。この1ms割込み処理は、所定のタイミングでのタイマ計時の開始から1ms経過したことを契機に繰り返し実行される割込み処理である。この1ms割込み処理においては、画像制御基板32へ送信するコマンドデータがあるか否かを判断し、コマンドデータがある場合には送信処理を行う。さらに、1ms割込み処理は、前述のように、メインループ処理(図20参照)内で更に行われるループ処理(メインループ内ループ処理(S659〜S661)の管理に用いられる。
この1ms間隔の割込み処理においては、図25(a)中に示すように、コマンド送信状態の判定処理(S741)が行われ、コマンド送信状態が、図中に左から示すように、アイドル状態であるのか、データ送信開始待ちであるのか、データ送信中であるのか、ACK待ち(応答信号待ち)であるのか、復旧開始であるのか、復旧待ちであるのかが判定される。
コマンド送信状態の判定処理(S741)において、判定結果がアイドル状態であった場合には、バッファ(サブメインコマンドリングバッファ)に未送信コマンドデータがあるか否かの判定処理(S742)が行われ、未送信コマンドデータがない場合には(S742:NO)、1割込み処理を終えて割込み前の処理へ戻る。未送信コマンドデータがある場合には(S742:YES)、コマンド登録するとともに読込ポインタを更新し(S743)、0バイト目送信要求(S744)を行う。
さらに、1バイト毎にデータを取り扱う転送データレジスタ(TDR)が空の状態か否かの判定処理(S745)を行い、空であれば(S745:YES)、転送データレジスタ(TDR)にデータの書き込みを行う(S746)。そして、送信データエンプティ割込みを許可し(S747)、コマンド送信状態をデータ送信中として(S748)、1割込み処理を終える。上述のS745において、転送データレジスタ(TDR)が空でなければ(S745:NO)、コマンド送信状態をデータ送信開始待ちとし(S749)、1割込み処理を終える。
コマンド送信状態の判定処理(S741)において、判定結果がデータ送信開始待ち状態であった場合には、転送データレジスタ(TDR)が空の状態か否かの判定処理(S751)を行い、空であれば(S751:YES)、転送データレジスタ(TDR)にデータの書き込みを行う(S752)。そして、送信データエンプティ割込みを許可し(S753)、コマンド送信状態をデータ送信中とし(S754)、1割込み処理を終える。上述のS751において、転送データレジスタ(TDR)が空でなければ(S751:NO)、そのまま1割込み処理を終える。
コマンド送信状態の判定処理(S741)において、判定結果がデータ送信中であった場合には、そのまま1割込み処理を終える。また、コマンド送信状態がACK待ちであった場合には、ACK待ち時間(ここでは50ms)が経過したか否かの判定処理(S756)を行い、ACK待ち時間が経過していれば(S756:YES)、リトライ処理(図25(b)参照)を行い(S757)、1割込み処理を終える。ACK待ち時間が経過していなければ(S756:NO)、そのまま1割込み処理を終える。なお、図25(b)に示すリトライ処理については後述する。
コマンド送信状態の判定処理(S741)において、判定結果が復旧開始であった場合には、転送データレジスタ(TDR)が空の状態か否かの判定処理(S761)を行い、空であれば(S761:YES)、復旧待ち時間(ここでは50ms)をセットし(S762)、転送データレジスタ(TDR)にデータの書き込みを行う(S763)。そして、コマンド送信状態を復旧待ちとし(S764)、1割込み処理を終える。上述のS761において、転送データレジスタ(TDR)が空でなければ(S761:NO)、そのまま1割込み処理を終える。
コマンド送信状態の判定処理(S741)において、判定結果が復旧待ちであった場合には、前述の復旧待ち時間(ここでは50ms)が経過したか否かの判定処理(S766)を行い、復旧待ち時間が経過していれば(S766:YES)、登録済みの送信データをセットする(S767)。そして、0バイト目送信要求(S768)を行い、コマンド送信状態をデータ送信開始待ちとし(S769)、1割込み処理を終える。上述のS766において、復旧待ち時間が経過していなければ(S766:NO)、そのまま1割込み処理を終える。
続いて、図25(b)に示す前述のリトライ処理(S757)について説明する。このリトライ処理においては、リトライ回数が3回以下か否かの判定処理(S771)が行われ、3回以下であれば(S771:YES)、コマンド送信状態を復旧開始とし(S772)、リトライ処理を終える。リトライ回数が3回以下でない場合には(S771:NO)、異常と判断し、画像制御基板32の初期化要求を行う(S773)。そして、コマンド送信状態をアイドル状態とし(S774)、リトライ処理を終える。
<<サブ制御コマンド受信処理>>
次に、サブ制御基板31において行われるサブ制御コマンド受信処理について、図26(a)に基づき説明する。このサブ制御コマンド受信処理は、主制御基板61からのコマンド(サブ制御コマンド)の受信を契機に発生する割込み処理である。主制御基板61からのコマンドに対しては、コマンドの種別に応じて格納するバッファを異ならせている。なお、マスカブルな割込み処理でなく、NMIにより実行することも可能である。
サブ制御コマンド受信処理においては、受信データの読み込みを行い(S781)、チェック用のバッファに前回のサブ制御コマンドのデータが残っていないか否かの判定処理(S782)を行う。コマンドの残りがなければ(S782:YES)、今回のサブ制御コマンドの受信が第2バイトであるか否かの判定処理(S783)を行い、第2バイトの受信であれば(S783:YES)、受信数カウンタに「1」をセットする(S784)。
さらに、今回の受信が第1バイトの受信であったのか否かの判定処理(S785)を行い、第1バイトの受信であった場合には(S785:YES)、チェック用バッファに第1コマンドを保存する(S786)。続いて、前回のコマンド受信に利用したチェック用バッファを更新し(S787)、受信数カウンタに1を加算する(S788)。さらに、受信数カウンタの値が所定値(ここでは「4」)を超えたか否かの判定処理(S789)を行い、所定値を超えていれば(S789:YES)、後述するメインコマンド判定処理(S790)を行い、サブ制御コマンド受信処理を抜けて割込み前の位置へ戻る。
なお、前述のS963で第2バイトの受信でなかった場合には(S783:NO)、今回の受信が第1バイトの受信であったのか否かの判定処理(S785)を行う。さらに、このS785で第1バイトの受信でなかった場合には(S785:NO)、チェック用バッファに第2コマンドを保存するとともに、保存フラグをセットする(S791)。この保存フラグのセットとは、第2コマンドデータの最上位ビットを「1」にセットする処理を指す。
前述のS782において、チェック用バッファに前回のコマンドデータがある場合には(S782:NO)、第1バイトが受信済みであるか否かの判定処理(S796)を行い、第1バイトが受信済みであれば(S796:YES)、再度第1バイトを受信したか否かの判定処理(S797)が行われる。そして、再度第1バイトを受信している場合には(S797:YES)、受信数カウンタに「2」をセットし(S798)、前述した第1バイトを受信したか否かの判定処理(S785)を行う。上述のS797において、再度第1バイトを受信していない場合には(S797:NO)、そのままS785へ移行する。
前述のS796において、第1バイトが受信済みでなければ(S796:NO)、受信数カウンタの値が「2」であるか否かの判定処理(S801)を行い、受信数カウンタの値が「2」であれば、今回の受信が第1バイトの受信であったのか否かの判定処理(S802)を行う。第1バイトの受信であった場合には(S802:YES)、第1バイトと第2バイトの双方が受信済みであるか否かの判定処理(S803)が行われ、双方が受信済みであれば(S803:YES)、前回の第1バイトと内容が異なるか否かの判定処理(S804)が行われる。そして、前回の第1バイトと内容が異なれば(S804:YES)、メインコマンド判定処理を行い(S805)、前述のS785へ移行する。
前述のS802において、今回の第1バイトの受信でなかった場合には(S802:NO)、受信数カウンタに「3」をセットし(S806)、前述のS785へ移行する。また、前述のS803において、第1バイトと第2バイトの双方の受信が済んでいない場合(S803:NO)、又は、前述のS804において、前回の第1バイトと内容が異なっていない場合(S804:NO)には、そのまま前述のS785へ移行する。
さらに、前述の受信数カウンタの値が「2」であるか否かの判定処理(S801)において、受信数カウンタの値が「2」でない場合には(S801:NO)、受信数カウンタの値が「3」であるか否かの判定処理(S811)を行い、受信数カウンタの値が「3」であれば(S811:YES)、今回の受信が第1バイトの受信であったのか否かの判定処理(S812)を行う。第1バイトの受信であった場合には(S812:YES)、第1バイトと第2バイトの双方が受信済みであるか否かの判定処理(S813)が行われ、双方が受信済みであれば(S813:YES)、メインコマンド判定処理を行い(S814)、前述のS785へ移行する。これらのS811〜S813の各判定処理において、否定の判定がされた場合には、そのまま前述のS785へ移行する。
続いて、前述のメインコマンド判定処理(S790)について、図26(b)に基づき説明する。メインコマンド判定処理においては、受信数カウンタをクリアし(S821)、チェック用バッファにおける上位バイトの最上位ビットがONか否か(値が「1」か否か)の判定処理を行う(S822)。上位バイトの最上位ビット(MSB)が1であった場合には(S822:YES)、チェック用バッファにおける下位バイトの最上位ビットがONか否かの判定処理(S823)を行い、下位バイトの最上位ビットが1であった場合には(S823:YES)、コマンド取得成功と判断しコマンドセット処理を実行する(S824)。さらに、チェック用バッファにおける前回分と今回分のコマンド記憶領域をクリアし(S825,S826)、メインコマンド判定処理を終える。
前述のチェック用バッファにおける上バイト係る判定処理(S822)、下位バイトに係る判定処理(S823)の何れかで、最上位ビットが1でなかった場合には、コマンド取得失敗と判断し、コマンドセット処理を実行せずに(S827)、チェック用バッファをクリアする(S825,S826)。
<<サブサブコマンド送信におけるコマンドデータの取り扱い>>
図27〜図31は、サブ制御基板31から画像制御基板32へのコマンド送信に関して、コマンドデータの取扱いを示すものである。図27の上段には、サブメインコマンドリングバッファと送信中コマンドバッファを示している。サブメインコマンドリングバッファは、前述の図18(a)中におけるコマンドバッファに対応したものであり、このサブメインコマンドリングバッファには、上位コマンドと下位コマンドに分けられたコマンドデータ(コマンドセット)が順次格納される。
さらに、サブメインコマンドリングバッファへのコマンドのセットは、本実施例では、前述のメインループ処理(図20)におけるフレーム毎実行処理(S657)において実行される。そして、フレーム毎実行処理(S567)においては、1回のフレーム毎実行処理(S567)につき、サブメインコマンドリングバッファに対して、必要に応じた数のコマンドの書き込みが行われる。つまり、1回のフレーム毎実行処理(S567)において、必要に応じ、複数のコマンドの書き込みが行われることがある。例えば、スタートレバー25の操作に伴い、サブメイン制御手段からサブサブ制御手段にコマンドを送信するような場合には、所定の演出を開始させるためのコマンドや、各種の抽選結果に基づいて作成されたコマンド等、比較的多くのコマンド送信を行う必要があるため、1回のフレーム毎実行処理(S567)において、相応の数のコマンドがサブメインコマンドリングバッファに書き込まれることになる。
これに対して、サブサブ制御手段に対して特段多くのコマンドの送信を行う必要がないときには、1回のフレーム毎実行処理(S567)において、1個のコマンドのみのセットが行われる場合や、コマンドセットが行われない場合なども生じ得る。なお、サブサブ制御手段に対して送信されるコマンドのバッファへのセットは、フレーム毎実行処理(S567)で行うことに限らず、これ以外にも、例えばランプパターン・サウンド制御処理(S654)などで行うことも可能である。
そして、図中の左端に示すように、コマンド読込ポインタが送信すべきコマンドセットを指定し、指定されたコマンドセットが、図中の右側に示す送信中コマンドバッファにセットされる。前述のように、第1コマンドから第nコマンドが順次送信された後には、チェクサムデータが送信される。送信中コマンドバッファには、最下段に示すように、チェクサムデータを格納する16バイトの格納領域が確保され、15バイトのデータが送信されるように構成されている。そして、図27の下段に示す段階に移行し、コマンド読込ポインタが次に送信すべき順位のコマンドセットを指定する。
ここで、図27に記載のダミーデータとは、本実施形態においては16バイトの格納領域を示すために記載しているものであって、実質的には存在しないデータである。もちろん、ダミーデータとしてチェックサムに対応する下位バイトにデータを格納しても良い。
図28は、送信中コマンドバッファに格納されたコマンドセットが、シリアルポート(SCI)を経て、画像制御基板32のサブサブ側シリアルデータ受信バッフに送られる状態を示している。図28の上段に示す例では、送信コマンドバッファの左側に破線の矢印で示すように、先に上位コマンドが送信実行中ポインタにより指定され、シリアルポート(SCI)へ送られる。シリアルポート(SCI)には、転送データレジスタ(TDR)が設けられており、上位コマンドはこの転送データレジスタ(TDR)に格納される。
続いて、送信コマンドバッファの右側に実線の矢印で示すように、下位コマンドが送信実行中ポインタにより指定される。そして、図28の下段に示す段階に移行し、転送データレジスタ(TDR)に格納されていた上位コマンドが、転送シフトレジスタ(TSR)に移され、シリアル通信により、図中の右端に示すようにサブサブ側シリアルデータ受信バッファに送られる。
図29は、上述の上位コマンドに続いて下位コマンドが、サブサブ側シリアルデータ受信バッファに送られる状態を示している。図29中上段の送信中コマンドバッファに示すように、下位コマンドが、シリアルポート(SCI)の転送データレジスタ(TDR)に格納された後、空になっている転送シフトレジスタ(TSR)に対し、図中の下段に示すように、下位コマンドのデータが移される。ここで、転送データレジスタ(TDR)が、1バイトのコマンドデータの送信が終わって空になった際には、送信データエンプティ割込みが発生するが、送信データエンプティ割込みに伴って実行される送信データエンプティ割込み処理については後述する。
図30は、次以降のコマンドセット(図中では丸数字の2〜7で示している)の上位コマンド及び下位コマンドが、サブサブ側シリアルデータ受信バッファに順に送られる状態を示している。何れの場合も前述のように、コマンドセットが送信中コマンドバッファに移され、上位コマンド、下位コマンドの順でシリアルポート(SCI)の転送データレジスタ(TDR)に格納され、転送シフトレジスタ(TSR)を経て、サブサブ側シリアルデータ受信バッファに送られる。
図31は、チェックサムデータが、サブサブ側シリアルデータ受信バッファに順に送られる状態を示している。チェックサムデータの場合も、図中の上段に示すように、前述の上位コマンドと同様に送信コマンドバッファ、シリアルポート(SCI)の転送データレジスタ(TDR)を経て、転送シフトレジスタ(TSR)からサブサブ側シリアルデータ受信バッファに送られる。しかし、チェックサムデータの送信時には、前述の送信データエンプティ割込みは禁止され、発生しないようになっている。また、図中の下段に示すように、画像制御基板32の側からサブ制御基板31の側へチェックサムデータが送信され、このチェックサムデータが、サブ制御基板31の側のシリアルポート(SCI)におけるレシーブデータレジスタ(RDR)に格納される。そして、この時点で受信データフル割込みが発生するが、サブメイン制御手段における受信データフル割込みについては後述する。
<<送信データエンプティ割込み処理>>
次に、前述の送信データエンプティ割込み処理について説明する。この送信データエンプティ割込み処理は、前述のように、画像制御基板32に対して1バイトデータを送信したことを契機に実行されるものである。さらに、送信データエンプティ割込み処理は、1パケット(例えば最大15バイトデータ)のデータ送信後は一旦連続送信を中止し、画像制御基板32からの返答待ち状態へ移行する。
この送信データエンプティ割込み処理においては、図32に示すように、送信データエンプティ割込みを禁止し(S841)、コマンド送信状態が「データ送信中」であるか否かを判定する(S842)。コマンド送信状態が「データ送信中」でない場合には(S842:NO)、送信データエンプティ割込み処理を終えて割込み前の処理に戻り、コマンド送信状態が「データ送信中」である場合には(S842:YES)、送信要求コマンドの下位バイト目であるか否かを判定する(S843)。送信要求コマンドの下位バイト目であった場合には(S843:YES)、前述の転送データレジスタ(TDR)への書き込みを行い(S849)、送信データエンプティ割込みを許可して(S850)、割込み前の処理に戻る。
上述のS843において、送信要求コマンドの下位バイト目でなかった場合には(S843:NO)、バッファ(送信中コマンドバッファ)に送信登録コマンドがあるか否かの判定処理(S844)を行い、送信登録コマンドがある場合には(S844:YES)、今回の送信で7コマンド(14バイト)を超えたか否かの判定処理(S845)が行われる。そして、7コマンド(14バイト)を超えていない場合には(S845:NO)、コマンド登録を行って前述のコマンド読込ポインタを更新し(S846)、転送データレジスタ(TDR)への書き込みを行い(S847)、送信データエンプティ割込みを許可して(S848)、割込み前の処理に戻る。
前述のS844で送信登録コマンドがない場合(S844:YES)、又は、S845で7コマンドを超えた場合には(S845:YES)、送信するコマンドのチェックサムを算出して登録する(S851)。そして、転送データレジスタ(TDR)への書き込みを行い(S852)、ACK信号の受信待ち時間(ここでは50ms)をセットし(S853)、コマンド送信状態を「ACK待ち中」として(S854)、割込み前の処理に戻る。
<<受信データフル割込み処理>>
次に、前述のサブメイン制御手段における受信データフル割込み処理について説明する。この受信データフル割込み処理においては、図33に示すように、受信データがあるか否かの判定処理(S861)が行われ、受信データがない場合には(S861:NO)、割込み前の処理に戻る。受信データがある場合には(S861:YES)、受信データの取得の処理(S862)が行われ、SSR(シリアルステータスレジスタ)のレシーブデータレジスタフルのビットをOFFする(S863)。ここで、シリアルステータスレジスタは、シリアル通信ポートの状態を表す情報を記憶したレジスタであり、レシーブデータレジスタフルは、前述のRDRに受信したデータが存在することを表すビットである。
さらに、コマンド送信状態がACK待ち中であるか否かの判定処理(S864)が行われ、ACK待ち中でない場合には(S864:NO)、割込み前の処理に戻る。コマンド送信状態がACK待ち中である場合には(S864:YES)、ACKが正常か否か(チェックサムデータが正常か否か)の判定処理(S865)が行われ、正常である場合には(S865:YES)、コマンド送信状態をアイドル状態とし、割込み前の処理に戻る。また、ACKが正常でない場合には(S865:NO)、リトライ処理(S867)が行われる。ここで、リトライ処理(S867)は、図25(b)に示すリトライ処理(S757)と同様のものである。
<<サブ制御基板における電源断処理>>
次に、サブ制御基板31における電源断処理について、図34(a)に基づき説明する。この電源断処理は、供給される電圧が低下して電断を検出した場合に、割込みにより実行されるものである。電源断処理が開始されると、所定のカウンタ(電源断回数カウンタ)によりカウントされている電源断の回数の更新を行い(S871)、ウォッチドッグタイマを停止し(S872)、電断フラグをセットする(S873)。さらに、メインループ処理(図20参照)が開始される前であるか否かの判定処理(S874)を行い、メインループ処理が開始されていなければ(S874:YES)、所定時間(ここでは500ms)のウェイト(待機)を行った後に、瞬断処理(S888)を行う。すなわち、ウェイトの際には、所定時間(ここでは500ms)に相当するタイマがセットされ(S887)、この所定時間の間に電断復帰があれば(S887−1:YES)、瞬断処理(S888)が行われる。瞬断処理(S888)については後述する。また、上述のS887−1で電断復帰がなければ(S887−1:NO)、所定時間が経過したか否かの判定処理(S887−2)が行われ、経過していれば(S887−2:YES)、電源断に備えるリセット待ちが行わる(S887−3)。また、S887−2で所定時間が経過していなければ(S887−2:NO)、電断復帰があったか否かの判定処理(S887−1)に戻る。
ここで、本実施形態では、前述の電源断の回数の更新(S871)と共に、前述の外部RAMへの所定のデータの記憶が行われるようになっている。すなわち、本実施形態では、サブメインループ処理(図20参照)のフレーム毎実行処理(S657)で計時(サブメインループ処理が実行される毎にカウンタがインクリメントされる)している電源ONの時間を前述の外部RAMに記憶している。例えば、電源断の1回目は、約30分間は電源がONになっていたこと、電源断の2回目は、約8時間は電源がONになっていたこと、・・・、のように、「電源断の回数」と「電源ONの時間」が対応付られた情報が外部RAMに記憶される。そして、製品の回収時等において、この外部RAMに記憶された情報に基づく鑑定を行うことにより、遊技機において異常な挙動が起こっていた、不正が行われた可能性がある等の情報が得られる。
一方、メインループ処理が開始されていれば(S874:NO)、復帰モードの判定処理(S875)を行う。すなわち、復帰モードは、データ初期化を伴う通常復帰(S875:通常)と、データバックアップを伴う完全復帰(S875:完全)とに分かれており、通常復帰とするか完全復帰とするかは、主制御基板61からの第1コマンドに係る処理が終わっているか否かに応じて決まる。そして、第1コマンドに係る処理が終わっていれば通常復帰となり、第1コマンドに係る処理が終わっていなければ完全復帰となる。
通常復帰となる場合には(S875:通常)、通常復帰のための戻り番地設定の処理(S876)、通常復帰時の外部RAM使用領域に係る末尾値のセット(S877)、及び、外部RAM使用領域に係る先頭値のセット(S878)を行う。完全復帰となる場合には(S875:完全)、完全復帰のための戻り番地設定の処理(S885)、完全復帰時の外部RAM使用領域に係る末尾値のセット(S886)、及び、前述の外部RAM使用領域に係る先頭値のセット(S878)を行う。
さらに、スタックデータの退避の処理(S879)において、通常復帰時にはスタックポインタの予め決まっている所定領域のデータのみを外部RAMに退避させ、完全復帰時にはスタックポインタの全てのデータを外部RAMに退避させる。また、スタックポインタのチェックサムの算出(S880)、前述した絶対8ビット空間のデータ保存(S881)、NEED領域に係るチェックサムの保存(S882)が行われる。ここで、NEED領域は、電源断時に保存されるバックアップ対象の領域であるが、設定変更装置による設定変更時にデータ消去されるものである。そして、NEED領域に記憶されるデータとしては、出玉に係る変数、ATに係るゲーム数、通常時のゲーム数、等を例示することができる。
そして、所定時間(ここでは500ms)のウェイト(待機)を行った後に、瞬断処理(S884)を行う。すなわち、ウェイトの際には、所定時間(ここでは500ms)に相当するタイマがセットされ(S883)、この所定時間の間に電断復帰があれば(S883−1:YES)、瞬断処理(S884)が行われる。また、上述のS883−1で電断復帰がなければ(S883−1:NO)、所定時間が経過したか否かの判定処理(S883−2)が行われ、経過していれば(S883−2:YES)、電源断に備えるリセット待ちが行われる(S883−3)。また、S883−2で所定時間が経過していなければ(S883−2:NO)、電断復帰があったか否かの判定処理(S883−1)に戻る。このように、ウェイト期間中に、電源が復帰して電力供給が回復した場合には瞬断処理(S884)が実行され、ウェイト期間を経過しても電源が復帰しない場合は、サブメインCPU81等の動作に必要な電圧が確保されず、瞬断処理(S884)は行わずに電源断となる。このことは、前述の瞬断処理(S888)の前にウェイト期間を置いているのと同じ理由によるものである。また、ここでの瞬断処理(S884)は、前述の瞬断処理(S888)と同様のものであり、その詳細ついては後述する。
図34(b)は、上述の瞬断処理(S884)を示している。この瞬断処理は電源断処理に伴って実行されるものであり、瞬断処理においては、電断処理済みフラグがクリアされ(S891)、タイマカウンタの0クリア及び所定の割込みフラグのクリアが行われる(S892)。さらに、所定のカウンタ(瞬断回数カウンタ)によりカウントされている瞬断発生回数が更新され(S893)、ウォッチドッグタイマの動作が開始され(S894)、割込み発生場所へ戻る。
ここで、タイマカウンタの0クリア及び所定の割込みフラグのクリアの処理(S892)でクリアされるタイマは、1ms割込と500μs割込みのためのカウンタである。つまり、このS892は、割込みに係る設定を初期化するためのものである。なお、前述のS874でメインループ処理が開始されていない場合(S874:YES)に実行される瞬断処理(S888)も、上述の瞬断処理(S884)と同じ処理である。
また、瞬断処理(S888,S884)の前に所定時間(ここでは500ms)のウェイトを行うのは、一時的な電圧低下による電源断である瞬断と、電源OFF等の事情による電源断との区別するためである。つまり、電源OFF等の事情による電源断の場合は、このウェイト期間中に、サブメインCPU81等の動作に必要な電圧が供給されなくなるため、ウェイト期間を設けることにより、電源OFF等の事情による電源断を瞬断としてカウントしてしまうことを防止できる。
<<NMI処理>>
なお、上述の実施形態に限定されず、サブ制御基板31における電源断処理の契機として、図35に示すように、主制御基板61からのコマンドに基づいた態様のNMI(ノンマスカブル割込み)処理を採用することが可能である。すなわち、主制御基板61からのコマンドを受けて、本実施形態におけるNMI処理が実行される。前述のように主制御基板61からのコマンド(サブ制御コマンド)は、1バイトからなる第1コマンドと、1バイトからなる第2コマンドで構成されている。このNMI処理においては、主制御基板61からのサブ制御コマンドについて、1回目の読み込み(S911)、2回目の読み込み(S912)を順に行い、2回読み込んだデータが互いに一致するか否かの判定処理(S913)を行う。読み込んだデータが一致しない場合には(S913:NO)、NMI処理の先頭に戻り当該コマンドを破棄する。一方、一致した場合には(S913:YES)、第1コマンドであるか否かの判定処理(S914)を行う。
上述のS914において第1コマンドと判定した場合には(S914:YES)、ハード乱数用カウンタをラッチし(S919)、第1コマンドを保存し(S920)、元の処理へ戻る。上述のS919に係るカウンタを用いて生成されるハード乱数に関しては、サブメイン制御手段で生成したソフト乱数との演算を行い、得られた演算値に基づいて、ATや、遊技者にとって有利度が異なる遊技状態に係る抽選を行う。つまり、コマンド受信を契機に遊技に関する(遊技性に影響を与える)乱数の生成に係る値の取得を行うことで、よりランダム性が増し、不正な抽選等を防止することが可能になる。上述のS914において、第1コマンドでないと判定した場合には(S914:NO)、当該コマンドが第2コマンドであると判定する。次に、第1コマンドがあるか否かの判定処理(S915)が行われ、第1コマンドがない場合には、元の処理へ戻る。つまり、第1コマンド保存(S919)を実行されていない状況で第2コマンドを受信したとみなし、当該コマンドを破棄する。第1コマンドがあった場合には、第1バイト受信無しのデータをセットし(S916)、現在の書き込み位置にコマンドを保存し(S917)、書き込みポインタを更新して(S918)、元の処理へ戻る。換言すると、S916で次の第1コマンドを保存するための記憶領域をクリアし、S917で今回の第1コマンドと第2コマンドデータをリングバッファに記憶し、S918で次のコマンドをリングバッファに記憶する領域位置を定める書き込みポインタを更新している。
なお、電源断処理の契機や態様としてこれら以外のものを採用することができ、例えば、前述の1ms間隔毎のタイマ割り込み処理(1ms割込み処理)内で、サブメイン制御手段が独自に電源電圧の監視を行ない、閾値を下回ったときに電源断割り込み処理が実行されるようにしてもよい。また、サブメインCPU81のNMI端子に電圧低下を示す電源断信号が入力されたことに基づきノンマスカブル割込み(NMI)を発生させるハードウェア的なものを採用してもよい。
<各種割込みの優先順位>
本実施例に係るサブメインCPU81では、前述のように、リセットによる割込み、WDT割込み(図21(b)参照)、1ms割込み(図25(a)参照)、サブ制御コマンド受信割込み(図26(a)参照)、等の各種の割込みが可能となっているが、各割込みに対しては、優先順位が設定されている。そして、本実施例においては、優先順位は、サブ制御コマンド受信割込み、WDT割込み、1ms割込みの順に低くなっている。換言すると、1ms割込みの実行中にサブ制御コマンド受信割込みが発生する契機(主制御手段からのコマンド受信)が発生した場合には、優先的にサブ制御コマンド受信割込みが実行されるように構成されている。これにより、主制御手段からのコマンド受信漏れを未然に防止することができる。また、同様にプログラムの暴走が起こった場合においても、WDT割込みの優先順位が1ms割込みよりも高くなっていることから、適切にWDT割込み処理が実行され、プログラムの初期化処理が実行されるようにしている。
<サブ制御ROMに対する改ざん防止の措置>
本実施例では、サブ制御ROM82(サブメインROM)の改ざんを防止するために、以下のような措置が取られている。すなわち、サブ制御ROM82に記憶されている全データ(特定のデータに限定してもよい)を、画像制御基板32の所定の記憶手段にも記憶しておく。さらに、サブメイン制御手段の所定の処理(例えば、サブメインループ処理(図20参照)、タイマ割込み処理(図25(a)参照)など)毎に、サブ制御ROM82に記憶されているデータを1バイトずつ画像制御基板32に送信する。そして、画像制御基板32は、送信されてきたデータと記憶しているデータとを照合し、不一致と判断したときには所定のエラー報知を行う。なお、報知開始のタイミングについては、不一致と判断した際でもよく、全データの照合を終えてからでもよい。
<サブサブ状態監視処理の変形例1>
次に、前述のサブサブ状態監視処理(図22参照)の変形例について説明する。なお、前述の例と同様の部分については同一符号を付し、その説明は省略する。図36は、サブサブ状態監視処理の変形例を示している。本例においては、サブサブ状態として、図36中に示すようにサブサブ起動信号待ち状態が設けられており、サブサブ起動信号待ち中の場合、サブサブ起動待ち時間の減算(S691)の後、トグル信号がLOか否かの判定処理(S1004)を行う。ここでは、トグル信号がHIからLOに切替ったか否かを監視し、LOに切替れば(S1004:YES)、SCI(シリアル通信ポート)送受信動作許可(S693)を行い、トグル信号がLOに切替っていない場合には(S1004:NO)、サブサブ起動待ち時間(ここでは30秒)が経過したか否かの判定処理(S700)へ移行する。さらに、サブサブ起動待ち中の場合に、サウンドコマンド受付禁止フラグをONする処理(S697)に続いて、サブサブ状態を起動信号待ち中とし(S1001)、起動信号待ち時間をセットして(S1002)、トグル切替回数クリア(S1003)を行い、サブサブ状態監視処理を抜ける。
本例では、画像制御基板32に、3D表示に適したタイプのVDPが用いられており、画像制御基板32では初期化時に先の例に比べて多くの画像用データ(常駐データなど)を長時間(例えば数十秒)かけてVRAMに転送する必要がある。このため、サブ制御基板31で起動信号待ち時間を設定することにより、画像制御基板32のための準備期間を確保している。
サブサブ状態判定処理(S682)において、判定結果が起動信号待ち状態の場合、サブサブ起動待ち中の場合と同様に、サブサブ起動待ち時間の減算を行い(S1006)、トグル信号の切替りが4回検出されたか否かの判定処理が行われる(S1007)。トグル切替りの回数が4回検出されていれば(S1007:YES)、サブサブ状態を、全コマンドの送信が可能となる起動中とする(S1008)。そして、モニタLED点灯の処理(S1009)を行う。続いて、表示復帰要求があるか否かが判定され(S1010)、表示復帰要求があれば(S1010:YES)、表示復帰要求をクリアし(S1011)、起動チェック2コマンドを送信する(S1012)。そして、表示復帰を行い(S1013)、サブサブ状態監視処理を抜ける。ここで、表示復帰要求とは電源断時等において画像制御手段(サブサブ制御手段)に対してリセット要求を行ったことを指す。換言すると、「表示復帰要求がある」とは、正常に電源断が行なわれたことを示し、「表示復帰要求がある」とは、正常に電源断が行なわれなかったことを示す。
一方、前述のトグル切替り回数検出に係る処理(S1007)において、トグル切替りの回数が4回検出されていない場合には(S1007:NO)、サブサブ起動待ち時間(ここでは30秒)が経過したか否かの判定処理(S1016)を行い、サブサブ起動待ち時間が経過していなければ(S1016:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S1016:YES)、VDP起動失敗回数を加算する処理を行い(S1017)、サブサブリセット要求をONし(S1018)、サブサブ状態監視処理を抜ける。
さらに、前述のS1010で表示復帰要求がない場合には(S1010:NO)、起動チェック1コマンドを送信し(S1019)、表示復帰の処理(S1013)へ進む。
なお、前述のS1007において、トグル切替りの回数が4回検出されていない場合(S1007:NO)、画像制御基板32において、画像の出力は未だできないが、サウンドの出力は可能となっている。また、本実施形態においては、起動チェック1コマンド(S1019参照)、及び、起動チェック2コマンド(S1012参照)とに応じて、画像制御手段は同じ挙動を示す(何もしない)。これらのコマンドは、製品の開発段階等で何の要因でリセットが行なわれたかを把握する為のコマンドとして用いている。
サブサブ状態判定処理(S682)において、判定結果が起動中の状態である場合、サブサブ起動待ち時間(ここでは10000ms)が経過したか否かの判定処理(S1020)を行う。そして、この起動中の状態においては、画像に係るコマンドが発生していても送信せずには破棄し、サウンドに係るコマンドがあれば、そのコマンドを送信する。
<サブサブ状態監視処理の変形例2>
図37は、サブサブ状態監視処理の他の変形例を示している。本例においては、画像制御基板32の他に、CPUを搭載した画像制御基板(図示略)が別途追加されており、サブサブ状態として、この付加された画像制御基板におけるCPUのOS(オペレーションシステム)の起動に係る状態が設けられている。すなわち、サブサブ状態がイネーブル中の場合、サブサブリセットディセーブルとする処理(S685)の後、サブサブ状態をサブサブOS起動待ち中へ移行させる(S1031)。さらに、本例においては、イネーブル中のサブサブ起動待ち時間として10sがセットされる(S1032)。
前述のサブサブ状態判定処理(S682)において、サブサブ状態がサブサブOS起動待ち中の場合には、サブサブ起動待ち時間の減算が行われ(S1041)、トグル信号がHIか否かの判定処理(S1042)が行われる。このときトグル信号がHIであれば(S1042:YES)、サブサブ状態を起動待ち(OS起動中)とし(S1043)、サブサブ状態監視処理を抜ける。トグル信号がHIでない場合には(S1042:NO)、サブサブ起動待ち時間が経過したか否かを判定し(S1044)、サブサブ起動待ち時間が経過していなければ(S1044:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S1044:YES)、VDP起動失敗回数を加算する処理を行い(S1045)、サブサブリセット要求をONし(S1046)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、サブサブ状態が起動待ち(OS起動中)の場合には、サブサブ起動待ち時間の減算を行い(S1051)、トグル信号がLOか否かの判定処理(S1052)を行う。ここでは、トグル信号がHIからLOに切替ったか否かを監視し、LOに切替れば(S1052:YES)、OSの起動が完了したと判断する。そして、トグル信号がLOの場合には、(S1052:YES)、SCI(シリアル通信ポート)送受信動作許可(S1053)、サブサブ起動完了フラグセット(S1054)、コマンド送信許可フラグ及びコマンド受付許可フラグのON(S1055)を行う。さらに、ゴト行為やドア開放などのエラーを検知中であるか否かの判定の処理(S1056)を行い、検知中であればサウンドコマンド受付禁止フラグをONする(S1057)。そして、サブサブ状態を、常駐データのロード中である起動信号待ち状態とし(S1058)、起動信号待ち時間(ここでは60秒)をセットして(S1059)、トグル切替回数クリア(S1060)を行い、サブサブ状態監視処理を抜ける。
一方、前述のトグル信号がLOか否かの判定処理(S1052)において、トグル信号がLOに切替っていない場合には(S1052:NO)、サブサブ起動待ち時間(ここでは30秒)が経過したか否かの判定処理(S1061)を行い、サブサブ起動待ち時間が経過していなければ(S1061:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S1061:YES)、VDP起動失敗回数を加算する処理を行い(S1062)、サブサブリセット要求をONし(S1063)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、サブサブ状態が起動信号待ち状態(常駐データロード中)の場合には、サブサブ起動待ち時間の減算を行い(S1071)、トグル信号の切替りが4回検出されたか否かの判定処理が行われる(S1072)。トグル切替りの回数が4回検出されていれば(S1072:YES)、サブサブ状態を、全コマンドの送信起動中とする(S1073)。続いて、表示復帰要求があるか否かが判定され(S1074)、表示復帰要求があれば(S1074:YES)、表示復帰要求をクリアし(S1075)、起動チェック2コマンドを送信する(S1076)。そして、表示復帰を行い(S1077)、サブサブ状態監視処理を抜ける。
一方、前述のトグル切替り回数検出に係る処理(S1072)において、トグル切替りの回数が4回検出されていない場合には(S1072:NO)、サブサブ起動待ち時間(ここでは30秒)が経過したか否かの判定処理(S1078)を行い、サブサブ起動待ち時間が経過していなければ(S1078:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S1078:YES)、VDP起動失敗回数を加算する処理を行い(S1079)、サブサブ状態監視処理を抜ける。また、表示復帰要求があるか否かの判定処理(S1074)において、表示復帰要求がなければ(S1074:NO)、起動チェック1コマンドを送信し(S1080)、起動チェック2コマンドの送信処理(S1076)へ移行する。
サブサブ状態判定処理(S682)において、判定結果が起動中の状態である場合、前述の変形例2と同様に、サブサブ起動待ち時間(ここでは10000ms)が経過したか否かの判定処理(S1020)を行う。
<サブサブ状態監視処理の変形例3>
図38(a)は、サブサブ状態監視処理の他の変形例を示している。本例においては、サブサブ状態がイネーブル中の場合に、トグル切替回数クリア(S689)の後に、ASIC割込み許可(S1091)を行って、サブサブ状態監視処理を抜ける。ASIC割込み許可(S1091)は、追加された画像制御基板からの割込みの許可を意味している。
前述のサブサブ状態判定処理(S682)において、サブサブ状態がサブサブ起動待ちの場合には、サブサブ起動待ち時間の減算を行い(S1096)、画像制御基板32の起動完了の判定処理(S1097)を行う。この起動完了の判定処理(S1097)においては、トグル信号の切替え回数を監視する前述の各例と異なり、所定時間の経過に基づき、画像制御基板32の起動が完了したことを判定する。そして、画像制御基板32の起動が完了した場合には(S1097:YES)、サブサブ起動完了フラグセット(S1098)、コマンド送信許可フラグ及びコマンド受付許可フラグのON(S1099)、モニタLED消灯の処理(S1100)を行う。
一方、前述の画像制御基板32の起動完了の判定処理(S1097)において、画像制御基板32の起動が完了していないと判定した場合には(S1097:NO)、異常検出時であるか否かの判定処理(S1101)を行い、エラー検出中である異常検出時であれば(S1101:YES)、サブサブリセット要求をONし(S1102)、サブサブ状態監視処理を抜ける。ここで、異常検出時であるか否かの判定は、画像制御基板32における所定の処理(ここでは「ASIC処理」と称する)により、所定の割込み要求があるか否かに基づいて行われるが、ASIC処理については後述する。
上述のS1101において、異常検出時でなければ(S1101:NO)、サブサブ起動待ち時間が経過したか否かの判定処理(S1103)を行い、サブサブ起動待ち時間が経過していなければ(S1103:NO)、サブサブ状態監視処理を抜ける。サブサブ起動待ち時間が経過していれば(S1103:YES)、VDP起動失敗回数を加算する処理を行い(S1104)、サブサブリセット要求をONし(S1105)、サブサブ状態監視処理を抜ける。
前述のサブサブ状態判定処理(S682)において、サブサブ状態がサブサブ起動中の場合には、VDPに係るウォッチドッグエラー検出時であるか否かの判定処理(S1111)を行い、VDPウォッチドッグエラー検出時であれば(S1111:YES)、VDPウォッチドッグエラー回数を加算し(S1112)、サブサブリセット要求をONする(S1113)。さらに、その他のVDPエラーが検出されているか否かの判定処理(S1114)を行い、その他のVDPエラーが検出されている場合には(S1114:YES)、VDPエラー回数を加算し(S1115)、サブサブリセット要求をONし(S1116)、サブサブ状態監視処理を抜ける。
上述のS1111において、VDPウォッチドッグエラー検出時でなければ(S1111:NO)、その他のVDPエラーが検出されているか否かの判定処理(S1114)へ進む。また、S1114において、その他のVDPエラーが検出されている場合でなければ(S1114:NO)、サブサブ状態監視処理を抜ける。
続いて、前述のASIC処理について、図38(b)に基づき説明する。このASIC処理は、画像制御基板32の他に更に追加された画像制御基板において行われるものであり、ASIC処理が開始されると、異常検出時であるか否かの判定処理(S1120)が行われる。異常検出時でなければ(S1120:NO)、ASIC処理を終えるが、異常検出時であれば(S1120:YES)、ASICレジスタに以上情報を書込み(S1121)。そして、所定の割込み処理をサブ制御基板に対して要求する処理を行い(S1122)、ASIC処理を終える。
<アンプ状態監視処理の変形例1>
次に、前述のアンプ状態監視処理(図23参照)の変形例について説明する。なお、前述の例と同様の部分については同一符号を付し、その説明は省略する。図39は、サブサブ状態監視処理の変形例を示している。本例においては、サブサブリセット要求ONの処理(S726)の後に、ミュートON(S1131)、所定時間(ここでは10.577nS)のウェイト(待機)の処理(S1132)、ミュートOFF(S1133)の各処理を順に行う。その後、LO検出カウンタをクリアし(S727)、アンプ状態監視処理を抜ける。
本例では、上述のS1131〜S1132のようにミュートONの状態を所定時間確保することにより、サブサブリセット要求ONにより画像制御基板32をリセットしても、所定時間が経過しなければ、アンプ状態がHIに戻らないようになっている。
<アンプ状態監視処理の変形例2>
図40は、サブサブ状態監視処理の他の変形例を示している。本例においては、アンプ状態の読み込みの処理(S722)の後に、アンプ状態の判定処理(S1141)が行われ、その後はアンプ状態に応じた処理が行われるようになっている。すなわち、このアンプ状態の判定処理(S1141)においては、図中の左側から右側へ分岐して示すように、アンプ状態が通常監視状態であるのか、LO検出状態における監視状態であるのか、復帰判断状態であるのか、その他の状態であるのかを判定する。
アンプ状態の判定処理(S1141)において、アンプ監視状態が通常監視状態であった場合には、アンプ状態がLOであるのか否かの判定処理(S1142)を行い、アンプ状態が異常を示すLOであれば(S1142:YES)、LO状態を継続して監視するためのLO継続監視タイマ(ここでは1008ms)をセットする(S1143)。さらに、アンプ監視状態をLO検出状態にある監視状態とし(S1144)、アンプ状態監視処理を抜ける。また、上述のS1142において、アンプ状態LOでなければ(S1142:NO)、アンプ状態監視処理を抜ける。
前述のアンプ状態の判定処理(S1141)において、アンプ監視状態がLO検出状態にある監視状態であった場合には、アンプ状態がLOであるのか否かの判定処理(S1151)を行い、アンプ状態がLOであれば(S1151:YES)、LO継続監視タイマをセットするとともに減算を開始する(S1152)。続いて、減算後の値が0であるか否かの判定処理(S1153)を行い、減算後の値が0であれば(S1153:YES)、サブサブリセット要求ONの処理(S1154)の後に、アンプ監視状態を通常監視状態とする(S1155)。そして、アンプショート検出回数の更新の処理(S1156)を行い、画像制御基板32をリセットした回数の記録を残し、アンプ状態監視処理を抜ける。
前述のS1151において、アンプ状態がLOでなければ(S1151:NO)、アンプ状態がLOからHIに切替わるのを待つための検出カウンタ(ここでは32ms)をセットし(S1157)、アンプ監視状態を復帰判断状態とし(S1158)、アンプ状態監視処理を抜ける。なお、本例では画像表示のフレーム表示周期が16msとなっており、S641における検出カウンタのセット値(32ms)は、このフレーム周期の2フレーム分に相当する値である。また、上述のS1153において、減算後の値が0でなければ(S1153:NO)、アンプ状態監視処理を抜ける。
前述のアンプ状態の判定処理(S1141)において、アンプ監視状態が復帰判断状態であった場合には、アンプ状態がLOであるのか否かの判定処理(S1161)を行い、アンプ状態がLOであれば(S1161:YES)、アンプ監視状態をLO検出状態にある監視状態とし(S1162)、アンプ状態監視処理を抜ける。アンプ状態がLOであれば(S1161:NO)、アンプ状態がLOからHIに切替わるのを待つための検出カウンタの減算を行い(S1163)、減算結果が0でなければ(S1164:NO)、アンプ状態監視処理を抜ける。減算結果が0であれば(S1164:YES)、アンプ監視状態を通常監視状態とし(S1171)、アンプ状態監視処理を抜ける。また、前述のアンプ状態の判定処理(S1141)で、HIが継続している場合には、前述のその他の状態であると判定され、その場合にもこのアンプ監視状態を通常監視状態とする処理(S1171)が実行される。
なお、変形例1及び変形例2を含む前述のアンプ状態監視処理では、アンプが1つのみ備えられている例を説明しているが、アンプが複数ある場合には、各々のアンプに対して、前述のアンプ状態監視処理の各例と同じ処理を行うことが可能である。
<<1ms割込み処理に係る変形例>>
次に、1ms割込み処理(図25参照)の変形例について説明する。本例は、前述のASICを有する画像制御基板を追加したタイプのものであり、先に説明した「サブサブ状態監視処理の変形例3」で説明したタイプと同様のものである。なお、前述の1ms割込み処理の例(図25参照)と同様の部分については同一符号を付し、その説明は省略する。図41は、1ms割込み処理の変形例を示している。本例においては、コマンド送信状態の判定処理(S741)が行われ、コマンド送信状態が、図中に左から示すように、アイドル状態であるのか、データ送信開始待ちであるのか、データ送信中であるのかが判定される。
コマンド受信状態の判定処理(S741)において、判定結果がアイドル状態であった場合には、バッファ(サブメインコマンドリングバッファ)に未送信コマンドデータがあるか否かの判定処理(S742)が行われ、未送信コマンドデータがない場合には(S742:NO)、1割込み処理を終えて割込み前の位置へ戻る。未送信コマンドデータがある場合には(S742:YES)、コマンド登録するとともに読込ポインタを更新する(S743)。
さらに、送信要求コマンドがまだあり、かつ、その残りのコマンドが15コマンド(30バイト)未満であるのか否かの判定処理(S1181)を行う。そして、15コマンド未満のコマンドが残っている場合には(S1181:YES)、上述のコマンド登録及び読み込みポインタ更新の処理(S743)へ戻り、15コマンド未満のコマンドが残っていない場合には(S1181:NO)、送信バイト数を登録する(S1182)。さらに、送信リトライ回数をクリアし(S1183)、コマンド送信状態をデータ送信開始待ちとし(S1184)、1割込み処理を終える。
コマンド受信状態の判定処理(S741)において、判定結果がデータ送信開始待ちであった場合には、ASICレジスタの読み込みを行い(S1191)、コマンド送信可能状態か否かの判定処理(S1192)を行う。コマンド送信が可能な場合には(S1192:YES)、送信バイト数及びチェックサムの登録を行い(S1193)、コマンド送信状態をデータ送信中とし(S1194)、1割込み処理を終える。上述のS1192において、コマンド送信が可能でない場合には(S1192:NO)、そのまま1割込み処理を終える。
前述のコマンド受信状態の判定処理(S741)において、判定結果がデータ送信中であった場合には、登録分のデータを送信実行し(S1201)、送信待ち時間(ここでは3ms)をセットし(S1202)、コマンド送信状態をACK待ちとし(S1203)、1割込み処理を終える。
前述のコマンド受信状態の判定処理(S741)において、判定結果がACK待ちであった場合には、ASICレジスタにエラー情報があるか否かの判定処理(S1211)を行い、エラー情報がある場合には(S1211:YES)、リトライ処理(S1212)を行う。そして、送信待ち時間が経過したか否かの判定処理(S1213)を行い、送信待ち時間が経過していれば(S1213:YES)、送信が正常に完了したと判断してコマンド送信状態をアイドル状態とし(S1214)、1割込み処理を終える。リトライ処理の内容は、図25(b)に示したものと同様である。
上述のS1211において、エラー情報がない場合には(S1211:NO)、送信待ち時間が経過したか否かの判定処理(S1213)へ移行する。また、このS1213において、送信待ち時間が経過していなければ(S1213:NO)、1割込み処理を終える。
<サブ制御基板における基本的制御に係る各発明の作用効果>
次に、上述した各実施例から抽出可能な各発明の作用効果について説明する。先ず、サブ制御基板31に係る第1発明によれば、サブ制御基板31のメインループ処理(図20参照)内において、アンプ状態監視処理は、メインループ処理内のループ処理(S659〜S661よりも前に配置されている。したがって、アンプ状態の監視を周期的(例えば16msごと)に繰り返し行うことが可能であるとともに、アンプ状態の監視周期の設定が容易である。また、画像制御基板32に対するリセット信号の送信を、異常を検出して所定期間が経過したときに行っているので、当該所定期間の加減により、ノイズ等により一過性の異常が生じたに過ぎない場合に画像制御基板32がリセットされてしまうのを防止できる。
続いて、第2発明によれば、メインループ処理(図20参照)中のフレーム毎実行処理(S657)により電源ONの時間の記録が残されるとともに、電源断処理(図34(a)参照)において電断回数の更新が行われるので(S871)、スロットマシン10を例えば製造業者が回収したときなどに、残っているデータを調べることで、電源断が行なわれた「回数」(累積値)と電源断の「時間」を把握することができる。そして、残されたデータに基づき、例えば、製品に不正行為が行われたか否か、製品の異常発生の傾向、等といった事項を把握することが可能となる。
続いて、第3発明によれば、電断の回数の記録(図34(a)のS871参照)の他に、瞬断の回数の記録が残されるので(図34(b)のS893参照)、製品回収時に、正常に行われた電断の回数と、瞬断が行なわれた回数(累積値)の双方に係る情報を把握することができる。これにより、例えば、製品に不正行為が行われたか否か、製品の異常発生の傾向、等といった事項を把握することが可能となる。
続いて、第4発明によれば、サブサブ状態監視処理により、サブサブ制御手段の起動状況に応じてエラーに係る出力要求を行うことができ、サブサブ制御手段の状態に応じたエラー出力が可能となる。
続いて、第5発明によれば、メインループ処理内において、液晶ユニット監視処理(S655)やアンプ状態監視処理(S656)などの監視処理の前、及び、1コマンド処理(S659)の前のそれぞれの工程においてウォッチドッグタイマクリア処理(S651,S658)が実行される。したがって、監視処理及び1コマンド処理のそれぞれについて個別に暴走監視を行うことが可能となる。さらに、双方のウォッチドッグタイマクリア処理(S651,S658)の実行回数の実績を表す情報(フラグ等)を個別に記憶しておくことにより、メインループ処理内のどのあたりの処理でウォッチドッグ機能が作動しているのか、といった情報を把握することができ、製品の試作段階等においてスムーズに修正や改善を行うことが可能となる。また、製品化後においても、製品に不正行為が行われたか否か、製品の異常発生の傾向、等といった事項を把握することが可能となる。
続いて、第6発明によれば、1バイト送信毎に送信データエンプティ割込み処理が実行されるので、割込み処理により連続してコマンド送信を行うことができ、コマンド送信の効率化を図ることが可能となる。なお、送信データエンプティ割込み処理は、所定のバイト数(例えば14バイト(図32のS845参照))を最大数とし、最大数に達した場合に、画像制御基板32からの応答待ちの状態となるが、仮にバッファに送信コマンドが残っていた場合であっても、次回の1ms割込み処理で送信処理が実行されるので、メインループ処理の時間を保ったまま、全コマンドの送信を完了することができる。
続いて、第7発明によれば、1ms割込みよりも、ウォッチドッグタイマ割込みの優先順位が高く設定されているので、第6発明の作用効果に加え、仮に1ms割込み処理内で暴走が生じた場合でも、ウォッチドッグタイマがタイプアップとなった際に、処理を正常な状態に戻すことができる。
続いて、第8発明によれば、サブ制御基板31において、主制御基板61からの第1系統コマンドと第2系統コマンドのための受信コマンドバッファを区別して設けており、系統ごとに必要な処理を行う。したがって、両系統のコマンドがバッファ内で混在して、早急に実行する必要があるコマンドに係る処理が、他方の系統のコマンドの影響を受けてバッファ内に溜まってしまうことを防止できる。そして、コマンドの性質に応じて、偏りや滞留がなく、最適なタイミングで、コマンドに係る処理を実行することができる。
続いて、第9発明によれば、第8発明に加え、主制御基板61からのコマンド受信割込み(図26(a)参照)優先順位が、WDT割込み(21(b)参照)よりも高く設定されており、WDT割込みによる影響を受けずに、確実にコマンド受信に伴う処理を実行することができる。
続いて、第10発明によれば、第9発明に加え、1コマンド処理(S659)を含むメインループ内ループ処理(S659〜S661)が、1msタイマ割込みが所定回数(16回など)繰り返されるまで実行される。したがって、メインループ内ループ処理(S659〜S661)を「タイマ割込み」の回数で管理することができ、適切な周期でメインループ内ループ処理(S659〜S661)を実行することが可能となる。さらに、主制御基板61から送信された未処理のコマンドを少なくすることができる。
<サブ制御基板におけるROM内容の暗号化>
次に、前述のスロットマシン10に適用が可能なデータの暗号化について説明する。図42(a)は、暗号化のためのハードウェア構成を示しており、図中に符号91で示すのは、サブメインCPU81内のCPUコアである。さらに、サブメインCPU81には、内蔵ROM92や内蔵RAM93が備えられるとともに、外付けRAM(外部RAM)94や外付けROM(外部ROM)96(前述のサブ制御ROM82と同じ)が接続されている。さらに、サブメインCPU81には、動作スピードを選択するためのHL設定機能が備えられており、このHL設定機能に用いられる所定数(ここでは3つ)の外部インタフェース端子であるH/Lピン95が設けられている。
データ暗号化は、図中の外部ROM96(以下では「ROM96」と称する)に網掛けを付して示すように、外部ROM96内の少なくとも一部のデータに対して行われているが、遊技制御データ及び制御プログラムの双方に対して行われている。そして、サブ制御基板31の電源がONされると、暗号化されたデータのうち所定の一部のデータは、内蔵RAM93に展開され、展開される際に復号化される。
本実施例において行われている暗号化には、暗号化される領域、電源のON・OFF、復号化のタイミング、暗号化されるデータの内容等について後述するような種々の特徴がある。先ず、暗号化される領域は、前述のようにROM96の全ての領域ではなく、データの種類に応じて予め定められた複数の領域である。図42(b)は、本実施例における暗号化のイメージを把握し易いように、ROM96の記憶領域や記憶されているデータの種類を概略的に示している。図中の左側に示すのは、暗号化されていない非暗号化の状態であり、中央の矢印を挟んで右側に示すのは、暗号化された後である暗号化の状態である。本実施例のROM96は、図中の左側に示す各種のデータを、右側に示す暗号化の状態で記憶している。
図42(b)中の左側に示す非暗号化の状態において、ROM96の記憶領域には、各種の制御のためのプログラムモジュールが記憶されたプログラム領域と、各種のプログラムで利用される各種のテーブルや所定のデータが記憶されたデータ領域とが存在する。プログラム領域に記憶されているデータとして例示しているのは、上から順に、初期設定、コマンド受信、遊技状態判定、AT抽選、その他の処理A、サブ条件装置振分、サブ状態設定、レバー時処理、その他の処理B、押し順ナビ生成、演出制御、1st停止時処理、2nd停止時処理、全停時処理、遊技状態更新、その他の処理Cの各種プログラムである。また、データ領域に記憶されているデータとして例示しているのは、上から順に、AT抽選テーブル、その他データA、演出抽選テーブル、メニュー画面用データ、サブ条件装置置数テーブル、リセットベクタの各データである。
プログラム領域の各プログラムのうち、初期設定は、電源立ち上げ時(起動時やリセット時など)に伴い演出制御の準備の処理のためのものであり、コマンド受信は、主制御基板61からのコマンドの受信に係る処理のためのものである。遊技状態判定は、状況に応じた制御を行うにあたって遊技状態を判定するためのものであり、AT抽選は、AT抽選を実行するためのものである。
サブ条件装置振分は、主制御基板61で当せんした役に基づいて、当該役に対応付けられた複数の選択肢の中から更に細分化された役の態様を決定する処理のためのものである。例えば、このサブ条件装置振分のプログラムにより、例えば主制御基板61で所定の2枚役(規定数2枚の役)の当せんが決定されたような場合に、この所定の2枚役に対応する制御態様として選択可能な複数種類のうちのいずれの制御態様に振り分けるかが決定される。例えば、2枚役に異なる制御態様のもの(所定の2枚役Aや、これとは異なる制御態様の2枚役Bなど)を設け、サブ条件装置振分によって、所定の確率でこれらの2枚役への振り分けを行う。そして、振り分けられた結果によって、更に、内容や演出の異なるAT抽選等が行われる。
さらに、レバー時処理のプログラムは、スタートレバー25の操作が行われた際の処理のためのものであり、押し順ナビ生成は、所定の役に当せんした場合に停止ボタン24C,24R,24Lの操作順序をナビゲート(案内)する処理のためのものであり、1st停止時処理、2nd停止時処理及び全停時処理は、それぞれ最初に回胴が停止する場合の処理、2番目に回胴が停止する場合の処理、最後に回胴が停止する場合の処理のためのものである。また、遊技状態更新は、サブメイン制御手段側の高確率状態や、低確率状態、又はAT遊技状態などの遊技状態を更新するためのものである。
データ領域の各データのうち、AT抽選テーブルは、AT抽選に用いられる各テーブルのデータであり、演出抽選テーブルは、演出の抽選に用いられる各テーブルのデータである。メニュー画面用データは、例えば遊技者が選択できる項目を表示するメニュー画面のデータであり、サブ条件装置置数テーブルは、サブ制御基板31が行うサブ条件装置の振り分け抽選に用いられるテーブルのデータである。さらに、リセットベクタは、電源立ち上げ時に実行される最初の処理のアドレスを示すデータである。
また、非暗号化の状態において、プログラム領域とデータ領域との間には空き領域が設けられている。なお、ここで例示しているプログラム領域やデータ領域のデータは、本実施例に係る発明の理解を容易にするためのものであり、各データの内容や配置はこれらに限定されるものではない。
そして、上述のようなデータを有するROM96は、図42(b)中の右側に示すように暗号化されており、後述するように、状況に応じて暗号化されたデータを複合化し、RAMに展開する。図42(b)中右側の暗号化された状態のROMにおいては、暗号化領域が定められており、この暗号化された領域に、暗号化の対象となっているデータが格納されている。図中の暗号化された状態については、暗号化領域を網掛けで示している。
図中に示すように、暗号化領域は、複数の領域に分けて設けられており、本実施例においては、主に図中左側に示す非暗号化の状態のプログラム領域のデータを記憶した第1暗号化領域、データ領域のデータを記憶した第2暗号化領域及び第3暗号化領域がある。これらの第1暗号化領域〜第3暗号化領域に対しては、隣接した態様のメモリ配置は行われておらず、各暗号化領域の間には、暗号化されていないデータを記憶した非暗号化領域が介在している。さらに、第1暗号化領域〜第3暗号化領域の容量の関係は、第1暗号化領域の容量が、第2暗号化領域や第3暗号化領域の容量よりも大きく設定されている。
図42(b)中の例では、第1暗号化領域には、プログラムのデータとして、コマンド受信、遊技状態判定、AT抽選、サブ条件装置振分、サブ状態設定、遊技状態更新が記憶されている。また、第1暗号化領域には、プログラム以外のデータとして、リセットベクタのデータが記憶されている。さらに、第2暗号化領域にはAT抽選テーブルが記憶され、第3暗号化領域にはサブ条件装置置数テーブルが記憶されている。さらに、第1暗号化領域と第2暗号化領域との間には、その他の処理A、レバー時処理等のプログラムや空き領域が介在しており、第2暗号化領域と第3暗号化領域との間には、プログラム以外のデータである、その他データA、演出抽選テーブル、メニュー画面用データが介在している。さらに、第3暗号化領域の後段には、空き領域が隣接している。
また、データの復号化に関して、本例では、復号化のタイミングが、暗号化されたデータの性質に応じて異なっている。つまり、例えばプログラム領域に係るデータのように、サブ制御基板31の制御上、統括的に用いられるデータは、電源投入時に復号化されて、内蔵RAM93に展開される。これに対して、例えばAT抽選テーブルやサブ条件装置抽選テーブル等については、遊技制御の進行上、抽せんの必要が生じた場合に選択的に復号化され、内蔵RAM93に展開される。
さらに、電源断時には、内蔵RAM93に記憶されているデータのうち、バックアップ対象となっているデータは、外部RAM94に移行され、外部RAM94にバックアップ電源からの電力を供給することにより、データバックアップがされる。
このようにROMデータの暗号化を行うとともに、暗号化領域を複数に分けて配置することにより、特に暗号化が必要なデータに対して選択的に暗号化を行うことができる。本実施例では、暗号化領域にコマンド受信、遊技状態判定、AT抽選、サブ条件装置振分、サブ状態設定、遊技状態更新、リセットベクタ、AT抽選テーブル、サブ条件装置置数テーブルが記憶されている。これらのデータは、サブ制御基板31で管理されるものであるが、出玉に影響を与える可能性が高いものであり、不正を意図したROMのデータ解析の際には解析の対象となり易いものである。したがって、本実施例のように、不正の対象となり易いデータを選択的に暗号化することができ、例えば暗号化できるメモリ数が全体の一部に制約されているような場合でも、必要なデータに対して優先的に暗号化を行うことができる。そして、暗号化する必要のない領域までも暗号化してしまうようなことを防止でき、結果として、効率的な暗号化を図ることができる。
なお、図42(b)中右側の暗号化の状態の図では、説明の便宜上、第1暗号化領域内の各データを整然と記載しているが、暗号化に伴い、第1暗号化領域内のデータは、どのようなデータがどのようなデータ構造で格納されているのか、外部からは判断できない状態となっている。また、第2暗号化領域内のデータや第3暗号化領域内のデータについても同様に、どのようなデータがどのようなデータ構造で格納されているのか、外部からは判断できない状態となっている。
なお、リセットベクタのデータについて、暗号化の際に、リセットベクタにより指定される制御プログラムのスタートアドレスをランダムに設定することで、プログラムのスタート位置がランダムに暗号化される。このため、暗号化されたデータを不正に解析しようとしても、制御フローを探し出し難くなり、解析の困難性が高まる。そして、暗号化と併せて、更に解析の困難性が高まる。
また、暗号化される際に、リセットベクタにより指定されるスタートアドレスは同じままとし、リセットベクタのアドレスをランダムな位置で記憶することによっても、解析の困難性を高めることができる。
さらに、前述のようにデータバックアップを行う際には一部のデータが外部RAM94に保存されるが、外部RAM94にデータを書き込む際に暗号化を行い、電断復帰の際に、外部RAMに記憶されていた暗号化データを復号化し、内蔵RAMに93に展開することで、電断時に実行していた処理のアドレス値なども暗号化されることとなり、このことによっても暗号化データに対する解析の困難性が高まる。なお、暗号化するデータとしては外部RAM94に保存されるデータのうち一部(電断時に実行していた処理のアドレス値など)としてもよい。
また、前述のように暗号化された一部のデータ(プログラムデータなど)の復号化を、スロットマシン10の起動時(図19のS633参照)に行うことにより、データの暗号化を採用しても、可及的に、処理スピードが遅くなるのを防止することができる。
また、前述のように暗号化された一部のデータ(抽選テーブルなど)の復号化を、遊技制御進行上、必要となるタイミングに合わせて行うことにより、それ以前に復号化する場合に比べて、内蔵RAM93の領域を、復号化されたデータによって過度に占有するということがなく、内蔵RAM93の記憶領域を効率的に使用できる。なお、処理実行時に復号化されるデータ量に対して、起動時に復号化されるデータ量の方が多くなっている。
さらに、出玉に影響を与え得るAT抽選に係るプログラムやAT抽選テーブルを暗号化しているので、秘匿性を高めることができ、不正行為に対する強化を図ることができる。さらに、AT抽選プログラムとAT抽選テーブルの復号化のタイミングを異ならせているので、秘匿性の向上と、内蔵RAM93の領域使用の効率化との双方を図ることが可能である。
なお、起動時に復号化される複数のデータのデータ量を、例えばそれぞれA1,B1,C1と表し、内蔵RAM93の容量をXと表した場合に、X>(A1+B1+C1)の関係を満たすように、内蔵RAM93の容量を設定することが可能である。ここで、内蔵RAM93の容量Xが、起動時に復号化されるA1,B1,C1の合算で求められるものであってもよい。
また、処理実行時に復号化される複数のデータのデータ量を、例えばそれぞれA2,B2,C2と表し、内蔵RAM93の容量をXと表した場合に、X<(A2+B2+C2)の関係を満たすように、内蔵RAM93の容量を設定することが可能である。また、一部の暗号化データを起動時に展開し、残りのデータは処理実行時に必要に応じて展開するようにしてもよい。
また、前述のようにプログラム開始処理(図19参照)において、ウォームスタートとコールドスタートの判別処理(S638)が行われているが、ROM96に記憶されたデータに係るチェックサム処理については、ウォームスタートのときは行わないようにしてもよい。これにより、起動時の状況に応じて処理が異なることとなり、サブ制御基板31の立ち上げを迅速に行うことが可能となる。
さらに、サブメインCPU81には、動作スピードを選択するためのHL設定機能が備えられているので、HL設定の内容により、ROM96の特性に合わせた動作速度を選択することが可能である。そして、H/Lピン95を操作してHL設定を変更することで、動作スピードを段階的に調整することができる。
さらに、ROM96の空き領域を所定の固定値(00H)としてもよい。この場合には、空き領域の内容を確認することで、不正なプログラムが混入されたかの判断が容易となる。また、また、ROMの空き領域をランダムな値としてもよく、このようにした場合には、使用している領域の判断が困難となり、不正に強くなる。
また、主制御基板61からサブ制御基板31への送信コマンド(サブ制御コマンド)を暗号化し、サブ制御基板31で、サブメインコマンドの複合化を行ってもよい。この場合、暗号した際の暗号キーに対応する複合化キーを用いて複合しなければ、得られた値は、本来のサブメインコマンドが示す遊技状態とは異なる遊技状態となるようにすることが考えられる。
そして、前述した主制御基板61、サブ制御基板31、画像制御基板32の適正な動作や、相互の円滑な連携と、ここで説明したサブ制御基板31におけるデータ暗号化とを組み合わせることで、サブ制御基板31で取り扱われるデータ(ここではプログラムを含む)への不正防止策を施したうえで、各制御基板の適正な動作や、相互の円滑な連携を図ることができる。
なお、本発明は上述した各実施形態に限定されず、種々に変形することが可能である。