+ | ... |
;------------------------------------------
; 乱数 0〜(r1-1) の取得
;------------------------------------------
020B1FC8 E92D4038 push r3-r5,r14
020B1FCC E1A04000 mov r4,r0
020B1FD0 E28D0000 add r0,r13,0h
020B1FD4 E1A05001 mov r5,r1
020B1FD8 EBFFFFED bl Lxx_20B1F94h
020B1FDC E59D0000 ldr r0,[r13]
020B1FE0 E1A00800 mov r0,r0,lsl 10h
020B1FE4 E1A01820 mov r1,r0,lsr 10h
020B1FE8 E0000591 mul r0,r1,r5
020B1FEC E1A01840 mov r1,r0,asr 10h
020B1FF0 E1A00801 mov r0,r1,lsl 10h
020B1FF4 E58D1000 str r1,[r13]
020B1FF8 E1A00820 mov r0,r0,lsr 10h
020B1FFC E5840000 str r0,[r4]
020B2000 E8BD8038 pop r3-r5,r15
;------------------------------------------
; 乱数更新
;------------------------------------------
020B1F94 E59F2024 ldr r2,=Lxx_216359Ch
020B1F98 E59F1024 ldr r1,=Lxx_5D588B65h
020B1F9C E5923000 ldr r3,[r2]
020B1FA0 E0010193 mul r1,r3,r1
020B1FA4 E2813001 add r3,r1,1h
020B1FA8 E1A01823 mov r1,r3,lsr 10h
020B1FAC E1A01801 mov r1,r1,lsl 10h
020B1FB0 E5823000 str r3,[r2]
020B1FB4 E1A01821 mov r1,r1,lsr 10h
020B1FB8 E5801000 str r1,[r0]
020B1FBC E12FFF1E bx r14
020B1FC0 0216359C
020B1FC4 5D588B65
|
表記 | 値 | 固定小数点数換算 |
---|---|---|
C_{2} | 61440 | 0.9375 |
C_{4} | 57600 | 0.878906 |
C_{8} | 50625 | 0.772476 |
C_{16} | 39107 | 0.596725 |
C_{32} | 23336 | 0.356079 |
C_{64} | 8309 | 0.126785 |
C_{128} | 1053 | 0.0160675 |
C_{256} | 17 | 0.000259399 |
C_{512} | 0 | 0 |
import random
def damage(wp, st, lv, df):
l = 0
if lv >= 26:
l = 54 + (lv - 26)
elif lv >= 2:
l = 6 + 2 * (lv - 2)
elif lv >= 1:
l = 5
d = (wp//2 + st + 8) * l
d = (d >> 4) << 16
c = 0xf000
df >>= 1
while df > 0:
if df & 1:
d = ((d & 0xffff0000) * c) >> 16
c = (c * c + 0x8000) >> 16
df >>= 1
r = random.randint(87, 111)
t = (d * (r * 65536 // 100) + 0x8000) >> 16
ret = (t + 0x8000) >> 16
return max(1, min(999, ret))
Lv 上位\Lv 下位 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 5 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
10 | 22 | 24 | 26 | 28 | 30 | 32 | 34 | 36 | 38 | 40 |
20 | 42 | 44 | 46 | 48 | 50 | 52 | 54 | 55 | 56 | 57 |
30 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |
40 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
50 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
60 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
70 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 |
80 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 |
90 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 |
+ | ... |
;-------------------------------------
; アイテムドロップ処理
;-------------------------------------
...
02332070 E28D002C add r0,r13,2Ch
02332074 E3A01064 mov r1,64h
02332078 E3A04000 mov r4,0h
0233207C EBF5FFD1 bl Lxx_20B1FC8h ; [r13,2Ch] ← 乱数 0〜99
...
...
0233237C E1D014B0 ldrh r1,[r0,40h] ; r1 ← (境界値)
02332380 E59D002C ldr r0,[r13,2Ch] ; r0 ← (乱数値)
02332384 E1500001 cmp r0,r1
02332388 AA000015 bge Lxx_23323E4h
...
;-------------------------------------
; 特技使用確率
;-------------------------------------
...
0209E5D4 E28D0000 add r0,r13,0h
0209E5D8 E3A01064 mov r1,64h
0209E5DC EB004E79 bl Lxx_20B1FC8h ; [r13,0h] ← 乱数 0〜99
...
...
0209E61C E1D052BE ldrh r5,[r0,2Eh] ; r5 ← (境界値)
...
...
0209E6C0 E59D0000 ldr r0,[r13] ; r0 ← (乱数値)
0209E6C4 E1500005 cmp r0,r5 ;
0209E6C8 AA000022 bge Lxx_209E758h
...
|
+ | ... |
020B2174 E92D4FF0 push r4-r11,r14
020B2178 E24DD00C sub r13,r13,0Ch
020B217C E3A01028 mov r1,28h
020B2180 E1A0A000 mov r10,r0
020B2184 E2812E46 add r2,r1,460h ; r2 ← 0x488
020B2188 E000019A mul r0,r10,r1
020B218C E3A05000 mov r5,0h
020B2190 E007029A mul r7,r10,r2
020B2194 E58D0000 str r0,[r13]
020B2198 E58D5004 str r5,[r13,4h]
020B219C E59F01C8 ldr r0,=Lxx_27C007Ch
020B21A0 E3A01013 mov r1,13h
020B21A4 E5903000 ldr r3,[r0]
020B21A8 E59D0000 ldr r0,[r13]
020B21AC E0832000 add r2,r3,r0
020B21B0 E0820081 add r0,r2,r1,lsl 1h
020B21B4 E2800B07 add r0,r0,1C00h
020B21B8 E1D00DBC ldrh r0,[r0,0DCh]
020B21BC E3500000 cmp r0,0h
020B21C0 0A000005 beq Lxx_20B21DCh
020B21C4 E59D0000 ldr r0,[r13]
020B21C8 E0800003 add r0,r0,r3
020B21CC E0800081 add r0,r0,r1,lsl 1h
020B21D0 E2800B07 add r0,r0,1C00h
020B21D4 E1D05DBC ldrh r5,[r0,0DCh] ; r5 ← 重みの累積和
020B21D8 EA000001 b Lxx_20B21E4h
020B21DC E2511001 subs r1,r1,1h
020B21E0 5AFFFFF2 bpl Lxx_20B21B0h
020B21E4 E28D0008 add r0,r13,8h
020B21E8 E1A01005 mov r1,r5
020B21EC EBFFFF75 bl Lxx_20B1FC8h
020B21F0 E59F0174 ldr r0,=Lxx_27C007Ch
020B21F4 E3A01000 mov r1,0h
020B21F8 E5904000 ldr r4,[r0]
020B21FC E59D0000 ldr r0,[r13]
020B2200 E59D3008 ldr r3,[r13,8h] ; r3 ← 乱数 0〜(累積和-1)
020B2204 E1A08001 mov r8,r1
020B2208 E0842000 add r2,r4,r0
020B220C E0820088 add r0,r2,r8,lsl 1h
020B2210 E2800B07 add r0,r0,1C00h
020B2214 E1D00DBC ldrh r0,[r0,0DCh]
020B2218 E3500000 cmp r0,0h
020B221C 0A000004 beq Lxx_20B2234h
020B2220 E1510003 cmp r1,r3
020B2224 CA000001 bgt Lxx_20B2230h
020B2228 E1530000 cmp r3,r0
020B222C BA000003 blt Lxx_20B2240h ; (1つ前の境界値) <= (乱数値) < (境界値) の場合
020B2230 E1A01000 mov r1,r0
;
020B2234 E2888001 add r8,r8,1h
020B2238 E3580014 cmp r8,14h
020B223C BAFFFFF2 blt Lxx_20B220Ch
020B2240 E3580014 cmp r8,14h
020B2244 028DD00C addeq r13,r13,0Ch
020B2248 03A000EB moveq r0,0EBh
020B224C 08BD8FF0 popeq r4-r11,r15
020B2250 E59F2118 ldr r2,=Lxx_243h
020B2254 E59F1118 ldr r1,=Lxx_21592E0h
020B2258 E0843007 add r3,r4,r7
020B225C E0810202 add r0,r1,r2,lsl 4h
020B2260 E5D0000A ldrb r0,[r0,0Ah]
020B2264 E1580000 cmp r8,r0
020B2268 1A000005 bne Lxx_20B2284h
020B226C E0830082 add r0,r3,r2,lsl 1h
020B2270 E2800C1D add r0,r0,1D00h
020B2274 E1D005B4 ldrh r0,[r0,54h]
020B2278 E3500000 cmp r0,0h
020B227C 11A05000 movne r5,r0
020B2280 1A000001 bne Lxx_20B228Ch ; r5 ← 重みの累積和
020B2284 E2522001 subs r2,r2,1h
020B2288 5AFFFFF3 bpl Lxx_20B225Ch
020B228C E3A06000 mov r6,0h
020B2290 E59F40DC ldr r4,=Lxx_21592E0h
020B2294 E1A0B006 mov r11,r6
020B2298 E28D0008 add r0,r13,8h
020B229C E1A01005 mov r1,r5
020B22A0 EBFFFF48 bl Lxx_20B1FC8h ; 乱数 0〜(累積和-1)
020B22A4 E59F00C0 ldr r0,=Lxx_27C007Ch
020B22A8 E59D1008 ldr r1,[r13,8h]
020B22AC E5900000 ldr r0,[r0]
020B22B0 E1A0200B mov r2,r11
020B22B4 E0870000 add r0,r7,r0
020B22B8 E1A0900B mov r9,r11
020B22BC E0843209 add r3,r4,r9,lsl 4h
020B22C0 E5D3300A ldrb r3,[r3,0Ah]
020B22C4 E1580003 cmp r8,r3
020B22C8 1A000009 bne Lxx_20B22F4h
020B22CC E0803089 add r3,r0,r9,lsl 1h
020B22D0 E2833C1D add r3,r3,1D00h
020B22D4 E1D335B4 ldrh r3,[r3,54h]
020B22D8 E3530000 cmp r3,0h
020B22DC 0A000004 beq Lxx_20B22F4h
020B22E0 E1520001 cmp r2,r1
020B22E4 CA000001 bgt Lxx_20B22F0h
020B22E8 E1510003 cmp r1,r3
020B22EC BA000003 blt Lxx_20B2300h ; (1つ前の境界値) <= (乱数値) < (境界値) の場合
020B22F0 E1A02003 mov r2,r3
020B22F4 E2899001 add r9,r9,1h
020B22F8 E3590F91 cmp r9,244h
020B22FC BAFFFFEE blt Lxx_20B22BCh
020B2300 E3590F91 cmp r9,244h
020B2304 028DD00C addeq r13,r13,0Ch
020B2308 03A000EB moveq r0,0EBh
020B230C 08BD8FF0 popeq r4-r11,r15
...
|
+ | ... |
020B2638 E92D4FF8 push r3-r11,r14
020B263C E3A02FA6 mov r2,298h
020B2640 E0090290 mul r9,r0,r2
020B2644 E59F0118 ldr r0,=Lxx_27C007Ch
020B2648 E3A060F4 mov r6,0F4h
020B264C E5900000 ldr r0,[r0]
020B2650 E1A0A001 mov r10,r1
020B2654 E2861057 add r1,r6,57h
020B2658 E0802009 add r2,r0,r9
020B265C E3A07000 mov r7,0h
020B2660 E0820081 add r0,r2,r1,lsl 1h
020B2664 E2800C17 add r0,r0,1700h
020B2668 E1D00ABC ldrh r0,[r0,0ACh]
020B266C E3500000 cmp r0,0h
020B2670 11A07000 movne r7,r0 ; r7 ← (重みの累積和)
020B2674 1A000001 bne Lxx_20B2680h
020B2678 E2511001 subs r1,r1,1h
020B267C 5AFFFFF7 bpl Lxx_20B2660h
020B2680 E3A08000 mov r8,0h
020B2684 E59F40DC ldr r4,=Lxx_216017Ch
020B2688 E28D5000 add r5,r13,0h
020B268C E1A0B008 mov r11,r8
020B2690 E1A00005 mov r0,r5
020B2694 E1A01007 mov r1,r7
020B2698 EBFFFE4A bl Lxx_20B1FC8h
020B269C E59F00C0 ldr r0,=Lxx_27C007Ch
020B26A0 E59D1000 ldr r1,[r13]
020B26A4 E5900000 ldr r0,[r0]
020B26A8 E1A0200B mov r2,r11
020B26AC E0890000 add r0,r9,r0
020B26B0 E0803082 add r3,r0,r2,lsl 1h
020B26B4 E2833C17 add r3,r3,1700h
020B26B8 E1D3CABC ldrh r12,[r3,0ACh]
020B26BC E35C0000 cmp r12,0h
020B26C0 0A000003 beq Lxx_20B26D4h
020B26C4 E1A03802 mov r3,r2,lsl 10h
020B26C8 E151000C cmp r1,r12
020B26CC E1A06823 mov r6,r3,lsr 10h
020B26D0 BA000002 blt Lxx_20B26E0h ; (乱数値) < (境界値) の場合
020B26D4 E2822001 add r2,r2,1h
020B26D8 E3520F53 cmp r2,14Ch
020B26DC BAFFFFF3 blt Lxx_20B26B0h
...
|
+ | ... |
...
020B24C4 E5902000 ldr r2,[r0]
020B24C8 E3A09000 mov r9,0h
020B24CC E3A0101B mov r1,1Bh
020B24D0 E0820081 add r0,r2,r1,lsl 1h
020B24D4 E2800C2A add r0,r0,2A00h
020B24D8 E1D00EBC ldrh r0,[r0,0ECh]
020B24DC E3500000 cmp r0,0h
020B24E0 11A09000 movne r9,r0 ; r9 ← (重みの累積和)
020B24E4 1A000001 bne Lxx_20B24F0h
020B24E8 E2511001 subs r1,r1,1h
020B24EC 5AFFFFF7 bpl Lxx_20B24D0h
020B24F0 E3A0A000 mov r10,0h
020B24F4 E28D7000 add r7,r13,0h
020B24F8 E1A0600A mov r6,r10
020B24FC E1A00007 mov r0,r7
020B2500 E1A01009 mov r1,r9
020B2504 EBFFFEAF bl Lxx_20B1FC8h ; 乱数 0〜(重みの累積和-1)
020B2508 E59F111C ldr r1,=Lxx_27C007Ch
020B250C E59D0000 ldr r0,[r13]
020B2510 E591C000 ldr r12,[r1]
020B2514 E1A03006 mov r3,r6
020B2518 E1A01006 mov r1,r6
020B251C E08C2081 add r2,r12,r1,lsl 1h
020B2520 E2822C2A add r2,r2,2A00h
020B2524 E1D22EBC ldrh r2,[r2,0ECh]
020B2528 E3520000 cmp r2,0h
020B252C 0A000004 beq Lxx_20B2544h
020B2530 E1530000 cmp r3,r0
020B2534 CA000001 bgt Lxx_20B2540h
020B2538 E1500002 cmp r0,r2
020B253C BA000003 blt Lxx_20B2550h ; (1つ前の境界値) <= (乱数値) < (境界値) の場合
020B2540 E1A03002 mov r3,r2
020B2544 E2811001 add r1,r1,1h
020B2548 E351001C cmp r1,1Ch
020B254C BAFFFFF2 blt Lxx_20B251Ch
...
|
+ | ... |
;----------------------------------------
; - r1 > r2 の場合: 乱数値 [r2, r1) を返す
; - r1 == r2 の場合: r1 を返す
; - r1 < r2 の場合: 乱数値 [r1, r2) を返す
;----------------------------------------
020B2004 E92D4070 push r4-r6,r14
020B2008 E24DD008 sub r13,r13,8h
020B200C E1A05001 mov r5,r1
020B2010 E1A04002 mov r4,r2
020B2014 E1550004 cmp r5,r4
020B2018 E1A06000 mov r6,r0
020B201C 028DD008 addeq r13,r13,8h
020B2020 05865000 streq r5,[r6]
020B2024 08BD8070 popeq r4-r6,r15
020B2028 AA000007 bge Lxx_20B204Ch
020B202C E28D0004 add r0,r13,4h
020B2030 E0441005 sub r1,r4,r5
020B2034 EBFFFFE3 bl Lxx_20B1FC8h
020B2038 E59D0004 ldr r0,[r13,4h]
020B203C E28DD008 add r13,r13,8h
020B2040 E0800005 add r0,r0,r5
020B2044 E5860000 str r0,[r6]
020B2048 E8BD8070 pop r4-r6,r15
020B204C E28D0000 add r0,r13,0h
020B2050 E0451004 sub r1,r5,r4
020B2054 EBFFFFDB bl Lxx_20B1FC8h
020B2058 E59D0000 ldr r0,[r13]
020B205C E0800004 add r0,r0,r4
020B2060 E5860000 str r0,[r6]
020B2064 E28DD008 add r13,r13,8h
020B2068 E8BD8070 pop r4-r6,r15
;----------------------------------------
; モンスター出現数
;----------------------------------------
...
020B1458 E5D21F50 ldrb r1,[r2,0F50h]
020B145C E5D22F51 ldrb r2,[r2,0F51h]
020B1460 EB0002E7 bl Lxx_20B2004h
...
;----------------------------------------
; アイテム出現数
;----------------------------------------
...
020B0D00 E5D21F4C ldrb r1,[r2,0F4Ch]
020B0D04 E5D22F4D ldrb r2,[r2,0F4Dh]
020B0D08 EB0004BD bl Lxx_20B2004h
...
;----------------------------------------
; ワナ出現数
;----------------------------------------
...
020B0F48 E5D21F4E ldrb r1,[r2,0F4Eh]
020B0F4C E5D22F4F ldrb r2,[r2,0F4Fh]
020B0F50 EB00042B bl Lxx_20B2004h
...
;----------------------------------------
; 呪い確率
;----------------------------------------
...
0203368C E28D0000 add r0,r13,0h
02033690 E3A01064 mov r1,64h
02033694 EB01FA4B bl Lxx_20B1FC8h ; 乱数 0〜99
02033698 E59F02E0 ldr r0,=Lxx_27C007Ch
0203369C E59D1000 ldr r1,[r13]
020336A0 E5900000 ldr r0,[r0]
020336A4 E2800A05 add r0,r0,5000h
020336A8 E5D00F5B ldrb r0,[r0,0F5Bh] ; 境界値
020336AC E1510000 cmp r1,r0
020336B0 AA000003 bge Lxx_20336C4h
020336B4 E1D700B0 ldrh r0,[r7]
020336B8 E3800004 orr r0,r0,4h
020336BC E3C00B01 bic r0,r0,400h
020336C0 E1C700B0 strh r0,[r7]
; かさタヌキ 確率
020336C4 E28D0000 add r0,r13,0h
020336C8 E3A01064 mov r1,64h
020336CC EB01FA3D bl Lxx_20B1FC8h ; 乱数 0〜99
020336D0 E59F02AC ldr r0,=Lxx_27C006Ch
020336D4 E5900000 ldr r0,[r0]
020336D8 E2800B03 add r0,r0,0C00h
020336DC E1D00EB4 ldrh r0,[r0,0E4h]
020336E0 E350002B cmp r0,2Bh
020336E4 1350002C cmpne r0,2Ch
020336E8 1350002D cmpne r0,2Dh
020336EC 1350002E cmpne r0,2Eh
020336F0 0A00001F beq Lxx_2033774h
020336F4 E59F0284 ldr r0,=Lxx_27C007Ch
020336F8 E59D1000 ldr r1,[r13]
020336FC E5900000 ldr r0,[r0]
02033700 E2800A05 add r0,r0,5000h
02033704 E5D00F59 ldrb r0,[r0,0F59h] ; 境界値
02033708 E1510000 cmp r1,r0
0203370C B1D700B0 ldrhlt r0,[r7]
02033710 E3A01064 mov r1,64h
02033714 B3800020 orrlt r0,r0,20h
02033718 B1C700B0 strhlt r0,[r7]
; 祝福 確率
0203371C E28D0000 add r0,r13,0h
02033720 EB01FA28 bl Lxx_20B1FC8h ; 乱数 0〜99
02033724 E59F0254 ldr r0,=Lxx_27C007Ch
02033728 E59D1000 ldr r1,[r13]
0203372C E5900000 ldr r0,[r0]
02033730 E2800A05 add r0,r0,5000h
02033734 E5D00F5A ldrb r0,[r0,0F5Ah]
02033738 E1510000 cmp r1,r0
0203373C AA00000C bge Lxx_2033774h
02033740 E3A00000 mov r0,0h
02033744 EBFFE474 bl Lxx_202C91Ch
02033748 E59F1238 ldr r1,=Lxx_2151DC0h
0203374C E3A02001 mov r2,1h
02033750 E7910100 ldr r0,[r1,r0,lsl 2h]
02033754 E1100412 tst r0,r2,lsl r4
02033758 0A000005 beq Lxx_2033774h
0203375C E1D700B0 ldrh r0,[r7]
02033760 E3800B01 orr r0,r0,400h
02033764 E1C700B0 strh r0,[r7]
02033768 E1D700B0 ldrh r0,[r7]
0203376C E3C00004 bic r0,r0,4h ; 呪い状態 を解除する
02033770 E1C700B0 strh r0,[r7]
...
; ゴールド範囲
020337E0 E1D215B2 ldrh r1,[r2,52h]
020337E4 E1D225B4 ldrh r2,[r2,54h]
020337E8 EB01FA05 bl Lxx_20B2004h
...
;----------------------------------------
; 店確率
;----------------------------------------
...
020B3540 E5D10F40 ldrb r0,[r1,0F40h]
020B3544 E5D11F58 ldrb r1,[r1,0F58h]
020B3548 EB001FB1 bl Lxx_20BB414h
...
;----------------------------------------
; 店設置(サブルーチン)
;----------------------------------------
020BB414 E92D4FF8 push r3-r11,r14
020BB418 E24DD048 sub r13,r13,48h
020BB41C E59F364C ldr r3,=Lxx_27C006Ch
020BB420 E1A06000 mov r6,r0
020BB424 E5933000 ldr r3,[r3]
020BB428 E1A05001 mov r5,r1
020BB42C E3A040FF mov r4,0FFh
020BB430 E28D002C add r0,r13,2Ch
020BB434 E3A01064 mov r1,64h
020BB438 E58D2004 str r2,[r13,4h]
020BB43C E5C34B2A strb r4,[r3,0B2Ah]
020BB440 EBFFDAE0 bl Lxx_20B1FC8h ; 乱数 0〜99
020BB444 E3560000 cmp r6,0h
020BB448 028DD048 addeq r13,r13,48h
020BB44C 08BD8FF8 popeq r3-r11,r15
;
020BB450 E59D002C ldr r0,[r13,2Ch]
020BB454 E1560000 cmp r6,r0
020BB458 D28DD048 addle r13,r13,48h
020BB45C D8BD8FF8 pople r3-r11,r15 ; (境界値) <= (乱数値) の場合スキップ
020BB460 EBFDC5A7 bl Lxx_202CB04h
020BB464 E3500000 cmp r0,0h
020BB468 028DD048 addeq r13,r13,48h
020BB46C 08BD8FF8 popeq r3-r11,r15
020BB470 E28D002C add r0,r13,2Ch
020BB474 E3A01064 mov r1,64h
020BB478 EBFFDAD2 bl Lxx_20B1FC8h ; 乱数 0〜99
020BB47C E59D002C ldr r0,[r13,2Ch]
020BB480 E1500005 cmp r0,r5
020BB484 AA00001B bge Lxx_20BB4F8h
020BB488 E3A04000 mov r4,0h
020BB48C E1A00004 mov r0,r4
020BB490 EBFDC521 bl Lxx_202C91Ch
020BB494 E59F15D8 ldr r1,=Lxx_27C007Ch
020BB498 E59F25D8 ldr r2,=Lxx_2151D00h
020BB49C E5916000 ldr r6,[r1]
020BB4A0 E7922100 ldr r2,[r2,r0,lsl 2h]
020BB4A4 E1A05004 mov r5,r4
020BB4A8 E28D1034 add r1,r13,34h
020BB4AC E3A03001 mov r3,1h
020BB4B0 E0860085 add r0,r6,r5,lsl 1h
020BB4B4 E2800C1D add r0,r0,1D00h
020BB4B8 E1D000B4 ldrh r0,[r0,4h]
020BB4BC E3500000 cmp r0,0h
020BB4C0 0A000002 beq Lxx_20BB4D0h
020BB4C4 E1120513 tst r2,r3,lsl r5
020BB4C8 17C15004 strbne r5,[r1,r4]
020BB4CC 12844001 addne r4,r4,1h
020BB4D0 E2855001 add r5,r5,1h
020BB4D4 E3550014 cmp r5,14h
020BB4D8 BAFFFFF4 blt Lxx_20BB4B0h
020BB4DC E28D002C add r0,r13,2Ch
020BB4E0 E1A01004 mov r1,r4
020BB4E4 EBFFDAB7 bl Lxx_20B1FC8h
020BB4E8 E59D102C ldr r1,[r13,2Ch]
020BB4EC E28D0034 add r0,r13,34h
020BB4F0 E7D04001 ldrb r4,[r0,r1]
020BB4F4 EA000000 b Lxx_20BB4FCh
...
;----------------------------------------
; モンスターハウス確率
;----------------------------------------
...
020B354C E59D0000 ldr r0,[r13]
020B3550 E3500000 cmp r0,0h
020B3554 159F0080 ldrne r0,=Lxx_3E7h
020B3558 1A000003 bne Lxx_20B356Ch
020B355C E59F0070 ldr r0,=Lxx_27C007Ch
020B3560 E5900000 ldr r0,[r0]
020B3564 E2800A05 add r0,r0,5000h
020B3568 E5D00F41 ldrb r0,[r0,0F41h] ; r0 ← (設定値)
020B356C E1A00800 mov r0,r0,lsl 10h
020B3570 E1A00840 mov r0,r0,asr 10h
020B3574 EB002143 bl Lxx_20BBA88h
...
;----------------------------------------
; サブルーチン
;----------------------------------------
020BBA88 E92D4FF8 push r3-r11,r14
020BBA8C E24DD010 sub r13,r13,10h
020BBA90 E59F11A0 ldr r1,=Lxx_27C006Ch
020BBA94 E1A04000 mov r4,r0
020BBA98 E5912000 ldr r2,[r1]
020BBA9C E3A030FF mov r3,0FFh
020BBAA0 E28D0008 add r0,r13,8h
020BBAA4 E3A01064 mov r1,64h
020BBAA8 E5C23B2B strb r3,[r2,0B2Bh]
020BBAAC EBFFD945 bl Lxx_20B1FC8h
020BBAB0 E59F0180 ldr r0,=Lxx_27C006Ch
020BBAB4 E5902000 ldr r2,[r0]
020BBAB8 E5D20CE8 ldrb r0,[r2,0CE8h]
020BBABC E3500002 cmp r0,2h
020BBAC0 1A000007 bne Lxx_20BBAE4h
020BBAC4 E59F1170 ldr r1,=Lxx_27C0074h
020BBAC8 E2820B03 add r0,r2,0C00h
020BBACC E5911000 ldr r1,[r1]
020BBAD0 E1D02EBC ldrh r2,[r0,0ECh]
020BBAD4 E1D102BC ldrh r0,[r1,2Ch]
020BBAD8 E1520000 cmp r2,r0
020BBADC 028DD010 addeq r13,r13,10h
020BBAE0 08BD8FF8 popeq r3-r11,r15
020BBAE4 E3540000 cmp r4,0h
020BBAE8 028DD010 addeq r13,r13,10h
020BBAEC 08BD8FF8 popeq r3-r11,r15
020BBAF0 E59D0008 ldr r0,[r13,8h]
020BBAF4 E1540000 cmp r4,r0
020BBAF8 D28DD010 addle r13,r13,10h ; (境界値) >= (乱数値)
020BBAFC D8BD8FF8 pople r3-r11,r15
...
|