Routines |
Prev: $290F | Up: Map | Next: $298B |
$292F | LDX #$04 | There are 4 letters in the safe combination code. | ||
$2931 | LDA $D41B | Generate a random value between 0 and 31. | ||
$2934 | AND #$1F | |||
$2936 | CLC | Add $41 (the ASCII code for 'A'). | ||
$2937 | ADC #$41 | |||
$2939 | CMP #$5B | Is the result greater than $5A (the code for 'Z')? | ||
$293B | BCS $2931 | Branch back if so. | ||
$293D | CMP $90,X | Does this randomly chosen letter match the character at $90+X (which might be the first digit of MR CREAK's year of birth at $94)? | ||
$293F | BEQ $2931 | Branch back if so to get another one. | ||
$2941 | DEX | Decrement the letter counter. | ||
$2942 | STA $90,X | Store a randomly chosen letter at $90-$93. | ||
$2944 | STA $4E,X | Store a copy of it at $4E-$51. | ||
$2946 | BNE $2931 | Branch back until 4 letters have been generated. | ||
$2948 | LDA #$0A | Initialise the shuffle counter at $55 to $0A. | ||
$294A | STA $55 | |||
$294C | LDA $D41B | Generate a random number between 1 and 3. Call it P. | ||
$294F | AND #$03 | |||
$2951 | BNE $2955 | |||
$2953 | LDA #$01 | |||
$2955 | STA $56 | Store P at $56. | ||
$2957 | INX | Increment X for no apparent reason. | ||
$2958 | STA $FD | Set the LSB of the lesson clock at $FD to P for no apparent reason. | ||
$295A | LDA $D41B | Generate a random number between 1 and 3. Call it Q. | ||
$295D | AND #$03 | |||
$295F | BNE $2963 | |||
$2961 | LDA #$01 | |||
$2963 | STA $57 | Store Q at $57. | ||
$2965 | LDX $57 | Swap the letters stored at $4E+P and $4E+Q. | ||
$2967 | LDA $4E,X | |||
$2969 | STA $54 | |||
$296B | LDX $56 | |||
$296D | LDA $4E,X | |||
$296F | LDX $57 | |||
$2971 | STA $4E,X | |||
$2973 | LDX $56 | |||
$2975 | LDA $54 | |||
$2977 | STA $4E,X | |||
$2979 | DEC $55 | Decrement the shuffle counter at $55. | ||
$297B | LDA $55 | Pick up the shuffle counter from $55. | ||
$297D | BNE $294C | Branch unless it's zero now. | ||
$297F | LDX #$00 | Copy the randomly shuffled letters at $4E-$51 to $03-$06. | ||
$2981 | LDA $4E,X | |||
$2983 | STA $03,X | |||
$2985 | INX | |||
$2986 | CPX #$04 | |||
$2988 | BNE $2981 | |||
$298A | RTS |
Prev: $290F | Up: Map | Next: $298B |