Goattracker for MEGA65


I understand what you are after. You will need to write brand new init and interrupt routines; which means you'll either need to write a new "export" function inside of GoatTracker, or write some C65 that can read either the GT source file, or one of it's exports.

The reason this is the case is because the C64 only has one SID chip, so the player that is used in the GT export only writes to a single set of SID registers. If you ran two different SID tracks on the C65 (or even the C64) in the manner below:

call init_sid_a
call init_sid_b
jmp loopforever

call play_sid_a
call play_sid_b

(Sorry, this is probably more x86 than 6502, but hopefully still understandable)

All this will do on the interrupt will play SID B, because the SID registers known in both players point to the same SID chip, so "play_sid_b" will overwrite all the registers just set by "play_sid_a".

So you'd either need to patch your second SID, or write a new playroutine that accepts a SID chip number in (A) or something, and use that to select which registers/addresses to use when setting the values.

I hope that's a bit clearer


(Leave this as-is, it’s a trap!)

Only the original author or a moderator can append to this post.

Pro tip: Use markup to add links, quotes and more.

Your friendly neighbourhood moderators: Deft, gardners, MARCOM