VOGONS


Reply 180 of 834, by Shreddoc

User metadata
Rank Oldbie
Rank
Oldbie
polpo wrote on 2023-01-20, 01:38:

Awesome news! I’m glad you were able to fix it without having to build a second card. I’ll be getting the next firmware version out in the next couple days so there will be even more things that work!

That will be excellent, looking forward to trying it out.

A quick question, and sorry if it's a stupid one, but: how strict is the spec for the 2 radial caps? could I substitute Same uF / Higher Voltage, or would that mess with things? trivial local sourcing related query.

appiah4 wrote on 2023-01-20, 07:36:

Flashing the Raspberry Pico went smoothly, even though mine is (AFAICT) not a genuine part but rather a bootleg. Regardless, card is now ready for testing and hopefully I will have some good news soon as well 😀

Nice work, looking good, hope all is working well! I see you did the 3d printed bracket too. I don't have 3d printer but I do have a drill press, so I used a steel blank and put holes in it.

f0188872.jpg
Filename
f0188872.jpg
File size
769.17 KiB
Views
1751 views
File license
Public domain
Pickle wrote on 2023-01-19, 02:47:

anyone have an extra pcb?

Which country? It is probably only worth your while if the sender is quite close to you, because 5 new PCBs costs only around US$10 shipped (to many countries), direct from the factory. But if someone is close to you, maybe they can help.

Reply 181 of 834, by Pickle

User metadata
Rank Member
Rank
Member
Shreddoc wrote on 2023-01-21, 02:29:

Which country? It is probably only worth your while if the sender is quite close to you, because 5 new PCBs costs only around US$10 shipped (to many countries), direct from the factory. But if someone is close to you, maybe they can help.

yeah sorry im in the usa

Reply 182 of 834, by polpo

User metadata
Rank Member
Rank
Member
Shreddoc wrote on 2023-01-21, 02:29:

A quick question, and sorry if it's a stupid one, but: how strict is the spec for the 2 radial caps? could I substitute Same uF / Higher Voltage, or would that mess with things? trivial local sourcing related query.

It's not strict at all. Those caps are for smoothing out the 5V and 3.3V rails, so anything more than 10V is fine. Exactly 47uF isn't really important, either... but I've seen people with flaky acting boards if those caps aren't populated.

Shreddoc wrote on 2023-01-21, 02:29:

Nice work, looking good, hope all is working well! I see you did the 3d printed bracket too. I don't have 3d printer but I do have a drill press, so I used a steel blank and put holes in it.

f0188872.jpg

Wow, the board looks really nice with a metal bracket with proper holes! Excellent work! 😀

Reply 183 of 834, by appiah4

User metadata
Rank l33t++
Rank
l33t++
Shreddoc wrote on 2023-01-21, 02:29:
polpo wrote on 2023-01-20, 01:38:

Awesome news! I’m glad you were able to fix it without having to build a second card. I’ll be getting the next firmware version out in the next couple days so there will be even more things that work!

That will be excellent, looking forward to trying it out.

A quick question, and sorry if it's a stupid one, but: how strict is the spec for the 2 radial caps? could I substitute Same uF / Higher Voltage, or would that mess with things? trivial local sourcing related query.

Yeah I used 25V caps, higher voltage for such filtering stuff is never a problem.

Shreddoc wrote on 2023-01-21, 02:29:
appiah4 wrote on 2023-01-20, 07:36:

Flashing the Raspberry Pico went smoothly, even though mine is (AFAICT) not a genuine part but rather a bootleg. Regardless, card is now ready for testing and hopefully I will have some good news soon as well 😀

Nice work, looking good, hope all is working well! I see you did the 3d printed bracket too. I don't have 3d printer but I do have a drill press, so I used a steel blank and put holes in it.

Oh wow, that looks so damn good, I wish I had one of those instead!

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 184 of 834, by polpo

User metadata
Rank Member
Rank
Member

PicoGUS firmware v0.3.0 is now released! Download it at: https://github.com/polpo/picogus/releases/tag/v0.3.0

This is a big one!

General:

  • Firmware can now be programmed from DOS (requires FW v0.3.0 or above - upgrading from previous versions must be done by USB)
    • Emulation mode can be changed "on the fly" by uploading different firmwares

