Routines |
Prev: C959 | Up: Map | Next: CAE7 |
|
|||||||||||||||
Clears the cashbox flags, clears the screen and displays the phase number.
|
|||||||||||||||
Prep_Display_Phase | C9B7 | LD HL,$0101 | Writes 01 to both CashboxReference_Inactive and CashboxReference_Active. | ||||||||||||
C9BA | LD ($D45C),HL | ||||||||||||||
C9BD | LD HL,$CC8D | Clear down the deposit flags (copies 00 to each from DoorDeposited_01). | |||||||||||||
C9C0 | LD DE,$CC8E | ||||||||||||||
C9C3 | LD BC,$000D | ||||||||||||||
C9C6 | LD (HL),$00 | ||||||||||||||
C9C8 | LDIR | ||||||||||||||
C9CA | XOR A | Call Clear_Screen (using 00). | |||||||||||||
C9CB | CALL Clear_Screen | ||||||||||||||
C9CE | JR Display_Phase | Jump to Display_Phase. | |||||||||||||
This routine has the ability to write any value across the screen buffer, however it's only ever called with A=00 (clear screen).
|
|||||||||||||||
Clear_Screen | C9D0 | LD HL,$4000 | Clears the screen buffer by writing 00 to all 6912 memory locations. | ||||||||||||
C9D3 | LD DE,$4001 | ||||||||||||||
C9D6 | LD BC,$1AFF | ||||||||||||||
C9D9 | LD (HL),A | ||||||||||||||
C9DA | LDIR | ||||||||||||||
C9DC | RET | ||||||||||||||
Displays the current "phase".
|
|||||||||||||||
Display_Phase | C9DD | LD HL,$CA4E | Copies Phase_Copy into Progress_Buffer (05 bytes of text data). | ||||||||||||
C9E0 | LD DE,$CA5C | ||||||||||||||
C9E3 | LD BC,$0005 | ||||||||||||||
C9E6 | LDIR | ||||||||||||||
C9E8 | LD HL,($CA5A) | Writes Phase_ASCII to Progress_Buffer (at $CA61 - just overwriting the numeric part). | |||||||||||||
C9EB | LD ($CA61),HL | ||||||||||||||
C9EE | LD HL,$CA4A | Call Progress_Base_10 with Phase. | |||||||||||||
C9F1 | CALL Progress_Base_10 | ||||||||||||||
C9F4 | LD HL,($CA61) | Writes $CA61 back to Phase_ASCII. | |||||||||||||
C9F7 | LD ($CA5A),HL | ||||||||||||||
C9FA | RET | Return. | |||||||||||||
Displays the current "day".
|
|||||||||||||||
Display_Day | C9FB | LD HL,$CA53 | Copies Day_Copy into Progress_Buffer ($05 bytes of text data). | ||||||||||||
C9FE | LD DE,$CA5C | ||||||||||||||
CA01 | LD BC,$0005 | ||||||||||||||
CA04 | LDIR | ||||||||||||||
CA06 | LD HL,($CA58) | Writes Day_ASCII to Progress_Buffer (at $CA61 - just overwriting the numeric part). | |||||||||||||
CA09 | LD ($CA61),HL | ||||||||||||||
CA0C | LD HL,$CA4C | Call Progress_Base_10 with Day. | |||||||||||||
CA0F | CALL Progress_Base_10 | ||||||||||||||
CA12 | LD HL,($CA61) | Writes $CA61 back to Day_ASCII. | |||||||||||||
CA15 | LD ($CA58),HL | ||||||||||||||
CA18 | RET | Return. | |||||||||||||
Progress_Base_10 | CA19 | LD A,(HL) | If the passed number is not more than 10 jump to Progress_Divisible_10. | ||||||||||||
CA1A | INC A | ||||||||||||||
CA1B | CP $0A | ||||||||||||||
CA1D | JR NC,Progress_Divisible_10 | ||||||||||||||
CA1F | LD (HL),A | Stores the ASCII representation of the number at $CA62 (for Progress_Buffer). It adds ASCII "0" so for example 1 ends up being 1 + 30 = 31 (e.g. "1" in ASCII). | |||||||||||||
CA20 | ADD A,$30 | ||||||||||||||
CA22 | LD ($CA62),A | ||||||||||||||
CA25 | JR Print_Progress | Jump to Print_Progress. | |||||||||||||
Progress_Divisible_10 | CA27 | LD (HL),$00 | Reset the current progress digit to 00. | ||||||||||||
CA29 | INC HL | Use the secondary digit of the currently focused progress. | |||||||||||||
Note this doesn't account for a third digit and so leads to eventual corruption. Once past day/ phase "99", this will display "00" and past "09" the first ASCII digit doesn't point to any usable image data. Note however, this occurs after ~4 hours of game play so isn't especially an issue.
|
|||||||||||||||
CA2A | INC (HL) | Increase this second digit by one. | |||||||||||||
CA2B | LD A,(HL) | Add ASCII "0" so for example 1 ends up being 1 + 30 = 31 (e.g. "1" in ASCII). Write this number to CA61 (for Progress_Buffer). | |||||||||||||
CA2C | ADD A,$30 | ||||||||||||||
CA2E | LD ($CA61),A | ||||||||||||||
CA31 | DEC HL | Move back to point to the original location of HL. | |||||||||||||
CA32 | LD A,(HL) | Again, add ASCII "0" for this digit too. Write this number to $CA62 (for Progress_Buffer). | |||||||||||||
CA33 | ADD A,$30 | ||||||||||||||
CA35 | LD ($CA62),A | ||||||||||||||
Prints the current progress buffer message to the screen.
|
|||||||||||||||
Print_Progress | CA38 | LD HL,$CA5C | Prints Progress_Buffer to the screen buffer at $486C using Print_TwoToneText.
|
||||||||||||
CA3B | LD DE,$486C | ||||||||||||||
CA3E | LD BC,$0703 | ||||||||||||||
CA41 | CALL Print_TwoToneText | ||||||||||||||
CA44 | LD B,$50 | Interrupt driven HALT loop ($50 cycles). | |||||||||||||
Progress_Halt_Loop | CA46 | HALT | |||||||||||||
CA47 | DJNZ Progress_Halt_Loop | ||||||||||||||
CA49 | RET | Return. | |||||||||||||
Phase | CA4A | DEFW $0006 | |||||||||||||
Day | CA4C | DEFW $0001 | |||||||||||||
Phase_Copy | CA4E | DEFM "PHASE" | "PHASE". | ||||||||||||
Day_Copy | CA53 | DEFM " DAY " | " DAY ". | ||||||||||||
Day_ASCII | CA58 | DEFM " 1" | " 1". | ||||||||||||
Phase_ASCII | CA5A | DEFM " 6" | " 6". | ||||||||||||
Progress_Buffer | CA5C | DEFM "PHASE 6",$FF | This is a buffer - so text changes during play: "PHASE 6". | ||||||||||||
Clears the screen and displays the day number.
|
|||||||||||||||
Prep_Display_Day | CA64 | XOR A | Clears the screen by passing 00 to Clear_Screen. | ||||||||||||
CA65 | CALL Clear_Screen | ||||||||||||||
CA68 | CALL Display_Day | Call Display_Day. | |||||||||||||
CA6B | RET | Return. | |||||||||||||
Clear down the day/ progress states.
|
|||||||||||||||
Init_Progress | CA6C | LD HL,$0000 | Clears Phase and Day (writes 0000 to them). | ||||||||||||
CA6F | LD ($CA4A),HL | ||||||||||||||
CA72 | LD ($CA4C),HL | ||||||||||||||
CA75 | LD A,$20 | Writes ASCII space (20) to CA61 and ASCII "0" (30) to CA62 (i.e. writes " 0" to the numeric portion of Progress_Buffer). | |||||||||||||
CA77 | LD HL,$CA61 | ||||||||||||||
CA7A | LD (HL),A | ||||||||||||||
CA7B | INC HL | ||||||||||||||
CA7C | LD A,$30 | ||||||||||||||
CA7E | LD (HL),A | ||||||||||||||
CA7F | RET | Return. | |||||||||||||
Cashboxes_Completed_Flag | CA80 | DEFB $00 | |||||||||||||
This entry point is used by the routine at Init_Title_Screen.
|
|||||||||||||||
Cashboxes_Completed | CA81 | CALL Prep_Display_Phase_0 | |||||||||||||
CA84 | RET C | ||||||||||||||
CA85 | LD B,$10 | ||||||||||||||
Cashboxes_Flash_Loop | CA87 | PUSH BC | |||||||||||||
CA88 | LD A,B | ||||||||||||||
CA89 | AND $01 | ||||||||||||||
CA8B | CALL Deposit_Flash_Prep | ||||||||||||||
CA8E | LD B,$10 | ||||||||||||||
CA90 | CALL Halt_Loop | ||||||||||||||
CA93 | POP BC | ||||||||||||||
CA94 | DJNZ Cashboxes_Flash_Loop | ||||||||||||||
CA96 | LD B,$30 | ||||||||||||||
CA98 | CALL Halt_Loop | ||||||||||||||
CA9B | LD A,B | ||||||||||||||
CA9C | CALL Deposit_Flash_Prep | ||||||||||||||
CA9F | CALL Random_Number | ||||||||||||||
CAA2 | LD B,A | ||||||||||||||
CAA3 | LD A,R | ||||||||||||||
CAA5 | LD C,A | ||||||||||||||
CAA6 | ADD A,B | ||||||||||||||
CAA7 | LD D,A | ||||||||||||||
CAA8 | LD A,($CBCF) | ||||||||||||||
CAAB | LD HL,$CBB4 | ||||||||||||||
CAAE | CALL $C3C0 | ||||||||||||||
CAB1 | LD ($CBCF),A | ||||||||||||||
CAB4 | LD B,$00 | ||||||||||||||
CAB6 | JP Halt_Loop | ||||||||||||||
Deposit_Flash_Prep | CAB9 | LD HL,$CC8D | Writes A across all the deposit flags (copies to each from DoorDeposited_01). | ||||||||||||
CABC | LD DE,$CC8E | ||||||||||||||
CABF | LD BC,$000D | ||||||||||||||
CAC2 | LD (HL),A | ||||||||||||||
CAC3 | LDIR | ||||||||||||||
CAC5 | JP $CC9B | Jump to CC9B. | |||||||||||||
Prep_Display_Phase_0 | CAC8 | CALL Prep_Display_Phase | |||||||||||||
This entry point is used by the routines at Flash_Lives and CD47.
|
|||||||||||||||
Prep_Display_Phase_1 | CACB | XOR A | Writes 00 to D2FE. | ||||||||||||
CACC | LD ($D2FE),A | ||||||||||||||
CACF | CALL Prep_Display_Phase_2 | ||||||||||||||
CAD2 | JR $CAE7 | ||||||||||||||
Prep_Display_Phase_2 | CAD4 | CALL Populate_Door_Buffer | Call Populate_Door_Buffer. | ||||||||||||
CAD7 | CALL Draw_PlayWithDoors | Call Draw_PlayWithDoors. | |||||||||||||
CADA | CALL Life_Images | Call Life_Images. | |||||||||||||
CADD | CALL $CC9B | Call CC9B. | |||||||||||||
CAE0 | CALL Draw_Score | Call Draw_Score. | |||||||||||||
CAE3 | CALL ActiveDoors | Call ActiveDoors. | |||||||||||||
CAE6 | RET | Return. |
Prev: C959 | Up: Map | Next: CAE7 |