以下、図面を用いて、本発明の実施形態の一例に係るスロットマシン(遊技台)について詳細に説明する。
<全体構成>
まず、図1を用いて、本実施形態の一例に係るスロットマシン100の全体構成について説明する。なお、図1はスロットマシン100の外観斜視図を示したものである。
スロットマシン100の本体101の中央内部には、外周面に複数種類の絵柄が配置されたリールが3個(左リール110、中リール111、右リール112)収納され、スロットマシン100の内部で回転できるように構成されている。本実施形態において、各絵柄は帯状部材に等間隔で適当数印刷され、この帯状部材が所定の円形枠材に貼り付けられて各リール110〜112が構成されている。リール110〜112上の絵柄は、遊技者から見ると、絵柄表示窓113から縦方向に概ね3つ表示され、合計9つの絵柄が見えるようになっている。そして、各リール110〜112を回転させることにより、遊技者から見える絵柄の組み合せが変動することとなる。なお、本実施形態では、3個のリールをスロットマシン100の中央内部に備えているが、リールの数やリールの設置位置はこれに限定されるものではない。
又、各々のリール110〜112の背面には、絵柄表示窓113に表示される個々の絵柄を照明するためのバックライト(図示省略)が配置されている。このバックライトは、各々の絵柄ごとに遮蔽されて個々の絵柄を均等に照射できるようにすることが望ましい。なお、スロットマシン100内部において各々のリール110〜112の近傍には、投光部と受光部からなる光学式センサ(図示省略)が設けられており、この光学式センサの投光部と受光部のあいだを、リールに設けられた一定の長さの遮光片が通過するように構成されている。このセンサの検出結果に基づいてリール上の絵柄の回転方向の位置を判断し、目的とする絵柄が入賞ライン114上に表示されるようにリール110〜112を停止させる。
入賞ライン表示ランプ120は、有効となる入賞ラインを示すランプである。有効となる入賞ラインは、スロットマシン100に投入されたメダルの数によって予め定まっている。5本の入賞ライン114のうち、例えば、メダルが1枚投入された場合、中段の水平入賞ラインが有効となり、メダルが2枚投入された場合、上段水平入賞ラインと下段水平入賞ラインが追加された3本が有効となり、メダルが3枚投入された場合、右下り入賞ラインと右上り入賞ラインが追加された5本が入賞ラインとして有効になる。なお、入賞ライン114の数については5本に限定されるものではない。
スタートランプ121は、リール110〜112が回転することができる状態にあることを遊技者に知らせるランプである。再遊技ランプ122は、前回の遊技において入賞役の一つである再遊技役に入賞した場合に、今回の遊技が再遊技可能であること(メダルの投入が不要であること)を遊技者に知らせるランプである。告知ランプ123は、後述する内部抽選において、特定の入賞役(例えば、BB(ビッグボーナス)やRB(レギュラーボーナス)等のボーナス)に内部当選していることを遊技者に知らせるランプである。メダル投入ランプ124は、メダルの投入が可能であることを知らせるランプである。払出枚数表示器125は、何らかの入賞役に入賞した結果、遊技者に払出されるメダルの枚数を表示するための表示器である。遊技回数表示器126は、後述するメダル投入時のエラー表示や、ビッグボーナスゲーム中(BBゲーム中)の遊技回数、所定の入賞役の入賞回数等を表示するための表示器である。貯留枚数表示器127は、スロットマシン100に電子的に貯留されているメダルの枚数を表示するための表示器である。リールパネルランプ128は、演出用のランプである。
メダル投入ボタン130、131は、スロットマシン100に電子的に貯留されているメダルを所定の枚数分投入するためのボタンである。本実施形態においては、メダル投入ボタン130が押下される毎に1枚ずつ最大3枚まで投入され、メダル投入ボタン131が押下されると3枚投入されるようになっている。メダル投入口134は、遊技を開始するに当たって遊技者がメダルを投入するための投入口である。すなわち、メダルの投入は、メダル投入ボタン130又は131により電子的に投入することもできるし、メダル投入口134から実際のメダルを投入することもできる。精算ボタン132は、スロットマシン100に電子的に貯留されたメダル及びベットされたメダルを精算し、メダル払出口155よりメダル受皿156に排出するためのボタンである。メダル返却ボタン133は、投入されたメダルが詰まった場合に押下してメダルを取り除くためのボタンである。
スタートレバー135は、遊技の開始操作を行うためのレバー型のスイッチである。即ち、メダル投入口134に所望する枚数のメダルを投入して、スタートレバー135を操作すると、これを契機としてリール110〜112が回転し、遊技が開始される。ストップボタン137〜139は、スタートレバー135の操作によって回転を開始したリール110〜112に対する停止操作を行うためのボタンであり、各リール110〜112に対応して設けられている。そして、いずれかのストップボタン137〜139を操作すると対応するいずれかのリール110〜112が停止することになる。
ドアキー140は、スロットマシン100の前面扉102のロックを解除するためのキーを挿入する孔である。メダル払出口155は、メダルを払出すための払出口である。メダル受皿156は、メダル払出口155から払出されたメダルを溜めるための器である。なお、メダル受皿156は、本実施形態では発光可能な受皿を採用しており、以下受皿ランプと呼ぶこともある。
上部ランプ150、サイドランプ151、中央ランプ152、腰部ランプ153、下部ランプ154、受皿ランプ156は、遊技を盛り上げるための装飾用のランプである。演出装置157は、例えば開閉自在な扉(シャッター)が前面に取り付けられた液晶表示装置を含み、この演出装置157には、例えば小役告知等の各種の情報が表示される。音孔160は、スロットマシン100内部に設けられているスピーカの音を外部に出力するための孔である。
<制御部>
次に、図2を用いて、このスロットマシン100の制御部の回路構成について詳細に説明する。
スロットマシン100の制御部は、遊技の中枢部分を制御する主制御部300と、主制御部300より送信されたコマンド(制御情報)に応じて各種機器を制御する副制御部400と、演出装置157を制御する表示制御部(図示省略)と、によって構成されている。
<主制御部>
まず、スロットマシン100の主制御部300について説明する。
マイクロプロセッサ(以下、メインCPUと称す)310は、スロットマシン100における制御の中枢となるものであり、バス370を介して、周辺部との間で制御信号やデータの受渡しが行われる。乱数発生器311は、乱数を発生するもので、複数のカウンタ、クロック発振器、分周器及びラッチ回路等で構成される。乱数発生器311が発生した乱数値は、バス370を介して、RAM313の乱数記憶領域に記憶され、必要に応じてメインCPU310へ送られる。乱数値は、複数種類存在し、それぞれ処理内容に応じて使用される。メインCPU310には、入力インターフェース360及びバス370を介して、メダル投入口ブロック134の投入口より投入されたメダルを検知するメダルセンサ320、スタートレバー135の操作を検知するスタートレバーセンサ321、ストップボタン137〜139のいずれかが押された場合、どのストップボタンが押されたかを検知するストップボタンセンサ322、メダル投入ボタン131が押されたことを検知するメダル投入ボタンセンサ323、精算ボタン132の押下に伴って動作する精算ボタンスイッチ324が接続されている。
ROM(リード・オンリー・メモリ)312は、各種制御を行うためのプログラムや、後述する各種テーブルデータ等を記憶する記憶手段の一つである。RAM(ランダム・アクセス・メモリ)313は、メインCPU310によって処理されるプログラムのワークエリアを有し、可変データ等を記憶する記憶手段の一つである。本実施形態では、このようにROM及びRAMを採用しているが、他の記憶手段も採用可能であることはいうまでもない。この点は後述する副制御部においても同様である。また、リール110〜112の回転駆動を行うモーター(図示省略)を制御するモーター制御部330、及び、メダル払出装置(いわゆるホッパー:図示省略)を制御するホッパー制御部331が、入出力インターフェース332及びバス370を介してメインCPU310に接続されている。図中の演出用ランプ・表示器類340とは、図1で示した入賞ライン表示ランプ120、スタートランプ121、再遊技ランプ122等のランプ類や、払出枚数表示器125、遊技回数表示器126等の各種表示器をまとめて表したもので、出力インターフェース342およびバス370を介してメインCPU310に接続されている。出力インターフェース350は、メインCPU310の指示に基づき、各種の主制御コマンドを副制御部400の入力インターフェース440へ送信する。
<副制御部>
次に、同図を用いて、スロットマシン100の副制御部400について説明する。
マイクロプロセッサ(以下、サブCPUと称す)410は、主制御部300から送信された各種コマンドを入力インターフェース440およびバス430を介して受信し、受信したコマンドの内容に応じて副制御部400全体を制御する。ROM411は、副制御部400全体を制御するためのプログラムやデータ等を記憶する記憶手段の一つである。RAM412は、サブCPU410で処理されるプログラムのワークエリアを有し、可変データ等を記憶する記憶手段の一つである。バックライト420は、リールの絵柄を照らすライトで、サブCPU410の指示に従って点灯/点滅/消灯する。演出用ランプ421は、上部ランプ150、サイドランプ151、中央ランプ152、腰部ランプ153、下部ランプ154、受け皿ランプ156をまとめて表したもので、サブCPU410の指示に従って点灯/点滅/消灯する。バックライト420および演出用ランプ421は、出力インターフェース422を介してバス430を経てサブCPU410と接続されている。楽音信号形成部460は、サブCPU410から受け渡された制御信号やデータに基づいて、楽音信号を形成して出力する。この楽音信号は、アンプ461で増幅された後、スピーカ(具体的には上部スピーカ及び中央スピーカ)462から音として出力される。出力インターフェース450は、サブCPU410の指示に基づき、各種制御データを表示制御部(図示省略)へ送信する。この制御データに基づいて、表示制御部は、演出装置157を制御する。
<ノンマスカブル割り込み信号及びリセット信号>
次に、図3を用いて、メインCPU310のノンマスカブル割り込み入力端子/XNMI及びサブCPU410のノンマスカブル割り込み入力端子/XNMIに入力されるノンマスカブル割り込み信号と、メインCPU310のリセット入力端子/XSRST及びサブCPU410のリセット入力端子/XCPU_RSTに入力されるリセット信号について説明する。なお、図3は、メインCPU310及びサブCPU410に入力されるリセット信号とノンマスカブル割り込み信号の信号線を示した回路図である。
図3に示されるように、主制御部300は、DC12V電源の電圧値を監視するための電源電圧監視用IC500と、この電源電圧監視用IC500から出力されたリセット信号に所定の遅延時間を付加するための電源検出システムリセットIC501と、を備えている。一方、副制御部400は、主制御部300の電源電圧監視用IC500と同一種類の電源電圧監視用IC502を備えている。
電源電圧監視用IC500(IC502)は、マニュアルリセット入力端子/MRと、パワーフェイル電圧監視入力端子PFIと、パワーフェイル出力端子/PFOと、ローアクティブのリセット出力端子/RESETと、ハイアクティブのリセット出力端子RESETと、を有して構成されている。なお、図3では、電源電圧監視用IC500、IC502の電源電圧入力端子及びグランド端子の図示を省略している。
マニュアルリセット入力端子/MRは、入力電圧が所定の電圧値(本実施形態では0.8V)以下に低下した場合にリセット出力端子/RESET、RESETからリセットパルスを発生させるもので、例えば、このマニュアルリセット入力端子/MRにプッシュボタンスイッチ等を接続すれば、手動でリセットパルスを発生させることができる。
パワーフェイル電圧監視入力端子PFIは、入力電圧が所定の電圧値(本実施形態では1.25V)以下に低下した場合にパワーフェイル出力端子/PFOからローレベルの信号を出力することができ、このパワーフェイル電圧監視入力端子PFIには、抵抗及びコンデサを介してDC12V電源電圧が入力されている。
パワーフェイル出力端子/PFOは、メインCPU310及びサブCPU410のノンマスカブル割り込み信号入力/XNMIにそれぞれ直結されている。
ローアクティブのリセット出力端子/RESETは、電源電圧監視用IC500(IC502)の電源電圧が所定の電圧値(本実施形態では4.65V)以下に低下した場合に約200ms(最大で280ms)のローパルスを出力し、電源電圧が所定の電圧値以上に上昇した場合、又は、マニュアルリセット入力端子/MRの入力信号がローレベルからハイレベルに切り替わった場合に約200ms(最大で280ms)のローレベルを維持する。
ハイアクティブのリセット出力端子RESETは、ローアクティブのリセット出力端子/RESETの反転信号を出力可能である。なお、本実施形態においては、メインCPU310のリセット信号入力/XSRST及びサブCPU410のリセット信号入力/XCPU_RSTのアクティブ方向に合わせて、ローアクティブのリセット出力端子/RESETが使用されており、ハイアクティブのリセット出力端子RESETは未使用(N.C.:No Connection)となっている。
電源検出システムリセットIC501は、入力端子INと、出力端子OUTと、遅延容量接続端子DELと、を有して構成されている。なお、図3では、電源検出システムリセットIC501の電源電圧入力端子及びグランド端子の図示を省略している。
本実施形態においては、遅延容量接続端子DELに3.3μFのコンデンサが外付けされており、入力端子INに入力されたリセット信号は、電源検出システムリセットIC501の遅延回路によって所定のリセット遅延時間(本実施形態では約420ms)が付加された後、出力端子OUTから出力されるようになっている。
DC12V電源が供給され、電源電圧監視用IC500、IC502のパワーフェイル電圧監視入力端子PFIの入力電圧が所定の電圧値を超えると、パワーフェイル出力端子/PFOからハイレベルのノンマスカブル割り込み信号が出力された後、約200ms(最大で280ms)経過後にリセット出力端子/RESETからハイレベルのリセット信号が出力される。
電源電圧監視用IC500、IC502のパワーフェイル出力端子/PFOから出力されたノンマスカブル割り込み信号は、それぞれ略同一のタイミングでメインCPU310及びサブCPU410のノンマスカブル割り込み入力端子/XNMIに入力される。
又、電源電圧監視用IC500のリセット出力端子/RESETから出力されたリセット信号は、電源検出システムリセットIC501の入力端子INへ出力される。そして、電源検出システムリセットIC501において約420msのリセット遅延時間が付加された後、出力端子OUTからメインCPU310のリセット入力端子/XSRSTへ出力され、その結果、メインCPU310のリセットが解除される。
一方、電源電圧監視用IC502のリセット出力端子/RESETから出力されたリセット信号は、(リセット遅延時間が付加されることなく)サブCPU410のリセット入力端子/XCPU_RSTへ出力され、その結果、サブCPU410のリセットが解除される。
このように、本実施形態におけるメインCPU310のリセットは、サブCPU410のリセットの解除後から約420ms経過後に解除されるように構成されている。
<主制御部の処理>
次に、図4を用いて、主制御部300の処理について説明する。なお、図4は主制御部の処理の流れを示すフローチャートを示したものである。
主制御部300に電源が供給され、メインCPU310のリセットが解除されると、メインCPU310のプログラムカウンタ(PC)にはセキュリティチェックプログラムの先頭アドレスが設定され、ステップS101のセキュリティチェック処理が実行される。なお、セキュリティチェックプログラムは、図5に示されるように、ユーザがプログラムを自由に配置可能な8キロバイトのユーザプログラムエリア(0000H番地〜1FFFH番地)とは別の、ユーザによるプログラムの配置が不可能な未使用ROM領域(2000H番地〜7DFFH番地)内に格納されると共に、その格納場所は、マスクROM製造時に製造メーカによって決定される。このように、セキュリティチェックプログラムの格納場所及び内容は、特定の関係者以外知ることができない構成となっている。
ステップS101のセキュリティチェック処理では、ユーザプログラムエリアに格納された制御プログラムが正規なものであるか否かの検査を行う。この検査には種々の方法を適用することができるが、本実施形態では、予め、任意のアドレスのユーザプログラムコードを用いて所定の演算を行うと共に、その演算結果を認証コードとしてユーザプログラムエリアに記憶しておく。そして、ステップS101のセキュリティチェック処理において、ユーザプログラムエリアに記憶されたユーザプログラムコードを用いて上記所定の演算を行い、その演算結果と認証コードとを照合することによってユーザプログラムの正当性を確認するようになっている。なお、セキュリティチェックプログラムの最小実行時間はメインCPU310の種類に応じて変化するが、本実施形態では、セキュリティチェックプログラムの最小実行時間は131msに設定されている。
このセキュリティチェック処理が終了すると、プログラムカウンタに制御プログラムの先頭アドレス(0000H番地)が設定され、ステップS102の初期値設定処理が実行される。
<初期値設定処理>
次に、図6を用いて、上述の主制御の処理における初期値設定処理(ステップS102)の処理について説明する。なお、図6は初期値設定処理の流れを示すフローチャートを示したものである。
ステップS201では、電源投入時の電源ステータスや検査用RAMの値が所定の値と異なる場合にRAMエラーであると判断し、ステップS202のRAMエラー処理(詳細は後述)に進む。一方、RAMが正常である場合にはステップS203に進む。
ステップS203では、入賞役の内部当選確率を規定する抽選データ(以下、単に「設定値」と称す)を変更するための設定キースイッチ(図示省略)がONであるか否かを判定し、設定キースイッチがONの場合には、ステップS204の設定変更処理(詳細は後述)に進む。一方、設定キースイッチがOFFの場合はステップS206に進む。
ステップS202のRAMエラー処理、及びステップS204の設定変更処理の終了後は、それぞれステップS205の遊技実行処理(詳細は後述)に進む。
ステップS206では、サブCPU410に電源復帰コマンドを送信することによって、メインCPU310のリセットが解除され、通常動作に復帰したことを知らせる。
ステップS207では、サブCPU410に遊技状態コマンドを送信することによって、遊技の進行に関する制御情報を知らせる。
ステップS208では、復帰処理により、電源断の検出時にRAM312に一時的に退避した変数の再設定等を行った後、ステップS205の遊技実行処理に進む。
<RAMエラー処理>
次に、図7を用いて、上述の初期値設定処理におけるRAMエラー処理(ステップS202)の処理について説明する。なお、図7はRAMエラー処理の流れを示すフローチャートを示したものである。
ステップS301では、使用スタックエリアを除く全てのRAM領域のクリアを行う。
ステップS302では、内部当選確率の設定値を設定1(基本設定値)に設定する。
ステップS303では、設定値表示器(図示省略)にエラーの表示を行うと共に、スロットマシン100の動作を一時停止する。
ステップS304では、サブCPU410にエラー発生コマンドを送信することによって、RAMエラーが発生したことを知らせる。
ステップS305では、エラー解除スイッチ(図示省略)がONされたか否かを判定する。そして、エラー解除スイッチがONされた場合にはステップS306に進み、そうでない場合にはステップS305の処理を繰り返し実行し、エラー解除スイッチがONされるのを待つ。
ステップS306では、サブCPU410にエラー解除コマンドを送信することによって、RAMエラーが解除されたことを知らせる。
ステップS307では、エラー解除コマンドの送信が完了したか否かを判定する。そして、エラー解除コマンドの送信が完了した場合にはステップS308に進み、そうでない場合にはステップS307の処理を繰り返し実行し、エラー解除コマンドの送信完了を待つ。
ステップS308では、サブCPU410にRAMエラー復帰コマンドを送信することによって、メインCPU310RAMエラーから復帰したことを知らせた後、処理を終了する。
<設定変更処理>
次に、図8を用いて、上述の初期値設定処理における設定変更処理(ステップS204)について説明する。なお、図8は設定変更処理の流れを示すフローチャートを示したものである。
ステップS401では、現在の設定値を設定値表示器に表示する。
ステップS402では、サブCPU410に設定変更開始コマンドを送信することによって、設定値の変更処理が開始されたことを知らせる。
ステップS403では、スタートレバー135が操作されたか否かを判定し、操作された場合には設定値を確定し、ステップS404に進む。一方、スタートレバー135が操作されていない場合にはステップS403の処理を繰り返し実行し、スタートレバー135の操作待ちとなる。
ステップS404では、設定キースイッチがONされたか否かを判定し、設定キースイッチがONされた場合にはステップS405に進む。一方、設定キースイッチがONされていない場合にはステップS404の処理を繰り返し実行し、設定キースイッチがONされるのを待つ。
ステップS405では、サブCPU410に設定変更終了コマンドを送信することによって、設定変更後の設定値を知らせた後、処理を終了する。
<遊技実行処理>
次に、図9を用いて、上述の初期値設定処理における遊技実行処理(ステップS205)について説明する。なお、図9は遊技実行処理の流れを示すフローチャートを示したものである。
遊技の基本的制御は、主制御部300のメインCPU310が中心になって行い、電源断等を検知しない限り、メインCPU310が同図の遊技実行処理を繰り返し実行する。
ステップS501では、メダル投入に関する処理を行う。ここでは、メダルの投入の有無をチェックし、投入されたメダルの枚数に応じて入賞ライン表示ランプ120を点灯させる。なお、前回の遊技で再遊技に入賞した場合はメダルの投入が不要である。
ステップS502では、遊技のスタート操作に関する処理を行う。ここでは、スタートレバー135が操作されたか否かのチェックを行い、スタート操作されたと判断した場合は、投入されたメダル枚数を確定する。
ステップS503では、有効な入賞ライン114を確定する。
ステップS504では、乱数発生器311で発生させた乱数を取得する。
ステップS505では、ステップS504で取得した乱数値と、ROM312に格納されている入賞役抽選テーブルを用いて、入賞役の内部抽選を行う。内部抽選の結果、いずれかの入賞役に内部当選した場合、その入賞役のフラグが内部的にONになる。また、ビッグボーナス(BB)ゲームに内部当選した場合、RAM313上の所定のエリアに設定されたBB内部当選回数カウンタが一つ加算される。この内部当選回数カウンタはBBのストック数を示すことになる。なお、ステップS504で取得した乱数値は、入賞役内部抽選のほかにも、リール停止制御テーブルを選択するときの抽選等にも使用する。
ステップS506では、全リール110〜112の回転を開始させる。この際、ステップS505の内部抽選結果等に基づき、停止位置データ選択テーブルを参照し、いずれか一つのリール停止制御テーブルを選択する。
ステップS507では、ストップボタン137乃至139の受け付けが可能になり、いずれかのストップボタンが押されると、押されたストップボタンに対応するリール110〜112の何れかを、ステップS506で選択したリール停止制御テーブルに基づいて停止させる。
ステップS508では、入賞判定を行う。ここでは、有効化された入賞ライン114上に、内部当選した入賞役又はフラグ持越し中の入賞役に対応する絵柄組合せが表示された場合にその入賞役に入賞したと判定する。例えば、有効化された入賞ライン114上に、「ベル−ベル−ベル」が揃っていたならばベル入賞と判定する。また、入賞した入賞役に対応するフラグがリセットされ、BB入賞時の場合、更に、BB内部当選回数カウンタが一つ減算される。
ステップS509では、払い出しのある何らかの入賞役に入賞していれば、その入賞役に対応する枚数のメダルを払い出す。
ステップS510では、遊技状態更新処理を実行する。この遊技状態更新処理では、遊技状態を更新するための制御が行われ、例えば、BB入賞やシフトレギュラーボーナス(SRB)入賞の場合に次回からBBゲーム又はSRBゲームを開始できるよう準備し、それらの最終遊技では、次回から通常遊技が開始できるよう準備する。なお、BBゲームの終了時にBB内部当選回数カウンタが1以上であれば、BBの内部当選フラグがONとなる。
以上により1ゲームが終了し、以降、この遊技実行処理を繰り返すことにより遊技が進行することになる。
<主制御部制御コマンド送信処理>
次に、図10を用いて、主制御部制御コマンド送信処理について説明する。なお、図10は主制御部制御コマンド送信処理の流れを示すフローチャートを示したものである。
本実施形態においては、この主制御部制御コマンド送信処理は1.877ms周期のタイマ割り込み処理内で実行される。
ステップS601では、主制御コマンドの出力遅延タイマが0であるか否か、即ち、主制御コマンドの送信前に所定の送信遅延時間が経過したか否かが判定される。そして、送信遅延時間が経過していない場合には、ステップS602において出力遅延タイマを1だけ減算した後、処理を終了する。一方、送信遅延時間が経過した場合には、主制御コマンドの送信を行うべく、ステップS603に進む。
ステップS603では、主制御コマンドバッファが空であるか否か、即ち、主制御コマンドバッファに送信すべきコマンドが格納されているか否かを判定する。そして、送信すべきコマンドがある場合には、ステップS604に進む。一方、送信すべきコマンドがない場合には、ステップS606に進む。
ステップS604では、主制御コマンドを送信した後、ステップS605に進む。
ステップS605では、主制御コマンド送信バッファをクリアし、処理を終了する。
ステップS606では、主制御コマンドの送信要求があるか否かを判定する。そして、送信要求がない場合には処理を終了する。一方、送信要求がある場合には、ステップS607において主制御コマンド送信バッファに送信データを設定し、ステップS608に進む。
ステップS608では、主制御コマンドの出力遅延タイマの設定を行う。具体的には、メインCPU310のRレジスタの下位5ビット(ビット4〜ビット0)の値を出力遅延タイマ作成用の乱数として抽選を行い、図11に示されるように、抽選によって得られた乱数を22で除算した剰余(0〜21の22通り)にそれぞれ対応付けされた0ms〜39.417msの遅延時間を、出力遅延タイマに設定する。この結果、メインCPU310からサブCPU410へのコマンド送信は、コマンドの送信要求後から0ms〜39.417msの遅延時間経過後に行われることになる。なお、抽選によって得られた遅延時間の値は、電源断の検出時にバックアップされるようになっている。このように、抽選によってコマンドの送信時間をランダムな値に設定すれば、例えば、コマンド送信に同期してサブCPU410が演出の制御を行うような場合に、演出のタイミング(例えば、バックライト420によるリール絵柄の発光タイミング)が目押しの手助けとなり、遊技台が持つ目押しの面白さを損なうことを防止することができる。
本実施形態では、出力遅延タイマをタイマ割り込み(1.877ms周期)毎に1だけ減算するようにしているため、遅延時間は全てタイマ割り込みの周期である1.877msの整数倍(1.877ms×0〜1.877ms×21)に設定されている。又、遅延時間の最大値は39.417ms(=1.877ms×21)に設定されており、上述のセキュリティチェックプログラムの最小実行時間131msよりも短く設定されている。
<副制御部電源投入処理>
次に、図12を用いて、副制御部電源投入処理について説明する。なお、図12は副制御部電源投入処理の流れを示すフローチャートを示したものである。
ステップS701では、ハードウェアセットアップ処理(詳細は後述)を行う。
ステップS702では、RAMチェック処理により、RAMの値が正常であるか否かをチェックする。
ステップS703では、RAMエラー演出チェック処理により、RAMの値が正常であるか否かをチェックする。
ステップS704では、RAMエラーの有無を判定し、RAMエラーであれば、ステップS705の復帰処理(詳細は後述)に進む。一方、RAMエラーでなければ、ステップS706のメイン処理(詳細は後述)に進む。
<ハードウェアセットアップ処理>
次に、図13を用いて、上述の副制御部電源投入処理におけるハードウェアセットアップ処理(ステップS701)について説明する。なお、図13はハードウェアセットアップ処理の流れを示すフローチャートを示したものである。
ステップS801では、サブCPU410のリセットの解除後からの時間を計測するためにハードウェアタイマの初期設定をした後、ハードウェアタイマを起動する。このハードウェアタイマの値は、後述するコマンド判定処理において参照される。
ステップS802では、メインCPU310の制御プログラムの不正判定が必要であるか否かを示す判定フラグをセット(1に設定)する。この判定フラグは、後述するコマンド判定処理において参照され、判定フラグがセットされている場合(判定フラグ=1の場合)は不正判定が必要であると判断され、又、判定フラグがセットされていない場合(判定フラグ=0の場合)は不正判定が必要でないと判断される。
以下のステップS803〜ステップS807では、サブCPU410の入出力端子の初期設定、各種割り込みコントローラの初期設定、ウォッチドッグタイマの初期設定、16ビットタイマの初期設定、8ビットタイマの初期設定、などのサブCPU410のハードウェアに関する設定を行った後、処理を終了する。
<復帰処理>
次に、図14を用いて、上述の副制御部電源投入処理における復帰処理(ステップS705)について説明する。なお、図14は復帰処理の流れを示すフローチャートを示したものである。
ステップS901では、サブCPU410が正常復帰したか否かを判定し、正常復帰した場合にはステップS902に進む。一方、正常復帰でない場合にはステップS903に進む。
ステップS902では、電源断の検出時にRAM412に退避した値を演出状態を示す変数等に再設定する。
ステップS903では、演出状態初期化処理により、演出状態を示す変数に初期値を設定する。なお、サブCPU410は、メインCPU310において内部当選確率を規定する抽選データが変更された場合(メインCPU310から設定変更開始コマンドを受信した場合)、ユーザによるリセット操作によってメインCPU310のメモリが初期化された場合(メインCPU310から強制RAMクリアコマンドを受信した場合)、及びメインCPU310のメモリに格納された値が異常である場合(メインCPU310からエラー発生コマンドを受信した場合)、のいずれか1つに該当した場合に、演出状態を示す変数に初期値を設定するように構成されている。
<副制御部メイン処理>
次に、図15を用いて、副制御部メイン処理について説明する。なお、図15は副制御部メイン処理の流れを示すフローチャートを示したものである。
遊技の進行に応じた演出制御は、副制御部400のサブCPU410が中心になって行い、電源断等を検知しないかぎり、サブCPU410が同図の副制御部メイン処理を繰り返し実行する。
ステップS1001の電圧監視処理では、ノンマスカブル入力端子/XNMIの状態によって設定されるノンマスカブル割り込みの割り込みフラグ(NMIフラグ)を定期的に監視し、電源断の検出を行う。そして、割り込みフラグがセットされている場合、即ち、電源断が検出された場合には電源断処理に移行し、現在の演出状態(例えば、演出状態を示す変数の値)を、例えば外部の保存領域に退避すると共に、スタックポインタの退避、入出力端子の設定等の電源断処理を行う。
ステップS1002では、演出制御ステータスの設定、演出コマンドのセットアップ、演出実行処理などの各種演出制御処理が行われる。
ステップS1003のデバイスセットアップ処理では、バックライト420、演出用ランプ421、楽音信号形成部460等の各種演出デバイスの設定が行われる。
ステップS1004のデバイス送信処理では、各種演出デバイスへ制御データを送信する。
ステップS1005では、コマンド判定処理(詳細は後述)を行う。
以降、副制御部メイン処理を繰り返すことにより遊技の進行に応じた演出制御が行われることになる。
<コマンド判定処理>
次に、図16を用いて、上述の副制御部メイン処理におけるコマンド判定処理(ステップS1005)について説明する。なお、図16はコマンド判定処理の流れを示すフローチャートを示したものである。
ステップS1101では、メインCPU310からのコマンドを受信したか否かを判定する。コマンドを受信した場合はステップS1102に進み、コマンドを受信していない場合はステップS1101を繰り返し実行し、コマンド受信待ちとなる。
ステップS1102では、判定フラグがセットされているか否か、即ち、メインCPU310の制御プログラムの不正判定が必要であるか否かを判定する。そして、不正判定が必要である場合(判定フラグがセットされている場合)にはステップS1103に進み、不正判定が必要でない場合(判定フラグがセットされていない場合)にはステップS1106に進む。
ステップS1103では、判定フラグが0にクリアされる。
ステップS1104では、上述のハードウェアセットアップ処理のステップS801で起動したハードウェアタイマの値を参照し、サブCPU410のリセットの解除後からコマンド受信時までの時間を計測する。そして、計測された時間が、所定の不正時間判定時間を経過しているか否かを判断する。
以下、図17のタイミングチャートを用いて、このステップS1104において行われる不正判定処理について詳細に説明する。
図17に示されるように、DC12V電源が供給されると、メインCPU310及びサブCPU410のノンマスカブル割り込み入力端子/XNMIに入力されるノンマスカブル割り込み信号が、略同一のタイミングでローレベルからハイレベルに変化する(同図(A))。
そして、ノンマスカブル割り込み信号の立ち上がりから約200ms(最大で280ms)後に、サブCPU410のリセット入力端子/XCPU_RSTに入力されるリセット信号がローレベルからハイレベルに変化する(同図(B))。その結果、サブCPU410のリセットが解除され、ハードウェアセットアップ処理においてハードウェアタイマが起動される。
一方、メインCPU310のリセット入力端子/XSRSTに入力されるリセット信号は、サブCPU410に入力されるリセット信号の立ち上がりから最小で420ms後にローレベルからハイレベルに変化する(同図(C))。その結果、メインCPU310のリセットが解除され、最小実行時間131msのセキュリティチェックプログラムが実行される(同図(D))。
その後、メインCPU310の初期値設定処理が実行され、上記図6に示されるように、RAMエラーの有無や設定キースイッチのON/OFFによって、(1)ステップS202のRAMエラー処理、(2)ステップS204の設定変更処理、(3)ステップS206の電源コマンド送信処理、の3つの処理の内、いずれか1つの処理がなされることになる。
(1)のRAMエラー処理では、上記図7に示されるように、ステップ304でエラー発生コマンドを送信するようになっており、RAMエラー有りの場合には、このエラー発生コマンドがメインCPU310によって最初に送信される。
又、(2)のステップS204の設定変更処理では、上記図8に示されるように、ステップS402で設定変更開始コマンドを送信するようになっており、RAMエラー無し、且つ、設定キースイッチがONの場合には、この設定変更開始コマンドがメインCPU310によって最初に送信される。
更に、(3)のステップS206の電源コマンド送信処理は、RAMエラー無し、且つ、設定キースイッチがOFFの場合における、メインCPU310の最初のコマンド送信となる。
これら3つのコマンドのいずれかを受信したサブCPU410は、リセットの解除後に起動したハードウェアタイマを参照することによって、リセットの解除後から最初のコマンド受信時までの時間T2を計測し(図17(E))、不正判定時間T1との比較を行う。なお、本実施形態における不正判定時間T1は、リセット遅延時間である420msとセキュリティチェックプログラムの最小実行時間である131msとの和551msに略一致するように設定されている。
比較の結果、リセットの解除後から最初のコマンド受信時までの時間T2が不正時間判定時間T1より長い場合(T2>T1)、即ち、サブCPU410が、不正判定時間T1の経過後にメインCPU310から最初のコマンドを受信した場合には、メインCPU310の制御プログラムが正規なプログラムであると判定し、ステップS1105に進む。このステップS1105では、メインCPU310から送信されるコマンドの種類に応じて各種演出設定を行う。
一方、リセットの解除後から最初のコマンド受信時までの時間T2が不正時間判定時間T1以下の場合(T2≦T1)、即ち、サブCPU410が、リセットの解除後、不正判定時間T1内にメインCPU310から最初のコマンドを受信した場合には、メインCPU310の制御プログラムが不正なプログラムであると判定し、ステップS1106のエラー処理を行う。このステップS1106のエラー処理では、演出用ランプ421、スピーカ462、演出装置157などの各種演出装置や、サブCPU410からの不正信号出力などによって、メインCPU310の制御プログラムの不正を外部に報知する。なお、このエラー処理は、他の方法を用いて行うこともでき、例えば、演出制御を中断し、演出を一切行わないことによってエラーの発生を外部に報知してもよい。
本実施形態の一例に係るスロットマシン100によれば、サブCPU410は、サブCPU410のリセットの解除後、所定の不正判定時間T1内にコマンド(制御情報)を受信した場合にはメインCPU310の制御プログラムが不正であると判定するように構成されているため、サブCPU410のリセットの解除後、所定の不正判定時間内に不正行為の有無を判定することができ、例えば、スロットマシン100に電源が投入された後、遊技が進行する前に不正行為を発見することができる。そのため、不正行為を早期に発見することができ、又、不正な制御プログラムによって遊技が進行してしまうおそれがない。しかも、従来の遊技台のようにCPU間で遊技の進行とは関係のない特定のコマンドを送受信する必要が無いため、CPUの制御負担を増大させることがない。
又、メインCPU310のリセットを、サブCPU410のリセットの解除後、所定のリセット遅延時間経過後に解除するための電源検出システムリセットIC501(リセット遅延手段)を備えているため、サブCPU410がメインCPU310よりも早く起動することになり、サブCPU410はメインCPU310から送信されるコマンドを確実に受信することができるようになる。
又、メインCPU310は、制御プログラムが正規なプログラムであるか否かを検査するためにメインCPU310のリセットの解除後に制御プログラムよりも先に実行されるセキュリティチェックプログラムを有して構成され、且つ、サブCPU410における不正判定時間T1は、リセット遅延時間(本実施形態では420ms)とセキュリティチェックプログラムの実行時間(本実施形態では131ms)との和(本実施形態では551ms)に略一致するように設定されているため、メインCPU310からのコマンドを取りこぼすことが無く、不正行為を早期に発見することができる上に、メインCPU310のセキュリティチェックプログラムによっても制御プログラムの正当性を判断することができ、不正行為の実現をより一層困難にすることができる。
更に、セキュリティチェックプログラムの実行時間(本実施形態では131ms)は、メインCPU310のコマンドが複数の送信遅延時間の中から抽選によって選択された1つの送信遅延時間の経過後に送信されるように構成されている場合に、複数の送信遅延時間の最大送信遅延時間(本実施形態では39.417ms)よりも長くなるように設定されているため、例えば、セキュリティチェックプログラムを備えていない不正なメインCPUが最大送信遅延時間後にコマンドを送信した場合でも、サブCPU410は不正判定時間T1内に確実にコマンドを受信することになり、不正判定が可能である。
なお、メインCPU310から送信する最初のコマンドを所定時間遅らせてサブCPU410に送信するように構成すれば、セキュリティチェックプログラムを搭載しない正規なメインCPUでも、サブCPU410の不正判定時間後にコマンドを送信することができ、正規なメインCPUとして通常の制御が可能となる。
又、サブCPU410は、電源電圧を監視するためのノンマスカブル割り込み入力/XNMI(電圧監視手段)を備え、電源電圧が所定の電圧値より低くなった場合に、演出状態を保存領域に退避し、且つ、サブCPU410が電源電圧の遮断状態から前記リセットの解除に伴って通常動作状態に復帰した場合に、保存領域に退避された演出状態を再設定するように構成されているため、スロットマシン100の電源が再投入された時に、電源投入前の演出状態に復帰させることができる。
更に、サブCPU410は、前記メインCPUのリセットの解除に伴ってメインCPU310において入賞役の内部当選確率を規定する抽選データが変更された場合、ユーザによるリセット操作後に前記メインCPUのリセットが解除されメインCPU310のメモリが初期化された場合、及び前記メインCPUのリセットの解除後にメインCPU310のメモリに格納された値が異常であると判断された場合、のいずれか1つに該当した場合に、演出状態に初期値を設定するように構成されているため、所定の場合に演出状態を初期化することができ、例えば、スロットマシン100に電源が再投入された際に演出音が鳴り続けるような不具合を解消することが可能となる。
又、サブCPU410は、メインCPU310の制御プログラムが不正であると判定した場合にエラーの処理を行うためのエラー処理手段(コマンド判定処理のステップS1106)を備えているため、不正行為が行われたまま遊技が進行してしまうことを未然に防止することが可能である。
更に、サブCPU410は、エラーを外部に報知するためのエラー報知手段である演出用ランプ421、スピーカ462、演出装置157、不正信号出力などを備えているため、不正行為が行われたことを外部から容易に把握することができる上に、不正行為の抑止効果をも得ることができる。特に、サブCPU410が不正信号出力を備えていれば、例えば、不正信号出力を遊技場の管理コンピュータ等に接続することによって、不正行為が行われた事実を不正行為者に気付かれないように報知することができる。
又、メインCPU310又はサブCPU410のリセットを、電源電圧が所定の電圧値以上となった時に解除するための電源電圧監視用IC500、IC502(電源電圧監視手段)を備えているため、メインCPU310及びサブCPU410に確実にリセットをかけることができ、電源投入後の動作を安定化させることができる。
なお、上記実施形態においては、メダル(コイン)を遊技媒体としたスロットマシンの例を示したが、本発明はこれに限定されるものではなく、例えば、遊技球(例えばパチンコ玉)を遊技媒体としたスロットマシン(いわゆるパチロット)等にも適用可能である。
又、スロットマシン100を、メインCPU310及びサブCPU410の2つのCPUによって構成したが、本発明はこれに限定されるものではなく、3つ以上のCPUによって構成された遊技台であってもよい。従って、例えば、遊技台をメインCPU、サブCPU、及び第2サブCPUの3つのCPUで構成すると共に、第2サブCPUが、メインCPU及びサブCPUの制御プログラムの不正を判定するように構成してもよい。
更に、サブCPU410における不正判定時間、メインCPU310のセキュリティチェックプログラムの実行時間、及びリセット遅延時間は、上記実施形態に示した数値に限定されるものではない。
更に又、メインCPU310は、サブCPU410のリセットの解除後、所定のリセット遅延時間経過後にリセットの解除がされるように構成したが、メインCPU310とサブCPU410のリセットタイミングは同時であっても構わない。
なお、メインCPU310及びサブCPU410のノンマスカブル割り込み入力端子及びリセット入力端子はそれぞれローアクティブの場合を例に示したが、ハイアクティブの場合でも本発明は適用可能であることは言うまでもない。