Prev: 48961 Up: Map Next: 48981
48965: Generate Random Number
Returns a number from 0 up to, but not including, A.
The frame counter chooses how far to walk around that range.
Input
A Exclusive upper bound
Output
A The generated number
Mix the frame counter into a number below the limit in A.
GenerateRandomNumber 48965 PUSH BC Stash BC on the stack.
48966 LD C,A Store the exclusive upper bound in C.
48967 LD A,(23672) Load *FRAMES into B as the loop count.
48970 LD B,A
48971 LD A,C Restore the exclusive upper bound into A.
GenerateRandomNumber_Loop 48972 DEC A Decrease the walking value by one.
48973 JR NZ,GenerateRandomNumber_Next Jump to GenerateRandomNumber_Next if it has not wrapped past zero.
48975 LD A,C Wrap back to the exclusive upper bound.
GenerateRandomNumber_Next 48976 DJNZ GenerateRandomNumber_Loop Decrease the frame-count loop by one and loop back to GenerateRandomNumber_Loop until the count is zero.
48978 DEC A Decrease the result by one so the range starts at 0.
48979 POP BC Restore BC from the stack.
48980 RET Return.
Prev: 48961 Up: Map Next: 48981