machine/8364_paula.cpp: assume max size if audlen == 0, fixes missing sound in videokid and wrestlmn

This commit is contained in:
angelosa 2024-01-06 00:04:48 +01:00
parent 00544c23ca
commit f43f4b0696
3 changed files with 11 additions and 6 deletions

View File

@ -53998,9 +53998,9 @@ ATK test: OK
<publisher>Gremlin Graphics</publisher>
<notes><![CDATA[
Red screen, [FDC] dsksync (fixed)
No [Paula] sound
No [Paula] sound (fixed)
[Denise] sprites flickers when hitting the bottom edge
Status bar don't draw score/lives text [Denise]
Status bar don't draw score/lives text [Denise] or [Copper]
Stage 2 (Wild West) draws black background [Copper]
https://codetapper.com/amiga/sprite-tricks/videokid/
ATK test: failed
@ -56402,11 +56402,13 @@ ATK test: failed
<publisher>Ocean</publisher>
<notes><![CDATA[
White screen [FDC] dsksync (fixed)
No [Paula] sounds
No [Paula] sounds (fixed)
Gameplay doesn't draw left-right ropes [Copper] sprites
https://codetapper.com/amiga/sprite-tricks/wwf-wrestlemania/
ATK test: failed
]]></notes>
<info name="usage" value="Dislikes mouse connected in any port for practice mode (wants joystick)" />
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="851712">
@ -56432,6 +56434,8 @@ ATK test: failed
Pink screen [FDC] dsksync (fixed)
ATK test: failed
]]></notes>
<info name="usage" value="Dislikes mouse connected in any port for practice mode (versus)" />
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="852144">

View File

@ -207,8 +207,9 @@ TIMER_CALLBACK_MEMBER( paula_8364_device::signal_irq )
void paula_8364_device::dma_reload(audio_channel *chan, bool startup)
{
chan->curlocation = chan->loc;
// TODO: how to treat length == 0?
chan->curlength = chan->len;
// TODO: Unconfirmed, assume max size if length is 0.
// cfr. wrestlmn and videokid, where they pratically never get even close to buffer exhaustion.
chan->curlength = chan->len == 0 ? 0x10000 : chan->len;
// TODO: on startup=false irq should be delayed two cycles
if (startup)
chan->irq_timer->adjust(attotime::from_hz(15750), chan->index); // clock() / 227

View File

@ -86,7 +86,7 @@ private:
{
emu_timer *irq_timer;
uint32_t curlocation;
uint16_t curlength;
uint32_t curlength;
uint16_t curticks;
uint8_t index;
bool dma_enabled;