I converted a segment of BIG SHOT over to Furnace in order to see if I could port over more naturally-created music than Midi2SMPS conversions would allow for, and during the conversion, the header for the FM and PSG instruments has the Header's call for each instrument locked. Here is the converted assembly code. Code: Fun_Header: sHeaderInit sHeaderPatch Fun_Patches sHeaderCh $07, $03 sHeaderTempo $01, $00 sHeaderDAC Fun_DAC1 Fun_DAC1: sStop sHeaderFM Fun_FM1, $00, $00 sHeaderFM Fun_FM2, $00, $00 sHeaderFM Fun_FM3, $00, $00 sHeaderFM Fun_FM4, $00, $00 sHeaderFM Fun_FM1, $00, $00 sHeaderFM Fun_FM1, $00, $00 sHeaderPSG Fun_FM1, $00, $00, $00, v00 sHeaderPSG Fun_FM1, $00, $00, $00, v00 sHeaderPSG Fun_FM1, $00, $00, $00, v00 dc.b $00, $00, $00, $00 ; Unused Fun_FM1: sStop Fun_FM2: sPatFM $00 sPan spCenter dc.b nRst, $0C sPatFM $01 saVolFM $09 dc.b nBb5, $01 Fun_Jump1: dc.b sHold, nBb5, $05, nRst, $0C, nBb5, $06, nRst dc.b $0C, nBb5, $06, nRst, $0C, nCs6, $06, nRst dc.b $0C, nEb6, $06, nRst, $12, nBb5, $06, nRst dc.b $0C, nBb5, $06, nRst, $0C, nE6, $06, nRst dc.b $0C, nCs6, $06, nRst, $0C, nEb6, $06, nRst dc.b $12, nBb5, $06, nRst, $0C, nBb5, $06, nRst dc.b $0C, nBb5, $06, nRst, $0C, nCs6, $06, nRst dc.b $0C, nEb6, $06, nRst, $12, nBb5, $06, nRst dc.b $0C, nBb5, $06, nRst, $0C, nAb5, $06, nRst dc.b $0C, nA5, $06, nRst, $0C, nBb5, $06, nRst dc.b $12, nBb5, $01 sPan spCenter sJump Fun_Jump1 Fun_FM3: sPatFM $00 sPan spCenter dc.b nRst, $0C sPatFM $01 saVolFM $09 dc.b nBb3, $01 Fun_Jump2: dc.b sHold, nBb3, $05, nRst, $0C, nBb3, $06, nRst dc.b $0C, nBb3, $06, nRst, $0C, nCs4, $06, nRst dc.b $0C, nEb4, $06, nRst, $12, nBb3, $06, nRst dc.b $0C, nBb3, $06, nRst, $0C, nE4, $06, nRst dc.b $0C, nCs4, $06, nRst, $0C, nEb4, $06, nRst dc.b $12, nBb3, $06, nRst, $0C, nBb3, $06, nRst dc.b $0C, nBb3, $06, nRst, $0C, nCs4, $06, nRst dc.b $0C, nEb4, $06, nRst, $12, nBb3, $06, nRst dc.b $0C, nBb3, $06, nRst, $0C, nAb3, $06, nRst dc.b $0C, nA3, $06, nRst, $0C, nBb3, $06, nRst dc.b $12, nBb3, $01 sPan spCenter sJump Fun_Jump2 Fun_FM4: sPatFM $00 sPan spCenter dc.b nRst, $0C sPatFM $01 saVolFM $09 dc.b nBb4, $01 Fun_Jump3: dc.b sHold, nBb4, $05, nRst, $0C, nBb4, $06, nRst dc.b $0C, nBb4, $06, nRst, $0C, nCs5, $06, nRst dc.b $0C, nEb5, $06, nRst, $12, nBb4, $06, nRst dc.b $0C, nBb4, $06, nRst, $0C, nE5, $06, nRst dc.b $0C, nCs5, $06, nRst, $0C, nEb5, $06, nRst dc.b $12, nBb4, $06, nRst, $0C, nBb4, $06, nRst dc.b $0C, nBb4, $06, nRst, $0C, nCs5, $06, nRst dc.b $0C, nEb5, $06, nRst, $12, nBb4, $06, nRst dc.b $0C, nBb4, $06, nRst, $0C, nAb4, $06, nRst dc.b $0C, nA4, $06, nRst, $0C, nBb4, $06, nRst dc.b $12, nBb4, $01 sPan spCenter sJump Fun_Jump3 Fun_Patches: ; Patch $00 ; $00 ; $00, $00, $00, $00, $00, $00, $00, $00 ; $00, $00, $00, $00, $00, $00, $00, $00 ; $FF, $FF, $FF, $FF, $00, $00, $00, $00 spAlgorithm $00 spFeedback $00 spDetune $00, $00, $00, $00 spMultiple $00, $00, $00, $00 spRateScale $00, $00, $00, $00 spAttackRt $00, $00, $00, $00 spAmpMod $00, $00, $00, $00 spSustainRt $00, $00, $00, $00 spSustainLv $0F, $0F, $0F, $0F spDecayRt $00, $00, $00, $00 spReleaseRt $0F, $0F, $0F, $0F spTotalLv $00, $00, $00, $00 ; Patch $01 ; $27 ; $22, $71, $20, $71, $19, $1F, $1F, $1B ; $08, $0A, $04, $81, $0C, $00, $10, $04 ; $53, $F4, $45, $A9, $05, $15, $0C, $00 spAlgorithm $07 spFeedback $04 spDetune $02, $02, $07, $07 spMultiple $02, $00, $01, $01 spRateScale $00, $00, $00, $00 spAttackRt $19, $1F, $1F, $1B spAmpMod $00, $00, $00, $01 spSustainRt $08, $04, $0A, $01 spSustainLv $05, $04, $0F, $0A spDecayRt $0C, $10, $00, $04 spReleaseRt $03, $05, $04, $09 spTotalLv $05, $0C, $15, $00
The header doesn't have any of the FM tracks properly defined, so you gotta add them after the DAC one (see the smps2asm header file to see how an FM track is defined in the header). And since there's 1 DAC track, 4 FM tracks, and 0 PSG tracks, sHeaderCh's parameters should be changed to $05 and $00.