aboutsummaryrefslogtreecommitdiff
path: root/src-68k
diff options
context:
space:
mode:
Diffstat (limited to 'src-68k')
-rw-r--r--src-68k/echo.68k24
-rw-r--r--src-68k/esf.68k19
2 files changed, 33 insertions, 10 deletions
diff --git a/src-68k/echo.68k b/src-68k/echo.68k
index 7abdbf8..e755d19 100644
--- a/src-68k/echo.68k
+++ b/src-68k/echo.68k
@@ -273,6 +273,22 @@ Echo_SetPCMRate:
rts ; End of subroutine
;****************************************************************************
+; Echo_SetStereo
+; Sets whether stereo is enabled or not
+;
+; input d0.b ... 0 to disable, otherwise to enable
+;****************************************************************************
+
+Echo_SetStereo:
+ movem.l d0-d1, -(sp) ; Save registers
+ tst.b d0 ; Check what we want to do
+ seq.b d1 ; Put parameter in place
+ move.b #$09, d0 ; Command $09 = set stereo
+ bsr Echo_SendCommandByte ; Send command to Echo
+ movem.l (sp)+, d0-d1 ; Restore registers
+ rts ; End of subroutine
+
+;****************************************************************************
; Echo_SetVolume
; Changes the global volume for every channel.
;
@@ -283,7 +299,7 @@ Echo_SetVolume:
Echo_Z80Request ; We need the Z80 bus
movem.l d0-d1/a0-a1, -(sp) ; Save registers
- lea @FMTable(pc), a0 ; Determine FM volume
+ lea Echo_FMVolTable(pc), a0 ; Determine FM volume
moveq #0, d1
move.b d0, d1
lsr.b #2, d1
@@ -299,7 +315,7 @@ Echo_SetVolume:
move.b d1, (a1)+ ; FM channel 6
move.b d1, (a1)+ ; FM channel 7
- lea @PSGTable(pc), a0 ; Determine PSG volume
+ lea Echo_PSGVolTable(pc),a0 ; Determine PSG volume
moveq #0, d1
move.b d0, d1
lsr.b #2, d1
@@ -324,13 +340,13 @@ Echo_SetVolume:
;----------------------------------------------------------------------------
-@FMTable:
+Echo_FMVolTable:
dc.b $7F,$7B,$77,$73,$70,$6C,$68,$65,$61,$5E,$5A,$57,$54,$50,$4D,$4A
dc.b $47,$44,$41,$3F,$3C,$39,$36,$34,$31,$2F,$2D,$2A,$28,$26,$24,$22
dc.b $20,$1E,$1C,$1A,$18,$16,$15,$13,$12,$10,$0F,$0D,$0C,$0B,$0A,$09
dc.b $08,$07,$06,$05,$04,$04,$03,$02,$02,$01,$01,$01,$00,$00,$00,$00
-@PSGTable:
+Echo_PSGVolTable:
dc.b $0F,$0F,$0E,$0E,$0D,$0D,$0C,$0C,$0B,$0B,$0B,$0A,$0A,$0A,$09,$09
dc.b $08,$08,$08,$07,$07,$07,$06,$06,$06,$06,$05,$05,$05,$04,$04,$04
dc.b $04,$03,$03,$03,$03,$03,$02,$02,$02,$02,$02,$02,$01,$01,$01,$01
diff --git a/src-68k/esf.68k b/src-68k/esf.68k
index fc8dacc..7f5aae5 100644
--- a/src-68k/esf.68k
+++ b/src-68k/esf.68k
@@ -220,12 +220,19 @@ ESF_SetFMReg macro
ESF_Delay macro
if (\1)>0
- if (\1)<=$10
- dc.b $D0-1+(\1)
- else
- dc.b $FE
- dc.b (\1)&$FF
- endc
+ if (\1)>=$100
+ rept (\1)/$100
+ dc.b $FE, $00
+ endr
+ endc
+ if (\1)%$100
+ if ((\1)%$100)<=$10
+ dc.b $D0-1+((\1)%$100)
+ else
+ dc.b $FE
+ dc.b (\1)%$100
+ endc
+ endc
endc
endm