DQ8 (3DS) > 確率

乱数

Lagged Fibonacci 法を用いており、内部状態は X_n := (X_{n-24} + X_{n-55}) mod 2^{32} によって更新されます。
乱数 0〜(M-1) は (X_n mod 2^31) mod M によって計算されます。

内部状態の初期化(以下のコード参照)は、起動時や青宝箱を開けた際などに行われるようです。
def init(seed):
    x = seed
    state = [0] * 55
    for i in range(54, -1, -1):
        state[i] = (x + (x >> 16)) & 0xffffffff
        x = (x * 0x10dcd + 0x66d619e1) & 0xffffffff
    index = 0 # 位置
 

ソース

+ ...
;---------------------------------------------------
; r0 ← (31-bit 乱数値)
;---------------------------------------------------
102a08:   b430        push    {r4, r5}
102a0a:   490c        ldr r1, [pc, #48]   ; (0x102a3c)
102a0c:   680c        ldr r4, [r1, #0]
102a0e:   684a        ldr r2, [r1, #4]
 
102a10:   6823        ldr r3, [r4, #0]
102a12:   6810        ldr r0, [r2, #0]
102a14:   18c0        adds    r0, r0, r3
102a16:   6010        str r0, [r2, #0]
 
102a18:   1d24        adds    r4, r4, #4
102a1a:   1d12        adds    r2, r2, #4
102a1c:   428c        cmp r4, r1
102a1e:   d207        bcs.n   0x102a30
 
102a20:   428a        cmp r2, r1
102a22:   d208        bcs.n   0x102a36
 
102a24:   600c        str r4, [r1, #0]
102a26:   604a        str r2, [r1, #4]
102a28:   bc30        pop {r4, r5}
102a2a:   0040        lsls    r0, r0, #1
102a2c:   0840        lsrs    r0, r0, #1  ; r0 &= 0x7fffffff
102a2e:   4770        bx  lr
 
102a30:   000c        movs    r4, r1
102a32:   3cdc        subs    r4, #220    ; 0xdc
102a34:   e7f6        b.n 0x102a24
 
102a36:   000a        movs    r2, r1
102a38:   3adc        subs    r2, #220    ; 0xdc
102a3a:   e7f3        b.n 0x102a24
 
102a3c:   00603a18
 
;-----------------------------------------------
; 内部状態の初期化 
;-----------------------------------------------
1002ac:   e28fc001    add ip, pc, #1
1002b0:   e12fff1c    bx  ip
 
1002b4:   4a0b        ldr r2, [pc, #44]   ; (0x1002e4)
1002b6:   b530        push    {r4, r5, lr}
1002b8:   0011        movs    r1, r2
1002ba:   3160        adds    r1, #96 ; 0x60
1002bc:   000b        movs    r3, r1
1002be:   3bdc        subs    r3, #220    ; 0xdc
1002c0:   c10c        stmia   r1!, {r2, r3}
1002c2:   4c09        ldr r4, [pc, #36]   ; (0x1002e8)
1002c4:   2137        movs    r1, #55 ; 0x37
1002c6:   e006        b.n 0x1002d6
;
1002c8:   0c02        lsrs    r2, r0, #16
1002ca:   008d        lsls    r5, r1, #2
1002cc:   1812        adds    r2, r2, r0
1002ce:   515a        str r2, [r3, r5]
1002d0:   4a06        ldr r2, [pc, #24]   ; (0x1002ec)
1002d2:   4350        muls    r0, r2
1002d4:   1900        adds    r0, r0, r4
;
1002d6:   000a        movs    r2, r1
1002d8:   1e49        subs    r1, r1, #1
1002da:   2a00        cmp r2, #0
1002dc:   dcf4        bgt.n   0x1002c8
;
1002de:   bd30        pop {r4, r5, pc}
;
1002e0:   e7e72001
1002e4:   006039b8
1002e8:   66d619e1
1002ec:   00010dcd
 
;---------------------------------------------------
; r0 ← 乱数 r0〜r1
;---------------------------------------------------
1adb0c:   e92d4010    push    {r4, lr}
1adb10:   e1500001    cmp r0, r1
1adb14:   e1a04000    mov r4, r0
1adb18:   c1a04001    movgt   r4, r1
1adb1c:   c1a01000    movgt   r1, r0
 
1adb20:   e0410004    sub r0, r1, r4
1adb24:   e2900001    adds    r0, r0, #1
1adb28:   1b0866c6    blne    0x3c7648
1adb2c:   e0800004    add r0, r0, r4
1adb30:   e8bd8010    pop {r4, pc}
 
;---------------------------------------------------
; s0 ← 乱数 [s16, s17) (or [s17, s16))
;---------------------------------------------------
1ae358:   e92d4010    push    {r4, lr}
1ae35c:   ed2d8b02    vpush   {d8}
1ae360:   eef08a60    vmov.f32    s17, s1
1ae364:   eeb08a40    vmov.f32    s16, s0
1ae368:   eeb48ae8    vcmpe.f32   s16, s17
1ae36c:   eef1fa10    vmrs    APSR_nzcv, fpscr
1ae370:   da000002    ble 0x1ae380
1ae374:   eeb00a48    vmov.f32    s0, s16
1ae378:   eeb08a68    vmov.f32    s16, s17
1ae37c:   eef08a40    vmov.f32    s17, s0
 
1ae380:   eb0864bb    bl  0x3c7674
1ae384:   ee780ac8    vsub.f32    s1, s17, s16
1ae388:   ee008a20    vmla.f32    s16, s0, s1
1ae38c:   eeb00a48    vmov.f32    s0, s16
1ae390:   ecbd8b02    vpop    {d8}
1ae394:   e8bd8010    pop {r4, pc}
 
;---------------------------------------------------
; r0 ← 乱数 0〜(r0-1)
;---------------------------------------------------
3c7648:   e92d4010    push    {r4, lr}
3c764c:   e1a04000    mov r4, r0
3c7650:   faf4ecec    blx 0x102a08
3c7654:   e59f2010    ldr r2, [pc, #16]   ; 0x3c766c
3c7658:   e1a01004    mov r1, r4
3c765c:   e5820000    str r0, [r2]
3c7660:   ebfce42c    bl  0x300718
3c7664:   e1a00001    mov r0, r1
3c7668:   e8bd8010    pop {r4, pc}
 
3c766c:   005b2e50 
 
;---------------------------------------------------
; s0 ← 乱数 [0.0, 1.0)
;---------------------------------------------------
3c7674:   e92d4010    push    {r4, lr}
3c7678:   faf4ece2    blx 0x102a08
3c767c:   ee000a10    vmov    s0, r0
3c7680:   eddf0a04    vldr    s1, [pc, #16]   ; 0x3c7698
3c7684:   e59f1010    ldr r1, [pc, #16]   ; 0x3c769c
3c7688:   eeb80ac0    vcvt.f32.s32    s0, s0
3c768c:   e5810000    str r0, [r1]
3c7690:   ee200a20    vmul.f32    s0, s0, s1
3c7694:   e8bd8010    pop {r4, pc}
 
3c7698:   30000000    ; 1. / 2^{31}
3c769c:   005b2e50    
 

ダメージ計算

条件 ダメージ
攻撃力 ≤ 守備力/2.0 の場合 乱数 0〜1
(攻撃力 - 守備力/2.0)/2.0 ≤ 攻撃力/16.0 の場合 乱数 0〜floor(攻撃力/16)
(それ以外の場合: D := (攻撃力 - 守備力/2.0)/2.0 とする) floor(D) + 乱数 -floor(D/16.0)〜floor(D/16.0) + 乱数 -1〜1
(ただし、最低値は 0 とする)

ソース

+ ...
;------------------------------------------------
; 乱数取得
;------------------------------------------------
1aefec:   e3520000    cmp r2, #0
1aeff0:   0a000005    beq 0x1af00c
1aeff4:   e3520001    cmp r2, #1
1aeff8:   0a000002    beq 0x1af008
1aeffc:   e3520002    cmp r2, #2
1af000:   01a00001    moveq   r0, r1
1af004:   13a00000    movne   r0, #0
;
1af008:   e12fff1e    bx  lr
1af00c:   eafffabe    b   0x1adb0c ; r0 ← 乱数 r0〜r1
 
;------------------------------------------------
; ダメージ計算
;------------------------------------------------
1af010:   ee000a10    vmov    s0, r0
1af014:   e92d4010    push    {r4, lr}
1af018:   eddf0a35    vldr    s1, [pc, #212]  ; 0x1af0f4 (0.0)
1af01c:   e1a04002    mov r4, r2
1af020:   ed2d8b02    vpush   {d8}
1af024:   eeb81ac0    vcvt.f32.s32    s2, s0
1af028:   ee001a10    vmov    s0, r1
1af02c:   eef81ac0    vcvt.f32.s32    s3, s0
1af030:   ed9f0a30    vldr    s0, [pc, #192]  ; 0x1af0f8 (0.5)
1af034:   ee011ac0    vmls.f32    s2, s3, s0
1af038:   ee218a00    vmul.f32    s16, s2, s0
1af03c:   eeb48ae0    vcmpe.f32   s16, s1
1af040:   eef1fa10    vmrs    APSR_nzcv, fpscr
1af044:   8a000003    bhi 0x1af058
;
; (攻撃 - 守備/2.0)/2.0 <= 0
;
1af048:   e3a01001    mov r1, #1
1af04c:   e3a00000    mov r0, #0
1af050:   ebffffe5    bl  0x1aefec            ; 乱数 0〜1
1af054:   ea000020    b   0x1af0dc
;
1af058:   ee000a10    vmov    s0, r0
1af05c:   eef80ac0    vcvt.f32.s32    s1, s0
1af060:   ed9f0a25    vldr    s0, [pc, #148]  ; 0x1af0fc (0.0625)
1af064:   ee600a80    vmul.f32    s1, s1, s0
1af068:   eef40ac8    vcmpe.f32   s1, s16
1af06c:   eef1fa10    vmrs    APSR_nzcv, fpscr
1af070:   ba000005    blt 0x1af08c
;
; (攻撃 - 守備/2.0)/2.0 <= (攻撃)/16.0
;
1af074:   e1a01fc0    asr r1, r0, #31
1af078:   e0800e21    add r0, r0, r1, lsr #28
1af07c:   e1a01240    asr r1, r0, #4
1af080:   e3a00000    mov r0, #0
1af084:   ebffffd8    bl  0x1aefec            ; 乱数 0〜floor(攻撃/16)
1af088:   ea000013    b   0x1af0dc
;
; (攻撃 - 守備/2.0)/2.0 > (攻撃)/16.0
;
1af08c:   ee280a00    vmul.f32    s0, s16, s0
1af090:   eebd0ac0    vcvt.s32.f32    s0, s0
1af094:   ee101a10    vmov    r1, s0
1af098:   ed9f0a18    vldr    s0, [pc, #96]   ; 0x1af100 (-0.0625)
1af09c:   ee280a00    vmul.f32    s0, s16, s0
1af0a0:   eebd0ac0    vcvt.s32.f32    s0, s0
1af0a4:   ee100a10    vmov    r0, s0
1af0a8:   ebffffcf    bl  0x1aefec            ; 
 
1af0ac:   ee000a10    vmov    s0, r0
1af0b0:   e1a02004    mov r2, r4
1af0b4:   e3a01001    mov r1, #1
1af0b8:   e3e00000    mvn r0, #0
1af0bc:   eeb80ac0    vcvt.f32.s32    s0, s0
1af0c0:   ee308a08    vadd.f32    s16, s0, s16
1af0c4:   ebffffc8    bl  0x1aefec            ; 
 
1af0c8:   ee000a10    vmov    s0, r0
1af0cc:   eeb80ac0    vcvt.f32.s32    s0, s0
1af0d0:   ee380a00    vadd.f32    s0, s16, s0 ; D + (乱数 -floor(D/16)〜floor(D/16) ) + (乱数 -1〜1)
1af0d4:   eebd0ac0    vcvt.s32.f32    s0, s0  ; 
1af0d8:   ee100a10    vmov    r0, s0
 
1af0dc:   ecbd8b02    vpop    {d8}
1af0e0:   e3500000    cmp r0, #0
1af0e4:   b3a00000    movlt   r0, #0
1af0e8:   ee000a10    vmov    s0, r0
 
1af0ec:   eeb80ac0    vcvt.f32.s32    s0, s0
1af0f0:   e8bd8010    pop {r4, pc}
 
1af0f4:   00000000
1af0f8:   3f000000
1af0fc:   3d800000
1af100:   bd800000
 

行動順

行動順は floor((すばやさ) × (乱数 500〜1000)/1000) の大小によって決定されます。
補足: PS2 版は floor((すばやさ) × (乱数 50〜100)/100))

すばやさ依存のみかわし率

すばやさ依存のみかわし率は以下の値を基準として線形補間されます。
ただし、すばやさが 999 以上であった場合は 25% と設定されます。

すばやさ みかわし率
(float32 精度)
0 1.6 %
100 2.0 %
200 2.3 %
300 2.7 %
400 3.1 %
500 3.9 %
600 7.8 %
700 11.7 %
800 15.6 %
900 19.5 %
1000 25.0 %

補足: PS2 版では、以下の値を基準として計算されます。
すばやさ みかわし率
0 4.0/256.0
400 8.0/256.0
500 10.0/256.0
900 50.0/256.0
999 64.0/256.0

ドロップ確率

宝箱を落とす確率

モンスターは次の条件を満たした場合に宝箱を落とします:
  • (乱数 0〜999) < floor(1000 × (ドロップ確率(設定値)))
注意: 上式の関係で、実際のドロップ確率は設定値よりも低くなっている場合があります)

ドロップ判定はアイテム #2(レアアイテム相当), アイテム #1 の順で行われます。
確率設定値 ドロップ確率
(設定値)
実際のドロップ確率
0 0 0
1 1/256 約 3/1000
2 1/128 約 7/1000
3 1/64 約 15/1000
4 1/32 約 31/1000
5 1/16 約 62/1000
6 1/8 約 1/8
7 1/4 約 1/4
8 1/2 約 1/2
9 1 1

ソース

+ ...
...
419344:   cd9f9a7e    vldrgt  s18, [pc, #504] ; 0x419544 (1000.0)
...
 
4193a0:   e1a0000d    mov r0, sp
4193a4:   eb01f3f7    bl  0x496388             ; r0 ← アイテム #1 確率設定値
4193a8:   eb00c2fc    bl  0x449fa0             ; s0 ← アイテム #1 確率
4193ac:   ee608a08    vmul.f32    s17, s0, s16 ; s16: 入手確率倍率
                                               ; - オート盗む1/2: 0.5
                                               ; - オート盗む1/2 & キャプテンクロス: 0.75
                                               ; - 宝箱・オート盗む: 1.0
4193b0:   e1a0000d    mov r0, sp
4193b4:   eb01f3f0    bl  0x49637c             ; r0 ← アイテム #2 確率設定値
4193b8:   eb00c2f8    bl  0x449fa0             ; s0 ← アイテム #2 確率
4193bc:   ee200a08    vmul.f32    s0, s0, s16
 
4193c0:   ee680a89    vmul.f32    s1, s17, s18
4193c4:   e3570000    cmp r7, #0
4193c8:   11c700d0    ldrdne  r0, [r7]
4193cc:   e3a03001    mov r3, #1
4193d0:   11500001    cmpne   r0, r1
4193d4:   11d420b0    ldrhne  r2, [r4]
 
4193d8:   ee200a09    vmul.f32    s0, s0, s18
4193dc:   eefd0ae0    vcvt.s32.f32    s1, s1   ; s1 ← floor(1000 × (ドロップ確率 #1))
4193e0:   eebd0ac0    vcvt.s32.f32    s0, s0   ; s0 ← floor(1000 × (ドロップ確率 #2))
4193e4:   ee109a90    vmov    r9, s1
4193e8:   ee108a10    vmov    r8, s0
4193ec:   0a00000b    beq 0x419420
 
...
 
419420:   e3a00ffa    mov r0, #1000
419424:   ebf646ac    bl  0x1aaedc             ; r0 ← 乱数 0〜999
419428:   e58d0008    str r0, [sp, #8]
 
...
 
419458:   e59d0008    ldr r0, [sp, #8]
41945c:   e1500008    cmp r0, r8
419460:   aa000020    bge 0x4194e8
 
...
 
 
4194e8:   e3a00ffa    mov r0, #1000 
4194ec:   ebf6467a    bl  0x1aaedc             ; r0 ← 乱数 0〜999
 
4194f0:   e1590000    cmp r9, r0
4194f4:   da00000c    ble 0x41952c
 
...
 
419544:   447a0000    
 
;-----------------------------------------
; r0 ← アイテム #2 確率設定値
;-----------------------------------------
49637c:   e5900000    ldr r0, [r0]
496380:   e5d00021    ldrb    r0, [r0, #33]   ; 0x21
496384:   e12fff1e    bx  lr
 
;-----------------------------------------
; r0 ← アイテム #1 確率設定値
;-----------------------------------------
496388:   e5900000    ldr r0, [r0]
49638c:   e5d00020    ldrb    r0, [r0, #32]
496390:   e12fff1e    bx  lr
 
;-----------------------------------------
; s0 ← ドロップ確率(設定値)
;-----------------------------------------
449fa0:   e59f1008    ldr r1, [pc, #8]    ; 0x449fb0
449fa4:   e0810100    add r0, r1, r0, lsl #2
449fa8:   ed900a00    vldr    s0, [r0]
449fac:   e12fff1e    bx  lr
 
449fb0:   005243f8
 

おどかした際のドロップ確率

確率設定値 ドロップ確率
(設定値)
ドロップ確率
(おどかす)
0 0 0
1 1/256 約 1/1000
2 1/128 約 3/1000
3 1/64 約 7/1000
4 1/32 約 15/1000
5 1/16 約 31/1000
6 1/8 約 62/1000
7 1/4 約 1/8
8 1/2 約 1/4
9 1 約 1/2

ソース

+ ...
; おどかす
...
40a0c4:   e5d46001    ldrb    r6, [r4, #1]
40a0c8:   ed9f8ac6    vldr    s16, [pc, #792] ; 0x40a3e8 (0x3f000000: 0.5): 倍率
40a0cc:   e1a0000a    mov r0, sl
40a0d0:   e1a01006    mov r1, r6
40a0d4:   eb01fbd4    bl  0x48902c
40a0d8:   e3500000    cmp r0, #0
40a0dc:   1a00001d    bne 0x40a158
 
40a0e0:   e1a02006    mov r2, r6
40a0e4:   e1a0100a    mov r1, sl
40a0e8:   e1a0000d    mov r0, sp
40a0ec:   eb01fb2b    bl  0x488da0
 
40a0f0:   e3a00ffa    mov r0, #1000   ; 0x3e8
40a0f4:   ebf68378    bl  0x1aaedc ; r0 ← 乱数 0〜999
40a0f8:   e1a06000    mov r6, r0
 
40a0fc:   e3a00ffa    mov r0, #1000   ; 0x3e8
40a100:   ebf68375    bl  0x1aaedc ; r0 ← 乱数 0〜999
40a104:   eeb00a48    vmov.f32    s0, s16
40a108:   e1a02000    mov r2, r0
40a10c:   e1a01006    mov r1, r6
40a110:   e1a0000d    mov r0, sp
40a114:   eb022fd0    bl  0x49605c    ; アイテム入手判定
...
 
 
;----------------------------------------------
; アイテム入手判定
;----------------------------------------------
49605c:   e92d0030    push    {r4, r5}
496060:   e5903000    ldr r3, [r0]
496064:   e59f505c    ldr r5, [pc, #92]   ; 0x4960c8
496068:   e1d341bc    ldrh    r4, [r3, #28]
49606c:   e1d301be    ldrh    r0, [r3, #30]
496070:   e5d3c020    ldrb    ip, [r3, #32]   ; 0x20 (アイテム #1 確率設定)
496074:   e5d33021    ldrb    r3, [r3, #33]   ; 0x21 (アイテム #2 確率設定)
496078:   e085c10c    add ip, r5, ip, lsl #2
49607c:   e0853103    add r3, r5, r3, lsl #2
496080:   eddc0a00    vldr    s1, [ip]        ; s1: アイテム #1 確率(設定値)
496084:   ed931a00    vldr    s2, [r3]        ; s2: アイテム #2 確率(設定値)
496088:   ee600a80    vmul.f32    s1, s1, s0
49608c:   ee210a00    vmul.f32    s0, s2, s0
496090:   ed9f1a0d    vldr    s2, [pc, #52]   ; 0x4960cc (0x447a0000: 1000.0)
496094:   ee600a81    vmul.f32    s1, s1, s2
496098:   ee200a01    vmul.f32    s0, s0, s2
49609c:   eefd0ae0    vcvt.s32.f32    s1, s1
4960a0:   eebd0ac0    vcvt.s32.f32    s0, s0
4960a4:   ee10ca90    vmov    ip, s1
4960a8:   ee103a10    vmov    r3, s0
4960ac:   e1520003    cmp r2, r3              ; (乱数値2) < (境界値2)
4960b0:   ba000002    blt 0x4960c0            
 
4960b4:   e151000c    cmp r1, ip              ; (乱数値1) < (境界値1)
4960b8:   b1a00004    movlt   r0, r4
4960bc:   a3a00000    movge   r0, #0
 
4960c0:   e8bd0030    pop {r4, r5}
4960c4:   e12fff1e    bx  lr
 
4960c8:   005243f8
4960cc:   447a0000 
 

「ぬすっと刈り」「大どろぼうのかま」

「ぬすっと刈り」は確率 1/4、「大どろぼうのかま」は確率 1/2 で上記のアイテム入手判定を行います。ただし、アイテム #1 を必ず落とす(確率設定値が 9 である)敵からは、アイテムを盗むことができません。
参考:「大どろぼうのかま」によって確率設定値 1 のアイテムを盗める確率は 1/512 ではなく約 3/2000 です)

ソース

+ ...
;
; ぬすっと刈り
;
...
3fffb8:   eef00a4b    vmov.f32    s1, s22
3fffbc:   eeb00a4a    vmov.f32    s0, s20
3fffc0:   ebf6b8e4    bl  0x1ae358
3fffc4:   ee100a10    vmov    r0, s0
3fffc8:   e35005fa    cmp r0, #1048576000 ; 0x3e800000
3fffcc:   aa0017c3    bge 0x405ee0
3fffd0:   ea000021    b   0x40005c
 
; 
; 大どろぼうのかま
;
...
400044:   eef00a4b    vmov.f32    s1, s22
400048:   eeb00a4a    vmov.f32    s0, s20
40004c:   ebf6b8c1    bl  0x1ae358
400050:   ee100a10    vmov    r0, s0
400054:   e350043f    cmp r0, #1056964608 ; 0x3f000000
400058:   aa0017a0    bge 0x405ee0
 
40005c:   e59d10f0    ldr r1, [sp, #240]  ; 0xf0
400060:   e1a03004    mov r3, r4
400064:   e1a0200a    mov r2, sl
400068:   e1a00008    mov r0, r8
40006c:   eb002572    bl  0x40963c
400070:   ea00179a    b   0x405ee0
 
;----------------------------------------------
; 「ぬすっと刈り」処理
;----------------------------------------------
...
4096a4:   e1a0000d    mov r0, sp
4096a8:   eb023345    bl  0x4963c4
4096ac:   e3500000    cmp r0, #0
4096b0:   0a000024    beq 0x409748 ; アイテム #1 を 100% 落とす場合
...
4096c0:   ed9f8a26    vldr    s16, [pc, #152] ; 0x409760 (0x3f800000: 1.0)
...
4096e8:   e3a00ffa    mov r0, #1000   ; 0x3e8
4096ec:   ebf685fa    bl  0x1aaedc ; r0 ← 乱数 0〜999
4096f0:   e1a06000    mov r6, r0
 
4096f4:   e3a00ffa    mov r0, #1000   ; 0x3e8
4096f8:   ebf685f7    bl  0x1aaedc ; r0 ← 乱数 0〜999
4096fc:   eeb00a48    vmov.f32    s0, s16
409700:   e1a02000    mov r2, r0
409704:   e1a01006    mov r1, r6
409708:   e28d0008    add r0, sp, #8
40970c:   eb023252    bl  0x49605c
409710:   e3500000    cmp r0, #0
...
 
;----------------------------------------------
; アイテム #1 を必ず落とす場合 r0 ← 0
;----------------------------------------------
4963c4:   e5900000    ldr r0, [r0]
4963c8:   e5d00020    ldrb    r0, [r0, #32]
4963cc:   e3500009    cmp r0, #9
4963d0:   13a00001    movne   r0, #1
4963d4:   03a00000    moveq   r0, #0
4963d8:   e12fff1e    bx  lr
 
;----------------------------------------------
; アイテム入手判定
;----------------------------------------------
49605c:   e92d0030    push    {r4, r5}
496060:   e5903000    ldr r3, [r0]
496064:   e59f505c    ldr r5, [pc, #92]   ; 0x4960c8
496068:   e1d341bc    ldrh    r4, [r3, #28]
49606c:   e1d301be    ldrh    r0, [r3, #30]
496070:   e5d3c020    ldrb    ip, [r3, #32]   ; 0x20 (アイテム #1 確率設定)
496074:   e5d33021    ldrb    r3, [r3, #33]   ; 0x21 (アイテム #2 確率設定)
496078:   e085c10c    add ip, r5, ip, lsl #2
49607c:   e0853103    add r3, r5, r3, lsl #2
496080:   eddc0a00    vldr    s1, [ip]        ; s1: アイテム #1 確率(設定値)
496084:   ed931a00    vldr    s2, [r3]        ; s2: アイテム #2 確率(設定値)
496088:   ee600a80    vmul.f32    s1, s1, s0
49608c:   ee210a00    vmul.f32    s0, s2, s0
496090:   ed9f1a0d    vldr    s2, [pc, #52]   ; 0x4960cc (0x447a0000: 1000.0)
496094:   ee600a81    vmul.f32    s1, s1, s2
496098:   ee200a01    vmul.f32    s0, s0, s2
49609c:   eefd0ae0    vcvt.s32.f32    s1, s1
4960a0:   eebd0ac0    vcvt.s32.f32    s0, s0
4960a4:   ee10ca90    vmov    ip, s1
4960a8:   ee103a10    vmov    r3, s0
4960ac:   e1520003    cmp r2, r3              ; (乱数値2) < (境界値2)
4960b0:   ba000002    blt 0x4960c0            
 
4960b4:   e151000c    cmp r1, ip              ; (乱数値1) < (境界値1)
4960b8:   b1a00004    movlt   r0, r4
4960bc:   a3a00000    movge   r0, #0
 
4960c0:   e8bd0030    pop {r4, r5}
4960c4:   e12fff1e    bx  lr
 
4960c8:   005243f8
4960cc:   447a0000 
 

「オート盗む」の確率

「オート盗む1/2」「オート盗む」によってアイテムを盗む確率は以下のとおりです。

補足:
  • 盗みの判定は、宝箱判定の後に行われます。
  • 「キャプテンクロス」は「オート盗む1/2」のみに影響があるようです。
確率設定値 ドロップ確率
(設定値)
盗み成功確率
(オート盗む1/2)
盗み成功確率
(オート盗む1/2 &
キャプテンクロス)
盗み成功確率
(オート盗む)
0 0 0 0 0
1 1/256 約 1/1000 約 2/1000 約 3/1000
2 1/128 約 3/1000 約 5/1000 約 7/1000
3 1/64 約 7/1000 約 11/1000 約 15/1000
4 1/32 約 15/1000 約 23/1000 約 31/1000
5 1/16 約 31/1000 約 46/1000 約 62/1000
6 1/8 約 62/1000 約 93/1000 約 1/8
7 1/4 約 1/8 約 187/1000 約 1/4
8 1/2 約 1/4 約 3/8 約 1/2
9 1 -- -- --

「ゴールドアップ」「超ゴールドアップ」

(乱数 0〜9999) < 1000 を満たした場合(確率約 10 %)、追加でゴールドを入手することができます。

ソース

+ ...
...
3f478c:   e59f003c    ldr r0, [pc, #60]   ; 0x3f47d0
3f4790:   ebf6d9d1    bl  0x1aaedc ; r0 ← 乱数 0〜9999
3f4794:   e3500ffa    cmp r0, #1000   ; 0x3e8
3f4798:   aa00000e    bge 0x3f47d8
...
 
3f47d0:   00002710
 

敵の行動選択率

行動パターンが 0〜3 に設定されているモンスターの、各行動の選択率は次のとおりです。
注意: 3DS 版では乱数 0〜255 ではなく、乱数 0〜256 によって行動が選択されるようです。
行動パターン 行動1 行動2 行動3 行動4 行動5 行動6
0 43/257 42/257 43/257 43/257 42/257 44/257
1 68/257 58/257 48/257 38/257 27/257 18/257
2 210/257 29/257 10/257 4/257 2/257 2/257
3 70/257 70/257 70/257 16/257 15/257 16/257

ソース

+ ...
;-----------------------------------------------------
; 行動 No. 取得
;-----------------------------------------------------
491770:   e92d4070    push    {r4, r5, r6, lr}
491774:   e3510001    cmp r1, #1
491778:   e3a04005    mov r4, #5      ; 乱数値が 256 であった場合の行動 No.
49177c:   0a00000f    beq 0x4917c0
491780:   e3510002    cmp r1, #2
491784:   0a00001b    beq 0x4917f8
491788:   e3510003    cmp r1, #3
49178c:   0a000027    beq 0x491830
 
; case 0x00:
 
491790:   e59f50e4    ldr r5, [pc, #228]  ; 0x49187c
491794:   e3a01c01    mov r1, #256    ; 0x100
491798:   e3a00000    mov r0, #0
49179c:   ebf470da    bl  0x1adb0c ; r0 ← 乱数 0〜256
 
4917a0:   e3a02000    mov r2, #0
4917a4:   e1a01002    mov r1, r2
4917a8:   e7d53001    ldrb    r3, [r5, r1]
4917ac:   e0822003    add r2, r2, r3
4917b0:   e1500002    cmp r0, r2
4917b4:   aa00002b    bge 0x491868
 
4917b8:   e1a00001    mov r0, r1
4917bc:   e8bd8070    pop {r4, r5, r6, pc}
 
; case 0x01:
 
4917c0:   e59f50b8    ldr r5, [pc, #184]  ; 0x491880
4917c4:   e3a01c01    mov r1, #256    ; 0x100
4917c8:   e3a00000    mov r0, #0
4917cc:   ebf470ce    bl  0x1adb0c ; r0 ← 乱数 0〜256
4917d0:   e3a02000    mov r2, #0
4917d4:   e1a01002    mov r1, r2
4917d8:   e7d53001    ldrb    r3, [r5, r1]
4917dc:   e0822003    add r2, r2, r3
4917e0:   e1500002    cmp r0, r2
4917e4:   bafffff3    blt 0x4917b8
4917e8:   e2811001    add r1, r1, #1
4917ec:   e3510006    cmp r1, #6
4917f0:   bafffff8    blt 0x4917d8
4917f4:   ea00001e    b   0x491874
 
; case 0x02:
 
4917f8:   e59f5084    ldr r5, [pc, #132]  ; 0x491884
4917fc:   e3a01c01    mov r1, #256    ; 0x100
491800:   e3a00000    mov r0, #0
491804:   ebf470c0    bl  0x1adb0c ; r0 ← 乱数 0〜256
491808:   e3a02000    mov r2, #0
49180c:   e1a01002    mov r1, r2
491810:   e7d53001    ldrb    r3, [r5, r1]
491814:   e0822003    add r2, r2, r3
491818:   e1500002    cmp r0, r2
49181c:   baffffe5    blt 0x4917b8
491820:   e2811001    add r1, r1, #1
491824:   e3510006    cmp r1, #6
491828:   bafffff8    blt 0x491810
49182c:   ea000010    b   0x491874
 
; case 0x03:
 
491830:   e59f5050    ldr r5, [pc, #80]   ; 0x491888
491834:   e3a01c01    mov r1, #256    ; 0x100
491838:   e3a00000    mov r0, #0
49183c:   ebf470b2    bl  0x1adb0c ; r0 ← 乱数 0〜256
491840:   e3a02000    mov r2, #0
491844:   e1a01002    mov r1, r2
491848:   e7d53001    ldrb    r3, [r5, r1]
49184c:   e0822003    add r2, r2, r3
491850:   e1500002    cmp r0, r2
491854:   baffffd7    blt 0x4917b8
 
491858:   e2811001    add r1, r1, #1
49185c:   e3510006    cmp r1, #6
491860:   bafffff8    blt 0x491848
491864:   ea000002    b   0x491874
 
491868:   e2811001    add r1, r1, #1
49186c:   e3510006    cmp r1, #6
491870:   baffffcc    blt 0x4917a8
 
491874:   e1a00004    mov r0, r4
491878:   e8bd8070    pop {r4, r5, r6, pc}
 
49187c:   0051832e
491880:   0051831c
491884:   00518322
491888:   00518328
 

装備 状態異常 命中率補正

No. アイテム ID アイテム名称 命中率補正 耐性 bits 対応する耐性
55 151 天使のローブ 50/100 0x000200 ザキ
59 208 黄金のティアラ 13/100 0x001b00 ラリホー, ザキ, マホトーン, メダパニ
60 212 竜神のかぶと 6/100 0x001b00 ラリホー, ザキ, マホトーン, メダパニ
61 213 太陽のかんむり 0/100 0x001100 ラリホー, メダパニ
62 214 メタルキングヘルム 25/100 0x001b00 ラリホー, ザキ, マホトーン, メダパニ
63 221 女神の指輪 33/100 0x011100 ラリホー, メダパニ, 麻痺
64 238 まよけの聖印 50/100 0x000200 ザキ
89 391 ゴシックミトラ 50/100 0x011300 ラリホー, ザキ, メダパニ, 麻痺
90 393 まじょっこハット 67/100 0x001100 ラリホー, メダパニ
91 194 キャプテンハット 67/100 0x011980 マヌーサ, ラリホー, マホトーン, メダパニ, 麻痺
99 400 クラシックブレザー 50/100 0x019380 マヌーサ, ラリホー, ザキ, メダパニ, 毒, 麻痺
101 402 バトラースーツ 50/100 0x031100 ラリホー, メダパニ, 麻痺, 休み

ザオラルの成功率

状況 確率
フィールド上 約 61 %
戦闘中 約 60 %

ソース

+ ...
;
; フィールド上
;
...
295c7c:   e3a00064    mov r0, #100    ; 0x64
295c80:   ebfc5495    bl  0x1aaedc ; r0 ← 乱数 0〜99
 
295c84:   e350003c    cmp r0, #60 ; 0x3c
295c88:   c3a06000    movgt   r6, #0 ; 乱数値が 61 以上の場合、復活しない
...
 
;
; 戦闘中
;
...
407ad0:   ed9f8ac5    vldr    s16, [pc, #788] ; 0x407dec
407ad4:   eddf0ac3    vldr    s1, [pc, #780]  ; 0x407de8
407ad8:   eeb00a48    vmov.f32    s0, s16
407adc:   ebf69a1d    bl  0x1ae358
407ae0:   edd70a01    vldr    s1, [r7, #4]
407ae4:   e3a0b000    mov fp, #0
407ae8:   eeb40ae0    vcmpe.f32   s0, s1
407aec:   eef1fa10    vmrs    APSR_nzcv, fpscr
...
 
407de8:   3f800000
407dec:   00000000
 
518004:   3f19999a
 

ポルトリンクの野草

注意: 3DS 版では乱数 0〜100 を取得しています。
乱数値 アイテム 確率
0〜1 上どくけし草 2/101
2〜4 上やくそう 3/101
5〜19 まんげつ草 15/101
20〜54 どくけし草 35/101
55〜100 やくそう 46/101
最終更新:2024年12月25日 20:24