This commit is contained in:
Robin Hübner 2018-10-05 16:54:38 +02:00
parent 1aff62163a
commit 84decfb48f
1 changed files with 18 additions and 4 deletions

View File

@ -214,7 +214,9 @@ struct Chip8Status {
Assembly ass_; Assembly ass_;
// loaded program // loaded program
const(char)*[string] string_cache;
const (char)* loaded_program; const (char)* loaded_program;
string loaded_program_str;
// mem editor // mem editor
// MemoryEditor mem_editor_; // MemoryEditor mem_editor_;
@ -265,8 +267,7 @@ struct Chip8Status {
import std.file : read; import std.file : read;
loaded_program = "chip8_picture.ch8"; auto buf = read(loaded_program_str);
auto buf = read("programs/chip8_picture.ch8");
emu_.load(0x200, buf); // do ze load yes, will copy all the data in emu_.load(0x200, buf); // do ze load yes, will copy all the data in
ass_.setRange(cast(ushort)0x200, cast(ushort)(0x200 + cast(ushort)buf.length)); ass_.setRange(cast(ushort)0x200, cast(ushort)(0x200 + cast(ushort)buf.length));
ass_.reset(); ass_.reset();
@ -311,9 +312,22 @@ struct Chip8Status {
resetShortcut(); resetShortcut();
} }
if (igMenuItem("Load", "CTRL+L")) { if (igBeginMenu("Load")) {
import std.file;
auto dir_iterator = dirEntries("", "*.ch8", SpanMode.breadth);
foreach (DirEntry e; dir_iterator) {
import std.string : toStringz;
const (char)* c_str;
if (!(e.name in string_cache)) c_str = toStringz(e.name);
else c_str = string_cache[e.name];
if (igMenuItem(c_str)) {
loaded_program_str = e.name;
loaded_program = c_str;
loadShortcut(); loadShortcut();
} }
}
igEndMenu();
}
if (igMenuItem("Debug", "CTRL+D")) { if (igMenuItem("Debug", "CTRL+D")) {
debugShortcut(); debugShortcut();