ドラゴンクエスト3解析

経験値の解析。たぶん端数を含めて完全に説明できそうなんだけど、理解不十分と時間不足によりちょっと論理的説明は無理そう。なのでメモレベルで晒すことにします。

81 88 84 1C FF	;勇者
02 88 85 9C FF	;魔法使い
02 88 86 9A 7F	;僧侶
82 08 86 19 7F	;賢者
02 88 88 16 7F	;戦士
02 88 07 99 7F	;商人
82 08 05 9B 7F	;武闘家
02 88 08 98 FF	;遊び人

最上位bitから基準値(B)を、下位7bitを順に足していって公比が切り替わる(という表現でいいのか……?)レベルを取得。例えば勇者の場合、B=29、レベルは1,9,13,41。現在のレベルから次のレベルになるのに必要な経験値をN、その合計をE、あと、なんと呼んでいいのかわからないが、Nを求めるための値をA(初期値は16)とする。1ループごとの処理は以下のとおり。レベル(L)の初期値は1。公比(R)は32,24,20,18,16。

  1. N=A*B/16
  2. E=E+N
  3. A=A*R/16
  4. (Lが一定に達していれば、Rを一つ進める)
  5. L=L+1

……うーむ。とりあえず、勇者の例を示しておきます。

 L    A    A* B/16=N        E  R    A* R/16=A
 1   16   16*29/16=29      29 32   16*32/16=32 (L=1なので、Rを変更(24))
 2   32   32*29/16=58      87 24   32*24/16=48
 3   48   48*29/16=87     174 24   48*24/16=72
 4   72   72*29/16=130    304 24   72*24/16=108
 5  108  108*29/16=195    499 24  108*24/16=162
 6  162  162*29/16=293    792 24  162*24/16=243
 7  243  243*29/16=440   1232 24  243*24/16=364
 8  364  364*29/16=659   1891 24  364*24/16=546
 9  546  546*29/16=989   2880 24  546*24/16=819 (L=9なので、Rを変更(20))
10  819  819*29/16=1484  4364 20  819*20/16=1023
11 1023 1023*29/16=1854  6218 20 1023*20/16=1278
12 1278 1278*29/16=2316  8534 20 1278*20/16=1597
13 1597 1597*29/16=2894 11428 20 1597*20/16=1996 (L=13なので、Rを変更(18))
14 1996 1996*29/16=3617 15045 18 1996*18/16=2245
15 2245 2245*29/16=4069 19114 18 2245*18/16=2525
16 2525 2525*29/16=4576 23690 18 2525*18/16=2840

以上。
http://f1.aaa.livedoor.jp/~braves/http://rabirion-web.hp.infoseek.co.jp/ を参考にしました。