Prev: 38222 Up: Map Next: 38299
38265: Get Random Number
Input
A A random number between 0-52
The R register is incremented every instruction, providing a pseudo-random value.
GetRandomNumber 38265 LD A,R H=R.
38267 LD H,A
WasteTime_Loop_1 38268 DEC A Count down to zero from the refresh value.
38269 JR NZ,WasteTime_Loop_1
38271 LD A,R L=R.
38273 LD L,A
38274 LD DE,(23673) HL+=*FRAMES+1.
38278 ADD HL,DE
38279 LD A,%00111111 Keep only the lower 6 bits of H.
38281 AND H
38282 LD H,A
38283 LD A,(HL) Load the byte from the ZX Spectrum ROM pointed to by HL, store it in H.
38284 LD H,A
WasteTime_Loop_2 38285 DEC A Count down to zero from the ZX Spectrum ROM byte value.
38286 JR NZ,WasteTime_Loop_2
Ensure the value in A is in the range 0-52.
38288 LD A,H A=H.
38289 LD H,52 H=52.
GetRandomNumber_Loop 38291 SUB H Subtract 52 from A.
38292 JR Z,GetRandomNumber_Loop Jump back to GetRandomNumber_Loop if the result is zero.
38294 CP 53 Jump back to GetRandomNumber_Loop if the result is higher than, or equal to 53.
38296 JR NC,GetRandomNumber_Loop
38298 RET Return.
Prev: 38222 Up: Map Next: 38299