Some optimization.
This commit is contained in:
@@ -2062,8 +2062,6 @@ void InitDSP4()
|
|||||||
|
|
||||||
void DSP4SetByte()
|
void DSP4SetByte()
|
||||||
{
|
{
|
||||||
if ((dsp4_address & 0xf000) == 0x6000 || (dsp4_address >= 0x8000 && dsp4_address < 0xc000))
|
|
||||||
{
|
|
||||||
// clear pending read
|
// clear pending read
|
||||||
if (DSP4.out_index < DSP4.out_count)
|
if (DSP4.out_index < DSP4.out_count)
|
||||||
{
|
{
|
||||||
@@ -2259,13 +2257,10 @@ void DSP4SetByte()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSP4GetByte()
|
void DSP4GetByte()
|
||||||
{
|
{
|
||||||
if ((dsp4_address & 0xf000) == 0x6000 || (dsp4_address >= 0x8000 && dsp4_address < 0xc000))
|
|
||||||
{
|
|
||||||
if (DSP4.out_count)
|
if (DSP4.out_count)
|
||||||
{
|
{
|
||||||
dsp4_byte = (uint8) DSP4.output[DSP4.out_index&0x1FF];
|
dsp4_byte = (uint8) DSP4.output[DSP4.out_index&0x1FF];
|
||||||
@@ -2277,9 +2272,4 @@ void DSP4GetByte()
|
|||||||
{
|
{
|
||||||
dsp4_byte = 0xff;
|
dsp4_byte = 0xff;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dsp4_byte = 0x80;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,11 +25,25 @@ EXTSYM regaccessbankr16,regaccessbankr8,regaccessbankw16,regaccessbankw8
|
|||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
NEWSYM DSP4Read8b
|
%macro RouteAccess 1
|
||||||
test ecx,8000h
|
test ecx,08000h
|
||||||
jnz .dsp4area
|
jnz .dsp4area
|
||||||
jmp regaccessbankr8
|
jmp %1
|
||||||
.dsp4area
|
.dsp4area
|
||||||
|
mov dx,cx
|
||||||
|
and dx,0C000h
|
||||||
|
cmp dx,08000h
|
||||||
|
je .dsp4continue
|
||||||
|
mov dx,cx
|
||||||
|
and dx,0F000h
|
||||||
|
cmp dx,06000h
|
||||||
|
je .dsp4continue
|
||||||
|
ret
|
||||||
|
.dsp4continue
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
NEWSYM DSP4Read8b
|
||||||
|
RouteAccess regaccessbankr8
|
||||||
mov word[dsp4_address],cx
|
mov word[dsp4_address],cx
|
||||||
pushad
|
pushad
|
||||||
call DSP4GetByte
|
call DSP4GetByte
|
||||||
@@ -38,10 +52,7 @@ NEWSYM DSP4Read8b
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM DSP4Write8b
|
NEWSYM DSP4Write8b
|
||||||
test ecx,8000h
|
RouteAccess regaccessbankw8
|
||||||
jnz .dsp4area
|
|
||||||
jmp regaccessbankw8
|
|
||||||
.dsp4area
|
|
||||||
mov word[dsp4_address],cx
|
mov word[dsp4_address],cx
|
||||||
mov byte[dsp4_byte],al
|
mov byte[dsp4_byte],al
|
||||||
pushad
|
pushad
|
||||||
@@ -50,10 +61,7 @@ NEWSYM DSP4Write8b
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM DSP4Read16b
|
NEWSYM DSP4Read16b
|
||||||
test ecx,8000h
|
RouteAccess regaccessbankr16
|
||||||
jnz .dsp4area
|
|
||||||
jmp regaccessbankr16
|
|
||||||
.dsp4area
|
|
||||||
mov word[dsp4_address],cx
|
mov word[dsp4_address],cx
|
||||||
pushad
|
pushad
|
||||||
call DSP4GetByte
|
call DSP4GetByte
|
||||||
@@ -67,10 +75,7 @@ NEWSYM DSP4Read16b
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM DSP4Write16b
|
NEWSYM DSP4Write16b
|
||||||
test ecx,8000h
|
RouteAccess regaccessbankw16
|
||||||
jnz .dsp4area
|
|
||||||
jmp regaccessbankw16
|
|
||||||
.dsp4area
|
|
||||||
mov word[dsp4_address],cx
|
mov word[dsp4_address],cx
|
||||||
mov byte[dsp4_byte],al
|
mov byte[dsp4_byte],al
|
||||||
mov byte[dsp4temp],ah
|
mov byte[dsp4temp],ah
|
||||||
|
|||||||
Reference in New Issue
Block a user