Compare commits
20 Commits
asciiclean
...
mem_compac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d229719d0c | ||
|
|
096ad71b4e | ||
|
|
aa29d483eb | ||
|
|
dc83f998c7 | ||
|
|
369667e154 | ||
|
|
4a083cbea3 | ||
|
|
edf204ac24 | ||
|
|
0c378a9f7c | ||
|
|
55e3468f74 | ||
|
|
78e9dce5ea | ||
|
|
eaf0bda3ee | ||
|
|
d58d3439ec | ||
|
|
b5f111fa41 | ||
|
|
6508530384 | ||
|
|
e4364eedb1 | ||
|
|
74312e08e1 | ||
|
|
09f42acfc8 | ||
|
|
70984ebd00 | ||
|
|
cafe5b8efd | ||
|
|
a1e89d9528 |
4
.ditz-config
Normal file
4
.ditz-config
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/config
|
||||||
|
name: David
|
||||||
|
email: david@optixx.org
|
||||||
|
issue_dir: bugs
|
||||||
18
bugs/issue-33e57a7c3ac89afc2e37880441fe0eeec05e2b3f.yaml
Normal file
18
bugs/issue-33e57a7c3ac89afc2e37880441fe0eeec05e2b3f.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/issue
|
||||||
|
title: Test
|
||||||
|
desc: Test
|
||||||
|
type: :bugfix
|
||||||
|
component: snesram
|
||||||
|
release:
|
||||||
|
reporter: David <david@optixx.org>
|
||||||
|
status: :unstarted
|
||||||
|
disposition:
|
||||||
|
creation_time: 2009-04-20 18:13:29.104365 Z
|
||||||
|
references: []
|
||||||
|
|
||||||
|
id: 33e57a7c3ac89afc2e37880441fe0eeec05e2b3f
|
||||||
|
log_events:
|
||||||
|
- - 2009-04-20 18:13:33.543384 Z
|
||||||
|
- David <david@optixx.org>
|
||||||
|
- created
|
||||||
|
- nope
|
||||||
8
bugs/project.yaml
Normal file
8
bugs/project.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/project
|
||||||
|
name: snesram
|
||||||
|
version: "0.5"
|
||||||
|
components:
|
||||||
|
- !ditz.rubyforge.org,2008-03-06/component
|
||||||
|
name: snesram
|
||||||
|
releases: []
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ AVRDUDE_PROGRAMMER = stk500v2
|
|||||||
|
|
||||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||||
|
|
||||||
AVRDUDE_PORT = /dev/tty.PL2303-00002006
|
AVRDUDE_PORT = /dev/tty.PL2303-00001124
|
||||||
|
|
||||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
# Revision: $Id: checksize 83 2006-01-05 22:20:53Z cs $
|
# Revision: $Id: checksize 83 2006-01-05 22:20:53Z cs $
|
||||||
|
|
||||||
error=0
|
error=0
|
||||||
codelimit=8192 # default value
|
codelimit=2048 # default value
|
||||||
datalimit=992 # default value; leave 32 bytes for stack
|
datalimit=96 # default value; leave 32 bytes for stack
|
||||||
|
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
codelimit="$2"
|
codelimit="$2"
|
||||||
|
|||||||
@@ -39,14 +39,72 @@ extern FILE uart_stdout;
|
|||||||
#define LED_PORT PORTD
|
#define LED_PORT PORTD
|
||||||
#define LED_DIR DDRD
|
#define LED_DIR DDRD
|
||||||
|
|
||||||
#define FILENAME "sprite.raw"
|
//#define FILENAME "sprite.raw" //ok
|
||||||
|
//#define FILENAME "ascii.smc" //ok
|
||||||
|
//#define FILENAME "rom.smc" //ok
|
||||||
|
//#define FILENAME "supert.smc"
|
||||||
|
//#define FILENAME "vortex.smc"
|
||||||
|
//#define FILENAME "mrdo.smc"
|
||||||
|
//#define FILENAME "spacei.smc"
|
||||||
|
//#define FILENAME "bank01.smc" //ok
|
||||||
|
//#define FILENAME "bank02.smc" //ok
|
||||||
|
//#define FILENAME "bank03.smc" //ok
|
||||||
|
//#define FILENAME "bank04.smc" //ok
|
||||||
|
//#define FILENAME "bank05.smc" //ok
|
||||||
|
//#define FILENAME "bank06.smc" //ok
|
||||||
|
//#define FILENAME "bank07.smc" //ok
|
||||||
|
//#define FILENAME "banklo.smc" //ok
|
||||||
|
//#define FILENAME "bankhi.smc" //ok
|
||||||
|
//#define FILENAME "vram2.smc" //ok
|
||||||
|
//#define FILENAME "super02.smc"
|
||||||
|
#define FILENAME "crc.smc"
|
||||||
|
//#define FILENAME "banks.smc"
|
||||||
|
|
||||||
|
#define ROMSIZE 4
|
||||||
|
#define DUMPNAME "dump256.smc"
|
||||||
#define BUFFER_SIZE 512
|
#define BUFFER_SIZE 512
|
||||||
#define BLOCKS 512
|
#define BLOCKS (ROMSIZE << 8)
|
||||||
#define MEMSIZE 0x80000
|
#define MEMSIZE 0x80000
|
||||||
|
|
||||||
uint8_t read_buffer[BUFFER_SIZE];
|
uint8_t read_buffer[BUFFER_SIZE];
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t crc_xmodem_update (uint16_t crc, uint8_t data)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
crc = crc ^ ((uint16_t)data << 8);
|
||||||
|
for (i=0; i<8; i++)
|
||||||
|
{
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t do_crc(uint8_t * data,uint16_t size)
|
||||||
|
{
|
||||||
|
uint16_t crc =0;
|
||||||
|
uint16_t i;
|
||||||
|
for (i=0; i<size; i++){
|
||||||
|
crc = crc_xmodem_update(crc,data[i]);
|
||||||
|
//printf("%x : %x\n",crc,data[i]);
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t do_crc_update(uint16_t crc,uint8_t * data,uint16_t size)
|
||||||
|
{
|
||||||
|
uint16_t i;
|
||||||
|
for (i=0; i<size; i++)
|
||||||
|
crc = crc_xmodem_update(crc,data[i]);
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
|
void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
|
||||||
uint16_t i,j;
|
uint16_t i,j;
|
||||||
uint16_t sum = 0;
|
uint16_t sum = 0;
|
||||||
@@ -101,6 +159,17 @@ void spi_master_transmit(unsigned char cData)
|
|||||||
while(!(SPSR & (1<<SPIF)));
|
while(!(SPSR & (1<<SPIF)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void sram_set_addr(uint32_t addr)
|
||||||
|
{
|
||||||
|
spi_master_transmit((uint8_t)(addr>>16));
|
||||||
|
spi_master_transmit((uint8_t)(addr>>8));
|
||||||
|
spi_master_transmit((uint8_t)(addr>>0));
|
||||||
|
|
||||||
|
LATCH_PORT |= (1<<S_LATCH);
|
||||||
|
LATCH_PORT &= ~(1<<S_LATCH);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t sram_read(uint32_t addr)
|
uint8_t sram_read(uint32_t addr)
|
||||||
{
|
{
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
@@ -217,8 +286,9 @@ int main(void)
|
|||||||
uint8_t fat_attrib = 0;
|
uint8_t fat_attrib = 0;
|
||||||
uint32_t fat_size = 0;
|
uint32_t fat_size = 0;
|
||||||
uint32_t rom_addr = 0;
|
uint32_t rom_addr = 0;
|
||||||
uint32_t skip_block = 0;
|
uint8_t bank_cnt = 0;
|
||||||
|
uint16_t crc = 0;
|
||||||
|
uint16_t block_cnt;
|
||||||
uart_init();
|
uart_init();
|
||||||
stdout = &uart_stdout;
|
stdout = &uart_stdout;
|
||||||
|
|
||||||
@@ -228,19 +298,37 @@ int main(void)
|
|||||||
spi_init();
|
spi_init();
|
||||||
printf("SPI Init\n");
|
printf("SPI Init\n");
|
||||||
|
|
||||||
|
#if 0
|
||||||
//sram_clear(0x000000, 0x400000);
|
uint8_t t[] = "david";
|
||||||
//printf("sram_clear\n");
|
printf("Test CRC %x\n",do_crc(t,5));
|
||||||
|
while(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
//printf("read 0x0f0f\n");
|
|
||||||
//sram_read(0x0f0f);
|
#if 0
|
||||||
//printf("write 0x0f0f\n");
|
sram_clear(0x000000, 0x80000);
|
||||||
//sram_write(0x0f0f,0xaa);
|
printf("sram_clear\n");
|
||||||
//while(1);
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
printf("read 0x0f0f\n");
|
||||||
|
sram_read(0x0f0f);
|
||||||
|
printf("write 0x0f0f\n");
|
||||||
|
sram_write(0x0f0f,0xaa);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
rom_addr = 0x4aaaa;
|
||||||
|
printf("write %lx\n",rom_addr);
|
||||||
|
sram_set_addr(rom_addr);
|
||||||
|
while(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
while ( mmc_init() !=0) {
|
while ( mmc_init() !=0) {
|
||||||
printf("No sdcard...\n");
|
printf("No sdcard...\n");
|
||||||
}
|
}
|
||||||
printf("MMC Init sone\n");
|
printf("MMC Init done\n");
|
||||||
fat_init(read_buffer);
|
fat_init(read_buffer);
|
||||||
printf("FAT Init done.\n");
|
printf("FAT Init done.\n");
|
||||||
rom_addr = 0x000000;
|
rom_addr = 0x000000;
|
||||||
@@ -253,27 +341,91 @@ int main(void)
|
|||||||
read_buffer) == 1) {
|
read_buffer) == 1) {
|
||||||
|
|
||||||
|
|
||||||
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
for (block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||||
fat_read_file (fat_cluster,read_buffer,block_cnt);
|
fat_read_file (fat_cluster,read_buffer,block_cnt);
|
||||||
if (block_cnt % 16 == 0)
|
|
||||||
printf("Write Ram 0x%lx Skipped %li\n",rom_addr,skip_block);
|
|
||||||
|
|
||||||
if (sram_check(read_buffer,512))
|
if (block_cnt && block_cnt % 64 == 0){
|
||||||
sram_copy(rom_addr,read_buffer,512);
|
printf("Write Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||||
else
|
bank_cnt++;
|
||||||
skip_block +=1;
|
crc = 0;
|
||||||
|
}
|
||||||
|
crc = do_crc_update(crc,read_buffer,512);
|
||||||
|
sram_copy(rom_addr,read_buffer,512);
|
||||||
rom_addr += 512;
|
rom_addr += 512;
|
||||||
}
|
}
|
||||||
printf("Done 0x%lx Skipped %li\n",rom_addr,skip_block);
|
printf("Write Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||||
|
printf("Done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printf("Dump Headern\r");
|
||||||
|
rom_addr = 0x8000-512;
|
||||||
|
sram_read_buffer(rom_addr,read_buffer,512);
|
||||||
|
dump_packet(rom_addr,512,read_buffer);
|
||||||
|
|
||||||
|
#if 0
|
||||||
printf("Dump Memory\n\r");
|
printf("Dump Memory\n\r");
|
||||||
rom_addr = 0x000000;
|
rom_addr = 0x000000;
|
||||||
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
for (uint16_t block_cnt=0; block_cnt < 64; block_cnt++) {
|
||||||
sram_read_buffer(rom_addr,read_buffer,512);
|
sram_read_buffer(rom_addr,read_buffer,512);
|
||||||
dump_packet(rom_addr,512,read_buffer);
|
dump_packet(rom_addr,512,read_buffer);
|
||||||
rom_addr += 512;
|
rom_addr += 512;
|
||||||
}
|
}
|
||||||
printf("\nDone 0x%lx\n",rom_addr);
|
printf("\nDone 0x%lx\n",rom_addr);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
block_cnt = 0;
|
||||||
|
crc = 0;
|
||||||
|
bank_cnt=0x00;
|
||||||
|
rom_addr = 0x000000;
|
||||||
|
for (block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||||
|
sram_read_buffer(rom_addr,read_buffer,512);
|
||||||
|
if (block_cnt && block_cnt % 64 == 0){
|
||||||
|
printf("Read Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||||
|
bank_cnt++;
|
||||||
|
crc = 0;
|
||||||
|
}
|
||||||
|
crc = do_crc_update(crc,read_buffer,512);
|
||||||
|
rom_addr += 512;
|
||||||
|
}
|
||||||
|
printf("Read Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
printf("Look for %s\n",DUMPNAME);
|
||||||
|
|
||||||
|
fat_cluster = 0;
|
||||||
|
fat_attrib = 0;
|
||||||
|
fat_size = 0;
|
||||||
|
|
||||||
|
if (fat_search_file((uint8_t*)DUMPNAME,
|
||||||
|
&fat_cluster,
|
||||||
|
&fat_size,
|
||||||
|
&fat_attrib,
|
||||||
|
read_buffer) == 1) {
|
||||||
|
|
||||||
|
|
||||||
|
printf("Found %s\n",DUMPNAME);
|
||||||
|
rom_addr = 0x000000;
|
||||||
|
bank_cnt =0;
|
||||||
|
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||||
|
printf("Write 1");
|
||||||
|
sram_read_buffer(rom_addr,read_buffer,512);
|
||||||
|
printf("Write 2");
|
||||||
|
fat_write_file (fat_cluster,read_buffer,block_cnt);
|
||||||
|
if (block_cnt % 64 == 0){
|
||||||
|
bank_cnt++;
|
||||||
|
}
|
||||||
|
printf("Write File Bank: 0x%x Addr: 0x%lx Skipped: %li\n",bank_cnt,rom_addr,skip_block);
|
||||||
|
rom_addr += 512;
|
||||||
|
}
|
||||||
|
printf("Done 0x%lx Skipped %li\n",rom_addr,skip_block);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
sram_snes_mode();
|
sram_snes_mode();
|
||||||
printf("\nEnter Snes mode\n");
|
printf("\nEnter Snes mode\n");
|
||||||
while(1);
|
while(1);
|
||||||
|
|||||||
263
project.tmproj
263
project.tmproj
@@ -1,263 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>currentDocument</key>
|
|
||||||
<string>zsnes/docs/srcinfo.txt</string>
|
|
||||||
<key>documents</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>expanded</key>
|
|
||||||
<true/>
|
|
||||||
<key>name</key>
|
|
||||||
<string>snesram</string>
|
|
||||||
<key>regexFolderFilter</key>
|
|
||||||
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
|
|
||||||
<key>sourceDirectory</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
<key>fileHierarchyDrawerWidth</key>
|
|
||||||
<integer>200</integer>
|
|
||||||
<key>metaData</key>
|
|
||||||
<dict>
|
|
||||||
<key>zsnes/docs/README.LINUX</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>zsnes/docs/README.SVN</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>zsnes/docs/authors.txt</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>zsnes/docs/install.txt</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>132</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/docs/license.txt</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>zsnes/docs/opengl.txt</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>zsnes/docs/srcinfo.txt</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>13</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/src/chips/dsp4emu.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>113</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/src/chips/fxtable.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>zsnes/src/chips/seta10.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>453</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/src/cpu/dsp.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>32</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/src/cpu/execute.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>246</integer>
|
|
||||||
</dict>
|
|
||||||
<key>zsnes/src/macros.mac</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>zsnes/src/mmlib/osx.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>1639</integer>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>openDocuments</key>
|
|
||||||
<array>
|
|
||||||
<string>zsnes/src/macros.mac</string>
|
|
||||||
<string>zsnes/src/cpu/dsp.asm</string>
|
|
||||||
<string>zsnes/src/cpu/execute.asm</string>
|
|
||||||
<string>zsnes/src/mmlib/osx.c</string>
|
|
||||||
<string>zsnes/src/chips/fxtable.asm</string>
|
|
||||||
<string>zsnes/src/chips/seta10.c</string>
|
|
||||||
<string>zsnes/src/chips/dsp4emu.c</string>
|
|
||||||
<string>zsnes/docs/authors.txt</string>
|
|
||||||
<string>zsnes/docs/install.txt</string>
|
|
||||||
<string>zsnes/docs/license.txt</string>
|
|
||||||
<string>zsnes/docs/opengl.txt</string>
|
|
||||||
<string>zsnes/docs/README.LINUX</string>
|
|
||||||
<string>zsnes/docs/README.SVN</string>
|
|
||||||
<string>zsnes/docs/srcinfo.txt</string>
|
|
||||||
</array>
|
|
||||||
<key>showFileHierarchyDrawer</key>
|
|
||||||
<false/>
|
|
||||||
<key>showFileHierarchyPanel</key>
|
|
||||||
<true/>
|
|
||||||
<key>treeState</key>
|
|
||||||
<dict>
|
|
||||||
<key>snesram</key>
|
|
||||||
<dict>
|
|
||||||
<key>isExpanded</key>
|
|
||||||
<true/>
|
|
||||||
<key>subItems</key>
|
|
||||||
<dict>
|
|
||||||
<key>pyusb</key>
|
|
||||||
<dict>
|
|
||||||
<key>isExpanded</key>
|
|
||||||
<true/>
|
|
||||||
<key>subItems</key>
|
|
||||||
<dict/>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>windowFrame</key>
|
|
||||||
<string>{{2, 60}, {738, 818}}</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
BIN
roms/anime.smc
Normal file
BIN
roms/anime.smc
Normal file
Binary file not shown.
BIN
roms/bank01.smc
Normal file
BIN
roms/bank01.smc
Normal file
Binary file not shown.
BIN
roms/bank02.smc
Normal file
BIN
roms/bank02.smc
Normal file
Binary file not shown.
BIN
roms/bank03.smc
Normal file
BIN
roms/bank03.smc
Normal file
Binary file not shown.
BIN
roms/bank04.smc
Normal file
BIN
roms/bank04.smc
Normal file
Binary file not shown.
BIN
roms/bank05.smc
Normal file
BIN
roms/bank05.smc
Normal file
Binary file not shown.
BIN
roms/bank06.smc
Normal file
BIN
roms/bank06.smc
Normal file
Binary file not shown.
BIN
roms/bank07.smc
Normal file
BIN
roms/bank07.smc
Normal file
Binary file not shown.
BIN
roms/bankhi.smc
Normal file
BIN
roms/bankhi.smc
Normal file
Binary file not shown.
BIN
roms/banklo.smc
Normal file
BIN
roms/banklo.smc
Normal file
Binary file not shown.
BIN
roms/dezaemon.smc
Normal file
BIN
roms/dezaemon.smc
Normal file
Binary file not shown.
BIN
roms/dump256.smc
Normal file
BIN
roms/dump256.smc
Normal file
Binary file not shown.
BIN
roms/dump512.smc
Normal file
BIN
roms/dump512.smc
Normal file
Binary file not shown.
BIN
roms/hungry.smc
Normal file
BIN
roms/hungry.smc
Normal file
Binary file not shown.
BIN
roms/kungfu.smc
Normal file
BIN
roms/kungfu.smc
Normal file
Binary file not shown.
BIN
roms/mrdo.smc
Normal file
BIN
roms/mrdo.smc
Normal file
Binary file not shown.
BIN
roms/spacei.smc
Normal file
BIN
roms/spacei.smc
Normal file
Binary file not shown.
BIN
roms/supert.smc
Normal file
BIN
roms/supert.smc
Normal file
Binary file not shown.
BIN
roms/vortex.smc
Normal file
BIN
roms/vortex.smc
Normal file
Binary file not shown.
BIN
roms/vram2.smc
Normal file
BIN
roms/vram2.smc
Normal file
Binary file not shown.
28
scripts/b.py
Executable file
28
scripts/b.py
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
import sys
|
||||||
|
try:
|
||||||
|
if 'x' in sys.argv[1] or 'X' in sys.argv[1]:
|
||||||
|
v = int(sys.argv[1],16)
|
||||||
|
else:
|
||||||
|
v = int(sys.argv[1])
|
||||||
|
except:
|
||||||
|
print "%s NUM" % sys.argv[0]
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
bits = 32
|
||||||
|
sys.stdout.write("0b")
|
||||||
|
for i in range(bits-1,-1,-1):
|
||||||
|
s = 1<<i
|
||||||
|
if v & s:
|
||||||
|
sys.stdout.write("1")
|
||||||
|
else:
|
||||||
|
sys.stdout.write("0")
|
||||||
|
if i and not i%8:
|
||||||
|
sys.stdout.write(" ")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print
|
||||||
|
print "0x%x"% v
|
||||||
|
print v
|
||||||
|
|
||||||
66
scripts/crc_xmodem.py
Normal file
66
scripts/crc_xmodem.py
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
import ctypes
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
def crc_xmodem_update(crc,data):
|
||||||
|
crc = ctypes.c_uint16(crc.value ^ data.value << 8)
|
||||||
|
for i in range(0,8):
|
||||||
|
if crc.value & 0x8000:
|
||||||
|
crc = ctypes.c_uint16((crc.value << 1) ^ 0x1021);
|
||||||
|
else:
|
||||||
|
crc = ctypes.c_uint16(crc.value << 1);
|
||||||
|
return crc
|
||||||
|
|
||||||
|
|
||||||
|
def do_crc(data):
|
||||||
|
crc = ctypes.c_uint16(0)
|
||||||
|
for idx,char in enumerate(data):
|
||||||
|
crc = crc_xmodem_update(crc,ctypes.c_uint8(ord(char)))
|
||||||
|
return crc.value
|
||||||
|
|
||||||
|
|
||||||
|
def test_performance():
|
||||||
|
data=str()
|
||||||
|
fd = open("/dev/urandom")
|
||||||
|
for i in range(0,256):
|
||||||
|
data+= fd.read(1024)
|
||||||
|
sys.stdout.write("*")
|
||||||
|
sys.stdout.flush()
|
||||||
|
print
|
||||||
|
fd.close()
|
||||||
|
print "%s" % do_crc(data)
|
||||||
|
|
||||||
|
|
||||||
|
def test_algo():
|
||||||
|
data='david'
|
||||||
|
data='da'
|
||||||
|
print "%x" % do_crc(data)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
#import cProfile
|
||||||
|
#cProfile.run('test_performance()')
|
||||||
|
|
||||||
|
size = os.stat(sys.argv[1])[6]
|
||||||
|
fd = open(sys.argv[1])
|
||||||
|
addr = 0x0000
|
||||||
|
step = 2**15
|
||||||
|
result = []
|
||||||
|
while addr < size:
|
||||||
|
try:
|
||||||
|
block = fd.read(step)
|
||||||
|
addr += step
|
||||||
|
except:
|
||||||
|
print "Done"
|
||||||
|
break
|
||||||
|
crc = do_crc(block)
|
||||||
|
print "Bank: 0x%02x Addr: 0x%06x Block: 0x%04x CRC 0x%04x" % (addr/(2**15),addr,addr/512, ctypes.c_uint16(crc).value)
|
||||||
|
result.append(hex(ctypes.c_uint16(crc).value))
|
||||||
|
#print result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
#test_algo()
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
273
scripts/rom.py
273
scripts/rom.py
@@ -1,4 +1,12 @@
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
import stat
|
||||||
|
import popen2
|
||||||
|
import glob
|
||||||
|
import sys
|
||||||
|
import pprint
|
||||||
|
|
||||||
# Detect Mirrord Roms
|
# Detect Mirrord Roms
|
||||||
# Rom Type Mapping
|
# Rom Type Mapping
|
||||||
@@ -14,26 +22,37 @@ import sqlite3
|
|||||||
#246 ROM and DSP2 chip
|
#246 ROM and DSP2 chip
|
||||||
|
|
||||||
|
|
||||||
snes_header_tpl='''
|
#Process /Users/david/Devel/arch/snes/roms/Teenage Mutant Ninja Turtles IV - Turtles in Time (U) [!].smc
|
||||||
Super Nintendo Entertainment System/SNES/Super Famicom
|
#0 uCON64 2.0.0 Apple (PPC) 1999-2005
|
||||||
SNES Tile Demo
|
#1 Uses code from various people. See 'developers.html' for more!
|
||||||
Demo or Beta ROM?
|
#2 This may be freely redistributed under the terms of the GNU Public License
|
||||||
Europe, Oceania and Asia
|
#4 /Users/david/Devel/arch/snes/roms/Teenage Mutant Ninja Turtles IV - Turtles in Time (U) [!].smc
|
||||||
262144 Bytes (2.0000 Mb)
|
#6 Multi Game Doctor (2)/Multi Game Hunter/MGH
|
||||||
|
#8 00007fb0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|
||||||
|
#9 00007fc0 54 2e 4d 2e 4e 2e 54 2e 20 34 20 20 20 20 20 20 T.M.N.T. 4
|
||||||
|
#10 00007fd0 20 20 20 20 20 20 00 0a 00 01 a4 00 7c e9 83 16 ......|...
|
||||||
|
#12 Super Nintendo Entertainment System/SNES/Super Famicom
|
||||||
|
#13 T.M.N.T. 4
|
||||||
|
#14 Konami
|
||||||
|
#15 U.S.A.
|
||||||
|
#16 1048576 Bytes (8.0000 Mb)
|
||||||
|
#18 Padded: Maybe, 105 Bytes (0.0008 Mb)
|
||||||
|
#19 Interleaved/Swapped: No
|
||||||
|
#20 Backup unit/emulator header: No
|
||||||
|
#21 HiROM: No
|
||||||
|
#22 Internal size: 8 Mb
|
||||||
|
#23 ROM type: (0) ROM
|
||||||
|
#24 ROM speed: 200 ns (SlowROM)
|
||||||
|
#25 SRAM: No
|
||||||
|
#26 Version: 1.0
|
||||||
|
#27 Checksum: Ok, 0x1683 (calculated) == 0x1683 (internal)
|
||||||
|
#28 Inverse checksum: Ok, 0xe97c (calculated) == 0xe97c (internal)
|
||||||
|
#29 Checksum (CRC32): 0x5940bd99
|
||||||
|
#31 This ROM has no backup unit header
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Padded: Maybe, 227296 Bytes (1.7341 Mb)
|
|
||||||
Interleaved/Swapped: No
|
|
||||||
Backup unit/emulator header: Yes, 512 Bytes
|
|
||||||
HiROM: No
|
|
||||||
Internal size: 2 Mb
|
|
||||||
ROM type: (0) ROM
|
|
||||||
ROM speed: 200 ns (SlowROM)
|
|
||||||
SRAM: No
|
|
||||||
Version: 1.0
|
|
||||||
Checksum: Ok, 0x6629 (calculated) == 0x6629 (internal)
|
|
||||||
Inverse checksum: Ok, 0x99d6 (calculated) == 0x99d6 (internal)
|
|
||||||
Checksum (CRC32): 0x8e16de1e
|
|
||||||
'''
|
|
||||||
|
|
||||||
swc_header_tpl='''
|
swc_header_tpl='''
|
||||||
Backup unit header info (SWC)
|
Backup unit header info (SWC)
|
||||||
@@ -53,56 +72,34 @@ Backup unit header info (SWC)
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
snes_header_regex='''(?P<line01>.*)
|
|
||||||
(?P<titel>.*)
|
|
||||||
(?P<line03>.*)
|
|
||||||
(?P<region>.*)
|
|
||||||
'''
|
|
||||||
|
|
||||||
a = '''
|
|
||||||
(?P<titel>[\w]+)
|
|
||||||
(?P<line03>[\w]+)
|
|
||||||
(?P<region>[\w]+)
|
|
||||||
(?P<rom_size>\d+) Bytes ((?P<rom_mb>[\d.]+) Mb)
|
|
||||||
|
|
||||||
Padded: Maybe, 227296 Bytes (1.7341 Mb)
|
|
||||||
Interleaved/Swapped: No
|
|
||||||
Backup unit/emulator header: Yes, 512 Bytes
|
|
||||||
HiROM: No
|
|
||||||
Internal size: 2 Mb
|
|
||||||
ROM type: (0) ROM
|
|
||||||
ROM speed: 200 ns (SlowROM)
|
|
||||||
SRAM: No
|
|
||||||
Version: 1.0
|
|
||||||
Checksum: Ok, 0x6629 (calculated) == 0x6629 (internal)
|
|
||||||
Inverse checksum: Ok, 0x99d6 (calculated) == 0x99d6 (internal)
|
|
||||||
Checksum (CRC32): 0x8e16de1e
|
|
||||||
'''
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
def createdb():
|
||||||
import re
|
try:
|
||||||
import string
|
os.unlink("roms.sqlite3")
|
||||||
os.unlink("roms.sqlite3")
|
except:
|
||||||
|
pass
|
||||||
conn = sqlite3.connect('roms.sqlite3')
|
conn = sqlite3.connect('roms.sqlite3')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute('''create table roms
|
c.execute('''create table roms
|
||||||
(
|
(
|
||||||
file_name text,
|
file_name text,
|
||||||
file_ext text,
|
file_ext text,
|
||||||
file_size integer,
|
file_size integer,
|
||||||
rom_size integer,
|
rom_size integer,
|
||||||
rom_mb real,
|
rom_mb real,
|
||||||
rom_name text,
|
rom_padded integer,
|
||||||
|
rom_trainer integer,
|
||||||
|
rom_backup integer,
|
||||||
|
rom_name text,
|
||||||
rom_vendor text,
|
rom_vendor text,
|
||||||
rom_region text,
|
rom_region text,
|
||||||
rom_hirom integer,
|
rom_hirom integer,
|
||||||
rom_internalsize integer,
|
rom_internalsize integer,
|
||||||
rom_type, integer,
|
rom_type integer,
|
||||||
rom_speed integer,
|
rom_speed integer,
|
||||||
rom_sram integer,
|
rom_sram integer,
|
||||||
rom_version integer,
|
rom_version real,
|
||||||
rom_chk integer,
|
rom_chk integer,
|
||||||
swc_size integer,
|
swc_size integer,
|
||||||
swc_mode integer,
|
swc_mode integer,
|
||||||
@@ -112,15 +109,171 @@ c.execute('''create table roms
|
|||||||
swc_sram_size text
|
swc_sram_size text
|
||||||
|
|
||||||
)''')
|
)''')
|
||||||
|
return conn,c
|
||||||
|
|
||||||
|
def process(conn,c,file_name,out):
|
||||||
|
file_ext = os.path.splitext(file_name)[1].replace(".",'')
|
||||||
|
file_size = os.stat(file_name)[stat.ST_SIZE]
|
||||||
|
rom_size = 0
|
||||||
|
rom_mb = 0
|
||||||
|
rom_padded = 0
|
||||||
|
rom_trainer = 0
|
||||||
|
rom_backup = 0
|
||||||
|
rom_name = ''
|
||||||
|
rom_vendor = ''
|
||||||
|
rom_region = ''
|
||||||
|
rom_hirom = 0
|
||||||
|
rom_internalsize = 0
|
||||||
|
rom_type = 0
|
||||||
|
rom_speed = 0
|
||||||
|
rom_sram = 0
|
||||||
|
rom_version = 0
|
||||||
|
rom_chk = 0
|
||||||
|
swc_size = 0
|
||||||
|
swc_mode = 0
|
||||||
|
swc_split = ''
|
||||||
|
swc_sram_mode = ''
|
||||||
|
swc_dram_mode = ''
|
||||||
|
swc_sram_size = ''
|
||||||
|
|
||||||
#c.execute("""insert into stocks
|
print "-" * 60
|
||||||
# values ('2006-01-05','BUY','RHAT',100,35.14)""")
|
print "Process %s" % file_name
|
||||||
conn.commit
|
|
||||||
|
try:
|
||||||
|
rom_name = out[13]
|
||||||
|
rom_vendor = out[14]
|
||||||
|
rom_region = out[15]
|
||||||
|
|
||||||
c.close()
|
try:
|
||||||
|
rom_size = int(out[16].split(" ")[0])
|
||||||
|
rom_mb = float(re.compile("([\d.]+) Mb").search(out[16]).groups()[0])
|
||||||
|
except:
|
||||||
|
print "Broken..."
|
||||||
|
return
|
||||||
|
if not "No" in out[18]:
|
||||||
|
rom_padded = int(re.compile("([\d.]+) Bytes").search(out[18]).groups()[0])
|
||||||
|
|
||||||
|
for idx,line in enumerate(out):
|
||||||
|
if line is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if "Backup unit/emulator header: Yes" in line:
|
||||||
|
rom_backup = int(re.compile("([\d.]+) Bytes").search(line).groups()[0])
|
||||||
|
|
||||||
|
if "Intro/Trainer:" in line:
|
||||||
|
rom_trainer = int(re.compile("([\d.]+) Bytes").search(line).groups()[0])
|
||||||
|
|
||||||
|
if "HiROM: Yes" in line:
|
||||||
|
rom_hirom = 1
|
||||||
|
|
||||||
|
if "Internal size:" in line:
|
||||||
|
rom_internalsize = int(re.compile("([\d.]+) Mb").search(line).groups()[0])
|
||||||
|
|
||||||
|
if "ROM type:" in line:
|
||||||
|
try:
|
||||||
|
rom_type = int(re.compile("([\d]+)").search(line).groups()[0])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if "ROM speed:" in line:
|
||||||
|
rom_speed = int(re.compile("([\d]+) ns").search(line).groups()[0])
|
||||||
|
|
||||||
|
if "SRAM: Yes" in line:
|
||||||
|
rom_sram = int(re.compile("([\d]+) kBytes").search(line).groups()[0])
|
||||||
|
|
||||||
|
if "Version:" in line:
|
||||||
|
rom_version = float(re.compile("([\d.]+)").search(line).groups()[0])
|
||||||
|
if "Checksum: Ok" in line:
|
||||||
|
rom_chk = 1
|
||||||
|
except:
|
||||||
|
for idx,line in enumerate(out):
|
||||||
|
if line is None:
|
||||||
|
continue
|
||||||
|
print idx,line
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
query = """INSERT INTO roms
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
?,?,?,?,?,
|
||||||
|
?,?,?,?,?,
|
||||||
|
?,?,?,?,?,
|
||||||
|
?,?,?,?,?,
|
||||||
|
?,?,?,?) """
|
||||||
|
|
||||||
|
data = (file_name,
|
||||||
|
file_ext,
|
||||||
|
file_size,
|
||||||
|
rom_size,
|
||||||
|
rom_mb,
|
||||||
|
rom_padded,
|
||||||
|
rom_trainer,
|
||||||
|
rom_backup,
|
||||||
|
rom_name,
|
||||||
|
rom_vendor,
|
||||||
|
rom_region,
|
||||||
|
rom_hirom,
|
||||||
|
rom_internalsize,
|
||||||
|
rom_type,
|
||||||
|
rom_speed,
|
||||||
|
rom_sram,
|
||||||
|
rom_version,
|
||||||
|
rom_chk,
|
||||||
|
swc_size,
|
||||||
|
swc_mode,
|
||||||
|
swc_split,
|
||||||
|
swc_sram_mode,
|
||||||
|
swc_dram_mode,
|
||||||
|
swc_sram_size)
|
||||||
|
|
||||||
|
c.execute(query,data)
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
print re.compile(snes_header_regex,re.M).search(snes_header_tpl).groups()
|
def ucon64_info(filename):
|
||||||
|
cmd = "ucon64 --dbuh -snes \"%s\"" % filename
|
||||||
|
r, w, e = popen2.popen3(cmd)
|
||||||
|
err = e.readlines()
|
||||||
|
out = r.readlines()
|
||||||
|
r.close()
|
||||||
|
e.close()
|
||||||
|
w.close()
|
||||||
|
if len(err):
|
||||||
|
return False,err
|
||||||
|
return out,err
|
||||||
|
|
||||||
|
def clean(s):
|
||||||
|
s = s.replace("\n","")
|
||||||
|
if not len(s):
|
||||||
|
return None
|
||||||
|
return s
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
conn,c = createdb()
|
||||||
|
|
||||||
|
path = sys.argv[1]
|
||||||
|
files = glob.glob(path + "/*")
|
||||||
|
for filename in files:
|
||||||
|
try:
|
||||||
|
r,err = ucon64_info(filename)
|
||||||
|
if not r:
|
||||||
|
print err
|
||||||
|
continue
|
||||||
|
r = map(clean,r)
|
||||||
|
process(conn,c,filename,r)
|
||||||
|
except (KeyboardInterrupt, SystemExit):
|
||||||
|
print "Saving DB..."
|
||||||
|
c.close()
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
sys.exit(-1)
|
||||||
|
c.close()
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
53
scripts/rom_analyse.sql
Normal file
53
scripts/rom_analyse.sql
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
-- Global
|
||||||
|
select count(*) from roms;
|
||||||
|
select distinct rom_name from roms;
|
||||||
|
select count(*) from roms where rom_sram = 0;
|
||||||
|
|
||||||
|
-- Hirom x Sram
|
||||||
|
select count(*) from roms where rom_hirom= 1;
|
||||||
|
select count(*),rom_internalsize from roms where rom_hirom= 1 group by rom_internalsize;
|
||||||
|
select count(*) as count ,rom_internalsize,rom_sram from roms where rom_hirom= 1 group by rom_internalsize,rom_sram having rom_sram > 0;
|
||||||
|
|
||||||
|
-- Lorom x Sram
|
||||||
|
select count(*) from roms where rom_hirom= 0;
|
||||||
|
select count(*),rom_internalsize from roms where rom_hirom= 0 group by rom_internalsize;
|
||||||
|
select count(*) as count ,rom_internalsize,rom_sram from roms where rom_hirom= 0 group by rom_internalsize,rom_sram having rom_sram > 0;
|
||||||
|
|
||||||
|
-- Sram
|
||||||
|
select count(*) as count ,rom_sram from roms group by rom_sram having count > 1;
|
||||||
|
|
||||||
|
-- Rom
|
||||||
|
select count(*) as count ,rom_size from roms group by rom_size having count > 1;
|
||||||
|
select count(*) as count ,rom_size from roms group by rom_size having count > 10;
|
||||||
|
|
||||||
|
select count(*) as count ,rom_internalsize from roms group by rom_internalsize having count > 1;
|
||||||
|
select count(distinct rom_name) as count ,rom_internalsize from roms group by rom_internalsize having count > 1;
|
||||||
|
select count(*) as count ,rom_size,rom_internalsize from roms group by rom_size having count > 10;
|
||||||
|
|
||||||
|
|
||||||
|
-- Type
|
||||||
|
|
||||||
|
-- 00 ROM
|
||||||
|
-- 01 ROM/RAM
|
||||||
|
-- 02 ROM/SRAM
|
||||||
|
-- 03 ROM/DSP1
|
||||||
|
-- 04 ROM/DSP1/RAM
|
||||||
|
-- 05 ROM/DSP1/SRAM
|
||||||
|
-- 06 FX
|
||||||
|
select count(*) as count ,rom_type from roms group by rom_type having count > 1;
|
||||||
|
select count(*) as count ,rom_type from roms group by rom_type having count > 5;
|
||||||
|
|
||||||
|
select count(*) as count from roms where rom_type > 2;
|
||||||
|
select count(*) as count from roms where rom_type <= 2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- cleanup
|
||||||
|
--
|
||||||
|
--delete from roms where rom_vendor = 'Demo or Beta ROM?';
|
||||||
|
--delete from roms where rom_internalsize > 128;
|
||||||
|
--delete from roms where rom_name like "%.....%";
|
||||||
|
--delete from roms where rom_name like "%\%";
|
||||||
|
--delete from roms where rom_vendor = 'Unknown';
|
||||||
|
|
||||||
Binary file not shown.
BIN
scripts/roms_cleanup.sqlite3
Normal file
BIN
scripts/roms_cleanup.sqlite3
Normal file
Binary file not shown.
@@ -10,8 +10,8 @@ OFILES = main.o
|
|||||||
GFXDATA = optixx_logo.bmp
|
GFXDATA = optixx_logo.bmp
|
||||||
|
|
||||||
all: $(OFILES) Makefile
|
all: $(OFILES) Makefile
|
||||||
$(LD) $(LDFLAGS) linkfile ascii.rom
|
$(LD) $(LDFLAGS) linkfile ascii.smc
|
||||||
ucon64 -chk -swc ascii.rom
|
ucon64 -chk -swc ascii.smc
|
||||||
|
|
||||||
zsnes:
|
zsnes:
|
||||||
/Applications/ZSNES.app/Contents/MacOS/ZSNES ascii.swc
|
/Applications/ZSNES.app/Contents/MacOS/ZSNES ascii.swc
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
.INCLUDE "header.inc"
|
.INCLUDE "header.inc"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.SECTION "MAIN"
|
.SECTION "MAIN"
|
||||||
|
|
||||||
.define dp $0000
|
.define dp $0000
|
||||||
@@ -758,7 +756,6 @@ text_0:
|
|||||||
.db " "
|
.db " "
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.INCLUDE "vsine_1.s"
|
.INCLUDE "vsine_1.s"
|
||||||
|
|
||||||
.INCLUDE "vsine_2.s"
|
.INCLUDE "vsine_2.s"
|
||||||
@@ -772,16 +769,25 @@ text_0:
|
|||||||
.INCLUDE "colbar_3.s"
|
.INCLUDE "colbar_3.s"
|
||||||
|
|
||||||
|
|
||||||
.INCLUDE "colbarsine_1.s"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.INCLUDE "optixx_logo.s"
|
.INCLUDE "optixx_logo.s"
|
||||||
|
|
||||||
.ENDS
|
|
||||||
|
|
||||||
|
.INCLUDE "colbarsine_1.s"
|
||||||
|
.ends
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.bank 1
|
||||||
|
|
||||||
|
.SECTION "GFX"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.ends
|
||||||
|
|
||||||
|
|
||||||
;.BANK $04 SLOT 6
|
;.BANK $04 SLOT 6
|
||||||
|
|||||||
79
snes/bankselect/Makefile
Normal file
79
snes/bankselect/Makefile
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# SDK Config
|
||||||
|
|
||||||
|
|
||||||
|
PLATFORM=mac
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),linux)
|
||||||
|
|
||||||
|
# Linux Wine
|
||||||
|
SDK=/home/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
EMU_DEBUG=/home/david/Devel/arch/snes/tools/zsnes_linux_debug151/src/zsnesd -d
|
||||||
|
else
|
||||||
|
# Mac Wine
|
||||||
|
SDK=/Users/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC=$(WINE) $(SDK)/bin/WDC816CC.exe
|
||||||
|
AS=$(WINE) $(SDK)/bin/WDC816AS.exe
|
||||||
|
LD=$(WINE) $(SDK)/bin/WDCLN.exe
|
||||||
|
PADBIN=$(WINE) tools/padbin.exe
|
||||||
|
PCX2SNES=$(WINE) tools/Pcx2Snes.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Project
|
||||||
|
|
||||||
|
INC=$(SDK)/include
|
||||||
|
LIBS=$(SDK)/lib/cc
|
||||||
|
#OBJS=StartupSnes.obj main.obj pad.obj event.obj myEvents.obj PPU.obj debug.obj ressource.obj
|
||||||
|
OBJS=StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj crc.obj
|
||||||
|
APP=banks.smc
|
||||||
|
GFX=kungfu debugfont
|
||||||
|
|
||||||
|
all: $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
$(EMU) $(APP)
|
||||||
|
|
||||||
|
debugger:
|
||||||
|
$(EMU_DEBUG) $(APP)
|
||||||
|
|
||||||
|
upload:
|
||||||
|
ucon64 $(APP)
|
||||||
|
cp -rv $(APP) /Volumes/SNES
|
||||||
|
sync
|
||||||
|
diskutil unmount /Volumes/SNES
|
||||||
|
|
||||||
|
crc:
|
||||||
|
python ../../scripts/crc_xmodem.py $(APP)
|
||||||
|
|
||||||
|
kungfu:
|
||||||
|
$(PCX2SNES) ressource/kungfu -n -c16 -screen
|
||||||
|
|
||||||
|
debugfont:
|
||||||
|
$(PCX2SNES) ressource/debugFont -n -c16 -s8 -o1
|
||||||
|
|
||||||
|
StartupSnes.obj: StartupSnes.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
ressource.obj: ressource.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
%.obj: %.c
|
||||||
|
$(CC) -wl -wp -sop -MC -I $(INC) $?
|
||||||
|
|
||||||
|
$(APP): $(OBJS)
|
||||||
|
$(LD) -HB -M21 -V -T -Pff \
|
||||||
|
-C008000,0000 -U0000,0000 \
|
||||||
|
-Avectors=FFE4,7FE4 \
|
||||||
|
-Aregistration_data=FFB0,7FB0 \
|
||||||
|
-Aressource=18000,8000 \
|
||||||
|
-N $(OBJS) -L$(LIBS) -O $@
|
||||||
|
$(PADBIN) 0x40000 $(APP)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.obj
|
||||||
80
snes/bankselect/PPU.c
Normal file
80
snes/bankselect/PPU.c
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
byte tileMapLocation[4];
|
||||||
|
word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void) {
|
||||||
|
byte Status;
|
||||||
|
do {
|
||||||
|
Status = *(byte*)0x4210;
|
||||||
|
} while (!(Status & 0x80));
|
||||||
|
}
|
||||||
|
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber) {
|
||||||
|
tileMapLocation[bgNumber] = ((vramDst >> 8) & 0xfc) | ( screenProp & 0x03 );
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreTileMapLocation(byte bgNumber) {
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber) {
|
||||||
|
characterLocation[bgNumber] = vramDst;
|
||||||
|
if(bgNumber < 2) {
|
||||||
|
*(byte*) 0x210b = (characterLocation[1] >> 8 & 0xf0 ) + (characterLocation[0] >> 12);
|
||||||
|
} else {
|
||||||
|
*(byte*) 0x210c = (characterLocation[3] >> 8 & 0xf0 ) + (characterLocation[2] >> 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreCharacterLocation(byte bgNumber) {
|
||||||
|
setCharacterLocation(characterLocation[bgNumber], bgNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMByteWrite(byte value, word vramDst) {
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(byte*)0x2118 = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMLoad(word src, word vramDst, word size) {
|
||||||
|
// set address in VRam for read or write ($2116) + block size transfer ($2115)
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x1801; // set DMA control register (1 word inc)
|
||||||
|
// and destination ($21xx xx -> 0x18)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size) {
|
||||||
|
|
||||||
|
// set address in VRam for read or write + block size
|
||||||
|
*(byte*)0x2121 = cgramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x2200; // set DMA control register (1 byte inc)
|
||||||
|
// and destination ($21xx xx -> 022)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
11
snes/bankselect/PPU.h
Normal file
11
snes/bankselect/PPU.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extern byte tileMapLocation[4];
|
||||||
|
extern word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void);
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber);
|
||||||
|
void restoreTileMapLocation(byte bgNumber);
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber);
|
||||||
|
void restoreCharacterLocation(byte bgNumber);
|
||||||
|
void VRAMByteWrite(byte value, word vramDst);
|
||||||
|
void VRAMLoad(word src, word vramDst, word size);
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size);
|
||||||
240
snes/bankselect/StartupSnes.asm
Normal file
240
snes/bankselect/StartupSnes.asm
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
; SNES ROM startup code
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Define a special section in case most of the code is not in bank 0. ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
;STACK EQU $01ff ;CHANGE THIS FOR YOUR SYSTEM
|
||||||
|
|
||||||
|
;STARTUP SECTION OFFSET $008000
|
||||||
|
|
||||||
|
CODE
|
||||||
|
|
||||||
|
XDEF START
|
||||||
|
START:
|
||||||
|
XREF _~main
|
||||||
|
|
||||||
|
sei ; Disabled interrupts
|
||||||
|
clc ; clear carry to switch to native mode
|
||||||
|
xce ; Xchange carry & emulation bit. native mode
|
||||||
|
rep #$18 ; Binary mode (decimal mode off), X/Y 16 bit
|
||||||
|
LONGI ON
|
||||||
|
ldx #$1FFF ; set stack to $1FFF
|
||||||
|
txs
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
; Init data used for heap
|
||||||
|
; see heap definition below
|
||||||
|
XREF _~_heap_top
|
||||||
|
XREF _~_mem_start
|
||||||
|
stz _~_heap_top
|
||||||
|
stz _~_mem_start
|
||||||
|
|
||||||
|
XREF _~preInit
|
||||||
|
jsr >_~preInit
|
||||||
|
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda #$8F ; screen off, full brightness
|
||||||
|
sta $2100 ; brightness + screen enable register
|
||||||
|
stz $2101 ; Sprite register (size + address in VRAM)
|
||||||
|
stz $2102 ; Sprite registers (address of sprite memory [OAM])
|
||||||
|
stz $2103 ; "" ""
|
||||||
|
stz $2105 ; Mode 0, = Graphic mode register
|
||||||
|
stz $2106 ; noplanes, no mosaic, = Mosaic register
|
||||||
|
stz $2107 ; Plane 0 map VRAM location
|
||||||
|
stz $2108 ; Plane 1 map VRAM location
|
||||||
|
stz $2109 ; Plane 2 map VRAM location
|
||||||
|
stz $210A ; Plane 3 map VRAM location
|
||||||
|
stz $210B ; Plane 0+1 Tile data location
|
||||||
|
stz $210C ; Plane 2+3 Tile data location
|
||||||
|
stz $210D ; Plane 0 scroll x (first 8 bits)
|
||||||
|
stz $210D ; Plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210E ; Plane 0 scroll y (first 8 bits)
|
||||||
|
stz $210E ; Plane 0 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210F ; Plane 1 scroll x (first 8 bits)
|
||||||
|
stz $210F ; Plane 1 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2110 ; Plane 1 scroll y (first 8 bits)
|
||||||
|
stz $2110 ; Plane 1 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2111 ; Plane 2 scroll x (first 8 bits)
|
||||||
|
stz $2111 ; Plane 2 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2112 ; Plane 2 scroll y (first 8 bits)
|
||||||
|
stz $2112 ; Plane 2 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2113 ; Plane 3 scroll x (first 8 bits)
|
||||||
|
stz $2113 ; Plane 3 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2114 ; Plane 3 scroll y (first 8 bits)
|
||||||
|
stz $2114 ; Plane 3 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
lda #$80 ; increase VRAM address after writing to $2119
|
||||||
|
sta $2115 ; VRAM address increment register
|
||||||
|
stz $2116 ; VRAM address low
|
||||||
|
stz $2117 ; VRAM address high
|
||||||
|
stz $211A ; Initial Mode 7 setting register
|
||||||
|
stz $211B ; Mode 7 matrix parameter A register (low)
|
||||||
|
lda #$01
|
||||||
|
sta $211B ; Mode 7 matrix parameter A register (high)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (low)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (high)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (low)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (high)
|
||||||
|
stz $211E ; Mode 7 matrix parameter D register (low)
|
||||||
|
sta $211E ; Mode 7 matrix parameter D register (high)
|
||||||
|
stz $211F ; Mode 7 center position X register (low)
|
||||||
|
stz $211F ; Mode 7 center position X register (high)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (low)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (high)
|
||||||
|
stz $2121 ; Color number register ($0-ff)
|
||||||
|
stz $2123 ; BG1 & BG2 Window mask setting register
|
||||||
|
stz $2124 ; BG3 & BG4 Window mask setting register
|
||||||
|
stz $2125 ; OBJ & Color Window mask setting register
|
||||||
|
stz $2126 ; Window 1 left position register
|
||||||
|
stz $2127 ; Window 2 left position register
|
||||||
|
stz $2128 ; Window 3 left position register
|
||||||
|
stz $2129 ; Window 4 left position register
|
||||||
|
stz $212A ; BG1, BG2, BG3, BG4 Window Logic register
|
||||||
|
stz $212B ; OBJ, Color Window Logic Register (or,and,xor,xnor)
|
||||||
|
sta $212C ; Main Screen designation (planes, sprites enable)
|
||||||
|
stz $212D ; Sub Screen designation
|
||||||
|
stz $212E ; Window mask for Main Screen
|
||||||
|
stz $212F ; Window mask for Sub Screen
|
||||||
|
lda #$30
|
||||||
|
sta $2130 ; Color addition & screen addition init setting
|
||||||
|
stz $2131 ; Add/Sub sub designation for screen, sprite, color
|
||||||
|
lda #$E0
|
||||||
|
sta $2132 ; color data for addition/subtraction
|
||||||
|
stz $2133 ; Screen setting (interlace x,y/enable SFX data)
|
||||||
|
stz $4200 ; Enable V-blank, interrupt, Joypad register
|
||||||
|
lda #$FF
|
||||||
|
sta $4201 ; Programmable I/O port
|
||||||
|
stz $4202 ; Multiplicand A
|
||||||
|
stz $4203 ; Multiplier B
|
||||||
|
stz $4204 ; Multiplier C
|
||||||
|
stz $4205 ; Multiplicand C
|
||||||
|
stz $4206 ; Divisor B
|
||||||
|
stz $4207 ; Horizontal Count Timer
|
||||||
|
stz $4208 ; Horizontal Count Timer MSB (most significant bit)
|
||||||
|
stz $4209 ; Vertical Count Timer
|
||||||
|
stz $420A ; Vertical Count Timer MSB
|
||||||
|
stz $420B ; General DMA enable (bits 0-7)
|
||||||
|
stz $420C ; Horizontal DMA (HDMA) enable (bits 0-7)
|
||||||
|
stz $420D ; Access cycle designation (slow/fast rom)
|
||||||
|
cli ; Enable interrupts
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
jsr >_~main
|
||||||
|
brk
|
||||||
|
|
||||||
|
XDEF IRQ
|
||||||
|
IRQ:
|
||||||
|
XREF _~IRQHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jsr _~IRQHandler
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
XDEF NMI
|
||||||
|
NMI:
|
||||||
|
XREF _~NMIHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phd
|
||||||
|
phb
|
||||||
|
lda #$0000
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda $4210 ; Read NMI
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
jsr _~NMIHandler
|
||||||
|
plb
|
||||||
|
pld
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
DIRQ:
|
||||||
|
rti
|
||||||
|
|
||||||
|
ENDS
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Heap definition ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
DATA
|
||||||
|
|
||||||
|
XDEF _~heap_start
|
||||||
|
XDEF _~heap_end
|
||||||
|
|
||||||
|
_~heap_start:
|
||||||
|
WORD $1000
|
||||||
|
_~heap_end:
|
||||||
|
WORD $1200
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES ROM Registartion Data ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
REGISTRATION_DATA SECTION
|
||||||
|
|
||||||
|
MAKER_CODE FCC /FF/
|
||||||
|
GAME_CODE FCC /SMWJ/
|
||||||
|
FIXED_VALUE0 BYTE $00, $00, $00, $00, $00, $00, $00
|
||||||
|
EXPANSION_RAM_SIZE BYTE $00
|
||||||
|
SPECIAL_VERSION BYTE $00
|
||||||
|
CARTRIDGE_TYPE_SUB BYTE $00
|
||||||
|
GAME_TITLE FCC /GAME TITLE !/
|
||||||
|
;012345678901234567890;
|
||||||
|
MAP_MODE BYTE $20
|
||||||
|
CARTRIDGE_SIZE BYTE $00
|
||||||
|
ROM_SIZE BYTE $08
|
||||||
|
RAM_SIZE BYTE $00
|
||||||
|
DESTINATION_CODE BYTE $00
|
||||||
|
FIXED_VALUE1 BYTE $33
|
||||||
|
MASK_ROM_VERSION BYTE $00
|
||||||
|
COMPLEMENT_CHECK BYTE $00, $00
|
||||||
|
CHEKSUM BYTE $00, $00
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES Interrupts and Reset vector ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
VECTORS SECTION
|
||||||
|
; Native vector
|
||||||
|
N_COP DW DIRQ
|
||||||
|
N_BRK DW DIRQ
|
||||||
|
N_ABORT DW DIRQ
|
||||||
|
N_NMI DW NMI
|
||||||
|
N_RSRVD DW DIRQ
|
||||||
|
N_IRQ DW IRQ
|
||||||
|
DS 4
|
||||||
|
; Emulation vector
|
||||||
|
E_COP DW DIRQ
|
||||||
|
E_RSRVD DW DIRQ
|
||||||
|
E_ABORT DW DIRQ
|
||||||
|
E_NMI DW DIRQ
|
||||||
|
E_RESET DW START
|
||||||
|
E_IRQ DW DIRQ
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
37
snes/bankselect/crc.c
Normal file
37
snes/bankselect/crc.c
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update (char far *data, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word)data[j]<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update_mem (unsigned long addr, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word) *(byte*)(addr+j)<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
4
snes/bankselect/crc.h
Normal file
4
snes/bankselect/crc.h
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
word crc_update (byte *data, word size);
|
||||||
|
word crc_update_mem (unsigned long, word size);
|
||||||
|
|
||||||
2
snes/bankselect/data.h
Normal file
2
snes/bankselect/data.h
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
typedef unsigned char byte;
|
||||||
|
typedef unsigned short word;
|
||||||
60
snes/bankselect/debug.c
Normal file
60
snes/bankselect/debug.c
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#include "data.h"
|
||||||
|
#include "pad.h"
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "ressource.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
word debugMap[0x400];
|
||||||
|
void initDebugMap(void) {
|
||||||
|
word i;
|
||||||
|
for(i=0; i<0x400; i++) {
|
||||||
|
debugMap[i] = 0x00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char hex_chars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||||
|
|
||||||
|
void int2hex(unsigned long number, char *buf,word size)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
long a;
|
||||||
|
for (a = 0; a < size; ++a) {
|
||||||
|
buf[a] = (i >> ((long)size * (2 * 2 - 1 - a))) & 0xf;
|
||||||
|
if (buf[a] < 10)
|
||||||
|
buf[a] += '0';
|
||||||
|
else
|
||||||
|
buf[a] += 'A' - 10;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//buf[a] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long n;
|
||||||
|
unsigned char i;
|
||||||
|
//unsigned char x;
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
n = number >> 4;
|
||||||
|
//x = (number - (n << 4));
|
||||||
|
buf[size-i-1] = hex_chars[(number - (n << 4))];
|
||||||
|
number = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeln(char *buffer,word y){
|
||||||
|
char i;
|
||||||
|
waitForVBlank();
|
||||||
|
for(i=0; i<32; i++) {
|
||||||
|
waitForVBlank();
|
||||||
|
VRAMByteWrite((byte) (buffer[i]-32), (word) (0x4000+i+(y*0x20)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void enableDebugScreen(void){
|
||||||
|
VRAMLoad((word) debugFont_pic, 0x5000, 2048);
|
||||||
|
CGRAMLoad((word) debugFont_pal, (byte) 0x00, (word) 16);
|
||||||
|
VRAMLoad((word) debugMap, 0x4000, 0x0800);
|
||||||
|
setTileMapLocation(0x4000, (byte) 0x00, (byte) 0);
|
||||||
|
setCharacterLocation(0x5000, (byte) 0);
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
}
|
||||||
5
snes/bankselect/debug.h
Normal file
5
snes/bankselect/debug.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
void initDebugMap(void);
|
||||||
|
void debug(void);
|
||||||
|
void int2hex(unsigned long i, char *buf,word size);
|
||||||
|
void writeln(char* line,word y);
|
||||||
|
void enableDebugScreen(void);
|
||||||
101
snes/bankselect/event.c
Normal file
101
snes/bankselect/event.c
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "data.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
event *events;
|
||||||
|
|
||||||
|
void initEvents(void) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
event *createEvent(char (*callback)(word counter)) {
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
myEvent = (event*) malloc(sizeof(event));
|
||||||
|
|
||||||
|
myEvent->VBlankCount = 0;
|
||||||
|
myEvent->callback = callback;
|
||||||
|
myEvent->nextEvent = NULL;
|
||||||
|
myEvent->previousEvent = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
event* addEvent(char (*callback)(word counter), int noDuplicateCallback) {
|
||||||
|
|
||||||
|
event *lastEvent;
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
if(events == NULL) {
|
||||||
|
events = createEvent(callback);
|
||||||
|
return events;
|
||||||
|
} else {
|
||||||
|
lastEvent = events;
|
||||||
|
// TODO optimise this with noduplicate
|
||||||
|
while(lastEvent->nextEvent != NULL) {
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
lastEvent = lastEvent->nextEvent;
|
||||||
|
}
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
myEvent = createEvent(callback);
|
||||||
|
myEvent->previousEvent = lastEvent;
|
||||||
|
lastEvent->nextEvent = myEvent;
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeEvent(event *eventElement) {
|
||||||
|
|
||||||
|
byte alone = 0;
|
||||||
|
event *next, *previous;
|
||||||
|
|
||||||
|
next = eventElement->nextEvent;
|
||||||
|
previous = eventElement->previousEvent;
|
||||||
|
|
||||||
|
if(eventElement->nextEvent != NULL && eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = previous;
|
||||||
|
previous->nextEvent = next;
|
||||||
|
|
||||||
|
} else if(eventElement->nextEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = NULL;
|
||||||
|
events = next;
|
||||||
|
|
||||||
|
} else if(eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
previous->nextEvent = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(eventElement);
|
||||||
|
|
||||||
|
if(alone == 0) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void processEvents(void) {
|
||||||
|
|
||||||
|
event *currentEvent;
|
||||||
|
char returnValue;
|
||||||
|
|
||||||
|
currentEvent = events;
|
||||||
|
while(currentEvent != NULL) {
|
||||||
|
returnValue = currentEvent->callback(currentEvent->VBlankCount);
|
||||||
|
if(returnValue == EVENT_CONTINUE) {
|
||||||
|
currentEvent->VBlankCount++;
|
||||||
|
} else {
|
||||||
|
removeEvent(currentEvent);
|
||||||
|
}
|
||||||
|
currentEvent = currentEvent->nextEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
snes/bankselect/event.h
Normal file
16
snes/bankselect/event.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
typedef struct event{
|
||||||
|
word VBlankCount;
|
||||||
|
char (*callback)(word counter);
|
||||||
|
struct event *previousEvent;
|
||||||
|
struct event *nextEvent;
|
||||||
|
} event;
|
||||||
|
|
||||||
|
#define EVENT_STOP 0
|
||||||
|
#define EVENT_CONTINUE 1
|
||||||
|
|
||||||
|
extern event *events;
|
||||||
|
|
||||||
|
void initEvents(void);
|
||||||
|
extern event* addEvent(char (*callback)(word counter), int noDuplicateCallback);
|
||||||
|
extern void removeEvent(event *eventElement);
|
||||||
|
extern void processEvents(void);
|
||||||
10
snes/bankselect/hex.py
Normal file
10
snes/bankselect/hex.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
number=0xffaaee
|
||||||
|
size = 6
|
||||||
|
print hex(number)
|
||||||
|
|
||||||
|
for i in range(0,size):
|
||||||
|
n = number >> 4;
|
||||||
|
print size-i-1, hex(number - (n << 4));
|
||||||
|
number = n;
|
||||||
|
|
||||||
71
snes/bankselect/main.c
Normal file
71
snes/bankselect/main.c
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
#include "myEvents.h";
|
||||||
|
#include "ressource.h";
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
padStatus pad1;
|
||||||
|
|
||||||
|
void initInternalRegisters(void) {
|
||||||
|
characterLocation[0] = 0x0000;
|
||||||
|
characterLocation[1] = 0x0000;
|
||||||
|
characterLocation[2] = 0x0000;
|
||||||
|
characterLocation[3] = 0x0000;
|
||||||
|
initDebugMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void preInit(void) {
|
||||||
|
// For testing purpose ...
|
||||||
|
// Insert code here to be executed before register init
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
word i,j;
|
||||||
|
word crc01;
|
||||||
|
word crc02;
|
||||||
|
padStatus pad1; //012345678901234567890123456789012
|
||||||
|
char line_header[32] = "BANK ADDR VAL 123456789ABCDEF";
|
||||||
|
char line[32] = " ";
|
||||||
|
char space;
|
||||||
|
unsigned long addr;
|
||||||
|
initInternalRegisters();
|
||||||
|
|
||||||
|
*(byte*) 0x2105 = 0x01; // MODE 1 value
|
||||||
|
*(byte*) 0x212c = 0x01; // Plane 0 (bit one) enable register
|
||||||
|
*(byte*) 0x212d = 0x00; // All subPlane disable
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
|
||||||
|
enablePad();
|
||||||
|
enableDebugScreen();
|
||||||
|
writeln(line_header,0);
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
addr = 0x018000;
|
||||||
|
for(j=1; j<16; j++) {
|
||||||
|
int2hex((unsigned long)j,&line[0],4);
|
||||||
|
int2hex((unsigned long)addr,&line[5],6);
|
||||||
|
int2hex((unsigned long)*(byte*)addr,&line[12],4);
|
||||||
|
writeln(line,j+1);
|
||||||
|
addr+= 0x010000;
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
while(!pad1.start) {
|
||||||
|
//waitForVBlank();
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRQHandler(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NMIHandler(void) {
|
||||||
|
//processEvents();
|
||||||
|
}
|
||||||
97
snes/bankselect/myEvents.c
Normal file
97
snes/bankselect/myEvents.c
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
extern padStatus pad1;
|
||||||
|
extern word scrollValue;
|
||||||
|
|
||||||
|
char fadeOut(word counter) {
|
||||||
|
static byte fadeOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeOutValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
fadeOutValue--;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeOutValue;
|
||||||
|
|
||||||
|
if(fadeOutValue == 0x00) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char fadeIn(word counter) {
|
||||||
|
static byte fadeInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeInValue = 0x00;
|
||||||
|
} else {
|
||||||
|
fadeInValue++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeInValue;
|
||||||
|
|
||||||
|
if(fadeInValue >= 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicOut(word counter) {
|
||||||
|
static byte mosaicOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicOutValue = 0xff;
|
||||||
|
} else {
|
||||||
|
mosaicOutValue -= 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicOutValue;
|
||||||
|
|
||||||
|
if(mosaicOutValue == 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicIn(word counter) {
|
||||||
|
static byte mosaicInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicInValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
mosaicInValue += 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicInValue;
|
||||||
|
|
||||||
|
if(mosaicInValue == 0xff) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char NMIReadPad(word counter) {
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
char scrollLeft(word counter) {
|
||||||
|
scrollValue++;
|
||||||
|
|
||||||
|
*(byte*) 0x210d = (byte) scrollValue;
|
||||||
|
*(byte*) 0x210d = (byte) (scrollValue>>8);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
6
snes/bankselect/myEvents.h
Normal file
6
snes/bankselect/myEvents.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
char fadeOut(word counter);
|
||||||
|
char fadeIn(word counter);
|
||||||
|
char mosaicOut(word counter);
|
||||||
|
char mosaicIn(word counter);
|
||||||
|
char NMIReadPad(word counter);
|
||||||
|
char scrollLeft(word counter);
|
||||||
17
snes/bankselect/pad.c
Normal file
17
snes/bankselect/pad.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
|
||||||
|
void enablePad(void) {
|
||||||
|
// Enable pad reading and NMI
|
||||||
|
*(byte*)0x4200 = 0x81;
|
||||||
|
}
|
||||||
|
|
||||||
|
padStatus readPad(byte padNumber) {
|
||||||
|
word test;
|
||||||
|
padStatus *status;
|
||||||
|
padNumber = padNumber << 1;
|
||||||
|
test = (word) *(byte*)0x4218+padNumber << 8;
|
||||||
|
test |= (word) *(byte*)0x4219+padNumber;
|
||||||
|
status = (padStatus *) &test;
|
||||||
|
return *status;
|
||||||
|
}
|
||||||
19
snes/bankselect/pad.h
Normal file
19
snes/bankselect/pad.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
typedef struct padStatus{
|
||||||
|
byte right:1;
|
||||||
|
byte left:1;
|
||||||
|
byte down:1;
|
||||||
|
byte up:1;
|
||||||
|
byte start:1; // Enter
|
||||||
|
byte select:1; // Space
|
||||||
|
byte Y:1; // X
|
||||||
|
byte B:1; // C
|
||||||
|
//--------------------------------
|
||||||
|
byte Dummy:4;
|
||||||
|
byte R:1; // Z
|
||||||
|
byte L:1; // A
|
||||||
|
byte X:1; // S
|
||||||
|
byte A:1; // D
|
||||||
|
} padStatus;
|
||||||
|
|
||||||
|
extern void enablePad(void);
|
||||||
|
extern padStatus readPad(byte padNumber);
|
||||||
23
snes/bankselect/ressource.asm
Normal file
23
snes/bankselect/ressource.asm
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
ressource .section
|
||||||
|
|
||||||
|
; XDEF __title_map
|
||||||
|
;__title_map:
|
||||||
|
; INSERT ressource/kungfu.map
|
||||||
|
;
|
||||||
|
; XDEF __title_pic
|
||||||
|
;__title_pic:
|
||||||
|
; INSERT ressource/kungfu.pic
|
||||||
|
;
|
||||||
|
; XDEF __title_pal
|
||||||
|
;__title_pal:
|
||||||
|
;make INSERT ressource/kungfu.clr
|
||||||
|
|
||||||
|
XDEF _~debugFont_pic
|
||||||
|
_~debugFont_pic
|
||||||
|
INSERT ressource/debugFont.pic
|
||||||
|
|
||||||
|
XDEF _~debugFont_pal
|
||||||
|
_~debugFont_pal
|
||||||
|
INSERT ressource/debugFont.clr
|
||||||
|
|
||||||
|
.ends
|
||||||
3
snes/bankselect/ressource.h
Normal file
3
snes/bankselect/ressource.h
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
extern word debugFont_pic[];
|
||||||
|
extern word debugFont_pal[];
|
||||||
BIN
snes/bankselect/ressource/debugFont.clr
Normal file
BIN
snes/bankselect/ressource/debugFont.clr
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.pcx
Normal file
BIN
snes/bankselect/ressource/debugFont.pcx
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.pic
Normal file
BIN
snes/bankselect/ressource/debugFont.pic
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.xcf
Normal file
BIN
snes/bankselect/ressource/debugFont.xcf
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.clr
Normal file
BIN
snes/bankselect/ressource/kungfu.clr
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.pcx
Normal file
BIN
snes/bankselect/ressource/kungfu.pcx
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.pic
Normal file
BIN
snes/bankselect/ressource/kungfu.pic
Normal file
Binary file not shown.
BIN
snes/bankselect/tools/Pcx2Snes.exe
Normal file
BIN
snes/bankselect/tools/Pcx2Snes.exe
Normal file
Binary file not shown.
BIN
snes/bankselect/tools/padbin.exe
Normal file
BIN
snes/bankselect/tools/padbin.exe
Normal file
Binary file not shown.
143
snes/banktest/LoadGraphics.asm
Normal file
143
snes/banktest/LoadGraphics.asm
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
;============================================================================
|
||||||
|
; Macros
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
;LoadPalette - Macro that loads palette information into CGRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: SRC_ADDR -- 24 bit address of source data,
|
||||||
|
; START -- Color # to start on,
|
||||||
|
; SIZE -- # of COLORS to copy
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: A,X
|
||||||
|
; Requires: mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
.MACRO LoadPalette
|
||||||
|
lda #\2
|
||||||
|
sta $2121 ; Start at START color
|
||||||
|
lda #:\1 ; Using : before the parameter gets its bank.
|
||||||
|
ldx #\1 ; Not using : gets the offset address.
|
||||||
|
ldy #(\3 * 2) ; 2 bytes for every color
|
||||||
|
jsr DMAPalette
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; LoadBlockToVRAM -- Macro that simplifies calling LoadVRAM to copy data to VRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: SRC_ADDR -- 24 bit address of source data
|
||||||
|
; DEST -- VRAM address to write to (WORD address!!)
|
||||||
|
; SIZE -- number of BYTEs to copy
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: A, X, Y
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;LoadBlockToVRAM SRC_ADDRESS, DEST, SIZE
|
||||||
|
; requires: mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
.MACRO LoadBlockToVRAM
|
||||||
|
lda #$80
|
||||||
|
sta $2115
|
||||||
|
ldx #\2 ; DEST
|
||||||
|
stx $2116 ; $2116: Word address for accessing VRAM.
|
||||||
|
lda #:\1 ; SRCBANK
|
||||||
|
ldx #\1 ; SRCOFFSET
|
||||||
|
ldy #\3 ; SIZE
|
||||||
|
jsr LoadVRAM
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Routines
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "LoadVRAMCode" SEMIFREE
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; LoadVRAM -- Load data into VRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: A:X -- points to the data
|
||||||
|
; Y -- Number of bytes to copy (0 to 65535) (assumes 16-bit index)
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: none
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Notes: Assumes VRAM address has been previously set!!
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
LoadVRAM:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phb
|
||||||
|
php ; Preserve Registers
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
|
||||||
|
stx $4302 ; Store Data offset into DMA source offset
|
||||||
|
sta $4304 ; Store data Bank into DMA source bank
|
||||||
|
sty $4305 ; Store size of data block
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
sta $4300 ; Set DMA mode (word, normal increment)
|
||||||
|
lda #$18 ; Set the destination register (VRAM write register)
|
||||||
|
sta $4301
|
||||||
|
lda #$01 ; Initiate DMA transfer (channel 1)
|
||||||
|
sta $420B
|
||||||
|
|
||||||
|
plp ; restore registers
|
||||||
|
plb
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rts ; return
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
.BANK 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "DMAPaletteCode" SEMIFREE
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; DMAPalette -- Load entire palette using DMA
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: A:X -- points to the data
|
||||||
|
; Y -- Size of data
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: none
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
DMAPalette:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phb
|
||||||
|
php ; Preserve Registers
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
|
||||||
|
stx $4302 ; Store data offset into DMA source offset
|
||||||
|
sta $4304 ; Store data bank into DMA source bank
|
||||||
|
sty $4305 ; Store size of data block
|
||||||
|
|
||||||
|
stz $4300 ; Set DMA Mode (byte, normal increment)
|
||||||
|
lda #$22 ; Set destination register ($2122 - CGRAM Write)
|
||||||
|
sta $4301
|
||||||
|
lda #$01 ; Initiate DMA transfer
|
||||||
|
sta $420B
|
||||||
|
|
||||||
|
plp ; Restore registers
|
||||||
|
plb
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rts ; return from subroutine
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.ENDS
|
||||||
33
snes/banktest/Makefile
Normal file
33
snes/banktest/Makefile
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#wla-65816 -o %1.asm %1.obj
|
||||||
|
#wlalink -vr temp.prj %1.smc
|
||||||
|
|
||||||
|
|
||||||
|
AS=wla-65816
|
||||||
|
LD=wlalink
|
||||||
|
|
||||||
|
OBJS=vram2.o
|
||||||
|
APP=vram2.smc
|
||||||
|
GFX=
|
||||||
|
|
||||||
|
all: clean $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
zsnes $(APP)
|
||||||
|
|
||||||
|
linkfile:
|
||||||
|
echo "[objects]" > linkerfile.prj
|
||||||
|
|
||||||
|
|
||||||
|
optixx.inc: optixx.pcx
|
||||||
|
wine tools/pcx2snes.exe optixx.pcx -b2 -nOptixx -ooptixx.inc
|
||||||
|
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
echo "$@" >> linkerfile.prj
|
||||||
|
$(AS) -o $? $@
|
||||||
|
|
||||||
|
$(APP): linkfile $(GFX) $(OBJS) $(GFX)
|
||||||
|
$(LD) -vr linkerfile.prj $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.prj *.o
|
||||||
61
snes/banktest/header.inc
Normal file
61
snes/banktest/header.inc
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
;------------------------------ Header File ---------------------------------
|
||||||
|
; This is basically a combo of MarctheMER's and Neviksti's header files
|
||||||
|
; Perhaps reading their's will also help your understanding of the header,
|
||||||
|
; but I believe this will be the simplest method of defining your header,
|
||||||
|
; as Marc's doesn't provide a full explanation, and Neviksti's can be
|
||||||
|
; a bit more difficult for beginners (using the WLA directives is easier).
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;==LoRom== ; We'll get to HiRom some other time.
|
||||||
|
.MEMORYMAP ; Begin describing the system architecture.
|
||||||
|
SLOTSIZE $8000 ; The slot is $8000 bytes in size. More details on slots later.
|
||||||
|
DEFAULTSLOT 0 ; There's only 1 slot in SNES, there are more in other consoles.
|
||||||
|
SLOT 0 $8000 ; Define's Slot 0's starting address.
|
||||||
|
.ENDME ; End MemoryMap definition
|
||||||
|
|
||||||
|
.ROMBANKSIZE $8000 ; Every ROM bank is 32 KBytes in size
|
||||||
|
.ROMBANKS 8 ; 2 Mbits - Tell WLA we want to use 8 ROM Banks
|
||||||
|
|
||||||
|
.SNESHEADER
|
||||||
|
ID "SNES" ; 1-4 letter string, just leave it as "SNES"
|
||||||
|
|
||||||
|
NAME "SNES Tile Demo " ; Program Title - can't be over 21 bytes,
|
||||||
|
; "123456789012345678901" ; use spaces for unused bytes of the name.
|
||||||
|
|
||||||
|
SLOWROM
|
||||||
|
LOROM
|
||||||
|
|
||||||
|
CARTRIDGETYPE $00 ; $00 = ROM only, see WLA documentation for others
|
||||||
|
ROMSIZE $08 ; $08 = 2 Mbits, see WLA doc for more..
|
||||||
|
SRAMSIZE $00 ; No SRAM see WLA doc for more..
|
||||||
|
COUNTRY $01 ; $01 = U.S. $00 = Japan, that's all I know
|
||||||
|
LICENSEECODE $00 ; Just use $00
|
||||||
|
VERSION $00 ; $00 = 1.00, $01 = 1.01, etc.
|
||||||
|
.ENDSNES
|
||||||
|
|
||||||
|
.SNESNATIVEVECTOR ; Define Native Mode interrupt vector table
|
||||||
|
COP EmptyHandler
|
||||||
|
BRK EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
IRQ EmptyHandler
|
||||||
|
.ENDNATIVEVECTOR
|
||||||
|
|
||||||
|
.SNESEMUVECTOR ; Define Emulation Mode interrupt vector table
|
||||||
|
COP EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
RESET Start
|
||||||
|
IRQBRK EmptyHandler
|
||||||
|
.ENDEMUVECTOR
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0 ; Defines the ROM bank and the slot it is inserted in memory.
|
||||||
|
.ORG 0 ; .ORG 0 is really $8000, because the slot starts at $8000
|
||||||
|
.SECTION "EmptyVectors" SEMIFREE
|
||||||
|
|
||||||
|
EmptyHandler:
|
||||||
|
rti
|
||||||
|
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
.EMPTYFILL $00
|
||||||
262
snes/banktest/init.inc
Normal file
262
snes/banktest/init.inc
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
;------------------------------------------------------------------------
|
||||||
|
;- Written by: Neviksti
|
||||||
|
;- If you use my code, please share your creations with me
|
||||||
|
;- as I am always curious :)
|
||||||
|
;------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; InitSNES -- my "standard" initialization of SNES memory and registers
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
.MACRO InitSNES
|
||||||
|
sei ;disable interrupts
|
||||||
|
clc ;switch to native mode
|
||||||
|
xce
|
||||||
|
|
||||||
|
REP #$38 ; mem/A = 16 bit, X/Y = 16 bit
|
||||||
|
;decimal mode off
|
||||||
|
|
||||||
|
LDX #$1FFF ;Setup the stack
|
||||||
|
TXS ;Transfer Index X to Stack Pointer Register
|
||||||
|
|
||||||
|
;do the rest of the initialization in a routine
|
||||||
|
JSL $008000
|
||||||
|
|
||||||
|
SEP #$20 ; mem/A = 8 bit
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "InitializeSNESCode" FORCE
|
||||||
|
|
||||||
|
InitializeSNES:
|
||||||
|
PHK ;set Data Bank = Program Bank
|
||||||
|
PLB
|
||||||
|
|
||||||
|
LDA #$0000 ;set Direct Page = $0000
|
||||||
|
TCD ;Transfer Accumulator to Direct Register
|
||||||
|
|
||||||
|
LDX $1FFD ;we clear all the mem at one point ...
|
||||||
|
STX $4372 ;so save the return address in a place that won't get overwritten
|
||||||
|
LDX $1FFF
|
||||||
|
STX $4374
|
||||||
|
|
||||||
|
SEP #$20 ; mem/A = 8 bit
|
||||||
|
REP #$10
|
||||||
|
|
||||||
|
LDA #$8F
|
||||||
|
STA $2100 ;turn screen off for now, set brightness to normal
|
||||||
|
|
||||||
|
LDX #$2101
|
||||||
|
_Loop00: ;regs $2101-$210C
|
||||||
|
STZ $00,X ;set Sprite,Character,Tile sizes to lowest, and set addresses to $0000
|
||||||
|
INX
|
||||||
|
CPX #$210D
|
||||||
|
BNE _Loop00
|
||||||
|
|
||||||
|
_Loop01: ;regs $210D-$2114
|
||||||
|
STZ $00,X ;Set all BG scroll values to $0000
|
||||||
|
STZ $00,X
|
||||||
|
INX
|
||||||
|
CPX #$2115
|
||||||
|
BNE _Loop01
|
||||||
|
|
||||||
|
LDA #$80 ;reg $2115
|
||||||
|
STA $2115 ; Initialize VRAM transfer mode to word-access, increment by 1
|
||||||
|
|
||||||
|
STZ $2116 ;regs $2117-$2117
|
||||||
|
STZ $2117 ;VRAM address = $0000
|
||||||
|
|
||||||
|
;reg $2118-$2119
|
||||||
|
;VRAM write register... don't need to initialize
|
||||||
|
|
||||||
|
STZ $211A ;clear Mode7 setting
|
||||||
|
|
||||||
|
LDX #$211B
|
||||||
|
_Loop02: ;regs $211B-$2120
|
||||||
|
STZ $00,X ;clear out the Mode7 matrix values
|
||||||
|
STZ $00,X
|
||||||
|
INX
|
||||||
|
CPX #$2121
|
||||||
|
BNE _Loop02
|
||||||
|
|
||||||
|
;reg $2121 - Color address, doesn't need initilaizing
|
||||||
|
;reg $2122 - Color data, is initialized later
|
||||||
|
|
||||||
|
LDX #$2123
|
||||||
|
_Loop03: ;regs $2123-$2133
|
||||||
|
STZ $00,X ;turn off windows, main screens, sub screens, color addition,
|
||||||
|
INX ;fixed color = $00, no super-impose (external synchronization),
|
||||||
|
CPX #$2134 ;no interlaced mode, normal resolution
|
||||||
|
BNE _Loop03
|
||||||
|
|
||||||
|
;regs $2134-$2136 - multiplication result, no initialization needed
|
||||||
|
;reg $2137 - software H/V latch, no initialization needed
|
||||||
|
;reg $2138 - Sprite data read, no initialization needed
|
||||||
|
;regs $2139-$213A - VRAM data read, no initialization needed
|
||||||
|
;reg $213B - Color RAM data read, no initialization needed
|
||||||
|
;regs $213C-$213D - H/V latched data read, no initialization needed
|
||||||
|
|
||||||
|
STZ $213E ;reg $213E - might not be necesary, but selects PPU master/slave mode
|
||||||
|
;reg $213F - PPU status flag, no initialization needed
|
||||||
|
|
||||||
|
;reg $2140-$2143 - APU communication regs, no initialization required
|
||||||
|
|
||||||
|
;reg $2180 - read/write WRAM register, no initialization required
|
||||||
|
;reg $2181-$2183 - WRAM address, no initialization required
|
||||||
|
|
||||||
|
;reg $4016-$4017 - serial JoyPad read registers, no need to initialize
|
||||||
|
|
||||||
|
|
||||||
|
STZ $4200 ;reg $4200 - disable timers, NMI,and auto-joyread
|
||||||
|
|
||||||
|
LDA #$FF
|
||||||
|
STA $4201 ;reg $4201 - programmable I/O write port, initalize to allow reading at in-port
|
||||||
|
|
||||||
|
;regs $4202-$4203 - multiplication registers, no initialization required
|
||||||
|
;regs $4204-$4206 - division registers, no initialization required
|
||||||
|
|
||||||
|
;regs $4207-$4208 - Horizontal-IRQ timer setting, since we disabled this, it is OK to not init
|
||||||
|
;regs $4209-$420A - Vertical-IRQ timer setting, since we disabled this, it is OK to not init
|
||||||
|
|
||||||
|
STZ $420B ;reg $420B - turn off all general DMA channels
|
||||||
|
STZ $420C ;reg $420C - turn off all H-MA channels
|
||||||
|
|
||||||
|
STZ $420D ;reg $420D - ROM access time to slow (2.68Mhz)
|
||||||
|
|
||||||
|
LDA $4210 ;reg $4210 - NMI status, reading resets
|
||||||
|
|
||||||
|
;reg $4211 - IRQ status, no need to initialize
|
||||||
|
;reg $4212 - H/V blank and JoyRead status, no need to initialize
|
||||||
|
;reg $4213 - programmable I/O inport, no need to initialize
|
||||||
|
|
||||||
|
;reg $4214-$4215 - divide results, no need to initialize
|
||||||
|
;reg $4216-$4217 - multiplication or remainder results, no need to initialize
|
||||||
|
|
||||||
|
;regs $4218-$421f - JoyPad read registers, no need to initialize
|
||||||
|
|
||||||
|
;regs $4300-$437F
|
||||||
|
;no need to intialize because DMA was disabled above
|
||||||
|
;also, we're not sure what all of the registers do, so it is better to leave them at
|
||||||
|
;their reset state value
|
||||||
|
|
||||||
|
JSR ClearVRAM ;Reset VRAM
|
||||||
|
JSR ClearPalette ;Reset colors
|
||||||
|
|
||||||
|
;**** clear Sprite tables ********
|
||||||
|
|
||||||
|
STZ $2102 ;sprites initialized to be off the screen, palette 0, character 0
|
||||||
|
STZ $2103
|
||||||
|
LDX #$0080
|
||||||
|
LDA #$F0
|
||||||
|
_Loop08:
|
||||||
|
STA $2104 ;set X = 240
|
||||||
|
STA $2104 ;set Y = 240
|
||||||
|
STZ $2104 ;set character = $00
|
||||||
|
STZ $2104 ;set priority=0, no flips
|
||||||
|
DEX
|
||||||
|
BNE _Loop08
|
||||||
|
|
||||||
|
LDX #$0020
|
||||||
|
_Loop09:
|
||||||
|
STZ $2104 ;set size bit=0, x MSB = 0
|
||||||
|
DEX
|
||||||
|
BNE _Loop09
|
||||||
|
|
||||||
|
;**** clear WRAM ********
|
||||||
|
|
||||||
|
STZ $2181 ;set WRAM address to $000000
|
||||||
|
STZ $2182
|
||||||
|
STZ $2183
|
||||||
|
|
||||||
|
LDX #$8008
|
||||||
|
STX $4300 ;Set DMA mode to fixed source, BYTE to $2180
|
||||||
|
LDX #wram_fill_byte
|
||||||
|
STX $4302 ;Set source offset
|
||||||
|
LDA #:wram_fill_byte
|
||||||
|
STA $4304 ;Set source bank
|
||||||
|
LDX #$0000
|
||||||
|
STX $4305 ;Set transfer size to 64k bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
LDA #$01 ;now set the next 64k bytes
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
PHK ;make sure Data Bank = Program Bank
|
||||||
|
PLB
|
||||||
|
|
||||||
|
CLI ;enable interrupts again
|
||||||
|
|
||||||
|
LDX $4372 ;get our return address...
|
||||||
|
STX $1FFD
|
||||||
|
LDA $4374
|
||||||
|
STA $1FFF
|
||||||
|
RTL
|
||||||
|
|
||||||
|
wram_fill_byte:
|
||||||
|
.db $00
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ClearVRAM -- Sets every byte of VRAM to zero
|
||||||
|
; In: None
|
||||||
|
; Out: None
|
||||||
|
; Modifies: flags
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
ClearVRAM:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
php
|
||||||
|
|
||||||
|
REP #$30 ; mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
LDA #$80
|
||||||
|
STA $2115 ;Set VRAM port to word access
|
||||||
|
LDX #$1809
|
||||||
|
STX $4300 ;Set DMA mode to fixed source, WORD to $2118/9
|
||||||
|
LDX #$0000
|
||||||
|
STX $2116 ;Set VRAM port address to $0000
|
||||||
|
STX $0000 ;Set $00:0000 to $0000 (assumes scratchpad ram)
|
||||||
|
STX $4302 ;Set source address to $xx:0000
|
||||||
|
LDA #$00
|
||||||
|
STA $4304 ;Set source bank to $00
|
||||||
|
LDX #$FFFF
|
||||||
|
STX $4305 ;Set transfer size to 64k-1 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
STZ $2119 ;clear the last byte of the VRAM
|
||||||
|
|
||||||
|
plp
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ClearPalette -- Reset all palette colors to zero
|
||||||
|
; In: None
|
||||||
|
; Out: None
|
||||||
|
; Modifies: flags
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
ClearPalette:
|
||||||
|
PHX
|
||||||
|
PHP
|
||||||
|
REP #$30 ; mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
STZ $2121
|
||||||
|
LDX #$0100
|
||||||
|
ClearPaletteLoop:
|
||||||
|
STZ $2122
|
||||||
|
STZ $2122
|
||||||
|
DEX
|
||||||
|
BNE ClearPaletteLoop
|
||||||
|
|
||||||
|
PLP
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.ENDS
|
||||||
969
snes/banktest/optixx.inc
Normal file
969
snes/banktest/optixx.inc
Normal file
@@ -0,0 +1,969 @@
|
|||||||
|
; Created with eKid's pcx2snes converter ;
|
||||||
|
|
||||||
|
OptixxData:
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $F8, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $F8, $00, $E0, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FE, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FA, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $2F, $00, $01, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $3F, $00, $07, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FC, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FE, $00, $F8, $00, $E0, $00, $80, $00, $00, $00, $00, $00
|
||||||
|
.db $E0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $07, $00, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $7F, $00, $3F, $00, $0F, $00, $07, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FC, $00, $F8, $00, $F0, $00
|
||||||
|
.db $F8, $00, $E0, $00, $C0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $3F, $00, $1F, $00, $0F, $00, $07, $00, $01, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $7F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00, $FE, $00, $FC, $00, $F8, $00
|
||||||
|
.db $E0, $00, $C0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $1F, $00, $0F, $00, $07, $00, $03, $00, $03, $00, $01, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00
|
||||||
|
.db $F0, $00, $E0, $00, $C0, $00, $C0, $00, $80, $00, $80, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $7F, $00, $3F, $00, $3F, $00, $1F, $00, $0F, $00, $07, $00, $07, $00, $03, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FC, $00, $FC, $00, $F8, $00, $F0, $00, $F0, $00, $F0, $00, $E0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $01, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $7F, $00, $7F, $00, $3F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $C0, $00, $C0, $00, $C0, $00, $80, $00, $80, $00, $80, $00, $80, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $1F, $00, $1F, $00, $1F, $00, $0F, $00, $0F, $00, $0F, $00, $0F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $07, $00, $07, $00, $07, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FC, $00, $FC, $00, $FE, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $01, $00, $01, $00, $03, $00, $01, $00, $01, $00, $01, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FE, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $03, $00, $01, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $07, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $80, $00, $80, $00, $80, $00, $80, $00, $C0, $00, $C0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $07, $00, $07, $00, $07, $00, $0F, $00, $0F, $00, $0F, $00, $1F, $00, $1F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $E0, $00, $E0, $00, $E0, $00, $F0, $00, $F8, $00, $F8, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00
|
||||||
|
.db $3F, $00, $3F, $00, $3F, $00, $7F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FC, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $C0, $00, $E0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $01, $00, $03, $00, $03, $00, $07, $00, $0F, $00, $0F, $00, $1F, $00, $3F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $F0, $00, $F8, $00, $FC, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $01, $00, $03, $00, $03, $00, $07, $00, $0F, $00
|
||||||
|
.db $3F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $C0, $00, $E0, $00, $F0, $00, $F8, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $C0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $07, $00, $0F, $00, $1F, $00
|
||||||
|
.db $1F, $00, $3F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $F8, $00, $FC, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $E0, $00, $F8, $00, $FE, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $03, $00
|
||||||
|
.db $00, $00, $00, $00, $01, $00, $07, $00, $0F, $00, $3F, $00, $FF, $00, $FF, $00
|
||||||
|
.db $3F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $80, $00, $E0, $00, $F8, $00, $FE, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $E0, $00, $FC, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1F, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $07, $00, $3F, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $07, $00, $3F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FD, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $05, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
|
||||||
|
OptixxPalette:
|
||||||
|
.db $00, $00, $10, $42, $00, $00, $00, $00
|
||||||
|
|
||||||
|
; 960 tiles (0 spaces)
|
||||||
|
; 15360 bytes
|
||||||
BIN
snes/banktest/optixx.pcx
Normal file
BIN
snes/banktest/optixx.pcx
Normal file
Binary file not shown.
BIN
snes/banktest/tools/COMDLG32.DLL
Normal file
BIN
snes/banktest/tools/COMDLG32.DLL
Normal file
Binary file not shown.
BIN
snes/banktest/tools/COMDLG32.OCX
Normal file
BIN
snes/banktest/tools/COMDLG32.OCX
Normal file
Binary file not shown.
BIN
snes/banktest/tools/MSVBVM60.DLL
Normal file
BIN
snes/banktest/tools/MSVBVM60.DLL
Normal file
Binary file not shown.
BIN
snes/banktest/tools/pcx2snes.exe
Normal file
BIN
snes/banktest/tools/pcx2snes.exe
Normal file
Binary file not shown.
39
snes/banktest/tools/pcx2snes.txt
Normal file
39
snes/banktest/tools/pcx2snes.txt
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
+----------------+
|
||||||
|
| pcx2snes (win) |
|
||||||
|
+----------------+
|
||||||
|
v1.1
|
||||||
|
by eKid
|
||||||
|
|
||||||
|
to make the snes life a little easier
|
||||||
|
|
||||||
|
how it's used...
|
||||||
|
|
||||||
|
1. Run the program.
|
||||||
|
2. Click Import .PCX to load a pcx file.
|
||||||
|
3. Image should display in top-left corner.
|
||||||
|
4. (Optional) Swap around the colors in the palette by left clicking to select, and right clicking to swap.
|
||||||
|
5. Select Bit-Depth for export and set tile size (bottom left corner).
|
||||||
|
6. Click Export .inc and choose a filename to export to.
|
||||||
|
7. Your Done!
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Command Line mode
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
pcx2snes in.pcx [-oOut.inc] [-bBits] [-nName] [-d (16x16)] [-sColor]
|
||||||
|
|
||||||
|
-parameters in brackets are all optional
|
||||||
|
-there must be no space between the prefix and value
|
||||||
|
|
||||||
|
Parameter Description:
|
||||||
|
|
||||||
|
-o Specifies file to output to, if not supplied it will use the input file with a ".inc" extension.
|
||||||
|
-b Specifies bit depth, can be 2/4/8 for 4/16/256 colors, if not supplied it will use the bit depth of the PCX.
|
||||||
|
-n Specifies name to use as a prefix of the exported array, default is "Untitled".
|
||||||
|
-s Specifies an index to swap color 0 with, this is optional (mainly for transparency).
|
||||||
|
-d Tells pcx2snes to arrange for 16x16 mode.
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Questions/Comments/BUGS can be sent to mukunda51@hotmail.com, or you can find me on EFNet IRC - #snesdev as eKid!
|
||||||
94
snes/banktest/vram2.asm
Normal file
94
snes/banktest/vram2.asm
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
;============================================================================
|
||||||
|
; Includes
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;== Include MemoryMap, Vector Table, and HeaderInfo ==
|
||||||
|
.INCLUDE "header.inc"
|
||||||
|
|
||||||
|
;== Include SNES Initialization routines ==
|
||||||
|
.INCLUDE "init.inc"
|
||||||
|
.INCLUDE "LoadGraphics.asm"
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Main Code
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "MainCode"
|
||||||
|
|
||||||
|
Start:
|
||||||
|
InitSNES ; Clear registers, etc.
|
||||||
|
|
||||||
|
; Load Palette for our tiles
|
||||||
|
LoadPalette OptixxPalette, 0, 16
|
||||||
|
|
||||||
|
; Load Tile data to VRAM
|
||||||
|
;LoadBlockToVRAM TilesData, $0000, $0020 ; 2 tiles, 2bpp, = 32 bytes
|
||||||
|
;LoadBlockToVRAM OptixxData, $0000, 0xa00 ; 160 tiles, 2bpp, = 2560 bytes
|
||||||
|
;LoadBlockToVRAM OptixxData, $0000, 0x1e00 ; 480 tiles, 2bpp, = 7680 bytes
|
||||||
|
LoadBlockToVRAM OptixxData, $0000, 0x3c00 ; 960 tiles, 2bpp, = 15360 bytes
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
sta $2115
|
||||||
|
;ldx #$0800 ; 5AF
|
||||||
|
ldx #$4000 ; 5AF
|
||||||
|
stx $2116
|
||||||
|
|
||||||
|
ldx #$0
|
||||||
|
Start_do:
|
||||||
|
stx $2118
|
||||||
|
inx
|
||||||
|
cpx #960
|
||||||
|
bne Start_do
|
||||||
|
|
||||||
|
; Setup Video modes and other stuff, then turn on the screen
|
||||||
|
jsr SetupVideo
|
||||||
|
|
||||||
|
Infinity:
|
||||||
|
jmp Infinity ; bwa hahahahaha
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; SetupVideo -- Sets up the video mode and tile-related registers
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
SetupVideo:
|
||||||
|
php
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta $2105 ; Set Video mode 0, 8x8 tiles, 4 color BG1/BG2/BG3/BG4
|
||||||
|
|
||||||
|
;lda #$08 ; Set BG1's Tile Map offset to $0800 (Word address)
|
||||||
|
lda #$40 ; Set BG1's Tile Map offset to $2000 (Word address)
|
||||||
|
sta $2107 ; And the Tile Map size to 32x32
|
||||||
|
|
||||||
|
stz $210B ; Set BG1's Character VRAM offset to $0000 (word address)
|
||||||
|
|
||||||
|
lda #$01 ; Enable BG1
|
||||||
|
sta $212C
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
sta $210E
|
||||||
|
sta $210E
|
||||||
|
|
||||||
|
lda #$0F
|
||||||
|
sta $2100 ; Turn on screen, full Brightness
|
||||||
|
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
;============================================================================
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Character Data
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.SECTION "CharacterData02"
|
||||||
|
.INCLUDE "optixx.inc"
|
||||||
|
.ENDS
|
||||||
93
snes/crc/Makefile
Normal file
93
snes/crc/Makefile
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# SDK Config
|
||||||
|
|
||||||
|
|
||||||
|
PLATFORM=mac
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),linux)
|
||||||
|
|
||||||
|
# Linux Wine
|
||||||
|
SDK=/home/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
EMU_DEBUG=/home/david/Devel/arch/snes/tools/zsnes_linux_debug151/src/zsnesd -d
|
||||||
|
else
|
||||||
|
# Mac Wine
|
||||||
|
SDK=/Users/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC=$(WINE) $(SDK)/bin/WDC816CC.exe
|
||||||
|
AS=$(WINE) $(SDK)/bin/WDC816AS.exe
|
||||||
|
LD=$(WINE) $(SDK)/bin/WDCLN.exe
|
||||||
|
PADBIN=$(WINE) tools/padbin.exe
|
||||||
|
PCX2SNES=$(WINE) tools/Pcx2Snes.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Project
|
||||||
|
|
||||||
|
INC=$(SDK)/include
|
||||||
|
LIBS=$(SDK)/lib/cc
|
||||||
|
#OBJS=StartupSnes.obj main.obj pad.obj event.obj myEvents.obj PPU.obj debug.obj ressource.obj
|
||||||
|
OBJS=StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj crc.obj
|
||||||
|
APP=crc.smc
|
||||||
|
GFX=kungfu debugfont
|
||||||
|
|
||||||
|
all: $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
$(EMU) $(APP)
|
||||||
|
|
||||||
|
debugger:
|
||||||
|
$(EMU_DEBUG) $(APP)
|
||||||
|
|
||||||
|
upload:
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
cp -rv $(APP) /Volumes/SNES
|
||||||
|
sync
|
||||||
|
diskutil unmount /Volumes/SNES
|
||||||
|
|
||||||
|
rand:
|
||||||
|
dd if=/dev/urandom of=tmp.rand bs=32k count=6
|
||||||
|
dd if=$(APP) of=tmp.app bs=32k count=2
|
||||||
|
cat tmp.app tmp.rand > $(APP)
|
||||||
|
rm tmp.rand tmp.app
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
|
||||||
|
rand16:
|
||||||
|
dd if=/dev/urandom of=tmp.rand bs=32k count=14
|
||||||
|
dd if=$(APP) of=tmp.app bs=32k count=2
|
||||||
|
cat tmp.app tmp.rand > $(APP)
|
||||||
|
rm tmp.rand tmp.app
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
|
||||||
|
crc:
|
||||||
|
python ../../scripts/crc_xmodem.py $(APP)
|
||||||
|
|
||||||
|
kungfu:
|
||||||
|
$(PCX2SNES) ressource/kungfu -n -c16 -screen
|
||||||
|
|
||||||
|
debugfont:
|
||||||
|
$(PCX2SNES) ressource/debugFont -n -c16 -s8 -o1
|
||||||
|
|
||||||
|
StartupSnes.obj: StartupSnes.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
ressource.obj: ressource.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
%.obj: %.c
|
||||||
|
$(CC) -wl -wp -sop -MC -I $(INC) $?
|
||||||
|
|
||||||
|
$(APP): $(OBJS)
|
||||||
|
$(LD) -HB -M21 -V -T -Pff \
|
||||||
|
-C008000,0000 -U0000,0000 \
|
||||||
|
-Avectors=FFE4,7FE4 \
|
||||||
|
-Aregistration_data=FFB0,7FB0 \
|
||||||
|
-Aressource=18000,8000 \
|
||||||
|
-N $(OBJS) -L$(LIBS) -O $@
|
||||||
|
$(PADBIN) 0x40000 $(APP)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.obj
|
||||||
80
snes/crc/PPU.c
Normal file
80
snes/crc/PPU.c
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
byte tileMapLocation[4];
|
||||||
|
word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void) {
|
||||||
|
byte Status;
|
||||||
|
do {
|
||||||
|
Status = *(byte*)0x4210;
|
||||||
|
} while (!(Status & 0x80));
|
||||||
|
}
|
||||||
|
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber) {
|
||||||
|
tileMapLocation[bgNumber] = ((vramDst >> 8) & 0xfc) | ( screenProp & 0x03 );
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreTileMapLocation(byte bgNumber) {
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber) {
|
||||||
|
characterLocation[bgNumber] = vramDst;
|
||||||
|
if(bgNumber < 2) {
|
||||||
|
*(byte*) 0x210b = (characterLocation[1] >> 8 & 0xf0 ) + (characterLocation[0] >> 12);
|
||||||
|
} else {
|
||||||
|
*(byte*) 0x210c = (characterLocation[3] >> 8 & 0xf0 ) + (characterLocation[2] >> 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreCharacterLocation(byte bgNumber) {
|
||||||
|
setCharacterLocation(characterLocation[bgNumber], bgNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMByteWrite(byte value, word vramDst) {
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(byte*)0x2118 = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMLoad(word src, word vramDst, word size) {
|
||||||
|
// set address in VRam for read or write ($2116) + block size transfer ($2115)
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x1801; // set DMA control register (1 word inc)
|
||||||
|
// and destination ($21xx xx -> 0x18)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size) {
|
||||||
|
|
||||||
|
// set address in VRam for read or write + block size
|
||||||
|
*(byte*)0x2121 = cgramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x2200; // set DMA control register (1 byte inc)
|
||||||
|
// and destination ($21xx xx -> 022)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
11
snes/crc/PPU.h
Normal file
11
snes/crc/PPU.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extern byte tileMapLocation[4];
|
||||||
|
extern word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void);
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber);
|
||||||
|
void restoreTileMapLocation(byte bgNumber);
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber);
|
||||||
|
void restoreCharacterLocation(byte bgNumber);
|
||||||
|
void VRAMByteWrite(byte value, word vramDst);
|
||||||
|
void VRAMLoad(word src, word vramDst, word size);
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size);
|
||||||
240
snes/crc/StartupSnes.asm
Normal file
240
snes/crc/StartupSnes.asm
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
; SNES ROM startup code
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Define a special section in case most of the code is not in bank 0. ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
;STACK EQU $01ff ;CHANGE THIS FOR YOUR SYSTEM
|
||||||
|
|
||||||
|
;STARTUP SECTION OFFSET $008000
|
||||||
|
|
||||||
|
CODE
|
||||||
|
|
||||||
|
XDEF START
|
||||||
|
START:
|
||||||
|
XREF _~main
|
||||||
|
|
||||||
|
sei ; Disabled interrupts
|
||||||
|
clc ; clear carry to switch to native mode
|
||||||
|
xce ; Xchange carry & emulation bit. native mode
|
||||||
|
rep #$18 ; Binary mode (decimal mode off), X/Y 16 bit
|
||||||
|
LONGI ON
|
||||||
|
ldx #$1FFF ; set stack to $1FFF
|
||||||
|
txs
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
; Init data used for heap
|
||||||
|
; see heap definition below
|
||||||
|
XREF _~_heap_top
|
||||||
|
XREF _~_mem_start
|
||||||
|
stz _~_heap_top
|
||||||
|
stz _~_mem_start
|
||||||
|
|
||||||
|
XREF _~preInit
|
||||||
|
jsr >_~preInit
|
||||||
|
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda #$8F ; screen off, full brightness
|
||||||
|
sta $2100 ; brightness + screen enable register
|
||||||
|
stz $2101 ; Sprite register (size + address in VRAM)
|
||||||
|
stz $2102 ; Sprite registers (address of sprite memory [OAM])
|
||||||
|
stz $2103 ; "" ""
|
||||||
|
stz $2105 ; Mode 0, = Graphic mode register
|
||||||
|
stz $2106 ; noplanes, no mosaic, = Mosaic register
|
||||||
|
stz $2107 ; Plane 0 map VRAM location
|
||||||
|
stz $2108 ; Plane 1 map VRAM location
|
||||||
|
stz $2109 ; Plane 2 map VRAM location
|
||||||
|
stz $210A ; Plane 3 map VRAM location
|
||||||
|
stz $210B ; Plane 0+1 Tile data location
|
||||||
|
stz $210C ; Plane 2+3 Tile data location
|
||||||
|
stz $210D ; Plane 0 scroll x (first 8 bits)
|
||||||
|
stz $210D ; Plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210E ; Plane 0 scroll y (first 8 bits)
|
||||||
|
stz $210E ; Plane 0 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210F ; Plane 1 scroll x (first 8 bits)
|
||||||
|
stz $210F ; Plane 1 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2110 ; Plane 1 scroll y (first 8 bits)
|
||||||
|
stz $2110 ; Plane 1 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2111 ; Plane 2 scroll x (first 8 bits)
|
||||||
|
stz $2111 ; Plane 2 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2112 ; Plane 2 scroll y (first 8 bits)
|
||||||
|
stz $2112 ; Plane 2 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2113 ; Plane 3 scroll x (first 8 bits)
|
||||||
|
stz $2113 ; Plane 3 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2114 ; Plane 3 scroll y (first 8 bits)
|
||||||
|
stz $2114 ; Plane 3 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
lda #$80 ; increase VRAM address after writing to $2119
|
||||||
|
sta $2115 ; VRAM address increment register
|
||||||
|
stz $2116 ; VRAM address low
|
||||||
|
stz $2117 ; VRAM address high
|
||||||
|
stz $211A ; Initial Mode 7 setting register
|
||||||
|
stz $211B ; Mode 7 matrix parameter A register (low)
|
||||||
|
lda #$01
|
||||||
|
sta $211B ; Mode 7 matrix parameter A register (high)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (low)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (high)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (low)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (high)
|
||||||
|
stz $211E ; Mode 7 matrix parameter D register (low)
|
||||||
|
sta $211E ; Mode 7 matrix parameter D register (high)
|
||||||
|
stz $211F ; Mode 7 center position X register (low)
|
||||||
|
stz $211F ; Mode 7 center position X register (high)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (low)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (high)
|
||||||
|
stz $2121 ; Color number register ($0-ff)
|
||||||
|
stz $2123 ; BG1 & BG2 Window mask setting register
|
||||||
|
stz $2124 ; BG3 & BG4 Window mask setting register
|
||||||
|
stz $2125 ; OBJ & Color Window mask setting register
|
||||||
|
stz $2126 ; Window 1 left position register
|
||||||
|
stz $2127 ; Window 2 left position register
|
||||||
|
stz $2128 ; Window 3 left position register
|
||||||
|
stz $2129 ; Window 4 left position register
|
||||||
|
stz $212A ; BG1, BG2, BG3, BG4 Window Logic register
|
||||||
|
stz $212B ; OBJ, Color Window Logic Register (or,and,xor,xnor)
|
||||||
|
sta $212C ; Main Screen designation (planes, sprites enable)
|
||||||
|
stz $212D ; Sub Screen designation
|
||||||
|
stz $212E ; Window mask for Main Screen
|
||||||
|
stz $212F ; Window mask for Sub Screen
|
||||||
|
lda #$30
|
||||||
|
sta $2130 ; Color addition & screen addition init setting
|
||||||
|
stz $2131 ; Add/Sub sub designation for screen, sprite, color
|
||||||
|
lda #$E0
|
||||||
|
sta $2132 ; color data for addition/subtraction
|
||||||
|
stz $2133 ; Screen setting (interlace x,y/enable SFX data)
|
||||||
|
stz $4200 ; Enable V-blank, interrupt, Joypad register
|
||||||
|
lda #$FF
|
||||||
|
sta $4201 ; Programmable I/O port
|
||||||
|
stz $4202 ; Multiplicand A
|
||||||
|
stz $4203 ; Multiplier B
|
||||||
|
stz $4204 ; Multiplier C
|
||||||
|
stz $4205 ; Multiplicand C
|
||||||
|
stz $4206 ; Divisor B
|
||||||
|
stz $4207 ; Horizontal Count Timer
|
||||||
|
stz $4208 ; Horizontal Count Timer MSB (most significant bit)
|
||||||
|
stz $4209 ; Vertical Count Timer
|
||||||
|
stz $420A ; Vertical Count Timer MSB
|
||||||
|
stz $420B ; General DMA enable (bits 0-7)
|
||||||
|
stz $420C ; Horizontal DMA (HDMA) enable (bits 0-7)
|
||||||
|
stz $420D ; Access cycle designation (slow/fast rom)
|
||||||
|
cli ; Enable interrupts
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
jsr >_~main
|
||||||
|
brk
|
||||||
|
|
||||||
|
XDEF IRQ
|
||||||
|
IRQ:
|
||||||
|
XREF _~IRQHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jsr _~IRQHandler
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
XDEF NMI
|
||||||
|
NMI:
|
||||||
|
XREF _~NMIHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phd
|
||||||
|
phb
|
||||||
|
lda #$0000
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda $4210 ; Read NMI
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
jsr _~NMIHandler
|
||||||
|
plb
|
||||||
|
pld
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
DIRQ:
|
||||||
|
rti
|
||||||
|
|
||||||
|
ENDS
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Heap definition ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
DATA
|
||||||
|
|
||||||
|
XDEF _~heap_start
|
||||||
|
XDEF _~heap_end
|
||||||
|
|
||||||
|
_~heap_start:
|
||||||
|
WORD $1000
|
||||||
|
_~heap_end:
|
||||||
|
WORD $1200
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES ROM Registartion Data ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
REGISTRATION_DATA SECTION
|
||||||
|
|
||||||
|
MAKER_CODE FCC /FF/
|
||||||
|
GAME_CODE FCC /SMWJ/
|
||||||
|
FIXED_VALUE0 BYTE $00, $00, $00, $00, $00, $00, $00
|
||||||
|
EXPANSION_RAM_SIZE BYTE $00
|
||||||
|
SPECIAL_VERSION BYTE $00
|
||||||
|
CARTRIDGE_TYPE_SUB BYTE $00
|
||||||
|
GAME_TITLE FCC /GAME TITLE !/
|
||||||
|
;012345678901234567890;
|
||||||
|
MAP_MODE BYTE $20
|
||||||
|
CARTRIDGE_SIZE BYTE $00
|
||||||
|
ROM_SIZE BYTE $09
|
||||||
|
RAM_SIZE BYTE $00
|
||||||
|
DESTINATION_CODE BYTE $00
|
||||||
|
FIXED_VALUE1 BYTE $33
|
||||||
|
MASK_ROM_VERSION BYTE $00
|
||||||
|
COMPLEMENT_CHECK BYTE $00, $00
|
||||||
|
CHEKSUM BYTE $00, $00
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES Interrupts and Reset vector ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
VECTORS SECTION
|
||||||
|
; Native vector
|
||||||
|
N_COP DW DIRQ
|
||||||
|
N_BRK DW DIRQ
|
||||||
|
N_ABORT DW DIRQ
|
||||||
|
N_NMI DW NMI
|
||||||
|
N_RSRVD DW DIRQ
|
||||||
|
N_IRQ DW IRQ
|
||||||
|
DS 4
|
||||||
|
; Emulation vector
|
||||||
|
E_COP DW DIRQ
|
||||||
|
E_RSRVD DW DIRQ
|
||||||
|
E_ABORT DW DIRQ
|
||||||
|
E_NMI DW DIRQ
|
||||||
|
E_RESET DW START
|
||||||
|
E_IRQ DW DIRQ
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
37
snes/crc/crc.c
Normal file
37
snes/crc/crc.c
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update (char far *data, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word)data[j]<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update_mem (unsigned long addr, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word) *(byte*)(addr+j)<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
4
snes/crc/crc.h
Normal file
4
snes/crc/crc.h
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
word crc_update (byte *data, word size);
|
||||||
|
word crc_update_mem (unsigned long, word size);
|
||||||
|
|
||||||
2
snes/crc/data.h
Normal file
2
snes/crc/data.h
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
typedef unsigned char byte;
|
||||||
|
typedef unsigned short word;
|
||||||
60
snes/crc/debug.c
Normal file
60
snes/crc/debug.c
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#include "data.h"
|
||||||
|
#include "pad.h"
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "ressource.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
word debugMap[0x400];
|
||||||
|
void initDebugMap(void) {
|
||||||
|
word i;
|
||||||
|
for(i=0; i<0x400; i++) {
|
||||||
|
debugMap[i] = 0x00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char hex_chars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||||
|
|
||||||
|
void int2hex(unsigned long number, char *buf,word size)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
long a;
|
||||||
|
for (a = 0; a < size; ++a) {
|
||||||
|
buf[a] = (i >> ((long)size * (2 * 2 - 1 - a))) & 0xf;
|
||||||
|
if (buf[a] < 10)
|
||||||
|
buf[a] += '0';
|
||||||
|
else
|
||||||
|
buf[a] += 'A' - 10;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//buf[a] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long n;
|
||||||
|
unsigned char i;
|
||||||
|
//unsigned char x;
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
n = number >> 4;
|
||||||
|
//x = (number - (n << 4));
|
||||||
|
buf[size-i-1] = hex_chars[(number - (n << 4))];
|
||||||
|
number = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeln(char *buffer,word y){
|
||||||
|
char i;
|
||||||
|
waitForVBlank();
|
||||||
|
for(i=0; i<32; i++) {
|
||||||
|
waitForVBlank();
|
||||||
|
VRAMByteWrite((byte) (buffer[i]-32), (word) (0x4000+i+(y*0x20)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void enableDebugScreen(void){
|
||||||
|
VRAMLoad((word) debugFont_pic, 0x5000, 2048);
|
||||||
|
CGRAMLoad((word) debugFont_pal, (byte) 0x00, (word) 16);
|
||||||
|
VRAMLoad((word) debugMap, 0x4000, 0x0800);
|
||||||
|
setTileMapLocation(0x4000, (byte) 0x00, (byte) 0);
|
||||||
|
setCharacterLocation(0x5000, (byte) 0);
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
}
|
||||||
5
snes/crc/debug.h
Normal file
5
snes/crc/debug.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
void initDebugMap(void);
|
||||||
|
void debug(void);
|
||||||
|
void int2hex(unsigned long i, char *buf,word size);
|
||||||
|
void writeln(char* line,word y);
|
||||||
|
void enableDebugScreen(void);
|
||||||
294
snes/crc/event.asm
Normal file
294
snes/crc/event.asm
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
;:ts=8
|
||||||
|
R0 equ 1
|
||||||
|
R1 equ 5
|
||||||
|
R2 equ 9
|
||||||
|
R3 equ 13
|
||||||
|
code
|
||||||
|
xdef __initEvents
|
||||||
|
func
|
||||||
|
__initEvents:
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
stz |__events
|
||||||
|
rts
|
||||||
|
L2 equ 0
|
||||||
|
L3 equ 1
|
||||||
|
ends
|
||||||
|
efunc
|
||||||
|
code
|
||||||
|
xdef __createEvent
|
||||||
|
func
|
||||||
|
__createEvent:
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
tsc
|
||||||
|
sec
|
||||||
|
sbc #L5
|
||||||
|
tcs
|
||||||
|
phd
|
||||||
|
tcd
|
||||||
|
callback_0 set 3
|
||||||
|
myEvent_1 set 0
|
||||||
|
pea #<$8
|
||||||
|
jsr __malloc
|
||||||
|
sta <L6+myEvent_1
|
||||||
|
lda #$0
|
||||||
|
sta (<L6+myEvent_1)
|
||||||
|
lda <L5+callback_0
|
||||||
|
ldy #$2
|
||||||
|
sta (<L6+myEvent_1),Y
|
||||||
|
lda #$0
|
||||||
|
ldy #$6
|
||||||
|
sta (<L6+myEvent_1),Y
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
sta (<L6+myEvent_1),Y
|
||||||
|
lda <L6+myEvent_1
|
||||||
|
tay
|
||||||
|
lda <L5+1
|
||||||
|
sta <L5+1+2
|
||||||
|
pld
|
||||||
|
tsc
|
||||||
|
clc
|
||||||
|
adc #L5+2
|
||||||
|
tcs
|
||||||
|
tya
|
||||||
|
rts
|
||||||
|
L5 equ 2
|
||||||
|
L6 equ 1
|
||||||
|
ends
|
||||||
|
efunc
|
||||||
|
code
|
||||||
|
xdef __addEvent
|
||||||
|
func
|
||||||
|
__addEvent:
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
tsc
|
||||||
|
sec
|
||||||
|
sbc #L8
|
||||||
|
tcs
|
||||||
|
phd
|
||||||
|
tcd
|
||||||
|
callback_0 set 3
|
||||||
|
noDuplicateCallback_0 set 5
|
||||||
|
lastEvent_1 set 0
|
||||||
|
myEvent_1 set 2
|
||||||
|
lda |__events
|
||||||
|
bne L10001
|
||||||
|
pei <L8+callback_0
|
||||||
|
jsr __createEvent
|
||||||
|
sta |__events
|
||||||
|
L11:
|
||||||
|
tay
|
||||||
|
lda <L8+1
|
||||||
|
sta <L8+1+4
|
||||||
|
pld
|
||||||
|
tsc
|
||||||
|
clc
|
||||||
|
adc #L8+4
|
||||||
|
tcs
|
||||||
|
tya
|
||||||
|
rts
|
||||||
|
L10001:
|
||||||
|
lda |__events
|
||||||
|
bra L20000
|
||||||
|
L20004:
|
||||||
|
ldy #$2
|
||||||
|
lda (<L9+lastEvent_1),Y
|
||||||
|
cmp <L8+callback_0
|
||||||
|
bne L10005
|
||||||
|
L20005:
|
||||||
|
lda #$0
|
||||||
|
bra L11
|
||||||
|
L20002:
|
||||||
|
lda <L8+noDuplicateCallback_0
|
||||||
|
cmp #<$1
|
||||||
|
bne L10004
|
||||||
|
ldy #$2
|
||||||
|
lda (<L9+lastEvent_1),Y
|
||||||
|
cmp <L8+callback_0
|
||||||
|
beq L20005
|
||||||
|
L10004:
|
||||||
|
ldy #$6
|
||||||
|
lda (<L9+lastEvent_1),Y
|
||||||
|
L20000:
|
||||||
|
sta <L9+lastEvent_1
|
||||||
|
ldy #$6
|
||||||
|
lda (<L9+lastEvent_1),Y
|
||||||
|
bne L20002
|
||||||
|
lda <L8+noDuplicateCallback_0
|
||||||
|
cmp #<$1
|
||||||
|
beq L20004
|
||||||
|
L10005:
|
||||||
|
pei <L8+callback_0
|
||||||
|
jsr __createEvent
|
||||||
|
sta <L9+myEvent_1
|
||||||
|
lda <L9+lastEvent_1
|
||||||
|
ldy #$4
|
||||||
|
sta (<L9+myEvent_1),Y
|
||||||
|
lda <L9+myEvent_1
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sta (<L9+lastEvent_1),Y
|
||||||
|
lda <L9+myEvent_1
|
||||||
|
bra L11
|
||||||
|
L8 equ 4
|
||||||
|
L9 equ 1
|
||||||
|
ends
|
||||||
|
efunc
|
||||||
|
code
|
||||||
|
xdef __removeEvent
|
||||||
|
func
|
||||||
|
__removeEvent:
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
tsc
|
||||||
|
sec
|
||||||
|
sbc #L17
|
||||||
|
tcs
|
||||||
|
phd
|
||||||
|
tcd
|
||||||
|
eventElement_0 set 3
|
||||||
|
alone_1 set 0
|
||||||
|
next_1 set 1
|
||||||
|
previous_1 set 3
|
||||||
|
sep #$20
|
||||||
|
longa off
|
||||||
|
stz <L18+alone_1
|
||||||
|
rep #$20
|
||||||
|
longa on
|
||||||
|
ldy #$6
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
sta <L18+next_1
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
sta <L18+previous_1
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
beq L10006
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
beq L10006
|
||||||
|
sep #$20
|
||||||
|
longa off
|
||||||
|
inc <L18+alone_1
|
||||||
|
rep #$20
|
||||||
|
longa on
|
||||||
|
lda <L18+previous_1
|
||||||
|
sta (<L18+next_1),Y
|
||||||
|
lda <L18+next_1
|
||||||
|
bra L20007
|
||||||
|
L10006:
|
||||||
|
ldy #$6
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
beq L10008
|
||||||
|
sep #$20
|
||||||
|
longa off
|
||||||
|
inc <L18+alone_1
|
||||||
|
rep #$20
|
||||||
|
longa on
|
||||||
|
lda #$0
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
sta (<L18+next_1),Y
|
||||||
|
lda <L18+next_1
|
||||||
|
sta |__events
|
||||||
|
bra L10007
|
||||||
|
L10008:
|
||||||
|
ldy #$4
|
||||||
|
lda (<L17+eventElement_0),Y
|
||||||
|
beq L10007
|
||||||
|
sep #$20
|
||||||
|
longa off
|
||||||
|
inc <L18+alone_1
|
||||||
|
rep #$20
|
||||||
|
longa on
|
||||||
|
lda #$0
|
||||||
|
L20007:
|
||||||
|
ldy #$6
|
||||||
|
sta (<L18+previous_1),Y
|
||||||
|
L10007:
|
||||||
|
pei <L17+eventElement_0
|
||||||
|
jsr __free
|
||||||
|
lda <L18+alone_1
|
||||||
|
and #$ff
|
||||||
|
bne L24
|
||||||
|
stz |__events
|
||||||
|
L24:
|
||||||
|
lda <L17+1
|
||||||
|
sta <L17+1+2
|
||||||
|
pld
|
||||||
|
tsc
|
||||||
|
clc
|
||||||
|
adc #L17+2
|
||||||
|
tcs
|
||||||
|
rts
|
||||||
|
L17 equ 5
|
||||||
|
L18 equ 1
|
||||||
|
ends
|
||||||
|
efunc
|
||||||
|
code
|
||||||
|
xdef __processEvents
|
||||||
|
func
|
||||||
|
__processEvents:
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
tsc
|
||||||
|
sec
|
||||||
|
sbc #L25
|
||||||
|
tcs
|
||||||
|
phd
|
||||||
|
tcd
|
||||||
|
currentEvent_1 set 0
|
||||||
|
returnValue_1 set 2
|
||||||
|
lda |__events
|
||||||
|
L20008:
|
||||||
|
sta <L26+currentEvent_1
|
||||||
|
lda <L26+currentEvent_1
|
||||||
|
bne L20010
|
||||||
|
pld
|
||||||
|
tsc
|
||||||
|
clc
|
||||||
|
adc #L25
|
||||||
|
tcs
|
||||||
|
rts
|
||||||
|
L20010:
|
||||||
|
lda (<L26+currentEvent_1)
|
||||||
|
pha
|
||||||
|
ldy #$2
|
||||||
|
lda (<L26+currentEvent_1),Y
|
||||||
|
xref __~cal
|
||||||
|
jsr __~cal
|
||||||
|
sep #$20
|
||||||
|
longa off
|
||||||
|
sta <L26+returnValue_1
|
||||||
|
cmp #<$1
|
||||||
|
rep #$20
|
||||||
|
longa on
|
||||||
|
bne L10014
|
||||||
|
lda (<L26+currentEvent_1)
|
||||||
|
ina
|
||||||
|
sta (<L26+currentEvent_1)
|
||||||
|
bra L10015
|
||||||
|
L10014:
|
||||||
|
pei <L26+currentEvent_1
|
||||||
|
jsr __removeEvent
|
||||||
|
L10015:
|
||||||
|
ldy #$6
|
||||||
|
lda (<L26+currentEvent_1),Y
|
||||||
|
bra L20008
|
||||||
|
L25 equ 3
|
||||||
|
L26 equ 1
|
||||||
|
ends
|
||||||
|
efunc
|
||||||
|
xref __malloc
|
||||||
|
xref __free
|
||||||
|
udata
|
||||||
|
xdef __events
|
||||||
|
__events
|
||||||
|
ds 2
|
||||||
|
ends
|
||||||
101
snes/crc/event.c
Normal file
101
snes/crc/event.c
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "data.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
event *events;
|
||||||
|
|
||||||
|
void initEvents(void) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
event *createEvent(char (*callback)(word counter)) {
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
myEvent = (event*) malloc(sizeof(event));
|
||||||
|
|
||||||
|
myEvent->VBlankCount = 0;
|
||||||
|
myEvent->callback = callback;
|
||||||
|
myEvent->nextEvent = NULL;
|
||||||
|
myEvent->previousEvent = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
event* addEvent(char (*callback)(word counter), int noDuplicateCallback) {
|
||||||
|
|
||||||
|
event *lastEvent;
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
if(events == NULL) {
|
||||||
|
events = createEvent(callback);
|
||||||
|
return events;
|
||||||
|
} else {
|
||||||
|
lastEvent = events;
|
||||||
|
// TODO optimise this with noduplicate
|
||||||
|
while(lastEvent->nextEvent != NULL) {
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
lastEvent = lastEvent->nextEvent;
|
||||||
|
}
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
myEvent = createEvent(callback);
|
||||||
|
myEvent->previousEvent = lastEvent;
|
||||||
|
lastEvent->nextEvent = myEvent;
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeEvent(event *eventElement) {
|
||||||
|
|
||||||
|
byte alone = 0;
|
||||||
|
event *next, *previous;
|
||||||
|
|
||||||
|
next = eventElement->nextEvent;
|
||||||
|
previous = eventElement->previousEvent;
|
||||||
|
|
||||||
|
if(eventElement->nextEvent != NULL && eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = previous;
|
||||||
|
previous->nextEvent = next;
|
||||||
|
|
||||||
|
} else if(eventElement->nextEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = NULL;
|
||||||
|
events = next;
|
||||||
|
|
||||||
|
} else if(eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
previous->nextEvent = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(eventElement);
|
||||||
|
|
||||||
|
if(alone == 0) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void processEvents(void) {
|
||||||
|
|
||||||
|
event *currentEvent;
|
||||||
|
char returnValue;
|
||||||
|
|
||||||
|
currentEvent = events;
|
||||||
|
while(currentEvent != NULL) {
|
||||||
|
returnValue = currentEvent->callback(currentEvent->VBlankCount);
|
||||||
|
if(returnValue == EVENT_CONTINUE) {
|
||||||
|
currentEvent->VBlankCount++;
|
||||||
|
} else {
|
||||||
|
removeEvent(currentEvent);
|
||||||
|
}
|
||||||
|
currentEvent = currentEvent->nextEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
snes/crc/event.h
Normal file
16
snes/crc/event.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
typedef struct event{
|
||||||
|
word VBlankCount;
|
||||||
|
char (*callback)(word counter);
|
||||||
|
struct event *previousEvent;
|
||||||
|
struct event *nextEvent;
|
||||||
|
} event;
|
||||||
|
|
||||||
|
#define EVENT_STOP 0
|
||||||
|
#define EVENT_CONTINUE 1
|
||||||
|
|
||||||
|
extern event *events;
|
||||||
|
|
||||||
|
void initEvents(void);
|
||||||
|
extern event* addEvent(char (*callback)(word counter), int noDuplicateCallback);
|
||||||
|
extern void removeEvent(event *eventElement);
|
||||||
|
extern void processEvents(void);
|
||||||
10
snes/crc/hex.py
Normal file
10
snes/crc/hex.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
number=0xffaaee
|
||||||
|
size = 6
|
||||||
|
print hex(number)
|
||||||
|
|
||||||
|
for i in range(0,size):
|
||||||
|
n = number >> 4;
|
||||||
|
print size-i-1, hex(number - (n << 4));
|
||||||
|
number = n;
|
||||||
|
|
||||||
72
snes/crc/main.c
Normal file
72
snes/crc/main.c
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
#include "myEvents.h";
|
||||||
|
#include "ressource.h";
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
padStatus pad1;
|
||||||
|
|
||||||
|
void initInternalRegisters(void) {
|
||||||
|
characterLocation[0] = 0x0000;
|
||||||
|
characterLocation[1] = 0x0000;
|
||||||
|
characterLocation[2] = 0x0000;
|
||||||
|
characterLocation[3] = 0x0000;
|
||||||
|
initDebugMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void preInit(void) {
|
||||||
|
// For testing purpose ...
|
||||||
|
// Insert code here to be executed before register init
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
word i,j;
|
||||||
|
word crc01;
|
||||||
|
word crc02;
|
||||||
|
padStatus pad1;
|
||||||
|
char line_header[32] = "BANK CRC ADDR 123456789ABCDEF";
|
||||||
|
char line[32] = " ";
|
||||||
|
char test_buffer[] = "da";
|
||||||
|
unsigned long addr;
|
||||||
|
initInternalRegisters();
|
||||||
|
|
||||||
|
*(byte*) 0x2105 = 0x01; // MODE 1 value
|
||||||
|
*(byte*) 0x212c = 0x01; // Plane 0 (bit one) enable register
|
||||||
|
*(byte*) 0x212d = 0x00; // All subPlane disable
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
|
||||||
|
enableDebugScreen();
|
||||||
|
|
||||||
|
writeln(line_header,0);
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
addr = 0x008000;
|
||||||
|
crc02 = crc_update(test_buffer,2);
|
||||||
|
for(j=0; j<16; j++) {
|
||||||
|
crc01 = crc_update_mem(addr,0x8000);
|
||||||
|
int2hex((unsigned long)j,&line[0],4);
|
||||||
|
int2hex((unsigned long)crc01,&line[5],4);
|
||||||
|
int2hex((unsigned long)addr,&line[10],6);
|
||||||
|
writeln(line,j+1);
|
||||||
|
addr += 0x010000;
|
||||||
|
}
|
||||||
|
while(!pad1.start) {
|
||||||
|
waitForVBlank();
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRQHandler(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NMIHandler(void) {
|
||||||
|
//processEvents();
|
||||||
|
}
|
||||||
97
snes/crc/myEvents.c
Normal file
97
snes/crc/myEvents.c
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
extern padStatus pad1;
|
||||||
|
extern word scrollValue;
|
||||||
|
|
||||||
|
char fadeOut(word counter) {
|
||||||
|
static byte fadeOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeOutValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
fadeOutValue--;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeOutValue;
|
||||||
|
|
||||||
|
if(fadeOutValue == 0x00) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char fadeIn(word counter) {
|
||||||
|
static byte fadeInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeInValue = 0x00;
|
||||||
|
} else {
|
||||||
|
fadeInValue++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeInValue;
|
||||||
|
|
||||||
|
if(fadeInValue >= 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicOut(word counter) {
|
||||||
|
static byte mosaicOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicOutValue = 0xff;
|
||||||
|
} else {
|
||||||
|
mosaicOutValue -= 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicOutValue;
|
||||||
|
|
||||||
|
if(mosaicOutValue == 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicIn(word counter) {
|
||||||
|
static byte mosaicInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicInValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
mosaicInValue += 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicInValue;
|
||||||
|
|
||||||
|
if(mosaicInValue == 0xff) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char NMIReadPad(word counter) {
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
char scrollLeft(word counter) {
|
||||||
|
scrollValue++;
|
||||||
|
|
||||||
|
*(byte*) 0x210d = (byte) scrollValue;
|
||||||
|
*(byte*) 0x210d = (byte) (scrollValue>>8);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
6
snes/crc/myEvents.h
Normal file
6
snes/crc/myEvents.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
char fadeOut(word counter);
|
||||||
|
char fadeIn(word counter);
|
||||||
|
char mosaicOut(word counter);
|
||||||
|
char mosaicIn(word counter);
|
||||||
|
char NMIReadPad(word counter);
|
||||||
|
char scrollLeft(word counter);
|
||||||
17
snes/crc/pad.c
Normal file
17
snes/crc/pad.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
|
||||||
|
void enablePad(void) {
|
||||||
|
// Enable pad reading and NMI
|
||||||
|
*(byte*)0x4200 = 0x81;
|
||||||
|
}
|
||||||
|
|
||||||
|
padStatus readPad(byte padNumber) {
|
||||||
|
word test;
|
||||||
|
padStatus *status;
|
||||||
|
padNumber = padNumber << 1;
|
||||||
|
test = (word) *(byte*)0x4218+padNumber << 8;
|
||||||
|
test |= (word) *(byte*)0x4219+padNumber;
|
||||||
|
status = (padStatus *) &test;
|
||||||
|
return *status;
|
||||||
|
}
|
||||||
19
snes/crc/pad.h
Normal file
19
snes/crc/pad.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
typedef struct padStatus{
|
||||||
|
byte right:1;
|
||||||
|
byte left:1;
|
||||||
|
byte down:1;
|
||||||
|
byte up:1;
|
||||||
|
byte start:1; // Enter
|
||||||
|
byte select:1; // Space
|
||||||
|
byte Y:1; // X
|
||||||
|
byte B:1; // C
|
||||||
|
//--------------------------------
|
||||||
|
byte Dummy:4;
|
||||||
|
byte R:1; // Z
|
||||||
|
byte L:1; // A
|
||||||
|
byte X:1; // S
|
||||||
|
byte A:1; // D
|
||||||
|
} padStatus;
|
||||||
|
|
||||||
|
extern void enablePad(void);
|
||||||
|
extern padStatus readPad(byte padNumber);
|
||||||
23
snes/crc/ressource.asm
Normal file
23
snes/crc/ressource.asm
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
ressource .section
|
||||||
|
|
||||||
|
; XDEF __title_map
|
||||||
|
;__title_map:
|
||||||
|
; INSERT ressource/kungfu.map
|
||||||
|
;
|
||||||
|
; XDEF __title_pic
|
||||||
|
;__title_pic:
|
||||||
|
; INSERT ressource/kungfu.pic
|
||||||
|
;
|
||||||
|
; XDEF __title_pal
|
||||||
|
;__title_pal:
|
||||||
|
;make INSERT ressource/kungfu.clr
|
||||||
|
|
||||||
|
XDEF _~debugFont_pic
|
||||||
|
_~debugFont_pic
|
||||||
|
INSERT ressource/debugFont.pic
|
||||||
|
|
||||||
|
XDEF _~debugFont_pal
|
||||||
|
_~debugFont_pal
|
||||||
|
INSERT ressource/debugFont.clr
|
||||||
|
|
||||||
|
.ends
|
||||||
3
snes/crc/ressource.h
Normal file
3
snes/crc/ressource.h
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
extern word debugFont_pic[];
|
||||||
|
extern word debugFont_pal[];
|
||||||
BIN
snes/crc/ressource/debugFont.clr
Normal file
BIN
snes/crc/ressource/debugFont.clr
Normal file
Binary file not shown.
BIN
snes/crc/ressource/debugFont.pcx
Normal file
BIN
snes/crc/ressource/debugFont.pcx
Normal file
Binary file not shown.
BIN
snes/crc/ressource/debugFont.pic
Normal file
BIN
snes/crc/ressource/debugFont.pic
Normal file
Binary file not shown.
BIN
snes/crc/ressource/debugFont.xcf
Normal file
BIN
snes/crc/ressource/debugFont.xcf
Normal file
Binary file not shown.
BIN
snes/crc/ressource/kungfu.clr
Normal file
BIN
snes/crc/ressource/kungfu.clr
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user