アットウィキロゴ

DQM ジョーカー3 プロ (3DS) > 確率

乱数生成

非戦闘時

(主に)Lagged Fibonacci を用いて乱数を生成しています。
乱数 0〜(n-1) は (31-bit 乱数値) mod n によって生成されます。

struct DQMJ3PRngF {
  DQMJ3PRngF(uint32_t seed) {
    uint32_t x = seed;
    for (int32_t i = 54; i >= 0; --i) {
      state[i] = x + (x >> 16);
      x = x * 0x10dcd + 0x66d619e1;
    }
    index = 0;
  }
  uint32_t next() {
    uint32_t x = state[index] + state[(index >= 24) ? index - 24 : index + 31];
    state[index++] = x;
    if (index >= 55) index = 0;
    return x & 0x7fffffff;
  }
  uint32_t range(uint32_t n) {
    return next() % n;
  }
  uint32_t state[55];
  uint32_t index;
};
 

ソース

+ ...
;-------------------------------------------------
; 初期化
;-------------------------------------------------
100668: e28fc001  add ip, pc, #1
10066c: e12fff1c  bx  ip
 
100670: 4a0b      ldr r2, [pc, #44] ; (0x1006a0)
100672: b530      push  {r4, r5, lr}
100674: 0011      movs  r1, r2
100676: 3160      adds  r1, #96 ; 0x60
100678: 000b      movs  r3, r1
10067a: 3bdc      subs  r3, #220  ; 0xdc
10067c: c10c      stmia r1!, {r2, r3}
10067e: 4c09      ldr r4, [pc, #36] ; (0x1006a4)
100680: 2137      movs  r1, #55 ; 0x37
100682: e006      b.n 0x100692
 
100684: 0c02      lsrs  r2, r0, #16
100686: 008d      lsls  r5, r1, #2
100688: 1812      adds  r2, r2, r0
10068a: 515a      str r2, [r3, r5]
10068c: 4a06      ldr r2, [pc, #24] ; (0x1006a8)
10068e: 4350      muls  r0, r2
100690: 1900      adds  r0, r0, r4
 
100692: 000a      movs  r2, r1
100694: 1e49      subs  r1, r1, #1
100696: 2a00      cmp r2, #0
100698: dcf4      bgt.n 0x100684
 
10069a: bd30      pop {r4, r5, pc}
10069c: 2001      movs  r0, #1
10069e: e7e7      b.n 0x100670
 
1006a0: 008f7ee8
1006a4: 66d619e1
1006a8: 00010dcd
 
;-------------------------------------------------
; 状態遷移
;-------------------------------------------------
10101c: b430      push  {r4, r5}
10101e: 490c      ldr r1, [pc, #48] ; (0x101050)
101020: 680c      ldr r4, [r1, #0]
101022: 684a      ldr r2, [r1, #4]
101024: 6823      ldr r3, [r4, #0]
101026: 6810      ldr r0, [r2, #0]
101028: 18c0      adds  r0, r0, r3
10102a: 6010      str r0, [r2, #0]
10102c: 1d24      adds  r4, r4, #4
10102e: 1d12      adds  r2, r2, #4
101030: 428c      cmp r4, r1
101032: d207      bcs.n 0x101044
101034: 428a      cmp r2, r1
101036: d208      bcs.n 0x10104a
101038: 600c      str r4, [r1, #0]
10103a: 604a      str r2, [r1, #4]
10103c: bc30      pop {r4, r5}
10103e: 0040      lsls  r0, r0, #1
101040: 0840      lsrs  r0, r0, #1
101042: 4770      bx  lr
 
101044: 000c      movs  r4, r1
101046: 3cdc      subs  r4, #220  ; 0xdc
101048: e7f6      b.n 0x101038
 
10104a: 000a      movs  r2, r1
10104c: 3adc      subs  r2, #220  ; 0xdc
10104e: e7f3      b.n 0x101038
101050: 008f7f48
 
;-------------------------------------------------
; r0 ← 乱数 0〜(r0-1)
;-------------------------------------------------
163868: e92d4010  push  {r4, lr}
16386c: e1a04000  mov r4, r0
163870: fafe75e9  blx 0x10101c ; r0 ← 乱数 0〜0x7fffffff
163874: e59f2010  ldr r2, [pc, #16] ; 0x16388c
163878: e1a01004  mov r1, r4
16387c: e5820000  str r0, [r2]
163880: eb0675bb  bl  0x300f74 ; r0, r1 ← divmod(r0, r1)
163884: e1a00001  mov r0, r1
163888: e8bd8010  pop {r4, pc}
16388c: 0089a4c8
 

戦闘時

(主に)Xorshift128 を用いて乱数を生成しています。
乱数 0〜(n-1) は (32-bit 乱数値) mod n によって生成されます。

struct DQMJ3PRngX {
  DQMJ3PRngX(uint32_t seed) {
    w = seed;
    for (uint32_t i = 0; i < 20; ++i) next();
  }
  uint32_t next() {
    uint32_t t = x ^ (x << 11);
    x = y;
    y = z;
    z = w;
    w = t ^ (t >> 8) ^ w ^ (w >> 19);
    return w;
  }
  uint32_t range(uint32_t n) {
    return next() % n;
  }
  uint32_t x = 0x075bcd15;
  uint32_t y = 0x159a55e5;
  uint32_t z = 0x1f123bb5;
  uint32_t w;
};
 

ソース

+ ...
;-------------------------------------------------
; 初期化
;-------------------------------------------------
10d9d4: e1a00000  nop     ; (mov r0, r0)
10d9d8: e92d0030  push  {r4, r5}
10d9dc: e59f4060  ldr r4, [pc, #96] ; 0x10da44
10d9e0: e59f1068  ldr r1, [pc, #104]  ; 0x10da50
10d9e4: e59f2060  ldr r2, [pc, #96] ; 0x10da4c
10d9e8: e59f3058  ldr r3, [pc, #88] ; 0x10da48
10d9ec: e584000c  str r0, [r4, #12]
10d9f0: e5841008  str r1, [r4, #8]
10d9f4: e5842004  str r2, [r4, #4]
10d9f8: e3a0c000  mov ip, #0
10d9fc: e5843000  str r3, [r4]
 
10da00: ee002a10  vmov  s0, r2
10da04: e1a02001  mov r2, r1
10da08: e02059a0  eor r5, r0, r0, lsr #19
10da0c: e1a01000  mov r1, r0
10da10: e0230583  eor r0, r3, r3, lsl #11
10da14: ee103a10  vmov  r3, s0
10da18: e0200420  eor r0, r0, r0, lsr #8
10da1c: e28cc001  add ip, ip, #1
10da20: e35c0014  cmp ip, #20
10da24: e0200005  eor r0, r0, r5
10da28: bafffff4  blt 0x10da00
 
10da2c: e584000c  str r0, [r4, #12]
10da30: e5841008  str r1, [r4, #8]
10da34: e5842004  str r2, [r4, #4]
10da38: e5843000  str r3, [r4]
10da3c: e8bd0030  pop {r4, r5}
10da40: e12fff1e  bx  lr
10da44: 008bf60c
 
10da48: 075bcd15
10da4c: 159a55e5
10da50: 1f123bb5
 
;-------------------------------------------------
; r2 == 0: r0 ← 乱数 r0〜r1 
; r2 == 1: r0 ← r0
; r2 == 2: r0 ← r1
; r2 == 3: r0 ← (r0 + r1) / 2
; default: r0 ← 0
;-------------------------------------------------
63a510: e3520000  cmp r2, #0
63a514: 0a00000a  beq 0x63a544
 
63a518: e3520001  cmp r2, #1
63a51c: 0a000007  beq 0x63a540
 
63a520: e3520002  cmp r2, #2
63a524: 01a00001  moveq r0, r1
63a528: 0a000004  beq 0x63a540
 
63a52c: e3520003  cmp r2, #3
63a530: 00800001  addeq r0, r0, r1
63a534: 13a00000  movne r0, #0
63a538: 00800fa0  addeq r0, r0, r0, lsr #31
63a53c: 01a000c0  asreq r0, r0, #1
63a540: e12fff1e  bx  lr
 
63a544: e320f000  nop {0}
63a548: e1a00000  nop     ; (mov r0, r0)
63a54c: e1510000  cmp r1, r0
63a550: 012fff1e  bxeq  lr
 
63a554: e92d4010  push  {r4, lr}
63a558: e1a04000  mov r4, r0
63a55c: e59f203c  ldr r2, [pc, #60] ; 0x63a5a0
63a560: e0411004  sub r1, r1, r4
63a564: e2811001  add r1, r1, #1
63a568: e8920009  ldm r2, {r0, r3}
63a56c: e5823000  str r3, [r2]
63a570: e5923008  ldr r3, [r2, #8]
63a574: e0200580  eor r0, r0, r0, lsl #11
63a578: e5823004  str r3, [r2, #4]
63a57c: e0203420  eor r3, r0, r0, lsr #8
63a580: e592000c  ldr r0, [r2, #12]
63a584: e5820008  str r0, [r2, #8]
63a588: e020c9a0  eor ip, r0, r0, lsr #19
63a58c: e02c0003  eor r0, ip, r3
63a590: e582000c  str r0, [r2, #12]
63a594: ebecbe60  bl  0x169f1c ; (r0, r1) ← divmod(r0, r1)
63a598: e0810004  add r0, r1, r4
63a59c: e8bd8010  pop {r4, pc}
63a5a0: 008bf60c
 
;-------------------------------------------------
; 確率 r0/r1 で true を返す
;-------------------------------------------------
655488: e59f2044  ldr r2, [pc, #68] ; 0x6554d4
65548c: e92d4010  push  {r4, lr}
655490: e1a04000  mov r4, r0
655494: e8920009  ldm r2, {r0, r3}
655498: e5823000  str r3, [r2]
65549c: e5923008  ldr r3, [r2, #8]
6554a0: e0200580  eor r0, r0, r0, lsl #11
6554a4: e5823004  str r3, [r2, #4]
6554a8: e0203420  eor r3, r0, r0, lsr #8
6554ac: e592000c  ldr r0, [r2, #12]
6554b0: e5820008  str r0, [r2, #8]
6554b4: e020c9a0  eor ip, r0, r0, lsr #19
6554b8: e02c0003  eor r0, ip, r3
6554bc: e582000c  str r0, [r2, #12]
6554c0: ebec5295  bl  0x169f1c ; (r0, r1) ← divmod(r0, r1)
6554c4: e1510004  cmp r1, r4
6554c8: 33a00001  movcc r0, #1
6554cc: 23a00000  movcs r0, #0
6554d0: e8bd8010  pop {r4, pc}
6554d4: 008bf60c
 

非戦闘関連

ノチョリンのスカウト

レアモンスターが対象となる確率

「未入手のモンスターをスカウト」以外を選択した場合、レアモンスターがスカウト対象となる確率は 3 % のようです。
参考: シナリオクリア以前に、「低/高ランクのモンスターをスカウト」によってレアモンスターをスカウトできる確率は(基本的に) 0.9 % (= 0.03 × 0.3) となります)

ソース
+ ...
;
; スカウト処理
;
2e1480: e59f62f0  ldr r6, [pc, #752]  ; 0x2e1778
2e1484: e5960000  ldr r0, [r6]
2e1488: e590001c  ldr r0, [r0, #28]
2e148c: ebf9224d  bl  0x129dc8 ; r0 ← スカウトの種類
2e1490: e3500006  cmp r0, #6 ; 6: 未入手のモンスターをスカウト
2e1494: e3a05000  mov r5, #0
2e1498: 1a000068  bne 0x2e1640
...
 
2e1640: e1a00007  mov r0, r7
2e1644: eb0f6a8e  bl  0x6bc084 ; レアモンスタースカウト判定
2e1648: e3500000  cmp r0, #0
2e164c: e320f000  nop {0}
2e1650: 1affffe4  bne 0x2e15e8
 
;
; レアモンスター スカウト
;
6bc084: e92d41f0  push  {r4, r5, r6, r7, r8, lr}
6bc088: e1a06000  mov r6, r0
6bc08c: e3a05000  mov r5, #0
6bc090: e59f80e0  ldr r8, [pc, #224]  ; 0x6bc178
6bc094: e1a04005  mov r4, r5
6bc098: e5980000  ldr r0, [r8]
6bc09c: e59010a8  ldr r1, [r0, #168]  ; 0xa8
6bc0a0: e590001c  ldr r0, [r0, #28]
6bc0a4: ebffcf79  bl  0x6afe90
6bc0a8: e59f70cc  ldr r7, [pc, #204]  ; 0x6bc17c
6bc0ac: e1d000d0  ldrsb r0, [r0]
6bc0b0: e3a02003  mov r2, #3
6bc0b4: e2471004  sub r1, r7, #4
6bc0b8: e1d130d4  ldrsb r3, [r1, #4]
6bc0bc: e1530000  cmp r3, r0
6bc0c0: e1f130d8  ldrsb r3, [r1, #8]!
6bc0c4: 03a04001  moveq r4, #1
6bc0c8: e1530000  cmp r3, r0
6bc0cc: 03a04001  moveq r4, #1
6bc0d0: e2522001  subs  r2, r2, #1
6bc0d4: 1afffff7  bne 0x6bc0b8
6bc0d8: e3540000  cmp r4, #0
6bc0dc: 0a000023  beq 0x6bc170
 
6bc0e0: e3a00064  mov r0, #100  ; 0x64
6bc0e4: ebea9ddf  bl  0x163868 ; r0 ← 乱数 0〜99
6bc0e8: e3500003  cmp r0, #3
6bc0ec: e320f000  nop {0}
6bc0f0: aa00001e  bge 0x6bc170
...
 
6bc178: 008977e0
6bc17c: 00891f1c
6bc180: 00897804
 

スカウト成功確率

対象モンスターのレベルを L、魔物のエサを 1 つ与えた際の(初期)スカウト率を p とするとき、スカウト成功確率は次のように計算されます。

(スカウト成功確率) := max{0.01, (標準成功率) + (連続スカウト失敗補正)} (*1)
(標準成功率) := (p + 0.1) × (シナリオ進行度依存の乗数) / (L + 10) (小数第四位以下切り捨て)

(*1)「低/高ランクのモンスターをスカウト」については、スカウト成功確率が 0.3 未満となった場合、0.3 とします。

シナリオ進行度依存の乗数
シナリオ進行度 乗数
静寂の草原クリア前 10
静寂の草原クリア後 15
崩落都市クリア後 20
歓楽の霊道クリア後 25
凍骨の氷原クリア後 30
黒鉄の監獄塔クリア後 35
焦熱の火山クリア後 40
コア(シナリオ)クリア後 50

連続スカウト失敗補正
回数 確率補正
0 0
1 0.20
2 0.40
3〜 0.60

補足: この回数は、ロード時 または スカウトの種類を切り替えた際に 0 に再設定されるようです。

レアモンスター スカウト成功確率 早見表
前提条件:
  • シナリオクリア後である
  • 「未入手のモンスターをスカウト」を選択している
  • スカウト可能なモンスターは、レアモンスターを除いて全て入手済みである
モンスター ID モンスター Lv スカウト成功確率
1691 ブラックベジター 5 33.3 %
1692 マリンフェアリー 10 25.0 %
1693 ブラックタヌー 15 20.0 %
1694 マッドウェーブ 20 16.6 %
1695 やつざきアニマル 25 14.2 %
1696 ウパパロン 30 12.5 %
補足: レアモンスターの p は 0 に設定されています。

ソース
+ ...
;------------------------------------------------
; スカウト判定
;------------------------------------------------
6bb944: e92d41f0  push  {r4, r5, r6, r7, r8, lr}
6bb948: e1a04001  mov r4, r1
6bb94c: e1a08000  mov r8, r0
 
6bb950: e1a00001  mov r0, r1
6bb954: ebf0b990  bl  0x2e9f9c
6bb958: e20060ff  and r6, r0, #255  ; r6: 仲間になる確率(分母: 1000)
 
6bb95c: e1a00004  mov r0, r4
6bb960: ebf0b8e0  bl  0x2e9ce8
6bb964: e59f50a4  ldr r5, [pc, #164]  ; 0x6bba10 (0x00891edc)
6bb968: e20070ff  and r7, r0, #255  ; r7: 対象の Lv
 
6bb96c: e3a04000  mov r4, #0
6bb970: e7950184  ldr r0, [r5, r4, lsl #3]
6bb974: ebea6453  bl  0x154ac8 ; r0 ← フラグ r0
6bb978: e3500000  cmp r0, #0
6bb97c: e320f000  nop {0}
6bb980: 0a000003  beq 0x6bb994
 
6bb984: e2844001  add r4, r4, #1
6bb988: e3540008  cmp r4, #8
6bb98c: bafffff7  blt 0x6bb970
6bb990: ea000001  b 0x6bb99c
 
6bb994: e3540008  cmp r4, #8
6bb998: ba000000  blt 0x6bb9a0
 
6bb99c: e3a04007  mov r4, #7
 
6bb9a0: e2861064  add r1, r6, #100  ; 0x64
6bb9a4: e0850184  add r0, r5, r4, lsl #3
6bb9a8: e5900004  ldr r0, [r0, #4]  ; (10, 15, 20, 25, 30, 35, 40, 50)
6bb9ac: e0000190  mul r0, r0, r1
6bb9b0: e287100a  add r1, r7, #10   ; r1 ← (Lv + 10)
6bb9b4: ebf1156e  bl  0x300f74      ; r0, r1 ← divmod(r0, r1)
6bb9b8: e59f2054  ldr r2, [pc, #84] ; 0x6bba14
6bb9bc: e5981010  ldr r1, [r8, #16]
6bb9c0: e7921101  ldr r1, [r2, r1, lsl #2] ; 
6bb9c4: e0804001  add r4, r0, r1     
6bb9c8: e59f0048  ldr r0, [pc, #72] ; 0x6bba18
6bb9cc: e354000a  cmp r4, #10
6bb9d0: b3a0400a  movlt r4, #10     ; 最低 1 %
 
6bb9d4: e5900000  ldr r0, [r0]
6bb9d8: e590001c  ldr r0, [r0, #28]
6bb9dc: ebe9b8f9  bl  0x129dc8 ; r0 ← スカウトの種類
6bb9e0: e3500005  cmp r0, #5
6bb9e4: 13500004  cmpne r0, #4
6bb9e8: 1a000001  bne 0x6bb9f4
 
6bb9ec: e3540f4b  cmp r4, #300
6bb9f0: b3a04f4b  movlt r4, #300  ; 最低 30 %
 
6bb9f4: e3a00ffa  mov r0, #1000 ; 0x3e8
6bb9f8: ebea9f9a  bl  0x163868 ; r0 ← 乱数 0〜999
6bb9fc: e2800001  add r0, r0, #1
6bba00: e1500004  cmp r0, r4
6bba04: d3a00001  movle r0, #1
6bba08: c3a00000  movgt r0, #0
6bba0c: e8bd81f0  pop {r4, r5, r6, r7, r8, pc}
6bba10: 00891edc
6bba14: 007c1014
6bba18: 00897804
 
7c1014: 00000000 
        000000c8
        00000190
        00000258
 
891edc: 00000028 0000000a 
        00000029 0000000f
        0000002a 00000014
        0000002b 00000019
        0000002c 0000001e
        0000002d 00000023
        0000002e 00000028
        0000002f 00000032
 

前回にスカウトしたモンスターを再度スカウトするバグ

以下の条件を満たしている状態で「未入手のモンスターをスカウト」に失敗した場合、前回にスカウトしたモンスターを再度スカウトしてくるバグがあるようです。
(スカウトに成功した場合は、問題なく動作します)

条件:
  • レアモンスターをスカウト可能な場所でスカウトしている
  • その場所でスカウト可能なモンスターは、レアモンスターを除いて全て入手済みである
  • 前回の「未入手のモンスターをスカウト」で、何らかのモンスターのスカウトに成功している

幸運の妖精

種類 確率
×2倍 70 %
×4倍 29 %
×8倍 1 %

ソース

+ ...
;--------------------------------------------------
; 幸運の妖精
;--------------------------------------------------
2dca94: e92d4070  push  {r4, r5, r6, lr}
2dca98: e1a04000  mov r4, r0
2dca9c: ebfffd85  bl  0x2dc0b8
2dcaa0: e1a05000  mov r5, r0
2dcaa4: e59f006c  ldr r0, [pc, #108]  ; 0x2dcb18
2dcaa8: ed9f0a18  vldr  s0, [pc, #96] ; 0x2dcb10
2dcaac: eddf0a18  vldr  s1, [pc, #96] ; 0x2dcb14
2dcab0: ed840a5c  vstr  s0, [r4, #368]  ; 0x170
2dcab4: edc40a5a  vstr  s1, [r4, #360]  ; 0x168
2dcab8: e5901000  ldr r1, [r0]
2dcabc: e59f0058  ldr r0, [pc, #88] ; 0x2dcb1c
2dcac0: e3a02000  mov r2, #0
2dcac4: e5900000  ldr r0, [r0]
2dcac8: ebf9135a  bl  0x121838
2dcacc: e2843e19  add r3, r4, #400  ; 0x190
2dcad0: e5840184  str r0, [r4, #388]  ; 0x184
2dcad4: e28f2044  add r2, pc, #68 ; 0x44
2dcad8: e3a01000  mov r1, #0
2dcadc: e3a00064  mov r0, #100  ; 0x64
2dcae0: e8830006  stm r3, {r1, r2}
2dcae4: ebfa1b5f  bl  0x163868 ; r0 ← 乱数 0〜(r0-1)
2dcae8: e3500000  cmp r0, #0
2dcaec: 03a00003  moveq r0, #3
2dcaf0: 05c401b5  strbeq  r0, [r4, #437]  ; 0x1b5
2dcaf4: 0a000003  beq 0x2dcb08
 
2dcaf8: e350001e  cmp r0, #30
2dcafc: b3a00002  movlt r0, #2
2dcb00: a3a00001  movge r0, #1
2dcb04: e5c401b5  strb  r0, [r4, #437]  ; 0x1b5
 
2dcb08: e1a00005  mov r0, r5
2dcb0c: e8bd8070  pop {r4, r5, r6, pc}
2dcb10: 00000000
2dcb14: 41200000
2dcb18: 008918dc
2dcb1c: 00897800
 

闘気の精霊

種類 確率
闘気の精霊 70 %
闘気の大精霊 29 %
闘気の神精霊 1 %

ソース

+ ...
;---------------------------------------------------
; 闘気の精霊
;---------------------------------------------------
2a73c8: e92d4070  push  {r4, r5, r6, lr}
2a73cc: e1a04000  mov r4, r0
2a73d0: eb00d338  bl  0x2dc0b8
2a73d4: ed9f0a0e  vldr  s0, [pc, #56] ; 0x2a7414
2a73d8: eddf0a0e  vldr  s1, [pc, #56] ; 0x2a7418
2a73dc: e1a05000  mov r5, r0
2a73e0: ed840a5c  vstr  s0, [r4, #368]  ; 0x170
2a73e4: edc40a5a  vstr  s1, [r4, #360]  ; 0x168
 
2a73e8: e3a00064  mov r0, #100  ; 0x64
2a73ec: ebfaf11d  bl  0x163868 ; r0 ← 乱数 0〜(r0-1)
2a73f0: e3500046  cmp r0, #70 ; 0x46
2a73f4: b3a00001  movlt r0, #1
2a73f8: ba000002  blt 0x2a7408
 
2a73fc: e3500063  cmp r0, #99 ; 0x63
2a7400: b3a00002  movlt r0, #2 ; 闘気の大精霊
2a7404: a3a00003  movge r0, #3 ; 闘気の神精霊
 
2a7408: e5c401b5  strb  r0, [r4, #437]  ; 0x1b5
2a740c: e1a00005  mov r0, r5
2a7410: e8bd8070  pop {r4, r5, r6, pc}
 
2a7414: 00000000
2a7418: 41200000
 

時空の裂け目

No. マップ 進行度 個数



A




B





A





B







A






B



A



B
2 72: 静寂の草原 0 2〜4 35 % 3 % 30 % 2 % 20 % 10 %
2 72: 静寂の草原 1 4〜6 25 % 5 % 20 % 5 % 20 % 15 % 10 %
2 72: 静寂の草原 2 6〜8 15 % 10 % 15 % 13 % 5 % 20 % 15 % 7 %
3 65: 崩落都市 0 2〜5 35 % 3 % 30 % 2 % 20 % 10 %
3 65: 崩落都市 1 4〜7 25 % 5 % 20 % 5 % 20 % 15 % 10 %
3 65: 崩落都市 2 6〜8 15 % 10 % 15 % 13 % 5 % 20 % 15 % 7 %
4 71: 歓楽の霊道 0 1〜4 40 % 8 % 17 % 5 % 15 % 10 % 5 %
4 71: 歓楽の霊道 1 3〜5 35 % 9 % 18 % 7 % 14 % 12 % 5 %
4 71: 歓楽の霊道 2 5〜6 35 % 10 % 15 % 5 % 2 % 15 % 15 % 3 %
5 73: 凍骨の氷原 0 2〜4 15 % 5 % 40 % 10 % 15 % 5 % 10 %
5 73: 凍骨の氷原 1 3〜5 13 % 7 % 35 % 15 % 13 % 7 % 10 %
5 73: 凍骨の氷原 2 4〜6 10 % 6 % 25 % 20 % 3 % 10 % 8 % 10 % 8 %
6 83: 黒鉄の監獄塔 0 1〜1 15 % 5 % 40 % 10 % 15 % 5 % 10 %
6 83: 黒鉄の監獄塔 1 1〜2 13 % 7 % 35 % 15 % 13 % 7 % 10 %
6 83: 黒鉄の監獄塔 2 1〜3 10 % 6 % 25 % 20 % 8 % 10 % 8 % 10 % 3 %
7 86: 焦熱の火山 0 2〜4 10 % 5 % 15 % 5 % 40 % 20 % 5 %
7 86: 焦熱の火山 1 3〜5 10 % 7 % 12 % 6 % 35 % 20 % 10 %
7 86: 焦熱の火山 2 4〜6 10 % 7 % 10 % 6 % 3 % 30 % 25 % 5 % 4 %

不明な設定

No. マップ 進行度 個数



A




B





A





B







A






B



A



B
0 84: (不明) 0 2〜5 20 % 5 % 20 % 5 % 25 % 15 % 10 %
0 84: (不明) 1 3〜5 20 % 5 % 20 % 5 % 25 % 15 % 10 %
0 84: (不明) 2 4〜6 20 % 5 % 20 % 5 % 4 % 25 % 15 % 6 %
1 87: (不明) 0 2〜5 20 % 5 % 20 % 5 % 25 % 15 % 10 %
1 87: (不明) 1 3〜5 20 % 5 % 20 % 5 % 25 % 15 % 10 %
1 87: (不明) 2 4〜6 20 % 5 % 20 % 5 % 4 % 25 % 15 % 6 %

ソース

+ ...
;
; 個数・確率設定
;
...
2daef8: e5d0a002  ldrb  sl, [r0, #2] ; 最大
2daefc: e3a0b001  mov fp, #1
2daf00: e1a07000  mov r7, r0
2daf04: e35a0000  cmp sl, #0
2daf08: 0a0000b1  beq 0x2db1d4
 
2daf0c: e59f1414  ldr r1, [pc, #1044] ; 0x2db328
2daf10: e3a0206c  mov r2, #108  ; 0x6c
2daf14: e1a0000d  mov r0, sp
2daf18: ebfa74bf  bl  0x17821c
2daf1c: e5d70003  ldrb  r0, [r7, #3]
2daf20: e58d0008  str r0, [sp, #8]
2daf24: e5d70004  ldrb  r0, [r7, #4]
2daf28: e58d0014  str r0, [sp, #20]
2daf2c: e5d70005  ldrb  r0, [r7, #5]
2daf30: e58d0020  str r0, [sp, #32]
2daf34: e5d70006  ldrb  r0, [r7, #6]
2daf38: e58d002c  str r0, [sp, #44] ; 0x2c
2daf3c: e5d70007  ldrb  r0, [r7, #7]
2daf40: e58d0038  str r0, [sp, #56] ; 0x38
2daf44: e5d70008  ldrb  r0, [r7, #8]
2daf48: e58d0044  str r0, [sp, #68] ; 0x44
2daf4c: e5d70009  ldrb  r0, [r7, #9]
2daf50: e58d0050  str r0, [sp, #80] ; 0x50
2daf54: e5d7000a  ldrb  r0, [r7, #10]
2daf58: e58d005c  str r0, [sp, #92] ; 0x5c
2daf5c: e5d7000b  ldrb  r0, [r7, #11]
2daf60: e58d0068  str r0, [sp, #104]  ; 0x68
 
2daf64: e5d77001  ldrb  r7, [r7, #1] ; 最小
2daf68: e04a0007  sub r0, sl, r7
2daf6c: e2800001  add r0, r0, #1
2daf70: ebfa223c  bl  0x163868 ; r0 ← 乱数 0〜(r0-1)
2daf74: e0877000  add r7, r7, r0
...
 
;
; 抽選箇所
;
...
2db124: e3a00064  mov r0, #100  ; 0x64
2db128: ebfa21ce  bl  0x163868 ; r0 ← 乱数 0〜(r0-1)
2db12c: e3a01000  mov r1, #0
 
2db130: e0812081  add r2, r1, r1, lsl #1
2db134: e08a2102  add r2, sl, r2, lsl #2
2db138: e5922008  ldr r2, [r2, #8]
2db13c: e0500002  subs  r0, r0, r2
2db140: 5a000012  bpl 0x2db190
 
2db144: e0840109  add r0, r4, r9, lsl #2
2db148: e0811081  add r1, r1, r1, lsl #1
2db14c: e5903000  ldr r3, [r0]
2db150: e79a2101  ldr r2, [sl, r1, lsl #2]
2db154: e08a1101  add r1, sl, r1, lsl #2
2db158: e583200c  str r2, [r3, #12]
2db15c: e5902000  ldr r2, [r0]
2db160: e5911004  ldr r1, [r1, #4]
2db164: e5821010  str r1, [r2, #16]
2db168: e5900000  ldr r0, [r0]
2db16c: e590000c  ldr r0, [r0, #12]
2db170: e3500001  cmp r0, #1
2db174: 03510002  cmpeq r1, #2
2db178: 1a000007  bne 0x2db19c
 
; (1, 2) の場合(魔王)
 
2db17c: e1a00006  mov r0, r6
2db180: eb0f7eee  bl  0x6bad40
2db184: e5860060  str r0, [r6, #96] ; 0x60
2db188: e320f000  nop {0}
2db18c: ea000002  b 0x2db19c
 
2db190: e2811001  add r1, r1, #1
2db194: e3510009  cmp r1, #9
2db198: 3affffe4  bcc 0x2db130
 
 
2db19c: e35b0000  cmp fp, #0
2db1a0: 1a000003  bne 0x2db1b4
 
2db1a4: e7940109  ldr r0, [r4, r9, lsl #2]
2db1a8: e5900010  ldr r0, [r0, #16]
2db1ac: e3500002  cmp r0, #2
2db1b0: 0affffdb  beq 0x2db124 ; 魔王を引いており、かつ、ある条件を満たしている場合、再抽選
 
2db1b4: e2899001  add r9, r9, #1
2db1b8: e1590007  cmp r9, r7
2db1bc: aa00001d  bge 0x2db238
...
 
2db320: 92492493
2db324: 008977e0
2db328: 007bd8f0
2db32c: 00163868
 
 
7bd8f0: 00000002 00000000 00000000
7bd8fc: 00000002 00000001 00000000
7bd908: 00000001 00000000 00000000
7bd914: 00000001 00000001 00000000
7bd920: 00000001 00000002 00000000
7bd92c: 00000003 00000000 00000000
7bd938: 00000003 00000001 00000000
7bd944: 00000004 00000000 00000000
7bd950: 00000004 00000001 00000000
 

メタルゴッデス出現率(光あふれる地のMAP)

「光あふれる地のMAP」ディスク利用時に、「メタルゴッデス」が出現する確率は 1 % のようです。

ソース(判定箇所のみ)

+ ...
...
3f4380: e3a00064  mov r0, #100  ; 0x64
3f4384: ebf5bd37  bl  0x163868 ; r0 ← 乱数 0〜99
3f4388: e3550000  cmp r5, #0
3f438c: e3e02000  mvn r2, #0
3f4390: e3a01000  mov r1, #0
3f4394: da00000c  ble 0x3f43cc
 
3f4398: e7943101  ldr r3, [r4, r1, lsl #2]
3f439c: e0500003  subs  r0, r0, r3
3f43a0: 4a000003  bmi 0x3f43b4
3f43a4: e3520000  cmp r2, #0
3f43a8: aa000004  bge 0x3f43c0
3f43ac: e3530000  cmp r3, #0
3f43b0: da000002  ble 0x3f43c0
 
3f43b4: e3500000  cmp r0, #0
3f43b8: e1a02001  mov r2, r1
3f43bc: ba000002  blt 0x3f43cc
 
3f43c0: e2811001  add r1, r1, #1
3f43c4: e1510005  cmp r1, r5
3f43c8: bafffff2  blt 0x3f4398
...
 
最終更新:2026年06月26日 22:14