Contents
ROMBeep Engine
This engine provides two melody channels, played using arpeggiation using the ROM Beeper routine and no percussion. Due to timing constraints in the particular ROM routine used by the player, the whole engine is shifted up an octave or so more than the other engines. The tones in octave 5 are virtually ultrasonic :) On the plus side, there is no detuning and the player code is fairly small.
The song compiler is smart enough to automatically recognise duplicate melody patterns and only includes a single copy of any duplicated pattern in the final output.
A song may contain up to 127 unique patterns, and each pattern may contain up to 126 notes per channel. The tempo and length of each pattern may be set individually.
The lowest valid note value is C-1 and the highest is A#5.
Useful POKEs/Addresses
The first instruction in the player routine is a LD HL,nn instruction
which points to the start of the song data. Therefore, to select
a different song to play:-
10 LET PlayerAddr = 60000
20 LET SongAddr = 61000
30 POKE PlayerAddr+1,SongAddr - 256 * INT(SongAddr / 256)
40 POKE PlayerAddr+2,INT(SongAddr / 256)