Try out this demo:
https://sites.google.com/site/tueftlerlabs/home/downloads/de...
There is playing a bumm bumm, an arpeggio thing, and a string instrument.
But that string instrument is not the usual square wave, it needs to combine two channels.
So now it is clear that the demo plays 4 channels :)
And no false noises, it is tidy like PSG has 4 channels.
In the moment a bumm is played, the string instrument looses its second channel.
It is gone, but your brain cant tell as it is hit by a BUMM.
The demo is actualy a beta version where a virtual channel only leaves space on the PSG if its volume is 0. A real sort by volume is even more promising.
@hbarcellos,
you ended up with a part of noise played wrong + a part of music played wrong.
I think the problems wont disappear when you stay away from complete virtual channel thinking.
A virtual channel either appears on the PSG fully correct or not at all.
With some mixed state like "there is noise with the volume of music" you get wrong noise + wrong music.
With virtual channels you get one right thing + one thing disappeared. Instead two wrong things.
About "direct translate" and "fast changes".
A game does effects at irq rate, nothing faster needed.
You could put a change to bordercolor register into your emulator and see.
So, when the coleco game does
ld a,8 : out (a0),a : ld a,volume : out (a1),a
you would replace with
ld a,8 : ld (RAMr8),a
And then in vertical blank the sheduler picks 3 of 4 virtual channels and puts those to PSG.
Well, that's possible (adding another call to the vertical hook).
And thanks for the code, that, for sure would help in the future.
About the wrong sound on the youtube video, can you figure some kind of pattern on what's sounding wrong?
A problem is I dont know the coleco original to see what actualy is intended.
On the tube is one video where narrator is talking much into sound.
But it doesn't feel like hefty music channel usage, MSX should emulate well.
By the way, can on the coleco noise channel the envelope be activated, too, like on AY?
One needs to be aware.
The volume register value then = 16.
Accidentaly the channel does well in a sort by value of volume register.
But it isn't really volume 16.
Further some game may set volume register to 31. That still means nothing different "envelope enabled", far from volume = 31.
To be able to handle such things, better have an extra "claimed volume" RAM register for each virtual channel.
That byte getting used for priority sorting.
Normaly you place just a copy of the volume register there.
But the nice thing is one can add handling of special problems.
Like giving envelope users a reasonable volume value.
Further some game might turn off the channel in register 7, while volume register value = 15 still pretends that there is action!
Such games need "if channel deactivated in r7, claimed volume = 0".
All this adapting goes without changing anything in actual game code.
And then sort things by claimed volume byte.
I updated the archive of ColecoVision games converted to MSX (PSG/SCC).
I rewrote all text files, added Choplifter and more.
Download: Colecovision_Roms_for_MSX.zip
Thanks gdx!!
I love Colecosion
I'm doing some CV conversions too. Although, I am trying to convert Congo Bongo, but it has graphic issues.
And just like Muffie did, would it be a good idea to create a ColecoVision collection for MSX?
Is it possible to convert PacMan to Msx?
Thanks
We're actually trying that point. Even Dig Dug.
And I mean Atarisoft.