diff --git a/applecorn.po b/applecorn.po index 4f1b0e5..13f6c6c 100644 Binary files a/applecorn.po and b/applecorn.po differ diff --git a/mainmem.audio.s b/mainmem.audio.s index e0e0cf0..c5c88b6 100644 --- a/mainmem.audio.s +++ b/mainmem.audio.s @@ -732,7 +732,6 @@ ADSRPHASE STX OSCNUM :S1 TYA ; Change/step -> A CLC ADC CURRAMP,X ; Add change to current amp -* BCS :CLAMP ; If overflow, clamp to target CMP :TARGET ; Compare with target BCS :CLAMP ; If target < sum, clamp to target BRA :UPDATE @@ -743,7 +742,7 @@ ADSRPHASE STX OSCNUM :S2 TYA ; Change/step -> A CLC ADC CURRAMP,X ; Add change to current amp - BCS :CLAMP ; If overflow, clamp to target + BCS :CLAMP ; If overflow (-ve), clamp to target CMP :TARGET ; Compare with target BCC :CLAMP ; If target >= sum, clamp to target BRA :UPDATE diff --git a/mainmem.ensq.s b/mainmem.ensq.s index 8c2968c..806d757 100644 --- a/mainmem.ensq.s +++ b/mainmem.ensq.s @@ -2,6 +2,7 @@ * (c) Bobbi 2022 GPLv3 * * Ensoniq DOC Driver for Apple IIGS. +* Simulates Hitachi SN76489 sound generator chip found in BBC Micro. * * Ensoniq control registers @@ -145,7 +146,13 @@ ENSQNOTE PHA CPX #$00 BEQ :NOISE ; Oscillator 0 is noise channel - PHA ; Stash orig freq + CPX #$01 ; Oscillator 1 controls noise freq + BNE :S0 ; Not 1? Skip + CMP #$00 ; If frequency is zero .. + BEQ :S0 ; .. skip + STA :CH1NOTE ; Store frequency for noise gen + +:S0 PHA ; Stash orig freq TAY LDA EFREQLOW,Y TAY ; Frequency value LS byte @@ -232,6 +239,7 @@ ENSQNOTE PHA :NOISENOTE DB 149 ; BBC Micro note P=0 or 4 DB 101 ; BBC Micro note P=1 or 5 DB 53 ; BBC Micro note P=2 or 6 +:CH1NOTE DB 00 ; Note on channel 1 * Adjust frequency of note already playing diff --git a/mame_applecorn b/mame_applecorn old mode 100644 new mode 100755