mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-08 19:32:39 +08:00
60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
Here's an unusual case of legacy DOS code:
|
|
|
|
This demo left me scratching my head for months
|
|
on why it seemed to support Sound Blaster, but
|
|
failed to produce any audio.
|
|
|
|
It wasn't until I watched the demo initialize
|
|
the Sound Blaster and I happened to look at the
|
|
interrupt vector table that I noticed the demo
|
|
is not hooking IRQ 5 or 7. It's hooking IRQ 3.
|
|
It began producing audio once I set sbtype=sb2
|
|
and irq=3.
|
|
|
|
This is very unusual, considering most demos
|
|
of that time assumed IRQ 7, the original stock
|
|
configuration of the original Sound Blaster.
|
|
I was not aware the Sound Blaster 2.0 had any
|
|
jumper settings to take IRQ 3, since that is
|
|
normally taken by serial ports on standard
|
|
PC hardware.
|
|
|
|
This is also the first demo I've found that
|
|
uses undocumented Sound Blaster 2.0 commands
|
|
0xE2 (DMA identification), 0xE4 (write test
|
|
register), 0xE8 (read test register), and
|
|
0xE0 (SB20 identification where you read
|
|
back the NOT inversion of your data byte).
|
|
|
|
I also noticed that the demo isn't playing
|
|
tracker music. Instead it's playing a simple
|
|
loop, using varied DSP+DMA block sizes to
|
|
act on "cue" points so that additional text
|
|
on top of the animation can flash in time
|
|
with the music. Debug messages printed to
|
|
the log by DOSBox confirm this.
|
|
|
|
* If the demo is in fact using some obscure
|
|
mechanism to autodetect the IRQ, please let
|
|
me know!
|
|
|
|
Recommended settings:
|
|
|
|
[cpu]
|
|
core=normal
|
|
cycles=4000
|
|
cputype=386
|
|
|
|
[sblaster]
|
|
sbtype=sb2
|
|
sbbase=220
|
|
irq=3
|
|
dma=1
|
|
goldplay=false
|
|
|
|
A cycles count between 3000 and 4000 is
|
|
recommended. Below 2500 the animated
|
|
"oscilloscope" of the music will render at
|
|
half the normal frame rate, if that matters.
|
|
|