Routines |
Prev: 24027 | Up: Map | Next: 24132 |
Used by the routine at 24175. Compares the bike and storeroom combinations with what ERIC has just written on a blackboard. Unchains the bike or gives ERIC the storeroom key if there is a match.
|
||||||||
24028 | LD D,H | D=127 | ||||||
24029 | LD L,251 | Reset all of ERIC's status flags at 32763 now that he's no longer writing on the board | ||||||
24031 | LD (HL),0 | |||||||
24033 | LD L,156 | HL=32668 (combinations) | ||||||
24035 | LD BC,2052 | B=8 (4 numbers, 4 letters), C=4 | ||||||
24038 | RES 7,(HL) | Reset bit 7 of each combination number/letter; bit 7 will be set later if there is a match with what ERIC wrote on the board | ||||||
24040 | INC L | |||||||
24041 | DJNZ 24038 | |||||||
24043 | LD L,216 | HL=32728 (which holds the identifier of the blackboard ERIC wrote on) | ||||||
24045 | LD L,(HL) | Point HL at byte 1 of the relevant blackboard buffer (bytes 2-5 hold the first 4 characters ERIC wrote) | ||||||
24046 | INC L | |||||||
24047 | LD B,C | B=4 | ||||||
24048 | INC L | Return unless at least four letters were written on the board by ERIC | ||||||
24049 | BIT 7,(HL) | |||||||
24051 | RET NZ | |||||||
24052 | DJNZ 24048 | |||||||
24054 | EX DE,HL | Point DE at the last byte of the blackboard buffer | ||||||
24055 | LD L,156 | HL=32668 (combinations) | ||||||
24057 | LD B,8 | 4 numbers, 4 letters | ||||||
24059 | LD A,(DE) | A=ASCII code of the character written on the board | ||||||
24060 | CP 96 | Is it upper case? | ||||||
24062 | JR C,24066 | Jump if so | ||||||
24064 | SUB 32 | Make lower case characters upper case | ||||||
24066 | CP (HL) | Does the character written on the board match the combination number/letter? | ||||||
24067 | JR Z,24073 | Jump if so | ||||||
24069 | INC L | Point to the next combination number/letter | ||||||
24070 | DJNZ 24066 | |||||||
24072 | RET | |||||||
24073 | DEC E | Point to the next character written on the board | ||||||
24074 | SET 7,(HL) | Signal: matching character | ||||||
24076 | DEC C | Next combination letter/number | ||||||
24077 | JR NZ,24055 | Jump back to check the remaining numbers/letters | ||||||
24079 | LD L,156 | HL=32668 (combinations) | ||||||
24081 | LD B,4 | There are 4 digits in the bike combination | ||||||
24083 | LD A,(HL) | Pick up the first digit | ||||||
24084 | AND (HL) | Bit 7 of A will remain set if all four written characters matched up with the bike combination digits | ||||||
24085 | INC L | |||||||
24086 | DJNZ 24084 | |||||||
24088 | RLCA | Was there a match? | ||||||
24089 | JR NC,24114 | Jump if not | ||||||
ERIC has written the bike combination number on a blackboard. Free the bike if it's still chained up.
|
||||||||
24091 | LD HL,54017 | H=211 (bike), L=1 | ||||||
24094 | LD A,(HL) | A=bike's x-coordinate | ||||||
24095 | CP 224 | Is the bike already free? | ||||||
24097 | RET NZ | Return if so | ||||||
24098 | LD (HL),100 | Place the bike at x-coordinate 100 | ||||||
24100 | LD HL,57600 | Alter UDG references in the play area to release the bike from the tree | ||||||
24103 | CALL 27672 | |||||||
24106 | LD A,100 | Add 1000 to the score and print it | ||||||
24108 | CALL 29621 | |||||||
24111 | JP 62401 | Print the inventory and make a sound effect | ||||||
The first four characters written on the board by ERIC didn't match the bike combination digits. What about the storeroom combination letters?
|
||||||||
24114 | LD A,(HL) | Pick up the first combination letter | ||||||
24115 | LD B,4 | There are 4 letters in the storeroom combination | ||||||
24117 | AND (HL) | Bit 7 of A will remain set if all four written characters matched up with the storeroom combination letters | ||||||
24118 | INC L | |||||||
24119 | DJNZ 24117 | |||||||
24121 | RLCA | Was there a match? | ||||||
24122 | RET NC | Return if not | ||||||
24123 | LD L,235 | HL=32747 (which holds the inventory flags) | ||||||
24125 | BIT 1,(HL) | Has ERIC already got the storeroom key? | ||||||
24127 | RET NZ | Return if so | ||||||
24128 | SET 1,(HL) | Otherwise give ERIC the key to the storeroom | ||||||
24130 | JR 24106 | Add 1000 to the score, print the inventory, and make a sound effect |
Prev: 24027 | Up: Map | Next: 24132 |