JP2009165581A - 遊技機用制御プログラムの開発支援方法 - Google Patents

遊技機用制御プログラムの開発支援方法 Download PDF

Info

Publication number
JP2009165581A
JP2009165581A JP2008005571A JP2008005571A JP2009165581A JP 2009165581 A JP2009165581 A JP 2009165581A JP 2008005571 A JP2008005571 A JP 2008005571A JP 2008005571 A JP2008005571 A JP 2008005571A JP 2009165581 A JP2009165581 A JP 2009165581A
Authority
JP
Japan
Prior art keywords
ram
command
input
area
output port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008005571A
Other languages
English (en)
Inventor
Takaaki Ichihara
高明 市原
Kazuya Iwata
和也 岩田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Daiichi Shokai Co Ltd
Original Assignee
Daiichi Shokai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Daiichi Shokai Co Ltd filed Critical Daiichi Shokai Co Ltd
Priority to JP2008005571A priority Critical patent/JP2009165581A/ja
Publication of JP2009165581A publication Critical patent/JP2009165581A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Pinball Game Machines (AREA)

Abstract

【課題】 遊技機を制御するためのプログラムの容量削減を図る。
【解決手段】 パチンコ機1の主制御基板において、CPU111からIOにアクセスするためのイン/アウトコマンドが出力された時、エリア区分判定部120が、アドレス値に応じて、アクセス先をIO、RAM116のいずれかに切り換え、その結果に応じてIO識別信号またはチップセレクタ信号MCS0をアクティブにする。こうすることによって、イン/アウトコマンドを用いてRAM116にアクセス可能となる。
また、制御プログラムの開発用のコンピュータに、RAM116へのアクセスがロード/ストアコマンドで記述されたソースを読み込み、アクセス先がイン/アウトコマンドでアクセス可能である場合には、イン/アウトコマンドに変換してオブジェクトコードを生成する開発支援機能を設ける。
【選択図】 図2

Description