GUS emulation:

  • Major DMA improvements!
    • DMA PIO state machine rewrite to solve sample glitches (fixes Star Control II)
    • Asynchronous writing to PSRAM of DMAed samples (fixes Doom)
    • Smarter sample cache (fixes Doom)
    • Adjustable DMA interval (fixes Doom)
  • One firmware for all ports - base port is now configured with ULTRASND environment variable and pgusinit.exe

MPU-401 emulation:

  • Intelligent mode emulation is now working in all but a few titles
  • Base port now configured with pgusinit.exe (defaults to 330)

AdLib emulation:

  • Base port now configured with pgusinit.exe (defaults to 388)

Reply 185 of 834, by Shreddoc

User metadata
Rank Oldbie
Rank
Oldbie
polpo wrote on 2023-01-21, 19:48:
PicoGUS firmware v0.3.0 is now released! Download it at: https://github.com/polpo/picogus/releases/tag/v0.3.0 […]
Show full quote

PicoGUS firmware v0.3.0 is now released! Download it at: https://github.com/polpo/picogus/releases/tag/v0.3.0

This is a big one!

General:

  • Firmware can now be programmed from DOS (requires FW v0.3.0 or above - upgrading from previous versions must be done by USB)
    • Emulation mode can be changed "on the fly" by uploading different firmwares

GUS emulation:

  • Major DMA improvements!
    • DMA PIO state machine rewrite to solve sample glitches (fixes Star Control II)
    • Asynchronous writing to PSRAM of DMAed samples (fixes Doom)
    • Smarter sample cache (fixes Doom)
    • Adjustable DMA interval (fixes Doom)
  • One firmware for all ports - base port is now configured with ULTRASND environment variable and pgusinit.exe

MPU-401 emulation:

  • Intelligent mode emulation is now working in all but a few titles
  • Base port now configured with pgusinit.exe (defaults to 330)

AdLib emulation:

  • Base port now configured with pgusinit.exe (defaults to 388)

Wow that is awesome, what a great update.

I only had the briefest chance to give it a quick try this morning (away from home a few days), but it looks really cool. Pgusinit 1.0.0, a momentous milestone. Looking forward to giving everything a full whirl when I'm back at home later this week, and to hearing how others go with it in the meantime.

Let's test some things folks. 😀

Reply 186 of 834, by MJay99

User metadata
Rank Member
Rank
Member

It's indeed a leap forward! Awesome, thank you!

One important thing for everyone trying (which took me a bit to realize): just initializing with pgusinit won't allow doom to run (at least on my platform).
A pgusinit /? reveals why that is: it needs to be initialized with a parameter of something like "/d 10"

After that, modm seems to work pretty perfectly: without that parameter it kept occasionally dropping a note or effect here and there, but now (at least for my ears and just trying a few tracks) seems to be close to or at 100% working.

With Doom II it stays at GMX_INIT for a bit, then does start, which is indeed a huge change! I do still hear some slight slow-downs in the menu music and when starting the level, though.
After jumping to e2m2 (with a slighty wobbly starting of the music) I ended the level and went back to the menu and first level - the music then started to sound clipped and dropping notes.
I'd be interested to hear if that's just a behaviour I'm seeing on this system (which otherwise runs perfectly fine with a real GUS).
I'm planning to also dig out another system later and trying it there - just to see if it's related to my hardware.

Oh, and not expecting anything, but trying cubic player with default settings, it instantly came up with totally distorted sounds and crashed on restarting the same file afterwards 😁

I haven't tried the reflashing from DOS option, yet, but I do like the idea and setting up the port via pgusinit is a great improvement!

Reply 187 of 834, by MJay99

User metadata
Rank Member
Rank
Member

Tried it on a faster machine (PII instead of a 486DX2-66), the same settings and level jumps / restarts: same result, the music becomes choppy / distorted.

But: if I do an init with pgusinit /d 12 for doom II, it pretty much seems to be working fine 😁
So, it's worth a try to play with this setting if there's audio issues.

Reply 188 of 834, by polpo

User metadata
Rank Member
Rank
Member
MJay99 wrote on 2023-01-22, 11:10:

One important thing for everyone trying (which took me a bit to realize): just initializing with pgusinit won't allow doom to run (at least on my platform).
A pgusinit /? reveals why that is: it needs to be initialized with a parameter of something like "/d 10"

After that, modm seems to work pretty perfectly: without that parameter it kept occasionally dropping a note or effect here and there, but now (at least for my ears and just trying a few tracks) seems to be close to or at 100% working.

