Dun Darach | Routines |
Prev: AE46 | Up: Map |
Used by the routines at Str_Decode and Dict_Print.
|
|||||||||||||
Words are grouped into letter length, in order starting from one.
|
|||||||||||||
Dict_GetWord | AE56 | LD HL,Dict_Groups | Start with address of 1 letter word. | ||||||||||
AE59 | LD DE,$0003 | Number of bytes in the group data structure. | |||||||||||
AE5C | LD C,D | Index of group. | |||||||||||
AE5D | LD B,D | ||||||||||||
Dict_GetWord_0 | AE5E | CP (HL) | See if index is within the current word group. | ||||||||||
AE5F | JR C,Dict_GetWord_1 | ||||||||||||
AE61 | ADD HL,DE | if not move onto next group. | |||||||||||
AE62 | INC C | Increase the number of letters for group. | |||||||||||
AE63 | JR Dict_GetWord_0 | ||||||||||||
Dict_GetWord_1 | AE65 | AND A | |||||||||||
AE66 | SBC HL,DE | Get difference between index and start of group index. | |||||||||||
AE68 | SUB (HL) | ||||||||||||
AE69 | INC HL | ||||||||||||
AE6A | LD E,(HL) | Get start address of words in group. | |||||||||||
AE6B | INC HL | ||||||||||||
AE6C | LD D,(HL) | ||||||||||||
AE6D | EX DE,HL | ||||||||||||
AE6E | RET Z | If first word in list, just return as we have the correct address. | |||||||||||
Dict_GetWord_2 | AE6F | ADD HL,BC | Offset address by words size until correct word is found using original index. | ||||||||||
AE70 | DEC A | ||||||||||||
AE71 | JR NZ,Dict_GetWord_2 | ||||||||||||
AE73 | RET |
Prev: AE46 | Up: Map |