+ | ... |
;-------------------------------------------
; v0 ← 31-bit 乱数
;-------------------------------------------
138728: f0ffbd27 addiu sp,sp,-16
13872c: 3800023c lui v0,0x38
138730: 0000b0ff sd s0,0(sp)
138734: 5158053c lui a1,0x5851
138738: 2df4a534 ori a1,a1,0xf42d
13873c: 382c0500 dsll a1,a1,0x10
138740: 954ca534 ori a1,a1,0x4c95
138744: 382c0500 dsll a1,a1,0x10
138748: 2d7fa534 ori a1,a1,0x7f2d
13874c: 2041508c lw s0,16672(v0)
138750: 0800bfff sd ra,8(sp)
138754: 26f9040c jal 0x13e498
138758: a80004de ld a0,168(s0)
13875c: ff7f043c lui a0,0x7fff
138760: ffff8434 ori a0,a0,0xffff
138764: 01004364 daddiu v1,v0,1
138768: 0800bfdf ld ra,8(sp)
13876c: 3e100300 dsrl32 v0,v1,0x0
138770: a80003fe sd v1,168(s0)
138774: 24104400 and v0,v0,a0
138778: 0000b0df ld s0,0(sp)
13877c: 3c100200 dsll32 v0,v0,0x0
138780: 3f100200 dsra32 v0,v0,0x0
138784: 0800e003 jr ra
138788: 1000bd27 addiu sp,sp,16
;-------------------------------------------
; $f0 ← 乱数 [0.0, 1.0]
;-------------------------------------------
32af30: 0000858c lw a1,0(a0)
32af34: 585d033c lui v1,0x5d58
32af38: 658b6334 ori v1,v1,0x8b65
32af3c: 1900023c lui v0,0x19
32af40: 0d664234 ori v0,v0,0x660d
32af44: 1818a300 mult v1,a1,v1
32af48: 01006324 addiu v1,v1,1
32af4c: 000083ac sw v1,0(a0)
32af50: 0000838c lw v1,0(a0)
32af54: 1b006200 divu zero,v1,v0
...
32af60: 10100000 mfhi v0
32af64: 04004004 bltz v0,0x32af78
32af68: 42180200 srl v1,v0,0x1
32af6c: 00008244 mtc1 v0,$f0
32af70: 07000010 b 0x32af90
32af74: 60008046 cvt.s.w $f1,$f0
32af78: 01004230 andi v0,v0,0x1
32af7c: 25186200 or v1,v1,v0
32af80: 00008344 mtc1 v1,$f0
32af84: 00000000 nop
32af88: 60008046 cvt.s.w $f1,$f0
32af8c: 40080146 add.s $f1,$f1,$f1
32af90: 1900023c lui v0,0x19
32af94: 0c664234 ori v0,v0,0x660c
32af98: 00008244 mtc1 v0,$f0
32af9c: 00000000 nop
32afa0: 20008046 cvt.s.w $f0,$f0
32afa4: 03080046 div.s $f0,$f1,$f0
...
32afb0: 0800e003 jr ra
32afb4: 00000000 nop
|
条件 | ダメージ |
---|---|
攻撃力 ≤ 守備力/2.0 の場合 | 乱数 [0.0, 1.0] |
(攻撃力 - 守備力/2.0)/2.0 ≤ 攻撃力/16.0 の場合 | 乱数 [0.0, 攻撃力/16.0] |
(それ以外の場合: D := (攻撃力 - 守備力/2.0)/2.0 とする) | D + 乱数 [-D/16.0, D/16.0] + 乱数 [-1.0, 1.0] |
+ | ... |
;------------------------------------------
; ダメージ計算
;------------------------------------------
32ad00: 00088544 mtc1 a1,$f1
32ad04: d0ffbd27 addiu sp,sp,-48
32ad08: 00008644 mtc1 a2,$f0
32ad0c: 2000bfff sd ra,32(sp)
32ad10: a0088046 cvt.s.w $f2,$f1
32ad14: 1000b07f sq s0,16(sp)
32ad18: 0040023c lui v0,0x4000
32ad1c: 2d808000 move s0,a0
32ad20: 20008046 cvt.s.w $f0,$f0
32ad24: 00088244 mtc1 v0,$f1
32ad28: 0000b4e7 swc1 $f20,0(sp)
32ad2c: 03000146 div.s $f0,$f0,$f1
32ad30: 01100046 sub.s $f0,$f2,$f0
32ad34: 03050146 div.s $f20,$f0,$f1 ; $f20: (攻撃 - 守備/2)/2
32ad38: 00608044 mtc1 zero,$f12
...
32ad44: 36a00c46 c.le.s $f20,$f12
32ad48: 09000045 bc1f 0x32ad70
32ad4c: 8041023c lui v0,0x4180
; [0.0, 1.0]
32ad50: 0400998c lw t9,4(a0)
32ad54: 803f023c lui v0,0x3f80
32ad58: 00688244 mtc1 v0,$f13
32ad5c: 1800398f lw t9,24(t9)
32ad60: 09f82003 jalr t9
32ad64: 00000000 nop
32ad68: 22000010 b 0x32adf4
32ad6c: 00000000 nop
32ad70: 00088244 mtc1 v0,$f1
32ad74: 00000000 nop
32ad78: 43130146 div.s $f13,$f2,$f1 ; $f13: 攻撃/16
...
32ad84: 36a00d46 c.le.s $f20,$f13
32ad88: 07000045 bc1f 0x32ada8 ; (攻撃 - 守備/2)/2 > 攻撃/16
32ad8c: 07a00046 neg.s $f0,$f20
; [0.0, (攻撃)/16]
32ad90: 0400998c lw t9,4(a0)
32ad94: 1800398f lw t9,24(t9)
32ad98: 09f82003 jalr t9
32ad9c: 00000000 nop
32ada0: 14000010 b 0x32adf4
32ada4: 00000000 nop
; D + [-D/16, D/16] + [-1.0, 1.0]
32ada8: 0400998c lw t9,4(a0)
32adac: 03030146 div.s $f12,$f0,$f1
32adb0: 00000000 nop
32adb4: 1800398f lw t9,24(t9)
32adb8: 43a30146 div.s $f13,$f20,$f1
...
32adc4: 09f82003 jalr t9
32adc8: 00000000 nop
32adcc: 0400198e lw t9,4(s0)
32add0: 80bf033c lui v1,0xbf80
32add4: 803f023c lui v0,0x3f80
32add8: 2d200002 move a0,s0
32addc: 1800398f lw t9,24(t9)
32ade0: 00608344 mtc1 v1,$f12
32ade4: 00688244 mtc1 v0,$f13
32ade8: 09f82003 jalr t9
32adec: 00a50046 add.s $f20,$f20,$f0
32adf0: 00a00046 add.s $f0,$f20,$f0
32adf4: 00088044 mtc1 zero,$f1
32adf8: 00000000 nop
32adfc: 34000146 c.lt.s $f0,$f1
32ae00: 02000045 bc1f 0x32ae0c
32ae04: 00000000 nop
32ae08: 06080046 mov.s $f0,$f1
32ae0c: 2000bfdf ld ra,32(sp)
32ae10: 0000b4c7 lwc1 $f20,0(sp)
32ae14: 1000b07b lq s0,16(sp)
32ae18: 0800e003 jr ra
32ae1c: 3000bd27 addiu sp,sp,48
;-----------------------------------------
; $f0 ← 乱数 [$f12, $f13]
;-----------------------------------------
2afe60: e0ffbd27 addiu sp,sp,-32
2afe64: 1000bfff sd ra,16(sp)
2afe68: 0400b5e7 swc1 $f21,4(sp)
2afe6c: 0000b4e7 swc1 $f20,0(sp)
2afe70: 0400998c lw t9,4(a0)
2afe74: 46650046 mov.s $f21,$f12
2afe78: 1400398f lw t9,20(t9)
2afe7c: 09f82003 jalr t9
2afe80: 066d0046 mov.s $f20,$f13
2afe84: 41a01546 sub.s $f1,$f20,$f21
2afe88: 1000bfdf ld ra,16(sp)
2afe8c: 02080046 mul.s $f0,$f1,$f0
2afe90: 00a80046 add.s $f0,$f21,$f0
2afe94: 0400b5c7 lwc1 $f21,4(sp)
2afe98: 0000b4c7 lwc1 $f20,0(sp)
2afe9c: 0800e003 jr ra
2afea0: 2000bd27 addiu sp,sp,32
|
from random import randint
from collections import defaultdict
def acting_order(agls):
N = len(agls)
pairs = sorted([(999 - min(999, agls[i]) * randint(50, 100) // 100, i) for i in range(N)])
order = [i for _, i in pairs]
values = [v for v, _ in pairs]
# シャッフル処理
swapped = False
for t in range(1, 36):
for i in range(N - 1):
if values[i] == values[i + 1] and randint(0, 255) < 128:
order[i], order[i + 1] = order[i + 1], order[i]
swapped = True
if not swapped:
break
return order
if __name__ == "__main__":
# すばやさ
agls = [1, 3, 2]
freq = defaultdict(int)
for i in range(10000000):
order = acting_order(agls)
freq[tuple(order)] += 1
for order, c in sorted(freq.items()):
print(order, c)
行動順 | 確率 |
---|---|
A, B | 約 3/4 |
B, A | 約 1/4 |
行動順 | 確率 |
---|---|
A, B, C | 約 3/8 |
上記以外 | 約 1/8 |
行動順 | 確率 |
---|---|
A, B, C, D | 約 31/192 |
上記以外 | 約 7/192 |
+ | ... |
...
2af2d4: 9a003786 lh s7,154(s1)
2af2d8: 588c0d0c jal 0x363160
2af2dc: 2d202002 move a0,s1
2af2e0: cae1040c jal 0x138728
2af2e4: 2d804000 move s0,v0 ; s0 ← 999
2af2e8: 33000424 li a0,51
2af2ec: 64000324 li v1,100
2af2f0: 1a004400 div zero,v0,a0
...
2af2fc: 10100000 mfhi v0
2af300: 32004224 addiu v0,v0,50 ; v0 ← 乱数 50〜100
2af304: 1810e202 mult v0,s7,v0
2af308: 02006014 bnez v1,0x2af314
2af30c: 1a004300 div zero,v0,v1
2af310: cd010000 break 0x0,0x7
2af314: 12100000 mflo v0 ; v0 ← (すばやさ) × (乱数 50〜100) / 100
2af318: 2a080202 slt at,s0,v0
2af31c: 03002010 beqz at,0x2af32c
2af320: 00000000 nop
2af324: 04000010 b 0x2af338
2af328: 2d100002 move v0,s0
2af32c: 02004104 bgez v0,0x2af338
2af330: 00000000 nop
2af334: 2d100000 move v0,zero
2af338: 23100202 subu v0,s0,v0 ; v0 ← 999 - v0
...
; シャッフル処理
2af3b8: b0050224 li v0,1456
2af3bc: 2db80000 move s7,zero
2af3c0: 63000010 b 0x2af550
2af3c4: 01001224 li s2,1
2af3c8: 5b000010 b 0x2af538
2af3cc: 48049026 addiu s0,s4,1096 ;
; begin
2af3d0: 1c00038e lw v1,28(s0)
2af3d4: 58006010 beqz v1,0x2af538
2af3d8: 00000000 nop
2af3dc: 03002016 bnez s1,0x2af3ec
2af3e0: 00000000 nop
2af3e4: 54000010 b 0x2af538
2af3e8: 2d880002 move s1,s0
2af3ec: 1c00228e lw v0,28(s1)
2af3f0: 7800428c lw v0,120(v0)
2af3f4: 05004018 blez v0,0x2af40c
2af3f8: 2da80000 move s5,zero
2af3fc: 7800628c lw v0,120(v1)
2af400: 0200401c bgtz v0,0x2af40c
2af404: 00000000 nop
2af408: 01001564 daddiu s5,zero,1
2af40c: 1c00248e lw a0,28(s1)
2af410: 7800828c lw v0,120(a0)
2af414: 0e004018 blez v0,0x2af450
2af418: 00000000 nop
2af41c: 1c00028e lw v0,28(s0)
2af420: 7800428c lw v0,120(v0)
2af424: 0a004018 blez v0,0x2af450
2af428: 00000000 nop
2af42c: 988e0d0c jal 0x363a60
2af430: 00000000 nop
2af434: 06004014 bnez v0,0x2af450
2af438: 00000000 nop
2af43c: 988e0d0c jal 0x363a60
2af440: 1c00048e lw a0,28(s0)
2af444: 02004010 beqz v0,0x2af450
2af448: 00000000 nop
2af44c: 01001564 daddiu s5,zero,1
2af450: 3800a016 bnez s5,0x2af534
2af454: 00000000 nop
2af458: 1c00228e lw v0,28(s1)
2af45c: 7800428c lw v0,120(v0)
2af460: 0600401c bgtz v0,0x2af47c
2af464: 2da80000 move s5,zero
2af468: 1c00028e lw v0,28(s0)
2af46c: 7800428c lw v0,120(v0)
2af470: 02004018 blez v0,0x2af47c
2af474: 00000000 nop
2af478: 01001564 daddiu s5,zero,1
2af47c: 1c00248e lw a0,28(s1)
2af480: 7800828c lw v0,120(a0)
2af484: 0e004018 blez v0,0x2af4c0
2af488: 00000000 nop
2af48c: 1c00028e lw v0,28(s0)
2af490: 7800428c lw v0,120(v0)
2af494: 0a004018 blez v0,0x2af4c0
2af498: 00000000 nop
2af49c: 988e0d0c jal 0x363a60
2af4a0: 00000000 nop
2af4a4: 06004010 beqz v0,0x2af4c0
2af4a8: 00000000 nop
2af4ac: 988e0d0c jal 0x363a60
2af4b0: 1c00048e lw a0,28(s0)
2af4b4: 02004014 bnez v0,0x2af4c0
2af4b8: 00000000 nop
2af4bc: 01001564 daddiu s5,zero,1 ; s5 == 1: swap する
2af4c0: 06002396 lhu v1,6(s1)
2af4c4: 06000296 lhu v0,6(s0)
2af4c8: 0c006214 bne v1,v0,0x2af4fc
2af4cc: 00000000 nop
; 行動順を決める値が同じ場合
2af4d0: cae1040c jal 0x138728
2af4d4: 00000000 nop
2af4d8: 04004104 bgez v0,0x2af4ec
2af4dc: ff004330 andi v1,v0,0xff ; v1 ← 乱数 0〜255
2af4e0: 03006010 beqz v1,0x2af4f0
2af4e4: 80006128 slti at,v1,128
2af4e8: 00ff6324 addiu v1,v1,-256
2af4ec: 80006128 slti at,v1,128
2af4f0: 02002010 beqz at,0x2af4fc ; 乱数値 >= 128 の場合
2af4f4: 00000000 nop
2af4f8: 01001564 daddiu s5,zero,1 ; s5 == 1: 順序を交換する
2af4fc: 0d00a012 beqz s5,0x2af534
2af500: 00000000 nop
; 順序を交換する
2af504: 0800238e lw v1,8(s1)
2af508: 02006010 beqz v1,0x2af514
2af50c: 0c00028e lw v0,12(s0)
2af510: 0c0070ac sw s0,12(v1)
2af514: 080003ae sw v1,8(s0)
2af518: 0c0011ae sw s1,12(s0)
2af51c: 080030ae sw s0,8(s1)
2af520: 02004010 beqz v0,0x2af52c
2af524: 0c0022ae sw v0,12(s1)
2af528: 080051ac sw s1,8(v0)
2af52c: 2d802002 move s0,s1
2af530: 01001764 daddiu s7,zero,1
2af534: 2d880002 move s1,s0 ;
2af538: 0c00108e lw s0,12(s0) ;
2af53c: a4ff0016 bnez s0,0x2af3d0
2af540: 00000000 nop
2af544: 0500e012 beqz s7,0x2af55c ; 初回に順序交換が生じなかった場合、終了する
2af548: 00000000 nop
2af54c: 01005226 addiu s2,s2,1
2af550: 2400422a slti v0,s2,36
2af554: 9cff4014 bnez v0,0x2af3c8
2af558: 2d880000 move s1,zero
...
|
すばやさ | みかわし率 |
---|---|
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 |
+ | ... |
;----------------------------------------
; すばやさ依存のみかわし率
;----------------------------------------
2a6e90: 07000010 b 0x2a6eb0
2a6e94: 2d180000 move v1,zero
2a6e98: 21108200 addu v0,a0,v0
2a6e9c: 00004294 lhu v0,0(v0)
2a6ea0: 2a10c200 slt v0,a2,v0
2a6ea4: 05004014 bnez v0,0x2a6ebc
2a6ea8: 00000000 nop
2a6eac: 01006324 addiu v1,v1,1
2a6eb0: 2a106500 slt v0,v1,a1
2a6eb4: f8ff4014 bnez v0,0x2a6e98
2a6eb8: 80100300 sll v0,v1,0x2
2a6ebc: 0f006014 bnez v1,0x2a6efc
2a6ec0: 00000000 nop
...
2a6efc: 11006514 bne v1,a1,0x2a6f44
2a6f00: 80100300 sll v0,v1,0x2
; (すばやさ) >= 999
2a6f04: 80100500 sll v0,a1,0x2
2a6f08: 21104400 addu v0,v0,a0
2a6f0c: feff4294 lhu v0,-2(v0)
2a6f10: 04004004 bltz v0,0x2a6f24
2a6f14: 42180200 srl v1,v0,0x1
2a6f18: 00008244 mtc1 v0,$f0
2a6f1c: 07000010 b 0x2a6f3c
2a6f20: 20008046 cvt.s.w $f0,$f0
...
2a6f3c: 1f000010 b 0x2a6fbc
2a6f40: 00000000 nop
; (すばやさ) < 999
2a6f44: 21104400 addu v0,v0,a0
2a6f48: fcff4594 lhu a1,-4(v0)
2a6f4c: 00004494 lhu a0,0(v0)
2a6f50: feff4794 lhu a3,-2(v0)
2a6f54: 2318c500 subu v1,a2,a1
2a6f58: 23208500 subu a0,a0,a1
2a6f5c: 00088444 mtc1 a0,$f1
2a6f60: 02004294 lhu v0,2(v0)
2a6f64: 00008344 mtc1 v1,$f0
2a6f68: 00000000 nop
2a6f6c: 60088046 cvt.s.w $f1,$f1
2a6f70: 23104700 subu v0,v0,a3
2a6f74: 20008046 cvt.s.w $f0,$f0
2a6f78: 43000146 div.s $f1,$f0,$f1
2a6f7c: 00008244 mtc1 v0,$f0
2a6f80: 00000000 nop
2a6f84: 20008046 cvt.s.w $f0,$f0
2a6f88: 0400e004 bltz a3,0x2a6f9c
2a6f8c: 42080046 mul.s $f1,$f1,$f0
2a6f90: 00008744 mtc1 a3,$f0
2a6f94: 08000010 b 0x2a6fb8
2a6f98: 20008046 cvt.s.w $f0,$f0
...
2a6fb8: 00000146 add.s $f0,$f0,$f1
2a6fbc: 0800e003 jr ra
2a6fc0: 00000000 nop
8495e4: 00 00 04 00
64 00 05 00
C8 00 06 00
2C 01 07 00
90 01 08 00
F4 01 0A 00
58 02 14 00
BC 02 1E 00
20 03 28 00
84 03 32 00
E7 03 40 00
|
回数 | 逃走 成功確率 |
---|---|
1〜2 | 約 5/7.999 |
3 | 約 3/3.999 |
4〜 | 1 |
+ | ... |
...
2aa814: 4000828c lw v0,64(a0)
2aa818: 01004224 addiu v0,v0,1
2aa81c: 400082ac sw v0,64(a0)
...
2aa900: 4000438e lw v1,64(s2)
2aa904: 03006128 slti at,v1,3
2aa908: 13002010 beqz at,0x2aa958
2aa90c: 03000224 li v0,3
; 1〜2 回目
2aa910: cae1040c jal 0x138728
2aa914: 00000000 nop
2aa918: 00108244 mtc1 v0,$f2
2aa91c: 988480c7 lwc1 $f0,-31592(gp) ; 0x3b2988: 0x40fff7cf (7.999)
2aa920: a0108046 cvt.s.w $f2,$f2
2aa924: 0030023c lui v0,0x3000
2aa928: 00088244 mtc1 v0,$f1
2aa92c: 00000000 nop
2aa930: 42080246 mul.s $f1,$f1,$f2
2aa934: 02000146 mul.s $f0,$f0,$f1
2aa938: 24000046 trunc.w.s $f0,$f0
2aa93c: 00000244 mfc1 v0,$f0
2aa940: 00000000 nop
2aa944: 05004128 slti at,v0,5
2aa948: 19002010 beqz at,0x2aa9b0
2aa94c: 2d204002 move a0,s2
2aa950: 16000010 b 0x2aa9ac
2aa954: 01001064 daddiu s0,zero,1
2aa958: 13006214 bne v1,v0,0x2aa9a8 ; 4〜 回目の場合 100 %
2aa95c: 00000000 nop
; 3 回目
2aa960: cae1040c jal 0x138728
2aa964: 00000000 nop
2aa968: 00108244 mtc1 v0,$f2
2aa96c: 9c8480c7 lwc1 $f0,-31588(gp) ; 0x3b298c: 0x407fef9e (3.999)
2aa970: a0108046 cvt.s.w $f2,$f2
2aa974: 0030023c lui v0,0x3000
2aa978: 00088244 mtc1 v0,$f1
2aa97c: 00000000 nop
2aa980: 42080246 mul.s $f1,$f1,$f2
2aa984: 02000146 mul.s $f0,$f0,$f1
2aa988: 24000046 trunc.w.s $f0,$f0
2aa98c: 00000244 mfc1 v0,$f0
2aa990: 00000000 nop
2aa994: 03004128 slti at,v0,3
2aa998: 04002010 beqz at,0x2aa9ac
2aa99c: 00000000 nop
2aa9a0: 02000010 b 0x2aa9ac
2aa9a4: 01001064 daddiu s0,zero,1
2aa9a8: 01001064 daddiu s0,zero,1
|
設定値 | 先制攻撃の確率 | 不意打ちの確率 |
---|---|---|
0 | 約 1/31.999 | 約 1/33.0312 (≈ 30.999/31.999 × 1/31.999) |
1 | 約 1/31.999 | 0 |
2 | 約 4/31.999 | 約 1/36.5704 (≈ 27.999/31.999 × 1/31.999) |
3 | 約 4/31.999 | 約 1/9.1426 (≈ 27.999/31.999 × 4/31.999) |
+ | ... |
;----------------------------------------------
; 先制攻撃・不意打ち
;----------------------------------------------
2fec80: b0ffbd27 addiu sp,sp,-80
2fec84: 4000bfff sd ra,64(sp)
2fec88: 3000b37f sq s3,48(sp)
2fec8c: 2000b27f sq s2,32(sp)
2fec90: 2d988000 move s3,a0
2fec94: 1000b17f sq s1,16(sp)
2fec98: 2d90a000 move s2,a1
2fec9c: 60700b0c jal 0x2dc180
2feca0: 0000b07f sq s0,0(sp)
2feca4: 03004010 beqz v0,0x2fecb4
2feca8: 00000000 nop
2fecac: 35000010 b 0x2fed84
2fecb0: 2d100000 move v0,zero
2fecb4: 64f70a0c jal 0x2bdd90
2fecb8: 00000000 nop
2fecbc: 2d804000 move s0,v0
2fecc0: 24004290 lbu v0,36(v0)
2fecc4: 09004010 beqz v0,0x2fecec
2fecc8: 2d200000 move a0,zero
2feccc: 8c9c0a0c jal 0x2a7230
2fecd0: 64000524 li a1,100
2fecd4: 2800038e lw v1,40(s0)
2fecd8: 2a086200 slt at,v1,v0
2fecdc: 03002014 bnez at,0x2fecec
2fece0: 00000000 nop
2fece4: 27000010 b 0x2fed84
2fece8: 24000282 lb v0,36(s0)
2fecec: 1c00638e lw v1,28(s3)
2fecf0: 01001124 li s1,1
2fecf4: 0400628e lw v0,4(s3)
2fecf8: 2d802002 move s0,s1
2fecfc: 1000668e lw a2,16(s3)
2fed00: 2d202002 move a0,s1
2fed04: 20000524 li a1,32
2fed08: 80190300 sll v1,v1,0x6
2fed0c: 21104300 addu v0,v0,v1
2fed10: 01004290 lbu v0,1(v0)
2fed14: 40100200 sll v0,v0,0x1
2fed18: 21104600 addu v0,v0,a2
2fed1c: 10004390 lbu v1,16(v0)
2fed20: 11004290 lbu v0,17(v0)
2fed24: 18882302 mult s1,s1,v1
2fed28: 8c9c0a0c jal 0x2a7230
2fed2c: 18800272 mult1 s0,s0,v0
2fed30: 2a082202 slt at,s1,v0
2fed34: 03002014 bnez at,0x2fed44
2fed38: 00000000 nop
2fed3c: 11000010 b 0x2fed84
2fed40: 01000224 li v0,1
2fed44: 07004012 beqz s2,0x2fed64
2fed48: 01000424 li a0,1
2fed4c: 01001024 li s0,1
2fed50: 04000524 li a1,4
2fed54: 8c9c0a0c jal 0x2a7230
2fed58: 2d200002 move a0,s0
2fed5c: 04000010 b 0x2fed70
2fed60: 2a080202 slt at,s0,v0
2fed64: 8c9c0a0c jal 0x2a7230
2fed68: 20000524 li a1,32
2fed6c: 2a080202 slt at,s0,v0
2fed70: 03002014 bnez at,0x2fed80
2fed74: 00000000 nop
2fed78: 02000010 b 0x2fed84
2fed7c: 02000224 li v0,2
2fed80: 2d100000 move v0,zero
2fed84: 4000bfdf ld ra,64(sp)
2fed88: 3000b37b lq s3,48(sp)
2fed8c: 2000b27b lq s2,32(sp)
2fed90: 1000b17b lq s1,16(sp)
2fed94: 0000b07b lq s0,0(sp)
2fed98: 0800e003 jr ra
2fed9c: 5000bd27 addiu sp,sp,80
;----------------------------------------------
; 乱数取得 [0, s0 - s1 + 0.999]
;----------------------------------------------
2a7230: d0ffbd27 addiu sp,sp,-48
2a7234: 2000bfff sd ra,32(sp)
2a7238: 1000b17f sq s1,16(sp)
2a723c: 0000b07f sq s0,0(sp)
2a7240: 2d888000 move s1,a0 ; 1
2a7244: 2d80a000 move s0,a1 ; 32
2a7248: 03003016 bne s1,s0,0x2a7258
2a724c: 2d102002 move v0,s1
2a7250: 19000010 b 0x2a72b8
2a7254: 2000bfdf ld ra,32(sp)
2a7258: cae1040c jal 0x138728
2a725c: 00000000 nop
2a7260: 00088244 mtc1 v0,$f1
2a7264: 2a083002 slt at,s1,s0
2a7268: 60088046 cvt.s.w $f1,$f1
2a726c: 0030023c lui v0,0x3000
2a7270: 00008244 mtc1 v0,$f0
2a7274: 03002010 beqz at,0x2a7284
2a7278: 82000146 mul.s $f2,$f0,$f1 ; $f2: 乱数 [0.0, 1.0)
2a727c: 03000010 b 0x2a728c
2a7280: 2d100002 move v0,s0
2a7284: 2d102002 move v0,s1
2a7288: 2d880002 move s1,s0
2a728c: 23105100 subu v0,v0,s1
2a7290: 00088244 mtc1 v0,$f1
2a7294: d08480c7 lwc1 $f0,-31536(gp) ; 0x3b29c0: 0x3f7fbe77 (0.999)
2a7298: 60088046 cvt.s.w $f1,$f1
2a729c: 00000146 add.s $f0,$f0,$f1 ; $f0: s1 - s0 + 0.999
2a72a0: 02000246 mul.s $f0,$f0,$f2
2a72a4: 24000046 trunc.w.s $f0,$f0
2a72a8: 00000244 mfc1 v0,$f0
2a72ac: 00000000 nop
2a72b0: 21102202 addu v0,s1,v0
2a72b4: 2000bfdf ld ra,32(sp)
2a72b8: 1000b17b lq s1,16(sp)
2a72bc: 0000b07b lq s0,0(sp)
2a72c0: 0800e003 jr ra
2a72c4: 3000bd27 addiu sp,sp,48
f71ab0: 01 01
01 00
04 01
04 04
|
ID | アイテム名称 | 命中率補正 | 耐性 bits | 対応する耐性 |
---|---|---|---|---|
157 | 天使のローブ | 128/255 | 0x000200 | ザキ |
216 | 黄金のティアラ | 32/255 | 0x001b00 | ラリホー, ザキ, マホトーン, メダパニ |
220 | 竜神のかぶと | 16/255 | 0x001b00 | ラリホー, ザキ, マホトーン, メダパニ |
221 | 太陽のかんむり | 0/255 | 0x001100 | ラリホー, メダパニ |
222 | メタルキングヘルム | 64/255 | 0x001b00 | ラリホー, ザキ, マホトーン, メダパニ |
230 | 女神の指輪 | 84/255 | 0x201100 | ラリホー, メダパニ, 麻痺 |
250 | まよけの聖印 | 128/255 | 0x000200 | ザキ |
+ | ... |
;-----------------------------------------------
; 装備品 補正値
;-----------------------------------------------
269520: e0ffbd27 addiu sp,sp,-32
269524: 1000bfff sd ra,16(sp)
269528: 0000b07f sq s0,0(sp)
26952c: 0000a0ac sw zero,0(a1)
269530: 2d80a000 move s0,a1
269534: 407c090c jal 0x25f100
269538: 0c00a0ac sw zero,12(a1)
26953c: 6ca5090c jal 0x2695b0
269540: 2d204000 move a0,v0
269544: 03004014 bnez v0,0x269554
269548: 00000000 nop
26954c: 13000010 b 0x26959c
269550: 2d100000 move v0,zero
269554: 00004490 lbu a0,0(v0)
269558: 7f43033c lui v1,0x437f ; 255.0
26955c: 00008344 mtc1 v1,$f0
269560: 07008330 andi v1,a0,0x7
269564: 000003ae sw v1,0(s0)
269568: 0400438c lw v1,4(v0)
26956c: fc190300 dsll32 v1,v1,0x7
269570: fe190300 dsrl32 v1,v1,0x7
269574: 0c0003ae sw v1,12(s0)
269578: 00004294 lhu v0,0(v0)
26957c: 3c1d0200 dsll32 v1,v0,0x14
269580: fe1d0300 dsrl32 v1,v1,0x17
269584: 01000224 li v0,1
269588: 040003ae sw v1,4(s0)
26958c: 040001c6 lwc1 $f1,4(s0)
269590: 60088046 cvt.s.w $f1,$f1
269594: 03080046 div.s $f0,$f1,$f0
269598: 080000e6 swc1 $f0,8(s0) ; 値 / 255.0
26959c: 1000bfdf ld ra,16(sp)
2695a0: 0000b07b lq s0,0(sp)
2695a4: 0800e003 jr ra
2695a8: 2000bd27 addiu sp,sp,32
2695ac: 00000000 nop
;-----------------------------------------------
; 状態異常 命中率
;-----------------------------------------------
...
31a8ac: 6c210d0c jal 0x3485b0
31a8b0: 2d280002 move a1,s0
31a8b4: 0e004004 bltz v0,0x31a8f0
31a8b8: 2d204000 move a0,v0
31a8bc: 48a5090c jal 0x269520 ; 装備品 補正値
31a8c0: 8000a527 addiu a1,sp,128
31a8c4: 8c00a58f lw a1,140(sp)
31a8c8: bc220d0c jal 0x348af0
31a8cc: 2d202002 move a0,s1
31a8d0: 07004010 beqz v0,0x31a8f0
31a8d4: 00000000 nop
31a8d8: 8000a38f lw v1,128(sp)
31a8dc: 03000224 li v0,3
31a8e0: 03006214 bne v1,v0,0x31a8f0
31a8e4: 00000000 nop
31a8e8: 8800a0c7 lwc1 $f0,136(sp)
31a8ec: 02a50046 mul.s $f20,$f20,$f0
31a8f0: 01001026 addiu s0,s0,1
31a8f4: 0500022a slti v0,s0,5
31a8f8: ecff4014 bnez v0,0x31a8ac
31a8fc: 2d208002 move a0,s4
|
乱数値 | アイテム | 確率 |
---|---|---|
0〜1 | 上どくけし草 | 2 % |
2〜4 | 上やくそう | 3 % |
5〜19 | まんげつ草 | 15 % |
20〜54 | どくけし草 | 35 % |
55〜 | やくそう | 45 % |