特許第6283834号(P6283834)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KPE株式会社の特許一覧

<>
  • 特許6283834-遊技機 図000002
  • 特許6283834-遊技機 図000003
  • 特許6283834-遊技機 図000004
  • 特許6283834-遊技機 図000005
  • 特許6283834-遊技機 図000006
  • 特許6283834-遊技機 図000007
  • 特許6283834-遊技機 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6283834
(24)【登録日】2018年2月9日
(45)【発行日】2018年2月28日
(54)【発明の名称】遊技機
(51)【国際特許分類】
   A63F 5/04 20060101AFI20180215BHJP
【FI】
   A63F5/04 512Z
【請求項の数】1
【全頁数】17
(21)【出願番号】特願2015-139644(P2015-139644)
(22)【出願日】2015年7月13日
(65)【公開番号】特開2017-18410(P2017-18410A)
(43)【公開日】2017年1月26日
【審査請求日】2017年3月9日
【早期審査対象出願】
(73)【特許権者】
【識別番号】501016847
【氏名又は名称】KPE株式会社
(72)【発明者】
【氏名】中川 栄治
(72)【発明者】
【氏名】谷内田 実紀
(72)【発明者】
【氏名】山下 和之
(72)【発明者】
【氏名】石渡 健大
【審査官】 高木 亨
(56)【参考文献】
【文献】 特開2016−087257(JP,A)
【文献】 特開2009−136408(JP,A)
【文献】 特開2014−161423(JP,A)
【文献】 特開2002−000878(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 5/04
A63F 7/02
(57)【特許請求の範囲】
【請求項1】
不揮発性データが記憶されたROMと、
該ROMに記憶されたプログラムに基づく演算処理を実行するCPUと、
該CPUが演算処理を実行する際に必要な作業領域として機能し、揮発性データが記憶されるRAMと、
を備えた遊技機において、
前記プログラムは、メインルーチンを含む遊技制御プログラムと、前記遊技制御プログラムから呼び出される複数のサブルーチンを含む遊技制御に直接関連のない補助プログラムとから構成され、
前記ROMには、前記遊技制御プログラムを構成するコードデータと当該遊技制御プログラムから参照するデータとを記憶する第1ROM領域と、前記補助プログラムを構成するコードデータと当該補助プログラムから参照するデータとを記憶する第2ROM領域とが、それぞれ個別に設けられ
前記RAMには、前記CPUによって前記遊技制御プログラムに基づき実行される演算処理に用いるデータを記憶する第1RAM領域と、前記CPUによって前記補助プログラムに基づき実行される演算処理に用いるデータを記憶する第2RAM領域とが、それぞれ個別に設けられるとともに、前記第1RAM領域及び第2RAM領域はそれぞれ、スタック領域を含み、
前記遊技制御プログラムには、前記第2RAM領域に記憶されたデータを更新する処理を含まず、且つ、前記補助プログラムには、前記第1RAM領域に記憶されたデータを更新する処理を含ま
前記遊技制御プログラムから呼び出される、前記補助プログラムに含まれるサブルーチンでは、
前記遊技制御プログラムから呼び出された際に、LD命令によって現在のスタックポインタを第2RAM領域内の所定アドレスに退避する第1処理、LD命令によって第2RAM領域内のスタック領域の先頭アドレスをスタックポインタに設定する第2処理、及び前記遊技制御プログラムで使用する全レジスタの値を前記第2RAM領域内のスタック領域に退避するレジスタ退避処理をこの順に実行するとともに、
呼び出し元の前記遊技制御プログラムにリターンする際に、前記レジスタ退避処理にて退避した全レジスタの値を前記第2RAM領域内のスタック領域から復帰するレジスタ復帰処理の実行後、LD命令によって前記第2処理にて前記所定アドレスに退避した値をスタックポインタに復帰させる第3処理を実行し、
前記全レジスタには、LD命令の実行結果がゼロである場合にも1がセットされる特定フラグを含むフラグレジスタを含み、
前記遊技制御プログラムでは前記フラグレジスタに対応する補助レジスタを使用せず、
前記遊技制御プログラムから呼び出される、前記補助プログラムに含まれるサブルーチンでは、
前記第1処理の実行前、及び前記第2処理の実行後にそれぞれ、前記フラグレジスタの値と、該フラグレジスタに対応する補助レジスタの値とを交換するEX命令を実行した後、前記レジスタ退避処理を実行するとともに、
前記レジスタ復帰処理の実行後で且つ前記第3処理の実行前、及び前記第3処理の実行後にそれぞれ、前記フラグレジスタの値と、該フラグレジスタに対応する補助レジスタの値とを交換するEX命令を実行する、
ことを特徴とする遊技機。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スロットマシンやパチンコ機などの遊技機に関する。
【背景技術】
【0002】
遊技機は、検査機関での検査に適合しないと、パチンコホールに設置することができない。
検査機関での検査の効率化のため、遊技機の制御に係る主制御プログラムは、Z80ベースのアセンブラ言語での記述が義務付けられており、プログラム領域、並びにデータ領域の容量にも一定の制限が課されている。
従来から、遊技機に対する新たなゴト行為が発覚するたびに、主制御プログラムに対策が講じられており(例えば、特許文献1参照)、対策プログラムの容量増大によって、上記一定の容量制限下では、新たなゴト行為に対する対策プログラムの実装が困難となってきている。例えば、特許文献2に記載の如く、データ領域のみならず、プログラム領域の容量削減策も講じられてきたが、容量不足は深刻で、もはや限界に達しつつある。
【0003】
そこで、上記のゴト対策プログラムや、上記検査機関での検査のための信号出力プログラム等、遊技制御に直接関係のないプログラム(以下、補助プログラムという)に限って、上記一定の制限の領域外に記憶することが検討されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4548856号公報
【特許文献2】特許第4537463号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、単に、一定の制限の領域内に相当する第1の領域に遊技制御を司る遊技制御プログラム、前記第1の領域外である第2の領域に前記補助プログラムを記憶しただけでは、プログラム容量の拡大に他ならず、検査機関での検査負担の増大、並びに検査期間の長期化を招く虞がある。
検査機関での検査の主体は、遊技制御プログラムであるため、補助プログラムの検査にかかる負担及び時間ができるだけ軽微となるように構成するのが望ましい。
そこで、本発明の目的は、一定の容量制限が課された遊技制御プログラムを第1の領域、その他の補助プログラムを第2の領域に配置したとしても、検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る遊技機を提供することである。
【課題を解決するための手段】
【0006】
本発明の遊技機は、不揮発性データが記憶されたROM104と、該ROM104に記憶されたプログラムに基づく演算処理を実行するCPU101と、該CPU101が演算処理を実行する際に必要な作業領域として機能し、揮発性データが記憶されるRAM105と、を備えている。
前記プログラムは、メインルーチンを含む遊技制御プログラムと、前記遊技制御プログラムから呼び出される複数のサブルーチンを含む遊技制御に直接関連のない補助プログラムとから構成され、前記ROM104には、前記遊技制御プログラムを構成するコードデータと当該遊技制御プログラムから参照するデータとを記憶する第1ROM領域(第1プログラム領域PG1_AREA及び第1データ領域PG1_DATA_AREA)と、前記補助プログラムを構成するコードデータと当該補助プログラムから参照するデータとを記憶する第2ROM領域(第2プログラム領域PG2_AREA及び第2データ領域PG2_DATA_AREA)とが、それぞれ個別に設けられている。
また、前記プログラムは、前記遊技制御プログラムから前記補助プログラムに含まれる1のサブルーチンを呼び出す際に、前記遊技制御プログラムで使用する全レジスタの値を前記RAMのスタック領域に退避するレジスタ退避処理(図6のST601、図7のST701〜705)と、前記1のサブルーチンから呼び出し元の前記遊技制御プログラムにリターンする際に、前記レジスタ退避処理にて退避した全レジスタの値を前記RAMのスタック領域から復帰するレジスタ復帰処理(図6のST603、図7のST706〜709)とを含む、ことを特徴としている。
【0007】
上記本発明の遊技機によれば、プログラムに、遊技制御プログラムから補助プログラムに含まれる1のサブルーチンを呼び出す際に、遊技制御プログラムで使用する全レジスタの値を前記RAMのスタック領域に退避するレジスタ退避処理と、前記1のサブルーチンから呼び出し元の遊技制御プログラムにリターンする際に、前記レジスタ退避処理にて退避した全レジスタの値を前記RAMのスタック領域から復帰するレジスタ復帰処理を含むため、補助プログラム側のサブルーチンの処理によってレジスタの値が変化したとしても、当該サブルーチンからのリターンの際に、当該サブルーチン呼び出し前の値に復帰することになる。このため、サブルーチン側でのレジスタ値の変化を考慮することなく、遊技機制御プログラムの検査が可能となるので、検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【0008】
具体的構成として、前記補助プログラムに含まれる複数のサブルーチンのうち、前記遊技制御プログラムから呼び出される各サブルーチンに、前記レジスタ退避処理並びに前記レジスタ復帰処理を含む(図7参照)。
【0009】
該具体的構成によれば、前記レジスタ退避処理並びに前記レジスタ復帰処理を遊技制御プログラム側で実行する構成に比べて、容量制限が課されている遊技制御プログラム側の容量増加を抑制することが出来る。
【0010】
また、具体的構成として、前記RAM105には、前記CPU101によって前記遊技制御プログラムに基づき実行される演算処理に用いるデータを記憶する第1RAM領域(第1ワーク領域WORK1_AREA)と、前記CPUによって前記補助プログラムに基づき実行される演算処理に用いるデータを記憶する第2RAM領域(第2ワーク領域WORK2_AREA)とが、それぞれ個別に設けられ、前記遊技制御プログラムには、前記第2RAM領域(第2ワーク領域WORK2_AREA)に記憶されたデータを更新する処理を含まず、且つ、前記補助プログラムには、前記第1RAM領域(第1ワーク領域WORK1_AREA)に記憶されたデータを更新する処理を含まない。
【0011】
該具体的構成によれば、第1RAM領域への更新は遊技制御プログラムのみ、第2RAM領域への更新は補助プログラムのみに制限されるため、遊技制御プログラム側の検査時には第1RAM領域、補助プログラム側の検査時には第2RAM領域のみ検査すればよいので、さらに検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【0012】
さらに具体的構成において、前記第1RAM領域及び第2RAM領域はそれぞれ、スタック領域(第1スタック領域STACK1_AREA及び第2スタック領域STACK2_AREA)を含み、前記レジスタ退避処理には、現在のスタックポインタSPを第2RAM領域内の所定アドレスに退避する第1処理と、第2RAM領域内のスタック領域の先頭アドレスをスタックポインタに設定する第2処理とを含み、前記レジスタ復帰処理には、前記第2処理にて前記所定アドレスに退避した値をスタックポインタに復帰させる第3処理を含む。
【0013】
該具体的構成によれば、スタック領域についても、遊技制御プログラム及び補助プログラムそれぞれ専用のスタック領域を用いることになる。従って、遊技制御プログラム側の検査時には第1RAM領域のスタック領域のみ、補助プログラム側の検査時には第2RAM領域のスタック領域のみ検査すればよいので、さらに検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【発明の効果】
【0014】
本発明の遊技機によれば、一定の容量制限が課された遊技制御プログラムを第1の領域、その他の補助プログラムを第2の領域に配置したとしても、検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る遊技機を提供することができる。
【図面の簡単な説明】
【0015】
図1】スロットマシン1の概観を示す斜視図である。
図2】スロットマシン1の電気的構成を示すブロック図である。
図3】スロットマシン1のCPU101のレジスタ構成を示す図である。
図4】スロットマシン1のROM104のメモリマップを示す図である。
図5】スロットマシン1のRAM106のメモリマップを示す図である。
図6】第1実施例における、遊技制御プログラムコードの一例を示す図である。
図7】第2実施例における、補助プログラムに含まれるサブルーチンコードの一例を示す図である。
【発明を実施するための形態】
【0016】
以下に、本発明の実施形態をスロットマシンを例に説明する。
【0017】
<1.遊技機の外観構成>
図1は、本発明の実施形態に係るスロットマシン1の概観を示す斜視図である。スロットマシン1は、前面が開口した箱状の本体2と本体2の前面に配置した前面扉3から構成されている。本体2と前面扉3とは片側で蝶番により開閉できるようになっている。前面扉3は、遊技者が遊技を行うためのボタン類を配置した操作部OP、可変表示装置RLが備える各リールR1〜R3の図柄を視認するリール窓20、遊技の進行に係る情報を表示するための表示器類を配置したパネル表示部DP、遊技の進行に係る情報を表示するための液晶表示器類や電飾装置を配置した演出表示部TP及び受皿部BPから構成されている。
【0018】
操作部OPには、操作部OPの上面右側にメダル投入口10を配置し、上面左側にベットボタン11が配置されている。メダル投入口10へのメダルの投入、またはベットボタン11を操作することにより、スロットマシン1に対してベットすることができる。ベットボタン11の下部位置の前面側には、ゲームの開始を指示するためのスタートレバー12を配置し、その右側には左リールR1の回転動作の停止を指示するための左ストップボタン13a、中リールR2の回転動作の停止を指示するための中ストップボタン13b及び右リールR3の回転動作の停止を指示するための右ストップボタン13cを配置し、遊技を進行させるための基本操作順序となる、ベットボタン11→スタートレバー12→左ストップボタン13a→中ストップボタン13b→右ストップボタン13cという、一連の流れの操作を行い易いようになっている。
【0019】
スタートレバー12の左側には、クレジットを精算してメダル受皿40にメダルを払い出す精算ボタン14を配置する。この精算ボタン14は遊技をやめる場合に使用し、操作の頻度が低いことや遊技中に誤って操作しないよう、上記一連の操作の流れから外れる位置に配置してある。
【0020】
さらに操作部OPには、メダル貸機がスロットマシン1に接続されている場合に使用する貸出ボタン15、メダル貸機に挿入されたプリペイカードや現金を返却する返却ボタン16及びメダル貸機の貸出可能な度数表示が行われる度数表示器17が設けてある。なお、このように、スロットマシン1にメダル貸機が接続されている場合には、スロットマシン1のこれらの貸出ボタン15、返却ボタン16の操作によるメダル貸機の作動及び度数表示器17による度数表示は、メダル貸機の制御によって行われる。
【0021】
パネル表示部DPには、1つのリールにつき3個の連続した図柄が目視でき、3つのリールで9個分の図柄をのぞむ透明アクリル板からなるリール窓20が設けられている。リール窓20の左側には、入賞ラインL1に対応した入賞ライン表示器21を設け、メダルを3枚投入すると入賞ラインL1に対応した入賞ライン表示器21が点灯するようになっている。
【0022】
また、全リールR1〜R3の回転動作を停止させた結果、入賞ラインL1上に役に係る図柄組合せが停止表示した場合には役の入賞となり、入賞ラインL1に対応した入賞ライン表示器21が点滅表示して遊技者に知らせるようになっている。また、リール窓20の右側には、役が入賞した場合に点灯する表示器や、遊技状態に応じて点灯するLEDなどが配置された遊技ガイド表示器22が設けられている。さらにリール窓20の下側には、クレジット数を表示するクレジット数表示器23a、特定の遊技状態におけるメダルの獲得枚数を表示する獲得枚数表示器23b、及び役が入賞した場合に付与されたメダル数を表示する配当数表示器23cから構成される遊技価値情報表示部23を有している。
【0023】
演出表示部TPには、遊技の進行状況を画像で表示する液晶表示装置30、遊技の進行状況に応じて色彩や点灯パターンを変化させて表示させる電飾LED31及び遊技の進行状況に応じて変化させるBGMやボタン操作に応じた操作音、ガイド音声を出力するスピーカ32が配置されている。
【0024】
受皿部BPには、メダル払出装置が駆動されてメダル払出口40aから排出されたメダルを貯めるメダル受皿40を設け、メダル受皿40の左側には灰皿を設けてある。
【0025】
<2.スロットマシンの電気的構成>
図2は、スロットマシン1の電気的構成を示すブロック図である。スロットマシン1は、遊技の主たる制御を行うメイン制御基板100A、液晶表示装置30に対して表示制御を行い画像表示する表示制御基板100B、パネル表示部DP又は演出表示部TPのLED類や音の演出の制御を行う電飾制御基板100Cを備えている。
【0026】
(1)メイン制御基板
メイン制御基板100Aは、CPU(central processing unit)101、クロック発生回路a102、クロック発生回路b103、ROM(read-only memory)104、RAM(random-access memory)105、データ送出回路106、入出力ポート107から構成されている。なお、CPU101としてROMやRAMを内蔵しているものを採用することができる。その場合には、外付けのROM104、RAM105を備えなくてもよい。
【0027】
CPU101は、ROM104に格納されたプログラムを、クロック発生回路a102で発生したCLK信号のタイミングに基づいて読み出し、プログラムを逐次実行する。CPU101は、電源が投入されるとあらかじめ定められたアドレスからメインプログラムを実行し、クロック発生回路a102の周期とは異なるクロック発生回路b103で発生されられたINTR信号のタイミングで、あらかじめ定められたアドレスから始まる割込みプログラムを実行する。ここで、INTR信号のタイミングは、例えば、2ミリ秒である。
【0028】
CPU101は、プログラムの実行に応じて各種フラグや各種カウンタなどの各種の遊技情報をRAM105に保存する。外部から供給される電源が遮断した場合でも、RAM105は電池により記憶情報が保持されており、その後電源が復帰した場合には、電源断発生の直前の状態から再開する。CPU101は、入出力ポート107を介して各種ボタン、センサの状態を読み取り、各種モータ、LED等を駆動する。
【0029】
ベット操作指示信号111a〜111c、開始操作指示信号112、停止操作指示信号113a〜113c及び精算操作指示信号114は、それぞれ操作部OPに設けられたベットボタン11、スタートレバー12、ストップボタン13a〜13c、精算ボタン14ボタンが遊技者に操作されたことに応じて出力される信号であり、入出力ポート107を介してCPU101に入力される。
【0030】
表示制御信号123a〜123cは、それぞれパネル表示部DPに設けられたクレジット数表示器23a、獲得枚数表示器23b、配当数表示器23cに表示するための表示信号であり、入出力ポート107を介してCPU101より駆動される。
【0031】
リール位置検出信号155a〜155cのそれぞれは、可変表示装置RLのそれぞれのリールに対応し、リールが1回転するたびに1回検出する信号であり入出力ポート107を介してCPU101に入力される。リール駆動信号154a〜154cのそれぞれは、リール可変表示装置RLのそれぞれのリールR1〜R3を駆動するステッピングモータを駆動する信号であり、入出力ポート107を介してCPU101より駆動される。
【0032】
メダル投入信号160は、メダル投入口10から通ずる前面扉3の内部に設けられたメダル検出装置に設けられたメダル投入センサが、投入されたメダルを検出した場合に出力される信号であり、入出力ポート107を介してCPU101に入力される。また、メダルブロック信号161はメダル検出装置に設けられたソレノイドを駆動する信号であり入出力ポート107を介してCPU101より駆動される。メダル払出信号162は、メダル払出装置のメダル放出部に設けられたメダル払出センサが、メダル払出装置により払い出されたメダルを検出した場合に出力される信号であり、入出力ポート107を介してCPU101に入力される。また、払出駆動信号163はメダル払出装置に設けられたモータを駆動する信号であり、入出力ポート107を介してCPU101より駆動される。
【0033】
CPU101は、データ送出回路106を介して表示制御基板100B及び電飾制御基板100Cへ各種コマンドを出力する。電飾制御基板100Cは、メイン制御基板100Aより各種コマンドを受信し、入賞ライン表示器21、遊技ガイド表示器22、電飾LED31による電飾装置の点灯制御、可変表示装置RLに設けられたバックライト装置53a〜53cの点灯制御及びBGMなどのサウンドをスピーカ32から出力する。
【0034】
(2)表示制御基板
表示制御基板100Bは、CPU(central processing unit)191、クロック発生回路c192、クロック発生回路d193、ROM(read-only memory)194、RAM(random-access memory)195、データ入力回路196及びグラフィックLSIとその周辺回路からなる表示回路197を備えている。
【0035】
このCPU191は、ROM194に格納されたプログラムを、クロック発生回路c192で発生したCLK信号のタイミングに基づいて読み出し、プログラムを逐次実行する。CPU191は、電源が投入されるとあらかじめ定められたアドレスからメインプログラムを実行し、クロック発生回路c192の周期とは異なるクロック発生回路b193で発生されられたINTR1信号のタイミングで、あらかじめ定められたアドレスから始まる割込みプログラムを実行する。ここで、INTR1信号のタイミングは、例えば、2ミリ秒とする。
【0036】
CPU191は、プログラムの実行に応じて各種フラグや各種カウンタなどの各種の遊技情報をRAM195に保存する。また、メイン制御基板100Aのデータ送出回路からのデータ送出タイミングに同期して送出されるストローブ信号に基づいてINTR2信号を発生させ、このINTR2信号のタイミングで、あらかじめ定められたアドレスから始まる割込みプログラムを実行する。
【0037】
<3.メイン制御基板100AのCPU101のレジスタ構成>
図3は、Z80準拠のCPU101のレジスタの構成を示しており、図3(a)に汎用レジスタの構成、図3(b)に専用レジスタの構成を示している。
図3(a)に示す如く、汎用レジスタは、主レジスタセットと、補助レジスタセットとから構成される。主レジスタセットは、命令による直接操作が可能であるが、補助レジスタセットは命令による直接操作が出来ない。ただ、主レジスタセットと、これに対応する補助レジスタセットとのレジスタペア間(例えば、AFレジスタとAF’レジスタ)の内容の交換は、命令により可能となっている。
従い、通常使用するのは主レジスタセットであるため、以下、主レジスタセットの各レジスタの機能について説明する。
【0038】
A、F、B、C、D、E、H、Lの各レジスタは、単独で8ビットのレジスタであり、BC、DE、HLを対にして、16ビットのレジスタペアとして使用することも出来る。
Aレジスタはアキュムレータで、Aレジスタには、演算されるデータや演算後の結果等が保持されるとともに、アドレス操作等の各種の操作にもAレジスタを用いることが多い。従って、Aレジスタは、汎用レジスタ群の中でも別格であり、最も使用頻度の高い重要なレジスタである。
【0039】
Fレジスタはフラグレジスタで、命令を実行した結果、特定の事象が生じた(例えば、足し算の結果、桁上げが生じたとき等)場合に、生じた事象に応じた特定のビットに1がセットされる(フラグがセットされる)。Fレジスタは、不使用の1ビットを除く7ビットがそれぞれ、特定の事象が生じた際に1がセットされるフラグとして機能するため、フラグレジスタと呼ばれている。
【0040】
Fレジスタのビット構成を図3(c)に示す。最下位ビットのビット0は、キャリフラグCY、ビット1は加/減算フラグN、ビット2はパリティ/オーバーフローフラグP/V、ビット3は不使用フラグX、ビット4はハーフキャリフラグH、ビット5は第2ゼロフラグTZ、ビット6はゼロフラグZ、最上位ビットのビット7はサインフラグSとなっている。
【0041】
キャリフラグCYには、Aレジスタ等への加算命令で最上位ビットからの桁上がりが発生した場合や、減算命令でボローが発生した場合に、1がセットされる。
ゼロフラグZ及び第2ゼロフラグTZには、命令の実行結果がゼロである場合に、1がセットされる。但し、ゼロフラグZは、基本的にLD命令で変化することはないが、第2ゼロフラグTZは、ゼロフラグZが変化しないLD命令でも、実行結果がゼロである場合には、1がセットされる。
サインフラグSには、ある命令を実行した結果、Aレジスタ等が負であれば1、正であれば0がセットされる。
パリティ/オーバーフローフラグP/Vは、パリティ、即ち1バイト中の値が1のビットの数を調べる目的と、オーバーフローを調べる目的とに兼用される。
加/減算フラグNには、加算命令で0、減算命令で1がセットされる。
ハーフキャリフラグHには、8ビットの算術演算でビット3とビット4の間にキャリまたはボローがあれば1、なければ0がセットされる。
【0042】
次に、図3(b)に示す専用レジスタ群の各レジスタの機能について説明する。
スタックポインタSPは、現在、命令やデータをどこまでスタックに入れたかを保持する16ビットのレジスタで、スタック領域を指示するのに用いる。
インデックスレジスタIX及びIYは、それぞれ16ビットのレジスタで、インデックスアドレシングで用いられ、この内容で示す値がメモリの基準アドレスとなる。
【0043】
プログラムカウンタPCは、CPU101が次に実行しようとしている命令が格納されているメモリの番地を常時保持する16ビットのレジスタである。
ある命令を実行しようとすると、プログラムカウンタPCの内容がアドレスバスに送り出され、その内容で示されたメモリ番地から命令が取り出される。取り出された命令の長さに応じて、プログラムカウンタPCの内容は自動的に増加する。
なお、プログラムカウンタPCは、ジャンプ命令やCALL命令の場合は自動的には増加せず、それらの命令で決まる新しい値が直接プログラムカウンタPCにセットされる。
【0044】
割込みページアドレスレジスタIは、Z80の割込みモードの1つである間接コールの割込み処理時に用いる8ビットのレジスタである。更に具体的には、間接アドレスの上位8ビットに割込みページアドレスレジスタIの内容が使用され、下位8ビットには割込みをかけてきたデバイスからアドレスが使用される。
このようにして合成したアドレスが、割込み処理ルーチンの先頭アドレスの入っている場所のポインタとなるので、間接コールしたことになる。
メモリリフレッシュレジスタRは、ダイナミックメモリのリフレッシュに用いる7ビットのレジスタである。
なお、遊技機用途のZ80準拠のCPU101の種類によっては、専用レジスタ群に、上述した各レジスタに加えてQレジスタを有するものも知られているが、Qレジスタについては説明を省略する。
【0045】
<4.メイン制御基板100AのROM104の構成>
現行の遊技機関連法規によれば、メイン制御基板100AのROM104には、以下の制限が課されている。
1)記憶容量が16キロバイトを超えないこと。
2)制御領域とデータ領域とが区分されているものであること。
3)ぱちんこ遊技機:制御領域の容量が3キロバイトを超えず、かつ、データ領域の容量が3キロバイトを超えないものであること。
4)回胴式遊技機(スロットマシン):制御領域の容量が4.5キロバイトを超えず、かつ、データ領域の容量が3キロバイトを超えないものであること。
【0046】
なお、上記のデータ領域とは、プログラム以外の情報のみが記憶される領域、上記の制御領域とは、データ領域以外の記憶領域と規定されているため、制御領域は、プログラム情報が記憶される領域となる。
【0047】
図4は、メイン制御基板100AのROM104のメモリマップを示している。
ROM104の容量は12キロバイトで、16進のアドレス表記で、0000H〜2FFFHで示される領域を有している。
先頭番地の0000Hから始まる第1プログラム領域PG1_AREAには、メインルーチンを含むスロットマシン1の遊技制御に係る遊技制御プログラムが記憶されている。第1プログラム領域PG1_AREAは、遊技機関連法規上の制御領域に相当するため、第1プログラム領域PG1_AREAの容量は、ぱちんこ遊技機の場合は3キロバイト未満、回胴式遊技機の場合は、4.5キロバイト未満とする必要がある。
【0048】
第1プログラム領域PG1_AREAの後ろには、間に未使用領域挟み、遊技機関連法規上のデータ領域に相当する第1データ領域PG1_DATA_AREAが設けられている。第1データ領域PG1_DATA_AREAには、第1プログラム領域PG1_AREAに記憶された遊技制御プログラムから参照する固定データが記憶されている。また、第1データ領域PG1_DATA_AREAの容量は、ぱちんこ遊技機、回胴式遊技機にかかわらず、3キロバイト未満とする必要がある。
第1プログラム領域PG1_AREAと第1データ領域PG1_DATA_AREAとの間の未使用領域は、制御領域とデータ領域とを明確に区分するために設けられ、NULL(00H)データで埋められた16バイト以上の容量を有する。以降の各未使用領域も同様に、各未使用領域の前後の領域を明確に区別するために設けられ、NULL(00H)データで埋められた16バイト以上の容量を有する。
【0049】
第1データ領域PG1_DATA_AREAの後ろには、間に未使用領域を挟み、検査情報領域TEST_DATA_AREAが設けられている。検査情報領域TEST_DATA_AREAには、検査機関指定の各種情報が記憶される。
【0050】
検査情報領域TEST_DATA_AREAの後ろには、間に未使用領域挟み、第2プログラム領域PG2_AREAが設けられている。第2プログラム領域PG2_AREAには、前記遊技制御プログラムから呼び出される複数のサブルーチンを含む遊技制御に直接関連のない補助プログラムが記憶されている。補助プログラムに含まれる各サブルーチンの機能は、例えば以下の通りである。
1)メダル投入ゴト検知処理
例えば、メダル投入以外の方法でメダル投入センサを誤検知させることにより、クレジットを増加させるクレマンゴトと呼ばれるゴト行為の有無を判別する処理。
2)ホッパーゴト検知処理
ホッパーを誤動作させて不正にメダルを払い出すゴト行為の有無を判別する処理。
3)検査機関試験用信号出力処理
検査機関による試験でのみ用いられる遊技関連信号を出力する処理。
4)補助プログラムで用いるRAM105のワーク領域(後述する第2ワーク領域WORK2_AREA)をクリアする処理
【0051】
第2プログラム領域PG2_AREAの後ろには、間に未使用領域挟み、第2データ領域PG2_DATA_AREAが設けられている。第2データ領域PG2_DATA_AREAには、第2プログラム領域PG2_AREAに記憶された補助プログラムから参照する固定データが記憶されている。
【0052】
第2データ領域PG2_DATA_AREAの後ろには、間に未使用領域挟み、管理データ領域MG_DATA_AREAが設けられている。管理データ領域MG_DATA_AREAには、機種名やメーカ名等の機種固有情報のほか、第1プログラム領域PG1_AREAの終了アドレス、第1データ領域PG1_DATA_AREAの開始及び終了アドレス、第2プログラム領域PG2_AREAの開始及び終了アドレス、第2データ領域PG2_DATA_AREAの開始及び終了アドレス等が記憶される。
【0053】
<5.メイン制御基板100AのRAM105の構成>
現行の遊技機関連法規によれば、メイン制御基板100AのRAM105には、以下の制限が課されている。
1)記憶容量が1024バイトを超えないこと。
2)使用領域の容量が512バイトを超えないものであること。
【0054】
図5は、メイン制御基板100AのRAM105のメモリマップを示している。
RAM105の容量は1024バイトで、16進のアドレス表記で、F000H〜F3FFHで示される領域を有している。
【0055】
RAM105の先頭番地F000Hから始まる領域は、第1ワーク領域WORK1_AREAで、第1ワーク領域WORK1_AREAには、ROM104の第1プログラム領域PG1_AREAに記憶された遊技制御プログラムに基づき実行される演算処理に用いる各種ワークデータが記憶される。
第1ワーク領域WORK1_AREAの後ろには、間に未使用領域挟み、第1スタック領域STACK1_AREAが設けられている。第1スタック領域STACK1_AREAは、ROM104の第1プログラム領域PG1_AREAに記憶された遊技制御プログラムにて用いるスタック領域である。
【0056】
第1スタック領域STACK1_AREAの後ろには、間に未使用領域挟み、第2ワーク領域WORK2_AREAが設けられている。第2ワーク領域WORK2_AREAには、ROM104の第2プログラム領域PG2_AREAに記憶された補助プログラムに基づき実行される演算処理に用いる各種ワークデータが記憶される。
第2ワーク領域WORK2_AREAの後ろには、間に未使用領域挟み、第2スタック領域STACK2_AREAが設けられている。第2スタック領域STACK2_AREAは、ROM104の第2プログラム領域PG2_AREAに記憶された補助プログラムにて用いるスタック領域である。
【0057】
また、遊技制御プログラムからの第2ワーク領域WORK2_AREAへの参照、及び補助プログラムからの第1ワーク領域WORK1_AREAへの参照は可としているが、遊技制御プログラムからの第2ワーク領域WORK2_AREAの更新、及び補助プログラムからの第1ワーク領域WORK1_AREAの更新は不可としている。
【0058】
<6.補助プログラムに含まれるサブルーチンコール時の処理>
ROM104の第1プログラム領域PG1_AREAに記憶された遊技制御プログラムから、第2プログラム領域PG2_AREAに記憶された補助プログラムに含まれるサブルーチンをコールする際には、遊技制御プログラム側で利用している全レジスタを保護する処理を実行する。以下、遊技制御プログラム側で利用している全レジスタを単に「全レジスタ」という。
以下、全レジスタを保護する処理につき、具体的に説明する。
【0059】
1)第1実施例
第1実施例として、遊技制御プログラム内で全レジスタを保護する処理を実行する場合のプログラム例を図6に示す。
なお、以降のプログラム例に関する説明において、遊技制御プログラム側から呼び出す(コールする)、補助プログラムに含まれるサブルーチン名を「EXTPRG」としている。
【0060】
図6に示す如く、遊技制御プログラム側では、ST602にてサブルーチン「EXTPRG」をコールする前に、ST601にて、PUSH命令によって全レジスタをスタック領域に退避するとともに、サブルーチン「EXTPRG」からリターンした後のST603にて、POP命令によってスタック領域から全レジスタを復帰させる。
【0061】
なお、この例では、PUSH命令及びPOP命令の引数として「ALL」を用いたが、遊技制御プログラム側で利用してしないレジスタについては、退避及び復帰処理をしなくてもよい。
【0062】
さらに、サブルーチン「EXTPRG」を含む補助プログラム側では、スタックポインタSPの更新を伴う命令、具体的にはPOP命令及びPUSH命令等を使用しないこととしている。
Z80の仕様上、サブルーチンへジャンプするときに使用するCALL命令には、その時点でのプログラムカウンタPCの内容をスタック領域にPUSHする機能、また、サブルーチンから呼び出し元へリターンするときに使用するRET命令には、スタック領域に退避したプログラムカウンタPCの内容をPOPする機能が含まれている。このため、補助プログラム側で、スタックポインタSPの更新を伴う命令を使用すると、不具合を生じる場合があるためである。
【0063】
上記の対応により、全レジスタを退避した後、補助プログラム側でのスタックポインタSPの更新を回避できるので、補助プログラム側からリターンした後のPOP命令によって、スタックエリアから全レジスタを復帰させることが可能となる。
また、この場合には、補助プログラム側でスタック領域を使用することがないため、第2スタック領域STACK2_AREAは不要となる。
【0064】
2)第2実施例
第2実施例として、補助プログラム内で全レジスタを保護する処理を実行する場合のプログラム例を図7に示す。
【0065】
上記のとおり、Z80の仕様上、サブルーチンへジャンプするときに使用するCALL命令には、その時点でのプログラムカウンタPCの内容をスタック領域にPUSHする機能、また、サブルーチンから呼び出し元へリターンするときに使用するRET命令には、スタック領域に退避したプログラムカウンタPCの内容をPOPする機能が含まれているため、補助プログラム側でのスタックポインタSPの更新を伴う命令の使用は望ましくない。
このため、第2実施例では、スタック領域として、遊技制御プログラムにて用いる第1スタック領域STACK1_AREAと、補助プログラムにて用いる第2スタック領域STACK2_AREAとを個別に設けた。
また、補助プログラム側のサブルーチンの先頭で、現在のスタックポインタSPの値を第2ワーク領域WORK2_AREAに退避する処理、並びに、スタックポインタSPに第2スタック領域STACK2_AREAの先頭番地をセットする処理を行ったのち、全レジスタを退避する処理を行う。
【0066】
なお、CPU101のFレジスタ内に、上述した第2ゼロフラグZ2を有する場合には、現在のスタックポインタSPの値を第2ワーク領域WORK2_AREAに退避する処理、並びに、スタックポインタSPに第2スタック領域STACK2_AREAの先頭番地をセットする処理にて用いるLD命令によって、第2ゼロフラグZ2の値が変化して、Fレジスタの値が変化する虞がある。従って、LD命令を使用する上記2つの処理の前に、Fレジスタの値を退避する必要がある。
また、Fレジスタ値の退避にあたり、スタックポインタSPが変化してしまうPUSH命令を使用することは出来ないため、AFレジスタと補助レジスタAF’とを交換するEX命令を用いている(ST701)。
さらに、遊技制御プログラム側では、補助レジスタAF’を使用しないこととしている。
【0067】
次のST702にて、現在のスタックポインタSPの値を第2ワーク領域WORK2_AREA内のSpsave2番地に退避する処理、また、ST703にて、スタックポインタSPに第2スタック領域STACK2_AREAの先頭番地EXTSTKをセットする処理を実行した後、ST704にて、AFレジスタと補助レジスタAF’とを交換するEX命令により、ST701にて補助レジスタAF’に退避した値をAFレジスタに復帰させる。
その後のST705にて、PUSH命令により全レジスタの値を第2スタック領域STACK2_AREAに退避し、全レジスタの退避処理が完了する。
【0068】
次に、本処理を実行した後、RET命令で遊技機プログラム側にリターンする前に、全レジスタの復帰処理を実行する。
先ず、ST706にて、POP命令により、ST705にて第2スタック領域STACK2_AREAに退避した値を、全レジスタに復帰させる。
次のST707にて、EX命令により、現在のAFレジスタの値を補助レジスタAF’に退避した後、ST708にて第2ワーク領域WORK2_AREA内のSpsave2番地に退避した値をスタックポインタSPに復帰させ、ST709にて、EX命令により、ST707にて補助レジスタAF’に退避した値をAFレジスタに復帰させ、全レジスタの復帰処理が完了する。
その後、ST710のRET命令により、呼び出し元の遊技制御プログラムへリターンする。
【0069】
なお、CPU101の仕様上、LD命令によってFレジスタが変化することがない場合には、ST701、ST704、ST707、及びST709のAFレジスタの復帰及び退避処理は不要である。
【0070】
また、第2実施例の方法を採用した場合、補助プログラム内の処理の実行中に、タイマ割込処理が発生すると、遊技制御プログラム内のタイマ割込処理が実行されることになり、スタック領域として第2スタック領域STACK2_AREAが使用されることになってしまう。これを回避するには、補助プログラム側の処理の実行中の割込を禁止すればよい。
具体的には、遊技制御プログラムから補助プログラムに含まれるサブルーチンをコールする際に割込禁止命令DI、該サブルーチンから遊技制御プログラムにリターンする際に割込許可命令EIを各実行すればよい。
なお、遊技制御プログラム側で補助プログラムに含まれるサブルーチンをコールする直前に割込禁止命令DIを実行するとともに、補助プログラム側で遊技制御プログラムにリターンする直前に割込許可命令EIを実行するようにすれば、容量制限の課された遊技制御プログラムの容量増大を最小限に抑制することが出来る。
【0071】
第1実施例に記載の方法によれば、遊技制御プログラム側から補助プログラムに含まれるサブルーチンを呼び出す度に、その前後で、PUSH命令による全レジスタの退避処理、並びにPOP命令による全レジスタの復帰処理が必要となる。
従って、遊技制御プログラムの容量を出来るだけ小さくしたい場合には、全レジスタの退避及び復帰処理を補助プログラム側で実行する第2実施例の方法を採用したほうがよい。
【0072】
以上説明した通り、本発明を適用したスロットマシン1は、一定の容量制限が課されている遊技制御プログラムをROM104の第1プログラム領域PG1_AREA、遊技制御プログラムから参照する固定データをROM104の第1データ領域PG1_DATA_AREAに各記憶するとともに、遊技制御に直接関連のない補助プログラムをROM104の第2プログラム領域PG2_AREA、補助プログラムから参照する固定データをROM104の第2データ領域PG2_DATA_AREAに記憶した。
【0073】
これにより、第1プログラム領域PG1_AREA、第1データ領域PG1_DATA_AREA、第2プログラム領域PG2_AREA及び第2データ領域PG2_DATA_AREAが、ROM104内で明確に区分されるため、検査の容易化が図れる。
【0074】
また、上記本発明のスロットマシン1によれば、遊技機プログラムから補助プログラムに含まれる1のサブルーチンを呼び出す際に、遊技制御プログラムで使用する全レジスタの値をRAM105のスタック領域に退避するレジスタ退避処理と、前記1のサブルーチンから呼び出し元の遊技制御プログラムにリターンする際に、前記レジスタ退避処理にて退避した全レジスタの値をRAM105のスタック領域から復帰するレジスタ復帰処理とを実行するため、補助プログラム側のサブルーチンの処理によってレジスタの値が変化したとしても、当該サブルーチンからのリターンの際に、当該サブルーチン呼び出し前の値に復帰することになる。
このため、サブルーチン側でのレジスタ値の変化を考慮することなく、遊技機制御プログラムの検査が可能となるので、検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【0075】
また、上記本発明のスロットマシン1においては、RAM105のワーク領域についても、遊技制御プログラム用の第1ワーク領域WORK1_AREAと、補助プログラム用の第2ワーク領域WORK2_AREAとに明確に区分し、遊技制御プログラムには、第2ワーク領域WORK2_AREAに記憶されたデータを更新する処理を含まず、且つ、補助プログラムには、第1ワーク領域WORK1_ARE)に記憶されたデータを更新する処理を含まないこととした。
【0076】
これにより、遊技制御プログラム側の検査時には第1ワーク領域WORK1_AREAのみ、補助プログラム側の検査時には第2ワーク領域WORK2_AREAのみ検査すればよいので、さらに検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【0077】
また、第2実施例のスロットマシン1ように、前記レジスタ退避処理並びにレジスタ復帰処理を補助プログラム側で実行することにより、容量制限が課されている遊技制御プログラム側の容量増加を抑制することが出来る。
【0078】
さらに、第2実施例のスロットマシン1においては、RAM105のスタック領域についても、遊技制御プログラム用の第1スタック領域STACK1_AREAと、補助プログラム用の第2スタック領域STACK2_AREAとに明確に区分し、レジスタ退避処理時には、現在のスタックポインタSPを第2ワーク領域WORK2_AREA内の所定アドレスに退避する処理と、第2スタック領域STACK2_AREAの先頭アドレスをスタックポインタSPに設定する処理とを実行し、レジスタ復帰処理時には、第2ワーク領域WORK2_AREA内の所定アドレスに退避した値をスタックポインタに復帰させるようにした。
【0079】
これにより、RAM105のスタック領域についても、遊技制御プログラム側の検査時には第1スタック領域STACK1_AREAのみ、補助プログラム側の検査時には第1スタック領域STACK2_AREAのみ検査すればよいので、さらに検査負担の増大、並びに検査期間の長期化を最小限に抑制することが出来る。
【産業上の利用可能性】
【0080】
本発明は、スロットマシンやパチンコ遊技機等の遊技機に適用することができる。
【符号の説明】
【0081】
1……スロットマシン、12……スタートレバー、13a〜13c……ストップボタン、
R1〜R3……リール、20……リール窓、L1……入賞ライン、30……液晶表示装置
、100A……メイン制御基板、101……CPU、104……ROM、105……RA
M、100B……表示制御基板、191……CPU、194……ROM、195……RA
図1
図2
図3
図4
図5
図6
図7