Routines |
Prev: 92CB | Up: Map | Next: 932B |
Used by the routine at 85CC. Returns with the zero flag reset if ENTER or the fire button is pressed while the tune is being played.
|
||||||||
92DC | LD A,(IY+$00) | Pick up the next byte of tune data from the table at 846E | ||||||
92DF | CP $FF | Has the tune finished? | ||||||
92E1 | RET Z | Return (with the zero flag set) if so | ||||||
92E2 | LD C,A | Copy the first byte of data for this note (which determines the duration) to C | ||||||
92E3 | LD B,$00 | Initialise B, which will be used as a delay counter in the note-producing loop | ||||||
92E5 | XOR A | Set A=0 (for no apparent reasaon) | ||||||
92E6 | LD D,(IY+$01) | Pick up the second byte of data for this note | ||||||
92E9 | LD A,D | Copy it to A | ||||||
92EA | CALL $932B | Calculate the attribute file address for the corresponding piano key | ||||||
92ED | LD (HL),$50 | Set the attribute byte for the piano key to 0x50 (INK 0: PAPER 2: BRIGHT 1) | ||||||
92EF | LD E,(IY+$02) | Pick up the third byte of data for this note | ||||||
92F2 | LD A,E | Copy it to A | ||||||
92F3 | CALL $932B | Calculate the attribute file address for the corresponding piano key | ||||||
92F6 | LD (HL),$28 | Set the attribute byte for the piano key to 0x28 (INK 0: PAPER 5: BRIGHT 0) | ||||||
92F8 | OUT ($FE),A | Produce a sound based on the frequency parameters in the second and third bytes of data for this note (copied into D and E) | ||||||
92FA | DEC D | |||||||
92FB | JR NZ,$9302 | |||||||
92FD | LD D,(IY+$01) | |||||||
9300 | XOR $18 | |||||||
9302 | DEC E | |||||||
9303 | JR NZ,$930A | |||||||
9305 | LD E,(IY+$02) | |||||||
9308 | XOR $18 | |||||||
930A | DJNZ $92F8 | |||||||
930C | DEC C | |||||||
930D | JR NZ,$92F8 | |||||||
930F | CALL $9337 | Check whether ENTER or the fire button is being pressed | ||||||
9312 | RET NZ | Return (with the zero flag reset) if it is | ||||||
9313 | LD A,(IY+$01) | Pick up the second byte of data for this note | ||||||
9316 | CALL $932B | Calculate the attribute file address for the corresponding piano key | ||||||
9319 | LD (HL),$38 | Set the attribute byte for the piano key back to 0x38 (INK 0: PAPER 7: BRIGHT 0) | ||||||
931B | LD A,(IY+$02) | Pick up the third byte of data for this note | ||||||
931E | CALL $932B | Calculate the attribute file address for the corresponding piano key | ||||||
9321 | LD (HL),$38 | Set the attribute byte for the piano key back to 0x38 (INK 0: PAPER 7: BRIGHT 0) | ||||||
9323 | INC IY | Move IY along to the data for the next note in the tune | ||||||
9325 | INC IY | |||||||
9327 | INC IY | |||||||
9329 | JR $92DC | Jump back to play the next note |
Prev: 92CB | Up: Map | Next: 932B |