Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7499799B2 - Gaming Machines - Google Patents
[go: Go Back, main page]

JP7499799B2 - Gaming Machines - Google Patents

Gaming Machines Download PDF

Info

Publication number
JP7499799B2
JP7499799B2 JP2022032870A JP2022032870A JP7499799B2 JP 7499799 B2 JP7499799 B2 JP 7499799B2 JP 2022032870 A JP2022032870 A JP 2022032870A JP 2022032870 A JP2022032870 A JP 2022032870A JP 7499799 B2 JP7499799 B2 JP 7499799B2
Authority
JP
Japan
Prior art keywords
control board
main control
register
command
value
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.)
Active
Application number
JP2022032870A
Other languages
Japanese (ja)
Other versions
JP2023128495A (en
Inventor
純也 杉山
智裕 久保田
純一 田村
功太郎 山口
将吾 吉岡
暢 西澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Heiwa Corp
Original Assignee
Heiwa Corp
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 Heiwa Corp filed Critical Heiwa Corp
Priority to JP2022032870A priority Critical patent/JP7499799B2/en
Publication of JP2023128495A publication Critical patent/JP2023128495A/en
Application granted granted Critical
Publication of JP7499799B2 publication Critical patent/JP7499799B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Pinball Game Machines (AREA)

Description

本発明は、遊技を実行する遊技機に関する。 The present invention relates to a gaming machine that executes games.

特許文献1には、封入式の遊技機(管理遊技機)が記載されている。 Patent document 1 describes an enclosed gaming machine (a controlled gaming machine).

特開2019-122874号公報JP 2019-122874 A

近年では、いずれも似通った遊技機ばかりが提案されており、斬新な遊技機が望まれている。 In recent years, many similar gaming machines have been proposed, and there is a demand for innovative gaming machines.

そこで、本発明は、斬新な遊技機を提供することを課題とする。 Therefore, the objective of the present invention is to provide an innovative gaming machine.

本発明は、上記の課題を解決するため以下の解決手段を採用する。なお、以下の解決手段及び括弧書中の文言はあくまで例示であり、本発明はこれに限定されるものではない。また、本発明は、以下の解決手段に示す各発明特定事項を少なくとも1つ含む発明とすることができる。さらに、以下の解決手段に示す各発明特定事項には、発明特定事項を限定する要素を追加して下位概念化することができ、発明特定事項を限定する要素を削除して上位概念化することもできる。 The present invention employs the following solutions to solve the above problems. Note that the solutions and the wording in parentheses below are merely examples, and the present invention is not limited thereto. The present invention can be an invention that includes at least one of the invention-specific matters shown in the solutions below. Furthermore, each invention-specific matter shown in the solutions below can be made into a lower-level concept by adding an element that limits the invention-specific matter, and can also be made into a higher-level concept by removing an element that limits the invention-specific matter.

〔第1の技術的特徴:エラーに関するコマンドを使用領域とは別の領域外で生成〕
解決手段A1:本解決手段の遊技機は、遊技の実行を制御する遊技制御手段と、記憶領域に設けられた使用領域内に遊技の実行に必要となる情報を格納し、前記使用領域とは別に設けられた領域外に遊技の実行に必要とならない情報を格納することが可能な記憶手段とを備え、前記遊技制御手段は、遊技の実行中に前記領域外の情報を用いてエラーに関する判定を実行し、当該判定の結果を示す結果情報を生成して前記領域外に保存する一方、前記使用領域の情報を用いて前記領域外の前記結果情報を参照することで、前記判定の結果を外部に通知するための通知情報(例えば、サブコマンド)を生成して前記使用領域(例えば、サブコマンドバッファ)に保存することを特徴とする遊技機である。
[First technical feature: generating error-related commands outside the area used]
Solution A1: The gaming machine of this solution comprises a game control means for controlling the execution of a game, and a memory means for storing information required for the execution of a game within a usage area provided in a memory area, and for storing information not required for the execution of a game outside an area provided separately from the usage area, wherein the game control means executes a judgment regarding an error using information outside the area during the execution of a game, generates result information indicating the result of the judgment and stores it outside the area, while using information from the usage area to refer to the result information outside the area, generates notification information (e.g., a sub-command) for notifying the outside of the result of the judgment, and stores it in the usage area (e.g., a sub-command buffer).

本解決手段の遊技機は、以下の構成を備えている。
(1)遊技制御手段(主制御基板)が設けられている。遊技制御手段には、例えば主制御CPUが搭載されている。
The gaming machine of this solution has the following configuration.
(1) A game control means (main control board) is provided. The game control means includes, for example, a main control CPU.

(2)記憶手段が設けられている。記憶手段には、ROM、RWM等の記憶領域が含まれ、記憶領域には使用領域の他に領域外(使用領域とは別の領域)が設けられている。使用領域には、遊技の実行に必要となる情報(例えば、プログラムコード、データテーブル、フラグ、コマンド等)が格納される。領域外には、遊技の実行に必要とならない情報(例えば、プログラムコード、データテーブル、フラグ、コマンド等)が格納される。 (2) A storage means is provided. The storage means includes storage areas such as ROM and RWM, and the storage area includes an outside area (an area separate from the use area) in addition to the use area. The use area stores information required for playing the game (e.g., program code, data tables, flags, commands, etc.). The outside area stores information not required for playing the game (e.g., program code, data tables, flags, commands, etc.).

(3)遊技制御手段は、エラーに関する判定(例えば、エラーの発生又は解除)を領域外で実行する。エラーに関して何らかの判定をした場合、結果情報(例えば、使用領域でサブコマンドバッファに設定される情報)を生成して領域外に保存しておく。 (3) The game control means executes error-related determinations (e.g., occurrence or cancellation of an error) outside the area. When any determination is made regarding an error, result information (e.g., information set in a sub-command buffer in the usage area) is generated and stored outside the area.

(4)一方、遊技制御手段は、使用領域では領域外の結果情報を参照して通知情報を生成するだけとし、エラーに関する判定を使用領域では実行しない。 (4) On the other hand, the game control means only generates notification information in the usage area by referencing result information outside the area, and does not perform error determination in the usage area.

本解決手段によれば、エラーに関する判定に必要となる情報量(プログラムコード量)を使用領域に格納する必要がなくなり、それだけ使用領域の情報量を削減することができる。その結果、斬新な遊技機を提供することができる。 This solution eliminates the need to store the amount of information (amount of program code) required to determine errors in the used area, which reduces the amount of information in the used area. As a result, a novel gaming machine can be provided.

解決手段A2:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、前記領域外の情報を用いて複数種類のエラーに関する判定を実行し、前記結果情報を種類毎に生成して前記領域外に保存する際に前記結果情報の数を合わせて保存しておき、前記使用領域の情報を用いて前記領域外を参照する際は、保存されている前記結果情報の数が0である場合は前記通知情報を生成する処理を実行しないことを特徴とする遊技機である。 Solution A2: The gaming machine of this solution is any of the solutions described above, characterized in that the gaming control means uses information outside the area to make judgments regarding multiple types of errors, generates the result information for each type and stores it outside the area, adding up the number of pieces of result information and storing it, and when referring to the outside area using information in the usage area, does not execute the process of generating the notification information if the number of pieces of result information stored is 0.

本解決手段では、以下の特徴が追加される。
(1)遊技制御手段は、領域外の情報を用いて複数種類のエラー(例えば、スイッチ異常エラー、扉開放エラー、磁気検出エラー、電波検出エラー等)に関する判定を実行する。いずれかの種類のエラーに関して何らかの判定をした場合、結果情報をエラーの種類毎に生成して領域外に保存するが、このとき結果情報の数も合わせて保存しておく。逆に、全ての種類のエラーに関して何も判定しなければ(例えば、全ての種類のエラーの発生又は解除があったと判定しなければ)、結果情報を生成しないので、結果情報の数は0が保存される。
The present solution adds the following features:
(1) The game control means uses information outside the area to make judgments regarding multiple types of errors (e.g., switch abnormality error, door open error, magnetic detection error, radio wave detection error, etc.). When any judgment is made regarding any type of error, result information is generated for each type of error and stored outside the area, and at this time the number of pieces of result information is also stored. Conversely, if no judgment is made regarding all types of errors (e.g., if it is not determined that all types of errors have occurred or been released), no result information is generated, and the number of pieces of result information stored is 0.

(2)そして、遊技制御手段は、使用領域の情報を用いて領域外を参照する際、領域外の結果情報の数が0である場合は通知情報を生成する処理を実行しないこととする。領域外の結果情報の数が0であるということは、エラーに関する判定の結果を外部に通知しないということなので、通知情報を生成する必要がないからである。 (2) Then, when the game control means uses the information in the used area to refer to the outside area, if the number of pieces of result information outside the area is zero, the game control means does not execute the process of generating notification information. This is because the number of pieces of result information outside the area being zero means that the result of the error determination will not be notified to the outside, and therefore there is no need to generate notification information.

本解決手段によれば、使用領域から領域外を参照する際のロジックをより簡素化することができ、それによってさらに使用領域の情報量(プログラムコード使用量)を削減することができる。その結果、より斬新な遊技機を提供することができる。 This solution makes it possible to further simplify the logic used when referencing areas outside the area of use, thereby further reducing the amount of information in the area of use (amount of program code used). As a result, it is possible to provide a more innovative gaming machine.

〔第2の技術的特徴:割込み処理のコードを削減した構成〕
解決手段B1:本解決手段の遊技機は、遊技の実行を制御する遊技制御手段を備えた遊技機であって、前記遊技制御手段は、電源投入時の初期化処理が完了した後のメインループ処理に移行すると、割込み禁止状態にして前記メインループ処理内の全ての処理を実行し、終了後に前記メインループ処理の末尾から先頭に戻る期間のみを割込み許可状態とすることを特徴とする遊技機である。
[Second Technical Feature: Configuration with Reduced Interrupt Processing Code]
Solution B1: The gaming machine of this solution is a gaming machine equipped with a game control means for controlling the execution of a game, and the game control means is characterized in that when it transitions to main loop processing after the initialization processing at power-on is completed, it sets the game control means to an interrupt-disabled state and executes all processing within the main loop processing, and after completion of the processing, sets the game control means to an interrupt-enabled state only for the period from the end of the main loop processing back to the beginning.

本解決手段の遊技機は、以下の構成を備えている。
(1)遊技制御手段(主制御基板)が設けられている。遊技制御手段には、例えば主制御CPUが搭載されている。
The gaming machine of this solution has the following configuration.
(1) A game control means (main control board) is provided. The game control means includes, for example, a main control CPU.

(2)遊技制御手段は、遊技機の電源が投入されると初期化処理(例えば、CPU初期化処理)を実行する。初期化処理が完了すると、メインループ処理に移行し、処理内に含まれる処理をループして実行する状態となる。
(3)このとき遊技制御手段は、メインループ処理全体を割込み禁止命令と割込み許可命令で囲んだロジックを実行する。すなわち、遊技制御手段は、メインループ処理に移行すると、割込み禁止状態にして全ての処理を実行する。割込み許可状態にするのは、全ての処理の実行終了後にメインループ処理の末尾から先頭に戻る期間だけとする。
(2) When the power supply of the gaming machine is turned on, the game control means executes an initialization process (e.g., a CPU initialization process). When the initialization process is completed, the game control means moves to a main loop process, and enters a state in which the processes included in the main loop are executed in a loop.
(3) At this time, the game control means executes logic in which the entire main loop process is surrounded by an interrupt disable command and an interrupt enable command. That is, when the game control means transitions to the main loop process, it executes all processes in an interrupt disabled state. The interrupt enabled state is set only for the period when the main loop process returns from the end to the beginning after the execution of all processes is completed.

本解決手段によれば、メインループ処理内で全ての処理の実行中に別の処理(例えば、割込み処理)を実行する余地がないので、プログラム上でメインループ処理中に別の処理が発生したり、そこから復帰したりする際の手当て(例えば、一時記憶中の内容の保全)について考慮する必要がなく、それだけプログラム全体としてコード量を削減することができる。また、逆にいえば、メインループ処理の中に割込み許可状態で実行されるような処理を設けないこととしているので、メインループ処理のコード量も削減することができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, there is no room to execute another process (e.g., an interrupt process) while all processes are being executed within the main loop, so there is no need to consider how to handle the occurrence of another process during the main loop process or the return from it (e.g., preserving the contents in temporary storage), which reduces the amount of code in the program as a whole. Conversely, since no process that is executed in an interrupt-enabled state is provided within the main loop process, the amount of code in the main loop process can also be reduced. As a result, a more innovative gaming machine can be provided.

解決手段B2:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、前記メインループ処理の実行中に発生した割込み処理の実行時、前記メインループ処理に関するレジスタの退避及び復帰の処理を非実行とする遊技機である。 Solution B2: The gaming machine of this solution is any of the solutions described above, in which the gaming control means does not execute the process of saving and restoring registers related to the main loop process when an interrupt process that occurs during the execution of the main loop process is executed.

本解決手段では、以下の特徴が追加される。
(1)メインループ処理の実行中に、割込み処理(例えば、タイマ割込み処理、電断予告時割込み処理)が発生する。
(2)割込み処理の実行時は、メインループ処理に関するレジスタの退避及び復帰の処理を実行しない。
The present solution adds the following features:
(1) During execution of the main loop processing, an interrupt processing (e.g., a timer interrupt processing, a power outage warning interrupt processing) occurs.
(2) When an interrupt process is being executed, the process of saving and restoring registers related to the main loop process is not executed.

本解決手段によれば、メインループ処理での割込み処理の発生時にレジスタを退避させたり、あるいはメインループ処理への復帰時にレジスタを復帰させたりする処理をいずれも省略することができ、それだけプログラムコード量を削減することができる。その結果、より斬新な遊技機を提供することができる。 This solution makes it possible to omit the process of saving registers when an interrupt occurs in the main loop process, or the process of restoring registers when returning to the main loop process, thereby reducing the amount of program code. As a result, a more innovative gaming machine can be provided.

〔第3の技術的特徴:特定命令を使用したチェックサム算定処理の構成〕
解決手段C1:本解決手段の遊技機は、遊技の実行を制御する遊技制御手段と、遊技に関する情報を記憶可能な記憶領域を有する記憶手段とを備え、前記遊技制御手段は、前記記憶領域で指定した範囲の先頭アドレス及び領域数に基づき、単一の命令を実行することで前記指定した範囲のチェックサムの算定処理を実行することを特徴とする遊技機である。
[Third Technical Feature: Configuration of Checksum Calculation Process Using Specific Instructions]
Solution C1: The gaming machine of this solution is equipped with a game control means for controlling the execution of a game, and a memory means having a memory area capable of storing information relating to the game, and the game control means is characterized in that it executes a checksum calculation process for a specified range by executing a single instruction based on the starting address and number of areas of the range specified in the memory area.

本解決手段の遊技機は、以下の構成を備えている。
(1)遊技制御手段(主制御基板)が設けられている。遊技制御手段には、例えば主制御CPUが搭載されている。
(2)記憶手段が設けられている。記憶手段には、ROM、RWM等の記憶領域が含まれる。
The gaming machine of this solution has the following configuration.
(1) A game control means (main control board) is provided. The game control means includes, for example, a main control CPU.
(2) A storage unit is provided. The storage unit includes storage areas such as a ROM and a RWM.

(3)遊技制御手段は、チェックサムの算定処理を実行する。チェックサムの算定処理は、例えば、電源断時及び電源投入時(電断復帰時)に実行することができる。 (3) The game control means executes a checksum calculation process. The checksum calculation process can be executed, for example, when the power is turned off and when the power is turned on (when the power is restored).

(4)その上で、遊技制御手段は、チェックサムを算定する対象の記憶領域の範囲をその先頭アドレス及び領域数(例えば、先頭アドレスから連続したアドレス数)で指定しておき、単一の命令(例えば、ADDIR命令、ADDIRS命令)を実行することでチェックサムの算定処理を実行する。 (4) The game control means then specifies the range of memory areas for which the checksum is to be calculated by their starting address and the number of areas (e.g., the number of consecutive addresses from the starting address), and executes a single command (e.g., an ADDIR command, an ADDIRS command) to perform the checksum calculation process.

本解決手段によれば、チェックサムの算定処理の実行に用いる命令数を最小(1つ)にすることができるので、複数命令を実行しない分、処理の実行に必要な時間を最短にすることができる。その結果、より斬新な遊技機を提供することができる。 This solution makes it possible to minimize the number of commands used to execute the checksum calculation process (to one), and therefore minimize the time required to execute the process by not executing multiple commands. As a result, it is possible to provide a more innovative gaming machine.

解決手段C2:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、前記記憶領域で指定した第1範囲の第1先頭アドレス及び第1領域数に基づき、単一の命令を実行することで前記第1範囲のチェックサムの算定処理を実行した後、別の第2範囲の第2先頭アドレス及び第2領域数に基づき、単一の命令を実行することで前記第2範囲のチェックサムの算定処理を実行することを特徴とする遊技機である。 Solution C2: The gaming machine of this solution is any of the solutions described above, characterized in that the gaming control means executes a single command to calculate the checksum of a first range based on a first start address and a first number of areas of the first range specified in the memory area, and then executes a single command to calculate the checksum of a second range based on a second start address and a second number of areas of a different second range.

本解決手段では、以下の特徴が追加される。
(1)記憶領域で第1範囲のチェックサム算定処理を実行する場合、第1範囲についての第1先頭アドレス及び第1領域数を指定し、単一の命令を実行する。
(2)他に、記憶領域で別の第2範囲のチェックサム算定処理を実行する場合は、第2範囲についての第2先頭アドレス及び第2領域数を指定し、単一の命令を実行する。
The present solution adds the following features:
(1) When executing a checksum calculation process for a first range in a memory area, a first start address and the first number of areas for the first range are specified, and a single command is executed.
(2) When a checksum calculation process for a second range is to be executed in a storage area, a second start address and the number of second ranges are specified, and a single command is executed.

本解決手段によれば、記憶領域の中でチェックサムの算定を行う範囲(例えば、使用領域と領域外)が複数ある場合は、それら範囲毎に先頭アドレス及び領域数を指定し、それぞれについて単一の命令を実行するだけで算定処理を実行することができる。したがって、複数の範囲(使用領域、領域外)について個別にチェックサムを算定する場合であっても、全体の処理時間を最短にすることができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, when there are multiple ranges (e.g., areas in use and outside areas) within a memory area for which checksums are to be calculated, the calculation process can be performed simply by specifying the starting address and number of areas for each range and executing a single command for each. Therefore, even when checksums are calculated separately for multiple ranges (areas in use, outside areas), the overall processing time can be minimized. As a result, a more innovative gaming machine can be provided.

解決手段C3:本解決手段の遊技機は、上述したいずれかの解決手段(例えば解決手段C2)において、前記遊技制御手段は、前記第1範囲の処理と前記第2範囲の処理とでは、異なる命令を実行可能であることを特徴とする遊技機である。 Solution C3: The gaming machine of this solution is any of the solutions described above (e.g., solution C2), characterized in that the gaming control means is capable of executing different commands for the first range of processing and the second range of processing.

本解決手段では、以下の特徴が追加される。
すなわち、第1の範囲のチェックサム算定処理では、特定の命令を実行可能である。また、第2の範囲のチェックサム算定処理では、特殊な命令を実行可能である。
The present solution adds the following features:
That is, in the checksum calculation process in the first range, a specific command can be executed, and in the checksum calculation process in the second range, a special command can be executed.

本解決手段によれば、チェックサムを算定する対象の第1の範囲と第2の範囲とで異なる命令を実行しつつも、いずれも単一命令であるため、やはり処理時間を最短化することができる。 With this solution, even though different commands are executed for the first and second ranges for which the checksum is calculated, a single command is executed for both, so the processing time can still be minimized.

解決手段C4:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、電源投入時に実行する初期化処理では、チェックサムの算定結果を前記記憶領域に保存し、電源断時に実行する割込み処理では、チェックサムの算定結果に対して2の補数を取る処理を実行した結果を前記記憶領域に保存することを特徴とする遊技機である。 Solution C4: The gaming machine of this solution is any of the solutions described above, characterized in that the gaming control means stores the checksum calculation result in the memory area during the initialization process executed when the power is turned on, and stores the result of the process of taking the two's complement of the checksum calculation result in the memory area during the interrupt process executed when the power is turned off.

本解決手段では、以下の特徴が追加される。
(1)チェックサムの算定処理は、電源投入時の初期化処理及び電源断時の割込み処理においてそれぞれ実行する。
(2)電源投入時の初期化処理では、チェックサムの算定結果を記憶領域(例えば、RWM)に保存する。
(3)電源断時の割込み処理では、チェックサムの算定結果の符号を反転させて記憶領域(例えば、RWM)に保存する。
The present solution adds the following features:
(1) The checksum calculation process is performed during the initialization process when the power is turned on and during the interrupt process when the power is turned off.
(2) In the initialization process when the power is turned on, the checksum calculation result is stored in a memory area (e.g., RWM).
(3) In the interrupt process when the power is turned off, the sign of the checksum calculation result is inverted and saved in a storage area (for example, RWM).

本解決手段によれば、電源投入時に比較して電源断時の処理が2の補数を取る処理を実行している分、長いものとなるが、それでも電源投入時の初期化処理及び電源断時の割込み処理のいずれにおいても、必要な処理時間を最短にすることができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, the processing time required when the power is turned off is longer than when the power is turned on because the processing to obtain the two's complement is performed, but it is still possible to minimize the processing time required for both the initialization processing when the power is turned on and the interrupt processing when the power is turned off. As a result, a more innovative gaming machine can be provided.

〔第4の技術的特徴:変動パターン選択2処理におけるコード削減の構成〕
解決手段D1:本解決手段の遊技機は、遊技の実行を制御する遊技制御手段と、遊技に関する情報を記憶可能な記憶領域を有する記憶手段とを備え、前記記憶手段は、前記記憶領域に互いにビット数が異なる第1データ及び第2データが組として設定されたテーブル領域を有し、前記遊技制御手段は、前記テーブル領域から第1レジスタと第2レジスタのペアに前記第1データと前記第2データの組を読み込んだ後、前記第1レジスタの値を所定値で除算したときの商を前記第1レジスタに格納し、その余りを第3レジスタに格納する命令を実行することで、前記第3レジスタと前記第2レジスタのペアによって前記第2データを生成することを特徴とする遊技機である。
[Fourth technical feature: Configuration of code reduction in variation pattern selection 2 processing]
Solution D1: The gaming machine of this solution comprises a game control means for controlling the execution of a game, and a memory means having a memory area capable of storing information relating to a game, wherein the memory means has a table area in which first data and second data, each having a different number of bits, are set as a pair, and the game control means reads the pair of first data and second data from the table area into a pair of a first register and a second register, and then executes an instruction to divide the value of the first register by a predetermined value, store the quotient in the first register, and store the remainder in a third register, thereby generating the second data by the pair of the third register and the second register.

本解決手段の遊技機は、以下の構成を備えている。
(1)遊技制御手段(主制御基板)が設けられている。遊技制御手段には、例えば主制御CPUが搭載されている。
(2)記憶手段が設けられている。記憶手段には、ROM、RWM等の記憶領域が含まれる。
The gaming machine of this solution has the following configuration.
(1) A game control means (main control board) is provided. The game control means includes, for example, a main control CPU.
(2) A storage unit is provided. The storage unit includes storage areas such as a ROM and a RWM.

(3)記憶手段の記憶領域には、第1データ(例えば、図柄の変動パターンを決定する要素となるモード番号)と第2データ(例えば、乱数値と比較される比較値)が組になったデータ構成のテーブル領域が設定されている。例えば、第1データは1バイト未満であるが、第2データは1バイトより大きく、これらを組にすると、全体で2バイトとなるデータ構造である。なお、テーブル領域内には、第1データと第2データの組が複数設けられている。 (3) In the memory area of the memory means, a table area is set with a data configuration in which first data (e.g., a mode number that is an element that determines the pattern of variation of the patterns) and second data (e.g., a comparison value that is compared with a random number value) are paired. For example, the first data is less than 1 byte, while the second data is larger than 1 byte, and when these are paired, the data structure is 2 bytes in total. Note that multiple pairs of first data and second data are provided in the table area.

(4)遊技制御手段は、所定の命令(例えば、LDIN命令)を実行し、テーブル領域から第1レジスタと第2レジスタのペア(例えば、レジスタ・ペアAE)に第1データと第2データの組(例えば、HLレジスタの内容で指定されるアドレスのテーブル領域のデータ)を読み込む。このとき、第1データと第2データの組は、ちょうど2バイトのレジスタのペアに収まる。 (4) The game control means executes a predetermined command (e.g., an LDIN command) and reads a set of first and second data (e.g., data in the table area at the address specified by the contents of the HL register) from the table area into a pair of a first and second register (e.g., register pair AE). At this time, the set of first and second data fits exactly into the pair of 2-byte registers.

(5)遊技制御手段は、特定の命令(例えば、DIV D,A,16)を実行し、第1レジスタの値を所定値(例えば、16)で除算するとともに、その時の商を第1レジスタ(例えば、Aレジスタ)に格納し、余りを第3レジスタ(例えば、Dレジスタ)に格納する。 (5) The game control means executes a specific command (e.g., DIV D, A, 16), divides the value in the first register by a predetermined value (e.g., 16), stores the quotient in the first register (e.g., the A register), and stores the remainder in a third register (e.g., the D register).

(6)上記(5)の結果から、第3レジスタと第2レジスタのペア(例えば、レジスタ・ペアDE)には第2データ(例えば、乱数値と比較される比較値)が生成されることになる。また、同時に除算の商である第1データ(例えば、モード番号データ)が第1レジスタ(例えば、Aレジスタ)内で右シフトされ、そのまま第1レジスタに残った状態で設定される。 (6) As a result of (5) above, second data (e.g., a comparison value to be compared with the random value) is generated in the pair of the third register and the second register (e.g., register pair DE). At the same time, the first data (e.g., mode number data), which is the quotient of the division, is shifted to the right within the first register (e.g., A register) and set while remaining in the first register.

本解決手段によれば、テーブル領域から第1レジスタと第2レジスタのペアに読み出した第1データと第2データの組に対して、そこに含まれる「第1データと第2データの分離」及び「第1データの右シフト」を1命令で実行することができ、それに伴って第2データを別の第3レジスタと第2レジスタのペアによって生成することができる。これにより、テーブル領域のデータの組を用いた選択処理を実行するためのプログラムコード量を最小化することができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, for a set of first data and second data read from a table area into a pair of a first register and a second register, the "separation of the first data and the second data" and "right shift of the first data" contained therein can be executed with a single instruction, and accordingly the second data can be generated by another pair of a third register and a second register. This makes it possible to minimize the amount of program code required to execute a selection process using a set of data in the table area. As a result, a more innovative gaming machine can be provided.

解決手段D2:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、取得した乱数値と生成した前記第2データとを比較した結果に基づいて、前記第1レジスタに格納した内容と対応付けられた値を選択結果として返す処理をさらに実行することを特徴とする遊技機である。 Solution D2: The gaming machine of this solution is a gaming machine characterized in that, in any of the solutions described above, the gaming control means further executes a process of returning a value associated with the contents stored in the first register as a selection result based on the result of comparing the acquired random number value with the generated second data.

本解決手段では、以下の特徴が追加される。
遊技制御手段は、生成した第2データを取得した乱数値と比較し、その結果に基づいて選択結果を返す。このとき選択結果は、第1レジスタに格納した内容、つまり、第1データと対応付けられた値(例えば、テーブル領域のアドレスで指し示される値)となる。
The present solution adds the following features:
The game control means compares the generated second data with the acquired random number value, and returns a selection result based on the result. At this time, the selection result is the content stored in the first register, that is, the value associated with the first data (for example, the value indicated by the address of the table area).

本解決手段によれば、選択結果を返す際に、改めて第1データをテーブル領域から読み出してくる処理を実行する必要がなく、それだけプログラムコード量を削減することができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, when returning the selection result, there is no need to execute the process of reading the first data from the table area again, which reduces the amount of program code. As a result, a more innovative gaming machine can be provided.

〔第5の技術的特徴:ベース、役物比率及び連役比率の算定タイミングの構成〕
解決手段E1:本解決手段の遊技機は、遊技の実行を制御する遊技制御手段を備え、遊技に関して算定可能な複数種類の性能を有した遊技機であって、前記遊技制御手段は、制御に際してタイマ割込み処理を繰り返し実行しつつ、前記複数種類の性能を算定する複数の算定処理のうち、1回のタイマ割込み処理の中ではいずれか1つの算定処理のみを実行可能とすることを特徴とする遊技機である。
[Fifth technical feature: Configuration of the calculation timing of the base, the role ratio and the consecutive role ratio]
Solution E1: The gaming machine of this solution is equipped with a game control means for controlling the execution of a game, and has multiple types of performance that can be calculated in relation to the game, and is characterized in that the game control means repeatedly executes timer interrupt processing during control, and is capable of executing only one of multiple calculation processes that calculate the multiple types of performance during one timer interrupt processing.

本解決手段の遊技機は、以下の構成を備えている。
(1)遊技制御手段(主制御基板)が設けられている。遊技制御手段には、例えば主制御CPUが搭載されている。
(2)遊技に関して算定可能な複数種類の性能を有している。複数種類の性能は、例えば、ベース値、役物比率、連続役物比率等である。
The gaming machine of this solution has the following configuration.
(1) A game control means (main control board) is provided. The game control means includes, for example, a main control CPU.
(2) The game has a plurality of types of performance that can be calculated with respect to a game. The plurality of types of performance include, for example, a base value, a role ratio, a consecutive role ratio, and the like.

(3)遊技制御手段は、制御に際してタイマ割込み処理を繰り返し実行する。このとき、複数種類の性能を算定する複数の算定処理があるが、1回のタイマ割込み処理の中では、いずれか1つの算定処理のみを実行可能としている。 (3) The game control means repeatedly executes timer interrupt processing during control. At this time, there are multiple calculation processes that calculate multiple types of performance, but only one of the calculation processes can be executed during one timer interrupt processing.

本解決手段によれば、遊技機の性能として複数種類の性能があり、それぞれを算定する複数の算定処理があるとしても、1回のタイマ割込み処理の中では複数を実行しないことにより、遊技機の性能を算定する処理に要する時間を最短にすることができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, even if there are multiple types of performance for a gaming machine and multiple calculation processes for calculating each of them, by not executing multiple processes within a single timer interrupt process, it is possible to minimize the time required for the process of calculating the gaming machine's performance. As a result, it is possible to provide a more innovative gaming machine.

解決手段E2:本解決手段の遊技機は、上述したいずれかの解決手段において、前記遊技制御手段は、1回のタイマ割込み処理の実行中、前記複数の算定処理に対して設定された優先度に基づいて、今回のタイマ割込み処理内で実行可能ないずれか1つの算定処理を決定することを特徴とする遊技機である。 Solution E2: The gaming machine of this solution is any of the solutions described above, characterized in that the gaming control means, during execution of one timer interrupt process, determines one of the calculation processes that can be executed within the current timer interrupt process based on the priority set for the multiple calculation processes.

本解決手段では、以下の特徴が追加される。
(1)複数の算定処理には、予め優先度が設定されている。例えば、優先度の高い順にベース値の算定処理→役物比率の算定処理→連続役物比率の算定処理である。
(2)今回のタイマ割込み処理の中で、複数の算定処理を実行する条件が満たされているとした場合でも、複数を実行することとせず、優先度の高い算定処理だけを実行する。
The present solution adds the following features:
(1) Priorities are set in advance for the multiple calculation processes. For example, the order of priority is the calculation process of the base value, the calculation process of the role ratio, and the calculation process of the continuous role ratio.
(2) Even if the conditions for executing multiple calculation processes are met during the current timer interrupt process, only the calculation process with the highest priority is executed without executing multiple calculation processes.

本解決手段によれば、条件的に複数種類の性能を算定する状況になったとしても、優先度に基づいて、いずれか1つの算定処理だけを実行することにより、処理時間を最短にすることができる。その結果、より斬新な遊技機を提供することができる。 According to this solution, even if a situation arises where multiple types of performance must be calculated due to certain conditions, the processing time can be minimized by executing only one of the calculation processes based on the priority. As a result, a more innovative gaming machine can be provided.

本発明によれば、斬新な遊技機を提供することができる。 The present invention makes it possible to provide an innovative gaming machine.

管理遊技機のブロック図である。FIG. 2 is a block diagram of a managed gaming machine. 主制御基板30(主制御CPU31)が用いるメモリ領域のメモリマップを示す図である。A diagram showing a memory map of the memory area used by the main control board 30 (main control CPU 31). CPU初期化処理の手順例を示すフローチャートである(1/2)。13 is a flowchart showing an example of a procedure for CPU initialization processing (1/2). CPU初期化処理の手順例を示すフローチャートである(2/2)。13 is a flowchart showing an example of a procedure for CPU initialization processing (2/2). 割込み待ちメインループ処理(1)のプログラムを示す図である。FIG. 13 is a diagram showing a program for an interrupt waiting main loop process (1). 割込み待ちメインループ処理(2)の手順例を示すフローチャートである。13 is a flowchart showing an example of a procedure for an interrupt waiting main loop process (2); 割込み待ちメインループ処理(2)のプログラムを示す図である。FIG. 13 is a diagram showing a program for an interrupt waiting main loop process (2). 比較例の割込み待ちメインループ処理の手順例を示すフローチャートである。13 is a flowchart illustrating an example of a procedure for an interrupt waiting main loop process in a comparative example. 比較例の割込み待ちメインループ処理のプログラムを示す図である。FIG. 13 is a diagram illustrating a program of an interrupt waiting main loop process in a comparative example. 比較例のその他乱数更新処理のプログラムを示す図である。FIG. 13 is a diagram showing a program for other random number update processing in the comparative example. タイマ割込み処理のプログラムを示す図である。FIG. 13 is a diagram illustrating a program for timer interrupt processing. 電源断時の退避処理のプログラムを示す図である。FIG. 13 is a diagram showing a program for a save process when power is turned off. タイマ割込み処理の手順例を示すフローチャートである。13 is a flowchart illustrating an example of a procedure for a timer interrupt process. 電源断時の退避処理の手順例を示すフローチャートである(1/2)。13 is a flowchart showing an example of a procedure for a save process when a power supply is turned off (1/2). 電源断時の退避処理の手順例を示すフローチャートである(2/2)。13 is a flowchart showing an example of a procedure for a save process when a power supply is turned off (2/2). 比較例のチェックサム算定処理のプログラムを示す図である。FIG. 13 is a diagram showing a program for a checksum calculation process in a comparative example. 比較例のチェックサム確認処理のプログラムを示す図である。FIG. 13 is a diagram illustrating a program for checksum verification processing in a comparative example. 本実施形態のチェックサム算定処理のプログラムを示す図である。FIG. 4 is a diagram showing a program for a checksum calculation process according to the present embodiment. 本実施形態のチェックサム確認処理のプログラムを示す図である。FIG. 11 is a diagram showing a program for a checksum confirmation process according to the present embodiment. 本実施形態による処理時間の短縮化の検証結果を示す図である。FIG. 11 is a diagram showing a verification result of the reduction in processing time according to the present embodiment. 使用領域の状態管理処理のプログラムを示す図である。FIG. 13 is a diagram showing a program for managing the state of a used area; 状態管理処理の手順例を示すフローチャートである。13 is a flowchart illustrating an example of a procedure for state management processing. 領域外に格納されるエラー確認処理のプログラムを示す図である(1/5)。FIG. 13 is a diagram showing a program for error checking processing stored outside the area (1/5). 領域外に格納されるエラー確認処理のプログラムを示す図である(2/5)。FIG. 13 is a diagram showing a program for error checking processing stored outside the area (2/5). 領域外に格納されるエラー確認処理のプログラムを示す図である(3/5)。FIG. 13 is a diagram showing a program for error checking processing stored outside the area (3/5). 領域外に格納されるエラー確認処理のプログラムを示す図である(4/5)。FIG. 4 is a diagram showing a program for error checking processing stored outside the area (4/5). 領域外に格納されるエラー確認処理のプログラムを示す図である(5/5)。FIG. 5 is a diagram showing a program for error checking processing stored outside the area (5/5). エラー管理処理テーブル1の構成例を示す図である(1/2)。FIG. 13 is a diagram showing an example of the configuration of an error management processing table 1 (1/2). エラー管理処理テーブル1の構成例を示す図である(2/2)。FIG. 2 is a diagram showing an example of the configuration of an error management processing table 1 (2/2). エラー管理処理テーブル2の構成例を示す図である。FIG. 13 is a diagram illustrating an example of the configuration of an error management processing table 2. エラー確認処理の手順例を示すフローチャートである(1/7)。13 is a flowchart showing an example of a procedure for an error checking process (1/7). エラー確認処理の手順例を示すフローチャートである(2/7)。13 is a flowchart showing an example of a procedure for an error checking process (2/7). エラー確認処理の手順例を示すフローチャートである(3/7)。13 is a flowchart showing an example of a procedure for an error checking process (3/7). エラー確認処理の手順例を示すフローチャートである(4/7)。13 is a flowchart showing an example of a procedure for an error checking process (4/7). エラー確認処理の手順例を示すフローチャートである(5/7)。13 is a flowchart showing an example of a procedure for an error checking process (5/7). エラー確認処理の手順例を示すフローチャートである(6/7)。13 is a flowchart showing an example of a procedure for an error checking process (6/7). エラー確認処理の手順例を示すフローチャートである(7/7)。13 is a flowchart showing an example of a procedure for an error checking process (7/7). 変動パターン決定処理の手順例を示すフローチャートである。13 is a flowchart showing an example of a procedure for a variation pattern determination process. 比較例の変動パターン選択2処理のプログラムを示す図である。A figure showing a program for the variation pattern selection 2 process of the comparative example. 比較例の変動パターン選択2処理の手順例を示すフローチャートである。13 is a flowchart showing an example of a procedure for a variation pattern selection 2 process in a comparative example. 本実施形態の変動パターン選択2処理のプログラム関係を示す図である。A diagram showing the program relationship of the variation pattern selection 2 process in this embodiment. テーブル「D_MOD_SEL_07」を使用した振り分けを示す図である。FIG. 13 is a diagram showing allocation using the table “D_MOD_SEL_07”. 本実施形態の変動パターン選択2処理の手順例を示すフローチャートである。13 is a flowchart showing an example of a procedure for the variation pattern selection 2 process of this embodiment. 性能表示モニタ表示処理の手順例を示すフローチャートである(1/3)。13 is a flowchart showing an example of a procedure for a performance display monitor display process (1/3). 性能表示モニタ表示処理の手順例を示すフローチャートである(2/3)。13 is a flowchart showing an example of a procedure for a performance display monitor display process (2/3). 性能表示モニタ表示処理の手順例を示すフローチャートである(3/3)。13 is a flowchart showing an example of a procedure for a performance display monitor display process (3/3). 未定賞球カウンタ加算処理のプログラムを示す図である。A diagram showing a program for the undetermined prize ball counter addition process. 特別遊技管理フェーズ等の確認を実行するプログラムを示す図である。A figure showing a program for executing confirmation of special game management phases, etc. 連続役物賞球カウンタ等更新処理のプログラムを示す図である。A diagram showing a program for updating the consecutive prize ball counter, etc. ベース値算定後の算定管理バッファ設定処理のプログラムを示す図である。FIG. 13 is a diagram showing a program for a calculation management buffer setting process after a base value is calculated. 算定管理バッファに基づく処理の振り分けのプログラムを示す図である。FIG. 13 is a diagram showing a program for allocating processes based on an estimated management buffer. 役物比率算定後の算定管理バッファ設定処理のプログラムを示す図である。A figure showing a program for the calculation management buffer setting process after calculating the role ratio. 連続役物比率算定後の算定管理バッファ設定処理のプログラムを示す図である。A figure showing a program for the calculation management buffer setting process after calculating the ratio of consecutive reels. ベース値の算定部分のプログラムを示す図である(1/2)。FIG. 13 is a diagram showing the program for calculating the base value (1/2). ベース値の算定部分のプログラムを示す図である(2/2)。FIG. 13 is a diagram showing the program for calculating the base value (2/2). 各種性能値の算定に必要となる時間を示す図である。FIG. 13 is a diagram showing the time required to calculate various performance values. 別案で算定フラグと実行する処理の対応関係を示す図である。FIG. 13 is a diagram showing a correspondence relationship between calculation flags and processes to be executed in another example.

以下、本発明の実施形態について、図面を参照しながら説明する。
図1は、管理遊技機のブロック図である。
管理遊技機100は、管理遊技機遊技盤10と、管理遊技機枠20とを備えており、機械単体内で一定数の遊技球を循環させ、遊技に用いる遊技球や遊技者に遊技球を直接払い出すことを不要とした封入式の遊技機である。管理遊技機100は、管理遊技機専用の専用ユニット(ICカードユニット)と接続することで遊技が可能になる。
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
FIG. 1 is a block diagram of a controlled gaming machine.
The managed gaming machine 100 is equipped with a managed gaming machine game board 10 and a managed gaming machine frame 20, and is an enclosed gaming machine that circulates a certain number of gaming balls within a single machine, eliminating the need for gaming balls to be used in games or for directly paying out gaming balls to players. The managed gaming machine 100 becomes playable by connecting it to a dedicated unit (IC card unit) dedicated to the managed gaming machine.

管理遊技機遊技盤10は、遊技板(アクリル板)、図柄表示装置(特別図柄表示装置、普通図柄表示装置)、入賞・球通過検知機構(各種スイッチ)、風車、遊技くぎ、その他の演出用装置(演出用可動体、液晶表示器、情報表示装置、スピーカ、ランプ)、入賞表示装置、落下の方向に変化を与える装置(可動部材、蓋部材)等を備えている。 The managed gaming machine game board 10 is equipped with a game board (acrylic board), a pattern display device (special pattern display device, normal pattern display device), a winning/ball passing detection mechanism (various switches), a windmill, game nails, other performance devices (movable body for performance, LCD display, information display device, speaker, lamp), a winning display device, a device that changes the direction of the ball falling (movable member, cover member), etc.

管理遊技機枠20は、遊技球、発射装置、電源装置、球磨き装置、遊技球循環装置、遊技球数等表示装置、ガラス板、夜間監視装置、その他演出用装置、鉄球検出装置、前飾り、計数スイッチ等を備えている。 The managed gaming machine frame 20 is equipped with gaming balls, a launching device, a power supply, a ball polishing device, a gaming ball circulation device, a device for displaying the number of gaming balls, etc., a glass panel, a nighttime monitoring device, other devices for performances, an iron ball detection device, a front decoration, a counting switch, etc.

管理遊技機100では、管理遊技機枠20の前飾りを開放状態にすることが可能となっている。前飾りを開放状態にすると、前飾り及びガラス板が開放し、ガラス板の後方に配置されている管理遊技機遊技盤10が露出する。 In the managed gaming machine 100, the front ornament of the managed gaming machine frame 20 can be set to an open state. When the front ornament is set to an open state, the front ornament and the glass plate are opened, and the managed gaming machine game board 10 arranged behind the glass plate is exposed.

〔管理遊技機の概要〕
管理遊技機の概要は、以下の通りである。
(1)管理遊技機100は、パチンコ機と同一の分類に属し、遊技者は、遊技球を管理遊技機遊技盤10の盤面に打ち出すことにより、遊技を行う。
(2)管理遊技機100は、構造的に上皿・下皿が無く、遊技者が直接遊技球に触れることができない。
(3)管理遊技機100は、発射に必要な最小数の遊技球を管理遊技機100内で循環させ、循環途中には、発射装置、球磨き装置、及び、遊技球循環装置が設けられている。
(4)発射装置は、現行遊技機の発射性能を有しており、下部発射であっても上部発射であってもよい。
(5)球磨き装置は、遊技球の汚れを落とすための研磨布がカセット内に収納されており、一定期間毎に交換する。
(6)遊技球数や獲得遊技球数は、数値データとして管理遊技機100(枠制御基板50)で管理して、表示する。
(7)遊技終了時は、計数スイッチ54(計数ボタン)を押下することで管理遊技機100(枠制御基板50)が管理していた遊技球数を専用ユニットに移行して管理することができる。
[Overview of managed gaming machines]
The overview of the managed gaming machine is as follows:
(1) The managed gaming machine 100 belongs to the same classification as a pachinko machine, and a player plays the game by shooting gaming balls onto the surface of the managed gaming machine gaming board 10.
(2) The controlled gaming machine 100 is structurally incapable of having an upper or lower tray, and the player cannot directly touch the gaming balls.
(3) The managed gaming machine 100 circulates the minimum number of gaming balls required for launch within the managed gaming machine 100, and a launching device, a ball polishing device, and a gaming ball circulation device are provided along the circulation path.
(4) The launching device has the same launching capabilities as current gaming machines and may be bottom-launching or top-launching.
(5) The ball polishing device has a cassette containing abrasive cloths for removing dirt from game balls, which are replaced at regular intervals.
(6) The number of game balls played and the number of acquired game balls are managed and displayed as numerical data in the management gaming machine 100 (frame control board 50).
(7) When the game ends, the number of game balls managed by the managed gaming machine 100 (frame control board 50) can be transferred to a dedicated unit and managed by pressing the counting switch 54 (counting button).

管理遊技機遊技盤10は、主制御基板30(遊技制御手段)及び演出制御基板40(演出制御手段)を備えている。
主制御基板30は、主制御基板30は、主制御CPU31を有しており、遊技の進行に関する内容(又は遊技の実行)を制御する。演出制御基板40は、演出制御CPU41を有しており、遊技の演出に関する内容を制御する。主制御基板30は、演出制御基板40及び枠制御基板50と通信可能である。演出制御基板40は、主制御基板30と通信可能であるが、この通信は、主制御基板30から演出制御基板40への片方向のみで行われ、双方向の通信は行われない。
The managed gaming machine game board 10 is equipped with a main control board 30 (game control means) and a presentation control board 40 (presentation control means).
The main control board 30 has a main control CPU 31, and controls the contents related to the progress of the game (or the execution of the game). The presentation control board 40 has a presentation control CPU 41, and controls the contents related to the presentation of the game. The main control board 30 can communicate with the presentation control board 40 and the frame control board 50. The presentation control board 40 can communicate with the main control board 30, but this communication is only one-way from the main control board 30 to the presentation control board 40, and no two-way communication is performed.

主制御基板30には、入賞口スイッチ32、アウトスイッチ33、盤面磁気検出第1センサ34、盤面磁気検出第2センサ35、電波検出センサ36及び性能表示モニタ37が接続されている。また、主制御基板30には、扉開放スイッチ38が接続されている。入賞口スイッチ32は、普通図柄や特別図柄に対応する入賞口、大入賞口、普通入賞口(一般入賞口)等の各スイッチを含んでいる。アウトスイッチ33は、アウト通路に配置されている。遊技領域(盤面)に打ち出された遊技球は、遊技領域を流下し、入賞口又はアウト口に入球するが、いずれの場合であっても、アウト通路に導かれ、アウトスイッチ33により検出される。扉開放スイッチ38は、例えば、ガラス扉が開放している場合には、ガラス扉の開放を検出し、内枠が開放している場合には、内枠の開放を検出し、扉開放信号(エラー信号)を主制御基板30に出力する。なお、扉開放スイッチ38は、ガラス扉用と内枠用の2つのスイッチで構成してもよく、ガラス扉及び内枠を兼用した1つのスイッチで構成してもよい。 The main control board 30 is connected to a winning port switch 32, an out switch 33, a first board magnetic detection sensor 34, a second board magnetic detection sensor 35, a radio wave detection sensor 36, and a performance display monitor 37. The main control board 30 is also connected to a door opening switch 38. The winning port switch 32 includes switches such as a winning port, a large winning port, and a normal winning port (general winning port) corresponding to normal and special patterns. The out switch 33 is arranged in the out passage. A game ball shot into the game area (board) flows down the game area and enters the winning port or the out port, but in either case, it is guided to the out passage and detected by the out switch 33. For example, when the glass door is open, the door opening switch 38 detects the opening of the glass door, and when the inner frame is open, it detects the opening of the inner frame, and outputs a door opening signal (error signal) to the main control board 30. The door opening switch 38 may be configured with two switches, one for the glass door and one for the inner frame, or it may be configured with one switch that serves both the glass door and the inner frame.

盤面磁気検出第1センサ34、盤面磁気検出第2センサ35及び電波検出センサ36は、エラー(不正)検出センサである。盤面磁気検出第1センサ34及び盤面磁気検出第2センサ35は、例えば管理遊技機遊技盤10の異なる位置に設置され、それぞれの位置近傍で所定強度以上の磁気を検出すると、磁気検出信号を主制御基板30に出力する。電波検出センサ36は、例えば管理遊技機遊技盤10に設置され、その位置近傍で所定強度以上の電波を検出すると、電波検出信号を主制御基板30に出力する。 The first board magnetic detection sensor 34, the second board magnetic detection sensor 35, and the radio wave detection sensor 36 are error (fraud) detection sensors. The first board magnetic detection sensor 34 and the second board magnetic detection sensor 35 are installed, for example, at different positions on the managed gaming machine game board 10, and when they detect a magnetism of a predetermined strength or more near their respective positions, they output a magnetic detection signal to the main control board 30. The radio wave detection sensor 36 is installed, for example, on the managed gaming machine game board 10, and when they detect a radio wave of a predetermined strength or more near their respective positions, they output a radio wave detection signal to the main control board 30.

性能表示モニタ37は、管理遊技機100の性能等を表示する表示装置であり、例えば複数の7セグメントLEDを有する。性能表示モニタ37は、性能としてベース値、役物比率、連続役物比率を所定の条件で表示する。また、性能表示モニタ37は、管理遊技機100が設定を有する場合、設定値を表示する。その他に性能表示モニタ37は、管理遊技機100で発生したエラーのコード情報を表示することもできる。 The performance display monitor 37 is a display device that displays the performance of the managed gaming machine 100, and has, for example, multiple 7-segment LEDs. The performance display monitor 37 displays the base value, the role ratio, and the consecutive role ratio as performance under specified conditions. Furthermore, if the managed gaming machine 100 has settings, the performance display monitor 37 displays the setting values. Additionally, the performance display monitor 37 can also display code information for errors that have occurred in the managed gaming machine 100.

演出制御基板40には、液晶表示器42、スピーカ43及びランプ44が接続されている。演出制御基板40(演出制御CPU41)は、主制御基板30から送信されたコマンド(サブコマンド)を受信し、受信したコマンドに基づいて演出の内容を決定し、液晶表示器42、スピーカ43及びランプ44を用いて演出を実行する。 The performance control board 40 is connected to a liquid crystal display 42, a speaker 43, and a lamp 44. The performance control board 40 (performance control CPU 41) receives commands (sub-commands) sent from the main control board 30, determines the content of the performance based on the received commands, and executes the performance using the liquid crystal display 42, the speaker 43, and the lamp 44.

管理遊技機枠20は、枠制御基板50を備えている。枠制御基板50は、枠制御CPU51を有しており、遊技球数に関する内容を制御する。枠制御基板50は、主制御基板30と通信可能である。枠制御基板50には、減算センサ52、ファール球センサ53、計数スイッチ54、遊技球数等表示装置55、タッチセンサ56及び前飾り開放スイッチ57が接続されている。 The managed gaming machine frame 20 is equipped with a frame control board 50. The frame control board 50 has a frame control CPU 51 and controls the contents related to the number of game balls. The frame control board 50 can communicate with the main control board 30. A subtraction sensor 52, a foul ball sensor 53, a counting switch 54, a display device for the number of game balls, etc. 55, a touch sensor 56, and a front decoration opening switch 57 are connected to the frame control board 50.

枠制御基板50(枠制御CPU51)は、主制御基板30から賞球数コマンド(獲得遊技球数の要求)を受信した場合、賞球数コマンドに含まれる賞球数を遊技球数へ加算し、遊技球数等表示装置55に表示する。枠制御基板50は、減算センサ52が遊技球の発射を検出した場合、遊技球数を1減算し、遊技球数等表示装置55に表示する。枠制御基板50は、ファール球センサ53が遊技球の通過を検出した場合、遊技球数を1加算し、遊技球数等表示装置55に表示する。枠制御基板50は、計数スイッチ54が押下された場合、計数球数を図示しない専用ユニットへ送信し、遊技球数から計数球数を減算し、減算後の遊技球数を遊技球数等表示装置55に表示する。枠制御基板50は、図示しない専用ユニットから貸球数の個数情報を受信した場合、その個数情報と遊技球数とを加算した個数を遊技球数として遊技球数等表示装置55に表示する。なお、ファール球(戻り球)とは、発射装置により遊技球を発射したものの遊技領域に到達せずに戻ってきた遊技球である。 When the frame control board 50 (frame control CPU 51) receives a prize ball number command (request for the number of acquired game balls) from the main control board 30, it adds the number of prize balls included in the prize ball number command to the number of game balls, and displays it on the game ball number display device 55. When the subtraction sensor 52 detects the launch of a game ball, the frame control board 50 subtracts one from the number of game balls, and displays it on the game ball number display device 55. When the foul ball sensor 53 detects the passage of a game ball, the frame control board 50 adds one to the number of game balls, and displays it on the game ball number display device 55. When the counting switch 54 is pressed, the frame control board 50 transmits the counted number of balls to a dedicated unit not shown, subtracts the counted number of balls from the number of game balls, and displays the number of game balls after subtraction on the game ball number display device 55. When the frame control board 50 receives information on the number of loaned balls from a dedicated unit (not shown), it adds the number of loaned balls to the number of game balls and displays the sum as the number of game balls on the game ball number display device 55. Note that a foul ball (returned ball) is a game ball that has been launched by the launching device but has returned without reaching the game area.

なお、タッチセンサ56は、静電容量の変化から遊技者の身体が図示しないグリップユニット(発射ハンドル、球発射装置)に触れていることを検出し、その検出信号を枠制御基板50に出力する。また、前飾り開放スイッチ57は、管理遊技機枠20の前飾りが開放状態になると、扉開放信号(エラー信号)を枠制御基板50に出力する。 The touch sensor 56 detects from a change in capacitance that the player's body is touching a grip unit (launch handle, ball launcher) not shown, and outputs the detection signal to the frame control board 50. In addition, the front decoration opening switch 57 outputs a door opening signal (error signal) to the frame control board 50 when the front decoration of the managed gaming machine frame 20 is in the open state.

図2は、主制御基板30(主制御CPU31)が用いるメモリ領域のメモリマップを示す図である。
主制御基板30(主制御CPU31)が用いるメモリ領域は、ROMに割り当てられたメモリ領域(0000H~2FFFH)と、RAM(RWM)に割り当てられたメモリ領域(F000H~F3FFH)とを含んでいる。
FIG. 2 is a diagram showing a memory map of a memory area used by the main control board 30 (main control CPU 31).
The memory area used by the main control board 30 (main control CPU 31) includes a memory area (0000H to 2FFFH) allocated to ROM and a memory area (F000H to F3FFH) allocated to RAM (RWM).

アドレス0000H~0BFFHの領域(第1領域)は、使用領域のプログラムコード(プログラム)を格納可能な領域である。使用領域のプログラムコードは、遊技の実行に必要となる(遊技の進行を制御するための)第1情報である。 The area from addresses 0000H to 0BFFH (first area) is an area capable of storing the program code (program) of the usage area. The program code of the usage area is the first information required to execute the game (to control the progress of the game).

アドレス0000H~0BFFHの領域(第1領域)には、使用領域のプログラムコード(第1情報)、及び、遊技の実行に必要とならないプログラムコード(第2情報)のうちの一部の情報である特別プログラムコード(特別情報)が格納されている。 The area from addresses 0000H to 0BFFH (first area) stores the program code (first information) in the used area, and special program code (special information), which is a portion of the program code (second information) that is not required to play the game.

アドレス0C00H~0FFFHの領域は、未使用の領域である。 The area from address 0C00H to 0FFFH is unused.

アドレス1000H~1BFFHの領域(第1領域)は、使用領域のプログラムデータ(データ)を格納可能な領域である。使用領域のプログラムデータは、遊技の実行に必要となる第1情報である。
アドレス1000H~1BFFHの領域(第1領域)には、使用領域のプログラムデータ(第1情報)、及び、遊技の実行に必要とならないプログラムデータ(第2情報)のうちの一部の情報である特別プログラムデータ(特別情報)が格納されている。
The area from address 1000H to 1BFFH (first area) is an area capable of storing program data (data) of the usage area. The program data of the usage area is the first information required for playing a game.
The area from addresses 1000H to 1BFFH (first area) stores program data (first information) in the used area, and special program data (special information), which is a portion of the program data (second information) that is not required for playing the game.

アドレス1C00H~1FFFHの領域は、未使用の領域である。 The area from address 1C00H to 1FFFH is unused.

アドレス2000H~2FFFHの領域(第2領域)は、領域外のプログラムコード・プログラムデータを格納可能な領域であり、使用領域とは別の領域である。領域外のプログラムコード・プログラムデータは、遊技の実行に必要とならない(例えば、遊技機規則で定める試験を行うための処理や、性能表示モニタに関連する処理に関する)第2情報である。さらに本実施形態では、エラーの発生、解除の判定を行う処理を領域外で実行することを1つの技術的特徴としている。この技術的特徴についてはさらに後述する。 The area from address 2000H to 2FFFH (second area) is an area capable of storing program code and program data outside the area, and is an area separate from the area in use. The program code and program data outside the area is second information that is not required for the execution of the game (for example, related to processing for performing tests defined by gaming machine regulations, or processing related to the performance display monitor). Furthermore, in this embodiment, one of the technical features is that the processing for determining whether an error has occurred and whether it has been cleared is executed outside the area. This technical feature will be described in further detail below.

アドレス2000H~2FFFHの領域(第2領域)には、遊技の実行に必要とならないプログラムコード・プログラムデータ(第2情報)のうちの残りの情報である非特別プログラムコード・非特別プログラムデータ(非特別情報)が格納されている。 The area from address 2000H to 2FFFH (second area) stores non-special program code and non-special program data (non-special information), which is the remaining information from the program code and program data (second information) that is not required for playing the game.

アドレス3000H~EFFFHの領域は、未使用の領域である。 The area from address 3000H to EFFFH is unused.

アドレスF000H~F1FFHの領域は、使用領域のワーク領域及びスタックRWMとして用いられる。
アドレスF200H~F3FFHの領域は、領域外のワーク領域及びスタックRWMとして用いられる。
これらの領域は、使用領域のプログラムが実行されている際や領域外のプログラムが実行されている際に、一時的に用いられる領域やデータを一時的に退避させるスタック領域として用いられる。
The area from addresses F000H to F1FFH is used as a work area for the used area and a stack RWM.
The area from address F200H to F3FFH is used as an external work area and stack RWM.
These areas are used as areas that are used temporarily when a program in the used area is being executed or when a program outside the area is being executed, or as stack areas for temporarily saving data.

アドレスF400H~FFFFHの領域は、未使用の領域である。 The area from address F400H to FFFFH is unused.

ROMのメモリ領域には、使用領域及び領域外以外に、プログラムのタイトル、バージョン等の任意のデータが格納される領域や、主制御基板30(主制御CPU31)がプログラムを実行するために必要な情報が格納されるプログラム管理領域を設けてもよい。 In addition to the use area and outside area, the memory area of the ROM may also have an area in which arbitrary data such as the program title and version is stored, and a program management area in which information required for the main control board 30 (main control CPU 31) to execute the program is stored.

このように、本実施形態のROM及びRAM(記憶領域を有した記憶手段)は、遊技の実行に必要となるプログラムコード・プログラムデータ(第1情報)を格納可能な使用領域(第1領域)、及び、遊技の実行に必要とならないプログラムコード・プログラムデータ(第2情報)を格納可能な領域外(第2領域)を有する。 In this way, the ROM and RAM (storage means having a memory area) of this embodiment have a use area (first area) capable of storing program code and program data (first information) required to execute a game, and an outside area (second area) capable of storing program code and program data (second information) not required to execute a game.

ここで、使用領域とは、遊技の進行を制御するために使用可能な容量が遊技機規則で定められている領域であり、領域外とは、使用可能な容量の計算に含めない領域である。 Here, the used area is the area in which the capacity available for controlling the progress of the game is determined by the gaming machine rules, and the outside area is the area that is not included in the calculation of the available capacity.

主制御基板30(主制御CPU31)は、遊技の実行に必要となるプログラムコード・プログラムデータ(第1情報)及び遊技の実行に必要とならないプログラムコード・プログラムデータ(第2情報)に基づいて管理遊技機100を制御する(遊技制御手段)。 The main control board 30 (main control CPU 31) controls the managed gaming machine 100 based on the program code and program data (first information) required to execute the game and the program code and program data (second information) not required to execute the game (game control means).

使用領域(第1領域)には、遊技の実行に必要となるプログラムコード・プログラムデータ(第1情報)、及び、遊技の実行に必要とならないプログラムコード・プログラムデータ(第2情報)のうちの一部の情報である特別プログラムコード・特別プログラムデータ(特別情報)が格納されている。 The usage area (first area) stores program code and program data (first information) that are required to play the game, and special program code and special program data (special information), which are part of the program code and program data (second information) that are not required to play the game.

領域外(第2領域)には、遊技の実行に必要とならないプログラムコード・プログラムデータ(第2情報)のうちの残りの情報である非特別プログラムコード・非特別プログラムデータ(非特別情報)が格納されている。 Outside the area (second area), non-special program code and non-special program data (non-special information), which are the remaining information from the program code and program data (second information) that is not required for playing the game, are stored.

特別プログラムコード・特別プログラムデータ(特別情報)は、遊技の内容が異なる複数種類の機種における各機種で異なる情報であり、非特別プログラムコード・非特別プログラムデータ(非特別情報)は、遊技の内容が異なる複数種類の機種における各機種で共通する情報である。 Special program codes and special program data (special information) are information that differs between different types of machines with different game content, and non-special program codes and non-special program data (non-special information) are information that is common to all types of machines with different game content.

このため、遊技機の仕様を変更する場合には、特別プログラムコード・特別プログラムデータを変更する必要がある。一方、非特別プログラムコード・非特別プログラムデータは、遊技機の仕様を変更する場合であっても、変更する必要がない。 For this reason, when changing the specifications of a gaming machine, it is necessary to change the special program code and special program data. On the other hand, there is no need to change the non-special program code and non-special program data, even when changing the specifications of a gaming machine.

特別プログラムコード・特別プログラムデータ(特別情報)には、ベースを算出する処理のうち、遊技状態に基づいてベースを算出するか否かを判定する判定処理、及び、賞球数の値を確認する確認処理のうち少なくとも一方の処理に関する情報が含まれている。判定処理又は確認処理のいずれかは、非特別プログラムコード・非特別プログラムデータ(非特別情報)としてもよい。 The special program code/special program data (special information) includes information regarding at least one of the processes for calculating the base, a determination process for determining whether or not to calculate the base based on the game status, and a confirmation process for confirming the value of the number of winning balls. Either the determination process or the confirmation process may be non-special program code/non-special program data (non-special information).

本実施形態では、主制御基板30(主制御CPU31)の性能上、同一の命令(プログラムコード)を使用する場合であっても、使用領域で使用する場合と、領域外で使用する場合とで処理速度が異なることがある。例えば、使用領域ではLDQ命令(特殊ロード命令)を使用する場合、処理速度は速くなるが、領域外でLDQ命令を使用する場合、処理速度は速くならない。このため、領域外では処理速度が遅いLD命令(通常ロード命令)を使わざるを得ない。この理由は、LDQ命令を領域外で使用する場合、スタックポインタ、Qレジスタの退避、再設定、復帰処理を追加する必要があるため、処理速度がかえって遅くなってしまうからである。
このため、本実施形態では、領域外に関する処理を実行する場合よりも、使用領域に関する処理を実行する場合の方が、処理速度が速い。
In this embodiment, due to the performance of the main control board 30 (main control CPU 31), even if the same command (program code) is used, the processing speed may differ between when it is used in the use area and when it is used outside the area. For example, when the LDQ command (special load command) is used in the use area, the processing speed is faster, but when the LDQ command is used outside the area, the processing speed is not faster. For this reason, the LD command (normal load command), which has a slow processing speed, must be used outside the area. The reason for this is that when the LDQ command is used outside the area, it is necessary to add the saving, resetting, and restoring processes of the stack pointer and Q register, which actually slows down the processing speed.
For this reason, in this embodiment, the processing speed is faster when processing is performed on the used area than when processing is performed on the outside of the area.

主制御基板30(主制御CPU31)は、使用領域(第1領域)に格納されているプログラムコード・プログラムデータを用いることにより(実行することにより)、遊技の実行に必要となる使用領域の処理(第1処理)を実行することができる(第1処理実行手段)。 The main control board 30 (main control CPU 31) can execute the processing of the usage area (first processing) required to execute the game by using (executing) the program code and program data stored in the usage area (first area) (first processing execution means).

また、主制御基板30(主制御CPU31)は、領域外(第2領域)に格納されているプログラムコード・プログラムデータを用いることにより(実行することにより)、遊技の実行に必要とならない領域外の処理(第2処理)を実行することができる(第2処理実行手段)。
以上が管理遊技機100の制御に関する構成例である。
In addition, the main control board 30 (main control CPU 31) can execute processing outside the area (second processing) that is not necessary for playing the game by using (executing) the program code and program data stored outside the area (second area) (second processing execution means).
The above is an example of the configuration for controlling the managed gaming machine 100.

続いて、主制御基板30(主制御CPU31)により実行される制御上の処理について説明する。なお、以下では主制御基板30が実行するものとして説明する。 Next, the control processing executed by the main control board 30 (main control CPU 31) will be described. Note that the following description will be given assuming that the main control board 30 executes the processing.

〔主制御装置におけるCPU初期化(メイン)処理〕
管理遊技機100に電源が投入されると、主制御基板30がCPU初期化処理を開始する。CPU初期化処理は、前回の電源遮断時に保存されたバックアップ情報を元に遊技状態を復旧(いわゆる復電)したり、逆にバックアップ情報をクリアしたりすることで、管理遊技機100の初期状態を整えるための処理である。また、CPU初期化処理は、初期状態の調整後に管理遊技機100の安定した遊技動作を保証するためのメイン処理(メイン制御プログラム)として位置付けられる。
[CPU Initialization (Main) Processing in the Main Control Unit]
When the managed gaming machine 100 is powered on, the main control board 30 starts a CPU initialization process. The CPU initialization process is a process for preparing the initial state of the managed gaming machine 100 by restoring the gaming state (so-called power recovery) based on the backup information saved at the time of the previous power cut, or conversely, clearing the backup information. The CPU initialization process is also positioned as a main process (main control program) for ensuring stable gaming operation of the managed gaming machine 100 after adjusting the initial state.

図3及び図4は、CPU初期化処理の手順例を示すフローチャートである。
ステップS230:主制御基板30は、スタックエリアベースアドレスをセットする処理を実行する。
ステップS231:主制御基板30は、内蔵レジスタ設定テーブルのアドレスをセットする処理を実行する。
ステップS232:主制御基板30は、内蔵レジスタアドレスの上位バイト及び設定データ数をロードする処理を実行する。
ステップS233:主制御基板30は、内蔵レジスタ(FFxxH)を設定する処理を実行する。
ステップS234:主制御基板30は、内蔵レジスタアドレスの上位バイト及び設定データ数をロードする処理を実行する。
ステップS235:主制御基板30は、内蔵レジスタ(FFxxH)及び発射許可信号の設定する処理を実行する。
ステップS236:主制御基板30は、Qレジスタに作業領域先頭アドレスの上位バイトをセットする処理を実行する。
ステップS237:主制御基板30は、電源投入時の入力サポートの状態を取得する処理を実行する。
ステップS238:主制御基板30は、サブ制御起動待ち(演出制御基板の起動待ち)、かつ、主制御基板の電源が安定することを確認する処理を実行する。
3 and 4 are flowcharts showing an example of a procedure for CPU initialization processing.
Step S230: The main control board 30 executes a process to set the stack area base address.
Step S231: The main control board 30 executes a process to set an address in the built-in register setting table.
Step S232: The main control board 30 executes a process of loading the upper byte of the built-in register address and the number of set data.
Step S233: The main control board 30 executes a process of setting the built-in register (FFxxH).
Step S234: The main control board 30 executes a process of loading the upper byte of the built-in register address and the number of set data.
Step S235: The main control board 30 executes a process of setting the built-in register (FFxxH) and the launch permission signal.
Step S236: The main control board 30 executes a process of setting the upper byte of the working area start address in the Q register.
Step S237: The main control board 30 executes a process to acquire the state of the input support at the time of power-on.
Step S238: The main control board 30 executes a process to wait for the sub-control to start (wait for the performance control board to start) and to confirm that the power supply of the main control board is stable.

ステップS239:主制御基板30は、RWMアクセスプロテクトレジスタにRAMアクセス許可値を出力する処理を実行する。
ステップS240:主制御基板30は、設定確認及び不正検出状態をクリアする処理を実行する。
ステップS241:主制御基板30は、チェックサム確認処理を呼び出す処理を実行する。
Step S239: The main control board 30 executes a process of outputting a RAM access permission value to the RWM access protection register.
Step S240: The main control board 30 executes a process to check the settings and clear the fraud detection state.
Step S241: The main control board 30 executes a process to call a checksum verification process.

ステップS242:主制御基板30は、チェックサムが正常であるか否かを確認する処理を実行する。
その結果、チェックサムが正常であることを確認した場合(Yes)、主制御基板30は、ステップS243を実行する。一方、チェックサムが正常であることを確認できない場合(No)、主制御基板30は、外部結合子(2)に移行してステップS246(図4)を実行する。
Step S242: The main control board 30 executes a process to confirm whether the checksum is normal or not.
As a result, if it is confirmed that the checksum is normal (Yes), the main control board 30 executes step S243. On the other hand, if it is not confirmed that the checksum is normal (No), the main control board 30 proceeds to the external connector (2) and executes step S246 (FIG. 4).

ステップS243:主制御基板30は、RWMクリアスイッチが押下されていたか否かを確認する処理を実行する。図示しないRWMクリアスイッチは、主制御基板30に接続されている。
その結果、RWMクリアスイッチが押下されていたことを確認した場合(Yes)、主制御基板30は、外部結合子(3)に移行してステップS247(図4)を実行する。一方、RWMクリアスイッチが押下されていたことを確認できない場合(No)、主制御基板30は、ステップS244を実行する。
Step S243: The main control board 30 executes a process to check whether the RWM clear switch has been pressed. The RWM clear switch (not shown) is connected to the main control board 30.
As a result, if it is confirmed that the RWM clear switch has been pressed (Yes), the main control board 30 proceeds to the external connector (3) and executes step S247 (FIG. 4). On the other hand, if it is not confirmed that the RWM clear switch has been pressed (No), the main control board 30 executes step S244.

ステップS244:主制御基板30は、電源復帰時の初期設定を実行する。
ステップS245:主制御基板30は、設定確認処理への移行確認を実行する。
ステップS245の処理を終えると、主制御基板30は、外部結合子(1)に移行してステップS253(図4)を実行する。
Step S244: The main control board 30 executes initial settings when power is restored.
Step S245: The main control board 30 executes a transition check for setting confirmation processing.
After completing the processing of step S245, the main control board 30 proceeds to external connector (1) and executes step S253 (FIG. 4).

ステップS246:主制御基板30は、領域外チェック処理を呼び出す処理を実行する。
ステップS247:主制御基板30は、作業領域初期化処理を実行する。
Step S246: The main control board 30 executes a process to call an out-of-area check process.
Step S247: The main control board 30 executes a work area initialization process.

ステップS248:主制御基板30は、RWM異常であるか否かを確認する処理を実行する。
その結果、RWM異常であることを確認した場合(Yes)、主制御基板30は、ステップS249を実行する。一方、RWM異常であることを確認できない場合(No)、主制御基板30は、ステップS250を実行する。
Step S248: The main control board 30 executes a process to check whether or not there is an RWM abnormality.
As a result, if it is confirmed that there is an RWM abnormality (Yes), the main control board 30 executes step S249. On the other hand, if it is not confirmed that there is an RWM abnormality (No), the main control board 30 executes step S250.

ステップS249:主制御基板30は、RWM異常状態指定値をセットする処理を実行する。次に、主制御基板30は、ステップS252を実行する。 Step S249: The main control board 30 executes a process to set the RWM abnormal state designation value. Next, the main control board 30 executes step S252.

ステップS250:主制御基板30は、設定変更条件を満たしたか否かを確認する処理を実行する。
その結果、設定変更条件を満たしたことを確認した場合(Yes)、主制御基板30は、ステップS251を実行する。一方、設定変更条件を満たしたことを確認できない場合(No)、主制御基板30は、ステップS252を実行する。
Step S250: The main control board 30 executes a process to check whether or not the setting change conditions have been met.
As a result, if it is confirmed that the setting change condition is satisfied (Yes), the main control board 30 executes step S251. On the other hand, if it is not confirmed that the setting change condition is satisfied (No), the main control board 30 executes step S252.

ステップS251:主制御基板30は、設定切り替え状態指定をセットする処理を実行する。
ステップS252:主制御基板30は、遊技機状態フラグを更新する処理を実行する。
ステップS253:主制御基板30は、電源投入時設定処理を呼び出す処理を実行する。
ステップS254:主制御基板30は、枠コマンド待機状態をセットする処理を実行する。
ステップS255:主制御基板30は、デイジーチェーンをリセットする処理を実行する。
ステップS256:主制御基板30は、割込みを禁止する処理(割込み禁止命令)を実行する。
ステップS257:主制御基板30は、初期値乱数更新処理を呼び出す処理を実行する。
ステップS259:主制御基板30は、サブコマンド送信処理を呼び出す処理を実行する。
ステップS260:主制御基板30は、割込みを許可する処理(割込み許可命令)を実行する。
ステップS259の処理を終えると、主制御基板30は、ステップS256の処理に戻って処理を継続する。これにより、メインループ処理が開始する。
Step S251: The main control board 30 executes a process to set the setting switching state designation.
Step S252: The main control board 30 executes a process of updating the gaming machine status flag.
Step S253: The main control board 30 executes a process to call the power-on setting process.
Step S254: The main control board 30 executes a process to set a frame command waiting state.
Step S255: The main control board 30 executes a process to reset the daisy chain.
Step S256: The main control board 30 executes a process to prohibit interrupts (interrupt prohibit command).
Step S257: The main control board 30 executes a process to call the initial value random number update process.
Step S259: The main control board 30 executes a process for calling a sub-command transmission process.
Step S260: The main control board 30 executes a process to permit an interrupt (interrupt permission command).
After completing the process of step S259, the main control board 30 returns to the process of step S256 and continues the process, thereby starting the main loop process.

〔第2の技術的特徴:割込み処理のコードを削減した構成〕
ここで、本実施形態の第2の技術的特徴について、複数の例を挙げて説明する。なお、本実施形態の技術的特徴は、第1から第5までが存在するが、説明の都合上、順番が入れ替わっている。したがって、第1の技術的特徴及び第3以降の技術的特徴については、第2の技術的特徴より後で説明することとする。
[Second Technical Feature: Configuration with Reduced Interrupt Processing Code]
Here, the second technical feature of this embodiment will be described with a number of examples. Note that although there are first to fifth technical features of this embodiment, the order of the features has been changed for convenience of description. Therefore, the first technical feature and the third and subsequent technical features will be described after the second technical feature.

〔第2の技術的特徴の課題〕
使用領域のプログラム容量(コード量)の削減を実現する。本課題は、管理遊技機100以外のパチンコ機であっても、記憶手段に使用領域及び領域外を有する場合には該当する。
[Problem of the second technical feature]
The present invention is directed to reducing the program capacity (amount of code) of the used area. This object is also applicable to pachinko machines other than the managed gaming machine 100, as long as the memory means has a used area and an outside area.

〔第2の技術的特徴による解決手段〕
本実施形態では、メインプログラム容量を削減するため、割込み処理内のプログラムコードを削減できる構成とした。図4の割込み待ちメインループ処理(1)は、本解決手段の1つを構成するものである。
[Solution Means According to Second Technical Feature]
In this embodiment, in order to reduce the main program capacity, the program code in the interrupt process is reduced. The interrupt wait main loop process (1) in FIG. 4 constitutes one of the means for solving this problem.

〔割込み待ちメインループ処理(1)の詳細〕
すなわち、割込み待ちメインループ処理(1)は、主制御基板30が図4の点線枠で囲った部分(符号ML)をループする処理である。本実施形態では、割込み待ちメインループ処理(1)の中で実行する全ての処理、つまり、初期値乱数更新処理(ステップS257)及びサブコマンド送信処理(ステップS259)を割込み禁止命令(ステップS256)と割込み許可命令(ステップS260)で囲んでいる。このため、割込み待ちメインループ処理(1)の中で割込み許可状態となるのは、割込み許可命令(ステップS260)の実行後、プログラム末尾から先頭に戻る命令を実行してから割込み禁止命令(ステップS256)を実行するまでの期間となる。
[Details of interrupt waiting main loop processing (1)]
That is, the interrupt waiting main loop process (1) is a process in which the main control board 30 loops through the portion (symbol ML) enclosed by the dotted line frame in Fig. 4. In this embodiment, all processes executed in the interrupt waiting main loop process (1), that is, the initial value random number update process (step S257) and the subcommand transmission process (step S259), are enclosed by an interrupt prohibition command (step S256) and an interrupt permission command (step S260). Therefore, the interrupt permission state in the interrupt waiting main loop process (1) is the period from the execution of the interrupt permission command (step S260) to the execution of the command to return from the end of the program to the beginning until the execution of the interrupt prohibition command (step S256).

図5は、割込み待ちメインループ処理(1)のプログラムを示す図である。このプログラムは、図4のフローチャートのメインループ部分(点線枠の部分)に対応する。割込み待ちメインループ処理(1)のプログラム(コード)は、以下の通りである。 Figure 5 shows the program for the interrupt waiting main loop process (1). This program corresponds to the main loop portion (the portion enclosed by the dotted line) in the flowchart in Figure 4. The program (code) for the interrupt waiting main loop process (1) is as follows:

「CPUINIT_80:」は、割込み待ちメインループ処理(1)の開始(先頭アドレス)を示すラベルである。 "CPUINIT_80:" is a label indicating the start (first address) of the interrupt waiting main loop process (1).

〔割込み待ちメインループ処理〕
「DI」は、割込み禁止状態にする命令である。これにより、割込み待ちメインループ処理(1)の開始時に割込み禁止状態となる。
[Waiting for interrupt main loop processing]
"DI" is an instruction to disable interrupts. This causes the interrupts to be disabled when the interrupt wait main loop process (1) starts.

〔初期値乱数更新処理〕
「CALLF INI_RND」は、初期値乱数更新処理を呼び出す処理である。本処理では、各種のソフトウェア乱数の初期値をランダムに更新する処理を実行する。
[Initial value random number update process]
"CALLF INI_RND" is a process for calling an initial value random number update process. This process executes a process for randomly updating the initial values of various software random numbers.

〔サブコマンド送信処理〕
「CALLF SBC_OUT」は、サブコマンド送信処理を呼び出す処理である。本処理では、サブコマンドバッファに格納されているサブコマンドをポート出力する処理を実行する。
[Subcommand transmission process]
"CALLF SBC_OUT" is a process for calling a subcommand transmission process, which executes a process for outputting a subcommand stored in the subcommand buffer to a port.

「EI」は、割込み許可状態にする命令である。これにより、割込み許可状態となる。
「JR CPUINIT_80」は、割込み待ちメインループ処理(1)の先頭アドレスにジャンプする命令である。
"EI" is an instruction to enable interrupts, which enables interrupts.
"JR CPUINIT_80" is a command to jump to the top address of the interrupt waiting main loop process (1).

〔割込み許可状態となる期間〕
EI命令はその仕様上、実行した直後は割込みが発生せずに次の命令が実行される。このため、割込み待ちメインループ処理(1)の中で割込みが発生する可能性があるのは、「JR CPUINIT_80」命令を実行した直後だけに限定されることになる。
[Interrupt enabled state period]
Due to the specifications of the EI instruction, immediately after execution, no interrupt occurs and the next instruction is executed. Therefore, the possibility of an interrupt occurring in the interrupt waiting main loop process (1) is limited to immediately after the execution of the "JR CPUINIT_80" instruction.

一方、割込み待ちメインループ処理(1)において、「JR CPUINIT_80」を実行する前後でレジスタは一切使用していない。よって、許可状態で発生した割込み処理の中でレジスタの値が書き換わったとしても、割込み待ちメインループ処理(1)側としては何ら問題がなく、割込み処理側でレジスタの退避及び復帰の手当てを考慮する必要がなくなることになる。 On the other hand, in the interrupt waiting main loop processing (1), no registers are used before or after executing "JR CPUINIT_80". Therefore, even if the register values are rewritten during an interrupt processing that occurs in an enabled state, there is no problem for the interrupt waiting main loop processing (1) side, and there is no need to consider how to save and restore the registers on the interrupt processing side.

〔割込み待ちメインループ処理(2)〕
図6は、割込み待ちメインループ処理(2)の手順例を示すフローチャートである。本実施形態では、このような割込み待ちメインループ処理(2)を採用することもできる。以下、図4の割込み待ちメインループ処理(1)と異なる点を説明する。
[Waiting for interrupt main loop processing (2)]
6 is a flowchart showing an example of the procedure of the interrupt waiting main loop process (2). In this embodiment, such an interrupt waiting main loop process (2) can also be adopted. Below, the points that differ from the interrupt waiting main loop process (1) in FIG. 4 will be described.

ステップS258:主制御基板30は、主コマンド解析処理を呼び出す処理を実行する。 Step S258: The main control board 30 executes a process to call the main command analysis process.

次に、図7は、割込み待ちメインループ処理(2)のプログラムを示す図である。このプログラムは、図6のフローチャートに対応する。以下、図5のプログラムと異なる点を説明する。割込み待ちメインループ処理(2)のプログラム(コード)は、以下の通りである。 Next, FIG. 7 shows the program for the interrupt waiting main loop processing (2). This program corresponds to the flowchart in FIG. 6. Below, we will explain the differences from the program in FIG. 5. The program (code) for the interrupt waiting main loop processing (2) is as follows:

〔主コマンド解析処理〕
「CALLF PY_CMDA」は、主コマンド解析処理を呼び出す処理である。本処理では、枠制御基板50から送信されているコマンド(主コマンド)を解析する処理を実行する。
[Main command analysis process]
"CALLF PY_CMDA" is a process for calling a main command analysis process. In this process, a process for analyzing a command (main command) transmitted from the frame control board 50 is executed.

割込み待ちメインループ処理(2)においても同様に、全ての処理を割込み禁止状態で実行するため、割込み許可状態ではレジスタを使用していない。 Similarly, in the interrupt waiting main loop processing (2), all processing is executed in interrupt disabled state, so no registers are used in interrupt enabled state.

〔比較例〕
図8は、比較例の割込み待ちメインループ処理の手順例を示すフローチャートである。ここでは、本実施形態との比較のため、割込み待ちメインループ処理の中に割込み許可状態で実行される処理が存在している例を挙げるものとする。
Comparative Example
8 is a flowchart showing an example of a procedure for an interrupt waiting main loop process in a comparative example. For comparison with this embodiment, an example is given in which the interrupt waiting main loop process includes a process that is executed in an interrupt enabled state.

ステップS141:本実施形態と同様に、割込み禁止命令を実行し、割込み禁止状態とする。
ステップS142:本実施形態と同様の初期値乱数更新処理を実行する。
ステップS143:本実施形態と同様の主コマンド解析処理を実行する。
ステップS144:本実施形態と同様のサブコマンド送信処理を実行する。
ステップS146:本実施形態と同様に、割込み許可命令を実行し、次の処理実行時から割込み許可状態とする。
Step S141: As in the present embodiment, an interrupt disable command is executed to disable interrupts.
Step S142: Execute the initial value random number update process similar to that of this embodiment.
Step S143: The same main command analysis process as in this embodiment is executed.
Step S144: A sub-command transmission process is executed similarly to the present embodiment.
Step S146: As in this embodiment, an interrupt permission command is executed, and the interrupt permission state is established from the next process execution.

ステップS147:比較例において、その他乱数更新処理が実行される。この処理では、ソフトウェア乱数のうち当選図柄の決定に関わらない乱数(リーチグループ決定乱数、リーチモード決定乱数、変動パターン決定乱数等)を更新する。 Step S147: In the comparative example, other random number update processing is executed. In this processing, the software random numbers that are not involved in determining the winning symbol (reach group determination random numbers, reach mode determination random numbers, variation pattern determination random numbers, etc.) are updated.

図9は、比較例の割込み待ちメインループ処理のプログラムを示す図である。このプログラムは、図8のフローチャートに対応している。以下、本実施形態の割込み待ちメインループ処理(2)のプログラム(図7)と異なる点を説明する。比較例の割込み待ちメインループ処理のプログラム(コード)は、以下の通りである。 Figure 9 is a diagram showing a program for the interrupt waiting main loop processing of the comparative example. This program corresponds to the flowchart of Figure 8. Below, we will explain the differences from the program for the interrupt waiting main loop processing (2) of this embodiment (Figure 7). The program (code) for the interrupt waiting main loop processing of the comparative example is as follows.

図9中の「CALLF SBC_OUT」では、サブコマンド送信処理を呼び出す処理を実行する。そして、次にEI命令を実行して割込み許可状態とする。ここまでのプログラムコードは本実施形態と同様であるが、以下の処理が異なる。 In FIG. 9, "CALLF SBC_OUT" executes a process to call the subcommand transmission process. Next, the EI command is executed to set the interrupt enabled state. The program code up to this point is the same as in this embodiment, but the following process is different.

「CALLF ETC_RND」は、その他乱数更新処理を呼び出す処理である。この処理は、割込み許可状態で実行される。その他乱数更新処理を割込み禁止状態にしていないのは、割込み禁止期間を極力短くするためである。すなわち、その他乱数更新処理まで割込み禁止状態にしてしまうと、メインループ処理の中で割込み禁止期間が長くなり、タイマ割込み処理を十分に実行する猶予が少なくなるからである。 "CALLF ETC_RND" is a process that calls other random number update processes. This process is executed in an interrupt enabled state. The reason why the other random number update processes are not in an interrupt disabled state is to make the interrupt disabled period as short as possible. In other words, if the other random number update processes were also in an interrupt disabled state, the interrupt disabled period in the main loop processing would become longer, and there would be less time to adequately execute the timer interrupt processing.

図10は、比較例のその他乱数更新処理のプログラムを示す図である。比較例では、割込み許可状態で以下のプログラムが実行されることになる。比較例のその他乱数更新処理のプログラム(コード)は、以下の通りである。 Figure 10 is a diagram showing a program for other random number update processing in a comparative example. In the comparative example, the following program is executed in an interrupt enabled state. The program (code) for other random number update processing in the comparative example is as follows:

「ETCRND:」は、その他乱数更新処理の開始を示すラベルである。 "ETCRND:" is a label that indicates the start of the other random number update process.

〔特別図柄リーチモード決定乱数更新処理〕
「LD A,R」は、Rレジスタ値をセットする命令である。
「LDQ HL,(LOW R_RND_TZ__MOD)」は、特別図柄リーチモード決定乱数をロードする命令である。
「ADDWB HL,A」、「INC HL」は、特別図柄リーチモード決定乱数を更新する命令である。
「LD BC,@RND_MOD_MAX+1」は、特別図柄リーチモード決定乱数上限値をセットする命令である。
[Special symbol reach mode determination random number update process]
"LD A,R" is an instruction to set the value of the R register.
"LDQ HL, (LOW R_RND_TZ_MOD)" is a command to load a random number for determining a special symbol reach mode.
"ADDWB HL, A" and "INC HL" are commands for updating the special symbol reach mode determination random number.
"LD BC, @RND_MOD_MAX+1" is a command to set the upper limit of the random number for determining the special symbol reach mode.

〔割込み発生の想定ポイント〕
プログラムコードは続いているが、以下の〔1〕と〔2〕の間にタイマ割込みが発生した場合を想定する。
〔1〕「DIV HL,BC」は、更新結果を特別図柄リーチモード決定乱数上限値で除算する命令である。
〔2〕「LDQ (LOW R_RND_TZ__MOD),BC」は、特別図柄リーチモード決定乱数に剰余をセーブする命令である。
[Points where interrupts are expected to occur]
The program code continues, but assume that a timer interrupt occurs between [1] and [2] below.
[1] "DIV HL, BC" is a command to divide the update result by the upper limit value of the random number for determining the special symbol reach mode.
[2] "LDQ (LOW R_RND_TZ_MOD), BC" is a command to save the remainder in the special symbol reach mode determination random number.

〔割込み処理側のレジスタの退避及び復帰〕
上記〔1〕と〔2〕の間に割込み処理が発生しても、復帰後はその他乱数更新処理が続行されるが、処理の中でAレジスタの他にBCレジスタを使用していることが分かる。このため、タイマ割込み処理中にBCレジスタの値が変化した状態で戻ってくると、〔2〕で特別図柄リーチモード決定乱数にセーブするBCレジスタの値と、〔1〕で演算した結果設定されたBCレジスタは全く無関係な値となる。
したがって、タイマ割込み処理側では、処理の開始時にBCレジスタ等を退避し、タイマ割込み処理の終了時にBCレジスタ等を復帰する必要がある。
[Saving and restoring registers on the interrupt processing side]
Even if an interrupt occurs between [1] and [2] above, after returning, the other random number update processing will continue, but it can be seen that the BC register is used in addition to the A register during the processing. Therefore, if the value of the BC register changes during the timer interrupt processing and the processing returns, the value of the BC register saved in the special symbol reach mode determination random number in [2] and the BC register set as a result of the calculation in [1] will be completely unrelated values.
Therefore, on the timer interrupt processing side, it is necessary to save the BC register and the like at the start of processing, and to restore the BC register and the like at the end of the timer interrupt processing.

プログラムコードが以下に続く。
〔特別図柄変動パターン乱数更新処理〕
「LD DE,@RND_PAT_MAX*256+LOW R_RND_TZ__PAT」は、特別図柄変動パターン乱数上限値及び特別図柄変動パターン乱数のアドレスの下位バイトをセットする命令である。
「RST COUNTUP」は、カウントアップ処理を呼び出す処理である。
「RET」は、呼び出し元の割込み待ちメインループ処理に復帰する命令である。
The program code follows below.
[Special pattern variation pattern random number update process]
"LD DE, @RND_PAT_MAX * 256 + LOW R_RND_TZ__PAT" is a command to set the upper limit value of the special pattern variation pattern random number and the lower byte of the address of the special pattern variation pattern random number.
"RST COUNTUP" is a process for calling the count-up process.
"RET" is an instruction to return to the main loop process waiting for an interrupt from the caller.

〔本実施形態と比較例との対比〕
以下に、本実施形態と比較例とをプログラム上で対比して説明する。
図11は、タイマ割込み処理のプログラムを示す図である。ここでは、対比の結果が明白となる部分を取り上げて説明する。タイマ割込み処理のプログラム(コード)は、以下の通りである。
[Comparison between this embodiment and a comparative example]
The present embodiment and a comparative example will be compared in terms of a program below.
11 is a diagram showing a timer interrupt processing program. Here, we will explain the part where the comparison result is clear. The timer interrupt processing program (code) is as follows:

「TMR_IPT:」は、タイマ割込み処理の開始を示すラベルである。 "TMR_IPT:" is a label that indicates the start of timer interrupt processing.

〔レジスタ退避処理〕
「PUSH GPR」は、AF,BC,DE,HLレジスタを退避する命令である。
ここで、図中に「比較例:必要/本実施形態:不要」と示したように、比較例のプログラムでは本処理が必要となるが、本実施形態では本処理が全く不要となる点で異なる。
[Register save processing]
"PUSH GPR" is an instruction to save the AF, BC, DE, and HL registers.
As shown in the figure as "Comparative Example: Required/Present Embodiment: Not Required," the present embodiment differs in that this process is required in the program of the comparative example, but is completely unnecessary.

〔ダイナミックポート出力処理〕
「CALLF DYM_OUT」は、ダイナミックポート出力処理を呼び出す処理である。
(中略)
[Dynamic port output processing]
"CALLF DYM_OUT" is a process for calling a dynamic port output process.
(Omitted)

〔安全装置発動管理フェーズ設定処理〕
「CALLEX E_SFSET」は、安全装置発動管理フェーズ設定処理を呼び出す処理である。
[Safety device activation management phase setting process]
"CALLEX E_SFSET" is a process for calling a safety device activation management phase setting process.

〔レジスタ復帰処理〕
「POP GPR」は、HL,DE,BC,AFレジスタを復帰する命令である。
ここで、図中に「比較例:必要/本実施形態:不要」と示したように、比較例のプログラムでは本処理が必要となるが、本実施形態では本処理が全く不要となる点で異なる。
[Register recovery process]
"POP GPR" is an instruction to restore the HL, DE, BC, and AF registers.
As shown in the figure as "Comparative Example: Required/Present Embodiment: Not Required," the present embodiment differs in that this process is required in the program of the comparative example, but is completely unnecessary.

〔割込許可処理〕
「TMR_IPT_30」は、割込み許可処理の開始を示すラベルである。
「EI」は、割込み許可状態にする命令である。
「RETI」命令により、割込み発生前に復帰する。
[Interrupt permission process]
"TMR_IPT_30" is a label indicating the start of interrupt permission processing.
"EI" is an instruction to enable interrupts.
The "RETI" instruction returns to the state before the interrupt occurred.

以上の対比から明らかなように、比較例では、割込み処理の開始時にレジスタを退避しておき、終了時にレジスタを復帰させた上で割込み発生前に復帰する処理を実行する必要があるのに対し、本実施形態では、それらの処理を実行する必要がない。したがって、その分のプログラムコード量を削減することができる。より具体的には、「PUSH GPR」命令と「POP GPR」命令が不要となる。これらはいずれも2バイトであるため、本実施形態では比較例の場合よりも、タイマ割込み処理のコード使用量を合計4バイト削減することが可能となる。 As is clear from the above comparison, in the comparative example, it is necessary to save the registers at the start of the interrupt processing, restore the registers at the end, and then execute the process of restoring them before the interrupt occurs, whereas in this embodiment, there is no need to execute these processes. Therefore, it is possible to reduce the amount of program code by that amount. More specifically, the "PUSH GPR" instruction and the "POP GPR" instruction are unnecessary. Since these are both 2 bytes, in this embodiment, it is possible to reduce the amount of code used for timer interrupt processing by a total of 4 bytes compared to the comparative example.

図12は、電源断時の退避処理のプログラムを示す図である。ここでも同様に、対比の結果が明白となる部分を取り上げて説明する。電源断時の退避処理のプログラム(コード)は、以下の通りである。 Figure 12 shows the program for the backup process when the power is turned off. Here too, we will focus on the parts where the results of the comparison are clear and explain them. The program (code) for the backup process when the power is turned off is as follows:

「PRFPROC:」は、電源断時の退避処理の開始を示すラベルである。 "PRFPROC:" is a label that indicates the start of the backup process when the power is turned off.

〔電源断予告信号検出確認処理〕
「PUSH AF」は、AFレジスタを退避する命令である。ここで、図中に「比較例:必要/本実施形態:不要」と示したように、比較例のプログラムでは本命例の実行が必要となるが、本実施形態では不要となる。
「JIBIT Z,@IN3_PWF_POS,(LOW @IN3_PRT),PRFPROC_10」は、入力ポート3の電源断予告信号ビットが0であれば、「PRFPROC_10」に分岐する命令である。
「POP AF」は、AFレジスタを復帰する命令であるが、ここでも図中に「比較例:必要/本実施形態:不要」と示したように、比較例のプログラムでは本命例の実行が必要となるが、本実施形態では不要となる。
「EI」命令で割込み許可状態とする。
「RETI」命令で電源断時の退避処理発生前に復帰する。
[Power off warning signal detection confirmation process]
"PUSH AF" is an instruction to save the AF register. As shown in the figure as "Comparative Example: Necessary/Present Embodiment: Not Required," the program of the comparative example requires execution of the present embodiment, but is not required in the present embodiment.
"JIBIT Z, @IN3_PWF_POS, (LOW @IN3_PRT), PRFPROC_10" is a command to branch to "PRFPROC_10" if the power-off warning signal bit of input port 3 is 0.
"POP AF" is an instruction to restore the AF register, and as shown in the figure as "Comparative Example: Necessary/Present Embodiment: Not Required," the program of the comparative example requires execution of this embodiment, but is not required in this embodiment.
The "EI" instruction enables interrupts.
The "RETI" command returns to the state before the save process occurred when the power was turned off.

〔出力ポートクリア処理〕
「PRFPROC_10:」は、出力ポートクリア処理の開始を示すラベルである。
「OUT (LOW @OT1_PRT),@OT1_LCE_BIT」は、出力ポート1に発射許可信号を出力する命令である。
「LDF HL,D_OUT_PRT」は、出力ポートアドレステーブルのアドレスをセットする命令である。
「LD B,@PRT_CLR_LOP」は、出力ポート初期化ループカウンタをセットする命令である。
「XOR A,A」は、[00H]をセットする命令である。
(以下略)
[Output port clear processing]
"PRFPROC_10:" is a label indicating the start of the output port clear process.
“OUT (LOW @OT1_PRT), @OT1_LCE_BIT” is a command to output a launch enable signal to output port 1.
"LDF HL, D_OUT_PRT" is a command to set the address of the output port address table.
"LD B, @PRT_CLR_LOP" is a command to set the output port initialization loop counter.
"XOR A, A" is a command to set [00H].
(The rest is omitted.)

以上の対比から明らかなように、比較例では、電源断時の退避処理の開始時にレジスタを退避しておき、入力ポート3の電源断予告信号ビットが0でなくなった(電源断状態ではなくなった)場合、電断割込み発生前のプログラムアドレスに戻る準備として、レジスタを復帰させる処理を実行する必要があるのに対し、本実施形態では、それらの処理を実行する必要がない。したがって、その分のプログラムコード量を削減することができる。より具体的には、「PUSH AF」命令と「POP AF」命令が不要となる。これらはいずれも1バイトであるため、本実施形態では比較例の場合よりも、電源断時の退避処理のコード使用量を合計2バイト削減することが可能となる。 As is clear from the above comparison, in the comparative example, the registers are saved at the start of the save process when the power is turned off, and when the power off warning signal bit of input port 3 is no longer 0 (the power is no longer turned off), it is necessary to execute a process to restore the registers in preparation for returning to the program address before the power off interrupt occurred, whereas in this embodiment, it is not necessary to execute such a process. Therefore, the amount of program code can be reduced accordingly. More specifically, the "PUSH AF" command and the "POP AF" command are no longer necessary. Since these are both 1 byte, in this embodiment, it is possible to reduce the amount of code used for the save process when the power is turned off by a total of 2 bytes compared to the comparative example.

〔フローチャートでの対比〕
図13は、タイマ割込み処理の手順例を示すフローチャートである。図13のフローチャートは、図11のプログラムに一部対応している。図13では、比較例では実行する必要があるが、本実施形態では実行する必要がない手順を点線で示している。
[Comparison with a flowchart]
Fig. 13 is a flowchart showing an example of a procedure for timer interrupt processing. The flowchart in Fig. 13 partially corresponds to the program in Fig. 11. In Fig. 13, the procedures that need to be executed in the comparative example but do not need to be executed in this embodiment are indicated by dotted lines.

〔本実施形態で不要のステップ〕
上記のように、本実施形態ではレジスタ退避処理(ステップS300)が不要となる。したがって、ダイナミックポート出力処理(ステップS302)から開始する。
[Steps not required in this embodiment]
As described above, in this embodiment, the register save process (step S300) is not necessary, so the process starts with the dynamic port output process (step S302).

ステップS302:主制御基板30は、ダイナミックポート出力処理を実行する。この処理では、性能表示モニタ37や図示しない統合表示基板等に実装された各ランプの点灯をダイナミック点灯方式で制御するために、コモン単位でのポート出力を行う。具体的には、主制御基板30は、出力ポートをクリアした後、選択されたコモンに対応するコモン用のポート出力バッファに、生成されたコモン出力用データを出力する。出力される内容は、前回のタイマ割込みで設定された内容である。 Step S302: The main control board 30 executes dynamic port output processing. In this processing, port output is performed on a common basis in order to control the lighting of each lamp mounted on the performance display monitor 37 or an integrated display board (not shown) using a dynamic lighting method. Specifically, the main control board 30 clears the output port, and then outputs the generated common output data to the port output buffer for the common corresponding to the selected common. The output contents are the contents set in the previous timer interrupt.

ここで、各コモン用のポート出力バッファに出力されるデータは、タイマ割込み処理が発生する毎に、このダイナミックポート出力処理において1コモンずつ順繰りにポート出力される。例えば、次回に実行されるタイマ割込み処理ではコモン1用として格納されたデータがポート出力され、次々回に実行されるタイマ割込み処理ではコモン2用として格納されたデータがポート出力される、という具合に各コモン用のポート出力バッファに格納されたデータが1つずつ順番に処理されていく。これにより、所定の表示態様(図柄の変動表示や停止表示、作動記憶数表示、遊技状態表示等を行う態様)や性能表示モニタ37を構成する各ランプがコモン単位で順繰りに駆動され、ダイナミック点灯方式により点灯制御される。 The data output to the port output buffer for each common is output to the port one common at a time in this dynamic port output process in sequence each time a timer interrupt process occurs. For example, the data stored for common 1 is output to the port in the timer interrupt process executed next, and the data stored for common 2 is output to the port in the timer interrupt process executed after that, and so on, with the data stored in the port output buffer for each common being processed one by one in sequence. As a result, the lamps that make up the specified display mode (modes for displaying changing or stopped patterns, displaying the number of operation memories, displaying the game status, etc.) and the performance display monitor 37 are driven in sequence on a common basis, and lighting is controlled by the dynamic lighting method.

ステップS303:主制御基板30は、ポート入力処理を実行する。この処理では、入力ポート情報に基づき最新のスイッチ状態を正確に取得するために、主制御基板30は、パラレルI/Oポートから各種スイッチ信号の入力値と前回入力値の反転結果値との論理積を入力ポートオン検出フラグに格納する。この結果、入力ポートオン検出フラグの値(ON/OFF)により、各種スイッチ信号の前回からの変化を踏まえた正確な入力状態を把握することが可能となる。各種スイッチ信号には、入賞口スイッチ32からの入賞検出信号、不正検出スイッチ(盤面磁気検出第1センサ34、盤面磁気検出第2センサ35、電波検出センサ36等)からの検出信号等が含まれる。 Step S303: The main control board 30 executes port input processing. In this processing, in order to accurately obtain the latest switch state based on the input port information, the main control board 30 stores in the input port on detection flag the logical product of the input value of the various switch signals from the parallel I/O port and the inverted result value of the previous input value. As a result, the value (ON/OFF) of the input port on detection flag makes it possible to grasp the accurate input state based on the changes in the various switch signals since the previous time. The various switch signals include a winning detection signal from the winning slot switch 32, and detection signals from the fraud detection switches (first board magnetic detection sensor 34, second board magnetic detection sensor 35, radio wave detection sensor 36, etc.).

ステップS303a:主制御基板30は、遊技機状態フラグが「00H(遊技可能状態)」であるか否かを確認する。 Step S303a: The main control board 30 checks whether the gaming machine status flag is "00H (playable state)" or not.

その結果、遊技機状態フラグが「00H(遊技可能状態)」であることを確認した場合(Yes)、主制御基板30は、ステップS304を実行する。一方、遊技機状態フラグが「00H(遊技可能状態)」であることを確認できない場合(No)、主制御基板30は、ステップS303bを実行する。 As a result, if it is confirmed that the gaming machine status flag is "00H (playable state)" (Yes), the main control board 30 executes step S304. On the other hand, if it is not confirmed that the gaming machine status flag is "00H (playable state)" (No), the main control board 30 executes step S303b.

このような判断処理を実行している理由は、設定変更中や設定確認中等である場合、通常の遊技に係る処理を実行しないようにするためである。そして、設定変更中や設定確認中等において、タイマ割込み処理内の通常の遊技に係る処理を実行しないことで、主制御基板30のプログラムの負荷を軽減することができる。 The reason for performing this type of judgment processing is to prevent normal game-related processing from being executed when settings are being changed, settings are being checked, etc. Furthermore, by not executing normal game-related processing within the timer interrupt processing when settings are being changed, settings are being checked, etc., the load on the program of the main control board 30 can be reduced.

ステップS303b:主制御基板30は、遊技機状態フラグが「03H以上(致命的なエラー状態)」であるか否かを確認する。 Step S303b: The main control board 30 checks whether the gaming machine status flag is "03H or higher (fatal error state)."

その結果、遊技機状態フラグが「03H以上(致命的なエラー状態)」であることを確認した場合(Yes)、主制御基板30は、ステップS303cを実行せずに、ステップS318を実行する。一方、遊技機状態フラグが「03H以上(致命的なエラー状態)」であることを確認できない場合(No)、主制御基板30は、ステップS303cを実行する。 As a result, if it is confirmed that the gaming machine status flag is "03H or higher (fatal error state)" (Yes), the main control board 30 executes step S318 without executing step S303c. On the other hand, if it is not confirmed that the gaming machine status flag is "03H or higher (fatal error state)" (No), the main control board 30 executes step S303c.

このような判断処理を実行している理由は、致命的なエラー状態が発生している場合には、設定変更中や設定確認中に移行させないためである。 The reason for this judgment process is to prevent the system from transitioning to a state in which settings are being changed or checked if a fatal error condition occurs.

ステップS303c:主制御基板30は、設定変更処理(設定関連処理)を実行する。この処理を実行することにより、主制御基板30は、設定の値を変更する際に実行される設定変更処理又は設定の値を確認する際に実行される設定確認処理の少なくとも一方を含む設定関連処理を実行することができる(設定関連処理実行手段)。設定関連処理は、設定変更中又は設定確認中に実行される処理が含まれる。そして、設定変更処理を終えると、主制御基板30は、ステップS318を実行する。ステップS318に移行する理由は、外部情報管理処理において外部信号(セキュリティ信号)を出力するためである。 Step S303c: The main control board 30 executes a setting change process (setting-related process). By executing this process, the main control board 30 can execute a setting-related process including at least one of a setting change process executed when changing a setting value or a setting confirmation process executed when confirming a setting value (setting-related process execution means). The setting-related process includes processes executed during a setting change or setting confirmation. Then, when the setting change process is completed, the main control board 30 executes step S318. The reason for moving to step S318 is to output an external signal (security signal) in the external information management process.

このような処理を実行することにより、主制御基板30は、設定関連処理及びベース関連処理のうち、一方の処理の実行中には、他方の処理の少なくとも一部の処理の実行を制限することができる(制限手段)。つまり、主制御基板30は、設定変更中又は設定確認中である場合(ステップS303a:Yes)、ベース関連処理の少なくとも一部の処理(ステップS304~ステップS317、特に、ステップS308)を実行しないようにすることができる。 By executing such processing, the main control board 30 can restrict the execution of at least a portion of the setting-related processing and the base-related processing while one of the processing is being executed (restriction means). In other words, when the setting is being changed or confirmed (step S303a: Yes), the main control board 30 can prevent the execution of at least a portion of the base-related processing (steps S304 to S317, particularly step S308).

ステップS304:主制御基板30は、タイマ更新処理を実行する(特別情報継続送信処理実行手段)。この処理では、主制御基板30は、遊技に用いる各種タイマ(図柄の変動時間・停止時間や電動役物の開放時間・閉鎖時間等を管理するタイマ)の他、外部情報用の各種タイマ、セキュリティ信号出力用タイマ等のカウンタを更新する処理(減算処理等)を実行する。 Step S304: The main control board 30 executes a timer update process (special information continuous transmission process execution means). In this process, the main control board 30 executes a process (subtraction process, etc.) to update counters of various timers used in the game (timers that manage the change time and stop time of the patterns, the opening and closing time of the electric role, etc.), various timers for external information, timers for security signal output, etc.

ステップS305:主制御基板30は、初期値乱数更新処理を実行する。処理の内容は、割込み待ちメインループ処理の初期値乱数更新処理(図4のステップS257)と同様である。 Step S305: The main control board 30 executes an initial value random number update process. The content of the process is the same as the initial value random number update process of the interrupt wait main loop process (step S257 in FIG. 4).

ステップS306:主制御基板30は、当り図柄乱数更新処理を実行する。この処理では、主制御基板30は特別図柄及び普通図柄の抽選用の各種乱数を発生させるためのカウンタの値を更新する。各カウンタの値は、RAMのカウンタ領域にてインクリメントされ、それぞれ規定の範囲内でループする。各種乱数には、例えば大当り図柄乱数等が含まれる。 Step S306: The main control board 30 executes a winning symbol random number update process. In this process, the main control board 30 updates the counter values for generating various random numbers for the lottery of special symbols and normal symbols. The value of each counter is incremented in the counter area of the RAM, and each loops within a specified range. The various random numbers include, for example, a winning symbol random number.

ステップS307:主制御基板30は、スイッチ管理処理を実行する。この処理では、先のポート入力処理(ステップS303)で入力したスイッチ信号のうち、入賞口スイッチ32からの入賞検出信号に基づいて遊技中に発生した事象の判定を行い、それぞれ発生した事象に応じた処理を実行する。 Step S307: The main control board 30 executes switch management processing. In this processing, it determines the events that have occurred during play based on the winning detection signal from the winning slot switch 32, among the switch signals input in the previous port input processing (step S303), and executes processing according to each of the events that have occurred.

ステップS308:主制御基板30は、加算数算定処理を実行する(ベース関連処理実行手段)。加算数算定処理は、ベース関連処理である。本処理は、使用領域の処理である。この処理において、主制御基板30は、遊技状態と、入賞口スイッチ32、アウトスイッチ33の状態を確認し、ベース計算用に「領域外のRAMに加算すべき値(4msの間に発生した賞球数、アウト数等の加算数)」を算出する。具体的には、主制御基板30は、発射球数A(通常アウト加算数)、発射球数B(総アウト加算数)、獲得球数(通常賞球加算数)の値を決定する処理を実行する。 Step S308: The main control board 30 executes an addition number calculation process (base-related process execution means). The addition number calculation process is a base-related process. This process is a process for the use area. In this process, the main control board 30 checks the game status and the state of the winning slot switch 32 and the out switch 33, and calculates the "value to be added to the RAM outside the area (additions such as the number of winning balls and outs generated in 4 ms)" for the base calculation. Specifically, the main control board 30 executes a process to determine the values of the number of shot balls A (normal out addition number), the number of shot balls B (total out addition number), and the number of acquired balls (normal prize ball addition number).

ステップS309,ステップS310:主制御基板30は、特別遊技管理処理及び普通遊技管理処理を実行する。これらの処理は、管理遊技機100における遊技を具体的に進行させるためのものである。 Step S309, Step S310: The main control board 30 executes special game management processing and normal game management processing. These processes are intended to specifically progress the game on the managed gaming machine 100.

特別遊技管理処理(ステップS309)では、主制御基板30は、第1特別図柄又は第2特別図柄に対応する内部抽選の実行を制御したり、図示しない第1特別図柄表示装置及び第2特別図柄表示装置による変動表示や停止表示を決定したり、その表示結果に応じて図示しない第1可変入賞装置及び第2可変入賞装置の作動を制御したりする。 In the special game management process (step S309), the main control board 30 controls the execution of an internal lottery corresponding to the first special pattern or the second special pattern, determines the variable display or stationary display by the first special pattern display device and the second special pattern display device (not shown), and controls the operation of the first variable winning device and the second variable winning device (not shown) according to the display results.

また、普通遊技管理処理(ステップS310)では、主制御基板30は、図示しない普通図柄表示装置による変動表示や停止表示を決定したり、その表示結果に応じて図示しない可変始動入賞装置の作動を制御したりする。 In addition, in the normal game management process (step S310), the main control board 30 determines the variable display and stop display by the normal pattern display device (not shown), and controls the operation of the variable start winning device (not shown) according to the display result.

ステップS311:主制御基板30は、状態管理処理を実行する。この処理では、主制御基板30は、入賞頻度の異常やベース異常等のエラー状態が発生していないか否かのチェックを行う。エラー状態を検知した場合、主制御基板30は、遊技場のホールコンピュータに対してはセキュリティ信号の出力により、また、演出制御基板40に対しては所定のエラーコマンドの送信により、異常が発生したことを通知する。なお、この処理において、主制御基板30は、扉開放や不正検出(磁石、電波、振動等)に関するエラー処理を実行してもよい。 Step S311: The main control board 30 executes a status management process. In this process, the main control board 30 checks whether an error state such as an abnormality in the winning frequency or a base abnormality has occurred. If an error state is detected, the main control board 30 notifies the arcade's hall computer of the abnormality by outputting a security signal and by sending a specified error command to the performance control board 40. Note that in this process, the main control board 30 may also execute error processing related to door opening and fraud detection (magnets, radio waves, vibrations, etc.).

ステップS312:主制御基板30は、入賞口スイッチ処理を実行する。この処理では、先のポート入力処理(ステップS303)において入賞口スイッチ32から入力された入賞検出信号に基づき格納した各入力ポートオン検出フラグがONの場合に、それぞれの対象となる賞球制御カウンタを1加算して更新する。 Step S312: The main control board 30 executes the winning port switch process. In this process, if the input port on detection flags stored based on the winning detection signal input from the winning port switch 32 in the previous port input process (step S303) are ON, the prize ball control counters for each are updated by incrementing them by 1.

ステップS313:主制御基板30は、払出制御管理処理を実行する。この処理では、主制御基板30はまず払出コマンドバッファが空でないか(送信すべき払出コマンドがセットされているか)否かを確認し、空でない(払出コマンドがセットされている)場合は、払出コマンドバッファに出力された各種払出コマンドを枠制御基板50に対して送信する。例えば、電源投入時の起動モードを示す払出コマンドは、CPU初期化処理の過程でセットされ、払出コマンドバッファに出力され、この起動モードを示す払出コマンドがこの処理で送信される。一方、払出コマンドバッファが空である場合は、賞球の払い出しを指示するための処理に進む。主制御基板30は賞球制御カウンタが0でないか否かを確認し、賞球制御カウンタが0でない場合は、このカウンタに対応する賞球個数を指示する賞球指定の払出コマンドを枠制御基板50に対して送信する。 Step S313: The main control board 30 executes the payout control management process. In this process, the main control board 30 first checks whether the payout command buffer is empty (whether the payout command to be sent is set), and if it is not empty (the payout command is set), it sends the various payout commands output to the payout command buffer to the frame control board 50. For example, the payout command indicating the startup mode when the power is turned on is set during the CPU initialization process and output to the payout command buffer, and the payout command indicating this startup mode is sent in this process. On the other hand, if the payout command buffer is empty, it proceeds to a process for instructing the payout of prize balls. The main control board 30 checks whether the prize ball control counter is not 0, and if the prize ball control counter is not 0, it sends a prize ball-designated payout command indicating the number of prize balls corresponding to this counter to the frame control board 50.

また、特に電源投入時においては、CPU初期化処理の過程でセットされた払出コマンドが正常に送信された場合、主制御基板30はこれを契機として発射許可信号をオンにする。具体的には、主制御基板30は電源投入時に出力した払出コマンドバッファをクリアするとともに、出力ポートの特定ビットをセットすることで発射許可信号をオンにする。これにより、電源投入後の正常動作を確認した上で遊技球の発射が許可され、この発射許可信号が枠制御基板50に送られることにより、遊技球の発射が可能な状態となる。 In particular, when the power is turned on, if the payout command set during the CPU initialization process is sent normally, the main control board 30 uses this as an opportunity to turn on the launch permission signal. Specifically, the main control board 30 clears the payout command buffer that was output when the power was turned on, and turns on the launch permission signal by setting a specific bit of the output port. This allows the launch of game balls after confirming normal operation after power is turned on, and this launch permission signal is sent to the frame control board 50, making it possible to launch game balls.

また、主制御基板30は、払出制御管理処理において、演出制御基板40に対して賞球個数の内容を伝達する賞球内容コマンドを出力する。図示しない第1可変入賞装置又は第2可変入賞装置に対応する入賞口スイッチ32から入賞検出信号が入力された場合、第1利益(例えば、遊技球15個分)に対応する賞球内容コマンドを生成する。なお、コマンドを生成するとは、コマンドをサブコマンド送信用バッファに格納することを意味する(以下、同様)。また、図示しない普通入賞口に対応する入賞口スイッチ32から入賞検出信号が入力された場合、第2利益(例えば、遊技球10個分)に対応する賞球内容コマンドを生成する。賞球内容コマンドは、割込み待ちメインループ処理のサブコマンド送信処理(図4中のステップS259)において演出制御基板40に送信される。 In addition, the main control board 30 outputs a prize ball content command that transmits the content of the number of prize balls to the performance control board 40 in the payout control management process. When a winning detection signal is input from the winning port switch 32 corresponding to the first variable winning device or the second variable winning device (not shown), a prize ball content command corresponding to the first profit (e.g., 15 game balls) is generated. Note that generating a command means storing the command in a sub-command transmission buffer (same below). In addition, when a winning detection signal is input from the winning port switch 32 corresponding to the normal winning port (not shown), a prize ball content command corresponding to the second profit (e.g., 10 game balls) is generated. The prize ball content command is transmitted to the performance control board 40 in the sub-command transmission process (step S259 in FIG. 4) of the interrupt waiting main loop process.

ステップS315:主制御基板30は、試験信号管理処理を実行する。この処理は、領域外の処理とすることができる。この処理では、主制御基板30が自己の内部状態(例えば、普通図柄遊技管理状態、特別図柄遊技管理状態、発射位置指定状態、大当り中、小当り中、確率変動機能作動中、時間短縮機能作動中等)を表す各種の試験信号を生成し、これらをポート出力要求バッファに格納する。この試験信号により、例えば主制御基板30の外部でその内部状態を試験することができる。 Step S315: The main control board 30 executes a test signal management process. This process can be an out-of-area process. In this process, the main control board 30 generates various test signals that indicate its own internal state (e.g., normal symbol game management state, special symbol game management state, launch position designation state, big win, small win, probability fluctuation function in operation, time reduction function in operation, etc.) and stores these in the port output request buffer. These test signals make it possible to test the internal state, for example, outside the main control board 30.

ステップS316:主制御基板30は、LED表示設定処理を実行する。この処理では、主制御基板30は、図示しない普通図柄表示装置、普通図柄作動記憶ランプ、第1特別図柄表示装置、第2特別図柄表示装置、第1特別図柄作動記憶ランプ、第2特別図柄作動記憶ランプ、遊技状態表示装置等に含まれるLEDを点灯制御するためのコモン出力用データを生成する処理を実行する。なお、性能表示モニタ37に関連する処理は、性能表示モニタ制御処理において実行する。 Step S316: The main control board 30 executes an LED display setting process. In this process, the main control board 30 executes a process to generate common output data for controlling the lighting of LEDs included in the normal symbol display device, normal symbol operation memory lamp, first special symbol display device, second special symbol display device, first special symbol operation memory lamp, second special symbol operation memory lamp, game status display device, etc. (not shown). Note that the process related to the performance display monitor 37 is executed in the performance display monitor control process.

より詳細には、主制御基板30は、特別遊技管理処理(ステップS309)や普通遊技管理処理(ステップS310)において決定された図柄の変動表示や停止表示、作動記憶数表示、遊技状態表示等に基づいて、対応する態様で各ランプを点灯させるための駆動信号を、コモン出力用データとして生成する。 More specifically, the main control board 30 generates drive signals as common output data to light up each lamp in a corresponding manner based on the changing and stopping display of the patterns, the number of operation memories, the game status display, etc., determined in the special game management process (step S309) and the normal game management process (step S310).

ステップS317:主制御基板30は、ソレノイドデータ設定処理を実行する。この処理では、主制御基板30は、特別遊技管理処理(ステップS309)や普通遊技管理処理(ステップS310)等において生成された図示しない普通電動役物ソレノイド、第1大入賞口ソレノイド及び第2大入賞口ソレノイドの各駆動信号、試験信号等を合わせて(合成して)ポート出力バッファに格納する。この後、主制御基板30は、ソレノイドデータポート出力処理を実行する。この処理では、主制御基板30は各出力バッファ(ポート出力バッファ)に値が格納されているかを確認し、値が格納されている場合はポート出力する。例えば、ポート出力バッファに格納された各ソレノイドの各駆動信号をポート出力する。この場合、各駆動信号が対応する各ソレノイドに送信され、各ソレノイドは駆動信号に応じた動作を実行する。 Step S317: The main control board 30 executes a solenoid data setting process. In this process, the main control board 30 combines (combines) the drive signals and test signals of the normal electric role solenoid (not shown), the first large prize opening solenoid, and the second large prize opening solenoid, which are generated in the special game management process (step S309) and the normal game management process (step S310), and stores them in the port output buffer. After this, the main control board 30 executes a solenoid data port output process. In this process, the main control board 30 checks whether a value is stored in each output buffer (port output buffer), and if a value is stored, outputs the port. For example, it outputs the drive signals of each solenoid stored in the port output buffer to the port. In this case, each drive signal is sent to the corresponding solenoid, and each solenoid performs an operation according to the drive signal.

ステップS318:次に主制御基板30は、外部情報管理処理を実行する。この処理では、主制御基板30は図示しない専用ユニットを通じて遊技場のホールコンピュータに外部出力する外部情報信号(例えば賞球情報、扉開放情報、図柄確定回数情報、大当り情報、始動口情報、セキュリティ信号等)をポート出力要求バッファに格納する。
外部情報管理処理では、「設定変更中又は設定確認中」等である場合に、外部信号(セキュリティ信号)を出力する。
Step S318: Next, the main control board 30 executes an external information management process. In this process, the main control board 30 stores in the port output request buffer external information signals (e.g., winning ball information, door opening information, number of pattern determination information, jackpot information, starting gate information, security signals, etc.) to be output to the hall computer of the game center via a dedicated unit (not shown).
In the external information management process, when "settings are being changed or settings are being confirmed" or the like, an external signal (security signal) is output.

ここで、セキュリティ信号とは、何かしらの異常状態が発生した場合、設定変更状態、又は設定確認状態に移行した場合に出力される信号である。 Here, a security signal is a signal that is output when some abnormal condition occurs or when the system transitions to a setting change state or setting confirmation state.

主制御基板30は、遊技機状態フラグ(遊技機状態情報)に格納されている値を参照してセキュリティ信号を送信するか否かを決定する(特別情報送信処理実行手段)。例えば、遊技機状態フラグに、遊技可能状態に対応する値(00H)が格納されている場合、セキュリティ信号を送信しないと判断し、遊技可能状態に対応する値(00H)以外の値(01H~05H)が格納されている場合、セキュリティ信号を送信すると判断する。 The main control board 30 refers to the value stored in the gaming machine status flag (gaming machine status information) and decides whether or not to transmit a security signal (special information transmission process execution means). For example, if the gaming machine status flag stores a value (00H) corresponding to a playable state, it decides not to transmit a security signal, and if it stores a value (01H to 05H) other than the value (00H) corresponding to a playable state, it decides to transmit a security signal.

ステップS319:主制御基板30は、性能表示モニタ制御処理を実行する(ベース関連処理実行手段)。性能表示モニタ制御処理は、ベース関連処理である。本処理は、領域外の処理である。この処理において、主制御基板30は、性能表示モニタ37の表示内容の切替等の処理を実行したり、性能としてベース値、役物比率、連続役物比率を算定したり、算定したベース値、役物比率、連続役物比率を性能表示モニタ37に表示するための駆動信号を、コモン出力用データとして生成したりする処理を実行する。なお、処理の詳細は、後述する。 Step S319: The main control board 30 executes the performance display monitor control process (base-related process execution means). The performance display monitor control process is a base-related process. This process is outside the area. In this process, the main control board 30 executes processes such as switching the display contents of the performance display monitor 37, calculating the base value, the role ratio, and the continuous role ratio as performance, and generating a drive signal for displaying the calculated base value, the role ratio, and the continuous role ratio on the performance display monitor 37 as common output data. Details of the process will be described later.

〔本実施形態で不要のステップ〕
ここで上記のように、本実施形態ではレジスタ復帰処理(ステップS320)が不要となる。
[Steps not required in this embodiment]
As described above, in this embodiment, the register restoration process (step S320) is not necessary.

ステップS321:主制御基板30は、安全装置発動管理フェーズ設定処理を実行する。この処理では、安全装置発動管理フェーズを設定する。安全装置は、1日の払出数が規定数に達した場合に発動し、管理遊技機100を遊技停止(打止)にする。 Step S321: The main control board 30 executes a safety device activation management phase setting process. In this process, a safety device activation management phase is set. The safety device is activated when the number of payouts in one day reaches a specified number, and the managed gaming machine 100 stops playing (stops playing).

ステップS322:主制御基板30は、割込み許可処理を実行する。ここで割込みが許可されることにより、タイマ割込み処理の次ステップ以降を実行している間に他の割込みが発生することが可能となる。このように、タイマ割込み処理は多重割込みが許可されている。 Step S322: The main control board 30 executes the interrupt permission process. By permitting interrupts here, it becomes possible for other interrupts to occur while the next step or subsequent steps of the timer interrupt process are being executed. In this way, multiple interrupts are permitted in the timer interrupt process.

以上の手順を実行すると、主制御基板30はタイマ割込み処理を終了して割込み待ちメインループ処理に復帰する。上記のように、割込み待ちメインループ処理ではレジスタを使用中に割込み許可状態とならないので、復帰した先では、特にレジスタに対する手当てを考慮する必要がない。 When the above steps are performed, the main control board 30 ends the timer interrupt process and returns to the main loop process waiting for an interrupt. As described above, the interrupt-enabled state does not occur while the register is in use in the main loop process waiting for an interrupt, so there is no need to consider any special measures for the register when returning.

図14及び図15は、電源断時の退避処理の手順例を示すフローチャートである。このフローチャートは、図12のプログラムに一部対応している。本処理は、主制御基板30(主制御CPU31)が実行する。 Figures 14 and 15 are flowcharts showing an example of the procedure for the evacuation process when the power is turned off. This flowchart partially corresponds to the program in Figure 12. This process is executed by the main control board 30 (main control CPU 31).

〔本実施形態で不要のステップ〕
上記のように、本実施形態では、図中に点線で示したレジスタ退避処理(ステップS270)が不要となる。したがって、電源断予告信号検出確認処理(ステップS280)から開始する。
[Steps not required in this embodiment]
As described above, in this embodiment, the register save process (step S270) indicated by the dotted line in the figure is not necessary, and the process starts with the power cut warning signal detection confirmation process (step S280).

〔電源断予告信号検出確認処理〕
ステップS280:主制御基板30は、電源断予告信号がONであるか否かを確認(再確認)する処理を実行する。
その結果、電源断予告信号がONであることを確認した場合(Yes)、主制御基板30は、ステップS282を実行する。一方、電源断予告信号がONであることを確認できない場合(No)、主制御基板30は、ステップS281を実行する。
[Power off warning signal detection confirmation process]
Step S280: The main control board 30 executes a process to confirm (reconfirm) whether the power off warning signal is ON.
As a result, when it is confirmed that the power-off warning signal is ON (Yes), the main control board 30 executes step S282. On the other hand, when it is not confirmed that the power-off warning signal is ON (No), the main control board 30 executes step S281.

ステップS281:主制御基板30は、割込みを許可する処理を実行する。
ステップS281の処理を終えると、主制御基板30は、割込み前のアドレスに戻る。
Step S281: The main control board 30 executes a process to permit an interrupt.
When the processing of step S281 is completed, the main control board 30 returns to the address before the interrupt.

〔本実施形態で不要のステップ〕
ここで、上記のように本実施形態では、電源断状態ではなくなったために割込み前に復帰する場合でも、図中に点線で示したレジスタ復帰処理(ステップS272)が不要となる。
[Steps not required in this embodiment]
As described above, in this embodiment, even if the power is no longer off and the state returns to the state before the interrupt, the register restoration process (step S272) indicated by the dotted line in the figure is not required.

ステップS282:主制御基板30は、出力ポート1に発射許可信号を出力する処理を実行する。
ステップS283:主制御基板30は、出力ポートアドレステーブルのアドレスをセットする処理を実行する。
ステップS284:主制御基板30は、出力ポート初期化ループカウンタをセットする処理を実行する。
ステップS285:主制御基板30は、Aレジスタに[00H]をセットする処理を実行する。
ステップS286:主制御基板30は、対象アドレスの内容をロードする処理を実行する。
ステップS287:主制御基板30は、出力ポートに[00H]を出力する処理を実行する。
ステップS288:主制御基板30は、HLレジスタをインクリメントする処理を実行する。
Step S282: The main control board 30 executes a process of outputting a launch permission signal to output port 1.
Step S283: The main control board 30 executes a process to set the address in the output port address table.
Step S284: The main control board 30 executes a process to set an output port initialization loop counter.
Step S285: The main control board 30 executes a process of setting [00H] in the A register.
Step S286: The main control board 30 executes a process to load the contents of the target address.
Step S287: The main control board 30 executes a process of outputting [00H] to the output port.
Step S288: The main control board 30 executes a process to increment the HL register.

ステップS289:主制御基板30は、ループ継続であるか(すなわち、ステップS286からステップS288までの処理を再び実行するか)否かを確認する処理を実行する。
その結果、ループ継続であることを確認した場合(Yes)、主制御基板30は、ステップS286を実行する。一方、ループ継続であることを確認できない場合(No)、主制御基板30は、外部結合子(1)に移行してステップS290(図15)を実行する。
Step S289: The main control board 30 executes a process to check whether the loop is to continue (i.e., whether the processes from step S286 to step S288 are to be executed again).
As a result, if it is confirmed that the loop is to continue (Yes), the main control board 30 executes step S286. On the other hand, if it is not confirmed that the loop is to continue (No), the main control board 30 proceeds to the external connector (1) and executes step S290 (FIG. 15).

ステップS290:主制御基板30は、チェックサム算定処理を呼び出す処理を実行する。
ステップS291:主制御基板30は、RWMアクセスプロテクトレジスタにRAMアクセス禁止値を出力する処理を実行する。
ステップS292:主制御基板30は、電源断予告信号確認設定値をセットする処理を実行する。
Step S290: The main control board 30 executes a process to call the checksum calculation process.
Step S291: The main control board 30 executes a process of outputting a RAM access prohibition value to the RWM access protection register.
Step S292: The main control board 30 executes a process of setting the power off warning signal confirmation setting value.

ステップS293:主制御基板30は、電源断予告信号がオンであるか否かを確認する処理を実行する。
その結果、電源断予告信号がオンであることを確認した場合(Yes)、主制御基板30は、ステップS292を実行する。一方、電源断予告信号がオンであることを確認できない場合(No)、主制御基板30は、ステップS294を実行する。
Step S293: The main control board 30 executes a process to check whether the power off warning signal is on or not.
As a result, if it is confirmed that the power-off warning signal is on (Yes), the main control board 30 executes step S292. On the other hand, if it is not confirmed that the power-off warning signal is on (No), the main control board 30 executes step S294.

ステップS294:主制御基板30は、HLレジスタをデクリメントする処理を実行する。 Step S294: The main control board 30 executes a process to decrement the HL register.

ステップS295:主制御基板30は、第2ゼロフラグが0であるか否かを確認する処理を実行する。
その結果、第2ゼロフラグが0であることを確認した場合(Yes)、主制御基板30は、ステップS293を実行する。一方、第2ゼロフラグが0であることを確認できない場合(No)、主制御基板30は、[0000H]番地にジャンプする処理を実行する。
Step S295: The main control board 30 executes a process to check whether the second zero flag is 0 or not.
As a result, when it is confirmed that the second zero flag is 0 (Yes), the main control board 30 executes step S293. On the other hand, when it is not confirmed that the second zero flag is 0 (No), the main control board 30 executes a process of jumping to address [0000H].

〔第3の技術的特徴:特定命令を使用したチェックサム算定処理の構成〕
ここで、本実施形態の第3の技術的特徴について説明する。第3の技術的特徴は、電源断時の退避処理の中で実行されるチェックサム算定処理(図15のステップS290)、及びCPU初期化処理の中で実行されるチェックサム確認処理(図3のステップS241)に特定の命令を使用した構成である。
[Third Technical Feature: Configuration of Checksum Calculation Process Using Specific Instructions]
Here, a third technical feature of this embodiment will be described. The third technical feature is a configuration in which specific instructions are used in the checksum calculation process (step S290 in FIG. 15) executed in the save process when the power is turned off, and the checksum confirmation process (step S241 in FIG. 3) executed in the CPU initialization process.

〔第3の技術的特徴の課題〕
電源断時のチェックサムの算定、電源再投入時のチェックサムの確認にかかる時間を短縮することを課題とする。
すなわち、管理遊技機100のような遊技機では、電源投入時にバックアップチェックデータ及びチェックサムの確認を行い、異常であった場合(初回起動時を含む)は全てのRWMをクリアしている。
このとき、バックアップチェックデータ及びチェックサムの設定は、電源断時の退避処理で作成、保存を行うことになるが、既に電源供給は絶たれているため、チェックサムの算定及び確認については、いずれも可能な限り短い時間で処理を終わらせる必要がある。
[Problem of the third technical feature]
The present invention aims to reduce the time required to calculate a checksum when the power is turned off and to confirm the checksum when the power is turned on again.
That is, in a gaming machine such as the managed gaming machine 100, the backup check data and checksum are checked when the power is turned on, and if any abnormality is found (including the first time the machine is started), all RWMs are cleared.
At this time, the backup check data and checksum settings are created and saved during the backup process when the power is turned off. However, because the power supply has already been cut off, the calculation and confirmation of the checksum must both be completed in the shortest possible time.

〔チェックサムの算定方法〕
チェックサムの算定方法は、「スタック領域の2バイトを除く使用領域の全領域と領域外の使用RWMを減算した結果の下位1バイト」とする。例えば、算定対象のRWMの値が1,2,3,4である場合は、0-1-2-3-4=-10となる。
チェックサムは符号なしの1バイトの整数(0~255)であるため、RWMに保存される値は-10+256=246となる。
[Checksum calculation method]
The checksum is calculated by subtracting the entire used area excluding the two bytes of the stack area from the used RWM outside the area, and taking the lowest byte of the result. For example, if the RWM values to be calculated are 1, 2, 3, and 4, the result is 0-1-2-3-4=-10.
Since the checksum is an unsigned 1-byte integer (0 to 255), the value stored in the RWM will be -10 + 256 = 246.

本発明の発明者等は鋭意研究を重ねた結果、特定の命令をチェックサム算定処理に使用することで、処理を極めて短時間内に終了させることができるとの知見を得た。特定の命令は、主制御基板30(主制御CPU31)が実行可能なADDIR命令、ADDIRS命令である。これらの命令をチェックサムの算定処理に使用することで、処理時間(ステート数)を最短にすることができる。以下、第3の技術的特徴について比較例と対比しつつ説明する。 After extensive research, the inventors of the present invention discovered that by using specific commands in the checksum calculation process, the process can be completed in an extremely short time. The specific commands are the ADDIR command and the ADDIRS command that can be executed by the main control board 30 (main control CPU 31). By using these commands in the checksum calculation process, the processing time (number of states) can be minimized. Below, the third technical feature will be explained in comparison with a comparative example.

〔比較例のチェックサム算定処理〕
図16は、比較例のチェックサム算定処理のプログラムを示す図である。比較例では、本実施形態で使用する特定の命令を使用しない構成である。なお、図16のプログラムコード中、各行に付記している括弧書きの数値は、主制御CPU31が命令を実行するために必要とする内部クロック数(ステート数)を示している。比較例のチェックサム算定処理のプログラム(コード)は、以下の通りである。
[Comparative Example Checksum Calculation Process]
Fig. 16 is a diagram showing a program of a checksum calculation process of a comparative example. In the comparative example, the configuration does not use the specific command used in this embodiment. In the program code of Fig. 16, the numbers in parentheses added to each line indicate the number of internal clocks (number of states) required for the main control CPU 31 to execute the command. The program (code) of the checksum calculation process of the comparative example is as follows:

「E_CLSUM_01:」は、チェックサム算定処理の開始を示すラベルである。
(中略)
"E_CLSUM_01:" is a label indicating the start of the checksum calculation process.
(Omitted)

〔使用領域チェックサム算定処理〕
(1)「XOR A,A」は、Aレジスタに[00H]をセットする命令である。ステート数は1である。
(3)「LD HL,@RM_RAMADR」は、HLレジスタに作業領域先頭アドレスをセットする命令である。ステート数は3である。
(3)「LD BC,@CHK_ARE」は、BCレジスタにチェックサム算定領域数をセットする命令である。ステート数は3である。
[Used area checksum calculation process]
(1) "XOR A, A" is an instruction to set [00H] in the A register. The number of states is 1.
(3) "LD HL, @RM_RAMADR" is a command to set the start address of the working area in the HL register. The number of states is 3.
(3) "LD BC, @CHK_ARE" is a command to set the number of checksum calculation areas in the BC register. The number of states is 3.

〔ループ処理〕
「E_CLSUM_10:」は、ループ処理の先頭アドレスを示すラベルである。
(2)「SUB A,(HL)」は、HLレジスタに現状セットされているアドレスのRWMチェックサムを算定する命令である。ステート数は2である。
(1)「INC HL」は、HLレジスタをインクリメントし、次のRWMアドレスをセットする命令である。ステート数は1である。
(2)「DEC BC」は、チェックサム算定領域数を1減算する命令である。チェックサム算定領域を全て算定するとBCレジスタが0になる。ステート数は2である。
(3/2)「JR NTZ,E_CLSUM_10」は、チェックサム算定領域を全て算定しておらず、ループ継続であれば先頭に分岐する命令である。ステート数は、分岐の場合は3となり、非分岐の場合は2となる。
[Loop processing]
"E_CLSUM_10:" is a label indicating the start address of the loop processing.
(2) "SUB A, (HL)" is an instruction to calculate the RWM checksum of the address currently set in the HL register. The number of states is 2.
(1) "INC HL" is an instruction to increment the HL register and set the next RWM address. The number of states is 1.
(2) "DEC BC" is an instruction to subtract 1 from the number of checksum calculation areas. When the checksum calculation area is completely calculated, the BC register becomes 0. The number of states is 2.
(3/2) "JR NTZ, E_CLSUM_10" is an instruction that branches to the beginning if the checksum calculation area has not been completely calculated and the loop continues. The number of states is 3 in the case of branching and 2 in the case of not branching.

〔領域外チェックサム算定処理〕
(2)「LDQ HL,LOW @RM_EXTADR」は、HLレジスタに領域外作業領域先頭アドレスをセットする命令である。ステート数は2である。
(2)「LD B,@EXD_USE_ERW」は、Bレジスタに領域外RWM使用領域数をセットする命令である。ステート数は2である。
[Out-of-area checksum calculation process]
(2) "LDQ HL, LOW @RM_EXTADR" is a command to set the start address of the outside work area in the HL register. The number of states is 2.
(2) "LD B, @EXD_USE_ERW" is an instruction to set the number of RWM areas outside the area to the B register. The number of states is 2.

「E_CLSUM_20:」は、ループ処理の先頭アドレスを示すラベルである。
(2)「SUB A,(HL)」は、HLレジスタに現状セットされているアドレスのRWMチェックサムを算定する命令である。ステート数は2である。
(1)「INC HL」は、HLレジスタをインクリメントし、次のRWMアドレスをセットする命令である。ステート数は1である。
(3/2)「DJNZ E_CLSUM_20」は、領域外RWM使用領域を全て算定しておらず(Bレジスタを減算して0でなく)、ループ継続であれば先頭に分岐する命令である。ステート数は、分岐の場合は3となり、非分岐の場合は2となる。
"E_CLSUM_20:" is a label indicating the start address of the loop processing.
(2) "SUB A, (HL)" is an instruction to calculate the RWM checksum of the address currently set in the HL register. The number of states is 2.
(1) "INC HL" is an instruction to increment the HL register and set the next RWM address. The number of states is 1.
(3/2) "DJNZ E_CLSUM_20" is an instruction that branches to the beginning if the loop continues when the RWM usage area outside the area has not been calculated (the B register is subtracted and is not 0). The number of states is 3 in the case of branching and 2 in the case of not branching.

〔サムチェックバッファ設定処理〕
(3)「LDQ (LOW R_ERW_SUM),A」は、サムチェックバッファに算定結果をセーブする命令である。ステート数は3である。
[Sum check buffer setting process]
(3) "LDQ (LOW R_ERW_SUM), A" is a command to save the calculation result in the sum check buffer. The number of states is 3.

〔比較例のチェックサム算定処理必要ステート数〕
以上より、例えばチェックサム対象となる使用領域のRWMが510バイト、領域外のRWMが170バイトであるとすると、チェックサムの算定に必要な総ステート数は、1+3+3+(510-1)*(2+1+2+3)+(2+1+2+2)+2+2+(170-1)*(2+1+3)+(2+1+2)+2=5112となる。したがって、主制御CPU31の内部システムクロックが16MHzである場合、比較例のチェックサム算定処理の実行時間は0.3195msとなる。
[Number of states required for checksum calculation process in comparative example]
From the above, for example, if the RWM of the used area to be checked is 510 bytes, and the RWM outside the area is 170 bytes, the total number of states required to calculate the checksum is 1+3+3+(510-1)*(2+1+2+3)+(2+1+2+2)+2+2+(170-1)*(2+1+3)+(2+1+2)+2=5112. Therefore, if the internal system clock of the main control CPU 31 is 16 MHz, the execution time for the checksum calculation process in the comparative example is 0.3195 ms.

〔チェックサムの確認方法〕
チェックサムの確認方法は、「スタック領域の2バイトを除く使用領域の全領域と領域外の使用RWMを減算した結果の下位1バイトが0であるか」とする。例えば、RWMの値が1,2,3,4であり、チェックサムとして246が保存されている場合は、1+2+3+4+246=256となり、下位1バイトは0となるので、この場合はチェックサムが正しく保存されていると確認することができる。
[How to check the checksum]
The method for checking the checksum is to check whether the lowest byte of the result of subtracting the entire area of the used area excluding the 2 bytes of the stack area from the used RWM outside the area is 0. For example, if the RWM values are 1, 2, 3, and 4 and 246 is saved as the checksum, the result is 1 + 2 + 3 + 4 + 246 = 256, and the lowest byte is 0, so in this case it can be confirmed that the checksum has been saved correctly.

〔比較例のチェックサム確認処理〕
図17は、比較例のチェックサム確認処理のプログラムを示す図である。ここでも同様に、比較例では、本実施形態で使用する特定の命令を使用しない構成である。また、図17のプログラムコード中、各行に付記している括弧書きの数値はステート数を示している。比較例のチェックサム確認処理のプログラム(コード)は、以下の通りである。
[Comparative Example Checksum Verification Process]
17 is a diagram showing a program for checksum confirmation processing of a comparative example. Here again, the comparative example is configured not to use the specific command used in this embodiment. Also, in the program code of FIG. 17, the numbers in parentheses added to each line indicate the number of states. The program (code) for checksum confirmation processing of the comparative example is as follows:

「E_CKSUM_01:」は、チェックサム確認処理の開始を示すラベルである。
(中略)
"E_CKSUM_01:" is a label indicating the start of the checksum verification process.
(Omitted)

〔使用領域チェックサム算定処理〕
(1)「XOR A,A」は、Aレジスタに[00H]をセットする命令である。ステート数は1である。
(3)「LD HL,@RM_RAMADR」は、HLレジスタに作業領域先頭アドレスをセットする命令である。ステート数は3である。
(3)「LD BC,@CHK_ARE」は、BCレジスタにチェックサム算定領域数をセットする命令である。ステート数は3である。
[Used area checksum calculation process]
(1) "XOR A, A" is an instruction to set [00H] in the A register. The number of states is 1.
(3) "LD HL, @RM_RAMADR" is a command to set the start address of the working area in the HL register. The number of states is 3.
(3) "LD BC, @CHK_ARE" is a command to set the number of checksum calculation areas in the BC register. The number of states is 3.

「E_CKSUM_10:」は、ループ処理の先頭アドレスを示すラベルである。
(2)「ADD A,(HL)」は、HLレジスタに現状セットされているアドレスのRWMチェックサムを算定する命令である。ステート数は2である。
(1)「INC HL」は、HLレジスタをインクリメントし、次のRWMアドレスをセットする命令である。ステート数は1である。
(2)「DEC BC」は、チェックサム算定領域数を1減算する命令である。チェックサム算定領域を全て算定するBCレジスタが0になる。ステート数は2である。
(3/2)「JR NTZ,E_CKSUM_10」は、チェックサム算定領域を全て算定しておらず、ループ継続であれば先頭に分岐する命令である。ステート数は、分岐の場合は3となり、非分岐の場合は2となる。
"E_CKSUM_10:" is a label indicating the start address of the loop processing.
(2) "ADD A, (HL)" is a command to calculate the RWM checksum of the address currently set in the HL register. The number of states is 2.
(1) "INC HL" is an instruction to increment the HL register and set the next RWM address. The number of states is 1.
(2) "DEC BC" is an instruction to subtract 1 from the number of checksum calculation areas. The BC register, which calculates all checksum calculation areas, becomes 0. The number of states is 2.
(3/2) "JR NTZ, E_CKSUM_10" is an instruction that branches to the beginning if the checksum calculation area has not been completely calculated and the loop continues. The number of states is 3 in the case of branching and 2 in the case of not branching.

〔領域外チェックサム算定処理〕
(2)「LDQ HL,LOW @RM_EXTADR」は、HLレジスタに領域外作業領域先頭アドレスをセットする命令である。ステート数は2である。
(2)「LD B,@EXD_USE_ERW」は、Bレジスタに領域外RWM使用領域数をセットする命令である。ステート数は2である。
[Out-of-area checksum calculation process]
(2) "LDQ HL, LOW @RM_EXTADR" is a command to set the start address of the outside work area in the HL register. The number of states is 2.
(2) "LD B, @EXD_USE_ERW" is an instruction to set the number of RWM areas outside the area to the B register. The number of states is 2.

「E_CKSUM_20:」は、ループ処理の先頭アドレスを示すラベルである。
(2)「ADD A,(HL)」は、HLレジスタに現状セットされているアドレスのRWMチェックサムを算定する命令である。ステート数は2である。
(1)「INC HL」は、HLレジスタをインクリメントし、次のRWMアドレスをセットする命令である。ステート数は1である。
(3/2)「DJNZ E_CKSUM_20」は、領域外RWM使用領域を全て算定しておらず(Bレジスタを減算して0でなく)、ループ継続であれば先頭に分岐する命令である。ステート数は、分岐の場合は3となり、非分岐の場合は2となる。
"E_CKSUM_20:" is a label indicating the start address of the loop processing.
(2) "ADD A, (HL)" is a command to calculate the RWM checksum of the address currently set in the HL register. The number of states is 2.
(1) "INC HL" is an instruction to increment the HL register and set the next RWM address. The number of states is 1.
(3/2) "DJNZ E_CKSUM_20" is an instruction that branches to the beginning if the loop continues when the RWM usage area outside the area has not been calculated (the B register is subtracted and is not 0). The number of states is 3 in the case of branching and 2 in the case of not branching.

「E_CKSUM_30」は、チェックサム結果フラグ設定処理の開始を示すラベルである。なお、チェックサムが異常であるかの判定処理は、使用領域からチェックサム結果フラグ(R_ERW_BRS)を参照して行うが、ここではプログラムを省略する。 "E_CKSUM_30" is a label that indicates the start of the checksum result flag setting process. The process of determining whether the checksum is abnormal is performed by referencing the checksum result flag (R_ERW_BRS) from the used area, but the program is omitted here.

〔チェックサム結果フラグ設定処理〕
(3)「LDQ (LOW R_ERW_BRS),A」は、チェックサム結果フラグに値をセーブする命令である。ステート数は3である。
[Checksum result flag setting process]
(3) "LDQ (LOW R_ERW_BRS), A" is an instruction to save a value to the checksum result flag. The number of states is 3.

〔比較例のチェックサム確認処理必要ステート数〕
以上より、電源投入時のチェックサム確認処理でチェックサムの算定に必要な総ステート数は、電源断時と同じく5112ステートとなる。したがって、比較例のチェックサム確認処理の実行時間は同じく0.3195msとなる。
[Number of states required for checksum verification process in comparative example]
As a result, the total number of states required to calculate the checksum in the checksum verification process when power is turned on is 5112, the same as when power is turned off. Therefore, the execution time for the checksum verification process in the comparative example is also 0.3195 ms.

〔本実施形態のチェックサム算定処理〕
図18は、本実施形態のチェックサム算定処理のプログラムを示す図である。本実施形態では、チェックサムの算定及び確認にADDIR命令及びADDIRS命令を使用している。ADDIR命令及びADDIRS命令は、HLレジスタが指定した開始番地から、BCレジスタ(ADDIRS命令はBレジスタ)で指定したバイト数のRWMの和を計算する命令である。なお、和ではなく差を計算する命令は存在しないため、電源断時の退避処理でサムチェックバッファの値を設定する際は、一旦、和を計算してから2の補数を取る(符号を反転する)こととする。以下、比較例と同じ命令については説明を省略し、本実施形態に特有の命令を中心に説明する。本実施形態のチェックサム算定処理のプログラム(コード)は、以下の通りである。
[Checksum calculation process of this embodiment]
FIG. 18 is a diagram showing a program of the checksum calculation process of this embodiment. In this embodiment, the ADDIR instruction and the ADDIRS instruction are used to calculate and confirm the checksum. The ADDIR instruction and the ADDIRS instruction are instructions to calculate the sum of the RWM of the number of bytes specified by the BC register (B register for the ADDIRS instruction) from the start address specified by the HL register. Since there is no instruction to calculate the difference instead of the sum, when setting the value of the checksum buffer in the save process at the time of power off, the sum is first calculated and then the two's complement is taken (the sign is inverted). Below, the same instructions as in the comparative example will be omitted, and the explanation will be centered on the instructions unique to this embodiment. The program (code) of the checksum calculation process of this embodiment is as follows.

「E_CLSUM_01:」は、チェックサム算定処理の開始を示すラベルである。
(中略)
"E_CLSUM_01:" is a label indicating the start of the checksum calculation process.
(Omitted)

〔使用領域チェックサム算定処理〕
(1)「XOR A,A」:比較例と同じ。
(3)「LD HL,@RM_RAMADR」:比較例と同じ。
(3)「LD BC,@CHK_ARE」比較例と同じ。
(3)「ADDIR」は、ブロックサーチ命令である。具体的には、開始アドレス(@RM_RAMADR)からチェックサム算定領域数(@CHK_ARE)で指定したバイト数のRWMの和を計算する。ここでは、加算1バイトあたりのステート数が3である。
[Used area checksum calculation process]
(1) “XOR A, A”: Same as the comparative example.
(3) “LD HL, @RM_RAMADR”: Same as the comparative example.
(3) "LD BC, @CHK_ARE" Same as the comparative example.
(3) "ADDIR" is a block search command. Specifically, it calculates the sum of RWMs from the start address (@RM_RAMADR) to the number of bytes specified by the number of checksum calculation areas (@CHK_ARE). Here, the number of states per byte added is 3.

〔領域外チェックサム算定処理〕
(2)「LDQ HL,LOW @RM_EXTADR」:比較例と同じ。
(2)「LD B,@EXD_USE_ERW」:比較例と同じ。
(3)「ADDIRS」は、ブロックサーチ命令である。具体的には、開始アドレス(@RM_EXTADR)からチェックサム算定領域数(@EXD_USE_ERW)で指定したバイト数のRWMの和を計算する。ここでは、加算1バイトあたりのステート数が3である。
[Out-of-area checksum calculation process]
(2) "LDQ HL, LOW @RM_EXTADR": Same as the comparative example.
(2) “LD B, @EXD_USE_ERW”: Same as the comparative example.
(3) "ADDIRS" is a block search command. Specifically, it calculates the sum of RWMs from the start address (@RM_EXTADR) to the number of bytes specified by the number of checksum calculation areas (@EXD_USE_ERW). Here, the number of states per byte added is 3.

〔サムチェックバッファ設定処理〕
(2)「NEG」は、2の補数をセットする命令である。ステート数は2である。
(3)「LDQ (LOW R_ERW_SUM),A」は、サムチェックバッファに値をセーブする命令である。ステート数は3である。
[Sum check buffer setting process]
(2) "NEG" is an instruction to set a two's complement number. The number of states is 2.
(3) "LDQ (LOW R_ERW_SUM), A" is an instruction to save a value in the checksum buffer. The number of states is 3.

〔本実施形態のチェックサム算定処理必要ステート数〕
以上より、比較例と同じくチェックサム対象となる使用領域のRWMが510バイト、領域外のRWMが170バイトであるとすると、本実施形態でチェックサムの算定に必要な総ステート数は、1+3+3+510*3+2+2+170*3+2+3=2056となる。したがって、主制御CPU31の内部システムクロックが16MHzである場合、本実施形態では処理時間が0.1285msに短縮されることになる。
[Number of States Required for Checksum Calculation Processing in This Embodiment]
From the above, if the RWM of the used area to be checked is 510 bytes and the RWM outside the area is 170 bytes, as in the comparative example, the total number of states required to calculate the checksum in this embodiment is 1 + 3 + 3 + 510 * 3 + 2 + 2 + 170 * 3 + 2 + 3 = 2056. Therefore, if the internal system clock of the main control CPU 31 is 16 MHz, the processing time will be reduced to 0.1285 ms in this embodiment.

以下、同様にチェックサム確認処理についても説明する。
図19は、本実施形態のチェックサム確認処理のプログラムを示す図である。本実施形態のチェックサム確認処理のプログラム(コード)は、以下の通りである。
Similarly, the checksum verification process will be described below.
19 is a diagram showing a program for the checksum confirmation process of this embodiment. The program (code) for the checksum confirmation process of this embodiment is as follows.

「E_CLSUM_01:」は、チェックサム確認処理の開始を示すラベルである。
(中略)
"E_CLSUM_01:" is a label indicating the start of the checksum verification process.
(Omitted)

〔使用領域チェックサム算定処理〕
(1)「XOR A,A」:比較例と同じ。
(3)「LD HL,@RM_RAMADR」:比較例と同じ。
(3)「LD BC,@CHK_ARE」:比較例と同じ。
(3)「ADDIR」は、ブロックサーチ命令である(電源投入時のチェックサム確認であるため、ブロックサーチと表現する)。具体的には、開始アドレス(@RM_RAMADR)からチェックサム算定領域数(@CHK_ARE)で指定したバイト数のRWMの和を計算する。そして、加算1バイトあたりのステート数は3である。
[Used area checksum calculation process]
(1) “XOR A, A”: Same as the comparative example.
(3) “LD HL, @RM_RAMADR”: Same as the comparative example.
(3) "LD BC, @CHK_ARE": Same as the comparative example.
(3) "ADDIR" is a block search command (referred to as a block search because it is a checksum check when power is turned on). Specifically, it calculates the sum of the RWMs for the number of bytes specified by the number of checksum calculation areas (@CHK_ARE) from the start address (@RM_RAMADR). The number of states per byte added is 3.

〔領域外チェックサム算定処理〕
(2)「LDQ HL,LOW @RM_EXTADR」:比較例と同じ。
(2)「LD B,@EXD_USE_ERW」:比較例と同じ。
(3)「ADDIRS」は、ブロックサーチ命令である。具体的には、開始アドレス(@RM_EXTADR)からチェックサム算定領域数(@EXD_USE_ERW)で指定したバイト数のRWMの和を計算する。そして、加算1バイトあたりのステート数は3である。
[Out-of-area checksum calculation process]
(2) "LDQ HL, LOW @RM_EXTADR": Same as the comparative example.
(2) “LD B, @EXD_USE_ERW”: Same as the comparative example.
(3) "ADDIRS" is a block search command. Specifically, it calculates the sum of RWMs from the start address (@RM_EXTADR) to the number of bytes specified by the number of checksum calculation areas (@EXD_USE_ERW). The number of states per byte added is 3.

〔チェックサム結果フラグ設定処理〕
(3)「LDQ (LOW R_ERW_BRS),A」は、チェックサム結果フラグに値をセーブする命令である。ステート数は3である。
[Checksum result flag setting process]
(3) "LDQ (LOW R_ERW_BRS), A" is an instruction to save a value to the checksum result flag. The number of states is 3.

〔本実施形態のチェックサム確認処理必要ステート数〕
以上より、本実施形態のチェックサム確認処理でチェックサムの算定に必要な総ステート数は、1+3+3+510*3+2+2+170*3+3=2054となる。NEG命令を使用して符号の反転を行う必要がないため、電源断時よりステート数が2少なく、処理時間が0.128375msに短縮されることになる。
[Number of states required for checksum verification processing in this embodiment]
From the above, the total number of states required to calculate the checksum in the checksum verification process of this embodiment is 1 + 3 + 3 + 510*3 + 2 + 2 + 170*3 + 3 = 2054. Because there is no need to use the NEG instruction to invert the sign, the number of states is 2 fewer than when the power is turned off, and the processing time is reduced to 0.128375 ms.

〔第3の技術的特徴の検証結果〕
図20は、本実施形態による処理時間の短縮化の検証結果を示す図である。図20の検証結果から、以下の優位性が明らかである。
(1)チェックサム算定処理の処理時間を比較例から約59.78%改善することができる。
(2)チェックサム確認処理の処理時間を比較例から約59.82%改善することができる。
(3)総合すると、チェックサムの算定に要する時間を概ね1/2.5に短縮することができる。
(4)これにより、電源投入時はより早期にメインループ処理に移行することができる。
(5)特に電源断時は、電源供給が完全に途絶えてしまう前に確実にチェックサム算定を完了させることができ、退避処理の確実性を向上させることができる。
(6)管理遊技機100がスロット機である場合も同様の有用性を得ることができる。
[Verification results of the third technical feature]
20 is a diagram showing the verification results of the reduction in processing time according to this embodiment. The following advantages are evident from the verification results in FIG.
(1) The processing time for checksum calculation can be improved by approximately 59.78% compared to the comparative example.
(2) The processing time for the checksum verification process can be improved by approximately 59.82% compared to the comparative example.
(3) Overall, the time required to calculate the checksum can be reduced to approximately 1/2.5.
(4) This allows the system to transition to the main loop processing more quickly when the power is turned on.
(5) In particular, when the power is turned off, the checksum calculation can be completed reliably before the power supply is completely cut off, improving the reliability of the save process.
(6) The same usefulness can be obtained even when the managed gaming machine 100 is a slot machine.

〔第1の技術的特徴:エラー発生時・解除時のコマンドを領域外で生成する構成〕
次に、本実施形態の第1の技術的特徴について説明する。
[First technical feature: Configuration for generating commands outside the area when an error occurs or is cleared]
Next, a first technical feature of this embodiment will be described.

〔第2の技術的特徴の課題〕
使用領域のプログラム容量(コード量)の削減を実現する。本課題は、管理遊技機100以外のパチンコ機であっても、記憶手段に使用領域及び領域外を有する場合には該当する。
[Problem of the second technical feature]
The present invention is directed to reducing the program capacity (amount of code) of the used area. This object is also applicable to pachinko machines other than the managed gaming machine 100, as long as the memory means has a used area and an outside area.

〔第1の技術的特徴による解決手段〕
本実施形態では、領域外に格納したプログラムを実行してエラーの発生、解除を判定する。領域外でエラーの発生又は解除と判定した場合、サブコマンドを生成して領域外のRWMに保存する。使用領域に格納したプログラムは、領域外のRWMにサブコマンドが保存された場合、それを読み込んで使用領域にサブコマンドバッファを設定する構成とした。
[Solution Means According to First Technical Feature]
In this embodiment, a program stored outside the area is executed to determine whether an error has occurred or been cleared. If it is determined that an error has occurred or been cleared outside the area, a subcommand is generated and saved in the RWM outside the area. If a subcommand is saved in the RWM outside the area, the program stored in the area of use is configured to read it and set a subcommand buffer in the area of use.

なお、領域外でエラー発生又は解除と判定しても、そのままサブコマンドバッファを設定しないのは次の理由による。すなわち、サブコマンドバッファは使用領域のRWM内にあるため、領域外のプログラムから書き込みを行うことはできない。また、ハンドル検出については、不正対策に該当するものではなく、遊技の実行に関わる内容であるため、使用領域で検出を行う必要がある。 The reason why the sub-command buffer is not set even if an error has occurred or been released outside the area is as follows. That is, since the sub-command buffer is located within the RWM of the area in use, it cannot be written to by a program outside the area. Also, handle detection does not fall under fraud prevention measures, but is related to game execution, so it is necessary to perform detection in the area in use.

プログラム構成の概要は、使用領域側に状態管理処理を構成し、領域外にエラー確認処理のモジュールを配置して、呼び出し実行する。領域外のエラー確認処理では、各種エラーの発生又は解除を判定し、判定の結果を領域外のRWMにサブコマンド(使用領域からの参照用)を保存しておき、呼び出し元に復帰する。使用領域側では、領域外でサブコマンドが保存されたことを確認した場合、改めてサブコマンドを使用領域のRWMに設定することとする。 The outline of the program configuration is that a state management process is configured on the usage area side, and an error checking process module is placed outside the area and called and executed. The outside-area error checking process determines whether various errors have occurred or been cleared, and the result of the determination is saved in the RWM outside the area as a subcommand (for reference from the usage area), before returning to the caller. On the usage area side, if it is confirmed that a subcommand has been saved outside the area, it will set the subcommand again in the RWM of the usage area.

〔使用領域の状態管理処理〕
図21は、使用領域の状態管理処理のプログラムを示す図である。状態管理処理のプログラム(コード)は、以下の通りである。なお、図21のプログラムコード中、各行に付記している括弧書きの数値は、使用バイト数を示している。
[Used area status management process]
Fig. 21 is a diagram showing a program for managing the state of used areas. The program (code) for managing the state is as follows: Note that in the program code in Fig. 21, the numbers in parentheses on each line indicate the number of bytes used.

「STC_PRC:」は、状態管理処理の開始を示すラベルである。 "STC_PRC:" is a label that indicates the start of the state management process.

〔エラー確認処理〕
(2)「CALLEX E_CKERR」は、領域外のエラー確認処理を呼び出す処理である。ここでのコード量は2バイトである。
なお、領域外のエラー確認処理では、エラーに係るサブコマンド等を領域外のRWMに設定する。この処理の終了後、以下のプログラムで入賞異常系のエラーフラグ(R_ERR_FLG)をクリアする。このように、入賞異常系のエラーは、設定した直後の状態管理処理でフラグをクリアされるが、クリアされる前にサブコマンドの設定、遊技停止要求フラグの設定、不正検知1情報ビットタイマの設定を行うこととする。
[Error checking process]
(2) "CALLEX E_CKERR" is a process for calling an error checking process outside the area. The code size here is 2 bytes.
In the outside-area error confirmation process, subcommands related to the error are set in the outside-area RWM. After this process is completed, the following program clears the winning abnormality error flag (R_ERR_FLG). In this way, the winning abnormality error flag is cleared in the status management process immediately after it is set, but before it is cleared, the subcommand is set, the game stop request flag is set, and the fraud detection 1 information bit timer is set.

〔エラーフラグクリア処理〕
(2)「CLRQ (LOW R_ERR_FLG)」は、入賞異常系のエラーフラグをクリアする命令である。ここでのコード量は2バイトである。
[Error flag clear processing]
(2) "CLRQ (LOW R_ERR_FLG)" is a command to clear the winning error flag. The code size here is 2 bytes.

〔サブコマンド要求カウンタ確認処理〕
以下のプログラムでは、エラー確認処理で領域外のRWMに設定したサブコマンドを読み出し、サブコマンドセット処理(SBCMDST)を呼び出す。
(3)「LD HL,R_ERW_SBC」は、HLレジスタにサブコマンド要求カウンタのアドレスをセットする命令である。ここでのコード量は3バイトである。
(1)「LD B,(HL)」は、HLレジスタで指定される対象アドレスの内容をロードする命令である。具体的には、領域外で設定したサブコマンドの数をロードする。ここでのコード量は1バイトである。
(2)「JR TZ,STC_PRC_20」は、第2ゼロフラグが1であればラベル「STC_PRC_20」に分岐する命令である。具体的には、ロードしたサブコマンドの数が0の場合に分岐する。ここでのコード量は2バイトである。
[Subcommand request counter confirmation process]
In the following program, the subcommand set in the RWM outside the area is read out in the error checking process, and the subcommand set process (SBCMDST) is called.
(3) "LD HL, R_ERW_SBC" is a command to set the address of the subcommand request counter in the HL register. The code size here is 3 bytes.
(1) "LD B, (HL)" is an instruction to load the contents of the target address specified by the HL register. Specifically, it loads the number of subcommands set outside the area. The code size here is 1 byte.
(2) "JR TZ, STC_PRC_20" is an instruction to branch to label "STC_PRC_20" if the second zero flag is 1. Specifically, branching occurs when the number of loaded subcommands is 0. The amount of code here is 2 bytes.

「STC_PRC_10:」は、サブコマンドセット処理の開始を示すラベルである。
〔サブコマンドセット処理〕
(2)「INLD DE,(HL)」は、サブコマンドをロードする命令である。具体的には、サブコマンド要求バッファ(R_ERW_SCD)から、先行コマンドと後続コマンドをロードする。サブコマンド要求バッファは、サブコマンド要求カウンタの直後に配置されており、INLD命令でHLレジスタを更新しながらDEレジスタにサブコマンド要求バッファの値をロードする。ここでのコード量は2バイトである。
(1)「RST SBCMDST」は、サブコマンドセット処理を呼び出す処理である。ここでは、サブコマンドバッファにサブコマンドを設定する。なお、領域外で設定したサブコマンドは、すべて加算不許可(Eレジスタのbit0を「1」)としている。これは、使用領域でAレジスタのクリア(「XOR A,A」等)を省略するためである。ここでのコード量は1バイトである。
"STC_PRC_10:" is a label indicating the start of the sub-command set processing.
[Subcommand set processing]
(2) "INLD DE, (HL)" is an instruction to load a subcommand. Specifically, it loads the preceding command and the following command from the subcommand request buffer (R_ERW_SCD). The subcommand request buffer is located immediately after the subcommand request counter, and the INLD instruction updates the HL register while loading the value of the subcommand request buffer into the DE register. The amount of code here is 2 bytes.
(1) "RST SBCMDST" is a process that calls the subcommand set process. Here, a subcommand is set in the subcommand buffer. Note that all subcommands set outside the area are set to not allow addition (bit 0 of the E register is set to "1"). This is to omit clearing the A register in the area of use (such as "XOR A, A"). The code size here is 1 byte.

〔ループ回数判定処理〕
(2)「DJNZ STC_PRC_10」は、サブコマンドを全てセットしておらず(Bレジスタを減算して0でなく)、ループ継続であれば先頭「STC_PRC_10」に分岐する命令である。すなわち、領域外で設定したサブコマンドをすべて読み込んでいない場合、ループ先頭へ戻る。ここでのコード量は2バイトである。
[Loop count determination process]
(2) "DJNZ STC_PRC_10" is an instruction to branch to the beginning "STC_PRC_10" if not all subcommands have been set (B register is not subtracted to 0) and the loop continues. In other words, if not all subcommands set outside the area have been read, the loop returns to the beginning. The amount of code here is 2 bytes.

「STC_PRC_20:」は、遊技盤エラー状態フラグ更新処理の開始を示すラベルである。
〔遊技盤エラー状態フラグ更新処理〕
領域外のエラー確認処理において、遊技を停止しなければならない致命的な異常があると判定(エラーを判定)した場合、領域外の遊技停止要求フラグに遊技停止を表す値(@YUG_HNF,06H)が設定されることになる。
以下の使用領域のプログラムでは、この値を使用領域の遊技盤エラー状態フラグ(R_YUG_ERR)と論理和する。なお、遊技盤エラー状態フラグの取り得る値は「00H」か「06H」のいずれかである。
(3)「LD A,(R_ERW_YER)」は、遊技停止要求フラグをロードする命令である。ここでのコード量は3バイトである。
(3)「ORQ (LOW R_YUG_ERR),A」は、遊技停止要求フラグを遊技盤エラー状態フラグと論理和する命令である。ここでのコード量は3バイトである。
"STC_PRC_20:" is a label indicating the start of the game board error state flag update process.
[Game board error status flag update process]
If the outside-area error confirmation process determines that there is a fatal abnormality that requires game play to be stopped (an error is determined), the outside-area game stop request flag will be set to a value indicating game play stop (@YUG_HNF, 06H).
In the following program for the use area, this value is ORed with the game board error status flag (R_YUG_ERR) in the use area. Note that the possible values for the game board error status flag are either "00H" or "06H".
(3) "LD A, (R_ERW_YER)" is a command to load a game stop request flag. The code size here is 3 bytes.
(3) "ORQ (LOW R_YUG_ERR), A" is a command to OR the game stop request flag with the game board error state flag. The code size here is 3 bytes.

〔ハンドル検出信号確認処理〕
(2)「LDQ A,(LOW R_IN1_PRT)」は、入力ポート1状態フラグをロードする命令である。ここでのコード量は2バイトである。
(2)「AND A,@IN1_HDL_BIT」は、入力ポート1状態フラグとハンドル検出信号を論理積する命令である。ここでのコード量は2バイトである。
(3)「RCPQ Z,A,(LOW R_HDL_STS)」は、ハンドルステータスと比較し、ゼロフラグが1であれば呼び出し元に復帰する命令である。ここでのコード量は3バイトである。
[Handle detection signal confirmation process]
(2) "LDQ A, (LOW R_IN1_PRT)" is an instruction to load the input port 1 status flag. The code size here is 2 bytes.
(2) "AND A, @IN1_HDL_BIT" is an instruction to perform a logical AND operation on the input port 1 status flag and the handle detection signal. The code size here is 2 bytes.
(3) "RCPQ Z, A, (LOW R_HDL_STS)" is an instruction to compare with the handle status and return to the caller if the zero flag is 1. The amount of code here is 3 bytes.

〔ハンドル検出指定コマンドセット処理〕
ハンドル検出は不正防止対策ではないため、使用領域で確認する必要がある。
以下のプログラムでは、ハンドル検出信号が変化しない場合はそのまま呼び出し元に戻り、ハンドル検出信号が変化した場合はサブコマンドを送信する。なお、チャタリングなどにより検出・非検出が短時間で変化することが考えられるが、その場合でもすべてサブコマンドを送信し、対処を行うか否かは演出制御基板40(演出制御CPU41)側のプログラムで判断することとしている。
(2)「LDQ (LOW R_HDL_STS),A」は、ハンドルステータスにセーブ(ステータスを更新)する命令である。ここでのコード量は2バイトである。
(3)「LD DE,@CMD_STS_HDL」は、サブコマンドのハンドル検出指定(@CMD_STS_HDL)をセットする命令である。ここでのコード量は3バイトである。
(1)「RST SBCMDST」は、サブコマンドセット処理を呼び出す処理である。ここでのコード量は1バイトである。
(1)「RET」は、呼び出し元に復帰する命令である。コード量は1バイトである。
[Handle detection specification command set processing]
Handle detection is not an anti-fraud measure, so it must be checked in the area of use.
In the following program, if the handle detection signal does not change, it returns to the caller, and if the handle detection signal changes, it sends a subcommand. Note that it is possible that detection/non-detection may change in a short period of time due to chattering, but even in that case, the subcommand is sent and the program on the performance control board 40 (performance control CPU 41) side decides whether to take action or not.
(2) "LDQ (LOW R_HDL_STS), A" is an instruction to save to the handle status (update the status). The code size here is 2 bytes.
(3) "LD DE, @CMD_STS_HDL" is a command to set the handle detection specification (@CMD_STS_HDL) of the subcommand. The code size here is 3 bytes.
(1) "RST SBCMDST" is a process for calling a subcommand set process. The code size here is 1 byte.
(1) "RET" is an instruction to return to the caller. The code size is 1 byte.

図22は、状態管理処理の手順例を示すフローチャートである。このフローチャートは、図21のプログラムに対応している。本処理は、主制御基板30(主制御CPU31)が実行する。 Figure 22 is a flowchart showing an example of the procedure for status management processing. This flowchart corresponds to the program in Figure 21. This processing is executed by the main control board 30 (main control CPU 31).

ステップS500:主制御基板30は、領域外のエラー確認処理を呼び出す処理を実行する。これにより、主制御基板30は領域外でエラー確認処理を実行し、その実行後に本処理に復帰することになる。 Step S500: The main control board 30 executes a process that calls the out-of-area error checking process. This causes the main control board 30 to execute the out-of-area error checking process and then return to this process.

ステップS501:主制御基板30は、エラーフラグをクリアする。
ステップS502:主制御基板30は、サブコマンド要求カウンタをロードする。
ステップS503:主制御基板30は、ロードしたサブコマンド要求カウンタの値が0であるか否かを確認する。
その結果、ロードした値が0であることを確認した場合(Yes)、主制御基板30はステップS507を実行する。一方、ロードした値が0あることを確認できない場合(No)、主制御基板30はステップS504を実行する。
Step S501: The main control board 30 clears the error flag.
Step S502: The main control board 30 loads the sub-command request counter.
Step S503: The main control board 30 checks whether the value of the loaded sub-command request counter is 0 or not.
As a result, if it is confirmed that the loaded value is 0 (Yes), the main control board 30 executes step S507. On the other hand, if it is not confirmed that the loaded value is 0 (No), the main control board 30 executes step S504.

ステップS504:主制御基板30は、サブコマンドをロードする。サブコマンドは、領域外のRWMに保存されているものをロードする。
ステップS505:主制御基板30は、サブコマンドセット処理を呼び出す処理を実行する。この処理において、主制御基板30は使用領域のサブコマンドバッファを設定する。
ステップS506:主制御基板30は、全てのサブコマンドをセット(ロードした領域外の全サブコマンドに対応するサブコマンドバッファを設定)したか否かを確認する。全サブコマンドをセットしたことを確認できた場合(Yes)、主制御基板30はステップS507を実行する。一方、未だ全サブコマンドをセットしたことを確認できない場合(No)、主制御基板30はステップS504を実行してループを継続する。
Step S504: The main control board 30 loads the sub-commands. The sub-commands are those stored in the RWM outside the area.
Step S505: The main control board 30 executes a process for calling a sub-command set process. In this process, the main control board 30 sets a sub-command buffer in the usage area.
Step S506: The main control board 30 checks whether all subcommands have been set (sets subcommand buffers corresponding to all subcommands outside the loaded area). If it is confirmed that all subcommands have been set (Yes), the main control board 30 executes step S507. On the other hand, if it is still not confirmed that all subcommands have been set (No), the main control board 30 executes step S504 and continues the loop.

ステップS507:主制御基板30は、遊技停止要求フラグをロードする。
ステップS508:主制御基板30は、遊技盤エラー状態フラグに遊技停止要求フラグを論理和する。
ステップS509:主制御基板30は、入力ポート1状態フラグをロードする。
ステップS510:主制御基板30は、入力ポート1状態フラグとハンドル検出信号を論理積する。
ステップS511:主制御基板30は、ステップS510の値がハンドルステータスと一致するか否かを確認する。その結果、ハンドルステータスと一致する(ハンドル検出信号が変化しない)ことを確認した場合(Yes)、主制御基板30は呼び出し元に復帰する。一方、ハンドルステータスと一致することを確認できない(ハンドル検出信号が変化した)場合(No)、主制御基板30はステップS512を実行する。
ステップS512:主制御基板30は、ハンドルステータスを更新する。
ステップS513:主制御基板30は、サブコマンドの「ハンドル検出指定」をセットする。
ステップS514:主制御基板30は、サブコマンドセット処理を呼び出す処理を実行する。この処理では、主制御基板30は、サブコマンドバッファに「ハンドル検出指定」のサブコマンドを設定する。
以上の手順を終えると、主制御基板30は、呼び出し元に戻る。
Step S507: The main control board 30 loads the game stop request flag.
Step S508: The main control board 30 performs a logical OR operation on the game board error state flag and the game stop request flag.
Step S509: The main control board 30 loads the input port 1 status flag.
Step S510: The main control board 30 performs a logical AND operation on the input port 1 status flag and the handle detection signal.
Step S511: The main control board 30 checks whether the value of step S510 matches the handle status. If it is confirmed that the value matches the handle status (the handle detection signal does not change) (Yes), the main control board 30 returns to the caller. On the other hand, if it is not confirmed that the value matches the handle status (the handle detection signal has changed) (No), the main control board 30 executes step S512.
Step S512: The main control board 30 updates the handle status.
Step S513: The main control board 30 sets the sub-command "handle detection designation."
Step S514: The main control board 30 executes a process for calling a sub-command set process. In this process, the main control board 30 sets a sub-command of "specify handle detection" in the sub-command buffer.
Once the above steps are completed, the main control board 30 returns to the caller.

〔状態管理処理のまとめ〕
以上のように、使用領域のプログラムコード量は(図21)35バイト(フローチャートで示す手順数15ステップ)であり、プログラム容量の増大を抑えることができる。なお、ハンドル検出信号に関しては使用領域で処理を行っているが、それでも簡略化のために検出用タイマを持たず、信号のオンエッジ/オフエッジだけでサブコマンドを送信するロジックとし、コード量の増大を抑えることができている。
[Summary of state management processing]
As described above, the amount of program code in the usage area is 35 bytes (FIG. 21) (15 steps in the flow chart), which makes it possible to suppress an increase in program capacity. Although the handle detection signal is processed in the usage area, for simplification, there is no detection timer, and the logic is set to send sub-commands only at the on-edge/off-edge of the signal, which makes it possible to suppress an increase in the amount of code.

〔領域外のエラー確認処理〕
図23から図27は、領域外に格納されるエラー確認処理のプログラムを示す図である。上記のように、使用領域ではエラー発生又は解除の判定を行わないこととしている分、領域外には処理に必要な相当量のプログラムを格納している。エラー確認処理のプログラム(コード)は、以下の通りである。なお、特に省略しない限り、プログラムは図23~図27で一連のものである。
[Out-of-area error checking process]
Figures 23 to 27 are diagrams showing the error confirmation processing program stored outside the area. As mentioned above, since the occurrence or release of an error is not judged in the used area, a considerable amount of program necessary for processing is stored outside the area. The error confirmation processing program (code) is as follows. Unless otherwise omitted, the programs in Figures 23 to 27 are a series.

「E_CKERR:」は、エラー確認処理の開始を示すラベルである。
「JP E_CKERR_01」は、ラベル「E_CKERR_01」のアドレスへジャンプする命令である。
(中略)
"E_CKERR:" is a label indicating the start of the error checking process.
"JP E_CKERR_01" is an instruction to jump to the address with the label "E_CKERR_01".
(Omitted)

ここで、本実施形態では使用領域から領域外のモジュール(E_CKERR:)を呼び出す際、CALLEX命令を使用しているが、呼び出し先のアドレスが2000H~20FFHである場合は2バイト、それ以外である場合は4バイトのコード量が必要となる。このため、呼び出し先モジュールのラベルと、モジュール本体へのジャンプ命令を2000H以降に並べることとし、各モジュールの本体部分のプログラムをその後に記述する構成とする。これにより、領域外のモジュールとして最大86個までを2バイトのCALLEX命令によって呼び出すことができる。
上記の「JP E_CKERR_01」は、そのための2バイトのジャンプ命令である。ジャンプ先のアドレスは2000H~20FFHでなくてもよいので、ラベル「E_CKERR_01」のアドレスはそれ以降のアドレスに記述されている。
In this embodiment, when calling an external module (E_CKERR:) from the used area, the CALLEX command is used, but if the address of the callee is between 2000H and 20FFH, 2 bytes of code are required, otherwise 4 bytes are required. For this reason, the label of the callee module and the jump command to the module body are arranged from 2000H onwards, and the program of the body of each module is written after that. This allows up to 86 external modules to be called with a 2-byte CALLEX command.
The above "JP E_CKERR_01" is a two-byte jump command for this purpose. The address of the jump destination does not have to be between 2000H and 20FFH, so the address of the label "E_CKERR_01" is written at a subsequent address.

〔初期化処理〕
初期化処理は、「JP E_CKERR_01」命令で呼び出される。
「E_CKERR_01:」は、初期化処理の開始を示すラベルである。
「LD Q,HIGH @RM_EXTADR」は、領域外作業領域先頭アドレスの上位バイトをセットする命令である。
ここで、本実施形態では、CALLEX命令によりレジスタセットのバンクが「バンク0」から「バンク1」に変更され、また、RETEX命令によりバンクが「バンク1」から「バンク0」に変更される。バンク0のQレジスタとバンク1のQレジスタは、機能としては同等のものであるが、値は互いに独立している。例えば、バンク0のQレジスタにF0Hという値を設定したとしても、バンク1のQレジスタの値は変化しない。
上記のように記憶手段のRWMには、F000H~F3FFHまでの4キロバイトが実装されているが、使用領域のRWMとしてF000H~F1FFH、領域外のRWMとしてF300H~F3FFHを使用している(図2のメモリマップ参照)。また、F200H~F2FFHは未使用である。
このとき、領域外用(「バンク1」とする)のQレジスタにはF3Hを設定する。これにより、F300H~F3FFHのRWMに対してQレジスタを用いた命令を使用することができることになる。領域外のプログラムコードは、規則上の制限を受けないが、より長さを抑えたコードを使用した方が実行時間も長期化を抑えることができるため、領域外についてもコードを短縮化することが望ましい。
[Initialization process]
The initialization process is called by the command "JP E_CKERR_01."
"E_CKERR_01:" is a label indicating the start of the initialization process.
"LD Q, HIGH @RM_EXTADR" is a command to set the upper byte of the start address of the outside work area.
In this embodiment, the bank of the register set is changed from "bank 0" to "bank 1" by the CALLEX instruction, and the bank is changed from "bank 1" to "bank 0" by the RETEX instruction. The Q register of bank 0 and the Q register of bank 1 are functionally equivalent, but their values are independent of each other. For example, even if a value of F0H is set in the Q register of bank 0, the value of the Q register of bank 1 does not change.
As described above, the RWM of the storage means is implemented with 4 kilobytes from F000H to F3FFH, but F000H to F1FFH is used as the RWM in the used area, and F300H to F3FFH is used as the RWM outside the area (see the memory map in FIG. 2). Also, F200H to F2FFH is unused.
At this time, the Q register for outside the area (assumed to be "bank 1") is set to F3H. This makes it possible to use instructions using the Q register for the RWMs from F300H to F3FFH. Program code outside the area is not subject to any regulatory restrictions, but using shorter code will help prevent execution times from increasing, so it is desirable to shorten the code outside the area as well.

〔サブコマンド要求カウンタクリア処理〕
「CLRQ (LOW R_ERW_SBC)」は、サブコマンド要求カウンタをクリアする命令である。本命令により、領域外でセットするサブコマンドの数が初期化される。
[Subcommand request counter clear processing]
"CLRQ (LOW R_ERW_SBC)" is a command to clear the subcommand request counter. This command initializes the number of subcommands set outside the area.

〔ループ設定処理1〕
ループ設定処理1では、エラー確認用のループで使用するテーブルのアドレス及びループ回数を設定する。ハンドル検出は使用領域で行うため、ここで判定するエラーは、「スイッチ異常」、「扉開放」、「盤面磁気エラー1」、「盤面磁気エラー2」及び「電波エラー」の5種類である。なお、エラーの種類は、機種(盤面の種類)によって異なる場合がある。
「LD HL,D_ETB_ER1」は、エラー管理処理テーブル1のアドレスをセットする命令である。なお、エラー管理処理テーブル1については後述する。
「LD B,@D_ETB_ER1_NUM」は、状態項目数をセットする命令である。
[Loop setting process 1]
In the loop setting process 1, the address of the table used in the loop for checking errors and the number of loops are set. Since the handle detection is performed in the use area, the errors judged here are five types: "switch abnormality", "door open", "display magnetic error 1", "display magnetic error 2" and "radio wave error". Note that the type of error may differ depending on the model (display type).
"LD HL, D_ETB_ER1" is a command to set the address of the error management processing table 1. The error management processing table 1 will be described later.
"LD B, @D_ETB_ER1_NUM" is a command to set the number of status items.

〔監視対象信号ビットデータ判定処理〕
「E_CKERR_10:」は、監視対象信号ビットデータ判定処理の開始を示すラベルである。
「LDIN DE,(HL)」は、入力ポート状態フラグのアドレスをロードする命令である。
「LD A,(DE)」は、ロードした対象アドレスの内容をAレジスタにロードする命令である。
「LD C,0」は、Cレジスタに0をセットする命令である。
「AND A,(HL)」は、監視対象ビットデータと論理積する命令である。つまり、上の命令で先ずCレジスタに0を設定し、本命令では目的のビット以外をすべて0にする。
「JR Z,E_CKERR_20」は、ゼロフラグが1であれば分岐する命令である。
「INC C」は、Cレジスタをインクリメントする命令である。すなわち、目的のビットが0の場合は、上の命令で「E_CKERR_20」に分岐し、そうでない場合は本命令でCレジスタに1を設定することになる。これにより、エラー検出時はCレジスタに1が設定され、エラー未検出時はCレジスタに0が設定されることになる。
[Monitoring target signal bit data determination process]
"E_CKERR_10:" is a label indicating the start of the monitoring target signal bit data determination process.
"LDIN DE, (HL)" is an instruction to load the address of the input port status flag.
"LD A, (DE)" is an instruction to load the contents of the loaded target address into the A register.
"LD C,0" is an instruction to set 0 to the C register.
"AND A, (HL)" is a command to perform a logical AND with the bit data to be monitored. In other words, the above command first sets 0 to the C register, and this command sets all bits other than the target bit to 0.
"JR Z,E_CKERR_20" is an instruction to branch if the zero flag is one.
"INC C" is an instruction to increment the C register. In other words, if the target bit is 0, the above instruction branches to "E_CKERR_20", otherwise this instruction sets the C register to 1. As a result, if an error is detected, 1 is set to the C register, and if no error is detected, 0 is set to the C register.

〔監視対象ステータス今回値処理〕
監視対象ステータス今回値処理は、上記の「JR Z,E_CKERR_20」命令でゼロフラグが1の場合に呼び出される。
「E_CKERR_20:」は、監視対象ステータス今回値処理の開始を示すラベルである。監視対象ステータス今回値処理は、以下の監視対象ステータス今回値更新処理及び監視対象ステータス今回値判定処理を含む構成である。
[Monitoring target status current value processing]
The monitor target status current value process is called when the zero flag is 1 in the "JR Z,E_CKERR_20" command above.
"E_CKERR_20:" is a label indicating the start of the current monitoring target status value processing. The current monitoring target status value processing includes the following current monitoring target status value update processing and current monitoring target status value determination processing.

〔監視対象ステータス今回値更新処理〕
「INLD DE,(HL)」は、監視対象ステータス前回値のアドレスをロードする命令である。
「LD A,(DE)」は、対象アドレスの内容をロードする命令である。ここでは、上の命令で監視対象ステータス前回値のアドレスをロードし、本命令でAレジスタに前回値をロードする。
「CP A,C」は、AレジスタとCレジスタを比較する命令である。ここでは、監視対象ステータス前回値と監視対象ステータス今回値を設定し、ゼロフラグを更新する。
「LD (DE),C」は、対象アドレスの内容にセーブする命令である。ここでは、監視対象ステータス今回値を監視対象ステータス前回値にセーブする。
「INC DE」は、DEレジスタをインクリメントする命令である。すなわち、監視対象ステータス前回値を指しているDEレジスタに1を加算し、当該エラーの監視タイマのアドレスを指した状態にする。
「INC HL」は、HLレジスタをインクリメントする命令である。ここでは、テーブルを指しているHLレジスタに1を加算し、当該エラーの監視タイマ値のアドレスを指した状態にする。
[Monitoring target status current value update process]
"INLD DE, (HL)" is a command to load the address of the previous value of the monitored status.
"LD A, (DE)" is a command to load the contents of the target address. Here, the above command loads the address of the previous value of the monitored status, and this command loads the previous value into the A register.
"CP A, C" is a command to compare the A register with the C register. Here, the previous value of the monitoring target status and the current value of the monitoring target status are set, and the zero flag is updated.
"LD (DE), C" is a command to save the contents of the target address. Here, the current value of the monitored status is saved to the previous value of the monitored status.
"INC DE" is a command to increment the DE register. That is, 1 is added to the DE register, which points to the previous value of the monitored status, so that the DE register points to the address of the monitoring timer for the error.
"INC HL" is an instruction to increment the HL register. Here, 1 is added to the HL register, which points to the table, so that it points to the address of the monitoring timer value for the error.

〔監視対象ステータス今回値判定処理〕
「JR Z,E_CKERR_30」は、ゼロフラグが1であれば分岐する命令である。ここでは、先の「CP A,C」命令で設定したゼロフラグを確認し、ゼロフラグがセット(Z)である場合、すなわち監視対象ステータス前回値と監視対象ステータス今回値が一致するものであれば、「E_CKERR_30」のアドレスに分岐する。一方、ゼロフラグがリセット(NZ)である場合は以下となる。
「LD A,(HL)」は、対象アドレスの内容をロードする命令である。ここでは、当該エラーの監視タイマ値をロードする。
「LD (DE),A」は、対象アドレスの内容にセーブする命令である。ここでは、監視タイマをセーブする。
[Monitoring target status current value judgment process]
"JR Z, E_CKERR_30" is an instruction to branch if the zero flag is 1. Here, the zero flag set by the previous "CP A, C" instruction is checked, and if the zero flag is set (Z), that is, if the previous value of the monitored status and the current value of the monitored status match, it branches to the address of "E_CKERR_30". On the other hand, if the zero flag is reset (NZ), the following occurs.
"LD A, (HL)" is a command to load the contents of the target address. In this case, the error monitoring timer value is loaded.
"LD (DE), A" is a command to save the contents of a target address. In this case, the watchdog timer is saved.

〔監視タイマ値判定処理〕
監視タイマ値判定処理は、監視対象ステータス前回値と監視対象ステータス今回値が一致する場合に呼び出される。
「E_CKERR_30:」は、監視タイマ値判定処理の開始を示すラベルである。
本実施形態では、エラー状態が一定時間以上継続した時点で正式にエラー発生と判定する。エラー解除も同様に、エラー解除状態が一定時間以上継続した時点で正式にエラー解除と判定する。このため、エラーの発生及び解除の判定には、タイマの設定及び減算を行う処理が必要となる。本処理では、タイマの設定及び減算を行うこととする。
[Monitoring timer value determination process]
The monitoring timer value determination process is called when the previous value of the monitoring target status and the current value of the monitoring target status match.
"E_CKERR_30:" is a label indicating the start of the monitoring timer value determination process.
In this embodiment, an error is officially determined to have occurred when an error state continues for a certain period of time or more. Similarly, an error is officially determined to have been cleared when an error cleared state continues for a certain period of time or more. Therefore, a process of setting and subtracting a timer is required to determine the occurrence and cancellation of an error. In this process, a timer is set and subtracted.

〔監視タイマ値判定処理1〕
「INC HL」は、HLレジスタをインクリメントする命令である。
「LD A,(DE)」は、対象アドレスの内容をロードする命令である。
「JT Z,A,E_CKERR_40」は、ゼロフラグが1であれば分岐する命令である。ここでは、監視タイマがゼロである場合、「E_CKERR_40」へ分岐する。なお、監視タイマの減算は以下の処理で実行している。
「DEC A」は、タイマ値を1減算する命令である。すなわち、上の命令で監視タイマがゼロでない場合、監視タイマから1を減算する。
「LD (DE),A」は、対象アドレスの内容にセーブする命令である。ここでは、監視タイマ値が更新される。
[Monitoring timer value determination process 1]
"INC HL" is an instruction to increment the HL register.
"LD A, (DE)" is an instruction to load the contents of a target address.
"JT Z, A, E_CKERR_40" is an instruction to branch if the zero flag is 1. Here, if the watchdog timer is zero, branch to "E_CKERR_40". Note that decrementing the watchdog timer is performed by the following process.
"DEC A" is an instruction to subtract 1 from the timer value. That is, if the watchdog timer is not zero in the above instruction, 1 is subtracted from the watchdog timer.
"LD (DE), A" is an instruction to save the contents of the target address. Here, the watchdog timer value is updated.

〔監視タイマ値判定処理2〕
「JT NZ,A,E_CKERR_40」は、ゼロフラグが0であれば分岐する命令である。上記の「DEC A」命令でタイマ値を1減算するが、その結果、監視タイマが0でない場合もやはり、「E_CKERR_40」へ分岐することになる。なお、「E_CKERR_40」の処理は後述する。
一方、監視タイマが1から0になった場合、以下のエラーフラグ判定処理1へ進む。
[Monitoring timer value determination process 2]
"JT NZ, A, E_CKERR_40" is an instruction to branch if the zero flag is 0. The above "DEC A" instruction subtracts 1 from the timer value, and as a result, if the monitoring timer is not 0, it will still branch to "E_CKERR_40". The processing of "E_CKERR_40" will be described later.
On the other hand, if the monitoring timer changes from 1 to 0, the process proceeds to the following error flag determination process 1.

〔エラーフラグ判定処理1〕
「INC DE」は、DEレジスタをインクリメントする命令である。
「LD A,(DE)」は、対象アドレスの内容をロードする命令である。
「CP A,C」は、AレジスタとCレジスタを比較する命令である。
「JR Z,E_CKERR_40」は、ゼロフラグが1であれば分岐する命令である。
「LD A,C」は、ステータス今回値をセットする命令である。
「LD (DE),A」は、対象アドレスの内容にセーブする命令である。
「EX DE,HL」は、DEレジスタとHLレジスタを交換する命令である。
このように、監視タイマが1から0になった場合、エラーフラグ判定処理1で改めてエラーフラグ(現在のエラー状態)と監視対象ステータス今回値を比較する。その結果、エラーフラグと監視対象ステータス今回値が一致した場合は、「E_CKERR_40」に分岐する。
一方、エラーフラグと監視対象ステータス今回値が不一致である場合は、エラーフラグに監視対象ステータス今回値をセーブし、以下のサブコマンド設定処理1へ進む。
[Error Flag Judgment Process 1]
"INC DE" is an instruction to increment the DE register.
"LD A, (DE)" is an instruction to load the contents of a target address.
"CP A, C" is an instruction to compare the A register with the C register.
"JR Z,E_CKERR_40" is an instruction to branch if the zero flag is one.
"LD A, C" is a command to set the current status value.
"LD (DE), A" is an instruction to save the contents of the target address.
"EX DE,HL" is an instruction to exchange the DE register and the HL register.
In this way, when the monitoring timer changes from 1 to 0, the error flag (current error state) is compared again with the current value of the monitored status in error flag judgment process 1. If the error flag and the current value of the monitored status match as a result, the process branches to "E_CKERR_40".
On the other hand, if the error flag and the current value of the monitoring target status do not match, the current value of the monitoring target status is saved in the error flag, and the process proceeds to the subcommand setting process 1 described below.

〔サブコマンド設定処理1〕
サブコマンド設定処理1は、エラー発生又は解除と判定した場合、サブコマンドをセットする処理である。ただし、領域外の処理から使用領域のサブコマンドセット処理を呼び出したり、使用領域のサブコマンドバッファを書き換えたりすることは不可であるため、仮のサブコマンドを領域外のRWM(バッファ)に設定する。これにより、設定したサブコマンドを使用領域から参照可能とすることができる。
「LDQ HL,LOW R_ERW_SBC」は、サブコマンド要求カウンタのアドレスをHLレジスタにセットする命令である。
「INC (HL)」は、HLレジスタのサブコマンド要求カウンタを1加算する命令である。
「LD A,(HL)」は、対象アドレスの内容をロードする命令である。ここでは、加算後のHLレジスタのサブコマンド要求カウンタ値をAレジスタにロードする。
「ADDWB HL,A」は、HLレジスタにAレジスタを加算する命令である。
「ADDWB HL,A」は、HLレジスタにAレジスタを加算する命令である。これにより、HLレジスタにカウンタ値を2回加算したことになる。
「LD (HL),@CMD_STS_HED」は、対象アドレスの内容に状態指定先行コマンドをセーブする命令である。ここでは、先行コマンドとして、すべてのエラー発生・解除に共通のコマンド(85H)をセーブする。
「DEC HL」は、HLレジスタをデクリメントする命令である。ここでは、HLレジスタを1減算することにより、後続コマンドのアドレスを指した状態にする。
「LD A,C」は、監視対象ステータス今回値をセットする命令である。
〔ステータス今回値判定処理1〕
「ADD A,A」は、Aレジスタに値を加算する命令である。
「ADD A,(DE)」は、監視対象ステータス今回値にサブコマンドを加算する命令である。すなわち、上記の「LD A,C」命令でセットした監視対象ステータス今回値の2倍を算定して後続コマンド値を加算する。
「LD (HL),A」は、対象アドレスの内容にセーブする命令である。ここで後続コマンドをHLレジスタにセーブする。
なお、監視対象ステータス今回値を2倍する理由は、サブコマンドセット処理(SBCMDST)で要求しているコマンドの形式に合わせるためである。例えば、後続コマンドは00H~7FHのいずれかとなるが、サブコマンドセット処理を呼び出す際にEレジスタに設定する値は、後続コマンドの2倍に加算許可フラグ(0:加算許可、1:加算不許可)を加えたものであるため、監視対象ステータス今回値の2倍を加算する必要がある。
[Subcommand setting process 1]
Subcommand setting process 1 is a process that sets a subcommand when it is determined that an error has occurred or been released. However, since it is not possible to call a subcommand setting process in the area of use from a process outside the area, or to rewrite the subcommand buffer in the area of use, a temporary subcommand is set in the RWM (buffer) outside the area. This makes it possible to refer to the set subcommand from the area of use.
"LDQ HL, LOW R_ERW_SBC" is a command to set the address of the sub-command request counter in the HL register.
"INC (HL)" is a command to increment the subcommand request counter in the HL register by one.
"LD A, (HL)" is an instruction to load the contents of the target address. Here, the sub-command request counter value of the HL register after increment is loaded into the A register.
"ADDWB HL, A" is an instruction to add the A register to the HL register.
"ADDWB HL, A" is an instruction to add the A register to the HL register, which means that the counter value is added to the HL register twice.
"LD (HL), @CMD_STS_HED" is a command to save a state designation preceding command in the contents of the target address. Here, a command (85H) common to all error occurrences and cancellations is saved as the preceding command.
"DEC HL" is an instruction to decrement the HL register. In this case, the HL register is decremented by 1, so that it points to the address of the subsequent command.
"LD A, C" is a command to set the current value of the monitoring target status.
[Current Status Value Judgment Process 1]
"ADD A, A" is an instruction to add a value to the A register.
"ADD A, (DE)" is a command to add a subcommand to the current value of the monitoring target status. That is, the subcommand is calculated by multiplying the current value of the monitoring target status set by the above "LD A, C" command and adding the subsequent command value.
"LD (HL), A" is a command to save the contents of the target address. Here, the subsequent command is saved in the HL register.
The reason for doubling the current monitoring target status value is to match the format of the command requested by the subcommand set process (SBCMDST). For example, the subsequent command will be any of 00H to 7FH, but the value set in the E register when calling the subcommand set process is twice the subsequent command plus the addition permission flag (0: addition permission, 1: addition permission not permission), so it is necessary to add twice the current monitoring target status value.

〔RWM書き換え処理〕
以下のRWM書き換え処理は、エラー発生に伴うRWMの書き換えを行う処理である。
「EX DE,HL」は、DEレジスタとHLレジスタを交換する命令である。
「JT Z,C,E_CKERR_40」は、ゼロフラグが1であれば分岐する命令である。ここでは、エラー発生時であるかエラー解除時であるかを判定し、エラー解除時であれば「E_CKERR_40」へ分岐する。
「LD E,(HL+1)」は、エラー発生時設定対象ラムアドレス下位バイトをロードする命令である。ここでは、エラー発生時に書き換えを行うRWMの下位バイトをロードする。
「JR TZ,E_CKERR_40」は、第2ゼロフラグが1であれば分岐する命令である。ここでは、ロードした値が0である場合、エラー発生時にRWMの書き換えを行わないものとして「E_CKERR_40」へ分岐する。
一方、ロードした値が0でなく、RWMの書き換えを行う場合は以下となる。
「LD A,(HL+2)」は、エラー発生時設定データをロードする命令である。ここでは、書き換えを行うためのデータをロードしている。
「LD (DE),A」は、ロードしたデータを対象アドレスの内容にセーブする命令である。
[RWM rewrite process]
The following RWM rewrite process is a process for rewriting the RWM when an error occurs.
"EX DE,HL" is an instruction to exchange the DE register and the HL register.
"JT Z,C,E_CKERR_40" is an instruction to branch if the zero flag is 1. Here, it is determined whether an error has occurred or has been cleared, and if the error has been cleared, it branches to "E_CKERR_40".
"LD E, (HL+1)" is a command to load the lower byte of the RAM address to be set when an error occurs. Here, the lower byte of the RWM to be rewritten when an error occurs is loaded.
"JR TZ, E_CKERR_40" is an instruction to branch if the second zero flag is 1. Here, if the loaded value is 0, it is determined that the RWM is not to be rewritten when an error occurs, and the program branches to "E_CKERR_40".
On the other hand, if the loaded value is not 0 and the RWM is to be rewritten, the following occurs.
"LD A, (HL+2)" is a command to load setting data for when an error occurs. Here, data for rewriting is loaded.
"LD (DE), A" is an instruction to save the loaded data to the contents of the target address.

〔ループ終了処理判定1処理〕
以下のループ終了処理判定1処理では、次のエラーに係る処理を行うため、テーブルアドレスに3を加算し、ループ終了でなければ「E_CKERR_10」に戻る。
「E_CKERR_40:」は、ループ終了処理判定1処理の開始を示すラベルである。
「ADDWB HL,003H」は、HLレジスタに[003H]を加算する命令である。
〔ループ終了判定1〕
「DJNZ E_CKERR_10」は、ループ継続であれば分岐する命令である。ここでは、上記のようにループ終了でなければ「E_CKERR_10」に戻ることになる。
[Loop end process decision 1 process]
In the following loop end process decision 1 process, 3 is added to the table address to carry out the process related to the next error, and if the loop has not ended, the process returns to "E_CKERR_10".
"E_CKERR_40:" is a label indicating the start of loop end process determination 1 process.
"ADDWB HL, 003H" is an instruction to add [003H] to the HL register.
[Loop end decision 1]
"DJNZ E_CKERR_10" is an instruction to branch if the loop continues. Here, if the loop has not ended as described above, the flow returns to "E_CKERR_10".

〔ループ設定処理2~ループ終了判定2処理までのプログラム〕
以下のループ設定処理2からループ終了判定2処理では、入賞異常系のエラーの確認、及びサブコマンドのセットを行う。ここでは、スイッチ異常等の確認を行うループ処理と比較して、「エラー発生のみでエラー解除の判定を行わない」、「タイマを持たず、エラーが発生した場合はただちにサブコマンド等をセットする」という違いがある。
[Program from loop setting process 2 to loop end decision process 2]
In the following loop setting process 2 to loop end judgment process 2, winning abnormality errors are checked and sub-commands are set. In comparison with the loop process that checks for switch abnormalities, etc., the difference here is that "error cancellation is not judged only when an error occurs" and "there is no timer, and if an error occurs, a sub-command, etc. is immediately set."

〔ループ設定処理2〕
「LD HL,D_ETB_ER2」は、エラー管理処理テーブル2のアドレスをセットする命令である。なお、エラー管理処理テーブル2の内容は後述する。
「LD B,@D_ETB_ER2_NUM」は、状態項目数をセットする命令である。
[Loop setting process 2]
"LD HL, D_ETB_ER2" is a command to set the address of the error management processing table 2. The contents of the error management processing table 2 will be described later.
"LD B, @D_ETB_ER2_NUM" is a command to set the number of status items.

〔エラーフラグ判定処理2〕
「E_CKERR_50:」は、エラーフラグ判定処理2の開始を示すラベルである。
「LD A,(R_ERR_FLG)」は、エラーフラグをロードする命令である。
「AND A,(HL)」は、エラーフラグと監視対象ビットデータを論理積する命令である。
「JR Z,E_CKERR_60」は、ゼロフラグが1であれば「E_CKERR_60」に分岐する命令である。
「LD A,01H」は:Aレジスタに[01H]をセットする命令である。
[Error Flag Judgment Process 2]
“E_CKERR_50:” is a label indicating the start of the error flag determination process 2.
"LD A, (R_ERR_FLG)" is an instruction to load the error flag.
"AND A, (HL)" is a command to perform a logical AND operation on the error flag and the bit data to be monitored.
"JR Z, E_CKERR_60" is an instruction to branch to "E_CKERR_60" if the zero flag is 1.
"LD A, 01H" is a command to set [01H] in the A register.

「E_CKERR_60:」は、「JR Z,E_CKERR_60」命令の分岐先アドレスを示すラベルである。
「INC HL」は、HLレジスタをインクリメントする命令である。
「LDIN DE,(HL)」は、エラー発生フラグのアドレスをロードする命令である。
"E_CKERR_60:" is a label indicating the branch destination address of the "JR Z, E_CKERR_60" instruction.
"INC HL" is an instruction to increment the HL register.
"LDIN DE, (HL)" is a command to load the address of the error occurrence flag.

〔エラー発生フラグ更新処理〕
「LD (DE),A」は、対象アドレスの内容にエラー発生フラグをセーブする命令である。
〔ステータス今回値判定処理〕
「JT Z,A,E_CKERR_70」は、ゼロフラグが1であれば「E_CKERR_70」に分岐する命令である。
「EX DE,HL」は、DEレジスタとHLレジスタを交換する命令である。
[Error occurrence flag update process]
"LD (DE), A" is a command to save an error occurrence flag in the contents of the target address.
[Status current value determination process]
"JT Z,A,E_CKERR_70" is an instruction that branches to "E_CKERR_70" if the zero flag is 1.
"EX DE,HL" is an instruction to exchange the DE register and the HL register.

〔サブコマンド設定処理2〕
「LDQ HL,LOW R_ERW_SBC」は、HLレジスタにサブコマンド要求カウンタのアドレスをセットする命令である。
「INC (HL)」は、サブコマンド要求カウンタを1加算する命令である。
「LD A,(HL)」は、対象アドレスの内容をロードする命令である。ここでは、サブコマンド要求カウンタの値をAレジスタにロードする。
「ADDWB HL,A」は、HLレジスタにAレジスタを加算する命令である。
「ADDWB HL,A」は、HLレジスタにAレジスタを加算する命令である(2回目)。
「LD (HL),@CMD_STS_HED」は、対象アドレスの内容に状態指定先行コマンド(@CMD_STS_HED)をセーブする命令である。
「DEC HL」は、HLレジスタをデクリメントする命令である。
「LD A,(DE)」は、対象アドレスの内容をロードする命令である。ここでは、DEレジスタの内容をAレジスタにロードする。
「LD (HL),A」は、対象アドレスの内容にセーブする命令である。ここでは、HLレジスタにAレジスタの内容をセーブする。
「EX DE,HL」は、DEレジスタとHLレジスタを交換する命令である。
[Subcommand setting process 2]
"LDQ HL, LOW R_ERW_SBC" is a command to set the address of the sub-command request counter in the HL register.
"INC (HL)" is a command to increment the sub-command request counter by one.
"LD A, (HL)" is a command to load the contents of the target address. In this case, the value of the subcommand request counter is loaded into the A register.
"ADDWB HL, A" is an instruction to add the A register to the HL register.
"ADDWB HL, A" is an instruction to add the A register to the HL register (second time).
"LD (HL), @CMD_STS_HED" is a command to save the state designation preceding command (@CMD_STS_HED) in the contents of the target address.
"DEC HL" is an instruction to decrement the HL register.
"LD A, (DE)" is an instruction to load the contents of a target address. In this case, the contents of the DE register are loaded into the A register.
"LD (HL), A" is an instruction to save the contents of a target address. In this example, the contents of the A register are saved to the HL register.
"EX DE,HL" is an instruction to exchange the DE register and the HL register.

〔エラー発生時設定対象ラムアドレス確認処理〕
「LD E,(HL+1)」は、エラー発生時設定対象ラムアドレス下位バイトをロードする命令である。
「JR TZ,E_CKERR_70」は、第2ゼロフラグが1であれば「E_CKERR_70」に分岐する命令である。
「LD A,(HL+2)」は、エラー発生時設定データをロードする命令である。
「LD (DE),A」は、対象アドレスの内容にセーブする命令である。ここでは、DEレジスタの内容にAレジスタの内容をセーブする。
[Setting target RAM address confirmation process when an error occurs]
"LD E, (HL+1)" is a command to load the lower byte of the RAM address to be set when an error occurs.
"JR TZ, E_CKERR_70" is an instruction to branch to "E_CKERR_70" if the second zero flag is 1.
"LD A, (HL+2)" is a command to load setting data when an error occurs.
"LD (DE), A" is an instruction to save the contents of a target address. Here, the contents of the A register are saved to the contents of the DE register.

「E_CKERR_70:」は、「JR Z,E_CKERR_70」命令の分岐先アドレスを示すラベルである。
「ADDWB HL,003H」は、HLレジスタに[003H]を加算する命令である。
"E_CKERR_70:" is a label indicating the branch destination address of the instruction "JR Z, E_CKERR_70".
"ADDWB HL, 003H" is an instruction to add [003H] to the HL register.

〔ループ終了判定2〕
「DJNZ E_CKERR_50」は、ループ継続であれば「E_CKERR_50」に分岐する命令である。
[Loop End Determination 2]
"DJNZ E_CKERR_50" is an instruction to branch to "E_CKERR_50" if the loop continues.

〔エラーフラグ判定処理3〕
以下のエラーフラグ判定処理3では、不正検知1情報出力のためのタイマを設定する。具体的には、入賞異常系のエラーが発生したと判定するか、スイッチ異常、盤面磁気エラー1、盤面磁気エラー2、電波エラーのいずれかが発生したと判定した場合、不正検知1情報ビットタイマに1秒をセーブする。
[Error Flag Judgment Process 3]
In the following error flag determination process 3, a timer is set for outputting the fraud detection 1 information. Specifically, when it is determined that an error related to winning has occurred, or when it is determined that any of the following has occurred: a switch abnormality, a board magnetic error 1, a board magnetic error 2, or a radio wave error, one second is saved in the fraud detection 1 information bit timer.

「LD A,(R_ERR_FLG)」は、エラーフラグをAレジスタにロードする命令である。
「ORQ A,(LOW R_ERW_SEF)」は、スイッチエラーフラグとAレジスタを論理和する命令である。
「ORQ A,(LOW R_ERW_M1F)」は、盤面磁気エラー1フラグとAレジスタを論理和する命令である。
「ORQ A,(LOW R_ERW_M2F)」は、盤面磁気エラー2フラグとAレジスタを論理和する命令である。
「ORQ A,(LOW R_ERW_D1F)」は、電波エラー1フラグとAレジスタを論理和する命令である。
「JT Z,A,E_CKERR_80」は、ゼロフラグが1であれば「E_CKERR_80」に分岐する命令である。
"LD A, (R_ERR_FLG)" is an instruction to load the error flag into the A register.
"ORQ A, (LOW R_ERW_SEF)" is an instruction to perform a logical OR operation on the switch error flag and the A register.
"ORQ A, (LOW R_ERW_M1F)" is a command to perform a logical OR operation on the disk magnetic error 1 flag and the A register.
"ORQ A, (LOW R_ERW_M2F)" is a command to perform a logical OR operation on the disk magnetic error 2 flag and the A register.
"ORQ A, (LOW R_ERW_D1F)" is a command to perform a logical OR on the radio error 1 flag and the A register.
"JT Z,A,E_CKERR_80" is an instruction to branch to "E_CKERR_80" if the zero flag is 1.

〔不正検知1情報ビットタイマセット処理〕
「LDQ (LOW R_ERW_I1T),@TMR_HLD_SEC」は、不正検知1情報ビットタイマに不正検知情報1保持時間をセーブする命令である。
[Fraud detection 1 information bit timer set process]
"LDQ (LOW R_ERW_I1T), @TMR_HLD_SEC" is a command to save the fraud detection information 1 retention time in the fraud detection 1 information bit timer.

「E_CKERR_80:」は、上記の「JT Z,A,E_CKERR_80」命令でゼロフラグが1である場合の分岐先アドレスを示すラベルである。
「RETEX」は、呼び出し元に復帰する命令である。
"E_CKERR_80:" is a label indicating the branch destination address when the zero flag is 1 in the above "JT Z,A,E_CKERR_80" instruction.
"RETEX" is a command to return to the caller.

〔領域外のテーブル構成〕
図28及び図29は、エラー管理処理テーブル1の構成例を示す図である。
「D_ETB_ER1:」は、エラー管理処理テーブル1の開始アドレスを示すラベルである。
「DW R_IN1_PRT」は、入力ポート1状態フラグのアドレスを示すラベルである。
「DB @IN1_SWE_BIT」は、スイッチ異常信号ビットデータである。
「DW R_ERW_SEO」は、スイッチステータス前回値のアドレスである。
「DB @TMR_CHK_SWI」は、スイッチ異常監視タイマ値である。
「DB LOW @CMD_ERR_SWI」は、サブコマンド(スイッチエラー指定)である。
「DB 0」は、スイッチエラー指定時のエラー発生時設定対象ラムアドレスである。
「DB 0」は、スイッチエラー指定時のエラー発生時設定データである。したがって、スイッチエラー指定の場合、遊技は停止されない。
[Table configuration outside the area]
28 and 29 are diagrams showing examples of the configuration of the error management processing table 1. As shown in FIG.
“D_ETB_ER1:” is a label indicating the start address of the error management processing table 1.
"DWR_IN1_PRT" is a label indicating the address of the input port 1 status flag.
"DB @IN1_SWE_BIT" is the switch abnormality signal bit data.
"DWR_ERW_SEO" is the address of the previous switch status value.
"DB @TMR_CHK_SWI" is the switch abnormality monitoring timer value.
"DB LOW @CMD_ERR_SWI" is a subcommand (switch error designation).
"DB 0" is the RAM address to be set when an error occurs when a switch error is specified.
"DB 0" is the setting data for when a switch error is specified. Therefore, when a switch error is specified, the game is not stopped.

「DW R_IN1_PRT」は、入力ポート1状態フラグのアドレスである。
「DB @IN1_DRE_BIT」は、扉開放スイッチ信号ビットデータである。
「DW R_ERW_DEO」は、扉開放ステータス前回値のアドレスである。
「DB @TMR_CHK_DOR」は、扉監視タイマ値である。
「DB LOW @CMD_ERR_BDR」は、サブコマンド(扉開放エラー指定)である。
「DB 0」は、扉開放エラー指定時のエラー発生時設定対象ラムアドレスである。
「DB 0」は、扉開放エラー指定時のエラー発生時設定データである。したがって、扉開放エラー指定の場合、遊技は停止されない。
"DWR_IN1_PRT" is the address of the input port 1 status flag.
"DB @IN1_DRE_BIT" is the door open switch signal bit data.
"DWR_ERW_DEO" is the address of the previous door open status value.
"DB @TMR_CHK_DOR" is the door monitoring timer value.
"DB LOW @CMD_ERR_BDR" is a subcommand (door open error designation).
"DB 0" is the RAM address to be set when a door open error occurs.
"DB 0" is the setting data for when an error occurs when a door open error is specified. Therefore, when a door open error is specified, the game is not stopped.

「DW R_IN1_PRT」は、入力ポート1状態フラグのアドレスである。
「DB @IN1_M1E_BIT」は、盤面磁気検出センサ1信号ビットデータである。
「DW R_ERW_M1O」は、盤面磁気検出センサ1ステータス前回値のアドレスである。
「DB @TMR_CHK_MAG」は、磁気監視タイマ値である。
「DB LOW @CMD_ERR_MG2」は、サブコマンド(盤面磁気エラー2指定)である。
「DB LOW R_ERW_YER」は、盤面磁気エラー2指定時のエラー発生時設定対象ラムアドレスである。
「DB @YUG_HNF」は、盤面磁気エラー2指定時のエラー発生時設定データである。盤面磁気エラー2指定の場合、遊技が停止される。
"DWR_IN1_PRT" is the address of the input port 1 status flag.
"DB @IN1_M1E_BIT" is the signal bit data of the disk surface magnetic detection sensor 1.
"DWR_ERW_M1O" is the address of the previous value of the status of the disc surface magnetic detection sensor 1.
"DB @TMR_CHK_MAG" is the magnetic monitoring timer value.
"DB LOW @CMD_ERR_MG2" is a subcommand (designation of board magnetic error 2).
"DB LOW R_ERW_YER" is the RAM address to be set when an error occurs when disk magnetic error 2 is specified.
"DB @YUG_HNF" is setting data for when an error occurs when board magnetic error 2 is specified. When board magnetic error 2 is specified, the game is stopped.

「DW R_IN1_PRT」は、入力ポート1状態フラグのアドレスである。
「DB @IN1_M2E_BIT」は、盤面磁気検出センサ2信号ビットデータである。
「DW R_ERW_M2O」は、盤面磁気検出センサ2ステータス前回値である。
「DB @TMR_CHK_MAG」は、磁気監視タイマ値である。
「DB LOW @CMD_ERR_MG3」は、サブコマンド(盤面磁気エラー3指定)である。
「DB LOW R_ERW_YER」は、盤面磁気エラー3指定時のエラー発生時設定対象ラムアドレスである。
「DB @YUG_HNF」は、盤面磁気エラー3指定時のエラー発生時設定データである。盤面磁気エラー3指定の場合、遊技が停止される。
"DWR_IN1_PRT" is the address of the input port 1 status flag.
"DB @IN1_M2E_BIT" is the disk surface magnetic detection sensor 2 signal bit data.
"DWR_ERW_M2O" is the previous value of the status of the disc surface magnetic detection sensor 2.
"DB @TMR_CHK_MAG" is the magnetic monitoring timer value.
"DB LOW @CMD_ERR_MG3" is a subcommand (designating board magnetic error 3).
"DB LOW R_ERW_YER" is the RAM address to be set when an error occurs when disk magnetic error 3 is specified.
"DB @YUG_HNF" is setting data for when an error occurs when board magnetic error 3 is specified. When board magnetic error 3 is specified, the game is stopped.

「DW R_IN0_PRT」は、入力ポート0状態フラグのアドレスである。
「DB @IN0_D1E_BIT」は、電波検出センサ1ビットデータである。
「DW R_ERW_D1O」は、電波検出センサ1ステータス前回値である。
「DB @TMR_CHK_DEN」は、電波監視タイマ値である。
「DBLOW @CMD_ERR_DE1」は、サブコマンド(電波エラー1指定)である。
「DB 0」は、電波エラー1指定時のエラー発生時設定対象ラムアドレスである。
「DB 0」は、電波エラー1指定時のエラー発生時設定データである。したがって、電波エラー1指定の場合、遊技は停止されない。
"DWR_IN0_PRT" is the address of the input port 0 status flag.
"DB @IN0_D1E_BIT" is 1-bit data from the radio wave detection sensor.
"DWR_ERW_D1O" is the previous value of the radio wave detection sensor 1 status.
"DB @TMR_CHK_DEN" is the radio wave monitoring timer value.
"DBLOW @CMD_ERR_DE1" is a subcommand (specifying radio error 1).
"DB 0" is the RAM address to be set when an error occurs when radio error 1 is specified.
"DB 0" is the setting data for when an error occurs when radio error 1 is specified. Therefore, when radio error 1 is specified, the game is not stopped.

「@D_ETB_ER1_NUM EQU ($ - D_ETB_ER1)/9」は、状態項目数である。 "@D_ETB_ER1_NUM EQU ($ - D_ETB_ER1)/9" is the number of status items.

〔エラー管理処理テーブル2〕
図30は、エラー管理処理テーブル2の構成例を示す図である。
「D_ETB_ER2:」は、エラー管理処理テーブル2の開始アドレスを示すラベルである。
「DB @ERF_IL1_BIT」は、不正入賞1エラービットデータである。
「DW R_ERW_FS1」は、不正入賞1エラーフラグである。
「DB LOW @CMD_ERR_FS1」は、サブコマンド(不正入賞エラー1発生指定)である。
「DB LOW R_ERW_YER」は、不正入賞エラー1発生指定時のエラー発生時設定対象ラムアドレスである。
「DB @YUG_HNF」は、不正入賞エラー1発生指定時のエラー発生時設定データである。不正入賞エラー1発生指定の場合、遊技が停止される。
[Error Management Processing Table 2]
FIG. 30 is a diagram showing an example of the configuration of the error management process table 2.
“D_ETB_ER2:” is a label indicating the start address of the error management processing table 2.
"DB @ERF_IL1_BIT" is one error bit data for an illegal win.
"DWR_ERW_FS1" is the illegal winning 1 error flag.
"DB LOW @CMD_ERR_FS1" is a subcommand (specifying the occurrence of an illegal winning error 1).
"DB LOW R_ERW_YER" is the RAM address to be set when an error occurs when the occurrence of illegal winning error 1 is specified.
"DB @YUG_HNF" is setting data for when an error occurs when the occurrence of an illegal winning error 1 is specified. When the occurrence of an illegal winning error 1 is specified, the game is stopped.

「DB @ERF_IL3_BIT」は、不正入賞3エラービットデータである。
「DW R_ERW_FS3」は、不正入賞3エラーフラグである。
「DB LOW @CMD_ERR_FS3」は、サブコマンド(不正入賞エラー3発生指定)である。
「DB 0」は、不正入賞エラー3発生指定時のエラー発生時設定対象ラムアドレスである。
「DB 0」は、不正入賞エラー3発生指定時のエラー発生時設定データである。したがって、不正入賞エラー3発生指定の場合、遊技は停止されない。
"DB @ERF_IL3_BIT" is the illegal winning 3 error bit data.
"DWR_ERW_FS3" is the illegal winning 3 error flag.
"DB LOW @CMD_ERR_FS3" is a subcommand (specifying the occurrence of illegal winning error 3).
"DB 0" is the RAM address to be set when an error occurs when an illegal winning error 3 occurs.
"DB 0" is the setting data for when an error occurs when the occurrence of an improper winning error 3 is specified. Therefore, when the occurrence of an improper winning error 3 is specified, the game is not stopped.

「DB @ERF_FDN_BIT」は、普電異常入賞エラービットデータである。
「DW R_ERW_FDN」は、普電異常入賞エラーフラグである。
「DB LOW @CMD_ERR_FDN」は、サブコマンド(普電異常入賞エラー発生指定)である。
「DB 0」は、普電異常入賞エラー発生指定時のエラー発生時設定対象ラムアドレスである。
「DB 0」は、普電異常入賞エラー発生指定時のエラー発生時設定データである。したがって、普電異常入賞エラー発生指定の場合、遊技は停止されない。
"DB @ERF_FDN_BIT" is the normal power abnormality error bit data.
"DWR_ERW_FDN" is a normal power abnormality error flag.
"DB LOW @CMD_ERR_FDN" is a subcommand (specifying the occurrence of a normal power abnormality error).
"DB 0" is the RAM address to be set when an error occurs when a normal power abnormality error occurs.
"DB 0" is the setting data for when an error occurs when a normal power abnormal winning error occurs. Therefore, when a normal power abnormal winning error occurs, the game is not stopped.

「@D_ETB_ER2_NUM EQU ($ - D_ETB_ER2)/6」は、状態項目数である。 "@D_ETB_ER2_NUM EQU ($ - D_ETB_ER2)/6" is the number of status items.

図31から図37は、エラー確認処理の手順例を示すフローチャートである。図31から図37のフローチャートは、図23から図27のプログラムに対応している。エラー確認処理は、主制御基板30(主制御CPU31)により領域外で実行される。 Figures 31 to 37 are flowcharts showing an example of the procedure for error confirmation processing. The flowcharts in Figures 31 to 37 correspond to the programs in Figures 23 to 27. The error confirmation processing is executed outside the area by the main control board 30 (main control CPU 31).

ステップS400:主制御基板30は、Qレジスタに領域外作業領域の上位バイトをセットする。
ステップS401:主制御基板30は、サブコマンド要求カウンタをクリアする。
ステップS402:主制御基板30は、エラー管理処理テーブル1のアドレスをセットする。
ステップS403:主制御基板30は、状態項目数をセットする。
ステップS404:主制御基板30は、入力ポート状態フラグのアドレスをロードする。
ステップS405:主制御基板30は、対象アドレスの内容をロードする。
ステップS406:主制御基板30は、Cレジスタに0をセットする。
ステップS408:主制御基板30は、対象アドレスの内容と監視対象ビットを論理積する。
ステップS409:主制御基板30は、ゼロフラグが1か否か(異常未発生か?)を確認する。その結果、ゼロフラグが1であることを確認した場合(Yes)、主制御基板30はステップS411を実行する。一方、ゼロフラグが1であることを確認できない場合(No)、主制御基板30はステップS410を実行する。
Step S400: The main control board 30 sets the upper byte of the outside area work area in the Q register.
Step S401: The main control board 30 clears the sub-command request counter.
Step S402: The main control board 30 sets the address of the error management processing table 1.
Step S403: The main control board 30 sets the number of status items.
Step S404: The main control board 30 loads the address of the input port status flag.
Step S405: The main control board 30 loads the contents of the target address.
Step S406: The main control board 30 sets the C register to 0.
Step S408: The main control board 30 performs a logical AND operation on the contents of the target address and the monitored bit.
Step S409: The main control board 30 checks whether the zero flag is 1 (has no abnormality occurred?). As a result, if it is confirmed that the zero flag is 1 (Yes), the main control board 30 executes step S411. On the other hand, if it is not confirmed that the zero flag is 1 (No), the main control board 30 executes step S410.

ステップS410:主制御基板30は、Cレジスタをインクリメント(Cレジスタに1をセット)する。
ステップS411:主制御基板30は、ステータス前回値のアドレスをロードする。
ステップS412:主制御基板30は、対象アドレスの内容をロードする。
ステップS413:主制御基板30は、ロードした内容とCレジスタを比較してゼロフラグを更新する。
ステップS414:主制御基板30は、対象アドレスにCレジスタ(ステータス今回値)をセーブする。
ステップS415:主制御基板30は、DEレジスタをインクリメント(タイマのアドレスをセット)する。
ステップS416:主制御基板30は、HLレジスタをインクリメント(タイマ値のアドレスを指す)する。
Step S410: The main control board 30 increments the C register (sets the C register to 1).
Step S411: The main control board 30 loads the address of the previous status value.
Step S412: The main control board 30 loads the contents of the target address.
Step S413: The main control board 30 compares the loaded contents with the C register and updates the zero flag.
Step S414: The main control board 30 saves the C register (current status value) to the target address.
Step S415: The main control board 30 increments the DE register (sets the timer address).
Step S416: The main control board 30 increments the HL register (points to the address of the timer value).

〔図32:外部結合子(2)以降〕
ステップS417:主制御基板30は、ゼロフラグが1か否かを確認する。その結果、ゼロフラグが1であることを確認した場合(Yes)、主制御基板30はステップS420を実行する。一方、ゼロフラグが1であることを確認できない場合(No)、主制御基板30はステップS418を実行する。
ステップS418:主制御基板30は、タイマ値をロードする。
ステップS419:主制御基板30は、タイマにタイマ値をセーブする。
ステップS420:主制御基板30は、HLレジスタをインクリメントする。
ステップS421:主制御基板30は、タイマをロードする。
ステップS422:主制御基板30は、タイマの値が0か否かを確認する。その結果、タイマの値が0であることを確認した場合(Yes)、主制御基板30は、外部結合子(4)に移行してステップS446(図34)を実行する。一方、ゼロフラグが1であることを確認できない場合(No)、主制御基板30はステップS423を実行する。
[Figure 32: External connector (2) and onwards]
Step S417: The main control board 30 checks whether the zero flag is 1. As a result, if it is confirmed that the zero flag is 1 (Yes), the main control board 30 executes step S420. On the other hand, if it is not confirmed that the zero flag is 1 (No), the main control board 30 executes step S418.
Step S418: The main control board 30 loads the timer value.
Step S419: The main control board 30 saves the timer value in the timer.
Step S420: The main control board 30 increments the HL register.
Step S421: The main control board 30 loads the timer.
Step S422: The main control board 30 checks whether the timer value is 0. If the main control board 30 checks that the timer value is 0 (Yes), it moves to the external connector (4) and executes step S446 (FIG. 34). On the other hand, if it cannot check that the zero flag is 1 (No), the main control board 30 executes step S423.

ステップS423:主制御基板30は、タイマの値を1減算する。
ステップS424:主制御基板30は、減算後のタイマの値が0でないか否かを確認する。その結果、タイマの値が0でないことを確認した場合(Yes)、主制御基板30は、外部結合子(4)に移行してステップS446(図34)を実行する。一方、タイマの値が0でないことを確認できない場合(No)、主制御基板30はステップS425を実行する。
Step S423: The main control board 30 decrements the timer value by one.
Step S424: The main control board 30 checks whether the timer value after subtraction is not 0. As a result, if it is confirmed that the timer value is not 0 (Yes), the main control board 30 proceeds to the external connector (4) and executes step S446 (FIG. 34). On the other hand, if it is not confirmed that the timer value is not 0 (No), the main control board 30 executes step S425.

ステップS425:主制御基板30は、DEレジスタをインクリメント(エラーフラグのアドレスをセット)する。
ステップS426:主制御基板30は、エラーフラグをロードする。
ステップS427:主制御基板30は、エラーフラグとステータス今回値が一致するか否かを確認する。その結果、一致することを確認した場合(Yes)、主制御基板30は、外部結合子(4)に移行してステップS446(図34)を実行する。一方、一致を確認できない場合(No)、主制御基板30はステップS428を実行する。
Step S425: The main control board 30 increments the DE register (sets the address of the error flag).
Step S426: The main control board 30 loads the error flag.
Step S427: The main control board 30 checks whether the error flag and the current status value match. If they match (Yes), the main control board 30 moves to the external connector (4) and executes step S446 (FIG. 34). On the other hand, if they cannot match (No), the main control board 30 executes step S428.

ステップS428:主制御基板30は、エラーフラグにステータス今回値をセーブする。
ステップS429:主制御基板30は、DEレジスタとHLレジスタを交換する。
Step S428: The main control board 30 saves the current status value in the error flag.
Step S429: The main control board 30 exchanges the DE register and the HL register.

〔図33:外部結合子(3)以降〕
ステップS430:主制御基板30は、HLレジスタにサブコマンド要求カウンタのアドレスをセットする。
ステップS431:主制御基板30は、サブコマンド要求カウンタを1加算する。
ステップS432:主制御基板30は、サブコマンド要求カウンタをロードする。
ステップS433:主制御基板30は、HLレジスタにサブコマンド要求カウンタ値を2回加算する。
ステップS434:主制御基板30は、サブコマンド要求バッファに状態指定先行コマンド(85H)をセーブする。
ステップS435:主制御基板30は、HLレジスタを1減算する。
ステップS436:主制御基板30は、ステータス今回値をセットする。
ステップS437:主制御基板30は、ステータス今回値を2倍する。
ステップS438:主制御基板30は、ステータス今回値の2倍に後続コマンド値を加算する。
ステップS439:主制御基板30は、サブコマンド要求バッファに加算結果をセーブする。
ステップS440:主制御基板30は、DEレジスタとHLレジスタを交換する。
[Figure 33: External connector (3) and onwards]
Step S430: The main control board 30 sets the address of the sub-command request counter in the HL register.
Step S431: The main control board 30 increments the sub-command request counter by one.
Step S432: The main control board 30 loads the sub-command request counter.
Step S433: The main control board 30 increments the sub-command request counter value twice in the HL register.
Step S434: The main control board 30 saves the state designation preceding command (85H) in the subcommand request buffer.
Step S435: The main control board 30 decrements the HL register by 1.
Step S436: The main control board 30 sets the current status value.
Step S437: The main control board 30 doubles the current status value.
Step S438: The main control board 30 adds the subsequent command value to twice the current status value.
Step S439: The main control board 30 saves the addition result in the sub-command request buffer.
Step S440: The main control board 30 exchanges the DE register and the HL register.

〔図34:外部結合子(5)以降〕
ステップS441:主制御基板30は、ステータス今回値が0か否かを確認する。その結果、ステータス今回値が0であることを確認した場合(Yes)、主制御基板30はステップS446を実行する。一方、ステータス今回値が0であることを確認できない場合(No)、主制御基板30は、ステップS442を実行する。
ステップS442:主制御基板30は、エラー発生時設定対象ラムアドレス下位バイトをロードする。
ステップS443:主制御基板30は、ロードした値が0か否かを確認する。その結果、ロードした値が0であることを確認した場合(Yes)、主制御基板30はステップS446を実行する。一方、ロードした値が0であることを確認できない場合(No)、主制御基板30は、ステップS444を実行する。
[Figure 34: External connector (5) and onwards]
Step S441: The main control board 30 checks whether the current status value is 0. As a result, if it is confirmed that the current status value is 0 (Yes), the main control board 30 executes step S446. On the other hand, if it is not confirmed that the current status value is 0 (No), the main control board 30 executes step S442.
Step S442: The main control board 30 loads the lower byte of the RAM address to be set when an error occurs.
Step S443: The main control board 30 checks whether the loaded value is 0. As a result, if it is confirmed that the loaded value is 0 (Yes), the main control board 30 executes step S446. On the other hand, if it is not confirmed that the loaded value is 0 (No), the main control board 30 executes step S444.

ステップS444:主制御基板30は、エラー発生時設定データをロードする。
ステップS445:主制御基板30は、対象ラムアドレスにセーブする。
ステップS446:主制御基板30は、HLレジスタに3を加算する。
ステップS447:主制御基板30は、ループ継続か否かを確認する。その結果、ループ継続であることを確認した場合(Yes)、主制御基板30は、外部結合子(1)に移行してステップS404(図31)を実行する。一方、ループ継続であることを確認できない場合(No)、主制御基板30は、外部結合子(6)に移行してステップS448(図35)を実行する。
Step S444: The main control board 30 loads the setting data for when an error occurs.
Step S445: The main control board 30 saves to the target RAM address.
Step S446: The main control board 30 adds 3 to the HL register.
Step S447: The main control board 30 checks whether the loop continues. If it is confirmed that the loop continues (Yes), the main control board 30 moves to the external connector (1) and executes step S404 (FIG. 31). On the other hand, if it is not confirmed that the loop continues (No), the main control board 30 moves to the external connector (6) and executes step S448 (FIG. 35).

〔図35:外部結合子(6)以降〕
ステップS448:主制御基板30は、エラー管理処理テーブル2のアドレスをセットする。
ステップS449:主制御基板30は、状態項目数をセットする。
ステップS450:主制御基板30は、エラーフラグをロードする。
ステップS451:主制御基板30は、エラーフラグと監視対象ビットを論理積する。
ステップS452:主制御基板30は、ゼロフラグが1か否か(異常未発生か?)を確認する。その結果、ゼロフラグが1であることを確認した場合(Yes)、主制御基板30はステップS454を実行する。一方、ゼロフラグが1であることを確認できない場合(No)、主制御基板30は、ステップS453を実行する。
[Figure 35: External connector (6) and onwards]
Step S448: The main control board 30 sets the address of the error management processing table 2.
Step S449: The main control board 30 sets the number of status items.
Step S450: The main control board 30 loads the error flag.
Step S451: The main control board 30 performs a logical AND operation on the error flag and the monitored bit.
Step S452: The main control board 30 checks whether the zero flag is 1 (has no abnormality occurred?). If it is confirmed that the zero flag is 1 (Yes), the main control board 30 executes step S454. On the other hand, if it is not confirmed that the zero flag is 1 (No), the main control board 30 executes step S453.

ステップS453:主制御基板30は、Aレジスタに1をセットする。
ステップS454:主制御基板30は、HLレジスタをインクリメント(エラー発生フラグのアドレスを指す)する。
ステップS455:主制御基板30は、エラー発生フラグのアドレスをロードする。
ステップS456:主制御基板30は、エラー発生フラグにAレジスタをセーブする。
ステップS457:主制御基板30は、ゼロフラグが1か否か(異常未発生か?)を確認する。その結果、ゼロフラグが1であることを確認した場合(Yes)、主制御基板30は外部結合子(9)に移行してステップS472(図36)を実行する。一方、ゼロフラグが1であることを確認できない場合(No)、主制御基板30は、ステップS458を実行する。
Step S453: The main control board 30 sets the A register to 1.
Step S454: The main control board 30 increments the HL register (points to the address of the error occurrence flag).
Step S455: The main control board 30 loads the address of the error occurrence flag.
Step S456: The main control board 30 saves the A register as an error occurrence flag.
Step S457: The main control board 30 checks whether the zero flag is 1 (no abnormality has occurred). If it is confirmed that the zero flag is 1 (Yes), the main control board 30 proceeds to the external connector (9) and executes step S472 (FIG. 36). On the other hand, if it is not confirmed that the zero flag is 1 (No), the main control board 30 executes step S458.

ステップS458:主制御基板30は、DEレジスタとHLレジスタを交換する。
ステップS459:主制御基板30は、HLレジスタにサブコマンド要求カウンタのアドレスをセットする。
ステップS460:主制御基板30は、サブコマンド要求カウンタを1加算する。
Step S458: The main control board 30 exchanges the DE register and the HL register.
Step S459: The main control board 30 sets the address of the sub-command request counter in the HL register.
Step S460: The main control board 30 increments the sub-command request counter by one.

〔図36:外部結合子(7)以降〕
ステップS461:主制御基板30は、サブコマンド要求カウンタをロードする。
ステップS462:主制御基板30は、HLレジスタにサブコマンド要求カウンタ値を2回加算する。
ステップS463:主制御基板30は、サブコマンド要求バッファに状態指定先行コマンド(85H)をセーブする。
ステップS464:主制御基板30は、HLレジスタを1減算する。
ステップS465:主制御基板30は、後続コマンドをロードする。
ステップS466:主制御基板30は、サブコマンド要求バッファに後続コマンドをセーブする。
ステップS467:主制御基板30は、DEレジスタとHLレジスタを交換する。
ステップS468:主制御基板30は、エラー発生時設定対象ラムアドレス下位バイトをロードする。
ステップS469:主制御基板30は、ロードした値が0か否かを確認する。その結果、値が0であることを確認した場合(Yes)、主制御基板30はステップS472を実行する。一方、値が0であることを確認できない場合(No)、主制御基板30は、ステップS470を実行する。
[Figure 36: External connector (7) and onwards]
Step S461: The main control board 30 loads the sub-command request counter.
Step S462: The main control board 30 increments the sub-command request counter value twice in the HL register.
Step S463: The main control board 30 saves the state designation precedence command (85H) in the subcommand request buffer.
Step S464: The main control board 30 decrements the HL register by 1.
Step S465: The main control board 30 loads the subsequent commands.
Step S466: The main control board 30 saves the subsequent command in the sub-command request buffer.
Step S467: The main control board 30 exchanges the DE register and the HL register.
Step S468: The main control board 30 loads the lower byte of the RAM address to be set when an error occurs.
Step S469: The main control board 30 checks whether the loaded value is 0. As a result, if it is confirmed that the value is 0 (Yes), the main control board 30 executes step S472. On the other hand, if it is not confirmed that the value is 0 (No), the main control board 30 executes step S470.

ステップS470:主制御基板30は、エラー発生時設定データをロードする。
ステップS471:主制御基板30は、ロードした内容を対象ラムアドレスにセーブする。
ステップS472:主制御基板30は、HLレジスタに3を加算する。
ステップS473:主制御基板30は、ループ継続か否かを確認する。その結果、ループ継続であることを確認した場合(Yes)、主制御基板30は、外部結合子(8)に移行してステップS450(図35)を実行する。一方、ループ継続であることを確認できない場合(No)、主制御基板30は、外部結合子(10)に移行してステップS474(図37)を実行する。
Step S470: The main control board 30 loads the setting data for when an error occurs.
Step S471: The main control board 30 saves the loaded contents to the target RAM address.
Step S472: The main control board 30 adds 3 to the HL register.
Step S473: The main control board 30 checks whether the loop continues. If it is confirmed that the loop continues (Yes), the main control board 30 moves to the external connector (8) and executes step S450 (FIG. 35). On the other hand, if it is not confirmed that the loop continues (No), the main control board 30 moves to the external connector (10) and executes step S474 (FIG. 37).

〔図37:外部結合子(10)以降〕
ステップS474:主制御基板30は、エラーフラグをロードする。
ステップS475:主制御基板30は、ロードしたエラーフラグをスイッチエラーフラグと論理和する。
ステップS476:主制御基板30は、ロードしたエラーフラグを盤面磁気1エラーフラグと論理和する。
ステップS477:主制御基板30は、ロードしたエラーフラグを盤面磁気2エラーフラグと論理和する。
ステップS478:主制御基板30は、ロードしたエラーフラグを電波エラーフラグと論理和する。
[Figure 37: External connector (10) and onwards]
Step S474: The main control board 30 loads the error flag.
Step S475: The main control board 30 performs a logical OR on the loaded error flag and the switch error flag.
Step S476: The main control board 30 performs a logical OR on the loaded error flag and the board magnetic 1 error flag.
Step S477: The main control board 30 performs a logical OR on the loaded error flag and the board magnetic 2 error flag.
Step S478: The main control board 30 performs a logical OR on the loaded error flag and the radio wave error flag.

ステップS479:主制御基板30は、ゼロフラグが1か否か(上記エラー未発生か?)を確認する。その結果、ゼロフラグが1であること(上記エラー未発生)を確認した場合(Yes)、主制御基板30は、呼び出し元に復帰する。一方、ゼロフラグが1であること(上記エラー未発生)を確認できない場合(No)、主制御基板30は、ステップS480を実行する。
ステップS480:主制御基板30は、不正検知1情報ビットタイマにタイマ値をセットする。
以上の手順を終了すると、主制御基板30は呼び出し元に戻る。
Step S479: The main control board 30 checks whether the zero flag is 1 (has the above error not occurred?). As a result, if it is confirmed that the zero flag is 1 (the above error has not occurred) (Yes), the main control board 30 returns to the caller. On the other hand, if it is not confirmed that the zero flag is 1 (the above error has not occurred) (No), the main control board 30 executes step S480.
Step S480: The main control board 30 sets a timer value in the fraud detection 1 information bit timer.
When the above procedure is completed, the main control board 30 returns to the caller.

〔第1の技術的特徴のまとめ〕
以上のような状態管理処理及びエラー確認処理のプログラム構成によれば、使用領域及びデータ領域のコード量の増大を抑えることができる。
[Summary of the first technical feature]
According to the program configuration of the state management process and error checking process as described above, an increase in the amount of code in the usage area and data area can be suppressed.

〔第4の技術的特徴:変動パターン選択2処理におけるコード削減の構成〕
次に、本実施形態の第4の技術的特徴について説明する。第4の技術的特徴は、変動パターン選択2処理にけるコード使用量の増大を抑える構成である。
[Fourth technical feature: Configuration of code reduction in variation pattern selection 2 processing]
Next, a fourth technical feature of the present embodiment will be described. The fourth technical feature is a configuration for suppressing an increase in the amount of code used in the variation pattern selection 2 process.

〔第4の技術的特徴の概要〕
変動パターン選択2処理は、特別図柄の変動パターンを決定する処理において呼び出されるモジュールであり、遊技の進行(実行)に関する内容を制御するため、使用領域にプログラムを配置する必要がある。先ず、変動パターン決定処理の概要を説明する。
[Outline of the fourth technical feature]
The variation pattern selection 2 process is a module that is called in the process of determining the variation pattern of the special symbol, and in order to control the contents related to the progress (execution) of the game, it is necessary to place the program in the usage area. First, an overview of the variation pattern determination process will be described.

〔変動パターン決定処理の概要〕
図38は、変動パターン決定処理の手順例を示すフローチャートである。このフローチャートは、主制御基板30(主制御CPU31)により実行される。
ステップS600:主制御基板30は、状態別及び停止図柄別テーブルアドレスをセットする。ここでセットされるテーブルアドレスは、以後の手順において最終的に変動パターンを決定(乱数抽選により選択)するための基礎となるテーブルマスタの場所を指定するためのものである。本実施形態では、はずれ時又は大当り時のいずれについても処理が共通となっているが、変動パターンの決定に用いるテーブルの場所(テーブルアドレス)については、現在の遊技状態別及び停止図柄別のものがROMに記憶したテーブルで規定されている。
[Outline of the fluctuation pattern determination process]
38 is a flowchart showing an example of a procedure for a variation pattern determination process. This flowchart is executed by the main control board 30 (main control CPU 31).
Step S600: The main control board 30 sets the table addresses by state and by stopping symbols. The table addresses set here are for specifying the location of the table master that is the basis for finally determining the variation pattern (selected by random number lottery) in the subsequent procedures. In this embodiment, the processing is common for both a miss and a jackpot, but the location of the table (table address) used to determine the variation pattern is specified by the table stored in the ROM for the current game state and the stopping symbols.

ステップS601:主制御基板30は、作動記憶数別オフセット値を取得する。このオフセット値は、例えば今回の変動対象図柄が第1特別図柄であれば第1特別図柄作動記憶数カウンタ値、第2特別図柄であれば第2特別図柄作動記憶数カウンタ値に基づいて、作動記憶数別オフセット値テーブルから取得することができる。なお、作動記憶数別オフセット値は、第1特別図柄の作動記憶数及び第2特別図柄の作動記憶数を合計したカウンタ値に基づいて取得されるテーブル構成としてもよい。 Step S601: The main control board 30 acquires an offset value by activation memory number. This offset value can be acquired from an offset value table by activation memory number based on the first special pattern activation memory number counter value if the current target pattern is the first special pattern, or the second special pattern activation memory number counter value if the current target pattern is the second special pattern. Note that the offset value by activation memory number may be configured as a table acquired based on the counter value that is the sum of the activation memory number of the first special pattern and the activation memory number of the second special pattern.

ステップS602:主制御基板30は、取得した作動記憶数別オフセット値から、第1段階選択用テーブルをセットする。ここでいう「第1段階選択用テーブル」は、変動パターンの決定に関する3つの乱数(変動グループ決定乱数、変動モード決定乱数及び変動パターン決定乱数)のうち、特に変動グループ決定乱数を用いて変動パターンの第1カテゴリである「変動グループ」の抽選を行うテーブルである。 Step S602: The main control board 30 sets the first stage selection table from the acquired offset value for each number of operation memories. The "first stage selection table" here is a table that uses the fluctuation group determination random number in particular out of the three random numbers related to determining the fluctuation pattern (fluctuation group determination random number, fluctuation mode determination random number, and fluctuation pattern determination random number) to draw the "fluctuation group," which is the first category of the fluctuation pattern.

ステップS603:主制御基板30は、RWMの乱数記憶領域から変動グループ決定乱数をロードする。
ステップS604:主制御基板30は、第1段階変動グループ決定処理(変動パターン選択1処理)を実行する。この処理は、上記のように変動グループ決定乱数を用いて変動パターンの第1カテゴリ抽選(変動グループの抽選)を行い、取得した変動グループ指定オフセット値を戻り値としてセットするものである。
Step S603: The main control board 30 loads the variable group determination random number from the random number memory area of the RWM.
Step S604: The main control board 30 executes the first stage variation group determination process (variation pattern selection 1 process). This process performs the first category lottery (variation group lottery) of the variation pattern using the variation group determination random number as described above, and sets the obtained variation group designation offset value as a return value.

ステップS606:主制御基板30は、先の戻り値である変動モード選択オフセットを用いて「第2段階選択用テーブル」をセットする。ここでいう「第2段階選択用テーブル」は、特に変動モード決定乱数を用いて変動パターンの第2カテゴリである「変動モード」の抽選を行うテーブルである。 Step S606: The main control board 30 sets the "second stage selection table" using the previously returned value, the fluctuation mode selection offset. The "second stage selection table" here is a table that uses a fluctuation mode determination random number to draw the "fluctuation mode," which is the second category of the fluctuation pattern.

ステップS607:主制御基板30は、RWM乱数記憶領域から変動モード決定乱数をロードする。
ステップS608:主制御基板30は、第2段階変動モード決定処理(本実施形態の変動パターン選択2処理)を実行する。この処理は、上記のように変動モード決定乱数を用いて変動パターンの第2カテゴリ抽選(変動モードの抽選)を行い、取得した変動モード指定オフセット(パターン選択オフセット)値を戻り値としてセットするものである。ここで取得した変動モード指定オフセット(パターン選択オフセット)は、最終第3段階の変動パターン決定処理で用いられる変動パターン選択テーブルのアドレスを指定するものとなる。なお、具体的な処理の内容については、比較例との対比とともに後述する。
Step S607: The main control board 30 loads the variation mode determination random number from the RWM random number memory area.
Step S608: The main control board 30 executes the second stage fluctuation mode determination process (fluctuation pattern selection 2 process in this embodiment). This process uses the fluctuation mode determination random number as described above to perform a second category lottery for the fluctuation pattern (lottery for the fluctuation mode), and sets the acquired fluctuation mode designation offset (pattern selection offset) value as a return value. The fluctuation mode designation offset (pattern selection offset) acquired here specifies the address of the fluctuation pattern selection table used in the final third stage fluctuation pattern determination process. The specific contents of the process will be described later in comparison with a comparative example.

ステップS609:主制御基板30は、戻り値である変動モード指定オフセット(パターン選択オフセット)を用いて第3段階選択用テーブル(変動パターン選択テーブル)をセットする。具体的には、上記のように変動モード指定オフセットの値で示されるテーブルアドレスをROM上で指定する。 Step S609: The main control board 30 sets the third stage selection table (variation pattern selection table) using the return value of the variation mode designation offset (pattern selection offset). Specifically, it designates the table address in ROM indicated by the value of the variation mode designation offset as described above.

ステップS610:テーブルアドレスを指定すると、主制御基板30は、変動パターン決定乱数をロードする。
ステップS611:主制御基板30は、第3段階変動パターン決定処理を実行する。この処理では、主制御基板30は変動パターン決定乱数に基づき、上記の「第3段階選択用テーブル(変動モード別変動パターン選択テーブル)」から対応する変動パターン番号を選択する。また主制御基板30は、選択した変動パターン番号を戻り値にセットする。ここで選択した変動パターン番号は、最終的に当該変動で行われる一意の変動パターン(変動開始から予告の発生、テンパイまでの時間、リーチ態様、リーチ変動時間、最終停止表示に至るまでの変動態様)を表すものであり、この変動パターン番号から当該変動におけるトータルの変動時間(変動秒数)が一意に定まることになる。
Step S610: When the table address is specified, the main control board 30 loads the fluctuation pattern determination random number.
Step S611: The main control board 30 executes the third stage fluctuation pattern determination process. In this process, the main control board 30 selects the corresponding fluctuation pattern number from the above-mentioned "third stage selection table (fluctuation pattern selection table by fluctuation mode)" based on the fluctuation pattern determination random number. The main control board 30 also sets the selected fluctuation pattern number to the return value. The fluctuation pattern number selected here represents the unique fluctuation pattern that is ultimately performed in the fluctuation (the time from the start of the fluctuation to the occurrence of the notice, until the tenpai, the reach state, the reach fluctuation time, and the fluctuation state until the final stop display), and the total fluctuation time (the number of fluctuation seconds) in the fluctuation is uniquely determined from this fluctuation pattern number.

ステップS612:主制御基板30は、戻り値として選択した変動パターン番号から変動パターンコマンドを生成する。生成した変動パターンコマンドは、サブコマンド送信処理で演出制御基板40に送信される。そして、演出制御基板40は、受け取った変動パターンコマンドから当該変動の変動パターン情報を把握したり、変動演出パターンを選択したりすることができる。 Step S612: The main control board 30 generates a variation pattern command from the variation pattern number selected as the return value. The generated variation pattern command is sent to the performance control board 40 in the sub-command sending process. The performance control board 40 can then determine the variation pattern information of the corresponding variation from the received variation pattern command, and can select a variation performance pattern.

〔第2の技術的特徴の課題〕
上記のように、変動パターン選択2処理において使用領域のプログラム使用量(コード量)の増大を抑えたい。
一般に、データテーブル構成においてデータAとデータBがペアになっており、データAの範囲が0~10、データBの範囲が0~4000であるとする場合を考える。この場合、普通にデータAとデータBをテーブルに記載した場合、データAの記載に1バイト、データBの記載に2バイト、合計3バイトが必要となる。
ここで、データA×4096+データBで構成した別の「データC」を考えた場合、データCの範囲は0~53960であるため、この構成であれば、2バイトのデータとして記載できる。
[Problem of the second technical feature]
As described above, it is desirable to suppress an increase in the amount of program usage (amount of code) of the area used in the variation pattern selection 2 process.
Generally, consider a case where data A and data B are paired in a data table configuration, with data A ranging from 0 to 10 and data B ranging from 0 to 4000. In this case, if data A and data B are normally recorded in a table, one byte is required to record data A, two bytes are required to record data B, for a total of three bytes.
Here, if we consider another "data C" composed of data A x 4096 + data B, the range of data C is 0 to 53960, so with this composition, it can be written as 2-byte data.

例えば、本実施形態の変動パターン2選択処理(HPT_MOD)で読み込むテーブルには、4ビットのモード番号データと12ビットの比較値データからなる16ビットのデータが記載されている。このようなテーブルデータを扱う場合、比較例として以下の構成が考えられる。 For example, the table read in the variation pattern 2 selection process (HPT_MOD) of this embodiment contains 16-bit data consisting of 4-bit mode number data and 12-bit comparison value data. When handling such table data, the following configuration can be considered as a comparative example.

〔比較例のデータ処理構成〕
比較例では、モード番号データと比較値データの組をテーブルデータから先ず16ビットのデータとして読み込み、上位4ビットを0にすることで、比較値データを生成する。そして、比較値データと乱数値を比較し、条件を満たした場合、再度テーブルからデータを読み込み、今度は上位4ビットを有効にするという処理を行う。
[Data processing configuration of comparative example]
In the comparative example, a set of mode number data and comparison value data is first read from the table data as 16-bit data, and comparison value data is generated by setting the upper 4 bits to 0. Then, the comparison value data is compared with a random value, and if the condition is satisfied, data is read from the table again, and this time the upper 4 bits are made valid.

具体的には、比較例において変動パターン選択2処理を呼び出すにあたり、Aレジスタにモード選択オフセット、BCレジスタに乱数値をセットしておくこととする。本処理では、最終的にAレジスタにモード番号データ、Bレジスタにパターン選択オフセットがセットされる。このため本処理では、比較値データ及びモード番号データをテーブルからロードした後、上位バイトのモード番号データ部分をマスクし、比較値データ部分を抽出する。そして、乱数値が比較値未満となった場合、改めて比較値(の上位4ビット)及びモード番号データをロードし、4ビット右シフトすることで、モード番号を抽出する。比較例の場合、使用コード量は22バイトである。 Specifically, when calling the variation pattern selection 2 process in the comparative example, the mode selection offset is set in the A register and a random value is set in the BC register. In this process, the mode number data is ultimately set in the A register and the pattern selection offset in the B register. For this reason, in this process, after loading the comparison value data and mode number data from the table, the mode number data portion in the upper bytes is masked and the comparison value data portion is extracted. Then, if the random value value is less than the comparison value, the comparison value (the upper 4 bits) and mode number data are loaded again and the mode number is extracted by shifting it 4 bits to the right. In the comparative example, the amount of code used is 22 bytes.

図39は、比較例の変動パターン選択2処理のプログラムを示す図である。比較例のプログラム(コード)は、以下の通りである。なお、図39のプログラムコード中、各行に付記している括弧書きの数値は、使用バイト数を示している。 Figure 39 is a diagram showing a program for the variation pattern selection 2 process of the comparative example. The program (code) of the comparative example is as follows. Note that the numbers in parentheses on each line of the program code in Figure 39 indicate the number of bytes used.

「HPT_MOD:」は、変動パターン選択2処理の開始を示すラベルである。
〔モード選択テーブルアドレス選択処理〕
(2)「LDF HL,D_MOD_SEL」は、モード選択テーブルのアドレスをセットする命令である。ここでのコード量は2バイトである。
(1)「RST WORDSEL」は、ワードデータ選択処理を呼び出す処理である。ここでのコード量は1バイトである。
"HPT_MOD:" is a label indicating the start of the variation pattern selection 2 process.
[Mode selection table address selection process]
(2) "LDF HL, D_MOD_SEL" is a command to set the address of the mode selection table. The code size here is 2 bytes.
(1) "RST WORDSEL" is a process for calling a word data selection process. The code size here is 1 byte.

「HPT_MOD_10:」は、比較値取得処理の開始を示すラベルである。
〔比較値取得処理〕
(2)「LDIN AE,(HL)」は、比較値及びモード番号データをロードしてテーブルアドレスを2加算する命令である。ここでのコード量は2バイトである。
(2)「AND A,00FH」は、Aレジスタを[00FH]と論理積する命令である。ここでのコード量は2バイトである。
(1)「LD D,A」は、Dレジスタに抽出値(Aレジスタ)をセットする命令である。ここでのコード量は1バイトである。
"HPT_MOD_10:" is a label indicating the start of the comparison value acquisition process.
[Comparison value acquisition process]
(2) "LDIN AE, (HL)" is an instruction to load a comparison value and mode number data and increment the table address by 2. The code size here is 2 bytes.
(2) "AND A, 00FH" is an instruction to logically AND the A register with [00FH]. The code size here is 2 bytes.
(1) "LD D, A" is an instruction to set the extracted value (A register) to the D register. The code size here is 1 byte.

〔モード判定処理〕
(2)「CP BC,DE」は、BCレジスタの乱数値とDEレジスタの比較値を比較する命令である。ここでのコード量は2バイトである。
(2)「JR C,HPT_MOD_20」は、キャリーフラグが1であれば「HPT_MOD_20」に分岐する命令である。ここでのコード量は2バイトである。
[Mode Determination Processing]
(2) "CP BC,DE" is an instruction to compare the random number in the BC register with the comparison value in the DE register. The code size here is 2 bytes.
(2) "JR C, HPT_MOD_20" is an instruction to branch to "HPT_MOD_20" if the carry flag is 1. The amount of code here is 2 bytes.

〔テーブル更新処理〕
(1)「INC HL」は、HLレジスタで示すテーブルアドレスを1加算して次のデータブロックへ更新する命令である。ここでのコード量は1バイトである。
(2)「JR HPT_MOD_10」は、「HPT_MOD_10」にジャンプする命令である。ここでのコード量は2バイトである。
[Table update process]
(1) "INC HL" is an instruction to increment the table address indicated by the HL register by 1 and update it to the next data block. The code size here is 1 byte.
(2) "JR HPT_MOD_10" is an instruction to jump to "HPT_MOD_10." The amount of code here is 2 bytes.

「HPT_MOD_20:」は、パターン選択オフセット設定処理の開始を示すラベルである。
〔パターン選択オフセット設定処理〕
(1)「LD B,(HL)」は、HLレジスタで示す対象アドレスの内容をBレジスタにロードする命令である。ここでのコード量は1バイトである。
〔モード番号データ設定処理〕
(1)「DEC HL」は、HLレジスタのテーブルアドレスを1減算する命令である。ここでのコード量は1バイトである。
(1)「LD A,(HL)」は、HLレジスタで示す対象アドレスの内容をロードする命令である。ここでのコード量は1バイトである。
(3)「SRL A,4」は、Aレジスタを4ビット右シフトしてモード番号データを算出する命令である。ここでのコード量は3バイトである。
(1)「RET」は、呼び出し元に復帰する命令である。ここでのコード量は1バイトである。
"HPT_MOD_20:" is a label indicating the start of the pattern selection offset setting process.
[Pattern selection offset setting process]
(1) "LD B, (HL)" is an instruction to load the contents of the target address indicated by the HL register into the B register. The code size here is 1 byte.
[Mode number data setting process]
(1) "DEC HL" is an instruction to subtract 1 from the table address of the HL register. The code size here is 1 byte.
(1) "LD A, (HL)" is an instruction to load the contents of the target address indicated by the HL register. The code size here is 1 byte.
(3) "SRL A, 4" is an instruction to calculate mode number data by shifting the A register 4 bits to the right. The code size here is 3 bytes.
(1) "RET" is an instruction to return to the caller. The code size here is 1 byte.

図40は、比較例の変動パターン選択2処理の手順例を示すフローチャートである。このフローチャートは、図39のプログラムに対応している。ここでは便宜上、比較例の主制御基板が処理を実行することとする。 Figure 40 is a flowchart showing an example of the procedure for the variation pattern selection 2 process in the comparative example. This flowchart corresponds to the program in Figure 39. For the sake of convenience, it is assumed here that the main control board in the comparative example executes the process.

ステップS700:主制御基板は、HLレジスタにモード選択テーブルのアドレスをセットする。
ステップS701:主制御基板は、ワードデータ選択処理を呼び出す処理を実行する。
ステップS702:主制御基板は、比較値及びモード番号データをロードし、HLレジスタを2加算する。
ステップS703:主制御基板は、Aレジスタと[0FH]を論理積し、比較値の上位4ビットを抽出する。
ステップS704:主制御基板は、DレジスタにAレジスタをセットする。
ステップS705:主制御基板は、乱数値(BCレジスタ)と比較値(DEレジスタ)を比較する。
ステップS706:主制御基板は、キャリーフラグが1か否か(乱数値が比較値未満か?)を確認する。その結果、キャリーフラグが1であることを確認した場合(Yes)、主制御基板はステップS708を実行する。一方、キャリーフラグが1であることを確認できない場合(No)、主制御基板は、ステップS707を実行する。
ステップS707:主制御基板は、HLレジスタを1加算してステップS702を実行する。
Step S700: The main control board sets the address of the mode selection table in the HL register.
Step S701: The main control board executes a process for calling a word data selection process.
Step S702: The main control board loads the comparison value and mode number data, and increments the HL register by 2.
Step S703: The main control board performs a logical AND operation on the A register and [0FH], and extracts the upper 4 bits of the comparison value.
Step S704: The main control board sets the A register to the D register.
Step S705: The main control board compares the random number value (BC register) with the comparison value (DE register).
Step S706: The main control board checks whether the carry flag is 1 (is the random number value less than the comparison value?). If it is confirmed that the carry flag is 1 (Yes), the main control board executes step S708. On the other hand, if it is not confirmed that the carry flag is 1 (No), the main control board executes step S707.
Step S707: The main control board increments the HL register by 1 and executes step S702.

ステップS708:主制御基板は、Bレジスタにパターン選択オフセットをロードする。
ステップS709:主制御基板は、HLレジスタを1減算する。
ステップS710:主制御基板は、比較値及びモード番号の上位バイトデータをロードする。
ステップS711:主制御基板は、Aレジスタの内容を4ビット右シフトし、モード番号を抽出する。
以上の手順を終了すると、主制御基板は呼び出し元に戻る。
Step S708: The main control board loads the pattern selection offset into the B register.
Step S709: The main control board decrements the HL register by one.
Step S710: The main control board loads the upper byte data of the comparison value and the mode number.
Step S711: The main control board shifts the content of the A register to the right by 4 bits and extracts the mode number.
Once the above steps are completed, the main control board returns to the caller.

〔本実施形態の変動パターン選択2処理の構成〕
次に、本実施形態の変動パターン選択2処理の構成について説明する。
本実施形態においても、比較例と同様に、変動パターン選択2処理を呼び出すにあたり、Aレジスタにモード選択オフセット、BCレジスタに乱数値をセットしておくこととする。そして本実施形態では、Aレジスタにモード番号データ、Bレジスタにパターン選択オフセットがセットされる。こととなる。本実施形態の変動パターン選択2処理で使用するコード量は16バイトである。
[Configuration of the variation pattern selection 2 process of this embodiment]
Next, the configuration of the variation pattern selection 2 process of this embodiment will be described.
In this embodiment, as in the comparative example, when calling the variation pattern selection 2 process, the mode selection offset is set in the A register and the random number is set in the BC register. In this embodiment, the mode number data is set in the A register and the pattern selection offset is set in the B register. The amount of code used in the variation pattern selection 2 process of this embodiment is 16 bytes.

図41は、本実施形態の変動パターン選択2処理のプログラム関係を示す図である。図41中(A)がプログラム本体を示し、図41中(B)がHLレジスタにより指定されるテーブルを示す。なお、図41のプログラムコード中、各行に付記している括弧書きの数値は、使用バイト数を示している。 Figure 41 is a diagram showing the program relationships of the variation pattern selection 2 process of this embodiment. In Figure 41, (A) shows the program body, and (B) shows the table specified by the HL register. In the program code in Figure 41, the numbers in parentheses added to each line indicate the number of bytes used.

「HPT_MOD」は、変動パターン選択2処理の開始を示すラベルである。
〔モード選択テーブルアドレス選択処理〕
(2)「LDF HL,D_MOD_SEL」は、モード選択テーブルのアドレスをセットする命令である。ここでのコード量は2バイトである。
(1)「RST WORDSEL」は、ワードデータ選択処理を呼び出す処理である。ここでのコード量は1バイトである。
"HPT_MOD" is a label indicating the start of the variation pattern selection 2 process.
[Mode Selection Table Address Selection Process]
(2) "LDF HL, D_MOD_SEL" is a command to set the address of the mode selection table. The code size here is 2 bytes.
(1) "RST WORDSEL" is a process for calling a word data selection process. The code size here is 1 byte.

「HPT_MOD_10:」は、比較値取得処理の開始を示すラベルである。
〔比較値取得処理〕
(2)「LDIN AE,(HL)」は、比較値及びモード番号データをロードしてテーブルアドレスを2加算する命令である。ここでは、テーブルから比較値及びモード番号をAEレジスタにロードしつつ、テーブルアドレスに2を加算する。この結果、Aレジスタの上位4ビットはモード番号、下位4ビットは比較値の上位バイト、Eレジスタは比較値の下位バイトが設定される。ここでのコード量は2バイトである。
(1)「INC HL」は、HLレジスタをインクリメントする命令である。テーブルアドレスはパターン選択オフセットを指し示しているため、ここではHLレジスタが示すテーブルアドレスに1を加算し、次の比較値及びモード番号を指し示す状態にする。ここでのコード量は1バイトである。
"HPT_MOD_10:" is a label indicating the start of the comparison value acquisition process.
[Comparison value acquisition process]
(2) "LDIN AE, (HL)" is an instruction to load a comparison value and mode number data and add 2 to the table address. Here, the comparison value and mode number are loaded from the table into the AE register, while adding 2 to the table address. As a result, the upper 4 bits of the A register are set to the mode number, the lower 4 bits are set to the upper byte of the comparison value, and the E register is set to the lower byte of the comparison value. The amount of code here is 2 bytes.
(1) "INC HL" is an instruction to increment the HL register. Since the table address indicates the pattern selection offset, 1 is added to the table address indicated by the HL register, and the table address is made to point to the next comparison value and mode number. The code size here is 1 byte.

〔モード番号データ設定処理〕
(3)「DIV D,A,16」は、モード番号を算定する命令である。「DIV D,A,16」命令は、「モード番号と比較値の分離」及び「モード番号の右シフト」を単一の命令で実行するものである。すなわち、ここではAレジスタを16で除算し、Aレジスタに商(モード番号データ)、Dレジスタに余り(比較値の上位バイト)を設定する処理である。この結果、DEレジスタには乱数との比較値が設定(比較値データが生成)される。ここでのコード量は3バイトである。
[Mode number data setting process]
(3) "DIV D, A, 16" is an instruction to calculate the mode number. The "DIV D, A, 16" instruction executes "separation of the mode number and comparison value" and "right shift of the mode number" with a single instruction. In other words, this is a process in which the A register is divided by 16, and the quotient (mode number data) is set in the A register, and the remainder (high-order byte of the comparison value) is set in the D register. As a result, the comparison value with the random number is set in the DE register (comparison value data is generated). The amount of code here is 3 bytes.

〔モード判定処理〕
(2)「CP BC,DE」は、BCレジスタの乱数値とDEレジスタの比較値の内容を比較する命令である。ここでは、乱数値(BCレジスタ)と比較値(DEレジスタ)を比較し、キャリーフラグをセットする。例えば、DEレジスタの値が3368である場合、BCレジスタの値が0~3367であればキャリーフラグがセット(C)され、3368以上であればキャリーフラグがリセット(NC)される。ここでのコード量は2バイトである。
(2)「JR NC,HPT_MOD_10」は、キャリーフラグが0であれば「HPT_MOD_10」に分岐する命令である。ここでは、上で設定したキャリーフラグを確認し、リセット(NC)であれば、「HPT_MOD_10」に戻る。HLレジスタは次の比較値及びモード番号を指しているため、戻った先のLDIN命令で次の値をロードすることができる。ここでのコード量は2バイトである。
[Mode Determination Processing]
(2) "CP BC,DE" is an instruction to compare the contents of the random number in the BC register with the comparison value in the DE register. Here, the random number (BC register) is compared with the comparison value (DE register) and the carry flag is set. For example, if the value of the DE register is 3368, the carry flag is set (C) if the value of the BC register is between 0 and 3367, and is reset (NC) if it is 3368 or greater. The amount of code here is 2 bytes.
(2) "JR NC, HPT_MOD_10" is an instruction to branch to "HPT_MOD_10" if the carry flag is 0. Here, the carry flag set above is checked, and if it is reset (NC), it returns to "HPT_MOD_10". Since the HL register points to the next comparison value and mode number, the next value can be loaded by the LDIN instruction at the return destination. The amount of code here is 2 bytes.

〔パターン選択オフセット設定処理〕
(1)「DEC HL」は、HLレジスタをデクリメントする命令である。すなわち、上記の「INC HL」命令で進めたテーブルアドレスを1減算し、再びパターン選択オフセットを指す状態とする。ここでのコード量は1バイトである。
(1)「LD B,(HL)」は、対象アドレスの内容をロードする命令である。ここでは、Bレジスタをパターン選択オフセットで上書きする。ここでのコード量は1バイトである。
(1)「RET」は、呼び出し元に復帰する命令である。ここでのコード量は1バイトである。
モード番号データは、モード番号データ設定処理でAレジスタに設定された状態を保持しており、比較例のように再びテーブルから値を読み出して加工する必要はない。
[Pattern selection offset setting process]
(1) "DEC HL" is an instruction to decrement the HL register. That is, the table address advanced by the above "INC HL" instruction is decremented by 1, and the table address is returned to the pattern selection offset. The code amount here is 1 byte.
(1) "LD B, (HL)" is an instruction to load the contents of the target address. Here, the B register is overwritten with the pattern selection offset. The amount of code here is 1 byte.
(1) "RET" is an instruction to return to the caller. The code size here is 1 byte.
The mode number data is held in the state set in the A register in the mode number data setting process, and there is no need to read the value from the table again and process it as in the comparative example.

〔テーブル構成例〕
モード選択テーブルアドレス選択処理では、呼び出し時に設定されたモード選択オフセット(Aレジスタ)に応じて、比較値、モード番号データ及びパターン選択オフセットが記載されたテーブルのアドレスをHLレジスタに設定する。図41中(B)がテーブル構成例である。
「D_MOD_SEL_07:」は、テーブルの先頭を示すラベルである。
「DW 3368 + 1000H * 004H」は、比較値とモード番号データの合成値である。
「DB @D_PAT_SEL_10 」は、パターン選択10オフセットである。
「DW 3868 + 1000H * 005H」は、比較値とモード番号データの合成値である。
「DB @D_PAT_SEL_11」は、パターン選択11オフセットである。
「DW @STP + 1000H * 006H」は、比較値とモード番号データの合成値である。
「DB @D_PAT_SEL_12」は、パターン選択12オフセットである。
[Table configuration example]
In the mode selection table address selection process, the address of a table in which comparison values, mode number data, and pattern selection offsets are written is set in the HL register according to the mode selection offset (A register) set at the time of calling. (B) in Figure 41 is an example of the table configuration.
"D_MOD_SEL_07:" is a label indicating the top of the table.
"DW 3368 + 1000H * 004H" is a composite value of the comparison value and the mode number data.
"DB @D_PAT_SEL_10" is the pattern selection 10 offset.
"DW 3868 + 1000H * 005H" is a composite value of the comparison value and the mode number data.
"DB @D_PAT_SEL_11" is the pattern selection 11 offset.
"DW @STP + 1000H * 006H" is a composite value of the comparison value and the mode number data.
"DB @D_PAT_SEL_12" is the pattern selection 12 offset.

〔テーブルを使用した振分〕
図42は、テーブル「D_MOD_SEL_07」を使用した振り分けを示す図である。すなわち、図41中(B)のテーブルを選択した場合、BCレジスタに設定された乱数値に応じて以下の振り分けを行うことになる。なお、処理の呼び出し時に設定される乱数は、0~4092までの4093通りであるとする。
取得した乱数値が0~3367の場合、モード番号データは04Hとなり、パターン選択オフセットは「10(@D_PAT_SEL_10)」となる。
取得した乱数値が3368~3867の場合、モード番号データは05Hとなり、パターン選択オフセットは「11(@D_PAT_SEL_11)」となる。
取得した乱数値が3868以上の場合、モード番号データは06Hとなり、パターン選択オフセットは「12(@D_PAT_SEL_12)」となる。
[Allocation using a table]
Fig. 42 is a diagram showing allocation using the table "D_MOD_SEL_07". That is, when the table (B) in Fig. 41 is selected, the following allocation is performed according to the random number value set in the BC register. Note that the random number set when the process is called has 4093 possible values from 0 to 4092.
If the acquired random number is between 0 and 3367, the mode number data will be 04H and the pattern selection offset will be "10 (@D_PAT_SEL_10)."
If the acquired random number is between 3368 and 3867, the mode number data will be 05H and the pattern selection offset will be "11 (@D_PAT_SEL_11)."
If the acquired random number value is 3868 or greater, the mode number data becomes 06H, and the pattern selection offset becomes "12 (@D_PAT_SEL_12)."

図43は、本実施形態の変動パターン選択2処理の手順例を示すフローチャートである。このフローチャートは、図41中(A)のプログラムに対応している。変動パターン選択2処理は、主制御基板30(主制御CPU31)が実行する。
ステップS800:主制御基板30は、HLレジスタにモード選択テーブルのアドレスをセットする。
ステップS801:主制御基板30は、ワードデータ選択処理を呼び出す処理を実行する。
ステップS802:主制御基板30は、比較値及びモード番号データをロードし、HLレジスタを2加算する。
ステップS803:主制御基板30は、HLレジスタを1加算する。
ステップS804:主制御基板30は、Aレジスタを16で除算し、商(モード番号データ)をAレジスタ、余り(比較値)をDレジスタにセットする。
ステップS805:主制御基板30は、乱数値(BCレジスタ)と比較値(DEレジスタ)を比較する。
ステップS806:主制御基板30は、キャリーフラグが0であるか否か(乱数値が比較値以上か?)を確認する。その結果、キャリーフラグが0であることを確認した場合(Yes)、主制御基板30は、ステップS802を実行する。一方、キャリーフラグが0であることを確認できない場合(No)、主制御基板30は、ステップS807を実行する。
Fig. 43 is a flowchart showing an example of the procedure of the variation pattern selection 2 process of this embodiment. This flowchart corresponds to the program (A) in Fig. 41. The variation pattern selection 2 process is executed by the main control board 30 (main control CPU 31).
Step S800: The main control board 30 sets the address of the mode selection table in the HL register.
Step S801: The main control board 30 executes a process to call the word data selection process.
Step S802: The main control board 30 loads the comparison value and mode number data, and increments the HL register by 2.
Step S803: The main control board 30 increments the HL register by 1.
Step S804: The main control board 30 divides the A register by 16, and sets the quotient (mode number data) in the A register and the remainder (comparison value) in the D register.
Step S805: The main control board 30 compares the random number value (BC register) with the comparison value (DE register).
Step S806: The main control board 30 checks whether the carry flag is 0 (is the random number value equal to or greater than the comparison value?). If it is confirmed that the carry flag is 0 (Yes), the main control board 30 executes step S802. On the other hand, if it is not confirmed that the carry flag is 0 (No), the main control board 30 executes step S807.

ステップS807:主制御基板30は、HLレジスタを1減算する。
ステップS808:主制御基板30は、Bレジスタにパターン選択オフセットをロードする。
以上の手順を終了すると、主制御基板30は、呼び出し元に戻る。
Step S807: The main control board 30 subtracts 1 from the HL register.
Step S808: The main control board 30 loads the pattern selection offset into the B register.
When the above procedure is completed, the main control board 30 returns to the caller.

〔第4の技術的特徴のまとめ〕
以上のように、本実施形態では、変動パターン選択2処理のプログラムコード量を比較例の場合よりも6バイト削減することができる。したがって、プログラム容量の増大を抑えることができる。
[Summary of the fourth technical feature]
As described above, in this embodiment, the amount of program code for the variation pattern selection 2 process can be reduced by 6 bytes compared to the comparative example. Therefore, an increase in program capacity can be suppressed.

〔第5の技術的特徴:ベース、役物比率及び連続役物比率の算定タイミングの構成〕
次に、本実施形態の第5の技術的特徴について説明する。第5の技術的特徴は、管理遊技機100の性能を算出する処理を実行するタイミングに関する構成である。
[Fifth technical feature: Configuration of calculation timing of base, role ratio and continuous role ratio]
Next, a fifth technical feature of the present embodiment will be described. The fifth technical feature is a configuration related to the timing of executing the process for calculating the performance of the managed gaming machine 100.

〔第5の技術的特徴の課題〕
管理遊技機100の性能として、ベース値、役物比率及び連続役物比率がある。これらの性能値を算出する処理は、タイマ割込み処理中の性能表示モニタ制御処理(E_SHYMT)で実行する。このとき、ベース、役物比率及び連続役物比率の算定時間が長くなることを抑えたい。
[Problem of the fifth technical feature]
The performance of the managed gaming machine 100 includes a base value, a role ratio, and a consecutive role ratio. The process of calculating these performance values is executed by the performance display monitor control process (E_SHYMT) during the timer interrupt process. At this time, it is desired to suppress the calculation time of the base, role ratio, and consecutive role ratio from becoming long.

〔第5の技術的特徴の概要〕
タイマ割込み処理を終了させる必要がある時間が限られるため、1回のタイマ割込み処理の中では、ベース値、役物比率及び連続役物比率をそれぞれ算定する処理について、2つ以上の処理を実行しない構成とする。なお、ベース値、役物比率及び連続役物比率は、それぞれ以下の条件を満たした場合に算定することとする。
[Outline of the fifth technical feature]
Since the time required to end the timer interrupt process is limited, the configuration is such that two or more processes for calculating the base value, the role ratio, and the consecutive role ratio are not executed in one timer interrupt process. Note that the base value, the role ratio, and the consecutive role ratio are calculated when the following conditions are met.

ベース値を算定するのは、以下の「ア」または「イ」を満たした場合である。
ア 区間内の総アウト数が299(初回のみ)又は60000個に達した場合
イ 「現在のベース値」の表示開始タイミング
The base value will be calculated when either "a" or "b" below is met.
When the total number of outs in the section reaches 299 (first time only) or 60,000, the timing for starting display of the "current base value"

役物比率を算定するのは、上記の「ア」及び「イ」を満たさず、かつ、以下の「ウ」~「オ」を満たした場合である。
ウ 前回のタイマ割込みでベース値を算定した場合
エ 「未定の賞球」を「連続役物賞球カウンタ」に加算した場合
オ 今回のタイマ割込みで賞球が発生した場合
The role ratio will be calculated when the above "A" and "B" are not met, and the following "C" to "E" are met.
C When the base value was calculated in the previous timer interrupt D When the "undetermined prize ball" was added to the "continuous prize ball counter" E When a prize ball was generated in the current timer interrupt

連続役物比率を算定するのは、上記の「ア」~「オ」を満たさず、かつ、以下の「カ」を満たした場合である。
カ 前回のタイマ割込みで役物比率を算定した場合
The continuous feature ratio is calculated when the above conditions "A" to "E" are not met and the following condition "F" is met.
F. When the ratio of the special feature was calculated at the previous timer interruption

〔性能モニタ表示処理〕
図44から図46は、性能表示モニタ表示処理の手順例を示すフローチャートである。性能モニタ表示処理は、タイマ割込み処理の中で呼び出し実行されるモジュール(図13のステップS319)である。本実施形態の第5の技術的特徴となる構成は、性能モニタ表示処理の中に組み込まれているので、以下、性能モニタ表示処理について説明する。性能モニタ表示処理は、主制御基板30(主制御CPU31)が実行する。
[Performance monitor display process]
Figures 44 to 46 are flowcharts showing an example of the procedure of the performance monitor display process. The performance monitor display process is a module (step S319 in Figure 13) that is called and executed during timer interrupt processing. The configuration that is the fifth technical feature of this embodiment is incorporated into the performance monitor display process, so the performance monitor display process will be described below. The performance monitor display process is executed by the main control board 30 (main control CPU 31).

ステップS900:主制御基板30は、遊技可能状態か否かを確認する。その結果、遊技許可状態であることが確認できない場合(No)、主制御基板30は、外部結合子(2)に移行してステップS917(図45)を実行する。一方、遊技許可状態であることが確認できた場合(Yes)、主制御基板30は、ステップS901を実行する。
ステップS901:主制御基板30は、今回アウト数の算定処理を実行する。
ステップS902:主制御基板30は、役物作動確認処理を実行する。
ステップS903:主制御基板30は、今回賞球数の算定処理を実行する。
ステップS904:主制御基板30は、総賞球カウンタ更新処理を実行する。
ステップS905:主制御基板30は、役物賞球カウンタ更新処理を実行する。
ステップS906:主制御基板30は、未定賞球カウンタ更新処理を実行する。
ステップS907:主制御基板30は、大当り中又は小当り中であるか否かを確認する。その結果、大当り中又は小当り中であることを確認した場合(Yes)、主制御基板30は、ステップS908を実行する。一方、大当り中又は小当り中であることを確認できない場合(No)、主制御基板30は、ステップS911を実行する。
Step S900: The main control board 30 checks whether or not the game is allowed to be played. If the game is not allowed to be played (No), the main control board 30 goes to the external connector (2) and executes step S917 (FIG. 45). On the other hand, if the game is allowed to be played (Yes), the main control board 30 executes step S901.
Step S901: The main control board 30 executes the process of calculating the current number of outs.
Step S902: The main control board 30 executes a process for confirming the operation of the reels.
Step S903: The main control board 30 executes the process of calculating the number of prize balls this time.
Step S904: The main control board 30 executes the total prize ball counter update process.
Step S905: The main control board 30 executes a bonus prize ball counter update process.
Step S906: The main control board 30 executes the undetermined prize ball counter update process.
Step S907: The main control board 30 checks whether or not a big win or a small win is occurring. As a result, if it is confirmed that a big win or a small win is occurring (Yes), the main control board 30 executes step S908. On the other hand, if it is not confirmed that a big win or a small win is occurring (No), the main control board 30 executes step S911.

ステップS908:主制御基板30は、大当り中か否かを確認する。その結果、大当り中であることを確認した場合(Yes)、主制御基板30は、ステップS909を実行する。一方、大当り中であることを確認できない場合(No)、主制御基板30は、外部結合子(1)に移行してステップS912(図45)を実行する。 Step S908: The main control board 30 checks whether or not a jackpot is occurring. As a result, if it is confirmed that a jackpot is occurring (Yes), the main control board 30 executes step S909. On the other hand, if it is not confirmed that a jackpot is occurring (No), the main control board 30 moves to the external connector (1) and executes step S912 (Figure 45).

ステップS909:主制御基板30は、算定管理バッファに「次回役物比率算定指定値」をセーブする。
ステップS910:主制御基板30は、連続役物賞球カウンタに未定賞球カウンタを加算する。
ステップS911:主制御基板30は、未定賞球カウンタをクリアする。
Step S909: The main control board 30 saves the "next feature ratio calculation designated value" in the calculation management buffer.
Step S910: The main control board 30 adds the undetermined prize ball counter to the continuous prize ball counter.
Step S911: The main control board 30 clears the undetermined prize ball counter.

〔図45:結合子(1)以降〕
ステップS912:主制御基板30は、通常遊技時であるか否かを確認する。その結果、通常遊技時であることを確認した場合(Yes)、主制御基板30は、ステップS913を実行する。一方、通常遊技時であることを確認できない場合(No)、主制御基板30は、ステップS915を実行する。
[Figure 45: Connector (1) and onwards]
Step S912: The main control board 30 checks whether or not it is during normal play. As a result, if it is confirmed that it is during normal play (Yes), the main control board 30 executes step S913. On the other hand, if it is not confirmed that it is during normal play (No), the main control board 30 executes step S915.

ステップS913:主制御基板30は、通常賞球カウンタ更新処理を実行する。
ステップS914:主制御基板30は、通常アウトカウンタ更新処理を実行する。
ステップS915:主制御基板30は、総アウトカウンタ更新処理を実行する。
ステップS916:主制御基板30は、総アウトカウンタが比較値以上であるか否かを確認する。比較値は、299個(初回のみ)又は60000個である。その結果、総アウトカウンタが比較値以上であることを確認した場合(Yes)、主制御基板30は、ステップS919を実行する。一方、総アウトカウンタが比較値以上であることを確認できない場合(No)、主制御基板30は、ステップS917を実行する。
Step S913: The main control board 30 executes the normal prize ball counter update process.
Step S914: The main control board 30 executes normal out counter update processing.
Step S915: The main control board 30 executes the total out counter update process.
Step S916: The main control board 30 checks whether the total out counter is equal to or greater than the comparison value. The comparison value is 299 (first time only) or 60,000. As a result, if it is confirmed that the total out counter is equal to or greater than the comparison value (Yes), the main control board 30 executes step S919. On the other hand, if it is not confirmed that the total out counter is equal to or greater than the comparison value (No), the main control board 30 executes step S917.

ステップS917:主制御基板30は、性能表示用タイマ更新処理を実行する。
ステップS918:主制御基板30は、ベース値(現在)の表示開始タイミングか否かを確認する。なお、管理遊技機100の性能表示モニタ37には、「現在のベース値」、「前回区間のベース値」、「前々回区間のベース値」及び「3回前区間のベース値」を約5秒ごとに切り替えて表示する。このとき、「3回目区間のベース値」から「現在のベース値」に表示を切り替えるタイミングが表示開始タイミングとなるので、その確認を行う。その結果、現在のベース値の表示開始タイミングであることを確認した場合(Yes)、主制御基板30は、ステップS919を実行する。一方、表示開始タイミングであることを確認できない場合(No)、主制御基板30は、外部結合子(3)に移行してステップS922(図46)を実行する。
Step S917: The main control board 30 executes a performance display timer update process.
Step S918: The main control board 30 checks whether it is the display start timing of the base value (current). The performance display monitor 37 of the managed gaming machine 100 switches between the display of the "current base value", the "base value of the previous section", the "base value of the section before last", and the "base value of the section three times before" approximately every five seconds. At this time, the timing at which the display is switched from the "base value of the third section" to the "current base value" is the display start timing, so this is checked. As a result, if it is confirmed that it is the display start timing of the current base value (Yes), the main control board 30 executes step S919. On the other hand, if it is not confirmed that it is the display start timing (No), the main control board 30 moves to the external connector (3) and executes step S922 (FIG. 46).

ステップS919:主制御基板30は、ベース値の算定処理を実行する。
ステップS920:主制御基板30は、ベース値の更新処理を実行する。
ステップS921:主制御基板30は、算定管理バッファに「次回役物比率算定指定値」をセーブする。
Step S919: The main control board 30 executes a base value calculation process.
Step S920: The main control board 30 executes a process of updating the base value.
Step S921: The main control board 30 saves the "next feature ratio calculation designated value" in the calculation management buffer.

〔図46:外部結合子(3)以降〕
ステップS922:主制御基板30は、今回賞球数が0以外であるか否かを確認する。その結果、今回賞球数が0以外であること確認した場合(Yes)、主制御基板30は、ステップS926を実行する。一方、今回賞球数が0以外であることを確認できない場合(No)、主制御基板30は、ステップS923を実行する。
[Figure 46: External connector (3) and onwards]
Step S922: The main control board 30 checks whether the current number of prize balls is other than 0. As a result, if it is confirmed that the current number of prize balls is other than 0 (Yes), the main control board 30 executes step S926. On the other hand, if it is not confirmed that the current number of prize balls is other than 0 (No), the main control board 30 executes step S923.

ステップS923:主制御基板30は、算定管理バッファをロードする。
ステップS924:主制御基板30は、ロードした算定管理バッファが「次回役物比率算定指定値」であるか否かを確認する。その結果、「次回役物比率算定指定値」であることを確認した場合(Yes)、主制御基板30は、ステップS926を実行する。一方、「次回役物比率算定指定値」であることを確認できない場合(No)、主制御基板30は、ステップS925を実行する。
Step S923: The main control board 30 loads the calculation management buffer.
Step S924: The main control board 30 checks whether the loaded calculation management buffer is the "next role ratio calculation designated value". As a result, if it is confirmed that it is the "next role ratio calculation designated value" (Yes), the main control board 30 executes step S926. On the other hand, if it is not confirmed that it is the "next role ratio calculation designated value" (No), the main control board 30 executes step S925.

ステップS925:主制御基板30は、ロードした算定管理バッファが「次回連続役物比率算定指定値」であるか否かを確認する。その結果、「次回連続役物比率算定指定値」であることを確認した場合(Yes)、主制御基板30は、ステップS928を実行する。一方、「次回連続役物比率算定指定値」であることを確認できない場合(No)、主制御基板30は、ステップS930を実行する。 Step S925: The main control board 30 checks whether the loaded calculation management buffer is the "next consecutive feature ratio calculation designated value". As a result, if it is confirmed that it is the "next consecutive feature ratio calculation designated value" (Yes), the main control board 30 executes step S928. On the other hand, if it is not confirmed that it is the "next consecutive feature ratio calculation designated value" (No), the main control board 30 executes step S930.

ステップS926:主制御基板30は、役物比率算定処理を実行する。
ステップS927:主制御基板30は、算定管理バッファに「次回連続役物比率算定指定値」をセーブする。
ステップS928:主制御基板30は、連続役物比率算定処理を実行する。
ステップS929:主制御基板30は、算定管理バッファをクリアする。
ステップS930:主制御基板30は、識別セグデータ設定処理を実行する。
ステップS931:主制御基板30は、比率セグデータ設定処理を実行する。
以上の手順を終了すると、主制御基板30は呼び出し元に戻る。
Step S926: The main control board 30 executes a role ratio calculation process.
Step S927: The main control board 30 saves the "next consecutive feature ratio calculation designated value" in the calculation management buffer.
Step S928: The main control board 30 executes a continuous feature ratio calculation process.
Step S929: The main control board 30 clears the calculation management buffer.
Step S930: The main control board 30 executes an identification segment data setting process.
Step S931: The main control board 30 executes ratio segment data setting processing.
When the above procedure is completed, the main control board 30 returns to the caller.

〔第5の技術的特徴のまとめ〕
以上のように、性能表示モニタ表示処理において、性能値としてベース値の算定処理(ステップS919)、役物比率算定処理(ステップS926)及び連続役物比率算定処理(ステップS928)があるが、これらの処理は、1回あたりのタイマ割込み処理の中では2つ以上が実行されない。
[Summary of the fifth technical feature]
As described above, in the performance display monitor display process, there are a base value calculation process (step S919) for performance values, a feature ratio calculation process (step S926), and a continuous feature ratio calculation process (step S928), but no more than two of these processes are executed in one timer interrupt process.

より詳細には、ベース値を算定する必要があるのは、「区間内の総アウト数が299個(初回のみ)又は60000個に達した場合」、及び「現在のベース値」の表示開始タイミングである。また、役物比率を算定する必要があるのは、「賞球が発生した場合」であり、連続役物比率を算定する必要があるのは、「賞球が発生した場合」及び「未定の賞球を連続役物比率対象の賞球に加算した場合」である。 In more detail, the base value needs to be calculated when the total number of outs in the section reaches 299 (first time only) or 60,000, and when the display of the current base value starts. The feature ratio needs to be calculated when a prize ball occurs, and the consecutive feature ratio needs to be calculated when a prize ball occurs and when an undetermined prize ball is added to the prize balls subject to the consecutive feature ratio.

しかし、本実施形態の性能表示モニタ表示処理においては、ベース値、役物比率及び連続役物比率について、同時に複数の算定が必要となる(条件を満たす)場合があったとしても、「ベース値>役物比率>連続役物比率」の優先度を設定している。このため、2つ以上の算定が必要となったとしても、優先度の順位に従って、最も優先度の高い1つのみを算定することとしている。このため、算定が必要となったものの残りは、次回以降のタイマ割込み処理の中で算定することになる。 However, in the performance display monitor display process of this embodiment, even if there are cases where multiple calculations are required simultaneously (conditions are met) for the base value, feature ratio, and continuous feature ratio, the priority is set as "base value > feature ratio > continuous feature ratio". Therefore, even if two or more calculations are required, only the one with the highest priority will be calculated according to the priority order. Therefore, the remaining calculations that require calculation will be calculated during the next or subsequent timer interrupt processing.

以下、本実施形態の性能表示モニタ表示処理のうち、第5の技術的特徴に関係する部分のプログラムについて説明する。 Below, we will explain the program that is related to the fifth technical feature of the performance display monitor display process of this embodiment.

〔未定賞球カウンタ加算処理〕
図47は、未定賞球カウンタ加算処理(図44のステップS906)のプログラムを示す図である。本実施形態では、未定賞球カウンタ(R_ERW_MTS)に今回連続役物賞球数(R_ERW_PRN)を加算することとしている。「今回連続役物賞球数」は、今回のタイマ割込み処理の中で、(連続役物作動時の)大入賞口入賞により獲得した賞球数の合計である。
[Undetermined prize ball counter addition process]
Figure 47 is a diagram showing the program of the undetermined prize ball counter addition process (step S906 in Figure 44). In this embodiment, the current consecutive prize ball count (R_ERW_PRN) is added to the undetermined prize ball counter (R_ERW_MTS). The "current consecutive prize ball count" is the total number of prize balls acquired by winning the large prize slot (when the consecutive prize ball is activated) during the current timer interrupt process.

未定賞球カウンタ加算処理のプログラムは、以下の通りである。なお、図47のプログラムコード中、各行に付記している括弧書きの番号は、説明の便宜のために付している。 The program for the undetermined prize ball counter increment process is as follows. Note that the numbers in parentheses attached to each line in the program code in Figure 47 are added for ease of explanation.

「E_SHYMT_30:」は、未定賞球カウンタ加算処理の開始を示すラベルである。
(中略)
"E_SHYMT_30:" is a label indicating the start of the undetermined prize ball counter addition process.
(Omitted)

〔未定賞球カウンタ更新処理〕
〔1〕「LDQ A,(LOW R_ERW_PRN)」は、今回連続役物賞球数をロードする命令である。ここでは、今回連続役物賞球数をロードする。
〔2〕「LDQ HL,(LOW R_ERW_MTS+0)」は、未定賞球カウンタ+0をロードする命令である。ここでは、未定賞球カウンタの下位2バイトをロードする。本実施形態の管理遊技機100は、いわゆる1種2種の遊技を混合した仕様であることから、大入賞口への入賞で得られる賞球は、小当り中であることもあり、賞球数を連続役物比率算定の数に入れるか否かは大当りとなるまで確定しない。そこで本実施形態では、大当り中か否かを問わず、大入賞口への入賞による賞球数は、必ず一度未定の賞球に加算することとしている。
〔3〕「ADDWB HL,A」は、HLレジスタにAレジスタを加算する命令である。ここでは、未定賞球カウンタと今回連続役物賞球数の和を算定する。
〔4〕「LDQ (LOW R_ERW_MTS+0),HL」は、未定賞球カウンタ+0にセーブする命令である。ここでは、算定結果を今回連続役物賞球数の下位2バイトにセーブする。なお、〔3〕においてオーバーフローが発生した場合、キャリーフラグがセットされ、発生していない場合はリセットされている。
〔5〕「LDQ A,(LOW R_ERW_MTS+2)」は、未定賞球カウンタ+2をロードする命令である。ここでは、未定賞球カウンタの上位1バイトをロードする。
〔6〕「ADC A,0」は、未定賞球カウンタの3バイト目にキャリーフラグを加算する命令である。ここでは、「未定賞球カウンタの上位1バイト+0+キャリーフラグ」の和を算定する。すなわち、キャリーフラグがセットであれば、未定賞球カウンタの上位1バイトに1を加算することになる。
〔7〕「LDQ (LOW R_ERW_MTS+2),A」は、未定賞球カウンタ+2にセーブする命令である。ここでは、〔6〕で算定した結果を新たな未定賞球カウンタの上位1バイトとしてセーブする。
[Undetermined prize ball counter update process]
[1] "LDQ A, (LOW R_ERW_PRN)" is a command to load the number of consecutive prize balls this time. Here, the number of consecutive prize balls this time is loaded.
[2] "LDQ HL, (LOW R_ERW_MTS+0)" is a command to load the undetermined prize ball counter +0. Here, the lower 2 bytes of the undetermined prize ball counter are loaded. Since the managed gaming machine 100 of this embodiment is a specification that combines so-called one-type and two-type games, the prize balls obtained by winning into the large prize winning hole may be during a small win, and whether or not the number of prize balls is included in the number of consecutive role ratio calculations is not determined until a big win occurs. Therefore, in this embodiment, regardless of whether or not a big win occurs, the number of prize balls obtained by winning into the large prize winning hole is always added to the undetermined prize balls once.
[3] "ADDWB HL, A" is a command to add the A register to the HL register. Here, the sum of the undetermined prize ball counter and the number of consecutive prize balls this time is calculated.
[4] "LDQ (LOW R_ERW_MTS+0), HL" is a command to save the undetermined prize ball counter +0. Here, the calculation result is saved in the lower two bytes of the current consecutive prize ball count. If an overflow occurs in [3], the carry flag is set, and if not, it is reset.
[5] "LDQ A, (LOW R_ERW_MTS+2)" is a command to load the undetermined prize ball counter +2. Here, the most significant byte of the undetermined prize ball counter is loaded.
[6] "ADC A,0" is a command to add the carry flag to the third byte of the undetermined prize ball counter. Here, the sum of "the most significant byte of the undetermined prize ball counter + 0 + carry flag" is calculated. In other words, if the carry flag is set, 1 is added to the most significant byte of the undetermined prize ball counter.
[7] "LDQ (LOW R_ERW_MTS+2), A" is a command to save to the undetermined prize ball counter + 2. Here, the result calculated in [6] is saved as the most significant byte of the new undetermined prize ball counter.

〔特別遊技管理フェーズ等の確認〕
本実施形態の性能表示モニタ表示処理では、遊技機の遊技状態及び未定賞球カウンタの値を確認し、連続役物比率対象の賞球への振り替えを行うか否かを決定している。これは、図44のステップS907~ステップS909等で行う内容に相当する。
[Checking special game management phases, etc.]
In the performance display monitor display process of this embodiment, the game state of the gaming machine and the value of the undetermined prize ball counter are confirmed, and it is determined whether or not to transfer to the prize balls subject to the consecutive feature ratio. This corresponds to the contents performed in steps S907 to S909 in FIG.

図48は、特別遊技管理フェーズ等の確認を実行するプログラムを示す図である。以下、同様に説明する。
〔1〕「LD A,(R_TOK_PHS)」は、特別遊技管理フェーズをロードする命令である。
〔2〕「JCP C,A,@SHT_PRE,E_SHYMT_42」は、小当り大入賞口開始ウエイト状態指定値と比較し、キャリーフラグが1であれば分岐する命令である。ここでは、特別遊技管理フェーズの値を確認し、小当りでも大当りでもなければ、「E_SHYMT_42」へ分岐する。
〔3〕「LD A,(R_BIG_FLG)」は、条件装置作動中フラグをロードする命令である。
〔4〕「JCP NZ,A,@TZ__BHT,E_SHYMT_43」は、特別図柄大当り情報と比較し、ゼロフラグが0であれば分岐する命令である。ここでは、条件装置作動中フラグの値を確認し、大当りでなければ「E_SHYMT_43」へ分岐する。
〔5〕「JTQ NZ,(LOW R_ERW_MTS+2),E_SHYMT_41」は、未定賞球カウンタ+2が0以外であれば分岐する命令である。
〔5〕「JTWQ Z,(LOW R_ERW_MTS+0),E_SHYMT_43」は、未定賞球カウンタ+0,+1が0であれば分岐する命令である。
上の2つの〔5〕では、遊技状態が大当り中である場合、未定賞球カウンタの値を確認する。そして、未定賞球カウンタの値が0でない場合は、「E_SHYMT_41」以降の処理を行い、0である場合は「E_SHYMT_43」へ分岐する。
48 is a diagram showing a program for executing confirmation of the special game management phase, etc. The same will be explained below.
[1] "LD A, (R_TOK_PHS)" is a command to load a special game management phase.
[2] "JCP C, A, @SHT_PRE, E_SHYMT_42" is a command to compare with the small win/big win opening wait state designation value and branch if the carry flag is 1. Here, the value of the special game management phase is checked, and if it is neither a small win nor a big win, it branches to "E_SHYMT_42".
[3] "LD A, (R_BIG_FLG)" is an instruction to load the condition unit active flag.
[4] "JCP NZ, A, @TZ___BHT, E_SHYMT_43" is a command to compare with the special symbol jackpot information and branch if the zero flag is 0. Here, the value of the condition device operation flag is checked, and if it is not a jackpot, it branches to "E_SHYMT_43".
[5] "JTQ NZ, (LOW R_ERW_MTS+2), E_SHYMT_41" is an instruction to branch if the undetermined prize ball counter +2 is other than 0.
[5] "JTWQ Z, (LOW R_ERW_MTS+0), E_SHYMT_43" is an instruction to branch if the undetermined prize ball counter +0, +1 is 0.
In the two upper [5], if the game state is a jackpot, the value of the undetermined prize ball counter is checked. If the value of the undetermined prize ball counter is not 0, the process after "E_SHYMT_41" is performed, and if it is 0, the process branches to "E_SHYMT_43".

「E_SHYMT_41:」は、上記〔5〕の分岐先アドレスを示すラベルである。
〔6〕「LDQ (LOW R_ERW_TSK),@EXD_TSK_YKH」は、算定管理バッファに次回役物比率算定指定値をセーブする命令である。ここでは、算定管理バッファに「次回役物比率算定指定値」をセーブする。
なお、ここで「次回連続役物比率算定指定値」ではなく、「次回役物比率算定指定値」をセーブしている理由は、このとき算定管理バッファには既に「次回役物比率算定指定値」が設定されている場合があることを考慮したものである。
"E_SHYMT_41:" is a label indicating the branch destination address of the above [5].
[6] "LDQ (LOW R_ERW_TSK), @EXD_TSK_YKH" is a command to save the next feature ratio calculation designated value in the calculation management buffer. Here, the "next feature ratio calculation designated value" is saved in the calculation management buffer.
The reason why the "next feature ratio calculation designated value" is saved here instead of the "next consecutive feature ratio calculation designated value" is that it is considered that the "next feature ratio calculation designated value" may already be set in the calculation management buffer at this time.

〔連続役物賞球カウンタ等更新処理〕
本実施形態の性能表示モニタ表示処理では、未定賞球カウンタの賞球を連続役物賞球カウンタへ移し替える処理(図44のステップS905,ステップS910,ステップS911等)を行っている。以下、これらを連続役物賞球カウンタ等更新処理として説明する。
[Continuous bonus ball counter update process]
In the performance display monitor display process of this embodiment, the process of transferring the prize balls of the undetermined prize ball counter to the continuous feature prize ball counter (steps S905, S910, S911, etc. in FIG. 44) is performed. Hereinafter, these will be described as the continuous feature prize ball counter update process.

図49は、連続役物賞球カウンタ等更新処理のプログラムを示す図である。同様に説明する。
〔連続役物賞球カウンタ更新処理〕
〔1〕「LDQ HL,(LOW R_ERW_RYS+0)」は、連続役物賞球カウンタ+0をロードする命令である。
〔2〕「LDQ DE,(LOW R_ERW_MTS+0)」は、未定賞球カウンタ+0をロードする命令である。上記〔1〕と〔2〕では、連続役物賞球カウンタ及び未定賞球カウンタの下位2バイトをロードする。
〔3〕「ADD HL,DE」は、連続役物賞球カウンタに未定賞球カウンタを加算する命令である。
〔4〕「LDQ (LOW R_ERW_RYS+0),HL」は、連続役物賞球カウンタ+0にセーブする命令である。上記〔3〕で和を求め、〔4〕で連続役物賞球カウンタの下位2バイトをセーブする。
〔5〕「LDQ A,(LOW R_ERW_RYS+2)」は、連続役物賞球カウンタ+2をロードする命令である。
〔6〕「LDQ HL,LOW R_ERW_MTS+2」は、未定賞球カウンタ+2のアドレスをセットする命令である。上記〔5〕では連続役物賞球カウンタの上位1バイトをロードし、〔6〕では未定賞球カウンタの上位1バイトのアドレスをセットする。
〔7〕「ADC A,(HL)」は、連続役物賞球カウンタの3バイト目に未定賞球カウンタの3バイト目及びキャリーフラグを加算する命令である。
〔8〕「LDQ (LOW R_ERW_RYS+2),A」は、連続役物賞球カウンタ+2にセーブする命令である。上記〔7〕では連続役物賞球カウンタの上位1バイトと、未定賞球カウンタの上位1バイト及びキャリーフラグの和を算定し、〔8〕ではその結果をセーブする。
49 is a diagram showing a program for updating the consecutive bonus ball counter, etc. The same will be explained.
[Continuous feature prize ball counter update process]
[1] "LDQ HL, (LOW R_ERW_RYS+0)" is a command to load the consecutive prize ball counter +0.
[2] "LDQ DE, (LOW R_ERW_MTS+0)" is a command to load the undetermined prize ball counter +0. In the above [1] and [2], the lower 2 bytes of the continuous prize ball counter and the undetermined prize ball counter are loaded.
[3] "ADD HL, DE" is a command to add the undetermined prize ball counter to the continuous prize ball counter.
[4] "LDQ (LOW R_ERW_RYS+0), HL" is a command to save the consecutive prize ball counter +0. The sum is calculated in [3] above, and the lower 2 bytes of the consecutive prize ball counter are saved in [4].
[5] "LDQ A, (LOW R_ERW_RYS+2)" is a command to load the consecutive prize ball counter +2.
[6] "LDQ HL, LOW R_ERW_MTS+2" is a command to set the address of the undetermined prize ball counter +2. In the above [5], the upper byte of the consecutive prize ball counter is loaded, and in [6], the address of the upper byte of the undetermined prize ball counter is set.
[7] "ADC A, (HL)" is a command to add the third byte of the undetermined prize ball counter and the carry flag to the third byte of the continuous prize ball counter.
[8] "LDQ (LOW R_ERW_RYS+2), A" is a command to save to the consecutive prize ball counter +2. In the above [7], the sum of the most significant byte of the consecutive prize ball counter, the most significant byte of the undetermined prize ball counter, and the carry flag is calculated, and in [8], the result is saved.

「E_SHYMT_42:」は、未定賞球カウンタクリア処理の開始を示すラベルである。
〔未定賞球カウンタクリア処理〕
〔9〕「CLRWQ (LOW R_ERW_MTS+0)」は、未定賞球カウンタ+0をクリアする命令である。
〔10〕「CLRQ (LOW R_ERW_MTS+2)」は、未定賞球カウンタ+2をクリアする命令である。上記〔9〕及び〔10〕では未定賞球カウンタのクリアを行う。このクリアは、遊技状態が大当り及び小当りのどちらでもない場合にも行われる。
"E_SHYMT_42:" is a label indicating the start of the undetermined prize ball counter clearing process.
[Undetermined prize ball counter clearing process]
[9] "CLRWQ (LOW R_ERW_MTS+0)" is a command to clear the undetermined prize ball counter +0.
[10] "CLRQ (LOW R_ERW_MTS+2)" is a command to clear the undetermined prize ball counter +2. The above [9] and [10] clear the undetermined prize ball counter. This clearing is also performed when the game state is neither a big win nor a small win.

〔ベース値算定後の算定管理バッファ設定処理〕
本実施形態の性能表示モニタ制御処理では、ベース値の算定を行った場合、算定管理バッファに次回役物比率算定指定値をセーブする処理(図46のステップS926,ステップS927)を行っている。以下、これをベース値算定後の算定管理バッファ設定処理として説明する。
[Calculation management buffer setting process after base value calculation]
In the performance display monitor control process of this embodiment, when the base value is calculated, the process of saving the next feature ratio calculation designated value in the calculation management buffer (steps S926 and S927 in FIG. 46) is performed. Hereinafter, this will be described as the calculation management buffer setting process after the base value is calculated.

図50は、ベース値算定後の算定管理バッファ設定処理のプログラムを示す図である。同様に説明する。
〔算定管理バッファ更新処理1〕
「E_SHYMT_57:」は、算定管理バッファ更新処理1の開始を示すラベルである。
「LDQ (LOW R_ERW_TSK),@EXD_TSK_YKH」は、算定管理バッファに次回役比算定指定値をセーブする命令である。
「JP E_SHYMT_90」は、「E_SHYMT_90」へジャンプする命令である。
50 is a diagram showing a program for the calculation management buffer setting process after the base value is calculated.
[Calculation management buffer update process 1]
“E_SHYMT — 57:” is a label indicating the start of calculation management buffer update process 1 .
"LDQ (LOW R_ERW_TSK), @EXD_TSK_YKH" is a command to save the next winning ratio calculation designated value in the calculation management buffer.
"JP E_SHYMT_90" is a command to jump to "E_SHYMT_90".

〔算定管理バッファに基づく処理の振り分け〕
本実施形態の性能表示モニタ制御処理においてベース値の算定を行わなかった場合、算定管理バッファ(R_ERW_TSK)を確認し、処理の振り分けを行っている(図46のステップS922,ステップSS923,ステップS924,ステップS925,ステップS926等)。具体的には、役物比率の算定を行う場合は、「E_SHYMT_70」へ分岐し、連続役物比率の算定を行う場合は、「E_SHYMT_80」へ分岐する。いずれも行わない場合は、「E_SHYMT_90」へ分岐する。以下、この処理を算定管理バッファに基づく処理の振り分けとして説明する。
[Process allocation based on calculation management buffer]
In the performance display monitor control process of this embodiment, if the base value is not calculated, the calculation management buffer (R_ERW_TSK) is checked and processing is allocated (steps S922, S923, S924, S925, S926, etc. in FIG. 46). Specifically, if the ratio of the reels is calculated, it branches to "E_SHYMT_70", and if the ratio of the continuous reels is calculated, it branches to "E_SHYMT_80". If neither is performed, it branches to "E_SHYMT_90". Below, this process will be described as processing allocation based on the calculation management buffer.

図51は、算定管理バッファに基づく処理の振り分けのプログラムを示す図である。同様に説明する。
「E_SHYMT_60:」は、処理の開始を示すラベルである。
〔ベースを算定しない場合は役物比率算定、連続役物比率算定を行うかを確認する〕
〔1〕「JTQ NZ,(LOW R_ERW_PAY),E_SHYMT_70」は、今回賞球数が0以外であれば分岐する命令である。ここでは、今回賞球数(R_ERW_PAY)が0でない場合にE_SHYMT_70へ分岐する。
〔2〕「LDQ A,(LOW R_ERW_TSK)」は、算定管理バッファをロードする命令である。
〔2〕「JCP Z,A,@EXD_TSK_YKH,E_SHYMT_70」は、次回役物比率算定指定値と比較し、ゼロフラグが1であれば分岐する命令である。
上の2つの〔2〕では、算定管理バッファが次回役比算定指定値(@EXD_TSK_YKH(1))である場合に「E_SHYMT_70」へ分岐する。
〔3〕「CP A,@EXD_TSK_RYH」は、次回連続役物比率算定指定値と比較する命令である。ここでは、算定管理バッファと次回連役算定指定値(@EXD_TSK_RYH(2))を比較する。
〔4〕「JP Z,E_SHYMT_80」は、ゼロフラグが1であれば分岐する命令である。ここでは、上記〔3〕で一致した場合は「E_SHYMT_80」へ分岐する。
「JP E_SHYMT_90」は、「E_SHYMT_90」へ分岐する命令である。上記〔3〕で一致しなかった場合、ここで「E_SHYMT_90」へ分岐する。
51 is a diagram showing a program for allocating processes based on the calculation management buffer.
"E_SHYMT_60:" is a label indicating the start of processing.
[If the base is not calculated, check whether the ratio of the reels and the ratio of consecutive reels are to be calculated.]
[1] "JTQ NZ, (LOW R_ERW_PAY), E_SHYMT_70" is an instruction to branch if the current number of prize balls is other than 0. Here, if the current number of prize balls (R_ERW_PAY) is not 0, branch to E_SHYMT_70.
[2] "LDQ A, (LOW R_ERW_TSK)" is a command to load the computation management buffer.
[2] "JCP Z, A, @EXD_TSK_YKH, E_SHYMT_70" is a command that compares with the next reel ratio calculation designated value and branches if the zero flag is 1.
In the two [2] above, if the calculation management buffer is the next role ratio calculation designated value (@EXD_TSK_YKH(1)), it branches to "E_SHYMT_70".
[3] "CP A, @EXD_TSK_RYH" is a command to compare with the next consecutive role ratio calculation designated value. Here, the calculation management buffer is compared with the next consecutive role calculation designated value (@EXD_TSK_RYH (2)).
[4] "JP Z, E_SHYMT_80" is an instruction to branch if the zero flag is 1. Here, if there is a match in [3] above, branch to "E_SHYMT_80".
"JP E_SHYMT_90" is an instruction to branch to "E_SHYMT_90". If there is no match in the above [3], branch to "E_SHYMT_90" here.

〔役物比率算定後の算定管理バッファ設定処理〕
図52は、役物比率算定後の算定管理バッファ設定処理のプログラムを示す図である。この処理では、役物比率の算定を行った場合、算定管理バッファに次回連続役物比率算定指定値をセーブする。
「E_SHYMT_72:」は、処理の開始を示すラベルである。
「LDQ (LOW R_ERW_YAK),A」は、役物比率バッファにセーブする命令である。
「LDQ (LOW R_ERW_TSK),@EXD_TSK_RYH」は、算定管理バッファに次回連役算定指定値をセーブする命令である。
「JP E_SHYMT_90」は、「E_SHYMT_90」にジャンプする命令である。
[Calculation management buffer setting process after calculating the role ratio]
52 is a diagram showing a program for setting the calculation management buffer after calculating the ratio of the reels. In this process, when the ratio of the reels is calculated, the calculation management buffer saves the next consecutive reels ratio calculation designated value.
"E_SHYMT_72:" is a label indicating the start of processing.
"LDQ (LOW R_ERW_YAK), A" is a command to save to the bonus ratio buffer.
"LDQ (LOW R_ERW_TSK), @EXD_TSK_RYH" is a command to save the next linked calculation designated value in the calculation management buffer.
"JP E_SHYMT_90" is a command to jump to "E_SHYMT_90".

〔連続役物比率算定後の算定管理バッファ設定処理〕
図53は、連続役物比率算定後の算定管理バッファ設定処理のプログラムを示す図である。この処理では、役物比率の算定を行った場合、算定管理バッファをクリアする。
「E_SHYMT_82:」は、処理の開始を示すラベルである。
「LDQ (LOW R_ERW_REN),A」は、連続役物比率バッファにセーブする命令である。
「CLRQ (LOW R_ERW_TSK)」は、算定管理バッファをクリアする命令である。
[Calculation management buffer setting process after calculating the continuous role ratio]
53 is a diagram showing a program of the calculation management buffer setting process after the consecutive feature ratio calculation. In this process, when the feature ratio is calculated, the calculation management buffer is cleared.
"E_SHYMT_82:" is a label indicating the start of processing.
"LDQ (LOW R_ERW_REN), A" is a command to save to the continuous feature ratio buffer.
"CLRQ (LOW R_ERW_TSK)" is a command to clear the computation management buffer.

〔第5の技術的特徴のまとめ〕
以上のように、タイマ割込み処理中における性能値(ベース値、役物比率及び連続役物比率)の算定時間が長期化することを抑え、かつ、算定の遅れも最小限にすることができる。
[Summary of the fifth technical feature]
As described above, it is possible to prevent the calculation time of the performance values (base value, reel ratio, and continuous reel ratio) during timer interrupt processing from becoming long, and also to minimize the delay in calculation.

〔ステート数による検証〕
以上で本実施形態の有用性は明らかとなっているが、以下にステート数による検証を追加する。
[Verification by number of states]
The usefulness of this embodiment has been made clear above, but an additional verification based on the number of states will be performed below.

〔ベース値の算定に必要なステート数〕
図54及び図55は、ベース値の算定部分のプログラムを示す図である。なお、プログラムコード中、命令の左の数値は、当該命令の実行に必要なステート数(クロック数)を示している。また、数値が2種類記載されている場合、左側が分岐を行う場合のステート数で、右側が分岐を行わない場合のステート数である。
[Number of states required to calculate base value]
54 and 55 are diagrams showing the program for calculating the base value. In the program code, the number to the left of an instruction indicates the number of states (number of clocks) required to execute the instruction. When two types of numbers are written, the left one indicates the number of states when branching is performed, and the right one indicates the number of states when branching is not performed.

「E_SHYMT_50:」は、処理の開始を示すラベルである。
〔除数設定レジスタ更新処理〕
1 「XOR A,A」は、Aレジスタに[00H]をセットする命令である。
5 「LDQ BC,(LOW R_ERW_TJS)」は、通常賞球カウンタをロードする命令である。
4 「LDQ HL,(LOW R_ERW_TJO)」は、通常アウトカウンタをロードする命令である。
3/2 「JR TZ,E_SHYMT_54」は、第2ゼロフラグが1であれば「E_SHYMT_5」に分岐する命令である。
5 「OUT (LOW @DIVB32_+0),HL」は、除数設定レジスタの最下位アドレス+0に出力する命令である。
2 「CLR HL」は、HLレジスタに[0000H]をセットする命令である。
5 「OUT (LOW @DIVB32_+2),HL」は:除数設定レジスタの最下位アドレス+2に出力する命令である。
"E_SHYMT_50:" is a label indicating the start of processing.
[Divisor setting register update process]
1. "XOR A, A" is an instruction to set [00H] to the A register.
5 "LDQ BC, (LOW R_ERW_TJS)" is a command to load the normal prize ball counter.
4 "LDQ HL, (LOW R_ERW_TJO)" is an instruction to load the normal out counter.
3/2 "JR TZ, E_SHYMT_54" is an instruction to branch to "E_SHYMT_5" if the second zero flag is 1.
5 “OUT (LOW @DIVB32_+0), HL” is a command to output to the lowest address of the divisor setting register +0.
2. "CLR HL" is an instruction to set [0000H] to the HL register.
5 "OUT (LOW @DIVB32_+2), HL" is a command to output to the lowest address of the divisor setting register +2.

〔被除数設定レジスタ更新処理〕
以下は、通常賞球数の200倍を算定する命令である。
1 「LD A,C」
4 「MUL HL,A,200」
1 「EX DE,HL」
1 「LD A,B」
4 「MUL HL,A,200」
2 「ADDWB HL,D」
1 「LD A,E」
[Dividend setting register update process]
The following is an instruction to calculate 200 times the normal number of winning balls.
1. "LD A, C"
4. "MUL HL, A, 200"
1 "EX DE,HL"
1. "LD A, B"
4. "MUL HL, A, 200"
2. "ADDWB HL,D"
1 "LD A, E"

3 「OUT (LOW @DIVA32_+0),A」は、被除数設定レジスタの最下位アドレス+0に出力する命令である。
5 「OUT (LOW @DIVA32_+1),HL」は、被除数設定レジスタの最下位アドレス+1に出力する命令である。
4 「OUT (LOW @DIVA32_+3),0」は、被除数設定レジスタの最下位アドレス+3に0を出力する命令である。
3 “OUT (LOW @DIVA32_+0), A” is a command to output to the lowest address of the dividend setting register+0.
5 "OUT (LOW @DIVA32_+1), HL" is a command to output to the lowest address of the dividend setting register +1.
4 “OUT (LOW @DIVA32_+3), 0” is a command to output 0 to the lowest address of the dividend setting register +3.

〔ベース値除算待機処理〕
2 「LD B,2」は、Bレジスタに2をセットする命令である。
「E_SHYMT_51:」は、処理の開始を示すラベルである。
3/2 「DJNZ E_SHYMT_51」は、ループ継続であれば「E_SHYMT_51:」に分岐する命令である。
〔除算結果確認処理〕
2 「LD A,100」は、Aレジスタに100をセットする命令である。
5 「IN HL,(LOW @DIV32__+2)」は、除算結果レジスタの最下位アドレス+2を入力する命令である。
3/2 「JR NTZ,E_SHYMT_54」は、第2ゼロフラグが0であれば「E_SHYMT_54」に分岐する命令である。
5 「IN HL,(LOW @DIV32__)」は、除算結果レジスタの最下位アドレスを入力する命令である。
4 「CP HL,100*2」は、除算結果の1,2バイト目を確認する命令である。
3/2 「JR NC,E_SHYMT_54」は、キャリーフラグが0であれば「E_SHYMT_54」に分岐する命令である。
1 「LD A,L」は、除算結果をセットする命令である。
2 「SRL A」は、1ビット右シフトして値を算出する命令である。
2 「ADC A,0」は、キャリーフラグを加算してベース算定値を算定する命令である。
[Base value division waiting process]
2. "LD B,2" is an instruction to set 2 in the B register.
"E_SHYMT_51:" is a label indicating the start of processing.
3/2 "DJNZ E_SHYMT_51" is an instruction to branch to "E_SHYMT_51:" if the loop continues.
[Division result confirmation process]
2. "LD A,100" is an instruction to set 100 in the A register.
5 “IN HL, (LOW @DIV32__+2)” is a command to input the lowest address of the division result register +2.
3/2 "JR NTZ, E_SHYMT_54" is an instruction to branch to "E_SHYMT_54" if the second zero flag is 0.
5 "IN HL, (LOW @DIV32__)" is a command to input the lowest address of the division result register.
4. "CP HL, 100*2" is a command to check the first and second bytes of the division result.
3/2 "JR NC, E_SHYMT_54" is an instruction to branch to "E_SHYMT_54" if the carry flag is 0.
1. "LD A,L" is an instruction to set the result of a division.
2. "SRL A" is an instruction to calculate a value by shifting one bit to the right.
2. "ADC A,0" is an instruction that adds the carry flag to calculate the base calculation value.

「E_SHYMT_54:」は、処理の開始を示すラベルである。
〔ベース算定値更新処理〕
2 「LDQ HL,LOW R_ERW_BAS」は、ベース算定値のアドレスをセットする命令である。
2 「LD (HL),A」は、対象アドレスの内容にセーブする命令である。
"E_SHYMT_54:" is a label indicating the start of processing.
[Base calculation value update process]
2. "LDQ HL, LOW R_ERW_BAS" is a command to set the address of the base calculation value.
2 "LD (HL), A" is an instruction to save the contents of the target address.

以上より、除数設定レジスタ更新処理では、1+5+4+2+5+2+5=24ステートを必要とする(通常アウトカウンタが0でなく、「JR TZ,E_SHYMT_54」で分岐を行わない場合)。 As a result, the divisor setting register update process requires 1+5+4+2+5+2+5=24 states (assuming the out counter is not normally 0 and no branch is taken at "JRTZ, E_SHYMT_54").

被除数設定レジスタ更新処理では、1+4+1+1+4+2+1+3+5+4=26ステートを必要とする。 The dividend setting register update process requires 1+4+1+1+4+2+1+3+5+4=26 states.

ベース値除算待機処理では、2+3+2=7ステートを必要とする。 The base value division wait process requires 2 + 3 + 2 = 7 states.

除算結果確認処理では、2+5+2+5+4+2+1+2+2=25ステートを必要とする(ベース算定結果が0~99.5%であり、2か所のJR命令では分岐を行わないこととする)。
ベース算定値更新処理では、2+2=4ステートを必要とする。
よって、ベース値を算定し、結果を保存するまでのステート数の合計は、24+26+7+25+4=86ステートである。
The division result confirmation process requires 2+5+2+5+4+2+1+2+2=25 states (the base calculation result is 0 to 99.5%, and no branching is performed at the two JR instructions).
The base estimate update process requires 2+2=4 states.
Therefore, the total number of states required to calculate the base value and store the result is 24+26+7+25+4=86 states.

〔役物比率の算定に必要なステート数〕
役物比率の算定はベース値同様に行うが、結果を保存するまでのステート数の合計は81ステートである。
[Number of states required to calculate the ratio of roles]
The ratio of the reels is calculated in the same manner as the base value, but the total number of states required to save the result is 81.

〔連続役物比率の算定に必要なステート数〕
連続役物比率の算定はベース値同様に行うが、結果を保存するまでのステート数の合計は81ステートである。
[Number of states required to calculate the ratio of consecutive features]
The successive feature ratio is calculated in the same manner as the base value, but the total number of states required to save the result is 81 states.

〔処理時間による検証〕
図56は、各種性能値の算定に必要となる時間を示す図である。
主制御CPU31の内部システムクロックが16MHzであるとする。この場合、1ステート=1600万分の1秒となるため、ベース値等の算定に必要な時間は以下の通りとなる。
ベース値算定は、86ステートで5.375μsの処理時間である。
役物比率算定は、81ステートで5.0625μsの処理時間である。
連続役物比率算定は、81ステートで5.0625μsの処理時間である。
したがって、ベース値、役物比率及び連続役物比率をすべて算定した場合、248ステート(15.5μs)が必要となるが、本実施形態のように1回のタイマ割込み処理中で1つしか算定しない場合、最大86ステート(5.375μs)となる。
[Verification based on processing time]
FIG. 56 is a diagram showing the time required to calculate various performance values.
Assume that the internal system clock of the main control CPU 31 is 16 MHz. In this case, one state = 1/16 millionth of a second, so the time required to calculate the base value, etc. is as follows:
The base value calculation requires a processing time of 5.375 μs for 86 states.
The reel ratio calculation has a processing time of 5.0625 μs for 81 states.
The calculation of the ratio of consecutive features requires a processing time of 5.0625 μs for 81 states.
Therefore, if the base value, feature ratio, and continuous feature ratio are all calculated, 248 states (15.5 μs) are required, but if only one is calculated during one timer interrupt processing as in this embodiment, the maximum number of states is 86 (5.375 μs).

〔別案〕
次に、算出処理時間を抑えるための別案について説明する。
別案では、ベース値算定フラグ、役物比率算定フラグ及び連続役物比率算定フラグを用意し、算定が必要となった場合にフラグをセット、算定を行った場合にフラグをリセットする。複数のフラグがセットされている場合、最も優先度の高いもの1つのみを算定する。この別案においても、本実施形態と同様の有用性が得られるが、若干プログラムが複雑になる。以下、より詳細に説明する。
[Alternative plan]
Next, another method for reducing the calculation processing time will be described.
In another proposal, a base value calculation flag, a role ratio calculation flag, and a continuous role ratio calculation flag are prepared, and the flags are set when calculation is necessary, and reset when calculation is performed. If multiple flags are set, only the one with the highest priority is calculated. This proposal also provides the same usefulness as the present embodiment, but the program becomes slightly more complicated. A more detailed explanation will be given below.

〔各種フラグ〕
別案においては、以下のフラグを使用する。
以下のフラグはRWM初期化時にリセットし、電源投入時(電源復帰時)は現状維持とする。
・ ベース値算定フラグ
・ 役物比率算定フラグ
・ 連続役物比率算定フラグ
これらのフラグはそれぞれが別のRWMでもよいし、同一RWM内の別bitでも良い。
[Various flags]
Alternatively, the following flags are used:
The following flags are reset when the RWM is initialized, and the current status is maintained when the power is turned on (when the power is restored).
Base value calculation flag Reel ratio calculation flag Continuous reel ratio calculation flag These flags may be separate RWMs or separate bits in the same RWM.

〔フラグセットの契機〕
以下の条件を満たした場合にそれぞれのフラグをセットする。なお、すでに当該フラグがセットされていた場合、セット状態を継続する。
「ベース値算定フラグ」
以下の場合にベース値算定フラグをセットする。
・ ベース値の表示内容切り替えによって、現在ベース値の表示を開始する場合
・ 総アウト数があらかじめ定められた値(60000個、初回のみ299個)に達した場合
「役物比率算定フラグ」
以下の場合に役物比率算定フラグをセットする。
・ 賞球が発生した場合
「連続役物比率算定フラグ」
以下の場合に連続役物比率算定フラグをセットする。
・ 賞球が発生した場合
・ 未定の賞球を連続役物比率対象の賞球に加算した場合
[Flag setting trigger]
When the following conditions are met, the corresponding flag is set. If the flag is already set, it will remain set.
"Base value calculation flag"
The base value calculation flag is set in the following cases:
・ When the display of the current base value starts due to the change in the display content of the base value ・ When the total number of outs reaches a predetermined value (60,000, 299 only for the first time) "Ratio calculation flag for the special feature"
The reel ratio calculation flag is set in the following cases.
・ When a winning ball occurs, the "Continuous feature ratio calculation flag"
The consecutive feature ratio calculation flag is set in the following cases.
When a winning ball occurs When an undetermined winning ball is added to the winning balls subject to the consecutive prize ratio

〔実行する処理〕
図57は、別案で算定フラグと実行する処理の対応関係を示す図である。
ベース値算定フラグ等の状態により、タイマ割込み処理内で実行する処理は、図57に示すように決定する。なお、算定を行った場合、対応するフラグはリセットする。
[Process to be performed]
FIG. 57 is a diagram showing the correspondence between the calculation flag and the process to be executed in another example.
Depending on the state of the base value calculation flag, etc., the process to be executed within the timer interrupt process is determined as shown in Fig. 57. When a calculation is performed, the corresponding flag is reset.

本発明は上述した一実施形態に制約されることなく、種々に変形して実施することができる。例えば、上述した実施形態は、以下の変形が可能である。
(1)管理遊技機100の場合で説明したが、管理遊技機100の構成を有しない既存のパチンコ機にも適用可能である。
(2)上述したプログラム及びフローチャートはあくまで例示であり、本発明はこれらに限定されるものではない。
The present invention is not limited to the above-described embodiment, and can be practiced in various modified forms. For example, the above-described embodiment can be modified as follows.
(1) Although the above has been explained in the case of the managed gaming machine 100, the present invention can also be applied to existing pachinko machines that do not have the configuration of the managed gaming machine 100.
(2) The above-described programs and flowcharts are merely examples, and the present invention is not limited to them.

(3)本発明は、スロットマシンにも適用可能である。すなわち、遊技の実行と遊技の停止を制御する主制御基板と、メダルの払出しを制御するメダル数制御基板とを備えるスロットマシンにおいても、本発明は適用可能である。
この場合、主制御基板が、遊技で消費したメダル枚数情報と、遊技で獲得したメダル枚数情報とをメダル数制御基板に送信し、メダル数制御基板が差枚数を算出する。そして、メダル数制御基板が算出した差枚数情報を主制御基板に送信し、主制御基板は受信した差枚数情報に基づいて遊技停止状態を設定してもよい。
また、主制御基板が、遊技で獲得したメダル枚数情報をメダル数制御基板に送信し、メダル数制御基板が、遊技で獲得したメダル枚数情報と遊技で消費したメダル枚数情報とに基づいて差枚数を算出する。そして、メダル数制御基板が算出した差枚数情報を主制御基板に送信し、主制御基板は受信した差枚数情報に基づいて遊技停止状態を設定してもよい。
(3) The present invention can also be applied to slot machines. That is, the present invention can also be applied to slot machines that include a main control board that controls the execution and stopping of games, and a medal count control board that controls the payout of medals.
In this case, the main control board transmits information on the number of medals consumed in a game and the number of medals won in a game to the medal count control board, which calculates the difference in the number of medals.The medal count control board then transmits the calculated difference in the number of medals information to the main control board, and the main control board may set a game stop state based on the received difference in the number of medals information.
The main control board may transmit information on the number of medals won in a game to the medal count control board, and the medal count control board may calculate the difference in number based on the information on the number of medals won in a game and the information on the number of medals consumed in a game. The medal count control board may then transmit the calculated difference in number information to the main control board, and the main control board may set a game stop state based on the received difference in number information.

10 管理遊技機遊技盤
20 管理遊技機枠
30 主制御基板
32 入賞口スイッチ
33 アウトスイッチ
34 盤面磁気検出第1センサ
35 盤面磁気検出第2センサ
36 電波検出センサ
37 性能表示モニタ
38 扉開放スイッチ
40 演出制御基板
50 枠制御基板
100 管理遊技機
REFERENCE SIGNS LIST 10 Managed gaming machine game board 20 Managed gaming machine frame 30 Main control board 32 Winning port switch 33 Out switch 34 First board magnetic detection sensor 35 Second board magnetic detection sensor 36 Radio wave detection sensor 37 Performance display monitor 38 Door opening switch 40 Performance control board 50 Frame control board 100 Managed gaming machine

Claims (2)

遊技の実行を制御する遊技制御手段と、遊技の演出に関する内容を制御する演出制御手段とを備えた遊技機であって、
前記遊技制御手段は、
電源投入時の初期化処理が完了した後のメインループ処理に移行すると、割込み禁止状態にして少なくとも前記演出制御手段に対するコマンドの送信処理を含む前記メインループ処理内の全ての処理を実行し、終了後に前記メインループ処理の末尾から先頭に戻る期間のみを割込み許可状態とすることを特徴とする遊技機。
A gaming machine including a game control means for controlling the execution of a game and a presentation control means for controlling the content related to the presentation of the game,
The game control means includes:
This gaming machine is characterized in that when it transitions to main loop processing after completing initialization processing at power-on, it puts itself into an interrupt-disabled state and executes all processing within the main loop processing , including at least the processing of sending commands to the presentation control means , and after completion of the processing, puts itself into an interrupt-enabled state only during the period from the end of the main loop processing back to the beginning.
請求項1に記載の遊技機において、
前記遊技制御手段は、
前記メインループ処理の実行中に発生した割込み処理の実行時、前記メインループ処理に関するレジスタの退避及び復帰の処理を非実行とすることを特徴とする遊技機。
2. The gaming machine according to claim 1,
The game control means includes:
A gaming machine characterized in that, when an interrupt process that occurs during execution of the main loop process is executed, the process of saving and restoring registers related to the main loop process is not executed.
JP2022032870A 2022-03-03 2022-03-03 Gaming Machines Active JP7499799B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022032870A JP7499799B2 (en) 2022-03-03 2022-03-03 Gaming Machines

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022032870A JP7499799B2 (en) 2022-03-03 2022-03-03 Gaming Machines

Publications (2)

Publication Number Publication Date
JP2023128495A JP2023128495A (en) 2023-09-14
JP7499799B2 true JP7499799B2 (en) 2024-06-14

Family

ID=87972966

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022032870A Active JP7499799B2 (en) 2022-03-03 2022-03-03 Gaming Machines

Country Status (1)

Country Link
JP (1) JP7499799B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7807067B2 (en) * 2022-11-04 2026-01-27 株式会社ユニバーサルエンターテインメント gaming machines
JP7807068B2 (en) * 2022-11-04 2026-01-27 株式会社ユニバーサルエンターテインメント gaming machines
JP7807069B2 (en) * 2022-11-04 2026-01-27 株式会社ユニバーサルエンターテインメント gaming machines
JP2025092616A (en) * 2025-03-28 2025-06-19 株式会社サンセイアールアンドディ Gaming Machines

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015163097A (en) 2014-02-28 2015-09-10 サミー株式会社 Pachinko game machine
JP2018094097A (en) 2016-12-14 2018-06-21 株式会社ソフイア Game machine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015163097A (en) 2014-02-28 2015-09-10 サミー株式会社 Pachinko game machine
JP2018094097A (en) 2016-12-14 2018-06-21 株式会社ソフイア Game machine

Also Published As

Publication number Publication date
JP2023128495A (en) 2023-09-14

Similar Documents

Publication Publication Date Title
JP7499799B2 (en) Gaming Machines
JP7778011B2 (en) gaming machines
JP2023111365A (en) game machine
JP6349528B1 (en) Game machine
JP6554398B2 (en) Slot machine
JP6554402B2 (en) Slot machine
JP2023111342A (en) game machine
JP7412031B2 (en) gaming machine
JP6371956B1 (en) Game machine
JP6793626B2 (en) Game machine
JP2017000490A (en) Game machine
JP7510451B2 (en) Gaming Machines
JP2018175502A (en) Game machine
JP7520064B2 (en) Gaming Machines
JP7520063B2 (en) Gaming Machines
JP2023128499A (en) gaming machine
JP7290395B2 (en) game machine
JP2018046948A (en) Slot machine
JP6554399B2 (en) Slot machine
JP2018046947A (en) Slot machine
JP6554401B2 (en) Slot machine
JP6554400B2 (en) Slot machine
JP7593685B2 (en) Gaming Machines
JP6371955B1 (en) Game machine
JP2019141242A (en) Game machine

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240422

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240604

R150 Certificate of patent or registration of utility model

Ref document number: 7499799

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150