Browse Source

add hirom support

David Voswinkel 15 years ago
parent
commit
ef14c4dcd8
6 changed files with 50 additions and 612 deletions
  1. 5 1
      README
  2. 6 6
      avr/usbload/commandline/snesuploader.c
  3. 4 7
      avr/usbload/crc.c
  4. 2 2
      avr/usbload/crc.h
  5. 31 24
      avr/usbload/main.c
  6. 2 572
      snesram.tmproj

+ 5 - 1
README

@@ -1 +1,5 @@
-o Test
+TODO:
+    o ucon64 support
+    o hi/rom support
+    o speed optimize
+    o irq inject

+ 6 - 6
avr/usbload/commandline/snesuploader.c

@@ -15,10 +15,10 @@
  */
 
 
-#define READ_BUFFER_SIZE    (1024 * 32)
+#define BANK_SIZE_SHIFT     16
+#define BANK_SIZE           (1<<BANK_SIZE_SHIFT)
+#define READ_BUFFER_SIZE    (1<<BANK_SIZE_SHIFT)
 #define SEND_BUFFER_SIZE    128
-#define BANK_SIZE           (1<<15)
-#define BANK_SIZE_SHIFT     15
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -128,7 +128,7 @@ int main(int argc, char **argv)
     uint32_t addr = 0;
     uint16_t addr_lo = 0;
     uint16_t addr_hi = 0;
-    uint16_t step = 0;
+    uint32_t step = 0;
     uint16_t crc = 0;
     uint8_t bank = 0;
     uint8_t bank_cnt = 0;
@@ -234,11 +234,11 @@ int main(int argc, char **argv)
                 memcpy(ptr, read_buffer + step, SEND_BUFFER_SIZE);
                 addr += SEND_BUFFER_SIZE;
                 ptr += SEND_BUFFER_SIZE;
