Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

vsbhda - BOOST demo with SB Live (Users)

posted by Japheth Homepage, Germany (South), 20.11.2025, 11:24

> So I tried to set 1Ah after VSBHDA loaded but ...

Value 0x1A is inherited from mpxplay and has its origin in EMU10K1.H:

#define TIMER_RATE_MASK        0x000003ff
/* Timer interrupt rate in sample periods    */
/* 0 == 1024 periods, [1..4] are not useful    */
#define TIMER_RATE        0x0a00001a

Both use the TIMER_RATE value to write to the "timer" port. It's a dword, so outl() is used for writing. However, the port has WORD size only; at offset 0x1C there's the AC'97 data port, so the outl() writes 0xa00 to that port, which seems pretty hazardous and "buggy" to me (constant TIMER_RATE has vanished in current emu10k1.h in Linux ).

> I have to lower the value to 1-3 to get smooth playback for
> Boost demo and value 1 for another demo Dream by Peon (compiled with DJGPP,

As you can see from the comment in emu10k1.h, those values are "not useful". :-D


> I dumped the regs with your SBLIVE.EXE tool
> and there are many more differences between VSBHDA and SBEMU initialisation
> values

Yes. There's a bug in sbemu, however, making it skip every second entry in the microcode array during initialization ( each entry is 64-bit ).

> (I pressed the reset button between making second dump).

I've got the impression that most EMU10K1 register values are not affected by reset, and there's no software reset either...

---
MS-DOS forever!

 

Complete thread:

Back to the forum
Board view  Mix view
22972 Postings in 2154 Threads, 403 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum