ドラゴンクエスト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。
- N=A*B/16
- E=E+N
- A=A*R/16
- (Lが一定に達していれば、Rを一つ進める)
- 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/ を参考にしました。