Indeed, playing with the DMA interval and audio buffer size is the key to working around issues in problematic programs. I hope with future improvements that this will not be necessary. For example, in the current release, programs that needed the audio buffer to be tweaked now work just fine.

One thing to note is that Mod Master XT doesn't use DMA, so changing the DMA interval will have no affect on how it sounds. I've done very little testing of it, so I'm not sure what would be causing it to not be perfect – typically programs that use port-based IO only work the best. Mod Master XT is very heavily optimized, so this is just a guess, perhaps the different timing in how the PicoGUS responds to bus events compared to a real GUS could be tripping it up. I think any differences you hear in how playback performs from run to run is down to pure chance.

MJay99 wrote on 2023-01-22, 11:10:

Oh, and not expecting anything, but trying cubic player with default settings, it instantly came up with totally distorted sounds and crashed on restarting the same file afterwards 😁

This one bugs me, because DMA sample upload with Cubic Player was working fine previously, and the tweaks to get games with streaming audio working broke it. Fortunately, the full source is available so I will be able to dive in and see what it is doing for upload. Turning the gusFastUpload option off in cp.ini fixes the issue. This part of the docs shows that it's a bit of a hack:

gusFastUpload use a non-standard feature to upload the sample data to the fast ram. If you experience problems with corrupted playback, or if your system locks when loading a file disable this option.

Reply 189 of 834, by MJay99

User metadata
Rank Member
Rank
Member
polpo wrote on 2023-01-22, 14:55:

I think any differences you hear in how playback performs from run to run is down to pure chance.

You're right, whatever made it drop an occasional note or effect before, I wasn't able to reproduce it by any change in /d xx settings now. It was noticable during the very first run I did (when I was still not using any specific settings for pgusinit, right after the first flashing of the card), but isn't anymore now, even after repeated startups. Still wondering what caused it at first (I've changed quite a lot of things, including IRQ and DMA, etc., so it might have been that also), but in the end, it seems to work really well now. How close to 100% is for others (with more expert ears) to decide, I'm really happy with it, already.

polpo wrote on 2023-01-22, 14:55:

This one bugs me, because DMA sample upload with Cubic Player was working fine previously, and the tweaks to get games with streaming audio working broke it.

In my default cp (2.6.0 pre6) the gusFastUpload didn't even seem to make any positive difference at all (on or off, it kept playing distorted on the first attempt and crashed on the second load) - who knows, maybe there's some other issue also, since with a GUS pnp clone with over 8MB RAM, it's pretty much doing the same corrupted playback on the first load. On that card, it's just working fine after the second load and fitting it with less amount of RAM also seemed to remove the issue iirc.

What did make a difference for the PicoGUS here, was going back to some older 2.0alpha and 1.7 version: they instantly did play, without any change to any setting. Maybe they're not using any DMA upload as the opencp does...?

Reply 190 of 834, by MJay99

User metadata
Rank Member
Rank
Member

Turns out, the whole issue of missing notes was an intermittend / failing I2S module - seems it had lost the left channel occasionally in the beginning, which is what I noticed as missing notes. Now it failed completely, which made it finally obvious. Checking with an oscilloscope, I could see the clocks (including LRCK) and data go in, but only the right channel come out.

So, I swapped the module and voilà, it works! And that, of course, also fixes what had been irritating me in MODM.

I've also gone ahead and started a few things, like Scream Tracker, Fast Tracker, Impulse Tracker and Zone-66. No long tests, but music did play fine for the few moments I had it running.

To put it short, a truly huge step forward!

Reply 191 of 834, by appiah4

User metadata
Rank l33t++
Rank
l33t++
polpo wrote on 2023-01-21, 19:48:
PicoGUS firmware v0.3.0 is now released! Download it at: https://github.com/polpo/picogus/releases/tag/v0.3.0 […]
Show full quote

PicoGUS firmware v0.3.0 is now released! Download it at: https://github.com/polpo/picogus/releases/tag/v0.3.0

This is a big one!

General:

  • Firmware can now be programmed from DOS (requires FW v0.3.0 or above - upgrading from previous versions must be done by USB)
    • Emulation mode can be changed "on the fly" by uploading different firmwares

GUS emulation:

  • Major DMA improvements!
    • DMA PIO state machine rewrite to solve sample glitches (fixes Star Control II)
    • Asynchronous writing to PSRAM of DMAed samples (fixes Doom)
    • Smarter sample cache (fixes Doom)
    • Adjustable DMA interval (fixes Doom)
  • One firmware for all ports - base port is now configured with ULTRASND environment variable and pgusinit.exe

