![]() |
Routines |
| Prev: 59080 | Up: Map | Next: 59155 |
|
Used by the routine at Game_Initialisation.
|
||||||||
| GenerateRandomNumber | 59116 | PUSH HL | Stash HL on the stack. | |||||
| 59117 | LD HL,(58053) | HL=*RandomNumberSeed. | ||||||
| 59120 | LD A,(HL) | Fetch a byte from *HL and store it in A. | ||||||
| 59121 | RLCA | Multiply A by 16. | ||||||
| 59122 | RLCA | |||||||
| 59123 | RLCA | |||||||
| 59124 | PUSH AF | Stash the result on the stack. | ||||||
| 59125 | LD A,R | A=the contents of the Memory Refresh Register. | ||||||
| 59127 | AND %00011111 | Ensure the number is between 0-31. | ||||||
| 59129 | LD H,A | Store the result in H. | ||||||
| 59130 | INC L | Increment L by one. | ||||||
| 59131 | LD (58053),HL | Write HL to *RandomNumberSeed. | ||||||
| 59134 | POP AF | Restore AF from the stack. | ||||||
| 59135 | LD (58053),HL | Write HL to *RandomNumberSeed. | ||||||
| 59138 | LD HL,55333 | HL=55333. | ||||||
| 59141 | SRL A | Divide A by 2. | ||||||
| HalveRandomNumber | 59143 | SRL A | Divide A by 2. | |||||
| 59145 | CP (HL) | Jump to HalveRandomNumber if A is greater than or equal to *HL. | ||||||
| 59146 | JP P,HalveRandomNumber | |||||||
| 59149 | INC A | Increment A by one. | ||||||
| 59150 | LD B,0 | Store the result in BC. | ||||||
| 59152 | LD C,A | |||||||
| 59153 | POP HL | Restore HL from the stack. | ||||||
| 59154 | RET | Return. | ||||||
| Prev: 59080 | Up: Map | Next: 59155 |