First post, by digger
So there's this "pet project" that I have been trying to work on in my spare time for the last few years now, but haven't been able to make much progress with on my own.
Namely, I've been wanting to dust off the assembly sources of VSB ("Virtual Sound Blaster" by Andrew Zabolotny), with the intent to do the following with it (in order):
- Port it from TASM to an open source assembler, such as FASM, (J)WASM or NASM
- Make it work with JEMM/JLOAD as an open source alternative to QEMM
- Make it support more modern audio devices for output, possibly by borrowing the AC'97 and HDA driver code from an audio playback DOS library called JUDAS, which I found on RayeR's web site
- Make it compatible with a broad range of PC chipsets, both old, new and everything in between, basically anything 386 and up
- Make it coexist with adlipt, if installed
- Make it work with both real-mode games and games powered by DOS extenders such as DOS/4GW
- Optionally upport OPL2/OPL3 emulation using code from other projects such as OPL3EMU by datajake1999
- Focus on stable and high quality Sound Blaster 1.5/2.0 emulation first, optionally add emulation support for later sound cards later
However, although I have been dabbling with DOS assembly in my spare time and also have set up DJGPP as a cross-compiler in a Linux development environment, my low-level/systems programming skills are still very limited. I'd very much like to learn, though! 😀
However, I've come to the conclusion that for this project to go anywhere, I can't work on this alone. I'll need some help from knowledgeable enthusiasts that would be willing to work on this with me.
So I'm looking for people who are interested in working on this toegether with me and preferably have more skills with this than I do. To be clear, it is not my intent to put other people to work. I definitely want to be one of the people working on this and I'd very much like to gain more skills in low-level DOS and hardware emulation programming, as well as have fun while working on something that I believe would be very useful to the retro graming community. But I think that will only succeed if I work on this together with others.
At the very least, if no one is interested in actively working on this, could I perhaps use this topic to call on you for questions every now and then as I try to figure this out by myself?
To be clear, I've already made some serious effort in porting the code base to FASM, but I kept running into issues. I already posted on the Flat Assembler forum with questions I ran into and got some helpful answers there, but I still haven't been successful in getting the code anywhere near working on FASM. Also, I've come to the conclution that for the longer term, as well as for flexibility w.r.t. the development environment I wish to use, it would probably be more useful to port the code to NASM instead. But I haven't gotten very far with that either. NASM has a TASM compatibility mode, but the original VSB source code uses so many TASM-specific features, such as "ideal mode", that the TASM compatibility that is flaunted in NASM (and also the TASM compatibility mode in other assemblers for that matter) don't cut it and can't seem to assemble the code without some serious porting work.
Perhaps it would be less effort if I started from scratch, using the VSB sources only as a reference. What do you all think? And are there any people here who are willing to step up to the plate and help me out with this?
- I published the source code to both VSB and TEMU (a Tandy Emulator) to GitHub here, with Andrew's permission: https://github.com/volkertb/temu-vsb
- I also published JUDAS to GitHub after downloading it from RayeR's website, since the code came with an open source license: https://github.com/volkertb/JUDAS
Thank you all at any rate! 😀