Skip to content

Commit 70c2fde

Browse files
authored
Merge pull request #120 from gagnonpl/load-mem-from-binary
[debugger] Add Load Memory From Binary
2 parents b12736a + e2ecd6b commit 70c2fde

6 files changed

Lines changed: 39 additions & 0 deletions

File tree

platforms/shared/desktop/gui_debug_memeditor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,16 @@ void MemEditor::SaveToBinaryFile(const char* file_path)
18511851
}
18521852
}
18531853

1854+
void MemEditor::LoadFromBinaryFile(const char* file_path)
1855+
{
1856+
FILE* file = fopen_utf8(file_path, "rb");
1857+
if (file)
1858+
{
1859+
fread(m_mem_data, m_mem_word, m_mem_size, file);
1860+
fclose(file);
1861+
}
1862+
}
1863+
18541864
void MemEditor::AddBookmark()
18551865
{
18561866
m_add_bookmark = true;

platforms/shared/desktop/gui_debug_memeditor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class MemEditor
7676
void SetValueToSelection(int value);
7777
void SaveToTextFile(const char* file_path);
7878
void SaveToBinaryFile(const char* file_path);
79+
void LoadFromBinaryFile(const char* file_path);
7980
void AddBookmark();
8081
void RemoveBookmarks();
8182
std::vector<Bookmark>* GetBookmarks();

platforms/shared/desktop/gui_debug_memory.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ void gui_debug_memory_save_dump(const char* file_path, bool binary)
186186
mem_edit[current_mem_edit].SaveToTextFile(file_path);
187187
}
188188

189+
void gui_debug_memory_load_dump(const char* file_path)
190+
{
191+
mem_edit[current_mem_edit].LoadFromBinaryFile(file_path);
192+
}
193+
189194
static void draw_tabs(void)
190195
{
191196
GeargrafxCore* core = emu_get_core();
@@ -242,6 +247,11 @@ static void memory_editor_menu(void)
242247
gui_file_dialog_save_memory_dump(true);
243248
}
244249

250+
if (ImGui::MenuItem("Load Memory From Binary..."))
251+
{
252+
gui_file_dialog_load_memory_dump();
253+
}
254+
245255
ImGui::EndMenu();
246256
}
247257

platforms/shared/desktop/gui_debug_memory.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ EXTERN void gui_debug_memory_paste(void);
6161
EXTERN void gui_debug_memory_select_all(void);
6262
EXTERN void gui_debug_memory_goto(int editor, int address);
6363
EXTERN void gui_debug_memory_save_dump(const char* file_path, bool binary);
64+
EXTERN void gui_debug_memory_load_dump(const char* file_path);
6465
EXTERN bool gui_debug_memory_select_range(int editor, int start_address, int end_address);
6566
EXTERN void gui_debug_memory_set_selection_value(int editor, u8 value);
6667
EXTERN void gui_debug_memory_add_bookmark(int editor, int address, const char* name);

platforms/shared/desktop/gui_filedialogs.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ enum FileDialogID
5757
FileDialog_SaveBackground,
5858
FileDialog_SaveMemoryDumpBinary,
5959
FileDialog_SaveMemoryDumpText,
60+
FileDialog_LoadMemoryDumpBinary,
6061
FileDialog_SaveDisassemblerFull,
6162
FileDialog_SaveDisassemblerVisible,
6263
FileDialog_SaveLog,
@@ -258,6 +259,16 @@ void gui_file_dialog_save_memory_dump(bool binary)
258259
SDL_ShowSaveFileDialog(file_dialog_callback, (void*)(intptr_t)id, application_sdl_window, filters, 1, NULL);
259260
}
260261

262+
void gui_file_dialog_load_memory_dump()
263+
{
264+
if (!begin_dialog())
265+
return;
266+
267+
SDL_DialogFileFilter filters[] = { { "Memory Dump Files", "bin" } };
268+
const char* default_path = config_emulator.last_open_path.empty() ? NULL : config_emulator.last_open_path.c_str();
269+
SDL_ShowOpenFileDialog(file_dialog_callback, (void*)(intptr_t)FileDialog_LoadMemoryDumpBinary, application_sdl_window, filters, 1, default_path, false);
270+
}
271+
261272
void gui_file_dialog_save_disassembler(bool full)
262273
{
263274
if (!begin_dialog())
@@ -474,6 +485,11 @@ static void process_dialog_result(FileDialogID id, const char* path)
474485
gui_debug_memory_save_dump(path, false);
475486
break;
476487
}
488+
case FileDialog_LoadMemoryDumpBinary:
489+
{
490+
gui_debug_memory_load_dump(path);
491+
break;
492+
}
477493
case FileDialog_SaveDisassemblerFull:
478494
{
479495
gui_debug_save_disassembler(path, true);

platforms/shared/desktop/gui_filedialogs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ EXTERN void gui_file_dialog_save_sprite(int vdc, int index);
4343
EXTERN void gui_file_dialog_save_all_sprites(int vdc);
4444
EXTERN void gui_file_dialog_save_background(int vdc);
4545
EXTERN void gui_file_dialog_save_memory_dump(bool binary);
46+
EXTERN void gui_file_dialog_load_memory_dump(void);
4647
EXTERN void gui_file_dialog_save_disassembler(bool full);
4748
EXTERN void gui_file_dialog_save_log(void);
4849
EXTERN void gui_file_dialog_save_debug_settings(void);

0 commit comments

Comments
 (0)