From f832f0f72b6ca516e6b69e6cefa61bf4f339d1cb Mon Sep 17 00:00:00 2001 From: david Date: Mon, 8 Jun 2009 17:22:37 +0200 Subject: [PATCH] add dump cleanup debug code --- snes/fatfstest/dump_mrdo.txt | 20 +++++++++++ snes/fatfstest/main.c | 53 ++++++++++++++---------------- tools/bsnes/chip/fatfs/config.h | 5 +-- tools/bsnes/chip/fatfs/diskio.cpp | 37 +++++++++++---------- tools/bsnes/chip/fatfs/fatfs.cpp | 22 ++++++------- tools/ffsample/linux/fftest | Bin 39040 -> 40212 bytes 6 files changed, 77 insertions(+), 60 deletions(-) create mode 100644 snes/fatfstest/dump_mrdo.txt diff --git a/snes/fatfstest/dump_mrdo.txt b/snes/fatfstest/dump_mrdo.txt new file mode 100644 index 0000000..83433c5 --- /dev/null +++ b/snes/fatfstest/dump_mrdo.txt @@ -0,0 +1,20 @@ +00000000 18 fb 78 c2 10 e2 20 a2 ff 01 9a a9 00 48 ab a9 |..x... ......H..| +00000010 8f 8d 00 21 a9 03 9c 00 42 8d 01 21 9c 02 21 9c |...!....B..!..!.| +00000020 03 21 a9 09 8d 05 21 9c 06 21 9c 07 21 9c 08 21 |.!....!..!..!..!| +00000030 9c 09 21 9c 0a 21 9c 0b 21 9c 0c 21 9c 0d 21 9c |..!..!..!..!..!.| +00000040 0d 21 9c 0e 21 9c 0e 21 9c 0f 21 9c 0f 21 9c 10 |.!..!..!..!..!..| +00000050 21 9c 10 21 9c 11 21 9c 11 21 9c 12 21 9c 12 21 |!..!..!..!..!..!| +00000060 9c 13 21 9c 13 21 9c 14 21 9c 14 21 a9 80 8d 15 |..!..!..!..!....| +00000070 21 9c 16 21 9c 17 21 9c 1a 21 9c 1b 21 a9 01 8d |!..!..!..!..!...| +00000080 1b 21 9c 1c 21 9c 1c 21 9c 1d 21 9c 1d 21 9c 1e |.!..!..!..!..!..| +00000090 21 8d 1e 21 9c 1f 21 9c 1f 21 9c 20 21 9c 20 21 |!..!..!..!. !. !| + + +Bank: 0x01 Addr: 0x008000 Block: 0x0040 CRC 0xb8ec +Bank: 0x02 Addr: 0x010000 Block: 0x0080 CRC 0x9b9b +Bank: 0x03 Addr: 0x018000 Block: 0x00c0 CRC 0x798e +Bank: 0x04 Addr: 0x020000 Block: 0x0100 CRC 0x1092 +Bank: 0x05 Addr: 0x028000 Block: 0x0140 CRC 0x9d0c +Bank: 0x06 Addr: 0x030000 Block: 0x0180 CRC 0xf960 +Bank: 0x07 Addr: 0x038000 Block: 0x01c0 CRC 0x20ed +Bank: 0x08 Addr: 0x040000 Block: 0x0200 CRC 0xe5a3 diff --git a/snes/fatfstest/main.c b/snes/fatfstest/main.c index f41d4c6..36b6c60 100644 --- a/snes/fatfstest/main.c +++ b/snes/fatfstest/main.c @@ -13,14 +13,22 @@ #include "debug.h" #include "crc.h" - /* - * o debug STA global o optimize internal transfer buffer o direct write to mempage o relocate main code o exec loaded file - */ +/* + +o relocate main code +o exec loaded file + +o debug STA global +o optimize internal transfer buffer +o direct writeto mempage -#define ROM_NAME "MRDO.SMC" -#define BLOCK_SIZE 512 -#define BASE_ADDR 0x008000 +*/ + + +#define ROM_NAME "MRDO.SMC" +#define BLOCK_SIZE 512 +#define BASE_ADDR 0x008000 padStatus pad1; DWORD acc_size; /* Work register for fs command */ @@ -114,16 +122,12 @@ void wait(void) { printfc("SNES::wait: press A to continue\n"); enablePad(); - - // waitForVBlank(); pad1 = readPad((byte) 0); while (!pad1.A) { waitForVBlank(); pad1 = readPad((byte) 0); } printfc("SNES::wait: done\n"); - - // disablePad(); } void boot(void) @@ -233,9 +237,8 @@ void boot(void) printfc("SNES::main: read cnt=%i p1=%li p2=%li s2=%i\n", cnt, p1, p2, s2); - // printfc("SNES::main: file %x %x %x - // %x\n",Buff[0],Buff[1],Buff[2],Buff[3]); - if (res != FR_OK) { + + if (res != FR_OK) { printfc("SNES::main: read failed\n"); put_rc(res); break; @@ -247,27 +250,21 @@ void boot(void) } printfs(1 + bank, "BANK %X ADDR %LX", bank, addr); - /* - * for (i=0; i= MMIO_SECTOR01 && addr <= MMIO_SECTOR04){ sector = data << ( (3 - ( addr - MMIO_SECTOR01)) << 3); #ifdef FATFS_DEBUG - printf("FATFS::mmio_write set sector: byte=%i val=%i sector=%i \n",(3 - ( addr - MMIO_SECTOR01)),data,sector); + printf("BSNES::mmio_write set sector: byte=%i val=%i sector=%i \n",(3 - ( addr - MMIO_SECTOR01)),data,sector); #endif } if (addr == MMIO_COUNT){ count = data; #ifdef FATFS_DEBUG - printf("FATFS::mmio_write set count: count=%i \n",count); + printf("BSNES::mmio_write set count: count=%i \n",count); #endif if (command == CMD_READ) { retval = disk_read (0, (BYTE*)scratch_buffer, sector, count); @@ -123,13 +121,13 @@ void FATFS::mmio_write(unsigned addr, uint8 data) { retval = disk_write (0, (BYTE*)scratch_buffer, sector, count); } else{ #ifdef FATFS_DEBUG - printf("FATFS::mmio_write set offset: no command to trigger \n"); + printf("BSNES::mmio_write set offset: no command to trigger \n"); #endif } } if (addr == MMIO_RETVAL){ #ifdef FATFS_DEBUG - printf("FATFS::mmio_write reg 0x3016 reset\n"); + printf("BSNES::mmio_write reg 0x3016 reset\n"); #endif retval = STA_VOID; } diff --git a/tools/ffsample/linux/fftest b/tools/ffsample/linux/fftest index 7f68dddaf02b1652a0f6d97ba9b399bbe70948da..7e0048456df633ba3c14081637e1672da271bf80 100755 GIT binary patch literal 40212 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