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.
|
||||
|
||||
AVRDUDE_PORT = /dev/tty.PL2303-00002006
|
||||
AVRDUDE_PORT = /dev/tty.PL2303-00001124
|
||||
|
||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
# Revision: $Id: checksize 83 2006-01-05 22:20:53Z cs $
|
||||
|
||||
error=0
|
||||
codelimit=8192 # default value
|
||||
datalimit=992 # default value; leave 32 bytes for stack
|
||||
codelimit=2048 # default value
|
||||
datalimit=96 # default value; leave 32 bytes for stack
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
codelimit="$2"
|
||||
|
||||
@@ -39,14 +39,72 @@ extern FILE uart_stdout;
|
||||
#define LED_PORT PORTD
|
||||
#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 BLOCKS 512
|
||||
#define BLOCKS (ROMSIZE << 8)
|
||||
#define MEMSIZE 0x80000
|
||||
|
||||
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){
|
||||
uint16_t i,j;
|
||||
uint16_t sum = 0;
|
||||
@@ -101,6 +159,17 @@ void spi_master_transmit(unsigned char cData)
|
||||
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 byte;
|
||||
@@ -217,8 +286,9 @@ int main(void)
|
||||
uint8_t fat_attrib = 0;
|
||||
uint32_t fat_size = 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();
|
||||
stdout = &uart_stdout;
|
||||
|
||||
@@ -228,19 +298,37 @@ int main(void)
|
||||
spi_init();
|
||||
printf("SPI Init\n");
|
||||
|
||||
|
||||
//sram_clear(0x000000, 0x400000);
|
||||
//printf("sram_clear\n");
|
||||
#if 0
|
||||
uint8_t t[] = "david";
|
||||
printf("Test CRC %x\n",do_crc(t,5));
|
||||
while(1);
|
||||
#endif
|
||||
|
||||
//printf("read 0x0f0f\n");
|
||||
//sram_read(0x0f0f);
|
||||
//printf("write 0x0f0f\n");
|
||||
//sram_write(0x0f0f,0xaa);
|
||||
//while(1);
|
||||
|
||||
#if 0
|
||||
sram_clear(0x000000, 0x80000);
|
||||
printf("sram_clear\n");
|
||||
#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) {
|
||||
printf("No sdcard...\n");
|
||||
}
|
||||
printf("MMC Init sone\n");
|
||||
printf("MMC Init done\n");
|
||||
fat_init(read_buffer);
|
||||
printf("FAT Init done.\n");
|
||||
rom_addr = 0x000000;
|
||||
@@ -253,27 +341,91 @@ int main(void)
|
||||
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);
|
||||
if (block_cnt % 16 == 0)
|
||||
printf("Write Ram 0x%lx Skipped %li\n",rom_addr,skip_block);
|
||||
|
||||
if (sram_check(read_buffer,512))
|
||||
sram_copy(rom_addr,read_buffer,512);
|
||||
else
|
||||
skip_block +=1;
|
||||
if (block_cnt && block_cnt % 64 == 0){
|
||||
printf("Write 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);
|
||||
sram_copy(rom_addr,read_buffer,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");
|
||||
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);
|
||||
dump_packet(rom_addr,512,read_buffer);
|
||||
rom_addr += 512;
|
||||
}
|
||||
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();
|
||||
printf("\nEnter Snes mode\n");
|
||||
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 os
|
||||
import re
|
||||
import string
|
||||
import stat
|
||||
import popen2
|
||||
import glob
|
||||
import sys
|
||||
import pprint
|
||||
|
||||
# Detect Mirrord Roms
|
||||
# Rom Type Mapping
|
||||
@@ -14,26 +22,37 @@ import sqlite3
|
||||
#246 ROM and DSP2 chip
|
||||
|
||||
|
||||
snes_header_tpl='''
|
||||
Super Nintendo Entertainment System/SNES/Super Famicom
|
||||
SNES Tile Demo
|
||||
Demo or Beta ROM?
|
||||
Europe, Oceania and Asia
|
||||
262144 Bytes (2.0000 Mb)
|
||||
#Process /Users/david/Devel/arch/snes/roms/Teenage Mutant Ninja Turtles IV - Turtles in Time (U) [!].smc
|
||||
#0 uCON64 2.0.0 Apple (PPC) 1999-2005
|
||||
#1 Uses code from various people. See 'developers.html' for more!
|
||||
#2 This may be freely redistributed under the terms of the GNU Public License
|
||||
#4 /Users/david/Devel/arch/snes/roms/Teenage Mutant Ninja Turtles IV - Turtles in Time (U) [!].smc
|
||||
#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='''
|
||||
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
|
||||
import re
|
||||
import string
|
||||
os.unlink("roms.sqlite3")
|
||||
|
||||
conn = sqlite3.connect('roms.sqlite3')
|
||||
c = conn.cursor()
|
||||
c.execute('''create table roms
|
||||
def createdb():
|
||||
try:
|
||||
os.unlink("roms.sqlite3")
|
||||
except:
|
||||
pass
|
||||
conn = sqlite3.connect('roms.sqlite3')
|
||||
c = conn.cursor()
|
||||
c.execute('''create table roms
|
||||
(
|
||||
file_name text,
|
||||
file_ext text,
|
||||
file_size integer,
|
||||
rom_size integer,
|
||||
rom_mb real,
|
||||
rom_name text,
|
||||
rom_padded integer,
|
||||
rom_trainer integer,
|
||||
rom_backup integer,
|
||||
rom_name text,
|
||||
rom_vendor text,
|
||||
rom_region text,
|
||||
rom_hirom integer,
|
||||
rom_internalsize integer,
|
||||
rom_type, integer,
|
||||
rom_type integer,
|
||||
rom_speed integer,
|
||||
rom_sram integer,
|
||||
rom_version integer,
|
||||
rom_version real,
|
||||
rom_chk integer,
|
||||
swc_size integer,
|
||||
swc_mode integer,
|
||||
@@ -112,15 +109,171 @@ c.execute('''create table roms
|
||||
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
|
||||
# values ('2006-01-05','BUY','RHAT',100,35.14)""")
|
||||
conn.commit
|
||||
print "-" * 60
|
||||
print "Process %s" % file_name
|
||||
|
||||
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
|
||||
|
||||
all: $(OFILES) Makefile
|
||||
$(LD) $(LDFLAGS) linkfile ascii.rom
|
||||
ucon64 -chk -swc ascii.rom
|
||||
$(LD) $(LDFLAGS) linkfile ascii.smc
|
||||
ucon64 -chk -swc ascii.smc
|
||||
|
||||
zsnes:
|
||||
/Applications/ZSNES.app/Contents/MacOS/ZSNES ascii.swc
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
.INCLUDE "header.inc"
|
||||
|
||||
|
||||
|
||||
|
||||
.SECTION "MAIN"
|
||||
|
||||
.define dp $0000
|
||||
@@ -758,7 +756,6 @@ text_0:
|
||||
.db " "
|
||||
|
||||
|
||||
|
||||
.INCLUDE "vsine_1.s"
|
||||
|
||||
.INCLUDE "vsine_2.s"
|
||||
@@ -772,16 +769,25 @@ text_0:
|
||||
.INCLUDE "colbar_3.s"
|
||||
|
||||
|
||||
.INCLUDE "colbarsine_1.s"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.INCLUDE "optixx_logo.s"
|
||||
|
||||
.ENDS
|
||||
|
||||
.INCLUDE "colbarsine_1.s"
|
||||
.ends
|
||||
|
||||
|
||||
|
||||
.bank 1
|
||||
|
||||
.SECTION "GFX"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.ends
|
||||
|
||||
|
||||
;.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