JP5120932B2 - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP5120932B2
JP5120932B2 JP2007325096A JP2007325096A JP5120932B2 JP 5120932 B2 JP5120932 B2 JP 5120932B2 JP 2007325096 A JP2007325096 A JP 2007325096A JP 2007325096 A JP2007325096 A JP 2007325096A JP 5120932 B2 JP5120932 B2 JP 5120932B2
Authority
JP
Japan
Prior art keywords
ram
area
address
command
cpu
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.)
Expired - Fee Related
Application number
JP2007325096A
Other languages
English (en)
Other versions
JP2009142566A (ja
Inventor
高明 市原
文人 三宅
陽介 吉田
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 JP2007325096A priority Critical patent/JP5120932B2/ja
Publication of JP2009142566A publication Critical patent/JP2009142566A/ja
Application granted granted Critical
Publication of JP5120932B2 publication Critical patent/JP5120932B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Pinball Game Machines (AREA)
  • Slot Machines And Peripheral Devices (AREA)

Description

本発明は、スロットマシン、パチンコ機などの遊技機を制御する制御装置に関する。
スロットマシン、パチンコ機などの遊技機の制御は、全体の進行を制御するための主制御基板、メダルや遊技球などの遊技媒体の払出しを制御する払出制御基板、音声出力、ランプ点灯、画像表示などの演出を制御する演出制御基板などの分散制御によって行われる(特許文献1)。主制御基板、演出制御基板は、それぞれCPU、RAM、ROMなどを備えるマイクロコンピュータとして構成されている。
遊技機の制御基板、特に主制御基板では、不正を防止するために種々の制約が設けられている。例えば、CPUについては、汎用のCPUではなく、遊技機特有のセキュリティ機能が設けられたCPUが用いられている。また、ROM、RAMの容量にも制約が設けられており、パチンコ機では制御用のプログラムが3キロバイト(KB)以内、データは3KB以内というように、プログラムサイズやデータ容量についても制約が設けられている。
特開2004−8483号公報
しかし、遊技機の制御は、興趣を高めるため、年々、複雑化する傾向にある。
例えば、パチンコ機においては、従来、第1種と呼ばれる機種においては乱数を用いた電子的な抽選を行い、第2種と呼ばれる機種においては機械的な可動部を動作させ、可動部上の遊技球の動きによって当たりか否かを決める方法での抽選を行ってきた。これに対し、近年では、複合機と呼ばれる機種が登場し、上述の第1種および第2種を合わせた抽選を行うようになっている。この場合、主制御基板には、第1種および第2種の双方の抽選を行える制御プログラムを用意しておく必要がある。
上述の傾向は、パチンコ機以外の遊技機でも同様であり、遊技機は、プログラムやデータ量の厳しい制約の下で、より複雑な制御処理を実行することを要請されている。
本発明は、こうした課題に鑑み、遊技機のプログラム容量を削減可能にすることを目的とする。
本発明は、所定の遊技媒体を直接的または間接的に用いて遊技を行う遊技機を対象とする。かかる遊技機としては、例えば、スロットマシンなどの回胴式遊技機、スマートボール、パチンコ機などが挙げられる。遊技媒体とは、遊技球やメダルなど遊技中に投資、特典の対象となる媒体を言う。
遊技機は、遊技の進行を統合制御する主制御装置を有している。この他、遊技中に視聴覚的な演出を行うための演出装置と、所定の条件下で遊技媒体を遊技者に払い出す払出装置とを備えている。演出装置としては、例えば、音声出力用のスピーカ、ランプ、画像表示装置などが含まれる。遊技機には、主制御装置からの指示情報に従って演出および払出の少なくとも一部を制御する下位制御装置が備えられている。下位制御装置としては、音声出力や表示を制御する演出制御装置などが挙げられる。下位制御装置は、主制御装置とは別のハードウェアとして構成されており、後述する入出力ポートを介して主制御装置からの指示情報を受け取る。また、遊技機の種類によっては、遊技媒体の払出しを制御する払出制御装置を下位制御装置の一つとして設けても良い。
本発明の遊技機における主制御装置は、CPU、ROM、RAMを備えたマイクロコンピュータとして構成されている。ROMには、CPUが遊技の統合制御のために実行するプログラムが格納されている。RAMは、制御に用いられる種々の情報を格納するためのメモリとして機能する。かかる情報としては、例えば、制御プログラム中の各モジュール間で処理結果等を受け渡すためのワークや、演算中にCPUが計算結果を一時的に蓄えておくためのスタックなどが含まれる。
主制御装置には、統合制御において、下位制御装置を含む外部との間で信号を入出力するための入出力ポートも設けられている。入出力ポートとは、ここでは、外部との信号線を接続する端子、その端子から入出力される信号を一時的に蓄積しておくバッファ、各信号の入出力先を切り換えるデコーダなどの総称として用いる。信号の入出力先は、メモリと同様、アドレスによって指定可能である。
CPUが用いるコマンドには、メモリアクセスコマンド、入出力ポートアクセスコマンドが含まれる。メモリアクセスコマンドとは、メモリへのアクセスに使用されるコマンドであり、このコマンドには、2バイト以上のアドレス値の指定が含まれる。入出力ポートアクセスコマンドとは、外部との信号の入出力に使用されるコマンドであり、入出力先を指定するためのアドレス値はメモリアクセスコマンドよりも1バイト以上少ないコマンド体系となっている。例えば、メモリアクセスコマンドが2バイトでアドレス指定を行うコマンド体系である場合には、入出力ポートアクセスコマンドは1バイトでアドレス指定を行うコマンド体系となる。
Z80(商標)というCPUに即して説明すれば、ロード/ストアコマンドがメモリアクセスコマンドに相当し、イン/アウトコマンドが入出力ポートアクセスコマンドに相当する。ロード/ストアコマンドでは2バイトでアドレスが指定され、イン/アウトコマンドでは1バイトで指定される。
主制御装置には、更に、エリア区分判定部が備えられている。エリア区分判定部は、入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先をRAMおよび入出力ポートに切り換え、RAMおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力する機能を奏する。入出力ポートアクセスコマンドは、通常、入出力ポートを通じたデータ授受に使用されるコマンドであるが、本発明では、同コマンドで指定されるアドレス空間の一部をRAMへのアクセスに使用するのである。エリア区分判定部は、従って、コマンドで指定されたアドレスが、RAM用または入出力ポート用のいずれに割り当てられたアドレスかを判定し、判定結果に応じてセレクタ信号を出力する。このセレクタ信号は、それぞれRAMおよび入出力ポートに入力され、各ユニットをアクセス可能な状態にさせる。
CPUからは、入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号が、エリア区分判定部に入力されている。従って、エリア区分判定部の上述の機能は、CPUがイン/アウトコマンドなど入出力ポートアクセスコマンドを出力した時に有効となる。
主制御装置には、更に、メモリエリアデコード部が設けられている。メモリエリアデコード部は、メモリアクセスコマンドで指定されるアドレス値の上位所定桁に基づいて、アクセス先となるROMおよびRAMのいずれかをアクティブにするためのメモリセレクト信号を出力する機能を奏する。CPUからは、メモリアクセスコマンドに応じて稼働すべき対象を指定するメモリリクエスト信号が、メモリエリアデコード部に入力されており、上述の機能は、CPUがメモリアクセスコマンドを出力した時に有効となる。
本発明の遊技機は、主制御装置のCPUは、エリア区分判定部の機能により、入出力ポートアクセスコマンドでRAMの一部の領域にアクセス可能である。アクセス先を指定するアドレスは、入出力ポートアクセスコマンドの方が、メモリアクセスコマンドよりも1バイト以上少なくて済む。従って、RAMへのアクセスが必要となる箇所で、メモリアクセスコマンドに代えて、入出力ポートアクセスコマンドを用いることにより、1カ所につき1バイト以上、プログラム容量を削減することができる。RAMへのアクセスは、プログラム全体で数多く行われる処理である。従って、本発明の遊技機では、上述の作用によって、プログラム全体の容量を有意に削減することが可能となる。以下、RAM領域のうち、入出力ポートアクセスコマンドでアクセス可能な領域を疑似RAM領域と称するものとする。
また、主制御装置には、メモリエリアデコード部も設けられているため、メモリアクセスコマンドによってもRAMへのアクセスが可能となる。疑似RAM領域は、入出力ポート用のアドレス空間の一部に過ぎないが、メモリアクセスコマンドを利用すれば、全領域にアクセス可能となる。従って、入出力ポートアクセスコマンドによるRAMへのアクセスでプログラム容量の削減を図りつつ、メモリアクセスコマンドによってRAMの領域を無駄なく活用することが可能となる。
以上より、本発明の主制御装置では、RAM領域は、メモリアクセスコマンドおよび入出力ポートアクセスコマンドの双方によってアクセス可能な疑似RAM領域と、メモリアクセスコマンドのみによってアクセス可能な領域とに分けられることになる。
本発明において、RAMの先頭アドレスから連続する所定範囲は、CPUがROMに格納されているコンピュータプログラムに基づく制御処理を実行する際に使用する情報を格納しておくためのワークに割り当てられている。また、RAMのうちワークを除く領域には、CPUがコンピュータプログラムを実行する際に一時的にデータを格納しておくための可変サイズのスタックが、ワークと干渉しないように割り当てられている。そして、RAMのうちエリア区分判定部を介してアクセス可能な疑似RAM領域は、スタックよりもアドレスが小さい側に、スタックの少なくとも一部を避けるようにして設定されている。
まず、先頭アドレスを含む所定の連続領域をワークに割り当てることにより、ワークの空き領域を悪用した不正を防止することができる。
また、ワークとの干渉を避けるようにスタックを配置した上で、スタックの少なくとも一部を避けて疑似RAM領域を配置することにより、疑似RAM領域を効果的に使用することができる利点がある。つまり、CPUは、スタックへのアクセスには、入出力ポートアクセスコマンドは利用できず、メモリアクセスコマンドを利用するのが一般的である。従って、疑似RAM領域をスタックに割り当てたとしても、入出力ポートアクセスコマンドを活用することによるプログラムサイズ削減効果を得ることはできないため、この意味で、スタックに割り当てられた疑似RAM領域は無駄になってしまう。これに対し、スタックを避けて疑似RAM領域を設けておけば、疑似RAMを無駄なくプログラム容量の削減効果に結びつけることが可能となる。
スタックは蓄積されているデータ量に応じて変化する可変サイズの領域である。従って、疑似RAM領域は、想定されるスタックの最大範囲を回避するよう設定しておけばよい。疑似RAM領域は、スタックの全範囲を避けることが望ましいが、必ずしも全範囲を避ける場合に限る必要はなく、少なくとも一部を避けていればよい。
スタックは、例えば、所定のアドレスを開始点として、データの蓄積に応じてアドレスが小さくなる側に拡張するよう構成することができる。スタックの範囲は、最後のデータを格納した領域のアドレスを表すスタックポインタで管理されるのが通常であるが、データを格納する度にスタックポインタを一つずつ減少させるよう制御すればよい。
かかる場合には、スタックはRAMの終端アドレスを開始点として設定しておくことが好ましい。つまり、RAMの終端から始まる可変領域がスタックに割り当てられることになる。
こうすることにより、スタックが拡張された場合でも、ワークとの干渉をほぼ確実に回避することができる。また、疑似RAM領域もスタックを十分に回避して設定することが可能となる。
スタックはデータを格納する度にスタックポインタを一つずつ増加させるよう構成してもよい。この場合には、疑似RAM領域またはワークの終端アドレスよりも大きい任意のアドレスを開始点とすればよい。こうすることによって、疑似RAM領域およびワークとスタックとの干渉を回避することができる。ただし、スタックが最大限に拡張した場合に、RAM領域が不足しないよう開始点のアドレスを設定しておくことが望ましい。
本発明において、疑似RAM領域は種々の設定が可能であるが、先頭アドレスを含む所定範囲を割り当てることが好ましい。
先に説明した通り、本発明の遊技機では、ワークとして使用するRAM領域を先頭アドレスから空き領域(未使用領域)を設けることなく連続して設定することによって、不正防止を図っている。このため、上述の態様では、疑似RAM領域をRAM領域の先頭アドレスから設けることによって、疑似RAM領域をワークとして無駄なく活用することが可能となる。
エリア区分判定部がアクセス先の判定に使用するエリア区分データは、ハードウェア的に組み込むようにしてもよいし、ソフトウェア的に設定可能な構成としてもよい。後者の例では、エリア区分判定部に、エリア区分データを記憶するためのエリア区分データ記憶部を設け、CPUが起動時に、エリア区分データをエリア区分データ記憶部に設定するようにすればよい。
エリア区分データとしては、例えば、疑似RAM領域の境界アドレスを用いることができる。例えば、境界の先頭アドレス、最終アドレスを用いてもよい。また、先頭アドレスと、疑似RAM領域の容量を用いても良い。疑似RAM領域が先頭アドレスから開始することが既知の場合には、最終アドレスまたは疑似RAM領域の容量のみをエリア区分データとして用いることもできる。
エリア区分データをソフトウェア的に設定可能としておけば、機種や処理内容に応じて、比較的容易に最適サイズで疑似RAM領域を設けることができる利点がある。
本発明において、メモリエリアデコード部を設ける場合には、更に、上位所定桁に基づいて、入出力ポートをアクティブにする入出力ポートセレクト信号を出力可能としてもよい。入出力ポートセレクト信号は、入出力ポートに伝達される。
こうすることによって、メモリアクセスコマンドによって入出力ポートからの信号授受が可能となる。入出力ポートの一部または全部を、メモリアクセスコマンドでアクセスするものとすれば、その分、入出力ポートアクセスコマンドによってアクセス可能となる疑似RAM領域を増やすことができる。入出力ポート全部をメモリアクセスコマンドでアクセスするものとすれば、入出力ポートアクセスコマンドによって指定可能な全アドレス空間を疑似RAM領域とすることが可能となる。この態様によれば、プログラムサイズの削減効果上、最も効果的な疑似RAM領域のサイズを、柔軟に設定することが可能となるのである。
本発明において、上述の特徴は、必ずしも全てが備えられている必要はなく、適宜、一部を省略したり、組み合わせたりしても良い。上述の特徴は、主制御装置とは別のハードウェアとして払出制御装置が構成されている場合には、払出制御装置に適用することも可能である。
本発明の実施例について以下の順序で説明する。
A.装置構成:
B.主制御基板110の回路構成:
B1.ハードウェア構成:
B2.RAM116へのワークの割り当て:
C.制御処理:
C1.主制御側電源投入時処理:
C2.RAMの全領域クリア処理:
C3.主制御側タイマ割り込み処理:
C4.サブ統合側処理:
C5.払出制御基板の制御処理:
D.プログラム容量削減効果:
E.主制御基板110の変形例:
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の回路構成:
B1.ハードウェア構成:
図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の先頭アドレスから設定することが好ましい。
B2.RAM116へのワークの割り当て:
図4はRAM116へのワークの割り当て方法を示す説明図である。ワークとは、CPU111が種々の制御処理を実行する際に、制御処理間で受け渡すべき情報や、制御処理を繰り返し実行する際に次回まで保持しておくべき情報などを格納しておくべき領域を言う。本実施例では、ワークを構成する各変数は、RAM116の所定のアドレスに格納されるものとしたが、格納先のアドレスが不定のワークを設けても良い。
遊技機では、不正防止を図るため、ワークとして使用するRAM領域を先頭アドレスから空き領域を設けることなく連続して設定することが要求されている。
RAM116は、ワークの他、スタックとしても活用される。スタックには、CPU111が制御プログラムを実行する上で一時的に記憶すべき種々の情報を記憶する。記憶すべき情報としては、例えば、使用中のレジスタの内容、サブルーチンを終了して本ルーチンに復帰するときの本ルーチンの復帰アドレスなど、制御処理を進める上で一時的に記憶する種々の情報の格納アドレスなどが挙げられる。
スタックへのデータの格納状態は、スタックポインタで管理される。スタックポインタは、上述のデータをスタックに順次、格納・読み出し可能とするために、スタック中での最新の情報の格納場所を表している。本実施例では、スタックにデータが格納される度に、スタックポインタのアドレスを「−1」ずつ変化させ、データが読み出される度に、スタックポインタのアドレスを「+1」ずつ変化させる方法を採った。
ワークを先頭アドレスから連続した領域に設けるという条件を満たす限り、ワークおよびスタックは、RAM116内の任意の領域に設定可能である。図4(a)は、一例として本実施例での設定例を示した。
RAM領域の下位アドレスを、先頭アドレス00H〜終端アドレスFFHとする。図4(a)の例では、擬似RAM116Aを先頭アドレス00Hから任意のアドレスzzHの範囲に設定した。また、ワーク116Wは先頭アドレス00Hから連続した領域に設定した。図中には、ワーク116Wのサイズが、擬似RAM116Aの領域を超えている例を示した。
擬似RAM領域を十分に確保可能であれば、ワークへのアクセス時に入出力ポートアクセスコマンドを利用することによるプログラム削減効果を十分に得るために、擬似RAM116Aをワーク116Wと同等以上とすることが好ましい。
一方、スタック116Sは、RAM116の終端アドレスFFHからアドレスが小さくなる方向に設ける。つまり、スタックポインタには初期値としてRAM116の終端アドレスFFHを入力しておく。こうすることによって、データが格納されるたびに、スタックポインタが「−1」ずつ変化するから、図示するように、アドレスが小さくなる側に向けてデータが順次積み重ねられていく。図中に示したスタック116Sのサイズは予め決められている訳ではなく、スタックに積み重ねられるデータ量によって変動する。
図4(a)の例では、ワーク116WをRAM116の先頭アドレスから使用し、スタック116SをRAM116の終端アドレスから使用する。こうすることによって、スタック116Sのサイズが変化した場合でも、ワーク116Wと干渉することを回避できる。従って、ワーク116Wおよびスタック116Sで消費され得るメモリ容量に比較してRAM116の容量が十分に大きい場合には、制御プログラムの開発者は、スタック116Sとの干渉を懸念することなく、ワーク116Wを設けることができる。この時、RAM116の領域は、ワーク116W、スタック116S、およびいずれにも使用されない未使用領域の3種類に区分されることになる。もっとも、上述の通り、スタック116Sは、動的に変動する領域である。
また、擬似RAM領域はスタック116Sを避けて設けてある。一般にはスタック116Sへのアクセスは、イン/アウトコマンドという入出力ポートアクセスコマンドは利用できず、スタックコマンド、つまりプッシュ(PUSH)/ポップ(POP)コマンドが利用される。スタックコマンドは、メモリにアクセスするためのコマンドではあるが、アクセスすべきアドレスはCPUが内部的に管理・指定するものであり、コマンドで個別のアドレスを指定することはできない点で、本明細書に言うメモリアクセスとは別種のコマンドである。従って、擬似RAM領域をスタック116Sに割り当てたとしても、入出力ポートアクセスコマンドを活用することによるプログラムサイズ削減効果を得ることはできない。本実施例では、スタック116Sを避けて擬似RAM領域を設けることにより、上述の削減効果を無駄なく得ることが可能となっている。
更に、本実施例では先頭アドレスを含む連続領域を擬似RAM領域に割り当てることによって、上述の削減効果を十分に得ることが可能である。
図4(b)に、比較例として擬似RAM領域を先頭アドレスからずらしたアドレス「xxH」〜「yyH」に設けた場合を示した。このように設けた場合でも、ワーク116WはRAM116の先頭アドレスから連続した領域に設ける必要がある。図4(b)では、先頭アドレス「00H」〜「xxH」に配置されるワークへのアクセスにはメモリアクセスコマンドが利用される。擬似RAM領域によるプログラムサイズ削減効果が得られるのは、アドレス「xxH」以降に配置される一部のワークに対してのみである。擬似RAM領域とワーク116Wのサイズによっては、図4(b)に示すように、擬似RAM領域の終端がワーク116Wよりはみ出す可能性があり、このはみ出した部分については、プログラム削減効果を得ることができなくなる。
これに対し、図4(a)のように先頭アドレスから擬似RAM領域を配置すれば、ワーク116Wと擬似RAM領域のサイズの関係に依らず、プログラム削減効果を十分に得ることが可能となる。
もっとも、図4(a)の設定が必須という訳ではなく、プログラム削減効果を重視しない場合には、図4(b)のように擬似RAM領域を設定しても差し支えない。
図4(c)は、スタック116Sを終端アドレスからずらした場合の例である。図の例では、アドレス「wwH」よりもアドレスが小さくなる側にスタック116Sを設けた例を示した。スタック116Sは、このように終端アドレスからずらして設けても良い。もっとも、ワーク116Wおよびスタック116Sで使用し得るサイズをそれぞれ考慮して、相互に干渉しない範囲で設けることが望ましい。また、このように終端アドレスからずらしてスタック116Sを設ける場合でも、擬似RAM領域はスタック116Sを避けて設けることが好ましい。
ワーク116Wとスタック116Sとの間の未使用領域の一部はワーク116Wとスタック116Sの隔離領域と位置づけても良い。先に説明した通り、スタック116Sは変動する領域である。従って、RAM116の容量によっては、スタック116Sがワーク116Wを浸食するおそれもある。そこで、ワーク116Wとスタック116Sとの間に隔離領域を設けておけば、かかる浸食を防ぐことが可能となる。
かかる作用を奏するため、隔離領域は、一切、データ書き込みが不能な領域としておけばよい。例えば、メモリエリアデコーダ113およびエリア区分判定部120において、隔離領域に対応するアドレスについては、チップセレクタ信号を出力しないように構成する方法を採ることができる。
以上の説明では、スタックポインタがデータ格納時に「−1」ずつされる場合を例示した。スタックの利用態様としては、データ格納時にスタックポインタが「+1」ずつされる構成を採ることも可能である。この場合、図4(a)に示したのとは逆に、終端アドレス側に向けて、データが積み重ねられることになる。
かかる場合には、図4(c)に示すように、終端アドレスからずらした位置にスタック116Sを設定することが好ましい。この場合でも、擬似RAM領域とスタック116Sおよびワーク116Wとは重ならないように配置することが好ましいから、スタック116Sは、擬似RAM領域の終端アドレスおよびワーク116Wの終端アドレスの大きい方よりも、アドレスが大きい側に配置することが好ましい。
C.制御処理:
C1.主制御側電源投入時処理:
図5および図6は主制御側電源投入時処理の一例を示すフローチャートである。主制御基板110のCPU111が電源投入による復電をトリガとして開始・実行する処理である。「復電」は、電源を遮断した状態から電源を投入した状態、停電又は瞬停からその後の電力の復旧した状態も含む。
処理が開始されると、CPU111は、割り込みのモード、スタックポインタの初期値、および、エリア区分判定部120(図2参照)にエリア区分データを設定する(ステップS10)。スタックポインタには、図4で示した通り、RAM116の終端アドレスが設定される。
エリア区分データは、先に説明した通り、擬似RAM領域を規定するためのデータである。本実施例では、予めROM114に擬似RAM領域の境界となる値、即ち図3の例では、アドレス「**H」を記憶させておき、上記ステップS10の処理でこれを読み出して、エリア区分判定部120に設定するものとした。このデータはブート時に設定することもできる。ブート時に設定されている場合には、ステップS10の処理では、エリア区分データの設定を省略することもできる。
次に、CPU111は停電クリア信号をロウとする(ステップS12)。停電クリア信号をロウにすることにより、電源投入時に主制御基板に設けられた停電監視回路からの停電予告信号をラッチするためのDタイプフリップフロップのラッチ機能を一時的に停止すると共に、それ以前に検知(ラッチ)した停電予告信号をクリアする。ラッチ機能を一時的に停止することにより、停電予告信号が常時監視可能な状態に切り替えることができる。
CPU111は、ウェイトタイマ処理1によって所定の待ち時間を経た後(ステップS14)、停電予告信号の状態を確認し、停電予告信号が停電を示す状態(停電予告信号がロウのとき)となっているか否かを判定する(ステップS16)。停電を示す状態となっている場合には、ウェイトタイマ処理1による待ち時間(ステップS14)を経てから、再度停電予告信号の状態を確認する。
このように、所定の待機時間を経た後に停電予告信号を確認するのは、停電予告信号が、停電又は瞬停によってパチンコ機1への供給電圧が所定の停電予告電圧より低くなった時に出力されるため、電源投入時に遊技機への供給電圧が所定電圧に達するまでは、一定の時間を要するためである。これにより、供給電圧が不安定な状態で、主制御基板の遊技機の制御に関する処理(ループ処理、タイマ割込処理)を実行しないようにすることが可能となる。
停電予告信号が検出されず(ステップS16)、電源電圧に異常がないと判断されたときには、CPU111は停電クリア信号をハイ(出力を停止)にし(ステップS18)、停電監視回路から出力される停電予告信号を常時監視可能な状態からラッチ可能な状態に切り替える。以後、供給電圧が停電予告電圧を下回ったときに、ラッチされた停電予告信号が出力されるようになる。
CPU111はRAMクリアスイッチが操作されている時は(ステップS20)。RAMクリア報知フラグRCLに値1をセットし(ステップS22)、操作されていないときには値00Hをセットする(ステップS24)。RAMクリアスイッチが操作されると、後述の通り、主制御基板110のRAM116上の確率変動、未払い出し賞球等の遊技に関する遊技情報が消去されることになる。
次にCPU111はウェイトタイマ処理2で(ステップS26)、装飾図柄制御基板350の起動を待つ。但し、主制御基板110は装飾図柄制御基板350から起動完了の通知を受信することはできないため、所定時間経過した時点で起動が完了したものとみなして次の処理を実行することになる。本実施例では、待機時間として2秒が設定されている。
本実施例では、先に説明した通り、上述のウェイトタイマ処理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である時(図6のステップ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に物理的に備えられた全領域を使用するか、その半分を使用するかを、設定によって切換可能とした。後者の場合には、使用可能に設定された領域が、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はメインワークの内容、サブワークの内容が正常か否かを、それぞれチェックサムによって確認する(図6のステップS30、S32)。メインワークの内容が正常な場合には、そのまま制御処理を続ければよい。メインワークが誤っており、サブワークが正しい場合には、サブワークの内容をメインワークに上書きして制御処理を続ける。メインワークおよびサブワークの双方が誤っている場合には、RAMクリアを行う(図6のステップS40)。
こうすることによって、サブワークの情報を制御処理に有効活用することが可能となる。
サブワークの情報をメインワークに上書きした場合、サブワークの情報はそのまま放置してもよい。CPU111は、制御処理においてサブワークの情報を直接参照することはないからである。ただし、ノイズ等の影響で、CPU111が、サブワークに記憶されている情報を誤って参照してしまい処理に悪影響を受けるおそれが、ないとは言えないため、サブワークは初期化しておいた方が好ましい。
C2.RAMの全領域クリア処理:
図7はRAMの全領域クリア処理のフローチャートである。主電源側電源投入時処理(図5、図6)のステップS40の処理内容に相当する。
説明の便宜上、図7ではRAMの全領域クリア処理が一つのサブルーチンであるかのように記載しているが、本実施例では、サブルーチンではなく、図6のステップS40内で、これらの処理を実行する形を取っている。この処理は、図示する通り、比較的単純な処理であるため、サブルーチン化した場合、サブルーチンの実行時に、サブルーチン終了後の戻りアドレスをスタックに記憶させるなどの処理が必要となり、RAMの全領域クリア処理に時間を要するからである。サブルーチンによらずに、ステップS40内で行うようにすれば、こうした無駄を抑制でき、効率的にRAM116をクリアすることが可能となる。
もっとも、本実施例は、RAMクリア処理をサブルーチンで実行することを排除するものではない。RAMクリア処理をサブルーチンで実行する場合には、上述の通り、サブルーチン終了後の戻りアドレスをスタックに記憶されるとともに、この値を保持するため、スタックを除く領域についてのみ初期化値を書き込むものとする必要がある。
RAMの全領域クリア処理では、CPU111は、まず、擬似RAM領域をクリアする処理を行う。図の右側に、RAM116の領域との関係を示した。ハッチングを付した部分(アドレス00H〜**H)が擬似RAM領域116Aとする。CPU111は、アドレスを00H〜**Hで変化させながら、アウト(OUT)命令を繰り返し実行して、この領域に初期化値として00Hを順次、書き込むのである。
上述の処理は、次の手順で行われる。CPU111は、まず書き込み先のアドレス(以下、「クリアアドレス」という)としてRAM116の先頭アドレス00Hを設定する(ステップS41a)。また、ループ回数として、擬似RAM領域の終端アドレスに1を加えた「**H+1」を設定する(ステップS41b)。「**H」でなく「**H+1」とするのは、アドレス**Hまで、書き込みが行われるようにするためである。
次に、CPU111は、クリアアドレスにアウト(OUT)命令で初期化値00Hを書き込む(ステップS41c)。この書き込みが終わると、CPU111は、クリアアドレスを1だけ加算することによって、書き込むべきアドレスを一つ進め(ステップS41d)、ループ回数を1ずつ減らす(ステップS41e)。以上の処理を、ループ回数が0となるまで(ステップS41f)、繰り返し実行することにより、CPU111は擬似RAM領域の全アドレスに初期化値00Hを書き込むことができる。
擬似RAM領域のクリアを終えると、CPU111は、擬似RAM領域を除く領域(右側の図の白抜きの領域)に対して、メモリアクセスコマンドであるストア(ST)命令を用いて初期化値00Hを書き込む。
上述の処理は、次の手順で行われる。CPU111は、クリアアドレスとして擬似RAM領域の終端アドレスの次のアドレスである「**H+1」を設定する(ステップS41g)。また、ループ回数として、RAM領域の終端アドレスと擬似RAM領域の終端アドレスとの差である「FFH−**H」を設定する(ステップS41h)。
次に、CPU111は、クリアアドレスにストア(ST)命令で初期化値00Hを書き込む(ステップS41i)。この書き込みが終わると、CPU111は、クリアアドレスを1だけ加算することによって、書き込むべきアドレスを一つ進め(ステップS41j)、ループ回数を1ずつ減らす(ステップS41k)。以上の処理を、ループ回数が0となるまで(ステップS41m)、繰り返し実行することにより、CPU111は擬似RAM領域以外の全アドレスに初期化値00Hを書き込むことができる。
図8はRAMの全領域クリア処理の変形例である。この処理では、メモリアクセス命令であるストア(ST)命令のみを用いて初期化値の書き込みを行う。先に説明した通り(図2)、本実施例では、擬似RAM領域は、入出力ポートアクセスコマンドと、メモリアクセスコマンドの双方によってアクセス可能に構成されている。従って、全領域クリア処理では、擬似RAM領域も含めて、全領域にストア(ST)命令を用いて00Hを書き込むことも可能である。
この書き込みの状態を図の右側に模式的に示した。RAM116には、図7の例と同様、擬似RAM領域116Aが設けられている。但し、変形例では、先頭アドレス00Hから終端アドレスFFHまで、一貫してメモリアクセスコマンドを用いて書き込みを行うのである。メモリアクセスコマンドを用いるという意味で、全領域を白抜きで示した。
上述の処理は、次の手順で行われる。CPU111は、クリアアドレスとしてRAM116の先頭アドレスである「00H」を設定する(ステップS41p)。また、ループ回数としてRAM116の終端アドレスに1を加えた「FFH+1」を設定する(ステップS41q)。
次に、CPU111は、クリアアドレスにストア(ST)命令で初期化値00Hを書き込む(ステップS41r)。この書き込みが終わると、CPU111は、クリアアドレスを1だけ加算することによって、書き込むべきアドレスを一つ進め(ステップS41s)、ループ回数を1ずつ減らす(ステップS41t)。以上の処理を、ループ回数が0となるまで(ステップS41u)、繰り返し実行することにより、CPU111は擬似RAM領域以外の全アドレスに初期化値00Hを書き込むことができる。
変形例の処理では、全領域にストア(ST)命令を用いることにより、全領域クリア処理に要するプログラムサイズを抑制することができる利点がある。図7では、アウト命令による書き込みを行うための処理(ステップS41a〜S41f)と、ストア命令での書き込みを行うための処理(ステップS41g〜S41m)の2段階での処理が必要となるのに対し、図8では、ストア命令での書き込みを行うための処理のみで済むからである。つまり、変形例の処理では、図7におけるステップS41g〜S41mに相当する処理のみでクリア処理を行うことが可能となっている。
もっとも、変形例(図8)では、ストア命令で書き込みを行う範囲が図7よりも広がっている。しかし、これはクリアアドレスおよびループ回数の設定値が変わるだけのことであり、書き込み処理自体のプログラムサイズは増加しない。従って、コマンド単体のバイト長は、ストア命令の方がアウト命令よりも長いにも関わらず、全体にストア命令を用いた方が、全領域クリア処理の全体のプログラムサイズを減少させることが可能となるのである。
上述の例では、RAM領域の先頭から順に初期化値を書き込む例を示したが、RAMクリア処理は、RAM領域の終端アドレスFFHから00Hに向けて、順に初期化値を書き込む方法で行っても良い。
RAMクリア処理は、RAMの全領域を対象として行うようにしてもよいし、一部のみを対象として行うようにしてもよい。こうすることで、RAMクリア処理によって初期化値の書き込み対象となる領域が少なくなる分、RAMクリア処理の負荷が軽減される利点がある。
例えば、図4で説明したように未使用領域や隔離領域が含まれている場合には、これらの領域は、RAMクリア処理の対象外としてもよい。
また、RAMクリア処理は、ワーク(図4参照)を対象として行うことが好ましいが、この際、スタックをRAMクリアの対象に含めても良いし、除外してもよい。
制御処理上、許容される場合には、ワークの一部のみを初期化の対象としてもよい。例えば、特別図柄、普通図柄、特別電動役物制御、普通電動役物制御など遊技の動作を決定する主要なワークのみを初期化対象とすることが考えられる。
更に、RAMクリア処理の対象領域は、必ずしもチェックサムの算出に用いた領域と対応している必要もない。例えば、ワークの一部または全部を用いてチェックサムを算出する場合であっても、チェックサムによってRAMクリア処理が必要と判断された時には、RAM全体についてRAMクリア処理を行うようにしてもよい。
C3.主制御側タイマ割り込み処理:
図9は主制御側タイマ割り込み処理のフローチャートである。主制御基板110のCPU111によって、所定の割り込み周期(本実施形態では、4ms)ごとに繰り返し行われる処理である。
処理を開始すると、CPU111は、レジスタを退避してから(ステップS70)ウォッチドックタイマクリアレジスタWCLに値Bをセットし(ステップS72)、割り込みフラグをクリアする(ステップS74)。レジスタの退避は、擬似RAM以外の領域に行う。本実施例では、スタックに退避するものとした。
以下、CPU111は、図示する各処理を順次、実行する。これらの処理の実行順序は、図示した順序に限らない。
スイッチ入力処理(ステップS76)はパチンコ機の各種スイッチの信号を入力する処理である。入力する信号としては、普通入賞口、始動入賞口、大入賞口に入球した遊技球の検出信号、賞球の払出コマンドの受信時に払出制御基板210が出力するACK信号、などが挙げられる。
タイマ減算処理(ステップS78)は、種々の時間管理に利用されるタイマ値を減算する処理である。初期値が設定されたタイマ値が、この減算処理によって4msずつ減算され、値0になることで、初期値に相当する時間の経過を検出することができる。タイマ値は、管理対象となる時間ごとに設けられている。管理対象となる時間としては、例えば、変動表示パターンに従って特別図柄表示装置41が点灯する時間、普通図柄変動表示パターンに従って普通図柄表示器が点灯する時間、払出制御基板210からのACK信号を入力するまでの所要時間などが挙げられる。
当落乱数更新処理(ステップS80)は、遊技中に抽選等に利用される種々の乱数値を更新する処理である。本実施例では、抽選等の度に乱数を発生させる方法ではなく、ステップS76の処理によって、種々の乱数値を値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)、割り込み許可の設定を行って、このルーチンを終了する。
C4.サブ統合側処理:
サブ制御基板310は、主制御基板110からのコマンドに応じて、種々の演出制御を行う。
図示を省略するが、サブ制御基板310が実行する処理も、主制御側メイン処理(図6)と同様のループと、主制御側タイマ割り込み処理(図9)と同様の割込処理から構成される。サブ制御基板310は2ms周期で割り込み処理を実行するとともに、16ms周期で「16ms定常処理」を実行する。
この16ms定常処理では、主制御基板110からの各種コマンドを解析するコマンド解析処理、パネル装飾ランプ12、枠装飾ランプ31(図1参照)の点灯制御を行うランプ処理、演出用の音声や警報音などの出力処理、装飾図柄制御基板350を介してLCD16に演出用の画面を表示させる処理、CPUが正常に動作していることを示すウォッチドックタイマ処理、および役物の駆動パターンをスケジューラにセットする処理等を行う。
サブ制御基板310は、16ms定常処理を繰り返し実行する他、種々の割り込み処理を行う。かかる割り込み処理としては、2msタイマ割り込み、コマンド受信割り込み処理、コマンド受信終了割り込み処理があげられる。
C5.払出制御基板の制御処理:
払出制御基板210は、主制御基板110からの指示に従って、遊技媒体の払い出しを制御する。
払出制御基板210が実行する制御処理は、主制御基板110と同様、ループ状のメイン処理とタイマ割込処理とから構成することも可能であるが、本実施例では、メイン処理内で払出に必要な処理を繰り返し実行するものとした。
D.プログラム容量削減効果:
実施例で説明した種々の制御処理において、主制御基板110が出力する種々のコマンドは、一旦、RAM116に蓄えられた後、所定のタイミングでRAM116から読み出されて出力される。また、制御処理で用いられる種々のフラグや、情報もRAM116上に構築されたワークを利用して管理されている。
このように、実施例の制御処理では、RAM116に頻繁にアクセスが行われる。
本実施例では、主制御基板110のCPU111は、それぞれRAM116に対して、ロード/ストアコマンドおよびイン/アウトコマンドの双方でアクセスすることができる。このように擬似RAMは、イン/アウトコマンドでアクセスできる分、アクセス1回につき1バイトずつプログラム容量を削減することができる。プログラム中に擬似RAMへのイン/アウトコマンドでのアクセス箇所が増えるほど、プログラム容量の削減効果は大きくなる。
図10は擬似RAMの効果を示す説明図である。ある遊技機において、擬似RAMの有無でのプログラム容量の変化を比較して示した。
最上段は、擬似RAMを設けない場合である。つまり、RAMへのアクセスは、全てロード/ストアコマンドによって行われる場合を示している。この時の容量は550バイト強となっている。
2〜4段目は、擬似RAMを設けた場合である。それぞれ擬似RAMの容量を64バイト、128バイト、192バイトに変化させた場合を示した。図示する通り、プログラムの容量は、擬似RAMが64バイトの場合に10%、128バイトの場合に18%、192バイトの場合に31%削減される。
このように、本実施例によれば、イン/アウトコマンドでRAMへのアクセスを可能とする回路、つまりエリア区分判定部120を設けることによって、プログラムの容量を削減することが可能となる。RAMへのアクセスコマンド一つ当たりの削減量は1バイトに過ぎないが、頻繁に使用されるコマンドであるため、制御プログラム全体では、大きな削減効果を生むことができるのである。
E.主制御基板110の変形例:
(1) パチンコ機1の制御基板の回路構成は、以下に示す通り、種々の変形例が可能である。ここでは、主制御基板110の変形例を示すが、払出制御基板210についても同様の変形例が適用可能である。
図11は主制御基板の変形例を示す説明図である。実施例では、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領域のサイズもプログラムごとに求めることができる。
(2) 実施例では、値00Hを初期化値として書き込むことによって、RAMクリア処理を行う例を示した。RAMクリア処理で用いる初期化値は、任意に設定可能である。00H以外の値を初期化値として用いる場合には、大当たりか否かの判定で用いられる大当たり判定乱数の値を避けて設定することが好ましい。こうすることによって、制御プログラムの改ざんや、ノイズなどの影響によって、本来意図されていないRAM領域からのデータの読み込みが行われた場合でも、誤って大当たり判定がなされることを回避できる。
変形例の回路では、上述の通り、RAM116の全領域を擬似RAMとすることも可能である。この場合、RAMの全領域クリア処理(図7)は、全領域についてストア命令で0を書き込むようにしてもよいが、アウト命令で書き込むようにすれば更に好ましい。全領域についてアウト命令のみを用いるようにすれば、図7のステップS41a〜S41cの単一ループで書き込みを行うことができるため、プログラムサイズを抑制することができる。また、コマンド長が短いアウト命令を用いる点で、ストア命令を用いる場合に比較して、わずかではあるが、更にプログラムサイズを抑制することが可能となる。
以上、本発明の種々の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
実施例では、パチンコ機1への適用例を示したが、本発明はスロットマシンへの適用も可能である。
また、実施例では、主制御基板110に擬似RAM領域を設ける構成を示したが、主制御基板110に代えて、または主制御基板110と共に、この構成を払出制御基板210に適用してもよい。
実施例としてのパチンコ機1の制御用ハードウェア構成を示すブロック図である。 主制御基板110の回路構成を示す説明図である。 主制御基板110の動作を示す説明図である。 RAM116へのワークの割り当て方法を示す説明図である。 主制御側電源投入時処理の一例を示すフローチャート(1)である。 主制御側電源投入時処理の一例を示すフローチャート(2)である。 RAMの全領域クリア処理のフローチャートである。 RAMの全領域クリア処理の変形例のフローチャートである。 主制御側タイマ割り込み処理のフローチャートである。 擬似RAMの効果を示す説明図である。 主制御基板の変形例を示す説明図である。
符号の説明
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
116A…擬似RAM
116W…ワーク
116S…スタック
120…エリア区分判定部
121…エリア区分データ
122…IOデコーダ
123…パラレル入出力ポート
123s…送信バッファ
123r…受信バッファ
124…シリアル入出力制御部
124s…SP変換部
124p…PS変換部
210…払出制御基板
310…サブ制御基板
350…装飾図柄制御基板

Claims (3)

  1. 所定の遊技媒体を用いて遊技を行う遊技機であって、
    前記遊技の進行を統合制御する主制御装置と、
    前記遊技中に視聴覚的な演出を行うための演出装置と、
    所定の条件下で、前記遊技媒体を遊技者に払い出す払出装置と、
    前記主制御装置からの指示情報に従って、前記演出および払出しの少なくとも一方を制御する下位制御装置とを有し、
    前記主制御装置は、
    前記統合制御を実行するためのCPUと、
    前記CPUが実行するプログラムを格納するためのメモリとしてのROMと、
    前記統合制御に用いられる種々の情報を格納するためのメモリとしてのRAMと、
    前記統合制御において、前記主制御装置と前記下位制御装置を含む外部との間で信号を入出力するための入出力ポートとを有し、
    前記CPUは、メモリへのアクセスに使用されるコマンドであって2バイト以上のアドレス値を含むコマンド体系を有するメモリアクセスコマンドと、外部との信号の入出力に使用されるコマンドであって入出力先を指定するためのアドレス値が前記メモリアクセスコマンドよりも1バイト以上少ないコマンド体系を有する入出力ポートアクセスコマンドとを使用可能であり、
    前記入出力ポートアクセスコマンドで指定されるアドレス値に基づいて、アクセス先を前記RAMおよび入出力ポートに切り換え、前記RAMおよび入出力ポートのいずれかをアクティブにするセレクタ信号を出力するエリア区分判定部と、
    前記メモリアクセスコマンドで指定されるアドレス値の上位所定桁に基づいて、アクセス先となる前記ROMおよびRAMのいずれかをアクティブにするためのメモリセレクト信号を出力するメモリエリアデコード部とを有し、
    前記入出力ポートアクセスコマンドに応じて稼働すべき対象を指定する入出力ポートリクエスト信号は、前記CPUから前記エリア区分判定部に入力されており、
    前記メモリアクセスコマンドに応じて稼働すべき対象を指定するメモリリクエスト信号は、前記CPUから前記メモリエリアデコード部に入力されており、
    前記RAMの先頭アドレスから連続する所定範囲は、前記CPUが前記ROMに格納されているコンピュータプログラムに基づく制御処理を実行する際に使用する情報を格納しておくためのワークに割り当てられており、
    前記RAMのうち前記ワークを除く領域には、前記CPUが前記コンピュータプログラムを実行する際に一時的にデータを格納しておくための可変サイズのスタックが、前記ワークと干渉しないように割り当てられており、
    前記RAMのうち前記エリア区分判定部を介してアクセス可能な疑似RAM領域は、前記スタックよりもアドレスが小さい側に、該スタックの少なくとも一部を避けるようにして設定されている
    遊技機。
  2. 請求項1記載の遊技機であって、
    前記スタックは、データを格納するたびに、アドレスが小さくなる側に領域が拡張するよう構成されており、
    前記スタックは、前記RAMの終端アドレスを開始点として設定されている遊技機。
  3. 請求項1または2記載の遊技機であって、
    前記疑似RAM領域は、前記RAMの先頭アドレスを含む連続領域である遊技機。
JP2007325096A 2007-12-17 2007-12-17 遊技機 Expired - Fee Related JP5120932B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007325096A JP5120932B2 (ja) 2007-12-17 2007-12-17 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007325096A JP5120932B2 (ja) 2007-12-17 2007-12-17 遊技機

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012216148A Division JP5463401B2 (ja) 2012-09-28 2012-09-28 遊技機

Publications (2)

Publication Number Publication Date
JP2009142566A JP2009142566A (ja) 2009-07-02
JP5120932B2 true JP5120932B2 (ja) 2013-01-16

Family

ID=40913888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007325096A Expired - Fee Related JP5120932B2 (ja) 2007-12-17 2007-12-17 遊技機

Country Status (1)

Country Link
JP (1) JP5120932B2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5629199B2 (ja) * 2010-12-04 2014-11-19 株式会社平和 遊技機
JP5231603B2 (ja) * 2011-06-07 2013-07-10 株式会社藤商事 遊技機
JP5756986B2 (ja) * 2011-06-20 2015-07-29 株式会社オリンピア 遊技機
JP2013029939A (ja) * 2011-07-27 2013-02-07 Kyocera Document Solutions Inc 制御装置
JP5875998B2 (ja) * 2013-03-14 2016-03-02 株式会社藤商事 遊技機
JP5799417B2 (ja) * 2014-07-11 2015-10-28 株式会社ソフイア 遊技機
JP6572611B2 (ja) * 2015-04-28 2019-09-11 サミー株式会社 遊技機
JP2016209189A (ja) * 2015-05-01 2016-12-15 株式会社三共 遊技機
JP6566919B2 (ja) * 2016-08-15 2019-08-28 株式会社ユニバーサルエンターテインメント 遊技機
JP6261703B2 (ja) * 2016-11-04 2018-01-17 株式会社三共 遊技機
JP6261704B2 (ja) * 2016-11-04 2018-01-17 株式会社三共 遊技機
JP6393351B2 (ja) * 2017-02-24 2018-09-19 株式会社ソフイア 遊技機
JP6483738B2 (ja) * 2017-03-02 2019-03-13 株式会社ユニバーサルエンターテインメント 遊技機
JP6853484B2 (ja) * 2017-06-23 2021-03-31 サミー株式会社 ぱちんこ遊技機
JP6730624B2 (ja) * 2017-06-23 2020-07-29 サミー株式会社 ぱちんこ遊技機
JP6730622B2 (ja) * 2017-06-23 2020-07-29 サミー株式会社 ぱちんこ遊技機
JP6730623B2 (ja) * 2017-06-23 2020-07-29 サミー株式会社 ぱちんこ遊技機
JP6730626B2 (ja) * 2017-06-23 2020-07-29 サミー株式会社 ぱちんこ遊技機
JP6751240B2 (ja) * 2017-06-23 2020-09-02 サミー株式会社 ぱちんこ遊技機
JP6730625B2 (ja) * 2017-06-23 2020-07-29 サミー株式会社 ぱちんこ遊技機
JP6864229B2 (ja) * 2017-07-07 2021-04-28 サミー株式会社 ぱちんこ遊技機
JP6853483B2 (ja) * 2017-07-07 2021-03-31 サミー株式会社 ぱちんこ遊技機
JP6864231B2 (ja) * 2017-07-07 2021-04-28 サミー株式会社 ぱちんこ遊技機
JP6864230B2 (ja) * 2017-07-07 2021-04-28 サミー株式会社 ぱちんこ遊技機
JP6853481B2 (ja) * 2017-07-07 2021-03-31 サミー株式会社 ぱちんこ遊技機
JP6853482B2 (ja) * 2017-07-07 2021-03-31 サミー株式会社 ぱちんこ遊技機
JP6705990B2 (ja) * 2017-09-07 2020-06-03 サミー株式会社 ぱちんこ遊技機
JP6928251B2 (ja) * 2017-10-11 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6936436B2 (ja) * 2017-10-11 2021-09-15 サミー株式会社 ぱちんこ遊技機
JP6928250B2 (ja) * 2017-10-11 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6933807B2 (ja) * 2017-10-12 2021-09-08 サミー株式会社 ぱちんこ遊技機
JP6936437B2 (ja) * 2017-10-12 2021-09-15 サミー株式会社 ぱちんこ遊技機
JP6928252B2 (ja) * 2017-10-12 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6928255B2 (ja) * 2017-10-12 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6928254B2 (ja) * 2017-10-12 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6928253B2 (ja) * 2017-10-12 2021-09-01 サミー株式会社 ぱちんこ遊技機
JP6933808B2 (ja) * 2017-10-12 2021-09-08 サミー株式会社 ぱちんこ遊技機
JP6615241B2 (ja) * 2018-01-23 2019-12-04 株式会社ユニバーサルエンターテインメント 遊技機
JP6611841B2 (ja) * 2018-03-05 2019-11-27 株式会社ユニバーサルエンターテインメント 遊技機
JP7483268B2 (ja) 2021-12-17 2024-05-15 株式会社ユニバーサルエンターテインメント 遊技機

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3640613B2 (ja) * 2001-01-09 2005-04-20 株式会社三共 遊技機
JP2004229938A (ja) * 2003-01-30 2004-08-19 Sankyo Kk 遊技機
JP4784927B2 (ja) * 2005-08-19 2011-10-05 株式会社大一商会 遊技機

Also Published As

Publication number Publication date
JP2009142566A (ja) 2009-07-02

Similar Documents

Publication Publication Date Title
JP5120932B2 (ja) 遊技機
JP5120931B2 (ja) 遊技機
JP5463400B2 (ja) 遊技機
JP5238952B2 (ja) 遊技機
JP5463401B2 (ja) 遊技機
JP2009165581A (ja) 遊技機用制御プログラムの開発支援方法
JP5654941B2 (ja) 遊技機
JP7205581B2 (ja) 遊技機
JP2012040139A (ja) 遊技機
JP5589174B2 (ja) 遊技機
JP2023021377A (ja) 遊技機
JP7156459B2 (ja) 遊技機
JP2012228298A (ja) 遊技機
JP6349528B1 (ja) 遊技機
JP5589173B2 (ja) 遊技機
JP5238951B2 (ja) 遊技機
JP2010004981A (ja) 弾球遊技機
JP2007319608A (ja) 遊技機
JP5805741B2 (ja) 遊技機
JP2009112437A (ja) 遊技機
JP5450766B1 (ja) 遊技機
JP7230965B2 (ja) 遊技機
JP7230970B2 (ja) 遊技機
JP7205583B2 (ja) 遊技機
JP7230973B2 (ja) 遊技機

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20090324

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120925

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121018

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5120932

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees