diff --git a/Source/Core/DSPCore/DSPCore.vcproj b/Source/Core/DSPCore/DSPCore.vcproj index 0bb68fce9e..fffc872438 100644 --- a/Source/Core/DSPCore/DSPCore.vcproj +++ b/Source/Core/DSPCore/DSPCore.vcproj @@ -413,6 +413,14 @@ RelativePath=".\Src\DspIntBranch.cpp" > + + + + @@ -494,6 +502,18 @@ RelativePath=".\Src\DSPHost.h" > + + + + + + @@ -514,6 +534,14 @@ RelativePath=".\Src\DSPMemoryMap.h" > + + + + @@ -522,38 +550,6 @@ RelativePath=".\Src\DSPTables.h" > - - - - - - - - - - - - - - - - diff --git a/Source/Core/DSPCore/Src/DSPAccelerator.cpp b/Source/Core/DSPCore/Src/DSPAccelerator.cpp index 11aa749a04..5a3441c420 100644 --- a/Source/Core/DSPCore/Src/DSPAccelerator.cpp +++ b/Source/Core/DSPCore/Src/DSPAccelerator.cpp @@ -18,8 +18,8 @@ #include "Common.h" #include "DSPCore.h" #include "DSPHost.h" -#include "gdsp_interface.h" -#include "gdsp_interpreter.h" +#include "DSPHWInterface.h" +#include "DSPInterpreter.h" // The hardware adpcm decoder :) s16 ADPCM_Step(u32& _rSamplePos) @@ -106,7 +106,12 @@ u16 dsp_read_accelerator() u16 val; - // lets the "hardware" decode + // let's do the "hardware" decode + // DSP_FORMAT is interesting - the Zelda ucode seems to indicate that the bottom + // two bits specify the "read size" and the address multiplier. + // The bits above that may be things like sign extention and do/do not use ADPCM. + // It also remains to be figured out whether there's a difference between the usual + // accelerator "read address" and 0xd3. switch (gdsp_ifx_regs[DSP_FORMAT]) { case 0x00: // ADPCM audio @@ -129,9 +134,9 @@ u16 dsp_read_accelerator() break; } - // TODO: Take ifx GAIN into account. + // TODO: Take GAIN into account, whatever it is. - // check for loop + // Check for loop. if (Address >= EndAddress) { // Set address back to start address. diff --git a/Source/Core/DSPCore/Src/DSPCore.cpp b/Source/Core/DSPCore/Src/DSPCore.cpp index d3cdf76159..85f2d9269d 100644 --- a/Source/Core/DSPCore/Src/DSPCore.cpp +++ b/Source/Core/DSPCore/Src/DSPCore.cpp @@ -28,8 +28,7 @@ #include "DSPAnalyzer.h" #include "MemoryUtil.h" -#include "gdsp_interface.h" -#include "gdsp_registers.h" +#include "DSPHWInterface.h" #include "DSPIntUtil.h" SDSP g_dsp; diff --git a/Source/Core/DSPCore/Src/DSPCore.h b/Source/Core/DSPCore/Src/DSPCore.h index ae0228a2da..cfbd891234 100644 --- a/Source/Core/DSPCore/Src/DSPCore.h +++ b/Source/Core/DSPCore/Src/DSPCore.h @@ -52,6 +52,95 @@ #define DSP_CR_TO_CPU 1 #define DSP_CR_FROM_CPU 0 + +// Register table taken from libasnd +#define DSP_REG_AR0 0x00 // address registers +#define DSP_REG_AR1 0x01 +#define DSP_REG_AR2 0x02 +#define DSP_REG_AR3 0x03 + +#define DSP_REG_IX0 0x04 // indexing registers (actually, mostly used as increments) +#define DSP_REG_IX1 0x05 +#define DSP_REG_IX2 0x06 +#define DSP_REG_IX3 0x07 + +#define DSP_REG_WR0 0x08 // address wrapping registers. should be initialized to 0xFFFF if not used. +#define DSP_REG_WR1 0x09 +#define DSP_REG_WR2 0x0a +#define DSP_REG_WR3 0x0b + +#define DSP_REG_ST0 0x0c // stacks. +#define DSP_REG_ST1 0x0d +#define DSP_REG_ST2 0x0e +#define DSP_REG_ST3 0x0f + +#define DSP_REG_CR 0x12 // Seems to be the top 8 bits of LRS/SRS. +#define DSP_REG_SR 0x13 + +#define DSP_REG_PRODL 0x14 // product. +#define DSP_REG_PRODM 0x15 +#define DSP_REG_PRODH 0x16 +#define DSP_REG_PRODM2 0x17 + +#define DSP_REG_AXL0 0x18 +#define DSP_REG_AXL1 0x19 +#define DSP_REG_AXH0 0x1a +#define DSP_REG_AXH1 0x1b + +#define DSP_REG_ACC0 0x1c // accumulator (global) +#define DSP_REG_ACC1 0x1d + +#define DSP_REG_ACL0 0x1c // Low accumulator +#define DSP_REG_ACL1 0x1d +#define DSP_REG_ACM0 0x1e // Mid accumulator +#define DSP_REG_ACM1 0x1f +#define DSP_REG_ACH0 0x10 // Sign extended 8 bit register 0 +#define DSP_REG_ACH1 0x11 // Sign extended 8 bit register 1 + +// Hardware registers address + +#define DSP_REG_DSCR 0xffc9 // DSP DMA Control Reg +#define DSP_REG_DSBL 0xffcb // DSP DMA Block Length +#define DSP_REG_DSPA 0xffcd // DSP DMA DMEM Address +#define DSP_REG_DSMAH 0xffce // DSP DMA Mem Address H +#define DSP_REG_DSMAL 0xffcf // DSP DMA Mem Address L + +#define DSP_REG_DIRQ 0xfffb // DSP Irq Rest +#define DSP_REG_DMBH 0xfffc // DSP Mailbox H +#define DSP_REG_DMBL 0xfffd // DSP Mailbox L +#define DSP_REG_CMBH 0xfffe // CPU Mailbox H +#define DSP_REG_CMBL 0xffff // CPU Mailbox L + +#define DMA_TO_DSP 0 +#define DMA_TO_CPU 1 + +// Stacks +#define DSP_STACK_C 0 +#define DSP_STACK_D 1 + +// cr (Not g_dsp.r[CR]) bits +// See HW/DSP.cpp. +#define CR_HALT 0x0004 +#define CR_EXTERNAL_INT 0x0002 + +// SR bits +#define SR_CARRY 0x0001 +#define SR_2 0x0002 // overflow??? +#define SR_ARITH_ZERO 0x0004 +#define SR_SIGN 0x0008 +#define SR_10 0x0010 // seem to be set by tst +#define SR_TOP2BITS 0x0020 // this is an odd one. (set by tst) +#define SR_LOGIC_ZERO 0x0040 +#define SR_INT_ENABLE 0x0200 // Not 100% sure but duddie says so. This should replace the hack, if so. +#define SR_800 0x0800 // Appears in zelda - what is it? where in the zelda ucode? +#define SR_MUL_MODIFY 0x2000 // 1 = normal. 0 = x2 (M0, M2) +#define SR_40_MODE_BIT 0x4000 // 0 = "16", 1 = "40" (SET16, SET40) Controls sign extension when loading mid accums. +#define SR_MUL_UNSIGNED 0x8000 // 0 = normal. 1 = unsigned (CLR15, SET15) If set, treats operands as unsigned. Tested with mulx only so far. + +// This should be the bits affected by CMP. Does not include logic zero. +#define SR_CMP_MASK 0x3f + + struct SDSP { u16 r[32]; diff --git a/Source/Core/DSPCore/Src/gdsp_interface.cpp b/Source/Core/DSPCore/Src/DSPHWInterface.cpp similarity index 99% rename from Source/Core/DSPCore/Src/gdsp_interface.cpp rename to Source/Core/DSPCore/Src/DSPHWInterface.cpp index 806d42ddd9..1b11387c55 100644 --- a/Source/Core/DSPCore/Src/gdsp_interface.cpp +++ b/Source/Core/DSPCore/Src/DSPHWInterface.cpp @@ -33,8 +33,8 @@ #include "DSPTables.h" #include "DSPAnalyzer.h" #include "DSPAccelerator.h" -#include "gdsp_interpreter.h" -#include "gdsp_interface.h" +#include "DSPInterpreter.h" +#include "DSPHWInterface.h" void gdsp_dma(); diff --git a/Source/Core/DSPCore/Src/gdsp_interface.h b/Source/Core/DSPCore/Src/DSPHWInterface.h similarity index 100% rename from Source/Core/DSPCore/Src/gdsp_interface.h rename to Source/Core/DSPCore/Src/DSPHWInterface.h diff --git a/Source/Core/DSPCore/Src/gdsp_condition_codes.cpp b/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp similarity index 92% rename from Source/Core/DSPCore/Src/gdsp_condition_codes.cpp rename to Source/Core/DSPCore/Src/DSPIntCCUtil.cpp index 43a1507cb5..ecf49189ca 100644 --- a/Source/Core/DSPCore/Src/gdsp_condition_codes.cpp +++ b/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp @@ -20,8 +20,7 @@ // HELPER FUNCTIONS -#include "gdsp_condition_codes.h" -#include "gdsp_interpreter.h" +#include "DSPIntCCUtil.h" #include "DSPCore.h" #include "DSPInterpreter.h" diff --git a/Source/Core/DSPCore/Src/gdsp_condition_codes.h b/Source/Core/DSPCore/Src/DSPIntCCUtil.h similarity index 88% rename from Source/Core/DSPCore/Src/gdsp_condition_codes.h rename to Source/Core/DSPCore/Src/DSPIntCCUtil.h index 1cb34bcf88..def95e0b97 100644 --- a/Source/Core/DSPCore/Src/gdsp_condition_codes.h +++ b/Source/Core/DSPCore/Src/DSPIntCCUtil.h @@ -24,13 +24,8 @@ #include "Common.h" -#include "gdsp_registers.h" - namespace DSPInterpreter { -// SR flag defines. -#define SR_CMP_MASK 0x3f // Shouldn't this include 0x40? - bool CheckCondition(u8 _Condition); int GetMultiplyModifier(); diff --git a/Source/Core/DSPCore/Src/DSPIntUtil.h b/Source/Core/DSPCore/Src/DSPIntUtil.h index a4210b9ee0..5678baa46b 100644 --- a/Source/Core/DSPCore/Src/DSPIntUtil.h +++ b/Source/Core/DSPCore/Src/DSPIntUtil.h @@ -31,9 +31,7 @@ #include "DSPInterpreter.h" #include "DSPCore.h" #include "DSPMemoryMap.h" - -#include "gdsp_interpreter.h" -#include "gdsp_registers.h" +#include "DSPStacks.h" // #include "DSPIntExtOps.h" // --------------------------------------------------------------------------------------- diff --git a/Source/Core/DSPCore/Src/gdsp_interpreter.cpp b/Source/Core/DSPCore/Src/DSPInterpreter.cpp similarity index 100% rename from Source/Core/DSPCore/Src/gdsp_interpreter.cpp rename to Source/Core/DSPCore/Src/DSPInterpreter.cpp diff --git a/Source/Core/DSPCore/Src/DSPInterpreter.h b/Source/Core/DSPCore/Src/DSPInterpreter.h index 81020ef6bb..64bb65e062 100644 --- a/Source/Core/DSPCore/Src/DSPInterpreter.h +++ b/Source/Core/DSPCore/Src/DSPInterpreter.h @@ -25,8 +25,18 @@ namespace DSPInterpreter { +void Step(); +void Run(); +void RunCycles(int cycles); +void Stop(); + +void WriteCR(u16 val); +u16 ReadCR(); + + typedef void (*DSPInterpreterFunc)(const UDSPInstruction& opc); +// All the opcode functions. void unknown(const UDSPInstruction& opc); void call(const UDSPInstruction& opc); void callr(const UDSPInstruction& opc); @@ -143,12 +153,11 @@ void srbith(const UDSPInstruction& opc); // END OF FIXMEs // TODO: PENDING IMPLEMENTATION / UNIMPLEMENTED - void tstaxl(const UDSPInstruction& opc); +void tstaxl(const UDSPInstruction& opc); // The mysterious a100 // END OF UNIMPLEMENTED - // Helpers inline void tsta(int reg); diff --git a/Source/Core/DSPCore/Src/DSPMemoryMap.cpp b/Source/Core/DSPCore/Src/DSPMemoryMap.cpp index ac772fec63..45f26af684 100644 --- a/Source/Core/DSPCore/Src/DSPMemoryMap.cpp +++ b/Source/Core/DSPCore/Src/DSPMemoryMap.cpp @@ -25,10 +25,9 @@ #include -#include "gdsp_interpreter.h" -#include "gdsp_interface.h" - +#include "DSPInterpreter.h" #include "DSPMemoryMap.h" +#include "DSPHWInterface.h" #include "DSPCore.h" u16 dsp_imem_read(u16 addr) diff --git a/Source/Core/DSPCore/Src/DSPMemoryMap.h b/Source/Core/DSPCore/Src/DSPMemoryMap.h index 46f6f1e7dd..5e7d168678 100644 --- a/Source/Core/DSPCore/Src/DSPMemoryMap.h +++ b/Source/Core/DSPCore/Src/DSPMemoryMap.h @@ -27,7 +27,7 @@ #define _GDSP_MEMORY_H #include "Common.h" -#include "gdsp_interpreter.h" +#include "DSPInterpreter.h" #include "DSPCore.h" u16 dsp_imem_read(u16 addr); diff --git a/Source/Core/DSPCore/Src/gdsp_registers.cpp b/Source/Core/DSPCore/Src/DSPStacks.cpp similarity index 96% rename from Source/Core/DSPCore/Src/gdsp_registers.cpp rename to Source/Core/DSPCore/Src/DSPStacks.cpp index 091e5e0ca9..af9f74c18d 100644 --- a/Source/Core/DSPCore/Src/gdsp_registers.cpp +++ b/Source/Core/DSPCore/Src/DSPStacks.cpp @@ -26,9 +26,8 @@ #include "Common.h" #include "DSPCore.h" - -#include "gdsp_registers.h" -#include "gdsp_interpreter.h" +// #include "DSPInterpreter.h" +#include "DSPStacks.h" // Stacks. The stacks are outside the DSP RAM, in dedicated hardware. diff --git a/Source/Core/DSPCore/Src/DSPStacks.h b/Source/Core/DSPCore/Src/DSPStacks.h new file mode 100644 index 0000000000..9459badde5 --- /dev/null +++ b/Source/Core/DSPCore/Src/DSPStacks.h @@ -0,0 +1,34 @@ +/*==================================================================== + + filename: gdsp_registers.h + project: GCemu + created: 2004-6-18 + mail: duddie@walla.com + + Copyright (c) 2005 Duddie & Tratax + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + ====================================================================*/ + +#ifndef _DSP_STACKS_H +#define _DSP_STACKS_H + +#include "Common.h" + +void dsp_reg_store_stack(u8 stack_reg, u16 val); +u16 dsp_reg_load_stack(u8 stack_reg); + +#endif diff --git a/Source/Core/DSPCore/Src/DspIntArithmetic.cpp b/Source/Core/DSPCore/Src/DspIntArithmetic.cpp index 9949cfc7fc..83b7791516 100644 --- a/Source/Core/DSPCore/Src/DspIntArithmetic.cpp +++ b/Source/Core/DSPCore/Src/DspIntArithmetic.cpp @@ -18,8 +18,7 @@ // Additional copyrights go to Duddie and Tratax (c) 2004 #include "DSPInterpreter.h" - -#include "gdsp_condition_codes.h" +#include "DSPIntCCUtil.h" #include "DSPIntUtil.h" // Arithmetic and accumulator control. diff --git a/Source/Core/DSPCore/Src/DspIntBranch.cpp b/Source/Core/DSPCore/Src/DspIntBranch.cpp index cab5027f56..b843526906 100644 --- a/Source/Core/DSPCore/Src/DspIntBranch.cpp +++ b/Source/Core/DSPCore/Src/DspIntBranch.cpp @@ -19,10 +19,11 @@ #include "DSPInterpreter.h" #include "DSPCore.h" - -#include "gdsp_condition_codes.h" -#include "DSPIntUtil.h" #include "DSPMemoryMap.h" +#include "DSPStacks.h" + +#include "DSPIntCCUtil.h" +#include "DSPIntUtil.h" namespace DSPInterpreter { diff --git a/Source/Core/DSPCore/Src/DspIntMisc.cpp b/Source/Core/DSPCore/Src/DspIntMisc.cpp index a52fc93c56..df60210d98 100644 --- a/Source/Core/DSPCore/Src/DspIntMisc.cpp +++ b/Source/Core/DSPCore/Src/DspIntMisc.cpp @@ -21,8 +21,6 @@ #include "DSPInterpreter.h" #include "DSPCore.h" - -#include "gdsp_registers.h" #include "DSPIntUtil.h" namespace DSPInterpreter { diff --git a/Source/Core/DSPCore/Src/DspIntMultiplier.cpp b/Source/Core/DSPCore/Src/DspIntMultiplier.cpp index 38c98487e6..bf2e29fd62 100644 --- a/Source/Core/DSPCore/Src/DspIntMultiplier.cpp +++ b/Source/Core/DSPCore/Src/DspIntMultiplier.cpp @@ -22,9 +22,8 @@ #include "DSPInterpreter.h" -#include "gdsp_condition_codes.h" +#include "DSPIntCCUtil.h" #include "DSPIntUtil.h" -#include "gdsp_registers.h" namespace DSPInterpreter { diff --git a/Source/Core/DSPCore/Src/SConscript b/Source/Core/DSPCore/Src/SConscript index 85bd062745..43be81ea4a 100644 --- a/Source/Core/DSPCore/Src/SConscript +++ b/Source/Core/DSPCore/Src/SConscript @@ -5,13 +5,14 @@ Import('env') files = [ "assemble.cpp", "disassemble.cpp", - "gdsp_aram.cpp", - "gdsp_condition_codes.cpp", - "gdsp_ext_op.cpp", - "gdsp_interface.cpp", - "gdsp_interpreter.cpp", - "gdsp_memory.cpp", - "gdsp_registers.cpp", + "DSPAccelerator.cpp", + "DSPIntUtil.cpp", + "DSPIntCCUtil.cpp", + "DSPIntExtOps.cpp", + "DSPHWInterface.cpp", + "DSPInterpreter.cpp", + "DSPMemoryMap.cpp", + "DSPStacks.cpp", "DSPAnalyzer.cpp", "DspIntArithmetic.cpp", "DspIntBranch.cpp", diff --git a/Source/Core/DSPCore/Src/gdsp_interpreter.h b/Source/Core/DSPCore/Src/gdsp_interpreter.h deleted file mode 100644 index f8504f72ce..0000000000 --- a/Source/Core/DSPCore/Src/gdsp_interpreter.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2003-2009 Dolphin Project. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 2.0. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License 2.0 for more details. - -// A copy of the GPL 2.0 should have been included with the program. -// If not, see http://www.gnu.org/licenses/ - -// Official SVN repository and contact information can be found at -// http://code.google.com/p/dolphin-emu/ - -/*==================================================================== - - filename: gdsp_interpreter.h - project: GCemu - created: 2004-6-18 - mail: duddie@walla.com - - Copyright (c) 2005 Duddie & Tratax - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - ====================================================================*/ - -#ifndef _GDSP_INTERPRETER_H -#define _GDSP_INTERPRETER_H - -#include "Common.h" - -namespace DSPInterpreter { - -// steps through DSP code, returns false if error occured -void Step(); -void Run(); -void RunCycles(int cycles); -void Stop(); - -void WriteCR(u16 val); -u16 ReadCR(); - -} // namespace - -#endif diff --git a/Source/Core/DSPCore/Src/gdsp_registers.h b/Source/Core/DSPCore/Src/gdsp_registers.h deleted file mode 100644 index 79e5b1c004..0000000000 --- a/Source/Core/DSPCore/Src/gdsp_registers.h +++ /dev/null @@ -1,118 +0,0 @@ -/*==================================================================== - - filename: gdsp_registers.h - project: GCemu - created: 2004-6-18 - mail: duddie@walla.com - - Copyright (c) 2005 Duddie & Tratax - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - ====================================================================*/ -#ifndef _GDSP_REGISTERS_H -#define _GDSP_REGISTERS_H - -#include "Common.h" - -// Register table taken from libasnd -#define DSP_REG_AR0 0x00 // address registers -#define DSP_REG_AR1 0x01 -#define DSP_REG_AR2 0x02 -#define DSP_REG_AR3 0x03 - -#define DSP_REG_IX0 0x04 // indexing registers (actually, mostly used as increments) -#define DSP_REG_IX1 0x05 -#define DSP_REG_IX2 0x06 -#define DSP_REG_IX3 0x07 - -#define DSP_REG_WR0 0x08 // address wrapping registers. should be initialized to 0xFFFF if not used. -#define DSP_REG_WR1 0x09 -#define DSP_REG_WR2 0x0a -#define DSP_REG_WR3 0x0b - -#define DSP_REG_ST0 0x0c // stacks. -#define DSP_REG_ST1 0x0d -#define DSP_REG_ST2 0x0e -#define DSP_REG_ST3 0x0f - -#define DSP_REG_CR 0x12 // Seems to be the top 8 bits of LRS/SRS. -#define DSP_REG_SR 0x13 - -#define DSP_REG_PRODL 0x14 // product. -#define DSP_REG_PRODM 0x15 -#define DSP_REG_PRODH 0x16 -#define DSP_REG_PRODM2 0x17 - -#define DSP_REG_AXL0 0x18 -#define DSP_REG_AXL1 0x19 -#define DSP_REG_AXH0 0x1a -#define DSP_REG_AXH1 0x1b - -#define DSP_REG_ACC0 0x1c // accumulator (global) -#define DSP_REG_ACC1 0x1d - -#define DSP_REG_ACL0 0x1c // Low accumulator -#define DSP_REG_ACL1 0x1d -#define DSP_REG_ACM0 0x1e // Mid accumulator -#define DSP_REG_ACM1 0x1f -#define DSP_REG_ACH0 0x10 // Sign extended 8 bit register 0 -#define DSP_REG_ACH1 0x11 // Sign extended 8 bit register 1 - -// Hardware registers address - -#define DSP_REG_DSCR 0xffc9 // DSP DMA Control Reg -#define DSP_REG_DSBL 0xffcb // DSP DMA Block Length -#define DSP_REG_DSPA 0xffcd // DSP DMA DMEM Address -#define DSP_REG_DSMAH 0xffce // DSP DMA Mem Address H -#define DSP_REG_DSMAL 0xffcf // DSP DMA Mem Address L - -#define DSP_REG_DIRQ 0xfffb // DSP Irq Rest -#define DSP_REG_DMBH 0xfffc // DSP Mailbox H -#define DSP_REG_DMBL 0xfffd // DSP Mailbox L -#define DSP_REG_CMBH 0xfffe // CPU Mailbox H -#define DSP_REG_CMBL 0xffff // CPU Mailbox L - -#define DMA_TO_DSP 0 -#define DMA_TO_CPU 1 - -// Stacks -#define DSP_STACK_C 0 -#define DSP_STACK_D 1 - - -// cr (Not g_dsp.r[CR]) bits -// See HW/DSP.cpp. -#define CR_HALT 0x0004 -#define CR_EXTERNAL_INT 0x0002 - -// SR bits -#define SR_CARRY 0x0001 -#define SR_2 0x0002 // overflow??? -#define SR_ARITH_ZERO 0x0004 -#define SR_SIGN 0x0008 -#define SR_10 0x0010 // seem to be set by tst -#define SR_TOP2BITS 0x0020 // this is an odd one. (set by tst) -#define SR_LOGIC_ZERO 0x0040 -#define SR_INT_ENABLE 0x0200 // Not 100% sure but duddie says so. This should replace the hack, if so. -#define SR_800 0x0800 // Appears in zelda - what is it? where in the zelda ucode? -#define SR_MUL_MODIFY 0x2000 // 1 = normal. 0 = x2 (M0, M2) -#define SR_40_MODE_BIT 0x4000 // 0 = "16", 1 = "40" (SET16, SET40) Controls sign extension when loading mid accums. -#define SR_MUL_UNSIGNED 0x8000 // 0 = normal. 1 = unsigned (CLR15, SET15) If set, treats operands as unsigned. Tested with mulx only so far. - -void dsp_reg_store_stack(u8 stack_reg, u16 val); -u16 dsp_reg_load_stack(u8 stack_reg); - -#endif diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/Debugger/Debugger.h b/Source/Plugins/Plugin_DSP_LLE/Src/Debugger/Debugger.h index 777d4ad4ce..b154f42d40 100644 --- a/Source/Plugins/Plugin_DSP_LLE/Src/Debugger/Debugger.h +++ b/Source/Plugins/Plugin_DSP_LLE/Src/Debugger/Debugger.h @@ -35,7 +35,7 @@ #include #include "disassemble.h" -#include "gdsp_interpreter.h" +#include "DSPInterpreter.h" #include "DSPMemoryMap.h" #include "../DSPDebugInterface.h" diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/Tools.cpp b/Source/Plugins/Plugin_DSP_LLE/Src/Tools.cpp index 50252937b2..665e02aa67 100644 --- a/Source/Plugins/Plugin_DSP_LLE/Src/Tools.cpp +++ b/Source/Plugins/Plugin_DSP_LLE/Src/Tools.cpp @@ -26,7 +26,7 @@ #include "DSPCodeUtil.h" #include "Tools.h" #include "disassemble.h" -#include "gdsp_interpreter.h" +#include "DSPInterpreter.h" bool DumpDSPCode(const u8 *code_be, int size_in_bytes, u32 crc) { diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/main.cpp b/Source/Plugins/Plugin_DSP_LLE/Src/main.cpp index 4c74722ac0..8037236463 100644 --- a/Source/Plugins/Plugin_DSP_LLE/Src/main.cpp +++ b/Source/Plugins/Plugin_DSP_LLE/Src/main.cpp @@ -21,8 +21,8 @@ #include "Mixer.h" #include "Globals.h" // Local -#include "gdsp_interpreter.h" -#include "gdsp_interface.h" +#include "DSPInterpreter.h" +#include "DSPHWInterface.h" #include "disassemble.h" #include "DSPSymbols.h" #include "Config.h" diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Config.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Config.cpp index 0e58b635bb..64918c3515 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/Config.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/Config.cpp @@ -91,6 +91,7 @@ void Config::Load() } void Config::GameIniLoad() { + return; IniFile *iniFile = ((struct SConfig *)globals->config)->m_LocalCoreStartupParameter.gameIni; if (! iniFile) return;