;
; 32-bit 疑似乱数生成器
;
8068AAC 03 4A LDR R2, [PC, #$03] ; 0x020019b8
8068AAE 11 68 LDR R1, [R2, #$00]
8068AB0 03 48 LDR R0, [PC, #$03] ; 0x6c078965
8068AB2 48 43 MUL R0, R1
8068AB4 07 30 ADD R0, #$07 ; +7
8068AB6 10 60 STR R0, [R2, #$00]
8068AB8 70 47 BX LR
8068ABA 00 00
8068ABC B8 19 00 02 65 89 07 6C
;
; アイテムドロップ判定部分
;
807B764 F0 B5 PUSH {R4-R7,LR}
807B766 47 46 MOV R7, R8
807B768 80 B4 PUSH {R7}
807B76A 04 1C ADD R4, R0, #$00
807B76C 09 06 LSL R1, R1, #$18
807B76E 0E 0E LSR R6, R1, #$18
807B770 12 06 LSL R2, R2, #$18
807B772 17 48 LDR R0, [PC, #$17]
807B774 D2 0C LSR R2, R2, #$13
807B776 12 18 ADD R2, R2, R0
807B778 15 7F LDRB R5, [R2, #$1C] ; 確率設定値
807B77A 97 7E LDRB R7, [R2, #$1A] ; アイテム ID (byte 0)
807B77C D2 7E LDRB R2, [R2, #$1B] ; アイテム ID (byte 1)
807B77E 90 46 MOV R8, R2
807B780 00 2D CMP R5, #$00
807B782 20 D0 BEQ $0807B7C6 ; 設定値が 0 の場合
807B784 08 2E CMP R6, #$08
807B786 1E D8 BHI $0807B7C6 ; (取得アイテムが 9 個以上?)
807B788 12 48 LDR R0, [PC, #$12] ; $08068aad
807B78A 0D F1 BLL #$010D
807B78C E7 FD BLH #$05E7 ; R0 ← (32-bit 乱数)
807B78E 00 04 LSL R0, R0, #$10
807B790 00 0C LSR R0, R0, #$10 ; R0 ← R0 mod 65536
807B792 11 4A LDR R2, [PC, #$11] ; $08000f2d
807B794 64 21 MOV R1, #$64
807B796 0D F1 BLL #$010D
807B798 E5 FD BLH #$05E5 ; R0 ← R0 mod 100
807B79A 00 04 LSL R0, R0, #$10
807B79C 00 0C LSR R0, R0, #$10
807B79E A8 42 CMP R0, R5
807B7A0 11 D8 BHI $0807B7C6 ; 乱数 > 境界値 の場合、落とさない
807B7A2 20 68 LDR R0, [R4, #$00]
807B7A4 B1 00 LSL R1, R6, #$02
807B7A6 40 18 ADD R0, R0, R1
807B7A8 0C 4A LDR R2, [PC, #$0C]
807B7AA 80 18 ADD R0, R0, R2
807B7AC 07 70 STRB R7, [R0, #$00]
807B7AE 20 68 LDR R0, [R4, #$00]
807B7B0 40 18 ADD R0, R0, R1
807B7B2 01 32 ADD R2, #$01
807B7B4 80 18 ADD R0, R0, R2
807B7B6 42 46 MOV R2, R8
807B7B8 02 70 STRB R2, [R0, #$00]
807B7BA 20 68 LDR R0, [R4, #$00]
807B7BC 40 18 ADD R0, R0, R1
807B7BE 08 49 LDR R1, [PC, #$08]
807B7C0 40 18 ADD R0, R0, R1
807B7C2 01 21 MOV R1, #$01
807B7C4 01 70 STRB R1, [R0, #$00]
;
807B7C6 08 BC POP {R3}
807B7C8 98 46 MOV R8, R3
807B7CA F0 BC POP {R4-R7}
807B7CC 01 BC POP {R0}
807B7CE 00 47 BX R0
807B7D0 A0 0F 22 08 AD 8A 06 08
807B7D8 2D 0F 00 08 0C 47 00 00
807B7E0 0E 47 00 00