Routines
 Prev: F800 Up: Map Next: F8B2
F855: Generate a safe combination code and set MR CREAK's birth year
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).
Input
A 0x00
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)
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
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
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