(57)【要約】【課題】  遊技機を制御するためのプログラムの容量削減を図る。【解決手段】  パチンコ機１の主制御基板において、ＣＰＵ１１１からＩＯにアクセスするためのイン／アウトコマンドが出力された時、エリア区分判定部１２０が、アドレス値に応じて、アクセス先をＩＯ、ＲＡＭ１１６のいずれかに切り換え、その結果に応じてＩＯ識別信号またはチップセレクタ信号ＭＣＳ０をアクティブにする。こうすることによって、イン／アウトコマンドを用いてＲＡＭ１１６にアクセス可能となる。  また、制御プログラムの開発用のコンピュータに、ＲＡＭ１１６へのアクセスがロード／ストアコマンドで記述されたソースを読み込み、アクセス先がイン／アウトコマンドでアクセス可能である場合には、イン／アウトコマンドに変換してオブジェクトコードを生成する開発支援機能を設ける。【選択図】  図２
2009165581.tif 000002
【特許請求の範囲】
【請求項１】
所定の遊技媒体を用いて遊技を行う遊技機において遊技の進行または演出を制御する制御装置が実行する制御プログラムの開発を、コンピュータによって支援する開発支援方法であって、
前記制御装置は、
前記制御を実行するためのＣＰＵと、
前記ＣＰＵが実行するプログラムを格納するためのメモリとしてのＲＯＭと、
前記制御に用いられる種々の情報を格納するためのメモリとしてのＲＡＭと、
前記制御において、前記制御装置の外部との信号を入出力するための入出力ポートとを有し、
前記ＣＰＵは、メモリへのアクセスに使用されるコマンドであって２バイト以上のアドレス値を含むコマンド体系を有するメモリアクセスコマンドと、外部との信号の入出力に使用されるコマンドであって入出力先を指定するためのアドレス値が前記メモリアクセスコマンドよりも１バイト以上少ないコマンド体系を有する入出力ポートアクセスコマンドとを使用可能であり、
更に、
前記入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先を前記ＲＡＭおよび入出力ポートに切り換え、前記ＲＡＭおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力するエリア区分判定部を備え、
前記入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号は、前記ＣＰＵから前記エリア区分判定部に入力されており、
前記開発支援方法は、前記コンピュータが実行する工程として、
（ａ）  前記制御装置のＣＰＵの機械語以外の所定の言語で記述された前記制御プログラムを読み込む工程と、
（ｂ）  擬似ＲＡＭ領域として、前記入出力ポートアクセスコマンドでアクセス可能な前記ＲＡＭのアドレス範囲を指定するエリア区分データを読み込む工程と、
（ｃ）  前記制御プログラムのうち前記ＲＡＭにアクセスする処理について、前記エリア区分データに基づいて該処理のアクセス先が前記擬似ＲＡＭ領域であると判断される場合には、前記入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する工程とを備える開発支援方法。
【請求項２】
請求項１記載の開発支援方法であって、
前記工程（ｃ）において、前記変換を行うとともに前記制御プログラムを機械語で表したオブジェクトコードを生成する開発支援方法。
【請求項３】
請求項１または２記載の開発支援方法であって、
前記エリア区分判定部は、前記アクセス先の切り換えの判断基準となるエリア区分データを、ソフトウェア的に設定可能であり、
前記開発支援方法は、更に、（ｄ）前記エリア区分データを、前記エリア区分判定部に設定するための設定データを生成する工程を有する開発支援方法。
【請求項４】
請求項１〜３いずれか記載の開発支援方法であって、
前記遊技機において、前記擬似ＲＡＭ領域は、前記ＲＡＭの先頭アドレスを含む所定範囲内として構成されており、
前記エリア区分データは、前記擬似ＲＡＭ領域の終端を指定するデータである開発支援方法。
【請求項５】
請求項１〜４いずれか記載の開発支援方法であって、
前記工程（ｃ）は、前記変換に先立って、
（ｃ１）  前記制御プログラムのうち前記ＲＡＭにアクセスする処理をカウントすることによって、前記アクセス先に基づいて設定された所定の分類ごとのアクセス回数を求める工程と、
（ｃ２）  前記アクセス回数の多い分類に含まれるアクセス先を、前記擬似ＲＡＭ領域を優先的に割り当てる工程とを含む開発支援方法。
【請求項６】
所定の遊技媒体を用いて遊技を行う遊技機において遊技の進行を統合制御する制御装置が実行する制御プログラムの開発を支援するためのコンピュータプログラムであって、
前記制御装置は、
前記統合制御を実行するためのＣＰＵと、
前記ＣＰＵが実行するプログラムを格納するためのメモリとしてのＲＯＭと、
前記統合制御に用いられる種々の情報を格納するためのメモリとしてのＲＡＭと、
前記統合制御において、前記制御装置の外部との信号を入出力するための入出力ポートとを有し、
前記ＣＰＵは、メモリへのアクセスに使用されるコマンドであって２バイト以上のアドレス値を含むコマンド体系を有するメモリアクセスコマンドと、外部との信号の入出力に使用されるコマンドであって入出力先を指定するためのアドレス値が前記メモリアクセスコマンドよりも１バイト以上少ないコマンド体系を有する入出力ポートアクセスコマンドとを使用可能であり、
更に、
前記入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先を前記ＲＡＭおよび入出力ポートに切り換え、前記ＲＡＭおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力するエリア区分判定部を備え、
前記入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号は、前記ＣＰＵから前記エリア区分判定部に入力されており、
前記コンピュータプログラムは、前記制御プログラムを開発するための開発コンピュータに、
（ａ）  前記ＣＰＵの機械語以外の所定の言語で記述された前記制御プログラムを読み込む機能と、
（ｂ）  擬似ＲＡＭ領域として、前記入出力ポートアクセスコマンドでアクセス可能な前記ＲＡＭのアドレス範囲を指定するエリア区分データを読み込む機能と、
（ｃ）  前記制御プログラムのうち前記ＲＡＭにアクセスする処理について、前記エリア区分データに基づいて該処理のアクセス先が前記擬似ＲＡＭ領域であると判断される場合には、前記入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する機能とを実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スロットマシン、パチンコ機などの遊技機を制御する制御装置に関する。
【背景技術】
【０００２】
スロットマシン、パチンコ機などの遊技機の制御は、全体の進行を制御するための主制御基板、音声出力、ランプ点灯、画像表示などの演出を制御する演出制御基板などの分散制御によって行われる（特許文献１）。主制御基板、演出制御基板は、それぞれＣＰＵ、ＲＡＭ、ＲＯＭなどを備えるマイクロコンピュータとして構成されている。
【０００３】
遊技機の制御基板、特に主制御基板では、不正を防止するために種々の制約が設けられている。例えば、ＣＰＵについては、汎用のＣＰＵではなく、遊技機特有のセキュリティ機能が設けられたＣＰＵが用いられている。また、ＲＯＭ、ＲＡＭの容量にも制約が設けられており、パチンコ機では制御用のプログラムが３キロバイト（ＫＢ）以内、データは３ＫＢ以内というように、プログラムサイズやデータ容量についても制約が設けられている。
【０００４】
【特許文献１】特開２００４−８４８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、遊技機の制御は、興趣を高めるため、年々、複雑化する傾向にある。
例えば、パチンコ機においては、従来、第１種と呼ばれる機種においては乱数を用いた電子的な抽選を行い、第２種と呼ばれる機種においては機械的な可動部を動作させ、可動部上の遊技球の動きによって当たりか否かを決める方法での抽選を行ってきた。これに対し、近年では、複合機と呼ばれる機種が登場し、上述の第１種および第２種を合わせた抽選を行うようになっている。この場合、主制御基板には、第１種および第２種の双方の抽選を行える制御プログラムを用意しておく必要がある。
【０００６】
上述の傾向は、パチンコ機以外の遊技機でも同様であり、遊技機は、プログラムやデータ量の厳しい制約の下で、より複雑な制御処理を実行することを要請されている。
本発明は、こうした課題に鑑み、遊技機のプログラム容量を削減可能にするとともに、容量を削減した制御プログラムの開発負荷を軽減するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、所定の遊技媒体を用いて遊技を行う遊技機を対象とする。かかる遊技機としては、例えば、スロットマシンなどの回胴式遊技機、スマートボール、パチンコ機などが挙げられる。遊技媒体とは、遊技球やメダルなど遊技中に投資、特典の対象となる媒体を言う。
遊技機は、遊技の進行を統合制御する主制御装置を有している。この他、所定の条件下で遊技媒体を遊技者に払い出す払出装置、および音声出力や表示を制御する演出制御装置などを設けても良い。払出装置は主制御装置で直接制御するようにしてもよいし、主制御装置からの指示情報に従って払出しを制御する払出制御装置で制御するようにしてもよい。この場合、主制御装置と払出制御装置は、ハードウェア的に別回路として構成されていてもよいし、同一の制御基板上で稼働する個別のソフトウェアモジュールとして構成されていてもよい。
以下、本明細書で「制御装置」と呼ぶ時は、遊技機に備えられた主制御装置、払出制御装置、演出制御装置などの少なくとも一つを表すものとする。
【０００８】
本発明の遊技機における制御装置は、ＣＰＵ、ＲＯＭ、ＲＡＭを備えたマイクロコンピュータとして構成されている。ＣＰＵは、遊技の進行制御を実行する演算回路である。ＲＯＭには、ＣＰＵが実行するプログラムが格納されている。ＲＡＭは、制御に用いられる種々の情報を格納するためのメモリとして機能する。かかる情報としては、例えば、制御プログラム中の各モジュール間で処理結果等を受け渡すためのワークや、演算中にＣＰＵが計算結果を一時的に蓄えておくためのスタックなどが含まれる。
制御装置には、統合制御において、制御装置の外部との信号を入出力するための入出力ポートも設けられている。入出力ポートとは、ここでは、外部との信号線を接続する端子、その端子から入出力される信号を一時的に蓄積しておくバッファ、各信号の入出力先を切り換えるデコーダなどの総称として用いる。信号の入出力先は、メモリと同様、アドレスによって指定可能である。
【０００９】
ＣＰＵが用いるコマンドには、メモリアクセスコマンド、入出力ポートアクセスコマンドが含まれる。メモリアクセスコマンドとは、メモリへのアクセスに使用されるコマンドであり、このコマンドには、２バイト以上のアドレス値の指定が含まれる。入出力ポートアクセスコマンドとは、外部との信号の入出力に使用されるコマンドであり、入出力先を指定するためのアドレス値はメモリアクセスコマンドよりも１バイト以上少ないコマンド体系となっている。例えば、メモリアクセスコマンドが２バイトでアドレス指定を行うコマンド体系である場合には、入出力ポートアクセスコマンドは１バイトでアドレス指定を行うコマンド体系となる。
Ｚ８０（商標）というＣＰＵに即して説明すれば、ロード／ストアコマンドがメモリアクセスコマンドに相当し、イン／アウトコマンドが入出力ポートアクセスコマンドに相当する。ロード／ストアコマンドでは２バイトでアドレスが指定され、イン／アウトコマンドでは1バイトで指定される。
【００１０】
制御装置には、更に、エリア区分判定部が備えられている。エリア区分判定部は、入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先をＲＡＭおよび入出力ポートに切り換え、ＲＡＭおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力する機能を奏する。入出力ポートアクセスコマンドは、通常、入出力ポートを通じたデータ授受に使用されるコマンドであるが、本発明では、同コマンドで指定されるアドレス空間の一部をＲＡＭへのアクセスに使用するのである。エリア区分判定部は、従って、コマンドで指定されたアドレスが、ＲＡＭ用または入出力ポート用のいずれに割り当てられたアドレスかを判定し、判定結果に応じてセレクタ信号を出力する。このセレクタ信号は、それぞれＲＡＭおよび入出力ポートに入力され、各ユニットをアクセス可能な状態にさせる。
ＣＰＵからは、入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号が、エリア区分判定部に入力されている。従って、エリア区分判定部の上述の機能は、ＣＰＵがイン／アウトコマンドなど入出力ポートアクセスコマンドを出力した時に有効となる。
【００１１】
上述の遊技機では、制御装置のＣＰＵは、入出力ポートアクセスコマンドでＲＡＭにアクセス可能である。アクセス先を指定するアドレスは、入出力ポートアクセスコマンドの方が、メモリアクセスコマンドよりも１バイト以上少なくて済む。従って、ＲＡＭへのアクセスが必要となる箇所で、メモリアクセスコマンドに代えて、入出力ポートアクセスコマンドを用いることにより、１カ所につき１バイト以上、プログラム容量を削減することができる。ＲＡＭへのアクセスは、プログラム全体で数多く行われる処理であるから、上述の遊技機によれば、プログラム全体の容量を有意に削減することが可能となる。
【００１２】
本発明は、上述の遊技機に搭載された制御装置が実行する制御プログラムの開発を支援する開発支援方法である。制御プログラムの開発は、開発用のコンピュータ（以下、「開発コンピュータ」と呼ぶ）を用いて、Ｃ言語のような高級言語またはアセンブリ言語のような低級言語などで、制御プログラムを作成し、コンパイラまたはアセンブラによって、ＣＰＵが実行できる機械語のオブジェクトを生成するという手順で行われる。上述した制御装置では、メモリアクセスコマンドと入出力ポートアクセスコマンドによってＲＡＭにアクセス可能であるため、制御プログラムの開発者は、ＲＡＭへのアクセスを行う際に、いずれのコマンドを利用すべきかを判断する必要が生じ、制御プログラムの開発効率を損ねるおそれがあった。本発明の開発支援方法では、この負担を軽減することによって、制御プログラムの開発を支援する。
【００１３】
本発明では、開発コンピュータは、まず、制御装置のＣＰＵの機械語以外の所定の言語で記述された制御プログラムを読み込む。制御プログラムは開発環境に応じて、Ｃ言語のような高級言語またはアセンブリ言語のような低級言語のいずれで記述されていてもよい。ここでは、開発コンピュータにおいて、別途、プログラム用のエディタを用いて開発されたものを読み込んでも良いし、別途用意された制御プログラムをネットワークまたは記憶媒体経由で読み込むようにしてもよい。
【００１４】
開発コンピュータは、また、入出力ポートアクセスコマンドでアクセス可能なＲＡＭのアドレス範囲を指定するエリア区分データを読み込む。以下、入出力ポートアクセスコマンドでアクセス可能なＲＡＭの領域を擬似ＲＡＭと称する。エリア区分データは、対話形式などの方法で、開発者が、キーボード等を操作して入力するものとしてもよいし、ソースプログラム上やデータベースなどで予め設定済みの固定値を読み込むものとしてもよい。前者の態様は、制御装置のハードウェア構成のみによっては、擬似ＲＡＭ領域が決定されず、ブート時または制御プログラムの実行時に、エリア区分データをエリア区分判定部に設定可能な構成をとっている時に有用である。後者の態様は、制御装置のハードウェア構成によって、擬似ＲＡＭ領域が固定されている場合に用いることができ、開発者がエリア区分データを入力する必要がなく、入力時の誤りを回避できるという利点がある。
エリア区分データのデフォルト値を予めソースプログラム上またはデータベースとして用意した上で、開発者からの入力を受け付けるようにしてもよい。この場合、デフォルト値と入力値のいずれを優先するかは任意に設定することができる。また、エリア区分データとして採りうる許容範囲を予め設定しておき、入力値がこの範囲を超えた場合には、ワーニング情報を出力したり、強制的に許容範囲内の値に変更するなどの処理を行うようにしてもよい。
【００１５】
開発コンピュータは、制御プログラムのうちＲＡＭにアクセスする処理について、エリア区分データに基づいて処理のアクセス先が擬似ＲＡＭ領域であるか否かを判断する。そして、アクセス先が擬似ＲＡＭ領域であると判断される場合には、入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する。例えば、先に説明したＺ８０（商標）というＣＰＵの場合、メモリアクセスコマンドであるロード／ストアコマンドが記載されている箇所を、入出力ポートアクセスコマンドであるイン／アウトコマンドに変換する。
変換は、種々の方法で行うことができる。制御プログラムの記述言語と同じ言語で変換してもよい。例えば、ロード（ＬＤ）と記載されている命令を、イン（ＩＮ）に変換する例が相当する。それぞれの命令体系に応じて、オペランドも適合する形に変更するのは当然である。この場合、変換した状態の制御プログラムを出力するものとしてもよいし、変換した状態の制御プログラムとともに、その制御プログラムを機械語に更に変換したオブジェクトコードを出力するようにしてもよい。
【００１６】
また、開発コンピュータは、上述の変換を行うとともに制御プログラムを機械語で表したオブジェクトコードを生成するようにしてもよい。この場合は、命令を変換した状態の制御プログラムの出力をした後、更に、オブジェクトコードの生成処理を行うという２段階の処理を経る必要がないため、オブジェクトコードの生成過程を簡略化できる利点がある。
【００１７】
先に説明した通り、遊技機の制御装置において、エリア区分判定部は、アクセス先の切り換えの判断基準となるエリア区分データを、ソフトウェア的に設定可能としてもよい。この場合には、開発コンピュータには、更に、エリア区分データを、エリア区分判定部に設定するための設定データを生成する機能を備えても良い。例えば、制御装置のＣＰＵが、ブート時にＲＯＭから必要なデータを読み込んでエリア区分データの設定をする場合には、設定データはブート用のデータとして生成される。また、制御プログラムの実行時に設定する場合には、上述の設定データは、制御プログラムのオブジェクトコードに含まれるエリア区分データの設定コマンドとして用意される。こうすることにより、制御プログラムの開発過程で、エリア区分データを入力すれば、それに連動して必要な設定がなされるため、制御プログラムと制御装置の設定との不整合を回避できる利点がある。
【００１８】
遊技機の擬似ＲＡＭ領域は、種々の設定が可能であるが、ＲＡＭの先頭アドレスを含む所定範囲内とすることが好ましい。この場合、エリア区分データは、擬似ＲＡＭ領域の終端を指定するデータとすることができ、簡易な指定が可能となる利点がある。エリア区分データは、擬似ＲＡＭ領域の終端の実アドレスを指定するものとしてもよいし、擬似ＲＡＭ領域の先頭アドレスからの相対アドレス、または擬似ＲＡＭ領域のサイズを指定するものとしてもよい。また、予め擬似ＲＡＭ領域としての設定例をメニューとして用意しておき、この中から適宜選択する方法で指定してもよい。このメニューは、例えば、擬似ＲＡＭ領域の先頭アドレスと容量との組み合わせで構成することができる。
【００１９】
先頭アドレスから擬似ＲＡＭ領域を設定することには、遊技機の規格との関係でも次に示す利点がある。
不正防止の観点から、遊技機では、主制御装置での制御処理において使用するワークは、ＲＡＭ領域の先頭アドレスから連続した領域に設ける。このため、擬似ＲＡＭ領域を先頭アドレスから設けておけば、擬似ＲＡＭ領域をワークに十分に活用することが可能となるのである。これに対し、擬似ＲＡＭ領域を、先頭アドレスとは異なる任意のアドレスから設けると、先頭アドレスから擬似ＲＡＭ領域にいたるまでの領域をワークとして使用した上で、更にメモリ容量が不足する場合にのみ擬似ＲＡＭ領域がワークに使用されるに過ぎなくなる。
【００２０】
擬似ＲＡＭ領域は、上述した種々の特長に基づいて、開発コンピュータが、遊技機の制御用のソースプログラムを解析して、自動的に設定するようにしてもよい。例えば、擬似ＲＡＭ領域は先頭アドレスから設けることが好ましいから、先頭アドレスを擬似ＲＡＭ領域の開始アドレスとする。擬似ＲＡＭ領域を用いた場合には、メモリアクセスコマンドに代えて、入出力ポートアクセスコマンドが使用できる点でプログラム容量を削減することができるから、かかる効果を十分に得られるように擬似ＲＡＭ領域の容量を設定すればよい。この設定は、擬似ＲＡＭ領域を数段階に仮想的に変化させ、プログラム容量の削減率を比較することによって、行うことができる。
【００２１】
開発コンピュータは、例えば、次に示す方法により、擬似ＲＡＭ領域が効率的に活用されるよう、先に説明したコマンドの変換に先立って、制御プログラムを最適化するようにしてもよい。
まず、開発コンピュータは、制御プログラムのうちＲＡＭにアクセスする処理をカウントすることによって、アクセス先に基づいて設定された所定の分類ごとのアクセス回数を求める。
分類は任意に設定可能であり、例えば、アクセス先が実アドレスで指定されている場合には、アドレス単位で分類とすることによって、同一のアドレスへのアクセス命令の数を計数すればよい。
制御プログラムでは、メモリへのアクセスはＬＤ命令などのメモリアクセスコマンドで記載されている。ＬＤ命令におけるアクセス先がラベル、即ち変数名で指定されている場合も同様に、ラベル単位で分類とすることによって、同一のラベルを含むアクセス命令の数を計数すればよい。
そして、開発コンピュータは、アクセス回数の多い分類に含まれるアクセス先を、擬似ＲＡＭ領域へ優先的に割り当てる。こうすることによって、制御プログラムにおいて、擬似ＲＡＭ領域を有効活用することができ、入出力ポートアクセスコマンドを利用することによるプログラムの削減効果を十分に得ることが可能となる。割り当て方は、種々の方法を採ることができ、例えば、アクセス回数の多い分類に含まれるアクセス先の中で、アクセス数の多い順に割り当てる方法を採ることができる。
【００２２】
上述の最適化処理においては、アクセス数の計数は、複数のアクセス先を予め一つの分類として関連づけておき、アクセス先に基づいて設定されたこの分類ごとに行っても良い。以下、このように複数のアクセス先が関連づけられた分類を、「ブロック」と称することもある。ブロックごとにアクセス数を計数する場合には、ブロックとして関連づけられず単独で計数するアクセス先と複数のアクセス先からなる分類とが混在していても構わない。
制御プログラムでは、異なるラベルを用いながら、連続したアドレス領域に格納されることが前提とされているものもある。かかる複数のラベルを分類としてまとめておくことにより、擬似ＲＡＭ領域への割り当てによって、これらのラベルが不連続のアドレス領域に分散してしまうことを回避することができる。
上述の最適化処理は、ワークの容量が擬似ＲＡＭ領域を超える場合には、行った方が好ましい。これに対し、ワークの容量が擬似ＲＡＭ領域以下である場合には、最適化処理を省略しても構わない。最適化するか否かに関わらず、全ワークを擬似ＲＡＭ領域に割り当てることが可能だからである。
【００２３】
擬似ＲＡＭ領域への割り当ては、種々の方法で行うことができる。擬似ＲＡＭ領域に空きがある場合には、アクセス数の多いアクセス先に対して、順次、空いている領域を割り当てて行けばよい。アクセス先が実アドレスで指定されている場合には、アクセス先を擬似ＲＡＭ領域内のアドレスに変換すればよい。
また、擬似ＲＡＭ領域の残領域不足によって、アクセス数が最も多い分類に含まれる全ラベルを割り当てられない場合には、次にアクセス数が多いものを割り当てても良い。
擬似ＲＡＭ領域内の実アドレスでアクセス先が指定されている場合でも、そのアクセス数が少ない場合には、アクセス先を擬似ＲＡＭ領域外に変換してもよい。
【００２４】
本発明において、上述の特徴は、必ずしも全てが備えられている必要はなく、適宜、一部を省略したり、組み合わせたりしても良い。
また、本発明は、開発用コンピュータによって実行される開発支援方法としての態様のみならず、この開発支援方法を実現するためのコンピュータプログラムとして構成してもよい。また、かかるコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体として構成することもできる。記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置等、コンピュータが読取り可能な種々の媒体を利用できる。
本発明は、更に、上述の開発支援方法の機能を実現する開発支援装置として構成してもよい。開発支援装置は、汎用のコンピュータに、上述のコンピュータプログラムをインストールすることによって、必要な機能をソフトウェア的に構築するものとしてもよいし、各機能をハードウェア的に構築した専用の装置として構成してもよい。
【００２５】
本発明の開発支援方法が対象とする遊技機の制御装置についても、種々の構成が可能である。
例えば、先に説明した構成に加えて、更に、メモリエリアデコード部を設けても良い。メモリエリアデコード部は、メモリアクセスコマンドで指定されるアドレス値の上位所定桁に基づいて、アクセス先となるＲＯＭおよびＲＡＭのいずれかをアクティブにするためのメモリセレクト信号を出力する機能を奏する。ＣＰＵからは、メモリアクセスコマンドに応じて稼働すべき対象を指定するメモリリクエスト信号が、メモリエリアデコード部に入力されており、上述の機能は、ＣＰＵがメモリアクセスコマンドを出力した時に有効となる。
【００２６】
こうすることにより、メモリアクセスコマンドによってもＲＡＭへのアクセスが可能となる。入出力ポートアクセスコマンドでアクセス可能なＲＡＭの領域は、入出力ポート用のアドレス空間の一部に過ぎないが、メモリアクセスコマンドを利用すれば、全領域にアクセス可能となる。従って、入出力ポートアクセスコマンドによるＲＡＭへのアクセスでプログラム容量の削減を図りつつ、メモリアクセスコマンドによってＲＡＭの領域を無駄なく活用することが可能となる。
【００２７】
また、ＲＡＭのアドレス空間と、入出力ポートアクセスコマンドで指定可能な擬似ＲＡＭ領域のアドレス空間とは同サイズであることが好ましい。こうすることにより、入出力ポートアクセスコマンドで指定されたアドレスを、そのままＲＡＭへのアクセスに利用することが可能となる。
もっとも、これは必須の要件ではなく、ＲＡＭのアドレス空間が入出力ポートアクセスコマンドのアドレス空間よりも大きくてもよい。つまり、ＲＡＭのアドレス桁数が、入出力ポートアクセス用のアドレス桁数よりも多くてもよい。この場合には、エリア区分判定部に、入出力ポートアクセスコマンドで指定されたアドレスに対して、デフォルトの上位桁を加えた状態でＲＡＭに出力する機能を持たせる必要がある。
【００２８】
本発明において、メモリエリアデコード部を設ける場合には、更に、上位所定桁に基づいて、入出力ポートをアクティブにする入出力ポートセレクト信号を出力可能としてもよい。入出力ポートセレクト信号は、入出力ポートに伝達される。
こうすることによって、メモリアクセスコマンドによって入出力ポートからの信号授受が可能となる。入出力ポートの一部または全部を、メモリアクセスコマンドでアクセスするものとすれば、その分、入出力ポートアクセスコマンドによってアクセス可能となる擬似ＲＡＭ領域を増やすことができる。入出力ポート全部をメモリアクセスコマンドでアクセスするものとすれば、入出力ポートアクセスコマンドによって指定可能な全アドレス空間を擬似ＲＡＭ領域とすることが可能となる。この態様によれば、プログラムサイズの削減効果上、最も効果的な擬似ＲＡＭ領域のサイズを、柔軟に設定することが可能となるのである。
【発明を実施するための最良の形態】
【００２９】
本発明の実施例について以下の順序で説明する。
Ａ．装置構成：
Ｂ．主制御基板１１０の回路構成：
Ｃ．制御処理：
Ｃ１．主制御側電源投入時処理：
Ｃ２．主制御側タイマ割り込み処理：
Ｃ３．サブ統合側処理：
Ｃ４．払出制御基板の制御処理：
Ｄ．プログラム容量削減効果：
Ｅ．制御プログラム開発支援装置：
Ｅ１．装置構成：
Ｅ２．オブジェクトコード生成処理：
Ｅ３．最適化処理：
Ｅ４．メモリアクセスコマンド変換処理：
Ｅ５．オブジェクトコード生成処理の変形例：
Ｆ．主制御基板１１０の変形例：
Ｆ１．回路構成の変形例（１）：
Ｆ２．回路構成の変形例（２）：
【００３０】
Ａ．装置構成：
実施例では、パチンコ機として構成した場合の例を示す。
実施例としてのパチンコ機は、遊技媒体に相当する遊技球を、発射し、遊技盤に設けられた入賞口に入賞させることによって、賞球の払出を受ける遊技機である。
パチンコ機が、第１種または複合機と呼ばれる機種の場合、始動入賞口と呼ばれる入賞口に遊技球が入賞すると、乱数を用いた電子的な抽選が行われる。抽選の結果、大当たりとなると、遊技盤に設けられた大入賞口が所定期間、所定回数、開閉し、賞球の払出を受けやすい有利な遊技状態（以下、「大当たり遊技」という）に移行する。
パチンコ機が、第２種または複合機の場合には、遊技球の動きによって機械的に抽選の当落を決定する機構が備えられている。この場合でも、大当たりが発生すると、機種に応じた大当たり遊技に移行する。
【００３１】
図１は実施例としてのパチンコ機１の制御用ハードウェア構成を示すブロック図である。パチンコ機１は、主制御基板１１０、払出制御基板２１０、サブ制御基板３１０、装飾図柄制御基板３５０などの各制御基板の分散処理によって制御される。主制御基板１１０は、それぞれ内部にＣＰＵ、ＲＡＭ、ＲＯＭなどを備えたマイクロコンピュータとして構成されており、ＲＯＭに記録されたプログラムに従って種々の制御処理を実現する。払出制御基板２１０、サブ制御基板３１０も同様である。
本実施例では、サブ制御基板３１０と装飾図柄制御基板３５０とは別基板として構成しているが、両者を統合した基板としてもよい。この場合、サブ制御基板３１０の機能と装飾図柄制御基板３５０の機能を、複数のＣＰＵの分散処理で実現してもよいし、単独のＣＰＵで実現する構成としてもよい。
また、主制御基板１１０と払出制御基板２１０も別基板とせず、両者を統合した基板として構成することもできる。
【００３２】
実施例のパチンコ機１では、種々の不正を防止するため、主制御基板１１０への外部からの入力が制限されている。主制御基板１１０とサブ制御基板３１０とは単方向のパラレル電気信号で接続されており、主制御基板１１０と払出制御基板２１０とは、制御処理の必要上、双方向シリアル電気信号で接続されている。
払出制御基板２１０、サブ制御基板３１０は、それぞれ主制御基板１１０からのコマンドに応じて動作する。装飾図柄制御基板３５０は、サブ制御基板３１０からのコマンドに応じて動作する。
【００３３】
パチンコ機１には、主制御基板１１０が直接に制御する機構もある。図中には、主制御基板１１０が制御する装置の一例として、大当たり遊技において、大入賞口を駆動するための大入賞口ソレノイド４３、および特別図柄表示装置４１を例示した。特別図柄表示装置４１とは、遊技中に主制御基板１１０が行った抽選の結果を、所定数のＬＥＤの点灯状態で表示する装置である。
主制御基板１１０は、この他にも、普通図柄表示装置、特別図柄保留ランプ、普通図柄保留ランプ、大当り種類表示ランプ、状態表示ランプなどの表示を制御することができる。
【００３４】
また、主制御基板１１０には、遊技中の動作を制御するため、種々のセンサからの検出信号が入力される。図中には一例として入賞検出器４２からの入力を例示した。入賞検出器４２とは、始動入賞口への入賞を検出するためのセンサである。主制御基板１１０は、入賞検出器４２からの信号に応じて、先に説明した抽選を行い、大当り遊技を実行することができる。主制御基板１１０には、他にも種々の入力がなされているが、ここでは説明を省略する。
【００３５】
遊技時におけるその他の制御は、払出制御基板２１０、サブ制御基板３１０を介して行われる。
払出制御基板２１０は、遊技中の遊技球の発射および払い出しを次の手順で制御する。
遊技球の発射は、直接的には発射制御基板４７によって制御される。即ち、遊技者が、遊技機正面に備えられた発射用のハンドルを操作すると、発射制御基板４７は操作に応じて発射モータ４９を制御し、遊技球を発射する。遊技球の発射は、タッチ検出部４８によって、ハンドルに遊技者が触れていることが検出されている状況下でのみ行われる。払出制御基板２１０は、発射制御基板４７に対して、発射可否の制御信号を送出することで、間接的に球の発射を制御する。
【００３６】
遊技中に入賞した旨のコマンドを主制御基板１１０から受信すると、払出制御基板２１０は、賞球払出装置２０内の払出モータ２１を制御し、払出球検出器２２によって球数をカウントしながら規定数の球を払い出す。払出モータ２１の動作は、モータ駆動センサ２３によって監視されており、球ガミ、球切れなどの異常が検出された場合、払出制御基板２１０は、表示部４ａにエラーコードを表示する。エラー表示された時には、係員が異常を除去した後、操作スイッチ４ｂを操作することで復旧させることができる。
【００３７】
サブ制御基板３１０は、遊技中における音声、表示、ランプ点灯などの演出を制御する。サブ制御基板３１０は、これらの制御を実行するためのＣＰＵ、ＲＡＭ、ＲＯＭを備えたマイクロコンピュータとして構成されている。これらの演出は、通常時、入賞時、大当たり時など、遊技中のステータスに応じて変化する。主制御基板１１０から、各ステータスに応じた演出用のコマンドが送信されると、サブ制御基板３１０は、各コマンドに対応したプログラムを起動して、主制御基板１１０から指示された演出を実現する。
音声およびランプ点灯はサブ制御基板３１０が直接制御するが、ＬＣＤ１６の表示については、装飾図柄制御基板３５０を介して制御する。
【００３８】
サブ制御基板３１０の制御対象となるランプには、遊技盤面に設けられたパネル装飾ランプ１２と、枠に設けられた枠装飾ランプ３１がある。サブ制御基板３１０は、ランプ中継基板３２、３４を介して、パネル装飾ランプ１２および枠装飾ランプ３１と接続されており、各ランプを個別に点滅させることができる。
図示を省略したが、スピーカ２９を制御するため、サブ制御基板３１０には、音源ＩＣおよびアンプが備えられている。ＣＰＵが、スピーカ２９から出力する音声を決めて音声出力コマンドを出力すると、音源ＩＣが予め用意された音源データから指定されたものを再生し、アンプで増幅してスピーカ２９から出力する。
【００３９】
また、サブ制御基板３１０は、遊技中の演出の他、エラー時、不正行為その他の異常が生じた時には、警報音を出力したり、ランプを警告用に点灯したりして、異常発生を報知する。主制御基板１１０のＲＡＭの内容を消去するためのＲＡＭクリアスイッチが操作された時にも、同様に報知音が出力される。
警報音には、例えば、遊技中の効果音とは明らかに異なるブザー音を用いることができる。警告用のランプ点灯としては、例えば、遊技盤の周囲全体を赤く点滅させるなど、遊技中とは明らかに異なる態様での点灯・点滅をさせることができる。
【００４０】
Ｂ．主制御基板１１０の回路構成：
図２は主制御基板１１０の回路構成を示す説明図である。先に説明した通り、主制御基板１１０は、ＣＰＵ１１１、ＲＡＭ１１６、ＲＯＭ１１４を備えるマイクロコンピュータとして構成されている。図中には、ＣＰＵ１１１が、ＲＡＭ１１６、ＲＯＭ１１４にアクセスするための回路、および外部入出力（Ｉ／Ｏ）を行うための回路を示した。
本実施例では、ＣＰＵ１１１には、セキュリティ機能が備えられている。セキュリティ機能としては、例えば、内蔵されたＲＯＭが正規の認証を受けたＲＯＭであるかを判定する機能、予め定められたエリア以外へのアクセスが行われた場合に、内部的にリセットを発生させる機能、ＣＰＵの外部に設けられた端子から、内蔵のＩＤコードや、ＲＯＭに格納されたデータ等を読み出すことができる機能などが挙げられる。
また、遊技機の規格上、プログラム容量は３ＫＢ以下、データ容量は３ＫＢ以下という厳しい制限下で動作するよう構成されている。
本実施例の回路は、ＣＰＵ１１１がＲＡＭ１１６にアクセスするために、ロード／ストアコマンドと呼ばれる通常のメモリ領域へのアクセス用のコマンドの他、イン／アウトコマンドというＩ／Ｏにアクセスするためのコマンドも使用可能な構成となっている。以下では、まず回路構成について概要を示した後、その動作について説明する。
【００４１】
ＣＰＵ１１１からは、バスバッファ１１２を介して図示する種々の信号が出力される。アドレスＡ１５〜Ａ０は１６ビットの信号である。Ａ１５〜Ａ８を上位アドレス、Ａ７〜Ａ０を下位アドレスと呼ぶこともある。データバスは、Ｄ７〜Ｄ０の８ビットである。ＲＤ／ＷＲは読み書きの制御信号（以下、「リード・ライト」と呼ぶこともある）である。ＩＯＲＥＱは、Ｉ／Ｏへのアクセスの際にアクティブとなる１ビットの信号であり、ＭＲＥＱはメモリへのアクセスの際にアクティブとなる１ビットの信号である。
【００４２】
メモリエリアデコーダ１１３は、メモリへのアクセスを中継する回路である。メモリエリアデコーダ１１３からは、ＲＯＭ１１４へのアクセスを可能とするためのチップセレクタ信号ＭＣＳ２、ＲＡＭ１１６へのアクセスを可能とするためのチップセレクタ信号ＭＣＳ１が出力される。チップセレクタ信号ＭＣＳ１は、選択部１１５を介してＲＡＭ１１６に入力される。
【００４３】
エリア区分判定部１２０は、イン／アウトコマンドによって、ＲＡＭ１１６へのアクセスを可能とするための回路である。エリア区分判定部１２０内には、イン／アウトコマンドがＩ／Ｏへのアクセスを意味しているのか、ＲＡＭ１１６へのアクセスを意味しているのかを区分するための基準となるエリア区分データ１２１が格納されている。このデータは、予め固定値をハードウェア的に組み込んでおくようにしてもよいが、本実施例では、ＲＯＭ１１４に記憶された基準値を読み込んで、起動時に設定するものとした。
エリア区分判定部１２０からは、Ｉ／Ｏデコーダ１２２をアクティブにするためのＩＯエリア識別信号、およびＲＡＭ１１６へのチップセレクタ信号ＭＣＳ０が出力される。
【００４４】
チップセレクタ信号ＭＣＳ０は、選択部１１５を介してＲＡＭ１１６に入力される。ＲＡＭ１１６は、メモリエリアデコーダ１１３からのチップセレクタ信号ＭＣＳ１、およびエリア区分判定部１２０からのチップセレクタ信号ＭＣＳ０のいずれかがアクティブとなっていれば、アクセス可能である。従って、選択部１１５は、例えば、オアゲートによって構成することができる。
【００４５】
ＩＯデコーダ１２２は、ＩＯエリア識別信号がアクティブとなっている時に稼働する。ＩＯデコーダ１２２は、下位アドレスＡ７〜Ａ０の値に応じて、アクセス先となるべきＩＯを指定するためのチップセレクタ信号ＩＯＣＳ１、ＩＯＣＳ２等を出力する。チップセレクタ信号は、下位アドレスＡ７〜Ａ０のアドレス空間に相当する本数、出力可能である。
【００４６】
図中には、Ｉ／Ｏポートの一つとして備えられているシリアルポートの構成を示した。チップセレクタ信号ＩＯＣＳ１、ＩＯＣＳ２は、パラレル入出力ポート１２３内に設けられた受信バッファ１２３ｒ、送信バッファ１２３ｓに対応している。受信バッファ１２３ｒ、送信バッファ１２３ｓの容量は、任意に設定可能であるが、本実施例では、データの入出力が可能なサイズとして３２バイトの容量を確保した。これらのバッファは、いわゆるＦＩＦＯ（First In First Out1）型である。
受信バッファ１２３ｒは、シリアル入出力制御部１２４内に構成されたＳＰ（シリアル／パラレル）変換部１２４ｓに接続され、送信バッファ１２３ｓは、ＰＳ（パラレル／シリアル）変換部１２４ｐに接続されている。外部からシリアル入力する際には、データは、ＳＰ変換部１２４ｓによって８ビットのパラレルデータに変換され、受信バッファ１２３ｒに蓄積される。ＣＰＵ１１１は、インコマンドによって、受信バッファ１２３ｒのデータを読み取ればよい。また、外部にシリアル出力する際には、ＣＰＵ１１１は、アウトコマンドによって送信バッファ１２３ｓにデータを格納すればよい。このデータは８ビットのパラレルデータとしてＰＳ変換部１２４ｐに伝達され、シリアルデータに変換されて、出力される。
【００４７】
図３は主制御基板１１０の動作を示す説明図である。先に説明した通り、本実施例では、ＣＰＵ１１１は、ＲＡＭ１１６に対して、ロード／ストアコマンドと、イン／アウトコマンドの双方を用いてアクセスすることが可能である。図３では、かかるアクセスを実現するため、ロードコマンド、インコマンドを例にとって、ＣＰＵ１１１、メモリエリアデコーダ１１３、エリア区分判定部１２０、ＩＯデコーダ１２２の機能をそれぞれ示した。
【００４８】
ＣＰＵ１１１が、ＬＤ（ロード）命令を出力したとする（処理Ｓ１）。メモリエリアに直接アクセス可能とするため、ＬＤ命令では、アドレスＡ１５〜Ａ０の全てをコマンド内で指定する必要がある。従って、図中に示す通り、このコマンドは、「ＬＤ、下位アドレス、上位アドレス」という３バイトで構成される。ＬＤコマンド出力と併せて、ＭＲＥＱおよびＲＤ信号がアクティブとなるが、図の煩雑化回避のため、図示を省略した。
【００４９】
メモリエリアデコーダ１１３は、アドレスに基づき、アクセス先が、ＲＯＭ１１４かＲＡＭ１１６かを判定する（処理Ｓ２）。
ＲＯＭ１１４へのアクセスが指定されている場合には、ＲＯＭ１１４に対応するチップセレクタ信号ＭＣＳ２をアクティブにする。この結果、ＲＯＭ１１４内において、Ａ１２〜Ａ０で指定された領域に格納されているデータが読み出される。
ＲＡＭ１１６へのアクセスが指定されている場合には、ＲＡＭ１１６に対応するチップセレクタ信号ＭＣＳ１をアクティブにする。この結果、ＲＡＭ１１６内において、下位アドレスで指定された領域に格納されているデータが読み出される。この場合、ＣＰＵ１１１は、ＲＡＭ１１６のメモリ領域（アドレス００Ｈ〜ＦＦＨ）のうち任意の領域にアクセス可能である。ＲＡＭ１１６のメモリ領域は設定により５１２バイトおよび２５６バイトに切り換えることが可能であるが、本実施例では、２５６バイトと設定されている場合を例にとって説明する。
【００５０】
次に、ＩＮ命令を出力したとする（処理Ｓ３）。ＩＮ命令では、アクセス可能なＩＯが下位アドレスで指定される２５６カ所に制限されているため、コマンドは図示する通り、「ＩＮ、下位アドレス」の２バイトで構成される。
エリア区分判定部１２０は、エリア区分データに基づいて、アクセス先が、ＲＡＭかＩＯかを判別する（処理Ｓ４）。
例えば、図中のＲＡＭ１１６内のハッチングの領域（００Ｈ〜＊＊Ｈ）（以下、この領域を「擬似ＲＡＭ領域」と呼ぶこともある）がＩＮ命令でもアクセス可能な領域として設定されているとする。エリア区分判定部１２０は、下位アドレスＡ７〜Ａ０が、「００Ｈ〜＊＊Ｈ」に含まれる場合には、アクセス先は擬似ＲＡＭ領域であると判断し、その他の場合にはＩＯであると判断する。
【００５１】
アクセス先がＲＡＭ１１６と判断される場合には、エリア区分判定部１２０は、チップセレクタ信号ＭＣＳ０をアクティブにする。この結果、ＲＡＭ１１６内において、下位アドレスで指定された領域に格納されているデータが読み出される。
アクセス先がＩＯであると判断される場合には、エリア区分判定部１２０は、ＩＯエリア識別信号をアクティブにする。この結果、ＩＯデコーダ１２２が稼働し、下位アドレスＡ７〜Ａ０に基づいてＩＯ選択し、対応するチップセレクタ信号ＩＯＣＳ１、ＩＯＣＳ２等をアクティブにする（処理Ｓ５）。
【００５２】
本実施例では、このように、ＲＡＭ１１６内に設けられた擬似ＲＡＭ領域には、ロード／ストアコマンド、イン／アウトコマンドの双方でアクセスすることが可能である。擬似ＲＡＭ領域は、任意に設定可能である。ＩＯへのアクセスに必要なアドレス空間を除き、全てを擬似ＲＡＭ領域に割り当てても良い。擬似ＲＡＭは、上述の通り、イン／アウトコマンドでアクセスできる分、アクセス１回につき１バイトずつプログラム容量を削減することができる。
擬似ＲＡＭ領域へのアクセスには、下位アドレスＡ７〜Ａ０をそのまま利用することができる点で、擬似ＲＡＭ領域は、ＲＡＭ１１６の先頭アドレスから設定することが好ましい。
【００５３】
Ｃ．制御処理：
Ｃ１．主制御側電源投入時処理：
図４および図５は主制御側電源投入時処理の一例を示すフローチャートである。主制御基板１１０のＣＰＵ１１１が電源投入による復電をトリガとして開始・実行する処理である。「復電」は、電源を遮断した状態から電源を投入した状態、停電又は瞬停からその後の電力の復旧した状態も含む。
【００５４】
処理が開始されると、ＣＰＵ１１１は、割り込みのモードを設定し、スタックポインタに初期値を設定する（ステップＳ１０）。スタックポインタは、例えば、使用中のレジスタの内容、サブルーチンを終了して本ルーチンに復帰するときの本ルーチンの復帰アドレスなど、制御処理を進める上で一時的に記憶する種々の情報の格納アドレスをスタックに順次、格納・読み出し可能とするために、スタック中での最新の情報の格納場所を表している。
【００５５】
次に、ＣＰＵ１１１は停電クリア信号をロウとする（ステップＳ１２）。停電クリア信号をロウにすることにより、電源投入時に主制御基板に設けられた停電監視回路からの停電予告信号をラッチするためのＤタイプフリップフロップのラッチ機能を一時的に停止すると共に、それ以前に検知（ラッチ）した停電予告信号をクリアする。ラッチ機能を一時的に停止することにより、停電予告信号が常時監視可能な状態に切り替えることができる。
【００５６】
ＣＰＵ１１１は、ウェイトタイマ処理１によって所定の待ち時間を経た後（ステップＳ１４）、停電予告信号の状態を確認し、停電予告信号が停電を示す状態(停電予告信号がロウのとき)となっているか否かを判定する（ステップＳ１６）。停電を示す状態となっている場合には、ウェイトタイマ処理１による待ち時間（ステップＳ１４）を経てから、再度停電予告信号の状態を確認する。
このように、所定の待機時間を経た後に停電予告信号を確認するのは、停電予告信号が、停電又は瞬停によってパチンコ機１への供給電圧が所定の停電予告電圧より低くなった時に出力されるため、電源投入時に遊技機への供給電圧が所定電圧に達するまでは、一定の時間を要するためである。これにより、供給電圧が不安定な状態で、主制御基板の遊技機の制御に関する処理（ループ処理、タイマ割込処理）を実行しないようにすることが可能となる。
【００５７】
停電予告信号が検出されず（ステップＳ１６）、電源電圧に異常がないと判断される時は、ＣＰＵ１１１は停電クリア信号をハイ（出力を停止）にし（ステップＳ１８）、停電監視回路から出力される停電予告信号を常時監視可能な状態からラッチ可能な状態に切り替える。以後、供給電圧が停電予告電圧を下回ったときに、ラッチされた停電予告信号が出力されるようになる。
【００５８】
ＣＰＵ１１１はＲＡＭクリアスイッチが操作されている時は（ステップＳ２０）。ＲＡＭクリア報知フラグＲＣＬに値１をセットし（ステップＳ２２）、操作されていないときには値０をセットする（ステップＳ２４）。ＲＡＭクリアスイッチが操作されると、後述の通り、主制御基板１１０のＲＡＭ１１６上の確率変動、未払い出し賞球等の遊技に関する遊技情報が消去されることになる。
【００５９】
次にＣＰＵ１１１はウェイトタイマ処理２で（ステップＳ２６）、装飾図柄制御基板３５０の起動を待つ。但し、主制御基板１１０は装飾図柄制御基板３５０から起動完了の通知を受信することはできないため、所定時間経過した時点で起動が完了したものとみなして次の処理を実行することになる。本実施例では、待機時間として２秒（ｓ）が設定されている。
【００６０】
本実施例では、先に説明した通り、上述のウェイトタイマ処理２を行う前に、ＲＡＭクリアスイッチの操作有無を判定している（ステップＳ２０）。ＲＡＭクリアを行う場合には、遊技場の係員は、通常、ＲＡＭクリアスイッチを押下した状態で電源を投入する。従って、ウェイトタイマ処理２を行う前に、ＲＡＭクリアスイッチの操作有無を判断しておくことにより、遊技場の係員が電源投入後、比較的短時間でＲＡＭクリアスイッチの押下をやめてしまった場合でも、誤りなくＲＡＭクリアスイッチの操作の検出が可能となる利点がある。
本実施例においても、ウェイトタイマ処理２の後にＲＡＭクリアスイッチの操作の有無を検出する方法を採ることも可能である。ただし、この場合には、ＲＡＭクリアスイッチの操作が検出される前に、遊技場の係員が押下を中断してしまうおそれがあり、遊技場の係員はＲＡＭクリアを行ったつもりでいても、結果としてＲＡＭクリア処理が行われないまま遊技機の制御処理が開始されるおそれもある。ウェイトタイマ処理２の前にＲＡＭクリアスイッチの操作を検出することによって、こうした弊害を回避することができる。
【００６１】
上述の通り早期にＲＡＭクリアスイッチの操作を確認する場合には、仮に、電源投入に対してＲＡＭクリアスイッチの操作が遅れた場合には、ＲＡＭクリアスイッチが操作される前に、ステップＳ２０の検出処理が完了してしまい、ＲＡＭクリアが正しく行われなくなるおそれもある。
かかる弊害を回避するため、ウェイトタイマ処理２（ステップＳ２６）が完了した後に、再度、ＲＡＭクリアスイッチの操作を検出するようにしてもよい。例えば、後述するステップＳ２８とＳ３０の間に検出処理を設ける方法が考えられる。こうすることによって、ＲＡＭクリアスイッチの操作が電源投入から若干、遅れて行われた場合でも、ＲＡＭクリアを行うことが可能となる。
ＲＡＭクリアスイッチの操作の検出タイミングは、このように種々の設定が可能である。本実施例のように、ウェイトタイマ処理２の前でのみ検出するようにしてもよい。また、ウェイトタイマ処理２の後にのみ行うようにしてもよいし、ウェイト処理２を挟む前後で行うようにしてもよい。
また、ウェイトタイマ処理２の期間中、ＲＡＭクリアスイッチを継続的に監視し、ＲＡＭクリアスイッチの操作が検出された場合には、所定のフラグをオンにするなどの方法で検出結果を示すようにしてもよい。この場合、ＲＡＭクリアスイッチの操作が検出されたか否かに関わらず、ウェイトタイマ処理２で規定された待ち時間が確保されるよう、プログラムを構成しておくことが好ましい。
【００６２】
ウェイトタイマ処理２（図５のステップＳ２６）が終わった後の処理について、引き続き説明する。
ＣＰＵ１１１は、ＲＡＭクリア報知フラグＲＣＬが値０である時（図５のステップＳ２８）、即ちＲＡＭクリアスイッチが操作されていない時には、ＲＡＭ１１６に記憶されている遊技情報のチェックサムを算出する（ステップＳ３０）。そして、チェックサムの値が前回の電源断時に予め算出されバックアップされていたチェックサムの値と一致しているか否かを判定する（ステップＳ３２）。本実施例では、電源断時におけるチェックサムの算出と、電源投入時におけるチェックサムの算出（ステップＳ３０）とは共通のサブルーチンで行うものとした。こうすることにより、チェックサムの算出自体の差異によるエラーの発生を回避できるからである。
チェックサムが一致しているときには、バックアップフラグＢＫが値１であるか否かを判定する（ステップＳ３４）。バックアップフラグＢＫは、前回の電源断時に、遊技情報、チェックサムの値などが正常にバックアップされていることを表すフラグである。
バックアップフラグＢＫが値１であるときには、ＣＰＵ１１１はバックアップフラグＢＫに値０をセットし、ＲＡＭ１１６にＲＯＭ１１４から読み出した復電時の設定を行う（ステップＳ３６）。また、電源投入時コマンド作成処理、つまりバックアップされていた遊技情報に応じた各種コマンドをＲＡＭ１１６の所定記憶領域に記憶させる処理を行う（ステップＳ３８）。
【００６３】
上述の通り、本実施例では、チェックサムによってバックアップ情報が正常か否かを検査するとともに、バックアップフラグＢＫに基づいて主制御側電源断時処理が正常に終了された否かを検査している。本実施例では、この２重チェックによってバックアップ情報が不正行為により記憶されたものであるか否かを検査しているのである。
【００６４】
一方、ＲＡＭクリア報知フラグＲＣＬが値１のとき（ステップＳ２８）、つまりＲＡＭクリアスイッチが操作されているときには、後述する通りＲＡＭ１１６を初期化する処理を行う。チェックサムの値が一致していないとき、またはバックアップフラグＢＫが値０であるときも同様である（ステップＳ３２、Ｓ３４）。バックアップが正常に行われていないと判断されるからである。
ＲＡＭ１１６の初期化として、ＣＰＵ１１１は、ＲＡＭの全領域クリア処理、つまり、ＲＡＭ１１６の全領域に値００Ｈを書き込むことによって、ＲＡＭ１１６をクリアする処理を行う（ステップＳ４０）。この処理によって、大当たり判定用乱数や初期値更新型のカウンタ等の値は初期値０にセットされる。
ＲＡＭの全領域とは、ＲＡＭの使用可能な全領域を意味する。本実施例では、ＲＡＭに物理的に備えられた全領域を使用するか、その半分を使用するかを、設定によって切換可能とした。後者の場合には、使用可能に設定された領域が、ＲＡＭクリア処理の対象としての「全領域」に該当する。
【００６５】
次に、ＣＰＵ１１１はＲＯＭ１１４から読み出した初期情報をＲＡＭ１１６にセットする（ステップＳ４２）。
そして、ＣＰＵ１１１はＲＡＭクリア報知を行う（ステップＳ４４）。ＲＡＭクリア報知とは、ＲＡＭクリアが行われたことを報知する音声出力を指示するＲＡＭクリア報知コマンドをサブ制御基板３１０に出力する処理である。
【００６６】
以上の処理を完了すると、ＣＰＵ１１１は割り込み初期設定を行い（ステップＳ４６）、タイマ割り込み処理の割り込み周期を設定する。本実施形態では割り込み周期は４ｍｓとした。
ＣＰＵ１１１が割り込み許可設定を行うと（ステップＳ４８）、上述の割り込み周期でタイマ割り込み処理が繰り返し行われるようになる。
【００６７】
次にＣＰＵ１１１は主制御側メイン処理を実行する。
この処理は、ウォッチドッグタイマ初期化レジスタ（以下、単に「ＷＣＬ」と称する場合もある）に予め設定された値Ａをセットする（ステップＳ５０）。これはウォッチドックタイマを初期化するために必要な処理の一つである。本実施例では、この値Ａの他、後述する主制御タイマ割り込み処理において、値Ｂ、値Ｃが順次、設定された時に、ウォッチドックタイマが初期化されるように構成されている。
図示する通り、主制御側メイン処理はループを構成しているため、この処理が正常に繰り返されるとともに、主制御タイマ割り込み処理が周期的に行われる限り、ＷＣＬには、値Ａ、Ｂ、Ｃが順に設定され、ウォッチドッグタイマは常に初期化され続ける。これに対し、ＣＰＵ１１１の処理に異常が生じると、ＷＣＬの初期化が行われなくなるため、ＣＰＵ１１１にリセットがかかり、ＣＰＵ１１１は電源投入時の処理（ステップＳ１０以降）を再度実行することになる。
【００６８】
ＷＣＬに値Ａを設定した後、停電予告信号の入力がないときには（ステップＳ５２）、ＣＰＵ１１１は非当落乱数更新処理を行う（ステップＳ５４）。非当落乱数とは、遊技中に用いられる乱数のうち抽選の当落判定にかかわらない乱数である。かかる乱数としては、例えば、抽選時に行われる変動表示のパターンを選択するための乱数が挙げられる。
ＣＰＵ１１１は、主制御側メイン処理として、以上で説明したステップＳ５０〜ステップＳ５４を繰り返し行う。
【００６９】
一方、停電予告信号が入力されている場合（ステップＳ５２）、ＣＰＵ１１１は主制御側電源断時処理を行う。停電予告信号は、パチンコ遊技機１の電源が遮断されることにより、基準電圧が停電予告電圧より低くなった時に、電源基板が発する信号である。
【００７０】
主制御側電源断時処理では、ＣＰＵ１１１はまず割り込み禁止設定を行う（ステップＳ５６）。ＲＡＭ１１６のチェックサムを算出している最中に、主制御側タイマ割り込み処理が行われてＲＡＭ１１６への書き込みがなされることを防ぐためである。
ＣＰＵ１１１は、次に停電クリア信号を出力する（ステップＳ５８）。また、遊技盤面に設置された種々のソレノイドやランプ等に出力している駆動信号を停止する。
そして、ＲＡＭ１１６の遊技情報に基づいてチェックサムを算出し（ステップＳ６０）、バックアップフラグＢＫに値１をセットする（ステップＳ６２）。これによりバックアップ情報の記憶が完了する。
【００７１】
本実施例では、主制御側電源断時処理時には、以下に示す理由により、レジスタをバックアップする必要はない。つまり、実施例では、主制御側ループ処理のステップＳ５２で、停電予告信号の状態を確認し、この信号が停電となる状態を示している場合に主制御側電源断時処理へ分岐している。停電となる状態とは、例えば、停電時にハイ、非停電時にロウとなる停電予告信号を用いる場合には、停電予告信号がハイとなることを意味する。このように、実施例では、予め決められた条件で、主制御側電源断時処理に移行するため、移行に際して、ループ処理や割込処理が中断されることがない。従って、実施例では、主制御側電源断時処理内でレジスタの内容をＲＡＭ１１６に退避する必要がないのである。本実施例の方法によれば、電源投入時に、スタックエリアの情報については、正しいか否かを判断する必要がないため、ＣＰＵ１１１の処理負荷が軽減される利点がある。
【００７２】
本実施例の態様に対し、停電予告信号が停電となる状態を示している場合に、ノン・マスカブル・インタラプト信号をＣＰＵ１１１に入力し、不定期で主制御側電源断時処理を開始できるように構成してもよい。この場合には、主制御側電源断時処理を開始するタイミングに応じてレジスタの内容が変化する。従って、主制御側電源断時処理では、レジスタの内容をＲＡＭ１１６にバックアップしておくことが好ましい。また、チェックサムは、このバックアップした値も含めて求めることが好ましい。
【００７３】
その後、ウォッチドックタイマの初期化を行って（ステップＳ６４）、無限ループに入ると、電源が遮断されることによりＣＰＵ１１１の動作は停止する。但し、電源が遮断されない場合には、無限ループ内で、ウォッチドックタイマが初期化されなくなるため、所定時間経過後にＣＰＵ１１１にリセットがかかり、ＣＰＵ１１１は主制御側電源投入時処理（ステップＳ１０以降）から再び行う。
【００７４】
本実施例では、主制御側電源投入時処理および主制御側電源断時処理の双方でチェックサムを算出している（ステップＳ３０、Ｓ６０）。チェックサムは、サブルーチンを用いることなく、それぞれ主制御側電源投入時処理および主制御側電源断時処理内に直接組み込んでもよいが、双方で共通に用いられるサブルーチンとしておくことが好ましい。こうすることにより、プログラム容量を低減することができる。
チェックサムは、種々の方法で算出可能である。また、精度向上を図るため、異なる２種類以上の演算方法を併用するようにしてもよい。例えば、加算、減算を交互に繰り返す方法を採ることができる。別の態様として、加算方式でチェックサムを算出し、結果が一致していた場合には、減算方式など別の方法で算出して、再度、確認するようにしてもよい。
【００７５】
チェックサムの算出には、ＲＡＭ１１６の任意の情報を用いることが可能であるが、ワーク内の２バイト以上の情報を含めることが好ましい。こうすることにより、最も重要な情報を用いて整合性を確認することができる。
また、主制御側電源断時処理の実行タイミングが一定ではなく、ノン・マスカブル・インタラプトによって不定期に実行される場合のように、主制御側電源断時処理の実行時にレジスタの情報もＲＡＭ１１６のスタックに退避しておく場合には、ワークとスタックエリア用の双方の情報を利用してチェックサムを算出することが好ましい。例えば、ワークの情報と、スタックエリアの情報を用いて、それぞれチェックサムを算出してもよいし、双方の情報を混在させてチェックサムを算出してもよい。
【００７６】
また、本実施例では、ＲＡＭ１１６の内容はバッテリによって保持されるため、チェックサムを算出するだけでバックアップ処理を完了している（ステップＳ６０、Ｓ６２）。これに対し、ＲＡＭ１１６内に、バックアップ用の領域を設け、ワークの全部または主要な部分の情報を併せて退避しておくようにしてもよい。こうすることで、制御上の重要な情報をより確実にバックアップすることが可能となる。
バックアップ領域には、例えば、ワーク等の情報を、ビット反転させて格納してもよい。こうすることによって、本来のワークの値と、バックアップ領域の値との排他的論理和（ＸＯＲ）がＦＦＨとなれば、これらのデータは正常であると容易に判断することが可能となる。
【００７７】
バックアップ領域にバックアップ情報を格納する処理は、例えば、主制御側電源断時処理内で行うことができる。また、主制御側メイン処理のループ内で行うようにしてもよい。主制御側メイン処理のループ内で行う場合には、バックアップ情報の格納時にワークの情報が変わってしまうことを避けるため、割込禁止とした上で格納を行うことが好ましい。
主制御側メイン処理のループ内でバックアップ情報の格納を行う場合、無駄な処理を抑制するため、一旦、バックアップ情報の格納が行われた後は、主制御側タイマ割り込み処理が行われるまで、情報の格納を省略するようにしてもよい。同様の効果を、比較的簡易な制御処理で実現するため、主制御側メイン処理のループ内での情報の格納に代えて、主制御側タイマ割り込み処理が行われた後、主制御側メイン処理に復帰する直前にバックアップ情報を格納するようにしてもよい。こうすれば、主制御側タイマ割り込み処理が行われる度に、バックアップ情報を更新することが可能となる。
【００７８】
また、バックアップ領域を複数、設け、バックアップ情報の格納を行うたびに、これらの領域を順次、使い分けるようにしてもよい。こうすることにより、過去の複数時点でのバックアップ情報を格納することが可能となる利点がある。
【００７９】
ＲＡＭ内のバックアップ領域に退避されたワークの情報は、その後、主制御側電源投入時処理が実行された時に、次の方法で活用することができる。説明の便宜上、ここではＣＰＵ１１１が制御処理において参照するワークをメインワークと称し、バックアップ領域に退避されたワークをサブワークと称するものとする。
電源投入時には、ＣＰＵはメインワークの内容、サブワークの内容が正常か否かを、それぞれチェックサムによって確認する（図５のステップＳ３０、Ｓ３２）。メインワークの内容が正常な場合には、そのまま制御処理を続ければよい。メインワークが誤っており、サブワークが正しい場合には、サブワークの内容をメインワークに上書きして制御処理を続ける。メインワークおよびサブワークの双方が誤っている場合には、ＲＡＭクリアを行う（図５のステップＳ４０）。
こうすることによって、サブワークの情報を制御処理に有効活用することが可能となる。
サブワークの情報をメインワークに上書きした場合、サブワークの情報はそのまま放置してもよい。ＣＰＵ１１１は、制御処理においてサブワークの情報を直接参照することはないからである。ただし、ノイズ等の影響で、ＣＰＵ１１１が、サブワークに記憶されている情報を誤って参照してしまい処理に悪影響を受けるおそれが、ないとは言えないため、サブワークは初期化しておいた方が好ましい。
【００８０】
Ｃ２．主制御側タイマ割り込み処理：
図６は主制御側タイマ割り込み処理のフローチャートである。主制御基板１１０のＣＰＵ１１１によって、所定の割り込み周期（本実施形態では、４ｍｓ）ごとに繰り返し行われる処理である。
処理を開始すると、ＣＰＵ１１１は、レジスタを退避してから（ステップＳ７０）ウォッチドックタイマ初期化レジスタＷＣＬに値Ｂをセットし（ステップＳ７２）、割り込みフラグを初期化する（ステップＳ７４）。レジスタの退避は、擬似ＲＡＭ以外の領域に行う。本実施例では、スタックに退避するものとした。
以下、ＣＰＵ１１１は、図示する各処理を順次、実行する。これらの処理の実行順序は、図示した順序に限らない。
【００８１】
スイッチ入力処理（ステップＳ７６）はパチンコ機の各種スイッチの信号を入力する処理である。入力する信号としては、普通入賞口、始動入賞口、大入賞口に入球した遊技球の検出信号、賞球の払出コマンドの受信時に払出制御基板２１０が出力するＡＣＫ信号、などが挙げられる。
【００８２】
タイマ減算処理（ステップＳ７８）は、種々の時間管理に利用されるタイマ値を減算する処理である。初期値が設定されたタイマ値が、この減算処理によって４ｍｓずつ減算され、値０になることで、初期値に相当する時間の経過を検出することができる。タイマ値は、管理対象となる時間ごとに設けられている。管理対象となる時間としては、例えば、変動表示パターンに従って特別図柄表示装置４１が点灯する時間、普通図柄変動表示パターンに従って普通図柄表示器が点灯する時間、払出制御基板２１０からのＡＣＫ信号を入力するまでの所要時間などが挙げられる。
【００８３】
当落乱数更新処理（ステップＳ８０）は、遊技中に抽選等に利用される種々の乱数値を更新する処理である。本実施例では、抽選等の度に乱数を発生させる方法ではなく、種々の乱数値を値１ずつカウントアップする方法をとっている。このように乱数を規則的に変化させたとしても、入賞口への入球など、各乱数を使うことになるイベントが不規則に発生するため、十分、抽選用の乱数として機能するのである。カウントアップに加えて、乱数が一巡したときには、乱数の初期値を切り換える処理も併用している。
ここで更新される乱数としては、例えば、大当たりの判定に使用される大当たり判定用の乱数などが挙げられる。また普通図柄に関しては、普通図柄の当たり判定に使用される普通図柄当り判定用乱数などが挙げられる。
【００８４】
賞球制御処理（ステップＳ８２）は、払出制御基板２１０へのコマンド送出処理である。例えば、遊技球が入賞した時には、遊技球を払い出す旨を払出制御基板２１０に指示する賞球コマンドを作成し、払出制御基板２１０に送信する。また、払出制御基板２１０からＡＣＫ信号が所定時間内に入力されないときには、払出制御基板２１０との接続状態を確認するためのセルフチェックコマンドなどを作成し、払出制御基板２１０に送信する。
【００８５】
枠コマンド受信処理（ステップＳ８４）は、パチンコ機の枠側に取り付けられている払出制御基板２１０から送信されるコマンドを主制御基板１１０で受信する処理である。払出制御基板２１０のコマンドには、例えば賞球ユニットが球がみを起こして遊技球を払い出せないなどの異常を表す状態コマンドが挙げられる。
【００８６】
不正行為検出処理（ステップＳ８６）は、入賞口への入賞に関する異常状態を確認し報知する処理である。例えば、大当たり遊技状態でないときに大入賞口に遊技球が入球したのを検知した場合には、ＣＰＵ１１１は異常と判断して入賞異常報知コマンドを作成し、サブ制御基板３１０に出力する。
【００８７】
特別図柄及び特別電動役物制御処理（ステップＳ８８）では、ＣＰＵ１１１は、まず始動入賞口への入賞検出に応じて、大当たり判定用の乱数を予め記憶されている判定値と比較して、大当たりか否かを判定する。また、判定結果に応じて、図柄用および変動表示用の乱数値に基づいて、表示すべき図柄およびその変動パターンを決定し、その演出を行わせるための遊技演出コマンドを作成する。大当たりと判定されたときは、図柄変動の停止後に遊技盤の大入賞口の開閉板を開閉動作させる駆動信号を出力する。
【００８８】
普通図柄及び普通電動役物制御処理（ステップＳ９０）でも同様に、ＣＰＵ１１１は、普通図柄当り判定用乱数に基づく当たり判定、普通図柄の変動制御および当たり時において入賞口の開閉翼を開閉動作させるための開閉翼ソレノイドの駆動制御を行う。
【００８９】
ポート出力処理（ステップＳ９２）は、上述の種々の処理で説明した大入賞口や普通電動役物の開閉翼ソレノイド等の信号を、主制御Ｉ／Ｏポートの出力端子から出力する処理であり、サブ統合基板コマンド送信処理（ステップＳ９４）は、上述の種々の処理で設定した演出制御用のコマンドをサブ制御基板３１０に出力する処理である。
本実施例では、ＣＰＵ１１１は、上述の各処理の実行時には、それぞれ出力すべき情報およびコマンドを設定してＲＡＭ１１６に記憶させておき、ポート出力処理およびサブ統合基板コマンド送信処理において、ＲＡＭ１１６から情報・コマンドを読み出して出力する方法をとっている。
【００９０】
ＣＰＵ１１１は、以上の処理を終えた後、ウォッチドックタイマ初期化レジスタＷＣＬに値Ｃをセットする（ステップＳ９６）。この処理、ステップＳ７２の処理、および主制御側メイン処理（図５のステップＳ５０）によって、ウォッチドックタイマ初期化レジスタＷＣＬには、値Ａ、値Ｂそして値Ｃが順にセットされるため、ウォッチドックタイマが初期化される。
【００９１】
主制御側タイマ割り込み処理が開始された時点で、ＣＰＵ１１１は、汎用レジスタの内容をスタックに積んで退避させる。従って、以上の処理を完了すると、ＣＰＵ１１１は、スタックに積んで退避した内容を読み出し、もとのレジスタに書き込むことによって、レジスタの復帰を行い（ステップＳ９８）、割り込み許可の設定を行って、このルーチンを終了する。
【００９２】
Ｃ３．サブ統合側処理：
サブ制御基板３１０は、主制御基板１１０からのコマンドに応じて、種々の演出制御を行う。
図示を省略するが、サブ制御基板３１０が実行する処理も、主制御側メイン処理（図５）と同様のループと、主制御側タイマ割り込み処理（図６）と同様の割込処理から構成される。サブ制御基板３１０は２ｍｓ周期で割り込み処理を実行するとともに、１６ｍｓ周期で「１６ｍｓ定常処理」を実行する。
この１６ｍｓ定常処理では、主制御基板１１０からの各種コマンドを解析するコマンド解析処理、パネル装飾ランプ１２、枠装飾ランプ３１（図１参照）の点灯制御を行うランプ処理、演出用の音声や警報音などの出力処理、装飾図柄制御基板３５０を介してＬＣＤ１６に演出用の画面を表示させる処理、これらの処理が正常に行われていることを監視するウォッチドックタイマ処理、および役物の駆動パターンをスケジューラにセットする処理等を行う。
【００９３】
サブ制御基板３１０は、１６ｍｓ定常処理を繰り返し実行する他、種々の割り込み処理を行う。かかる割り込み処理としては、２ｍｓタイマ割り込み、コマンド受信割り込み処理、コマンド受信終了割り込み処理があげられる。
【００９４】
Ｃ４．払出制御基板の制御処理：
払出制御基板２１０は、主制御基板１１０からの指示に従って、遊技媒体の払い出しを制御する。
払出制御基板２１０が実行する制御処理は、主制御基板１１０と同様、ループ状のメイン処理とタイマ割込処理とから構成することも可能であるが、本実施例では、メイン処理内で払出に必要な処理を繰り返し実行するものとした。
【００９５】
Ｄ．プログラム容量削減効果：
実施例で説明した種々の制御処理において、主制御基板１１０が出力する種々のコマンドは、一旦、ＲＡＭ１１６に蓄えられた後、所定のタイミングでＲＡＭ１１６から読み出されて出力される。また、制御処理で用いられる種々のフラグや、情報もＲＡＭ１１６上に構築されたワークを利用して管理されている。
このように、実施例の制御処理では、ＲＡＭ１１６に頻繁にアクセスが行われる。
【００９６】
本実施例では、主制御基板１１０のＣＰＵ１１１は、それぞれＲＡＭ１１６に対して、ロード／ストアコマンドおよびイン／アウトコマンドの双方でアクセスすることができる。このように擬似ＲＡＭは、イン／アウトコマンドでアクセスできる分、アクセス１回につき１バイトずつプログラム容量を削減することができる。プログラム中に擬似ＲＡＭへのイン／アウトコマンドでのアクセス箇所が増えるほど、プログラム容量の削減効果は大きくなる。
【００９７】
図７は擬似ＲＡＭの効果を示す説明図である。ある遊技機において、擬似ＲＡＭの有無でのプログラム容量の変化を比較して示した。
最上段は、擬似ＲＡＭを設けない場合である。つまり、ＲＡＭへのアクセスは、全てロード／ストアコマンドによって行われる場合を示している。この時の容量は５５０バイト強となっている。
２〜４段目は、擬似ＲＡＭを設けた場合である。それぞれ擬似ＲＡＭの容量を６４バイト、１２８バイト、１９２バイトに変化させた場合を示した。図示する通り、プログラムの容量は、擬似ＲＡＭが６４バイトの場合に１０％、１２８バイトの場合に１８％、１９２バイトの場合に３１％削減される。
このように、本実施例によれば、イン／アウトコマンドでＲＡＭへのアクセスを可能とする回路、つまりエリア区分判定部１２０を設けることによって、プログラムの容量を削減することが可能となる。ＲＡＭへのアクセスコマンド一つ当たりの削減量は１バイトに過ぎないが、頻繁に使用されるコマンドであるため、制御プログラム全体では、大きな削減効果を生むことができるのである。
【００９８】
Ｅ．制御プログラム開発支援装置：
Ｅ１．装置構成：
本実施例の主制御基板１１０は、以上で説明した通り、擬似ＲＡＭ領域、即ちイン／アウトコマンドでメモリアクセスできる領域を有している。このため、制御プログラムの開発時には、開発者は、メモリアクセスの先が、擬似ＲＡＭ領域か否かを考慮して、ロード／ストアコマンドおよびイン／アウトコマンドの使い分けを考慮した上で制御プログラムのコーディングを行う必要がある。そこで、本実施例では、制御プログラムの開発時における、コマンドの使い分けを考慮する負担を軽減するため、以下に示す、制御プログラムの開発支援装置を用いるものとした。
【００９９】
開発支援装置は、開発者が擬似ＲＡＭ領域を考慮することなくコーディングしたアセンブリ言語の制御プログラムを読み込み、擬似ＲＡＭ領域を考慮して、オブジェクトコードを生成する装置である。オブジェクトコードの生成にあたって開発支援装置は、入力した制御プログラム内のメモリアクセスに関する命令について、擬似ＲＡＭ領域を考慮して、ロード／ストアコマンドかイン/アウトコマンドのいずれか好適な命令に変換する。そして、変換後の制御プログラムを元にオブジェクトコードを生成する。
擬似ＲＡＭ領域を考慮してロード／ストアコマンドかイン/アウトコマンドを使い分ける作業は、開発支援装置が行うために、開発者はこれらのコマンドの何れが適しているかを意識・判断することなく制御プログラムのコーディングを行うことができるという利点がある。
【０１００】
図８は開発支援装置５００の構成を示す説明図である。本実施例では、汎用のパーソナルコンピュータに、図示する種々の機能ブロックを実現するコンピュータプログラムをインストールすることによって、ソフトウェア的に構築する例を示す。開発支援装置５００は、図示する機能ブロックの少なくとも一部をハードウェア的に構成してもよい。
【０１０１】
コマンド入力部５０２は、キーボード、マウスなどの操作を介して開発者からの指示を入力する。この機能は、パーソナルコンピュータのＯＳ（Operating System）で提供される機能を利用してもよい。入力される指示としては、例えば、擬似ＲＡＭ領域を指定するエリア区分データや、擬似ＲＡＭ領域を考慮したコマンドの使い分けを行う際の機能の指定などが挙げられる。コマンド入力部５０２からの指示は、図示する各機能ブロックに関連するが、図示の煩雑化を回避するため、図中では、エリア区分データ管理部５０４への伝達のみを矢印で示した。
【０１０２】
エリア区分データ管理部５０４は、開発者から指定されたエリア区分データを保持し、ワーク最適化部５０８、コマンド変換部５１２、アセンブラ５１４などに受け渡す機能を奏する。本実施例では、図３に示した通り、擬似ＲＡＭ領域はＲＡＭ１１６の先頭アドレスを含む範囲となっている。従って、エリア区分データとしては、開発者は擬似ＲＡＭ領域の終端を入力すれば足りる。終端の実アドレスを入力してもよいし、先頭アドレスからの相対アドレス、即ち擬似ＲＡＭ領域のサイズを入力してもよい。
ただし、オブジェクトコードを生成する際には、ＲＡＭ１１６の実アドレスが必要となる。本実施例では、エリア区分データ管理部５０４は、予めＲＡＭ１１６、ＲＯＭ１１４および入出力ポートのアドレス領域に関する情報を予め保持しておくものとした。もちろん、これらの情報を、開発支援装置５００の稼働時に開発者が入力するようにしてもよいし、処理対象となる制御プログラム中に記載しておくものとしても構わない。
【０１０３】
ソース入力部５０６は、アセンブリ言語で記述された制御プログラム（以下、「ソース」と呼ぶ）を読み込む。ソースは、機械語以外の言語で記述されたものであればよく、例えば、Ｃ言語などの高級言語で記述されていてもよい。
ソースは、開発支援装置５００に別途インストールされたプログラムエディタを利用して作成されたものを読み込むようにしてもよいし、ネットワークまたは記録媒体経由で外部から入力するようにしてもよい。
【０１０４】
ワーク最適化部５０８は、ソースに記述された種々の命令の中から、ＲＡＭ１１６へのアクセスを伴う命令を抽出し、擬似ＲＡＭ領域が有効に活用されるよう、各アクセス命令に対してＲＡＭ１１６上の実アドレスを割り当てる機能（以下、「最適化処理」と呼ぶ）を奏する。最適化処理の詳細な内容は、後述する。最適化されたソースは、コマンド変換部５１２に受け渡される。
最適化処理はオプションであり、開発者が最適化不要を指示している場合には、ワーク最適化部５０８は、ソースをそのままコマンド変換部５１２に受け渡す。コマンド変換部５１２が、ソース入力部５０６から、直接、ソースを受け取るように構成してもよい。
【０１０５】
コマンド変換部５１２は、ソースに記述された命令のうち、ＲＡＭ１１６へのアクセスを伴う命令について、エリア区分データに基づいて、アクセス先が擬似ＲＡＭ領域か否かを判断する。そして、アクセス先が擬似ＲＡＭ領域の場合には、イン／アウトなどの入出力ポートアクセスコマンドへの変換を行う。擬似ＲＡＭ領域でない場合には、ロード／ストアコマンドなどのメモリアクセスコマンドをそのまま用いる。コマンド変換部５１２は、コマンド変換後のソースをアセンブラ５１４に受け渡す。
【０１０６】
アセンブラ５１４は、受け取ったソースに基づき、アセンブリ言語の各命令を機械語に変換して、オブジェクトコードを生成する。この際に必要となるＲＡＭ１１６、ＲＯＭ１１４、入出力ポートの実アドレスは、エリア区分データ管理部５０４から受け取る。ソース中に記載しておくものとしてもよい。
開発支援装置５００には、この他、主制御基板１１０のブート用のデータを生成する機能を持たせても良い。先に説明した通り、本実施例では、起動時にＲＯＭ１１４からエリア区分データを読み込み、エリア区分判定部１２０内に設定する（図２参照）。このブート用のデータを生成する機能をアセンブラ５１４に用意するのである。開発者が擬似ＲＡＭ領域を指定可能な場合には、こうしておくことにより、オブジェクトコードの作成時に使用されたエリア区分データと、ブート用のデータに組み込まれるエリア区分データとの間に誤って不整合が生じることを回避することができる利点がある。また、不整合が生じた場合には、ワーニングを出力するようにしてもよい。
【０１０７】
表示制御部５１０は、ワーク最適化部５０８、コマンド変換部５１２、アセンブラ５１４などによって生成されるソースの表示などを行う。図の煩雑化を回避するため、他の機能ブロックとの関係は省略しているが、表示制御部５１０は、種々の機能ブロックから情報を受け取って表示させることが可能であり、例えば、コマンド入力用の画面の提示などを行っても良い。表示制御部５１０は、パーソナルコンピュータのＯＳで提供される機能を利用してもよい。
【０１０８】
結果出力部５１６は、以上の各機能ブロックからの処理結果を出力する。本実施例では、プリントファイル、オブジェクトファイル、クロスリファレンス、シンボルファイルなどを出力するものとした。変換後のソースプログラム、変換効率を示すデータなどを出力するようにしてもよい。変換効率とは、メモリアクセスコマンドから入出力ポートアクセスコマンドへの変換によるプログラム容量の削減効率を表すデータである。開発者は、変換効率を参照して、擬似ＲＡＭ領域の設定に活かすことができる。
オブジェクトファイルは、既に説明した通り、ソースを機械語に変換したファイルである。
プリントファイルとは、ソースに対して、実アドレスおよび機械語を付加したファイルである。オブジェクトファイルのデバッグなどに利用可能である。プリントファイルには、アセンブラ５１４が受け取るソース、つまり擬似ＲＡＭ領域を考慮してイン／アウトコマンドへの変換が行われたソースを用いるものとした。ソース入力部５０６が入力したソースから変換された箇所に、アンダーラインを付すなどして、変換されたことを開発者が視覚的に認識可能な形式で出力するものとしてもよい。
クロスリファレンスとは、プリントファイル上で、指定されたラベルが記載された箇所、例えば行番号を示すファイルである。開発者が、プリントファイルを参照する際に活用可能である。
シンボルファイルとは、指定したラベルの実アドレス等の数値を示すファイルである。各ラベルの擬似ＲＡＭ領域等への割り当てが適切に行われているか否かを点検するために活用可能である。
【０１０９】
Ｅ２．オブジェクトコード生成処理：
図９はオブジェクトコード生成処理のフローチャートである。開発支援装置５００のＣＰＵが、実行する処理である。
処理を開始すると、ＣＰＵは、まず開発者からの指示を入力する（ステップＳ１００）。入力すべき指示としては、例えば、ソースの指定、エリア区分データ、および最適化処理の要否、最適化をする場合には、そのオプションなどが挙げられる。最適化のオプションの内容については、後述する。
【０１１０】
ＣＰＵは開発者から最適化を指示された場合には（ステップＳ１０２）、最適化処理を実行する（ステップＳ１１０）。最適化処理は、先に説明したワーク最適化部５０８（図８参照）の機能に相当する処理であり、ソースにおいてＲＡＭ１１６へのアクセスを伴う命令に対し、擬似ＲＡＭ領域が有効に活用されるようＲＡＭ１１６上の実アドレスを割り当てる処理である。最適化処理の内容は後述する。
【０１１１】
次に、ＣＰＵはソースを読み込み（ステップＳ１９０）、メモリアクセスコマンド変換処理を行う（ステップＳ２００）。最適化処理が行われている場合には、ステップＳ１９０では、最適化されたソース（以下、「最適化ソース」と呼ぶ）を読み込む。
メモリアクセスコマンド変換処理（ステップＳ２００）とは、先に説明したコマンド変換部５１２（図８参照）の機能に相当する処理であり、ソース内のＲＡＭ１１６へのアクセスを伴う命令のうち、擬似ＲＡＭ領域にアクセスする命令を、イン／アウトなどの入出力ポートアクセスコマンドに変換する処理である。この変換処理を経たソースを、以下、「変換ソース」と呼ぶものとする。メモリアクセスコマンド変換処理の内容は後述する。
【０１１２】
ＣＰＵは、以上の処理によって生成された変換ソースに基づいて、アセンブリ言語を機械語に変換するアセンブルを行い（ステップＳ３００）、図８で示した６種類のファイルを結果を出力して（ステップＳ３０２）、処理を終了する。
【０１１３】
Ｅ３．最適化処理：
図１０は最適化処理のフローチャートである。オブジェクトコード生成処理（図９）のステップＳ１１０に相当する処理であり、ＲＡＭ１１６へのアクセス命令に対して、擬似ＲＡＭ領域が有効に活用されるようＲＡＭ１１６上の実アドレスを割り当てる処理である。
【０１１４】
ＣＰＵはまずソースを読み込み（ステップＳ１１２）、メモリアクセスコマンドを抽出する（ステップＳ１１４）。例えば、メモリからのデータの読み出しを表す命令としてロードコマンド、メモリへのデータの格納を表す命令としてストアコマンドが用いられている場合には、アセンブリ言語のソースから、これらのコマンドを抽出するのである。抽出したコマンドには、ラベルまたは実アドレスの形で、ＲＡＭ１１６へのアクセス先が指定されている。
【０１１５】
次に、ＣＰＵはブロックごと、またはラベルごとのメモリアクセス数をカウントする（ステップＳ１１６）。
図中にカウントの例を示した。例えば、ロードコマンドまたはストアコマンドで、ａ、ｂ、ｃ、ｄ等のラベルが指定されている場合、まずラベルごとにアクセス数をカウントする。図の例では、ラベルに「ａ」が指定されているロードコマンドまたはストアコマンドは１つであることを表している。同様にラベルｂ、ｃ、ｄはそれぞれ８、３，１０個であることを表している。
こうして得られた結果に基づいて、次にブロック単位でのアクセス数を計数する。ブロックとは、複数のラベルからなるまとまりであり、本実施例では、いずれのラベルをブロックとして構成するかを、開発者が指示入力（図９のステップＳ１０）において最適化のオプション指示の一つとして指示するものとした。
制御プログラム中では、ラベルが連続したアドレス領域に格納されることを前提として処理が組まれている場合がある。このようなラベルについて、ＲＡＭ１１６への実アドレスが連続して割り当てられるよう指示しておくのがブロックである。ブロックとして指定することにより、最適化処理においては、後述する通り、ブロック単位として扱われるため、ブロック内のラベルに対して分散した実アドレスが割り当てられることを回避できる。ブロックは、このように、まとめて扱う必要性を考慮して開発者が任意に設定可能である。
図中の例では、ラベルａ、ｂ、ｃが一つのブロックとして指定されているものとする。ＣＰＵは、このブロックのアクセス数は、ラベルａ〜ｃの各アクセス数の合計である１２であると計数する。ラベルｄについては、ブロックとして指定されていないため、単体のアクセス数１０をブロックのアクセス数に相当するものとして扱う。
ここでは、アクセス数の評価値として、各ブロック内のアクセス数の合計値を用いる場合を例示したが、各ブロックに属するラベルごとのアクセス数の最大値を用いるようにしてもよい。
【０１１６】
次に、ＣＰＵは、各ラベルに対して擬似ＲＡＭ領域を割り当てるための処理を行う。まず、ＣＰＵはステップＳ１１６の計数結果を参照し、アクセス数が最大のブロックまたはラベルを、処理対象として選出する（ステップＳ１１８）。ここで言うラベルとは、ブロックを構成せず単一でアクセス数が計数されたラベルのことを意味する。
そして、ＣＰＵは対象ラベルに擬似ＲＡＭ領域を割り当てる（ステップＳ１２０）。図中にラベルの割り当て例を示した。図の例では、ラベルｅのアクセス数が１５で最大となっているから、ＣＰＵは、まずラベルｅに擬似ＲＡＭ領域を割り当てることになる。
【０１１７】
ＣＰＵは、以上の処理を、全ラベルについて割り当てが終了するまで、または擬似ＲＡＭ領域が完全に埋まるまで（ステップＳ１２２）、対象ラベルを更新しながら（ステップＳ１２４）、繰り返し実行する。
例えば、ラベルｅを割り当てた後は、まだ擬似ＲＡＭ領域に余裕がある場合には、対象ラベルを更新する（ステップＳ１２４）。ここでは、ラベルｅの次にアクセス数が多いブロックまたはラベルが処理対象として選出される。図の例では、ラベルａ、ｂ、ｃからなるブロックが処理対象となる。そして、ステップＳ１２０中に示すように、ＣＰＵは、ブロック内の各ラベルに対して擬似ＲＡＭ領域を割り当てる。その後、また対象ラベルを、次にアクセス数の多いラベルｄに更新し（ステップＳ１２４）、同様にして擬似ＲＡＭ領域を割り当てる。
【０１１８】
以上の例では、各ラベルに支障なく擬似ＲＡＭ領域が割り当てできる場合を示した。擬似ＲＡＭ領域の残容量によっては、ラベルａ、ｂ、ｃからなるブロックへの割り当てができない場合も生じる。かかる場合には、ＣＰＵはラベルの割り当てをせずにステップＳ１２０を終了すればよい。この時点で、擬似ＲＡＭ領域に残容量があり、割り当て未了のラベルがあれば、処理は終了とならず（ステップＳ１２２）、ＣＰＵは次にアクセス数が多いラベルｄに、対象ラベルを更新し（ステップＳ１２４）、擬似ＲＡＭの割り当てを行う（ステップＳ１２０）。このように、擬似ＲＡＭ領域の残容量不足の場合でも、処理を継続することによって、擬似ＲＡＭ領域を無駄に残さずに割り当てることが可能となる。
【０１１９】
ＣＰＵは、以上の処理によって、割り当てが完了すると（ステップＳ１２２）、最適化されたソース（最適化ソース）を出力して（ステップＳ１２６）、最適化処理を終了する。先に図９で説明した通り、この最適化ソースがメモリアクセスコマンド変換処理およびアセンブルに供されることになる。
【０１２０】
Ｅ４．メモリアクセスコマンド変換処理：
図１１はメモリアクセスコマンド変換処理のフローチャートである。オブジェクトコード生成処理（図９）のステップＳ２００に相当する処理であり、ソース内のＲＡＭ１１６へのアクセスを伴う命令のうち、擬似ＲＡＭ領域にアクセスする命令を、イン／アウトなどの入出力ポートアクセスコマンドに変換する処理である。
【０１２１】
処理を開始すると、ＣＰＵはソース中の最初のコマンドを読み込む（ステップＳ２０２）。そのコマンドがメモリアクセスコマンドでない場合には（ステップＳ２０４）、ソースの最後まで処理が終了していなければ（ステップＳ２１８）、以下で説明する処理を行うことなく、次のコマンドに移行する。
【０１２２】
メモリアクセスコマンドの場合には（ステップＳ２０４）、そのラベルに実アドレスが割り当て済みか否かを判定する（ステップＳ２０６）。最適化処理（図１０）において擬似ＲＡＭ領域に割り当てられたラベル、ソースにおいてアクセス先がもともと実アドレスで指定されている場合、およびメモリアクセスコマンド変換処理の従前の処理で実アドレスが割り当てられたラベルの場合には、割り当て済みと判断される。
割り当てが未了のラベルに対しては（ステップＳ２０６）、ＣＰＵは、擬似ＲＡＭ領域に空き領域があれば（ステップＳ２０８）、擬似ＲＡＭ領域を割り当て（ステップＳ２１０）、空きがない場合には（ステップＳ２０８）、通常領域、つまりＲＡＭ１１６のうち、擬似ＲＡＭ領域以外の領域の実アドレスを割り当てる（ステップＳ２１２）。
このように擬似ＲＡＭ領域に空きがある限り、擬似ＲＡＭ領域を優先的に割り当てることによって、擬似ＲＡＭ領域を無駄なく活用することができる。また、こうすることによって、ワークの連続性を確保することができる利点もある。先に説明した通り、遊技機では不正防止の観点からメイン制御装置での制御処理で使用するワークをＲＡＭ１１６の先頭アドレスから連続した領域に設けることとしている。本実施例では先頭アドレスを含む領域に擬似ＲＡＭ領域を配置しているため、ワークの連続性を確保するためには、擬似ＲＡＭ領域の空き領域への割り当てを優先することが好ましいのである。
割り当てがなされているラベルの場合には（ステップＳ２０６）、上述の割り当て処理（ステップＳ２０８〜Ｓ２１２）はスキップする。
また、図９のステップＳ１００において最適化が指示され、図９のステップＳ１１０で最適化処理が行われている場合には、図１１のステップＳ２０８〜Ｓ２１２の処理は省略してもよい。これらは、最適化処理と実質的に同様な処理だからである。
【０１２３】
ＣＰＵは、次に、割り当てられた実アドレスに基づき、擬似ＲＡＭ領域へのアクセスか否かを判断する（ステップＳ２１４）。擬似ＲＡＭ領域のアドレスは、予め入力されたエリア区分データ（図９のステップＳ１００）で指定されているから、各ラベルの実アドレスが、エリア区分データで指定された範囲内にあれば、擬似ＲＡＭ領域へのアクセスであると判断される。
擬似ＲＡＭ領域へのアクセスの場合には（ステップＳ２１４）、ＣＰＵは、メモリアクセスコマンドを入出力ポートアクセスコマンドに変換する（ステップＳ２１６）。図中に、変換例を示した。変換前のソースＳＣ１において、「ＬＤ  Ａ，（ａ）」は、ＣＰＵ内のアキュムレータＡに、ラベルａのアドレスが示すメモリの値を設定することを表すコマンドである。ラベルａには擬似ＲＡＭ領域が割り当てられているとすると、ＣＰＵは、変換後のソースＳＣ２に示すように、ロード（ＬＤ）コマンドをイン（ＩＮ）コマンドに変換する。この結果、コマンドは、「ＩＮ  Ａ，（ａＬ）」となる。ここで、ラベルの後に付した「Ｌ」は下位アドレスであることを意味する。つまり、ａＬは、ラベルａで表されるアドレス値の下位アドレスとなる。以下、同様に下位アドレスにはＬを付して示すものとする。
ラベルｂも擬似ＲＡＭ領域が割り当てられているとすると、同様に、アキュムレータＡの値をラベルｂにストアすることを表す「ＳＴ  Ａ，（ｂ）」というコマンドは、アウト（ＯＵＴ）コマンドに変換され、「ＯＵＴ  Ａ，（ｂＬ）」となる。
擬似ＲＡＭ領域へのアクセスでない場合には（ステップＳ２１４），上述の変換処理はスキップされる。ソースＳＣ１中のラベルｆには通常領域が割り当てられているとすると、「ＬＤ  Ｂ、（ｆ）」というコマンドについては、変換処理がスキップされるため、変換後のソースＳＣ２においても、同じコマンドのまま残される。
【０１２４】
ＣＰＵは、以上の処理を、ソースの全コマンドについて終了するまで（ステップＳ２１８）、繰り返し実行した後、コマンド変換したソース（変換ソース）を出力して（ステップＳ２２０）、この処理を終了する。生成されたソースは、先に説明した通り、アセンブル処理（図９のステップＳ３００）によって、オブジェクトコードに変換される。
【０１２５】
以上で説明した本実施例の開発支援装置５００によれば、開発者は、アクセス先が擬似ＲＡＭ領域か否かを意識することなく制御プログラムを開発することができる。従って、制御プログラムの開発効率を向上させることができ、メモリアクセスコマンドと入出力ポートアクセスコマンドの使い分けの誤りによるエラーが生じる可能性を抑制することができる。
また、本実施例における最適化処理を施すことにより、擬似ＲＡＭ領域が無駄なく活用されるよう、ラベルへの割り当てを行うことが可能となる。この結果、入出力ポートアクセスコマンドを用いることによるプログラムサイズの削減効果を十分に得ることが可能となる。
【０１２６】
Ｅ５．オブジェクトコード生成処理の変形例：
実施例では、メモリアクセスコマンド変換処理（図１１）において、一旦、メモリアクセスコマンドを入出力ポートアクセスコマンドに変換した変換ソースを出力した上で、アセンブルする例を示した。オブジェクトコードは、入出力ポートアクセスコマンドへの変換と機械語への変換を並行して行うことにより、変換ソースの生成を経ずに、生成するようにしてもよい。変形例では、かかる処理例を示す。
【０１２７】
図１２は変形例としてのオブジェクトコード生成処理のフローチャートである。
処理を開始すると、ＣＰＵは実施例と同様、指示を入力し（ステップＳ１００）、最適化処理が指示されている場合には（ステップＳ１０２）、最適化処理を行って最適化ソースを生成する（ステップＳ１１０）。
その後、メモリアクセスコマンド変換処理（図１１）およびアセンブル（図９のステップＳ３００）に相当する処理を実行するが、変形例では、これらの処理を並行して行うことにより、変換ソースを生成せずにオブジェクトコードを生成する。
【０１２８】
つまり、ＣＰＵは、メモリアクセスコマンド変換処理（図１１）と同様、ソースのコマンドを読み込み（ステップＳ２０２）、メモリアクセスコマンドか否かを判断する（ステップＳ２０４）。メモリアクセスコマンドの場合において（ステップＳ２０４）、ラベルに実アドレスが割り当て済みでなければ（ステップＳ２０６）、擬似ＲＡＭ領域の空きの有無に応じて（ステップＳ２０８）、擬似ＲＡＭ領域または通常領域を割り当てる（ステップＳ２１０、Ｓ２１２）。ラベルに実アドレスが割り当て済みの場合には（ステップＳ２０６）、これらの処理はスキップする。
最適化が指示され、ステップＳ１１０の最適化処理が行われている場合には、ステップＳ２０８〜Ｓ２１２の処理は省略してもよい。これらは、最適化処理と実質的に同様な処理だからである。
【０１２９】
次に、ＣＰＵはコマンドがメモリアクセスコマンドでない場合（ステップＳ２０４）、および擬似ＲＡＭ領域へのアクセスでないメモリアクセスコマンドの場合（ステップＳ２１２）には、そのままコマンドを機械語に変換する（ステップＳＳ２３０）。
一方、擬似ＲＡＭ領域へのメモリアクセスコマンドである場合には（ステップＳ２１４）、メモリアクセスコマンドを入出力ポートアクセスコマンドとみなして、機械語に変換する（ステップＳ２３２）。図１１中に示した例に沿って説明すると、「ＬＤ  Ａ、（ａ）」というコマンドについては、擬似ＲＡＭ領域へのアクセスであるため、「ＩＮ  Ａ，（ａＬ）」であるとみなして、機械語への変換を行うのである。こうすることによって、入出力ポートアクセスコマンドに変換した変換ソースを生成するまでなく、擬似ＲＡＭ領域か否かによってメモリアクセスコマンドと入出力ポートアクセスコマンドとの使い分けを反映したオブジェクトコードを生成することができる。
【０１３０】
ＣＰＵは、以上の処理を、ソースの全コマンドについて終了するまで（ステップＳ２３４）、繰り返し実行し、結果を出力して（ステップＳ２３６）、オブジェクトコード生成処理を終了する。結果の出力は、実施例と同様の４種類のファイルとすることができる。但し、実施例では、プリントファイルに変換ソースを出力するものとしたが、変形例ではオリジナルのソースまたは最適化ソースを用いることになる。これらのソースにおいて、入出力ポートアクセスコマンドに変換された箇所を開発者が、容易に認識できるようにするため、入出力ポートアクセスコマンドに対応する機械語にアンダーラインを付すなどして視覚的に識別しやすい出力形式をとってもよい。
【０１３１】
Ｆ．主制御基板１１０の変形例：
パチンコ機１の制御基板の回路構成は、以下に示す通り、種々の変形例が可能である。ここでは、主制御基板１１０の変形例を示すが、払出制御基板２１０についても同様の変形例が適用可能である。
Ｆ１．回路構成の変形例（１）：
図１３は主制御基板の変形例（１）を示す説明図である。実施例では、ＩＯにアクセスするためのアドレス空間を確保しておく必要上、擬似ＲＡＭ領域は、８ビットのアドレス空間の一部にとどまる例を示した。変形例では、８ビットのアドレス空間全体を擬似ＲＡＭ領域とすることができる回路例を示す。
【０１３２】
変形例の回路では、メモリエリアデコーダ１１３ＡおよびＩＯデコーダ１２２の構成が、実施例（図２）と相違する。その他の構成は、実施例と同じであるため説明を省略する。
メモリエリアデコーダ１１３Ａは、アドレスに基づいてアクセス先がＲＯＭ、ＲＡＭ、ＩＯ領域（受信バッファ１２３ｒ、送信バッファ１２３ｓ）のいずれに当たるかを判断し、それぞれチップセレクタ信号ＭＣＳ２、ＭＣＳ１、およびＭＩＯＣＳ１、ＭＩＯＣＳ２を出力する。ここでは２種類のＩＯを備える例を示したが、更に多くのＩＯを設けても良い。この場合には、メモリエリアデコーダ１１３Ａから、各ＩＯに対してチップセレクタ信号が接続される。
【０１３３】
変形例の構成では、エリア区分判定部１２０は実施例と同様の機能を果たす（図２、図３参照）。つまり、イン／アウトコマンドが入力された時、指定された８ビットのアドレス値と、エリア区分データ１２１とを比較して、アクセス先がＩＯか擬似ＲＡＭ領域かを判定し、ＩＯエリア識別信号またはチップセレクタ信号ＭＣＳ０を出力する。
【０１３４】
変形例の構成によれば、実施例と同様に、８ビットのアドレス空間の一部を擬似ＲＡＭ領域に割り当てることができる。この場合には、イン／アウトコマンドが入力された時に、エリア区分判定部１２０がアクセス先を切り換える機能を果たすことになる。
【０１３５】
変形例では、更に、８ビットのアドレス空間全体を擬似ＲＡＭ領域に割り当てることも可能となる。エリア区分データ１２１に、「ＦＦＨ」、つまり８ビットのアドレス空間の最大値を設定しておけば、エリア区分判定部１２０は無条件に擬似ＲＡＭ領域へのアクセスが要求されているものと判断するようになり、アドレスバスＡ７〜Ａ０によって確保し得るＲＡＭ１１６の擬似ＲＡＭ領域全体にアクセスすることが可能となる。
この時、ＩＯへのアクセスはロード／ストアコマンドによって確保される。メモリエリアデコーダ１１３Ａにおいて、ＲＡＭの全領域を除く範囲にＩＯ領域を設定しておけばよい。具体的には、アドレス空間の上位の所定ビットの差異によって、ＲＡＭ１１６、ＲＯＭ１１４、ＩＯ領域を規定することになる。こうしておけば、ＲＡＭ１１６，ＩＯのそれぞれに対して、下位８ビット分のアドレスを確保することができる。
【０１３６】
ＩＯへのアクセスを行う場合、ＣＰＵ１１１がＩＯ領域に対応するアドレスを指定してロード／ストアコマンドを出力すると、メモリエリアデコーダ１１３Ａはアクセス先がＩＯであると判断してチップセレクタ信号ＭＩＯＣＳ１、ＭＩＯＣＳ２のいずれかをアクティブにする。この結果、指定されたＩＯにアクセスすることが可能となる。
【０１３７】
また、メモリエリアデコーダ１１３Ａは、アドレスＡ１５〜Ａ０の全空間に基づいてチップセレクタの出力が可能であるため、変形例の回路によれば、ＲＡＭおよびＩＯの双方にロード／ストアコマンドでアクセスすることが可能である。
また、実施例と同様、ＲＡＭ１１６の一部が擬似ＲＡＭ領域となるようエリア区分判定部１２０のエリア区分データ１２１において設定しておけば、擬似ＲＡＭ領域に対しては、イン／アウトコマンドでアクセス可能となる。この時、擬似ＲＡＭ領域に割り当てられなかった領域、つまり８ビットのアドレス空間の最後の方の領域は、イン／アウトコマンドでアクセス可能なＩＯ領域となる。
このように設定することにより、ＲＡＭ１１６およびＩＯそれぞれの一部について、ロード／ストアコマンドおよびイン／アウトコマンドの双方でアクセスすることが可能となる。
【０１３８】
このように変形例の回路によれば、ＲＡＭ１１６およびＩＯの双方について、ロード／ストアコマンド、イン／アウトコマンドの双方でのアクセスが可能となる。擬似ＲＡＭ領域を大きくすれば、イン／アウトコマンドでＲＡＭ１１６にアクセスすることができる分、プログラムの削減効果も大きくなる。しかし、一方、擬似ＲＡＭ領域を大きくすることによって、ＩＯへのアクセスにロード／ストアコマンドを使用する必要が生じると、その分、プログラムサイズが大きくなる。ＲＡＭ１１６およびＩＯへのアクセス数は、プログラムの内容によって異なるから、上述の相反する効果を考慮して、プログラムサイズを最小にすることができる最適の擬似ＲＡＭ領域のサイズもプログラムごとに求めることができる。
【０１３９】
変形例の回路構成では、ＩＯへのアクセスは、アクセス先のアドレスによっては、メモリアクセスコマンドであるロード／ストアコマンドを用いる場合が生じる。ロード／ストアコマンドでアクセスすることになるＩＯ領域を疑似ＩＯ領域と呼ぶものとする。このように疑似ＩＯ領域が設けられる場合、開発支援装置５００は、メモリアクセス変換処理（図１１）において、ＩＯへのアクセスも処理対象とすることが好ましい。つまり、入出力ポートアクセスコマンドについて、アクセス先が疑似ＩＯ領域に該当すると判断される場合には、入出力ポートアクセスコマンドをメモリアクセスコマンドに変換するのである（図１１のステップＳ２１４、Ｓ２１６参照）。
こうすることによって、開発者は、ＩＯへのアクセスについても、疑似ＩＯ領域か否かを考慮するまでなく制御プログラムの開発を行うことが可能となる。
【０１４０】
Ｆ２．回路構成の変形例（２）：
図１４は主制御基板の変形例（２）を示す説明図である。この変形例では、ＲＡＭ１１６の全領域を擬似ＲＡＭ領域とし、ＩＯへのアクセスはロード／ストアコマンドによって行う回路例を示す。
【０１４１】
図示する通り、この変形例の回路では、エリア区分判定部１２０は存在しない。ＣＰＵ１１１は、ＲＡＭ１１６にアクセスする際には、イン／アウトコマンドとともに、下位アドレスＡ７〜Ａ０を指定する。ＩＯＲＥＱは、直接、ＲＡＭ１１６のチップセレクタ信号として入力されているため、イン／アウトコマンドは無条件にＲＡＭ１１６へのアクセスを意味することになる。ＣＰＵ１１１は、イン／アウトコマンドによって、ＲＡＭ１１６の下位アドレスＡ７〜Ａ０に対応する全領域へのアクセスが可能となる。
【０１４２】
一方、メモリエリアデコーダ１１３Ｂからは、チップセレクタ信号ＩＯＣＳ１，ＩＯＣＳ２が受信バッファ１２３ｒ、送信バッファ１２３ｓにそれぞれ出力される。ＣＰＵ１１１が、ロード／ストアコマンドを出力すると、メモリエリアデコーダ１１３Ｂは、指定されたアドレスに基づいてＲＡＭ１１６、ＩＯ（受信バッファ１２３ｒ、送信バッファ１２３ｓ）のいずれへのアクセスかを判断し、チップセレクタ信号ＭＣＳ２、ＩＯＣＳ１，ＩＯＣＳ２のいずれかをアクティブにする。この結果、ＲＯＭおよびＩＯにそれぞれアクセスすることが可能となる。
【０１４３】
この変形例の回路によれば、ＲＡＭ１１６へのアクセスを全てイン／アウトコマンドで行うことができるため、プログラムサイズを削減することができる。また、エリア区分判定部１２０を設けなくてもすむ分、回路構成が簡素なもので済むという利点もある。
【０１４４】
この変形例では、ＲＡＭ１１６へのアクセスは全て入出力ポートアクセスコマンドで行い、ＩＯへのアクセスは全てメモリアクセスコマンドで行われるため、開発支援装置５００においては、メモリアクセスコマンド変換処理（図１１）のステップＳ２１４の判断を省略し、ステップＳ２１６において、メモリアクセスコマンドを無条件に入出力ポートアクセスコマンドに変換すればよい。また、ステップＳ２０４を、「メモリアクセスコマンドまたは入出力ポートアクセスコマンド？」と変更することによって、入出力ポートアクセスコマンドも処理対象にするとともに、ステップＳ２１６において、入出力ポートアクセスコマンドを無条件にメモリアクセスコマンドに変換すればよい。こうすることによって、開発者は、通常通り、ＲＡＭ１１６にはメモリアクセスコマンドを用い、ＩＯへのアクセスには入出力ポートアクセスコマンドを用いることができ、無用な混乱なく制御プログラムを開発することができる。
【０１４５】
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
実施例では、パチンコ機１への適用例を示したが、本発明はスロットマシンへの適用も可能である。
また、実施例では、主制御基板１１０に擬似ＲＡＭ領域を設ける構成を示したが、主制御基板１１０に代えて、または主制御基板１１０と共に、この構成を払出制御基板２１０に適用してもよい。
実施例では、ＲＡＭ領域にイン／アウトコマンドでアクセス可能とする例を示したが、同様の構成をＲＯＭに適用することによって、インコマンドでＲＯＭにアクセス可能としてもよい。
【図面の簡単な説明】
【０１４６】
【図１】実施例としてのパチンコ機１の制御用ハードウェア構成を示すブロック図である。
【図２】主制御基板１１０の回路構成を示す説明図である。
【図３】主制御基板１１０の動作を示す説明図である。
【図４】主制御側電源投入時処理の一例を示すフローチャート（１）である。
【図５】主制御側電源投入時処理の一例を示すフローチャート（２）である。
【図６】主制御側タイマ割り込み処理のフローチャートである。
【図７】擬似ＲＡＭの効果を示す説明図である。
【図８】開発支援装置５００の構成を示す説明図である。
【図９】オブジェクトコード生成処理のフローチャートである。
【図１０】最適化処理のフローチャートである。
【図１１】メモリアクセスコマンド変換処理のフローチャートである。
【図１２】変形例としてのオブジェクトコード生成処理のフローチャートである。
【図１３】主制御基板の変形例（１）を示す説明図である。
【図１４】主制御基板の変形例（２）を示す説明図である。
【符号の説明】
【０１４７】
１…パチンコ機
４ａ…表示部
４ｂ…操作スイッチ
１２…パネル装飾ランプ
１６…ＬＣＤ
２０…賞球払出装置
２１…払出モータ
２２…払出球検出器
２３…モータ駆動センサ
２９…スピーカ
３１…枠装飾ランプ
３２、３４…ランプ中継基板
４１…特別図柄表示装置
４２…入賞検出器
４３…大入賞口ソレノイド
４７…発射制御基板
４８…タッチ検出部
４９…発射モータ
１１０…主制御基板
１１１…ＣＰＵ
１１２…バスバッファ
１１３、１１３Ａ、１１３Ｂ…メモリエリアデコーダ
１１３ｄ…エリア区分データ
１１４…ＲＯＭ
１１５…選択部
１１６…ＲＡＭ
１２０…エリア区分判定部
１２１…エリア区分データ
１２２…ＩＯデコーダ
１２３…パラレル入出力ポート
１２３ｓ…送信バッファ
１２３ｒ…受信バッファ
１２４…シリアル入出力制御部
１２４ｓ…ＳＰ変換部
１２４ｐ…ＰＳ変換部
２１０…払出制御基板
３１０…サブ制御基板
３５０…装飾図柄制御基板
【図１】
2009165581.tif 000003
【図２】
2009165581.tif 000004
【図３】
2009165581.tif 000005
【図４】
2009165581.tif 000006
【図５】
2009165581.tif 000007
【図６】
2009165581.tif 000008
【図７】
2009165581.tif 000009
【図８】
2009165581.tif 000010
【図９】
2009165581.tif 000011
【図１０】
2009165581.tif 000012
【図１１】
2009165581.tif 000013
【図１２】
2009165581.tif 000014
【図１３】
2009165581.tif 000015
【図１４】
2009165581.tif 000016