(57)【特許請求の範囲】
【請求項１】
遊技機に用いる遊技機制御用チップであって、
該遊技機制御用チップは、
ＣＰＵと、
記憶手段と、
Ｍ系列方式又はカウンタ方式の乱数を発生する乱数発生回路と、
該乱数発生回路から出力された乱数に対してビットスクランブルをかけるビットスクランブル回路と、
該ビットスクランブル回路の出力を予め格納された乱数最大値と比較する乱数最大値比較回路と、
該乱数最大値比較回路の比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持回路と、
該乱数値保持回路に保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んだ乱数が格納される乱数読出回路と、
前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択回路と、
前記乱数発生回路から独立した補助乱数発生手段と
を有し、前記乱数発生回路の乱数初期値は、前記乱数初期値選択回路により書き換えられ、該乱数初期値は、乱数発生回路の発生する乱数が一巡する毎に前記補助乱数発生手段の発生する補助乱数値を初期値とし、前記乱数読出回路に格納された乱数に基づき遊技プログラムを実行することを特徴とする遊技機制御用チップ。
【請求項２】
請求項１に記載した遊技機制御用チップであって、
前記乱数初期値選択回路が乱数初期値として選択する選択肢として、前記記憶手段に格納された乱数初期値選択定数、前記乱数発生装置固有の固定値、前記乱数発生装置がもつ所定値、前記遊技機制御用チップのＩＤ番号、前記記憶手段のＲＡＭ値又はＲＡＭ演算値を含むことを特徴とする遊技機制御用チップ。
【請求項３】
請求項１に記載した遊技機制御用チップであって、
所定のいくつかのトリガ条件の中から前記乱数発生回路の更新制御のトリガ条件を選択する乱数更新トリガ選択回路と更にこれらトリガ条件の更新の開始や継続や終了を制御する更新制御回路を更に有する遊技機制御用チップ。
【請求項４】
請求項１に記載した遊技機制御用チップであって、
前記ビットスクランブル回路は、あらかじめ用意されたビットスクランブルテーブルにしたがってビットを入れ換える処理をすることを特徴とする遊技機制御用チップ。
【請求項５】
請求項４に記載した遊技機制御用チップであって、
前記ビットスクランブル回路におけるスクランブル処理は、ビットスクランブル回路を複数用意し、複数段階のビット入れ換えを実行することを特徴とする遊技機制御用チップ。
【請求項６】
請求項４に記載した遊技機制御用チップであって、
前記複数のビットスクランブルテーブルは、乱数発生回路からの乱数一巡終了信号及びビットスクランブル要求回路からのビットスクランブル要求及び補助乱数発生手段からの乱数を基に不規則に任意のビット入れ換えを実行することを特徴とする遊技機制御用チップ。
【請求項７】
請求項１に記載した遊技機制御用チップであって、
前記乱数値読出回路に格納された乱数を読み出す為の乱数値要求回路を更に有し、
該乱数値要求回路の要求するタイミングは、複数のトリガ条件から選択可能としたことを特徴とする遊技機制御用チップ。
【請求項８】
ＣＰＵと、記憶手段と、Ｍ系列方式又はカウンタ方式の乱数を発生する乱数発生回路と、該乱数発生回路から出力された乱数に対してビットスクランブルをかけるビットスクランブル回路と、該ビットスクランブル回路の出力を予め格納された乱数最大値と比較する乱数最大値比較回路と、該乱数最大値比較回路の比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持回路と、該乱数値保持回路に保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んだ乱数が格納される乱数読出回路と、前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択回路と、前記乱数発生回路から独立した補助乱数発生手段とを有し、前記乱数発生回路の乱数初期値は、前記乱数初期値選択回路により書き換えられ、該乱数初期値は、乱数発生回路の発生する乱数が一巡する毎に前記補助乱数発生手段の発生する補助乱数値を初期値とし、前記乱数読出回路に格納された乱数に基づき遊技プログラムを実行する遊技機制御用チップを用いた遊技機制御方法であって、
前記乱数初期値選択回路により、前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択ステップと、
該乱数初期値選択ステップにて選択された乱数初期値を初期値とし、前記乱数発生回路の発生する乱数が一巡する毎に、前記補助乱数発生手段の発生する補助乱数値を初期値としてＭ系列方式又はカウンタ方式の乱数を発生する乱数発生ステップと、
該乱数発生ステップにて発生された乱数に対してビットスクランブルをかけるビットスクランブルステップと、
該ビットスクランブルステップの出力を予め格納された乱数最大値と比較する乱数最大値比較ステップと、
該乱数最大値比較ステップによる比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持ステップと、
該乱数値保持ステップにて保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んで格納する乱数読出ステップと、
該乱数読出ステップにて格納された乱数に基づき遊技プログラムを実行する遊技実行ステップと
を有する遊技機制御方法。
【請求項９】
請求項８に記載した遊技機制御方法であって、
前記乱数初期値選択ステップが乱数初期値として選択する選択肢として、ＲＯＭ内に格納された乱数初期値選択定数、前記乱数発生装置固有の固定値、前記乱数発生装置のもつ所定値、前記遊技機制御用チップのＩＤ番号、ＲＡＭ値又はＲＡＭ演算値を含むことを特徴とする遊技機制御方法。
【請求項１０】
請求項８に記載した遊技機制御方法であって、
所定のいくつかのトリガ条件の中から前記乱数発生ステップの更新制御のトリガ条件を選択する乱数更新トリガ選択ステップと、
更にこれらトリガ条件の更新の開始や継続や終了を制御する更新制御ステップ
を更に有する遊技機制御方法。
【請求項１１】
請求項８に記載した遊技機制御方法であって、
前記ビットスクランブルステップは、あらかじめ用意されたビットスクランブルテーブルにしたがってビットを入れ換える処理をすることを特徴とする遊技機制御方法。
【請求項１２】
請求項１１に記載した遊技機制御方法であって、
前記ビットスクランブルステップにおけるスクランブル処理は、ビットスクランブルテーブルを複数用意し、複数段階のビット入れ換えを実行することを特徴とする遊技機制御方法。
【請求項１３】
請求項１１に記載した遊技機制御方法であって、
前記複数のビットスクランブルテーブルは、前記乱数発生ステップからの乱数一巡終了信号及びビットスクランブル要求及び前記補助乱数発生手段からの乱数を基に不規則に任意のビット入れ換えを実行することを特徴とする遊技機制御方法。
【請求項１４】
請求項８に記載した遊技機制御方法であって、
前記乱数値読出ステップにて格納された乱数を読み出す為の乱数値要求ステップを更に有し、
該乱数値要求ステップの要求するタイミングは、複数のトリガ条件から選択可能としたことを特徴とする遊技機制御方法。
【請求項１５】
請求項１に記載した遊技機制御用チップであって、
クロック生成手段と暴走監視手段とをさらに有し、
該暴走監視手段は、前記クロック生成手段からの信号に基づき、タイムアウト時間をカウントし、タイムアウト時間が経過すると、タイムアウト信号を発生させて、このタイムアウト信号を前記ＣＰＵが受け付けることによりリセットを発生し、プログラムのリセットアドレスからプログラムを再実行することを特徴とする遊技機制御用チップ。
【請求項１６】
請求項１５に記載した遊技機制御用チップであって、
前記タイムアウト時間を変更可能としたことを特徴とする遊技機制御用チップ。
【請求項１７】
請求項１に記載した遊技機制御用チップであって、
不正実行禁止手段をさらに設けて、不正アドレスからのオペコードフェッチの禁止をすることを特徴とする遊技機制御用チップ。
【請求項１８】
請求項１に記載した遊技機制御用チップであって、
個々のチップ固有のＩＤ番号を有することを特徴とする遊技機制御用チップ。
【請求項１９】
請求項１に記載した遊技機制御用チップであって、
パラレル入出力ポートと外部チップセレクト信号とを兼用させたことを特徴とする遊技機制御用チップ。
【請求項２０】
請求項１に記載した遊技機制御用チップであって、
セキュリティチェックを実行して、認証結果によりＣＰＵを停止させるセキュリティ手段をさらに設けたことを特徴とする遊技機制御用チップ。
【請求項２１】
請求項１に記載した遊技機制御用チップであって、
前記乱数をデータバス上に乗せるか否かの設定を可能とすることを特徴とする遊技機制御用チップ。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、パチンコ遊技機や回胴式遊技機等に使用される遊技機制御用チップ及び遊技機制御方法に関する。
【０００２】
【従来の技術】
＜一般的内容＞  遊技機メーカーは遊技機の暴走対策として遊技機を制御する中央処理装置（以下、本明細書において「ＣＰＵ」と略す。）に対し、例えば２ｍｓ毎の一定周期でリセットを入力し、遊技プログラムの先頭番地から実行するインターバルリセット割り込みの処理を行っている。すなわち、仮にノイズ等の原因によるＣＰＵ暴走が発生したとしても、上記周期でＣＰＵに対しリセットが入力され、遊技プログラムの先頭番地に戻る為暴走による被害を最小限に抑えることができる。
＜プラス１方式＞  遊技機に使用される乱数発生方式として、リセット割込処理毎に乱数値に「１」を加算し、所定の乱数範囲の最大値に達した場合「０」に戻す、いわゆる「プラス１方式」による方式がある。
＜初期値更新型によるプラス１方式＞  また、乱数周期が一巡毎に初期値を毎回変更し同様に乱数値に「１」を加算する「初期値更新型によるプラス１方式」による方式がある。
＜ソフトウェアによる乱数発生＞  更に、上記いずれの方式においてもソフトウェアによって乱数を発生していた。
【０００３】
【発明が解決しようとする課題】
＜プラス１方式の課題＞  「プラス１方式」による乱数発生は乱数値の出現周期に規則性が生じる為不正者（ゴト行為等）が大当たり乱数値の発生周期に合わせて狙い打ちして大当り判定値を取得する「体感器」や、大当たり発生周期に合わせて入賞センサーに対し疑入賞信号を発生する等、いわゆる「ぶら下がり基板」によって大当たりを誘発させ、不当に過剰な利益を獲得するという問題点があった。
＜初期値更新型によるプラス１方式の課題＞  また、「初期値更新型によるプラス１方式」は初期値が変更されることによって特定乱数値の出現する周期は「プラス１方式」より不規則となり「体感器」による狙い打ち等は困難となるが、ソフトウェアによる乱数発生では、乱数の更新毎にシステムバス上にそのデータが出力される為外部でその出現のデータ解析を行えば乱数系列の特定や初期値更新のタイミングの特定が可能であり、いずれにせよその周期に合わせて大当たりを狙い打ちすることが可能となってしまう。
＜ソフトウェアによる乱数発生の課題＞  また、ソフトウェアを作成する者や、漏洩によってその内容を知る不正者は乱数初期値更新のタイミングさえ判別できれば特定乱数値の出現周期の確定は容易である。
本発明は、かかる従来技術の課題に鑑みなされたものである。すなわち、本発明の目的は、不正アクセスをしづらい遊技機制御用チップ及び遊技機制御方法を提供することにある。また、乱数発生装置を遊技機制御用チップに内蔵することで、乱数をデータバス上に乗せるか否かの設定を可能にし、不正者が容易に乱数系列や周期を予測できないようにすることにある。
【０００４】
【課題を解決するための手段】
かかる課題を解決すべく、本発明に係る遊技機制御用チップは、遊技機に用いる遊技機制御用チップであって、該遊技機制御用チップは、ＣＰＵと、記憶手段と、Ｍ系列方式又はカウンタ方式の乱数を発生する乱数発生回路と、該乱数発生回路から出力された乱数に対してビットスクランブルをかけるビットスクランブル回路と、該ビットスクランブル回路の出力を予め格納された乱数最大値と比較する乱数最大値比較回路と、該乱数最大値比較回路の比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持回路と、該乱数値保持回路に保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んだ乱数が格納される乱数読出回路と、前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択回路と、前記乱数発生回路から独立した補助乱数発生手段とを有し、前記乱数発生回路の乱数初期値は、前記乱数初期値選択回路により書き換えられ、該乱数初期値は、乱数発生回路の発生する乱数が一巡する毎に前記補助乱数発生手段の発生する補助乱数値を初期値とし、前記乱数読出回路に格納された乱数に基づき遊技プログラムを実行することを特徴とするものである。
【０００５】
請求項２の発明は、請求項１に記載した遊技機制御用チップであって、前記乱数初期値選択回路が乱数初期値として選択する選択肢として、前記記憶手段に格納された乱数初期値選択定数、前記乱数発生装置固有の固定値、前記乱数発生装置がもつ所定値、前記遊技機制御用チップのＩＤ番号、前記記憶手段のＲＡＭ値又はＲＡＭ演算値を含むものである。
【０００６】
請求項３の発明は、請求項１に記載した遊技機制御用チップであって、
所定のいくつかのトリガ条件の中から前記乱数発生回路の更新制御のトリガ条件を選択する乱数更新トリガ選択回路と更にこれらトリガ条件の更新の開始や継続や終了を制御する更新制御回路を更に有するものである。
【０００７】
請求項４の発明は、請求項１に記載した遊技機制御用チップであって、前記ビットスクランブル回路は、あらかじめ用意されたビットスクランブルテーブルにしたがってビットを入れ換える処理をするものである。
【０００８】
請求項５の発明は、請求項４に記載した遊技機制御用チップであって、前記ビットスクランブル回路におけるスクランブル処理は、ビットスクランブル回路を複数用意し、複数段階のビット入れ換えを実行するものである。
【０００９】
請求項６の発明は、請求項４に記載した遊技機制御用チップであって、前記複数のビットスクランブルテーブルは、乱数発生回路からの乱数一巡終了信号及びビットスクランブル要求回路からのビットスクランブル要求及び補助乱数発生手段からの乱数を基に不規則に任意のビット入れ換えを実行するものである。
【００１０】
請求項７の発明は、請求項１に記載した遊技機制御用チップであって、前記乱数値読出回路に格納された乱数を読み出す為の乱数値要求回路を更に有し、該乱数値要求回路の要求するタイミングは、複数のトリガ条件から選択可能としたものである。
【００１１】
請求項８の発明は、ＣＰＵと、記憶手段と、Ｍ系列方式又はカウンタ方式の乱数を発生する乱数発生回路と、該乱数発生回路から出力された乱数に対してビットスクランブルをかけるビットスクランブル回路と、該ビットスクランブル回路の出力を予め格納された乱数最大値と比較する乱数最大値比較回路と、該乱数最大値比較回路の比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持回路と、該乱数値保持回路に保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んだ乱数が格納される乱数読出回路と、前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択回路と、前記乱数発生回路から独立した補助乱数発生手段とを有し、前記乱数発生回路の乱数初期値は、前記乱数初期値選択回路により書き換えられ、該乱数初期値は、乱数発生回路の発生する乱数が一巡する毎に前記補助乱数発生手段の発生する補助乱数値を初期値とし、前記乱数読出回路に格納された乱数に基づき遊技プログラムを実行する遊技機制御用チップを用いた遊技機制御方法であって、前記乱数初期値選択回路により、前記記憶手段に記憶された所定のいくつかの値の中から乱数初期値を選択する乱数初期値選択ステップと、該乱数初期値選択ステップにて選択された乱数初期値を初期値とし、前記乱数発生回路の発生する乱数が一巡する毎に、前記補助乱数発生手段の発生する補助乱数値を初期値としてＭ系列方式又はカウンタ方式の乱数を発生する乱数発生ステップと、該乱数発生ステップにて発生された乱数に対してビットスクランブルをかけるビットスクランブルステップと、該ビットスクランブルステップの出力を予め格納された乱数最大値と比較する乱数最大値比較ステップと、該乱数最大値比較ステップによる比較処理の結果、最大値を超えた場合に再度乱数発生回路に要求を行い、最大値を超えない乱数値を得るまで乱数要求を繰り返し、最大値を超えない乱数である場合にそれを取得し保持する乱数値保持ステップと、該乱数値保持ステップにて保持された乱数を外部トリガ入力による要求やユーザが乱数の読み出し要求を行った際に取り込んで格納する乱数読出ステップと、該乱数読出ステップにて格納された乱数に基づき遊技プログラムを実行する遊技実行ステップとを有するものである。
【００１２】
請求項９の発明は、請求項８に記載した遊技機制御方法であって、前記乱数初期値選択ステップが乱数初期値として選択する選択肢として、ＲＯＭ内に格納された乱数初期値選択定数、前記乱数発生装置固有の固定値、前記乱数発生装置のもつ所定値、前記遊技機制御用チップのＩＤ番号、ＲＡＭ値又はＲＡＭ演算値を含むものである。
【００１３】
請求項１０の発明は、請求項８に記載した遊技機制御方法であって、所定のいくつかのトリガ条件の中から前記乱数発生ステップの更新制御のトリガ条件を選択する乱数更新トリガ選択ステップと、更にこれらトリガ条件の更新の開始や継続や終了を制御する更新制御ステップを更に有するものである。
【００１４】
請求項１１の発明は、請求項８に記載した遊技機制御方法であって、前記ビットスクランブルステップは、あらかじめ用意されたビットスクランブルテーブルにしたがってビットを入れ換える処理をするものである。
【００１５】
請求項１２の発明は、請求項１１に記載した遊技機制御方法であって、前記ビットスクランブルステップにおけるスクランブル処理は、ビットスクランブルテーブルを複数用意し、複数段階のビット入れ換えを実行するものである。
【００１６】
請求項１３の発明は、請求項１１に記載した遊技機制御方法であって、前記複数のビットスクランブルテーブルは、前記乱数発生ステップからの乱数一巡終了信号及びビットスクランブル要求及び前記補助乱数発生手段からの乱数を基に不規則に任意のビット入れ換えを実行するものである。
【００１７】
請求項１４の発明は、請求項８に記載した遊技機制御方法であって、前記乱数値読出ステップにて格納された乱数を読み出す為の乱数値要求ステップを更に有し、該乱数値要求ステップの要求するタイミングは、複数のトリガ条件から選択可能としたものである。
【００１８】
請求項１５の発明は、請求項１に記載した遊技機制御用チップであって、クロック生成手段と暴走監視手段とをさらに有し、該暴走監視手段は、前記クロック生成手段からの信号に基づき、タイムアウト時間をカウントし、タイムアウト時間が経過すると、タイムアウト信号を発生させて、このタイムアウト信号を前記ＣＰＵが受け付けることによりリセットを発生し、プログラムのリセットアドレスからプログラムを再実行するものである。
【００１９】
請求項１６の発明は、請求項１５に記載した遊技機制御用チップであって、前記タイムアウト時間を変更可能としたものである。
【００２０】
請求項１７に記載した発明は、請求項１に記載した遊技機制御用チップであって、不正実行禁止手段をさらに設けて、不正アドレスからのオペコードフェッチの禁止をするものである。
【００２１】
請求項１８に記載した発明は、請求項１に記載した遊技機制御用チップであって、個々のチップ固有のＩＤ番号を有するものである。
【００２２】
請求項１９に記載した発明は、請求項１に記載した遊技機制御用チップであって、パラレル入出力ポートと外部チップセレクト信号とを兼用させたものである。
【００２３】
請求項２０に記載した発明は、請求項１に記載した遊技機制御用チップであって、セキュリティチェックを実行して、認証結果によりＣＰＵを停止させるセキュリティ手段をさらに設けたものである。
【００２４】
請求項２１に記載した発明は、請求項１に記載した遊技機制御用チップであって、前記乱数をデータバス上に乗せるか否かの設定を可能とするものである。
【００３８】
【発明の実施の形態】
以下に本発明を図示された実施形態に従って詳細に説明する。
【００３９】
＜チップの形態の概要説明＞  本発明に係る遊技機制御用チップは、遊技機内部の基板上に搭載される集積回路として構成される。チップ種別の分類として、開発用チップと量産用チップとがある。図８を参照しつつ、量産用チップと開発用チップとについて説明する。開発用チップは、セキュリティ判定機能を有しないチップであり、それ以外を除いては量産用チップと同等の機能を有する。量産用チップは、内蔵された記憶手段に記憶されているプログラムが、第三者機関による試験に合格した適正なものであるか否かを判定するセキュリティ判定機能を有する。
【００４０】
＜量産用チップの概要説明＞  量産用チップは、ユーザが消去、再書き込みが不可能なユーザ用ＲＯＭを具備しており、図８（ａ）に示すように、セキュリティチェックの結果が不整合の場合はＣＰＵを停止する。また、指定エリア外走行禁止機能により、設定されたアドレス範囲以外（指定エリア外を示すアドレス範囲である。）でのプログラム実行はできない。
【００４１】
＜開発用チップの概要説明＞  開発用チップは、ユーザが消去、再書き込みが可能なユーザ用ＲＯＭを具備しており、図８（ｂ）に示すように、セキュリティチェックの結果に関係無くユーザモードに移行する。また、指定エリア外走行禁止機能においても、設定可能なアドレス範囲（指定エリアを示すアドレス範囲である。）は制限が無いので、ユーザが自由に開発・デバッグが行えることを可能とする。ここで、ユーザとは、本発明に係る遊技機制御用チップを遊技機に組み込んで製造・販売を行う遊技機メーカーを指す。
【００４２】
＜動作モード＞  動作モードとはＣＰＵ動作の制御やメモリマッピング、チップに内蔵された各種レジスタへのアクセス権など基本動作を制御するモードであり、セキュリティモードとユーザモードとプログラムモードがある。
【００４３】
＜セキュリティモード＞  ブート用記憶手段が実行され、各機能の環境設定やセキュリティチェックが行われるモードである。セキュリティモード中は、ＣＰＵ動作時の内部バスが外部端子に出力されない。
【００４４】
＜セキュリティチェック＞  ユーザプログラムの認証を行う機能である。システムリセット入力時に、ユーザプログラムを基に計算された認証コードが正しいかどうか再計算を行い，結果がＮＧの場合はＣＰＵを停止する。認証コードは、ユーザ用記憶手段への書き込み時にユーザプログラムと共に書き込む。
【００４５】
＜ユーザモード＞  セキュリティチェックを通過した正規のユーザプログラムが実行されるモードである。セキュリティモード中のセキュリティチェックで"ＯＫ"にならないとこのモードには移行しない。ユーザモード中はＣＰＵ動作時の内部バスが外部端子に外部バスとして出力される。なお、ユーザモード中はブート用記憶手段にアクセスすることはできない。
【００４６】
＜プログラムモード＞  ＣＰＵは動作せず、直接ユーザ用ＲＯＭにリード／ライトを行うモードである。システムリセット後、ＰＲＧ端子の所定レベル（例えばハイレベル）により、このモードに移行する。なお、量産用チップへの書き込みは一度だけ可能であり、開発用チップは消去や再書き込みが可能なものである。
【００４７】
図９を参照しつつ、本発明の遊技機制御用チップに内蔵された各機能ブロックについて説明する。図９のｃ１は、ＣＰＵである。たとえば、ザイログ社のＺ８０、またはモトローラ社の６８ＨＣ１１、またはこれらの互換性のあるソフトウェアコンパチブルなＣＰＵなどを用いることができる。
【００４８】
＜タイマシステム＞  図９のｃ２は、タイマシステムである。タイマシステムは、ｎ個（例えば４個等）のｎビット（例えば８、１６ビット等）カウンタや各種制御レジスタを内蔵し、それぞれ独立したモードで動作が可能である。例えばモードとして大別してタイマモード、カウンタモード等があり、またこれらのモードを具体的に実現する機能として、（１）インターバルタイマ機能、（２）イベントカウント機能、（３）ワンショット出力機能、（４）ＰＷＭ機能（パルス幅変調機能）、（５）パルス幅測定機能、（６）時間差測定機能、等があり、リアルタイム割込みの発生や時間計測を行うことを可能とする。上記これらの機能は、タイマシステム内の各種制御レジスタの設定により制御することができる。また、上記機能を実現する為のゲート信号またはトリガ信号の入力用であるタイマ入力バス、タイマシステムで生成された各種タイマ出力信号を外部へ出力する為のタイマ出力バスを具備する。
【００４９】
図９のｃ３は、不正実行禁止手段である。不正実行禁止手段は、所定の指定エリア内で遊技機メーカーが作成したユーザプログラムが正しく実行されているかどうか監視し、指定エリア以外でユーザプログラムが実行されるとリセットが発生するものである。例えばメモリ空間全体を６４ｋバイトとした場合、指定エリア（ユーザプログラム実行可能なアドレス範囲）の設定において、その範囲の先頭アドレスをプログラムコードスタートアドレス（以下ＰＣＳ）として０番地、終了アドレスをプログラムコードエンドアドレス（以下ＰＣＥ）として１ＦＦＦ（１６進）番地とした場合、２０００（１６進）〜ＦＦＦＦ（１６進）番地の範囲に不正プログラムを格納して実行しようとしても実行することはできない。すなわち、不正実行禁止手段とは指定エリア外での命令実行を禁止する機能であり、あらかじめ指定したアドレス範囲（指定エリア）外で命令が実行（オペコードフェッチ）されると，ＩＡＴ（Ｉｌｌｅｇａｌ Ａｄｄｒｅｓｓ Ｔｒａｐ）信号を発生する機能である。このＩＡＴ信号によりリセットが発生する。この指定エリアの情報は、ユーザプログラムと共にユーザ用ＲＯＭに書き込む。
【００５０】
図９のｃ４は、暴走監視手段である。図１２を参照しつつ、暴走監視手段ｃ４の構成をさらに詳しく説明する。暴走監視手段ｃ４は、クロック選択手段ｃ４ａ、ｎビットカウンタｃ４ｂ、暴走監視制御手段ｃ４ｃ、動作モード制御手段ｃ４ｄ、制御ワード設定手段ｃ４ｅ、出力制御手段ｃ４ｆにより構成される。暴走監視手段ｃ４は、タイムアウト信号を発生させる。このタイムアウト信号によりリセットが発生する。また、動作モード制御手段ｃ４ｄ、制御ワード設定手段ｃ４ｅの各種設定により、（１）タイムアウト時間の設定・変更、（２）カウントクリア＆リスタート、（３）動作許可／禁止、等の設定を可能とする。
【００５１】
暴走監視手段ｃ４は、ユーザモードに移行する際に自動的に起動され、タイムアウト時間が経過すると、タイムアウト信号を発生させる。このタイムアウト信号を受け付けることによりユーザリセットを発生しユーザプログラムのリセットアドレス（例えば０番地等）からユーザプログラムを再実行させる。
【００５２】
＜クロック選択手段＞クロック選択手段ｃ４ａは、クロック生成手段ｃ９より送られてきたシステムクロックを含む各分周クロックＣＬＫＯ／ｍ０・・・ＣＬＫＯ／ｍｎの内１本を選択してｎビットカウンタへ送出するものである。
【００５３】
＜ｎビットカウンタ＞  ｎビットカウンタｃ４ｂは、クロック選択手段ｃ４ａより送出された分周クロックを基にタイムアウト時間のカウントを行う。
【００５４】
＜暴走監視制御手段＞  暴走監視制御手段ｃ４ｃは、タイムアウト時間の設定の為の制御、ｎビットカウンタへの動作禁止、クリア、リスタート等の制御を行う。
【００５５】
＜動作モード制御手段＞  動作モード制御手段ｃ４ｄは、タイムアウト時間設定用のカウントクロックの選択、動作許可／禁止の制御を行い、またタイムアウト時間を変更することができる。なお、一度タイムアウト時間を変更すると、システムリセットするまで変更できないようにしても良い。
【００５６】
＜制御ワード設定手段＞  制御ワード設定手段ｃ４ｅは、タイムアウト時間のクリア及びリスタート、動作禁止を設定する。例えば制御ワード設定手段ｃ４ｅに制御ワード（例えばＣＣ（１６進））を書き込むことにより暴走監視手段が動作禁止になる。この設定は、例えばシステムリセット後１回のみ可能にしても良い。５５（１６進）→ＡＡ（１６進）→３３（１６進）によりクリア＆リスタート（再度カウント開始）することで、タイムアウト時間を延長することができる。なお、制御ワードは３バイト連続して書き込む必要は無い。
【００５７】
＜暴走監視手段の動作説明＞  暴走監視手段ｃ４は、ユーザモードに移行することで自動起動される。タイムアウト時間は動作モード制御手段ｃ４ｄによって設定され、デフォルト値は最長タイムアウト時間に設定されている。設定はシステムリセット後１回のみ可能とし、再設定はシステムリセットを無くして行うことができない。タイムアウトに達すると、出力制御手段ｃ４ｆからタイムアウト信号を出力し、暴走監視手段ｃ４の動作はそのまま継続される。
【００５８】
次に、図９に示すリセット／割込制御手段ｃ５について、図１３〜図１６をあわせて参照しつつ説明する。図１３はリセット／割込制御手段の内部ブロック図を示し、図１４はシステムリセットのタイミングチャート例を示し、図１５はユーザリセットのタイミングチャート例を示し、（ａ）はＸＵＲＳＴ端子によるタイミングチャート例、（ｂ）はタイムアウト信号またはＩＡＴ信号発生によるタイミングチャート例であり、図１６は割込みのタイミングチャート例を示す。
【００５９】
＜リセット／割込制御手段＞  リセット／割込制御手段ｃ５は、各種リセットと、外部からの割込み要求や内蔵の周辺回路（タイマシステム）からの割込み要求を制御する。
【００６０】
＜システムリセット＞  ＸＳＲＳＴ端子に一定期間のローレベルを入力することにより発生するリセットである。ＣＰＵを含む内部のすべての回路が初期化され、ＰＲＧ端子の入力レベルに応じて、セキュリティモードまたはプログラムモードに移行する。セキュリティモードで異常がなければ、ユーザモードに移行してユーザプログラムのリセットアドレス（例えば０番地）からユーザプログラムを実行する。また、ＣＰＵと内部の各回路へ供給されるシステムリセット信号は、チップ外部の外部デバイスへのリセット信号としてＸＳＲＳＴＯ端子より外部へ出力される。
【００６１】
＜ユーザリセット＞  次に、ユーザリセットについて説明する。ユーザリセットの要因としては、ＸＵＲＳＴ端子によるユーザリセット要求、外部入出力手段ｃ１４のＳＣ端子異常によるユーザリセット要求、または端子チェック要求、不正実行禁止手段ｃ３のＩＡＴ発生によるリセット要求、暴走監視手段ｃ４のタイムアウトによるユーザリセット要求、セキュリティ手段ｃ１０のモード制御手段からのモードトリガによるユーザリセット要求がありえる。
【００６２】
＜ユーザリセットの動作＞  ユーザリセットが発生し、ユーザリセットを受け付けると、ＣＰＵ、タイマシステムｃ２、入出力手段ｃ７が初期化され、リセットアドレス（例えば０番地）よりユーザプログラムの実行を開始する。（ユーザリセットでは、セキュリティモードまたはプログラムモードに移行しない。）
【００６３】
＜ノンマスカブル割込み（ＮＭＩ）＞  次に、ノンマスカブル割込みについて説明する。ノンマスカブル割込み（ＮＭＩ）は、ＣＰＵの割込み禁止状態でも無条件に受け付けられる割込みであり、すべての割込み要求に対して最優先で処理される。ＸＮＭＩ端子によるノンマスカブル割込みは、ノイズフィルタｃ５ａを介してＣＰＵに入力される。図１６は、ノイズフィルタｃ５ａを通過する前と通過後との関係を示すタイミングチャート例としたものである。ＸＮＭＩ信号が一定期間（ここでは４クロックの立ち上がりエッジを検出する間）ローレベルであるとき、ノイズフィルタｃ５ａを通過した信号がＮＭＩ信号となりＣＰＵに入力される。
【００６４】
＜マスカブル割込み（ＩＮＴ）＞  マスカブル割込み（ＩＮＴ）は、ユーザプログラムにより割込み要求の受け付けを許可／禁止できる割込みであり、ＩＮＴ優先順位制御回路ｃ５ｄによる多重割込みの実行が可能である。
【００６５】
＜外部マスカブル割込み＞  外部マスカブル割込みは、ＸＩＮＴ端子に一定期間のロ−レベルを入力することにより発生し、ＸＩＮＴ端子によるマスカブル割込みは、ノイズフィルタｃ５ａを介してＣＰＵに入力される。図１６は、ノイズフィルタｃ５ａを通過する前と通過後との関係を示すタイミングチャート例としたものである。ＸＩＮＴ信号が一定期間（ここでは４クロックの立ち上がりエッジを検出する間）ローレベルであるとき、ノイズフィルタｃ５ａを通過した信号がＩＮＴ信号となりＣＰＵに入力される。
【００６６】
＜内部マスカブル割込み＞  内部マスカブル割込みは、タイマシステムからの割込み要求信号により発生する。
【００６７】
＜デコード手段＞  デコード手段ｃ６は、メモリマップドＩ／Ｏ方式、Ｉ／ＯマップドＩ／Ｏ方式によるデコードが可能であり、チップ内部の各機能ブロックのデコードや外部デバイス用のデコード用信号であるチップセレクト信号のデコードを行う。また、チップセレクト信号のアドレス範囲を設定することが可能である。チップセレクト信号を例にすると、図１０にメモリマップドＩ／Ｏ方式によるチップセレクト信号がＦＦ００（１６進）〜ＦＦ１９（１６進）にマッピングされ、図１１（ｂ）にＩ／ＯマップドＩ／Ｏ方式によるチップセレクト信号が００（１６進）〜１９（１６進）にマッピングされていることを示している。なお、チップセレクト信号は複数本あるので、便宜上本明細書ではこれらを総称して外部出力バスとしている。
【００６８】
＜入出力手段＞  入出力手段ｃ７は、入出力ポートと外部デバイス用のデコード用信号であるチップセレクト信号の兼用機能を制御するもので、（１）機能選択手段ｃ７ａと、（２）入出力制御手段ｃ７ｂとからなる。入出力制御手段ｃ７ａは、（ａ）パラレル入出力ポート（異なる任意のビット幅の入出力ポートを複数個内蔵しており、それぞれポートの入出力の設定が可能）と、（ｂ）外部デバイスデコードとの二つの機能を持つ。機能選択手段ｃ７ａによりいずれか１つの機能を選択して外部との入出力を行う。これにより外部端子が入出力ポートバス、または外部出力バスのいずれかの状態として機能する。
【００６９】
＜クロック生成手段＞  クロック生成手段ｃ９は、クロック入力端子（図２のＥＸ端子に該当）から入力されたクロックを任意の分周比（例えば２分周等）で分周し、ＣＰＵや内部の各回路に供給する回路である。また、生成されたクロックは、クロック出力端子（図２のＣＬＫＯ端子に該当）から外部へ出力する。また、補助乱数発生手段１９へのクロックソース源（ｓ３）として乱数発生装置ｃ８へ供給する。
【００７０】
＜セキュリティ手段＞  セキュリティ手段ｃ１０は、（１）認証チェック制御手段、（２）不正実行禁止制御手段、（３）モード制御手段、（４）機能制御手段、（５）記憶手段制御手段の５つの手段からなる。
【００７１】
＜認証チェック制御手段＞  認証チェック制御手段は、ユーザプログラム（ＵＰ）の認証を行う機能である。システムリセット入力時に、ユーザプログラムを基に計算された認証コードが正しいか否かの再計算を行い，結果がＮＧの場合はＣＰＵを停止する。認証コードは，記憶手段へ書き込み時にユーザプログラムと共に書き込む。
【００７２】
＜不正実行禁止制御手段＞  不正実行禁止制御手段は、指定エリア外での命令実行を禁止する機能であり、（ａ）指定エリア外での命令実行禁止、（ｂ）ＲＡＭ（外部／内部両方）上でのプログラム実行禁止、（ｃ）リセット制御、（ｄ）指定エリアでのプログラム実行監視の制御を行う。
【００７３】
＜モード制御手段＞  モード制御手段は、（ａ）プログラムモード、（ｂ）セキュリティモード、（ｃ）ユーザモードの三つのモードの制御を行う。
【００７４】
＜機能制御手段＞  機能制御手段は、（ａ）バス・信号線制御、（ｂ）ＣＰＵ停止制御、（ｃ）乱数故障診断機能制御、（ｄ）ユーザ用ＲＯＭの読み出し／書き込みの機能を制御する。
【００７５】
＜記憶手段制御手段＞  記憶手段制御手段は、（ａ）デバイス切り離しおよび（ｂ）メモリバンク切り換えを行う。
【００７６】
次に、図１０および図１１を参照しつつ、記憶手段ｃ１１について説明する。図１０は、チップ全体のメモリマップの具体例図を示し、図１１はユーザ用ＲＯＭ内のエリアの具体例図を示し、（ａ）はプログラム管理エリアの具体例図、（ｂ）はＩ／ＯマップドＩ／Ｏ方式による内蔵レジスタや外部出力バスのデコードエリアの具体例図を示したものである。
【００７７】
＜記憶手段＞  記憶手段ｃ１１は、ＩＤ格納手段ｃ１１ａ、ブート用記憶手段ｃ１１ｂ、ユーザ用記憶手段ｃ１１ｃで構成される。
【００７８】
＜ＩＤ格納手段＞  ＩＤ格納手段ｃ１１ａには、（ａ）試験年月日時刻、（ｂ）製造年月日時刻、（ｃ）製造場所、（ｄ）製造工場、（ｅ）製造ライン、（ｆ）製造ロット、（ｇ）製造番号、（ｈ）ユーザ管理番号、（ｉ）シリアル番号、等の情報データのうちのいくつかをｎ種類の異なるＩＤ番号として格納することができ、このＩＤ番号が付与されることで量産（例えば１０００万個等）や流通等の管理が可能になる。また、ＩＤ番号とは別に第三者やユーザが知りえないチップ製造者・販売者のみがチップを特定できる情報である秘密情報を格納している。秘密情報の具体例としては、資材管理上の詳細な情報（ウェハー管理番号等）や協力工場に関するコード番号などがあり得る。
【００７９】
＜ブート用記憶手段＞  ブート用記憶手段ｃ１１ｂは、（ａ）ブート用ＲＯＭと（ｂ）ブート用ＲＡＭとにより構成され、（ａ）ブート用ＲＯＭには、（イ）セキュリティチェックプログラム、（ロ）故障診断プログラム、（ハ）環境設定プログラム、（ニ）照合プログラム、などが格納される。また、（ｂ）ブート用ＲＡＭは、ブートプログラムのワークエリア（データエリア，スタックエリア等）として使用する。
【００８０】
＜ユーザ用記憶手段＞  ユーザ用記憶手段ｃ１１ｃは、（ａ）ユーザ用ＲＯＭおよび（ｂ）ユーザ用ＲＡＭにより構成される。
【００８１】
＜ユーザ用ＲＯＭ＞  ユーザ用ＲＯＭは、ユーザが作成したプログラム（ユーザプログラム）を格納する。ユーザ用ＲＯＭには予め定めた指定エリアがあり、（イ）プログラムコード／データエリアおよび（ロ）プログラム管理エリアの２つのエリアが割り付けられている。（イ）プログラムコード／データエリアは、ユーザプログラムを格納するエリアである。（ロ）プログラム管理エリアは、ＣＰＵがユーザプログラムを実行するのに必要な情報を格納するエリアであり、ユーザ側で値の設定を行う。ユーザ用ＲＡＭのサイズの選択（例えば２５６／５１２バイト）もこのエリアで行う。
【００８２】
＜プログラム管理エリアに設定するデータ＞  プログラム管理エリアに設定するデータには、図１１に示すように（１）プログラム管理エリアのスタートを示すコード列を設定する「ヘッダ（ＨＤＲ）」（例として１Ｆ８０（１６進）〜１Ｆ８７（１６進）にマッピング）、（２）メーカーコードを設定する「メーカーコード（ＭＣＤ）」（例として１Ｆ８８（１６進）〜１Ｆ８Ａ（１６進）にマッピング）、（３）製品コードを設定する「製品コード（ＰＣＤ）」（例として１Ｆ８Ｂ（１６進）〜１Ｆ９２（１６進）にマッピング）、（４）ユーザプログラムのプログラムコードエリアの最終アドレスを設定する「プログラムコードエンドアドレス（ＰＣＥ）」（例として１Ｆ９３（１６進）〜１Ｆ９４（１６進）にマッピング）、（５）ユーザ用ＲＡＭのサイズを設定する「ＲＡＭサイズ選択（ＲＳＳ）」（例として１Ｆ９５（１６進）にマッピング）、（６）端子をパラレル入出力ポートまたは外部デバイスへのチップセレクトとして使用するかを設定する「端子機能選択」（例として１Ｆ９６（１６進）にマッピング）、（７）乱数初期値を設定する「乱数初期値選択」（例として１Ｆ９７（１６進）にマッピング）、（８）乱数初期値選択において指定のユーザ用ＲＡＭの値を選択した場合にそのアドレスを設定する「乱数初期値データアドレス」（例として１Ｆ９８（１６進）〜１Ｆ９９（１６進）にマッピング）、（９）外部装置（照合装置等）が読み出すユーザ用ＲＡＭアドレスを設定する「読み出しＲＡＭアドレス」（例として１ＦＡ０（１６進）〜１ＦＢＦ（１６進）にマッピング）などがある。
【００８３】
＜ユーザ用ＲＡＭ＞  ユーザ用ＲＡＭは、ユーザプログラムのワークエリア（データエリア，スタックエリア等）として使用する。ユーザの設定により、ＲＡＭサイズの変更（例えば５１２／２５６バイトの切り換え等）が可能である。ユーザ用ＲＡＭにはバックアップ機能があり、バックアップ機能を使用する場合は、ＶＢＢ端子とＧＮＤ端子間に別電源を供給することにより、チップの電源（Ｖ＋）切断後も、ＲＡＭ内のデータが保持（バックアップ）できる。
【００８４】
＜記憶監視手段＞  図９の記憶監視手段ｃ１２は、ＲＡＭ書込を監視する回路である。記憶監視手段ｃ１２は、記憶手段の内容や書き込みを監視する。セキュリティモード時に所定の記憶手段のアドレス範囲が監視範囲として設定される。
【００８５】
＜バス／信号線制御手段＞  バス／信号線制御手段ｃ１３は、チップの外部バスと内部バスとのインターフェース機能及びアドレスバス、データバス，および各制御信号の方向制御や駆動能力を強化するバスインタフェースである。また、それぞれの各端子は内部でプルアップ／プルダウン処理されている。
【００８６】
＜各端子の説明＞  アドレスバスは、メモリやＩ／Ｏデバイスとのデータ送受信のためのアドレスを指定する。データバスは、データ送受信を行う。ＸＭ１は、マシンサイクルを示す。ＸＭＲＥＱは、メモリ空間へのリクエスト信号でありメモリのアクセス期間であることを示す。ＸＩＯＲＱは、Ｉ／Ｏ空間へのリクエスト信号でありＩ／Ｏ空間のアクセス期間であることを示す。ＸＲＤは、リードサイクルであることを示す。ＸＷＲは、ライトサイクルであることを示す。ＸＲＦＳＨは、チップ外部のダイナミックメモリ等へのリフレッシュ信号である。ＸＨＡＬＴは、ＣＰＵがＨＡＬＴ命令を実行している状態を示す信号で、ホールト状態中は命令を実行しない状態を保持し、このホールト状態の解除はリセット信号または割込みにより行われ、ＣＰＵの動作を再開する。
【００８７】
＜外部入出力手段＞  図９に示す外部入出力手段ｃ１４は、外部装置（照合装置等）と本チップとを接続し、本チップの真贋を検査する為のものである。本チップは、ＳＣ端子及びＢＲＣ端子を監視しており、ＢＲＣ端子へクロック等の信号が供給されている場合外部装置との認証待ち状態となり、ＳＣ端子から所定の信号を受け取ると、その受け取った信号に対する認証制御を行う。また、乱数発生装置ｃ８から出力される乱数の検査処理も行う。
【００８８】
＜乱数生成装置＞  図９の乱数発生装置ｃ８について図１から図７までを参照しつつ説明する。
【００８９】
図１を参照しつつ、乱数発生装置ｃ８について説明する。図１は、乱数発生の回路構成を示すブロック図である。更新周期設定データ保持回路１は、ユーザが任意のインターバル周期で乱数更新を行う為のインターバル周期を指定する為の設定データを保持する回路であり、基準となるインターバル周期を指定する為の基準インターバル周期指定回路１ａと、その基準となるインターバル周期を基に実際の乱数更新を行う為のインターバル周期を指定する為の設定を行う定周期設定値格納回路１ｂで構成されている。当該回路１で指定されたデータは、更新周期設定回路２へロードされる。
【００９０】
更新周期設定回路２は、定周期で乱数更新を行う為のインターバル周期を設定する回路であり、基準インターバル周期指定回路１ａで指定されたデータに対応した基準となるインターバル周期を生成する為の基準インターバル周期生成回路２ａと、当該回路２ａから供給された基準インターバル周期クロックを基に定周期設定値格納回路１ｂで指定されたカウントデータ数を基に基準インターバル周期をカウントする為の基準インターバル周期カウント回路２ｂと、定周期設定値格納回路１ｂで指定されたカウントデータ数に達した場合にインターバル周期の更新・継続を指定する為のリロードタイミングを生成するリロードタイミング生成回路２ｃで構成される。したがって、更新周期設定回路２で設定されたインターバル周期が乱数更新トリガ選択回路６へ供給される。
【００９１】
例えばシステムクロックの分周波が基準となるインターバル周期（仮にＩとする）だとすると、基準インターバル周期指定回路１ａで指定したデータ（例えば１２８分周を指定するデータ）に基づき分周したクロックが基準インターバル周期となる。また、定周期設定値格納回路１ｂの指定できる設定範囲が仮に８ビットだとすると、実際の定周期で乱数更新を行う為の設定できるインターバル周期は、「１２８×システムクロック×１から１２８×システムクロック×２５６迄」のインターバル周期を設定することができる。また、定周期設定値格納回路１ｂで指定した設定値が仮に「５」だとすると、この設定値が同様にリロードタイミング生成回路２ｃにロードされ、当該回路にて「１２８×システムクロック×５」に達した場合再度インターバル周期の更新・継続を行う為のリロードタイミングを基準インターバル周期カウント回路２ｂへ供給することになる。
【００９２】
ソフトウェア更新トリガ発生回路３は、ＣＰＵからの命令により所定の条件を組み合わせたデータ（アドレス、所定のデータをデコードして発生したデータ等）を当該回路へライトアクセスを行うことによってソフトウェアトリガ信号を発生する。
【００９３】
動作開始指示回路４は、乱数更新の動作の停止、再始動、継続動作等の指定を行うものである。
【００９４】
乱数更新トリガ選択情報保持回路５は、乱数値の更新において、更新周期設定回路２で発生された定周期で乱数更新を行う為のインターバル周期を使用する自動更新方式か、あるいはソフトウェア更新トリガ発生回路３で発生されたソフトウェアによるトリガ信号を使用する手動更新方式を使用するかのいずれかの方式の選択を行うものである。
【００９５】
乱数更新トリガ選択回路６は、更新周期設定回路２で発生されたインターバル周期クロック、またはソフトウェア更新トリガ発生回路３で生成されたソフトウェアによるトリガ信号のいずれかの内一つを選択して更新制御回路７へ供給する。
【００９６】
更新制御回路７は、乱数更新の動作の停止、再始動、継続動作等の制御を行う。
【００９７】
乱数発生回路８は、所定の設定によりそれぞれ異なる乱数系列の発生を行う為のｎ次の生成多項式、又はｎビットカウンタが複数内蔵されている。
【００９８】
ビットスクランブル設定回路９は、乱数発生回路８から出力される乱数データのビットの入れ換えや転置を行うものであり、ビットスクランブル要求回路９ａ、ビットスクランブルキー生成回路９ｂ、ビットスクランブル回路９ｃで構成される。ビットスクランブル要求回路９ａは、乱数更新トリガ選択回路６により選択された更新手段により更新されたタイミングにより乱数発生回路８から出力される乱数データに対しスクランブルをかける要求を指定する回路である。ビットスクランブルキー生成回路９ｂは、補助乱数発生手段１９から発生されるビットスクランブル用キー生成の為の補助乱数やビットスクランブル要求回路９ａからのデータ値を基に乱数データの配置・転置を行う為のビットスクランブルテーブルの選択を行う回路である。ビットスクランブル回路９ｃは、ビットスクランブルキー生成回路９ｂから指定されたキーデータにより選択されたビットスクランブルテーブルを基に乱数データのビットの配置・転置を行う回路である。なお、スクランブルをかけるか否かの選択はビットスクランブル要求回路９ａによりユーザが自由に設定できるが、ビットスクランブル用キーの変更は、乱数発生回路８より出力される乱数一巡終了信号Ｓ１により行われる。ビットスクランブル要求回路９ａより出力されるビットスクランブル要求信号Ｓ２があっても乱数一巡終了信号Ｓ１が無いと、ビットスクランブル用キーの変更は行われない。このことにより乱数一巡毎の確率が一定となる。
【００９９】
乱数最大値格納回路１０は、ユーザが任意に設定した乱数周期の最大値を格納する為の回路である。例えば乱数発生範囲が１から４０９５まであるとした場合、ユーザにとって１から３６までの乱数のみ必要な場合、当該回路１０に最大値として３６を設定すれば１から３６までの乱数を得ることが可能である。
【０１００】
乱数最大値比較回路１１は、ユーザが任意に設定した乱数周期の最大値と乱数発生回路８が発生した乱数値をビットスクランブル回路９ｃがビットスクランブルを行った出力値を比較し、出力値が最大値より大きい場合には乱数発生回路８に対し次の乱数発生を指示する。最大値以下の場合には乱数値保持回路１２へ格納する。
【０１０１】
乱数値保持回路１２は、ユーザが任意に設定した乱数周期の最大値以下の場合の時のスクランブルされた乱数データを保持するものである。すなわち最大周期に達するまでの乱数データを保持する回路である。
【０１０２】
乱数値要求回路１３は、ユーザが乱数データを読み出す為の要求を行うものであり、外部トリガ入力による要求やその要求があった場合の情報を割込信号として外部へ出力することも可能である。
【０１０３】
乱数値読出回路１４は、ユーザが乱数データを読み出す為の回路である。
【０１０４】
ＲＯＭ内プログラム管理エリア１５は、本発明の乱数発生装置の動作指定、制御等を行う為にユーザが設定する動作環境設定の指定を行うエリアであり、乱数系列を発生する為の最初のスタート値である乱数初期値選択定数１５ａと、ある所定のＲＡＭアドレスに格納されたデータを発生する乱数系列の初期値として使用したい場合、そのデータを乱数初期値選択回路１７へ送出することを目的とするＲＡＭアドレス指定１５ｂとで構成される。なお、初期化プログラムで乱数初期値をＲＡＭ値と選択した場合ＲＡＭアドレス指定で示されたアドレスのＲＡＭ値を乱数初期値選択回路１７へ格納する。
【０１０５】
ソフトウェア操作１６は、乱数の更新処理や所定の初期値をロードする為の制御を行う為の操作を指しており、本発明の乱数発生装置自身が持つ値である固定値１６ａ、本発明の乱数発生装置に割り付けられた自身を認識する為の固有の番号であるＩＤ番号１６ｂ、ＲＡＭアドレス指定１５ｂで指定された値であるＲＡＭ値１６ｃ、ＲＡＭ内の全アドレスのデータを基に加算・減算・乗算・除算等の演算処理した値であるＲＡＭ演算値１６ｄ、プログラムの制御用のデータエリアであるＲＡＭ１６ｅ、で構成される。
【０１０６】
なお、ＩＤ番号１６ｂは、前述したＩＤ格納手段ｃ１１ａに格納されたチップのＩＤ番号と同様のものである。前述したチップのＩＤがチップ自身を個別に識別するものであって、乱数発生装置のＩＤ番号は、乱数の初期値をチップ個別に設定するものである。したがって、両者の違いは仕様的な相違のみであり、実際の両者のＩＤ番号は、異なっても良いしまた同一であっても何等問題では無い。したがって、段落番号００７８で示した（ａ）〜（ｉ）の情報データのいくつかを乱数初期値用のＩＤ番号とすることが可能である。乱数初期値選択回路１７は、乱数初期値として固定値１６ａ、ＩＤ番号１６ｂ、ＲＡＭ値１６ｃ、ＲＡＭ演算値１６ｄのいずれかの内１つを選択して乱数発生回路８へ初期値をロードする。
【０１０７】
乱数初期値格納回路１８は、乱数初期値選択回路１７により選択された初期値又は補助乱数発生手段１９にて発生された乱数を初期値として格納する為の回路である。 乱数初期値は乱数発生回路８の発生する乱数値が一巡する毎に補助乱数発生手段１９より乱数初期値格納回路１８により更新できる。
【０１０８】
補助乱数発生手段１９は、本乱数発生装置とは別の手段にて乱数を発生させたものである。
【０１０９】
次に図２を参照しつつ乱数発生について説明する。図２は補助乱数発生手段１９の概要を示すブロック図であり、（１）は外部トリガ入力バスが無い場合（図９参照）、（２）は外部トリガ入力バスがある場合（図１７参照）について示している。発生手段として（ａ）ＣＰＵの命令制御による乱数発生、（ｂ）熱雑音による乱数発生、（ｃ）別クロックによる乱数発生、（ｄ）チップ外部からのトリガ入力による乱数発生の４つの場合を含む。
【０１１０】
（ａ）のＣＰＵの命令制御による乱数発生は、ＣＰＵが行った命令（命令実行数カウント回路２１にて保持される）の情報等をカウントしたデータを乱数とするものである。
【０１１１】
（ｂ）の熱雑音による乱数発生は、抵抗体やダイオード等から発生する熱雑音等のノイズ成分を乱数とするもので、これら熱雑音発生体を内蔵した熱雑音発生回路２２から発生するアナログのノイズ成分をＡ／Ｄ変換回路２３にてデジタルデータに変換したものを乱数とするものである。
【０１１２】
（ｃ）別クロックによる乱数発生は、本乱数発生装置で使用するクロックとは別のクロックで乱数を生成するものである。
【０１１３】
（ｄ）チップ外部からのトリガ入力による乱数発生は、ユーザが任意に設定したトリガ入力で乱数を生成するものである。
【０１１４】
これら上記（ａ）、（ｂ）、（ｃ）、（ｄ）の方法にて生成された乱数は乱数初期値としてビットスクランブルキー生成回路９ｂ、または乱数初期値格納回路１８へ供給されることとなる。供給の方法としては上記（ａ）、（ｂ）、（ｃ）、（ｄ）を適宜組み合わせたものとなる。
【０１１５】
上記（ｃ）において、カウンタ回路に２５に供給するクロックとして、（１）の外部トリガ入力バスが無い場合、各機能ブロックに供給するクロックとは異なる分周比率のクロックソース源（ｓ３）がクロック生成手段ｃ９より供給され、（２）の外部トリガ入力バスがある場合、ＥＸ端子とは別のクロックがＯＳＣ端子より供給される。供給するクロックとして所定のインターバル周期との同期を避ける為に、例えばＥＸ端子に供給される周波数（例えば１２ＭＨｚとする。）とは別の異なる周波数（例えば１１ＭＨｚとする。）を供給するようにしても良いことはいうまでもない。
【０１１６】
次に図３を参照しつつ乱数発生について説明する。図３は乱数発生装置のビットスクランブル設定回路９の具体的な説明図であり、ビットスクランブルテーブルとはビットの入れ換えのパターンを示すビットスクランブルテーブル（以下便宜上、「変換テーブル」、または「変換パターン」と略称する場合がある）であり、この変換テーブルにもとづいてビットの配置・転置位置が決定する。例えばデータ長を８ビットし元の配置が最下位ビットから順にＤ０−Ｄ１−Ｄ２−Ｄ３−Ｄ４−Ｄ５−Ｄ６−Ｄ７だとすると
（１）Ｄ０−Ｄ１−Ｄ２−Ｄ３−Ｄ４−Ｄ５−Ｄ６−Ｄ７
（２）Ｄ３−Ｄ０−Ｄ５−Ｄ１−Ｄ７−Ｄ２−Ｄ４−Ｄ６
（３）から（２５５）までの記載を省略。
（２５６）Ｄ７−Ｄ５−Ｄ２−Ｄ４−Ｄ１−Ｄ６−Ｄ０−Ｄ３
といった様に元の変換を行わないものを加味すると２５６通りの変換パターンが存在することになる。この様子を図式イメージ化したものが図３（ａ）である。
【０１１７】
しかし、上記変換パターンをソフトウェアでは無くハードウェアにて実現しようとすると回路規模が大きくなりゲート数の増大を招いてしまう。
【０１１８】
そこでその変換テーブルの数を減少させることによって回路規模を小さくしゲート数の増大を招くこと無く２５６通りの変換パターンを確保することが可能にするのが本発明のビットスクランブル設定回路９の特徴であり、その原理を図式イメージ化したものが図３（ｂ）である。以下にその原理の説明を行うが、便宜上同様にデータ長は８ビットとする。
【０１１９】
ビットスクランブルキー発生回路９ｂのＫＥＹ＿Ａ（４ビット）によって最初に１６通りの変換テーブルを発生する。すなわちこの最初の１６通りの変換パターンがそれぞれ個別に元のパターンとなる。（仮にＯ１〜Ｏ１６とする）
【０１２０】
次に上記１６通りの元のパターンに対しＫＥＹ＿Ｂ（２ビット）にてそれぞれ個別に更にパターンの変換を行う。すなわち
（Ｏ１×４通り）から（Ｏ１６×４通り）迄の加算値となるので合計実質上６４通りの変換パターンを実現したことになる。したがって、上記同様６４通りの変換パターンがそれぞれ個別に元のパターンとなる。（仮にＯＨ１〜ＯＨ４とする）
【０１２１】
次に上記同様に６４通りのパターンに対しＫＥＹ＿Ｃ（２ビット）にてそれぞれ個別に更にパターンの変換を行う。すなわち（ＯＨ１×４通り）から（ＯＨ４×４通り）迄の加算値となるので最終的に合計した結果、実質上の変換パターンは２５６通り実現したことになる。
【０１２２】
したがって本来２５６通りの変換テーブルが必要だったものが、上記の方法により２４通りの変換テーブルを用意するだけで、実質上２５６通りの変換パターンを実現させたことになり回路規模が小さくなる。
【０１２３】
また、上記方法の変換パターンのロジック回路はシフトレジスタを用いること無くゲート回路のみで設計できる為、次の変換パターンを交換する処理スピードは遊技機の動作するシステムクロックの１周期分も要しない。
【０１２４】
図４は更新周期設定データ保持回路１と更新周期設定回路２の内部構成を示すブロック図である。
【０１２５】
次に乱数発生装置の動作について図５に図示された概要フローに従い順に説明する。
【０１２６】
図５は乱数発生装置が所望の動作を行う為の環境設定の設定を行う初期化ルーチン処理を示すフローチャートである。遊技機全体を初期化するシステムリセットが入力されると最初に使用する乱数初期値として（１）乱数発生装置の固定値、（２）乱数発生装置のＩＤ番号、（３）ＲＡＭ値、（４）ＲＡＭ演算値の内何を使用するかの選定及びその他乱数発生装置の内部回路等の初期化処理の環境設定終了後、ユーザが使用できるユーザモードに遷移しユーザリセット待ちの状態となる。なお、ユーザリセットでは上記処理の初期化は行なわれない。
【０１２７】
次に図６の概要フローを参照しつつ説明する。図６は乱数発生装置が図５による初期化処理終了後ユーザが自由に乱数を読み出す為の動作設定処理を示すフローチャートである。ユーザが接続した各周辺装置の初期化及びユーザが作成した遊技制御プログラムの先頭番地に戻る為のユーザリセットが入力されると、インターバル動作の為の定周期が起動される。定周期による更新又は手動更新（ソフトウェアによる更新）の内いずれを使用するかの更新トリガ条件の設定が行われ、手動更新が設定された場合ソフトウェア更新トリガによる乱数更新を行うことになる。次に遊技機のスタートセンサ入力等の乱数読み込みタイミングかの判断が行われソフトウェアによる取込みトリガを使用する場合乱数値要求回路をアクセスすることで乱数値保持回路に保持された乱数値が取り込まれ乱数値読出回路へロードされる。後は読み出した乱数を基にユーザが抽選処理等のアプリケーション操作を行うことになる。
【０１２８】
次に図７の概要フローを参照しつつ説明する。図７は乱数発生装置の乱数更新及び乱数読出処理のフローチャートの一例を示したもので、（ａ）は自動更新（定周期）及び手動更新（ソフトウェア）による乱数更新処理、（ｂ）は外部トリガ及びソフトウェアによる取込みトリガによる乱数読出処理を示したフローである。
【０１２９】
乱数の更新が行われるとビットスクランブルキーデータの示すビットスクランブルテーブルにより乱数値のビットスクランブル処理を行い、乱数値が最大値以内の場合乱数値を乱数値保持回路へ格納し、最大値を超えた場合乱数値の再更新を行う。次に乱数の発生が一巡したか否かの判断が行われ、一巡した場合にビットスクランブルの変更要求は有るか否かの判断が行われ、要求があった場合ビットスクランブルキーデータの更新処理を行う。
【０１３０】
なお、乱数値の取込とは発生した乱数を乱数保持回路１２からユーザがアクセス可能な乱数値読出回路１４に対して送るか否かの処理のことを指す。定周期による乱数更新トリガを使用した場合乱数値の取込は自動的に行われる。この乱数値の取込処理を行うか否かの選定を行うことでユーザが（１）更新周期設定回路によって自動的に連続して発生された乱数値を使用するか（２）任意の時点で更新して読み出した乱数値を使用するかの遊技性の趣向を選定することができる。
【０１３１】
したがって、ユーザが実際に乱数の取得を行うには乱数値要求回路１３にアクセスすることでその時点の本乱数発生装置で発生されている乱数値を取得することができる。
【０１３２】
また、ユーザリセットの入力毎に上記動作指定条件の設定をユーザが自由に変更できるが、（１）最大値設定、（２）更新トリガ条件設定は１度設定を行うと変更することはできない。
【０１３３】
次に図１７、図１８を参照しつつ、実施形態２及び実施形態３について説明する。実施形態２は、本発明の実施形態を示す図９の構成とほぼ同じであるが、図９では、乱数発生装置ｃ８に対してクロック生成手段ｃ９から専用の信号（ｓ３）が入力されているのに対し、図１７の構成では、乱数発生装置ｃ８に対しチップ外部からトリガ信号を取り入れる為の入トリガ入力バスと、ＥＸ端子とは別に異なるクロックを供給する為のＯＳＣ端子を有しており、乱数更新トリガ、乱数要求トリガ、補助乱数要求トリガなどを外部から取り入れることを可能とするものである。
【０１３４】
実施形態３は、更に外部出力制御手段２０を設け、乱数値保持回路１２から出力される乱数データをソフトウェア操作によるスイッチにより外部入出力手段ｃ１４へ送出するものであり、図１８にその実施形態３を示す乱数発生の回路構成機能ブロック図を示している。ソフトウェア操作によるスイッチとは、ユーザではアクセスや操作ができないものであり、例えば所定のアルゴリズムによりコマンドや制御シーケンスを暗号化処理を施した信号が外部入出力手段ｃ１４へ入力され、その信号をＣＰＵが認識した際に起動するものである。このスイッチが起動されると、乱数値保持回路１２の乱数データがリアルタイムで入賞状態やチップの遊技状態に関わらず、外部入出力手段ｃ１４へ送出されることになる。すなわち、発生した全ての乱数データが出力されることになり、第三者機関での出現乱数の一様性の検査が可能となる。
【０１３５】
なお、乱数値は通常、乱数が必要なタイミングで適時に読み出されるため、乱数更新内容や乱数列は外部バス上には出力されない。しかし全ての乱数値をデータバス上に出力させて検査を行う必要が生じた場合は、ソフトウエア更新トリガ使用時に毎回、乱数値読出回路１４の乱数データをＣＰＵが読み出せば全ての乱数値がデータバスへ出力させることが可能となる。図１９にその入賞状態に関わらない乱数発生装置の乱数読出処理及び乱数出力処理のフローチャートを示している。
【０１３６】
また、乱数最大値比較回路１１から出力される乱数は、データバス上に直結されていない為、上記やソフトウェア乱数のように更新の度に乱数データがデータバス上に乗ることは無い。すなわち、ＣＰＵのリード命令やリードサイクルに関わらず、乱数発生装置内のバス上で自動的に更新制御が行われる。したがって、この乱数の更新タイミングと乱数列の並び（乱数列を生成する数式）は、不正者に予測することはできない。
【０１３７】
【発明の効果】
（１）乱数の初期値の更新において、ユーザ側で複数の乱数更新トリガ条件を選択可能にし、また遊技機制御用チップ毎のＩＤ番号を用いることにより乱数の発生の不規則性や遊技機メーカーの機種・台毎にそれぞれ異なる乱数系列を持つことが可能となる。
（２）Ｍ系列又はカウンタ方式の乱数を採用したので、一様性のある乱数を発生させることが可能である。
（３）乱数発生装置を遊技機制御用チップの内部にハードウェアで構成して内蔵したので、更新タイミングをシステムバス上へ出力しない制御をすることにより、乱数発生回路内部で処理されている乱数の更新タイミングが外部へ出力されない。したがって、不正を行う者にとって乱数値の出現する周期を予測することができなくなる。
（４）乱数最大値格納回路を設けたので、発生する乱数の最大周期をユーザで任意に設定可能となる。
（５）乱数更新トリガ選択回路及び更新制御回路を設けたので、乱数の更新タイミングをユーザで任意に設定可能となる。また、ユーザの任意の設定による乱数の更新タイミング以外のトリガをも採用したので、ユーザ設定のみに依存せずに乱数の発生が可能となる。
（６）ビットスクランブル回路を設けることにより、発生した乱数にスクランブルをかけることができる。また、ビットスクランブルキー生成回路を設け、複数のテーブルを用いたことにより、乱数の１周期（一巡）ごとにスクランブルの仕方についての設定を変更することが可能となる。
【図面の簡単な説明】
【図１】乱数発生の回路構成を示すブロック図である。
【図２】補助乱数発生手段１９の具体例を示すブロック図である。
【図３】 ビットスクランブルテーブルの構成を示す概念説明図である。
【図４】更新周期設定データ保持回路１と更新周期設定回路２の内部構成を示すブロック図である。
【図５】乱数発生装置が所望の動作を行う為の環境設定の設定を行う初期化ルーチン処理を示すフローチャートである。
【図６】乱数発生装置が図５による初期化処理終了後ユーザが自由に乱数を読み出す為の動作設定処理を示すフローチャートである。
【図７】乱数発生装置の乱数更新及び乱数読出処理のフローチャートを示したものである。
【図８】チップの動作モード遷移図である。
【図９】チップ全体の機能ブロック図である。
【図１０】チップ全体のメモリマップを示した具体例図である。
【図１１】ユーザ用ＲＯＭ内のエリアを示した具体例図である。
【図１２】暴走監視手段ブロック図である。
【図１３】リセット／割込制御手段ブロック図である。
【図１４】システムリセットタイミングチャート例である。
【図１５】ユーザリセットタイミングチャート例である。
【図１６】ＮＭＩ及びＩＮＴ割込みタイミングチャート例である。
【図１７】本発明の第２及び第３の実施形態を示す外部トリガ入力可能な場合のチップ全体の機能ブロック図である。
【図１８】本発明の第３の実施形態を示す乱数発生の回路構成機能ブロック図である。
【図１９】本発明の入賞状態に関わらない乱数発生装置の乱数読出処理及び乱数出力処理のフローチャートを示したものである。
【符号の説明】
１  更新周期設定データ保持回路
１ａ  基準インターバル周期指定回路
１ｂ  定周期設定値格納回路
２  更新周期設定回路
２ａ  基準インターバル周期生成回路
２ｂ  基準インターバル周期カウント回路
２ｃ  リロードタイミング生成回路
３  ソフトウェア更新トリガ発生回路
４  動作開始指示回路
５  乱数更新トリガ選択情報保持回路
６  乱数更新トリガ選択回路
７  更新制御回路
８  乱数発生回路
９  ビットスクランブル設定回路
９ａ  ビットスクランブル要求回路
９ｂ  ビットスクランブルキー生成回路
９ｃ  ビットスクランブル回路
１０  乱数最大値格納回路
１１  乱数最大値比較回路
１２  乱数値保持回路
１３  乱数値要求回路
１４  乱数値読出回路
１５  ＲＯＭ内プログラム管理エリア
１５ａ  乱数初期値選択定数
１５ｂ  ＲＡＭアドレス指定
１６  ソフトウェア操作
１６ａ  固定値
１６ｂ  ＩＤ番号
１６ｃ  ＲＡＭ値
１６ｄ  ＲＡＭ演算値
１６ｅ  ＲＡＭ
１７  乱数初期値選択回路
１８  乱数初期値格納回路
１９  補助乱数発生手段
２０  外部出力制御手段
２１  命令実行数カウント回路
２２  熱雑音発生回路
２３  Ａ／Ｄ変換回路
２５  カウンタ回路
２６  外部トリガ制御手段
Ｓ１  乱数一巡終了信号
Ｓ２  ビットスクランブル要求信号
Ｓ３  各機能ブロックに供給するクロックとは異なる分周比率のクロックソース源
Ｓ４  ユーザでアクセスできない乱数出力データ
ｃ１  ＣＰＵ
ｃ２  タイマシステム
ｃ３  不正実行禁止手段
ｃ４  暴走監視手段
ｃ４ａ  クロック選択手段
ｃ４ｂ  ｎビットカウンタ
ｃ４ｃ  暴走監視制御手段
ｃ４ｄ  動作モード制御手段
ｃ４ｅ  制御ワード設定手段
ｃ４ｆ  出力制御手段
ｃ５  リセット／割込制御手段
ｃ５ａ  ノイズフィルタ
ｃ５ｂ  ＯＲ（論理和）回路
ｃ５ｃ  延長回路
ｃ５ｄ  ＩＮＴ優先順位制御回路
ｃ６  デコード手段
ｃ７  入出力手段
ｃ８  乱数発生装置
ｃ９  クロック生成手段
ｃ１０  セキュリティ手段
ｃ１１  記憶手段
ｃ１２  記憶制御手段
ｃ１３  バス／信号線制御手段
ｃ１４  外部入出力手段
【図１】
0004242600.tif 000002
【図２】
0004242600.tif 000003
【図３】
0004242600.tif 000004
【図４】
0004242600.tif 000005
【図５】
0004242600.tif 000006
【図６】
0004242600.tif 000007
【図７】
0004242600.tif 000008
【図８】
0004242600.tif 000009
【図９】
0004242600.tif 000010
【図１０】
0004242600.tif 000011
【図１１】
0004242600.tif 000012
【図１２】
0004242600.tif 000013
【図１３】
0004242600.tif 000014
【図１４】
0004242600.tif 000015
【図１５】
0004242600.tif 000016
【図１６】
0004242600.tif 000017
【図１７】
0004242600.tif 000018
【図１８】
0004242600.tif 000019
【図１９】
0004242600.tif 000020