rainbow big update
- fixed bootloader bank @ $5000 - now using external file for bootloader chr data - wificonfig now initialized like hardware - fixed FILE_GET_LIST command - fixed getAutoFilename case issue renamed bootloader to bootrom added ESP_FACTORY_SETTINGS command support updated WIFI_GET_STATUS, WIFI_GET_IP and AP_GET_SSID commands added FILE_GET_FS_INFO command + misc updated mapper - added support for bigger ROM files - fixed PRG/CHR self-flashing sequences updated ESP_GET_STATUS command updated Rainbow ESP - fixed file system saving issue - fixed ESP_GET_FIRMWARE_VERSION command - updated ESP_GET_STATUS command - updated WIFI_GET_SSID command - updated WIFI_GET_IP command - updated AP_GET_SSID command - updated AP_GET_IP command - updated FILE_EXISTS command for special case - fixed getAutoFilename(), loadFiles(), _loadFiles(), saveFiles() updated Rainbow mapper - updated mapper number - updated some functions name - added unlock bypass mode support - added top/boot sectors depending on rom size - now resets to first 32K bank - fixed random memory init issue - updated Scanline IRQ registers added misc ROMs support - added misc ROMs support for bootrom added SERVER_SET_SAVED_SETTINGS command
This commit is contained in:
parent
230ddc0fe4
commit
3f13bd72a4
|
@ -0,0 +1,258 @@
|
|||
const unsigned char bootrom_chr[4096] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0xFF,0xDB,0xFF,0xC3,0xE7,0xFF,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x7C,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x7C,0x38,0xFE,0xFE,0xD6,0x10,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x03,0x0F,0x1C,0x30,0x30,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC0,0xF0,0x3A,0x1E,0x0E,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x1C,0x1C,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x44,0xC6,0xC6,0xFE,0x7C,0x38,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0D,0x0D,0x00,0x0F,0xDF,0xD8,0x1B,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xB0,0xB0,0x00,0xF0,0xFB,0x1B,0xD8,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0F,0x1F,0x38,0x75,0x65,0x65,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xFE,0x06,0x56,0x56,0x56,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0x63,0x7F,0x63,0x63,0x67,0xE6,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x80,0xE0,0xF8,0xFE,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x3C,0x7E,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0xC3,0x78,0xCC,0xCC,0x78,0x8C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x60,0x30,0x30,0x1C,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x0C,0x0C,0x38,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x38,0x38,0x38,0x38,0x28,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xDB,0x1B,0xD8,0xDF,0x0F,0x00,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xDB,0xD8,0x1B,0xFB,0xF0,0x00,0xB0,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x60,0x60,0x60,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x06,0x06,0x06,0x06,0x06,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x7C,0xC0,0x78,0x0C,0xF8,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0x38,0x76,0xDC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x70,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xDC,0xFC,0xEC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0xF0,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x38,0x60,0xCC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x60,0xC0,0xF8,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xCC,0x0C,0x18,0x30,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0x78,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x30,0x30,0x00,0x70,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7C,0xC6,0xDE,0xDE,0xDE,0xC0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x66,0x66,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x6C,0x66,0x66,0x66,0x6C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0x62,0x68,0x78,0x68,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF0,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xEE,0xFE,0xD6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x78,0x6C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xE0,0x38,0x1C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xB4,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xCC,0x98,0x30,0x62,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x60,0x30,0x18,0x0C,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x7C,0x66,0x66,0x66,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0x60,0xF0,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x6C,0x76,0x66,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x00,0x78,0x18,0x18,0x18,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xEC,0xFE,0xD6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xF8,0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xDC,0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xD8,0x6C,0x6C,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x30,0x7C,0x30,0x30,0x34,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC6,0xC6,0xD6,0xFE,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFC,0x98,0x30,0x64,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x03,0x0F,0x1E,0x3E,0x3F,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC0,0xF0,0x78,0x7C,0xFC,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x07,0x1F,0x3F,0x78,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xE0,0xF8,0xFC,0x1E,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x20,0x70,0xF8,0x7C,0x3F,0x1F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x1C,0x3E,0x7C,0xF8,0xF0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x03,0x05,0x0E,0x1C,0x38,0x70,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x51,0x71,0x71,0x71,0x7F,0x71,0x7F,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFA,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x07,0x0F,0x1D,0x39,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x23,0x27,0x2E,0x3C,0x38,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x47,0x47,0xE7,0x00,0x00,0xE0,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x02,0x02,0x04,0x04,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x8C,0x02,0x32,0x81,0x01,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x3E,0x3E,0x1F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7C,0x7C,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x83,0x87,0x0C,0x08,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC1,0xE1,0x30,0x10,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0F,0x1F,0x3F,0x7C,0xF8,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0xF0,0xF8,0x7C,0x3E,0x1C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x27,0x53,0xA9,0x54,0x2A,0x15,0x0A,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x80,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0x71,0x7F,0x31,0x3F,0x31,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x44,0xEE,0x7C,0x38,0x7C,0xEE,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x08,0x14,0x22,0x14,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x47,0xE7,0x00,0x00,0xE0,0x47,0x27,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x05,0x0E,0x1C,0x38,0x70,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x8C,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x7C,0xFF,0xFF,0x80,0x80,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xF8,0xF8,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0xFC,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x40,0x82,0x00,0x00,0xFF,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x30,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x60,0x70,0x78,0x3C,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0xE0,0xF0,0xF8,0xFC,0x7C,0x7C,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x01,0x01,0x03,0x02,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0x80,0xC0,0x40,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x7C,0x79,0x7F,0x7F,0x7E,0x7E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x3E,0x9E,0x9E,0x3E,0x7E,0x7E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x07,0x04,0x3F,0x7F,0x00,0x35,0x35,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF0,0x10,0xFE,0xFF,0x00,0x56,0x56,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x3F,0x30,0x3F,0x30,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0C,0xFC,0x0C,0xFC,0x0C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x30,0x3E,0x3E,0x3E,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0C,0x0C,0x7C,0x7C,0x7C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0E,0x0E,0x1E,0x1F,0x3E,0x3E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x70,0x78,0xF8,0x7C,0x7C,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0xFE,0xFC,0xF8,0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0xFE,0xFC,0xF8,0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x35,0x35,0x35,0x35,0x35,0x35,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x56,0x56,0x56,0x56,0x56,0x56,0xFE,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x0C,0x1E,0x3E,0x38,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x07,0x08,0x10,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xE0,0xF8,0x3C,0x1E,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFE,0xFC,0xF8,0xF1,0xE3,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x1E,0x33,0x73,0xFE,0xFC,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x03,0x07,0x2E,0xFC,0xF8,0xFC,0x78,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x1C,0x0F,0x0F,0x1C,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x07,0x0F,0x1C,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xE0,0xF0,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x3F,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0xE0,0xF0,0xF8,0x7C,0x7C,0xFC,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x20,0x20,0x10,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE7,0xE1,0xC5,0xC8,0xC0,0xE3,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0xC0,0x80,0x10,0x30,0xF0,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x3E,0x1F,0x1F,0x3F,0x72,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x38,0xF0,0xF0,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x1C,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x38,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3E,0x3E,0x3E,0x3E,0x3E,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x17,0x16,0x36,0x36,0x30,0x1F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x79,0xB6,0x32,0xBA,0x32,0x78,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x82,0x84,0x84,0x88,0x88,0x80,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x11,0x9C,0x1E,0x0F,0x1F,0x5F,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC0,0xE4,0xF0,0xFC,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x03,0x03,0x07,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0x80,0xC0,0xFE,0xFE,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0F,0x18,0x30,0x67,0xCC,0x98,0x91,0x93,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x30,0x18,0xCC,0x66,0x32,0x12,0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x07,0x1F,0x3E,0x77,0x6F,0xFE,0xDC,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0xF8,0x7C,0xBE,0xBE,0x17,0x07,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x20,0x70,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x04,0x0E,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0E,0x67,0xF3,0x50,0x02,0x7C,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE7,0x06,0xF8,0x00,0x04,0x03,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x2C,0x2C,0x38,0x00,0x00,0xE0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x10,0x00,0x7F,0x9F,0x97,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x08,0x00,0xFE,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x1F,0x1F,0x1F,0x3F,0x3F,0x78,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0x3C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x91,0x00,0x03,0x07,0x07,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x12,0x00,0x80,0xC0,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC8,0xC4,0xE6,0x67,0x73,0x3E,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0x1F,0x07,0x86,0x8E,0x3C,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0xC0,0xE0,0xF0,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x01,0x03,0x07,0x0F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
// mapper 3873 - Rainbow2 board v1.0 revA and v1.1 by Broke Studio
|
||||
// mapper 682 - Rainbow2 board v1.0 revA and v1.1 by Broke Studio
|
||||
//
|
||||
// documentation available here: https://github.com/BrokeStudio/rainbow-lib
|
||||
|
||||
|
@ -35,266 +35,7 @@
|
|||
#define UDBG(...)
|
||||
#endif
|
||||
|
||||
const unsigned char bootloader_chr[4096] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0xFF,0xDB,0xFF,0xC3,0xE7,0xFF,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x7C,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x7C,0x38,0xFE,0xFE,0xD6,0x10,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x10,0x38,0x7C,0xFE,0x7C,0x10,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xC3,0x99,0xBD,0xBD,0x99,0xC3,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x33,0x3F,0x30,0x30,0x70,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0x63,0x7F,0x63,0x63,0x67,0xE6,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x80,0xE0,0xF8,0xFE,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x3C,0x7E,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0xC3,0x78,0xCC,0xCC,0x78,0x8C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x7E,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC0,0xC0,0xC0,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x7C,0xC0,0x78,0x0C,0xF8,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0x38,0x76,0xDC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x70,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xDC,0xFC,0xEC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0xF0,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x38,0x60,0xCC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x60,0xC0,0xF8,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xCC,0x0C,0x18,0x30,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0x78,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x30,0x30,0x00,0x70,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7C,0xC6,0xDE,0xDE,0xDE,0xC0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x66,0x66,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x6C,0x66,0x66,0x66,0x6C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0x62,0x68,0x78,0x68,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF0,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xEE,0xFE,0xD6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x66,0x66,0x7C,0x78,0x6C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xCC,0xE0,0x38,0x1C,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0xB4,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xCC,0x98,0x30,0x62,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x60,0x30,0x18,0x0C,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x7C,0x66,0x66,0x66,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x38,0x6C,0x60,0xF0,0x60,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x6C,0x76,0x66,0x66,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x00,0x78,0x18,0x18,0x18,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xEC,0xFE,0xD6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xF8,0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xDC,0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xD8,0x6C,0x6C,0x60,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x30,0x7C,0x30,0x30,0x34,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC6,0xC6,0xD6,0xFE,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFC,0x98,0x30,0x64,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x03,0x0F,0x1E,0x3E,0x3F,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC0,0xF0,0x78,0x7C,0xFC,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x07,0x1F,0x3F,0x78,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xE0,0xF8,0xFC,0x1E,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x20,0x70,0xF8,0x7C,0x3F,0x1F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x1C,0x3E,0x7C,0xF8,0xF0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x03,0x05,0x0E,0x1C,0x38,0x70,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x51,0x71,0x71,0x71,0x7F,0x71,0x7F,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFA,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x07,0x0F,0x1D,0x39,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x23,0x27,0x2E,0x3C,0x38,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x47,0x47,0xE7,0x00,0x00,0xE0,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x02,0x02,0x04,0x04,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x8C,0x02,0x32,0x81,0x01,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x3E,0x3E,0x1F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7C,0x7C,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x83,0x87,0x0C,0x08,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC1,0xE1,0x30,0x10,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0F,0x1F,0x3F,0x7C,0xF8,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0xF0,0xF8,0x7C,0x3E,0x1C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x27,0x53,0xA9,0x54,0x2A,0x15,0x0A,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x80,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7F,0x71,0x7F,0x31,0x3F,0x31,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x44,0xEE,0x7C,0x38,0x7C,0xEE,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x08,0x14,0x22,0x14,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x47,0xE7,0x00,0x00,0xE0,0x47,0x27,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x05,0x0E,0x1C,0x38,0x70,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x8C,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x7C,0xFF,0xFF,0x80,0x80,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xF8,0xF8,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0xFC,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x30,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0x60,0x70,0x78,0x3C,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0xE0,0xF0,0xF8,0xFC,0x7C,0x7C,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x01,0x01,0x03,0x02,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0x80,0xC0,0x40,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x7C,0x79,0x7F,0x7F,0x7E,0x7E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFC,0x3E,0x9E,0x9E,0x3E,0x7E,0x7E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x07,0x04,0x3F,0x7F,0x00,0x35,0x35,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF0,0x10,0xFE,0xFF,0x00,0x56,0x56,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFE,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x3F,0x30,0x3F,0x30,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0C,0xFC,0x0C,0xFC,0x0C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x30,0x30,0x3E,0x3E,0x3E,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0C,0x0C,0x7C,0x7C,0x7C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0E,0x0E,0x1E,0x1F,0x3E,0x3E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x70,0x70,0x78,0xF8,0x7C,0x7C,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0xFE,0xFC,0xF8,0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7E,0x7E,0xFE,0xFC,0xF8,0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x35,0x35,0x35,0x35,0x35,0x35,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x56,0x56,0x56,0x56,0x56,0x56,0xFE,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x0C,0x1E,0x3E,0x38,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x07,0x08,0x10,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xE0,0xF8,0x3C,0x1E,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFE,0xFC,0xF8,0xF1,0xE3,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x1E,0x33,0x73,0xFE,0xFC,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x03,0x07,0x2E,0xFC,0xF8,0xFC,0x78,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x1C,0x0F,0x0F,0x1C,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x07,0x0F,0x1C,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xE0,0xF0,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x3F,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xC0,0xE0,0xF0,0xF8,0x7C,0x7C,0xFC,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x20,0x20,0x10,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE7,0xE1,0xC5,0xC8,0xC0,0xE3,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE0,0xC0,0x80,0x10,0x30,0xF0,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1C,0x3E,0x1F,0x1F,0x3F,0x72,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x38,0xF0,0xF0,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x1C,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x18,0x38,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3E,0x3E,0x3E,0x3E,0x3E,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x18,0x17,0x16,0x36,0x36,0x30,0x1F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x79,0xB6,0x32,0xBA,0x32,0x78,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x02,0x82,0x84,0x84,0x88,0x88,0x80,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x11,0x9C,0x1E,0x0F,0x1F,0x5F,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xC0,0xE4,0xF0,0xFC,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x01,0x03,0x03,0x07,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0x80,0xC0,0xFE,0xFE,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x20,0x70,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x04,0x0E,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0E,0x67,0xF3,0x50,0x02,0x7C,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xE7,0x06,0xF8,0x00,0x04,0x03,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x2C,0x2C,0x38,0x00,0x00,0xE0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x10,0x00,0x7F,0x9F,0x97,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x08,0x08,0x00,0xFE,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3F,0x1F,0x1F,0x1F,0x3F,0x3F,0x78,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0x3C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1E,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x80,0xC0,0xE0,0xF0,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x01,0x03,0x07,0x0F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x78,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
#define MAPPER_VERSION 0b01000001
|
||||
#define MAPPER_VERSION 0b01000000
|
||||
|
||||
#define MIRR_VERTICAL 0b00 // VRAM
|
||||
#define MIRR_HORIZONTAL 0b01 // VRAM
|
||||
|
@ -333,7 +74,9 @@ const unsigned char bootloader_chr[4096] = {
|
|||
#define PPUON (PPU[1] & 0x18) //PPU should operate
|
||||
#define Sprite16 (PPU[0] & 0x20) //Sprites 8x16/8x8
|
||||
|
||||
static uint8 prg_rom_mode, prg_ram_mode, bootloader;
|
||||
static void Rainbow2Reset(void);
|
||||
|
||||
static uint8 prg_rom_mode, prg_ram_mode, bootrom;
|
||||
static uint16 prg[11]; // 0: $5000, 1: $6000, 2: $7000, 3: $8000, 4: $9000, etc
|
||||
|
||||
static uint8 chr_chip, chr_spr_ext_mode, chr_mode;
|
||||
|
@ -346,8 +89,11 @@ static uint16 SPR_bank[64];
|
|||
static uint8 audio_output;
|
||||
static uint8 rx_address, tx_address, rx_index;
|
||||
|
||||
static uint32 PRGSIZE = 0;
|
||||
static uint32 CHRSIZE = 0;
|
||||
|
||||
static uint8 *WRAM = NULL;
|
||||
const uint32 WRAMSIZE = 128 * 1024; // max 128 KiB
|
||||
static int WRAMSIZE = 0; // max 512 KiB
|
||||
|
||||
static uint8 *FPGA_RAM = NULL;
|
||||
const uint32 FPGA_RAMSIZE = 8 * 1024;
|
||||
|
@ -359,7 +105,7 @@ static uint8 *DUMMY_CHRROM = NULL;
|
|||
const uint32 DUMMY_CHRROMSIZE = 8192 * 1024; // max 8192 MiB
|
||||
|
||||
static uint8 *CHRRAM = NULL;
|
||||
const uint32 CHRRAMSIZE = 128 * 1024; // max 128 KiB
|
||||
static int CHRRAMSIZE = 0; // max 512 KiB
|
||||
|
||||
extern uint8 *ExtraNTARAM;
|
||||
|
||||
|
@ -388,6 +134,11 @@ const uint32 PRG_FLASHROMSIZE = 8192 * 1024; // max 8MiB
|
|||
static uint8 *CHR_FLASHROM = NULL;
|
||||
const uint32 CHR_FLASHROMSIZE = 8192 * 1024; // max 8MiB
|
||||
|
||||
const bool S29AL008_TOP = false;
|
||||
const bool S29AL016_TOP = true;
|
||||
const bool S29JL032_TOP = false;
|
||||
const bool S29GL064S_TOP = false;
|
||||
|
||||
static SFORMAT FlashRegs[] =
|
||||
{
|
||||
{ &flash_mode, 2, "FMOD" },
|
||||
|
@ -479,7 +230,7 @@ static void Rainbow2IRQ(int a) {
|
|||
|
||||
if (!ppuon || sl >= 241)
|
||||
{
|
||||
// whenever rendering is off for any reason (vblank or forced disable
|
||||
// whenever rendering is off for any reason (vblank or forced disable)
|
||||
// the irq counter resets, as well as the inframe flag (easily verifiable from software)
|
||||
S_IRQcontrol &= ~0x40; // in-frame flag cleared
|
||||
S_IRQcontrol &= ~0x80; // pending IRQ flag cleared
|
||||
|
@ -564,7 +315,7 @@ static void Sync(void) {
|
|||
uint8 cart_chr_map;
|
||||
|
||||
// $8000-$ffff
|
||||
uint8 t_prg_rom_mode = bootloader ? PRG_ROM_MODE_3 : prg_rom_mode;
|
||||
uint8 t_prg_rom_mode = bootrom ? PRG_ROM_MODE_3 : prg_rom_mode;
|
||||
|
||||
// 32K
|
||||
if (t_prg_rom_mode == PRG_ROM_MODE_0)
|
||||
|
@ -626,8 +377,8 @@ static void Sync(void) {
|
|||
for (uint8 i = 0; i < 4; i++)
|
||||
{
|
||||
// PRG-ROM
|
||||
if (i == 3 && bootloader)
|
||||
setprg8r(0x11, 0xe000, 0x7FFF); // ~0);
|
||||
if (i == 3 && bootrom)
|
||||
setprg8r(0x13, 0xe000, 1);
|
||||
else
|
||||
if (!(prg[3 + i * 2] & 0x8000))
|
||||
setprg8r(0x11, 0x8000 + 0x2000 * i, prg[3 + i * 2] & 0x7fff);
|
||||
|
@ -658,7 +409,7 @@ static void Sync(void) {
|
|||
{
|
||||
// WRAM
|
||||
if (((prg[1] & 0xC000) >> 14) == 2)
|
||||
setprg8r(0x10, 0x6000, prg[1] & 0x03);
|
||||
setprg8r(0x10, 0x6000, prg[1] & 0x3f);
|
||||
// FPGA-RAM
|
||||
if (((prg[1] & 0xC000) >> 14) == 3)
|
||||
setprg8r(0x12, 0x6000, 0);
|
||||
|
@ -672,7 +423,7 @@ static void Sync(void) {
|
|||
{
|
||||
// WRAM
|
||||
if (((prg[1] & 0xC000) >> 14) == 2)
|
||||
setprg4r(0x10, 0x6000, prg[1] & 0x07);
|
||||
setprg4r(0x10, 0x6000, prg[1] & 0x7f);
|
||||
// FPGA-RAM
|
||||
if (((prg[1] & 0xC000) >> 14) == 3)
|
||||
setprg4r(0x12, 0x6000, prg[1] & 0x01);
|
||||
|
@ -682,7 +433,7 @@ static void Sync(void) {
|
|||
|
||||
// WRAM
|
||||
if (((prg[2] & 0xC000) >> 14) == 2)
|
||||
setprg4r(0x10, 0x7000, prg[2] & 0x07);
|
||||
setprg4r(0x10, 0x7000, prg[2] & 0x7f);
|
||||
// FPGA-RAM
|
||||
if (((prg[2] & 0xC000) >> 14) == 3)
|
||||
setprg4r(0x12, 0x7000, prg[2] & 0x01);
|
||||
|
@ -692,8 +443,8 @@ static void Sync(void) {
|
|||
}
|
||||
|
||||
// $5000-$5fff - 4K FPGA-RAM
|
||||
if (bootloader)
|
||||
setprg4r(0x11, 0x5000, 124);
|
||||
if (bootrom)
|
||||
setprg4r(0x13, 0x5000, 1);
|
||||
else
|
||||
setprg4r(0x12, 0x5000, prg[0] & 0x01);
|
||||
|
||||
|
@ -779,7 +530,7 @@ static void Sync(void) {
|
|||
|
||||
}
|
||||
|
||||
static DECLFW(Rainbow2SW) {
|
||||
static DECLFW(RNBW_ExpAudioWr) {
|
||||
if (A >= 0x41A0 && A <= 0x41A2)
|
||||
{
|
||||
vpsg1[A & 3] = V;
|
||||
|
@ -900,7 +651,7 @@ static DECLFR(FPGA_0x4800Rd)
|
|||
//return FPGA_RAM[(A & 0x7ff) + 0x1800];
|
||||
}
|
||||
|
||||
static DECLFR(Rainbow2Read) {
|
||||
static DECLFR(RNBW_0x4100Rd) {
|
||||
switch (A)
|
||||
{
|
||||
case 0x4100: return (prg_ram_mode << 6) | prg_rom_mode;
|
||||
|
@ -939,7 +690,7 @@ static DECLFR(Rainbow2Read) {
|
|||
}
|
||||
}
|
||||
|
||||
static DECLFW(Rainbow2Write) {
|
||||
static DECLFW(RNBW_0x4100Wr) {
|
||||
switch (A)
|
||||
{
|
||||
// Mapper configuration
|
||||
|
@ -1049,8 +800,9 @@ static DECLFW(Rainbow2Write) {
|
|||
}
|
||||
// Scanline IRQ
|
||||
case 0x4150: S_IRQlatch = V; break;
|
||||
case 0x4151: S_IRQcontrol = (S_IRQcontrol & 0x7F) | (V & 0x01); break;
|
||||
case 0x4152: S_IRQoffset = V > 169 ? 169 : V; break;
|
||||
case 0x4151: S_IRQcontrol |= 1; break;
|
||||
case 0x4152: S_IRQcontrol &= 0x7E; break;
|
||||
case 0x4153: S_IRQoffset = V > 169 ? 169 : V; break;
|
||||
// CPU Cycle IRQ
|
||||
case 0x4158: C_IRQLatch &= 0xFF00; C_IRQLatch |= V; C_IRQCount = C_IRQLatch; break;
|
||||
case 0x4159: C_IRQLatch &= 0x00FF; C_IRQLatch |= V << 8; C_IRQCount = C_IRQLatch; break;
|
||||
|
@ -1097,15 +849,8 @@ static DECLFW(Rainbow2Write) {
|
|||
rx_index = V;
|
||||
break;
|
||||
case 0x41FF:
|
||||
bootloader = V & 0x01;
|
||||
if (V == 0xff)
|
||||
{
|
||||
// init FPGA_RAM with PRG ROM data
|
||||
for (size_t i = 0; i < 4096; i++)
|
||||
{
|
||||
FPGA_RAM[4096 + i] = PRG_FLASHROM[0x7c000 + i];
|
||||
}
|
||||
}
|
||||
bootrom = V & 0x01;
|
||||
if (bootrom == 0) Rainbow2Reset(); // a bit hacky but does the job for testing
|
||||
Sync();
|
||||
break;
|
||||
case 0x4240:
|
||||
|
@ -1189,30 +934,42 @@ uint8 Rainbow2FlashID(uint8 chip, uint32 A) {
|
|||
// but some tests of the chip currently being used found it repeats in 512-byte patterns.
|
||||
// http://forums.nesdev.com/viewtopic.php?p=178728#p178728
|
||||
|
||||
uint32 flash_size;
|
||||
|
||||
if (chip == CHIP_TYPE_PRG) flash_size = ROM_size * 16;
|
||||
else if (chip == CHIP_TYPE_CHR) flash_size = VROM_size * 8;
|
||||
|
||||
uint32 aid = A & 0x1FF;
|
||||
switch (aid)
|
||||
{
|
||||
case 0: return 0xBF;
|
||||
case 1:
|
||||
case 0x00: return 0x01; // 0x01 = Cypress
|
||||
case 0x02:
|
||||
{
|
||||
switch (chip)
|
||||
switch (flash_size)
|
||||
{
|
||||
case CHIP_TYPE_PRG:
|
||||
switch (ROM_size * 16)
|
||||
{
|
||||
case 128: return 0xD5;
|
||||
case 256: return 0xD6;
|
||||
case 512: return 0xD7;
|
||||
default: return 0xFF;
|
||||
}
|
||||
case CHIP_TYPE_CHR:
|
||||
switch (VROM_size * 8)
|
||||
{
|
||||
case 128: return 0xD5;
|
||||
case 256: return 0xD6;
|
||||
case 512: return 0xD7;
|
||||
default: return 0xFF;
|
||||
}
|
||||
case 1024: return S29AL008_TOP ? 0xDA : 0x5B; // S29AL008: 0xDA = top boot block | 0x5B = bottom boot block
|
||||
case 2048: return S29AL016_TOP ? 0xC4 : 0x49; // S29AL016: 0xC4 = top boot block | 0x49 = bottom boot block
|
||||
case 4096: return 0x7E; // S29JL032
|
||||
case 8192: return 0x7E; // S29GL064S
|
||||
default: return 0xFF;
|
||||
}
|
||||
}
|
||||
case 0x1C:
|
||||
{
|
||||
switch (flash_size)
|
||||
{
|
||||
case 4096: return 0x0A; // S29JL032
|
||||
case 8192: return 0x10; // S29GL064S
|
||||
default: return 0xFF;
|
||||
}
|
||||
}
|
||||
case 0x1E:
|
||||
{
|
||||
switch (flash_size)
|
||||
{
|
||||
case 4096: return S29JL032_TOP ? 0x01 : 0x00; // S29JL032: 0x00 = bottom boot block | 0x01 = top boot block
|
||||
case 8192: return S29GL064S_TOP ? 0x01 : 0x00; // S29GL064S: 0x00 = bottom boot block | 0x01 = top boot block
|
||||
default: return 0xFF;
|
||||
}
|
||||
}
|
||||
default: return 0xFF;
|
||||
|
@ -1236,7 +993,7 @@ void Rainbow2FlashIDEnter(uint8 chip)
|
|||
if (flash_id[chip])
|
||||
return;
|
||||
flash_id[chip] = 1;
|
||||
if (bootloader)
|
||||
if (bootrom)
|
||||
SetReadHandler(0x8000, 0xDFFF, Rainbow2FlashPrgID);
|
||||
else
|
||||
SetReadHandler(0x8000, 0xFFFF, Rainbow2FlashPrgID);
|
||||
|
@ -1277,12 +1034,13 @@ void Rainbow2FlashIDExit(uint8 chip)
|
|||
|
||||
void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
||||
|
||||
uint32 command_addr = flash_addr & 0x7FFF;
|
||||
uint32 command_addr = flash_addr & 0x0FFF;
|
||||
|
||||
enum
|
||||
{
|
||||
flash_mode_READY = 0,
|
||||
flash_mode_COMMAND,
|
||||
flash_mode_UNLOCK_BYPASS,
|
||||
flash_mode_BYTE_WRITE,
|
||||
flash_mode_ERASE,
|
||||
};
|
||||
|
@ -1291,7 +1049,7 @@ void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
|||
{
|
||||
default:
|
||||
case flash_mode_READY:
|
||||
if (command_addr == 0x5555 && V == 0xAA)
|
||||
if (command_addr == 0x0AAA && V == 0xAA)
|
||||
{
|
||||
flash_mode[chip] = flash_mode_COMMAND;
|
||||
flash_sequence[chip] = 0;
|
||||
|
@ -1304,7 +1062,7 @@ void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
|||
case flash_mode_COMMAND:
|
||||
if (flash_sequence[chip] == 0)
|
||||
{
|
||||
if (command_addr == 0x2AAA && V == 0x55)
|
||||
if (command_addr == 0x0555 && V == 0x55)
|
||||
{
|
||||
flash_sequence[chip] = 1;
|
||||
}
|
||||
|
@ -1315,12 +1073,13 @@ void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
|||
}
|
||||
else if (flash_sequence[chip] == 1)
|
||||
{
|
||||
if (command_addr == 0x5555)
|
||||
if (command_addr == 0x0AAA)
|
||||
{
|
||||
flash_sequence[chip] = 0;
|
||||
switch (V)
|
||||
{
|
||||
default: flash_mode[chip] = flash_mode_READY; break;
|
||||
case 0x20: flash_mode[chip] = flash_mode_UNLOCK_BYPASS; break;
|
||||
case 0xA0: flash_mode[chip] = flash_mode_BYTE_WRITE; break;
|
||||
case 0x80: flash_mode[chip] = flash_mode_ERASE; break;
|
||||
case 0x90: Rainbow2FlashIDEnter(chip); flash_mode[chip] = flash_mode_READY; break;
|
||||
|
@ -1333,56 +1092,174 @@ void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
|||
else
|
||||
flash_mode[chip] = flash_mode_READY; // should be unreachable
|
||||
break;
|
||||
case flash_mode_UNLOCK_BYPASS:
|
||||
if (flash_sequence[chip] == 0)
|
||||
{
|
||||
switch (V)
|
||||
{
|
||||
case 0xA0: flash_sequence[chip] = 1; break;
|
||||
case 0x90: flash_sequence[chip] = 2; break;
|
||||
}
|
||||
}
|
||||
else if (flash_sequence[chip] == 1)
|
||||
{
|
||||
flash_sequence[chip] = 0;
|
||||
if (chip == CHIP_TYPE_PRG)
|
||||
{
|
||||
if (PRG_FLASHROM[flash_addr] == 0xff) PRG_FLASHROM[flash_addr] &= V;
|
||||
}
|
||||
else if (chip == CHIP_TYPE_CHR)
|
||||
{
|
||||
if (CHR_FLASHROM[flash_addr] == 0xff) CHR_FLASHROM[flash_addr] &= V;
|
||||
}
|
||||
}
|
||||
else if (flash_sequence[chip] == 2)
|
||||
{
|
||||
if (V == 0x00)
|
||||
{
|
||||
flash_sequence[chip] = 0;
|
||||
flash_mode[chip] = flash_mode_READY;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case flash_mode_BYTE_WRITE:
|
||||
if (chip == CHIP_TYPE_PRG)
|
||||
{
|
||||
PRG_FLASHROM[flash_addr] &= V;
|
||||
if (PRG_FLASHROM[flash_addr] == 0xff) PRG_FLASHROM[flash_addr] &= V;
|
||||
}
|
||||
else if (chip == CHIP_TYPE_CHR)
|
||||
{
|
||||
CHR_FLASHROM[flash_addr] &= V;
|
||||
if (CHR_FLASHROM[flash_addr] == 0xff) CHR_FLASHROM[flash_addr] &= V;
|
||||
}
|
||||
flash_mode[chip] = flash_mode_READY;
|
||||
break;
|
||||
case flash_mode_ERASE:
|
||||
if (flash_sequence[chip] == 0)
|
||||
{
|
||||
if (command_addr == 0x5555 && V == 0xAA)
|
||||
if (command_addr == 0x0AAA && V == 0xAA)
|
||||
flash_sequence[chip] = 1;
|
||||
else
|
||||
flash_mode[chip] = flash_mode_READY;
|
||||
}
|
||||
else if (flash_sequence[chip] == 1)
|
||||
{
|
||||
if (command_addr == 0x2AAA && V == 0x55)
|
||||
if (command_addr == 0x0555 && V == 0x55)
|
||||
flash_sequence[chip] = 2;
|
||||
else
|
||||
flash_mode[chip] = flash_mode_READY;
|
||||
}
|
||||
else if (flash_sequence[chip] == 2)
|
||||
{
|
||||
if (command_addr == 0x5555 && V == 0x10) // erase chip
|
||||
if (command_addr == 0x0AAA && V == 0x10) // erase chip
|
||||
{
|
||||
if (chip == CHIP_TYPE_PRG)
|
||||
{
|
||||
memset(PRG_FLASHROM, 0xFF, PRG_FLASHROMSIZE);
|
||||
}
|
||||
else if (chip == CHIP_TYPE_CHR)
|
||||
{
|
||||
memset(CHR_FLASHROM, 0xFF, CHR_FLASHROMSIZE);
|
||||
}
|
||||
|
||||
}
|
||||
else if (V == 0x30) // erase 4k sector
|
||||
else if (V == 0x30) // erase sectors
|
||||
{
|
||||
uint32 sector = flash_addr & 0x7F000;
|
||||
uint32 sector_offset = (flash_addr & 0xFF0000);
|
||||
uint8 sector_index = sector_offset >> 16;
|
||||
uint8 sector_size = 64;
|
||||
uint32 flash_size;
|
||||
|
||||
if (chip == CHIP_TYPE_PRG)
|
||||
{
|
||||
memset(PRG_FLASHROM + sector, 0xFF, 1024 * 4);
|
||||
}
|
||||
flash_size = ROM_size * 16;
|
||||
else if (chip == CHIP_TYPE_CHR)
|
||||
flash_size = VROM_size * 8;
|
||||
|
||||
switch (flash_size)
|
||||
{
|
||||
memset(CHR_FLASHROM + sector, 0xFF, 1024 * 4);
|
||||
case 1024: // S29AL008
|
||||
if (S29AL008_TOP && sector_index == 15)
|
||||
{
|
||||
if (flash_addr >= 0xF0000 && flash_addr <= 0xF7FFF) { sector_offset = 0xF0000; sector_size = 32; }
|
||||
else if (flash_addr >= 0xF8000 && flash_addr <= 0xF9FFF) { sector_offset = 0xF8000; sector_size = 8; }
|
||||
else if (flash_addr >= 0xFA000 && flash_addr <= 0xFBFFF) { sector_offset = 0xFA000; sector_size = 8; }
|
||||
else if (flash_addr >= 0xFC000 && flash_addr <= 0xFFFFF) { sector_offset = 0xFC000; sector_size = 16; }
|
||||
}
|
||||
else if (!S29AL008_TOP && sector_index == 0)
|
||||
{
|
||||
if (flash_addr >= 0x00000 && flash_addr <= 0x03FFF) { sector_offset = 0x00000; sector_size = 16; }
|
||||
else if (flash_addr >= 0x04000 && flash_addr <= 0x05FFF) { sector_offset = 0x04000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x06000 && flash_addr <= 0x07FFF) { sector_offset = 0x06000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x08000 && flash_addr <= 0x0FFFF) { sector_offset = 0x08000; sector_size = 32; }
|
||||
}
|
||||
break;
|
||||
case 2048: // S29AL016
|
||||
if (S29AL016_TOP && sector_index == 31)
|
||||
{
|
||||
if (flash_addr >= 0x1F0000 && flash_addr <= 0x1F7FFF) { sector_offset = 0xF0000; sector_size = 32; }
|
||||
else if (flash_addr >= 0x1F8000 && flash_addr <= 0x1F9FFF) { sector_offset = 0xF8000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x1FA000 && flash_addr <= 0x1FBFFF) { sector_offset = 0xFA000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x1FC000 && flash_addr <= 0x1FFFFF) { sector_offset = 0xFC000; sector_size = 16; }
|
||||
}
|
||||
else if (!S29AL016_TOP && sector_index == 0)
|
||||
{
|
||||
if (flash_addr >= 0x00000 && flash_addr <= 0x03FFF) { sector_offset = 0x00000; sector_size = 16; }
|
||||
else if (flash_addr >= 0x04000 && flash_addr <= 0x05FFF) { sector_offset = 0x04000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x06000 && flash_addr <= 0x07FFF) { sector_offset = 0x06000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x08000 && flash_addr <= 0x0FFFF) { sector_offset = 0x08000; sector_size = 32; }
|
||||
}
|
||||
break;
|
||||
case 4096: // S29JL032
|
||||
if (S29JL032_TOP && sector_index == 63)
|
||||
{
|
||||
if (flash_addr >= 0x3F0000 && flash_addr <= 0x3F1FFF) { sector_offset = 0x3F0000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3F2000 && flash_addr <= 0x3F3FFF) { sector_offset = 0x3F2000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3F4000 && flash_addr <= 0x3F5FFF) { sector_offset = 0x3F4000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3F6000 && flash_addr <= 0x3F7FFF) { sector_offset = 0x3F6000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3F8000 && flash_addr <= 0x3F9FFF) { sector_offset = 0x3F8000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3FA000 && flash_addr <= 0x3FBFFF) { sector_offset = 0x3FA000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3FC000 && flash_addr <= 0x3FDFFF) { sector_offset = 0x3FC000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x3FE000 && flash_addr <= 0x3FFFFF) { sector_offset = 0x3FE000; sector_size = 8; }
|
||||
|
||||
}
|
||||
else if (!S29JL032_TOP && sector_index == 0)
|
||||
{
|
||||
if (flash_addr >= 0x000000 && flash_addr <= 0x001FFF) { sector_offset = 0x000000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x002000 && flash_addr <= 0x003FFF) { sector_offset = 0x002000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x004000 && flash_addr <= 0x005FFF) { sector_offset = 0x004000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x006000 && flash_addr <= 0x007FFF) { sector_offset = 0x006000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x008000 && flash_addr <= 0x009FFF) { sector_offset = 0x008000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00A000 && flash_addr <= 0x00BFFF) { sector_offset = 0x00A000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00C000 && flash_addr <= 0x00DFFF) { sector_offset = 0x00C000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00E000 && flash_addr <= 0x00FFFF) { sector_offset = 0x00E000; sector_size = 8; }
|
||||
}
|
||||
break;
|
||||
case 8192: // S29GL064S
|
||||
if (!S29GL064S_TOP && sector_index == 0)
|
||||
{
|
||||
if (flash_addr >= 0x000000 && flash_addr <= 0x001FFF) { sector_offset = 0x000000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x002000 && flash_addr <= 0x003FFF) { sector_offset = 0x002000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x004000 && flash_addr <= 0x005FFF) { sector_offset = 0x004000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x006000 && flash_addr <= 0x007FFF) { sector_offset = 0x006000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x008000 && flash_addr <= 0x009FFF) { sector_offset = 0x008000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00A000 && flash_addr <= 0x00BFFF) { sector_offset = 0x00A000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00C000 && flash_addr <= 0x00DFFF) { sector_offset = 0x00C000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x00E000 && flash_addr <= 0x00FFFF) { sector_offset = 0x00E000; sector_size = 8; }
|
||||
}
|
||||
else if (S29GL064S_TOP && sector_index == 127)
|
||||
{
|
||||
if (flash_addr >= 0x7F0000 && flash_addr <= 0x7F1FFF) { sector_offset = 0x7F0000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7F2000 && flash_addr <= 0x7F3FFF) { sector_offset = 0x7F2000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7F4000 && flash_addr <= 0x7F5FFF) { sector_offset = 0x7F4000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7F6000 && flash_addr <= 0x7F7FFF) { sector_offset = 0x7F6000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7F8000 && flash_addr <= 0x7F9FFF) { sector_offset = 0x7F8000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7FA000 && flash_addr <= 0x7FBFFF) { sector_offset = 0x7FA000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7FC000 && flash_addr <= 0x7FDFFF) { sector_offset = 0x7FC000; sector_size = 8; }
|
||||
else if (flash_addr >= 0x7FE000 && flash_addr <= 0x7FFFFF) { sector_offset = 0x7FE000; sector_size = 8; }
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (chip == CHIP_TYPE_PRG)
|
||||
memset(PRG_FLASHROM + sector_offset, 0xFF, 1024 * sector_size);
|
||||
else if (chip == CHIP_TYPE_CHR)
|
||||
memset(CHR_FLASHROM + sector_offset, 0xFF, 1024 * sector_size);
|
||||
|
||||
}
|
||||
flash_mode[chip] = flash_mode_READY;
|
||||
}
|
||||
|
@ -1392,11 +1269,14 @@ void Rainbow2Flash(uint8 chip, uint32 flash_addr, uint8 V) {
|
|||
}
|
||||
}
|
||||
|
||||
static DECLFW(Rainbow2PrgFlash) {
|
||||
static DECLFW(RNBW_0x8000Wr) {
|
||||
if ((A < 0x6000) || A > (0xFFFF))
|
||||
return;
|
||||
|
||||
uint32 flash_addr = A;
|
||||
|
||||
uint8 t_prg_rom_mode = bootrom ? PRG_ROM_MODE_3 : prg_rom_mode;
|
||||
|
||||
if ((A >= 0x6000) & (A < 0x8000))
|
||||
{
|
||||
switch (prg_ram_mode)
|
||||
|
@ -1431,7 +1311,7 @@ static DECLFW(Rainbow2PrgFlash) {
|
|||
}
|
||||
else if ((A >= 0x8000) & (A <= 0xFFFF))
|
||||
{
|
||||
switch (prg_rom_mode)
|
||||
switch (t_prg_rom_mode)
|
||||
{
|
||||
case PRG_ROM_MODE_0:
|
||||
flash_addr &= 0x7FFF;
|
||||
|
@ -1546,7 +1426,7 @@ static void Rainbow2PPUWrite(uint32 A, uint8 V) {
|
|||
// NOTE: plus les bons modes ?
|
||||
case CHR_MODE_0:
|
||||
flash_addr &= 0x1FFF;
|
||||
flash_addr |= (chr[0] & 0xffff) << 13;
|
||||
flash_addr |= (chr[A >> 13] & 0xffff) << 13;
|
||||
break;
|
||||
case CHR_MODE_1:
|
||||
flash_addr &= 0xFFF;
|
||||
|
@ -1572,9 +1452,9 @@ static void Rainbow2PPUWrite(uint32 A, uint8 V) {
|
|||
}
|
||||
|
||||
static void Rainbow2Reset(void) {
|
||||
// PRG - 32K banks mapped to last PRG-ROM bank
|
||||
// PRG - 32K banks mapped to first PRG-ROM bank
|
||||
prg_rom_mode = PRG_ROM_MODE_0;
|
||||
prg[3] = 0x7FFF;
|
||||
prg[3] = 0;
|
||||
|
||||
// CHR - 8K banks mapped to first bank of CHR-ROM
|
||||
// extended sprite mode disabled
|
||||
|
@ -1617,7 +1497,8 @@ static void Rainbow2Reset(void) {
|
|||
static void Rainbow2Power(void) {
|
||||
|
||||
// mapper init
|
||||
bootloader = 0x00;
|
||||
if(MiscROMS) bootrom = 1;
|
||||
else bootrom = 0;
|
||||
Rainbow2Reset();
|
||||
|
||||
SetReadHandler(0x4800, 0xFFFF, CartBR);
|
||||
|
@ -1629,13 +1510,13 @@ static void Rainbow2Power(void) {
|
|||
FCEU_CheatAddRAM(0x1800 >> 10, 0x4800, FPGA_RAM);
|
||||
*/
|
||||
// mapper registers (writes)
|
||||
SetWriteHandler(0x4100, 0x47ff, Rainbow2Write);
|
||||
SetWriteHandler(0x4100, 0x47ff, RNBW_0x4100Wr);
|
||||
|
||||
// mapper registers (reads)
|
||||
SetReadHandler(0x4100, 0x47ff, Rainbow2Read);
|
||||
SetReadHandler(0x4100, 0x47ff, RNBW_0x4100Rd);
|
||||
|
||||
// audio expansion registers (writes)
|
||||
SetWriteHandler(0x41A0, 0x41A8, Rainbow2SW);
|
||||
SetWriteHandler(0x41A0, 0x41A8, RNBW_ExpAudioWr);
|
||||
|
||||
// FPGA WRAM @ $4800-$4fff (reads/writes)
|
||||
SetWriteHandler(0x4800, 0x4fff, FPGA_0x4800Wr);
|
||||
|
@ -1656,16 +1537,16 @@ static void Rainbow2Power(void) {
|
|||
flash_sequence[CHIP_TYPE_CHR] = 0;
|
||||
flash_id[CHIP_TYPE_PRG] = false;
|
||||
flash_id[CHIP_TYPE_CHR] = false;
|
||||
SetWriteHandler(0x8000, 0xFFFF, Rainbow2PrgFlash);
|
||||
SetWriteHandler(0x8000, 0xFFFF, RNBW_0x8000Wr);
|
||||
|
||||
// fill WRAM/FPGA_RAM/CHRRAM/DUMMY_CHRRAM/DUMMY_CHRROM with random values
|
||||
if (WRAM && RNBWbattery)
|
||||
if (WRAM && !RNBWbattery)
|
||||
FCEU_MemoryRand(WRAM, WRAMSIZE, false);
|
||||
|
||||
if (FPGA_RAM && RNBWbattery)
|
||||
if (FPGA_RAM && !RNBWbattery)
|
||||
FCEU_MemoryRand(FPGA_RAM, FPGA_RAMSIZE, false);
|
||||
|
||||
if (CHRRAM && RNBWbattery)
|
||||
if (CHRRAM && !RNBWbattery)
|
||||
FCEU_MemoryRand(CHRRAM, CHRRAMSIZE, false);
|
||||
|
||||
if (DUMMY_CHRRAM)
|
||||
|
@ -1674,10 +1555,20 @@ static void Rainbow2Power(void) {
|
|||
if (DUMMY_CHRROM)
|
||||
FCEU_MemoryRand(DUMMY_CHRROM, DUMMY_CHRROMSIZE, false);
|
||||
|
||||
// init FPGA RAM with bootloader CHR data
|
||||
for (size_t i = 0; i < 4096; i++)
|
||||
// init FPGA RAM with bootrom CHR data
|
||||
for (size_t i = 0; i < 0x1000; i++)
|
||||
{
|
||||
FPGA_RAM[i] = bootloader_chr[i];
|
||||
FPGA_RAM[i] = bootrom_chr[i];
|
||||
}
|
||||
|
||||
// init FPGA RAM with bootrom PRG data
|
||||
if (MiscROMS)
|
||||
{
|
||||
// init FPGA_RAM with MISC ROM data
|
||||
for (size_t i = 0; i < 0xE00; i++)
|
||||
{
|
||||
FPGA_RAM[0x1000 + i] = MiscROMS[i];
|
||||
}
|
||||
}
|
||||
|
||||
// ESP firmware
|
||||
|
@ -1960,7 +1851,7 @@ static void Rainbow2ESI(void) {
|
|||
|
||||
void NSFRainbow2_Init(void) {
|
||||
Rainbow2ESI();
|
||||
SetWriteHandler(0x8000, 0xbfff, Rainbow2SW);
|
||||
SetWriteHandler(0x8000, 0xbfff, RNBW_ExpAudioWr);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1976,13 +1867,34 @@ void RAINBOW2_Init(CartInfo *info) {
|
|||
// WRAM
|
||||
if (info->wram_size != 0)
|
||||
{
|
||||
WRAM = (uint8*)FCEU_gmalloc(WRAMSIZE);
|
||||
SetupCartPRGMapping(0x10, WRAM, WRAMSIZE, 1);
|
||||
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
|
||||
|
||||
if (RNBWbattery)
|
||||
if (info->wram_size > 0x80000)
|
||||
{
|
||||
info->addSaveGameBuf(WRAM, WRAMSIZE);
|
||||
WRAMSIZE = 0x80000; // maximum is 512KiB
|
||||
}
|
||||
else if (info->wram_size > 0x80000)
|
||||
{
|
||||
WRAMSIZE = 0x8000; // minimum is 32Kib
|
||||
}
|
||||
else
|
||||
{
|
||||
WRAMSIZE = info->wram_size & 0xF8000; // we need this to match the hardware as close as possible
|
||||
}
|
||||
|
||||
if (WRAMSIZE != 0)
|
||||
{
|
||||
WRAM = (uint8*)FCEU_gmalloc(WRAMSIZE);
|
||||
SetupCartPRGMapping(0x10, WRAM, WRAMSIZE, 1);
|
||||
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
|
||||
info->wram_size = WRAMSIZE;
|
||||
|
||||
if (RNBWbattery)
|
||||
{
|
||||
info->addSaveGameBuf(WRAM, WRAMSIZE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
info->wram_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2005,7 +1917,7 @@ void RAINBOW2_Init(CartInfo *info) {
|
|||
}
|
||||
|
||||
// copy PRG ROM into PRG_FLASHROM, use it instead of PRG ROM
|
||||
const uint32 PRGSIZE = ROM_size * 16 * 1024;
|
||||
PRGSIZE = ROM_size * 16 * 1024;
|
||||
for (uint32 w = 0, r = 0; w < PRG_FLASHROMSIZE; ++w)
|
||||
{
|
||||
PRG_FLASHROM[w] = ROM[r];
|
||||
|
@ -2018,11 +1930,33 @@ void RAINBOW2_Init(CartInfo *info) {
|
|||
// CHR-RAM
|
||||
if (info->vram_size != 0)
|
||||
{
|
||||
CHRRAM = (uint8*)FCEU_gmalloc(CHRRAMSIZE);
|
||||
SetupCartCHRMapping(0x11, CHRRAM, CHRRAMSIZE, 1);
|
||||
AddExState(CHRRAM, CHRRAMSIZE, 0, "CRAM");
|
||||
ExtraNTARAM = CHRRAM + 30 * 1024;
|
||||
AddExState(ExtraNTARAM, 2048, 0, "EXNR");
|
||||
if (info->vram_size > 0x80000)
|
||||
{
|
||||
CHRRAMSIZE = 0x80000; // maximum is 512KiB
|
||||
}
|
||||
else if (info->vram_size > 0x80000)
|
||||
{
|
||||
CHRRAMSIZE = 0x8000; // minimum is 32Kib
|
||||
}
|
||||
else
|
||||
{
|
||||
CHRRAMSIZE = info->vram_size & 0xF8000; // we need this to match the hardware as close as possible
|
||||
}
|
||||
|
||||
if (CHRRAMSIZE != 0)
|
||||
{
|
||||
CHRRAMSIZE = info->vram_size;
|
||||
CHRRAM = (uint8*)FCEU_gmalloc(CHRRAMSIZE);
|
||||
SetupCartCHRMapping(0x11, CHRRAM, CHRRAMSIZE, 1);
|
||||
AddExState(CHRRAM, CHRRAMSIZE, 0, "CRAM");
|
||||
ExtraNTARAM = CHRRAM + 30 * 1024;
|
||||
AddExState(ExtraNTARAM, 2048, 0, "EXNR");
|
||||
info->vram_size = CHRRAMSIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
info->vram_size = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2044,7 +1978,7 @@ void RAINBOW2_Init(CartInfo *info) {
|
|||
}
|
||||
|
||||
// copy CHR ROM into CHR_FLASHROM, use it instead of CHR ROM
|
||||
const uint32 CHRSIZE = VROM_size * 8 * 1024;
|
||||
CHRSIZE = VROM_size * 8 * 1024;
|
||||
for (uint32 w = 0, r = 0; w < CHR_FLASHROMSIZE; ++w)
|
||||
{
|
||||
CHR_FLASHROM[w] = VROM[r];
|
||||
|
@ -2062,6 +1996,12 @@ void RAINBOW2_Init(CartInfo *info) {
|
|||
SetupCartCHRMapping(0x10, DUMMY_CHRROM, DUMMY_CHRROMSIZE, 0);
|
||||
}
|
||||
|
||||
// BOOTROM
|
||||
if (info->misc_roms != 0 && MiscROMS)
|
||||
{
|
||||
SetupCartPRGMapping(0x13, MiscROMS, MiscROMS_size, 0);
|
||||
}
|
||||
|
||||
FFCEUX_PPURead = Rainbow2PPURead;
|
||||
FFCEUX_PPUWrite = Rainbow2PPUWrite;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "RNBW/easywsclient.hpp"
|
||||
#include "RNBW/mongoose.h"
|
||||
#include "RNBW/bootrom_chr.h"
|
||||
|
||||
#define CURL_STATICLIB
|
||||
#include "curl/curl.h"
|
||||
|
@ -22,6 +23,10 @@
|
|||
static uint8 const NO_WORKING_FILE = 0xff;
|
||||
static uint8 const NUM_FILE_PATHS = 3;
|
||||
static uint8 const NUM_FILES = 64;
|
||||
|
||||
static uint64 const ESP_FLASH_SIZE = 0x200000; // 2MiB - 0x200000
|
||||
static uint64 const SD_CARD_SIZE = 0x80000000; // 2GiB - 0x80000000
|
||||
|
||||
static uint8 const NUM_NETWORKS = 3;
|
||||
static uint8 const NUM_FAKE_NETWORKS = 5;
|
||||
static uint8 const SSID_MAX_LENGTH = 32;
|
||||
|
@ -39,6 +44,29 @@ struct NetworkInfo
|
|||
bool active;
|
||||
};
|
||||
|
||||
struct FileConfig
|
||||
{
|
||||
uint8 access_mode;
|
||||
uint8 drive;
|
||||
};
|
||||
|
||||
struct FileStruct
|
||||
{
|
||||
uint8 drive;
|
||||
std::string filename;
|
||||
std::vector<uint8> data;
|
||||
};
|
||||
|
||||
struct WorkingFile
|
||||
{
|
||||
bool active;
|
||||
uint8 config;
|
||||
uint8 auto_path;
|
||||
uint8 auto_file;
|
||||
uint32 offset;
|
||||
FileStruct *file;
|
||||
};
|
||||
|
||||
class BrokeStudioFirmware: public EspFirmware {
|
||||
public:
|
||||
BrokeStudioFirmware();
|
||||
|
@ -60,6 +88,7 @@ private:
|
|||
BUFFER_CLEAR_RX_TX,
|
||||
BUFFER_DROP_FROM_ESP,
|
||||
ESP_GET_FIRMWARE_VERSION,
|
||||
ESP_FACTORY_SETTINGS,
|
||||
ESP_RESTART,
|
||||
|
||||
// WIFI CMDS
|
||||
|
@ -84,9 +113,10 @@ private:
|
|||
SERVER_PING,
|
||||
SERVER_SET_PROTOCOL,
|
||||
SERVER_GET_SETTINGS,
|
||||
SERVER_GET_CONFIG_SETTINGS,
|
||||
SERVER_SET_SETTINGS,
|
||||
SERVER_RESTORE_SETTINGS,
|
||||
SERVER_GET_SAVED_SETTINGS,
|
||||
SERVER_SET_SAVED_SETTINGS,
|
||||
SERVER_RESTORE_SAVED_SETTINGS,
|
||||
SERVER_CONNECT,
|
||||
SERVER_DISCONNECT,
|
||||
SERVER_SEND_MSG,
|
||||
|
@ -113,6 +143,7 @@ private:
|
|||
FILE_COUNT,
|
||||
FILE_GET_LIST,
|
||||
FILE_GET_FREE_ID,
|
||||
FILE_GET_FS_INFO,
|
||||
FILE_GET_INFO,
|
||||
FILE_DOWNLOAD,
|
||||
FILE_FORMAT,
|
||||
|
@ -124,6 +155,7 @@ private:
|
|||
READY,
|
||||
DEBUG_LEVEL,
|
||||
ESP_FIRMWARE_VERSION,
|
||||
ESP_FACTORY_RESET,
|
||||
|
||||
// WIFI / AP CMDS
|
||||
WIFI_STATUS,
|
||||
|
@ -155,10 +187,19 @@ private:
|
|||
FILE_DATA,
|
||||
FILE_COUNT,
|
||||
FILE_ID,
|
||||
FILE_FS_INFO,
|
||||
FILE_INFO,
|
||||
FILE_DOWNLOAD,
|
||||
};
|
||||
|
||||
// ESP factory reset result codes
|
||||
enum class esp_factory_reset : uint8 {
|
||||
SUCCESS = 0,
|
||||
ERROR_WHILE_RESETTING_CONFIG = 1,
|
||||
ERROR_WHILE_DELETING_TWEB = 2,
|
||||
ERROR_WHILE_DELETING_WEB = 3
|
||||
};
|
||||
|
||||
enum class server_protocol_t : uint8 {
|
||||
WEBSOCKET,
|
||||
WEBSOCKET_SECURED,
|
||||
|
@ -176,9 +217,12 @@ private:
|
|||
|
||||
// FILE_CONFIG
|
||||
enum class file_config_flags_t : uint8 {
|
||||
ACCESS_MODE = 1,
|
||||
ACCESS_MODE_MASK = 1,
|
||||
ACCESS_MODE_AUTO = 0,
|
||||
ACCESS_MODE_MANUAL = 1
|
||||
ACCESS_MODE_MANUAL = 1,
|
||||
DESTINATION_MASK = 2,
|
||||
DESTINATION_ESP = 0,
|
||||
DESTINATION_SD = 2,
|
||||
};
|
||||
|
||||
enum class file_delete_results_t : uint8 {
|
||||
|
@ -212,12 +256,18 @@ private:
|
|||
};
|
||||
|
||||
void processBufferedMessage();
|
||||
void readFile(uint8 path, uint8 file, uint8 n, uint32 offset);
|
||||
FileConfig BrokeStudioFirmware::parseFileConfig(uint8 config);
|
||||
int findFile(uint8 drive, std::string filename);
|
||||
int findPath(uint8 drive, std::string path);
|
||||
std::string getAutoFilename(uint8 path, uint8 file);
|
||||
void readFile(uint8 n);
|
||||
template<class I>
|
||||
void writeFile(uint8 path, uint8 file, uint32 offset, I data_begin, I data_end);
|
||||
uint8 getFreeFileId(uint8 path) const;
|
||||
void saveFiles() const;
|
||||
void writeFile(I data_begin, I data_end);
|
||||
void saveFiles();
|
||||
void _saveFiles(uint8 drive, char const* filename);
|
||||
void loadFiles();
|
||||
void _loadFiles(uint8 drive, char const* filename);
|
||||
void clearFiles(uint8 drive);
|
||||
|
||||
template<class I>
|
||||
void sendMessageToServer(I begin, I end);
|
||||
|
@ -248,12 +298,10 @@ private:
|
|||
std::deque<uint8> tx_buffer;
|
||||
std::deque<std::deque<uint8>> tx_messages;
|
||||
|
||||
std::array<std::array<std::vector<uint8>, NUM_FILES>, NUM_FILE_PATHS> files;
|
||||
std::array<std::array<bool, NUM_FILES>, NUM_FILE_PATHS> file_exists;
|
||||
uint32 file_offset = 0;
|
||||
uint8 working_file_config = 0;
|
||||
uint8 working_path = 0;
|
||||
uint8 working_file = NO_WORKING_FILE;
|
||||
bool isEspFlashFilePresent = false;
|
||||
bool isSdCardFilePresent = false;
|
||||
WorkingFile working_file;
|
||||
std::vector<FileStruct> files;
|
||||
|
||||
std::array<NetworkInfo, NUM_NETWORKS> networks;
|
||||
|
||||
|
@ -264,7 +312,7 @@ private:
|
|||
uint16_t server_settings_port = 0;
|
||||
|
||||
uint8 debug_config = 0;
|
||||
uint8 wifi_config = 3;
|
||||
uint8 wifi_config = 1;
|
||||
|
||||
easywsclient::WebSocket::pointer socket = nullptr;
|
||||
std::thread socket_close_thread;
|
||||
|
|
|
@ -52,6 +52,7 @@ struct CartInfo
|
|||
uint32 CRC32; // Should be set by the iNES/UNIF loading
|
||||
// code, used by mapper/board code, maybe
|
||||
// other code in the future.
|
||||
int misc_roms;
|
||||
|
||||
CartInfo(void)
|
||||
{
|
||||
|
@ -77,6 +78,7 @@ struct CartInfo
|
|||
battery_vram_size = 0;
|
||||
memset( MD5, 0, sizeof(MD5));
|
||||
CRC32 = 0;
|
||||
misc_roms = 0;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
20
src/ines.cpp
20
src/ines.cpp
|
@ -50,6 +50,7 @@ uint8 *trainerpoo = NULL;
|
|||
uint8 *ROM = NULL;
|
||||
uint8 *VROM = NULL;
|
||||
uint8 *ExtraNTARAM = NULL;
|
||||
uint8 *MiscROMS = NULL;
|
||||
iNES_HEADER head;
|
||||
|
||||
static CartInfo iNESCart;
|
||||
|
@ -58,6 +59,7 @@ uint8 Mirroring = 0;
|
|||
uint8 MirroringAs2bits = 0;
|
||||
uint32 ROM_size = 0;
|
||||
uint32 VROM_size = 0;
|
||||
uint32 MiscROMS_size = 0;
|
||||
char LoadedRomFName[4096]; //mbg merge 7/17/06 added
|
||||
char LoadedRomFNamePatchToUse[4096];
|
||||
|
||||
|
@ -117,6 +119,10 @@ void iNESGI(GI h) { //bbit edited: removed static keyword
|
|||
FCEU_free(VROM);
|
||||
VROM = NULL;
|
||||
}
|
||||
if (MiscROMS) {
|
||||
FCEU_free(MiscROMS);
|
||||
MiscROMS = NULL;
|
||||
}
|
||||
if (trainerpoo) {
|
||||
free(trainerpoo);
|
||||
trainerpoo = NULL;
|
||||
|
@ -798,8 +804,8 @@ BMAPPINGLocal bmap[] = {
|
|||
|
||||
{"KONAMI QTAi Board", 547, QTAi_Init },
|
||||
|
||||
{"RAINBOW2", 682, RAINBOW2_Init },
|
||||
{"RAINBOW13", 3872, RAINBOW13_Init },
|
||||
{"RAINBOW2", 3873, RAINBOW2_Init },
|
||||
|
||||
{"", 0, NULL}
|
||||
};
|
||||
|
@ -826,6 +832,7 @@ int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode) {
|
|||
iNESCart.vram_size = (head.VRAM_size & 0x0F)?(64 << (head.VRAM_size & 0x0F)):0;
|
||||
iNESCart.battery_vram_size = (head.VRAM_size & 0xF0)?(64 << ((head.VRAM_size & 0xF0)>>4)):0;
|
||||
iNESCart.submapper = head.ROM_type3 >> 4;
|
||||
iNESCart.misc_roms = head.misc_roms & 0x03;
|
||||
}
|
||||
|
||||
MapperNo = (head.ROM_type >> 4);
|
||||
|
@ -870,6 +877,10 @@ int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode) {
|
|||
VROM_size = ((1 << (head.VROM_size >> 2)) * ((head.VROM_size & 0b11) * 2 + 1)) >> 13;
|
||||
}
|
||||
|
||||
if (iNES2 && iNESCart.misc_roms != 0) {
|
||||
MiscROMS_size = fp->size - (ROM_size * 0x4000 + VROM_size * 0x2000 + 0x10);
|
||||
}
|
||||
|
||||
int round = true;
|
||||
for (int i = 0; i != sizeof(not_power2) / sizeof(not_power2[0]); ++i) {
|
||||
//for games not to the power of 2, so we just read enough
|
||||
|
@ -956,6 +967,13 @@ int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode) {
|
|||
if (VROM_size)
|
||||
FCEU_fread(VROM, 0x2000, VROM_size, fp);
|
||||
|
||||
if (iNES2 && iNESCart.misc_roms != 0 && MiscROMS_size)
|
||||
{
|
||||
MiscROMS = (uint8*)FCEU_malloc(MiscROMS_size);
|
||||
memset(MiscROMS, 0xFF, MiscROMS_size);
|
||||
FCEU_fread(MiscROMS, MiscROMS_size, 1, fp);
|
||||
}
|
||||
|
||||
md5_starts(&md5);
|
||||
md5_update(&md5, ROM, ROM_size << 14);
|
||||
|
||||
|
|
|
@ -42,8 +42,10 @@ public:
|
|||
//mbg merge 6/29/06
|
||||
extern uint8 *ROM;
|
||||
extern uint8 *VROM;
|
||||
extern uint8 *MiscROMS;
|
||||
extern uint32 VROM_size;
|
||||
extern uint32 ROM_size;
|
||||
extern uint32 MiscROMS_size;
|
||||
extern uint8 *ExtraNTARAM;
|
||||
extern uint8 **VPageR;
|
||||
extern int iNesSave(void); //bbit Edited: line added
|
||||
|
|
Loading…
Reference in New Issue