Compare commits
32 Commits
sdcard_m32
...
mem_compac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d229719d0c | ||
|
|
096ad71b4e | ||
|
|
aa29d483eb | ||
|
|
dc83f998c7 | ||
|
|
369667e154 | ||
|
|
4a083cbea3 | ||
|
|
edf204ac24 | ||
|
|
0c378a9f7c | ||
|
|
55e3468f74 | ||
|
|
78e9dce5ea | ||
|
|
eaf0bda3ee | ||
|
|
d58d3439ec | ||
|
|
b5f111fa41 | ||
|
|
6508530384 | ||
|
|
e4364eedb1 | ||
|
|
74312e08e1 | ||
|
|
09f42acfc8 | ||
|
|
70984ebd00 | ||
|
|
cafe5b8efd | ||
|
|
a1e89d9528 | ||
|
|
43ee4e0f7e | ||
|
|
8b606ce329 | ||
|
|
4b99eeb2d0 | ||
|
|
27b58a09f2 | ||
|
|
bcb4a055e9 | ||
|
|
c9a23df103 | ||
|
|
0354b82c8e | ||
|
|
9d38af4267 | ||
|
|
c88a4f3b49 | ||
|
|
27278a7f36 | ||
|
|
aacd3296ef | ||
|
|
9f55ce0992 |
4
.ditz-config
Normal file
4
.ditz-config
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/config
|
||||||
|
name: David
|
||||||
|
email: david@optixx.org
|
||||||
|
issue_dir: bugs
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -16,3 +16,8 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
*.a
|
*.a
|
||||||
*.prj
|
*.prj
|
||||||
|
*.bak
|
||||||
|
*.smc
|
||||||
|
*.swc
|
||||||
|
*.rom
|
||||||
|
*.usage
|
||||||
|
|||||||
18
bugs/issue-33e57a7c3ac89afc2e37880441fe0eeec05e2b3f.yaml
Normal file
18
bugs/issue-33e57a7c3ac89afc2e37880441fe0eeec05e2b3f.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/issue
|
||||||
|
title: Test
|
||||||
|
desc: Test
|
||||||
|
type: :bugfix
|
||||||
|
component: snesram
|
||||||
|
release:
|
||||||
|
reporter: David <david@optixx.org>
|
||||||
|
status: :unstarted
|
||||||
|
disposition:
|
||||||
|
creation_time: 2009-04-20 18:13:29.104365 Z
|
||||||
|
references: []
|
||||||
|
|
||||||
|
id: 33e57a7c3ac89afc2e37880441fe0eeec05e2b3f
|
||||||
|
log_events:
|
||||||
|
- - 2009-04-20 18:13:33.543384 Z
|
||||||
|
- David <david@optixx.org>
|
||||||
|
- created
|
||||||
|
- nope
|
||||||
8
bugs/project.yaml
Normal file
8
bugs/project.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
--- !ditz.rubyforge.org,2008-03-06/project
|
||||||
|
name: snesram
|
||||||
|
version: "0.5"
|
||||||
|
components:
|
||||||
|
- !ditz.rubyforge.org,2008-03-06/component
|
||||||
|
name: snesram
|
||||||
|
releases: []
|
||||||
|
|
||||||
@@ -181,11 +181,10 @@ LDFLAGS += $(PRINTF_LIB_MIN) $(SCANF_LIB) $(MATH_LIB)
|
|||||||
AVRDUDE_PROGRAMMER = stk500v2
|
AVRDUDE_PROGRAMMER = stk500v2
|
||||||
|
|
||||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||||
AVRDUDE_PORT = /dev/tty.PL2303-00001324 # programmer connected to serial device
|
|
||||||
|
AVRDUDE_PORT = /dev/tty.PL2303-00001124
|
||||||
|
|
||||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
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.
|
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||||
# Note that this counter needs to be initialized first using -Yn,
|
# 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
|
# avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U hfuse:w:0xd9:m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
# Define directories, if needed.
|
# Define directories, if needed.
|
||||||
@@ -327,16 +322,10 @@ gccversion :
|
|||||||
|
|
||||||
# Program the device.
|
# Program the device.
|
||||||
|
|
||||||
flash_avrdude: flash
|
|
||||||
|
|
||||||
flash: $(TARGET).hex $(TARGET).eep
|
flash: $(TARGET).hex $(TARGET).eep
|
||||||
sudo $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
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.
|
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||||
COFFCONVERT=$(OBJCOPY) --debugging \
|
COFFCONVERT=$(OBJCOPY) --debugging \
|
||||||
--change-section-address .data-0x800000 \
|
--change-section-address .data-0x800000 \
|
||||||
|
|||||||
35
poc/avr_sdcard/checksize
Normal file
35
poc/avr_sdcard/checksize
Normal file
@@ -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
|
||||||
@@ -7,6 +7,10 @@
|
|||||||
#include "mmc.h"
|
#include "mmc.h"
|
||||||
#include "fat.h"
|
#include "fat.h"
|
||||||
|
|
||||||
|
// Debug
|
||||||
|
#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
|
||||||
|
extern FILE uart_stdout;
|
||||||
|
|
||||||
//SREG defines
|
//SREG defines
|
||||||
#define S_MOSI PB5
|
#define S_MOSI PB5
|
||||||
#define S_MISO PB6
|
#define S_MISO PB6
|
||||||
@@ -24,43 +28,102 @@
|
|||||||
#define RAM_DIR DDRA
|
#define RAM_DIR DDRA
|
||||||
#define RAM_REG PINA
|
#define RAM_REG PINA
|
||||||
|
|
||||||
|
|
||||||
#define CTRL_PORT PORTB
|
#define CTRL_PORT PORTB
|
||||||
#define CTR_DIR DDRB
|
#define CTR_DIR DDRB
|
||||||
|
|
||||||
|
|
||||||
#define LATCH_PORT PORTB
|
#define LATCH_PORT PORTB
|
||||||
#define LATCH_DIR DDRB
|
#define LATCH_DIR DDRB
|
||||||
|
|
||||||
#define SPI_PORT PORTB
|
#define SPI_PORT PORTB
|
||||||
#define SPI_DIR DDRB
|
#define SPI_DIR DDRB
|
||||||
|
|
||||||
|
|
||||||
#define LED_PORT PORTD
|
#define LED_PORT PORTD
|
||||||
#define LED_DIR DDRD
|
#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 ROMSIZE 4
|
||||||
#define BLOCKS 510
|
#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){
|
void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
|
||||||
uint16_t i,j;
|
uint16_t i,j;
|
||||||
uint16_t sum = 0;
|
uint16_t sum = 0;
|
||||||
|
uint8_t clear=0;
|
||||||
|
|
||||||
for (i=0;i<len;i+=16) {
|
for (i=0;i<len;i+=16) {
|
||||||
|
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (j=0;j<16;j++) {
|
for (j=0;j<16;j++) {
|
||||||
sum +=packet[i+j];
|
sum +=packet[i+j];
|
||||||
}
|
}
|
||||||
if (!sum){
|
if (!sum){
|
||||||
//printf(".");
|
clear=1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (clear){
|
||||||
|
printf("*\n");
|
||||||
|
clear = 0;
|
||||||
|
}
|
||||||
printf("%08lx:", addr + i);
|
printf("%08lx:", addr + i);
|
||||||
for (j=0;j<16;j++) {
|
for (j=0;j<16;j++) {
|
||||||
printf(" %02x", packet[i+j]);
|
printf(" %02x", packet[i+j]);
|
||||||
@@ -96,6 +159,17 @@ void spi_master_transmit(unsigned char cData)
|
|||||||
while(!(SPSR & (1<<SPIF)));
|
while(!(SPSR & (1<<SPIF)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void sram_set_addr(uint32_t addr)
|
||||||
|
{
|
||||||
|
spi_master_transmit((uint8_t)(addr>>16));
|
||||||
|
spi_master_transmit((uint8_t)(addr>>8));
|
||||||
|
spi_master_transmit((uint8_t)(addr>>0));
|
||||||
|
|
||||||
|
LATCH_PORT |= (1<<S_LATCH);
|
||||||
|
LATCH_PORT &= ~(1<<S_LATCH);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t sram_read(uint32_t addr)
|
uint8_t sram_read(uint32_t addr)
|
||||||
{
|
{
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
@@ -166,13 +240,20 @@ void sram_init(void){
|
|||||||
LED_PORT |= (1<<D_LED0);
|
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){
|
void sram_clear(uint32_t addr, uint32_t len){
|
||||||
|
|
||||||
uint32_t i;
|
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);
|
sram_write(i, 0x00);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sram_copy(uint32_t addr,uint8_t *src, uint32_t len){
|
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++;
|
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)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -199,73 +286,154 @@ int main(void)
|
|||||||
uint8_t fat_attrib = 0;
|
uint8_t fat_attrib = 0;
|
||||||
uint32_t fat_size = 0;
|
uint32_t fat_size = 0;
|
||||||
uint32_t rom_addr = 0;
|
uint32_t rom_addr = 0;
|
||||||
|
uint8_t bank_cnt = 0;
|
||||||
|
uint16_t crc = 0;
|
||||||
|
uint16_t block_cnt;
|
||||||
uart_init();
|
uart_init();
|
||||||
stdout = &uart_stdout;
|
stdout = &uart_stdout;
|
||||||
|
|
||||||
sram_init();
|
sram_init();
|
||||||
printf("sram_init\n");
|
printf("SRAM Init\n");
|
||||||
|
|
||||||
spi_init();
|
spi_init();
|
||||||
printf("spi_init\n");
|
printf("SPI Init\n");
|
||||||
/*
|
|
||||||
sram_clear(0x000000, 0x400000);
|
#if 0
|
||||||
printf("sram_clear\n");
|
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");
|
||||||
|
#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
|
||||||
|
|
||||||
//printf("read 0x0f0f\n");
|
|
||||||
//sram_read(0x0f0f);
|
|
||||||
//printf("write 0x0f0f\n");
|
|
||||||
//sram_write(0x0f0f,0xaa);
|
|
||||||
//while(1);
|
|
||||||
|
|
||||||
while ( mmc_init() !=0) {
|
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);
|
fat_init(read_buffer);
|
||||||
printf("fat_init\n");
|
printf("FAT Init done.\n");
|
||||||
|
|
||||||
|
|
||||||
rom_addr = 0x000000;
|
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_cluster,
|
||||||
&fat_size,
|
&fat_size,
|
||||||
&fat_attrib,
|
&fat_attrib,
|
||||||
read_buffer) == 1) {
|
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);
|
fat_read_file (fat_cluster,read_buffer,block_cnt);
|
||||||
if (block_cnt==0){
|
|
||||||
// Skip Copier Header
|
if (block_cnt && block_cnt % 64 == 0){
|
||||||
printf("Copier Header \n",block_cnt,rom_addr);
|
printf("Write Ram Bank: 0x%x Addr: 0x%lx Block: %x CRC: %x\n",bank_cnt,rom_addr,block_cnt,crc);
|
||||||
dump_packet(rom_addr,512,read_buffer);
|
bank_cnt++;
|
||||||
printf("Read Blocks ");
|
crc = 0;
|
||||||
}
|
}
|
||||||
printf(".",block_cnt,rom_addr);
|
crc = do_crc_update(crc,read_buffer,512);
|
||||||
sram_copy(rom_addr,read_buffer,512);
|
sram_copy(rom_addr,read_buffer,512);
|
||||||
rom_addr += 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;
|
rom_addr = 0x000000;
|
||||||
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
|
for (uint16_t block_cnt=0; block_cnt < 64; block_cnt++) {
|
||||||
sram_read_buffer(rom_addr,read_buffer,512);
|
sram_read_buffer(rom_addr,read_buffer,512);
|
||||||
dump_packet(rom_addr,512,read_buffer);
|
dump_packet(rom_addr,512,read_buffer);
|
||||||
rom_addr += 512;
|
rom_addr += 512;
|
||||||
}
|
}
|
||||||
printf("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);
|
while(1);
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -151,12 +151,10 @@ int main(int argc, char **argv)
|
|||||||
unsigned char *buffer;
|
unsigned char *buffer;
|
||||||
unsigned char dummy[10];
|
unsigned char dummy[10];
|
||||||
buffer = (unsigned char*)malloc(ROMSIZE);
|
buffer = (unsigned char*)malloc(ROMSIZE);
|
||||||
memset(buffer,0,ROMSIZE);
|
|
||||||
if (NULL == buffer){
|
if (NULL == buffer){
|
||||||
fprintf(stderr, "Malloc failed",f);
|
fprintf(stderr, "Malloc failed",f);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
put(&ftdica,0x00);
|
|
||||||
for ( addr = 0; addr<ROMSIZE; addr+=1){
|
for ( addr = 0; addr<ROMSIZE; addr+=1){
|
||||||
byte = data_read(&ftdica);
|
byte = data_read(&ftdica);
|
||||||
printf("0x%08x: %x\n",addr,byte);
|
printf("0x%08x: %x\n",addr,byte);
|
||||||
@@ -166,7 +164,10 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
dump_packet(0x000,ROMSIZE,buffer);
|
dump_packet(0x000,ROMSIZE,buffer);
|
||||||
|
|
||||||
|
FILE *fp;
|
||||||
|
fp=fopen("dump.rom", "wb");
|
||||||
|
fwrite(buffer, ROMSIZE, 1, fp);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
ftdi_disable_bitbang(&ftdica);
|
ftdi_disable_bitbang(&ftdica);
|
||||||
ftdi_usb_close(&ftdica);
|
ftdi_usb_close(&ftdica);
|
||||||
|
|||||||
BIN
poc/ftdi_romdump/dumps/dump.rom
Normal file
BIN
poc/ftdi_romdump/dumps/dump.rom
Normal file
Binary file not shown.
BIN
roms/anime.smc
Normal file
BIN
roms/anime.smc
Normal file
Binary file not shown.
BIN
roms/bank01.smc
Normal file
BIN
roms/bank01.smc
Normal file
Binary file not shown.
BIN
roms/bank02.smc
Normal file
BIN
roms/bank02.smc
Normal file
Binary file not shown.
BIN
roms/bank03.smc
Normal file
BIN
roms/bank03.smc
Normal file
Binary file not shown.
BIN
roms/bank04.smc
Normal file
BIN
roms/bank04.smc
Normal file
Binary file not shown.
BIN
roms/bank05.smc
Normal file
BIN
roms/bank05.smc
Normal file
Binary file not shown.
BIN
roms/bank06.smc
Normal file
BIN
roms/bank06.smc
Normal file
Binary file not shown.
BIN
roms/bank07.smc
Normal file
BIN
roms/bank07.smc
Normal file
Binary file not shown.
BIN
roms/bankhi.smc
Normal file
BIN
roms/bankhi.smc
Normal file
Binary file not shown.
BIN
roms/banklo.smc
Normal file
BIN
roms/banklo.smc
Normal file
Binary file not shown.
BIN
roms/dezaemon.smc
Normal file
BIN
roms/dezaemon.smc
Normal file
Binary file not shown.
BIN
roms/dump256.smc
Normal file
BIN
roms/dump256.smc
Normal file
Binary file not shown.
BIN
roms/dump512.smc
Normal file
BIN
roms/dump512.smc
Normal file
Binary file not shown.
BIN
roms/hungry.smc
Normal file
BIN
roms/hungry.smc
Normal file
Binary file not shown.
BIN
roms/kungfu.smc
Normal file
BIN
roms/kungfu.smc
Normal file
Binary file not shown.
BIN
roms/mrdo.smc
Normal file
BIN
roms/mrdo.smc
Normal file
Binary file not shown.
BIN
roms/spacei.smc
Normal file
BIN
roms/spacei.smc
Normal file
Binary file not shown.
BIN
roms/supert.smc
Normal file
BIN
roms/supert.smc
Normal file
Binary file not shown.
BIN
roms/vortex.smc
Normal file
BIN
roms/vortex.smc
Normal file
Binary file not shown.
BIN
roms/vram2.smc
Normal file
BIN
roms/vram2.smc
Normal file
Binary file not shown.
28
scripts/b.py
Executable file
28
scripts/b.py
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
import sys
|
||||||
|
try:
|
||||||
|
if 'x' in sys.argv[1] or 'X' in sys.argv[1]:
|
||||||
|
v = int(sys.argv[1],16)
|
||||||
|
else:
|
||||||
|
v = int(sys.argv[1])
|
||||||
|
except:
|
||||||
|
print "%s NUM" % sys.argv[0]
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
bits = 32
|
||||||
|
sys.stdout.write("0b")
|
||||||
|
for i in range(bits-1,-1,-1):
|
||||||
|
s = 1<<i
|
||||||
|
if v & s:
|
||||||
|
sys.stdout.write("1")
|
||||||
|
else:
|
||||||
|
sys.stdout.write("0")
|
||||||
|
if i and not i%8:
|
||||||
|
sys.stdout.write(" ")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print
|
||||||
|
print "0x%x"% v
|
||||||
|
print v
|
||||||
|
|
||||||
66
scripts/crc_xmodem.py
Normal file
66
scripts/crc_xmodem.py
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
import ctypes
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
def crc_xmodem_update(crc,data):
|
||||||
|
crc = ctypes.c_uint16(crc.value ^ data.value << 8)
|
||||||
|
for i in range(0,8):
|
||||||
|
if crc.value & 0x8000:
|
||||||
|
crc = ctypes.c_uint16((crc.value << 1) ^ 0x1021);
|
||||||
|
else:
|
||||||
|
crc = ctypes.c_uint16(crc.value << 1);
|
||||||
|
return crc
|
||||||
|
|
||||||
|
|
||||||
|
def do_crc(data):
|
||||||
|
crc = ctypes.c_uint16(0)
|
||||||
|
for idx,char in enumerate(data):
|
||||||
|
crc = crc_xmodem_update(crc,ctypes.c_uint8(ord(char)))
|
||||||
|
return crc.value
|
||||||
|
|
||||||
|
|
||||||
|
def test_performance():
|
||||||
|
data=str()
|
||||||
|
fd = open("/dev/urandom")
|
||||||
|
for i in range(0,256):
|
||||||
|
data+= fd.read(1024)
|
||||||
|
sys.stdout.write("*")
|
||||||
|
sys.stdout.flush()
|
||||||
|
print
|
||||||
|
fd.close()
|
||||||
|
print "%s" % do_crc(data)
|
||||||
|
|
||||||
|
|
||||||
|
def test_algo():
|
||||||
|
data='david'
|
||||||
|
data='da'
|
||||||
|
print "%x" % do_crc(data)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
#import cProfile
|
||||||
|
#cProfile.run('test_performance()')
|
||||||
|
|
||||||
|
size = os.stat(sys.argv[1])[6]
|
||||||
|
fd = open(sys.argv[1])
|
||||||
|
addr = 0x0000
|
||||||
|
step = 2**15
|
||||||
|
result = []
|
||||||
|
while addr < size:
|
||||||
|
try:
|
||||||
|
block = fd.read(step)
|
||||||
|
addr += step
|
||||||
|
except:
|
||||||
|
print "Done"
|
||||||
|
break
|
||||||
|
crc = do_crc(block)
|
||||||
|
print "Bank: 0x%02x Addr: 0x%06x Block: 0x%04x CRC 0x%04x" % (addr/(2**15),addr,addr/512, ctypes.c_uint16(crc).value)
|
||||||
|
result.append(hex(ctypes.c_uint16(crc).value))
|
||||||
|
#print result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
#test_algo()
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
279
scripts/rom.py
Normal file
279
scripts/rom.py
Normal file
@@ -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()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
53
scripts/rom_analyse.sql
Normal file
53
scripts/rom_analyse.sql
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
-- Global
|
||||||
|
select count(*) from roms;
|
||||||
|
select distinct rom_name from roms;
|
||||||
|
select count(*) from roms where rom_sram = 0;
|
||||||
|
|
||||||
|
-- Hirom x Sram
|
||||||
|
select count(*) from roms where rom_hirom= 1;
|
||||||
|
select count(*),rom_internalsize from roms where rom_hirom= 1 group by rom_internalsize;
|
||||||
|
select count(*) as count ,rom_internalsize,rom_sram from roms where rom_hirom= 1 group by rom_internalsize,rom_sram having rom_sram > 0;
|
||||||
|
|
||||||
|
-- Lorom x Sram
|
||||||
|
select count(*) from roms where rom_hirom= 0;
|
||||||
|
select count(*),rom_internalsize from roms where rom_hirom= 0 group by rom_internalsize;
|
||||||
|
select count(*) as count ,rom_internalsize,rom_sram from roms where rom_hirom= 0 group by rom_internalsize,rom_sram having rom_sram > 0;
|
||||||
|
|
||||||
|
-- Sram
|
||||||
|
select count(*) as count ,rom_sram from roms group by rom_sram having count > 1;
|
||||||
|
|
||||||
|
-- Rom
|
||||||
|
select count(*) as count ,rom_size from roms group by rom_size having count > 1;
|
||||||
|
select count(*) as count ,rom_size from roms group by rom_size having count > 10;
|
||||||
|
|
||||||
|
select count(*) as count ,rom_internalsize from roms group by rom_internalsize having count > 1;
|
||||||
|
select count(distinct rom_name) as count ,rom_internalsize from roms group by rom_internalsize having count > 1;
|
||||||
|
select count(*) as count ,rom_size,rom_internalsize from roms group by rom_size having count > 10;
|
||||||
|
|
||||||
|
|
||||||
|
-- Type
|
||||||
|
|
||||||
|
-- 00 ROM
|
||||||
|
-- 01 ROM/RAM
|
||||||
|
-- 02 ROM/SRAM
|
||||||
|
-- 03 ROM/DSP1
|
||||||
|
-- 04 ROM/DSP1/RAM
|
||||||
|
-- 05 ROM/DSP1/SRAM
|
||||||
|
-- 06 FX
|
||||||
|
select count(*) as count ,rom_type from roms group by rom_type having count > 1;
|
||||||
|
select count(*) as count ,rom_type from roms group by rom_type having count > 5;
|
||||||
|
|
||||||
|
select count(*) as count from roms where rom_type > 2;
|
||||||
|
select count(*) as count from roms where rom_type <= 2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- cleanup
|
||||||
|
--
|
||||||
|
--delete from roms where rom_vendor = 'Demo or Beta ROM?';
|
||||||
|
--delete from roms where rom_internalsize > 128;
|
||||||
|
--delete from roms where rom_name like "%.....%";
|
||||||
|
--delete from roms where rom_name like "%\%";
|
||||||
|
--delete from roms where rom_vendor = 'Unknown';
|
||||||
|
|
||||||
BIN
scripts/roms.sqlite3
Normal file
BIN
scripts/roms.sqlite3
Normal file
Binary file not shown.
BIN
scripts/roms_cleanup.sqlite3
Normal file
BIN
scripts/roms_cleanup.sqlite3
Normal file
Binary file not shown.
45
snes/ascii/Makefile
Normal file
45
snes/ascii/Makefile
Normal file
@@ -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
|
||||||
BIN
snes/ascii/backcolors.bmp
Normal file
BIN
snes/ascii/backcolors.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
472
snes/ascii/backcolors.s
Normal file
472
snes/ascii/backcolors.s
Normal file
@@ -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
|
||||||
167
snes/ascii/bmp2bitplane.py
Normal file
167
snes/ascii/bmp2bitplane.py
Normal file
@@ -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]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
180
snes/ascii/bmp2col.py
Normal file
180
snes/ascii/bmp2col.py
Normal file
@@ -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]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BIN
snes/ascii/colbar_1.bmp
Normal file
BIN
snes/ascii/colbar_1.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
38
snes/ascii/colbar_1.s
Normal file
38
snes/ascii/colbar_1.s
Normal file
@@ -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
|
||||||
BIN
snes/ascii/colbar_2.bmp
Normal file
BIN
snes/ascii/colbar_2.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
38
snes/ascii/colbar_2.s
Normal file
38
snes/ascii/colbar_2.s
Normal file
@@ -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
|
||||||
BIN
snes/ascii/colbar_3.bmp
Normal file
BIN
snes/ascii/colbar_3.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
38
snes/ascii/colbar_3.s
Normal file
38
snes/ascii/colbar_3.s
Normal file
@@ -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
|
||||||
13
snes/ascii/colbarsine_1.s
Normal file
13
snes/ascii/colbarsine_1.s
Normal file
@@ -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
|
||||||
61
snes/ascii/header.inc
Normal file
61
snes/ascii/header.inc
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
;------------------------------ Header File ---------------------------------
|
||||||
|
; This is basically a combo of MarctheMER's and Neviksti's header files
|
||||||
|
; Perhaps reading their's will also help your understanding of the header,
|
||||||
|
; but I believe this will be the simplest method of defining your header,
|
||||||
|
; as Marc's doesn't provide a full explanation, and Neviksti's can be
|
||||||
|
; a bit more difficult for beginners (using the WLA directives is easier).
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;==LoRom== ; We'll get to HiRom some other time.
|
||||||
|
.MEMORYMAP ; Begin describing the system architecture.
|
||||||
|
SLOTSIZE $8000 ; The slot is $8000 bytes in size. More details on slots later.
|
||||||
|
DEFAULTSLOT 0 ; There's only 1 slot in SNES, there are more in other consoles.
|
||||||
|
SLOT 0 $8000 ; Define's Slot 0's starting address.
|
||||||
|
.ENDME ; End MemoryMap definition
|
||||||
|
|
||||||
|
.ROMBANKSIZE $8000 ; Every ROM bank is 32 KBytes in size
|
||||||
|
.ROMBANKS 8 ; 2 Mbits - Tell WLA we want to use 8 ROM Banks
|
||||||
|
|
||||||
|
.SNESHEADER
|
||||||
|
ID "SNES" ; 1-4 letter string, just leave it as "SNES"
|
||||||
|
|
||||||
|
NAME "SNES Tile Demo " ; Program Title - can't be over 21 bytes,
|
||||||
|
; "123456789012345678901" ; use spaces for unused bytes of the name.
|
||||||
|
|
||||||
|
SLOWROM
|
||||||
|
LOROM
|
||||||
|
|
||||||
|
CARTRIDGETYPE $00 ; $00 = ROM only, see WLA documentation for others
|
||||||
|
ROMSIZE $08 ; $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
|
||||||
2
snes/ascii/linkfile
Normal file
2
snes/ascii/linkfile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[objects]
|
||||||
|
main.o
|
||||||
817
snes/ascii/main.asm
Normal file
817
snes/ascii/main.asm
Normal file
@@ -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<74>(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<66>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"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
140
snes/ascii/music.inc
Normal file
140
snes/ascii/music.inc
Normal file
@@ -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
|
||||||
|
|
||||||
|
|
||||||
BIN
snes/ascii/optixx_logo.bmp
Normal file
BIN
snes/ascii/optixx_logo.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
170
snes/ascii/optixx_logo.s
Normal file
170
snes/ascii/optixx_logo.s
Normal file
@@ -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
|
||||||
BIN
snes/ascii/optixx_logo2.bmp
Normal file
BIN
snes/ascii/optixx_logo2.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
705
snes/ascii/save.s
Normal file
705
snes/ascii/save.s
Normal file
@@ -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<66>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<74>(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"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
90
snes/ascii/sinegen.py
Normal file
90
snes/ascii/sinegen.py
Normal file
@@ -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]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
13
snes/ascii/test.s
Normal file
13
snes/ascii/test.s
Normal file
@@ -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
|
||||||
13
snes/ascii/vsine_1.s
Normal file
13
snes/ascii/vsine_1.s
Normal file
@@ -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
|
||||||
13
snes/ascii/vsine_2.s
Normal file
13
snes/ascii/vsine_2.s
Normal file
@@ -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
|
||||||
79
snes/bankselect/Makefile
Normal file
79
snes/bankselect/Makefile
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# SDK Config
|
||||||
|
|
||||||
|
|
||||||
|
PLATFORM=mac
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),linux)
|
||||||
|
|
||||||
|
# Linux Wine
|
||||||
|
SDK=/home/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
EMU_DEBUG=/home/david/Devel/arch/snes/tools/zsnes_linux_debug151/src/zsnesd -d
|
||||||
|
else
|
||||||
|
# Mac Wine
|
||||||
|
SDK=/Users/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC=$(WINE) $(SDK)/bin/WDC816CC.exe
|
||||||
|
AS=$(WINE) $(SDK)/bin/WDC816AS.exe
|
||||||
|
LD=$(WINE) $(SDK)/bin/WDCLN.exe
|
||||||
|
PADBIN=$(WINE) tools/padbin.exe
|
||||||
|
PCX2SNES=$(WINE) tools/Pcx2Snes.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Project
|
||||||
|
|
||||||
|
INC=$(SDK)/include
|
||||||
|
LIBS=$(SDK)/lib/cc
|
||||||
|
#OBJS=StartupSnes.obj main.obj pad.obj event.obj myEvents.obj PPU.obj debug.obj ressource.obj
|
||||||
|
OBJS=StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj crc.obj
|
||||||
|
APP=banks.smc
|
||||||
|
GFX=kungfu debugfont
|
||||||
|
|
||||||
|
all: $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
$(EMU) $(APP)
|
||||||
|
|
||||||
|
debugger:
|
||||||
|
$(EMU_DEBUG) $(APP)
|
||||||
|
|
||||||
|
upload:
|
||||||
|
ucon64 $(APP)
|
||||||
|
cp -rv $(APP) /Volumes/SNES
|
||||||
|
sync
|
||||||
|
diskutil unmount /Volumes/SNES
|
||||||
|
|
||||||
|
crc:
|
||||||
|
python ../../scripts/crc_xmodem.py $(APP)
|
||||||
|
|
||||||
|
kungfu:
|
||||||
|
$(PCX2SNES) ressource/kungfu -n -c16 -screen
|
||||||
|
|
||||||
|
debugfont:
|
||||||
|
$(PCX2SNES) ressource/debugFont -n -c16 -s8 -o1
|
||||||
|
|
||||||
|
StartupSnes.obj: StartupSnes.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
ressource.obj: ressource.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
%.obj: %.c
|
||||||
|
$(CC) -wl -wp -sop -MC -I $(INC) $?
|
||||||
|
|
||||||
|
$(APP): $(OBJS)
|
||||||
|
$(LD) -HB -M21 -V -T -Pff \
|
||||||
|
-C008000,0000 -U0000,0000 \
|
||||||
|
-Avectors=FFE4,7FE4 \
|
||||||
|
-Aregistration_data=FFB0,7FB0 \
|
||||||
|
-Aressource=18000,8000 \
|
||||||
|
-N $(OBJS) -L$(LIBS) -O $@
|
||||||
|
$(PADBIN) 0x40000 $(APP)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.obj
|
||||||
80
snes/bankselect/PPU.c
Normal file
80
snes/bankselect/PPU.c
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
byte tileMapLocation[4];
|
||||||
|
word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void) {
|
||||||
|
byte Status;
|
||||||
|
do {
|
||||||
|
Status = *(byte*)0x4210;
|
||||||
|
} while (!(Status & 0x80));
|
||||||
|
}
|
||||||
|
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber) {
|
||||||
|
tileMapLocation[bgNumber] = ((vramDst >> 8) & 0xfc) | ( screenProp & 0x03 );
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreTileMapLocation(byte bgNumber) {
|
||||||
|
*(byte*) (0x2107+bgNumber) = tileMapLocation[bgNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber) {
|
||||||
|
characterLocation[bgNumber] = vramDst;
|
||||||
|
if(bgNumber < 2) {
|
||||||
|
*(byte*) 0x210b = (characterLocation[1] >> 8 & 0xf0 ) + (characterLocation[0] >> 12);
|
||||||
|
} else {
|
||||||
|
*(byte*) 0x210c = (characterLocation[3] >> 8 & 0xf0 ) + (characterLocation[2] >> 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void restoreCharacterLocation(byte bgNumber) {
|
||||||
|
setCharacterLocation(characterLocation[bgNumber], bgNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMByteWrite(byte value, word vramDst) {
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(byte*)0x2118 = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VRAMLoad(word src, word vramDst, word size) {
|
||||||
|
// set address in VRam for read or write ($2116) + block size transfer ($2115)
|
||||||
|
*(byte*)0x2115 = 0x80;
|
||||||
|
*(word*)0x2116 = vramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x1801; // set DMA control register (1 word inc)
|
||||||
|
// and destination ($21xx xx -> 0x18)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size) {
|
||||||
|
|
||||||
|
// set address in VRam for read or write + block size
|
||||||
|
*(byte*)0x2121 = cgramDst;
|
||||||
|
|
||||||
|
*(word*)0x4300 = 0x2200; // set DMA control register (1 byte inc)
|
||||||
|
// and destination ($21xx xx -> 022)
|
||||||
|
*(word*)0x4302 = src; // DMA channel x source address offset
|
||||||
|
// (low $4302 and high $4303 optimisation)
|
||||||
|
*(byte*)0x4304 = 0x01; // DMA channel x source address bank
|
||||||
|
*(word*)0x4305 = size; // DMA channel x transfer size
|
||||||
|
// (low $4305 and high $4306 optimisation)
|
||||||
|
|
||||||
|
// Turn on DMA transfer for this channel
|
||||||
|
waitForVBlank();
|
||||||
|
*(byte*)0x2100 = 0x80;
|
||||||
|
*(byte*)0x420b = 0x01;
|
||||||
|
*(byte*)0x2100 = 0x00;
|
||||||
|
}
|
||||||
11
snes/bankselect/PPU.h
Normal file
11
snes/bankselect/PPU.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extern byte tileMapLocation[4];
|
||||||
|
extern word characterLocation[4];
|
||||||
|
|
||||||
|
void waitForVBlank(void);
|
||||||
|
void setTileMapLocation(word vramDst, byte screenProp, byte bgNumber);
|
||||||
|
void restoreTileMapLocation(byte bgNumber);
|
||||||
|
void setCharacterLocation(word vramDst, byte bgNumber);
|
||||||
|
void restoreCharacterLocation(byte bgNumber);
|
||||||
|
void VRAMByteWrite(byte value, word vramDst);
|
||||||
|
void VRAMLoad(word src, word vramDst, word size);
|
||||||
|
void CGRAMLoad(word src, byte cgramDst, word size);
|
||||||
240
snes/bankselect/StartupSnes.asm
Normal file
240
snes/bankselect/StartupSnes.asm
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
; SNES ROM startup code
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Define a special section in case most of the code is not in bank 0. ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
;STACK EQU $01ff ;CHANGE THIS FOR YOUR SYSTEM
|
||||||
|
|
||||||
|
;STARTUP SECTION OFFSET $008000
|
||||||
|
|
||||||
|
CODE
|
||||||
|
|
||||||
|
XDEF START
|
||||||
|
START:
|
||||||
|
XREF _~main
|
||||||
|
|
||||||
|
sei ; Disabled interrupts
|
||||||
|
clc ; clear carry to switch to native mode
|
||||||
|
xce ; Xchange carry & emulation bit. native mode
|
||||||
|
rep #$18 ; Binary mode (decimal mode off), X/Y 16 bit
|
||||||
|
LONGI ON
|
||||||
|
ldx #$1FFF ; set stack to $1FFF
|
||||||
|
txs
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
; Init data used for heap
|
||||||
|
; see heap definition below
|
||||||
|
XREF _~_heap_top
|
||||||
|
XREF _~_mem_start
|
||||||
|
stz _~_heap_top
|
||||||
|
stz _~_mem_start
|
||||||
|
|
||||||
|
XREF _~preInit
|
||||||
|
jsr >_~preInit
|
||||||
|
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda #$8F ; screen off, full brightness
|
||||||
|
sta $2100 ; brightness + screen enable register
|
||||||
|
stz $2101 ; Sprite register (size + address in VRAM)
|
||||||
|
stz $2102 ; Sprite registers (address of sprite memory [OAM])
|
||||||
|
stz $2103 ; "" ""
|
||||||
|
stz $2105 ; Mode 0, = Graphic mode register
|
||||||
|
stz $2106 ; noplanes, no mosaic, = Mosaic register
|
||||||
|
stz $2107 ; Plane 0 map VRAM location
|
||||||
|
stz $2108 ; Plane 1 map VRAM location
|
||||||
|
stz $2109 ; Plane 2 map VRAM location
|
||||||
|
stz $210A ; Plane 3 map VRAM location
|
||||||
|
stz $210B ; Plane 0+1 Tile data location
|
||||||
|
stz $210C ; Plane 2+3 Tile data location
|
||||||
|
stz $210D ; Plane 0 scroll x (first 8 bits)
|
||||||
|
stz $210D ; Plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210E ; Plane 0 scroll y (first 8 bits)
|
||||||
|
stz $210E ; Plane 0 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $210F ; Plane 1 scroll x (first 8 bits)
|
||||||
|
stz $210F ; Plane 1 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2110 ; Plane 1 scroll y (first 8 bits)
|
||||||
|
stz $2110 ; Plane 1 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2111 ; Plane 2 scroll x (first 8 bits)
|
||||||
|
stz $2111 ; Plane 2 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2112 ; Plane 2 scroll y (first 8 bits)
|
||||||
|
stz $2112 ; Plane 2 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2113 ; Plane 3 scroll x (first 8 bits)
|
||||||
|
stz $2113 ; Plane 3 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
stz $2114 ; Plane 3 scroll y (first 8 bits)
|
||||||
|
stz $2114 ; Plane 3 scroll y (last 3 bits) #$0 - #$07ff
|
||||||
|
lda #$80 ; increase VRAM address after writing to $2119
|
||||||
|
sta $2115 ; VRAM address increment register
|
||||||
|
stz $2116 ; VRAM address low
|
||||||
|
stz $2117 ; VRAM address high
|
||||||
|
stz $211A ; Initial Mode 7 setting register
|
||||||
|
stz $211B ; Mode 7 matrix parameter A register (low)
|
||||||
|
lda #$01
|
||||||
|
sta $211B ; Mode 7 matrix parameter A register (high)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (low)
|
||||||
|
stz $211C ; Mode 7 matrix parameter B register (high)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (low)
|
||||||
|
stz $211D ; Mode 7 matrix parameter C register (high)
|
||||||
|
stz $211E ; Mode 7 matrix parameter D register (low)
|
||||||
|
sta $211E ; Mode 7 matrix parameter D register (high)
|
||||||
|
stz $211F ; Mode 7 center position X register (low)
|
||||||
|
stz $211F ; Mode 7 center position X register (high)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (low)
|
||||||
|
stz $2120 ; Mode 7 center position Y register (high)
|
||||||
|
stz $2121 ; Color number register ($0-ff)
|
||||||
|
stz $2123 ; BG1 & BG2 Window mask setting register
|
||||||
|
stz $2124 ; BG3 & BG4 Window mask setting register
|
||||||
|
stz $2125 ; OBJ & Color Window mask setting register
|
||||||
|
stz $2126 ; Window 1 left position register
|
||||||
|
stz $2127 ; Window 2 left position register
|
||||||
|
stz $2128 ; Window 3 left position register
|
||||||
|
stz $2129 ; Window 4 left position register
|
||||||
|
stz $212A ; BG1, BG2, BG3, BG4 Window Logic register
|
||||||
|
stz $212B ; OBJ, Color Window Logic Register (or,and,xor,xnor)
|
||||||
|
sta $212C ; Main Screen designation (planes, sprites enable)
|
||||||
|
stz $212D ; Sub Screen designation
|
||||||
|
stz $212E ; Window mask for Main Screen
|
||||||
|
stz $212F ; Window mask for Sub Screen
|
||||||
|
lda #$30
|
||||||
|
sta $2130 ; Color addition & screen addition init setting
|
||||||
|
stz $2131 ; Add/Sub sub designation for screen, sprite, color
|
||||||
|
lda #$E0
|
||||||
|
sta $2132 ; color data for addition/subtraction
|
||||||
|
stz $2133 ; Screen setting (interlace x,y/enable SFX data)
|
||||||
|
stz $4200 ; Enable V-blank, interrupt, Joypad register
|
||||||
|
lda #$FF
|
||||||
|
sta $4201 ; Programmable I/O port
|
||||||
|
stz $4202 ; Multiplicand A
|
||||||
|
stz $4203 ; Multiplier B
|
||||||
|
stz $4204 ; Multiplier C
|
||||||
|
stz $4205 ; Multiplicand C
|
||||||
|
stz $4206 ; Divisor B
|
||||||
|
stz $4207 ; Horizontal Count Timer
|
||||||
|
stz $4208 ; Horizontal Count Timer MSB (most significant bit)
|
||||||
|
stz $4209 ; Vertical Count Timer
|
||||||
|
stz $420A ; Vertical Count Timer MSB
|
||||||
|
stz $420B ; General DMA enable (bits 0-7)
|
||||||
|
stz $420C ; Horizontal DMA (HDMA) enable (bits 0-7)
|
||||||
|
stz $420D ; Access cycle designation (slow/fast rom)
|
||||||
|
cli ; Enable interrupts
|
||||||
|
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
jsr >_~main
|
||||||
|
brk
|
||||||
|
|
||||||
|
XDEF IRQ
|
||||||
|
IRQ:
|
||||||
|
XREF _~IRQHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jsr _~IRQHandler
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
XDEF NMI
|
||||||
|
NMI:
|
||||||
|
XREF _~NMIHandler
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phd
|
||||||
|
phb
|
||||||
|
lda #$0000
|
||||||
|
sep #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LONGA OFF
|
||||||
|
LONGI OFF
|
||||||
|
lda $4210 ; Read NMI
|
||||||
|
LONGA ON
|
||||||
|
LONGI ON
|
||||||
|
rep #$30
|
||||||
|
jsr _~NMIHandler
|
||||||
|
plb
|
||||||
|
pld
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
|
||||||
|
DIRQ:
|
||||||
|
rti
|
||||||
|
|
||||||
|
ENDS
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** Heap definition ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
DATA
|
||||||
|
|
||||||
|
XDEF _~heap_start
|
||||||
|
XDEF _~heap_end
|
||||||
|
|
||||||
|
_~heap_start:
|
||||||
|
WORD $1000
|
||||||
|
_~heap_end:
|
||||||
|
WORD $1200
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES ROM Registartion Data ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
REGISTRATION_DATA SECTION
|
||||||
|
|
||||||
|
MAKER_CODE FCC /FF/
|
||||||
|
GAME_CODE FCC /SMWJ/
|
||||||
|
FIXED_VALUE0 BYTE $00, $00, $00, $00, $00, $00, $00
|
||||||
|
EXPANSION_RAM_SIZE BYTE $00
|
||||||
|
SPECIAL_VERSION BYTE $00
|
||||||
|
CARTRIDGE_TYPE_SUB BYTE $00
|
||||||
|
GAME_TITLE FCC /GAME TITLE !/
|
||||||
|
;012345678901234567890;
|
||||||
|
MAP_MODE BYTE $20
|
||||||
|
CARTRIDGE_SIZE BYTE $00
|
||||||
|
ROM_SIZE BYTE $08
|
||||||
|
RAM_SIZE BYTE $00
|
||||||
|
DESTINATION_CODE BYTE $00
|
||||||
|
FIXED_VALUE1 BYTE $33
|
||||||
|
MASK_ROM_VERSION BYTE $00
|
||||||
|
COMPLEMENT_CHECK BYTE $00, $00
|
||||||
|
CHEKSUM BYTE $00, $00
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;*** SNES Interrupts and Reset vector ***
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
VECTORS SECTION
|
||||||
|
; Native vector
|
||||||
|
N_COP DW DIRQ
|
||||||
|
N_BRK DW DIRQ
|
||||||
|
N_ABORT DW DIRQ
|
||||||
|
N_NMI DW NMI
|
||||||
|
N_RSRVD DW DIRQ
|
||||||
|
N_IRQ DW IRQ
|
||||||
|
DS 4
|
||||||
|
; Emulation vector
|
||||||
|
E_COP DW DIRQ
|
||||||
|
E_RSRVD DW DIRQ
|
||||||
|
E_ABORT DW DIRQ
|
||||||
|
E_NMI DW DIRQ
|
||||||
|
E_RESET DW START
|
||||||
|
E_IRQ DW DIRQ
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
37
snes/bankselect/crc.c
Normal file
37
snes/bankselect/crc.c
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include "data.h"
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update (char far *data, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word)data[j]<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
word crc_update_mem (unsigned long addr, word size)
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
word j;
|
||||||
|
word crc=0;
|
||||||
|
for (j=0; j<size; j++){
|
||||||
|
crc = crc ^ ((word) *(byte*)(addr+j)<< 8);
|
||||||
|
for (i=0; i<8; i++){
|
||||||
|
if (crc & 0x8000)
|
||||||
|
crc = (crc << 1) ^ 0x1021;
|
||||||
|
else
|
||||||
|
crc <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return crc;
|
||||||
|
}
|
||||||
4
snes/bankselect/crc.h
Normal file
4
snes/bankselect/crc.h
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
word crc_update (byte *data, word size);
|
||||||
|
word crc_update_mem (unsigned long, word size);
|
||||||
|
|
||||||
2
snes/bankselect/data.h
Normal file
2
snes/bankselect/data.h
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
typedef unsigned char byte;
|
||||||
|
typedef unsigned short word;
|
||||||
60
snes/bankselect/debug.c
Normal file
60
snes/bankselect/debug.c
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#include "data.h"
|
||||||
|
#include "pad.h"
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "ressource.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
word debugMap[0x400];
|
||||||
|
void initDebugMap(void) {
|
||||||
|
word i;
|
||||||
|
for(i=0; i<0x400; i++) {
|
||||||
|
debugMap[i] = 0x00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char hex_chars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||||
|
|
||||||
|
void int2hex(unsigned long number, char *buf,word size)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
long a;
|
||||||
|
for (a = 0; a < size; ++a) {
|
||||||
|
buf[a] = (i >> ((long)size * (2 * 2 - 1 - a))) & 0xf;
|
||||||
|
if (buf[a] < 10)
|
||||||
|
buf[a] += '0';
|
||||||
|
else
|
||||||
|
buf[a] += 'A' - 10;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//buf[a] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long n;
|
||||||
|
unsigned char i;
|
||||||
|
//unsigned char x;
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
n = number >> 4;
|
||||||
|
//x = (number - (n << 4));
|
||||||
|
buf[size-i-1] = hex_chars[(number - (n << 4))];
|
||||||
|
number = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeln(char *buffer,word y){
|
||||||
|
char i;
|
||||||
|
waitForVBlank();
|
||||||
|
for(i=0; i<32; i++) {
|
||||||
|
waitForVBlank();
|
||||||
|
VRAMByteWrite((byte) (buffer[i]-32), (word) (0x4000+i+(y*0x20)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void enableDebugScreen(void){
|
||||||
|
VRAMLoad((word) debugFont_pic, 0x5000, 2048);
|
||||||
|
CGRAMLoad((word) debugFont_pal, (byte) 0x00, (word) 16);
|
||||||
|
VRAMLoad((word) debugMap, 0x4000, 0x0800);
|
||||||
|
setTileMapLocation(0x4000, (byte) 0x00, (byte) 0);
|
||||||
|
setCharacterLocation(0x5000, (byte) 0);
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
}
|
||||||
5
snes/bankselect/debug.h
Normal file
5
snes/bankselect/debug.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
void initDebugMap(void);
|
||||||
|
void debug(void);
|
||||||
|
void int2hex(unsigned long i, char *buf,word size);
|
||||||
|
void writeln(char* line,word y);
|
||||||
|
void enableDebugScreen(void);
|
||||||
101
snes/bankselect/event.c
Normal file
101
snes/bankselect/event.c
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "data.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
event *events;
|
||||||
|
|
||||||
|
void initEvents(void) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
event *createEvent(char (*callback)(word counter)) {
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
myEvent = (event*) malloc(sizeof(event));
|
||||||
|
|
||||||
|
myEvent->VBlankCount = 0;
|
||||||
|
myEvent->callback = callback;
|
||||||
|
myEvent->nextEvent = NULL;
|
||||||
|
myEvent->previousEvent = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
event* addEvent(char (*callback)(word counter), int noDuplicateCallback) {
|
||||||
|
|
||||||
|
event *lastEvent;
|
||||||
|
event *myEvent;
|
||||||
|
|
||||||
|
if(events == NULL) {
|
||||||
|
events = createEvent(callback);
|
||||||
|
return events;
|
||||||
|
} else {
|
||||||
|
lastEvent = events;
|
||||||
|
// TODO optimise this with noduplicate
|
||||||
|
while(lastEvent->nextEvent != NULL) {
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
lastEvent = lastEvent->nextEvent;
|
||||||
|
}
|
||||||
|
if(noDuplicateCallback == 1 && lastEvent->callback == *callback) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
myEvent = createEvent(callback);
|
||||||
|
myEvent->previousEvent = lastEvent;
|
||||||
|
lastEvent->nextEvent = myEvent;
|
||||||
|
return myEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeEvent(event *eventElement) {
|
||||||
|
|
||||||
|
byte alone = 0;
|
||||||
|
event *next, *previous;
|
||||||
|
|
||||||
|
next = eventElement->nextEvent;
|
||||||
|
previous = eventElement->previousEvent;
|
||||||
|
|
||||||
|
if(eventElement->nextEvent != NULL && eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = previous;
|
||||||
|
previous->nextEvent = next;
|
||||||
|
|
||||||
|
} else if(eventElement->nextEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
next->previousEvent = NULL;
|
||||||
|
events = next;
|
||||||
|
|
||||||
|
} else if(eventElement->previousEvent != NULL) {
|
||||||
|
alone++;
|
||||||
|
previous->nextEvent = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(eventElement);
|
||||||
|
|
||||||
|
if(alone == 0) {
|
||||||
|
events = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void processEvents(void) {
|
||||||
|
|
||||||
|
event *currentEvent;
|
||||||
|
char returnValue;
|
||||||
|
|
||||||
|
currentEvent = events;
|
||||||
|
while(currentEvent != NULL) {
|
||||||
|
returnValue = currentEvent->callback(currentEvent->VBlankCount);
|
||||||
|
if(returnValue == EVENT_CONTINUE) {
|
||||||
|
currentEvent->VBlankCount++;
|
||||||
|
} else {
|
||||||
|
removeEvent(currentEvent);
|
||||||
|
}
|
||||||
|
currentEvent = currentEvent->nextEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
snes/bankselect/event.h
Normal file
16
snes/bankselect/event.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
typedef struct event{
|
||||||
|
word VBlankCount;
|
||||||
|
char (*callback)(word counter);
|
||||||
|
struct event *previousEvent;
|
||||||
|
struct event *nextEvent;
|
||||||
|
} event;
|
||||||
|
|
||||||
|
#define EVENT_STOP 0
|
||||||
|
#define EVENT_CONTINUE 1
|
||||||
|
|
||||||
|
extern event *events;
|
||||||
|
|
||||||
|
void initEvents(void);
|
||||||
|
extern event* addEvent(char (*callback)(word counter), int noDuplicateCallback);
|
||||||
|
extern void removeEvent(event *eventElement);
|
||||||
|
extern void processEvents(void);
|
||||||
10
snes/bankselect/hex.py
Normal file
10
snes/bankselect/hex.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
number=0xffaaee
|
||||||
|
size = 6
|
||||||
|
print hex(number)
|
||||||
|
|
||||||
|
for i in range(0,size):
|
||||||
|
n = number >> 4;
|
||||||
|
print size-i-1, hex(number - (n << 4));
|
||||||
|
number = n;
|
||||||
|
|
||||||
71
snes/bankselect/main.c
Normal file
71
snes/bankselect/main.c
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
#include "myEvents.h";
|
||||||
|
#include "ressource.h";
|
||||||
|
#include "PPU.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "crc.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
padStatus pad1;
|
||||||
|
|
||||||
|
void initInternalRegisters(void) {
|
||||||
|
characterLocation[0] = 0x0000;
|
||||||
|
characterLocation[1] = 0x0000;
|
||||||
|
characterLocation[2] = 0x0000;
|
||||||
|
characterLocation[3] = 0x0000;
|
||||||
|
initDebugMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void preInit(void) {
|
||||||
|
// For testing purpose ...
|
||||||
|
// Insert code here to be executed before register init
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
word i,j;
|
||||||
|
word crc01;
|
||||||
|
word crc02;
|
||||||
|
padStatus pad1; //012345678901234567890123456789012
|
||||||
|
char line_header[32] = "BANK ADDR VAL 123456789ABCDEF";
|
||||||
|
char line[32] = " ";
|
||||||
|
char space;
|
||||||
|
unsigned long addr;
|
||||||
|
initInternalRegisters();
|
||||||
|
|
||||||
|
*(byte*) 0x2105 = 0x01; // MODE 1 value
|
||||||
|
*(byte*) 0x212c = 0x01; // Plane 0 (bit one) enable register
|
||||||
|
*(byte*) 0x212d = 0x00; // All subPlane disable
|
||||||
|
*(byte*) 0x2100 = 0x0f; // enable background
|
||||||
|
|
||||||
|
enablePad();
|
||||||
|
enableDebugScreen();
|
||||||
|
writeln(line_header,0);
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
addr = 0x018000;
|
||||||
|
for(j=1; j<16; j++) {
|
||||||
|
int2hex((unsigned long)j,&line[0],4);
|
||||||
|
int2hex((unsigned long)addr,&line[5],6);
|
||||||
|
int2hex((unsigned long)*(byte*)addr,&line[12],4);
|
||||||
|
writeln(line,j+1);
|
||||||
|
addr+= 0x010000;
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
while(!pad1.start) {
|
||||||
|
//waitForVBlank();
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRQHandler(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NMIHandler(void) {
|
||||||
|
//processEvents();
|
||||||
|
}
|
||||||
97
snes/bankselect/myEvents.c
Normal file
97
snes/bankselect/myEvents.c
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
#include "event.h";
|
||||||
|
|
||||||
|
extern padStatus pad1;
|
||||||
|
extern word scrollValue;
|
||||||
|
|
||||||
|
char fadeOut(word counter) {
|
||||||
|
static byte fadeOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeOutValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
fadeOutValue--;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeOutValue;
|
||||||
|
|
||||||
|
if(fadeOutValue == 0x00) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char fadeIn(word counter) {
|
||||||
|
static byte fadeInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
fadeInValue = 0x00;
|
||||||
|
} else {
|
||||||
|
fadeInValue++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2100 = fadeInValue;
|
||||||
|
|
||||||
|
if(fadeInValue >= 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicOut(word counter) {
|
||||||
|
static byte mosaicOutValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicOutValue = 0xff;
|
||||||
|
} else {
|
||||||
|
mosaicOutValue -= 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicOutValue;
|
||||||
|
|
||||||
|
if(mosaicOutValue == 0x0f) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char mosaicIn(word counter) {
|
||||||
|
static byte mosaicInValue;
|
||||||
|
|
||||||
|
if(counter == 0) {
|
||||||
|
// init fade value
|
||||||
|
mosaicInValue = 0x0f;
|
||||||
|
} else {
|
||||||
|
mosaicInValue += 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(byte*) 0x2106 = mosaicInValue;
|
||||||
|
|
||||||
|
if(mosaicInValue == 0xff) {
|
||||||
|
return EVENT_STOP;
|
||||||
|
} else {
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char NMIReadPad(word counter) {
|
||||||
|
pad1 = readPad((byte) 0);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
char scrollLeft(word counter) {
|
||||||
|
scrollValue++;
|
||||||
|
|
||||||
|
*(byte*) 0x210d = (byte) scrollValue;
|
||||||
|
*(byte*) 0x210d = (byte) (scrollValue>>8);
|
||||||
|
|
||||||
|
return EVENT_CONTINUE;
|
||||||
|
}
|
||||||
6
snes/bankselect/myEvents.h
Normal file
6
snes/bankselect/myEvents.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
char fadeOut(word counter);
|
||||||
|
char fadeIn(word counter);
|
||||||
|
char mosaicOut(word counter);
|
||||||
|
char mosaicIn(word counter);
|
||||||
|
char NMIReadPad(word counter);
|
||||||
|
char scrollLeft(word counter);
|
||||||
17
snes/bankselect/pad.c
Normal file
17
snes/bankselect/pad.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "data.h";
|
||||||
|
#include "pad.h";
|
||||||
|
|
||||||
|
void enablePad(void) {
|
||||||
|
// Enable pad reading and NMI
|
||||||
|
*(byte*)0x4200 = 0x81;
|
||||||
|
}
|
||||||
|
|
||||||
|
padStatus readPad(byte padNumber) {
|
||||||
|
word test;
|
||||||
|
padStatus *status;
|
||||||
|
padNumber = padNumber << 1;
|
||||||
|
test = (word) *(byte*)0x4218+padNumber << 8;
|
||||||
|
test |= (word) *(byte*)0x4219+padNumber;
|
||||||
|
status = (padStatus *) &test;
|
||||||
|
return *status;
|
||||||
|
}
|
||||||
19
snes/bankselect/pad.h
Normal file
19
snes/bankselect/pad.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
typedef struct padStatus{
|
||||||
|
byte right:1;
|
||||||
|
byte left:1;
|
||||||
|
byte down:1;
|
||||||
|
byte up:1;
|
||||||
|
byte start:1; // Enter
|
||||||
|
byte select:1; // Space
|
||||||
|
byte Y:1; // X
|
||||||
|
byte B:1; // C
|
||||||
|
//--------------------------------
|
||||||
|
byte Dummy:4;
|
||||||
|
byte R:1; // Z
|
||||||
|
byte L:1; // A
|
||||||
|
byte X:1; // S
|
||||||
|
byte A:1; // D
|
||||||
|
} padStatus;
|
||||||
|
|
||||||
|
extern void enablePad(void);
|
||||||
|
extern padStatus readPad(byte padNumber);
|
||||||
23
snes/bankselect/ressource.asm
Normal file
23
snes/bankselect/ressource.asm
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
ressource .section
|
||||||
|
|
||||||
|
; XDEF __title_map
|
||||||
|
;__title_map:
|
||||||
|
; INSERT ressource/kungfu.map
|
||||||
|
;
|
||||||
|
; XDEF __title_pic
|
||||||
|
;__title_pic:
|
||||||
|
; INSERT ressource/kungfu.pic
|
||||||
|
;
|
||||||
|
; XDEF __title_pal
|
||||||
|
;__title_pal:
|
||||||
|
;make INSERT ressource/kungfu.clr
|
||||||
|
|
||||||
|
XDEF _~debugFont_pic
|
||||||
|
_~debugFont_pic
|
||||||
|
INSERT ressource/debugFont.pic
|
||||||
|
|
||||||
|
XDEF _~debugFont_pal
|
||||||
|
_~debugFont_pal
|
||||||
|
INSERT ressource/debugFont.clr
|
||||||
|
|
||||||
|
.ends
|
||||||
3
snes/bankselect/ressource.h
Normal file
3
snes/bankselect/ressource.h
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
extern word debugFont_pic[];
|
||||||
|
extern word debugFont_pal[];
|
||||||
BIN
snes/bankselect/ressource/debugFont.clr
Normal file
BIN
snes/bankselect/ressource/debugFont.clr
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.pcx
Normal file
BIN
snes/bankselect/ressource/debugFont.pcx
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.pic
Normal file
BIN
snes/bankselect/ressource/debugFont.pic
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/debugFont.xcf
Normal file
BIN
snes/bankselect/ressource/debugFont.xcf
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.clr
Normal file
BIN
snes/bankselect/ressource/kungfu.clr
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.pcx
Normal file
BIN
snes/bankselect/ressource/kungfu.pcx
Normal file
Binary file not shown.
BIN
snes/bankselect/ressource/kungfu.pic
Normal file
BIN
snes/bankselect/ressource/kungfu.pic
Normal file
Binary file not shown.
BIN
snes/bankselect/tools/Pcx2Snes.exe
Normal file
BIN
snes/bankselect/tools/Pcx2Snes.exe
Normal file
Binary file not shown.
BIN
snes/bankselect/tools/padbin.exe
Normal file
BIN
snes/bankselect/tools/padbin.exe
Normal file
Binary file not shown.
143
snes/banktest/LoadGraphics.asm
Normal file
143
snes/banktest/LoadGraphics.asm
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
;============================================================================
|
||||||
|
; Macros
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
;LoadPalette - Macro that loads palette information into CGRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: SRC_ADDR -- 24 bit address of source data,
|
||||||
|
; START -- Color # to start on,
|
||||||
|
; SIZE -- # of COLORS to copy
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: A,X
|
||||||
|
; Requires: mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
.MACRO LoadPalette
|
||||||
|
lda #\2
|
||||||
|
sta $2121 ; Start at START color
|
||||||
|
lda #:\1 ; Using : before the parameter gets its bank.
|
||||||
|
ldx #\1 ; Not using : gets the offset address.
|
||||||
|
ldy #(\3 * 2) ; 2 bytes for every color
|
||||||
|
jsr DMAPalette
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; LoadBlockToVRAM -- Macro that simplifies calling LoadVRAM to copy data to VRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: SRC_ADDR -- 24 bit address of source data
|
||||||
|
; DEST -- VRAM address to write to (WORD address!!)
|
||||||
|
; SIZE -- number of BYTEs to copy
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: A, X, Y
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;LoadBlockToVRAM SRC_ADDRESS, DEST, SIZE
|
||||||
|
; requires: mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
.MACRO LoadBlockToVRAM
|
||||||
|
lda #$80
|
||||||
|
sta $2115
|
||||||
|
ldx #\2 ; DEST
|
||||||
|
stx $2116 ; $2116: Word address for accessing VRAM.
|
||||||
|
lda #:\1 ; SRCBANK
|
||||||
|
ldx #\1 ; SRCOFFSET
|
||||||
|
ldy #\3 ; SIZE
|
||||||
|
jsr LoadVRAM
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Routines
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "LoadVRAMCode" SEMIFREE
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; LoadVRAM -- Load data into VRAM
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: A:X -- points to the data
|
||||||
|
; Y -- Number of bytes to copy (0 to 65535) (assumes 16-bit index)
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: none
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Notes: Assumes VRAM address has been previously set!!
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
LoadVRAM:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phb
|
||||||
|
php ; Preserve Registers
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
|
||||||
|
stx $4302 ; Store Data offset into DMA source offset
|
||||||
|
sta $4304 ; Store data Bank into DMA source bank
|
||||||
|
sty $4305 ; Store size of data block
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
sta $4300 ; Set DMA mode (word, normal increment)
|
||||||
|
lda #$18 ; Set the destination register (VRAM write register)
|
||||||
|
sta $4301
|
||||||
|
lda #$01 ; Initiate DMA transfer (channel 1)
|
||||||
|
sta $420B
|
||||||
|
|
||||||
|
plp ; restore registers
|
||||||
|
plb
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rts ; return
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
.BANK 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "DMAPaletteCode" SEMIFREE
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; DMAPalette -- Load entire palette using DMA
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: A:X -- points to the data
|
||||||
|
; Y -- Size of data
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Modifies: none
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
DMAPalette:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phb
|
||||||
|
php ; Preserve Registers
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
|
||||||
|
stx $4302 ; Store data offset into DMA source offset
|
||||||
|
sta $4304 ; Store data bank into DMA source bank
|
||||||
|
sty $4305 ; Store size of data block
|
||||||
|
|
||||||
|
stz $4300 ; Set DMA Mode (byte, normal increment)
|
||||||
|
lda #$22 ; Set destination register ($2122 - CGRAM Write)
|
||||||
|
sta $4301
|
||||||
|
lda #$01 ; Initiate DMA transfer
|
||||||
|
sta $420B
|
||||||
|
|
||||||
|
plp ; Restore registers
|
||||||
|
plb
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rts ; return from subroutine
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.ENDS
|
||||||
33
snes/banktest/Makefile
Normal file
33
snes/banktest/Makefile
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#wla-65816 -o %1.asm %1.obj
|
||||||
|
#wlalink -vr temp.prj %1.smc
|
||||||
|
|
||||||
|
|
||||||
|
AS=wla-65816
|
||||||
|
LD=wlalink
|
||||||
|
|
||||||
|
OBJS=vram2.o
|
||||||
|
APP=vram2.smc
|
||||||
|
GFX=
|
||||||
|
|
||||||
|
all: clean $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
zsnes $(APP)
|
||||||
|
|
||||||
|
linkfile:
|
||||||
|
echo "[objects]" > linkerfile.prj
|
||||||
|
|
||||||
|
|
||||||
|
optixx.inc: optixx.pcx
|
||||||
|
wine tools/pcx2snes.exe optixx.pcx -b2 -nOptixx -ooptixx.inc
|
||||||
|
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
echo "$@" >> linkerfile.prj
|
||||||
|
$(AS) -o $? $@
|
||||||
|
|
||||||
|
$(APP): linkfile $(GFX) $(OBJS) $(GFX)
|
||||||
|
$(LD) -vr linkerfile.prj $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.prj *.o
|
||||||
61
snes/banktest/header.inc
Normal file
61
snes/banktest/header.inc
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
;------------------------------ Header File ---------------------------------
|
||||||
|
; This is basically a combo of MarctheMER's and Neviksti's header files
|
||||||
|
; Perhaps reading their's will also help your understanding of the header,
|
||||||
|
; but I believe this will be the simplest method of defining your header,
|
||||||
|
; as Marc's doesn't provide a full explanation, and Neviksti's can be
|
||||||
|
; a bit more difficult for beginners (using the WLA directives is easier).
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;==LoRom== ; We'll get to HiRom some other time.
|
||||||
|
.MEMORYMAP ; Begin describing the system architecture.
|
||||||
|
SLOTSIZE $8000 ; The slot is $8000 bytes in size. More details on slots later.
|
||||||
|
DEFAULTSLOT 0 ; There's only 1 slot in SNES, there are more in other consoles.
|
||||||
|
SLOT 0 $8000 ; Define's Slot 0's starting address.
|
||||||
|
.ENDME ; End MemoryMap definition
|
||||||
|
|
||||||
|
.ROMBANKSIZE $8000 ; Every ROM bank is 32 KBytes in size
|
||||||
|
.ROMBANKS 8 ; 2 Mbits - Tell WLA we want to use 8 ROM Banks
|
||||||
|
|
||||||
|
.SNESHEADER
|
||||||
|
ID "SNES" ; 1-4 letter string, just leave it as "SNES"
|
||||||
|
|
||||||
|
NAME "SNES Tile Demo " ; Program Title - can't be over 21 bytes,
|
||||||
|
; "123456789012345678901" ; use spaces for unused bytes of the name.
|
||||||
|
|
||||||
|
SLOWROM
|
||||||
|
LOROM
|
||||||
|
|
||||||
|
CARTRIDGETYPE $00 ; $00 = ROM only, see WLA documentation for others
|
||||||
|
ROMSIZE $08 ; $08 = 2 Mbits, see WLA doc for more..
|
||||||
|
SRAMSIZE $00 ; No SRAM see WLA doc for more..
|
||||||
|
COUNTRY $01 ; $01 = U.S. $00 = Japan, that's all I know
|
||||||
|
LICENSEECODE $00 ; Just use $00
|
||||||
|
VERSION $00 ; $00 = 1.00, $01 = 1.01, etc.
|
||||||
|
.ENDSNES
|
||||||
|
|
||||||
|
.SNESNATIVEVECTOR ; Define Native Mode interrupt vector table
|
||||||
|
COP EmptyHandler
|
||||||
|
BRK EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
IRQ EmptyHandler
|
||||||
|
.ENDNATIVEVECTOR
|
||||||
|
|
||||||
|
.SNESEMUVECTOR ; Define Emulation Mode interrupt vector table
|
||||||
|
COP EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
RESET Start
|
||||||
|
IRQBRK EmptyHandler
|
||||||
|
.ENDEMUVECTOR
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0 ; Defines the ROM bank and the slot it is inserted in memory.
|
||||||
|
.ORG 0 ; .ORG 0 is really $8000, because the slot starts at $8000
|
||||||
|
.SECTION "EmptyVectors" SEMIFREE
|
||||||
|
|
||||||
|
EmptyHandler:
|
||||||
|
rti
|
||||||
|
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
.EMPTYFILL $00
|
||||||
262
snes/banktest/init.inc
Normal file
262
snes/banktest/init.inc
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
;------------------------------------------------------------------------
|
||||||
|
;- Written by: Neviksti
|
||||||
|
;- If you use my code, please share your creations with me
|
||||||
|
;- as I am always curious :)
|
||||||
|
;------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; InitSNES -- my "standard" initialization of SNES memory and registers
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
.MACRO InitSNES
|
||||||
|
sei ;disable interrupts
|
||||||
|
clc ;switch to native mode
|
||||||
|
xce
|
||||||
|
|
||||||
|
REP #$38 ; mem/A = 16 bit, X/Y = 16 bit
|
||||||
|
;decimal mode off
|
||||||
|
|
||||||
|
LDX #$1FFF ;Setup the stack
|
||||||
|
TXS ;Transfer Index X to Stack Pointer Register
|
||||||
|
|
||||||
|
;do the rest of the initialization in a routine
|
||||||
|
JSL $008000
|
||||||
|
|
||||||
|
SEP #$20 ; mem/A = 8 bit
|
||||||
|
.ENDM
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "InitializeSNESCode" FORCE
|
||||||
|
|
||||||
|
InitializeSNES:
|
||||||
|
PHK ;set Data Bank = Program Bank
|
||||||
|
PLB
|
||||||
|
|
||||||
|
LDA #$0000 ;set Direct Page = $0000
|
||||||
|
TCD ;Transfer Accumulator to Direct Register
|
||||||
|
|
||||||
|
LDX $1FFD ;we clear all the mem at one point ...
|
||||||
|
STX $4372 ;so save the return address in a place that won't get overwritten
|
||||||
|
LDX $1FFF
|
||||||
|
STX $4374
|
||||||
|
|
||||||
|
SEP #$20 ; mem/A = 8 bit
|
||||||
|
REP #$10
|
||||||
|
|
||||||
|
LDA #$8F
|
||||||
|
STA $2100 ;turn screen off for now, set brightness to normal
|
||||||
|
|
||||||
|
LDX #$2101
|
||||||
|
_Loop00: ;regs $2101-$210C
|
||||||
|
STZ $00,X ;set Sprite,Character,Tile sizes to lowest, and set addresses to $0000
|
||||||
|
INX
|
||||||
|
CPX #$210D
|
||||||
|
BNE _Loop00
|
||||||
|
|
||||||
|
_Loop01: ;regs $210D-$2114
|
||||||
|
STZ $00,X ;Set all BG scroll values to $0000
|
||||||
|
STZ $00,X
|
||||||
|
INX
|
||||||
|
CPX #$2115
|
||||||
|
BNE _Loop01
|
||||||
|
|
||||||
|
LDA #$80 ;reg $2115
|
||||||
|
STA $2115 ; Initialize VRAM transfer mode to word-access, increment by 1
|
||||||
|
|
||||||
|
STZ $2116 ;regs $2117-$2117
|
||||||
|
STZ $2117 ;VRAM address = $0000
|
||||||
|
|
||||||
|
;reg $2118-$2119
|
||||||
|
;VRAM write register... don't need to initialize
|
||||||
|
|
||||||
|
STZ $211A ;clear Mode7 setting
|
||||||
|
|
||||||
|
LDX #$211B
|
||||||
|
_Loop02: ;regs $211B-$2120
|
||||||
|
STZ $00,X ;clear out the Mode7 matrix values
|
||||||
|
STZ $00,X
|
||||||
|
INX
|
||||||
|
CPX #$2121
|
||||||
|
BNE _Loop02
|
||||||
|
|
||||||
|
;reg $2121 - Color address, doesn't need initilaizing
|
||||||
|
;reg $2122 - Color data, is initialized later
|
||||||
|
|
||||||
|
LDX #$2123
|
||||||
|
_Loop03: ;regs $2123-$2133
|
||||||
|
STZ $00,X ;turn off windows, main screens, sub screens, color addition,
|
||||||
|
INX ;fixed color = $00, no super-impose (external synchronization),
|
||||||
|
CPX #$2134 ;no interlaced mode, normal resolution
|
||||||
|
BNE _Loop03
|
||||||
|
|
||||||
|
;regs $2134-$2136 - multiplication result, no initialization needed
|
||||||
|
;reg $2137 - software H/V latch, no initialization needed
|
||||||
|
;reg $2138 - Sprite data read, no initialization needed
|
||||||
|
;regs $2139-$213A - VRAM data read, no initialization needed
|
||||||
|
;reg $213B - Color RAM data read, no initialization needed
|
||||||
|
;regs $213C-$213D - H/V latched data read, no initialization needed
|
||||||
|
|
||||||
|
STZ $213E ;reg $213E - might not be necesary, but selects PPU master/slave mode
|
||||||
|
;reg $213F - PPU status flag, no initialization needed
|
||||||
|
|
||||||
|
;reg $2140-$2143 - APU communication regs, no initialization required
|
||||||
|
|
||||||
|
;reg $2180 - read/write WRAM register, no initialization required
|
||||||
|
;reg $2181-$2183 - WRAM address, no initialization required
|
||||||
|
|
||||||
|
;reg $4016-$4017 - serial JoyPad read registers, no need to initialize
|
||||||
|
|
||||||
|
|
||||||
|
STZ $4200 ;reg $4200 - disable timers, NMI,and auto-joyread
|
||||||
|
|
||||||
|
LDA #$FF
|
||||||
|
STA $4201 ;reg $4201 - programmable I/O write port, initalize to allow reading at in-port
|
||||||
|
|
||||||
|
;regs $4202-$4203 - multiplication registers, no initialization required
|
||||||
|
;regs $4204-$4206 - division registers, no initialization required
|
||||||
|
|
||||||
|
;regs $4207-$4208 - Horizontal-IRQ timer setting, since we disabled this, it is OK to not init
|
||||||
|
;regs $4209-$420A - Vertical-IRQ timer setting, since we disabled this, it is OK to not init
|
||||||
|
|
||||||
|
STZ $420B ;reg $420B - turn off all general DMA channels
|
||||||
|
STZ $420C ;reg $420C - turn off all H-MA channels
|
||||||
|
|
||||||
|
STZ $420D ;reg $420D - ROM access time to slow (2.68Mhz)
|
||||||
|
|
||||||
|
LDA $4210 ;reg $4210 - NMI status, reading resets
|
||||||
|
|
||||||
|
;reg $4211 - IRQ status, no need to initialize
|
||||||
|
;reg $4212 - H/V blank and JoyRead status, no need to initialize
|
||||||
|
;reg $4213 - programmable I/O inport, no need to initialize
|
||||||
|
|
||||||
|
;reg $4214-$4215 - divide results, no need to initialize
|
||||||
|
;reg $4216-$4217 - multiplication or remainder results, no need to initialize
|
||||||
|
|
||||||
|
;regs $4218-$421f - JoyPad read registers, no need to initialize
|
||||||
|
|
||||||
|
;regs $4300-$437F
|
||||||
|
;no need to intialize because DMA was disabled above
|
||||||
|
;also, we're not sure what all of the registers do, so it is better to leave them at
|
||||||
|
;their reset state value
|
||||||
|
|
||||||
|
JSR ClearVRAM ;Reset VRAM
|
||||||
|
JSR ClearPalette ;Reset colors
|
||||||
|
|
||||||
|
;**** clear Sprite tables ********
|
||||||
|
|
||||||
|
STZ $2102 ;sprites initialized to be off the screen, palette 0, character 0
|
||||||
|
STZ $2103
|
||||||
|
LDX #$0080
|
||||||
|
LDA #$F0
|
||||||
|
_Loop08:
|
||||||
|
STA $2104 ;set X = 240
|
||||||
|
STA $2104 ;set Y = 240
|
||||||
|
STZ $2104 ;set character = $00
|
||||||
|
STZ $2104 ;set priority=0, no flips
|
||||||
|
DEX
|
||||||
|
BNE _Loop08
|
||||||
|
|
||||||
|
LDX #$0020
|
||||||
|
_Loop09:
|
||||||
|
STZ $2104 ;set size bit=0, x MSB = 0
|
||||||
|
DEX
|
||||||
|
BNE _Loop09
|
||||||
|
|
||||||
|
;**** clear WRAM ********
|
||||||
|
|
||||||
|
STZ $2181 ;set WRAM address to $000000
|
||||||
|
STZ $2182
|
||||||
|
STZ $2183
|
||||||
|
|
||||||
|
LDX #$8008
|
||||||
|
STX $4300 ;Set DMA mode to fixed source, BYTE to $2180
|
||||||
|
LDX #wram_fill_byte
|
||||||
|
STX $4302 ;Set source offset
|
||||||
|
LDA #:wram_fill_byte
|
||||||
|
STA $4304 ;Set source bank
|
||||||
|
LDX #$0000
|
||||||
|
STX $4305 ;Set transfer size to 64k bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
LDA #$01 ;now set the next 64k bytes
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
PHK ;make sure Data Bank = Program Bank
|
||||||
|
PLB
|
||||||
|
|
||||||
|
CLI ;enable interrupts again
|
||||||
|
|
||||||
|
LDX $4372 ;get our return address...
|
||||||
|
STX $1FFD
|
||||||
|
LDA $4374
|
||||||
|
STA $1FFF
|
||||||
|
RTL
|
||||||
|
|
||||||
|
wram_fill_byte:
|
||||||
|
.db $00
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ClearVRAM -- Sets every byte of VRAM to zero
|
||||||
|
; In: None
|
||||||
|
; Out: None
|
||||||
|
; Modifies: flags
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
ClearVRAM:
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
php
|
||||||
|
|
||||||
|
REP #$30 ; mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
LDA #$80
|
||||||
|
STA $2115 ;Set VRAM port to word access
|
||||||
|
LDX #$1809
|
||||||
|
STX $4300 ;Set DMA mode to fixed source, WORD to $2118/9
|
||||||
|
LDX #$0000
|
||||||
|
STX $2116 ;Set VRAM port address to $0000
|
||||||
|
STX $0000 ;Set $00:0000 to $0000 (assumes scratchpad ram)
|
||||||
|
STX $4302 ;Set source address to $xx:0000
|
||||||
|
LDA #$00
|
||||||
|
STA $4304 ;Set source bank to $00
|
||||||
|
LDX #$FFFF
|
||||||
|
STX $4305 ;Set transfer size to 64k-1 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ;Initiate transfer
|
||||||
|
|
||||||
|
STZ $2119 ;clear the last byte of the VRAM
|
||||||
|
|
||||||
|
plp
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ClearPalette -- Reset all palette colors to zero
|
||||||
|
; In: None
|
||||||
|
; Out: None
|
||||||
|
; Modifies: flags
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
ClearPalette:
|
||||||
|
PHX
|
||||||
|
PHP
|
||||||
|
REP #$30 ; mem/A = 8 bit, X/Y = 16 bit
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
STZ $2121
|
||||||
|
LDX #$0100
|
||||||
|
ClearPaletteLoop:
|
||||||
|
STZ $2122
|
||||||
|
STZ $2122
|
||||||
|
DEX
|
||||||
|
BNE ClearPaletteLoop
|
||||||
|
|
||||||
|
PLP
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.ENDS
|
||||||
969
snes/banktest/optixx.inc
Normal file
969
snes/banktest/optixx.inc
Normal file
@@ -0,0 +1,969 @@
|
|||||||
|
; Created with eKid's pcx2snes converter ;
|
||||||
|
|
||||||
|
OptixxData:
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $F8, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $F8, $00, $E0, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FE, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FA, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $2F, $00, $01, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $3F, $00, $07, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FC, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FE, $00, $F8, $00, $E0, $00, $80, $00, $00, $00, $00, $00
|
||||||
|
.db $E0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $07, $00, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $7F, $00, $3F, $00, $0F, $00, $07, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FC, $00, $F8, $00, $F0, $00
|
||||||
|
.db $F8, $00, $E0, $00, $C0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $3F, $00, $1F, $00, $0F, $00, $07, $00, $01, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $7F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00, $FE, $00, $FC, $00, $F8, $00
|
||||||
|
.db $E0, $00, $C0, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $1F, $00, $0F, $00, $07, $00, $03, $00, $03, $00, $01, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00
|
||||||
|
.db $F0, $00, $E0, $00, $C0, $00, $C0, $00, $80, $00, $80, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $7F, $00, $3F, $00, $3F, $00, $1F, $00, $0F, $00, $07, $00, $07, $00, $03, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FC, $00, $FC, $00, $F8, $00, $F0, $00, $F0, $00, $F0, $00, $E0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $01, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $7F, $00, $7F, $00, $3F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $C0, $00, $C0, $00, $C0, $00, $80, $00, $80, $00, $80, $00, $80, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $3F, $00, $1F, $00, $1F, $00, $1F, $00, $0F, $00, $0F, $00, $0F, $00, $0F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $07, $00, $07, $00, $07, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FC, $00, $FC, $00, $FE, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $01, $00, $01, $00, $03, $00, $01, $00, $01, $00, $01, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FC, $00, $FE, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $03, $00, $01, $00, $01, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FE, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $03, $00, $07, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $80, $00, $80, $00, $80, $00, $80, $00, $C0, $00, $C0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $07, $00, $07, $00, $07, $00, $0F, $00, $0F, $00, $0F, $00, $1F, $00, $1F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $E0, $00, $E0, $00, $E0, $00, $F0, $00, $F8, $00, $F8, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00
|
||||||
|
.db $3F, $00, $3F, $00, $3F, $00, $7F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FC, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $C0, $00, $E0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $01, $00, $03, $00, $03, $00, $07, $00, $0F, $00, $0F, $00, $1F, $00, $3F, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $F0, $00, $F8, $00, $FC, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $01, $00, $03, $00, $03, $00, $07, $00, $0F, $00
|
||||||
|
.db $3F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $C0, $00, $E0, $00, $F0, $00, $F8, $00, $FE, $00, $FE, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $C0, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $07, $00, $0F, $00, $1F, $00
|
||||||
|
.db $1F, $00, $3F, $00, $7F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $E0, $00, $F8, $00, $FC, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $E0, $00, $F8, $00, $FE, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $03, $00
|
||||||
|
.db $00, $00, $00, $00, $01, $00, $07, $00, $0F, $00, $3F, $00, $FF, $00, $FF, $00
|
||||||
|
.db $3F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $80, $00, $E0, $00, $F8, $00, $FE, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $E0, $00, $FC, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $FC, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $1F, $00, $FF, $00
|
||||||
|
.db $00, $00, $00, $00, $00, $00, $07, $00, $3F, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $07, $00, $3F, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FD, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $00, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $05, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
.db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00
|
||||||
|
|
||||||
|
OptixxPalette:
|
||||||
|
.db $00, $00, $10, $42, $00, $00, $00, $00
|
||||||
|
|
||||||
|
; 960 tiles (0 spaces)
|
||||||
|
; 15360 bytes
|
||||||
BIN
snes/banktest/optixx.pcx
Normal file
BIN
snes/banktest/optixx.pcx
Normal file
Binary file not shown.
BIN
snes/banktest/tools/COMDLG32.DLL
Normal file
BIN
snes/banktest/tools/COMDLG32.DLL
Normal file
Binary file not shown.
BIN
snes/banktest/tools/COMDLG32.OCX
Normal file
BIN
snes/banktest/tools/COMDLG32.OCX
Normal file
Binary file not shown.
BIN
snes/banktest/tools/MSVBVM60.DLL
Normal file
BIN
snes/banktest/tools/MSVBVM60.DLL
Normal file
Binary file not shown.
BIN
snes/banktest/tools/pcx2snes.exe
Normal file
BIN
snes/banktest/tools/pcx2snes.exe
Normal file
Binary file not shown.
39
snes/banktest/tools/pcx2snes.txt
Normal file
39
snes/banktest/tools/pcx2snes.txt
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
+----------------+
|
||||||
|
| pcx2snes (win) |
|
||||||
|
+----------------+
|
||||||
|
v1.1
|
||||||
|
by eKid
|
||||||
|
|
||||||
|
to make the snes life a little easier
|
||||||
|
|
||||||
|
how it's used...
|
||||||
|
|
||||||
|
1. Run the program.
|
||||||
|
2. Click Import .PCX to load a pcx file.
|
||||||
|
3. Image should display in top-left corner.
|
||||||
|
4. (Optional) Swap around the colors in the palette by left clicking to select, and right clicking to swap.
|
||||||
|
5. Select Bit-Depth for export and set tile size (bottom left corner).
|
||||||
|
6. Click Export .inc and choose a filename to export to.
|
||||||
|
7. Your Done!
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Command Line mode
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
pcx2snes in.pcx [-oOut.inc] [-bBits] [-nName] [-d (16x16)] [-sColor]
|
||||||
|
|
||||||
|
-parameters in brackets are all optional
|
||||||
|
-there must be no space between the prefix and value
|
||||||
|
|
||||||
|
Parameter Description:
|
||||||
|
|
||||||
|
-o Specifies file to output to, if not supplied it will use the input file with a ".inc" extension.
|
||||||
|
-b Specifies bit depth, can be 2/4/8 for 4/16/256 colors, if not supplied it will use the bit depth of the PCX.
|
||||||
|
-n Specifies name to use as a prefix of the exported array, default is "Untitled".
|
||||||
|
-s Specifies an index to swap color 0 with, this is optional (mainly for transparency).
|
||||||
|
-d Tells pcx2snes to arrange for 16x16 mode.
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Questions/Comments/BUGS can be sent to mukunda51@hotmail.com, or you can find me on EFNet IRC - #snesdev as eKid!
|
||||||
94
snes/banktest/vram2.asm
Normal file
94
snes/banktest/vram2.asm
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
;============================================================================
|
||||||
|
; Includes
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;== Include MemoryMap, Vector Table, and HeaderInfo ==
|
||||||
|
.INCLUDE "header.inc"
|
||||||
|
|
||||||
|
;== Include SNES Initialization routines ==
|
||||||
|
.INCLUDE "init.inc"
|
||||||
|
.INCLUDE "LoadGraphics.asm"
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Main Code
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.ORG 0
|
||||||
|
.SECTION "MainCode"
|
||||||
|
|
||||||
|
Start:
|
||||||
|
InitSNES ; Clear registers, etc.
|
||||||
|
|
||||||
|
; Load Palette for our tiles
|
||||||
|
LoadPalette OptixxPalette, 0, 16
|
||||||
|
|
||||||
|
; Load Tile data to VRAM
|
||||||
|
;LoadBlockToVRAM TilesData, $0000, $0020 ; 2 tiles, 2bpp, = 32 bytes
|
||||||
|
;LoadBlockToVRAM OptixxData, $0000, 0xa00 ; 160 tiles, 2bpp, = 2560 bytes
|
||||||
|
;LoadBlockToVRAM OptixxData, $0000, 0x1e00 ; 480 tiles, 2bpp, = 7680 bytes
|
||||||
|
LoadBlockToVRAM OptixxData, $0000, 0x3c00 ; 960 tiles, 2bpp, = 15360 bytes
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
sta $2115
|
||||||
|
;ldx #$0800 ; 5AF
|
||||||
|
ldx #$4000 ; 5AF
|
||||||
|
stx $2116
|
||||||
|
|
||||||
|
ldx #$0
|
||||||
|
Start_do:
|
||||||
|
stx $2118
|
||||||
|
inx
|
||||||
|
cpx #960
|
||||||
|
bne Start_do
|
||||||
|
|
||||||
|
; Setup Video modes and other stuff, then turn on the screen
|
||||||
|
jsr SetupVideo
|
||||||
|
|
||||||
|
Infinity:
|
||||||
|
jmp Infinity ; bwa hahahahaha
|
||||||
|
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; SetupVideo -- Sets up the video mode and tile-related registers
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; In: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; Out: None
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
SetupVideo:
|
||||||
|
php
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta $2105 ; Set Video mode 0, 8x8 tiles, 4 color BG1/BG2/BG3/BG4
|
||||||
|
|
||||||
|
;lda #$08 ; Set BG1's Tile Map offset to $0800 (Word address)
|
||||||
|
lda #$40 ; Set BG1's Tile Map offset to $2000 (Word address)
|
||||||
|
sta $2107 ; And the Tile Map size to 32x32
|
||||||
|
|
||||||
|
stz $210B ; Set BG1's Character VRAM offset to $0000 (word address)
|
||||||
|
|
||||||
|
lda #$01 ; Enable BG1
|
||||||
|
sta $212C
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
sta $210E
|
||||||
|
sta $210E
|
||||||
|
|
||||||
|
lda #$0F
|
||||||
|
sta $2100 ; Turn on screen, full Brightness
|
||||||
|
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
;============================================================================
|
||||||
|
.ENDS
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; Character Data
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
.BANK 0 SLOT 0
|
||||||
|
.SECTION "CharacterData02"
|
||||||
|
.INCLUDE "optixx.inc"
|
||||||
|
.ENDS
|
||||||
93
snes/crc/Makefile
Normal file
93
snes/crc/Makefile
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# SDK Config
|
||||||
|
|
||||||
|
|
||||||
|
PLATFORM=mac
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),linux)
|
||||||
|
|
||||||
|
# Linux Wine
|
||||||
|
SDK=/home/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
EMU_DEBUG=/home/david/Devel/arch/snes/tools/zsnes_linux_debug151/src/zsnesd -d
|
||||||
|
else
|
||||||
|
# Mac Wine
|
||||||
|
SDK=/Users/david/.wine/drive_c/65xx_FreeSDK
|
||||||
|
WINE=wine
|
||||||
|
EMU=zsnes
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC=$(WINE) $(SDK)/bin/WDC816CC.exe
|
||||||
|
AS=$(WINE) $(SDK)/bin/WDC816AS.exe
|
||||||
|
LD=$(WINE) $(SDK)/bin/WDCLN.exe
|
||||||
|
PADBIN=$(WINE) tools/padbin.exe
|
||||||
|
PCX2SNES=$(WINE) tools/Pcx2Snes.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Project
|
||||||
|
|
||||||
|
INC=$(SDK)/include
|
||||||
|
LIBS=$(SDK)/lib/cc
|
||||||
|
#OBJS=StartupSnes.obj main.obj pad.obj event.obj myEvents.obj PPU.obj debug.obj ressource.obj
|
||||||
|
OBJS=StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj crc.obj
|
||||||
|
APP=crc.smc
|
||||||
|
GFX=kungfu debugfont
|
||||||
|
|
||||||
|
all: $(APP)
|
||||||
|
|
||||||
|
run:
|
||||||
|
$(EMU) $(APP)
|
||||||
|
|
||||||
|
debugger:
|
||||||
|
$(EMU_DEBUG) $(APP)
|
||||||
|
|
||||||
|
upload:
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
cp -rv $(APP) /Volumes/SNES
|
||||||
|
sync
|
||||||
|
diskutil unmount /Volumes/SNES
|
||||||
|
|
||||||
|
rand:
|
||||||
|
dd if=/dev/urandom of=tmp.rand bs=32k count=6
|
||||||
|
dd if=$(APP) of=tmp.app bs=32k count=2
|
||||||
|
cat tmp.app tmp.rand > $(APP)
|
||||||
|
rm tmp.rand tmp.app
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
|
||||||
|
rand16:
|
||||||
|
dd if=/dev/urandom of=tmp.rand bs=32k count=14
|
||||||
|
dd if=$(APP) of=tmp.app bs=32k count=2
|
||||||
|
cat tmp.app tmp.rand > $(APP)
|
||||||
|
rm tmp.rand tmp.app
|
||||||
|
ucon64 -chk $(APP)
|
||||||
|
|
||||||
|
crc:
|
||||||
|
python ../../scripts/crc_xmodem.py $(APP)
|
||||||
|
|
||||||
|
kungfu:
|
||||||
|
$(PCX2SNES) ressource/kungfu -n -c16 -screen
|
||||||
|
|
||||||
|
debugfont:
|
||||||
|
$(PCX2SNES) ressource/debugFont -n -c16 -s8 -o1
|
||||||
|
|
||||||
|
StartupSnes.obj: StartupSnes.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
ressource.obj: ressource.asm
|
||||||
|
$(AS) -V $?
|
||||||
|
|
||||||
|
%.obj: %.c
|
||||||
|
$(CC) -wl -wp -sop -MC -I $(INC) $?
|
||||||
|
|
||||||
|
$(APP): $(OBJS)
|
||||||
|
$(LD) -HB -M21 -V -T -Pff \
|
||||||
|
-C008000,0000 -U0000,0000 \
|
||||||
|
-Avectors=FFE4,7FE4 \
|
||||||
|
-Aregistration_data=FFB0,7FB0 \
|
||||||
|
-Aressource=18000,8000 \
|
||||||
|
-N $(OBJS) -L$(LIBS) -O $@
|
||||||
|
$(PADBIN) 0x40000 $(APP)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -vf $(APP) *.obj
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user