JP2016026644A - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP2016026644A
JP2016026644A JP2015185002A JP2015185002A JP2016026644A JP 2016026644 A JP2016026644 A JP 2016026644A JP 2015185002 A JP2015185002 A JP 2015185002A JP 2015185002 A JP2015185002 A JP 2015185002A JP 2016026644 A JP2016026644 A JP 2016026644A
Authority
JP
Japan
Prior art keywords
register
game
control device
value
command
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.)
Granted
Application number
JP2015185002A
Other languages
English (en)
Other versions
JP6353421B2 (ja
Inventor
園田 欽章
Yoshiaki Sonoda
欽章 園田
亀井 欽一
Kinichi Kamei
欽一 亀井
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.)
Sophia Co Ltd
Original Assignee
Sophia 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 Sophia Co Ltd filed Critical Sophia Co Ltd
Priority to JP2015185002A priority Critical patent/JP6353421B2/ja
Publication of JP2016026644A publication Critical patent/JP2016026644A/ja
Application granted granted Critical
Publication of JP6353421B2 publication Critical patent/JP6353421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Pinball Game Machines (AREA)

Abstract

【課題】遊技制御プログラムのコード量を削減することができる遊技機を提供する。
【解決手段】制御装置は、遊技制御プログラム記憶手段と、演算処理を行う演算処理手段と、演算処理を行う際にデータが記憶されるレジスタと、演算処理手段によって更新される情報が記憶される更新情報記憶手段とを備え、更新情報記憶手段にはスタック領域が設定され、レジスタには演算処理手段による演算結果を記憶するためのフラグレジスタが含まれ、遊技制御プログラムには、呼出元ルーチンと、呼出元ルーチンから呼び出される第1呼出先ルーチンと、所定の割込信号によって呼び出される第2呼出先ルーチンと、が含まれ、演算処理手段は、第1呼出先ルーチンが呼び出された場合は、戻りアドレスをスタック領域に格納し、フラグレジスタを格納せずに処理を開始し、第2呼出先ルーチンが呼び出された場合、戻りアドレスとフラグレジスタをスタック領域に格納して処理を開始する。
【選択図】図48

Description