MPU-401 emulation:

  • Intelligent mode emulation is now working in all but a few titles
  • Base port now configured with pgusinit.exe (defaults to 330)

AdLib emulation:

  • Base port now configured with pgusinit.exe (defaults to 388)

YES!!! I can't wait to get home, flash this and play sum GUS Doom 😀

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 192 of 834, by polpo

User metadata
Rank Member
Rank
Member
appiah4 wrote on 2023-01-23, 06:19:

YES!!! I can't wait to get home, flash this and play sum GUS Doom 😀

Don’t forget to run pgusinit /d 12 for best results! I said to use 10 in a few spots, but as MJay99 noticed, 12 works a lot better.

BTW I’ve put out a video where I run through the features in firmware 0.3.0: https://youtu.be/sOHTagrWcIE

Reply 193 of 834, by appiah4

User metadata
Rank l33t++
Rank
l33t++
polpo wrote on 2023-01-23, 06:57:
appiah4 wrote on 2023-01-23, 06:19:

YES!!! I can't wait to get home, flash this and play sum GUS Doom 😀

Don’t forget to run pgusinit /d 12 for best results! I said to use 10 in a few spots, but as MJay99 noticed, 12 works a lot better.

BTW I’ve put out a video where I run through the features in firmware 0.3.0: https://youtu.be/sOHTagrWcIE

Thanks, I really appreciate the effort you put into this project.. Can only hope to help a bit with testing.

Some questions if you don't mind:

1. As is, the GUS firmware does not enable the MPU-401 or Adlib in any way, does it?
2. Is there a plan to have them all run at once eventually, ie GUS + Adlib + MPU401?
3. Is there a good documentation of all current PGUSINIT switches (including firmware flashing form command prompt) anywhere?

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 194 of 834, by MJay99

User metadata
Rank Member
Rank
Member
appiah4 wrote on 2023-01-23, 07:37:

3. Is there a good documentation of all current PGUSINIT switches (including firmware flashing form command prompt) anywhere?

I might be able to at least help with that: https://github.com/polpo/picogus/tree/main/pgusinit
Otherwise, a pgusinit /? is gonna show it, too.

Reply 195 of 834, by appiah4

User metadata
Rank l33t++
Rank
l33t++
MJay99 wrote on 2023-01-23, 08:07:
appiah4 wrote on 2023-01-23, 07:37:

3. Is there a good documentation of all current PGUSINIT switches (including firmware flashing form command prompt) anywhere?

I might be able to at least help with that: https://github.com/polpo/picogus/tree/main/pgusinit
Otherwise, a pgusinit /? is gonna show it, too.

Oh sweet, exactly what I wanted. Thanks.

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 196 of 834, by polpo

User metadata
Rank Member
Rank
Member
appiah4 wrote on 2023-01-23, 07:37:

1. As is, the GUS firmware does not enable the MPU-401 or Adlib in any way, does it?
2. Is there a plan to have them all run at once eventually, ie GUS + Adlib + MPU401?
3. Is there a good documentation of all current PGUSINIT switches (including firmware flashing form command prompt) anywhere?

1. No, the modes as they're implemented now are completely independent of each other. One plus is if you have a MPU-401 or AdLib (or any other sound card) in the machine while GUS emulation mode is running, it won't interfere.

2. I don't really have plans for that, for a couple reasons... The first is that currently GUS and MPU-401 emulation are a constant battle against time and getting things done before the next bus event comes and keeping IOCHRDY high as much as possible so I don't starve other devices the ISA bus. I might be surprised and they could work together, but I haven't really thought of trying that yet, because of my second reason.

The second is that running them all at once doesn't make a whole ton of sense to me. I consider GUS, AdLib, and MPU-401 to be music output devices first and foremost. The GUS mode can be a streaming PCM output device, but even a real GUS is not very good at it (I remember streaming audio stuttering on my real GUS back in the DOS days) and getting it right on the emulation side has been painful. My mind keeps going back to how I ran games back in the day: Sound Blaster for sound effects, GUS for music... Likewise, SB+MPU-401 makes a lot of sense together and SB implies AdLib support anyway.

