Browse Source

rearrange wram mem usage

David Voswinkel 15 years ago
parent
commit
9991dfa249

+ 2 - 2
snes/fatfstest/StartupSnes.asm

@@ -187,9 +187,9 @@ DATA
 	XDEF	~~heap_end
 
 ~~heap_start:
-	WORD	$1000
+	WORD	$1e00
 ~~heap_end:
-	WORD	$1200
+	WORD	$2000
 
 ;******************************************************************************
 ;*** SNES ROM Registartion Data                                             ***

+ 2 - 2
snes/fatfstest/config.h

@@ -17,7 +17,7 @@
 
 
 #define SHARED_SIZE     32768
-#define SHARED_ADDR     0x3d0000
-
+#define SHARED_ADDR     0x3d8000
+//#define SHARED_ADDR     0x001d00
 
 #undef MMIO_DEBUG

+ 30 - 17
snes/fatfstest/debug.c

@@ -12,25 +12,34 @@
 
 
 
-word debugMap[0x400];
-static char debug_buffer[512];
-static char screen_buffer[512];
+#define DEBUG_BUFFER_SIZE 256
+
+word debug_map[0x400];
+char debug_buffer[DEBUG_BUFFER_SIZE];
+//char screen_buffer[DEBUG_BUFFER_SIZE];
+
 
 
 void debug_init(void)
 {
-    word i;
-    for (i = 0; i < 0x400; i++) {
-        debugMap[i] = 0x00;
-    }
-    memset(debug_buffer, 0, 255);
+    
+    memset(debug_map, 0, 0x800);
+    memset(debug_buffer, 0,DEBUG_BUFFER_SIZE);
+
+#if 0    
+    memset(screen_buffer, 0, DEBUG_BUFFER_SIZE);
+    printfc("screen_buffer=%p\n",screen_buffer);
+    printfc("debug_buffer=%p\n",debug_buffer);
+    printfc("debug_map=%p\n",debug_map);
+#endif
+    
 }
 
 
 void debug_enable(void)
 {
     VRAMLoad((word) debugFont_pic, 0x5000, 2048);
-    VRAMLoad((word) debugMap, 0x4000, 0x0800);
+    VRAMLoad((word) debug_map, 0x4000, 0x0800);
     setTileMapLocation(0x4000, (byte) 0x00, (byte) 0);
     setCharacterLocation(0x5000, (byte) 0);
     *(byte *) 0x2100 = 0x0f;    // enable background
@@ -73,10 +82,12 @@ void _print_char(word y, word x, char c)
     VRAMByteWrite((byte) (c - 32), (word) (0x4000 + x + (y * 0x20)));
 }
 
+
 void _print_screen(word y, char *buffer)
 {
     char l;
-    char x = 0;
+    unsigned int x; 
+    x = y * 0x20;
     l = strlen(buffer);
     waitForVBlank();
     while (*buffer) {
@@ -86,14 +97,14 @@ void _print_screen(word y, char *buffer)
                 *(word *) 0x2116 = 0x4000 + x + (y * 0x20);
                 *(byte *) 0x2118 = 0;
             }
-            x = 0;
-            y++;
+            y ++;
+            x = y * 0x20;
             buffer++;
             waitForVBlank();
             continue;
         }
         *(byte *) 0x2115 = 0x80;
-        *(word *) 0x2116 = 0x4000 + x + (y * 0x20);
+        *(word *) 0x2116 = 0x4000 + x;
         *(byte *) 0x2118 = *buffer - 32;
         x++;
         buffer++;
@@ -102,6 +113,7 @@ void _print_screen(word y, char *buffer)
 #endif
     }
 }
+
 void _print_console(const char *buffer)
 {
     while (*buffer)
@@ -118,7 +130,7 @@ void printfc(const char *fmt, ...)
     vsprintf(debug_buffer, fmt, ap);
     va_end(ap);
     _print_console(debug_buffer);
-    // memset(debug_buffer,0,255);
+    //memset(debug_buffer, 0, DEBUG_BUFFER_SIZE);
 
 }
 
@@ -126,10 +138,11 @@ void printfs(word y, const char *fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
-    vsprintf(screen_buffer, fmt, ap);
+    vsprintf(debug_buffer, fmt, ap);
     va_end(ap);
-    _print_screen(y, screen_buffer);
-    memset(screen_buffer, 0, 255);
+    _print_screen(y, debug_buffer);
+    //memset(debug_buffer, 0, DEBUG_BUFFER_SIZE);
+    //memset(screen_buffer, 0, DEBUG_BUFFER_SIZE);
 }
 
 void printc_packet(unsigned long addr, unsigned int len, byte * packet)

+ 1 - 1
snes/fatfstest/ff.h

@@ -25,7 +25,7 @@
 #ifndef _FATFS
 #define _FATFS
 
-#define _WORD_ACCESS	0
+#define _WORD_ACCESS	1
 /*
  * The _WORD_ACCESS option defines which access method is used to the word / data in the FAT structure. / / 0: Byte-by-byte access. Always
  * compatible with all platforms. / 1: Word access. Do not choose this unless following condition is met. / / When the byte order on the

+ 47 - 27
snes/fatfstest/main.c

@@ -23,21 +23,25 @@
 typedef void (*FUNC) (void);
 
 padStatus pad1;
-DWORD acc_size;                 /* Work register for fs command */
-WORD acc_files, acc_dirs;
+
 FILINFO finfo;
-FATFS fatfs[2];                 /* File system object for each logical * drive */
-// BYTE Buff[512]; /* Working buffer */
-DWORD p1, p2, p3;
-DWORD addr;
-DWORD crc_addr;
-UINT crc;
-BYTE res, bank;
-WORD w1;
-UINT s1, s2, cnt;
+FATFS fatfs[1];                 /* File system object for each logical * drive */
 FATFS *fs;
 DIR dir;                        /* Directory object */
