(57)【特許請求の範囲】
【請求項１】
遊技を行う遊技機において、
プログラムを記憶可能であり、記憶領域を特定可能なアドレスが割り当てられた記憶手段と、
前記記憶手段に記憶されたプログラムに従って制御を行う制御手段と、
アドレスを指定することで指定されたアドレスに記憶されたプログラムを呼び出す第１のプログラム呼出手段と、
アドレスよりも少ないデータ量のパラメータを指定することで、所定間隔毎に割り当てられた複数の特定アドレスのうち指定されたパラメータに対応する特定アドレスに記憶されたプログラムを呼び出す第２のプログラム呼出手段と、
を備え、
前記記憶手段は、前記複数の特定アドレスのうち第１特定アドレスから開始する領域に第１の特定プログラムを記憶し、前記第１特定アドレスの次の第２特定アドレスから開始する領域に第２の特定プログラムを記憶し、第１の特定プログラムが記憶された領域の直後のアドレスから前記第２特定アドレスの直前のアドレスまでの領域に所定プログラムを記憶し、
前記所定プログラムには、該所定プログラムが記憶される領域の最終アドレスに、該所定プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令が格納され、
前記特定アドレスから開始するプログラムは、前記複数の特定アドレスのうち第３特定アドレスから該第３特定アドレスの次の第４特定アドレスの直前のアドレスまでの領域に記憶される第３の特定プログラムを含み、
前記第３の特定プログラムには、該第３の特定プログラムが記憶される領域の最終アドレスに、該第３の特定プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令が格納される、遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パチンコ遊技機やスロットマシン等の遊技機に関する。
【背景技術】
【０００２】
この種の遊技機において、遊技機が制御に用いるプログラムは、複数種類のメインモジュールと共通サブモジュールとを含み、ＲＯＭに記憶される。各共通サブモジュールは、ＲＯＭにおけるプログラムアドレスよりも小さなデータサイズのパラメータにより特定される複数の特定アドレスのうちのいずれかを先頭にして記憶されており、他のモジュールにおいて、例えば、ＲＳＴ命令により特定アドレスが指定されることで、呼び出されて実行される。（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２２９９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の遊技機では、共通サブモジュールをＲＳＴ命令により呼び出せるように、複数の特定アドレスのうちのいずれかを先頭にしてＲＯＭに記憶させるため、ＲＯＭにおける一の特定アドレスから次の特定アドレスまでの領域の容量よりも共通サブモジュールのデータ量が小さい場合には、記憶された共通サブモジュールの末尾から次の特定アドレスまでのＲＯＭの領域が空領域となってしまうことがあり、ＲＯＭの領域を有効に用いられていなかった。
【０００５】
本発明は、このような問題点に着目してなされたものであり、プログラムやデータの記憶領域を有効に用いることができる遊技機を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の請求項１に記載の遊技機は、
遊技を行う遊技機において、
プログラムを記憶可能であり、記憶領域を特定可能なアドレスが割り当てられた記憶手段と、
前記記憶手段に記憶されたプログラムに従って制御を行う制御手段と、
アドレスを指定することで指定されたアドレスに記憶されたプログラムを呼び出す第１のプログラム呼出手段と、
アドレスよりも少ないデータ量のパラメータを指定することで、所定間隔毎に割り当てられた複数の特定アドレスのうち指定されたパラメータに対応する特定アドレスに記憶されたプログラムを呼び出す第２のプログラム呼出手段と、
を備え、
前記記憶手段は、前記複数の特定アドレスのうち第１特定アドレスから開始する領域に第１の特定プログラムを記憶し、前記第１特定アドレスの次の第２特定アドレスから開始する領域に第２の特定プログラムを記憶し、第１の特定プログラムが記憶された領域の直後のアドレスから前記第２特定アドレスの直前のアドレスまでの領域に所定プログラムを記憶し、
前記所定プログラムには、該所定プログラムが記憶される領域の最終アドレスに、該所定プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令が格納され、
前記特定アドレスから開始するプログラムは、前記複数の特定アドレスのうち第３特定アドレスから該第３特定アドレスの次の第４特定アドレスの直前のアドレスまでの領域に記憶される第３の特定プログラムを含み、
前記第３の特定プログラムには、該第３の特定プログラムが記憶される領域の最終アドレスに、該第３の特定プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令が格納される
ことを特徴としている。
本発明の手段１の遊技機は、
遊技を行う遊技機（スロットマシン１）において、
プログラムを記憶可能であり、記憶領域を特定可能なアドレスが割り当てられた記憶手段（ＲＯＭ４１ｂ）と、
前記記憶手段に記憶されたプログラムに従って制御を行う制御手段（メイン制御部４１）と、
アドレスを指定することで指定されたアドレスに記憶されたプログラムを呼び出す第１のプログラム呼出手段（ＣＡＬＬ命令、ＣＡＬＬＶ命令）と、
アドレスよりも少ないデータ量のパラメータ（３ビットのパラメータ）を指定することで、所定間隔（８バイト）毎に割り当てられた複数の特定アドレス（０００８Ｈ、００１０Ｈ、００１８Ｈ、００２０Ｈ、００２８Ｈ、００３０Ｈ、００３８Ｈ）のうち指定されたパラメータに対応する特定アドレスに記憶されたプログラム（例えば、外部信号オフ時間待ち処理のサブルーチン）を呼び出す第２のプログラム呼出手段（ＲＳＴ命令）と、
を備え、
前記記憶手段は、一の特定アドレスから開始する領域に第１の特定プログラム（例えば、外部信号オフ時間待ち処理のサブルーチン）を記憶し、一の特定アドレスの次の特定アドレスから開始する領域に第２の特定プログラム（例えば、出力ポート２出力処理のサブルーチン）を記憶し、第１の特定プログラムが記憶された領域の後から次の特定アドレスより前の領域に所定プログラム（例えば、最大投入メダル数セット処理のサブルーチン）を記憶する
ことを特徴としている。
この特徴によれば、アドレスよりも少ないデータ量のパラメータを指定することで、所定間隔毎に割り当てられた複数の特定アドレスのうち指定されたパラメータに対応する特定アドレスに記憶されたプログラムを呼び出すことが可能となるため、プログラムの呼出に係るプログラム容量を削減できる。また、一の特定アドレスから開始する領域に記憶された第１の特定プログラムの後から次の特定アドレスの手前までの間の領域、すなわち第１の特定プログラムと第２の特定プログラムの間の空き領域に所定プログラムを記憶することで、記憶手段の領域を有効に用いることができる。
【０００７】
本発明の手段２の遊技機は、手段１に記載の遊技機であって、
前記制御手段は、前記所定プログラム（例えば、設定値表示データ取得処理のサブルーチン）に続けて前記第２の特定プログラム（例えば、加算処理のサブルーチン）を実行する
ことを特徴としている。
この特徴によれば、第１の特定プログラムが記憶された領域の後から次の特定アドレスより前の領域に所定プログラムを記憶し、所定プログラムに続けて第２の特定プログラムを実行することにより、第１のプログラム呼出手段により所定プログラムを呼び出すのみで、所定プログラムの終了後に第２のプログラム呼出手段により第２の特定プログラムを呼び出す必要がなく、これに係るプログラム容量を削減できる。
【０００８】
本発明の手段３の遊技機は、手段１または手段２に記載の遊技機であって、
前記所定プログラムは、該所定プログラム（例えば、第１の特定プログラムと第２の特定プログラムの間の空き領域よりも大きなデータ量のプログラムの一部）が記憶された領域（特定アドレス領域）以外の領域に格納されたプログラム（例えば、当該空き領域に記憶させたプログラムの残りの部分）へのジャンプ命令を含む
ことを特徴としている。
この特徴によれば、所定プログラムは、該所定プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令を含むため、第１の特定プログラムと第２の特定プログラムとの間の空き領域よりもデータ量の多いプログラムの一部を所定プログラムとして当該空き領域に記憶することで、記憶手段の領域を有効に用いることができる。
【０００９】
本発明の手段４の遊技機は、手段１〜手段３のいずれかに記載の遊技機であって、
特定アドレスから開始するプログラムは、該プログラム（例えば、ポート出力処理の一部）が記憶された領域（特定アドレス領域）以外の領域に格納されたプログラム（例えば、ポート出力処理の残り部分）へのジャンプ命令を含む
ことを特徴としている。
この特徴によれば、特定アドレスから開始するプログラムは、該プログラムが記憶された領域以外の領域に格納されたプログラムへのジャンプ命令を含むため、特定アドレスから次の特定アドレスまでの領域よりもデータ量の多いプログラムを第２のプログラム呼出手段にて呼び出すことが可能となるため、データ量の多いプログラムであっても、その呼出に係るプログラム容量を削減できる。
【００１０】
本発明の手段５の遊技機は、手段１〜４のいずれかに記載の遊技機であって、
前記記憶手段は、
遊技の進行に係わる遊技プログラム（遊技プログラム）が記憶される第１記憶領域（遊技プログラム領域）と、
前記遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラム（非遊技プログラム）が記憶される第２記憶領域（非遊技プログラム領域）と、
前記第１記憶領域（遊技プログラム領域）及び前記第２記憶領域（非遊技プログラム領域）のうち後方に割り当てられた後方記憶領域（非遊技プログラム領域）の手前の領域に割り当てられた未使用領域（未使用領域１）と、
を備える
ことを特徴としている。
この特徴によれば、遊技の進行に係わる遊技プログラムが記憶される第１記憶領域と、遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムが記憶される第２記憶領域と、がそれぞれ別個に割り当てられているとともに、第１記憶領域及び第２記憶領域のうち後方に割り当てられた後方記憶領域の手前の領域に未使用領域が割り当てられているため、遊技プログラムと、非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
尚、記憶領域の前後とは、記憶領域に割り当てられたアドレス値の大小関係であり、アドレスが小さい方が前方となり、アドレスが大きい方が後方となる。このため、手段５において前記第１記憶領域及び前記第２記憶領域のうち後方に割り当てられた後方記憶領域とは、前記第１記憶領域及び前記第２記憶領域のうち割り当てられたアドレス値が大きい方の記憶領域が該当する。
また、未使用領域が後方記憶領域の手前に割り当てられる構成であれば良く、前方記憶領域、未使用領域及び後方記憶領域がそれぞれ隣接して割り当てられる構成でも良いし、前方記憶領域と未使用領域との間に他の記憶領域が割り当てられる構成でも良い。
【００１１】
本発明の手段６の遊技機は、手段１〜５のいずれかに記載の遊技機であって、
前記制御手段は、割込に基づいて割込プログラムに従った処理（タイマ割込処理（メイン））を実行する割込処理実行手段を含み、
前記遊技機は、
割込プログラム（タイマ割込処理（メイン））のアドレスを記憶可能なアドレス記憶手段（ベクタテーブル）と、
アドレス記憶手段（ベクタテーブル）に記憶しているアドレスが所定の範囲（プログラム領域のうちプログラム等が実際に格納された領域）にあるか否かを起動時に判定する判定手段と、
アドレス記憶手段（ベクタテーブル）に記憶しているアドレスが所定の範囲にないと判定したときに起動を制限する起動制限手段（メイン制御部４１は、ベクタテーブルのアドレスがプログラム領域のうちプログラム等が実際に格納された領域でない場合に起動させない）と、
を備える
ことを特徴としている。
この特徴によれば、意図しない割込処理が実行されることを事前に防止することができ
る。
【００１２】
本発明の手段７の遊技機は、手段１〜６のいずれかに記載の遊技機であって、
前記制御手段の設定を行う設定手段（ＨＷパラメータを参照して行われる各種機能の設定）と、
割込条件の成立に応じて割込を発生させる割込発生手段（タイマ回路５０９）と、
前記割込発生手段による割込の発生を制限する割込制限手段と、
を備え、
前記制御手段は、
前記設定手段による設定が行われた後、プログラム（遊技プログラムまたは非遊技プログラム）に基づく処理を実行する処理手段と、
割込に基づいて割込処理（タイマ割込処理（メイン））を実行する割込処理実行手段と、
を含み、
前記割込制限手段は、プログラム（初期設定処理）に基づく処理が開始される前に割込の発生を制限する第１の割込制限手段（起動時設定による割込禁止の設定）と、プログラムに基づく処理の開始に際して割込の発生を制限する第２の割込制限手段（初期設定処理による割込禁止の設定）と、を含む
ことを特徴としている。
この特徴によれば、意図しない割込が発生することを防止できる。
【００１３】
本発明の手段８の遊技機は、手段１〜７のいずれかに記載の遊技機であって、
複数のタイマ値格納領域（例えば、１バイトタイマＡ〜Ｃ）と、
複数種類の計時条件（例えば、１バイトタイマＡ〜Ｃの計時条件）のうちいずれかの種類の計時条件が成立したときに、該計時条件に応じたタイマ値格納領域（例えば、１バイトタイマＡ〜Ｃ）に該計時条件に応じたタイマ値を格納するタイマ値格納手段（メイン処理）と、
所定周期（約２．２４ｍｓ）毎に複数のタイマ値格納領域（例えば、１バイトタイマＡ〜Ｃ）に格納されたタイマ値を更新可能なタイマ値更新手段（時間カウンタ更新処理）と、
を備え、
複数のタイマ値格納領域（例えば、１バイトタイマＡ〜Ｃ）には、所定の規則（＋１）で連続するアドレス（８０４ＣＨ〜８０４ＥＨ）が割り当てられ、
タイマ値更新手段は、指定アドレスに対応するタイマ値格納領域に格納されたタイマ値を更新する更新処理（ポインタが示す値を１減算する処理）を、所定の演算（指定アドレス＋１）を行うことによりタイマ値格納領域に対する指定アドレスを変更しながら繰り返し実行することで複数種類のタイマ値を更新可能である
ことを特徴としている。
この特徴によれば、複数のタイマ値格納領域には、所定の規則で連続するアドレスが割り当てられるとともに、指定アドレスに対応するタイマ値格納領域に格納されたタイマ値を更新する更新処理を、所定の演算を行うことによりタイマ値格納領域に対する指定アドレスを変更しながら繰り返し実行することで複数種類のタイマ値を更新するので、複数種類のタイマ値を更新する処理をタイマ値の種類毎に行う場合よりもプログラム容量を削減することができる。
尚、所定の規則で連続するアドレスが割り当てられるとは、例えば、開始アドレス及び開始アドレスからＮ（Ｎは自然数）ずつ加算されるアドレスが割り当てられることである。
また、所定の演算を行うことによりタイマ値格納領域に対する指定アドレスを変更するとは、例えば、現在の指定アドレスに対して処理数に応じた値を加算または減算することで指定アドレスを変更すること、基準アドレスに対して定数を加算または減算することで指定アドレスを変更することが該当する。この際、処理数に応じた値または定数は、タイマ値の格納容量により異なる場合があり、例えば、１バイトずつタイマ値が格納される構成であれば、処理数に応じた値は処理数に応じて１、２、３…となり、定数は１となるが、２バイトずつタイマ値が格納される構成であれば、処理数に応じた値は処理数に応じて２、４、６…となり、定数は２となる。
【００１４】
尚、本発明は、本発明の請求項に記載された発明特定事項のみを有するものであって良いし、本発明の請求項に記載された発明特定事項とともに該発明特定事項以外の構成を有するものであっても良い。
【図面の簡単な説明】
【００１５】
【図１】本発明が適用された実施例のスロットマシンの正面図である。
【図２】スロットマシンの内部構造を示す斜視図である。
【図３】スロットマシンの構成を示すブロック図である。
【図４】メイン制御部の構成を示すブロック図である。
【図５】メイン制御部が搭載するＲＯＭ及びＲＡＭのメモリマップを示す図である。
【図６】メイン制御部が搭載するＲＯＭ及びＲＡＭのメモリマップの詳細を示す図である。
【図７】メイン制御部が搭載するＲＯＭにおけるプログラム領域のメモリマップの詳細を示す図である。
【図８】遊技プログラム及び非遊技プログラムの構成を示す図である。
【図９】遊技領域と非遊技領域との関係を示す図である。
【図１０】非遊技プログラムを呼び出す際の処理の流れを示すフローチャートである。
【図１１】メイン制御部が実行する初期設定処理の制御内容を示すフローチャートである。
【図１２】メイン制御部が実行する設定変更処理の制御内容を示すフローチャートである。
【図１３】メイン制御部が実行するメイン処理の制御内容を示すフローチャートである。
【図１４】メイン制御部が実行するタイマ割込処理（メイン）の制御内容を示すフローチャートである。
【図１５】メイン制御部が実行するタイマ割込処理（メイン）の制御内容を示すフローチャートである。
【図１６】メイン制御部が実行するコマンド格納処理の制御内容を示すフローチャートである。
【図１７】メイン制御部が実行する通常時コマンド送信処理の制御内容を示すフローチャートである。
【図１８】メイン制御部が実行する電断時コマンド送信処理の制御内容を示すフローチャートである。
【図１９】メイン制御部が実行する電断処理の制御内容を示すフローチャートである。
【図２０】メイン制御部及びサブ制御部の起動時及び電断時における制御の流れを説明するためのタイミングチャートである。
【図２１】メイン制御部がメイン処理においてタイマカウンタの値を判定する際の制御内容を示すフローチャートである。
【図２２】ＲＡＭにおけるタイマカウンタの格納領域を示す図である。
【図２３】メイン制御部が実行する時間カウンタ更新処理の制御内容を示すフローチャートである。
【発明を実施するための形態】
【００１６】
本発明に係る遊技機を実施するための形態を実施例に基づいて以下に説明する。
【実施例】
【００１７】
本発明が適用された遊技機であるスロットマシンの実施例について図面を用いて説明すると、本実施例のスロットマシン１は、図１に示すように、前面が開口する筐体１ａと、この筐体１ａの側端に回動自在に枢支された前面扉１ｂと、から構成されている。
【００１８】
本実施例のスロットマシン１の筐体１ａの内部には、図２に示すように、外周に複数種の図柄が配列されたリール２Ｌ、２Ｃ、２Ｒ（以下、左リール、中リール、右リール）が水平方向に並設されており、図１に示すように、これらリール２Ｌ、２Ｃ、２Ｒに配列された図柄のうち連続する３つの図柄が前面扉１ｂに設けられた透視窓３から見えるように配置されている。
【００１９】
リール２Ｌ、２Ｃ、２Ｒの外周部には、互いに識別可能な複数種類の図柄（識別情報）が所定の順序で、それぞれ所定数ずつ描かれている。リール２Ｌ、２Ｃ、２Ｒの外周部に描かれた図柄は、前面扉１ｂの略中央に設けられた透視窓３において各々上中下三段に表示される。
【００２０】
各リール２Ｌ、２Ｃ、２Ｒは、各々対応して設けられたリールモータ３２Ｌ、３２Ｃ、３２Ｒ（図３参照）によって回転されることで、各リール２Ｌ、２Ｃ、２Ｒの図柄が透視窓３に連続的に変化しつつ表示される一方で、各リール２Ｌ、２Ｃ、２Ｒの回転が停止されることで、透視窓３に３つの連続する図柄が表示結果として導出表示されるようになっている。
【００２１】
リール２Ｌ、２Ｃ、２Ｒの内側には、リール２Ｌ、２Ｃ、２Ｒそれぞれに対して、基準位置を検出するリールセンサ３３Ｌ、３３Ｃ、３３Ｒと、リール２Ｌ、２Ｃ、２Ｒを背面から照射するリールＬＥＤ５５と、が設けられている。また、リールＬＥＤ５５は、リール２Ｌ、２Ｃ、２Ｒの連続する３つの図柄に対応する１２のＬＥＤからなり、各図柄をそれぞれ独立して照射可能とされている。
【００２２】
前面扉１ｂの各リール２Ｌ、２Ｃ、２Ｒの手前側（遊技者側）の位置には、液晶表示器５１（図１参照）の表示領域５１ａが配置されている。液晶表示器５１は、液晶素子に対して電圧が印加されていない状態で透過性を有する液晶パネルを有しており、表示領域５１ａの透視窓３に対応する透過領域５１ｂ及び透視窓３を介して遊技者側から各リール２Ｌ、２Ｃ、２Ｒが視認できるようになっている。
【００２３】
前面扉１ｂには、図１に示すように、メダルを投入可能なメダル投入部４、メダルが払い出されるメダル払出口９、クレジット（遊技者所有の遊技用価値として記憶されているメダル数）を用いて、その範囲内において遊技状態に応じて定められた規定数の賭数のうち最大の賭数を設定する際に操作されるＭＡＸＢＥＴスイッチ６、クレジットとして記憶されているメダル及び賭数の設定に用いたメダルを精算する（クレジット及び賭数の設定に用いた分のメダルを返却させる）際に操作される精算スイッチ１０、ゲームを開始する際に操作されるスタートスイッチ７、リール２Ｌ、２Ｃ、２Ｒの回転を各々停止する際に操作されるストップスイッチ８Ｌ、８Ｃ、８Ｒが遊技者により操作可能にそれぞれ設けられている。
【００２４】
また、前面扉１ｂには、図１に示すように、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器１１、入賞の発生により払い出されたメダル枚数やエラー発生時にその内容を示すエラーコード等が表示される遊技補助表示器１２、賭数が１設定されている旨を点灯により報知する１ＢＥＴＬＥＤ１４、賭数が２設定されている旨を点灯により報知する２ＢＥＴＬＥＤ１５、賭数が３設定されている旨を点灯により報知する３ＢＥＴＬＥＤ１６、メダルの投入が可能な状態を点灯により報知する投入要求ＬＥＤ１７、スタートスイッチ７の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効ＬＥＤ１８、ウェイト（前回のゲーム開始から一定期間経過していないためにリールの回転開始を待機している状態）中である旨を点灯により報知するウェイト中ＬＥＤ１９、後述するリプレイゲーム中である旨を点灯により報知するリプレイ中ＬＥＤ２０が設けられた遊技用表示部１３が設けられている。
【００２５】
ＭＡＸＢＥＴスイッチ６の内部には、ＭＡＸＢＥＴスイッチ６の操作による賭数の設定操作が有効である旨を点灯により報知するＢＥＴスイッチ有効ＬＥＤ２１（図３参照）が設けられており、ストップスイッチ８Ｌ、８Ｃ、８Ｒの内部には、該当するストップスイッチ８Ｌ、８Ｃ、８Ｒによるリールの停止操作が有効である旨を点灯により報知する左、中、右停止有効ＬＥＤ２２Ｌ、２２Ｃ、２２Ｒ（図３参照）がそれぞれ設けられている。
【００２６】
前面扉１ｂの内側には、図２に示すように、所定のキー操作により後述するエラー状態及び後述する打止状態を解除するためのリセット操作を検出するリセットスイッチ２３、後述する設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器２４、所定の契機に打止状態（リセット操作がなされるまでゲームの進行が規制される状態）に制御する打止機能の有効／無効を選択するための打止スイッチ３６ａ、所定の契機に自動精算処理（クレジットとして記憶されているメダルを遊技者の操作によらず精算（返却）する処理）に制御する自動精算機能の有効／無効を選択するための自動精算スイッチ３６ｂ、メダル投入部４から投入されたメダルの流路を、筐体１ａの内部に設けられた後述のホッパータンク３４ａ（図２参照）側またはメダル払出口９側のいずれか一方に選択的に切り替えるための流路切替ソレノイド３０、メダル投入部４から投入され、ホッパータンク３４ａ側に流下したメダルを検出する投入メダルセンサ３１、投入メダルセンサ３１の上流側で異物の挿入を検出する投入口センサ２６を有するメダルセレクタ２９、前面扉１ｂの開放状態を検出するドア開放検出スイッチ２５（図３参照）が設けられている。
【００２７】
筐体１ａの内部には、図２に示すように、前述したリール２Ｌ、２Ｃ、２Ｒ、リールモータ３２Ｌ、３２Ｃ、３２Ｒ（図３参照）、各リール２Ｌ、２Ｃ、２Ｒのリール基準位置をそれぞれ検出可能なリールセンサ３３Ｌ、３３Ｃ、３３Ｒ（図３参照）からなるリールユニット２、外部出力信号を出力するための外部出力基板１０００（図３参照）、メダル投入部４から投入されたメダルを貯留するホッパータンク３４ａ、ホッパータンク３４ａに貯留されたメダルをメダル払出口９より払い出すためのホッパーモータ３４ｂ（図３参照）、ホッパーモータ３４ｂの駆動により払い出されたメダルを検出する払出センサ３４ｃ（図３参照）からなるホッパーユニット３４、電源ボックス１００が設けられている。
【００２８】
ホッパーユニット３４の側部には、ホッパータンク３４ａから溢れたメダルが貯留されるオーバーフロータンク３５が設けられている。オーバーフロータンク３５の内部には、貯留されたメダルが満タン状態となったことを検出する満タンセンサ３５ａ（図３参照）が設けられている。
【００２９】
電源ボックス１００の前面には、図２に示すように、設定変更状態または設定確認状態に切り替えるための設定キースイッチ３７、通常時においてはエラー状態や打止状態を解除するためのリセットスイッチとして機能し、設定変更状態においては後述する内部抽選の当選確率（出玉率）の設定値を変更するための設定スイッチとして機能するリセット／設定スイッチ３８、電源をＯＮ／ＯＦＦする際に操作される電源スイッチ３９が設けられている。
【００３０】
尚、電源ボックス１００は、筐体１ａの内部に設けられており、さらに前面扉１ｂは、店員等が所持する所定のキー操作により開放可能な構成であるため、これら電源ボックス１００の前面に設けられた設定キースイッチ３７、リセット／設定スイッチ３８、電源スイッチ３９は、キーを所持する店員等の者のみが操作可能とされ、遊技者による操作ができないようになっている。また、所定のキー操作により検出されるリセットスイッチ２３も同様である。特に、設定キースイッチ３７は、キー操作により前面扉１ｂを開放したうえで、さらにキー操作を要することから、遊技場の店員のなかでも、設定キースイッチ３７の操作を行うキーを所持する店員のみ操作が可能とされている。
【００３１】
本実施例のスロットマシン１においてゲームを行う場合には、まず、メダルをメダル投入部４から投入するか、あるいはクレジットを使用して賭数を設定する。クレジットを使用するにはＭＡＸＢＥＴスイッチ６を操作すれば良い。遊技状態に応じて定められた規定数の賭数が設定されると、入賞ラインＬＮ（図１参照）が有効となり、スタートスイッチ７の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。尚、遊技状態に対応する規定数のうち最大数を超えてメダルが投入された場合には、その分はクレジットに加算される。
【００３２】
入賞ラインとは、各リール２Ｌ、２Ｃ、２Ｒの透視窓３に表示された図柄の組合せが入賞図柄の組合せであるかを判定するために設定されるラインである。本実施例では、図１に示すように、リール２Ｌの中段、リール２Ｃの中段、リール２Ｒの中段、すなわち中段に水平方向に並んだ図柄に跨って設定された入賞ラインＬＮのみが入賞ラインとして定められている。尚、本実施例では、１本の入賞ラインのみを適用しているが、複数の入賞ラインを適用しても良い。
【００３３】
また、本実施例では、入賞ラインＬＮに入賞を構成する図柄の組合せが揃ったことを認識しやすくするために、入賞ラインＬＮとは別に、無効ラインＬＭ１〜４を設定している。無効ラインＬＭ１〜４は、これら無効ラインＬＭ１〜４に揃った図柄の組合せによって入賞が判定されるものではなく、入賞ラインＬＮに特定の入賞を構成する図柄の組合せが揃った際に、無効ラインＬＭ１〜４のいずれかに入賞ラインＬＮに揃った場合に入賞となる図柄の組合せ（例えば、ベル−ベル−ベル）が揃う構成とすることで、入賞ラインＬＮに特定の入賞を構成する図柄の組合せが揃ったことを認識しやすくするものである。
【００３４】
ゲームが開始可能な状態でスタートスイッチ７を操作すると、各リール２Ｌ、２Ｃ、２Ｒが回転し、各リール２Ｌ、２Ｃ、２Ｒの図柄が連続的に変動する。この状態でいずれかのストップスイッチ８Ｌ、８Ｃ、８Ｒを操作すると、対応するリール２Ｌ、２Ｃ、２Ｒの回転が停止し、透視窓３に表示結果が導出表示される。
【００３５】
そして全てのリール２Ｌ、２Ｃ、２Ｒが停止されることで１ゲームが終了し、入賞ラインＬＮ上に予め定められた図柄の組合せ（以下、役ともいう）が各リール２Ｌ、２Ｃ、２Ｒの表示結果として停止した場合には入賞が発生し、その入賞に応じて定められた枚数のメダルが遊技者に対して付与され、クレジットに加算される。また、クレジットが上限数（本実施例では５０）に達した場合には、メダルが直接メダル払出口９（図１参照）から払い出されるようになっている。また、入賞ラインＬＮ上に、遊技状態の移行を伴う図柄の組合せが各リール２Ｌ、２Ｃ、２Ｒの表示結果として停止した場合には図柄の組合せに応じた遊技状態に移行するようになっている。
【００３６】
尚、本実施例では、スタートスイッチ７の操作が有効な状態でスタートスイッチ７の操作が検出されたときにゲームが開始し、全てのリールが停止したときにゲームが終了する。また、ゲームを実行するための１単位の制御（ゲーム制御）は、前回のゲームの終了に伴う全ての制御が完了したときに開始し、当該ゲームの終了に伴う全ての制御が完了したときに終了する。
【００３７】
また、本実施例では、３つのリールを用いた構成を例示しているが、リールを１つのみ用いた構成、２つのリールを用いた構成、４つ以上のリールを用いた構成としても良く、２以上のリールを用いた構成においては、２以上の全てのリールに導出された表示結果の組合せに基づいて入賞を判定する構成とすれば良い。また、本実施例では、物理的なリールにて可変表示装置が構成されているが、液晶表示器などの画像表示装置にて可変表示装置が構成されていても良い。
【００３８】
また、本実施例におけるスロットマシン１にあっては、ゲームが開始されて各リール２Ｌ、２Ｃ、２Ｒが回転して図柄の変動が開始した後、いずれかのストップスイッチ８Ｌ、８Ｃ、８Ｒが操作されたときに、当該ストップスイッチ８Ｌ、８Ｃ、８Ｒに対応するリールの回転が停止して図柄が停止表示される。ストップスイッチ８Ｌ、８Ｃ、８Ｒの操作から対応するリール２Ｌ、２Ｃ、２Ｒの回転を停止するまでの最大停止遅延時間は１９０ｍｓ（ミリ秒）である。
【００３９】
リール２Ｌ、２Ｃ、２Ｒは、１分間に８０回転し、８０×２１（１リール当たりの図柄コマ数）＝１６８０コマ分の図柄を変動させるので、１９０ｍｓの間では最大で４コマの図柄を引き込むことができることとなる。つまり、停止図柄として選択可能なのは、ストップスイッチ８Ｌ、８Ｃ、８Ｒが操作されたときに表示されている図柄と、そこから４コマ先までにある図柄、合計５コマ分の図柄である。
【００４０】
このため、例えば、ストップスイッチ８Ｌ、８Ｃ、８Ｒのいずれかが操作されたときに当該ストップスイッチに対応するリールの下段に表示されている図柄を基準とした場合、当該図柄から４コマ先までの図柄を下段に表示させることができるため、リール２Ｌ、２Ｃ、２Ｒ各々において、ストップスイッチ８Ｌ、８Ｒのうちいずれかが操作されたときに当該ストップスイッチに対応するリールの中段に表示されている図柄を含めて５コマ以内に配置されている図柄を入賞ライン上に表示させることができる。
【００４１】
以下では、特に区別する必要がない場合にはリール２Ｌ、２Ｃ、２Ｒを単にリールという場合がある。また、リール２Ｌを左リール、リール２Ｃを中リール、リール２Ｒを右リールという場合がある。また、ストップスイッチ８Ｌ、８Ｃ、８Ｒの操作によりリール２Ｌ、２Ｃ、２Ｒを停止させる操作を停止操作という場合がある。
【００４２】
図３は、スロットマシン１の構成を示すブロック図である。スロットマシン１には、図３に示すように、遊技制御基板４０、演出制御基板９０、電源基板１０１が設けられており、遊技制御基板４０によって遊技状態が制御され、演出制御基板９０によって遊技状態に応じた演出が制御され、電源基板１０１によってスロットマシン１を構成する電気部品の駆動電源が生成され、各部に供給される。
【００４３】
電源基板１０１には、外部からＡＣ１００Ｖの電源が供給されるとともに、このＡＣ１００Ｖの電源からスロットマシン１を構成する電気部品の駆動に必要な直流電圧が生成され、遊技制御基板４０及び演出制御基板９０に供給されるようになっている。また、電源基板１０１には、前述したホッパーモータ３４ｂ、払出センサ３４ｃ、満タンセンサ３５ａ、設定キースイッチ３７、リセット／設定スイッチ３８、電源スイッチ３９が接続されている。
【００４４】
遊技制御基板４０には、前述したＭＡＸＢＥＴスイッチ６、スタートスイッチ７、ストップスイッチ８Ｌ、８Ｃ、８Ｒ、精算スイッチ１０、リセットスイッチ２３、打止スイッチ３６ａ、自動精算スイッチ３６ｂ、投入メダルセンサ３１、ドア開放検出スイッチ２５、リールセンサ３３Ｌ、３３Ｃ、３３Ｒが接続されているとともに、電源基板１０１を介して前述した払出センサ３４ｃ、満タンセンサ３５ａ、設定キースイッチ３７、リセット／設定スイッチ３８が接続されており、これら接続されたスイッチ類の検出信号が入力されるようになっている。また、遊技制御基板４０には、前述したクレジット表示器１１、遊技補助表示器１２、１〜３ＢＥＴＬＥＤ１４〜１６、投入要求ＬＥＤ１７、スタート有効ＬＥＤ１８、ウェイト中ＬＥＤ１９、リプレイ中ＬＥＤ２０、ＢＥＴスイッチ有効ＬＥＤ２１、左、中、右停止有効ＬＥＤ２２Ｌ、２２Ｃ、２２Ｒ、設定値表示器２４、流路切替ソレノイド３０、リールモータ３２Ｌ、３２Ｃ、３２Ｒが接続されているとともに、電源基板１０１を介して前述したホッパーモータ３４ｂが接続されており、これら電気部品は、遊技制御基板４０に搭載された後述のメイン制御部４１の制御に基づいて駆動されるようになっている。
【００４５】
遊技制御基板４０には、遊技の進行に関する処理を行うメイン制御部４１、制御用クロックＣＣＬＫを生成する制御用クロック生成回路４２、乱数用クロックＲＣＬＫを生成する乱数用クロック生成回路４３、スイッチ類から入力された検出信号を取り込んでメイン制御部４１に伝送するスイッチ検出回路４４、モータ駆動信号（ステッピングモータの位相信号）をリールモータ３２Ｌ、３２Ｃ、３２Ｒに伝送するモータ駆動回路４５、ソレノイド駆動信号を流路切替ソレノイド３０に伝送するソレノイド駆動回路４６、ＬＥＤ駆動信号を各種表示器やＬＥＤに伝送するＬＥＤ駆動回路４７、電圧低下を検出したときに、その旨を示す電圧低下信号をメイン制御部４１に対して出力する電断検出回路４８、電源投入時または電源遮断時などの電源が不安定な状態においてメイン制御部４１にシステムリセット信号を与えるリセット回路４９が搭載されている。
【００４６】
図４は、遊技制御基板４０に搭載されたメイン制御部４１の構成例を示している。図４に示すメイン制御部４１は、１チップマイクロコンピュータであり、外部バスインターフェイス５０１と、クロック回路５０２と、照合用ブロック５０３と、固有情報記憶回路５０４と、演算回路５０５と、リセット／割込コントローラ５０６と、ＣＰＵ（Central  Processing  Unit）４１ａと、ＲＯＭ（Read  Only  Memory）４１ｂと、ＲＡＭ（Random  Access  Memory）４１ｃと、フリーランカウンタ回路５０７と、乱数回路５０８ａ、５０８ｂと、タイマ回路５０９と、割込コントローラ５１０と、パラレル入力ポート５１１と、シリアル通信回路５１２と、パラレル出力ポート５１３と、アドレスデコード回路５１４と、を備えて構成される。
【００４７】
リセット／割込コントローラ５０６は、メイン制御部４１の内部や外部にて発生する各種リセット、割込要求を制御するためのものである。リセット／割込コントローラ５０６は、指定エリア外走行禁止（ＩＡＴ）回路５０６ａとウォッチドッグタイマ（ＷＤＴ）５０６ｂとを備える。ＩＡＴ回路５０６ａは、ユーザプログラムが指定エリア内で正しく実行されているか否かを監視する回路であり、指定エリア外でユーザプログラムが実行されたことを検出するとＩＡＴ発生信号を出力する機能を備える。また、ウォッチドッグタイマ５０６ｂは、設定期間ごとにタイムアウト信号を発生させる機能を備える。
【００４８】
外部バスインターフェイス５０１は、メイン制御部４１を構成するチップの外部バスと内部バスとのインターフェイス機能や、アドレスバス、データバス及び各制御信号の方向制御機能などを有するバスインターフェイスである。クロック回路５０２は、制御用クロックＣＣＬＫを２分周することなどにより、内部システムクロックＳＣＬＫを生成する回路である。照合用ブロック５０３は、外部の照合機と接続し、チップの照合を行う機能を備える。固有情報記憶回路５０４は、メイン制御部４１の内部情報となる複数種類の固有情報を記憶する回路である。演算回路５０５は、乗算及び除算を行う回路である。
【００４９】
ＣＰＵ４１ａは、ＲＯＭ４１ｂから読み出した制御コードに基づいてユーザプログラム（ゲーム制御用の遊技制御処理プログラム）を実行することにより、スロットマシン１における遊技制御を実行する制御用ＣＰＵである。こうした遊技制御が実行されるときには、ＣＰＵ４１ａがＲＯＭ４１ｂから固定データを読み出す固定データ読出動作や、ＣＰＵ４１ａがＲＡＭ４１ｃに各種の変動データを書き込んで一時記憶させる変動データ書込動作、ＣＰＵ４１ａがＲＡＭ４１ｃに一時記憶されている各種の変動データを読み出す変動データ読出動作、ＣＰＵ４１ａが外部バスインターフェイス５０１やパラレル入力ポート５１１、シリアル通信回路５１２などを介してメイン制御部４１の外部から各種信号の入力を受け付ける受信動作、ＣＰＵ４１ａが外部バスインターフェイス５０１やシリアル通信回路５１２、パラレル出力ポート５１３などを介してメイン制御部４１の外部へと各種信号を出力する送信動作等も行われる。
【００５０】
ＲＯＭ４１ｂには、ユーザプログラム（ゲーム制御用の遊技制御処理プログラム）を示す制御コードや固定データ等が記憶されている。ＲＡＭ４１ｃは、ゲーム制御用のワークエリア等を提供する。ここで、ＲＡＭ４１ｃの少なくとも一部は、バックアップ電源によってバックアップされているバックアップＲＡＭであれば良い。すなわち、スロットマシン１への電力供給が停止しても、所定期間はＲＡＭ４１ｃの少なくとも一部の内容が保存される。
【００５１】
フリーランカウンタ回路５０７として、８ビットのフリーランカウンタを搭載している。乱数回路５０８ａ、５０８ｂは、８ビット乱数や１６ビット乱数といった、所定の更新範囲を有する乱数値となる数値データを生成する回路である。本実施例では、乱数回路５０８ａ、５０８ｂのうち１６ビット乱数回路５０８ｂが生成するハードウェア乱数は、後述する内部抽選用の乱数として用いられる。タイマ回路５０９は、１６ビットプログラマブルタイマであり、設定されたタイマ値を制御用クロックＣＣＬＫの入力に基づいてダウンカウントし、００００Ｈに達したときに割込コントローラへの割込要求信号を出力する。本実施例では、タイマ回路５０９を用いて定期的な割込要求や時間計測を行うことが可能である。
【００５２】
割込コントローラ５１０は、割込端子からの外部割込要求や、内蔵の周辺回路（例えば、シリアル通信回路５１２、乱数回路５０８ａ、５０８ｂ、タイマ回路５０９）からの割込要求を制御する回路である。パラレル入力ポート５１１は、８ビット幅の入力専用ポートを内蔵する。また、図４に示すメイン制御部４１が備えるパラレル出力ポート５１３は、１１ビット幅の出力専用ポートを内蔵する。シリアル通信回路５１２は、外部に対する入出力において非同期シリアル通信を行う回路である。
【００５３】
アドレスデコード回路５１４は、メイン制御部４１の内部における各機能ブロックのデコードや、外部装置用のデコード信号であるチップセレクト信号のデコードを行うための回路である。チップセレクト信号により、メイン制御部４１の内部回路、あるいは、周辺デバイスとなる外部装置を、選択的に有効動作させて、ＣＰＵ４１ａからのアクセスが可能となる。
【００５４】
メイン制御部４１は、パラレル出力ポート５１３を介してサブ制御部９１に各種のコマンドを送信する。メイン制御部４１からサブ制御部９１へ送信されるコマンドは一方向のみで送られ、サブ制御部９１からメイン制御部４１へ向けてコマンドが送られることはない。また、本実施例では、パラレル出力ポート５１３を介してサブ制御部９１に対してコマンドが送信される構成、すなわちコマンドがパラレル信号にて送信される構成であるが、シリアル通信回路５１２を介してサブ制御部９１に対してコマンドを送信する構成、すなわちコマンドをシリアル信号にて送信する構成としても良い。
【００５５】
また、メイン制御部４１は、遊技制御基板４０に接続された各種スイッチ類の検出状態がパラレル入力ポート５１１から入力される。そしてメイン制御部４１は、これらパラレル入力ポート５１１から入力される各種スイッチ類の検出状態に応じて段階的に移行する基本処理を実行する。また、メイン制御部４１は、割込の発生により基本処理に割り込んで割込処理を実行できるようになっている。本実施例では、タイマ回路５０９にてタイムアウトが発生したこと、すなわち一定時間間隔（本実施例では、約０．５６ｍｓ）毎に後述するタイマ割込処理（メイン）を実行する。また、メイン制御部４１は、割込処理の実行中に他の割込を禁止するように設定されているとともに、複数の割込が同時に発生した場合には、予め定められた順位によって優先して実行する割込が設定されている。尚、割込処理の実行中に他の割込要因が発生し、割込処理が終了してもその割込要因が継続している状態であれば、その時点で新たな割込が発生することとなる。
【００５６】
メイン制御部４１は、基本処理として遊技制御基板４０に接続された各種スイッチ類の検出状態が変化するまでは制御状態に応じた処理を繰り返しループし、各種スイッチ類の検出状態の変化に応じて段階的に移行する処理を実行する。また、メイン制御部４１は、一定時間間隔（本実施例では、約０．５６ｍｓ）毎にタイマ割込処理（メイン）を実行する。尚、タイマ割込処理（メイン）の実行間隔は、基本処理において制御状態に応じて繰り返す処理が一巡する時間とタイマ割込処理（メイン）の実行時間とを合わせた時間よりも長い時間に設定されており、今回と次回のタイマ割込処理（メイン）との間で必ず制御状態に応じて繰り返す処理が最低でも一巡することとなる。
【００５７】
演出制御基板９０には、液晶表示器５１、演出効果ＬＥＤ５２、スピーカ５３、５４、リールＬＥＤ５５等の演出装置が接続されており、これら演出装置は、演出制御基板９０に搭載された後述のサブ制御部９１による制御に基づいて駆動されるようになっている。尚、本実施例では、演出制御基板９０に搭載されたサブ制御部９１により、液晶表示器５１、演出効果ＬＥＤ５２、スピーカ５３、５４、リールＬＥＤ５５等の演出装置の出力制御が行われる構成であるが、サブ制御部９１とは別に演出装置の出力制御を直接的に行う出力制御部を演出制御基板９０または他の基板に搭載し、サブ制御部９１がメイン制御部４１からのコマンドに基づいて演出装置の出力パターンを決定し、サブ制御部９１が決定した出力パターンに基づいて出力制御部が演出装置の出力制御を行う構成としても良く、このような構成では、サブ制御部９１及び出力制御部の双方によって演出装置の出力制御が行われることとなる。また、本実施例では、演出装置として液晶表示器５１、演出効果ＬＥＤ５２、スピーカ５３、５４、リールＬＥＤ５５を例示しているが、演出装置は、これらに限られず、例えば、機械的に駆動する表示装置や機械的に駆動する役モノなどを演出装置として適用しても良い。
【００５８】
演出制御基板９０には、サブＣＰＵ９１ａ、ＲＯＭ９１ｂ、ＲＡＭ９１ｃ、Ｉ／Ｏポート９１ｄを備えたマイクロコンピュータにて構成され、演出の制御を行うサブ制御部９１、演出制御基板９０に接続された液晶表示器５１の表示制御を行う表示制御回路９２、演出効果ＬＥＤ５２、リールＬＥＤ５５の駆動制御を行うＬＥＤ駆動回路９３、スピーカ５３、５４からの音声出力制御を行う音声出力回路９４、電源投入時またはサブＣＰＵ９１ａからの初期化命令が一定時間入力されないときにサブＣＰＵ９１ａにリセット信号を与えるリセット回路９５、演出制御基板９０に接続されたスイッチ類から入力された検出信号を検出するスイッチ検出回路９６、日付情報及び時刻情報を含む時間情報を出力する時計装置９７、スロットマシン１に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をサブＣＰＵ９１ａに対して出力する電断検出回路９８、その他の回路等、が搭載されており、サブＣＰＵ９１ａは、遊技制御基板４０から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板９０に搭載された制御回路の各部を直接的または間接的に制御する。
【００５９】
リセット回路９５は、遊技制御基板４０においてメイン制御部４１にシステムリセット信号を与えるリセット回路４９よりもリセット信号を解除する電圧が低く定められており、電源投入時においてサブ制御部９１は、メイン制御部４１よりも早い段階で起動するようになっている。一方で、電断検出回路９８は、遊技制御基板４０においてメイン制御部４１に電圧低下信号を出力する電断検出回路４８よりも電圧低下信号を出力する電圧が低く定められており、電断時においてサブ制御部９１は、メイン制御部４１よりも遅い段階で停電を検知し、後述する電断処理（サブ）を行うこととなる。
【００６０】
サブ制御部９１は、メイン制御部４１と同様に、割込機能を備えており、メイン制御部４１からのコマンド受信時に割込を発生させて、メイン制御部４１から送信されたコマンドを取得し、バッファに格納するコマンド受信割込処理を実行する。また、サブ制御部９１は、システムクロックの入力数が一定数に到達する毎、すなわち一定時間間隔（約２ｍｓ）毎に割込を発生させて後述するタイマ割込処理（サブ）を実行する。また、サブ制御部９１は、メイン制御部４１とは異なり、コマンドの受信に基づいて割込が発生した場合には、タイマ割込処理（サブ）の実行中であっても、当該処理に割り込んでコマンド受信割込処理を実行し、タイマ割込処理（サブ）の契機となる割込が同時に発生してもコマンド受信割込処理を最優先で実行するようになっている。また、サブ制御部９１にも、停電時においてバックアップ電源が供給されており、バックアップ電源が供給されている間は、ＲＡＭ９１ｃに記憶されているデータが保持されるようになっている。
【００６１】
本実施例のスロットマシン１は、設定値に応じてメダルの払出率が変わるものである。詳しくは、後述する内部抽選、ナビストック抽選、上乗せ抽選等の遊技者に対する有利度に影響する抽選において設定値に応じた当選確率を用いることにより、メダルの払出率が変わるようになっている。設定値は１〜６の６段階からなり、６が最も払出率が高く、５、４、３、２、１の順に値が小さくなるほど払出率が低くなる。すなわち設定値として６が設定されている場合には、遊技者にとって最も有利度が高く、５、４、３、２、１の順に値が小さくなるほど有利度が段階的に低くなる。
【００６２】
設定値を変更するためには、設定キースイッチ３７をＯＮ状態としてからスロットマシン１の電源をＯＮする必要がある。設定キースイッチ３７をＯＮ状態として電源をＯＮすると、設定値表示器２４にＲＡＭ４１ｃから読み出された設定値が表示値として表示され、リセット／設定スイッチ３８の操作による設定値の変更が可能な設定変更状態に移行する。設定変更状態において、リセット／設定スイッチ３８が操作されると、設定値表示器２４に表示された表示値が１ずつ更新されていく（設定値６からさらに操作されたときは、設定値１に戻る）。そして、スタートスイッチ７が操作されると表示値を設定値として確定する。そして、設定キースイッチ３７がＯＦＦされると、確定した表示値（設定値）がメイン制御部４１のＲＡＭ４１ｃに格納され、遊技の進行が可能な状態に移行する。
【００６３】
尚、設定キースイッチ３７がＯＮ状態で電源投入された場合に、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされていることを条件に、設定変更状態に移行する構成としても良く、このような構成とすることで、前面扉１ｂが開放されていない状態で不正に設定変更がされてしまうことを防止できる。また、前面扉１ｂの開放に対応する検出がされていることを条件に、設定変更状態に移行する構成においては、設定変更状態に移行後、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされなくなっても、設定変更状態を維持することが好ましく、これにより、設定変更中に前面扉１ｂが一時的に閉じてしまっても、再度、設定変更状態に移行させるための操作を必要とせず、設定変更操作が煩雑となってしまうことがない。また、設定変更状態に移行後、スタートスイッチ７が操作されて設定値が確定した後、設定キースイッチ３７がＯＦＦとなったときに、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされていることを条件に、設定変更状態を終了して遊技の進行が可能な状態に移行する構成としても良く、このような構成においても、前面扉１ｂが開放されていない状態で不正に設定変更がされてしまうことを防止できる。
【００６４】
また、設定値を確認するためには、ゲーム終了後、賭数が設定されていない状態で設定キースイッチ３７をＯＮ状態とすれば良い。このような状況で設定キースイッチ３７をＯＮ状態とすると、設定値表示器２４にＲＡＭ４１ｃから読み出された設定値が表示されることで設定値を確認可能な設定確認状態に移行する。設定確認状態においては、ゲームの進行が不能であり、設定キースイッチ３７をＯＦＦ状態とすることで、設定確認状態が終了し、ゲームの進行が可能な状態に復帰することとなる。
【００６５】
尚、ゲーム終了後、賭数が設定されていない状態で設定キースイッチ３７がＯＮ状態となったときに、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされていることを条件に、設定確認状態に移行する構成としても良く、このような構成とすることで、前面扉１ｂが開放されていない状態で不正に設定値が確認されてしまうことを防止できる。また、前面扉１ｂの開放に対応する検出がされていることを条件に、設定確認状態に移行する構成においては、設定確認状態に移行後、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされなくなっても、設定確認状態を維持することが好ましく、これにより、設定確認中に前面扉１ｂが一時的に閉じてしまっても、再度、設定確認状態に移行させるための操作を必要とせず、設定確認操作が煩雑となってしまうことがない。また、設定確認状態に移行後、スタートスイッチ７が操作されて設定値が確定した後、設定キースイッチ３７がＯＦＦとなったときに、ドア開放検出スイッチ２５により前面扉１ｂの開放に対応する検出がされていることを条件に、設定確認状態を終了して遊技の進行が可能な状態に復帰する構成としても良く、このような構成においても、前面扉１ｂが開放されていない状態で不正に設定値が確認されてしまうことを防止できる。
【００６６】
本実施例のスロットマシン１においては、メイン制御部４１は、タイマ割込処理（メイン）を実行する毎に、電断検出回路４８からの電圧低下信号が検出されているか否かを判定する停電判定処理を行い、停電判定処理において電圧低下信号が検出されていると判定した場合に、次回復帰時にＲＡＭ４１ｃのデータが正常か否かを判定するためのデータを設定する電断処理（メイン）を実行する。
【００６７】
そして、メイン制御部４１は、その起動時においてＲＡＭ４１ｃのデータが正常であることを条件に、ＲＡＭ４１ｃに記憶されているデータに基づいてメイン制御部４１の処理状態を電断前の状態に復帰させるが、ＲＡＭ４１ｃデータが正常でない場合には、ＲＡＭ異常と判定し、ＲＡＭ異常エラーコードをレジスタにセットしてＲＡＭ異常エラー状態に制御し、遊技の進行を不能化させるようになっている。
【００６８】
エラー状態は、リセット操作（リセット／設定スイッチ３８またはリセットスイッチ２３の操作）により解除される通常エラー状態と、前述した設定変更状態に移行し、新たな設定値が設定されるまで解除されることがない特殊エラー状態と、を含み、ＲＡＭ異常エラー状態は、特殊エラー状態であり、一度ＲＡＭ異常エラー状態に制御されると、設定変更状態に移行し、新たな設定値が設定されるまで解除されることがない。
【００６９】
また、サブ制御部９１もタイマ割込処理（サブ）において電断検出回路９８からの電圧低下信号が検出されているか否かを判定し、電圧低下信号が検出されていると判定した場合に、次回復帰時にＲＡＭ９１ｃのデータが正常か否かを判定するためのデータを設定する電断処理（サブ）を実行する。
【００７０】
そして、サブ制御部９１は、その起動時においてＲＡＭ９１ｃのデータが正常であることを条件に、ＲＡＭ９１ｃに記憶されているデータに基づいてサブ制御部９１の処理状態を電断前の状態に復帰させるが、ＲＡＭ９１ｃのデータが正常でない場合には、ＲＡＭ異常と判定し、ＲＡＭ９１ｃを初期化するようになっている。この場合、メイン制御部４１と異なり、ＲＡＭ９１ｃが初期化されるのみで演出の実行が不能化されることはない。
【００７１】
また、サブ制御部９１は、その起動時においてＲＡＭ９１ｃのデータが正常であると判断された場合でも、メイン制御部４１から設定変更状態に移行した旨を示す後述の設定コマンドを受信した場合、起動後一定時間が経過してもメイン制御部４１の制御状態が復帰した旨を示す後述の復帰コマンドも設定コマンドも受信しない場合にも、ＲＡＭ９１ｃを初期化するようになっている。この場合も、ＲＡＭ９１ｃが初期化されるのみで演出の実行が不能化されることはない。
【００７２】
次に、メイン制御部４１のＲＡＭ４１ｃの初期化について説明する。メイン制御部４１のＲＡＭ４１ｃの格納領域のうちの使用可能領域は、重要ワーク、特別ワーク、一般ワーク、未使用領域、スタック領域に区分されており、重要ワーク、特別ワーク、一般ワーク、未使用領域、スタック領域の順で配置されている。
【００７３】
本実施例においてメイン制御部４１は、設定キースイッチ３７がＯＦＦの状態での起動時でＲＡＭ４１ｃのデータが破壊されているとき、設定キースイッチ３７がＯＮの状態での起動時でＲＡＭ４１ｃのデータが破壊されていないとき、設定キースイッチ３７がＯＮの状態での起動時でＲＡＭ４１ｃのデータが破壊されているとき、設定変更終了時、特定の遊技状態の終了時、１ゲーム終了時の６つからなる初期化条件が成立した際に、各初期化条件に応じて初期化される領域の異なる４種類の初期化を行う。
【００７４】
初期化０は、設定キースイッチ３７がＯＦＦの状態での起動時でＲＡＭ４１ｃのデータが破壊されているとき、設定キースイッチ３７がＯＮの状態での起動時でＲＡＭ４１ｃのデータが破壊されているときに行う初期化であり、初期化０では、使用可能領域全ての領域が初期化される。初期化１は、設定キースイッチ３７がＯＮの状態での起動時でＲＡＭ４１ｃのデータが破壊されていないときに行う初期化であり、初期化１では、使用可能領域のうち重要ワーク及び特別ワーク以外の領域が初期化される。初期化２は、特定の遊技状態の終了時に行う初期化であり、初期化２では、使用可能領域のうち一般ワーク、未使用領域及び未使用スタック領域が初期化される。初期化３は、１ゲーム終了時に行う初期化であり、初期化３では、使用可能領域のうち、未使用領域及び未使用スタック領域が初期化される。尚、設定値や遊技状態を示すデータの格納領域は、特別ワークに割り当てられており、設定キースイッチ３７がＯＮの状態での起動時でＲＡＭ４１ｃのデータが破壊されていないとき、すなわちＲＡＭ４１ｃのデータが正常で設定変更される場合には、設定値や遊技状態を示すデータが保持されることとなる。また、後述のタイマカウンタの格納領域は、特別ワークに割り当てられており、ゲームの終了時や特定の遊技状態の終了時には初期化されることなく保持されることとなる。
【００７５】
本実施例のスロットマシン１は、遊技状態に応じて設定可能な賭数の規定数が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。尚、本実施例では、遊技状態に応じた規定数の賭数が設定された時点で、入賞ラインＬＮが有効化される。
【００７６】
そして、本実施例では、全てのリール２Ｌ、２Ｃ、２Ｒが停止した際に、有効化された入賞ライン（本実施例の場合、常に全ての入賞ラインが有効化されるため、以下では、有効化された入賞ラインを単に入賞ラインという）上に役と呼ばれる図柄の組合せが揃うと入賞となる。役は、同一図柄の組合せであっても良いし、異なる図柄を含む組合せであっても良い。
【００７７】
入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役と、遊技者にとって有利な遊技状態への移行を伴う特別役と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、後述する内部抽選に当選して、当該役の当選フラグがＲＡＭ４１ｃに設定されている必要がある。尚、これら各役の当選フラグのうち、小役及び再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされ、次のゲームでは無効となるが、特別役の当選フラグは、当該フラグにより許容された役の組合せが揃うまで有効とされ、許容された役の組合せが揃ったゲームにおいて無効となる。すなわち特別役の当選フラグが一度当選すると、例え、当該フラグにより許容された役の組合せを揃えることができなかった場合にも、その当選フラグは無効とされずに、次のゲームへ持ち越されることとなる。
【００７８】
以下、本実施例の内部抽選について説明する。内部抽選は、メイン制御部４１が、上記した各役への入賞を許容するか否かを、全てのリール２Ｌ、２Ｃ、２Ｒの表示結果が導出される以前（具体的には、スタートスイッチ７の検出時）に決定するものである。内部抽選では、まず、スタートスイッチ７の検出時に内部抽選用の乱数値（０〜６５５３５の整数）を取得する。詳しくは、乱数回路５０８ｂにより生成され、乱数回路５０８ｂの乱数値レジスタに格納されている値をＲＡＭ４１ｃに割り当てられた抽選用ワークに設定する。そして、遊技状態に応じて定められた各役について、抽選用ワークに格納された数値データと、現在の遊技状態、賭数及び設定値に応じて定められた各役の判定値数に応じて入賞を許容するか否かの判定が行われる。
【００７９】
内部抽選では、内部抽選の対象となる役、現在の遊技状態及び設定値に対応して定められた判定値数を、内部抽選用の乱数値（抽選用ワークに格納された数値データ）に順次加算し、加算の結果がオーバーフローしたときに、当該役に当選したものと判定される。このため、判定値数の大小に応じた確率（判定値数／６５５３６）で役が当選することとなる。
【００８０】
そして、いずれかの役の当選が判定された場合には、当選が判定された役に対応する当選フラグをＲＡＭ４１ｃに割り当てられた内部当選フラグ格納ワークに設定する。内部当選フラグ格納ワークは、２バイトの格納領域にて構成されており、そのうちの上位バイトが、特別役の当選フラグが設定される特別役格納ワークとして割り当てられ、下位バイトが、一般役の当選フラグが設定される一般役格納ワークとして割り当てられている。詳しくは、特別役が当選した場合には、当該特別役が当選した旨を示す特別役の当選フラグを特別役格納ワークに設定し、一般役格納ワークに設定されている当選フラグをクリアする。また、一般役が当選した場合には、当該一般役が当選した旨を示す一般役の当選フラグを一般役格納ワークに設定する。尚、いずれの役及び役の組合せにも当選しなかった場合には、一般役格納ワークのみクリアする。
【００８１】
次に、リール２Ｌ、２Ｃ、２Ｒの停止制御について説明する。メイン制御部４１は、リールの回転が開始したとき、及びリールが停止し、かつ未だ回転中のリールが残っているときに、ＲＯＭ４１ｂに格納されているテーブルインデックス及びテーブル作成用データを参照して、回転中のリール別に停止制御テーブルを作成する。停止制御テーブルは、停止操作が行われたタイミング別の滑りコマ数を特定可能なデータである。そして、ストップスイッチ８Ｌ、８Ｃ、８Ｒのうち、回転中のリールに対応するいずれかの操作が有効に検出されたときに、該当するリールの停止制御テーブルを参照し、参照した停止制御テーブルの滑りコマ数に基づいて、操作されたストップスイッチ８Ｌ、８Ｃ、８Ｒに対応するリール２Ｌ、２Ｃ、２Ｒの回転を停止させる制御を行う。
【００８２】
本実施例では、滑りコマ数として０〜４の値が定められており、停止操作を検出してから最大４図柄を引き込んでリールを停止させることが可能である。すなわち停止操作を検出した停止操作位置を含め、最大５コマの範囲から図柄の停止位置を指定できるようになっている。また、１図柄分リールを移動させるのに１コマの移動が必要であるので、停止操作を検出してから最大４図柄を引き込んでリールを停止させることが可能であり、停止操作を検出した停止操作位置を含め、最大５図柄の範囲から図柄の停止位置を指定できることとなる。
【００８３】
本実施例では、いずれかの役に当選している場合には、停止操作が行われた際に、入賞ライン上に最大４コマの引込範囲で当選している役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、最大４コマの引込範囲で揃えずに停止させる制御が行われることとなる。特別役が前ゲーム以前から持ち越されている状態で小役が当選した場合など、特別役と小役が同時に当選している場合には、停止操作が行われた際に、入賞ライン上に最大４コマの引込範囲で当選している小役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、入賞ライン上に最大４コマの引込範囲で当選している小役を引き込めない場合には、入賞ライン上に最大４コマの引込範囲で当選している特別役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、４コマの引込範囲で揃えずに停止させる制御が行われることとなる。すなわちこのような場合には、特別役よりも小役を入賞ライン上に揃える制御が優先され、小役を引き込めない場合にのみ、特別役を入賞させることが可能となる。尚、特別役と小役を同時に引き込める場合には、小役のみを引き込み、特別役と同時に小役が入賞ライン上に揃わないようになる。また、特別役と小役が同時に当選している場合に、小役よりも特別役を入賞ライン上に揃える制御が優先され、特別役を引き込めない場合にのみ、小役を入賞ライン上に揃える制御を行っても良い。
【００８４】
また、本実施例では、特別役が前ゲーム以前から持ち越されている状態で再遊技役が当選した場合など、特別役と再遊技役が同時に当選している場合には、停止操作が行われた際に、入賞ライン上に最大４コマの引込範囲で再遊技役の図柄を揃えて停止させる制御を行う。尚、この場合、再遊技役を構成する図柄または同時当選する再遊技役を構成する図柄は、リール２Ｌ、２Ｃ、２Ｒのいずれについても５図柄以内、すなわち４コマ以内の間隔で配置されており、４コマの引込範囲で必ず任意の位置に停止させることができるので、特別役と再遊技役が同時に当選している場合には、遊技者によるストップスイッチ８Ｌ、８Ｃ、８Ｒの操作タイミングに関わらずに、必ず再遊技役が揃って入賞することとなる。すなわちこのような場合には、特別役よりも再遊技役を入賞ライン上に揃える制御が優先され、必ず再遊技役が入賞することとなる。尚、特別役と再遊技役を同時に引き込める場合には、再遊技役のみを引き込み、再遊技役と同時に特別役が入賞ライン上に揃わないようになる。
【００８５】
尚、本実施例では、停止操作が行われたタイミング別の滑りコマ数を特定可能な停止制御テーブルを用いてリールの停止制御を行う構成であるが、停止可能な位置を特定可能な停止位置テーブルから停止位置を特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルや停止位置テーブルを用いずに、停止操作がされたタイミングで停止可能な停止位置を検索・特定し、特定した停止位置にリールを停止させる停止制御を行う構成、停止制御テーブルを用いた停止制御、停止位置テーブルを用いた停止制御、停止制御テーブルや停止位置テーブルを用いずに停止可能な停止位置を検索・特定することによる停止制御を併用する構成、停止制御テーブルや停止位置テーブルを一部変更して停止制御を行う構成としても良い。
【００８６】
本実施例においてメイン制御部４１は、ゲームの開始後、リールの回転を開始させる毎にその時点、すなわちリールの回転を開始させた時点から経過した時間であるゲーム時間を計時するようになっており、１ゲームの終了後、メダルの投入等により規定数の賭数が設定され、ゲームの開始操作が有効となった状態でゲームの開始操作がされたときに、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間（本実施例では４．１秒）以上であれば、すなわち前のゲームのリール回転開始時点から規定時間が経過していれば、ウェイトを発生させず、その時点で当該ゲームにおける遊技のためのリールの回転を開始させる。一方、１ゲームの終了後、メダルの投入等により規定数の賭数が設定され、ゲームの開始操作が有効となった状態でゲームの開始操作がされたときに、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間未満であれば、すなわち前のゲームのリール回転開始時点から規定時間が経過していなければ、ウェイトを発生させて、その時点ではリールの回転を開始させず、前のゲームのリール回転開始時点から計時を開始したゲーム時間が規定時間に到達するまで待機し、規定時間に到達した時点でリールの回転を開始させる。
【００８７】
本実施例においてメイン制御部４１は、遊技状態やエラーの発生状況などを示す外部出力信号を出力する制御を行う。これら外部出力信号は、外部出力基板１０００、スロットマシン１が設置される遊技店（ホール）の情報提供端子板を介してホールコンピュータなどのホール機器に出力されるようになっている。
【００８８】
メイン制御部４１は、賭数の設定に用いられたメダル数を示すメダルＩＮ信号、入賞の発生により遊技者に付与されたメダル数を示すメダルＯＵＴ信号、遊技状態がＲＢ（レギュラーボーナス）中の旨を示すＲＢ中信号、遊技状態がＢＢ（ビッグボーナス）中の旨を示すＢＢ中信号、ＲＴ２中の旨を示すＲＴ中信号、前面扉１ｂが開放中の旨を示すドア開放信号、後述する設定変更モードに移行している旨を示す設定変更信号、メダルセレクタの異常を示す投入エラー信号、ホッパーユニット３４の異常を示す払出エラー信号をそれぞれ出力する。
【００８９】
外部出力基板１０００には、リレー回路、パラレル・シリアル変換回路、出力信号毎の端子が設けられ、情報提供端子板の回路と電気的に接続するための接続されるコネクタが設けられている。遊技制御基板４０から出力された信号のうち、メダルＩＮ信号、メダルＯＵＴ信号、ＲＢ中信号、ＢＢ中信号は、リレー回路を介して、そのままパルス信号として情報提供端子板に出力される。これに対してドア開放信号、設定変更信号、投入エラー信号、払出エラー信号は、パラレル・シリアル変換回路にて、これらの信号を個別に識別可能なシリアル信号であるセキュリティ信号に変換されて情報提供端子板に出力される。
【００９０】
次に、メイン制御部４１がサブ制御部９１に対して送信するコマンドについて説明する。
【００９１】
本実施例では、メイン制御部４１は、サブ制御部９１に対して、投入枚数コマンド、クレジットコマンド、遊技状態コマンド、内部当選コマンド、リール加速情報コマンド、停止操作時コマンド、滑りコマ数コマンド、停止コマンド、遊技終了コマンド、入賞枚数コマンド、払出開始コマンド、払出終了コマンド、待機コマンド、打止コマンド、エラーコマンド、復帰コマンド、設定コマンド、設定確認コマンド、ドアコマンドを含む複数種類のコマンドを送信する。
【００９２】
投入枚数コマンドは、メダルの投入枚数、すなわち賭数の設定に使用されたメダル枚数を特定可能なコマンドであり、ゲーム終了後（設定変更後）からゲーム開始までの状態であり、電断復帰時、または規定数の賭数が設定されていない状態においてメダルが投入されるか、ＭＡＸＢＥＴスイッチ６が操作されて賭数が設定されたときに送信される。また、投入枚数コマンドは、賭数の設定操作がなされたときに送信されるので、投入枚数コマンドを受信することで賭数の設定操作がなされたことを特定可能である。クレジットコマンドは、クレジットとして記憶されているメダル枚数を特定可能なコマンドであり、ゲーム終了後（設定変更後）からゲーム開始までの状態であり、規定数の賭数が設定されている状態において、メダルが投入されてクレジットが加算されたときに送信される。
【００９３】
遊技状態コマンドは、当該ゲームの遊技状態を特定可能なコマンドであり、スタートスイッチ７が操作されてゲームが開始したときに送信される。内部当選コマンドは、内部抽選結果を特定可能なコマンドであり、スタートスイッチ７が操作されてゲームが開始したときであって、遊技状態コマンドの送信後に送信される。遊技状態コマンド、内部当選コマンドは、スタートスイッチ７が操作されてゲームが開始したときに送信されるので、これらコマンドを受信することで、スタートスイッチ７が操作されてゲームが開始したことを特定可能である。
【００９４】
リール加速情報コマンドは、遊技の進行に伴いリールの回転が開始する旨を特定可能なコマンドであり、遊技の進行に伴いリールの回転を開始するときに送信する。停止操作時コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止操作位置の領域番号を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に送信される。滑りコマ数コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止操作がされてから停止するまでに移動する滑りコマ数を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に、対応する停止操作時コマンドが送信された後に送信される。停止コマンドは、停止するリールが左リール、中リール、右リールのいずれのリールであるか、該当するリールの停止位置の領域番号を特定可能なコマンドであり、各リールの停止操作に伴う停止制御が行われる毎に、対応する滑りコマ数コマンドが送信された後に送信される。停止操作時コマンド、滑りコマ数コマンド、停止コマンドは、いずれも停止するリールが左リール、中リール、右リールのいずれのリールであるか、を特定可能であり、かつ各リールの停止操作に伴う停止制御が行われる毎に送信されるので、これらコマンドを受信することで、いずれかのリールの停止操作がされたこと及び停止するリールを特定可能である。
【００９５】
遊技終了コマンドは、遊技が終了された旨を特定可能なコマンドであり、遊技者が第３停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときに送信される。入賞枚数コマンドは、入賞ラインＬＮに揃った図柄の組合せ、入賞の有無、並びに入賞の種類、入賞時のメダルの払出枚数を特定可能なコマンドであり、遊技者が第３停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときであり、遊技終了コマンドの送信後に送信される。遊技終了コマンド、入賞枚数コマンドは、いずれも遊技者が第３停止リールを停止させるためにストップスイッチを押下して、そのストップスイッチを離したときに送信されるので、これらコマンドを受信することで、１ゲームを進行させるのに必要な全ての操作が終了したことを特定可能である。
【００９６】
払出開始コマンドは、メダルの払出開始を通知するコマンドであり、入賞やクレジット（賭数の設定に用いられたメダルを含む）の精算によるメダルの払出が開始されたときに送信される。また、払出終了コマンドは、メダルの払出終了を通知するコマンドであり、入賞及びクレジットの精算によるメダルの払出が終了したときに送信される。
【００９７】
待機コマンドは、待機状態へ移行する旨を示すコマンドであり、１ゲーム終了後、賭数が設定されずに終了推定時間（本実施例では６０秒）経過して待機状態に移行するとき、クレジット（賭数の設定に用いられたメダルを含む）の精算によるメダルの払出が終了し、払出終了コマンドが送信された後に送信される。
【００９８】
打止コマンドは、打止状態の発生または解除を示すコマンドであり、ＢＢ終了後、エンディング演出待ち時間が経過した時点で打止状態の発生を示す打止コマンドが送信され、リセット操作がなされて打止状態が解除された時点で、打止状態の解除を示す打止コマンドが送信される。エラーコマンドは、エラー状態の発生または解除、エラー状態の種類を示すコマンドであり、エラーが判定され、エラー状態に制御された時点でエラー状態の発生及びその種類を示すエラーコマンドが送信され、リセット操作がなされてエラー状態が解除された時点で、エラー状態の解除を示すエラーコマンドが送信される。
【００９９】
復帰コマンドは、メイン制御部４１が電断前の制御状態に復帰した旨を示すコマンドであり、メイン制御部４１の起動時において電断前の制御状態に復帰した際に送信される。設定コマンドは、設定変更状態の開始または終了、設定変更後設定値を示すコマンドであり、設定変更状態に移行する時点で設定変更状態の開始を示す設定コマンドが送信され、設定変更状態の終了時に設定変更状態の終了及び設定変更後の設定値を示す設定コマンドが送信される。また、設定変更状態への移行に伴ってメイン制御部４１の制御状態が初期化されるため、設定開始を示す設定コマンドによりメイン制御部４１の制御状態が初期化されたことを特定可能である。設定確認コマンドは、設定確認状態の開始または終了を示すコマンドであり、設定確認状態に移行する際に設定確認開始を示す設定確認コマンドが送信され、設定確認状態の終了時に設定確認終了を示す設定確認コマンドが送信される。
【０１００】
ドアコマンドは、ドア開放検出スイッチ２５の検出状態、すなわちＯＮ（開放状態）／ＯＦＦ（閉状態）を示すコマンドであり、所定条件成立時（通常時コマンド送信処理の実行時においてコマンドキューが空であるとき）に送信される。
【０１０１】
これらコマンドのうちドアコマンド以外のコマンドは、メイン処理において生成され、ＲＡＭ４１ｃに設けられたコマンドキューに一時格納され、その後のタイマ割込処理（メイン）の通常時コマンド送信処理、電断時コマンド送信処理において送信される。一方、ドアコマンドは、通常時コマンド送信処理においてコマンドキューにいずれのコマンドも格納されてないときに生成され、ＲＡＭ４１ｃに設けられたコマンドキューに一時格納され、当該通常時コマンド送信処理おいて送信される。
【０１０２】
次に、メイン制御部４１がサブ制御部９１に対して送信するコマンドに基づいてサブ制御部９１が実行する演出の制御について説明する。サブ制御部９１は、メイン制御部４１からのコマンドを受信した際に、コマンド受信割込処理を実行する。コマンド受信割込処理では、ＲＡＭ９１ｃに設けられた受信用バッファに、コマンド伝送ラインから取得したコマンドを格納する。
【０１０３】
サブ制御部９１は、タイマ割込処理（サブ）において、受信用バッファに未処理のコマンドが格納されているか否かを判定し、未処理のコマンドが格納されている場合には、そのうち最も早い段階で受信したコマンドに基づいてＲＯＭ９１ｂに格納された制御パターンテーブルを参照し、制御パターンテーブルに登録された制御内容に基づいて液晶表示器５１、演出効果ＬＥＤ５２、スピーカ５３、５４、リールＬＥＤ５５等の各種演出装置の出力制御を行う。制御パターンテーブルには、複数種類の演出パターン毎に、コマンドの種類に対応する液晶表示器５１の表示パターン、演出効果ＬＥＤ５２の点灯態様、スピーカ５３、５４の出力態様、リールＬＥＤ５５の点灯態様等、これら演出装置の制御パターンが登録されており、サブ制御部９１は、コマンドを受信した際に、制御パターンテーブルの当該ゲームにおいてＲＡＭ９１ｃに設定されている演出パターンに対応して登録された制御パターンのうち、受信したコマンドの種類に対応する制御パターンを参照し、当該制御パターンに基づいて演出装置の出力制御を行う。これにより演出パターン及び遊技の進行状況に応じた演出が実行されることとなる。
【０１０４】
尚、サブ制御部９１は、あるコマンドの受信を契機とする演出の実行中に、新たにコマンドを受信した場合には、実行中の制御パターンに基づく演出を中止し、新たに受信したコマンドに対応する制御パターンに基づく演出を実行するようになっている。すなわち演出が最後まで終了していない状態でも、新たにコマンドを受信すると、受信した新たなコマンドが新たな演出の契機となるコマンドではない場合を除いて実行していた演出はキャンセルされて新たなコマンドに基づく演出が実行されることとなる。
【０１０５】
演出パターンは、内部当選コマンドを受信した際に、内部当選コマンドが示す内部抽選の結果に応じた選択率にて選択され、ＲＡＭ９１ｃに設定される。演出パターンの選択率は、ＲＯＭ９１ｂに格納された演出テーブルに登録されており、サブ制御部９１は、内部当選コマンドを受信した際に、内部当選コマンドが示す内部抽選の結果に応じて演出テーブルに登録されている選択率を参照し、その選択率に応じて複数種類の演出パターンからいずれかの演出パターンを選択し、選択した演出パターンを当該ゲームの演出パターンとしてＲＡＭ９１ｃに設定するようになっており、同じコマンドを受信しても内部当選コマンドの受信時に選択された演出パターンによって異なる制御パターンが選択されるため、結果として演出パターンによって異なる演出が行われることがある。
【０１０６】
また、サブ制御部９１は、ドアコマンドから特定されるドア開放検出スイッチ２５の検出状態に基づいて、ドア開放検出スイッチ２５の検出状態がＯＦＦ（閉状態）からＯＮ（開放状態）に変化したか否かを判定し、ＯＦＦ（閉状態）からＯＮ（開放状態）に変化した場合には、前面扉１ｂが開放中である旨を報知するドア開放報知を実行する。
【０１０７】
図５は、メイン制御部４１が用いるメモリ領域のアドレスマップである。図５に示すように、メイン制御部４１が用いるメモリ領域は、ＲＯＭ４１ｂに割り当てられたメモリ領域（００００Ｈ〜７ＦＦＦＨ）と、ＲＡＭ４１ｃに割り当てられたメモリ領域（８０００Ｈ〜ＦＦＦＦＨ）と、を含む。
【０１０８】
ＲＯＭ４１ｂのメモリ領域は、プログラム及び固定データが格納されるプログラム／データ領域（００００Ｈ〜２６ＦＦＨ）と、プログラムのタイトル、バージョン等の任意のデータを設定可能なＲＯＭコメント領域（２７００Ｈ〜２７７ＦＨ）と、後述するＣＡＬＬＶ命令のサブルーチンの上位アドレス及びタイマ割込処理（メイン）の先頭アドレスが設定されるベクタテーブル領域（２７８０Ｈ〜２７Ａ７Ｈ）と、メイン制御部４１の内部機能をハードウェア的に設定するためのパラメータが設定されるＨＷパラメータ領域（２７Ａ８Ｈ〜２７ＦＦＨ）と、アクセスが禁止される未使用領域（２８００Ｈ〜７ＦＦＦＨ）を含む。
【０１０９】
ＲＡＭ４１ｃのメモリ領域は、ワークとして使用可能な使用可能領域（８０００Ｈ〜８１ＦＦＨ）と、メイン制御部４１に搭載されている各機能を制御するためのレジスタ群が格納される内部機能レジスタ領域（９０００Ｈ〜９０８０Ｈ）と、アクセスが禁止される未使用領域（８２００Ｈ〜８ＦＦＦＨ、９０８１Ｈ〜ＦＦＦＦＨ）と、を含む。
【０１１０】
ＲＯＭ４１ｂにおけるＨＷパラメータ領域に設定されるパラメータは、プログラム／データ領域で使用するＲＯＭ領域の最終アドレス（ＨＰＲＧＥＮＤ）、アクセス禁止するＲＡＭ領域の開始アドレス（ＨＲＡＭＳＴＡＴ）及び最終アドレス（ＨＲＡＭＥＮＤ）を含む。
【０１１１】
図６は、メイン制御部４１のＲＯＭ４１ｂにおけるプログラム／データ領域及びＲＡＭ４１ｃにおける使用可能領域のアドレスマップである。
【０１１２】
図６（ａ）に示すように、ＲＯＭ４１ｂにおけるプログラム／データ領域は、遊技の進行に係わる遊技プログラムが記憶される遊技プログラム領域と、遊技プログラムが用いる遊技データが記憶される遊技データ領域と、未使用領域１と、遊技の進行に係わらない非遊技プログラムが記憶される非遊技プログラム領域と、非遊技プログラムが用いる非遊技データが記憶される非遊技データ領域と、未使用領域２と、を含む。
【０１１３】
尚、遊技の進行とは、遊技を構成する一連のプロセスを進行させることであり、スロットマシンであれば、賭数を設定してゲームを開始可能とする段階、ゲームを開始してリールを回転させる段階、リールを停止させて表示結果を導出させる段階、表示結果に応じてメダル等の価値を付与する段階を進行させることである。
【０１１４】
遊技プログラム領域は００００Ｈ〜０９７ＥＨに割り当てられ、遊技データ領域は０９７ＦＨ〜１２ＦＦＨに割り当てられ、非遊技プログラム領域は１３８０Ｈ〜１Ｄ０２Ｈに割り当てられ、非遊技データ領域は１Ｄ０３Ｈ〜２６７ＤＨに割り当てられている。また、遊技データ領域と非遊技プログラム領域との間の領域（１３５７Ｈ〜１３７ＦＨ）は未使用領域１とされ、ＲＯＭ４１ｂにおけるプログラム／データ領域のうち非遊技データ領域より後の領域（２６７ＥＨ〜２６ＦＦＨ）は未使用領域２とされており、未使用領域１、２には全ての領域に０が格納されている。
【０１１５】
このように遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、がそれぞれ別個に割り当てられているとともに、遊技プログラム領域及び非プログラム領域のうちＲＯＭ４１ｂの記憶領域において後方に割り当てられていた非プログラム領域の手前の領域は、少なくとも１６バイト以上の未使用領域１が割り当てられているため、遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
【０１１６】
また、遊技プログラム領域と遊技データ領域、非遊技プログラム領域と非遊技データ領域はそれぞれ連続する領域に割り当てられる一方、遊技の進行に係わる遊技プログラム領域及び遊技データ領域と、遊技の進行に係わらない非遊技プログラム及び非遊技データ領域と、が少なくとも１６バイト以上の未使用領域１を挟んで連続しない領域に割り当てられているため、遊技の進行に係わる遊技プログラム領域及び遊技データ領域と、遊技の進行に係わらない非遊技プログラム及び非遊技データ領域と、を記憶領域の違いに応じて容易に特定することができる。
【０１１７】
尚、上記において記憶領域の前後とは、記憶領域に割り当てられたアドレス値の大小関係であり、アドレスが小さい方が前方となり、アドレスが大きい方が後方となる。このため、一の記憶領域よりも後方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が大きい記憶領域が該当し、一の記憶領域よりも前方に割り当てられた記憶領域とは、一の記憶領域よりもアドレス値が小さい記憶領域が該当する。
【０１１８】
また、非遊技プログラム領域よりも後方に遊技プログラムが割り当てられ、非遊技プログラム領域よりも後方に割り当てられた遊技プログラムの手前に未使用領域が割り当てられた構成としても良く、このような構成においても遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
【０１１９】
また、遊技プログラム領域と、非遊技プログラム領域と、が未使用領域１を挟んで隣接する領域に割り当てる構成としても良く、このような構成であっても、遊技の進行に係わる遊技プログラム領域と、遊技の進行に係わらない非遊技プログラムと、を記憶領域の違いに応じて容易に特定することができる。
【０１２０】
また、ＲＯＭ４１ｂのプログラム／データ領域の未使用領域１、２には、全ての領域に０値が格納されているため、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データと、未使用領域１、２と、を容易に区別することができるとともに、未使用領域１、２に不正なデータが格納されている場合でも容易に発見することができる。
【０１２１】
尚、ＲＯＭ４１ｂのプログラム／データ領域の未使用領域１、２における全ての領域に１が格納される構成としても良く、このような構成とした場合でも、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データと、未使用領域１、２と、を容易に区別することができるとともに、未使用領域１、２に不正なデータが格納されている場合でも容易に発見することができる。
【０１２２】
また、遊技プログラム領域及び非遊技プログラム領域はいずれも、アドレスを２進数表記した場合に下位４桁の値が同じ０のアドレス（０Ｈ）から開始するようになっており、ＲＯＭ４１ｂのプログラム／データ領域のうち遊技の進行に係る遊技プログラム領域と、遊技の進行に係わらない非遊技プログラム領域と、を他の領域と容易に区別することができる。
【０１２３】
また、遊技プログラム領域及び非遊技プログラム領域はいずれも、アドレスを２進数表記した場合に下位４桁の値が同じ０のアドレスから開始するだけでなく、１６進数表記した場合に下位１桁の値が同じ０のアドレス（０Ｈ）から開始するので、アドレスを２進数表記した場合だけでなく、１６進数表記した場合にも遊技プログラム領域と、非遊技プログラム領域と、を他の領域と容易に区別することができる。
【０１２４】
尚、遊技プログラム領域及び非遊技プログラム領域がいずれも、アドレスを２進数表記したか、１６進数表記したか、に関わらず、下位Ｎ（Ｎは１以上の自然数）桁が同じ値のアドレスから開始する構成であれば、遊技プログラム領域と、非遊技プログラム領域と、を他の領域と容易に区別することが可能であり、例えば、下位Ｎ（Ｎは１以上の自然数）桁の値が同じ１のアドレスから開始する構成でも同様の効果が得られるものである。
【０１２５】
図６（ｂ）に示すように、ＲＡＭ４１ｃの使用可能領域は、遊技プログラムがワークとして用いる遊技ＲＡＭ領域と、未使用領域３と、非遊技プログラムがワークとして用いる非遊技ＲＡＭ領域と、未使用領域４と、スタック領域と、を含む。尚、本実施例では、遊技プログラム及び非遊技プログラムが一のスタック領域を共用する構成であるが、遊技プログラムがデータを退避する遊技スタック領域と、非遊技プログラムがデータを退避する非遊技スタック領域と、を個別に備える構成としても良い。
【０１２６】
遊技ＲＡＭ領域は８０００Ｈ〜８０５ＢＨに割り当てられ、非遊技ＲＡＭ領域は８０７０Ｈ〜８１４ＣＨに割り当てられ、スタック領域は８１７０Ｈ〜８１ＦＦＨに割り当てられている。また、遊技ＲＡＭ領域と非遊技ＲＡＭ領域の間の領域（８０５ＣＨ〜８０６ＦＨ）、非遊技ＲＡＭ領域とスタック領域の間の領域（８１４ＤＨ〜８１６ＦＨ）は、それぞれ未使用領域３、４とされ、未使用領域３、４には全ての領域に０が格納される。また、スタック領域のうちスタックポインタ（ＳＰ）〜８１ＦＦＨまでが使用中スタック領域となり、それ以外の８１６ＦＨ〜ＳＰまでは未使用スタック領域となる。このように遊技プログラムがワークとして用いる遊技ＲＡＭ領域と、非遊技プログラムがワークとして用いる非遊技ＲＡＭ領域と、は少なくとも１６バイト以上の未使用領域３を挟んで連続しない領域に割り当てられている。
【０１２７】
このように遊技ＲＡＭ領域と、非遊技ＲＡＭ領域と、は少なくとも１６バイト以上の未使用領域３を挟んで連続しない領域に割り当てられているため、遊技の進行に係わる遊技プログラムが用いる遊技ＲＡＭ領域と、遊技の進行に係わらない非遊技プログラムが用いる非遊技ＲＡＭ領域と、を記憶領域の違いに応じて容易に特定することができる。
【０１２８】
以下では、遊技プログラム領域、遊技データ領域及び遊技ＲＡＭ領域をまとめて遊技領域と称す場合があり、非遊技プログラム領域、非遊技データ領域及び非遊技ＲＡＭ領域をまとめて非遊技領域と称す場合がある。また、未使用領域１及び未使用領域２、未使用領域３及び未使用領域４をまとめて未使用領域と称す場合がある。
【０１２９】
メイン制御部４１は、ＨＷパラメータ領域に設定されるパラメータに基づいて、ＲＯＭ４１ｂのプログラム／データ領域のうち先頭アドレス（００００Ｈ）からＨＰＲＧＥＮＤに設定されたアドレス（２６７ＤＨ）までの領域（遊技プログラム領域、遊技データ領域、未使用領域１、非遊技プログラム領域、非遊技データ領域）へのアクセスを許可に一括設定し、ＨＰＲＧＥＮＤに設定されたアドレス（２６７ＤＨ）より後のアドレス（２６７ＥＨ）から２６ＦＦＨの間の領域（未使用領域２）へのアクセスを禁止に設定する。また、ＨＷパラメータ領域に設定されるパラメータに基づいて、ＲＡＭ４１ｃの使用可能領域のうち先頭アドレス（８０００Ｈ）からＨＲＡＭＳＴＡＴに設定されたアドレス（８１４ＤＨ）の前までの領域（遊技ＲＡＭ領域、未使用領域３、非遊技ＲＡＭ領域）、ＨＲＡＭＥＮＤに設定されたアドレス（８１６ＦＨ）より後のアドレス（８１７０Ｈ）から８１ＦＦＨまでの領域（スタック領域）へのアクセスを許可に設定し、ＨＲＡＭＳＴＡＴに設定されたアドレス（８１４ＤＨ）からＨＲＡＭＥＮＤに設定されたアドレス（８１６ＦＨ）の間の領域（未使用領域４）へのアクセスを禁止に設定する。尚、ＲＯＭ４１ｂのうちプログラム／データ領域以外の領域へのアクセス、ＲＡＭ４１ｃのうち使用可能領域以外の領域へのアクセスについては一律に禁止に設定する。
【０１３０】
そして、メイン制御部４１は、ＲＯＭ４１ｂのプログラム／データ領域のうちＨＰＲＧＥＮＤに設定されたアドレス（２６７ＥＨ）より後のアドレス（２６７ＦＨ）から２６ＦＦＨの間の未使用領域２へアクセスがあったとき、ＲＯＭ４１ｂのうちプログラム／データ領域以外の領域へのアクセスがあったとき、ＲＡＭ４１ｃの使用可能領域のうちＨＲＡＭＳＴＡＴに設定されたアドレス（８１４ＤＨ）からＨＲＡＭＥＮＤに設定されたアドレス（８１６ＦＨ）の間の未使用領域４へのアクセスがあったとき、ＲＡＭ４１ｃのうち使用可能領域以外の領域へのアクセスがあったときに、不正アクセスと判断してイリーガルアクセスリセットを発生させる。イリーガルアクセスリセットが発生すると、後述する特殊エラー状態に制御され、遊技の進行が不能化されるとともに、設定変更状態に移行し、新たに設定値が設定されるまで解除されないようになっている。
【０１３１】
このようにメイン制御部４１は、ＨＷパラメータ領域に設定されるパラメータに基づいて、ＲＯＭ４１ｂのプログラム／データ領域のうちアクセスが禁止された領域へのアクセスがあったとき、ＲＡＭ４１ｃの使用可能領域のうちアクセスが許可に設定されていない領域へのアクセスがあったとき、ＲＯＭ４１ｂのうちプログラム／データ領域以外の領域へのアクセスがあったとき、ＲＡＭ４１ｃのうち使用可能領域以外の領域へのアクセスがあったときに、すなわち正常な動作ではアクセスすることのないメモリ領域へのアクセスがあったときにイリーガルアクセスリセットを発生させることで、遊技の進行を不能化させるので、ＲＯＭ４１ｂの未使用領域や動作とは関係しない領域、ＲＡＭ４１ｃの未使用領域等に不正なプログラムが格納された場合であっても、不正なプログラムが実行されてしまうことを防止できる。
【０１３２】
特に本実施例では、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域１が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域の先頭アドレスから非遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域（遊技プログラム領域から非遊技データ領域までの領域）へのアクセスを一括して許可に設定する一方で、それ以外の領域、すなわちプログラム／データ領域のうち遊技プログラムや遊技データ、非遊技プログラム、非遊技データが格納されていない非遊技データよりも後の領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１３３】
また、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち非遊技プログラム領域の先頭アドレスから遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域へのアクセスを一括して許可に設定する一方で、それ以外の領域へのアクセスが禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１３４】
尚、本実施例では、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域の先頭アドレスから非遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域（遊技プログラム領域から非遊技データ領域までの領域）へのアクセスを一括して許可に設定する構成であるが、プログラム／データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域１が割り当てられるとともに、プログラム／データ領域のうち遊技プログラム領域を含む一かたまりの領域（遊技プログラム領域から遊技データ領域までの領域）、非遊技プログラムを含む一かたまりの領域（非遊技プログラム領域から非遊技データ領域までの領域）へのアクセスをそれぞれ許可に設定し、他の領域へのアクセスを禁止する構成としても良く、このような構成とした場合でも、プログラム／データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。また、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、プログラム／データ領域のうち遊技プログラム領域を含む一かたまりの領域（遊技プログラム領域から遊技データ領域までの領域）、非遊技プログラムを含む一かたまりの領域（非遊技プログラム領域から非遊技データ領域までの領域）へのアクセスをそれぞれ許可に設定し、他の領域へのアクセスを禁止する構成としても良く、このような構成とした場合でも、プログラム／データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域へのアクセスが禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１３５】
また、上記では、プログラム／データ領域においてアクセスを許可する領域そのものを設定する構成であるが、プログラム／データ領域においてアクセスを禁止する領域を設定することで、間接的にアクセスを許可する領域が設定される構成としても良い。
【０１３６】
メイン制御部４１は、ＨＷパラメータ領域に設定されるパラメータに基づいて、ＲＯＭ４１ｂのプログラム／データ領域のうちＩＡＴＳＴＡＴ１に設定されたアドレス（００００Ｈ）からＩＡＴＥＮＤ１に設定されたアドレス（０９７ＥＨ）までの領域（遊技プログラム領域）、ＩＡＴＳＴＡＴ２に設定されたアドレス（１３８０Ｈ）からＩＡＴＥＮＤ２に設定されたアドレス（１Ｄ０２Ｈ）までの領域（非遊技プログラム領域）を、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして設定する。
【０１３７】
そして、ＩＡＴ回路５０６ａは、ＩＡＴＳＴＡＴ１に設定されたアドレス（００００Ｈ）からＩＡＴＥＮＤ１に設定されたアドレス（０９７ＥＨ）までの領域（遊技プログラム領域）、ＩＡＴＳＴＡＴ２に設定されたアドレス（１３８０Ｈ）からＩＡＴＥＮＤ２に設定されたアドレス（１Ｄ０２Ｈ）までの領域（非遊技プログラム領域）、すなわちプログラム走行を許可する指定エリア以外の領域（ＲＯＭ４１ｂのプログラム／データ領域のうちの遊技データ領域、非遊技データ領域、未使用領域１、２、ＲＯＭ４１ｂのプログラム／データ領域以外の領域）においてユーザプログラムが実行された場合に、ＩＡＴ発生信号を出力するようになっている。そして、ＣＰＵ４１ａは、ＩＡＴ発生信号が出力された場合に、後述する特殊エラー状態に制御され、遊技の進行が不能化されるとともに、設定変更状態に移行し、新たに設定値が設定されるまで解除されないようになっている。
【０１３８】
このようにメイン制御部４１は、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム走行を許可する指定エリア以外の領域においてユーザプログラムが実行された場合、すなわち正常な動作ではユーザプログラムが実行されることのない領域でユーザプログラムが実行された場合に、ＩＡＴ回路５０６ａがＩＡＴ発生信号を出力することで、遊技の進行を不能化させるので、ＲＯＭ４１ｂの未使用領域や動作とは関係しない領域、ＲＡＭ４１ｃの未使用領域等に不正なプログラムが格納された場合であっても、不正なプログラムが実行されてしまうことを防止できる。
【０１３９】
特に本実施例では、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域１が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域、非遊技プログラム領域の各々について、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして設定する一方で、それ以外の領域、すなわちプログラム／データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域でのプログラム走行が禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１４０】
また、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域、非遊技プログラム領域の各々について、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして設定する一方で、それ以外の領域でのプログラム走行が禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１４１】
尚、本実施例では、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域、非遊技プログラム領域の各々について、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして設定する構成であるが、プログラム／データ領域に遊技プログラム領域と、非遊技プログラム領域と、が割り当てられ、遊技プログラム領域よりも後方の非遊技プログラム領域の手前の領域に未使用領域１が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち遊技プログラム領域の先頭アドレスから非遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域（遊技プログラム領域から非遊技データ領域までの領域）について、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして一括して設定し、他の領域でのプログラム走行が禁止される構成としても良く、このような構成とした場合でも、プログラム／データ領域のうち遊技プログラムや非遊技プログラムが格納されていない領域でのプログラム走行が禁止されるため、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。また、ＲＯＭ４１ｂのうちプログラムによってアクセスが許可されたプログラム／データ領域において非遊技プログラム領域よりも後方に遊技領域が割り当てられ、非遊技プログラム領域よりも後方の遊技プログラム領域の手前の領域に未使用領域が割り当てられるとともに、ＨＷパラメータ領域に設定されるパラメータに基づいて、プログラム／データ領域のうち非遊技プログラム領域の先頭アドレスから遊技プログラムの最終アドレスまでの領域を含む一かたまりの領域（遊技プログラム領域から非遊技データ領域までの領域）について、ＩＡＴ回路５０６ａがプログラム走行を許可する指定エリアとして一括して設定し、他の領域でのプログラム走行が禁止されるようにしても、不正プログラムや不正データによる意図しない制御が行われてしまうことを防止できる。
【０１４２】
また、上記では、プログラム／データ領域においてプログラム走行を許可する領域そのものを設定する構成であるが、プログラム／データ領域においてプログラム走行を禁止する領域を設定することで、間接的にプログラム走行を許可する領域が設定される構成としても良い。
【０１４３】
メイン制御部４１が実行するプログラムは、プログラム全体の進行を管理するメインルーチンと、他のプログラムの実行中に呼び出されるサブルーチンと、を含む。
【０１４４】
また、メイン制御部４１にプログラム／データ領域に格納されたプログラムを実行させる命令として、ＣＡＬＬ命令、ＲＳＴ命令、ジャンプ命令を含む。
【０１４５】
ＣＡＬＬ命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたサブルーチンを呼び出して実行させる命令である。メイン制御部４１は、ＣＡＬＬ命令によりサブルーチンを呼び出す場合には、呼び出し元のアドレスをスタック領域に格納し、指定されたアドレスに格納されたサブルーチンを呼び出して実行する。そして、当該サブルーチンの終了後、スタック領域に格納されている呼び出し元のアドレス、すなわちＣＡＬＬ命令を実行した呼び出し元のメインルーチンまたはサブルーチンに復帰する。
【０１４６】
また、ＣＡＬＬ命令は、通常のＣＡＬＬ命令と、特殊なＣＡＬＬ命令であるＣＡＬＬＶ命令と、を含む。通常のＣＡＬＬ命令は、上位アドレス及び下位アドレスの双方を指定して指定された上位アドレス及び下位アドレスによりアドレスを特定してサブルーチンを呼び出す命令であるのに対して、ＣＡＬＬＶ命令は、下位アドレスのみ指定することで、ＲＯＭ４１ｂのベクタテーブル領域に予め設定された上位アドレス及び指定された下位アドレスによりアドレスを特定してサブルーチンを呼び出す命令であり、通常のＣＡＬＬ命令に比較して少ないデータ量でサブルーチンを呼び出すことが可能となる。
【０１４７】
ＲＳＴ命令は、予め定められた複数の特定アドレスに対応する値を指定することで、指定された値に対応する特定アドレスに格納されたサブルーチンを呼び出して実行させる命令であり、上記した通常のＣＡＬＬ命令やＣＡＬＬＶ命令に比較して少ないデータ量でサブルーチンを呼び出すことが可能となる。メイン制御部４１は、ＲＳＴ命令によりサブルーチンを呼び出す場合には、呼び出し元のアドレスをスタック領域に格納し、指定された値に対応する特定アドレスに格納されたサブルーチンを呼び出して実行する。そして、当該サブルーチンの終了後、スタック領域に格納されている呼び出し元のアドレス、すなわちＲＳＴ命令を実行した呼び出し元のメインルーチンまたはサブルーチンに復帰する。
【０１４８】
ジャンプ命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたプログラムに移動する命令である。メイン制御部４１は、ジャンプ命令により指定されたアドレスに格納されたプログラムに移動し、移動先のプログラムを実行する。この場合には、ＣＡＬＬ命令やＲＳＴ命令と異なり、移動後のプログラムが終了しても移動元のプログラムに復帰することはない。
【０１４９】
また、メイン制御部４１にプログラム／データ領域に格納されたデータを読み出す命令としてＬＤ命令を含む。ＬＤ命令は、メインルーチンまたはサブルーチンにおいて指定されたアドレスに格納されたデータを指定されたレジスタに読み出す命令である。メイン制御部４１は、ＬＤ命令により指定されたアドレスに格納されたデータを読み出し、ＬＤ命令により指定されたレジスタに読み出したデータを格納する。
【０１５０】
ＲＯＭ４１ｂに格納された遊技プログラムのうち特に使用頻度の高いサブルーチンは、ＲＯＭ４１ｂの遊技プログラム領域のうち先頭アドレスが特定値（例えば００Ｈ）となる領域に格納されている。一方、ＲＯＭ４１ｂのベクタテーブル領域には、ＣＡＬＬＶ命令で呼び出すサブルーチンの上位アドレスとして特定値が設定されている。そして、メイン制御部４１は、先頭アドレスの上位アドレスが特定値となるサブルーチンを呼び出すときに、ＣＡＬＬＶ命令を用いて下位アドレスのみ指定することで、上位アドレスとしてベクタテーブル領域に設定された特定値を特定し、下位アドレスとして指定された下位アドレスを特定し、上位及び下位を合わせたアドレスに格納されたサブルーチンを呼び出して実行する。このため、遊技プログラムのうち特に使用頻度の高いサブルーチンを呼び出す際に用いるアドレスの一部を構成する上位アドレスが特定値として予めベクタテーブルに設定されており、ベクタテーブルに設定された特定値に基づいてアドレスが特定されるため、上位アドレス及び下位アドレスの双方を指定してプログラムを呼び出す通常のＣＡＬＬ命令に比較して少ないデータ量にてサブルーチンを呼び出すことが可能となり、これらのサブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５１】
尚、ＲＯＭ４１ｂに格納された非遊技プログラムのうち特に使用頻度の高いサブルーチンを、ＲＯＭ４１ｂの非遊技プログラム領域のうち先頭アドレスが特定値となる領域に格納するとともに、ＲＯＭ４１ｂのベクタテーブル領域に、ＣＡＬＬＶ命令で呼び出すサブルーチンの上位アドレスとして特定値を設定し、メイン制御部４１が先頭アドレスの上位アドレスが特定値となるサブルーチンを呼び出すときに、ＣＡＬＬＶ命令を用いて下位アドレスのみ指定することで、これらのサブルーチンを呼び出して実行する構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してプログラムを呼び出す通常のＣＡＬＬ命令に比較して少ないデータ量にてサブルーチンを呼び出すことが可能となり、これらのサブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５２】
また、ＣＡＬＬＶ命令で呼び出す際に用いる上位アドレスを、ベクタテーブル領域ではなく、メイン制御部４１の特定のレジスタに設定する構成としても良い。
【０１５３】
また、ＣＡＬＬＶ命令に限らず、アドレスの一部が、ベクタテーブル領域に格納された値、特定のレジスタに設定された値等を用いて特定され、アドレスの残りの部分を指定することで、サブルーチンの格納アドレスが特定可能となる特殊なＣＡＬＬ命令を用いる構成であれば、サブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。また、ベクタテーブル領域を構成する複数の領域に、それぞれアドレスよりもデータ量の小さい識別値を割り当て、これら複数の領域にそれぞれサブルーチンの格納アドレスを設定するとともに、識別値を指定することで、識別値に対応する領域に格納されたサブルーチンの格納アドレスを特定可能となる特殊なＣＡＬＬ命令を用いる構成であっても、サブルーチンを呼び出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５４】
また、ＲＯＭ４１ｂに格納された遊技データのうち特に使用頻度の高い遊技データを、ＲＯＭ４１ｂの遊技データ領域のうち先頭アドレスが特定値となる領域に格納するとともに、ＲＯＭ４１ｂのベクタテーブル領域に、特殊なＬＤ命令で読み出すデータの上位アドレスとして特定値を設定し、メイン制御部４１が先頭アドレスの上位アドレスが特定値となる遊技データを呼び出すときに、特殊なＬＤ命令を用いて下位アドレスのみ指定することで、これらの遊技データを読み出す構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してデータを読み出す通常のＬＤ命令に比較して少ないデータ量にて遊技データを呼び出すことが可能となり、これらの遊技データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５５】
また、ＲＯＭ４１ｂに格納された非遊技データのうち特に使用頻度の高い非遊技データを、ＲＯＭ４１ｂの非遊技データ領域のうち先頭アドレスが特定値となる領域に格納するとともに、ＲＯＭ４１ｂのベクタテーブル領域に、特殊なＬＤ命令で読み出すデータの上位アドレスとして特定値を設定し、メイン制御部４１が先頭アドレスの上位アドレスが特定値となる非遊技データを呼び出すときに、特殊なＬＤ命令を用いて下位アドレスのみ指定することで、これらの非遊技データを読み出す構成とした場合でも、上位アドレス及び下位アドレスの双方を指定してデータを読み出す通常のＬＤ命令に比較して少ないデータ量にて非遊技データを呼び出すことが可能となり、これらの非遊技データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５６】
また、これらの場合でも特殊なＬＤ命令で呼び出す際に用いる上位アドレスを、ベクタテーブル領域ではなく、メイン制御部４１の特定のレジスタに設定する構成としても良い。
【０１５７】
また、アドレスの一部が、ベクタテーブル領域に格納された値、特定のレジスタに設定された値等を用いて特定され、アドレスの残りの部分を指定することで、データの格納アドレスが特定可能となる特殊なＬＤ命令を用いる構成であれば、データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。また、ベクタテーブル領域を構成する複数の領域に、それぞれアドレスよりもデータ量の小さい識別値を割り当て、これら複数の領域にそれぞれデータの格納アドレスを設定するとともに、識別値を指定することで、識別値に対応する領域に格納されたデータの格納アドレスを特定可能となる特殊なＬＤ命令を用いる構成であっても、データを読み出す際にアドレスを指定するためのプログラムの無駄を削減することができる。
【０１５８】
また、メイン制御部４１は、システムリセット信号の入力によるシステムリセット、ＷＤＴ５０６ｂによるＷＤＴリセット、前述のイリーガルアクセスリセットが発生することで起動することとなるが、この際、ベクタテーブル領域に設定された値が、００００Ｈ〜ＨＰＲＧＥＮＤに設定されたアドレスの領域、すなわちプログラム領域のうちプログラム等が実際に格納された領域を示す値であるか、またはＦＦＦＦＨ（未使用のベクタテーブル領域に設定される値）であるか、を判定し、ベクタテーブル領域に設定された値が００００Ｈ〜ＨＰＲＧＥＮＤに設定されたアドレスの領域を示す値でもなく、ＦＦＦＦＨでもない場合には、起動しないようになっている。
【０１５９】
このようにメイン制御部４１は、ベクタテーブル領域に設定された値、すなわち後述するＣＡＬＬＶ命令のサブルーチンの上位アドレス及びタイマ割込処理（メイン）の先頭アドレスが、プログラムが設定される領域外を示す値である場合に起動しないことで、割込の発生等により本来意図していない処理が実行されてしまうことを事前に防止できる。
【０１６０】
図７は、メイン制御部４１のＲＯＭ４１ｂのプログラム／データ領域における遊技プログラム領域のアドレスマップである。
【０１６１】
図７に示すように、ＲＯＭ４１ｂの遊技プログラム領域は、アドレスが００００Ｈ〜０９７ＥＨの領域であり、当領域内の００００Ｈ〜００３ＦＨまでの領域（以下、特定アドレス領域という場合がある。）には、アドレスの下位１桁が特定値（８Ｈまたは０Ｈ）となる８バイト毎のアドレス（０００８Ｈ、００１０Ｈ、００１８Ｈ、００２０Ｈ、００２８Ｈ、００３０Ｈ、００３８Ｈ）が特定アドレスとして割り当てられている。
【０１６２】
遊技プログラム領域には、遊技の進行に係わる遊技プログラムとして、例えば、初期設定処理、外部信号オフ時間待ち処理、最大投入メダル数セット処理、出力ポート２出力処理、設定値表示データ取得処理、加算処理、全リール停止ＬＥＤオフ処理、割込１回待ち処理、割込ＢＣ回待ち処理、ホッパー停止処理、ポート出力処理、遊技状態判定処理、遊技カウンタ送信処理、コマンド格納処理などのサブルーチンが格納されている。
【０１６３】
初期設定処理は、電断からの復帰時にメイン制御部４１の制御状態を遊技の進行が可能な状態に復帰させる処理であり、外部信号オフ時間待ち処理は、外部出力信号の出力時にＯＮ状態からＯＦＦ状態に切り替えるまでの時間が経過するまで待機する処理であり、最大投入メダル数セット処理は、遊技に用いるメダルの最大投入数（本実施例では、３枚）を設定する処理であり、出力ポート２出力処理は、遊技の進行状況に応じて流路切替ソレノイド３０の励磁状態を示す信号を出力ポートから出力させる処理であり、設定値表示データ取得処理は、設定値表示器２４に設定値を表示させるための表示データを取得する処理であり、加算処理は、指定のパラメータに所定値を加算し、加算後の値に基づくアドレスのデータを取得する処理であり、全リール停止ＬＥＤオフ処理は、左中右停止有効ＬＥＤ２２Ｌ、２２Ｃ、２２Ｒを消灯状態にするようにポート出力を設定する処理であり、割込１回待ち処理は、割込処理が１回行われるまで待機する処理であり、割込ＢＣ回待ち処理は、指定した回数の割込処理が行われるまで待機する処理であり、ホッパー停止処理は、ホッパーモータ３４ｂをオフ状態とするようにポート出力を設定する処理であり、ポート出力処理は、各処理で行われたポート出力の設定に基づいて信号を出力する処理であり、遊技状態判定処理は、遊技の状態を取得して、遊技状態を示すフラグをＲＡＭ４１ｃに設定する処理であり、遊技カウンタ送信処理は、遊技カウンタの値をコマンドとして送信するように設定する処理であり、コマンド格納処理は、コマンドキューにコマンドを格納する処理である。
【０１６４】
ＲＯＭ４１ｂに格納された遊技プログラムのうち上述した特に使用頻度の高いサブルーチンのうちの一部は、ＲＯＭ４１ｂの遊技プログラム領域のうち前述の特定アドレスを先頭とする領域に格納されている。本実施例では、遊技プログラムのうち外部信号オフ時間待ち処理、出力ポート２出力処理、加算処理、割込１回待ち処理、割込ＢＣ回待ち処理、ポート出力処理、遊技状態判定処理が、複数の特定アドレスのうち一の特定アドレスを先頭にしてＲＯＭ４１ｂに格納されている。
【０１６５】
具体的には、外部信号オフ時間待ち処理は、特定アドレス０００８Ｈを先頭とし、出力ポート２出力処理は、特定アドレス００１０Ｈを先頭とし、加算処理は、特定アドレス００１８Ｈを先頭とし、割込１回待ち処理は、特定アドレス００２０Ｈを先頭とし、割込ＢＣ回待ち処理は、特定アドレス００２８Ｈを先頭とし、ポート出力処理は、特定アドレス００３０Ｈを先頭とし、遊技状態判定処理は、特定アドレス００３８Ｈを先頭として、特定アドレス領域に格納されている。
【０１６６】
特定アドレス領域において、一の特定アドレスから次の特定アドレスの手前までの領域は、８バイトであり、８バイトを超えるサブルーチンが特定アドレスを先頭として格納される場合には、当該サブルーチンが複数の領域に分割して格納される。本実施例では、特定アドレスに格納されるサブルーチンのうちポート出力処理は、８バイトを超えるデータ量で構成され、当該サブルーチンの初めの８バイト部分は、特定アドレス（００３０Ｈ）を先頭して次の特定アドレス（００３８Ｈ）の手前までの領域（００３０Ｈ〜００３７Ｈ）に格納される一方で、８バイトを超える部分は、遊技プログラム領域における特定アドレス領域以外の領域（０２８９Ｈを先頭とする領域）に格納される。また、ポート出力処理の初めの８バイト部分は、指定するアドレスに移動して、当該アドレスに格納されているプログラムを実行するジャンプ命令を含んでおり、特定アドレスを先頭とする初めの８バイト部分が実行されることで、特定アドレス領域外に格納されている８バイトを超える部分も一体的に実行されるようになっている。尚、ジャンプ命令は、２バイトのアドレスを指定することで、指定されたアドレスに記憶されているプログラムを呼び出して実行する命令である。
【０１６７】
このように、８バイトを超えるデータ量のサブルーチンを最初の８バイト部分とそれ以降の後段部分とに分割して、最初の８バイト部分を特定アドレスを先頭とする領域に格納し、後段部分を特定アドレス領域外に格納するとともに、最初の８バイト部分に後段部分へ移動するジャンプ命令を備えることで、８バイトを超えるデータ量のサブルーチンであっても、複数の特定アドレスに渡ることなく、特定アドレスを先頭とする領域に格納可能となっている。
【０１６８】
本実施例では、特定アドレス領域において、８バイト未満のサブルーチンが特定アドレスを先頭として格納される場合には、特定アドレスに格納されるサブルーチンの後から次の特定アドレスの手前までの領域に、他のサブルーチンが格納される。
【０１６９】
具体的には、外部信号オフ時間待ち処理の後（０００ＤＨ）から次の特定アドレスの手前（０００ＦＨ）までの３バイトの領域、すなわち外部信号オフ時間待ち処理と出力ポート２出力処理との間の領域には、３バイトのデータ量で構成される最大投入メダル数セット処理が格納されており、外部信号オフ時間待ち処理が格納される特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータが格納されるようになっている。
【０１７０】
また、出力ポート２出力処理の後（００１５Ｈ）から次の特定アドレスの手前（００１７Ｈ）までの３バイトの領域、すなわち出力ポート２出力処理から加算処理までの間の領域には、３バイトのデータ量で構成される設定値表示データ取得処理が格納されており、出力ポート２出力処理が格納される特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータが格納されるようになっている。
【０１７１】
また、加算処理の後（００１ＢＨ）から次の特定アドレスの手前（００１ＦＨ）までの５バイトの領域、すなわち加算処理と割込１回待ち処理との間の領域には、５バイトのデータ量で構成される全リール停止ＬＥＤオフ処理が格納されており、加算処理が格納される特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータが格納されるようになっている。
【０１７２】
また、割込ＢＣ回待ち処理の後（００２ＤＨ）から次の特定アドレスの手前（００２ＦＨ）までの３バイトの領域、すなわち割込ＢＣ回待ち処理とポート出力処理との間の領域には、３バイトのデータ量で構成されるホッパー停止処理が格納されており、割込ＢＣ回待ち処理が格納される特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータが格納されるようになっている。
【０１７３】
また、遊技状態判定処理の後（００３ＥＨ）から特定アドレス領域の終了アドレス（００３ＦＨ）までの２バイトの領域、すなわち遊技状態判定処理とコマンド格納処理との間の領域には、２バイトのデータ量で構成される遊技カウンタ送信処理が格納されており、遊技状態判定処理が格納される特定アドレスの後から特定アドレス領域の最後までの領域全てにサブルーチンのデータが格納されるようになっている。
【０１７４】
このように、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの残りの領域には、当該領域に相当するデータ量のサブルーチンまたはその一部を格納することで、特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータを格納するようになっている。
【０１７５】
本実施例では、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの残りの領域に格納されるサブルーチンのうち設定値表示データ取得処理は、当該処理が実行される場合には、加算処理が続けて実行される処理であり、遊技プログラム領域において設定値表示データ取得処理のサブルーチンの後に加算処理のサブルーチンが格納されている。また、ホッパー停止処理は、当該サブルーチンが実行される場合には、ポート処理が続けて実行される処理であり、遊技プログラム領域においてホッパー停止処理のサブルーチンの後にポート処理のサブルーチンが格納されている。また、遊技カウンタ送信処理は、当該サブルーチンが実行される場合には、コマンド格納処理が続けて実行される処理であり、遊技プログラム領域において遊技カウンタ送信処理のサブルーチンの後にコマンド格納処理のサブルーチンが格納されている。
【０１７６】
また、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの残りの領域に格納されるサブルーチンのうち全リール停止ＬＥＤオフ処理は、当該処理が実行される場合には、ポート処理が続けて実行される処理であり、ポート処理が格納されているアドレスを指定して当該アドレスに移動するジャンプ命令を含む。
【０１７７】
尚、本実施例では、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの残りの領域には、当該残りの領域に一致するデータ量で構成されるサブルーチンのデータを格納することで、一の特定アドレスから次の特定アドレスまでの領域全てにサブルーチンのデータを格納する構成であるが、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの残りの領域に、当該残りの領域よりも大きなデータ量で構成される所定サブルーチンのデータが格納される構成としても良く、このような構成においては、当該所定サブルーチンを当該残り領域に格納される第１部分と、特定アドレス領域外の遊技プログラム領域の所定アドレスに格納される第２部分と、に分けるとともに、第１部分を当該所定アドレスに移動するジャンプ命令を含めて当該残りの領域に相当するデータ量として当該空き領域に格納し、第２部分を特定アドレス領域外の所定アドレスに格納することで、特定アドレスを先頭とする領域に格納されたサブルーチンに挟まれた領域よりも大きなデータ量のサブルーチンの一部を用いて、特定アドレスから次の特定アドレスの手前までの領域全てにサブルーチンのデータを格納することができる。
【０１７８】
本実施例のメイン制御部４１は、特定アドレスを指定してサブルーチンを呼び出すことが可能な１バイトのＲＳＴ命令を備えている。ＲＳＴ命令の演算コードは、８ビット（１バイト）で構成され、第１ビット〜３ビット及び第５ビット〜８ビットの各値は、常に“１”に定められている一方で、第３ビット〜第５ビットの各値を予め定められた値に指定することで、予め定められた３ビットの“０”、“１”の組合せに応じた特定アドレスを指定して、指定した特定アドレスを先頭として格納されているサブルーチンを呼び出すことが可能となっている。具体的には、ＲＳＴ命令により指定可能な特定アドレスとして、００００Ｈ、０００８Ｈ、００１０Ｈ、００１８Ｈ、００２０Ｈ、００２８Ｈ、００３０Ｈ、００３８Ｈの８つのアドレスが割り当てられており、ＲＳＴ命令の演算コードの第３ビット〜第５ビットを、“０００”と指定することで特定アドレス００００Ｈが指定され、“００１”と指定することで特定アドレス０００８Ｈが指定され、“０１０”と指定することで特定アドレス００１０Ｈが指定され、“０１１”と指定することで特定アドレス００１８Ｈが指定され、“１００”と指定することで特定アドレス００２０Ｈが指定され、“１０１”と指定することで特定アドレス００２８Ｈが指定され、“１１０”と指定することで特定アドレス００３０Ｈが指定され、“１１１”と指定することで特定アドレス００３８Ｈが指定される。そして、指定された特定アドレスを先頭とするサブルーチンが呼び出される。
【０１７９】
ＲＯＭ４１ｂにおけるアドレスは、２バイト構成であるのに対して、ＲＳＴ命令にて特定アドレスを指定するパラメータ（オペランド）は、第３ビット〜第５ビットの３ビットである。すなわち、ＲＳＴ命令は、ＲＯＭ４１ｂにおけるプログラムアドレスよりも少ないデータ量のパラメータを指定することで、所定間隔毎に割り当てられた複数の特定アドレスのうち指定されたパラメータに対応する特定アドレスを指定し、当該指定された特定アドレスに記憶されたサブルーチンを呼び出すことが可能となるため、プログラムの呼出に係るプログラム容量を削減できる。また、ＲＳＴ命令の演算コード全体としても、１バイトで構成されており、２バイト構成のプログラムアドレスよりも少ないデータ量で構成されるため、プログラムアドレスを指定してプログラムを呼び出す他の演算コードよりも少ないデータ量で特定アドレスに記憶されたプログラムを呼び出すことが可能となるため、プログラムの呼出に係るプログラム容量を削減できる。
【０１８０】
このように、本実施例のメイン制御部４１のＲＯＭ４１ｂには、プログラムが格納されている記憶領域を特定可能な２バイトのアドレスが割り当てられており、アドレスが００００Ｈ〜００３ＦＨの記憶領域には、アドレスの下位１桁が特定値（８Ｈまたは０Ｈ）となる８バイト毎のアドレス（０００８Ｈ、００１０Ｈ、００１８Ｈ、００２０Ｈ、００２８Ｈ、００３０Ｈ、００３８Ｈ）が特定アドレスとして割り当てられている。また、メイン制御部４１は、２バイトのアドレスを指定し、指定したアドレスのプログラムに移動して当該プログラムを実行するジャンプ命令と、アドレスよりも短い３ビットのデータで特定アドレスを指定し、指定した特定アドレスのプログラムを呼び出して当該プログラムを実行することが可能な１バイトのＲＳＴ命令を備えている。このような構成において、特定アドレス同士の間の領域よりも小さなデータ量、すなわち８バイト未満のプログラムを特定アドレスに格納する場合には、特定アドレスを先頭とする領域に格納されたサブルーチンと次の特定アドレスの手前までの領域に空き領域が生じてしまうことがあり、ＲＯＭ４１ｂの記憶領域を有効に用いられていなかった。
【０１８１】
これに対して、本実施例では、一の特定アドレスから開始する領域に第１の特定プログラム、例えば、外部信号オフ時間待ち処理のサブルーチンを記憶させ、次の特定アドレスから開始する領域に第２の特定プログラム、例えば、出力ポート２出力処理のサブルーチンを記憶させ、第１の特定プログラムの後から次の特定アドレスの手前までの間の領域、すなわち第１の特定プログラムと第２の特定プログラムの間の空き領域に、当該空き領域に相当するデータ量以下の所定プログラムまたは所定プログラムの一部、例えば、空き領域のデータ量に一致する最大投入メダル数セット処理のサブルーチンを記憶することで、一の特定アドレスから次の特定アドレスの手前までの領域にサブルーチンのデータが格納されることとなり、ＲＯＭ４１ｂの領域を有効に用いることができる。
【０１８２】
尚、第１の特定プログラムと第２の特定プログラムとの間の空き領域に格納される所定プログラムは、当該領域の空き領域よりも小さなデータ量のプログラムであっても良いし、当該空き領域に一致するデータ量のプログラムであっても良く、いずれの構成であっても第１の特定プログラムと第２の特定プログラムとの間の空き領域に所定プログラムが格納されることで、ＲＯＭ４１ｂの領域を有効に用いることができる。
【０１８３】
また、本実施例では、第１の特定プログラムと第２の特定プログラムとの間の空き領域に１種類のサブルーチンを格納する構成であるが、第１の特定プログラムと第２の特定プログラムとの間の空き領域に複数種類のサブルーチン、すなわち複数のプログラムを格納する構成であっても良く、このような構成であっても、一の特定アドレスから次の特定アドレスの手前までの領域にサブルーチンのデータが格納されることとなり、ＲＯＭ４１ｂの領域を有効に用いることができる。
【０１８４】
本実施例では、第１の特定プログラムと第２の特定プログラムの間の空き領域に、所定プログラムとして、当該所定プログラムの後、第２の特定プログラムが続けて実行されるプログラム（例えば、終了後に加算処理を続けて実行する設定値表示データ取得処理のサブルーチン）を記憶させることで、メイン制御部４１は、空き領域に記憶された所定プログラム（設定値表示データ取得処理のサブルーチン）に続けて第２の特定プログラム（加算処理のサブルーチン）を実行させるようになっており、ＣＡＬＬＶ命令により空き領域に記憶された所定プログラムを呼び出すのみで、当該所定プログラムの終了後に第２の特定プログラムが実行されることとなるので、空き領域に記憶されたプログラムにおいてＲＳＴ命令により第２の特定プログラムを呼び出す必要がなく、第２の特定プログラムを呼び出すためのプログラム容量を削減できる。
【０１８５】
また、本実施例では、第１の特定プログラムと第２の特定プログラムの間の空き領域には、当該空き領域以下のデータ量で構成される所定プログラムを格納する構成であるが、第１の特定プログラムと第２の特定プログラムの間の空き領域に、所定プログラムとして当該空き領域よりも大きなデータ量のプログラムの一部と、当該空き領域以外の領域に移動するジャンプ命令と、を含むプログラムを記憶させるとともに、当該プログラムの残りの部分をジャンプ命令で指定する所定の領域に記憶させる構成としても良く、このような構成とすることで、第１の特定プログラムと第２の特定プログラムの間の空き領域よりも大きなデータ量のプログラムの一部を、当該空き領域に格納することができるので、ＲＯＭ４１ｂの記憶領域を空の状態とすることなく有効に用いることができる。尚、所定プログラムの残りの部分が記憶される領域は、特定アドレス領域であっても良いし、特定アドレス領域外の領域であっても良い。
【０１８６】
また、本実施例では、特定アドレスから開始する領域に格納する特定プログラムとして、特定アドレスから次の特定アドレスの手前までの領域よりも大きなデータ量のプログラム（例えば、ポート出力処理のサブルーチン）の一部と、当該領域以外の領域に移動するジャンプ命令と、を含むプログラムを記憶させるとともに、当該プログラムの残りの部分を当該領域以外の領域に記憶させることで、ＲＳＴ命令により特定アドレスから開始する領域に記憶された特定プログラムの一部が実行され、ジャンプ命令により残りの部分が実行されることとなるので、特定アドレスから次の特定アドレスの手前までの領域よりも大きなデータ量のプログラムであっても、ＲＳＴ命令により当該プログラムを指定して実行することができるので、このようなデータ量の大きいプログラムの呼び出しに係るプログラム容量を削減できる。尚、特定プログラムの残りの部分は、特定アドレス領域外の領域に格納される構成であるが、特定アドレス領域内の領域に格納される構成でも良い。
【０１８７】
遊技プログラムとは、前述のように遊技の進行に係わるプログラムであり、当該プログラムに基づく処理を実行しないと、遊技の進行に支障をきたす処理を実行するためのプログラムである。
【０１８８】
一方、非遊技プログラムとは、前述のように遊技の進行に係わらないプログラムであり、遊技プログラムから呼び出されて当該プログラムに基づく処理が実行されずに遊技プログラムに復帰した場合でも、遊技を進行させることが可能な処理を実行するためのプログラムである。
【０１８９】
遊技プログラムは、図８に示すように、遊技プログラムだけに含まれる遊技専用プログラムと、遊技プログラム及び非遊技プログラム双方に含まれる共通判定プログラム及び共通汎用プログラムと、を含む。
【０１９０】
遊技専用プログラムは、例えば、ＢＥＴ処理、内部抽選処理、リール回転処理、払出処理、外部出力１処理を含む。ＢＥＴ処理は、１ゲームの制御の終了後、メダルの投入等により賭数を設定し、規定数の賭数が設定された後、スタートスイッチ７が操作されることでゲームを開始させるための処理であり、内部抽選処理は、内部抽選を行い、当選フラグの設定等を行う処理であり、リール回転処理は、リールの回転を開始し、ストップスイッチ８Ｌ、８Ｃ、８Ｒが操作されることでリールを停止させるための処理であり、払出処理は、停止したリールの停止位置に応じて入賞が発生したか否かを判定し、メダルの払出、再遊技の設定、遊技状態の移行等を行うための処理であり、外部出力１処理は、外部出力信号のうちメダルＩＮ信号、メダルＯＵＴ信号、ＲＢ中信号、ＢＢ中信号、ＲＴ中信号の出力制御を行うための処理である。また、特に図示しないが、遊技プログラムは、前述のＡＴに関連する処理（ＡＴに係る抽選やナビ報知に係る制御等）、前述の内部当選コマンドを送信する処理も含む。
【０１９１】
遊技プログラムにおける共通判定プログラムは、例えば、投入判定処理、払出判定処理を含む。投入判定処理は、投入メダルセンサ３１によるメダルの正常な通過であるか否かを判定する処理であり、賭数の設定等のためにメダルの投入が可能な状態において実行される処理である。払出判定処理は、払出センサ３４ｃによるメダルの正常な通過であるか否かを判定する処理であり、小役の入賞時やクレジットの精算時にメダルの払出が許可されている状態において実行される処理である。
【０１９２】
遊技プログラムにおける共通汎用プログラムは、遊技プログラムを構成する複数種類の処理から呼び出されて実行される処理であり、例えば、カウンタ更新処理、ポート入力処理、データ変換処理、ＬＥＤ表示処理、データ設定処理、コマンド設定処理を含む。カウンタ更新処理は、指定されたカウンタ値を更新するための処理であり、ポート入力処理は、指定されたポートの入力状態を取得する処理であり、データ変換処理は、遊技データを用いて入力されたデータを変換して出力する処理であり、ＬＥＤ表示処理は、指定された値をＬＥＤに表示させるために設定する処理であり、データ設定処理は、指定されたデータを設定する処理であり、コマンド設定処理は、指定されたコマンドをコマンドキューに設定する処理である。また、上述した初期設定処理、外部信号オフ時間待ち処理、最大投入メダル数セット処理、出力ポート２出力処理、設定値表示データ取得処理、加算処理、全リール停止ＬＥＤオフ処理、割込１回待ち処理、割込ＢＣ回待ち処理、ホッパー停止処理、ポート出力処理、遊技状態判定処理、遊技カウンタ送信処理、コマンド格納処理も共通汎用プログラムに含まれる。
【０１９３】
非遊技プログラムは、図８に示すように、非遊技プログラムだけに含まれる非遊技専用プログラムと、遊技プログラムと同じ共通判定プログラム及び共通汎用プログラムと、を含む。
【０１９４】
非遊技専用プログラムは、例えば、試験信号出力処理、異物検知処理、ドア監視処理、外部出力２処理、投入メダルエラー判定処理、払出メダルエラー判定処理、乱数異常確認処理、ＲＡＭ異常確認処理、バックアップ異常確認処理、レジスタ初期化処理、設定値異常確認処理、エラー処理を含む。試験信号出力処理は、遊技の結果に関連して発生する試験信号を出力するための処理であり、異物検知処理は、投入口センサ２６によるメダル通路内の異物を検知するための処理であり、ドア監視処理は、前面扉１ｂの開放を検知するための処理であり、外部出力２処理は、外部出力信号のうちセキュリティ信号（ドア開放信号、設定変更信号、投入エラー信号、払出エラー信号）の出力制御を行うための処理であり、投入メダルエラー判定処理は、投入メダルセンサ３１の検出状況に基づいて投入メダルの逆流検知、メダルセレクタ２９内のメダル詰り検知、メダルセレクタ２９内の異物検知を行うための処理であり、払出メダルエラー判定処理は、払出センサ３４ｃの検出状況に基づいて払出メダルの逆流検知、払出口付近のメダル詰り検知、払出口付近の異物検知を行うための処理であり、乱数異常確認処理は、乱数回路が正常に動作しているかを確認する処理であり、ＲＡＭ異常確認処理及びバックアップ異常確認処理は、ＲＡＭ４１ｃに格納されているデータに異常があるかを確認する処理であり、レジスタ初期化処理は、メイン制御部４１の各種レジスタを初期化する処理であり、設定値異常確認処理は、設定値が正常な範囲の値であるか否かを判定するための処理であり、エラー処理は、各種の異常（メダルの投入異常、メダルセレクタ２９内の異物検知、リール回転異常、メダルの払出異常、払出口付近の異物検知、ＲＡＭ異常、設定値異常、ホッパータンク３４ａの空、オーバーフロータンク３５の満タン検知等）が検知された場合に遊技を不能化するための処理である。
【０１９５】
非遊技プログラムにおける共通汎用プログラムは、非遊技プログラムを構成する複数種類の処理から呼び出されて実行される処理であり、遊技プログラムにおける共通汎用プログラムと同様に、例えば、カウンタ更新処理、ポート入力処理、データ変換処理、ＬＥＤ表示処理、データ設定処理、コマンド設定処理を含む。
【０１９６】
特に、非遊技プログラムは、上述のように異常が検知された場合に、異常の種別に応じた解除条件（乱数異常、ＲＡＭ異常、バックアップ異常、設定値異常の場合は、設定値の再設定、それ以外の異常の場合はリセット操作）が成立するまで遊技の進行を不能化するエラー処理を含む。
【０１９７】
また、非遊技プログラムは、遊技の進行に係わらない検知手段（投入口センサ２６、満タンセンサ３５ａ、ドア開放検出スイッチ２５）の検出状況に基づいて所定の検出状況か否かを判定する処理を含む。
【０１９８】
また、非遊技プログラムは、複数の制御状態（ＢＥＴ処理、内部抽選処理、リール回転処理、払出処理）のうち特定の制御状態においては、遊技の進行に係わる検知手段として機能し、他の制御状態においては、遊技の進行に係わらない検出手段として機能する検出手段（例えば、投入メダルセンサ３１、払出センサ３４ｃ）が、遊技の進行に係わらない制御状態での検出状況に基づいて所定の検出状況か否かを判定する処理（例えば、リール回転中のメダルの投入やメダルの払出が検出されたことによる異常を検知するための投入メダルの検出処理や払出メダルの検出処理）を含む。尚、このような判定処理は、遊技プログラムにおいて遊技の進行に係わる制御状態での検出状況に基づいて所定の検出状況か否かを判定する処理と同じ処理であるため、共通判定プログラムに該当する。
【０１９９】
尚、遊技プログラムに含まれる処理のうち、外部出力１処理、ＢＥＴ処理においてメダルの投入数を計数する処理、流路切替ソレノイド３０を切り替える処理、払出処理においてメダルの払出数を計数する処理、ホッパータンク３４ａが空になったことを検知する処理、ソフトウェア乱数を更新する処理、ＡＴに関連する処理、内部当選コマンドの送信処理等、ゲームの進行に直接的には関連しないものであればこれらの処理の全部または一部が非遊技プログラムに含まれる構成であっても良い。一方で、非遊技プログラムに含まれる処理のうち起動処理、設定値異常確認処理等、遊技の進行に間接的に関連するものであればこれらの処理の全部または一部が遊技プログラムに含まれる構成であっても良い。
【０２００】
本実施例においてメイン制御部４１のＣＰＵ４１ａは、図９に示すように、遊技プログラムに基づく処理において非遊技プログラムを呼び出して非遊技プログラムに基づく処理を実行し、非遊技プログラムに基づく処理の終了後、遊技プログラムに基づく処理に復帰する。
【０２０１】
ＣＰＵ４１ａは、図１０に示すように、遊技プログラムに基づく処理から非遊技プログラムを呼び出した場合に、非遊技プログラムの最初に、ＣＰＵ４１ａが演算に用いる演算用のレジスタ（Ａ、Ｆ、ＢＣ、ＤＥ、ＨＬレジスタ、以下では、演算用のレジスタを単にレジスタと称す）の値を全てスタック領域に退避し、遊技プログラムが使用していたデータを保護する。そして、非遊技プログラムに基づく処理が全て終了した後、スタック領域に退避していた値をレジスタに復帰し、その後、遊技プログラムに基づく処理に復帰するようになっている。
【０２０２】
尚、本実施例では、遊技プログラムが使用していたレジスタの値をスタック領域に退避することで保護する構成であるが、表レジスタと裏レジスタの値を変更することで遊技プログラムが使用していたレジスタの値を保護する構成としても良い。
【０２０３】
また、本実施例では、遊技プログラムに基づく処理から非遊技プログラムを呼び出した場合に、非遊技プログラムの最初に、遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムの最後に、保護されているレジスタの値を復帰させる構成であるが、遊技プログラムに基づく処理から非遊技プログラムを呼び出す直前に遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムに基づく処理が全て終了した後に、遊技プログラムに復帰した最初の段階で保護されているレジスタの値を復帰させる構成、遊技プログラムに基づく処理から非遊技プログラムを呼び出した場合に、非遊技プログラムの最初に、遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムに基づく処理が全て終了した後に、遊技プログラムに復帰した最初の段階で保護されているレジスタの値を復帰させる構成、遊技プログラムに基づく処理から非遊技プログラムを呼び出す直前に遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムの最後に、保護されているレジスタの値を復帰させる構成としても良い。
【０２０４】
図９に示すように、ＣＰＵ４１ａは、原則として遊技プログラムに基づく処理を実行するにあたり、遊技データ領域の遊技データを参照して遊技プログラムに基づく処理を実行するとともに、遊技ＲＡＭ領域をワークとして使用し、遊技ＲＡＭ領域の内容を参照及び更新することが可能である。また、ＣＰＵ４１ａは、原則として非遊技プログラムに基づく処理を実行するにあたり、非遊技データ領域の遊技データを参照して非遊技プログラムに基づく処理を実行するとともに、非遊技ＲＡＭ領域をワークとして使用し、非遊技ＲＡＭ領域の内容を参照及び更新することが可能である。
【０２０５】
また、ＣＰＵ４１ａは、遊技プログラムに基づく処理を実行するにあたり、非遊技データ領域を参照することはなく、非遊技ＲＡＭ領域を更新することはないが、非遊技ＲＡＭ領域を参照することは可能であり、非遊技プログラムに基づく処理を実行するにあたり、遊技データ領域を参照することはなく、遊技ＲＡＭ領域を更新することはないが、遊技ＲＡＭ領域を参照することは可能である。
【０２０６】
また、遊技プログラムに基づく処理は、非遊技ＲＡＭ領域のうち遊技プログラムに必要な特定の領域（例えば、異常の検知を示すエラーフラグの設定領域等）のみ参照可能とされており、非遊技プログラムに基づく処理は、遊技ＲＡＭ領域のうち非遊技プログラムに必要な特定の領域（例えば、内部当選フラグの設定領域、遊技状態の設定領域、ＲＴの設定領域等）のみ参照可能とされている。また、非遊技ＲＡＭ領域のうち遊技プログラムに基づく処理が参照可能な特定の領域、遊技ＲＡＭ領域のうち非遊技プログラムに基づく処理が参照可能な特定の領域は、連続するアドレス領域に割り当てられることが好ましいが、一部または全部が連続しないアドレス領域に割り当てられる構成であっても良い。
【０２０７】
ただし、起動処理におけるＲＡＭ異常確認、バックアップ異常確認、ＲＡＭ４１ｃの初期化、後述する電断処理は、非遊技プログラムに含まれるが、これらの処理は例外として、ＲＡＭ４１ｃの全領域へのアクセスが可能とされている。
【０２０８】
このように本実施例では、遊技の進行に係る遊技プログラムが記憶される遊技プログラム領域と、遊技プログラムが参照する遊技データが読み出し可能に記憶される遊技データ領域と、遊技プログラムが参照するワークデータが読み出し及び書き込み可能に記憶される遊技ＲＡＭ領域と、遊技プログラムによって呼び出されるプログラムであり、遊技の進行に係わらない非遊技プログラムが記憶される非遊技プログラム領域と、非遊技プログラムが参照する非遊技データが読み出し可能に記憶される非遊技データ領域と、非遊技プログラムが参照するワークデータが読み出し及び書き込み可能に記憶される非遊技ＲＡＭ領域と、がそれぞれ別個に割り当てられているため、遊技プログラム、遊技データ及び遊技プログラムのワークデータと、非遊技プログラム、非遊技データ及び非遊技プログラムのワークデータと、を記憶領域の違いに応じて容易に特定することができる。
【０２０９】
また、遊技プログラム領域及び遊技データ領域と、非遊技プログラム領域及び非遊技データ領域と、を分けることで、それぞれの機能に応じてＲＯＭ４１ｂに占める領域をコンパクトに管理することができるため、各領域において該当するデータを特定することがさらに容易となる。
【０２１０】
また、本実施例では、遊技プログラムを実行する際に、非遊技ＲＡＭ領域を参照することが可能であり、非遊技プログラムを実行する際に、遊技ＲＡＭ領域を参照することが可能であるため、遊技プログラムを実行するにあたり、非遊技プログラムが使用していたデータを簡単に利用することができ、非遊技プログラムを実行するにあたり、遊技プログラムが使用していたデータを簡単に利用することができる。一方で、遊技プログラムを実行する際に、非遊技ＲＡＭ領域を更新することは不可能であり、非遊技プログラムを実行する際に、遊技ＲＡＭ領域を更新することは不可能であるため、遊技プログラムが非遊技プログラムの処理に影響を及ぼすことなく、非遊技プログラムが遊技プログラムの処理に影響を及ぼすことがない。
【０２１１】
また、本実施例では、遊技プログラムに基づく処理は、非遊技ＲＡＭ領域のうち遊技プログラムに必要な特定の領域（例えば、異常の検知を示すエラーフラグの設定領域等）のみ参照可能とされており、非遊技プログラムに基づく処理は、遊技ＲＡＭ領域のうち非遊技プログラムに必要な特定の領域（例えば、内部当選フラグの設定領域、遊技状態の設定領域、ＲＴの設定領域等）のみ参照可能とされているので、遊技プログラムが非遊技ＲＡＭ領域において参照可能なデータ、非遊技プログラムが参照可能なデータが特定の領域に制限されているため、遊技プログラムまたは非遊技プログラムの参照先を容易に特定することができる。
【０２１２】
また、本実施例では、非遊技プログラムが、異常が検知された場合に、異常の種別に応じて解除条件が成立するまで遊技の進行を不能化するエラー処理を含むため、非遊技プログラムにおける処理で異常等が検知されたときにそのまま遊技が進行してしまうことを防止できる。
【０２１３】
また、本実施例では、非遊技プログラムが、遊技プログラムに含まれる共通判定プログラム（例えば、投入判定処理、払出判定処理）と同じ内容の共通判定プログラムを含むため、遊技プログラム及び非遊技プログラムが互いの結果に影響を及ぼさずに同様の判定を行うことができる。
【０２１４】
また、本実施例では、非遊技プログラムが、非遊技プログラムを構成する複数種類の処理から呼び出されて実行される処理であり、遊技プログラムに含まれる共通汎用プログラムと同様の共通汎用プログラムを含むため、処理内容が同じ共通汎用プログラムであっても遊技プログラムと非遊技プログラムとでそれぞれ備えるため、処理内容が同じ共通汎用プログラムであっても遊技プログラムに含まれるものか非遊技プログラムに含まれるものかを容易に特定することができる。
【０２１５】
また、本実施例では、非遊技プログラムが、遊技の進行に係わらない検知手段（投入口センサ２６、満タンセンサ３５ａ、ドア開放検出スイッチ２５）の検出状況に基づいて所定の検出状況か否かを判定する処理を含むため、遊技の進行に係わらない検知手段により所定の検出がされたか否かの判定は非遊技プログラムにより行われることで遊技プログラムが複雑となってしまうことがない。
【０２１６】
また、本実施例では、非遊技プログラムが、複数の制御状態（ＢＥＴ処理、内部抽選処理、リール回転処理、払出処理）のうち特定の制御状態においては、遊技の進行に係わる検知手段として機能し、他の制御状態においては、遊技の進行に係わらない検出手段として機能する検出手段（例えば、投入メダルセンサ３１、払出センサ３４ｃ）が、遊技の進行に係わらない制御状態での検出状況に基づいて所定の検出状況か否かを判定する処理（例えば、リール回転中のメダルの投入やメダルの払出が検出されたことによる異常を検知するための投入メダルの検出処理や払出メダルの検出処理）を含むため、上記のような検出手段の検出結果が遊技の進行に用いられない状況では、当該検出手段により所定の検出がされたか否かの判定は非遊技プログラムにより行われることで、当該検出手段の検出結果が遊技の進行に用いられない状況においても検出手段の検出結果を利用できるうえに、遊技プログラムが必要以上に複雑となってしまうことがない。
【０２１７】
また、本実施例では、遊技プログラムが非遊技プログラムを呼び出して非遊技プログラムを実行する際に、遊技プログラムが実際に使用していたレジスタであるか否かに関わらずレジスタの全ての領域を保護する処理が行われるため、遊技プログラムに復帰する際に、非遊技プログラムが呼び出された時点の状態から確実に復帰することができる。
【０２１８】
また、本実施例では、遊技プログラムに基づく処理から非遊技プログラムを呼び出した場合に、非遊技プログラムの最初に、遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムの最後に、保護されているレジスタの値を復帰させるようになっているため、遊技プログラムの容量を削減することができる。
【０２１９】
尚、遊技プログラムに基づく処理から非遊技プログラムを呼び出す直前に遊技プログラムが使用していたレジスタの値を保護し、非遊技プログラムに基づく処理が全て終了した後に、遊技プログラムに復帰した最初の段階で保護されているレジスタの値を復帰させる構成としても良く、このような構成とすることで、非遊技プログラムの呼び出し前にレジスタの保護処理が行われ、非遊技プログラムからの復帰後にレジスタの復旧処理が行われるため、非遊技プログラムによってレジスタに記憶されたデータが遊技プログラムに影響を及ぼすことがない。
【０２２０】
次に、本実施例におけるメイン制御部４１が実行する各種制御内容を、図１１〜図２３に基づいて以下に説明する。
【０２２１】
メイン制御部４１は、リセットの発生により起動すると、起動時設定を行う。起動時設定では、メイン制御部４１が備えるステータスフラグを初期化する。ステータスフラグは、命令の演算結果や実行結果の状態を保持するデータであり、特に割込の禁止／許可を設定する割込マスタ許可フラグを含む。割込マスタ許可フラグの初期値は割込の禁止を示す値であるため、メイン制御部４１は、割込が禁止された状態で起動することとなる。
【０２２２】
その後、メイン制御部４１は、ＨＷパラメータを参照して各種機能を設定した後、プログラム／データ領域に格納されたプログラムに従って、図１１のフローチャートに示す初期設定処理を行う。初期設定処理では、まず、割込マスタ許可フラグの値を割込禁止を示す値に設定することで割込を禁止する（Ｓａ１）。前述のようにメイン制御部４１は、割込禁止の状態で起動することとなるが、Ｓａ１では、再度、割込を禁止する。次いで、初期化データをセットし（Ｓａ２）、パラレル出力ポート５１３を含む各出力ポートを初期化する（Ｓａ３）。次いで、内蔵レジスタの設定を行う（Ｓａ４）。
【０２２３】
次いで、電源電圧が正常か否かを判定する（Ｓａ５）。電源電圧が正常でない場合には正常になるまで判定を繰り返す。電源電圧が正常である場合には割込ベクタの上位アドレスをセットする（Ｓａ６）。そして、ＲＡＭ４１ｃへのアクセスを許可し（Ｓａ７）、スタックポインタを初期化する（Ｓａ８）。
【０２２４】
次いで、ＲＡＭ４１ｃの遊技ＲＡＭ領域の全ての領域（未使用領域３を含む）のＲＡＭパリティ（以下、ＲＡＭパリティ１と称す）及び非遊技ＲＡＭ領域の全ての領域（未使用領域４を含む）のＲＡＭパリティ（以下、ＲＡＭパリティ２と称す）、スタック領域（未使用スタック領域及び使用中スタック領域）のＲＡＭパリティ（以下、ＲＡＭパリティ３と称す）を計算する（Ｓａ９）。そして、計算したＲＡＭパリティ１〜３が０か否かを判定する（Ｓａ１０）。後述のように前回の電源遮断時に正常に電断処理（メイン）が行われていれば、ＲＡＭパリティ１〜３がいずれも０になるはずであるので、Ｓｄ１０のステップにおいてＲＡＭパリティ１〜３のいずれか１つでも０でなければ、ＲＡＭ４１ｃに格納されているデータが正常ではなく、この場合にはＳａ１４のステップに進み、破壊診断用データをクリアする（Ｓａ１４）。一方、ＲＡＭパリティ１〜３がいずれも０になる場合には、更に遊技ＲＡＭ領域に格納されている破壊診断用データ１、非遊技ＲＡＭ領域に格納されている破壊診断用データ２、スタック領域に格納されている破壊診断用データ３を取得し（Ｓａ１１）、取得した破壊診断用データ１〜３が正しいか否かを判定し（Ｓａ１２）、破壊診断用データ１〜３をクリアする（Ｓａ１３）。
【０２２５】
次いで、設定キースイッチ３７がＯＮ状態か否かを判定する（Ｓａ１４）。設定キースイッチ３７がＯＮ状態の場合には、タイマ割込の設定を行う（Ｓａ１９）。具体的には、所定時間毎に定期的にタイマ割込が実行されるようにメイン制御部４１に内蔵されているタイマ回路５０９のレジスタの設定を行なう。本実施例では約０．５６ｍｓに相当する値が所定のレジスタ（時間定数レジスタ）に設定されることで、約０．５６ｍｓ毎に定期的にタイマ割込が発生することとなる。また、タイマ回路５０９ではレジスタの設定が行われることにより、タイマが初期化され、初期値から計時を開始することになる。Ｓａ１９のステップにおけるタイマ割込の設定が終了すると設定変更処理に移行する。
【０２２６】
一方、設定キースイッチ３７がＯＦＦ状態の場合には、ＲＡＭ４１ｃの記憶内容が破壊されているか否かを判定する（Ｓａ１５）。Ｓａ１５のステップでは、後述するＲＡＭ異常フラグが設定されているか否か、Ｓａ１０、Ｓａ１２の判定に基づきＲＡＭ４１ｃの記憶内容が破壊されているか否かを判定する。ＲＡＭ４１ｃの記憶内容が破壊されていない場合には、復帰コマンドをサブ制御部９１に送信する（Ｓａ１６）。尚、ＲＡＭ４１ｃの記憶内容が破壊されていない場合とは、ＲＡＭ異常フラグがセットされておらず、かつＳａ１０のステップにおいてＲＡＭパリティ１〜３がいずれも０であると判定され、さらにＳａ１２のステップにおいて破壊診断用データ１〜３がいずれも正しいと判定された場合である。
【０２２７】
Ｓａ１６のステップの後、全てのレジスタを復帰させ（Ｓａ１７）、Ｓａ１９のステップと同様のタイマ割込の設定を行う（Ｓａ１８）。そして、後述のタイマ割込処理（メイン）のＳｄ２４の処理に移行する。これにより電断前に実行していた処理に復帰することとなる。
【０２２８】
また、Ｓａ１５のステップにおいてＲＡＭ４１ｃの記憶内容が破壊されている場合には、ＲＡＭの開始アドレス（００００Ｈ）をレジスタにセットし（Ｓａ２０）、指定したアドレスから使用可能領域の最終アドレス（０ＦＦＦＨ）までの領域、すなわち使用可能領域の全ての領域を初期化する（Ｓａ２１）。
【０２２９】
次いで、ＲＡＭ４１ｃの記憶内容が正常でないことを示すＲＡＭ異常フラグをＲＡＭ４１ｃにセットし（Ｓａ２２）、エラー処理に移行する。エラー処理では、遊技の進行が不能化される。また、ＲＡＭ異常フラグが設定されて移行したエラー状態では、設定キースイッチ３７をＯＮ状態にして電源スイッチ３９をＯＮにすることによって、設定変更処理に移行させることにより解除することができる。一方、設定キースイッチ３７をＯＮ状態にせずに電源スイッチ３９をＯＮにした場合には、ＲＡＭ異常フラグが設定されたままであり、再びエラー状態となる。
【０２３０】
次に、メイン制御部４１が実行する設定変更処理について説明する。
【０２３１】
図１２に示すように、メイン制御部４１は、まず、ＲＡＭの開始アドレス（００００Ｈ）をレジスタにセットする（Ｓｂ１）。次いで、図１１に示すＳａ１５のステップと同様にＲＡＭ４１ｃの記憶内容が破壊されているか否かを判定する（Ｓｂ２）。ＲＡＭの内容が破壊されていない場合、すなわちＲＡＭ内容が異常でない場合には、設定変更開始時の初期化対象ＲＡＭの先頭アドレスをレジスタにセットする（Ｓｂ３）。すなわちＳｂ１で設定したアドレスを変更する。ＲＡＭの内容が破壊されている場合、すなわちＲＡＭ内容が異常である場合には、Ｓｂ４のステップに進む。
【０２３２】
次いで、Ｓｂ１またはＳｂ３のステップで指定したアドレスから使用可能領域の最終アドレスまでの領域を初期化する（Ｓｂ４）。Ｓｂ１のステップでは、ＲＡＭの開始アドレスがセットされるため、この場合にはＳｂ４のステップにおいて、使用可能領域全ての領域が初期化されることとなる。一方、Ｓｂ３のステップでは、設定変更開始時の初期化対象ＲＡＭの先頭アドレスがセットされるため、この場合にはＳｂ４のステップにおいて、使用可能領域のうち重要ワーク及び特別ワーク以外の領域が初期化されることとなる。
【０２３３】
次いで、設定変更状態の開始を示す設定コマンドをサブ制御部９１に送信し（Ｓｂ５）、割込を許可する（Ｓｂ６）。
【０２３４】
次いで、リセット／設定スイッチ３８がＯＦＦからＯＮに変化したか否かを判定する（Ｓｂ７）。リセット／設定スイッチ３８がＯＦＦからＯＮに変化した場合にはレジスタの設定値を更新（１〜５の場合は１加算し、６の場合は１に更新）する（Ｓｂ８）。リセット／設定スイッチ３８が変化しなかった場合には、スタートスイッチ７がＯＦＦからＯＮに変化したか否かを判定する（Ｓｂ９）。スタートスイッチ７が変化しなかった場合には、Ｓｂ７のステップに戻る。一方、スタートスイッチ７がＯＦＦからＯＮに変化した場合には設定キースイッチ３７がＯＦＦ状態か否かを判定する（Ｓｂ１０）。設定キースイッチ３７がＯＦＦ状態になっていない場合には、設定キースイッチ３７がＯＦＦ状態になるまで判定を繰り返す。設定キースイッチ３７がＯＦＦになっている場合には、レジスタにセットしている設定値のデータをＲＡＭ４１ｃに格納する（Ｓｂ１１）。
【０２３５】
次いで、設定変更状態の終了を示す設定コマンドをサブ制御部９１に送信する（Ｓｂ１２）。そして、設定変更終了時の初期化対象ＲＡＭの先頭アドレスをレジスタにセットし（Ｓｂ１３）、メイン処理に移行する。
【０２３６】
次に、メイン制御部４１が実行するメイン処理について説明する。尚、メイン処理は一単位の遊技毎に繰り返し実行される。そして、メイン処理の一周期が遊技の一単位に相当している。
【０２３７】
図１３に示すように、メイン制御部４１は、まず、割込を禁止する（Ｓｃ１）。次いで、初期化対象ＲＡＭの最終アドレスをセットする（Ｓｃ２）。
【０２３８】
次いで、指定したアドレスで示すＲＡＭの領域をクリアする（Ｓｃ３）。この際、設定変更処理後にメイン処理が開始された場合は、設定変更終了時の初期化対象ＲＡＭの先頭アドレスが設定され、Ｓｃ２のステップでは、設定変更終了時の初期化対象ＲＡＭの最終アドレスが設定されるため、使用可能領域のうち重要ワーク及び特別ワーク以外の領域が初期化されることとなる。また、特定の遊技状態の終了時ではない遊技の終了時には、後述のＳｃ１０のステップにおいて遊技終了時の初期化対象ＲＡＭの先頭アドレスが設定され、Ｓｃ２のステップでは、遊技終了時の初期化対象ＲＡＭの最終アドレスが設定されるため、使用可能領域のうち未使用領域及び未使用スタック領域が初期化されることとなる。また、特定の遊技状態の終了時であり、かつ遊技の終了時には、後述のＳｃ１１のステップにおいて特定の遊技状態の終了時の初期化対象ＲＡＭの先頭アドレスが設定され、Ｓｃ２のステップでは、特定の遊技状態の終了時の初期化対象ＲＡＭの最終アドレスが設定されるため、使用可能領域のうち一般領域、未使用領域及び未使用スタック領域が初期化されることとなる。
【０２３９】
Ｓｃ３のステップにおけるＲＡＭの初期化の後、割込を許可し（Ｓｃ４）、遊技開始待ち処理を実行する（Ｓｃ５）。遊技開始待ち処理では、賭数を設定可能な状態で待機し、遊技状態に応じた規定数の賭数が設定され、スタートスイッチ７が操作された時点でゲームを開始させる処理を実行する。
【０２４０】
次いで、内部抽選処理を実行する（Ｓｃ６）。内部抽選処理では、Ｓｃ５のステップにおけるスタートスイッチ７の検出によるゲーム開始と同時にラッチされた内部抽選用の乱数値に基づいて上記した各役への入賞を許容するか（すなわち、表示結果の導出を許容するか否か）どうかを決定する処理を行う。
【０２４１】
次いで、リール制御処理を実行する（Ｓｃ７）。リール制御処理では、スタートスイッチ７の操作に応答して各リール２Ｌ、２Ｃ、２Ｒを回転させる処理、Ｓｄ２のステップにおける内部抽選の結果及び遊技者によるストップスイッチ８Ｌ、８Ｃ、８Ｒの操作が検出されたことに応じて対応するリール２Ｌ、２Ｃ、２Ｒの回転を停止させる処理を実行する。
【０２４２】
次いで、遊技終了時設定処理を実行する（Ｓｃ８）。遊技終了時設定処理では、Ｓｃ７の処理において全てのリール２Ｌ、２Ｃ、２Ｒの回転が停止したと判定した時点で、各リール２Ｌ、２Ｃ、２Ｒに導出された表示結果に応じて入賞が発生したか否かを判定する処理を実行する。そして、入賞が発生したと判定した場合に、その入賞に応じた払出枚数に基づきクレジットの加算並びにメダルの払出等の処理を行う。入賞が発生した場合にはメダルの払い出し等が終了した後に次のゲームに備えて遊技状態を設定する処理を実行する。また、入賞が発生しなかった場合にはリールが停止した後に、次のゲームに備えて遊技状態を設定する処理を実行する。
【０２４３】
遊技終了時設定処理が終了すると、特定の遊技状態の終了時か否かを判定し（Ｓｃ９）、特定の遊技状態の終了時でない場合には、遊技終了時の初期化対象ＲＡＭの先頭アドレスをセットして（Ｓｃ１０）、Ｓｃ１のステップに戻る。また、特定の遊技状態の終了時である場合には、特定の遊技状態の終了時の初期化対象ＲＡＭの先頭アドレスをセットして（Ｓｃ１１）、Ｓｃ１のステップに戻る。
【０２４４】
また、メイン処理では、ゲームの進行に応じてコマンドを生成してコマンドキューに設定するコマンド格納処理を実行し、設定されたコマンドは、その後のタイマ割込処理（メイン）において実行される通常時コマンド送信処理によりサブ制御部９１に対して送信されるようになっている。
【０２４５】
図１４及び図１５は、メイン制御部４１が一定間隔（約０．５６ｍｓの間隔）で基本処理（主にメイン処理）に割り込んで実行するタイマ割込処理（メイン）の制御内容を示すフローチャートである。尚、タイマ割込処理（メイン）とは、タイマ回路５０９のカウントに応じて発生する割込により実行される処理であり、タイマ割込処理（メイン）のプログラムが格納されたアドレスは、ベクタテーブルのタイマ割込に対応する値として設定されている。そして、タイマ割込が発生すると当該アドレスからの処理が実行される。また、タイマ割込処理（メイン）の実行期間中は自動的に他の割込が禁止される。
【０２４６】
図１４に示すように、タイマ割込処理（メイン）においては、まず、使用中のレジスタをスタック領域に退避する（Ｓｄ１）。
【０２４７】
次いで、停電判定処理を行う（Ｓｄ２）。停電判定処理では、電断検出回路４８から電圧低下信号が入力されているか否かを判定し、電圧低下信号が入力されていれば、前回の停電判定処理でも電圧低下信号が入力されていたか否かを判定し、前回の停電判定処理でも電圧低下信号が入力されていた場合には停電と判定し、その旨を示す電断フラグを設定する。
【０２４８】
Ｓｄ２のステップにおける停電判定処理の後、電断フラグが設定されているか否かを判定し（Ｓｄ３）、電断フラグが設定されていなければ、Ｓｄ４に進み、入力ポートから各種スイッチ類の検出データを入力するポート入力処理を行う。一方、電断フラグが設定されていた場合には、コマンドキューに設定された各種コマンドをサブ制御部９１に送信する電断時コマンド送信処理を実行した後（Ｓｄ１９）、電断処理（メイン）に移行する。
【０２４９】
次いで、４種類のタイマ割込１〜４から当該タイマ割込処理（メイン）において実行すべきタイマ割込を識別するための分岐用カウンタを１進める（Ｓｄ５）。Ｓｄ５のステップでは、分岐用カウンタ値が０〜２の場合に１が加算され、カウンタ値が３の場合に０に更新される。すなわち分岐用カウンタ値は、タイマ割込処理（メイン）が実行される毎に、０→１→２→３→０・・・の順番でループする。
【０２５０】
次いで、分岐用カウンタ値を参照して２または３か、すなわちタイマ割込３またはタイマ割込４かを判定し（Ｓｄ６）、タイマ割込３またはタイマ割込４ではない場合、すなわちタイマ割込１またはタイマ割込２の場合には、リールモータ３２Ｃ、３２Ｃ、３２Ｒの位相信号データを出力するモータ位相信号出力処理を実行する（Ｓｄ７）。
【０２５１】
次いで、分岐用カウンタ値を参照して１か否か、すなわちタイマ割込２か否かを判定し（Ｓｄ８）、タイマ割込２ではない場合、すなわちタイマ割込１の場合には、リールモータ３２Ｌ、３２Ｃ、３２Ｒの始動時のステップ時間間隔の制御を行うリール始動処理（Ｓｄ９）、リールモータ３２Ｌ、３２Ｃ、３２Ｒの位相信号データの変更を行うモータステップ処理（Ｓｄ１０）、リールモータ３２Ｌ、３２Ｃ、３２Ｒの停止後、一定時間経過後に位相信号を１相励磁に変更するモータ位相信号スタンバイ処理（Ｓｄ１１）を順次実行した後、Ｓｄ２４のステップに進む。
【０２５２】
また、Ｓｄ８のステップにおいてタイマ割込２であると判定した場合には、各種表示器をダイナミック点灯させるＬＥＤダイナミック表示処理（Ｓｄ１２）、各種ＬＥＤ等の点灯信号等のデータを出力ポートへ出力する制御信号等出力処理（Ｓｄ１３）、各種時間カウンタを更新する時間カウンタ更新処理（Ｓｄ１４）、ドア開放検出スイッチ２５の検出状態の監視、ドアコマンドの送信要求などを行うドア監視処理（Ｓｄ１５）、コマンドキューに設定された各種コマンドをサブ制御部９１に送信する通常時コマンド送信処理（Ｓｄ１６）、外部出力信号を更新する外部出力信号更新処理（Ｓｄ１７）を順次実行した後、Ｓｄ２４のステップに進む。
【０２５３】
また、Ｓｄ６のステップにおいてタイマ割込３またはタイマ割込４であると判定した場合は、更に、分岐用カウンタ値が３か否か、すなわちタイマ割込４か否かを判定し（Ｓｄ１８）、タイマ割込４でなければ、すなわちタイマ割込３であれば、回転中のリール２Ｌ、２Ｃ、２Ｒの原点通過（リール基準位置の通過）をチェックする原点通過時処理（Ｓｄ１９）、スイッチ類の検出状態に変化があったか否かの判定等を行うスイッチ入力判定処理（Ｓｄ２０）を順次実行した後、Ｓｄ２４のステップに進む。
【０２５４】
また、Ｓｄ１８のステップにおいてタイマ割込４であると判定した場合は、ストップスイッチ８Ｌ、８Ｃ、８Ｒの検出に伴って停止位置を決定する停止スイッチ処理（Ｓｄ２１）、停止する時期になったら２相励磁によるブレーキを開始する停止処理（Ｓｄ２２）、停止処理においてブレーキを開始してから一定時間後に３相励磁とする最終停止処理（Ｓｄ２３）を順次実行した後、Ｓｄ２４のステップに進む。
【０２５５】
Ｓｄ２４のステップでは、Ｓｄ１においてスタック領域に退避したレジスタを復帰させて、割込前の処理に戻る。
【０２５６】
このように本実施例では、メイン制御部４１は、リセットが発生したときに、割込禁止の状態で起動するとともに、その後、最初に実行する初期設定処理の開始時にもプログラムにて割込の禁止を行うようになっており、何らかの原因で割込が禁止されない状態でメイン制御部４１が起動した場合でも意図しない割込が発生してしまうことを防止できる。
【０２５７】
また、メイン制御部４１は、その起動後に、タイマ回路５０９におけるタイマ割込の設定の後、割込を許可するようになっており、タイマ割込が正常に動作しない状態で割込が発生してしまうことを防止できる。また、タイマ回路５０９ではタイマ割込の設定が行われることにより、タイマが初期化され、初期値から計時を開始するようになっており、起動後、初回の割込が発生するまでの時間と、２回目以降の割込が発生するまでの時間と、がずれてしまうようなことがなく、一定の時間間隔でタイマ割込を発生させることができる。また、メイン制御部４１は、初期設定処理においてタイマ回路５０９の設定をプログラムにて初期値に更新するようになっており、起動時に、何らかの原因でタイマ回路５０９の設定が書き換わっていた場合であっても、意図しない割込が発生してしまうことを防止できる。
【０２５８】
また、メイン制御部４１は、その起動時に設定キースイッチ３７がＯＮの状態であれば設定変更処理に移行し、設定変更処理の開始時にＲＡＭ４１ｃの初期化を行う。この際、ＲＡＭ４１ｃのデータが正常であれば、重要ワーク及び特別ワークを保持してそれ以外の領域を初期化することで、設定変更後も変更前の制御状態（設定値や遊技状態等）の一部を保持することができる一方で、ＲＡＭ４１ｃのデータが正常でない場合には、重要ワーク及び特別ワークを含む使用可能領域の全ての領域を初期化することで、ＲＡＭ４１ｃのデータに異常を確実に解消することができる。
【０２５９】
また、メイン制御部４１は、ＲＡＭ異常が判定された場合にＲＡＭ異常フラグが設定されるので、ＲＡＭ異常エラーの発生後に電断して、再度電源投入がされた場合に、ＲＡＭパリティが０であり、破壊診断用データが正常と判定された場合でも、ＲＡＭ異常フラグに基づいてＲＡＭ４１ｃのデータが破壊されているか否かを判定することが可能となる。
【０２６０】
また、メイン制御部４１は、設定変更処理の終了後、遊技単位毎にゲームの進行に応じて段階的に処理を行うメイン処理を実行する。また、メイン処理では、遊技単位毎にＲＡＭ４１ｃの初期化を行うとともに、設定変更処理の終了時にもＲＡＭ４１ｃの初期化を行う。そして、設定変更処理の終了後、メイン処理においてＲＡＭ４１ｃの初期化を行う処理の前の段階からメイン処理を開始するようになっており、設定変更処理の終了後のＲＡＭ４１ｃの初期化と、遊技単位毎のＲＡＭ４１ｃの初期化と、を共通の処理にて行うことが可能となる。
【０２６１】
また、メイン制御部４１は、ＲＡＭ４１ｃの初期化を行う場合に、初期化が終了するまで割込を禁止するようになっており、ＲＡＭ４１ｃの初期化の実行中にタイマ割込処理（メイン）が発生することにより、初期化した内容が変更されたり、タイマ割込処理（メイン）で行われる処理が正常に行われなくなってしまうことを防止できる。
【０２６２】
また、メイン制御部４１は、メイン処理において外部出力信号の出力状態を更新し、更新された出力状態に基づいて、その後のタイマ割込処理（メイン）にて外部出力信号の出力状態を変更するとともに、外部出力信号の出力状態を更新する場合に、更新が終了するまで割込を禁止するようになっており、外部出力信号の出力状態が完了する前にタイマ割込処理（メイン）が発生することにより、意図しないデータを示す外部出力信号が出力されてしまうことを防止できる。
【０２６３】
本実施例のメイン制御部４１は、上述の設定変更処理及びメイン処理において遊技の進行に応じてコマンドを生成し、生成したコマンドをコマンドキューに格納し、タイマ割込処理（メイン）において通常時コマンド送信処理を実行する毎にコマンドキューに格納されている未送信のコマンドをサブ制御部９１に対して送信する。
【０２６４】
図１６は、メイン制御部４１が生成した各種コマンドをコマンドキューに格納する際に実行するコマンド格納処理の制御内容を示すフローチャートである。尚、メイン制御部４１が送信するコマンドは、２バイトで構成され、１バイト目はＭＯＤＥ（コマンドの分類）を表し、２バイト目はＥＸＴ（コマンドの内容）を表す。また、本実施例で示すコマンドの形態は一例であって他のデータ形態を用いても良い。また、本実施例では、コマンドを２バイトの信号で構成しているが、これらコマンドを１バイトの信号または３バイト以上の信号で構成しても良い。
【０２６５】
コマンド格納処理では、まず、送信すべきコマンドを構成するＭＯＤＥとＥＸＴを生成する（Ｓｅ１）。そして、生成したコマンドのＭＯＤＥ及びＥＸＴを格納ポインタが示す領域番号の領域、すなわちコマンドキューの空き領域に格納した後（Ｓｅ２）、格納ポインタが示す領域番号に１を加算する（Ｓｅ３）。尚、領域番号は０〜３１の範囲の数値なので、格納ポインタが示す通し番号が３１の場合に１を加算して３２となるときには０に更新する。
【０２６６】
次いで、未送信フラグがセットされているか否かを確認し（Ｓｅ４）、未送信フラグがセットされていなければ未送信フラグをセットする（Ｓｅ５）。そして、格納ポインタが示す領域番号と、送信ポインタが示す領域番号とが一致しているか否か、すなわち未送信のコマンドでコマンドキューの全ての領域が満タンとなったか否かを確認し、一致している場合には、コマンドキューに格納されている未送信のコマンドが送信されて格納ポインタが示す領域番号と送信ポインタが示す領域番号とが一致しなくなるまで待機し、格納ポインタが示す領域番号と送信ポインタが示す領域番号とが一致しなくなった時点、すなわちコマンドキューに空きができた時点でコマンド格納処理を終了する（Ｓｅ６）。
【０２６７】
図１７は、メイン制御部４１がコマンド格納処理によりコマンドキューに格納したコマンドを送信するために、前述したタイマ割込処理（メイン）のタイマ割込２内において実行する通常時コマンド送信処理の制御内容を示すフローチャートである。
【０２６８】
通常時コマンド送信処理では、まず、未送信フラグがセットされているか否か、すなわち未送信のコマンドがコマンドキューに格納されているか否かを確認し（Ｓｆ１）、未送信フラグがセットされていない場合には、ドア開放検出スイッチ２５の検出状態を取得してドアコマンドを構成するＭＯＤＥ及びＥＸＴを生成し、生成したＭＯＤＥ及びＥＸＴを格納ポインタが示す領域番号の領域、すなわちコマンドキューの空き領域に格納する（Ｓｆ２、Ｓｆ３）。
【０２６９】
Ｓｆ１のステップにおいて未送信フラグがセットされていると判定した場合、及びＳｆ２、Ｓｆ３のステップにおいてドアコマンドを構成するＭＯＤＥ及びＥＸＴをコマンドキューに格納した後は、コマンドキューの送信ポインタ値が示す領域に格納されたコマンドをサブ制御部９１に対して送信する（Ｓｆ４〜Ｓｆ７）。詳しくは、まず、コマンドキューの送信ポインタ値が示す領域に格納されたコマンドを構成するＭＯＤＥを出力し（Ｓｆ４）、コマンドを出力した旨をサブ制御部９１に通知するためのストローブ信号を所定時間（本実施例では、１０μｓ）出力する（Ｓｆ５）。そして、送信ポインタ値が示す領域に格納されたコマンドを構成するＥＸＴを出力し（Ｓｆ６）、再度、ストローブ信号を所定時間出力する（Ｓｆ７）。
【０２７０】
次いで、送信ポインタが示す領域番号に１を加算する（Ｓｆ８）。尚、領域番号は０〜３１の範囲の数値なので、送信ポインタが示す領域番号が３１の場合に１を加算して３２となるときには０に更新する。その後、送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致しているか否か、すなわちコマンドキューに送信すべきコマンドが格納されているか否かを確認し（Ｓｆ９）、一致している場合、すなわちコマンドキューに送信すべきコマンドが格納されていない場合には、未送信フラグをクリアして通常時コマンド送信処理を終了する（Ｓｆ１０）。一方、送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致していない場合、すなわちコマンドキューに送信すべきコマンドが格納されている場合には、未送信フラグを維持して通常時コマンド送信処理を終了する。未送信フラグが維持されることで、コマンドキューに残された未送信コマンドは、次回以降のタイマ割込処理（メイン）において送信されることとなる。
【０２７１】
本実施例のメイン制御部４１は、上述のタイマ割込処理において電断フラグが設定された場合に電断処理（メイン）を実行する前に、電断時コマンド送信処理を実行することで、通常時コマンド送信処理以外においても、コマンドキューに格納されている未送信のコマンドをサブ制御部９１に対して送信する。
【０２７２】
図１８は、メイン制御部４１がタイマ割込処理（メイン）において電断処理（メイン）を行う前に実行する電断時コマンド送信処理の制御内容を示すフローチャートである。
【０２７３】
電断時コマンド送信処理においては、まず、未送信フラグがセットされているか否か、すなわち未送信のコマンドがコマンドキューに格納されているか否かを確認し（Ｓｇ１）、未送信フラグがセットされている場合には、コマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信する（Ｓｇ１〜Ｓｇ７）。
【０２７４】
詳しくは、まず、コマンドキューの送信ポインタ値が示す領域に格納されたコマンドを構成するＭＯＤＥを出力し（Ｓｇ２）、コマンドを出力した旨をサブ制御部９１に通知するためのストローブ信号を所定時間（本実施例では、１０μｓ）出力する（Ｓｇ３）。そして、送信ポインタ値が示す領域に格納されたコマンドを構成するＥＸＴを出力し（Ｓｇ４）、再度、ストローブ信号を所定時間出力する（Ｓｇ５）。その後、送信ポインタが示す領域番号に１を加算する（Ｓｇ６）。尚、通常時コマンド送信処理において送信ポインタを加算する場合と同様に、領域番号は０〜３１の範囲の数値なので、送信ポインタが示す領域番号が３１の場合に１を加算して３２となるときには０に更新する。
【０２７５】
次いで、送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致しているか否か、すなわち送信すべきコマンドがコマンドキューに格納されているか否かを判定し（Ｓｇ７）、送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致していない場合、すなわち送信すべきコマンドがコマンドキューに格納されている場合には、Ｓｇ７のステップにおいて送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致していると判定されるまで、Ｓｇ２〜Ｓｇ７のステップを繰り返し実行して、コマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信する。
【０２７６】
そして、Ｓｇ７のステップにおいて、送信ポインタが示す領域番号と格納ポインタが示す通し番号とが一致していると判定した場合、すなわちコマンドキューに格納されているコマンドが全てサブ制御部９１に対して送信されてコマンドキューにコマンドが残っていない場合に、メイン制御部４１は、未送信フラグをクリアして（Ｓｇ８）、電断時コマンド送信処理を終了し、電断処理（メイン）に移行する。
【０２７７】
このように、通常時コマンド送信処理においては、タイマ割込処理（メイン）において当該通常時コマンド送信処理が実行される毎に一のコマンド（２バイトからなる１組のコマンド）をサブ制御部９１に対して送信する一方、電断時コマンド送信処理においては、タイマ割込処理において電断処理（メイン）が行われる前に、コマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信するようになっている。
【０２７８】
図１９は、メイン制御部４１が前述したタイマ割込処理（メイン）において電断フラグが設定されていると判定した場合に、電断時コマンド送信処理の後に実行する電断処理（メイン）の制御内容を示すフローチャートである。尚、本実施例において電断処理は、非遊技プログラムに含まれる。
【０２７９】
電断処理（メイン）においては、まず、使用している可能性がある全てのレジスタをスタック領域に退避する（Ｓｇ１）。
【０２８０】
次いで、破壊診断用データ１を遊技ＲＡＭ領域に、破壊診断用データ２を非遊技ＲＡＭ領域に、破壊診断用データ３をスタック領域に、それぞれセットする（Ｓｇ２）。破壊診断用データは、いずれも５Ａ（Ｈ）である。そして、コマンドを出力するパラレル出力ポート５１３を含む全ての出力ポートを初期化する（Ｓｇ３）。これにより電断時コマンド送信処理により最後に出力されたコマンドに対応する出力ポートの出力状態が初期化される。次いで、遊技ＲＡＭ領域の全ての領域（未使用領域３を含む）の排他的論理和が０になるようにＲＡＭパリティ調整用データ１を計算して遊技ＲＡＭ領域にセットし、非遊技ＲＡＭ領域の全ての領域（未使用領域４を含む）の排他的論理和が０になるようにＲＡＭパリティ調整用データ２を計算して非遊技ＲＡＭ領域にセットし、スタック領域の全ての領域（未使用スタック領域及び使用中スタック領域）の排他的論理和が０になるようにＲＡＭパリティ調整用データ３を計算してスタック領域にセットし（Ｓｇ４）、ＲＡＭ４１ｃへのアクセスを禁止する（Ｓｇ５）。その後、電圧が低下してメイン制御部４１のＣＰＵ４１ａが停止して待機状態に移行する。そして、この待機状態のまま電圧が低下することで、メイン制御部４１は、内部的に動作停止状態になり、電断の際に確実に動作停止する。
【０２８１】
以上の処理によって、ＡＣ１００Ｖの電力供給が停止される場合には、電断処理が実行され、破壊診断用データ１〜３及びＲＡＭパリティ調整用データ１〜３がバックアップＲＡＭへストアされ、ＲＡＭアクセスが禁止状態にされ、出力ポートがクリアされる。
【０２８２】
このように本実施例では、電断を検出したときに実行する電断処理において、ＲＡＭ４１ｃのデータが正常か否かを判定するためのＲＡＭパリティ調整用データを算出する処理、電源投入時にデータが正常か否かを判定するためのＲＡＭパリティを算出する処理、電源投入時にＲＡＭパリティに基づいてＲＡＭ４１ｃのデータが正常か否かを判定する処理を、遊技ＲＡＭ領域、非遊技ＲＡＭ領域に分けて行うため、これらの処理を設計するうえで必要なデータの記憶領域を容易に特定することができる。
【０２８３】
尚、本実施例では、電断処理において対象となる領域の演算結果が特定の値（本実施例では０）となるように調整用データを対象となる領域に設定し、起動処理において対象となる領域の演算結果が特定の値となるか否かによってＲＡＭ４１ｃのデータが正常か否かを判定しているが、電断処理において対象となる領域の演算結果と、起動処理において対象となる領域の演算結果と、が一致するか否かによってＲＡＭ４１ｃのデータが正常か否かを判定する構成としても良い。また、演算方法は、排他的論理和に限らず、他の演算方法（例えば、総和）を用いても良い。
【０２８４】
また、本実施例では、電断処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データ１を算出し、未使用領域４を含む非遊技ＲＡＭ領域全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データを算出し、起動処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ１、未使用領域４を含む非遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ２に基づいてＲＡＭ４１ｃが正常か否かを判定するようになっており、未使用領域３、４に不正なプログラムが記憶された場合には、ＲＡＭ異常と判定されるため、未使用領域３、４に不正なプログラムが記憶されることを防止できる。
【０２８５】
尚、本実施例では、電断処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データ１を算出し、未使用領域４を含む非遊技ＲＡＭ領域全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データを算出し、起動処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ１、未使用領域４を含む非遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ２に基づいてＲＡＭ４１ｃが正常か否かを判定する構成であるが、未使用領域３を含まない遊技ＲＡＭ領域に格納されたデータを用いてＲＡＭパリティ調整用データ１を算出し、未使用領域４を含まない非遊技ＲＡＭ領域に格納されたデータを用いてＲＡＭパリティ調整用データを算出し、起動処理において未使用領域３を含まない遊技ＲＡＭ領域に格納されたデータを用いて算出されたＲＡＭパリティ１、未使用領域４を含まない非遊技ＲＡＭ領域に格納されたデータを用いて算出されたＲＡＭパリティ２に基づいてＲＡＭ４１ｃが正常か否かを判定する構成としても良い。
【０２８６】
また、電断処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データ１を算出し、未使用領域４を含まない非遊技ＲＡＭ領域に格納されたデータを用いてＲＡＭパリティ調整用データを算出し、起動処理において未使用領域３を含む遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ１、未使用領域４を含まない非遊技ＲＡＭ領域に格納されたデータを用いて算出されたＲＡＭパリティ２に基づいてＲＡＭ４１ｃが正常か否かを判定する構成としても良く、このような構成であっても、未使用領域３に不正なプログラムが記憶された場合には、ＲＡＭ異常と判定されるため、未使用領域３に不正なプログラムが記憶されることを防止できる。
【０２８７】
また、電断処理において未使用領域３を含まない遊技ＲＡＭ領域に格納されたデータを用いてＲＡＭパリティ調整用データ１を算出し、未使用領域４を含む非遊技ＲＡＭ領域全ての領域に格納されたデータを用いてＲＡＭパリティ調整用データを算出し、起動処理において未使用領域３を含まない遊技ＲＡＭ領域に格納されたデータを用いて算出されたＲＡＭパリティ１、未使用領域４を含む非遊技ＲＡＭ領域の全ての領域に格納されたデータを用いて算出されたＲＡＭパリティ２に基づいてＲＡＭ４１ｃが正常か否かを判定する構成としても良く、このような構成であっても、未使用領域４に不正なプログラムが記憶された場合には、ＲＡＭ異常と判定されるため、未使用領域４に不正なプログラムが記憶されることを防止できる。
【０２８８】
また、本実施例では、電断を検出したときに実行する電断処理において、ＲＡＭ４１ｃのデータが正常か否かを判定するためのＲＡＭパリティ調整用データを算出する処理、電源投入時にデータが正常か否かを判定するためのＲＡＭパリティを算出する処理、電源投入時にＲＡＭパリティに基づいてＲＡＭ４１ｃのデータが正常か否かを判定する処理を、遊技ＲＡＭ領域、非遊技ＲＡＭ領域に分けて行う構成であるが、電断処理において、遊技ＲＡＭ領域に格納されたデータ及び非遊技ＲＡＭ領域に格納されたデータの双方を用いた演算結果が特定の値となる調整用データを算出して遊技ＲＡＭ領域または非遊技ＲＡＭ領域に設定し、起動処理において遊技ＲＡＭ領域に格納されたデータ及び非遊技ＲＡＭ領域に格納されたデータの双方を用いた演算結果が特定の値となるか否かに基づいてＲＡＭ４１ｃのデータが正常か否かを判定する構成、すなわち電断処理において、ＲＡＭ４１ｃのデータが正常か否かを判定するための調整用データを算出する処理、電源投入時にデータが正常か否かを判定するためのデータを算出する処理、電源投入時に算出したデータに基づいてＲＡＭ４１ｃのデータが正常か否かを判定する処理を、遊技ＲＡＭ領域、非遊技ＲＡＭ領域を区別することなく行う構成としても良く、このような構成とすることで、電断処理において、ＲＡＭ４１ｃのデータが正常か否かを判定するための調整用データを算出する処理、電源投入時にデータが正常か否かを判定するためのデータを算出する処理、電源投入時に算出したデータに基づいてＲＡＭ４１ｃのデータが正常か否かを判定する処理に必要なプログラム容量を削減できる。
【０２８９】
また、このような構成においても、電断処理において遊技ＲＡＭ領域、非遊技ＲＡＭ領域だけでなく、未使用領域３、４を含む全ての領域のデータを用いて調整用データを算出し、起動処理においても遊技ＲＡＭ領域、非遊技ＲＡＭ領域だけでなく、未使用領域３、４を含む全ての領域のデータを用いて算出した結果が特定の値となるか否かによってＲＡＭ４１ｃのデータが正常か否かを判定する構成とすることが好ましく、このような構成においても、未使用領域１、２に不正なプログラムが記憶された場合には、ＲＡＭ異常と判定されるため、未使用領域１、２に不正なプログラムが記憶されることを防止できる。
【０２９０】
本実施例では、遊技制御基板４０のリセット回路４９は、図２０に示すように、電源基板１０１から供給される電源電圧のうちメイン制御部４１の駆動電圧（ＤＣ＋５Ｖ）よりも高い監視電圧（ＤＣ＋２４Ｖ）を監視し、電源投入時に監視電圧が、メイン制御部４１が動作可能となる動作可能電圧（メイン）（＋３．５Ｖ）を超えた場合にリセット信号をＯＮにしてメイン制御部４１に対して出力し、その後、メイン制御部４１の駆動電圧（ＤＣ＋５Ｖ）が安定するために十分な時間（監視電圧が＋２４Ｖまで上昇するのに十分な時間）が経過したときに、リセット信号をＯＦＦにしてメイン制御部４１を起動させる。一方、演出制御基板９０のリセット回路９５は、電源投入時においてリセット回路４９によりリセット信号がＯＦＦにされるとき、すなわちメイン制御部４１が起動することとなるタイミングよりも早いタイミングでサブ制御部９１に対して出力するリセット信号をＯＦＦにすることで、電源投入時においてメイン制御部４１よりも早い段階でサブ制御部９１を起動させ、メイン制御部４１から送信される復帰コマンドまたは設定コマンド（開始）をサブ制御部９１が受信可能な状態で待機させる。
【０２９１】
そして、メイン制御部４１は、リセット回路４９が出力するリセット信号がＯＦＦとなって起動した際に、上述の初期設定処理を実行し、電断前の状態に復帰可能な場合には、初期設定処理の終了時に復帰コマンドを送信した後、タイマ割込を許可し、その後、タイマ割込処理を一定間隔毎に実行する。また、リセット信号がＯＦＦとなって起動した際に、設定キースイッチ３７がＯＮの状態であり、ＲＡＭ４１ｃが初期化され、電断前の状態に復帰させずに設定変更状態を開始する場合には、初期設定処理の終了時においてタイマ割込が許可される前に、復帰コマンドに替えて設定コマンド（開始）をサブ制御部９１に対して送信した後、タイマ割込を許可し、その後、タイマ割込処理を一定間隔毎に実行する。一方、サブ制御部９１は、メイン制御部４１が起動する前に起動し、初期設定処理を実行して完了させ、コマンドを受信可能な状態で復帰コマンドまたは設定コマンド（開始）を受信するまで待機する。
【０２９２】
次いで、メイン制御部４１は、復帰コマンドまたは設定コマンドを送信した後、タイマ割込処理（メイン）を一定間隔毎に実行し、当該タイマ割込処理（メイン）において通常時コマンド送信処理を実行した際に、コマンドキューに送信すべきコマンドが格納されていない場合には、ドア開放検出スイッチ２５の検出状態に基づいてドアコマンドを生成して送信する。一方、サブ制御部９１は、復帰コマンドまたは設定コマンド（開始）を受信することで、演出装置の出力制御を開始する。
【０２９３】
また、メイン制御部４１は、タイマ割込処理（メイン）において実行する通常時コマンド送信処理によりドアコマンド等を送信するとともに、メイン制御部４１の起動後、初期設定処理の終了時まではタイマ割込が許可されることがなく、メイン制御部４１の起動後、復帰コマンドまたは設定コマンド（開始）を送信した後に、通常時コマンド送信処理により送信されるドアコマンド等のコマンドの送信が許可されることとなる。
【０２９４】
また、図２０に示すように、メイン制御部４１は、タイマ割込処理（メイン）において停電判定処理を実行して、電断検出回路４８から電圧低下信号が入力されているか否かに基づいて電断の発生を特定する。電断検出回路４８は、メイン制御部４１の駆動電圧（ＤＣ＋５Ｖ）よりも高い前述の監視電圧（ＤＣ＋２４Ｖ）を監視し、監視電圧がメイン制御部４１の駆動電圧（ＤＣ＋５Ｖ）よりも高い電圧低下検出電圧（メイン）（＋２０Ｖ）以下になると電圧低下信号を出力するため、メイン制御部４１は、監視電圧が電圧低下検出電圧（メイン）以下となることで電断の発生が特定されることとなる。そして、メイン制御部４１は、停電判定処理において電断の発生が特定されると、電断時コマンド送信処理を実行して、コマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信した後、電断処理（メイン）を実行する。
【０２９５】
また、リセット回路４９は、監視電圧が電圧低下検出電圧（メイン）（＋２０Ｖ）よりも低く、動作可能電圧（メイン）（＋３．５Ｖ）よりも高い動作制限電圧（メイン）（＋８Ｖ）以下となることで、リセット信号をＯＮにしてメイン制御部４１を動作不能な状態とする。動作制限電圧（メイン）は、電断検出回路４８が電断の発生を検出する電圧低下検出電圧（メイン）以下となった後、動作制限電圧（メイン）に降下するまでの時間が、電圧低下検出電圧（メイン）以下となってからメイン制御部４１が電断の発生を特定し、電断時コマンド送信処理を実行し、かつ電断処理を実行するのに必要な時間が確保されるように設定されている。
【０２９６】
電圧低下検出電圧（メイン）以下となってからメイン制御部４１が電断の発生を特定し、電断時コマンド送信処理を実行し、かつ電断処理を実行するのに必要な時間とは、メイン制御部４１が電断を検出するまでの最大時間（タイマ割込処理（メイン）毎に電断の発生が特定されるため０．５６ｍｓ）と、電断時コマンド送信処理にてコマンドキューに格納可能な最大数（３２）のコマンドを送信するのに要する時間（１コマンド送信に４０μｓ（ＭＯＤＥ送信１０μｓ、送信間隔１０μｓ、ＥＸＴ送信１０μｓ、送信間隔１０μｓ）要するため、最大数の送信の場合４０×３２＝１２８０μｓ）と、電断処理（メイン）に要する時間と、を合算した時間である。
【０２９７】
一方、電断検出回路９８は、サブ制御部９１の駆動電圧（ＤＣ＋５Ｖ）よりも高い前述の監視電圧（ＤＣ＋２４Ｖ）を監視し、監視電圧が、動作制限電圧（メイン）（＋８Ｖ）よりも低く、サブ制御部９１の駆動電圧（ＤＣ＋５Ｖ）よりも高い電圧低下検出電圧（サブ）（＋６Ｖ）以下になると電圧低下信号を出力するため、サブ制御部９１は、監視電圧が電圧低下検出電圧（サブ）以下となることで電断の発生が特定されることとなる。そして、サブ制御部９１は、停電判定処理において電断の発生が特定されると、電断処理（サブ）を実行する。
【０２９８】
また、リセット回路９５は、監視電圧が電圧低下検出電圧（サブ）（＋６Ｖ）よりも低く、動作可能電圧（サブ）（＋３．５Ｖ）よりも高い動作制限電圧（サブ）（＋４Ｖ）以下となることで、リセット信号をＯＮにしてサブ制御部９１を動作不能な状態とする。動作制限電圧（サブ）は、電断検出回路９８が電断の発生を検出する電圧低下検出電圧（サブ）以下となった後、動作制限電圧（サブ）に降下するまでの時間が、電圧低下検出電圧（サブ）以下となってからサブ制御部９１が電断の発生を特定し、電断処理を実行するのに必要な時間が確保されるように設定されている。
【０２９９】
また、サブ制御部９１は、監視電圧が、動作制限電圧（メイン）、すなわちメイン制御部４１による電断時コマンド送信処理及び電断処理（メイン）の完了後にメイン制御部４１が動作不能となる電圧よりも低い電圧低下検出電圧（サブ）以下になると出力される電圧低下信号により電断の発生を特定して電断処理（サブ）を実行するようになっており、少なくともメイン制御部４１が電断時コマンド送信処理を完了させるまでコマンドを受信可能な状態が維持されるので、メイン制御部４１が電断時コマンド送信処理により送信したコマンドを全て受信した状態で電断処理を実行することができるようになっている。尚、サブ制御部９１が電断の発生を特定するタイミングが、メイン制御部４１が動作不能となる前のタイミングであっても、メイン制御部４１が電断時コマンド送信処理により送信したコマンドを全て受信するのに十分なタイミングまでコマンドを受信可能な状態が維持される構成であれば、メイン制御部４１が電断時コマンド送信処理により送信したコマンドを全て受信した状態で電断処理を実行することができる。
【０３００】
このように、本実施例のメイン制御部４１は、メイン処理等において遊技の進行に応じてコマンドを生成し、生成したコマンドをコマンドキューに格納し、タイマ割込処理（メイン）において通常時コマンド送信処理を実行する毎にコマンドキューに格納されている未送信のコマンドをサブ制御部９１に対して送信する構成である。
【０３０１】
このような構成では、複数のコマンドがコマンドキューに格納されている状態で、スロットマシン１への電力供給が停止されて電断が生じることがあり、メイン制御部４１による電断検出時にメイン制御部４１側において複数のコマンドが未送信の状態であって、電断後も未送信のコマンドをそのまま保持し、電断復帰後に電断前から保持されていたコマンドをサブ制御部９１に対して送信すると、電断時及び電断復帰時におけるメイン制御部４１側の制御状態と、サブ制御部９１側で特定されるメイン制御部４１側の制御状態と、が異なってしまうこととなる。
【０３０２】
これに対して、本実施例では、メイン制御部４１は、電断検出時に、電断前の制御状態に復帰可能とするための電断処理（メイン）を実行する前にコマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信するため電断時コマンド送信処理を実行するので、電断時及び電断復帰時におけるメイン制御部４１側の制御状態と、サブ制御部９１側で特定されるメイン制御部４１側の制御状態と、を極力一致させることができる。
【０３０３】
また、メイン制御部４１は、電断検出時に、電力供給が停止されてから制御不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンド（本実施例では、最大３２のコマンド）をサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長いので、電断検出後、コマンドキューに格納されている全てのコマンドを送信してから電断処理（メイン）までの処理を確実に実行させることができる。
【０３０４】
尚、本実施例では、遊技の制御を行う第１の制御手段であるメイン制御部４１が、演出の制御を行う第２の制御手段であるサブ制御部９１に対して制御情報としてコマンドを送信する構成であるが、第１の制御手段は、遊技の制御以外の制御、例えば、演出の制御を行う制御手段であっても良い。また、第２の制御手段は、第１の制御手段から送信された制御情報に基づいて何らかの制御を行う制御手段であれば良く、例えば、第１の制御手段が演出の制御を行う制御手段である場合に、第１の制御手段から送信された制御情報に基づいて演出装置の制御を行う制御手段を第２の制御手段としても良い。
【０３０５】
また、本実施例では、メイン制御部４１（第１の制御手段）が実行する電断処理（メイン）として、バックアップ領域のＲＡＭパリティ（排他的論理和）が０となるようにＲＡＭパリティ調整用データを設定し、かつ破壊診断用データ（０以外のデータ）を設定する処理を行うことで、電断復帰時にＲＡＭパリティが０であり、かつ破壊診断用データが一致することによりバックアップ領域のデータが正常と判定可能となる構成であるが、スロットマシン１への電力供給が停止して電断が生じた際に、電断前の制御状態に復帰可能とするための電断処理であれば良く、例えば、バックアップ領域のチェックサムを設定し、電断復帰時に算出したチェックサムと一致することでバックアップ領域のデータが正常と判定可能となる構成でも良い。
【０３０６】
また、本実施例では、遊技制御基板４０のリセット回路４９が、電断発生時に、監視電圧が降下してメイン制御部４１が動作不能となる動作可能電圧（メイン）以下となる前にリセット信号をメイン制御部４１に供給し、リセット信号が供給されることでメイン制御部４１は一切の動作を停止させる、すなわち制御不能な状態とする構成であり、メイン制御部４１は、電断検出後、リセット信号が供給されて制御不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンドをサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長くなる構成であるが、電断時にメイン制御部４１にリセット信号が供給されない構成においては、監視電圧がメイン制御部４１の動作可能電圧（メイン）を下回って制御不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンドをサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長くなる構成であっても、電断検出後、コマンドキューに格納されている全てのコマンドを送信してから電断処理（メイン）までの処理を確実に実行させることができる。
【０３０７】
また、本実施例では、電断発生時にメイン制御部４１の動作を停止させる動作制限電圧（メイン）が、電断検出回路４８が電断の発生を検出する電圧低下検出電圧（メイン）以下となった後、動作制限電圧（メイン）に降下するまでの時間が、電圧低下検出電圧（メイン）以下となってからメイン制御部４１が電断の発生を特定し、電断時コマンド送信処理を実行し、かつ電断処理を実行するのに必要な時間が確保されるように設定されることで、電断発生後、メイン制御部４１が動作不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンドをサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長くなる構成であるが、電断発生時からメイン制御部４１の駆動電圧の低下をコンデンサ、電池、キャパシタ等により遅延させることで電断発生後、メイン制御部４１が動作不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンドをサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長くなる構成としたり、メイン制御部４１が動作不能となるまでの期間が、コマンドキューに格納可能な最大数のコマンドをサブ制御部９１に対して送信し、かつ電断処理（メイン）が完了するのに要する期間よりも長くなるようにコマンドキューに格納可能な最大数を設定する構成としても良く、これらの構成であっても、電断発生後、コマンドキューに格納されている全てのコマンドを送信してから電断処理（メイン）までの処理を確実に実行させることができる。
【０３０８】
また、本実施例のメイン制御部４１は、電断検出時に、電断時コマンド送信処理を実行して、コマンドキューに格納されている全てのコマンドをサブ制御部９１に対して送信した後、電断処理（メイン）を実行し、当該電断処理（メイン）においてコマンドを出力する出力ポートを含むパラレル出力ポート５１３の各出力ポートを初期化するので、電力供給が不安定な状態で誤ってコマンドが送信されてしまうことを防止できる。
【０３０９】
また、本実施例のメイン制御部４１は、タイマ割込処理（メイン）において通常時コマンド送信処理を実行することで、コマンドキューに格納されている格納領域に格納されているコマンドのうち所定数（本実施例では、１つ）のコマンドを所定契機（タイマ割込処理（メイン）４回に１回）毎にサブ制御部９１に対して送信するので、所定数（本実施例では、１つ）以上のコマンドがコマンドキューに格納されている場合でも、１回のタイマ割込処理（メイン）において送信されるコマンドの送信数が所定数に制限されるため、通常時コマンド送信処理におけるコマンドの送信によりメイン制御部４１による他の制御が遅延してしまうことを防止できる。
【０３１０】
また、本実施例のメイン制御部４１は、所定契機において（タイマ割込処理（メイン）において実行する通常時コマンド送信処理を行うとき）、コマンドキューに遊技の進行に応じたコマンド（内部当選コマンド、停止操作時コマンド等）が格納されていない場合に、ドア開放検出スイッチ２５の検出状態を示すドアコマンドをサブ制御部９１に対して送信することで、前面扉１ｂの開閉状態をサブ制御部９１が特定可能となるとともに、ドアコマンドは、所定契機においてコマンドキューに遊技の進行に応じたコマンドが格納されていない場合に送信されるので、遊技の進行に応じたコマンドの送信がドアコマンドの送信によって遅延したり、ドアコマンドの送信によりメイン制御部４１による他の制御（例えば、メイン処理における各制御）が遅延してしまうことを防止できる。
【０３１１】
また、メイン制御部４１は、その起動後、復帰コマンドまたは設定コマンド（開始）を送信した後に、通常時コマンド送信処理により送信されるドアコマンド等のコマンドの送信が許可されるようになっており、電源投入後、電断前の状態に復帰させて復帰コマンドを送信するか、電断前の状態に復帰させずに設定コマンド（開始）を送信するまではドアコマンドが送信されることがないので、メイン制御部４１を復帰させるか否かが確定した後に、サブ制御部９１側でメイン制御部４１側の状態を特定することができるとともに、メイン制御部４１が電断前の制御状態に復帰するか否か確定していない状態でサブ制御部９１がコマンドを受信することで、意図しない動作が行われてしまうことを防止できる。
【０３１２】
尚、本実施例では、通常時コマンド送信処理においてコマンドキューにいずれのコマンドも格納されていない場合に、ドア開放検出スイッチ２５の検出状態を示すドアコマンドを生成して送信する構成であるが、通常時コマンド送信処理においてコマンドキューにいずれのコマンドも格納されていない場合に、スイッチ検出回路４４の出力に基づいて操作スイッチ類（ＭＡＸＢＥＴスイッチ６、スタートスイッチ７、ストップスイッチ８Ｌ、８Ｃ、８Ｒ）の検出状態（ｏｎ／ｏｆｆ）を示すコマンド、エラーの検出の有無及び検出したエラーの種類を示すコマンド、当該ゲームの遊技状態を特定可能なコマンドなど、メイン制御部４１側の制御状態を特定可能なコマンドを生成してサブ制御部９１に対して送信する構成としても良く、このような構成であっても、メイン制御部４１側の制御状態をサブ制御部９１が特定可能となるとともに、遊技の進行に応じたコマンドの送信がメイン制御部４１の制御状態を特定可能なコマンドの送信によって遅延したり、メイン制御部４１の制御状態を特定可能なコマンドの送信によりメイン制御部４１による他の制御が遅延してしまうことを防止できる。
【０３１３】
次に、メイン制御部４１が遊技の進行制御等に用いる時間間隔を計測するためのタイマカウンタについて、図２１、１７を用いて説明する。
【０３１４】
メイン制御部４１は、計時開始条件が成立したときに、ＲＡＭ４１ｃに割り当てられたタイマカウンタのタイマ値として計時時間に応じた初期値を設定するとともに、タイマ割込処理（メイン）において定期的にタイマ値を減算し、タイマ値が０となることで計時時間が経過したことを特定するようになっている。
【０３１５】
詳しくは、メイン制御部４１は、メイン処理において計時開始条件が成立したときに、当該条件に応じたタイマカウンタが割り当てられた領域に計時時間に応じたタイマ値の初期値を設定する。設定されたタイマ値は、タイマ割込処理（メイン）の時間カウンタ更新処理において、約２．２４ｍｓ毎に０となるまで１ずつ減算される。
【０３１６】
そして、メイン処理では、図２１に示すように、該当するタイマカウンタのアドレスを取得し（Ｓｉ１）、取得した値を読み出し（Ｓｉ２）、読み出した値が０でないか否かを判定し（Ｓｉ３）、読み出した値が０であると判定した場合に、計時時間が経過したことを特定する。
【０３１７】
本実施例において用いるタイマカウンタは、図２２に示すように、初期値が１バイト以下の１バイトタイマＡ、１バイトタイマＢ、１バイトタイマＣ、初期値が１バイトを超え、２バイト以下の２バイトタイマＡ、２バイトタイマＢ、２バイトタイマＣ、２バイトタイマＤを含む。
【０３１８】
１バイトタイマは、１バイト以内のタイマ値にて計測可能な比較的短い期間を計測するためのタイマであり、例えば、外部出力信号の出力期間を計測する外部出力信号タイマ、ＬＥＤの出力更新期間を計測するＬＥＤ更新タイマ、停止操作の検出後、再度の停止操作が有効化されるまでの期間を計測する停止無効タイマ、リール停止後、メダルの払出が開始するまでの期間を計測する払出待ちタイマ、投入メダルセンサ３１のＯＮが検出されてからの期間を計測する投入検出タイマ、投入口センサ２６のＯＮが検出されてからの期間を計測する投入口検出タイマ、払出センサ３４ｃのＯＮが検出されてからの期間を計測する払出検出タイマ、リール回転開始後、停止操作が有効となるまでの期間を計測する始動時タイマなどがある。このうち停止無効タイマ、払出待ちタイマ、始動時タイマは、これらのタイマによる計測期間が１遊技の終了するタイミングを跨ぐことはないが、外部出力信号タイマ、ＬＥＤ更新タイマ、投入検出タイマ、投入口検出タイマ、払出検出タイマは、これらのタイマによる計測時間が１遊技の終了するタイミングを跨ぐことがある。
【０３１９】
２バイトタイマは、１バイト以内のタイマ値では計測できない比較的長い期間を計測するためのタイマであり、例えば、１遊技に必要な規定時間（約４．１秒）を計測する１遊技時間タイマ、外部出力信号のうちセキュリティ信号の最低出力期間を計測するセキュリティ信号タイマ、遊技終了からの期間を計測する待機時間タイマ、ホッパーモータ３４ｂの駆動後、払出センサ３４ｃが検出されない期間を計測するホッパーエンプティタイマなどがある。このうち待機時間タイマ、ホッパーエンプティタイマは、これらのタイマによる計測期間が１遊技の終了するタイミングを跨ぐことはないが、１遊技時間タイマ、セキュリティ信号タイマは、これらのタイマによる計測時間が１遊技の終了するタイミングを跨ぐことがある。
【０３２０】
このようにタイマカウンタは、１遊技の終了するタイミング、すなわち遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミング（１遊技の終了時または特定の遊技状態の終了時においてＲＡＭ４１ｃの一部が初期化されるタイミング）を跨ぐ計測期間を計測するタイマカウンタと、遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのないタイマカウンタと、を含むが、いずれのタイマカウンタも遊技の進行に応じたタイミングでは初期化されることのない特別ワークに割り当てられている。
【０３２１】
これらタイマカウンタのうち１バイトタイマＡ〜Ｃは、ＲＡＭ４１ｃの連続する３バイトの領域（８０４ＣＨ〜８０４ＥＨ）に１バイトずつ割り当てられており、２バイトタイマＡ〜Ｄは、ＲＡＭ４１ｃの連続する８バイトの領域（８０４ＦＨ〜８０５５Ｈ）に２バイトずつ割り当てられている。さらに、１バイトタイマＡ〜Ｃ、２バイトタイマＡ〜ＤもＲＡＭ４１ｃの連続する領域に割り当てられている。以下では、１バイトタイマＡ〜Ｃが割り当てられた領域を１バイトタイマ群と呼び、２バイトタイマＡ〜Ｄが割り当てられた領域を２バイトタイマ群と呼ぶ。すなわち１バイトタイマ群及び２バイトタイマ群はいずれも、所定の規則で連続するアドレスが割り当てられた領域に設定されている。尚、所定の規則で連続するアドレスが割り当てられる領域とは、例えば、開始アドレス及び開始アドレスからＮ（Ｎは自然数）ずつ加算されるアドレスが割り当てられる領域である。
【０３２２】
図２３は、時間カウンタ更新処理の制御内容を示すフローチャートである。
【０３２３】
時間カウンタ更新処理では、まず、１バイト用処理回数として、更新すべき１バイトのタイマカウンタの数（本実施例では３）をセットし（Ｓｊ１）、１バイトタイマ群の先頭アドレス（８０４ＣＨ）にポインタをセットする（Ｓｊ２）。
【０３２４】
次いで、指定アドレス（ポインタが示すアドレス）に格納された１バイトの値が０でなければ指定アドレスの１バイトの値を１減算し（Ｓｊ３）、Ｓｊ１のステップで設定した処理回数を１減算し（Ｓｊ４）、減算後の処理回数が０か否かを判定する（Ｓｊ５）。
【０３２５】
Ｓｊ５のステップで減算後の処理回数が０でない場合、すなわち全ての１バイトタイマの更新が終了していない場合には、ポインタを１加算し（Ｓｊ６）、Ｓｊ３のステップに戻る。これにより、未処理の１バイトタイマのアドレスにポインタが移動し、指定アドレスの１バイトの値が０でなければ減算される。
【０３２６】
Ｓｊ５のステップで減算後の処理回数が０の場合、すなわち全ての１バイトタイマの更新が終了した場合には、２バイト用処理回数として、更新すべき２バイトのタイマカウンタの数（本実施例では４）をセットし（Ｓｊ７）、ポインタを１加算する（Ｓｊ８）。これにより、２バイトカウンタ群の先頭アドレス（８０４ＦＨ）にポインタが移動する。
【０３２７】
次いで、指定アドレス（ポインタが示すアドレス）及び次のアドレスからなる領域に格納された２バイトの値が０でなければ指定アドレス及び次のアドレスの２バイトの値を１減算し（Ｓｊ９）、Ｓｊ７のステップで設定した処理回数を１減算し（Ｓｊ１０）、減算後の処理回数が０か否かを判定する（Ｓｊ１１）。
【０３２８】
Ｓｊ１１のステップで減算後の処理回数が０でない場合、すなわち全ての２バイトタイマの更新が終了していない場合には、ポインタを２加算し（Ｓｊ１２）、Ｓｊ９のステップに戻る。これにより、未処理の２バイトタイマのアドレスにポインタが移動し、指定アドレス及び次のアドレスの２バイトの値が０でなければ減算される。
【０３２９】
Ｓｊ１１のステップで減算後の処理回数が０の場合、すなわち全ての２バイトタイマの更新が終了した場合には、処理を終了する。
【０３３０】
このように本実施例では、ＲＡＭ４１ｃに割り当てられたタイマカウンタの値を定期的に更新し、特定の値（０）となることで時間の経過を特定するようになっている。従来は、複数種類の時間間隔を計測する場合に、計時を要する複数種類の処理内で、タイマ値の設定及び更新を行っており、複数種類のタイマ値を更新するためのプログラムをそれぞれの処理内に設ける必要があるため、プログラム容量が増大する要因となっていた。また、複数種類のタイマカウンタは、それぞれが用いられる処理毎のデータ群として割り当てられているため、一の処理においてまとめて更新するためには、それぞれの関連性のないアドレスの値を読み出す必要があった。
【０３３１】
これに対して本実施例では、複数種類のタイマカウンタ値が格納される領域がＲＡＭ４１ｃの所定の規則で連続するアドレスが割り当てられた領域に設定されるとともに、指定アドレスに格納されたタイマ値を更新する処理を、現在の指定アドレスに対して定数を加算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新するので、複数種類のアドレスをそれぞれ指定して当該アドレスの値を更新する処理を個々の処理で行う場合よりもプログラム容量を削減することができる。
【０３３２】
尚、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成であれば良く、例えば、現在の指定アドレスに対して定数を加算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良いし、基準アドレスに対して処理数に応じた値（例えば、１バイトカウンタであれば、処理数１の場合に＋１、処理数２の場合に＋２、処理数３の場合に＋３…）を加算または減算することで複数種類のタイマカウンタ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良い。
【０３３３】
また、本実施例では、１バイトタイマＡ〜Ｃ、２バイトタイマＡ〜Ｄの７種類のタイマカウンタの値を備える構成であるが、少なくとも２種類以上のタイマカウンタの値をＲＡＭ４１ｃの所定の規則で連続するアドレスが割り当てられた領域に設定し、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより２種類以上のタイマ値を更新する構成であれば、上記のようにプログラム容量を削減することができる。
【０３３４】
また、１バイトタイマまたは２バイトタイマの一方のみ、タイマカウンタの値をＲＡＭ４１ｃの所定の規則で連続するアドレスが割り当てられた領域に設定し、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良い。
【０３３５】
また、メイン制御部４１が備える一部のタイマカウンタのみ、タイマ値をＲＡＭ４１ｃの所定の規則で連続するアドレスが割り当てられた領域に設定し、指定アドレスに格納されたタイマ値を更新する処理を、所定の演算を行うことで複数種類のタイマ値が格納された領域に対する指定アドレスを変更しながら繰り返し実行することにより複数種類のタイマ値を更新する構成でも良い。
【０３３６】
また、本実施例では、計測する期間の種類毎に別個のタイマカウンタを備える構成であるが、例えば、計測する期間が重複しない複数種類の期間について一のタイマカウンタを共用する構成としても良い。
【０３３７】
また、本実施例では、メイン制御部４１が実行する処理として、遊技の進行状況に関わらず予め定められた処理を定期的に行うタイマ割込処理（メイン）と、遊技の進行状況に応じて段階的に異なる処理を行うメイン処理と、を含み、メイン制御部４１は、メイン処理において計時条件が成立した場合にタイマカウンタに初期値を設定し、タイマ割込処理（メイン）において複数種類のタイマ値を更新するようになっており、メイン処理を構成する各処理内に複数種類のタイマ値を更新する処理を設ける必要がないため、複数種類のタイマ値の更新に係るプログラム容量を削減することができる。
【０３３８】
尚、本実施例では、メイン処理に定期的に割り込んでタイマ割込処理（メイン）を実行する構成であるが、定期的に行うタイマ割込処理内で、遊技の進行状況に関わらず予め定められた処理を行う定期処理と、遊技の進行状況に応じて段階的に異なる処理を行うメイン処理と、の双方を行う構成としても良く、このような構成においても、メイン制御部４１は、メイン処理において計時条件が成立した場合にタイマカウンタに初期値を設定し、定期処理において複数種類のタイマ値を更新する構成とすることで、メイン処理を構成する各処理内に複数種類のタイマ値を更新する処理を設ける必要がないため、複数種類のタイマ値の更新に係るプログラム容量を削減することができる。
【０３３９】
また、本実施例では、時間カウンタ更新処理において、指定アドレスの値が０でないことを条件に当該アドレスの値を更新するようになっており、タイマ値が異常な値に更新されてしまうことを防止できる。
【０３４０】
また、本実施例では、時間カウンタ更新処理において、更新するタイマカウンタの数と同数の処理数を設定し、設定した処理数分、タイマ値を更新する処理を繰り返し実行する構成であるため、更新するタイマカウンタの数の管理が容易になるとともに、例えば、更新間隔が異なる複数種類のタイマカウンタを備える場合などに、設定する処理数に応じて更新するタイマ値の種類を任意に設定することができる。
【０３４１】
尚、処理数、すなわち更新するタイマカウンタの数は、プログラムに設定されていても良いし、テーブルに設定された値を読み出して設定するようにしても良い。
【０３４２】
また、最初に処理数を設定することなく、最後に更新するタイマカウンタを予め設定するとともに、当該タイマカウンタのアドレスに到達するまでタイマ値を更新する処理を繰り返し実行する構成としたり、最後に更新するタイマカウンタの次のアドレスに特定のエンド値（例えば、ＦＦＨ）を格納し、指定アドレスから読み出された値が特定のエンド値となるまでタイマ値を更新する処理を繰り返し実行する構成としても良い。
【０３４３】
また、本実施例では、１バイトのタイマカウンタと、２バイトのタイマカウンタと、を備え、１バイトのタイマ値を更新する処理と、２バイトのタイマ値を更新する処理と、を別個に備えるため、１バイトのタイマ値を更新する処理と、２バイトのタイマ値を更新する処理と、を共通化する場合よりもプログラムの容量やＲＡＭ４１ｃにおいてタイマ値が占有する容量を削減することができる。
【０３４４】
尚、本実施例では、２バイトのタイマカウンタを備えることで１バイトを超える初期値に対応する相対的に長い時間を計測する構成であるが、例えば、更新間隔が異なるタイマカウンタ、例えば、タイマ割込処理（メイン）４回に１回更新する第１のタイマカウンタと、１４回に１回更新する第２のタイマカウンタと、を備えることにより、２バイトのカウンタを設けることなく、相対的に長い時間間隔を計測する構成としても良く、このようにすることで、１バイトのタイマ値を更新する処理と、２バイトのタイマ値を更新する処理と、それぞれ設ける必要がなくなるため、タイマ値の更新に係るプログラム容量を削減できる。
【０３４５】
また、本実施例では、複数種類のタイマカウンタがＲＡＭ４１ｃにおいて遊技の進行に応じて初期化されることのない特別ワークに割り当てられており、遊技の進行に応じて初期化されることがないため、遊技の進行状況に関わらず、遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐ期間の時間を計測することができる。
【０３４６】
特に、本実施例では、計測期間が１遊技の終了するタイミング、すなわち遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのあるタイマカウンタだけでなく、計測期間が遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのないタイマカウンタについても他のタイマカウンタとともに特別ワークに割り当てられた領域に格納されているため、タイマカウンタの管理が容易になるとともに、計測期間が遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのないタイマカウンタを、計測期間が遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのあるタイマカウンタに変更する等、後の設計変更等によりタイマカウンタの用途を容易に変更することができる。また、上記のように計測する期間が重複しない複数種類の期間について一のタイマカウンタを共用する構成であれば、遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのある計測期間と、遊技の進行に応じてＲＡＭ４１ｃの一部が初期化されるタイミングを跨ぐことのない計測期間と、を一のタイマカウンタにて計測することが可能となる。
【０３４７】
以上、本発明の実施例を図面により説明してきたが、本発明はこの実施例に限定されるものではなく、本発明の主旨を逸脱しない範囲における変更や追加があっても本発明に含まれることは言うまでもない。
【０３４８】
実施例では、本発明を遊技用価値としてメダル並びにクレジットを用いて賭数が設定されるスロットマシンに適用した例について説明したが、遊技用価値として遊技球を用いて賭数を設定するスロットマシンや、遊技用価値としてクレジットのみを使用して賭数を設定する完全クレジット式のスロットマシンに適用しても良い。遊技球を遊技用価値として用いる場合は、例えば、メダル１枚分を遊技球５個分に対応させることができ、前記実施例１で賭数として３を設定する場合は、１５個の遊技球を用いて賭数を設定するものに相当する。
【０３４９】
さらに、メダル及び遊技球等の複数種類の遊技用価値のうちいずれか１種類のみを用いるものに限定されるものではなく、例えば、メダル及び遊技球等の複数種類の遊技用価値を併用できるものであっても良い。すなわち、メダル及び遊技球等の複数種類の遊技用価値のいずれを用いても賭数を設定してゲームを行うことが可能であり、かつ入賞の発生によってメダル及び遊技球等の複数種類の遊技用価値のいずれをも払い出し得るスロットマシンを適用しても良い。
【０３５０】
また、実施例では遊技機としてスロットマシンを例に説明したが、上記実施例で開示したメイン制御部４１及びメイン制御部４１に関連する初期設定処理、タイマ割込処理、コマンド格納処理、通常時コマンド送信処理、電断時コマンド送信処理、タイマカウンタの更新処理等、サブ制御部９１及びサブ制御部９１に関連する処理を、他の遊技機、例えば、遊技領域に遊技球を発射させることで遊技が行われ、発射された遊技球が遊技領域内に設けられた入賞口に入って入賞が発生することで、賞球として遊技球が払い出されるパチンコ遊技機等に適用しても良い。
【符号の説明】
【０３５１】
１  スロットマシン
２Ｌ、２Ｃ、２Ｒ  リール
６  ＭＡＸＢＥＴスイッチ
７  スタートスイッチ
８Ｌ、８Ｃ、８Ｒ  ストップスイッチ
４１  メイン制御部
９１  サブ制御部
【図１】
0006626266.tif 000002
【図２】
0006626266.tif 000003
【図３】
0006626266.tif 000004
【図４】
0006626266.tif 000005
【図５】
0006626266.tif 000006
【図６】
0006626266.tif 000007
【図７】
0006626266.tif 000008
【図８】
0006626266.tif 000009
【図９】
0006626266.tif 000010
【図１０】
0006626266.tif 000011
【図１１】
0006626266.tif 000012
【図１２】
0006626266.tif 000013
【図１３】
0006626266.tif 000014
【図１４】
0006626266.tif 000015
【図１５】
0006626266.tif 000016
【図１６】
0006626266.tif 000017
【図１７】
0006626266.tif 000018
【図１８】
0006626266.tif 000019
【図１９】
0006626266.tif 000020
【図２０】
0006626266.tif 000021
【図２１】
0006626266.tif 000022
【図２２】
0006626266.tif 000023
【図２３】
0006626266.tif 000024