|  | Routines | 
| Prev: 40056 | Up: Map | Next: 40168 | 
| 
Used by the routines at Action_Dir, Action_Run, Action_Talkto, Action_Shoot, 38579, ActionBurn, ActionCapture and ActionClimbOut.
 
 
 | ||||||||||||
| GetRandomNum | 40095 | CALL CalcRandom | Call CalcRandom. | |||||||||
| 40098 | BIT 7,A | Return if bit 7 is set. | ||||||||||
| 40100 | RET Z | |||||||||||
| 40101 | NEG | Negate the accumulator. | ||||||||||
| 40103 | RET | Return. | ||||||||||
| 
This entry point is used by the routine at Action_Attack.
 | ||||||||||||
| CalcRandom | 40104 | PUSH IX | Stash IX and BC on the stack. | |||||||||
| 40106 | PUSH BC | |||||||||||
| 40107 | LD C,A | C=A. | ||||||||||
| 40108 | SLA A | A=A * $02. | ||||||||||
| 40110 | JR NC,GetRandomNum_0 | Jump to GetRandomNum_0 if there's no carry over. | ||||||||||
| 40112 | LD A,255 | Else, set A=255. | ||||||||||
| GetRandomNum_0 | 40114 | LD B,A | B=A. | |||||||||
| GetRandomNum_1 | 40115 | LD IX,46866 | Increase the LSB of the RandomCounter by one. | |||||||||
| 40119 | INC (IX+1) | |||||||||||
| 40122 | JR NZ,GetRandomNum_2 | If the LSB has not "rolled over" to $00, skip updating the MSB on the following line. Jump to GetRandomNum_0. | ||||||||||
| 40124 | INC (IX+0) | Increase the MSB of the RandomCounter by one. | ||||||||||
| GetRandomNum_2 | 40127 | LD IX,(46866) | IX=RandomCounter. | |||||||||
| 40131 | LD A,(46862) | A=RandomSeed. | ||||||||||
| 40134 | ADC A,(IX+0) | |||||||||||
| 40137 | ADD IX,DE | |||||||||||
| 40139 | XOR (IX+1) | |||||||||||
| 40142 | PUSH HL | Stash HL on the stack. | ||||||||||
| 40143 | LD HL,46862 | Compare RandomSeed against A. | ||||||||||
| 40146 | CP (HL) | |||||||||||
| 40147 | POP HL | Restore HL from the stack. | ||||||||||
| 40148 | JR Z,GetRandomNum_1 | If the result of the comparison was zero, jump back to GetRandomNum_1 to try again. | ||||||||||
| 40150 | LD (46862),A | Write A to RandomSeed. | ||||||||||
| GetRandomNum_3 | 40153 | CP B | ||||||||||
| 40154 | JR C,GetRandomNum_4 | |||||||||||
| 40156 | JR Z,GetRandomNum_4 | |||||||||||
| 40158 | SRL A | |||||||||||
| 40160 | JP GetRandomNum_3 | |||||||||||
| GetRandomNum_4 | 40163 | SUB C | ||||||||||
| 40164 | POP BC | Restore BC and IX from the stack. | ||||||||||
| 40165 | POP IX | |||||||||||
| 40167 | RET | Return. | ||||||||||
| Prev: 40056 | Up: Map | Next: 40168 |