STarKos is a conventional soundchip tracker, in the sense that writing music is done the same way as existing trackers on CPC or Atari ST. The new features mainly comes from sound editing.
Both disc and ROM based versions are available.
If you have feedback, comments, ideas, bug reports or anything to ask about STarKos:
Thanx to Jens (GMX), hermann dot jens at gmx dot net, for the german translation.
STarKos 1.2 playing “Carpet”, by Targhan.
Video recorded with WinAPE.
Here is a quick footage about how it looks like
Video recorded with WinAPE.
The 3 players have the same main code. The ASM is the most optimized. The BASIC and INTERRUPTION players use the firmware to trigger the 300Hz interruption and are a bit slower, because they must save some CPU registers reserved to the firmware. The INTERRUPTION player takes more memory, because it have to interpret the frequency written in the song, and play the song accordingly.
The ASM player takes a maximum of 34 rasterlines and about 2kb in memory (you can see how to remove the init routine to save some bytes). The player uses no buffer, so you just need enough RAM to store the player and the song data, that's all.
The 2 other players are a little bigger (and slower), especially the INTERRUPTION player.
|Player type||Size (byte)|
The BASIC and INTERRUPT players, to remain Firmware-friendly, have to preserve the CPU registers reserved by the Firmware (i.e. BC' and AF') and, for the INTERRUPT player, deal with the firmware events. The ASM player don't take care of all this and will modify all the CPU registers.
The ASM and BASIC player can be located anywhere in memory as long as they can read the song data when they are called.
The INTERRUPT player must be located from &4000 to HIMEM (usually &A67B on a bare CPC 6128). If you put the player or the song in extra RAM bank (i.e. on a CPC 6128 or any RAM expanded CPC), this bank must stay mapped all the time (if you disable the bank mapping, it might crash!). And of course, the player must have read access to the song data.
The players don't modify the Stack, the interruption flag/mode, or any chipset registers (except of the Z80 and PSG, of course). No barbarian tricks (out (0),a) or anything like that.
Here are some values you can find in the compiled song data. The offsets are obviously given from the start of the song-data.
|0||4||“SK10”||Just a little ASCII tag for rippers to detect STarKos songs easily :)|
|4||2||Base Address of the Song||You will find #00,#04 if the song has to be loaded in #4000, for example|
|6||1||Digidrums channel||Indicate the channel where the digidrum should be played. 1,2 or 3|
|7||2||Song Frequency in Hertz||13, 25, 50, 100, 150 or 300. Only used by the INTERRUPTION player when initialising.|
That's all. You're not allowed to search elsewhere :).
The complete STarKos player source code is also available! Thus you won't have to deal with the player generator anymore to get an SKS player!
The sources allowing you to relocate any STarKos player (the ones generated from the Kit only!) as well as any compiled song are free to be used here:
Beside the demo-songs provided with STarKos, you can download here .SKS files of real songs used in some CPC productions. If you wanna be a pop star, share your SKS files here, send them to
targhan at cpcscene dot com.