Routines |
Prev: 5F9C | Up: Map | Next: 5FF0 |
Used by the routine at F5BE. The main entry point is used to play the theme tune.
|
||||
5F9D | LD HL,$5C3B | Reset bit 5 at 5C3B, clearing the record of any keypresses before the tune starts | ||
5FA0 | RES 5,(HL) | |||
5FA2 | LD HL,$DC40 | The theme tune data starts at DC41 | ||
This entry point is used by the routine at 5D63 with HL=DC2C-1 (the up-a-year tune data starts at DC2C).
|
||||
5FA5 | DI | Disable interrupts | ||
5FA6 | INC HL | Point HL at the next tune datum | ||
5FA7 | LD A,(HL) | Pick it up | ||
5FA8 | INC A | Is it an end-of-section marker? | ||
5FA9 | JR NZ,$5FB0 | Jump if not | ||
5FAB | INC HL | Point HL at the first datum in the next section | ||
5FAC | LD A,(HL) | |||
5FAD | INC HL | |||
5FAE | LD H,(HL) | |||
5FAF | LD L,A | |||
5FB0 | LD A,(HL) | A=tune datum | ||
5FB1 | AND A | Have we reached the end of the tune? | ||
5FB2 | JP Z,$F2D9 | Jump if so | ||
A non-zero tune datum has been found, meaning the tune is not finished yet.
|
||||
5FB5 | PUSH HL | Save the tune data table pointer | ||
5FB6 | RRCA | Set the carry flag if we should pause briefly | ||
5FB7 | LD B,A | Copy the right-rotated tune datum to B | ||
5FB8 | JR NC,$5FC2 | Jump unless we should pause briefly | ||
5FBA | LD D,$0F | Pause briefly | ||
5FBC | DEC E | |||
5FBD | JR NZ,$5FBC | |||
5FBF | DEC D | |||
5FC0 | JR NZ,$5FBC | |||
5FC2 | AND $07 | 0<=A<=7 | ||
5FC4 | LD C,A | C=border colour for this note | ||
5FC5 | ADD A,A | Point HL at an entry in the note duration/pitch data table at 5FF0 | ||
5FC6 | ADD A,$F0 | |||
5FC8 | LD L,A | |||
5FC9 | LD H,$5F | |||
5FCB | LD A,B | A=original tune datum rotated right one bit | ||
5FCC | RRCA | Obtain the note frequency parameter in E and the note duration parameter in HL | ||
5FCD | RRCA | |||
5FCE | RRCA | |||
5FCF | AND $0F | |||
5FD1 | LD B,A | |||
5FD2 | LD E,(HL) | |||
5FD3 | INC L | |||
5FD4 | LD A,(HL) | |||
5FD5 | LD HL,$0000 | |||
5FD8 | ADD HL,DE | |||
5FD9 | DJNZ $5FD8 | |||
5FDB | RES 0,L | |||
5FDD | LD E,A | |||
5FDE | LD A,C | Produce a note | ||
5FDF | OUT ($FE),A | |||
5FE1 | XOR $10 | |||
5FE3 | LD C,A | |||
5FE4 | LD B,E | |||
5FE5 | DJNZ $5FE5 | |||
5FE7 | DEC HL | |||
5FE8 | DEC L | |||
5FE9 | LD A,H | |||
5FEA | OR L | |||
5FEB | JR NZ,$5FDE | |||
5FED | POP HL | Restore the tune data table pointer to HL | ||
5FEE | JR $5FA6 | Pick up the next tune datum |
Prev: 5F9C | Up: Map | Next: 5FF0 |