From ae9d3b900264e20992af8134ceec616f7d64d213 Mon Sep 17 00:00:00 2001 From: naruko Date: Mon, 20 Aug 2012 20:55:30 +0000 Subject: [PATCH] =?utf8?q?workram=20mode=20=E3=81=A7=E3=81=AE=20RAM=20?= =?utf8?q?=E5=8F=96=E5=BE=97=E6=96=B9=E6=B3=95=E3=81=8C=E5=A4=89=E3=81=AA?= =?utf8?q?=E3=81=AE=E3=81=A7=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@404 24ea1065-a21e-4ca1-99c9-f5125deb0858 --- client/trunk/anago/script_dump.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/client/trunk/anago/script_dump.c b/client/trunk/anago/script_dump.c index e029252..4a29bc7 100644 --- a/client/trunk/anago/script_dump.c +++ b/client/trunk/anago/script_dump.c @@ -239,8 +239,8 @@ static SQInteger length_check(HSQUIRRELVM v) bool cpu = true, ppu = true; r = 0; - cpu = length_check_core(d, &d->cpu, wgT("cpu_romsize")); - ppu = length_check_core(d, &d->ppu, wgT("ppu_romsize")); + cpu = length_check_core(d, &d->cpu, d->mode == MODE_ROM_DUMP ? wgT("board.cpu_rom.size") : wgT("board.cpu_ram.size")); + ppu = length_check_core(d, &d->ppu, wgT("board.ppu_rom.size")); if(cpu == false || ppu == false){ r = sq_throwerror(v, wgT("script logical error")); } @@ -447,6 +447,7 @@ static SQInteger cpu_ramrw_check(HSQUIRRELVM v) static SQInteger ramimage_open(HSQUIRRELVM v) { USERPOINTER_GET(d, r) + memory_new(v); if(buf_load(d->cpu.memory.data, d->target, d->cpu.memory.size) == NG){ return r = sq_throwerror(v, wgT("RAM image open error")); } @@ -483,7 +484,7 @@ static SQInteger cpu_write_ramimage(HSQUIRRELVM v) } cmp = Malloc(length); assert(d->cpu.memory.attribute == MEMORY_ATTR_READ); - //&d->cpu.gauge, + d->cpu.access->memory_write( d->handle, address, length, writedata ); @@ -530,6 +531,11 @@ static SQInteger cpu_read_bit_check(HSQUIRRELVM v) return 0; } +static inline void gauge_increment(const struct gauge *g) +{ + g->value_add(g->bar, g->label, 1); +} + static SQInteger cpu_read_bit_msb(HSQUIRRELVM v) { USERPOINTER_GET(d, r) @@ -542,7 +548,6 @@ static SQInteger cpu_read_bit_msb(HSQUIRRELVM v) assert(d->cpu.memory.attribute == MEMORY_ATTR_WRITE); uint8_t readdata; -// d->cpu.access->memory_read(d->handle, &d->cpu.gauge, address, 1, &readdata); d->cpu.access->memory_read(d->handle, &GAUGE_DUMMY, address, 1, &readdata); readdata >>= bit; readdata &= 1; @@ -558,6 +563,7 @@ static SQInteger cpu_read_bit_msb(HSQUIRRELVM v) d->cpu.read_count_bit = 0; d->cpu.memory.data[d->cpu.memory.offset] = d->cpu.bitbuffer; d->cpu.memory.offset += 1; + gauge_increment(&d->cpu.gauge); }else{ d->cpu.bitbuffer <<= 1; } @@ -584,6 +590,7 @@ static SQInteger cpu_fetch_bit_msb(HSQUIRRELVM v) if(d->cpu.read_count_bit == 8){ d->cpu.read_count_bit = 0; d->cpu.memory.offset += 1; + gauge_increment(&d->cpu.gauge); }else{ d->cpu.bitbuffer <<= 1; } @@ -599,7 +606,7 @@ bool script_workram_execute(struct dump_config *d) { HSQUIRRELVM v = qr_open(&d->log); - qr_function_register_global(v, wgT("memory_new"), memory_new); + qr_function_register_global(v, wgT("memory_new"), memory_size_set); qr_function_register_global(v, wgT("cpu_write"), cpu_write_check); qr_function_register_global(v, wgT("cpu_ramrw"), cpu_ramrw_check); qr_function_register_global(v, wgT("memory_finalize"), length_check); @@ -641,7 +648,7 @@ bool script_workram_execute(struct dump_config *d) qr_function_register_global(v, wgT("mode_is_read"), mode_is_read); switch(d->mode){ case MODE_RAM_READ: - qr_function_register_global(v, wgT("memory_new"), script_nop); + qr_function_register_global(v, wgT("memory_new"), memory_new); qr_function_register_global(v, wgT("cpu_ramrw"), cpu_read); qr_function_register_global(v, wgT("cpu_read_bit_msb"), cpu_read_bit_msb); break; -- 2.11.0