• R/O
  • SSH
  • HTTPS

unagi: コミット


コミットメタ情報

リビジョン416 (tree)
日時2014-03-21 20:09:07
作者naruko

ログメッセージ

page ごとに CRC32 を表示するだけモードを追加

変更サマリ

差分

--- client/trunk/anago/anago_cui.c (revision 415)
+++ client/trunk/anago/anago_cui.c (revision 416)
@@ -249,6 +249,40 @@
249249 r->control.close(h);
250250 }
251251
252+#include "crc32.h"
253+static void crc32_dump(const wgChar *name, const wgChar *str, struct memory *m)
254+{
255+ const long banksize = STRTOUL(str, NULL, 0x10);
256+ if(banksize < 0x400 || (banksize & 0xff) != 0){
257+ PUTS(wgT("banksize requires over 0x400"));
258+ return;
259+ }
260+ int i, j;
261+ PRINTF(wgT("%s 0x%x byte\n"), name, m->size);
262+ for(i = 0, j = 0; i < m->size; i += banksize, j++){
263+ PRINTF(wgT("%02x:%08x\n"), j, crc32_get(m->data + i, banksize));
264+ }
265+}
266+
267+static void crc32_display(int c, wgChar **v)
268+{
269+ if(c <= 3){
270+ PUTS(wgT("anago b [filename] [program ROM banksize]"));
271+ return;
272+ }
273+ struct romimage r;
274+ struct textcontrol log;
275+ log_set(&log);
276+ if(nesfile_load(&log, v[2], &r) == false){
277+ return;
278+ }
279+ crc32_dump(wgT("Program ROM"), v[3], &r.cpu_rom);
280+ if(c == 5 && r.ppu_rom.size != 0){
281+ crc32_dump(wgT("Charcter ROM"), v[4], &r.ppu_rom);
282+ }
283+ nesbuffer_free(&r, 0);
284+}
285+
252286 static void usage(const wgChar *v)
253287 {
254288 PUTS(wgT("famicom bus simluator 'anago'"));
@@ -258,6 +292,7 @@
258292 PUTS(wgT("r - workram read with kazzo"));
259293 PUTS(wgT("w - workram write with kazzo"));
260294 PUTS(wgT("V - VRAM A10 scan"));
295+ PUTS(wgT("b - display each CRC32s by required size"));
261296 if(DEBUG == 1){
262297 PUTS(wgT("z - ROM dump for test"));
263298 PUTS(wgT("xX- flash program for test"));
@@ -302,6 +337,9 @@
302337 case wgT('v'):
303338 vram_scan(c, v, r);
304339 break;
340+ case wgT('b'):
341+ crc32_display(c, v);
342+ break;
305343 default:
306344 usage(v[0]);
307345 PUTS(wgT("mode are d, D, f, g"));
旧リポジトリブラウザで表示