本発明は、スロットマシン、パチンコ機などの遊技機を制御する制御装置に関する。
スロットマシン、パチンコ機などの遊技機の制御は、全体の進行を制御するための主制御基板、音声出力、ランプ点灯、画像表示などの演出を制御する演出制御基板などの分散制御によって行われる(特許文献1)。主制御基板、演出制御基板は、それぞれCPU、RAM、ROMなどを備えるマイクロコンピュータとして構成されている。
遊技機の制御基板、特に主制御基板では、不正を防止するために種々の制約が設けられている。例えば、CPUについては、汎用のCPUではなく、遊技機特有のセキュリティ機能が設けられたCPUが用いられている。また、ROM、RAMの容量にも制約が設けられており、パチンコ機では制御用のプログラムが3キロバイト(KB)以内、データは3KB以内というように、プログラムサイズやデータ容量についても制約が設けられている。
特開2004−8483号公報
しかし、遊技機の制御は、興趣を高めるため、年々、複雑化する傾向にある。
例えば、パチンコ機においては、従来、第1種と呼ばれる機種においては乱数を用いた電子的な抽選を行い、第2種と呼ばれる機種においては機械的な可動部を動作させ、可動部上の遊技球の動きによって当たりか否かを決める方法での抽選を行ってきた。これに対し、近年では、複合機と呼ばれる機種が登場し、上述の第1種および第2種を合わせた抽選を行うようになっている。この場合、主制御基板には、第1種および第2種の双方の抽選を行える制御プログラムを用意しておく必要がある。
上述の傾向は、パチンコ機以外の遊技機でも同様であり、遊技機は、プログラムやデータ量の厳しい制約の下で、より複雑な制御処理を実行することを要請されている。
本発明は、こうした課題に鑑み、遊技機のプログラム容量を削減可能にするとともに、容量を削減した制御プログラムの開発負荷を軽減するための技術を提供することを目的とする。
本発明は、所定の遊技媒体を用いて遊技を行う遊技機を対象とする。かかる遊技機としては、例えば、スロットマシンなどの回胴式遊技機、スマートボール、パチンコ機などが挙げられる。遊技媒体とは、遊技球やメダルなど遊技中に投資、特典の対象となる媒体を言う。
遊技機は、遊技の進行を統合制御する主制御装置を有している。この他、所定の条件下で遊技媒体を遊技者に払い出す払出装置、および音声出力や表示を制御する演出制御装置などを設けても良い。払出装置は主制御装置で直接制御するようにしてもよいし、主制御装置からの指示情報に従って払出しを制御する払出制御装置で制御するようにしてもよい。この場合、主制御装置と払出制御装置は、ハードウェア的に別回路として構成されていてもよいし、同一の制御基板上で稼働する個別のソフトウェアモジュールとして構成されていてもよい。
以下、本明細書で「制御装置」と呼ぶ時は、遊技機に備えられた主制御装置、払出制御装置、演出制御装置などの少なくとも一つを表すものとする。
本発明の遊技機における制御装置は、CPU、ROM、RAMを備えたマイクロコンピュータとして構成されている。CPUは、遊技の進行制御を実行する演算回路である。ROMには、CPUが実行するプログラムが格納されている。RAMは、制御に用いられる種々の情報を格納するためのメモリとして機能する。かかる情報としては、例えば、制御プログラム中の各モジュール間で処理結果等を受け渡すためのワークや、演算中にCPUが計算結果を一時的に蓄えておくためのスタックなどが含まれる。
制御装置には、統合制御において、制御装置の外部との信号を入出力するための入出力ポートも設けられている。入出力ポートとは、ここでは、外部との信号線を接続する端子、その端子から入出力される信号を一時的に蓄積しておくバッファ、各信号の入出力先を切り換えるデコーダなどの総称として用いる。信号の入出力先は、メモリと同様、アドレスによって指定可能である。
CPUが用いるコマンドには、メモリアクセスコマンド、入出力ポートアクセスコマンドが含まれる。メモリアクセスコマンドとは、メモリへのアクセスに使用されるコマンドであり、このコマンドには、2バイト以上のアドレス値の指定が含まれる。入出力ポートアクセスコマンドとは、外部との信号の入出力に使用されるコマンドであり、入出力先を指定するためのアドレス値はメモリアクセスコマンドよりも1バイト以上少ないコマンド体系となっている。例えば、メモリアクセスコマンドが2バイトでアドレス指定を行うコマンド体系である場合には、入出力ポートアクセスコマンドは1バイトでアドレス指定を行うコマンド体系となる。
Z80(商標)というCPUに即して説明すれば、ロード/ストアコマンドがメモリアクセスコマンドに相当し、イン/アウトコマンドが入出力ポートアクセスコマンドに相当する。ロード/ストアコマンドでは2バイトでアドレスが指定され、イン/アウトコマンドでは1バイトで指定される。
制御装置には、更に、エリア区分判定部が備えられている。エリア区分判定部は、入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先をRAMおよび入出力ポートに切り換え、RAMおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力する機能を奏する。入出力ポートアクセスコマンドは、通常、入出力ポートを通じたデータ授受に使用されるコマンドであるが、本発明では、同コマンドで指定されるアドレス空間の一部をRAMへのアクセスに使用するのである。エリア区分判定部は、従って、コマンドで指定されたアドレスが、RAM用または入出力ポート用のいずれに割り当てられたアドレスかを判定し、判定結果に応じてセレクタ信号を出力する。このセレクタ信号は、それぞれRAMおよび入出力ポートに入力され、各ユニットをアクセス可能な状態にさせる。
CPUからは、入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号が、エリア区分判定部に入力されている。従って、エリア区分判定部の上述の機能は、CPUがイン/アウトコマンドなど入出力ポートアクセスコマンドを出力した時に有効となる。
上述の遊技機では、制御装置のCPUは、入出力ポートアクセスコマンドでRAMにアクセス可能である。アクセス先を指定するアドレスは、入出力ポートアクセスコマンドの方が、メモリアクセスコマンドよりも1バイト以上少なくて済む。従って、RAMへのアクセスが必要となる箇所で、メモリアクセスコマンドに代えて、入出力ポートアクセスコマンドを用いることにより、1カ所につき1バイト以上、プログラム容量を削減することができる。RAMへのアクセスは、プログラム全体で数多く行われる処理であるから、上述の遊技機によれば、プログラム全体の容量を有意に削減することが可能となる。
本発明は、上述の遊技機に搭載された制御装置が実行する制御プログラムの開発を支援する開発支援方法である。制御プログラムの開発は、開発用のコンピュータ(以下、「開発コンピュータ」と呼ぶ)を用いて、C言語のような高級言語またはアセンブリ言語のような低級言語などで、制御プログラムを作成し、コンパイラまたはアセンブラによって、CPUが実行できる機械語のオブジェクトを生成するという手順で行われる。上述した制御装置では、メモリアクセスコマンドと入出力ポートアクセスコマンドによってRAMにアクセス可能であるため、制御プログラムの開発者は、RAMへのアクセスを行う際に、いずれのコマンドを利用すべきかを判断する必要が生じ、制御プログラムの開発効率を損ねるおそれがあった。本発明の開発支援方法では、この負担を軽減することによって、制御プログラムの開発を支援する。
本発明では、開発コンピュータは、まず、制御装置のCPUの機械語以外の所定の言語で記述された制御プログラムを読み込む。制御プログラムは開発環境に応じて、C言語のような高級言語またはアセンブリ言語のような低級言語のいずれで記述されていてもよい。ここでは、開発コンピュータにおいて、別途、プログラム用のエディタを用いて開発されたものを読み込んでも良いし、別途用意された制御プログラムをネットワークまたは記憶媒体経由で読み込むようにしてもよい。
開発コンピュータは、また、入出力ポートアクセスコマンドでアクセス可能なRAMのアドレス範囲を指定するエリア区分データを読み込む。以下、入出力ポートアクセスコマンドでアクセス可能なRAMの領域を擬似RAMと称する。エリア区分データは、対話形式などの方法で、開発者が、キーボード等を操作して入力するものとしてもよいし、ソースプログラム上やデータベースなどで予め設定済みの固定値を読み込むものとしてもよい。前者の態様は、制御装置のハードウェア構成のみによっては、擬似RAM領域が決定されず、ブート時または制御プログラムの実行時に、エリア区分データをエリア区分判定部に設定可能な構成をとっている時に有用である。後者の態様は、制御装置のハードウェア構成によって、擬似RAM領域が固定されている場合に用いることができ、開発者がエリア区分データを入力する必要がなく、入力時の誤りを回避できるという利点がある。
エリア区分データのデフォルト値を予めソースプログラム上またはデータベースとして用意した上で、開発者からの入力を受け付けるようにしてもよい。この場合、デフォルト値と入力値のいずれを優先するかは任意に設定することができる。また、エリア区分データとして採りうる許容範囲を予め設定しておき、入力値がこの範囲を超えた場合には、ワーニング情報を出力したり、強制的に許容範囲内の値に変更するなどの処理を行うようにしてもよい。
開発コンピュータは、制御プログラムのうちRAMにアクセスする処理について、エリア区分データに基づいて処理のアクセス先が擬似RAM領域であるか否かを判断する。そして、アクセス先が擬似RAM領域であると判断される場合には、入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する。例えば、先に説明したZ80(商標)というCPUの場合、メモリアクセスコマンドであるロード/ストアコマンドが記載されている箇所を、入出力ポートアクセスコマンドであるイン/アウトコマンドに変換する。
変換は、種々の方法で行うことができる。制御プログラムの記述言語と同じ言語で変換してもよい。例えば、ロード(LD)と記載されている命令を、イン(IN)に変換する例が相当する。それぞれの命令体系に応じて、オペランドも適合する形に変更するのは当然である。この場合、変換した状態の制御プログラムを出力するものとしてもよいし、変換した状態の制御プログラムとともに、その制御プログラムを機械語に更に変換したオブジェクトコードを出力するようにしてもよい。
また、開発コンピュータは、上述の変換を行うとともに制御プログラムを機械語で表したオブジェクトコードを生成するようにしてもよい。この場合は、命令を変換した状態の制御プログラムの出力をした後、更に、オブジェクトコードの生成処理を行うという2段階の処理を経る必要がないため、オブジェクトコードの生成過程を簡略化できる利点がある。
先に説明した通り、遊技機の制御装置において、エリア区分判定部は、アクセス先の切り換えの判断基準となるエリア区分データを、ソフトウェア的に設定可能としてもよい。この場合には、開発コンピュータには、更に、エリア区分データを、エリア区分判定部に設定するための設定データを生成する機能を備えても良い。例えば、制御装置のCPUが、ブート時にROMから必要なデータを読み込んでエリア区分データの設定をする場合には、設定データはブート用のデータとして生成される。また、制御プログラムの実行時に設定する場合には、上述の設定データは、制御プログラムのオブジェクトコードに含まれるエリア区分データの設定コマンドとして用意される。こうすることにより、制御プログラムの開発過程で、エリア区分データを入力すれば、それに連動して必要な設定がなされるため、制御プログラムと制御装置の設定との不整合を回避できる利点がある。
遊技機の擬似RAM領域は、種々の設定が可能であるが、RAMの先頭アドレスを含む所定範囲内とすることが好ましい。この場合、エリア区分データは、擬似RAM領域の終端を指定するデータとすることができ、簡易な指定が可能となる利点がある。エリア区分データは、擬似RAM領域の終端の実アドレスを指定するものとしてもよいし、擬似RAM領域の先頭アドレスからの相対アドレス、または擬似RAM領域のサイズを指定するものとしてもよい。また、予め擬似RAM領域としての設定例をメニューとして用意しておき、この中から適宜選択する方法で指定してもよい。このメニューは、例えば、擬似RAM領域の先頭アドレスと容量との組み合わせで構成することができる。
先頭アドレスから擬似RAM領域を設定することには、遊技機の規格との関係でも次に示す利点がある。
不正防止の観点から、遊技機では、主制御装置での制御処理において使用するワークは、RAM領域の先頭アドレスから連続した領域に設ける。このため、擬似RAM領域を先頭アドレスから設けておけば、擬似RAM領域をワークに十分に活用することが可能となるのである。これに対し、擬似RAM領域を、先頭アドレスとは異なる任意のアドレスから設けると、先頭アドレスから擬似RAM領域にいたるまでの領域をワークとして使用した上で、更にメモリ容量が不足する場合にのみ擬似RAM領域がワークに使用されるに過ぎなくなる。
擬似RAM領域は、上述した種々の特長に基づいて、開発コンピュータが、遊技機の制御用のソースプログラムを解析して、自動的に設定するようにしてもよい。例えば、擬似RAM領域は先頭アドレスから設けることが好ましいから、先頭アドレスを擬似RAM領域の開始アドレスとする。擬似RAM領域を用いた場合には、メモリアクセスコマンドに代えて、入出力ポートアクセスコマンドが使用できる点でプログラム容量を削減することができるから、かかる効果を十分に得られるように擬似RAM領域の容量を設定すればよい。この設定は、擬似RAM領域を数段階に仮想的に変化させ、プログラム容量の削減率を比較することによって、行うことができる。
開発コンピュータは、例えば、次に示す方法により、擬似RAM領域が効率的に活用されるよう、先に説明したコマンドの変換に先立って、制御プログラムを最適化するようにしてもよい。
まず、開発コンピュータは、制御プログラムのうちRAMにアクセスする処理をカウントすることによって、アクセス先に基づいて設定された所定の分類ごとのアクセス回数を求める。
分類は任意に設定可能であり、例えば、アクセス先が実アドレスで指定されている場合には、アドレス単位で分類とすることによって、同一のアドレスへのアクセス命令の数を計数すればよい。
制御プログラムでは、メモリへのアクセスはLD命令などのメモリアクセスコマンドで記載されている。LD命令におけるアクセス先がラベル、即ち変数名で指定されている場合も同様に、ラベル単位で分類とすることによって、同一のラベルを含むアクセス命令の数を計数すればよい。
そして、開発コンピュータは、アクセス回数の多い分類に含まれるアクセス先を、擬似RAM領域へ優先的に割り当てる。こうすることによって、制御プログラムにおいて、擬似RAM領域を有効活用することができ、入出力ポートアクセスコマンドを利用することによるプログラムの削減効果を十分に得ることが可能となる。割り当て方は、種々の方法を採ることができ、例えば、アクセス回数の多い分類に含まれるアクセス先の中で、アクセス数の多い順に割り当てる方法を採ることができる。
上述の最適化処理においては、アクセス数の計数は、複数のアクセス先を予め一つの分類として関連づけておき、アクセス先に基づいて設定されたこの分類ごとに行っても良い。以下、このように複数のアクセス先が関連づけられた分類を、「ブロック」と称することもある。ブロックごとにアクセス数を計数する場合には、ブロックとして関連づけられず単独で計数するアクセス先と複数のアクセス先からなる分類とが混在していても構わない。
制御プログラムでは、異なるラベルを用いながら、連続したアドレス領域に格納されることが前提とされているものもある。かかる複数のラベルを分類としてまとめておくことにより、擬似RAM領域への割り当てによって、これらのラベルが不連続のアドレス領域に分散してしまうことを回避することができる。
上述の最適化処理は、ワークの容量が擬似RAM領域を超える場合には、行った方が好ましい。これに対し、ワークの容量が擬似RAM領域以下である場合には、最適化処理を省略しても構わない。最適化するか否かに関わらず、全ワークを擬似RAM領域に割り当てることが可能だからである。
擬似RAM領域への割り当ては、種々の方法で行うことができる。擬似RAM領域に空きがある場合には、アクセス数の多いアクセス先に対して、順次、空いている領域を割り当てて行けばよい。アクセス先が実アドレスで指定されている場合には、アクセス先を擬似RAM領域内のアドレスに変換すればよい。
また、擬似RAM領域の残領域不足によって、アクセス数が最も多い分類に含まれる全ラベルを割り当てられない場合には、次にアクセス数が多いものを割り当てても良い。
擬似RAM領域内の実アドレスでアクセス先が指定されている場合でも、そのアクセス数が少ない場合には、アクセス先を擬似RAM領域外に変換してもよい。
本発明において、上述の特徴は、必ずしも全てが備えられている必要はなく、適宜、一部を省略したり、組み合わせたりしても良い。
また、本発明は、開発用コンピュータによって実行される開発支援方法としての態様のみならず、この開発支援方法を実現するためのコンピュータプログラムとして構成してもよい。また、かかるコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体として構成することもできる。記録媒体としては、フレキシブルディスクやCD−ROM、光磁気ディスク、ICカード、ROMカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置(RAMやROMなどのメモリ)および外部記憶装置等、コンピュータが読取り可能な種々の媒体を利用できる。
本発明は、更に、上述の開発支援方法の機能を実現する開発支援装置として構成してもよい。開発支援装置は、汎用のコンピュータに、上述のコンピュータプログラムをインストールすることによって、必要な機能をソフトウェア的に構築するものとしてもよいし、各機能をハードウェア的に構築した専用の装置として構成してもよい。
本発明の開発支援方法が対象とする遊技機の制御装置についても、種々の構成が可能である。
例えば、先に説明した構成に加えて、更に、メモリエリアデコード部を設けても良い。メモリエリアデコード部は、メモリアクセスコマンドで指定されるアドレス値の上位所定桁に基づいて、アクセス先となるROMおよびRAMのいずれかをアクティブにするためのメモリセレクト信号を出力する機能を奏する。CPUからは、メモリアクセスコマンドに応じて稼働すべき対象を指定するメモリリクエスト信号が、メモリエリアデコード部に入力されており、上述の機能は、CPUがメモリアクセスコマンドを出力した時に有効となる。
こうすることにより、メモリアクセスコマンドによってもRAMへのアクセスが可能となる。入出力ポートアクセスコマンドでアクセス可能なRAMの領域は、入出力ポート用のアドレス空間の一部に過ぎないが、メモリアクセスコマンドを利用すれば、全領域にアクセス可能となる。従って、入出力ポートアクセスコマンドによるRAMへのアクセスでプログラム容量の削減を図りつつ、メモリアクセスコマンドによってRAMの領域を無駄なく活用することが可能となる。
また、RAMのアドレス空間と、入出力ポートアクセスコマンドで指定可能な擬似RAM領域のアドレス空間とは同サイズであることが好ましい。こうすることにより、入出力ポートアクセスコマンドで指定されたアドレスを、そのままRAMへのアクセスに利用することが可能となる。
もっとも、これは必須の要件ではなく、RAMのアドレス空間が入出力ポートアクセスコマンドのアドレス空間よりも大きくてもよい。つまり、RAMのアドレス桁数が、入出力ポートアクセス用のアドレス桁数よりも多くてもよい。この場合には、エリア区分判定部に、入出力ポートアクセスコマンドで指定されたアドレスに対して、デフォルトの上位桁を加えた状態でRAMに出力する機能を持たせる必要がある。
本発明において、メモリエリアデコード部を設ける場合には、更に、上位所定桁に基づいて、入出力ポートをアクティブにする入出力ポートセレクト信号を出力可能としてもよい。入出力ポートセレクト信号は、入出力ポートに伝達される。
こうすることによって、メモリアクセスコマンドによって入出力ポートからの信号授受が可能となる。入出力ポートの一部または全部を、メモリアクセスコマンドでアクセスするものとすれば、その分、入出力ポートアクセスコマンドによってアクセス可能となる擬似RAM領域を増やすことができる。入出力ポート全部をメモリアクセスコマンドでアクセスするものとすれば、入出力ポートアクセスコマンドによって指定可能な全アドレス空間を擬似RAM領域とすることが可能となる。この態様によれば、プログラムサイズの削減効果上、最も効果的な擬似RAM領域のサイズを、柔軟に設定することが可能となるのである。
本発明の実施例について以下の順序で説明する。
A.装置構成:
B.主制御基板110の回路構成:
C.制御処理:
C1.主制御側電源投入時処理:
C2.主制御側タイマ割り込み処理:
C3.サブ統合側処理:
C4.払出制御基板の制御処理:
D.プログラム容量削減効果:
E.制御プログラム開発支援装置:
E1.装置構成:
E2.オブジェクトコード生成処理:
E3.最適化処理:
E4.メモリアクセスコマンド変換処理:
E5.オブジェクトコード生成処理の変形例:
F.主制御基板110の変形例:
F1.回路構成の変形例(1):
F2.回路構成の変形例(2):
A.装置構成:
実施例では、パチンコ機として構成した場合の例を示す。
実施例としてのパチンコ機は、遊技媒体に相当する遊技球を、発射し、遊技盤に設けられた入賞口に入賞させることによって、賞球の払出を受ける遊技機である。
パチンコ機が、第1種または複合機と呼ばれる機種の場合、始動入賞口と呼ばれる入賞口に遊技球が入賞すると、乱数を用いた電子的な抽選が行われる。抽選の結果、大当たりとなると、遊技盤に設けられた大入賞口が所定期間、所定回数、開閉し、賞球の払出を受けやすい有利な遊技状態(以下、「大当たり遊技」という)に移行する。
パチンコ機が、第2種または複合機の場合には、遊技球の動きによって機械的に抽選の当落を決定する機構が備えられている。この場合でも、大当たりが発生すると、機種に応じた大当たり遊技に移行する。
図1は実施例としてのパチンコ機1の制御用ハードウェア構成を示すブロック図である。パチンコ機1は、主制御基板110、払出制御基板210、サブ制御基板310、装飾図柄制御基板350などの各制御基板の分散処理によって制御される。主制御基板110は、それぞれ内部にCPU、RAM、ROMなどを備えたマイクロコンピュータとして構成されており、ROMに記録されたプログラムに従って種々の制御処理を実現する。払出制御基板210、サブ制御基板310も同様である。
本実施例では、サブ制御基板310と装飾図柄制御基板350とは別基板として構成しているが、両者を統合した基板としてもよい。この場合、サブ制御基板310の機能と装飾図柄制御基板350の機能を、複数のCPUの分散処理で実現してもよいし、単独のCPUで実現する構成としてもよい。
また、主制御基板110と払出制御基板210も別基板とせず、両者を統合した基板として構成することもできる。
実施例のパチンコ機1では、種々の不正を防止するため、主制御基板110への外部からの入力が制限されている。主制御基板110とサブ制御基板310とは単方向のパラレル電気信号で接続されており、主制御基板110と払出制御基板210とは、制御処理の必要上、双方向シリアル電気信号で接続されている。
払出制御基板210、サブ制御基板310は、それぞれ主制御基板110からのコマンドに応じて動作する。装飾図柄制御基板350は、サブ制御基板310からのコマンドに応じて動作する。
パチンコ機1には、主制御基板110が直接に制御する機構もある。図中には、主制御基板110が制御する装置の一例として、大当たり遊技において、大入賞口を駆動するための大入賞口ソレノイド43、および特別図柄表示装置41を例示した。特別図柄表示装置41とは、遊技中に主制御基板110が行った抽選の結果を、所定数のLEDの点灯状態で表示する装置である。
主制御基板110は、この他にも、普通図柄表示装置、特別図柄保留ランプ、普通図柄保留ランプ、大当り種類表示ランプ、状態表示ランプなどの表示を制御することができる。
また、主制御基板110には、遊技中の動作を制御するため、種々のセンサからの検出信号が入力される。図中には一例として入賞検出器42からの入力を例示した。入賞検出器42とは、始動入賞口への入賞を検出するためのセンサである。主制御基板110は、入賞検出器42からの信号に応じて、先に説明した抽選を行い、大当り遊技を実行することができる。主制御基板110には、他にも種々の入力がなされているが、ここでは説明を省略する。
遊技時におけるその他の制御は、払出制御基板210、サブ制御基板310を介して行われる。
払出制御基板210は、遊技中の遊技球の発射および払い出しを次の手順で制御する。
遊技球の発射は、直接的には発射制御基板47によって制御される。即ち、遊技者が、遊技機正面に備えられた発射用のハンドルを操作すると、発射制御基板47は操作に応じて発射モータ49を制御し、遊技球を発射する。遊技球の発射は、タッチ検出部48によって、ハンドルに遊技者が触れていることが検出されている状況下でのみ行われる。払出制御基板210は、発射制御基板47に対して、発射可否の制御信号を送出することで、間接的に球の発射を制御する。
遊技中に入賞した旨のコマンドを主制御基板110から受信すると、払出制御基板210は、賞球払出装置20内の払出モータ21を制御し、払出球検出器22によって球数をカウントしながら規定数の球を払い出す。払出モータ21の動作は、モータ駆動センサ23によって監視されており、球ガミ、球切れなどの異常が検出された場合、払出制御基板210は、表示部4aにエラーコードを表示する。エラー表示された時には、係員が異常を除去した後、操作スイッチ4bを操作することで復旧させることができる。
サブ制御基板310は、遊技中における音声、表示、ランプ点灯などの演出を制御する。サブ制御基板310は、これらの制御を実行するためのCPU、RAM、ROMを備えたマイクロコンピュータとして構成されている。これらの演出は、通常時、入賞時、大当たり時など、遊技中のステータスに応じて変化する。主制御基板110から、各ステータスに応じた演出用のコマンドが送信されると、サブ制御基板310は、各コマンドに対応したプログラムを起動して、主制御基板110から指示された演出を実現する。
音声およびランプ点灯はサブ制御基板310が直接制御するが、LCD16の表示については、装飾図柄制御基板350を介して制御する。
サブ制御基板310の制御対象となるランプには、遊技盤面に設けられたパネル装飾ランプ12と、枠に設けられた枠装飾ランプ31がある。サブ制御基板310は、ランプ中継基板32、34を介して、パネル装飾ランプ12および枠装飾ランプ31と接続されており、各ランプを個別に点滅させることができる。
図示を省略したが、スピーカ29を制御するため、サブ制御基板310には、音源ICおよびアンプが備えられている。CPUが、スピーカ29から出力する音声を決めて音声出力コマンドを出力すると、音源ICが予め用意された音源データから指定されたものを再生し、アンプで増幅してスピーカ29から出力する。
また、サブ制御基板310は、遊技中の演出の他、エラー時、不正行為その他の異常が生じた時には、警報音を出力したり、ランプを警告用に点灯したりして、異常発生を報知する。主制御基板110のRAMの内容を消去するためのRAMクリアスイッチが操作された時にも、同様に報知音が出力される。
警報音には、例えば、遊技中の効果音とは明らかに異なるブザー音を用いることができる。警告用のランプ点灯としては、例えば、遊技盤の周囲全体を赤く点滅させるなど、遊技中とは明らかに異なる態様での点灯・点滅をさせることができる。
B.主制御基板110の回路構成:
図2は主制御基板110の回路構成を示す説明図である。先に説明した通り、主制御基板110は、CPU111、RAM116、ROM114を備えるマイクロコンピュータとして構成されている。図中には、CPU111が、RAM116、ROM114にアクセスするための回路、および外部入出力(I/O)を行うための回路を示した。
本実施例では、CPU111には、セキュリティ機能が備えられている。セキュリティ機能としては、例えば、内蔵されたROMが正規の認証を受けたROMであるかを判定する機能、予め定められたエリア以外へのアクセスが行われた場合に、内部的にリセットを発生させる機能、CPUの外部に設けられた端子から、内蔵のIDコードや、ROMに格納されたデータ等を読み出すことができる機能などが挙げられる。
また、遊技機の規格上、プログラム容量は3KB以下、データ容量は3KB以下という厳しい制限下で動作するよう構成されている。
本実施例の回路は、CPU111がRAM116にアクセスするために、ロード/ストアコマンドと呼ばれる通常のメモリ領域へのアクセス用のコマンドの他、イン/アウトコマンドというI/Oにアクセスするためのコマンドも使用可能な構成となっている。以下では、まず回路構成について概要を示した後、その動作について説明する。
CPU111からは、バスバッファ112を介して図示する種々の信号が出力される。アドレスA15〜A0は16ビットの信号である。A15〜A8を上位アドレス、A7〜A0を下位アドレスと呼ぶこともある。データバスは、D7〜D0の8ビットである。RD/WRは読み書きの制御信号(以下、「リード・ライト」と呼ぶこともある)である。IOREQは、I/Oへのアクセスの際にアクティブとなる1ビットの信号であり、MREQはメモリへのアクセスの際にアクティブとなる1ビットの信号である。
メモリエリアデコーダ113は、メモリへのアクセスを中継する回路である。メモリエリアデコーダ113からは、ROM114へのアクセスを可能とするためのチップセレクタ信号MCS2、RAM116へのアクセスを可能とするためのチップセレクタ信号MCS1が出力される。チップセレクタ信号MCS1は、選択部115を介してRAM116に入力される。
エリア区分判定部120は、イン/アウトコマンドによって、RAM116へのアクセスを可能とするための回路である。エリア区分判定部120内には、イン/アウトコマンドがI/Oへのアクセスを意味しているのか、RAM116へのアクセスを意味しているのかを区分するための基準となるエリア区分データ121が格納されている。このデータは、予め固定値をハードウェア的に組み込んでおくようにしてもよいが、本実施例では、ROM114に記憶された基準値を読み込んで、起動時に設定するものとした。
エリア区分判定部120からは、I/Oデコーダ122をアクティブにするためのIOエリア識別信号、およびRAM116へのチップセレクタ信号MCS0が出力される。
チップセレクタ信号MCS0は、選択部115を介してRAM116に入力される。RAM116は、メモリエリアデコーダ113からのチップセレクタ信号MCS1、およびエリア区分判定部120からのチップセレクタ信号MCS0のいずれかがアクティブとなっていれば、アクセス可能である。従って、選択部115は、例えば、オアゲートによって構成することができる。
IOデコーダ122は、IOエリア識別信号がアクティブとなっている時に稼働する。IOデコーダ122は、下位アドレスA7〜A0の値に応じて、アクセス先となるべきIOを指定するためのチップセレクタ信号IOCS1、IOCS2等を出力する。チップセレクタ信号は、下位アドレスA7〜A0のアドレス空間に相当する本数、出力可能である。
図中には、I/Oポートの一つとして備えられているシリアルポートの構成を示した。チップセレクタ信号IOCS1、IOCS2は、パラレル入出力ポート123内に設けられた受信バッファ123r、送信バッファ123sに対応している。受信バッファ123r、送信バッファ123sの容量は、任意に設定可能であるが、本実施例では、データの入出力が可能なサイズとして32バイトの容量を確保した。これらのバッファは、いわゆるFIFO(First In First Out1)型である。
受信バッファ123rは、シリアル入出力制御部124内に構成されたSP(シリアル/パラレル)変換部124sに接続され、送信バッファ123sは、PS(パラレル/シリアル)変換部124pに接続されている。外部からシリアル入力する際には、データは、SP変換部124sによって8ビットのパラレルデータに変換され、受信バッファ123rに蓄積される。CPU111は、インコマンドによって、受信バッファ123rのデータを読み取ればよい。また、外部にシリアル出力する際には、CPU111は、アウトコマンドによって送信バッファ123sにデータを格納すればよい。このデータは8ビットのパラレルデータとしてPS変換部124pに伝達され、シリアルデータに変換されて、出力される。
図3は主制御基板110の動作を示す説明図である。先に説明した通り、本実施例では、CPU111は、RAM116に対して、ロード/ストアコマンドと、イン/アウトコマンドの双方を用いてアクセスすることが可能である。図3では、かかるアクセスを実現するため、ロードコマンド、インコマンドを例にとって、CPU111、メモリエリアデコーダ113、エリア区分判定部120、IOデコーダ122の機能をそれぞれ示した。
CPU111が、LD(ロード)命令を出力したとする(処理S1)。メモリエリアに直接アクセス可能とするため、LD命令では、アドレスA15〜A0の全てをコマンド内で指定する必要がある。従って、図中に示す通り、このコマンドは、「LD、下位アドレス、上位アドレス」という3バイトで構成される。LDコマンド出力と併せて、MREQおよびRD信号がアクティブとなるが、図の煩雑化回避のため、図示を省略した。
メモリエリアデコーダ113は、アドレスに基づき、アクセス先が、ROM114かRAM116かを判定する(処理S2)。
ROM114へのアクセスが指定されている場合には、ROM114に対応するチップセレクタ信号MCS2をアクティブにする。この結果、ROM114内において、A12〜A0で指定された領域に格納されているデータが読み出される。
RAM116へのアクセスが指定されている場合には、RAM116に対応するチップセレクタ信号MCS1をアクティブにする。この結果、RAM116内において、下位アドレスで指定された領域に格納されているデータが読み出される。この場合、CPU111は、RAM116のメモリ領域(アドレス00H〜FFH)のうち任意の領域にアクセス可能である。RAM116のメモリ領域は設定により512バイトおよび256バイトに切り換えることが可能であるが、本実施例では、256バイトと設定されている場合を例にとって説明する。
次に、IN命令を出力したとする(処理S3)。IN命令では、アクセス可能なIOが下位アドレスで指定される256カ所に制限されているため、コマンドは図示する通り、「IN、下位アドレス」の2バイトで構成される。
エリア区分判定部120は、エリア区分データに基づいて、アクセス先が、RAMかIOかを判別する(処理S4)。
例えば、図中のRAM116内のハッチングの領域(00H〜**H)(以下、この領域を「擬似RAM領域」と呼ぶこともある)がIN命令でもアクセス可能な領域として設定されているとする。エリア区分判定部120は、下位アドレスA7〜A0が、「00H〜**H」に含まれる場合には、アクセス先は擬似RAM領域であると判断し、その他の場合にはIOであると判断する。
アクセス先がRAM116と判断される場合には、エリア区分判定部120は、チップセレクタ信号MCS0をアクティブにする。この結果、RAM116内において、下位アドレスで指定された領域に格納されているデータが読み出される。
アクセス先がIOであると判断される場合には、エリア区分判定部120は、IOエリア識別信号をアクティブにする。この結果、IOデコーダ122が稼働し、下位アドレスA7〜A0に基づいてIO選択し、対応するチップセレクタ信号IOCS1、IOCS2等をアクティブにする(処理S5)。
本実施例では、このように、RAM116内に設けられた擬似RAM領域には、ロード/ストアコマンド、イン/アウトコマンドの双方でアクセスすることが可能である。擬似RAM領域は、任意に設定可能である。IOへのアクセスに必要なアドレス空間を除き、全てを擬似RAM領域に割り当てても良い。擬似RAMは、上述の通り、イン/アウトコマンドでアクセスできる分、アクセス1回につき1バイトずつプログラム容量を削減することができる。
擬似RAM領域へのアクセスには、下位アドレスA7〜A0をそのまま利用することができる点で、擬似RAM領域は、RAM116の先頭アドレスから設定することが好ましい。
C.制御処理:
C1.主制御側電源投入時処理:
図4および図5は主制御側電源投入時処理の一例を示すフローチャートである。主制御基板110のCPU111が電源投入による復電をトリガとして開始・実行する処理である。「復電」は、電源を遮断した状態から電源を投入した状態、停電又は瞬停からその後の電力の復旧した状態も含む。
処理が開始されると、CPU111は、割り込みのモードを設定し、スタックポインタに初期値を設定する(ステップS10)。スタックポインタは、例えば、使用中のレジスタの内容、サブルーチンを終了して本ルーチンに復帰するときの本ルーチンの復帰アドレスなど、制御処理を進める上で一時的に記憶する種々の情報の格納アドレスをスタックに順次、格納・読み出し可能とするために、スタック中での最新の情報の格納場所を表している。
次に、CPU111は停電クリア信号をロウとする(ステップS12)。停電クリア信号をロウにすることにより、電源投入時に主制御基板に設けられた停電監視回路からの停電予告信号をラッチするためのDタイプフリップフロップのラッチ機能を一時的に停止すると共に、それ以前に検知(ラッチ)した停電予告信号をクリアする。ラッチ機能を一時的に停止することにより、停電予告信号が常時監視可能な状態に切り替えることができる。
CPU111は、ウェイトタイマ処理1によって所定の待ち時間を経た後(ステップS14)、停電予告信号の状態を確認し、停電予告信号が停電を示す状態(停電予告信号がロウのとき)となっているか否かを判定する(ステップS16)。停電を示す状態となっている場合には、ウェイトタイマ処理1による待ち時間(ステップS14)を経てから、再度停電予告信号の状態を確認する。
このように、所定の待機時間を経た後に停電予告信号を確認するのは、停電予告信号が、停電又は瞬停によってパチンコ機1への供給電圧が所定の停電予告電圧より低くなった時に出力されるため、電源投入時に遊技機への供給電圧が所定電圧に達するまでは、一定の時間を要するためである。これにより、供給電圧が不安定な状態で、主制御基板の遊技機の制御に関する処理(ループ処理、タイマ割込処理)を実行しないようにすることが可能となる。
停電予告信号が検出されず(ステップS16)、電源電圧に異常がないと判断される時は、CPU111は停電クリア信号をハイ(出力を停止)にし(ステップS18)、停電監視回路から出力される停電予告信号を常時監視可能な状態からラッチ可能な状態に切り替える。以後、供給電圧が停電予告電圧を下回ったときに、ラッチされた停電予告信号が出力されるようになる。
CPU111はRAMクリアスイッチが操作されている時は(ステップS20)。RAMクリア報知フラグRCLに値1をセットし(ステップS22)、操作されていないときには値0をセットする(ステップS24)。RAMクリアスイッチが操作されると、後述の通り、主制御基板110のRAM116上の確率変動、未払い出し賞球等の遊技に関する遊技情報が消去されることになる。
次にCPU111はウェイトタイマ処理2で(ステップS26)、装飾図柄制御基板350の起動を待つ。但し、主制御基板110は装飾図柄制御基板350から起動完了の通知を受信することはできないため、所定時間経過した時点で起動が完了したものとみなして次の処理を実行することになる。本実施例では、待機時間として2秒(s)が設定されている。
本実施例では、先に説明した通り、上述のウェイトタイマ処理2を行う前に、RAMクリアスイッチの操作有無を判定している(ステップS20)。RAMクリアを行う場合には、遊技場の係員は、通常、RAMクリアスイッチを押下した状態で電源を投入する。従って、ウェイトタイマ処理2を行う前に、RAMクリアスイッチの操作有無を判断しておくことにより、遊技場の係員が電源投入後、比較的短時間でRAMクリアスイッチの押下をやめてしまった場合でも、誤りなくRAMクリアスイッチの操作の検出が可能となる利点がある。
本実施例においても、ウェイトタイマ処理2の後にRAMクリアスイッチの操作の有無を検出する方法を採ることも可能である。ただし、この場合には、RAMクリアスイッチの操作が検出される前に、遊技場の係員が押下を中断してしまうおそれがあり、遊技場の係員はRAMクリアを行ったつもりでいても、結果としてRAMクリア処理が行われないまま遊技機の制御処理が開始されるおそれもある。ウェイトタイマ処理2の前にRAMクリアスイッチの操作を検出することによって、こうした弊害を回避することができる。
上述の通り早期にRAMクリアスイッチの操作を確認する場合には、仮に、電源投入に対してRAMクリアスイッチの操作が遅れた場合には、RAMクリアスイッチが操作される前に、ステップS20の検出処理が完了してしまい、RAMクリアが正しく行われなくなるおそれもある。
かかる弊害を回避するため、ウェイトタイマ処理2(ステップS26)が完了した後に、再度、RAMクリアスイッチの操作を検出するようにしてもよい。例えば、後述するステップS28とS30の間に検出処理を設ける方法が考えられる。こうすることによって、RAMクリアスイッチの操作が電源投入から若干、遅れて行われた場合でも、RAMクリアを行うことが可能となる。
RAMクリアスイッチの操作の検出タイミングは、このように種々の設定が可能である。本実施例のように、ウェイトタイマ処理2の前でのみ検出するようにしてもよい。また、ウェイトタイマ処理2の後にのみ行うようにしてもよいし、ウェイト処理2を挟む前後で行うようにしてもよい。
また、ウェイトタイマ処理2の期間中、RAMクリアスイッチを継続的に監視し、RAMクリアスイッチの操作が検出された場合には、所定のフラグをオンにするなどの方法で検出結果を示すようにしてもよい。この場合、RAMクリアスイッチの操作が検出されたか否かに関わらず、ウェイトタイマ処理2で規定された待ち時間が確保されるよう、プログラムを構成しておくことが好ましい。
ウェイトタイマ処理2(図5のステップS26)が終わった後の処理について、引き続き説明する。
CPU111は、RAMクリア報知フラグRCLが値0である時(図5のステップS28)、即ちRAMクリアスイッチが操作されていない時には、RAM116に記憶されている遊技情報のチェックサムを算出する(ステップS30)。そして、チェックサムの値が前回の電源断時に予め算出されバックアップされていたチェックサムの値と一致しているか否かを判定する(ステップS32)。本実施例では、電源断時におけるチェックサムの算出と、電源投入時におけるチェックサムの算出(ステップS30)とは共通のサブルーチンで行うものとした。こうすることにより、チェックサムの算出自体の差異によるエラーの発生を回避できるからである。
チェックサムが一致しているときには、バックアップフラグBKが値1であるか否かを判定する(ステップS34)。バックアップフラグBKは、前回の電源断時に、遊技情報、チェックサムの値などが正常にバックアップされていることを表すフラグである。
バックアップフラグBKが値1であるときには、CPU111はバックアップフラグBKに値0をセットし、RAM116にROM114から読み出した復電時の設定を行う(ステップS36)。また、電源投入時コマンド作成処理、つまりバックアップされていた遊技情報に応じた各種コマンドをRAM116の所定記憶領域に記憶させる処理を行う(ステップS38)。
上述の通り、本実施例では、チェックサムによってバックアップ情報が正常か否かを検査するとともに、バックアップフラグBKに基づいて主制御側電源断時処理が正常に終了された否かを検査している。本実施例では、この2重チェックによってバックアップ情報が不正行為により記憶されたものであるか否かを検査しているのである。
一方、RAMクリア報知フラグRCLが値1のとき(ステップS28)、つまりRAMクリアスイッチが操作されているときには、後述する通りRAM116を初期化する処理を行う。チェックサムの値が一致していないとき、またはバックアップフラグBKが値0であるときも同様である(ステップS32、S34)。バックアップが正常に行われていないと判断されるからである。
RAM116の初期化として、CPU111は、RAMの全領域クリア処理、つまり、RAM116の全領域に値00Hを書き込むことによって、RAM116をクリアする処理を行う(ステップS40)。この処理によって、大当たり判定用乱数や初期値更新型のカウンタ等の値は初期値0にセットされる。
RAMの全領域とは、RAMの使用可能な全領域を意味する。本実施例では、RAMに物理的に備えられた全領域を使用するか、その半分を使用するかを、設定によって切換可能とした。後者の場合には、使用可能に設定された領域が、RAMクリア処理の対象としての「全領域」に該当する。
次に、CPU111はROM114から読み出した初期情報をRAM116にセットする(ステップS42)。
そして、CPU111はRAMクリア報知を行う(ステップS44)。RAMクリア報知とは、RAMクリアが行われたことを報知する音声出力を指示するRAMクリア報知コマンドをサブ制御基板310に出力する処理である。
以上の処理を完了すると、CPU111は割り込み初期設定を行い(ステップS46)、タイマ割り込み処理の割り込み周期を設定する。本実施形態では割り込み周期は4msとした。
CPU111が割り込み許可設定を行うと(ステップS48)、上述の割り込み周期でタイマ割り込み処理が繰り返し行われるようになる。
次にCPU111は主制御側メイン処理を実行する。
この処理は、ウォッチドッグタイマ初期化レジスタ(以下、単に「WCL」と称する場合もある)に予め設定された値Aをセットする(ステップS50)。これはウォッチドックタイマを初期化するために必要な処理の一つである。本実施例では、この値Aの他、後述する主制御タイマ割り込み処理において、値B、値Cが順次、設定された時に、ウォッチドックタイマが初期化されるように構成されている。
図示する通り、主制御側メイン処理はループを構成しているため、この処理が正常に繰り返されるとともに、主制御タイマ割り込み処理が周期的に行われる限り、WCLには、値A、B、Cが順に設定され、ウォッチドッグタイマは常に初期化され続ける。これに対し、CPU111の処理に異常が生じると、WCLの初期化が行われなくなるため、CPU111にリセットがかかり、CPU111は電源投入時の処理(ステップS10以降)を再度実行することになる。
WCLに値Aを設定した後、停電予告信号の入力がないときには(ステップS52)、CPU111は非当落乱数更新処理を行う(ステップS54)。非当落乱数とは、遊技中に用いられる乱数のうち抽選の当落判定にかかわらない乱数である。かかる乱数としては、例えば、抽選時に行われる変動表示のパターンを選択するための乱数が挙げられる。
CPU111は、主制御側メイン処理として、以上で説明したステップS50〜ステップS54を繰り返し行う。
一方、停電予告信号が入力されている場合(ステップS52)、CPU111は主制御側電源断時処理を行う。停電予告信号は、パチンコ遊技機1の電源が遮断されることにより、基準電圧が停電予告電圧より低くなった時に、電源基板が発する信号である。
主制御側電源断時処理では、CPU111はまず割り込み禁止設定を行う(ステップS56)。RAM116のチェックサムを算出している最中に、主制御側タイマ割り込み処理が行われてRAM116への書き込みがなされることを防ぐためである。
CPU111は、次に停電クリア信号を出力する(ステップS58)。また、遊技盤面に設置された種々のソレノイドやランプ等に出力している駆動信号を停止する。
そして、RAM116の遊技情報に基づいてチェックサムを算出し(ステップS60)、バックアップフラグBKに値1をセットする(ステップS62)。これによりバックアップ情報の記憶が完了する。
本実施例では、主制御側電源断時処理時には、以下に示す理由により、レジスタをバックアップする必要はない。つまり、実施例では、主制御側ループ処理のステップS52で、停電予告信号の状態を確認し、この信号が停電となる状態を示している場合に主制御側電源断時処理へ分岐している。停電となる状態とは、例えば、停電時にハイ、非停電時にロウとなる停電予告信号を用いる場合には、停電予告信号がハイとなることを意味する。このように、実施例では、予め決められた条件で、主制御側電源断時処理に移行するため、移行に際して、ループ処理や割込処理が中断されることがない。従って、実施例では、主制御側電源断時処理内でレジスタの内容をRAM116に退避する必要がないのである。本実施例の方法によれば、電源投入時に、スタックエリアの情報については、正しいか否かを判断する必要がないため、CPU111の処理負荷が軽減される利点がある。
本実施例の態様に対し、停電予告信号が停電となる状態を示している場合に、ノン・マスカブル・インタラプト信号をCPU111に入力し、不定期で主制御側電源断時処理を開始できるように構成してもよい。この場合には、主制御側電源断時処理を開始するタイミングに応じてレジスタの内容が変化する。従って、主制御側電源断時処理では、レジスタの内容をRAM116にバックアップしておくことが好ましい。また、チェックサムは、このバックアップした値も含めて求めることが好ましい。
その後、ウォッチドックタイマの初期化を行って(ステップS64)、無限ループに入ると、電源が遮断されることによりCPU111の動作は停止する。但し、電源が遮断されない場合には、無限ループ内で、ウォッチドックタイマが初期化されなくなるため、所定時間経過後にCPU111にリセットがかかり、CPU111は主制御側電源投入時処理(ステップS10以降)から再び行う。
本実施例では、主制御側電源投入時処理および主制御側電源断時処理の双方でチェックサムを算出している(ステップS30、S60)。チェックサムは、サブルーチンを用いることなく、それぞれ主制御側電源投入時処理および主制御側電源断時処理内に直接組み込んでもよいが、双方で共通に用いられるサブルーチンとしておくことが好ましい。こうすることにより、プログラム容量を低減することができる。
チェックサムは、種々の方法で算出可能である。また、精度向上を図るため、異なる2種類以上の演算方法を併用するようにしてもよい。例えば、加算、減算を交互に繰り返す方法を採ることができる。別の態様として、加算方式でチェックサムを算出し、結果が一致していた場合には、減算方式など別の方法で算出して、再度、確認するようにしてもよい。
チェックサムの算出には、RAM116の任意の情報を用いることが可能であるが、ワーク内の2バイト以上の情報を含めることが好ましい。こうすることにより、最も重要な情報を用いて整合性を確認することができる。
また、主制御側電源断時処理の実行タイミングが一定ではなく、ノン・マスカブル・インタラプトによって不定期に実行される場合のように、主制御側電源断時処理の実行時にレジスタの情報もRAM116のスタックに退避しておく場合には、ワークとスタックエリア用の双方の情報を利用してチェックサムを算出することが好ましい。例えば、ワークの情報と、スタックエリアの情報を用いて、それぞれチェックサムを算出してもよいし、双方の情報を混在させてチェックサムを算出してもよい。
また、本実施例では、RAM116の内容はバッテリによって保持されるため、チェックサムを算出するだけでバックアップ処理を完了している(ステップS60、S62)。これに対し、RAM116内に、バックアップ用の領域を設け、ワークの全部または主要な部分の情報を併せて退避しておくようにしてもよい。こうすることで、制御上の重要な情報をより確実にバックアップすることが可能となる。
バックアップ領域には、例えば、ワーク等の情報を、ビット反転させて格納してもよい。こうすることによって、本来のワークの値と、バックアップ領域の値との排他的論理和(XOR)がFFHとなれば、これらのデータは正常であると容易に判断することが可能となる。
バックアップ領域にバックアップ情報を格納する処理は、例えば、主制御側電源断時処理内で行うことができる。また、主制御側メイン処理のループ内で行うようにしてもよい。主制御側メイン処理のループ内で行う場合には、バックアップ情報の格納時にワークの情報が変わってしまうことを避けるため、割込禁止とした上で格納を行うことが好ましい。
主制御側メイン処理のループ内でバックアップ情報の格納を行う場合、無駄な処理を抑制するため、一旦、バックアップ情報の格納が行われた後は、主制御側タイマ割り込み処理が行われるまで、情報の格納を省略するようにしてもよい。同様の効果を、比較的簡易な制御処理で実現するため、主制御側メイン処理のループ内での情報の格納に代えて、主制御側タイマ割り込み処理が行われた後、主制御側メイン処理に復帰する直前にバックアップ情報を格納するようにしてもよい。こうすれば、主制御側タイマ割り込み処理が行われる度に、バックアップ情報を更新することが可能となる。
また、バックアップ領域を複数、設け、バックアップ情報の格納を行うたびに、これらの領域を順次、使い分けるようにしてもよい。こうすることにより、過去の複数時点でのバックアップ情報を格納することが可能となる利点がある。
RAM内のバックアップ領域に退避されたワークの情報は、その後、主制御側電源投入時処理が実行された時に、次の方法で活用することができる。説明の便宜上、ここではCPU111が制御処理において参照するワークをメインワークと称し、バックアップ領域に退避されたワークをサブワークと称するものとする。
電源投入時には、CPUはメインワークの内容、サブワークの内容が正常か否かを、それぞれチェックサムによって確認する(図5のステップS30、S32)。メインワークの内容が正常な場合には、そのまま制御処理を続ければよい。メインワークが誤っており、サブワークが正しい場合には、サブワークの内容をメインワークに上書きして制御処理を続ける。メインワークおよびサブワークの双方が誤っている場合には、RAMクリアを行う(図5のステップS40)。
こうすることによって、サブワークの情報を制御処理に有効活用することが可能となる。
サブワークの情報をメインワークに上書きした場合、サブワークの情報はそのまま放置してもよい。CPU111は、制御処理においてサブワークの情報を直接参照することはないからである。ただし、ノイズ等の影響で、CPU111が、サブワークに記憶されている情報を誤って参照してしまい処理に悪影響を受けるおそれが、ないとは言えないため、サブワークは初期化しておいた方が好ましい。
C2.主制御側タイマ割り込み処理:
図6は主制御側タイマ割り込み処理のフローチャートである。主制御基板110のCPU111によって、所定の割り込み周期(本実施形態では、4ms)ごとに繰り返し行われる処理である。
処理を開始すると、CPU111は、レジスタを退避してから(ステップS70)ウォッチドックタイマ初期化レジスタWCLに値Bをセットし(ステップS72)、割り込みフラグを初期化する(ステップS74)。レジスタの退避は、擬似RAM以外の領域に行う。本実施例では、スタックに退避するものとした。
以下、CPU111は、図示する各処理を順次、実行する。これらの処理の実行順序は、図示した順序に限らない。
スイッチ入力処理(ステップS76)はパチンコ機の各種スイッチの信号を入力する処理である。入力する信号としては、普通入賞口、始動入賞口、大入賞口に入球した遊技球の検出信号、賞球の払出コマンドの受信時に払出制御基板210が出力するACK信号、などが挙げられる。
タイマ減算処理(ステップS78)は、種々の時間管理に利用されるタイマ値を減算する処理である。初期値が設定されたタイマ値が、この減算処理によって4msずつ減算され、値0になることで、初期値に相当する時間の経過を検出することができる。タイマ値は、管理対象となる時間ごとに設けられている。管理対象となる時間としては、例えば、変動表示パターンに従って特別図柄表示装置41が点灯する時間、普通図柄変動表示パターンに従って普通図柄表示器が点灯する時間、払出制御基板210からのACK信号を入力するまでの所要時間などが挙げられる。
当落乱数更新処理(ステップS80)は、遊技中に抽選等に利用される種々の乱数値を更新する処理である。本実施例では、抽選等の度に乱数を発生させる方法ではなく、種々の乱数値を値1ずつカウントアップする方法をとっている。このように乱数を規則的に変化させたとしても、入賞口への入球など、各乱数を使うことになるイベントが不規則に発生するため、十分、抽選用の乱数として機能するのである。カウントアップに加えて、乱数が一巡したときには、乱数の初期値を切り換える処理も併用している。
ここで更新される乱数としては、例えば、大当たりの判定に使用される大当たり判定用の乱数などが挙げられる。また普通図柄に関しては、普通図柄の当たり判定に使用される普通図柄当り判定用乱数などが挙げられる。
賞球制御処理(ステップS82)は、払出制御基板210へのコマンド送出処理である。例えば、遊技球が入賞した時には、遊技球を払い出す旨を払出制御基板210に指示する賞球コマンドを作成し、払出制御基板210に送信する。また、払出制御基板210からACK信号が所定時間内に入力されないときには、払出制御基板210との接続状態を確認するためのセルフチェックコマンドなどを作成し、払出制御基板210に送信する。
枠コマンド受信処理(ステップS84)は、パチンコ機の枠側に取り付けられている払出制御基板210から送信されるコマンドを主制御基板110で受信する処理である。払出制御基板210のコマンドには、例えば賞球ユニットが球がみを起こして遊技球を払い出せないなどの異常を表す状態コマンドが挙げられる。
不正行為検出処理(ステップS86)は、入賞口への入賞に関する異常状態を確認し報知する処理である。例えば、大当たり遊技状態でないときに大入賞口に遊技球が入球したのを検知した場合には、CPU111は異常と判断して入賞異常報知コマンドを作成し、サブ制御基板310に出力する。
特別図柄及び特別電動役物制御処理(ステップS88)では、CPU111は、まず始動入賞口への入賞検出に応じて、大当たり判定用の乱数を予め記憶されている判定値と比較して、大当たりか否かを判定する。また、判定結果に応じて、図柄用および変動表示用の乱数値に基づいて、表示すべき図柄およびその変動パターンを決定し、その演出を行わせるための遊技演出コマンドを作成する。大当たりと判定されたときは、図柄変動の停止後に遊技盤の大入賞口の開閉板を開閉動作させる駆動信号を出力する。
普通図柄及び普通電動役物制御処理(ステップS90)でも同様に、CPU111は、普通図柄当り判定用乱数に基づく当たり判定、普通図柄の変動制御および当たり時において入賞口の開閉翼を開閉動作させるための開閉翼ソレノイドの駆動制御を行う。
ポート出力処理(ステップS92)は、上述の種々の処理で説明した大入賞口や普通電動役物の開閉翼ソレノイド等の信号を、主制御I/Oポートの出力端子から出力する処理であり、サブ統合基板コマンド送信処理(ステップS94)は、上述の種々の処理で設定した演出制御用のコマンドをサブ制御基板310に出力する処理である。
本実施例では、CPU111は、上述の各処理の実行時には、それぞれ出力すべき情報およびコマンドを設定してRAM116に記憶させておき、ポート出力処理およびサブ統合基板コマンド送信処理において、RAM116から情報・コマンドを読み出して出力する方法をとっている。
CPU111は、以上の処理を終えた後、ウォッチドックタイマ初期化レジスタWCLに値Cをセットする(ステップS96)。この処理、ステップS72の処理、および主制御側メイン処理(図5のステップS50)によって、ウォッチドックタイマ初期化レジスタWCLには、値A、値Bそして値Cが順にセットされるため、ウォッチドックタイマが初期化される。
主制御側タイマ割り込み処理が開始された時点で、CPU111は、汎用レジスタの内容をスタックに積んで退避させる。従って、以上の処理を完了すると、CPU111は、スタックに積んで退避した内容を読み出し、もとのレジスタに書き込むことによって、レジスタの復帰を行い(ステップS98)、割り込み許可の設定を行って、このルーチンを終了する。
C3.サブ統合側処理:
サブ制御基板310は、主制御基板110からのコマンドに応じて、種々の演出制御を行う。
図示を省略するが、サブ制御基板310が実行する処理も、主制御側メイン処理(図5)と同様のループと、主制御側タイマ割り込み処理(図6)と同様の割込処理から構成される。サブ制御基板310は2ms周期で割り込み処理を実行するとともに、16ms周期で「16ms定常処理」を実行する。
この16ms定常処理では、主制御基板110からの各種コマンドを解析するコマンド解析処理、パネル装飾ランプ12、枠装飾ランプ31(図1参照)の点灯制御を行うランプ処理、演出用の音声や警報音などの出力処理、装飾図柄制御基板350を介してLCD16に演出用の画面を表示させる処理、これらの処理が正常に行われていることを監視するウォッチドックタイマ処理、および役物の駆動パターンをスケジューラにセットする処理等を行う。
サブ制御基板310は、16ms定常処理を繰り返し実行する他、種々の割り込み処理を行う。かかる割り込み処理としては、2msタイマ割り込み、コマンド受信割り込み処理、コマンド受信終了割り込み処理があげられる。
C4.払出制御基板の制御処理:
払出制御基板210は、主制御基板110からの指示に従って、遊技媒体の払い出しを制御する。
払出制御基板210が実行する制御処理は、主制御基板110と同様、ループ状のメイン処理とタイマ割込処理とから構成することも可能であるが、本実施例では、メイン処理内で払出に必要な処理を繰り返し実行するものとした。
D.プログラム容量削減効果:
実施例で説明した種々の制御処理において、主制御基板110が出力する種々のコマンドは、一旦、RAM116に蓄えられた後、所定のタイミングでRAM116から読み出されて出力される。また、制御処理で用いられる種々のフラグや、情報もRAM116上に構築されたワークを利用して管理されている。
このように、実施例の制御処理では、RAM116に頻繁にアクセスが行われる。
本実施例では、主制御基板110のCPU111は、それぞれRAM116に対して、ロード/ストアコマンドおよびイン/アウトコマンドの双方でアクセスすることができる。このように擬似RAMは、イン/アウトコマンドでアクセスできる分、アクセス1回につき1バイトずつプログラム容量を削減することができる。プログラム中に擬似RAMへのイン/アウトコマンドでのアクセス箇所が増えるほど、プログラム容量の削減効果は大きくなる。
図7は擬似RAMの効果を示す説明図である。ある遊技機において、擬似RAMの有無でのプログラム容量の変化を比較して示した。
最上段は、擬似RAMを設けない場合である。つまり、RAMへのアクセスは、全てロード/ストアコマンドによって行われる場合を示している。この時の容量は550バイト強となっている。
2〜4段目は、擬似RAMを設けた場合である。それぞれ擬似RAMの容量を64バイト、128バイト、192バイトに変化させた場合を示した。図示する通り、プログラムの容量は、擬似RAMが64バイトの場合に10%、128バイトの場合に18%、192バイトの場合に31%削減される。
このように、本実施例によれば、イン/アウトコマンドでRAMへのアクセスを可能とする回路、つまりエリア区分判定部120を設けることによって、プログラムの容量を削減することが可能となる。RAMへのアクセスコマンド一つ当たりの削減量は1バイトに過ぎないが、頻繁に使用されるコマンドであるため、制御プログラム全体では、大きな削減効果を生むことができるのである。
E.制御プログラム開発支援装置:
E1.装置構成:
本実施例の主制御基板110は、以上で説明した通り、擬似RAM領域、即ちイン/アウトコマンドでメモリアクセスできる領域を有している。このため、制御プログラムの開発時には、開発者は、メモリアクセスの先が、擬似RAM領域か否かを考慮して、ロード/ストアコマンドおよびイン/アウトコマンドの使い分けを考慮した上で制御プログラムのコーディングを行う必要がある。そこで、本実施例では、制御プログラムの開発時における、コマンドの使い分けを考慮する負担を軽減するため、以下に示す、制御プログラムの開発支援装置を用いるものとした。
開発支援装置は、開発者が擬似RAM領域を考慮することなくコーディングしたアセンブリ言語の制御プログラムを読み込み、擬似RAM領域を考慮して、オブジェクトコードを生成する装置である。オブジェクトコードの生成にあたって開発支援装置は、入力した制御プログラム内のメモリアクセスに関する命令について、擬似RAM領域を考慮して、ロード/ストアコマンドかイン/アウトコマンドのいずれか好適な命令に変換する。そして、変換後の制御プログラムを元にオブジェクトコードを生成する。
擬似RAM領域を考慮してロード/ストアコマンドかイン/アウトコマンドを使い分ける作業は、開発支援装置が行うために、開発者はこれらのコマンドの何れが適しているかを意識・判断することなく制御プログラムのコーディングを行うことができるという利点がある。
図8は開発支援装置500の構成を示す説明図である。本実施例では、汎用のパーソナルコンピュータに、図示する種々の機能ブロックを実現するコンピュータプログラムをインストールすることによって、ソフトウェア的に構築する例を示す。開発支援装置500は、図示する機能ブロックの少なくとも一部をハードウェア的に構成してもよい。
コマンド入力部502は、キーボード、マウスなどの操作を介して開発者からの指示を入力する。この機能は、パーソナルコンピュータのOS(Operating System)で提供される機能を利用してもよい。入力される指示としては、例えば、擬似RAM領域を指定するエリア区分データや、擬似RAM領域を考慮したコマンドの使い分けを行う際の機能の指定などが挙げられる。コマンド入力部502からの指示は、図示する各機能ブロックに関連するが、図示の煩雑化を回避するため、図中では、エリア区分データ管理部504への伝達のみを矢印で示した。
エリア区分データ管理部504は、開発者から指定されたエリア区分データを保持し、ワーク最適化部508、コマンド変換部512、アセンブラ514などに受け渡す機能を奏する。本実施例では、図3に示した通り、擬似RAM領域はRAM116の先頭アドレスを含む範囲となっている。従って、エリア区分データとしては、開発者は擬似RAM領域の終端を入力すれば足りる。終端の実アドレスを入力してもよいし、先頭アドレスからの相対アドレス、即ち擬似RAM領域のサイズを入力してもよい。
ただし、オブジェクトコードを生成する際には、RAM116の実アドレスが必要となる。本実施例では、エリア区分データ管理部504は、予めRAM116、ROM114および入出力ポートのアドレス領域に関する情報を予め保持しておくものとした。もちろん、これらの情報を、開発支援装置500の稼働時に開発者が入力するようにしてもよいし、処理対象となる制御プログラム中に記載しておくものとしても構わない。
ソース入力部506は、アセンブリ言語で記述された制御プログラム(以下、「ソース」と呼ぶ)を読み込む。ソースは、機械語以外の言語で記述されたものであればよく、例えば、C言語などの高級言語で記述されていてもよい。
ソースは、開発支援装置500に別途インストールされたプログラムエディタを利用して作成されたものを読み込むようにしてもよいし、ネットワークまたは記録媒体経由で外部から入力するようにしてもよい。
ワーク最適化部508は、ソースに記述された種々の命令の中から、RAM116へのアクセスを伴う命令を抽出し、擬似RAM領域が有効に活用されるよう、各アクセス命令に対してRAM116上の実アドレスを割り当てる機能(以下、「最適化処理」と呼ぶ)を奏する。最適化処理の詳細な内容は、後述する。最適化されたソースは、コマンド変換部512に受け渡される。
最適化処理はオプションであり、開発者が最適化不要を指示している場合には、ワーク最適化部508は、ソースをそのままコマンド変換部512に受け渡す。コマンド変換部512が、ソース入力部506から、直接、ソースを受け取るように構成してもよい。
コマンド変換部512は、ソースに記述された命令のうち、RAM116へのアクセスを伴う命令について、エリア区分データに基づいて、アクセス先が擬似RAM領域か否かを判断する。そして、アクセス先が擬似RAM領域の場合には、イン/アウトなどの入出力ポートアクセスコマンドへの変換を行う。擬似RAM領域でない場合には、ロード/ストアコマンドなどのメモリアクセスコマンドをそのまま用いる。コマンド変換部512は、コマンド変換後のソースをアセンブラ514に受け渡す。
アセンブラ514は、受け取ったソースに基づき、アセンブリ言語の各命令を機械語に変換して、オブジェクトコードを生成する。この際に必要となるRAM116、ROM114、入出力ポートの実アドレスは、エリア区分データ管理部504から受け取る。ソース中に記載しておくものとしてもよい。
開発支援装置500には、この他、主制御基板110のブート用のデータを生成する機能を持たせても良い。先に説明した通り、本実施例では、起動時にROM114からエリア区分データを読み込み、エリア区分判定部120内に設定する(図2参照)。このブート用のデータを生成する機能をアセンブラ514に用意するのである。開発者が擬似RAM領域を指定可能な場合には、こうしておくことにより、オブジェクトコードの作成時に使用されたエリア区分データと、ブート用のデータに組み込まれるエリア区分データとの間に誤って不整合が生じることを回避することができる利点がある。また、不整合が生じた場合には、ワーニングを出力するようにしてもよい。
表示制御部510は、ワーク最適化部508、コマンド変換部512、アセンブラ514などによって生成されるソースの表示などを行う。図の煩雑化を回避するため、他の機能ブロックとの関係は省略しているが、表示制御部510は、種々の機能ブロックから情報を受け取って表示させることが可能であり、例えば、コマンド入力用の画面の提示などを行っても良い。表示制御部510は、パーソナルコンピュータのOSで提供される機能を利用してもよい。
結果出力部516は、以上の各機能ブロックからの処理結果を出力する。本実施例では、プリントファイル、オブジェクトファイル、クロスリファレンス、シンボルファイルなどを出力するものとした。変換後のソースプログラム、変換効率を示すデータなどを出力するようにしてもよい。変換効率とは、メモリアクセスコマンドから入出力ポートアクセスコマンドへの変換によるプログラム容量の削減効率を表すデータである。開発者は、変換効率を参照して、擬似RAM領域の設定に活かすことができる。
オブジェクトファイルは、既に説明した通り、ソースを機械語に変換したファイルである。
プリントファイルとは、ソースに対して、実アドレスおよび機械語を付加したファイルである。オブジェクトファイルのデバッグなどに利用可能である。プリントファイルには、アセンブラ514が受け取るソース、つまり擬似RAM領域を考慮してイン/アウトコマンドへの変換が行われたソースを用いるものとした。ソース入力部506が入力したソースから変換された箇所に、アンダーラインを付すなどして、変換されたことを開発者が視覚的に認識可能な形式で出力するものとしてもよい。
クロスリファレンスとは、プリントファイル上で、指定されたラベルが記載された箇所、例えば行番号を示すファイルである。開発者が、プリントファイルを参照する際に活用可能である。
シンボルファイルとは、指定したラベルの実アドレス等の数値を示すファイルである。各ラベルの擬似RAM領域等への割り当てが適切に行われているか否かを点検するために活用可能である。
E2.オブジェクトコード生成処理:
図9はオブジェクトコード生成処理のフローチャートである。開発支援装置500のCPUが、実行する処理である。
処理を開始すると、CPUは、まず開発者からの指示を入力する(ステップS100)。入力すべき指示としては、例えば、ソースの指定、エリア区分データ、および最適化処理の要否、最適化をする場合には、そのオプションなどが挙げられる。最適化のオプションの内容については、後述する。
CPUは開発者から最適化を指示された場合には(ステップS102)、最適化処理を実行する(ステップS110)。最適化処理は、先に説明したワーク最適化部508(図8参照)の機能に相当する処理であり、ソースにおいてRAM116へのアクセスを伴う命令に対し、擬似RAM領域が有効に活用されるようRAM116上の実アドレスを割り当てる処理である。最適化処理の内容は後述する。
次に、CPUはソースを読み込み(ステップS190)、メモリアクセスコマンド変換処理を行う(ステップS200)。最適化処理が行われている場合には、ステップS190では、最適化されたソース(以下、「最適化ソース」と呼ぶ)を読み込む。
メモリアクセスコマンド変換処理(ステップS200)とは、先に説明したコマンド変換部512(図8参照)の機能に相当する処理であり、ソース内のRAM116へのアクセスを伴う命令のうち、擬似RAM領域にアクセスする命令を、イン/アウトなどの入出力ポートアクセスコマンドに変換する処理である。この変換処理を経たソースを、以下、「変換ソース」と呼ぶものとする。メモリアクセスコマンド変換処理の内容は後述する。
CPUは、以上の処理によって生成された変換ソースに基づいて、アセンブリ言語を機械語に変換するアセンブルを行い(ステップS300)、図8で示した6種類のファイルを結果を出力して(ステップS302)、処理を終了する。
E3.最適化処理:
図10は最適化処理のフローチャートである。オブジェクトコード生成処理(図9)のステップS110に相当する処理であり、RAM116へのアクセス命令に対して、擬似RAM領域が有効に活用されるようRAM116上の実アドレスを割り当てる処理である。
CPUはまずソースを読み込み(ステップS112)、メモリアクセスコマンドを抽出する(ステップS114)。例えば、メモリからのデータの読み出しを表す命令としてロードコマンド、メモリへのデータの格納を表す命令としてストアコマンドが用いられている場合には、アセンブリ言語のソースから、これらのコマンドを抽出するのである。抽出したコマンドには、ラベルまたは実アドレスの形で、RAM116へのアクセス先が指定されている。
次に、CPUはブロックごと、またはラベルごとのメモリアクセス数をカウントする(ステップS116)。
図中にカウントの例を示した。例えば、ロードコマンドまたはストアコマンドで、a、b、c、d等のラベルが指定されている場合、まずラベルごとにアクセス数をカウントする。図の例では、ラベルに「a」が指定されているロードコマンドまたはストアコマンドは1つであることを表している。同様にラベルb、c、dはそれぞれ8、3,10個であることを表している。
こうして得られた結果に基づいて、次にブロック単位でのアクセス数を計数する。ブロックとは、複数のラベルからなるまとまりであり、本実施例では、いずれのラベルをブロックとして構成するかを、開発者が指示入力(図9のステップS10)において最適化のオプション指示の一つとして指示するものとした。
制御プログラム中では、ラベルが連続したアドレス領域に格納されることを前提として処理が組まれている場合がある。このようなラベルについて、RAM116への実アドレスが連続して割り当てられるよう指示しておくのがブロックである。ブロックとして指定することにより、最適化処理においては、後述する通り、ブロック単位として扱われるため、ブロック内のラベルに対して分散した実アドレスが割り当てられることを回避できる。ブロックは、このように、まとめて扱う必要性を考慮して開発者が任意に設定可能である。
図中の例では、ラベルa、b、cが一つのブロックとして指定されているものとする。CPUは、このブロックのアクセス数は、ラベルa〜cの各アクセス数の合計である12であると計数する。ラベルdについては、ブロックとして指定されていないため、単体のアクセス数10をブロックのアクセス数に相当するものとして扱う。
ここでは、アクセス数の評価値として、各ブロック内のアクセス数の合計値を用いる場合を例示したが、各ブロックに属するラベルごとのアクセス数の最大値を用いるようにしてもよい。
次に、CPUは、各ラベルに対して擬似RAM領域を割り当てるための処理を行う。まず、CPUはステップS116の計数結果を参照し、アクセス数が最大のブロックまたはラベルを、処理対象として選出する(ステップS118)。ここで言うラベルとは、ブロックを構成せず単一でアクセス数が計数されたラベルのことを意味する。
そして、CPUは対象ラベルに擬似RAM領域を割り当てる(ステップS120)。図中にラベルの割り当て例を示した。図の例では、ラベルeのアクセス数が15で最大となっているから、CPUは、まずラベルeに擬似RAM領域を割り当てることになる。
CPUは、以上の処理を、全ラベルについて割り当てが終了するまで、または擬似RAM領域が完全に埋まるまで(ステップS122)、対象ラベルを更新しながら(ステップS124)、繰り返し実行する。
例えば、ラベルeを割り当てた後は、まだ擬似RAM領域に余裕がある場合には、対象ラベルを更新する(ステップS124)。ここでは、ラベルeの次にアクセス数が多いブロックまたはラベルが処理対象として選出される。図の例では、ラベルa、b、cからなるブロックが処理対象となる。そして、ステップS120中に示すように、CPUは、ブロック内の各ラベルに対して擬似RAM領域を割り当てる。その後、また対象ラベルを、次にアクセス数の多いラベルdに更新し(ステップS124)、同様にして擬似RAM領域を割り当てる。
以上の例では、各ラベルに支障なく擬似RAM領域が割り当てできる場合を示した。擬似RAM領域の残容量によっては、ラベルa、b、cからなるブロックへの割り当てができない場合も生じる。かかる場合には、CPUはラベルの割り当てをせずにステップS120を終了すればよい。この時点で、擬似RAM領域に残容量があり、割り当て未了のラベルがあれば、処理は終了とならず(ステップS122)、CPUは次にアクセス数が多いラベルdに、対象ラベルを更新し(ステップS124)、擬似RAMの割り当てを行う(ステップS120)。このように、擬似RAM領域の残容量不足の場合でも、処理を継続することによって、擬似RAM領域を無駄に残さずに割り当てることが可能となる。
CPUは、以上の処理によって、割り当てが完了すると(ステップS122)、最適化されたソース(最適化ソース)を出力して(ステップS126)、最適化処理を終了する。先に図9で説明した通り、この最適化ソースがメモリアクセスコマンド変換処理およびアセンブルに供されることになる。
E4.メモリアクセスコマンド変換処理:
図11はメモリアクセスコマンド変換処理のフローチャートである。オブジェクトコード生成処理(図9)のステップS200に相当する処理であり、ソース内のRAM116へのアクセスを伴う命令のうち、擬似RAM領域にアクセスする命令を、イン/アウトなどの入出力ポートアクセスコマンドに変換する処理である。
処理を開始すると、CPUはソース中の最初のコマンドを読み込む(ステップS202)。そのコマンドがメモリアクセスコマンドでない場合には(ステップS204)、ソースの最後まで処理が終了していなければ(ステップS218)、以下で説明する処理を行うことなく、次のコマンドに移行する。
メモリアクセスコマンドの場合には(ステップS204)、そのラベルに実アドレスが割り当て済みか否かを判定する(ステップS206)。最適化処理(図10)において擬似RAM領域に割り当てられたラベル、ソースにおいてアクセス先がもともと実アドレスで指定されている場合、およびメモリアクセスコマンド変換処理の従前の処理で実アドレスが割り当てられたラベルの場合には、割り当て済みと判断される。
割り当てが未了のラベルに対しては(ステップS206)、CPUは、擬似RAM領域に空き領域があれば(ステップS208)、擬似RAM領域を割り当て(ステップS210)、空きがない場合には(ステップS208)、通常領域、つまりRAM116のうち、擬似RAM領域以外の領域の実アドレスを割り当てる(ステップS212)。
このように擬似RAM領域に空きがある限り、擬似RAM領域を優先的に割り当てることによって、擬似RAM領域を無駄なく活用することができる。また、こうすることによって、ワークの連続性を確保することができる利点もある。先に説明した通り、遊技機では不正防止の観点からメイン制御装置での制御処理で使用するワークをRAM116の先頭アドレスから連続した領域に設けることとしている。本実施例では先頭アドレスを含む領域に擬似RAM領域を配置しているため、ワークの連続性を確保するためには、擬似RAM領域の空き領域への割り当てを優先することが好ましいのである。
割り当てがなされているラベルの場合には(ステップS206)、上述の割り当て処理(ステップS208〜S212)はスキップする。
また、図9のステップS100において最適化が指示され、図9のステップS110で最適化処理が行われている場合には、図11のステップS208〜S212の処理は省略してもよい。これらは、最適化処理と実質的に同様な処理だからである。
CPUは、次に、割り当てられた実アドレスに基づき、擬似RAM領域へのアクセスか否かを判断する(ステップS214)。擬似RAM領域のアドレスは、予め入力されたエリア区分データ(図9のステップS100)で指定されているから、各ラベルの実アドレスが、エリア区分データで指定された範囲内にあれば、擬似RAM領域へのアクセスであると判断される。
擬似RAM領域へのアクセスの場合には(ステップS214)、CPUは、メモリアクセスコマンドを入出力ポートアクセスコマンドに変換する(ステップS216)。図中に、変換例を示した。変換前のソースSC1において、「LD A,(a)」は、CPU内のアキュムレータAに、ラベルaのアドレスが示すメモリの値を設定することを表すコマンドである。ラベルaには擬似RAM領域が割り当てられているとすると、CPUは、変換後のソースSC2に示すように、ロード(LD)コマンドをイン(IN)コマンドに変換する。この結果、コマンドは、「IN A,(aL)」となる。ここで、ラベルの後に付した「L」は下位アドレスであることを意味する。つまり、aLは、ラベルaで表されるアドレス値の下位アドレスとなる。以下、同様に下位アドレスにはLを付して示すものとする。
ラベルbも擬似RAM領域が割り当てられているとすると、同様に、アキュムレータAの値をラベルbにストアすることを表す「ST A,(b)」というコマンドは、アウト(OUT)コマンドに変換され、「OUT A,(bL)」となる。
擬似RAM領域へのアクセスでない場合には(ステップS214),上述の変換処理はスキップされる。ソースSC1中のラベルfには通常領域が割り当てられているとすると、「LD B、(f)」というコマンドについては、変換処理がスキップされるため、変換後のソースSC2においても、同じコマンドのまま残される。
CPUは、以上の処理を、ソースの全コマンドについて終了するまで(ステップS218)、繰り返し実行した後、コマンド変換したソース(変換ソース)を出力して(ステップS220)、この処理を終了する。生成されたソースは、先に説明した通り、アセンブル処理(図9のステップS300)によって、オブジェクトコードに変換される。
以上で説明した本実施例の開発支援装置500によれば、開発者は、アクセス先が擬似RAM領域か否かを意識することなく制御プログラムを開発することができる。従って、制御プログラムの開発効率を向上させることができ、メモリアクセスコマンドと入出力ポートアクセスコマンドの使い分けの誤りによるエラーが生じる可能性を抑制することができる。
また、本実施例における最適化処理を施すことにより、擬似RAM領域が無駄なく活用されるよう、ラベルへの割り当てを行うことが可能となる。この結果、入出力ポートアクセスコマンドを用いることによるプログラムサイズの削減効果を十分に得ることが可能となる。
E5.オブジェクトコード生成処理の変形例:
実施例では、メモリアクセスコマンド変換処理(図11)において、一旦、メモリアクセスコマンドを入出力ポートアクセスコマンドに変換した変換ソースを出力した上で、アセンブルする例を示した。オブジェクトコードは、入出力ポートアクセスコマンドへの変換と機械語への変換を並行して行うことにより、変換ソースの生成を経ずに、生成するようにしてもよい。変形例では、かかる処理例を示す。
図12は変形例としてのオブジェクトコード生成処理のフローチャートである。
処理を開始すると、CPUは実施例と同様、指示を入力し(ステップS100)、最適化処理が指示されている場合には(ステップS102)、最適化処理を行って最適化ソースを生成する(ステップS110)。
その後、メモリアクセスコマンド変換処理(図11)およびアセンブル(図9のステップS300)に相当する処理を実行するが、変形例では、これらの処理を並行して行うことにより、変換ソースを生成せずにオブジェクトコードを生成する。
つまり、CPUは、メモリアクセスコマンド変換処理(図11)と同様、ソースのコマンドを読み込み(ステップS202)、メモリアクセスコマンドか否かを判断する(ステップS204)。メモリアクセスコマンドの場合において(ステップS204)、ラベルに実アドレスが割り当て済みでなければ(ステップS206)、擬似RAM領域の空きの有無に応じて(ステップS208)、擬似RAM領域または通常領域を割り当てる(ステップS210、S212)。ラベルに実アドレスが割り当て済みの場合には(ステップS206)、これらの処理はスキップする。
最適化が指示され、ステップS110の最適化処理が行われている場合には、ステップS208〜S212の処理は省略してもよい。これらは、最適化処理と実質的に同様な処理だからである。
次に、CPUはコマンドがメモリアクセスコマンドでない場合(ステップS204)、および擬似RAM領域へのアクセスでないメモリアクセスコマンドの場合(ステップS212)には、そのままコマンドを機械語に変換する(ステップSS230)。
一方、擬似RAM領域へのメモリアクセスコマンドである場合には(ステップS214)、メモリアクセスコマンドを入出力ポートアクセスコマンドとみなして、機械語に変換する(ステップS232)。図11中に示した例に沿って説明すると、「LD A、(a)」というコマンドについては、擬似RAM領域へのアクセスであるため、「IN A,(aL)」であるとみなして、機械語への変換を行うのである。こうすることによって、入出力ポートアクセスコマンドに変換した変換ソースを生成するまでなく、擬似RAM領域か否かによってメモリアクセスコマンドと入出力ポートアクセスコマンドとの使い分けを反映したオブジェクトコードを生成することができる。
CPUは、以上の処理を、ソースの全コマンドについて終了するまで(ステップS234)、繰り返し実行し、結果を出力して(ステップS236)、オブジェクトコード生成処理を終了する。結果の出力は、実施例と同様の4種類のファイルとすることができる。但し、実施例では、プリントファイルに変換ソースを出力するものとしたが、変形例ではオリジナルのソースまたは最適化ソースを用いることになる。これらのソースにおいて、入出力ポートアクセスコマンドに変換された箇所を開発者が、容易に認識できるようにするため、入出力ポートアクセスコマンドに対応する機械語にアンダーラインを付すなどして視覚的に識別しやすい出力形式をとってもよい。
F.主制御基板110の変形例:
パチンコ機1の制御基板の回路構成は、以下に示す通り、種々の変形例が可能である。ここでは、主制御基板110の変形例を示すが、払出制御基板210についても同様の変形例が適用可能である。
F1.回路構成の変形例(1):
図13は主制御基板の変形例(1)を示す説明図である。実施例では、IOにアクセスするためのアドレス空間を確保しておく必要上、擬似RAM領域は、8ビットのアドレス空間の一部にとどまる例を示した。変形例では、8ビットのアドレス空間全体を擬似RAM領域とすることができる回路例を示す。
変形例の回路では、メモリエリアデコーダ113AおよびIOデコーダ122の構成が、実施例(図2)と相違する。その他の構成は、実施例と同じであるため説明を省略する。
メモリエリアデコーダ113Aは、アドレスに基づいてアクセス先がROM、RAM、IO領域(受信バッファ123r、送信バッファ123s)のいずれに当たるかを判断し、それぞれチップセレクタ信号MCS2、MCS1、およびMIOCS1、MIOCS2を出力する。ここでは2種類のIOを備える例を示したが、更に多くのIOを設けても良い。この場合には、メモリエリアデコーダ113Aから、各IOに対してチップセレクタ信号が接続される。
変形例の構成では、エリア区分判定部120は実施例と同様の機能を果たす(図2、図3参照)。つまり、イン/アウトコマンドが入力された時、指定された8ビットのアドレス値と、エリア区分データ121とを比較して、アクセス先がIOか擬似RAM領域かを判定し、IOエリア識別信号またはチップセレクタ信号MCS0を出力する。
変形例の構成によれば、実施例と同様に、8ビットのアドレス空間の一部を擬似RAM領域に割り当てることができる。この場合には、イン/アウトコマンドが入力された時に、エリア区分判定部120がアクセス先を切り換える機能を果たすことになる。
変形例では、更に、8ビットのアドレス空間全体を擬似RAM領域に割り当てることも可能となる。エリア区分データ121に、「FFH」、つまり8ビットのアドレス空間の最大値を設定しておけば、エリア区分判定部120は無条件に擬似RAM領域へのアクセスが要求されているものと判断するようになり、アドレスバスA7〜A0によって確保し得るRAM116の擬似RAM領域全体にアクセスすることが可能となる。
この時、IOへのアクセスはロード/ストアコマンドによって確保される。メモリエリアデコーダ113Aにおいて、RAMの全領域を除く範囲にIO領域を設定しておけばよい。具体的には、アドレス空間の上位の所定ビットの差異によって、RAM116、ROM114、IO領域を規定することになる。こうしておけば、RAM116,IOのそれぞれに対して、下位8ビット分のアドレスを確保することができる。
IOへのアクセスを行う場合、CPU111がIO領域に対応するアドレスを指定してロード/ストアコマンドを出力すると、メモリエリアデコーダ113Aはアクセス先がIOであると判断してチップセレクタ信号MIOCS1、MIOCS2のいずれかをアクティブにする。この結果、指定されたIOにアクセスすることが可能となる。
また、メモリエリアデコーダ113Aは、アドレスA15〜A0の全空間に基づいてチップセレクタの出力が可能であるため、変形例の回路によれば、RAMおよびIOの双方にロード/ストアコマンドでアクセスすることが可能である。
また、実施例と同様、RAM116の一部が擬似RAM領域となるようエリア区分判定部120のエリア区分データ121において設定しておけば、擬似RAM領域に対しては、イン/アウトコマンドでアクセス可能となる。この時、擬似RAM領域に割り当てられなかった領域、つまり8ビットのアドレス空間の最後の方の領域は、イン/アウトコマンドでアクセス可能なIO領域となる。
このように設定することにより、RAM116およびIOそれぞれの一部について、ロード/ストアコマンドおよびイン/アウトコマンドの双方でアクセスすることが可能となる。
このように変形例の回路によれば、RAM116およびIOの双方について、ロード/ストアコマンド、イン/アウトコマンドの双方でのアクセスが可能となる。擬似RAM領域を大きくすれば、イン/アウトコマンドでRAM116にアクセスすることができる分、プログラムの削減効果も大きくなる。しかし、一方、擬似RAM領域を大きくすることによって、IOへのアクセスにロード/ストアコマンドを使用する必要が生じると、その分、プログラムサイズが大きくなる。RAM116およびIOへのアクセス数は、プログラムの内容によって異なるから、上述の相反する効果を考慮して、プログラムサイズを最小にすることができる最適の擬似RAM領域のサイズもプログラムごとに求めることができる。
変形例の回路構成では、IOへのアクセスは、アクセス先のアドレスによっては、メモリアクセスコマンドであるロード/ストアコマンドを用いる場合が生じる。ロード/ストアコマンドでアクセスすることになるIO領域を疑似IO領域と呼ぶものとする。このように疑似IO領域が設けられる場合、開発支援装置500は、メモリアクセス変換処理(図11)において、IOへのアクセスも処理対象とすることが好ましい。つまり、入出力ポートアクセスコマンドについて、アクセス先が疑似IO領域に該当すると判断される場合には、入出力ポートアクセスコマンドをメモリアクセスコマンドに変換するのである(図11のステップS214、S216参照)。
こうすることによって、開発者は、IOへのアクセスについても、疑似IO領域か否かを考慮するまでなく制御プログラムの開発を行うことが可能となる。
F2.回路構成の変形例(2):
図14は主制御基板の変形例(2)を示す説明図である。この変形例では、RAM116の全領域を擬似RAM領域とし、IOへのアクセスはロード/ストアコマンドによって行う回路例を示す。
図示する通り、この変形例の回路では、エリア区分判定部120は存在しない。CPU111は、RAM116にアクセスする際には、イン/アウトコマンドとともに、下位アドレスA7〜A0を指定する。IOREQは、直接、RAM116のチップセレクタ信号として入力されているため、イン/アウトコマンドは無条件にRAM116へのアクセスを意味することになる。CPU111は、イン/アウトコマンドによって、RAM116の下位アドレスA7〜A0に対応する全領域へのアクセスが可能となる。
一方、メモリエリアデコーダ113Bからは、チップセレクタ信号IOCS1,IOCS2が受信バッファ123r、送信バッファ123sにそれぞれ出力される。CPU111が、ロード/ストアコマンドを出力すると、メモリエリアデコーダ113Bは、指定されたアドレスに基づいてRAM116、IO(受信バッファ123r、送信バッファ123s)のいずれへのアクセスかを判断し、チップセレクタ信号MCS2、IOCS1,IOCS2のいずれかをアクティブにする。この結果、ROMおよびIOにそれぞれアクセスすることが可能となる。
この変形例の回路によれば、RAM116へのアクセスを全てイン/アウトコマンドで行うことができるため、プログラムサイズを削減することができる。また、エリア区分判定部120を設けなくてもすむ分、回路構成が簡素なもので済むという利点もある。
この変形例では、RAM116へのアクセスは全て入出力ポートアクセスコマンドで行い、IOへのアクセスは全てメモリアクセスコマンドで行われるため、開発支援装置500においては、メモリアクセスコマンド変換処理(図11)のステップS214の判断を省略し、ステップS216において、メモリアクセスコマンドを無条件に入出力ポートアクセスコマンドに変換すればよい。また、ステップS204を、「メモリアクセスコマンドまたは入出力ポートアクセスコマンド?」と変更することによって、入出力ポートアクセスコマンドも処理対象にするとともに、ステップS216において、入出力ポートアクセスコマンドを無条件にメモリアクセスコマンドに変換すればよい。こうすることによって、開発者は、通常通り、RAM116にはメモリアクセスコマンドを用い、IOへのアクセスには入出力ポートアクセスコマンドを用いることができ、無用な混乱なく制御プログラムを開発することができる。
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
実施例では、パチンコ機1への適用例を示したが、本発明はスロットマシンへの適用も可能である。
また、実施例では、主制御基板110に擬似RAM領域を設ける構成を示したが、主制御基板110に代えて、または主制御基板110と共に、この構成を払出制御基板210に適用してもよい。
実施例では、RAM領域にイン/アウトコマンドでアクセス可能とする例を示したが、同様の構成をROMに適用することによって、インコマンドでROMにアクセス可能としてもよい。
実施例としてのパチンコ機1の制御用ハードウェア構成を示すブロック図である。 主制御基板110の回路構成を示す説明図である。 主制御基板110の動作を示す説明図である。 主制御側電源投入時処理の一例を示すフローチャート(1)である。 主制御側電源投入時処理の一例を示すフローチャート(2)である。 主制御側タイマ割り込み処理のフローチャートである。 擬似RAMの効果を示す説明図である。 開発支援装置500の構成を示す説明図である。 オブジェクトコード生成処理のフローチャートである。 最適化処理のフローチャートである。 メモリアクセスコマンド変換処理のフローチャートである。 変形例としてのオブジェクトコード生成処理のフローチャートである。 主制御基板の変形例(1)を示す説明図である。 主制御基板の変形例(2)を示す説明図である。
符号の説明
1…パチンコ機
4a…表示部
4b…操作スイッチ
12…パネル装飾ランプ
16…LCD
20…賞球払出装置
21…払出モータ
22…払出球検出器
23…モータ駆動センサ
29…スピーカ
31…枠装飾ランプ
32、34…ランプ中継基板
41…特別図柄表示装置
42…入賞検出器
43…大入賞口ソレノイド
47…発射制御基板
48…タッチ検出部
49…発射モータ
110…主制御基板
111…CPU
112…バスバッファ
113、113A、113B…メモリエリアデコーダ
113d…エリア区分データ
114…ROM
115…選択部
116…RAM
120…エリア区分判定部
121…エリア区分データ
122…IOデコーダ
123…パラレル入出力ポート
123s…送信バッファ
123r…受信バッファ
124…シリアル入出力制御部
124s…SP変換部
124p…PS変換部
210…払出制御基板
310…サブ制御基板
350…装飾図柄制御基板