本発明は、レジスタを備えたプロセッサによって制御を行う遊技機に関する。
従来よりも、プログラムのメンテナンス性および処理速度を維持しつつ、不正改造抑制
および不正改造発見容易性向上を実現するために、ROMの0008H番地から000
FH番地には、変動停止コマンド送信処理のプログラムを格納し、ROMの0020H番
地から0027H番地には、賞球数コマンド送信処理のプログラムを格納するとともに、
これらのプログラムをRST命令を用いて呼び出すようにした遊技機が知られている(例
えば、特許文献1)。
この特許文献1の遊技機の構成では、特許文献1の図22に示すように、RST命令を
実行すると、呼び出し元のモジュールの戻りアドレスの値をスタックに格納して、呼び出
し先のサブモジュールに移行する。その後、呼び出し先のサブモジュールの終了時にRE
T命令を実行することで、スタックに格納してあった戻りアドレスの値をプログラムカウ
ンタに戻し、呼び出し元のモジュールに復帰する。なお、特許文献1の段落[0148]
に示すように、CALL命令を用いても同様の処理が行われる。
なお、特許文献1のようにRST命令やCALL命令を実行しなくても、タイマ割込等
の割込が発生した場合に、呼び出し元のモジュールの戻りアドレスの値をスタックに格納
して、呼び出し先のサブモジュール(タイマ割込みの処理モジュール)に移行する処理を
行う遊技機もある。
例えば、特許文献2に開示された遊技機では、特許文献2の段落[0071]〜[00
73]に示すように、タイマ割込等の割込が発生すると、呼び出し元のモジュールの戻り
アドレスの値をスタックに格納して、呼び出し先のサブモジュール(タイマ割込みの処理
モジュール)に移行する。その後、呼び出し先のサブモジュールの終了時にRETI命令
を実行することで、スタックに格納してあった戻りアドレスの値をプログラムカウンタに
戻し、呼び出し元のモジュールに復帰する。
このようなタイマ割込みの処理を行うときは、特許文献3の図5や特許文献4の図6(
c)に示すように、処理の先頭にて、フラグレジスタの値をAFレジスタとしてスタック
に格納することが通常行われる。なお、このスタックに格納されたフラグレジスタの値は
、特許文献3の図5に示されるように、タイマ割込みの処理を終了してRETI命令を実
行する際に元のフラグレジスタへ復帰するようになっている。
特開2008−080004号公報 特開2001−212330号公報 特開2004−089476号公報 特開2006−068568号公報
呼び出し元のモジュールで用いられていたレジスタの値が、呼び出し先のサブモジュー
ルで変更されてしまうと、CPUの演算処理に支障を来たす。そのため、従来の遊技機で
は、特許文献3の図5のS11に示すように、処理の先頭でPUSH命令を用いてレジス
タの値をスタックに退避する処理が通常行われ、特許文献3の図5のS25に示すように
、処理の最後でPOP命令を用いてレジスタの値をスタックから復帰させる処理が行われ
る。このとき、特許文献4の図6(c)に示すように、スタックには、様々なレジスタの
値が一時的に格納される。そのため、呼び出し先のモジュール内にて、PUSH命令やP
OP命令を記述する必要があり、プログラム容量が増えてしまう要因となっていた。
このようなPUSH命令及びPOP命令を用いて、レジスタの値をスタックから出し入
れする処理は、特許文献2に開示されたタイマ割り込みの処理に限らず、特許文献1に示
したようなRST命令(或いはCALL命令)を用いて呼び出されるサブモジュール内で
も、頻繁に行われている。そのため、このようなサブモジュール内にもPUSH命令やP
OP命令を記述する必要があり、プログラム容量が増えてしまう要因となっていた。
なお、前者のタイマ割込みの処理では、フラグレジスタの値を無条件にスタックに格納
する必要があったのに対して、後者のRST命令(或いはCALL命令)を用いて呼び出
されるサブモジュールの処理では、フラグレジスタを退避すべきか否かは、モジュールの
目的によって一意に定まっていなかった。そこで、このような条件を満たしつつも、プロ
グラム容量を削減するための工夫が必要とされていた。
本発明は、上記のような問題点を解決するためになされたもので、フラグレジスタを退
避すべきか否かをプログラムによって決定できる構成としながらも、遊技制御プログラム
全体のコード量を削減することを目的とする。
本発明の代表的な一形態では、遊技領域に発射された遊技球が所定の始動領域を通過す
ることにより補助遊技が実行され、該補助遊技が特別な結果となる場合に遊技者に特典を
付与する特別遊技状態を発生させる遊技機において、前記特別遊技状態を発生させる制御
を行う遊技制御装置を備えるとともに、前記遊技制御装置には、遊技制御プログラムを記
憶する遊技制御プログラム記憶手段と、前記遊技制御プログラムにより所要の演算処理を
行う演算処理手段と、前記演算処理を行う際にデータが記憶されるレジスタと、前記演算
処理手段によって更新される情報が記憶される更新情報記憶手段と、を備え、前記更新情
報記憶手段にはスタック領域が設定され、前記レジスタには、前記演算処理手段による演
算結果を記憶するためのフラグレジスタが含まれ、前記遊技制御プログラムには、呼出元
の処理が記述された呼出元ルーチンと、前記呼出元ルーチンに記述された呼出の命令が実
行された場合に呼び出される処理が記述された第1の呼出先ルーチンと、前記呼出元ルー
チンに記述された命令の実行中において、所定の割込信号が発生した場合に呼び出される
処理が記述された第2の呼出先ルーチンと、が含まれ、前記演算処理手段は、前記第1の
呼出先ルーチンが呼び出された場合は、前記呼出元ルーチンに含まれる戻りアドレスの値
を前記スタック領域に格納し、且つ前記フラグレジスタの値を前記スタック領域に格納し
ない状態で、前記第1の呼出先ルーチンの処理の実行を開始する一方で、前記第2の呼出
先ルーチンが呼び出された場合は、前記呼出元ルーチンに含まれる戻りアドレスの値と前
記フラグレジスタの値の各々を前記スタック領域に格納した状態で、前記第2の呼出先ル
ーチンの処理の実行を開始する。
本明細書における実施形態では、「遊技機」をパチンコ機として説明しているが、スロ
ットマシンなどの回胴式遊技機であってもよいし、スマートボールであってもよい。これ
らのパチンコ機以外の遊技機であっても、前述した課題はパチンコ機の場合と同様に発生
する課題である。
「所定の始動条件」とは、パチンコ機であれば、例えば、遊技球が始動入賞口に入賞す
る場合である。また、スロットマシンであれば、例えば、遊技媒体のベットをした後、遊
技者によってスタートレバーが操作される場合である。
「補助遊技」とは、例えば、表示画面の画像を表示可能な領域(表示領域)設けられた
複数の変動表示領域において、各変動表示領域に識別情報などが表示され、各識別図柄が
変動表示する変動表示ゲームである。変動表示ゲームにおける「特別な結果」とは、例え
ば、変動表示する識別図柄がすべて同じ図柄で停止した場合である。
「遊技制御プログラム」とは、遊技の進行制御を行うプログラムや、演出制御を行うプ
ログラムが含まれる。「遊技制御プログラム」は、「遊技制御プログラム記憶手段」に記
憶され、「演算処理手段」によって実行される。「遊技制御プログラム記憶手段」は、読
み書き可能(揮発性)であってもよいし、読み出し専用(不揮発性)であってもよい。「
演算処理手段」は、いわゆるCPU(若しくはCPUに含まれる命令解釈実行回路)であ
る。
「レジスタ」は、「演算処理手段」によってアクセスされるデータが格納される。「遊
技制御プログラム記憶手段」や「更新情報記憶手段」に格納されたデータを「演算処理手
段」がアクセスする場合には「レジスタ」を介するようにしてもよいし、直接アクセス可
能としてもよい。
「フラグレジスタ」とは、CPU(演算処理手段)の演算状態を示す値が格納されるレ
ジスタである。例えば、演算結果が正であるか否かを示すフラグや、0であるか否かを示
すフラグなどが含まれる。「演算処理手段」は「フラグレジスタ」を参照して処理を分岐
させたり、処理の実行順序を制御したりする。
「所定の割込信号」とは、例えば、所定の時間間隔で出力する場合(タイマ割込)や停
電発生時に出力する場合などがある。遊技制御装置(遊技制御手段)は、割込信号を受信
すると、割込信号に対応する割り込み処理(第2の呼出先ルーチン)を実行する。
「スタック領域」は、実行中の処理から他の処理を呼び出す場合や実行中の処理を中断
して割り込み処理を実行する場合に、元の処理に復帰するために必要なデータを一時的に
格納する領域である。呼び出された順序が新しい順にスタック領域に格納されたデータを
取り出してレジスタや更新情報記憶手段に戻す。
本発明の一形態によれば、割り込みが発生した場合など、フラグレジスタを確実に退避
させる必要がある場合にはフラグレジスタの値をスタック領域に格納してから処理を実行
する。一方、必ずしもフラグレジスタの値を退避させる必要がない場合には、フラグレジ
スタの値をスタック領域に格納せずに処理を実行することによって呼び出し先の処理の種
類に応じた処理を実行することができる。
本発明の第1の実施の形態の遊技装置の構成を説明する図である。 本発明の第1の実施の形態の遊技機の背面図である。 本発明の第1の実施の形態の遊技盤の正面図である。 本発明の第1の実施の形態の遊技装置のブロック図である。 本発明の第1の実施の形態の遊技用演算処理装置(アミューズチップ)のブロック図である。 本発明の第1の実施の形態の遊技制御装置におけるシリアル送信回路の構成例を示すブロック図である。 本発明の第1の実施の形態の送信シリアルチャンネル設定レジスタの構成例を示す図である。 本発明の第1の実施の形態の送信制御レジスタの構成例を示す図である。 本発明の第1の実施の形態の送信データステータスレジスタの構成例を示す図である。 本発明の第1の実施の形態の送信データレジスタ(1段分)の構成例を示す図である。 本発明の第1の実施の形態の遊技制御装置に備わる遊技用演算処理装置(アミューズチップ)とその周辺のブロック図である。 本発明の第1の実施の形態のCPUコアの内部構成を説明するブロック図である。 本発明の第1の実施の形態のフラグレジスタの構成を説明する図である。 本発明の第1の実施の形態のユーザワークRAMの一例を示す図である。 本発明の第1の実施の形態のユーザワークRAMに割り当てられたワークエリアに格納されるデータの具体例を説明する図であり、保留カウンタ、各種乱数の生成領域及び普図乱数の保存領域を示す図である。 本発明の第1の実施の形態のユーザワークRAMに割り当てられたワークエリアに格納されるデータの具体例を説明する図であり、第1特図変動表示ゲームを実行するために必要な各種乱数の保存領域を示す図である。 本発明の第1の実施の形態のユーザワークRAMに割り当てられたワークエリアに格納されるデータの具体例を説明する図であり、第2特図変動表示ゲームを実行するために必要な各種乱数の保存領域を示す図である。 本発明の第1の実施の形態のスタック領域の一例を示す図である。 本発明の第1の実施の形態のスタック領域の一例を示す図である。 本発明の第1の実施の形態のスタック領域の変形例を示す図である。 本発明の第1の実施の形態のCPUコアによって実行される遊技制御プログラムを記述するためのアセンブリ言語の命令を説明する図であり、変換後のコードデータにアドレス部を含まない命令(変換後のコードデータが命令コード部のみで構成される命令)を示す図である。 本発明の第1の実施の形態のCPUコアによって実行される遊技制御プログラムを記述するためのアセンブリ言語の命令を説明する図であり、変換後のコードデータに命令コード部とアドレス部の各々を含む命令を示す図である。 本発明の第1の実施の形態の各装置(遊技制御装置、払出制御装置、及び演出制御装置)の電源投入時処理のフローチャートである。 本発明の第1の実施の形態の遊技制御装置プログラム開始準備処理を説明するフローチャートである。 本発明の第1の実施の形態の遊技制御装置メイン処理の前半部のフローチャートである。 本発明の第1の実施の形態の遊技制御装置メイン処理の後半部のフローチャートである。 本発明の第1の実施の形態の遊技制御装置メイン処理におけるステップ2501からステップ2502Bまでの処理を説明する図である。 本発明の第1の実施の形態のディレイ処理を説明する図である。 本発明の第1の実施の形態のタイマ割込処理を示すフローチャートである。 本発明の第1の実施の形態の遊技制御装置から、演出制御装置及び払出制御装置に初期化指令信号を送信する初期化指令送信処理の手順を示すフローチャートである。 本発明の第1の実施の形態の遊技制御装置から、演出制御装置及び払出制御装置にコマンドを送信するためのコマンド送信処理の手順を示すフローチャートである。 本発明の第1の実施の形態の電源投入時の遊技制御装置、払出制御装置、及び演出制御装置が行う処理、並びに、遊技制御装置に備わるシリアル送信回路の状態のタイミングチャートである。 本発明の第1の実施の形態の遊技制御装置から払出制御装置に送信される排出指令の一例を示す図である。 本発明の第1の実施の形態のスイッチの立ち上がりを検出する手順を示すタイムチャートである。 本発明の第1の実施の形態の遊技制御装置から演出制御装置に送信される演出制御コマンドの一例を示す図である。 本発明の第1の実施の形態の遊技制御装置から演出制御装置に送信される送信データの構成を示す説明図であり、(a)は送信データの概略構成を示し、(b)は送信データの詳細構成を示している。 本発明の第1の実施の形態の特図ゲーム処理の手順を示すフローチャートである。 本発明の第1の実施の形態の特図ゲーム処理におけるゲーム処理番号に基づいた分岐の処理を説明する図である。 本発明の第1の実施の形態の始動口SW監視処理の手順を示すフローチャートである。 本発明の第1の実施の形態の特図始動口SW共通処理の手順を示すフローチャートである。 本発明の第1の実施の形態の特図保留情報判定処理の手順を示すフローチャートである。 本発明の第1の実施の形態の特図大当り判定処理の手順を示すフローチャートである。 本発明の第1の実施の形態の後半変動パターンテーブルである。 本発明の第1の実施の形態の前半変動パターンテーブルである。 本発明の第1の実施の形態の特図普段処理の手順を示すフローチャートである。 本発明の第1の実施の形態の特図1/特図2変動開始処理の手順を示すフローチャートである。 本発明の第1の実施の形態における始動記憶をシフトさせる処理のプログラムの一例を示す図であり、Kレジスタを利用して記憶容量を削減したプログラムである。 本発明の第1の実施の形態における始動記憶をシフトさせる処理のプログラムの一例を示す図であり、従来のプログラムである。 本発明の第1の実施の形態のサブルーチンを構成するプログラムの例を説明する図である。 本発明の第1の実施の形態の変動表示ゲームにおける画面遷移を説明する図である。 本発明の第1の実施の形態の変動表示ゲームにおける画面遷移を説明する図である。 本発明の第1の実施の形態において、戻りアドレス値の後にフラグレジスタの値をスタック領域に待避させた状態を説明する図である。 本発明の第1の実施の形態において、戻りアドレス値の前にフラグレジスタの値をスタック領域に待避させた状態を説明する図である。 本発明の第1の実施の形態において、戻りアドレス値とフラグレジスタの値とが同一のバイト数で構成されている状態を説明する図である。 本発明の第1の実施の形態において、戻りアドレス値とフラグレジスタの値とが異なるバイト数で構成されている状態を説明する図である。 本発明の第1の実施の形態の変形例のユーザワークRAMの一例を示す図である。 本発明の第2の実施の形態の特図変動表示ゲームを実行するために必要な各種乱数の保留1から4までの保存領域を示す図である。 本発明の第2の実施の形態の特図変動表示ゲームを実行するために必要な各種乱数の保留5から8までの保存領域を示す図である。 本発明の第2の実施の形態の特図保留情報判定処理の手順を示すフローチャートである。 本発明の第2の実施の形態の特図普段処理の手順を示すフローチャートである。
以下、本発明の実施の形態について、図面を参照しながら説明する。
なお、以下の実施の形態の説明における前後左右とは、遊技者から見た、つまり遊技盤
(遊技機)に向かって見た方向を指すものとする。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の遊技装置6の構成を説明する図である。
遊技装置6は、有価価値を記憶する記憶媒体が挿入されるカードユニット70及び実際
に遊技を行い、遊技媒体を払出可能な遊技機1を備える。
まず、遊技機1について説明する。
遊技機1の前面枠3は、本体枠(外枠)2にヒンジ4によって開閉回動可能に組み付け
られる。遊技盤5(図3参照)は前面枠3の表側に形成された収納部(図示省略)に収装
される。また、前面枠3には、遊技盤5の前面を覆うカバーガラス(透明部材)を備えた
ガラス枠18が取り付けられている。
ガラス枠18のカバーガラスの周囲には、装飾光が発光される装飾部材9が備えられて
いる。この装飾部材9の内部にはランプやLED等からなる装飾装置が備えられている。
この装飾装置を所定の発光態様によって発光させることによって、装飾部材9が所定の発
光態様で発光する。
ガラス枠18の左右には、音響(例えば、効果音)を発するスピーカ30が備えられて
いる。また、ガラス枠18の上方には照明ユニット10が備えられている。照明ユニット
10の内部には、装飾装置が備えられている。
照明ユニット10の右側には、遊技機1のエラー発生や前面枠3の開放をホール店員に
通知するためのエラー報知LED29が備えられている。
前面枠3の下部の開閉パネル20には図示しない打球発射装置に遊技球を供給する上皿
21が備えられている。さらに、固定パネル22には灰皿15、下皿23及び打球発射装
置の操作部24等が備えられている。下皿23には、下皿23に貯まった遊技球を排出す
るための下皿球抜き機構16が備えられる。前面枠3下部右側には、ガラス枠18を施錠
するための鍵25が備えられている。
また、遊技者が操作部24を回動操作することによって、打球発射装置は、上皿21か
ら供給される遊技球を発射する。
また、上皿21の上縁部には、遊技者からの操作入力を受け付けるためのセレクトスイ
ッチ40及び操作スイッチ41が備えられている。
遊技者がセレクトスイッチ40を操作することによって、表示装置8(図3参照)にお
ける変動表示ゲームの演出内容を選択することができる。また、遊技者が操作スイッチ4
1を操作することによって、表示装置8における変動表示ゲームに、遊技者の操作を介入
させた演出を行うことができる。
上皿21の右上部には、遊技者が遊技媒体を借りる場合に操作する球貸ボタン26、及
び、カードユニット70からプリペイドカードを排出させるために操作される排出ボタン
27が設けられている。これらのボタン26、27の間には、プリペイドカードの残高を
表示する残高表示部28が設けられる。
次に、カードユニット70について説明する。
カードユニット70の下部には、プリペイドカード又は会員カード等のカードを挿入可
能なカード挿入口71が設けられる。
プリペイドカード又は会員カード等のカードには、当該カードの一意な識別子、当該カ
ードの所有者(遊技者)の会員情報、及び残高等が記憶されている。会員情報には、カー
ドの所有者の住所、氏名、年齢、及び職業等が含まれる。
カード挿入口71にプリペイドカード又は会員カード等のカードが挿入された場合、図
示しないカードリーダ・ライタによって、カードに記憶された情報が読み出される。そし
て、当該カードに記憶された残高が、遊技機1の残高表示部28及びカードユニット70
の中央付近に設けられた残高表示部72に表示される。
残高表示部72の上方には、紙幣を挿入可能な紙幣挿入口73が設けられる。紙幣挿入
口73に挿入された紙幣の有価価値は、カードに残高として記憶される。
紙幣挿入口73の上方には、動作表示部74が設けられる。動作表示部74は、カード
ユニット70の動作に対応した色で点灯する。
次に、図2を参照しながら遊技機1の裏面側について説明する。図2は、本発明の第1
の実施の形態の遊技機1の背面図である。
遊技機1の裏面側、具体的には、前面枠3の裏面側には、中央に略正方形状の開口部を
有する枠状の裏機構盤310が取り付けられる。
裏機構盤310の上部には、島設備に設けられた補給装置(図示省略)から補給された
遊技球を貯留すると共に、貯留した遊技球を流下させる球貯留ユニット320が配設され
る。
裏機構盤310の側部(図2中右側)には、球貯留ユニット320から流下してきた遊
技球を、遊技機前面に配設された上皿21及び下皿23に払い出す球排出ユニット330
が配設される。
裏機構盤310の中央部には、遊技を統括的に制御する遊技制御装置100と、遊技制
御装置100から送信される演出制御指令に基づいて変動表示ゲームの演出を制御する演
出制御装置150とが配設される。
遊技制御装置100には、図示しない検査装置に接続される検査装置接続端子107が
配設される。
裏機構盤310の下部には、遊技制御装置100から送信されるデータに基づいて球排
出ユニット330の動作を制御し、遊技者に賞球を付与する払出制御装置(付与制御装置
)210と、電源装置160とが配設される。
払出制御装置210には、図示しない検査装置に接続される検査装置接続端子217及
び払出制御装置210に発生したエラーの種類を数字で表示するエラーナンバー表示器2
22が配設される。
また、電源装置160の右側の裏機構盤310には、遊技機1をカードユニット70に
接続するためのカードユニット接続端子340が配設される。
次に、遊技盤5について、図3を参照しながら説明する。図3は、本発明の第1の実施
の形態の遊技盤5の正面図である。
遊技盤5の表面には、ガイドレール55で囲われた略円形状の遊技領域51が形成され
る。遊技領域51は、遊技盤5の四方に各々設けられた樹脂製のサイドケース52及びガ
イドレール55によって構成される。遊技領域51の右下側のサイドケース52は、前面
の中央部が黒色透明の証紙プレート53で覆われている。
遊技領域51には、ほぼ中央に表示装置8が設けられるセンターケース300が配置さ
れる。表示装置8はセンターケース300に設けられた凹部に、センターケース300の
前面より奥まった位置に取り付けられている。すなわち、センターケース300は表示装
置8の表示領域の周囲を囲い、表示装置8の表示領域から突出して設けられている。
また、遊技領域51の右下の領域には、図4で後述する特図表示器120及び普図表示
器121を一体化した、図柄表示ユニット(一括表示器)45が備えられる。
表示装置8は、例えば、LCD(液晶表示器)、CRT(ブラウン管)等で表示画面が
構成されている。表示画面の画像を表示可能な領域(表示領域)には、複数の変動表示領
域が設けられており、各変動表示領域に識別情報(特別図柄)や特図(特別図柄)変動表
示ゲームを演出するキャラクタが表示される。表示画面の変動表示領域には、識別情報と
して割り当てられた三つの特別図柄が変動表示(可変表示)して特図変動表示ゲームが行
われる。その他、表示画面には遊技の進行に基づく画像(例えば、大当り表示、ファンフ
ァーレ表示、エンディング表示等)が表示される。
センターケース300の左側には、普通図柄始動ゲート31が設けられる。センターケ
ース300の左下側には、三つの一般入賞口32が備えられ、センターケース300の右
下側には、一つの一般入賞口32が備えられている。
センターケース300の下方には、第1始動入賞口37と、第1始動入賞口37の直下
に配設され、上部に逆「ハ」の字状に開いて遊技球が流入し易い状態に変換する一対の開
閉部材を含む普通変動入賞装置33を備える第2始動入賞口34とが配置される。そして
、遊技球が第1始動入賞口37又は第2始動入賞口34に入賞した場合には、補助遊技と
して特図変動表示ゲームが実行される。すなわち、第1始動入賞口37又は第2始動入賞
口34に遊技球が入賞することが特図変動表示ゲームを開始するための始動条件となって
おり、第1始動入賞口37及び第2始動入賞口34が当該始動条件を発生させる変動始動
入賞装置をなしている。なお、第1始動入賞口37に遊技球が入賞したことによって実行
される特図変動表示ゲームを第1特図変動表示ゲームとし、第2始動入賞口34に遊技球
が入賞したことによって実行される特図変動表示ゲームを第2特図変動表示ゲームとする
また、センターケース300に設けられた始動入賞口の下方には、表示装置8の作動結
果(特図変動表示ゲームの結果)によって遊技球を受け入れない状態と受け入れ易い状態
とに変換可能な特別変動入賞装置(大入賞口)36が配設される。
遊技機1では、図示しない発射装置から遊技領域51に向けて遊技球(パチンコ球)が
打ち出されることによって遊技が行われる。打ち出された遊技球は、遊技領域51内の各
所に配置された釘や風車等の方向転換部材によって転動方向を変えながら遊技領域51を
流下する。そして、普通図柄始動ゲート31、一般入賞口32、第1始動入賞口37、第
2始動入賞口34、又は特別変動入賞装置36に入賞するか、遊技領域51の最下部に設
けられたアウト口39から排出される。
また、第2始動入賞口34の状態には、普通変動入賞装置33の開閉によって、遊技球
が入賞しやすい状態(入賞容易状態)と遊技球が入賞しにくい状態(非入賞容易状態)と
がある。
通常、普通変動入賞装置33が閉状態の場合には、第2始動入賞口34は、遊技球が入
賞しにくい状態となる。普通図柄始動ゲート31を遊技球が通過することによって、普図
変動表示ゲームが実行され、普図変動表示ゲームの結果が当りとなると、普通変動入賞装
置33が開状態に変換され、第2始動入賞口34は遊技球が入賞し易い状態となる。
一般入賞口32への遊技球の入賞は、一般入賞口32に備えられた入賞口SW(スイッ
チ)32A〜32N(図4参照)によって検出される。
第1始動入賞口37への遊技球の入賞は第1特図始動SW(スイッチ)37A(図4参
照)によって検出される。この遊技球の通過タイミングによって抽出された各種乱数は、
遊技制御装置100内の特図1始動記憶領域に特別図柄入賞記憶として所定回数(例えば
、最大で4回分)を限度に記憶される。
また、第2始動入賞口34への遊技球の入賞は第2特図始動SW(スイッチ)34A(
図4参照)によって検出される。この遊技球の通過タイミングによって抽出された各種乱
数は、遊技制御装置100内の特図2始動記憶領域に特別図柄入賞記憶として所定回数(
例えば、最大で4回分)を限度に記憶される。
遊技制御装置100は、これらの特別図柄入賞記憶に基づき、図柄表示ユニット45を
形成する特図表示器120(図4参照)にて、第1特図動表示ゲーム及び第2特図動表示
ゲームを行う。
ここで特図表示器120について説明する。特図表示器120は、図示しない第1特図
図柄表示部、第1特図入賞記憶数表示部、第2特図図柄表示部、及び第2特図入賞記憶数
表示部を有する。
そして、遊技球が第1始動入賞口37に入賞して特別図柄入賞記憶が発生すると、第1
特図入賞記憶数表示部に特別図柄入賞記憶の記憶数が表示され、第1特図図柄表示部にて
第1特図変動表示ゲームが実行される。同様に、遊技球が第2始動入賞口34に入賞して
特別図柄入賞記憶が発生すると、第2特図入賞記憶数表示部に特別図柄入賞記憶の記憶数
が表示され、第2特図図柄表示部にて第2特図変動表示ゲームが実行される。
なお、第1始動入賞口37への入賞が所定のタイミングでなされたとき(具体的には、
入賞検出時の当り乱数値が当り値であるとき)には、第1特図変動表示ゲームの結果とし
て表示図柄により特別結果態様が導出される。具体的には、第1図柄表示部にて、対応す
る特定の図柄(例えば、「1」〜「9」までのいずれかの数字等)が停止表示される。な
お、第1特図変動表示ゲームがはずれの場合には、第1特図図柄表示部にて、はずれに対
応する図柄(例えば「0」等)が停止表示される。
同様に、第2始動入賞口34への入賞が所定のタイミングでなされたとき(具体的には
、入賞検出時の当り乱数値が当り値であるとき)には、第2特図変動表示ゲームの結果と
して表示図柄により特別結果態様が導出される。具体的には、第2特図図柄表示部にて、
対応する特定の図柄(例えば、「1」〜「9」までのいずれかの数字等)が停止表示され
る。なお、第2特図変動表示ゲームがはずれの場合には、第2特図図柄表示部にて、はず
れに対応する図柄(例えば「0」等)が停止表示される。
そして、第1特図変動表示ゲームの結果として特別結果態様が導出された場合、あるい
は、第2特図変動表示ゲームの結果として特別結果態様が導出された場合には、大当り状
態(特別遊技状態)が発生する。このとき、特別変動入賞装置36は、大入賞口ソレノイ
ド38(図4参照)への通電によって、所定の時間(例えば、30秒)だけ、遊技球を受
け入れない閉状態から遊技球を受け入れやすい開状態に変換される。すなわち、特別変動
入賞装置36が所定の時間又は所定数の遊技球が入賞するまで大きく開くので、この間遊
技者は多くの遊技球を獲得することができるという特典が付与される。
なお、表示装置8においても、図柄表示ユニット45の特図表示器120で実行される
第1特図変動表示ゲームと第2特図変動表示ゲームに同期して、飾り特図変動表示ゲーム
が実行される。このとき、前述した数字等で構成される特別図柄(識別情報)が左(第一
特別図柄)、右(第二特別図柄)、中(第三特別図柄)の順に変動表示を開始して、飾り
特図変動表示ゲームに関する画像が表示される。
第1特図変動表示ゲーム若しくは第2特図変動表示ゲームが特別結果態様を導出する場
合は、表示装置8でも特定態様の図柄が導出されて停止表示する。具体的には、表示装置
8では、三つの特別図柄が揃った状態(大当り図柄)で停止する。第1特図変動表示ゲー
ム及び第2特図変動表示ゲームが特別結果態様を導出しない場合は、表示装置8でも特定
態様の図柄を停止表示しないように制御される。
なお、本実施形態では、図柄表示ユニット45で実行される第1特図変動表示ゲーム及
び第2特図変動表示ゲームと、表示装置8で実行される飾り特図変動表示ゲームのいずれ
をも特図変動表示ゲームとして扱うものとする。
特別変動入賞装置36への遊技球の入賞は、カウントSW(スイッチ)36A(図4参
照)によって検出される。
普通図柄始動ゲート31への遊技球の通過は、普図始動SW(スイッチ)31A(図4
参照)で検出される。この遊技球の通過タイミングによって抽出された普図乱数は、遊技
制御装置100内の普図始動記憶領域に普通図柄入賞記憶として所定回数(例えば、最大
で4回分)を限度に記憶される。遊技制御装置100は、この普通図柄入賞記憶に基づき
、図柄表示ユニット45を形成する普図表示器121(図4参照)にて、普図変動表示ゲ
ームを行う。
ここで普図表示器121について説明する。普図表示器121は、図示しない普図図柄
表示部と普図入賞記憶数表示部を有する。前述したように、遊技球が普通図柄始動ゲート
31を通過して普通図柄入賞記憶が発生すると、この普図図柄表示部にて普図変動表示ゲ
ームが実行される。また、普図入賞記憶数表示部には、普通図柄入賞記憶の記憶数が表示
される。
そして、遊技球が普通図柄始動ゲート31を通過して普通図柄入賞記憶が発生すると、
普図入賞記憶数表示部に普通図柄入賞記憶の記憶数が表示され、普図図柄表示部にて普図
変動表示ゲームが実行される。
なお、普通図柄始動ゲート31の通過が所定のタイミングでなされたとき(具体的には
、通過検出時の当り乱数値が当り値であるとき)には、普図図柄表示部に表示される普通
図柄が当り状態で停止し、普図変動表示ゲームが当りとなる。このとき、普通変動入賞装
置33は、普電ソレノイド90(図4参照)への通電により、第2始動入賞口34への入
口が所定の時間(例えば、0.5秒〜2.9秒の範囲内で予め定められた時間)だけ開放
するように変換され、遊技球の第2始動入賞口34への入賞が許容される。これによって
、遊技球が第2始動入賞口34へ入賞しやすくなり、第2特図変動表示ゲームの始動が容
易となる。
このようにして、一般入賞口32、第1始動入賞口37、第2始動入賞口34、又は特
別変動入賞装置36に遊技球が入賞すると、入賞した入賞口の種類に応じた数の賞球が払
出制御装置210によって制御される払出ユニットから、前面枠3の上皿21又は下皿2
3に排出される。
なお、本実施形態のパチンコ遊技機は、特図変動表示ゲームの結果に対応して(厳密に
は、特図変動表示ゲームの結果として特図表示器120に停止表示される図柄に対応して
)、以後の特図変動表示ゲームの当り確率が変化する場合があり、遊技状態は、常時、特
図変動表示ゲームが低確率で大当りとなる低確率状態か、当該低確率状態よりも特図変動
表示ゲームが大当りとなる確率の高い高確率状態のいずれかに設定されている。なお、低
確率状態を通常状態や非確変遊技状態と称したり、高確率状態を確変遊技状態(確変状態
)と称したりする場合もある。
さらに、本実施形態のパチンコ遊技機の遊技状態は、特図変動表示ゲームの結果に対応
して、普通変動入賞装置33の開放頻度が変化する場合があり、遊技状態は、常時、普通
変動入賞装置33の開放頻度が低い入賞抑制状態か、当該入賞抑制状態よりも普通変動入
賞装置33の開放頻度が高い入賞促進状態のいずれかに設定されている。なお、入賞抑制
状態を通常状態や非時短遊技状態と称したり、入賞促進状態を時短遊技状態(時短状態)
と称したりする場合もある。
この入賞促進状態においては、普図変動表示ゲームの実行時間が入賞抑制状態における
実行時間より短くなるように制御される(例えば、入賞抑制状態で10秒に対し、入賞促
進状態で1秒)。これによって、単位時間当りの普通変動入賞装置33の開放回数が実質
的に多くなるように制御される。
また、入賞促進状態においては、普図変動表示ゲームが当り結果となって普通変動入賞
装置33が開放される場合に、開放時間が通常遊技状態の開放時間より長くなるように制
御されてもよい(例えば、入賞抑制状態で0.5秒に対し、入賞促進状態で2.9秒)。
また、入賞促進状態においては、普通図柄変動表示ゲームの1回の当り結果に対して、普
通変動入賞装置33が1回ではなく、複数回(例えば、2回)開放してもよい。さらに、
入賞促進状態においては、普図変動表示ゲームの結果が当りとなる確率が入賞抑制状態よ
り高くなるように制御してもよい。すなわち、入賞促進状態では、入賞抑制状態よりも普
通変動入賞装置33の開放頻度が増加し、普通変動入賞装置33に遊技球が入賞しやすく
なり、特図変動表示ゲームの始動が容易となる特典が付与される。
図4は、本発明の第1の実施の形態の遊技装置6のブロック図である。
遊技制御装置100は、遊技用マイコン(遊技用演算処理装置600)101、入力I
/F(Interface)105、出力I/F(Interface)106及び検査
装置接続端子107を備える。
遊技用マイコン101は、CPU102、ROM(Read Only Memory
)103及びRAM(Random Access Memory)104を備える。
CPU102は、遊技を統括的に制御する主制御装置であって、遊技制御を行う。RO
M103は、遊技制御のための不変の情報(プログラム、データ等)を記憶する。RAM
104は、遊技制御時にワークエリアとして利用される。
遊技制御装置100には、遊技用マイコン101に一意に設定された識別番号を出力す
ることが可能な検査装置接続端子107が設けられている。検査装置接続端子107に図
示しない検査装置を接続すると、検査装置は遊技機1を識別することができる。
CPU102は、入力I/F105を介して各種検出器(第1特図始動SW37A、第
2特図始動SW34A、普図始動SW31A、カウントSW36A、及び入賞口SW32
A〜入賞口SW32N、オーバーフローSW(スイッチ)109、球切れSW(スイッチ
)110、及び枠開放SW(スイッチ)111)からの検出信号を受けて、大当り抽選等
、種々の処理を行う。
オーバーフロースイッチ109は、下皿23に遊技球が所定数以上貯留されていること
を検出する。球切れスイッチ110は、球貯留ユニット320に配設され、球貯留ユニッ
ト320に貯留される遊技球が所定数以下になることを検出する。枠開放スイッチ111
は、前面枠3の開放を検出する。
また、CPU102は、出力I/F106を介して、普図表示器121、特図表示器1
20、普電SOL(ソレノイド)90、大入賞口SOL(ソレノイド)38、払出制御装
置210及び演出制御装置150に指令信号を送信し、遊技を統括的に制御する。
普図表示器121は、前述したように、普図変動表示ゲームが表示される。特図表示器
120は、前述したように、第1特図変動表示ゲームと第2特図変動表示ゲームとが表示
される。
普電SOL90は、第2始動入賞口34に遊技球が入賞可能となるように、第2始動入
賞口34に備えられた開閉部材で構成された普通変動入賞装置33を所定の時間だけ開放
させる。
大入賞口SOL38は、特別変動入賞装置36の大入賞口を所定の時間だけ、遊技球を
受け入れない閉状態(遊技者に不利な状態)から遊技球を受け入れやすい開状態(遊技者
に有利な状態)にする。
また、遊技制御装置100は、遊技機1に関する情報を、外部情報端子108を介して
、遊技店に設置された情報収集端末や遊技場内部管理装置(図示省略)に出力する。
遊技制御装置100は、変動開始コマンド、客待ちデモコマンド、ファンファーレコマ
ンド、確率情報コマンド、及びエラー指定コマンド等を、演出制御指令信号として、演出
制御装置150へ送信する。
次に、払出制御装置210及び演出制御装置150について説明する。
演出制御装置(表示制御装置)150は、遊技制御装置100から入力される各種信号
に基づいて、エラー報知LED29、スピーカ30、発光により遊技演出を行う装飾部材
9(図1)及び表示装置8を制御する。
演出制御装置150は、遊技用マイコン(遊技用演算処理装置600)151、ドライ
バ155、音回路156、及びVDP157を備える。
遊技用マイコン151は、CPU152、ROM153及びRAM154を備える。
CPU152は、演出制御を行う制御装置である。ROM153は、演出制御に必要な
不変の情報(プログラム、データ等)を記憶している。RAM154は、演出制御時にワ
ークエリアとして利用される。
ドライバ155は、CPU152からの指令により、エラー報知LED29及び装飾部
材9を制御する。音回路156は、CPU152からの指令により、効果音を生成してス
ピーカ30から出力する。VDP157は、CPU152からの指令により、画像データ
を生成して表示装置8へ出力する。
払出制御装置210は、遊技制御装置100からの賞球指令信号に基づいて、払出装置
の払出モータ220を駆動させ、賞球を払い出させるための制御を行う。また、払出制御
装置210は、カードユニット70からの貸球要求信号に基づいて、遊技制御装置100
が送信する排出指令信号に基づいて、払出装置の払出モータ220を駆動させ、貸球を払
い出させるための制御を行う。
払出制御装置210は、遊技用マイコン(遊技用演算処理装置600)211、入力I
/F(Interface)215、入出力I/F(Interface)216及び検
査装置接続端子217を備える。
遊技用マイコン211は、CPU212、ROM213及びRAM214を備える。
CPU212は、払い出しを統括的に制御する制御装置であって、払出制御を司る。R
OM213は、払出制御のための不変の情報(プログラム、データ等)を記憶している。
RAM214は、払出制御時にワークエリアとして利用される。
CPU212は、入力I/F215を介して払出球検出スイッチ112、オーバーフロ
ースイッチ109、球切れスイッチ110、エラー解除スイッチ223、税率設定スイッ
チ226、及び貸出料金設定スイッチ227からの入力を受ける。
エラー解除スイッチ223は、払出制御装置210にエラーが発生した場合に、遊技店
の店員等が発生したエラーの原因を解消した際に、遊技店の店員等によって操作され、エ
ラー状態を解除するためのスイッチである。
税率設定スイッチ226は、遊技球の貸し出しに対して課税される間接税の税率を設定
するスイッチである。貸出料金設定スイッチ227は、貸し出される遊技球の有価価値を
設定するためのスイッチである。
また、CPU212は、入出力I/F216を介して、払出モータ220、発射制御装
置221、エラーナンバー表示器222、税率表示器224及び貸出料金表示器225に
指令信号を送信する。また、CPU212は、入出力I/F216を介して遊技制御装置
100から送信された各種信号を受信する。
払出モータ220は、実際に払出装置で遊技球を払い出すために駆動されるモータであ
る。具体的には、払出モータ220は、1個の遊技球を貯留可能な凹部を所定個数有する
スプロケットを回転させることによって、遊技球を払い出す。
発射制御装置221は、遊技球を遊技盤5に発射するための発射装置を制御する。エラ
ーナンバー表示器222は、払出制御装置210の裏面側に配設され、払出制御装置21
0で発生したエラーの種類を特定可能に表示する。
税率表示器224は、払出制御装置210の裏面側に配設され、税率設定スイッチ22
6によって設定された間接税の税率を表示する。貸出料金表示器225は、払出制御装置
210の裏面側に配設され、貸出料金設定スイッチ227によって設定された貸し出され
る遊技球の有価価値を表示する。
電源装置160は、バックアップ電源161、RAMクリアスイッチ162を備える。
遊技制御装置100、演出制御装置150、及び払出制御装置210は、電源装置160
に接続される。
バックアップ電源161は、停電時においても、遊技制御装置100、演出制御装置1
50、及び払出制御装置210に電源を供給する。なお、演出制御装置150には必ずし
も電源を供給しなくてもよく、停電復帰後、遊技制御装置100からコマンドを送信する
ようにしてもよい。
RAMクリアスイッチ162は、遊技制御装置100に備わるRAM104及び払出制
御装置210に備わるRAM214に記憶されている情報を初期化するスイッチである。
また、遊技機1に備わる球貸ボタン26が操作されると、カードユニット70は、プリ
ペイドカード又は会員カード等のカードに記憶されている有価価値から貸し出される遊技
球分の有価価値を減算して、減算した有価価値の値を遊技機1の残高表示部28に表示す
る。また、遊技機1に備わる排出ボタン27が操作されると、カードユニット70は、カ
ード挿入口71に挿入されたカードを排出する。
遊技制御装置100に備わる遊技用マイコン101と払出制御装置210に備わる遊技
用マイコン211とは、暗号化された暗号化信号(暗号化データ)を双方向通信可能に接
続される。また、暗号化されない非暗号化信号(平文データ)については、遊技制御装置
100に備わる遊技用マイコン101から払出制御装置210に備わる遊技用マイコン2
11に単方向通信が可能に接続される。
また、遊技制御装置100に備わる遊技用マイコン101と演出制御装置150に備わ
る遊技用マイコン151とは、暗号化されない非暗号化信号(平文データ)を遊技制御装
置100から演出制御装置150への単方向で通信可能に接続される。
なお、遊技制御装置100に備わる遊技用マイコン101、演出制御装置150に備わ
る遊技用マイコン151及び払出制御装置210に備わる遊技用マイコン211は、これ
らの接続に必要なポートを備えている。
次に、遊技制御装置100に備わる遊技用マイコン101、演出制御装置150に備わ
る遊技用マイコン151及び払出制御装置210に備わる遊技用マイコン211(以下、
総称して遊技用演算処理装置600という)について、図5を用いて詳細に説明する。
図5は、本発明の第1の実施の形態の遊技用演算処理装置(アミューズチップ)600
のブロック図である。
遊技用演算処理装置600はいわゆるアミューズチップ用のICとして製造され、遊技
制御を行う遊技領域部600Aと情報管理を行う情報領域部600Bとに区分される。
まず、遊技領域部600Aは、CPUコア601、ユーザプログラムROM602、H
WパラメータROM603、ユーザワークRAM604、ミラードRAM605、外部バ
スインターフェース(I/F)606、バス切替回路607、乱数生成回路608、クロ
ック生成回路609、割込制御回路610A、リセット回路610B、アドレスデコーダ
611、出力制御回路612、ブートブロック613、復号化・ROM書込回路614、
シリアル送信回路615A、シリアル送信回路615B、シリアル受信回路625、暗号
化送受信回路616、及びバス617によって構成される。なお、シリアル送信回路61
5A及びシリアル送信回路615Bを総称して、シリアル送信回路615という。
CPUコア601は、図4のCPU102、CPU152又はCPU212に相当する
。ユーザプログラムROM602は、図4のROM103、ROM153又はROM21
3に相当する。また、ユーザプログラムROM602及びHWパラメータROM603を
総称して、ROM(不揮発性記憶手段)という。
ユーザワークRAM604は、図4のRAM104、RAM154又はRAM214に
相当する。また、ユーザワークRAM604及びミラードRAM605を総称して、RA
M(揮発性記憶手段)という。
CPUコア601は、遊技制御のための演算処理を行う演算処理手段として機能する。
ユーザプログラムROM602は、制御プログラムを格納する。制御プログラムは、遊技
用演算処理装置600が遊技制御装置100に備わる遊技用マイコン101である場合に
は、遊技の制御を行うための遊技制御プログラムである。また、遊技用演算処理装置60
0が払出制御装置210に備わる遊技用マイコン211である場合には、遊技球の払い出
しを行うための払出制御プログラムである。さらに、遊技用演算処理装置600が演出制
御装置150に備わる遊技用マイコン151である場合には、演出の制御を行うための演
出制御プログラムである。
HWパラメータROM603は、正当性確認情報を格納する。正当性確認情報とは、遊
技用演算処理装置600の正当性の簡易チェックを行う場合の情報であり、例えば、遊技
機1の一意な識別子を示す固有ID、メーカコード(遊技機1の製造メーカ毎に割り振ら
れた固有の製造メーカの一意な識別子)、遊技機1のランク(1種、2種等)を示すラン
クコード、製造メーカが遊技機1の種類に設定する機種コード、検査番号を示す検査コー
ド、電源投入時にRAMをバックアップするか否かを示すRAMバックアップコード、税
率設定スイッチ226によって設定された税率、貸出料金設定スイッチ227によって設
定された貸出料金等である。また、HWパラメータROM603には、最初に貸出情報要
求を送信した検査装置の一意な識別子である固有IDが一つのみ記憶される。
第三者機関又は遊技機1の製造メーカがユーザプログラムROM602にプログラムを
書き込む際に、正当性確認情報がHWパラメータROM603に書き込まれる。遊技用演
算処理装置600は、電源立ち上がり時に、ユーザプログラムROM602に書き込まれ
たプログラムが正当であるか否かについて簡易チェックを行うことができる。具体的には
、遊技用演算処理装置600の電源立ち上がり時に、遊技用演算処理装置600自身が演
算した演算値と、正当性確認情報(すなわち、第三者機関等によって予め設定された結果
値)とを比較判定することで、簡易的な遊技用演算処理装置600のチェックを行うこと
が可能になっている。
ユーザワークRAM604は、遊技領域部600Aにおけるプログラムに基づく処理を
実行する際にワークエリア(作業領域)として用いられるものである。このユーザワーク
RAM604には、バックアップ電源161(図4)からのバックアップ電源が供給され
ているので、遊技機1への電源供給が途絶えても、記憶データが保持されるように構成さ
れている。ミラードRAM605は、クロックの立ち下がり時にユーザワークエリアに記
憶された情報を複製し、複製した情報を記憶する(CPUコアがZ80の場合には、クロ
ックの立ち上がり時に処理を実行するため、同期して動くことがないようにしている)。
外部バスインターフェース606は、メモリリクエスト信号MREQ、入出力リクエス
ト信号IORQ、メモリ書込み信号WR、メモリ読み出し信号RD及びモード信号MOD
Eなどのインターフェースであり、また、バス切替回路607は、16ビットのアドレス
信号A0〜A15や8ビットのデータ信号D0〜D7のインターフェースである。
例えば、MODE信号をハイレベルにした状態で、アドレス信号A0〜A15を順次に
インクリメントしながら、データ信号D0〜D7を加えると、ユーザプログラムROM6
02への書き込みモードとなって遊技機1の製造メーカ又は第三者機関によるプログラム
の書き込みが可能になる。なお、書き込みモードはプログラムの書き込みを可能にするも
のであり、ブートブロック613に記憶されるブートプログラムを書き込みできるように
するものではない。
また、ユーザプログラムROM602へのプログラムの書き込みが終了すると、HWパ
ラメータROM603の所定領域に書込終了コードが記録(例えば、所定のコード若しく
は所定ビットを物理的に切断することで記録)されるようになっており、HWパラメータ
ROM603に書込終了コードが記録されている場合には、ユーザプログラムROM60
2への新たなプログラムの書き込みができないようになっている。
乱数生成回路608は遊技の実行過程において遊技価値(例えば、大当り)を付加する
か否か等に係わる乱数(乱数は、大当りの決定や停止時の図柄の決定等に使用)を生成す
るもので、一様性乱数を生成する数学的手法(例えば、合同法又はM系列法等)を利用し
ている。なお、遊技用演算処理装置600が払出制御装置210に備わる遊技用マイコン
211である場合には、乱数生成回路608は必要ない。
クロック生成回路609は、遊技用演算処理装置600の外部から入力されたシステム
クロック信号を分周して、遊技制御に必要な各種の周期的な信号を生成する。具体的には
、CPUコア102を動作させるためのクロック信号、乱数生成回路608の乱数カウン
タ値を更新するためのクロック信号、及びシリアル送受信を行う際のタイミング信号など
を生成する。なお、クロック生成回路609は、CTC(Counter Timer Circuit)の機
能を有しており、CPUコア102にて所定周期(例えば、4ミリ秒)のタイマ割込処理
を行わせるためのタイマ割込信号も生成している。
割込制御回路610Aは、所定の割り込み条件の成立に基づいて、割り込みの発生をC
PUコア102に知らせる。なお、所定の割り込み条件は、遊技用演算処理装置600の
外部から割込要求信号(INT信号、NMI信号)が入力された場合や、クロック生成回
路609のCTCからタイマ割込信号が出力された場合などが相当する。
CPUコア102は、INT信号やNMI信号が入力された場合には、現在実行中の処
理を中断して予め定められた割込処理を実行する。なお、INT信号による割込(マスカ
ブル割込)は、プログラムの設定により禁止できるが、NMI信号による割込(ノンマス
カブル割込)はプログラムの設定により禁止できない。また、CPUコア102は、タイ
マ割込信号が出力された場合には、図29に示すタイマ割込処理を実行する。
また、リセット回路610Bは、外部から入力されたリセット信号(RST0端子から
の信号RST0)を検出すると、遊技用演算処理装置600の内部に備えられた各回路と
CPUコア102にリセット信号を伝達する。
なお、リセット回路610Bは、セキュリティ回路630(図11参照)としても機能
する。このセキュリティ回路630は、遊技用演算処理装置600の内部に備えられた各
回路に対して異常なアクセスが発生したことを検出する機能を有しており、異常を検出す
るとCPUコア102にリセット信号を伝達する。
アドレスデコーダ611は、内蔵デバイス及び内蔵コントロール/ステータスレジスタ
群のロケーションをメモリマップドI/O方式及びI/OマップドI/O方式によりデコ
ードする。
出力制御回路612は、アドレスデコーダ611からの信号制御を行って外部端子より
8ビットのチップセレクト信号(CS0〜CS7)を外部に出力するとともに、遊技用演
算処理装置600の内部に備えた回路を選択するチップセレクト信号を発生する機能を有
する。ブートブロック613は、ブートプログラムを記憶し、電源投入時に遊技用演算処
理装置600の初期化に係わる処理を行う。
復号化・ROM書込回路614は、ユーザプログラムROM602及びHWパラメータ
ROM603への書込みモードの際に使用されるもので、モード信号MODEが[H]レ
ベルになっている間、バス切替回路607を介してアドレス信号A0〜A15やデータ信
号D0〜D7を取り込み、そのデータ信号D0〜D7に含まれる情報(暗号化されたプロ
グラム及び暗号化された変更後の固有ID)を復号化処理した後、バス617を介してユ
ーザプログラムROM602及びHWパラメータROM603に出力する(書き込む)。
シリアル送信回路615A及びシリアル送信回路615Bは、暗号化されていない平文
データを送信するための回路である。シリアル送信回路615Aは、SIOTX0端子を
介して演出制御装置150に接続される。また、シリアル送信回路615Bは、SIOT
X1端子を介して払出制御装置210に接続される。シリアル受信回路625は、暗号化
されていない平文データを、SIORX端子を介して受信するための回路である。
暗号化送受信回路616は、NJLINK端子を介して暗号化された暗号化データを送
受信する回路である。例えば、遊技制御装置100から払出制御装置210にデータを送
信する場合に使用される、また、遊技制御装置100と払出制御装置210との間は、N
JLINK接続で接続され、暗号化送受信回路616には、NJLINK信号線が接続さ
れる。暗号化送受信回路616は、NJLINK信号線を介してデータを送受信する。
バス617はデータバス(図11のデータバス660)、アドレスバス(図11のアド
レスバス650)及び制御バスを含むものであり、情報領域部600Bまで延びている。
次に、遊技用演算処理装置600における情報管理を行う情報領域部600Bは、HP
GプログラムROM618、IDプロパティメモリ619、バスモニタ回路620、HP
GワークRAM621、制御回路622、外部通信制御回路623、バス624、及び遊
技領域部600Aから延びるバス617の一部を含んで構成される。
HPGプログラムROM618には、各種検査動作を行うHPGプログラムが格納され
る。
IDプロパティメモリ619には、図示しない検査装置から外部通信制御回路623を
介して受信した要求に基づいて、HWパラメータROM603に記憶されている情報を図
示しない検査装置にすぐに出力できるように、遊技用演算処理装置600の電源投入時(
システムリセット時)にHWパラメータに記憶されている情報を複製して記憶する。なお
、IDプロパティメモリ619は、遊技領域部600A側及び情報領域部600B側の双
方よりアクセスが可能な構成になっている。
バスモニタ回路620は、情報領域部600B側より遊技領域部600A側のバス61
7の状態監視及び制御を行う。ここでの制御とは、HWパラメータROM603の内容を
IDプロパティメモリ619に複写する際のタイミング制御や、ユーザプログラムROM
602に格納されたプログラムを外部に出力する際(遊技領域部600A側のバス617
を開放してユーザプログラムROM602からプログラムを読み込んで情報領域部600
B側より外部に出力する際)のタイミング制御である。なお、プログラムは、外部通信制
御回路623で暗号化されてから出力される。
HPGワークRAM621は、情報領域部600Bにおけるプログラムに基づく処理を
実行する際にワークエリア(作業領域)として用いられるものである。
制御回路622は情報領域部600B側を制御するもので、バッファメモリを有してい
る。制御回路622は、例えば、バスモニタ回路620を介してCPUコア102の動作
を監視し、非動作中に遊技領域部600AのユーザワークRAM604に記憶された内容
をミラードRAM605へコピーする。また、図示しない検査装置からの要求に応答して
情報領域部600BのIDプロパティメモリ619の内容を外部へ転送したり、プログラ
ム要求に応答してバスモニタ回路620を介してユーザプログラムROM602内のプロ
グラムを外部へ転送したりする。制御回路622のメモリは、転送時のタイミング調節の
ために用いられる。
外部通信制御回路623は図示しない検査装置との通信を行うもので、例えば、外部か
らの指令に基づいて遊技用演算処理装置600内に格納されている情報(例えば、固有I
D、プログラム、実払出数等)を暗号化した後、外部へ転送する等の処理を行う。
遊技用演算処理装置600では、遊技領域部600Aと情報領域部600Bがバスモニ
タ回路620を介して独立して動作する。すなわち、情報領域部600B側は遊技領域部
600AにおけるCPUコア102の作動に関係なく(プログラム実行に関係なく)動作
可能である。
なお、図5では図示されていないが、遊技用演算処理装置600には、図11にて後述
するRAMアクセス規制回路(更新規制手段)640を備えている。
図6は、本発明の第1の実施の形態の遊技制御装置100におけるシリアル送信回路6
15の構成例を示すブロック図である。
シリアル送信回路615は、送信シリアルチャンネル設定レジスタ633、送信データ
ステータスレジスタ631、送信制御レジスタ632、送信データレジスタ635(送信
データバッファレジスタ635A、送信データシフトレジスタ635B)、ボーレート生
成回路(送信速度設定手段)634を含んで構成される。
シリアル送信回路615は、出力制御回路612から入力された選択信号に基づいて、
送信先を選択する。また、リセット信号の入力を受け付けると、各種レジスタに設定され
た値を0クリアする。
送信シリアルチャンネル設定レジスタ633は、データ送信時の通信速度及び通信フォ
ーマットを指定するレジスタである。送信シリアルチャンネル設定レジスタ633には、
後述するメイン処理におけるシリアル通信設定処理によって各値が設定される。
図7は、本発明の第1の実施の形態の送信シリアルチャンネル設定レジスタ633の構
成例を示す図である。図7に示すように、送信シリアルチャンネル設定レジスタ633は
、16ビットで構成されており、ビット0〜15はすべて書き込み/読み出し可能とされ
る。
送信シリアルチャンネル設定レジスタ633において、ビット0〜12には、送信ボー
レート(通信速度)を算出するためのボーレート設定値(例えば、分周比)が設定される
具体的には、遊技用演算処理装置600に入力されるシステムクロック(MCLK)の
周波数(単位Hz:ヘルツ)を32で除した値を、さらに、このボーレート設定値で除し
た値が、送信ボーレート(1秒間に送信されるデータのビット数)として設定される。例
えば、ボーレート設定値として100を設定すると、システムクロックの周波数が20M
Hzであった場合には、送信ボーレートは、20,000,000÷32÷100=625
0(bps)となる。
ビット13には、送信データ長を8ビットとする場合に“0”が設定され、9ビットと
する場合に“1”が設定される。
ビット14には、送信データにパリティを付加しない場合に“0”が設定され、パリテ
ィを付加する場合に“1”が設定される。ビット15には、送信データに付加するパリテ
ィを偶数パリティとする場合に“0”が設定され、奇数パリティとする場合に“1”が設
定される。なお、ビット15は、ビット14に“1”(パリティ有り)が設定されている
場合に有効となる。
なお、遊技用演算処理装置600にリセット信号(RST0)が入力されると、シリア
ル送信回路615がリセットされ、送信シリアルチャンネル設定レジスタ633の全ビッ
トが“0”に設定される(図6等も参照)。
図6の説明に戻り、送信制御レジスタ632は、シリアル送信回路615の動作を制御
するためのレジスタである。
図8は、本発明の第1の実施の形態の送信制御レジスタ632の構成例を示す図である
。図8に示すように、送信制御レジスタ632は、例えば8ビットで構成され、ビット6
は読み出し専用とされ、他のビット0、4、5、7は書き込み/読み出し可能とされる。
なお、本実施形態では送信制御レジスタ632のビット1〜3は未使用としているため、
図8では記載を省略している。
送信制御レジスタ632のビット0には、送信回路(シリアル送信回路615)を初期
化する場合に“1”が設定される。送信回路が初期化されると送信データレジスタ635
のデータも含めて全てのレジスタが初期値とされる。
ビット4には、送信データレジスタ635(送信データシフトレジスタ635B)から
のデータ送信を禁止する場合に“0”が設定され、データ送信を許可する場合に“1”が
設定される。
ビット5には、送信データレジスタ635が空になったときに送信割り込みを要求しな
い場合に“0”が設定され、送信割り込みを要求する場合に“1”が設定される。
ビット6には、送信割り込み要求が発生しているか否か(送信割り込み状態)を示す値
が設定される。ビット6に“0”が設定されている場合には送信割り込みを要求していな
い状態であることを示し、“1”が設定されている場合には送信割り込みを要求している
状態であることを示す。
ビット7には、送信データレジスタのビット8の値(データ長が9ビットの場合)が設
定される。
なお、遊技用演算処理装置600にリセット信号(RST0)が入力されると、シリア
ル送信回路615がリセットされ、送信制御レジスタ632の全ビットが“0”に設定さ
れる(図6等も参照)。その結果、送信制御レジスタ632のビット4が“0”になるの
で、送信データレジスタ635(送信データシフトレジスタ635B)からのデータ送信
が禁止され、データ出力がオフされた状態になる。
図6の説明に戻り、送信データステータスレジスタ631は、送信データレジスタ63
5の状態を示すレジスタである。CPU102は、送信データステータスレジスタ631
の設定値によって、送信データレジスタ635の状態を確認することができる。
図9は、本発明の第1の実施の形態の送信データステータスレジスタ631の構成例を
示す図である。送信データステータスレジスタ631は、例えば8ビットで構成され、ビ
ット0〜5、7はすべて読み出し専用とされる。なお、本実施形態では送信データステー
タスレジスタ631のビット6は未使用としているため、図9では省略している。
送信データステータスレジスタ631において、ビット0〜5には、送信データの残量
を示す値が設定される。例えば、ビット0〜5に“00h”(16進数の“0”)が設定
されていると送信データがないことを示し、“01h”が設定されていると送信データが
1バイト残っていることを示し、“20h”が設定されていると送信データが32バイト
残っていることを示す。
ビット7には、送信データレジスタ635におけるデータの送信状態を示す値が設定さ
れる。ビット7に“1”が設定されているとデータを送信していない状態であることを示
し、“0”が設定されているとデータを送信している状態であることを示す。
なお、遊技用演算処理装置600にリセット信号(RST0)が入力されると、シリア
ル送信回路615がリセットされ、送信データステータスレジスタ631の全ビットが“
0”に設定される(図6等も参照)。その結果、送信データステータスレジスタ631の
ビット0〜5が“00h”となり、送信データの残量がない状態となる。
図6の説明に戻り、送信データレジスタ635は、シリアル送信回路615が送信する
データを格納するレジスタである。送信データレジスタ635は、例えば、1段の送信デ
ータシフトレジスタ635Bと、31段の送信データバッファレジスタ635Aで構成さ
れる。
図10は、本発明の第1の実施の形態の送信データレジスタ635(1段分)の構成例
を示す図である。1段の送信データレジスタ635は、例えば8ビットで構成され、ビッ
ト0〜7はすべて書き込み専用とされる。
この送信データレジスタ635には、タイマ割込処理で生成される制御指令データが格
納され、送信制御レジスタのビット4に“1”(送信許可)が設定されていれば、格納さ
れた制御指令データは自動的に演出制御装置150に送信される。
制御指令データは、例えば、1バイトのモードデータと1バイトのアクションデータの
2バイトで構成されるので、2段の送信データレジスタ635に1つの制御指令データが
格納されることとなる。そして、本実施形態では、送信データレジスタ635を32段で
構成しているので、1回のタイマ割込処理で最大16の制御指令データが生成される場合
、これをすべて送信データレジスタ635に格納することができる。
ただし、CPU102によって、新たな送信データを送信データレジスタ635に格納
できるのは、送信データステータスレジスタ631のビット0〜5の値(送信データの残
量を示す値)が“00h”〜“1Fh”の場合(送信データレジスタ635に、0〜31
バイトの未送信データが残っている場合)に限られる。
送信データステータスレジスタ631のビット0〜5の値が“20h”の場合は、送信
データレジスタ635に空きがないので、CPU102によって送信データレジスタ63
5に書き込もうとされたデータは廃棄される。これにより、送信データレジスタ635が
満杯のときは、誤ってCPU102によるデータ書き込みが発生しても、既に格納されて
いる送信データレジスタ635のデータが破壊されないようになっている。
なお、遊技用演算処理装置600にリセット信号(RST0)が入力されると、シリア
ル送信回路615がリセットされ、送信データレジスタ635の全ビットが“0”に設定
される(図6等も参照)。
図6の説明に戻り、ボーレート生成回路634は、クロック生成回路609から分周回
路629を介して出力されるクロック信号(遊技用演算処理装置600に入力されるシス
テムクロック(MCLK)を分周した信号)及び送信シリアルチャンネル設定レジスタ6
33に設定されている設定値(ボーレート設定値)に基づいて、シリアル送信回路615
が用いる送信ボーレートを生成する。このとき、ボーレート生成回路634は、クロック
信号及びボーレート設定値に基づいて、前述の計算式を用いて送信ボーレートを求める。
また、分周回路629は、CPU102にも分周されたクロック信号を入力する。なお、
分周回路629は、クロック生成回路609に含まれるように構成してもよい。
シリアル送信回路615では、送信許可の設定(送信制御レジスタ632のビット4を
“1”)がなされた後、送信するデータを送信データレジスタ635(送信データバッフ
ァレジスタ635A)に書き込む、又は、送信するデータを送信データレジスタ635に
書き込んだ後、送信許可の設定がなされると、自動的に送信が開始される。送信が開始さ
れると、送信データバッファレジスタ635Aのデータが送信データシフトレジスタ63
5Bに転送され、送信データシフトレジスタ635Bからシリアル変換されて、最下位ビ
ット(ビット0)から1ビットずつ順次出力される。そして、データの送信が完了すると
送信データシフトレジスタ635Bは空になるので、送信データバッファレジスタ635
Aに書き込まれている次のデータが送信データシフトレジスタ635Bに転送され、出力
される。
したがって、シリアル送信回路615では、送信データレジスタ635(送信データシ
フトレジスタ635B、送信データバッファレジスタ635A)に書き込まれたデータ(
制御指令データ)が、演出制御装置150に1ビットずつ順次送信されることとなる。
このように、シリアル送信回路(制御指令送信手段)615は、送信データ(例えば、
制御指令データ)を格納する送信データレジスタ635を備え、送信データレジスタ63
5に送信データが格納されると、遊技制御装置100から演出制御装置150へ向かう方
向に、格納された送信データを1ビットずつ順次送信する(いわゆるシリアル通信)よう
に構成されている。
具体的には、送信データレジスタ635は、格納されたデータをすぐに送信する送信デ
ータシフトレジスタ635Bと、格納されたデータを保持するとともに、送信データシフ
トレジスタ635Bがデータを格納可能な状態(データの送信が完了した状態)となった
ときに、保持しているデータを送信データシフトレジスタ635Bに転送する送信データ
バッファレジスタ635Aと、で構成される。
これにより、従来のパラレル通信では必須とされていたタイマ割込処理における制御指
令データの送信処理を省略できるので、CPU102の負担を軽減することができる。
また、シリアル通信とすることで、制御指令データを送信するための配線本数を比較的
少なくすることができる。
また、遊技制御装置100と演出制御装置150との間の通信は、遊技制御装置100
から演出制御装置150へのみデータを送信可能な単方向通信とされ、遊技制御装置10
0にデータは入力されないので、不正が行われることを防止できる。
なお、本実施形態においては、送信データレジスタ635に最大で32バイトの送信デ
ータが格納可能であるが、この32バイトのデータが、1回のタイマ割込処理において全
て出力できるように、ボーレート設定値(送信シリアルチャンネル設定レジスタ633の
ビット0〜12)の値が設定されている。
具体的には、送信データレジスタ635から出力される1バイトあたりのデータ送信に
必要な時間Tbと、タイマ割込信号の発生周期Fと、送信データレジスタ635に格納で
きるデータの上限バイト数Bとの関係が、F/B>Tbとなるように、ボーレート設定値
を設定して送信の速度を決めればよい。
例えば、タイマ割込信号の発生周期F=4ミリ秒で、送信データレジスタ635に格納
できるデータの上限バイト数B=32バイトであれば、F/B=4000/32=125
マイクロ秒よりも短くなるようにTbの値を決定し、遊技用演算処理装置600に入力さ
れるシステムクロック(MCLK)の周波数を考慮したうえで、ボーレート設定値の値を
定めればよい。
このような構成とすることで、シリアル送信回路(制御指令送信手段、送信手段)61
5は、1回のタイマ割込処理において生成される一連の制御指令データをすべて格納する
ことが可能となり、タイマ割り込み毎に生成される制御指令データを確実に送信すること
ができる。
図11は、本発明の第1の実施の形態の遊技制御装置100に備わる遊技用演算処理装
置(アミューズチップ)600とその周辺のブロック図である。
遊技用演算処理装置600は、セキュリティ回路630、CPUコア102(図11で
は601)、RAMアクセス規制回路640、ユーザワークRAM104(図11では6
04)、アドレスデコーダ611、出力制御回路612、及び、ユーザプログラムROM
103(図11では602)を備える。
なお、遊技用演算処理装置600に備わるこれらの回路等は、アドレスバス650及び
データバス660を介して接続されている。アドレスバス650は、A0〜A15の16
ビットの信号線によって構成され、データバス660は、D0〜D7の8ビットの信号線
によって構成される。
また、遊技制御装置100は、演出制御装置150に接続されるシリアル送信回路61
5A、及び、払出制御装置210に接続されるシリアル送信回路615Bを備える。
なお、演出制御装置150及び払出制御装置210には、シリアル受信回路625(図
5)に相当する受信回路が備えられていて、シリアル送信回路615A、615Bから出
力されたシリアルのデータを、それぞれが受信する構成となっている。
遊技用演算処理装置600に電源が投入される際には、RST0端子(図5)を介して
電源装置160からリセット信号(起動信号)が入力され、リセット回路610B(図5
)が作動する。
セキュリティ回路630は、このリセット信号が入力されるとHWパラメータROM6
03に記憶された正当性確認情報を用いて、セキュリティチェック処理を実行する。この
セキュリティチェック処理は、ユーザプログラムROM103に記憶されたプログラムの
正当性の判定を行う処理である。
セキュリティ回路630は、このセキュリティチェック処理を実行している間は、CP
Uコア102のリセット端子(RES0(負論理))にリセット信号を継続して出力する
ことで、CPUコア102の起動を待機させる。
CPUコア102は、前述のリセット端子(RES0(負論理))と、書込指令出力端
子(WR(負論理))、及び読出指令出力端子(RD(負論理))を備える。リセット端
子はセキュリティ回路630に接続されており、遊技用演算処理装置600にリセット信
号が入力されると、前述のように、セキュリティチェック処理を実行している間、CPU
コア102に対するリセット信号がリセット端子に入力される。
CPUコア102のリセット端子にリセット信号が入力されると、CPUコア102は
、CPUコア102に備わるレジスタ(REG)を初期化する。
また、CPUコア102がユーザワークRAM104にデータの書き込みを指令する書
込指令を出力する場合には、CPUコア102の書込指令出力端子からは所定値よりも低
い電圧のローレベルの信号が出力される。同様に、CPUコア102がユーザワークRA
M104からデータの読み出しを指令する読出指令を出力する場合には、CPUコア10
2の読出指令出力端子からは所定値よりも低い電圧のローレベルの信号が出力される。
つまり、書込指令出力端子及び読出指令出力端子は、通常電圧がハイレベルに維持され
ており、ユーザワークRAM104への読み書きを行うときにのみ電圧がローレベルにな
る。
また、CPUコア102は、アドレスバス650に指定したアドレスを出力し、データ
バス660を介して指定したアドレスに格納されたデータを入出力する。
まず、ユーザワークRAM104のデータの読み出しについて説明する。
CPUコア102から、ユーザワークRAM104の読出指令入力端子(RD(負論理
))に読出指令が入力されると、アドレスバス650及びデータバス660を介してCP
Uコア102に読出データが出力される。
このとき、CPUコア102からアドレスバス650へは、ユーザワークRAM104
のアドレスが出力され、アドレスデコーダ611からユーザワークRAM104のチップ
選択端子(所謂CS端子に相当、図示は略)に選択信号が入力されることによって、ユー
ザワークRAM104が選択される。次いで、選択されたユーザワークRAM104は、
アドレスバス650が指定する記憶領域のデータをデータバス660へ出力する。次いで
、CPUコア102は、データバス660へ出力されたデータを内部へ取り込む。このよ
うな手順により、CPUコア102はユーザワークRAM104からデータを読み出す。
次に、ユーザワークRAM104へのデータの書き込みについて説明する。
CPUコア102に備わる書込指令出力端子は、RAMアクセス規制回路640のOR
ゲート回路642に備わる二つの入力端子のうち一方の入力端子に接続される。ORゲー
ト回路642の他方の入力端子は、RAMアクセス規制回路640のフリップフロップ回
路641の出力端子(Q(負論理))に接続され、ORゲート回路642の出力端子は、
ユーザワークRAM104の書込指令入力端子(WR(負論理))に接続されている。
また、ユーザワークRAM104の書込指令入力端子に所定値以下の電圧であるローレ
ベルの信号が入力されると、ユーザワークRAM104への書き込みが許容される。
このため、ORゲート回路642の二つの入力端子にそれぞれローレベルの信号が入力
されなければ、ユーザワークRAM104への書き込みが許容されない。言い換えれば、
ORゲート回路642の少なくとも一方の入力端子にハイレベルの信号が入力されている
と、ユーザワークRAM104への書き込みが規制(禁止)される。
ここで、RAMアクセス規制回路640のフリップフロップ回路641について説明す
る。
フリップフロップ回路641は、D型のフリップフロップ回路であり、入力端子として
、データ端子(D)、リセット端子(R(負論理))、及び出力イネーブル端子(OE(
負論理))を備えるとともに、出力端子(Q(正論理),Q(負論理))を備える。
データ端子には、データバス660を構成する信号線D0〜D7のうち所定の一本の信
号線(例えば、D0)が接続されている。
リセット端子には電源装置160からリセット信号線が接続され、リセット信号が入力
されるとリセット端子はローレベルとなる。このときフリップフロップ回路641は、出
力端子Q(正論理)からローレベルの信号を出力させ、出力端子Q(負論理)からハイレ
ベルの信号を出力させる。出力端子Q(正論理)からの出力と、出力端子Q(負論理)か
らの出力は、相互に反転するレベルとなっている。
また、出力イネーブル端子は、出力制御回路612から送信された出力イネーブル信号
が入力される。出力イネーブル信号がハイレベルの場合には、出力端子から信号の出力が
可能な状態となる。
このフリップフロップ回路641に備えた出力端子Q(負論理)からの信号レベルは、
CPUコア102によって、自在に設定できるようになっている。この設定は、CPUコ
ア102が、フリップフロップ回路641に割り当てられたアドレスの記憶領域に所定の
データを書き込むことで実現される。
具体的には、CPUコア102によってフリップフロップ回路641に割り当てられた
アドレスの記憶領域にデータを書き込む処理が行われると、CPUコア102からアドレ
スバス650へは、フリップフロップ回路641のアドレスが出力される。次に、アドレ
スデコーダ611から、出力制御回路612を介して、フリップフロップ回路641の出
力イネーブル端子にクロック信号が入力され、出力イネーブル端子の電圧レベルが立ち上
がり、ハイレベルとなる。
このときフリップフロップ回路641は、データ端子に入力されている信号を取り込ん
で、取り込んだ信号を出力端子Q(正論理)から出力し、取り込んだ信号の反転値を出力
端子Q(負論理)から出力する。
また、フリップフロップ回路641は、出力制御回路612がクロック信号の入力を終
了した場合には、出力イネーブル端子の電圧レベルは立ち下がりローレベルとなり、出力
端子Q(正論理)及び出力端子Q(負論理)の電圧レベルを保持する。
また、出力端子Q(負論理)は、ORゲート回路642の入力端子に信号を出力する。
出力端子Q(正論理)には何も接続されない。
次に、フリップフロップ回路641の入力状態に応じた各種動作について説明する。
フリップフロップ回路641は、前述したように、出力イネーブル端子の電圧レベルの
立ち上り、つまり出力イネーブル信号の入力開始時に、データ端子の電圧レベルを読み取
り、読み取った電圧レベルの反転値を出力端子Q(負論理)から出力する。
一方、フリップフロップ回路641は、出力イネーブル端子の電圧レベルの立ち下がり
、つまり、出力イネーブル信号の入力終了時に、出力イネーブル端子の電源レベルの立ち
上がり時の出力端子Q(負論理)からの出力を保持する。
出力端子Q(負論理)からハイレベルの信号がORゲート回路642の入力端子に出力
されていると、ORゲート回路642の他方の入力端子にローレベル及びハイレベルのい
ずれの信号が入力されても、ORゲート回路642の出力端子からはハイレベルの信号が
出力される。
このため、フリップフロップ回路641の出力端子Q(負論理)からハイレベルの信号
が出力されていれば、ORゲート回路642の他方の入力端子に書込指令信号が入力され
ても(当該他方の入力端子にローレベルの信号が入力されても)、ユーザワークRAM1
04の書込指令入力端子にはローレベルが入力されなくなり、RAM書込禁止状態が発生
する。
RAMアクセス規制回路640をRAM書込禁止状態にするかRAM書込許可状態にす
るかは、クロック信号がフリップフロップ回路641に入力されたときのフリップフロッ
プ回路641のデータ端子に入力される電圧レベル、又はリセット信号の入力の有無に基
づく。
前述のようにCPUコア102は、出力制御回路612を制御してクロック信号の出力
を制御でき、データバス660の信号線の出力も制御できるので、フリップフロップ回路
641の出力端子Q(負論理)から出力される信号は、CPUコア102によって制御可
能である。言い換えると、CPUコア102は、データバス660の信号レベルを制御す
ることによってRAMアクセス規制回路640の書込状態を制御できる。
さらに、前述のようにフリップフロップ回路641のリセット端子にリセット信号が入
力された場合には、フリップフロップ回路641は、出力端子Qの電圧レベルをローにす
るため、出力端子Q(負論理)の電圧レベルはハイになる。このため、フリップフロップ
回路641にリセット信号が入力された場合には、RAMアクセス規制回路640では、
RAM書込禁止状態が発生することになる。
前述のように、出力制御回路612が払出制御装置210に接続されるシリアル送信回
路615Bにクロック信号を入力すると、シリアル送信回路615Bは、クロック信号が
入力されたタイミングで、データバス617からデータを読み取り、読み取ったデータを
送信データバッファレジスタ635Aに格納する。そして、送信データバッファレジスタ
635Aに格納されたデータを送信データシフトレジスタ635Bに格納し、払出制御装
置210に順次出力する。
なお、前述したセキュリティ回路630、RAMアクセス規制回路640、及びシリア
ル送信回路615の起動(リセット)は、電源装置160からのリセット信号を、前述の
リセット回路610B(図5)を介して受け入れた場合に実行される。ただし、電源装置
160からのリセット信号は、必ずしもリセット回路610Bを介して各回路に入力され
る必要はなく、リセット回路610Bを経由しない別個の信号線を介して各回路に入力さ
れるような構成でもよい。
なお、シリアル送信回路615(615A、615B)においては、図7〜図10の説
明で前述したように、リセット信号によって、演出制御装置150や払出制御装置210
へのデータ出力がオフ状態となる。
また、払出制御装置210は、シリアル送信回路615を備えてはいない点が、図6に
示した遊技制御装置100と異なっている。その他の構成は、図11に示した遊技制御装
置100と同じ構成である。
また、演出制御装置150は、シリアル送信回路615を備えてはいない点、さらに、
遊技用演算処理装置600にRAMアクセス規制回路640を備えていない点が、図6に
示した遊技制御装置100と異なっている。その他の構成については、図11に示した遊
技制御装置100と同じ構成である。
なお、払出制御装置210及び演出制御装置150に備えたシリアル受信回路625は
、払出制御装置210(又は演出制御装置150)のCPU102が起動した後であれば
、遊技制御装置100のシリアル送信回路615からの信号を受け入れられる状態となっ
ている。なお、払出制御装置210(又は演出制御装置150)のシリアル受信回路62
5とCPU102とは、データバス617によって相互に接続される構成となっている。
図12は、本発明の第1の実施の形態のCPUコア102の内部構成を説明するブロッ
ク図である。CPUコア102はZ80系のCPUとして構成されている。
図12に示すCPUコア102は、それぞれ8ビットの幅を有する、Wレジスタ120
1A、Aレジスタ1202A、Bレジスタ1204A、Cレジスタ1205A、Dレジス
タ1207A、Eレジスタ1208A、Hレジスタ1210A、Lレジスタ1211Aを
備えている。
これらの汎用レジスタは、Wレジスタ1201AとAレジスタ1202Aとを組み合わ
せて、16ビットの幅を有するWAレジスタ1203Aとして使用することも可能である
。同様に、Bレジスタ1204AとCレジスタ1205Aとを組み合わせたBCレジスタ
1206A、Dレジスタ1207AとEレジスタ1208Aとを組み合わせたDEレジス
タ1209A、Hレジスタ1210AとLレジスタ1211Aとを組み合わせたHLレジ
スタ1212Aを使用することも可能である。
なお、これらの汎用レジスタは、1つの汎用レジスタ群(バンク0のレジスタ群)12
20Aを形成している。一方、CPUコア102は、バンク0のレジスタ群1220Aに
含まれる汎用レジスタと同様の構成を有する、もう1つの汎用レジスタ群(バンク1のレ
ジスタ群)1220Bを備えている。
このバンク1のレジスタ群1220Bには、バンク0のWレジスタ1201A〜Lレジ
スタ1211Aと同一の機能を有する、Wレジスタ1201B〜Lレジスタ1211Bを
備えている。これらのレジスタも、バンク0同様に、WAレジスタ1203B〜HLレジ
スタ1212Bとして、16ビットのレジスタとして使用することが可能である。
さらに、CPUコア102は、8ビットの幅を有するフラグレジスタ1200を備えて
いる。
フラグレジスタ1200は、図13で詳細を説明するが、レジスタを用いた演算結果が
格納される。また、フラグレジスタ1200の、レジスタバンクセレクタ(RBS)13
01(図13で後述)によって、2つの汎用レジスタ群1220A、1220Bのうちの
いずれを、演算対象として用いるかが選択される。
レジスタバンクセレクタ(RBS)1301により選択されたレジスタ群に属する各レ
ジスタは、後述の命令解釈実行回路1242によって演算に用いられる。一方、選択され
ていないレジスタ群に属する各レジスタは、レジスタバンクセレクタ(RBS)1301
の値が変更されて選択対象となるまでは、値を保持する。
また、CPUコア102は、8ビットの幅を有して、上位アドレス指定レジスタとして
機能するKレジスタ1230を備えている。このレジスタは、後述の命令解釈実行回路1
242が、所定の16ビットのアドレスに記憶されたデータにアクセスする際の上位8ビ
ットのアドレスを指定する上位アドレス指定レジスタである。
さらに、CPUコア102は、それぞれ16ビットの幅を有する、IXレジスタ123
1、IYレジスタ1232、スタックポインタとして機能するSPレジスタ1233、及
びプログラムカウンタとして機能するPCレジスタ1234を備えている。
IXレジスタ1231、IYレジスタ1232は、後述の命令解釈実行回路1242が
データをアクセスする際のインデックスとして用いられる。スタックポインタ1233は
、スタックエリア(図18で後述)にデータを格納する(又はデータを取り出す)際の領
域の位置を示す。プログラムカウンタ1234は、後述の命令解釈実行回路1242で実
行されている命令が格納されているアドレスを示している。
命令解釈実行回路1242は、遊技制御プログラムを実行して、CPUコア102内部
の各レジスタを用いた演算処理を行う。具体的には、ユーザプログラムROM103にて
、プログラムカウンタ1234に示されるアドレスに記憶されたデータを読み出すととも
に、読み出したデータをコードと見なして、コードに対応する命令を実行する。
故に、本実施形態においては、CPUコア102自体を演算処理手段として例示してい
るが、CPUコア102の内部では、命令解釈実行回路1242が主体となって演算処理
手段の機能を果たしている。
なお、命令解釈実行回路1242は、遊技制御プログラムの命令に対応して、アクセス
回路1243、アドレスバス650、及びデータバス660を介して、CPUコア102
外部のユーザプログラムROM103、ユーザワークRAM604、及び他の回路との間
で、データの授受を行う場合もある。
また、命令解釈実行回路1242は、ユーザプログラムROM103の命令を1つずつ
実行する毎に、次の命令が格納されているアドレスをプログラムカウンタ1234に格納
する。このようにして命令の実行と、プログラムカウンタ1234の更新を繰り返すこと
で、遊技制御プログラムが順次実行される。なお、割込制御回路610Aからの割込信号
を受け付けると、プログラムカウンタ1234の値は、予め設定された割込処理のアドレ
スの値に切り替えられる。
この命令解釈実行回路1242及びCPUコア102に備える各レジスタは、内部バス
1235によって、データが授受される。
初期値設定回路1241は、CPUコア102に備える各レジスタに初期値をハード的
に設定する回路である。
内蔵リセット回路1240は、セキュリティ回路630からのリセット信号を受信する
と、初期値設定回路1241を起動させ、CPUコア102に備える各レジスタに初期値
を設定させたのちに、命令解釈実行回路1242を起動させる。
図13は、本発明の第1の実施の形態のフラグレジスタ1200の構成を説明する図で
ある。フラグレジスタ1200の各ビットの値は、図12における命令解釈実行回路12
42によって設定される。
割込マスタ許可フラグ(IMF)1300は、割込信号による割込処理の許否を設定す
るフラグであり、セット(値が「1」)で許可、クリア(値が「0」)で禁止となる。
レジスタバンクセレクタ(RBS)1301は、図12における命令解釈実行回路12
42が演算処理を行う際に、2つの汎用レジスタ群1220A、1220Bのうちのいず
れを用いるかを選択するフラグであり、セット(値が「1」)でバンク1のレジスタ群1
220B、クリア(値が「0」)でバンク0のレジスタ群1220Aが選択される。
オーバーフローフラグ(VF)1302は、所定の演算によって演算対象の汎用レジス
タに桁溢れ(オーバーフロー)が発生するとセット(値が「1」)され、他の場合はクリ
ア(値が「0」)される。
サインフラグ(SF)1303は、所定の演算によって演算対象の汎用レジスタの最上
位ビットが「1」になるとセット(値が「1」)され、他の場合はクリア(値が「0」)
される。
ハーフキャリーフラグ(HF)1304は、8ビット演算を行った結果として演算対象
の汎用レジスタの4ビット目に桁上がり(キャリー)や桁借り(ボロー)が発生するとセ
ット(値が「1」)され、他の場合はクリア(値が「0」)される。
キャリーフラグ(CF)1305は、所定の演算によって桁上がり(キャリー)や桁借
り(ボロー)が発生するとセット(値が「1」)され、他の場合はクリア(値が「0」)
される。
ゼロフラグ(ZF)1306は、所定の演算算結果が「0」となった場合にセット(値
が「1」)され、他の場合はクリア(値が「0」)される。
ジャンプステータスフラグ(JF)1307は、キャリーフラグ(CF)1305又は
ゼロフラグ(ZF)1306の少なくとも一方がセットされた場合にはセット(値が「1
」)される。若しくは、演算処理を行わない場合であっても、汎用レジスタの値が「00
H」の値になった場合は、セット(値が「1」)される。このような条件をいずれも満た
さない場合は、クリア(値が「0」)される。
なお、CPUコア102がリセットされた場合には、フラグレジスタの全bitが0に
設定される。
図14は、本発明の第1の実施の形態のユーザワークRAM104の一例を示す図であ
る。
ユーザワークRAM104は、第1停電復旧領域701、ワークエリア702、第2停
電復旧領域703、チェックサム領域704、使用禁止領域(アクセス禁止領域)705
、及びスタック領域706を有する。
ユーザワークRAM104には、アドレス「2800H」〜「29FFH」が割り当て
られており、第1停電復旧領域701にはアドレス「2800H」が割り当てられ、ワー
クエリア702にはアドレス「2801H」〜「2917H」が割り当てられ、第2停電
復旧領域703にはアドレス「2918H」が割り当てられ、チェックサム領域704に
はアドレス「2919H」が割り当てられ、使用禁止領域705にはアドレス「291A
H」〜「297FH」が割り当てられ、スタック領域706にはアドレス「2980H」
〜「29FFH」が割り当てられる。
ユーザワークRAM104の各領域について説明する。
第1停電復旧領域701及び第2停電復旧領域703は、遊技機1への電源供給開始時
に参照される情報が格納されており、直前の電源供給停止のとき(停電発生や遊技機1の
電源スイッチをオフにしたとき)に、電源遮断の処理が正しく実行されていたか否かを示
す情報(電源遮断確認フラグ)が格納されている。
ワークエリア702には、遊技制御で必要な変数等が格納され、図25及び図26に示
す遊技制御装置メイン処理並びに図29に示すタイマ割込処理等で、これらの変数が更新
される。具体的には、特図変動表示ゲーム及び普図変動表示ゲームの保留数を格納する保
留カウンタ、特図変動表示ゲームを実行するために必要な各種乱数の生成領域、普図変動
表示ゲームを抽選するために必要な乱数(普図乱数)の生成領域、普図乱数の保存領域、
特図変動表示ゲームを実行するために必要な各種乱数の保存領域などがワークエリア70
2に記憶される。これらの詳細については、図15から図17を参照して後述する。
チェックサム領域704には、停電発生時に算出されたユーザワークRAM104の第
1停電復旧領域701、ワークエリア702、及び第2停電復旧領域703のチェックサ
ムが格納される。
使用禁止領域705は使用されない記憶領域であり、当該領域へのアクセスがあると、
セキュリティ回路630(図6)によって、CPUコア102がリセットされるようにな
っている。
スタック領域706には、CPUコア102で演算されているデータの一部を一時的に
退避させる場合に、退避データが格納される。また、割込みが発生した場合の戻りアドレ
スや、サブルーチンや関数を呼び出す場合の戻りアドレスも格納される。
なお、本実施形態では、ワークエリア702のうち遊技制御に用いられる各種乱数の生
成及び保存領域の上位アドレスと、スタック領域706が割り当てられている領域の上位
アドレスが異なるように設定されている。具体的には、ワークエリア702の各種乱数の
生成及び保存領域の上位アドレスが「28H」(第1記憶領域)、スタック領域の上位ア
ドレスが「29H」(第2記憶領域)となっており、乱数更新時にスタック領域の値を誤
って更新してしまったり、スタック領域更新時に乱数の値を誤って更新してしまったりす
ることを防止している。
さらに、上位アドレスが誤って設定されてしまった場合であっても誤作動を生じさせな
いように、各種乱数の生成及び保存領域の下位アドレスがスタック領域の下位アドレスと
重ならないように設定している。
具体的には、図15から図17で後述する、特図変動表示ゲームを実行するための各種
乱数(始動記憶)の生成領域(2820H〜2827H)、普図乱数の生成領域(282
8H)及び普図乱数の保存領域(282CH〜282FH)、第1特図変動表示ゲームを
実行するための各種乱数(始動記憶)の保存領域(2830H〜284FH)、及び、第
2特図変動表示ゲームを実行するための各種乱数(始動記憶)の保存領域(2850H〜
286FH)などが該当する。これらの領域の上位アドレスを「28H」から「29H」
に置換した領域(即ち2920H〜296FHの領域)は、図14に示すように、使用禁
止領域705として設定されている。
図15から図17は、本発明の第1の実施の形態のユーザワークRAM104に割り当
てられたワークエリア702に格納されるデータの具体例を説明する図である。図15は
保留カウンタ、各種乱数の生成領域及び普図乱数の保存領域を示す。図16は第1特図変
動表示ゲームを実行するために必要な各種乱数の保存領域、図17は第2特図変動表示ゲ
ームを実行するために必要な各種乱数の保存領域を示す。
図15を参照すると、保留カウンタを格納する領域として281DHから281FHが
割り当てられている。具体的には、第1特図変動表示ゲームの保留記憶数を格納する第1
特図保留カウンタ(281DH)、第2特図変動表示ゲームの保留記憶数を格納する第1
特図保留カウンタ(281EH)、普図変動表示ゲームの保留記憶数を格納する普図保留
カウンタ(281FH)となっている。さらに、特図変動表示ゲームを実行するための各
種乱数(始動記憶)の生成領域(2820H〜2827H)、普図乱数の生成領域(28
28H)及び普図乱数の保存領域(282CH〜282FH)が割り当てられている。
特図変動表示ゲームを実行するための各種乱数には、特図変動表示ゲームの大当りを決
定するための大当り乱数(2バイト)、特図変動表示ゲームの大当り図柄を決定するため
の大当り図柄乱数、特図変動表示ゲームの変動パターンを決定するための第1変動P(パ
ターン)乱数(2バイト)、第2変動P(パターン)乱数、第3変動P(パターン)乱数
(2バイト)が含まれる。
図16を参照すると、第1特図変動表示ゲームを実行するための各種乱数を格納する領
域が割り当てられている。本実施形態では、第1特図変動表示ゲームの始動記憶(特図1
始動記憶)を最大4回分保持可能となっている。そして、これら乱数値は、特図始動口S
W共通処理(図40)において設定される。
具体的には、記憶された特図1始動記憶の保留順に領域が割り当てられる。具体的には
、保留1は2830Hから2837H、保留2は2838Hから283FH、保留3は2
840Hから2847H及び保留4は2848Hから284FHの各領域が割り当てられ
ている。また、各領域には、前述した特図変動表示ゲームを実行するための各種乱数に応
じた領域がさらに割り当てられている。
そして、保留1個目の特図1始動記憶に対応する第1特図変動表示ゲームが実行される
場合には、後述する特図普段処理の特図1変動開始処理(図45)において、保留1個目
の各乱数を取得(一時的に退避)した後に、保留2個目〜4個目の特図1始動記憶に対応
する領域に記憶された各乱数を保留1個目〜3個目の特図1始動記憶に対応する領域にシ
フトする。
そして、遊技制御装置100は、後述する特図大当り判定処理(図42)において、取
得した各乱数(一時的に退避していた保留1個目の各乱数)の値と、予め定義された特図
1変動表示ゲーム用の大当り判定値とを比較して、特図1変動表示ゲームが大当りか否か
を判定し、特図1始動記憶数(第1特図保留カウンタに記憶された値)を1減算する。
図17を参照すると、図16に示した第1特図変動表示ゲームの場合と同様に、第2特
図変動表示ゲームを実行するための各種乱数(特図2始動記憶)を格納する領域が割り当
てられている。特図2始動記憶に含まれる各種乱数は、特図1始動記憶と同様に処理され
る。
図18及び図19は、本発明の第1の実施の形態のスタック領域706の一例を示す図
である。図18及び図19では、スタック領域706に戻りアドレスや所定のレジスタの
値が格納される場合について説明する。
まず、図18(A)は、遊技機1に電源が投入された直後の状態であり、スタック領域
706に何もデータが格納されていない状態を示している。この場合、スタックポインタ
(SP)1233は、スタック領域の最終領域(29FFH)をスタックポインタ初期値
として示している。
図18(B)は、スタック領域706に退避データが格納されたり、割込み発生やサブ
ルーチン呼び出しによって、スタック領域706に戻りアドレスなどのデータが格納され
た状態を示している。この場合、最後にデータ(又はアドレス)が格納された領域の1つ
上のアドレスを、スタックポインタ1233によって示すことになる。
なお、スタック領域706に戻りアドレスが格納される場合としては、割込みが発生し
た場合と、後述する「CALL」命令を実行して通常のサブルーチン呼び出しを行った場
合とがあるが、本実施形態では、前者の場合と後者の場合とで、スタック領域706に格
納されるデータが異なる。
図19(C)は、呼出元のルーチンにて後述する「CALL」命令を実行して通常のサ
ブルーチン呼び出しを行った場合において、スタック領域706にデータが退避する様子
を示している。なお、この図は、図18(B)の状態にて「CALL」命令を実行した直
後の様子を示している。
図18(B)において、「CALL」命令を実行すると、スタック領域706に、呼出
元のルーチンの戻りアドレスが上位バイトと下位バイトに分離して格納される。このとき
、最後にアドレスが格納された領域の1つ上のアドレスが、スタックポインタ1233に
よって示される。
なお、呼出先のサブルーチンの処理の最後にて、後述する「RET」命令が実行される
と、この戻りアドレスがプログラムカウンタ1234に戻されるとともに、スタックポイ
ンタ1233の値も、「CALL」命令実行前の値に戻される(図18(B)の状態に戻
る)。これにより、呼出元のルーチンに処理を戻すことができる。
一方、図19(D)は、呼出元のルーチンにて割込みが発生して、呼出先の割込処理の
ルーチンが実行される場合において、スタック領域706にデータが退避する様子を示し
ている。なお、図19(D)は、図18(B)の状態にて割込みが発生した直後の様子を
示している。
図18(B)において、割込みが発生すると、スタック領域706に、まず、呼出元の
ルーチンで設定されていたフラグレジスタ1200の値が格納され、次に、呼出元のルー
チン戻りアドレスが上位バイトと下位バイトに分離して格納される。このとき、最後にア
ドレスが格納された領域の1つ上のアドレスが、スタックポインタ1233によって示さ
れる。
なお、呼出先の割込処理ルーチンの最後にて、後述する「RETI」若しくは「RET
N」命令が実行されると、スタック領域706に格納していた戻りアドレスがプログラム
カウンタ1234に戻され、スタック領域706に格納していたフラグレジスタの値も、
フラグレジスタ1200に戻される。さらに、スタックポインタ1233の値も、割込み
が発生する前の値に戻される(図18(B)の状態に戻る)。これにより、呼出元のルー
チンに処理を戻すことができる。
このようにして、スタック領域706に格納された戻りアドレス等のデータは、後に格
納された戻りアドレスから先に読み出される。
なお、後述する「PUSH」命令を実行すると、命令で指定されたレジスタの値がスタ
ック領域706に格納され、スタックポインタ1233の値も、図19(C)や図19(
D)と同様に、最後にデータが格納された領域の1つ上のアドレスを示すことになる。
一方、後述する「POP」命令を実行すると、スタック領域706に格納されていた値
を取り出して、命令で指定されたレジスタに格納され、スタックポインタ1233の値も
、図19(C)から図18(B)に変化するように、最後にデータが取り出された領域の
アドレスを示すことになる。
このように、本実施形態では、スタック領域706において最後にデータが格納された
アドレスの1つ上のアドレス(言い換えれば、最後に取り出されたデータのアドレス)を
、スタックポインタ1233によって示している。すなわち、現時点でのスタックポイン
タ1233は、次のスタック領域706に格納されるデータのアドレスを示している。
なお、別の方法として、現時点でのスタックポインタ1233によって、次にスタック
領域706から取り出されるデータのアドレスを示すような方法も考えられる。このよう
な変形例を図20に示す。
図20(E)は、遊技機1に電源が投入された直後の状態であり、スタック領域706
に何もデータが格納されていない状態を示している。この場合、スタックポインタ(SP
)1233は、スタック領域の最終領域(29FFH)の1つ下のアドレス(2A00H
)をスタックポインタ初期値として示している。なお、このスタックポインタ初期値が示
す領域は、スタック領域には含まれない領域(本実施形態では、ユーザワークRAM10
4の記憶領域にも含まれていない領域)である。
図20(F)は、スタック領域706に退避データが格納されたり、割込み発生やサブ
ルーチン呼び出しによって、スタック領域706に戻りアドレスなどのデータが格納され
た状態を示している。この場合、最後にデータ(又はアドレス)が格納された領域を、ス
タックポインタ1233によって示すことになる。スタック領域706からデータを取り
だす場合は、現時点でスタックポインタ1233が示しているアドレスからデータを取り
出せばよい。
なお、スタック領域706の割り当てが、上位アドレスが同じ領域に限定されている(
例えば、2900H〜29FFHの領域に割り当てられることが限定されている)のであ
れば、スタックポインタ1233は下位のアドレスのみを指定するだけで機能を発揮する
。このような構成においては、スタックポインタ1233を1バイトのレジスタで構成す
ることが可能であり、図20の方法よりも、図18及び図19の方法にてスタックポイン
タ1233によるアドレス指定を行う構成が効果的である。
図21及び図22は、本発明の第1の実施の形態のCPUコア102によって実行され
る遊技制御プログラムを記述するためのアセンブリ言語の命令を説明する図である。各命
令は、対応するコードデータに変換されて、ユーザプログラムROM103の所定のアド
レスに記憶されている。図21は、変換後のコードデータにアドレス部を含まない命令(
変換後のコードデータが命令コード部のみで構成される命令)を示し、図22は、変換後
のコードデータに命令コード部とアドレス部の各々を含む命令を示している。なお、ここ
で対象となるレジスタは、図12に示すレジスタである。
図21において、命令2100は、指定するレジスタの値を、Aレジスタ1202Aに
格納する命令である。例えば、「LD A,B」は、Bレジスタ1204Aの値を、Aレ
ジスタ1202Aに格納する命令である。他の「LD A,C」〜「LD A,L」の命
令も同様に、対応するCレジスタ1205A〜Lレジスタ1211Aから値を抽出して、
Aレジスタ1202Aに格納する命令である。
命令2101は、Aレジスタ1202Aの値を、指定するレジスタに格納する命令であ
る。例えば、「LD B,A」は、Aレジスタ1202Aの値を、Bレジスタ1204A
の値に格納する命令である。他の「LD C,A」〜「LD L,A」の命令も同様に、
Aレジスタ1202Aから値を抽出して、対応するCレジスタ1205A〜Lレジスタ1
211Aに格納する命令である。
命令2102は、Aレジスタ1202Aの値と指定するレジスタの値とで論理和演算を
行い、演算結果をAレジスタ1202Aに格納する命令である。例えば、「OR B」は
、Aレジスタ1202Aの値とBレジスタ1204Aの値とで、各ビット毎に論理和演算
を行い、演算結果をAレジスタ1202Aに格納する命令である。他の「OR C」〜「
OR L」の命令も同様に、Aレジスタ1202Aの値と、対応するCレジスタ1205
A〜Lレジスタ1211Aの値とで論理和演算を行い、演算結果をAレジスタ1202A
に格納する命令である。
命令2103の「ADD A,A」は、Aレジスタ1202Aの値に、同じAレジスタ
1202Aの値を加算して、演算結果をAレジスタ1202Aに格納する命令である。実
質的には、Aレジスタ1202Aの値が2倍される演算が行われる命令である。命令21
04の「ADD HL,BC」は、HLレジスタ1212Aの値にBCレジスタ1206
Aの値を加算して、演算結果をHLレジスタ1212Aに格納する命令である。
命令2105の「PUSH HL」は、HLレジスタ1212Aの値を、スタックエリ
アに格納する命令である。命令2106の「POP HL」は、スタックエリアから取り
出した値をHLレジスタ1212Aの値に格納する命令である。
命令2107の「INC HL」は、HLレジスタ1212Aの値を「1」だけ加算す
る命令である。命令2108の「DEC HL」は、HLレジスタ1212Aの値を「1
」だけ減算する命令である。
命令2109の「JP (HL)」は、HLレジスタ1212Aの値をアドレスと見な
して、そのアドレス先に分岐する命令である。例えば、HLレジスタ1212Aの値が「
1234H」であれば、命令解釈実行回路1242は、プログラムカウンタ1234の値
を「1234H」に変更する。これにより、次に、命令解釈実行回路1242が実行する
命令は、アドレスが「1234H」となる領域に格納されているコードを変換した命令と
なる。以降、命令解釈実行回路1242は、変更後のアドレス以降の命令を順次実行する
命令2110は、スタックエリアに格納された値をプログラムカウンタ1234に戻す
ことで、呼び出し先の処理ルーチンから、呼び出し元の処理ルーチンに復帰する命令であ
る。ここで、「RET」は、図22で後述する「CALL nn」命令の実行により呼び
出された処理ルーチンから復帰する命令であり、「RETI」は、INT割込により呼び
出された処理ルーチンから復帰する命令であり、「RETN」は、NMI割込により呼び
出された処理ルーチンから復帰する命令である。
命令2111は、割込を受け付けるか否かを設定する命令である。「DI」は割り込み
の禁止を設定する命令であり、「EI」は割り込みの許可を設定する命令である。
命令2112は、Kレジスタ1230に格納されている値を上位バイトとし、Lレジス
タ1211Aに格納されている値を下位バイトとして合成した2バイトの値をアドレスと
見なして、そのアドレスの領域に記憶されている値を、Aレジスタ1202Aに設定する
命令である。具体的には、「2803H」のアドレスに記憶された値をAレジスタ120
2Aに設定したいときは、予め、Kレジスタ1230に「28H」の値を格納するととも
に、Lレジスタ1211Aに「03H」の値を格納し、その状態で「LDK A,(L)
」という命令を実行する。
なお、Aレジスタ1202Aの値を、所望のアドレスの領域に格納する場合は、予め格
納先の上位アドレスをKレジスタ1230に設定し、下位アドレスをLレジスタ1211
Aに設定した状態で、図に示す「LDK (L),A」という形式の命令を実行する。
命令2113の「INC L」は、Lレジスタ1211Aに格納されている値を「1」
だけ加算する命令である。ただし、Lレジスタ1211Aの値が「FFH」のときに、「
INC L」命令を実行すると、命令実行後のLレジスタ1211Aの値が「00H」に
なる。
命令2114の「DEC L」は、Lレジスタ1211Aに格納されている値を「1」
だけ減算する命令である。ただし、Lレジスタ1211Aの値が「00H」のときに、「
DEC L」命令を実行すると、命令実行後のLレジスタ1211Aの値が「FFH」に
なる。
命令2115は、図13で前述したフラグレジスタ1200の「レジスタバンクセレク
タ」のビットに値を設定するための命令である。「LD RBS,0」は該当ビットに「
0」の値を設定する命令であり、「LD RBS,1」は該当ビットに「1」の値を設定
する命令である。
命令2106の「PUSH FLG」は、フラグレジスタ1200の値を、スタックエ
リアに格納する命令である。命令2107の「POP FLG」は、スタックエリアから
取り出した値をフラグレジスタ1200に格納する命令である。
図21に示す命令のうち、図に示すように、命令2100から命令2114までの命令
は、ユーザプログラムROM103に記憶される際に、1バイトの命令コード部を構成す
るコードデータに変換される。例えば、「LD A,B」の命令は、「78H」という1
バイトのコードデータに変換されて、ユーザプログラムROM103の所定アドレスに記
憶されている。
一方、図21に示す命令のうち、命令2115から命令2117までの命令は、ユーザ
プログラムROM103に記憶される際に、2バイトの命令コード部を構成するコードデ
ータに変換される。例えば、「LD RBS,0」は、「CBH」「00H」という2バ
イトのコードデータに変換され、ユーザプログラムROM103の連続する所定のアドレ
スに記憶されている。
次に、図22において、命令2200は、指定するレジスタに任意の1バイトの値を設
定する命令である。図中の「n」はレジスタに設定する値を示しており、例えば、Aレジ
スタ1202Aに「42H」の値を設定したいときは、「LD A,42H」という命令
になる。
なお、この命令2200は、ユーザプログラムROM103に記憶される際に、1バイ
トの命令コード部と、1バイトのアドレス部とからなる計2バイトのコードデータに変換
される。例えば、「LD A,42H」の命令は、1バイトの命令コード部のデータ「3
EH」と、1バイトのアドレス部のデータ「42H」とに変換され、ユーザプログラムR
OM103の連続する所定のアドレスに「3EH」、「42H」の順で記憶されている。
同様に、「LD B,n」は、Bレジスタ1204Aに任意の1バイトの値(n)を設
定する命令であり、「LD K,n」は、Kレジスタ1230に任意の1バイトの値(n
)を設定する命令である。これらの命令も、1バイトの命令コード部と、1バイトのアド
レス部のデータに変換されて、ユーザプログラムROM103の連続する所定のアドレス
に記憶されている。
命令2201は、任意のアドレスの領域に記憶されている値を、Aレジスタ1202A
に設定する命令である。図中の「nn」は2バイトのアドレス値を示しており、例えば、
「2901H」のアドレスに記憶された値をAレジスタ1202Aに設定したいときは、
「LD A,(2901H)」という命令になる。
なお、Aレジスタ1202Aの値を、任意のアドレスの領域に格納する場合は、図に示
すように「LD (nn),A」という形式の命令になる。例えば、Aレジスタ1202
Aの値を「2901H」のアドレスの領域に格納したいときは、「LD (2901H)
,A」という命令になる。
この命令2201は、ユーザプログラムROM103に記憶される際に、1バイトの命
令コード部と、2バイトのアドレス部とからなる計3バイトのコードデータに変換される
。例えば、「LD A,(2901H)」の命令は、1バイトの命令コード部のデータ「
3AH」と、2バイトのアドレス部のデータ「01H」「29H」とに変換され、ユーザ
プログラムROM103の連続する所定のアドレスに、「3AH」、「01H」、「29
H」の順で記憶されている。
命令2202は、Kレジスタ1230に格納されている値を上位バイトとし、任意の1
バイトの値で示される値を下位バイトとして合成した2バイトの値をアドレスと見なして
、そのアドレスの領域に記憶されている値を、Aレジスタ1202Aに設定する命令であ
る。この場合の任意の1バイトの下位アドレスは、図中の「n」に対応している。
具体的には、「2803H」のアドレスに記憶された値をAレジスタ1202Aに設定
したいときは、予めKレジスタ1230に「28H」の値を格納しておき、その状態で「
LDK A,(03H)」という命令を実行する。
なお、Aレジスタ1202Aの値を、所望のアドレスの領域に格納する場合は、予め格
納先の上位アドレスをKレジスタ1230に設定した状態で、図に示す「LDK (n)
,A」という形式の命令を実行する。例えば、Aレジスタ1202Aの値を「2803H
」のアドレスの領域に格納したいときは、Kレジスタ1230の値を「28H」に設定し
た状態で、「LDK (03H),A」という命令を実行する。
この命令2202は、ユーザプログラムROM103に記憶される際に、1バイトの命
令コード部と、1バイトのアドレス部とからなる計2バイトのコードデータに変換される
。例えば、「LDK A,(03H)」の命令は、1バイトの命令コード部のデータ「3
FH」と、1バイトのアドレス部のデータ「03H」とに変換され、ユーザプログラムR
OM103の連続する所定のアドレスに、「3FH」、「03H」の順で記憶されている
命令2203は、指定するレジスタに任意の2バイトの値を設定する命令である。図中
の「nn」はレジスタに設定する2バイトの値を示しており、例えば、HLレジスタ12
12Aに「5678H」の値を設定したいときは、「LD HL,5678H」という命
令になる。
なお、この命令2203は、ユーザプログラムROM103に記憶される際に、1バイ
トの命令コード部と、2バイトのアドレス部とからなる計2バイトのコードデータに変換
される。例えば、「LD HL,5678H」の命令は、1バイトの命令コード部のデー
タ「21H」と、2バイトのアドレス部のデータ「78H」「56H」とに変換され、ユ
ーザプログラムROM103の連続する所定のアドレスに「21H」、「78H」、「5
6H」の順で記憶されている。
同様に、「LD SP,nn」は、スタックポインタ1233に任意の2バイトの値(
n)を設定する命令である。これらの命令も、1バイトの命令コード部と、2バイトのア
ドレス部のデータに変換されて、ユーザプログラムROM103の連続する所定のアドレ
スに記憶されている。
命令2204は、任意の連続するアドレスの領域に記憶されている2バイトの値を、H
Lレジスタ1212Aに設定する命令である。図中の「nn」は連続する小さいほうのア
ドレス値を示しており、例えば、「2901H」と「2902H」の各アドレスに記憶さ
れた値をHLレジスタ1212Aに設定したいときは、「LD HL,(2901H)」
という命令になる。このとき、「2901H」のアドレスに格納されている値がLレジス
タ1211Aに格納され、「2902H」のアドレスに格納されている値がHレジスタ1
210Aに格納される。
なお、HLレジスタ1212Aの値を、任意の連続するアドレスの領域に格納する場合
は、図に示すように「LD (nn),HL」という形式の命令になる。例えば、HLレ
ジスタ1212Aの値を、「2901H」と「2902H」の各アドレスの領域に格納し
たいときは、「LD (2901H),HL」という命令になる。このとき、Lレジスタ
1211Aの値が「2901H」のアドレスに格納され、Hレジスタ1210Aの値が「
2902H」のアドレスに格納される。
この命令2204は、ユーザプログラムROM103に記憶される際に、1バイトの命
令コード部と、2バイトのアドレス部とからなる計3バイトのコードデータに変換される
。例えば、「LD HL,(2901H)」の命令は、1バイトの命令コード部のデータ
「2AH」と、2バイトのアドレス部のデータ「01H」「29H」とに変換され、ユー
ザプログラムROM103の連続する所定のアドレスに、「2AH」、「01H」、「2
9H」の順で記憶されている。
命令2205は、Kレジスタ1230に格納されている値を上位バイトとし、任意の1
バイトの値で示される値を下位バイトとして合成した2バイトの値をアドレスと見なして
、そのアドレスの領域に記憶されている値と、当該アドレスに続くアドレスに記憶されて
いる値の各々を、HLレジスタ1212Aに設定する命令である。この場合の任意の1バ
イトの下位アドレスは、図中の「n」に対応している。
具体的には、「2803H」及び「2804H」のアドレスに記憶された値をHLレジ
スタ1212Aに設定したいときは、予めKレジスタ1230に「28H」の値を格納し
ておき、その状態で「LDK HL,(03H)」という命令を実行する。これにより、
「2803H」のアドレスに格納されている値がLレジスタ1211Aに格納され、「2
804H」のアドレスに格納されている値がHレジスタ1210Aに格納される。
なお、HLレジスタ1212Aの値を、所望のアドレスの領域に格納する場合は、予め
格納先の上位アドレスをKレジスタ1230に設定した状態で、図に示す「LDK (n
),HL」という形式の命令を実行する。例えば、HLレジスタ1212Aの値を「28
03H」及び「2804H」のアドレスの領域に格納したいときは、Kレジスタ1230
の値を「28H」に設定した状態で、「LDK (03H),HL」という命令を実行す
る。
この命令2205は、ユーザプログラムROM103に記憶される際に、1バイトの命
令コード部と、1バイトのアドレス部とからなる計2バイトのコードデータに変換される
。例えば、「LDK HL,(03H)」の命令は、1バイトの命令コード部のデータ「
2FH」と、1バイトのアドレス部のデータ「03H」とに変換され、ユーザプログラム
ROM103の連続する所定のアドレスに、「3FH」、「03H」の順で記憶されてい
る。
命令2206は、指定するアドレスに処理を分岐させる命令である。図中の「nn」は
分岐先のアドレスを示しており、例えば、「5678H」のアドレスに処理に分岐させる
ときは、「JP 5678H」という命令になる。この命令を実行すると、命令解釈実行
回路1242は、指定するアドレスの値をプログラムカウンタ1234に設定する。
なお、この「JP nn」の形式で示される命令は、フラグレジスタ1200の内容に
かかわらず、指定するアドレスに処理を分岐する。フラグレジスタ1200のゼロフラグ
1306(図13)がセットされているときのみ分岐を行いたい場合は「JP Z,nn
」の命令を用い、このゼロフラグ1306がクリアされているときのみ分岐を行いたい場
合は「JP NZ,nn」の命令を用いる。
なお、この命令2206は、ユーザプログラムROM103に記憶される際に、1バイ
トの命令コード部と、2バイトのアドレス部とからなる計2バイトのコードデータに変換
される。例えば、「JP 5678H」の命令は、1バイトの命令コード部のデータ「C
3H」と、2バイトのアドレス部のデータ「78H」「56H」とに変換され、ユーザプ
ログラムROM103の連続する所定のアドレスに「C3H」、「78H」、「56H」
の順で記憶されている。
命令2207の「CALL nn」は、指定するアドレスの処理を呼び出して、呼び出
し先の処理ルーチンに一時的に分岐させる命令である。図中の「nn」は呼び出し先のア
ドレスを示しており、例えば、「5678H」のアドレスの処理を呼び出すときは、「C
ALL 5678H」という命令になる。この命令を実行すると、命令解釈実行回路12
42は、現在実行中の命令の次のステップに位置するアドレスの値を、戻り先のアドレス
としてスタックエリアに格納した上で、分岐先のアドレスの値をプログラムカウンタ12
34に設定する。
なお、呼び出し先の処理ルーチンの最終ステップでは、前述の「RET」命令を実行す
ることで、プログラムカウンタ1234には、スタックエリアに格納された戻り先のアド
レスの値を復帰させることができる。これにより、呼び出し元の処理ルーチンのアドレス
に処理を戻すことができる。
なお、この命令2207は、ユーザプログラムROM103に記憶される際に、1バイ
トの命令コード部と、2バイトのアドレス部とからなる計2バイトのコードデータに変換
される。例えば、「CALL 5678H」の命令は、1バイトの命令コード部のデータ
「CDH」と、2バイトのアドレス部のデータ「78H」「56H」とに変換され、ユー
ザプログラムROM103の連続する所定のアドレスに「C3H」、「78H」、「56
H」の順で記憶されている。
図23は、本発明の第1の実施の形態の各装置(遊技制御装置100、払出制御装置2
10、及び演出制御装置150)の電源投入時処理のフローチャートである。
具体的には、図23(A)は、遊技制御装置100の電源投入時処理のフローチャート
であり、図23(B)は、払出制御装置210の電源投入時処理のフローチャートであり
、図23(C)は、演出制御装置150の電源投入時処理のフローチャートである。
最初に、遊技制御装置100の電源投入時処理(図23(A))から説明する。この電
源投入時処理は、ユーザプログラムROM602(図5参照)に記憶された遊技制御プロ
グラムによって実行される処理ではなく、遊技制御装置100に備わる各種ハードウェア
(CPUコア102周辺のハードウェア)によって実行される処理である。
まず、遊技制御装置100は、電源装置160から出力されたリセット信号が伝達され
る(2301)。
このリセット信号は、電源装置160から、セキュリティ回路630(図11参照)、
RAMアクセス規制回路640のフリップフロップ回路641のリセット端子(図11参
照)、及びシリアル送信回路615のリセット端子に入力される。具体的には、これらの
リセット端子には、電源が投入されると、所定時間、所定の電圧(例えば、5V)以下の
電圧が印加されることによってリセット信号が入力され、所定時間経過後に所定の電圧が
印加されることによって、リセット信号が入力されなくなる。
なお、セキュリティ回路630は、電源装置160からリセット信号が入力されると、
後述のセキュリティチェック処理が終了するまでCPUコア102のリセット端子にリセ
ット信号を出力し続けて、CPUコア102の起動を待機させる。
そして、シリアル送信回路615のリセット端子にリセット信号が入力されると、シリ
アル送信回路615の入力端子及び出力端子の電圧レベルがローに制御され、各種装置(
普電SOL90、大入賞口SOL38等)に接続される出力I/F106のポートをすべ
て0に設定することにより、シリアル送信回路615、及び出力I/F106がハードウ
ェアにより初期化される(2302)。
次に、RAMアクセス規制回路640によって、ユーザワークRAM104への書き込
み規制されるRAM書込禁止状態が発生する(2303)。
具体的には、図11で説明したように、フリップフロップ回路641のクリア端子には
リセット信号が入力されるため、フリップフロップ回路641の出力端子Q(負論理)か
らハイレベルの信号が出力される状態となる。これにより、ORゲート回路642の他方
の入力端子にハイレベルの信号が入力されても、ローレベルの信号が入力されても、ユー
ザワークRAM104の書込指令入力端子にはハイレベルの信号が入力されることになる
ため、RAM書込禁止状態が発生する。このように、電源投入時にRAM書込禁止状態を
発生させることによって、誤ったタイミングでユーザワークRAM104が更新されるこ
とを防ぐことが可能となる。
次に、リセット信号が入力された図11に示すセキュリティ回路630が自己診断処理
を実行する(2304)。自己診断処理は、セキュリティ回路630が初期化されている
か否かを判定する処理である。
そして、自己診断処理によって、セキュリティ回路630が初期化されていると判定さ
れた場合には、セキュリティ回路630は、セキュリティチェック処理を実行する(23
05)。セキュリティチェック処理は、図11で説明したように、HWパラメータROM
603(図5参照)に記憶された正当性確認情報を用いて、ユーザプログラムROM60
2(図5参照)に記憶されたプログラムの正当性の判定を行う処理である。
ステップ2305の処理で、セキュリティチェック処理を実行すると、遊技制御装置プ
ログラム開始準備処理へ移行する。このとき、セキュリティ回路630は、CPUコア1
02のリセット端子に出力していたリセット信号を停止することで、CPUコア102が
起動する。このため、遊技制御装置プログラム開始準備処理は、CPUコア102によっ
て実行される。遊技制御装置プログラム開始準備処理は図24にて後述する。
次に、払出制御装置210の電源投入時処理(図23(B))を説明する。前述したよ
うに、払出制御装置210は、シリアル送信回路615を備えていない点を除き、図11
に示した遊技制御装置100と同じ構成である。図11に示す遊技制御装置100の構成
部と同じ構成部については、同じ符号を付与して説明する。
まず、払出制御装置210は、電源装置160から出力されたリセット信号が伝達され
る(2311)。なお、ステップ2311の処理は、ステップ2301の処理と同じであ
る。
そして、払出制御装置210にリセット信号が入力されると、払出制御装置210の出
力ポート(図4の入出力I/F216に含まれる)の電圧レベルが0に設定され、各種装
置(払出モータ220、及び発射制御装置221等)に接続される入出力I/F216の
ポートがすべて0に設定され、入出力I/F216がハードウェアにより初期化される(
2312)。
次に、払出制御装置210のRAMアクセス規制回路640によって、RAM214へ
の書き込み規制されるRAM書込禁止状態が発生する(2313)。なお、ステップ23
13の処理の具体的な説明は、ステップ2303の処理と同じである。
次に、リセット信号が入力された払出制御装置210のセキュリティ回路630が自己
診断処理を実行する(2314)。なお、ステップ2314の処理の具体的な説明は、ス
テップ2304の処理と同じである。
そして、自己診断処理によって、セキュリティ回路630が初期化されていると判定さ
れた場合には、セキュリティ回路630は、セキュリティチェック処理を実行する(23
15)。なお、ステップ2315の処理の具体的な説明は、ステップ2305の処理と同
じである。
そして、払出制御装置210は、電源投入時の初期化処理を実行する(2316)。電
源投入時の初期化処理は、RAM214等を初期化する処理であって、CPU212によ
って実行される。また、RAM214を初期化する前に、ステップ2313の処理で発生
したRAM書込禁止状態が解除されて、RAM214はRAM書込可能状態となる。
次に、払出制御装置210は、遊技制御装置100からの指令を受信可能な状態を発生
させる(2317)。そして、払出制御装置210のCPU212は、遊技制御装置10
0から送信された指令が初期化指令であるか否かを判定する(2319)。ステップ23
19の処理で、遊技制御装置100から送信された指令が初期化指令でないと判定された
場合には(2319の結果が「N」)、初期化指令が取り込まれるまで待機する。
一方、遊技制御装置100から送信された指令が初期化指令であると判定された場合に
は(2319の結果が「N」)、払出制御装置210は通信開始時の初期化処理を実行し
(2320)、払出制御装置メイン処理へ移行する。
次に、演出制御装置150の電源投入時処理(図23(C))を説明する。前述したよ
うに、演出制御装置150は、シリアル送信回路615を備えていない点、及び、遊技用
演算処理装置600がRAMアクセス規制回路640を備えていない点以外は、図11に
示した遊技制御装置100と同じ構成である。図11に示す遊技制御装置100の構成部
と同じ構成部については、同じ符号を付与して説明する。
まず、演出制御装置150は、電源装置160から出力されたリセット信号が伝達され
る(2321)。なお、ステップ2321の処理は、ステップ2301の処理と同じであ
る。
そして、演出制御装置150にリセット信号が入力されると、演出制御装置150の出
力ポートがハードウェアにより初期化される(2322)。
そして、演出制御装置150は、電源投入時の初期化処理を実行する(2323)。電
源投入時の初期化処理は、RAM154等を初期化する処理であって、CPU152によ
って実行される。
次に、演出制御装置150は、遊技制御装置100からの指令を受信可能な状態を発生
させる(2324)。そして、遊技制御装置100から送信された指令が初期化指令であ
るか否かを判定する(2326)。
演出制御装置150は、遊技制御装置100から送信された指令が初期化指令でないと
判定された場合には(2326の結果が「N」)、初期化指令が取り込まれるまで待機す
る。
一方、演出制御装置150は、遊技制御装置100から送信された指令が初期化指令で
あると判定された場合(2326の結果が「Y」」、演出制御装置150は通信開始時の
初期化処理を実行し(2327)、演出制御装置メイン処理へ移行する。
図24は、本発明の第1の実施の形態の遊技制御装置プログラム開始準備処理を説明す
るフローチャートである。なお、遊技制御装置プログラム開始準備処理の前半(プログラ
ムカウンタ1234にリセットアドレスを設定するまでの間)は、ユーザプログラムRO
M602(図5参照)に記憶された遊技制御プログラムによって実行される処理ではなく
、CPUコア102に備わる初期値設定回路124(図12参照)によって実行される処
理である。
CPUコア102は、セキュリティ回路630からのリセット信号を受け入れると、内
蔵リセット回路1240により、初期値設定回路1241を動作させる。このとき、内蔵
リセット回路1240は、初期値設定回路1241が各レジスタに初期値を設定するまで
、命令解釈実行回路1242の動作を待機させる。
初期値設定回路1241が動作を開始すると、スタックポインタ1233に初期値「2
9FFH」を設定し、Kレジスタ1230に「28H」を設定し、HLレジスタ1212
Aにリセットアドレスである「4000H」を設定し、他のレジスタには「00H」の値
(16ビットレジスタには「0000H」の値)を設定する(2401)。なお、リセッ
トアドレスは「0000H」としてもよい。
次いで、初期値設定回路1241は、プログラムカウンタ1234に、リセットアドレ
スである「4000H」の値を設定する(2402)。これにより、各レジスタに初期値
が設定される。次いで、内蔵リセット回路1240は、待機させていた命令解釈実行回路
1242を動作させると、命令解釈実行回路1242は、プログラムカウンタ1234が
示すアドレス(遊技制御プログラムが記憶されたユーザプログラムROM602のリセッ
トアドレスに相当)からプログラムの実行を開始する。命令解釈実行回路1242がプロ
グラムを実行開始した後の処理は、図25の遊技制御装置メイン処理にて説明する。
次に、遊技制御装置100のCPU102によって実行される遊技制御装置メイン処理
を、図25及び図26を用いて説明する。
図25は、本発明の第1の実施の形態の遊技制御装置メイン処理の前半部のフローチャ
ートであり、図26は、本発明の第1の実施の形態の遊技制御装置メイン処理の後半部の
フローチャートである。なお、これらの処理は遊技制御装置100によって実行されるが
、厳密には、命令解釈実行回路1242が、CPUコア102内部の各レジスタを参照し
ながら、遊技制御プログラムを実行することで実現される。
まず、遊技制御装置100は、CPU102への割込みを禁止する(2501)。そし
て、遊技制御装置100は、スタックポインタ1233(図12)に初期値「29FFH
」を設定する(2502A)。これにより、スタックポインタ1233の値が「29FF
H」でなければ「29FFH」に変更される。なお、スタックポインタ1233に初期値
「29FFH」が既に設定されていても、再度「29FFH」の値が設定される。
次いで、遊技制御装置100は、Kレジスタ1230に「28H」の値を設定する(2
502B)。これにより、Kレジスタ1230の値が「28H」でなければ「28H」に
変更される。なお、Kレジスタ1230に初期値「28H」が既に設定されていても、再
度「28H」の値が設定される。
次いで、遊技制御装置100は、割込モードを設定する(2503)。割込モードは、
CPU102が内蔵デバイスからの割込要求の処理を可能とし、また、プログラムにおい
て割込要求の処理を実行する位置を設定することを可能とするものである。
次に、遊技制御装置100は、入力I/F105からRAMクリアSW信号の状態を取
り込み、取り込んだRAMクリアSW信号の状態をCPU102のレジスタに記憶する(
2504)。
そして、遊技制御装置100は、RAM104を使用しないディレイ処理を実行する(
2505)。このディレイ処理は、所定時間、処理を待機させる処理であり、具体的には
、チェックサムが算出されない記憶領域にて、所定の数が0になるまでデクリメントし続
ける処理である。ディレイ処理は、この所定の数を待機させる時間に対応する時間に設定
することによって、所定時間を計時するタイマ計時手段となる。なお、ディレイ処理の詳
細については、図28にて後述する。
次に、遊技制御装置100は、再度、入力I/F105からRAMクリアSW信号の状
態を取り込み、取り込んだRAMクリアSW信号の状態をCPU102のレジスタに記憶
する(2506)。なお、CPU102が二つのRAMクリア信号の状態を比較できるよ
うに、ステップ2504の処理でRAMクリアSW信号の状態を記憶するレジスタの領域
、及び、ステップ2506の処理でRAMクリアSW信号の状態を記憶するレジスタの領
域は、異なる領域である。
次に、遊技制御装置100は、図23のステップ2303の処理で発生したRAM書込
禁止状態をRAM書込可能状態にする(2507)。
具体的には、CPU102の指令によって、フリップフロップ回路641のクロック端
子にクロック信号を出力制御回路612から入力させ、かつ、フリップフロップ回路64
1のデータ端子に接続された信号線の信号レベルをハイレベルにする。これにより、フリ
ップフロップ回路641の出力端子Q(正論理)からハイレベルの信号が出力され、出力
端子Q(負論理)からローレベルの信号が出力されるため、ORゲート回路642の入力
端子にローレベルの信号が入力されることにより、RAM書込可能状態になる。
次に、遊技制御装置100は、スタック領域706を使用して、各種設定処理を実行す
る(2508)。この設定処理は、例えば、サブルーチンや関数を呼び出して、遊技制御
に必要な各種記憶領域に初期データを設定する処理である。この設定処理において、CP
U102により、図7〜図9で前述した、送信シリアルチャンネル設定レジスタ633、
送信制御レジスタ632、送信データステータスレジスタ631の各ビットの初期値が設
定されることで、送信ボーレート等の設定が行われる。
これらのサブルーチンや関数は、遊技制御プログラムに記述した複数の箇所から呼び出
される形態となっており、遊技制御プログラムの容量削減に貢献している。一方で、サブ
ルーチンや関数を呼び出す際には、前述したように、戻りアドレスをスタック領域706
に待避する処理を必要とする。
そして、遊技制御装置100は、ステップ2504の処理でレジスタに記憶されたRA
MクリアSW信号の状態とステップ2508の処理でレジスタに記憶されたRAMクリア
SW信号の状態とを比較して、どちらのRAMクリアSW信号の状態も、RAMクリアS
W162が操作されたことを示しているか否かを判定する(2509)。
ステップ2509の処理では、異なるタイミングで取得したRAMクリア信号の状態に
基づいてRAMクリアSW162が操作されたか否かを判定しているので、ノイズ等によ
る誤判定を防止できる。
ステップ2509の処理で、RAMクリアSW162が操作されたと判定された場合、
遊技制御装置100は、ユーザワークRAM104のすべての記憶領域を初期化する(2
510)。
そして、遊技制御装置100は、初期化指令信号を払出制御装置210及び演出制御装
置150へ送信し(2511)、図26に示すステップ2517の処理に進む。
一方、ステップ2509の処理で、RAMクリアSW162が操作されていないと判定
された場合、遊技制御装置100は、ユーザワークRAM104の第1停電復旧領域70
1及び第2停電復旧領域703に、電源遮断確認フラグが格納されているか(正確には、
電源遮断確認フラグがオンとなっているか)を確認する(2512)。
そして、遊技制御装置100は、直前の電源供給停止のときに、電源遮断の処理が正し
く実行されていたか否かを判定する(2513)。具体的には、遊技制御装置100は、
第1停電復旧領域701及び第2停電復旧領域703の両方に電源遮断確認フラグが格納
されている場合には、電源遮断の処理が正しく実行されているものであると判定し、一方
、第1停電復旧領域701及び第2停電復旧領域703の少なくとも一方に電源遮断確認
フラグが格納されていない場合(少なくとも一方の電源遮断確認フラグがオフの場合)に
は、電源遮断の処理が正しく実行されていないと判定する。
ステップ2513の処理で電源遮断の処理が正しく実行されていたと判定された場合に
は、遊技制御装置100は、ユーザワークRAM104の第1停電復旧領域701、ワー
クエリア702、及び第2停電復旧領域703を用いてチェックサムを算出して、算出し
たチェックサムがチェックサム領域704に格納されているチェックサムと一致するか否
かを照合する(2514)。
なお、チェックサム領域704に格納されているチェックサムは、停電検出時のユーザ
ワークRAM104の第1停電復旧領域701、ワークエリア702、及び第2停電復旧
領域703を用いてチェックサムを算出して、格納されたものである。
つまり、ステップ2514の処理は、停電検出時のユーザワークRAM104に格納さ
れた情報と電源投入時のユーザワークRAM104に格納された情報とが一致するか否か
を照合する処理である。
そして、ステップ2514の処理の照合結果が、算出したチェックサムとチェックサム
領域704に格納されたチェックサムとが一致するものであるか否かを判定する(251
5)。
ステップ2514の処理で算出したチェックサムとチェックサム領域704に格納され
たチェックサムとが一致しないとステップ2515の処理で判定された場合、つまり、停
電検出時のユーザワークRAM104に格納された情報と電源投入時のユーザワークRA
M104に格納された情報とが一致しない場合には、遊技制御装置100は、ステップ2
510の処理に進み、ユーザワークRAM104のすべての領域を初期化し、ステップ2
511の処理にて初期化指令を払出制御装置210及び演出制御装置150に送信する。
一方、ステップ2514の処理で算出したチェックサムとチェックサム領域704に格
納されたチェックサムとが一致するとステップ2515の処理で判定された場合、つまり
、停電検出時のユーザワークRAM104に格納された情報と電源投入時のユーザワーク
RAM104に格納された情報とが一致する場合には、遊技制御装置100は、遊技制御
装置100の起動に必要な領域(ユーザワークRAM104の一部の領域)を初期化する
(2516)。このとき、ユーザワークRAM104の第1停電復旧領域701及び第2
停電復旧領域703の各々にて、電源遮断確認フラグが消去(正確には、各領域にて電源
遮断確認フラグがオフ)される。そして、遊技制御装置100は、初期化指令を払出制御
装置210及び演出制御装置150に送信する(2511)。
これらの処理が完了すると、遊技制御装置100に関する初期化処理が完了となる。次
いで、図26に示すステップ2517の処理に進む。
次に、ステップ2511の処理で初期化指令が払出制御装置210及び演出制御装置1
50に送信された後、遊技制御装置100は、各種時間を計測やタイマ割込みを行うため
のCTC(Counter Timer Circuit)を起動し(2517)、遊技制御に関する乱数を生
成する乱数生成回路608(図5)を初期化する(2518)。そして、遊技制御装置1
00は、ステップ2501の処理で禁止されたCPU102への割込みを許可する(25
19)。
次に、遊技制御装置100は、初期値乱数を更新する初期値乱数更新処理を実行する(
2520)。初期値乱数とは、遊技制御に関する乱数のカウンタ(例えば、始動入賞口へ
入賞したタイミングで取得される乱数のカウンタ)が上限値に達した場合に初期値に戻る
が、その初期値を決定するための乱数である。
そして、遊技制御装置100は、停電検出信号が入力されたか否かを確認し(2521
)、ステップ2521の処理での確認結果が、停電検出信号が入力されたことを示すか否
かを判定する(2522)。
遊技制御装置100は、停電検出信号が入力されていないと判定した場合には(ステッ
プ2522の結果が「N」)、停電は発生していないので、ステップ2520の処理に戻
る。
一方、ステップ2522の処理で、停電検出信号が入力されたと判定された場合には(
ステップ2522の結果が「Y」)、遊技制御装置100により停電処理が実行される。
まず、遊技制御装置100は、CPU102への割込みを禁止し(2523)、出力I/
F106に備わる出力ポートの電圧レベルをローレベルに設定する(2524)。
次に、遊技制御装置100は、ユーザワークRAM104の第1停電復旧領域701及
び第2停電復旧領域703に、電源遮断確認フラグを格納(正確には、各領域にて電源遮
断確認フラグをオン)し(2525)、ユーザワークRAM104の第1停電復旧領域7
01、ワークエリア702、及び第2停電復旧領域703を用いてチェックサムを算出し
て、算出したチェックサムをチェックサム領域704に格納する(2526)。
次に、遊技制御装置100は、RAMアクセス規制回路640によってユーザワークR
AM104をRAM書込禁止状態にする(2527)。
具体的には、CPU102の指令によって、フリップフロップ回路641のクロック端
子にクロック信号を出力制御回路612から入力させ、かつ、フリップフロップ回路64
1のデータ端子に接続された信号線の信号レベルをローレベルにする。これにより、フリ
ップフロップ回路641の出力端子Q(正論理)からローレベルの信号が出力され、出力
端子Q(負論理)からハイレベルの信号が出力されるため、ORゲート回路642の入力
端子にハイレベルの信号が入力されることにより、RAM書込禁止状態になる。
そして、遊技制御装置100は、遊技機1の電源が切れるまで待機する(2528)。
なお、遊技制御装置100には、バックアップ電源が接続されているので、停電が発生し
ても、すぐに電源が切れることはない。
なお、本実施形態では、ステップ2514の処理で電源断時のユーザワークRAM10
4と電源投入時のユーザワークRAM104との正当性を判定する前のステップ2507
の処理でRAM書込可能状態にしたが、RAM書込可能状態にするタイミングは、遅くと
もステップ2514の処理の正当性に応じて行われるステップ2510又は2516の処
理におけるユーザワークRAM104の初期化処理の実行直前であればよい。
このように、遊技機1にて電源供給が遮断した場合には、必要な電源遮断処理を実行し
た後は、ユーザワークRAM104をRAM書込禁止状態に設定し、遊技機1にて再度電
源供給が復帰したときでも、すぐにユーザワークRAM104をRAM書込可能状態とし
ないで、ハードウェアに関する初期化処理を一定時間実行し、ステップ2514の処理の
正当性に応じて行われるステップ2510又は2516の処理におけるユーザワークRA
M104の初期化処理の実行直前になって、ようやくRAM書込可能状態にすることによ
って、ユーザワークRAM104の初期化まで不用意なユーザワークRAM104の書き
込みを防止できる。
そのため、ステップ2514の処理における正当性判定が行われる直前には、RAM書
込禁止状態になっているので、電源投入後にユーザワークRAM104に誤った書き込み
がなされ、ステップ2514の処理で誤った判定がされることを防止できる。
なお、本実施形態では、ステップ2508の処理でスタック領域706を用いた各種設
定処理を実行するために、ステップ2514の処理における正当性判定処理の前のステッ
プ2507の処理でRAM書込可能状態にしている。
これによって、正当性判定を行う前に正当性判定の対象とはならないスタック領域70
6を用いた各種設定処理を行うことができるようになるため、遊技制御装置100の各種
設定を早い段階で行うことができるので遊技制御装置100の起動を高速化でき、また、
スタック領域706を用いるので処理プログラムが共通化でき、プログラム容量を削減で
きる。
なお、図15では、ステップ2510又は2516の処理でユーザワークRAM104
を初期化した後、ステップ2515の処理で初期化指令信号を送信しているが、ステップ
2514における正当性判定の実行前のステップ2508の処理の実行後に初期化指令信
号を送信してもよい。
この場合には、ステップ2514の処理における正当性判定の実行前であるので、正当
性判定に寄与しないスタック領域706又はCPU102に備わるレジスタを用いて、初
期化指令信号を送信する。
なお、CPU102に備わるレジスタを用いなくても、例えば、ユーザワークRAM1
04とは別個に、遊技制御装置100に所定のタイマ回路などを設けて、このタイマ回路
に備えられた記憶領域を更新させるような方法でも実現可能である。言い換えれば、正当
性判定に影響のない記憶領域であれば、どのようなものを用いても適用が可能であり、好
ましくは、ユーザワークRAM104と記憶領域とを分離できれば、CPU102のプロ
グラムも簡素化されるということである。
ステップ2510又は2516の処理では、RAM104の一部領域を初期化する処理
であるステップ2516の処理が、RAM104の全領域を初期化する処理であるステッ
プ2510の処理よりも実行時間が長いため、ステップ2510の処理を実行するかステ
ップ2516の処理を実行するかによって、初期化指令信号が送信される時間が異なって
しまう。
ステップ2514の処理における正当性判定の実行前に初期化指令信号を送信すること
によって、ステップ2511の処理で初期化指令信号を送信するよりも早く初期化指令信
号を送信できる。また、電源投入から一定時間で初期化指令信号を送信することができる
図27は、本発明の第1の実施の形態の遊技制御装置メイン処理(図25)におけるス
テップ2501からステップ2502Bまでの処理を説明する図である。ここでは、図1
2で前述した各種レジスタ、図21及び図22で前述したアセンブリ言語を用いて説明を
行うことにする。
なお、図27における列2710は、遊技制御プログラムが格納されているユーザプロ
グラムROM103のアドレスを示し、列2720は、当該アドレスに格納されているデ
ータを示している。例えば、ユーザプログラムROM103の「4000H」のアドレス
には「F3H」のデータが格納され、続く「4001H」のアドレスには「31H」のデ
ータが格納され、続く「4002H」のアドレスには「00H」のデータが格納され、続
く「4003H」のアドレスには「2AH」のデータが格納されている。
行2701の「DI」命令は、遊技制御装置メイン処理(図25)のステップ2501
の割込禁止処理に対応し、この命令に対応するコード「F3H」の値がアドレス「400
0H」の領域に格納される。
行2702の命令は、同じくステップ2502Aの処理に対応し、スタックポインタ(
SP)に対応するSPレジスタ1233に初期アドレスとして「29FFH」を設定する
行2703の命令は、同じくステップ2502Bの処理に対応し、Kレジスタ1230
に、上位アドレスのデフォルトの初期値「28H」を設定する。このように、Kレジスタ
1230に予め「28H」を設定しておくことによって、「28H」を上位バイトとし、
さらに任意の1バイトの値で示される値を下位バイトとして合成した2バイトの値をアド
レスと見なして、そのアドレスの領域に記憶されている値を所定のレジスタに設定するこ
とができる。例えば、「2803H」のアドレスに記憶された値をAレジスタ1202A
に設定したい場合には、「LDK A,(03H)」という命令を実行すればよい。こう
することによって、2バイトのアドレスの全てを直接指定する場合よりもコード量を1バ
イト分削減することができる。特に、特定の領域を指定する頻度が大きいほど削減される
コード量を大きくすることができる。本実施形態では、例えば、変動表示ゲームが実行さ
れるたびにシフトされ、アクセス頻度の多い始動記憶を格納するアドレスを指定する場合
に使用される。また、Kレジスタを有効に活用するために、これらの始動記憶の上位アド
レスは「28H」となるように配置されている。
なお、ユーザプログラムROM103の「4000H」のアドレスは、前述ように、リ
セットアドレスである。よって、リセット信号の発生時には、まず、この「4000H」
に配置されたコードの命令が実行され、その後は、以降のアドレスに配置された命令が順
次実行される。
ちなみに、リセット信号が発生すると、初期値設定回路1241によってSPレジスタ
1233に「29FFH」がハード的に設定されるので、行2702の命令は、省略(言
い換えれば、図25のステップ2502Aを省略)することも可能である。同様に、リセ
ット信号が発生すると、初期値設定回路1241によってKレジスタ1230に「28H
」がハード的に設定されるので、行2703の命令は、省略(言い換えれば、図25のス
テップ2502Bを省略)することも可能である。ただし、初期値設定回路1241が機
能せずに、プログラムカウンタ1234の値のみがリセットアドレスの値に変更される事
態を想定するのであれば、行2702及び行2703の命令を配置しておくことにも意味
がある。
図28は、本発明の第1の実施の形態のディレイ処理を説明する図である。
図28に示すディレイ処理は、図25のステップ2505で実行されるが、当該ディレ
イ処理を実行している時点では、ユーザワークRAM104の値が更新できないようにR
AM書込禁止状態となっている。これは、直前の停電発生時に格納されたチェックサムと
、電源投入直後となる現時点でのチェックサムとの照合を行うためである。
このため、図25に示すステップ2505におけるディレイ処理では、正当性の判定が
行われる記憶領域が含まれたユーザワークRAM104を用いずに、他の記憶領域(正当
性判定の対象とならない判定対象外記憶領域)を用いてディレイ処理を実行しなければな
らない。そこで、本実施形態のディレイ処理は、CPUコア102に備わるレジスタ(汎
用レジスタ)を用いて実行される。
以下に、判定対象外記憶領域を含むユーザワークRAM104の記憶領域をまったく利
用せずに、レジスタを用いたディレイ処理を説明する。なお、CPUコア102として、
Z80系のCPUを用いるものとするので、Z80系のCPUで使用されるレジスタ及び
アセンブリ言語を用いて説明を行う。
なお、図28における列2810は、図27の列2710同様に遊技制御プログラムが
格納されているユーザプログラムROM103のアドレスを示し、列2820は、図27
の列2720同様に、当該アドレスに格納されているデータを示している。
まず、行2801は、当該ディレイ処理の最初の処理に相当し、CPUコア102のレ
ジスタ(図11参照)のHレジスタ及びLレジスタを1つのペアとして構成したHLレジ
スタに、「0603H」をロードする。具体的には、Hレジスタに「06H」がロードさ
れ、Lレジスタには「03H」がロードされる。
次に、行2802を実行し、HLレジスタの値をデクリメント(1減算)する。したが
って、行2802が最初に実行された後、HLレジスタの値は「0602H」となる。
続いて、行2803を実行し、Hレジスタに格納された値をAレジスタにロードする。
そして、行2804を実行し、AレジスタとLレジスタとの論理和を算出する。行280
5では、行2804で算出された論理和がゼロでなければ(NZ)、行2802(アドレ
スが4023Hとなる行)に戻る。したがって、Hレジスタ及びLレジスタの両方が「0
0H」となるまで、行2802から2805までの処理を繰り返すことになる。
つまり、図28では、維持タイマとして使用されるHレジスタ及びLレジスタに格納さ
れた「0603H」(=1539)が「0000H」になるまでデクリメントされるもの
で、合計1539回デクリメントが行われる。この間、図25に示す遊技制御装置メイン
処理は、ステップ2505の処理で待機するため、遊技制御装置100の起動が遅延する
こととなる。
ここで遅延時間を具体的に算出する。遅延時間は、行2802から2805までの処理
を、繰り返し回数(「0603H」=1539)分だけ実行した時間となる。そこで、行
2803から2805までの各行の実行時間を算出する。各行には実行される命令が定義
されており、各命令には、実行に必要なCPUのクロックサイクル数(ステート数)が対
応している。したがって、1ステート当りの時間を各命令に対応するステート数に乗じる
ことによって各命令の実行時間を算出することができる。
本発明の第1の実施の形態では、クロック数20Mhzを2倍に分周した10Mhzが
CPUの動作クロックとなるため、1/10000000=100n秒が1ステート当り
の処理時間となる。以下、具体的に各行の処理時間を算出する。
行2802で実行されるデクリメント「DEC」命令のステート(数)は6となってい
る。したがって、行2802の処理時間は6×100n秒=600n秒となる。同様に、
行2803で実行されるロード「LD」命令のステート(数)は4、及び、行2804で
実行されるロード「OR」命令のステート(数)は4となっており、それぞれの処理時間
は4×100n秒=400n秒となっている。さらに、行2805で実行されるジャンプ
「JP」命令のステート(数)は行2804の演算結果が非0の場合には12、0の場合
には7となっている。0の場合は遅延時間終了時だけであるため、ステート数を12とす
ると、処理時間は12×100n秒=1200n秒となる。
以上より、1回の繰り返しにおける処理時間は、600n秒+400n秒+400n秒
+1200n秒=2600n秒となる。そして、繰り返し回数は、1539回であるため
、2600n秒×1539=4.0014m秒となり、約4秒の遅延時間となる。したが
って、この場合のディレイ処理は、4秒間を計時するタイマ計時手段となっている。
また、このディレイ処理中は、ユーザワークRAM104へのアクセスが全く行われな
い。すなわち、正当性の判定が行われる記憶領域が含まれたユーザワークRAM104の
値を書き換えることなく、ディレイ処理を実行することができる。
図28で説明したように、本実施形態では、ハードウェアを用いずに、正当性判定に寄
与しない、つまり、チェックサムを算出しない領域を用いてソフトウェアにより実現(維
持タイマを計時)しているので、図25に示すステップ2514の正当性判定を正確に行
うことができるとともに、ハードウェアでディレイ処理を実現するよりも安価に実現する
ことができる。
例えば、ハードウェアでディレイ処理を実現する遊技機として、特開2002−224
394号公報に開示されるような技術が知られており、この遊技機では、電源が断たれた
後の復帰時に、払出しの不都合な状態が解消するまで賞媒体の払出し動作を停止できるよ
うにすること、さらに、賞媒体の払出しに関して遊技者とホール側とでトラブルが発生し
ないようにすることを目的として、停電からの復帰時に、払出し制御手段が主制御手段よ
りも先に起動して払出し制御が開始された場合、初期化スイッチが操作されていないため
、払出し動作復帰処理が実行され、その後、主制御手段から払出し再開コマンドを受信す
るまで、払出し動作を停止して、払出し再開可能な状態で待機する構成となっている。
さらに、この遊技機では、後から起動した主制御手段は補給切れ検出スイッチや満杯検
出スイッチからの検出スイッチに基づいて払出しに関するエラーを検出しない場合に、主
制御手段から払出し再開コマンドが送信されてくるので、払出し制御手段はその払出し再
開コマンド受信をきっかけに払出し動作を再開する構成となっている。
そして、この遊技機は、主制御手段を、払出し制御手段よりも遅延させて起動させるた
めに、主制御手段(主制御基板39)に遅延回路90を設けて、リセット信号発生手段7
7からのリセット信号が、払出し制御手段(払出し制御基板46)に到達するよりも時間
tだけ遅延して主制御手段に到達するように構成しているので(特開2002−2243
94号公報の段落[0051]〜[0053]、図9、図11参照)、遅延回路90など
のハードウェアが必要であるため、コストが高くなってしまうという問題があった。また
、遅延回路90はハードウェアで構成されているため、遅延の時間値をプログラムで変更
できないという問題もあった。
この場合、遅延回路90に相当する機能を、主制御手段(主制御基板39)に設けたC
PUを用いてソフトウェアによって実現すれば、コスト面での課題が解決するが、CPU
を用いて遅延時間を計時するためには、主制御手段(主制御基板39)のバックアップ用
メモリ39bを用いなければならず、この場合、主制御手段が起動後にバックアップ用メ
モリ39bの正当性を確認して、バックアップ用メモリ39bが使用可能な状態になって
から遅延時間を計時するので、遊技機全体の起動が遅れてしまうという課題を残していた
。そのため、ソフトウェアによって遊技制御装置の起動を従属制御装置の起動よりも遅延
させることによってコストダウンを図りつつも、遊技機全体の起動が遅延してしまうこと
を防止する遊技機が提供されることが望まれていた。
本実施形態に戻って、CPUコア102で使用できるレジスタの数が少ない場合には、
スタック領域を利用してディレイ処理を実行するほうが有効である。ただし、正当性判定
の対象となっている第1停電復旧領域701、ワークエリア702、第2停電復旧領域7
03、チェックサム領域704の各記憶領域を、ノイズ等によって書き換えてしまうこと
を極力防止したいのであれば、ディレイ処理中を通してユーザワークRAM104をRA
M書込禁止状態とし、図28に示したスタック領域を利用しないディレイ処理を実行する
ほうが有効ともいえる。
また、動作クロック数を高く設定することによってCPUによる演算処理速度を高速化
することが可能となるが、演算処理速度を高速化すると、ディレイ処理におけるループ回
数(図28では「0603H」=1539回)を高速化した分だけ大きくする必要がある
。しかしながら、演算処理速度を高速化しすぎると、ループ回数が大きくなりすぎてしま
い、ループ回数を格納するレジスタのバイト数が所定バイト数(例えば、2バイト)を超
えてしまい、プログラムの容量が大きくなってしまう。そこで、図28にて説明したよう
に、ループ回数を格納するレジスタのバイト数が2バイトに収まる(ループ回数が655
36回を超えない)ようにCPU102の動作速度(クロック数)を設定することによっ
て、高速通信を実現しながらもプログラム容量の増大を抑えることが可能となる。
図29は、本発明の第1の実施の形態のタイマ割込処理を示すフローチャートである。
このタイマ割込処理は、遊技制御装置100のCPUコア102によって実行される。
遊技機の電源が投入されると、遊技制御装置メイン処理(図25及び図26参照)が実
行される。そして、ステップ2517の処理で起動させたCTCによって、所定時間周期
(例えば、4ミリ秒周期)でタイマ割込みが発生すると、遊技制御装置100のCPU1
02によって、タイマ割込処理が繰り返し実行される。ただし、これらの処理(2912
〜2922の処理)は、割り込み発生毎に必ずしもすべて行なわれなくてもよい。例えば
、ステップ2912の入出力処理においては、毎回入力信号を監視するが、出力処理は割
り込みの発生の1回おきに実行されてもよい。つまり、1回の割込処理で一通りの処理を
すべて完了するのではなく、この割込処理が複数回繰り返し実行されて一連の遊技制御処
理が完了するようにしてもよい。
本実施形態のタイマ割込処理において、遊技制御装置100は、まず、レジスタのデー
タをスタック領域706に退避する(2911)。ここでは、遊技制御プログラムに記述
された命令を実行することにより、CPUコア102の内部のレジスタ(図12参照)の
中から、タイマ割込処理が呼び出される直前の処理(呼出元処理)で使用されていたもの
を選択して、スタック領域706に退避させる処理が行われる。
ただし、フラグレジスタ1200(図12参照)に関しては、図19の(D)に示すよ
うに、当該タイマ割込処理が開始する時点で既にスタック領域706に退避されているの
で、改めて命令を実行させる必要はない。
次に、遊技制御装置100は、入出力処理を実行する(2912)。入出力処理は、入
力処理と出力処理とを含む。入力処理は、入力I/F105を介して各種センサ(特図始
動SW34A、普図始動SW31A、カウントSW36A、入賞口SW32A〜32N、
オーバーフローSW109、球切れSW110、枠開放SW111など)から入力される
信号にチャタリング除去等の処理をし、入力情報を確定する処理である。
出力処理は、出力I/F106を介して、特図ゲーム処理(2919)及び普図ゲーム
処理(2920)にて設定されたパラメータに基づいて、特図表示器120、普図表示器
121、普電SOL90、及び大入賞口SOL38を制御するための信号を出力する。
なお、前述したように、入力処理と出力処理とは1回のタイマ割り込みで同時に実行さ
れなくてもよい。
次に、遊技制御装置100は、各種処理で送信バッファにセットされた(コマンド)を
演出制御装置150及び払出制御装置210等に出力するコマンド送信処理を行う(29
13)。具体的には、演出制御装置150に特別図柄変動表示ゲームに係わる演出指令信
号(演出コマンド)を出力したり、払出制御装置210に排出指令信号(払出指令信号、
払出コマンド)を出力したりする。コマンド送信処理の詳細については、図31にて後述
する。なお、払出コマンドについては図33にて詳細を説明し、演出コマンドについては
図35にて詳細を説明する。
その後、遊技制御装置100は、特別図柄変動表示ゲームの当りはずれを判定するため
の大当り乱数カウンタ(図15の大当り乱数の生成領域)の値を1ずつ加算する乱数更新
処理1を行う(2914)。なお、この乱数更新処理1では、特別図柄変動表示ゲームの
停止図柄を決定する大当り図柄乱数カウンタ(図15の大当り図柄乱数の生成領域)の値
、普通図柄変動表示ゲームの当りはずれを判定するための普図乱数カウンタ(図15の普
図乱数生成領域)にも1ずつ加算する。
次に、遊技制御装置100は、乱数の初期値を更新し、乱数の時間的な規則性を崩すた
めの初期値乱数更新処理を実行する(2915)。ステップ2915の初期値乱数更新処
理は、図26に示す初期値乱数更新処理(2520)と同じなので、説明を省略する。
そして、遊技制御装置100は、特別図柄変動表示ゲームに関連した飾り特別図柄変動
表示ゲームにおける変動表示パターンを決定する乱数を更新するための変動表示パターン
乱数カウンタ(図15の第1変動P乱数の生成領域、第2変動P乱数の生成領域、第3変
動P乱数の生成領域)の値を1ずつ加算する乱数更新処理2を行う(2916)。
次に、遊技制御装置100は、各入賞口に遊技球が入賞していないかを監視するために
、入賞口監視処理を行う(2917)。具体的には、第1特図始動SW37A、第2特図
始動SW34A、普図始動SW31A、カウントSW36A、入賞口SW32A〜32N
、から信号の入力があるか否か(遊技球の検出を示す信号が入力されているか否か)を監
視する。
このとき、大当りが発生して特別変動入賞装置36が開放中であるときには、カウント
SW36Aにより遊技球の検出数を計数して、特別変動入賞装置36へ入賞した遊技球の
数を計数する。この計数結果が所定数(例えば10個)になると、特別変動入賞装置36
を閉止して、次のラウンドに更新する処理を行う。
また、このとき、普図始動SW31Aによる遊技球の検出があれば、普図保留カウンタ
の値が所定数未満(例えば、「4個」未満)であることを条件に「1」だけ増加させ、普
図乱数カウンタ値(図15の普図乱数生成領域)が、普図保留カウンタに対応する普図始
動入賞記憶領域(図15)に記憶される。
なお、第1特図始動SW37Aによる遊技球の検出があれば、後述する「始動口SW監
視処理」にて、各種乱数値が、第1特図始動入賞記憶領域(図16)に記憶される。同様
に、第2特図始動SW34Aによる遊技球の検出があれば、後述する「始動口SW監視処
理」にて、各種乱数値が、第2特図始動入賞記憶領域(図17)に記憶される。
その後、遊技制御装置100は、排出球の球詰まりや、各種スイッチ、センサ等の異常
などを監視するエラー監視処理を行う(2918)。
その後、遊技制御装置100は、特別図柄変動表示ゲームに関する処理を行う特図ゲー
ム処理(2919)、普通図柄変動表示ゲームに関する処理を行う普図ゲーム処理(29
20)を行う。
特図ゲーム処理(2919)は、第1特図始動SW37A及び第2特図始動SW34A
で検出された始動入賞口への遊技球の入賞に基づいて抽出され、特別図柄始動入賞記憶に
記憶された特別図柄乱数カウンタ値が当りか否か判定し、特図表示器120で特別図柄変
動表示ゲームを実行する。なお、特図始動入賞記憶には、直ちに前記変動表示ゲームを実
行することができない状態で始動入賞口に遊技球が入賞した場合に、抽出された乱数が始
動入賞記憶として記憶される。なお、特図ゲーム処理の詳細は、図37にて後述する。
また、特図ゲーム処理(2919)では、特図表示器120の表示に対応する識別情報
の変動表示のための処理を行う。抽出された乱数が所定の値であれば、特別図柄に関する
当り状態となり、識別情報の変動表示が当り図柄で停止する。また、当り状態になると、
特別変動入賞装置36に遊技球を受け入れやすい開状態になる。
普図ゲーム処理(2920)は、普図始動SW31Aで検出された普通図柄始動ゲート
31への遊技球の通過に基づいて抽出され、普通図柄始動入賞記憶に記憶された普図乱数
カウンタ値(2917の処理で抽出・記憶された普通図柄変動表示ゲームの結果に関する
乱数)が当りか否かを判定し、普図保留カウンタの値を1だけ減算して、普図表示器12
1で普通図柄の変動表示ゲームを実行する。普図乱数カウンタ値が所定の値であれば、普
図に関する当り状態となり、普通図柄の変動表示が当り状態で停止するためのパラメータ
を設定する。
次に、遊技制御装置100は、遊技機1に設けられ、遊技に関する各種情報を表示する
セグメントLED(特図表示器120及び普図表示器121)に出力する信号を編集する
処理を行う(2921)。具体的には、特別図柄変動表示ゲームが開始されると、今回開
始した特別図柄変動表示ゲームの実行回数を減じた特別図柄入賞記憶数を特図表示器12
0の特図記憶表示部に表示するためのパラメータを編集する。同様に、普通図柄の変動表
示ゲームが開始されると、今回開始した普通図柄変動表示ゲームの実行回数を減じた普通
図柄入賞記憶数を普図表示器121の普図記憶表示器に表示するためのパラメータを編集
する。
その後、遊技制御装置100は、検査装置接続端子107を介して接続される管理用コ
ンピュータに遊技機1の状態を出力するための外部情報を編集する外部情報編集処理を行
う(2922)。外部情報には、図柄が確定したか、当りであるか、確率変動中であるか
、変動時間短縮中であるか、変動表示ゲームのスタート等、変動表示ゲームの進行状態に
関連する情報が含まれる。また、エラーが発生したことを示すエラー信号も含まれる。
次に、遊技制御装置100は、タイマ割込処理の終了を宣言する(2923)。
その後、遊技制御装置100は、スタック領域706に退避していたレジスタを復帰す
る復帰処理(2924)を行う。ここでは、遊技制御プログラムに記述された命令を実行
することにより、S2911のステップにて退避したレジスタの値を復帰させる。次いで
、禁止設定されていた割り込みの許可設定をする処理を行う(2925)。
そして、タイマ割込処理を終了し、遊技制御装置メイン処理(図25及び図26)に戻
る。ここでは、「RET」命令ではなく「RETI」命令を実行して、呼出元の処理に戻
る。そのため、スタック領域706に退避されていたフラグレジスタ1200(図12参
照)の値も復帰することになり、スタックポインタ1233が示す値も、図19の(D)
から図18の(B)の様に変化する。
なお、タイマ割込処理の先頭にて、図21に示す「レジスタバンクセレクタ」を切り替
える命令2115(「LD RBS,0」又は「LD RBS,1」)を実行することに
より、演算対象として用いるレジスタ群(汎用レジスタ群1220A、1220B)を切
り替えることも可能である。例えば、呼出元の処理では汎用レジスタ群1220Aのレジ
スタを用いる一方で、当該タイマ割込処理では汎用レジスタ群1220Bのレジスタを用
いるように切り替えることも可能である。
このようなレジスタバンクの切り換えを実行する場合は、タイマ割込処理の中では、呼
出元の処理とは異なるレジスタ群のレジスタが使用されるため、S2911のステップに
てレジスタを退避させるような処理や、S2911のステップにてレジスタを復帰させる
ような処理は不要である。
なお、当該タイマ割込処理でも、最後に「RETI」命令を実行するので、スタック領
域706に退避されていたフラグレジスタ1200(図12参照)の値が復帰することに
なり、フラグレジスタ1200のレジスタバンクセレクタ(RBS)1301(図13参
照)の値も呼出前の状態に復帰する。そのため、図21に示す「レジスタバンクセレクタ
」を切り替える命令2115(「LD RBS,0」又は「LD RBS,1」)は、タ
イマ割込処理の先頭で1回だけ実行すればよい。
そして、次のタイマ割り込みが発生するまで初期値乱数更新処理等(図26のステップ
2520〜2522の処理)を繰り返す。
図30は、本発明の第1の実施の形態の遊技制御装置100から、演出制御装置150
及び払出制御装置210に初期化指令信号を送信する初期化指令送信処理の手順を示すフ
ローチャートである。本処理は、図25のステップ2511の初期化指令送信処理に対応
する。
遊技制御装置100は、まず、演出指令及び排出指令の送信を禁止状態に設定する(3
001)。具体的には、送信制御レジスタ632(図8)のビット4を“0”に設定して
、送信データレジスタ635からの信号の出力を禁止した状態に設定する。
次に、遊技制御装置100は、起動時の演出指令を送信データレジスタ635に格納す
る(3002)。そして、起動時の演出指令がすべて送信データレジスタ635に格納さ
れるまで処理を継続する(3003)。
遊技制御装置100は、すべての演出指令が送信データレジスタ635に格納されると
(3003の結果が「N」)、起動時の排出指令を送信データレジスタ635に格納する
(3004)。そして、起動時の排出指令がすべて送信データレジスタ635に格納され
るまで処理を継続する(3005)。
最後に、遊技制御装置100は、ステップ3001の処理で禁止状態に設定されていた
演出指令及び排出指令の送信を許可状態に設定する(3006)。具体的には、送信制御
レジスタ632(図8)のビット4を“1”に設定して、送信データレジスタ635から
の信号の出力を許可した状態に設定する。
図31は、本発明の第1の実施の形態の遊技制御装置100から、演出制御装置150
及び払出制御装置210にコマンドを送信するためのコマンド送信処理の手順を示すフロ
ーチャートである。本処理は、図29のステップ2913のコマンド送信処理に対応する
遊技制御装置100は、初期化指令送信処理と同様に送信制御レジスタ632(図8)
のビット4を“0”に設定して、まず、演出指令及び排出指令の送信を禁止状態に設定す
る(3101)。
次に、遊技制御装置100は、送信待ちの演出指令が存在するか否か(今回のタイマ割
込処理のタイミングで、演出制御装置150に対応する送信データレジスタ635に書き
込むべきデータが存在するか否か)を判定する(3102)。送信待ちの演出指令が存在
しない場合には(3102の結果が「N」)、ステップ3112以降の排出指令に関する
処理を実行する。
一方、遊技制御装置100は、送信待ちの演出指令が存在する場合には(3102の結
果が「Y」)、送信待ちの演出指令に変動開始の演出指令が含まれているか否かを判定す
る(3103)。変動開始の演出指令とは、図35にて後述する「停止図柄指定コマンド
(MODE=B0H)」と「飾り図柄変動パターン指定コマンド(MODE=B1H〜B
FH)」の各々に相当するコマンドであり、演出制御装置150は、このコマンドを受信
したことを契機に、表示装置8にて変動表示ゲームの実行を開始する。
遊技制御装置100は、送信待ちの演出指令に変動開始の演出指令が含まれている場合
には(3103の結果が「Y」)、変動開始の演出指令を送信データレジスタに格納する
(3104)。そして、送信待ちの演出指令に含まれているすべての変動開始の演出指令
が送信データレジスタに格納されるまで処理を継続する(3105)。
遊技制御装置100は、送信待ちの演出指令に変動開始の演出指令が含まれていなかっ
た場合(3103の結果が「N」)、又は送信待ちの演出指令に含まれている変動開始の
演出指令をすべて送信データレジスタに格納した場合には(3105の結果が「Y」)、
送信待ちの演出指令に他の演出指令が含まれているか否かを判定する(3106)。
遊技制御装置100は、送信待ちの演出指令に変動開始以外の演出指令が含まれていな
い場合には(3106の結果が「N」)、ステップ3111の処理を実行し、続いて、排
出指令に関する処理を実行する。
一方、遊技制御装置100は、送信待ちの演出指令に変動開始以外の演出指令が含まれ
ている場合には(3106の結果が「Y」)、送信バッファ(送信データバッファレジス
タ635A)に空きがあるか否かを判定する(3107)。具体的には、送信データステ
ータスレジスタ631(図9)のビット0〜5の値(送信データの残量を示す値)が“0
0h”〜“1Fh”であれば、空きがあると判定される。
送信バッファに空きがない場合には(3107の結果が「N」)、送信待ちの演出指令
を次回の送信タイミングに持ち越し(3108)、ステップ3111の処理を実行し、続
いて、排出指令に関する処理を実行する。
遊技制御装置100は、送信バッファに空きがある場合には(3107の結果が「Y」
)、送信データレジスタに変動開始以外の演出指令を格納する(3109)。そして、送
信バッファの空きが無くなるか、すべての演出指令が送信データレジスタに格納されるま
で、ステップ3107から2110までの処理を継続する(3110)。
遊技制御装置100は、送信待ちの演出指令を送信バッファに格納する処理が終了する
と、送信制御レジスタ632(図8)のビット4を“1”に設定することで、ステップ3
101の処理で禁止状態に設定されていた演出指令の送信を許可状態に設定する(311
1)。
以上のように、コマンド送信処理において演出指令を演出制御装置150に送信する場
合、変動開始の演出指令を優先して送信することによって、遊技制御装置100における
変動表示ゲームの進行状態と、演出制御装置150における変動表示ゲームの進行状態と
の時間差が常に固定されたものとなる。そのため、変動表示ゲームが開始される毎にこの
時間差が変化するような不具合を防止できるようになり、遊技制御装置100と演出制御
装置150とを同期させながら、表示装置8で実行される変動表示ゲームをより確実に実
行させることができる。演出指令の送信が終了すると、続いて、排出指令を払出制御装置
210に送信するための処理を実行する。
遊技制御装置100は、まず、SW制御領域を検査し、賞球排出対象スイッチ(SW)
の立ち上がりがあるか否かを監視する(3112)。賞球を排出する入賞口に遊技球が入
賞すると、賞球排出対象SWがオンに設定される。そして、遊技制御装置100は、賞球
の排出に該当するスイッチが存在するか否かを判定する(3113)。
なお、SW制御領域とは、遊技機に備えられた各種スイッチの検出状態を、タイマ割込
毎に記憶しておく記憶領域のことである。ここでは、SW制御領域のうち、遊技球検出に
よって賞球が排出されるスイッチのみが対象とされ、これら対象となったスイッチのうち
で、「立ち上がり情報」がオンとなっているものがあるか否かを判定している。
遊技制御装置100は、賞球の排出に該当するスイッチが存在する場合(「立ち上がり
情報」がオンとなっている賞球排出対象のSWが存在する場合)には(3113の結果が
「Y」)、オンとなっている賞球排出対象SWの1つを選択し、選択されたSWに該当す
る排出指令を送信データレジスタに格納する(3114)。
次に、その時点で「立ち上がり情報」がオンとなっている賞球排出対象のSWが、他に
も存在するかを確認する。遊技制御装置100は、他の賞球排出対象のSWがオンになっ
ていれば、オンとなっている賞球排出対象SWの1つをさらに選択し、選択されたSWに
該当する排出指令を送信データレジスタに格納する。そして、すべての賞球を排出する指
令が送信データレジスタに格納されるまで処理を継続する(3115)。
遊技制御装置100は、賞球の排出に該当するスイッチが存在しない場合には(311
3の結果が「N」)、又は賞球の排出に該当するスイッチに対応する排出指令をすべて送
信データレジスタに格納した場合には、送信待ちの他の排出指令(払出制御装置210へ
エラー発生やエラー解除を指令するコマンドなど)が存在するか否かを判定する(311
6)。
遊技制御装置100は、送信待ちの他の排出指令が存在しない場合には(3116の結
果が「N」)、排出指令に関する送信を許可状態に設定し(3121)、呼び出し元に戻
る。
一方、遊技制御装置100は、送信待ちの他の排出指令が存在する場合には(3116
の結果が「Y」)、送信バッファに空きがあるか否かを判定する(3117)。具体的に
は、送信データステータスレジスタ631(図9)のビット0〜5の値(送信データの残
量を示す値)が“00h”〜“1Fh”であれば、空きがあると判定される。
送信バッファに空きがない場合には(3117の結果が「N」)、送信待ちの排出指令
を次回の送信タイミングに持ち越し(3118)、排出指令に関する送信を許可状態に設
定し(3121)、呼び出し元に戻る。
遊技制御装置100は、送信バッファに空きがある場合には(3117の結果が「Y」
)、送信待ちの排出指令を送信データレジスタに格納する(3119)。そして、送信バ
ッファの空きが無くなるか、すべての排出指令が送信データレジスタに格納されるまで、
ステップ3117から3120までの処理を継続する(3120)。最後に、排出指令に
関する送信を許可状態に設定し(3121)、呼び出し元に戻る。
以上のように、本実施形態では、コマンド送信処理において排出指令を払出制御装置2
10に送信する場合に賞球排出指令を、その他の排出指令(エラー発生/解除の指令)よ
りも優先して送信することによって、賞球排出対象の複数のスイッチが、同一のタイマ割
込周期内で同時にオンした場合であっても、確実に賞球を排出させるように構成されてい
る。
このように、演出指令や賞球排出指令などの制御指令を内容に応じて優先して送信して
遊技が円滑に進行するように制御し、さらに、優先されなかった制御指令については次回
割込発生時に送信することによって、送信漏れのない正確な指令送信を実現することが可
能となる。
図32は、本発明の第1の実施の形態の電源投入時の遊技制御装置100、払出制御装
置210、及び演出制御装置150が行う処理、並びに、遊技制御装置100に備わるシ
リアル送信回路615の状態のタイミングチャートである。
リセット信号が払出制御装置210に接続されるシリアル送信回路615B及び演出制
御装置150に接続されるシリアル送信回路615Aに伝達されると、図23に示すステ
ップ2302の処理により、各シリアル送信回路615が不定状態(3201)から初期
状態(3202)に移行する。
この不定状態では、シリアル送信回路615(シリアル送信回路615A、615B)
から出力される信号線のレベルは、ハイレベルであるのかローレベルであるのか保証され
ない状態である。一方、シリアル送信回路615がリセット信号により初期化されて初期
状態に遷移すると、シリアル送信回路615Bからの出力信号はオフを示すレベルに確定
される。
シリアル送信回路615の初期状態は、遊技制御装置100が図25に示すステップ2
511の処理で初期化指令を送信するために、初期化指令が各シリアル送信回路615に
設定されるまで(3203)継続する。
一方、遊技制御装置100のセキュリティ回路630にリセット信号が伝達されると、
図23に示すステップ2304の処理で自己診断処理を実行し、ステップ2305の処理
でセキュリティチェック処理を実行する(3204)。セキュリティチェック処理の実行
後にCPU102が起動し、CPU102によって遊技制御装置メイン処理(図25及び
図26)が実行される。
CPU102は、ディレイ処理の実行(3206)前に1回目のRAMクリア信号の取
り込み(3205)と、ディレイ処理の実行後に2回目のRAMクリア信号の取り込み(
3207)と、を行う。言い換えると、1回目のRAMクリア信号取り込み(3205)
と2回目のRAMクリア信号取り込み(3207)とは、ディレイ処理(3206)を挟
んで実行される。
このように、2205及び2207の各時点で実行されるRAMクリア信号取り込みの
間に、ディレイ処理を実行するので、ディレイ処理の間に、1回目のRAMクリア信号取
り込みで取り込んだチャタリング除去等を行うことができる。
ディレイ処理(3206)で処理を待機させた後に、図25に示すステップ2516及
び1510の処理でRAM104の初期化処理を行い(3208)、ステップ2511の
処理で初期化指令を送信してから、通常の遊技制御を行う(3209)。
なお、通常の遊技制御を実行すると、遊技状態に応じて、払出制御指令を払出制御装置
210に送信するために、払出制御指令が払出制御装置210に接続されるシリアル送信
回路615Bに設定される(3210)。また、通常の遊技制御の実行中には、遊技状態
に応じて、演出制御指令を演出制御装置150に送信するために、演出制御指令が演出制
御装置150に接続されるシリアル送信回路615Aに設定される(3211)。
一方で、払出制御装置210のセキュリティ回路にリセット信号が伝達されると、払出
制御装置210のセキュリティ回路は、図23に示すステップ2314の処理で自己診断
処理を実行し、ステップ2315の処理でセキュリティチェック処理を実行する(321
2)。セキュリティチェック処理の実行後にCPU212が起動し、CPU212によっ
て、図14のステップ2316の処理で電源投入時の初期化処理を実行する(3213)
。払出制御装置210の初期化処理が実行されると、払出制御装置210のシリアル受信
回路625を、遊技制御装置100からの指令を受信可能な状態にする(3214)。
また、演出制御装置150にリセット信号が伝達されると、演出制御装置150は、図
23のステップ2323の処理で電源投入時の初期化処理を実行する(3215)。演出
制御装置150の初期化処理が実行されると、演出制御装置150のシリアル受信回路6
25を、遊技制御装置100からの指令を受信可能な状態にする(3216)。
遊技制御装置100は、ディレイ処理を実行することで、RAM104の初期化処理の
実行開始のタイミングを遅延させている。言い換えると、ディレイ処理によって、演出制
御装置150や払出制御装置210へ初期化指令を送信するタイミングを遅延させている
このため、ディレイ処理によって、払出制御装置210に接続されるシリアル送信回路
615B及び演出制御装置150に接続されるシリアル送信回路615Aが初期状態を維
持する時間を十分に確保し、その間に、払出制御装置210及び演出制御装置150は、
初期化処理を実行し、自身のシリアル受信回路625を介して遊技制御装置100からの
指令を受信可能な状態にすることができる。
したがって、ディレイ処理を設けることで、図25のように、リセット信号が、遊技制
御装置100、払出制御装置210及び演出制御装置150に同時に伝達される構成の遊
技機であっても、ハードウェア等で構成した遅延回路を設けることなく、各制御装置が起
動を開始するタイミングを適切に設定することができる。
よって、図32のように、まず、払出制御装置210に接続されるシリアル送信回路6
15B及び演出制御装置150に接続されるシリアル送信回路615Aが初期状態に維持
され、その状態で、払出制御装置210及び演出制御装置150のシリアル受信回路62
5が指令受信可能状態になり、次いで、払出制御装置210及び演出制御装置150に初
期化指令を送信させることを確実に実行できるようになる。
仮に、遊技機1への電源投入直後において、遊技制御装置100の払出制御装置210
に接続されるシリアル送信回路615B及び演出制御装置150に接続されるシリアル送
信回路615Aが初期状態に維持される以前に、払出制御装置210若しくは演出制御装
置150のシリアル受信回路625が指令受信可能状態になると、払出制御装置210に
接続されるシリアル送信回路615B及び演出制御装置150に接続されるシリアル送信
回路615Aから出力される信号レベルが不安定であるから、払出制御装置210若しく
は演出制御装置150にてこの不安定な信号レベルの情報を、正規な信号であると誤って
受信するおそれがあり、誤作動を引き起こす可能性がある。
また、払出制御装置210若しくは演出制御装置150のシリアル受信回路625が指
令受信可能状態になる前に、遊技制御装置100から、払出制御装置210若しくは演出
制御装置150へ初期化指令を送信してしまうと、払出制御装置210や演出制御装置1
50で初期化指令を受信できなくなり、誤作動を引き起こす可能性がある。
特に、本実施形態の遊技機のように、遊技制御装置100から払出制御装置210へ単
方向で指令を送信する構成や、遊技制御装置100から演出制御装置150へ単方向で指
令を送信する構成の場合には、指令された情報が正しく送信されているか否かを確認する
ことが困難であるため、初期化時に処理を遅延させることが有効である。
また、図32では、RAMクリア信号の取り込みが2回である例を示したが、複数回で
あればよい。この複数回の間にディレイ処理を実行することによって、ディレイ処理実行
直前のRAMクリア信号取り込みのチャタリング除去等にかかる時間をディレイ処理によ
る遅延時間と重複させることができるので、処理を効率化させることができる。
図33は、本発明の第1の実施の形態の遊技制御装置100から払出制御装置210に
送信される排出指令の一例を示す図である。
払出制御装置210に送信される排出指令は、払出制御装置210を初期化する指令(
初期化指令信号)と、賞球を排出する指令(排出指令信号)と、エラーの発生及び解除を
通知する指令(エラー通知信号)があり、モード部及びアクション部からなる共通のフォ
ーマットで送信される。
まず、初期化指令信号について説明すると、初期化指令信号は、モード部が「80H」
であり、アクション部は「00H〜7FH」のいずれかの値となる。初期化指令信号のア
クション部は、払出制御装置210に設定されている認証コードに対応する値(「00H
〜7FH」のいずれかの値)となる。この払出制御装置210に設定されている認証コー
ドに対応する値は、例えば、RAM104に設定されているものとする。なお、モード部
は「80H」以上の値、アクション部には「80H」未満の値が設定されており、モード
部を受信する場合に「80H」未満の値が送信された場合には不正なコマンドが送信され
てきたことを判別することが可能となっている。
初期化指令信号の出力時期は、遊技制御装置100に電源投入時であり、具体的には、
図25に示すステップ2511の処理である。
次に、排出指令信号について説明する。払出制御装置210によって払い出される遊技
媒体の個数に対応して、15個の排出指令信号が用意されている。
排出指令信号のモード部は「A1H〜AFH」である。なお、このモード部の下位バイ
トは、排出指令信号が払い出しを指令する遊技媒体の個数と一致する。また、排出指令信
号のアクション部は「5EH〜50H」となる。このアクション部は、モード部の各ビッ
トの論理を反転した値となっている。
例えば、1個の遊技媒体の払い出しを指令する排出指令信号のモード部は「A1H」で
あり、アクション部は「5EH」である。すなわち、排出指令信号は、モード部とアクシ
ョン部とからなる2バイトのデータで構成されている。
なお、排出指令信号の出力時期は、一般入賞口32、第1始動入賞口37、第2始動入
賞口34、特別変動入賞装置(大入賞口)36に遊技球が入賞したタイミングで出力され
る。
また、払出制御装置210は、排出指令信号を受信すると、受信した排出指令信号のモ
ード部の各ビットの論理を反転した値が、アクション部の各ビットの値と一致しなければ
、受信した排出指令信号に対応する個数の遊技媒体の払い出しを許可しない。
最後に、エラー通知信号について説明する。排出指令がエラー発生通知の場合には、モ
ード部にエラーが発生したことを示す「C0H」が設定される。また、エラー通知信号の
アクション部は、発生したエラーの種類に対応する値(「00H〜7FH」のいずれかの
値)が設定される。
排出指令がエラー解除通知の場合には、モード部にエラーが解除されたことを示す「C
1H」が設定される。また、エラー解除信号のアクション部は、エラー通知信号の場合と
同様に、発生したエラーの種類に対応する値(「00H〜7FH」のいずれかの値)が設
定される。
図34は、本発明の第1の実施の形態のスイッチの立ち上がりを検出する手順を示すタ
イムチャートである。なお、図中のfは割込周期であり、割込周期の先頭でタイマ割込が
発生する。また、dは遅延時間を示す。スイッチの立ち上がり、すなわち、スイッチがオ
ンになったか否かの判定は、図29に示したタイマ割込処理のステップ2912の入出力
処理で行われる。なお、以下に示す、第1物理レベル、第2物理レベル、論理レベル、立
上り情報は、タイマ割込が発生する毎に更新され、遊技機に備えられたスイッチ毎に整理
されてSW制御領域(図31で前述)に記憶される。
まず、スイッチの立ち上がり時(3401)及び立ち下がり時(3402)について説
明する。CPU102は、タイマ割込発生時の入出力処理(図29のステップ2912)
において、スイッチの検出信号のレベルが、前回設定された第1物理レベルと相違すると
(ローレベルからハイレベル、又は、ハイレベルからローレベルに変化)、第1物理レベ
ルを検出信号のレベルに新たに設定する。そして、所定の遅延時間が経過した後、スイッ
チの検出信号が、前回設定された第2物理レベルと相違する場合には、第2物理レベルを
検出信号のレベルに設定する。なお、第1物理レベルと第2物理レベルとは、検出タイミ
ングが異なるだけである。
このとき、第1物理レベルと、第2物理レベルとが一致していれば、検出信号が変化し
たものと判断し、論理レベルに当該レベルを設定する。そして、論理レベルがローレベル
からハイレベルに変化した場合には、次のタイマ割込発生から遅延時間が経過するまで、
立ち上がり情報をオンに設定する。すなわち、立ち上がり情報をオンに設定した後、次の
タイマ割込発生でオフに設定する。
また、本発明の第1の実施の形態では、第1物理レベルと第2物理レベルの信号レベル
が相違する場合、すなわち、3403に示すように、第1物理レベル検出時と、第2物理
レベル検出時とで、スイッチの検出信号のレベルが相違する場合には、ノイズが発生した
ものとして、論理レベルを変更しないように構成されている。このように構成することに
よって、ノイズ発生時に誤って立上り情報がオンに設定されることを防ぎ、後述するよう
に、賞球排出指令が誤って払出制御装置210に送信されることを防ぐことができる。
また、本発明の第1の実施の形態では、図34のタイミングチャートに示した立上り情
報がオンとなったスイッチの中に賞球排出対象となるものが含まれている場合は、送信バ
ッファ(図6の送信データバッファレジスタ635A)に賞球排出指令が格納されること
で、遊技制御装置100から払出制御装置210に賞球排出指令が送信される。また、賞
球排出指令は、賞球排出の対象となる入賞スイッチ(図4における、第1特図始動SW3
7A、第2特図始動SW34A、カウントSW36A、及び入賞口SW32A〜入賞口S
W32N)ごとに定義される。なお、本発明の第1の実施の形態では、賞球排出の対象と
なる入賞スイッチが16個備えられている。
このとき、1回のタイマ割込周期内での送信で、送信バッファ内に格納されたすべての
賞球排出指令が送信されないと、次回のタイマ割込発生時に、賞球排出対象のスイッチの
立上り情報がオンとなって新たに発生した賞球排出指令を、送信バッファに取り込めない
おそれがある。これを防止するには、新たに賞球排出指令が発生する度に、送信バッファ
に空きがあるか否かを確認して、空きがなければ次回送信時まで賞球排出指令を保持して
いなければならず、送信できない賞球排出指令を保持するための記憶領域(例えば、前述
したSW制御領域の立ち上がり情報を一時的に退避させる領域など)を必要としてしまう
。また、送信バッファに格納できなかった賞球排出指令を退避させる処理も必要となって
しまう。
例えば、賞球排出対象のスイッチが5個であり、賞球排出指令のサイズが2バイトであ
るならば、払出制御装置210に指令を送信するためのバッファ(送信データレジスタ6
35)に格納できるデータの最大バイト数を10バイトとしておけば、同一タイマ割込周
期内で賞球排出対象の全てのスイッチが同時にオンしたとしても、全ての賞球排出指令を
バッファに取り込むことができる。しかしながら、賞球排出対象のスイッチが5個を超え
た場合には、バッファにはより多くの容量を必要とすることになる。
本発明の第1の実施の形態では、送信バッファの容量を32バイトに設定しているので
、賞球排出対象のスイッチが16個以下であれば、1回の割り込み発生時にすべての賞球
排出指令を遊技制御装置100から払出制御装置210に送信できるように構成されてい
る。したがって、送信されなかった賞球排出指令を保持するための記憶領域を必要とせず
、また、送信されていない賞球排出指令を退避させる処理も不要となるため、必要な記憶
容量を削減し、遊技制御装置100の制御プログラムを簡略化することができる。
図35は、本発明の第1の実施の形態の遊技制御装置100から演出制御装置150に
送信される演出制御コマンドの一例を示す図である。
演出制御装置150に送信されるコマンドは、初期化コマンドと通常時のコマンドであ
る演出コマンドとがあり、これらのモード部及びアクション部によって構成される共通の
フォーマットで送信される。
まず、初期化コマンドについて説明する。
初期化コマンドには、RAM104のすべての領域が初期化されたか否かを示す電源投
入コマンドと、遊技機1のシリーズを特定するためのシリーズ機特定コマンドとが含まれ
る。また、直前の電源遮断時における遊技機1の遊技状態(低確率状態、高確率状態、入
賞抑制状態、入賞促進状態)を通知するコマンドや直前の電源遮断時における特別図柄入
賞記憶の数を通知するコマンドも初期化コマンドに含まれる。
図35に示すように、RAM104のすべての領域が初期化されたことを示す電源投入
コマンドAのモード部は「80H」であり、アクション部は「01H」である。RAM1
04のすべての領域が初期化されたこととは、図25に示すステップ2510の処理が実
行されたことである。
一方、RAM104のすべての領域が初期化されていないこと、つまり、RAM104
の一部の領域が初期化されたことを示す電源投入コマンドBのモード部は「80H」であ
り、アクション部は「02H」である。RAM104のすべての領域が初期化されていな
いこと、つまり、RAM104の一部の領域が初期化されたこととは、図25に示すステ
ップ2516の処理が実行されたことである。
したがって、図25に示すステップ2510の処理が実行された場合には、ステップ2
511の処理で、モード部が「80H」でアクション部が「01H」である電源投入コマ
ンドAが送信される。図25に示すステップ2516の処理が実行された場合には、ステ
ップ2511の処理で、モード部が「80H」でアクション部が「02H」である電源投
入コマンドAが送信される。
演出制御装置150は、RAM104のすべての領域が初期化されたことを示す電源投
入コマンドAを受信すると、RAM104のすべての領域が初期化されたことを表示装置
8に表示する。
また、演出制御装置150は、RAM104のすべての領域が初期化されていないこと
を示す電源投入コマンドBを受信すると、RAM104のすべての領域が初期化されてい
ないことを表示装置8に表示する。
また、シリーズ機特定コマンドのモード部は「81H」であり、アクション部は「01
H〜7FH」である。アクション部は、遊技機1のシリーズに対応する「01H」〜「7
FH」のいずれかの値である。なお、遊技機1のシリーズに対応する値は、ROM103
に設定されている。
また、遊技状態(低確率状態、高確率状態、入賞抑制状態、入賞促進状態)を通知する
コマンドは、モード部が「90H」となっており、アクション部には、直前の電源遮断時
における遊技状態別に対応付けられた値が格納される。例えば、低確率状態であればアク
ション部は「01H」であり、高確率状態であればアクション部は「02H」となる。演
出制御装置150は、遊技状態を通知するコマンドを受信すると、遊技状態を報知するた
めの演出を行う。
また、特別図柄入賞記憶の数を通知する保留情報コマンドは、モード部が「A0H」と
なっており、アクション部は「00H〜04H」のいずれかの値である。アクション部は
、直前の電源遮断時における始動記憶数(0〜4)に対応した値である。演出制御装置1
50は、保留情報コマンドを受信すると、表示装置8の記憶表示部(図49で後述する第
1記憶表示部4920又は第2記憶表示部4930)部に、受信した保留情報コマンドに
対応する始動記憶数を表示する。
これらのシリーズ機特定信号、遊技状態を通知するコマンド、及び特別図柄入賞記憶の
数を通知するコマンドの出力時期は、電源投入時であり、図25に示すステップ2511
の処理で送信される。なお、これらの各信号と電源投入コマンドの出力順序は、いずれが
先であっても後であってもよい。さらに、電源投入時に、遊技制御装置100から演出制
御装置150へ通知すべき情報が他にもあれば、初期化コマンドとして一緒に送信しても
よい。
次に、各演出コマンドについて説明する。
まず、表示装置8で実行される変動表示ゲームにおいて、始動口に遊技球が入賞したタ
イミングで出力され、図柄の変動開始前に実行される演出を指示する変動前演出指定コマ
ンドについて説明する。
変動前演出指定コマンドのモード部は「A1H〜AFH」であり、アクション部は「0
1H〜7FH」のいずれかの値である。モード部は前半変動パターン番号に対応し、アク
ション部は後半変動パターン番号に対応する。
演出制御装置150は、変動前演出指定コマンドを受信すると、表示装置8において識
別図柄の変動開始前の演出、例えば、先読み予告としてキャラクタが登場するなどの演出
が実行され、その後、図柄の変動表示を開始し、変動表示ゲームを開始する。
表示装置8で実行される変動表示ゲームにおいて図柄の変動パターンを指示する飾り図
柄変動パターン指定コマンドについて説明する。
飾り図柄変動パターン指定コマンドのモード部は「B1H」であり、アクション部は「
01H〜7FH」のいずれかの値である。モード部は前半変動パターン番号に対応し、ア
クション部は後半変動パターン番号に対応する。
演出制御装置150は、飾り図柄変動パターン指定コマンドを受信すると、表示装置8
において図柄の変動表示を開始し、変動表示ゲームを開始する。
飾り図柄変動パターン指定コマンドは、表示装置8において変動表示ゲームの図柄の変
動表示を開始するタイミングで送信する。具体的には、表示装置8で変動表示ゲームが終
了した場合に始動記憶がある場合、又は表示装置8で変動表示ゲームが実行されていない
場合に始動入賞口に遊技球が入賞した場合である。
次に、表示装置8における変動表示ゲームにおける停止図柄を指定する停止図柄指定コ
マンドについて説明する。
停止図柄指定コマンドのモード部は「B0H」であり、アクション部は「01H〜7F
H」のいずれかの値である。アクション部は、停止図柄に対応する値である。
演出制御装置150は、停止図柄指定コマンドを受信すると、受信した停止図柄指定コ
マンドに基づいて、表示装置8における変動表示ゲームの停止図柄を特定する。
停止図柄指定コマンドは、表示装置8の変動表示ゲームの変動表示を開始するときに送
信される。
続いて、変動時間が経過し、変動表示中の図柄を停止するための図柄変動停止コマンド
について説明する。
図柄変動停止コマンドのモード部は「C0H」であり、アクション部は「01H」であ
る。
演出制御装置150は、図柄変動停止コマンドを受信すると、表示装置8で変動表示し
ている図柄を停止させる。
図柄変動停止コマンドは、変動時間が経過したタイミングで送信される。
続いて、特別遊技状態発生中に送信される大当り関連コマンドについて説明する。
大当り関連演出指令信号のモード部は「D0H」であり、アクション部は「01H〜7
FH」のいずれかの値である。アクション部は、特別遊技状態の進行状況に応じた値であ
る。
演出制御装置150は、大当り関連コマンドを受信すると、受信した大当り関連コマン
ドに基づいて、特別遊技状態に関連する演出を行う。
遊技機1においてエラーが発生した場合にエラーの発生を報知するためのエラー関連コ
マンドについて説明する。
エラー関連コマンドのモード部は「70H」であり、アクション部は「01H〜7FH
」のいずれかの値である。アクション部は発生したエラーに対応した値である。
演出制御装置150は、エラー関連コマンドを受信すると、エラー関連コマンドに基づ
いて、発生したエラーを報知するための演出を行う。
エラー関連コマンドは、遊技制御装置100がエラーを検出したタイミングで送信され
る。
なお、前述の遊技状態を通知するコマンド(モード部=「90H」)は、電源投入時だ
けでなく、通常の遊技中において遊技状態が変化した場合にも送信される。例えば、遊技
中において低確率状態が発生したときに、モード部=「90H」かつアクション部=「0
1H」のコマンドが送信され、遊技中において、高確率状態が発生したときに、モード部
=「90H」かつアクション部=「02H」のコマンドが送信される。
また、前述の特別図柄入賞記憶の数を通知するコマンド(モード部=「A0H」)は、
電源投入時だけでなく、通常の遊技中において始動入賞口に遊技球が入賞して始動記憶数
が増加した場合にも送信される。例えば、遊技中において始動入賞口に遊技球が入賞して
始動記憶数が「3」に変化したときには、モード部=「A0H」かつアクション部=「0
3H」の信号が送信される。
したがって、これらの遊技状態を通知する信号、及び特別図柄入賞記憶の数を通知する
信号は、演出コマンドとしても機能することになる。
なお、前述したように、これらの信号のうち、変動前演出指定コマンドは、他の信号よ
りも優先して演出制御装置150へのデータ送信を行うためのバッファ(送信データレジ
スタ635)に取り込まれる。これにより、遊技制御装置100における変動表示ゲーム
の進行状態と、演出制御装置150における変動表示ゲームの進行状態との時間差を常に
固定させる。
図36は、本発明の第1の実施の形態の遊技制御装置100から演出制御装置150に
送信される送信データの構成を示す説明図である。図36(a)は送信データの概略構成
を示し、図36(b)は送信データの詳細構成を示している。なお、遊技制御装置100
から払出制御装置210に送信される送信データの構成も同様である。
図36(a)に示すように、1組の制御指令データは、コマンドの分類を識別するため
のモードデータDCmと、実行されるコマンドの内容(機能)を示すアクションデータD
Caで構成される。これらのモードデータDCm及びアクションデータDCaは、図33
の賞球排出指令のMODE及びACTION、図35の演出制御コマンドのMODE及び
ACTIONに各々対応する。
また、本実施形態では、送信バッファに設定されたすべての制御指令データ(最大32
バイト)を1回の割込周期ですべて送信可能となるようにデータの送信速度が設定されて
いる。したがって、遊技制御装置100の制御プログラムを複雑化させずに、演出制御装
置150への指令送信を一時的に中断するなどの処理を必要とせず、また、指令送信の遅
れなどによって、遊技制御装置100と演出制御装置150の各制御の進行状態がずれな
いようにすることが可能となる。
また、図36(b)に示すように、1組の制御指令データを構成するモードデータDC
m及びアクションデータDCaは、8ビットのコマンドデータに、1フレームの開始であ
ることを示すスタートビット、1ビットのパリティデータ、1フレームの終わりであるこ
とを示すストップビットが付加され、1フレームを処理単位として送信される。従って、
この1フレームの時間が、1バイトあたりのデータ送信時間(送信バッファに格納された
制御指令データを1バイト送信するために必要な時間)となる。
すなわち、本実施形態では、非同期方式(調歩同期式)によるシリアル通信を利用して
制御指令データを送信する。
演出制御装置150は、受信した1組の制御指令データ(モードデータDCm+アクシ
ョンデータDCa)を解析し、表示装置8、音回路156、装飾制御装置等を制御するた
めの制御データを生成する。
本実施形態では、1回の割込処理で生成された一連の制御指令データを送信するときに
、全ての制御指令データを、タイマ割込周期内で一時に送信するようにしている。すなわ
ち、一連の制御指令データを全て送信データレジスタ635に格納した後で、シリアル送
信回路615を送信許可状態として(送信制御レジスタ632の送信イネーブルを送信許
可に設定)送信を開始する。
従属制御装置としての演出制御装置150は、連続して受信したデータを、一連の制御
指令データとして認識する。そして、この一連の制御指令データを処理単位として演出装
置(例えば、表示装置8)を制御する。
これにより、演出制御装置150は、タイマ割込処理毎に生成された一連の制御指令デ
ータを特定でき、1回のタイマ割込処理で生成された一連の制御指令データを処理単位と
して演出装置を制御するので、一連の制御指令データに基づく演出を連続して(タイムラ
グなく)実行することができる。
次に、図37を参照して、図29のタイマ割込処理における特図ゲーム処理(2918
)の詳細を説明する。図37は、本発明の第1の実施の形態の特図ゲーム処理の手順を示
すフローチャートである。
遊技制御装置100は、第1始動入賞口37(図3参照)及び普通変動入賞装置33(
図3参照)の第2始動入賞口への遊技球の入賞を監視し、入賞に基づき各種乱数値の記憶
を行う始動口SW監視処理を実行する(3700)。なお、始動口SW監視処理について
の詳細は、図39にて後述する。
遊技制御装置100は、カウントSW36A(図3参照)からの入力を監視するカウン
トスイッチ監視処理を行う(3701)。
遊技制御装置100は、ステップ3706〜3712の各処理で設定される特図ゲーム
処理タイマが0であるか否かを判定する(3702)。
特図ゲーム処理タイマが0でないと判定された場合には(3702の結果が「N」)、
遊技制御装置100は、特図ゲーム処理タイマを−1更新し(3703)、更新された特
図ゲーム処理タイマがタイムアップして0になったか否かを判定する(3704)。特図
ゲーム処理タイマがタイムアップしていない場合には(3704の結果が「N」)、遊技
制御装置100はステップ3714の処理を実行する。
一方、特図ゲーム処理タイマが0であると判定された場合には(3702の結果が「Y
」)、又は特図ゲーム処理タイマがタイムアップしたと判定された場合には(3704の
結果が「Y」)、遊技制御装置100は、ゲーム処理番号を取得し、取得したゲーム処理
番号に基づいて実行する処理を選択するゲーム分岐処理を行う(3705)。
ゲーム処理番号が0である場合には、遊技制御装置100は、特図変動表示ゲームの変
動開始を監視し、特図変動表示ゲームの変動開始の設定や演出の設定、特図変動中処理を
行うために必要な情報の設定を行う特図普段処理を実行する(3706)。特図普段処理
では、特図変動表示ゲームの変動に係る情報の設定を行うようになっており、始動記憶に
基づく特図変動表示ゲームの実行に伴って始動記憶を1デクリメントする処理や特図変動
表示ゲームにおける変動時間の設定処理等を行う。なお、特図普段処理についての詳細は
、図45にて後述する。
ゲーム処理番号が1である場合には、遊技制御装置100は、特図表示中処理(370
8)を行うために必要な情報(特図変動表示ゲームにおける結果の停止表示時間等)の設
定を行う特図変動中処理を実行する(3707)。
ゲーム処理番号が2である場合には、遊技制御装置100は、特図表示中処理を実行す
る(3708)。特図表示中処理では、特図変動表示ゲームの結果が大当りである場合に
ファンファーレ・インターバル処理(3709)を行うために必要な情報が設定され、特
図変動表示ゲームの結果がはずれである場合には特図普段処理(3706)を行うために
必要な情報が設定される。
ゲーム処理番号が3である場合には、遊技制御装置100は、特別遊技状態における大
入賞口の開放回数の更新等の処理を行うファンファーレ・インターバル処理を実行する(
3709)。なお、この処理において、ラウンド開始コマンドが設定される。
ゲーム処理番号が4である場合には、遊技制御装置100は大入賞口開放中処理を行う
(3710)。大入賞口開放中処理では、特別遊技状態が最終ラウンドでなければファン
ファーレ・インターバル処理(3709)を行うために必要な情報(インターバルコマン
ドを含む)が設定され、特別遊技状態が最終ラウンドであれば特別遊技状態の終了画面の
コマンド(大当り終了コマンド)の設定や大入賞口残存球処理(3711)を行うために
必要な情報が設定される。
ゲーム処理番号が5である場合には、遊技制御装置100は大入賞口残存球処理を行う
(3711)。大入賞口残存球処理では、特別遊技状態が最終ラウンドである場合に、大
入賞口を閉鎖した後に大入賞口内に残存する全ての遊技球がカウントSW42cで検出さ
れるまでの時間が設定される。
ゲーム処理番号が6である場合には、遊技制御装置100は大当り終了処理を実行する
(3712)。大当り終了処理では、特別遊技状態を終了する処理が行われ、特図普段処
理(3706)を行うために必要な情報が設定される。
ゲーム処理番号に基づくステップ3706〜3712の処理を行った後、遊技制御装置
100は、設定された各種データをセーブするテーブルデータセーブ処理を実行する(3
713)。その後、遊技制御装置100は、特図1変動表示ゲームのゲーム処理タイマの
更新等を行う特図1変動制御処理(3714)を実行し、特図2変動表示ゲームのゲーム
処理タイマの更新等を行う特図2変動制御処理(3715)を実行して、特図ゲーム処理
を終了する。
図38は、本発明の第1の実施の形態の特図ゲーム処理におけるゲーム処理番号に基づ
いた分岐の処理を説明する図である。この分岐の処理は、図37のステップ3705で実
行され、行3801〜行3807の命令が順に実行されることになる。ここでは、図12
で前述した各種レジスタ、図21及び図22で前述したアセンブリ言語を用いて説明を行
うことにする。
なお、図38における列3821は、遊技制御プログラムが格納されているユーザプロ
グラムROM103のアドレスを示し、列3822は、当該アドレスに格納されているデ
ータを示している。例えば、ユーザプログラムROM103の「4800H」のアドレス
には「F5H」のデータが格納され、続く「4801H」のアドレスには「0CH」のデ
ータが格納され、続く「4802H」のアドレスには「48H」のデータが格納され、続
く「4803H」のアドレスには「3AH」のデータが格納されている。以降の「480
4H」〜「480BH」のアドレスには、「10H」、「28H」、「87H」、‥‥、
「09H」、「E9H」のデータが格納されている。
さらに、「480CH」と「480DH」のアドレスには「20H」と「48H」の値
が格納されている。この2バイトのデータを16ビットのデータ(ただし、下位アドレス
側と上位アドレス側を入れ替える)として表現したデータ「4820H」は、図37のス
テップ3706で実行される特図普段処理の先頭アドレスに相当する。同様に、「480
EH」と「480FH」のアドレスに格納されるデータを16ビットで表現した「484
0H」は、図37のステップ3707で実行される特図変動中処理の先頭アドレスに相当
する。
以下、「4810H」以降に格納される16ビットの各データ「4860H」、「48
80H」、「48A0H」、‥‥は、図37のステップ3708、3709、3710、
‥‥で実行される、特図表示中処理、ファンファーレ・インターバル処理、大入賞口開放
処理、‥‥のそれぞれの先頭アドレスに相当する。このようにして、アドレス値480C
H〜4819Hの領域では、各処理の先頭アドレスが処理番号順に格納されることにより
、所定の分岐アドレステーブルを構成している。
行3801の命令は、HLレジスタ1212Aに、前述の分岐アドレステーブルの先頭
となるアドレス値「480CH」をロードするものである。次に、行3802の命令が実
行され、Aレジスタ1202Aにゲーム処理番号(図37の3705参照)がロードされ
る。次に、行3803の命令が実行され、Aレジスタ1202Aの値が2倍される。
次に、行3804によりAレジスタ1202Aの値がCレジスタ1205Aにロードさ
れ、行3805によりBレジスタ1204Aに「0」の値がロードされることで、BCレ
ジスタ1206AにAレジスタ1202Aの値が設定される。
次に、行3806によりHLレジスタ1212AにBCレジスタ1206Aの値が加算
される。これにより、HLレジスタ1212Aには、ゲーム処理番号に対応する処理の分
岐先のアドレスが設定される。最後に、行3807の「JP (HL)」命令を実行する
ことで、HLレジスタ1212Aが示すアドレスに、処理を移行させる。
ここで、行3801〜行3807の各命令と、遊技制御プログラムが格納されているユ
ーザプログラムROM103に記憶される列3722の各データとの関係について説明す
る。
遊技制御プログラムを記述するアセンブリ言語の命令は、図21及び図22で前述した
コードに変換されて、ユーザプログラムROM103に記憶されている。例えば、行38
01の「LD HL,480CH」の命令は、「4800H」〜「4803H」のアドレ
スに配置される「F5H」、「0CH」「48H」の値に変換されて、ユーザプログラム
ROM103に記憶されている。行3802〜行3807の各命令も、対応するコードに
変換されて、ユーザプログラムROM103の「4803H」〜「480BH」のアドレ
スに、順に記憶されている。
なお、行3808以降の記述は、特図普段処理、特図変動中処理、特図表示中処理、フ
ァンファーレ・インターバル処理、大入賞口開放処理、‥‥の先頭アドレスの値をプログ
ラム中に配置することを示しており、ユーザプログラムROM103の「480CH」以
降のアドレスに、対応するアドレスデータが設定されることによって、前述の分岐アドレ
ステーブルが構成されることになる。
このように、HLレジスタに所定の分岐アドレステーブルの先頭アドレス(「480C
H」)を設定し、処理番号(SEQNO)に応じてHLレジスタの値を更新することによ
って、処理番号に応じた処理を実行することができる。したがって、HLレジスタは、分
岐アドレス設定レジスタとして機能する。
なお、「JP (HL)」以外に、特定のレジスタが示す値をアドレスと見なして分岐
する命令が存在すれば、そのレジスタは分岐アドレス設定レジスタとして機能することに
なる。例えば、図21には図示していないが、IXレジスタ1231が示す値のアドレス
に処理を分岐させる命令「JP (IX)」を用いていれば、IXレジスタ1231は分
岐アドレス設定レジスタとして機能していることとなる。
また、「JP (HL)」命令を用いなくても、HLレジスタが示す値をアドレスと見
なして、そのアドレスに処理を分岐させるような方法は、他にもある。例えば、「PUS
H HL」命令を実行して、一旦スタック領域に706にHLレジスタの値を格納し、直
後に「RET」命令を実行すれば、スタック領域に706に格納してあったHLレジスタ
の値がプログラムカウンタ1234に格納される。その結果、HLレジスタが示す値のア
ドレスに処理を分岐させることができる。
このような方法を用いるのであれば、HLレジスタ1212A以外のレジスタを分岐ア
ドレス設定レジスタとして機能させることも可能である。例えば、DEレジスタ1209
Aをスタック領域に706に格納した直後に「RET」命令を実行すれば、DEレジスタ
1209Aが示す値のアドレスに分岐するので、この場合はDEレジスタ1209Aが分
岐アドレス設定レジスタとして機能することになる。
次に、図39を参照して、図37の特図ゲーム処理における始動口SW監視処理(37
00)の詳細を説明する。図39は、本発明の第1の実施の形態の始動口SW監視処理の
手順を示すフローチャートである。
始動口SW監視処理では、遊技制御装置100は、まず第1始動入賞があるか否かの判
定を行う(3900)。第1始動入賞口37への入賞があるか否かは、第1始動入賞口3
7への入賞があった場合に第1特図始動SW37Aから出力される遊技球の検出信号の有
無によって判定される。第1始動入賞がない場合には(3900の結果が「N」)、遊技
制御装置100はステップ3901の処理を実行する。これに対して、第1始動入賞があ
る場合には(3900の結果が「Y」)、遊技制御装置100は特図始動口SW共通処理
(3904)を実行し、始動口SW監視処理を終了する。なお、特図始動口SW共通処理
についての詳細は図40にて後述する。
遊技制御装置100は、普電作動中であるか否かを判定する(3901)。具体的には
、遊技制御装置100は、普電(普通電動役物)としての普通変動入賞装置33の開閉部
材が作動し、遊技球の入賞が可能な開状態となっているか否かを判定する。開閉部材が開
状態であって普電作動中である場合には(3901の結果が「Y」)、遊技制御装置10
0はステップ3903の処理を実行する。これに対して、開閉部材が閉状態であって普電
作動中でない場合には(3901の結果が「N」)、遊技制御装置100はステップ39
02の処理を実行する。
遊技制御装置100は、不正入賞エラーが発生したか否かを判定する(3902)。具
体的には、遊技制御装置100は、普通変動入賞装置33の開閉部材が閉状態である状態
で発生した不正な入賞があるか否かを判定する。なお、普通変動入賞装置33の開閉部材
が閉状態になった後の所定期間に検出された入賞は、不正入賞ではないと判定される。不
正入賞エラーが発生している場合には(3902の結果が「Y」)、遊技制御装置100
は始動口SW監視処理を終了する。これに対して、不正入賞エラーが発生していない場合
には(3902の結果が「N」)、遊技制御装置100はステップ3903の処理を実行
する。
遊技制御装置100は、第2始動入賞(普通変動入賞装置33の第2始動入賞口34へ
の入賞)があるか否かを判定する(3903)。普通変動入賞装置33の第2始動入賞口
34への入賞があるか否かは、第2始動入賞口34への入賞があった場合に第2特図始動
SW34Aから出力される遊技球の検出信号の有無によって判定される。第2始動入賞が
ない場合には(3903の結果が「N」)、遊技制御装置100は、始動口SW監視処理
を終了する。これに対して、第2始動入賞がある場合には(3903の結果が「Y」)、
遊技制御装置100は特図始動口SW共通処理(3904)を実行し、始動口SW監視処
理を終了する。
図40を参照して、図39の始動口SW監視処理における特図始動口SW共通処理(3
904)の詳細を説明する。図40は、本発明の第1の実施の形態の特図始動口SW共通
処理の手順を示すフローチャートである。
特図始動口SW共通処理では、遊技制御装置100は、まず対応する始動入賞フラグを
設定する処理を実行する(4000)。遊技制御装置100は、第1始動入賞口37と普
通変動入賞装置33の第2始動入賞口34のいずれの始動口への入賞により特図始動口S
W共通処理が開始されたかに基づき始動入賞フラグを設定する。始動入賞フラグとしては
、第1始動入賞口37への入賞により特図始動口SW共通処理が開始された場合は特図1
フラグが設定され、普通変動入賞装置33の第2始動入賞口34への入賞により特図始動
口SW共通処理が開始された場合は特図2フラグが設定される。以下の処理では、特図1
フラグが設定されていれば対応する処理として特図1始動記憶についての処理が行われ、
特図2フラグが設定されていれば対応する処理として特図2始動記憶についての処理が行
われる。
遊技制御装置100は、まず、遊技球が入賞した始動入賞口に対応するフラグを設定す
る(4000)。具体的には第1始動入賞口に遊技球が入賞した場合には第1始動入賞フ
ラグを設定し、第2始動入賞口に遊技球が入賞した場合には第2始動入賞フラグを設定す
る。
次に、遊技制御装置100は、対応する保留の数が上限(例えば4)であるか否かを判
定する(4001)。対応する保留の数とは、第1始動入賞口37に遊技球が入賞した場
合には第1特図保留カウンタの値が対象となり、第2始動入賞口34に遊技球が入賞した
場合には第2特図保留カウンタの値が対象となる(ともに図15参照)。
このとき、対応する保留の数が上限となっていて、これ以上対応する始動記憶を記憶で
きない場合には(4001の結果が「Y」)、遊技制御装置100は本処理を終了して始
動口SW監視処理を終了する。これに対して、対応する保留が上限でない場合には(40
01の結果が「N」)、遊技制御装置100は、対応する始動記憶数(即ち、第1特図保
留カウンタ又は第2特図保留カウンタのうち、入賞した始動口に対応する方)を1インク
リメントする処理を実行し(4002)、その後、ステップ4003の処理を実行する。
遊技制御装置100は、保留数情報を設定する処理を実行する(4003)。遊技制御
装置100は、対応する始動記憶数が1インクリメントされたことに基づき、始動記憶数
の情報である保留数情報を設定する。なお、保留数情報は、始動記憶に関する情報を含む
保留情報コマンド(図35参照)の一つとして後に演出制御装置150に送信されるよう
になっている。その後、遊技制御装置100は、対応する大当り判定用乱数を取得する処
理(4004)、対応する大当り図柄乱数を取得する処理(4005)、対応する特図変
動表示ゲームの変動パターン乱数を取得する処理(4006)を実行する。ここでは、図
15に示される、大当り乱数、大当り図柄乱数、第1〜第3変動パターン乱数の各生成領
域から、乱数値を取得する。
遊技制御装置100は、ステップ4004〜4006で取得した各種乱数値を用いて、
特図保留情報判定処理を実行する(4007)。この特図保留情報判定処理の詳細は、図
41を参照して後述する。
そして、遊技制御装置100は、対応する大当り判定用乱数を記憶する処理(4008
)、対応する大当り図柄乱数を記憶する処理(4009)、対応する変動パターン乱数を
記憶する処理を実行する(4010)。ここでは、遊技制御装置100は、ステップ40
04〜4006で取得した各種乱数値を、対応する乱数記憶領域に記憶する。
対応する乱数記憶領域とは、処理対象の始動口が第1始動入賞口37であれば、図16
で前述した、第1特図変動表示ゲームを実行するために必要な各種乱数の保存領域のうち
、第1特図保留カウンタに対応する領域が該当する。同様に、処理対象の始動口が第2始
動入賞口34であれば、図17で前述した、第2特図変動表示ゲームを実行するために必
要な各種乱数の保存領域のうち、第2特図保留カウンタに対応する領域が該当する。
例えば、第2始動入賞口34に遊技球が入賞した結果、ステップ4002の処理にて第
2特図保留カウンタが1インクリメントされて「3」となった場合は、図17における「
保留3の保存領域」に割り当てられた各種乱数の保存領域に、ステップ4004〜400
6で取得した各種乱数値を記憶することになる。
次いで、遊技制御装置100は、保留情報コマンドを設定する処理を実行し(4011
)、本処理を終了する。保留情報コマンドは、始動口への入賞によって更新された後の保
留数(第1特図保留カウンタ又は第2特図保留カウンタの値)を通知するコマンドであり
、直後に演出制御装置150に送信される(正確には、次回のタイマ割込処理(図29)
のコマンド送信処理(2912)が実行されるタイミングで送信される)ようになってい
る。
続いて、図41を参照して、図40の特図始動口SW共通処理における特図保留情報判
定処理(4007)の詳細を説明する。図41は、本発明の第1の実施の形態の特図保留
情報判定処理の手順を示すフローチャートである。
特図保留情報判定処理では、乱数記憶領域へ新たに始動記憶が記憶される際に、すなわ
ち、第1始動入賞口37や第2始動入賞口34(普通変動入賞装置33)に遊技球が入賞
したタイミングで、当該該始動記憶に対応する結果関連情報の判定が行われる。つまり、
特図保留情報判定処理では、新たに記憶された始動記憶に基づく特図変動表示ゲームの開
始タイミングより前に、当該始動記憶に対応した結果関連情報の判定を行う先読処理が行
われることになる。
特図保留情報判定処理では、遊技制御装置100は、まず特図2始動記憶についての処
理であるか否かを判定する(4100)。特図2始動記憶についての処理である場合には
(4100の結果が「Y」)、常に先読み処理を実行するため、遊技制御装置100はス
テップ4103の処理を実行する。
これに対して、特図2始動記憶についての処理でない場合(4100の結果が「N」)
、つまり、特図1始動記憶についての処理である場合には、遊技制御装置100は、普通
変動入賞装置33の作動状態が抑制状態であるか否かを判定する(4101)。普通変動
入賞装置33の作動状態が抑制状態でない場合には(4101の結果が「N」)、遊技制
御装置100は、特図1始動記憶に関連する先読み演出を実行することなく、特図保留情
報判定処理を終了する。
これに対して、普通変動入賞装置33が抑制状態である場合には、遊技制御装置100
は、大当り中であるか否かを判定する(4102)。遊技状態が特別遊技状態であって、
大当り中である場合には(4102の結果が「Y」)、遊技制御装置100は、特図1始
動記憶に対する先読み演出をせずに、特図保留情報判定処理を終了する。
これに対して、大当り中でない場合には(4102の結果が「N」)、遊技制御装置1
00は、始動記憶に対して大当り乱数が大当り判定値と一致するかを判定し、大当りであ
る場合には大当りの種類や変動パターンを決定する特図大当り判定処理を実行する(41
03)。なお、特図大当り判定処理についての詳細は、図42にて後述する。
遊技制御装置100は、ステップ4103の処理で一時的に記憶される大当り種類を特
定する情報及び変動パターンを特定する情報を用いて、変動前演出指定コマンドを設定す
る(4104)。変動前演出指定コマンドは、後述する図43及び図44の変動パターン
テーブルを用いて設定され、一旦、遊技制御装置100のRAM104に記憶される。そ
して、次回のタイマ割込処理(図29参照)が実行されて、変動前演出指定コマンドが遊
技制御装置100から演出制御装置150に送信されると、演出制御装置150の変動パ
ターン情報記憶領域に記憶される。
図42を参照して、図41の特図保留情報判定処理における特図大当り判定処理(41
03)の詳細を説明する。なお、後述の図46の特図1変動開始処理(特図2変動開始処
理)における特図大当り判定処理(4103)を実行する際にも、図42の処理が行われ
る。図42は、本発明の第1の実施の形態の特図大当り判定処理の手順を示すフローチャ
ートである。
特図大当り判定処理では、判定対象の始動記憶の大当り種類及び変動パターンを決定す
る処理が行われる。なお、図41の特図保留情報判定処理の特図大当り判定処理を実行す
る場合は、乱数記憶領域へ新たに記憶された始動記憶が判定対象となるが、図46の特図
1変動開始処理(特図2変動開始処理)の特図大当り判定処理を実行する場合は、変動開
始となる始動記憶が判定対象となる。すなわち、特図大当り判定処理は、複数の呼び出し
元から参照される共通モジュールとなっている。
遊技制御装置100は、まず、特図確変フラグはオンになっているか否かを判定する(
4200)。そして、特図確変フラグがオンの場合には(4200の結果が「Y」)、遊
技制御装置100は、確変状態における、すなわち特図確率が高確率時の大当り判定を実
行する(4201)。なお、特図確変フラグは、特図表示中処理(図37のステップ37
08)においてオン/オフに設定される。
特図確変フラグがオンでない場合には(4200の結果が「N」)、遊技制御装置10
0は、非確変状態、すなわち特図確率が低確率時の大当り判定を実行する(4202)。
次に、遊技制御装置100は、対応する始動記憶が大当りであるか否かを判定する(4
203)。すなわち、始動記憶の大当り乱数の値が、大当り判定値と一致するか否かを判
定する。
そして、大当りである場合には(4203の結果が「Y」)、遊技制御装置100は、
対応する始動記憶の大当り図柄乱数を用いて、確変大当りや通常大当りといった大当りの
種類を決定する(4204)。
これに対し、対応する始動記憶が大当りではない場合には、遊技制御装置100は、大
当りの種類が「はずれ」となったことをRWMに一時的に記憶する(4205)。
続いて、遊技制御装置100は、対応する始動記憶の特図変動表示ゲームが短時間変動
となる条件が成立しているか否かを判定する(4206)。ここでは、判定対象が特図2
変動表示ゲームの始動記憶である場合は、短時間変動となる条件が成立しているものと見
なされる。あるいは、判定対象が特図1変動表示ゲームの始動記憶であっても、当該判定
を行う時点における特図1変動表示ゲームの始動記憶数が上限数(ここでは4)となって
いるか、普通変動入賞装置33の作動状態が促進状態となっているかのいずれかの状態で
ある場合は、短時間変動となる条件が成立しているものと見なされる。
そして、短時間変動となる条件が成立する場合には(4206の結果が「Y」)、遊技
制御装置100は、対応する始動記憶の第1〜第3変動パターン乱数により短時間変動の
変動パターンを決定する(4207)。
これに対し、短時間変動となる条件が成立していない場合には(4206の結果が「N
」)、遊技制御装置100は、対応する始動記憶の第1〜第3変動パターン乱数により長
時間変動の変動パターンを決定する(4208)。なお、変動パターン決定の仕方の詳細
については図43及び図44にて後述する。
最後に、遊技制御装置100は、はずれを含む大当り種類を特定する情報と、変動パタ
ーンを特定する情報を一時的にRWMに記憶する(4209)。ここでは、特定する情報
とは、変動パターン番号である。その後、遊技制御装置100は、特図大当り判定処理を
終了する。
図43及び図44を参照して、図42の変動パターンの決定(ステップ4207及びス
テップ4208)やステップ4209における変動パターン番号の決定について説明する
。図43は、本発明の第1の実施の形態の後半変動パターンテーブルである。また、図4
4は、本発明の第1の実施の形態の前半変動パターンテーブルである。
図43(A)は、図42のステップ4203の処理において、対応する始動記憶が大当
りではないと判定された場合に選択されるテーブルであり、特図変動表示ゲームの後半の
変動パターンが決定される。
まず、対応する始動記憶の第1変動パターン乱数の値に応じて、グループ番号0〜2の
いずれかが選択される。ここで、グループ番号「0」は「リーチなし」、番号「1」は「
ノーマルリーチ」、番号「2」は「SPリーチ」を示す。「リーチなし」が選択される確
率は2701/3001、「ノーマルリーチ」が選択される確率は295/3001、「
SPリーチ」が選択される確率は5/3001である。
次に、対応する始動記憶の第2変動パターン乱数の値に応じて、後半変動パターン番号
01h〜23hのいずれかが選択される。ここで、後半変動パターン番号「01h」は「
リーチなし変動」で変動時間2秒を示す。後半変動パターン番号11h〜13hは「ノー
マルリーチ」変動であり、番号「11h」は変動時間9秒の「ノーマルリーチ短変動」、
番号「12h」は変動時間10秒の「ノーマルリーチ中変動」、番号「13h」は変動時
間11秒の「ノーマルリーチ長変動」を示す。また、後半変動パターン番号21h〜23
hは「SPリーチ」変動であり、番号「21h」は変動時間37秒の「SPリーチ短変動
」、番号「22h」は変動時間38秒の「SPリーチ中変動」、番号「23h」は変動時
間39秒の「SPリーチ長変動」を示す。
図43(B)は、図42のステップ4203において、対応する始動記憶が大当りであ
ると判定された場合に選択されるテーブルであり、特図変動表示ゲームの後半の変動パタ
ーンが決定される。ここでは、図43(A)と異なるところを説明する。
大当りが発生する場合は、後半変動パターンにおいてグループ番号「0」の「リーチな
し」が選択されることはない。「ノーマルリーチ」又は「SPリーチ」が選択される。「
ノーマルリーチ」が選択される確率は1501/3001、「SPリーチ」が選択される
確率は1500/3001である。
なお、「ノーマルリーチ」からさらに第2変動パターン乱数に応じて選択される後半変
動パターン番号は、51h〜53hとなるが、それぞれ11h〜13hに対応しており、
選択される確率も同じである。同様に、「SPリーチ」の後半変動パターン番号は、61
h〜63h(21h〜23hに対応)となる。
このように、変動パターンの決定には、まず、第1変動パターン乱数を用いて後半変動
のリーチ種類(なしを含む)を決定し、次に第2変動パターン乱数を用いて後半変動パタ
ーン(変動時間)を決定する。そして、後半変動パターンを示す後半変動パターン番号と
、第3変動パターン乱数とを用いて、前半変動パターンを決定する(図44参照)。
続いて、図44を参照して、前半変動パターンテーブルについて説明する。
図44では、後半変動パターン番号01h〜63h毎に設定された振分率に応じて、第
3変動パターン乱数を用いて前半変動パターンが決定される。
前半変動パターンには、「前半キャラクタA出現変動」と、「前半キャラクタB出現変
動」と、「前半キャラクタなし変動」の変動時間を短縮した「前半短縮変動」とがある。
それぞれの変動時間は、10秒、10秒、10秒、1秒に設定されている。
第1変動パターン乱数及び第2変動パターン乱数を用いた結果、後半変動パターンを「
ノーマルリーチ変動」とする決定がなされている場合には、第3変動パターン乱数の値が
0〜200の場合に「前半キャラクタA出現変動」を選択し、第3変動パターン乱数の値
が201〜205の場合に「前半キャラクタB出現変動」を選択し、第3変動パターン乱
数の値が206〜400の場合に「前半キャラクタなし変動」を選択する。
第1変動パターン乱数及び第2変動パターン乱数を用いた結果、後半変動パターンを「
SPリーチ変動」とする決定がなされている場合には、必ずキャラクタが出現するように
制御され、第3変動パターン乱数の値が0〜200の場合に「前半キャラクタA出現変動
」を選択し、第3変動パターン乱数の値が201〜400の場合に「前半キャラクタB出
現変動」を選択する。
第1変動パターン乱数及び第2変動パターン乱数を用いた結果、後半変動パターンを「
リーチなし変動」とする決定がなされている場合(後半変動パターン番号=01hの場合
)には、第3変動パターン乱数の値が0〜5のときに「前半キャラクタA出現変動」が選
択される。第3変動パターン乱数の値が6〜400の場合には、図42のステップ420
6における短時間変動の条件が成立しているときに「前半短縮変動」が選択され、この条
件が成立していないときは「前半キャラクタなし変動」が選択される。
本発明の第1の実施の形態では、後半変動パターン番号01hの「リーチなし変動」の
場合にのみ、「前半短縮変動」が設定されている。そして、「リーチなし変動」は、大当
りの種類が「はずれ」である場合に高い確率で選択される。また、「リーチなし変動」の
場合には「前半キャラクタなし変動」が選択される確率は低く、「前半短縮変動」又は「
前半キャラクタなし変動」が選択される確率が高い。
したがって、保留記憶数が多い場合ではずれのときは「リーチなし・前半短縮変動」が
選択される確率が高いので、全体の平均変動時間を短縮する。そして、保留記憶数が少な
い場合ではずれのときは「リーチなし・前半キャラクタなし変動」が選択される確率が高
くなっている。
これに対して、はずれのときは、リーチを伴う変動(「ノーマルリーチ変動」及び「S
Pリーチ変動」)や、リーチを伴わない「リーチなし・前半キャラクタA出現変動」が選
択される確率は低くなっている。なお、特図変動表示ゲームが大当りとなる確率は、低確
率時において1/301とし、高確率時において1/61とするものとする。
本実施形態では、リーチを伴なう変動(「ノーマルリーチ変動」及び「SPリーチ変動
」)や、「リーチなし・前半キャラクタA出現変動」を、保留記憶数の数に関係なく共通
の変動時間が設定された共通変動態様とする。これらの変動態様は、特図の大当り結果と
、第1〜第3変動パターン乱数とによって決定されるので、決定処理を行う時点における
保留記憶数の数に依存することなく決定されるものである。つまり、同一の保留記憶であ
れば、特図保留情報判定処理(図41)の特図大当り判定処理(4104)により決定さ
れる変動態様と、特図1(特図2)変動開始処理(図46)の特図大当り判定処理(46
06)による決定される変動態様とが一致する。
これに対して、「リーチなし・前半短縮変動」や「リーチなし・前半キャラクタなし変
動」は、保留記憶数の数に基づいていずれかが選択される変動パターンであるので、固有
変動態様とする。これらの変動態様は、特図の大当り結果と、第1〜第3変動パターン乱
数のみならず、決定処理を行う時点における保留記憶数の数に依存して決定されるもので
ある。つまり、同一の保留記憶であっても、特図保留情報判定処理(図41)の特図大当
り判定処理(4104)により決定される変動態様と、特図1(特図2)変動開始処理(
図46)の特図大当り判定処理(4606)により決定される変動態様とが一致するとは
限らない。ただし、前者の処理で決定された変動態様が固有変動態様であれば、後者の処
理で決定された変動態様も固有変動態様となるように設定されている。
なお、これらの前半変動パターンには、前半変動パターン番号が設けられているが、始
動入賞時及び変動開始時のどちらのタイミングで決定された前半変動パターンかによって
前半変動パターン番号が異なる。
本テーブルを用いる図42の特図大当り判定処理は、遊技球が第1始動入賞口37又は
普通変動入賞装置33の第2始動入賞口に入賞したときに実行される特図保留情報判定処
理(図41)で対象の始動記憶の結果を先読みするために実行され、さらに、後述する特
図1(特図2)変動開始処理(図46)でも実行される。
これは、始動入賞時と変動開始時とでは、保留記憶数が異なったり、遊技状態が異なっ
たりする。すなわち、始動入賞時と変動開始時とでは、図42の特図大当り判定処理にお
ける処理結果が異なる場合があり、選択される前半変動パターンも異なる場合がある。こ
のため、始動入賞時及び変動開始時のどちらの場合に決定した前半変動パターン番号かが
判別できるようにしている。
ここでは、始動入賞時に決定した前半変動パターン番号の頭文字を「A」とし、変動開
始時に決定した前半変動パターン番号の頭文字を「B」とする。そして、「前半キャラク
タA出現変動」の場合はE/Cに続く番号を「1h」とし、「前半キャラクタB出現変動
」の場合は「2h」とし、「前半キャラクタなし変動」の場合は「3h」とし、「前半短
縮変動」の場合は「4h」とする。このように、互いに共通するモジュールを用いる。
なお、図50で後述するが、本実施形態では、「前半キャラクタA出現変動」では「キ
ャラクタA」が出現し、「前半キャラクタB出現変動」では「キャラクタB」が出現する
ようになっている。
次に、図45を参照して、図37の特図ゲーム処理における特図普段処理(3706)
の詳細を説明する。図45は、本発明の第1の実施の形態の特図普段処理の手順を示すフ
ローチャートである。
特図普段処理では、遊技制御装置100は、まず、保留された特図2始動記憶があるか
否かを判定する(4500)。
特図2始動記憶がある場合には(4500の結果が「Y」)、遊技制御装置100は、
特図2変動開始処理を実行し(4501)、その後、図37に示した特図ゲーム処理で特
図変動中処理が実行されるように特図ゲーム処理番号を1に設定する(4504)。
さらに、遊技制御装置100は、特図2変動開始処理によって算出され、決定した前半
変動パターン及び後半変動パターンに対応する合計変動時間を特図ゲーム処理タイマに設
定する処理を実行する(ステップ4505)。その後、特図普段処理を終了する。なお、
ステップ4505の処理で変動時間が特図ゲーム処理タイマに設定されるので、変動時間
が経過するまでは、図37の特図変動中処理(3707)は実行されない。
一方、特図2始動記憶がない場合には(4500の結果が「N」)、遊技制御装置10
0は、保留された特図1始動記憶があるか否かを判定する(4502)。特図1始動記憶
がある場合には(4502の結果が「N」)、遊技制御装置100は、特図1変動開始処
理を実行する(4503)。その後、遊技制御装置100は、特図ゲーム処理番号を1に
設定する処理を実行する(4504)。さらに、特図1変動開始処理で算出され、決定し
た変動時間を特図ゲーム処理タイマに設定する処理を実行し(4505)、特図普段処理
を終了する。
特図1始動記憶がないと判定された場合には(4502の結果が「N」)、遊技制御装
置100は、客待ちデモフラグの設定があるか否かを判定する(4506)。客待ちデモ
フラグの設定がある場合には(4506の結果が「Y」)、遊技制御装置100は特図普
段処理を終了する。これに対して、客待ちデモフラグの設定がない場合には(4506の
結果が「N」)、遊技制御装置100は、客待ちデモフラグをセットする処理を実行する
(4507)。さらに、客待ちデモコマンドの設定を実行し(4508)、特図普段処理
を終了する。
なお、ステップ4507の処理でセットされた客待ちデモコマンドは、後に演出制御装
置150に送信される。演出制御装置150は、この客待ちデモコマンドの受信に基づき
、例えば表示装置8の表示部に客待ちデモ画像を表示する処理を実行する。
図45に示したように、本実施形態では、遊技制御装置100は、特図2始動記憶があ
る場合に当該特図2始動記憶に基づく特図2変動表示ゲームを、特図1始動記憶に基づく
特図1変動表示ゲームよりも優先的に実行する。
次に、図46を参照して、図45の特図普段処理における特図1/特図2変動開始処理
(ステップ4503、ステップ4501)の詳細を説明する。図46は、本発明の第1の
実施の形態の特図1/特図2変動開始処理の手順を示すフローチャートである。
まず、特図1変動開始処理では、遊技制御装置100は、第1特図変動表示ゲームに関
する各種乱数の保存領域(図16参照)のうち、次回の変動の対象となる領域、すなわち
保留1個目に対応する保留乱数記憶領域を指定する(4600)。次に、ステップ460
0の処理で指定した記憶領域から大当り乱数、大当り図柄乱数、第1〜第3変動パターン
乱数を取得した後、保留1〜3個目に対応する保留乱数記憶領域に、保留2〜4個目に対
応する保留乱数記憶領域(次回以降の変動に対応する記憶領域)の各乱数をシフトする(
4601)。そして、特図1の保留数を1減算し(4602)、ステップ4606以降の
処理を実行する。
次いで、遊技制御装置100は、ステップ4601の処理で取得した保留1個目の各種
乱数を用いて、図42に示した特図大当り判定処理を実行する(4606)。次に、図4
2の特図大当り判定処理のステップ4209の処理において一時的に記憶した情報を用い
て、演出制御装置150に送信する飾り図柄変動パターンコマンドを設定する(4607
)。飾り図柄変動パターンコマンドは、表示装置8で実行される飾り特図変動表示ゲーム
の内容を決めるコマンドである。
さらに、遊技制御装置100は、保留情報コマンドを設定する(4608)。前述した
ように、保留情報コマンドは特図1又は特図2の保留数を通知するコマンドであり、ここ
では、特図1又は特図2のうち、変動対象の特図の保留数を設定する。そして、ステップ
4609において図45の特図普段処理のステップ4505の処理で設定した、決定した
変動パターンに対応する変動時間を取得し(4609)、その後、特図1変動開始処理を
終了する。
同様に、特図2変動開始処理では、遊技制御装置100は、前述の特図1変動開始処理
のステップ4600〜4602の処理に対応してステップ4603〜4605の処理を実
行する。
遊技制御装置100は、第2特図変動表示ゲームに関する各種乱数の保存領域(図17
参照)のうち、次回の変動の対象となる領域、すなわち保留1個目に対応する保留乱数記
憶領域を指定する(4603)。次に、ステップ4603の処理で指定した記憶領域から
大当り乱数、大当り図柄乱数、第1〜第3変動パターン乱数を取得した後、保留1〜3個
目に対応する保留乱数記憶領域に、保留2〜4個目に対応する保留乱数記憶領域(次回以
降の変動に対応する記憶領域)の各乱数をシフトする(4604)。そして、特図2の保
留数を1減算して(4605)、ステップ4606以降の処理を実行する。
なお、ステップ4606では、ステップ4604の処理で取得した保留1個目の各種乱
数を用いて、図42に示した特図大当り判定処理を実行することになる。
このように、特図1又は特図2の変動が開始されるときにも特図大当り判定処理が実行
されることで、飾り特図変動表示ゲームの表示内容が決定される。
図47A及び図47Bは、本発明の第1の実施の形態における始動記憶をシフトさせる
処理のプログラムの一例を示す図である。図47A及び図47Bに示すプログラムは、図
46のステップ4601の処理に対応する。図47AはKレジスタを利用してプログラム
のコード量を削減したプログラムであって、図47BはKレジスタを利用しないプログラ
ムである。
図47Aを参照すると、まず、行4701に示すように、Kレジスタに「28H」を設
定し、その後、行4702に示すように、LDK命令によって指定された下位アドレスと
Kレジスタに設定された上位アドレスとを組み合わせたアドレスにアクセスする。このよ
うに、CPUコア102はKレジスタに固有の上位アドレスを設定する固有値設定手段を
なす。
前述のように、保留2に対応する始動記憶を保留1に対応する領域にシフトする場合に
は、図16に示したように、保留2に対応する始動記憶のアドレス「2838H」〜「2
83FH」に格納されたデータを、保留1に対応する始動記憶にアドレス「2830H」
〜「2837H」に移動させる。行4702では、アドレス2838Hに格納されたデー
タをAレジスタに格納し、行4703でAレジスタに格納されたデータをアドレス283
0Hに格納することによってデータを移動させている。同様に、「2839H」〜「28
3FH」に格納されたデータを、「2831H」〜「2837H」に移動させることによ
って保留2に対応する始動記憶を保留1に対応する領域にシフトさせる。
なお、保留3に対応する始動記憶を保留2に対応する始動記憶にシフトさせる処理、及
び保留4に対応する始動記憶を保留3に対応する始動記憶にシフトさせる処理も、図に示
すように、後半のプログラムによって実行される。
図47Bは、図47Aと同様に、始動記憶の消化にともなって、始動記憶をシフトさせ
る処理のプログラムを示しており、図47Aのプログラムを実行した場合と同じ処理が実
行される。しかしながら、図47Bに示すプログラムでは、2バイトのアドレスを直接指
定している(例えば、行4722の「2838H」)。
以上のように、図47Aに示すプログラムでは、始動記憶が格納された領域のアドレス
を指定するために1バイトの下位アドレスのみを指定すればよい(4710)。これに対
し、図47Bに示すプログラムでは、アドレスの指定に2バイトの容量を要し(4730
)、図47Aに示したプログラムよりも多くの容量を必要とする。したがって、始動記憶
を格納する領域のように、連続した領域にデータを格納し、これらのデータにアクセスす
る場合には、図47Aに示したプログラムのように、上位アドレスをKレジスタに予め保
持してデータにアクセスするようにすることによってプログラムの容量を削減することが
できる。
また、前述のように、Kレジスタ(上位アドレス指定レジスタ)に固有のアドレス値(
上位アドレス、例えば、「28H」)を予め設定しておくことによって、その後、下位ア
ドレスのみ指定すれば所定の領域にアクセスできるため、CPUコア(演算処理手段)1
02の処理負担を軽減することもできる。
図48は、本発明の第1の実施の形態のサブルーチン(サブモジュール)を構成するプ
ログラムの一例を示す図である。(A)及び(B)は、プログラム中に記述されたサブル
ーチン呼び出しの命令(CALL命令又はRST命令)を実行した際に呼び出されるサブ
ルーチンの一例を示している。これに対して(C)は、割込信号の発生により呼び出され
るサブルーチンの一例を示している。
まず(A)は、呼出元のルーチンで格納されたフラグレジスタの値が、呼出先のサブル
ーチンにおける処理過程で書き換えられないように構成したプログラムの例である。この
サブルーチンは、5200Hのアドレスから処理を開始する例となっており、最初に「P
USH FLG」の命令を実行することで、フラグレジスタの値をスタック領域に退避し
ている(行4811)。
なお、呼出元のルーチンで格納されたフラグレジスタ以外のレジスタであっても、サブ
ルーチン内で書き換えられないように構成する場合は、「PUSH」命令を用いて、該当
するレジスタをスタック領域に退避することができる。例えば、行4812に示すように
、「PUSH HL」の命令を実行することで、HLレジスタの値をスタック領域に退避
することができる。
そして、サブルーチンに記述された一連のプログラムを実行終了した場合は、「POP
」命令を実行して、スタック領域に退避しておいたHLレジスタ及びフラグレジスタの値
を復帰させてから(行4813、4814)、「RET」命令を実行して呼出元の処理に
戻るようになっている(行4815)。
一方(B)は、サブルーチンにおける処理過程にて演算結果をフラグレジスタに設定し
、そのフラグレジスタの値を呼出元のルーチンに返すプログラムの一例である。このサブ
ルーチンは、5100Hのアドレスから処理を開始する例となっており、(A)のように
「PUSH」「POP」命令を用いて、フラグレジスタの値をスタック領域に出し入れす
るような処理を行っていない。
そして、サブルーチンに記述された一連のプログラムを実行終了した場合は、Aレジス
タとEレジスタの値の論理和を演算することでフラグレジスタに演算結果が設定され(行
4821)、さらに、Dレジスタの値をAレジスタにロードしてから(行4822)、「
RET」命令を実行して呼出元に戻るようになっている(行4823)。
この(B)のようなサブルーチンの構成は、サブルーチン内で所定の演算を実行すると
ともに、その演算結果をフラグレジスタに格納し、さらに格納されたフラグレジスタの値
が呼出元のルーチンに戻されてからも活用されるような場合に適している。そのため、呼
び出されるサブルーチンのプログラムには、フラグレジスタの値をスタック領域に出し入
れする「PUSH」「POP」命令が記述されていない。
このようなサブルーチンの構成は、予め共通化した処理を遊技制御プログラムの様々な
箇所で実行させる場合に適しており、共通化した処理のブロックを予めサブルーチンとし
てプログラム中に配置しておいて、呼出元となるプログラムでCALL命令(又はRST
命令)を実行することで実現できる。
ただし、プログラム製作者の立場を考慮すると、(A)のようにサブルーチンで用いた
フラグレジスタと呼出元ルーチンで用いるフラグレジスタとを別個のものとして扱いたい
場合もあれば、(B)のようにサブルーチンで用いたフラグレジスタと呼出元ルーチンで
用いるフラグレジスタとを同一のものとして扱いたい場合もある。
そのため、サブルーチンを呼び出す目的に応じて、フラグレジスタの値を退避させるか
否かの選択を行う必要がある。従って、サブルーチンを構成するプログラムに「PUSH
」「POP」命令を記述するか否かによって、フラグレジスタをスタック領域に出し入れ
するか否かを選択できるように構成しておくことが好ましいことになる。
一方(C)は、タイマ割込などの割込信号で呼び出されるサブルーチン(割込処理)を
構成したプログラムの例である。このサブルーチンが呼び出されると、図19(D)に示
すように、「PUSH」命令を実行しなくてもフラグレジスタの値がスタック領域に退避
される。このとき、呼出元ルーチンで使用していたレジスタ群のバンクが0(表レジスタ
)であれば、フラグレジスタのRBSのビットは「0」となっている。
なお、このサブルーチンは、呼出元ルーチンで実行中の処理を任意のタイミングで中断
して実行されるため、呼び出されたサブルーチンで用いられるフラグレジスタの値と、呼
出元のルーチンで使用しているフラグレジスタの値には相関がない。そのため、呼出元の
ルーチンで使用しているフラグレジスタの値が、割込処理のサブルーチン内で変更される
と、処理結果が予期しないものとなる。
それ故に、割込処理のサブルーチンが呼び出されたときは、例外なくフラグレジスタの
値をスタック領域に退避させる必要がある。(C)の構成であれば、フラグレジスタの値
をスタック領域に退避させる「PUSH」命令のコードが不要となるので、割込処理のサ
ブルーチンを記述するプログラムのコード量を削減することができる。
ちなみに(C)の割込処理のサブルーチンは、5300Hのアドレスから処理を開始す
る例となっている。そして、行4831の「LD RBS,1」を実行すると、フラグレ
ジスタのRBSのビットが「1」となる。これにより、使用可能なレジスタ群が、呼出元
ルーチンで使用していたバンク0(表レジスタ)から、バンク1(裏レジスタ)に切り替
えられる。このとき、バンク0のレジスタ群の各レジスタに格納された値はそのまま保持
され、割込処理のサブルーチンでは、バンク1のレジスタ群のレジスタを用いて実行され
る。
さらに、割込処理のサブルーチンの最後で「RETI」を実行することによって、呼出
元の処理に戻るようになっている(行4832)。このとき、スタック領域に退避してあ
ったフラグレジスタの値が復帰することで、フラグレジスタのRBSのビットが「0」に
復帰し、以降使用されるレジスタ群のバンクが0に戻される。
なお(A)のサブルーチンにおいて、使用可能なレジスタ群をバンク1(裏レジスタ)
に切り替える場合は、行4811の「PUSH FLG」を実行した後に、「LD RB
S,1」の命令を実行すればよい。これにより、フラグレジスタのRBSのビットが「1
」となり、使用可能なレジスタ群が、呼出元ルーチンで使用していたバンク0(表レジス
タ)から、バンク1(裏レジスタ)に切り替わる。この場合は、行4814の「POP
FLG」を実行することで、フラグレジスタのRBSのビットを「0」に復帰させ、呼出
元の処理に戻る直前にレジスタ群のバンクを0に戻すことになる。
また(B)のサブルーチンにおいて、使用可能なレジスタ群をバンク1(裏レジスタ)
に切り替える場合は、プログラム中で「LD RBS,1」の命令を実行すればよいが、
呼出元ルーチンに戻る直前で「LD RBS,0」の命令を実行しておく必要がある。
以上、図48の(A)〜(C)に示したように、本実施形態では、呼出元のルーチンで
、プログラム中に記述されたサブルーチン呼び出しの命令(CALL命令又はRST命令
)を実行した場合や、割込信号が発生した場合には、サブルーチンが呼び出され、その際
に、呼出元のルーチンに含まれる戻りアドレスの値をスタック領域に格納する構成となっ
ている。
この場合において、割込信号は呼出元のルーチンの実行中のアドレスとは無関係に発生
するものであるので、(C)に示すような割込処理のサブルーチンを呼び出す際は、割込
信号が発生した時点におけるフラグレジスタ1200の値は、呼出先のルーチンの処理中
で破壊されないように、スタック領域に退避しておくことが好ましい。
そのため、図19の(D)に示すように、呼出元のルーチンに含まれる戻りアドレスの
値だけでなく、フラグレジスタ1200の値もスタック領域に格納して、呼出先の処理に
移行させる構成となっている。これにより、呼出先のルーチンのプログラム中にフラグレ
ジスタをスタック領域に格納するための命令(「PUSH FLG」)を記述しなくても
、フラグレジスタの値が自動的にスタック領域に格納されるため、プログラムのコード量
を節約することができる。
これに対して、呼出元のルーチンに記述されたCALL命令等の呼出の命令を実行する
場合は、(A)に示すように、呼出元のルーチンで設定されたフラグレジスタ1200の
値を呼出先のルーチンの処理中で破壊しないように構成すべき場合もある一方で、(B)
に示すように、呼出先のルーチンの処理中で設定されたフラグレジスタ1200の値を、
呼出元のルーチンに戻して演算に利用することもあり得る。つまり、呼出元のルーチンで
設定されたフラグレジスタ1200の値をスタック領域に退避すべきか否かはケースバイ
ケースである。
そのため、図19の(C)に示すように、呼出元のルーチンに含まれる戻りアドレスの
値のみを格納して、フラグレジスタ1200の値はスタック領域に格納しない状態で、呼
出先の処理に移行させる構成となっている。そして、呼出先のルーチンのプログラム中に
、プログラム中にフラグレジスタ1200の値をスタック領域に格納する命令(例えば、
「PUSH FLG」)を記述するか否かにより、値を退避するか否かが選択できる構成
となっている。
さらに、図48の(A)〜(C)に示したように、本実施形態では、汎用レジスタのバ
ンクを切り変える機能を有しているので、呼出先のルーチン内でバンクを切り替えること
により、呼出元とは異なるレジスタを活用することができる。
特に(C)に示した割込処理のサブルーチンでは、フラグレジスタの値を復帰させる命
令を実行しなくても、処理の最後で「RETI」を実行することによって、スタック領域
に退避してあったフラグレジスタの値が自動的に復帰する構成となっている。そのため、
サブルーチン内で、フラグレジスタの値を復帰させる命令を実行しなくても、呼出元ルー
チンに戻るときにバンクを戻すことが出来るので、よりプログラムのコード量を節約でき
るようになっている。
図49及び図50は、本発明の第1の実施の形態において、表示装置8で実行される飾
り特図変動表示ゲームの画面遷移を説明する図である。
画面(a)は変動開始前の状態を示し、始動記憶が消化されると、画面(b)に示すよ
うに、図柄表示領域4910にて各識別図柄が変動を開始する。なお、図柄表示領域49
10の下方には第1記憶表示部4920と第2記憶表示部4930とが設定される。これ
らの各記憶表示部には、保留記憶があることを示すマーク(通常の保留記憶表示)494
0と、保留記憶がないことを示すマーク4950が表示される。その後、画面(c)に示
すように、左図柄、右図柄の順に識別図柄の変動が停止され、最終的には中図柄の変動が
停止して、画面(d)に示すように変動停止した状態となる。
このとき、左図柄と右図柄が同一の図柄で停止した場合には、画面(e)に示すように
リーチ状態となり、その後、中図柄の変動が継続される。そして、変動表示ゲームの結果
がはずれの場合には、画面(f)に示すように、左右の識別図柄とは異なる図柄で中図柄
が停止する。また、変動表示ゲームの結果が大当りとなる場合には、画面(g)に示すよ
うに、左右の識別図柄と同じ識別図柄で中図柄が停止する。変動表示ゲームで大当りとな
ると、前述したように特別遊技状態に遷移し、遊技者は多くの遊技価値を得ることが可能
となる。
また、画面(e)で示したリーチは、通常のリーチであるが、画面(e)の代わり又は
画面(e)に示したリーチの後に、画面(h)に示すように、中図柄が回転して表示され
るスーパー(SP)リーチが発生する場合がある。SPリーチが発生する場合には、通常
のリーチと比較して変動表示ゲームの結果が大当りとなる確率が大きくなるように設定さ
れている。
また、画面(i)は、変動開始後の状態を示しているが、始動記憶のうちの一つに対し
て先読み報知が実行されている。具体的には、始動入賞時に設定された前半変動パターン
番号がキャラクタA又はキャラクタBが出現する前半変動を行うものであった場合に、先
読み報知が実行される。このとき、記憶表示部にて、通常の保留記憶表示4940とは表
示態様が異なる特定の保留記憶表示5010が表示されることで、先読みの報知が行われ
る。
その後、始動記憶が消化され(画面(j))、先読み報知がなされた始動記憶に基づく
変動表示ゲームが開始されると(画面(k))、キャラクタが出現する予告演出が実行さ
れる(画面(l)、画面(m))。
画面(l)ではキャラクタA(第1のキャラクタ)5020が出現し、画面(m)では
キャラクタB(第2のキャラクタ)5030が出現している。これらのキャラクタAとB
は、互いに表示態様が異なるものが好ましい。ただし、互いに表示態様が同じものであっ
ても、出現するキャラクタの大きさ、出現数、移動速度などをキャラクタAとBとで各々
異ならせるようにして、遊技者に各々が区別できるようにしているものであれば、特に限
定はされない。
本実施形態では、前半変動(一部の識別図柄の変動が停止してリーチ状態が発生する前
の状態)でキャラクタが出現するようになっている。その後、左右の識別図柄が停止し、
リーチ状態が発生する(画面(n))。このとき、スーパーリーチ若しくは通常のリーチ
が発生する。なお、このリーチ状態のときに、前述のキャラクタが出現するようにしても
よい。
なお、本実施形態では、入賞口SW監視処理(図29のステップ2917)において、
普図始動SW31Aによる遊技球の検出があったときに、普図乱数カウンタ値(図15の
普図乱数生成領域)の値を普図始動入賞記憶領域(図15)に記憶しているが、普図変動
表示ゲームに関する乱数であれば、別の乱数を記憶するようにしてもよい。例えば、乱数
生成回路608にて普図変動表示ゲームに関する乱数を生成(ハード乱数を生成)してお
き、普図始動SW31Aによる遊技球の検出があったときに、この生成した乱数を普図始
動入賞記憶領域(図15)に記憶するようにしてもよい。
また、本実施形態では、特図始動口SW共通処理(図40)のステップ4004〜40
06の処理において、図15に示される大当り乱数、大当り図柄乱数、第1〜第3変動パ
ターン乱数の各生成領域から乱数値を取得しているが、特図変動表示ゲームに関する乱数
であれば、別の乱数を取得するようにしてもよい。例えば、乱数生成回路608にて、大
当り乱数、大当り図柄乱数、第1〜第3変動パターン乱数の全部又は一部を生成(ハード
乱数を生成)しておき、ステップ4004〜4006の処理の実行時に、この生成した乱
数を取得するようにしてもよい。
ここで、本実施形態において、割込み処理が呼び出された場合に、スタック領域に、フ
ラグレジスタの値と、戻りアドレス値が格納される順序について説明する。
まず、図51Aは、本発明の第1の実施の形態とは対照的に、割込み処理が呼び出され
た場合に、先に戻りアドレス値をスタック領域に格納し、その後、フラグレジスタの値を
スタック領域に格納することを仮定した場合の図である。この図51Aの(A)〜(C)
により、割込み処理ルーチンの実行過程において、スタック領域に退避されたデータがど
のように変化するかを説明する。
なお、図51Aの「FLG」は1バイトのフラグレジスタの値を示している。また、「
ADR_H」は戻りアドレスの上位バイトの値を示し、「ADR_L」は戻りアドレスの
下位バイトの値を示しており、「ADR_H」と「ADR_L」を組み合わせることで、
2バイトの戻りアドレス値が構成される。
まず、図51Aの(A)は、割込み処理が発生して、戻りアドレス値及びフラグレジス
タの値が、スタック領域に格納された直後の状態である。次いで、割込み処理ルーチン内
で「PUSH」や「CALL」の命令が実行されると、図51Aの(B)に示すように、
スタック領域に別の退避データが蓄積される。
次いで、以降の割込み処理ルーチン内で「POP」命令等が実行されると、蓄積された
退避データが徐々に復帰し、割込み処理ルーチンの最後の段階になると図51Aの(A)
の状態に戻ることになる。そして、割込み処理ルーチンの最後で「RETI」命令を実行
すると、スタック領域から「FLG」の値がフラグレジスタに復帰して格納されるともに
、「ADR_H」と「ADR_L」の戻りアドレス値が復帰してプログラムカウンタに格
納されることで、割込信号が発生した時点に対応する呼出元ルーチンのアドレスに処理が
移り、以降の処理を継続することになる。
なお、「RETI」命令が実行されるまでは、この割込み処理ルーチンの実行中でのス
タックポインタの値は、フラグレジスタの値が格納されている領域のアドレス(図では2
9F9H)よりも、常に小さな値(2980H〜29F8H)の範囲で増減する。
ただし、割込み処理ルーチンのプログラムにバグ等があるときは、スタックポインタの
値が想定している範囲を外れてしまう恐れがある。例えば「POP」命令が、プログラム
開発者が意図している回数よりも1回だけ余分に実行されると、スタックポインタの値が
、フラグレジスタの値が格納されている領域のアドレス(29F9H)を一時的に指し示
してしまうことになる。そして、この状態で「PUSH」命令を1回だけ実行すると、2
9F9Hのアドレスに退避されている「FLG」の値に、別の値が上書きされてしまうこ
とになる。
このようなバグが存在する場合は、割込み処理ルーチンの最後で「RETI」命令を実
行する段階になったとき、図51Aの(C)に示すように、29FAH〜29FBHのア
ドレスに退避された「ADR_H」と「ADR_L」を書き換えることなく、29F9H
のアドレスに退避された「FLG」のみを異常な値に書き換えるという状態が発生する恐
れがある。
この場合、復帰後のフラグレジスタに格納される値が異常値になっているため、以降の
処理が正常に動作せずに障害が発生することが考えられる。しかしながら、プログラムカ
ウンタに復帰する戻りアドレス値(「ADR_H」と「ADR_L」)は正常な値である
ので、割込み処理ルーチンの最後で「RETI」命令を実行すると、プログラムが暴走す
ることなく呼出元のルーチンに戻って処理を継続することになる。
そのため、遊技機の開発期間中では、開発者がプログラム中のバグの存在に気づかない
可能性がある。仮に、障害の発生に気づいても、プログラムが暴走しない可能性が高いが
故に、障害の発生要因を特定することが困難になるおそれがある。
一方、図51Bは、本発明の第1の実施の形態と同様に、割込み処理が呼び出された場
合に、先にフラグレジスタの値をスタック領域に格納し、その後、戻りアドレス値をスタ
ック領域に格納した場合の図である。この図51Bの(A)〜(C)により、割込み処理
ルーチンの実行過程において、スタック領域に退避されたデータがどのように変化するか
を説明する。なお、図51Bの「FLG」、「ADR_H」、「ADR_L」も、図51
Aと同様の構成である。
まず、図51Bの(A)は、割込み処理が発生して、戻りアドレス値及びフラグレジス
タの値が、スタック領域に格納された直後の状態である。次いで、割込み処理ルーチン内
で「PUSH」や「CALL」の命令を実行すると、図51Bの(B)に示すように、ス
タック領域に別の退避データが蓄積される。
次いで、以降の割込み処理ルーチン内で「POP」命令等が実行されると、蓄積された
退避データが徐々に復帰し、割込み処理ルーチンの最後の段階になると図51Bの(A)
の状態に戻ることになる。そして、割込み処理ルーチンの最後で「RETI」命令を実行
すると、スタック領域から「FLG」の値がフラグレジスタに復帰して格納されるともに
、「ADR_H」と「ADR_L」の戻りアドレス値が復帰してプログラムカウンタに格
納されることで、割込信号が発生した時点に対応する呼出元ルーチンのアドレスに処理が
移り、以降の処理を継続することになる。
なお、「RETI」命令が実行されるまでは、この割込み処理ルーチンの実行中でのス
タックポインタの値は、戻りアドレス値が格納されている領域のアドレス(図では29F
9H)よりも、常に小さな値(2980H〜29F8H)の範囲で増減する。
このとき、前述の図51Aと同様に、割込み処理ルーチンのプログラムにバグ等がある
と、スタックポインタの値が想定している範囲を外れてしまう恐れがある。この場合、ス
タック領域に待避されている「ADR_L」、「ADR_H」、「FLG」などの値が別
の値が上書きされてしまう恐れがあり、割込み処理ルーチンの最後で「RETI」命令を
実行したときに、フラグレジスタの値が正常に復帰しなくなってしまう。
しかしながら、前述の図51Aとは異なり、図51Bの構成であれば、スタック領域に
退避された「ADR_H」と「ADR_L」の値を書き換えずに、スタック領域に退避さ
れた「FLG」のみを書き換えることは、あり得ない。その理由は、図51Bの(C)に
示すように、スタック領域へのデータの出し入れの順序に特徴があるが故に、「FLG」
が異常値に書き換えられるときには、その上方に待避されている「ADR_H」と「AD
R_L」の値も、書き換えられていると考えられるからである。
このようにして、割込み処理ルーチンの最後で図51Bの(C)の状態となり、この状
態で「RETI」命令を実行するすると、29F9H〜29FAHのアドレスに退避され
た異常なアドレス値がプログラムカウンタに格納されるので、呼出元のルーチンに戻れず
、プログラムが暴走することになる。
すなわち、本実施形態と同様の図51Bの構成であれば、復帰後のフラグレジスタに格
納される値が異常値になるような場合には、「RETI」命令実行後のプログラムカウン
タにも異常なアドレス値が必ず格納される。そのため、割込み処理ルーチンにバグがあれ
ば、遊技機の開発期間中にプログラムが暴走して、開発者が障害の発生に気づきやすい構
成となるのである。従って、図51Aの構成よりも、プログラムのバグが発見しやすい遊
技機を実現することが可能となる。
次に、本実施形態において、割込み処理が呼び出された場合にスタック領域に格納され
る、フラグレジスタの値のバイト数と、戻りアドレス値のバイト数との関係について説明
する。
まず、図51Cは、本発明の第1の実施の形態とは対照的に、フラグレジスタの値のバ
イト数と、戻りアドレス値のバイト数とを、ともに2バイトで構成することを仮定した場
合の図である。この図51Cの(A)〜(D)により、割込み処理の開始直後及び終了直
前におけるスタック領域内の退避データの状態と、CALL命令により呼び出されたサブ
ルーチンの開始直後及び終了直前におけるスタック領域内の退避データの状態について説
明する。
なお、図51Cの「FLG」は2バイトのフラグレジスタの値を示している。また、「
ADRW_H」と「ADRW_L」は、当該割込み処理の発生時に格納される戻りアドレ
ス値の上位バイトと下位バイトの値を示している。また、「ADR2_H」と「ADR2
_L」、及び「ADR1_H」と「ADR1_L」は、当該割込み処理が発生するよりも
前に格納されたアドレス値の上位バイトと下位バイトである。なお、「ADR3_H」と
「ADR3_L」は、割込み処理が発生することに替えて、CALL命令によるサブルー
チンが開始された場合に格納される戻りアドレス値の上位バイトと下位バイトの値を示し
ている。
まず、図51Cの(A)は、割込み処理が発生して、戻りアドレス値及びフラグレジス
タの値が、スタック領域に格納された直後の状態である。この割込み処理の最後のステッ
プにおいては、「RETI」命令が実行されることで、スタック領域から2バイトのフラ
グレジスタの値と、2バイトの戻りアドレス値が復帰する。なお、スタック領域へのデー
タの格納状況に対応してスタックポインタの値も増減するようになっており、「RETI
」命令実行後に呼出元の処理に復帰した際には、スタック領域は図51Cの(B)に示す
状態となっている。
一方、割込み処理が発生するのではなく、呼出元の処理でCALL命令を実行してサブ
ルーチンを呼び出した場合は、図51Cの(C)に示すように、戻りアドレス値のみがス
タック領域に格納され、フラグレジスタの値は格納されない。そして、このサブルーチン
の最後のステップにおいては、「RET」命令が実行されることで、スタック領域から2
バイトの戻りアドレス値のみが復帰する。なお、スタック領域へのデータの格納状況に対
応してスタックポインタの値も増減するようになっており、「RET」命令実行後に呼出
元の処理に復帰した際には、スタック領域は図51Cの(B)に示す状態となっている。
ただし、CALL命令で呼び出したサブルーチンのプログラムにバグがあり、サブルー
チンの最後で、「RET」命令の代わりに、誤って「RETI」命令を実行してしまった
場合は、図51Cの(C)に示す状態から「ADR3_H」と「ADR3_L」の値を戻
りアドレス値としてプログラムカウンタに復帰させるだけでなく、「ADR2_H」と「
ADR2_L」の値を2バイトのフラグレジスタの値と見なして復帰させてしまうことに
なる。そのため、「RETI」命令実行後に呼出元の処理に復帰した際には、スタック領
域は図51Cの(D)に示す状態となってしまう。
その後、呼出元の処理でさらに「RET」命令を実行すると、図51Cの(D)の状態
から、「ADR1_H」と「ADR1_L」の戻りアドレス値を取得して、プログラムカ
ウンタに復帰させ、そのアドレスに移行してしまうことになる。これは、呼出元の処理で
「RET」命令を実行した場合に取得されるべき本来の戻りアドレス値(図51Cの(B
)の「ADR2_H」と「ADR2_L」)とは異なるアドレスに、処理が移行すること
に相当する。
この場合、本来実行すべき処理とは異なる処理が行われるため、何らかの障害が発生す
るはずであるが、誤って取得した「ADR1_H」と「ADR1_L」の戻りアドレス値
は、プログラム上にアドレス値として使用されている値である。故に、プログラムが暴走
することなく呼出元のルーチンに戻って処理を継続することになる。
そのため、遊技機の開発期間中では、開発者がプログラム中のバグの存在に気づかない
可能性がある。仮に、障害の発生に気づいても、プログラムが暴走しない可能性が高いが
故に、障害の発生要因を特定することが困難になるおそれがある。
一方、図51Dは、本発明の第1の実施の形態と同様に、フラグレジスタの値のバイト
数と、戻りアドレス値のバイト数とを、異ならせて構成した場合の図である。この図51
Dの(A)〜(C)により、割込み処理の開始直後及び終了直前におけるスタック領域内
の退避データの状態と、CALL命令により呼び出されたサブルーチンの開始直後及び終
了直前におけるスタック領域内の退避データの状態について説明する。
なお、図51Dの「ADR1_H」、「ADR1_L」、「ADR2_H」、「ADR
2_L」「ADR3_H」、「ADR3_L」も、図51Cと同様の構成である。ただし
、図51Dの「FLG」が1バイトで構成されている点は、図51Cと異なっている。
まず、図51Dの(A)は、呼出元の処理でCALL命令を実行してサブルーチンを呼
び出した場合において、戻りアドレス値がスタック領域に格納された直後の状態である。
この場合は、戻りアドレス値のみがスタック領域に格納され、フラグレジスタの値は格納
されない。そして、このサブルーチンの最後のステップにおいては、「RET」命令が実
行されることで、スタック領域から2バイトの戻りアドレス値のみが復帰する。なお、ス
タック領域へのデータの格納状況に対応してスタックポインタの値も増減するようになっ
ており、「RET」命令実行後に呼出元の処理に復帰した際には、スタック領域は図51
Dの(B)に示す状態となっている。
ただし、CALL命令で呼び出したサブルーチンのプログラムにバグがあり、サブルー
チンの最後で、「RET」命令の代わりに、誤って「RETI」命令を実行してしまった
場合は、図51Dの(A)に示す状態から「ADR3_H」と「ADR3_L」の値を戻
りアドレス値としてプログラムカウンタに復帰させるだけでなく、「ADR2_L」の値
を1バイトのフラグレジスタの値と見なして復帰させてしまうことになる。そのため、「
RETI」命令実行後に呼出元の処理に復帰した際には、スタック領域は図51Dの(C
)に示す状態となってしまう。
その後、呼出元の処理でさらに「RET」命令を実行すると、図51Dの(C)の状態
から、「ADR1_L」と「ADR2_H」の値を戻りアドレス値として取得してプログ
ラムカウンタに格納し、さらにプログラムカウンタが示す場所へ移行してしまうことにな
る。これは、呼出元の処理で「RET」命令を実行した場合に取得されるべき本来の戻り
アドレス値(図51Dの(A)の「ADR2_H」と「ADR2_L」)とは異なるアド
レスに、処理が移行することに相当する。
この場合、誤って取得したアドレスのうち、「ADR2_H」がアドレスの下位バイト
と認識され、「ADR1_L」がアドレスの上位バイトと認識されるので、実際には正し
い組み合わせになっていないアドレスが生成されることになり、プログラム上にアドレス
値として使用されていないアドレス値になると考えられる。そのため、以降に「RET」
命令を実行したときに、プログラムカウンタには異常なアドレス値が格納されることにな
り、それ故にCPUが暴走する可能性が高くなる。そのため、割込み処理ルーチンにバグ
があれば、遊技機の開発期間中にプログラムが暴走して、開発者が障害の発生に気づきや
すい構成となるのである。従って、図51Cの構成よりも、プログラムのバグが発見しや
くい遊技機を実現することが可能となる。
以上のように構成することによって、フラグレジスタ及び戻りアドレスをスタック領域
に退避させる場合にノイズ等によってスタック領域に格納されたデータが書き換えられて
障害が発生した場合であっても、障害を早期に発見可能となるため、障害発生時の原因特
定が容易になり、開発効率を向上させることが可能となる。
ここで、本発明とは対照的な従来技術と本発明との対比を行う。
まず、特許文献Aとして特開2009−183500号公報に開示されるような遊技機
が知られており、この遊技機では、従来よりもプログラムコードを削減し、記憶手段の記
憶容量を削減するために、CPUからI/O空間を介してアクセス可能な記憶領域を少な
くとも有する記憶手段を備えている。
そして、この遊技機では、特許文献Aの段落[0137]〜[0142]に記載がある
ように、LD命令、IN命令、OUT命令を適宜使い分けることで、プログラム全体のス
テート数やプログラムコード量を削減している。
さらに、この遊技機では、特許文献Aの図13に記載があるように、指定したRAM領
域からレジスタにデータを格納するLD命令や、逆に、レジスタから指定したRAM領域
にデータを格納するLD命令を用いている。
具体的には、RAM領域の2810H番地のデータをAレジスタに格納するための「L
D A,(2810H)」、AレジスタのデータをRAM領域の2810H番地に格納す
るための「LD (2810H),A」、RAM領域の2810H番地のデータをHLレ
ジスタに格納するための「LD HL,(2810H)」、HLレジスタのデータをRA
M領域の2810H番地に格納するための「LD (2810H),HL」などが該当す
る。
これらの命令は、特許文献Aの図13にも記載があるが、3バイトのプログラムコード
量を要する命令である。なお、プログラムコードとは、任意の命令を、命令コード部(オ
ペコード部)とアドレス部(オペランド部)との組み合せを用いて所定バイト数の数値で
表現したものである。
命令コード部は、命令同士を識別するために必要なコードであり、例えば、「LD A
,(2810H)」のような、指定されたRAM領域のデータをAレジスタに格納するた
めのLD命令であれば、「3AH」などの1バイトの値が割り当てられている。一方、ア
ドレス部はRAM領域のアドレスを指定するためのコードであり、例えば、2810H番
地へのアクセスを指定する場合は、「28H」「10H」という2バイトの値がプログラ
ムにて設定される。
このようなLD命令は、遊技プログラムにて頻繁に使用されるものであるから、プログ
ラム全体のコード量を削減するためには、命令をできるだけ少ないバイト数で表現できる
ことが好ましいのは言うまでもない。しかしながら、RAM領域のアドレスを指定する際
には、アドレス部に少なくとも2バイトのコードを割り当てる必要がある上に、命令同士
を識別するための命令コード部のコードが少なくとも1バイト必要となるため、このよう
なLD命令を表現するためのプログラムコードは、2バイト以下に削減することは不可能
である。
そこで本発明は、上記のような問題点を解決するために、遊技制御プログラム全体のコ
ード量を削減することを目的としている。
例えば、本発明の第1の実施の形態によれば、上位アドレス指定レジスタを用いること
により、RAM(更新情報記憶手段)にアクセスするための命令を、少ないバイト数のコ
ードで実現することが可能となる。そのため、遊技制御プログラムに当該命令を用いるこ
とで、遊技制御プログラム全体のコード量を削減することが可能となる。
なお、上位アドレス指定レジスタ自体は1バイトのレジスタであるので、特定アドレス
の前後各128バイト(又は前後各127バイト)の範囲内からデータを取り出すことを
目的として、当該特定アドレスを指定するためにわざわざ2バイトのレジスタを用いるよ
うな方法と比較すると、アドレス指定のためのレジスタ構成が簡素化されている。
また、Kレジスタ(上位アドレス指定レジスタ)に固有のアドレス値(“28H”)を
設定すること(固有値設定手段)によって、リセット(起動)信号が発生した際に、CP
U(演算処理手段)によってKレジスタに固有のアドレス値を設定する処理を行う必要が
なくなる。したがって、リセット後、遊技制御プログラムでKレジスタに固有のアドレス
値を設定しなくても、RAMにデータを読み書きすることが可能となる。さらに、CPU
の処理負担が軽減され、遊技制御プログラムのコード量を削減することも可能となる。
また、RAMに記憶された情報の更新を規制するRAMアクセス規制回路を備え、所定
の起動信号が発生するとRAMアクセス規制回路によりRAMの更新禁止状態となり、そ
の後、CPUコアの動作が開始されてRAMの更新禁止状態が解除され、次いで、上位ア
ドレス指定レジスタにより指定されるアドレスに記憶された情報を用いて遊技制御が開始
されるので、誤ったタイミングでRAMの値が更新されることを防止できる。
さらに、本発明の第1の実施の形態によれば、始動記憶などを保持するワークエリアと
、スタック領域とが異なる上位アドレスとなる領域に保持されるため、乱数更新時などに
誤ってスタック領域に格納されたデータを更新することを防止することができるため、誤
動作を防ぐことができる。
特に、始動記憶を保持する領域(例えば、図16、図17、図53A、図53Bに例示
するような乱数記憶領域、あるいは図15に例示する普図乱数保存領域)は、変動表示ゲ
ームを開始する際に、格納されている乱数がシフトされることになるが、これらの領域の
上位アドレスはすべて同一(28H)になるように設定されているので、シフトの処理を
行う際に上位アドレス指定レジスタの値を変更する必要がなく、処理が簡素化される。
また、ワークエリアの下位アドレスが一致する領域であって、上位アドレスがスタック
領域と同じ領域を使用禁止領域に設定することによって、上位アドレスの値を間違ってい
る状態で始動記憶を更新しようするとCPUがリセットされ、誤作動を防止することがで
きる。
次に、特許文献Bとして特開平10−033804号公報に開示されるようなパチンコ
機が知られており、パチンコ機の制御装置のプログラムにおいては、遊技状態に対応して
異なる命令が実行されるように、プログラム内部で分岐の処理が行われている。この特許
文献Bでは、段落[0072]〜[0073]に記載があるように、プロセスフラグの値
に応じて制御を分岐させる処理がなされ、その分岐の際には、基本回路30のROMに記
憶されているプロセスジャンプテーブル(特許文献Bの図13)を参照して行なわれる。
一方、パチンコ機の制御装置などに用いられるCPUとして、特許文献Cとして特開平
11−232099号公報に開示されるZ80系のCPUが知られている。Z80系の命
令には、特許文献Cの段落[0020]に示されるような「JP(HL)」の命令が用意
されている。この命令は、HLレジスタに格納された値をアドレスと認識させて、そのア
ドレスで示されるプログラムの箇所に処理を分岐させるものである。なお、CPUが起動
した時点では、HLレジスタの値は不定な値が格納されている。
特許文献Bの従来技術の遊技機のプログラムにて分岐の処理を行う場合には、特許文献
CのCPUの「JP(HL)」が用いられることがあり、この場合、HLレジスタに分岐
先のアドレスの値を格納してから、「JP(HL)」の命令を実行する構成となる。
しかしながら、特許文献Bの従来技術の遊技機などは、ノイズ環境に晒されているため
に、CPUが暴走する危険を有している。特に、特許文献Cのような従来のCPUを用い
た場合は、遊技機の電源が投入されてCPUが起動を開始した直後では、HLレジスタの
値が不定な値であるために、誤ってプログラム中の「JP(HL)」命令が実行された場
合には、分岐先が不定なためにCPUが暴走するおそれがあった。
そこで、本発明は、上記のような問題点を解決するために、ノイズ環境でも正常にCP
Uを動作させることを目的としている。
例えば、本発明の第1の実施の形態によれば、固有値設定手段(図12の初期値設定回
路)を備えており、起動信号(リセット信号)が発生すると、固有値設定手段により分岐
アドレス設定レジスタに固有のアドレス値が設定されるので、遊技制御プログラム開始直
後にノイズ等が発生して、誤って特定の命令を実行してしまった場合であっても、固有の
アドレス値で示されるアドレスに処理を分岐させることができる。そのため、遊技制御プ
ログラム開始直後にノイズ等が発生しても、演算処理手段の暴走を防止することができる
すなわち、固有のアドレス値で示されるアドレス(例えば、遊技制御プログラムのリセ
ットアドレス)には、演算処理手段が暴走したときに実行すべきプログラムの命令(リセ
ット処理等の命令)が予め配置されているので、遊技制御プログラム開始直後にノイズ等
が発生しても対処することが可能となる。
また、本発明の第1の実施の形態では、分岐アドレス設定レジスタを用いて、特図変動
表示ゲームの制御状態(ゲーム処理番号に対応する各遊技状態)に対応した分岐処理を行
っているので、制御状態が順次切り替わっても、その都度、切り換えられた制御状態に対
応する分岐先の処理が行えるように、効率的な遊技制御プログラムが構成できるようにな
っている。なお、普図変動表示ゲームの制御状態に対応した分岐処理も、分岐アドレス設
定レジスタを用いて行うようにしてもよい。
さらに、本発明の第1の実施の形態によれば、電源投入時の際に、遊技制御プログラム
が開始される前に、初期値設定回路(固有値設定手段)1241によってCPUコア10
2に備えるスタックポインタに初期値がハード的に設定される。そのため、遊技制御プロ
グラムの実行が開始された直後にノイズ等が原因で割込処理が発生しても、呼出元のルー
チンの戻りアドレスをスタック領域に確実に格納することができ、割込処理から呼出元の
ルーチンに復帰する際にも問題なく処理を継続することができる。
また、分岐アドレス設定レジスタ(HLレジスタ)にリセットアドレス値が格納された
状態で、特定の命令(JP(HL))が実行された場合であっても、スタックポインタの
値を設定できる。
なお、遊技制御中に異常が発生して、リセット回路610B(セキュリティ回路630
)によりCPUコア102がリセットされるような場合であっても、CPUコア102の
処理がリセットアドレスに戻される。
この場合、初期値設定回路1241によってスタックポインタに初期値がハード的に設
定されなくても、リセットアドレスからの命令を実行した直後に、ソフトウェアによりス
タックポインタに初期値を設定する(図25の遊技制御装置メイン処理のステップ250
2A)ので、あらゆるリセット状態に対応してスタックポインタに初期値を設定すること
が可能となる。なお、同様の理由により、上位アドレス指定レジスタにもソフトウェアに
よって初期値を設定している(図25の遊技制御装置メイン処理のステップ2502B)
さらに、遊技制御プログラムは、呼出元のルーチンに記述されたCALL命令等の呼出
の命令が実行された場合(第1の呼出条件が成立した場合)や、呼出元のルーチンの命令
実行中に所定の割込信号が発生した場合(第2の呼出条件が成立した場合)には、呼出元
のルーチンに含まれる戻りアドレスの値をスタック領域に格納して、呼出先の処理に移行
するような構成となっている。
この場合において、後者の所定の割込信号は、呼出元のルーチンの実行中のアドレスと
は無関係に発生するものであるので、割込信号が発生した時点におけるフラグレジスタ1
200の値は、呼出先のルーチンの処理中で破壊されないように、スタック領域に退避し
ておくことが好ましい。
そこで、後者の第2の呼出条件が成立した場合は、図19の(D)に示すように、呼出
元のルーチンに含まれる戻りアドレスの値だけでなく、フラグレジスタ1200の値もス
タック領域に格納して、呼出先の処理に移行させている。そのため、後者の第2の呼出条
件が成立した場合には、呼出先のルーチンのプログラム中にフラグレジスタをスタック領
域に格納するための命令(「PUSH FLG」)を記述しなくても、フラグレジスタの
値が自動的にスタック領域に格納されるため、プログラムのコード量を節約することがで
きる。
これに対して、前者のように、呼出元のルーチンに記述されたCALL命令等の呼出の
命令を実行する場合は、呼出元のルーチンで設定されたフラグレジスタ1200の値を呼
出先のルーチンの処理中で破壊してはいけない場合もあるが、呼出先のルーチンの処理中
で設定されたフラグレジスタ1200の値を、呼出元のルーチンに戻して演算に利用する
こともあり得る。よって、呼出元のルーチンで設定されたフラグレジスタ1200の値を
スタック領域に退避すべきか否かはケースバイケースであることから、呼出先のルーチン
のプログラム中に、プログラム中にフラグレジスタ1200の値をスタック領域に格納す
る命令(例えば、「PUSH FLG」)を記述して、値を退避するか否かを決定したほ
うが都合が良い。
故に、前者の第1の呼出条件が成立した場合は、図19の(C)に示すように、呼出元
のルーチンに含まれる戻りアドレスの値はスタック領域に格納するものの、フラグレジス
タ1200の値を自動的にスタック領域に格納することはしない。
なお、図19の(D)及び図51Bに示すように、スタック領域には、先にフラグレジ
スタの値を格納して、後から戻りアドレスの値を設定しているので、戻りアドレスの値を
破壊することなくフラグレジスタの値のみを破壊するような事態は発生しない。そのため
、図51Aで例示した構成の遊技機のように、呼出先の割込処理ルーチンでフラグレジス
タの値が破壊された状態のまま、スムーズに呼出元のルーチンに戻って処理を継続してし
まうことはない。
また、図19の(D)及び図51Dに示すように、スタック領域に格納される戻りアド
レスの値は2バイト構成であるのに対して、スタック領域に格納されるフラグレジスタの
値は1バイト構成となっている。このように、スタック領域に格納される戻りアドレスと
フラグレジスタとのバイト数を異ならせることで、呼出先のルーチンで誤ってフラグレジ
スタの値を戻りアドレスとして復帰させた場合には、図51Cで例示した構成の遊技機の
ような不具合が発生することがなく、以降の処理では戻りアドレスの取得が不可能となる
ので、プログラムのバグ等を発見しやすい。
さらに、図21及び図48(C)に示すように、「LD RBS,1」の命令(又は「
LD RBS,0」の命令)を実行することによって、汎用レジスタのバンクを切り変え
る機能を有しているので、呼出先のルーチン内でバンクを切り替えることにより、呼出元
とは異なるレジスタを活用することができる。
なお、図14に示したように、第1の実施の形態では、ユーザワークRAM104にお
いて上位アドレスの境界、すなわち、上位アドレスが「28H」の領域と「29H」の領
域との境界を連続してアクセスすることが可能となっていたが、この境界に使用禁止領域
を設けるようにしてもよい。
さらに、特許文献Dとして特開2009−142566号公報に開示されるようなパチ
ンコ機が知られており、遊技機を制御するためのプログラムの容量削減を図るために、パ
チンコ機の主制御基板において、CPUからIOにアクセスするためのイン/アウトコマ
ンドが出力された時、エリア区分判定部が、アドレス値に応じて、アクセス先をIO、R
AMのいずれかに切り換え、その結果に応じてIO識別信号又はチップセレクタ信号をア
クティブにする構成が開示されている。
この特許文献Dの遊技機の構成では、イン/アウトコマンドを用いてRAMの一部(疑
似RAM領域)にアクセス可能となり、この時、RAMの先頭アドレスを含む連続領域に
ワーク及び疑似RAM領域を割り当てるとともに、終端アドレスを開始点としてアドレス
が小さくなる側に順次データが蓄積されるようにスタック領域を割り当てるように構成さ
れている。
一般に、スタックをRAMのどの領域に割り当てるかは、制御装置の設計者の裁量に任
せたほうが、設計の自由度が増すために都合が良い。そのため、CPUの起動時にはスタ
ックポインタの初期値は不定な値にしておき、CPUがプログラムの実行を開始した後に
、ソフトウェアによりスタックポインタの初期値を設定する構成が好ましい。従って、こ
の特許文献Dの遊技機においても、CPUの起動時のスタックポインタの初期値は、不定
な値となっているものと考えられる。
しかしながら、スタックポインタの初期値が不定な状態で、ノイズ等により割込み信号
が発生すると、不定な値で示された領域をスタック領域と見なしたままで、CPUが処理
を行ってしまうおそれがあった。この場合でも、CPUは、割込み処理ルーチンに処理を
移してしまうことになり、割込み処理ルーチンの最後にRETIなどの命令を実行しても
、その時点でスタックポインタが指し示している領域には戻りアドレスの値が格納されて
いる保障がないため、CPUが暴走するおそれもあった。その結果、想定外の大当り等が
発生するなどして正規な遊技を行えないおそれがあった。
そのため、ノイズ環境に晒されているパチンコ機等の遊技機では、スタック領域を設定
するための設計の自由度よりも、CPUが暴走しないように構成することを重視したほう
がよいという課題があった。
また、従来の遊技機においては、RAM領域内に割り当てられるスタック領域には、C
PUが遊技プログラム実行中に所定のサブモジュールを呼び出した際に、呼び出し元のモ
ジュールのアドレスの値が、戻りアドレス値として格納されるものがあった。そして、呼
び出し先のサブモジュールの実行後に、スタック領域に格納してあった戻りアドレスの値
をプログラムカウンタに戻すことで、CPUの処理が呼び出し元のモジュールに復帰する
ようになっていた。
例えば、特許文献E(特開2008−080004号公報)に開示された遊技機では、
特許文献Eの図22に示すように、RST命令を実行すると、呼び出し元のモジュールの
戻りアドレスの値をスタックに格納して、呼び出し先のサブモジュールに移行する。その
後、呼び出し先のサブモジュールの終了時にRET命令を実行することで、スタック領域
に格納されていた戻りアドレスの値をプログラムカウンタに戻し、呼び出し元のモジュー
ルに復帰する。なお、特許文献Eの段落[0148]に示すように、CALL命令を用い
ても同様の処理が行われる。
また、特許文献Eでは、従来よりも、プログラムのメンテナンス性および処理速度を維
持しつつ、不正改造抑制および不正改造発見容易性向上を実現するために、ROMの00
08H番地から000FH番地には、変動停止コマンド送信処理のプログラムを格納し、
ROMの0020H番地から0027H番地には、賞球数コマンド送信処理のプログラム
を格納するとともに、これらのプログラムをRST命令を用いて呼び出すようにしている
なお、特許文献EのようにRST命令やCALL命令を実行しなくても、タイマ割込等
の割込が発生した場合に、呼び出し元のモジュールの戻りアドレスの値をスタックに格納
して、呼び出し先のサブモジュール(タイマ割込みの処理モジュール)に移行する処理を
行う遊技機もある。
例えば、特許文献F(特開2001−212330号公報)に開示された遊技機では、
特許文献Fの段落[0071]〜[0073]に示すように、タイマ割込等の割込が発生
すると、呼び出し元のモジュールの戻りアドレスの値をスタックに格納して、呼び出し先
のサブモジュール(タイマ割込みの処理モジュール)に移行する。その後、呼び出し先の
サブモジュールの終了時にRETI命令を実行することで、スタックに格納してあった戻
りアドレスの値をプログラムカウンタに戻し、呼び出し元のモジュールに復帰する。
このようなタイマ割込みの処理を行うときは、特許文献G(特開2004−08947
6号公報)の図5や特許文献H(特開2006−068568号公報)の図6(c)に示
すように、処理の先頭にて、フラグレジスタの値をAFレジスタとしてスタックに格納す
ることが通常行われる。なお、このスタックに格納されたフラグレジスタの値は、特許文
献Gの図5に示されるように、タイマ割込みの処理を終了してRETI命令を実行する際
に元のフラグレジスタへ復帰するようになっている。
しかし、呼び出し元のモジュールで用いられていたレジスタの値が、呼び出し先のサブ
モジュールで変更されてしまうと、CPUの演算処理に支障をきたしてしまう。そのため
、従来の遊技機では、特許文献Gの図5のS11に示すように、処理の先頭でPUSH命
令を用いてレジスタの値をスタック領域に退避する処理が通常行われ、処理の最後でPO
P命令を用いてレジスタの値をスタック領域から復帰させる処理が行われる。このとき、
特許文献Hの図6(c)に示すように、スタック領域には、様々なレジスタの値が一時的
に格納される。そのため、呼び出し先のモジュール内にて、PUSH命令やPOP命令を
記述する必要があり、プログラム容量が増えてしまう要因となっていた。
このようなPUSH命令及びPOP命令を用いて、レジスタの値をスタックから出し入
れする処理は、特許文献Eに開示されたタイマ割り込みの処理に限らず、特許文献Dに示
したようなRST命令(あるいはCALL命令)を用いて呼び出されるサブモジュール内
でも、頻繁に行われている。そのため、このようなサブモジュール内にもPUSH命令や
POP命令を記述する必要があり、プログラム容量が増えてしまう要因となっていた。
なお、前者のタイマ割込みの処理では、フラグレジスタの値を無条件にスタックに格納
する必要があったのに対して、後者のRST命令(あるいはCALL命令)を用いて呼び
出されるサブモジュールの処理では、フラグレジスタを退避すべきか否かは、モジュール
の目的によって一意に定まっていなかった。そこで、このような条件を満たしつつも、プ
ログラム容量を削減するための工夫が必要とされていた。
次に、図52は、本発明の第1の実施の形態の変形例のユーザワークRAM104の一
例を示す図である。図52に示すユーザワークRAM104には、上位アドレスの境界(
RAMのアドレスが「28FFH」から「2900H」に変化する境界線を含んだ領域)
に使用禁止領域が設けられている。このように、上位アドレスが変化(「28H」から「
29H」に変化)する境界に使用禁止領域を設けることによって、上位アドレスを変更せ
ずに連続した領域にアクセスしようとすることなどを防ぐことが可能となり、誤作動を防
止することができる。
例えば、このような境界線の前後のエリアに、Aレジスタ1202Aの値を一括して格
納することを考える。この場合、上位アドレス指定レジスタであるKレジスタ1230の
値を「28H」に固定した状態で、「INC L」命令(図21参照)を実行してLレジ
スタ1211Aの値を増加させながら、「LDK (L),A」の命令(図21参照)を
実行させることになる。
このとき「INC L」命令の実行により、Lレジスタ1211Aの値が「FFH」か
ら「00H」に変化するタイミングがある。これは、Aレジスタ1202Aの値の格納先
が境界線を跨ぐタイミングであるが、正しい格納先を指定するためには、以降のKレジス
タ1230の値を「29H」に変更する必要がある。そのため、本来であれば、遊技プロ
グラムにてKレジスタ1230の値を「29H」に変更する命令を実行しなければならな
いが、プログラム製作者が見落としてしまうおそれがある。
なお、図52では、ワークエリアが、上位アドレスが「28H」と「29H」となる2
つの領域に分散して設定されているが、ワークエリアを上位アドレス「28H」の領域に
限定してもよい。この場合であっても、遊技制御装置100のCPU102は、初期化処
理を実行する際に、ユーザワークRAM104の全域(上位のアドレスが互いに異なる領
域、具体的には上位のアドレスが「28H」及び「29H」になる全ての領域)に対して
、データの読み書きを行うことになる。これは、ワークエリア以外の領域(例えば、スタ
ック領域など)でも、初期化を行う必要があるからである。
そして、初期化処理が完了した時点で、上位アドレス指定レジスタであるKレジスタ1
230の値が「28H」に設定され、以後、停電処理が発生するまでの間は、Kレジスタ
1230の値を「28H」に維持したまま、CPU102によって遊技制御を継続する。
このように構成することによって、Kレジスタに設定された値を変更する頻度を大幅に
低減させることができるので、レジスタの値を変更する処理の実行回数を削減することが
できる。したがって、プログラム容量をさらに削減することが可能となり、また、遊技制
御処理の高速化を期待できる。
(第2の実施の形態)
第1の実施の形態では、第2特図変動表示ゲームが第1特図変動表示ゲームよりも優先
して実行されるように構成されていたが、第2の実施の形態では、第2特図変動表示ゲー
ム及び第1特図変動表示ゲームの区別なく、入賞した順序で特図変動表示ゲームが実行さ
れる。
そこで、第1の実施の形態では、始動記憶に大当り乱数、大当り図柄乱数、変動パター
ン乱数が含まれていたが、第2の実施の形態では、さらに、第1始動入賞口37に遊技球
が入賞したか、第2始動入賞口34に遊技球が入賞したかを区別する、すなわち、実行さ
れる特図変動表示ゲームが第1特図変動表示ゲームであるか、又は、第2特図変動表示ゲ
ームであるかを区別するための特図識別bitが始動記憶に含まれる。また、始動記憶の
上限も実質的には8個となるので、ユーザワークRAM104において、8ブロック分の
乱数の保存領域を確保し、これを保留1〜保留8として割り当てるものとする。
図53A及び図53Bは、本発明の第2の実施の形態の特図変動表示ゲームを実行する
ために必要な各種乱数の保存領域を示す図であり、図53Aは保留1から4、図53Bは
保留5から8に対応する各種乱数の保存領域を示す。
本実施形態では、図53A及び図53Bに示すように、第3変動パターン乱数を格納す
る領域の先頭bitを特図識別bitとする。
なお、図40の特図始動口SW共通処理を実行する際に、ステップ4004〜4006
で取得した各種乱数値を、ステップ4008〜4010にて対応する乱数記憶領域に記さ
せることになるが、対応する領域が第1の実施の形態とは異なっている。第2の実施形態
においての対応する乱数記憶領域とは、第1特図保留カウンタと第2特図保留カウンタと
の合算値に対応する領域である。
例えば、第1始動入賞口37若しくは第2始動入賞口34に遊技球が入賞した結果、第
1特図保留カウンタと第2特図保留カウンタとの合算値が「2」となった場合は、図53
Aにおける「保留2の保存領域」に割り当てられた各種乱数の保存領域に、ステップ40
04〜4006で取得した各種乱数値を記憶することになる。このとき、第1始動入賞口
37への入賞であれば「保留2の保存領域」の特図識別bitには「0」が設定され、第
2始動入賞口34への入賞であれば「保留2の保存領域」の特図識別bitには「1」が
設定される。
同様に、第1始動入賞口37若しくは第2始動入賞口34に遊技球が入賞した結果、第
1特図保留カウンタと第2特図保留カウンタとの合算値が「7」となった場合は、図53
Bにおける「保留7の保存領域」に割り当てられた各種乱数の保存領域に、ステップ40
04〜4006で取得した各種乱数値を記憶することになる。このとき、第1始動入賞口
37への入賞であれば「保留7の保存領域」の特図識別bitには「0」が設定され、第
2始動入賞口34への入賞であれば「保留7の保存領域」の特図識別bitには「1」が
設定される。
図54は、本発明の第2の実施の形態の特図保留情報判定処理の手順を示すフローチャ
ートである。なお、第1の実施の形態の特図保留情報判定処理と共通の処理については、
図41と同じ符号を割り当てて記載を省略する。
本発明の第2の実施の形態では、遊技制御装置100は、特図1と特図2とを区別せず
に始動記憶を扱うので、第1の実施の形態におけるステップ4100〜ステップ4102
のような条件を設定せずに無条件で特図大当り判定処理(4103)を実行する。
図55は、本発明の第2の実施の形態の特図普段処理の手順を示すフローチャートであ
る。なお、第1の実施の形態と共通の処理については、図45と同じ符号を割り当てて記
載を省略する。
本発明の第2の実施の形態では、特図2始動記憶を優先して消化しない。そこで、まず
、遊技制御装置100は、特図1及び特図2の保留数を合計し(5500)、合計保留数
が0より大きいか否か、すなわち、特図1又は特図2の保留があるか否かを判定する(5
501)。そして、保留がある場合には、ステップ5502において次の保留が特図1の
保留であるか否かを判定する。そして、保留が特図1である場合には、特図1変動開始処
理(4503)を実行する。また、保留が特図1でなく特図2である場合には、特図2変
動開始処理(4504)を実行する。
なお、特図1変動開始処理と特図2変動開始処理のいずれの処理を行ったかにかかわら
ず、図46の処理において、遊技制御装置100は、図53Aの保留1の保存領域を、次
回の変動の対象として指定する(4600若しくは4603)。さらに、この指定された
記憶領域から大当り乱数、大当り図柄乱数、第1〜第3変動パターン乱数を取得した後、
保留1〜7個目に対応する保留乱数記憶領域(図53A及び図53B)に、保留2〜8個
目に対応する保留乱数記憶領域(次回以降の変動に対応する記憶領域:図53A及び図5
3B参照)の各乱数をシフトし(4601若しくは4604)、以降の処理(4602若
しくは4605)の処理を実行することになる。
一方、ステップ5501の処理で合計保留数が0の場合には、遊技制御装置100は、
ステップ4506以降の処理を実行する。
このように、本発明の第2の実施の形態によれば、第2特図変動表示ゲームを優先して
実行しない場合であっても、第1の実施の形態と同様に、遊技制御プログラム全体のコー
ド量を削減することが可能となる。
なお、今回開示した実施の形態における補助遊技は、例として、変動表示ゲームを開示
しているが、これに限定されるものではない。例えば、遊技の実行中に遊技者にボタン等
による選択操作をさせ、その操作入力に対応して遊技結果が導出されるような遊技も含ま
れる。あるいは、遊技の実行中に遊技球やメダルなどの遊技媒体が所定の領域に入賞する
か否かの物理的な抽選を行わせ、その抽選結果に対応して遊技結果が導出されるような遊
技も補助遊技に含まれる。この場合、遊技媒体が所定の領域に入賞することが「特別な結
果」となる。
また、今回開示した実施の形態における遊技機には、パチンコ機以外の様々な遊技機が
適用可能である。例えば、パチスロ機、アレンボール機、じゃん球遊技機などにも適用が
可能である。
なお、今回開示した実施の形態は、全ての点で例示であって制限的なものではない。ま
た、本発明の範囲は前述した発明の説明ではなくて特許請求の範囲によって示され、特許
請求の範囲と均等の意味及び内容の範囲での全ての変更が含まれることが意図される。
以上のように、本発明は、レジスタを備えたプロセッサを含む遊技制御装置が遊技制御
を行う遊技機に適用可能である。
1 遊技機
2 本体枠(外枠)
3 前面枠
5 遊技盤
6 遊技装置
8 表示装置
18 ガラス枠
31 普通図柄始動ゲート
32 一般入賞口
33 普通変動入賞装置
34 第2始動入賞口
36 特別変動入賞装置
37 第1始動入賞口
51 遊技領域
70 カードユニット
100 遊技制御装置
101 遊技用マイコン
102、601 CPUコア
103、602 ユーザプログラムROM
104、604 ユーザワークRAM
150 演出制御装置(表示制御装置)
160 電源装置
161 バックアップ電源
210 払出制御装置
600 遊技用演算処理装置(アミューズチップ)
603 HWパラメータROM
608 乱数生成回路
609 クロック生成回路
610A 割込制御回路
610B リセット回路
611 アドレスデコーダ
618 HPGプログラムROM
619 IDプロパティメモリ
621 HPGワークRAM
629 分周回路
630 セキュリティ回路
640 RAMアクセス規制回路(更新規制手段)
641 フリップフロップ回路
642 ORゲート回路
650 アドレスバス
660 データバス
702 ワークエリア
705 使用禁止領域(アクセス禁止領域)
706 スタック領域
1200 フラグレジスタ
1203A、1203B WAレジスタ
1206A、1206B BCレジスタ
1209A、1209B DEレジスタ
1212A、1212B HLレジスタ
1220A、1220B 汎用レジスタ群
1230 Kレジスタ
1233 スタックポインタ(SP)レジスタ
1234 プログラムカウンタ(PC)レジスタ
1240 内蔵リセット回路
1241 初期値設定回路(固有値設定手段)
1242 命令解釈実行回路
1243 アクセス回路
呼び出し元のモジュールで用いられていたレジスタの値が、呼び出し先のサブモジュールで変更されてしまうと、CPUの演算処理に支障を来たす。そのため、従来の遊技機では、呼び出し先のモジュール内にて、PUSH命令やPOP命令を記述する必要があり、プログラム容量が増えてしまう要因となっていた。
本発明は、上記のような問題点を解決するためになされたもので、遊技制御プログラムのコード量を削減することを目的とする。
本発明の代表的な一形態では、所定の始動条件の成立により遊技実行、該遊技が特別な結果となる場合に遊技者に特典を付与する特別遊技状態を発生させる遊技機において、前記特別遊技状態を発生させる制御を行う遊技制御装置を備えるとともに、前記遊技制御装置には、遊技制御プログラムを記憶する遊技制御プログラム記憶手段と、前記遊技制御プログラムにより所要の演算処理を行う演算処理手段と、前記演算処理を行う際にが記憶されるレジスタと、前記演算処理手段によって更新される情報が記憶される更新情報記憶手段と、を備え、前記更新情報記憶手段にはスタック領域が設定され、前記レジスタには、前記演算処理手段による演算結果を記憶するためのフラグレジスタが含まれ、前記遊技制御プログラムには、呼出元の処理が記述された呼出元ルーチンと、前記呼出元ルーチンに記述された命令の実行中において、所定の割込信号が発生した場合に呼び出される処理が記述された呼出先ルーチンと、が含まれ、前記演算処理手段は、前記呼出先ルーチンが呼び出された場合は、前記呼出元ルーチンに含まれる戻りアドレスの値と前記フラグレジスタの値の各々を前記スタック領域に格納した状態で、前記呼出先ルーチンの処理の実行を開始し、前記呼出元ルーチンは、前記遊技に関連する乱数を更新する更新処理と、停電に対処するための停電処理を開始するかを判定する判定処理と、を実行し、所定の停電信号が発生した場合は、前記更新処理と、前記呼出先ルーチンの処理と、を実行しない状態にして前記停電処理を実行するように構成されることを特徴とする。
本発明の一形態によれば、遊技制御プログラムのコード量を削減することができる

Claims (5)

  1. 遊技領域に発射された遊技球が所定の始動領域を通過することにより補助遊技が実行さ
    れ、該補助遊技が特別な結果となる場合に遊技者に特典を付与する特別遊技状態を発生さ
    せる遊技機において、
    前記特別遊技状態を発生させる制御を行う遊技制御装置を備えるとともに、
    前記遊技制御装置には、
    遊技制御プログラムを記憶する遊技制御プログラム記憶手段と、
    前記遊技制御プログラムにより所要の演算処理を行う演算処理手段と、
    前記演算処理を行う際にデータが記憶されるレジスタと、
    前記演算処理手段によって更新される情報が記憶される更新情報記憶手段と、
    を備え、
    前記更新情報記憶手段にはスタック領域が設定され、
    前記レジスタには、前記演算処理手段による演算結果を記憶するためのフラグレジスタ
    が含まれ、
    前記遊技制御プログラムには、
    呼出元の処理が記述された呼出元ルーチンと、
    前記呼出元ルーチンに記述された呼出の命令が実行された場合に呼び出される処理が記
    述された第1の呼出先ルーチンと、
    前記呼出元ルーチンに記述された命令の実行中において、所定の割込信号が発生した場
    合に呼び出される処理が記述された第2の呼出先ルーチンと、が含まれ、
    前記演算処理手段は、
    前記第1の呼出先ルーチンが呼び出された場合は、前記呼出元ルーチンに含まれる戻り
    アドレスの値を前記スタック領域に格納し、且つ前記フラグレジスタの値を前記スタック
    領域に格納しない状態で、前記第1の呼出先ルーチンの処理の実行を開始する一方で、
    前記第2の呼出先ルーチンが呼び出された場合は、前記呼出元ルーチンに含まれる戻り
    アドレスの値と前記フラグレジスタの値の各々を前記スタック領域に格納した状態で、前
    記第2の呼出先ルーチンの処理の実行を開始することを特徴とする遊技機。
  2. 前記演算処理手段は、前記第2の呼出先ルーチンが呼び出された場合は、前記フラグレ
    ジスタの値を前記スタック領域に格納した後に、前記呼出元ルーチンに含まれる戻りアド
    レスの値を前記スタック領域に格納することを特徴とする請求項1に記載の遊技機。
  3. 前記フラグレジスタの容量は、前記戻りアドレスを格納するために必要な容量と異なる
    ことを特徴とする請求項2に記載の遊技機。
  4. 前記レジスタは、第1のレジスタと前記第1のレジスタと同じ構成を有する第2のレジ
    スタを含み、
    前記演算処理手段は、
    前記第1のレジスタ及び前記第2のレジスタのいずれか一方にアクセスし、
    アクセス可能なレジスタを切り替えるバンク切替手段を備えることを特徴とする請求項
    3に記載の遊技機。
  5. 前記第2の呼出先ルーチンには、前記補助遊技に関連する乱数及びタイマを更新する処
    理が含まれることを特徴とする請求項4に記載の遊技機。
JP2015185002A 2015-09-18 2015-09-18 遊技機 Active JP6353421B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015185002A JP6353421B2 (ja) 2015-09-18 2015-09-18 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015185002A JP6353421B2 (ja) 2015-09-18 2015-09-18 遊技機

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012107588A Division JP5814856B2 (ja) 2012-05-09 2012-05-09 遊技機

Publications (2)

Publication Number Publication Date
JP2016026644A true JP2016026644A (ja) 2016-02-18
JP6353421B2 JP6353421B2 (ja) 2018-07-04

Family

ID=55352301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015185002A Active JP6353421B2 (ja) 2015-09-18 2015-09-18 遊技機

Country Status (1)

Country Link
JP (1) JP6353421B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH056281A (ja) * 1990-10-04 1993-01-14 Nec Corp 情報処理装置
JPH0628188A (ja) * 1992-01-17 1994-02-04 Murata Mach Ltd サブルーチン分岐処理方法
JP2011048619A (ja) * 2009-08-27 2011-03-10 Toshiba Corp プロセッサ
JP2011172654A (ja) * 2010-02-23 2011-09-08 Sophia Co Ltd 遊技機
JP4897100B1 (ja) * 2011-04-19 2012-03-14 株式会社大都技研 遊技台

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH056281A (ja) * 1990-10-04 1993-01-14 Nec Corp 情報処理装置
JPH0628188A (ja) * 1992-01-17 1994-02-04 Murata Mach Ltd サブルーチン分岐処理方法
JP2011048619A (ja) * 2009-08-27 2011-03-10 Toshiba Corp プロセッサ
JP2011172654A (ja) * 2010-02-23 2011-09-08 Sophia Co Ltd 遊技機
JP4897100B1 (ja) * 2011-04-19 2012-03-14 株式会社大都技研 遊技台

Also Published As

Publication number Publication date
JP6353421B2 (ja) 2018-07-04

Similar Documents

Publication Publication Date Title
JP6060364B2 (ja) 遊技機
JP2013233286A (ja) 遊技機
JP5820333B2 (ja) 遊技機
JP2016209696A (ja) 遊技機
JP6142161B2 (ja) 遊技機
JP6060366B2 (ja) 遊技機
JP6060365B2 (ja) 遊技機
JP6060363B2 (ja) 遊技機
JP2013233290A (ja) 遊技機
JP6240886B2 (ja) 遊技機
JP6240885B2 (ja) 遊技機
JP6240857B2 (ja) 遊技機
JP6149201B2 (ja) 遊技機
JP6149200B2 (ja) 遊技機
JP6149199B2 (ja) 遊技機
JP6074581B2 (ja) 遊技機
JP6353421B2 (ja) 遊技機
JP6348995B2 (ja) 遊技機
JP6142160B2 (ja) 遊技機
JP6060367B2 (ja) 遊技機
JP6200053B2 (ja) 遊技機
JP6152547B2 (ja) 遊技機
JP5942160B2 (ja) 遊技機
JP5942159B2 (ja) 遊技機
JP2013233299A (ja) 遊技機

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161101

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20161214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170720

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170727

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20170922

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180419

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180608

R150 Certificate of patent or registration of utility model

Ref document number: 6353421

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