リノ【其の13】リール制御(機械的) | パチスロ解析日記

パチスロ解析日記

レトロパチスロ機の解析をメインに公開しています。素人が独学で覚えた知識を基に解析しているので、時には間違いもあることでしょう。気になる点があったらビシバシ指摘してください♪

リール制御についてお話しようと思いますが、プログラム上ではとにかく面倒なことをやっているので、それを説明しようとしたらなかなか簡単にはいきません。

リール制御といっても、ここでは出目やらリーチ目やらについて語るつもりはなく、今回は機械的な仕組みを突き詰めていこうかと。

 

そういうのに興味のない方はスルー推奨です。

 

 

それでは。

 

 

スタートレバーがオンになると全リールが順に始動し、段階的に速度を上げて最終的に割り込み400回で一周というスピードで回転します。

プログラムではいくつかのカウンタを用いて管理します。

 

a割り込みカウンタ

bリールカウンタ

cステップカウンタ

呼び名は便宜上。

 

ストップボタンが押されていない状態では、割り込みごとに「aをプラス1、bをプラス1、bが奇数になった時のみcをプラス1」という処理が行われています。

これを「ステップ進行」と呼ぶことにします。

各リールにはゼロセンサーが取り付けられており、センサーが信号を感知したらcステップカウンタをゼロクリアします。

 

リール制御のほとんどは割り込みで処理されますが、ストップボタンのオン信号はメインプログラムで受け取ります。

有効な状態でストップボタンがオンになったら、a割り込みカウンタをゼロクリアします。

そして然るべきタイミングで最大すべりコマ数を確定させます。

 

割り込み400回でリールが一周するので、ステップ数は200です。

ステップ番号を00(0)からC7(199)と番号付けしますが、そのうちの決まった21個を基準位置と呼びます。

これはステップ番号の8個おきあるいは9個おきに配置されていて、絵柄番号と紐付けされます。

基準位置の詳細は表の通り。

最大すべりコマ数の確定は、基準位置で行います。

ストップボタンの入力信号がオンになった時に基準位置にいることもあるでしょうが、そうでないときは割り込みごとにステップ進行を繰り返します。

 

基準位置では、最大すべりコマ数が確定していない時に1度だけ、以下のような演算を行います。

 

・4つ上の基準位置のステップ番号から現在のステップ番号をマイナスする。

・2E(46)から上の結果をマイナスする。

・上の結果を2倍してプラス1。

・上の結果からa割り込みカウンタの値をマイナスする。

・上の結果が負なら最大すべりコマ数を3に、結果が0以上なら最大すべりコマ数を4にする。

 

ストップ信号オン → 基準位置までステップ進行 → 基準位置到達 → 最大すべりコマ数確定処理 → 有効ラインの絵柄チェックその1 → 有効ラインの絵柄チェックその2

 

流れとしてはこんな感じです。

最大すべりコマ数の確定処理を終えたら引き続き同じ割り込みで有効ラインの絵柄チェックその1を行います。

 

ここで言う有効ラインとは、1ベットなら中段のみ、2ベットなら中段に加えて下段と上段も。3ベット以上は、上中下段に加えて右上がりと右下がりの5ラインです。

 

ここでチェックするのは、第1停止リールの場合はライン上にどの絵柄が出るか。

第2リールの場合は、ライン上にどの絵柄がテンパイしているか、もしくは何もテンパイしないか。

第3リールの場合は、ライン上にどの絵柄が揃っているか、もしくは何も揃っていないか。

また、それぞれの停止回において、リーチ目となる「7」「ドル袋」「コイン」のハサミ目になるかならないかもチェックしています。

これは非常にざっくりとした説明で、実際には成立フラグを見たり禁則処理の確認なんかをしたりもします。

 

有効ラインの絵柄チェックはその1とその2に分けて行われます。

その1では+0コマの場合と+1コマの場合について、その2では+2コマの場合と+3コマの場合についてチェックします。

最大すべりコマ数が4コマの時にはその2で+4コマの場合もチェックします。

 

最大すべりコマ数の確定後にチェックその1を行い、次の割り込みでチェックその2を終えたらa割り込みカウンタをゼロクリア。その次の割り込みで停止位置(すべりコマ数)を決めます。

すべりコマ数別の絵柄チェックを元に成立フラグに応じてリールの停止位置を決め、停止処理を行うのです。

ここで1つ新たなカウンタを用意します。

dスローダウンカウンタ

 

+0コマで停止に決まった時は以下のように進めます。

a割り込みカウンタをプラス1。奇数になったらリール制御処理を終了。偶数になった時のみステップ進行を行います。

リール回転中は割り込みのたびにステップ進行を行っていたので、要はリールの回転スピードが半分になるわけです。

ステップ進行の後にdスローダウンカウンタをプラス1。

割り込みを繰り返してdが3になったところで処理中のリールが完全に停止します。

基準位置での最大すべりコマ数の確定時を1回目として、割り込み8回、ステップが2つ進んだところでリールが停止するのです。

 

+1コマ以上のすべりで停止に決まった時は、そのすべりコマ数の分だけ先にある基準位置(X)に到達するまでステップ進行のみを行います。

基準位置に達したら以下のように進めます。

a割り込みカウンタをプラス1。奇数になったらリール制御処理を終了。偶数になった時のみステップ進行を行います。

ステップ進行の後にdスローダウンカウンタをプラス1。

割り込みを繰り返してdが4になったら処理中のリールが完全に停止します。

基準位置(X)に達した時を1回目として、割り込み8回、ステップが2つ進んだところでリールが停止するのです。

 

 

 

今回の結論は、

 

最終的な停止位置は基準位置からステップ2つ進んだところ

 

ということです。

 

 

 

【其の14に続く】