Claims (6)

  1. 所定の遊技媒体を用いて遊技を行う遊技機において遊技の進行または演出を制御する制御装置が実行する制御プログラムの開発を、コンピュータによって支援する開発支援方法であって、
    前記制御装置は、
    前記制御を実行するためのCPUと、
    前記CPUが実行するプログラムを格納するためのメモリとしてのROMと、
    前記制御に用いられる種々の情報を格納するためのメモリとしてのRAMと、
    前記制御において、前記制御装置の外部との信号を入出力するための入出力ポートとを有し、
    前記CPUは、メモリへのアクセスに使用されるコマンドであって2バイト以上のアドレス値を含むコマンド体系を有するメモリアクセスコマンドと、外部との信号の入出力に使用されるコマンドであって入出力先を指定するためのアドレス値が前記メモリアクセスコマンドよりも1バイト以上少ないコマンド体系を有する入出力ポートアクセスコマンドとを使用可能であり、
    更に、
    前記入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先を前記RAMおよび入出力ポートに切り換え、前記RAMおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力するエリア区分判定部を備え、
    前記入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号は、前記CPUから前記エリア区分判定部に入力されており、
    前記開発支援方法は、前記コンピュータが実行する工程として、
    (a) 前記制御装置のCPUの機械語以外の所定の言語で記述された前記制御プログラムを読み込む工程と、
    (b) 擬似RAM領域として、前記入出力ポートアクセスコマンドでアクセス可能な前記RAMのアドレス範囲を指定するエリア区分データを読み込む工程と、
    (c) 前記制御プログラムのうち前記RAMにアクセスする処理について、前記エリア区分データに基づいて該処理のアクセス先が前記擬似RAM領域であると判断される場合には、前記入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する工程とを備える開発支援方法。
  2. 請求項1記載の開発支援方法であって、
    前記工程(c)において、前記変換を行うとともに前記制御プログラムを機械語で表したオブジェクトコードを生成する開発支援方法。
  3. 請求項1または2記載の開発支援方法であって、
    前記エリア区分判定部は、前記アクセス先の切り換えの判断基準となるエリア区分データを、ソフトウェア的に設定可能であり、
    前記開発支援方法は、更に、(d)前記エリア区分データを、前記エリア区分判定部に設定するための設定データを生成する工程を有する開発支援方法。
  4. 請求項1〜3いずれか記載の開発支援方法であって、
    前記遊技機において、前記擬似RAM領域は、前記RAMの先頭アドレスを含む所定範囲内として構成されており、
    前記エリア区分データは、前記擬似RAM領域の終端を指定するデータである開発支援方法。
  5. 請求項1〜4いずれか記載の開発支援方法であって、
    前記工程(c)は、前記変換に先立って、
    (c1) 前記制御プログラムのうち前記RAMにアクセスする処理をカウントすることによって、前記アクセス先に基づいて設定された所定の分類ごとのアクセス回数を求める工程と、
    (c2) 前記アクセス回数の多い分類に含まれるアクセス先を、前記擬似RAM領域を優先的に割り当てる工程とを含む開発支援方法。
  6. 所定の遊技媒体を用いて遊技を行う遊技機において遊技の進行を統合制御する制御装置が実行する制御プログラムの開発を支援するためのコンピュータプログラムであって、
    前記制御装置は、
    前記統合制御を実行するためのCPUと、
    前記CPUが実行するプログラムを格納するためのメモリとしてのROMと、
    前記統合制御に用いられる種々の情報を格納するためのメモリとしてのRAMと、
    前記統合制御において、前記制御装置の外部との信号を入出力するための入出力ポートとを有し、
    前記CPUは、メモリへのアクセスに使用されるコマンドであって2バイト以上のアドレス値を含むコマンド体系を有するメモリアクセスコマンドと、外部との信号の入出力に使用されるコマンドであって入出力先を指定するためのアドレス値が前記メモリアクセスコマンドよりも1バイト以上少ないコマンド体系を有する入出力ポートアクセスコマンドとを使用可能であり、
    更に、
    前記入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先を前記RAMおよび入出力ポートに切り換え、前記RAMおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力するエリア区分判定部を備え、
    前記入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号は、前記CPUから前記エリア区分判定部に入力されており、
    前記コンピュータプログラムは、前記制御プログラムを開発するための開発コンピュータに、
    (a) 前記CPUの機械語以外の所定の言語で記述された前記制御プログラムを読み込む機能と、
    (b) 擬似RAM領域として、前記入出力ポートアクセスコマンドでアクセス可能な前記RAMのアドレス範囲を指定するエリア区分データを読み込む機能と、
    (c) 前記制御プログラムのうち前記RAMにアクセスする処理について、前記エリア区分データに基づいて該処理のアクセス先が前記擬似RAM領域であると判断される場合には、前記入出力ポートアクセスコマンドを用いた処理が行われるよう、制御プログラムの処理内容を変換する機能とを実現させるコンピュータプログラム。
