メダロット
敵出現のアルゴリズムが気になったので調べてみました。
このゲームのエンカウント方式は、歩数エンカウント+乱数エンカウントの二段構えです。
歩数(C761H)は一歩歩くごとに+1され、48になるとエンカウントが発生します。C761H値は場所移動したりすると0にリセットされます。
また、(C5F0H)は乱数で、(C5F0H)を32で割った余りが31のときにエンカウントが発生します。
実際のプログラムは次のようになっています。
; ORG 6B5FH
LD A,(0C761H)
INC A
LD (0C761H),A
CP A,30H
JR Z,6B78H
SUB A,10H
RET C
CALL 162H
LD A,(0C5F0H)
AND A,1FH
CP A,1FH
REC NZ
; ORG 6B78H エンカウント発生
XOA A
LD (0C761H),A
歩数が16歩未満のときはエンカウントが発生しないようになっていますね。
つまり、エンカウントが発生するのは16歩以上48歩以下の間ということになります。
ちなみに、調べたのはクワガタver.なので、カブトver.ではアドレスが異なる可能性があります。(エンカウントプログラムは同じだと思いますが・・・。)