-                if ( addr % 0x1000 == 0){
+                if ( addr % BANK_SIZE == 0){
                     crc = do_crc(crc_buffer, 0x1000);
                     printf ("bank=0x%02x addr=0x%08x addr=0x%08x crc=0x%04x\n", bank, addr - 0x1000, addr, crc);
                     ptr = crc_buffer;
-                    if ( addr % 0x8000 == 0) {
+                    if ( addr % BANK_SIZE == 0) {
                         bank++;
                         
                     }

+ 4 - 7
avr/usbload/crc.c

@@ -43,18 +43,15 @@ uint16_t do_crc_update(uint16_t crc, uint8_t * data, uint16_t size)
 }
 
 
-uint16_t crc_check_bulk_memory(uint32_t bottom_addr,uint32_t top_addr)
+uint16_t crc_check_bulk_memory(uint32_t bottom_addr, uint32_t top_addr, uint32_t bank_size)
 {
     uint16_t crc = 0;
     uint32_t addr = 0;
     uint8_t req_bank = 0;
     sram_bulk_read_start(bottom_addr);
     
-    //debug(DEBUG_CRC,"crc_check_bulk_memory: bottom_addr=0x%08lx top_addr=0x%08lx\n",
-    //    bottom_addr, top_addr);
-    
     for (addr = bottom_addr; addr < top_addr; addr++) {
-        if (addr && addr % 0x8000 == 0) {
+        if (addr && addr % bank_size == 0) {
             debug(DEBUG_CRC,"crc_check_bulk_memory: bank=0x%02x addr=0x%08lx crc=0x%04x\n",
                 req_bank,addr,crc);
             req_bank++;
@@ -72,13 +69,13 @@ uint16_t crc_check_bulk_memory(uint32_t bottom_addr,uint32_t top_addr)
 
 
 
-void crc_check_memory(uint32_t bottom_addr,uint32_t top_addr,uint8_t *buffer)
+void crc_check_memory(uint32_t bottom_addr,uint32_t top_addr,uint32_t bank_size,uint8_t *buffer)
 {
     uint16_t crc = 0;
     uint32_t addr;
     uint8_t req_bank = 0;
     for (addr = bottom_addr; addr < top_addr; addr += TRANSFER_BUFFER_SIZE) {
-        if (addr && addr % 0x8000 == 0) {
+        if (addr && addr % bank_size == 0) {
             debug(DEBUG_CRC,"crc_check_memory: bank=0x%02x addr=0x%08lx crc=0x%04x\n",
                 req_bank,addr,crc);
             req_bank++;

+ 2 - 2
avr/usbload/crc.h

@@ -9,8 +9,8 @@
 uint16_t crc_xmodem_update(uint16_t crc, uint8_t data);
 uint16_t do_crc(uint8_t * data,uint16_t size);
 uint16_t do_crc_update(uint16_t crc,uint8_t * data,uint16_t size);
-void crc_check_memory(uint32_t bottom_addr,uint32_t top_addr,uint8_t *buffer);
+void crc_check_memory(uint32_t bottom_addr,uint32_t top_addr,uint32_t bank_size,uint8_t *buffer);
 uint16_t crc_check_memory_range(uint32_t start_addr, uint32_t size,uint8_t *buffer);
-uint16_t crc_check_bulk_memory(uint32_t bottom_addr,uint32_t top_addr);
+uint16_t crc_check_bulk_memory(uint32_t bottom_addr, uint32_t bank_size,uint32_t top_addr);
 
 #endif

+ 31 - 24
avr/usbload/main.c

@@ -26,7 +26,7 @@ uint32_t req_addr = 0;
 uint32_t req_addr_end = 0;
 uint32_t req_size;
 uint8_t req_bank;
-uint16_t req_bank_size;
+uint32_t req_bank_size;
 uint16_t req_bank_cnt;
 uint8_t req_state = REQ_STATUS_IDLE;
 uint8_t rx_remaining = 0;
@@ -54,10 +54,10 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
 
         req_bank = 0;
         rx_remaining = 0;
-        req_bank_size = 1 << rq->wValue.word;
+        req_bank_size = (uint32_t)1 << rq->wValue.word;
         sync_errors = 0;
         crc = 0;
-        debug(DEBUG_USB,"USB_UPLOAD_INIT: bank_size=0x%04x\n", req_bank_size);
+        debug(DEBUG_USB,"USB_UPLOAD_INIT: bank_size=0x%08lx\n", req_bank_size);
 
 /*
  * -------------------------------------------------------------------------
@@ -81,7 +81,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
         
         if (req_addr && (req_addr % 0x1000) == 0) {
             debug(DEBUG_USB,"USB_UPLOAD_ADDR: bank=0x%02x addr=0x%08lx crc=%04x\n",
-                req_bank, req_addr,crc_check_bulk_memory(req_addr - 0x1000,req_addr));
+                req_bank, req_addr,crc_check_bulk_memory(req_addr - 0x1000,req_addr,req_bank_size));
         
         }
         if (req_addr && req_addr % req_bank_size == 0) {
@@ -109,12 +109,13 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
 
         req_bank = 0;
         rx_remaining = 0;
-        req_bank_size = (1 << rq->wValue.word) & 0xffff;
+        debug(DEBUG_USB,"USB_BULK_UPLOAD_INIT: %i %i\n",rq->wValue.word,  rq->wIndex.word);    
+        req_bank_size = (uint32_t)(1L << rq->wValue.word);
         req_bank_cnt = rq->wIndex.word;
         req_addr_end =  (uint32_t)req_bank_size * req_bank_cnt;
         
         sync_errors = 0;
-        debug(DEBUG_USB,"USB_BULK_UPLOAD_INIT: bank_size=0x%x bank_cnt=0x%x end_addr=0x%08lx\n", 
+        debug(DEBUG_USB,"USB_BULK_UPLOAD_INIT: bank_size=0x%08lx bank_cnt=0x%x end_addr=0x%08lx\n", 
                 req_bank_size, req_bank_cnt, req_addr_end);
         
         if (req_addr == 0x000000){
@@ -154,13 +155,13 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
 #if 0
         if (req_addr && (req_addr % 0x1000) == 0) {
             debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: bank=0x%02x addr=0x%08lx crc=%04x\n",
-                req_bank, req_addr,crc_check_bulk_memory(req_addr - 0x1000,req_addr));
+                req_bank, req_addr,crc_check_bulk_memory(req_addr - 0x1000,req_addr,req_bank_size));
         
         }
         sram_bulk_write_start(req_addr);
 #endif
-        if (req_addr && req_addr % req_bank_size == 0) {
-            debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr= 0x%08lx time=%.4f\n",
+        if (req_addr && ( req_addr % req_bank_size) == 0) {
+            debug(DEBUG_USB,"USB_BULK_UPLOAD_NEXT: req_bank=0x%02x addr=0x%08lx time=%.4f\n",
                    req_bank, req_addr,timer_stop());
             req_bank++;
             timer_start();
@@ -187,7 +188,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
         req_addr = req_addr << 16;
         req_addr = req_addr | rq->wIndex.word;
         debug(DEBUG_USB,"USB_CRC: addr=0x%08lx \n", req_addr);
-        crc_check_bulk_memory(0x000000,req_addr);
+        crc_check_bulk_memory(0x000000, req_addr, req_bank_size);
         ret_len = 0;
 /*
  * -------------------------------------------------------------------------
@@ -212,7 +213,7 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
         tx_remaining = 2;
         debug(DEBUG_USB,"USB_CRC_ADDR: addr=0x%lx size=%li\n", req_addr, req_size);
 
-        crc = crc_check_memory_range(req_addr,req_size,read_buffer);
+        crc = crc_check_memory_range(req_addr, req_size, read_buffer);
         tx_buffer[0] = crc & 0xff;
         tx_buffer[1] = (crc >> 8) & 0xff;
         ret_len = 2;
@@ -293,7 +294,7 @@ void test_crc(){
     avr_bus_active();
     sram_bulk_set(0x000000,0x10000,0xff);
     printf("test_crc: crc\n");
-    crc_check_bulk_memory(0x000000,0x10000);
+    crc_check_bulk_memory(0x000000,0x10000,0x8000);
     printf("test_crc: check\n");
     test_non_zero_memory(0x000000,0x10000);
 }
@@ -308,10 +309,12 @@ int main(void)
     system_init();
     printf("Sytem Init\n");
 
-    //test_read_write();
-    //test_bulk_read_write();
-    //test_crc();
-    //while(1);
+#if 0
+    test_read_write();
+    test_bulk_read_write();
+    test_crc();
+    while(1);
+#endif
     
     usbInit();
     printf("USB Init\n");
@@ -354,18 +357,22 @@ int main(void)
     
     usbDeviceDisconnect();      
     printf("USB disconnect\n");
-    
-    crc_check_bulk_memory(0x000000, req_addr_end);
-    
-    dump_memory(0x7f00,0x8000);
+
+#if 0    
+    crc_check_bulk_memory(0x000000, req_addr_end, req_bank_size);
+#endif
 
     snes_irq_lo();
     snes_irq_off();
-    printf("IRQ off\n");
     
-    snes_lorom();
-    printf("Set Snes lowrom\n");
-
+    printf("IRQ off\n");
+    if (req_bank_size == 0x8000){
+        snes_lorom();
+        printf("Set Snes lowrom \n");
+    } else {
+        snes_hirom();
+        printf("Set Snes hirom \n");
+    }
     snes_wr_disable(); 
     printf("Disable snes WR\n");
         

+ 2 - 572
snesram.tmproj

@@ -2,8 +2,6 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-	<key>currentDocument</key>
-	<string>avr/usbload/main.c</string>
 	<key>documents</key>
 	<array>
 		<dict>
@@ -21,260 +19,6 @@
 	<integer>271</integer>
 	<key>metaData</key>
 	<dict>
-		<key>avr/usbload/Makefile</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>29</integer>
-				<key>line</key>
-				<integer>4</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/commandline/opendevice.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>3</integer>
-				<key>line</key>
-				<integer>27</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>234</integer>
-		</dict>
-		<key>avr/usbload/commandline/opendevice.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>26</integer>
-		</dict>
-		<key>avr/usbload/commandline/snesuploader.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>23</integer>
-				<key>line</key>
-				<integer>206</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>206</integer>
-		</dict>
-		<key>avr/usbload/crc.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>44</integer>
-			</dict>
-			<key>columnSelection</key>
-			<false/>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>21</integer>
-			<key>selectFrom</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>43</integer>
-			</dict>
-			<key>selectTo</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>44</integer>
-			</dict>
-		</dict>
-		<key>avr/usbload/crc.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>14</integer>
-				<key>line</key>
-				<integer>9</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/debug.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/debug.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/fifo.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/fifo.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/main.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>4</integer>
-				<key>line</key>
-				<integer>314</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>298</integer>
-		</dict>
-		<key>avr/usbload/sram.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>121</integer>
-		</dict>
-		<key>avr/usbload/sram.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/uart.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>25</integer>
-				<key>line</key>
-				<integer>59</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>26</integer>
-		</dict>
-		<key>avr/usbload/uart.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>avr/usbload/usb_bulk.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>47</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>21</integer>
-		</dict>
-		<key>avr/usbload/usbconfig.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>207</integer>
-		</dict>
 		<key>poc/avr_sdcard/fat.h</key>
 		<dict>
 			<key>caret</key>
@@ -303,48 +47,6 @@
 			<key>firstVisibleLine</key>
 			<integer>0</integer>
 		</dict>
-		<key>scripts/b.py</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>scripts/rom.py</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>228</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>189</integer>
-		</dict>
-		<key>scripts/rom_analyse.sql</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>2</integer>
-		</dict>
 		<key>snes/banktest/LoadGraphics.asm</key>
 		<dict>
 			<key>caret</key>
@@ -373,272 +75,7 @@
 			<key>firstVisibleLine</key>
 			<integer>211</integer>
 		</dict>
-		<key>snes/fatfstest/StartupSnes.asm</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>snes/fatfstest/main.c</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>5</integer>
-				<key>line</key>
-				<integer>188</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>157</integer>
-		</dict>
-		<key>snes/irqtest/debug.asm</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>1</integer>
-				<key>line</key>
-				<integer>29</integer>
-			</dict>
-			<key>columnSelection</key>
-			<false/>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-			<key>selectFrom</key>
-			<dict>
-				<key>column</key>
-				<integer>1</integer>
-				<key>line</key>
-				<integer>27</integer>
-			</dict>
-			<key>selectTo</key>
-			<dict>
-				<key>column</key>
-				<integer>1</integer>
-				<key>line</key>
-				<integer>29</integer>
-			</dict>
-		</dict>
-		<key>snes/irqtest/irqtest.asm</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>5</integer>
-				<key>line</key>
-				<integer>52</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>71</integer>
-		</dict>
-		<key>tools/bsnes/cart/cart.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>55</integer>
-				<key>line</key>
-				<integer>75</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>61</integer>
-		</dict>
-		<key>tools/bsnes/cart/cart.hpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tools/bsnes/chip/dsp1/dsp1.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>7</integer>
-		</dict>
-		<key>tools/bsnes/chip/dsp1/dsp1emu.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>48</integer>
-				<key>line</key>
-				<integer>321</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>729</integer>
-		</dict>
-		<key>tools/bsnes/chip/fatfs/config.h</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>27</integer>
-				<key>line</key>
-				<integer>17</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tools/bsnes/memory/memory.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tools/bsnes/memory/smemory/mapper/chip.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>27</integer>
-				<key>line</key>
-				<integer>9</integer>
-			</dict>
-			<key>columnSelection</key>
-			<false/>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-			<key>selectFrom</key>
-			<dict>
-				<key>column</key>
-				<integer>20</integer>
-				<key>line</key>
-				<integer>9</integer>
-			</dict>
-			<key>selectTo</key>
-			<dict>
-				<key>column</key>
-				<integer>32</integer>
-				<key>line</key>
-				<integer>9</integer>
-			</dict>
-		</dict>
-		<key>tools/bsnes/memory/smemory/smemory.hpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tools/bsnes/snes/snes.cpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tools/bsnes/snes/snes.hpp</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
 	</dict>
-	<key>openDocuments</key>
-	<array>
-		<string>tools/bsnes/chip/fatfs/config.h</string>
-		<string>snes/fatfstest/StartupSnes.asm</string>
-		<string>snes/irqtest/irqtest.asm</string>
-		<string>snes/irqtest/debug.asm</string>
-		<string>snes/fatfstest/main.c</string>
-		<string>tools/bsnes/chip/dsp1/dsp1.cpp</string>
-		<string>tools/bsnes/chip/dsp1/dsp1emu.cpp</string>
-		<string>tools/bsnes/snes/snes.cpp</string>
-		<string>tools/bsnes/snes/snes.hpp</string>
-		<string>tools/bsnes/memory/memory.cpp</string>
-		<string>tools/bsnes/memory/smemory/smemory.hpp</string>
-		<string>tools/bsnes/memory/smemory/mapper/chip.cpp</string>
-		<string>tools/bsnes/cart/cart.cpp</string>
-		<string>tools/bsnes/cart/cart.hpp</string>
-		<string>scripts/rom_analyse.sql</string>
-		<string>scripts/b.py</string>
-		<string>scripts/rom.py</string>
-		<string>avr/usbload/crc.c</string>
-		<string>avr/usbload/crc.h</string>
-		<string>avr/usbload/sram.c</string>
-		<string>avr/usbload/sram.h</string>
-		<string>avr/usbload/fifo.h</string>
-		<string>avr/usbload/fifo.c</string>
-		<string>avr/usbload/Makefile</string>
-		<string>avr/usbload/debug.h</string>
-		<string>avr/usbload/debug.c</string>
-		<string>avr/usbload/uart.c</string>
-		<string>avr/usbload/main.c</string>
-		<string>avr/usbload/usb_bulk.c</string>
-		<string>avr/usbload/usbconfig.h</string>
-		<string>avr/usbload/commandline/opendevice.c</string>
-		<string>avr/usbload/commandline/opendevice.h</string>
-		<string>avr/usbload/commandline/snesuploader.c</string>
-		<string>avr/usbload/uart.h</string>
-	</array>
 	<key>showFileHierarchyDrawer</key>
 	<false/>
 	<key>showFileHierarchyPanel</key>
@@ -674,21 +111,14 @@
 						</dict>
 					</dict>
 				</dict>
-				<key>poc</key>
-				<dict>
-					<key>isExpanded</key>
-					<true/>
-					<key>subItems</key>
-					<dict/>
-				</dict>
-				<key>scripts</key>
+				<key>snes</key>
 				<dict>
 					<key>isExpanded</key>
 					<true/>
 					<key>subItems</key>
 					<dict/>
 				</dict>
-				<key>snes</key>
+				<key>tools</key>
 				<dict>
 					<key>isExpanded</key>
 					<true/>