diff --git a/avr/usbload/commandline/snesuploader.c b/avr/usbload/commandline/snesuploader.c index c0fe6b7..ced4584 100644 --- a/avr/usbload/commandline/snesuploader.c +++ b/avr/usbload/commandline/snesuploader.c @@ -171,9 +171,20 @@ int main(int argc, char **argv) fseek (fp, 0, SEEK_END); file_size = ftell (fp); - fseek (fp, 0, SEEK_SET); + + if (strstr(argv[2],".smc") || strstr(argv[2],".swc")){ + printf("Skip 512 Byte header\n"); + file_size -= 512; + fseek (fp, 512, SEEK_SET); + + } else { + fseek (fp, 0, SEEK_SET); + } + bank_cnt = file_size / BANK_SIZE; printf("Transfer '%s' %i Bytes, %i Banks\n",argv[2],file_size,bank_cnt); + + read_buffer = (unsigned char *) malloc(READ_BUFFER_SIZE); crc_buffer = (unsigned char *) malloc(0x1000); diff --git a/scripts/query_romsize.py b/scripts/query_romsize.py index 089d426..4573292 100644 --- a/scripts/query_romsize.py +++ b/scripts/query_romsize.py @@ -17,21 +17,43 @@ import socket import sys import traceback import paramiko - +import socket from subprocess import Popen + +def distance(a,b): + c = {} + n = len(a); m = len(b) + + for i in range(0,n+1): + c[i,0] = i + for j in range(0,m+1): + c[0,j] = j + + for i in range(1,n+1): + for j in range(1,m+1): + x = c[i-1,j]+1 + y = c[i,j-1]+1 + if a[i-1] == b[j-1]: + z = c[i-1,j-1] + else: + z = c[i-1,j-1]+1 + c[i,j] = min(x,y,z) + return c[n,m] + paramiko.util.log_to_file('rom_sftp.log') -if os.name == 'posix': +if socket.gethostname() == 'slap': path = "/home/david/Devel/arch/avr/code/snesram/roms/" username = "david" hostname = "slap" -else: +elif socket.gethostname() == 'box': path = "/Users/david/Devel/arch/avr/code/snesram/roms/" username = "david" hostname = "burst" - +else: + sys.exit() def shellquote(s): return "'" + s.replace("'", "'\\''") + "'" @@ -57,9 +79,9 @@ def main(): print "Dirlist:", dirlist - conn = sqlite3.connect('roms.sqlite3') + conn = sqlite3.connect('roms_cleanup.sqlite3') c = conn.cursor() - for i in [(4,),(8,),(16,),(32,)]: + for i in [(1,),(2,),(4,),(8,),(16,)]: dirname = os.path.join(path,"%02i" % i) if not os.path.isdir(dirname): os.mkdir(dirname) @@ -84,13 +106,25 @@ def main(): rom_region like "Europe%" ORDER BY file_name ''',i) + + + last_name = str() for row in c: name,size,filename = row + d = distance(os.path.basename(filename),os.path.basename(last_name)) + if d < 7: + print "Skip ",filename + continue filename_dst = os.path.join(dirname,os.path.basename(filename)) print "Remote: %s -> %s" % ( filename,filename_dst) - data = open(filename, 'r').read() - open(filename_dst,"w").write(data) + last_name = filename + try: + sftp.get(filename,filename_dst) + except Exception, e: + print '*** Caught exception: %s: %s' % (e.__class__, e) + traceback.print_exc() + print "Done" except Exception, e: print '*** Caught exception: %s: %s' % (e.__class__, e) traceback.print_exc() @@ -99,6 +133,7 @@ def main(): except: pass sys.exit(1) + t.close() if __name__ == '__main__': diff --git a/scripts/roms.sqlite3 b/scripts/roms.sqlite3 index d587916..d403beb 100644 Binary files a/scripts/roms.sqlite3 and b/scripts/roms.sqlite3 differ