From aa29d483eb3ce36a470c06a5e22b4edc20c48665 Mon Sep 17 00:00:00 2001 From: optixx Date: Sun, 26 Apr 2009 15:02:10 +0200 Subject: [PATCH] o get crc working on 8 banks --- snes/crc/crc.c | 10 ++++------ snes/crc/crc.h | 1 + snes/crc/debug.c | 26 +++++++++++++++++++++----- snes/crc/debug.h | 2 +- snes/crc/hex.py | 10 ++++++++++ snes/crc/main.c | 24 +++++++++++++++--------- 6 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 snes/crc/hex.py diff --git a/snes/crc/crc.c b/snes/crc/crc.c index debc7a8..8c951a0 100644 --- a/snes/crc/crc.c +++ b/snes/crc/crc.c @@ -1,7 +1,7 @@ #include "data.h" -word crc_update (byte *data, word size) +word crc_update (char far *data, word size) { word i; word j; @@ -19,15 +19,13 @@ word crc_update (byte *data, word size) } -word crc_update_mem (word addr, word size) +word crc_update_mem (unsigned long addr, word size) { word i; word j; word crc=0; - word v; for (j=0; j> (4 * (2 * 2 - 1 - a))) & 0xf; + /* + long a; + for (a = 0; a < size; ++a) { + buf[a] = (i >> ((long)size * (2 * 2 - 1 - a))) & 0xf; if (buf[a] < 10) buf[a] += '0'; else buf[a] += 'A' - 10; } - buf[a] = 0; + */ + //buf[a] = 0; + + + unsigned long n; + unsigned char i; + //unsigned char x; + for (i = 0; i < size; i++) { + n = number >> 4; + //x = (number - (n << 4)); + buf[size-i-1] = hex_chars[(number - (n << 4))]; + number = n; + } + } void writeln(char *buffer,word y){ diff --git a/snes/crc/debug.h b/snes/crc/debug.h index 2580ade..3465a39 100644 --- a/snes/crc/debug.h +++ b/snes/crc/debug.h @@ -1,5 +1,5 @@ void initDebugMap(void); void debug(void); -void int2hex(word i, char *buf); +void int2hex(unsigned long i, char *buf,word size); void writeln(char* line,word y); void enableDebugScreen(void); \ No newline at end of file diff --git a/snes/crc/hex.py b/snes/crc/hex.py new file mode 100644 index 0000000..12355e5 --- /dev/null +++ b/snes/crc/hex.py @@ -0,0 +1,10 @@ + +number=0xffaaee +size = 6 +print hex(number) + +for i in range(0,size): + n = number >> 4; + print size-i-1, hex(number - (n << 4)); + number = n; + diff --git a/snes/crc/main.c b/snes/crc/main.c index 2d99cd3..9b9dfc2 100644 --- a/snes/crc/main.c +++ b/snes/crc/main.c @@ -30,11 +30,11 @@ void main(void) { word crc01; word crc02; padStatus pad1; - char line_header[32] = "BANK CRC 123456789ABCDEF"; + char line_header[32] = "BANK CRC ADDR 123456789ABCDEF"; char line[32] = " "; char test_buffer[] = "da"; - char *pointer; - + char far * pointer; + unsigned long addr; initInternalRegisters(); *(byte*) 0x2105 = 0x01; // MODE 1 value @@ -47,15 +47,21 @@ void main(void) { writeln(line_header,0); while(1){ - pointer = (void*)0x8000; + pointer = (void*)0x008000; + addr = 0x008000; + crc02 = crc_update(test_buffer,2); //crc01 = crc_update(pointer,255); - for(j=0; j<8; j++) { - crc01 = crc_update(pointer,0x8000); - int2hex(j,&line[0]); - int2hex(crc01,&line[5]); - //int2hex((word)pointer,&line[10]); + for(j=0; j<16; j++) { + //crc01 = crc_update(pointer,0x8000); + crc01 = crc_update_mem(addr,0x8000); + + int2hex((unsigned long)j,&line[0],4); + int2hex((unsigned long)crc01,&line[5],4); + int2hex((unsigned long)addr,&line[10],6); writeln(line,j+1); + pointer += 0x010000; + addr += 0x010000; } while(!pad1.start) { waitForVBlank();