VOGONS


First post, by TheMechanist

User metadata
Rank Newbie
Rank
Newbie

Hi folks,

the raw opl capture feature is really cool ! The whole dosbox project is really amazing, thanks for it !

Atm I'm trying to develop an adlib core for some demo stuff (i286 code) and now I'm stuck with a DRO v2 files player .. the format is really straight forward so I don't know what I'm doing wrong.

1.) DRO Files play slower compared to e.g. Audacious (Linux) .. the Short/Longdelay is realized through function 0x86 int 0x15, which works pretty reliable.
2.) playing routines crashes without any visible reason coincidentally - sometimes the *same* song is fully played, sometimes it crashes after short time.
3.) "Pure" OPL2 captures contain register information > 127 which seems to point to OPL3 or dual OPL2
4.) DRO Files are quite big - form the technical point of view I guess it's 'cause of redundant instrument information compared to tracker files with instruments section - but here http://nerdlypleasures.blogspot.de/2014/03/ra … ith-dosbox.html is stated "that dro files quite small" .. I've caputured 124 kb for about 1 minute ?!
5.) Does dosbox care about write delays to opl2 address and value registers ? I emulated the suggested 12 & 84 cycles wait with CLC (on real machines 2 cycles per instruction) ..

Will the adlib emulation break if illegal instructions are sent to adlib ?
What are the best conf settings for emulating adlib opl2 ?
Do you have any hints what to take care of if writing playing routines for adlib (emulation) ?

I'm using DOSBox 0.74 from the offical repositories, Linux 32 bit, Ubuntu 16.04 LTS .. maybe it's only a problem with the linux version ?

The same code runs fine with PCem v12 - no matter if I'm using Ami286 clone 6 MHz or Pentium Overdrive 83 MHz ..

Greetz

TheMechanist

Unchained demo group
swap42

Reply 1 of 5, by TheMechanist

User metadata
Rank Newbie
Rank
Newbie

.. crashes seem to occur, when using ah = 86h, int 15h without setting al = 0.

This was described here https://stackoverflow.com/questions/34089884/ … -int-15h-ah-86h; I added that instruction, till now I had no more crashes. I'm not sure if this is simply a DOSBox Bug, since PCem had no problems and I didn't find this behaviour described in any of the x86 manuals !?

Unchained demo group
swap42

Reply 2 of 5, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I remember this problem:

https://sourceforge.net/p/dosbox/code-0/3694

That could explain the problem that you are having. (as emulated memory got corrupted based on the register values)
(int 15h ah=86h itself doesn't use reg_al, but the code that does the waiting, had a bug that overwrote the emulated memory, this affected the pause key (and probably the wait function you use as well)

Can you retry your old code with the current SVN ?

Water flows down the stream
How to ask questions the smart way!

Reply 5 of 5, by TheMechanist

User metadata
Rank Newbie
Rank
Newbie

tried the code (not setting al to 0 when calling int 15h) with

https://launchpad.net/~i30817/+archive/ubuntu … .04.1_amd64.deb

and it seems to rune fine !

Unchained demo group
swap42