Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Composing > New Follin Music!
2023-05-05 20:12
DeMOSic

Registered: Aug 2021
Posts: 126
New Follin Music!

So, i found out that an archive of follin stuff has been released, and i found out that there was an unreleased track on it, so i converted the code to 64tass format and compiled it!
I dont know if footloose.sid is by tim or geoff, but someone said this sounds like Geoff
https://github.com/breakintoprogram/archive-follin (The archive itself)
https://cdn.discordapp.com/attachments/535246159669755934/11041.. (Footloose and some other files which i tried to compile)
https://cdn.discordapp.com/attachments/535246159669755934/11041.. (i think you can guess what this is)
https://deepsid.chordian.net/?file=/SID%20Happens/Footloose.sid
2023-05-05 20:41
Bansai

Registered: Feb 2023
Posts: 54
The github source stuff looks legit based on a disassembly I was doing ~3 weeks ago on the Ruddy player. It's quite reminiscent of the Crowther driver. Thanks! I'll have to see if I got the command type descriptions right. Those floppies will help a lot.

;
; stephen ruddy music player
; with music demo version 1 song data by tim follin
; initial commented disassembly 14apr23bsi
; assembled md5sum: c1dd3f3b1d8bef79fa2864f9c2d99df3
; assemble with tmpx or similar (no macros are used)
;

* = $1000

