Prev: 50553 Up: Map Next: 50578
50562: 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 50562 PUSH BC Stash BC on the stack.
50563 LD C,A Store the exclusive upper bound in C.
50564 CALL FetchFrames Call FetchFrames to read *FRAMES.
50567 LD B,A Use the frame counter as the loop count in B.
50568 LD A,C Restore the exclusive upper bound into A.
GenerateRandomNumber_Loop 50569 DEC A Decrease the walking value by one.
50570 JR NZ,GenerateRandomNumber_Next Jump to GenerateRandomNumber_Next if it has not wrapped past zero.
50572 LD A,C Wrap back to the exclusive upper bound.
GenerateRandomNumber_Next 50573 DJNZ GenerateRandomNumber_Loop Decrease the frame-count loop by one and loop back to GenerateRandomNumber_Loop until the count is zero.
50575 DEC A Decrease the result by one so the range starts at 0.
50576 POP BC Restore BC from the stack.
50577 RET Return.
Prev: 50553 Up: Map Next: 50578