From ffa9c2171f53745655a9ff3fb511c65447d6dbe5 Mon Sep 17 00:00:00 2001 From: Kyuma Ohta Date: Sun, 31 May 2015 04:08:19 +0900 Subject: [PATCH] [VM][FM7] Fix memory leak. Not using MEMORY:: class. --- source/fm77av.vcxproj | 10 +++++++++- source/src/emu.cpp | 2 +- source/src/vm/fm7/display.cpp | 2 +- source/src/vm/fm7/fm7.cpp | 10 +++++----- source/src/vm/fm7/fm7_display.h | 13 ++++++------- source/src/vm/fm7/fm7_mainio.h | 13 ++++++------- source/src/vm/fm7/fm7_mainmem.cpp | 4 ++-- source/src/vm/fm7/fm7_mainmem.h | 8 ++------ source/src/vm/fm7/kanjirom.cpp | 16 ++++++---------- source/src/vm/fm7/kanjirom.h | 13 +++---------- 10 files changed, 41 insertions(+), 50 deletions(-) diff --git a/source/fm77av.vcxproj b/source/fm77av.vcxproj index 86372be14..630fd1ff8 100644 --- a/source/fm77av.vcxproj +++ b/source/fm77av.vcxproj @@ -77,6 +77,11 @@ EditAndContinue C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Include;%(AdditionalIncludeDirectories) true + false + true + /arch:SSE2 %(AdditionalOptions) + true + StreamingSIMDExtensions2 _DEBUG;%(PreprocessorDefinitions) @@ -125,10 +130,13 @@ true true true - false + true StreamingSIMDExtensions2 true Speed + true + true + true NDEBUG;%(PreprocessorDefinitions) diff --git a/source/src/emu.cpp b/source/src/emu.cpp index 3bd9220a5..97c748c41 100644 --- a/source/src/emu.cpp +++ b/source/src/emu.cpp @@ -313,7 +313,7 @@ _TCHAR* EMU::bios_path(_TCHAR* file_name) static _TCHAR file_path[_MAX_PATH]; _stprintf_s(file_path, _MAX_PATH, _T("%s%s"), app_path, file_name); #if defined(_USE_AGAR) || defined(_USE_SDL) || defined(_USE_QT) - AGAR_DebugLog(AGAR_LOG_INFO, "LOAD BIOS: %s", file_path); + AGAR_DebugLog(AGAR_LOG_INFO, "LOAD BIOS: %s", file_path); #endif return file_path; //#if defined(_USE_AGAR) || defined(_USE_SDL) || defined(_USE_QT) diff --git a/source/src/vm/fm7/display.cpp b/source/src/vm/fm7/display.cpp index 1cd74968f..9fc82354f 100644 --- a/source/src/vm/fm7/display.cpp +++ b/source/src/vm/fm7/display.cpp @@ -19,7 +19,7 @@ extern "C" { } -DISPLAY::DISPLAY(VM* parent_vm, EMU* parent_emu) : MEMORY(parent_vm, parent_emu) +DISPLAY::DISPLAY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) { p_vm = parent_vm; p_emu = parent_emu; diff --git a/source/src/vm/fm7/fm7.cpp b/source/src/vm/fm7/fm7.cpp index 546f618b4..538f1e0f0 100644 --- a/source/src/vm/fm7/fm7.cpp +++ b/source/src/vm/fm7/fm7.cpp @@ -194,9 +194,9 @@ void VM::connect_bus(void) mainio->set_context_subcpu(subcpu); mainio->set_context_display(display); - mainio->set_context_kanjirom_class1(kanjiclass1); - mainio->set_context_mainmem(mainmem); - mainio->set_context_keyboard(keyboard); + mainio->set_context_kanjirom_class1(kanjiclass1); + mainio->set_context_mainmem(mainmem); + mainio->set_context_keyboard(keyboard); #if defined(CAPABLE_KANJI_CLASS2) mainio->set_context_kanjirom_class2(kanjiclass2); @@ -224,9 +224,9 @@ void VM::connect_bus(void) display->set_context_keyboard(keyboard); subcpu->set_context_bus_halt(display, SIG_FM7_SUB_HALT, 0xffffffff); - display->set_context_kanjiclass1(kanjiclass1); + display->set_context_kanjiclass1(kanjiclass1); #if defined(CAPABLE_KANJI_CLASS2) - display->set_context_kanjiclass2(kanjiclass2); + display->set_context_kanjiclass2(kanjiclass2); #endif #if defined(_FM77AV_VARIANTS) display->set_context_alu(alu); diff --git a/source/src/vm/fm7/fm7_display.h b/source/src/vm/fm7/fm7_display.h index a794c432a..401b5feb2 100644 --- a/source/src/vm/fm7/fm7_display.h +++ b/source/src/vm/fm7/fm7_display.h @@ -9,16 +9,15 @@ #define _CSP_FM7_DISPLAY_H #include "../device.h" -#include "../memory.h" +#include "../device.h" #include "../mc6809.h" #include "fm7_common.h" class DEVICE; -class MEMORY; class MC6809; -class DISPLAY: public MEMORY +class DISPLAY: public DEVICE { protected: EMU *p_emu; @@ -200,11 +199,11 @@ class DISPLAY: public MEMORY bool vram_accessflag; bool is_cyclesteal; pair kanji1_addr; - MEMORY *kanjiclass1; + DEVICE *kanjiclass1; #if defined(_FM77AV40) || defined(_FM77AV40SX)|| defined(_FM77AV40SX) bool kanji_level2; pair kanji2_addr; - MEMORY *kanjiclass2; + DEVICE *kanjiclass2; #endif #if defined(_FM77AV_VARIANTS) bool use_alu; @@ -257,13 +256,13 @@ class DISPLAY: public MEMORY #endif } - void set_context_kanjiclass1(MEMORY *p) { + void set_context_kanjiclass1(DEVICE *p) { #if defined(_FM77_VARIANTS) || defined(_FM77AV_VARIANTS) // Really? kanji1_addr.d = 0; kanjiclass1 = p; #endif } - void set_context_kanjiclass2(MEMORY *p) { + void set_context_kanjiclass2(DEVICE *p) { #if defined(_FM77AV40) || defined(_FM77AV40SX)|| defined(_FM77AV40SX) kanji2_addr.d = 0; kanjiclass2 = p; diff --git a/source/src/vm/fm7/fm7_mainio.h b/source/src/vm/fm7/fm7_mainio.h index 3595e6416..2c7dbd031 100644 --- a/source/src/vm/fm7/fm7_mainio.h +++ b/source/src/vm/fm7/fm7_mainio.h @@ -12,7 +12,6 @@ #define _VM_FM7_MAINIO_H_ #include "../device.h" -#include "../memory.h" #include "../mc6809.h" #include "../z80.h" #include "../ym2203.h" @@ -319,12 +318,12 @@ class FM7_MAINIO : public DEVICE { //FM7_PRINTER *printer; //FM7_RS232C *rs232c; /* */ - MEMORY *kanjiclass1; - MEMORY *kanjiclass2; + DEVICE *kanjiclass1; + DEVICE *kanjiclass2; DEVICE *display; DEVICE *keyboard; MC6809 *maincpu; - MEMORY *mainmem; + DEVICE *mainmem; MC6809 *subcpu; Z80 *z80; public: @@ -458,12 +457,12 @@ class FM7_MAINIO : public DEVICE { void reset(); void update_config(); - void set_context_kanjirom_class1(MEMORY *p) + void set_context_kanjirom_class1(DEVICE *p) { kanjiclass1 = p; if(p != NULL) connect_kanjiroml1 = true; } - void set_context_kanjirom_class2(MEMORY *p) + void set_context_kanjirom_class2(DEVICE *p) { #if defined(_FM77AV_VARIANTS) kanjiclass2 = p; @@ -525,7 +524,7 @@ class FM7_MAINIO : public DEVICE { void set_context_maincpu(MC6809 *p){ maincpu = p; } - void set_context_mainmem(MEMORY *p){ + void set_context_mainmem(DEVICE *p){ mainmem = p; } void set_context_subcpu(MC6809 *p){ diff --git a/source/src/vm/fm7/fm7_mainmem.cpp b/source/src/vm/fm7/fm7_mainmem.cpp index 0d8262282..0089b13e8 100644 --- a/source/src/vm/fm7/fm7_mainmem.cpp +++ b/source/src/vm/fm7/fm7_mainmem.cpp @@ -512,7 +512,7 @@ uint32 FM7_MAINMEM::write_bios(const char *name, uint8 *ptr, uint32 size) return blocks * size; } -FM7_MAINMEM::FM7_MAINMEM(VM* parent_vm, EMU* parent_emu) : MEMORY(parent_vm, parent_emu) +FM7_MAINMEM::FM7_MAINMEM(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) { int i; p_vm = parent_vm; @@ -766,5 +766,5 @@ void FM7_MAINMEM::release() fm7_bootroms[i] = NULL; } #endif - MEMORY::release(); +// MEMORY::release(); } diff --git a/source/src/vm/fm7/fm7_mainmem.h b/source/src/vm/fm7/fm7_mainmem.h index 59c3994d8..ea877f2b5 100644 --- a/source/src/vm/fm7/fm7_mainmem.h +++ b/source/src/vm/fm7/fm7_mainmem.h @@ -10,18 +10,14 @@ #include "fm7_common.h" -#include "../memory.h" +#include "../device.h" #include "../mc6809.h" -//#define MEMORY_ADDR_MAX 0x20000 -//#define MEMORY_BANK_SIZE 0x20000 -#define MEMORY_BANK_SIZE 0x10 -#define MEMORY_ADDR_MAX (FM7_MAINMEM_END * MEMORY_BANK_SIZE) class DEVICE; class MEMORY; class FM7_MAINIO; -class FM7_MAINMEM : public MEMORY +class FM7_MAINMEM : public DEVICE { private: typedef struct { diff --git a/source/src/vm/fm7/kanjirom.cpp b/source/src/vm/fm7/kanjirom.cpp index eb3b8f754..ef6ab0fbc 100644 --- a/source/src/vm/fm7/kanjirom.cpp +++ b/source/src/vm/fm7/kanjirom.cpp @@ -9,32 +9,30 @@ #include "../../fileio.h" #include "kanjirom.h" -KANJIROM::KANJIROM(VM *parent_vm, EMU* parent_emu, bool type_2std): MEMORY(parent_vm, parent_emu) +KANJIROM::KANJIROM(VM *parent_vm, EMU* parent_emu, bool type_2std): DEVICE(parent_vm, parent_emu) { - int bank_num = MEMORY_ADDR_MAX / MEMORY_BANK_SIZE; FILEIO *fio; - read_ok = false; fio = new FILEIO(); - memset(data_table, 0xff, MEMORY_ADDR_MAX); + memset(data_table, 0xff, 0x20000); // read_table[0].memory = data_table; if(type_2std) { class2 = true; if(fio->Fopen(emu->bios_path("KANJI2.ROM"), FILEIO_READ_BINARY)) { - fio->Fread(data_table, MEMORY_ADDR_MAX, 1); + fio->Fread(data_table, 0x20000, 1); fio->Fclose(); read_ok = true; } } else { class2 = false; if(fio->Fopen(emu->bios_path("KANJI1.ROM"), FILEIO_READ_BINARY)) { - fio->Fread(data_table, MEMORY_ADDR_MAX, 1); + fio->Fread(data_table, 0x20000, 1); fio->Fclose(); read_ok = true; } else if(fio->Fopen(emu->bios_path("KANJI.ROM"), FILEIO_READ_BINARY)) { - fio->Fread(data_table, MEMORY_ADDR_MAX, 1); + fio->Fread(data_table, 0x20000, 1); fio->Fclose(); read_ok = true; } @@ -50,8 +48,7 @@ void KANJIROM::write_data8(uint32 addr, uint32 data) uint32 KANJIROM::read_data8(uint32 addr) { - // return data_table[addr & 0x1ffff]; - return data_table[addr]; + return data_table[addr & 0x1ffff]; } bool KANJIROM::get_readstat(void) @@ -61,6 +58,5 @@ bool KANJIROM::get_readstat(void) void KANJIROM::release() { - MEMORY::release(); } diff --git a/source/src/vm/fm7/kanjirom.h b/source/src/vm/fm7/kanjirom.h index f936e5a0e..295878dc8 100644 --- a/source/src/vm/fm7/kanjirom.h +++ b/source/src/vm/fm7/kanjirom.h @@ -6,19 +6,12 @@ * Feb 11, 2015 : Initial */ - -#include "../memory.h" +#include "../device.h" #include "../mc6809.h" - -#undef MEMORY_ADDR_MAX -#undef MEMORY_BANK_SIZE -#define MEMORY_ADDR_MAX 0x20000 -#define MEMORY_BANK_SIZE 0x20000 - -class KANJIROM: public MEMORY { +class KANJIROM: public DEVICE { private: - uint8 data_table[MEMORY_ADDR_MAX]; + uint8 data_table[0x20000]; bool read_ok; bool class2; public: -- 2.11.0