; 80 AD PL PH    = set pulse width incdec and start value (ZP_PULSE_WIDTH_INCDEC_V1 / ZP_PULSE_WIDTH_SET_LO_V1 / ZP_PULSE_WIDTH_SET_HI_V1)
; 81             = next part of 82 command for loop (uses ZP_LOOP_CNT_CUR_V1 / ZP_LOOP_TOP_CKPT_LO_V1 / ZP_LOOP_TOP_CKPT_HI_V1)
; 82 IT          = set top of loop plus iteration count (single nesting only, stores IT to ZP_LOOP_CNT_CUR_V1 checkpoints fetch to ZP_LOOP_TOP_CKPT_LO_V1 / ZP_LOOP_TOP_CKPT_HI_V1)
; 83 DR          = set note dur + go into gate on (note) mode (store DR to ZP_DUR_V1, ZP_NOTE_REST_MODE_V1 = 1)
; 84 RM          = set rest mode (ZP_NOTE_REST_MODE_V1 = RM)
; 85 OF VL ...   = direct SID write write to $D400 + offset OF the value VL continuing until OF=$FF and not fetching VL byte after it (NOTE: OF can access all SID regs from any voice)
; 86             = "eighty-six" command to halt voice fetching (INC ZP_HALT_FETCH_V1)
; 87             = enter direct frequency mode (freq on voice is LLHH) (uses DEC ZP_DIRECT_FREQ_MODE_V1, ZP_TEMP_FREQ_LO, ZP_TEMP_FREQ_HI) then eventually use 00 00 to exit
; 88 AA BB .. HH = set filter sweep and freq parameters
;                  AA = ZP_FILT_FREQ_INCDEC_LO, BB = L_SMC_FILT_SWEEP_DIR_ORIG_V1+1, CC = ZP_FILT_FREQ_SET_LO, DD = ZP_FILT_FREQ_SET_HI
;                  EE = L_SMC_FILTER_FREQ_CMP_LO+1, FF = L_SMC_FILTER_FREQ_CMP_HI+1, GG = L_SMC_FILTER_FREQ_CMP_2_LO+1, HH = L_SMC_FILTER_FREQ_CMP_2_HI+1
; 89             = voice 1: ZP_FILTER_FUNC_EN = 0, voice 2 = 1, voice 3 = 2 (NOTE: functions asymmetric across voices)
; 8A LL HH       = jsr (acts as jmp if unpaired) to song at absolute address $HHLL, store return address at ZP_RTN_ADDR_V1_LO / ZP_RTN_ADDR_V1_HI
; 8B             = return, get fetch address from appropriate voice return address (ZP_RTN_ADDR_V1_LO / ZP_RTN_ADDR_V1_HI)
; 8C TR          = transpose subsequent notes by TR half steps (ZP_TRANSPOSE_V1)
; 8D WV          = set wave for voice (ZP_WAVE_V1)
; 8E EN AD AA DI = vibrato/glide func (EN = ZP_FREQ_FUNC_EN_V1 = decr reload counter if nonzero; AD = ZP_FREQ_FUNC_ADCSBC_V1 = freq depth; AA = ZP_FREQ_FUNC_ADCSBC_MAX_V1 = iter count; DI = start dir = ZP_FREQ_FUNC_START_DIR_V1, 00 = sbc, FF = adc)
;                  vibrato/glide func remains enabled until explicitly disabled (8E 00 00 00 00)
; 8F DR DW FL FH = wave freq func (DR = dur ZP_DIRECT_FREQ_DUR_V1, DW = ZP_DIRECT_WAVE_V1, FL = L_CMD_8F_V1_FREQ, FH = L_CMD_8F_V1_FREQ+1) (for percussion+note effects)
; 90 GO          = gate off matching time (counting down duration to zero, GO = ZP_WAVE_GATE_OFF_TIME_V1)
; 91 AT AS       = arpeggio function (AT = ZP_AUTO_TRANSPOSE_NOTE_CNT_ORIG_V1, AS = ZP_AUTO_TRANSPOSE_NOTE_ADDSUB_V1) (91 02 0C for octave arp, 91 00 00 to disable)
; 92 GL          = note to note glide function (GL = ZP_AUTO_TRANSPOSE_ADCSBC_V1)
; 93 TD          = transpose disable (TD = L_SMC_TRANSPOSE_DISABLE_V1) (on next note only?)
;
; otherwise
; NN DR          = note, dur (note NN = 0 is C-0 at 268/$010c using the C64 manual's frequency for NTSC)
2023-05-05 20:54
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: The github source stuff looks legit based on a disassembly I was doing ~3 weeks ago on the Ruddy player. It's quite reminiscent of the Crowther driver. Thanks! I'll have to see if I got the command type descriptions right. Those floppies will help a lot.

;
; stephen ruddy music player
; with music demo version 1 song data by tim follin
; initial commented disassembly 14apr23bsi
; assembled md5sum: c1dd3f3b1d8bef79fa2864f9c2d99df3
; assemble with tmpx or similar (no macros are used)
;

* = $1000

; 80 AD PL PH    = set pulse width incdec and start value (ZP_PULSE_WIDTH_INCDEC_V1 / ZP_PULSE_WIDTH_SET_LO_V1 / ZP_PULSE_WIDTH_SET_HI_V1)
; 81             = next part of 82 command for loop (uses ZP_LOOP_CNT_CUR_V1 / ZP_LOOP_TOP_CKPT_LO_V1 / ZP_LOOP_TOP_CKPT_HI_V1)
; 82 IT          = set top of loop plus iteration count (single nesting only, stores IT to ZP_LOOP_CNT_CUR_V1 checkpoints fetch to ZP_LOOP_TOP_CKPT_LO_V1 / ZP_LOOP_TOP_CKPT_HI_V1)
; 83 DR          = set note dur + go into gate on (note) mode (store DR to ZP_DUR_V1, ZP_NOTE_REST_MODE_V1 = 1)
; 84 RM          = set rest mode (ZP_NOTE_REST_MODE_V1 = RM)
; 85 OF VL ...   = direct SID write write to $D400 + offset OF the value VL continuing until OF=$FF and not fetching VL byte after it (NOTE: OF can access all SID regs from any voice)
; 86             = "eighty-six" command to halt voice fetching (INC ZP_HALT_FETCH_V1)
; 87             = enter direct frequency mode (freq on voice is LLHH) (uses DEC ZP_DIRECT_FREQ_MODE_V1, ZP_TEMP_FREQ_LO, ZP_TEMP_FREQ_HI) then eventually use 00 00 to exit
; 88 AA BB .. HH = set filter sweep and freq parameters
;                  AA = ZP_FILT_FREQ_INCDEC_LO, BB = L_SMC_FILT_SWEEP_DIR_ORIG_V1+1, CC = ZP_FILT_FREQ_SET_LO, DD = ZP_FILT_FREQ_SET_HI
;                  EE = L_SMC_FILTER_FREQ_CMP_LO+1, FF = L_SMC_FILTER_FREQ_CMP_HI+1, GG = L_SMC_FILTER_FREQ_CMP_2_LO+1, HH = L_SMC_FILTER_FREQ_CMP_2_HI+1
; 89             = voice 1: ZP_FILTER_FUNC_EN = 0, voice 2 = 1, voice 3 = 2 (NOTE: functions asymmetric across voices)
; 8A LL HH       = jsr (acts as jmp if unpaired) to song at absolute address $HHLL, store return address at ZP_RTN_ADDR_V1_LO / ZP_RTN_ADDR_V1_HI
; 8B             = return, get fetch address from appropriate voice return address (ZP_RTN_ADDR_V1_LO / ZP_RTN_ADDR_V1_HI)
; 8C TR          = transpose subsequent notes by TR half steps (ZP_TRANSPOSE_V1)
; 8D WV          = set wave for voice (ZP_WAVE_V1)
; 8E EN AD AA DI = vibrato/glide func (EN = ZP_FREQ_FUNC_EN_V1 = decr reload counter if nonzero; AD = ZP_FREQ_FUNC_ADCSBC_V1 = freq depth; AA = ZP_FREQ_FUNC_ADCSBC_MAX_V1 = iter count; DI = start dir = ZP_FREQ_FUNC_START_DIR_V1, 00 = sbc, FF = adc)
;                  vibrato/glide func remains enabled until explicitly disabled (8E 00 00 00 00)
; 8F DR DW FL FH = wave freq func (DR = dur ZP_DIRECT_FREQ_DUR_V1, DW = ZP_DIRECT_WAVE_V1, FL = L_CMD_8F_V1_FREQ, FH = L_CMD_8F_V1_FREQ+1) (for percussion+note effects)
; 90 GO          = gate off matching time (counting down duration to zero, GO = ZP_WAVE_GATE_OFF_TIME_V1)
; 91 AT AS       = arpeggio function (AT = ZP_AUTO_TRANSPOSE_NOTE_CNT_ORIG_V1, AS = ZP_AUTO_TRANSPOSE_NOTE_ADDSUB_V1) (91 02 0C for octave arp, 91 00 00 to disable)
; 92 GL          = note to note glide function (GL = ZP_AUTO_TRANSPOSE_ADCSBC_V1)
; 93 TD          = transpose disable (TD = L_SMC_TRANSPOSE_DISABLE_V1) (on next note only?)
;
; otherwise
; NN DR          = note, dur (note NN = 0 is C-0 at 268/$010c using the C64 manual's frequency for NTSC)


BTW, may be help, but in JC64DIS, there is a commented disassembly of Ruddys GnG Player, which is way more easy to read i think.
2023-05-05 21:10
iAN CooG

Registered: May 2002
Posts: 3238
I don't know, but sounds bad to me.
There's a limit to decency, I won't add this cacophonic monstrosity in HVSC even if any of the Follin brothers will confirm they made those tunes intentionally sounding so bad. :D
To the trashcan.
2023-05-05 21:26
TheRyk

Registered: Mar 2009
Posts: 2475
inspite of the title it's not a Kenny Loggins Cover :(

Sounds indeed broken/unfinished/like cat ran over keyboard but imho could (if source was confirmed) be taken into some "worktunes" folder, not a very big loss if not, though tbh
2023-05-05 22:55
Bansai

Registered: Feb 2023
Posts: 54
Quoting DeMOSic
BTW, may be help, but in JC64DIS, there is a commented disassembly of Ruddys GnG Player, which is way more easy to read i think.
Thanks, I didn't know that disassembler existed. The disassembly there is perfect for verifying what I have.
2023-05-05 23:17
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Quoting DeMOSic
BTW, may be help, but in JC64DIS, there is a commented disassembly of Ruddys GnG Player, which is way more easy to read i think.
Thanks, I didn't know that disassembler existed. The disassembly there is perfect for verifying what I have.


it is!
2023-05-06 11:15
Morpheus

Registered: Feb 2004
Posts: 152
The convert is obviously wrong. Neither Tim nor Geoff would 'compose' a tune like this, not even as a demo tune.
2023-05-06 15:50
Inge

Registered: Nov 2003
Posts: 145
I've fixed the asm-code and uploaded a better version to DeepSID.
2023-05-06 16:05
Jammer

Registered: Nov 2002
Posts: 1343
Much better :) Still, sounds rather strange at points. It's probably the best to contact Follin if possible and verify things?
2023-05-06 19:13
Burglar

Registered: Dec 2004
Posts: 1137
Quoting Inge
I've fixed the asm-code and uploaded a better version to DeepSID.
Great job, these all sound like real sids now :) very cool!

https://deepsid.chordian.net/?file=/SID%20Happens/Footloose_Fix..
 
... 14 posts hidden. Click here to view all posts....
 
Previous - 1 | 2 | 3 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
t0m3000/bo0M!^hf^ibex
cobbpg
Krill/Plush
zzarko/Avatar
Guests online: 138
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Codeboys & Endians  (9.7)
4 Mojo  (9.6)
5 Coma Light 13  (9.6)
6 Edge of Disgrace  (9.6)
7 Signal Carnival  (9.6)
8 Wonderland XIV  (9.5)
9 Uncensored  (9.5)
10 Comaland 100%  (9.5)
Top onefile Demos
1 Nine  (9.7)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.5)
6 Scan and Spin  (9.5)
7 Onscreen 5k  (9.5)
8 Grey  (9.5)
9 Dawnfall V1.1  (9.5)
10 Rainbow Connection  (9.5)
Top Groups
1 Artline Designs  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Performers  (9.3)
5 Censor Design  (9.3)
Top Organizers
1 Burglar  (9.9)
2 Sixx  (9.8)
3 Tim  (9.7)
4 Irata  (9.7)
5 hedning  (9.7)

Home - Disclaimer
Copyright © No Name 2001-2025
Page generated in: 0.045 sec.