add hirom support

This commit is contained in:
David Voswinkel 2009-07-08 19:04:37 +02:00
parent d609954c8b
commit ef14c4dcd8
6 changed files with 55 additions and 617 deletions

6
README
View File

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

View File

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

View File

@ -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; uint16_t crc = 0;
uint32_t addr = 0; uint32_t addr = 0;
uint8_t req_bank = 0; uint8_t req_bank = 0;
sram_bulk_read_start(bottom_addr); 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++) { 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", debug(DEBUG_CRC,"crc_check_bulk_memory: bank=0x%02x addr=0x%08lx crc=0x%04x\n",
req_bank,addr,crc); req_bank,addr,crc);
req_bank++; 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; uint16_t crc = 0;
uint32_t addr; uint32_t addr;
uint8_t req_bank = 0; uint8_t req_bank = 0;
for (addr = bottom_addr; addr < top_addr; addr += TRANSFER_BUFFER_SIZE) { 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", debug(DEBUG_CRC,"crc_check_memory: bank=0x%02x addr=0x%08lx crc=0x%04x\n",
req_bank,addr,crc); req_bank,addr,crc);
req_bank++; req_bank++;

View File

@ -9,8 +9,8 @@
uint16_t crc_xmodem_update(uint16_t crc, uint8_t data); 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(uint8_t * data,uint16_t size);
uint16_t do_crc_update(uint16_t 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_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 #endif

View File

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

View File

@ -2,8 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>currentDocument</key>
<string>avr/usbload/main.c</string>
<key>documents</key> <key>documents</key>
<array> <array>
<dict> <dict>
@ -21,260 +19,6 @@
<integer>271</integer> <integer>271</integer>
<key>metaData</key> <key>metaData</key>
<dict> <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> <key>poc/avr_sdcard/fat.h</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
@ -303,48 +47,6 @@
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>0</integer> <integer>0</integer>
</dict> </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> <key>snes/banktest/LoadGraphics.asm</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
@ -373,272 +75,7 @@
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>211</integer> <integer>211</integer>
</dict> </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> </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> <key>showFileHierarchyDrawer</key>
<false/> <false/>
<key>showFileHierarchyPanel</key> <key>showFileHierarchyPanel</key>
@ -674,20 +111,6 @@
</dict> </dict>
</dict> </dict>
</dict> </dict>
<key>poc</key>
<dict>
<key>isExpanded</key>
<true/>
<key>subItems</key>
<dict/>
</dict>
<key>scripts</key>
<dict>
<key>isExpanded</key>
<true/>
<key>subItems</key>
<dict/>
</dict>
<key>snes</key> <key>snes</key>
<dict> <dict>
<key>isExpanded</key> <key>isExpanded</key>
@ -695,6 +118,13 @@
<key>subItems</key> <key>subItems</key>
<dict/> <dict/>
</dict> </dict>
<key>tools</key>
<dict>
<key>isExpanded</key>
<true/>
<key>subItems</key>
<dict/>
</dict>
</dict> </dict>
</dict> </dict>
</dict> </dict>