<遊技機の機械的構造>
図1は前扉を閉めた状態を示すスロットマシンの正面図、図2は前扉を開いた状態を示すスロットマシンの正面図を示す。なお、以下の説明において、上、下、左又は右の方向は、特に断らない限り、スロットマシンに対向している遊技者から見た方向を指すものとする。
図1及び図2中、100はスロットマシンを示すもので、このスロットマシン100は、スロットマシン筐体120と、このスロットマシン筐体120の前面片側にヒンジ等により開閉可能に取り付けられた前扉130とを備えている。前扉130は、それぞれ独立に開閉可能な上扉130Uと下扉130Lとを備えている。
前記前扉130の前面の右上隅には、ゲーム表示部131を設けている。遊技者はゲーム表示部131を通してリールユニット203の3つのリールを見ることができる。
上扉130Uの上面の右側に、遊技者がメダルを投入するためのメダル投入口132を設け、メダル投入口132の左側には、メダル投入口132から投入され、詰まってしまったメダルをスロットマシン100外に強制的に排出するためのリジェクトボタン133を設けている。
下扉130Lの上面の左側にはゲームを開始するためのスタートスイッチ134を設け、スタートスイッチ134とメダル投入口132の間に、3つのリールのそれぞれに対応して3つのストップボタン140を設けている。
上扉130Uの中央には液晶パネルLCD1を設け、下扉130Lにはほぼその全面にわたって液晶パネルLCD2を設けている。
下扉130Lの上面の中央、すなわち、ストップボタン140の上、ベットスイッチBETとメダル投入口132の間には、操作部としてのスイッチ(十字キーユニット)SWを設けている。スイッチSWは、例えばカーソルを上下左右に動かすカーソルキー(スイッチ)や操作の確定ボタン・キャンセルボタンなどを含む。
スロットマシン100の左右端にはそれぞれ電飾DRU、DRL、DLU、DLLを設けている。すなわち、上扉130Uの左端に電飾DLUを設け、右端に電飾DRUを設けるとともに、下扉130Lの左端に電飾DLLを設け、右端に電飾DRLを設けている。電飾DRU、DRL、DLU、DLLは、それぞれその内部に発光装置(LED)を備えている。
スロットマシン筐体120の内部には、図2に示すように、その内底面に固定され、内部に複数のメダルを貯留して、貯留したメダルを下扉130Lの前面下部に設けた払出し口に1枚ずつ払い出すためのホッパ装置121が設置されている。このホッパ装置121の上部には、上方に向けて開口し、内部に多数のメダルを貯留するホッパタンク122を備えている。スロットマシン筐体120の内部には、上扉130Uを閉めたときにゲーム表示部131が来る位置に三個のリールからなるリールユニット203が設置されている。リールユニット203は、外周面に複数種類の図柄が配列されている3つのリール(第1リール〜第3リール)を備えている。ゲーム表示部131には開口部が設けられていて、それを通して遊技者が前記リールユニット203の各回転リールの図柄を見ることができるようになっている。ホッパ装置121の左側には電源部205を設けている。
図2に示すように、下扉130Lの背面にはメダル(コイン)セレクタ1が、下扉130L上面のメダル投入口132の下部に取り付けられている。このメダルセレクタ1は、メダル投入口132から投入されたメダルの通過を検出しながら、当該メダルをホッパ装置121に向かって転動させ、外径が所定寸法と違う異径メダルや、鉄又は鉄合金で作製された不正メダルを選別して排除するとともに、1ゲームあたりに投入可能な所定枚数以上のメダルを選別して排除するための装置である。
また、メダルセレクタ1の下側には、図2に示すように、その下部側を覆って下扉130L下部の払出し口に連通する導出路136を設けている。メダルセレクタ1により振り分けられたメダルは、この導出路136を介して払出し口から遊技者に返却される。
スロットマシン筐体120の内部、リールユニット203の下側にはメイン基板10が取り付けられている。メイン基板10には、遊技に関する内部設定(例えば、複数の抽選テーブルのどれを使用するか)を行うための設定変更スイッチSSWを設けている。上扉130Uの背面中央下部にはサブ基板20が取り付けられている。
スロットマシン筐体120の内部の左上隅には低音スピーカSPLを設けるとともに、下扉130Lの下部には標準的な音域をカバーする2つのスピーカSPを設けている。
<遊技機の電気的構造>
図3はスロットマシン100の機能ブロック図を示す。
この図において電源系統についての表示は省略されている。図3では示していないが、スロットマシンは商用電源(AC100V)から直流電源(+5Vなど)を発生するための電源部(図2の電源部205)を備える。
<遊技機の電気的構造:全体>
スロットマシン100は、その主要な処理装置としてメイン基板10とこれからコマンドを受けて動作するサブ基板20とを備える。メイン基板10やサブ基板を含む基板は、外部から接触不能となるようにケース内部に収容され、これら基板を取り外す際に痕跡が残るように封印処理が施されている。具体的には、メイン基板10とサブ基板20はカシメにより一体となり取り付けられるとともに、メイン基板10とサブ基板20の全体を覆う一体のケースによりカバーされている。
メイン基板10は、遊技者の操作を受けて内部抽選を行ったり、回胴の回転・停止やメダルの払い出しなどの処理(遊技処理)を行うためのものである。メイン基板10は、予め設定されたプログラムに従って制御動作を行うCPUと、前記プログラムを記憶する記憶手段であるROMおよび処理結果などを一時的に記憶するRAMを含む。
サブ基板20は、メイン基板10からコマンド信号を受けて内部抽選の結果を報知したり各種演出を行うためのものである。サブ基板20は、前記コマンド信号に応じた予め設定されたプログラムに従って制御動作を行うCPUと、前記プログラムを記憶する記憶手段であるROMおよび処理結果などを一時的に記憶するRAMを含む。コマンドの流れはメイン基板10からサブ基板20への一方のみであり、逆にサブ基板20からメイン基板10へコマンド等が出されることはない。サブ基板20は、演出に用いる乱数を発生する手段を備えている。
以下、メイン基板とサブ基板について詳しく説明する。
<遊技機の電気的構造:メイン基板>
メイン基板10には、ベットスイッチBET、スタートスイッチ134、ストップボタン140、リール(回胴)ユニット203、設定変更スイッチSSW、ホッパ駆動部80、ホッパ81及びホッパ81から払い出されたメダルの枚数を数えるためのメダル検出部82(これらは前述のホッパ装置121を構成する)が接続されている。
メイン基板10には、さらに、メダルセレクタ1のメダルセンサS1及びS2が接続されている。
メダルセレクタ1には、メダルを計数するためのメダルセンサS1及びS2を設けている。メダルセンサS1及びS2は、メダルセレクタ1に設けられた図示しないメダル通路の下流側(出口近傍)に取り付けられている(メダル通路の上流側はメダル投入口132に連通している)。2つのメダルセンサS1とS2は、メダルの進行方向に沿って所定間隔を空けて並べて設けている。メダルセンサS1、S2は、例えば、互いに対向した発光部と受光部とを有して断面コ字状に形成され、その検出光軸をメダル通路内に上方から臨ませて位置するフォトインタラプタである。各フォトインタラプタにより、途中で阻止されずに送られてきたメダルの通過が検出される。なお、フォトインタラプタを2つ隣接させたのは、メダル枚数を検出するだけでなく、メダルの通過が正常か否かを監視するためである。すなわち、フォトインタラプタを2つ隣接させて設けることにより、メダルの通過速度や通過方向を検出することができ、これによりメダル枚数だけでなく、逆方向に移動する不正行為を感知することができる。
リールユニット203は、3つの回胴40a〜40cと、これらをそれぞれ回転させるステッピングモータ155a〜155cと、それらの位置をそれぞれ検出する回胴位置検出器(インデックスセンサ)159a〜159cとを備える(なお、ステッピングモータ155a〜155cを単にモータ155あるいはモータと記すことがある)。
回胴制御手段1300は、回胴40a〜40cそれぞれが1回転する毎にインデックスセンサ159で検出される基準位置信号に基づいて、回胴40の基準位置(図示しないインデックスによって特定されるコマ)からの回転角度を求める(ステップモータの回転軸の回転ステップ数をカウントする)ことによって、現在の回胴40の回転状態を監視することができるようになっている。すなわち、メイン基板10は、回胴40の基準位置からの回転角度を求めることにより、ストップボタン140の作動時における回胴40の位置を得ることができる。
なお、以下の説明において、任意のひとつ又は複数の回胴を示すときは符号40を使用し、3つの回胴をそれぞれ区別して示すときは符号40a〜40cを使用することにする。
ホッパ駆動部80は、ホッパ81の図示しない回転ディスクを回転駆動して、メイン基板10によって指示された払出数のメダルを払い出す動作を行う。遊技機は、メダルを1枚払い出す毎に作動するメダル検出部82を備えており、メイン基板10は、メダル検出部82からの入力信号に基づいてホッパ81から実際に払い出されたメダルの数を管理することができる。
投入受付部(投入受付手段)1050は、メダルセレクタ1のメダルセンサS1とS2の出力を受け、遊技毎にメダルの投入を受け付けて、規定投入数に相当するメダルが投入されたことに基づいて、スタートスイッチ134に対する第1回胴〜第3回胴の回転開始操作を許可する処理を行う。なお、スタートスイッチ134の押下操作が、第1回胴〜第3回胴の回転を開始させる契機となっているとともに、内部抽選を実行する契機となっている。また、遊技状態に応じて規定投入数を設定してもよく、通常状態およびボーナス成立状態及びボーナス状態では規定投入数を3枚に設定する。
メダルが投入されると、遊技状態に応じた規定投入数を限度として、投入されたメダルを投入状態に設定する。あるいは、遊技機にメダルがクレジットされた状態で、ベットスイッチBETが押下されると、遊技状態に応じた規定投入数を限度して、クレジットされたメダルを投入状態に設定する。メダルの投入を受け付けるかどうかは、メイン基板10が制御する。スタートスイッチ134が押下され各回胴の回転が開始した時点(遊技開始時点)から3つのストップボタン140が押下され各回胴の回転が停止した時点(入賞した場合はメダル払い出しが完了した時点)(遊技終了時点)の間であって、メダルの投入を受け付ける状態になっていないときは(許可されていないときは)、メダルを投入してもメダルセンサS1、S2でカウントされず、そのまま返却される。同様に、メイン基板10は、メダルの投入を受け付ける状態か否かに応じて、ベットスイッチBETの有効/無効を制御する。また、前記遊技終了時点から前記遊技開始時点までの間でベットスイッチBETは有効となるが、これ以外の期間においては(BETスイッチの押下が許可されていないときは)、ベットスイッチBETを押下しても、それは無視される。
メイン基板10は、乱数発生手段1100を内蔵する。乱数発生手段1100は、抽選用の乱数値を発生させる手段である。乱数値は、例えば、インクリメントカウンタ(所定のカウント範囲を循環するように数値をカウントするカウンタ)のカウント値に基づいて発生させることができる。なお本実施形態において「乱数値」には、数学的な意味でランダムに発生する値のみならず、その発生自体は規則的であっても、その取得タイミング等が不規則であるために実質的に乱数として機能しうる値も含まれる。
内部抽選手段1200は、遊技者がスタートスイッチ134からのスタート信号に基づいて、役の当否を決定する内部抽選を行う。すなわち、メイン基板10のメモリ(図示せず)に記憶されている抽選テーブル(図示せず)を選択する抽選テーブル選択処理、乱数発生手段1100から得た乱数の当選を判定する乱数判定処理、当選の判定結果で大当たりなどに当選したときにその旨のフラグを設定する抽選フラグ設定処理などを行う。
抽選テーブル選択処理では、図示しない記憶手段(ROM)に格納されている複数の抽選テーブル(図示せず)のうち、いずれの抽選テーブルを用いて内部抽選を行うかを決定する。抽選テーブルでは、複数の乱数値(例えば、0〜65535の65536個の乱数値)のそれぞれに対して、リプレイ、小役(ベル、チェリー)、レギュラーボーナス(RB:ボーナス)、およびビッグボーナス(BB:ボーナス)などの各種の役が対応づけられている。また、遊技状態として、通常状態、ボーナス成立状態、およびボーナス状態が設定可能とされ、さらにリプレイの抽選状態として、リプレイ無抽選状態、リプレイ低確率状態、リプレイ高確率状態が設定可能とされる。
抽選テーブル選択処理により、抽選の内容は所定の範囲内で設定可能(当選の確率を高くしたり低くしたりできる)であり、遊技機が設置されるホールなどにおいて店側により設定作業が行われる。この設定作業で使用するスイッチが設定変更スイッチSSWである。
通常の遊技機は、BB,RB、小役等の抽選確率の異なる複数(例えば6つ)の抽選テーブルを予め備える。遊技機の抽選では、それら複数の抽選テーブルの中から1つが設定され、この設定された抽選テーブルに基づいて抽選による当たり/ハズレの判定がなされる。複数の抽選テーブルのうちどれを使用するかに関する設定を変更することを、設定の変更(以下、「設定変更」と記す)と称している。
従来、例えばスロットマシンのような遊技機では、設定値(通常1〜6)を変更する場合、遊技機の扉を開け、メイン基板10に設けられた設定変更スイッチSSWのキースイッチに設定変更キーを挿入して当該キースイッチをオンにした状態で遊技機の電源を投入して設定変更可能な状態にし、設定変更スイッチSSWの設定変更ボタン(押ボタン)を1回押下するごとに、7セグメント表示器などに表示される設定値がインクリメントされて1〜6までの値を循環的に変化させ、所望する設定値が表示器に表示されたところでスタートスイッチを操作することで、所望する設定値を確定させている。
乱数判定処理では、スタートスイッチ134からのスタート信号に基づいて、遊技毎に乱数発生手段(図示せず)から乱数値(抽選用乱数)を取得し、取得した乱数値について前記抽選テーブルを参照して役に当選したか否かを判定する。
抽選フラグ設定処理では、乱数判定処理の結果に基づいて、当選したと判定された役の抽選フラグを非当選状態(第1のフラグ状態、オフ状態)から当選状態(第2のフラグ状態、オン状態)に設定する。2種類以上の役が重複して当選した場合には、重複して当選した2種類以上の役のそれぞれに対応する抽選フラグが当選状態に設定される。抽選フラグの設定情報は、記憶手段(RAM)に格納される。
入賞するまで次回以降の遊技に当選状態を持ち越し可能な抽選フラグ(持越可能フラグ)と、入賞の如何に関わらず次回以降の遊技に当選状態を持ち越さずに非当選状態にリセットされる抽選フラグ(持越不可フラグ)とが用意されていることがある。この場合、前者の持越可能フラグが対応づけられる役としては、レギュラーボーナス(RB)およびビッグボーナス(BB)があり、それ以外の役(例えば、小役、リプレイ)は後者の持越不可フラグに対応づけられている。すなわち抽選フラグ設定処理では、内部抽選でレギュラーボーナスに当選すると、レギュラーボーナスの抽選フラグの当選状態を、レギュラーボーナスが入賞するまで持ち越す処理を行い、内部抽選でビッグボーナスに当選すると、ビッグボーナスの抽選フラグの当選状態を、ビッグボーナスが入賞するまで持ち越す処理を行う。このときメイン基板10は、内部抽選機能により、レギュラーボーナスやビッグボーナスの抽選フラグの当選状態が持ち越されている遊技でも、レギュラーボーナスおよびビッグボーナス以外の役(小役およびリプレイ)についての当否を決定する内部抽選を行っている。すなわち抽選フラグ設定処理では、レギュラーボーナスの抽選フラグの当選状態が持ち越されている遊技において、内部抽選で小役あるいはリプレイが当選した場合には、既に当選しているレギュラーボーナスの抽選フラグと内部抽選で当選した小役あるいはリプレイの抽選フラグとからなる2種類以上の役に対応する抽選フラグを当選状態に設定し、ビッグボーナスの抽選フラグの当選状態が持ち越されている遊技において、内部抽選で小役あるいはリプレイが当選した場合には、既に当選しているビッグボーナスの抽選フラグと内部抽選で当選した小役あるいはリプレイの抽選フラグとからなる2種類以上の役に対応する抽選フラグを当選状態に設定する。
回胴制御手段1300は、遊技者がスタートスイッチ134の押下操作(回転開始操作)によるスタート信号に基づいて、第1回胴〜第3回胴をステッピングモータにより回転駆動して、第1回胴〜第3回胴の回転速度が所定速度(約80rpm:1分間あたり約80回転となる回転速度)に達した状態において回転中の回胴にそれぞれ対応する3つのストップボタン140の押下操作(停止操作)を許可する制御を行うとともに、ステッピングモータにより回転駆動されている第1回胴〜第3回胴を抽選フラグの設定状態(内部抽選の結果)に応じて停止させる制御を行う。
また、回胴制御手段1300は、3つのストップボタン140に対する押下操作(停止操作)が許可(有効化)された状態において、遊技者が3つのストップボタン140を押下することにより、その回胴停止信号に基づいて、リールユニット203のステッピングモータへの駆動パルス(モータ駆動信号)の供給を停止することにより、第1回胴〜第3回胴の各回胴を停止させる制御を行う。
すなわち、回胴制御手段1300は、3つのストップボタン140の各ボタンが押下される毎に、第1回胴〜第3回胴のうち押下されたボタンに対応する回胴の停止位置を決定して、決定された停止位置で回胴を停止させる制御を行っている。具体的には、記憶手段(ROM)に記憶されている停止制御テーブル(図示せず)を参照して3つのストップボタンの押下タイミングや押下順序等(停止操作の態様)に応じた第1回胴〜第3回胴の停止位置を決定し、決定された停止位置で第1回胴〜第3回胴を停止させる制御を行う。
ここで停止制御テーブルでは、ストップボタン140の作動時点における第1回胴〜第3回胴の位置(押下検出位置)と、第1回胴〜第3回胴の実際の停止位置(または押下検出位置からの滑りコマ数)との対応関係が設定されている。滑りコマ数とは、回胴停止時にゲーム表示部から視認できる特定の図柄を基準位置としたときのストップボタン140の操作から対応する回胴の回転停止までの間に当該基準位置を通過する図柄の数をいう。回胴制御手段1300は、各ストップボタン140の操作から190ms以内という条件下で各回胴を停止させるため、滑りコマ数は0以上4以下の範囲内となっている(ただし、80回転/分、図柄数=21個の条件において)。抽選フラグの設定状態に応じて、第1回胴〜第3回胴の停止位置を定めるための停止制御テーブルが用意されることもある。
前述のように、回胴制御手段1300は、回胴が1回転する毎にインデックスセンサ159で検出される基準位置信号に基づいて、回胴の基準位置(リールインデックスによって検出されるコマ)からの回転角度(ステップモータの回転軸の回転ステップ数)を求めることによって、現在の回胴の回転状態を監視することができるようになっている。すなわち、メイン基板10は、ストップボタン140の作動時における回胴の位置を、回胴の基準位置からの回転角度を求めることにより得ることができる。
回胴制御手段1300は、いわゆる引き込み処理と蹴飛ばし処理とを回胴を停止させる制御として行っている。引き込み処理とは、抽選フラグが当選状態に設定された役に対応する図柄が有効な入賞判定ライン上に停止するように(当選した役を入賞させることができるように)回胴を停止させる制御処理である。一方蹴飛ばし処理とは、抽選フラグが非当選状態に設定された役に対応する図柄が有効な入賞判定ライン上に停止しないように(当選していない役を入賞させることができないように)回胴を停止させる制御処理である。すなわち本実施形態の遊技機では、上記引き込み処理及び蹴飛ばし処理を実現させるべく、抽選フラグの設定状態、ストップボタン140の押下タイミング、押下順序、既に停止している回胴の停止位置(表示図柄の種類)などに応じて各回胴の停止位置が変化するように停止制御テーブルが設定されている。このように、メイン基板10は、抽選フラグが当選状態に設定された役の図柄を入賞の形態で停止可能にし、一方で抽選フラグが非当選状態に設定された役の図柄が入賞の形態で停止しないように第1回胴〜第3回胴を停止させる制御を行っている。
本実施形態の遊技機では、第1回胴〜第3回胴が、ストップボタン140が押下された時点から190ms以内に、押下されたストップボタンに対応する回転中の回胴を停止させる制御状態に設定されている。すなわち回転している各回胴の停止位置を決めるための停止制御テーブルでは、ストップボタン140の押下時点から各回胴が停止するまでに要するコマ数が0コマ〜4コマの範囲(所定の引き込み範囲)で設定されている。
入賞判定手段1400は、第1回胴〜第3回胴の停止態様に基づいて、役が入賞したか否かを判定する処理を行う。具体的には、記憶手段(ROM)に記憶されている入賞判定テーブルを参照しながら、第1回胴〜第3回胴の全てが停止した時点で入賞判定ライン上に表示されている図柄組合せが、予め定められた役の入賞の形態であるか否かを判定する。
入賞判定手段1400は、その判定結果に基づいて、入賞時処理を実行する。入賞時処理としては、例えば、小役が入賞した場合にはホッパ81を駆動してメダルの払出制御処理が行われるか、あるいはクレジットの増加され(規定の最大枚数例えば50枚まで増加され、それを超えた分だけ実際にメダル払い出される)、リプレイが入賞した場合にはリプレイ処理が行われ、ビッグボーナスやレギュラーボーナスが入賞した場合には遊技状態を移行させる遊技状態移行制御処理が行われる。
払出制御手段1500は、遊技結果に応じたメダルの払い出しに関する払出制御処理を行う。具体的には、小役が入賞した場合に、役毎に予め定められている配当に基づいて遊技におけるメダルの払出数を決定し、決定された払出数に相当するメダルを、ホッパ駆動部80でホッパ81を駆動して払い出させる。この際に、ホッパ81に内蔵される図示しないモータに電流が流れることになる。
メダルのクレジット(内部貯留)が許可されている場合には、ホッパ81によって実際にメダルの払い出しを行う代わりに、記憶手段(RAM)のクレジット記憶領域(図示省略)に記憶されているクレジット数(クレジットされたメダルの数)に対して払出数を加算するクレジット加算処理を行って仮想的にメダルを払い出す処理を行う。
リプレイ処理手段1600は、リプレイが入賞した場合に、次回の遊技に関して遊技者の所有するメダルの投入を要さずに前回の遊技と同じ準備状態に設定するリプレイ処理(再遊技処理)を行う。リプレイが入賞した場合には、遊技者の手持ちのメダル(クレジットメダルを含む)を使わずに前回の遊技と同じ規定投入数のメダルが自動的に投入状態に設定される自動投入処理が行われ、遊技機が前回の遊技と同じ入賞判定ラインを有効化した状態で次回の遊技における回転開始操作(遊技者によるスタートスイッチ134の押下操作)を待機する状態に設定される。
リプレイ処理手段1600は、所定条件下で内部抽選におけるリプレイの当選確率を変動させる制御を行うことがある。例えば、ストップボタン140の操作によって回胴を停止させた際に所定の出目が表示されるとリプレイの当選確率が変動する。リプレイの抽選状態として、リプレイが内部抽選の対象から除外されるリプレイ無抽選状態、リプレイの当選確率が約1/7.3に設定されるリプレイ低確率状態、およびリプレイの当選確率が約1/6に設定されるリプレイ高確率状態という複数種類の抽選状態を設定可能とされている。
エラー処理部1700は、図示しない扉開閉検知センサ、メダルセンサS1及びS2及びメダル検出部82の出力に基づき遊技機のエラー判定を行い、エラーと判定したときにその旨を報知するとともに、遊技機を所定の状態(例えば、操作を受け付けない状態)にする。
図示しない扉開閉検知センサは、前扉130(上扉130U、下扉130L)が閉じられたことを検知するセンサであり、例えばマイクロスイッチや接点などの電気的スイッチである。当該スイッチは前扉130(上扉130U、下扉130L)が閉じられたときに、前扉130(上扉130U、下扉130L)の裏側にスイッチの作用部が当接することでオン(又はオフ)になり、前扉130(上扉130U、下扉130L)が開放されると作用部が離れてオフ(又はオン)になるものである。扉開閉検知センサは、フォトインタラプタのような光学式のものでもよい。メダルセンサS1及びS2及びメダル検出部82については前述した。
エラー処理部1700は、具体的には次のような動作を行う。
・図示しない扉開閉検知センサの出力に基づき前扉130(上扉130U、下扉130L)の開放を検知したとき、エラー処理を行う。
・メダルセンサS1及びS2の出力に基づきメダルの逆流(センサS1とS2の検知順序が反対になったこと)、メダル滞留(センサS1とS2の検知時間が予め定められた閾値よりも長いこと)などを検知したとき、エラー処理を行う。
・メダル検出部82の出力に基づきメダル詰まり(メダル検出部82の検知時間が予め定められた閾値よりも長いこと)、ホッパーエンプティ(ホッパ駆動部80を動作させているにもかかわらずメダル検出部82がメダルを検知しない)などを検知したとき、エラー処理を行う。
エラー処理部1700は、上記のようにエラーと判定したときにその旨を報知するとともに、遊技機を所定の状態(エラー状態)にするが、この状態は図示しないリセットスイッチにより解除される。リセットスイッチは、例えば電源部205のパネルに設けられる。
なお、サブ基板20で生じるエラーもある。このエラーでは遊技不能状態にはならないが、サブ基板20自身の処理によりエラーが生じたことを液晶表示装置などにより報知することができる。当該エラーは例えば不正なコマンドを受信したとき(暗号化されたコマンドが正しく復号化できなかったときを含む)に発生し、当該エラーは上記リセットスイッチにより解除される(メイン基板10からサブ基板20へリセットコマンドが送られる)。
また、メイン基板10は、通常状態、ボーナス成立状態、およびボーナス状態の間で遊技状態を移行させる制御を行うことがある(遊技状態移行制御機能)。遊技状態の移行条件は、1の条件が定められていてもよいし、複数の条件が定められていてもよい。複数の条件が定められている場合には、複数の条件のうち1の条件が成立したこと、あるいは複数の条件の全てが成立したことに基づいて、遊技状態を他の遊技状態へ移行させることができる。
通常状態は、複数種類の遊技状態の中で初期状態に相当する遊技状態で、通常状態からはボーナス成立状態への移行が可能となっている。ボーナス成立状態は、内部抽選でビッグボーナスあるいはレギュラーボーナスに当選したことを契機として移行する遊技状態である。ボーナス成立状態では、通常状態における内部抽選でビッグボーナスが当選した場合、ビッグボーナスが入賞するまでビッグボーナスに対応する抽選フラグが当選状態に維持され、通常状態における内部抽選でレギュラーボーナスが当選した場合、レギュラーボーナスが入賞するまでレギュラーボーナスに対応する抽選フラグが当選状態に維持される。ボーナス状態では、ボーナス遊技によって払い出されたメダルの合計数により終了条件が成立したか否かを判断し、入賞したボーナスの種類に応じて予め定められた払出上限数を超えるメダルが払い出されると、ボーナス状態を終了させて、遊技状態を通常状態へ復帰させる。
リールユニット203は、3つの回胴40a〜40cを備えるが、3つの回胴40a〜40cそれぞれにひとつづつステッピングモータ155a〜155cが取り付けられている。ステッピングモータ155は、回転子(ロータ)として歯車状の鉄心あるいは永久磁石を備え、固定子(ステータ)として複数の巻線(コイル)を備え、電流を流す巻線を切り替えることによって回転動作させるものである。すなわち、固定子の巻線に電流を流して磁力を発生させ、回転子を引きつけることで回転するものである。回転軸を指定された角度で停止させることが可能なことから、スロットマシンの回胴の回転駆動に使用されている。複数の巻線がひとつの相を構成する。相の数として、例えば、2つ(二相)、4つ(4相)、5つ(5相)のものもある。
ステッピングモータは、各相の巻線への電流の与え方を変えることにより、特性を変えることができる(励磁モードが変わる)。二相型については次の通りである。
・一相励磁
常に巻線一相のみに電流を流す。位置決め精度は良い。
・二相励磁
二相に電流を流す。一相励磁の約2倍の出力トルクが得られる。位置決め精度は良く、停止したときの静止トルクが大きいため、停止位置を確実に保持できる。
・一−二相励磁
一相と二相を交互に切り替えて電流を流す。一相励磁・二相励磁の場合のステップ角度の半分にすることができるので、滑らかな回転を得られる。
なお、ステッピングモータを「駆動する」とは、当該モータを上記励磁により回転させることとともに、所望の位置で停止させその位置を保持するために各相を励磁することも含むものとする。
スロットマシンの回胴40a〜40cの駆動に関して、例えば、4相の基本ステップ角度1.43度のステッピングモータを使用し、パルスの出力方法として一−二相励磁を採用している。
10CGは、サブ基板20へ送るコマンドを送信するコマンド送信部である。このコマンドには、当選役の情報に関するコマンド、メダル投入枚数やクレジット枚数(貯留枚数)の情報に関するコマンドなどがある。コマンド送信部10CGは、具体的には、メイン基板10に搭載されたROMに予め書き込まれたプログラムをCPUが実行することで実現される。
<メイン基板における遊技処理>
次に、メイン基板10における遊技処理について図4を参照して説明を加える。
一般的に、遊技機において、メダルの投入(クレジットの投入)に始まり、払い出しが終了するまで(又はクレジット数の増加が終了するまで)が一遊技である。一遊技が終了するまでは次回の遊技に進めないという決まりがある。
先ず、規定枚数のメダルが投入されることでスタートスイッチ134が有効になり、図4の処理が開始される。
ステップS1において、スタートスイッチ134が操作されることにより、スタートスイッチ134がONとなる。そして、次のステップS2に進む。
ステップS2において、メイン基板10により抽選処理が行われる。そして、次のステップS3に進む。
ステップS3において、第1リール〜第3リールの回転が開始する。そして、次のステップS4に進む。
ステップS4において、ストップボタン140が操作されることにより、ストップボタン140がONとなる。そして、次のステップS5に進む。
ステップS5において、第1リール〜第3リールのうち押下されたストップボタン140に対応するリールについて回転停止処理が行われる。そして、次のステップS6に進む。
ステップS6において、三個のリールに対応するストップボタン140の操作が行われたか否かが判定される。そして、三個のリールに対応する3つのストップボタン140すべての操作が行われたと判定された場合、次のステップS7に進む。
ステップS7において、抽選フラグ成立中に当該抽選フラグに対応する図柄組合せが有効入賞ライン上に揃ったか否か、すなわち、入賞が確定したか否かが判定される。そして、入賞が確定したと判定された場合、次のステップS8に進む。なお、入賞が確定しなかったときは、抽選フラグが成立していてもメダルの払い出しは行われない。
ステップS8において、入賞判定ライン上に揃った図柄組合せに相当するメダルが払い出される。
メダルの投入からステップS8の実行完了までが、一遊技である。ステップS8の待機処理が終了すると、処理はフローチャートの最初に戻る。言い換えれば、次の遊技が可能な状態になる(次遊技へ移行する)。
<遊技機の電気的構造:サブ基板>
サブ基板20には、液晶パネルLCD1及びLCD2、LED202B、202U及び202L、スピーカSP、低音スピーカSPL、ソレノイドSN、モータMU及びML、センサSENU及びSENL、スイッチSWが接続されている。LED202B、202L、202Uは、データを取得し保持するラッチと電飾であるLEDを内蔵している(LEDは基板の外部に設けられることもある)。これらの構成要素は、サブ基板20により制御されるものであり、映像、光、音響、可動体の動作により演出を行う出力装置、あるいは、可動体の動作を検知するための入力装置または遊技者による操作を受け付ける入力装置である。
図示は省略しているが、機種固有ブロックBB及び下扉ブロックBLには、液晶パネルLCD2を制御するためのビデオコントローラ(VDC)、スピーカSP、スピーカSPを駆動して音響を発生させるためのサウンドコントローラ、ソレノイドSN、モータMU及びMLを駆動するための駆動回路を内蔵している。
上述した液晶パネルなどの構成要素は、低音スピーカSPLを除き、スロットマシン筐体120に内蔵される機種固有ブロックBB、上扉130Uに対応して設けられる上扉ブロックBU、下扉130Lに対応して設けられる下扉ブロックBLの3つのいずれかに区別されて設けられる。
図3の例では、機種固有ブロックBBはソレノイドSN、スピーカSP及びLED202Bを含み、上扉ブロックBUは、液晶パネルLCD1、LED202U、モータMU及びこれによる可動体の動作を検知するセンサSENUを含み、下扉ブロックBLは、液晶パネルLCD2、スピーカSP、LED202L、モータML、モータMLによる可動体の動作を検知するセンサSENL、カーソルキーなどのスイッチSWを含む。なお、液晶パネルLCD2全体がモータMLにより若干前後に移動可能に構成され、液晶パネルLCD2が前に出た状態で遊技者がこれを押すという操作が可能な場合がある。この場合、下扉ブロックBLのスイッチSWは液晶パネルLCD2の押下を検知するスイッチを含む。
<遊技機の電気的構造:サブ基板のCPUの初期動作概要>
遊技機の電源が投入されるとサブ基板のCPUは動作を開始する(リセットされたときは動作を再開し、電源投入時と同様に動作する)。
電源投入(リセット)がされると、予め定められたテーブル(例外処理ベクタテーブル)からプログラムカウンタの初期値としての開始アドレスとスタックポインタの初期値を取り出しそれぞれ格納する。プログラムカウンタは実行するプログラムの位置を示すカウンタである。スタックは一時的に情報を保持するために使用される記憶領域(レジスタ)であり、スタックポインタはアドレスのスタック(保持した一連の情報の位置を示す一連の情報)の内で最後のアドレス(最新のアドレス)を指すレジスタである。
次にベクタベースレジスタを所定の値(H'00000000)に、ステータスレジスタの割り込みマスクレベルビット(I3〜I0)を所定の値(B'1111)に、BOビットおよびCSビットを0に、それぞれ初期化する。また割り込みコントローラを初期化する。ベクタベースレジスタはコントロールレジスタのひとつであり、割り込みを含む例外処理ベクタ領域のベースアドレス(プログラムのジャンプ先)として使用されるものである。例外および割り込み発生時、分岐先のベースアドレスとして参照される。ステータスレジスタはコントロールレジスタのひとつであり、その内容がCPUの状態を示すものである。割り込みコントローラは割り込みの優先順位を判定するためのものである。
マスクレベルビットは割り込みの優先レベルを設定するものである。割り込みの中には,それを常時有効にするものもあるが,常時有効とせず特定の局面でだけ有効にしたい割り込みもある。そのため割り込みの要因ごとに,割り込みの受付を無効にする割り込みマスクの機能がある。マスクレベルビットはこのために使用される。割り込みマスクで無効にできる割り込みはマスカブル割り込み、割り込みマスクで無効にできない割り込みはノン・マスカブル割り込み(NMI)と呼ばれる。ステータスレジスタの割り込みマスクレベルビット(I3〜I0)を所定の値(B'1111)に設定することで優先順位を15に設定する。割り込みが発生しても、その優先レベルがマスクレベルの15を超えていないと当該割り込みは受け付けられない。したがってリセット直後の優先順位15では実質的に割り込みが禁止される(NMI割り込みの優先順位は16であり、これは例外的に受け付けられる)。BOビットは所定のレジスタがオーバーフローしたことを示すビットであり、CSビットは所定の演算でオーバーフローしたことを示すビットである。それらを0にすることで正常な状態となる。割り込みコントローラのIBNRはバンク番号レジスタである。
以上の初期動作は、CPU側に予め備わっているものであり、プログラムで記述されるものではない。
そして、例外処理ベクタテーブルから取り出したプログラムカウンタの初期値に基づきスタートアドレスに分岐してプログラムの実行を開始する。
なお、割り込みなどの場合は、スタックポインタを参照してプログラムカウンタとステータスレジスタをスタック領域に退避し、例外処理ベクタテーブルから割り込みに対応するアドレスを取り出し、そのアドレスに分岐してプログラムの実行を開始する。その後、処理状態は、CPUが順次プログラムを実行するプログラム実行状態となる。
プログラムの実行は、スタートアドレスから命令を読み出して行うが、このとき初期起動用のプログラムを格納したメモリ(ROM、RAM)が選択されるようになっている(スタートアドレス読み出し時は後述のCS0が有効となっている)。このメモリはCPUと別に設けられたICである。このメモリの他に同様のメモリが設けられていることがあり、この場合、複数のメモリを区別するためにチップセレクト(CS)が使用される。CSが有効になっているメモリからプログラムやデータを読み出すことができる。CSはCPUに内蔵されているバスステートコントローラ(BSC)が生成する。この出力は複数あり、CS0、CS1、CS2、・・・のように区別されている。
CPUの動作開始直後は、外部デバイスが接続されるCS空間の設定がプログラム起動用のデバイス接続が前提となるCSOのみ有効、他のCS空間は無効化されている。このため、CSOに接続されるメモリには、CPUのCSO以外の空間に接続されているデバイスとの関係に従い、各CS空間を有効化と各種設定を実施するプログラム及びデータが格納されている。CPUが当該プログラム及びデータを読み出して実行することで他のCS1、CS2、・・・に接続されるメモリを有効化する。初期起動時のCSO空間アクセス設定は、CS0にどのようなメモリが接続されても対応可能にするため、ウエイト値などが最大で、かつ、アクセス幅などが最小である設定となっている。これは最低限の動作が保障される可能性が高い設定値であり、たとえCS0に接続されたメモリが低スペックのものであっても正常にリード及びライトができるようにしている。
<遊技機の電気的構造:メイン基板からサブ基板へのコマンド伝送>
サブ基板20はメイン基板10からコマンドをうけ、これに従って演出等の処理を行う。コマンドの流れはメイン基板10からサブ基板20への一方のみであり、逆にサブ基板20からメイン基板10へコマンド等が出されることはない。
サブ基板20は、メイン基板10からのコマンドに従い、例えば、予め定められた画面を液晶パネルLCD1、LCD2に表示させるためのコマンド(表示コマンド、描画コマンド)を発生させる。例えば、アニメーションなどにより演出を行う際には、多数のコマンドを連続的に次々と送信する。
図3において、20CRは、メイン基板10から受けたコマンドを受信するコマンド受信部である。コマンド受信部20CRは、具体的には、サブ基板20に搭載されたROMに予め書き込まれたプログラムをCPUが実行することで実現される。
上記コマンドとして、サブ基板20側のソフトウエアで当選内容を示唆する演出を行うためのものがある。例えば、下記ATのように、出玉を得るための示唆を液晶表示装置等の表示装置に表示して遊技者の操作の便宜の提供(アシスト)を図っている。当該示唆は常時出されるわけではなく、特定の場合に出される。なお、メイン基板からのコマンドに基づきサブ基板がATの表示(報知)を行う形態に限定されない。例えばメイン基板が、メイン基板の管理下にある表示器(報知手段)によりATの表示(報知)を行うこともある。以下の説明は、そのような形態についても適用される。
遊技機は、液晶表示装置、スピーカや表示ランプ等からなる演出表示装置を備える。この演出表示装置はサブ基板20により制御され、遊技者に入賞等を報知したり、いわゆるアシストタイム(AT)において、一定ゲーム間に特定の小役が入賞となるストップボタンの押下態様を遊技機自体が何らかのアクションを伴ってユーザに教えたりするためのものである。(アシストタイム(AT):特定の小役が当選しても遊技者がこの小役に対応する図柄組合せを入賞判定ライン上に揃えないと払い出しがない。小役による払い出しを確実にするために、ビッグボーナス終了後(もしくは当選時)あるいはその他の任意の契機にアシストタイムを抽選し、これに当選すると一定ゲーム間は特定の小役に対応する図柄組合せを入賞判定ライン上に揃えさせるための停止操作を何らかのアクションを伴って遊技者に教えるという機能)
コマンド受信部20CRは、メイン基板10から受けたコマンドを受信する。例えば、シリアルデータとして受けたコマンドを直列−並列変換器(シフトレジスタ)に入力し、一定のデータ(例えば8ビット)ごとに出力する。この出力されたデータがコマンドとしてサブ基板20のCPUに渡され、解釈・実行される。
<遊技機の電気的構造:サブ基板とスレーブ基板・LEDなどの構成要素との接続>
上述の遊技機は、上扉ブロックBU、下扉ブロックBLのように複数のブロックに分離され、それぞれ独立に組み込みあるいは取り外しできるようになっている(分離筐体)。一部のブロック、例えば、下扉ブロックBLを組み込んでいない状態での製造、出荷、設置が行われることもある。
図5は、発明の実施の形態に係るサブ基板、スレーブ基板(中継基板)及びLED、ソレノイド、モータなどの演出デバイス、センサ(フォトセンサやスイッチなど)の接続を示すブロック図である。図5は、図3のブロック図のうちで演出デバイス及びスレーブ基板に係る接続系統を抜き出したものである。少なくとも、サブ基板20とスレーブ基板206BU、206BLを接続するハーネスHBU、HBLは、図5の左下に示すように、デジタル信号が伝播するデータ線と、当該デジタル信号を取得(ラッチ)するタイミングを指定するクロック信号が伝播するクロック線とを含み、これらの間の通信方式はクロック同期式シリアル通信である。図5において、図3のものと同一又は相当部分については同じ符号を付している。
図5の各要素のうち、スレーブ基板206BU、206BLはICなどのハードウエアで実現されるものであるが、I2C送受信処理部207、スレーブ基板206BBの送受信処理部208はそこに搭載されたROMに予め書き込まれたプログラムをCPUが実行することで実現される。送信処理部209T、210T、受信処理部209R、210RはICなどのハードウエア又はソフトウエアのどちらかで実現される。
なお、図5においてサブ基板20が上扉ブロックBUに含まれているが、これは一例である。例えば、サブ基板20が下扉ブロックBLに含まれるようにしてもよいし、機種固有ブロックBB、上扉ブロックBU、下扉ブロックBLとは別個独立して設けるようにしてもよい。
発明の実施の形態に係る遊技機では、サブ基板20から役物・電飾等の演出デバイスを制御するスレーブ基板(中継基板)への制御通信方式として、I2C(Inter-Integrated Circuit)やクロック同期式シリアル通信を用いている。制御対象の役物・電飾等のデバイスが増加するのに伴い、サブ基板からスレーブ基板に対してシリアル通信で接続し、各々のスレーブ基板においてシリアル−パラレル変換(直列−並列変換)を行い、各々のスレーブ基板から役物・電飾等のデバイスに接続するようにしている。
すなわち、発明の実施の形態に係る遊技機では、サブ基板20と機種固有ブロックBBの間の通信方式はI2Cを使用している。機種ごとに機種固有ブロックBBの電気部材の構成が変わるため、汎用性のある双方向通信を採用している。サブ基板20と上扉ブロックBUの間の通信方式は同期シリアルを使用している。リールユニット203を交換する際に同時に交換対象となるため、上扉ブロックBU専用のハーネスHBUを備えている。サブ基板20と下扉ブロックBLの間の通信方式は同期シリアルを使用している。残存する共通部分であるため、下扉ブロックBL専用のハーネスHBLを備えている。
BBは、遊技機の機種ごとに固有の機種固有ブロックである。BLは、各筐体に共通して用いられる下扉ブロック(第1ブロック)である。BUは、交換可能な上扉ブロック(第2ブロック)である。
機種固有ブロックBB、下扉ブロックBL、上扉ブロックBUは、それぞれ、スレーブ基板(機種固有中継基板)206BB、スレーブ基板(第1中継基板)206BL、スレーブ基板(第2中継基板)206BUを含む。スレーブ基板206BBはCPUを内蔵し、スレーブ基板206BL、BUよりも柔軟で高度な処理(例えば、スレーブ基板206BBについて予めアドレスが定められ、受けたメッセージが自分宛かどうか判断し、自分宛の場合それを受信する、データ送信するときにサブ基板20にその旨をリクエストする)が可能である。スレーブ基板206BL、BUは、通信する相手(サブ基板20の送信処理部209T、210T、受信処理部209R、210R)との通信手順が予め定められた一定のものであり、柔軟性は不要である。このため専用ICでスレーブ基板206BL、BUを構成することができる。
J11はサブ基板20の機種固有入出力端である。これには1本のデータ線と1本のクロック線を含む(他の端子についても同じ)。
J21、J22は第1出力端、J31は第1入力端である。J41、J42は第2出力端、J51は第2入力端である。
ハーネス(機種固有ハーネス)HBBは、機種固有入出力端J11をスレーブ基板206BBに接続している。
ハーネスHBLは、第1出力端J21、J22及び第1入力端J31をスレーブ基板206BLに接続している。
ハーネスHBUは、第2出力端J41、J42及び第2入力端J51をスレーブ基板206BUに接続している。
送信処理部209Tは、第1出力端J21、J21からスレーブ基板206BLに送信するシリアル信号を生成する。
受信処理部209Rは、第1入力端J31でスレーブ基板206BLから受けたシリアル信号をパラレル信号に変換する。変換されたパラレル信号はサブ基板20で所定の処理を受ける。
送信処理部210Tは、第2出力端J41、J42からスレーブ基板206BUに送信するシリアル信号を生成する。
受信処理部210Rは、第2入力端J51でスレーブ基板206BUから受けたシリアル信号をパラレル信号に変換する。変換されたパラレル信号はサブ基板20で所定の処理を受ける。
スレーブ基板206BBの送受信処理部208は、I2C送受信処理部207からのアドレスに従い受信処理及び送信処理を行う。図5ではスレーブ基板206BBはひとつしか示していないが、同じハーネスHBB(これから分岐された信号線を含む)に複数のスレーブ基板206BBを接続することができる。スレーブ基板206BBの識別にはアドレスが使用される。
図6は、スレーブ基板206BB、206BL、206BUの説明図である。
LEDを駆動するスレーブ基板206BL、206BU、206BBはLEDドライバIC01を備えている。LEDドライバIC01はサブ基板20からシリアル信号及びクロックを受け、クロックに基づきシリアル信号からデータを取得し、このデータのデコード結果に基づき、接続されている複数のLED202L、202U、202Bを所定のパターンで点滅させる。例えば、特定のLEDを点灯させるとともに、そのデューティ比を所定の値に設定して輝度を調整する。
モータを駆動するスレーブ基板206BL、206BUはモータ制御回路IC02を備えている。モータ制御回路IC02はサブ基板20からシリアル信号及びクロックを受け、クロックに基づきシリアル信号からデータを取得し、このデータのデコード結果に基づき、接続されているモータの巻線を所定のパターンで励磁する。例えば、巻線を順次励磁してモータを回転させるとともに、励磁周波数を変えることで回転速度を調整する。モータ制御回路IC02の出力にはモータ駆動に必要な電流を巻線に流すためのモータドライバDRVが接続されている。
センサ(スイッチ)を含むスレーブ基板206BL、206BUは、複数のセンサの入力信号を並列から直列に変換するための並列−直列変換器IC3を備えている。並列−直列変換器IC3はサブ基板20からクロックを受ける。並列−直列変換器IC3は所定間隔で複数のセンサの出力を取り込み、クロックに基づきセンサのデータをシリアル信号に変換してサブ基板20へ送っている。このシリアルデータをサブ基板20の受信処理部209R、210Rが受け、直列−並列変換を行ってサブ基板20のCPUに渡す。
<プログラム実行の際の初期設定:割り込みの無効化>
電源投入後のリセットの解除によりCPUはプログラムの実行を開始するが、前記<遊技機の電気的構造:サブ基板のCPUの初期動作概要>に記したように、リセット解除時においてはCPU内部で割り込みが無効化された状態となっている。この状態で所定のプログラム(図7のプログラムA、以下「開始プログラム」と記すことがある)が最初に実行される。この開始プログラムは、CPUの初期動作によって設定されたアドレスに記憶されていて、通常、リセット解除時にのみ実行されるものである。
しかし、ノイズなどの要因により開始プログラムのアドレスにジャンプすることが考えられる。リセット解除時に開始プログラムが実行されるのであれば、その実行時には割込み禁止状態であるが、例外的に開始プログラムのアドレスにジャンプした場合はCPUの初期動作が行われていないため割込みが有効状態である。割込みが有効状態として処理が実行されると、開始プログラムによる再起動プロセスが正常に行われない可能性が高い。割り込みが入ると、CPUはスタックポインタを参照してプログラムカウンタとステータスレジスタをスタック領域に退避し、予め定められたテーブルから割り込みに対応する開始アドレスを取り出し、そのアドレスに分岐してプログラムの実行を開始するが、初期設定の最中においては分岐先のプログラムを実行するための初期設定がなされておらず、このため正常な動作ができないことがある。例えば不正行為など、何らかの理由でリセットを経ずに開始プログラムを実行することになった場合に、不正行為者がCPUに割り込み信号を与えて割り込み処理を行わせ、その際に自己に都合の良い動作(設定値の変更、当選フラグのセット、テーブルの書き換えなど)を行わせることも考えられる。リセット後であれば割込みが禁止されているので問題ないが、開始プログラムを不正に開始させたときは問題である。
このようなことを避けるため、発明の実施の形態では、リセット解除時にCPU自身の動作として所定の初期動作を行い、割り込みを無効化するCPUを備える遊技機において、開始プログラム側でも(例えばリセット後の最初の処理、及び、意図しない開始プログラムの実行において)割り込みを無効化し、その上で処理を実行する。
図7は、発明の実施の形態に係るCPUによるプログラムの実行の説明図である。
パワーオンリセット端子に電源投入リセット信号RST(ローレベルの信号)を受けて、CPUは予め定められた初期設定INIを行う(CPU自身による初期設定、CPUの初期設定INIを図7では模式的にひとつのユニットとして示している)。CPU自身による初期設定INIによりCPUの内部状態と内蔵周辺モジュールのレジスタがすべて初期化される。CPU自身による初期設定INIにおいてCPUは次のように動作する。
1.プログラムカウンタ(PC)の初期値(開始アドレス)を、例外処理ベクタテーブルから取り出す。
2.スタックポインタ(SP)の初期値を、例外処理ベクタテーブルから取り出す。
3.ベクタベースレジスタ(VBR)をH'00000000にクリアし、ステータスレジスタ(SR)の割り込みマスクレベルビット(I3〜I0)をH'F(B'1111)に、BOビットおよびCSビットを0に初期化する。また割り込みコントローラ(INTC)を初期化する。このように設定することで、割り込みが禁止される。
4.例外処理ベクタテーブルから取り出した値をそれぞれプログラムカウンタ(PC)とスタックポインタ(SP)に設定し、プログラムの実行を開始する。図7では、プログラムAの先頭番地0000にジャンプする。
プログラムカウンタは実行するプログラムの位置を示すカウンタである。
例外処理ベクタテーブルは、リセット時などの例外処理においてプログラムカウンタやスタックポインタに設定する値を記憶しているテーブルである。例外処理ベクタテーブルの内容は予め設定されている。
スタックは一時的に情報を保持するために使用される記憶領域(レジスタ)であり、スタックポインタはアドレスのスタックの内で最後のアドレスを指すレジスタである。
ベクタベースレジスタはコントロールレジスタのひとつであり、割り込みを含む例外処理ベクタ領域のベースアドレス(プログラムのジャンプ先)として使用されるものである。例外および割り込み発生時、分岐先のベースアドレスとして参照される。
ステータスレジスタはコントロールレジスタのひとつであり、その内容がCPUの状態を示すものである。
割り込みコントローラは割り込みの優先順位を判定するためのものである。
マスクレベルビットは割り込みの優先レベルを設定するものである。割り込みの中には,それを常時有効にするものもあるが,常時有効とせず特定の局面でだけ有効にしたい割り込みもある。そのため割り込みの要因ごとに,割り込みの受付を無効にする割り込みマスクの機能がある。マスクレベルビットはこのために使用される。割り込みマスクで無効にできる割り込みはマスカブル割り込み、割り込みマスクで無効にできない割り込みはノン・マスカブル割り込み(NMI)と呼ばれる。ステータスレジスタの割り込みマスクレベルビット(I3〜I0)を所定の値(B'1111)に設定することで優先順位を15に設定する。割り込みが発生しても、その優先レベルがマスクレベルの15を超えていないと当該割り込みは受け付けられない。したがってリセット直後の優先順位15では実質的に割り込みが禁止される(NMI割り込みの優先順位は16であり、これは例外的に受け付けられる)。
BOビットは所定のレジスタがオーバーフローしたことを示すビットであり、CSビットは所定の演算でオーバーフローしたことを示すビットである。それらを0にすることで正常な状態となる。
割り込みコントローラ(INTC)を初期化することで割り込みの例外的受け付けを行わないようになる。
図7では、CPU自身による初期設定INIによりプログラムカウンタが例えば0000に設定されるとする(CPUから右上に向かう矢印)。なお、図7では、意図せずに0000にジャンプすることがあるとしている(ROMの上から左下に向かう矢印)。
プログラムA、B、C、・・・は記憶部(ROM)に記憶されている。プログラムA(図7の符号Program A)がリセット後に最初に実行されるプログラム(開始プログラム)である。図7では、その先頭アドレスが0000である。プログラムB、C、・・・は演出プログラムなどの任意のプログラムである。
プログラムA(開始プログラム)は、CPUが行う初期動作と同様の処理を行う初期設定プログラムP-INIを含んでいる。初期設定プログラムP-INIの命令(初期設定命令)は、プログラムA、B、C、・・・(少なくともプログラムA)の実行に影響を及ぼす可能性のあるレジスタの初期設定を行う。例えば次のような処理を行う。
a.ベクタベースレジスタ(VBR)に例外処理ベクタテーブルの先頭アドレス(H'00000000)を設定する。
b.ステータスレジスタ(SR)の割り込みマスクレベルビット(I3〜I0)を全て設定(H'F(B'1111))する(割り込み禁止状態)。
c.割り込みコントローラ(INTC)を初期化する。
上記処理の後にプログラムA、B、C、・・・が実行される。
リセットにより実行されるプログラムA(開始プログラム)に所定の初期設定(少なくとも上記b)を行う処理を含ませることにより、ノイズなどの要因によって意図せず開始プログラムが開始されるようになっても、その処理を正常に行うことができる。開始プログラム実行の正当性が保たれる。
もし、開始プログラムに初期設定P-INIがないとすると、意図せず開始プログラムが開始されたときその処理が割り込みにより中断され、開始プログラム実行の結果が正常でなくなる可能性がある。
プログラムA(開始プログラム)が複数の処理を含むとき、初期設定P-INIの命令はプログラムAの先頭に配置することが望ましい。図8では、初期設定P-INIは、他の処理a(P-a)〜処理c(P-c)よりも前に配置されている。イレギュラーなケースでは、初期設定P-INIの完了前は割り込みを禁止できていないが、このようにすることで割り込みを受け付ける期間を短くし、正常に動作する可能性を高めることができる。なお、初期設定P-INIは他の処理よりも先に実行されればよく、開始アドレス(図7の0000)に直接配置されていなくてもよい。
<プログラム実行の際の初期設定:バスステートコントローラの設定>
CPUはメモリからデータを読み出すとともに書き込み可能なメモリに対してデータの書き込みを行う。読み出し及び書き込みの際にはメモリのアドレス(番地、位置)を指定してこれを行う。CPUが使用可能なアドレス空間を有効に使うために、CPUはバスステートコントローラを内蔵している(図9参照)。CPUが使用可能なアドレス空間(CS空間)が大きく、通常は複数のメモリICなど(デバイスと記すことがある)でそれをカバーする。バスステートコントローラは複数のメモリを最適に管理する。例えば、次のようなことを行う。
アドレス空間を最大8つに分け(エリアCS0〜CS7)、それぞれに最大64MBの領域を割り当てる。
各エリアには独立に、アクセス幅であるバスサイズ(8、16、32ビット)、遅いデバイスにタイミングを合わせるためのサイクルウエイト機能(最大255ウエイト)及びタイミングを設定するためのウエイト制御などのウエイト値などを設定する。
CPUに接続されているメモリがどのようなもので、いくつ接続されているかは機種ごとに異なるので、プログラム実行の際に初期設定を行い(プログラムによる初期設定、図9の初期設定P-INI2、これは図7の初期設定P-INIとは異なる処理を行う)、機種に最適なようにバスステートコントローラを設定する(図9の符号AA)。バスステートコントローラの初期設定処理(プログラムによる初期設定処理)は、例えば図9のプログラムA(開始プログラム)に含まれている。
バスステートコントローラの初期化において適切にCS空間への接続を行うための初期設定P-INI2の処理について、図10〜図12を参照して説明を加える。
図10はデフォルトの状態を示す。CPUに接続される制御ROMなどのデバイスと、それぞれに割り当てられるアドレス空間CS0〜CS7の対応関係と、リセット時のCS有効・無効の区別を示している。これに対し、図12は初期設定後の設定を示す。図9〜図12の説明においてデバイスとは、ROMやRAMなどのメモリIC、ポートなどのI/O IC、VDPなどのコントローラICなどのCPUに接続され、アドレス空間で管理されるICを示す。
図10に示すように、CPU動作開始直後は、CPU自身による初期設定により、外部デバイスが接続されるCS空間の設定がプログラム起動用のデバイス接続(図10の例では制御ROMが接続されている)が前提となるCSOのみ有効、他のCS空間は無効化されている。CPU自身による初期設定により有効化されたCS0以外のデバイスに接続するための初期設定(プログラムによる初期設定)を行うために、CSOに接続される制御ROM(図9でCS0、アドレス0000と示されているデバイス)には、CPUのCSO以外の空間に接続されているデバイスとの関係に従い、各CS空間を有効化と各種設定を実施するプログラム及びデータが格納されている(図12参照)。
図12において、遊技機の動作中に使用するデバイスについてそのCSは有効となっている。ウエイト値はW0等の符号で表示しているがこれはデバイスごとにそのハードウエア性能に応じて定められる。例えば、読み出し/書き込みの速度が大きいほどウエイト値は小さくでき、より高速動作が可能となる(ウエイトはCPUがデバイスの速度に合わせて待機する時間に相当する)。アクセス幅はB0等の符号で示しているがこれはデバイスごとのバスサイズ(8、16、32ビット)に対応する。例えば、制御ROMのバスサイズが大きければB0を32ビットとし、一度に多くのデータの読み書きが可能となり、より高速動作が可能となる。このようにデバイスごとに最適な設定を行う図12のようなテーブルを、図9の初期設定P-INI2は含んでいる。
前記<遊技機の電気的構造:サブ基板のCPUの初期動作概要>に記したように、CPU自身による初期設定により、リセット解除時においてはCPU内部で割り込みが無効化された状態となっているが、同様にバスステートコントローラについても所定の状態に設定され、図10のように例えば、CS0のみが有効、そのウエイト値が最大でアクセス幅が最小となっている。この設定はどのようなデバイスにも対応可能であり、したがって最低限の動作が保障される可能性が高い設定である。例えばアクセス幅が狭く低速なデバイスであってもアクセス可能となる。
この状態でプログラムA(開始プログラム)が最初に実行される。この開始プログラムは、CPU自身による初期設定により設定されたアドレスに記憶され、リセット解除時にのみ実行されるものである。
プログラムA(開始プログラム)の初期設定P-INI2(プログラムによる初期設定)は、例えば図11のような手順(バスステートコントローラの手順:(CS0)〜(CS6))で処理を行い図12のように設定し、CPUが適切にCS空間への接続を行うことができるようにする。
(CS0)デフォルトの状態でCS0が有効になっているが、そのウエイト値やアクセス幅などのパラメータは、前述のように最低限の動作が保障される可能性が高い設定であり、実際に接続されている制御ROMの性能に見合ったものではない。そこで、まずは制御ROMに対応するCS0空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW0、アクセス幅をB0に設定する。このようにCSO空間のパフォーマンスを最大になるように調整してプログラムAの実行速度を向上させた上で、他のCS空間に対する設定を行う。
(CS1)制御ROMの後半に対応するCS1空間を有効にするとともに、制御ROMに対応するCS1空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW0、アクセス幅をB0に設定する。
(CS7)VDP(液晶パネルのコントローラ)の制御レジスタに対応するCS7空間を有効にするとともに、それに対応するCS7空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW7、アクセス幅をB7に設定する。
(CS2)バックアップRAMに対応するCS2空間を有効にするとともに、それに対応するCS2空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW2、アクセス幅をB2に設定する。
(CS3)デバイス制御ポートに対応するCS3空間を有効にするとともに、それに対応するCS3空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW3、アクセス幅をB3に設定する。
(CS6)DRAM、VRAMに対応するCS6空間を有効にするとともに、それに対応するCS6空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW6、アクセス幅をB6に設定する。
なお、CS空間の有効化並びに設定は、該当空間へのアクセスが必要になったときに既に完了していればよく、上記処理(図11の処理CS0〜CS7)の全てを初期設定P-INI2で行う必要はない。例えば、CS0、CS1、CS7のみが有効(制御ROMとVDP制御レジスタの読み書きができる)であれば処理可能なVDP制御プログラムを上記(CS1)の後に開始し、その後(CS2)を行うようにしてもよい。この場合、上記(CS2)〜(CS6)は初期設定P-INI2から外し、VDP制御プログラムの後にそれらを行うようにする。
デバッグなどに用いるCS4に関しては、ノイズなどの誤動作を避ける為に未使用の場合は無効化し、必要に応じて有効化しても構わない。図12ではCS4は無効になっている(図11の(CS4)デバッグポートが点線で表示されていることは通常無効であることを示している)。デバッグポートを有効にするときは、上記(CS3)の後に(CS4)を行う。
図11及び図12では無効になっているが、(CS4)について説明を加える。デバッグポートに対応するCS4空間を有効にするとともに、それに対応するCS4空間の設定値を最適な値に変更する。例えば、図12のテーブルに基づきウエイト値をW4、アクセス幅をB4に設定する。
発明の実施の形態によれば、プログラムによる初期設定により、各デバイス使用前にCS空間の設定を適切に行う事で、該当するデバイスの参照を適切に行うことが可能となる。
<プログラム実行の際の初期設定:開始プログラムを記憶するCS0空間の設定>
CPUの制御を行うプログラム(例えば図7及び図9に示した初期設定P-INI、P-INI2を行うための命令やデータ)を記憶する制御ROMの読み出し及び書き込みは、確実に行われなければならない。そのためにはバスコントローラの設定が制御ROMのデータを確実にフェッチできる値でなくてはならない。
ところで、制御ROMとして使用可能なICはさまざまな種類がある。高価で性能が高く、つまり読み出し速度が高く、したがってウエイト値を小さくでき、アクセス幅を大きくできるメモリから、安価であるが読み出し速度が低く、ウエイト値を大きく、アクセス幅を小さくしなければ使用できないメモリまで多様である。遊技機を設計する際に採用する部品はコストが低いのみならず、汎用的で入手容易なものが好ましい。遊技機のCPUが高速から低速までの幅広い速度に対応できれば、使用可能なデバイス(メモリ)の選択肢が増加する。
この観点から、発明の実施の形態では、リセット後のCPUの初期設定INI(CPU自身による初期設定)は、バスステートコントローラの設定を、そのCPUが許容する範囲でウエイト値を大きく、アクセス幅を小さく設定するものとする。このようにすることにより、CS0空間の制御ROMとして使用するデバイス(メモリ)の選択肢を広げることができる。
図13は初期設定INIの設定例を示す。リセット後のCPUの初期設定INIは、バスステートコントローラの設定について、制御ROMが接続されるアドレス空間CS0は有効とし、ウエイト値をWint(予め定められたウエイト値)、アクセス幅をBint(予め定められたアクセス幅)とする。WintはそのCPUで許容される範囲で大きなウエイト値(例えば最大値)であり、Bintは同じく小さなアクセス幅(例えば最小値)である。例えば、ウエイト値が8ビットで表現される場合はWint=255であり、Bint=8ビットである。
その後、バスステートコントローラの設定をプログラム(例えば初期設定P-INI2)を用いて任意の値に切り替えることができるようにすることでシステム全体のパフォーマンスを向上させることができる。
ウエイト値Wint、アクセス幅Bintを、例えば、図12に示すように、CS0空間についてウエイト値をW0、アクセス幅をB0に変更する。制御ROMとして使用するデバイスの性能が十分に高いものであるとして、W0はそのCPUで許容される範囲で小さなウエイト値(例えば最小値)であり、B0は同じく大きなアクセス幅(例えば最大値)である。W0<Wint、B0>Bintである。例えば、WO=38として、38<255となり、BO=32ビットとして、32ビット>8ビットとなる。あるいは、制御ROMとして使用するデバイスの性能の範囲内でWOをなるべく小さくし、BOをなるべく大きくする。なお、ウエイト値については、デバッグ時に書き込みを行うことがあるので255とする。デバッグ時はトールを使ってROMに書き込みを行うので、確実に書き込むために最大値である255としている。一方、市場に出荷する際はROMへ書き込みできないように最小値である0としている(さらに念のため、書き込みのための信号ラインを切断している)。
発明の実施の形態によれば、開始プログラムを記憶するROMの選択肢を増加させることができる。なお、開始プログラムを記憶するデバイスはROMに限定されず、発明の実施の形態はRAM(例えば電源バックアップされたSRAM、バックアップRAM)にも適用することができる。
また、初期設定P-INI2により、CPUに接続したデバイスのパフォーマンスを十全に発揮させるようにバスステートコントローラを設定することで、遊技機の性能を向上させることができる。
発明の実施の形態に係る変形例について、図14及び図15を参照して説明する。
図13ではバスステートコントローラの設定内容を開始プログラムの初期設定P-INI2に含ませていたが、これを制御ROMとは別に記憶するようにしてもよい。この場合、デバイスの種類・機種を特定する識別情報を初期設定P-INI2に用意しておき、CPUは識別情報を読み出し、これに基づきバスステートコントローラの設定内容を読み出し、設定を行う。
図14はその動作の概要を示す。デバイスごとの設定内容を予め記憶する初期設定テーブルINI-Tを備える。これは、図12のデバイスの識別情報に対応するウエイト値とアクセス幅を含むものである。リセット後、CPUは制御ROMの初期設定P-INI2にアクセスし、その識別情報を読み出す。CPUは初期設定テーブルINI-Tにアクセスし、デバイスの識別情報に対応する設定を読み出し、設定を行う。初期設定テーブルINI-Tは、図14の点線で示すようにCPUに内蔵してもよい。
図15(a)は初期設定P-INI2の識別情報の例を示す。接続デバイスごとに識別情報(ROMinfo等)を予め記憶している。識別情報は、例えば許容されるウエイト値、アクセス幅などの具体的な情報(データ)であるが、製造メーカ及び型番の情報(データ)でもよい。これに基づき初期設定テーブルINI-Tから設定内容を読み出し、バスステートコントローラの設定を行う。
図15(b)は初期設定テーブルINI-Tの例を示す。識別情報ごとにウエイト値、アクセス幅などの設定情報を記憶している。同図の例では併せて識別情報ごとにCSの有効/無効の情報も記憶している。CPUは初期設定P-INI2から読み出した識別情報に基づき初期設定テーブルINI-Tから設定情報を読み出し、これに基づきバスステートコントローラを設定する。
この変形例も、開始プログラムを記憶するROMの選択肢を増加させることができるとともに、CPUに接続したデバイスのパフォーマンスを十全に発揮させるようにバスステートコントローラを設定し、遊技機の性能を向上させることができる。
この変形例では、バスステートコントローラの設定内容を制御ROMとは別に設けたメモリに記憶させるので、制御ROMの初期設定に費やす領域を小さくでき、その分他のプログラムを記憶させることができるようになる。
<初期設定の際のリセット解除のタイミング調整>
電源投入リセットによりCPU自体の初期設定、及び、開始プログラムに基づく初期設定が行われるが、その際、サブ基板20に搭載されている、CPU以外のLEDドライバ、モータドライバ、サウンドアンプなどのデバイス(ブロック)についてもリセットが行われる。LEDドライバ、モータドライバ、サウンドアンプなどは複数のICなどのデバイスを含むことがあり、この節では複数のデバイスからなる場合を含めてLEDドライバ、モータドライバ、サウンドアンプなどをブロックと記すことにする。機能・性能の点から見ればブロックはデバイスと同じである。対象のブロック(LEDドライバ、モータドライバ、サウンドアンプなど)に対し、CPUからリセット信号を送ることでリセットが可能となっている。リセットはブロックを単位として個別に行うことができる。それらのリセット信号は、基板起動時の論理が予め定められている。電源投入リセットにより全てのブロックをリセット状態に移行させ、その後にリセットを解除する。
サブ基板20のCPU、LEDドライバ、モータドライバ、サウンドアンプなどのブロックは共通の電源部から電流の供給を受けている。電源部はその容量がCPUやブロックに十分な電流を供給するように設計されていて、通常は電源部が過負荷になることはない。しかし、リセット解除時には一時的により多くの電流が流れることがあり、当該電源部の定格を超えてしまう、つまり必要とされる電流が供給可能な値を超えてしまうことがある。最近の遊技機はより多くの駆動部や発光素子を備えるようになり、そのおそれが高くなっている。電源部は、定格を超えると動作を停止する安全装置を備えているのでそれが動作し、遊技機が停止してしまうことがある。このようなことは避けるべきである。
遊技機の電源系統について、図16を参照して説明を加える。図16は、この遊技機の電源系統図である。同図において、図3と同一又は相当部分については同一符号を付し、その説明は省略する。
205は、少なくともメイン基板10、サブ基板20及びサブ基板20に接続されている周辺基板に電流を供給する電源部である。
2051は、遊技機に接続される交流電源(AC入力)を受けてこれを整流する整流部である。なお、外部から交流電源ではなく、直流電源を受ける場合には整流部2051は不要である。すなわち、遊技機の外部からの電力供給は交流・直流いずれでもよい。
2052は、整流された電源を24V(第1電圧)の滑らかな直流に変換するAC−DCコンバータ(第1電源部)である。AC−DCコンバータ2052は、過電流保護回路2052aを内蔵している。これは、定格又は上限値を超える電流を出力したとき、あるいは上限値を超える電流が整流部2051から入力されたときに出力を遮断あるいは低減する(過電流検出リミッタ機能)。過電流保護回路2052aによりAC−DCコンバータ2052に過大な負荷が一定時間以上加わらないようにし、AC−DCコンバータ2052を破壊から保護している。
2053は、AC−DCコンバータ2052が出力する24Vの電源を12V(第2電圧)に変換するDC−DCコンバータ(第2電源部)である。
20SAは、スピーカ(音響発生器)SPL、SPを駆動して音響を発生させるための音響信号を出力するサウンドアンプ(音響信号発生部)である。サウンドアンプ20SAは、図示しないメモリ(記憶部)を備え、そこに音響データを予め記憶している(音響データ記憶部)。このデータに基づき、サウンドアンプ20SAは音響信号を発生する。
20MDは、モータML、MUを駆動するための駆動信号を発生するモータドライバである。
20LDは、LED202B、202L、202Uを点滅させるための発光信号を発生するLEDドライバである。
20CNVは、LEDドライバ20LDの5V電源を発生するDC−DCコンバータである。
図16から分かるように、CPU及び各ブロックは共通のAC−DCコンバータ2052から電流供給を受けている。したがって、各ブロックについてリセット解除を一斉に行うと、前述したようにリセット解除時には一時的により多くの電流が流れるためにAC−DCコンバータ2052の定格を超え、過電流保護回路2052aが作動するおそれがある。
そこで、発明の実施の形態では、CPUから各ブロックに与えるリセット信号のタイミングをずらしてリセット解除タイミングを変えることで、電流値がAC−DCコンバータ2052の定格を超えないようにしている。
開始プログラムの初期設定によりCPUは、例えば図17の処理を行う。この処理によるリセットのタイミンチャートの例を図18に示す。
S100:CPUは、LEDドライバ20LD、モータドライバ20MD、サウンドアンプ20SAなどの複数のブロックをリセット状態に移行させる。具体的には、CPUからのリセット信号を各ブロックのリセット端子に入力する。
S101:CPUは所定時間計時を行う。計時の間は待機する。
S102:CPUは計時完了後に所定のブロック(例えばLEDドライバ20LD)のリセット状態を解除する。具体的には、リセット端子へのリセット信号の入力を停止する。図18の例では時刻tr1でリセットが解除される。
S103:CPUは所定時間計時を行う。計時の間は待機する。
S104:CPUは計時完了後に他のブロック(例えばモータドライバ20MD)のリセット状態を解除する。具体的には、リセット端子へのリセット信号の入力を停止する。図18の例では時刻tr2でリセットが解除される。
S105:CPUは所定時間計時を行う。計時の間は待機する。
S106:CPUは計時完了後に残りのブロック(サウンドアンプ20SA)のリセット状態を解除する。具体的には、リセット端子へのリセット信号の入力を停止する。図18の例では時刻tr3でリセットが解除される。
図18から分かるように、全てのブロックについてリセット状態になるタイミングは同時(時刻tr0)であるが、それが解除されるタイミングはすべて異なる(tr1,tr2,tr3)。したがって、リセット解除時の比較的大きな消費電流が同時に流れることがない。発明の実施の形態によれば、各ブロックのリセット解除タイミングを異ならせることで突入電流を分散させることができ、遊技機の動作に支障が生じることがなくなる。
複数のブロックがあるとき、そのリセット解除の順番は例えば次のようにすることが考えられる。
(順番:その1)
消費電流(電力)の大きなものからリセットを解除する。消費電流(電力)の大きいブロックはその突入電流も大きいと考えられる。このことをふまえ、最初に最大電流(電力)のブロックのリセットを解除すれば、そのときの突入電流は大きいものの他のブロックには電流を供給しておらず余裕があり、過電流保護回路2052aが作動する可能性は低い。消費電流(電力)の大きなものから順番にリセットを解除すれば過電流保護回路2052aが作動する可能性を低くできると予想される。
(順番:その2)
図16のように共通のAC−DCコンバータ2052から電流の供給を受け、その電圧を下げて各ブロックの電源としている場合、共通の電源(コンバータ)から直接電流供給を受けているブロック(図16ではサウンドアンプ20SA)を最初にリセットを解除し、次に共通の電源から直接電流供給を受けているコンバータから電流供給を受けているブロック(図16ではモータドライバ20MD)、次にこのコンバータから電流供給を受けているコンバータから電流供給を受けているブロック(図16ではLEDドライバ20LD)という順番でリセットを解除する。共通の電源から直接電流供給を受けているブロックの突入電流は、共通の電源に直接影響を与えるので余裕がある最初にリセットを解除するとよいと予想される。図16のようにコンバータが直列に接続されている場合は、接続の順番(中央から末端に向かう順番)でリセットを解除すれば突入電流が共通の電源に与える影響を小さくできると予想される(各コンバータの内部には図示しないがコンデンサが設けられることがあり、これにより突入電流を多少は軽減できる)。
<誤動作時の初期設定の維持>
前述した初期設定においてアドレス空間CS3はデバイス制御ポートに割り当てられている(図12参照)。デバイス制御ポートとは、デバイスを制御するための制御信号を保持し出力するためのポートであり、デバイスの制御信号は、そのデバイスの動作を定める重要な信号である。
具体的な回路を図19(a)に示す。アドレス空間CS3には、液晶パネル制御用の信号と外部デバイス(サブ基板20の外にある装置)に供給する5V信号(ハイレベルの信号)とを切り替えるための制御ポートが接続されている。CPUに十分な数のI/Oポート用のピンが用意されていなかったために、アドレス空間CS3には専用のIC(図19のラッチ)を接続し、このIC(ラッチ)に上記信号を接続し、ポートを設定することで外部デバイスを制御している。
図19(a)から分かるように、IC(ラッチ)の出力を読み出してCPUにフィードバックする回路がなく、上記信号はIC(ラッチ)に対して書き込みのみを行うようになっている。
ここで問題となるのは、例えばノイズ等の影響を受けてIC(ラッチ)の出力が意図せずに変化したとき、これを検知できないことである。このため意図しない信号が出力されたことを修正できず、遊技機の動作に悪影響を与えることも考えられる。
そこで、発明の実施の形態では、図19(a)のラッチのような、データを設定することで動作モードを決定付けるようなICについて、その動作が正常であるか、異常であるかに関わらず所定タイミングで書き込みを繰り返している。すなわち、初期設定を行ったときの最適な値と同一の値のデータを書き続ける。換言すると、初期設定を繰り返し行うことである。例えば、図19(b)のように、CPUはTw間隔で書き込み信号をラッチに与える。なお、図示していないが書き込み信号を発生しているとき、CPUはラッチの入力信号(初期設定の信号、上記例では液晶パネル制御用の信号と外部デバイスに供給する5V信号)を用意しラッチに供給している。なお、Tw間隔は一例であり、間隔が毎回異なるようにしてもよい。
発明の実施の形態によれば、静電気・電波などの何かしらの外部要因によって、ラッチが保持する内容が意図せずに変化した場合でも、初期設定を繰り返すことにより、正常な状態に復帰させることができる。
初期設定の繰り返し間隔を短くすることにより、ラッチが保持する内容が意図せずに変化した場合でも、遊技の支障ないレベルで復帰することができる。発明の実施の形態では、制御対象であるIC(ラッチ)の正常又は異常を判定する必要性がないため、追加の回路・配線を設ける必要がなく低コストである。プログラムの負荷も少ない(異常検知のための処理を省略できる)。
以上の説明においてスロットマシンを例に取り説明を加えたが、この発明の実施の形態はパチンコ機のような他の遊技機についても適用できる。
パチンコ機(弾球遊技機)について図20、図21及び図22を参照して簡単に説明を加える。パチンコ機は、主要部材として外枠50、本体部材51、開口枠扉52を備える。開口枠扉52は、その開口部にガラス製又は樹脂製からなる透明板部材が設けられ、開口部周辺に電飾(図示なし)、スピーカ52b、球受皿付き扉53などが取り付けられている。
遊技盤10Bは、本体部材51の空間部に臨むように、本体部材51に所定の固定部材を用いて着脱自在に装着されている。遊技盤10Bの盤面11は、誘導レール12と、誘導レール12で区画された略円形の遊技領域を落下した遊技球を外部へ導く排出口(アウト口)13を備える矩形の盤面である。排出口13の内部にはアウト球センサ13Sが設けられている(図21)。
図21に示すように、盤面11は、演出用表示ランプやLCD(液晶表示装置)などの可変表示部をひとつ又は複数有する可変表示装置(センター役物)30a、スルーチャッカー30b、普通入賞装置(図示なし)、始動入賞口を有するスタートチャッカー(始動入賞装置)30d、大入賞口を有するアタッカー30c、30eを備える。30b、30c、30d、30eの内部には球通過検出器20b、20c、20d、20eが設けられている。
盤面11には、入賞装置30、図示しない釘や風車などの障害物とともに、興趣を高めるための様々なデザインの装飾部材が設けられている。
図22は本発明の実施の形態に係る遊技機の機能ブロック図である。
主制御装置(メイン基板)101及び副制御装置(サブ基板)200は、図示しないが、CPUを中心に構成され、ROM、RAM、I/O等を備えている。そして、CPUがROMに記憶されたプログラムを読み込むことで、以下に説明するように動作する。
100は、遊技に係る処理を行う主制御装置である。主制御装置101は、電気的な遊技制御の処理を行い主要な処理情報を生成する。主制御装置101は、遊技領域を移動(流下)して入賞装置30b〜30dを通過した入賞球をそれぞれ検出する球通過検出器20b〜20dの信号を入力とし、入賞装置30b〜30dの入賞球通過に応じた抽選・判定を行う。
1110は、スタートチャッカー(始動入賞口)30dを遊技球が通過したこと(正確にはその内部に設けられたセンサ20dで検知されたこと)が検出されたことに基づいて乱数を取得する乱数取得部である。乱数取得部1110は、カウンタを含むハード乱数発生器1120及びプログラムにより動作するソフト乱数発生器1130のいずれか又は両方を備える。
1210は、乱数取得部1110により取得された乱数にもとづいて、特別図柄表示装置119に図柄を変動表示させる図柄変動制御部である。
1310は、特別遊技制御部である。特別遊技制御部1310は、乱数取得部1110により取得された乱数が当選乱数(大当たり)であることを条件に、特別図柄表示装置119に予め設定された賞態様を構成する図柄を停止表示させた後、遊技者に有利な特別遊技を行わせる。
1410は、確率変動遊技制御部である。確率変動遊技制御部1410は、特別遊技制御部1310による特別遊技の終了後、乱数取得部1110により当選乱数を取得する可能性を増加させる確率変動遊技を行わせる。変動表示した図柄は、所定時間後に乱数取得部1110により取得された乱数に基づきはずれ又は大当たりの図柄で停止表示する。
1510は、特別図柄表示装置119に図柄を変動表示させている間に遊技球がスタートチャッカー(始動入賞装置)30dを通過した場合に、所定個数を限度としてその遊技球が通過したことに基づき抽出された乱数を記憶し、図柄の変動表示が終了した後に記憶した乱数に基づき図柄の変動表示を行うことを可能にする保留処理部である。
1610は、先読み処理部である。先読み処理部1610は、各保留球について、それらが大当りに係るものであるか否かを判定する。始動入賞の乱数抽出のタイミングで保留球の記憶内容である乱数を仮判定し(先読みし)、その結果を副制御装置200へ送っている。
110aは、遊技利益として入賞装置30c〜30eと普通入賞装置(図示なし)の遊技球入賞に応じた及び/又はこれによる抽選・判定の結果に応じた所定数の遊技球を払出すための払出制御装置である。
110bは、払出制御装置110aを制御するための払出制御基板である。
119は、状態表示装置141に設けられた表示装置(例えば7セグメント表示器など)である特別図柄表示装置である。
130は、状態表示装置141に設けられた表示装置(例えば7セグメント表示器など)である普通図柄表示装置である。
141は、遊技者から視認できるように遊技機の盤面に設けられた状態表示装置である。状態表示装置141は、ラウンド数を表示するラウンド数表示部150と保留数を表示する保留数表示部160を含む。保留数表示部160は、遊技盤に配置され、図柄の変動表示中に保留球を表示するものである。
200は、主制御装置101にて生成した処理情報を得ることにより、可動体の駆動、光の点滅・音響の発生などの演出を含む所定の出力態様処理をさせる制御を行う副制御装置である。
2100は、画像表示装置210を制御して演出に係る画像、遊技状態に係る画像、現在の遊技状態の表示や、エラー表示、保留表示等を行う演出図柄制御部である。なお、特別図柄表示装置119の変動中は、特別図柄表示装置119に同期して変動表示から変動停止を行う。
2200は、遊技盤10Bに設けられた可動体220を制御する役物駆動部である。
2300は、遊技盤10B、可変表示装置30aあるいは遊技機筐体などに設けられたランプ・電飾230などを点灯制御するためのランプ制御部である。
2400は、音発生装置240を制御する音制御部である。
2500は、先読み処理部1610からの判定結果に基づき先読み関する演出を行う先読み演出処理部である。例えば、画像表示装置210の当たりに相当する保留球に対応する表示(保留球表示の発光色など)を他のものと異ならせることにより、当該保留球が当たりの可能性が高いことを示唆する、あるいは当たりであることを報知する。
2600は、リアルタイムクロック2700の出力(時刻信号)に基づき主制御装置101の遊技状態とは関係のない演出である特定演出に関する処理を行う特定演出処理部である。例えば、毎正時あるいは予め定められた時刻に、遊技状態とは独立して所定の楽曲が流されるとともに、そのビデオ映像が画像表示装置210に表示される。
2700は、時刻信号を出力するリアルタイムクロックである。
210は、液晶表示装置(LCD)などの画像表示装置である。
220は、可動体である。可動体220は、例えば、通常状態とこれと異なる状態の2つを相互に行き来するものである。可動体とは、例えば、平板状、円柱状、円盤状、凹凸を有する歯車状、等のものである。なお、図示しないが可動体220を駆動するための動力部を備える。
画像表示装置210及び可動体220は、可変表示装置(センター役物)30aに設けられている。
230は、発光素子を含むランプ・電飾である。
240は、音発生装置である。音発生装置240は、スピーカ52bと、副制御装置200の音制御部2400からの信号に基づきスピーカ52bの駆動信号を生成するサウンドプロセッサ(図示せず)を含んでいる。
図22の副制御装置200は、図3のサブ基板20に相当し、副制御装置200のCPUとROMが、図3のサブ基板20のCPUとROMに相当する。副制御装置200のROMには初期設定を行うための開始プログラムが予め記憶されている。この開始プログラムは、図15(a)のテーブルを含み、この内容及び図15(b)のテーブルの内容に従いバスステートコントローラを設定する命令を含む。
なお、本発明の実施の形態は、サブ基板20と副制御装置200だけでなく、メイン基板10や主制御装置101に適用することができる。
発明の実施の形態において開始プログラムで行う初期設定として、割り込み禁止を中心に説明を加えたが、他の処理、例えばレジスタの設定などであってもよい。イレギュラーな状態で開始プログラムの実行が開始されたときでも再起動プロセスを正常に行うことができるようにするためのカウンタ、フラグなどのCPUのパラメータを設定するものでもよい。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。