MEGA65 FORUM

Delete

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

To delete this post you must be either the original author or a designated moderator.
The content of the post will be removed but the name and date will remain.

  • The post will be removed completely from the thread, rather than blanked
  • Only posts on the last page of the thread can be removed completely (so as to not break permalinks)

RE[5]: Goattracker for MEGA65

pmprog

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:

main:
call init_sid_a
call init_sid_b
loopforever:
jmp loopforever

interrupt:
call play_sid_a
call play_sid_b
reti

(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

Your friendly neighbourhood moderators: Deft, gardners, MARCOM