FF4 (SFC・GBA) > ドロップ確率

SFC 版 (ver 1.1)

ドロップ確率

確率設定 確率
(アイテム #1)
確率
(アイテム #2)
確率
(アイテム #3)
確率
(アイテム #4)
0 0 0 0 0
1 457/15360 278/15360 150/15360 15/15360
2 2264/15360 1406/15360 754/15360 76/15360
3 128/256 80/256 44/256 4/256

ソース

+ ...
;------------------------------------------
; アイテムドロップ処理
;------------------------------------------
...
03ECE8  A6 B7          LDX $B7
03ECEA  BD 8E 35       LDA $358E,X
03ECED  85 B3          STA $B3
03ECEF  BD 8E 35       LDA $358E,X
03ECF2  29 C0          AND #$C0
03ECF4  C9 C0          CMP #$C0
03ECF6  F0 17          BEQ $03ED0F
;
03ECF8  C9 40          CMP #$40
03ECFA  D0 04          BNE $03ED00
;
; case 1:
;
03ECFC  A9 05          LDA #$05
03ECFE  80 06          BRA $03ED06
;
03ED00  C9 80          CMP #$80
03ED02  D0 5B          BNE $03ED5F
;
; case 2:
;
03ED04  A9 19          LDA #$19
 
03ED06  85 B4          STA $B4
03ED08  20 8B 85       JSR $858B   ; A ← 乱数値 0〜98
03ED0B  C5 B4          CMP $B4
03ED0D  B0 50          BCS $03ED5F
 
; case 3: アイテムを落とす場合
 
03ED0F  06 B3          ASL $B3
03ED11  06 B3          ASL $B3
03ED13  A5 B3          LDA $B3
03ED15  AA             TAX
03ED16  7B             TDC
03ED17  A8             TAY
03ED18  84 A9          STY $A9
 
03ED1A  BF 00 9F 0E    LDA $0E9F00,X
03ED1E  99 9C 28       STA $289C,Y
03ED21  E8             INX
03ED22  C8             INY
03ED23  E6 A9          INC $A9
03ED25  A5 A9          LDA $A9
03ED27  C9 04          CMP #$04
03ED29  D0 EF          BNE $03ED1A
 
03ED2B  AD A3 16       LDA $16A3
03ED2E  65 97          ADC $97
03ED30  85 97          STA $97     ; 乱数テーブル index に ($16A3 + 1) を加算(+1 は carry = 1 のため)
 
03ED32  20 93 85       JSR $8593   ; A ← 乱数 0〜255
03ED35  C9 80          CMP #$80
03ED37  B0 04          BCS $03ED3D
03ED39  A9 00          LDA #$00
03ED3B  80 12          BRA $03ED4F
 
03ED3D  C9 D0          CMP #$D0
03ED3F  B0 04          BCS $03ED45
03ED41  A9 01          LDA #$01
03ED43  80 0A          BRA $03ED4F
 
03ED45  C9 FC          CMP #$FC
03ED47  B0 04          BCS $03ED4D
03ED49  A9 02          LDA #$02
03ED4B  80 02          BRA $03ED4F
 
03ED4D  A9 03          LDA #$03
03ED4F  AA             TAX
03ED50  BD 9C 28       LDA $289C,X
 
;------------------------------------------
; A ← 乱数 0〜98
;------------------------------------------
03858B  7B             TDC
03858C  AA             TAX
03858D  A9 62          LDA #$62
03858F  20 79 83       JSR $8379
038592  60             RTS
 
;------------------------------------------
; A ← 乱数 0〜255
;------------------------------------------
038593  7B             TDC
038594  AA             TAX
038595  A9 FF          LDA #$FF
038597  20 79 83       JSR $8379
03859A  60             RTS
 
;------------------------------------------
; A ← 乱数 X〜A
;------------------------------------------
038379  E2 10          SEP #$10
03837B  86 96          STX $96
03837D  E0 FF          CPX #$FF
03837F  D0 02          BNE $038383
038381  80 33          BRA $0383B6
 
038383  C9 00          CMP #$00
038385  F0 2F          BEQ $0383B6
 
038387  C5 96          CMP $96
038389  F0 2B          BEQ $0383B6
 
03838B  A6 97          LDX $97
03838D  38             SEC
03838E  E5 96          SBC $96
038390  C9 FF          CMP #$FF
038392  D0 05          BNE $038399
;
038394  BD 00 19       LDA $1900,X
038397  80 1D          BRA $0383B6
;
038399  1A             INC
03839A  8D 47 39       STA $3947
03839D  9C 48 39       STZ $3948
0383A0  BD 00 19       LDA $1900,X
0383A3  AA             TAX
0383A4  8E 45 39       STX $3945
0383A7  C2 10          REP #$10
0383A9  20 07 84       JSR $8407
0383AC  E2 10          SEP #$10
0383AE  18             CLC
0383AF  AD 4B 39       LDA $394B
0383B2  65 96          ADC $96
0383B4  E6 97          INC $97
;
0383B6  C2 10          REP #$10
0383B8  60             RTS
 
;------------------------------------------
; divmod($3945, $3947)
;------------------------------------------
038407  C2 20          REP #$20
038409  9C 49 39       STZ $3949
03840C  9C 4B 39       STZ $394B
03840F  AD 45 39       LDA $3945
038412  F0 2B          BEQ $03843F
 
038414  AD 47 39       LDA $3947
038417  F0 26          BEQ $03843F
 
038419  18             CLC
03841A  A2 10 00       LDX #$0010
03841D  2E 45 39       ROL $3945
038420  2E 4B 39       ROL $394B
038423  38             SEC
038424  AD 4B 39       LDA $394B
038427  ED 47 39       SBC $3947
03842A  8D 4B 39       STA $394B
03842D  B0 0A          BCS $038439
03842F  AD 4B 39       LDA $394B
038432  6D 47 39       ADC $3947
038435  8D 4B 39       STA $394B
038438  18             CLC
 
038439  2E 49 39       ROL $3949
03843C  CA             DEX
03843D  D0 DE          BNE $03841D
03843F  7B             TDC
038440  E2 20          SEP #$20
038442  60             RTS
 
;------------------------------------------
; 経過時間の更新 (NMI 中) 
;------------------------------------------
...
03F7CD  EE A3 16       INC $16A3
03F7D0  AD A3 16       LDA $16A3   ; フレーム数
03F7D3  C9 3C          CMP #$3C
03F7D5  90 10          BCC $03F7E7 
03F7D7  9C A3 16       STZ $16A3   ; フレーム数は 0〜59 の値を取る
 
03F7DA  EE A4 16       INC $16A4
03F7DD  D0 08          BNE $03F7E7
 
03F7DF  EE A5 16       INC $16A5
03F7E2  D0 03          BNE $03F7E7
 
03F7E4  EE A6 16       INC $16A6
 
03F7E7  6B             RTL
...
 

GBA 版 (E3)

ドロップ率

確率設定 確率
(アイテム #1)
確率
(アイテム #2)
確率
(アイテム #3)
確率
(アイテム #4)
0 0 0 0 0
1 約 160/6272 約 100/6272 約 55/6272 約 5/6272
2 約 800/6272 約 500/6272 約 275/6272 約 25/6272
3 128/256 80/256 44/256 4/256

ソース

+ ...
;------------------------------------------
; アイテムドロップ処理
;------------------------------------------
8088570  70 B5          PUSH {R4-R6,LR}
8088572  81 B0          ADD SP, #-$0004
8088574  48 31          ADD R1, #$48
8088576  09 88          LDRH R1, [R1, #$00]
8088578  48 00          LSL R0, R1, #$01
808857A  40 18          ADD R0, R0, R1
808857C  80 00          LSL R0, R0, #$02
808857E  1C 49          LDR R1, [PC, #$1C]
8088580  45 18          ADD R5, R0, R1
8088582  1C 49          LDR R1, [PC, #$1C]
8088584  68 46          MOV R0, SP
8088586  04 22          MOV R2, #$04
8088588  1B 4B          LDR R3, [PC, #$1B]
808858A  33 F0          BLL #$0033
808858C  CB FC          BLH #$04CB
 
808858E  28 78          LDRB R0, [R5, #$00]
8088590  00 28          CMP R0, #$00
8088592  66 D0          BEQ $08088662
 
8088594  03 28          CMP R0, #$03
8088596  16 D0          BEQ $080885C6
 
8088598  18 48          LDR R0, [PC, #$18] ; ($08058805)
808859A  33 F0          BLL #$0033
808859C  BD FC          BLH #$04BD
808859E  04 1C          ADD R4, R0, #$00   ; r4 ← 乱数 0〜65535
 
80885A0  17 48          LDR R0, [PC, #$17] ; ($080599ED)
80885A2  33 F0          BLL #$0033
80885A4  B9 FC          BLH #$04B9
80885A6  00 06          LSL R0, R0, #$18
80885A8  00 0E          LSR R0, R0, #$18   ; r0 ← 乱数 0〜255
80885AA  24 18          ADD R4, R4, R0
80885AC  24 04          LSL R4, R4, #$10
80885AE  20 0C          LSR R0, R4, #$10
80885B0  14 4A          LDR R2, [PC, #$14]
80885B2  62 21          MOV R1, #$62
80885B4  33 F0          BLL #$0033
80885B6  B4 FC          BLH #$04B4
 
80885B8  00 06          LSL R0, R0, #$18
80885BA  00 0E          LSR R0, R0, #$18   ; r0 ← (((乱数値 0〜65535) + (乱数値 0〜255)) mod 0x10000) mod 98
80885BC  29 78          LDRB R1, [R5, #$00]
80885BE  69 44          ADD R1, SP
80885C0  09 78          LDRB R1, [R1, #$00] ; r1 ← (0, 4, 24, 100)
80885C2  88 42          CMP R0, R1
80885C4  4D D8          BHI $08088662
 
80885C6  0D 48          LDR R0, [PC, #$0D] ; ($08058805)
80885C8  33 F0          BLL #$0033
80885CA  A6 FC          BLH #$04A6
80885CC  04 1C          ADD R4, R0, #$00
80885CE  0C 48          LDR R0, [PC, #$0C] ; ($080599ED)
80885D0  33 F0          BLL #$0033
80885D2  A2 FC          BLH #$04A2
80885D4  00 06          LSL R0, R0, #$18
80885D6  00 0E          LSR R0, R0, #$18
80885D8  24 18          ADD R4, R4, R0
80885DA  24 04          LSL R4, R4, #$10
80885DC  FF 20          MOV R0, #$FF
80885DE  00 04          LSL R0, R0, #$10
80885E0  20 40          AND R0, R4
80885E2  00 0C          LSR R0, R0, #$10   ; r0 ← ((乱数値 0〜65535) + (乱数値 0〜255)) mod 256
80885E4  01 26          MOV R6, #$01
80885E6  7F 28          CMP R0, #$7F
80885E8  0E D8          BHI $08088608
 
80885EA  6C 88          LDRH R4, [R5, #$02] ; 乱数値 r0 が 0〜127 の範囲であった場合
80885EC  15 E0          BAL $0808861A
80885EE  00 00          
 
80885F0  84 B4 0F 08 6C 58 0F 08
80885F8  41 18 0C 08
 
80885FC  05 88          LDRH R5, [R0, #$00]
80885FE  05 08          LSR R5, R0, #$00
8088600  ED 99          LDR R1, [SP, #$03B4]
8088602  05 08          LSR R5, R0, #$00
8088604  B1 0A          LSR R1, R6, #$0A
8088606  00 08          LSR R0, R0, #$00
8088608  CF 28          CMP R0, #$CF
808860A  01 D8          BHI $08088610
808860C  AC 88          LDRH R4, [R5, #$04] ; 乱数値 r0 が 128〜207 の範囲であった場合
808860E  04 E0          BAL $0808861A
 
8088610  FB 28          CMP R0, #$FB
8088612  01 D8          BHI $08088618
8088614  EC 88          LDRH R4, [R5, #$06] ; 乱数値 r0 が 208〜251 の範囲であった場合
8088616  00 E0          BAL $0808861A
 
8088618  2C 89          LDRH R4, [R5, #$08] ; 乱数値 r0 が 252〜255 の範囲であった場合
 
...
 
8088662  01 B0          ADD SP, #$0004
8088664  70 BC          POP {R4-R6}
8088666  01 BC          POP {R0}
8088668  00 47          BX R0
 
;------------------------------------------
; r0 ← 16-bit 乱数値
;------------------------------------------
8058804  70 B5          PUSH {R4-R6,LR}
8058806  10 4D          LDR R5, [PC, #$10]
8058808  63 F0          BLL #$0063
805880A  90 FB          BLH #$0390
 
805880C  0F 4E          LDR R6, [PC, #$0F]
805880E  80 19          ADD R0, R0, R6
8058810  04 88          LDRH R4, [R0, #$00] ; R0: 0x0200E080
8058812  00 2C          CMP R4, #$00
8058814  00 D1          BNE $08058818
8058816  0E 4C          LDR R4, [PC, #$0E] ; R4 ← 0x2a6d
 
8058818  A0 00          LSL R0, R4, #$02
805881A  00 19          ADD R0, R0, R4
805881C  C0 00          LSL R0, R0, #$03
805881E  00 19          ADD R0, R0, R4
8058820  00 04          LSL R0, R0, #$10
8058822  01 0E          LSR R1, R0, #$18
8058824  00 02          LSL R0, R0, #$08
8058826  04 0C          LSR R4, R0, #$10
8058828  0C 43          ORR R4, R1
 
805882A  63 F0          BLL #$0063
805882C  7F FB          BLH #$037F         ;
805882E  80 19          ADD R0, R0, R6
8058830  04 80          STRH R4, [R0, #$00]
 
8058832  63 F0          BLL #$0063
8058834  7B FB          BLH #$037B
8058836  07 49          LDR R1, [PC, #$07]
8058838  40 18          ADD R0, R0, R1
805883A  00 88          LDRH R0, [R0, #$00] ; R0: 0x0200E082
805883C  20 18          ADD R0, R4, R0
805883E  00 04          LSL R0, R0, #$10
8058840  00 0C          LSR R0, R0, #$10
8058842  70 BC          POP {R4-R6}
8058844  02 BC          POP {R1}
8058846  08 47          BX R1
 
8058848  39 90 06 08 8C 76 00 00
8058850  6D 2A 00 00 8E 76 00 00
 
;------------------------------------------
; r0 ← 8-bit 乱数値
;------------------------------------------
80599EC  70 B5          PUSH {R4-R6,LR}
80599EE  46 46          MOV R6, R8
80599F0  40 B4          PUSH {R6}
80599F2  0E 4C          LDR R4, [PC, #$0E] ; ($080eefb2)
80599F4  0E 4D          LDR R5, [PC, #$0E] ; ($08069039)
80599F6  62 F0          BLL #$0062
80599F8  99 FA          BLH #$0299
 
80599FA  0E 4E          LDR R6, [PC, #$0E]
80599FC  80 19          ADD R0, R0, R6
80599FE  00 88          LDRH R0, [R0, #$00]
8059A00  00 19          ADD R0, R0, R4
8059A02  00 78          LDRB R0, [R0, #$00]
8059A04  80 46          MOV R8, R0 ; R8 ← (8-bit 乱数値)
 
8059A06  62 F0          BLL #$0062
8059A08  91 FA          BLH #$0291
8059A0A  04 1C          ADD R4, R0, #$00
8059A0C  62 F0          BLL #$0062
8059A0E  8E FA          BLH #$028E
8059A10  80 19          ADD R0, R0, R6
8059A12  00 88          LDRH R0, [R0, #$00]
8059A14  01 30          ADD R0, #$01
8059A16  FF 21          MOV R1, #$FF
8059A18  08 40          AND R0, R1
8059A1A  A4 19          ADD R4, R4, R6
8059A1C  20 80          STRH R0, [R4, #$00]
 
8059A1E  40 46          MOV R0, R8
8059A20  08 BC          POP {R3}
8059A22  98 46          MOV R8, R3
 
8059A24  70 BC          POP {R4-R6}
8059A26  02 BC          POP {R1}
8059A28  08 47          BX R1
 
8059A2A  00 00
 
8059A2C  B2 EF 0E 08 
8059A30  39 90 06 08  
8059A34  D6 08 00 00 
 
;------------------------------------------
; 8-bit 乱数値の index
;------------------------------------------
8069038  01 48          LDR R0, [PC, #$01] ; (0x02000410)
806903A  00 68          LDR R0, [R0, #$00]
806903C  70 47          BX LR
 
8069040  10 04 00 02
 
;------------------------------------------
; フレーム経過による乱数の更新(フィールド上)
;------------------------------------------
...
80517F4  08 88          LDRH R0, [R1, #$00] ; (0x0200E082)
80517F6  01 30          ADD R0, #$01
80517F8  08 80          STRH R0, [R1, #$00]
...
 
;------------------------------------------
; フレーム経過による乱数の更新(戦闘中)
;------------------------------------------
...
80B23E8  01 88          LDRH R1, [R0, #$00] ; (0x0200E080)
80B23EA  01 31          ADD R1, #$01
80B23EC  01 80          STRH R1, [R0, #$00]
...
 
最終更新:2024年12月31日 18:06