2021-01-18 9:00 JST 〜 メンテナンスによるサービス全停止予定

コミットメタ情報

リビジョンdcfa8bdace8056077ac0b2c83023218db41e8271 (tree)
日時2014-03-21 20:09:07
作者naruko <naruko@24ea...>
コミッターnaruko

ログメッセージ

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

git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@416 24ea1065-a21e-4ca1-99c9-f5125deb0858

変更サマリ

差分

--- a/client/trunk/anago/anago_cui.c
+++ b/client/trunk/anago/anago_cui.c
@@ -249,6 +249,40 @@ static void vram_scan(int c, wgChar **v, const struct reader_driver *r)
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 @@ static void usage(const wgChar *v)
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 @@ int anago_cui(int c, wgChar **v)
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"));
旧リポジトリブラウザで表示