Compare commits
32
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d229719d0c | ||
|
|
096ad71b4e | ||
|
|
aa29d483eb | ||
|
|
dc83f998c7 | ||
|
|
369667e154 | ||
|
|
4a083cbea3 | ||
|
|
edf204ac24 | ||
|
|
0c378a9f7c | ||
|
|
55e3468f74 | ||
|
|
78e9dce5ea | ||
|
|
eaf0bda3ee | ||
|
|
d58d3439ec | ||
|
|
b5f111fa41 | ||
|
|
6508530384 | ||
|
|
e4364eedb1 | ||
|
|
74312e08e1 | ||
|
|
09f42acfc8 | ||
|
|
70984ebd00 | ||
|
|
cafe5b8efd | ||
|
|
a1e89d9528 | ||
|
|
43ee4e0f7e | ||
|
|
8b606ce329 | ||
|
|
4b99eeb2d0 | ||
|
|
27b58a09f2 | ||
|
|
bcb4a055e9 | ||
|
|
c9a23df103 | ||
|
|
0354b82c8e | ||
|
|
9d38af4267 | ||
|
|
c88a4f3b49 | ||
|
|
27278a7f36 | ||
|
|
aacd3296ef | ||
|
|
9f55ce0992 |
@@ -0,0 +1,4 @@
|
||||
--- !ditz.rubyforge.org,2008-03-06/config
|
||||
name: David
|
||||
email: david@optixx.org
|
||||
issue_dir: bugs
|
||||
@@ -16,3 +16,8 @@
|
||||
.DS_Store
|
||||
*.a
|
||||
*.prj
|
||||
*.bak
|
||||
*.smc
|
||||
*.swc
|
||||
*.rom
|
||||
*.usage
|
||||
|
||||
@@ -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
|
||||
@@ -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: []
|
||||
|
||||
+2
-13
@@ -181,11 +181,10 @@ LDFLAGS += $(PRINTF_LIB_MIN) $(SCANF_LIB) $(MATH_LIB)
|
||||
AVRDUDE_PROGRAMMER = stk500v2
|
||||
|
||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||
AVRDUDE_PORT = /dev/tty.PL2303-00001324 # programmer connected to serial device
|
||||
|
||||
AVRDUDE_PORT = /dev/tty.PL2303-00001124
|
||||
|
||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
||||
|
||||
|
||||
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||
# Note that this counter needs to be initialized first using -Yn,
|
||||
@@ -211,10 +210,6 @@ AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
||||
# avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U hfuse:w:0xd9:m
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Define directories, if needed.
|
||||
@@ -327,16 +322,10 @@ gccversion :
|
||||
|
||||
# Program the device.
|
||||
|
||||
flash_avrdude: flash
|
||||
|
||||
flash: $(TARGET).hex $(TARGET).eep
|
||||
sudo $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
||||
|
||||
flash_uisp:
|
||||
sudo uisp -dprog=avr910 -dpart=ATmega8 -dserial=/dev/ttyUSB0 --verify --erase -v --upload if=$(TARGET).hex
|
||||
|
||||
|
||||
|
||||
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||
COFFCONVERT=$(OBJCOPY) --debugging \
|
||||
--change-section-address .data-0x800000 \
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
# Name: checksize
|
||||
# Project: PowerSwitch/AVR-USB
|
||||
# Author: Christian Starkjohann
|
||||
# Creation Date: 2004-12-29
|
||||
# Tabsize: 4
|
||||
# Copyright: (c) 2005 OBJECTIVE DEVELOPMENT Software GmbH.
|
||||
# Revision: $Id: checksize 83 2006-01-05 22:20:53Z cs $
|
||||
|
||||
error=0
|
||||
codelimit=2048 # default value
|
||||
datalimit=96 # default value; leave 32 bytes for stack
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
codelimit="$2"
|
||||
fi
|
||||
if [ $# -gt 2 ]; then
|
||||
datalimit="$3"
|
||||
fi
|
||||
|
||||
set -- `avr-size -d "$1" | awk '/[0-9]/ {print $1 + $2, $2 + $3, $2}'`
|
||||
if [ $1 -gt $codelimit ]; then
|
||||
echo "*** code size $1 exceeds limit of $codelimit"
|
||||
error=1
|
||||
else
|
||||
echo "ROM: $1 bytes (data=$3)"
|
||||
fi
|
||||
if [ $2 -gt $datalimit ]; then
|
||||
echo "*** data size $2 exceeds limit of $datalimit"
|
||||
error=1
|
||||
else
|
||||
echo "RAM: $2 bytes"
|
||||
fi
|
||||
|
||||
exit $error
|
||||
+215
-47
@@ -7,6 +7,10 @@
|
||||
#include "mmc.h"
|
||||
#include "fat.h"
|
||||
|
||||
// Debug
|
||||
#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
|
||||
extern FILE uart_stdout;
|
||||
|
||||
//SREG defines
|
||||
#define S_MOSI PB5
|
||||
#define S_MISO PB6
|
||||
@@ -24,43 +28,102 @@
|
||||
#define RAM_DIR DDRA
|
||||
#define RAM_REG PINA
|
||||
|
||||
|
||||
#define CTRL_PORT PORTB
|
||||
#define CTR_DIR DDRB
|
||||
|
||||
|
||||
#define LATCH_PORT PORTB
|
||||
#define LATCH_DIR DDRB
|
||||
|
||||
#define SPI_PORT PORTB
|
||||
#define SPI_DIR DDRB
|
||||
|
||||
|
||||
#define LED_PORT PORTD
|
||||
#define LED_DIR DDRD
|
||||
|
||||
//#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 READ_BUFFER_SIZE 512
|
||||
#define BLOCKS 510
|
||||
#define ROMSIZE 4
|
||||
#define DUMPNAME "dump256.smc"
|
||||
#define BUFFER_SIZE 512
|
||||
#define BLOCKS (ROMSIZE << 8)
|
||||
#define MEMSIZE 0x80000
|
||||
|
||||
#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
|
||||
uint8_t read_buffer[BUFFER_SIZE];
|
||||
|
||||
extern FILE uart_stdout;
|
||||
|
||||
uint8_t read_buffer[READ_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;
|
||||
uint16_t sum = 0;
|
||||
uint8_t clear=0;
|
||||
|
||||
for (i=0;i<len;i+=16) {
|
||||
|
||||
sum = 0;
|
||||
for (j=0;j<16;j++) {
|
||||
sum +=packet[i+j];
|
||||
}
|
||||
if (!sum){
|
||||
//printf(".");
|
||||
clear=1;
|
||||
continue;
|
||||
}
|
||||
if (clear){
|
||||
printf("*\n");
|
||||
clear = 0;
|
||||
}
|
||||
printf("%08lx:", addr + i);
|
||||
for (j=0;j<16;j++) {
|
||||
printf(" %02x", packet[i+j]);
|
||||
@@ -96,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;
|
||||
@@ -166,12 +240,19 @@ void sram_init(void){
|
||||
LED_PORT |= (1<<D_LED0);
|
||||
}
|
||||
|
||||
void sram_snes_mode(void){
|
||||
CTRL_PORT |= (1<<R_WR);
|
||||
CTRL_PORT &= ~(1<<R_RD);
|
||||
}
|
||||
|
||||
void sram_clear(uint32_t addr, uint32_t len){
|
||||
|
||||
uint32_t i;
|
||||
for (i=addr; i<(addr + len);i++ )
|
||||
for (i=addr; i<(addr + len);i++ ){
|
||||
if (0==i%0xfff)
|
||||
printf("sram_clear %lx\n\r",i);
|
||||
sram_write(i, 0x00);
|
||||
}
|
||||
}
|
||||
|
||||
void sram_copy(uint32_t addr,uint8_t *src, uint32_t len){
|
||||
@@ -191,7 +272,13 @@ void sram_read_buffer(uint32_t addr,uint8_t *dst, uint32_t len){
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
uint8_t sram_check(uint8_t *buffer, uint32_t len){
|
||||
|
||||
for (uint16_t cnt=0; cnt<len; cnt++)
|
||||
if (buffer[cnt])
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
int main(void)
|
||||
{
|
||||
|
||||
@@ -199,73 +286,154 @@ int main(void)
|
||||
uint8_t fat_attrib = 0;
|
||||
uint32_t fat_size = 0;
|
||||
uint32_t rom_addr = 0;
|
||||
|
||||
|
||||
|
||||
uint8_t bank_cnt = 0;
|
||||
uint16_t crc = 0;
|
||||
uint16_t block_cnt;
|
||||
uart_init();
|
||||
stdout = &uart_stdout;
|
||||
|
||||
sram_init();
|
||||
printf("sram_init\n");
|
||||
printf("SRAM Init\n");
|
||||
|
||||
spi_init();
|
||||
printf("spi_init\n");
|
||||
/*
|
||||
sram_clear(0x000000, 0x400000);
|
||||
printf("SPI Init\n");
|
||||
|
||||
#if 0
|
||||
uint8_t t[] = "david";
|
||||
printf("Test CRC %x\n",do_crc(t,5));
|
||||
while(1);
|
||||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
sram_clear(0x000000, 0x80000);
|
||||
printf("sram_clear\n");
|
||||
*/
|
||||
|
||||
//printf("read 0x0f0f\n");
|
||||
//sram_read(0x0f0f);
|
||||
//printf("write 0x0f0f\n");
|
||||
//sram_write(0x0f0f,0xaa);
|
||||
//while(1);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
printf("read 0x0f0f\n");
|
||||
sram_read(0x0f0f);
|
||||
printf("write 0x0f0f\n");
|
||||
sram_write(0x0f0f,0xaa);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
rom_addr = 0x4aaaa;
|
||||
printf("write %lx\n",rom_addr);
|
||||
sram_set_addr(rom_addr);
|
||||
while(1);
|
||||
#endif
|
||||
|
||||
|
||||
while ( mmc_init() !=0) {
|
||||
printf("no sdcard..\n");
|
||||
printf("No sdcard...\n");
|
||||
}
|
||||
printf("mmc_init\n");
|
||||
|
||||
printf("MMC Init done\n");
|
||||
fat_init(read_buffer);
|
||||
printf("fat_init\n");
|
||||
|
||||
|
||||
printf("FAT Init done.\n");
|
||||
rom_addr = 0x000000;
|
||||
printf("look for sprite.smc\n");
|
||||
printf("Look for %s\n",FILENAME);
|
||||
|
||||
if (fat_search_file((uint8_t*)"sprite.smc",
|
||||
if (fat_search_file((uint8_t*)FILENAME,
|
||||
&fat_cluster,
|
||||
&fat_size,
|
||||
&fat_attrib,
|
||||
read_buffer) == 1) {
|
||||
|
||||
|
||||
for (uint16_t block_cnt=0; block_cnt<BLOCKS+1; block_cnt++) {
|
||||
for (block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||
fat_read_file (fat_cluster,read_buffer,block_cnt);
|
||||
if (block_cnt==0){
|
||||
// Skip Copier Header
|
||||
printf("Copier Header \n",block_cnt,rom_addr);
|
||||
dump_packet(rom_addr,512,read_buffer);
|
||||
printf("Read Blocks ");
|
||||
|
||||
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;
|
||||
}
|
||||
printf(".",block_cnt,rom_addr);
|
||||
sram_copy(rom_addr,read_buffer,512);
|
||||
crc = do_crc_update(crc,read_buffer,512);
|
||||
sram_copy(rom_addr,read_buffer,512);
|
||||
rom_addr += 512;
|
||||
}
|
||||
printf("\nDone %lx\n",rom_addr);
|
||||
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("Done\n",rom_addr);
|
||||
printf("\nDone 0x%lx\n",rom_addr);
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
block_cnt = 0;
|
||||
crc = 0;
|
||||
bank_cnt=0x00;
|
||||
rom_addr = 0x000000;
|
||||
for (block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||
sram_read_buffer(rom_addr,read_buffer,512);
|
||||
if (block_cnt && block_cnt % 64 == 0){
|
||||
printf("Read Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||
bank_cnt++;
|
||||
crc = 0;
|
||||
}
|
||||
crc = do_crc_update(crc,read_buffer,512);
|
||||
rom_addr += 512;
|
||||
}
|
||||
printf("Read Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
printf("Look for %s\n",DUMPNAME);
|
||||
|
||||
fat_cluster = 0;
|
||||
fat_attrib = 0;
|
||||
fat_size = 0;
|
||||
|
||||
if (fat_search_file((uint8_t*)DUMPNAME,
|
||||
&fat_cluster,
|
||||
&fat_size,
|
||||
&fat_attrib,
|
||||
read_buffer) == 1) {
|
||||
|
||||
|
||||
printf("Found %s\n",DUMPNAME);
|
||||
rom_addr = 0x000000;
|
||||
bank_cnt =0;
|
||||
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
||||
printf("Write 1");
|
||||
sram_read_buffer(rom_addr,read_buffer,512);
|
||||
printf("Write 2");
|
||||
fat_write_file (fat_cluster,read_buffer,block_cnt);
|
||||
if (block_cnt % 64 == 0){
|
||||
bank_cnt++;
|
||||
}
|
||||
printf("Write File Bank: 0x%x Addr: 0x%lx Skipped: %li\n",bank_cnt,rom_addr,skip_block);
|
||||
rom_addr += 512;
|
||||
}
|
||||
printf("Done 0x%lx Skipped %li\n",rom_addr,skip_block);
|
||||
}
|
||||
#endif
|
||||
|
||||
sram_snes_mode();
|
||||
printf("\nEnter Snes mode\n");
|
||||
while(1);
|
||||
|
||||
return(0);
|
||||
return 0 ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -151,12 +151,10 @@ int main(int argc, char **argv)
|
||||
unsigned char *buffer;
|
||||
unsigned char dummy[10];
|
||||
buffer = (unsigned char*)malloc(ROMSIZE);
|
||||
memset(buffer,0,ROMSIZE);
|
||||
if (NULL == buffer){
|
||||
fprintf(stderr, "Malloc failed",f);
|
||||
exit(-1);
|
||||
}
|
||||
put(&ftdica,0x00);
|
||||
for ( addr = 0; addr<ROMSIZE; addr+=1){
|
||||
byte = data_read(&ftdica);
|
||||
printf("0x%08x: %x\n",addr,byte);
|
||||
@@ -165,8 +163,11 @@ int main(int argc, char **argv)
|
||||
counter_clock(&ftdicb);
|
||||
}
|
||||
dump_packet(0x000,ROMSIZE,buffer);
|
||||
|
||||
|
||||
|
||||
FILE *fp;
|
||||
fp=fopen("dump.rom", "wb");
|
||||
fwrite(buffer, ROMSIZE, 1, fp);
|
||||
fclose(fp);
|
||||
|
||||
ftdi_disable_bitbang(&ftdica);
|
||||
ftdi_usb_close(&ftdica);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
+28
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
+279
@@ -0,0 +1,279 @@
|
||||
import sqlite3
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
import stat
|
||||
import popen2
|
||||
import glob
|
||||
import sys
|
||||
import pprint
|
||||
|
||||
# Detect Mirrord Roms
|
||||
# Rom Type Mapping
|
||||
#
|
||||
# 0 ROM only
|
||||
# 1 ROM and RAM
|
||||
# 2 ROM and Save RAM
|
||||
# 3 ROM and DSP1 chip
|
||||
# 4 ROM, RAM and DSP1 chip
|
||||
# 5 ROM, Save RAM and DSP1 chip
|
||||
# 19 ROM and Super FX chip
|
||||
#227 ROM, RAM and GameBoy data
|
||||
#246 ROM and DSP2 chip
|
||||
|
||||
|
||||
#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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
swc_header_tpl='''
|
||||
Backup unit header info (SWC)
|
||||
|
||||
00000000 20 00 0c 00 00 00 00 00 aa bb 04 00 00 00 00 00 ...............
|
||||
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
|
||||
[0-1] File size: 262144 Bytes (2.0000 Mb) => Matches
|
||||
[2:7] Run program in mode: 3
|
||||
[2:6] Split: No => Matches
|
||||
[2:5] SRAM mapping mode: LoROM => Matches
|
||||
[2:4] DRAM mapping mode: LoROM => Matches
|
||||
[2:3-2] SRAM size: 0 kB => Matches
|
||||
[2:1] Run program in mode: 3
|
||||
[2:0] External cartridge memory: Disabled
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
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_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_speed integer,
|
||||
rom_sram integer,
|
||||
rom_version real,
|
||||
rom_chk integer,
|
||||
swc_size integer,
|
||||
swc_mode integer,
|
||||
swc_split text,
|
||||
swc_sram_mode text,
|
||||
swc_dram_mode text,
|
||||
swc_sram_size text
|
||||
|
||||
)''')
|
||||
return conn,c
|
||||
|
||||
def process(conn,c,file_name,out):
|
||||
file_ext = os.path.splitext(file_name)[1].replace(".",'')
|
||||
file_size = os.stat(file_name)[stat.ST_SIZE]
|
||||
rom_size = 0
|
||||
rom_mb = 0
|
||||
rom_padded = 0
|
||||
rom_trainer = 0
|
||||
rom_backup = 0
|
||||
rom_name = ''
|
||||
rom_vendor = ''
|
||||
rom_region = ''
|
||||
rom_hirom = 0
|
||||
rom_internalsize = 0
|
||||
rom_type = 0
|
||||
rom_speed = 0
|
||||
rom_sram = 0
|
||||
rom_version = 0
|
||||
rom_chk = 0
|
||||
swc_size = 0
|
||||
swc_mode = 0
|
||||
swc_split = ''
|
||||
swc_sram_mode = ''
|
||||
swc_dram_mode = ''
|
||||
swc_sram_size = ''
|
||||
|
||||
print "-" * 60
|
||||
print "Process %s" % file_name
|
||||
|
||||
try:
|
||||
rom_name = out[13]
|
||||
rom_vendor = out[14]
|
||||
rom_region = out[15]
|
||||
|
||||
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()
|
||||
|
||||
|
||||
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()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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.
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
|
||||
CC = wla-65816
|
||||
CFLAGS = -o
|
||||
LD = wlalink
|
||||
LDFLAGS = -v
|
||||
|
||||
SFILES = main.asm
|
||||
IFILES =
|
||||
OFILES = main.o
|
||||
GFXDATA = optixx_logo.bmp
|
||||
|
||||
all: $(OFILES) Makefile
|
||||
$(LD) $(LDFLAGS) linkfile ascii.smc
|
||||
ucon64 -chk -swc ascii.smc
|
||||
|
||||
zsnes:
|
||||
/Applications/ZSNES.app/Contents/MacOS/ZSNES ascii.swc
|
||||
bsnes:
|
||||
open /Applications/BSNES.app ascii.swc
|
||||
|
||||
main.o: colorlist sine gfx main.asm
|
||||
$(CC) $(CFLAGS) main.asm main.o
|
||||
|
||||
gfx: bmp2bitplane.py optixx_logo.bmp
|
||||
python bmp2bitplane.py optixx_logo.bmp
|
||||
|
||||
sine: sinegen.py
|
||||
python sinegen.py vsine_1.s 256 96 1
|
||||
python sinegen.py vsine_2.s 256 96 1 flip
|
||||
python sinegen.py colbarsine_1.s 256 64 3
|
||||
|
||||
|
||||
colorlist: bmp2col.py
|
||||
python bmp2col.py backcolors.bmp list
|
||||
python bmp2col.py colbar_1.bmp
|
||||
python bmp2col.py colbar_2.bmp
|
||||
python bmp2col.py colbar_3.bmp
|
||||
|
||||
|
||||
|
||||
$(OFILES): $(HFILES)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(OFILES) core *~ result.rom optixx_logo.s
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,472 @@
|
||||
|
||||
|
||||
|
||||
backcolors_color_list:
|
||||
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00
|
||||
.db 0
|
||||
|
||||
|
||||
|
||||
backcolors_color_values:
|
||||
|
||||
.db $01
|
||||
.dw $1400 ;line=0x01
|
||||
.db $01
|
||||
.dw $1400 ;line=0x02
|
||||
.db $01
|
||||
.dw $1400 ;line=0x03
|
||||
.db $01
|
||||
.dw $1400 ;line=0x04
|
||||
.db $01
|
||||
.dw $1400 ;line=0x05
|
||||
.db $01
|
||||
.dw $1400 ;line=0x06
|
||||
.db $01
|
||||
.dw $1400 ;line=0x07
|
||||
.db $01
|
||||
.dw $1400 ;line=0x08
|
||||
.db $01
|
||||
.dw $1400 ;line=0x09
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0b
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0c
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0d
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0e
|
||||
.db $01
|
||||
.dw $1400 ;line=0x0f
|
||||
.db $01
|
||||
.dw $1400 ;line=0x10
|
||||
.db $01
|
||||
.dw $1400 ;line=0x11
|
||||
.db $01
|
||||
.dw $1400 ;line=0x12
|
||||
.db $01
|
||||
.dw $1400 ;line=0x13
|
||||
.db $01
|
||||
.dw $1400 ;line=0x14
|
||||
.db $01
|
||||
.dw $1400 ;line=0x15
|
||||
.db $01
|
||||
.dw $1400 ;line=0x16
|
||||
.db $01
|
||||
.dw $1400 ;line=0x17
|
||||
.db $01
|
||||
.dw $1400 ;line=0x18
|
||||
.db $01
|
||||
.dw $1400 ;line=0x19
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1b
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1c
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1d
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1e
|
||||
.db $01
|
||||
.dw $1400 ;line=0x1f
|
||||
.db $01
|
||||
.dw $1400 ;line=0x20
|
||||
.db $01
|
||||
.dw $1400 ;line=0x21
|
||||
.db $01
|
||||
.dw $1400 ;line=0x22
|
||||
.db $01
|
||||
.dw $1400 ;line=0x23
|
||||
.db $01
|
||||
.dw $1400 ;line=0x24
|
||||
.db $01
|
||||
.dw $1400 ;line=0x25
|
||||
.db $01
|
||||
.dw $1400 ;line=0x26
|
||||
.db $01
|
||||
.dw $1400 ;line=0x27
|
||||
.db $01
|
||||
.dw $1400 ;line=0x28
|
||||
.db $01
|
||||
.dw $1400 ;line=0x29
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2b
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2c
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2d
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2e
|
||||
.db $01
|
||||
.dw $1400 ;line=0x2f
|
||||
.db $01
|
||||
.dw $1400 ;line=0x30
|
||||
.db $01
|
||||
.dw $1400 ;line=0x31
|
||||
.db $01
|
||||
.dw $1400 ;line=0x32
|
||||
.db $01
|
||||
.dw $1400 ;line=0x33
|
||||
.db $01
|
||||
.dw $1400 ;line=0x34
|
||||
.db $01
|
||||
.dw $1400 ;line=0x35
|
||||
.db $01
|
||||
.dw $1400 ;line=0x36
|
||||
.db $01
|
||||
.dw $1400 ;line=0x37
|
||||
.db $01
|
||||
.dw $1400 ;line=0x38
|
||||
.db $01
|
||||
.dw $1400 ;line=0x39
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3b
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3c
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3d
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3e
|
||||
.db $01
|
||||
.dw $1400 ;line=0x3f
|
||||
.db $01
|
||||
.dw $1400 ;line=0x40
|
||||
.db $01
|
||||
.dw $1400 ;line=0x41
|
||||
.db $01
|
||||
.dw $1400 ;line=0x42
|
||||
.db $01
|
||||
.dw $1400 ;line=0x43
|
||||
.db $01
|
||||
.dw $1400 ;line=0x44
|
||||
.db $01
|
||||
.dw $1400 ;line=0x45
|
||||
.db $01
|
||||
.dw $1400 ;line=0x46
|
||||
.db $01
|
||||
.dw $1400 ;line=0x47
|
||||
.db $01
|
||||
.dw $1400 ;line=0x48
|
||||
.db $01
|
||||
.dw $1400 ;line=0x49
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4b
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4c
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4d
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4e
|
||||
.db $01
|
||||
.dw $1400 ;line=0x4f
|
||||
.db $01
|
||||
.dw $1400 ;line=0x50
|
||||
.db $01
|
||||
.dw $1400 ;line=0x51
|
||||
.db $01
|
||||
.dw $1400 ;line=0x52
|
||||
.db $01
|
||||
.dw $1400 ;line=0x53
|
||||
.db $01
|
||||
.dw $1400 ;line=0x54
|
||||
.db $01
|
||||
.dw $1400 ;line=0x55
|
||||
.db $01
|
||||
.dw $1400 ;line=0x56
|
||||
.db $01
|
||||
.dw $1400 ;line=0x57
|
||||
.db $01
|
||||
.dw $1400 ;line=0x58
|
||||
.db $01
|
||||
.dw $1400 ;line=0x59
|
||||
.db $01
|
||||
.dw $1400 ;line=0x5a
|
||||
.db $01
|
||||
.dw $1400 ;line=0x5b
|
||||
.db $01
|
||||
.dw $1800 ;line=0x5c
|
||||
.db $01
|
||||
.dw $1800 ;line=0x5d
|
||||
.db $01
|
||||
.dw $1820 ;line=0x5e
|
||||
.db $01
|
||||
.dw $1820 ;line=0x5f
|
||||
.db $01
|
||||
.dw $1820 ;line=0x60
|
||||
.db $01
|
||||
.dw $1820 ;line=0x61
|
||||
.db $01
|
||||
.dw $1820 ;line=0x62
|
||||
.db $01
|
||||
.dw $1820 ;line=0x63
|
||||
.db $01
|
||||
.dw $1820 ;line=0x64
|
||||
.db $01
|
||||
.dw $1820 ;line=0x65
|
||||
.db $01
|
||||
.dw $1820 ;line=0x66
|
||||
.db $01
|
||||
.dw $1c20 ;line=0x67
|
||||
.db $01
|
||||
.dw $1c20 ;line=0x68
|
||||
.db $01
|
||||
.dw $1c20 ;line=0x69
|
||||
.db $01
|
||||
.dw $1c20 ;line=0x6a
|
||||
.db $01
|
||||
.dw $1c40 ;line=0x6b
|
||||
.db $01
|
||||
.dw $1c40 ;line=0x6c
|
||||
.db $01
|
||||
.dw $1c40 ;line=0x6d
|
||||
.db $01
|
||||
.dw $1c40 ;line=0x6e
|
||||
.db $01
|
||||
.dw $1c40 ;line=0x6f
|
||||
.db $01
|
||||
.dw $1c41 ;line=0x70
|
||||
.db $01
|
||||
.dw $1c41 ;line=0x71
|
||||
.db $01
|
||||
.dw $2041 ;line=0x72
|
||||
.db $01
|
||||
.dw $2041 ;line=0x73
|
||||
.db $01
|
||||
.dw $2041 ;line=0x74
|
||||
.db $01
|
||||
.dw $2041 ;line=0x75
|
||||
.db $01
|
||||
.dw $2041 ;line=0x76
|
||||
.db $01
|
||||
.dw $2041 ;line=0x77
|
||||
.db $01
|
||||
.dw $2061 ;line=0x78
|
||||
.db $01
|
||||
.dw $2061 ;line=0x79
|
||||
.db $01
|
||||
.dw $2061 ;line=0x7a
|
||||
.db $01
|
||||
.dw $2061 ;line=0x7b
|
||||
.db $01
|
||||
.dw $2061 ;line=0x7c
|
||||
.db $01
|
||||
.dw $2461 ;line=0x7d
|
||||
.db $01
|
||||
.dw $2461 ;line=0x7e
|
||||
.db $01
|
||||
.dw $2461 ;line=0x7f
|
||||
.db $01
|
||||
.dw $2461 ;line=0x80
|
||||
.db $01
|
||||
.dw $2461 ;line=0x81
|
||||
.db $01
|
||||
.dw $2461 ;line=0x82
|
||||
.db $01
|
||||
.dw $2461 ;line=0x83
|
||||
.db $01
|
||||
.dw $2461 ;line=0x84
|
||||
.db $01
|
||||
.dw $2481 ;line=0x85
|
||||
.db $01
|
||||
.dw $2481 ;line=0x86
|
||||
.db $01
|
||||
.dw $2481 ;line=0x87
|
||||
.db $01
|
||||
.dw $2881 ;line=0x88
|
||||
.db $01
|
||||
.dw $2881 ;line=0x89
|
||||
.db $01
|
||||
.dw $2881 ;line=0x8a
|
||||
.db $01
|
||||
.dw $2881 ;line=0x8b
|
||||
.db $01
|
||||
.dw $2882 ;line=0x8c
|
||||
.db $01
|
||||
.dw $2882 ;line=0x8d
|
||||
.db $01
|
||||
.dw $2882 ;line=0x8e
|
||||
.db $01
|
||||
.dw $2882 ;line=0x8f
|
||||
.db $01
|
||||
.dw $2882 ;line=0x90
|
||||
.db $01
|
||||
.dw $2882 ;line=0x91
|
||||
.db $01
|
||||
.dw $28a2 ;line=0x92
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x93
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x94
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x95
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x96
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x97
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x98
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x99
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x9a
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x9b
|
||||
.db $01
|
||||
.dw $2ca2 ;line=0x9c
|
||||
.db $01
|
||||
.dw $30a2 ;line=0x9d
|
||||
.db $01
|
||||
.dw $30a2 ;line=0x9e
|
||||
.db $01
|
||||
.dw $30c2 ;line=0x9f
|
||||
.db $01
|
||||
.dw $30c2 ;line=0xa0
|
||||
.db $01
|
||||
.dw $30c2 ;line=0xa1
|
||||
.db $01
|
||||
.dw $30c2 ;line=0xa2
|
||||
.db $01
|
||||
.dw $30c2 ;line=0xa3
|
||||
.db $01
|
||||
.dw $30c2 ;line=0xa4
|
||||
.db $01
|
||||
.dw $34c3 ;line=0xa5
|
||||
.db $01
|
||||
.dw $34e3 ;line=0xa6
|
||||
.db $01
|
||||
.dw $34e3 ;line=0xa7
|
||||
.db $01
|
||||
.dw $38e3 ;line=0xa8
|
||||
.db $01
|
||||
.dw $38e3 ;line=0xa9
|
||||
.db $01
|
||||
.dw $3903 ;line=0xaa
|
||||
.db $01
|
||||
.dw $3903 ;line=0xab
|
||||
.db $01
|
||||
.dw $3d03 ;line=0xac
|
||||
.db $01
|
||||
.dw $3d03 ;line=0xad
|
||||
.db $01
|
||||
.dw $3d24 ;line=0xae
|
||||
.db $01
|
||||
.dw $4124 ;line=0xaf
|
||||
.db $01
|
||||
.dw $4124 ;line=0xb0
|
||||
.db $01
|
||||
.dw $4124 ;line=0xb1
|
||||
.db $01
|
||||
.dw $4144 ;line=0xb2
|
||||
.db $01
|
||||
.dw $4544 ;line=0xb3
|
||||
.db $01
|
||||
.dw $4544 ;line=0xb4
|
||||
.db $01
|
||||
.dw $4544 ;line=0xb5
|
||||
.db $01
|
||||
.dw $4945 ;line=0xb6
|
||||
.db $01
|
||||
.dw $4965 ;line=0xb7
|
||||
.db $01
|
||||
.dw $4965 ;line=0xb8
|
||||
.db $01
|
||||
.dw $4965 ;line=0xb9
|
||||
.db $01
|
||||
.dw $4d65 ;line=0xba
|
||||
.db $01
|
||||
.dw $4d85 ;line=0xbb
|
||||
.db $01
|
||||
.dw $4d85 ;line=0xbc
|
||||
.db $01
|
||||
.dw $5185 ;line=0xbd
|
||||
.db $01
|
||||
.dw $51a5 ;line=0xbe
|
||||
.db $01
|
||||
.dw $51c5 ;line=0xbf
|
||||
.db $01
|
||||
.dw $55c5 ;line=0xc0
|
||||
.db $01
|
||||
.dw $55e4 ;line=0xc1
|
||||
.db $01
|
||||
.dw $55e4 ;line=0xc2
|
||||
.db $01
|
||||
.dw $5a04 ;line=0xc3
|
||||
.db $01
|
||||
.dw $5a04 ;line=0xc4
|
||||
.db $01
|
||||
.dw $5a24 ;line=0xc5
|
||||
.db $01
|
||||
.dw $5e24 ;line=0xc6
|
||||
.db $01
|
||||
.dw $5e43 ;line=0xc7
|
||||
.db $01
|
||||
.dw $5e63 ;line=0xc8
|
||||
.db $01
|
||||
.dw $6263 ;line=0xc9
|
||||
.db $01
|
||||
.dw $6283 ;line=0xca
|
||||
.db $01
|
||||
.dw $6283 ;line=0xcb
|
||||
.db $01
|
||||
.dw $66a2 ;line=0xcc
|
||||
.db $01
|
||||
.dw $66a2 ;line=0xcd
|
||||
.db $01
|
||||
.dw $66c2 ;line=0xce
|
||||
.db $01
|
||||
.dw $6ae2 ;line=0xcf
|
||||
.db $01
|
||||
.dw $6ae2 ;line=0xd0
|
||||
.db $01
|
||||
.dw $6b02 ;line=0xd1
|
||||
.db $01
|
||||
.dw $6f01 ;line=0xd2
|
||||
.db $01
|
||||
.dw $6f21 ;line=0xd3
|
||||
.db $01
|
||||
.dw $6f41 ;line=0xd4
|
||||
.db $01
|
||||
.dw $7341 ;line=0xd5
|
||||
.db $01
|
||||
.dw $7361 ;line=0xd6
|
||||
.db $01
|
||||
.dw $7760 ;line=0xd7
|
||||
.db $01
|
||||
.dw $7780 ;line=0xd8
|
||||
.db $01
|
||||
.dw $77a0 ;line=0xd9
|
||||
.db $01
|
||||
.dw $7ba0 ;line=0xda
|
||||
.db $01
|
||||
.dw $7bc0 ;line=0xdb
|
||||
.db $01
|
||||
.dw $7bc0 ;line=0xdc
|
||||
.db 0
|
||||
@@ -0,0 +1,167 @@
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
import sys
|
||||
import binascii
|
||||
import math
|
||||
|
||||
def openfile(filename):
|
||||
return open(filename)
|
||||
|
||||
|
||||
def mk_sint(s):
|
||||
a = ord(s[1])
|
||||
b = ord(s[0])
|
||||
return (a<<8) + b
|
||||
|
||||
|
||||
def mk_int(s):
|
||||
a = ord(s[3])
|
||||
b = ord(s[2])
|
||||
c = ord(s[1])
|
||||
d = ord(s[0])
|
||||
return (a<<32) + (b<<16) + (c<<8) + d
|
||||
|
||||
|
||||
def main():
|
||||
file = sys.argv[1]
|
||||
asmfile = string.replace(file,".bmp",".s")
|
||||
basename = string.replace(file,".bmp","")
|
||||
fp =openfile(file)
|
||||
|
||||
header_offset = 14 + 40
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
|
||||
type = mk_sint(data[0:2])
|
||||
size = mk_int(data[2:6])
|
||||
width = mk_int(data[18:22])
|
||||
height = mk_int(data[22:26])
|
||||
bits_per_pixel = mk_int(data[28:32])
|
||||
num_of_colors = mk_int(data[46:50])
|
||||
|
||||
bytes_per_line = width / 8
|
||||
bytes_per_line_padded = bytes_per_line + (4-(bytes_per_line % 4))
|
||||
|
||||
|
||||
header = data[0:header_offset]
|
||||
colors = data[header_offset: header_offset + (num_of_colors * 4)]
|
||||
data = data[header_offset + (num_of_colors * 4):]
|
||||
|
||||
raw = []
|
||||
for i in data:
|
||||
raw.append(ord(i))
|
||||
|
||||
raw_len = len(raw)
|
||||
|
||||
|
||||
|
||||
|
||||
print "file:\t\t%s" % file
|
||||
print "basename:\t%s" % asmfile
|
||||
print "header info"
|
||||
print "type: \t\t%04X " % type
|
||||
print "size: \t\t%i bytes" % size
|
||||
print "width: \t\t%i pixel" % width
|
||||
print "height: \t%i pixel" % height
|
||||
print "bit per pixel:\t%i" % bits_per_pixel
|
||||
print "num of colors:\t%i" % num_of_colors
|
||||
print "imagedata: \t%s bytes" % raw_len
|
||||
print "per line: \t%i bytes" % bytes_per_line
|
||||
print "per line pad: \t%i bytes" % bytes_per_line_padded
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bitplane={}
|
||||
for bit in range(0,bits_per_pixel):
|
||||
bitplane[bit] = []
|
||||
|
||||
|
||||
bytes = [0,0,0,0]
|
||||
bit_cnt =0
|
||||
|
||||
cnt=0
|
||||
last_progress = 0
|
||||
for byte in raw:
|
||||
cnt+=1
|
||||
progress = cnt / (raw_len/100)
|
||||
|
||||
if (progress%10)==0:
|
||||
if (progress>last_progress):
|
||||
print "converting bmp to bitplane buffers %i%% done" % (progress)
|
||||
last_progress = progress
|
||||
|
||||
if bits_per_pixel == 4 :
|
||||
hi_nibble = (byte >> 4)
|
||||
lo_nibble = byte & 16
|
||||
hi_nibble_bin = ''
|
||||
|
||||
for nibble in (hi_nibble,lo_nibble):
|
||||
for plane in range(bits_per_pixel-1,-1,-1):
|
||||
if (nibble & (1 << plane)):
|
||||
bytes[plane] |= 1 << bit_cnt
|
||||
|
||||
bit_cnt += 1
|
||||
if (bit_cnt==8):
|
||||
for i in range(0,bits_per_pixel):
|
||||
bitplane[i].append(bytes[i])
|
||||
bytes=[0,0,0,0]
|
||||
bit_cnt =0
|
||||
|
||||
|
||||
if bits_per_pixel == 1 :
|
||||
bitplane[0] = raw
|
||||
break
|
||||
|
||||
|
||||
out='';
|
||||
|
||||
for plane in range(0,bits_per_pixel):
|
||||
print "bitplane %i has %i bytes " % (plane,len(bitplane[plane]))
|
||||
|
||||
x_tiles = width / 8
|
||||
y_tiles = height / 8
|
||||
cnt=0
|
||||
last_progress=0
|
||||
|
||||
fp = open(asmfile,'w')
|
||||
tile_cnt = 0
|
||||
out ="\n\n\n%s:\n\n" % (basename)
|
||||
fp.write(out)
|
||||
#for yt in range(0,y_tiles):
|
||||
for yt in range(y_tiles-1,-1,-1): # needed for h flip
|
||||
out ="; ### row %02x ### \n" % yt
|
||||
fp.write(out)
|
||||
progress = cnt / (raw_len/100)
|
||||
if(progress%5)==0:
|
||||
print "building asm include %i%% done" % (progress)
|
||||
#last_progress = progress
|
||||
|
||||
for xt in range(0,x_tiles):
|
||||
for plane in range(0,bits_per_pixel):
|
||||
out = ' .db '
|
||||
for y in range(((yt+1)*8)-1,(yt*8)-1,-1): # needed for h flip
|
||||
#for y in range(yt*8,(yt+1)*8):
|
||||
out += "$%02x," % bitplane[plane][(y*x_tiles)+xt]
|
||||
cnt+=1
|
||||
out = out[:-1]
|
||||
out += ' ; tile=%02x plane=%02x row=%02x col=%02x \n' % (tile_cnt,plane,yt,xt)
|
||||
fp.write(out)
|
||||
tile_cnt+=1
|
||||
|
||||
|
||||
|
||||
fp.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) is 2:
|
||||
main()
|
||||
else:
|
||||
print "usage: %s in out" % sys.argv[0]
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
import sys
|
||||
import binascii
|
||||
import math
|
||||
|
||||
|
||||
|
||||
class color:
|
||||
def __init__(self,r,g,b):
|
||||
self.r = r >> 3
|
||||
self.g = g >> 3
|
||||
self.b = b >> 3
|
||||
self.snes = "$%04x" % (( self.b << 10 ) | (self.g << 5) | self.r )
|
||||
|
||||
def get(self):
|
||||
return self.snes
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return "r=0x%02x g=0x%02x b=0x%02x snes=%s" % ( self.r,self.g,self.b,self.snes)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def openfile(filename):
|
||||
return open(filename)
|
||||
|
||||
|
||||
def mk_sint(s):
|
||||
a = ord(s[1])
|
||||
b = ord(s[0])
|
||||
return (a<<8) + b
|
||||
|
||||
|
||||
def mk_int(s):
|
||||
a = ord(s[3])
|
||||
b = ord(s[2])
|
||||
c = ord(s[1])
|
||||
d = ord(s[0])
|
||||
return (a<<32) + (b<<16) + (c<<8) + d
|
||||
|
||||
|
||||
def main():
|
||||
file = sys.argv[1]
|
||||
asmfile = string.replace(file,".bmp",".s")
|
||||
basename = string.replace(file,".bmp","")
|
||||
|
||||
|
||||
if len(sys.argv) >= 3 and sys.argv[2] =='list' :
|
||||
do_list = 1
|
||||
else:
|
||||
do_list = 0
|
||||
|
||||
if len(sys.argv) >= 4 and sys.argv[3] =='compress':
|
||||
do_compress = 1
|
||||
else:
|
||||
do_compress = 0
|
||||
|
||||
|
||||
fp =openfile(file)
|
||||
|
||||
header_offset = 14 + 40
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
|
||||
type = mk_sint(data[0:2])
|
||||
size = mk_int(data[2:6])
|
||||
width = mk_int(data[18:22])
|
||||
height = mk_int(data[22:26])
|
||||
bits_per_pixel = mk_int(data[28:32])
|
||||
num_of_colors = mk_int(data[46:50])
|
||||
|
||||
bytes_per_line = width / 8
|
||||
bytes_per_line_padded = bytes_per_line + (4-(bytes_per_line % 4))
|
||||
|
||||
|
||||
header = data[0:header_offset]
|
||||
colors = data[header_offset: header_offset + (num_of_colors * 4)]
|
||||
data = data[header_offset + (num_of_colors * 4):]
|
||||
|
||||
raw = []
|
||||
for i in data:
|
||||
raw.append(ord(i))
|
||||
raw_len = len(raw)
|
||||
|
||||
palette = []
|
||||
|
||||
for i in range(0,len(colors),4):
|
||||
palette.append(color(ord(colors[i+2]),ord(colors[i+1]),ord(colors[i])))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
print "file:\t\t%s" % file
|
||||
print "basename:\t%s" % asmfile
|
||||
print "header info"
|
||||
print "type: \t\t%04X " % type
|
||||
print "size: \t\t%i bytes" % size
|
||||
print "width: \t\t%i pixel" % width
|
||||
print "height: \t%i pixel" % height
|
||||
print "bit per pixel:\t%i" % bits_per_pixel
|
||||
print "num of colors:\t%i" % num_of_colors
|
||||
print "imagedata: \t%s bytes" % raw_len
|
||||
print "per line: \t%i bytes" % bytes_per_line
|
||||
print "per line pad: \t%i bytes" % bytes_per_line_padded
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
out='';
|
||||
|
||||
fp = open(asmfile,'w')
|
||||
tile_cnt = 0
|
||||
|
||||
|
||||
|
||||
color_list = str()
|
||||
value_list = str()
|
||||
|
||||
|
||||
color_list="\n\n\n%s_color_list:\n\n" % (basename)
|
||||
value_list ="\n\n\n%s_color_values:\n\n" % (basename)
|
||||
out = " .db "
|
||||
cnt=0
|
||||
last = "";
|
||||
repeat = 1;
|
||||
for i in range(raw_len-1,-1,-width):
|
||||
|
||||
idx = raw[i]
|
||||
col = palette[idx].get()
|
||||
|
||||
if col == last and do_compress:
|
||||
repeat += 1
|
||||
continue
|
||||
else:
|
||||
#print palette[idx]
|
||||
last = col
|
||||
if do_list:
|
||||
value_list += " .db $%02x\n" % repeat
|
||||
value_list += " .dw %s ;line=0x%02x\n" % (col, (height - (i/width)) )
|
||||
out += "$%02x,$00," % repeat
|
||||
repeat = 1
|
||||
cnt +=1
|
||||
if cnt == width/20:
|
||||
cnt=0
|
||||
out = out[:-1]
|
||||
out +="\n"
|
||||
color_list += out
|
||||
out = " .db "
|
||||
|
||||
|
||||
value_list += " .db 0\n"
|
||||
color_list += " .db 0\n"
|
||||
|
||||
|
||||
if do_list:
|
||||
fp.write(color_list)
|
||||
fp.write(value_list)
|
||||
|
||||
|
||||
|
||||
|
||||
fp.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv)>= 2:
|
||||
main()
|
||||
else:
|
||||
print "usage: %s in [list] [compress]" % sys.argv[0]
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
|
||||
colbar_1_color_values:
|
||||
|
||||
.dw $0001 ;line=0x01
|
||||
.dw $0003 ;line=0x02
|
||||
.dw $0004 ;line=0x03
|
||||
.dw $0006 ;line=0x04
|
||||
.dw $0008 ;line=0x05
|
||||
.dw $000a ;line=0x06
|
||||
.dw $000c ;line=0x07
|
||||
.dw $000e ;line=0x08
|
||||
.dw $0011 ;line=0x09
|
||||
.dw $0014 ;line=0x0a
|
||||
.dw $0019 ;line=0x0b
|
||||
.dw $001b ;line=0x0c
|
||||
.dw $001a ;line=0x0d
|
||||
.dw $0019 ;line=0x0e
|
||||
.dw $0018 ;line=0x0f
|
||||
.dw $0017 ;line=0x10
|
||||
.dw $0016 ;line=0x11
|
||||
.dw $0015 ;line=0x12
|
||||
.dw $0014 ;line=0x13
|
||||
.dw $0013 ;line=0x14
|
||||
.dw $0010 ;line=0x15
|
||||
.dw $000d ;line=0x16
|
||||
.dw $000a ;line=0x17
|
||||
.dw $0008 ;line=0x18
|
||||
.dw $0006 ;line=0x19
|
||||
.dw $0004 ;line=0x1a
|
||||
.dw $0002 ;line=0x1b
|
||||
.dw $0001 ;line=0x1c
|
||||
.dw $0000 ;line=0x1d
|
||||
.dw $0000 ;line=0x1e
|
||||
.dw $0000 ;line=0x1f
|
||||
.dw $0000 ;line=0x20
|
||||
.db 0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
|
||||
colbar_2_color_values:
|
||||
|
||||
.dw $0020 ;line=0x01
|
||||
.dw $0060 ;line=0x02
|
||||
.dw $0080 ;line=0x03
|
||||
.dw $00c0 ;line=0x04
|
||||
.dw $0100 ;line=0x05
|
||||
.dw $0140 ;line=0x06
|
||||
.dw $0180 ;line=0x07
|
||||
.dw $01c0 ;line=0x08
|
||||
.dw $0220 ;line=0x09
|
||||
.dw $0280 ;line=0x0a
|
||||
.dw $0320 ;line=0x0b
|
||||
.dw $0360 ;line=0x0c
|
||||
.dw $0340 ;line=0x0d
|
||||
.dw $0320 ;line=0x0e
|
||||
.dw $0300 ;line=0x0f
|
||||
.dw $02e0 ;line=0x10
|
||||
.dw $02c0 ;line=0x11
|
||||
.dw $02a0 ;line=0x12
|
||||
.dw $0280 ;line=0x13
|
||||
.dw $0260 ;line=0x14
|
||||
.dw $0200 ;line=0x15
|
||||
.dw $01a0 ;line=0x16
|
||||
.dw $0140 ;line=0x17
|
||||
.dw $0100 ;line=0x18
|
||||
.dw $00c0 ;line=0x19
|
||||
.dw $0080 ;line=0x1a
|
||||
.dw $0040 ;line=0x1b
|
||||
.dw $0020 ;line=0x1c
|
||||
.dw $0000 ;line=0x1d
|
||||
.dw $0000 ;line=0x1e
|
||||
.dw $0000 ;line=0x1f
|
||||
.dw $0000 ;line=0x20
|
||||
.db 0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
|
||||
colbar_3_color_values:
|
||||
|
||||
.dw $0400 ;line=0x01
|
||||
.dw $0c00 ;line=0x02
|
||||
.dw $1000 ;line=0x03
|
||||
.dw $1800 ;line=0x04
|
||||
.dw $2000 ;line=0x05
|
||||
.dw $2800 ;line=0x06
|
||||
.dw $3000 ;line=0x07
|
||||
.dw $3800 ;line=0x08
|
||||
.dw $4400 ;line=0x09
|
||||
.dw $5000 ;line=0x0a
|
||||
.dw $6400 ;line=0x0b
|
||||
.dw $6c00 ;line=0x0c
|
||||
.dw $6800 ;line=0x0d
|
||||
.dw $6400 ;line=0x0e
|
||||
.dw $6000 ;line=0x0f
|
||||
.dw $5c00 ;line=0x10
|
||||
.dw $5800 ;line=0x11
|
||||
.dw $5400 ;line=0x12
|
||||
.dw $5000 ;line=0x13
|
||||
.dw $4c00 ;line=0x14
|
||||
.dw $4000 ;line=0x15
|
||||
.dw $3400 ;line=0x16
|
||||
.dw $2800 ;line=0x17
|
||||
.dw $2000 ;line=0x18
|
||||
.dw $1800 ;line=0x19
|
||||
.dw $1000 ;line=0x1a
|
||||
.dw $0800 ;line=0x1b
|
||||
.dw $0400 ;line=0x1c
|
||||
.dw $0000 ;line=0x1d
|
||||
.dw $0000 ;line=0x1e
|
||||
.dw $0000 ;line=0x1f
|
||||
.dw $0000 ;line=0x20
|
||||
.db 0
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
|
||||
colbarsine_1:
|
||||
|
||||
.db $60,$60,$63,$66,$69,$69,$6c,$6f,$72,$75,$75,$78,$7b,$7e,$7e,$81,$84,$84,$87,$8a,$8d,$8d,$90,$93,$93,$96,$99,$99,$9c,$9c,$9f,$a2
|
||||
.db $a2,$a5,$a5,$a8,$a8,$ab,$ab,$ae,$ae,$b1,$b1,$b1,$b4,$b4,$b4,$b7,$b7,$b7,$ba,$ba,$ba,$ba,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd
|
||||
.db $c0,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$bd,$ba,$ba,$ba,$ba,$b7,$b7,$b7,$b4,$b4,$b4,$b1,$b1,$b1,$ae,$ae,$ab,$ab,$a8,$a8,$a5,$a5
|
||||
.db $a2,$a2,$9f,$9c,$9c,$99,$99,$96,$93,$93,$90,$8d,$8d,$8a,$87,$84,$84,$81,$7e,$7e,$7b,$78,$75,$75,$72,$6f,$6c,$69,$69,$66,$63,$60
|
||||
.db $60,$60,$5d,$5a,$57,$57,$54,$51,$4e,$4b,$4b,$48,$45,$42,$42,$3f,$3c,$3c,$39,$36,$33,$33,$30,$2d,$2d,$2a,$27,$27,$24,$24,$21,$1e
|
||||
.db $1e,$1b,$1b,$18,$18,$15,$15,$12,$12,$0f,$0f,$0f,$0c,$0c,$0c,$09,$09,$09,$06,$06,$06,$06,$03,$03,$03,$03,$03,$03,$03,$03,$03,$03
|
||||
.db $00,$03,$03,$03,$03,$03,$03,$03,$03,$03,$03,$06,$06,$06,$06,$09,$09,$09,$0c,$0c,$0c,$0f,$0f,$0f,$12,$12,$15,$15,$18,$18,$1b,$1b
|
||||
.db $1e,$1e,$21,$24,$24,$27,$27,$2a,$2d,$2d,$30,$33,$33,$36,$39,$3c,$3c,$3f,$42,$42,$45,$48,$4b,$4b,$4e,$51,$54,$57,$57,$5a,$5d,$60
|
||||
@@ -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 ; $0 = 0.5 Mbits, see WLA doc for more..
|
||||
SRAMSIZE $00 ; No SRAM see WLA doc for more..
|
||||
COUNTRY $02 ; $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 init
|
||||
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
|
||||
@@ -0,0 +1,2 @@
|
||||
[objects]
|
||||
main.o
|
||||
@@ -0,0 +1,817 @@
|
||||
;============================================================================
|
||||
; Includes
|
||||
;============================================================================
|
||||
|
||||
;== Include MemoryMap, Vector Table, and HeaderInfo ==
|
||||
.INCLUDE "header.inc"
|
||||
|
||||
|
||||
.SECTION "MAIN"
|
||||
|
||||
.define dp $0000
|
||||
|
||||
.define sineswap $0002
|
||||
.define sine_offset $0003
|
||||
.define scrollval $0005
|
||||
.define colbar_offset_1 $0006
|
||||
.define colbar_offset_2 $0007
|
||||
.define colbar_offset_3 $0008
|
||||
|
||||
|
||||
.define colbar_offset_table $0010
|
||||
.define colbar_color_table $0020
|
||||
.define colbar_count $0030
|
||||
.define colbar_color $0032
|
||||
.define colbar_color_ptr $0034
|
||||
|
||||
|
||||
|
||||
.define hdma_table0 $0050
|
||||
|
||||
.define hdma_table1 $0200
|
||||
.define plane_0 $0800
|
||||
.define plane_1 $0c00
|
||||
.define char_data $2000
|
||||
.define logo_data $2200
|
||||
|
||||
|
||||
init:
|
||||
sei ;stop interrupts
|
||||
phk ;get the current bank and store on stack
|
||||
plb ;get value off stack and make it the current
|
||||
;programming bank
|
||||
clc ;clear carry bit
|
||||
xce ;native 16 bit mode (no 6502 emulation!)
|
||||
|
||||
|
||||
jsr setup
|
||||
|
||||
|
||||
rep #$30 ; x,y,a fixed -> 16 bit mode
|
||||
sep #$20 ; accumulator -> 8 bit mode
|
||||
|
||||
lda #(dp+0) ;load direct page
|
||||
tcd ;store & and assign
|
||||
|
||||
|
||||
|
||||
lda #(plane_0>>8) ; screen map data @ vram location $1000
|
||||
sta $2107 ; plane 0 map location register
|
||||
lda #(plane_1>>8) ; screen map data @ vram location $1000
|
||||
sta $2108 ; plane 1 map location register
|
||||
|
||||
lda #$22 ; plane 0 and plane 1 tile graphics @ $2000
|
||||
sta $210b ; plane 0 tile graphics register
|
||||
lda #$00 ; mode 0 value / tile mode
|
||||
sta $2105 ; graphics mode register
|
||||
|
||||
lda #%00000011 ;
|
||||
sta $212c ; plane enable register
|
||||
|
||||
|
||||
lda #$01
|
||||
sta $4200 ; enable joypad read (bit one)
|
||||
|
||||
lda #$00
|
||||
sta $2121
|
||||
ldx #$0000
|
||||
|
||||
|
||||
col_loop:
|
||||
lda #$ff
|
||||
sta $2122
|
||||
lda #$7f
|
||||
sta $2122
|
||||
inx
|
||||
cpx #$00ff
|
||||
bne col_loop
|
||||
|
||||
|
||||
|
||||
ldx.w #char_data ; assign vram location
|
||||
stx $2116 ; writing to $2118/9 will store data here!
|
||||
ldx #$0000
|
||||
|
||||
copychar:
|
||||
|
||||
lda.w charset,x ; get character set data (font data)
|
||||
sta $2118 ; store bitplane 1
|
||||
stz $2119 ; clear bitplane 2 and increase vram address
|
||||
inx
|
||||
cpx #$0200 ; transfer $0200 bytes
|
||||
bne copychar
|
||||
|
||||
|
||||
ldx #$0000
|
||||
copy_logo: ; copy tile data to vram
|
||||
lda.w optixx_logo,x ; using continuos tile vram pointer
|
||||
sta $2118 ; charset @ $2000
|
||||
stz $2119 ; logo @ $2200
|
||||
inx
|
||||
cpx #$0500
|
||||
bne copy_logo
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
init_plane_0:
|
||||
ldx.w #plane_0 ; assign vram location $1000 to $2116/7
|
||||
stx $2116
|
||||
ldx #$0000
|
||||
|
||||
|
||||
init_plane_0_loop:
|
||||
lda.w text_0,x ; get ascii text data
|
||||
and #$3f ; we only want the first 64 characters
|
||||
; convert ascii to c64 screen code
|
||||
sta $2118
|
||||
stz $2119 ; clear unwanted bits, no h/v flipping
|
||||
inx
|
||||
cpx #$0400 ; transfer entire screen
|
||||
; $20*$20=$0400 (1024 bytes)
|
||||
bne init_plane_0_loop
|
||||
|
||||
|
||||
init_plane_1: ; write optixx logo tiles
|
||||
ldx.w #plane_1
|
||||
stx $2116
|
||||
ldx #$0000
|
||||
lda #$0040
|
||||
|
||||
init_plane_1_clear_1: ; 0x0140 tiles clear
|
||||
sta $2118
|
||||
stz $2119
|
||||
inx
|
||||
cpx #$0140
|
||||
bne init_plane_1_clear_1
|
||||
ldx #$0000
|
||||
|
||||
init_plane_1_loop_1:
|
||||
ina
|
||||
sta $2118
|
||||
stz $2119
|
||||
inx
|
||||
cpx #$00a0 ; 0x00a0 logo tiles
|
||||
bne init_plane_1_loop_1
|
||||
|
||||
ldx #$0000
|
||||
lda #$0040
|
||||
|
||||
init_plane_1_clear_2:
|
||||
sta $2118
|
||||
stz $2119
|
||||
inx
|
||||
cpx #$01a0 ; 0x01a0 tiles clear
|
||||
bne init_plane_1_clear_2
|
||||
ldx #$0000
|
||||
|
||||
init_screen:
|
||||
lda #$0f ; screen enabled, full brightness
|
||||
sta $2100 ;
|
||||
cli ; clear interrupt bit
|
||||
|
||||
init_scroll:
|
||||
lda #$00
|
||||
sta.w scrollval
|
||||
|
||||
|
||||
init_sineoffset:
|
||||
lda #$00
|
||||
sta.w sine_offset
|
||||
lda #$00
|
||||
sta sineswap
|
||||
|
||||
ldx.w #colbar_1_color_values
|
||||
stx colbar_color_table
|
||||
ldx.w #colbar_2_color_values
|
||||
stx colbar_color_table + $02
|
||||
ldx.w #colbar_3_color_values
|
||||
stx colbar_color_table + $04
|
||||
|
||||
ldx.w #colbar_1_color_values
|
||||
stx colbar_color_table + $06
|
||||
ldx.w #colbar_2_color_values
|
||||
stx colbar_color_table + $08
|
||||
ldx.w #colbar_3_color_values
|
||||
stx colbar_color_table + $0a
|
||||
|
||||
lda #$00
|
||||
sta colbar_offset_table
|
||||
lda #$15
|
||||
sta colbar_offset_table + $01
|
||||
lda #$25
|
||||
sta colbar_offset_table + $02
|
||||
lda #$35
|
||||
sta colbar_offset_table + $03
|
||||
lda #$45
|
||||
sta colbar_offset_table + $04
|
||||
lda #$55
|
||||
sta colbar_offset_table + $05
|
||||
|
||||
|
||||
|
||||
call_hmda_setup:
|
||||
jsr init_hdma_table0
|
||||
jsr init_hdma_table1
|
||||
|
||||
jmp intro
|
||||
|
||||
main:
|
||||
jsr wait_vbl
|
||||
jsr sine_plane
|
||||
jsr sine_colbar
|
||||
jsr scroll_plane
|
||||
jsr joypad
|
||||
jmp main
|
||||
|
||||
|
||||
|
||||
|
||||
; test vertical interrupt
|
||||
|
||||
|
||||
wait_vbl:
|
||||
lda $4210 ; check for vertical blank
|
||||
and #$80
|
||||
beq wait_vbl
|
||||
rts
|
||||
|
||||
; joypad poll
|
||||
|
||||
joypad:
|
||||
lda $4212 ; is joypad ready to be read?
|
||||
and #$0001
|
||||
bne joypad ; no? go back until it is!
|
||||
lda $4219 ; read joypad high byte
|
||||
and #$10 ; leave only "start" bit
|
||||
bne reset ; "start" pressed? go to reset
|
||||
rts ; if not then jump back to loop
|
||||
reset:
|
||||
sep #$30
|
||||
lda #$00
|
||||
pha ; push #$00 to stack
|
||||
plb ; pull #$00 from stack and make it the
|
||||
; the programming bank
|
||||
jmp init ; jump long to $008000
|
||||
|
||||
|
||||
|
||||
; gfx routine
|
||||
|
||||
; intro stuff
|
||||
|
||||
intro:
|
||||
rep #$30
|
||||
sep #$20
|
||||
ldx #$f2
|
||||
mosaic_l:
|
||||
jsr wait_vbl
|
||||
jsr wait_vbl
|
||||
txa
|
||||
sta $2106
|
||||
sbc #$10
|
||||
tax
|
||||
cmp #$02
|
||||
bne mosaic_l
|
||||
stz $2106
|
||||
|
||||
fade:
|
||||
ldy #$0f
|
||||
fade_dark:
|
||||
jsr wait_vbl
|
||||
tya
|
||||
sta $2100
|
||||
dey
|
||||
cpy #$0000
|
||||
bne fade_dark
|
||||
|
||||
ldy #$0000
|
||||
fade_light:
|
||||
jsr wait_vbl
|
||||
tya
|
||||
sta $2100
|
||||
iny
|
||||
cpy #$000f
|
||||
bne fade_light
|
||||
|
||||
jmp main
|
||||
|
||||
; scroll loop
|
||||
|
||||
scroll_plane:
|
||||
lda.w scrollval
|
||||
sta $210e
|
||||
stz $210e
|
||||
|
||||
adc #$01
|
||||
|
||||
sta.w scrollval
|
||||
cmp #$ff
|
||||
beq restore_scroll
|
||||
rts
|
||||
restore_scroll:
|
||||
lda #$00
|
||||
sta.w scrollval
|
||||
rts
|
||||
|
||||
sine_plane:
|
||||
rep #$10
|
||||
sep #$20
|
||||
|
||||
lda sine_offset
|
||||
ina
|
||||
sta sine_offset
|
||||
cmp #$ff
|
||||
bne sine_plane_c
|
||||
lda #$00
|
||||
sta sine_offset
|
||||
lda sineswap ; check wich sine table ot take
|
||||
ina
|
||||
sta sineswap
|
||||
cmp #$04 ; after 4 loop reset counter
|
||||
bne sine_plane_c
|
||||
lda #$00
|
||||
sta sineswap
|
||||
|
||||
sine_plane_c:
|
||||
tay
|
||||
ldx #$0000
|
||||
|
||||
sine_plane_l:
|
||||
iny
|
||||
cpy #$ff
|
||||
bne sine_plane_l_c
|
||||
lda #$00
|
||||
tay
|
||||
|
||||
sine_plane_l_c:
|
||||
inx
|
||||
lda.w sineswap
|
||||
cmp #$02 ; lower 2 use vsine 1
|
||||
bmi sine_load_vsine1
|
||||
sine_load_vsine2: ; else use vsine 2
|
||||
lda.w vsine_2,y
|
||||
bra sine_load_done
|
||||
sine_load_vsine1:
|
||||
lda.w vsine_1,y
|
||||
sine_load_done:
|
||||
adc #$c8 ; shift logo left
|
||||
sta hdma_table0+3,x
|
||||
inx
|
||||
inx
|
||||
cpx #$00c0 ; 64 hdma lines a 3 byte
|
||||
bne sine_plane_l
|
||||
|
||||
rep #$30
|
||||
sep #$20
|
||||
rts
|
||||
|
||||
|
||||
sine_colbar:
|
||||
rep #$10
|
||||
sep #$20
|
||||
|
||||
ldx #$00
|
||||
|
||||
sine_colbar_clear:
|
||||
stz hdma_table1+1,x
|
||||
stz hdma_table1+2,x
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
cpx #$012c
|
||||
bne sine_colbar_clear
|
||||
|
||||
lda #$00
|
||||
sta colbar_count
|
||||
|
||||
ldy #$0000
|
||||
sty colbar_color
|
||||
|
||||
|
||||
sine_colbar_init:
|
||||
|
||||
ldy colbar_color
|
||||
|
||||
ldx colbar_color_table,y
|
||||
stx colbar_color_ptr
|
||||
|
||||
lda.w colbar_count
|
||||
tay
|
||||
lda colbar_offset_table,y
|
||||
ina
|
||||
sta colbar_offset_table,y
|
||||
cmp #$ff ; if end of sine table
|
||||
bne sine_colbar_continue
|
||||
lda #$00 ; reset table pointer
|
||||
sta colbar_offset_table,y
|
||||
|
||||
sine_colbar_continue:
|
||||
|
||||
tay
|
||||
lda.w colbarsine_1,y
|
||||
tax
|
||||
ldy #$0000
|
||||
|
||||
sine_colbar_loop:
|
||||
lda (colbar_color_ptr),y
|
||||
ora hdma_table1+1,x
|
||||
and #$ff
|
||||
sta hdma_table1+1,x
|
||||
iny
|
||||
lda (colbar_color_ptr),y
|
||||
ora hdma_table1+2,x
|
||||
and #$ff
|
||||
sta hdma_table1+2,x
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
iny
|
||||
;iny
|
||||
cpy #$0040 ; 32 colot lines a 2 byte
|
||||
bne sine_colbar_loop
|
||||
|
||||
ldy colbar_color
|
||||
iny
|
||||
iny
|
||||
sty colbar_color
|
||||
|
||||
lda.w colbar_count
|
||||
ina
|
||||
sta.w colbar_count
|
||||
cmp #$06
|
||||
bne sine_colbar_init
|
||||
|
||||
sine_colbar_end:
|
||||
rep #$30
|
||||
sep #$20
|
||||
rts
|
||||
|
||||
; init hdma list
|
||||
init_hdma_table0:
|
||||
rep #$10
|
||||
sep #$20
|
||||
ldy #$0000
|
||||
ldx #$0000
|
||||
;lda #$00
|
||||
;sta sine_offset
|
||||
lda #$4c
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
|
||||
init_hdma_table0_loop:
|
||||
lda #$01
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
;lda vsine_1,y
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
iny
|
||||
;cpx #$0183 ; (128 + 1) * 3 = 387 = 0x0183
|
||||
cpx #$00c3 ; (64 + 1) * 3 = 195 = 0x00c0
|
||||
bne init_hdma_table0_loop
|
||||
lda #$4c
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
lda #$02
|
||||
sta $4300
|
||||
lda #$0f
|
||||
sta $4301
|
||||
ldx.w #hdma_table0
|
||||
;ldx.w #test_hmda_table
|
||||
stx $4302
|
||||
lda #$00
|
||||
sta $4304
|
||||
;lda #%00000001
|
||||
;sta $420c
|
||||
rep #$30
|
||||
sep #$20
|
||||
rts
|
||||
|
||||
init_hdma_table1:
|
||||
;rep #$10
|
||||
;sep #$30
|
||||
ldx #$0000
|
||||
|
||||
init_hdma_tabel1_copy:
|
||||
ldy.w backcolors_color_values,x
|
||||
tya
|
||||
sta hdma_table1,x
|
||||
inx
|
||||
cpx #$0295
|
||||
bne init_hdma_tabel1_copy
|
||||
lda #$00
|
||||
sta $4310
|
||||
lda #$21
|
||||
sta $4311
|
||||
ldx.w #backcolors_color_list
|
||||
stx $4312
|
||||
lda #$00
|
||||
sta $4314
|
||||
|
||||
lda #$02
|
||||
sta $4320
|
||||
lda #$22
|
||||
sta $4321
|
||||
;ldx.w #backcolors_color_values
|
||||
ldx.w #hdma_table1
|
||||
stx $4322
|
||||
lda #$00
|
||||
sta $4324
|
||||
lda #%00000111
|
||||
sta $420c
|
||||
rep #$30
|
||||
sep #$20
|
||||
rts
|
||||
|
||||
setup:
|
||||
sep #$30 ; x,y,a are 8 bit numbers
|
||||
lda #$8f ; screen off, full brightness
|
||||
sta $2100 ; brightness + screen enable register
|
||||
lda #$00 ;
|
||||
sta $2101 ; sprite register (size + address in vram)
|
||||
lda #$00
|
||||
sta $2102 ; sprite registers (address of sprite memory [oam])
|
||||
sta $2103 ; "" ""
|
||||
lda #$00 ; mode 0
|
||||
sta $2105 ; graphic mode register
|
||||
lda #$00 ; no planes, no mosaic
|
||||
sta $2106 ; mosaic register
|
||||
lda #$00 ;
|
||||
sta $2107 ; plane 0 map vram location
|
||||
lda #$00
|
||||
sta $2108 ; plane 1 map vram location
|
||||
lda #$00
|
||||
sta $2109 ; plane 2 map vram location
|
||||
lda #$00
|
||||
sta $210a ; plane 3 map vram location
|
||||
lda #$00
|
||||
sta $210b ; plane 0+1 tile data location
|
||||
lda #$00
|
||||
sta $210c ; plane 2+3 tile data location
|
||||
lda #$00
|
||||
sta $210d ; plane 0 scroll x (first 8 bits)
|
||||
sta $210d ; plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $210e ; plane 0 scroll y (first 8 bits)
|
||||
sta $210e ; plane 0 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $210f ; plane 1 scroll x (first 8 bits)
|
||||
sta $210f ; plane 1 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2110 ; plane 1 scroll y (first 8 bits)
|
||||
sta $2110 ; plane 1 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $2111 ; plane 2 scroll x (first 8 bits)
|
||||
sta $2111 ; plane 2 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2112 ; plane 2 scroll y (first 8 bits)
|
||||
sta $2112 ; plane 2 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $2113 ; plane 3 scroll x (first 8 bits)
|
||||
sta $2113 ; plane 3 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2114 ; plane 3 scroll y (first 8 bits)
|
||||
sta $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
|
||||
lda #$00
|
||||
sta $2116 ; vram address low
|
||||
sta $2117 ; vram address high
|
||||
sta $211a ; initial mode 7 setting register
|
||||
sta $211b ; mode 7 matrix parameter a register (low)
|
||||
lda #$01
|
||||
sta $211b ; mode 7 matrix parameter a register (high)
|
||||
lda #$00
|
||||
sta $211c ; mode 7 matrix parameter b register (low)
|
||||
sta $211c ; mode 7 matrix parameter b register (high)
|
||||
sta $211d ; mode 7 matrix parameter c register (low)
|
||||
sta $211d ; mode 7 matrix parameter c register (high)
|
||||
sta $211e ; mode 7 matrix parameter d register (low)
|
||||
lda #$01
|
||||
sta $211e ; mode 7 matrix parameter d register (high)
|
||||
lda #$00
|
||||
sta $211f ; mode 7 center position x register (low)
|
||||
sta $211f ; mode 7 center position x register (high)
|
||||
sta $2120 ; mode 7 center position y register (low)
|
||||
sta $2120 ; mode 7 center position y register (high)
|
||||
sta $2121 ; color number register ($0-ff)
|
||||
sta $2123 ; bg1 & bg2 window mask setting register
|
||||
sta $2124 ; bg3 & bg4 window mask setting register
|
||||
sta $2125 ; obj & color window mask setting register
|
||||
sta $2126 ; window 1 left position register
|
||||
sta $2127 ; window 2 left position register
|
||||
sta $2128 ; window 3 left position register
|
||||
sta $2129 ; window 4 left position register
|
||||
sta $212a ; bg1, bg2, bg3, bg4 window logic register
|
||||
sta $212b ; obj, color window logic register (or,and,xor,xnor)
|
||||
lda #$01
|
||||
sta $212c ; main screen designation (planes, sprites enable)
|
||||
lda #$00
|
||||
sta $212d ; sub screen designation
|
||||
lda #$00
|
||||
sta $212e ; window mask for main screen
|
||||
sta $212f ; window mask for sub screen
|
||||
lda #$30
|
||||
sta $2130 ; color addition & screen addition init setting
|
||||
lda #$00
|
||||
sta $2131 ; add/sub sub designation for screen, sprite, color
|
||||
lda #$e0
|
||||
sta $2132 ; color data for addition/subtraction
|
||||
lda #$00
|
||||
sta $2133 ; screen setting (interlace x,y/enable sfx data)
|
||||
lda #$00
|
||||
sta $4200 ; enable v-blank, interrupt, joypad register
|
||||
lda #$ff
|
||||
sta $4201 ; programmable i/o port
|
||||
lda #$00
|
||||
sta $4202 ; multiplicand a
|
||||
sta $4203 ; multiplier b
|
||||
sta $4204 ; multiplier c
|
||||
sta $4205 ; multiplicand c
|
||||
sta $4206 ; divisor b
|
||||
sta $4207 ; horizontal count timer
|
||||
sta $4208 ; horizontal count timer msb (most significant bit)
|
||||
sta $4209 ; vertical count timer
|
||||
sta $420a ; vertical count timer msb
|
||||
sta $420b ; general dma enable (bits 0-7)
|
||||
sta $420c ; horizontal dma (hdma) enable (bits 0-7)
|
||||
sta $420d ; access cycle designation (slow/fast rom)
|
||||
rts
|
||||
|
||||
|
||||
|
||||
charset:
|
||||
|
||||
.db $55,$aa,$55,$aa,$55,$aa,$55,$aa ;'@'
|
||||
.db $00,$3c,$66,$7e,$66,$66,$66,$00 ;'a'
|
||||
.db $00,$7c,$66,$7c,$66,$66,$7c,$00 ;'b'
|
||||
.db $00,$3c,$66,$60,$60,$66,$3c,$00 ;'c'
|
||||
.db $00,$78,$6c,$66,$66,$6c,$78,$00 ;'d'
|
||||
.db $00,$7e,$60,$78,$60,$60,$7e,$00 ;'e'
|
||||
.db $00,$7e,$60,$78,$60,$60,$60,$00 ;'f'
|
||||
.db $00,$3c,$66,$60,$6e,$66,$3c,$00 ;'g'
|
||||
.db $00,$66,$66,$7e,$66,$66,$66,$00 ;'h'
|
||||
.db $00,$3c,$18,$18,$18,$18,$3c,$00 ;'i'
|
||||
.db $00,$1e,$0c,$0c,$0c,$6c,$38,$00 ;'j'
|
||||
.db $00,$6c,$78,$70,$78,$6c,$66,$00 ;'k'
|
||||
.db $00,$60,$60,$60,$60,$60,$7e,$00 ;'l'
|
||||
.db $00,$63,$77,$7f,$6b,$63,$63,$00 ;'m'
|
||||
.db $00,$66,$76,$7e,$7e,$6e,$66,$00 ;'n'
|
||||
.db $00,$3c,$66,$66,$66,$66,$3c,$00 ;'o'
|
||||
.db $00,$7c,$66,$66,$7c,$60,$60,$00 ;'p'
|
||||
.db $00,$3c,$66,$66,$66,$3c,$0e,$00 ;'q'
|
||||
.db $00,$7c,$66,$66,$7c,$6c,$66,$00 ;'r'
|
||||
.db $00,$3e,$60,$3c,$06,$66,$3c,$00 ;'s'
|
||||
.db $00,$7e,$18,$18,$18,$18,$18,$00 ;'t'
|
||||
.db $00,$66,$66,$66,$66,$66,$3c,$00 ;'u'
|
||||
.db $00,$66,$66,$66,$66,$3c,$18,$00 ;'v'
|
||||
.db $00,$63,$63,$6b,$7f,$77,$63,$00 ;'w'
|
||||
.db $00,$66,$3c,$18,$3c,$66,$66,$00 ;'x'
|
||||
.db $00,$66,$66,$3c,$18,$18,$18,$00 ;'y'
|
||||
.db $00,$7e,$0c,$18,$30,$60,$7e,$00 ;'z'
|
||||
.db $00,$3c,$30,$30,$30,$30,$3c,$00 ;'['
|
||||
.db $c0,$60,$30,$18,$0c,$06,$03,$00 ;'|'
|
||||
.db $00,$3c,$0c,$0c,$0c,$0c,$3c,$00 ;']'
|
||||
.db $10,$38,$6c,$c6,$00,$00,$00,$00 ;'^'
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$fe ;'_'
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ;' '
|
||||
.db $00,$18,$18,$18,$00,$00,$18,$00 ;'!'
|
||||
.db $00,$66,$66,$00,$00,$00,$00,$00 ;'"'
|
||||
.db $00,$66,$ff,$66,$ff,$66,$00,$00 ;'#'
|
||||
.db $00,$08,$1c,$28,$28,$1c,$08,$00 ;'$'
|
||||
.db $00,$64,$6c,$18,$30,$6c,$4c,$00 ;'%'
|
||||
.db $00,$00,$18,$18,$7e,$18,$18,$00 ;'&'
|
||||
.db $00,$0c,$18,$00,$00,$00,$00,$00 ;'''
|
||||
.db $00,$18,$30,$30,$30,$18,$0c,$00 ;'('
|
||||
.db $00,$18,$0c,$0c,$0c,$18,$30,$00 ;')'
|
||||
.db $00,$66,$3c,$ff,$3c,$66,$00,$00 ;'*'
|
||||
.db $00,$18,$18,$7e,$18,$18,$00,$00 ;'+'
|
||||
.db $00,$00,$00,$00,$00,$18,$18,$30 ;','
|
||||
.db $00,$00,$00,$fe,$00,$00,$00,$00 ;'-'
|
||||
.db $00,$00,$00,$00,$00,$18,$18,$00 ;'.'
|
||||
.db $03,$06,$0c,$18,$30,$60,$c0,$00 ;'/'
|
||||
.db $00,$3c,$66,$6e,$76,$66,$3c,$00 ;'0'
|
||||
.db $00,$18,$38,$18,$18,$18,$7e,$00 ;'1'
|
||||
.db $00,$7c,$06,$0c,$30,$60,$7e,$00 ;'2'
|
||||
.db $00,$7e,$06,$1c,$06,$66,$3c,$00 ;'3'
|
||||
.db $00,$0e,$1e,$36,$7f,$06,$06,$00 ;'4'
|
||||
.db $00,$7e,$60,$7c,$06,$66,$3c,$00 ;'5'
|
||||
.db $00,$3e,$60,$7c,$66,$66,$3c,$00 ;'6'
|
||||
.db $00,$7e,$06,$0c,$0c,$0c,$0c,$00 ;'7'
|
||||
.db $00,$3c,$66,$3c,$66,$66,$3c,$00 ;'8'
|
||||
.db $00,$3c,$66,$3e,$06,$66,$3c,$00 ;'9'
|
||||
.db $00,$00,$18,$00,$00,$18,$00,$00 ;':'
|
||||
.db $00,$00,$18,$00,$00,$18,$18,$30 ;';'
|
||||
.db $18,$18,$18,$18,$18,$18,$18,$00 ;'<'
|
||||
.db $00,$00,$7e,$00,$7e,$00,$00,$00 ;'='
|
||||
.db $18,$18,$0c,$0c,$0c,$0c,$18,$18 ;'>'
|
||||
.db $00,$7c,$06,$0c,$18,$00,$18,$00 ;'?'
|
||||
|
||||
; 12345678901234567890123456789012
|
||||
text_0:
|
||||
.db " _ _ "
|
||||
.db " ___ _ __ | |_(_)_ ____ __ "
|
||||
.db " / _ \| '_ \| __| \ \/ /\ \/ / "
|
||||
.db " | (_) | |_) | |_| |> < > < "
|
||||
.db " \___/| .__/ \__|_/_/\_\/_/\_\ "
|
||||
.db " |_| "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " OPTIXX ONCE A AGAIN "
|
||||
.db " WITH A CONSOLE RELEASE "
|
||||
.db " WWW.OPTIXX.ORG "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
.db " "
|
||||
|
||||
|
||||
.INCLUDE "vsine_1.s"
|
||||
|
||||
.INCLUDE "vsine_2.s"
|
||||
|
||||
.INCLUDE "backcolors.s"
|
||||
|
||||
.INCLUDE "colbar_1.s"
|
||||
|
||||
.INCLUDE "colbar_2.s"
|
||||
|
||||
.INCLUDE "colbar_3.s"
|
||||
|
||||
|
||||
|
||||
.INCLUDE "optixx_logo.s"
|
||||
|
||||
|
||||
.INCLUDE "colbarsine_1.s"
|
||||
.ends
|
||||
|
||||
|
||||
|
||||
.bank 1
|
||||
|
||||
.SECTION "GFX"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.ends
|
||||
|
||||
|
||||
;.BANK $04 SLOT 6
|
||||
;.ORGA $8000
|
||||
;long_label:
|
||||
nop
|
||||
nop
|
||||
rts
|
||||
|
||||
|
||||
;.BANK $01 SLOT 6
|
||||
;.ORGA $8000
|
||||
;.BASE $01
|
||||
;.INCLUDE "music.s"
|
||||
|
||||
;.BANK $02 SLOT 6
|
||||
;.ORG $0000
|
||||
;music_data_1:
|
||||
;.INCBIN "music1.bin"
|
||||
|
||||
;.BANk $03 SLOT 6
|
||||
;.ORG $0000
|
||||
;music_data_2:
|
||||
;.INCBIN "music2.bin"
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
; ***********************************************************
|
||||
; *** Music routine taken from 'ZOOM.ASM'. ***
|
||||
; *** Optimized by Yoshi ***
|
||||
; ***********************************************************
|
||||
|
||||
play_music:
|
||||
sep #$30
|
||||
lda #$ff
|
||||
sta $2140
|
||||
rep #$10
|
||||
ldx.w #$7fff
|
||||
- lda.l $028000,x
|
||||
sta.l $7f0000,x
|
||||
lda.l $038000,x
|
||||
sta.l $7f8000,x
|
||||
dex
|
||||
bpl -
|
||||
|
||||
|
||||
stz $00fd
|
||||
stz $00fe
|
||||
|
||||
lda #$7f
|
||||
sta $00ff
|
||||
ina ; Oh boy. Actually stores #$80. :-)
|
||||
sta $2100
|
||||
|
||||
stz $4200
|
||||
sei
|
||||
jsr res1
|
||||
sep #$30
|
||||
- lda $2140
|
||||
bne -
|
||||
|
||||
lda #$e0
|
||||
sta $2143
|
||||
lda #$ff
|
||||
sta $2142
|
||||
lda #$01
|
||||
sta $2141
|
||||
sta $2140
|
||||
- lda $2140
|
||||
cmp #$01
|
||||
bne -
|
||||
|
||||
- lda $2140
|
||||
cmp #$55
|
||||
bne -
|
||||
|
||||
lda $0207
|
||||
sta $2141
|
||||
lda #$07
|
||||
sta $2140
|
||||
- lda $2140
|
||||
cmp #$07
|
||||
bne -
|
||||
|
||||
- lda $2140
|
||||
cmp #$55
|
||||
bne -
|
||||
|
||||
cli
|
||||
rts
|
||||
|
||||
res1 php
|
||||
jsr res2
|
||||
plp
|
||||
stz $2140
|
||||
rts
|
||||
|
||||
res2 php
|
||||
rep #$30
|
||||
;ldy.w #$0000
|
||||
lda.w #$bbaa
|
||||
- cmp $2140
|
||||
bne -
|
||||
|
||||
sep #$20
|
||||
lda #$cc
|
||||
bra B1
|
||||
|
||||
B4 lda [$fd],y
|
||||
iny
|
||||
xba
|
||||
lda #$00
|
||||
bra B2
|
||||
|
||||
B3 xba
|
||||
lda [$fd],y
|
||||
iny
|
||||
xba
|
||||
B5 cmp $2140
|
||||
bne B5
|
||||
|
||||
ina
|
||||
B2 rep #$20
|
||||
sta $2140
|
||||
sep #$20
|
||||
dex
|
||||
bne B3
|
||||
|
||||
- cmp $2140
|
||||
bne -
|
||||
- adc #$03
|
||||
beq -
|
||||
|
||||
B1 pha
|
||||
rep #$20
|
||||
lda [$fd],y
|
||||
iny
|
||||
iny
|
||||
tax
|
||||
lda [$fd],y
|
||||
iny
|
||||
iny
|
||||
sta $2142
|
||||
sep #$20
|
||||
cpx.w #$0001
|
||||
lda #$00
|
||||
rol
|
||||
sta $2141
|
||||
adc #$7f
|
||||
pla
|
||||
sta $2140
|
||||
- cmp $2140
|
||||
bne -
|
||||
bvs B4
|
||||
|
||||
plp
|
||||
rts
|
||||
pla
|
||||
sta $2140
|
||||
- cmp $2140
|
||||
bne -
|
||||
bvs B5
|
||||
|
||||
plp
|
||||
rts
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,170 @@
|
||||
|
||||
|
||||
|
||||
optixx_logo:
|
||||
|
||||
; ### row 04 ###
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=00 plane=00 row=04 col=00
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=01 plane=00 row=04 col=01
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=02 plane=00 row=04 col=02
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=03 plane=00 row=04 col=03
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=04 plane=00 row=04 col=04
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=05 plane=00 row=04 col=05
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=06 plane=00 row=04 col=06
|
||||
.db $00,$00,$00,$00,$00,$00,$03,$0f ; tile=07 plane=00 row=04 col=07
|
||||
.db $00,$00,$00,$00,$00,$00,$ff,$ff ; tile=08 plane=00 row=04 col=08
|
||||
.db $00,$00,$00,$00,$00,$00,$fe,$fe ; tile=09 plane=00 row=04 col=09
|
||||
.db $00,$00,$00,$00,$00,$00,$1f,$1f ; tile=0a plane=00 row=04 col=0a
|
||||
.db $00,$00,$00,$00,$00,$00,$ff,$ff ; tile=0b plane=00 row=04 col=0b
|
||||
.db $00,$00,$00,$00,$00,$00,$f0,$fc ; tile=0c plane=00 row=04 col=0c
|
||||
.db $00,$00,$00,$00,$00,$00,$03,$03 ; tile=0d plane=00 row=04 col=0d
|
||||
.db $00,$00,$00,$00,$00,$00,$ff,$ff ; tile=0e plane=00 row=04 col=0e
|
||||
.db $00,$00,$00,$00,$00,$00,$ff,$ff ; tile=0f plane=00 row=04 col=0f
|
||||
.db $00,$00,$00,$00,$00,$00,$fe,$fe ; tile=10 plane=00 row=04 col=10
|
||||
.db $00,$00,$00,$00,$00,$00,$1f,$1f ; tile=11 plane=00 row=04 col=11
|
||||
.db $00,$00,$00,$00,$00,$00,$80,$80 ; tile=12 plane=00 row=04 col=12
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=13 plane=00 row=04 col=13
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=14 plane=00 row=04 col=14
|
||||
.db $00,$00,$00,$00,$00,$00,$3f,$3f ; tile=15 plane=00 row=04 col=15
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=16 plane=00 row=04 col=16
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=17 plane=00 row=04 col=17
|
||||
.db $00,$00,$00,$00,$00,$00,$01,$01 ; tile=18 plane=00 row=04 col=18
|
||||
.db $00,$00,$00,$00,$00,$00,$f8,$f8 ; tile=19 plane=00 row=04 col=19
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1a plane=00 row=04 col=1a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1b plane=00 row=04 col=1b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1c plane=00 row=04 col=1c
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1d plane=00 row=04 col=1d
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1e plane=00 row=04 col=1e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=1f plane=00 row=04 col=1f
|
||||
; ### row 03 ###
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=20 plane=00 row=03 col=00
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=21 plane=00 row=03 col=01
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=22 plane=00 row=03 col=02
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=23 plane=00 row=03 col=03
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=24 plane=00 row=03 col=04
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=25 plane=00 row=03 col=05
|
||||
.db $00,$00,$00,$01,$03,$07,$07,$07 ; tile=26 plane=00 row=03 col=06
|
||||
.db $3f,$7f,$ff,$ff,$fc,$f0,$e0,$e0 ; tile=27 plane=00 row=03 col=07
|
||||
.db $ff,$ff,$ff,$ff,$00,$00,$01,$01 ; tile=28 plane=00 row=03 col=08
|
||||
.db $fe,$fc,$fc,$fc,$fc,$fc,$f8,$f8 ; tile=29 plane=00 row=03 col=09
|
||||
.db $1f,$1f,$3f,$3f,$00,$00,$00,$00 ; tile=2a plane=00 row=03 col=0a
|
||||
.db $ff,$ff,$ff,$ff,$00,$00,$00,$00 ; tile=2b plane=00 row=03 col=0b
|
||||
.db $fe,$ff,$ff,$ff,$3f,$1f,$0f,$0f ; tile=2c plane=00 row=03 col=0c
|
||||
.db $03,$03,$87,$c7,$c0,$c0,$c0,$c0 ; tile=2d plane=00 row=03 col=0d
|
||||
.db $ff,$ff,$ff,$ff,$00,$00,$00,$00 ; tile=2e plane=00 row=03 col=0e
|
||||
.db $ff,$ff,$ff,$ff,$00,$00,$00,$00 ; tile=2f plane=00 row=03 col=0f
|
||||
.db $fe,$fc,$fc,$fc,$00,$00,$00,$00 ; tile=30 plane=00 row=03 col=10
|
||||
.db $1f,$1f,$3f,$3f,$3f,$3f,$3f,$7e ; tile=31 plane=00 row=03 col=11
|
||||
.db $80,$80,$80,$00,$03,$03,$03,$07 ; tile=32 plane=00 row=03 col=12
|
||||
.db $00,$00,$00,$00,$f0,$f0,$f0,$e0 ; tile=33 plane=00 row=03 col=13
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=34 plane=00 row=03 col=14
|
||||
.db $3f,$7e,$7e,$7e,$7e,$7e,$fc,$fc ; tile=35 plane=00 row=03 col=15
|
||||
.db $00,$00,$00,$00,$1f,$1f,$1f,$3f ; tile=36 plane=00 row=03 col=16
|
||||
.db $00,$00,$00,$00,$80,$80,$80,$00 ; tile=37 plane=00 row=03 col=17
|
||||
.db $01,$03,$03,$03,$03,$03,$07,$07 ; tile=38 plane=00 row=03 col=18
|
||||
.db $f8,$f0,$f0,$f0,$f0,$f0,$e0,$e0 ; tile=39 plane=00 row=03 col=19
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3a plane=00 row=03 col=1a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3b plane=00 row=03 col=1b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3c plane=00 row=03 col=1c
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3d plane=00 row=03 col=1d
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3e plane=00 row=03 col=1e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=3f plane=00 row=03 col=1f
|
||||
; ### row 02 ###
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=40 plane=00 row=02 col=00
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=41 plane=00 row=02 col=01
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=42 plane=00 row=02 col=02
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=43 plane=00 row=02 col=03
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=44 plane=00 row=02 col=04
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=45 plane=00 row=02 col=05
|
||||
.db $0f,$0f,$0f,$0f,$1f,$1f,$1f,$1f ; tile=46 plane=00 row=02 col=06
|
||||
.db $c0,$c0,$c0,$c0,$80,$80,$80,$80 ; tile=47 plane=00 row=02 col=07
|
||||
.db $01,$01,$03,$03,$03,$03,$03,$07 ; tile=48 plane=00 row=02 col=08
|
||||
.db $f8,$f8,$f8,$f0,$f0,$f0,$f0,$e0 ; tile=49 plane=00 row=02 col=09
|
||||
.db $00,$00,$7f,$7f,$ff,$ff,$ff,$ff ; tile=4a plane=00 row=02 col=0a
|
||||
.db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff ; tile=4b plane=00 row=02 col=0b
|
||||
.db $0f,$1f,$ff,$ff,$ff,$ff,$ff,$ff ; tile=4c plane=00 row=02 col=0c
|
||||
.db $c0,$c0,$8a,$8f,$9f,$9f,$9f,$1f ; tile=4d plane=00 row=02 col=0d
|
||||
.db $00,$00,$80,$c0,$80,$80,$80,$80 ; tile=4e plane=00 row=02 col=0e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=4f plane=00 row=02 col=0f
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=50 plane=00 row=02 col=10
|
||||
.db $7e,$7e,$7e,$7e,$fc,$fc,$fc,$fc ; tile=51 plane=00 row=02 col=11
|
||||
.db $07,$07,$07,$07,$07,$03,$07,$0f ; tile=52 plane=00 row=02 col=12
|
||||
.db $e0,$f0,$ff,$ff,$ff,$ff,$ff,$ff ; tile=53 plane=00 row=02 col=13
|
||||
.db $00,$01,$ff,$ff,$ff,$ff,$ff,$ff ; tile=54 plane=00 row=02 col=14
|
||||
.db $fc,$fc,$f8,$f8,$f0,$e0,$f0,$f0 ; tile=55 plane=00 row=02 col=15
|
||||
.db $3f,$3f,$3f,$3f,$3f,$1f,$3f,$7f ; tile=56 plane=00 row=02 col=16
|
||||
.db $00,$80,$ff,$ff,$ff,$ff,$ff,$ff ; tile=57 plane=00 row=02 col=17
|
||||
.db $07,$0f,$ff,$ff,$ff,$ff,$ff,$ff ; tile=58 plane=00 row=02 col=18
|
||||
.db $e0,$e0,$c0,$c0,$80,$00,$80,$80 ; tile=59 plane=00 row=02 col=19
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5a plane=00 row=02 col=1a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5b plane=00 row=02 col=1b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5c plane=00 row=02 col=1c
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5d plane=00 row=02 col=1d
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5e plane=00 row=02 col=1e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=5f plane=00 row=02 col=1f
|
||||
; ### row 01 ###
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=60 plane=00 row=01 col=00
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=61 plane=00 row=01 col=01
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=62 plane=00 row=01 col=02
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=63 plane=00 row=01 col=03
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=64 plane=00 row=01 col=04
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=65 plane=00 row=01 col=05
|
||||
.db $3f,$3f,$3f,$3f,$3f,$7e,$7e,$7f ; tile=66 plane=00 row=01 col=06
|
||||
.db $80,$00,$00,$00,$00,$00,$00,$ff ; tile=67 plane=00 row=01 col=07
|
||||
.db $07,$07,$07,$0f,$0f,$3f,$7f,$ff ; tile=68 plane=00 row=01 col=08
|
||||
.db $e1,$e1,$e1,$e1,$c1,$c3,$83,$03 ; tile=69 plane=00 row=01 col=09
|
||||
.db $fc,$f8,$f8,$f8,$f8,$f8,$f0,$f0 ; tile=6a plane=00 row=01 col=0a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=6b plane=00 row=01 col=0b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=6c plane=00 row=01 col=0c
|
||||
.db $3f,$3f,$3f,$3f,$3f,$3f,$3f,$1f ; tile=6d plane=00 row=01 col=0d
|
||||
.db $80,$00,$00,$00,$00,$80,$c0,$ff ; tile=6e plane=00 row=01 col=0e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$f0 ; tile=6f plane=00 row=01 col=0f
|
||||
.db $01,$01,$01,$01,$01,$03,$03,$03 ; tile=70 plane=00 row=01 col=10
|
||||
.db $fc,$f8,$f8,$f8,$f8,$f8,$f0,$f0 ; tile=71 plane=00 row=01 col=11
|
||||
.db $0f,$1f,$1f,$1f,$1f,$3f,$3f,$3f ; tile=72 plane=00 row=01 col=12
|
||||
.db $c0,$c0,$80,$80,$80,$00,$00,$00 ; tile=73 plane=00 row=01 col=13
|
||||
.db $07,$03,$03,$03,$07,$07,$07,$00 ; tile=74 plane=00 row=01 col=14
|
||||
.db $f0,$f0,$f0,$f0,$e0,$e1,$e1,$01 ; tile=75 plane=00 row=01 col=15
|
||||
.db $7e,$fe,$fc,$fc,$fc,$f8,$f8,$f8 ; tile=76 plane=00 row=01 col=16
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=77 plane=00 row=01 col=17
|
||||
.db $3f,$1f,$1f,$1f,$3f,$3f,$3f,$00 ; tile=78 plane=00 row=01 col=18
|
||||
.db $80,$80,$80,$80,$00,$00,$00,$00 ; tile=79 plane=00 row=01 col=19
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7a plane=00 row=01 col=1a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7b plane=00 row=01 col=1b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7c plane=00 row=01 col=1c
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7d plane=00 row=01 col=1d
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7e plane=00 row=01 col=1e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=7f plane=00 row=01 col=1f
|
||||
; ### row 00 ###
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=80 plane=00 row=00 col=00
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=81 plane=00 row=00 col=01
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=82 plane=00 row=00 col=02
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=83 plane=00 row=00 col=03
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=84 plane=00 row=00 col=04
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=85 plane=00 row=00 col=05
|
||||
.db $7f,$7f,$ff,$ff,$ff,$00,$00,$00 ; tile=86 plane=00 row=00 col=06
|
||||
.db $ff,$ff,$ff,$ff,$ff,$00,$00,$00 ; tile=87 plane=00 row=00 col=07
|
||||
.db $fe,$fc,$f8,$e0,$80,$00,$00,$00 ; tile=88 plane=00 row=00 col=08
|
||||
.db $03,$03,$03,$01,$00,$00,$00,$00 ; tile=89 plane=00 row=00 col=09
|
||||
.db $f0,$f0,$e0,$e0,$e0,$00,$00,$00 ; tile=8a plane=00 row=00 col=0a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=8b plane=00 row=00 col=0b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=8c plane=00 row=00 col=0c
|
||||
.db $1f,$0f,$07,$03,$00,$00,$00,$00 ; tile=8d plane=00 row=00 col=0d
|
||||
.db $ff,$ff,$ff,$ff,$ff,$00,$00,$00 ; tile=8e plane=00 row=00 col=0e
|
||||
.db $e0,$e0,$e0,$e0,$c0,$00,$00,$00 ; tile=8f plane=00 row=00 col=0f
|
||||
.db $03,$03,$03,$01,$00,$00,$00,$00 ; tile=90 plane=00 row=00 col=10
|
||||
.db $f0,$f0,$e0,$e0,$e0,$00,$00,$00 ; tile=91 plane=00 row=00 col=11
|
||||
.db $3f,$3f,$3e,$1e,$0e,$00,$00,$00 ; tile=92 plane=00 row=00 col=12
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=93 plane=00 row=00 col=13
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=94 plane=00 row=00 col=14
|
||||
.db $01,$01,$01,$00,$00,$00,$00,$00 ; tile=95 plane=00 row=00 col=15
|
||||
.db $f8,$f8,$f0,$f0,$70,$00,$00,$00 ; tile=96 plane=00 row=00 col=16
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=97 plane=00 row=00 col=17
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=98 plane=00 row=00 col=18
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=99 plane=00 row=00 col=19
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9a plane=00 row=00 col=1a
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9b plane=00 row=00 col=1b
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9c plane=00 row=00 col=1c
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9d plane=00 row=00 col=1d
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9e plane=00 row=00 col=1e
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ; tile=9f plane=00 row=00 col=1f
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,705 @@
|
||||
.EMPTYFILL 0
|
||||
.LOROM
|
||||
|
||||
|
||||
.MEMORYMAP
|
||||
SLOTSIZE $8000
|
||||
DEFAULTSLOT 0
|
||||
SLOT 0 $0000 ; ram , direct page
|
||||
SLOT 1 $2000 ; PPU1, APU
|
||||
SLOT 2 $3000 ; SFX, DSP
|
||||
SLOT 3 $4000 ; Controller
|
||||
SLOT 4 $4200 ; PPU2, DMA
|
||||
SLOT 5 $6000 ; RESERVED
|
||||
SLOT 6 $8000 ; code segment
|
||||
.ENDME
|
||||
|
||||
;.ROMBANKSIZE $8000
|
||||
;.ROMBANKS $80
|
||||
|
||||
.ROMBANKMAP
|
||||
BANKSTOTAL $80
|
||||
BANKSIZE $8000
|
||||
BANKS $80
|
||||
.ENDRO
|
||||
|
||||
|
||||
.NAME "optixx"
|
||||
|
||||
.BANK $00 SLOT 6
|
||||
.ORG $0000
|
||||
.ORGA $8000
|
||||
|
||||
|
||||
|
||||
.SECTION "MAIN"
|
||||
|
||||
.define dp $0000
|
||||
|
||||
.define xstorage1 $0001
|
||||
.define xstorage2 $0002
|
||||
.define sineoffset $0003
|
||||
.define scrollval $0005
|
||||
.define col_reg $0007
|
||||
.define hdma_table0 $0010
|
||||
.define plane_0 $0400
|
||||
.define plane_1 $0800
|
||||
.define tile $2000
|
||||
|
||||
|
||||
init:
|
||||
sei ;stop interrupts
|
||||
phk ;get the current bank and store on stack
|
||||
plb ;get value off stack and make it the current
|
||||
;programming bank
|
||||
clc ;clear carry bit
|
||||
xce ;native 16 bit mode (no 6502 emulation!)
|
||||
|
||||
jsr init_hdma_table0
|
||||
;==========================================================================
|
||||
; start of snes register initialization
|
||||
;==========================================================================
|
||||
|
||||
sep #$30 ; x,y,a are 8 bit numbers
|
||||
lda #$8f ; screen off, full brightness
|
||||
sta $2100 ; brightness + screen enable register
|
||||
lda #$00 ;
|
||||
sta $2101 ; sprite register (size + address in vram)
|
||||
lda #$00
|
||||
sta $2102 ; sprite registers (address of sprite memory [oam])
|
||||
sta $2103 ; "" ""
|
||||
lda #$00 ; mode 0
|
||||
sta $2105 ; graphic mode register
|
||||
lda #$00 ; no planes, no mosaic
|
||||
sta $2106 ; mosaic register
|
||||
lda #$00 ;
|
||||
sta $2107 ; plane 0 map vram location
|
||||
lda #$00
|
||||
sta $2108 ; plane 1 map vram location
|
||||
lda #$00
|
||||
sta $2109 ; plane 2 map vram location
|
||||
lda #$00
|
||||
sta $210a ; plane 3 map vram location
|
||||
lda #$00
|
||||
sta $210b ; plane 0+1 tile data location
|
||||
lda #$00
|
||||
sta $210c ; plane 2+3 tile data location
|
||||
lda #$00
|
||||
sta $210d ; plane 0 scroll x (first 8 bits)
|
||||
sta $210d ; plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $210e ; plane 0 scroll y (first 8 bits)
|
||||
sta $210e ; plane 0 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $210f ; plane 1 scroll x (first 8 bits)
|
||||
sta $210f ; plane 1 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2110 ; plane 1 scroll y (first 8 bits)
|
||||
sta $2110 ; plane 1 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $2111 ; plane 2 scroll x (first 8 bits)
|
||||
sta $2111 ; plane 2 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2112 ; plane 2 scroll y (first 8 bits)
|
||||
sta $2112 ; plane 2 scroll y (last 3 bits) #$0 - #$07ff
|
||||
sta $2113 ; plane 3 scroll x (first 8 bits)
|
||||
sta $2113 ; plane 3 scroll x (last 3 bits) #$0 - #$07ff
|
||||
sta $2114 ; plane 3 scroll y (first 8 bits)
|
||||
sta $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
|
||||
lda #$00
|
||||
sta $2116 ; vram address low
|
||||
sta $2117 ; vram address high
|
||||
sta $211a ; initial mode 7 setting register
|
||||
sta $211b ; mode 7 matrix parameter a register (low)
|
||||
lda #$01
|
||||
sta $211b ; mode 7 matrix parameter a register (high)
|
||||
lda #$00
|
||||
sta $211c ; mode 7 matrix parameter b register (low)
|
||||
sta $211c ; mode 7 matrix parameter b register (high)
|
||||
sta $211d ; mode 7 matrix parameter c register (low)
|
||||
sta $211d ; mode 7 matrix parameter c register (high)
|
||||
sta $211e ; mode 7 matrix parameter d register (low)
|
||||
lda #$01
|
||||
sta $211e ; mode 7 matrix parameter d register (high)
|
||||
lda #$00
|
||||
sta $211f ; mode 7 center position x register (low)
|
||||
sta $211f ; mode 7 center position x register (high)
|
||||
sta $2120 ; mode 7 center position y register (low)
|
||||
sta $2120 ; mode 7 center position y register (high)
|
||||
sta $2121 ; color number register ($0-ff)
|
||||
sta $2123 ; bg1 & bg2 window mask setting register
|
||||
sta $2124 ; bg3 & bg4 window mask setting register
|
||||
sta $2125 ; obj & color window mask setting register
|
||||
sta $2126 ; window 1 left position register
|
||||
sta $2127 ; window 2 left position register
|
||||
sta $2128 ; window 3 left position register
|
||||
sta $2129 ; window 4 left position register
|
||||
sta $212a ; bg1, bg2, bg3, bg4 window logic register
|
||||
sta $212b ; obj, color window logic register (or,and,xor,xnor)
|
||||
lda #$01
|
||||
sta $212c ; main screen designation (planes, sprites enable)
|
||||
lda #$00
|
||||
sta $212d ; sub screen designation
|
||||
lda #$00
|
||||
sta $212e ; window mask for main screen
|
||||
sta $212f ; window mask for sub screen
|
||||
lda #$30
|
||||
sta $2130 ; color addition & screen addition init setting
|
||||
lda #$00
|
||||
sta $2131 ; add/sub sub designation for screen, sprite, color
|
||||
lda #$e0
|
||||
sta $2132 ; color data for addition/subtraction
|
||||
lda #$00
|
||||
sta $2133 ; screen setting (interlace x,y/enable sfx data)
|
||||
lda #$00
|
||||
sta $4200 ; enable v-blank, interrupt, joypad register
|
||||
lda #$ff
|
||||
sta $4201 ; programmable i/o port
|
||||
lda #$00
|
||||
sta $4202 ; multiplicand a
|
||||
sta $4203 ; multiplier b
|
||||
sta $4204 ; multiplier c
|
||||
sta $4205 ; multiplicand c
|
||||
sta $4206 ; divisor b
|
||||
sta $4207 ; horizontal count timer
|
||||
sta $4208 ; horizontal count timer msb (most significant bit)
|
||||
sta $4209 ; vertical count timer
|
||||
sta $420a ; vertical count timer msb
|
||||
sta $420b ; general dma enable (bits 0-7)
|
||||
sta $420c ; horizontal dma (hdma) enable (bits 0-7)
|
||||
sta $420d ; access cycle designation (slow/fast rom)
|
||||
;===========================================================================
|
||||
; end of init routine
|
||||
;===========================================================================
|
||||
rep #$30 ; x,y,a fixed -> 16 bit mode
|
||||
sep #$20 ; accumulator -> 8 bit mode
|
||||
|
||||
lda #(dp+0) ;load direct page
|
||||
tcd ;store & and assign
|
||||
|
||||
|
||||
|
||||
lda #(plane_0>>8) ; screen map data @ vram location $1000
|
||||
sta $2107 ; plane 0 map location register
|
||||
lda #(plane_1>>8) ; screen map data @ vram location $1000
|
||||
sta $2108 ; plane 1 map location register
|
||||
|
||||
lda #$22 ; plane 0 and plane 1 tile graphics @ $2000
|
||||
sta $210b ; plane 0 tile graphics register
|
||||
lda #$00 ; mode 0 value / tile mode
|
||||
sta $2105 ; graphics mode register
|
||||
|
||||
lda #%00000011 ;
|
||||
sta $212c ; plane enable register
|
||||
|
||||
|
||||
|
||||
lda #$00
|
||||
sta $2121 ; set color number to 0 (background)
|
||||
lda #$46 ; blue color, lower 8 bits
|
||||
sta $2122 ; enter color value #$46 to color num. (low)
|
||||
lda #$69 ; blue color, higher 8 bits
|
||||
sta $2122 ; enter color value #$69 to color num. (high)
|
||||
lda #$ff ; white color, lower 8 bits
|
||||
sta $2122 ; write to next color number (01)
|
||||
sta $2122 ; enter same value to color number (01)
|
||||
|
||||
ldx #$00
|
||||
|
||||
|
||||
|
||||
col_loop:
|
||||
txa
|
||||
sta $2121
|
||||
lda #$00
|
||||
sta $2122
|
||||
lda #$7f
|
||||
sta $2122
|
||||
txa
|
||||
ina
|
||||
tax
|
||||
cmp #$ff
|
||||
beq col_loop
|
||||
|
||||
|
||||
|
||||
lda #$01
|
||||
sta $4200 ; enable joypad read (bit one)
|
||||
|
||||
|
||||
;==========================================================================
|
||||
; start transfer of graphics to vram
|
||||
;==========================================================================
|
||||
|
||||
|
||||
ldx #(tile+0) ; assign vram location
|
||||
stx $2116 ; writing to $2118/9 will store data here!
|
||||
ldx #$0000
|
||||
|
||||
copychar:
|
||||
|
||||
lda.w charset,x ; get character set data (font data)
|
||||
sta $2118 ; store bitplane 1
|
||||
stz $2119 ; clear bitplane 2 and increase vram address
|
||||
inx
|
||||
cpx #$0200 ; transfer $0200 bytes
|
||||
bne copychar
|
||||
|
||||
|
||||
init_plane_0:
|
||||
ldx #(plane_0+0) ; assign vram location $1000 to $2116/7
|
||||
stx $2116
|
||||
ldx #$0000
|
||||
|
||||
|
||||
init_plane_0_loop:
|
||||
lda.w text_0,x ; get ascii text data
|
||||
and #$3f ; we only want the first 64 characters
|
||||
; convert ascii to c64 screen code
|
||||
sta $2118
|
||||
stz $2119 ; clear unwanted bits, no h/v flipping
|
||||
inx
|
||||
cpx #$0400 ; transfer entire screen
|
||||
; $20*$20=$0400 (1024 bytes)
|
||||
bne init_plane_0_loop
|
||||
|
||||
|
||||
init_plane_1:
|
||||
ldx #(plane_1+0) ; assign vram location $1000 to $2116/7
|
||||
stx $2116
|
||||
ldx #$0000
|
||||
|
||||
|
||||
init_plane_1_loop:
|
||||
lda.w text_1,x ; get ascii text data
|
||||
and #$3f ; we only want the first 64 characters
|
||||
; convert ascii to c64 screen code
|
||||
sta $2118
|
||||
stz $2119 ; clear unwanted bits, no h/v flipping
|
||||
inx
|
||||
cpx #$0400 ; transfer entire screen
|
||||
; $20*$20=$0400 (1024 bytes)
|
||||
bne init_plane_1_loop
|
||||
|
||||
|
||||
|
||||
init_screen:
|
||||
lda #$0f ; screen enabled, full brightness
|
||||
sta $2100 ;
|
||||
cli ; clear interrupt bit
|
||||
|
||||
|
||||
|
||||
init_scroll:
|
||||
lda #$00
|
||||
sta.w scrollval
|
||||
|
||||
|
||||
init_col_reg:
|
||||
lda #$00
|
||||
sta.w col_reg
|
||||
|
||||
|
||||
init_sineoffset:
|
||||
lda #$00
|
||||
sta.w sineoffset
|
||||
|
||||
|
||||
call_hmda_setup:
|
||||
jsr init_hdma_table0
|
||||
|
||||
|
||||
|
||||
jmp intro
|
||||
|
||||
main:
|
||||
jsr wait_vbl
|
||||
jsr sine_plane
|
||||
jsr scroll_plane
|
||||
jsr cycle_color
|
||||
jsr joypad
|
||||
jmp main
|
||||
|
||||
|
||||
|
||||
|
||||
; test vertical interrupt
|
||||
|
||||
|
||||
wait_vbl:
|
||||
lda $4210 ; check for vertical blank
|
||||
and #$80
|
||||
beq wait_vbl
|
||||
rts
|
||||
|
||||
; joypad poll
|
||||
|
||||
joypad:
|
||||
lda $4212 ; is joypad ready to be read?
|
||||
and #$0001
|
||||
bne joypad ; no? go back until it is!
|
||||
lda $4219 ; read joypad high byte
|
||||
and #$10 ; leave only "start" bit
|
||||
bne reset ; "start" pressed? go to reset
|
||||
rts ; if not then jump back to loop
|
||||
reset:
|
||||
sep #$30
|
||||
lda #$00
|
||||
pha ; push #$00 to stack
|
||||
plb ; pull #$00 from stack and make it the
|
||||
; the programming bank
|
||||
jmp init ; jump long to $008000
|
||||
|
||||
|
||||
|
||||
; gfx routine
|
||||
|
||||
; intro stuff
|
||||
|
||||
intro:
|
||||
rep #$30
|
||||
sep #$20
|
||||
ldx #$f1
|
||||
mosaic_l:
|
||||
jsr wait_vbl
|
||||
txa
|
||||
sta $2106
|
||||
sbc #$10
|
||||
tax
|
||||
cmp #$01
|
||||
bne mosaic_l
|
||||
stz $2106
|
||||
|
||||
fade:
|
||||
ldy #$0f
|
||||
fade_dark:
|
||||
jsr wait_vbl
|
||||
tya
|
||||
sta $2100
|
||||
dey
|
||||
cpy #$0000
|
||||
bne fade_dark
|
||||
|
||||
ldy #$0000
|
||||
fade_light:
|
||||
jsr wait_vbl
|
||||
tya
|
||||
sta $2100
|
||||
iny
|
||||
cpy #$000f
|
||||
bne fade_light
|
||||
|
||||
jmp main
|
||||
|
||||
; scroll loop
|
||||
|
||||
scroll_plane:
|
||||
lda.w scrollval
|
||||
sta $210e
|
||||
stz $210e
|
||||
|
||||
|
||||
adc #$01
|
||||
|
||||
sta.w scrollval
|
||||
cmp #$ff
|
||||
beq restore_scroll
|
||||
rts
|
||||
restore_scroll:
|
||||
lda #$00
|
||||
sta.w scrollval
|
||||
rts
|
||||
|
||||
; cycle loop
|
||||
|
||||
cycle_color:
|
||||
ldx #$0000
|
||||
lda.w col_reg,x
|
||||
adc #$01
|
||||
stz $2121
|
||||
sta $2122
|
||||
stz $2122
|
||||
sta col_reg
|
||||
cmp #$7f
|
||||
bne cycle_c
|
||||
lda #$0000
|
||||
sta col_reg
|
||||
cycle_c:
|
||||
rts
|
||||
|
||||
|
||||
sine_plane:
|
||||
rep #$10
|
||||
sep #$20
|
||||
|
||||
lda sineoffset
|
||||
ina
|
||||
sta sineoffset
|
||||
cmp #$ff
|
||||
bne sine_plane_c
|
||||
lda #$00
|
||||
sta sineoffset
|
||||
|
||||
|
||||
|
||||
sine_plane_c:
|
||||
tay
|
||||
ldx #$0000
|
||||
|
||||
sine_plane_l:
|
||||
iny
|
||||
cpy #$ff
|
||||
bne sine_plane_l_c
|
||||
lda #$00
|
||||
tay
|
||||
|
||||
sine_plane_l_c:
|
||||
inx
|
||||
lda.w vsine,y
|
||||
sta hdma_table0+3,x
|
||||
inx
|
||||
inx
|
||||
cpx #$0180
|
||||
bne sine_plane_l
|
||||
|
||||
rep #$30
|
||||
sep #$20
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
; init hdma list
|
||||
|
||||
|
||||
init_hdma_table0:
|
||||
|
||||
rep #$10
|
||||
sep #$20
|
||||
|
||||
ldy #$0000
|
||||
ldx #$0000
|
||||
|
||||
;lda #$00
|
||||
;sta sineoffset
|
||||
|
||||
lda #$30
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
|
||||
init_hdma_table0_loop:
|
||||
|
||||
lda #$01
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
|
||||
lda vsine,y
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
iny
|
||||
cpx #$0183 ; (128 + 1) * 3 = 387 = 0x0183
|
||||
bne init_hdma_table0_loop
|
||||
|
||||
lda #$20
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
lda #$00
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
inx
|
||||
sta hdma_table0,x
|
||||
|
||||
|
||||
lda #$02
|
||||
sta $4300
|
||||
lda #$0f
|
||||
sta $4301
|
||||
ldx.w #hdma_table0
|
||||
;ldx.w #test_hmda_table
|
||||
stx $4302
|
||||
lda #$00
|
||||
sta $4304
|
||||
|
||||
lda #%00000001
|
||||
sta $420c
|
||||
|
||||
rep #$30
|
||||
sep #$20
|
||||
|
||||
rts
|
||||
|
||||
|
||||
charset:
|
||||
|
||||
.db $55,$aa,$55,$aa,$55,$aa,$55,$aa ;'@'
|
||||
.db $00,$3c,$66,$7e,$66,$66,$66,$00 ;'a'
|
||||
.db $00,$7c,$66,$7c,$66,$66,$7c,$00 ;'b'
|
||||
.db $00,$3c,$66,$60,$60,$66,$3c,$00 ;'c'
|
||||
.db $00,$78,$6c,$66,$66,$6c,$78,$00 ;'d'
|
||||
.db $00,$7e,$60,$78,$60,$60,$7e,$00 ;'e'
|
||||
.db $00,$7e,$60,$78,$60,$60,$60,$00 ;'f'
|
||||
.db $00,$3c,$66,$60,$6e,$66,$3c,$00 ;'g'
|
||||
.db $00,$66,$66,$7e,$66,$66,$66,$00 ;'h'
|
||||
.db $00,$3c,$18,$18,$18,$18,$3c,$00 ;'i'
|
||||
.db $00,$1e,$0c,$0c,$0c,$6c,$38,$00 ;'j'
|
||||
.db $00,$6c,$78,$70,$78,$6c,$66,$00 ;'k'
|
||||
.db $00,$60,$60,$60,$60,$60,$7e,$00 ;'l'
|
||||
.db $00,$63,$77,$7f,$6b,$63,$63,$00 ;'m'
|
||||
.db $00,$66,$76,$7e,$7e,$6e,$66,$00 ;'n'
|
||||
.db $00,$3c,$66,$66,$66,$66,$3c,$00 ;'o'
|
||||
.db $00,$7c,$66,$66,$7c,$60,$60,$00 ;'p'
|
||||
.db $00,$3c,$66,$66,$66,$3c,$0e,$00 ;'q'
|
||||
.db $00,$7c,$66,$66,$7c,$6c,$66,$00 ;'r'
|
||||
.db $00,$3e,$60,$3c,$06,$66,$3c,$00 ;'s'
|
||||
.db $00,$7e,$18,$18,$18,$18,$18,$00 ;'t'
|
||||
.db $00,$66,$66,$66,$66,$66,$3c,$00 ;'u'
|
||||
.db $00,$66,$66,$66,$66,$3c,$18,$00 ;'v'
|
||||
.db $00,$63,$63,$6b,$7f,$77,$63,$00 ;'w'
|
||||
.db $00,$66,$3c,$18,$3c,$66,$66,$00 ;'x'
|
||||
.db $00,$66,$66,$3c,$18,$18,$18,$00 ;'y'
|
||||
.db $00,$7e,$0c,$18,$30,$60,$7e,$00 ;'z'
|
||||
.db $00,$3c,$30,$30,$30,$30,$3c,$00 ;'['
|
||||
.db $c0,$60,$30,$18,$0c,$06,$03,$00 ;'|'
|
||||
.db $00,$3c,$0c,$0c,$0c,$0c,$3c,$00 ;']'
|
||||
.db $10,$38,$6c,$c6,$00,$00,$00,$00 ;'^'
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$fe ;'_'
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00 ;' '
|
||||
.db $00,$18,$18,$18,$00,$00,$18,$00 ;'!'
|
||||
.db $00,$66,$66,$00,$00,$00,$00,$00 ;'"'
|
||||
.db $00,$66,$ff,$66,$ff,$66,$00,$00 ;'#'
|
||||
.db $00,$08,$1c,$28,$28,$1c,$08,$00 ;'$'
|
||||
.db $00,$64,$6c,$18,$30,$6c,$4c,$00 ;'%'
|
||||
.db $00,$00,$18,$18,$7e,$18,$18,$00 ;'&'
|
||||
.db $00,$0c,$18,$00,$00,$00,$00,$00 ;'''
|
||||
.db $00,$18,$30,$30,$30,$18,$0c,$00 ;'('
|
||||
.db $00,$18,$0c,$0c,$0c,$18,$30,$00 ;')'
|
||||
.db $00,$66,$3c,$ff,$3c,$66,$00,$00 ;'*'
|
||||
.db $00,$18,$18,$7e,$18,$18,$00,$00 ;'+'
|
||||
.db $00,$00,$00,$00,$00,$18,$18,$30 ;','
|
||||
.db $00,$00,$00,$fe,$00,$00,$00,$00 ;'-'
|
||||
.db $00,$00,$00,$00,$00,$18,$18,$00 ;'.'
|
||||
.db $03,$06,$0c,$18,$30,$60,$c0,$00 ;'/'
|
||||
.db $00,$3c,$66,$6e,$76,$66,$3c,$00 ;'0'
|
||||
.db $00,$18,$38,$18,$18,$18,$7e,$00 ;'1'
|
||||
.db $00,$7c,$06,$0c,$30,$60,$7e,$00 ;'2'
|
||||
.db $00,$7e,$06,$1c,$06,$66,$3c,$00 ;'3'
|
||||
.db $00,$0e,$1e,$36,$7f,$06,$06,$00 ;'4'
|
||||
.db $00,$7e,$60,$7c,$06,$66,$3c,$00 ;'5'
|
||||
.db $00,$3e,$60,$7c,$66,$66,$3c,$00 ;'6'
|
||||
.db $00,$7e,$06,$0c,$0c,$0c,$0c,$00 ;'7'
|
||||
.db $00,$3c,$66,$3c,$66,$66,$3c,$00 ;'8'
|
||||
.db $00,$3c,$66,$3e,$06,$66,$3c,$00 ;'9'
|
||||
.db $00,$00,$18,$00,$00,$18,$00,$00 ;':'
|
||||
.db $00,$00,$18,$00,$00,$18,$18,$30 ;';'
|
||||
.db $18,$18,$18,$18,$18,$18,$18,$00 ;'<'
|
||||
.db $00,$00,$7e,$00,$7e,$00,$00,$00 ;'='
|
||||
.db $18,$18,$0c,$0c,$0c,$0c,$18,$18 ;'>'
|
||||
.db $00,$7c,$06,$0c,$18,$00,$18,$00 ;'?'
|
||||
|
||||
; 12345678901234567890123456789012
|
||||
text_0:
|
||||
.db "| _ _ |"
|
||||
.db "| ___ _ __ | |_(_)_ ____ __|"
|
||||
.db "| / _ \| '_ \| __| \ \/ /\ \/ /|"
|
||||
.db "|| (_) | |_) | |_| |> < > < |"
|
||||
.db "| \___/| .__/ \__|_/_/\_\/_/\_\|"
|
||||
.db "| |_| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| OPTIXX ONCE A AGAIN |"
|
||||
.db "| WITH A CLASSIS CONSOL |"
|
||||
.db "| PIECE OF CODE... |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
.db "| |"
|
||||
|
||||
|
||||
text_1:
|
||||
|
||||
.REPT 20
|
||||
|
||||
.db "| _ _ |"
|
||||
.db "| ___ _ __ | |_(_)_ ____ __|"
|
||||
.db "| / _ \| '_ \| __| \ \/ /\ \/ /|"
|
||||
.db "|| (_) | |_) | |_| |> < > < |"
|
||||
.db "| \___/| .__/ \__|_/_/\_\/_/\_\|"
|
||||
.db "| |_| |"
|
||||
.db "| |"
|
||||
|
||||
.ENDR
|
||||
|
||||
vsine:
|
||||
.db 108,109,111,112,113,114,115,115,116,117,118,119,120,120,121
|
||||
.db 122,122,123,123,124,124,125,125,125,126,126,126,127,127,127
|
||||
.db 127,127,127,127,127,127,127,127,126,126,126,125,125,125,124
|
||||
.db 124,123,123,122,122,121,120,120,119,118,117,116,115,115,114
|
||||
.db 113,112,111,109,108,107,106,105,104,103,101,100,99,97,96,95
|
||||
.db 93,92,91,89,88,86,85,83,82,80,79,77,76,74,73,71,70,68,67,65
|
||||
.db 64,62,60,59,57,56,54,53,51,50,48,47,45,44,42,41,39,38,36,35
|
||||
.db 34,32,31,30,28,27,26,24,23,22,21,20,19,18,16,15,14,13,12,12
|
||||
.db 11,10,9,8,7,7,6,5,5,4,4,3,3,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0
|
||||
.db 0,1,1,1,2,2,2,3,3,4,4,5,5,6,7,7,8,9,10,11,12,12,13,14,15,16
|
||||
.db 18,19,20,21,22,23,24,26,27,28,30,31,32,34,35,36,38,39,41,42
|
||||
.db 44,45,47,48,50,51,53,54,56,57,59,60,62,64,65,67,68,70,71,73
|
||||
.db 74,76,77,79,80,82,83,85,86,88,89,91,92,93,95,96,97,99,100,101
|
||||
.db 103,104,105,106,107
|
||||
vsine_end:
|
||||
.ENDS
|
||||
|
||||
|
||||
|
||||
.BANK $04 SLOT 6
|
||||
.ORGA $8000
|
||||
long_label:
|
||||
nop
|
||||
nop
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
.BANK $01 SLOT 6
|
||||
.ORGA $8000
|
||||
.BASE $01
|
||||
.INCLUDE "music.s"
|
||||
|
||||
.BANK $02 SLOT 6
|
||||
.ORG $0000
|
||||
music_data_1:
|
||||
.INCBIN "music1.bin"
|
||||
|
||||
.BANk $03 SLOT 6
|
||||
.ORG $0000
|
||||
music_data_2:
|
||||
.INCBIN "music2.bin"
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
import string
|
||||
import math
|
||||
import sys
|
||||
|
||||
M_PI = 3.14159265358979323846
|
||||
|
||||
|
||||
|
||||
def writefile(fp,val):
|
||||
global out,el
|
||||
if not len(out):
|
||||
out = " .db "
|
||||
|
||||
el+=1
|
||||
out += "$%02x," % val
|
||||
if el == cnt/8 :
|
||||
out=out[:-1]
|
||||
out+="\n"
|
||||
fp.write(out)
|
||||
out =""
|
||||
el=0
|
||||
|
||||
|
||||
def sine(val,r,scale,stepping):
|
||||
global M_PI,flip
|
||||
re = int(math.sin(val*(M_PI*scale)/r)*r) + r
|
||||
re = re & 0xff
|
||||
|
||||
if flip and val%2:
|
||||
re = (r*2) - re
|
||||
|
||||
re = re * stepping
|
||||
#print "sine %s -> %s " % (val,re)
|
||||
return re
|
||||
|
||||
|
||||
def main():
|
||||
global cnt,flip
|
||||
asmfile = sys.argv[1]
|
||||
basename = string.replace(asmfile,".s","")
|
||||
cnt = int(sys.argv[2])
|
||||
upper = int(sys.argv[3])
|
||||
|
||||
|
||||
if len(sys.argv) >= 5:
|
||||
stepping = int(sys.argv[4])
|
||||
else:
|
||||
stepping = 1
|
||||
|
||||
|
||||
if len(sys.argv) >= 6 and sys.argv[5]=='flip':
|
||||
flip = 1
|
||||
else:
|
||||
flip = 0
|
||||
|
||||
|
||||
half = int(cnt) / 2
|
||||
|
||||
if cnt%8:
|
||||
print "ctn should be modulo 8"
|
||||
sys.exit(1)
|
||||
|
||||
fp = open(asmfile,'w')
|
||||
|
||||
out = "\n\n\n%s:\n\n" % (basename)
|
||||
fp.write(out)
|
||||
out = ""
|
||||
|
||||
for i in range(0,cnt):
|
||||
writefile(fp,sine(i,upper/2,(float(upper)/cnt),stepping))
|
||||
|
||||
|
||||
|
||||
|
||||
out = str()
|
||||
el = 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) >= 4:
|
||||
main()
|
||||
else:
|
||||
print "usage: %s filename cnt(int) upper(int) [stepping (int)] ['flip']" % sys.argv[0]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
|
||||
test:
|
||||
|
||||
.db $30,$2f,$32,$2d,$34,$2b,$37,$28,$39,$26,$3b,$24,$3d,$21,$40,$1f,$42,$1d,$44,$1b,$46,$19,$48,$17,$4a,$15,$4c,$13,$4e,$11,$50,$0f
|
||||
.db $51,$0e,$53,$0c,$55,$0b,$56,$09,$57,$08,$59,$07,$5a,$06,$5b,$05,$5c,$04,$5d,$03,$5d,$02,$5e,$02,$5f,$01,$5f,$01,$5f,$01,$5f,$01
|
||||
.db $60,$01,$5f,$01,$5f,$01,$5f,$01,$5f,$02,$5e,$02,$5d,$03,$5d,$04,$5c,$05,$5b,$06,$5a,$07,$59,$08,$57,$09,$56,$0b,$55,$0c,$53,$0e
|
||||
.db $51,$0f,$50,$11,$4e,$13,$4c,$15,$4a,$17,$48,$19,$46,$1b,$44,$1d,$42,$1f,$40,$21,$3d,$24,$3b,$26,$39,$28,$37,$2b,$34,$2d,$32,$2f
|
||||
.db $30,$31,$2e,$33,$2c,$35,$29,$38,$27,$3a,$25,$3c,$23,$3f,$20,$41,$1e,$43,$1c,$45,$1a,$47,$18,$49,$16,$4b,$14,$4d,$12,$4f,$10,$51
|
||||
.db $0f,$52,$0d,$54,$0b,$55,$0a,$57,$09,$58,$07,$59,$06,$5a,$05,$5b,$04,$5c,$03,$5d,$03,$5e,$02,$5e,$01,$5f,$01,$5f,$01,$5f,$01,$5f
|
||||
.db $00,$5f,$01,$5f,$01,$5f,$01,$5f,$01,$5e,$02,$5e,$03,$5d,$03,$5c,$04,$5b,$05,$5a,$06,$59,$07,$58,$09,$57,$0a,$55,$0b,$54,$0d,$52
|
||||
.db $0f,$51,$10,$4f,$12,$4d,$14,$4b,$16,$49,$18,$47,$1a,$45,$1c,$43,$1e,$41,$20,$3f,$23,$3c,$25,$3a,$27,$38,$29,$35,$2c,$33,$2e,$31
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
|
||||
vsine_1:
|
||||
|
||||
.db $30,$31,$32,$33,$34,$35,$37,$38,$39,$3a,$3b,$3c,$3d,$3f,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50,$51
|
||||
.db $51,$52,$53,$54,$55,$55,$56,$57,$57,$58,$59,$59,$5a,$5a,$5b,$5b,$5c,$5c,$5d,$5d,$5d,$5e,$5e,$5e,$5f,$5f,$5f,$5f,$5f,$5f,$5f,$5f
|
||||
.db $60,$5f,$5f,$5f,$5f,$5f,$5f,$5f,$5f,$5e,$5e,$5e,$5d,$5d,$5d,$5c,$5c,$5b,$5b,$5a,$5a,$59,$59,$58,$57,$57,$56,$55,$55,$54,$53,$52
|
||||
.db $51,$51,$50,$4f,$4e,$4d,$4c,$4b,$4a,$49,$48,$47,$46,$45,$44,$43,$42,$41,$40,$3f,$3d,$3c,$3b,$3a,$39,$38,$37,$35,$34,$33,$32,$31
|
||||
.db $30,$2f,$2e,$2d,$2c,$2b,$29,$28,$27,$26,$25,$24,$23,$21,$20,$1f,$1e,$1d,$1c,$1b,$1a,$19,$18,$17,$16,$15,$14,$13,$12,$11,$10,$0f
|
||||
.db $0f,$0e,$0d,$0c,$0b,$0b,$0a,$09,$09,$08,$07,$07,$06,$06,$05,$05,$04,$04,$03,$03,$03,$02,$02,$02,$01,$01,$01,$01,$01,$01,$01,$01
|
||||
.db $00,$01,$01,$01,$01,$01,$01,$01,$01,$02,$02,$02,$03,$03,$03,$04,$04,$05,$05,$06,$06,$07,$07,$08,$09,$09,$0a,$0b,$0b,$0c,$0d,$0e
|
||||
.db $0f,$0f,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f,$20,$21,$23,$24,$25,$26,$27,$28,$29,$2b,$2c,$2d,$2e,$2f
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
|
||||
vsine_2:
|
||||
|
||||
.db $30,$2f,$32,$2d,$34,$2b,$37,$28,$39,$26,$3b,$24,$3d,$21,$40,$1f,$42,$1d,$44,$1b,$46,$19,$48,$17,$4a,$15,$4c,$13,$4e,$11,$50,$0f
|
||||
.db $51,$0e,$53,$0c,$55,$0b,$56,$09,$57,$08,$59,$07,$5a,$06,$5b,$05,$5c,$04,$5d,$03,$5d,$02,$5e,$02,$5f,$01,$5f,$01,$5f,$01,$5f,$01
|
||||
.db $60,$01,$5f,$01,$5f,$01,$5f,$01,$5f,$02,$5e,$02,$5d,$03,$5d,$04,$5c,$05,$5b,$06,$5a,$07,$59,$08,$57,$09,$56,$0b,$55,$0c,$53,$0e
|
||||
.db $51,$0f,$50,$11,$4e,$13,$4c,$15,$4a,$17,$48,$19,$46,$1b,$44,$1d,$42,$1f,$40,$21,$3d,$24,$3b,$26,$39,$28,$37,$2b,$34,$2d,$32,$2f
|
||||
.db $30,$31,$2e,$33,$2c,$35,$29,$38,$27,$3a,$25,$3c,$23,$3f,$20,$41,$1e,$43,$1c,$45,$1a,$47,$18,$49,$16,$4b,$14,$4d,$12,$4f,$10,$51
|
||||
.db $0f,$52,$0d,$54,$0b,$55,$0a,$57,$09,$58,$07,$59,$06,$5a,$05,$5b,$04,$5c,$03,$5d,$03,$5e,$02,$5e,$01,$5f,$01,$5f,$01,$5f,$01,$5f
|
||||
.db $00,$5f,$01,$5f,$01,$5f,$01,$5f,$01,$5e,$02,$5e,$03,$5d,$03,$5c,$04,$5b,$05,$5a,$06,$59,$07,$58,$09,$57,$0a,$55,$0b,$54,$0d,$52
|
||||
.db $0f,$51,$10,$4f,$12,$4d,$14,$4b,$16,$49,$18,$47,$1a,$45,$1c,$43,$1e,$41,$20,$3f,$23,$3c,$25,$3a,$27,$38,$29,$35,$2c,$33,$2e,$31
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
word crc_update (byte *data, word size);
|
||||
word crc_update_mem (unsigned long, word size);
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word;
|
||||
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
extern word debugFont_pic[];
|
||||
extern word debugFont_pal[];
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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!
|
||||
@@ -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
|
||||
@@ -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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user