OSDN Git Service

[VM][FM7] Fix memory leak. Not using MEMORY:: class.
authorKyuma Ohta <whatisthis.sowhat@gmail.com>
Sat, 30 May 2015 19:08:19 +0000 (04:08 +0900)
committerKyuma Ohta <whatisthis.sowhat@gmail.com>
Sat, 30 May 2015 19:08:19 +0000 (04:08 +0900)
source/fm77av.vcxproj
source/src/emu.cpp
source/src/vm/fm7/display.cpp
source/src/vm/fm7/fm7.cpp
source/src/vm/fm7/fm7_display.h
source/src/vm/fm7/fm7_mainio.h
source/src/vm/fm7/fm7_mainmem.cpp
source/src/vm/fm7/fm7_mainmem.h
source/src/vm/fm7/kanjirom.cpp
source/src/vm/fm7/kanjirom.h

index 86372be..630fd1f 100644 (file)
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <AdditionalIncludeDirectories>C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <IntrinsicFunctions>true</IntrinsicFunctions>
+      <MultiProcessorCompilation>false</MultiProcessorCompilation>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <AdditionalOptions>/arch:SSE2 %(AdditionalOptions)</AdditionalOptions>
+      <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <OmitFramePointers>true</OmitFramePointers>
       <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
       <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
+      <OpenMPSupport>true</OpenMPSupport>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
index 3bd9220..97c748c 100644 (file)
@@ -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)
index 1cd7496..9fc8235 100644 (file)
@@ -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;
index 546f618..538f1e0 100644 (file)
@@ -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);
index a794c43..401b5fe 100644 (file)
@@ -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;
index 3595e64..2c7dbd0 100644 (file)
@@ -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){
index 0d82622..0089b13 100644 (file)
@@ -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();
 }
index 59c3994..ea877f2 100644 (file)
 
 #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 {
index eb3b8f7..ef6ab0f 100644 (file)
@@ -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();
 }
 
index f936e5a..295878d 100644 (file)
@@ -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: