Prev: E6C8 Up: Map Next: E713
E6EC: Generate Random Number
Used by the routine at Game_Initialisation.
Output
BC The generated random number
GenerateRandomNumber E6EC PUSH HL Stash HL on the stack.
E6ED LD HL,($E2C5) HL=*RandomNumberSeed.
E6F0 LD A,(HL) Fetch a byte from *HL and store it in A.
E6F1 RLCA Multiply A by 10.
E6F2 RLCA
E6F3 RLCA
E6F4 PUSH AF Stash the result on the stack.
E6F5 LD A,R A=the contents of the Memory Refresh Register.
E6F7 AND %00011111 Ensure the number is between 00-1F.
E6F9 LD H,A Store the result in H.
E6FA INC L Increment L by one.
E6FB LD ($E2C5),HL Write HL to *RandomNumberSeed.
E6FE POP AF Restore AF from the stack.
E6FF LD ($E2C5),HL Write HL to *RandomNumberSeed.
E702 LD HL,$D825 HL=D825.
E705 SRL A Divide A by 02.
HalveRandomNumber E707 SRL A Divide A by 02.
E709 CP (HL) Jump to HalveRandomNumber if A is greater than or equal to *HL.
E70A JP P,HalveRandomNumber
E70D INC A Increment A by one.
E70E LD B,$00 Store the result in BC.
E710 LD C,A
E711 POP HL Restore HL from the stack.
E712 RET Return.
Prev: E6C8 Up: Map Next: E713