Routines |
Prev: DAF9 | Up: Map | Next: DB1F |
Generates a constantly changing value in the A register, using random addresses and bytes from ROM.
HL gets gradually incremented from 0. The ROM address and the byte stored there is returned in the A register to deliver a pseudo-random value.
|
||||
DB06 | LD ($DB1D),HL | Preserve HL register pair | ||
DB09 | LD HL,($DB1B) | Retrieve address pointer | ||
DB0C | INC HL | Increment pointer to next address in ROM | ||
DB0D | LD A,H | Ensure high byte of pointer doesn't exceed 31 (keeps ROM address capped at 8191) | ||
DB0E | AND $1F | |||
DB10 | LD H,A | |||
DB11 | LD A,(HL) | Pick a byte from this ROM address | ||
DB12 | ADD A,H | Add both high & low byte address values | ||
DB13 | ADD A,L | This gives the value variation if the ROM contains a lot of the same consecutive values | ||
DB14 | LD ($DB1B),HL | Store the ROM address pointer for next time | ||
DB17 | LD HL,($DB1D) | Retrieve HL register pair | ||
DB1A | RET | |||
Store for registers used in the above routine
|
||||
DB1B | DEFW $0000 | Store for incrementing ROM address pointer. Starts at 0 | ||
DB1D | DEFW $0000 | Temp store for HL register pair during the routine |
Prev: DAF9 | Up: Map | Next: DB1F |