(57)【要約】【課題】遊技機において、乱数を必要とする制御系と乱数を生成ないし取得する制御系との間で、乱数の需要／供給の関係を適切に調整でき、乱数を必要とする制御系、例えば演出制御系が乱数を必要とするタイミングで、確実に乱数を出力できるようにする。【解決手段】乱数生成プログラム（Ｐ３）が生成した乱数を格納する乱数バッファ（６０２１ａ）を備え、乱数生成プログラムによって乱数を生成させ、生成させた乱数を、乱数バッファ（６０２１ａ）から乱数の生成順に読み出すバッファモードによって乱数を利用する演出プログラム（Ｐ１）に出力する。演出プログラム（Ｐ１）に出力すべき乱数が乱数バッファ（６０２１ａ）に残っていない場合（Ｓ３１）、乱数バッファ（６０２１ａ）を経由するバッファモードによらず、演出プログラム（Ｐ１）に直接、出力すべき乱数を生成するダイレクトモードを実行する。【選択図】図１３
2018191915.tif 000002
【特許請求の範囲】
【請求項１】
乱数に基づき遊技の演出を制御する演出制御手段と、
所定の乱数方式に基づき乱数を生成する乱数生成手段と、
前記演出制御手段に出力される乱数を格納する乱数バッファと、を備えた遊技機において、
前記乱数バッファを経由して前記演出制御手段に乱数を出力するバッファモード、または、前記乱数バッファを経由せず乱数を前記演出制御手段に直接、出力するダイレクトモードによって、乱数を前記演出制御手段に対して出力することを特徴とする遊技機。
【請求項２】
前記バッファモードにおいて、前記乱数バッファから、前記乱数の生成順に読み出した乱数を前記演出制御手段に出力させ、前記演出制御手段に出力する乱数が前記乱数バッファに残っていない場合、前記ダイレクトモードによって、乱数を前記演出制御手段に対して出力することを特徴とする請求項１に記載の遊技機。
【請求項３】
前記ダイレクトモードにおいて、前記乱数生成手段と異なる他の手段によって乱数を生成させ、生成した乱数を前記演出制御手段に直接、出力することを特徴とする請求項１または２に記載の遊技機。
【請求項４】
前記ダイレクトモードにおいて、前記乱数生成手段によって乱数を生成させ、前記乱数バッファを経由することなく生成した乱数を前記演出制御手段に直接、出力することを特徴とする請求項１または２に記載の遊技機。
【請求項５】
前記ダイレクトモードにおいて、前記乱数生成手段によって乱数を生成させ、生成した乱数を複数に分割して得た乱数の一部を前記演出制御手段に出力し、前記演出制御手段に出力しなかった乱数を前記乱数バッファに格納することを特徴とする請求項４に記載の遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遊技機に関する。
【背景技術】
【０００２】
メダルやパチンコ玉などの遊技媒体に対して一定の遊技価値を付与し、このような遊技媒体を獲得するための遊技を行うパチンコ機やスロットマシンなどの遊技機が知られている。この種の遊技機では、遊技の進行や演出の決定などのために乱数を用いた様々な抽選が行われている。例えば、従来、所定のサイクルでカウントアップされるリーチ乱数値設定領域のカウント値を、スタートＳＷが遊技球を検出したことに基づいて読み込み、ＲＡＭのリーチ乱数値蓄積領域にリーチ乱数値として蓄積し、このリーチ乱数値に基づいてリーチ演出における特別図柄の変動パターンの内容を設定するパチンコ機が提案されている（下記の特許文献１）。また、ハードウェアに由来する不規則性を利用したいわゆるハードウェア乱数方式の他、ソフトウェア乱数方式、例えば、メルセンヌ・ツイスタ法などの乱数生成アルゴリズムによって擬似乱数を生成し、抽選に用いるスロットマシンが知られている（下記の特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３２９１３９号公報
【特許文献２】特許第５４６７５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
遊技機においては、ハードウェア／ソフトウェアのいずれの乱数方式にしても、乱数の需要側、例えば、演出プランやパターンを選択するための乱数を必要とする演出制御系と、乱数を供給する乱数生成系の間の需要／供給の関係を適切に調整する必要がある。例えば、近年の高度化された演出を行う遊技機では、演出制御のために短時間の間に大量の乱数が必要となることがあり、乱数を必要とする制御系、例えば演出制御系が必要とする乱数を供給できるよう、乱数の需要／供給の関係を適切に調整する必要がある。
【０００５】
本発明の課題は、上記に鑑み、遊技機において、乱数を必要とする制御系と乱数を生成ないし取得する制御系との間で、乱数の需要／供給の関係を適切に調整でき、乱数を必要とする制御系、例えば演出制御系が乱数を必要とするタイミングで、確実に乱数を出力できるようにすることにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明においては、乱数に基づき遊技の演出を制御する演出制御手段（Ｐ１）と、所定の乱数方式に基づき乱数を生成する乱数生成手段（Ｐ３）と、前記演出制御手段に出力される乱数を格納する乱数バッファ（６０２１ａ）と、を備えた遊技機において、前記乱数バッファを経由して乱数を前記演出制御手段に出力するバッファモード、または、前記乱数バッファを経由せず乱数を前記演出制御手段に直接、出力するダイレクトモードによって、乱数を前記演出制御手段に対して出力する構成を採用した。
【発明の効果】
【０００７】
上記構成によれば、前記乱数バッファを経由するバッファモードと、演出制御手段に直接、出力する乱数を生成するダイレクトモードと、を用いて、乱数を必要とする制御系と乱数を生成ないし取得する制御系との間で、乱数の需要／供給の関係を適切に調整でき、乱数を必要とする制御系、例えば演出制御系が乱数を必要とするタイミングで、確実に乱数を出力することができる。
【０００８】
なお、上記の課題を解決するための手段、および発明の効果の欄に括弧書きで示した参照符号は、下記の実施形態の部材との対応付けを示す便宜上のものに過ぎず、本発明の構成を限定することを意図したものではない。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る遊技機の扉が開放された状態における外観構成を示す斜視図である。
【図２】本発明の実施形態に係る遊技機の正面図である。
【図３】本発明の実施形態に係る遊技機の機能ブロックを説明する図である。
【図４】本発明の実施形態に係る遊技機の副制御部の詳細構成を説明する図である。
【図５】本発明の実施形態に係る遊技機のメモリアドレス空間を示す図である。
【図６】本発明の実施形態に係る遊技機における乱数生成に係る流れを説明する概念図である。
【図７】デバッグカウンタのカウンタ値の３２ビット拡張の方法を説明する模式図である。
【図８】本発明の実施形態に係る遊技機における電源投入時の乱数生成処理を示すフローチャート図である。
【図９】本発明の実施形態に係る遊技機における乱数バッファへの乱数の格納処理を説明する概念図である。
【図１０】（ａ）はタスク管理プログラムにおけるタスクのスケジューリングを説明する模式図、（ｂ）は図１０（ａ）にてスケジューリングされたタスクの実行状態を示すタイムチャート図である。
【図１１】本発明の実施形態に係る遊技機におけるシステム安定時の乱数生成処理を示すフローチャートである。
【図１２】本発明の実施形態に係る遊技機における３２ビット乱数の生成個数を決定する処理を示すフローチャートである。
【図１３】（ａ）は本発明の実施形態に係る遊技機における乱数取得ドライバの要部を示すフローチャート図、（ｂ）および（ｃ）は当該の乱数取得ドライバで用いられる乱数バッファの枯渇に対処する異なる代替処理をそれぞれ示すフローチャート図である。
【図１４】本発明の実施形態に係る遊技機における、乱数の生成異常に対処する回復処理を備えた乱数生成処理を示すフローチャートである。
【図１５】本発明の変形例に係る遊技機の外観構成を示す斜視図である。
【図１６】本発明の変形例に係る遊技機におけるリールの図柄配列を説明する図である。
【図１７】本発明の変形例に係る遊技機の機能ブロックを説明する図である。
【発明を実施するための形態】
【００１０】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。また、本明細書及び図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略するとともに、本発明に直接関係のない要素については、図示を省略する。
【００１１】
１．構成
図１は、本実施形態の遊技機であるパチンコ機１００の斜視図であり、扉が開放された状態を示している。図１に示すように、パチンコ機１００は、略矩形状に組まれた四辺によって囲繞空間が形成される外枠１０２と、外枠１０２にヒンジ機構によって開閉自在に取り付けられた中枠１０４と、中枠１０４にヒンジ機構によって開閉自在に取り付けられた前枠１０６と、を備えている。
【００１２】
中枠１０４は、外枠１０２と同様に、略矩形状に組まれた四辺によって囲繞空間が形成されている。パチンコ機１００では、中枠１０４の囲繞空間に遊技盤１０８を保持している。また、前枠１０６には、ガラス製又は樹脂製の透過板１１０が保持されている。そして、パチンコ機１００では、中枠１０４及び前枠１０６を外枠１０２に対して閉じると、遊技盤１０８と透過板１１０とが所定の間隔を維持して略平行に対面するとともに、パチンコ機１００の正面側から、透過板１１０を介して遊技盤１０８が視認可能となる。
【００１３】
図２は、本実施形態におけるパチンコ機１００の正面図である。図２に示すように、前枠１０６の下部には、パチンコ機１００の正面側に突出する操作ハンドル１１２が設けられている。操作ハンドル１１２は、遊技者によって回転操作可能に設けられており、遊技者が操作ハンドル１１２を回転させて発射操作を行うと、操作ハンドル１１２の回転角度に応じた強度で、不図示の発射機構によって遊技球が発射される。このようにして発射された遊技球は、遊技盤１０８に設けられたレール１１４ａ、１１４ｂ間を上昇して遊技領域１１６に導かれることになる。
【００１４】
遊技領域１１６は、遊技盤１０８と透過板１１０（図１参照）との間隔に形成される空間であって、遊技球が流下又は転動可能な領域である。遊技盤１０８には、多数の釘や風車が設けられており、遊技領域１１６に導かれた遊技球が釘や風車に衝突して、不規則な方向に流下、転動するようにしている。
【００１５】
遊技領域１１６は、発射機構の発射強度に応じて遊技球の進入度合いを互いに異にする第１遊技領域１１６ａ及び第２遊技領域１１６ｂを備えている。第１遊技領域１１６ａは、パチンコ機１００に正対した遊技者から見て遊技領域１１６の左側に位置し、第２遊技領域１１６ｂは、パチンコ機１００に正対した遊技者から見て遊技領域１１６の右側に位置している。パチンコ機１００では、レール１１４ａ、１１４ｂが遊技領域１１６の左側にあることから、発射機構によって所定の強度未満の発射強度で発射された遊技球が第１遊技領域１１６ａに進入し、所定の強度以上の発射強度で発射された遊技球が第２遊技領域１１６ｂに進入することになる。
【００１６】
また、遊技領域１１６には、遊技球が入球可能な一般入賞口１１８、第１始動口１２０、第２始動口１２２が設けられており、一般入賞口１１８、第１始動口１２０、第２始動口１２２に遊技球が入球すると、それぞれ所定の賞球が遊技者に払い出される。なお、パチンコ機１００において、賞球数は、１個以上であれば何個でもよく、また、一般入賞口１１８、第１始動口１２０、第２始動口１２２のそれぞれで払い出す賞球数を異ならせてもよいし、同じ賞球数に設定してもよい。パチンコ機１００では、第１始動口１２０に遊技球が入球して払い出す賞球数を、第２始動口１２２に遊技球が入球して払い出す賞球数よりも少なく設定することも可能である。
【００１７】
本実施形態のパチンコ機１００では、第１始動口１２０内に第１始動領域が設けられ、第２始動口１２２内に第２始動領域が設けられている。そして、パチンコ機１００では、所定の契機として、第１始動口１２０又は第２始動口１２２に遊技球が入球して第１始動領域又は第２始動領域に遊技球が進入すると、予め設けられた複数の特別図柄の中からいずれか１つの特別図柄を決定するための抽選が行われる。各特別図柄には、遊技者にとって有利な大役遊技の実行可否や、以後の遊技状態をどのような遊技状態にするかといった種々の特典（遊技利益）が対応付けられている。したがって、遊技者は、第１始動口１２０又は第２始動口１２２に遊技球が入球すると、所定の賞球を獲得するのと同時に、種々の特典を受ける権利獲得の機会を獲得することとなる。
【００１８】
また、第２始動口１２２には、可動片１２２ｂが開閉可能に設けられており、可動片１２２ｂの状態に応じて、第２始動口１２２への遊技球の進入容易性が変化するように構成されている。具体的には、可動片１２２ｂが閉状態にあるときには、第２始動口１２２への遊技球の入球が不可能となり、可動片１２２ｂが開き遊技球の直径よりも開いた状態にあるときには、第２始動口１２２への遊技球の入球が可能となっている。
【００１９】
パチンコ機１００では、遊技領域１１６に設けられたゲート１２４内の進入領域を遊技球が通過すると、普通図柄の抽選が行われ、抽選によって当たりに当選すると、可動片１２２ｂが所定時間、開状態に制御される。可動片１２２ｂが開状態に制御されることで、本実施形態のパチンコ機１００では、可動片１２２ｂが遊技球を第２始動口１２２に導く受け皿として機能し、第２始動口１２２への遊技球の入球が容易となる。なお、パチンコ機１００は、可動片１２２ｂが閉状態にあるときに、第２始動口１２２への遊技球の入球が不可能となるように構成されているが、第２始動口１２２が閉状態にある場合にも一定の頻度で遊技球が入球可能となるように構成されていてもよい。
【００２０】
遊技領域１１６には、遊技球が入球可能な大入賞口１２８が設けられている。大入賞口１２８には、開閉扉１２８ｂが開閉可能に設けられており、通常、開閉扉１２８ｂが大入賞口１２８を閉鎖して、大入賞口１２８への遊技球の入球が不可能となっている。これに対して、パチンコ機１００では、大役遊技が実行されると、開閉扉１２８ｂが開放されて、大入賞口１２８への遊技球の入球が可能となる。そして、パチンコ機１００では、大入賞口１２８に遊技球が入球すると、所定の賞球が遊技者に払い出される。
【００２１】
遊技領域１１６の最下部には、一般入賞口１１８、第１始動口１２０、第２始動口１２２、大入賞口１２８のいずれにも入球しなかった遊技球を、遊技領域１１６から遊技盤１０８の背面側に排出する排出口１３０が設けられている。
【００２２】
パチンコ機１００には、遊技の進行中等に演出を行う演出装置２００として、液晶表示装置からなる演出表示装置２０１、駆動装置からなる演出役物装置２０２、さまざまな点灯態様や発光色に制御されるランプからなる演出照明装置２０４、スピーカからなる楽曲出力装置２０６、遊技者の演出に関する操作を受け付ける演出操作装置２０８が設けられている。
【００２３】
演出表示装置２０１は、遊技盤１０８の略中央部分において、パチンコ機１００の正面側から視認可能な位置に画像を表示する画像表示部を備えている。演出表示装置２０１は、図２に示すように、画像表示部に演出図柄２１０ａ〜２１０ｃが変動表示され、演出図柄２１０ａ〜２１０ｃの停止表示態様によって大役抽選結果が遊技者に報知される変動演出が実行されることとなる。
【００２４】
演出役物装置２０２は、演出表示装置２０１よりも前方に配置され、通常、遊技盤１０８の背面側に退避しているが、演出図柄２１０ａ〜２１０ｃの変動表示中などに、演出表示装置２０１の前方まで移動して、遊技者に大当たりの期待感を付与するものである。
【００２５】
演出照明装置２０４は、例えばＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）から構成され、演出役物装置２０２や遊技盤１０８等に設けられており、演出表示装置２０１に表示される画像等に合わせて、さまざまに点灯制御される。
【００２６】
楽曲出力装置２０６は、前枠１０６の上部位置や外枠１０２（図１参照）の最下部位置に設けられ、演出表示装置２０１に表示される画像等に合わせて、パチンコ機１００の正面側に向けてさまざまな楽曲を出力する。なお、楽曲とは、楽音、噪音、音声、擬音等、音に関する全ての概念を含む。
【００２７】
演出操作装置２０８は、遊技者の押下操作を受け付けるボタンと、遊技者の回転操作を受け付ける回転操作部（例えば、ジョグダイヤル）と、で構成され、パチンコ機１００の幅方向略中央位置であって、かつ、透過板１１０よりも下方位置に設けられている。演出操作装置２０８は、演出表示装置２０１に表示される画像等に合わせて有効化され、操作有効期間内に遊技者の操作を受け付けると、当該操作に応じて、様々な演出が実行される。
【００２８】
また、演出操作装置２０８の後方には、パチンコ機１００から払い出される賞球や、遊技球貸出装置から貸し出される遊技球が導かれる上皿１３２が設けられ、上皿１３２の下方に下皿１３４が設けられている。パチンコ機１００では、上皿１３２が遊技球で一杯になると、遊技球が下皿１３４に導かれることとなる。また、下皿１３４の底面には、下皿１３４から遊技球を排出するための球抜き孔（不図示）が形成されている。球抜き孔は、通常、開閉板（不図示）によって閉じられているが、球抜きつまみ１３４ａを図中左右方向にスライドさせることにより、当該球抜きつまみ１３４ａと一体となって開閉板がスライドし、球抜き孔から下皿１３４の下方に遊技球を排出することが可能となっている。
【００２９】
遊技盤１０８には、遊技領域１１６の外方であって、かつ、遊技者が視認可能な位置に、遊技に係る種々の状況を表示するための装置として、第１特別図柄表示器１６０、第２特別図柄表示器１６２、第１特別図柄保留表示器１６４、第２特別図柄保留表示器１６６、普通図柄表示器１６８、普通図柄保留表示器１７０及び右打ち報知表示器１７２が設けられている。
【００３０】
図３は、本実施形態のパチンコ機１００の機能ブロック図である。主制御部３００は、遊技の進行を制御し、メインＣＰＵ３００ａと、メインＲＯＭ３００ｂと、メインＲＡＭ３００ｃと、を備えている。メインＣＰＵ３００ａは、各検出スイッチやタイマからの入力信号に基づいて、メインＲＯＭ３００ｂに格納されたプログラムを読み出して演算処理を行うとともに、各装置や表示器を直接制御したり、あるいは演算処理の結果に応じて他の制御部に主制御部３００で生成したコマンドを送信したりすることで、遊技の進行に係る制御処理を実行する。メインＲＡＭ３００ｃは、メインＣＰＵ３００ａの演算処理時におけるデータのワークエリアとして機能する。
【００３１】
主制御部３００には、一般入賞口１１８に遊技球が入球したことを検出する一般入賞口検出スイッチ１１８ｓと、第１始動口１２０に遊技球が入球したことを検出する第１始動口検出スイッチ１２０ｓと、第２始動口１２２に遊技球が入球したことを検出する第２始動口検出スイッチ１２２ｓと、ゲート１２４を遊技球が通過したことを検出するゲート検出スイッチ１２４ｓと、大入賞口１２８に遊技球が入球したことを検出する大入賞口検出スイッチ１２８ｓと、が接続されており、各検出スイッチから出力される検出信号が主制御部３００に入力されるよう構成されている。
【００３２】
また、主制御部３００には、第２始動口１２２の可動片１２２ｂを作動する普通電動役物ソレノイド１２２ｃと、大入賞口１２８を開閉する開閉扉１２８ｂを作動する大入賞口ソレノイド１２８ｃと、が接続されており、主制御部３００によって、第２始動口１２２及び大入賞口１２８の開閉制御が実行されるよう構成されている。
【００３３】
また、主制御部３００には、第１特別図柄表示器１６０と、第２特別図柄表示器１６２と、第１特別図柄保留表示器１６４と、第２特別図柄保留表示器１６６と、普通図柄表示器１６８と、普通図柄保留表示器１７０と、右打ち報知表示器１７２と、が接続されており、主制御部３００によって、これら各表示器の表示制御が実行される。
【００３４】
本実施形態のパチンコ機１００では、主に第１始動口１２０又は第２始動口１２２への遊技球の入球によって開始される特別遊技と、ゲート１２４を遊技球が通過することによって開始される普通遊技と、に遊技の種別が大別される。そして、主制御部３００のメインＲＯＭ３００ｂには、特別遊技及び普通遊技を進行するための種々のプログラムや、各種の遊技に必要なデータ、テーブルが記憶されている。
【００３５】
更に、主制御部３００には、上記メインＣＰＵ３００ａと、メインＲＯＭ３００ｂと、メインＲＡＭ３００ｃ以外にも、乱数発生器４３０ａやサンプリング回路４３０ｂが実装されており、乱数発生器４３０ａは、大役遊技判定用にハードウェア乱数（例えば １０進数表記で０〜６５５３５）を発生させる。乱数発生器４３０ａにより発生された乱数は、サンプリング回路４３０ｂを通じてメインＣＰＵ３００ａに入力される。メインＣＰＵ３００ａは、上記第１始動口検出スイッチ１２０ｓもしくは第２始動口検出スイッチ１２２ｓが遊技球を検出すると、上記サンプリング回路４３０ｂを通じて乱数発生器４３０ａから乱数を取得し、この取得した乱数に基づいて特別図柄の当否に係る抽選を実行する。また、ゲート検出スイッチ１２４ｓが遊技球を検出すると、上記サンプリング回路４３０ｂを通じて乱数発生器４３０ａから乱数を取得し、この取得した乱数に基づいて普通図柄の当否に係る抽選を実行する。そして、これら抽選の結果に基づいて、普通電動役物ソレノイド１２２ｃに信号を出力し可動片１２２ｂを作動させる制御、大入賞口ソレノイド１２８ｃに信号を出力し開閉扉１２８ｂを作動させる制御等、遊技の進行に係る制御を実行する。
【００３６】
また、主制御部３００には、払出・発射制御部３１０及び副制御部３３０が接続されている。パチンコ機１００は、それぞれ独立した制御基板として、主制御部３００と、払出・発射制御部３１０と、副制御部３３０と、を有しており、副制御部３３０は、主制御部３００から副制御部３３０への一方向にのみ通信可能な態様で主制御部３００と接続されている。なお、各基板には、不図示の電源基板が接続されており、電源基板を介して商用電源から各基板に電力供給が実行されている。
【００３７】
払出・発射制御部３１０は、遊技球を発射させるための制御及び賞球を払い出すための制御を行う。払出・発射制御部３１０も、主制御部３００と略同様に、ＣＰＵ、ＲＯＭ、ＲＡＭを備えており、主制御部３００に対して双方向に通信可能に接続されている。払出・発射制御部３１０には、遊技情報出力端子板３１２が接続されており、主制御部３００から出力される遊技進行上の種々の情報が、払出・発射制御部３１０及び遊技情報出力端子板３１２を介して、遊技店のホールコンピュータ等に出力されることとなる。
【００３８】
また、払出・発射制御部３１０には、貯留部に貯留された遊技球を賞球として遊技者に払い出すための払出モータ３１４が接続されている。払出・発射制御部３１０は、主制御部３００から送信された払出個数指定コマンドに基づいて払出モータ３１４を制御して所定の賞球を遊技者に払い出すように制御する。このとき、パチンコ機１００では、払い出された遊技球数が払出球計数スイッチ３１６ｓによって検出され、払い出すべき賞球が遊技者に払い出されたかが把握されるように構成されている。
【００３９】
また、払出・発射制御部３１０には、下皿１３４の満タン状態を検出する皿満タン検出スイッチ３１８ｓが接続されている。皿満タン検出スイッチ３１８ｓは、賞球として払い出される遊技球を下皿１３４に導く通路に設けられており、当該通路を遊技球が通過するたびに、遊技球検出信号を払出・発射制御部３１０に出力するように構成されている。
【００４０】
そして、皿満タン検出スイッチ３１８ｓは、下皿１３４に所定量以上の遊技球が貯留された状態である満タン状態になると、下皿１３４に向かう通路内に遊技球が滞留することで、払出・発射制御部３１０に向けて遊技球検出信号を連続的に出力する。払出・発射制御部３１０は、遊技球検出信号が所定時間連続して入力された場合に、下皿１３４が満タン状態であると判断し、皿満タンコマンドを主制御部３００に送信する。払出・発射制御部３１０は、皿満タンコマンドを送信した後、遊技球検出信号の連続入力が途絶えた場合には、満タン状態が解除されたと判断し、皿満タン解除コマンドを主制御部３００に送信する。
【００４１】
また、払出・発射制御部３１０には、遊技球の発射制御を行う払出・発射制御回路３２０が設けられている。払出・発射制御部３１０には、操作ハンドル１１２に設けられ、当該操作ハンドル１１２に遊技者が触れたことを検出するタッチセンサ１１２ｓと、操作ハンドル１１２の操作角度を検出する操作ボリューム１１２ａと、が接続されている。そして、タッチセンサ１１２ｓ及び操作ボリューム１１２ａから信号が入力されると、払出・発射制御回路３２０において、遊技球発射装置に設けられた発射用ソレノイド１１２ｃを通電して遊技球を発射させる制御が実行される。
【００４２】
副制御部３３０は、主に遊技中や待機中などの各演出を制御し、図３及び図４に示すように、サブＣＰＵ３３０ａ１及びＶＤＰ（Ｖｉｄｅｏ  Ｄｉｓｐｌａｙ  Ｐｒｏｃｅｓｓｏｒ）３３０ａ２によって構成される演出用制御チップ３３０ａと、サブＲＯＭ３３０ｂと、サブＲＡＭ３３０ｃと、を備えている。また、副制御部３３０には、演出装置２００が接続されていると共に、演出操作装置２０８として、遊技者の操作を検出する押下検出スイッチ２０８１ｓ及び回転検出スイッチ２０８２ｓが接続されている。押下検出スイッチ２０８１ｓは、遊技者が演出操作装置２０８のボタンを押下操作した場合に、遊技者の押下操作を検出し、回転検出スイッチ２０８２ｓは、遊技者が演出操作装置２０８の回転操作部を回転操作した場合に、遊技者の回転操作を検出する。
【００４３】
サブＲＯＭ３３０ｂは、詳しくは図４に示す制御ＲＯＭ６５４、画像・音声ＲＯＭ６１１などにより構成されており、演出プログラムＰ１、乱数種生成プログラムＰ２、乱数生成プログラムＰ３、タスク管理プログラムＰ４、乱数取得ドライバＰ５、デバッグ情報取得ドライバＰ６などの各種プログラムや、演出の内容を決定するための複数の演出抽選テーブルなどの演出データが格納されている。サブＣＰＵ３３０ａ１は、これらサブＲＯＭ３３０ｂに格納されたプログラムを読み出して演算処理を行うことにより、演出制御手段、乱数種生成手段、乱数生成手段、タスク管理手段として機能する。また、サブＲＡＭ３３０ｃは、詳しくは図４に示すＣＰＵＲＡＭ６０２、内蔵ｅＤＲＡＭ６０４及びバックアップＳＲＡＭ６５５などにより構成されており、サブＣＰＵ３３０ａ１の演算処理時におけるデータのワークエリアとして機能する。
【００４４】
演出制御手段は、演出プログラムＰ１がサブＣＰＵ３３０ａ１により読み出し、実行されることによって機能する手段であり、実行する演出を乱数に基づいて決定する演出抽選処理、演出表示装置２０１に画像を表示させる制御である画像表示処理、演出役物装置２０２を駆動させる駆動制御処理、演出照明装置２０４を点灯させる点灯制御処理、楽曲出力装置２０６から楽曲を出力させる楽曲出力制御処理等の演出に係る制御を実行する。演出制御手段は、これらの演出処理を、主制御部３００から送信されたコマンドやタイマからの入力信号、演出操作装置２０８からの入力信号などの外部信号に基づいて実行する。なお、この外部信号を生成するタイマとしては、ウォッチ・ドッグ・タイマなどがある。
【００４５】
乱数種生成手段は、乱数種生成プログラムＰ２がサブＣＰＵ３３０ａ１により読み出し、実行されることによって機能する手段であり、上記演出抽選処理にて使用されるソフトウェア乱数（擬似乱数）を演算する際の基となる乱数種（以下、シード値ともいう）を生成する。
【００４６】
乱数生成手段は、乱数生成プログラムＰ３がサブＣＰＵ３３０ａ１により読み出し、実行されることによって機能する手段であり、所定の乱数生成アルゴリズムに基づいて演算により乱数を生成する乱数生成処理を実行する。副制御部３３０では、ハードウェア乱数を用いて抽選を行う主制御部３００とは異なり、乱数生成アルゴリズムに基づいた演算により生成されるソフトウェア乱数を使用する。
【００４７】
タスク管理手段は、タスク管理プログラムＰ４がサブＣＰＵ３３０ａ１により読み出し、実行されることによって機能する手段であり、サブＣＰＵ３３０ａ１が実行する制御処理に係るタスクの優先度を設定する。なお、ここで、タスクとは、サブＣＰＵ３３０ａ１が実行することのできる処理の単位であり、プログラムを実行する際の処理（以下、プロセスともいう）を細分化した処理単位である。タスク管理手段は、間隔の短い所定時間毎（本実施の形態では３０ｆｐｓ（３３．３３ｍｓ）のサイクル）に優先度の設定を更新すると共に、サブＣＰＵ３３０ａ１は、上記所定時間内において実行可能なタスクを優先度に従って逐次処理する。上記処理が繰り返し実行されることによって、遊技者には複数のプロセスが同時に実行されているように見える。
【００４８】
＜副制御部の詳細構成＞
ついで、上記副制御部３３０の詳細構成について図４及び図５に基づいて説明をする。図４に示すように、演出用制御チップ３３０ａは、副制御部３３０の制御主体を構成するサブＣＰＵ３３０ａ１、およびＶＤＰ３３０ａ２を備えており、ＣＰＵをＶＤＰに取り込む形で一体のハードウェアＬＳＩによって構成されている。
【００４９】
サブＣＰＵ３３０ａ１は、ＣＰＵコア６０１、ＣＰＵコア６０１が待機時間なくアクセス可能なＣＰＵＲＡＭ６０２、遊技機で一般的な同図左側の周辺部材（６５１〜６５６）との入出力を行うためのＩ／Ｏポートアレイ６０３、主にキャッシュメモリなどとして利用される内蔵ｅＤＲＡＭ（Ｅｍｂｅｄｅｄ  ＤＲＡＭ）６０４、デバッグ時に使用されるハードウェアカウンタであるデバッグカウンタ６０５を備えている。
【００５０】
Ｉ／Ｏポートアレイ６０３は、主制御部３００と主にコマンド入出力を行うための主制御部Ｉ／Ｏ６５１（コマンド受信手段）、計時制御に利用されるＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）６５２、例えば副制御部３３０の基板上に配置されたＤＩＰスイッチ６５３、副制御部３３０のファームウェアの格納などに用いられる副制御部基板上に配置された制御ＲＯＭ６５４、必要に応じて副制御部３３０の状態をバックアップするために用いられるバックアップＳＲＡＭ６５５、およびデバッグＵＡＲＴ６５６などと接続され、これら各部との信号入出力に用いられる。ＤＩＰスイッチ６５３は、デバッグ、検証動作などのためのモード設定などに利用される。
【００５１】
ＶＤＰ３３０ａ２は、演出表示装置２０１と入出力を行うためのＬＣＤＩ／Ｆ６４１、およびＶＲＡＭ６４２から成る画像制御部６４０を備える。なお、画像制御部６４０には、画像レンダリングなどを行う画像処理ハードウェアなどが含まれていてもよい。また、本実施形態のＶＤＰ３３０ａ２は、例えば遊技機に特化された製品であって、楽曲出力装置２０６を構成するスピーカに対する音声出力を行うためのサウンドＩ／Ｆ６２１から成る音声制御部６２０、演出役物装置２０２などの可動物の駆動系のモータ、ソレノイドの制御、センサ類の検出信号を取り込むためのＡＳＩＢ Ｉ／Ｆ６３１を有する可動物／センサ制御部６３０を備える。更に、ＶＤＰ３３０ａ２は、演出音声や演出画像の背景やキャラクタのような素材を格納した画像・音声ＲＯＭ６１１（ＣＧＲＯＭ）からデータを読み出すためのＣＧＲＯＭＩ／Ｆ６５０を備えている。
【００５２】
図５は、副制御部３３０の記憶領域、特にサブＣＰＵ３３０ａ１がアクセス／管理するメモリアドレス空間の構成の一例を示す図である。なお、図５においては、メモリの高位アドレスを図の下方に、また低位アドレスを図の上方に取っている。図５に示すメモリ配置では、低位アドレスの領域には、メモリマップトＩ／Ｏのための記憶領域が並ぶ。即ち、これらメモリマップトＩ／Ｏのための領域には、制御ＲＯＭ６５４、バックアップＳＲＡＭ６５５、外部制御信号Ｉ／Ｏ６０６、デバッグＵＡＲＴＩ／Ｏ６５６などにサブＣＰＵ３３０ａ１がアクセスするための領域が含まれる。
【００５３】
図５の構成では、更にその高位側アドレスに、内蔵ｅＤＲＡＭ６０４の領域が配置され、内蔵ｅＤＲＡＭ６０４の高位側のアドレスにＶＤＰ３３０ａ２のＶＲＡＭ６４２の空間がマッピングされている。また、ＶＲＡＭ６４２の高位側アドレスの空間には、ＣＰＵコア６０１のレジスタに対してメモリマップトＩ／Ｏが可能なＣＰＵレジスタＩ／Ｏ６０７の領域が配置されている。更に、ＣＰＵレジスタＩ／Ｏ６０７よりも上位アドレス側の空間には、ＣＰＵＲＡＭ６０２の空間がマッピングされている。
【００５４】
より詳しくは、バックアップＳＲＡＭ６５５にはバックアップ用のバッテリーが接続されており、電源がＯＦＦになっても記憶したデータを保持することができるようになっている。このため、バックアップＳＲＡＭ６５５のアドレス領域内には、電源ＯＦＦ時にサブＲＡＭの特定領域の内容をバックアップするバックアップ領域６５５２が設けられている。また、バックアップＳＲＡＭ６５５のアドレス領域には、後述の乱数種の生成のための変数として用いられる３２ビットのカウンタ値を記憶する補助カウンタ６５５１が設けられている。この補助カウンタ６５５１は、乱数種生成時に１回だけ固定幅のインクリメント値が加算される。この固定幅のインクリメント値には任意の素数が使用される。
【００５５】
また、ＣＰＵＲＡＭ６０２のアドレス領域内には、乱数に関するデータを保存する乱数用変数領域６０２１と、プロセスを切り替える際にサブＣＰＵ３３０ａ１が使用しているレジスタやフラグなどの状態（以下、コンテキストという）などを保存するカーネルスタック領域６０２２と、が設けられている。また、上記乱数用変数領域６０２１には、乱数生成時に参照される状態ベクトル、乱数種の値、乱数の発生回数などの乱数に係る情報が記憶される乱数情報記憶領域６０２１ｂと、生成された乱数が格納される乱数バッファ６０２１ａと、が設けられている。
【００５６】
なお、上記乱数の発生回数とは、乱数バッファ６０２１ａに乱数が格納された回数ではなく、乱数バッファ６０２１ａから乱数が取り出された回数を意味する。また、乱数バッファ６０２１ａは、乱数が格納された順に読み出される先入先出バッファ（ＦＩＦＯ（Ｆｉｒｓｔ−ｉｎ  Ｆｉｒｓｔ−ｏｕｔ）バッファ）であり、瞬間的に多量の乱数が使用されても格納されている乱数が枯渇しないように所定の容量（本実施の形態では５１２段のバッファ）を備えている。
【００５７】
２．副制御部における乱数制御処理の流れ
ついで、副制御部３３０における乱数制御に係る処理の流れについて図６に基づいて説明をする。本実施形態において副制御部３３０では上記ソフトウェア乱数を抽選前に予め生成して乱数バッファ６０２１ａに格納するため、これを主制御部３００にて実行すると出玉に係る抽選を予め実行することとなってしまう。従って、本実施形態では、上記ソフトウェア乱数を演出に係る処理を実行する副制御部３３０にて使用している。以下、この副制御部３３０に係る乱数処理を中心に説明を行う。まず、演出プログラムＰ１による乱数の取得の流れについて説明をする。
【００５８】
演出抽選処理を実行するために演出プログラムＰ１から乱数の取得要求があると、乱数バッファ６０２１ａに格納されている乱数が演出プログラムＰ１へと受け渡される。ここで、上記乱数バッファ６０２１ａなどの乱数に係るデータは、上述したようにＣＰＵＲＡＭ６０２に全て記憶されており、メモリアドレス空間上においてカーネルが使用するシステム層に位置している。一方で、演出プログラムＰ１は、ＯＳ上にて動作するソフトウェアであるアプリケーションであり、メモリアドレス空間上においてシステム層よりも低位のユーザ層に位置する領域にアクセスを行う。ここで、上記演出プログラムＰ１がシステム層に位置する乱数用変数領域６０２１に直接アクセスするようにすると、演出プログラムＰ１に不具合等があった場合、カーネルが使用するシステム層のデータにまで影響が生じる虞がある。このため、本実施の形態では、上記演出プログラムＰ１が乱数バッファ６０２１ａから乱数を取得する場合、必ず、乱数取得ドライバＰ５を介して上記システム層に位置する乱数バッファ６０２１ａから乱数が受け渡されるようになっている。
【００５９】
同様に、デバッグ時に外部コンピュータなどからデバッグ情報の要求があった場合も、デバッグ情報取得ドライバＰ６を介して乱数種や乱数の発生回数などの情報が乱数情報記憶領域６０２１ｂから受け渡されるようになっている。即ち、本実施の形態においては、システム層側にある乱数制御クラスには、演出プログラムＰ１などのユーザ層側からは直接アクセスすることが禁止されており、上記乱数やデバッグ情報などの乱数に係る情報は、必ず上記の乱数取得ドライバＰ５、またはデバッグ情報取得ドライバＰ６のいずれかの乱数用ドライバクラスを経由して取得するようになっている。
【００６０】
ついで、上記乱数制御クラスにおける乱数の生成の流れについて説明をする。乱数制御クラスでは、乱数の生成にあたり、乱数種生成プログラムＰ２によって乱数生成の基となる乱数種が生成される。具体的には、乱数種生成プログラムＰ２は、下式（１）に従って補助カウンタ６５５１の３２ビットカウンタ値（補助カウンタ値）に基づいて乱数種（シード値）を演算する。
【００６１】
シード値＝（補助カウンタ値XORチェックサム値）XOR
（（デバッグカウンタ[bit7:0]<<16）
＋（デバッグカウンタ[bit15:8]<<24））  …（１）
【００６２】
即ち、乱数種生成プログラムＰ２は、補助カウンタ値とチェックサム値の排他的論理和（ＸＯＲ）を求め、更に、デバッグカウンタ６０５のカウンタ値との排他的論理和（ＸＯＲ）を求めることによって乱数種を演算している。なお、上記チェックサム値は、バックアップ領域６５５２の特定領域から何らかのチェックサム演算により求めた３２ビットのチェックサム値である。
【００６３】
また、デバッグカウンタ６０５のカウンタ値は、１６ビット長のデータである一方、目的のシード値や補助カウンタ値は３２ビット長のデータであるため、デバッグカウンタ６０５のカウンタ値は上式（１）の２行目と３行目に示すようなビットシフト演算によって３２ビットに拡張するよう加工した上で使用する。図７はこのデバッグカウンタ６０５のカウンタ値の加工処理を示している。
【００６４】
この加工処理では、図７上段に示すように、デバッグカウンタ６０５の下位８ビット（０〜７ビット）のデータを取り出して１６ビット左シフト演算し３２ビット拡張した結果（上式（１）２行目）と、デバッグカウンタ６０５の上位８ビット（８〜１５ビット）のデータを取り出して２４ビット左シフト演算し３２ビット拡張した結果（上式（１）３行目）を加算して、図７下段のデバッグカウンタ６０５のカウンタ値とする。
【００６５】
なお、補助カウンタ６５５１は、バックアップＳＲＡＭ６５５に設けられているため、電源がＯＦＦされてもデータが保持されると共に、全ＲＡＭクリア時であってもその値が初期化されることはない。従って、ＲＡＭクリアされることでシード値が固定されることが防止される。また、上記のようにデバッグカウンタ６０５のカウンタ値を加工して用いることによってシード値が「０」となることを防止すると共に、ビットシフト演算して３２ビット拡張することにより、特にシード値の下位ビットから上位ビットの全てのビットをランダムに攪拌する、特に上位１６ビット側の値も漏らさずランダムに攪拌することができるようになっている。
【００６６】
乱数種が生成されると、生成された乱数種が乱数情報記憶領域６０２１ｂに格納されると共に、補助カウンタ６５５１の値が更新される。そして、乱数生成プログラムＰ３は、上記乱数情報記憶領域６０２１ｂに格納された乱数種を使用してソフトウェア乱数を演算し、生成した乱数を乱数バッファ６０２１ａに格納する乱数生成処理を実行する。
【００６７】
なお、乱数生成処理において、本実施の形態ではメルセンヌ・ツイスタ法（Ｍｅｒｓｅｎｎｅ  ｔｗｉｓｔｅｒ法）を用いて乱数を発生させている。メルセンヌ・ツイスタ法は、Ｍ系列乱数発生アルゴリズムを用いた擬似乱数発生方法である。Ｍ系列乱数発生アルゴリズムとは、高次の漸化式によって乱数を発生するアルゴリズムであり、当該式において排他的論理和の演算を行うことを特徴とするものである。また、メルセンヌ・ツイスタ法では、乱数生成プログラムＰ３が乱数列の次の値を生成するために内部で保持する所定数（本実施の形態では６２３個）の状態ベクトル（初期値）を備えている必要があり、この状態ベクトルは、上述した乱数情報記憶領域６０２１ｂに記憶されている。
【００６８】
３．乱数の生成タイミング
ついで、上記乱数の生成タイミングについて説明をする。メルセンヌ・ツイスタ法では、乱数周期が非常に長く（２１９９３７−１）、また高次元（６２３次元）に均等分布する乱数列を生成でき、生成した乱数は任意のビット長（８／１６／３２／６４ｂｉｔ）の乱数データとして使用することができる。しかし、その反面、初期化時と６２４ｎ回目（ｎは自然数）の乱数の取得時には状態ベクトルのデータを更新する必要があり、処理負荷が一時的に増加するデメリットがある。即ち、メルセンヌ・ツイスタ法では、乱数周期よりも短い所定周期で分割して状態ベクトルの更新を行うようになってはいるものの、乱数生成時に丁度この状態ベクトルの更新の所定周期が到来すると、それによって処理負荷が一時的に増大する。
【００６９】
このため、本実施の形態では、サブＣＰＵ３３０ａ１の負荷が高い状態で、上記乱数生成処理の負荷のピークが到来することを防止するため、上述したように乱数を使用前に先行して生成し、乱数バッファ６０２１ａに蓄積すると共に、遊技機の電源投入時及びサブＣＰＵ３３０ａ１の負荷の低い低負荷時（以下、システム安定時ともいう）に上記乱数を生成及び格納するように構成されている。以下、これら電源投入時及びシステム安定時における乱数生成処理について詳しく説明をする。
【００７０】
＜電源投入時における乱数生成処理＞
まず、電源投入時の乱数生成処理について図８及び図９に基づいて説明をする。図８に示すように、遊技機の電源がＯＮされると、まず、ＣＰＵＲＡＭ６０２のカーネルスタック領域６０２２及び乱数用変数領域６０２１に対して初期化処理が実行される（図８のＳ１）。この初期化処理では、乱数用変数領域６０２１が初期化されるため、乱数情報記憶領域６０２１ｂに記憶されている状態ベクトル及び乱数種、乱数バッファ６０２１ａに格納されている乱数などのデータが初期化される。
【００７１】
上記初期化処理が実行されると、次に、乱数種生成プログラムＰ２が実行されて乱数種が生成され、この生成された乱数種が乱数情報記憶領域６０２１ｂに格納される（Ｓ２）。乱数情報記憶領域６０２１ｂに新たな乱数種が格納されると、乱数生成プログラムＰ３が実行されて、この新たな乱数種に基づいて乱数生成が実行される（Ｓ３）。
【００７２】
上述したメルセンヌ・ツイスタ法により乱数生成を実行するに際し、電源投入時は、状態ベクトルのデータが初期化されているため、乱数種生成プログラムＰ２（図６）はこの状態ベクトルのデータを更新して乱数情報記憶領域６０２１ｂに記憶させる。ついで、乱数生成プログラムＰ３は、生成する乱数値の数を決定し、上記新たな乱数種及び状態ベクトルに基づいて所望の数の乱数値を生成する。
【００７３】
ここで、本実施の形態では、メルセンヌ・ツイスタ法により３２ビット長の乱数値が生成される。一方で、乱数バッファ６０２１ａには、乱数値は１６ビット長のデータとして格納される。従って、図９に示すように、メルセンヌ・ツイスタ法によって生成された３２ビット長の乱数値は、上位１６ビットの値と、下位１６ビットの値とが別々の乱数として乱数バッファ６０２１ａに格納される。
【００７４】
上述したように乱数バッファ６０２１ａは、５１２段のＦＩＦＯ構造のリングバッファにより構成されており、電源投入時には、この５１２段の乱数バッファ６０２１ａの全てに乱数が格納される。従って、乱数生成プログラムＰ３は、メルセンヌ・ツイスタ法によって５１２／２＝２５６個の３２ビット長の乱数を生成し、生成した２５６個の３２ビット長の乱数を、生成した乱数の順に上位１６ビット、下位１６ビットの順序で乱数バッファ６０２１ａに格納して行く（Ｓ４）。
【００７５】
そして、５１２段の乱数バッファ６０２１ａの全てに乱数が格納されると（Ｓ５のＹｅｓ）、乱数生成処理を終了し、乱数バッファ６０２１ａに空きがある場合には（Ｓ５のＮｏ）、その空きが無くなるまで乱数を生成する。このように、本実施の形態では、電源投入時に乱数バッファ６０２１ａに空きが無くなるまで乱数を生成するため、遊技が開始する前に最大限、乱数の生成を実行することができ、遊技開始後の乱数生成の負荷を軽減することができる。
【００７６】
＜システム安定時における乱数生成処理＞
ついで、システム安定時における乱数生成処理について図１０及び図１１に基づいて説明をする。システム起動後、タスク管理プログラムＰ４は、所定時間毎（本実施の形態では３０ｆｐｓ（３３．３３ｍｓ）のサイクル）に実行可能なプロセスのタスクに優先度を設定し、サブＣＰＵ３３０ａ１は、このタスク管理プログラムＰ４によって設定された優先度に従って各タスクを逐次処理する。
【００７７】
以下、演出処理を実行するプロセスＡ〜Ｃ及び乱数生成処理を実行するプロセスＤを実行する場合を例にとって、上記サブＣＰＵ３３０ａ１によるタスク処理を詳しく説明する。なお、プロセスＡは、タスクＡ１及びＡ２から構成され、プロセスＢはタスクＢ１から構成され、プロセスＣはタスクＣ１から構成され、プロセスＤはタスクＤ１から構成されているものとする。図１０（ａ）に示すように、本実施の形態に係るタスク管理プログラムＰ４は、発生したタスク（プロセス）の内、実行可能な状態のタスクに対して優先度を設定し、この設定した優先度に従ってタスクの順序を設定する。例えば、第１サイクルＴ１では実行するタスクの順序をＡ１→Ｂ１→Ｃ１→Ｄ１のように設定する。
【００７８】
このように優先度が設定されると、サブＣＰＵ３３０ａ１は、上記第１サイクルＴ１内において、タスク管理プログラムＰ４によって設定された優先度に沿って、各タスクを逐次処理して行く。しかしながら、図１０（ｂ）に示すように、第１サイクルＴ１では、単一サイクルに対して実行可能なタスクの量が多いため、タスクＣ１を実行した時点にて第１サイクルＴ１が終了してしまう。このように、当該サイクル内において優先度の低いタスクの処理ができなかった場合、処理することができなかったタスク（第１サイクルＴ１においてはタスクＤ１）については処理が持ち越され、タスク管理プログラムＰ４は、次のサイクル（第２サイクルＴ２）の開始に際して再度、優先度付けを行う。
【００７９】
第１サイクルＴ１にてプロセスＢ及びＣが終了し、また、タスクＡ１が実行されたことにより、第２サイクルＴ２においてはプロセスＡのタスクＡ２が実行可能となる。このため、タスク管理プログラムＰ４は、上記タスクＡ２及び未実行のタスクＤ１に対して優先度を設定し、第２サイクルＴ２にて実行するタスクの順序をＡ２→Ｄ１とする。第２サイクルＴ２において、サブＣＰＵ３３０ａ１は、この設定された優先度に従ってタスクＡ２及びＤ１を逐次処理する。第２サイクルＴ２では、乱数生成処理であるタスクＤ１よりも優先度の高いタスクがタスクＡ２のみしかないため、図１０（ｂ）に示すようにタスクＡ２が実行されたのち第２サイクルＴ２中にて上記タスクＤ１も実行することができる。
【００８０】
具体的には、図１１に示すように、タスクＤ１が起動されると、乱数生成プログラムＰ３が呼び出され、乱数生成プログラムＰ３は、まず、状態ベクトルの更新が必要か否かを確認する（図１１のＳ１０）。即ち、今回の乱数生成処理が前回の状態ベクトルの更新から６２４ｎ回目の乱数生成にあたるか否かを判断し、６２４ｎ回目の乱数生成の場合は（Ｓ１０のＹｅｓ）、乱数情報記憶領域６０２１ｂに格納されている状態ベクトルの値を更新する（Ｓ１５）。更に、状態ベクトルの更新が必要ない場合（Ｓ１０のＮｏ）は、乱数バッファ６０２１ａがフル（Ｆｕｌｌ）、即ち、乱数バッファ６０２１ａが満杯であるか否かを判定する（Ｓ１１）。ここで、１６ビット乱数を格納できる空き容量がない状態である場合（Ｓ１１のＹｅｓ）は、乱数生成プログラムＰ３を実行するタスクＤ１を終了する。
【００８１】
一方、１６ビット乱数を格納できる空き容量が存在する場合（Ｓ１１のＮｏ）は、乱数生成プログラムＰ３が生成すべき乱数の発生個数を決定する（Ｓ１２）。この図１１のＳ１２における乱数の生成個数（Ｎ）の決定処理は、後で図１２を参照して詳細に説明する。
【００８２】
乱数生成アルゴリズムによって生成する乱数の個数が決定（Ｓ１２）されると、乱数生成プログラムＰ３は、決定された個数の３２ビット乱数をメルセンヌ・ツイスタ法によって生成し（Ｓ１３）、生成された順番を崩さずに上位１６ビット側から乱数バッファ６０２１ａに格納する（Ｓ１４）。なお、図１１は、簡略化のため、ステップＳ１０の位置においてのみ状態ベクトルの更新を確認するよう記述しているが、実際の処理では、複数の乱数をステップＳ１３にて生成する場合、そのそれぞれの乱数の１個の生成の度に状態ベクトルの更新が必要か否かを確認するものとする。
【００８３】
このように、タスク管理プログラムＰ４は、各サイクル毎に乱数生成処理に係るタスク（例えばタスクＤ１）を実行可能タスクのウェイティングキュー（待ち行列）に組み込むと共に、上記乱数生成処理に係るタスクが演出処理に係るタスク（例えばタスクＡ１、Ａ２、Ｂ１、Ｃ１）より優先度が低くなるように優先度を設定している。より詳しくは、タスク管理プログラムＰ４は、乱数生成処理に係るタスクの優先度を最も低くするように設定している。従って、図１０（ｂ）のサイクルＴ１のように他のタスクの処理によってサブＣＰＵ３３０ａ１の負荷が重い状態（高負荷時）では、乱数生成処理に係るタスクは実行されず、少なくとも所定サイクル内に演出処理に係るタスクが全て実行された低負荷時（即ち、システム安定時）に乱数生成処理に係るタスクが実行されるように構成されている。
【００８４】
上述したように、本実施の形態に係る遊技機（１００）は、乱数に基づいて抽選処理を実行する抽選手段（Ｐ１）と、複数の乱数が格納される記憶手段（６０２１ａ）と、乱数生成アルゴリズムに基づいて演算により乱数を生成し、生成した乱数を前記記憶手段（６０２１ａ）に格納する乱数生成処理を実行して、前記抽選手段（Ｐ１）により取得される乱数を予め前記記憶手段（６０２１ａ）に格納する乱数生成手段（Ｐ３）と、を備え、前記記憶手段（６０２１ａ）に格納された乱数は、前記記憶手段（６０２１ａ）に格納された順序に従って取得されるように構成されている。
【００８５】
即ち、本実施の形態に係るパチンコ機１００は、乱数バッファ６０２１ａを設け、演出プログラムＰ１が乱数を使用する前に、先行して乱数生成プログラムＰ３によって乱数の生成及び蓄積を行う。即ち、乱数バッファ６０２１ａを配置して、乱数生成処理を、乱数の取得ないし実際の乱数使用タイミングとは非同期的に実行するよう構成されている。このような構成により、例えば、内部状態の移行や演出時間、エフェクトの強さなど、様々な状態を決定するために瞬間的に多量の乱数を消費し、当該演出に係る各種演算によりサブＣＰＵ３３０ａ１が高負荷状態となるユーザ操作を契機に発生する演出の発生時や演出の切り替え時を避けて乱数生成を実行することができ、乱数生成に係る処理負荷を分散することができる。特に、メルセンヌ・ツイスタ法などの高性能な乱数生成アルゴリズムは、比較的、処理負荷が高く、乱数値の生成に一定の処理能力が要求されるが、乱数の生成タイミングをズラすことによって、この乱数生成処理による負荷によって他のデバイスの制御を妨げることを防止し、演出上の不備（コマ落ち、音切れ）などの発生を防止することができる。
【００８６】
また、記憶手段としての乱数バッファ６０２１ａをＦＩＦＯバッファとして構成し、この乱数バッファ６０２１ａにソフトウェア乱数を格納している。ソフトウェア乱数は、生成する時間軸が乱数値のランダム性に影響を及ぼさず、また、乱数が生成された順序に従って使用されることとなるため、アルゴリズムとして補償されている乱数の正当性を担保することができる。
【００８７】
また、前記抽選手段は、実行する演出を乱数に基づいて決定する演出抽選処理を実行すると共に、前記決定された演出を演出装置（２００）に実行させる演出制御手段（Ｐ１）であり、前記乱数生成手段（Ｐ３）は、前記演出制御手段によって実行される制御による処理負荷が所定の負荷以下の状態にて、前記乱数生成処理を実行して生成された乱数を前記記憶手段（６０２１ａ）に格納している。
【００８８】
即ち、乱数生成プログラムＰ３は、例えば、始動口１２０,１２２や大入賞口１２８に遊技球が入球していない時や、遊技者による遊技が実行されていないデモ画面表示時など、サブＣＰＵ３３０ａ１が低処理負荷状態の際に上記乱数を生成することが出来る。このため、上述した演出の切替時などサブＣＰＵ３３０ａ１が高負荷状態の際にサブＣＰＵ３３０ａ１の処理能力を乱数生成のために割くことを回避することができる。
【００８９】
また、パチンコ機１００は、制御処理の実行に係るタスクの優先度を設定すると共に、前記乱数生成手段（Ｐ３）による前記乱数生成処理に係るタスクの優先度を、前記演出抽選処理にて決定された演出に関する制御処理に係るタスクよりも低く設定するタスク管理手段（Ｐ４）を備えている。
【００９０】
即ち、タスク管理プログラムＰ４が、乱数生成処理に係るタスクよりも演出に関する制御処理に係るタスクを低く設定することにより、演出に係るタスクを実行してもなお、乱数生成処理に係るタスクを実行することができる上記低処理負荷状態、即ち、システム安定時に乱数を生成することができる。
【００９１】
また、前記乱数生成手段（Ｐ３）は、電源投入時に前記乱数生成処理を実行する。即ち、電源投入時に乱数生成処理を実行し、乱数バッファ６０２１ａに乱数を格納することによって、遊技が開始されていない状態にて乱数バッファ６０２１ａに乱数を格納することができ、遊技開始後の乱数生成の負荷を軽減することができる。
【００９２】
４．乱数生成ないし取得処理の細部
以下では、本実施の形態における乱数生成系、特に乱数生成系の処理の細部において採用可能な種々の構成について詳細に説明する。以下でも、乱数生成はメルセンヌ・ツイスタ法によって行うものとする。
【００９３】
＜乱数生成および乱数バッファへの格納＞
本実施の形態においては、上述のように、乱数生成処理（上記のタスクＤ１）で呼び出される乱数生成プログラムＰ３は乱数生成において、３２ビット乱数を生成する。一方、ユーザ層（図６）に配置された演出制御手段たる演出プログラムＰ１が演出制御に必要とする乱数値は１６ビット乱数である。
【００９４】
そこで、本実施の形態では、次のような乱数生成手段（乱数生成プログラムＰ３）によって生成させた乱数を複数の乱数に分割する分割手段を用いる。即ち、演出プログラムＰ１に出力できる１６ビット乱数に対応する１６ビットの格納段を例えば５１２段有する乱数バッファ６０２１ａを配置する（図６）。この乱数バッファ６０２１ａは、乱数生成の処理負荷の分散を考慮して、演出プログラムＰ１への乱数出力と、乱数生成とを非同期的に行うためのＦＩＦＯバッファとして機能させる。そして、図９に示したように、乱数生成プログラムＰ３に生成させた３２ビット乱数１つを上位１６ビットと下位１６ビットに分割し、乱数バッファ６０２１ａの２つの格納段に格納する。
【００９５】
上記のような構成において、もし仮に図１１の乱数生成および乱数バッファ（ＦＩＦＯ）への格納を行う時、乱数バッファ６０２１ａに１６ビットの格納域が１段しか空いていない場合には、乱数生成プログラムＰ３を呼び出して３２ビット乱数を生成すると、１６ビット乱数を１つは乱数バッファ６０２１ａに格納できるが、残りの１６ビット乱数は格納できないことになる。特にメルセンヌ・ツイスタ法のように乱数の均等分布を保証するため、予め乱数情報記憶領域６０２１ｂに状態ベクトルを格納しているような手法を乱数生成に用いている場合、乱数バッファ６０２１ａに格納できなかった残りの１６ビット乱数を捨て去ってしまうことは乱数列を乱すことになり、適切ではない。
【００９６】
そこで、以下では、図１１のＳ１２の詳細な構成、即ち、サブＣＰＵ３３０ａ１（図３、図４）が乱数生成プログラムＰ３に生成させる、分割して乱数バッファ６０２１ａの現在の空き容量に格納できるだけの３２ビット乱数の生成個数（Ｎ）を決定するための詳細な処理の一例を詳細に示している。
【００９７】
図１２の処理では、まず、乱数バッファ６０２１ａの空き段数Ｅを求める（Ｓ２１）。この空き段数Ｅは、１６ビット乱数を格納するための未使用の格納段が何段あるか、即ち、乱数バッファ６０２１ａの空き容量に相当する値で、例えば以下のような処理によってこの空き段数Ｅを求めることができる。
【００９８】
例えば、制御手段としてのサブＣＰＵ３３０ａ１は、上記のように乱数バッファ６０２１ａを５１２段のＦＩＦＯバッファとして管理する。一般に、このようなＦＩＦＯバッファの入出力制御には、バッファ中の読出しアドレスを保持する読み出しポインタＲと、書き込みアドレスを保持する書き込みポインタＷが用いられる。この１６ビットデータを格納するＦＩＦＯ構成の乱数バッファ６０２１ａの格納域（格納段）を指示するポインタＲ、Ｗは、１６ビット幅の格納域のアドレスを指示するポインタとして実装される。また、ポインタＲ、Ｗは１ずつインクリメント（またはデクリメント）させた場合、実際のアドレス値は１６ビットの格納域１つに相当するオフセット値ずつ増加（減少）される。なお、このようなポインタの扱いは、例えばＣ言語などの処理系で一般的なものであるが、他の異なる処理系などにおいては、ＦＩＦＯバッファの読み書きを制御するポインタ（アドレスカウンタ）に関して、上記と異なる演算規約が用いられる場合がある。
【００９９】
また、通常、ＦＩＦＯバッファはいわゆるリングバッファとして使用され、上記のポインタＲ、Ｗの値に応じてサブＣＰＵ３３０ａ１がＦＩＦＯバッファとしての乱数バッファ６０２１ａの終端アドレスに対して読み出しまたは書き込みを行った後は、先頭を指すようにリセットされる。そこで、乱数バッファ６０２１ａが５１２段あって、新しく生成すべき１６ビット乱数を格納するための空き段数Ｅを求める場合には、例えば下式（２）のような演算により、空き段数Ｅを求めることができる。
【０１００】
Ｅ＝（５１２−Ｗ）＋（Ｒ−１）  …（２）
【０１０１】
ここで、上式（２）中のＲ、Ｗは、上記のポインタＲ、Ｗの指示している乱数バッファ６０２１ａのスロット（段）位置を擬似的に表現したものであり、例えばその右辺第１項は書き込みポインタＷより後に残っている空き段数、右辺第２項は読み出しによって空いた空き段数に相当する。
【０１０２】
続いて、図１２の処理手順において、上記のようにして求めた空き段数Ｅを用いて、乱数生成プログラムＰ３に生成させる３２ビット乱数の個数Ｎを次式（３）によって取得する（Ｓ２２）。
【０１０３】
Ｎ＝ＩＮＴ（（Ｅ＋ｎ）／ｎ）  −  １  …（３）
【０１０４】
ここで上式（３）において、ＩＮＴは整数化（切り捨て）の演算を示す。また、ｎは、乱数生成プログラムＰ３に生成させた（３２ビットの）乱数を（１６ビットの）乱数バッファ６０２１ａに格納するために分割する分割数を示し、本実施の形態では、ｎ＝２である。この上式（３）の演算は、切り捨てのために分割数ｎ分だけ予め空き段数Ｅの数値を増やしてから分割数ｎで除し、小数点以下を切り捨てた上、１個の３２ビット乱数に相当する１を減算するものである。例えば、分割数ｎ＝２で、１６ビットの乱数バッファ６０２１ａの空き段数Ｅ（空き容量）がＥ＝３３の時と、Ｅ＝３２の時では、上式（３）によると、いずれの場合も３２ビット乱数の生成個数ＮはＮ＝１６となる。なお、ビット幅の小さい乱数に分割して用いるために、乱数生成プログラムＰ３に生成させる乱数の個数を求める演算手法は、上式（３）に限定されることなく当業者において任意に変更して構わない。
【０１０５】
また、図１１の乱数生成および乱数バッファ格納処理が、低負荷のシステム安定時に低い優先度で実行されることを考慮して、一度の呼び出しでなるべく所期の個数の３２ビット乱数を生成し、１６ビットの乱数バッファ６０２１ａに分割、格納する処理を終了できるよう、３２ビット乱数の生成個数Ｎの最大値を制限することが考えられる。例えば、ステップＳ１２で上式（３）で求めた３２ビット乱数の生成個数Ｎが所定の最大値Ｍを超えないよう制限する。このように、３２ビット乱数の生成個数ＮをＭに制限する場合には、例えばＭの値は１６、３２、４８…程度とすることが考えられる（上述の図１１に関する説明ではＭ＝１６）。
【０１０６】
以上のように、図１２に示した処理手順によって、乱数生成プログラムＰ３が生成する３２ビット乱数を、演出プログラムＰ１が必要とする１６ビット乱数に分割して乱数バッファ６０２１ａに格納し、乱数バッファ６０２１ａを介して出力することができる。このような乱数の分割手段を用いることにより、効率よく、また容易に乱数ビットパターンを捨てることなく、演出プログラムＰ１が必要とするサイズの乱数に分割して出力し、演出プログラムＰ１に利用させることができる。
【０１０７】
しかも、上記のような乱数の分割手段によれば、乱数バッファ６０２１ａの現在の空き容量に格納できるだけの３２ビット乱数の生成個数Ｎを求めることができ、従って、図１２に示した３２ビット乱数の生成個数Ｎの決定処理を図１１のＳ１２に適用すれば、図１１のＳ１３において、１６ビット幅構成の乱数バッファ６０２１ａの空き容量に格納できるだけの生成個数Ｎの３２ビット乱数を乱数生成プログラムＰ３に生成させることができる。
【０１０８】
従って、図１２に示した３２ビット乱数の生成個数Ｎの決定処理によれば、簡単なポインタ演算や整数演算を行うだけで、乱数バッファ６０２１ａの空き容量に応じて当該の空き容量に分割手段により複数に分割された乱数を格納できるよう、３２ビット乱数の生成個数Ｎを決定することができ、生成した３２ビット乱数を分割して得た１６ビット乱数を、その一部を捨てたりすることなく、また生成順に、効率よく乱数を必要とする演出制御手段、例えば演出プログラムＰ１に出力することができる。このため、図１２の３２ビット乱数の生成個数Ｎの決定手法によれば、メルセンヌ・ツイスタ法のような乱数生成手法で保証されている乱数の出現確率分布を損うことがない。
【０１０９】
なお、以上では、上式（３）のような演算によって、乱数バッファ６０２１ａの空き容量に格納できるだけの個数の３２ビット乱数を乱数生成プログラムＰ３に生成させ、これにより、３２ビット乱数を分割して得た１６ビット乱数を生成順に、効率よく演出プログラムＰ１の要求に応じて演出プログラムＰ１に出力させる構成を示した。しかしながら、例えば、上式（３）のような演算を行うことなく３２ビット乱数を乱数生成プログラムＰ３に生成させ、もし３２ビット乱数を分割して得た１６ビット乱数を全て現状の乱数バッファ６０２１ａの空き容量に格納できない状態が生じた場合に、乱数バッファ６０２１ａに格納できなかった１６ビット乱数を格納するための予備バッファを用意しておく構成を採用してもよい。
【０１１０】
この予備バッファは、適当な段数の１６ビットの格納段で構成し、また、当該の予備バッファに１６ビット乱数が格納されているか否かを示す予備バッファフラグを設けておく。また、予備バッファに格納されている乱数の数や読み書き位置を管理するには、上記のポインタＲ、Ｗと同様の読み出し位置および書き込み位置をそれぞれ指示するポインタなどを用意することが考えられる。このような予備バッファを用いる場合、例えば乱数生成プログラムＰ３が、乱数バッファ６０２１ａに空きが生じたか否かを監視し、もし予備バッファに格納されている乱数を格納できる大きさの空き（上式（２）などによって計算できる）が生じている場合には、適宜、予備バッファから乱数バッファ６０２１ａに乱数をコピーし、予備バッファをクリアする。このようにして、３２ビット乱数を分割して得た１６ビット乱数を生成順に、乱数バッファ６０２１ａから順次、出力させることができる。あるいは、乱数バッファ６０２１ａと予備バッファに格納されている乱数の出力順を本来の順序に管理するために、それぞれのバッファの乱数格納アドレスを順番に格納するポインタのリストを用いるようにしてもよい。このようなポインタのリストを用いることによっても、３２ビット乱数を分割して得た１６ビット乱数を生成順に、順次、乱数バッファ６０２１ａから、または予備バッファから出力させることができる。
【０１１１】
以上のような制御を行うことによっても、メルセンヌ・ツイスタ法のような乱数生成手法で保証されている乱数の出現確率分布を損なうことなく、３２ビット乱数を分割して得た１６ビット乱数を生成順に、効率よく順次、演出プログラムＰ１の要求に応じて出力することができる。なお、以上では、乱数取得ドライバＰ５を呼び出す乱数の需要側は演出プログラムＰ１であるものとして説明したが、乱数の需要側の制御系は、演出プログラムＰ１に限らず、副制御部３３０のソフトウェアないしハードウェアによって構成される任意の部位であって構わない。
【０１１２】
＜乱数バッファ枯渇に対する対処＞
上述のように、本実施の形態では、ＦＩＦＯ構成の乱数バッファ６０２１ａを用意し、演出プログラムＰ１の乱数取得とは非同期的に低負荷のシステム安定時に実行される乱数生成プログラムＰ３（乱数生成手段）によって乱数を生成させ、生成させた乱数を乱数バッファ６０２１ａに格納する乱数生成および乱数バッファ格納処理（図１１）を実行する。
【０１１３】
また、制御手段としてのサブＣＰＵ３３０ａ１は、演出プログラムＰ１（演出制御手段）の要求に応じて、乱数バッファ６０２１ａから乱数の生成順に読み出す、いわばバッファモードによって演出プログラムＰ１（演出制御手段）に出力する。また、その時、乱数生成プログラムＰ３に生成させた３２ビット乱数を１６ビット乱数に分割し、しかも分割した１６ビット乱数を捨てることなく、乱数バッファ６０２１ａに格納し、また乱数バッファ６０２１ａを経由して演出プログラムＰ１（演出制御手段）に出力する。
【０１１４】
一方で、演出プログラムＰ１は、乱数取得ドライバＰ５を呼び出すことにより、１６ビット乱数を１つ要求する（図６）。この時、システム側の乱数制御クラス（図６）は、乱数バッファ６０２１ａから１６ビット乱数を１つ取り出して、演出プログラムＰ１に出力する。なお、この１６ビット乱数の出力には、乱数取得ドライバＰ５から呼び出し側の演出プログラムＰ１に対して乱数値をリターン値として返す方式や、また、演出プログラムＰ１が乱数取得ドライバＰ５に対して指定したアドレス（あるいは大域的に確保された所定アドレス）の出力バッファに格納する方式などのいずれを用いてもよい。
【０１１５】
乱数バッファ６０２１ａは、上記のように１６ビット乱数を５１２個格納できる５１２段程度のサイズで構成され、演出プログラムＰ１の要求に先行して図１１の乱数生成および乱数バッファ格納処理によって予め未使用の１６ビット乱数が乱数バッファ６０２１ａに貯留されているよう動作させることになる。そのためには、例えば予め動作実験を行って、演出プログラムＰ１の要求に余裕を持って応答できるよう図１１の乱数生成および乱数バッファ格納処理に与える優先度をチューニングする手法を利用できる。
【０１１６】
しかしながら、入念に上記のようなチューニングを行っても、遊技状態によっては、演出プログラムＰ１が連続的に１６ビット乱数を要求し、図１１の乱数生成および乱数バッファ格納処理に先行して大量に１６ビット乱数が消費され、乱数バッファ６０２１ａが枯渇、即ち、乱数バッファ６０２１ａに出力すべき１６ビット乱数が残っていない空（カラ）状態となる可能性は否定できない。この点を考慮して、１６ビット乱数を格納する乱数バッファ６０２１ａの段数（サイズ）を上記の５１２段などよりもっと多めに取っておく措置も考えられるが、あらゆる遊技ないしそれに対応する演出状態を考慮して、充分な（と考えられる）乱数バッファ６０２１ａの段数を決定するのは容易ではない。また、極めて稀な遊技ないし演出状態まで考慮すると、殆ど使用されないような、無駄に大きすぎる乱数バッファ６０２１ａを確保することになり兼ねない。
【０１１７】
そこで、本実施の形態では、乱数取得ドライバＰ５を図１３（ａ）および、図１３（ｂ）または（ｃ）に示すように構成することにより、乱数を必要とする制御系と乱数を生成ないし取得する制御系との間で、乱数の需要／供給の関係を調節する。例えば、乱数バッファ６０２１ａの枯渇が生じた場合に代替処理（下記の代替処理１または２）を実行できるようにし、１６ビット×５１２段程度の乱数バッファ６０２１ａを配置する場合でも、演出プログラムＰ１に必要とする１６ビット乱数を出力できるようにする。なお、図１３（ａ）〜（ｃ）の処理においても、乱数生成の手法はメルセンヌ・ツイスタ法であるものとする。
【０１１８】
図１３では、演出制御手段に出力すべき乱数が前記乱数バッファに残っていない場合に行う代替処理として、上記のＦＩＦＯ構成の乱数バッファ６０２１ａを経由するバッファモードによらず、演出プログラムＰ１（演出制御手段）に直接、出力する乱数を生成するダイレクトモードを実行する。この、バッファモードに換えて実行する、乱数バッファ６０２１ａを経由せずに乱数を生成するダイレクトモードの形態としては、例えば次のような２つが考えられる。
【０１１９】
上記ダイレクトモードの１つは、上記のバッファモードによらず、即ち、乱数バッファ６０２１ａを経由させることなく、本来の乱数生成手段である乱数生成プログラムＰ３を呼び出して乱数を生成させ、生成した乱数を演出プログラムＰ１（演出制御手段）に出力するものである（図１３（ｂ）の代替処理１）。なお、この場合には、乱数生成プログラムＰ３を呼び出すと３２ビット乱数が１つ生成されるが、演出プログラムＰ１の要求に応じて出力すべき乱数は１６ビット乱数であるから、乱数生成プログラムＰ３により生成させた３２ビット乱数を複数に分割して得た１６ビット乱数の一部、即ち、１６ビット乱数の１つは演出プログラムＰ１に出力し、一方、演出プログラムＰ１に出力しなかった乱数は乱数バッファ６０２１ａに格納し、ＦＩＦＯアクセスを制御する上記のポインタＲ、Ｗを適宜更新する。このような処理によれば、複数に分割して得た１６ビット乱数を捨てたり消去したりすることなく、その全てを出力することができ、従って、メルセンヌ・ツイスタ法のように状態ベクトルなどによって予め生成される擬似乱数の出現確率が決定づけられている乱数生成系の整合性を損うことがない。
【０１２０】
また、上記ダイレクトモードの他の１つは、本来の乱数生成手段である乱数生成プログラムＰ３とは異なる他の手段によって乱数を生成させ、生成した乱数を前記演出制御手段に直接、出力する（図１３（ｃ）の代替処理２）ものである。
【０１２１】
図１３（ａ）は乱数取得ドライバＰ５が、演出プログラムＰ１のクラス呼び出しに応じて、主に上記のバッファモードによって乱数バッファ６０２１ａから乱数を出力する処理手順の全体の流れを示しており、ここではまず乱数バッファ６０２１ａが出力すべき１６ビット乱数が残っていない枯渇（空（カラ））状態であるか否かを判定する（Ｓ３１）。
【０１２２】
この乱数バッファ６０２１ａの枯渇判定は、例えば、ＦＩＦＯアクセスのための上記の読み出し、書き込みのポインタＲ、Ｗに対するポインタ演算などによって行うことができる。例えば、乱数バッファ６０２１ａの枯渇状態（残量０）は乱数バッファ６０２１ａ中の次の書き込みアドレスを指しているアドレス値に、読み出しポインタＲのアドレス値が追いついてしまっている状態として、検出することができる。
【０１２３】
もし、乱数バッファ６０２１ａの枯渇状態（残量０）が生じていなければ、Ｓ３１からＳ３２へ移行し、乱数バッファ６０２１ａから１６ビット乱数を１個読み出し（Ｓ３２）、続いて読み出しポインタＲの値を更新し（Ｓ３３）、読み出した１６ビット乱数を演出プログラムＰ１に出力する（Ｓ３４）。
【０１２４】
一方、乱数バッファ６０２１ａの枯渇状態（残量０）が生じている場合には、乱数バッファ６０２１ａから読み出せる１６ビット乱数が無いため、出力ステップ（Ｓ３４）で出力できる１６ビット乱数を生成する代替処理（Ｓ３５）を実行する。
【０１２５】
図１３（ｂ）と（ｃ）は、上記のダイレクトモードによって１６ビット乱数を生成し、出力する代替処理（Ｓ３５）のそれぞれ異なる構成例を示している。まず、図１３（ｂ）の代替処理１は、ＦＩＦＯの乱数バッファ６０２１ａを経由せず、緊急避難的に乱数生成プログラムＰ３を呼び出して少なくとも１個の１６ビット乱数を生成して出力するものである。
【０１２６】
図１３（ｂ）の代替処理１では、まず、低い優先度のタスク（あるいはプロセス、スレッド）として動作している図１１の乱数生成および乱数バッファ格納処理を一時停止させる（Ｓ５１）。この乱数生成および乱数バッファ格納処理の一時停止には、システムに用意されている例えばシグナル（ｓｉｇｎａｌ）のようなタスク間通信手段（あるいはプロセス間通信手段、スレッド間通信手段など）を利用することができる。
【０１２７】
続いて、乱数生成プログラムＰ３を呼び出して３２ビット乱数をＮ個生成させる（Ｓ５２）。この３２ビット乱数の生成個数Ｎは、１（ないし数個）程度とする。このＮ個の３２ビット乱数は、演出プログラムＰ１が必要とするサイズの乱数を得るためｎ分割（本実施の形態ではｎ＝２）するものとし、Ｎ＊ｎ個の（本実施の形態では１６ビットの）乱数を生成する（Ｓ５３）。
【０１２８】
そして、生成、分割したＮ＊ｎ個の乱数の先頭の１個を演出プログラムＰ１に出力し（Ｓ５４）、残りの（Ｎ＊ｎ−１）個の乱数を乱数バッファ６０２１ａに格納し（Ｓ５５）、それに応じて乱数バッファ６０２１ａのＦＩＦＯ入出力を制御する読み出し、および書き込みのポインタＲ、Ｗの値を更新する（Ｓ５６）。更に、Ｓ５１で一時停止させておいた乱数生成および乱数バッファ格納処理（図１１）を再開させる（Ｓ５７）。このタスク（あるいはプロセス、スレッド）再開処理も、上述の例えばシグナル（ｓｉｇｎａｌ）のようなタスク（あるいはプロセス、スレッド）間通信手段によって実行する。
【０１２９】
以上のようにして、乱数バッファ６０２１ａの枯渇状態が検出された場合には、乱数バッファ６０２１ａを経由しないダイレクトモードとして実装した代替処理１を実行する。乱数バッファ６０２１ａ（ＦＩＦＯ）を経由せず、緊急避難的に直接、乱数生成プログラムＰ３を呼び出して３２ビット乱数を生成し、１６ビット乱数に分割し、その先頭から１６ビット乱数を１個、出力することができる。この処理は、演出プログラムＰ１の要求に迅速に応答するために通常、比較的高い優先度を与えて動作させる乱数取得ドライバＰ５中で高速に実行することができる。しかも、その場合、３２ビット乱数を分割して得た１６ビット乱数のうち使用しなかったものは乱数バッファ６０２１ａ（ＦＩＦＯ）に格納するようにしているため、メルセンヌ・ツイスタ法のように乱数列の整合性を考慮すると生成した乱数列の途中の幾つかを捨てることができないような乱数生成手法を用いている場合でも、乱数システムの整合性を損うことがない。
【０１３０】
一方、図１３（ｃ）は、上記のダイレクトモードによって１６ビット乱数を生成し、出力する他の代替処理２の構成例を示している。図１３（ｃ）の代替処理２は、乱数システムの整合性を僅かに損なう可能性があるが、本来の乱数生成プログラムＰ３を呼び出すことなく、緊急避難的に他の乱数発生手段によって、１６ビット乱数を１つ生成（Ｓ６１）する。
【０１３１】
図１３（ｃ）のＳ６１で他の乱数発生手段によって生成された１個の１６ビット乱数は、同図のＳ６２において、演出プログラムＰ１に出力される。なお、この本来の乱数生成プログラムＰ３とは異なる他の乱数発生手段による１６ビット乱数の生成（Ｓ６１）には、適当なハードウェアタイマやカウンタ、例えばデバッグカウンタ６０５や補助カウンタ６５５１の計数値を利用して演出プログラムＰ１の要求に応じて出力できる１６ビット乱数を生成する手法が考えられる。
【０１３２】
なお、図１３（ｃ）の代替処理２において、乱数の取得方法を変更する場合に用いる（本来の乱数生成プログラムＰ３とは異なる）他の乱数発生手段としては、上記のデバッグカウンタ６０５や補助カウンタ６５５１を用いる方法以外に、ＲＴＣ６５２（システムタイマ）の計時値を適宜ビットシフトして１６ビット乱数を取得する、あるいは別途、サブ基板上に配置した不図示のハードウェアによる乱数生成チップの出力を利用する、などの手法を用いることができる。
【０１３３】
なお、図１３（ｃ）の代替処理２は、本来の乱数生成プログラムＰ３を呼び出さないため、乱数取得ドライバＰ５（システムレベルの乱数制御クラス）で実行する他、ユーザレベルの演出プログラムＰ１側で実行するような構成を採ってもよい。その場合、乱数取得ドライバＰ５は、図１３（ａ）の先頭で乱数バッファ６０２１ａの枯渇を検出した場合、適宜定めておいたエラーを示す戻り値（エラーコード）をユーザレベルの演出プログラムＰ１に返して処理をエラー終了するよう実装する。そして、演出プログラムＰ１側では、その戻り値（エラーコード）を検出した時に、図１３（ｃ）のＳ６１に示した他の手段による乱数発生を行うよう動作させればよい。
【０１３４】
以上のようにして、図１３（ｃ）の代替処理２によれば、乱数バッファ６０２１ａの枯渇（１６ビット乱数の残数０）が生じた場合に演出プログラムＰ１が必要とする１６ビット乱数を生成することができる。図１３（ｃ）の代替処理２は、本来の乱数生成プログラムＰ３を呼び出さずに緊急避難的に１６ビット乱数を生成するため、乱数システムの整合性を損う可能性がある。しかしながら、乱数システムの整合性を僅かに損なう犠牲はあるが、より高速に演出プログラムＰ１に出力すべき代替の１６ビット乱数を生成できる可能性がある。
【０１３５】
また、図１３（ａ）〜（ｃ）に示した処理手法は、乱数バッファ６０２１ａを経由して乱数の入出力を行うバッファモードと、乱数バッファ６０２１ａを経由しないダイレクトモードを設け、乱数の枯渇、言い換えれば乱数の需要と供給に係る状況に応じて、バッファモードとダイレクトモードを切り替える構成であり、このような構成により、乱数の生成系と乱数を利用する処理系の間で、乱数の需要と供給の関係を良好に調節することができる。
【０１３６】
なお、図１３（ａ）〜（ｃ）では、通常状態ではバッファモードを用い、代替処理１または２でダイレクトモードを利用する構成を示したが、この関係は逆であってもよい。また、乱数の需要と供給の調整は、必ずしもバッファの枯渇状態の検出を条件として行うべきものとは限らない。
【０１３７】
例えば、ここで、通常状態では、ダイレクトモードで乱数生成プログラムＰ３によって乱数を発生させることを考える。この構成では、演出プログラムＰ１の乱数の需要を満たすことができないタイミングが生じる場合がある。例えば、メルセンヌ・ツイスタ法のように６２４ｎ回の乱数発生ごとに状態ベクトル更新によって処理が重くなるような乱数方式を乱数生成プログラムＰ３で用いると、例えば高負荷の時にダイレクトモードで乱数生成プログラムＰ３を呼び出した時、生成された乱数を取得するまでに長い処理時間がかかってしまう可能性がある。そこで、ダイレクトモードで乱数生成プログラムＰ３によって乱数を発生させる時に、システムの負荷、例えばサブＣＰＵ３３０ａ１がロードアベレージ（ｌｏａｄ  ａｖｅｒａｇｅ）などの値を取得し、その値が所定以上である場合には、乱数の入出力をバッファモードに切り換えることが考えられる。この場合には、乱数バッファ６０２１ａには、例えば乱数生成プログラムＰ３と異なる乱数生成手段、例えばハードウェアカウンタやタイマの値から乱数を生成して格納する乱数処理を低優先度のタスクとして動作させておく。そして、ロードアベレージ（ｌｏａｄ  ａｖｅｒａｇｅ）などに応じて、システムの負荷が高すぎる場合には、ダイレクトモードで乱数生成プログラムＰ３を呼び出すことなく、乱数バッファ６０２１ａに蓄積されている乱数を出力する。以上のように、通常状態ではダイレクトモードを用い、代替処理１または２でバッファモードを利用する構成とし、乱数の需要と供給の調整を適切に行える可能性がある。
【０１３８】
＜乱数生成異常の対処＞
本実施の形態では、乱数生成手法にメルセンヌ・ツイスタ法を用いており、例えば乱数生成系のハードウェアおよびソフトウェアが正常に動作している場合には、非常に長い周期の擬似乱数列を生成し、演出プログラムＰ１はこれを利用することができる。しかしながら、乱数生成系のハードウェアおよびソフトウェアに異常がある場合には、乱数の生成異常が生じる可能性がある。
【０１３９】
例えば、メルセンヌ・ツイスタ法における状態ベクトルを格納するＣＰＵＲＡＭ６０２の乱数情報記憶領域６０２１ｂが破損しているような状態が発生すると、本来の乱数列の周期よりも短い周期で、例えば同一ビットパターン（０や、他の特定の値に相当するビットパターン）の乱数が連続的に出力されるような生成異常を生じる可能性がある。例えば、物理的な外乱によってＣＰＵＲＡＭ６０２の乱数情報記憶領域６０２１ｂがハードウェア的に破損した場合や、システムプログラムの暴走などによって乱数情報記憶領域６０２１ｂの乱数制御データ、例えばメルセンヌ・ツイスタ法における状態ベクトルが書き換えられてしまうと、上記のような乱数の生成異常を生じる可能性がある。
【０１４０】
図１４は、上記のような乱数の生成異常を生じた場合の回復処理を実装した図１１の乱数生成および乱数バッファ格納処理、特に、図１１のＳ１３およびＳ１４に相当する処理手順の流れを示している。
【０１４１】
図１４に示す回復処理（Ｓ４６）は、乱数の生成異常を検出した場合に乱数の取得方法を変更する手続によって構成される。この乱数の取得方法を変更する手続の１つは、例えば、乱数生成プログラムＰ３（乱数生成手段）とは異なる他の手段によって乱数を生成させ、乱数の生成異常を検出した乱数の少なくとも一部に換えて前記演出制御手段に出力するものである（下記の（Ａ））。また、この乱数の取得方法を変更する手続の他の１つは、例えば乱数生成プログラムＰ３（乱数生成手段）の初期化または更新（下記の（Ｂ））であり、この初期化または更新処理としては、具体的には、乱数生成プログラムＰ３（乱数生成手段）の乱数情報記憶領域６０２１ｂに格納されている乱数制御データの初期化、または更新処理、例えばメルセンヌ・ツイスタ法においては、乱数情報記憶領域６０２１ｂに乱数制御データとして格納されている状態ベクトルの更新処理を行うことができる。
【０１４２】
また、乱数の生成異常は、上記のように、例えば乱数生成プログラムＰ３（乱数生成手段）に発生させ、あるいは更に乱数バッファに分割して格納した複数の乱数に特定の同一値が複数連続した場合に、前記生成異常が発生したことを検出する手法を用いることができる。
【０１４３】
図１４の乱数生成、格納処理（図１１のＳ１３、Ｓ１４に相当）では、まず、図１１のＳ１２で取得した生成個数Ｎの３２ビット乱数を生成および格納済みか否かを判定する（Ｓ４１）。ここで、既にＮ個の３２ビット乱数を生成および格納済みの場合は、この乱数生成、格納処理（図１１のＳ１３、Ｓ１４）を終了する。
【０１４４】
一方、図１１のＳ１２で取得した生成個数Ｎの３２ビット乱数の生成、格納が終了していない場合には、乱数生成プログラムＰ３を呼び出して１個の３２ビット乱数を生成させ（Ｓ４２）、ｎ個（本実施の形態ではｎ＝２）の１６ビット乱数に分割して乱数バッファ６０２１ａに格納する（Ｓ４３）。
【０１４５】
続いて、それまでに乱数バッファ６０２１ａに格納した１６ビット乱数列を検査し、乱数の生成異常が発生しているか否かを判定する（Ｓ４４）。例えば、この判定（Ｓ４４）は、最後に格納した１６ビット乱数列の数個、例えば４〜１０個程度の数個が全て（連続して）同一値（０または他の特定数値）であるか否かを検査することによって行う。そして、このような乱数の生成異常が発生していない場合には、書き込みポインタＷの値を更新（Ｓ４５）し、制御を上記のＳ４１に復帰させる。なお、乱数の生成異常を検出するために連続して同一値であるか否かを検査する１６ビット乱数の数は、必ずしも上記の４〜１０個の範囲でなくても構わない。例えば、適当な演算方式によって、乱数の生成異常を検出するために連続して同一値であるか否かを検査する乱数の数を決定できる場合には、その乱数の数を採用して構わない。ただし、一般には、連続して同一値であるか否かを検査する１６ビット乱数の数が１〜３個程度では誤検出が頻出する可能性が大きくなり、１０個以上などのように多すぎる場合には、極めて稀にしか発生しない生成異常しか検出できなくなる可能性がある、と考えられる。
【０１４６】
一方、ステップＳ４４で、上記乱数の生成異常が発生している場合には、回復処理（Ｓ４６）を実行してからＳ４５に移行する。
【０１４７】
この回復処理（Ｓ４６）の手法の１つ（Ａ）としては、例えば、本来の乱数生成プログラムＰ３とは異なる他の手段によって、生成異常が生じている数個（例えば４、６、８程度の数個）の１６ビット乱数の少なくとも１つを置換する乱数を他の手段によって生成することが考えられる。この他の手段による乱数の生成（Ａ）には、図１３（ｃ）の代替処理２で説明したように、デバッグカウンタ６０５や補助カウンタ６５５１の値、ＲＴＣ６５２（システムタイマ）の計時値などを適宜ビットシフトして１６ビット乱数を取得する手法、あるいは別途、サブ基板上に配置した不図示のハードウェアによる乱数生成チップの出力を利用する手法を用いることができる。
【０１４８】
図９には、生成異常が生じている１６ビット乱数を本来の乱数生成プログラムＰ３とは異なる他の手段によって生成した乱数によって置換する様子を示してある。図９の例では、乱数生成プログラムＰ３が生成した「０」が連続する４個の１６ビット乱数の内、少なくともいずれか一つ、例えば乱数バッファ６０２１ａの５１１段目の値を、他の手段から取得した乱数（例えばデバッグカウンタ６０５のカウンタ値ないしそれを加工して得た値）に書き換えている。このように、生成した乱数に乱数生成アルゴリズムによって生成される乱数列の周期よりも短い周期性が発生した場合、本来の乱数生成プログラムＰ３とは異なる他の乱数発生手段で発生させた乱数によって乱数の少なくとも一部を置き換えることによって、例え、乱数生成系のハードウェアないしソフトウェア的に何らかの不具合が発生している場合でも、演出プログラムＰ１が順次、利用する乱数のランダム性を可能な限り担保することができる。なお、上記乱数値として置き換えるカウンタ値は、デバッグカウンタ６０５のカウンタ値に限らず、ＲＴＣ６５２のカウンタ値などでも良く、乱数生成プログラムＰ３以外の他の手段により生成された値であればどのような値であっても良い。
【０１４９】
なお、生成異常が生じている乱数を置換する値は、乱数生成プログラムＰ３以外の他の手段により生成された値、例えば乱数としての使用に支障のない値であればどのような値を用いても良い。
【０１５０】
また、回復処理（Ｓ４６）の手法の他の１つ（Ｂ）としては、強制的に状態ベクトルの更新処理（例えば図１１のＳ１５）を起動して、ＣＰＵＲＡＭ６０２の乱数情報記憶領域６０２１ｂの初期化ないしは更新処理を行う手法を取ることができる。
【０１５１】
以上のようにして、同一ビットパターン（０または他の特定ビットパターン）の連続出力を介して１６ビット乱数の生成異常を検出し、もしそのような１６ビット乱数の生成異常が発生している場合には、回復処理を行って、乱数システムの整合性を適宜、回復することができる。この回復処理は、乱数の取得方法を変更するものであって、例えば上記のＳ４６で説明したように（Ａ）他の手段による代替乱数の生成、（Ｂ）乱数生成系の制御データ、例えば乱数情報記憶領域６０２１ｂに格納されている乱数制御データ（状態ベクトル）の初期化ないしは更新処理などを行うことによって実現できる。
【０１５２】
なお、回復処理のうち、上記の（Ａ）他の手段による代替乱数の生成による手法を取る場合は、図１３（ｃ）で説明した代替処理の場合と同様に、ユーザレベルの演出プログラムＰ１で実行するよう構成することも考えられる。その場合には、直近の数個（例えば４、６、８程度の数個）の１６ビット乱数列に同一ビットパターン（０または他の特定ビットパターン）の連続が出現しているか否かの判定（上記のＳ４４）、および、その判定結果に応じた他の手段を用いた代替乱数生成による回復処理（上記のＳ４６）は、演出プログラムＰ１で実行する。また、図９の例では、生成異常と判断した４個連続する「０」のうち、その３番目に相当する「０」を他の手段から得た乱数に書き換えているが、生成異常と判断する連続する同一値の乱数の内、どの乱数を書き換えるかは任意である。また、生成異常と判断する連続する同一値の乱数を、全て、適当な手段から得た乱数で書き換えるような構成であってもよい。
【０１５３】
５．変形例
なお、上述した実施の形態では、乱数生成のアルゴリズムとしてメルセンヌ・ツイスタ法を採用したが、本発明はこれに限らず、例えば、Ｘｏｒｓｈｉｆｔ法などの他の乱数生成アルゴリズムによって乱数を生成しても良い。また、乱数を格納する乱数バッファをＦＩＦＯバッファによって構成したが、これに限らず、生成された乱数が生成された順序に従って消費されるように、例えば、乱数を使用する演出プログラムＰ１などのアプリケーション側のプログラムを構成しても良い。
【０１５４】
また、乱数種の生成に補助カウンタ６５５１のカウンタ値を用いているが、これに限らず、例えば、補助カウンタ６５５１のカウンタ値を使用する場合に比較して乱数種の生成スピードは落ちるが、ＲＴＣ６５２やデバッグカウンタ６０５のカウンタ値を用いて乱数種を生成しても良い。更に、補助カウンタ６５５１のカウンタ値をそのまま乱数種として使用しても良い。
【０１５５】
また、本実施形態では、バックアップＳＲＡＭ６５５内の補助カウンタ６５５１は、断電時（電源ＯＦＦ時）にその値が保持されるように構成されているが、例えば、断電時に補助カウンタの値を保持せず、かつ、電源投入時に補助カウンタの初期化を実行しないようにして、電源投入時にその値が不定となるように構成しても良い。このように、電源投入時に乱数種の生成に使用される補助カウンタの値を不定とすることにより、電源投入時の乱数種の値が一定の値になるようにすることを防止することができる。
【０１５６】
また、上述した実施形態では、乱数生成アルゴリズムによって乱数バッファ６０２１ａに格納される乱数よりもビット長の長い乱数を生成し、この乱数生成アルゴリズムによって生成された乱数を複数の乱数に分割して乱数バッファ６０２１ａに格納するように構成したが、これに限らず、例えば、乱数生成アルゴリズムによって生成される乱数のビット長と乱数バッファ６０２１ａに格納される乱数のビット長とを同じにして、分割処理を行わずにそのまま乱数バッファ６０２１ａに格納するように構成しても良い。また、反対に、乱数生成アルゴリズムによって生成される乱数のビット長を、乱数バッファ６０２１ａに格納される乱数のビット長よりも短くし、生成した複数の乱数を結合して１つの乱数として乱数バッファ６０２１ａに格納するようにしても良い。即ち、乱数の正当性を担保できるように、乱数生成アルゴリズムによって生成された乱数を、本来の乱数列の順序を崩さずに残らず使用する形であれば、どのように乱数バッファ６０２１ａに格納するようにしても良い。更に、乱数バッファは、上述した実施の形態のように必ずしも１つである必要はない。例えば、第１の乱数バッファが溢れた場合に、溢れた乱数を格納する第２の乱数バッファが設けられていても良い。
【０１５７】
また、上述した実施形態では、タスクの完了を契機としてサブＣＰＵ３３０ａ１が次のタスクの実行へと移行しており、タスクの状態変更をきっかけとしてタスクの切り替えを行うように構成されていたが、例えば、タスク管理プログラムＰ４は、所定のサイクル内において、各タスクが実行される時間を優先度に応じて設定し、このタスクに応じて設定された時間が経過することを契機にサブＣＰＵ３３０ａ１が次のタスクを実行するように構成しても良い。また、タスクの優先度の設定に限らず、例えば、サブＣＰＵ３３０ａ１の負荷が所定の負荷を監視し、サブＣＰＵ３３０ａ１の負荷が所定の負荷以下の際に乱数生成処理を実行するように構成しても良い。この時、乱数生成処理は、割り込み処理により実行されても良いし、その優先度を上げてサイクル処理内で実行されるように設定しても良い。
【０１５８】
更に、上述した実施形態では、抽選手段として演出プログラムＰ１を例に説明をしたが、本発明はこれに限らず、何らかの乱数抽選を実行するものであれば、上記記憶手段としての乱数バッファ６０２１ａに格納された乱数は、どのような手段（プログラム）に使用されても良く、本発明は、副制御部３３０のみならず主制御部３００に適用されても良い。また、上記サブＣＰＵ３３０ａ１とＶＤＰ３３０ａ２とは、必ずしも一体のハードウェアＬＳＩに実装されている必要はなく、別体のＬＳＩによって構成されても良い。
【０１５９】
また、本実施形態においては、遊技機として、大当たり図柄を含む複数種類の図柄の中からいずれかを決定する図柄決定手段と、図柄が決定されてから所定の変動時間が経過すると、図柄表示部に図柄を表示させる図柄表示手段と、図柄表示部に大当たり図柄が表示されると、複数回のラウンド遊技で構成される大役遊技を実行する大役遊技実行手段と、大役遊技におけるラウンド遊技のうち予め設定された特定ラウンド遊技中に、大入賞口に入球した遊技球が特定領域に進入すると、所定の遊技利益を付与する遊技利益付与手段と、大役遊技中の演出を実行する演出実行手段と、を備えるいわゆる第一種遊技を可能なパチンコ機１００を例示したが、これに限らず、例えば、小当たり遊技中に所定の領域に遊技球が侵入することで大役遊技を開始可能な第二種遊技を可能なパチンコ機であっても本発明は適用し得る。また、第三種遊技を実行可能なパチンコ機、これら第一種ないし第三種遊技のいずれかを組み合わせて実行可能なパチンコ機であっても本発明は適用し得る。更に、例えば、外周面に複数種類の図柄が配列されている複数のリールと、遊技者による開始操作を検出するスタートスイッチと、複数のリールに対応して設けられ、各リールを停止させるための停止操作を検出するストップスイッチと、遊技の進行を制御する主制御部と、コマンドに基づき演出を制御する演出制御手段を有する副制御部を備え、主制御部が、複数種類の役の当否を決定する内部抽選を行う内部抽選手段と、スタートスイッチによる開始操作の検出に基づいて、複数のリールを回転させ、ストップスイッチによる停止操作の検出及び内部抽選手段により決定された内部抽選の結果に基づいて、回転中のリールを停止させるリール停止制御を行うリール制御手段と、複数のリールが停止した状態で、役ごとに予め定められた入賞形態を示す図柄組合せが有効ライン上に表示されたことに基づいて、役が入賞したと判定する入賞判定手段と、を有するスロットマシンにも、本発明は適用できる。以下、スロットマシン１について詳述する。
【０１６０】
＜スロットマシンの機械的構成＞
図１５は、スロットマシン１の外観構成を示す斜視図である。スロットマシン１は、いわゆる回胴式遊技機と呼ばれるもので、メダルを遊技媒体として用いた遊技を行う種類の遊技機である。
【０１６１】
スロットマシン１は、収納箱ＢＸ、前面上扉ＵＤ及び前面下扉ＤＤからなる箱形の筐体内に複数のリールとしての第１リールＲ１〜第３リールＲ３からなるリールユニットが収められている。また、筐体内のリールユニットの下部には、メダルの払出装置としてのホッパーユニット９２０（図１７参照）が収められている。また、スロットマシン１の筐体内には、ＣＰＵ、ＲＯＭ（情報記憶媒体の一例）、ＲＡＭ等を搭載し、スロットマシン１の動作を制御する制御基板も収められている。
【０１６２】
図１５に示すように第１リールＲ１〜第３リールＲ３は、それぞれ外周面が一定の間隔で２０の領域（以下、各領域を「コマ」と記載する）に区画されており、各コマに図１６に示す複数種類の図柄のいずれかが配列されている。
【０１６３】
図１６は、スロットマシン１における第１リールＲ１〜第３リールＲ３の周面に配列された各図柄を示す図である。図１６に示すように、第１リールＲ１〜第３リールＲ３の外周面に、赤７図柄「赤７」、白７図柄「白７」、青７図柄「青７」、ＢＡＲ図柄「ＢＡＲ」、リプレイ図柄「ＲＰ」、ベル図柄「ＢＬ」、チェリー図柄「ＣＨ」、スイカ図柄Ａ「ＷＭＡ」、スイカ図柄Ｂ「ＷＭＢ」、及びブランク図柄「ＢＬＫ」が配列されている。また、第１リールＲ１〜第３リールＲ３の周面には、それぞれ２０コマの図柄が配列されており、それぞれ停止番号０番〜停止番号１９番のいずれかの停止番号が割り当てられている。
【０１６４】
第１リールＲ１〜第３リールＲ３は、リール駆動手段としてのステッピングモータ（図示省略）に軸支されており、それぞれステッピングモータの軸周りに回転駆動され、ステッピングモータの駆動パルスのパルス数やパルス幅などを制御することによって、コマ単位（所定の回転角度単位、所定の回転量単位）で停止可能に設けられている。すなわち、スロットマシン１では、ステッピングモータが制御基板から供給された駆動パルスに応じて第１リールＲ１〜第３リールＲ３を回転駆動し、制御基板から駆動パルスの供給が断たれると、ステッピングモータの回転が停止することに伴って第１リールＲ１〜第３リールＲ３が停止する。
【０１６５】
前面上扉ＵＤと前面下扉ＤＤとは、個別に開閉可能に設けられている。前面上扉ＵＤには、第１リールＲ１〜第３リールＲ３の回転状態及び停止状態を観察可能にする表示窓ＤＷが設けられている。第１リールＲ１〜第３リールＲ３の停止状態では、第１リールＲ１〜第３リールＲ３それぞれの外周面に一定間隔で配列された複数種類の図柄のうち、外周面上に連続して配列されている３つの図柄（上段図柄、中段図柄、下段図柄）をスロットマシン１の正面から表示窓ＤＷを通じて観察できるようになっている。
【０１６６】
また、スロットマシン１では、表示窓ＤＷを通じて図柄を観察するための表示位置として、各リールについて上段、中段、下段が設けられており、各リールの表示位置の組合せによって有効ラインＬ１が設定されている。なお、スロットマシン１では、１回の遊技に関して必要となるメダルの数、いわゆる規定投入数が、遊技状態に応じてそれぞれ２枚（第２規定投入数）又は３枚（第１規定投入数）に設定されており、各遊技状態に設定された規定投入数に相当するメダルが投入されると第１リールＲ１〜第３リールＲ３の中段によって構成される有効ラインＬ１が有効化される。
【０１６７】
そして、遊技結果は、表示窓ＤＷ内の有効ラインＬ１上に停止表示された図柄組合せによって判定され、有効ラインＬ１上の図柄組合せが予め定められた役に対応した図柄組合せである場合に、その役が入賞したものとしてホッパーユニット９２０からメダルの払い出し等が行われる。
【０１６８】
前面上扉ＵＤには、主制御表示装置５００を含む遊技情報表示部ＤＳが設けられている。遊技情報表示部ＤＳは、ＬＥＤ、ランプ、７セグメント表示器等からなり、メダルのクレジット数、１回の遊技におけるメダルの払出数あるいは獲得数、ボーナス状態でのメダルの払出数の合計あるいは獲得数の合計、今回の遊技で当選した役の情報、メダルの払い出しに関係するストップボタンＢ１〜ストップボタンＢ３の押し方を示唆する情報の表示等の各種遊技情報が表示される。主制御表示装置５００には、規定投入数のメダルが投入されスタートレバーＳＬが操作された際に、今回の遊技で当選した役の情報である当選情報に基づき作成される制御信号である当選コマンドに対応する表示である報知表示が表示される。また、主制御表示装置５００には、７セグメント表示器のドットであり、後述する有利期間制御手段７１０によって有利期間が開始されている場合に点灯し、有利期間が開始されていない、つまり非有利期間が開始されている場合に消灯することで有利期間が開始されているか否かを報知する有利期間報知部５００Ａが設けられている。
【０１６９】
また、前面上扉ＵＤには、演出を行うための演出表示装置９３０が設けられている。演出表示装置９３０は、例えば液晶ディスプレイから構成され、遊技を補助したり、遊技を盛り上げたりするための各種の映像や画像が表示される。また、スロットマシン１では、前面上扉ＵＤや前面下扉ＤＤに対して、演出を行うためのスピーカ（図示省略）が複数設けられている。スピーカからは、遊技を補助したり、遊技を盛り上げたりするための各種の音声が出力される。
【０１７０】
前面下扉ＤＤには、各種の操作手段が設けられている。操作手段としては、クレジット（貯留）されたメダルを投入する操作を行うための投入操作手段として、１枚のメダルを投入するシングルベットボタンＢＴ及び規定投入数のメダルを投入するマックスベットボタンＭＢ、第１リールＲ１〜第３リールＲ３を回転させて遊技を開始する契機となる開始操作を遊技者に実行させるための遊技開始操作手段としてのスタートレバーＳＬ、ステッピングモータにより回転駆動されている第１リールＲ１〜第３リールＲ３のそれぞれを停止させる契機となる停止操作を遊技者に実行させるための停止操作手段としてのストップボタンＢ１〜ストップボタンＢ３及びクレジットされたメダルを精算するための精算ボタンＢＳ、遊技者の演出に関する操作を受け付ける演出操作装置ＪＧも設けられている。
【０１７１】
演出操作装置ＪＧは、左右に回転可能なリング状の回転操作部ＪＧＤと、回転操作部ＪＧＤの回転中心に設けられ押下操作することができるボタンＪＧＢとから構成されている。回転操作部ＪＧＤは、回転方向及び回転量（角度）を検知し、検知した情報を出力することで遊技者の回転操作を受け付けることができる。ボタンＪＧＢは、押下操作された場合に副制御部２０（図１７参照）へ信号を出力することで遊技者の押下操作を受け付ける。演出操作装置ＪＧは、演出表示装置９３０に表示される画像等に合わせて有効化され、操作有効期間内に遊技者の操作を受け付けると、当該操作に応じて、様々な演出が実行される。
【０１７２】
スロットマシン１では、遊技者がメダルをメダル投入口ＭＩに投入するか、メダルが規定投入数以上にクレジットされている場合に、規定投入数と同じ回数シングルベットボタンＢＴを押下するシングルベット操作又はマックスベットボタンＭＢを押下するマックスベット操作を行うことで、規定投入数のメダルが投入状態に設定され、第１リールＲ１〜第３リールＲ３の回転制御を開始することが可能な準備状態にセットされる。そして、遊技者がスタートレバーＳＬに対して開始操作を実行すると、制御基板において第１リールＲ１〜第３リールＲ３をステッピングモータの駆動により回転開始させるとともに、乱数を用いた内部抽選が行われ、第１リールＲ１〜第３リールＲ３の回転速度が所定の速度まで上昇し定常回転になったことを条件に、ストップボタンＢ１〜ストップボタンＢ３の押下操作が許可、すなわちストップボタンＢ１〜ストップボタンＢ３による停止操作が有効化される。
【０１７３】
その後、遊技者が任意のタイミングでストップボタンＢ１〜ストップボタンＢ３を押下（以下、「押下タイミング」と記載）していくと、ストップボタンＢ１〜ストップボタンＢ３のそれぞれに内蔵されている停止信号出力手段としてのストップスイッチ８４０がＯＮ動作を行い、制御基板へ出力するリール停止信号をＯＦＦ状態からＯＮ状態へ変化させる。
【０１７４】
また、遊技者が任意のタイミングで押下状態にあるストップボタンＢ１〜ストップボタンＢ３を解放すると、ストップボタンＢ１〜ストップボタンＢ３のそれぞれに対応するストップスイッチがＯＦＦ動作を行い、制御基板へ出力するリール停止信号をＯＮ状態からＯＦＦ状態に変化させる。そして、制御基板は、ストップボタンＢ１〜ストップボタンＢ３の押下タイミング及び解放タイミングに応じて信号状態が変化するリール停止信号のＯＦＦ状態からＯＮ状態への変化に基づいて、内部抽選の結果に応じた停止位置で第１リールＲ１〜第３リールＲ３を停止させる。
【０１７５】
また、前面下扉ＤＤの下部には、メダル払出口ＭＯとメダル受け皿ＭＰとが設けられており、遊技の結果に応じた枚数のメダルがメダル払出口ＭＯからメダル受け皿ＭＰへ払い出されるようになっている。また、遊技機内にクレジットされたメダルが記憶されている状態で、精算ボタンＢＳが押下された場合、精算ボタンＢＳの押下に伴ってホッパーユニット９２０からクレジット数（クレジットされたメダルの枚数）に相当する枚数のメダルを払い出す精算処理を実行し、メダル払出口ＭＯからメダル受け皿ＭＰへメダルを払い出す。
【０１７６】
＜スロットマシンの電気的構成＞
図１７は、スロットマシン１の機能ブロック図である。スロットマシン１は、それぞれ独立した制御基板である主制御部１０と副制御部２０とによって制御される。主制御部１０は、複数の主操作検出手段としてのメダル投入スイッチ８１０、ベットスイッチ８２０、スタートスイッチ８３０、ストップスイッチ８４０、設定変更スイッチ８５０及びリセットスイッチ８６０の入力手段からの入力信号を受けて、遊技を実行するための各種の演算を行い、演算結果に基づいてリールユニット９１０、ホッパーユニット９２０、遊技情報表示部ＤＳ等の出力手段の動作を制御する。また、スロットマシン１においては、主制御部１０と副制御部２０とについて、主制御部１０から副制御部２０への短方向通信のみを可能に構成され、主制御部１０から副制御部２０へ各種信号を送信可能であるものの、副制御部２０から主制御部１０へ各種信号を送信することができないように通信接続されている。
【０１７７】
主制御部１０は、遊技の進行を制御し、メインＣＰＵ１１と、メインＲＯＭ１２と、メインＲＡＭ１３と、を備えている。メインＣＰＵ１１は、各入力手段からの入力信号に基づいて、メインＲＯＭ１２に格納されたプログラムを読み出して演算処理を行うとともに、各装置や表示器を直接制御したり、あるいは演算処理の結果に応じて他の制御部に主制御部１０で生成したコマンドである第１コマンドを送信したりすることで、遊技の進行に係る制御処理を実行する。メインＲＡＭ１３は、メインＣＰＵ１１の演算処理時におけるデータのワークエリアとして機能する。
【０１７８】
メインＣＰＵ１１は、メインＲＯＭ１２に格納されたプログラムに基づき、メインＲＡＭ１３と協働して、設定変更手段７０１、投入受付手段７０２、乱数生成手段７０３、内部抽選手段７０４、リール制御手段７０５、入賞判定手段７０６、払出制御手段７０７、リプレイ処理手段７０８、遊技状態移行制御手段７０９、有利期間制御手段７１０、指示機能状態制御手段７１１として機能する。
【０１７９】
設定変更手段７０１は、メインＲＡＭ１３に記憶されている設定値を変更する制御を行う。スロットマシン１では、収納箱ＢＸ内に収められた電源装置に設けられている設定変更スイッチ８５０から出力される信号である設定信号が入力されることで、設定変更が実行される。スロットマシン１では、設定変更手段７０１によって確定された設定値に応じて、内部抽選手段７０４による内部抽選で当選可能な当選エリアのうち一部の当選エリアの当選確率が変更される。
【０１８０】
投入受付手段７０２は、メダルの投入を受け付ける投入受付期間において、規定投入数に相当するメダルが投入されたことに基づいて、スタートレバーＳＬに対する遊技開始操作を有効化する処理を行う。具体的には、メダル投入口ＭＩにメダルが投入されると、メダル投入スイッチ８１０が作動することに伴って、投入受付手段７０２が、規定投入数を限度として、投入されたメダルを投入状態に設定する。また、投入受付手段７０２は、メダルがクレジットされた状態でシングルベットボタンＢＴ又はマックスベットボタンＭＢが押下されるベット操作が実行されると、ベットスイッチ８２０が作動することに伴って、規定投入数を限度として、クレジットされたメダルを投入状態に設定する。
【０１８１】
なお、スロットマシン１では、規定投入数に相当するメダルの投入に基づいて有効化されたスタートレバーＳＬの最初の押下操作が、遊技者による遊技の開始操作として受け付けられ、第１リールＲ１〜第３リールＲ３の回転を開始させる契機となっているとともに、後述する内部抽選手段７０４が内部抽選を実行する契機となっている。
【０１８２】
メイン側乱数生成手段である乱数生成手段７０３は、抽選用の乱数を発生させる手段である。乱数は、例えば、インクリメントカウンタ（所定のカウント範囲を循環するように数値をカウントするカウンタ）のカウント値に基づいて発生させることができる。なお、「乱数」には、数学的な意味でランダムに発生する値のみならず、発生自体は規則的であっても、取得タイミング等が不規則であるために実質的に乱数として機能しうる値も含まれる。
【０１８３】
内部抽選手段７０４は、遊技者がスタートレバーＳＬに対して開始操作を実行し、スタートスイッチ８３０が開始操作を検出することで出力されるスタート信号に基づいて、役の当否を決定する内部抽選を行う手段であって、抽選テーブル選択処理、乱数判定処理、抽選フラグ設定処理等を行う。
【０１８４】
抽選テーブル選択処理では、メインＲＯＭ１２に格納されている複数の内部抽選テーブルのうち、いずれの内部抽選テーブルを用いて内部抽選を行うかを現在の遊技状態に基づき選択する。各内部抽選テーブルでは、複数の乱数（例えば、０〜６５５３５の６５５３６個の乱数）のそれぞれに対して、リプレイ、小役及びボーナスなどの各種の役やハズレ（不当選）が対応付けられている。
【０１８５】
乱数判定処理では、スタートスイッチ８３０から出力されるスタート信号に基づいて、遊技ごとに乱数生成手段７０３が生成する乱数（抽選用乱数）を取得し、取得した乱数を抽選テーブル選択処理で選択した内部抽選テーブルと比較して、比較結果に基づき役に当選したか否かを判定する。
【０１８６】
抽選フラグ設定処理では、乱数判定処理の結果に基づいて、当選したと判定された役に対応する抽選フラグを非成立状態（第１のフラグ状態、ＯＦＦ状態）から成立状態（第２のフラグ状態、ＯＮ状態）に設定する。スロットマシン１では、２種類以上の役が重複して当選した場合には、重複して当選した２種類以上の役のそれぞれに対応する抽選フラグが成立状態に設定される。なお、抽選フラグの設定情報は、メインＲＡＭ１３に格納される。
【０１８７】
リール制御手段７０５は、遊技者がスタートレバーＳＬへ開始操作を実行することにより作動するスタートスイッチ８３０から、スタート信号が出力されたことに基づいて、ステッピングモータにより第１リールＲ１〜第３リールＲ３の回転駆動を開始する。また、リール制御手段７０５は、第１リールＲ１〜第３リールＲ３の回転状態が、所定速度（例えば、約８０ｒｐｍ）で定常回転する回転状態となった場合に、各リールに対応するストップボタンＢ１〜ストップボタンＢ３が押下操作されることでストップスイッチ８４０によって検出される停止操作を有効化する制御を実行する。そして、リール制御手段７０５は、停止操作の検出に基づきストップスイッチ８４０からリール停止信号が出力された場合に、リールユニット９１０のステッピングモータへの駆動パルス（モータ駆動信号）の供給を停止することにより、第１リールＲ１〜第３リールＲ３の各リールを停止させる制御を行う。このとき、リール制御手段７０５は、ステッピングモータにより回転駆動されている第１リールＲ１〜第３リールＲ３を抽選フラグの設定状態、すなわち内部抽選の結果に応じた態様で停止させる制御を行う。つまり、リール制御手段７０５は、ストップボタンＢ１〜ストップボタンＢ３の各ボタンが押下されるごとに、第１リールＲ１〜第３リールＲ３のうち押下されたストップボタンに対応するリールの停止位置を決定して、決定された停止位置でリールを停止させる制御を行っている。
【０１８８】
また、スロットマシン１では、第１リールＲ１〜第３リールＲ３について、ストップボタンＢ１〜ストップボタンＢ３が押下された時点から１９０ｍｓ以内に、押下されたストップボタンに対応する回転中のリールを停止するようになっている。ここで、ストップボタンの押下時点から１９０ｍｓ以内に回転中のリールを停止させる場合、回転している各リールの停止位置は、各リールの直径及び回転速度により、ストップボタンの押下時点からリールが停止するまでに最大で４コマ分回転可能に構成されている。リール制御手段７０５は、ストップボタンＢ１〜ストップボタンＢ３のうち押下操作が行われたストップボタンに対応する回転中のリールの外周面上において、内部抽選で当選した役に対応する図柄が、ストップボタンに対する押下操作が行われた時点で有効ラインＬ１上の表示位置に対して０コマ〜４コマの範囲内に位置する場合に、抽選フラグが当選状態に設定されている役に対応する図柄を有効ラインＬ１上の表示位置に表示するように、押下操作が行われたストップボタンに対応する回転中のリールを停止させる制御を行っている。
【０１８９】
リール制御手段７０５は、スタートスイッチ８３０が開始操作を検出することで出力されるスタート信号を受信し、第１リールＲ１〜第３リールＲ３の回転を開始して１回の遊技を開始した場合に、一般にウェイト（又はウェイト時間）と称される待機時間（約４．１秒）を設定するように構成されている。そして、リール制御手段７０５は、待機時間の設定から待機時間が経過するまでの期間内にスタート信号をスタートスイッチ８３０から受信した場合に、待機時間が経過した後に第１リールＲ１〜第３リールＲ３の回転を開始するように構成されている。この構成により、リール制御手段７０５は、１回の遊技の開始から次の遊技の開始までに一定の時間として最小遊技時間（約４．１秒）を経過してから遊技を開始させることができる。
【０１９０】
入賞判定手段７０６は、第１リールＲ１〜第３リールＲ３の全てが停止した時点で有効ラインＬ１上に表示されている図柄組合せ（第１リールＲ１〜第３リールＲ３の停止態様）が、予め定められた役の入賞の形態であるか否かを判定する入賞判定処理を行う。スロットマシン１では、入賞判定処理における入賞判定手段７０６の判定結果に基づいて各処理が実行される。入賞役の判定結果に基づき実行される各処理としては、例えば、小役が入賞した場合には払出制御手段７０７にメダルを払い出させる枚数を決定する処理が行われ、リプレイが入賞した場合には、リプレイ処理手段７０８に次回の遊技においてメダルを消費せずに実行させる処理を行わせ、ボーナスが入賞した場合には遊技状態移行制御手段７０９に入賞したボーナスを作動させる処理が行われる。
【０１９１】
払出制御手段７０７は、入賞判定手段７０６による入賞判定処理の結果に基づき、払出数に相当するメダルを、払出装置としてのホッパーユニット９２０に払い出させる払出制御を行う。ホッパーユニット９２０には、メダルを１枚払い出すごとに作動する払出メダル検出スイッチ９２５が備えられている。払出制御手段７０７は、払出メダル検出スイッチ９２５からの入力信号に基づいて、ホッパーユニット９２０から実際に払い出されたメダルの数を管理することができるように構成されている。なお、メダルのクレジットが許可されている場合には、ホッパーユニット９２０によって実際にメダルの払い出しを行う代わりに、メインＲＡＭ１３のクレジット記憶領域（図示省略）に記憶されているクレジット数（クレジットされたメダルの数）に対して払出数を加算するクレジット加算処理を行って仮想的にメダルを払い出す処理を行う。
【０１９２】
リプレイ処理手段７０８は、入賞判定手段７０６により有効ラインＬ１上に複数種類のリプレイのうちいずれかのリプレイの入賞を示す図柄組合せが停止表示されたと判定され、リプレイが入賞した場合に、次回の遊技に関してメダルの投入を要さずに遊技を実行可能にする準備状態に設定するリプレイ処理（再遊技処理）を行う。すなわち、スロットマシン１では、リプレイが入賞した場合、規定投入数分のメダルを遊技者の手持ちのメダル（クレジットメダルを含む）を使わずに自動的に投入する自動投入処理が行われ、前回の遊技と同じ有効ラインＬ１を設定した状態で、次回のスタートレバーＳＬに対する開始操作を待機する。
【０１９３】
遊技状態移行制御手段７０９は、リプレイの当選態様がそれぞれ異なる複数の遊技状態の間での遊技状態の移行と、内部抽選手段７０４による内部抽選で、抽選フラグが成立状態に設定された場合に、入賞するまで成立状態が維持されるボーナスに当選した場合に、現在の遊技状態からボーナス成立状態への遊技状態の移行と、入賞したボーナスを作動させるとともに作動させたボーナスに対応する遊技状態であるボーナス状態への遊技状態の移行と、の遊技状態移行制御を行う。
【０１９４】
有利期間制御手段７１０は、特定役の入賞を補助する入賞補助制御を実行可能な遊技が実行される期間である有利期間（有利区間）と、入賞補助制御が実行されない遊技が実行される期間である非有利期間（非有利区間）と、の間での移行に係る制御を実行する。有利期間制御手段７１０は、有利期間と非有利期間との間での移行に係る制御として、非有利期間内における遊技において、ボーナスが非成立状態であり、かつボーナスの非作動中である場合に設定差がない当選エリアに当選した場合に、非有利期間を終了し有利期間を開始するか否かを決定する抽選である有利期間抽選を実行する。
【０１９５】
有利期間制御手段７１０は、予め設定された有利期間を終了する条件が成立した場合や、有利期間を開始してから所定の遊技回数（例えば１５００ゲーム）の遊技が実行された場合に、有利期間を終了し次ゲームから非有利期間を開始するとともに、有利期間中に使用した指示機能に係る全パラメータを初期化する処理である終了処理を実行する。また、有利期間制御手段７１０は、有利期間を開始した場合に有利期間報知部５００Ａを点灯させ、非有利期間を開始した場合に有利期間報知部５００Ａを消灯させる。
【０１９６】
指示機能状態制御手段７１１は、有利期間制御手段７１０によって有利期間が開始されている場合に、入賞補助制御を実行可能な状態であるＡＴ状態を含む複数の指示機能状態の間での指示機能状態の移行に係る制御を含む指示機能に係る制御（アシストタイム制御）を行う。指示機能状態制御手段７１１は、指示機能状態が入賞補助制御を実行可能な状態である場合に、特定役が入賞する確率を上げるための制御として、内部抽選手段７０４に当選した当選エリアに応じてそれぞれ異なる当選コマンドを作成させ、作成させた当選コマンドを主制御表示装置５００に送信させることで、内部抽選で当選した当選エリアがいずれの当選エリアであるかを報知し、遊技者にストップボタンＢ１〜ストップボタンＢ３の操作方法を指示する機能（指示機能）である報知表示が主制御表示装置５００に実行される制御である入賞補助制御を実行可能となるように構成されている。
【０１９７】
副制御部２０は、主制御部１０から送信されるコマンドに基づき演出を制御し、サブＣＰＵ２１と、サブＲＯＭ２２と、サブＲＡＭ２３と、を備えている。サブＣＰＵ２１は、主制御部１０から送信されたコマンドやタイマからの入力信号等などの外部信号に基づいて、サブＲＯＭ２２に格納されたプログラムを読み出して演算処理を行うとともに、演出表示装置９３０や音響装置９４０を含む演出装置９００に演出を実行させる演出に係る制御を実行する。サブＲＡＭ２３は、サブＣＰＵ２１の演算処理時におけるデータのワークエリアとして機能する。
【０１９８】
上記サブＲＯＭ２２には、演出プログラムＰ１１、乱数種生成プログラムＰ２１、乱数生成プログラムＰ３１、タスク管理プログラムＰ４１、乱数取得ドライバＰ５１、デバッグ情報取得ドライバＰ６１などの各種プログラムや、演出の内容を決定するための複数の演出抽選テーブルなどのデータが格納されており、サブＣＰＵ２１は、これらサブＲＯＭ２２に格納されたプログラムを読み出して演算処理を行うことにより、演出制御手段、乱数種生成手段、乱数生成手段、タスク管理手段として機能する。また、サブＲＡＭ２３には、演出プログラムＰ１１が演出抽選処理を実行する際に使用する乱数が蓄積される乱数バッファ６０２１ａ１が設けられている。
【０１９９】
演出制御手段は、演出プログラムＰ１１がサブＣＰＵ２１により読み出し、実行されることによって機能する手段であり、実行する演出を乱数に基づいて決定する演出抽選処理等の演出に係る制御を実行する。演出制御手段は、これらの処理を、主制御部１０から送信されたコマンドやタイマからの入力信号、演出操作装置８００への遊技者の入力などの外部信号に基づいて実行する。
【０２００】
乱数種生成手段は、乱数種生成プログラムＰ２１がサブＣＰＵ２１により読み出し、実行されることによって機能する手段であり、上記演出抽選処理にて使用されるソフトウェア乱数（擬似乱数）を演算する際の基となる乱数種（以下、シード値ともいう）を生成する。
【０２０１】
乱数生成手段は、乱数生成プログラムＰ３１がサブＣＰＵ２１により読み出し、実行されることによって機能する手段であり、所定の乱数生成アルゴリズムに基づいて演算により乱数を生成する乱数生成処理を実行する。乱数生成プログラムＰ３１は、上述したようにスロットマシン１の電源投入時及びシステム安定時に上記乱数生成処理を実行する。
【０２０２】
タスク管理手段は、タスク管理プログラムＰ４１がサブＣＰＵ２１により読み出し、実行されることによって機能する手段であり、サブＣＰＵ２１が実行する制御処理に係るタスクの優先度を設定する。タスク管理手段は、間隔の短い所定時間毎（本実施の形態では３０ｆｐｓ（３３．３３ｍｓ）のサイクル）に優先度の設定を更新すると共に、サブＣＰＵ２１は、上記所定時間内において実行可能なタスクを優先度に従って逐次処理する。上記処理が繰り返し実行されることによって、遊技者には複数のプロセスが同時に実行されているように見えるようになっている。
【０２０３】
スロットマシン１においても上述したパチンコ機１００と同様に、乱数バッファ６０２１ａ１を設け、演出プログラムＰ１１が乱数を使用する前に、予め乱数生成プログラムＰ３１によって乱数の生成及び蓄積を行っており、乱数生成のタイミングを乱数使用時以外のタイミングにズラしている。これにより、例えば、スタートスイッチ８３０が開始操作を検出した後、各ストップボタンＢ１〜ストップボタンＢ３を押下するまでの間の期間や、遊技者による遊技が実行されていないデモ画面表示時など、サブＣＰＵ２１に対する外部信号の入力が所定量以下となる低処理負荷状態の際に乱数を生成することができ、乱数生成に係る処理負荷を分散することができる。このため、上述した演出の切替時などサブＣＰＵ２１が高負荷状態の際にサブＣＰＵ２１の処理能力を乱数生成のために割くことを回避することができる。
【０２０４】
また、上記スロットマシン１においても上述したパチンコ機１００と同様に、例えば１６ビット構成の乱数バッファ６０２１ａ１を経由して、乱数生成プログラムＰ３１で生成した３２ビット乱数を１６ビット乱数に分割して演出プログラムＰ１１に利用する場合、図１１および図１２に示した乱数生成処理、および３２ビット乱数の生成個数（Ｎ）の決定処理を実施することができ、上述と同様の作用効果を期待できる。また、上記スロットマシン１においても上述したパチンコ機１００と同様に、乱数バッファ６０２１ａ１を配置する場合には、乱数バッファ６０２１ａ１の枯渇に対処する代替処理（図１３（ｂ）、（ｃ））を備えた乱数取得ドライバの構成、特に乱数バッファ６０２１ａを経由して乱数の入出力を行うバッファモードと、乱数バッファ６０２１ａを経由しないダイレクトモードを設け、乱数の枯渇、言い換えれば乱数の需要と供給に係る状況に応じて、バッファモードとダイレクトモードを切り替える構成（図１３（ａ）〜（ｃ））を実施することができ、上述と同様の作用効果を期待できる。さらに、乱数の生成異常を検出し、乱数の生成異常の発生に応じて行う回復処理を備えた乱数生成プログラムＰ３１の構成（図１４）を実施することができ、上述と同様の作用効果を期待できる。
【０２０５】
なお、上述した実施の形態に記載した発明は、どのように組み合わされても良く、パチンコ機１００の実施形態に記載された乱数生成処理の内容については、当然にスロットマシン１に対しても適用することができる。また、上述した実施形態では、リプレイ確率が変動するＲＴ状態とＡＴ状態とを組み合わせた、いわゆるＡＲＴ機について説明をしたが、リプレイについては入賞補助演出を行わないＡＴ機や、ＡＴを搭載せずにボーナスを中心に出玉を増やすノーマル機に対しても本発明は適用することができる。
【符号の説明】
【０２０６】
１００：遊技機（パチンコ機）、６０２１ａ：記憶手段（乱数バッファ）、Ｐ１：抽選手段（演出プログラム：演出制御手段）、Ｐ３：乱数生成手段（乱数生成プログラム）、Ｐ４：タスク管理手段（タスク管理プログラム）、Ｐ５：乱数取得ドライバ
【図１】
2018191915.tif 000003
【図２】
2018191915.tif 000004
【図３】
2018191915.tif 000005
【図４】
2018191915.tif 000006
【図５】
2018191915.tif 000007
【図６】
2018191915.tif 000008
【図７】
2018191915.tif 000009
【図８】
2018191915.tif 000010
【図９】
2018191915.tif 000011
【図１０】
2018191915.tif 000012
【図１１】
2018191915.tif 000013
【図１２】
2018191915.tif 000014
【図１３】
2018191915.tif 000015
【図１４】
2018191915.tif 000016
【図１５】
2018191915.tif 000017
【図１６】
2018191915.tif 000018
【図１７】
2018191915.tif 000019