polpo / picogus Goto Github PK
View Code? Open in Web Editor NEWEmulation of ISA sound cards on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS) with USB mouse/joystick support
License: GNU General Public License v2.0
Emulation of ISA sound cards on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS) with USB mouse/joystick support
License: GNU General Public License v2.0
This chipset is used on some 486 SBCs. Not sure if anyone is working on or has considered working on a PC/104 version of the PicoGUS, but this info could be useful if so.
Fully compatible with everything i tried from the compatible software list (1 demo in GUS mode, 2 games in GUS mode, 1 game in adlib mode, 2 games in CMS mode). Don't have any MIDI devices to test. Only issue to report is notes will hang upon reboot (GUS, adlib, and CMS mode). Did not have this issue on 430VX chipset MB.
Let me know if you want me to test anything specific on this chipset.
-Chris
You can get inspiration here:
https://github.com/ikjordan/picozx81/tree/main/usb
I know this is probably a long shot but I was wondering if you could get in touch with Kevin Moonlight and ask him if he can share his Panasonic CDROM emulation code for use with the PicoGUS?
He made a video about what he's done here -
https://www.youtube.com/watch?v=L59Bp61Je4Y
At present we don't really have a way of getting CDROM audio working in DOS on real hardware without a real CDROM drive, so working CDROM emulation would be nice to have.
Hi, it seems like a basic thing that I cant find anywhere, but can you add instructions on how to set the jumpers to other DMA settings. This is useful when trying to get it setup in a system that also has another soundcard in it.
Thanks
When using GUS music mode in Tyrian 2000 (which requires loading Ultramid) I encounter screen tearing that is not present in any other playback mode. Can anyone verify if this occurs on a real GUS?
486DX4/100 16MB RAM, using SB16 for digital audio. CLGD5428 integrated 1MB video. MS-DOS 6.22 as well as PC-DOS 2000. PicoGUS on latest (as of today) firmware.
The game is still perfectly playable.
Hi, thank you for this very cool project!
When I try to flash from PG-GUS.UF2 0.6.1 to any different firmware in DOS, I get "Programming........ ERROR: Card is not in firmware writing mode?" and after that the card is "bricked". If I run pgusinit again, I get: "ERROR: no PicoGUS detected!"
If I copy a firmware from USB that is not PG-GUS 0.6.1, flashing from firmware to firmware works from DOS without any problems, unless it is PG-GUS.UF2 0.6.1...
Can you please take a look? Thanks.
I'm using the PicoGUS in an Amiga 2000 using the A2286 bridgeboard (which is a full IBM AT class PC on a card, an 80286 at 8 MHz), I also have an XTIDE, and a VGA card on the ISA bus, but nothing else.
Prior to 1.0.2 the GUS sound didn't work, but I think fixing the timings for the 5170 has also fixed it for this. GUS sound seems to work perfectly now, as does adlib (I've tried Dune 2: The battle for Arrakis and Planet X-3 for adlib, and I've tried the Legend demo and The Good, Bad, and Ugly demos for GUS sound).
However programming the Gus with pgusinit /f <file>
doesn't work. It prints a lot of garbled characters. I don't have a way to copy and paste them but you can see in the screenshot attached the garbled errors.
Even after the output in the screenshot the GUS still works, so I don't think it's actually managing to program it at all.
If there's anything I can do to help debug this let me know and I will do my very best. It's absolutely incredible to me that this works at all in the Amiga, and thank you for such a brilliant project!
I am loving this project at the moment, and plan to build a board and do some of my own testing. Awesome work! I am wondering if there were any thoughts or plans to implement a digital output option? It seems it would be pretty easy to replace the PCM5102 with an I2C to spdif converter. But I am wondering if there were any thoughts for either building a dedicated option for spdif coax, or at least a pinout to allow connection to a PCI breakout board. The PCM5102 does a great job in my experience, but I try to use spdif out as much as possible to help reduce ground noise generated from the computer internally.
Hi, great work and an amazing project!
Is there any chance to bring MPU-401 MIDI Input support in firmware?
Hopefully you have an extra pin for that. I can use an external optocoupler. Just wondering if it's possible at all in the current design. Thank you!
New entries:
Weird stuff:
Specs:
P1 233 MMX
430TX Mobo
PicoGus P240, D3, I7
SB32 P220,D1,H5, I5
In the compatibility list it states that both Impulse Tracker and Cubic Player have issues. I think with the latest firmware, at least with my systems and also when I saw video's online using Cubic Player, they seem to work just fine. With the latest firmware (1.2.0) I don't hear glitches with the changing of sample rate, and Cubic Player also just works. Cubic Player is a complex topic however, because there are many versions circulating online and they all have their issues off their own, not related to the PicoGUS. Maybe you could suggest using the latest version (Open Cubic Player 2.6.0 pre 6) to have a common testing environment. That one is most compatible in my experience, some other beta version may have stability issues.
So, maybe you could update those entries, it might put people off to use the PicoGUS if it states that is it not compatible, because they are (were) very popular pieces of software that people might want to use with the PicoGUS.
So I ordered a couple of the 2.0 models, and put one in a 486, with another in a Pentium 2. They're both giving me similar interesting results, in that I can't get any GUS music to work. I'm pretty sure the hardware is fine, as MPU-401 worked great for Day of the Tentacle, X-Com, and Loom on my old 486. The ultimate talkie edition of monkey island 1 had some problematic music, but since that isn't really official, I don't think its as big a deal as GUS Music for me.
For GUS, I've tried Rise of the Triad (Shareware and Dark War), Raptor, Tyrian, and Jazz Jackrabbit (+ both Holiday Hare 94 and 95).
For Rise of the Triad:
For Raptor (full and shareware):
For Tyrian:
For Jazz Jackrabbit (HH94/HH95/CD):
I don't know the chipset of the 486 off-hand, but the Pentium 2 is a a socket 1 / ASUS P2L97 (intel 440lx chipset).
Anything else I should try/you'd like to know? I'm pretty new to GUS, so I'm not sure if I missed a step. I did run on both with the latest picogus release and the ultrasnd drivers/patches from the wiki.
I know this was tested heavily with demos, not sure where to go about getting one, but I'd be happy to try/post results. I can stream from either system with a little work, so video/audio capture is possible, too.
Hi, Ian!
Thank you so much for your amazing project! Just assembled and tested PicoGUS. I would like to share my results:
KM-S4-1 motherboard (aka U6923, Rectron RT-4s3) SiS 85C496/497 chipset, am486DX4-100
https://www.elhvb.com/webhq/models/486pci/km-s4-1.htm
Asus CUV4X motherboard based on VIA Apollo Pro133A chipset, PIII-733
http://hw-museum.cz/mb/46/asus-cuv4x
excellent results but we have to setup a couple of settings in BIOS before:
'Advanced'->'PCI/PNP ISA IRQ Resource Exclusion'->'IRQ 5 Used by ISA' set to 'Yes'
'Advanced'->'PCI/PNP ISA DMA Resource Exclusion'->'DMA 1 Used by ISA' set to 'Yes'
Hope you will find some solution for SBOS and NMI issue someday somehow for all of us! )) Thanks again!!! Cheers!
I have serious trouble finding 2508051027Y1 ferrite beads where I live, and I have no option of ordering from Mouser. Can I use BLM21SP102SN1D instead? It has maximum DC Resistance of 120 mOhms instead of 300 mOhms. Will it do?
So I saw the talk about a possible cubic spline interpolator mode for PicoGUS, which would result in crisper audio with less treble being cut off from linear interpolation.
Here's some code I wrote that should work: https://pastebin.com/raw/Yvyh63VP
The only problem is that you need to input the correct sample points for the s0..s3 function parameters. This is slightly tricker than having to deal with just one extra sample (like with linear interpolation).
Here's what s0..s3 should be based on a few conditions (could be off, but something like this anyway).
Some notes first:
Pos
is the current integer sampling positionEnd
is the end point for a non-looping samples
is a pointer to the sample data (either 8-bit or 16-bit samples)HasLooped
is a flag for having reached the end of a loop on a looping sample. Set it to false
when a voice is starting to play a sample (sample trigger), and set it to true
when you have looped at least once (sample is looping its loop now). I'm sure it has to be set to false
in other situations as well.if (Pos == 0) s[0] else s[Pos-1];
s[Pos]
if (Pos+1 >= End) s[End-1] else s[Pos+1];
(yes, End-1. As in the last sample point)if (Pos+2 >= End) s[End-1] else s[Pos+2];
if (HasLooped) { if (Pos == LoopStart) s[LoopEnd-1] else s[Pos-1]; } else if (Pos == 0) s[0] else s[Pos-1]; }
s[Pos]
if (Pos+1 >= LoopEnd) s[LoopStart+((Pos+1)-LoopEnd)] else s[Pos+1];
if (Pos+2 >= LoopEnd) s[LoopStart+((Pos+2)-LoopEnd)] else s[Pos+2];
if (HasLooped) { if (Pos == LoopStart) s[LoopStart+1] else s[Pos-1]; } else if (Pos == 0) s[0] else s[Pos-1]; }
s[Pos]
if (Pos+1 >= LoopEnd) s[LoopEnd-((Pos+2)-LoopEnd)] else s[Pos+1];
(do Pos+2/Pos+3 for an extra -1)if (Pos+2 >= LoopEnd) s[LoopEnd-((Pos+3)-LoopEnd)] else s[Pos+2];
There could be some off-by-one (or bigger) errors here, so do experiment with it. If it's possible to sample backwards in "forward loop" mode, then it would also need more logic.
PS: I totally understand if this is too bothersome to implement, and that's fine. :-)
In certain games, the joystick input is affected by the utilization of the soundcard. For example, in Super Street Fighter 2 Turbo, if GUS firmware is loaded with joystick support turned on (/j) AND the card is used by the game for music and sfx, the joystick will exhibit random inputs. If the game instead is directed to utilize another soundcard within the system for music and sfx (in this case, an ESS Audiodrive), the joystick behaves normally.
As an aside, it would be great to be able to use more than four buttons. Loving my PicoGUS otherwise!
I was just doing some searching for other potential back bracket options:
The screw holes are in different places, so this would need a PCB change, but that may be a good option assuming the Keystone Electronics 9202-1 bracket isn't coming back in stock.
The usage specifies "/b" as option to set the base address, the option parsing uses "/p" to scanf() port_override
I was wondering if this was possible, maybe via this device:
https://github.com/necroware/gameport-adapter
The main reason I haven't dumped my SB16 in favor of the PicoGUS on my main setup is that I love to use my Gravis Gamepad. Would love to be able to use it with my PicoGUS!
This board is very much an edge case, given that it has dual CPU mode, limited IRQs (due to the sheer number of onboard devices, this was not a cheap system), and an onboard Sound Blaster Vibra 16 competing with the classic IRQ 5/DMA 1 combo. This took a while, but once I gave the sound card DMA 3 properly everything began to work. Unfortunately "two jumpers for DMA 3" wasn't explained too well as I was thinking it worked like SCSI "add the number up" jumpers.
Anyways Duke Nukem 3d, Crystal Dream 2, Doom 1/2, and Xaos and Xaos 2 work just fine. The Windows 95 drivers reported an IRQ conflict with the onboard Vibra 16, but I will try to mess with that later to see if I can give it the right IRQ/DMA combo.
@JorgeCarvalho_web_dev left "May be a little higher pitch on picoGus" message under https://www.youtube.com/watch?v=UJcPF2gYWE4 and I think I also heard this difference. I wrote a comment:
"spectrogram would be ideal for quick glance testing, Linux Baudline produces spectacular results and is free. Audacity can also genereate them, so does Jaaa, sox, etc etc. Pretty much what people doing software defined radio are using."
but then I found something absolutely perfect for the job: https://junkerhq.net/MDFourier/ "MDFourier is an open source software solution created to compare audio signatures and generate a series of graphs that show how they differ."
I am having issues with my PicoGUS detection whenever I insert the 3.5mm line into the I2S DAC module. This is consistent so I have been looking for problems in that area. The SCK line seems to be shorting to ground. All of the joints look clean, but it makes me wonder if I should have left out soldering certain pins that were undefined in the build guide. I will continue to troubleshoot and will probably pull the I2S DAC out to get a better look at things.
I question whether it was incorrect of me to solder in these extra pads along the length of the module? I had an extra pin header to that length and thought it wouldn't hurt to solder them down for extra support, but maybe I should have only soldered LGRG or finished soldering the whole row down?
Hi! I apologize in advance if this is a repeat question.
There is a cheap chinese RP2040 board developed by VCC-GND Studio known as "YD-RP2040":
e.g.: https://makerselectronics.com/product/yd-rp2040-vcc-gnd-studio-microcontroller-board
This board contains the RGB WS2812 LED controlled by GP23. When using this board with picogus firmware, this RGB LED is always on after the first sound output:
Is there any way to fix this issue in future firmware? Thank you in advance!
Removed picoGus from slot and programmed directly from usb port, card inserted in isa slot and using the provided pgusinit it reports good, picogus initialized with success but no sound on cmod or second reality.
reflashing it on isa slot using pgusinit with /f option I can ear a beep for each dot on screen while flashing FW
CPU Via c3@800
256MB RAM
Board MSI MS-6153 Ver 2.1
Was working good with FW 0.6.1
I tried the latest picogus 2 which I obtained from polpo earlier this year in my 5150 and 5160 motherboards.
On the 5150 as half expected it was not detected at all.
On the 5160 it seems to work fine
Thanks for an awesome product!
https://theretroweb.com/chipsets/1060 (Chipset)
https://theretroweb.com/motherboards/s/pcchips-m321-rev.-2.x (Motherboard)
386DX-40, XT-IDE, CIrrus Logic 542x, 32gb ram.
Played various demos and dosmid (in gus and mpu mode).
Played games using Adlib, CMS, GUS, and Mega-em modes.
Seems pretty reliable so far, really happy with the card. Nice work.
On Windows (from installer) or Linux it's the same thing: When I download
And compile the project, it fails to find a bunch of implementation for linker-wrapped functions at the end, specifically STDIO and Math ones
__wrap_puts
__wrap_printf
__wrap_remainder
Full log in https://github.com/maxgerhardt/picogus/actions/runs/6447661204
[ 96%] Building ASM object CMakeFiles/picogus.dir/home/runner/work/picogus/picogus/pico/pico-extras/src/common/pico_audio/audio_utils.S.obj
[ 97%] Building C object CMakeFiles/picogus.dir/home/runner/work/picogus/picogus/pico/pico-extras/src/common/pico_util_buffer/buffer.c.obj
[ 98%] Building C object CMakeFiles/picogus.dir/home/runner/work/picogus/picogus/pico/pico-sdk/src/rp2_common/hardware_flash/flash.c.obj
[100%] Linking CXX executable picogus.elf
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `_out_char':
<artificial>:(.text+0x1f90): undefined reference to `__wrap_putchar'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `panic':
<artificial>:(.text+0x2150): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: <artificial>:(.text+0x2158): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: <artificial>:(.text+0x215e): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `play_gus()':
<artificial>:(.text+0x2b40): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: <artificial>:(.text+0x2bfc): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o:<artificial>:(.text+0x2f84): more undefined references to `__wrap_puts' follow
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `play_gus()':
<artificial>:(.text+0x2ff8): undefined reference to `__wrap_printf'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: <artificial>:(.text+0x39aa): undefined reference to `__wrap_printf'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `__wrap_remainder':
<artificial>:(.text+0x3bb8): undefined reference to `__wrap_remquo'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `__wrap_remainderf':
<artificial>:(.text+0x3c34): undefined reference to `__wrap_remquof'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /tmp/picogus.elf.RtR3fl.ltrans0.ltrans.o: in function `main':
<artificial>:(.text.startup+0x19a): undefined reference to `__wrap_puts'
/home/runner/gcc-arm-none-eabi-10.2020.4-linux/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: <artificial>:(.text.startup+0x200): undefined reference to `__wrap_puts'
Which version of the SDK and compiler etc. are you using to build this project? The Wiki and README does not mention it.
Not an issue, but you can add the LSI/Headland HTK340 chipset to the list of compatible chipsets. This is a socket 3 486 chipset.
Greeting from Adrian's Digital Basement!
I noticed on his recent video that you have a "compatibility" issue with Star Control 2.
I very distinctly remember having a weirdo bizarro random sounds constantly playing issue with Star Control 2 on my Ultrasound back when I first installed the game back in the day. There was a fix or patch that cleared that up, but I have no recollection of where I got that, or exactly what form it took.
Can I ask for details on the testing you've done? Are you testing with the initial floppy-disc release of the game, and have you verified this misbehavior only occurs only on PicoGUS and not on real original hardware?
Hello!
I have finally completed your wonderful project by myself.
Although there was a minor issue during production, I was able to resolve it successfully.
Instead of using the 74CB3T3245PWR, I used the 74LVC244, and the card booted up well.
The card is recognized well in pgusinit and sounds great in adlib mode.
However, when I run Duke Nukem or Doom in GUS mode, the music plays well, but the FX sound doesn't come out.
Do you have any advice?
I've tried various jumper settings and experimented with different computers, but the symptoms are the same.
I also tried different settings such as "set ultrast=240,3,3,7" after using "set ultrast=240,1,1,5,5" (and, of course, I set the jumper on the board accordingly)."
I am trying to run System Shock 1 with the picogus and it oftentimes freezes up, forcing me to reboot my computer. This is a game which utilizes a bat file (shockgus.bat) to actually load the patches before playing. The card works fine for other games like DOOM, Epic Pinball, and Jazz Jackrabbit with no freezes.
When I use the Soundblaster 2.0 firmware and delete the SET commands (With blaster variables) it detects fine within the setup program and the main menu, but it freezes up when I load up a game. Sometimes when using the GUS version of the card it will lock up after a while of playing around. In both cases the system eventually locks up. If I set up Soundblaster as both in the install menu the game will run up until I change volume or just keep on playing - it will also end up freezing or seriously lagging.
I don't know if it's a resource conflict, I have a networking card which is disabled within the autoexec sometimes and it has no issues when working with other games (for instance, IPX-multiplayer DOOM). I'm guessing it's some sort of issue with System Shock and the Gravis Ultrasound, would it be a good idea to install another sound card just for this game?
Here are my specs:
Video Card: Trio64v
Motherboard: Supermicro P5StE (American Megatrends, Intel 430HX)
CPU: Pentium 133 (non-mmx)
Sound Card: PicoGUS configured at IRQ5, Port 240, IRQ 5 and DMA 1
Networking Card: 3COM Etherlink Combo ISA card
My Autoexec for the ultrasound is:
SET ULTRASND=240,1,1,5,5 (Now changed to IRQ 7)
SET ULTRADIR=C:\ULTRASND
C:\PICOGUS\PGUSINIT.EXE
My soundblaster is set at 220 with IRQ 7 and DMA 1. It works fine with other games (With no 32 in)
The card also seems to freeze on Descent, same specs and I did some trial and error with other cards pulled in and out. Descent appears to crash on level 3 after a few seconds, giving a dump error starting with:
USE32, byte granular limit, FFFFFFFF, base 0, acc CF93
(error continues with similar messages until it ends with a C:\Descent>)
AUTOEXEC
SET ULTRASND=240,1,1,5,5
SET ULTRADIR=C:\ULTRASND
C:\PICOGUS\PGUSINIT.EXE
prompt $p$g
path c:\dos;
CONFIG.SYS
DEVICE=C:\dos\himem.sys
DEVICE=C:\DOS\EMM386.EXE
DOS=HIGH
BUFFERS = 30
files = 30
I'm guessing this is because the game runs out of memory with the Gravis Ultrasound, I did try a clean bootdisk (shown above) and it gives the same problem. Not sure what's up here, happens with and without the soundblaster 32 and 3com card inside. The card also seems to exhibit the same issues on other levels, some more frequently, and other levels have their instruments removed (Level 1 of Descent has no strings during the main part of the song). I have tried switching DMAs and addresses to no avail.
EDIT: Upon opening descent's MIDI files, I find that they crash at around the same areas using a midi player, so I'm curious if this is a descent issue and not a card issue. If anyone has a legitimate gravis card and wants to try out various levels lmk
Other games like TIE fighter, ROTT, and TES: Arena will work for a bit but then freeze, I have two cards set up, the SB32 is for a gamepad controller and AWE32 support when I'd like it, nothing much.
Soundblaster 32 at 220H, IRQ 5, DMA 0, 5
PicoGUS as 240H, IRQ 7, DMA 1
PicoGUS SB at 220H, IRQ7, DMA 1 (Yes I am aware of the conflict with the SB32)
I'm guessing this is just because those games are dodgy with GUS support (Which is understandable) but I'll just list them here. I would like confirmation on TES and TIE because those aren't on the compatibility list. These games still have issues without the SB32 installed as well, with some exceptions (Descent and ROTT have perfect SB accuracy)
Chipset: AMD 750 (Irongate)
Motherboard: MSI MS-6167
Running Athlon 600 + 384 MB RAM
Tested firmware: 1.0.2
OS: DOS 7 (Windows 98)
Settings used on PicoGUS: port 240, IRQ 7, DMA 3
As far as I can tell, all demo's, games and trackers I tried work (that includes most demo's on the list). Dope works without workarounds, Impulse Tracker didn't seem to glitch when changing the number of allocated channels etc., Cubic Player works just fine too. So to me it seems compatibility is pretty much 100%.
Only note (but maybe it is a known thing) is that Tyrian doesn't seem to work with ULTRAMID when I load UMBPCI.SYS and/or XMGR.SYS (they are alternative memory managers and work together; the benefit being that it doesn't put the CPU in protected mode which demo's sometimes don't like but still offers a lot of conventional memory). DOOM works fine with those memory managers and ULTRAMID.
Firstly, thanks for sharing your awesome project.
I have no knowledge of electronic circuits, but I enjoy soldering.
I would like to give your project as a gift for my homemade retro PC, but some IC chips are hard to find in my country.
74CB3T3257PWR
74CB3T3245PWR
Is there a replacement for the above two chips?
If there are compatible chips, please advise.
Thank you.
I was just looking at my case, and there are three LEDs on there. I then looked at the PicoGUS and thought about running the LED wire from one of the unused LEDs back to the Pico so I could see the LED flash on the front of the case when the case cover was on. But alas, there isn't a header, or anything I could easily tie into.
My request is to put an unpopulated through-hole so I can put my own header on, and run the wires up to the front. Make it completely optional for the people that want to put that effort in. Or, throw an extra $10 for that header.. ahem.
The other option is I attempt to solder wires to the existing LED, but... yeah.. no.. ;)
I've tested a few unverified demos.
Seem perfect:
Imperfect:
Possibly problematic (I did not try very hard to run them):
Tested with the same image on each motherboard with the same PicoGUS setting.
[OS]
[PicoGUS]
[Test Games]
DOOM/DUKE3D/DECENT/HERETIC/COMMAND AND CONQUER
[Socket | Chipset | Motherboard | Notes]
[Perfect]
[Works With Issues]
[Does Not Work]
Hi,
This isn't a bug with PicoGUS but it's something you might want to add to your compatibility list wiki page (I don't have permission to edit it). Doom uses the DMX sound library which has a bug that causes it to play the wrong patches for some instruments. There's a PWAD I made that fixes the bug.
A demo video is here that shows the difference it makes. The same WAD should also work for other Doom engine games: Heretic, Hexen, Strife, Chex Quest.
Hi,
I have assembled three PicoGUS and two of them work fine, and on the third board, when playing music, you can hear clicks and crackles like when listening to a vinyl record.
The problem is observed in the XTC-PLAY player.
The sound is normal in games.
What could be the problem? Is this a defective PCM5100A audio codec?
Link to the recorded audio file:
(https://drive.google.com/file/d/13oy0wXh3Ue7P_ZVYZhUcEBK353x5l1JZ/view?usp=sharing)
In Prince of Persia, the intro music missing some piano notes. Also when games starts "Danger" music piece missing a lot of notes in the piano chord.
Issue also present in other emu8905 project, verified by playing VGM of the game in emu8905 based VGM player.
Narrowed it down to a bug in attack rate calculation of emu8950.
Hi,
is there any analogue of the LY68L6400SLIT chip?
On the JLCPCB website, these chips are marked as out of stock.
Hi, trying to init and get an error;
ERROR: PicoGUS card using protocal 221, needs 2
Using a femto with ISA adapter from Tindie https://www.tindie.com/products/polpo/picogus-femto-edition-for-pocket-386-and-isa/
Programmed the Pico by holding BOOTSEL and dropping pg-gus.uf2 from picogus-v1.2.0 release (unplugged from femto).
Stuck it in my 486 using the ISA adapter, but no joy. Will try it in the book 8088 when I find the power adapter :)
A standard PicoGUS v2 works fine in the 486
Hi! I like your project! I noticed you have multiple firmware's which need to be reflashed to select the functionality. I have done some coding on the Pi Pico myself, and I made a tool to combine multiple firmware .bin files into one .uf2 file. A small "bootloader" will jump to the requested firmware. This way reprogramming to change functionality isn't needed anymore. If you are interested I can share some code parts with you.
Will you plan to evolve the hw of board with new chip? 48 I/O 5V tollerant....
I'm apologize if this has been asked before, but would it be theoretically possible to combine the SB and MPU firmwares/functionality?
I'm very impressed by how this project is progressing, and I'm considering trying to integrate it into another revision of my x86 SBC, the TinyLlama, possibly ditching the Crystal CS4237B altogether. I guess using two rp2040s each running its own firmware could be doable as well, just wanted to check! :)
Note: I don't have another motherboard with ISA on it, so I'm kind of stuck with this one.
I bought a PicoGUS a couple weeks ago, and just tonight I'm trying to get this thing rolling.
System Stats:
486DX2-80
Trident 512k VGA Card
XT-IDE Board, configured at $D000 and $360, with an IDE2CF drive plugged in, 2Gig CF running MSDOS 6.22.
PicoGUS set to IRQ 5, DMA1, just as it was right out of the box. (Twin jumpers on DMA1)
Additional card for serial, IDE and FD, but, IDE is disabled via jumpers. This card is set to run at $C800.
100mbit D-Link DE (Or DF? Through way right at the bottom) 220T NIC, running at packet int 0x62, 0x300, IRQ3.
Software:
What I've seen since the initial plugin:
Actions I've taken:
I'm at a loss on where to go from here.
The card "seems" OK since I can put the firmware on the drive via USB and things do their things, but I'm not sure where to go from here now.
I would appreciate the addition of AC97 or HDA headers in the latest PC cases to fully utilize the functionality of this card.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.