trunk/src/emu/sound/scsp.c
| r21213 | r21214 | |
| 1016 | 1016 | v= *((unsigned short *) (scsp->DSP.MADRS+(addr-0x780)/2)); |
| 1017 | 1017 | else if(addr<0xC00) |
| 1018 | 1018 | v= *((unsigned short *) (scsp->DSP.MPRO+(addr-0x800)/2)); |
| 1019 | | |
| 1019 | else if(addr<0xE00) |
| 1020 | { |
| 1021 | if(addr & 2) |
| 1022 | v= scsp->DSP.TEMP[(addr >> 2) & 0x7f] & 0xffff; |
| 1023 | else |
| 1024 | v= scsp->DSP.TEMP[(addr >> 2) & 0x7f] >> 16; |
| 1025 | } |
| 1026 | else if(addr<0xE80) |
| 1027 | { |
| 1028 | if(addr & 2) |
| 1029 | v= scsp->DSP.MEMS[(addr >> 2) & 0x1f] & 0xffff; |
| 1030 | else |
| 1031 | v= scsp->DSP.MEMS[(addr >> 2) & 0x1f] >> 16; |
| 1032 | } |
| 1033 | else if(addr<0xEC0) |
| 1034 | { |
| 1035 | if(addr & 2) |
| 1036 | v= scsp->DSP.MIXS[(addr >> 2) & 0xf] & 0xffff; |
| 1037 | else |
| 1038 | v= scsp->DSP.MIXS[(addr >> 2) & 0xf] >> 16; |
| 1039 | } |
| 1040 | else if(addr<0xEE0) |
| 1041 | v= *((unsigned short *) (scsp->DSP.EFREG+(addr-0xec0)/2)); |
| 1042 | else |
| 1043 | { |
| 1044 | /* TODO: Kyuutenkai reads from 0xee0/0xee2, it's an undocumented "DSP internal buffer" register ... */ |
| 1045 | logerror("SCSP: Reading from unmapped register %08x\n",addr); |
| 1046 | if(addr == 0xee0) |
| 1047 | v= scsp->DSP.TEMP[0] >> 16; |
| 1048 | if(addr == 0xee2) |
| 1049 | v= scsp->DSP.TEMP[0] & 0xffff; |
| 1050 | } |
| 1020 | 1051 | } |
| 1021 | 1052 | return v; |
| 1022 | 1053 | } |