JP2008005571A 2008-01-15 2008-01-15 遊技機用制御プログラムの開発支援方法 Pending JP2009165581A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008005571A JP2009165581A (ja) 2008-01-15 2008-01-15 遊技機用制御プログラムの開発支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008005571A JP2009165581A (ja) 2008-01-15 2008-01-15 遊技機用制御プログラムの開発支援方法

Publications (1)

Publication Number Publication Date
JP2009165581A true JP2009165581A (ja) 2009-07-30

Family

ID=40967475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008005571A Pending JP2009165581A (ja) 2008-01-15 2008-01-15 遊技機用制御プログラムの開発支援方法

Country Status (1)

Country Link
JP (1) JP2009165581A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011254984A (ja) * 2010-06-09 2011-12-22 Fujishoji Co Ltd 遊技機
JP2012245039A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2012245040A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2012245041A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2016034445A (ja) * 2014-08-04 2016-03-17 株式会社ユニバーサルエンターテインメント 演出シーケンスデータ生成装置、演出シーケンスデータ生成方法、及びプログラム
JP2016034444A (ja) * 2014-08-04 2016-03-17 株式会社ユニバーサルエンターテインメント 遊技機の製造方法、及び遊技機
JP2018008170A (ja) * 2017-10-24 2018-01-18 株式会社ユニバーサルエンターテインメント 演出シーケンスデータ生成装置、演出シーケンスデータ生成方法、及びプログラム
JP2018008169A (ja) * 2017-10-24 2018-01-18 株式会社ユニバーサルエンターテインメント 遊技機の製造方法、及び遊技機
JP2019092681A (ja) * 2017-11-20 2019-06-20 株式会社オリンピア 遊技機

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011254984A (ja) * 2010-06-09 2011-12-22 Fujishoji Co Ltd 遊技機
JP2012245039A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2012245040A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2012245041A (ja) * 2011-05-25 2012-12-13 Sophia Co Ltd 遊技機
JP2016034445A (ja) * 2014-08-04 2016-03-17 株式会社ユニバーサルエンターテインメント 演出シーケンスデータ生成装置、演出シーケンスデータ生成方法、及びプログラム
JP2016034444A (ja) * 2014-08-04 2016-03-17 株式会社ユニバーサルエンターテインメント 遊技機の製造方法、及び遊技機
JP2018008170A (ja) * 2017-10-24 2018-01-18 株式会社ユニバーサルエンターテインメント 演出シーケンスデータ生成装置、演出シーケンスデータ生成方法、及びプログラム
JP2018008169A (ja) * 2017-10-24 2018-01-18 株式会社ユニバーサルエンターテインメント 遊技機の製造方法、及び遊技機
JP2019092681A (ja) * 2017-11-20 2019-06-20 株式会社オリンピア 遊技機

Similar Documents

Publication Publication Date Title
JP5120932B2 (ja) 遊技機
JP5120931B2 (ja) 遊技機
JP5463400B2 (ja) 遊技機
JP2009165581A (ja) 遊技機用制御プログラムの開発支援方法
JP2022107749A (ja) 遊技機
JP6920186B2 (ja) 遊技機
JP6842406B2 (ja) 遊技機
JP5589174B2 (ja) 遊技機
JP2008237524A (ja) 遊技機
JP5463401B2 (ja) 遊技機
JP2022173536A (ja) 遊技機
JP2021180969A (ja) 遊技機
JP2017127569A (ja) 遊技機
JP5070384B2 (ja) 遊技機
JP5589173B2 (ja) 遊技機
JP6791596B2 (ja) 遊技機
JP6877846B2 (ja) 遊技機
JP2021010815A (ja) 遊技機
JP7047000B2 (ja) 遊技機
JP7046999B2 (ja) 遊技機
JP6916725B2 (ja) 遊技機
JP6800544B2 (ja) 遊技機
JP6664266B2 (ja) 遊技機
JP6664267B2 (ja) 遊技機
JP6616695B2 (ja) 遊技機