Posted By
mono on 2024-09-27 08:18:13
| spy vs spy music
I've deassembled all "Spy vs Spy" parts' music code and moved them to Plus4. Original code still generates data as it does for POKEY but values are stored in RAM. Then I transform it on the fly to TED sound registers' configuration.
The program has two modes of operation: 1. CONSTANT - sound volume is always set to 8 and square/noise waves are turned on/off at the moments. 2. DYNAMIC - sound volume is a max function taken from volume configuration of two POKEY channels and transposed to TED settings. You can download PRG file and the source of this code and compile it using MADS assembler (I'm the Atarian and I have atarian duties ;-D) using
mads -o:spyvsspy.prg spyvsspy.asx or by make
Following snippet shows how POKEY to TED tranposition is doing:
;ted ;f = (14318181/16/8)/(1024-(K+1)) ;pokey ;f = 1789772.5/(2*28*(N+1))
;(14318181/16/8)/(1024-(K+1)) = 1789772.5/(2*28*(N+1))
;14318181*(2*28*(N+1))/(16*8*1789772.5) = 1024-(K+1) ;14318181*2*28*(N+1)/(16*14318181) = 1024-(K+1) ;2*28*(N+1)/16 = 1024-K-1 ;K+2*28*(N+1)/16 = 1024-1 ;K+28*(N+1)/8 = 1023 ;K = 1023-28*(N+1)/8
;noiseKmin = 595 ;moiseKmax = 938
;K = 1023-28*(N+1)/8 ;28*(N+1)/8 = 1023-K ;N = (1023-K)*8/28-1
PERIODMIN = ($3FF-595)*8/28-1 ;23 PERIODMAX = ($3FF-938)*8/28-1 ;121
FRE1LO = $FF0E FRE2LO = $FF0F FRE2HI = $FF10 NOISE = 1 << 6 V2SEL = 1 << 5 V1SEL = 1 << 4 VCTL = $FF11 CR1 = $FF12
play lda AUDC3s and #%00001111 tay lda volumetable,y sta vol3
lda AUDC4s and #%00001111 tay lda volumetable,y sta vol4
cmp vol3 scs lda vol3
ldy playmode bne ?volume ora #0 seq lda #8 ?volume sta volumecontrol
lda AUDC4s and #%10100000 eor #%10100000 php
lda AUDC3s and #%10100000 eor #%10100000 bne noiseunknown
pureunknown: lda volumecontrol ldy vol3 seq ora #V1SEL
plp php beq ?pure
?noise ldy vol4 beq ?voices ora #NOISE bne ?voices
?pure ldy vol4 beq ?voices ora #V2SEL
?voices sta VCTL
ldy AUDF3s jsr setfreq1
ldy AUDF4s plp seq jsr fixrange jmp setfreq2
noiseunknown: plp bne noisenoise
noisepure: lda volumecontrol
ldy vol4 seq ora #V1SEL
ldy vol3 seq ora #NOISE
sta VCTL
ldy AUDF4s jsr setfreq1
ldy AUDF3s jsr fixrange jmp setfreq2
noisenoise: ldy AUDF4s lda vol3 beq ?one
ldy AUDF3s lda vol4 beq ?one
?both ldy AUDF4s cmp vol3 scs ldy AUDF3s
?one lda volumecontrol seq ora #NOISE sta VCTL
jsr fixrange ; jmp setfreq2
setfreq2: lda frequencytable.?lo,y sta FRE2LO lda frequencytable.?hi,y sta FRE2HI rts
setfreq1: lda frequencytable.?lo,y sta FRE1LO lda frequencytable.?hi,y ora videocontrol sta CR1 rts
fixrange: cpy #PERIODMIN scs ldy #PERIODMIN cpy #PERIODMAX scc ldy #PERIODMAX rts
volumetable: :16 .byte 8*#/15
frequencytable: ?lo :$100 .byte <[$3FF-[28*[#+1]/8 ?hi :$100 .byte >[$3FF-[28*[#+1]/8
AUDC3 and AUDC4 are voice control registers that controls distortion (hi nibble - %1x1x is pure tone, other ones are different types of noises) + volume (low niibble), AUDF3 and AUDF4 are voice period control registers.
All calculations were done for NTSC base clock.
It sounds a bit different than on Atari of course, but I was surprised that there are only music from the first part of this game on the Commodore 264 machines.
|
|
Posted By
Csabo on 2024-09-27 08:21:21
| Re: spy vs spy music
Neat! What is the name of your demo? I couldn't figure out from the screen - doesn't appear to have a title. (I hope it's not Spy Vs Spy since that name is already taken )
|
|
Posted By
mono on 2024-09-27 09:52:16
| Re: spy vs spy music
I knew I forgot about something What title do you offer? I'll place it on the top of items list.
Maybe "Songs of the spies?"... ;-]
|
|
Posted By
Csabo on 2024-09-27 09:53:28
| Re: spy vs spy music
Sure, that's a good one
|
|
Posted By
Luca on 2024-09-27 10:02:56
| Re: spy vs spy music
This is very interesting: first POKEY -> TED conversion ever!
|
|
|
Posted By
Csabo on 2024-09-27 10:37:11
| Re: spy vs spy music
Cool stuff, also congrats on your very first Commodore Plus/4 Release! One Of Us!... One Of Us!...
|
|
Posted By
mono on 2024-09-27 13:16:06
| Re: spy vs spy music
I've updated archive, because in a result of being hurry there is a doubled line "Songs of Spies". I'm sorry. Edit: Thanks @Csabo it looks that it's fail start :)
|
|
Posted By
Csabo on 2024-09-27 13:50:06
| Re: spy vs spy music
No worries, updated the PRG and the screenshot (the old one will be cached for a while but it will update).
|
|
Posted By
mono on 2024-09-27 13:56:19
| Re: spy vs spy music
Thank you.
|
|
Posted By
Verona on 2024-09-28 12:22:46
| Re: spy vs spy music
Good.
But the first song is falling apart very soon.
|
|
Posted By
Ati on 2024-09-28 12:55:07
| Re: spy vs spy music
Oh, thank you guy. Good to see (hear) it, because i like pokey music.
|
|
|
Posted By
mono on 2024-09-29 15:50:02
| Re: spy vs spy music
@Verona I wasn't aware of existence of this guy Thanks. (Maybe it'd be better to say "I'm an Atarian"?)
|
|
Posted By
Luca on 2024-09-30 02:02:51
| Re: spy vs spy music
Talking about the keys usage: why the undocumented Commodore Key, Control and Space have been involved too?
|
|
Posted By
mono on 2024-09-30 11:22:26
| Re: spy vs spy music
@Luca: I took this routine from my other project and used it partially.
|
|