(57)【特許請求の範囲】
【請求項１】
所定の遊技媒体を用いて遊技を行う遊技機であって、
前記遊技の進行の制御を行う主制御部を備え、
前記主制御部が記憶部を備えて、前記記憶部の所定の連続範囲は、前記主制御部が制御を行う際のプログラムの作業領域として設定され、
前記記憶部は、前記作業領域と、前記記憶部の終端アドレスからアドレスが小さくなる方向に設けられるスタック領域と、アドレス上前記作業領域と前記スタック領域との間に設けられた、使用されない領域と、を有し、
前記作業領域が、前記制御を行う際に使用する情報が格納される使用領域と、前記制御を行う際に使用する情報は格納されない未使用領域とを有し、
前記未使用領域が、アドレス上１の前記使用領域と他の前記使用領域との間に設けられた中間未使用領域を含み、
前記主制御部が、前記未使用領域に格納されている情報を読み出すことなく、前記使用領域に格納されている情報の一部または全部に基づいて、検査値を生成する検査値生成手段と、前記作業領域内の各単位領域について前記検査値の生成に使用されるものか否かを判別可能な判別可能情報を記憶した判別情報記憶部と、を備え、
前記検査値生成手段が、前記判別可能情報を参照することにより、前記未使用領域内の各単位領域は前記検査値の生成に使用されるものでないと判別して、前記検査値を生成するように構成され、
前記作業領域は、それぞれ１以上の前記単位領域からなる複数の小領域に区分され、
前記記憶部には、前記各小領域に対して設定された領域名とアドレスとが対応付けられて格納され、
前記判別情報記憶部に、前記判別可能情報として、前記検査値の生成に使用される前記小領域の前記領域名、または、前記検査値の生成に使用されない前記小領域の前記領域名、の少なくとも一方が格納されていることを特徴とする遊技機。
【請求項２】
所定の遊技媒体を用いて遊技を行う遊技機であって、
前記遊技の進行の制御を行う主制御部を備え、
前記主制御部が記憶部を備えて、前記記憶部の所定の連続範囲は、前記主制御部が制御を行う際のプログラムの作業領域として設定され、
前記記憶部は、前記作業領域と、前記記憶部の終端アドレスからアドレスが小さくなる方向に設けられるスタック領域と、アドレス上前記作業領域と前記スタック領域との間に設けられた、使用されない領域と、を有し、
前記作業領域が、前記制御を行う際に使用する情報が格納される使用領域と、前記制御を行う際に使用する情報は格納されない未使用領域とを有し、
前記未使用領域が、アドレス上１の前記使用領域と他の前記使用領域との間に設けられた中間未使用領域を含み、
前記主制御部が、前記未使用領域に格納されている情報を読み出すことなく、前記使用領域に格納されている情報の一部または全部に基づいて、検査値を生成する検査値生成手段と、前記作業領域内の各単位領域について前記検査値の生成に使用されるものか否かを判別可能な判別可能情報を記憶した判別情報記憶部と、を備え、
前記検査値生成手段が、前記判別可能情報を参照することにより、前記未使用領域内の各単位領域は前記検査値の生成に使用されるものでないと判別して、前記検査値を生成するように構成され、
前記作業領域を、前記検査値の生成に使用される１以上の前記単位領域であって複数個が連続する場合には当該複数個の前記単位領域を纏めた加算領域と、前記検査値の生成に使用されない１以上の前記単位領域であって複数個が連続する場合には当該複数個の前記単位領域を纏めた非加算領域とに、前記加算領域同士が隣接せずかつ前記非加算領域同士が隣接しないように、区分した場合における、前記加算領域の範囲を示す情報、または、前記非加算領域の範囲を示す情報、の少なくとも一方が、前記判別可能情報として、前記判別情報記憶部に格納されていることを特徴とする遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主制御基板によって制御されるパチンコ遊技機やスロットマシン等の遊技機に関する。
【背景技術】
【０００２】
従来、パチンコ遊技機やスロットマシン等の遊技機では、主制御基板に設けられたＲＡＭ中の作業領域は、先頭アドレスから空き領域を設けることなく連続して設定されていた。例えば、下記特許公報の図４では符号１１６Ｗが付された部分が、作業領域（ワーク）であるが、この図に示されているように、作業領域は、途中に空き領域を設けることなく、先頭アドレスから連続して設けられていた。また、電源断時にＲＡＭに記憶されている遊技情報のチェックサムを算出して保持しておき、電源投入時に同様に算出したチェックサムと、保持しておいたチェックサムとを照合することにより、不正を検出していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１４２５６５号公報（段落００４６、００６５、図４参照）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、制御の容易化等のために、複数のコマンドをＲＡＭの作業領域中の纏まった領域に設けて順に演出制御基板に渡す制御を行ったり、複数のカウンタをＲＡＭの作業領域中の纏まった領域に設けたりすることが行われている。このように同種の情報を格納する領域が作業領域中に纏めて設けられている場合において、例えば、プログラムのバージョンアップでコマンドを追加する必要が出てきたとき、コマンドが纏められている領域の中に空き領域（未使用領域）を設けておけば、その領域以降のアドレスをずらす必要なく、コマンドを追加することができる。このように、ＲＡＭ中の作業領域の中間部分に使用していない未使用領域を設けておけば、プログラムの変更にも柔軟に対応できる。しかし、そのような作業領域中の未使用領域については不正行為防止の観点から情報の読出しが制限される場合があり、作業領域に格納されている情報からチェックサム等の検査値を算出するとき、作業領域中の未使用領域からは情報を読み出さずに検査値を算出できる遊技機が求められていた。
【０００５】
本発明は、上述した問題を解決するものであり、作業領域中の未使用領域からは情報を読み出さずに検査値を算出可能な遊技機を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の遊技機は、所定の遊技媒体を用いて遊技を行う遊技機であって、前記遊技の進行の制御を行う主制御部を備え、前記主制御部が記憶部を備えて、前記記憶部の所定の連続範囲は、前記主制御部が制御を行う際のプログラムの作業領域として設定され、前記記憶部は、前記作業領域と、前記記憶部の終端アドレスからアドレスが小さくなる方向に設けられるスタック領域と、アドレス上前記作業領域と前記スタック領域との間に設けられた、使用されない領域と、を有し、前記作業領域が、前記制御を行う際に使用する情報が格納される使用領域と、前記制御を行う際に使用する情報は格納されない未使用領域とを有し、前記未使用領域が、アドレス上１の前記使用領域と他の前記使用領域との間に設けられた中間未使用領域を含み、前記主制御部が、前記未使用領域に格納されている情報を読み出すことなく、前記使用領域に格納されている情報の一部または全部に基づいて、検査値を生成する検査値生成手段と、前記作業領域内の各単位領域について前記検査値の生成に使用されるものか否かを判別可能な判別可能情報を記憶した判別情報記憶部と、を備え、前記検査値生成手段が、前記判別可能情報を参照することにより、前記未使用領域内の各単位領域は前記検査値の生成に使用されるものでないと判別して、前記検査値を生成するように構成され、前記作業領域は、それぞれ１以上の前記単位領域からなる複数の小領域に区分され、前記記憶部には、前記各小領域に対して設定された領域名とアドレスとが対応付けられて格納され、前記判別情報記憶部に、前記判別可能情報として、前記検査値の生成に使用される前記小領域の前記領域名、または、前記検査値の生成に使用されない前記小領域の前記領域名、の少なくとも一方が格納されていることを特徴とする。
【０００７】
また、他の本発明の遊技機は、所定の遊技媒体を用いて遊技を行う遊技機であって、
前記遊技の進行の制御を行う主制御部を備え、前記主制御部が記憶部を備えて、前記記憶部の所定の連続範囲は、前記主制御部が制御を行う際のプログラムの作業領域として設定され、前記記憶部は、前記作業領域と、前記記憶部の終端アドレスからアドレスが小さくなる方向に設けられるスタック領域と、アドレス上前記作業領域と前記スタック領域との間に設けられた、使用されない領域と、を有し、前記作業領域が、前記制御を行う際に使用する情報が格納される使用領域と、前記制御を行う際に使用する情報は格納されない未使用領域とを有し、前記未使用領域が、アドレス上１の前記使用領域と他の前記使用領域との間に設けられた中間未使用領域を含み、前記主制御部が、前記未使用領域に格納されている情報を読み出すことなく、前記使用領域に格納されている情報の一部または全部に基づいて、検査値を生成する検査値生成手段と、前記作業領域内の各単位領域について前記検査値の生成に使用されるものか否かを判別可能な判別可能情報を記憶した判別情報記憶部と、を備え、前記検査値生成手段が、前記判別可能情報を参照することにより、前記未使用領域内の各単位領域は前記検査値の生成に使用されるものでないと判別して、前記検査値を生成するように構成され、前記作業領域を、前記検査値の生成に使用される１以上の前記単位領域であって複数個が連続する場合には当該複数個の前記単位領域を纏めた加算領域と、前記検査値の生成に使用されない１以上の前記単位領域であって複数個が連続する場合には当該複数個の前記単位領域を纏めた非加算領域とに、前記加算領域同士が隣接せずかつ前記非加算領域同士が隣接しないように、区分した場合における、前記加算領域の範囲を示す情報、または、前記非加算領域の範囲を示す情報、の少なくとも一方が、前記判別可能情報として、前記判別情報記憶部に格納されていることを特徴とする。
【発明の効果】
【０００８】
本発明の遊技機によれば、作業領域中の未使用領域からは情報を読み出さずに検査値を算出可能である。
【図面の簡単な説明】
【０００９】
【図１】本発明の各実施形態に係るパチンコ遊技機の正面図である。
【図２】同パチンコ遊技機の電気系統のブロック図である。
【図３】同パチンコ遊技機の、（ａ）はメイン制御基板のメモリマップ、（ｂ）はＲＡＭ内のメモリマップ、（ｃ）はＲＡＭの作業領域内の各領域を示す図である。
【図４】メイン処理のフローチャートである。
【図５】復旧処理のフローチャートである。
【図６】電源監視処理のフローチャートである。
【図７】電源断時処理のフローチャートである。
【図８】メイン側タイマ割込処理のフローチャートである。
【図９】アドレス・領域名対応テーブルの図である。
【図１０】非加算領域名テーブルの図である。
【図１１】第１実施形態のチェックサム生成ルーチンのフローチャートである。
【図１２】区切りアドレステーブルの図である。
【図１３】第２実施形態のチェックサム生成ルーチンのフローチャートである。
【図１４】範囲テーブルの図である。
【図１５】第３実施形態のチェックサム生成ルーチンのフローチャートである。
【図１６】使用状態テーブルの図である。
【図１７】第４実施形態のチェックサム生成ルーチンのフローチャートである。
【図１８】第５実施形態のチェックサム生成ルーチンのフローチャートである。
【発明を実施するための形態】
【００１０】
〈第１実施形態〉図１に示すように、実施形態のパチンコ遊技機は、前面枠１０の内側に取着された遊技盤１を備え、遊技盤１の前面側には、ハンドル１１の操作により発射された遊技球が流下する遊技領域２が、レール１２で囲まれて形成されている。遊技領域２には、図示しない釘が多数突設されている。また、遊技盤１には、可動役物６、及び、盤ランプ１９が配置され、遊技盤１の中央部に形成された前後方向に貫通するルータ孔には、センター役物装置３が配置されている。前面枠１０には、複数の枠ランプ１７及びスピーカ１８が配設されている。
【００１１】
遊技領域２には、中央下部に第１始動入賞装置５ａが、右側下部に第２始動入賞装置５ｂが設けられている。第１始動入賞装置５ａは第１始動口５１ａを備え、第２始動入賞装置５ｂは、第２始動口５１ｂと電動チューリップと称される開閉部材（以下、「電チュー」という。）５０とを備えている。第２始動入賞装置５ｂの下方には、大入賞口７１を有する大入賞装置７が設けられている。大入賞口７１は開閉部材７３により開閉される。また、遊技領域２には、それぞれ普通入賞口９０を備えた複数の普通入賞装置９が設けられている。
【００１２】
遊技領域２の外側には、普通図柄表示器１３、第１特別図柄表示器１４ａ、及び、第２特別図柄表示器１４ｂが設けられるとともに、普通図柄保留ランプ１５、第１特別図柄保留ランプ１６ａ、第２特別図柄保留ランプ１６ｂがそれぞれ４つ設けられている。
【００１３】
第１特別図柄表示器１４ａ、第２特別図柄表示器１４ｂは、それぞれ、遊技球の第１始動口５１ａまたは第２始動口５１ｂへの入賞を契機として行われる大当たり抽選の結果を、変動表示を経て停止表示された図柄により報知する特別図柄変動を行うものである。なお、第１特別図柄表示器１４ａ及び第２特別図柄表示器１４ｂに表示される図柄を特別図柄という。大当たり抽選において大当たりと判定されれば、特別図柄は大当たり図柄で停止表示され、大入賞口７１を所定回数開閉する大当たり遊技が行われる。
【００１４】
遊技球が第１始動口５１ａまたは第２始動口５１ｂに入賞すると、メイン制御基板２０（主制御部に相当。図２参照。）は、その入賞に対して取得した大当たり乱数、大当たり図柄乱数、及び、リーチ乱数を、ＲＡＭ２９（記憶部に相当。図２参照。）に記憶する。そして、特別図柄変動を実行可能になったとき、即ち、前の入賞に対する特別図柄変動も大当たり遊技も実行されていない状態になったときに、記憶しておいた大当たり乱数を用いて大当たりか否かの判定を行い、大当たりの場合には大当たり図柄乱数を用いて停止表示する大当たり図柄を決定して、特別図柄変動を実行する。第１特別図柄保留ランプ１６ａ、第２特別図柄保留ランプ１６ｂは、それぞれ、第１始動口５１ａ、第２始動口５１ｂへの入賞に対する大当たり乱数等の保留数を表示するものであり、保留数は、第１始動口５１ａ、第２始動口５１ｂのそれぞれについて４個が上限とされている。
【００１５】
遊技領域２には、液晶表示装置である画像表示器４の表示部４ａが配置されている。画像表示器４は、客待ち用のデモ表示、第１始動口５１ａや第２始動口５１ｂへの遊技球の入賞に基づく装飾図柄変動演出、大当たり遊技に並行して行われる大当たり演出などを表示部４ａに表示する。
【００１６】
また、遊技領域２の右側には、遊技球が通過可能なゲート８が設けられている。普通図柄表示器１３は、遊技球のゲート８の通過を契機として行われる普通図柄抽選の結果に応じた普通図柄を、普通図柄の変動表示を経て停止表示するものであり、停止表示された普通図柄が当たり図柄であれば、所定時間及び所定回数電チュー５０を開く補助遊技が行われる。
【００１７】
普通図柄の変動表示中または補助遊技中に、遊技球がゲート８を通過すると、メイン制御基板２０は、その通過に対して取得した当たり乱数を記憶しておき、普通図柄の変動表示を開始可能な状態になったときに、記憶しておいた当たり乱数を用いて当たりか否かの判定を行い、普通図柄の変動表示を開始してその判定を報知する普通図柄を停止表示する。普通図柄保留ランプ１５は、このように記憶されている当たり乱数の個数を表示するものであり、記憶される当たり乱数の個数は４個が上限とされている。
【００１８】
図２に示すように、実施形態のパチンコ遊技機は、メイン制御基板２０、払出制御基板２１、サブ制御基板２５を備え、サブ制御基板２５は、演出制御基板２２、画像制御基板２３、及び、ランプ制御基板２４を備えている。そして、払出制御基板２１及び演出制御基板２２はメイン制御基板２０に接続され、画像制御基板２３及びランプ制御基板２４は演出制御基板２２に接続されている。メイン制御基板２０には、ＣＰＵ２７、ＲＯＭ２８、及び、ＲＡＭ２９を備えたワンチップマイクロコンピュータが実装されている。また、他の各制御基板も、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＲＴＣ（リアルタイムクロック）等を備えている。
【００１９】
メイン制御基板２０には、第１始動口５１ａに入賞した遊技球を検出する第１始動口ＳＷ（スイッチ）５４ａ、第２始動口５１ｂに入賞した遊技球を検出する第２始動口ＳＷ５４ｂ、電チュー５０を開閉動作させる電チューソレノイド５３、ゲート８を通過した遊技球を検出するゲートＳＷ８１、大入賞口７１に入賞した遊技球を検出する大入賞口ＳＷ７４、大入賞口７１の開閉部材７３を開閉動作させる大入賞口ソレノイド７２、普通入賞口９０に入賞した遊技球を検出する普通入賞口ＳＷ９１、第１特別図柄保留ランプ１６ａ、第２特別図柄保留ランプ１６ｂ、普通図柄保留ランプ１５、第１特別図柄表示器１４ａ、第２特別図柄表示器１４ｂ、及び、普通図柄表示器１３がそれぞれ接続され、図５の矢印で示すように、各スイッチからはメイン制御基板２０に信号が入力され、各ソレノイドやランプ等にはメイン制御基板２０から信号が出力される。
【００２０】
メイン制御基板２０は、払出制御基板２１に各種コマンドを送信し、払出制御基板２１には、払出装置（図示せず。）を駆動する払出駆動モータ２６が接続されて、払出制御基板２１は、メイン制御基板２０から受信したコマンドに従って払出駆動モータ２６を動作させ、賞球の払出を行わせる。
【００２１】
また、メイン制御基板２０は、演出制御基板２２に対し各種コマンドを送信し、演出制御基板２２は、画像制御基板２３との間でコマンドや信号の送受信を行う。画像制御基板２３には画像表示器４及びスピーカ１８が接続され、画像制御基板２３は演出制御基板２２から受信したコマンドに従って、画像表示器４の表示部４ａに装飾図柄その他の画像を表示して、装飾図柄変動演出等を行い、また、スピーカ１８から音声を出力する。また、演出制御基板２２はランプ制御基板２４にコマンドを送信する。ランプ制御基板２４には、可動役物６、枠ランプ１７、及び、盤ランプ１９が接続され、ランプ制御基板２４は、演出制御基板２２から受信したコマンドに従って、可動役物６を作動し、枠ランプ１７や盤ランプ１９を点灯・消灯する。
【００２２】
実施形態のパチンコ遊技機は、外部電源（例えばＡＣ２４Ｖ）に接続された電源基板３０を備え、電源基板３０は、直流電圧生成回路３１を備えて直流電源を生成し、メイン制御基板２０、サブ制御基板２５（演出制御基板２２、画像制御基板２３、ランプ制御基板２４）、払出制御基板２１にそれぞれ供給する。直流電圧生成回路３１は内部にバックアップ電源３２を備え、バックアップ電源３２は、外部電源の供給が断たれた場合に、メイン制御基板２０（特にＲＡＭ２９）及び払出制御基板２１に電源を供給する。また、電源基板３０は、直流電圧生成回路３１により生成される直流電源を監視する電源電圧監視回路３３を備え、外部電源の供給が断たれて電圧が所定の閾値を下回ったときには、電圧低下信号をメイン制御基板２０と払出制御基板２１とに出力し、外部電源の供給が再開されて電圧が所定の閾値を上回ったときには、電圧復帰信号をメイン制御基板２０と払出制御基板２１とに出力する。
【００２３】
図３（ａ）はメイン制御基板２０のメモリマップであり、この図に示すように、メイン制御基板２０のアドレス空間は００００Ｈ〜ＦＦＦＦＨの範囲とされ、００００Ｈ〜０ＢＦＦＨの３０７２バイトは、制御プログラムが格納されるプログラム領域２８ａ、１０００Ｈ〜１ＢＦＦＨの３０７２バイトは、制御プログラムが使用する固定データが格納されるデータ領域２８ｂに割り当てられ、プログラム領域２８ａ及びデータ領域２８ｂは、いずれもＲＯＭ２８内の領域とされている。ＣＰＵ２７は、プログラム領域２８ａに格納された制御プログラムに従って、データ領域２８ｂに格納されたデータを参照しつつ、遊技の進行の制御を行う。
【００２４】
また、２８００Ｈ〜２９ＦＦＨの５１２バイトは、ＲＡＭ２９内の領域（ＲＡＭ領域）に割り当てられている。図３（ｂ）に示すように、ＲＡＭ２９の所定の連続範囲（ここでは、ＲＡＭ２９の先頭アドレスから連続する範囲であり、具体的には２８００Ｈ〜２８Ａ０Ｈの範囲）は、メイン制御基板２０が制御を行う際のプログラム（すなわち、制御プログラム）の作業領域（ワークエリア）１００として設定されている。作業領域１００とは、後述するように領域名と大きさとが定められた小領域から構成された領域であり、それらの領域名を用いてデータが格納されるが、後述する中間未使用領域１０２については、領域名及び大きさは定められているものの、ＲＡＭクリア時を除いてはデータが格納されることはない。また、ＲＡＭ２９の終端アドレス２９ＦＦＨからアドレスが小さくなる方向にスタック領域３００が設けられる。スタック領域３００は、ＣＰＵ２７が制御プログラムを実行する上で一時的に記憶すべき種々の情報、例えば、使用中のレジスタの内容、サブルーチンを終了して本ルーチンに復帰するときの本ルーチンの復帰アドレス等が格納される一時退避領域である。スタック領域３００のサイズは格納されるデータ量により変動するが、ＲＡＭ２９の容量は、作業領域１００及びスタック領域３００で使用される容量に比して十分に大きいものとされているため、作業領域１００とスタック領域３００とが重なることはなく、作業領域１００とスタック領域３００との間は、使用されない未使用領域２００とされる。
【００２５】
図３（ｃ）に示すように、作業領域１００は、メイン制御基板２０が制御を行う際に使用する情報（例えば、ＣＰＵ２７が種々の処理を実行する際に処理間で受け渡すべき情報や、処理を繰り返し実行する際に次回まで保持しておくべき情報等）が格納される使用領域１０１ａ、１０１ｂ、１０１ｃ（一括して言及するときは「使用領域１０１」という。）と、メイン制御基板２０が制御を行う際に使用する情報は格納されない未使用領域１０２ａ、１０２ｂとから構成される。未使用領域１０２ａは使用領域１０１ａと使用領域１０１ｂとの間、未使用領域１０２ｂは使用領域１０１ｂと使用領域１０１ｃとの間に設けられており、この未使用領域１０２ａ、１０２ｂを、上記作業領域１００とスタック領域３００との間の未使用領域２００と区別するために、以下、中間未使用領域１０２ａ、１０２ｂ（一括して言及するときは「中間未使用領域１０２」という。）という。中間未使用領域１０２は、現在の制御プログラムでは使用されない領域であり、将来制御プログラムが変更された場合に使用される可能性がある領域である。具体的には、アドレス２８００Ｈ〜２８１ＦＨの範囲が使用領域１０１ａ、アドレス２８２０Ｈ〜２８２９Ｈの範囲が中間未使用領域１０２ａ、アドレス２８２ＡＨ〜２８３９Ｈの範囲が使用領域１０１ｂ、２８３ＡＨ〜２８３ＤＨの範囲が中間未使用領域１０２ｂ、２８３ＥＨ〜２８Ａ０Ｈの範囲が使用領域１０１ｃとされている。使用領域１０１ａには、先頭の２バイトにチェックサム格納領域が設けられ、残りの部分に、例えばメイン制御基板２０から演出制御基板２２等に渡されるコマンドが格納され、使用領域１０１ｂには、例えば時短回数をカウントするための時短カウンタや、確変回数をカウントするための確変カウンタ等のカウンタが設けられ、使用領域１０１ｃにはその他の変数等が格納される。また、中間未使用領域１０２の全てのバイトには、後述するＲＡＭクリア処理により値０（１６進数で００Ｈ）が格納される。なお、ここでは、中間未使用領域１０２は、２つの使用領域１０１間に設けられているが、作業領域１００の最後の部分（図３（ｃ）の例では、使用領域１０１ｃの後）に設けてもよいし、作業領域１００の先頭から始まる部分（図３（ｃ）の例では、使用領域１０１ａの前）に設けてもよい。
【００２６】
作業領域１００は複数の小領域に区分され、小領域毎に名称（この名称を「領域名」という。）が付されている。制御プログラムには領域名を用いて各種の命令が記述されており、ＣＰＵ２７は、例えば、領域名を用いた書込み命令に従って、その領域名が付された小領域に情報（データ）を書き込んだり、領域名を用いた読出し命令に従って、その領域名が付された小領域から情報を読み出したりする。各小領域の大きさは、その小領域に格納されるデータの大きさによって、１バイト以上バイト単位で定められている。例えば０〜２５５までの数をカウントするカウンタであれば１バイトで済むが、２５６以上の数をカウントするカウンタでは２バイト以上が必要となるからである。
【００２７】
作業領域１００内には、図９に示すように、アドレスと領域名との対応を示すアドレス・領域名対応テーブルが設けられている。アドレス・領域名対応テーブルには、作業領域１００内の全てのアドレス（１バイトずつのアドレス）と、そのアドレスに割り当てられている小領域の領域名とが対応付けられて格納されている。なお、このアドレス・領域名対応テーブルは、第２〜５実施形態のパチンコ遊技機も有している。図９の例では、アドレス２８００Ｈ、２８０１Ｈはいずれも小領域「ＣＨＫＳＵＭ」に対応付けられており、小領域「ＣＨＫＳＵＭ」は２バイトの領域である。なお、小領域「ＣＨＫＳＵＭ」は、チェックサムが格納されるチェックサム格納領域である。また、アドレス２８０２Ｈは小領域「ＣＭ０１」、アドレス２８１ＦＨは小領域「ＣＭ３０」に対応付けられており、小領域「ＣＭ０１」、「ＣＭ３０」はいずれも１バイトの領域である。また、中間未使用領域１０２も所定の大きさの（ここでは、１バイトずつの）小領域に区分され、例えば中間未使用領域１０２ａ内のアドレス２８２０Ｈは小領域「ＣＭ３１」、中間未使用領域１０２ｂ内のアドレス２８３ＡＨは小領域「ＣＴ１７」に対応付けられている。
【００２８】
メイン制御基板２０の行う処理について、次に説明する。メイン制御基板２０は電源投入（電源復帰）と判断すると、制御プログラムに従って図４に示すメイン処理を行う。なお、メイン制御基板２０は、電源電圧監視回路３３から電圧復帰信号を受信したか否かを周期的に判定し、電圧復帰信号を受信した場合つまり電源が所定電圧まで上昇した場合、電源復帰と判断する。メイン処理では、メイン制御基板２０は、周辺部（払出制御基板２１、サブ制御基板２５）の起動を安定させるための例えば１０００ｍｓｅｃ等の時間待ちを行い（ステップＳ１０１）、ＲＡＭ２９のアクセス許可を行う（Ｓ１０２）。次に、ＲＡＭクリアスイッチの状態を検出する（Ｓ１０３）。そして、検出結果がＯＮであれば、ステップＳ１０８に移行する。一方、検出結果がＯＦＦであれば、バックアップフラグの状態を検出する（Ｓ１０４）。バックアップフラグがＯＮであれば、後述するチェックサム生成ルーチンに従ってチェックサム生成処理を行い、生成したチェックサムと、後述する電源断時処理のステップＳ４０２でチェックサム格納領域「ＣＨＫＳＵＭ」に保存しておいたチェックサムとを照合する（Ｓ１０５）。なお、チェックサムは検査値に相当する。そして、生成したチェックサムと保存しておいたチェックサムとが一致すれば正常、不一致であれば正常でないとして、チェックサムが正常であれば（Ｓ１０６でYES）、後述する復旧処理を実行して（Ｓ１０７）、ステップＳ１１１に移行し、正常でなければ（Ｓ１０６でNO）、ステップＳ１０８に移行する。また、ステップＳ１０４において、バックアップフラグがＯＦＦである場合にも、ステップＳ１０８に移行する。
【００２９】
ステップＳ１０８に移行した場合、メイン制御基板２０は、ＲＡＭ２９の全領域に（すなわち、アドレス２８００Ｈ〜２８Ａ０Ｈまでバイト毎に）値０（１６進数で００Ｈ）を書き込むＲＡＭクリア処理を行い（Ｓ１０８）、ＲＡＭ２９の作業領域１００の使用領域１０１に初期値を設定し（Ｓ１０９）、周辺部に対してそれぞれ初期設定を行い（Ｓ１１０）、ステップＳ１１１に移行する。このように、メイン制御基板２０は、電源復帰を契機に、チェックサムを生成して、後述する電源断時処理のステップＳ４０２で保存しておいたチェックサムと照合し、その照合結果に応じて、チェックサムが正常であれば復旧処理を、正常でなければＲＡＭクリア処理を行う。
【００３０】
メイン制御基板２０は、ステップＳ１１１では、メイン制御基板２０が有するＣＴＣ（Counter Timer Circuit）の周期（例えば４ｍｓｅｃ）を設定する。メイン制御基板２０は、この周期で後述するメイン側タイマ割込処理を行う。次に、メイン制御基板２０は、後述する電源断監視処理を行い（Ｓ１１２）、大当たり判定に用いる変動パターン乱数を更新し（Ｓ１１３）、割込を禁止して（Ｓ１１４）、大当たり判定に用いる初期値乱数を更新し（Ｓ１１５）、再度割込を許可する（Ｓ１１６）。以後、電源が供給されている期間中は、ステップＳ１１２〜Ｓ１１６の処理を繰り返す。
【００３１】
次に、図５に基づいて、復旧処理について説明する。復旧処理は電源断後の復旧時に行われるものであり、メイン制御基板２０は、まず、復旧時におけるＲＡＭ２９の作業領域１００の設定（例えば、特別図柄等の図柄や保留等の復旧）を行う（ステップＳ２０１）。次に、作業領域１００の使用領域１０１に格納されている情報に基づいて、電源断時における遊技状態が大当たり中であったか否かを判定し（Ｓ２０２）、大当たり中であったときには、演出制御基板２２に対して大当たり状態コマンドを送信し（Ｓ２０３）、大当たり中でなかったときには、確変中であったか否かを判定する（Ｓ２０４）。そして、確変中であったときには、確変状態コマンドを送信し（Ｓ２０５）、確変中でなかったときには、時短中であったか否かを判定する（Ｓ２０６）。そして、時短中であったときには、時短状態コマンドを送信する（Ｓ２０７）。時短中でなかったときには、通常状態コマンドを送信する（Ｓ２０８）。このように電源断時における遊技状態に応じたコマンドを演出制御基板２２に送信後、メイン制御基板２０は、周辺部の設定をおこない（Ｓ２０９）、バックアップフラグをＯＦＦにして（Ｓ２１０）、復旧処理を終える。
【００３２】
次に、図６に基づいて、電源断監視処理について説明する。メイン制御基板２０は、割込を禁止して（ステップＳ３０１）、電源断であるか否かを電圧低下信号の入力の有無で判定する（Ｓ３０２）。そして電源断でなければ、割込を許可し（Ｓ３０３）、電源断監視処理を終了する。一方、電源断であれば、後述する電源断時処理を行い（Ｓ３０４）、電源断監視処理を終了する。
【００３３】
図７に基づいて、電源断時処理について説明する。メイン制御基板２０は、メイン制御基板２０が有する出力ポート（図示せず）をクリアし（ステップＳ４０１）、後述するチェックサム生成ルーチンに従ってチェックサム生成処理を行い、レジスタに生成したチェックサムを、チェックサム格納領域「ＣＨＫＳＵＭ」に格納する（Ｓ４０２）。次に、バックアップフラグをＯＮにし（Ｓ４０３）、ＲＡＭ２９へのアクセスを禁止し（ステップＳ４０４）、電源断時処理を終了する。このように、メイン制御基板２０は、電源断が検出されたこと契機に、チェックサムの生成と保存とを行う。
【００３４】
次に、図８に基づいて、メイン制御基板２０が上述したＣＴＣの周期毎に行うメイン側タイマ割込処理について説明する。まず、メイン制御基板２０は、大当たり抽選に用いる大当たり乱数、大当たり図柄を決めるための大当たり図柄乱数、普通図柄抽選に用いる当たり乱数等を更新する乱数更新処理を行う（ステップＳ５０１）。
【００３５】
次に、メイン制御基板２０は、第１始動口ＳＷ５４ａまたは第２始動口ＳＷ５４ｂがＯＮした場合に、対応する始動口カウンタの値が４以下であれば、大当たり乱数及び大当たり図柄乱数を取得して記憶し、始動口カウンタの値に１を加算する始動口ＳＷ処理（Ｓ５０２）、ゲートＳＷ８１がＯＮした場合に、ゲートカウンタの値が４以下であれば、当たり乱数を取得して記憶し、ゲートカウンタの値に１を加算するゲートＳＷ処理（Ｓ５０３）、大入賞口ＳＷ７４がＯＮし場合に、入賞個数カウンタ及び大入賞口カウンタの値に１を加算する大入賞口ＳＷ処理（Ｓ５０４）、普通入賞口ＳＷ９１がＯＮした場合に普通入賞口カウンタの値に１を加算する普通入賞口ＳＷ処理（Ｓ５０５）を行う。
【００３６】
続いて、メイン制御基板２０は、始動口カウンタの値が１以上である場合に、その始動口カウンタの値から１を減算して、特別図柄変動を開始するとともに、始動口ＳＷ処理で記憶した大当たり乱数を用いて大当たりか否かを判定し、大当たりであれば大当たり図柄乱数を用いてその種類を判定して、その判定結果に応じた特別図柄を停止表示する特別図柄処理（Ｓ５０６）、ゲートカウンタの値が１以上である場合に、ゲートカウンタの値から１減算するとともに、ゲートＳＷ処理で記憶した当たり乱数を用いて当たりか否かを判定して、その判定結果に応じた普通図柄を表示する普通図柄処理（Ｓ５０７）を行う。
【００３７】
そして、メイン制御基板２０は、特別図柄処理で大当たりと判定された場合に大入賞口７１を所定回数開閉させる大入賞口処理（Ｓ５０８）、普通図柄処理で当たりと判定された場合に電チュー５０を所定回数開閉させる電チュー処理（Ｓ５０９）、大入賞口カウンタの値に応じた数の賞球、及び、普通入賞口カウンタの値に応じた数の賞球を払い出すためのコマンドをセットして、それらのカウンタをゼロクリアする賞球処理（Ｓ５１０）を行い、以上の各処理においてセットしたコマンドを払出制御基板２１及び演出制御基板２２に出力する出力処理（Ｓ５１１）を行う。
【００３８】
次に、第１実施形態のパチンコ遊技機のチェックサム生成処理について、図１０、１１に基づいて説明する。第１実施形態のパチンコ遊技機は、図１０に示すような非加算領域名テーブルを、データ領域２８ｂに有している。非加算領域名テーブルには、チェックサムの生成には使用されない（すなわち、非加算とされる）小領域を示す情報として、非加算とされる小領域の領域名が格納されている。非加算とされる小領域は、チェックサム格納領域及び中間未使用領域１０２内の各小領域である。中間未使用領域１０２は、実際には使用されていない領域であるため、チェックサム格納領域は、保存時と照合時とで実際には正常であるにもかかわらずチェックサムが一致しなくなってしまうことを防止するため、いずれも非加算とする。実施形態の非加算領域名テーブルには、チェックサム格納領域の領域名「ＣＨＫＳＵＭ」、中間未使用領域１０２ａ（アドレス２８２０Ｈ〜２８２９Ｈ）内の各小領域の領域名「ＣＭ３１」〜「ＣＭ４０」、及び、中間未使用領域１０２ｂ（アドレス２８３ＡＨ〜２８３ＤＨ）内の各小領域の領域名「ＣＴ１７」〜「ＣＴ２０」が格納されている。作業領域１００内の各単位領域について、その単位領域に対応する領域名はアドレス・領域名対応テーブルから分かり、その領域名の付された小領域が、チェックサムの生成に使用されるか否かは非加算領域名テーブルから分かる。なお、単位領域とは、チェックサムを生成するときのデータの読出し単位となる領域をいい、ここでは１バイトの領域とする。すなわち、非加算領域名テーブル及びアドレス・領域名対応テーブルに格納されている情報から、作業領域１００内の各単位領域についてチェックサムの生成に使用されるものか否かを判別可能であり、非加算領域名テーブル及びアドレス・領域名対応テーブルは、判別情報記憶部に相当する。
【００３９】
そして、メイン制御基板２０は、図１１に示すようなチェックサム生成ルーチンに従って、チェックサムを生成する。なお、メイン制御基板２０のチェックサム生成ルーチンに従って動作する部分が、検査値生成手段に相当する。第１実施形態及び後述する第２〜４実施形態のチェックサム生成ルーチンは、作業領域１００の最後の単位領域から１バイトずつ遡って、各単位領域がチェックサムの生成に使用されるものか否かを判別しつつ、チェックサムの生成に使用されるものであるときのみその単位領域からデータを読み出して、チェックサムを生成するためのレジスタに加算するものである。このレジスタは、ＣＰＵ２７に内蔵されており、以下、このレジスタの名称を「ＳＵＭ」とする。
【００４０】
まず、メイン制御基板２０は、レジスタ「ＳＵＭ」をゼロクリアし（ステップＳ６０１）、作業領域１００中の単位領域（バイト）を数えるためのカウンタ「Ｃ」に、作業領域１００全体のバイト数（単位領域数）「１６１」を入れる（Ｓ６０２）。なお、カウンタ「Ｃ」は、使用領域１０１に設けられる。そして、カウンタ「Ｃ」から１を減算し（Ｓ６０３）、現在加算しようとしているアドレスに対応する領域名を、アドレス・領域名テーブルから取得する（Ｓ６０４）。現在加算しようとしているアドレスは、作業領域１００の先頭アドレス２８００Ｈにカウンタ「Ｃ」の値を加算することで算出できる。図９の例では、最初にアドレス２８Ａ０Ｈに対応する領域名「ＤＴ９９」が取得される。
【００４１】
次に、メイン制御基板２０は、非加算領域名テーブルを参照して、取得した領域名が非加算領域名テーブルにあるか否かを判定し（Ｓ６０５）、無ければ、現在加算しようとしているアドレスの単位領域から情報（１バイトの値）を読み出して、「ＳＵＭ」に加算し（Ｓ６０６）、ステップＳ６０７に進む。図９の例で、最初に取得された領域名「ＤＴ９９」は、非加算領域名テーブルに無いので、アドレス２８Ａ０Ｈの単位領域から情報を読み出して「ＳＵＭ」に加算する。一方、ステップＳ６０５で取得した領域名が非加算領域名テーブルにあると判定すれば、ステップＳ６０６は行わず、ステップＳ６０７に進む。例えば、現在加算しようとしているアドレスが２８３ＤＨである場合、対応する領域名は「ＣＴ２０」であり、非加算領域名テーブルにあるので、アドレス２８３ＤＨの単位領域から情報は読み出さず、ステップ６０７に進む。ステップ６０７では、カウンタ「Ｃ」の値が０か否かを判定し、０でなければステップＳ６０３に戻って、以下、「Ｃ」の値が０になるまで、ステップＳ６０３以降の処理を繰り返す。そして、「Ｃ」の値が０になれば、処理を終える。この処理を終えたときに、レジスタ「ＳＵＭ」には、作業領域１００中のチェックサム格納領域を除く使用領域１０１内の各単位領域の値（すなわち、１バイト毎の値）を加算したチェックサムが生成されているが、このチェックサムには中間未使用領域１０２内の値は加算されていない。
【００４２】
以上のように、第１実施形態のパチンコ遊技機では、非加算領域名テーブルとアドレス・領域名対応テーブルとを参照して、作業領域１００中の各単位領域がチェックサムの生成に使用されるものか否かを判定することにより、作業領域１００中の中間未使用領域１０２からは情報を読み出さずに、使用領域１０１からのみ（さらにいえば、チェックサム格納領域を除く使用領域１０１からのみ）情報を読み出して、チェックサムを算出可能である。また、第１実施形態のパチンコ遊技機は、チェックサム生成ルーチンが簡単であり、制御が容易であるとともに、非加算とされる小領域が少ない場合には、非加算領域名テーブルのサイズが小さくて済み、判別情報記憶部のサイズを縮減できる。
【００４３】
なお、非加算領域名テーブルには、チェックサムの生成に使用されない単位領域を示す情報が記憶されているが、後述する変形例のように、非加算領域名テーブルの代わりに、チェックサムの生成に使用される単位領域を示す情報を記憶した加算領域名テーブルを設けてもよい。すなわち、判別情報記憶部には、作業領域１００内の各単位領域についてチェックサムの生成に使用されるものか否かを判別可能な情報（以下、「判別可能情報」という。）として、チェックサムの生成に使用される単位領域を示す情報、または、チェックサムの生成に使用されない単位領域を示す情報の少なくとも一方を記憶すればよい。
【００４４】
〈第２実施形態〉次に、第２実施形態について説明する。第２実施形態は、第１実施形態とチェックサム生成処理が異なるのみであるので、第２実施形態のチェックサム生成処理について図１２、１３に基づいて説明し、第１実施形態と同様の部分は説明を省略する。なお、第２〜５実施形態のメイン制御基板２０のメモリマップは、いずれも、図３に示すように設定されているものとする。
【００４５】
第２実施形態のパチンコ遊技機は、判別情報記憶部に相当する図１２に示すような区切りアドレステーブルを、データ領域２８ｂに有している。区切りアドレステーブルには、作業領域１００の最終アドレスから遡って、加算領域の開始となるアドレス、及び、非加算領域の開始となるアドレスが、いずれの領域が開始されるかを示すフラグ（０は加算、１は非加算を示す。）とともに格納されている。ここで、加算領域とは、加算とされる単位領域からなり、加算とされる単位領域が複数連続する場合にはそれらを纏めた領域をいい、非加算領域とは、非加算とされる単位領域からなり、非加算とされる単位領域が複数連続する場合にはそれらを纏めた領域をいう。図３の例では、アドレス２８００Ｈ〜２８０１Ｈ（チェックサム格納領域）、２８２０Ｈ〜２８２９Ｈ（中間未使用領域１０２ａ）、２８３ＡＨ〜２８３ＤＨ（中間未使用領域１０２ｂ）の各領域が、非加算領域であり、アドレス２８０２Ｈ〜２８１ＦＨ（チェックサム格納領域を除く使用領域１０１ａ）、２８２ＡＨ〜２８３９Ｈ（使用領域１０１ｂ）、２８３ＥＨ〜２８Ａ０Ｈ（使用領域１０１ｃ）の各領域が、加算領域である。したがって、図１２に示すように、区切りアドレステーブルには、作業領域１００の最終アドレスから遡った場合の加算領域または非加算領域の始まりとなるアドレスが、加算領域または非加算領域のいずれが始まるかを示すフラグとともに格納されている。
【００４６】
そして、メイン制御基板２０は、図１３に示すようなチェックサム生成ルーチンに従って、チェックサムを生成する。まず、メイン制御基板２０は、チェックサムを生成するためのレジスタ「ＳＵＭ」をゼロクリアし（ステップＳ７０１）、現在参照しようとしているアドレスを格納するアドレスカウンタ「Ａ」に、作業領域１００の最終アドレス２８Ａ０Ｈに１を加算した初期値を設定し（Ｓ７０２）、フラグ格納領域「Ｃ」に初期値０を入れる（Ｓ７０３）。なお、アドレスカウンタ「Ａ」及びフラグ格納領域「Ｃ」は、使用領域１０１に設けられる。
【００４７】
次に、メイン制御基板２０は、区切りアドレステーブルの行数（アドレス及びフラグの組を１行と数える。）を数えるためのカウンタ「Ｂ」に、区切りアドレステーブルの最大行数（最大ループ回数）「６」を入れ（Ｓ７０４）、アドレスカウンタ「Ａ」から１を減算する（Ｓ７０５）。そして、「Ａ」の値が区切りアドレステーブルのＢ番目（Ｂ：カウンタ「Ｂ」の値）のアドレスに等しいか否かを判定し（Ｓ７０６）、等しくなければ、カウンタ「Ｂ」から１を減算して（Ｓ７０７）、「Ｂ」の値が０か否かを判定し（Ｓ７０８）、０でなければステップＳ７０６に戻るが、０であればステップＳ７１０に進む。一方、ステップＳ７０６で、「Ａ」の値が区切りアドレステーブルのＢ番目のアドレスに等しいと判定すれば、区切りアドレステーブルのＢ番目のフラグを、フラグ格納領域「Ｃ」に格納し（Ｓ７０９）、ステップＳ７１０に進む。したがって、アドレスカウンタ「Ａ」と等しいアドレスが、区切りアドレステーブルの中にあるか否かを、区切りアドレステーブルの６番目のアドレスから遡って見て行き、等しいアドレスがあれば、そのアドレスに対応するフラグがフラグ格納領域「Ｃ」に格納され、等しいアドレスが無ければ、それまでフラグ格納領域「Ｃ」に格納されていたフラグが維持されて、ステップＳ７１０に進むこととなる。
【００４８】
ステップＳ７１０では、メイン制御基板２０は、フラグ格納領域「Ｃ」の値が０か否かを判定し、０であれば、アドレスカウンタ「Ａ」が示すアドレスの単位領域から値を読み出して、「ＳＵＭ」に加算して、ステップＳ７１２に進み、０でなければ加算せずにステップＳ７１２に進む。ステップＳ７１２では、アドレスカウンタ「Ａ」の値が、作業領域の先頭アドレス２８００Ｈか否かを判定し、２８００Ｈでなければ、ステップＳ７０４に戻り、２８００Ｈであれば、処理を終える。この処理を終えたときに、レジスタ「ＳＵＭ」には、作業領域１００中のチェックサム格納領域を除く使用領域１０１内の各単位領域の値を加算したチェックサムが生成されているが、このチェックサムには中間未使用領域１０２内の値は加算されていない。
【００４９】
図３及び図１２に示す例では、まず、ステップ７０６でアドレス２８Ａ０Ｈが区切りアドレステーブルの１番目のアドレスに等しいと判定されて、ステップＳ７０９で「Ｃ」に０が格納され、ステップ７１０でYESと判断されて、ステップＳ７１１でアドレス２８Ａ０Ｈから値が読み出されて「ＳＵＭ」に加算される。そして、アドレス２８９ＦＨ〜２８３ＥＨまでは、区切りアドレステーブルには等しいアドレスが格納されていないので、「Ｃ」＝０が維持され、値が読み出されて「ＳＵＭ」に加算されることとなる。次に、アドレス２８３ＤＨがステップ７０６で区切りアドレステーブルの２番目のアドレスに等しいと判定され、ステップＳ７０９で「Ｃ」に１が格納され、ステップ７１０でNOと判断されて、アドレス２８３ＤＨから値は読み出されず、「ＳＵＭ」にも加算されない。そして、アドレス２８３ＣＨ〜２８３ＡＨまでは、区切りアドレステーブルには等しいアドレスが格納されていないので、「Ｃ」＝１が維持され、値が読み出されず「ＳＵＭ」にも加算されないこととなる。
【００５０】
以上のように、第２実施形態のパチンコ遊技機では、メイン制御基板２０は、加算領域・非加算領域の開始アドレスが格納された区切りアドレステーブルを参照して、開始アドレスに到達する度にフラグを参照して加算・非加算を切り替えつつ、チェックサム格納領域を除く使用領域１０１内の各単位領域の値を加算したチェックサムを生成する。すなわち、作業領域１００中の中間未使用領域１０２からは情報を読み出さずに、使用領域１０１からのみ（さらにいえば、チェックサム格納領域を除く使用領域１０１からのみ）情報を読み出して、チェックサムを算出可能である。また、第２実施形態のパチンコ遊技機は、非加算とされる小領域が多い場合にも、それらの小領域のアドレスの全てをテーブルに持つのではなく、区切りとなる単位領域のアドレスのみ区切りアドレステーブルに持つので、テーブルサイズが小さくて済む。
【００５１】
なお、実施形態の区切りアドレステーブルは、判別可能情報として、作業領域１００内の加算領域の範囲及び非加算領域の範囲を示す情報を記憶しているが、例えば加算領域の開始アドレス及び終了アドレスのみ（すなわち、加算領域の範囲を示す情報のみ）を区切りアドレステーブルに格納した場合も、それらのアドレスで示される範囲以外は非加算領域と判別できる。したがって、判別情報記憶部には、判別可能情報として、作業領域１００内の加算領域（すなわち、チェックサムの生成に使用される領域）の範囲、または、非加算領域（すなわち、チェックサムの生成に使用されない領域）の範囲を示す情報の少なくとも一方を記憶すればよい。
【００５２】
〈第３実施形態〉次に、第３実施形態について説明する。第３実施形態は、第１実施形態とチェックサム生成処理が異なるのみであるので、第３実施形態のチェックサム生成処理について図１４、１５に基づいて説明し、第１実施形態と同様の部分は説明を省略する。第３実施形態のパチンコ遊技機は、判別情報記憶部に相当する図１４に示すような範囲テーブルをデータ領域２８ｂに有している。範囲テーブルには、作業領域１００の加算領域及び非加算領域の範囲（大きさ）と、その領域が加算か非加算かを示すフラグ（０は加算、１は非加算を示す。）とが格納されている。なお、加算領域及び非加算領域の意は、第２実施形態と同様である。図３の例では、作業領域１００の先頭から順に、２バイトのチェックサム格納領域、チェックサム格納領域を除いた３０バイトの使用領域１０１ａ、１０バイトの中間未使用領域１０２ａ、１６バイトの使用領域１０１ｂ、４バイトの中間未使用領域１０２ｂ、９９バイトの使用領域１０１ｃとなっているので、範囲テーブルには、図１４に示すように、先頭から２バイトがフラグ「１」、次の３０バイトがフラグ「０」、…というように、バイト数とフラグとが格納されている。範囲テーブルは、判別可能情報として、作業領域１００内の加算領域の範囲及び非加算領域の範囲を示す情報を記憶した判別情報記憶部といえる。
【００５３】
そして、メイン制御基板２０は、図１５に示すようなチェックサム生成ルーチンに従って、チェックサムを生成する。まず、メイン制御基板２０は、チェックサムを生成するためのレジスタ「ＳＵＭ」をゼロクリアし（ステップＳ８０１）、作業領域１００中の単位領域を数えるためのカウンタ「Ｃ」に、作業領域１００全体のバイト数「１６１」を入れる（Ｓ８０２）。
【００５４】
次に、メイン制御基板２０は、範囲テーブルの行数（バイト数及びフラグの組を１行と数える。）を数えるカウンタ「Ｎ」に１を入れ（Ｓ８０３）、減算用カウンタにカウンタ「Ｃ」の値を入れる（Ｓ８０４）。カウンタ「Ｎ」及び減算用カウンタは、使用領域１０１に設けられる。そして、減算用カウンタから、範囲テーブルのＮ番目（Ｎ：カウンタ「Ｎ」の値）のバイト数を減算し（Ｓ８０５）、減算用カウンタの値が０より大きければ（Ｓ８０６でYES）ステップＳ８０７に進み、０以下であれば（Ｓ８０６でNO）ステップＳ８０８に進む。ステップ８０７では、カウンタ「Ｎ」に１を加算して、ステップＳ８０５に戻る。例えば、１番目のバイト数を減算した結果、減算用カウンタの値が０より大きいということは、Ｃ番目（Ｃ：カウンタ「Ｃ」の値）の単位領域は、１番目のバイト数で示される範囲（すなわち、チェックサム格納領域）を越えた箇所にあることを示しているため、ステップＳ８０５に戻って、２番目のバイト数を減算する。２番目のバイト数を減算した結果、減算用カウンタの値が０以下となれば、Ｃ番目の単位領域は、２番目のバイト数で示される範囲（すなわち、チェックサム格納領域を除いた使用領域１０１ａ）内にあることが分かる。このように、カウンタ「Ｃ」の値を入れた減算用カウンタから、範囲テーブルに格納されているバイト数を、１番目のバイト数から順に、減算用カウンタの値が０以下となるまで減算し、Ｎ番目のバイト数を減算した結果初めて０以下になったとすれば、Ｃ番目の単位領域はＮ番目のバイト数で示される範囲にあり、Ｎ番目のフラグを見れば、Ｃ番目の単位領域が、加算領域に属しているか、非加算領域に属しているかが分かる。
【００５５】
ステップＳ８０８では、メイン制御基板２０は、Ｎ番目のフラグが０であるか否かを判定し、０であれば、現在加算しようとしているアドレスの単位領域（すなわち、作業領域１００中のＣ番目の単位領域）から値を読み出して「ＳＵＭ」に加算して（Ｓ８０９）、ステップＳ８１０に進む。現在加算しようとしているアドレスは、作業領域１００の先頭アドレス２８００Ｈにカウンタ「Ｃ」の値を加算し、１を減算することで算出できる。一方、Ｎ番目のフラグが０でなければステップＳ８０９は行わず、ステップＳ８１０に進む。最初、カウンタ「Ｃ」の値は１６１であり、１〜６番目のバイト数が減算されると減算用カウンタは０以下となって、ステップＳ８０８に進むため、６番目のフラグが参照され、６番目のフラグは０であるので、Ｃ番目の単位領域、すなわち、現在加算しようとしているアドレスの単位領域から値が読み出されて「ＳＵＭ」に加算される。カウンタ「Ｃ」の値が１６０〜６３までは、同様である。一方、カウンタ「Ｃ」の値が６２の場合、１〜５番目のバイト数が減算されると減算用カウンタは０以下となって、ステップＳ８０８に進むため、５番目のフラグが参照され、５番目のフラグは１であるので、Ｃ番目の単位領域からは値は読み出されない。カウンタ「Ｃ」の値が６１〜５９までは、同様である。メイン制御基板２０は、ステップＳ８１０でカウンタ「Ｃ」から１減算し、カウンタ「Ｃ」の値が０か否かを判定して（Ｓ８１１）、０でなければステップＳ８０３に戻って、以下、「Ｃ」の値が０になるまで、ステップＳ８０３以降の処理を繰り返す。そして、「Ｃ」の値が０になれば、処理を終える。この処理を終えたときに、レジスタ「ＳＵＭ」には、作業領域１００中のチェックサム格納領域を除く使用領域１０１内の各単位領域の値を加算したチェックサムが生成されているが、このチェックサムには中間未使用領域１０２内の値は加算されていない。
【００５６】
以上のように、第３実施形態のパチンコ遊技機では、範囲テーブルを参照して、作業領域１００中の各単位領域がチェックサムの生成に使用されるもの（すなわち、加算領域に属する）か否かを判定することにより、作業領域１００中の中間未使用領域１０２からは情報を読み出さずに、使用領域１０１からのみ（さらにいえば、チェックサム格納領域を除く使用領域１０１からのみ）情報を読み出して、チェックサムを算出可能である。また、第３実施形態のパチンコ遊技機では、範囲テーブルに加算領域と非加算領域のバイト数とフラグとを持つだけであるので、テーブルサイズが小さくて済む。
【００５７】
〈第４実施形態〉次に、第４実施形態について説明する。第４実施形態は、第１実施形態とチェックサム生成処理が異なるのみであるので、第４実施形態のチェックサム生成処理について図１６、１７に基づいて説明し、第１実施形態と同様の部分は説明を省略する。第４実施形態のパチンコ遊技機は、判別情報記憶部に相当する図１６に示すような使用状態テーブルを、データ領域２８ｂに有している。使用状態テーブルには、ＲＡＭ２９の領域全体（５１２バイト）の各単位領域（１バイトずつの領域）について、チェックサムの生成に使用されるものか否かを示す情報が１バイトのフラグで格納され、フラグ＝０はチェックサムの生成に使用され（すなわち、加算とされ）、フラグ＝１はチェックサムの生成に使用されない（すなわち、非加算とされる）ことを示す。すなわち、使用状態テーブルは５１２バイトのテーブルであり、使用状態テーブルのｎ番目のバイトに格納されているフラグは、ＲＡＭ２９のｎ番目の単位領域がチェックサムの生成に使用されるものか否かを示している（但し、ｎ＝１〜５１２）。なお、ＲＡＭ２９の作業領域１００以外の領域（すなわち、未使用領域２００及びスタック領域３００）については、全てフラグは１とされる。使用状態テーブルは、判別可能情報として、チェックサムの生成に使用されない単位領域を示す情報及びチェックサムの生成に使用される単位領域の両方を記憶した判別情報記憶部といえる。
【００５８】
そして、メイン制御基板２０は、図１７に示すようなチェックサム生成ルーチンに従って、チェックサムを生成する。まず、メイン制御基板２０は、チェックサムを生成するためのレジスタ「ＳＵＭ」をゼロクリアし（ステップＳ９０１）、ＲＡＭ２９中の単位領域を数えるためのカウンタ「Ｃ」に、ＲＡＭ２９全体のバイト数（単位領域数）「５１２」を入れる（Ｓ９０２）。
【００５９】
次に、メイン制御基板２０は、使用状態テーブルのＣ番目（Ｃ：カウンタ「Ｃ」の値）のフラグが０か否かを判定し（Ｓ９０３）、０であれば、現在加算しようとしているアドレスの単位領域（すなわち、ＲＡＭ２９中のＣ番目の単位領域）から値を読み出して「ＳＵＭ」に加算して（Ｓ９０４）、ステップＳ９０５に進む。現在加算しようとしているアドレスは、作業領域１００の先頭アドレス２８００Ｈにカウンタ「Ｃ」の値を加算し、１を減算することで算出できる。一方、Ｃ番目のフラグが０でなければ、ＲＡＭ２９中のＣ番目の単位領域からの値の読出しは行わず、ステップＳ９０５に進む。最初、カウンタ「Ｃ」の値は５１２であり、使用状態テーブルの５１２番目のフラグが参照され、５１２番目のフラグは１であるので、現在加算しようとしているアドレスの単位領域からは値は読み出されない。カウンタ「Ｃ」の値が５１１〜１６２までは、同様である。一方、カウンタ「Ｃ」の値が１６１となった場合、１６１番目のフラグが参照され、１６１番目のフラグは０であるので、現在加算しようとしているアドレスの単位領域から値が読み出されて「ＳＵＭ」に加算される。カウンタ「Ｃ」の値が１６０〜６３までは、同様である。メイン制御基板２０は、ステップＳ９０５でカウンタ「Ｃ」から１減算し、カウンタ「Ｃ」の値が０か否かを判定して（Ｓ９０６）、０でなければステップＳ９０３に戻って、以下、「Ｃ」の値が０になるまで、ステップＳ９０３以降の処理を繰り返す。そして、「Ｃ」の値が０になれば、処理を終える。この処理を終えたときに、レジスタ「ＳＵＭ」には、作業領域１００中のチェックサム格納領域を除く使用領域１０１内の各単位領域の値を加算したチェックサムが生成されているが、このチェックサムには中間未使用領域１０２、未使用領域２００、及び、スタック領域３００内の値は加算されていない。
【００６０】
以上のように、第４実施形態のパチンコ遊技機では、使用状態テーブルを参照して、ＲＡＭ２９中の各単位領域がチェックサムの生成に使用されるものか否かを判定することにより、中間未使用領域１０２からは情報を読み出さずに、使用領域１０１からのみ（さらにいえば、チェックサム格納領域を除く使用領域１０１からのみ）情報を読み出して、チェックサムを算出可能である。また、第４実施形態のパチンコ遊技機は、チェックサム生成ルーチンが簡単であり、制御が容易である。
【００６１】
〈第５実施形態〉次に、第５実施形態について説明する。第５実施形態は、第１実施形態とチェックサム生成処理が異なるのみであるので、第５実施形態のチェックサム生成処理について図１６、１８に基づいて説明し、第１実施形態と同様の部分は説明を省略する。第５実施形態のパチンコ遊技機は、判別情報記憶部に相当する図１６に示すような使用状態テーブルを、データ領域２８ｂに有している。但し、第４実施形態の使用状態テーブルと異なり、第５実施形態の使用状態テーブルには、ＲＡＭ２９の領域全体（５１２バイト）の各単位領域（１バイトずつの領域）について、チェックサムの生成に使用されるものか否かを示す情報が１ビットの値で格納され、ビットが０であれば使用され（すなわち、加算とされ）、ビットが１であれば使用されない（すなわち、非加算とされる）ことを示す。すなわち、第４実施形態の使用状態テーブルは６４バイト（＝５１２ビット）のテーブルであり、使用状態テーブルのｎ番目のビットに格納されている値は、ＲＡＭ２９のｎ番目の単位領域がチェックサムの生成に使用されるものか否かを示している（但し、ｎ＝１〜５１２）。なお、ＲＡＭ２９の作業領域１００以外の領域（すなわち、未使用領域２００及びスタック領域３００）については、全てビットは１とされる。
【００６２】
そして、メイン制御基板２０は、図１８に示すようなチェックサム生成ルーチンに従って、チェックサムを生成する。図１８のチェックサム生成ルーチンは、ＲＡＭ２９の最初の単位領域から１バイトずつ順に、各単位領域がチェックサムの生成に使用されるものか否かを判断しつつ、チェックサムの生成に使用されるものであるときのみ、その単位領域からデータを読み出して、チェックサムを生成するためのレジスタに加算するものである。まず、メイン制御基板２０は、チェックサムを生成するためのレジスタ「ＳＵＭ」をゼロクリアし（ステップＳ１００１）、ＲＡＭ２９中の単位領域を数えるためのカウンタ「Ｃ」に、０を入れ（Ｓ１００２）、使用状態テーブル中の各単位領域（バイト）を全て作業領域１００に読み出し（Ｓ１００３）、作業領域１００に読み出した使用状態テーブル中のバイトを数えるためのカウンタ「Ｎ」に０を入れる（Ｓ１００４）。
【００６３】
次に、メイン制御基板２０は、カウンタ「Ｎ」に１を加算し（Ｓ１００５）、ビットシフトの回数を数えるためのシフトカウンタに０を入れる（Ｓ１００６）。そして、カウンタ「Ｃ」に１を加算するとともに（Ｓ１００７）、シフトカウンタの値に１を加算して（Ｓ１００８）、作業領域１００に読み出されている使用状態テーブルのＮ番目（Ｎ：カウンタ「Ｎ」の値）の１バイトを、１ビット左にシフトさせて、先頭の１ビットを取り出す（Ｓ１００９）。メイン制御基板２０は、取り出したビットが０か否かを判定し（Ｓ１０１０）、０であれば、現在加算しようとしているアドレスから値を読み出して「ＳＵＭ」に加算して（Ｓ１０１１）、ステップＳ１０１２に進む。現在加算しようとしているアドレスは、作業領域１００の先頭アドレス２８００Ｈにカウンタ「Ｃ」の値を加算し、１を減算することで算出できる。一方、取り出したビットが０でなければステップＳ１０１１は行わず、ステップＳ１０１２に進む。
【００６４】
ステップＳ１０１２では、メイン制御基板２０は、シフトカウンタの値が８か否かを判定し、８でなければ、ステップＳ１００７に戻って、８になるまでステップＳ１００７〜１０１１の処理を繰り返す。メイン制御基板２０は、ステップＳ１０１２でシフトカウンタの値が８であると判定すると、カウンタ「Ｃ」の値がＲＡＭ２９全体のバイト数「５１２」に等しいか否かを判定し（Ｓ１０１３）、等しくなければステップＳ１００５に戻る。すなわち、作業領域１００に読み出された使用状態テーブルのＮ番目のバイトについて、先頭のビットから順に０か否かを判定し、０であるときはＲＡＭ２９中の該当する単位領域から値を読み出して「ＳＵＭ」に加算する処理が行われる。そして、８ビット目までかかる処理が終了すると、「Ｎ」が１増加されて、作業領域１００に読み出された使用状態テーブル中の次の１バイトについて処理が行われることとなる。一方、ステップＳ１０１３で、カウンタ「Ｃ」の値＝５１２と判定すれば、処理を終える。
【００６５】
以上のようにして、第５実施形態のパチンコ遊技機では、使用状態テーブルを参照して、ＲＡＭ２９中の各単位領域がチェックサムの生成に使用されるものか否かを判定することにより、中間未使用領域１０２からは情報を読み出さずに、使用領域１０１からのみ（さらにいえば、チェックサム格納領域を除く使用領域１０１からのみ）情報を読み出して、チェックサムを算出可能である。また、第５実施形態のパチンコ遊技機は、チェックサムの生成に使用されるものか否かを示す情報を１ビットで持っているので、使用状態テーブルのサイズが小さくて済む。
【００６６】
〈変形例〉以下、変形例について説明する。
【００６７】
上記各実施形態では、チェックサム格納領域を除く使用領域１０１内の単位領域は、全てチェックサムの生成に使用するものとしたが、チェックサム格納領域を除く使用領域１０１内の単位領域のうち、一部のみをチェックサムの生成に使用するものとしてもよい。すなわち、チェックサム格納領域以外にも、使用領域１０１の中にチェックサムの生成に使用されない領域（チェックサムの生成の際には値が読み出されない領域）を設けることとしてもよい。逆に、チェックサム格納領域を、チェックサムの生成に使用することも可能である。照合時にチェックサム格納領域の値も加算されていることを考慮すればよいからである。要するに、未使用領域１０２に格納されている情報を読み出すことがなければ、使用領域１０１に格納されている情報の一部または全部に基づいてチェックサムを生成すればよい。
【００６８】
また、第１〜４実施形態において、作業領域１００の最後の単位領域（バイト、アドレス）からアドレスの小さくなる方に遡って処理を行うのではなく、最初のバイトからアドレスの大きくなる方に順に処理を行うように構成してもよい。逆に、第５実施形態において、作業領域１００の最後のバイトから遡って処理を行うように構成してもよい。
【００６９】
第１実施形態において、非加算領域名テーブルの代わりに、チェックサムの生成に使用される小領域の領域名を格納した加算領域名テーブルを備えることとして、現在加算しようとしているアドレスに対応する領域名が、加算領域名テーブルにあるときのみ、そのアドレスから値を読み出してチェックサム格納領域に加算するように構成してもよい。
【００７０】
第２実施形態において、区切りアドレステーブルの代わりに、加算領域または非加算領域の開始領域名と、加算か非加算かを示すフラグとを格納した区切り領域名テーブルを設けることとしてもよい。区切り領域名テーブルは、例えば、図１２において、アドレス２８Ａ０Ｈ、２８３ＤＨ、２８３９Ｈ、２８２９Ｈ、２８１ＦＨ、２８０１Ｈの代わりに、それぞれ、領域名「ＤＴ９９」、「ＣＴ２０」、「ＣＴ１６」、「ＣＭ４０」、「ＣＭ３０」、「ＣＨＫＳＵＭ」を格納したものとなる。図９に示すアドレス・領域名対応テーブルを参照すれば、アドレスから領域名が分かるので、図１３のステップＳ７０６において、アドレスカウンタ「Ａ」が示すアドレスを領域名に置換して、その領域名が区切り領域名テーブルのＢ番目に指定した領域名か否かを判定すればよい。
【００７１】
第４、５実施形態において、作業領域１００についてのみ、各単位領域がチェックサムの生成に使用されるものか否かの情報を、使用状態テーブルに持つように構成してもよい。テーブルサイズを縮減できるからである。かかる場合、第４実施形態の使用状態テーブルの大きさは１６１バイトとなるので、図１７のステップＳ９０２において「Ｃ」に１６１を初期設定すればよい。また、第５実施形態の使用状態テーブルの大きさは、１６１ビットを格納可能な最小のバイト数である２１バイトとして、作業領域１００中の単位領域に対応しない７ビット（第５実施形態のように作業領域１００の先頭のバイトから処理を進める場合には、使用状態テーブルの最後の７ビット）には、１を入れる。そして、図１８のステップＳ１０１３において、「Ｃ」が１６１以上かを判定するようにすればよい。
【符号の説明】
【００７２】
２０…メイン制御基板（主制御部）
２９…ＲＡＭ（記憶部）
１００…作業領域
１０１、１０１ａ、１０１ｂ、１０１ｃ…使用領域
１０２、１０２ａ、１０２ｂ…中間未使用領域
【図１】
0005285720.tif 000002
【図２】
0005285720.tif 000003
【図３】
0005285720.tif 000004
【図４】
0005285720.tif 000005
【図５】
0005285720.tif 000006
【図６】
0005285720.tif 000007
【図７】
0005285720.tif 000008
【図８】
0005285720.tif 000009
【図９】
0005285720.tif 000010
【図１０】
0005285720.tif 000011
【図１１】
0005285720.tif 000012
【図１２】
0005285720.tif 000013
【図１３】
0005285720.tif 000014
【図１４】
0005285720.tif 000015
【図１５】
0005285720.tif 000016
【図１６】
0005285720.tif 000017
【図１７】
0005285720.tif 000018
【図１８】
0005285720.tif 000019