![]() |
Routines |
Prev: F800 | Up: Map |
Used by the routine at F8B4. Generates a new safe combination code, sets a new random birth year for MR CREAK, and adjusts the game mode (so that all the shields need to be flashed again).
|
||||||||||
F855 | LD HL,$7FB8 | Clear the safe combination code (stored at 7F9F), the teachers' combination letters (stored at 7FA3), and the blackboard contents buffers (at 7FA8, 7FAE and 7FB4) | ||||||||
F858 | LD B,$19 | |||||||||
F85A | LD (HL),A | |||||||||
F85B | DEC L | |||||||||
F85C | DJNZ $F85A | |||||||||
F85E | LD D,A | DE=0000 | ||||||||
F85F | LD E,A | |||||||||
F860 | LD C,$04 | There are four letters in the combination | ||||||||
F862 | CALL $61A1 | A=random number | ||||||||
F865 | AND $0F | 0x00<=A<=0x0F | ||||||||
F867 | JR $F87C | Store MR WACKER's safe combination letter first (at 7F9F) | ||||||||
F869 | LD L,$9F | HL=7F9F (first letter of the safe combination code) | ||||||||
F86B | ADD HL,BC | HL=7F9F+C (1<=C<=3) | ||||||||
F86C | CALL $61A1 | A=random number | ||||||||
F86F | LD E,B | E=0 | ||||||||
F870 | RRCA | Get a random number between 0 and 3 in E | ||||||||
F871 | RL E | |||||||||
F873 | RRCA | |||||||||
F874 | RL E | |||||||||
F876 | AND $1F | Is A between 0x00 and 0x19? | ||||||||
F878 | CP $1A | |||||||||
F87A | JR NC,$F86C | Jump back if not | ||||||||
F87C | ADD A,$41 | A=ASCII code of an upper case letter | ||||||||
F87E | LD (HL),A | Store this in one of the slots at 7F9F | ||||||||
F87F | LD L,$A3 | Point HL at a random teacher's safe combination letter | ||||||||
F881 | ADD HL,DE | |||||||||
F882 | BIT 6,(HL) | Has this letter already been decided? | ||||||||
F884 | JR NZ,$F869 | Jump if so | ||||||||
F886 | LD (HL),A | Store the ASCII code in one of the four slots at 7FA3 | ||||||||
F887 | DEC C | Next combination letter | ||||||||
F888 | JR NZ,$F869 | Jump back until all four combination letters are done | ||||||||
The safe combination code has been generated. Now for MR CREAK's birth year.
|
||||||||||
F88A | LD L,$9A | HL=7F9A (which holds the identifier for CREAK's birth year battle) | ||||||||
F88C | CALL $61A1 | Get a random number between 0x00 and 0x14 in A | ||||||||
F88F | CP $15 | |||||||||
F891 | JR NC,$F88C | |||||||||
F893 | ADD A,A | A=random odd number between 0xD5 and 0xFD | ||||||||
F894 | ADD A,$D5 | |||||||||
F896 | LD (HL),A | Store this battle identifier at 7F9A | ||||||||
F897 | SUB $81 | Set HL to the address of the battle year message corresponding to this battle identifier | ||||||||
F899 | LD E,A | |||||||||
F89A | LD H,D | |||||||||
F89B | LD L,D | |||||||||
F89C | ADD HL,DE | |||||||||
F89D | ADD HL,DE | |||||||||
F89E | ADD HL,DE | |||||||||
F89F | ADD HL,HL | |||||||||
F8A0 | ADD HL,HL | |||||||||
F8A1 | LD A,H | |||||||||
F8A2 | ADD A,$DF | |||||||||
F8A4 | LD H,A | |||||||||
F8A5 | LD DE,$7F9B | Store the digits of CREAK's birth year at 7F9B | ||||||||
F8A8 | LD C,$04 | |||||||||
F8AA | LDIR | |||||||||
Finally, adjust the game mode.
|
||||||||||
F8AC | LD A,$01 | Set the game mode indicator at 7FEA to 1, indicating that the shields need to be flashed | ||||||||
F8AE | LD ($7FEA),A | |||||||||
F8B1 | RET |
Prev: F800 | Up: Map |