So the next thing I'd want to accomplish with PicoGUS is to get Sound Blaster PCM emulation working and try to run that simultaneously with GUS, AdLib, or MPU-401. Since the SB emulation hopefully is just shuttling samples from the ISA bus to the DAC it shouldn't be very CPU/IO intensive and can be run in concert with the other emulation modes. The elephant in the room, though, is that SB uses an IRQ and DMA of its own, and the PicoGUS hardware only supports one IRQ and one DMA. Supporting both would require a hardware revision, likely one that integrates the RP2040 directly on the board to give access to GPIO lines that are not available on the Pi Pico. So I have a bit of hesitation to go in that direction... especially since Sound Blaster clone cards are still relatively cheap and available and do a fine job with PCM sound effects. SB + AdLib and SB+MPU-401 (except for titles that use IRQ for intelligent mode) would be possible with the current PicoGUS hardware, though!

3 has already been answered, but that README file is also in the .zip download for the release, so if you also want to read it in DOS, you can. 🙂

Reply 198 of 834, by Shreddoc

User metadata
Rank Oldbie
Rank
Oldbie

My thoughts for what they're worth. I think there is still a great deal of value in the current style card, because a one-card hardware solution for less than $50 which can emulate a GUS one minute, an intelligent MPU-401 the next, an Adlib / (a SoundBlaster?) / (a GM synth?) / (???) the next, very much remains a unique and amazing prospect.

In terms of covering multiple functions in the same machine, I was mulling the possibility of using multiple PicoGUS cards in one system - one flashed as a GUS, one flashed as an MPU-401, for example (is that possible??). The cost of these cards, vs the generally $$$ alternatives or originals, means that PicoGUS is still a very low price even on a one-function-to-one-card basis.

If needs must, then a hardware revision is naturally fine, but (and count me as biased!, having just built one) it would also be nice to see the current revision realised in terms of the current/main goals. Perhaps then the revision would be PicoGUS II? the next evolution, i.e. PicoGUS 1 does the one module at a time thing, then II extends that work by aiming to do multiple simultaneously.

Reply 199 of 834, by krivulak

User metadata
Rank Member
Rank
Member

So - I tried the new update. Just superior and awesome work, I wouldn't be able to achieve any of this (since I super duper hate programming - that's why I am amazed by anyone who likes it)

But I think some info from testing would be more interesting than my rambling.
Don't take any of this as nagging or something like that. I am doing whatever I can to help you improve the board and beta testing is the best I can do for programmers.

(the delay doesn't change anything where not stated specially)

DOOM I v1.9:
- sound effects are quite scratchy
- takes a long time to load
- sounds a little bit off. Not bad though!
- sound effects stop working after short amount of time, the last one keeps hanging
- when there is a lot going on the mixing gets very choppy. Can be seen in demos
https://youtu.be/XuQL8LKD0SM
DOOM II v1.666:
- same as DOOM I
- sounds more off. For example music in E1M1 uses different instruments than it should. Mainly the drums are incorrect
https://youtu.be/MbXIIDuZUww
BLOOD 1.00:
- on /12 freezes when initializing sound effect in setup
- freezes on start
- on /10 it manages to play but sounds very scratchy and after playing the sound effects the computer freezes
- in game sounds totally garbled and awful. I mean - it totally sounds super duper horror style... 😁
https://youtu.be/tNd8AWE9t14
DUKE3D:
- on /12 freezes when initializing sound effect in setup
- freezes on start
- on /10 it manages to play but sounds very scratchy and after playing the sound effects the computer freezes
-in game doesn't sound too bad but after short amount of time the sound effects just stop working but music keeps playing
HOCUS:
- doesn't run at all, freezes on startup
TYRIAN 2000 v1.0:
- loads sountracks very slowly but then it runs nicely, sounding very like original GUS
- on the fade-outs it slows down significantly
https://youtu.be/97pg5l4KwbU
- sound fx scratchy
- computer hangs after couple seconds of the program running but the Arduino keeps going. Quite scary 😁
https://youtu.be/OpTJmfFUApo
ULTRAMID+DOSMID:
- plays quite well actually! The only problems I can hear are those which even the original GUS has (like slowing down a little bit when playing fast MIDI or chopping the sound up a little)
Gravis PLAYMIDI:
- freezes after couple of tones with notes hanging

Sometimes the system bricks SO badly it even manages to corrupt the CMOS. Happened 3 times while testing

P_20230123_174538.jpg
Filename
P_20230123_174538.jpg
File size
1.73 MiB
Views
1278 views
File license
Fair use/fair dealing exception