From 63c361f4e2c6ae724d21288c1bb4bda578307991 Mon Sep 17 00:00:00 2001 From: goyuken Date: Fri, 30 May 2014 22:59:13 +0000 Subject: [PATCH] bizswan: add cpu flags and registers, memory domains --- .../Consoles/WonderSwan/BizSwan.cs | 42 ++++++++ .../Consoles/WonderSwan/WonderSwan.cs | 46 ++++++++- output/dll/bizswan.dll | Bin 80896 -> 81408 bytes wonderswan/bizswan/bizswan.vcxproj | 1 - wonderswan/bizswan/bizswan.vcxproj.filters | 3 - wonderswan/main.cpp | 94 ------------------ wonderswan/memory.cpp | 1 - wonderswan/system.cpp | 30 ++++++ wonderswan/system.h | 4 + wonderswan/v30mz.cpp | 2 +- wonderswan/v30mz.h | 13 +-- wonderswan/wswan.h | 18 ---- 12 files changed, 121 insertions(+), 133 deletions(-) delete mode 100644 wonderswan/main.cpp diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs index fed2f217f6..1b568e68f8 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs @@ -93,6 +93,48 @@ namespace BizHawk.Emulation.Cores.WonderSwan [DllImport(dd, CallingConvention = cc)] public static extern void bizswan_putsettings(IntPtr core, [In] ref Settings settings); + /// + /// get a memory area + /// + /// + /// start at 0, increment until return is false + /// + /// + /// + /// + [DllImport(dd, CallingConvention = cc)] + public static extern bool bizswan_getmemoryarea(IntPtr core, int index, out IntPtr name, out int size, out IntPtr data); + + + /// + /// return a CPU register + /// + /// + /// + /// + [DllImport(dd, CallingConvention = cc)] + public static extern uint bizswan_getnecreg(IntPtr core, NecRegs which); + + public const NecRegs NecRegsMin = NecRegs.PC; + public const NecRegs NecRegsMax = NecRegs.DS0; + + public enum NecRegs : int + { + PC = 1, + AW = 2, + CW = 3, + DW = 4, + BW = 5, + SP = 6, + BP = 7, + IX = 8, + IY = 9, + FLAGS = 10, + DS1 = 11, + PS = 12, + SS = 13, + DS0 = 14 + }; [Flags] public enum Buttons : ushort diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs index 16e733f0ab..6e96a33899 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs @@ -7,6 +7,7 @@ using BizHawk.Emulation.Common; using System.IO; using System.ComponentModel; using Newtonsoft.Json; +using System.Runtime.InteropServices; namespace BizHawk.Emulation.Cores.WonderSwan { @@ -68,6 +69,7 @@ namespace BizHawk.Emulation.Cores.WonderSwan InitVideo(rotate); PutSettings(_Settings); + SetMemoryDomains(); } catch { @@ -185,14 +187,52 @@ namespace BizHawk.Emulation.Cores.WonderSwan #region Debugging - public MemoryDomainList MemoryDomains + unsafe void SetMemoryDomains() { - get { throw new NotImplementedException(); } + var mmd = new List(); + for (int i = 0; ; i++) + { + IntPtr name; + int size; + IntPtr data; + if (!BizSwan.bizswan_getmemoryarea(Core, i, out name, out size, out data)) + break; + if (size == 0) + continue; + string sname = Marshal.PtrToStringAnsi(name); + byte *p = (byte*)data; + mmd.Add(new MemoryDomain( + sname, + size, + MemoryDomain.Endian.Little, + delegate(int addr) + { + if (addr < 0 || addr >= size) + throw new ArgumentOutOfRangeException(); + return p[addr]; + }, + delegate(int addr, byte value) + { + if (addr < 0 || addr >= size) + throw new ArgumentOutOfRangeException(); + p[addr] = value; + })); + } + MemoryDomains = new MemoryDomainList(mmd, 0); } + public MemoryDomainList MemoryDomains { get; private set; } + public Dictionary GetCpuFlagsAndRegisters() { - throw new NotImplementedException(); + var ret = new Dictionary(); + for (int i = (int)BizSwan.NecRegsMin; i <= (int)BizSwan.NecRegsMax; i++) + { + BizSwan.NecRegs en = (BizSwan.NecRegs)i; + uint val = BizSwan.bizswan_getnecreg(Core, en); + ret[Enum.GetName(typeof(BizSwan.NecRegs), en)] = (int)val; + } + return ret; } #endregion diff --git a/output/dll/bizswan.dll b/output/dll/bizswan.dll index bef04339c76419e8c51ac0d574dbd89e9ca0c406..a067a401b956321ef8dbf2047829c1f2efb1d3d9 100644 GIT binary patch delta 11584 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 ZR=3qnc*?N84!-WbfxZzXB}&GQ{vY74GPwW% delta 10847 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 J4ba;4`#-CiHdp`v diff --git a/wonderswan/bizswan/bizswan.vcxproj b/wonderswan/bizswan/bizswan.vcxproj index 024581e651..792093a0e5 100644 --- a/wonderswan/bizswan/bizswan.vcxproj +++ b/wonderswan/bizswan/bizswan.vcxproj @@ -74,7 +74,6 @@ - diff --git a/wonderswan/bizswan/bizswan.vcxproj.filters b/wonderswan/bizswan/bizswan.vcxproj.filters index cc5152ee26..a021bd15b7 100644 --- a/wonderswan/bizswan/bizswan.vcxproj.filters +++ b/wonderswan/bizswan/bizswan.vcxproj.filters @@ -36,9 +36,6 @@ Source Files - - Source Files - Source Files diff --git a/wonderswan/main.cpp b/wonderswan/main.cpp deleted file mode 100644 index e36fa1b575..0000000000 --- a/wonderswan/main.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* Cygne - * - * Copyright notice for this file: - * Copyright (C) 2002 Dox dox@space.pl - * - * 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 - */ - -#include "system.h" -//#include -//#include -//#include - -//#include -//#include -//#include -#include -//#include - -namespace MDFN_IEN_WSWAN -{ -#if 0 - - - - - -#endif - -} - -/* -using namespace MDFN_IEN_WSWAN; - -MDFNGI EmulatedWSwan = -{ - "wswan", - "WonderSwan", - KnownExtensions, - MODPRIO_INTERNAL_HIGH, - #ifdef WANT_DEBUGGER - &DBGInfo, - #else - NULL, - #endif - &InputInfo, - Load, - TestMagic, - NULL, - NULL, - CloseGame, - WSwan_SetLayerEnableMask, - "Background\0Foreground\0Sprites\0", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - false, - StateAction, - Emulate, - SetInput, - DoSimpleCommand, - WSwanSettings, - MDFN_MASTERCLOCK_FIXED(3072000), - 0, - FALSE, // Multires possible? - - 224, // lcm_width - 144, // lcm_height - NULL, // Dummy - - 224, // Nominal width - 144, // Nominal height - - 224, // Framebuffer width - 144, // Framebuffer height - - 2, // Number of output sound channels -}; -*/ diff --git a/wonderswan/memory.cpp b/wonderswan/memory.cpp index 5389f90209..30feaabf6d 100644 --- a/wonderswan/memory.cpp +++ b/wonderswan/memory.cpp @@ -20,7 +20,6 @@ #include "system.h" -#include #include #include #include diff --git a/wonderswan/system.cpp b/wonderswan/system.cpp index bae0eaac43..3cfb0e63bb 100644 --- a/wonderswan/system.cpp +++ b/wonderswan/system.cpp @@ -274,6 +274,26 @@ namespace MDFN_IEN_WSWAN gfx.SetLayerEnableMask(s.LayerMask); } + uint32 System::GetNECReg(int which) const + { + return cpu.get_reg(which); + } + + bool System::GetMemoryArea(int index, const char *&name, int &size, uint8 *&data) + { + bool ret = true; + switch (index) + { + case 0: name = "RAM"; size = 65536; data = memory.wsRAM; break; + case 1: name = "ROM"; size = memory.rom_size; data = memory.wsCartROM; break; + case 2: name = "SRAM"; size = memory.sram_size; data = memory.wsSRAM; break; + case 3: name = "iEEPROM"; size = eeprom.ieeprom_size; data = eeprom.iEEPROM; break; + case 4: name = "EEPROM"; size = eeprom.eeprom_size; data = eeprom.wsEEPROM; break; + default: ret = false; break; + } + return ret; + } + EXPORT System *bizswan_new() { @@ -322,4 +342,14 @@ namespace MDFN_IEN_WSWAN s->PutSettings(*settings); } + EXPORT uint32 bizswan_getnecreg(System *s, int which) + { + return s->GetNECReg(which); + } + + EXPORT int bizswan_getmemoryarea(System *s, int index, const char **name, int *size, uint8 **data) + { + return s->GetMemoryArea(index, *name, *size, *data); + } + } diff --git a/wonderswan/system.h b/wonderswan/system.h index 3eaea20425..bbccb45c7f 100644 --- a/wonderswan/system.h +++ b/wonderswan/system.h @@ -38,6 +38,10 @@ public: bool SaveRamLoad(const uint8 *data, int size); bool SaveRamSave(uint8 *dest, int maxsize) const; + uint32 GetNECReg(int which) const; + + bool GetMemoryArea(int index, const char *&name, int &size, uint8 *&data); + public: GFX gfx; Memory memory; diff --git a/wonderswan/v30mz.cpp b/wonderswan/v30mz.cpp index 6eff7e3a78..70e1f71e24 100644 --- a/wonderswan/v30mz.cpp +++ b/wonderswan/v30mz.cpp @@ -957,7 +957,7 @@ namespace MDFN_IEN_WSWAN /*****************************************************************************/ - unsigned V30MZ::get_reg(int regnum) + unsigned V30MZ::get_reg(int regnum) const { switch( regnum ) { diff --git a/wonderswan/v30mz.h b/wonderswan/v30mz.h index 400a4d0cf5..622257cc70 100644 --- a/wonderswan/v30mz.h +++ b/wonderswan/v30mz.h @@ -44,7 +44,7 @@ public: void execute(int cycles); void set_reg(int, unsigned); - unsigned get_reg(int regnum); + unsigned get_reg(int regnum) const; void reset(); void interrupt(uint32 vector, bool IgnoreIF = FALSE); @@ -81,10 +81,6 @@ private: } Mod_RM; private: - //void (*cpu_writemem20)(uint32,uint8);// = NULL; - //uint8 (*cpu_readport)(uint32);// = NULL; - //void (*cpu_writeport)(uint32, uint8);// = NULL; - //uint8 (*cpu_readmem20)(uint32);// = NULL; private: void nec_interrupt(unsigned int_num); @@ -153,13 +149,6 @@ enum { NEC_FLAGS, NEC_DS1, NEC_PS, NEC_SS, NEC_DS0 }; -/* Public variables */ -//extern int v30mz_ICount; -//extern uint32 v30mz_timestamp; - - -/* Public functions */ - } #endif diff --git a/wonderswan/wswan.h b/wonderswan/wswan.h index 331f1466b8..9e99ce8397 100644 --- a/wonderswan/wswan.h +++ b/wonderswan/wswan.h @@ -10,24 +10,6 @@ namespace MDFN_IEN_WSWAN #define mBCD(value) (((value)/10)<<4)|((value)%10) -//extern uint32 rom_size; -//extern int wsc; - -/* -enum -{ - WSWAN_SEX_MALE = 1, - WSWAN_SEX_FEMALE = 2 -}; - -enum -{ - WSWAN_BLOOD_A = 1, - WSWAN_BLOOD_B = 2, - WSWAN_BLOOD_O = 3, - WSWAN_BLOOD_AB = 4 -}; -*/ } #endif