-FIL file1, file2;
+FIL file1;
+char buffer[512];
+char *ptr;
+DWORD acc_size;                 /* Work register for fs command */
+WORD acc_files, acc_dirs;
+
+DWORD p1, p2;
+UINT s1, s2, cnt,crc,bank;
+DWORD addr,crc_addr;
+BYTE res;
+
+
+char rom_name[]= ROM_NAME;
+    
 void initInternalRegisters(void)
 {
     characterLocation[0] = 0x0000;
@@ -83,7 +87,7 @@ void put_rc(FRESULT rc)
     for (p = str, i = 0; i != rc && *p; i++) {
         while (*p++);
     }
-    printfc("rc=%u FR_%s\n", (WORD) rc, p);
+    printfc("rc=%i FR_%s\n", (WORD) rc, p);
 }
 
 FRESULT scan_files(char *path)
@@ -128,7 +132,7 @@ void boot(DWORD addr)
 {
     FUNC fn;
     printfc("SNES::boot addr=%lx\n", addr);
-    fn = (FUNC) addr;
+    fn = (FUNC)addr;
     fn();
 
 } void main(void)
@@ -145,11 +149,14 @@ void boot(DWORD addr)
     printfc("SNES::main: Try to init disk\n");
     put_rc(f_mount((BYTE) 0, &fatfs[0]));
 
+#if 0
     printfs(0, "FATFS OPTIXX.ORG ");
     printfc("SNES::main: Try to get free\n");
+    
     res = f_getfree("", &p2, &fs);
     if (res)
         put_rc(res);
+    
     printfc("SNES::main: printf fs results\n");
     printfs(1,
             "FAT TYPE = %u\nBYTES/CLUSTER = %lu\nNUMBER OF FATS = %u\n"
@@ -159,6 +166,7 @@ void boot(DWORD addr)
             (WORD) fs->n_fats, fs->n_rootdir, (DWORD) fs->sects_fat,
             (DWORD) fs->max_clust - 2, fs->fatbase, fs->dirbase, fs->database);
     acc_size = acc_files = acc_dirs = 0;
+    
     printfc("SNES::main: scan files\n");
     res = scan_files("");
     if (res)
@@ -170,10 +178,14 @@ void boot(DWORD addr)
     res = f_opendir(&dir, "");
     if (res)
         put_rc(res);
+    
     p1 = s1 = s2 = 0;
     cnt = 0;
     wait();
     clears();
+#endif
+
+
 #if 0
     printfc("SNES::main: read dir\n");
     for (;;) {
@@ -214,55 +226,63 @@ void boot(DWORD addr)
     wait();
     clears();
 
-#endif                          /* */
+#endif                          
 
-    printfc("SNES::main: open %s \n", ROM_NAME);
-    printfs(0, "OPEN %s", ROM_NAME);
-    put_rc(f_open(&file1, ROM_NAME, (BYTE) FA_READ));
     p1 = BANK_SIZE * BANK_COUNT;
     p2 = 0;
-    p3 = 0;
     cnt = 0;
     bank = 0;
     addr = BASE_ADDR;
     crc_addr = BASE_ADDR;
+
+    printfc("SNES::main: open %s \n", rom_name);
+    printfs(0, "OPEN %s", rom_name);
+    put_rc(f_open(&file1, rom_name, (BYTE) FA_READ));
+    
     while (p1) {
         cnt = BLOCK_SIZE;
         p1 -= BLOCK_SIZE;
-        res = f_read(&file1, (byte *) (addr), cnt, &s2);
-
+        
+        res = f_read(&file1, buffer, cnt, &s2);
 
         if (res != FR_OK) {
             printfc("SNES::main: read failed\n");
             put_rc(res);
             break;
         }
+        
         p2 += s2;
         if (cnt != s2) {
             printfc("SNES::main: read cnt=%i s2=%i\n", cnt, s2);
             break;
         }
+        
+        for (i=0;i<BLOCK_SIZE;i++)
+            *(byte*)(addr++) = buffer[i];
+
 #if 0
         printc_packet(addr, 512, (byte *) (addr));
         wait();
 #endif
 
-        addr += s2;
-
+        //addr += s2;
         if (addr % 0x10000 == 0) {
-            printfc("SNES::main: read cnt=%i p1=%li p2=%li s2=%i \n", cnt,
-                    p1, p2, s2);
+            //printfc("SNES::main: read p1=%li p2=%li cnt=%i s2=%i\n", 
+            //        p1, p2, cnt, s2);
+
 #if 0
             crc = crc_update_mem(crc_addr, 0x8000);
             printfc("SNES::main: crc_addr=%lx crc=%x\n", crc_addr, crc);
             crc_addr += 0x8000;
 #endif
-            printfs((1 + bank), "BANK %i  ADDR 0X%lx   ", bank, addr);
-
+            
+            
+            printfs(bank+1, "BANK 0X%X ADDR 0X%lX", bank, addr);
             addr += 0x8000;
             bank++;
         }
     }
+    
     put_rc(f_close(&file1));
     addr = *(byte *) 0xFFFD;
     addr = addr << 8;

+ 2 - 2
tools/bsnes/chip/fatfs/config.h

@@ -15,8 +15,8 @@
 
 
 #define SHARED_MAX_SIZE     32768
-#define SHARED_ADDR     0x3d0000
-
+#define SHARED_ADDR     0x3d8000
+//#define SHARED_ADDR     0x001d00
 #undef MMIO_DEBUG
 #undef FATFS_DEBUG
 #undef DISKIO_DEBUG 1