メダロット

敵出現のアルゴリズムが気になったので調べてみました。

このゲームのエンカウント方式は、歩数エンカウント+乱数エンカウントの二段構えです。
歩数(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.ではアドレスが異なる可能性があります。(エンカウントプログラムは同じだと思いますが・・・。)