Re: [hatari-devel] 8 runes of aerillion doesn't have sound |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: hatari-devel@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [hatari-devel] 8 runes of aerillion doesn't have sound
- From: Anders Eriksson <evldhs@xxxxxxxxxxxxxx>
- Date: Sun, 17 Mar 2024 09:22:37 +0000
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1710667369; x=1710926569; bh=KFIee3FGgn4cwcsru1vgAWmOzt3Obuc/q12RkHItPDw=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=uesxvA8IK73SvHzoUfagDz19qOk+PqIV3ZyNryeQQC2SpLMU1WunC/ilLNHGAI29w xVnEzDvSkBUnD5qo/Hp2GwUCCVIamBHyIEB37igc0lwa9L+cfWTOi2JNrEDeuuGn7T s4UTPcIv5nsclVU+HsJDXLcQMZckJv4cGsHDP51xBiZnAfsjgoqLd/tuOg5obrHHUk k4QrXsQDJISaZV87TZSMDXPQ5/pDlNQUVk3P2LnA5z2gCbU4XKXrnvQYRNssL3OnS9 xZwCBZHNquEIgW/VdtjLLIs9BH9qDJSUomhKldeePdtXXNy8sO4QDnEOUHYPom9pm0 xNhrNvR8ZkXtQ==
- Feedback-id: 41365795:user:proton
> Le 16/03/2024 à 23:07, Nicolas Pomarède a écrit :
>
> > Le 10/03/2024 à 21:45, Nicolas Pomarède a écrit :
> >
> > > Le 10/03/2024 à 08:32, Laurent Sallafranque a écrit :
> > >
> > > > Maybe this can help.
> > > >
> > > > I use a variable : "music_sequence_index" to keep the current sample
> > > > index.
> > > > I've traced my code and I see that "music_sequence_index" goes from
> > > > 0(*8) to 2(*8) immediately at the beginning of the music,
> > > > which means there's an interrupt played immediately after the
> > > > beginning of the music.
> > > >
> > > > The VHS intro plays a sample without interrupts.
> > > > I stop the music between the VHS screen and the intro of the demo.
> > > > The sample is bigger than the effect length, so, I stop it, load the
> > > > 1st music sample into memory and start to play the music.
> > > >
> > > > In the music_start code, I add #8 to "music_sequence_index" because
> > > > I read this value at the beginning of the interrupt code to load the
> > > > next sample.
> > > > I also increment by #8 this variable during each interrupt in the
> > > > interrupt code.
> > > >
> > > > The traced value of 2(*8) for the variable means that there's a
> > > > first interrupt triggered.
> > >
> > > Hi
> > >
> > > thanks for the information.
> > >
> > > What Hatari does at the moment is that it triggers an interrupt (TAI
> > > or GPIP7) when sample start playing (this is because SNDINT signal
> > > goes from idle to playing).
> > > And optionaly it triggers an interrupt when reaching the end of the
> > > sample buffer (if value is set at $FF8901)
> > >
> > > I thought signal always goes from idle to playing when starting a
> > > sound, but from what you describe it seems it's not the case, because
> > > this extra interrupt at start explains why sample 1 is not played and
> > > it "jumps" directly to sample 2.
> > >
> > > That would mean DMA sound triggers an interrupt at start only if
> > > FF8901 is not enabled to trigger an interrupt at the end (Hatari
> > > allows both at the moment)
> > >
> > > I need to write a small test program for falcon that would check the
> > > different cases (loop yes/no and interrupt at end yes/no), because so
> > > far the lack of real documentation from Atari makes it difficult to
> > > emulate.
> >
> > Hi
> >
> > looking at the demo, I see that the 1st sample is skipped because when
> > you stop the music after the vhs-like / blue screen then dma sound
> > channel goes to idle (=1) and this trigger the un-wanted gpip7
> > interrupt because bit 7 in MFP's Active edge register is set to 1 (so
> > 0->1 transition on GPIP7 will give an interrupt)
> >
> > This is not the TOS default value, usually AER's bit 7 = 0 (transition
> > on 1->0 on gpip7)
> >
> > I see that at the start of the demo you save MFP content and you also
> > do this :
> >
> > 0001fd14 0838 0007 fa01 btst.b #$0007,$fffffa01.w
> > 0001fd1a 6608 bne.b #$08 == $0001fd24 (T)
> > 0001fd1c 08b8 0007 fa03 bclr.b #$0007,$fffffa03.w
> > 0001fd22 6006 bra.b #$06 == $0001fd2a (T)
> > 0001fd24 08f8 0007 fa03 bset.b #$0007,$fffffa03.w
> > 0001fd2a 08b8 0007 fa0b bclr.b #$0007,$fffffa0b.w
> > 0001fd30 08f8 0007 fa13 bset.b #$0007,$fffffa13.w
> >
> > It checks bit7 of of GPIP7 (dma sound status) and depending on that it
> > changes AER bit7. And in this case it sets AER bit7=1 insted of
> > leaving it to 0 (because dma sound is idle when starting the demo from
> > tos)
> >
> > Why is this needed, can you tell what's the purpose of changing AER ?
> >
> > Nicolas
>
> Hi,
>
>
> But, as it worked for "Electric Night" on the real hardware, I think it
> should be emulated, no ?
>
> (I can modify the code of electric night and deliver a new version, but
> I would prefer Hatari to be closer to the real hardware if possible).
>
Hi, as a sidenote;
when you asked me to record Electric Night all those years ago, I remember you said the demo was out of sync in my recording when I had captured from a real Falcon.
--
Anders Eriksson
ae@xxxxxx