Add random number generation functions.

hg-commit-id: e7d865799d77
This commit is contained in:
IIMarckus 2011-12-12 19:47:20 -07:00
parent 0152e33909
commit c44b52577b
2 changed files with 36 additions and 4 deletions

View file

@ -112,7 +112,11 @@ W_ENEMYMON5MOVE3 EQU $D95E
W_ENEMYMON6MOVE3 EQU $D98A W_ENEMYMON6MOVE3 EQU $D98A
H_RAND1 EQU $FFD3
H_RAND2 EQU $FFD4
; hardware registers, from the pandocs http://nocash.emubase.de/pandocs.htm ; hardware registers, from the pandocs http://nocash.emubase.de/pandocs.htm
rDIV EQU $FF04
rBGP EQU $FF47 rBGP EQU $FF47
rOBP0 EQU $FF48 rOBP0 EQU $FF48
rOBP1 EQU $FF49 rOBP1 EQU $FF49

View file

@ -1121,7 +1121,21 @@ Delay3: ; 3DD7
ld c,3 ld c,3
jp DelayFrames jp DelayFrames
INCBIN "baserom.gbc",$3DDC,$3E6D - $3DDC INCBIN "baserom.gbc",$3DDC,$3E5C - $3DDC
GenRandom: ; 3E5C
; store a random 8-bit value in a
push hl
push de
push bc
ld b,BANK(GenRandom_)
ld hl,GenRandom_
call Bankswitch
ld a,[H_RAND1]
pop bc
pop de
pop hl
ret
Predef: ; 3E6D Predef: ; 3E6D
; runs a predefined ASM command, where the command ID is read from $D0B7 ; runs a predefined ASM command, where the command ID is read from $D0B7
@ -3558,7 +3572,7 @@ GoodRodCode: ; 6259
call $62B4 call $62B4
jp c,$6581 jp c,$6581
Next625F: Next625F:
call $3E5C call GenRandom
srl a srl a
jr c,Next6278 jr c,Next6278
and 3 and 3
@ -3729,7 +3743,21 @@ ShrinkPic1:
ShrinkPic2: ShrinkPic2:
INCBIN "pic/trainer/shrink2.pic" INCBIN "pic/trainer/shrink2.pic"
INCBIN "baserom.gbc",$13074,$13AA0-$13074 INCBIN "baserom.gbc",$13074,$13A8F-$13074
GenRandom_: ; 7A8F
; generate a random 16-bit integer and store it at $FFD3,$FFD4
ld a,[rDIV]
ld b,a
ld a,[H_RAND1]
adc b
ld [H_RAND1],a
ld a,[rDIV]
ld b,a
ld a,[H_RAND2]
sbc b
ld [H_RAND2],a
ret
SECTION "bank5",DATA,BANK[$5] SECTION "bank5",DATA,BANK[$5]
INCBIN "baserom.gbc",$14000,$4000 INCBIN "baserom.gbc",$14000,$4000
@ -5635,7 +5663,7 @@ TrainerAI: ; 652E
ld a,[hli] ld a,[hli]
ld h,[hl] ld h,[hl]
ld l,a ld l,a
call $3E5C call GenRandom
jp [hl] jp [hl]
TrainerAIPointers: ; 655C TrainerAIPointers: ; 655C