DIGIPLAY
DIGIPLAY
DIGIPLAY plays Prince of Persia 1 digital sounds on the Sound Blaster.
Make sure your Sound Blaster port is at 0x220 and your DMA channel is 1. Also make sure that the sounds are extracted by PR with --raw option.
Note: May not work on all systems.
Make sure your Sound Blaster port is at 0x220 and your DMA channel is 1. Also make sure that the sounds are extracted by PR with --raw option.
Note: May not work on all systems.
- Attachments
-
- DIGIPLAY.ZIP
- First release.
- (6.78 KiB) Downloaded 105 times
-- Michael, the boy who makes Shaw's Nightmare.
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Re: DIGIPLAY
Apparently the backup that poirot gave me after the website went down didn't include this thread either.
Last 1 or 2 weeks of March 2013 didn't survive, I'm afraid.
However, surely we have everything relevant back now...
Last 1 or 2 weeks of March 2013 didn't survive, I'm afraid.
However, surely we have everything relevant back now...
Re: DIGIPLAY
What are you talking about? I released the tool today.
-- Michael, the boy who makes Shaw's Nightmare.
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Re: DIGIPLAY
I was talking about PCSPLAY.musa wrote:What are you talking about? I released the tool today.
Also PLAY by musa. This is something else though; missed that.
Re: DIGIPLAY
I've released DIGIPLAY v1.1.
New:
Fixed bug with DSP so it should work with DosBox.
New:
Fixed bug with DSP so it should work with DosBox.
- Attachments
-
- DIGIPLAY.ZIP
- version 1.1
- (6.79 KiB) Downloaded 79 times
-- Michael, the boy who makes Shaw's Nightmare.
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Re: DIGIPLAY
I just tried it, it works in DOSBox.
The only bug I found is that the player seems to wait too long after the sound is played.
I'd guess that this line is wrong:
Size is in samples, but delay() expects milliseconds.
The line should be:
(Or perhaps round up instead of down?)
I made this change, recompiled with Turbo C, and now it works correctly.
Some other things:
* i and count_values are declared but not used.
* fil could be an int instead of long.
* DIGIPLAY won't play sound 10015 (level door opening) because it begins with 0x81 instead of 0x01. That means that the sound is looped in the game.
The only bug I found is that the player seems to wait too long after the sound is played.
I'd guess that this line is wrong:
Code: Select all
delay(size);
The line should be:
Code: Select all
delay(size*1000L/rate);
I made this change, recompiled with Turbo C, and now it works correctly.
Some other things:
* i and count_values are declared but not used.
* fil could be an int instead of long.
* DIGIPLAY won't play sound 10015 (level door opening) because it begins with 0x81 instead of 0x01. That means that the sound is looped in the game.
Re: DIGIPLAY
DIGIPLAY v1.2 is out! You can now play PoP2 sounds (but not compressed sounds).
- Attachments
-
- DIGIPLAY.ZIP
- version 1.2
- (6.98 KiB) Downloaded 78 times
-- Michael, the boy who makes Shaw's Nightmare.
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Visit here to download Shaw's Nightmare: http://shawsnightmare.ucoz.com
Re: DIGIPLAY
I'm curious...
I understand that sets dsp_reset to 1, but what does, for example, do?
Both of these seem to be values; neither are variables?
I understand that
Code: Select all
outp(dsp_reset, 1);
Code: Select all
outp(0xa, 5);
Both of these seem to be values; neither are variables?
Re: DIGIPLAY
outp() does not set any variables.Norbert wrote:outp(dsp_reset, 1); sets dsp_reset to 1
outp(x,y) will output the byte y on the I/O port with address x. Both x and y can be any expression.
Its pair, inp(x) will input a byte from I/O port x and returns it.
The dsp_* variables contain I/O port addresses of the Sound Blaster. (Assuming base=0x220.)
That and the following outp() calls set up the DMA controller as needed for sound playback. (Using DMA channel 1.)Norbert wrote:but what does, for example, outp(0xa, 5); do?
(PRINCE.EXE does exactly the same port writes, search for "set_dma" in the disassembly.)
Re: DIGIPLAY
Oh, okay.